diff --git a/CHANGELOG.md b/CHANGELOG.md index 97c9cdd1c..381ef30c8 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,81 @@ # Change Log +## Version 2.6.0 - "Fal Moran" - 8th July 2016 + +### New Features + +* The Loader has a new property `headers`. This is an object checked by XHR Requests, used to set the Request Header of certain file types. JSON and XML are pre-configured, but you can add to, or modify this property as required (thanks @stoneman1 #2585 #2485) +* Phaser now has support for Typings, the TypeScript Definition Manager. See the `typescript/readme.md` file for installation instructions (thanks @monagames #2576) +* Phaser.Utils.reverseString will take the given string, reverse it, and then return it. +* Phaser.ArrayUtils.rotateRight is the opposite of ArrayUtils.rotate. It takes an array, removes the element from the end of the array, and inserts it at the start, shifting everything else 1 space in the process. +* Phaser.ArrayUtils.rotateLeft is the new name for Phaser.ArrayUtils.rotate. The old method is now deprecated (but still available in this release) +* Phaser.Color.toABGR converts RGBA components to a 32 bit integer in AABBGGRR format. +* ArcadePhysics.Body.setCircle is a new method that allows you to define an Arcade Physics Body as being a circle instead of a rectangle. You can control the radius of the body and the offset from the parent sprite. +* ArcadePhysics.World.separateCircle is a new method that handles all circular body collisions internally within Arcade Physics (thanks @VitaZheltyakov) +* All of the Arcade Physics internal methods, such as `collideGroupVsSelf`, `collideSpriteVsSprite` and so on, have been updated to work with circular body shapes (thanks @VitaZheltyakov) +* ArcadePhysics.Body.onWorldBounds is a new Signal that is dispatched whenever the Body collides with the world bounds, something that was previously difficult to detect. Due to the potentially high volume of signals this could create it is disabled by default. To use this feature set this property to a Phaser.Signal: `sprite.body.onWorldBounds = new Phaser.Signal()` and it will be called when a collision happens, passing five arguments: the sprite on which it occurred, and 4 booleans mapping to up, down, left and right, indicating on which side of the world the collision occurred. +* ArcadePhysics.Body.onCollide is a new Signal that is dispatched whenever the Body collides with another Body. Due to the potentially high volume of signals this could create it is disabled by default. To use this feature set this property to a Phaser.Signal: `sprite.body.onCollide = new Phaser.Signal()` and it will be called when a collision happens, passing two arguments: the sprites which collided. +* ArcadePhysics.Body.onOverlap is a new Signal that is dispatched whenever the Body overlaps with another Body. Due to the potentially high volume of signals this could create it is disabled by default. To use this feature set this property to a Phaser.Signal: `sprite.body.onOverlap = new Phaser.Signal()` and it will be called when an overlap happens, passing two arguments: the sprites which collided. +* Groups now have the following properties, which are getters and setters: `centerX`, `centerY`, `left`, `right`, `top` and `bottom`. These calculate the bounds of the Group, based on all visible children, and then allow you to apply positioning based on that. This means you can, for example, now get the horizontal center of a Group by called `Group.centerX`. These properties are also setters, so you can position the Groups, and it will take scale and rotation into consideration. +* Groups have a new method `alignIn`. It allows you to align the Group within another Game Object, or a Rectangle. You can specify one of 9 positions which are the new position constants such as: `Phaser.TOP_LEFT` or `Phaser.CENTER` (see docs for the complete list). The Groups are positioned based on their child bounds, which takes rotation and scaling into consideration. You can easily place Groups into the corners of the screen, or game world, or align them within other Sprites, using this method. +* Groups have a new method `alignTo`. It allows you to align a Group to the side of another Game Object, or a Rectangle. You can specify one of 11 positions which are the new position constants such as: `Phaser.TOP_LEFT` or `Phaser.LEFT_BOTTOM` (see docs for the complete list). The Groups are positioned based on their child bounds, which takes rotation and scaling into consideration. You can easily align Groups next to other Sprites using this method. + +### Updates + +* TypeScript definitions fixes and updates (thanks @monagames) +* Docs typo fixes (thanks @drhayes) +* The TilemapParser will now add more data when importing Image object types from Tiled. The extra data available is: image width, image height, and flags to see if the image is flipped either horizontally, vertically or diagonally (thanks @gotenxds #2564 #2554) +* TilemapLayer.renderRegion has had an assignment to the obsolete `tileColor` property removed (thanks @cryptographer #2583) +* Group.getFurthestFrom and Group.getClosestTo has a new optional argument: `callback`. This allows you to apply your own additional filtering to the distance checks, ultimately influencing the selected child (thanks @LoneStranger #2577) +* Text.setText has a new optional argument `immediate` which will re-create the texture immediately upon call, rather than wait for the next render pass to do so (thanks @Scraft #2594) +* Phaser.Utils.pad now calls `toString` on the input given, which means you can pass in common data types, such as numbers, and have them padded and returned as strings. +* The canvas created by Phaser.Debug for use when displaying debug data is no longer stored in the CanvasPool, and is instead a stand-alone canvas, free from ever being re-used by another game object. +* BitmapData has a new, optional, fifth argument: `skipPool`. By default BitmapData objects will ask for the first free canvas found in the CanvasPool, but this behavior can now be customized on a per object basis. +* Phaser.ArrayUtils.rotate is now deprecated. Please use Phaser.ArrayUtils.rotateLeft instead. +* Phaser.Text.fontPropertiesCanvas used to be taken from the CanvasPool, but as it's constantly needed it is now generated directly from the document. +* The default image texture, for when none is supplied, is now available under `Phaser.Cache.DEFAULT`. +* The missing image texture, for when an image has failed to load, is now available under `Phaser.Cache.MISSING`. +* Phaser.Cache.addImage will now check the key given, and if `__default` or `__missing` it will update the new consts `Phaser.Cache.DEFAULT` and `Phaser.Cache.MISSING` accordingly, allowing you to replace the default or missing image textures used by Phaser. +* Phaser.Cache.getPixiTexture has now been removed, as the Pixi Cache isn't used internally anywhere any longer. +* Phaser.Cache.getPixiBaseTexture has now been removed, as the Pixi Cache isn't used internally anywhere any longer. +* The second argument to Phaser.Cache.removeImage has been renamed from `removeFromPixi` to `destroyBaseTexture`, as that is fundamentally what the argument always did. +* AnimationManager.refreshFrame has been removed as it never actually did anything internally. +* Sound.stop will check to see if `gainNode` exists before trying to disconnect from it (#2597) + +### Bug Fixes + +* Fixed issue in Group.align where the cell wouldn't increase if `rows` was great than -1 +* Sound.volume was accidentally repeated twice in the source (thanks @LoneStranger #2569) +* Animation.setFrame wouldn't work correctly if the `useLocalFrameIndex` argument was true, and the frame ID was a number (thanks @uboot #2571) +* Polygon.contains would only work with non-flattened Polygon objects. It now works with both flat and non-flat Polygons. +* Graphics objects enabled for input would fail to do anything if a Phaser Polygon was given to the Graphics object (which it was in nearly all cases), as it wouldn't detect input correctly with flattened polygons (thanks @symbiane #2591) +* P2.World.clear will now clear out the World.walls property, resetting all of the wall bounds to `null`. This allows the walls to be re-created accurately when the P2 World is reset, which happens on a State change or restart (thanks @ewpolly1 @codermua #2574) + +### Pixi Updates + +Please note that Phaser uses a custom build of Pixi and always has done. The following changes have been made to our custom build, not to Pixi in general. + +* Removed `_renderWebGL`, `_renderCanvas`, `getLocalBounds` and `getBounds` from PIXI.DisplayObject, as they were only there to pass ancient jshint rules. +* All Pixi.Graphics methods that change the Graphics, i.e. `drawShape`, `lineTo`, `arc`, etc will now all automatically call `Graphics.updateLocalBounds`. This is so that the bounds of the Graphics object are kept updated, allowing you to scale and rotate the Graphics object and still obtain correct dimensions from it (thanks @kelu-smiley #2573) +* PIXI.CanvasPool no longer _just_ checks for `null` parent comparisons. It will check for all falsey parents, helping free-up canvases when the parent objects have been removed elsewhere. +* PIXI.CanvasPool.remove and `removeByCanvas` both now set the removed canvas width and height to 1. +* PIXI.Texture.fromImage, PIXI.BaseTexture.fromImage and PIXI.Sprite.fromImage have all been removed. They should never have actually been used, as they bypass the Phaser Loader, and don't factor in CORs or any other advanced loader settings. +* The PIXI.BaseTexture.imageUrl property has been removed, as it was never actually populated. +* The PIXI.BaseTexture._UID property has been removed, as it was never actually used internally. +* All references to PIXI.BaseTextureCache have been removed (primarily from BaseTexture.destroy and Texture.destroy), as the BaseTextureCache was never used internally by Phaser, or by our custom version of Pixi. +* PIXI.TextureCache has been removed. It was only ever used by the __default and __missing images that Phaser generates on start-up. It wasn't used internally by Phaser anywhere else, and the only references Pixi has to it have all been removed. If you need it in your own game, please refactor it to avoid it, or re-create the object on the PIXI global object. +* Canvases created by `BaseTexture.fromCanvas` no longer have the `_pixiId` property attached to them, as this was never used internally by Phaser or Pixi. +* PIXI.BaseTexture.updateSourceImage is now deprecated. Please use `Sprite.loadTexture` instead. +* The property PIXI.BaseTextureCacheIdGenerator has been removed, as it is no longer used internally by Phaser or Pixi. +* PIXI.Texture.addTextureToCache has been removed. The PIXI Texture Cache was never actually used by Phaser, and was leading to complications internally. +* PIXI.Texture.removeTextureFromCache has been removed. The PIXI Texture Cache was never actually used by Phaser, and was leading to complications internally. +* PIXI.Texture.fromFrame and PIXI.Sprite.fromFrame have been removed. They relied on the PIXI Texture Cache, which was never actually used by Phaser, and was never used internally by Pixi either. +* The property PIXI.TextureCacheIdGenerator has been removed, as it was not used internally. +* The property PIXI.FrameCache has been removed, as it was not used internally. +* PIXI.DisplayObjectContainer calls `updateTransform` at the start of `getBounds` to help avoid the bounds being out of date. + +Thanks to Corin Wilkins at Aardman Digital, for lots of the investigation work, leading to the Pixi changes listed above. + ## Version 2.5.0 - "Five Kings" - 17th June 2016 **Note:** This version was also released as 2.4.9 'Four Kings' on 16th June 2016. The 2.5.0 release marks us moving to a more strict adherence of the Semver rules, and also contains some TypeScript definitions fixes. diff --git a/README.md b/README.md index ad8db32c7..aeeb6db92 100644 --- a/README.md +++ b/README.md @@ -38,17 +38,17 @@ Grab the source and join in the fun!
-> 17th June 2016 +> 8th July 2016 -Phaser 2.5.0 is the latest release of Phaser, and represents another significant milestone in the evolution of the framework in 2016. It was previously released as 2.4.9. However we appreciate that we haven't been following the [semver](http://semver.org/) code strictly enough, and that this version (and most before it!) actually contains some significant MINOR level functionality, not just PATCH level. So we've bumped the version number accordingly. +Welcome to Phaser 2.6.0. Our seventh release this year, and another leap forwards since 2.5.0 less than a month ago. This version includes the work undertaken with adding circular body support into Arcade Physics, allowing you to now define physics bodies as being circles instead of rectangles, something that was previously only available in P2 Physics. -As well as fixing a number of issues, there are some genuinely useful new features added in this release. Not least of which includes the new Weapons Plugin, making creating bullet pools a couple lines of code. Don't worry, it's also easy to exclude from custom builds too. +Keeping with Arcade Physics for a moment there are now new events you can listen for, including `Body.onWorldBounds`, `Body.onCollide` and `Body.onOverlap`. Phaser.Groups have also been given a shot in the arm. You can now position them, and all of their children, using the new bounds commands such as `left`, `centerX` and `bottom`. They've also gained the `alignTo` and `alignIn` methods from the 2.5 release. -There are also some subtle but significant updates to Groups. The `createMultiple` method has had a nice overhaul, now able to take Arrays of image keys and frames. `Group.align` allows you to align the children of a Group in a grid formation, with the dimensions and spacing of the grid under your control. +In this release we've undertaken a large amount of work refactoring Pixi. You will find lots of Pixi related methods, that were redundant, removed from the build (such as `fromImage`). All references to the Pixi Texture and Base Texture caches have also been removed, helping close-off some straggling issues, and free-up lingering resources. Please see the Pixi section of the Change Log for complete details. This will not effect you if you're just using Phaser, but if you had any Pixi specific mods or plugins, they may need checking over. -Continuing from that theme: all Game Objects (such as Sprites and Text) now have a two new methods. `alignIn` allows you to easily align Game Objects within another Game Object or Rectangle. This is a great way to easily align a Sprite into the corner of the world, or another Sprite. To go with this is `alignTo`. It works in a similar way, but lets you align Game Objects next to each other. +I've also been working hard on the documentation. Tidying-up functions that didn't have parameter descriptions, adding lots more details to areas such as the Game Object events, and starting the huge task of rewriting all of the Pixi documentation into a more friendly and comprehensive format. This is an on-going task, and will be merged into releases from here-on. -It's small changes like this that reduce the overall code of your game, and let you focus on just building it quicker. Of course there are _lots_ of other enhancements in this release, so be sure to check the [Change Log](#change-log) to see what else is in store. +Check the [Change Log](#change-log) to see the complete list of what's new in this release. As always, keep you eyes on the Phaser web site, and subscribe to our weekly [newsletter](#newsletter). You can also follow me on [Twitter](https://twitter.com/photonstorm) or chat to me in the Phaser [Slack](http://phaser.io/community/slack) channel. @@ -76,18 +76,6 @@ If you have found Phaser useful in your development life. Or have made income as It all helps cover our running costs, and genuinely contributes towards future development. -### Phaser Sponsors - -Phaser is sponsored by the following great companies: - -![qici](http://www.phaser.io/images/sponsors/qici-100.png) - -QICI Engine: [A powerful one-stop integrated Phaser game editor](http://www.qiciengine.com/) - -![zenva](http://www.phaser.io/images/sponsors/zenva-100.png) - -Zenva Academy: [Online courses on Phaser, HTML5 and native app development](https://academy.zenva.com/?zva_src=phaserpatreon) - If you would like to sponsor Phaser then please [get in touch](mailto:support@phaser.io). We have sponsorship options available on our GitHub repo, web site, and newsletter. All of which receive tens of thousands of eyeballs per day. ![Weekly Newsletter](http://phaser.io/images/github/div-newsletter.png "Weekly Newsletter") @@ -125,15 +113,15 @@ Using Browserify? Please [read this](#browserify). [jsDelivr](http://www.jsdelivr.com/#!phaser) is a "super-fast CDN for developers". Include the following in your html: -`` +`` or the minified version: -`` +`` [cdnjs.com](https://cdnjs.com/libraries/phaser) also offers a free CDN service. They have all versions of Phaser and even the custom builds: -`` +`` ### Phaser Sandbox @@ -323,88 +311,81 @@ You can read all about the philosophy behind Lazer [here](http://phaser.io/news/ ![Change Log](http://phaser.io/images/github/div-change-log.png "Change Log") -## Version 2.5.0 - "Five Kings" - 17th June 2016 - -**Note:** This version was also released as 2.4.9 'Four Kings' on 16th June 2016. The 2.5.0 release marks us moving to a more strict adherence of the Semver rules, and also contains some TypeScript definitions fixes. +## Version 2.6.0 - "Fal Moran" - 8th July 2016 ### New Features -* Phaser.Line.intersectsRectangle checks for intersection between a Line and a Rectangle, or any Rectangle-like object such as a Sprite or Body. -* Group.getClosestTo will return the child closest to the given point (thanks @Nuuf #2504) -* Group.getFurthestFrom will return the child farthest away from the given point (thanks @Nuuf #2504) -* Animation.reverse will reverse the currently playing animation direction (thanks @gotenxds #2505) -* Animation.reverseOnce will reverse the animation direction for the current, or next animation only (thanks @gotenxds #2505) -* The way the display list updates and Camera movements are handled has been completely revamped, which should result is significantly smoother motion when the Camera is following tweened or physics controlled sprites. The `Stage.postUpdate` function is now vastly reduced in complexity. It takes control over updating the display list (calling `updateTransform` on itself), rather than letting the Canvas or WebGL renderers do this. Because of this change, the `Camera.updateTarget` function uses the Sprites `worldPosition` property instead, which is now frame accurate (thanks @whig @Upperfoot @Whoisnt @hexus #2482) -* Game Objects including Sprite, Image, Particle, TilemapLayer, Text, BitmapText and TileSprite have a new property called `data`. This is an empty Object that Phaser will never touch internally, but your own code, or Phaser Plugins, can store Game Object specific data within it. This allows you to associate data with a Game Object without having to pollute or change its class shape. -* TilemapLayers will now collide properly when they have a position that isn't set to 0x0. For example if you're stitching together several maps, one after the other, and manually adjust their `scrollX/Y` properties (thanks @Upperfoot #2522) -* There are a bunch of new Phaser consts available to help with setting the angle of a Game Object. They are `Phaser.ANGLE_UP`, `ANGLE_DOWN`, `ANGLE_LEFT`, `ANGLE_RIGHT`, `ANGLE_NORTH_EAST`, `ANGLE_NORTH_WEST`, `ANGLE_SOUTH_EAST` and `ANGLE_SOUTH_WEST`. -* Math.between will return a value between the given `min` and `max` values. -* InputHandler.dragDistanceThreshold gives you more fine control over when a Sprite Drag event will start. It allows you to specify a distance, in pixels, that the pointer must have moved before the drag will begin. -* InputHandler.dragTimeThreshold gives you more fine control over when a Sprite Drag event will start. It allows you to specify a time, in ms that the pointer must have been held down for, before the drag will begin. -* InputHandler.downPoint is a new Point object that contains the coordinates of the Pointer when it was first pressed down on the Sprite. -* There are two new Phaser consts available, for help with orientation of games or Game Objects. They are `Phaser.HORIZONTAL`, `Phaser.VERTICAL`, `Phaser.LANDSCAPE` and `Phaser.PORTRAIT`. -* InputHandler.dragStopBlocksInputUp is a boolean that allows you to control what happens with the input events. If `false` (the default) then both the `onInputUp` and `onDragStop` events will get dispatched when a Sprite stops being dragged. If `true` then only the `onDragStop` event is dispatched, and the `onInputUp` is skipped. -* Group.inputEnableChildren is a new property. If set to `true` will automatically call `inputEnabled = true` on any children _added_ to, or _created_ by, the Group. -* PIXI.DisplayObjectContainer.ignoreChildInput is a new property. If `true` then the children will _not_ be considered as valid for Input events. Because this has been applied to `DisplayObjectContainer` it means it's available in Group, Sprite and any other display level object. Using this boolean you can disable input events for all children in an entire Group, without having to iterate anything or deep-set flags. -* InputHandler._pointerOverHandler and _pointerOutHandler have new arguments `silent` - if `true` then they will not dispatch any Signals from the parent Sprite. -* Pointer.interactiveCandidates is a new Array that is erased and re-populated every time this Pointer is updated. It contains references to all of the Game Objects that were considered as being valid for processing by this Pointer, during the most recent update. To be valid they must have suitable a `priorityID`, be Input enabled, be visible and actually have the Pointer over them. You can check the contents of this array in events such as `onInputDown`, but beware: it is reset every update. -* Pointer.swapTarget allows you to change the `Pointer.targetObject` object to be the one provided. This allows you to have fine-grained control over which object the Pointer is targeting. -* Input.setInteractiveCandidateHandler allows you to add a callback that is fired every time `Pointer.processInteractiveObjects` is called. The purpose of `processInteractiveObjects` is to work out which Game Object the Pointer is going to interact with. It works by polling all of the valid game objects, and then slowly discounting those that don't meet the criteria (i.e. they aren't under the Pointer, are disabled, invisible, etc). Eventually a short-list of 'candidates' is created. These are all of the Game Objects which are valid for input and overlap with the Pointer. If you need fine-grained control over which of the items is selected then you can use this callback to do so. The callback will be sent 3 parameters: 1) A reference to the Phaser.Pointer object that is processing the Items. 2) An array containing all potential interactive candidates. This is an array of `InputHandler` objects, not Sprites. 3) The current 'favorite' candidate, based on its priorityID and position in the display list. Your callback MUST return one of the candidates sent to it. -* Group.onChildInputDown is a new Signal that you can listen to. It will be dispatched whenever any immediate child of the Group emits an `onInputDown` signal itself. This allows you to listen for a Signal from the Group, rather than every Sprite within it. -* Group.onChildInputUp is a new Signal that you can listen to. It will be dispatched whenever any immediate child of the Group emits an `onInputUp` signal itself. This allows you to listen for a Signal from the Group, rather than every Sprite within it. -* Group.onChildInputOver is a new Signal that you can listen to. It will be dispatched whenever any immediate child of the Group emits an `onInputOver` signal itself. This allows you to listen for a Signal from the Group, rather than every Sprite within it. -* Group.onChildInputOut is a new Signal that you can listen to. It will be dispatched whenever any immediate child of the Group emits an `onInputOut` signal itself. This allows you to listen for a Signal from the Group, rather than every Sprite within it. -* Phaser.Weapon is a brand new plugin that provides the ability to easily create a bullet pool and manager. Weapons fire Phaser.Bullet objects, which are essentially Sprites with a few extra properties. The Bullets are enabled for Arcade Physics. They do not currently work with P2 Physics. The Bullets are created inside of `Weapon.bullets`, which is a Phaser.Group instance. Anything you can usually do with a Group, such as move it around the display list, iterate it, etc can be done to the bullets Group too. Bullets can have textures and even animations. You can control the speed at which they are fired, the firing rate, the firing angle, and even set things like gravity for them. Please see the Documentation for more details, or view the [Weapon examples](https://github.com/photonstorm/phaser-examples/tree/master/examples/weapon) in the Examples repo. -* BitmapData.smoothProperty is a new property that holds the string based prefix needed to set image scaling on the BitmapData context. -* BitmapData.copyTransform allows you to draw a Game Object to the BitmapData, using its `worldTransform` property to control the location, scaling and rotation of the object. You can optionally provide -* BitmapData.drawGroup now uses the new `copyTransform` method, to provide for far more accurate results. Previously nested Game Objects wouldn't render correctly, nor would Sprites added via `addChild` to another Sprite. BitmapText objects also rendered without rotation taken into account, and the Sprites smoothing property was ignored. All of these things are now covered by the new drawGroup method, which also handles full deep iteration down the display list. -* Added the following new constants: `Phaser.TOP_LEFT`, `Phaser.TOP_CENTER`, `Phaser.TOP_RIGHT`, `Phaser.LEFT_TOP`, `Phaser.LEFT_CENTER`, `Phaser.LEFT_BOTTOM`, `Phaser.CENTER`, `Phaser.RIGHT_TOP`, `Phaser.RIGHT_CENTER`, `Phaser.RIGHT_BOTTOM`, `Phaser.BOTTOM_LEFT`, `Phaser.BOTTOM_CENTER` and `Phaser.BOTTOM_RIGHT`. -* Rectangle.getPoint is a new method that returns a point based on the given position constant, such as `Phaser.BOTTOM_LEFT`. It returns the same result as calling `Rectangle.bottomLeft` (etc) but unlike those getters you are able to provide your own Point object. -* The Game Object Bounds component has been updated to include two new properties: `centerX` and `centerY`. This means you can, for example, now get the horizontal center of a Sprite by called `Sprite.centerX`. These properties are also setters, so you can position the Game Objects, and it will take scale and anchor into consideration. -* All Game Objects with the Bounds component; which includes Sprites, Images, Text, BitmapText, TileSprites and anything that extend these, now have the new method `alignIn`. It allows you to align the Game Object within another Game Object, or a Rectangle. You can specify one of 9 positions which are the new position constants such as: `Phaser.TOP_LEFT` or `Phaser.CENTER` (see above for the complete list). The Game Objects are positioned based on their Bounds, which takes rotation, scaling and anchor into consideration. You can easily place Sprites into the corners of the screen, or game world, or align them within other Sprites, using this method. -* All Game Objects with the Bounds component; which includes Sprites, Images, Text, BitmapText, TileSprites and anything that extend these, now have the new method `alignTo`. It allows you to align a Game Object to the side of another Game Object, or a Rectangle. You can specify one of 11 positions which are the new position constants such as: `Phaser.TOP_LEFT` or `Phaser.LEFT_BOTTOM` (see above for the complete list). The Game Objects are positioned based on their Bounds, which takes rotation, scaling and anchor into consideration. You can easily align Sprites next to other Sprites using this method. -* Group.align is a new method that allows you to layout all the children of the Group in a grid formation. You can specify the dimensions of the grid, including the width, height and cell size. You can also control where children are positioned within each grid cell. The grid width and height values can also be set to -1, making them fluid, so the grid expands until all children are aligned. Finally an optional child index argument can be set. This is a great way to quickly and comprehensively align Group children, and has lots of use cases. -* The Arcade Physics Body has two new experimental methods: `moveTo` and `moveFrom`. These allow you to move a Physics Body for a given distance, or duration, after which it will stop and emit the `onMoveComplete` Signal. It is still capable of colliding and rebounding like usual. +* The Loader has a new property `headers`. This is an object checked by XHR Requests, used to set the Request Header of certain file types. JSON and XML are pre-configured, but you can add to, or modify this property as required (thanks @stoneman1 #2585 #2485) +* Phaser now has support for Typings, the TypeScript Definition Manager. See the `typescript/readme.md` file for installation instructions (thanks @monagames #2576) +* Phaser.Utils.reverseString will take the given string, reverse it, and then return it. +* Phaser.ArrayUtils.rotateRight is the opposite of ArrayUtils.rotate. It takes an array, removes the element from the end of the array, and inserts it at the start, shifting everything else 1 space in the process. +* Phaser.ArrayUtils.rotateLeft is the new name for Phaser.ArrayUtils.rotate. The old method is now deprecated (but still available in this release) +* Phaser.Color.toABGR converts RGBA components to a 32 bit integer in AABBGGRR format. +* ArcadePhysics.Body.setCircle is a new method that allows you to define an Arcade Physics Body as being a circle instead of a rectangle. You can control the radius of the body and the offset from the parent sprite. +* ArcadePhysics.World.separateCircle is a new method that handles all circular body collisions internally within Arcade Physics (thanks @VitaZheltyakov) +* All of the Arcade Physics internal methods, such as `collideGroupVsSelf`, `collideSpriteVsSprite` and so on, have been updated to work with circular body shapes (thanks @VitaZheltyakov) +* ArcadePhysics.Body.onWorldBounds is a new Signal that is dispatched whenever the Body collides with the world bounds, something that was previously difficult to detect. Due to the potentially high volume of signals this could create it is disabled by default. To use this feature set this property to a Phaser.Signal: `sprite.body.onWorldBounds = new Phaser.Signal()` and it will be called when a collision happens, passing five arguments: the sprite on which it occurred, and 4 booleans mapping to up, down, left and right, indicating on which side of the world the collision occurred. +* ArcadePhysics.Body.onCollide is a new Signal that is dispatched whenever the Body collides with another Body. Due to the potentially high volume of signals this could create it is disabled by default. To use this feature set this property to a Phaser.Signal: `sprite.body.onCollide = new Phaser.Signal()` and it will be called when a collision happens, passing two arguments: the sprites which collided. +* ArcadePhysics.Body.onOverlap is a new Signal that is dispatched whenever the Body overlaps with another Body. Due to the potentially high volume of signals this could create it is disabled by default. To use this feature set this property to a Phaser.Signal: `sprite.body.onOverlap = new Phaser.Signal()` and it will be called when an overlap happens, passing two arguments: the sprites which collided. +* Groups now have the following properties, which are getters and setters: `centerX`, `centerY`, `left`, `right`, `top` and `bottom`. These calculate the bounds of the Group, based on all visible children, and then allow you to apply positioning based on that. This means you can, for example, now get the horizontal center of a Group by called `Group.centerX`. These properties are also setters, so you can position the Groups, and it will take scale and rotation into consideration. +* Groups have a new method `alignIn`. It allows you to align the Group within another Game Object, or a Rectangle. You can specify one of 9 positions which are the new position constants such as: `Phaser.TOP_LEFT` or `Phaser.CENTER` (see docs for the complete list). The Groups are positioned based on their child bounds, which takes rotation and scaling into consideration. You can easily place Groups into the corners of the screen, or game world, or align them within other Sprites, using this method. +* Groups have a new method `alignTo`. It allows you to align a Group to the side of another Game Object, or a Rectangle. You can specify one of 11 positions which are the new position constants such as: `Phaser.TOP_LEFT` or `Phaser.LEFT_BOTTOM` (see docs for the complete list). The Groups are positioned based on their child bounds, which takes rotation and scaling into consideration. You can easily align Groups next to other Sprites using this method. ### Updates -* TypeScript definitions fixes and updates (thanks @wingyplus @monagames @marineorganism @obamor @BaroqueEngine @danzel) -* Docs typo fixes (thanks @seanirby @johnrees) -* The TypeScript defs ambient declaration has been updated to make it compatible with the SystemJS loader (thanks @monagames) -* You can no longer intersect check a Body against itself (thanks @VitaZheltyakov #2514) -* The mobile template has been updated (thanks @cryptographer #2518) -* Video.onComplete wouldn't fire on iOS if the user hit the 'Done' button before the video had finished playing. It now uses the `webkitendfullscreen` event to detect this, and dispatches the `onComplete` signal should that event fire (thanks @kelu-smiley #2498) -* Sound.addMarker now has a default value for the `duration` argument (1 second) to avoid the DOM Exception 11 error if you accidentally miss it out (thanks @mari8i #2508) -* Removed the `Stage.updateTransform` calls from the main game loop, because it happens automatically as part of `Game.updateLogic` anyway, so was duplicating the workload for no reason. -* TilemapLayer.postUpdate could potentially be called several times per frame (depending on device frame rate), which would cause multiple texture redraws, even though only the last texture is used during rendering. This has now been modified so that the local TilemapLayer canvas is only re-rendered once per frame, during the rendering phase, and not during the logic update phase. -* Group.preUpdate now iterate through the display list forwards, instead of in reverse, to match it with how `Stage.preUpdate` works. -* Stage.postUpdate is now a lot smaller, with no conditional branching if there is a Camera Target or not. -* Within RequestAnimationFrame both `updateRAF` and `updateSetTimeout` now only call `game.update` if `isRunning` is true. This should avoid asynchronous Game destroy errors under environments like Angular (thanks @flogvit #2521) -* Group.removeAll has a new argument `destroyTexture` which allows you to optionally destroy the BaseTexture of each child, as it is removed from the Group (thanks @stoneman1 #2487) -* PluginManager.remove has a new argument `destroy` (defaults to `true`) which will let you optionally called the `destroy` method of the Plugin being removed. -* Cache.getJSON used to incorrectly bring back a deep-copy of the Phaser.Utils object, instead of just a clone of the JSON object requested (thanks @drhayes #2524 #2526) -* The `DisplayObject.renderOrderID` used to run in reverse. I.e. in a display list with 10 sprites on it, the first sprite (at the bottom of the list, rendering behind all the others) would have a `renderOrderID` of 9, where-as the top-most sprite, rendering above all others, would have a `renderOrderID` of 0. While this didn't cause any side-effects internally, it's arguably illogical. So the process has been reversed, and `renderOrderID`s are now accumulative, starting at zero each frame, and increasing as it iterates down the display list. So the higher the ID, the more "on-top" of the output the object is. -* `InputHandler.validForInput` and `Pointer.processInteractiveObjects` have been updated to reflect the new `renderOrderID` sequence (see above). -* Group.add has a new optional argument `index` which controls the index within the group to insert the child to. Where 0 is the bottom of the Group. -* Group.addAt has been refactored to be a simple call to `Group.add`, removing lots of duplicate code in the process. -* Group.create has a new optional argument `index` which controls the index within the group to insert the child to. Where 0 is the bottom of the Group. It also now makes proper use of `Group.add`, cutting down on more duplicate code. -* Group.createMultiple now returns an Array containing references to all of the children that the method created. -* Cache.getJSON will now return an Array if the `key` you provided points to an array instead of an Object (thanks @drhayes #2552 #2551) -* Phaser.Matrix if passed a 0 value would consider it falsy, and replace it with the default by mistake. It now checks if the arguments are `undefined` or `null` and only then sets the defaults (thanks mmcs) -* Group.createMultiple can now accept Arrays for both the `key` and `frame` arguments. This allows you to create multiple sprites using each key and/or frame in the arrays, which is a great and quick way to build diverse Groups. See the JSDocs for complete details and code examples. -* The Game Object Bounds component has been updated so that it now provides setters for all of the properties, as well as getters. Previously `Sprite.left`, `Sprite.right`, `Sprite.top` and `Sprite.bottom` were read-only, but they are now available to be set as well, and take into consideration the anchor and scale of the Game Objects. +* TypeScript definitions fixes and updates (thanks @monagames) +* Docs typo fixes (thanks @drhayes) +* The TilemapParser will now add more data when importing Image object types from Tiled. The extra data available is: image width, image height, and flags to see if the image is flipped either horizontally, vertically or diagonally (thanks @gotenxds #2564 #2554) +* TilemapLayer.renderRegion has had an assignment to the obsolete `tileColor` property removed (thanks @cryptographer #2583) +* Group.getFurthestFrom and Group.getClosestTo has a new optional argument: `callback`. This allows you to apply your own additional filtering to the distance checks, ultimately influencing the selected child (thanks @LoneStranger #2577) +* Text.setText has a new optional argument `immediate` which will re-create the texture immediately upon call, rather than wait for the next render pass to do so (thanks @Scraft #2594) +* Phaser.Utils.pad now calls `toString` on the input given, which means you can pass in common data types, such as numbers, and have them padded and returned as strings. +* The canvas created by Phaser.Debug for use when displaying debug data is no longer stored in the CanvasPool, and is instead a stand-alone canvas, free from ever being re-used by another game object. +* BitmapData has a new, optional, fifth argument: `skipPool`. By default BitmapData objects will ask for the first free canvas found in the CanvasPool, but this behavior can now be customized on a per object basis. +* Phaser.ArrayUtils.rotate is now deprecated. Please use Phaser.ArrayUtils.rotateLeft instead. +* Phaser.Text.fontPropertiesCanvas used to be taken from the CanvasPool, but as it's constantly needed it is now generated directly from the document. +* The default image texture, for when none is supplied, is now available under `Phaser.Cache.DEFAULT`. +* The missing image texture, for when an image has failed to load, is now available under `Phaser.Cache.MISSING`. +* Phaser.Cache.addImage will now check the key given, and if `__default` or `__missing` it will update the new consts `Phaser.Cache.DEFAULT` and `Phaser.Cache.MISSING` accordingly, allowing you to replace the default or missing image textures used by Phaser. +* Phaser.Cache.getPixiTexture has now been removed, as the Pixi Cache isn't used internally anywhere any longer. +* Phaser.Cache.getPixiBaseTexture has now been removed, as the Pixi Cache isn't used internally anywhere any longer. +* The second argument to Phaser.Cache.removeImage has been renamed from `removeFromPixi` to `destroyBaseTexture`, as that is fundamentally what the argument always did. +* AnimationManager.refreshFrame has been removed as it never actually did anything internally. +* Sound.stop will check to see if `gainNode` exists before trying to disconnect from it (#2597) ### Bug Fixes -* Arcade Physics Body incorrectly positioned if the Sprite had a negative scale (see http://www.html5gamedevs.com/topic/22695-247-248-body-anchoring-any-migration-tips/) (thanks @SBCGames @icameron @Nuuf @EvolViper #2488 #2490) -* InputHandler.checkPointerDown had an incorrect single pipe character |, instead of an OR check ||, and an `isDown` check, causing Button Over events to fail (thanks @pengchuan #2486) -* BitmapText objects with lines greater than `maxWidth` now handle alignment values correctly, causing them to properly center align (thanks @kevinleedrum #2499 @crippledcactus #2496) -* Text has a new private method `measureLine` which is used to calculate the final Text line length, after factoring in color stops and other style changes. This should prevent characters from becoming truncated (thanks @TadejZupancic #2519 #2512) -* Sometimes the browser would cause a race condition where any connected Game Pads were being detected before the callback had a chance to be established. Also sometimes the rawPad references would become stale, and are now checked constantly (thanks @cwleonard #2471) -* Sound.isPlaying was set to false when doing an audio loop, but never set back to true if it's a sound not using a marker (thanks @TheJasonReynolds #2529) -* Phaser.Rectangle.aabb would fail if the Rectangles used negative offsets. It now calculates the bounds accurately (thanks @fillmoreb #2545) -* The `DisplayObject.worldRotation` value didn't sign the `wt.c` value correctly, meaning the rotation would be wrong. -* The `DisplayObject.worldScale` value didn't multiply the local objects scale into the calculation, meaning the value wasn't a true representation of the objects world scale. +* Fixed issue in Group.align where the cell wouldn't increase if `rows` was great than -1 +* Sound.volume was accidentally repeated twice in the source (thanks @LoneStranger #2569) +* Animation.setFrame wouldn't work correctly if the `useLocalFrameIndex` argument was true, and the frame ID was a number (thanks @uboot #2571) +* Polygon.contains would only work with non-flattened Polygon objects. It now works with both flat and non-flat Polygons. +* Graphics objects enabled for input would fail to do anything if a Phaser Polygon was given to the Graphics object (which it was in nearly all cases), as it wouldn't detect input correctly with flattened polygons (thanks @symbiane #2591) +* P2.World.clear will now clear out the World.walls property, resetting all of the wall bounds to `null`. This allows the walls to be re-created accurately when the P2 World is reset, which happens on a State change or restart (thanks @ewpolly1 @codermua #2574) + +### Pixi Updates + +Please note that Phaser uses a custom build of Pixi and always has done. The following changes have been made to our custom build, not to Pixi in general. + +* Removed `_renderWebGL`, `_renderCanvas`, `getLocalBounds` and `getBounds` from PIXI.DisplayObject, as they were only there to pass ancient jshint rules. +* All Pixi.Graphics methods that change the Graphics, i.e. `drawShape`, `lineTo`, `arc`, etc will now all automatically call `Graphics.updateLocalBounds`. This is so that the bounds of the Graphics object are kept updated, allowing you to scale and rotate the Graphics object and still obtain correct dimensions from it (thanks @kelu-smiley #2573) +* PIXI.CanvasPool no longer _just_ checks for `null` parent comparisons. It will check for all falsey parents, helping free-up canvases when the parent objects have been removed elsewhere. +* PIXI.CanvasPool.remove and `removeByCanvas` both now set the removed canvas width and height to 1. +* PIXI.Texture.fromImage, PIXI.BaseTexture.fromImage and PIXI.Sprite.fromImage have all been removed. They should never have actually been used, as they bypass the Phaser Loader, and don't factor in CORs or any other advanced loader settings. +* The PIXI.BaseTexture.imageUrl property has been removed, as it was never actually populated. +* The PIXI.BaseTexture._UID property has been removed, as it was never actually used internally. +* All references to PIXI.BaseTextureCache have been removed (primarily from BaseTexture.destroy and Texture.destroy), as the BaseTextureCache was never used internally by Phaser, or by our custom version of Pixi. +* PIXI.TextureCache has been removed. It was only ever used by the __default and __missing images that Phaser generates on start-up. It wasn't used internally by Phaser anywhere else, and the only references Pixi has to it have all been removed. If you need it in your own game, please refactor it to avoid it, or re-create the object on the PIXI global object. +* Canvases created by `BaseTexture.fromCanvas` no longer have the `_pixiId` property attached to them, as this was never used internally by Phaser or Pixi. +* PIXI.BaseTexture.updateSourceImage is now deprecated. Please use `Sprite.loadTexture` instead. +* The property PIXI.BaseTextureCacheIdGenerator has been removed, as it is no longer used internally by Phaser or Pixi. +* PIXI.Texture.addTextureToCache has been removed. The PIXI Texture Cache was never actually used by Phaser, and was leading to complications internally. +* PIXI.Texture.removeTextureFromCache has been removed. The PIXI Texture Cache was never actually used by Phaser, and was leading to complications internally. +* PIXI.Texture.fromFrame and PIXI.Sprite.fromFrame have been removed. They relied on the PIXI Texture Cache, which was never actually used by Phaser, and was never used internally by Pixi either. +* The property PIXI.TextureCacheIdGenerator has been removed, as it was not used internally. +* The property PIXI.FrameCache has been removed, as it was not used internally. +* PIXI.DisplayObjectContainer calls `updateTransform` at the start of `getBounds` to help avoid the bounds being out of date. + +Thanks to Corin Wilkins at Aardman Digital, for lots of the investigation work, leading to the Pixi changes listed above. For changes in previous releases please see the extensive [Version History](https://github.com/photonstorm/phaser/blob/master/CHANGELOG.md). @@ -425,10 +406,10 @@ Written something cool in Phaser? Please tell us about it in the [forum][forum], ![Created by](http://phaser.io/images/github/div-created-by.png "Created by") -![storm](http://www.phaser.io/images/github/photonstorm-x2.png) - Phaser is a [Photon Storm](http://www.photonstorm.com) production. +![storm](http://www.phaser.io/images/github/photonstorm-x2.png) + Created by [Richard Davey](mailto:rich@photonstorm.com). Powered by coffee, anime, pixels and love. The Phaser logo and characters are © 2016 Photon Storm Limited. @@ -439,10 +420,10 @@ All rights reserved. [![Analytics](https://ga-beacon.appspot.com/UA-44006568-2/phaser/index)](https://github.com/igrigorik/ga-beacon) -[get-js]: https://github.com/photonstorm/phaser/releases/download/v2.5.0/phaser.js -[get-minjs]: https://github.com/photonstorm/phaser/releases/download/v2.5.0/phaser.min.js -[get-zip]: https://github.com/photonstorm/phaser/archive/v2.5.0.zip -[get-tgz]: https://github.com/photonstorm/phaser/archive/v2.5.0.tar.gz +[get-js]: https://github.com/photonstorm/phaser/releases/download/v2.6.0/phaser.js +[get-minjs]: https://github.com/photonstorm/phaser/releases/download/v2.6.0/phaser.min.js +[get-zip]: https://github.com/photonstorm/phaser/archive/v2.6.0.zip +[get-tgz]: https://github.com/photonstorm/phaser/archive/v2.6.0.tar.gz [clone-http]: https://github.com/photonstorm/phaser.git [clone-ssh]: git@github.com:photonstorm/phaser.git [clone-svn]: https://github.com/photonstorm/phaser diff --git a/build/creature.map b/build/creature.map index ff1cf49e7..f018483bd 100644 --- a/build/creature.map +++ b/build/creature.map @@ -1 +1 @@ -{"version":3,"file":"creature.min.js","sources":["creature.js"],"names":["dualQuat","this","real","quat","create","Q_W","imaginary","tmpQ1","MeshBone","key_in","start_pt_in","end_pt_in","parent_transform","key","world_rest_angle","rest_parent_mat","mat4","rest_parent_inv_mat","rest_world_mat","rest_world_inv_mat","bind_world_mat","bind_world_inv_mat","parent_world_mat","parent_world_inv_mat","local_rest_start_pt","local_rest_end_pt","setRestParentMat","setLocalRestStartPt","setLocalRestEndPt","setParentWorldInvMat","setParentWorldMat","local_binormal_dir","vec3","fromValues","tag_id","children","MeshRenderRegion","indices_in","rest_pts_in","uvs_in","start_pt_index_in","end_pt_index_in","start_index_in","end_index_in","store_indices","store_rest_pts","store_uvs","use_local_displacements","use_post_displacements","use_uv_warp","uv_warp_local_offset","vec2","uv_warp_global_offset","uv_warp_scale","start_pt_index","end_pt_index","start_index","end_index","main_bone","local_displacements","post_displacements","uv_warp_ref_uvs","normal_weight_map","fast_normal_weight_map","fast_bones_map","relevant_bones_indices","use_dq","initUvWarp","MeshRenderBoneComposition","root_bone","bones_map","regions","regions_map","MeshBoneCache","MeshDisplacementCache","MeshUVWarpCache","enabled","MeshBoneCacheManager","is_ready","bone_cache_table","bone_cache_data_ready","MeshDisplacementCacheManager","displacement_cache_table","displacement_cache_data_ready","MeshUVWarpCacheManager","uv_cache_table","uv_cache_data_ready","Creature","load_data","total_num_pts","total_num_indices","global_indices","global_pts","global_uvs","render_pts","render_colours","render_composition","boundary_indices","boundary_min","boundary_max","LoadFromData","CreatureAnimation","name_in","name","bones_cache","displacement_cache","uv_warp_cache","cache_pts","fill_cache_pts","CreatureManager","target_creature_in","target_creature","is_playing","run_time","time_scale","blending_factor","should_loop","use_custom_time_range","custom_start_time","custom_end_time","animations","bones_override_callback","blend_render_pts","push","do_blending","active_blend_animation_names","_global","shim","define","amd","exports","window","GLMAT_EPSILON","GLMAT_ARRAY_TYPE","Float32Array","Array","GLMAT_RANDOM","Math","random","glMatrix","setMatrixArrayType","type","degree","PI","toRadian","a","out","clone","x","y","copy","set","add","b","subtract","sub","multiply","mul","divide","div","min","max","scale","scaleAndAdd","distance","sqrt","dist","squaredDistance","sqrDist","length","len","squaredLength","sqrLen","negate","inverse","normalize","dot","cross","z","lerp","t","ax","ay","r","cos","sin","transformMat2","m","transformMat2d","transformMat3","transformMat4","forEach","vec","stride","offset","count","fn","arg","i","l","str","az","bx","by","bz","zScale","w","transformQuat","q","qx","qy","qz","qw","ix","iy","iz","iw","rotateX","c","p","rotateY","rotateZ","vec4","aw","mat2","identity","transpose","a1","invert","a0","a2","a3","det","adjoint","determinant","b0","b1","b2","b3","rotate","rad","s","v","v0","v1","frob","pow","LDU","L","D","U","mat2d","aa","ab","ac","ad","atx","aty","a4","a5","b4","b5","translate","mat3","fromMat4","a01","a02","a12","a00","a10","a11","a20","a21","a22","b01","b11","b21","b00","b02","b10","b12","b20","b22","fromMat2d","fromQuat","x2","y2","z2","xx","yx","yy","zx","zy","zz","wx","wy","wz","normalFromMat4","a03","a13","a23","a30","a31","a32","a33","b03","b04","b05","b06","b07","b08","b09","axis","abs","fromRotationTranslation","xy","xz","yz","frustum","left","right","bottom","top","near","far","rl","tb","nf","perspective","fovy","aspect","f","tan","ortho","lr","bt","lookAt","eye","center","up","x0","x1","y0","y1","z0","z1","eyex","eyey","eyez","upx","upy","upz","centerx","centery","centerz","rotationTo","tmpvec3","xUnitVec3","yUnitVec3","setAxisAngle","setAxes","matr","view","fromMat3","bw","calculateW","slerp","omega","cosom","sinom","scale0","scale1","acos","invDot","conjugate","fRoot","fTrace","j","k","Q_X","Q_Y","Q_Z","prototype","reset","createFromData","q0","quat_in","real_factor","imaginary_factor","norm","ve","trans","tmpVec1","tmpVec2","tmpVec0","aVec","rot","transform","Utils","setAxisMatrix","xAxis","yAxis","zAxis","retMat","M00","M01","M02","M03","M10","M11","M12","M13","M20","M21","M22","M23","M30","M31","M32","M33","matrixToQuat","mat_in","retQuat","te","m11","m12","m13","m21","m22","m23","m31","m32","m33","trace","rotateVec_90","vec_in","ret_vec","calcRotateMat","dir","pep_dir","cur_tangent","cur_normal","cur_binormal","cur_rotate","getMatTranslate","ret_pos","addMat","mat1","mulMat","factor","clamp","num","newVec1","newVec2","vecInterp","vec1","ratio","retVec","vec2Interp","vec_1","vec_2","transform_in","inverse_in","getLocalRestStartPt","getLocalRestEndPt","world_pt_in","calcRestData","calc","computeDirs","local_rest_dir","first","local_rest_normal_dir","second","computeRestLength","setWorldStartPt","world_start_pt","setWorldEndPt","world_end_pt","fixDQs","ref_dq","world_dq","cur_child","initWorldPts","getWorldRestStartPt","getWorldRestEndPt","tmp_mat","getWorldRestAngle","getWorldRestPos","world_rest_pos","getWorldStartPt","getWorldEndPt","getRestParentMat","getRestWorldMat","getWorldDeltaMat","world_delta_mat","getParentWorldMat","getParentWorldInvMat","getWorldDq","computeRestParentTransforms","cur_translate","cur_final","world_rest_dir","bind_translate","tVec","bind_rotate","cur_bind_final","cur_bone","computeParentTransforms","translate_parent","getWorldEndpt","rotate_parent","final_transform","final_inv_transform","computeWorldDeltaTransforms","cur_quat","tmp_pos","addChild","bone_in","getChildren","hasBone","getChildByKey","search_key","ret_data","result","getKey","getAllBoneKeys","append_data","concat","getAllChildren","getBoneDepth","depth","ret_val","isLeaf","deleteChildren","setTagId","value_in","getTagId","start_pt","end_pt","tangent","normal","retData","tmp_dir","rest_length","getIndicesIndex","getRestPtsIndex","getUVsIndex","getNumPts","getStartPtIndex","getEndPtIndex","getNumIndices","getStartIndex","getEndIndex","accum_dq","accum_mat","final_pt","tmp1","tmp2","poseFinalPts","output_pts","output_start_index","read_pt_index","write_pt_index","boneKeys","Object","keys","cur_rest_pt","curBoneIndices","relevantIndicesLength","idx_lookup","cur_weight_val","cur_im_weight_val","tmp_pt","runUvWarp","setMainBoneKey","main_bone_key","determineMainBone","root_bone_in","setUseDq","flag_in","setName","getName","setUseLocalDisplacements","getUseLocalDisplacements","setUsePostDisplacements","getUsePostDisplacements","getRestLocalPt","index_in","return_pt","getLocalIndex","read_index","clearLocalDisplacements","clearPostDisplacements","setUseUvWarp","restoreRefUv","getUseUvWarp","setUvWarpLocalOffset","setUvWarpGlobalOffset","setUvWarpScale","getUvWarpLocalOffset","getUvWarpGlobalOffset","getUvWarpScale","cur_uvs_index","set_uv","initFastNormalWeightMap","cur_key","values","cutoff_val","curIndicesArray","cur_val","addRegion","region_in","setRootBone","getRootBone","initBoneMap","genBoneMap","initRegionsMap","input_bone","ret_map","all_keys","getBonesMap","getRegionsMap","getRegions","getRegionWithId","id_in","cur_region","resetToWorldRestPts","updateAllTransforms","update_parent_xf","pt_in","setLocalDisplacements","displacements_in","setPostDisplacements","getLocalDisplacements","getPostDisplacements","setEnabled","getEnabled","init","start_time_in","end_time_in","start_time","end_time","num_frames","getStartTime","getEndime","getIndexByTime","time_in","retval","retrieveValuesAtTime","bone_map","base_time","floor","ceil","base_cache","end_cache","base_data","end_data","final_world_start_pt","final_world_end_pt","allReady","ready_cnt","size","makeAllReady","set_region","displacements","interp_val","final_local_offset","final_global_offset","final_scale","CreatureModuleUtils","GetAllAnimationNames","json_data","json_animations","getFloatArray","raw_data","getIntArray","ReadPointsArray2DJSON","data","raw_array","ret_list","num_points","cur_index","ReadFloatArray3DJSON","ReadBoolJSON","val","ReadFloatArrayJSON","ReadIntArrayJSON","ReadMatrixJSON","ReadVector2JSON","ReadVector3JSON","CreateBones","json_obj","base_obj","bone_data","child_set","cur_name","cur_node","cur_id","cur_parent_mat","cur_local_rest_start_pt","cur_local_rest_end_pt","cur_children_ids","new_bone","cur_child_id","cur_data","children_ids","child_bone","CreateRegions","ret_regions","cur_start_pt_index","cur_end_pt_index","cur_start_index","cur_end_index","new_region","weight_map","weight_obj","w_key","GetStartEndTimes","cur_num","parseInt","FillBoneCache","cache_manager","cur_time","cache_list","bone_node","cur_start_pt","cur_end_pt","cache_data","set_index","FillDeformationCache","mesh_node","use_local_displacement","use_post_displacement","read_pts","FillUVSwapCache","uv_node","use_uv","local_offset","global_offset","FillRenderColours","g","cur_colour_index","ComputeBoundaryIndices","freq_table","cur_regions","cur_idx","is_found","ComputeBoundaryMinMax","firstIdx","minPt","maxPt","ref_idx","ref_x","ref_y","json_mesh","json_anim_base","json_clip","start_end_times","verifyFillCache","poseFromCachePts","target_pts","num_pts","cur_floor_time","cur_ceil_time","cur_ratio","set_pt","floor_pts","ceil_pts","set_idx","floor_idx","ceil_idx","CreateAnimation","new_animation","AddAnimation","CreateAllAnimations","all_animation_names","SetActiveAnimationName","get","animation_in","GetAnimation","GetCreature","GetAnimationNames","ret_names","check_already_active","active_animation_name","cur_animation","displacement_cache_manager","displacement_table","uv_warp_cache_manager","uv_swap_table","all_regions","index","GetActiveAnimationName","GetAllAnimations","MakePointCache","animation_name_in","store_run_time","getRunTime","cache_pts_list","setRunTime","new_pts","PoseCreature","FillSinglePointCacheFrame","GetIsPlaying","SetShouldLoop","SetUseCustomTimeRange","SetCustomTimeRange","SetIsPlaying","ResetToStartTimes","correctTime","increRunTime","delta_in","anim_start_time","anim_end_time","Update","delta","RunCreature","RunAtTime","set_data_index","read_data_1","read_data_2","SetTimeScale","scale_in","SetBlending","new_vec","SetBlendingAnimations","name_1","name_2","SetBlendingFactor","IsContactBone","radius","ProcessContactBone","bone_cache_manager","cur_bones","cur_pt_index","start","end"],"mappings":"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"} \ No newline at end of file +{"version":3,"sources":["creature.js"],"names":["dualQuat","this","real","quat","create","Q_W","imaginary","tmpQ1","MeshBone","key_in","start_pt_in","end_pt_in","parent_transform","key","world_rest_angle","rest_parent_mat","mat4","rest_parent_inv_mat","rest_world_mat","rest_world_inv_mat","bind_world_mat","bind_world_inv_mat","parent_world_mat","parent_world_inv_mat","local_rest_start_pt","local_rest_end_pt","setRestParentMat","setLocalRestStartPt","setLocalRestEndPt","setParentWorldInvMat","setParentWorldMat","local_binormal_dir","vec3","fromValues","tag_id","children","MeshRenderRegion","indices_in","rest_pts_in","uvs_in","start_pt_index_in","end_pt_index_in","start_index_in","end_index_in","store_indices","store_rest_pts","store_uvs","use_local_displacements","use_post_displacements","use_uv_warp","uv_warp_local_offset","vec2","uv_warp_global_offset","uv_warp_scale","start_pt_index","end_pt_index","start_index","end_index","main_bone","local_displacements","post_displacements","uv_warp_ref_uvs","normal_weight_map","fast_normal_weight_map","fast_bones_map","relevant_bones_indices","use_dq","initUvWarp","MeshRenderBoneComposition","root_bone","bones_map","regions","regions_map","MeshBoneCache","MeshDisplacementCache","MeshUVWarpCache","enabled","MeshBoneCacheManager","is_ready","bone_cache_table","bone_cache_data_ready","MeshDisplacementCacheManager","displacement_cache_table","displacement_cache_data_ready","MeshUVWarpCacheManager","uv_cache_table","uv_cache_data_ready","Creature","load_data","total_num_pts","total_num_indices","global_indices","global_pts","global_uvs","render_pts","render_colours","render_composition","boundary_indices","boundary_min","boundary_max","LoadFromData","CreatureAnimation","name_in","name","bones_cache","displacement_cache","uv_warp_cache","cache_pts","fill_cache_pts","CreatureManager","target_creature_in","target_creature","is_playing","run_time","time_scale","blending_factor","should_loop","use_custom_time_range","custom_start_time","custom_end_time","animations","bones_override_callback","blend_render_pts","push","do_blending","active_blend_animation_names","_global","shim","define","amd","exports","window","GLMAT_EPSILON","GLMAT_ARRAY_TYPE","Float32Array","Array","GLMAT_RANDOM","Math","random","glMatrix","setMatrixArrayType","type","degree","PI","toRadian","a","out","clone","x","y","copy","set","add","b","subtract","sub","multiply","mul","divide","div","min","max","scale","scaleAndAdd","distance","sqrt","dist","squaredDistance","sqrDist","length","len","squaredLength","sqrLen","negate","inverse","normalize","dot","cross","z","lerp","t","ax","ay","r","cos","sin","transformMat2","m","transformMat2d","transformMat3","transformMat4","forEach","vec","stride","offset","count","fn","arg","i","l","str","az","bx","by","bz","zScale","w","transformQuat","q","qx","qy","qz","qw","ix","iy","iz","iw","rotateX","c","p","rotateY","rotateZ","vec4","aw","mat2","identity","transpose","a1","invert","a0","a2","a3","det","adjoint","determinant","b0","b1","b2","b3","rotate","rad","s","v","v0","v1","frob","pow","LDU","L","D","U","mat2d","aa","ab","ac","ad","atx","aty","a4","a5","b4","b5","translate","mat3","fromMat4","a01","a02","a12","a00","a10","a11","a20","a21","a22","b01","b11","b21","b00","b02","b10","b12","b20","b22","fromMat2d","fromQuat","x2","y2","z2","xx","yx","yy","zx","zy","zz","wx","wy","wz","normalFromMat4","a03","a13","a23","a30","a31","a32","a33","b03","b04","b05","b06","b07","b08","b09","axis","abs","fromRotationTranslation","xy","xz","yz","frustum","left","right","bottom","top","near","far","rl","tb","nf","perspective","fovy","aspect","f","tan","ortho","lr","bt","lookAt","eye","center","up","x0","x1","y0","y1","z0","z1","eyex","eyey","eyez","upx","upy","upz","centerx","centery","centerz","rotationTo","tmpvec3","xUnitVec3","yUnitVec3","setAxisAngle","setAxes","matr","view","fromMat3","bw","calculateW","slerp","omega","cosom","sinom","scale0","scale1","acos","invDot","conjugate","fRoot","fTrace","j","k","Q_X","Q_Y","Q_Z","prototype","reset","createFromData","q0","quat_in","real_factor","imaginary_factor","norm","ve","trans","tmpVec1","tmpVec2","tmpVec0","aVec","rot","transform","Utils","setAxisMatrix","xAxis","yAxis","zAxis","retMat","M00","M01","M02","M03","M10","M11","M12","M13","M20","M21","M22","M23","M30","M31","M32","M33","matrixToQuat","mat_in","retQuat","te","m11","m12","m13","m21","m22","m23","m31","m32","m33","trace","rotateVec_90","vec_in","ret_vec","calcRotateMat","dir","pep_dir","cur_tangent","cur_normal","cur_binormal","cur_rotate","getMatTranslate","ret_pos","addMat","mat1","mulMat","factor","clamp","num","newVec1","newVec2","vecInterp","vec1","ratio","retVec","vec2Interp","vec_1","vec_2","transform_in","inverse_in","getLocalRestStartPt","getLocalRestEndPt","world_pt_in","calcRestData","calc","computeDirs","local_rest_dir","first","local_rest_normal_dir","second","computeRestLength","setWorldStartPt","world_start_pt","setWorldEndPt","world_end_pt","fixDQs","ref_dq","world_dq","cur_child","initWorldPts","getWorldRestStartPt","getWorldRestEndPt","tmp_mat","getWorldRestAngle","getWorldRestPos","world_rest_pos","getWorldStartPt","getWorldEndPt","getRestParentMat","getRestWorldMat","getWorldDeltaMat","world_delta_mat","getParentWorldMat","getParentWorldInvMat","getWorldDq","computeRestParentTransforms","cur_translate","cur_final","world_rest_dir","bind_translate","tVec","bind_rotate","cur_bind_final","cur_bone","computeParentTransforms","translate_parent","getWorldEndpt","rotate_parent","final_transform","final_inv_transform","computeWorldDeltaTransforms","cur_quat","tmp_pos","addChild","bone_in","getChildren","hasBone","getChildByKey","search_key","ret_data","result","getKey","getAllBoneKeys","append_data","concat","getAllChildren","getBoneDepth","depth","ret_val","isLeaf","deleteChildren","setTagId","value_in","getTagId","start_pt","end_pt","tangent","normal","retData","tmp_dir","rest_length","getIndicesIndex","getRestPtsIndex","getUVsIndex","getNumPts","getStartPtIndex","getEndPtIndex","getNumIndices","getStartIndex","getEndIndex","accum_dq","accum_mat","final_pt","tmp1","tmp2","poseFinalPts","output_pts","output_start_index","read_pt_index","write_pt_index","boneKeys","Object","keys","cur_rest_pt","curBoneIndices","relevantIndicesLength","idx_lookup","cur_weight_val","cur_im_weight_val","tmp_pt","runUvWarp","setMainBoneKey","main_bone_key","determineMainBone","root_bone_in","setUseDq","flag_in","setName","getName","setUseLocalDisplacements","getUseLocalDisplacements","setUsePostDisplacements","getUsePostDisplacements","getRestLocalPt","index_in","return_pt","getLocalIndex","read_index","clearLocalDisplacements","clearPostDisplacements","setUseUvWarp","restoreRefUv","getUseUvWarp","setUvWarpLocalOffset","setUvWarpGlobalOffset","setUvWarpScale","getUvWarpLocalOffset","getUvWarpGlobalOffset","getUvWarpScale","cur_uvs_index","set_uv","initFastNormalWeightMap","cur_key","values","cutoff_val","curIndicesArray","cur_val","addRegion","region_in","setRootBone","getRootBone","initBoneMap","genBoneMap","initRegionsMap","input_bone","ret_map","all_keys","getBonesMap","getRegionsMap","getRegions","getRegionWithId","id_in","cur_region","resetToWorldRestPts","updateAllTransforms","update_parent_xf","pt_in","setLocalDisplacements","displacements_in","setPostDisplacements","getLocalDisplacements","getPostDisplacements","setEnabled","getEnabled","init","start_time_in","end_time_in","start_time","end_time","num_frames","getStartTime","getEndime","getIndexByTime","time_in","retval","retrieveValuesAtTime","bone_map","base_time","floor","ceil","base_cache","end_cache","base_data","end_data","final_world_start_pt","final_world_end_pt","allReady","ready_cnt","size","makeAllReady","set_region","displacements","interp_val","final_local_offset","final_global_offset","final_scale","CreatureModuleUtils","GetAllAnimationNames","json_data","json_animations","getFloatArray","raw_data","getIntArray","ReadPointsArray2DJSON","data","raw_array","ret_list","num_points","cur_index","ReadFloatArray3DJSON","ReadBoolJSON","val","ReadFloatArrayJSON","ReadIntArrayJSON","ReadMatrixJSON","ReadVector2JSON","ReadVector3JSON","CreateBones","json_obj","base_obj","bone_data","child_set","cur_name","cur_node","cur_id","cur_parent_mat","cur_local_rest_start_pt","cur_local_rest_end_pt","cur_children_ids","new_bone","cur_child_id","cur_data","children_ids","child_bone","CreateRegions","ret_regions","cur_start_pt_index","cur_end_pt_index","cur_start_index","cur_end_index","new_region","weight_map","weight_obj","w_key","GetStartEndTimes","cur_num","parseInt","FillBoneCache","cache_manager","cur_time","cache_list","bone_node","cur_start_pt","cur_end_pt","cache_data","set_index","FillDeformationCache","mesh_node","use_local_displacement","use_post_displacement","read_pts","FillUVSwapCache","uv_node","use_uv","local_offset","global_offset","FillRenderColours","g","cur_colour_index","ComputeBoundaryIndices","freq_table","cur_regions","cur_idx","is_found","ComputeBoundaryMinMax","firstIdx","minPt","maxPt","ref_idx","ref_x","ref_y","json_mesh","json_anim_base","json_clip","start_end_times","verifyFillCache","poseFromCachePts","target_pts","num_pts","cur_floor_time","cur_ceil_time","cur_ratio","set_pt","floor_pts","ceil_pts","set_idx","floor_idx","ceil_idx","CreateAnimation","new_animation","AddAnimation","CreateAllAnimations","all_animation_names","SetActiveAnimationName","get","animation_in","GetAnimation","GetCreature","GetAnimationNames","ret_names","check_already_active","active_animation_name","cur_animation","displacement_cache_manager","displacement_table","uv_warp_cache_manager","uv_swap_table","all_regions","index","GetActiveAnimationName","GetAllAnimations","MakePointCache","animation_name_in","store_run_time","getRunTime","cache_pts_list","setRunTime","new_pts","PoseCreature","FillSinglePointCacheFrame","GetIsPlaying","SetShouldLoop","SetUseCustomTimeRange","SetCustomTimeRange","SetIsPlaying","ResetToStartTimes","correctTime","increRunTime","delta_in","anim_start_time","anim_end_time","Update","delta","RunCreature","RunAtTime","set_data_index","read_data_1","read_data_2","SetTimeScale","scale_in","SetBlending","new_vec","SetBlendingAnimations","name_1","name_2","SetBlendingFactor","IsContactBone","radius","ProcessContactBone","bone_cache_manager","cur_bones","cur_pt_index","start","end"],"mappings":"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","file":"creature.min.js"} \ No newline at end of file diff --git a/build/creature.min.js b/build/creature.min.js index 683b958cf..c66bc87f6 100644 --- a/build/creature.min.js +++ b/build/creature.min.js @@ -1,4 +1,4 @@ -/* Phaser v2.5.0 Creature Build - http://phaser.io - @photonstorm - (c) 2016 Photon Storm Ltd. */ +/* Phaser v2.5.1 Creature Build - http://phaser.io - @photonstorm - (c) 2016 Photon Storm Ltd. */ function dualQuat(){this.real=quat.create(),this.real[Q_W]=0,this.imaginary=quat.create(),this.imaginary[Q_W]=0,this.tmpQ1=quat.create()}function MeshBone(a,b,c,d){this.key=a,this.world_rest_angle=0,this.rest_parent_mat=mat4.create(),this.rest_parent_inv_mat=mat4.create(),this.rest_world_mat=mat4.create(),this.rest_world_inv_mat=mat4.create(),this.bind_world_mat=mat4.create(),this.bind_world_inv_mat=mat4.create(),this.parent_world_mat=mat4.create(),this.parent_world_inv_mat=mat4.create(),this.local_rest_start_pt=null,this.local_rest_end_pt=null,this.setRestParentMat(d,null),this.setLocalRestStartPt(b),this.setLocalRestEndPt(c),this.setParentWorldInvMat(mat4.create()),this.setParentWorldMat(mat4.create()),this.local_binormal_dir=vec3.fromValues(0,0,1),this.tag_id=0,this.children=[]}function MeshRenderRegion(a,b,c,d,e,f,g){this.store_indices=a,this.store_rest_pts=b,this.store_uvs=c,this.use_local_displacements=!1,this.use_post_displacements=!1,this.use_uv_warp=!1,this.uv_warp_local_offset=vec2.fromValues(0,0),this.uv_warp_global_offset=vec2.fromValues(0,0),this.uv_warp_scale=vec2.fromValues(1,1),this.start_pt_index=d,this.end_pt_index=e,this.start_index=f,this.end_index=g,this.main_bone=null,this.local_displacements=[],this.post_displacements=[],this.uv_warp_ref_uvs=[],this.normal_weight_map={},this.fast_normal_weight_map=[],this.fast_bones_map=[],this.relevant_bones_indices=[],this.use_dq=!0,this.tag_id=-1,this.initUvWarp()}function MeshRenderBoneComposition(){this.root_bone=null,this.bones_map={},this.regions=[],this.regions_map={}}function MeshBoneCache(a){this.key=a}function MeshDisplacementCache(a){this.key=a,this.local_displacements=[],this.post_displacements=[]}function MeshUVWarpCache(a){this.uv_warp_global_offset=vec2.create(),this.uv_warp_local_offset=vec2.create(),this.uv_warp_scale=vec2.fromValues(-1,-1),this.key=a,this.enabled=!1}function MeshBoneCacheManager(){this.is_ready=!1,this.bone_cache_table=null,this.bone_cache_data_ready=null,this.bone_cache_table=[],this.bone_cache_data_ready=[]}function MeshDisplacementCacheManager(){this.is_ready=!1,this.displacement_cache_table=null,this.displacement_cache_data_ready=null,this.displacement_cache_table=[],this.displacement_cache_data_ready=[]}function MeshUVWarpCacheManager(){this.is_ready=!1,this.uv_cache_table=null,this.uv_cache_data_ready=null,this.uv_cache_table=[],this.uv_cache_data_ready=[]}function Creature(a){this.total_num_pts=0,this.total_num_indices=0,this.global_indices=null,this.global_pts=null,this.global_uvs=null,this.render_pts=null,this.render_colours=null,this.render_composition=null,this.boundary_indices=[],this.boundary_min=vec2.create(),this.boundary_max=vec2.create(),this.LoadFromData(a)}function CreatureAnimation(a,b){this.name=b,this.bones_cache=new MeshBoneCacheManager,this.displacement_cache=new MeshDisplacementCacheManager,this.uv_warp_cache=new MeshUVWarpCacheManager,this.cache_pts=[],this.fill_cache_pts=[],this.LoadFromData(b,a)}function CreatureManager(a){this.target_creature=a,this.is_playing=!1,this.run_time=0,this.time_scale=30,this.blending_factor=0,this.should_loop=!0,this.use_custom_time_range=!1,this.custom_start_time=0,this.custom_end_time=0,this.animations={},this.bones_override_callback=null,this.blend_render_pts=[],this.blend_render_pts.push([]),this.blend_render_pts.push([]),this.do_blending=!1,this.active_blend_animation_names=[],this.active_blend_animation_names.push(""),this.active_blend_animation_names.push("")}!function(a){"use strict";var b={};"undefined"==typeof exports?"function"==typeof define&&"object"==typeof define.amd&&define.amd?(b.exports={},define(function(){return b.exports})):b.exports="undefined"!=typeof window?window:a:b.exports=exports,function(a){if(!b)var b=1e-6;if(!c)var c="undefined"!=typeof Float32Array?Float32Array:Array;if(!d)var d=Math.random;var e={};e.setMatrixArrayType=function(a){c=a},"undefined"!=typeof a&&(a.glMatrix=e);var f=Math.PI/180;e.toRadian=function(a){return a*f};var g={};g.create=function(){var a=new c(2);return a[0]=0,a[1]=0,a},g.clone=function(a){var b=new c(2);return b[0]=a[0],b[1]=a[1],b},g.fromValues=function(a,b){var d=new c(2);return d[0]=a,d[1]=b,d},g.copy=function(a,b){return a[0]=b[0],a[1]=b[1],a},g.set=function(a,b,c){return a[0]=b,a[1]=c,a},g.add=function(a,b,c){return a[0]=b[0]+c[0],a[1]=b[1]+c[1],a},g.subtract=function(a,b,c){return a[0]=b[0]-c[0],a[1]=b[1]-c[1],a},g.sub=g.subtract,g.multiply=function(a,b,c){return a[0]=b[0]*c[0],a[1]=b[1]*c[1],a},g.mul=g.multiply,g.divide=function(a,b,c){return a[0]=b[0]/c[0],a[1]=b[1]/c[1],a},g.div=g.divide,g.min=function(a,b,c){return a[0]=Math.min(b[0],c[0]),a[1]=Math.min(b[1],c[1]),a},g.max=function(a,b,c){return a[0]=Math.max(b[0],c[0]),a[1]=Math.max(b[1],c[1]),a},g.scale=function(a,b,c){return a[0]=b[0]*c,a[1]=b[1]*c,a},g.scaleAndAdd=function(a,b,c,d){return a[0]=b[0]+c[0]*d,a[1]=b[1]+c[1]*d,a},g.distance=function(a,b){var c=b[0]-a[0],d=b[1]-a[1];return Math.sqrt(c*c+d*d)},g.dist=g.distance,g.squaredDistance=function(a,b){var c=b[0]-a[0],d=b[1]-a[1];return c*c+d*d},g.sqrDist=g.squaredDistance,g.length=function(a){var b=a[0],c=a[1];return Math.sqrt(b*b+c*c)},g.len=g.length,g.squaredLength=function(a){var b=a[0],c=a[1];return b*b+c*c},g.sqrLen=g.squaredLength,g.negate=function(a,b){return a[0]=-b[0],a[1]=-b[1],a},g.inverse=function(a,b){return a[0]=1/b[0],a[1]=1/b[1],a},g.normalize=function(a,b){var c=b[0],d=b[1],e=c*c+d*d;return e>0&&(e=1/Math.sqrt(e),a[0]=b[0]*e,a[1]=b[1]*e),a},g.dot=function(a,b){return a[0]*b[0]+a[1]*b[1]},g.cross=function(a,b,c){var d=b[0]*c[1]-b[1]*c[0];return a[0]=a[1]=0,a[2]=d,a},g.lerp=function(a,b,c,d){var e=b[0],f=b[1];return a[0]=e+d*(c[0]-e),a[1]=f+d*(c[1]-f),a},g.random=function(a,b){b=b||1;var c=2*d()*Math.PI;return a[0]=Math.cos(c)*b,a[1]=Math.sin(c)*b,a},g.transformMat2=function(a,b,c){var d=b[0],e=b[1];return a[0]=c[0]*d+c[2]*e,a[1]=c[1]*d+c[3]*e,a},g.transformMat2d=function(a,b,c){var d=b[0],e=b[1];return a[0]=c[0]*d+c[2]*e+c[4],a[1]=c[1]*d+c[3]*e+c[5],a},g.transformMat3=function(a,b,c){var d=b[0],e=b[1];return a[0]=c[0]*d+c[3]*e+c[6],a[1]=c[1]*d+c[4]*e+c[7],a},g.transformMat4=function(a,b,c){var d=b[0],e=b[1];return a[0]=c[0]*d+c[4]*e+c[12],a[1]=c[1]*d+c[5]*e+c[13],a},g.forEach=function(){var a=g.create();return function(b,c,d,e,f,g){var h,i;for(c||(c=2),d||(d=0),i=e?Math.min(e*c+d,b.length):b.length,h=d;i>h;h+=c)a[0]=b[h],a[1]=b[h+1],f(a,a,g),b[h]=a[0],b[h+1]=a[1];return b}}(),g.str=function(a){return"vec2("+a[0]+", "+a[1]+")"},"undefined"!=typeof a&&(a.vec2=g);var h={};h.create=function(){var a=new c(3);return a[0]=0,a[1]=0,a[2]=0,a},h.clone=function(a){var b=new c(3);return b[0]=a[0],b[1]=a[1],b[2]=a[2],b},h.fromValues=function(a,b,d){var e=new c(3);return e[0]=a,e[1]=b,e[2]=d,e},h.copy=function(a,b){return a[0]=b[0],a[1]=b[1],a[2]=b[2],a},h.set=function(a,b,c,d){return a[0]=b,a[1]=c,a[2]=d,a},h.add=function(a,b,c){return a[0]=b[0]+c[0],a[1]=b[1]+c[1],a[2]=b[2]+c[2],a},h.subtract=function(a,b,c){return a[0]=b[0]-c[0],a[1]=b[1]-c[1],a[2]=b[2]-c[2],a},h.sub=h.subtract,h.multiply=function(a,b,c){return a[0]=b[0]*c[0],a[1]=b[1]*c[1],a[2]=b[2]*c[2],a},h.mul=h.multiply,h.divide=function(a,b,c){return a[0]=b[0]/c[0],a[1]=b[1]/c[1],a[2]=b[2]/c[2],a},h.div=h.divide,h.min=function(a,b,c){return a[0]=Math.min(b[0],c[0]),a[1]=Math.min(b[1],c[1]),a[2]=Math.min(b[2],c[2]),a},h.max=function(a,b,c){return a[0]=Math.max(b[0],c[0]),a[1]=Math.max(b[1],c[1]),a[2]=Math.max(b[2],c[2]),a},h.scale=function(a,b,c){return a[0]=b[0]*c,a[1]=b[1]*c,a[2]=b[2]*c,a},h.scaleAndAdd=function(a,b,c,d){return a[0]=b[0]+c[0]*d,a[1]=b[1]+c[1]*d,a[2]=b[2]+c[2]*d,a},h.distance=function(a,b){var c=b[0]-a[0],d=b[1]-a[1],e=b[2]-a[2];return Math.sqrt(c*c+d*d+e*e)},h.dist=h.distance,h.squaredDistance=function(a,b){var c=b[0]-a[0],d=b[1]-a[1],e=b[2]-a[2];return c*c+d*d+e*e},h.sqrDist=h.squaredDistance,h.length=function(a){var b=a[0],c=a[1],d=a[2];return Math.sqrt(b*b+c*c+d*d)},h.len=h.length,h.squaredLength=function(a){var b=a[0],c=a[1],d=a[2];return b*b+c*c+d*d},h.sqrLen=h.squaredLength,h.negate=function(a,b){return a[0]=-b[0],a[1]=-b[1],a[2]=-b[2],a},h.inverse=function(a,b){return a[0]=1/b[0],a[1]=1/b[1],a[2]=1/b[2],a},h.normalize=function(a,b){var c=b[0],d=b[1],e=b[2],f=c*c+d*d+e*e;return f>0&&(f=1/Math.sqrt(f),a[0]=b[0]*f,a[1]=b[1]*f,a[2]=b[2]*f),a},h.dot=function(a,b){return a[0]*b[0]+a[1]*b[1]+a[2]*b[2]},h.cross=function(a,b,c){var d=b[0],e=b[1],f=b[2],g=c[0],h=c[1],i=c[2];return a[0]=e*i-f*h,a[1]=f*g-d*i,a[2]=d*h-e*g,a},h.lerp=function(a,b,c,d){var e=b[0],f=b[1],g=b[2];return a[0]=e+d*(c[0]-e),a[1]=f+d*(c[1]-f),a[2]=g+d*(c[2]-g),a},h.random=function(a,b){b=b||1;var c=2*d()*Math.PI,e=2*d()-1,f=Math.sqrt(1-e*e)*b;return a[0]=Math.cos(c)*f,a[1]=Math.sin(c)*f,a[2]=e*b,a},h.transformMat4=function(a,b,c){var d=b[0],e=b[1],f=b[2],g=c[3]*d+c[7]*e+c[11]*f+c[15];return g=g||1,a[0]=(c[0]*d+c[4]*e+c[8]*f+c[12])/g,a[1]=(c[1]*d+c[5]*e+c[9]*f+c[13])/g,a[2]=(c[2]*d+c[6]*e+c[10]*f+c[14])/g,a},h.transformMat3=function(a,b,c){var d=b[0],e=b[1],f=b[2];return a[0]=d*c[0]+e*c[3]+f*c[6],a[1]=d*c[1]+e*c[4]+f*c[7],a[2]=d*c[2]+e*c[5]+f*c[8],a},h.transformQuat=function(a,b,c){var d=b[0],e=b[1],f=b[2],g=c[0],h=c[1],i=c[2],j=c[3],k=j*d+h*f-i*e,l=j*e+i*d-g*f,m=j*f+g*e-h*d,n=-g*d-h*e-i*f;return a[0]=k*j+n*-g+l*-i-m*-h,a[1]=l*j+n*-h+m*-g-k*-i,a[2]=m*j+n*-i+k*-h-l*-g,a},h.rotateX=function(a,b,c,d){var e=[],f=[];return e[0]=b[0]-c[0],e[1]=b[1]-c[1],e[2]=b[2]-c[2],f[0]=e[0],f[1]=e[1]*Math.cos(d)-e[2]*Math.sin(d),f[2]=e[1]*Math.sin(d)+e[2]*Math.cos(d),a[0]=f[0]+c[0],a[1]=f[1]+c[1],a[2]=f[2]+c[2],a},h.rotateY=function(a,b,c,d){var e=[],f=[];return e[0]=b[0]-c[0],e[1]=b[1]-c[1],e[2]=b[2]-c[2],f[0]=e[2]*Math.sin(d)+e[0]*Math.cos(d),f[1]=e[1],f[2]=e[2]*Math.cos(d)-e[0]*Math.sin(d),a[0]=f[0]+c[0],a[1]=f[1]+c[1],a[2]=f[2]+c[2],a},h.rotateZ=function(a,b,c,d){var e=[],f=[];return e[0]=b[0]-c[0],e[1]=b[1]-c[1],e[2]=b[2]-c[2],f[0]=e[0]*Math.cos(d)-e[1]*Math.sin(d),f[1]=e[0]*Math.sin(d)+e[1]*Math.cos(d),f[2]=e[2],a[0]=f[0]+c[0],a[1]=f[1]+c[1],a[2]=f[2]+c[2],a},h.forEach=function(){var a=h.create();return function(b,c,d,e,f,g){var h,i;for(c||(c=3),d||(d=0),i=e?Math.min(e*c+d,b.length):b.length,h=d;i>h;h+=c)a[0]=b[h],a[1]=b[h+1],a[2]=b[h+2],f(a,a,g),b[h]=a[0],b[h+1]=a[1],b[h+2]=a[2];return b}}(),h.str=function(a){return"vec3("+a[0]+", "+a[1]+", "+a[2]+")"},"undefined"!=typeof a&&(a.vec3=h);var i={};i.create=function(){var a=new c(4);return a[0]=0,a[1]=0,a[2]=0,a[3]=0,a},i.clone=function(a){var b=new c(4);return b[0]=a[0],b[1]=a[1],b[2]=a[2],b[3]=a[3],b},i.fromValues=function(a,b,d,e){var f=new c(4);return f[0]=a,f[1]=b,f[2]=d,f[3]=e,f},i.copy=function(a,b){return a[0]=b[0],a[1]=b[1],a[2]=b[2],a[3]=b[3],a},i.set=function(a,b,c,d,e){return a[0]=b,a[1]=c,a[2]=d,a[3]=e,a},i.add=function(a,b,c){return a[0]=b[0]+c[0],a[1]=b[1]+c[1],a[2]=b[2]+c[2],a[3]=b[3]+c[3],a},i.subtract=function(a,b,c){return a[0]=b[0]-c[0],a[1]=b[1]-c[1],a[2]=b[2]-c[2],a[3]=b[3]-c[3],a},i.sub=i.subtract,i.multiply=function(a,b,c){return a[0]=b[0]*c[0],a[1]=b[1]*c[1],a[2]=b[2]*c[2],a[3]=b[3]*c[3],a},i.mul=i.multiply,i.divide=function(a,b,c){return a[0]=b[0]/c[0],a[1]=b[1]/c[1],a[2]=b[2]/c[2],a[3]=b[3]/c[3],a},i.div=i.divide,i.min=function(a,b,c){return a[0]=Math.min(b[0],c[0]),a[1]=Math.min(b[1],c[1]),a[2]=Math.min(b[2],c[2]),a[3]=Math.min(b[3],c[3]),a},i.max=function(a,b,c){return a[0]=Math.max(b[0],c[0]),a[1]=Math.max(b[1],c[1]),a[2]=Math.max(b[2],c[2]),a[3]=Math.max(b[3],c[3]),a},i.scale=function(a,b,c){return a[0]=b[0]*c,a[1]=b[1]*c,a[2]=b[2]*c,a[3]=b[3]*c,a},i.scaleAndAdd=function(a,b,c,d){return a[0]=b[0]+c[0]*d,a[1]=b[1]+c[1]*d,a[2]=b[2]+c[2]*d,a[3]=b[3]+c[3]*d,a},i.distance=function(a,b){var c=b[0]-a[0],d=b[1]-a[1],e=b[2]-a[2],f=b[3]-a[3];return Math.sqrt(c*c+d*d+e*e+f*f)},i.dist=i.distance,i.squaredDistance=function(a,b){var c=b[0]-a[0],d=b[1]-a[1],e=b[2]-a[2],f=b[3]-a[3];return c*c+d*d+e*e+f*f},i.sqrDist=i.squaredDistance,i.length=function(a){var b=a[0],c=a[1],d=a[2],e=a[3];return Math.sqrt(b*b+c*c+d*d+e*e)},i.len=i.length,i.squaredLength=function(a){var b=a[0],c=a[1],d=a[2],e=a[3];return b*b+c*c+d*d+e*e},i.sqrLen=i.squaredLength,i.negate=function(a,b){return a[0]=-b[0],a[1]=-b[1],a[2]=-b[2],a[3]=-b[3],a},i.inverse=function(a,b){return a[0]=1/b[0],a[1]=1/b[1],a[2]=1/b[2],a[3]=1/b[3],a},i.normalize=function(a,b){var c=b[0],d=b[1],e=b[2],f=b[3],g=c*c+d*d+e*e+f*f;return g>0&&(g=1/Math.sqrt(g),a[0]=b[0]*g,a[1]=b[1]*g,a[2]=b[2]*g,a[3]=b[3]*g),a},i.dot=function(a,b){return a[0]*b[0]+a[1]*b[1]+a[2]*b[2]+a[3]*b[3]},i.lerp=function(a,b,c,d){var e=b[0],f=b[1],g=b[2],h=b[3];return a[0]=e+d*(c[0]-e),a[1]=f+d*(c[1]-f),a[2]=g+d*(c[2]-g),a[3]=h+d*(c[3]-h),a},i.random=function(a,b){return b=b||1,a[0]=d(),a[1]=d(),a[2]=d(),a[3]=d(),i.normalize(a,a),i.scale(a,a,b),a},i.transformMat4=function(a,b,c){var d=b[0],e=b[1],f=b[2],g=b[3];return a[0]=c[0]*d+c[4]*e+c[8]*f+c[12]*g,a[1]=c[1]*d+c[5]*e+c[9]*f+c[13]*g,a[2]=c[2]*d+c[6]*e+c[10]*f+c[14]*g,a[3]=c[3]*d+c[7]*e+c[11]*f+c[15]*g,a},i.transformQuat=function(a,b,c){var d=b[0],e=b[1],f=b[2],g=c[0],h=c[1],i=c[2],j=c[3],k=j*d+h*f-i*e,l=j*e+i*d-g*f,m=j*f+g*e-h*d,n=-g*d-h*e-i*f;return a[0]=k*j+n*-g+l*-i-m*-h,a[1]=l*j+n*-h+m*-g-k*-i,a[2]=m*j+n*-i+k*-h-l*-g,a},i.forEach=function(){var a=i.create();return function(b,c,d,e,f,g){var h,i;for(c||(c=4),d||(d=0),i=e?Math.min(e*c+d,b.length):b.length,h=d;i>h;h+=c)a[0]=b[h],a[1]=b[h+1],a[2]=b[h+2],a[3]=b[h+3],f(a,a,g),b[h]=a[0],b[h+1]=a[1],b[h+2]=a[2],b[h+3]=a[3];return b}}(),i.str=function(a){return"vec4("+a[0]+", "+a[1]+", "+a[2]+", "+a[3]+")"},"undefined"!=typeof a&&(a.vec4=i);var j={};j.create=function(){var a=new c(4);return a[0]=1,a[1]=0,a[2]=0,a[3]=1,a},j.clone=function(a){var b=new c(4);return b[0]=a[0],b[1]=a[1],b[2]=a[2],b[3]=a[3],b},j.copy=function(a,b){return a[0]=b[0],a[1]=b[1],a[2]=b[2],a[3]=b[3],a},j.identity=function(a){return a[0]=1,a[1]=0,a[2]=0,a[3]=1,a},j.transpose=function(a,b){if(a===b){var c=b[1];a[1]=b[2],a[2]=c}else a[0]=b[0],a[1]=b[2],a[2]=b[1],a[3]=b[3];return a},j.invert=function(a,b){var c=b[0],d=b[1],e=b[2],f=b[3],g=c*f-e*d;return g?(g=1/g,a[0]=f*g,a[1]=-d*g,a[2]=-e*g,a[3]=c*g,a):null},j.adjoint=function(a,b){var c=b[0];return a[0]=b[3],a[1]=-b[1],a[2]=-b[2],a[3]=c,a},j.determinant=function(a){return a[0]*a[3]-a[2]*a[1]},j.multiply=function(a,b,c){var d=b[0],e=b[1],f=b[2],g=b[3],h=c[0],i=c[1],j=c[2],k=c[3];return a[0]=d*h+f*i,a[1]=e*h+g*i,a[2]=d*j+f*k,a[3]=e*j+g*k,a},j.mul=j.multiply,j.rotate=function(a,b,c){var d=b[0],e=b[1],f=b[2],g=b[3],h=Math.sin(c),i=Math.cos(c);return a[0]=d*i+f*h,a[1]=e*i+g*h,a[2]=d*-h+f*i,a[3]=e*-h+g*i,a},j.scale=function(a,b,c){var d=b[0],e=b[1],f=b[2],g=b[3],h=c[0],i=c[1];return a[0]=d*h,a[1]=e*h,a[2]=f*i,a[3]=g*i,a},j.str=function(a){return"mat2("+a[0]+", "+a[1]+", "+a[2]+", "+a[3]+")"},j.frob=function(a){return Math.sqrt(Math.pow(a[0],2)+Math.pow(a[1],2)+Math.pow(a[2],2)+Math.pow(a[3],2))},j.LDU=function(a,b,c,d){return a[2]=d[2]/d[0],c[0]=d[0],c[1]=d[1],c[3]=d[3]-a[2]*c[1],[a,b,c]},"undefined"!=typeof a&&(a.mat2=j);var k={};k.create=function(){var a=new c(6);return a[0]=1,a[1]=0,a[2]=0,a[3]=1,a[4]=0,a[5]=0,a},k.clone=function(a){var b=new c(6);return b[0]=a[0],b[1]=a[1],b[2]=a[2],b[3]=a[3],b[4]=a[4],b[5]=a[5],b},k.copy=function(a,b){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},k.identity=function(a){return a[0]=1,a[1]=0,a[2]=0,a[3]=1,a[4]=0,a[5]=0,a},k.invert=function(a,b){var c=b[0],d=b[1],e=b[2],f=b[3],g=b[4],h=b[5],i=c*f-d*e;return i?(i=1/i,a[0]=f*i,a[1]=-d*i,a[2]=-e*i,a[3]=c*i,a[4]=(e*h-f*g)*i,a[5]=(d*g-c*h)*i,a):null},k.determinant=function(a){return a[0]*a[3]-a[1]*a[2]},k.multiply=function(a,b,c){var d=b[0],e=b[1],f=b[2],g=b[3],h=b[4],i=b[5],j=c[0],k=c[1],l=c[2],m=c[3],n=c[4],o=c[5];return a[0]=d*j+f*k,a[1]=e*j+g*k,a[2]=d*l+f*m,a[3]=e*l+g*m,a[4]=d*n+f*o+h,a[5]=e*n+g*o+i,a},k.mul=k.multiply,k.rotate=function(a,b,c){var d=b[0],e=b[1],f=b[2],g=b[3],h=b[4],i=b[5],j=Math.sin(c),k=Math.cos(c);return a[0]=d*k+f*j,a[1]=e*k+g*j,a[2]=d*-j+f*k,a[3]=e*-j+g*k,a[4]=h,a[5]=i,a},k.scale=function(a,b,c){var d=b[0],e=b[1],f=b[2],g=b[3],h=b[4],i=b[5],j=c[0],k=c[1];return a[0]=d*j,a[1]=e*j,a[2]=f*k,a[3]=g*k,a[4]=h,a[5]=i,a},k.translate=function(a,b,c){var d=b[0],e=b[1],f=b[2],g=b[3],h=b[4],i=b[5],j=c[0],k=c[1];return a[0]=d,a[1]=e,a[2]=f,a[3]=g,a[4]=d*j+f*k+h,a[5]=e*j+g*k+i,a},k.str=function(a){return"mat2d("+a[0]+", "+a[1]+", "+a[2]+", "+a[3]+", "+a[4]+", "+a[5]+")"},k.frob=function(a){return Math.sqrt(Math.pow(a[0],2)+Math.pow(a[1],2)+Math.pow(a[2],2)+Math.pow(a[3],2)+Math.pow(a[4],2)+Math.pow(a[5],2)+1)},"undefined"!=typeof a&&(a.mat2d=k);var l={};l.create=function(){var a=new c(9);return a[0]=1,a[1]=0,a[2]=0,a[3]=0,a[4]=1,a[5]=0,a[6]=0,a[7]=0,a[8]=1,a},l.fromMat4=function(a,b){return a[0]=b[0],a[1]=b[1],a[2]=b[2],a[3]=b[4],a[4]=b[5],a[5]=b[6],a[6]=b[8],a[7]=b[9],a[8]=b[10],a},l.clone=function(a){var b=new c(9);return b[0]=a[0],b[1]=a[1],b[2]=a[2],b[3]=a[3],b[4]=a[4],b[5]=a[5],b[6]=a[6],b[7]=a[7],b[8]=a[8],b},l.copy=function(a,b){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},l.identity=function(a){return a[0]=1,a[1]=0,a[2]=0,a[3]=0,a[4]=1,a[5]=0,a[6]=0,a[7]=0,a[8]=1,a},l.transpose=function(a,b){if(a===b){var c=b[1],d=b[2],e=b[5];a[1]=b[3],a[2]=b[6],a[3]=c,a[5]=b[7],a[6]=d,a[7]=e}else a[0]=b[0],a[1]=b[3],a[2]=b[6],a[3]=b[1],a[4]=b[4],a[5]=b[7],a[6]=b[2],a[7]=b[5],a[8]=b[8];return a},l.invert=function(a,b){var c=b[0],d=b[1],e=b[2],f=b[3],g=b[4],h=b[5],i=b[6],j=b[7],k=b[8],l=k*g-h*j,m=-k*f+h*i,n=j*f-g*i,o=c*l+d*m+e*n;return o?(o=1/o,a[0]=l*o,a[1]=(-k*d+e*j)*o,a[2]=(h*d-e*g)*o,a[3]=m*o,a[4]=(k*c-e*i)*o,a[5]=(-h*c+e*f)*o,a[6]=n*o,a[7]=(-j*c+d*i)*o,a[8]=(g*c-d*f)*o,a):null},l.adjoint=function(a,b){var c=b[0],d=b[1],e=b[2],f=b[3],g=b[4],h=b[5],i=b[6],j=b[7],k=b[8];return a[0]=g*k-h*j,a[1]=e*j-d*k,a[2]=d*h-e*g,a[3]=h*i-f*k,a[4]=c*k-e*i,a[5]=e*f-c*h,a[6]=f*j-g*i,a[7]=d*i-c*j,a[8]=c*g-d*f,a},l.determinant=function(a){var b=a[0],c=a[1],d=a[2],e=a[3],f=a[4],g=a[5],h=a[6],i=a[7],j=a[8];return b*(j*f-g*i)+c*(-j*e+g*h)+d*(i*e-f*h)},l.multiply=function(a,b,c){var d=b[0],e=b[1],f=b[2],g=b[3],h=b[4],i=b[5],j=b[6],k=b[7],l=b[8],m=c[0],n=c[1],o=c[2],p=c[3],q=c[4],r=c[5],s=c[6],t=c[7],u=c[8];return a[0]=m*d+n*g+o*j,a[1]=m*e+n*h+o*k,a[2]=m*f+n*i+o*l,a[3]=p*d+q*g+r*j,a[4]=p*e+q*h+r*k,a[5]=p*f+q*i+r*l,a[6]=s*d+t*g+u*j,a[7]=s*e+t*h+u*k,a[8]=s*f+t*i+u*l,a},l.mul=l.multiply,l.translate=function(a,b,c){var d=b[0],e=b[1],f=b[2],g=b[3],h=b[4],i=b[5],j=b[6],k=b[7],l=b[8],m=c[0],n=c[1];return a[0]=d,a[1]=e,a[2]=f,a[3]=g,a[4]=h,a[5]=i,a[6]=m*d+n*g+j,a[7]=m*e+n*h+k,a[8]=m*f+n*i+l,a},l.rotate=function(a,b,c){var d=b[0],e=b[1],f=b[2],g=b[3],h=b[4],i=b[5],j=b[6],k=b[7],l=b[8],m=Math.sin(c),n=Math.cos(c);return a[0]=n*d+m*g,a[1]=n*e+m*h,a[2]=n*f+m*i,a[3]=n*g-m*d,a[4]=n*h-m*e,a[5]=n*i-m*f,a[6]=j,a[7]=k,a[8]=l,a},l.scale=function(a,b,c){var d=c[0],e=c[1];return a[0]=d*b[0],a[1]=d*b[1],a[2]=d*b[2],a[3]=e*b[3],a[4]=e*b[4],a[5]=e*b[5],a[6]=b[6],a[7]=b[7],a[8]=b[8],a},l.fromMat2d=function(a,b){return a[0]=b[0],a[1]=b[1],a[2]=0,a[3]=b[2],a[4]=b[3],a[5]=0,a[6]=b[4],a[7]=b[5],a[8]=1,a},l.fromQuat=function(a,b){var c=b[0],d=b[1],e=b[2],f=b[3],g=c+c,h=d+d,i=e+e,j=c*g,k=d*g,l=d*h,m=e*g,n=e*h,o=e*i,p=f*g,q=f*h,r=f*i;return a[0]=1-l-o,a[3]=k-r,a[6]=m+q,a[1]=k+r,a[4]=1-j-o,a[7]=n-p,a[2]=m-q,a[5]=n+p,a[8]=1-j-l,a},l.normalFromMat4=function(a,b){var c=b[0],d=b[1],e=b[2],f=b[3],g=b[4],h=b[5],i=b[6],j=b[7],k=b[8],l=b[9],m=b[10],n=b[11],o=b[12],p=b[13],q=b[14],r=b[15],s=c*h-d*g,t=c*i-e*g,u=c*j-f*g,v=d*i-e*h,w=d*j-f*h,x=e*j-f*i,y=k*p-l*o,z=k*q-m*o,A=k*r-n*o,B=l*q-m*p,C=l*r-n*p,D=m*r-n*q,E=s*D-t*C+u*B+v*A-w*z+x*y;return E?(E=1/E,a[0]=(h*D-i*C+j*B)*E,a[1]=(i*A-g*D-j*z)*E,a[2]=(g*C-h*A+j*y)*E,a[3]=(e*C-d*D-f*B)*E,a[4]=(c*D-e*A+f*z)*E,a[5]=(d*A-c*C-f*y)*E,a[6]=(p*x-q*w+r*v)*E,a[7]=(q*u-o*x-r*t)*E,a[8]=(o*w-p*u+r*s)*E,a):null},l.str=function(a){return"mat3("+a[0]+", "+a[1]+", "+a[2]+", "+a[3]+", "+a[4]+", "+a[5]+", "+a[6]+", "+a[7]+", "+a[8]+")"},l.frob=function(a){return Math.sqrt(Math.pow(a[0],2)+Math.pow(a[1],2)+Math.pow(a[2],2)+Math.pow(a[3],2)+Math.pow(a[4],2)+Math.pow(a[5],2)+Math.pow(a[6],2)+Math.pow(a[7],2)+Math.pow(a[8],2))},"undefined"!=typeof a&&(a.mat3=l);var m={};m.create=function(){var a=new c(16);return a[0]=1,a[1]=0,a[2]=0,a[3]=0,a[4]=0,a[5]=1,a[6]=0,a[7]=0,a[8]=0,a[9]=0,a[10]=1,a[11]=0,a[12]=0,a[13]=0,a[14]=0,a[15]=1,a},m.clone=function(a){var b=new c(16);return b[0]=a[0],b[1]=a[1],b[2]=a[2],b[3]=a[3],b[4]=a[4],b[5]=a[5],b[6]=a[6],b[7]=a[7],b[8]=a[8],b[9]=a[9],b[10]=a[10],b[11]=a[11],b[12]=a[12],b[13]=a[13],b[14]=a[14],b[15]=a[15],b},m.copy=function(a,b){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],a},m.identity=function(a){return a[0]=1,a[1]=0,a[2]=0,a[3]=0,a[4]=0,a[5]=1,a[6]=0,a[7]=0,a[8]=0,a[9]=0,a[10]=1,a[11]=0,a[12]=0,a[13]=0,a[14]=0,a[15]=1,a},m.transpose=function(a,b){if(a===b){var c=b[1],d=b[2],e=b[3],f=b[6],g=b[7],h=b[11];a[1]=b[4],a[2]=b[8],a[3]=b[12],a[4]=c,a[6]=b[9],a[7]=b[13],a[8]=d,a[9]=f,a[11]=b[14],a[12]=e,a[13]=g,a[14]=h}else a[0]=b[0],a[1]=b[4],a[2]=b[8],a[3]=b[12],a[4]=b[1],a[5]=b[5],a[6]=b[9],a[7]=b[13],a[8]=b[2],a[9]=b[6],a[10]=b[10],a[11]=b[14],a[12]=b[3],a[13]=b[7],a[14]=b[11],a[15]=b[15];return a},m.invert=function(a,b){var c=b[0],d=b[1],e=b[2],f=b[3],g=b[4],h=b[5],i=b[6],j=b[7],k=b[8],l=b[9],m=b[10],n=b[11],o=b[12],p=b[13],q=b[14],r=b[15],s=c*h-d*g,t=c*i-e*g,u=c*j-f*g,v=d*i-e*h,w=d*j-f*h,x=e*j-f*i,y=k*p-l*o,z=k*q-m*o,A=k*r-n*o,B=l*q-m*p,C=l*r-n*p,D=m*r-n*q,E=s*D-t*C+u*B+v*A-w*z+x*y;return E?(E=1/E,a[0]=(h*D-i*C+j*B)*E,a[1]=(e*C-d*D-f*B)*E,a[2]=(p*x-q*w+r*v)*E,a[3]=(m*w-l*x-n*v)*E,a[4]=(i*A-g*D-j*z)*E,a[5]=(c*D-e*A+f*z)*E,a[6]=(q*u-o*x-r*t)*E,a[7]=(k*x-m*u+n*t)*E,a[8]=(g*C-h*A+j*y)*E,a[9]=(d*A-c*C-f*y)*E,a[10]=(o*w-p*u+r*s)*E,a[11]=(l*u-k*w-n*s)*E,a[12]=(h*z-g*B-i*y)*E,a[13]=(c*B-d*z+e*y)*E,a[14]=(p*t-o*v-q*s)*E,a[15]=(k*v-l*t+m*s)*E,a):null},m.adjoint=function(a,b){var c=b[0],d=b[1],e=b[2],f=b[3],g=b[4],h=b[5],i=b[6],j=b[7],k=b[8],l=b[9],m=b[10],n=b[11],o=b[12],p=b[13],q=b[14],r=b[15];return a[0]=h*(m*r-n*q)-l*(i*r-j*q)+p*(i*n-j*m),a[1]=-(d*(m*r-n*q)-l*(e*r-f*q)+p*(e*n-f*m)),a[2]=d*(i*r-j*q)-h*(e*r-f*q)+p*(e*j-f*i),a[3]=-(d*(i*n-j*m)-h*(e*n-f*m)+l*(e*j-f*i)),a[4]=-(g*(m*r-n*q)-k*(i*r-j*q)+o*(i*n-j*m)),a[5]=c*(m*r-n*q)-k*(e*r-f*q)+o*(e*n-f*m),a[6]=-(c*(i*r-j*q)-g*(e*r-f*q)+o*(e*j-f*i)),a[7]=c*(i*n-j*m)-g*(e*n-f*m)+k*(e*j-f*i),a[8]=g*(l*r-n*p)-k*(h*r-j*p)+o*(h*n-j*l),a[9]=-(c*(l*r-n*p)-k*(d*r-f*p)+o*(d*n-f*l)),a[10]=c*(h*r-j*p)-g*(d*r-f*p)+o*(d*j-f*h),a[11]=-(c*(h*n-j*l)-g*(d*n-f*l)+k*(d*j-f*h)),a[12]=-(g*(l*q-m*p)-k*(h*q-i*p)+o*(h*m-i*l)),a[13]=c*(l*q-m*p)-k*(d*q-e*p)+o*(d*m-e*l),a[14]=-(c*(h*q-i*p)-g*(d*q-e*p)+o*(d*i-e*h)),a[15]=c*(h*m-i*l)-g*(d*m-e*l)+k*(d*i-e*h),a},m.determinant=function(a){var b=a[0],c=a[1],d=a[2],e=a[3],f=a[4],g=a[5],h=a[6],i=a[7],j=a[8],k=a[9],l=a[10],m=a[11],n=a[12],o=a[13],p=a[14],q=a[15],r=b*g-c*f,s=b*h-d*f,t=b*i-e*f,u=c*h-d*g,v=c*i-e*g,w=d*i-e*h,x=j*o-k*n,y=j*p-l*n,z=j*q-m*n,A=k*p-l*o,B=k*q-m*o,C=l*q-m*p;return r*C-s*B+t*A+u*z-v*y+w*x},m.multiply=function(a,b,c){var d=b[0],e=b[1],f=b[2],g=b[3],h=b[4],i=b[5],j=b[6],k=b[7],l=b[8],m=b[9],n=b[10],o=b[11],p=b[12],q=b[13],r=b[14],s=b[15],t=c[0],u=c[1],v=c[2],w=c[3];return a[0]=t*d+u*h+v*l+w*p,a[1]=t*e+u*i+v*m+w*q,a[2]=t*f+u*j+v*n+w*r,a[3]=t*g+u*k+v*o+w*s,t=c[4],u=c[5],v=c[6],w=c[7],a[4]=t*d+u*h+v*l+w*p,a[5]=t*e+u*i+v*m+w*q,a[6]=t*f+u*j+v*n+w*r,a[7]=t*g+u*k+v*o+w*s,t=c[8],u=c[9],v=c[10],w=c[11],a[8]=t*d+u*h+v*l+w*p,a[9]=t*e+u*i+v*m+w*q,a[10]=t*f+u*j+v*n+w*r,a[11]=t*g+u*k+v*o+w*s,t=c[12],u=c[13],v=c[14],w=c[15],a[12]=t*d+u*h+v*l+w*p,a[13]=t*e+u*i+v*m+w*q,a[14]=t*f+u*j+v*n+w*r,a[15]=t*g+u*k+v*o+w*s,a},m.mul=m.multiply,m.translate=function(a,b,c){var d,e,f,g,h,i,j,k,l,m,n,o,p=c[0],q=c[1],r=c[2];return b===a?(a[12]=b[0]*p+b[4]*q+b[8]*r+b[12],a[13]=b[1]*p+b[5]*q+b[9]*r+b[13],a[14]=b[2]*p+b[6]*q+b[10]*r+b[14],a[15]=b[3]*p+b[7]*q+b[11]*r+b[15]):(d=b[0],e=b[1],f=b[2],g=b[3],h=b[4],i=b[5],j=b[6],k=b[7],l=b[8],m=b[9],n=b[10],o=b[11],a[0]=d,a[1]=e,a[2]=f,a[3]=g,a[4]=h,a[5]=i,a[6]=j,a[7]=k,a[8]=l,a[9]=m,a[10]=n,a[11]=o,a[12]=d*p+h*q+l*r+b[12],a[13]=e*p+i*q+m*r+b[13],a[14]=f*p+j*q+n*r+b[14],a[15]=g*p+k*q+o*r+b[15]),a},m.scale=function(a,b,c){var d=c[0],e=c[1],f=c[2];return a[0]=b[0]*d,a[1]=b[1]*d,a[2]=b[2]*d,a[3]=b[3]*d,a[4]=b[4]*e,a[5]=b[5]*e,a[6]=b[6]*e,a[7]=b[7]*e,a[8]=b[8]*f,a[9]=b[9]*f,a[10]=b[10]*f,a[11]=b[11]*f,a[12]=b[12],a[13]=b[13],a[14]=b[14],a[15]=b[15],a},m.rotate=function(a,c,d,e){var f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z,A,B,C,D=e[0],E=e[1],F=e[2],G=Math.sqrt(D*D+E*E+F*F);return Math.abs(G)g?(h.cross(a,b,e),h.length(a)<1e-6&&h.cross(a,c,e),h.normalize(a,a),n.setAxisAngle(d,a,Math.PI),d):g>.999999?(d[0]=0,d[1]=0,d[2]=0,d[3]=1,d):(h.cross(a,e,f),d[0]=a[0],d[1]=a[1],d[2]=a[2],d[3]=1+g,n.normalize(d,d))}}(),n.setAxes=function(){var a=l.create();return function(b,c,d,e){return a[0]=d[0],a[3]=d[1],a[6]=d[2],a[1]=e[0],a[4]=e[1],a[7]=e[2],a[2]=-c[0],a[5]=-c[1],a[8]=-c[2],n.normalize(b,n.fromMat3(b,a))}}(),n.clone=i.clone,n.fromValues=i.fromValues,n.copy=i.copy,n.set=i.set,n.identity=function(a){return a[0]=0,a[1]=0,a[2]=0,a[3]=1,a},n.setAxisAngle=function(a,b,c){c=.5*c;var d=Math.sin(c);return a[0]=d*b[0],a[1]=d*b[1],a[2]=d*b[2],a[3]=Math.cos(c),a},n.add=i.add,n.multiply=function(a,b,c){var d=b[0],e=b[1],f=b[2],g=b[3],h=c[0],i=c[1],j=c[2],k=c[3];return a[0]=d*k+g*h+e*j-f*i,a[1]=e*k+g*i+f*h-d*j,a[2]=f*k+g*j+d*i-e*h,a[3]=g*k-d*h-e*i-f*j,a},n.mul=n.multiply,n.scale=i.scale,n.rotateX=function(a,b,c){c*=.5;var d=b[0],e=b[1],f=b[2],g=b[3],h=Math.sin(c),i=Math.cos(c);return a[0]=d*i+g*h,a[1]=e*i+f*h,a[2]=f*i-e*h,a[3]=g*i-d*h,a},n.rotateY=function(a,b,c){c*=.5;var d=b[0],e=b[1],f=b[2],g=b[3],h=Math.sin(c),i=Math.cos(c);return a[0]=d*i-f*h,a[1]=e*i+g*h,a[2]=f*i+d*h,a[3]=g*i-e*h,a},n.rotateZ=function(a,b,c){c*=.5;var d=b[0],e=b[1],f=b[2],g=b[3],h=Math.sin(c),i=Math.cos(c);return a[0]=d*i+e*h,a[1]=e*i-d*h,a[2]=f*i+g*h,a[3]=g*i-f*h,a},n.calculateW=function(a,b){var c=b[0],d=b[1],e=b[2];return a[0]=c,a[1]=d,a[2]=e,a[3]=Math.sqrt(Math.abs(1-c*c-d*d-e*e)),a},n.dot=i.dot,n.lerp=i.lerp,n.slerp=function(a,b,c,d){var e,f,g,h,i,j=b[0],k=b[1],l=b[2],m=b[3],n=c[0],o=c[1],p=c[2],q=c[3];return f=j*n+k*o+l*p+m*q,0>f&&(f=-f,n=-n,o=-o,p=-p,q=-q),1-f>1e-6?(e=Math.acos(f),g=Math.sin(e),h=Math.sin((1-d)*e)/g,i=Math.sin(d*e)/g):(h=1-d,i=d),a[0]=h*j+i*n,a[1]=h*k+i*o,a[2]=h*l+i*p,a[3]=h*m+i*q,a},n.invert=function(a,b){var c=b[0],d=b[1],e=b[2],f=b[3],g=c*c+d*d+e*e+f*f,h=g?1/g:0;return a[0]=-c*h,a[1]=-d*h,a[2]=-e*h,a[3]=f*h,a},n.conjugate=function(a,b){return a[0]=-b[0],a[1]=-b[1],a[2]=-b[2],a[3]=b[3],a},n.length=i.length,n.len=n.length,n.squaredLength=i.squaredLength,n.sqrLen=n.squaredLength,n.normalize=i.normalize,n.fromMat3=function(a,b){var c,d=b[0]+b[4]+b[8];if(d>0)c=Math.sqrt(d+1),a[3]=.5*c,c=.5/c,a[0]=(b[5]-b[7])*c,a[1]=(b[6]-b[2])*c,a[2]=(b[1]-b[3])*c;else{var e=0;b[4]>b[0]&&(e=1),b[8]>b[3*e+e]&&(e=2);var f=(e+1)%3,g=(e+2)%3;c=Math.sqrt(b[3*e+e]-b[3*f+f]-b[3*g+g]+1),a[e]=.5*c,c=.5/c,a[3]=(b[3*f+g]-b[3*g+f])*c,a[f]=(b[3*f+e]+b[3*e+f])*c,a[g]=(b[3*g+e]+b[3*e+g])*c}return a},n.str=function(a){return"quat("+a[0]+", "+a[1]+", "+a[2]+", "+a[3]+")"},"undefined"!=typeof a&&(a.quat=n)}(b.exports)}(this);var Q_X=0,Q_Y=1,Q_Z=2,Q_W=3;dualQuat.prototype.reset=function(){quat.identity(this.real),this.real[Q_W]=0,quat.identity(this.imaginary),this.imaginary[Q_W]=0,quat.identity(this.tmpQ1)},dualQuat.prototype.createFromData=function(a,b){this.real=a,this.imaginary=quat.create(),this.imaginary[Q_W]=-.5*(b[Q_X]*a[Q_X]+b[Q_Y]*a[Q_Y]+b[Q_Z]*a[Q_Z]),this.imaginary[Q_X]=.5*(b[Q_X]*a[Q_W]+b[Q_Y]*a[Q_Z]-b[Q_Z]*a[Q_Y]),this.imaginary[Q_Y]=.5*(-b[Q_X]*a[Q_Z]+b[Q_Y]*a[Q_W]+b[Q_Z]*a[Q_X]),this.imaginary[Q_Z]=.5*(b[Q_X]*a[Q_Y]-b[Q_Y]*a[Q_X]+b[Q_Z]*a[Q_W])},dualQuat.prototype.add=function(a,b,c){quat.copy(this.tmpQ1,a.real),quat.scale(this.tmpQ1,this.tmpQ1,b),quat.add(this.real,this.tmpQ1,this.real),quat.copy(this.tmpQ1,a.imaginary), quat.scale(this.tmpQ1,this.tmpQ1,c),quat.add(this.imaginary,this.tmpQ1,this.imaginary)},dualQuat.prototype.normalize=function(){var a=quat.length(this.real);this.real=quat.scale(this.real,this.real,1/a),this.imaginary=quat.scale(this.imaginary,this.imaginary,1/a)};var v0=vec3.create(),ve=vec3.create(),trans=vec3.create(),tmpVec1=vec3.create(),tmpVec2=vec3.create(),tmpVec0=vec3.create(),aVec=vec3.create(),rot=vec3.create();dualQuat.prototype.transform=function(a){return v0[Q_X]=this.real[Q_X],v0[Q_Y]=this.real[Q_Y],v0[Q_Z]=this.real[Q_Z],ve[Q_X]=this.imaginary[Q_X],ve[Q_Y]=this.imaginary[Q_Y],ve[Q_Z]=this.imaginary[Q_Z],tmpVec1=vec3.scale(tmpVec1,v0,this.imaginary[Q_W]),tmpVec2=vec3.cross(tmpVec2,v0,ve),tmpVec0=vec3.scale(tmpVec0,ve,this.real[Q_W]),aVec=vec3.subtract(aVec,tmpVec0,tmpVec1),trans=vec3.add(trans,aVec,tmpVec2),trans=vec3.scale(trans,trans,2),rot=vec3.transformQuat(rot,a,this.real),rot=vec3.add(rot,rot,trans)};var Utils={};Utils.setAxisMatrix=function(a,b,c){var d=mat4.create(),e=0,f=4,g=8,h=12,i=1,j=5,k=9,l=13,m=2,n=6,o=10,p=14,q=3,r=7,s=11,t=15;return d[e]=a[Q_X],d[f]=a[Q_Y],d[g]=a[Q_Z],d[i]=b[Q_X],d[j]=b[Q_Y],d[k]=b[Q_Z],d[m]=c[Q_X],d[n]=c[Q_Y],d[o]=c[Q_Z],d[h]=0,d[l]=0,d[p]=0,d[q]=0,d[r]=0,d[s]=0,d[t]=1,d=mat4.transpose(d,d)},Utils.matrixToQuat=function(a){var b,c=quat.create(),d=a,e=d[0],f=d[4],g=d[8],h=d[1],i=d[5],j=d[9],k=d[2],l=d[6],m=d[10],n=e+i+m;return n>0?(b=.5/Math.sqrt(n+1),c[Q_W]=.25/b,c[Q_X]=(l-j)*b,c[Q_Y]=(g-k)*b,c[Q_Z]=(h-f)*b):e>i&&e>m?(b=2*Math.sqrt(1+e-i-m),c[Q_W]=(l-j)/b,c[Q_X]=.25*b,c[Q_Y]=(f+h)/b,c[Q_Z]=(g+k)/b):i>m?(b=2*Math.sqrt(1+i-e-m),c[Q_W]=(g-k)/b,c[Q_X]=(f+h)/b,c[Q_Y]=.25*b,c[Q_Z]=(j+l)/b):(b=2*Math.sqrt(1+m-e-i),c[Q_W]=(h-f)/b,c[Q_X]=(g+k)/b,c[Q_Y]=(j+l)/b,c[Q_Z]=.25*b),c},Utils.rotateVec_90=function(a){var b=vec3.fromValues(-a[Q_Y],a[Q_X],a[Q_Z]);return b},Utils.calcRotateMat=function(a){var b=vec3.clone(a);b=vec3.normalize(b,b);var c=Utils.rotateVec_90(b),d=vec3.fromValues(b[Q_X],b[Q_Y],0),e=vec3.fromValues(c[Q_X],c[Q_Y],0),f=vec3.fromValues(0,0,1),g=mat4.create();return g=Utils.setAxisMatrix(d,e,f)},Utils.getMatTranslate=function(a){var b=vec3.create();return b[Q_X]=a[12],b[Q_Y]=a[13],b[Q_Z]=a[14],b},Utils.addMat=function(a,b){for(var c=mat4.create(),d=0;16>d;d++)c[d]=a[d]+b[d];return c},Utils.mulMat=function(a,b){for(var c=mat4.create(),d=0;16>d;d++)c[d]=a[d]*b;return c},Utils.clamp=function(a,b,c){return b>a?b:a>c?c:a};var newVec1=vec3.create(),newVec2=vec3.create();Utils.vecInterp=function(a,b,c){newVec1=vec3.scale(newVec1,a,1-c),newVec2=vec3.scale(newVec2,b,c);var d=vec3.create();return d=vec3.add(d,newVec1,newVec2)},Utils.vec2Interp=function(a,b,c){var d=vec2.create(),e=vec2.create();d=vec2.scale(d,a,1-c),e=vec2.scale(e,b,c);var f=vec2.create();return f=vec2.add(f,d,e)},MeshBone.prototype.setRestParentMat=function(a,b){this.rest_parent_mat=a,null==b?(this.rest_parent_inv_mat=mat4.clone(this.rest_parent_mat),mat4.invert(this.rest_parent_inv_mat,this.rest_parent_inv_mat)):this.rest_parent_inv_mat=mat4.clone(b)},MeshBone.prototype.setParentWorldMat=function(a){this.parent_world_mat=a},MeshBone.prototype.setParentWorldInvMat=function(a){this.parent_world_inv_mat=a},MeshBone.prototype.getLocalRestStartPt=function(){return this.local_rest_start_pt},MeshBone.prototype.getLocalRestEndPt=function(){return this.local_rest_end_pt},MeshBone.prototype.setLocalRestStartPt=function(a){this.local_rest_start_pt=vec3.create(),this.local_rest_start_pt=vec3.transformMat4(this.local_rest_start_pt,a,this.rest_parent_inv_mat),this.calcRestData()},MeshBone.prototype.setLocalRestEndPt=function(a){this.local_rest_end_pt=vec3.create(),this.local_rest_end_pt=vec3.transformMat4(this.local_rest_end_pt,a,this.rest_parent_inv_mat),this.calcRestData()},MeshBone.prototype.calcRestData=function(){if(null!=this.local_rest_start_pt&&null!=this.local_rest_end_pt){var a=this.computeDirs(this.local_rest_start_pt,this.local_rest_end_pt);this.local_rest_dir=a.first,this.local_rest_normal_dir=a.second,this.computeRestLength()}},MeshBone.prototype.setWorldStartPt=function(a){this.world_start_pt=a},MeshBone.prototype.setWorldEndPt=function(a){this.world_end_pt=a},MeshBone.prototype.fixDQs=function(a){quat.dot(this.world_dq.real,a.real)<0&&(this.world_dq.real=quat.scale(this.world_dq.real,this.world_dq.real,-1),this.world_dq.imaginary=quat.scale(this.world_dq.imaginary,this.world_dq.imaginary,-1));for(var b=0;bf;f++)accum_mat[f]=0;for(var g=Object.keys(c),f=(g.length,0),h=this.getNumPts();h>f;f++){var i=vec3.set(tmp1,this.store_rest_pts[0+d],this.store_rest_pts[1+d],this.store_rest_pts[2+d]);1==this.use_local_displacements&&(i[Q_X]+=this.local_displacements[f][Q_X],i[Q_Y]+=this.local_displacements[f][Q_Y]);for(var j=0;16>j;j++)accum_mat[j]=0;accum_dq.reset();for(var k=this.relevant_bones_indices[f],l=k.length,j=0;l>j;j++){var m=k[j],n=this.fast_bones_map[m],o=this.fast_normal_weight_map[m][f],p=o,q=n.getWorldDq();accum_dq.add(q,o,p)}accum_dq.normalize();var r=vec3.set(tmp2,i[Q_X],i[Q_Y],i[Q_Z]);final_pt=accum_dq.transform(r),1==this.use_post_displacements&&(final_pt[Q_X]+=this.post_displacements[f][Q_X],final_pt[Q_Y]+=this.post_displacements[f][Q_Y]),a[0+e]=final_pt[Q_X],a[1+e]=final_pt[Q_Y],a[2+e]=final_pt[Q_Z],d+=3,e+=3}1==this.use_uv_warp&&this.runUvWarp()},MeshRenderRegion.prototype.setMainBoneKey=function(a){this.main_bone_key=a},MeshRenderRegion.prototype.determineMainBone=function(a){this.main_bone=a.getChildByKey(this.main_bone_key)},MeshRenderRegion.prototype.setUseDq=function(a){this.use_dq=a},MeshRenderRegion.prototype.setName=function(a){this.name=a},MeshRenderRegion.prototype.getName=function(){return this.name},MeshRenderRegion.prototype.setUseLocalDisplacements=function(a){if(this.use_local_displacements=a,this.local_displacements.length!=this.getNumPts()&&this.use_local_displacements){this.local_displacements=[];for(var b=0;bd&&f.push(g)}this.relevant_bones_indices.push(f)}for(var b in a){var i=a[b];this.fast_bones_map.push(i)}},MeshRenderRegion.prototype.initUvWarp=function(){var a=this.getUVsIndex();this.uv_warp_ref_uvs=[];for(var b=0;bd;d++)this.bone_cache_table.push([]),this.bone_cache_data_ready.push(!1);this.is_ready=!1},MeshBoneCacheManager.prototype.getStartTime=function(){return this.start_time},MeshBoneCacheManager.prototype.getEndime=function(){return this.end_time},MeshBoneCacheManager.prototype.getIndexByTime=function(a){var b=a-this.start_time;return b=Utils.clamp(b,0,this.bone_cache_table.length-1)},MeshBoneCacheManager.prototype.retrieveValuesAtTime=function(a,b){var c=this.getIndexByTime(Math.floor(a)),d=this.getIndexByTime(Math.ceil(a)),e=a-Math.floor(a);if(0!=this.bone_cache_data_ready.length&&0!=this.bone_cache_data_ready[c]&&0!=this.bone_cache_data_ready[d])for(var f=this.bone_cache_table[c],g=this.bone_cache_table[d],h=0,i=f.length;i>h;h++){var j=f[h],k=g[h],l=j.getKey(),m=Utils.vecInterp(j.getWorldStartPt(),k.getWorldStartPt(),e),n=Utils.vecInterp(j.getWorldEndPt(),k.getWorldEndPt(),e);b[l].setWorldStartPt(m),b[l].setWorldEndPt(n)}},MeshBoneCacheManager.prototype.allReady=function(){if(this.is_ready)return!0;for(var a=this.end_time-this.start_time+1,b=0,c=0;cd;d++)this.displacement_cache_table.push([]),this.displacement_cache_data_ready.push(!1);this.is_ready=!1},MeshDisplacementCacheManager.prototype.getStartTime=function(){return this.start_time},MeshDisplacementCacheManager.prototype.getEndime=function(){return this.end_time},MeshDisplacementCacheManager.prototype.getIndexByTime=function(a){var b=a-this.start_time;return b=Utils.clamp(b,0,this.displacement_cache_table.length-1)},MeshDisplacementCacheManager.prototype.retrieveValuesAtTime=function(a,b){var c=this.getIndexByTime(Math.floor(a)),d=this.getIndexByTime(Math.ceil(a)),e=a-Math.floor(a);if(0!=this.displacement_cache_data_ready.length&&0!=this.displacement_cache_data_ready[c]&&0!=this.displacement_cache_data_ready[d])for(var f=this.displacement_cache_table[c],g=this.displacement_cache_table[d],h=0;hd;d++)this.uv_cache_table.push([]),this.uv_cache_data_ready.push(!1);this.is_ready=!1},MeshUVWarpCacheManager.prototype.getStartTime=function(){return this.start_time},MeshUVWarpCacheManager.prototype.getEndime=function(){return this.end_time},MeshUVWarpCacheManager.prototype.getIndexByTime=function(a){var b=a-this.start_time;return b=Utils.clamp(b,0,this.uv_cache_table.length-1)},MeshUVWarpCacheManager.prototype.retrieveValuesAtTime=function(a,b){var c=this.getIndexByTime(Math.floor(a)),d=this.getIndexByTime(Math.ceil(a));a-Math.floor(a);if(0!=this.uv_cache_data_ready.length&&0!=this.uv_cache_data_ready[c]&&0!=this.uv_cache_data_ready[d])for(var e=this.uv_cache_table[c],f=this.uv_cache_table[d],g=0;gf;f++){var g=2*f;d.push(vec2.fromValues(c[0+g],c[1+g]))}return d},CreatureModuleUtils.ReadFloatArray3DJSON=function(a,b){for(var c=CreatureModuleUtils.getFloatArray(a[b]),d=[],e=c.length/2,f=0;e>f;f++){var g=2*f;d.push(c[0+g]),d.push(c[1+g]),d.push(0)}return d},CreatureModuleUtils.ReadBoolJSON=function(a,b){var c=a[b];return c},CreatureModuleUtils.ReadFloatArrayJSON=function(a,b){return a[b]},CreatureModuleUtils.ReadIntArrayJSON=function(a,b){return a[b]},CreatureModuleUtils.ReadMatrixJSON=function(a,b){for(var c=CreatureModuleUtils.getFloatArray(a[b]),d=mat4.create(),e=0;16>e;e++)d[e]=c[e];return d},CreatureModuleUtils.ReadVector2JSON=function(a,b){var c=CreatureModuleUtils.getFloatArray(a[b]);return vec2.fromValues(c[0],c[1])},CreatureModuleUtils.ReadVector3JSON=function(a,b){var c=CreatureModuleUtils.getFloatArray(a[b]);return vec3.fromValues(c[0],c[1],0)},CreatureModuleUtils.CreateBones=function(a,b){var c=null,d=a[b],e={},f={};for(var g in d){var h=d[g],i=h.id,j=CreatureModuleUtils.ReadMatrixJSON(h,"restParentMat"),k=CreatureModuleUtils.ReadVector3JSON(h,"localRestStartPt"),l=CreatureModuleUtils.ReadVector3JSON(h,"localRestEndPt"),m=CreatureModuleUtils.ReadIntArrayJSON(h,"children"),n=new MeshBone(g,vec3.create(),vec3.create(),j);n.local_rest_start_pt=k,n.local_rest_end_pt=l,n.calcRestData(),n.setTagId(i),e[i]={first:n,second:m};for(var o=0;od&&(d=h),c>h&&(c=h))}return{first:c,second:d}},CreatureModuleUtils.FillBoneCache=function(a,b,c,d,e){var f=a[b];e.init(c,d);for(var g in f){var h=f[g];cache_list=[];for(var i in h){var j=h[i],k=CreatureModuleUtils.ReadVector3JSON(j,"start_pt"),l=CreatureModuleUtils.ReadVector3JSON(j,"end_pt"),m=new MeshBoneCache(i);m.setWorldStartPt(k),m.setWorldEndPt(l),cache_list.push(m)}var n=e.getIndexByTime(g);e.bone_cache_table[n]=cache_list}e.makeAllReady()},CreatureModuleUtils.FillDeformationCache=function(a,b,c,d,e){var f=a[b];e.init(c,d);for(var g in f){var h=f[g],i=[];for(var j in h){var k=h[j],l=new MeshDisplacementCache(j),m=CreatureModuleUtils.ReadBoolJSON(k,"use_local_displacements"),n=CreatureModuleUtils.ReadBoolJSON(k,"use_post_displacements");if(1==m){var o=CreatureModuleUtils.ReadPointsArray2DJSON(k,"local_displacements");l.setLocalDisplacements(o)}if(1==n){var o=CreatureModuleUtils.ReadPointsArray2DJSON(k,"post_displacements");l.setPostDisplacements(o)}i.push(l)}var p=e.getIndexByTime(g);e.displacement_cache_table[p]=i}e.makeAllReady()},CreatureModuleUtils.FillUVSwapCache=function(a,b,c,d,e){var f=a[b];e.init(c,d);for(var g in f){var h=f[g],i=[];for(var j in h){var k=h[j],l=new MeshUVWarpCache(j),m=CreatureModuleUtils.ReadBoolJSON(k,"enabled");if(l.setEnabled(m),1==m){var n=CreatureModuleUtils.ReadVector2JSON(k,"local_offset"),o=CreatureModuleUtils.ReadVector2JSON(k,"global_offset"),p=CreatureModuleUtils.ReadVector2JSON(k,"scale");l.setUvWarpLocalOffset(n),l.setUvWarpGlobalOffset(o),l.setUvWarpScale(p)}i.push(l)}var q=e.getIndexByTime(g);e.uv_cache_table[q]=i}e.makeAllReady()},Creature.prototype.FillRenderColours=function(a,b,c,d){for(var e=0;e=h&&i>=d){e=!0;break}}e&&a[d]++}this.boundary_indices=[];for(var b=0;bf&&(b[0]=f),b[1]>g&&(b[1]=g),c[0]m;m++)g[j+0]=(1-f)*h[k+0]+f*i[l+0],g[j+1]=(1-f)*h[k+1]+f*i[l+1],g[j+2]=(1-f)*h[k+2]+f*i[l+2],j+=3,k+=3,l+=3},CreatureManager.prototype.CreateAnimation=function(a,b){var c=new CreatureAnimation(a,b);this.AddAnimation(c)},CreatureManager.prototype.CreateAllAnimations=function(a){for(var b=CreatureModuleUtils.GetAllAnimationNames(a),c=0;c=0&&1>=i&&j>=0&&1>=j}},{"./Scalar":4}],2:[function(a,b,c){function d(){}b.exports=d,d.area=function(a,b,c){return(b[0]-a[0])*(c[1]-a[1])-(c[0]-a[0])*(b[1]-a[1])},d.left=function(a,b,c){return d.area(a,b,c)>0},d.leftOn=function(a,b,c){return d.area(a,b,c)>=0},d.right=function(a,b,c){return d.area(a,b,c)<0},d.rightOn=function(a,b,c){return d.area(a,b,c)<=0};var e=[],f=[];d.collinear=function(a,b,c,g){if(g){var h=e,i=f;h[0]=b[0]-a[0],h[1]=b[1]-a[1],i[0]=c[0]-b[0],i[1]=c[1]-b[1];var j=h[0]*i[0]+h[1]*i[1],k=Math.sqrt(h[0]*h[0]+h[1]*h[1]),l=Math.sqrt(i[0]*i[0]+i[1]*i[1]),m=Math.acos(j/(k*l));return g>m}return 0==d.area(a,b,c)},d.sqdist=function(a,b){var c=b[0]-a[0],d=b[1]-a[1];return c*c+d*d}},{}],3:[function(a,b,c){function d(){this.vertices=[]}function e(a,b,c,d,e){e=e||0;var f=b[1]-a[1],g=a[0]-b[0],i=f*a[0]+g*a[1],j=d[1]-c[1],k=c[0]-d[0],l=j*c[0]+k*c[1],m=f*k-j*g;return h.eq(m,0,e)?[0,0]:[(k*i-g*l)/m,(f*l-j*i)/m]}var f=a("./Line"),g=a("./Point"),h=a("./Scalar");b.exports=d,d.prototype.at=function(a){var b=this.vertices,c=b.length;return b[0>a?a%c+c:a%c]},d.prototype.first=function(){return this.vertices[0]},d.prototype.last=function(){return this.vertices[this.vertices.length-1]},d.prototype.clear=function(){this.vertices.length=0},d.prototype.append=function(a,b,c){if("undefined"==typeof b)throw new Error("From is not given!");if("undefined"==typeof c)throw new Error("To is not given!");if(b>c-1)throw new Error("lol1");if(c>a.vertices.length)throw new Error("lol2");if(0>b)throw new Error("lol3");for(var d=b;c>d;d++)this.vertices.push(a.vertices[d])},d.prototype.makeCCW=function(){for(var a=0,b=this.vertices,c=1;cb[a][0])&&(a=c);g.left(this.at(a-1),this.at(a),this.at(a+1))||this.reverse()},d.prototype.reverse=function(){for(var a=[],b=0,c=this.vertices.length;b!==c;b++)a.push(this.vertices.pop());this.vertices=a},d.prototype.isReflex=function(a){return g.right(this.at(a-1),this.at(a),this.at(a+1))};var i=[],j=[];d.prototype.canSee=function(a,b){var c,d,e=i,h=j;if(g.leftOn(this.at(a+1),this.at(a),this.at(b))&&g.rightOn(this.at(a-1),this.at(a),this.at(b)))return!1;d=g.sqdist(this.at(a),this.at(b));for(var k=0;k!==this.vertices.length;++k)if((k+1)%this.vertices.length!==a&&k!==a&&g.leftOn(this.at(a),this.at(b),this.at(k+1))&&g.rightOn(this.at(a),this.at(b),this.at(k))&&(e[0]=this.at(a),e[1]=this.at(b),h[0]=this.at(k),h[1]=this.at(k+1),c=f.lineInt(e,h),g.sqdist(this.at(a),c)a)for(var f=a;b>=f;f++)e.vertices.push(this.vertices[f]);else{for(var f=0;b>=f;f++)e.vertices.push(this.vertices[f]);for(var f=a;f0?this.slice(a):[this]},d.prototype.slice=function(a){if(0==a.length)return[this];if(a instanceof Array&&a.length&&a[0]instanceof Array&&2==a[0].length&&a[0][0]instanceof Array){for(var b=[this],c=0;cc;c++)if(f.segmentsIntersect(a[b],a[b+1],a[c],a[c+1]))return!1;for(var b=1;bh)return console.warn("quickDecomp: max level ("+h+") reached."),a;for(var x=0;xo&&(n=o,k=l,r=y))),g.left(v.at(x+1),v.at(x),v.at(y+1))&&g.rightOn(v.at(x+1),v.at(x),v.at(y))&&(l=e(v.at(x+1),v.at(x),v.at(y),v.at(y+1)),g.left(v.at(x-1),v.at(x),l)&&(o=g.sqdist(v.vertices[x],l),m>o&&(m=o,j=l,q=y)));if(r==(q+1)%this.vertices.length)l[0]=(k[0]+j[0])/2,l[1]=(k[1]+j[1])/2,c.push(l),q>x?(t.append(v,x,q+1),t.vertices.push(l),u.vertices.push(l),0!=r&&u.append(v,r,v.vertices.length),u.append(v,0,x+1)):(0!=x&&t.append(v,x,v.vertices.length),t.append(v,0,q+1),t.vertices.push(l),u.vertices.push(l),u.append(v,r,x+1));else{if(r>q&&(q+=this.vertices.length),p=Number.MAX_VALUE,r>q)return a;for(var y=r;q>=y;++y)g.leftOn(v.at(x-1),v.at(x),v.at(y))&&g.rightOn(v.at(x+1),v.at(x),v.at(y))&&(o=g.sqdist(v.at(x),v.at(y)),p>o&&(p=o,s=y%this.vertices.length));s>x?(t.append(v,x,s+1),0!=s&&u.append(v,s,w.length),u.append(v,0,x+1)):(0!=x&&t.append(v,x,w.length),t.append(v,0,s+1),u.append(v,s,x+1))}return t.vertices.length3&&c>=0;--c)g.collinear(this.at(c-1),this.at(c),this.at(c+1),a)&&(this.vertices.splice(c%this.vertices.length,1),c--,b++);return b}},{"./Line":1,"./Point":2,"./Scalar":4}],4:[function(a,b,c){function d(){}b.exports=d,d.eq=function(a,b,c){return c=c||0,Math.abs(a-b) (http://steffe.se)",keywords:["p2.js","p2","physics","engine","2d"],main:"./src/p2.js",engines:{node:"*"},repository:{type:"git",url:"https://github.com/schteppe/p2.js.git"},bugs:{url:"https://github.com/schteppe/p2.js/issues"},licenses:[{type:"MIT"}],devDependencies:{grunt:"^0.4.5","grunt-contrib-jshint":"^0.11.2","grunt-contrib-nodeunit":"^0.4.1","grunt-contrib-uglify":"~0.4.0","grunt-contrib-watch":"~0.5.0","grunt-browserify":"~2.0.1","grunt-contrib-concat":"^0.4.0"},dependencies:{"poly-decomp":"0.1.0"}}},{}],7:[function(a,b,c){function d(a){this.lowerBound=e.create(),a&&a.lowerBound&&e.copy(this.lowerBound,a.lowerBound),this.upperBound=e.create(),a&&a.upperBound&&e.copy(this.upperBound,a.upperBound)}var e=a("../math/vec2");a("../utils/Utils");b.exports=d;var f=e.create();d.prototype.setFromPoints=function(a,b,c,d){var g=this.lowerBound,h=this.upperBound;"number"!=typeof c&&(c=0),0!==c?e.rotate(g,a[0],c):e.copy(g,a[0]),e.copy(h,g);for(var i=Math.cos(c),j=Math.sin(c),k=1;ko;o++)l[o]>h[o]&&(h[o]=l[o]),l[o]c&&(this.lowerBound[b]=c);var d=a.upperBound[b];this.upperBound[b]i?-1:h>i?-1:h}},{"../math/vec2":30,"../utils/Utils":57}],8:[function(a,b,c){function d(a){this.type=a,this.result=[],this.world=null,this.boundingVolumeType=d.AABB}var e=a("../math/vec2"),f=a("../objects/Body");b.exports=d,d.AABB=1,d.BOUNDING_CIRCLE=2,d.prototype.setWorld=function(a){this.world=a},d.prototype.getCollisionPairs=function(a){};var g=e.create();d.boundingRadiusCheck=function(a,b){e.sub(g,a.position,b.position);var c=e.squaredLength(g),d=a.boundingRadius+b.boundingRadius;return d*d>=c},d.aabbCheck=function(a,b){return a.getAABB().overlaps(b.getAABB())},d.prototype.boundingVolumeCheck=function(a,b){var c;switch(this.boundingVolumeType){case d.BOUNDING_CIRCLE:c=d.boundingRadiusCheck(a,b);break;case d.AABB:c=d.aabbCheck(a,b);break;default:throw new Error("Bounding volume type not recognized: "+this.boundingVolumeType)}return c},d.canCollide=function(a,b){var c=f.KINEMATIC,d=f.STATIC;return a.type===d&&b.type===d?!1:a.type===c&&b.type===d||a.type===d&&b.type===c?!1:a.type===c&&b.type===c?!1:a.sleepState===f.SLEEPING&&b.sleepState===f.SLEEPING?!1:a.sleepState===f.SLEEPING&&b.type===d||b.sleepState===f.SLEEPING&&a.type===d?!1:!0},d.NAIVE=1,d.SAP=2},{"../math/vec2":30,"../objects/Body":31}],9:[function(a,b,c){function d(){e.call(this,e.NAIVE)}var e=(a("../shapes/Circle"),a("../shapes/Plane"),a("../shapes/Shape"),a("../shapes/Particle"),a("../collision/Broadphase"));a("../math/vec2");b.exports=d,d.prototype=new e,d.prototype.constructor=d,d.prototype.getCollisionPairs=function(a){var b=a.bodies,c=this.result;c.length=0;for(var d=0,f=b.length;d!==f;d++)for(var g=b[d],h=0;d>h;h++){var i=b[h];e.canCollide(g,i)&&this.boundingVolumeCheck(g,i)&&c.push(g,i)}return c},d.prototype.aabbQuery=function(a,b,c){c=c||[];for(var d=a.bodies,e=0;e=r*n)return!1;n=r}return!0}var g=a("../math/vec2"),h=g.sub,i=g.add,j=g.dot,k=(a("../utils/Utils"),a("../utils/ContactEquationPool")),l=a("../utils/FrictionEquationPool"),m=a("../utils/TupleDictionary"),n=a("../equations/Equation"),o=(a("../equations/ContactEquation"),a("../equations/FrictionEquation"),a("../shapes/Circle")),p=a("../shapes/Convex"),q=a("../shapes/Shape"),r=(a("../objects/Body"),a("../shapes/Box"));b.exports=d;var s=g.fromValues(0,1),t=g.fromValues(0,0),u=g.fromValues(0,0),v=g.fromValues(0,0),w=g.fromValues(0,0),x=g.fromValues(0,0),y=g.fromValues(0,0),z=g.fromValues(0,0),A=g.fromValues(0,0),B=g.fromValues(0,0),C=g.fromValues(0,0),D=g.fromValues(0,0),E=g.fromValues(0,0),F=g.fromValues(0,0),G=g.fromValues(0,0),H=g.fromValues(0,0),I=g.fromValues(0,0),J=g.fromValues(0,0),K=g.fromValues(0,0),L=[],M=g.create(),N=g.create();d.prototype.bodiesOverlap=function(a,b){for(var c=M,d=N,e=0,f=a.shapes.length;e!==f;e++){var g=a.shapes[e];a.toWorldFrame(c,g.position);for(var h=0,i=b.shapes.length;h!==i;h++){var j=b.shapes[h];if(b.toWorldFrame(d,j.position),this[g.type|j.type](a,g,c,g.angle+a.angle,b,j,d,j.angle+b.angle,!0))return!0}}return!1},d.prototype.collidedLastStep=function(a,b){var c=0|a.id,d=0|b.id;return!!this.collidingBodiesLastStep.get(c,d)},d.prototype.reset=function(){this.collidingBodiesLastStep.reset();for(var a=this.contactEquations,b=a.length;b--;){var c=a[b],d=c.bodyA.id,e=c.bodyB.id;this.collidingBodiesLastStep.set(d,e,!0)}for(var f=this.contactEquations,g=this.frictionEquations,h=0;hp;p++){g.set(m,(0===p?-1:1)*b.length/2,0),g.rotate(m,m,d),g.add(m,m,c);for(var q=0;2>q;q++){g.set(n,(0===q?-1:1)*h.length/2,0),g.rotate(n,n,j),g.add(n,n,i),this.enableFrictionReduction&&(l=this.enableFriction,this.enableFriction=!1);var r=this.circleCircle(a,b,m,d,f,h,n,j,k,b.radius,h.radius);if(this.enableFrictionReduction&&(this.enableFriction=l),k&&r)return!0;o+=r}}this.enableFrictionReduction&&(l=this.enableFriction,this.enableFriction=!1);var s=S;e(s,b);var t=this.convexCapsule(a,s,c,d,f,h,i,j,k);if(this.enableFrictionReduction&&(this.enableFriction=l),k&&t)return!0;if(o+=t,this.enableFrictionReduction){var l=this.enableFriction;this.enableFriction=!1}e(s,h);var u=this.convexCapsule(f,s,i,j,a,b,c,d,k);return this.enableFrictionReduction&&(this.enableFriction=l),k&&u?!0:(o+=u,this.enableFrictionReduction&&o&&this.enableFriction&&this.frictionEquations.push(this.createFrictionFromAverage(o)),o)},d.prototype[q.LINE|q.LINE]=d.prototype.lineLine=function(a,b,c,d,e,f,g,h,i){return i?!1:0},d.prototype[q.PLANE|q.LINE]=d.prototype.planeLine=function(a,b,c,d,e,f,k,l,m){var n=t,o=u,p=v,q=w,r=x,C=y,D=z,E=A,F=B,G=L,H=0;g.set(n,-f.length/2,0),g.set(o,f.length/2,0),g.rotate(p,n,l),g.rotate(q,o,l),i(p,p,k),i(q,q,k),g.copy(n,p),g.copy(o,q),h(r,o,n),g.normalize(C,r),g.rotate90cw(F,C),g.rotate(E,s,d),G[0]=n,G[1]=o;for(var I=0;IK){if(m)return!0;var M=this.createContactEquation(a,e,b,f);H++,g.copy(M.normalA,E),g.normalize(M.normalA,M.normalA),g.scale(D,E,K),h(M.contactPointA,J,D),h(M.contactPointA,M.contactPointA,a.position),h(M.contactPointB,J,k),i(M.contactPointB,M.contactPointB,k),h(M.contactPointB,M.contactPointB,e.position),this.contactEquations.push(M),this.enableFrictionReduction||this.enableFriction&&this.frictionEquations.push(this.createFrictionFromContact(M))}}return m?!1:(this.enableFrictionReduction||H&&this.enableFriction&&this.frictionEquations.push(this.createFrictionFromAverage(H)),H)},d.prototype[q.PARTICLE|q.CAPSULE]=d.prototype.particleCapsule=function(a,b,c,d,e,f,g,h,i){return this.circleLine(a,b,c,d,e,f,g,h,i,f.radius,0)},d.prototype[q.CIRCLE|q.LINE]=d.prototype.circleLine=function(a,b,c,d,e,f,k,l,m,n,o){var n=n||0,o="undefined"!=typeof o?o:b.radius,p=t,q=u,r=v,s=w,H=x,I=y,J=z,K=A,M=B,N=C,O=D,P=E,Q=F,R=G,S=L;g.set(K,-f.length/2,0),g.set(M,f.length/2,0),g.rotate(N,K,l),g.rotate(O,M,l),i(N,N,k),i(O,O,k),g.copy(K,N),g.copy(M,O),h(I,M,K),g.normalize(J,I),g.rotate90cw(H,J),h(P,c,K);var T=j(P,H);h(s,K,k),h(Q,c,k);var U=o+n;if(Math.abs(T)W&&X>V){if(m)return!0;var Y=this.createContactEquation(a,e,b,f);return g.scale(Y.normalA,p,-1),g.normalize(Y.normalA,Y.normalA),g.scale(Y.contactPointA,Y.normalA,o),i(Y.contactPointA,Y.contactPointA,c),h(Y.contactPointA,Y.contactPointA,a.position),h(Y.contactPointB,r,k),i(Y.contactPointB,Y.contactPointB,k),h(Y.contactPointB,Y.contactPointB,e.position),this.contactEquations.push(Y),this.enableFriction&&this.frictionEquations.push(this.createFrictionFromContact(Y)),1}}S[0]=K,S[1]=M;for(var Z=0;ZQ&&(g.copy(J,B),L=Q,g.scale(A,s,Q),g.add(A,A,B),K=!0)}}if(K){if(m)return!0;var R=this.createContactEquation(a,e,b,j);return g.sub(R.normalA,J,c),g.normalize(R.normalA,R.normalA),g.scale(R.contactPointA,R.normalA,n),i(R.contactPointA,R.contactPointA,c),h(R.contactPointA,R.contactPointA,a.position),h(R.contactPointB,A,k),i(R.contactPointB,R.contactPointB,k),h(R.contactPointB,R.contactPointB,e.position),this.contactEquations.push(R),this.enableFriction&&this.frictionEquations.push(this.createFrictionFromContact(R)),1}if(n>0)for(var N=0;NQ&&(I=Q,g.scale(E,s,Q),g.add(E,E,c),g.copy(H,s),L=!0)}if(L){var R=this.createContactEquation(a,e,b,k);return g.scale(R.normalA,H,-1),g.normalize(R.normalA,R.normalA),g.set(R.contactPointA,0,0),i(R.contactPointA,R.contactPointA,c),h(R.contactPointA,R.contactPointA,a.position),h(R.contactPointB,E,l),i(R.contactPointB,R.contactPointB,l),h(R.contactPointB,R.contactPointB,e.position),this.contactEquations.push(R),this.enableFriction&&this.frictionEquations.push(this.createFrictionFromContact(R)),1}return 0},d.prototype[q.CIRCLE]=d.prototype.circleCircle=function(a,b,c,d,e,f,j,k,l,m,n){var o=t,m=m||b.radius,n=n||f.radius;h(o,c,j);var p=m+n;if(g.squaredLength(o)>Math.pow(p,2))return 0;if(l)return!0;var q=this.createContactEquation(a,e,b,f);return h(q.normalA,j,c),g.normalize(q.normalA,q.normalA),g.scale(q.contactPointA,q.normalA,m),g.scale(q.contactPointB,q.normalA,-n),i(q.contactPointA,q.contactPointA,c),h(q.contactPointA,q.contactPointA,a.position),i(q.contactPointB,q.contactPointB,j),h(q.contactPointB,q.contactPointB,e.position),this.contactEquations.push(q),this.enableFriction&&this.frictionEquations.push(this.createFrictionFromContact(q)),1},d.prototype[q.PLANE|q.CONVEX]=d.prototype[q.PLANE|q.BOX]=d.prototype.planeConvex=function(a,b,c,d,e,f,k,l,m){var n=t,o=u,p=v,q=0;g.rotate(o,s,d);for(var r=0;r!==f.vertices.length;r++){var w=f.vertices[r];if(g.rotate(n,w,l),i(n,n,k),h(p,n,c),j(p,o)<=0){if(m)return!0;q++;var x=this.createContactEquation(a,e,b,f);h(p,n,c),g.copy(x.normalA,o);var y=j(p,x.normalA);g.scale(p,x.normalA,y),h(x.contactPointB,n,e.position),h(x.contactPointA,n,p),h(x.contactPointA,x.contactPointA,a.position),this.contactEquations.push(x),this.enableFrictionReduction||this.enableFriction&&this.frictionEquations.push(this.createFrictionFromContact(x))}}return this.enableFrictionReduction&&this.enableFriction&&q&&this.frictionEquations.push(this.createFrictionFromAverage(q)),q},d.prototype[q.PARTICLE|q.PLANE]=d.prototype.particlePlane=function(a,b,c,d,e,f,i,k,l){var m=t,n=u;k=k||0,h(m,c,i),g.rotate(n,s,k);var o=j(m,n);if(o>0)return 0;if(l)return!0;var p=this.createContactEquation(e,a,f,b);return g.copy(p.normalA,n),g.scale(m,p.normalA,o),h(p.contactPointA,c,m),h(p.contactPointA,p.contactPointA,e.position),h(p.contactPointB,c,a.position),this.contactEquations.push(p),this.enableFriction&&this.frictionEquations.push(this.createFrictionFromContact(p)),1},d.prototype[q.CIRCLE|q.PARTICLE]=d.prototype.circleParticle=function(a,b,c,d,e,f,j,k,l){var m=t;if(h(m,j,c),g.squaredLength(m)>Math.pow(b.radius,2))return 0;if(l)return!0;var n=this.createContactEquation(a,e,b,f);return g.copy(n.normalA,m),g.normalize(n.normalA,n.normalA),g.scale(n.contactPointA,n.normalA,b.radius),i(n.contactPointA,n.contactPointA,c),h(n.contactPointA,n.contactPointA,a.position),h(n.contactPointB,j,e.position),this.contactEquations.push(n),this.enableFriction&&this.frictionEquations.push(this.createFrictionFromContact(n)),1};var X=new o({radius:1}),Y=g.create(),Z=g.create();g.create();d.prototype[q.PLANE|q.CAPSULE]=d.prototype.planeCapsule=function(a,b,c,d,e,f,h,j,k){var l=Y,m=Z,n=X;g.set(l,-f.length/2,0),g.rotate(l,l,j),i(l,l,h),g.set(m,f.length/2,0),g.rotate(m,m,j),i(m,m,h),n.radius=f.radius;var o;this.enableFrictionReduction&&(o=this.enableFriction,this.enableFriction=!1);var p=this.circlePlane(e,n,l,0,a,b,c,d,k),q=this.circlePlane(e,n,m,0,a,b,c,d,k);if(this.enableFrictionReduction&&(this.enableFriction=o),k)return p||q;var r=p+q;return this.enableFrictionReduction&&r&&this.frictionEquations.push(this.createFrictionFromAverage(r)),r},d.prototype[q.CIRCLE|q.PLANE]=d.prototype.circlePlane=function(a,b,c,d,e,f,k,l,m){var n=a,o=b,p=c,q=e,r=k,w=l;w=w||0;var x=t,y=u,z=v;h(x,p,r),g.rotate(y,s,w);var A=j(y,x);if(A>o.radius)return 0;if(m)return!0;var B=this.createContactEquation(q,n,f,b);return g.copy(B.normalA,y),g.scale(B.contactPointB,B.normalA,-o.radius),i(B.contactPointB,B.contactPointB,p),h(B.contactPointB,B.contactPointB,n.position),g.scale(z,B.normalA,A),h(B.contactPointA,x,z),i(B.contactPointA,B.contactPointA,r),h(B.contactPointA,B.contactPointA,q.position),this.contactEquations.push(B),this.enableFriction&&this.frictionEquations.push(this.createFrictionFromContact(B)),1},d.prototype[q.CONVEX]=d.prototype[q.CONVEX|q.BOX]=d.prototype[q.BOX]=d.prototype.convexConvex=function(a,b,c,e,f,k,l,m,n,o){var p=t,q=u,r=v,s=w,y=x,C=z,D=A,E=B,F=0,o="number"==typeof o?o:0,G=d.findSeparatingAxis(b,c,e,k,l,m,p);if(!G)return 0;h(D,l,c),j(p,D)>0&&g.scale(p,p,-1);var H=d.getClosestEdge(b,e,p,!0),I=d.getClosestEdge(k,m,p);if(-1===H||-1===I)return 0;for(var J=0;2>J;J++){var K=H,L=I,M=b,N=k,O=c,P=l,Q=e,R=m,S=a,T=f;if(0===J){var U;U=K,K=L,L=U,U=M,M=N,N=U,U=O,O=P,P=U,U=Q,Q=R,R=U,U=S,S=T,T=U}for(var V=L;L+2>V;V++){var W=N.vertices[(V+N.vertices.length)%N.vertices.length];g.rotate(q,W,R),i(q,q,P);for(var X=0,Y=K-1;K+2>Y;Y++){var Z=M.vertices[(Y+M.vertices.length)%M.vertices.length],$=M.vertices[(Y+1+M.vertices.length)%M.vertices.length];g.rotate(r,Z,Q),g.rotate(s,$,Q),i(r,r,O),i(s,s,O),h(y,s,r),g.rotate90cw(E,y),g.normalize(E,E),h(D,q,r);var _=j(E,D);(Y===K&&o>=_||Y!==K&&0>=_)&&X++}if(X>=3){if(n)return!0;var aa=this.createContactEquation(S,T,M,N);F++;var Z=M.vertices[K%M.vertices.length],$=M.vertices[(K+1)%M.vertices.length];g.rotate(r,Z,Q),g.rotate(s,$,Q),i(r,r,O),i(s,s,O),h(y,s,r),g.rotate90cw(aa.normalA,y),g.normalize(aa.normalA,aa.normalA),h(D,q,r);var _=j(aa.normalA,D);g.scale(C,aa.normalA,_),h(aa.contactPointA,q,O),h(aa.contactPointA,aa.contactPointA,C),i(aa.contactPointA,aa.contactPointA,O),h(aa.contactPointA,aa.contactPointA,S.position),h(aa.contactPointB,q,P),i(aa.contactPointB,aa.contactPointB,P),h(aa.contactPointB,aa.contactPointB,T.position),this.contactEquations.push(aa),this.enableFrictionReduction||this.enableFriction&&this.frictionEquations.push(this.createFrictionFromContact(aa))}}}return this.enableFrictionReduction&&this.enableFriction&&F&&this.frictionEquations.push(this.createFrictionFromAverage(F)),F};var $=g.fromValues(0,0);d.projectConvexOntoAxis=function(a,b,c,d,e){var f,h,i=null,k=null,l=$;g.rotate(l,d,-c);for(var m=0;mi)&&(i=h),(null===k||k>h)&&(k=h);if(k>i){var n=k;k=i,i=n}var o=j(b,d);g.set(e,k+o,i+o)};var _=g.fromValues(0,0),aa=g.fromValues(0,0),ba=g.fromValues(0,0),ca=g.fromValues(0,0),da=g.fromValues(0,0),ea=g.fromValues(0,0);d.findSeparatingAxis=function(a,b,c,e,f,i,j){var k=null,l=!1,m=!1,n=_,o=aa,p=ba,q=ca,s=da,t=ea;if(a instanceof r&&e instanceof r)for(var u=0;2!==u;u++){var v=a,w=c;1===u&&(v=e,w=i);for(var x=0;2!==x;x++){0===x?g.set(q,0,1):1===x&&g.set(q,1,0),0!==w&&g.rotate(q,q,w),d.projectConvexOntoAxis(a,b,c,q,s),d.projectConvexOntoAxis(e,f,i,q,t);var y=s,z=t,A=!1;s[0]>t[0]&&(z=s,y=t,A=!0);var B=z[0]-y[1];l=0>=B,(null===k||B>k)&&(g.copy(j,q),k=B,m=l)}}else for(var u=0;2!==u;u++){var v=a,w=c;1===u&&(v=e,w=i);for(var x=0;x!==v.vertices.length;x++){g.rotate(o,v.vertices[x],w),g.rotate(p,v.vertices[(x+1)%v.vertices.length],w),h(n,p,o),g.rotate90cw(q,n),g.normalize(q,q),d.projectConvexOntoAxis(a,b,c,q,s),d.projectConvexOntoAxis(e,f,i,q,t);var y=s,z=t,A=!1;s[0]>t[0]&&(z=s,y=t,A=!0);var B=z[0]-y[1];l=0>=B,(null===k||B>k)&&(g.copy(j,q),k=B,m=l)}}return m};var fa=g.fromValues(0,0),ga=g.fromValues(0,0),ha=g.fromValues(0,0);d.getClosestEdge=function(a,b,c,d){var e=fa,f=ga,i=ha;g.rotate(e,c,-b),d&&g.scale(e,e,-1);for(var k=-1,l=a.vertices.length,m=-1,n=0;n!==l;n++){h(f,a.vertices[(n+1)%l],a.vertices[n%l]),g.rotate90cw(i,f),g.normalize(i,i);var o=j(i,e);(-1===k||o>m)&&(k=n%l,m=o)}return k};var ia=g.create(),ja=g.create(),ka=g.create(),la=g.create(),ma=g.create(),na=g.create(),oa=g.create();d.prototype[q.CIRCLE|q.HEIGHTFIELD]=d.prototype.circleHeightfield=function(a,b,c,d,e,f,j,k,l,m){var n=f.heights,m=m||b.radius,o=f.elementWidth,p=ja,q=ia,r=ma,s=oa,t=na,u=ka,v=la,w=Math.floor((c[0]-m-j[0])/o),x=Math.ceil((c[0]+m-j[0])/o);0>w&&(w=0),x>=n.length&&(x=n.length-1);for(var y=n[w],z=n[x],A=w;x>A;A++)n[A]y&&(y=n[A]);if(c[1]-m>y)return l?!1:0;for(var B=!1,A=w;x>A;A++){g.set(u,A*o,n[A]),g.set(v,(A+1)*o,n[A+1]),g.add(u,u,j),g.add(v,v,j),g.sub(t,v,u),g.rotate(t,t,Math.PI/2),g.normalize(t,t),g.scale(q,t,-m),g.add(q,q,c),g.sub(p,q,u);var C=g.dot(p,t);if(q[0]>=u[0]&&q[0]=C){if(l)return!0;B=!0,g.scale(p,t,-C),g.add(r,q,p),g.copy(s,t);var D=this.createContactEquation(e,a,f,b);g.copy(D.normalA,s),g.scale(D.contactPointB,D.normalA,-m),i(D.contactPointB,D.contactPointB,c),h(D.contactPointB,D.contactPointB,a.position),g.copy(D.contactPointA,r),g.sub(D.contactPointA,D.contactPointA,e.position),this.contactEquations.push(D),this.enableFriction&&this.frictionEquations.push(this.createFrictionFromContact(D))}}if(B=!1,m>0)for(var A=w;x>=A;A++)if(g.set(u,A*o,n[A]),g.add(u,u,j),g.sub(p,c,u),g.squaredLength(p)q&&(q=0),r>=k.length&&(r=k.length-1);for(var s=k[q],t=k[r],u=q;r>u;u++)k[u]s&&(s=k[u]);if(a.aabb.lowerBound[1]>s)return j?!1:0;for(var v=0,u=q;r>u;u++){g.set(m,u*l,k[u]),g.set(n,(u+1)*l,k[u+1]),g.add(m,m,h),g.add(n,n,h);var w=100;g.set(o,.5*(n[0]+m[0]),.5*(n[1]+m[1]-w)),g.sub(p.vertices[0],n,o),g.sub(p.vertices[1],m,o),g.copy(p.vertices[2],p.vertices[1]),g.copy(p.vertices[3],p.vertices[0]),p.vertices[2][1]-=w,p.vertices[3][1]-=w,v+=this.convexConvex(a,b,c,d,e,p,o,0,j)}return v}},{"../equations/ContactEquation":21,"../equations/Equation":22,"../equations/FrictionEquation":23,"../math/vec2":30,"../objects/Body":31,"../shapes/Box":37,"../shapes/Circle":39,"../shapes/Convex":40,"../shapes/Shape":45,"../utils/ContactEquationPool":48,"../utils/FrictionEquationPool":49,"../utils/TupleDictionary":56,"../utils/Utils":57}],11:[function(a,b,c){function d(a){a=a||{},this.from=a.from?f.fromValues(a.from[0],a.from[1]):f.create(),this.to=a.to?f.fromValues(a.to[0],a.to[1]):f.create(),this.checkCollisionResponse=void 0!==a.checkCollisionResponse?a.checkCollisionResponse:!0,this.skipBackfaces=!!a.skipBackfaces,this.collisionMask=void 0!==a.collisionMask?a.collisionMask:-1,this.collisionGroup=void 0!==a.collisionGroup?a.collisionGroup:-1,this.mode=void 0!==a.mode?a.mode:d.ANY,this.callback=a.callback||function(a){},this.direction=f.create(),this.length=1,this.update()}function e(a,b,c){f.sub(h,c,a);var d=f.dot(h,b);return f.scale(i,b,d),f.add(i,i,a),f.squaredDistance(c,i)}b.exports=d;var f=a("../math/vec2");a("../collision/RaycastResult"),a("../shapes/Shape"),a("../collision/AABB");d.prototype.constructor=d,d.CLOSEST=1,d.ANY=2,d.ALL=4,d.prototype.update=function(){var a=this.direction;f.sub(a,this.to,this.from),this.length=f.length(a),f.normalize(a,a)},d.prototype.intersectBodies=function(a,b){for(var c=0,d=b.length;!a.shouldStop(this)&&d>c;c++){var e=b[c],f=e.getAABB();(f.overlapsRay(this)>=0||f.containsPoint(this.from))&&this.intersectBody(a,e)}};var g=f.create();d.prototype.intersectBody=function(a,b){var c=this.checkCollisionResponse;if(!c||b.collisionResponse)for(var d=g,e=0,h=b.shapes.length;h>e;e++){var i=b.shapes[e];if((!c||i.collisionResponse)&&0!==(this.collisionGroup&i.collisionMask)&&0!==(i.collisionGroup&this.collisionMask)){f.rotate(d,i.position,b.angle),f.add(d,d,b.position);var j=i.angle+b.angle;if(this.intersectShape(a,i,j,d,b),a.shouldStop(this))break}}},d.prototype.intersectShape=function(a,b,c,d,f){var g=this.from,h=e(g,this.direction,d);h>b.boundingRadius*b.boundingRadius||(this._currentBody=f,this._currentShape=b,b.raycast(a,this,d,c),this._currentBody=this._currentShape=null)},d.prototype.getAABB=function(a){var b=this.to,c=this.from;f.set(a.lowerBound,Math.min(b[0],c[0]),Math.min(b[1],c[1])),f.set(a.upperBound,Math.max(b[0],c[0]),Math.max(b[1],c[1]))};f.create();d.prototype.reportIntersection=function(a,b,c,e){var g=(this.from,this.to,this._currentShape),h=this._currentBody;if(!(this.skipBackfaces&&f.dot(c,this.direction)>0))switch(this.mode){case d.ALL:a.set(c,g,h,b,e),this.callback(a);break;case d.CLOSEST:(bc;c++){for(var e=a[c],f=c-1;f>=0&&!(a[f].aabb.lowerBound[b]<=e.aabb.lowerBound[b]);f--)a[f+1]=a[f];a[f+1]=e}return a},d.prototype.sortList=function(){var a=this.axisList,b=this.axisIndex;d.sortAxisList(a,b)},d.prototype.getCollisionPairs=function(a){var b=this.axisList,c=this.result,d=this.axisIndex;c.length=0;for(var e=b.length;e--;){var g=b[e];g.aabbNeedsUpdate&&g.updateAABB()}this.sortList();for(var h=0,i=0|b.length;h!==i;h++)for(var j=b[h],k=h+1;i>k;k++){var l=b[k],m=l.aabb.lowerBound[d]<=j.aabb.upperBound[d];if(!m)break;f.canCollide(j,l)&&this.boundingVolumeCheck(j,l)&&c.push(j,l)}return c},d.prototype.aabbQuery=function(a,b,c){c=c||[],this.sortList();var d=this.axisIndex,e="x";1===d&&(e="y"),2===d&&(e="z");for(var f=this.axisList,g=(b.lowerBound[e],b.upperBound[e],0);gthis.upperLimit&&(f.maxForce=0,f.minForce=-this.maxForce,this.distance=this.upperLimit,l=!0),this.lowerLimitEnabled&&this.positionc)h.scale(e.normalA,j,-1),h.sub(e.contactPointA,k,g.position),h.sub(e.contactPointB,l,i.position),h.scale(o,j,c),h.add(e.contactPointA,e.contactPointA,o),-1===a.indexOf(e)&&a.push(e);else{var u=a.indexOf(e);-1!==u&&a.splice(u,1)}if(this.lowerLimitEnabled&&d>s)h.scale(f.normalA,j,1),h.sub(f.contactPointA,k,g.position),h.sub(f.contactPointB,l,i.position),h.scale(o,j,d),h.sub(f.contactPointB,f.contactPointB,o),-1===a.indexOf(f)&&a.push(f);else{var u=a.indexOf(f);-1!==u&&a.splice(u,1)}},d.prototype.enableMotor=function(){this.motorEnabled||(this.equations.push(this.motorEquation),this.motorEnabled=!0)},d.prototype.disableMotor=function(){if(this.motorEnabled){var a=this.equations.indexOf(this.motorEquation);this.equations.splice(a,1),this.motorEnabled=!1}},d.prototype.setLimits=function(a,b){"number"==typeof a?(this.lowerLimit=a,this.lowerLimitEnabled=!0):(this.lowerLimit=a,this.lowerLimitEnabled=!1),"number"==typeof b?(this.upperLimit=b,this.upperLimitEnabled=!0):(this.upperLimit=b,this.upperLimitEnabled=!1)}},{"../equations/ContactEquation":21,"../equations/Equation":22,"../equations/RotationalLockEquation":24,"../math/vec2":30,"./Constraint":14}],19:[function(a,b,c){function d(a,b,c){c=c||{},e.call(this,a,b,e.REVOLUTE,c);var d=this.maxForce="undefined"!=typeof c.maxForce?c.maxForce:Number.MAX_VALUE;this.pivotA=i.create(),this.pivotB=i.create(),c.worldPivot?(i.sub(this.pivotA,c.worldPivot,a.position),i.sub(this.pivotB,c.worldPivot,b.position),i.rotate(this.pivotA,this.pivotA,-a.angle),i.rotate(this.pivotB,this.pivotB,-b.angle)):(i.copy(this.pivotA,c.localPivotA),i.copy(this.pivotB,c.localPivotB));var o=this.equations=[new f(a,b,-d,d),new f(a,b,-d,d)],p=o[0],q=o[1],r=this;p.computeGq=function(){return i.rotate(j,r.pivotA,a.angle),i.rotate(k,r.pivotB,b.angle),i.add(n,b.position,k),i.sub(n,n,a.position),i.sub(n,n,j),i.dot(n,l)},q.computeGq=function(){return i.rotate(j,r.pivotA,a.angle),i.rotate(k,r.pivotB,b.angle),i.add(n,b.position,k),i.sub(n,n,a.position),i.sub(n,n,j),i.dot(n,m)},q.minForce=p.minForce=-d,q.maxForce=p.maxForce=d,this.motorEquation=new g(a,b),this.motorEnabled=!1,this.angle=0,this.lowerLimitEnabled=!1,this.upperLimitEnabled=!1,this.lowerLimit=0,this.upperLimit=0,this.upperLimitEquation=new h(a,b),this.lowerLimitEquation=new h(a,b),this.upperLimitEquation.minForce=0,this.lowerLimitEquation.maxForce=0}var e=a("./Constraint"),f=a("../equations/Equation"),g=a("../equations/RotationalVelocityEquation"),h=a("../equations/RotationalLockEquation"),i=a("../math/vec2");b.exports=d;var j=i.create(),k=i.create(),l=i.fromValues(1,0),m=i.fromValues(0,1),n=i.create();d.prototype=new e,d.prototype.constructor=d,d.prototype.setLimits=function(a,b){"number"==typeof a?(this.lowerLimit=a,this.lowerLimitEnabled=!0):(this.lowerLimit=a,this.lowerLimitEnabled=!1),"number"==typeof b?(this.upperLimit=b,this.upperLimitEnabled=!0):(this.upperLimit=b,this.upperLimitEnabled=!1)},d.prototype.update=function(){var a=this.bodyA,b=this.bodyB,c=this.pivotA,d=this.pivotB,e=this.equations,f=(e[0],e[1],e[0]),g=e[1],h=this.upperLimit,n=this.lowerLimit,o=this.upperLimitEquation,p=this.lowerLimitEquation,q=this.angle=b.angle-a.angle;if(this.upperLimitEnabled&&q>h)o.angle=h,-1===e.indexOf(o)&&e.push(o);else{var r=e.indexOf(o);-1!==r&&e.splice(r,1)}if(this.lowerLimitEnabled&&n>q)p.angle=n,-1===e.indexOf(p)&&e.push(p);else{var r=e.indexOf(p);-1!==r&&e.splice(r,1)}i.rotate(j,c,a.angle),i.rotate(k,d,b.angle),f.G[0]=-1,f.G[1]=0,f.G[2]=-i.crossLength(j,l),f.G[3]=1,f.G[4]=0,f.G[5]=i.crossLength(k,l),g.G[0]=0,g.G[1]=-1,g.G[2]=-i.crossLength(j,m),g.G[3]=0,g.G[4]=1,g.G[5]=i.crossLength(k,m)},d.prototype.enableMotor=function(){this.motorEnabled||(this.equations.push(this.motorEquation),this.motorEnabled=!0)},d.prototype.disableMotor=function(){if(this.motorEnabled){var a=this.equations.indexOf(this.motorEquation);this.equations.splice(a,1),this.motorEnabled=!1}},d.prototype.motorIsEnabled=function(){return!!this.motorEnabled},d.prototype.setMotorSpeed=function(a){if(this.motorEnabled){var b=this.equations.indexOf(this.motorEquation);this.equations[b].relativeVelocity=a}},d.prototype.getMotorSpeed=function(){return this.motorEnabled?this.motorEquation.relativeVelocity:!1}},{"../equations/Equation":22,"../equations/RotationalLockEquation":24,"../equations/RotationalVelocityEquation":25,"../math/vec2":30,"./Constraint":14}],20:[function(a,b,c){function d(a,b,c){c=c||{},e.call(this,a,b,-Number.MAX_VALUE,Number.MAX_VALUE),this.angle=c.angle||0,this.ratio="number"==typeof c.ratio?c.ratio:1,this.setRatio(this.ratio)}var e=a("./Equation");a("../math/vec2");b.exports=d,d.prototype=new e,d.prototype.constructor=d,d.prototype.computeGq=function(){return this.ratio*this.bodyA.angle-this.bodyB.angle+this.angle},d.prototype.setRatio=function(a){var b=this.G;b[2]=a,b[5]=-1,this.ratio=a},d.prototype.setMaxTorque=function(a){this.maxForce=a,this.minForce=-a}},{"../math/vec2":30,"./Equation":22}],21:[function(a,b,c){function d(a,b){e.call(this,a,b,0,Number.MAX_VALUE),this.contactPointA=f.create(),this.penetrationVec=f.create(),this.contactPointB=f.create(),this.normalA=f.create(),this.restitution=0,this.firstImpact=!1,this.shapeA=null,this.shapeB=null}var e=a("./Equation"),f=a("../math/vec2");b.exports=d,d.prototype=new e,d.prototype.constructor=d,d.prototype.computeB=function(a,b,c){var d=this.bodyA,e=this.bodyB,g=this.contactPointA,h=this.contactPointB,i=d.position,j=e.position,k=this.penetrationVec,l=this.normalA,m=this.G,n=f.crossLength(g,l),o=f.crossLength(h,l);m[0]=-l[0],m[1]=-l[1],m[2]=-n,m[3]=l[0],m[4]=l[1],m[5]=o,f.add(k,j,h),f.sub(k,k,i),f.sub(k,k,g);var p,q;this.firstImpact&&0!==this.restitution?(q=0,p=1/b*(1+this.restitution)*this.computeGW()):(q=f.dot(l,k)+this.offset,p=this.computeGW());var r=this.computeGiMf(),s=-q*a-p*b-c*r;return s}},{"../math/vec2":30,"./Equation":22}],22:[function(a,b,c){function d(a,b,c,e){this.minForce="undefined"==typeof c?-Number.MAX_VALUE:c,this.maxForce="undefined"==typeof e?Number.MAX_VALUE:e,this.bodyA=a,this.bodyB=b,this.stiffness=d.DEFAULT_STIFFNESS,this.relaxation=d.DEFAULT_RELAXATION,this.G=new f.ARRAY_TYPE(6);for(var g=0;6>g;g++)this.G[g]=0;this.offset=0,this.a=0,this.b=0,this.epsilon=0,this.timeStep=1/60,this.needsUpdate=!0,this.multiplier=0,this.relativeVelocity=0,this.enabled=!0}b.exports=d;var e=a("../math/vec2"),f=a("../utils/Utils");a("../objects/Body");d.prototype.constructor=d,d.DEFAULT_STIFFNESS=1e6,d.DEFAULT_RELAXATION=4,d.prototype.update=function(){var a=this.stiffness,b=this.relaxation,c=this.timeStep;this.a=4/(c*(1+4*b)),this.b=4*b/(1+4*b),this.epsilon=4/(c*c*a*(1+4*b)),this.needsUpdate=!1},d.prototype.gmult=function(a,b,c,d,e){return a[0]*b[0]+a[1]*b[1]+a[2]*c+a[3]*d[0]+a[4]*d[1]+a[5]*e},d.prototype.computeB=function(a,b,c){var d=this.computeGW(),e=this.computeGq(),f=this.computeGiMf();return-e*a-d*b-f*c};var g=e.create(),h=e.create();d.prototype.computeGq=function(){var a=this.G,b=this.bodyA,c=this.bodyB,d=(b.position,c.position,b.angle),e=c.angle;return this.gmult(a,g,d,h,e)+this.offset},d.prototype.computeGW=function(){var a=this.G,b=this.bodyA,c=this.bodyB,d=b.velocity,e=c.velocity,f=b.angularVelocity,g=c.angularVelocity;return this.gmult(a,d,f,e,g)+this.relativeVelocity},d.prototype.computeGWlambda=function(){var a=this.G,b=this.bodyA,c=this.bodyB,d=b.vlambda,e=c.vlambda,f=b.wlambda,g=c.wlambda;return this.gmult(a,d,f,e,g)};var i=e.create(),j=e.create();d.prototype.computeGiMf=function(){var a=this.bodyA,b=this.bodyB,c=a.force,d=a.angularForce,f=b.force,g=b.angularForce,h=a.invMassSolve,k=b.invMassSolve,l=a.invInertiaSolve,m=b.invInertiaSolve,n=this.G;return e.scale(i,c,h),e.multiply(i,a.massMultiplier,i),e.scale(j,f,k),e.multiply(j,b.massMultiplier,j),this.gmult(n,i,d*l,j,g*m)},d.prototype.computeGiMGt=function(){var a=this.bodyA,b=this.bodyB,c=a.invMassSolve,d=b.invMassSolve,e=a.invInertiaSolve,f=b.invInertiaSolve,g=this.G;return g[0]*g[0]*c*a.massMultiplier[0]+g[1]*g[1]*c*a.massMultiplier[1]+g[2]*g[2]*e+g[3]*g[3]*d*b.massMultiplier[0]+g[4]*g[4]*d*b.massMultiplier[1]+g[5]*g[5]*f};var k=e.create(),l=e.create(),m=e.create();e.create(),e.create(),e.create();d.prototype.addToWlambda=function(a){var b=this.bodyA,c=this.bodyB,d=k,f=l,g=m,h=b.invMassSolve,i=c.invMassSolve,j=b.invInertiaSolve,n=c.invInertiaSolve,o=this.G;f[0]=o[0],f[1]=o[1],g[0]=o[3],g[1]=o[4],e.scale(d,f,h*a),e.multiply(d,d,b.massMultiplier),e.add(b.vlambda,b.vlambda,d),b.wlambda+=j*o[2]*a,e.scale(d,g,i*a),e.multiply(d,d,c.massMultiplier),e.add(c.vlambda,c.vlambda,d),c.wlambda+=n*o[5]*a},d.prototype.computeInvC=function(a){return 1/(this.computeGiMGt()+a)}},{"../math/vec2":30,"../objects/Body":31,"../utils/Utils":57}],23:[function(a,b,c){function d(a,b,c){f.call(this,a,b,-c,c),this.contactPointA=e.create(),this.contactPointB=e.create(),this.t=e.create(),this.contactEquations=[],this.shapeA=null,this.shapeB=null,this.frictionCoefficient=.3}var e=a("../math/vec2"),f=a("./Equation");a("../utils/Utils");b.exports=d,d.prototype=new f,d.prototype.constructor=d,d.prototype.setSlipForce=function(a){this.maxForce=a,this.minForce=-a},d.prototype.getSlipForce=function(){return this.maxForce},d.prototype.computeB=function(a,b,c){var d=(this.bodyA,this.bodyB,this.contactPointA),f=this.contactPointB,g=this.t,h=this.G;h[0]=-g[0],h[1]=-g[1],h[2]=-e.crossLength(d,g),h[3]=g[0],h[4]=g[1],h[5]=e.crossLength(f,g);var i=this.computeGW(),j=this.computeGiMf(),k=-i*b-c*j;return k}},{"../math/vec2":30,"../utils/Utils":57,"./Equation":22}],24:[function(a,b,c){function d(a,b,c){c=c||{},e.call(this,a,b,-Number.MAX_VALUE,Number.MAX_VALUE),this.angle=c.angle||0;var d=this.G;d[2]=1,d[5]=-1}var e=a("./Equation"),f=a("../math/vec2");b.exports=d,d.prototype=new e,d.prototype.constructor=d;var g=f.create(),h=f.create(),i=f.fromValues(1,0),j=f.fromValues(0,1);d.prototype.computeGq=function(){return f.rotate(g,i,this.bodyA.angle+this.angle),f.rotate(h,j,this.bodyB.angle),f.dot(g,h)}},{"../math/vec2":30,"./Equation":22}],25:[function(a,b,c){function d(a,b){e.call(this,a,b,-Number.MAX_VALUE,Number.MAX_VALUE),this.relativeVelocity=1,this.ratio=1}var e=a("./Equation");a("../math/vec2");b.exports=d,d.prototype=new e,d.prototype.constructor=d,d.prototype.computeB=function(a,b,c){var d=this.G;d[2]=-1,d[5]=this.ratio;var e=this.computeGiMf(),f=this.computeGW(),g=-f*b-c*e;return g}},{"../math/vec2":30,"./Equation":22}],26:[function(a,b,c){var d=function(){};b.exports=d,d.prototype={constructor:d,on:function(a,b,c){b.context=c||this,void 0===this._listeners&&(this._listeners={});var d=this._listeners;return void 0===d[a]&&(d[a]=[]),-1===d[a].indexOf(b)&&d[a].push(b),this},has:function(a,b){if(void 0===this._listeners)return!1;var c=this._listeners;if(b){if(void 0!==c[a]&&-1!==c[a].indexOf(b))return!0}else if(void 0!==c[a])return!0;return!1},off:function(a,b){if(void 0===this._listeners)return this;var c=this._listeners,d=c[a].indexOf(b);return-1!==d&&c[a].splice(d,1),this},emit:function(a){if(void 0===this._listeners)return this;var b=this._listeners,c=b[a.type];if(void 0!==c){a.target=this;for(var d=0,e=c.length;e>d;d++){var f=c[d];f.call(f.context,a)}}return this}}},{}],27:[function(a,b,c){function d(a,b,c){if(c=c||{},!(a instanceof e&&b instanceof e))throw new Error("First two arguments must be Material instances.");this.id=d.idCounter++,this.materialA=a,this.materialB=b,this.friction="undefined"!=typeof c.friction?Number(c.friction):.3,this.restitution="undefined"!=typeof c.restitution?Number(c.restitution):0,this.stiffness="undefined"!=typeof c.stiffness?Number(c.stiffness):f.DEFAULT_STIFFNESS,this.relaxation="undefined"!=typeof c.relaxation?Number(c.relaxation):f.DEFAULT_RELAXATION,this.frictionStiffness="undefined"!=typeof c.frictionStiffness?Number(c.frictionStiffness):f.DEFAULT_STIFFNESS,this.frictionRelaxation="undefined"!=typeof c.frictionRelaxation?Number(c.frictionRelaxation):f.DEFAULT_RELAXATION,this.surfaceVelocity="undefined"!=typeof c.surfaceVelocity?Number(c.surfaceVelocity):0,this.contactSkinSize=.005}var e=a("./Material"),f=a("../equations/Equation");b.exports=d,d.idCounter=0},{"../equations/Equation":22,"./Material":28}],28:[function(a,b,c){function d(a){this.id=a||d.idCounter++}b.exports=d,d.idCounter=0},{}],29:[function(a,b,c){var d={};d.GetArea=function(a){if(a.length<6)return 0;for(var b=a.length-2,c=0,d=0;b>d;d+=2)c+=(a[d+2]-a[d])*(a[d+1]+a[d+3]);return c+=(a[0]-a[b])*(a[b+1]+a[1]),.5*-c},d.Triangulate=function(a){var b=a.length>>1;if(3>b)return[];for(var c=[],e=[],f=0;b>f;f++)e.push(f);for(var f=0,g=b;g>3;){var h=e[(f+0)%g],i=e[(f+1)%g],j=e[(f+2)%g],k=a[2*h],l=a[2*h+1],m=a[2*i],n=a[2*i+1],o=a[2*j],p=a[2*j+1],q=!1;if(d._convex(k,l,m,n,o,p)){q=!0;for(var r=0;g>r;r++){var s=e[r];if(s!=h&&s!=i&&s!=j&&d._PointInTriangle(a[2*s],a[2*s+1],k,l,m,n,o,p)){q=!1;break}}}if(q)c.push(h,i,j),e.splice((f+1)%g,1),g--,f=0;else if(f++>3*g)break}return c.push(e[0],e[1],e[2]),c},d._PointInTriangle=function(a,b,c,d,e,f,g,h){var i=g-c,j=h-d,k=e-c,l=f-d,m=a-c,n=b-d,o=i*i+j*j,p=i*k+j*l,q=i*m+j*n,r=k*k+l*l,s=k*m+l*n,t=1/(o*r-p*p),u=(r*q-p*s)*t,v=(o*s-p*q)*t;return u>=0&&v>=0&&1>u+v},d._convex=function(a,b,c,d,e,f){return(b-d)*(e-c)+(c-a)*(f-d)>=0},b.exports=d},{}],30:[function(a,b,c){var d=b.exports={},e=a("../utils/Utils");d.crossLength=function(a,b){return a[0]*b[1]-a[1]*b[0]},d.crossVZ=function(a,b,c){return d.rotate(a,b,-Math.PI/2),d.scale(a,a,c),a},d.crossZV=function(a,b,c){return d.rotate(a,c,Math.PI/2),d.scale(a,a,b),a},d.rotate=function(a,b,c){if(0!==c){var d=Math.cos(c),e=Math.sin(c),f=b[0],g=b[1];a[0]=d*f-e*g,a[1]=e*f+d*g}else a[0]=b[0],a[1]=b[1]},d.rotate90cw=function(a,b){var c=b[0],d=b[1];a[0]=d,a[1]=-c},d.toLocalFrame=function(a,b,c,e){d.copy(a,b),d.sub(a,a,c),d.rotate(a,a,-e)},d.toGlobalFrame=function(a,b,c,e){d.copy(a,b),d.rotate(a,a,e),d.add(a,a,c)},d.vectorToLocalFrame=function(a,b,c){d.rotate(a,b,-c)},d.vectorToGlobalFrame=function(a,b,c){d.rotate(a,b,c)},d.centroid=function(a,b,c,e){return d.add(a,b,c),d.add(a,a,e),d.scale(a,a,1/3),a},d.create=function(){var a=new e.ARRAY_TYPE(2);return a[0]=0,a[1]=0,a},d.clone=function(a){var b=new e.ARRAY_TYPE(2);return b[0]=a[0],b[1]=a[1],b},d.fromValues=function(a,b){var c=new e.ARRAY_TYPE(2);return c[0]=a,c[1]=b,c},d.copy=function(a,b){return a[0]=b[0],a[1]=b[1],a},d.set=function(a,b,c){return a[0]=b,a[1]=c,a},d.add=function(a,b,c){return a[0]=b[0]+c[0],a[1]=b[1]+c[1],a},d.subtract=function(a,b,c){return a[0]=b[0]-c[0],a[1]=b[1]-c[1],a},d.sub=d.subtract,d.multiply=function(a,b,c){return a[0]=b[0]*c[0],a[1]=b[1]*c[1],a},d.mul=d.multiply,d.divide=function(a,b,c){return a[0]=b[0]/c[0],a[1]=b[1]/c[1],a},d.div=d.divide,d.scale=function(a,b,c){return a[0]=b[0]*c,a[1]=b[1]*c,a},d.distance=function(a,b){var c=b[0]-a[0],d=b[1]-a[1];return Math.sqrt(c*c+d*d)},d.dist=d.distance,d.squaredDistance=function(a,b){var c=b[0]-a[0],d=b[1]-a[1];return c*c+d*d},d.sqrDist=d.squaredDistance,d.length=function(a){var b=a[0],c=a[1];return Math.sqrt(b*b+c*c)},d.len=d.length,d.squaredLength=function(a){var b=a[0],c=a[1];return b*b+c*c},d.sqrLen=d.squaredLength,d.negate=function(a,b){return a[0]=-b[0],a[1]=-b[1],a},d.normalize=function(a,b){var c=b[0],d=b[1],e=c*c+d*d;return e>0&&(e=1/Math.sqrt(e),a[0]=b[0]*e,a[1]=b[1]*e),a},d.dot=function(a,b){return a[0]*b[0]+a[1]*b[1]},d.str=function(a){return"vec2("+a[0]+", "+a[1]+")"},d.lerp=function(a,b,c,d){var e=b[0],f=b[1];return a[0]=e+d*(c[0]-e),a[1]=f+d*(c[1]-f),a},d.reflect=function(a,b,c){var d=b[0]*c[0]+b[1]*c[1];a[0]=b[0]-2*c[0]*d,a[1]=b[1]-2*c[1]*d},d.getLineSegmentsIntersection=function(a,b,c,e,f){var g=d.getLineSegmentsIntersectionFraction(b,c,e,f);return 0>g?!1:(a[0]=b[0]+g*(c[0]-b[0]),a[1]=b[1]+g*(c[1]-b[1]),!0)},d.getLineSegmentsIntersectionFraction=function(a,b,c,d){var e,f,g=b[0]-a[0],h=b[1]-a[1],i=d[0]-c[0],j=d[1]-c[1];return e=(-h*(a[0]-c[0])+g*(a[1]-c[1]))/(-i*h+g*j),f=(i*(a[1]-c[1])-j*(a[0]-c[0]))/(-i*h+g*j),e>=0&&1>=e&&f>=0&&1>=f?f:-1}},{"../utils/Utils":57}],31:[function(a,b,c){function d(a){a=a||{},k.call(this),this.id=a.id||++d._idCounter,this.world=null,this.shapes=[],this.mass=a.mass||0,this.invMass=0,this.inertia=0,this.invInertia=0,this.invMassSolve=0,this.invInertiaSolve=0,this.fixedRotation=!!a.fixedRotation,this.fixedX=!!a.fixedX,this.fixedY=!!a.fixedY,this.massMultiplier=e.create(),this.position=e.fromValues(0,0),a.position&&e.copy(this.position,a.position),this.interpolatedPosition=e.fromValues(0,0),this.interpolatedAngle=0,this.previousPosition=e.fromValues(0,0),this.previousAngle=0,this.velocity=e.fromValues(0,0),a.velocity&&e.copy(this.velocity,a.velocity),this.vlambda=e.fromValues(0,0),this.wlambda=0,this.angle=a.angle||0,this.angularVelocity=a.angularVelocity||0,this.force=e.create(),a.force&&e.copy(this.force,a.force),this.angularForce=a.angularForce||0,this.damping="number"==typeof a.damping?a.damping:.1,this.angularDamping="number"==typeof a.angularDamping?a.angularDamping:.1,this.type=d.STATIC,"undefined"!=typeof a.type?this.type=a.type:a.mass?this.type=d.DYNAMIC:this.type=d.STATIC,this.boundingRadius=0,this.aabb=new j,this.aabbNeedsUpdate=!0, -this.allowSleep=void 0!==a.allowSleep?a.allowSleep:!0,this.wantsToSleep=!1,this.sleepState=d.AWAKE,this.sleepSpeedLimit=void 0!==a.sleepSpeedLimit?a.sleepSpeedLimit:.2,this.sleepTimeLimit=void 0!==a.sleepTimeLimit?a.sleepTimeLimit:1,this.gravityScale=void 0!==a.gravityScale?a.gravityScale:1,this.collisionResponse=void 0!==a.collisionResponse?a.collisionResponse:!0,this.idleTime=0,this.timeLastSleepy=0,this.ccdSpeedThreshold=void 0!==a.ccdSpeedThreshold?a.ccdSpeedThreshold:-1,this.ccdIterations=void 0!==a.ccdIterations?a.ccdIterations:10,this.concavePath=null,this._wakeUpAfterNarrowphase=!1,this.updateMassProperties()}var e=a("../math/vec2"),f=a("poly-decomp"),g=a("../shapes/Convex"),h=a("../collision/RaycastResult"),i=a("../collision/Ray"),j=a("../collision/AABB"),k=a("../events/EventEmitter");b.exports=d,d.prototype=new k,d.prototype.constructor=d,d._idCounter=0,d.prototype.updateSolveMassProperties=function(){this.sleepState===d.SLEEPING||this.type===d.KINEMATIC?(this.invMassSolve=0,this.invInertiaSolve=0):(this.invMassSolve=this.invMass,this.invInertiaSolve=this.invInertia)},d.prototype.setDensity=function(a){var b=this.getArea();this.mass=b*a,this.updateMassProperties()},d.prototype.getArea=function(){for(var a=0,b=0;bc&&(c=g+h)}this.boundingRadius=c},d.prototype.addShape=function(a,b,c){if(a.body)throw new Error("A shape can only be added to one body.");a.body=this,b?e.copy(a.position,b):e.set(a.position,0,0),a.angle=c||0,this.shapes.push(a),this.updateMassProperties(),this.updateBoundingRadius(),this.aabbNeedsUpdate=!0},d.prototype.removeShape=function(a){var b=this.shapes.indexOf(a);return-1!==b?(this.shapes.splice(b,1),this.aabbNeedsUpdate=!0,a.body=null,!0):!1},d.prototype.updateMassProperties=function(){if(this.type===d.STATIC||this.type===d.KINEMATIC)this.mass=Number.MAX_VALUE,this.invMass=0,this.inertia=Number.MAX_VALUE,this.invInertia=0;else{var a=this.shapes,b=a.length,c=this.mass/b,f=0;if(this.fixedRotation)this.inertia=Number.MAX_VALUE,this.invInertia=0;else{for(var g=0;b>g;g++){var h=a[g],i=e.squaredLength(h.position),j=h.computeMomentOfInertia(c);f+=j+c*i}this.inertia=f,this.invInertia=f>0?1/f:0}this.invMass=1/this.mass,e.set(this.massMultiplier,this.fixedX?0:1,this.fixedY?0:1)}};e.create();d.prototype.applyForce=function(a,b){if(e.add(this.force,this.force,a),b){var c=e.crossLength(b,a);this.angularForce+=c}};var n=e.create(),o=e.create(),p=e.create();d.prototype.applyForceLocal=function(a,b){b=b||p;var c=n,d=o;this.vectorToWorldFrame(c,a),this.vectorToWorldFrame(d,b),this.applyForce(c,d)};var q=e.create();d.prototype.applyImpulse=function(a,b){if(this.type===d.DYNAMIC){var c=q;if(e.scale(c,a,this.invMass),e.multiply(c,this.massMultiplier,c),e.add(this.velocity,c,this.velocity),b){var f=e.crossLength(b,a);f*=this.invInertia,this.angularVelocity+=f}}};var r=e.create(),s=e.create(),t=e.create();d.prototype.applyImpulseLocal=function(a,b){b=b||t;var c=r,d=s;this.vectorToWorldFrame(c,a),this.vectorToWorldFrame(d,b),this.applyImpulse(c,d)},d.prototype.toLocalFrame=function(a,b){e.toLocalFrame(a,b,this.position,this.angle)},d.prototype.toWorldFrame=function(a,b){e.toGlobalFrame(a,b,this.position,this.angle)},d.prototype.vectorToLocalFrame=function(a,b){e.vectorToLocalFrame(a,b,this.angle)},d.prototype.vectorToWorldFrame=function(a,b){e.vectorToGlobalFrame(a,b,this.angle)},d.prototype.fromPolygon=function(a,b){b=b||{};for(var c=this.shapes.length;c>=0;--c)this.removeShape(this.shapes[c]);var d=new f.Polygon;if(d.vertices=a,d.makeCCW(),"number"==typeof b.removeCollinearPoints&&d.removeCollinearPoints(b.removeCollinearPoints),"undefined"==typeof b.skipSimpleCheck&&!d.isSimple())return!1;this.concavePath=d.vertices.slice(0);for(var c=0;c=g?(this.idleTime=0,this.sleepState=d.AWAKE):(this.idleTime+=c,this.sleepState=d.SLEEPY),this.idleTime>this.sleepTimeLimit&&(b?this.wantsToSleep=!0:this.sleep())}},d.prototype.overlaps=function(a){return this.world.overlapKeeper.bodiesAreOverlapping(this,a)};var x=e.create(),y=e.create();d.prototype.integrate=function(a){var b=this.invMass,c=this.force,d=this.position,f=this.velocity;e.copy(this.previousPosition,this.position),this.previousAngle=this.angle,this.fixedRotation||(this.angularVelocity+=this.angularForce*this.invInertia*a),e.scale(x,c,a*b),e.multiply(x,this.massMultiplier,x),e.add(f,x,f),this.integrateToTimeOfImpact(a)||(e.scale(y,f,a),e.add(d,d,y),this.fixedRotation||(this.angle+=this.angularVelocity*a)),this.aabbNeedsUpdate=!0};var z=new h,A=new i({mode:i.ALL}),B=e.create(),C=e.create(),D=e.create(),E=e.create();d.prototype.integrateToTimeOfImpact=function(a){if(this.ccdSpeedThreshold<0||e.squaredLength(this.velocity)=j&&ir;r++){var s=this.radius*(2*r-1);f.set(o,-q,s),f.set(p,q,s),f.toGlobalFrame(o,o,c,d),f.toGlobalFrame(p,p,c,d);var t=f.getLineSegmentsIntersectionFraction(e,g,o,p);if(t>=0&&(f.rotate(n,l,d),f.scale(n,n,2*r-1),b.reportIntersection(a,t,n,-1),a.shouldStop(b)))return}for(var u=Math.pow(this.radius,2)+Math.pow(q,2),r=0;2>r;r++){f.set(o,q*(2*r-1),0),f.toGlobalFrame(o,o,c,d);var v=Math.pow(g[0]-e[0],2)+Math.pow(g[1]-e[1],2),w=2*((g[0]-e[0])*(e[0]-o[0])+(g[1]-e[1])*(e[1]-o[1])),x=Math.pow(e[0]-o[0],2)+Math.pow(e[1]-o[1],2)-Math.pow(this.radius,2),t=Math.pow(w,2)-4*v*x;if(!(0>t))if(0===t){if(f.lerp(m,e,g,t),f.squaredDistance(m,c)>u&&(f.sub(n,m,o),f.normalize(n,n),b.reportIntersection(a,t,n,-1),a.shouldStop(b)))return}else{var y=Math.sqrt(t),z=1/(2*v),A=(-w-y)*z,B=(-w+y)*z;if(A>=0&&1>=A&&(f.lerp(m,e,g,A),f.squaredDistance(m,c)>u&&(f.sub(n,m,o),f.normalize(n,n),b.reportIntersection(a,A,n,-1),a.shouldStop(b))))return;if(B>=0&&1>=B&&(f.lerp(m,e,g,B),f.squaredDistance(m,c)>u&&(f.sub(n,m,o),f.normalize(n,n),b.reportIntersection(a,B,n,-1),a.shouldStop(b))))return}}}},{"../math/vec2":30,"./Shape":45}],39:[function(a,b,c){function d(a){"number"==typeof arguments[0]&&(a={radius:arguments[0]},console.warn("The Circle constructor signature has changed. Please use the following format: new Circle({ radius: 1 })")),a=a||{},this.radius=a.radius||1,a.type=e.CIRCLE,e.call(this,a)}var e=a("./Shape"),f=a("../math/vec2");b.exports=d,d.prototype=new e,d.prototype.constructor=d,d.prototype.computeMomentOfInertia=function(a){var b=this.radius;return a*b*b/2},d.prototype.updateBoundingRadius=function(){this.boundingRadius=this.radius},d.prototype.updateArea=function(){this.area=Math.PI*this.radius*this.radius},d.prototype.computeAABB=function(a,b,c){var d=this.radius;f.set(a.upperBound,d,d),f.set(a.lowerBound,-d,-d),b&&(f.add(a.lowerBound,a.lowerBound,b),f.add(a.upperBound,a.upperBound,b))};var g=f.create(),h=f.create();d.prototype.raycast=function(a,b,c,d){var e=b.from,i=b.to,j=this.radius,k=Math.pow(i[0]-e[0],2)+Math.pow(i[1]-e[1],2),l=2*((i[0]-e[0])*(e[0]-c[0])+(i[1]-e[1])*(e[1]-c[1])),m=Math.pow(e[0]-c[0],2)+Math.pow(e[1]-c[1],2)-Math.pow(j,2),n=Math.pow(l,2)-4*k*m,o=g,p=h;if(!(0>n))if(0===n)f.lerp(o,e,i,n),f.sub(p,o,c),f.normalize(p,p),b.reportIntersection(a,n,p,-1);else{var q=Math.sqrt(n),r=1/(2*k),s=(-l-q)*r,t=(-l+q)*r;if(s>=0&&1>=s&&(f.lerp(o,e,i,s),f.sub(p,o,c),f.normalize(p,p),b.reportIntersection(a,s,p,-1),a.shouldStop(b)))return;t>=0&&1>=t&&(f.lerp(o,e,i,t),f.sub(p,o,c),f.normalize(p,p),b.reportIntersection(a,t,p,-1))}}},{"../math/vec2":30,"./Shape":45}],40:[function(a,b,c){function d(a){Array.isArray(arguments[0])&&(a={vertices:arguments[0],axes:arguments[1]},console.warn("The Convex constructor signature has changed. Please use the following format: new Convex({ vertices: [...], ... })")),a=a||{},this.vertices=[];for(var b=void 0!==a.vertices?a.vertices:[],c=0;ce)&&(e=d),(null===g||g>d)&&(g=d);if(g>e){var j=g;g=e,e=j}f.set(b,g,e)},d.prototype.projectOntoWorldAxis=function(a,b,c,d){var e=i;this.projectOntoLocalAxis(a,d),0!==c?f.rotate(e,a,c):e=a;var g=f.dot(b,e);f.set(d,d[0]+g,d[1]+g)},d.prototype.updateTriangles=function(){this.triangles.length=0;for(var a=[],b=0;bg;e=g,g++){var h=this.vertices[e],i=this.vertices[g],j=Math.abs(f.crossLength(h,i)),k=f.dot(i,i)+f.dot(i,h)+f.dot(h,h);b+=j*k,c+=j}return a/6*(b/c)},d.prototype.updateBoundingRadius=function(){for(var a=this.vertices,b=0,c=0;c!==a.length;c++){var d=f.squaredLength(a[c]);d>b&&(b=d)}this.boundingRadius=Math.sqrt(b)},d.triangleArea=function(a,b,c){return.5*((b[0]-a[0])*(c[1]-a[1])-(c[0]-a[0])*(b[1]-a[1]))},d.prototype.updateArea=function(){this.updateTriangles(),this.area=0;for(var a=this.triangles,b=this.vertices,c=0;c!==a.length;c++){var e=a[c],f=b[e[0]],g=b[e[1]],h=b[e[2]],i=d.triangleArea(f,g,h);this.area+=i}},d.prototype.computeAABB=function(a,b,c){a.setFromPoints(this.vertices,b,c,0)};var o=f.create(),p=f.create(),q=f.create();d.prototype.raycast=function(a,b,c,d){var e=o,g=p,h=q,i=this.vertices;f.toLocalFrame(e,b.from,c,d),f.toLocalFrame(g,b.to,c,d);for(var j=i.length,k=0;j>k&&!a.shouldStop(b);k++){var l=i[k],m=i[(k+1)%j],n=f.getLineSegmentsIntersectionFraction(e,g,l,m);n>=0&&(f.sub(h,m,l),f.rotate(h,h,-Math.PI/2+d),f.normalize(h,h),b.reportIntersection(a,n,h,k))}}},{"../math/polyk":29,"../math/vec2":30,"./Shape":45,"poly-decomp":5}],41:[function(a,b,c){function d(a){if(Array.isArray(arguments[0])){if(a={heights:arguments[0]},"object"==typeof arguments[1])for(var b in arguments[1])a[b]=arguments[1][b];console.warn("The Heightfield constructor signature has changed. Please use the following format: new Heightfield({ heights: [...], ... })")}a=a||{},this.heights=a.heights?a.heights.slice(0):[],this.maxValue=a.maxValue||null,this.minValue=a.minValue||null,this.elementWidth=a.elementWidth||.1,(void 0===a.maxValue||void 0===a.minValue)&&this.updateMaxMinValues(),a.type=e.HEIGHTFIELD,e.call(this,a)}var e=a("./Shape"),f=a("../math/vec2");a("../utils/Utils");b.exports=d,d.prototype=new e,d.prototype.constructor=d,d.prototype.updateMaxMinValues=function(){for(var a=this.heights,b=a[0],c=a[0],d=0;d!==a.length;d++){var e=a[d];e>b&&(b=e),c>e&&(c=e)}this.maxValue=b,this.minValue=c},d.prototype.computeMomentOfInertia=function(a){return Number.MAX_VALUE},d.prototype.updateBoundingRadius=function(){this.boundingRadius=Number.MAX_VALUE},d.prototype.updateArea=function(){for(var a=this.heights,b=0,c=0;cs){var t=r;r=s,s=t}for(var u=0;u=0&&(f.sub(m,o,n),f.rotate(m,m,d+Math.PI/2),f.normalize(m,m),b.reportIntersection(a,v,m,-1),a.shouldStop(b)))return}}},{"../math/vec2":30,"../utils/Utils":57,"./Shape":45}],42:[function(a,b,c){function d(a){"number"==typeof arguments[0]&&(a={length:arguments[0]},console.warn("The Line constructor signature has changed. Please use the following format: new Line({ length: 1, ... })")),a=a||{},this.length=a.length||1,a.type=e.LINE,e.call(this,a)}var e=a("./Shape"),f=a("../math/vec2");b.exports=d,d.prototype=new e,d.prototype.constructor=d,d.prototype.computeMomentOfInertia=function(a){return a*Math.pow(this.length,2)/12},d.prototype.updateBoundingRadius=function(){this.boundingRadius=this.length/2};var g=[f.create(),f.create()];d.prototype.computeAABB=function(a,b,c){var d=this.length/2;f.set(g[0],-d,0),f.set(g[1],d,0),a.setFromPoints(g,b,c,0)};var h=(f.create(),f.create()),i=f.create(),j=f.create(),k=f.fromValues(0,1);d.prototype.raycast=function(a,b,c,d){var e=b.from,g=b.to,l=i,m=j,n=this.length/2;f.set(l,-n,0),f.set(m,n,0),f.toGlobalFrame(l,l,c,d),f.toGlobalFrame(m,m,c,d);var o=f.getLineSegmentsIntersectionFraction(l,m,e,g);if(o>=0){var p=h;f.rotate(p,k,d),b.reportIntersection(a,o,p,-1)}}},{"../math/vec2":30,"./Shape":45}],43:[function(a,b,c){function d(a){a=a||{},a.type=e.PARTICLE,e.call(this,a)}var e=a("./Shape"),f=a("../math/vec2");b.exports=d,d.prototype=new e,d.prototype.constructor=d,d.prototype.computeMomentOfInertia=function(a){return 0},d.prototype.updateBoundingRadius=function(){this.boundingRadius=0},d.prototype.computeAABB=function(a,b,c){f.copy(a.lowerBound,b),f.copy(a.upperBound,b)}},{"../math/vec2":30,"./Shape":45}],44:[function(a,b,c){function d(a){a=a||{},a.type=e.PLANE,e.call(this,a)}var e=a("./Shape"),f=a("../math/vec2");a("../utils/Utils");b.exports=d,d.prototype=new e,d.prototype.constructor=d,d.prototype.computeMomentOfInertia=function(a){return 0},d.prototype.updateBoundingRadius=function(){this.boundingRadius=Number.MAX_VALUE},d.prototype.computeAABB=function(a,b,c){var d=c%(2*Math.PI),e=f.set,g=Number.MAX_VALUE,h=a.lowerBound,i=a.upperBound;0===d?(e(h,-g,-g),e(i,g,0)):d===Math.PI/2?(e(h,0,-g),e(i,g,g)):d===Math.PI?(e(h,-g,0),e(i,g,g)):d===3*Math.PI/2?(e(h,-g,-g),e(i,0,g)):(e(h,-g,-g),e(i,g,g)),f.add(h,h,b),f.add(i,i,b)},d.prototype.updateArea=function(){this.area=Number.MAX_VALUE};var g=f.create(),h=(f.create(),f.create(),f.create()),i=f.create();d.prototype.raycast=function(a,b,c,d){var e=b.from,j=b.to,k=b.direction,l=g,m=h,n=i;f.set(m,0,1),f.rotate(m,m,d),f.sub(n,e,c);var o=f.dot(n,m);f.sub(n,j,c);var p=f.dot(n,m);if(!(o*p>0||f.squaredDistance(e,j)=w*w)break}for(d.updateMultipliers(k,q,1/a),x=0;x!==l;x++){var z=k[x];if(z instanceof i){for(var A=0,B=0;B!==z.contactEquations.length;B++)A+=z.contactEquations[B].multiplier;A*=z.frictionCoefficient/z.contactEquations.length,z.maxForce=A,z.minForce=-A}}}for(c=0;c!==g;c++){for(w=0,x=0;x!==l;x++){v=k[x];var y=d.iterateEquation(x,v,v.epsilon,u,t,q,p,a,c);w+=Math.abs(y)}if(this.usedIterations++,m>=w*w)break}for(r=0;r!==o;r++)n[r].addConstraintVelocity();d.updateMultipliers(k,q,1/a)}},d.updateMultipliers=function(a,b,c){for(var d=a.length;d--;)a[d].multiplier=b[d]*c},d.iterateEquation=function(a,b,c,d,e,f,g,h,i){var j=d[a],k=e[a],l=f[a],m=b.computeGWlambda(),n=b.maxForce,o=b.minForce;g&&(j=0);var p=k*(j-m-c*l),q=l+p;return o*h>q?p=o*h-l:q>n*h&&(p=n*h-l),f[a]+=p,b.addToWlambda(p),p}},{"../equations/FrictionEquation":23,"../math/vec2":30,"../utils/Utils":57,"./Solver":47}],47:[function(a,b,c){function d(a,b){a=a||{},e.call(this),this.type=b,this.equations=[],this.equationSortFunction=a.equationSortFunction||!1}var e=(a("../utils/Utils"),a("../events/EventEmitter"));b.exports=d,d.prototype=new e,d.prototype.constructor=d,d.prototype.solve=function(a,b){throw new Error("Solver.solve should be implemented by subclasses!")};var f={bodies:[]};d.prototype.solveIsland=function(a,b){this.removeAllEquations(),b.equations.length&&(this.addEquations(b.equations),f.bodies.length=0,b.getBodies(f.bodies),f.bodies.length&&this.solve(a,f))},d.prototype.sortEquations=function(){this.equationSortFunction&&this.equations.sort(this.equationSortFunction)},d.prototype.addEquation=function(a){a.enabled&&this.equations.push(a)},d.prototype.addEquations=function(a){for(var b=0,c=a.length;b!==c;b++){var d=a[b];d.enabled&&this.equations.push(d)}},d.prototype.removeEquation=function(a){var b=this.equations.indexOf(a);-1!==b&&this.equations.splice(b,1)},d.prototype.removeAllEquations=function(){this.equations.length=0},d.GS=1,d.ISLAND=2},{"../events/EventEmitter":26,"../utils/Utils":57}],48:[function(a,b,c){function d(){f.apply(this,arguments)}var e=a("../equations/ContactEquation"),f=a("./Pool");b.exports=d,d.prototype=new f,d.prototype.constructor=d,d.prototype.create=function(){return new e},d.prototype.destroy=function(a){return a.bodyA=a.bodyB=null,this}},{"../equations/ContactEquation":21,"./Pool":55}],49:[function(a,b,c){function d(){f.apply(this,arguments)}var e=a("../equations/FrictionEquation"),f=a("./Pool");b.exports=d,d.prototype=new f,d.prototype.constructor=d,d.prototype.create=function(){return new e},d.prototype.destroy=function(a){return a.bodyA=a.bodyB=null,this}},{"../equations/FrictionEquation":23,"./Pool":55}],50:[function(a,b,c){function d(){f.apply(this,arguments)}var e=a("../world/IslandNode"),f=a("./Pool");b.exports=d,d.prototype=new f,d.prototype.constructor=d,d.prototype.create=function(){return new e},d.prototype.destroy=function(a){return a.reset(),this}},{"../world/IslandNode":60,"./Pool":55}],51:[function(a,b,c){function d(){f.apply(this,arguments)}var e=a("../world/Island"),f=a("./Pool");b.exports=d,d.prototype=new f,d.prototype.constructor=d,d.prototype.create=function(){return new e},d.prototype.destroy=function(a){return a.reset(),this}},{"../world/Island":58,"./Pool":55}],52:[function(a,b,c){function d(){this.overlappingShapesLastState=new e,this.overlappingShapesCurrentState=new e,this.recordPool=new f({size:16}),this.tmpDict=new e,this.tmpArray1=[]}var e=a("./TupleDictionary"),f=(a("./OverlapKeeperRecord"),a("./OverlapKeeperRecordPool"));a("./Utils");b.exports=d,d.prototype.tick=function(){for(var a=this.overlappingShapesLastState,b=this.overlappingShapesCurrentState,c=a.keys.length;c--;){var d=a.keys[c],e=a.getByKey(d);b.getByKey(d);e&&this.recordPool.release(e)}a.reset(),a.copy(b),b.reset()},d.prototype.setOverlapping=function(a,b,c,d){var e=(this.overlappingShapesLastState,this.overlappingShapesCurrentState);if(!e.get(b.id,d.id)){var f=this.recordPool.get();f.set(a,b,c,d),e.set(b.id,d.id,f)}},d.prototype.getNewOverlaps=function(a){return this.getDiff(this.overlappingShapesLastState,this.overlappingShapesCurrentState,a)},d.prototype.getEndOverlaps=function(a){return this.getDiff(this.overlappingShapesCurrentState,this.overlappingShapesLastState,a)},d.prototype.bodiesAreOverlapping=function(a,b){for(var c=this.overlappingShapesCurrentState,d=c.keys.length;d--;){var e=c.keys[d],f=c.data[e];if(f.bodyA===a&&f.bodyB===b||f.bodyA===b&&f.bodyB===a)return!0}return!1},d.prototype.getDiff=function(a,b,c){var c=c||[],d=a,e=b;c.length=0;for(var f=e.keys.length;f--;){var g=e.keys[f],h=e.data[g];if(!h)throw new Error("Key "+g+" had no data!");var i=d.data[g];i||c.push(h)}return c},d.prototype.isNewOverlap=function(a,b){var c=0|a.id,d=0|b.id,e=this.overlappingShapesLastState,f=this.overlappingShapesCurrentState;return!e.get(c,d)&&!!f.get(c,d)},d.prototype.getNewBodyOverlaps=function(a){this.tmpArray1.length=0;var b=this.getNewOverlaps(this.tmpArray1);return this.getBodyDiff(b,a)},d.prototype.getEndBodyOverlaps=function(a){this.tmpArray1.length=0;var b=this.getEndOverlaps(this.tmpArray1);return this.getBodyDiff(b,a)},d.prototype.getBodyDiff=function(a,b){b=b||[];for(var c=this.tmpDict,d=a.length;d--;){var e=a[d];c.set(0|e.bodyA.id,0|e.bodyB.id,e)}for(d=c.keys.length;d--;){var e=c.getByKey(c.keys[d]);e&&b.push(e.bodyA,e.bodyB)}return c.reset(),b}},{"./OverlapKeeperRecord":53,"./OverlapKeeperRecordPool":54,"./TupleDictionary":56,"./Utils":57}],53:[function(a,b,c){function d(a,b,c,d){this.shapeA=b,this.shapeB=d,this.bodyA=a,this.bodyB=c}b.exports=d,d.prototype.set=function(a,b,c,e){d.call(this,a,b,c,e)}},{}],54:[function(a,b,c){function d(){f.apply(this,arguments)}var e=a("./OverlapKeeperRecord"),f=a("./Pool");b.exports=d,d.prototype=new f,d.prototype.constructor=d,d.prototype.create=function(){return new e},d.prototype.destroy=function(a){return a.bodyA=a.bodyB=a.shapeA=a.shapeB=null,this}},{"./OverlapKeeperRecord":53,"./Pool":55}],55:[function(a,b,c){function d(a){a=a||{},this.objects=[],void 0!==a.size&&this.resize(a.size)}b.exports=d,d.prototype.resize=function(a){for(var b=this.objects;b.length>a;)b.pop();for(;b.length(0|b)?a<<16|65535&b:b<<16|65535&a)},d.prototype.getByKey=function(a){return a=0|a,this.data[a]},d.prototype.get=function(a,b){return this.data[this.getKey(a,b)]},d.prototype.set=function(a,b,c){if(!c)throw new Error("No data!");var d=this.getKey(a,b);return this.data[d]||this.keys.push(d),this.data[d]=c,d},d.prototype.reset=function(){for(var a=this.data,b=this.keys,c=b.length;c--;)delete a[b[c]];b.length=0},d.prototype.copy=function(a){this.reset(),e.appendArray(this.keys,a.keys);for(var b=a.keys.length;b--;){var c=a.keys[b];this.data[c]=a.data[c]}}},{"./Utils":57}],57:[function(a,b,c){function d(){}b.exports=d,d.appendArray=function(a,b){if(b.length<15e4)a.push.apply(a,b);else for(var c=0,d=b.length;c!==d;++c)a.push(b[c])},d.splice=function(a,b,c){c=c||1;for(var d=b,e=a.length-c;e>d;d++)a[d]=a[d+c];a.length=e},"undefined"!=typeof P2_ARRAY_TYPE?d.ARRAY_TYPE=P2_ARRAY_TYPE:"undefined"!=typeof Float32Array?d.ARRAY_TYPE=Float32Array:d.ARRAY_TYPE=Array,d.extend=function(a,b){for(var c in b)a[c]=b[c]},d.defaults=function(a,b){a=a||{};for(var c in b)c in a||(a[c]=b[c]);return a}},{}],58:[function(a,b,c){function d(){this.equations=[],this.bodies=[]}var e=a("../objects/Body");b.exports=d,d.prototype.reset=function(){this.equations.length=this.bodies.length=0};var f=[];d.prototype.getBodies=function(a){var b=a||[],c=this.equations;f.length=0;for(var d=0;d!==c.length;d++){var e=c[d];-1===f.indexOf(e.bodyA.id)&&(b.push(e.bodyA),f.push(e.bodyA.id)),-1===f.indexOf(e.bodyB.id)&&(b.push(e.bodyB),f.push(e.bodyB.id))}return b},d.prototype.wantsToSleep=function(){for(var a=0;a=a&&c>d;)this.internalStep(a),this.time+=a,this.accumulator-=a,d++;for(var e=this.accumulator%a/a,g=0;g!==this.bodies.length;g++){var h=this.bodies[g];f.lerp(h.interpolatedPosition,h.previousPosition,h.position,e),h.interpolatedAngle=h.previousAngle+e*(h.angle-h.previousAngle)}}};var y=[];d.prototype.internalStep=function(a){this.stepping=!0;var b=this.springs.length,c=this.springs,e=this.bodies,g=this.gravity,h=this.solver,i=this.bodies.length,j=this.broadphase,k=this.narrowphase,l=this.constraints,n=v,o=(f.scale,f.add),p=(f.rotate,this.islandManager);if(this.overlapKeeper.tick(),this.lastTimeStep=a,this.useWorldGravityAsFrictionGravity){var q=f.length(this.gravity);0===q&&this.useFrictionGravityOnZeroGravity||(this.frictionGravity=q)}if(this.applyGravity)for(var r=0;r!==i;r++){var t=e[r],u=t.force;t.type===m.DYNAMIC&&t.sleepState!==m.SLEEPING&&(f.scale(n,g,t.mass*t.gravityScale),o(u,u,n))}if(this.applySpringForces)for(var r=0;r!==b;r++){var w=c[r];w.applyForce()}if(this.applyDamping)for(var r=0;r!==i;r++){var t=e[r];t.type===m.DYNAMIC&&t.applyDamping(a)}for(var x=j.getCollisionPairs(this),z=this.disabledBodyCollisionPairs,r=z.length-2;r>=0;r-=2)for(var A=x.length-2;A>=0;A-=2)(z[r]===x[A]&&z[r+1]===x[A+1]||z[r+1]===x[A]&&z[r]===x[A+1])&&x.splice(A,2);var B=l.length;for(r=0;r!==B;r++){var C=l[r];if(!C.collideConnected)for(var A=x.length-2;A>=0;A-=2)(C.bodyA===x[A]&&C.bodyB===x[A+1]||C.bodyB===x[A]&&C.bodyA===x[A+1])&&x.splice(A,2)}this.postBroadphaseEvent.pairs=x,this.emit(this.postBroadphaseEvent),this.postBroadphaseEvent.pairs=null,k.reset(this);for(var r=0,D=x.length;r!==D;r+=2)for(var E=x[r],F=x[r+1],G=0,H=E.shapes.length;G!==H;G++)for(var I=E.shapes[G],J=I.position,K=I.angle,L=0,M=F.shapes.length;L!==M;L++){var N=F.shapes[L],O=N.position,P=N.angle,Q=this.defaultContactMaterial;if(I.material&&N.material){var R=this.getContactMaterial(I.material,N.material);R&&(Q=R)}this.runNarrowphase(k,E,I,J,K,F,N,O,P,Q,this.frictionGravity)}for(var r=0;r!==i;r++){var S=e[r];S._wakeUpAfterNarrowphase&&(S.wakeUp(),S._wakeUpAfterNarrowphase=!1)}if(this.has("endContact")){this.overlapKeeper.getEndOverlaps(y);for(var T=this.endContactEvent,L=y.length;L--;){var U=y[L];T.shapeA=U.shapeA,T.shapeB=U.shapeB,T.bodyA=U.bodyA,T.bodyB=U.bodyB,this.emit(T)}y.length=0}var V=this.preSolveEvent;V.contactEquations=k.contactEquations,V.frictionEquations=k.frictionEquations,this.emit(V),V.contactEquations=V.frictionEquations=null;var B=l.length;for(r=0;r!==B;r++)l[r].update();if(k.contactEquations.length||k.frictionEquations.length||B)if(this.islandSplit){for(p.equations.length=0,s.appendArray(p.equations,k.contactEquations),s.appendArray(p.equations,k.frictionEquations),r=0;r!==B;r++)s.appendArray(p.equations,l[r].equations);p.split(this);for(var r=0;r!==p.islands.length;r++){var W=p.islands[r];W.equations.length&&h.solveIsland(a,W)}}else{for(h.addEquations(k.contactEquations),h.addEquations(k.frictionEquations),r=0;r!==B;r++)h.addEquations(l[r].equations);this.solveConstraints&&h.solve(a,this),h.removeAllEquations()}for(var r=0;r!==i;r++){var S=e[r];S.integrate(a)}for(var r=0;r!==i;r++)e[r].setZeroForce();if(this.emitImpactEvent&&this.has("impact"))for(var X=this.impactEvent,r=0;r!==k.contactEquations.length;r++){var Y=k.contactEquations[r];Y.firstImpact&&(X.bodyA=Y.bodyA,X.bodyB=Y.bodyB,X.shapeA=Y.shapeA,X.shapeB=Y.shapeB,X.contactEquation=Y,this.emit(X))}if(this.sleepMode===d.BODY_SLEEPING)for(r=0;r!==i;r++)e[r].sleepTick(this.time,!1,a);else if(this.sleepMode===d.ISLAND_SLEEPING&&this.islandSplit){for(r=0;r!==i;r++)e[r].sleepTick(this.time,!0,a);for(var r=0;r0,a.frictionCoefficient=k.friction;var p;p=b.type===m.STATIC||b.type===m.KINEMATIC?g.mass:g.type===m.STATIC||g.type===m.KINEMATIC?b.mass:b.mass*g.mass/(b.mass+g.mass),a.slipForce=k.friction*l*p,a.restitution=k.restitution,a.surfaceVelocity=k.surfaceVelocity,a.frictionStiffness=k.frictionStiffness,a.frictionRelaxation=k.frictionRelaxation,a.stiffness=k.stiffness,a.relaxation=k.relaxation,a.contactSkinSize=k.contactSkinSize,a.enabledEquations=b.collisionResponse&&g.collisionResponse&&c.collisionResponse&&h.collisionResponse;var q=a[c.type|h.type],r=0;if(q){var s=c.sensor||h.sensor,t=a.frictionEquations.length;r=c.type=2*y&&(b._wakeUpAfterNarrowphase=!0)}if(g.allowSleep&&g.type===m.DYNAMIC&&g.sleepState===m.SLEEPING&&b.sleepState===m.AWAKE&&b.type!==m.STATIC){var z=f.squaredLength(b.velocity)+Math.pow(b.angularVelocity,2),A=Math.pow(b.sleepSpeedLimit,2);z>=2*A&&(g._wakeUpAfterNarrowphase=!0)}if(this.overlapKeeper.setOverlapping(b,c,g,h),this.has("beginContact")&&this.overlapKeeper.isNewOverlap(c,h)){var B=this.beginContactEvent;if(B.shapeA=c,B.shapeB=h,B.bodyA=b,B.bodyB=g,B.contactEquations.length=0,"number"==typeof r)for(var C=a.contactEquations.length-r;C1)for(var C=a.frictionEquations.length-u;C=0;b--)this.removeConstraint(a[b]);for(var c=this.bodies,b=c.length-1;b>=0;b--)this.removeBody(c[b]);for(var e=this.springs,b=e.length-1;b>=0;b--)this.removeSpring(e[b]);for(var f=this.contactMaterials,b=f.length-1;b>=0;b--)this.removeContactMaterial(f[b]);d.apply(this)};var z=f.create(),A=(f.fromValues(0,0),f.fromValues(0,0));d.prototype.hitTest=function(a,b,c){c=c||0;var d=new m({position:a}),e=new k,l=a,n=0,o=z,p=A;d.addShape(e);for(var q=this.narrowphase,r=[],s=0,t=b.length;s!==t;s++)for(var u=b[s],v=0,w=u.shapes.length;v!==w;v++){var x=u.shapes[v];f.rotate(o,x.position,u.angle),f.add(o,o,u.position);var y=x.angle+u.angle;(x instanceof g&&q.circleParticle(u,x,o,y,d,e,l,n,!0)||x instanceof h&&q.particleConvex(d,e,l,n,u,x,o,y,!0)||x instanceof i&&q.particlePlane(d,e,l,n,u,x,o,y,!0)||x instanceof j&&q.particleCapsule(d,e,l,n,u,x,o,y,!0)||x instanceof k&&f.squaredLength(f.sub(p,o,a))=0&&1>=i&&j>=0&&1>=j}},{"./Scalar":4}],2:[function(a,b,c){function d(){}b.exports=d,d.area=function(a,b,c){return(b[0]-a[0])*(c[1]-a[1])-(c[0]-a[0])*(b[1]-a[1])},d.left=function(a,b,c){return d.area(a,b,c)>0},d.leftOn=function(a,b,c){return d.area(a,b,c)>=0},d.right=function(a,b,c){return d.area(a,b,c)<0},d.rightOn=function(a,b,c){return d.area(a,b,c)<=0};var e=[],f=[];d.collinear=function(a,b,c,g){if(g){var h=e,i=f;h[0]=b[0]-a[0],h[1]=b[1]-a[1],i[0]=c[0]-b[0],i[1]=c[1]-b[1];var j=h[0]*i[0]+h[1]*i[1],k=Math.sqrt(h[0]*h[0]+h[1]*h[1]),l=Math.sqrt(i[0]*i[0]+i[1]*i[1]),m=Math.acos(j/(k*l));return g>m}return 0==d.area(a,b,c)},d.sqdist=function(a,b){var c=b[0]-a[0],d=b[1]-a[1];return c*c+d*d}},{}],3:[function(a,b,c){function d(){this.vertices=[]}function e(a,b,c,d,e){e=e||0;var f=b[1]-a[1],g=a[0]-b[0],i=f*a[0]+g*a[1],j=d[1]-c[1],k=c[0]-d[0],l=j*c[0]+k*c[1],m=f*k-j*g;return h.eq(m,0,e)?[0,0]:[(k*i-g*l)/m,(f*l-j*i)/m]}var f=a("./Line"),g=a("./Point"),h=a("./Scalar");b.exports=d,d.prototype.at=function(a){var b=this.vertices,c=b.length;return b[0>a?a%c+c:a%c]},d.prototype.first=function(){return this.vertices[0]},d.prototype.last=function(){return this.vertices[this.vertices.length-1]},d.prototype.clear=function(){this.vertices.length=0},d.prototype.append=function(a,b,c){if("undefined"==typeof b)throw new Error("From is not given!");if("undefined"==typeof c)throw new Error("To is not given!");if(b>c-1)throw new Error("lol1");if(c>a.vertices.length)throw new Error("lol2");if(0>b)throw new Error("lol3");for(var d=b;c>d;d++)this.vertices.push(a.vertices[d])},d.prototype.makeCCW=function(){for(var a=0,b=this.vertices,c=1;cb[a][0])&&(a=c);g.left(this.at(a-1),this.at(a),this.at(a+1))||this.reverse()},d.prototype.reverse=function(){for(var a=[],b=0,c=this.vertices.length;b!==c;b++)a.push(this.vertices.pop());this.vertices=a},d.prototype.isReflex=function(a){return g.right(this.at(a-1),this.at(a),this.at(a+1))};var i=[],j=[];d.prototype.canSee=function(a,b){var c,d,e=i,h=j;if(g.leftOn(this.at(a+1),this.at(a),this.at(b))&&g.rightOn(this.at(a-1),this.at(a),this.at(b)))return!1;d=g.sqdist(this.at(a),this.at(b));for(var k=0;k!==this.vertices.length;++k)if((k+1)%this.vertices.length!==a&&k!==a&&g.leftOn(this.at(a),this.at(b),this.at(k+1))&&g.rightOn(this.at(a),this.at(b),this.at(k))&&(e[0]=this.at(a),e[1]=this.at(b),h[0]=this.at(k),h[1]=this.at(k+1),c=f.lineInt(e,h),g.sqdist(this.at(a),c)a)for(var f=a;b>=f;f++)e.vertices.push(this.vertices[f]);else{for(var f=0;b>=f;f++)e.vertices.push(this.vertices[f]);for(var f=a;f0?this.slice(a):[this]},d.prototype.slice=function(a){if(0==a.length)return[this];if(a instanceof Array&&a.length&&a[0]instanceof Array&&2==a[0].length&&a[0][0]instanceof Array){for(var b=[this],c=0;cc;c++)if(f.segmentsIntersect(a[b],a[b+1],a[c],a[c+1]))return!1;for(var b=1;bh)return console.warn("quickDecomp: max level ("+h+") reached."),a;for(var x=0;xo&&(n=o,k=l,r=y))),g.left(v.at(x+1),v.at(x),v.at(y+1))&&g.rightOn(v.at(x+1),v.at(x),v.at(y))&&(l=e(v.at(x+1),v.at(x),v.at(y),v.at(y+1)),g.left(v.at(x-1),v.at(x),l)&&(o=g.sqdist(v.vertices[x],l),m>o&&(m=o,j=l,q=y)));if(r==(q+1)%this.vertices.length)l[0]=(k[0]+j[0])/2,l[1]=(k[1]+j[1])/2,c.push(l),q>x?(t.append(v,x,q+1),t.vertices.push(l),u.vertices.push(l),0!=r&&u.append(v,r,v.vertices.length),u.append(v,0,x+1)):(0!=x&&t.append(v,x,v.vertices.length),t.append(v,0,q+1),t.vertices.push(l),u.vertices.push(l),u.append(v,r,x+1));else{if(r>q&&(q+=this.vertices.length),p=Number.MAX_VALUE,r>q)return a;for(var y=r;q>=y;++y)g.leftOn(v.at(x-1),v.at(x),v.at(y))&&g.rightOn(v.at(x+1),v.at(x),v.at(y))&&(o=g.sqdist(v.at(x),v.at(y)),p>o&&(p=o,s=y%this.vertices.length));s>x?(t.append(v,x,s+1),0!=s&&u.append(v,s,w.length),u.append(v,0,x+1)):(0!=x&&t.append(v,x,w.length),t.append(v,0,s+1),u.append(v,s,x+1))}return t.vertices.length3&&c>=0;--c)g.collinear(this.at(c-1),this.at(c),this.at(c+1),a)&&(this.vertices.splice(c%this.vertices.length,1),c--,b++);return b}},{"./Line":1,"./Point":2,"./Scalar":4}],4:[function(a,b,c){function d(){}b.exports=d,d.eq=function(a,b,c){return c=c||0,Math.abs(a-b) (http://steffe.se)",keywords:["p2.js","p2","physics","engine","2d"],main:"./src/p2.js",engines:{node:"*"},repository:{type:"git",url:"https://github.com/schteppe/p2.js.git"},bugs:{url:"https://github.com/schteppe/p2.js/issues"},licenses:[{type:"MIT"}],devDependencies:{grunt:"^0.4.5","grunt-contrib-jshint":"^0.11.2","grunt-contrib-nodeunit":"^0.4.1","grunt-contrib-uglify":"~0.4.0","grunt-contrib-watch":"~0.5.0","grunt-browserify":"~2.0.1","grunt-contrib-concat":"^0.4.0"},dependencies:{"poly-decomp":"0.1.0"}}},{}],7:[function(a,b,c){function d(a){this.lowerBound=e.create(),a&&a.lowerBound&&e.copy(this.lowerBound,a.lowerBound),this.upperBound=e.create(),a&&a.upperBound&&e.copy(this.upperBound,a.upperBound)}var e=a("../math/vec2");a("../utils/Utils");b.exports=d;var f=e.create();d.prototype.setFromPoints=function(a,b,c,d){var g=this.lowerBound,h=this.upperBound;"number"!=typeof c&&(c=0),0!==c?e.rotate(g,a[0],c):e.copy(g,a[0]),e.copy(h,g);for(var i=Math.cos(c),j=Math.sin(c),k=1;ko;o++)l[o]>h[o]&&(h[o]=l[o]),l[o]c&&(this.lowerBound[b]=c);var d=a.upperBound[b];this.upperBound[b]i?-1:h>i?-1:h}},{"../math/vec2":30,"../utils/Utils":57}],8:[function(a,b,c){function d(a){this.type=a,this.result=[],this.world=null,this.boundingVolumeType=d.AABB}var e=a("../math/vec2"),f=a("../objects/Body");b.exports=d,d.AABB=1,d.BOUNDING_CIRCLE=2,d.prototype.setWorld=function(a){this.world=a},d.prototype.getCollisionPairs=function(a){};var g=e.create();d.boundingRadiusCheck=function(a,b){e.sub(g,a.position,b.position);var c=e.squaredLength(g),d=a.boundingRadius+b.boundingRadius;return d*d>=c},d.aabbCheck=function(a,b){return a.getAABB().overlaps(b.getAABB())},d.prototype.boundingVolumeCheck=function(a,b){var c;switch(this.boundingVolumeType){case d.BOUNDING_CIRCLE:c=d.boundingRadiusCheck(a,b);break;case d.AABB:c=d.aabbCheck(a,b);break;default:throw new Error("Bounding volume type not recognized: "+this.boundingVolumeType)}return c},d.canCollide=function(a,b){var c=f.KINEMATIC,d=f.STATIC;return a.type===d&&b.type===d?!1:a.type===c&&b.type===d||a.type===d&&b.type===c?!1:a.type===c&&b.type===c?!1:a.sleepState===f.SLEEPING&&b.sleepState===f.SLEEPING?!1:!(a.sleepState===f.SLEEPING&&b.type===d||b.sleepState===f.SLEEPING&&a.type===d)},d.NAIVE=1,d.SAP=2},{"../math/vec2":30,"../objects/Body":31}],9:[function(a,b,c){function d(){e.call(this,e.NAIVE)}var e=(a("../shapes/Circle"),a("../shapes/Plane"),a("../shapes/Shape"),a("../shapes/Particle"),a("../collision/Broadphase"));a("../math/vec2");b.exports=d,d.prototype=new e,d.prototype.constructor=d,d.prototype.getCollisionPairs=function(a){var b=a.bodies,c=this.result;c.length=0;for(var d=0,f=b.length;d!==f;d++)for(var g=b[d],h=0;d>h;h++){var i=b[h];e.canCollide(g,i)&&this.boundingVolumeCheck(g,i)&&c.push(g,i)}return c},d.prototype.aabbQuery=function(a,b,c){c=c||[];for(var d=a.bodies,e=0;e=r*n)return!1;n=r}return!0}var g=a("../math/vec2"),h=g.sub,i=g.add,j=g.dot,k=(a("../utils/Utils"),a("../utils/ContactEquationPool")),l=a("../utils/FrictionEquationPool"),m=a("../utils/TupleDictionary"),n=a("../equations/Equation"),o=(a("../equations/ContactEquation"),a("../equations/FrictionEquation"),a("../shapes/Circle")),p=a("../shapes/Convex"),q=a("../shapes/Shape"),r=(a("../objects/Body"),a("../shapes/Box"));b.exports=d;var s=g.fromValues(0,1),t=g.fromValues(0,0),u=g.fromValues(0,0),v=g.fromValues(0,0),w=g.fromValues(0,0),x=g.fromValues(0,0),y=g.fromValues(0,0),z=g.fromValues(0,0),A=g.fromValues(0,0),B=g.fromValues(0,0),C=g.fromValues(0,0),D=g.fromValues(0,0),E=g.fromValues(0,0),F=g.fromValues(0,0),G=g.fromValues(0,0),H=g.fromValues(0,0),I=g.fromValues(0,0),J=g.fromValues(0,0),K=g.fromValues(0,0),L=[],M=g.create(),N=g.create();d.prototype.bodiesOverlap=function(a,b){for(var c=M,d=N,e=0,f=a.shapes.length;e!==f;e++){var g=a.shapes[e];a.toWorldFrame(c,g.position);for(var h=0,i=b.shapes.length;h!==i;h++){var j=b.shapes[h];if(b.toWorldFrame(d,j.position),this[g.type|j.type](a,g,c,g.angle+a.angle,b,j,d,j.angle+b.angle,!0))return!0}}return!1},d.prototype.collidedLastStep=function(a,b){var c=0|a.id,d=0|b.id;return!!this.collidingBodiesLastStep.get(c,d)},d.prototype.reset=function(){this.collidingBodiesLastStep.reset();for(var a=this.contactEquations,b=a.length;b--;){var c=a[b],d=c.bodyA.id,e=c.bodyB.id;this.collidingBodiesLastStep.set(d,e,!0)}for(var f=this.contactEquations,g=this.frictionEquations,h=0;hp;p++){g.set(m,(0===p?-1:1)*b.length/2,0),g.rotate(m,m,d),g.add(m,m,c);for(var q=0;2>q;q++){g.set(n,(0===q?-1:1)*h.length/2,0),g.rotate(n,n,j),g.add(n,n,i),this.enableFrictionReduction&&(l=this.enableFriction,this.enableFriction=!1);var r=this.circleCircle(a,b,m,d,f,h,n,j,k,b.radius,h.radius);if(this.enableFrictionReduction&&(this.enableFriction=l),k&&r)return!0;o+=r}}this.enableFrictionReduction&&(l=this.enableFriction,this.enableFriction=!1);var s=S;e(s,b);var t=this.convexCapsule(a,s,c,d,f,h,i,j,k);if(this.enableFrictionReduction&&(this.enableFriction=l),k&&t)return!0;if(o+=t,this.enableFrictionReduction){var l=this.enableFriction;this.enableFriction=!1}e(s,h);var u=this.convexCapsule(f,s,i,j,a,b,c,d,k);return this.enableFrictionReduction&&(this.enableFriction=l),k&&u?!0:(o+=u,this.enableFrictionReduction&&o&&this.enableFriction&&this.frictionEquations.push(this.createFrictionFromAverage(o)),o)},d.prototype[q.LINE|q.LINE]=d.prototype.lineLine=function(a,b,c,d,e,f,g,h,i){return i?!1:0},d.prototype[q.PLANE|q.LINE]=d.prototype.planeLine=function(a,b,c,d,e,f,k,l,m){var n=t,o=u,p=v,q=w,r=x,C=y,D=z,E=A,F=B,G=L,H=0;g.set(n,-f.length/2,0),g.set(o,f.length/2,0),g.rotate(p,n,l),g.rotate(q,o,l),i(p,p,k),i(q,q,k),g.copy(n,p),g.copy(o,q),h(r,o,n),g.normalize(C,r),g.rotate90cw(F,C),g.rotate(E,s,d),G[0]=n,G[1]=o;for(var I=0;IK){if(m)return!0;var M=this.createContactEquation(a,e,b,f);H++,g.copy(M.normalA,E),g.normalize(M.normalA,M.normalA),g.scale(D,E,K),h(M.contactPointA,J,D),h(M.contactPointA,M.contactPointA,a.position),h(M.contactPointB,J,k),i(M.contactPointB,M.contactPointB,k),h(M.contactPointB,M.contactPointB,e.position),this.contactEquations.push(M),this.enableFrictionReduction||this.enableFriction&&this.frictionEquations.push(this.createFrictionFromContact(M))}}return m?!1:(this.enableFrictionReduction||H&&this.enableFriction&&this.frictionEquations.push(this.createFrictionFromAverage(H)),H)},d.prototype[q.PARTICLE|q.CAPSULE]=d.prototype.particleCapsule=function(a,b,c,d,e,f,g,h,i){return this.circleLine(a,b,c,d,e,f,g,h,i,f.radius,0)},d.prototype[q.CIRCLE|q.LINE]=d.prototype.circleLine=function(a,b,c,d,e,f,k,l,m,n,o){var n=n||0,o="undefined"!=typeof o?o:b.radius,p=t,q=u,r=v,s=w,H=x,I=y,J=z,K=A,M=B,N=C,O=D,P=E,Q=F,R=G,S=L;g.set(K,-f.length/2,0),g.set(M,f.length/2,0),g.rotate(N,K,l),g.rotate(O,M,l),i(N,N,k),i(O,O,k),g.copy(K,N),g.copy(M,O),h(I,M,K),g.normalize(J,I),g.rotate90cw(H,J),h(P,c,K);var T=j(P,H);h(s,K,k),h(Q,c,k);var U=o+n;if(Math.abs(T)W&&X>V){if(m)return!0;var Y=this.createContactEquation(a,e,b,f);return g.scale(Y.normalA,p,-1),g.normalize(Y.normalA,Y.normalA),g.scale(Y.contactPointA,Y.normalA,o),i(Y.contactPointA,Y.contactPointA,c),h(Y.contactPointA,Y.contactPointA,a.position),h(Y.contactPointB,r,k),i(Y.contactPointB,Y.contactPointB,k),h(Y.contactPointB,Y.contactPointB,e.position),this.contactEquations.push(Y),this.enableFriction&&this.frictionEquations.push(this.createFrictionFromContact(Y)),1}}S[0]=K,S[1]=M;for(var Z=0;ZQ&&(g.copy(J,B),L=Q,g.scale(A,s,Q),g.add(A,A,B),K=!0)}}if(K){if(m)return!0;var R=this.createContactEquation(a,e,b,j);return g.sub(R.normalA,J,c),g.normalize(R.normalA,R.normalA),g.scale(R.contactPointA,R.normalA,n),i(R.contactPointA,R.contactPointA,c),h(R.contactPointA,R.contactPointA,a.position),h(R.contactPointB,A,k),i(R.contactPointB,R.contactPointB,k),h(R.contactPointB,R.contactPointB,e.position),this.contactEquations.push(R),this.enableFriction&&this.frictionEquations.push(this.createFrictionFromContact(R)),1}if(n>0)for(var N=0;NQ&&(I=Q,g.scale(E,s,Q),g.add(E,E,c),g.copy(H,s),L=!0)}if(L){var R=this.createContactEquation(a,e,b,k);return g.scale(R.normalA,H,-1),g.normalize(R.normalA,R.normalA),g.set(R.contactPointA,0,0),i(R.contactPointA,R.contactPointA,c),h(R.contactPointA,R.contactPointA,a.position),h(R.contactPointB,E,l),i(R.contactPointB,R.contactPointB,l),h(R.contactPointB,R.contactPointB,e.position),this.contactEquations.push(R),this.enableFriction&&this.frictionEquations.push(this.createFrictionFromContact(R)),1}return 0},d.prototype[q.CIRCLE]=d.prototype.circleCircle=function(a,b,c,d,e,f,j,k,l,m,n){var o=t,m=m||b.radius,n=n||f.radius;h(o,c,j);var p=m+n;if(g.squaredLength(o)>Math.pow(p,2))return 0;if(l)return!0;var q=this.createContactEquation(a,e,b,f);return h(q.normalA,j,c),g.normalize(q.normalA,q.normalA),g.scale(q.contactPointA,q.normalA,m),g.scale(q.contactPointB,q.normalA,-n),i(q.contactPointA,q.contactPointA,c),h(q.contactPointA,q.contactPointA,a.position),i(q.contactPointB,q.contactPointB,j),h(q.contactPointB,q.contactPointB,e.position),this.contactEquations.push(q),this.enableFriction&&this.frictionEquations.push(this.createFrictionFromContact(q)),1},d.prototype[q.PLANE|q.CONVEX]=d.prototype[q.PLANE|q.BOX]=d.prototype.planeConvex=function(a,b,c,d,e,f,k,l,m){var n=t,o=u,p=v,q=0;g.rotate(o,s,d);for(var r=0;r!==f.vertices.length;r++){var w=f.vertices[r];if(g.rotate(n,w,l),i(n,n,k),h(p,n,c),j(p,o)<=0){if(m)return!0;q++;var x=this.createContactEquation(a,e,b,f);h(p,n,c),g.copy(x.normalA,o);var y=j(p,x.normalA);g.scale(p,x.normalA,y),h(x.contactPointB,n,e.position),h(x.contactPointA,n,p),h(x.contactPointA,x.contactPointA,a.position),this.contactEquations.push(x),this.enableFrictionReduction||this.enableFriction&&this.frictionEquations.push(this.createFrictionFromContact(x))}}return this.enableFrictionReduction&&this.enableFriction&&q&&this.frictionEquations.push(this.createFrictionFromAverage(q)),q},d.prototype[q.PARTICLE|q.PLANE]=d.prototype.particlePlane=function(a,b,c,d,e,f,i,k,l){var m=t,n=u;k=k||0,h(m,c,i),g.rotate(n,s,k);var o=j(m,n);if(o>0)return 0;if(l)return!0;var p=this.createContactEquation(e,a,f,b);return g.copy(p.normalA,n),g.scale(m,p.normalA,o),h(p.contactPointA,c,m),h(p.contactPointA,p.contactPointA,e.position),h(p.contactPointB,c,a.position),this.contactEquations.push(p),this.enableFriction&&this.frictionEquations.push(this.createFrictionFromContact(p)),1},d.prototype[q.CIRCLE|q.PARTICLE]=d.prototype.circleParticle=function(a,b,c,d,e,f,j,k,l){var m=t;if(h(m,j,c),g.squaredLength(m)>Math.pow(b.radius,2))return 0;if(l)return!0;var n=this.createContactEquation(a,e,b,f);return g.copy(n.normalA,m),g.normalize(n.normalA,n.normalA),g.scale(n.contactPointA,n.normalA,b.radius),i(n.contactPointA,n.contactPointA,c),h(n.contactPointA,n.contactPointA,a.position),h(n.contactPointB,j,e.position),this.contactEquations.push(n),this.enableFriction&&this.frictionEquations.push(this.createFrictionFromContact(n)),1};var X=new o({radius:1}),Y=g.create(),Z=g.create();g.create();d.prototype[q.PLANE|q.CAPSULE]=d.prototype.planeCapsule=function(a,b,c,d,e,f,h,j,k){var l=Y,m=Z,n=X;g.set(l,-f.length/2,0),g.rotate(l,l,j),i(l,l,h),g.set(m,f.length/2,0),g.rotate(m,m,j),i(m,m,h),n.radius=f.radius;var o;this.enableFrictionReduction&&(o=this.enableFriction,this.enableFriction=!1);var p=this.circlePlane(e,n,l,0,a,b,c,d,k),q=this.circlePlane(e,n,m,0,a,b,c,d,k);if(this.enableFrictionReduction&&(this.enableFriction=o),k)return p||q;var r=p+q;return this.enableFrictionReduction&&r&&this.frictionEquations.push(this.createFrictionFromAverage(r)),r},d.prototype[q.CIRCLE|q.PLANE]=d.prototype.circlePlane=function(a,b,c,d,e,f,k,l,m){var n=a,o=b,p=c,q=e,r=k,w=l;w=w||0;var x=t,y=u,z=v;h(x,p,r),g.rotate(y,s,w);var A=j(y,x);if(A>o.radius)return 0;if(m)return!0;var B=this.createContactEquation(q,n,f,b);return g.copy(B.normalA,y),g.scale(B.contactPointB,B.normalA,-o.radius),i(B.contactPointB,B.contactPointB,p),h(B.contactPointB,B.contactPointB,n.position),g.scale(z,B.normalA,A),h(B.contactPointA,x,z),i(B.contactPointA,B.contactPointA,r),h(B.contactPointA,B.contactPointA,q.position),this.contactEquations.push(B),this.enableFriction&&this.frictionEquations.push(this.createFrictionFromContact(B)),1},d.prototype[q.CONVEX]=d.prototype[q.CONVEX|q.BOX]=d.prototype[q.BOX]=d.prototype.convexConvex=function(a,b,c,e,f,k,l,m,n,o){var p=t,q=u,r=v,s=w,y=x,C=z,D=A,E=B,F=0,o="number"==typeof o?o:0,G=d.findSeparatingAxis(b,c,e,k,l,m,p);if(!G)return 0;h(D,l,c),j(p,D)>0&&g.scale(p,p,-1);var H=d.getClosestEdge(b,e,p,!0),I=d.getClosestEdge(k,m,p);if(-1===H||-1===I)return 0;for(var J=0;2>J;J++){var K=H,L=I,M=b,N=k,O=c,P=l,Q=e,R=m,S=a,T=f;if(0===J){var U;U=K,K=L,L=U,U=M,M=N,N=U,U=O,O=P,P=U,U=Q,Q=R,R=U,U=S,S=T,T=U}for(var V=L;L+2>V;V++){var W=N.vertices[(V+N.vertices.length)%N.vertices.length];g.rotate(q,W,R),i(q,q,P);for(var X=0,Y=K-1;K+2>Y;Y++){var Z=M.vertices[(Y+M.vertices.length)%M.vertices.length],$=M.vertices[(Y+1+M.vertices.length)%M.vertices.length];g.rotate(r,Z,Q),g.rotate(s,$,Q),i(r,r,O),i(s,s,O),h(y,s,r),g.rotate90cw(E,y),g.normalize(E,E),h(D,q,r);var _=j(E,D);(Y===K&&o>=_||Y!==K&&0>=_)&&X++}if(X>=3){if(n)return!0;var aa=this.createContactEquation(S,T,M,N);F++;var Z=M.vertices[K%M.vertices.length],$=M.vertices[(K+1)%M.vertices.length];g.rotate(r,Z,Q),g.rotate(s,$,Q),i(r,r,O),i(s,s,O),h(y,s,r),g.rotate90cw(aa.normalA,y),g.normalize(aa.normalA,aa.normalA),h(D,q,r);var _=j(aa.normalA,D);g.scale(C,aa.normalA,_),h(aa.contactPointA,q,O),h(aa.contactPointA,aa.contactPointA,C),i(aa.contactPointA,aa.contactPointA,O),h(aa.contactPointA,aa.contactPointA,S.position),h(aa.contactPointB,q,P),i(aa.contactPointB,aa.contactPointB,P),h(aa.contactPointB,aa.contactPointB,T.position),this.contactEquations.push(aa),this.enableFrictionReduction||this.enableFriction&&this.frictionEquations.push(this.createFrictionFromContact(aa))}}}return this.enableFrictionReduction&&this.enableFriction&&F&&this.frictionEquations.push(this.createFrictionFromAverage(F)),F};var $=g.fromValues(0,0);d.projectConvexOntoAxis=function(a,b,c,d,e){var f,h,i=null,k=null,l=$;g.rotate(l,d,-c);for(var m=0;mi)&&(i=h),(null===k||k>h)&&(k=h);if(k>i){var n=k;k=i,i=n}var o=j(b,d);g.set(e,k+o,i+o)};var _=g.fromValues(0,0),aa=g.fromValues(0,0),ba=g.fromValues(0,0),ca=g.fromValues(0,0),da=g.fromValues(0,0),ea=g.fromValues(0,0);d.findSeparatingAxis=function(a,b,c,e,f,i,j){var k=null,l=!1,m=!1,n=_,o=aa,p=ba,q=ca,s=da,t=ea;if(a instanceof r&&e instanceof r)for(var u=0;2!==u;u++){var v=a,w=c;1===u&&(v=e,w=i);for(var x=0;2!==x;x++){0===x?g.set(q,0,1):1===x&&g.set(q,1,0),0!==w&&g.rotate(q,q,w),d.projectConvexOntoAxis(a,b,c,q,s),d.projectConvexOntoAxis(e,f,i,q,t);var y=s,z=t,A=!1;s[0]>t[0]&&(z=s,y=t,A=!0);var B=z[0]-y[1];l=0>=B,(null===k||B>k)&&(g.copy(j,q),k=B,m=l)}}else for(var u=0;2!==u;u++){var v=a,w=c;1===u&&(v=e,w=i);for(var x=0;x!==v.vertices.length;x++){g.rotate(o,v.vertices[x],w),g.rotate(p,v.vertices[(x+1)%v.vertices.length],w),h(n,p,o),g.rotate90cw(q,n),g.normalize(q,q),d.projectConvexOntoAxis(a,b,c,q,s),d.projectConvexOntoAxis(e,f,i,q,t);var y=s,z=t,A=!1;s[0]>t[0]&&(z=s,y=t,A=!0);var B=z[0]-y[1];l=0>=B,(null===k||B>k)&&(g.copy(j,q),k=B,m=l)}}return m};var fa=g.fromValues(0,0),ga=g.fromValues(0,0),ha=g.fromValues(0,0);d.getClosestEdge=function(a,b,c,d){var e=fa,f=ga,i=ha;g.rotate(e,c,-b),d&&g.scale(e,e,-1);for(var k=-1,l=a.vertices.length,m=-1,n=0;n!==l;n++){h(f,a.vertices[(n+1)%l],a.vertices[n%l]),g.rotate90cw(i,f),g.normalize(i,i);var o=j(i,e);(-1===k||o>m)&&(k=n%l,m=o)}return k};var ia=g.create(),ja=g.create(),ka=g.create(),la=g.create(),ma=g.create(),na=g.create(),oa=g.create();d.prototype[q.CIRCLE|q.HEIGHTFIELD]=d.prototype.circleHeightfield=function(a,b,c,d,e,f,j,k,l,m){var n=f.heights,m=m||b.radius,o=f.elementWidth,p=ja,q=ia,r=ma,s=oa,t=na,u=ka,v=la,w=Math.floor((c[0]-m-j[0])/o),x=Math.ceil((c[0]+m-j[0])/o);0>w&&(w=0),x>=n.length&&(x=n.length-1);for(var y=n[w],z=n[x],A=w;x>A;A++)n[A]y&&(y=n[A]);if(c[1]-m>y)return l?!1:0;for(var B=!1,A=w;x>A;A++){g.set(u,A*o,n[A]),g.set(v,(A+1)*o,n[A+1]),g.add(u,u,j),g.add(v,v,j),g.sub(t,v,u),g.rotate(t,t,Math.PI/2),g.normalize(t,t),g.scale(q,t,-m),g.add(q,q,c),g.sub(p,q,u);var C=g.dot(p,t);if(q[0]>=u[0]&&q[0]=C){if(l)return!0;B=!0,g.scale(p,t,-C),g.add(r,q,p),g.copy(s,t);var D=this.createContactEquation(e,a,f,b);g.copy(D.normalA,s),g.scale(D.contactPointB,D.normalA,-m),i(D.contactPointB,D.contactPointB,c),h(D.contactPointB,D.contactPointB,a.position),g.copy(D.contactPointA,r),g.sub(D.contactPointA,D.contactPointA,e.position),this.contactEquations.push(D),this.enableFriction&&this.frictionEquations.push(this.createFrictionFromContact(D))}}if(B=!1,m>0)for(var A=w;x>=A;A++)if(g.set(u,A*o,n[A]),g.add(u,u,j),g.sub(p,c,u),g.squaredLength(p)q&&(q=0),r>=k.length&&(r=k.length-1);for(var s=k[q],t=k[r],u=q;r>u;u++)k[u]s&&(s=k[u]);if(a.aabb.lowerBound[1]>s)return j?!1:0;for(var v=0,u=q;r>u;u++){g.set(m,u*l,k[u]),g.set(n,(u+1)*l,k[u+1]),g.add(m,m,h),g.add(n,n,h);var w=100;g.set(o,.5*(n[0]+m[0]),.5*(n[1]+m[1]-w)),g.sub(p.vertices[0],n,o),g.sub(p.vertices[1],m,o),g.copy(p.vertices[2],p.vertices[1]),g.copy(p.vertices[3],p.vertices[0]),p.vertices[2][1]-=w,p.vertices[3][1]-=w,v+=this.convexConvex(a,b,c,d,e,p,o,0,j)}return v}},{"../equations/ContactEquation":21,"../equations/Equation":22,"../equations/FrictionEquation":23,"../math/vec2":30,"../objects/Body":31,"../shapes/Box":37,"../shapes/Circle":39,"../shapes/Convex":40,"../shapes/Shape":45,"../utils/ContactEquationPool":48,"../utils/FrictionEquationPool":49,"../utils/TupleDictionary":56,"../utils/Utils":57}],11:[function(a,b,c){function d(a){a=a||{},this.from=a.from?f.fromValues(a.from[0],a.from[1]):f.create(),this.to=a.to?f.fromValues(a.to[0],a.to[1]):f.create(),this.checkCollisionResponse=void 0!==a.checkCollisionResponse?a.checkCollisionResponse:!0,this.skipBackfaces=!!a.skipBackfaces,this.collisionMask=void 0!==a.collisionMask?a.collisionMask:-1,this.collisionGroup=void 0!==a.collisionGroup?a.collisionGroup:-1,this.mode=void 0!==a.mode?a.mode:d.ANY,this.callback=a.callback||function(a){},this.direction=f.create(),this.length=1,this.update()}function e(a,b,c){f.sub(h,c,a);var d=f.dot(h,b);return f.scale(i,b,d),f.add(i,i,a),f.squaredDistance(c,i)}b.exports=d;var f=a("../math/vec2");a("../collision/RaycastResult"),a("../shapes/Shape"),a("../collision/AABB");d.prototype.constructor=d,d.CLOSEST=1,d.ANY=2,d.ALL=4,d.prototype.update=function(){var a=this.direction;f.sub(a,this.to,this.from),this.length=f.length(a),f.normalize(a,a)},d.prototype.intersectBodies=function(a,b){for(var c=0,d=b.length;!a.shouldStop(this)&&d>c;c++){var e=b[c],f=e.getAABB();(f.overlapsRay(this)>=0||f.containsPoint(this.from))&&this.intersectBody(a,e)}};var g=f.create();d.prototype.intersectBody=function(a,b){var c=this.checkCollisionResponse;if(!c||b.collisionResponse)for(var d=g,e=0,h=b.shapes.length;h>e;e++){var i=b.shapes[e];if((!c||i.collisionResponse)&&0!==(this.collisionGroup&i.collisionMask)&&0!==(i.collisionGroup&this.collisionMask)){f.rotate(d,i.position,b.angle),f.add(d,d,b.position);var j=i.angle+b.angle;if(this.intersectShape(a,i,j,d,b),a.shouldStop(this))break}}},d.prototype.intersectShape=function(a,b,c,d,f){var g=this.from,h=e(g,this.direction,d);h>b.boundingRadius*b.boundingRadius||(this._currentBody=f,this._currentShape=b,b.raycast(a,this,d,c),this._currentBody=this._currentShape=null)},d.prototype.getAABB=function(a){var b=this.to,c=this.from;f.set(a.lowerBound,Math.min(b[0],c[0]),Math.min(b[1],c[1])),f.set(a.upperBound,Math.max(b[0],c[0]),Math.max(b[1],c[1]))};f.create();d.prototype.reportIntersection=function(a,b,c,e){var g=(this.from,this.to,this._currentShape),h=this._currentBody;if(!(this.skipBackfaces&&f.dot(c,this.direction)>0))switch(this.mode){case d.ALL:a.set(c,g,h,b,e),this.callback(a);break;case d.CLOSEST:(bc;c++){for(var e=a[c],f=c-1;f>=0&&!(a[f].aabb.lowerBound[b]<=e.aabb.lowerBound[b]);f--)a[f+1]=a[f];a[f+1]=e}return a},d.prototype.sortList=function(){var a=this.axisList,b=this.axisIndex;d.sortAxisList(a,b)},d.prototype.getCollisionPairs=function(a){var b=this.axisList,c=this.result,d=this.axisIndex;c.length=0;for(var e=b.length;e--;){var g=b[e];g.aabbNeedsUpdate&&g.updateAABB()}this.sortList();for(var h=0,i=0|b.length;h!==i;h++)for(var j=b[h],k=h+1;i>k;k++){var l=b[k],m=l.aabb.lowerBound[d]<=j.aabb.upperBound[d];if(!m)break;f.canCollide(j,l)&&this.boundingVolumeCheck(j,l)&&c.push(j,l)}return c},d.prototype.aabbQuery=function(a,b,c){c=c||[],this.sortList();var d=this.axisIndex,e="x";1===d&&(e="y"),2===d&&(e="z");for(var f=this.axisList,g=(b.lowerBound[e],b.upperBound[e],0);gthis.upperLimit&&(f.maxForce=0,f.minForce=-this.maxForce,this.distance=this.upperLimit,l=!0),this.lowerLimitEnabled&&this.positionc)h.scale(e.normalA,j,-1),h.sub(e.contactPointA,k,g.position),h.sub(e.contactPointB,l,i.position),h.scale(o,j,c),h.add(e.contactPointA,e.contactPointA,o),-1===a.indexOf(e)&&a.push(e);else{var u=a.indexOf(e);-1!==u&&a.splice(u,1)}if(this.lowerLimitEnabled&&d>s)h.scale(f.normalA,j,1),h.sub(f.contactPointA,k,g.position),h.sub(f.contactPointB,l,i.position),h.scale(o,j,d),h.sub(f.contactPointB,f.contactPointB,o),-1===a.indexOf(f)&&a.push(f);else{var u=a.indexOf(f);-1!==u&&a.splice(u,1)}},d.prototype.enableMotor=function(){this.motorEnabled||(this.equations.push(this.motorEquation),this.motorEnabled=!0)},d.prototype.disableMotor=function(){if(this.motorEnabled){var a=this.equations.indexOf(this.motorEquation);this.equations.splice(a,1),this.motorEnabled=!1}},d.prototype.setLimits=function(a,b){"number"==typeof a?(this.lowerLimit=a,this.lowerLimitEnabled=!0):(this.lowerLimit=a,this.lowerLimitEnabled=!1),"number"==typeof b?(this.upperLimit=b,this.upperLimitEnabled=!0):(this.upperLimit=b,this.upperLimitEnabled=!1)}},{"../equations/ContactEquation":21,"../equations/Equation":22,"../equations/RotationalLockEquation":24,"../math/vec2":30,"./Constraint":14}],19:[function(a,b,c){function d(a,b,c){c=c||{},e.call(this,a,b,e.REVOLUTE,c);var d=this.maxForce="undefined"!=typeof c.maxForce?c.maxForce:Number.MAX_VALUE;this.pivotA=i.create(),this.pivotB=i.create(),c.worldPivot?(i.sub(this.pivotA,c.worldPivot,a.position),i.sub(this.pivotB,c.worldPivot,b.position),i.rotate(this.pivotA,this.pivotA,-a.angle),i.rotate(this.pivotB,this.pivotB,-b.angle)):(i.copy(this.pivotA,c.localPivotA),i.copy(this.pivotB,c.localPivotB));var o=this.equations=[new f(a,b,-d,d),new f(a,b,-d,d)],p=o[0],q=o[1],r=this;p.computeGq=function(){return i.rotate(j,r.pivotA,a.angle),i.rotate(k,r.pivotB,b.angle),i.add(n,b.position,k),i.sub(n,n,a.position),i.sub(n,n,j),i.dot(n,l)},q.computeGq=function(){return i.rotate(j,r.pivotA,a.angle),i.rotate(k,r.pivotB,b.angle),i.add(n,b.position,k),i.sub(n,n,a.position),i.sub(n,n,j),i.dot(n,m)},q.minForce=p.minForce=-d,q.maxForce=p.maxForce=d,this.motorEquation=new g(a,b),this.motorEnabled=!1,this.angle=0,this.lowerLimitEnabled=!1,this.upperLimitEnabled=!1,this.lowerLimit=0,this.upperLimit=0,this.upperLimitEquation=new h(a,b),this.lowerLimitEquation=new h(a,b),this.upperLimitEquation.minForce=0,this.lowerLimitEquation.maxForce=0}var e=a("./Constraint"),f=a("../equations/Equation"),g=a("../equations/RotationalVelocityEquation"),h=a("../equations/RotationalLockEquation"),i=a("../math/vec2");b.exports=d;var j=i.create(),k=i.create(),l=i.fromValues(1,0),m=i.fromValues(0,1),n=i.create();d.prototype=new e,d.prototype.constructor=d,d.prototype.setLimits=function(a,b){"number"==typeof a?(this.lowerLimit=a,this.lowerLimitEnabled=!0):(this.lowerLimit=a,this.lowerLimitEnabled=!1),"number"==typeof b?(this.upperLimit=b,this.upperLimitEnabled=!0):(this.upperLimit=b,this.upperLimitEnabled=!1)},d.prototype.update=function(){var a=this.bodyA,b=this.bodyB,c=this.pivotA,d=this.pivotB,e=this.equations,f=(e[0],e[1],e[0]),g=e[1],h=this.upperLimit,n=this.lowerLimit,o=this.upperLimitEquation,p=this.lowerLimitEquation,q=this.angle=b.angle-a.angle;if(this.upperLimitEnabled&&q>h)o.angle=h,-1===e.indexOf(o)&&e.push(o);else{var r=e.indexOf(o);-1!==r&&e.splice(r,1)}if(this.lowerLimitEnabled&&n>q)p.angle=n,-1===e.indexOf(p)&&e.push(p);else{var r=e.indexOf(p);-1!==r&&e.splice(r,1)}i.rotate(j,c,a.angle),i.rotate(k,d,b.angle),f.G[0]=-1,f.G[1]=0,f.G[2]=-i.crossLength(j,l),f.G[3]=1,f.G[4]=0,f.G[5]=i.crossLength(k,l),g.G[0]=0,g.G[1]=-1,g.G[2]=-i.crossLength(j,m),g.G[3]=0,g.G[4]=1,g.G[5]=i.crossLength(k,m)},d.prototype.enableMotor=function(){this.motorEnabled||(this.equations.push(this.motorEquation),this.motorEnabled=!0)},d.prototype.disableMotor=function(){if(this.motorEnabled){var a=this.equations.indexOf(this.motorEquation);this.equations.splice(a,1),this.motorEnabled=!1}},d.prototype.motorIsEnabled=function(){return!!this.motorEnabled},d.prototype.setMotorSpeed=function(a){if(this.motorEnabled){var b=this.equations.indexOf(this.motorEquation);this.equations[b].relativeVelocity=a}},d.prototype.getMotorSpeed=function(){return this.motorEnabled?this.motorEquation.relativeVelocity:!1}},{"../equations/Equation":22,"../equations/RotationalLockEquation":24,"../equations/RotationalVelocityEquation":25,"../math/vec2":30,"./Constraint":14}],20:[function(a,b,c){function d(a,b,c){c=c||{},e.call(this,a,b,-Number.MAX_VALUE,Number.MAX_VALUE),this.angle=c.angle||0,this.ratio="number"==typeof c.ratio?c.ratio:1,this.setRatio(this.ratio)}var e=a("./Equation");a("../math/vec2");b.exports=d,d.prototype=new e,d.prototype.constructor=d,d.prototype.computeGq=function(){return this.ratio*this.bodyA.angle-this.bodyB.angle+this.angle},d.prototype.setRatio=function(a){var b=this.G;b[2]=a,b[5]=-1,this.ratio=a},d.prototype.setMaxTorque=function(a){this.maxForce=a,this.minForce=-a}},{"../math/vec2":30,"./Equation":22}],21:[function(a,b,c){function d(a,b){e.call(this,a,b,0,Number.MAX_VALUE),this.contactPointA=f.create(),this.penetrationVec=f.create(),this.contactPointB=f.create(),this.normalA=f.create(),this.restitution=0,this.firstImpact=!1,this.shapeA=null,this.shapeB=null}var e=a("./Equation"),f=a("../math/vec2");b.exports=d,d.prototype=new e,d.prototype.constructor=d,d.prototype.computeB=function(a,b,c){var d=this.bodyA,e=this.bodyB,g=this.contactPointA,h=this.contactPointB,i=d.position,j=e.position,k=this.penetrationVec,l=this.normalA,m=this.G,n=f.crossLength(g,l),o=f.crossLength(h,l);m[0]=-l[0],m[1]=-l[1],m[2]=-n,m[3]=l[0],m[4]=l[1],m[5]=o,f.add(k,j,h),f.sub(k,k,i),f.sub(k,k,g);var p,q;this.firstImpact&&0!==this.restitution?(q=0,p=1/b*(1+this.restitution)*this.computeGW()):(q=f.dot(l,k)+this.offset,p=this.computeGW());var r=this.computeGiMf(),s=-q*a-p*b-c*r;return s}},{"../math/vec2":30,"./Equation":22}],22:[function(a,b,c){function d(a,b,c,e){this.minForce="undefined"==typeof c?-Number.MAX_VALUE:c,this.maxForce="undefined"==typeof e?Number.MAX_VALUE:e,this.bodyA=a,this.bodyB=b,this.stiffness=d.DEFAULT_STIFFNESS,this.relaxation=d.DEFAULT_RELAXATION,this.G=new f.ARRAY_TYPE(6);for(var g=0;6>g;g++)this.G[g]=0;this.offset=0,this.a=0,this.b=0,this.epsilon=0,this.timeStep=1/60,this.needsUpdate=!0,this.multiplier=0,this.relativeVelocity=0,this.enabled=!0}b.exports=d;var e=a("../math/vec2"),f=a("../utils/Utils");a("../objects/Body");d.prototype.constructor=d,d.DEFAULT_STIFFNESS=1e6,d.DEFAULT_RELAXATION=4,d.prototype.update=function(){var a=this.stiffness,b=this.relaxation,c=this.timeStep;this.a=4/(c*(1+4*b)),this.b=4*b/(1+4*b),this.epsilon=4/(c*c*a*(1+4*b)),this.needsUpdate=!1},d.prototype.gmult=function(a,b,c,d,e){return a[0]*b[0]+a[1]*b[1]+a[2]*c+a[3]*d[0]+a[4]*d[1]+a[5]*e},d.prototype.computeB=function(a,b,c){var d=this.computeGW(),e=this.computeGq(),f=this.computeGiMf();return-e*a-d*b-f*c};var g=e.create(),h=e.create();d.prototype.computeGq=function(){var a=this.G,b=this.bodyA,c=this.bodyB,d=(b.position,c.position,b.angle),e=c.angle;return this.gmult(a,g,d,h,e)+this.offset},d.prototype.computeGW=function(){var a=this.G,b=this.bodyA,c=this.bodyB,d=b.velocity,e=c.velocity,f=b.angularVelocity,g=c.angularVelocity;return this.gmult(a,d,f,e,g)+this.relativeVelocity},d.prototype.computeGWlambda=function(){var a=this.G,b=this.bodyA,c=this.bodyB,d=b.vlambda,e=c.vlambda,f=b.wlambda,g=c.wlambda;return this.gmult(a,d,f,e,g)};var i=e.create(),j=e.create();d.prototype.computeGiMf=function(){var a=this.bodyA,b=this.bodyB,c=a.force,d=a.angularForce,f=b.force,g=b.angularForce,h=a.invMassSolve,k=b.invMassSolve,l=a.invInertiaSolve,m=b.invInertiaSolve,n=this.G;return e.scale(i,c,h),e.multiply(i,a.massMultiplier,i),e.scale(j,f,k),e.multiply(j,b.massMultiplier,j),this.gmult(n,i,d*l,j,g*m)},d.prototype.computeGiMGt=function(){var a=this.bodyA,b=this.bodyB,c=a.invMassSolve,d=b.invMassSolve,e=a.invInertiaSolve,f=b.invInertiaSolve,g=this.G;return g[0]*g[0]*c*a.massMultiplier[0]+g[1]*g[1]*c*a.massMultiplier[1]+g[2]*g[2]*e+g[3]*g[3]*d*b.massMultiplier[0]+g[4]*g[4]*d*b.massMultiplier[1]+g[5]*g[5]*f};var k=e.create(),l=e.create(),m=e.create();e.create(),e.create(),e.create();d.prototype.addToWlambda=function(a){var b=this.bodyA,c=this.bodyB,d=k,f=l,g=m,h=b.invMassSolve,i=c.invMassSolve,j=b.invInertiaSolve,n=c.invInertiaSolve,o=this.G;f[0]=o[0],f[1]=o[1],g[0]=o[3],g[1]=o[4],e.scale(d,f,h*a),e.multiply(d,d,b.massMultiplier),e.add(b.vlambda,b.vlambda,d),b.wlambda+=j*o[2]*a,e.scale(d,g,i*a),e.multiply(d,d,c.massMultiplier),e.add(c.vlambda,c.vlambda,d),c.wlambda+=n*o[5]*a},d.prototype.computeInvC=function(a){return 1/(this.computeGiMGt()+a)}},{"../math/vec2":30,"../objects/Body":31,"../utils/Utils":57}],23:[function(a,b,c){function d(a,b,c){f.call(this,a,b,-c,c),this.contactPointA=e.create(),this.contactPointB=e.create(),this.t=e.create(),this.contactEquations=[],this.shapeA=null,this.shapeB=null,this.frictionCoefficient=.3}var e=a("../math/vec2"),f=a("./Equation");a("../utils/Utils");b.exports=d,d.prototype=new f,d.prototype.constructor=d,d.prototype.setSlipForce=function(a){this.maxForce=a,this.minForce=-a},d.prototype.getSlipForce=function(){return this.maxForce},d.prototype.computeB=function(a,b,c){var d=(this.bodyA,this.bodyB,this.contactPointA),f=this.contactPointB,g=this.t,h=this.G;h[0]=-g[0],h[1]=-g[1],h[2]=-e.crossLength(d,g),h[3]=g[0],h[4]=g[1],h[5]=e.crossLength(f,g);var i=this.computeGW(),j=this.computeGiMf(),k=-i*b-c*j;return k}},{"../math/vec2":30,"../utils/Utils":57,"./Equation":22}],24:[function(a,b,c){function d(a,b,c){c=c||{},e.call(this,a,b,-Number.MAX_VALUE,Number.MAX_VALUE),this.angle=c.angle||0;var d=this.G;d[2]=1,d[5]=-1}var e=a("./Equation"),f=a("../math/vec2");b.exports=d,d.prototype=new e,d.prototype.constructor=d;var g=f.create(),h=f.create(),i=f.fromValues(1,0),j=f.fromValues(0,1);d.prototype.computeGq=function(){return f.rotate(g,i,this.bodyA.angle+this.angle),f.rotate(h,j,this.bodyB.angle),f.dot(g,h)}},{"../math/vec2":30,"./Equation":22}],25:[function(a,b,c){function d(a,b){e.call(this,a,b,-Number.MAX_VALUE,Number.MAX_VALUE),this.relativeVelocity=1,this.ratio=1}var e=a("./Equation");a("../math/vec2");b.exports=d,d.prototype=new e,d.prototype.constructor=d,d.prototype.computeB=function(a,b,c){var d=this.G;d[2]=-1,d[5]=this.ratio;var e=this.computeGiMf(),f=this.computeGW(),g=-f*b-c*e;return g}},{"../math/vec2":30,"./Equation":22}],26:[function(a,b,c){var d=function(){};b.exports=d,d.prototype={constructor:d,on:function(a,b,c){b.context=c||this,void 0===this._listeners&&(this._listeners={});var d=this._listeners;return void 0===d[a]&&(d[a]=[]),-1===d[a].indexOf(b)&&d[a].push(b),this},has:function(a,b){if(void 0===this._listeners)return!1;var c=this._listeners;if(b){if(void 0!==c[a]&&-1!==c[a].indexOf(b))return!0}else if(void 0!==c[a])return!0;return!1},off:function(a,b){if(void 0===this._listeners)return this;var c=this._listeners,d=c[a].indexOf(b);return-1!==d&&c[a].splice(d,1),this},emit:function(a){if(void 0===this._listeners)return this;var b=this._listeners,c=b[a.type];if(void 0!==c){a.target=this;for(var d=0,e=c.length;e>d;d++){var f=c[d];f.call(f.context,a)}}return this}}},{}],27:[function(a,b,c){function d(a,b,c){if(c=c||{},!(a instanceof e&&b instanceof e))throw new Error("First two arguments must be Material instances.");this.id=d.idCounter++,this.materialA=a,this.materialB=b,this.friction="undefined"!=typeof c.friction?Number(c.friction):.3,this.restitution="undefined"!=typeof c.restitution?Number(c.restitution):0,this.stiffness="undefined"!=typeof c.stiffness?Number(c.stiffness):f.DEFAULT_STIFFNESS,this.relaxation="undefined"!=typeof c.relaxation?Number(c.relaxation):f.DEFAULT_RELAXATION,this.frictionStiffness="undefined"!=typeof c.frictionStiffness?Number(c.frictionStiffness):f.DEFAULT_STIFFNESS,this.frictionRelaxation="undefined"!=typeof c.frictionRelaxation?Number(c.frictionRelaxation):f.DEFAULT_RELAXATION,this.surfaceVelocity="undefined"!=typeof c.surfaceVelocity?Number(c.surfaceVelocity):0,this.contactSkinSize=.005}var e=a("./Material"),f=a("../equations/Equation");b.exports=d,d.idCounter=0},{"../equations/Equation":22,"./Material":28}],28:[function(a,b,c){function d(a){this.id=a||d.idCounter++}b.exports=d,d.idCounter=0},{}],29:[function(a,b,c){var d={};d.GetArea=function(a){if(a.length<6)return 0;for(var b=a.length-2,c=0,d=0;b>d;d+=2)c+=(a[d+2]-a[d])*(a[d+1]+a[d+3]);return c+=(a[0]-a[b])*(a[b+1]+a[1]),.5*-c},d.Triangulate=function(a){var b=a.length>>1;if(3>b)return[];for(var c=[],e=[],f=0;b>f;f++)e.push(f);for(var f=0,g=b;g>3;){var h=e[(f+0)%g],i=e[(f+1)%g],j=e[(f+2)%g],k=a[2*h],l=a[2*h+1],m=a[2*i],n=a[2*i+1],o=a[2*j],p=a[2*j+1],q=!1;if(d._convex(k,l,m,n,o,p)){q=!0;for(var r=0;g>r;r++){var s=e[r];if(s!=h&&s!=i&&s!=j&&d._PointInTriangle(a[2*s],a[2*s+1],k,l,m,n,o,p)){q=!1;break}}}if(q)c.push(h,i,j),e.splice((f+1)%g,1),g--,f=0;else if(f++>3*g)break}return c.push(e[0],e[1],e[2]),c},d._PointInTriangle=function(a,b,c,d,e,f,g,h){var i=g-c,j=h-d,k=e-c,l=f-d,m=a-c,n=b-d,o=i*i+j*j,p=i*k+j*l,q=i*m+j*n,r=k*k+l*l,s=k*m+l*n,t=1/(o*r-p*p),u=(r*q-p*s)*t,v=(o*s-p*q)*t;return u>=0&&v>=0&&1>u+v},d._convex=function(a,b,c,d,e,f){return(b-d)*(e-c)+(c-a)*(f-d)>=0},b.exports=d},{}],30:[function(a,b,c){var d=b.exports={},e=a("../utils/Utils");d.crossLength=function(a,b){return a[0]*b[1]-a[1]*b[0]},d.crossVZ=function(a,b,c){return d.rotate(a,b,-Math.PI/2),d.scale(a,a,c),a},d.crossZV=function(a,b,c){return d.rotate(a,c,Math.PI/2),d.scale(a,a,b),a},d.rotate=function(a,b,c){if(0!==c){var d=Math.cos(c),e=Math.sin(c),f=b[0],g=b[1];a[0]=d*f-e*g,a[1]=e*f+d*g}else a[0]=b[0],a[1]=b[1]},d.rotate90cw=function(a,b){var c=b[0],d=b[1];a[0]=d,a[1]=-c},d.toLocalFrame=function(a,b,c,e){d.copy(a,b),d.sub(a,a,c),d.rotate(a,a,-e)},d.toGlobalFrame=function(a,b,c,e){d.copy(a,b),d.rotate(a,a,e),d.add(a,a,c)},d.vectorToLocalFrame=function(a,b,c){d.rotate(a,b,-c)},d.vectorToGlobalFrame=function(a,b,c){d.rotate(a,b,c)},d.centroid=function(a,b,c,e){return d.add(a,b,c),d.add(a,a,e),d.scale(a,a,1/3),a},d.create=function(){var a=new e.ARRAY_TYPE(2);return a[0]=0,a[1]=0,a},d.clone=function(a){var b=new e.ARRAY_TYPE(2);return b[0]=a[0],b[1]=a[1],b},d.fromValues=function(a,b){var c=new e.ARRAY_TYPE(2);return c[0]=a,c[1]=b,c},d.copy=function(a,b){return a[0]=b[0],a[1]=b[1],a},d.set=function(a,b,c){return a[0]=b,a[1]=c,a},d.add=function(a,b,c){return a[0]=b[0]+c[0],a[1]=b[1]+c[1],a},d.subtract=function(a,b,c){return a[0]=b[0]-c[0],a[1]=b[1]-c[1],a},d.sub=d.subtract,d.multiply=function(a,b,c){return a[0]=b[0]*c[0],a[1]=b[1]*c[1],a},d.mul=d.multiply,d.divide=function(a,b,c){return a[0]=b[0]/c[0],a[1]=b[1]/c[1],a},d.div=d.divide,d.scale=function(a,b,c){return a[0]=b[0]*c,a[1]=b[1]*c,a},d.distance=function(a,b){var c=b[0]-a[0],d=b[1]-a[1];return Math.sqrt(c*c+d*d)},d.dist=d.distance,d.squaredDistance=function(a,b){var c=b[0]-a[0],d=b[1]-a[1];return c*c+d*d},d.sqrDist=d.squaredDistance,d.length=function(a){var b=a[0],c=a[1];return Math.sqrt(b*b+c*c)},d.len=d.length,d.squaredLength=function(a){var b=a[0],c=a[1];return b*b+c*c},d.sqrLen=d.squaredLength,d.negate=function(a,b){return a[0]=-b[0],a[1]=-b[1],a},d.normalize=function(a,b){var c=b[0],d=b[1],e=c*c+d*d;return e>0&&(e=1/Math.sqrt(e),a[0]=b[0]*e,a[1]=b[1]*e),a},d.dot=function(a,b){return a[0]*b[0]+a[1]*b[1]},d.str=function(a){return"vec2("+a[0]+", "+a[1]+")"},d.lerp=function(a,b,c,d){var e=b[0],f=b[1];return a[0]=e+d*(c[0]-e),a[1]=f+d*(c[1]-f),a},d.reflect=function(a,b,c){var d=b[0]*c[0]+b[1]*c[1];a[0]=b[0]-2*c[0]*d,a[1]=b[1]-2*c[1]*d},d.getLineSegmentsIntersection=function(a,b,c,e,f){var g=d.getLineSegmentsIntersectionFraction(b,c,e,f);return 0>g?!1:(a[0]=b[0]+g*(c[0]-b[0]),a[1]=b[1]+g*(c[1]-b[1]),!0)},d.getLineSegmentsIntersectionFraction=function(a,b,c,d){var e,f,g=b[0]-a[0],h=b[1]-a[1],i=d[0]-c[0],j=d[1]-c[1];return e=(-h*(a[0]-c[0])+g*(a[1]-c[1]))/(-i*h+g*j),f=(i*(a[1]-c[1])-j*(a[0]-c[0]))/(-i*h+g*j),e>=0&&1>=e&&f>=0&&1>=f?f:-1}},{"../utils/Utils":57}],31:[function(a,b,c){function d(a){a=a||{},k.call(this),this.id=a.id||++d._idCounter,this.world=null,this.shapes=[],this.mass=a.mass||0,this.invMass=0,this.inertia=0,this.invInertia=0,this.invMassSolve=0,this.invInertiaSolve=0,this.fixedRotation=!!a.fixedRotation,this.fixedX=!!a.fixedX,this.fixedY=!!a.fixedY,this.massMultiplier=e.create(),this.position=e.fromValues(0,0),a.position&&e.copy(this.position,a.position),this.interpolatedPosition=e.fromValues(0,0),this.interpolatedAngle=0,this.previousPosition=e.fromValues(0,0),this.previousAngle=0,this.velocity=e.fromValues(0,0),a.velocity&&e.copy(this.velocity,a.velocity),this.vlambda=e.fromValues(0,0),this.wlambda=0,this.angle=a.angle||0,this.angularVelocity=a.angularVelocity||0,this.force=e.create(),a.force&&e.copy(this.force,a.force),this.angularForce=a.angularForce||0,this.damping="number"==typeof a.damping?a.damping:.1,this.angularDamping="number"==typeof a.angularDamping?a.angularDamping:.1,this.type=d.STATIC,"undefined"!=typeof a.type?this.type=a.type:a.mass?this.type=d.DYNAMIC:this.type=d.STATIC,this.boundingRadius=0,this.aabb=new j,this.aabbNeedsUpdate=!0,this.allowSleep=void 0!==a.allowSleep?a.allowSleep:!0, +this.wantsToSleep=!1,this.sleepState=d.AWAKE,this.sleepSpeedLimit=void 0!==a.sleepSpeedLimit?a.sleepSpeedLimit:.2,this.sleepTimeLimit=void 0!==a.sleepTimeLimit?a.sleepTimeLimit:1,this.gravityScale=void 0!==a.gravityScale?a.gravityScale:1,this.collisionResponse=void 0!==a.collisionResponse?a.collisionResponse:!0,this.idleTime=0,this.timeLastSleepy=0,this.ccdSpeedThreshold=void 0!==a.ccdSpeedThreshold?a.ccdSpeedThreshold:-1,this.ccdIterations=void 0!==a.ccdIterations?a.ccdIterations:10,this.concavePath=null,this._wakeUpAfterNarrowphase=!1,this.updateMassProperties()}var e=a("../math/vec2"),f=a("poly-decomp"),g=a("../shapes/Convex"),h=a("../collision/RaycastResult"),i=a("../collision/Ray"),j=a("../collision/AABB"),k=a("../events/EventEmitter");b.exports=d,d.prototype=new k,d.prototype.constructor=d,d._idCounter=0,d.prototype.updateSolveMassProperties=function(){this.sleepState===d.SLEEPING||this.type===d.KINEMATIC?(this.invMassSolve=0,this.invInertiaSolve=0):(this.invMassSolve=this.invMass,this.invInertiaSolve=this.invInertia)},d.prototype.setDensity=function(a){var b=this.getArea();this.mass=b*a,this.updateMassProperties()},d.prototype.getArea=function(){for(var a=0,b=0;bc&&(c=g+h)}this.boundingRadius=c},d.prototype.addShape=function(a,b,c){if(a.body)throw new Error("A shape can only be added to one body.");a.body=this,b?e.copy(a.position,b):e.set(a.position,0,0),a.angle=c||0,this.shapes.push(a),this.updateMassProperties(),this.updateBoundingRadius(),this.aabbNeedsUpdate=!0},d.prototype.removeShape=function(a){var b=this.shapes.indexOf(a);return-1!==b?(this.shapes.splice(b,1),this.aabbNeedsUpdate=!0,a.body=null,!0):!1},d.prototype.updateMassProperties=function(){if(this.type===d.STATIC||this.type===d.KINEMATIC)this.mass=Number.MAX_VALUE,this.invMass=0,this.inertia=Number.MAX_VALUE,this.invInertia=0;else{var a=this.shapes,b=a.length,c=this.mass/b,f=0;if(this.fixedRotation)this.inertia=Number.MAX_VALUE,this.invInertia=0;else{for(var g=0;b>g;g++){var h=a[g],i=e.squaredLength(h.position),j=h.computeMomentOfInertia(c);f+=j+c*i}this.inertia=f,this.invInertia=f>0?1/f:0}this.invMass=1/this.mass,e.set(this.massMultiplier,this.fixedX?0:1,this.fixedY?0:1)}};e.create();d.prototype.applyForce=function(a,b){if(e.add(this.force,this.force,a),b){var c=e.crossLength(b,a);this.angularForce+=c}};var n=e.create(),o=e.create(),p=e.create();d.prototype.applyForceLocal=function(a,b){b=b||p;var c=n,d=o;this.vectorToWorldFrame(c,a),this.vectorToWorldFrame(d,b),this.applyForce(c,d)};var q=e.create();d.prototype.applyImpulse=function(a,b){if(this.type===d.DYNAMIC){var c=q;if(e.scale(c,a,this.invMass),e.multiply(c,this.massMultiplier,c),e.add(this.velocity,c,this.velocity),b){var f=e.crossLength(b,a);f*=this.invInertia,this.angularVelocity+=f}}};var r=e.create(),s=e.create(),t=e.create();d.prototype.applyImpulseLocal=function(a,b){b=b||t;var c=r,d=s;this.vectorToWorldFrame(c,a),this.vectorToWorldFrame(d,b),this.applyImpulse(c,d)},d.prototype.toLocalFrame=function(a,b){e.toLocalFrame(a,b,this.position,this.angle)},d.prototype.toWorldFrame=function(a,b){e.toGlobalFrame(a,b,this.position,this.angle)},d.prototype.vectorToLocalFrame=function(a,b){e.vectorToLocalFrame(a,b,this.angle)},d.prototype.vectorToWorldFrame=function(a,b){e.vectorToGlobalFrame(a,b,this.angle)},d.prototype.fromPolygon=function(a,b){b=b||{};for(var c=this.shapes.length;c>=0;--c)this.removeShape(this.shapes[c]);var d=new f.Polygon;if(d.vertices=a,d.makeCCW(),"number"==typeof b.removeCollinearPoints&&d.removeCollinearPoints(b.removeCollinearPoints),"undefined"==typeof b.skipSimpleCheck&&!d.isSimple())return!1;this.concavePath=d.vertices.slice(0);for(var c=0;c=g?(this.idleTime=0,this.sleepState=d.AWAKE):(this.idleTime+=c,this.sleepState=d.SLEEPY),this.idleTime>this.sleepTimeLimit&&(b?this.wantsToSleep=!0:this.sleep())}},d.prototype.overlaps=function(a){return this.world.overlapKeeper.bodiesAreOverlapping(this,a)};var x=e.create(),y=e.create();d.prototype.integrate=function(a){var b=this.invMass,c=this.force,d=this.position,f=this.velocity;e.copy(this.previousPosition,this.position),this.previousAngle=this.angle,this.fixedRotation||(this.angularVelocity+=this.angularForce*this.invInertia*a),e.scale(x,c,a*b),e.multiply(x,this.massMultiplier,x),e.add(f,x,f),this.integrateToTimeOfImpact(a)||(e.scale(y,f,a),e.add(d,d,y),this.fixedRotation||(this.angle+=this.angularVelocity*a)),this.aabbNeedsUpdate=!0};var z=new h,A=new i({mode:i.ALL}),B=e.create(),C=e.create(),D=e.create(),E=e.create();d.prototype.integrateToTimeOfImpact=function(a){if(this.ccdSpeedThreshold<0||e.squaredLength(this.velocity)=j&&ir;r++){var s=this.radius*(2*r-1);f.set(o,-q,s),f.set(p,q,s),f.toGlobalFrame(o,o,c,d),f.toGlobalFrame(p,p,c,d);var t=f.getLineSegmentsIntersectionFraction(e,g,o,p);if(t>=0&&(f.rotate(n,l,d),f.scale(n,n,2*r-1),b.reportIntersection(a,t,n,-1),a.shouldStop(b)))return}for(var u=Math.pow(this.radius,2)+Math.pow(q,2),r=0;2>r;r++){f.set(o,q*(2*r-1),0),f.toGlobalFrame(o,o,c,d);var v=Math.pow(g[0]-e[0],2)+Math.pow(g[1]-e[1],2),w=2*((g[0]-e[0])*(e[0]-o[0])+(g[1]-e[1])*(e[1]-o[1])),x=Math.pow(e[0]-o[0],2)+Math.pow(e[1]-o[1],2)-Math.pow(this.radius,2),t=Math.pow(w,2)-4*v*x;if(!(0>t))if(0===t){if(f.lerp(m,e,g,t),f.squaredDistance(m,c)>u&&(f.sub(n,m,o),f.normalize(n,n),b.reportIntersection(a,t,n,-1),a.shouldStop(b)))return}else{var y=Math.sqrt(t),z=1/(2*v),A=(-w-y)*z,B=(-w+y)*z;if(A>=0&&1>=A&&(f.lerp(m,e,g,A),f.squaredDistance(m,c)>u&&(f.sub(n,m,o),f.normalize(n,n),b.reportIntersection(a,A,n,-1),a.shouldStop(b))))return;if(B>=0&&1>=B&&(f.lerp(m,e,g,B),f.squaredDistance(m,c)>u&&(f.sub(n,m,o),f.normalize(n,n),b.reportIntersection(a,B,n,-1),a.shouldStop(b))))return}}}},{"../math/vec2":30,"./Shape":45}],39:[function(a,b,c){function d(a){"number"==typeof arguments[0]&&(a={radius:arguments[0]},console.warn("The Circle constructor signature has changed. Please use the following format: new Circle({ radius: 1 })")),a=a||{},this.radius=a.radius||1,a.type=e.CIRCLE,e.call(this,a)}var e=a("./Shape"),f=a("../math/vec2");b.exports=d,d.prototype=new e,d.prototype.constructor=d,d.prototype.computeMomentOfInertia=function(a){var b=this.radius;return a*b*b/2},d.prototype.updateBoundingRadius=function(){this.boundingRadius=this.radius},d.prototype.updateArea=function(){this.area=Math.PI*this.radius*this.radius},d.prototype.computeAABB=function(a,b,c){var d=this.radius;f.set(a.upperBound,d,d),f.set(a.lowerBound,-d,-d),b&&(f.add(a.lowerBound,a.lowerBound,b),f.add(a.upperBound,a.upperBound,b))};var g=f.create(),h=f.create();d.prototype.raycast=function(a,b,c,d){var e=b.from,i=b.to,j=this.radius,k=Math.pow(i[0]-e[0],2)+Math.pow(i[1]-e[1],2),l=2*((i[0]-e[0])*(e[0]-c[0])+(i[1]-e[1])*(e[1]-c[1])),m=Math.pow(e[0]-c[0],2)+Math.pow(e[1]-c[1],2)-Math.pow(j,2),n=Math.pow(l,2)-4*k*m,o=g,p=h;if(!(0>n))if(0===n)f.lerp(o,e,i,n),f.sub(p,o,c),f.normalize(p,p),b.reportIntersection(a,n,p,-1);else{var q=Math.sqrt(n),r=1/(2*k),s=(-l-q)*r,t=(-l+q)*r;if(s>=0&&1>=s&&(f.lerp(o,e,i,s),f.sub(p,o,c),f.normalize(p,p),b.reportIntersection(a,s,p,-1),a.shouldStop(b)))return;t>=0&&1>=t&&(f.lerp(o,e,i,t),f.sub(p,o,c),f.normalize(p,p),b.reportIntersection(a,t,p,-1))}}},{"../math/vec2":30,"./Shape":45}],40:[function(a,b,c){function d(a){Array.isArray(arguments[0])&&(a={vertices:arguments[0],axes:arguments[1]},console.warn("The Convex constructor signature has changed. Please use the following format: new Convex({ vertices: [...], ... })")),a=a||{},this.vertices=[];for(var b=void 0!==a.vertices?a.vertices:[],c=0;ce)&&(e=d),(null===g||g>d)&&(g=d);if(g>e){var j=g;g=e,e=j}f.set(b,g,e)},d.prototype.projectOntoWorldAxis=function(a,b,c,d){var e=i;this.projectOntoLocalAxis(a,d),0!==c?f.rotate(e,a,c):e=a;var g=f.dot(b,e);f.set(d,d[0]+g,d[1]+g)},d.prototype.updateTriangles=function(){this.triangles.length=0;for(var a=[],b=0;bg;e=g,g++){var h=this.vertices[e],i=this.vertices[g],j=Math.abs(f.crossLength(h,i)),k=f.dot(i,i)+f.dot(i,h)+f.dot(h,h);b+=j*k,c+=j}return a/6*(b/c)},d.prototype.updateBoundingRadius=function(){for(var a=this.vertices,b=0,c=0;c!==a.length;c++){var d=f.squaredLength(a[c]);d>b&&(b=d)}this.boundingRadius=Math.sqrt(b)},d.triangleArea=function(a,b,c){return.5*((b[0]-a[0])*(c[1]-a[1])-(c[0]-a[0])*(b[1]-a[1]))},d.prototype.updateArea=function(){this.updateTriangles(),this.area=0;for(var a=this.triangles,b=this.vertices,c=0;c!==a.length;c++){var e=a[c],f=b[e[0]],g=b[e[1]],h=b[e[2]],i=d.triangleArea(f,g,h);this.area+=i}},d.prototype.computeAABB=function(a,b,c){a.setFromPoints(this.vertices,b,c,0)};var o=f.create(),p=f.create(),q=f.create();d.prototype.raycast=function(a,b,c,d){var e=o,g=p,h=q,i=this.vertices;f.toLocalFrame(e,b.from,c,d),f.toLocalFrame(g,b.to,c,d);for(var j=i.length,k=0;j>k&&!a.shouldStop(b);k++){var l=i[k],m=i[(k+1)%j],n=f.getLineSegmentsIntersectionFraction(e,g,l,m);n>=0&&(f.sub(h,m,l),f.rotate(h,h,-Math.PI/2+d),f.normalize(h,h),b.reportIntersection(a,n,h,k))}}},{"../math/polyk":29,"../math/vec2":30,"./Shape":45,"poly-decomp":5}],41:[function(a,b,c){function d(a){if(Array.isArray(arguments[0])){if(a={heights:arguments[0]},"object"==typeof arguments[1])for(var b in arguments[1])a[b]=arguments[1][b];console.warn("The Heightfield constructor signature has changed. Please use the following format: new Heightfield({ heights: [...], ... })")}a=a||{},this.heights=a.heights?a.heights.slice(0):[],this.maxValue=a.maxValue||null,this.minValue=a.minValue||null,this.elementWidth=a.elementWidth||.1,void 0!==a.maxValue&&void 0!==a.minValue||this.updateMaxMinValues(),a.type=e.HEIGHTFIELD,e.call(this,a)}var e=a("./Shape"),f=a("../math/vec2");a("../utils/Utils");b.exports=d,d.prototype=new e,d.prototype.constructor=d,d.prototype.updateMaxMinValues=function(){for(var a=this.heights,b=a[0],c=a[0],d=0;d!==a.length;d++){var e=a[d];e>b&&(b=e),c>e&&(c=e)}this.maxValue=b,this.minValue=c},d.prototype.computeMomentOfInertia=function(a){return Number.MAX_VALUE},d.prototype.updateBoundingRadius=function(){this.boundingRadius=Number.MAX_VALUE},d.prototype.updateArea=function(){for(var a=this.heights,b=0,c=0;cs){var t=r;r=s,s=t}for(var u=0;u=0&&(f.sub(m,o,n),f.rotate(m,m,d+Math.PI/2),f.normalize(m,m),b.reportIntersection(a,v,m,-1),a.shouldStop(b)))return}}},{"../math/vec2":30,"../utils/Utils":57,"./Shape":45}],42:[function(a,b,c){function d(a){"number"==typeof arguments[0]&&(a={length:arguments[0]},console.warn("The Line constructor signature has changed. Please use the following format: new Line({ length: 1, ... })")),a=a||{},this.length=a.length||1,a.type=e.LINE,e.call(this,a)}var e=a("./Shape"),f=a("../math/vec2");b.exports=d,d.prototype=new e,d.prototype.constructor=d,d.prototype.computeMomentOfInertia=function(a){return a*Math.pow(this.length,2)/12},d.prototype.updateBoundingRadius=function(){this.boundingRadius=this.length/2};var g=[f.create(),f.create()];d.prototype.computeAABB=function(a,b,c){var d=this.length/2;f.set(g[0],-d,0),f.set(g[1],d,0),a.setFromPoints(g,b,c,0)};var h=(f.create(),f.create()),i=f.create(),j=f.create(),k=f.fromValues(0,1);d.prototype.raycast=function(a,b,c,d){var e=b.from,g=b.to,l=i,m=j,n=this.length/2;f.set(l,-n,0),f.set(m,n,0),f.toGlobalFrame(l,l,c,d),f.toGlobalFrame(m,m,c,d);var o=f.getLineSegmentsIntersectionFraction(l,m,e,g);if(o>=0){var p=h;f.rotate(p,k,d),b.reportIntersection(a,o,p,-1)}}},{"../math/vec2":30,"./Shape":45}],43:[function(a,b,c){function d(a){a=a||{},a.type=e.PARTICLE,e.call(this,a)}var e=a("./Shape"),f=a("../math/vec2");b.exports=d,d.prototype=new e,d.prototype.constructor=d,d.prototype.computeMomentOfInertia=function(a){return 0},d.prototype.updateBoundingRadius=function(){this.boundingRadius=0},d.prototype.computeAABB=function(a,b,c){f.copy(a.lowerBound,b),f.copy(a.upperBound,b)}},{"../math/vec2":30,"./Shape":45}],44:[function(a,b,c){function d(a){a=a||{},a.type=e.PLANE,e.call(this,a)}var e=a("./Shape"),f=a("../math/vec2");a("../utils/Utils");b.exports=d,d.prototype=new e,d.prototype.constructor=d,d.prototype.computeMomentOfInertia=function(a){return 0},d.prototype.updateBoundingRadius=function(){this.boundingRadius=Number.MAX_VALUE},d.prototype.computeAABB=function(a,b,c){var d=c%(2*Math.PI),e=f.set,g=Number.MAX_VALUE,h=a.lowerBound,i=a.upperBound;0===d?(e(h,-g,-g),e(i,g,0)):d===Math.PI/2?(e(h,0,-g),e(i,g,g)):d===Math.PI?(e(h,-g,0),e(i,g,g)):d===3*Math.PI/2?(e(h,-g,-g),e(i,0,g)):(e(h,-g,-g),e(i,g,g)),f.add(h,h,b),f.add(i,i,b)},d.prototype.updateArea=function(){this.area=Number.MAX_VALUE};var g=f.create(),h=(f.create(),f.create(),f.create()),i=f.create();d.prototype.raycast=function(a,b,c,d){var e=b.from,j=b.to,k=b.direction,l=g,m=h,n=i;f.set(m,0,1),f.rotate(m,m,d),f.sub(n,e,c);var o=f.dot(n,m);f.sub(n,j,c);var p=f.dot(n,m);if(!(o*p>0||f.squaredDistance(e,j)=w*w)break}for(d.updateMultipliers(k,q,1/a),x=0;x!==l;x++){var z=k[x];if(z instanceof i){for(var A=0,B=0;B!==z.contactEquations.length;B++)A+=z.contactEquations[B].multiplier;A*=z.frictionCoefficient/z.contactEquations.length,z.maxForce=A,z.minForce=-A}}}for(c=0;c!==g;c++){for(w=0,x=0;x!==l;x++){v=k[x];var y=d.iterateEquation(x,v,v.epsilon,u,t,q,p,a,c);w+=Math.abs(y)}if(this.usedIterations++,m>=w*w)break}for(r=0;r!==o;r++)n[r].addConstraintVelocity();d.updateMultipliers(k,q,1/a)}},d.updateMultipliers=function(a,b,c){for(var d=a.length;d--;)a[d].multiplier=b[d]*c},d.iterateEquation=function(a,b,c,d,e,f,g,h,i){var j=d[a],k=e[a],l=f[a],m=b.computeGWlambda(),n=b.maxForce,o=b.minForce;g&&(j=0);var p=k*(j-m-c*l),q=l+p;return o*h>q?p=o*h-l:q>n*h&&(p=n*h-l),f[a]+=p,b.addToWlambda(p),p}},{"../equations/FrictionEquation":23,"../math/vec2":30,"../utils/Utils":57,"./Solver":47}],47:[function(a,b,c){function d(a,b){a=a||{},e.call(this),this.type=b,this.equations=[],this.equationSortFunction=a.equationSortFunction||!1}var e=(a("../utils/Utils"),a("../events/EventEmitter"));b.exports=d,d.prototype=new e,d.prototype.constructor=d,d.prototype.solve=function(a,b){throw new Error("Solver.solve should be implemented by subclasses!")};var f={bodies:[]};d.prototype.solveIsland=function(a,b){this.removeAllEquations(),b.equations.length&&(this.addEquations(b.equations),f.bodies.length=0,b.getBodies(f.bodies),f.bodies.length&&this.solve(a,f))},d.prototype.sortEquations=function(){this.equationSortFunction&&this.equations.sort(this.equationSortFunction)},d.prototype.addEquation=function(a){a.enabled&&this.equations.push(a)},d.prototype.addEquations=function(a){for(var b=0,c=a.length;b!==c;b++){var d=a[b];d.enabled&&this.equations.push(d)}},d.prototype.removeEquation=function(a){var b=this.equations.indexOf(a);-1!==b&&this.equations.splice(b,1)},d.prototype.removeAllEquations=function(){this.equations.length=0},d.GS=1,d.ISLAND=2},{"../events/EventEmitter":26,"../utils/Utils":57}],48:[function(a,b,c){function d(){f.apply(this,arguments)}var e=a("../equations/ContactEquation"),f=a("./Pool");b.exports=d,d.prototype=new f,d.prototype.constructor=d,d.prototype.create=function(){return new e},d.prototype.destroy=function(a){return a.bodyA=a.bodyB=null,this}},{"../equations/ContactEquation":21,"./Pool":55}],49:[function(a,b,c){function d(){f.apply(this,arguments)}var e=a("../equations/FrictionEquation"),f=a("./Pool");b.exports=d,d.prototype=new f,d.prototype.constructor=d,d.prototype.create=function(){return new e},d.prototype.destroy=function(a){return a.bodyA=a.bodyB=null,this}},{"../equations/FrictionEquation":23,"./Pool":55}],50:[function(a,b,c){function d(){f.apply(this,arguments)}var e=a("../world/IslandNode"),f=a("./Pool");b.exports=d,d.prototype=new f,d.prototype.constructor=d,d.prototype.create=function(){return new e},d.prototype.destroy=function(a){return a.reset(),this}},{"../world/IslandNode":60,"./Pool":55}],51:[function(a,b,c){function d(){f.apply(this,arguments)}var e=a("../world/Island"),f=a("./Pool");b.exports=d,d.prototype=new f,d.prototype.constructor=d,d.prototype.create=function(){return new e},d.prototype.destroy=function(a){return a.reset(),this}},{"../world/Island":58,"./Pool":55}],52:[function(a,b,c){function d(){this.overlappingShapesLastState=new e,this.overlappingShapesCurrentState=new e,this.recordPool=new f({size:16}),this.tmpDict=new e,this.tmpArray1=[]}var e=a("./TupleDictionary"),f=(a("./OverlapKeeperRecord"),a("./OverlapKeeperRecordPool"));a("./Utils");b.exports=d,d.prototype.tick=function(){for(var a=this.overlappingShapesLastState,b=this.overlappingShapesCurrentState,c=a.keys.length;c--;){var d=a.keys[c],e=a.getByKey(d);b.getByKey(d);e&&this.recordPool.release(e)}a.reset(),a.copy(b),b.reset()},d.prototype.setOverlapping=function(a,b,c,d){var e=(this.overlappingShapesLastState,this.overlappingShapesCurrentState);if(!e.get(b.id,d.id)){var f=this.recordPool.get();f.set(a,b,c,d),e.set(b.id,d.id,f)}},d.prototype.getNewOverlaps=function(a){return this.getDiff(this.overlappingShapesLastState,this.overlappingShapesCurrentState,a)},d.prototype.getEndOverlaps=function(a){return this.getDiff(this.overlappingShapesCurrentState,this.overlappingShapesLastState,a)},d.prototype.bodiesAreOverlapping=function(a,b){for(var c=this.overlappingShapesCurrentState,d=c.keys.length;d--;){var e=c.keys[d],f=c.data[e];if(f.bodyA===a&&f.bodyB===b||f.bodyA===b&&f.bodyB===a)return!0}return!1},d.prototype.getDiff=function(a,b,c){var c=c||[],d=a,e=b;c.length=0;for(var f=e.keys.length;f--;){var g=e.keys[f],h=e.data[g];if(!h)throw new Error("Key "+g+" had no data!");var i=d.data[g];i||c.push(h)}return c},d.prototype.isNewOverlap=function(a,b){var c=0|a.id,d=0|b.id,e=this.overlappingShapesLastState,f=this.overlappingShapesCurrentState;return!e.get(c,d)&&!!f.get(c,d)},d.prototype.getNewBodyOverlaps=function(a){this.tmpArray1.length=0;var b=this.getNewOverlaps(this.tmpArray1);return this.getBodyDiff(b,a)},d.prototype.getEndBodyOverlaps=function(a){this.tmpArray1.length=0;var b=this.getEndOverlaps(this.tmpArray1);return this.getBodyDiff(b,a)},d.prototype.getBodyDiff=function(a,b){b=b||[];for(var c=this.tmpDict,d=a.length;d--;){var e=a[d];c.set(0|e.bodyA.id,0|e.bodyB.id,e)}for(d=c.keys.length;d--;){var e=c.getByKey(c.keys[d]);e&&b.push(e.bodyA,e.bodyB)}return c.reset(),b}},{"./OverlapKeeperRecord":53,"./OverlapKeeperRecordPool":54,"./TupleDictionary":56,"./Utils":57}],53:[function(a,b,c){function d(a,b,c,d){this.shapeA=b,this.shapeB=d,this.bodyA=a,this.bodyB=c}b.exports=d,d.prototype.set=function(a,b,c,e){d.call(this,a,b,c,e)}},{}],54:[function(a,b,c){function d(){f.apply(this,arguments)}var e=a("./OverlapKeeperRecord"),f=a("./Pool");b.exports=d,d.prototype=new f,d.prototype.constructor=d,d.prototype.create=function(){return new e},d.prototype.destroy=function(a){return a.bodyA=a.bodyB=a.shapeA=a.shapeB=null,this}},{"./OverlapKeeperRecord":53,"./Pool":55}],55:[function(a,b,c){function d(a){a=a||{},this.objects=[],void 0!==a.size&&this.resize(a.size)}b.exports=d,d.prototype.resize=function(a){for(var b=this.objects;b.length>a;)b.pop();for(;b.length(0|b)?a<<16|65535&b:b<<16|65535&a)},d.prototype.getByKey=function(a){return a=0|a,this.data[a]},d.prototype.get=function(a,b){return this.data[this.getKey(a,b)]},d.prototype.set=function(a,b,c){if(!c)throw new Error("No data!");var d=this.getKey(a,b);return this.data[d]||this.keys.push(d),this.data[d]=c,d},d.prototype.reset=function(){for(var a=this.data,b=this.keys,c=b.length;c--;)delete a[b[c]];b.length=0},d.prototype.copy=function(a){this.reset(),e.appendArray(this.keys,a.keys);for(var b=a.keys.length;b--;){var c=a.keys[b];this.data[c]=a.data[c]}}},{"./Utils":57}],57:[function(a,b,c){function d(){}b.exports=d,d.appendArray=function(a,b){if(b.length<15e4)a.push.apply(a,b);else for(var c=0,d=b.length;c!==d;++c)a.push(b[c])},d.splice=function(a,b,c){c=c||1;for(var d=b,e=a.length-c;e>d;d++)a[d]=a[d+c];a.length=e},"undefined"!=typeof P2_ARRAY_TYPE?d.ARRAY_TYPE=P2_ARRAY_TYPE:"undefined"!=typeof Float32Array?d.ARRAY_TYPE=Float32Array:d.ARRAY_TYPE=Array,d.extend=function(a,b){for(var c in b)a[c]=b[c]},d.defaults=function(a,b){a=a||{};for(var c in b)c in a||(a[c]=b[c]);return a}},{}],58:[function(a,b,c){function d(){this.equations=[],this.bodies=[]}var e=a("../objects/Body");b.exports=d,d.prototype.reset=function(){this.equations.length=this.bodies.length=0};var f=[];d.prototype.getBodies=function(a){var b=a||[],c=this.equations;f.length=0;for(var d=0;d!==c.length;d++){var e=c[d];-1===f.indexOf(e.bodyA.id)&&(b.push(e.bodyA),f.push(e.bodyA.id)),-1===f.indexOf(e.bodyB.id)&&(b.push(e.bodyB),f.push(e.bodyB.id))}return b},d.prototype.wantsToSleep=function(){for(var a=0;a=a&&c>d;)this.internalStep(a),this.time+=a,this.accumulator-=a,d++;for(var e=this.accumulator%a/a,g=0;g!==this.bodies.length;g++){var h=this.bodies[g];f.lerp(h.interpolatedPosition,h.previousPosition,h.position,e),h.interpolatedAngle=h.previousAngle+e*(h.angle-h.previousAngle)}}};var y=[];d.prototype.internalStep=function(a){this.stepping=!0;var b=this.springs.length,c=this.springs,e=this.bodies,g=this.gravity,h=this.solver,i=this.bodies.length,j=this.broadphase,k=this.narrowphase,l=this.constraints,n=v,o=(f.scale,f.add),p=(f.rotate,this.islandManager);if(this.overlapKeeper.tick(),this.lastTimeStep=a,this.useWorldGravityAsFrictionGravity){var q=f.length(this.gravity);0===q&&this.useFrictionGravityOnZeroGravity||(this.frictionGravity=q)}if(this.applyGravity)for(var r=0;r!==i;r++){var t=e[r],u=t.force;t.type===m.DYNAMIC&&t.sleepState!==m.SLEEPING&&(f.scale(n,g,t.mass*t.gravityScale),o(u,u,n))}if(this.applySpringForces)for(var r=0;r!==b;r++){var w=c[r];w.applyForce()}if(this.applyDamping)for(var r=0;r!==i;r++){var t=e[r];t.type===m.DYNAMIC&&t.applyDamping(a)}for(var x=j.getCollisionPairs(this),z=this.disabledBodyCollisionPairs,r=z.length-2;r>=0;r-=2)for(var A=x.length-2;A>=0;A-=2)(z[r]===x[A]&&z[r+1]===x[A+1]||z[r+1]===x[A]&&z[r]===x[A+1])&&x.splice(A,2);var B=l.length;for(r=0;r!==B;r++){var C=l[r];if(!C.collideConnected)for(var A=x.length-2;A>=0;A-=2)(C.bodyA===x[A]&&C.bodyB===x[A+1]||C.bodyB===x[A]&&C.bodyA===x[A+1])&&x.splice(A,2)}this.postBroadphaseEvent.pairs=x,this.emit(this.postBroadphaseEvent),this.postBroadphaseEvent.pairs=null,k.reset(this);for(var r=0,D=x.length;r!==D;r+=2)for(var E=x[r],F=x[r+1],G=0,H=E.shapes.length;G!==H;G++)for(var I=E.shapes[G],J=I.position,K=I.angle,L=0,M=F.shapes.length;L!==M;L++){var N=F.shapes[L],O=N.position,P=N.angle,Q=this.defaultContactMaterial;if(I.material&&N.material){var R=this.getContactMaterial(I.material,N.material);R&&(Q=R)}this.runNarrowphase(k,E,I,J,K,F,N,O,P,Q,this.frictionGravity)}for(var r=0;r!==i;r++){var S=e[r];S._wakeUpAfterNarrowphase&&(S.wakeUp(),S._wakeUpAfterNarrowphase=!1)}if(this.has("endContact")){this.overlapKeeper.getEndOverlaps(y);for(var T=this.endContactEvent,L=y.length;L--;){var U=y[L];T.shapeA=U.shapeA,T.shapeB=U.shapeB,T.bodyA=U.bodyA,T.bodyB=U.bodyB,this.emit(T)}y.length=0}var V=this.preSolveEvent;V.contactEquations=k.contactEquations,V.frictionEquations=k.frictionEquations,this.emit(V),V.contactEquations=V.frictionEquations=null;var B=l.length;for(r=0;r!==B;r++)l[r].update();if(k.contactEquations.length||k.frictionEquations.length||B)if(this.islandSplit){for(p.equations.length=0,s.appendArray(p.equations,k.contactEquations),s.appendArray(p.equations,k.frictionEquations),r=0;r!==B;r++)s.appendArray(p.equations,l[r].equations);p.split(this);for(var r=0;r!==p.islands.length;r++){var W=p.islands[r];W.equations.length&&h.solveIsland(a,W)}}else{for(h.addEquations(k.contactEquations),h.addEquations(k.frictionEquations),r=0;r!==B;r++)h.addEquations(l[r].equations);this.solveConstraints&&h.solve(a,this),h.removeAllEquations()}for(var r=0;r!==i;r++){var S=e[r];S.integrate(a)}for(var r=0;r!==i;r++)e[r].setZeroForce();if(this.emitImpactEvent&&this.has("impact"))for(var X=this.impactEvent,r=0;r!==k.contactEquations.length;r++){var Y=k.contactEquations[r];Y.firstImpact&&(X.bodyA=Y.bodyA,X.bodyB=Y.bodyB,X.shapeA=Y.shapeA,X.shapeB=Y.shapeB,X.contactEquation=Y,this.emit(X))}if(this.sleepMode===d.BODY_SLEEPING)for(r=0;r!==i;r++)e[r].sleepTick(this.time,!1,a);else if(this.sleepMode===d.ISLAND_SLEEPING&&this.islandSplit){for(r=0;r!==i;r++)e[r].sleepTick(this.time,!0,a);for(var r=0;r0,a.frictionCoefficient=k.friction;var p;p=b.type===m.STATIC||b.type===m.KINEMATIC?g.mass:g.type===m.STATIC||g.type===m.KINEMATIC?b.mass:b.mass*g.mass/(b.mass+g.mass),a.slipForce=k.friction*l*p,a.restitution=k.restitution,a.surfaceVelocity=k.surfaceVelocity,a.frictionStiffness=k.frictionStiffness,a.frictionRelaxation=k.frictionRelaxation,a.stiffness=k.stiffness,a.relaxation=k.relaxation,a.contactSkinSize=k.contactSkinSize,a.enabledEquations=b.collisionResponse&&g.collisionResponse&&c.collisionResponse&&h.collisionResponse;var q=a[c.type|h.type],r=0;if(q){var s=c.sensor||h.sensor,t=a.frictionEquations.length;r=c.type=2*y&&(b._wakeUpAfterNarrowphase=!0)}if(g.allowSleep&&g.type===m.DYNAMIC&&g.sleepState===m.SLEEPING&&b.sleepState===m.AWAKE&&b.type!==m.STATIC){var z=f.squaredLength(b.velocity)+Math.pow(b.angularVelocity,2),A=Math.pow(b.sleepSpeedLimit,2);z>=2*A&&(g._wakeUpAfterNarrowphase=!0)}if(this.overlapKeeper.setOverlapping(b,c,g,h),this.has("beginContact")&&this.overlapKeeper.isNewOverlap(c,h)){var B=this.beginContactEvent;if(B.shapeA=c,B.shapeB=h,B.bodyA=b,B.bodyB=g,B.contactEquations.length=0,"number"==typeof r)for(var C=a.contactEquations.length-r;C1)for(var C=a.frictionEquations.length-u;C=0;b--)this.removeConstraint(a[b]);for(var c=this.bodies,b=c.length-1;b>=0;b--)this.removeBody(c[b]);for(var e=this.springs,b=e.length-1;b>=0;b--)this.removeSpring(e[b]);for(var f=this.contactMaterials,b=f.length-1;b>=0;b--)this.removeContactMaterial(f[b]);d.apply(this)};var z=f.create(),A=(f.fromValues(0,0),f.fromValues(0,0));d.prototype.hitTest=function(a,b,c){c=c||0;var d=new m({position:a}),e=new k,l=a,n=0,o=z,p=A;d.addShape(e);for(var q=this.narrowphase,r=[],s=0,t=b.length;s!==t;s++)for(var u=b[s],v=0,w=u.shapes.length;v!==w;v++){var x=u.shapes[v];f.rotate(o,x.position,u.angle),f.add(o,o,u.position);var y=x.angle+u.angle;(x instanceof g&&q.circleParticle(u,x,o,y,d,e,l,n,!0)||x instanceof h&&q.particleConvex(d,e,l,n,u,x,o,y,!0)||x instanceof i&&q.particlePlane(d,e,l,n,u,x,o,y,!0)||x instanceof j&&q.particleCapsule(d,e,l,n,u,x,o,y,!0)||x instanceof k&&f.squaredLength(f.sub(p,o,a)) +* @license {@link https://github.com/photonstorm/phaser/blob/master/license.txt|MIT License} +*/ /** - * The base class for all objects that are rendered on the screen. - * This is an abstract class and should not be used on its own rather it should be extended. - * - * @class DisplayObject - * @constructor - */ -PIXI.DisplayObject = function() -{ +* The base class for all objects that are rendered. Contains properties for position, scaling, +* rotation, masks and cache handling. +* +* This is an abstract class and should not be used on its own, rather it should be extended. +* +* It is used internally by the likes of PIXI.Sprite. +* +* @class PIXI.DisplayObject +* @constructor +*/ +PIXI.DisplayObject = function() { + /** - * The coordinate of the object relative to the local coordinates of the parent. - * - * @property position - * @type Point - */ + * The coordinates, in pixels, of this DisplayObject, relative to its parent container. + * + * The value of this property does not reflect any positioning happening further up the display list. + * To obtain that value please see the `worldPosition` property. + * + * @property {PIXI.Point} position + * @default + */ this.position = new PIXI.Point(0, 0); /** - * The scale factor of the object. - * - * @property scale - * @type Point - */ + * The scale of this DisplayObject. A scale of 1:1 represents the DisplayObject + * at its default size. A value of 0.5 would scale this DisplayObject by half, and so on. + * + * The value of this property does not reflect any scaling happening further up the display list. + * To obtain that value please see the `worldScale` property. + * + * @property {PIXI.Point} scale + * @default + */ this.scale = new PIXI.Point(1, 1); /** - * The pivot point of the displayObject that it rotates around - * - * @property pivot - * @type Point - */ + * The pivot point of this DisplayObject that it rotates around. The values are expressed + * in pixel values. + * @property {PIXI.Point} pivot + * @default + */ this.pivot = new PIXI.Point(0, 0); /** - * The rotation of the object in radians. - * - * @property rotation - * @type Number - */ + * The rotation of this DisplayObject. The value is given, and expressed, in radians, and is based on + * a right-handed orientation. + * + * The value of this property does not reflect any rotation happening further up the display list. + * To obtain that value please see the `worldRotation` property. + * + * @property {number} rotation + * @default + */ this.rotation = 0; /** - * The opacity of the object. - * - * @property alpha - * @type Number - */ + * The alpha value of this DisplayObject. A value of 1 is fully opaque. A value of 0 is transparent. + * Please note that an object with an alpha value of 0 is skipped during the render pass. + * + * The value of this property does not reflect any alpha values set further up the display list. + * To obtain that value please see the `worldAlpha` property. + * + * @property {number} alpha + * @default + */ this.alpha = 1; /** - * The visibility of the object. - * - * @property visible - * @type Boolean - */ + * The visibility of this DisplayObject. A value of `false` makes the object invisible. + * A value of `true` makes it visible. Please note that an object with a visible value of + * `false` is skipped during the render pass. Equally a DisplayObject with visible false will + * not render any of its children. + * + * The value of this property does not reflect any visible values set further up the display list. + * To obtain that value please see the `worldVisible` property. + * + * @property {boolean} visible + * @default + */ this.visible = true; /** @@ -225,688 +252,729 @@ PIXI.DisplayObject = function() this.hitArea = null; /** - * Can this object be rendered - * - * @property renderable - * @type Boolean - */ + * Should this DisplayObject be rendered by the renderer? An object with a renderable value of + * `false` is skipped during the render pass. + * + * @property {boolean} renderable + * @default + */ this.renderable = false; /** - * [read-only] The display object container that contains this display object. - * - * @property parent - * @type DisplayObjectContainer - * @readOnly - */ + * The parent DisplayObjectContainer that this DisplayObject is a child of. + * All DisplayObjects must belong to a parent in order to be rendered. + * The root parent is the Stage object. This property is set automatically when the + * DisplayObject is added to, or removed from, a DisplayObjectContainer. + * + * @property {PIXI.DisplayObjectContainer} parent + * @default + * @readOnly + */ this.parent = null; /** - * [read-only] The stage the display object is connected to, or undefined if it is not connected to the stage. - * - * @property stage - * @type Stage - * @readOnly - */ + * The stage that this DisplayObject is connected to. + * + * @property {PIXI.Stage} stage + * @default + * @readOnly + */ this.stage = null; /** - * [read-only] The multiplied alpha of the displayObject - * - * @property worldAlpha - * @type Number - * @readOnly - */ + * The multiplied alpha value of this DisplayObject. A value of 1 is fully opaque. A value of 0 is transparent. + * This value is the calculated total, based on the alpha values of all parents of this DisplayObjects + * in the display list. + * + * To obtain, and set, the local alpha value, see the `alpha` property. + * + * Note: This property is only updated at the end of the `updateTransform` call, once per render. Until + * that happens this property will contain values based on the previous frame. Be mindful of this if + * accessing this property outside of the normal game flow, i.e. from an asynchronous event callback. + * + * @property {number} worldAlpha + * @readOnly + */ this.worldAlpha = 1; /** - * [read-only] Current transform of the object based on world (parent) factors - * - * @property worldTransform - * @type Matrix - * @readOnly - * @private - */ + * The current transform of this DisplayObject. + * + * This property contains the calculated total, based on the transforms of all parents of this + * DisplayObject in the display list. + * + * Note: This property is only updated at the end of the `updateTransform` call, once per render. Until + * that happens this property will contain values based on the previous frame. Be mindful of this if + * accessing this property outside of the normal game flow, i.e. from an asynchronous event callback. + * + * @property {PIXI.Matrix} worldTransform + * @readOnly + */ this.worldTransform = new PIXI.Matrix(); /** - * The position of the Display Object based on the world transform. - * This value is updated at the end of updateTransform and takes all parent transforms into account. - * - * @property worldPosition - * @type Point - * @readOnly - */ + * The coordinates, in pixels, of this DisplayObject within the world. + * + * This property contains the calculated total, based on the positions of all parents of this + * DisplayObject in the display list. + * + * Note: This property is only updated at the end of the `updateTransform` call, once per render. Until + * that happens this property will contain values based on the previous frame. Be mindful of this if + * accessing this property outside of the normal game flow, i.e. from an asynchronous event callback. + * + * @property {PIXI.Point} worldPosition + * @readOnly + */ this.worldPosition = new PIXI.Point(0, 0); /** - * The scale of the Display Object based on the world transform. - * This value is updated at the end of updateTransform and takes all parent transforms into account. - * - * @property worldScale - * @type Point - * @readOnly - */ + * The global scale of this DisplayObject. + * + * This property contains the calculated total, based on the scales of all parents of this + * DisplayObject in the display list. + * + * Note: This property is only updated at the end of the `updateTransform` call, once per render. Until + * that happens this property will contain values based on the previous frame. Be mindful of this if + * accessing this property outside of the normal game flow, i.e. from an asynchronous event callback. + * + * @property {PIXI.Point} worldScale + * @readOnly + */ this.worldScale = new PIXI.Point(1, 1); /** - * The rotation of the Display Object, in radians, based on the world transform. - * This value is updated at the end of updateTransform and takes all parent transforms into account. - * - * @property worldRotation - * @type Number - * @readOnly - */ + * The rotation, in radians, of this DisplayObject. + * + * This property contains the calculated total, based on the rotations of all parents of this + * DisplayObject in the display list. + * + * Note: This property is only updated at the end of the `updateTransform` call, once per render. Until + * that happens this property will contain values based on the previous frame. Be mindful of this if + * accessing this property outside of the normal game flow, i.e. from an asynchronous event callback. + * + * @property {number} worldRotation + * @readOnly + */ this.worldRotation = 0; /** - * cached sin rotation and cos rotation - * - * @property _sr - * @type Number - * @private - */ - this._sr = 0; - - /** - * cached sin rotation and cos rotation - * - * @property _cr - * @type Number - * @private - */ - this._cr = 1; - - /** - * The area the filter is applied to like the hitArea this is used as more of an optimisation - * rather than figuring out the dimensions of the displayObject each frame you can set this rectangle - * - * @property filterArea - * @type Rectangle - */ + * The rectangular area used by filters when rendering a shader for this DisplayObject. + * + * @property {PIXI.Rectangle} filterArea + * @type Rectangle + * @default + */ this.filterArea = null; /** - * The original, cached bounds of the object - * - * @property _bounds - * @type Rectangle - * @private - */ + * @property {number} _sr - Cached rotation value. + * @private + */ + this._sr = 0; + + /** + * @property {number} _cr - Cached rotation value. + * @private + */ + this._cr = 1; + + /** + * @property {PIXI.Rectangle} _bounds - The cached bounds of this object. + * @private + */ this._bounds = new PIXI.Rectangle(0, 0, 1, 1); /** - * The most up-to-date bounds of the object - * - * @property _currentBounds - * @type Rectangle - * @private - */ + * @property {PIXI.Rectangle} _currentBounds - The most recently calculated bounds of this object. + * @private + */ this._currentBounds = null; /** - * The original, cached mask of the object - * - * @property _mask - * @type Rectangle - * @private - */ + * @property {PIXI.Rectangle} _mask - The cached mask of this object. + * @private + */ this._mask = null; /** - * Cached internal flag. - * - * @property _cacheAsBitmap - * @type Boolean - * @private - */ + * @property {boolean} _cacheAsBitmap - Internal cache as bitmap flag. + * @private + */ this._cacheAsBitmap = false; /** - * Cached internal flag. - * - * @property _cacheIsDirty - * @type Boolean - * @private - */ + * @property {boolean} _cacheIsDirty - Internal dirty cache flag. + * @private + */ this._cacheIsDirty = false; }; -// constructor PIXI.DisplayObject.prototype.constructor = PIXI.DisplayObject; -/** - * Destroy this DisplayObject. - * Removes all references to transformCallbacks, its parent, the stage, filters, bounds, mask and cached Sprites. - * - * @method destroy - */ -PIXI.DisplayObject.prototype.destroy = function() -{ - if (this.children) - { - var i = this.children.length; +PIXI.DisplayObject.prototype = { - while (i--) + /** + * Destroy this DisplayObject. + * + * Removes any cached sprites, sets renderable flag to false, and nulls references to the Stage, filters, + * bounds and mask. + * + * Also iteratively calls `destroy` on any children. + * + * @method PIXI.DisplayObject#destroy + */ + destroy: function () { + + if (this.children) { - this.children[i].destroy(); - } + var i = this.children.length; - this.children = []; - } - - this.hitArea = null; - this.parent = null; - this.stage = null; - this.worldTransform = null; - this.filterArea = null; - this._bounds = null; - this._currentBounds = null; - this._mask = null; - - // In case Pixi is still going to try and render it even though destroyed - this.renderable = false; - - this._destroyCachedSprite(); -}; - -/** - * [read-only] Indicates if the sprite is globally visible. - * - * @property worldVisible - * @type Boolean - */ -Object.defineProperty(PIXI.DisplayObject.prototype, 'worldVisible', { - - get: function() { - - var item = this; - - do - { - if (!item.visible) return false; - item = item.parent; - } - while(item); - - return true; - } - -}); - -/** - * Sets a mask for the displayObject. A mask is an object that limits the visibility of an object to the shape of the mask applied to it. - * In PIXI a regular mask must be a PIXI.Graphics object. This allows for much faster masking in canvas as it utilises shape clipping. - * To remove a mask, set this property to null. - * - * @property mask - * @type Graphics - */ -Object.defineProperty(PIXI.DisplayObject.prototype, 'mask', { - - get: function() { - return this._mask; - }, - - set: function(value) { - - if (this._mask) this._mask.isMask = false; - - this._mask = value; - - if (this._mask) this._mask.isMask = true; - } - -}); - -/** - * Sets the filters for the displayObject. - * IMPORTANT: This is a webGL only feature and will be ignored by the Canvas renderer. - * - * To remove filters simply set this property to 'null'. - * - * You cannot have a filter and a multiply blend mode active at the same time. Setting a filter will reset - * this objects blend mode to NORMAL. - * - * @property filters - * @type Array(Filter) - */ -Object.defineProperty(PIXI.DisplayObject.prototype, 'filters', { - - get: function() { - return this._filters; - }, - - set: function(value) { - - if (value) - { - // now put all the passes in one place.. - var passes = []; - - for (var i = 0; i < value.length; i++) + while (i--) { - var filterPasses = value[i].passes; - - for (var j = 0; j < filterPasses.length; j++) - { - passes.push(filterPasses[j]); - } + this.children[i].destroy(); } - // TODO change this as it is legacy - this._filterBlock = { target: this, filterPasses: passes }; + this.children = []; } - this._filters = value; + this.hitArea = null; + this.parent = null; + this.stage = null; + this.worldTransform = null; + this.filterArea = null; + this.renderable = false; - if (this.blendMode && this.blendMode === PIXI.blendModes.MULTIPLY) - { - this.blendMode = PIXI.blendModes.NORMAL; - } - } -}); + this._bounds = null; + this._currentBounds = null; + this._mask = null; -/** - * Set if this display object is cached as a bitmap. - * This basically takes a snap shot of the display object as it is at that moment. It can provide a performance benefit for complex static displayObjects. - * To remove simply set this property to 'null' - * @property cacheAsBitmap - * @type Boolean - */ -Object.defineProperty(PIXI.DisplayObject.prototype, 'cacheAsBitmap', { + this._destroyCachedSprite(); - get: function() { - return this._cacheAsBitmap; }, - set: function(value) { + /* + * Updates the transform matrix this DisplayObject uses for rendering. + * + * If the object has no parent, and no parent parameter is provided, it will default to + * Phaser.Game.World as the parent transform to use. If that is unavailable the transform fails to take place. + * + * The `parent` parameter has priority over the actual parent. Use it as a parent override. + * Setting it does **not** change the actual parent of this DisplayObject. + * + * Calling this method updates the `worldTransform`, `worldAlpha`, `worldPosition`, `worldScale` + * and `worldRotation` properties. + * + * If a `transformCallback` has been specified, it is called at the end of this method, and is passed + * the new, updated, worldTransform property, along with the parent transform used. + * + * @method PIXI.DisplayObject#updateTransform + * @param {PIXI.DisplayObject} [parent] - Optional parent to calculate this DisplayObjects transform from. + * @return {PIXI.DisplayObject} - A reference to this DisplayObject. + */ + updateTransform: function (parent) { - if (this._cacheAsBitmap === value) + if (!parent && !this.parent && !this.game) + { + return this; + } + + var p = this.parent; + + if (parent) + { + p = parent; + } + else if (!this.parent) + { + p = this.game.world; + } + + // create some matrix refs for easy access + var pt = p.worldTransform; + var wt = this.worldTransform; + + // temporary matrix variables + var a, b, c, d, tx, ty; + + // so if rotation is between 0 then we can simplify the multiplication process.. + if (this.rotation % PIXI.PI_2) + { + // check to see if the rotation is the same as the previous render. This means we only need to use sin and cos when rotation actually changes + if (this.rotation !== this.rotationCache) + { + this.rotationCache = this.rotation; + this._sr = Math.sin(this.rotation); + this._cr = Math.cos(this.rotation); + } + + // get the matrix values of the displayobject based on its transform properties.. + a = this._cr * this.scale.x; + b = this._sr * this.scale.x; + c = -this._sr * this.scale.y; + d = this._cr * this.scale.y; + tx = this.position.x; + ty = this.position.y; + + // check for pivot.. not often used so geared towards that fact! + if (this.pivot.x || this.pivot.y) + { + tx -= this.pivot.x * a + this.pivot.y * c; + ty -= this.pivot.x * b + this.pivot.y * d; + } + + // concat the parent matrix with the objects transform. + wt.a = a * pt.a + b * pt.c; + wt.b = a * pt.b + b * pt.d; + wt.c = c * pt.a + d * pt.c; + wt.d = c * pt.b + d * pt.d; + wt.tx = tx * pt.a + ty * pt.c + pt.tx; + wt.ty = tx * pt.b + ty * pt.d + pt.ty; + } + else + { + // lets do the fast version as we know there is no rotation.. + a = this.scale.x; + d = this.scale.y; + + tx = this.position.x - this.pivot.x * a; + ty = this.position.y - this.pivot.y * d; + + wt.a = a * pt.a; + wt.b = a * pt.b; + wt.c = d * pt.c; + wt.d = d * pt.d; + wt.tx = tx * pt.a + ty * pt.c + pt.tx; + wt.ty = tx * pt.b + ty * pt.d + pt.ty; + } + + // Set the World values + this.worldAlpha = this.alpha * p.worldAlpha; + this.worldPosition.set(wt.tx, wt.ty); + this.worldScale.set(this.scale.x * Math.sqrt(wt.a * wt.a + wt.c * wt.c), this.scale.y * Math.sqrt(wt.b * wt.b + wt.d * wt.d)); + this.worldRotation = Math.atan2(-wt.c, wt.d); + + // reset the bounds each time this is called! + this._currentBounds = null; + + // Custom callback? + if (this.transformCallback) + { + this.transformCallback.call(this.transformCallbackContext, wt, pt); + } + + return this; + + }, + + /** + * Sets the root Stage object that this DisplayObject is connected to. + * + * @method PIXI.DisplayObject#setStageReference + * @param {Phaser.Stage} stage - The stage that the object will have as its current stage reference + * @return {PIXI.DisplayObject} - A reference to this DisplayObject. + */ + setStageReference: function (stage) + { + this.stage = stage; + + return this; + + }, + + /** + * To be overridden by classes that require it. + * + * @method PIXI.DisplayObject#preUpdate + */ + preUpdate: function () { + + }, + + /** + * Generates a RenderTexture based on this DisplayObject, which can they be used to texture other Sprites. + * This can be useful if your DisplayObject is static, or complicated, and needs to be reused multiple times. + * + * Please note that no garbage collection takes place on old textures. It is up to you to destroy old textures, + * and references to them, so they don't linger in memory. + * + * @method PIXI.DisplayObject#generateTexture + * @param {number} [resolution=1] - The resolution of the texture being generated. + * @param {number} [scaleMode=PIXI.scaleModes.DEFAULT] - See {{#crossLink "PIXI/scaleModes:property"}}PIXI.scaleModes{{/crossLink}} for possible values. + * @param {PIXI.CanvasRenderer|PIXI.WebGLRenderer} renderer - The renderer used to generate the texture. + * @return {PIXI.RenderTexture} - A RenderTexture containing an image of this DisplayObject at the time it was invoked. + */ + generateTexture: function (resolution, scaleMode, renderer) { + + var bounds = this.getLocalBounds(); + + var renderTexture = new PIXI.RenderTexture(bounds.width | 0, bounds.height | 0, renderer, scaleMode, resolution); + + PIXI.DisplayObject._tempMatrix.tx = -bounds.x; + PIXI.DisplayObject._tempMatrix.ty = -bounds.y; + + renderTexture.render(this, PIXI.DisplayObject._tempMatrix); + + return renderTexture; + + }, + + /** + * If this DisplayObject has a cached Sprite, this method generates and updates it. + * + * @method PIXI.DisplayObject#updateCache + * @return {PIXI.DisplayObject} - A reference to this DisplayObject. + */ + updateCache: function () { + + this._generateCachedSprite(); + + return this; + + }, + + /** + * Calculates the global position of this DisplayObject, based on the position given. + * + * @method PIXI.DisplayObject#toGlobal + * @param {PIXI.Point} position - The global position to calculate from. + * @return {PIXI.Point} - A point object representing the position of this DisplayObject based on the global position given. + */ + toGlobal: function (position) { + + this.updateTransform(); + + return this.worldTransform.apply(position); + + }, + + /** + * Calculates the local position of this DisplayObject, relative to another point. + * + * @method PIXI.DisplayObject#toLocal + * @param {PIXI.Point} position - The world origin to calculate from. + * @param {PIXI.DisplayObject} [from] - An optional DisplayObject to calculate the global position from. + * @return {PIXI.Point} - A point object representing the position of this DisplayObject based on the global position given. + */ + toLocal: function (position, from) { + + if (from) + { + position = from.toGlobal(position); + } + + this.updateTransform(); + + return this.worldTransform.applyInverse(position); + + }, + + /** + * Internal method. + * + * @method PIXI.DisplayObject#_renderCachedSprite + * @private + * @param {Object} renderSession - The render session + */ + _renderCachedSprite: function (renderSession) { + + this._cachedSprite.worldAlpha = this.worldAlpha; + + if (renderSession.gl) + { + PIXI.Sprite.prototype._renderWebGL.call(this._cachedSprite, renderSession); + } + else + { + PIXI.Sprite.prototype._renderCanvas.call(this._cachedSprite, renderSession); + } + + }, + + /** + * Internal method. + * + * @method PIXI.DisplayObject#_generateCachedSprite + * @private + */ + _generateCachedSprite: function () { + + this._cacheAsBitmap = false; + + var bounds = this.getLocalBounds(); + + // Round it off and force non-zero dimensions + bounds.width = Math.max(1, Math.ceil(bounds.width)); + bounds.height = Math.max(1, Math.ceil(bounds.height)); + + this.updateTransform(); + + if (!this._cachedSprite) + { + var renderTexture = new PIXI.RenderTexture(bounds.width, bounds.height); + this._cachedSprite = new PIXI.Sprite(renderTexture); + this._cachedSprite.worldTransform = this.worldTransform; + } + else + { + this._cachedSprite.texture.resize(bounds.width, bounds.height); + } + + // Remove filters + var tempFilters = this._filters; + + this._filters = null; + this._cachedSprite.filters = tempFilters; + + PIXI.DisplayObject._tempMatrix.tx = -bounds.x; + PIXI.DisplayObject._tempMatrix.ty = -bounds.y; + + this._cachedSprite.texture.render(this, PIXI.DisplayObject._tempMatrix, true); + this._cachedSprite.anchor.x = -(bounds.x / bounds.width); + this._cachedSprite.anchor.y = -(bounds.y / bounds.height); + + this._filters = tempFilters; + + this._cacheAsBitmap = true; + + }, + + /** + * Destroys a cached Sprite. + * + * @method PIXI.DisplayObject#_destroyCachedSprite + * @private + */ + _destroyCachedSprite: function () { + + if (!this._cachedSprite) { return; } - if (value) - { - this._generateCachedSprite(); - } - else - { - this._destroyCachedSprite(); - } + this._cachedSprite.texture.destroy(true); - this._cacheAsBitmap = value; - } + this._cachedSprite = null; -}); - -/* - * Updates the object transform for rendering. - * - * If the object has no parent, and no parent parameter is provided, it will default to Phaser.Game.World as the parent. - * If that is unavailable the transform fails to take place. - * - * The `parent` parameter has priority over the actual parent. Use it as a parent override. - * Setting it does **not** change the actual parent of this DisplayObject, it just uses the parent for the transform update. - * - * @method updateTransform - * @param {DisplayObject} [parent] - Optional parent to parent this DisplayObject transform from. - */ -PIXI.DisplayObject.prototype.updateTransform = function(parent) -{ - if (!parent && !this.parent && !this.game) - { - return; - } - - var p = this.parent; - - if (parent) - { - p = parent; - } - else if (!this.parent) - { - p = this.game.world; - } - - // create some matrix refs for easy access - var pt = p.worldTransform; - var wt = this.worldTransform; - - // temporary matrix variables - var a, b, c, d, tx, ty; - - // so if rotation is between 0 then we can simplify the multiplication process.. - if (this.rotation % PIXI.PI_2) - { - // check to see if the rotation is the same as the previous render. This means we only need to use sin and cos when rotation actually changes - if (this.rotation !== this.rotationCache) - { - this.rotationCache = this.rotation; - this._sr = Math.sin(this.rotation); - this._cr = Math.cos(this.rotation); - } - - // get the matrix values of the displayobject based on its transform properties.. - a = this._cr * this.scale.x; - b = this._sr * this.scale.x; - c = -this._sr * this.scale.y; - d = this._cr * this.scale.y; - tx = this.position.x; - ty = this.position.y; - - // check for pivot.. not often used so geared towards that fact! - if (this.pivot.x || this.pivot.y) - { - tx -= this.pivot.x * a + this.pivot.y * c; - ty -= this.pivot.x * b + this.pivot.y * d; - } - - // concat the parent matrix with the objects transform. - wt.a = a * pt.a + b * pt.c; - wt.b = a * pt.b + b * pt.d; - wt.c = c * pt.a + d * pt.c; - wt.d = c * pt.b + d * pt.d; - wt.tx = tx * pt.a + ty * pt.c + pt.tx; - wt.ty = tx * pt.b + ty * pt.d + pt.ty; - } - else - { - // lets do the fast version as we know there is no rotation.. - a = this.scale.x; - d = this.scale.y; - - tx = this.position.x - this.pivot.x * a; - ty = this.position.y - this.pivot.y * d; - - wt.a = a * pt.a; - wt.b = a * pt.b; - wt.c = d * pt.c; - wt.d = d * pt.d; - wt.tx = tx * pt.a + ty * pt.c + pt.tx; - wt.ty = tx * pt.b + ty * pt.d + pt.ty; - } - - // Set the World values - this.worldAlpha = this.alpha * p.worldAlpha; - this.worldPosition.set(wt.tx, wt.ty); - this.worldScale.set(this.scale.x * Math.sqrt(wt.a * wt.a + wt.c * wt.c), this.scale.y * Math.sqrt(wt.b * wt.b + wt.d * wt.d)); - this.worldRotation = Math.atan2(-wt.c, wt.d); - - // reset the bounds each time this is called! - this._currentBounds = null; - - // Custom callback? - if (this.transformCallback) - { - this.transformCallback.call(this.transformCallbackContext, wt, pt); } }; -// performance increase to avoid using call.. (10x faster) +// Alias for updateTransform. As used in DisplayObject container, etc. PIXI.DisplayObject.prototype.displayObjectUpdateTransform = PIXI.DisplayObject.prototype.updateTransform; -/** - * Retrieves the bounds of the displayObject as a rectangle object - * - * @method getBounds - * @param matrix {Matrix} - * @return {Rectangle} the rectangular bounding area - */ -PIXI.DisplayObject.prototype.getBounds = function(matrix) -{ - matrix = matrix;//just to get passed js hinting (and preserve inheritance) - return PIXI.EmptyRectangle; -}; +Object.defineProperties(PIXI.DisplayObject.prototype, { -/** - * Retrieves the local bounds of the displayObject as a rectangle object - * - * @method getLocalBounds - * @return {Rectangle} the rectangular bounding area - */ -PIXI.DisplayObject.prototype.getLocalBounds = function() -{ - return this.getBounds(PIXI.identityMatrix);///PIXI.EmptyRectangle(); -}; + /** + * The horizontal position of the DisplayObject, in pixels, relative to its parent. + * If you need the world position of the DisplayObject, use `DisplayObject.worldPosition` instead. + * @name PIXI.DisplayObject#x + * @property {number} x - The horizontal position of the DisplayObject, in pixels, relative to its parent. + */ + 'x': { -/** - * Sets the object's stage reference, the stage this object is connected to - * - * @method setStageReference - * @param stage {Stage} the stage that the object will have as its current stage reference - */ -PIXI.DisplayObject.prototype.setStageReference = function(stage) -{ - this.stage = stage; -}; + get: function () { -/** - * Empty, to be overridden by classes that require it. - * - * @method preUpdate - */ -PIXI.DisplayObject.prototype.preUpdate = function() -{ -}; + return this.position.x; -/** - * Useful function that returns a texture of the displayObject object that can then be used to create sprites - * This can be quite useful if your displayObject is static / complicated and needs to be reused multiple times. - * - * @method generateTexture - * @param resolution {Number} The resolution of the texture being generated - * @param scaleMode {Number} See {{#crossLink "PIXI/scaleModes:property"}}PIXI.scaleModes{{/crossLink}} for possible values - * @param renderer {CanvasRenderer|WebGLRenderer} The renderer used to generate the texture. - * @return {RenderTexture} a texture of the graphics object - */ -PIXI.DisplayObject.prototype.generateTexture = function(resolution, scaleMode, renderer) -{ - var bounds = this.getLocalBounds(); + }, - var renderTexture = new PIXI.RenderTexture(bounds.width | 0, bounds.height | 0, renderer, scaleMode, resolution); - - PIXI.DisplayObject._tempMatrix.tx = -bounds.x; - PIXI.DisplayObject._tempMatrix.ty = -bounds.y; - - renderTexture.render(this, PIXI.DisplayObject._tempMatrix); + set: function (value) { - return renderTexture; -}; + this.position.x = value; -/** - * Generates and updates the cached sprite for this object. - * - * @method updateCache - */ -PIXI.DisplayObject.prototype.updateCache = function() -{ - this._generateCachedSprite(); -}; + } -/** - * Calculates the global position of the display object - * - * @method toGlobal - * @param position {Point} The world origin to calculate from - * @return {Point} A point object representing the position of this object - */ -PIXI.DisplayObject.prototype.toGlobal = function(position) -{ - // don't need to u[date the lot - this.displayObjectUpdateTransform(); - return this.worldTransform.apply(position); -}; - -/** - * Calculates the local position of the display object relative to another point - * - * @method toLocal - * @param position {Point} The world origin to calculate from - * @param [from] {DisplayObject} The DisplayObject to calculate the global position from - * @return {Point} A point object representing the position of this object - */ -PIXI.DisplayObject.prototype.toLocal = function(position, from) -{ - if (from) - { - position = from.toGlobal(position); - } - - // don't need to u[date the lot - this.displayObjectUpdateTransform(); - - return this.worldTransform.applyInverse(position); -}; - -/** - * Internal method. - * - * @method _renderCachedSprite - * @param renderSession {Object} The render session - * @private - */ -PIXI.DisplayObject.prototype._renderCachedSprite = function(renderSession) -{ - this._cachedSprite.worldAlpha = this.worldAlpha; - - if (renderSession.gl) - { - PIXI.Sprite.prototype._renderWebGL.call(this._cachedSprite, renderSession); - } - else - { - PIXI.Sprite.prototype._renderCanvas.call(this._cachedSprite, renderSession); - } -}; - -/** - * Internal method. - * - * @method _generateCachedSprite - * @private - */ -PIXI.DisplayObject.prototype._generateCachedSprite = function() -{ - this._cacheAsBitmap = false; - - var bounds = this.getLocalBounds(); - - // Round it off and force non-zero dimensions - bounds.width = Math.max(1, Math.ceil(bounds.width)); - bounds.height = Math.max(1, Math.ceil(bounds.height)); - - this.updateTransform(); - - if (!this._cachedSprite) - { - var renderTexture = new PIXI.RenderTexture(bounds.width, bounds.height); - this._cachedSprite = new PIXI.Sprite(renderTexture); - this._cachedSprite.worldTransform = this.worldTransform; - } - else - { - this._cachedSprite.texture.resize(bounds.width, bounds.height); - } - - // Remove filters - var tempFilters = this._filters; - this._filters = null; - this._cachedSprite.filters = tempFilters; - - // PIXI.DisplayObject._tempMatrix.identity(); - PIXI.DisplayObject._tempMatrix.tx = -bounds.x; - PIXI.DisplayObject._tempMatrix.ty = -bounds.y; - - this._cachedSprite.texture.render(this, PIXI.DisplayObject._tempMatrix, true); - this._cachedSprite.anchor.x = -(bounds.x / bounds.width); - this._cachedSprite.anchor.y = -(bounds.y / bounds.height); - - this._filters = tempFilters; - - this._cacheAsBitmap = true; -}; - -/** -* Destroys the cached sprite. -* -* @method _destroyCachedSprite -* @private -*/ -PIXI.DisplayObject.prototype._destroyCachedSprite = function() -{ - if (!this._cachedSprite) return; - - this._cachedSprite.texture.destroy(true); - - // TODO could be object pooled! - this._cachedSprite = null; -}; - -/** -* Renders the object using the WebGL renderer -* -* @method _renderWebGL -* @param renderSession {RenderSession} -* @private -*/ -PIXI.DisplayObject.prototype._renderWebGL = function(renderSession) -{ - // OVERWRITE; - // this line is just here to pass jshinting :) - renderSession = renderSession; -}; - -/** -* Renders the object using the Canvas renderer -* -* @method _renderCanvas -* @param renderSession {RenderSession} -* @private -*/ -PIXI.DisplayObject.prototype._renderCanvas = function(renderSession) -{ - // OVERWRITE; - // this line is just here to pass jshinting :) - renderSession = renderSession; -}; - -/** - * The position of the displayObject on the x axis relative to the local coordinates of the parent. - * - * @property x - * @type Number - */ -Object.defineProperty(PIXI.DisplayObject.prototype, 'x', { - - get: function() { - return this.position.x; }, - set: function(value) { - this.position.x = value; - } + /** + * The vertical position of the DisplayObject, in pixels, relative to its parent. + * If you need the world position of the DisplayObject, use `DisplayObject.worldPosition` instead. + * @name PIXI.DisplayObject#y + * @property {number} y - The vertical position of the DisplayObject, in pixels, relative to its parent. + */ + 'y': { -}); + get: function () { -/** - * The position of the displayObject on the y axis relative to the local coordinates of the parent. - * - * @property y - * @type Number - */ -Object.defineProperty(PIXI.DisplayObject.prototype, 'y', { + return this.position.y; + + }, + + set: function (value) { + + this.position.y = value; + + } - get: function() { - return this.position.y; }, - set: function(value) { - this.position.y = value; + /** + * Indicates if this DisplayObject is visible, based on it, and all of its parents, `visible` property values. + * @name PIXI.DisplayObject#worldVisible + * @property {boolean} worldVisible - Indicates if this DisplayObject is visible, based on it, and all of its parents, `visible` property values. + */ + 'worldVisible': { + + get: function () { + + if (!this.visible) + { + return false; + } + else + { + var item = this.parent; + + do + { + if (!item.visible) + { + return false; + } + + item = item.parent; + } + while (item); + + return true; + } + + } + + }, + + /** + * Sets a mask for this DisplayObject. A mask is an instance of a Graphics object. + * When applied it limits the visible area of this DisplayObject to the shape of the mask. + * Under a Canvas renderer it uses shape clipping. Under a WebGL renderer it uses a Stencil Buffer. + * To remove a mask, set this property to `null`. + * + * @name PIXI.DisplayObject#mask + * @property {PIXI.Graphics} mask - The mask applied to this DisplayObject. Set to `null` to remove an existing mask. + */ + 'mask': { + + get: function () { + + return this._mask; + + }, + + set: function (value) { + + if (this._mask) + { + this._mask.isMask = false; + } + + this._mask = value; + + if (value) + { + this._mask.isMask = true; + } + + } + + }, + + /** + * Sets the filters for this DisplayObject. This is a WebGL only feature, and is ignored by the Canvas + * Renderer. A filter is a shader applied to this DisplayObject. You can modify the placement of the filter + * using `DisplayObject.filterArea`. + * + * To remove filters, set this property to `null`. + * + * Note: You cannot have a filter set, and a MULTIPLY Blend Mode active, at the same time. Setting a + * filter will reset this DisplayObjects blend mode to NORMAL. + * + * @name PIXI.DisplayObject#filters + * @property {Array} filters - An Array of PIXI.AbstractFilter objects, or objects that extend them. + */ + 'filters': { + + get: function () { + + return this._filters; + + }, + + set: function (value) { + + if (Array.isArray(value)) + { + // Put all the passes in one place. + var passes = []; + + for (var i = 0; i < value.length; i++) + { + var filterPasses = value[i].passes; + + for (var j = 0; j < filterPasses.length; j++) + { + passes.push(filterPasses[j]); + } + } + + // Needed any more? + this._filterBlock = { target: this, filterPasses: passes }; + } + + this._filters = value; + + if (this.blendMode && this.blendMode === PIXI.blendModes.MULTIPLY) + { + this.blendMode = PIXI.blendModes.NORMAL; + } + + } + + }, + + /** + * Sets if this DisplayObject should be cached as a bitmap. + * + * When invoked it will take a snapshot of the DisplayObject, as it is at that moment, and store it + * in a RenderTexture. This is then used whenever this DisplayObject is rendered. It can provide a + * performance benefit for complex, but static, DisplayObjects. I.e. those with lots of children. + * + * Cached Bitmaps do not track their parents. If you update a property of this DisplayObject, it will not + * re-generate the cached bitmap automatically. To do that you need to call `DisplayObject.updateCache`. + * + * To remove a cached bitmap, set this property to `null`. + * + * @name PIXI.DisplayObject#cacheAsBitmap + * @property {boolean} cacheAsBitmap - Cache this DisplayObject as a Bitmap. Set to `null` to remove an existing cached bitmap. + */ + 'cacheAsBitmap': { + + get: function () { + + return this._cacheAsBitmap; + + }, + + set: function (value) { + + if (this._cacheAsBitmap === value) + { + return; + } + + if (value) + { + this._generateCachedSprite(); + } + else + { + this._destroyCachedSprite(); + } + + this._cacheAsBitmap = value; + + } + } }); @@ -1241,6 +1309,8 @@ PIXI.DisplayObjectContainer.prototype.getBounds = function() return PIXI.EmptyRectangle; } + this.updateTransform(); + var minX = Infinity; var minY = Infinity; @@ -1937,44 +2007,6 @@ PIXI.Sprite.prototype._renderCanvas = function(renderSession, matrix) }; -// some helper functions.. - -/** - * - * Helper function that creates a sprite that will contain a texture from the TextureCache based on the frameId - * The frame ids are created when a Texture packer file has been loaded - * - * @method fromFrame - * @static - * @param frameId {String} The frame Id of the texture in the cache - * @return {Sprite} A new Sprite using a texture from the texture cache matching the frameId - */ -PIXI.Sprite.fromFrame = function(frameId) -{ - var texture = PIXI.TextureCache[frameId]; - - if (!texture) throw new Error('The frameId "' + frameId + '" does not exist in the texture cache' + this); - - return new PIXI.Sprite(texture); -}; - -/** - * - * Helper function that creates a sprite that will contain a texture based on an image url - * If the image is not in the texture cache it will be loaded - * - * @method fromImage - * @static - * @param imageId {String} The image url of the texture - * @return {Sprite} A new Sprite using a texture from the texture cache matching the image id - */ -PIXI.Sprite.fromImage = function(imageId, crossorigin, scaleMode) -{ - var texture = PIXI.Texture.fromImage(imageId, crossorigin, scaleMode); - - return new PIXI.Sprite(texture); -}; - /** * @author Mat Groves http://matgroves.com/ */ @@ -2321,7 +2353,7 @@ PIXI.CanvasPool = { for (var i = 0; i < pool.length; i++) { - if (pool[i].parent === null) + if (!pool[i].parent) { return i; } @@ -2347,6 +2379,8 @@ PIXI.CanvasPool = { if (pool[i].parent === parent) { pool[i].parent = null; + pool[i].canvas.width = 1; + pool[i].canvas.height = 1; } } @@ -2368,6 +2402,8 @@ PIXI.CanvasPool = { if (pool[i].canvas === canvas) { pool[i].parent = null; + pool[i].canvas.width = 1; + pool[i].canvas.height = 1; } } @@ -2387,7 +2423,7 @@ PIXI.CanvasPool = { for (var i = 0; i < pool.length; i++) { - if (pool[i].parent !== null) + if (pool[i].parent) { c++; } @@ -2411,7 +2447,7 @@ PIXI.CanvasPool = { for (var i = 0; i < pool.length; i++) { - if (pool[i].parent === null) + if (!pool[i].parent) { c++; } @@ -6815,17 +6851,13 @@ PIXI.CanvasRenderer.prototype.mapBlendModes = function () { * @author Mat Groves http://matgroves.com/ @Doormat23 */ -PIXI.BaseTextureCache = {}; - -PIXI.BaseTextureCacheIdGenerator = 0; - /** * A texture stores the information that represents an image. All textures have a base texture. * * @class BaseTexture * @uses EventTarget * @constructor - * @param source {String} the source object (image or canvas) + * @param source {String|Canvas} the source object (image or canvas) * @param scaleMode {Number} See {{#crossLink "PIXI/scaleModes:property"}}PIXI.scaleModes{{/crossLink}} for possible values */ PIXI.BaseTexture = function(source, scaleMode) @@ -6882,8 +6914,6 @@ PIXI.BaseTexture = function(source, scaleMode) */ this.source = source; - this._UID = PIXI._UID++; - /** * Controls if RGB channels should be pre-multiplied by Alpha (WebGL only) * @@ -6942,12 +6972,6 @@ PIXI.BaseTexture = function(source, scaleMode) */ this.skipRender = false; - /** - * @property imageUrl - * @type String - */ - this.imageUrl = null; - /** * @property _powerOf2 * @type Boolean @@ -6974,7 +6998,6 @@ PIXI.BaseTexture.prototype.forceLoaded = function(width, height) this.width = width; this.height = height; this.dirty(); - }; /** @@ -6984,23 +7007,9 @@ PIXI.BaseTexture.prototype.forceLoaded = function(width, height) */ PIXI.BaseTexture.prototype.destroy = function() { - if (this.imageUrl) - { - delete PIXI.BaseTextureCache[this.imageUrl]; - delete PIXI.TextureCache[this.imageUrl]; - - this.imageUrl = null; - - if (!navigator.isCocoonJS) this.source.src = ''; - } - else if (this.source) + if (this.source) { PIXI.CanvasPool.removeByCanvas(this.source); - - if (this.source._pixiId) - { - delete PIXI.BaseTextureCache[this.source._pixiId]; - } } this.source = null; @@ -7013,12 +7022,11 @@ PIXI.BaseTexture.prototype.destroy = function() * * @method updateSourceImage * @param newSrc {String} the path of the image + * @deprecated This method is deprecated. Please use Phaser.Sprite.loadTexture instead. */ PIXI.BaseTexture.prototype.updateSourceImage = function(newSrc) { - this.hasLoaded = false; - this.source.src = null; - this.source.src = newSrc; + console.warn("PIXI.BaseTexture.updateSourceImage is deprecated. Use Phaser.Sprite.loadTexture instead."); }; /** @@ -7062,49 +7070,6 @@ PIXI.BaseTexture.prototype.unloadFromGPU = function() this.dirty(); }; -/** - * Helper function that creates a base texture from the given image url. - * If the image is not in the base texture cache it will be created and loaded. - * - * @static - * @method fromImage - * @param imageUrl {String} The image url of the texture - * @param crossorigin {Boolean} - * @param scaleMode {Number} See {{#crossLink "PIXI/scaleModes:property"}}PIXI.scaleModes{{/crossLink}} for possible values - * @return {BaseTexture} - */ -PIXI.BaseTexture.fromImage = function(imageUrl, crossorigin, scaleMode) -{ - var baseTexture = PIXI.BaseTextureCache[imageUrl]; - - if(crossorigin === undefined && imageUrl.indexOf('data:') === -1) crossorigin = true; - - if(!baseTexture) - { - // new Image() breaks tex loading in some versions of Chrome. - // See https://code.google.com/p/chromium/issues/detail?id=238071 - var image = new Image(); - - if (crossorigin) - { - image.crossOrigin = ''; - } - - image.src = imageUrl; - baseTexture = new PIXI.BaseTexture(image, scaleMode); - baseTexture.imageUrl = imageUrl; - PIXI.BaseTextureCache[imageUrl] = baseTexture; - - // if there is an @2x at the end of the url we are going to assume its a highres image - if( imageUrl.indexOf(PIXI.RETINA_PREFIX + '.') !== -1) - { - baseTexture.resolution = 2; - } - } - - return baseTexture; -}; - /** * Helper function that creates a base texture from the given canvas element. * @@ -7116,11 +7081,6 @@ PIXI.BaseTexture.fromImage = function(imageUrl, crossorigin, scaleMode) */ PIXI.BaseTexture.fromCanvas = function(canvas, scaleMode) { - if (!canvas._pixiId) - { - canvas._pixiId = 'canvas_' + PIXI.TextureCacheIdGenerator++; - } - if (canvas.width === 0) { canvas.width = 1; @@ -7131,24 +7091,13 @@ PIXI.BaseTexture.fromCanvas = function(canvas, scaleMode) canvas.height = 1; } - var baseTexture = PIXI.BaseTextureCache[canvas._pixiId]; - - if (!baseTexture) - { - baseTexture = new PIXI.BaseTexture(canvas, scaleMode); - PIXI.BaseTextureCache[canvas._pixiId] = baseTexture; - } - - return baseTexture; + return new PIXI.BaseTexture(canvas, scaleMode); }; /** * @author Mat Groves http://matgroves.com/ @Doormat23 */ -PIXI.TextureCache = {}; -PIXI.FrameCache = {}; - /** * TextureSilentFail is a boolean that defaults to `false`. * If `true` then `PIXI.Texture.setFrame` will no longer throw an error if the texture dimensions are incorrect. @@ -7158,8 +7107,6 @@ PIXI.FrameCache = {}; */ PIXI.TextureSilentFail = false; -PIXI.TextureCacheIdGenerator = 0; - /** * A texture stores the information that represents an image or part of an image. It cannot be added * to the display list directly. Instead use it as the texture for a PIXI.Sprite. If no frame is provided then the whole image is used. @@ -7395,46 +7342,6 @@ PIXI.Texture.prototype._updateUvs = function() this._uvs.y3 = (frame.y + frame.height) / th; }; -/** - * Helper function that creates a Texture object from the given image url. - * If the image is not in the texture cache it will be created and loaded. - * - * @static - * @method fromImage - * @param imageUrl {String} The image url of the texture - * @param crossorigin {Boolean} Whether requests should be treated as crossorigin - * @param scaleMode {Number} See {{#crossLink "PIXI/scaleModes:property"}}PIXI.scaleModes{{/crossLink}} for possible values - * @return {Texture} - */ -PIXI.Texture.fromImage = function(imageUrl, crossorigin, scaleMode) -{ - var texture = PIXI.TextureCache[imageUrl]; - - if(!texture) - { - texture = new PIXI.Texture(PIXI.BaseTexture.fromImage(imageUrl, crossorigin, scaleMode)); - PIXI.TextureCache[imageUrl] = texture; - } - - return texture; -}; - -/** - * Helper function that returns a Texture objected based on the given frame id. - * If the frame id is not in the texture cache an error will be thrown. - * - * @static - * @method fromFrame - * @param frameId {String} The frame id of the texture - * @return {Texture} - */ -PIXI.Texture.fromFrame = function(frameId) -{ - var texture = PIXI.TextureCache[frameId]; - if(!texture) throw new Error('The frameId "' + frameId + '" does not exist in the texture cache '); - return texture; -}; - /** * Helper function that creates a new a Texture based on the given canvas element. * @@ -7451,35 +7358,6 @@ PIXI.Texture.fromCanvas = function(canvas, scaleMode) return new PIXI.Texture(baseTexture); }; -/** - * Adds a texture to the global PIXI.TextureCache. This cache is shared across the whole PIXI object. - * - * @static - * @method addTextureToCache - * @param texture {Texture} The Texture to add to the cache. - * @param id {String} The id that the texture will be stored against. - */ -PIXI.Texture.addTextureToCache = function(texture, id) -{ - PIXI.TextureCache[id] = texture; -}; - -/** - * Remove a texture from the global PIXI.TextureCache. - * - * @static - * @method removeTextureFromCache - * @param id {String} The id of the texture to be removed - * @return {Texture} The texture that was removed - */ -PIXI.Texture.removeTextureFromCache = function(id) -{ - var texture = PIXI.TextureCache[id]; - delete PIXI.TextureCache[id]; - delete PIXI.BaseTextureCache[id]; - return texture; -}; - PIXI.TextureUvs = function() { this.x0 = 0; @@ -9165,7 +9043,7 @@ var Phaser = Phaser || { * @constant * @type {string} */ - VERSION: '2.5.0', + VERSION: '2.6.0', /** * An array of Phaser game instances. @@ -9856,6 +9734,20 @@ if (!window.console) */ Phaser.Utils = { + /** + * Takes the given string and reverses it, returning the reversed string. + * For example if given the string `Atari 520ST` it would return `TS025 iratA`. + * + * @method Phaser.Utils.reverseString + * @param {string} string - The string to be reversed. + * @return {string} The reversed string. + */ + reverseString: function (string) { + + return string.split('').reverse().join(''); + + }, + /** * Gets an objects property by string. * @@ -9991,14 +9883,31 @@ Phaser.Utils = { }, /** - * JavaScript string pad http://www.webtoolkit.info/. + * Takes the given string and pads it out, to the length required, using the character + * specified. For example if you need a string to be 6 characters long, you can call: + * + * `pad('bob', 6, '-', 2)` + * + * This would return: `bob---` as it has padded it out to 6 characters, using the `-` on the right. + * + * You can also use it to pad numbers (they are always returned as strings): + * + * `pad(512, 6, '0', 1)` + * + * Would return: `000512` with the string padded to the left. + * + * If you don't specify a direction it'll pad to both sides: + * + * `pad('c64', 7, '*')` + * + * Would return: `**c64**` * * @method Phaser.Utils.pad - * @param {string} str - The target string. + * @param {string} str - The target string. `toString()` will be called on the string, which means you can also pass in common data types like numbers. * @param {integer} [len=0] - The number of characters to be added. * @param {string} [pad=" "] - The string to pad it out with (defaults to a space). - * @param {integer} [dir=3] The direction dir = 1 (left), 2 (right), 3 (both). - * @return {string} The padded string + * @param {integer} [dir=3] - The direction dir = 1 (left), 2 (right), 3 (both). + * @return {string} The padded string. */ pad: function (str, len, pad, dir) { @@ -10006,6 +9915,8 @@ Phaser.Utils = { if (pad === undefined) { var pad = ' '; } if (dir === undefined) { var dir = 3; } + str = str.toString(); + var padlen = 0; if (len + 1 >= str.length) @@ -13231,6 +13142,11 @@ Phaser.Polygon = function () { */ this.closed = true; + /** + * @property {boolean} flattened - Has this Polygon been flattened by a call to `Polygon.flatten` ? + */ + this.flattened = false; + /** * @property {number} type - The base object type. */ @@ -13271,7 +13187,9 @@ Phaser.Polygon.prototype = { }, /** - * Flattens this Polygon so the points are a sequence of numbers. Any Point objects found are removed and replaced with two numbers. + * Flattens this Polygon so the points are a sequence of numbers. + * Any Point objects found are removed and replaced with two numbers. + * Also sets the Polygon.flattened property to `true`. * * @method Phaser.Polygon#flatten * @return {Phaser.Polygon} This Polygon object @@ -13280,6 +13198,8 @@ Phaser.Polygon.prototype = { this._points = this.toNumberArray(); + this.flattened = true; + return this; }, @@ -13321,20 +13241,39 @@ Phaser.Polygon.prototype = { // Adapted from http://www.ecse.rpi.edu/Homepages/wrf/Research/Short_Notes/pnpoly.html by Jonas Raoni Soares Silva - var length = this._points.length; var inside = false; - for (var i = -1, j = length - 1; ++i < length; j = i) + if (this.flattened) { - var ix = this._points[i].x; - var iy = this._points[i].y; - - var jx = this._points[j].x; - var jy = this._points[j].y; - - if (((iy <= y && y < jy) || (jy <= y && y < iy)) && (x < (jx - ix) * (y - iy) / (jy - iy) + ix)) + for (var i = -2, j = this._points.length - 2; (i += 2) < this._points.length; j = i) { - inside = !inside; + var ix = this._points[i]; + var iy = this._points[i + 1]; + + var jx = this._points[j]; + var jy = this._points[j + 1]; + + if (((iy <= y && y < jy) || (jy <= y && y < iy)) && (x < (jx - ix) * (y - iy) / (jy - iy) + ix)) + { + inside = !inside; + } + } + + } + else + { + for (var i = -1, j = this._points.length - 1; ++i < this._points.length; j = i) + { + var ix = this._points[i].x; + var iy = this._points[i].y; + + var jx = this._points[j].x; + var jy = this._points[j].y; + + if (((iy <= y && y < jy) || (jy <= y && y < iy)) && (x < (jx - ix) * (y - iy) / (jy - iy) + ix)) + { + inside = !inside; + } } } @@ -19182,6 +19121,8 @@ Phaser.Group.prototype.align = function (rows, columns, cellWidth, cellHeight, p else { // We keep laying them out until we hit the column limit + r.x += cellWidth; + if (r.x === w) { r.x = 0; @@ -20612,17 +20553,24 @@ Phaser.Group.prototype.getBottom = function () { }; /** -* Get the closest child to given Object. +* Get the closest child to given Object, with optional callback to filter children. * * This can be a Sprite, Group, Image or any object with public x and y properties. * * 'close' is determined by the distance from the objects `x` and `y` properties compared to the childs `x` and `y` properties. * +* You can use the optional `callback` argument to apply your own filter to the distance checks. +* If the child is closer then the previous child, it will be sent to `callback` as the first argument, +* with the distance as the second. The callback should return `true` if it passes your +* filtering criteria, otherwise it should return `false`. +* * @method Phaser.Group#getClosestTo * @param {any} object - The object used to determine the distance. This can be a Sprite, Group, Image or any object with public x and y properties. -* @return {any} The child closest to given object, or null if no child was found. +* @param {function} [callback] - The function that each child will be evaluated against. Each child of the group will be passed to it as its first parameter, with the distance as the second. It should return `true` if the child passes the matching criteria. +* @param {object} [callbackContext] - The context in which the function should be called (usually 'this'). +* @return {any} The child closest to given object, or `null` if no child was found. */ -Phaser.Group.prototype.getClosestTo = function (object) { +Phaser.Group.prototype.getClosestTo = function (object, callback, callbackContext) { var distance = Number.MAX_VALUE; var tempDistance = 0; @@ -20636,7 +20584,7 @@ Phaser.Group.prototype.getClosestTo = function (object) { { tempDistance = Math.abs(Phaser.Point.distance(object, child)); - if (tempDistance < distance) + if (tempDistance < distance && (!callback || callback.call(callbackContext, child, tempDistance))) { distance = tempDistance; result = child; @@ -20649,17 +20597,24 @@ Phaser.Group.prototype.getClosestTo = function (object) { }; /** -* Get the child furthest away from the given Object. +* Get the child furthest away from the given Object, with optional callback to filter children. * * This can be a Sprite, Group, Image or any object with public x and y properties. * * 'furthest away' is determined by the distance from the objects `x` and `y` properties compared to the childs `x` and `y` properties. * +* You can use the optional `callback` argument to apply your own filter to the distance checks. +* If the child is closer then the previous child, it will be sent to `callback` as the first argument, +* with the distance as the second. The callback should return `true` if it passes your +* filtering criteria, otherwise it should return `false`. +* * @method Phaser.Group#getFurthestFrom * @param {any} object - The object used to determine the distance. This can be a Sprite, Group, Image or any object with public x and y properties. -* @return {any} The child furthest from the given object, or null if no child was found. +* @param {function} [callback] - The function that each child will be evaluated against. Each child of the group will be passed to it as its first parameter, with the distance as the second. It should return `true` if the child passes the matching criteria. +* @param {object} [callbackContext] - The context in which the function should be called (usually 'this'). +* @return {any} The child furthest from the given object, or `null` if no child was found. */ -Phaser.Group.prototype.getFurthestFrom = function (object) { +Phaser.Group.prototype.getFurthestFrom = function (object, callback, callbackContext) { var distance = 0; var tempDistance = 0; @@ -20673,7 +20628,7 @@ Phaser.Group.prototype.getFurthestFrom = function (object) { { tempDistance = Math.abs(Phaser.Point.distance(object, child)); - if (tempDistance > distance) + if (tempDistance > distance && (!callback || callback.call(callbackContext, child, tempDistance))) { distance = tempDistance; result = child; @@ -21005,6 +20960,289 @@ Object.defineProperty(Phaser.Group.prototype, "angle", { }); +/** +* The center x coordinate of this Group. +* +* It is derived by calling `getBounds`, calculating the Groups dimensions based on its +* visible children. +* +* Note that no ancestors are factored into the result, meaning that if this Group is +* nested within another Group, with heavy transforms on it, the result of this property +* is likely to be incorrect. It is safe to get and set this property if the Group is a +* top-level descendant of Phaser.World, or untransformed parents. +* +* @name Phaser.Group#centerX +* @property {number} centerX +*/ +Object.defineProperty(Phaser.Group.prototype, "centerX", { + + get: function () { + + return this.getBounds().centerX; + + }, + + set: function (value) { + + var r = this.getBounds(); + var offset = this.x - r.x; + + this.x = (value + offset) - r.halfWidth; + + } + +}); + +/** +* The center y coordinate of this Group. +* +* It is derived by calling `getBounds`, calculating the Groups dimensions based on its +* visible children. +* +* Note that no ancestors are factored into the result, meaning that if this Group is +* nested within another Group, with heavy transforms on it, the result of this property +* is likely to be incorrect. It is safe to get and set this property if the Group is a +* top-level descendant of Phaser.World, or untransformed parents. +* +* @name Phaser.Group#centerY +* @property {number} centerY +*/ +Object.defineProperty(Phaser.Group.prototype, "centerY", { + + get: function () { + + return this.getBounds().centerY; + + }, + + set: function (value) { + + var r = this.getBounds(); + var offset = this.y - r.y; + + this.y = (value + offset) - r.halfHeight; + + } + +}); + +/** +* The left coordinate of this Group. +* +* It is derived by calling `getBounds`, calculating the Groups dimensions based on its +* visible children. +* +* Note that no ancestors are factored into the result, meaning that if this Group is +* nested within another Group, with heavy transforms on it, the result of this property +* is likely to be incorrect. It is safe to get and set this property if the Group is a +* top-level descendant of Phaser.World, or untransformed parents. +* +* @name Phaser.Group#left +* @property {number} left +*/ +Object.defineProperty(Phaser.Group.prototype, "left", { + + get: function () { + + return this.getBounds().left; + + }, + + set: function (value) { + + var r = this.getBounds(); + var offset = this.x - r.x; + + this.x = value + offset; + + } + +}); + +/** +* The right coordinate of this Group. +* +* It is derived by calling `getBounds`, calculating the Groups dimensions based on its +* visible children. +* +* Note that no ancestors are factored into the result, meaning that if this Group is +* nested within another Group, with heavy transforms on it, the result of this property +* is likely to be incorrect. It is safe to get and set this property if the Group is a +* top-level descendant of Phaser.World, or untransformed parents. +* +* @name Phaser.Group#right +* @property {number} right +*/ +Object.defineProperty(Phaser.Group.prototype, "right", { + + get: function () { + + return this.getBounds().right; + + }, + + set: function (value) { + + var r = this.getBounds(); + var offset = this.x - r.x; + + this.x = (value + offset) - r.width; + + } + +}); + +/** +* The top coordinate of this Group. +* +* It is derived by calling `getBounds`, calculating the Groups dimensions based on its +* visible children. +* +* Note that no ancestors are factored into the result, meaning that if this Group is +* nested within another Group, with heavy transforms on it, the result of this property +* is likely to be incorrect. It is safe to get and set this property if the Group is a +* top-level descendant of Phaser.World, or untransformed parents. +* +* @name Phaser.Group#top +* @property {number} top +*/ +Object.defineProperty(Phaser.Group.prototype, "top", { + + get: function () { + + return this.getBounds().top; + + }, + + set: function (value) { + + var r = this.getBounds(); + var offset = this.y - r.y; + + this.y = (value + offset); + + } + +}); + +/** +* The bottom coordinate of this Group. +* +* It is derived by calling `getBounds`, calculating the Groups dimensions based on its +* visible children. +* +* Note that no ancestors are factored into the result, meaning that if this Group is +* nested within another Group, with heavy transforms on it, the result of this property +* is likely to be incorrect. It is safe to get and set this property if the Group is a +* top-level descendant of Phaser.World, or untransformed parents. +* +* @name Phaser.Group#bottom +* @property {number} bottom +*/ +Object.defineProperty(Phaser.Group.prototype, "bottom", { + + get: function () { + + return this.getBounds().bottom; + + }, + + set: function (value) { + + var r = this.getBounds(); + var offset = this.y - r.y; + + this.y = (value + offset) - r.height; + + } + +}); + +/** +* Aligns this Group within another Game Object, or Rectangle, known as the +* 'container', to one of 9 possible positions. +* +* The container must be a Game Object, or Phaser.Rectangle object. This can include properties +* such as `World.bounds` or `Camera.view`, for aligning Groups within the world +* and camera bounds. Or it can include other Sprites, Images, Text objects, BitmapText, +* TileSprites or Buttons. +* +* Please note that aligning a Group to another Game Object does **not** make it a child of +* the container. It simply modifies its position coordinates so it aligns with it. +* +* The position constants you can use are: +* +* `Phaser.TOP_LEFT`, `Phaser.TOP_CENTER`, `Phaser.TOP_RIGHT`, `Phaser.LEFT_CENTER`, +* `Phaser.CENTER`, `Phaser.RIGHT_CENTER`, `Phaser.BOTTOM_LEFT`, +* `Phaser.BOTTOM_CENTER` and `Phaser.BOTTOM_RIGHT`. +* +* Groups are placed in such a way that their _bounds_ align with the +* container, taking into consideration rotation and scale of its children. +* This allows you to neatly align Groups, irrespective of their position value. +* +* The optional `offsetX` and `offsetY` arguments allow you to apply extra spacing to the final +* aligned position of the Group. For example: +* +* `group.alignIn(background, Phaser.BOTTOM_RIGHT, -20, -20)` +* +* Would align the `group` to the bottom-right, but moved 20 pixels in from the corner. +* Think of the offsets as applying an adjustment to the containers bounds before the alignment takes place. +* So providing a negative offset will 'shrink' the container bounds by that amount, and providing a positive +* one expands it. +* +* @method Phaser.Group#alignIn +* @param {Phaser.Rectangle|Phaser.Sprite|Phaser.Image|Phaser.Text|Phaser.BitmapText|Phaser.Button|Phaser.Graphics|Phaser.TileSprite} container - The Game Object or Rectangle with which to align this Group to. Can also include properties such as `World.bounds` or `Camera.view`. +* @param {integer} [position] - The position constant. One of `Phaser.TOP_LEFT` (default), `Phaser.TOP_CENTER`, `Phaser.TOP_RIGHT`, `Phaser.LEFT_CENTER`, `Phaser.CENTER`, `Phaser.RIGHT_CENTER`, `Phaser.BOTTOM_LEFT`, `Phaser.BOTTOM_CENTER` or `Phaser.BOTTOM_RIGHT`. +* @param {integer} [offsetX=0] - A horizontal adjustment of the Containers bounds, applied to the aligned position of the Game Object. Use a negative value to shrink the bounds, positive to increase it. +* @param {integer} [offsetY=0] - A vertical adjustment of the Containers bounds, applied to the aligned position of the Game Object. Use a negative value to shrink the bounds, positive to increase it. +* @return {Phaser.Group} This Group. +*/ + +// This function is set at the bottom of src/gameobjects/components/Bounds.js + +/** +* Aligns this Group to the side of another Game Object, or Rectangle, known as the +* 'parent', in one of 11 possible positions. +* +* The parent must be a Game Object, or Phaser.Rectangle object. This can include properties +* such as `World.bounds` or `Camera.view`, for aligning Groups within the world +* and camera bounds. Or it can include other Sprites, Images, Text objects, BitmapText, +* TileSprites or Buttons. +* +* Please note that aligning a Group to another Game Object does **not** make it a child of +* the parent. It simply modifies its position coordinates so it aligns with it. +* +* The position constants you can use are: +* +* `Phaser.TOP_LEFT` (default), `Phaser.TOP_CENTER`, `Phaser.TOP_RIGHT`, `Phaser.LEFT_TOP`, +* `Phaser.LEFT_CENTER`, `Phaser.LEFT_BOTTOM`, `Phaser.RIGHT_TOP`, `Phaser.RIGHT_CENTER`, +* `Phaser.RIGHT_BOTTOM`, `Phaser.BOTTOM_LEFT`, `Phaser.BOTTOM_CENTER` +* and `Phaser.BOTTOM_RIGHT`. +* +* Groups are placed in such a way that their _bounds_ align with the +* parent, taking into consideration rotation and scale of the children. +* This allows you to neatly align Groups, irrespective of their position value. +* +* The optional `offsetX` and `offsetY` arguments allow you to apply extra spacing to the final +* aligned position of the Group. For example: +* +* `group.alignTo(background, Phaser.BOTTOM_RIGHT, -20, -20)` +* +* Would align the `group` to the bottom-right, but moved 20 pixels in from the corner. +* Think of the offsets as applying an adjustment to the parents bounds before the alignment takes place. +* So providing a negative offset will 'shrink' the parent bounds by that amount, and providing a positive +* one expands it. +* +* @method Phaser.Group#alignTo +* @param {Phaser.Rectangle|Phaser.Sprite|Phaser.Image|Phaser.Text|Phaser.BitmapText|Phaser.Button|Phaser.Graphics|Phaser.TileSprite} parent - The Game Object or Rectangle with which to align this Group to. Can also include properties such as `World.bounds` or `Camera.view`. +* @param {integer} [position] - The position constant. One of `Phaser.TOP_LEFT`, `Phaser.TOP_CENTER`, `Phaser.TOP_RIGHT`, `Phaser.LEFT_TOP`, `Phaser.LEFT_CENTER`, `Phaser.LEFT_BOTTOM`, `Phaser.RIGHT_TOP`, `Phaser.RIGHT_CENTER`, `Phaser.RIGHT_BOTTOM`, `Phaser.BOTTOM_LEFT`, `Phaser.BOTTOM_CENTER` or `Phaser.BOTTOM_RIGHT`. +* @param {integer} [offsetX=0] - A horizontal adjustment of the Containers bounds, applied to the aligned position of the Game Object. Use a negative value to shrink the bounds, positive to increase it. +* @param {integer} [offsetY=0] - A vertical adjustment of the Containers bounds, applied to the aligned position of the Game Object. Use a negative value to shrink the bounds, positive to increase it. +* @return {Phaser.Group} This Group. +*/ + +// This function is set at the bottom of src/gameobjects/components/Bounds.js + /** * A display object is any object that can be rendered in the Phaser/pixi.js scene graph. * @@ -27274,9 +27512,10 @@ Phaser.InputHandler.prototype = { /** * Starts the Input Handler running. This is called automatically when you enable input on a Sprite, or can be called directly if you need to set a specific priority. + * * @method Phaser.InputHandler#start - * @param {number} priority - Higher priority sprites take click priority over low-priority sprites when they are stacked on-top of each other. - * @param {boolean} useHandCursor - If true the Sprite will show the hand cursor on mouse-over (doesn't apply to mobile browsers) + * @param {number} [priority=0] - Higher priority sprites take click priority over low-priority sprites when they are stacked on-top of each other. + * @param {boolean} [useHandCursor=false] - If true the Sprite will show the hand cursor on mouse-over (doesn't apply to mobile browsers) * @return {Phaser.Sprite} The Sprite object to which the Input Handler is bound. */ start: function (priority, useHandCursor) { @@ -27897,7 +28136,7 @@ Phaser.InputHandler.prototype = { } else if (this.draggable && this._draggedPointerID === pointer.id) { - return this.updateDrag(pointer); + return this.updateDrag(pointer, false); } else if (this._pointerData[pointer.id].isOver) { @@ -28176,24 +28415,24 @@ Phaser.InputHandler.prototype = { }, /** - * Updates the Pointer drag on this Sprite. + * Called as a Pointer actively drags this Game Object. + * * @method Phaser.InputHandler#updateDrag - * @param {Phaser.Pointer} pointer + * @private + * @param {Phaser.Pointer} pointer - The Pointer causing the drag update. + * @param {boolean} fromStart - True if this is the first update, immediately after the drag has started. * @return {boolean} */ updateDrag: function (pointer, fromStart) { + if (fromStart === undefined) { fromStart = false; } + if (pointer.isUp) { this.stopDrag(pointer); return false; } - if (fromStart === undefined) - { - fromStart = false; - } - var px = this.globalToLocalX(pointer.x) + this._dragPoint.x + this.dragOffset.x; var py = this.globalToLocalY(pointer.y) + this._dragPoint.y + this.dragOffset.y; @@ -28644,7 +28883,6 @@ Phaser.InputHandler.prototype = { }, - /** * Bounds Rect check for the sprite drag * @@ -31709,6 +31947,11 @@ Phaser.Component.Bounds.prototype = { }; +// Phaser.Group extensions + +Phaser.Group.prototype.alignIn = Phaser.Component.Bounds.prototype.alignIn; +Phaser.Group.prototype.alignTo = Phaser.Component.Bounds.prototype.alignTo; + /** * @author Richard Davey * @copyright 2016 Photon Storm Ltd. @@ -32528,7 +32771,7 @@ Phaser.Component.Destroy.prototype = { */ /** -* The Events component is a collection of events fired by the parent game object. +* The Events component is a collection of events fired by the parent Game Object. * * Phaser uses what are known as 'Signals' for all event handling. All of the events in * this class are signals you can subscribe to, much in the same way you'd "listen" for @@ -32598,92 +32841,187 @@ Phaser.Events.prototype = { // The following properties are sentinels that will be replaced with getters /** - * @property {Phaser.Signal} onAddedToGroup - This signal is dispatched when the parent is added to a new Group. + * This signal is dispatched when this Game Object is added to a new Group. + * It is sent two arguments: + * {any} The Game Object that was added to the Group. + * {Phaser.Group} The Group it was added to. + * @property {Phaser.Signal} onAddedToGroup */ onAddedToGroup: null, /** - * @property {Phaser.Signal} onRemovedFromGroup - This signal is dispatched when the parent is removed from a Group. + * This signal is dispatched when the Game Object is removed from a Group. + * It is sent two arguments: + * {any} The Game Object that was removed from the Group. + * {Phaser.Group} The Group it was removed from. + * @property {Phaser.Signal} onRemovedFromGroup */ onRemovedFromGroup: null, /** - * @property {Phaser.Signal} onRemovedFromWorld - This signal is dispatched if this item or any of its parents are removed from the game world. + * This Signal is never used internally by Phaser and is now deprecated. + * @deprecated + * @property {Phaser.Signal} onRemovedFromWorld */ onRemovedFromWorld: null, /** - * @property {Phaser.Signal} onDestroy - This signal is dispatched when the parent is destroyed. + * This signal is dispatched when the Game Object is destroyed. + * This happens when `Sprite.destroy()` is called, or `Group.destroy()` with `destroyChildren` set to true. + * It is sent one argument: + * {any} The Game Object that was destroyed. + * @property {Phaser.Signal} onDestroy */ onDestroy: null, /** - * @property {Phaser.Signal} onKilled - This signal is dispatched when the parent is killed. + * This signal is dispatched when the Game Object is killed. + * This happens when `Sprite.kill()` is called. + * Please understand the difference between `kill` and `destroy` by looking at their respective methods. + * It is sent one argument: + * {any} The Game Object that was killed. + * @property {Phaser.Signal} onKilled */ onKilled: null, /** - * @property {Phaser.Signal} onRevived - This signal is dispatched when the parent is revived. + * This signal is dispatched when the Game Object is revived from a previously killed state. + * This happens when `Sprite.revive()` is called. + * It is sent one argument: + * {any} The Game Object that was revived. + * @property {Phaser.Signal} onRevived */ onRevived: null, /** - * @property {Phaser.Signal} onOutOfBounds - This signal is dispatched when the parent leaves the world bounds (only if Sprite.checkWorldBounds is true). + * This signal is dispatched when the Game Object leaves the Phaser.World bounds. + * This signal is only if `Sprite.checkWorldBounds` is set to `true`. + * It is sent one argument: + * {any} The Game Object that left the World bounds. + * @property {Phaser.Signal} onOutOfBounds */ onOutOfBounds: null, /** - * @property {Phaser.Signal} onEnterBounds - This signal is dispatched when the parent returns within the world bounds (only if Sprite.checkWorldBounds is true). + * This signal is dispatched when the Game Object returns within the Phaser.World bounds, having previously been outside of them. + * This signal is only if `Sprite.checkWorldBounds` is set to `true`. + * It is sent one argument: + * {any} The Game Object that entered the World bounds. + * @property {Phaser.Signal} onEnterBounds */ onEnterBounds: null, /** - * @property {Phaser.Signal} onInputOver - This signal is dispatched if the parent is inputEnabled and receives an over event from a Pointer. + * This signal is dispatched if the Game Object has `inputEnabled` set to `true`, + * and receives an over event from a Phaser.Pointer. + * It is sent two arguments: + * {any} The Game Object that received the event. + * {Phaser.Pointer} The Phaser.Pointer object that caused the event. + * @property {Phaser.Signal} onInputOver */ onInputOver: null, /** - * @property {Phaser.Signal} onInputOut - This signal is dispatched if the parent is inputEnabled and receives an out event from a Pointer. + * This signal is dispatched if the Game Object has `inputEnabled` set to `true`, + * and receives an out event from a Phaser.Pointer, which was previously over it. + * It is sent two arguments: + * {any} The Game Object that received the event. + * {Phaser.Pointer} The Phaser.Pointer object that caused the event. + * @property {Phaser.Signal} onInputOut */ onInputOut: null, /** - * @property {Phaser.Signal} onInputDown - This signal is dispatched if the parent is inputEnabled and receives a down event from a Pointer. + * This signal is dispatched if the Game Object has `inputEnabled` set to `true`, + * and receives a down event from a Phaser.Pointer. This effectively means the Pointer has been + * pressed down (but not yet released) on the Game Object. + * It is sent two arguments: + * {any} The Game Object that received the event. + * {Phaser.Pointer} The Phaser.Pointer object that caused the event. + * @property {Phaser.Signal} onInputDown */ onInputDown: null, /** - * @property {Phaser.Signal} onInputUp - This signal is dispatched if the parent is inputEnabled and receives an up event from a Pointer. + * This signal is dispatched if the Game Object has `inputEnabled` set to `true`, + * and receives an up event from a Phaser.Pointer. This effectively means the Pointer had been + * pressed down, and was then released on the Game Object. + * It is sent three arguments: + * {any} The Game Object that received the event. + * {Phaser.Pointer} The Phaser.Pointer object that caused the event. + * {boolean} isOver - Is the Pointer still over the Game Object? + * @property {Phaser.Signal} onInputUp */ onInputUp: null, /** - * @property {Phaser.Signal} onDragStart - This signal is dispatched if the parent is inputEnabled and receives a drag start event from a Pointer. + * This signal is dispatched if the Game Object has been `inputEnabled` and `enableDrag` has been set. + * It is sent when a Phaser.Pointer starts to drag the Game Object, taking into consideration the various + * drag limitations that may be set. + * It is sent four arguments: + * {any} The Game Object that received the event. + * {Phaser.Pointer} The Phaser.Pointer object that caused the event. + * {number} The x coordinate that the drag started from. + * {number} The y coordinate that the drag started from. + * @property {Phaser.Signal} onDragStart */ onDragStart: null, /** - * @property {Phaser.Signal} onDragUpdate - This signal is dispatched if the parent is inputEnabled and receives a drag update event from a Pointer. + * This signal is dispatched if the Game Object has been `inputEnabled` and `enableDrag` has been set. + * It is sent when a Phaser.Pointer is actively dragging the Game Object. + * Be warned: This is a high volume Signal. Be careful what you bind to it. + * It is sent six arguments: + * {any} The Game Object that received the event. + * {Phaser.Pointer} The Phaser.Pointer object that caused the event. + * {number} The new x coordinate of the Game Object. + * {number} The new y coordinate of the Game Object. + * {Phaser.Point} A Point object that contains the point the Game Object was snapped to, if `snapOnDrag` has been enabled. + * {boolean} The `fromStart` boolean, indicates if this is the first update immediately after the drag has started. + * @property {Phaser.Signal} onDragUpdate */ onDragUpdate: null, /** - * @property {Phaser.Signal} onDragStop - This signal is dispatched if the parent is inputEnabled and receives a drag stop event from a Pointer. + * This signal is dispatched if the Game Object has been `inputEnabled` and `enableDrag` has been set. + * It is sent when a Phaser.Pointer stops dragging the Game Object. + * It is sent two arguments: + * {any} The Game Object that received the event. + * {Phaser.Pointer} The Phaser.Pointer object that caused the event. + * @property {Phaser.Signal} onDragStop */ onDragStop: null, /** - * @property {Phaser.Signal} onAnimationStart - This signal is dispatched when the parent has an animation that is played. + * This signal is dispatched if the Game Object has the AnimationManager component, + * and an Animation has been played. + * You can also listen to `Animation.onStart` rather than via the Game Objects events. + * It is sent two arguments: + * {any} The Game Object that received the event. + * {Phaser.Animation} The Phaser.Animation that was started. + * @property {Phaser.Signal} onAnimationStart */ onAnimationStart: null, /** - * @property {Phaser.Signal} onAnimationComplete - This signal is dispatched when the parent has an animation that finishes playing. + * This signal is dispatched if the Game Object has the AnimationManager component, + * and an Animation has been stopped (via `animation.stop()` and the `dispatchComplete` argument has been set. + * You can also listen to `Animation.onComplete` rather than via the Game Objects events. + * It is sent two arguments: + * {any} The Game Object that received the event. + * {Phaser.Animation} The Phaser.Animation that was stopped. + * @property {Phaser.Signal} onAnimationComplete */ onAnimationComplete: null, /** - * @property {Phaser.Signal} onAnimationLoop - This signal is dispatched when the parent has an animation that loops playback. + * This signal is dispatched if the Game Object has the AnimationManager component, + * and an Animation has looped playback. + * You can also listen to `Animation.onLoop` rather than via the Game Objects events. + * It is sent two arguments: + * {any} The Game Object that received the event. + * {Phaser.Animation} The Phaser.Animation that looped. + * @property {Phaser.Signal} onAnimationLoop */ onAnimationLoop: null @@ -32989,6 +33327,10 @@ Phaser.Component.InputEnabled.prototype = { * Note that Input related events are dispatched from `this.events`, i.e.: `events.onInputDown`. * * If you set this property to false it will stop the Input Handler from processing any more input events. + * + * If you want to _temporarily_ disable input for a Game Object, then it's better to set + * `input.enabled = false`, as it won't reset any of the Input Handlers internal properties. + * You can then toggle this back on as needed. * * @property {boolean} inputEnabled */ @@ -35142,7 +35484,7 @@ Phaser.Sprite = function (game, x, y, key, frame) { */ this.physicsType = Phaser.SPRITE; - PIXI.Sprite.call(this, PIXI.TextureCache['__default']); + PIXI.Sprite.call(this, Phaser.Cache.DEFAULT); Phaser.Component.Core.init.call(this, game, x, y, key, frame); @@ -35244,7 +35586,7 @@ Phaser.Image = function (game, x, y, key, frame) { */ this.type = Phaser.IMAGE; - PIXI.Sprite.call(this, PIXI.TextureCache['__default']); + PIXI.Sprite.call(this, Phaser.Cache.DEFAULT); Phaser.Component.Core.init.call(this, game, x, y, key, frame); @@ -35949,11 +36291,13 @@ Phaser.SpriteBatch.prototype.constructor = Phaser.SpriteBatch; * @param {string} key - Internal Phaser reference key for the BitmapData. * @param {number} [width=256] - The width of the BitmapData in pixels. If undefined or zero it's set to a default value. * @param {number} [height=256] - The height of the BitmapData in pixels. If undefined or zero it's set to a default value. +* @param {boolean} [skipPool=false] - When this BitmapData generates its internal canvas to use for rendering, it will get the canvas from the CanvasPool if false, or create its own if true. */ -Phaser.BitmapData = function (game, key, width, height) { +Phaser.BitmapData = function (game, key, width, height, skipPool) { if (width === undefined || width === 0) { width = 256; } if (height === undefined || height === 0) { height = 256; } + if (skipPool === undefined) { skipPool = false; } /** * @property {Phaser.Game} game - A reference to the currently running game. @@ -35979,7 +36323,7 @@ Phaser.BitmapData = function (game, key, width, height) { * @property {HTMLCanvasElement} canvas - The canvas to which this BitmapData draws. * @default */ - this.canvas = PIXI.CanvasPool.create(this, width, height); + this.canvas = Phaser.Canvas.create(this, width, height, null, skipPool); /** * @property {CanvasRenderingContext2D} context - The 2d context of the canvas. @@ -37481,7 +37825,13 @@ Phaser.BitmapData.prototype = { /** * Draws the given Phaser.Sprite, Phaser.Image or Phaser.Text to this BitmapData at the coordinates specified. * You can use the optional width and height values to 'stretch' the sprite as it is drawn. This uses drawImage stretching, not scaling. - * When drawing it will take into account the Sprites rotation, scale and alpha values. + * + * The children will be drawn at their `x` and `y` world space coordinates. If this is outside the bounds of the BitmapData they won't be visible. + * When drawing it will take into account the rotation, scale, scaleMode, alpha and tint values. + * + * Note: You should ensure that at least 1 full update has taken place before calling this, + * otherwise the objects are likely to render incorrectly, if at all. + * You can trigger an update yourself by calling `stage.updateTransform()` before calling `draw`. * * @method Phaser.BitmapData#draw * @param {Phaser.Sprite|Phaser.Image|Phaser.Text|Phaser.RenderTexture} source - The Sprite, Image or Text object to draw onto this BitmapData. @@ -37512,7 +37862,7 @@ Phaser.BitmapData.prototype = { * * Note: You should ensure that at least 1 full update has taken place before calling this, * otherwise the objects are likely to render incorrectly, if at all. - * You can trigger an update yourself by calling `stage.updateTransform()` before calling `drawGroup`. + * You can trigger an update yourself by calling `stage.updateTransform()` before calling `drawGroup`. * * @method Phaser.BitmapData#drawGroup * @param {Phaser.Group} group - The Group to draw onto this BitmapData. Can also be Phaser.World. @@ -38566,6 +38916,7 @@ PIXI.Graphics.prototype.lineTo = function(x, y) this.currentPath.shape.points.push(x, y); this.dirty = true; + this.updateLocalBounds(); return this; }; @@ -38620,6 +38971,7 @@ PIXI.Graphics.prototype.quadraticCurveTo = function(cpX, cpY, toX, toY) } this.dirty = true; + this.updateLocalBounds(); return this; }; @@ -38678,6 +39030,7 @@ PIXI.Graphics.prototype.bezierCurveTo = function(cpX, cpY, cpX2, cpY2, toX, toY) } this.dirty = true; + this.updateLocalBounds(); return this; }; @@ -38747,6 +39100,7 @@ PIXI.Graphics.prototype.arcTo = function(x1, y1, x2, y2, radius) } this.dirty = true; + this.updateLocalBounds(); return this; }; @@ -38832,6 +39186,7 @@ PIXI.Graphics.prototype.arc = function(cx, cy, radius, startAngle, endAngle, ant } this.dirty = true; + this.updateLocalBounds(); return this; }; @@ -38993,6 +39348,8 @@ PIXI.Graphics.prototype.clear = function() this.clearDirty = true; this.graphicsData = []; + this.updateLocalBounds(); + return this; }; @@ -39027,8 +39384,6 @@ PIXI.Graphics.prototype.generateTexture = function(resolution, scaleMode, paddin canvasBuffer.context.translate(-bounds.x, -bounds.y); - // Call here - PIXI.CanvasGraphics.renderGraphics(this, canvasBuffer.context); return texture; @@ -39540,8 +39895,11 @@ PIXI.Graphics.prototype.drawShape = function(shape) } this.dirty = true; + + this.updateLocalBounds(); return data; + }; /** @@ -41727,7 +42085,29 @@ PIXI.CanvasGraphics.updateGraphicsTint = function(graphics) */ /** -* Creates a new `Graphics` object. +* A Graphics object is a way to draw primitives to your game. Primitives include forms of geometry, such as Rectangles, +* Circles and Polygons. They also include lines, arcs and curves. When you initially create a Graphics object it will +* be empty. To 'draw' to it you first specify a lineStyle or fillStyle (or both), and then draw a shape. For example: +* +* ``` +* graphics.beginFill(0xff0000); +* graphics.drawCircle(50, 50, 100); +* graphics.endFill(); +* ``` +* +* This will draw a circle shape to the Graphics object, with a diameter of 100, located at x: 50, y: 50. +* +* When a Graphics object is rendered it will render differently based on if the game is running under Canvas or +* WebGL. Under Canvas it will use the HTML Canvas context drawing operations to draw the path. Under WebGL the +* graphics data is decomposed into polygons. Both of these are expensive processes, especially with complex shapes. +* +* If your Graphics object doesn't change much (or at all) once you've drawn your shape to it, then you will help +* performance by calling `Graphics.generateTexture`. This will 'bake' the Graphics object into a Texture, and return it. +* You can then use this Texture for Sprites or other display objects. If your Graphics object updates frequently then +* you should avoid doing this, as it will constantly generate new textures, which will consume memory. +* +* As you can tell, Graphics objects are a bit of a trade-off. While they are extremely useful, you need to be careful +* in their complexity and quantity of them in your game. * * @class Phaser.Graphics * @constructor @@ -43342,18 +43722,34 @@ Phaser.Text.prototype.componentsToFont = function (components) { }; /** - * The text to be displayed by this Text object. - * Use a \n to insert a carriage return and split the text. - * The text will be rendered with any style currently set. - * - * @method Phaser.Text#setText - * @param {string} [text] - The text to be displayed. Set to an empty string to clear text that is already present. - * @return {Phaser.Text} This Text instance. - */ -Phaser.Text.prototype.setText = function (text) { +* The text to be displayed by this Text object. +* Use a \n to insert a carriage return and split the text. +* The text will be rendered with any style currently set. +* +* Use the optional `immediate` argument if you need the Text display to update immediately. +* +* If not it will re-create the texture of this Text object during the next time the render +* loop is called. +* +* @method Phaser.Text#setText +* @param {string} [text] - The text to be displayed. Set to an empty string to clear text that is already present. +* @param {boolean} [immediate=false] - Update the texture used by this Text object immediately (true) or automatically during the next render loop (false). +* @return {Phaser.Text} This Text instance. +*/ +Phaser.Text.prototype.setText = function (text, immediate) { + + if (immediate === undefined) { immediate = false; } this.text = text.toString() || ''; - this.dirty = true; + + if (immediate) + { + this.updateText(); + } + else + { + this.dirty = true; + } return this; @@ -44364,7 +44760,7 @@ Object.defineProperty(Phaser.Text.prototype, 'height', { Phaser.Text.fontPropertiesCache = {}; -Phaser.Text.fontPropertiesCanvas = PIXI.CanvasPool.create(Phaser.Text.fontPropertiesCanvas); +Phaser.Text.fontPropertiesCanvas = document.createElement('canvas'); Phaser.Text.fontPropertiesContext = Phaser.Text.fontPropertiesCanvas.getContext('2d'); /** @@ -45742,7 +46138,7 @@ Phaser.Rope = function (game, x, y, key, frame, points) { */ this.type = Phaser.ROPE; - PIXI.Rope.call(this, PIXI.TextureCache['__default'], this.points); + PIXI.Rope.call(this, Phaser.Cache.DEFAULT, this.points); Phaser.Component.Core.init.call(this, game, x, y, key, frame); @@ -47517,14 +47913,7 @@ Phaser.Canvas = { width = width || 256; height = height || 256; - if (skipPool === undefined) - { - var canvas = PIXI.CanvasPool.create(parent, width, height); - } - else - { - var canvas = document.createElement('canvas'); - } + var canvas = (skipPool) ? document.createElement('canvas') : PIXI.CanvasPool.create(parent, width, height); if (typeof id === 'string' && id !== '') { @@ -48117,7 +48506,9 @@ Phaser.Math = { * @return {number} n mod 1 */ shear: function (n) { + return n % 1; + }, /** @@ -48128,8 +48519,8 @@ Phaser.Math = { * @method Phaser.Math#snapTo * @param {number} input - The value to snap. * @param {number} gap - The interval gap of the grid. - * @param {number} [start] - Optional starting offset for gap. - * @return {number} + * @param {number} [start=0] - Optional starting offset for gap. + * @return {number} The snapped value. */ snapTo: function (input, gap, start) { @@ -48155,8 +48546,8 @@ Phaser.Math = { * @method Phaser.Math#snapToFloor * @param {number} input - The value to snap. * @param {number} gap - The interval gap of the grid. - * @param {number} [start] - Optional starting offset for gap. - * @return {number} + * @param {number} [start=0] - Optional starting offset for gap. + * @return {number} The snapped value. */ snapToFloor: function (input, gap, start) { @@ -48182,8 +48573,8 @@ Phaser.Math = { * @method Phaser.Math#snapToCeil * @param {number} input - The value to snap. * @param {number} gap - The interval gap of the grid. - * @param {number} [start] - Optional starting offset for gap. - * @return {number} + * @param {number} [start=0] - Optional starting offset for gap. + * @return {number} The snapped value. */ snapToCeil: function (input, gap, start) { @@ -48231,9 +48622,9 @@ Phaser.Math = { * * @method Phaser.Math#roundTo * @param {number} value - The value to round. - * @param {number} place - The place to round to. - * @param {number} base - The base to round in... default is 10 for decimal. - * @return {number} + * @param {number} [place=0] - The place to round to. + * @param {number} [base=10] - The base to round in. Default is 10 for decimal. + * @return {number} The rounded value. */ roundTo: function (value, place, base) { @@ -48247,11 +48638,14 @@ Phaser.Math = { }, /** + * Floors to some place comparative to a `base`, default is 10 for decimal place. + * The `place` is represented by the power applied to `base` to get that place. + * * @method Phaser.Math#floorTo * @param {number} value - The value to round. - * @param {number} place - The place to round to. - * @param {number} base - The base to round in... default is 10 for decimal. - * @return {number} + * @param {number} [place=0] - The place to round to. + * @param {number} [base=10] - The base to round in. Default is 10 for decimal. + * @return {number} The rounded value. */ floorTo: function (value, place, base) { @@ -48265,11 +48659,14 @@ Phaser.Math = { }, /** + * Ceils to some place comparative to a `base`, default is 10 for decimal place. + * The `place` is represented by the power applied to `base` to get that place. + * * @method Phaser.Math#ceilTo * @param {number} value - The value to round. - * @param {number} place - The place to round to. - * @param {number} base - The base to round in... default is 10 for decimal. - * @return {number} + * @param {number} [place=0] - The place to round to. + * @param {number} [base=10] - The base to round in. Default is 10 for decimal. + * @return {number} The rounded value. */ ceilTo: function (value, place, base) { @@ -48284,42 +48681,51 @@ Phaser.Math = { /** * Find the angle of a segment from (x1, y1) -> (x2, y2). + * * @method Phaser.Math#angleBetween - * @param {number} x1 - * @param {number} y1 - * @param {number} x2 - * @param {number} y2 + * @param {number} x1 - The x coordinate of the first value. + * @param {number} y1 - The y coordinate of the first value. + * @param {number} x2 - The x coordinate of the second value. + * @param {number} y2 - The y coordinate of the second value. * @return {number} The angle, in radians. */ angleBetween: function (x1, y1, x2, y2) { + return Math.atan2(y2 - y1, x2 - x1); + }, /** * Find the angle of a segment from (x1, y1) -> (x2, y2). - * Note that the difference between this method and Math.angleBetween is that this assumes the y coordinate travels + * + * The difference between this method and Math.angleBetween is that this assumes the y coordinate travels * down the screen. * * @method Phaser.Math#angleBetweenY - * @param {number} x1 - * @param {number} y1 - * @param {number} x2 - * @param {number} y2 + * @param {number} x1 - The x coordinate of the first value. + * @param {number} y1 - The y coordinate of the first value. + * @param {number} x2 - The x coordinate of the second value. + * @param {number} y2 - The y coordinate of the second value. * @return {number} The angle, in radians. */ angleBetweenY: function (x1, y1, x2, y2) { + return Math.atan2(x2 - x1, y2 - y1); + }, /** * Find the angle of a segment from (point1.x, point1.y) -> (point2.x, point2.y). + * * @method Phaser.Math#angleBetweenPoints - * @param {Phaser.Point} point1 - * @param {Phaser.Point} point2 - * @return {number} The angle, in radians. + * @param {Phaser.Point} point1 - The first point. + * @param {Phaser.Point} point2 - The second point. + * @return {number} The angle between the two points, in radians. */ angleBetweenPoints: function (point1, point2) { + return Math.atan2(point2.y - point1.y, point2.x - point1.x); + }, /** @@ -48330,24 +48736,28 @@ Phaser.Math = { * @return {number} The angle, in radians. */ angleBetweenPointsY: function (point1, point2) { + return Math.atan2(point2.x - point1.x, point2.y - point1.y); + }, /** * Reverses an angle. * @method Phaser.Math#reverseAngle * @param {number} angleRad - The angle to reverse, in radians. - * @return {number} Returns the reverse angle, in radians. + * @return {number} The reverse angle, in radians. */ reverseAngle: function (angleRad) { + return this.normalizeAngle(angleRad + Math.PI, true); + }, /** * Normalizes an angle to the [0,2pi) range. * @method Phaser.Math#normalizeAngle * @param {number} angleRad - The angle to normalize, in radians. - * @return {number} Returns the angle, fit within the [0,2pi] range, in radians. + * @return {number} The angle, fit within the [0,2pi] range, in radians. */ normalizeAngle: function (angleRad) { @@ -48363,10 +48773,12 @@ Phaser.Math = { * @param {number} value - The value to add the amount to. * @param {number} amount - The amount to add to the value. * @param {number} max - The maximum the value is allowed to be. - * @return {number} + * @return {number} The new value. */ maxAdd: function (value, amount, max) { + return Math.min(value + amount, max); + }, /** @@ -48379,7 +48791,9 @@ Phaser.Math = { * @return {number} The new value. */ minSub: function (value, amount, min) { + return Math.max(value - amount, min); + }, /** @@ -48444,8 +48858,10 @@ Phaser.Math = { * @return {boolean} True if the given number is odd. False if the given number is even. */ isOdd: function (n) { + // Does not work with extremely large values return !!(n & 1); + }, /** @@ -48456,8 +48872,10 @@ Phaser.Math = { * @return {boolean} True if the given number is even. False if the given number is odd. */ isEven: function (n) { + // Does not work with extremely large values return !(n & 1); + }, /** @@ -48694,11 +49112,13 @@ Phaser.Math = { * @method Phaser.Math#linear * @param {number} p0 * @param {number} p1 - * @param {number} t + * @param {number} t - A value between 0 and 1. * @return {number} */ linear: function (p0, p1, t) { + return (p1 - p0) * t + p0; + }, /** @@ -48709,7 +49129,9 @@ Phaser.Math = { * @return {number} */ bernstein: function (n, i) { + return this.factorial(n) / this.factorial(i) / this.factorial(n - i); + }, /** @@ -48717,7 +49139,7 @@ Phaser.Math = { * @param {number} value - the number you want to evaluate * @return {number} */ - factorial : function( value ){ + factorial: function (value) { if (value === 0) { @@ -48756,15 +49178,17 @@ Phaser.Math = { }, /** - * The (absolute) difference between two values. + * The absolute difference between two values. * * @method Phaser.Math#difference - * @param {number} a - * @param {number} b - * @return {number} + * @param {number} a - The first value to check. + * @param {number} b - The second value to check. + * @return {number} The absolute difference between the two values. */ difference: function (a, b) { + return Math.abs(a - b); + }, /** @@ -48915,7 +49339,9 @@ Phaser.Math = { * @return {number} */ clampBottom: function (x, a) { + return x < a ? a : x; + }, /** @@ -48929,22 +49355,26 @@ Phaser.Math = { * @see {@link Phaser.Math.fuzzyEqual} */ within: function (a, b, tolerance) { + return (Math.abs(a - b) <= tolerance); + }, /** * Linear mapping from range to range * * @method Phaser.Math#mapLinear - * @param {number} x the value to map - * @param {number} a1 first endpoint of the range - * @param {number} a2 final endpoint of the range - * @param {number} b1 first endpoint of the range - * @param {number} b2 final endpoint of the range + * @param {number} x - The value to map + * @param {number} a1 - First endpoint of the range + * @param {number} a2 - Final endpoint of the range + * @param {number} b1 - First endpoint of the range + * @param {number} b2 - Final endpoint of the range * @return {number} */ mapLinear: function (x, a1, a2, b1, b2) { + return b1 + ( x - a1 ) * ( b2 - b1 ) / ( a2 - a1 ); + }, /** @@ -48976,8 +49406,11 @@ Phaser.Math = { * @return {float} A value between 0 and 1. */ smootherstep: function (x, min, max) { + x = Math.max(0, Math.min(1, (x - min) / (max - min))); + return x * x * x * (x * (x * 6 - 15) + 10); + }, /** @@ -48990,7 +49423,9 @@ Phaser.Math = { * @return {integer} An integer in {-1, 0, 1} */ sign: function (x) { + return ( x < 0 ) ? -1 : ( ( x > 0 ) ? 1 : 0 ); + }, /** @@ -54227,7 +54662,7 @@ Phaser.AnimationManager.prototype = { refreshFrame: function () { // TODO - this.sprite.setTexture(PIXI.TextureCache[this.currentFrame.uuid]); + // this.sprite.setTexture(PIXI.TextureCache[this.currentFrame.uuid]); }, @@ -54702,7 +55137,7 @@ Phaser.Animation.prototype = { { for (var i = 0; i < this._frames.length; i++) { - if (this._frames[i] === frameIndex) + if (this._frames[i] === frameId) { frameIndex = i; } @@ -56324,6 +56759,20 @@ Phaser.Cache.SHADER = 14; */ Phaser.Cache.RENDER_TEXTURE = 15; +/** +* The default image used for a texture when no other is specified. +* @constant +* @type {PIXI.Texture} +*/ +Phaser.Cache.DEFAULT = null; + +/** +* The default image used for a texture when the source image is missing. +* @constant +* @type {PIXI.Texture} +*/ +Phaser.Cache.MISSING = null; + Phaser.Cache.prototype = { ////////////////// @@ -56378,6 +56827,15 @@ Phaser.Cache.prototype = { this._resolveURL(url, img); + if (key === '__default') + { + Phaser.Cache.DEFAULT = new PIXI.Texture(img.base); + } + else if (key === '__missing') + { + Phaser.Cache.MISSING = new PIXI.Texture(img.base); + } + return img; }, @@ -56402,7 +56860,8 @@ Phaser.Cache.prototype = { // Because we don't want to invalidate the sprite batch for an invisible texture obj.base.skipRender = true; - PIXI.TextureCache['__default'] = new PIXI.Texture(obj.base); + // Make it easily available within the rest of Phaser / Pixi + Phaser.Cache.DEFAULT = new PIXI.Texture(obj.base); }, @@ -56423,7 +56882,8 @@ Phaser.Cache.prototype = { var obj = this.addImage('__missing', null, img); - PIXI.TextureCache['__missing'] = new PIXI.Texture(obj.base); + // Make it easily available within the rest of Phaser / Pixi + Phaser.Cache.MISSING = new PIXI.Texture(obj.base); }, @@ -57673,71 +58133,6 @@ Phaser.Cache.prototype = { }, - /** - * Gets a PIXI.Texture by key from the PIXI.TextureCache. - * - * If the texture isn't found in the cache, then it searches the Phaser Image Cache and - * creates a new PIXI.Texture object which is then returned. - * - * @method Phaser.Cache#getPixiTexture - * @deprecated - * @param {string} key - Asset key of the Texture to retrieve from the Cache. - * @return {PIXI.Texture} The Texture object. - */ - getPixiTexture: function (key) { - - if (PIXI.TextureCache[key]) - { - return PIXI.TextureCache[key]; - } - else - { - var base = this.getPixiBaseTexture(key); - - if (base) - { - return new PIXI.Texture(base); - } - else - { - return null; - } - } - - }, - - /** - * Gets a PIXI.BaseTexture by key from the PIXI.BaseTextureCache. - * - * If the texture isn't found in the cache, then it searches the Phaser Image Cache. - * - * @method Phaser.Cache#getPixiBaseTexture - * @deprecated - * @param {string} key - Asset key of the BaseTexture to retrieve from the Cache. - * @return {PIXI.BaseTexture} The BaseTexture object or null if not found. - */ - getPixiBaseTexture: function (key) { - - if (PIXI.BaseTextureCache[key]) - { - return PIXI.BaseTextureCache[key]; - } - else - { - var img = this.getItem(key, Phaser.Cache.IMAGE, 'getPixiBaseTexture'); - - if (img !== null) - { - return img.base; - } - else - { - return null; - } - } - - }, - /** * Get a cached object by the URL. * This only returns a value if you set Cache.autoResolveURL to `true` *before* starting the preload of any assets. @@ -57815,20 +58210,20 @@ Phaser.Cache.prototype = { * * You can optionally elect to destroy it as well. This calls BaseTexture.destroy on it. * - * Note that this only removes it from the Phaser and PIXI Caches. If you still have references to the data elsewhere + * Note that this only removes it from the Phaser Cache. If you still have references to the data elsewhere * then it will persist in memory. * * @method Phaser.Cache#removeImage * @param {string} key - Key of the asset you want to remove. - * @param {boolean} [removeFromPixi=true] - Should this image also be destroyed? Removing it from the PIXI.BaseTextureCache? + * @param {boolean} [destroyBaseTexture=true] - Should the BaseTexture behind this image also be destroyed? */ - removeImage: function (key, removeFromPixi) { + removeImage: function (key, destroyBaseTexture) { - if (removeFromPixi === undefined) { removeFromPixi = true; } + if (destroyBaseTexture === undefined) { destroyBaseTexture = true; } var img = this.getImage(key, true); - if (removeFromPixi && img.base) + if (destroyBaseTexture && img.base) { img.base.destroy(); } @@ -58242,7 +58637,19 @@ Phaser.Loader = function (game) { this.path = ''; /** - * This event is dispatched when the loading process starts: before the first file has been requested, + * Used to map the application mime-types to to the Accept header in XHR requests. + * If you don't require these mappings, or they cause problems on your server, then + * remove them from the headers object and the XHR request will not try to use them. + * @property {object} headers + * @default + */ + this.headers = { + json: "application/json", + xml: "application/xml" + }; + + /** + * This event is dispatched when the loading process starts: before the first file has been requested, * but after all the initial packs have been loaded. * * @property {Phaser.Signal} onLoadStart @@ -60457,6 +60864,11 @@ Phaser.Loader.prototype = { xhr.open("GET", url, true); xhr.responseType = type; + if (this.headers[file.type]) + { + xhr.setRequestHeader("Accept", this.headers[file.type]); + } + onerror = onerror || this.fileError; var _this = this; @@ -61517,11 +61929,6 @@ Phaser.Sound = function (game, key, volume, loop, connect) { */ this.loop = loop; - /** - * @property {number} volume - The sound or sound marker volume. A value between 0 (silence) and 1 (full volume). - */ - this.volume = volume; - /** * @property {object} markers - The sound markers. */ @@ -62026,7 +62433,7 @@ Phaser.Sound.prototype = { { this._sound.disconnect(this.externalNode); } - else + else if (this.gainNode) { this._sound.disconnect(this.gainNode); } @@ -62364,7 +62771,7 @@ Phaser.Sound.prototype = { { this._sound.disconnect(this.externalNode); } - else + else if (this.gainNode) { this._sound.disconnect(this.gainNode); } @@ -65909,10 +66316,15 @@ Object.defineProperty(Phaser.ScaleManager.prototype, "isGameLandscape", { /** * A collection of methods for displaying debug information about game objects. +* +* If your game is running in Canvas mode, then you should invoke all of the Debug methods from +* your games `render` function. This is because they are drawn directly onto the game canvas +* itself, so if you call any debug methods outside of `render` they are likely to be overwritten +* by the game itself. +* * If your game is running in WebGL then Debug will create a Sprite that is placed at the top of the Stage display list and bind a canvas texture * to it, which must be uploaded every frame. Be advised: this is very expensive, especially in browsers like Firefox. So please only enable Debug * in WebGL mode if you really need it (or your desktop can cope with it well) and disable it for production! -* If your game is using a Canvas renderer then the debug information is literally drawn on the top of the active game canvas and no Sprite is used. * * @class Phaser.Utils.Debug * @constructor @@ -66007,7 +66419,7 @@ Phaser.Utils.Debug.prototype = { } else { - this.bmd = this.game.make.bitmapData(this.game.width, this.game.height); + this.bmd = new Phaser.BitmapData(this.game, '__DEBUG', this.game.width, this.game.height, true); this.sprite = this.game.make.image(0, 0, this.bmd); this.game.stage.addChild(this.sprite); @@ -67696,13 +68108,63 @@ Phaser.ArrayUtils = { }, + /** + * Moves the element from the end of the array to the start, shifting all items in the process. + * The "rotation" happens to the right. + * + * Before: `[ A, B, C, D, E, F ]` + * After: `[ F, A, B, C, D, E ]` + * + * See also Phaser.ArrayUtils.rotateLeft. + * + * @method Phaser.ArrayUtils.rotateRight + * @param {any[]} array - The array to rotate. The array is modified. + * @return {any} The shifted value. + */ + rotateRight: function (array) { + + var s = array.pop(); + array.unshift(s); + + return s; + + }, + /** * Moves the element from the start of the array to the end, shifting all items in the process. * The "rotation" happens to the left. * + * Before: `[ A, B, C, D, E, F ]` + * After: `[ B, C, D, E, F, A ]` + * + * See also Phaser.ArrayUtils.rotateRight + * + * @method Phaser.ArrayUtils.rotateLeft + * @param {any[]} array - The array to rotate. The array is modified. + * @return {any} The rotated value. + */ + rotateLeft: function (array) { + + var s = array.shift(); + array.push(s); + + return s; + + }, + + /** + * Moves the element from the start of the array to the end, shifting all items in the process. + * The "rotation" happens to the left. + * + * Before: `[ A, B, C, D, E, F ]` + * After: `[ B, C, D, E, F, A ]` + * + * See also Phaser.ArrayUtils.rotateRight + * * @method Phaser.ArrayUtils.rotate - * @param {any[]} array - The array to shift/rotate. The array is modified. - * @return {any} The shifted value. + * @deprecated Please use Phaser.ArrayUtils.rotate instead. + * @param {any[]} array - The array to rotate. The array is modified. + * @return {any} The rotated value. */ rotate: function (array) { @@ -68776,6 +69238,23 @@ Phaser.Color = { }, + /** + * Converts RGBA components to a 32 bit integer in AABBGGRR format. + * + * @method Phaser.Color.toABGR + * @static + * @param {number} r - The red color component, in the range 0 - 255. + * @param {number} g - The green color component, in the range 0 - 255. + * @param {number} b - The blue color component, in the range 0 - 255. + * @param {number} a - The alpha color component, in the range 0 - 255. + * @return {number} A RGBA-packed 32 bit integer + */ + toABGR: function (r, g, b, a) { + + return ((a << 24) | (b << 16) | (g << 8) | r) >>> 0; + + }, + /** * Converts an RGB color value to HSL (hue, saturation and lightness). * Conversion forumla from http://en.wikipedia.org/wiki/HSL_color_space. @@ -71111,67 +71590,70 @@ Phaser.Physics.Arcade.prototype = { return; } - var body; - if (this.skipQuadTree || sprite.body.skipQuadTree) { + var bounds; + for (var i = 0; i < group.hash.length; i++) { + var object1 = group.hash[i]; + // Skip duff entries - we can't check a non-existent sprite or one with no body - if (!group.hash[i] || !group.hash[i].exists || !group.hash[i].body) + if (!object1 || !object1.exists || !object1.body) { continue; } - body = group.hash[i].body; + // Inject the Body bounds data into the bounds object + bounds = object1.body.getBounds(bounds); // Skip items either side of the sprite if (this.sortDirection === Phaser.Physics.Arcade.LEFT_RIGHT) { - if (sprite.body.right < body.x) + if (sprite.body.right < bounds.x) { break; } - else if (body.right < sprite.body.x) + else if (bounds.right < sprite.body.x) { continue; } } else if (this.sortDirection === Phaser.Physics.Arcade.RIGHT_LEFT) { - if (sprite.body.x > body.right) + if (sprite.body.x > bounds.right) { break; } - else if (body.x > sprite.body.right) + else if (bounds.x > sprite.body.right) { continue; } } else if (this.sortDirection === Phaser.Physics.Arcade.TOP_BOTTOM) { - if (sprite.body.bottom < body.y) + if (sprite.body.bottom < bounds.y) { break; } - else if (body.bottom < sprite.body.y) + else if (bounds.bottom < sprite.body.y) { continue; } } else if (this.sortDirection === Phaser.Physics.Arcade.BOTTOM_TOP) { - if (sprite.body.y > body.bottom) + if (sprite.body.y > bounds.bottom) { break; } - else if (body.y > sprite.body.bottom) + else if (bounds.y > sprite.body.bottom) { continue; } } - this.collideSpriteVsSprite(sprite, group.hash[i], collideCallback, processCallback, callbackContext, overlapOnly); + this.collideSpriteVsSprite(sprite, object1, collideCallback, processCallback, callbackContext, overlapOnly); } } else @@ -71223,65 +71705,73 @@ Phaser.Physics.Arcade.prototype = { for (var i = 0; i < group.hash.length; i++) { + var bounds1; + var object1 = group.hash[i]; + // Skip duff entries - we can't check a non-existent sprite or one with no body - if (!group.hash[i] || !group.hash[i].exists || !group.hash[i].body) + if (!object1 || !object1.exists || !object1.body) { continue; } - var object1 = group.hash[i]; + // Inject the Body bounds data into the bounds1 object + bounds1 = object1.body.getBounds(bounds1); for (var j = i + 1; j < group.hash.length; j++) { + var bounds2; + var object2 = group.hash[j]; + // Skip duff entries - we can't check a non-existent sprite or one with no body - if (!group.hash[j] || !group.hash[j].exists || !group.hash[j].body) + if (!object2 || !object2.exists || !object2.body) { continue; } - var object2 = group.hash[j]; + // Inject the Body bounds data into the bounds2 object + bounds2 = object2.body.getBounds(bounds2); // Skip items either side of the sprite if (this.sortDirection === Phaser.Physics.Arcade.LEFT_RIGHT) { - if (object1.body.right < object2.body.x) + if (bounds1.right < bounds2.x) { break; } - else if (object2.body.right < object1.body.x) + else if (bounds2.right < bounds1.x) { continue; } } else if (this.sortDirection === Phaser.Physics.Arcade.RIGHT_LEFT) { - if (object1.body.x > object2.body.right) + if (bounds1.x > bounds2.right) { continue; } - else if (object2.body.x > object1.body.right) + else if (bounds2.x > bounds1.right) { break; } } else if (this.sortDirection === Phaser.Physics.Arcade.TOP_BOTTOM) { - if (object1.body.bottom < object2.body.y) + if (bounds1.bottom < bounds2.y) { continue; } - else if (object2.body.bottom < object1.body.y) + else if (bounds2.bottom < bounds1.y) { break; } } else if (this.sortDirection === Phaser.Physics.Arcade.BOTTOM_TOP) { - if (object1.body.y > object2.body.bottom) + if (bounds1.y > bounds2.bottom) { continue; } - else if (object2.body.y > object1.body.bottom) + else if (bounds2.y > object1.body.bottom) { break; } @@ -71354,6 +71844,42 @@ Phaser.Physics.Arcade.prototype = { return false; } + // Circle vs. Circle quick bail out + if (body1.isCircle && body2.isCircle) + { + return this.separateCircle(body1, body2, overlapOnly); + } + + // We define the behavior of bodies in a collision circle and rectangle + // If a collision occurs in the corner points of the rectangle, the body behave like circles + + // Either body1 or body2 is a circle + if (body1.isCircle !== body2.isCircle) + { + var bodyRect = (body1.isCircle) ? body2 : body1; + var bodyCircle = (body1.isCircle) ? body1 : body2; + + var rect = { + x: bodyRect.x, + y: bodyRect.y, + right: bodyRect.right, + bottom: bodyRect.bottom + }; + + var circle = { + x: bodyCircle.x + bodyCircle.radius, + y: bodyCircle.y + bodyCircle.radius + }; + + if (circle.y < rect.y || circle.y > rect.bottom) + { + if (circle.x < rect.x || circle.x > rect.right) + { + return this.separateCircle(body1, body2, overlapOnly); + } + } + } + var resultX = false; var resultY = false; @@ -71379,7 +71905,37 @@ Phaser.Physics.Arcade.prototype = { } } - return (resultX || resultY); + var result = (resultX || resultY); + + if (result) + { + if (overlapOnly) + { + if (body1.onOverlap) + { + body1.onOverlap.dispatch(body1.sprite, body2.sprite); + } + + if (body2.onOverlap) + { + body2.onOverlap.dispatch(body2.sprite, body1.sprite); + } + } + else + { + if (body1.onCollide) + { + body1.onCollide.dispatch(body1.sprite, body2.sprite); + } + + if (body2.onCollide) + { + body2.onCollide.dispatch(body2.sprite, body1.sprite); + } + } + } + + return result; }, @@ -71397,26 +71953,253 @@ Phaser.Physics.Arcade.prototype = { { return false; } - - // Rect vs. Rect - if (body1.right <= body2.position.x) + + if (body1.isCircle) { - return false; + if (body2.isCircle) + { + // Circle vs. Circle + return Phaser.Math.distance(body1.center.x, body1.center.y, body2.center.x, body2.center.y) <= (body1.radius + body2.radius); + } + else + { + // Circle vs. Rect + return this.circleBodyIntersects(body1, body2); + } + } + else + { + if (body2.isCircle) + { + // Rect vs. Circle + return this.circleBodyIntersects(body2, body1); + } + else + { + // Rect vs. Rect + if (body1.right <= body2.position.x) + { + return false; + } + + if (body1.bottom <= body2.position.y) + { + return false; + } + + if (body1.position.x >= body2.right) + { + return false; + } + + if (body1.position.y >= body2.bottom) + { + return false; + } + + return true; + } } - if (body1.bottom <= body2.position.y) + }, + + /** + * Checks to see if a circular Body intersects with a Rectangular Body. + * + * @method Phaser.Physics.Arcade#circleBodyIntersects + * @param {Phaser.Physics.Arcade.Body} circle - The Body with `isCircle` set. + * @param {Phaser.Physics.Arcade.Body} body - The Body with `isCircle` not set (i.e. uses Rectangle shape) + * @return {boolean} Returns true if the bodies intersect, otherwise false. + */ + circleBodyIntersects: function (circle, body) { + + var x = Phaser.Math.clamp(circle.center.x, body.left, body.right); + var y = Phaser.Math.clamp(circle.center.y, body.top, body.bottom); + + var dx = (circle.center.x - x) * (circle.center.x - x); + var dy = (circle.center.y - y) * (circle.center.y - y); + + return (dx + dy) <= (circle.radius * circle.radius); + + }, + + /** + * The core separation function to separate two circular physics bodies. + * + * @method Phaser.Physics.Arcade#separateCircle + * @private + * @param {Phaser.Physics.Arcade.Body} body1 - The first Body to separate. Must have `Body.isCircle` true and a positive `radius`. + * @param {Phaser.Physics.Arcade.Body} body2 - The second Body to separate. Must have `Body.isCircle` true and a positive `radius`. + * @param {boolean} overlapOnly - If true the bodies will only have their overlap data set, no separation or exchange of velocity will take place. + * @return {boolean} Returns true if the bodies were separated or overlap, otherwise false. + */ + separateCircle: function (body1, body2, overlapOnly) { + + // Set the bounding box overlap values + this.getOverlapX(body1, body2); + this.getOverlapY(body1, body2); + + var angleCollision = this.angleBetweenCenters(body1, body2); + + var overlap = 0; + + if (body1.isCircle !== body2.isCircle) { - return false; + var rect = { + x: (body2.isCircle) ? body1.position.x : body2.position.x, + y: (body2.isCircle) ? body1.position.y : body2.position.y, + right: (body2.isCircle) ? body1.right : body2.right, + bottom: (body2.isCircle) ? body1.bottom : body2.bottom + }; + + var circle = { + x: (body1.isCircle) ? (body1.position.x + body1.radius) : (body2.position.x + body2.radius), + y: (body1.isCircle) ? (body1.position.y + body1.radius) : (body2.position.y + body2.radius), + radius: (body1.isCircle) ? body1.radius : body2.radius + }; + + if (circle.y < rect.y) + { + if (circle.x < rect.x) + { + overlap = Phaser.Math.distance(circle.x, circle.y, rect.x, rect.y) - circle.radius; + } + else if (circle.x > rect.right) + { + overlap = Phaser.Math.distance(circle.x, circle.y, rect.right, rect.y) - circle.radius; + } + } + else if (circle.y > rect.bottom) + { + if (circle.x < rect.x) + { + overlap = Phaser.Math.distance(circle.x, circle.y, rect.x, rect.bottom) - circle.radius; + } + else if (circle.x > rect.right) + { + overlap = Phaser.Math.distance(circle.x, circle.y, rect.right, rect.bottom) - circle.radius; + } + } + + overlap *= -1; + } + else + { + overlap = (body1.radius + body2.radius) - Phaser.Math.distance(body1.center.x, body1.center.y, body2.center.x, body2.center.y); } - if (body1.position.x >= body2.right) + // Can't separate two immovable bodies, or a body with its own custom separation logic + if (overlapOnly || overlap === 0 || (body1.immovable && body2.immovable) || body1.customSeparateX || body2.customSeparateX) { - return false; + if (overlap !== 0) + { + if (body1.onOverlap) + { + body1.onOverlap.dispatch(body1.sprite, body2.sprite); + } + + if (body2.onOverlap) + { + body2.onOverlap.dispatch(body2.sprite, body1.sprite); + } + } + + // return true if there was some overlap, otherwise false + return (overlap !== 0); } - if (body1.position.y >= body2.bottom) + // Transform the velocity vector to the coordinate system oriented along the direction of impact. + // This is done to eliminate the vertical component of the velocity + var v1 = { + x: body1.velocity.x * Math.cos(angleCollision) + body1.velocity.y * Math.sin(angleCollision), + y: body1.velocity.x * Math.sin(angleCollision) - body1.velocity.y * Math.cos(angleCollision) + }; + + var v2 = { + x: body2.velocity.x * Math.cos(angleCollision) + body2.velocity.y * Math.sin(angleCollision), + y: body2.velocity.x * Math.sin(angleCollision) - body2.velocity.y * Math.cos(angleCollision) + }; + + // We expect the new velocity after impact + var tempVel1 = ((body1.mass - body2.mass) * v1.x + 2 * body2.mass * v2.x) / (body1.mass + body2.mass); + var tempVel2 = (2 * body1.mass * v1.x + (body2.mass - body1.mass) * v2.x) / (body1.mass + body2.mass); + + // We convert the vector to the original coordinate system and multiplied by factor of rebound + if (!body1.immovable) { - return false; + body1.velocity.x = (tempVel1 * Math.cos(angleCollision) - v1.y * Math.sin(angleCollision)) * body1.bounce.x; + body1.velocity.y = (v1.y * Math.cos(angleCollision) + tempVel1 * Math.sin(angleCollision)) * body1.bounce.y; + } + + if (!body2.immovable) + { + body2.velocity.x = (tempVel2 * Math.cos(angleCollision) - v2.y * Math.sin(angleCollision)) * body2.bounce.x; + body2.velocity.y = (v2.y * Math.cos(angleCollision) + tempVel2 * Math.sin(angleCollision)) * body2.bounce.y; + } + + // When the collision angle is almost perpendicular to the total initial velocity vector + // (collision on a tangent) vector direction can be determined incorrectly. + // This code fixes the problem + + if (Math.abs(angleCollision) < Math.PI / 2) + { + if ((body1.velocity.x > 0) && !body1.immovable && (body2.velocity.x > body1.velocity.x)) + { + body1.velocity.x *= -1; + } + else if ((body2.velocity.x < 0) && !body2.immovable && (body1.velocity.x < body2.velocity.x)) + { + body2.velocity.x *= -1; + } + else if ((body1.velocity.y > 0) && !body1.immovable && (body2.velocity.y > body1.velocity.y)) + { + body1.velocity.y *= -1; + } + else if ((body2.velocity.y < 0) && !body2.immovable && (body1.velocity.y < body2.velocity.y)) + { + body2.velocity.y *= -1; + } + } + else if (Math.abs(angleCollision) > Math.PI / 2) + { + if ((body1.velocity.x < 0) && !body1.immovable && (body2.velocity.x < body1.velocity.x)) + { + body1.velocity.x *= -1; + } + else if ((body2.velocity.x > 0) && !body2.immovable && (body1.velocity.x > body2.velocity.x)) + { + body2.velocity.x *= -1; + } + else if ((body1.velocity.y < 0) && !body1.immovable && (body2.velocity.y < body1.velocity.y)) + { + body1.velocity.y *= -1; + } + else if ((body2.velocity.y > 0) && !body2.immovable && (body1.velocity.x > body2.velocity.y)) + { + body2.velocity.y *= -1; + } + } + + if (!body1.immovable) + { + body1.x += (body1.velocity.x * this.game.time.physicsElapsed) - overlap * Math.cos(angleCollision); + body1.y += (body1.velocity.y * this.game.time.physicsElapsed) - overlap * Math.sin(angleCollision); + } + + if (!body2.immovable) + { + body2.x += (body2.velocity.x * this.game.time.physicsElapsed) + overlap * Math.cos(angleCollision); + body2.y += (body2.velocity.y * this.game.time.physicsElapsed) + overlap * Math.sin(angleCollision); + } + + if (body1.onCollide) + { + body1.onCollide.dispatch(body1.sprite, body2.sprite); + } + + if (body2.onCollide) + { + body2.onCollide.dispatch(body2.sprite, body1.sprite); } return true; @@ -72116,6 +72899,23 @@ Phaser.Physics.Arcade.prototype = { }, + /** + * Find the angle in radians between centers of two display objects (like Sprites). + * + * @method Phaser.Physics.Arcade#angleBetweenCenters + * @param {any} source - The Display Object to test from. + * @param {any} target - The Display Object to test to. + * @return {number} The angle in radians between the source and target display objects. + */ + angleBetweenCenters: function (source, target) { + + var dx = target.center.x - source.center.x; + var dy = target.center.y - source.center.y; + + return Math.atan2(dy, dx); + + }, + /** * Find the angle in radians between a display object (like a Sprite) and the given x/y coordinate. * @@ -72228,6 +73028,25 @@ Phaser.Physics.Arcade.Body = function (sprite) { */ this.enable = true; + /** + * If `true` this Body is using circular collision detection. If `false` it is using rectangular. + * Use `Body.setCircle` to control the collision shape this Body uses. + * @property {boolean} isCircle + * @default + * @readOnly + */ + this.isCircle = false; + + /** + * The radius of the circular collision shape this Body is using if Body.setCircle has been enabled. + * If you wish to change the radius then call `setCircle` again with the new value. + * If you wish to stop the Body using a circle then call `setCircle` with a radius of zero (or undefined). + * @property {number} radius + * @default + * @readOnly + */ + this.radius = 0; + /** * @property {Phaser.Point} offset - The offset of the Physics Body from the Sprite x/y position. */ @@ -72321,12 +73140,12 @@ Phaser.Physics.Arcade.Body = function (sprite) { * @property {Phaser.Point} newVelocity - The new velocity. Calculated during the Body.preUpdate and applied to its position. * @readonly */ - this.newVelocity = new Phaser.Point(0, 0); + this.newVelocity = new Phaser.Point(); /** * @property {Phaser.Point} deltaMax - The Sprite position is updated based on the delta x/y values. You can set a cap on those (both +-) using deltaMax. */ - this.deltaMax = new Phaser.Point(0, 0); + this.deltaMax = new Phaser.Point(); /** * @property {Phaser.Point} acceleration - The acceleration is the rate of change of the velocity. Measured in pixels per second squared. @@ -72347,7 +73166,7 @@ Phaser.Physics.Arcade.Body = function (sprite) { /** * @property {Phaser.Point} gravity - A local gravity applied to this Body. If non-zero this over rides any world gravity, unless Body.allowGravity is set to false. */ - this.gravity = new Phaser.Point(0, 0); + this.gravity = new Phaser.Point(); /** * @property {Phaser.Point} bounce - The elasticity of the Body when colliding. bounce.x/y = 1 means full rebound, bounce.x/y = 0.5 means 50% rebound velocity. @@ -72362,6 +73181,58 @@ Phaser.Physics.Arcade.Body = function (sprite) { */ this.worldBounce = null; + /** + * A Signal that is dispatched when this Body collides with the world bounds. + * Due to the potentially high volume of signals this could create it is disabled by default. + * To use this feature set this property to a Phaser.Signal: `sprite.body.onWorldBounds = new Phaser.Signal()` + * and it will be called when a collision happens, passing five arguments: + * `onWorldBounds(sprite, up, down, left, right)` + * where the Sprite is a reference to the Sprite that owns this Body, and the other arguments are booleans + * indicating on which side of the world the Body collided. + * @property {Phaser.Signal} onWorldBounds + */ + this.onWorldBounds = null; + + /** + * A Signal that is dispatched when this Body collides with another Body. + * + * You still need to call `game.physics.arcade.collide` in your `update` method in order + * for this signal to be dispatched. + * + * Usually you'd pass a callback to the `collide` method, but this signal provides for + * a different level of notification. + * + * Due to the potentially high volume of signals this could create it is disabled by default. + * + * To use this feature set this property to a Phaser.Signal: `sprite.body.onCollide = new Phaser.Signal()` + * and it will be called when a collision happens, passing two arguments: the sprites which collided. + * The first sprite in the argument is always the owner of this Body. + * + * If two Bodies with this Signal set collide, both will dispatch the Signal. + * @property {Phaser.Signal} onCollide + */ + this.onCollide = null; + + /** + * A Signal that is dispatched when this Body overlaps with another Body. + * + * You still need to call `game.physics.arcade.overlap` in your `update` method in order + * for this signal to be dispatched. + * + * Usually you'd pass a callback to the `overlap` method, but this signal provides for + * a different level of notification. + * + * Due to the potentially high volume of signals this could create it is disabled by default. + * + * To use this feature set this property to a Phaser.Signal: `sprite.body.onOverlap = new Phaser.Signal()` + * and it will be called when a collision happens, passing two arguments: the sprites which collided. + * The first sprite in the argument is always the owner of this Body. + * + * If two Bodies with this Signal set collide, both will dispatch the Signal. + * @property {Phaser.Signal} onOverlap + */ + this.onOverlap = null; + /** * @property {Phaser.Point} maxVelocity - The maximum velocity in pixels per second sq. that the Body can reach. * @default @@ -72464,6 +73335,12 @@ Phaser.Physics.Arcade.Body = function (sprite) { */ this.overlapY = 0; + /** + * If `Body.isCircle` is true, and this body collides with another circular body, the amount of overlap is stored here. + * @property {number} overlapR - The amount of overlap during the collision. + */ + this.overlapR = 0; + /** * If a body is overlapping with another body, but neither of them are moving (maybe they spawned on-top of each other?) this is set to true. * @property {boolean} embedded - Body embed value. @@ -72737,7 +73614,10 @@ Phaser.Physics.Arcade.Body.prototype = { if (this.collideWorldBounds) { - this.checkWorldBounds(); + if (this.checkWorldBounds() && this.onWorldBounds) + { + this.onWorldBounds.dispatch(this.sprite, this.blocked.up, this.blocked.down, this.blocked.left, this.blocked.right); + } } } @@ -72908,6 +73788,7 @@ Phaser.Physics.Arcade.Body.prototype = { * * @method Phaser.Physics.Arcade.Body#checkWorldBounds * @protected + * @return {boolean} True if the Body collided with the world bounds, otherwise false. */ checkWorldBounds: function () { @@ -72918,31 +73799,71 @@ Phaser.Physics.Arcade.Body.prototype = { var bx = (this.worldBounce) ? -this.worldBounce.x : -this.bounce.x; var by = (this.worldBounce) ? -this.worldBounce.y : -this.bounce.y; - if (pos.x < bounds.x && check.left) + if (this.isCircle) { - pos.x = bounds.x; - this.velocity.x *= bx; - this.blocked.left = true; + var bodyBounds = { + x: this.center.x - this.radius, + y: this.center.y - this.radius, + right: this.center.x + this.radius, + bottom: this.center.y + this.radius + }; + + if (bodyBounds.x < bounds.x && check.left) + { + pos.x = bounds.x - this.halfWidth + this.radius; + this.velocity.x *= bx; + this.blocked.left = true; + } + else if (bodyBounds.right > bounds.right && check.right) + { + pos.x = bounds.right - this.halfWidth - this.radius; + this.velocity.x *= bx; + this.blocked.right = true; + } + + if (bodyBounds.y < bounds.y && check.up) + { + pos.y = bounds.y - this.halfHeight + this.radius; + this.velocity.y *= by; + this.blocked.up = true; + } + else if (bodyBounds.bottom > bounds.bottom && check.down) + { + pos.y = bounds.bottom - this.halfHeight - this.radius; + this.velocity.y *= by; + this.blocked.down = true; + } } - else if (this.right > bounds.right && check.right) + else { - pos.x = bounds.right - this.width; - this.velocity.x *= bx; - this.blocked.right = true; + if (pos.x < bounds.x && check.left) + { + pos.x = bounds.x; + this.velocity.x *= bx; + this.blocked.left = true; + } + else if (this.right > bounds.right && check.right) + { + pos.x = bounds.right - this.width; + this.velocity.x *= bx; + this.blocked.right = true; + } + + if (pos.y < bounds.y && check.up) + { + pos.y = bounds.y; + this.velocity.y *= by; + this.blocked.up = true; + } + else if (this.bottom > bounds.bottom && check.down) + { + pos.y = bounds.bottom - this.height; + this.velocity.y *= by; + this.blocked.down = true; + } } - if (pos.y < bounds.y && check.up) - { - pos.y = bounds.y; - this.velocity.y *= by; - this.blocked.up = true; - } - else if (this.bottom > bounds.bottom && check.down) - { - pos.y = bounds.bottom - this.height; - this.velocity.y *= by; - this.blocked.down = true; - } + return (this.blocked.up || this.blocked.down || this.blocked.left || this.blocked.right); }, @@ -73122,6 +74043,9 @@ Phaser.Physics.Arcade.Body.prototype = { * 24 is the horizontal offset of the Body from the top-left of the Sprites texture, and 34 * is the vertical offset. * + * Calling `setSize` on a Body that has already had `setCircle` will reset all of the Circle + * properties, making this Body rectangular again. + * * @method Phaser.Physics.Arcade.Body#setSize * @param {number} width - The width of the Body. * @param {number} height - The height of the Body. @@ -73143,6 +74067,55 @@ Phaser.Physics.Arcade.Body.prototype = { this.center.setTo(this.position.x + this.halfWidth, this.position.y + this.halfHeight); + this.isCircle = false; + this.radius = 0; + + }, + + /** + * Sets this Body as using a circle, of the given radius, for all collision detection instead of a rectangle. + * The radius is given in pixels and is the distance from the center of the circle to the edge. + * + * You can also control the x and y offset, which is the position of the Body relative to the top-left of the Sprite. + * + * To change a Body back to being rectangular again call `Body.setSize`. + * + * Note: Circular collision only happens with other Arcade Physics bodies, it does not + * work against tile maps, where rectangular collision is the only method supported. + * + * @method Phaser.Physics.Arcade.Body#setCircle + * @param {number} [radius] - The radius of the Body in pixels. Pass a value of zero / undefined, to stop the Body using a circle for collision. + * @param {number} [offsetX] - The X offset of the Body from the Sprite position. + * @param {number} [offsetY] - The Y offset of the Body from the Sprite position. + */ + setCircle: function (radius, offsetX, offsetY) { + + if (offsetX === undefined) { offsetX = this.offset.x; } + if (offsetY === undefined) { offsetY = this.offset.y; } + + if (radius > 0) + { + this.isCircle = true; + this.radius = radius; + + this.sourceWidth = radius * 2; + this.sourceHeight = radius * 2; + + this.width = this.sourceWidth * this._sx; + this.height = this.sourceHeight * this._sy; + + this.halfWidth = Math.floor(this.width / 2); + this.halfHeight = Math.floor(this.height / 2); + + this.offset.setTo(offsetX, offsetY); + + this.center.setTo(this.position.x + this.halfWidth, this.position.y + this.halfHeight); + } + else + { + this.isCircle = false; + } + }, /** @@ -73180,6 +74153,36 @@ Phaser.Physics.Arcade.Body.prototype = { }, + /** + * Returns the bounds of this physics body. + * + * Only used internally by the World collision methods. + * + * @method Phaser.Physics.Arcade.Body#getBounds + * @param {object} obj - The object in which to set the bounds values. + * @return {object} The object that was given to this method. + */ + getBounds: function (obj) { + + if (this.isCircle) + { + obj.x = this.center.x - this.radius; + obj.y = this.center.y - this.radius; + obj.right = this.center.x + this.radius; + obj.bottom = this.center.y + this.radius; + } + else + { + obj.x = this.x; + obj.y = this.y; + obj.right = this.right; + obj.bottom = this.bottom; + } + + return obj; + + }, + /** * Tests if a world point lies within this Body. * @@ -73190,7 +74193,7 @@ Phaser.Physics.Arcade.Body.prototype = { */ hitTest: function (x, y) { - return Phaser.Rectangle.contains(this, x, y); + return (this.isCircle) ? Phaser.Circle.contains(this, x, y) : Phaser.Rectangle.contains(this, x, y); }, @@ -73424,15 +74427,33 @@ Phaser.Physics.Arcade.Body.render = function (context, body, color, filled) { color = color || 'rgba(0,255,0,0.4)'; - if (filled) + context.fillStyle = color; + context.strokeStyle = color; + + if (body.isCircle) { - context.fillStyle = color; - context.fillRect(body.position.x - body.game.camera.x, body.position.y - body.game.camera.y, body.width, body.height); + context.beginPath(); + context.arc(body.center.x - body.game.camera.x, body.center.y - body.game.camera.y, body.radius, 0, 2 * Math.PI); + + if (filled) + { + context.fill(); + } + else + { + context.stroke(); + } } else { - context.strokeStyle = color; - context.strokeRect(body.position.x - body.game.camera.x, body.position.y - body.game.camera.y, body.width, body.height); + if (filled) + { + context.fillRect(body.position.x - body.game.camera.x, body.position.y - body.game.camera.y, body.width, body.height); + } + else + { + context.strokeRect(body.position.x - body.game.camera.x, body.position.y - body.game.camera.y, body.width, body.height); + } } }; @@ -77203,8 +78224,6 @@ Phaser.TilemapLayer.prototype.renderRegion = function (scrollX, scrollY, left, t // xmax/ymax - remaining cells to render on column/row var tx, ty, x, y, xmax, ymax; - context.fillStyle = this.tileColor; - for (y = normStartY, ymax = bottom - top, ty = baseY; ymax >= 0; y++, ymax--, ty += th) @@ -77706,6 +78725,33 @@ Phaser.TilemapParser = { */ INSERT_NULL: false, + /** + * A tiled flag that resides within the 32 bit of the object gid and + * indicates whether the tiled/object is flipped horizontally. + * + * @constant + * @type {number} + */ + FLIPPED_HORIZONTALLY_FLAG: 0x80000000, + + /** + * A tiled flag that resides within the 31 bit of the object gid and + * indicates whether the tiled/object is flipped vertically. + * + * @constant + * @type {number} + */ + FLIPPED_VERTICALLY_FLAG: 0x40000000, + + /** + * A tiled flag that resides within the 30 bit of the object gid and + * indicates whether the tiled/object is flipped diagonally. + * + * @constant + * @type {number} + */ + FLIPPED_DIAGONALLY_FLAG: 0x20000000, + /** * Parse tilemap data from the cache and creates a Tilemap object. * @@ -78186,6 +79232,8 @@ Phaser.TilemapParser = { // Object Tiles if (curo.objects[v].gid) { + var self = this; + var object = { gid: curo.objects[v].gid, @@ -78193,9 +79241,13 @@ Phaser.TilemapParser = { type: curo.objects[v].hasOwnProperty("type") ? curo.objects[v].type : "", x: curo.objects[v].x, y: curo.objects[v].y, + width: curo.objects[v].width, + height: curo.objects[v].height, visible: curo.objects[v].visible, - properties: curo.objects[v].properties - + properties: curo.objects[v].properties, + horizontallyFlipped: curo.objects[v].gid & self.FLIPPED_HORIZONTALLY_FLAG, + verticallyFlipped: curo.objects[v].gid & self.FLIPPED_VERTICALLY_FLAG, + diagonallyFlipped: curo.objects[v].gid & self.FLIPPED_DIAGONALLY_FLAG }; if (curo.objects[v].rotation) @@ -79985,7 +81037,7 @@ Phaser.Weapon = function (game, parent) { this.fireFrom = new Phaser.Rectangle(0, 0, 1, 1); /** - * The angle at which the bullets are fired. This can be a const such as Phaser.ANGLE_UP + * The angle at which the bullets are fired. This can be a const such as Phaser.ANGLE_UP * or it can be any number from 0 to 360 inclusive, where 0 degrees is to the right. * @type {integer} */ @@ -80063,14 +81115,14 @@ Phaser.Weapon = function (game, parent) { /** * This is a variance added to the speed of Bullets when they are fired. - * If bullets have a `bulletSpeed` value of 200, and a `bulletSpeedVariance` of 50 + * If bullets have a `bulletSpeed` value of 200, and a `bulletSpeedVariance` of 50 * then the actual speed of the Bullets will be between 150 and 250 pixels per second. * @type {number} */ this.bulletSpeedVariance = 0; /** - * If you've set `bulletKillType` to `Phaser.Weapon.KILL_LIFESPAN` this controls the amount + * If you've set `bulletKillType` to `Phaser.Weapon.KILL_LIFESPAN` this controls the amount * of lifespan the Bullets have set on launch. The value is given in milliseconds. * When a Bullet hits its lifespan limit it will be automatically killed. * @type {number} @@ -80078,7 +81130,7 @@ Phaser.Weapon = function (game, parent) { this.bulletLifespan = 0; /** - * If you've set `bulletKillType` to `Phaser.Weapon.KILL_DISTANCE` this controls the distance + * If you've set `bulletKillType` to `Phaser.Weapon.KILL_DISTANCE` this controls the distance * the Bullet can travel before it is automatically killed. The distance is given in pixels. * @type {number} */ @@ -80152,7 +81204,7 @@ Phaser.Weapon = function (game, parent) { * This Rectangle defines the bounds that are used when determining if a Bullet should be killed or not. * It's used in combination with `Weapon.bulletKillType` when that is set to either `Phaser.Weapon.KILL_WEAPON_BOUNDS` * or `Phaser.Weapon.KILL_STATIC_BOUNDS`. If you are not using either of these kill types then the bounds are ignored. - * If you are tracking a Sprite or Point then the bounds are centered on that object every frame. + * If you are tracking a Sprite or Point then the bounds are centered on that object every frame. * * @type {Phaser.Rectangle} */ @@ -80191,8 +81243,8 @@ Phaser.Weapon = function (game, parent) { /** * The onFire Signal is dispatched each time `Weapon.fire` is called, and a Bullet is - * _successfully_ launched. The callback is set two arguments: a reference to the Weapon that fired the bullet, - * and a reference to the bullet sprite itself. + * _successfully_ launched. The callback is set two arguments: a reference to the bullet sprite itself, + * and a reference to the Weapon that fired the bullet. * * @type {Phaser.Signal} */ @@ -80280,7 +81332,7 @@ Phaser.Weapon.KILL_NEVER = 0; Phaser.Weapon.KILL_LIFESPAN = 1; /** -* A `bulletKillType` constant that automatically kills the bullets after they +* A `bulletKillType` constant that automatically kills the bullets after they * exceed the `bulletDistance` from their original firing position. * @constant * @type {integer} @@ -80331,7 +81383,7 @@ Phaser.Weapon.KILL_STATIC_BOUNDS = 6; * so be careful it doesn't grow too large. * * You can either set the texture key and frame here, or via the `Weapon.bulletKey` and `Weapon.bulletFrame` -* properties. You can also animate bullets, or set them to use random frames. All Bullets belonging to a +* properties. You can also animate bullets, or set them to use random frames. All Bullets belonging to a * single Weapon instance must share the same texture key however. * * @method Phaser.Weapon#createBullets @@ -80359,7 +81411,7 @@ Phaser.Weapon.prototype.createBullets = function (quantity, key, frame, group) { this.autoExpandBulletsGroup = true; quantity = 1; } - + this.bullets.createMultiple(quantity, key, frame); this.bullets.setAll('data.bulletManager', this); @@ -80577,7 +81629,7 @@ Phaser.Weapon.prototype.trackPointer = function (pointer, offsetX, offsetY) { * Attempts to fire a single Bullet. If there are no more bullets available in the pool, and the pool cannot be extended, * then this method returns `false`. It will also return false if not enough time has expired since the last time * the Weapon was fired, as defined in the `Weapon.fireRate` property. -* +* * Otherwise the first available bullet is selected and launched. * * The arguments are all optional, but allow you to control both where the bullet is launched from, and aimed at. @@ -80865,12 +81917,12 @@ Phaser.Weapon.prototype.setBulletBodyOffset = function (width, height, offsetX, /** * Sets the texture frames that the bullets can use when being launched. -* +* * This is intended for use when you've got numeric based frames, such as those loaded via a Sprite Sheet. -* +* * It works by calling `Phaser.ArrayUtils.numberArray` internally, using the min and max values * provided. Then it sets the frame index to be zero. -* +* * You can optionally set the cycle and random booleans, to allow bullets to cycle through the frames * when they're fired, or pick one at random. * @@ -80995,10 +82047,10 @@ Object.defineProperty(Phaser.Weapon.prototype, "bulletClass", { * * * `Phaser.Weapon.KILL_LIFESPAN` * The bullets are automatically killed when their `bulletLifespan` amount expires. -* +* * * `Phaser.Weapon.KILL_DISTANCE` * The bullets are automatically killed when they exceed `bulletDistance` pixels away from their original launch position. -* +* * * `Phaser.Weapon.KILL_WEAPON_BOUNDS` * The bullets are automatically killed when they no longer intersect with the `Weapon.bounds` rectangle. * @@ -81473,7 +82525,7 @@ Phaser.Video = function (game, key, url) { } else { - this.baseTexture = new PIXI.BaseTexture(PIXI.TextureCache['__default'].baseTexture.source); + this.baseTexture = new PIXI.BaseTexture(Phaser.Cache.DEFAULT.baseTexture.source); this.baseTexture.forceLoaded(this.width, this.height); } diff --git a/build/custom/phaser-arcade-physics.map b/build/custom/phaser-arcade-physics.map index 5573e50eb..755d7d435 100644 --- a/build/custom/phaser-arcade-physics.map +++ b/build/custom/phaser-arcade-physics.map @@ -1 +1 @@ -{"version":3,"file":"phaser-arcade-physics.min.js","sources":["phaser-arcade-physics.js"],"names":["root","this","PIXI","game","WEBGL_RENDERER","CANVAS_RENDERER","VERSION","_UID","Float32Array","Uint16Array","Uint32Array","ArrayBuffer","Array","PI_2","Math","PI","RAD_TO_DEG","DEG_TO_RAD","RETINA_PREFIX","DisplayObject","position","Point","scale","pivot","rotation","alpha","visible","hitArea","renderable","parent","stage","worldAlpha","worldTransform","Matrix","worldPosition","worldScale","worldRotation","_sr","_cr","filterArea","_bounds","Rectangle","_currentBounds","_mask","_cacheAsBitmap","_cacheIsDirty","prototype","constructor","destroy","children","i","length","_destroyCachedSprite","Object","defineProperty","get","item","set","value","isMask","_filters","passes","filterPasses","j","push","_filterBlock","target","blendMode","blendModes","MULTIPLY","NORMAL","_generateCachedSprite","updateTransform","p","world","a","b","c","d","tx","ty","pt","wt","rotationCache","sin","cos","x","y","sqrt","atan2","transformCallback","call","transformCallbackContext","displayObjectUpdateTransform","getBounds","matrix","EmptyRectangle","getLocalBounds","identityMatrix","setStageReference","preUpdate","generateTexture","resolution","scaleMode","renderer","bounds","renderTexture","RenderTexture","width","height","_tempMatrix","render","updateCache","toGlobal","apply","toLocal","from","applyInverse","_renderCachedSprite","renderSession","_cachedSprite","gl","Sprite","_renderWebGL","_renderCanvas","max","ceil","texture","resize","tempFilters","filters","anchor","DisplayObjectContainer","ignoreChildInput","create","_width","_height","addChild","child","addChildAt","index","removeChild","splice","Error","swapChildren","child2","index1","getChildIndex","index2","indexOf","setChildIndex","currentIndex","getChildAt","removeChildAt","removeStageReference","undefined","removeChildren","beginIndex","endIndex","begin","end","range","removed","displayObjectContainerUpdateTransform","childBounds","childMaxX","childMaxY","minX","Infinity","minY","maxX","maxY","childVisible","matrixCache","spriteBatch","flush","filterManager","pushFilter","stop","maskManager","pushMask","mask","start","popMask","popFilter","Texture","emptyTexture","tint","cachedTint","tintedTexture","shader","exists","baseTexture","hasLoaded","onTextureUpdate","frame","setTexture","destroyBase","skipRender","valid","w0","w1","h0","h1","temp","x1","y1","x2","y2","x3","y3","x4","y4","crop","currentBlendMode","context","globalCompositeOperation","blendModesCanvas","globalAlpha","smoothProperty","scaleModes","LINEAR","dx","trim","dy","shakeX","shakeY","roundPixels","setTransform","cw","ch","requiresReTint","CanvasTinter","getTintedTexture","drawImage","cx","cy","source","fromFrame","frameId","TextureCache","fromImage","imageId","crossorigin","SpriteBatch","textureThing","ready","initWebGL","fastSpriteBatch","WebGLFastSpriteBatch","setContext","shaderManager","setShader","fastShader","transform","isRotated","childTransform","hex2rgb","hex","rgb2hex","rgb","canUseNewCanvasBlendModes","document","pngHead","pngEnd","magenta","Image","src","yellow","canvas","CanvasPool","getContext","getImageData","data","remove","getNextPowerOfTwo","number","result","isPowerOfTwo","idx","getFirst","container","createElement","pool","removeByCanvas","getTotal","getFree","initDefaultShaders","CompileVertexShader","shaderSrc","_CompileShader","VERTEX_SHADER","CompileFragmentShader","FRAGMENT_SHADER","shaderType","isArray","join","createShader","shaderSource","compileShader","getShaderParameter","COMPILE_STATUS","window","console","log","getShaderInfoLog","compileProgram","vertexSrc","fragmentSrc","fragmentShader","vertexShader","shaderProgram","createProgram","attachShader","linkProgram","getProgramParameter","LINK_STATUS","getProgramInfoLog","PixiShader","program","textureCount","firstRun","dirty","attributes","init","defaultVertexSrc","useProgram","uSampler","getUniformLocation","projectionVector","offsetVector","dimensions","aVertexPosition","getAttribLocation","aTextureCoord","colorAttribute","key","uniforms","uniformLocation","initUniforms","uniform","type","_init","initSampler2D","glMatrix","glValueLength","glFunc","uniformMatrix2fv","uniformMatrix3fv","uniformMatrix4fv","activeTexture","bindTexture","TEXTURE_2D","_glTextures","id","textureData","magFilter","minFilter","wrapS","CLAMP_TO_EDGE","wrapT","format","LUMINANCE","RGBA","repeat","REPEAT","pixelStorei","UNPACK_FLIP_Y_WEBGL","flipY","border","texImage2D","UNSIGNED_BYTE","texParameteri","TEXTURE_MAG_FILTER","TEXTURE_MIN_FILTER","TEXTURE_WRAP_S","TEXTURE_WRAP_T","uniform1i","syncUniforms","transpose","z","w","_dirty","instances","updateTexture","deleteProgram","PixiFastShader","uMatrix","aPositionCoord","aScale","aRotation","StripShader","translationMatrix","attribute","PrimitiveShader","tintColor","ComplexPrimitiveShader","color","glContexts","WebGLRenderer","defaultRenderer","transparent","autoResize","preserveDrawingBuffer","clearBeforeRender","view","_contextOptions","antialias","premultipliedAlpha","stencil","projection","offset","WebGLShaderManager","WebGLSpriteBatch","WebGLMaskManager","WebGLFilterManager","stencilManager","WebGLStencilManager","blendModeManager","WebGLBlendModeManager","drawCount","initContext","mapBlendModes","glContextId","disable","DEPTH_TEST","CULL_FACE","enable","BLEND","contextLost","viewport","bindFramebuffer","FRAMEBUFFER","clearColor","_bgColor","r","g","clear","COLOR_BUFFER_BIT","camera","_shake","renderDisplayObject","displayObject","buffer","setBlendMode","style","createTexture","UNPACK_PREMULTIPLY_ALPHA_WEBGL","NEAREST","mipmap","LINEAR_MIPMAP_LINEAR","NEAREST_MIPMAP_NEAREST","generateMipmap","_powerOf2","blendModesWebGL","modes","ONE","ONE_MINUS_SRC_ALPHA","ADD","SRC_ALPHA","DST_ALPHA","DST_COLOR","SCREEN","OVERLAY","DARKEN","LIGHTEN","COLOR_DODGE","COLOR_BURN","HARD_LIGHT","SOFT_LIGHT","DIFFERENCE","EXCLUSION","HUE","SATURATION","COLOR","LUMINOSITY","blendModeWebGL","blendFunc","maskData","WebGLGraphics","updateGraphics","_webGL","pushStencil","popStencil","stencilStack","reverse","count","graphics","webGLData","bindGraphics","STENCIL_TEST","STENCIL_BUFFER_BIT","level","colorMask","stencilFunc","ALWAYS","stencilOp","KEEP","INVERT","mode","drawElements","TRIANGLE_FAN","indices","UNSIGNED_SHORT","EQUAL","DECR","INCR","TRIANGLE_STRIP","_currentGraphics","complexPrimitiveShader","uniform1f","toArray","uniform2f","uniform3fv","bindBuffer","ARRAY_BUFFER","vertexAttribPointer","FLOAT","ELEMENT_ARRAY_BUFFER","indexBuffer","primitiveShader","pop","maxAttibs","attribState","tempAttribState","stack","defaultShader","stripShader","setAttribs","attribs","attribId","enableVertexAttribArray","disableVertexAttribArray","_currentId","currentShader","vertSize","size","numVerts","numIndices","vertices","positions","colors","lastIndexCount","drawing","currentBatchSize","currentBaseTexture","textures","shaders","sprites","AbstractFilter","vertexBuffer","createBuffer","bufferData","STATIC_DRAW","DYNAMIC_DRAW","sprite","uvs","_uvs","aX","aY","x0","y0","renderTilingSprite","tilingTexture","TextureUvs","h","tilePosition","tileScaleOffset","offsetX","offsetY","scaleX","tileScale","scaleY","TEXTURE0","stride","bufferSubData","subarray","nextTexture","nextBlendMode","nextShader","batchSize","blendSwap","shaderSwap","skip","renderBatch","startIndex","TRIANGLES","deleteBuffer","maxSize","renderSprite","filterStack","texturePool","initShaderBuffers","filterBlock","_filterArea","_previous_stencil_mgr","filter","FilterTexture","padding","frameBuffer","_glFilterTexture","vertexArray","uvBuffer","uvArray","inputTexture","outputTexture","filterPass","applyFilterPass","sizeX","sizeY","currentFilter","colorBuffer","colorArray","createFramebuffer","DEFAULT","framebufferTexture2D","COLOR_ATTACHMENT0","renderBuffer","createRenderbuffer","bindRenderbuffer","RENDERBUFFER","framebufferRenderbuffer","DEPTH_STENCIL_ATTACHMENT","renderbufferStorage","DEPTH_STENCIL","deleteFramebuffer","deleteTexture","CanvasBuffer","clearRect","CanvasMaskManager","save","cacheAlpha","CanvasGraphics","renderGraphicsMask","clip","restore","tintMethod","tintWithMultiply","fillStyle","toString","substr","fillRect","tintWithPerPixel","rgbValues","pixelData","pixels","canHandleAlpha","putImageData","checkInverseAlpha","s1","s2","canUseMultiply","CanvasRenderer","refresh","Phaser","Canvas","getSmoothingPrefix","navigator","isCocoonJS","screencanvas","rgba","removeView","useNew","BaseTextureCache","BaseTextureCacheIdGenerator","BaseTexture","complete","naturalWidth","naturalHeight","imageUrl","forceLoaded","_pixiId","unloadFromGPU","updateSourceImage","newSrc","glTexture","image","crossOrigin","fromCanvas","TextureCacheIdGenerator","FrameCache","TextureSilentFail","noFrame","isTiling","requiresUpdate","setFrame","onBaseTextureLoaded","_updateUvs","tw","th","addTextureToCache","removeTextureFromCache","textureBuffer","renderWebGL","renderCanvas","tempMatrix","updateBase","identity","translate","append","realResolution","getImage","getBase64","getCanvas","toDataURL","webGLPixels","Uint8Array","readPixels","tempCanvas","canvasData","Strip","canvasPadding","drawMode","DrawModes","_vertexBuffer","_initWebGL","_renderStrip","_indexBuffer","_uvBuffer","_colorBuffer","_renderCanvasTriangleStrip","_renderCanvasTriangles","_renderCanvasDrawTriangle","index0","textureSource","textureWidth","textureHeight","u0","u1","u2","v0","v1","v2","paddingX","paddingY","centerX","centerY","normX","normY","dist","beginPath","moveTo","lineTo","closePath","delta","deltaA","deltaB","deltaC","deltaD","deltaE","deltaF","renderStripFlat","strip","fill","updateFrame","n","rawX","rawY","Rope","points","lastPoint","point","amount","total","nextPoint","perp","ratio","perpLength","num","TilingSprite","textureDebug","canvasBuffer","tilePattern","refreshTexture","frameWidth","frameHeight","generateTilingTexture","needsUpdate","createPattern","sessionBlendMode","forcePowerOfTwo","targetWidth","_frame","sourceSizeW","targetHeight","sourceSizeH","trimmed","spriteSourceSizeX","spriteSourceSizeY","strokeStyle","strokeRect","exports","module","define","amd","WheelEventProxy","scaleFactor","deltaMode","_scaleFactor","_deltaMode","originalEvent","GAMES","AUTO","CANVAS","WEBGL","HEADLESS","NONE","LEFT","RIGHT","UP","DOWN","SPRITE","BUTTON","IMAGE","GRAPHICS","TEXT","TILESPRITE","BITMAPTEXT","GROUP","RENDERTEXTURE","TILEMAP","TILEMAPLAYER","EMITTER","POLYGON","BITMAPDATA","CANVAS_FILTER","WEBGL_FILTER","ELLIPSE","SPRITEBATCH","RETROFONT","POINTER","ROPE","CIRCLE","RECTANGLE","LINE","MATRIX","POINT","ROUNDEDRECTANGLE","CREATURE","VIDEO","PENDING_ATLAS","HORIZONTAL","VERTICAL","LANDSCAPE","PORTRAIT","ANGLE_UP","ANGLE_DOWN","ANGLE_LEFT","ANGLE_RIGHT","ANGLE_NORTH_EAST","ANGLE_NORTH_WEST","ANGLE_SOUTH_EAST","ANGLE_SOUTH_WEST","TOP_LEFT","TOP_CENTER","TOP_RIGHT","LEFT_TOP","LEFT_CENTER","LEFT_BOTTOM","CENTER","RIGHT_TOP","RIGHT_CENTER","RIGHT_BOTTOM","BOTTOM_LEFT","BOTTOM_CENTER","BOTTOM_RIGHT","trunc","floor","Function","bind","slice","thisArg","bound","args","boundArgs","concat","arguments","TypeError","F","proto","arg","forEach","fun","t","len","CheapArray","assert","warn","Utils","getProperty","obj","prop","parts","split","last","l","current","setProperty","chanceRoll","chance","random","randomChoice","choice1","choice2","parseDimension","dimension","f","px","parseInt","innerWidth","innerHeight","pad","str","dir","padlen","right","left","isPlainObject","nodeType","hasOwnProperty","e","extend","options","name","copy","copyIsArray","clone","deep","mixinPrototype","mixin","replace","mixinKeys","keys","to","o","childNodes","cloneNode","Circle","diameter","_diameter","_radius","circumference","out","u","radius","setTo","copyFrom","copyTo","dest","distance","round","output","contains","circumferencePoint","angle","asDegrees","offsetPoint","top","bottom","equals","intersects","degToRad","intersectsRectangle","abs","halfWidth","xDist","halfHeight","yDist","xCornerDist","yCornerDist","xCornerDistSq","yCornerDistSq","maxCornerDistSq","Ellipse","normx","normy","Line","fromSprite","startSprite","endSprite","useCenter","center","fromAngle","rotate","rotateAround","line","asSegment","intersectsPoints","reflect","midPoint","centerOn","add","pointOnLine","pointOnSegment","xMin","min","xMax","yMin","yMax","coordinatesOnLine","stepRate","results","sx","sy","err","e2","wrap","a1","a2","b1","b2","c1","c2","denom","uc","ua","ub","rect","bx1","by1","bx2","by2","normalAngle","fromArray","array","pos","newPos","tx1","d1","invert","subtract","multiply","divide","clampX","clamp","clampY","radToDeg","getMagnitude","getMagnitudeSq","setMagnitude","magnitude","normalize","isZero","m","dot","cross","rperp","normalRightHand","negative","multiplyAdd","s","interpolate","project","amt","projectUnit","centroid","pointslength","parse","xProp","yProp","Polygon","area","_points","closed","toNumberArray","flatten","inside","ix","iy","jx","jy","Number","MAX_VALUE","calculateArea","p1","p2","avgHeight","floorAll","ceilAll","inflate","containsRect","intersection","intersectsRaw","tolerance","union","randomX","randomY","getPoint","empty","inflatePoint","containsRaw","rx","ry","rw","rh","containsPoint","volume","sameDimensions","aabb","NEGATIVE_INFINITY","POSITIVE_INFINITY","RoundedRectangle","Camera","deadzone","roundPx","atLimit","totalInView","lerp","onShakeComplete","Signal","onFlashComplete","onFadeComplete","fx","_targetPosition","_edge","_position","intensity","duration","horizontal","vertical","shakeBounds","_fxDuration","_fxType","FOLLOW_LOCKON","FOLLOW_PLATFORMER","FOLLOW_TOPDOWN","FOLLOW_TOPDOWN_TIGHT","SHAKE_BOTH","SHAKE_HORIZONTAL","SHAKE_VERTICAL","ENABLE_FX","boot","Graphics","follow","lerpX","lerpY","helper","unfollow","focusOn","setPosition","focusOnXY","shake","force","direction","flash","beginFill","drawRect","endFill","fade","update","updateFX","updateShake","checkBounds","time","elapsedMS","dispatch","rnd","frac","updateTarget","math","linear","setBoundsToWorld","vx","vw","vy","vh","setSize","reset","resetFX","State","make","cache","input","load","sound","state","tweens","particles","physics","preload","loadUpdate","loadRender","preRender","paused","resumed","pauseUpdate","shutdown","StateManager","pendingState","states","_pendingState","_clearWorld","_clearCache","_created","_args","onStateChange","onInitCallback","onPreloadCallback","onCreateCallback","onUpdateCallback","onRenderCallback","onResizeCallback","onPreRenderCallback","onLoadUpdateCallback","onLoadRenderCallback","onPausedCallback","onResumedCallback","onPauseUpdateCallback","onShutDownCallback","onPause","pause","onResume","resume","autoStart","newState","isBooted","callbackContext","clearWorld","clearCache","checkState","restart","dummy","previousStateKey","clearCurrentState","setCurrentState","totalQueuedFiles","totalQueuedPacks","loadComplete","removeAll","debug","link","unlink","_kickstart","getCurrentState","elapsedTime","renderType","_bindings","_prevParams","memorize","_shouldPropagate","active","_boundDispatch","validateListener","listener","fnName","_registerListener","isOnce","listenerContext","priority","binding","prevIndex","_indexOfListener","SignalBinding","_addBinding","execute","_priority","cur","_listener","has","addOnce","_destroy","getNumListeners","halt","bindings","paramsArr","forget","dispose","_this","signal","_isOnce","_signal","callCount","params","handlerReturn","detach","isBound","getListener","getSignal","Filter","prevPoint","Date","mouse","date","getFullYear","getMonth","getDate","getHours","getMinutes","getSeconds","sampleRate","iChannel0","iChannel1","iChannel2","iChannel3","setResolution","pointer","toFixed","totalElapsedSeconds","addToWorld","anchorX","anchorY","Plugin","hasPreUpdate","hasUpdate","hasPostUpdate","hasRender","hasPostRender","postRender","PluginManager","plugins","_len","_i","plugin","postUpdate","Stage","disableVisibilityChange","currentRenderOrderID","_hiddenVar","_onChange","config","parseConfig","setBackgroundColor","DOM","getOffset","setUserSelect","setTouchAction","checkVisibility","webkitHidden","mozHidden","msHidden","hidden","event","visibilityChange","addEventListener","onblur","onfocus","onpagehide","onpageshow","device","cocoonJSApp","CocoonJS","App","onSuspended","onActivated","focusLoss","focusGain","gamePaused","gameResumed","Color","valueToColor","updateColor","removeEventListener","Group","addToStage","enableBody","physicsBodyType","Physics","ARCADE","physicsType","alive","ignoreDestroy","pendingDestroy","classType","cursor","inputEnableChildren","onChildInputDown","onChildInputUp","onChildInputOver","onChildInputOut","enableBodyDebug","physicsSortDirection","onDestroy","cursorIndex","fixedToCamera","cameraOffset","hash","_sortProperty","RETURN_NONE","RETURN_TOTAL","RETURN_CHILD","SORT_ASCENDING","SORT_DESCENDING","silent","body","removeFromHash","updateZ","addToHash","inputEnabled","events","onAddedToGroup$dispatch","addAt","addMultiple","moveAll","getAt","createMultiple","quantity","singleKey","singleFrame","align","rows","columns","cellWidth","cellHeight","alignIn","resetCursor","next","previous","swap","child1","bringToTop","getIndex","sendToBack","moveUp","moveDown","xy","getByName","oldChild","newChild","hasProperty","operation","checkProperty","checkAlive","checkVisible","setAll","setAllChildren","checkAll","addAll","property","subAll","multiplyAll","divideAll","callAllExists","callback","existsValue","callbackFromArray","callAll","method","methodLength","contextLength","renderOrderID","predicate","checkExists","ArraySet","forEachExists","iterate","forEachAlive","forEachDead","sort","order","ascendingSortHandler","descendingSortHandler","customSort","sortHandler","returnType","getFirstExists","createIfNull","resetChild","getFirstAlive","getFirstDead","loadTexture","getTop","getBottom","getClosestTo","object","tempDistance","getFurthestFrom","countLiving","countDead","getRandom","ArrayUtils","getRandomItem","destroyPhase","onRemovedFromGroup$dispatch","group","destroyTexture","removeBetween","destroyChildren","soft","World","_definedSize","stateChange","setBounds","useBounds","between","Game","physicsConfig","isRunning","raf","net","Device","lockRender","stepping","pendingStep","stepCount","onBlur","onFocus","_paused","_codePaused","currentUpdateID","updatesThisFrame","_deltaTime","_lastCount","_spiraling","fpsProblemNotifier","forceSingleUpdate","_nextFpsNotification","enableDebug","RandomDataGenerator","now","whenReady","seed","ScaleManager","setUpRenderer","GameObjectFactory","GameObjectCreator","Cache","Loader","Time","TweenManager","Input","SoundManager","Particles","Create","Net","Debug","showDebugHeader","RequestAnimationFrame","stopFocus","focus","hideBanner","v","webAudio","chrome","webGL","contextRestored","cocoonJS","smoothed","addToDOM","preventDefault","clearGLTextures","updateLogic","desiredFpsMult","updateRender","slowMotion","desiredFps","slowStep","elapsed","timeStep","enableStep","disableStep","step","removeFromDOM","muteOnPause","setMute","cordova","iOS","unsetMute","hitCanvas","hitContext","moveCallbacks","customCandidateHandler","customCandidateHandlerContext","pollRate","enabled","multiInputOverride","MOUSE_TOUCH_COMBINE","speed","circle","maxPointers","tapRate","doubleTapRate","holdRate","justPressedRate","justReleasedRate","recordPointerHistory","recordRate","recordLimit","pointer1","pointer2","pointer3","pointer4","pointer5","pointer6","pointer7","pointer8","pointer9","pointer10","pointers","activePointer","mousePointer","keyboard","touch","mspointer","gamepad","resetLocked","onDown","onUp","onTap","onHold","minPriorityID","interactiveItems","_localPoint","_pollCounter","_oldPosition","_x","_y","MOUSE_OVERRIDES_TOUCH","TOUCH_OVERRIDES_MOUSE","MAX_POINTERS","Pointer","PointerMode","CURSOR","addPointer","Mouse","Touch","MSPointer","Keyboard","Gamepad","_onClickTrampoline","onClickTrampoline","setInteractiveCandidateHandler","addMoveCallback","deleteMoveCallback","TOUCH","hard","resetSpeed","startPointer","countActivePointers","updatePointer","identifier","move","stopPointer","limit","getPointer","isActive","getPointerFromIdentifier","getPointerFromId","pointerId","getLocalPosition","hitTest","localPoint","worldVisible","TileSprite","graphicsData","shape","processClickTrampolines","mouseDownCallback","mouseUpCallback","mouseOutCallback","mouseOverCallback","mouseWheelCallback","capture","button","wheelDelta","locked","stopOnGameOut","pointerLock","_onMouseDown","_onMouseMove","_onMouseUp","_onMouseOut","_onMouseOver","_onMouseWheel","_wheelEvent","NO_BUTTON","LEFT_BUTTON","MIDDLE_BUTTON","RIGHT_BUTTON","BACK_BUTTON","FORWARD_BUTTON","WHEEL_UP","WHEEL_DOWN","android","onMouseDown","onMouseMove","onMouseUp","_onMouseUpGlobal","onMouseUpGlobal","_onMouseOutGlobal","onMouseOutGlobal","onMouseOut","onMouseOver","onMouseWheel","wheelEvent","mouseMoveCallback","withinGame","leftButton","rightButton","bindEvent","deltaY","requestPointerLock","element","mozRequestPointerLock","webkitRequestPointerLock","_pointerLockChange","pointerLockChange","pointerLockElement","mozPointerLockElement","webkitPointerLockElement","releasePointerLock","exitPointerLock","mozExitPointerLock","webkitExitPointerLock","_stubsGenerated","makeBinder","defineProperties","detail","deltaX","wheelDeltaX","deltaZ","pointerDownCallback","pointerMoveCallback","pointerUpCallback","_onMSPointerDown","_onMSPointerMove","_onMSPointerUp","_onMSPointerUpGlobal","_onMSPointerOut","_onMSPointerOver","onPointerDown","onPointerMove","onPointerUp","onPointerUpGlobal","onPointerOut","onPointerOver","pointerType","DeviceButton","buttonCode","isDown","isUp","timeDown","timeUp","repeats","altKey","shiftKey","ctrlKey","onFloat","padFloat","justPressed","justReleased","pointerMode","CONTACT","middleButton","backButton","forwardButton","eraserButton","ERASER_BUTTON","_holdSent","_history","_nextDrop","_stateReset","clientX","clientY","pageX","pageY","screenX","screenY","rawMovementX","rawMovementY","movementX","movementY","isMouse","previousTapTime","totalTouches","msSinceLastClick","targetObject","interactiveCandidates","positionDown","positionUp","_clickTrampolines","_trampolineTargetObject","resetButtons","processButtonsDown","buttons","processButtonsUp","updateButtons","down","toLowerCase","totalActivePointers","_touchedHandler","processInteractiveObjects","shift","fromClick","pollLocked","mozMovementX","webkitMovementX","mozMovementY","webkitMovementY","isDragged","highestRenderOrderID","highestInputPriorityID","candidateTarget","currentNode","first","checked","validForInput","checkPointerDown","checkPointerOver","priorityID","swapTarget","newTarget","_pointerOutHandler","_pointerOverHandler","leave","currentPointers","addClickTrampoline","callbackArgs","trampolines","trampoline","_releasedHandler","resetMovement","touchLockCallbacks","touchStartCallback","touchMoveCallback","touchEndCallback","touchEnterCallback","touchLeaveCallback","touchCancelCallback","_onTouchStart","_onTouchMove","_onTouchEnd","_onTouchEnter","_onTouchLeave","_onTouchCancel","onTouchStart","onTouchMove","onTouchEnd","onTouchEnter","onTouchLeave","onTouchCancel","consumeDocumentTouches","_documentTouchMove","addTouchLockCallback","onEnd","removeTouchLockCallback","cb","changedTouches","InputHandler","useHandCursor","_setHandCursor","allowHorizontalDrag","allowVerticalDrag","snapOffset","snapOnDrag","snapOnRelease","snapX","snapY","snapOffsetX","snapOffsetY","pixelPerfectOver","pixelPerfectClick","pixelPerfectAlpha","draggable","boundsRect","boundsSprite","scaleLayer","dragOffset","dragFromCenter","dragStopBlocksInputUp","dragStartPoint","dragDistanceThreshold","dragTimeThreshold","downPoint","snapPoint","_dragPoint","_dragPhase","_pendingDrag","_dragTimePass","_dragDistancePass","_wasEnabled","_tempPoint","_pointerData","camX","camY","isOver","isOut","timeOver","timeOut","downDuration","onAddedToGroup","addedToGroup","onRemovedFromGroup","removedFromGroup","flagged","highestID","highestRenderID","includePixelPerfect","isPixelPerfect","pointerX","pointerY","pointerDown","pointerUp","pointerTimeDown","pointerTimeUp","pointerOver","pointerOut","pointerTimeOver","pointerTimeOut","pointerDragged","fastTest","checkPixel","_dx","_dy","startDrag","_draggedPointerID","updateDrag","sendEvent","onInputOver$dispatch","onInputOut$dispatch","onInputDown$dispatch","dragTimeElapsed","onInputUp$dispatch","stopDrag","fromStart","globalToLocalX","py","globalToLocalY","checkBoundsRect","checkBoundsSprite","onDragUpdate","justOver","delay","overDuration","justOut","enableDrag","lockCenter","pixelPerfect","alphaThreshold","disableDrag","onDragStart$dispatch","grid","boundsFluid","scaleFluidInversed","onDragStop$dispatch","setDragLock","allowHorizontal","allowVertical","enableSnap","onDrag","onRelease","disableSnap","_gamepadIndexMap","_rawPads","_active","_gamepadSupportAvailable","webkitGetGamepads","webkitGamepads","userAgent","getGamepads","_prevRawGamepadTypes","_prevTimestamps","onConnectCallback","onDisconnectCallback","onDownCallback","onUpCallback","onAxisCallback","onFloatCallback","_ongamepadconnected","_gamepaddisconnected","_gamepads","SinglePad","addCallbacks","callbacks","onConnect","onDisconnect","onAxis","_onGamepadConnected","onGamepadConnected","_onGamepadDisconnected","onGamepadDisconnected","newPad","connect","removedPad","disconnect","_pollGamepads","pad1","pollStatus","pad2","pad3","pad4","rawGamepads","gamepadsChanged","_rawPad","singlePad","validConnections","rawIndices","padIndices","connected","k","rawPad","setDeadZones","deadZone","BUTTON_0","BUTTON_1","BUTTON_2","BUTTON_3","BUTTON_4","BUTTON_5","BUTTON_6","BUTTON_7","BUTTON_8","BUTTON_9","BUTTON_10","BUTTON_11","BUTTON_12","BUTTON_13","BUTTON_14","BUTTON_15","AXIS_0","AXIS_1","AXIS_2","AXIS_3","AXIS_4","AXIS_5","AXIS_6","AXIS_7","AXIS_8","AXIS_9","XBOX360_A","XBOX360_B","XBOX360_X","XBOX360_Y","XBOX360_LEFT_BUMPER","XBOX360_RIGHT_BUMPER","XBOX360_LEFT_TRIGGER","XBOX360_RIGHT_TRIGGER","XBOX360_BACK","XBOX360_START","XBOX360_STICK_LEFT_BUTTON","XBOX360_STICK_RIGHT_BUTTON","XBOX360_DPAD_LEFT","XBOX360_DPAD_RIGHT","XBOX360_DPAD_UP","XBOX360_DPAD_DOWN","XBOX360_STICK_LEFT_X","XBOX360_STICK_LEFT_Y","XBOX360_STICK_RIGHT_X","XBOX360_STICK_RIGHT_Y","PS3XC_X","PS3XC_CIRCLE","PS3XC_SQUARE","PS3XC_TRIANGLE","PS3XC_L1","PS3XC_R1","PS3XC_L2","PS3XC_R2","PS3XC_SELECT","PS3XC_START","PS3XC_STICK_LEFT_BUTTON","PS3XC_STICK_RIGHT_BUTTON","PS3XC_DPAD_UP","PS3XC_DPAD_DOWN","PS3XC_DPAD_LEFT","PS3XC_DPAD_RIGHT","PS3XC_STICK_LEFT_X","PS3XC_STICK_LEFT_Y","PS3XC_STICK_RIGHT_X","PS3XC_STICK_RIGHT_Y","padParent","_padParent","_prevTimestamp","_buttons","_buttonsLen","_axes","_axesLen","getButton","timestamp","rawButtonVal","isNaN","processButtonDown","processButtonUp","processButtonFloat","axes","processAxisChange","triggerCallback","disconnectingIndex","axis","axisCode","buttonValue","Key","keycode","_enabled","keyCode","onHoldCallback","onHoldContext","_justDown","_justUp","processKeyDown","processKeyUp","upDuration","pressEvent","onPressCallback","_keys","_capture","_onKeyDown","_onKeyPress","_onKeyUp","_k","onPress","addKey","addKeyCapture","addKeys","removeKey","removeKeyCapture","createCursorKeys","up","KeyCode","processKeyPress","clearCaptures","String","fromCharCode","charCode","A","charCodeAt","B","C","D","E","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z","ZERO","TWO","THREE","FOUR","FIVE","SIX","SEVEN","EIGHT","NINE","NUMPAD_0","NUMPAD_1","NUMPAD_2","NUMPAD_3","NUMPAD_4","NUMPAD_5","NUMPAD_6","NUMPAD_7","NUMPAD_8","NUMPAD_9","NUMPAD_MULTIPLY","NUMPAD_ADD","NUMPAD_ENTER","NUMPAD_SUBTRACT","NUMPAD_DECIMAL","NUMPAD_DIVIDE","F1","F2","F3","F4","F5","F6","F7","F8","F9","F10","F11","F12","F13","F14","F15","COLON","EQUALS","COMMA","UNDERSCORE","PERIOD","QUESTION_MARK","TILDE","OPEN_BRACKET","BACKWARD_SLASH","CLOSED_BRACKET","QUOTES","BACKSPACE","TAB","CLEAR","ENTER","SHIFT","CONTROL","ALT","CAPS_LOCK","ESC","SPACEBAR","PAGE_UP","PAGE_DOWN","END","HOME","PLUS","MINUS","INSERT","DELETE","HELP","NUM_LOCK","match","Component","Angle","wrapAngle","Animation","play","frameRate","loop","killOnComplete","animations","AutoCull","autoCull","inCamera","checkWorldBounds","Bounds","alignTo","BringToTop","Core","install","components","previousPosition","Events","PhysicsBody","AnimationManager","LoadTexture","FixedToCamera","previousRotation","fresh","_exists","P2JS","removeFromWorld","customRender","Crop","cropRect","_crop","updateCrop","resetFrame","Delta","Destroy","onDestroy$dispatch","removeFrom","Video","onChangeSource","resizeFrame","BitmapText","_glyphs","_parent","_onDestroy","_onAddedToGroup","_onRemovedFromGroup","_onRemovedFromWorld","_onKilled","_onRevived","_onEnterBounds","_onOutOfBounds","_onInputOver","_onInputOut","_onInputDown","_onInputUp","_onDragStart","_onDragUpdate","_onDragStop","_onAnimationStart","_onAnimationComplete","_onAnimationLoop","onRemovedFromWorld","onKilled","onRevived","onOutOfBounds","onEnterBounds","onInputOver","onInputOut","onInputDown","onInputUp","onDragStart","onDragStop","onAnimationStart","onAnimationComplete","onAnimationLoop","backing","_fixedToCamera","Health","health","maxHealth","damage","kill","setHealth","heal","InCamera","InputEnabled","InWorld","outOfCameraBoundsKill","_outOfBoundsFired","onEnterBounds$dispatch","onOutOfBounds$dispatch","outOfBoundsKill","inWorld","LifeSpan","lifespan","physicsElapsedMS","revive","onRevived$dispatch","onKilled$dispatch","stopAnimation","BitmapData","hasFrameData","loadFrameData","getFrameData","frameData","Tilemap","TilemapLayer","img","base","frameName","Overlap","overlap","_reset","Reset","ScaleMinMax","scaleMin","scaleMax","checkTransform","setScaleMinMax","Smoothed","existing","weapon","Weapon","createBullets","creature","mesh","Creature","tween","physicsGroup","audio","audioSprite","addSprite","tileSprite","rope","text","Text","overFrame","outFrame","downFrame","upFrame","Button","emitter","maxParticles","Arcade","Emitter","retroFont","font","characterWidth","characterHeight","chars","charsPerRow","xSpacing","ySpacing","xOffset","yOffset","RetroFont","bitmapText","tilemap","tileWidth","tileHeight","addToCache","uuid","addRenderTexture","video","url","bitmapData","addBitmapData","Tween","preUpdatePhysics","preUpdateLifeSpan","preUpdateInWorld","preUpdateCore","_onOverFrame","_onOutFrame","_onDownFrame","_onUpFrame","onOverSound","onOutSound","onDownSound","onUpSound","onOverSoundMarker","onOutSoundMarker","onDownSoundMarker","onUpSoundMarker","onOverMouseOnly","justReleasedPreventsOver","freezeFrames","forceOut","setFrames","onInputOverHandler","onInputOutHandler","onInputDownHandler","onInputUpHandler","removedFromWorld","STATE_OVER","STATE_OUT","STATE_DOWN","STATE_UP","clearFrames","setStateFrame","switchImmediately","frameKey","changeStateFrame","setStateSound","marker","soundKey","markerKey","Sound","AudioSprite","playStateSound","setSounds","overSound","overMarker","downSound","downMarker","outSound","outMarker","upSound","upMarker","setOverSound","setOutSound","setDownSound","setUpSound","changedUp","ctx","imageData","FrameData","textureFrame","addFrame","Frame","disableTextureUpload","cls","_image","_pos","_size","_scale","_rotate","_alpha","prev","_anchor","_tempR","_tempG","_tempB","_circle","_swapCanvas","moveH","moveV","draw","addImage","processPixelRGB","pixel","createColor","unpackPixel","getPixel32","setPixel32","processPixel","replaceRGB","r1","g1","r2","g2","region","packPixel","setHSL","bHaveH","bHaveS","bHaveL","HSLtoRGB","shiftHSL","red","green","blue","immediate","LITTLE_ENDIAN","setPixel","getPixel","getPixelRGB","hsl","hsv","getPixels","getFirstPixel","scan","newWidth","newHeight","op","copyTransform","copyRect","drawGroup","drawGroupProxy","drawFull","renderGraphics","shadow","blur","shadowColor","shadowBlur","shadowOffsetX","shadowOffsetY","alphaMask","sourceRect","maskRect","blendSourceAtop","blendReset","extract","destination","prevFont","fillText","arc","lineWidth","stroke","textureLine","blendSourceOver","blendSourceIn","blendSourceOut","blendDestinationOver","blendDestinationIn","blendDestinationOut","blendDestinationAtop","blendXor","blendAdd","blendMultiply","blendScreen","blendOverlay","blendDarken","blendLighten","blendColorDodge","blendColorBurn","blendHardLight","blendSoftLight","blendDifference","blendExclusion","blendHue","blendSaturation","blendColor","blendLuminosity","getSmoothingEnabled","setSmoothingEnabled","getTransform","translateX","translateY","skewX","skewY","fillAlpha","lineColor","currentPath","boundsPadding","_localBounds","webGLDirty","cachedSpriteDirty","lineStyle","lineAlpha","drawShape","quadraticCurveTo","cpX","cpY","toX","toY","xa","ya","fromX","fromY","bezierCurveTo","cpX2","cpY2","dt","dt2","dt3","t2","t3","arcTo","mm","dd","cc","tt","k1","k2","j1","j2","qx","qy","startAngle","endAngle","anticlockwise","segments","sweep","segs","startX","startY","filling","theta","theta2","cTheta","sTheta","segMinus","remainder","real","fillColor","drawRoundedRect","drawCircle","drawEllipse","drawPolygon","path","clearDirty","updateCachedSpriteTexture","_prevTint","updateLocalBounds","tempPoint","RECT","RREC","CIRC","ELIP","cachedSprite","destroyCachedSprite","GraphicsData","POLY","_lineTint","_fillTint","PolyK","Triangulate","sign","tgs","avl","al","i0","i1","i2","ax","ay","bx","by","earFound","_convex","vi","_PointInTriangle","v0x","v0y","v1x","v1y","v2x","v2y","dot00","dot01","dot02","dot11","dot12","invDenom","EarCut","holeIndices","dim","hasHoles","outerLen","outerNode","linkedList","triangles","eliminateHoles","earcutLinked","clockwise","sum","insertNode","filterPoints","again","steiner","removeNode","ear","pass","indexCurve","isEarHashed","isEar","cureLocalIntersections","splitEarcut","pointInTriangle","minTX","minTY","maxTX","maxTY","minZ","zOrder","maxZ","nextZ","prevZ","locallyInside","isValidDiagonal","splitPolygon","list","queue","getLeftmost","compareX","eliminateHole","hole","findHoleBridge","hx","hy","tan","tanMin","sortLinked","q","tail","numMerges","pSize","qSize","inSize","leftmost","intersectsPolygon","middleInside","q1","q2","Node","an","bp","stencilBufferLimit","lastIndex","graphicsDataPool","switchMode","canDrawUsingSimple","buildPoly","buildComplexPoly","buildLine","buildRectangle","buildCircle","buildRoundedRectangle","upload","WebGLGraphicsData","rectData","verts","vertPos","tempPoints","rrectData","recPoints","quadraticBezierCurve","vecPos","getPt","n1","n2","perc","diff","xb","yb","circleData","totalSegs","seg","firstPoint","midPointX","midPointY","unshift","p1x","p1y","p2x","p2y","p3x","p3y","perpx","perpy","perp2x","perp2y","perp3x","perp3y","pdist","indexCount","indexStart","glPoints","glIndicies","updateGraphicsTint","kappa","ox","oy","xe","ye","xm","ym","maxRadius","tintR","tintG","tintB","drawTriangle","cull","triangle","cameraToFace","ab","faceNormal","drawTriangles","point1","point2","point3","renderXY","renderRawXY","textBounds","strokeColors","fontStyles","fontWeights","autoRound","useAdvancedWrap","_res","_text","_fontComponents","_lineSpacing","_charCount","setStyle","updateText","setShadow","shadowStroke","shadowFill","backgroundColor","boundsAlignH","boundsAlignV","strokeThickness","wordWrap","wordWrapWidth","maxLines","tabs","fontToComponents","fontStyle","fontVariant","fontWeight","fontSize","componentsToFont","outputText","runWordWrap","lines","lineWidths","maxLineWidth","fontProperties","determineFontProperties","drawnLines","measureLine","measureText","tab","section","snapToCeil","lineHeight","lineSpacing","textBaseline","lineCap","lineJoin","linePositionX","linePositionY","ascent","updateLine","updateShadow","strokeText","renderTabLine","snap","lineLength","letter","clearColors","clearFontValues","addColor","addStrokeColor","addFontStyle","addFontWeight","weight","precalculateWordWrap","wrappedLines","advancedWordWrap","basicWordWrap","linesCount","currentLineWidth","words","word","wordWithSpace","wordWidth","newWord","secondPart","spaceLeft","wordWidthWithSpace","updateFont","family","exec","fontFamily","setText","parseList","setTextBounds","properties","fontPropertiesCache","fontPropertiesCanvas","fontPropertiesContext","baseline","descent","imagedata","parseFloat","textWidth","textHeight","_prevAnchor","_maxWidth","_data","getBitmapFont","_font","_fontSize","_align","_tint","sourceWidth","sourceHeight","scanLine","lastSpace","wrappedWidth","prevCharCode","maxWidth","test","charAt","charData","kerning","xAdvance","cleanText","re","purgeGlyphs","kept","checkImageKey","characterSpacingX","characterSpacingY","characterPerRow","multiLine","autoUpperCase","customSpacingX","customSpacingY","fixedWidth","fontSet","grabData","currentX","currentY","updateFrameData","stamp","ALIGN_LEFT","ALIGN_RIGHT","ALIGN_CENTER","TEXT_SET1","TEXT_SET2","TEXT_SET3","TEXT_SET4","TEXT_SET5","TEXT_SET6","TEXT_SET7","TEXT_SET8","TEXT_SET9","TEXT_SET10","TEXT_SET11","setFixedWidth","lineAlignment","content","characterSpacing","allowLowerCase","buildRetroFontText","getLongestLine","pasteLine","longestLine","removeUnsupportedCharacters","stripCR","newString","aChar","code","updateOffset","diffX","diffY","frames","getFrames","newText","toUpperCase","_hasUpdateAnimation","_updateAnimationCallback","updateAnimation","_updateAnimation","difference","_scroll","def","physicsElapsed","autoScroll","stopScroll","deviceReadyAt","initialized","desktop","iOSVersion","node","nodeWebkit","electron","ejecta","crosswalk","chromeOS","linux","macOS","windows","windowsPhone","canvasBitBltShift","file","fileSystem","localStorage","worker","css3D","typedArray","vibration","getUserMedia","quirksMode","arora","chromeVersion","epiphany","firefox","firefoxVersion","ie","ieVersion","trident","tridentVersion","edge","mobileSafari","midori","opera","safari","safariVersion","webApp","silk","audioData","ogg","opus","mp3","wav","m4a","webm","dolby","oggVideo","h264Video","mp4Video","webmVideo","vp9Video","hlsVideo","iPhone","iPhone4","iPad","pixelRatio","littleEndian","support32bit","fullscreen","requestFullscreen","cancelFullscreen","fullscreenKeyboard","onInitialized","nonPrimer","readyCheck","_readyCheck","_monitor","_queue","readyState","setTimeout","_initialize","_checkOS","vita","kindle","RegExp","$1","_checkFeatures","getItem","error","WebGLRenderingContext","compatMode","webkitGetUserMedia","mozGetUserMedia","msGetUserMedia","oGetUserMedia","URL","webkitURL","mozURL","msURL","_checkInput","documentElement","maxTouchPoints","msPointerEnabled","pointerEnabled","_checkFullScreenSupport","fs","cfs","Element","_checkBrowser","$3","process","require","versions","_checkVideo","videoElement","canPlayType","_checkAudio","audioElement","major","minor","$2","_checkDevice","Int8Array","_checkIsLittleEndian","Uint8ClampedArray","Int32Array","_checkIsUint8ClampedImageData","vibrate","webkitVibrate","mozVibrate","msVibrate","elem","createImageData","_checkCSS3D","has3d","el","transforms","webkitTransform","OTransform","msTransform","MozTransform","insertBefore","getComputedStyle","getPropertyValue","canPlayAudio","canPlayVideo","isConsoleOpen","profile","profileEnd","isAndroidStockBrowser","matches","skipPool","display","msTouchAction","overflowHidden","getElementById","overflow","appendChild","parentNode","vendor","prefix","setImageRenderingCrisp","types","msInterpolationMode","setImageRenderingBicubic","forceSetTimeOut","vendors","requestAnimationFrame","cancelAnimationFrame","_isSetTimeOut","_onLoop","_timeOutID","updateSetTimeout","updateRAF","rafTime","timeToCall","clearTimeout","isSetTimeOut","isRAF","PI2","fuzzyEqual","epsilon","fuzzyLessThan","fuzzyGreaterThan","fuzzyCeil","val","fuzzyFloor","average","shear","snapTo","gap","snapToFloor","roundTo","place","pow","floorTo","ceilTo","angleBetween","angleBetweenY","angleBetweenPoints","angleBetweenPointsY","reverseAngle","angleRad","normalizeAngle","maxAdd","minSub","wrapValue","isOdd","isEven","minProperty","maxProperty","radians","linearInterpolation","bezierInterpolation","bernstein","catmullRomInterpolation","catmullRom","p0","factorial","res","p3","roundAwayFromZero","sinCosGenerator","sinAmplitude","cosAmplitude","frequency","frq","cosTable","sinTable","distanceSq","distancePow","clampBottom","within","mapLinear","smoothstep","smootherstep","percent","degreeToRadiansFactor","radianToDegreesFactor","degrees","seeds","s0","sow","integer","integerInRange","realInRange","normal","pick","ary","weightedPick","QuadTree","maxObjects","maxLevels","objects","nodes","_empty","subWidth","subHeight","populate","populateHandler","insert","retrieve","returnObjects","getHostName","location","hostname","checkDomainName","domain","updateQueryString","redirect","href","separator","getQueryString","parameter","keyValues","search","substring","decodeURI","decodeURIComponent","frameBased","_tweens","_add","easeMap","Power0","Easing","Power1","Power2","Power3","Power4","Linear","None","Quad","Quadratic","Out","Cubic","Quart","Quartic","Quint","Quintic","Sine","Sinusoidal","Expo","Exponential","Circ","Circular","Elastic","Back","Bounce","Quad.easeIn","In","Cubic.easeIn","Quart.easeIn","Quint.easeIn","Sine.easeIn","Expo.easeIn","Circ.easeIn","Elastic.easeIn","Back.easeIn","Bounce.easeIn","Quad.easeOut","Cubic.easeOut","Quart.easeOut","Quint.easeOut","Sine.easeOut","Expo.easeOut","Circ.easeOut","Elastic.easeOut","Back.easeOut","Bounce.easeOut","Quad.easeInOut","InOut","Cubic.easeInOut","Quart.easeInOut","Quint.easeInOut","Sine.easeInOut","Expo.easeInOut","Circ.easeInOut","Elastic.easeInOut","Back.easeInOut","Bounce.easeInOut","_pauseAll","_resumeAll","getAll","pendingDelete","_manager","addTweens","numTweens","isTweening","some","_pause","_resume","pauseAll","resumeAll","manager","timeline","timeScale","repeatCounter","onStart","onLoop","onRepeat","onChildComplete","onComplete","chainedTween","isPaused","_onUpdateCallback","_onUpdateCallbackContext","_pausedTime","_hasStarted","ease","yoyo","Default","TweenData","vEnd","loadValues","updateTweenData","repeatDelay","yoyoDelay","easing","interpolation","repeatAll","chain","startTime","status","PENDING","RUNNING","LOOPED","COMPLETE","generateData","vStart","vStartCache","vEndCache","repeatTotal","inReverse","easingFunction","interpolationFunction","interpolationContext","isFrom","yoyoCounter","ms","fps","blob","reversed","asin","prevTime","_desiredFps","suggestedFps","advancedTiming","fpsMin","fpsMax","msMin","msMax","pauseDuration","timeExpected","Timer","_frameCount","_elapsedAccumulator","_started","_timeLastSecond","_pauseStarted","_justResumed","_timers","timer","autoDestroy","previousDateNow","updateAdvancedTiming","updateTimers","elapsedSince","since","elapsedSecondsSince","running","expired","nextTick","timeCap","_pauseTotal","_now","_marked","_diff","_newTick","MINUTE","SECOND","HALF","QUARTER","repeatCount","tick","TimerEvent","clearEvents","clearPendingEvents","adjustEvents","baseTime","currentFrame","currentAnim","updateIfVisible","isLoaded","_frameData","_anims","_outputFrames","anim","copyFrameData","useNumericIndex","getFrameIndexes","validateFrames","checkFrameName","isPlaying","getAnimation","refreshFrame","getFrame","getFrameByName","_frameIndex","_frames","loopCount","isFinished","_pauseStartTime","_frameDiff","_frameSkip","onUpdate","isReversed","_timeLastFrame","_timeNextFrame","updateCurrentFrame","onAnimationStart$dispatch","reverseOnce","useLocalFrameIndex","frameIndex","dispatchComplete","onAnimationComplete$dispatch","onAnimationLoop$dispatch","signalUpdate","fromPlay","generateFrameNames","suffix","zeroPad","rotated","rotationDirection","spriteSourceSizeW","spriteSourceSizeH","setTrim","actualWidth","actualHeight","destX","destY","destWidth","destHeight","getRect","_frameNames","getFrameRange","AnimationParser","spriteSheet","frameMax","margin","spacing","row","column","JSONData","json","newFrame","filename","sourceSize","spriteSourceSize","JSONDataPyxel","signature","tileheight","tilewidth","JSONDataHash","XMLData","xml","getElementsByTagName","frameX","frameY","autoResolveURL","_cache","binary","bitmapFont","_urlMap","_urlResolver","_urlTemp","onSoundUnlock","_cacheMap","TEXTURE","SOUND","PHYSICS","BINARY","BITMAPFONT","JSON","XML","SHADER","RENDER_TEXTURE","addDefaultImage","addMissingImage","addCanvas","removeImage","_resolveURL","addSound","audioTag","decoded","isDecoding","touchLocked","addText","addPhysicsData","addTilemap","mapData","addBinary","binaryData","addBitmapFont","atlasData","atlasType","LoaderParser","jsonBitmapFont","xmlBitmapFont","addJSON","addXML","addVideo","isBlob","addShader","addSpriteSheet","addTextureAtlas","TEXTURE_ATLAS_XML_STARLING","TEXTURE_ATLAS_JSON_PYXEL","reloadSound","getSound","reloadSoundComplete","updateSound","decodedSound","isSoundDecoded","isSoundReady","checkKey","checkURL","checkCanvasKey","checkTextureKey","checkSoundKey","checkTextKey","checkPhysicsKey","checkTilemapKey","checkBinaryKey","checkBitmapDataKey","checkBitmapFontKey","checkJSONKey","checkXMLKey","checkVideoKey","checkShaderKey","checkRenderTextureKey","full","getTextureFrame","getSoundData","getText","getPhysicsData","fixtureKey","fixtures","fixture","getTilemapData","getBinary","getBitmapData","getJSON","getXML","getVideo","getShader","getRenderTexture","getBaseTexture","getFrameCount","getFrameByIndex","getPixiTexture","getPixiBaseTexture","getURL","getKeys","removeCanvas","removeFromPixi","removeSound","removeText","removePhysics","removeTilemap","removeBinary","removeBitmapData","removeBitmapFont","removeJSON","removeXML","removeVideo","removeShader","removeRenderTexture","removeSpriteSheet","removeTextureAtlas","atlas","baseURL","isLoading","preloadSprite","onLoadStart","onLoadComplete","onPackComplete","onFileStart","onFileComplete","onFileError","useXDomainRequest","_warnedAboutXDomainRequest","enableParallel","maxParallelDownloads","_withSyncPointDepth","_fileList","_flightQueue","_processingHead","_fileLoadStarted","_totalPackCount","_totalFileCount","_loadedPackCount","_loadedFileCount","TEXTURE_ATLAS_JSON_ARRAY","TEXTURE_ATLAS_JSON_HASH","PHYSICS_LIME_CORONA_JSON","PHYSICS_PHASER_JSON","setPreloadSprite","checkKeyExists","getAssetIndex","bestFound","loaded","loading","getAsset","fileIndex","addToFileList","overwrite","extension","syncPoint","currentFile","replaceInFileList","pack","images","urls","script","spritesheet","autoDecode","noAudio","jsonURL","jsonData","audiosprite","loadEvent","asBlob","CSV","TILED_JSON","LIME_CORONA_JSON","textureURL","atlasURL","parseXml","atlasJSONArray","atlasJSONHash","atlasXML","withSyncPoint","addSyncPoint","asset","removeFile","updateProgress","processLoadQueue","finishedLoading","requestUrl","requestObject","progress","syncblock","inflightLimit","processPack","loadFile","abnormal","asyncComplete","errorMessage","packData","transformUrl","xhrLoad","fileComplete","loadImageTag","getAudioURL","usingWebAudio","usingAudioTag","loadAudioTag","fileError","getVideoURL","loadVideoTag","jsonLoadComplete","xmlLoadComplete","csvLoadComplete","onload","onerror","controls","autoplay","videoLoadEvent","canplay","Audio","playThroughEvent","XDomainRequest","xhrLoadWithXDR","xhr","XMLHttpRequest","open","responseType","message","send","timeout","ontimeout","onprogress","videoType","uri","lastIndexOf","audioType","reason","loadNext","responseText","response","decode","language","defer","head","contentType","domparser","DOMParser","parseFromString","ActiveXObject","async","loadXML","totalLoadedFiles","totalLoadedPacks","progressFloat","info","common","getAttribute","letters","kernings","second","finalizeBitmapFont","_face","_lineHeight","_id","_xoffset","_yoffset","_xadvance","_second","_first","_amount","bitmapFontData","autoplayKey","sounds","spritemap","addMarker","connectToMaster","markers","totalDuration","currentTime","durationMS","stopTime","pausedPosition","pausedTime","currentMarker","fadeTween","pendingPlayback","override","allowMultiple","externalNode","masterGainNode","gainNode","_sound","masterGain","createGain","createGainNode","gain","soundHasUnlocked","onDecoded","onPlay","onStop","onMute","onMarkerComplete","_volume","_buffer","_muted","_tempMarker","_tempPosition","_tempVolume","_tempPause","_muteVolume","_tempLoop","_onDecodedEventDispatched","removeMarker","onEndedHandler","onended","isDecoded","loopFull","forceRestart","noteOff","createBufferSource","noteGrainOn","muted","mute","prevMarker","fadeIn","fadeTo","fadeOut","fadeComplete","updateGlobalVolume","globalVolume","onSoundDecode","onVolumeChange","onUnMute","channels","_codeMuted","_unlockSource","_sounds","_watchList","_watching","_watchCallback","_watchContext","disableAudio","disableWebAudio","audioContext","fakeiOSTouchLock","setTouchLock","unlock","noteOn","stopAll","soundData","decodeAudioData","setDecodedCallback","files","playbackState","PLAYING_STATE","FINISHED_STATE","removeByKey","close","dom","minWidth","minHeight","maxHeight","forceLandscape","forcePortrait","incorrectOrientation","_pageAlignHorizontally","_pageAlignVertically","onOrientationChange","enterIncorrectOrientation","leaveIncorrectOrientation","fullScreenTarget","_createdFullScreenTarget","onFullScreenInit","onFullScreenChange","onFullScreenError","screenOrientation","getScreenOrientation","scaleFactorInversed","aspectRatio","sourceAspectRatio","windowConstraints","compatibility","supportsFullScreen","orientationFallback","noMargins","scrollTo","forceMinimumDocumentHeight","canExpandParent","clickTrampoline","_scaleMode","NO_SCALE","_fullScreenScaleMode","parentIsWindow","parentScaleFactor","trackParentInterval","onSizeChange","onResize","onResizeContext","_pendingScaleMode","_fullScreenRestore","_gameSize","_userScaleFactor","_userScaleTrim","_lastUpdate","_updateThrottle","_updateThrottleReset","_parentBounds","_tempBounds","_lastReportedCanvasSize","_lastReportedGameSize","_booted","setupScale","EXACT_FIT","SHOW_ALL","RESIZE","USER_SCALE","compat","_orientationChange","orientationChange","_windowResize","windowResize","_fullScreenChange","fullScreenChange","_fullScreenError","fullScreenError","_gameResumed","setGameSize","FlexGrid","fullScreenScaleMode","getParentBounds","visualBounds","updateDimensions","queueUpdate","currentScaleMode","setUserScale","hScale","vScale","hTrim","vTrim","setResizeCallback","signalSizeChange","setMinMax","prevThrottle","prevWidth","prevHeight","boundsChanged","orientationChanged","updateOrientationState","updateLayout","throttle","updateScalingAndBounds","forceOrientation","classifyOrientation","orientation","previousOrientation","previouslyIncorrect","isLandscape","isPortrait","changed","correctnessChanged","scrollTop","reflowGame","setMaximum","setExactFit","isFullScreen","boundingParent","setShowAll","resetCanvas","reflowCanvas","layoutBounds","clientRect","getBoundingClientRect","parentRect","offsetParent","wc","windowBounds","alignCanvas","parentBounds","canvasBounds","currentEdge","targetEdge","marginLeft","marginRight","marginTop","marginBottom","pageAlignHorizontally","pageAlignVertically","cssWidth","cssHeight","expanding","multiplier","createFullScreenTarget","fsTarget","background","startFullScreen","allowTrampoline","cleanupCreatedTarget","initData","targetElement","ALLOW_KEYBOARD_INPUT","stopFullScreen","prepScreenMode","enteringFullscreen","createdTarget","scaleSprite","letterBox","scaleX1","scaleY1","scaleX2","scaleY2","scaleOnWidth","bmd","columnWidth","renderShadow","currentAlpha","scaleManager","currentColor","soundInfo","cameraInfo","hideIfUp","downColor","upColor","worldX","worldY","spriteInputInfo","justDown","justUp","inputInfo","spriteBounds","filled","rectangle","ropeSegments","self","segment","spriteInfo","spriteCoords","lineInfo","geom","forceType","quadTree","quadtree","Body","NINJA","Ninja","BOX2D","Box2D","renderBody","bodyInfo","renderBodyInfo","box2d","box2dWorld","renderDebugDraw","box2dBody","displayList","box","scrollY","scrollLeft","scrollX","clientTop","clientLeft","cushion","calibrate","coords","getAspectRatio","inLayoutViewport","primaryFallback","screen","mozOrientation","msOrientation","matchMedia","documentBounds","pageXOffset","pageYOffset","treatAsDesktop","clientWidth","clientHeight","offsetWidth","scrollWidth","offsetHeight","scrollHeight","getByKey","randomIndex","removeRandomItem","shuffle","transposeMatrix","sourceRowCount","sourceColCount","rotateMatrix","findClosest","arr","NaN","low","high","numberArray","numberArrayStep","LinkedList","entity","palettes",1,2,3,4,5,6,7,8,9,"PALETTE_ARNE","PALETTE_JMP","PALETTE_CGA","PALETTE_C64","PALETTE_JAPANESE_MACHINE","pixelWidth","pixelHeight","palette","boundsCustom","boundsFull","boundsNone","positionCustom","positionFluid","positionFull","positionNone","scaleCustom","scaleFluid","scaleFull","scaleNone","customWidth","customHeight","customOffsetX","customOffsetY","ratioH","ratioV","layers","createCustomLayer","layer","FlexLayer","createFluidLayer","createFullLayer","createFixedLayer","persist","fitSprite","topLeft","topMiddle","topRight","bottomLeft","bottomMiddle","bottomRight","RGBtoHSL","RGBtoHSV","fromRGBA","toRGBA","hueToColor","HSVtoRGB","color32","getColor","getColor32","RGBtoString","componentToHex","hexToRGB","hexToColor","webToColor","web","tempColor","getRGB","HSVColorWheel","HSLColorWheel","interpolateColor","color1","color2","steps","currentStep","src1","src2","interpolateColorWithRGB","or","og","ob","interpolateRGB","getRandomColor","getWebRGB","getAlpha","getAlphaFloat","getRed","getGreen","getBlue","blendNormal","blendAverage","blendSubtract","blendNegation","blendLinearDodge","blendLinearBurn","blendLinearLight","blendVividLight","blendPinLight","blendHardMix","blendReflect","blendGlow","blendPhoenix","arcade","ninja","chipmunk","matter","CHIPMUNK","MATTERJS","P2","Matter","startSystem","system","enableAABB","gravity","checkCollision","OVERLAP_BIAS","forceX","sortDirection","LEFT_RIGHT","skipQuadTree","_total","SORT_NONE","RIGHT_LEFT","TOP_BOTTOM","BOTTOM_TOP","updateMotion","velocityDelta","computeVelocity","angularVelocity","angularAcceleration","angularDrag","maxAngular","velocity","acceleration","drag","maxVelocity","allowGravity","object1","object2","overlapCallback","processCallback","collideHandler","collide","collideCallback","sortLeftRight","sortRightLeft","sortTopBottom","sortBottomTop","overlapOnly","collideGroupVsSelf","collideSpriteVsSprite","collideSpriteVsGroup","collideSpriteVsTilemapLayer","collideGroupVsGroup","collideGroupVsTilemapLayer","sprite1","sprite2","separate","items","group1","group2","body1","body2","resultX","resultY","separateX","separateY","getOverlapX","maxOverlap","deltaAbsX","embedded","touching","none","overlapX","getOverlapY","deltaAbsY","overlapY","immovable","customSeparateX","bounce","moves","friction","nv1","mass","nv2","avg","customSeparateY","getObjectsUnderPointer","getObjectsAtLocation","callbackArg","moveToObject","maxTime","distanceBetween","moveToPointer","angleToPointer","distanceToPointer","moveToXY","distanceToXY","velocityFromAngle","velocityFromRotation","accelerationFromRotation","accelerateToObject","xSpeedMax","ySpeedMax","accelerateToPointer","accelerateToXY","angleToXY","worldAngleToPointer","allowRotation","preRotation","newVelocity","deltaMax","worldBounce","facing","collideWorldBounds","any","wasTouching","blocked","tilePadding","syncBounds","isMoving","stopVelocityOnCollide","moveTimer","moveDistance","moveDuration","moveTarget","moveEnd","onMoveComplete","movementCallback","movementCallbackContext","_sx","_sy","updateBounds","asx","asy","updateMovement","collided","stopMovement","stopVelocity","check","moveFrom","onFloor","onCeiling","onWall","TilemapCollision","TILE_BIAS","tilemapLayer","getTiles","separateTile","tile","tilemapLayerOffsetX","tilemapLayerOffsetY","collisionCallback","collisionCallbackContext","faceLeft","faceRight","faceTop","faceBottom","tileCheckX","tileCheckY","collideRight","collideLeft","processTileSeparationX","collideDown","collideUp","processTileSeparationY","ImageCollection","firstgid","imageWidth","imageHeight","imageMargin","imageSpacing","containsImageIndex","imageIndex","gid","Tile","flipped","scanned","setCollisionCallback","setCollision","resetCollision","isInteresting","collides","faces","TilemapParser","version","widthInPixels","heightInPixels","tilesets","imagecollections","tiles","collideIndexes","collision","currentLayer","debugMap","_results","_tempA","NORTH","EAST","SOUTH","WEST","setTileSize","createBlankLayer","addTilesetImage","tileset","tileMargin","tileSpacing","getTilesetIndex","setImage","newSet","Tileset","countX","countY","createFromObjects","CustomClass","adjustY","found","createFromTiles","replacements","getLayer","customClass","lw","lh","createLayer","pixiTest","getLayerIndex","TilemapLayerGL","indexes","bodies","getImageIndex","setTileIndexCallback","setTileLocationCallback","recalculate","setCollisionByIndex","calculateFaces","setCollisionBetween","setCollisionByExclusion","setPreventRecalculate","preventingRecalculate","needToRecalculate","above","below","getTileAbove","getTileBelow","getTileLeft","getTileRight","setLayer","hasTile","removeTile","removeTileWorldXY","putTile","putTileWorldXY","searchTileIndex","getTile","nonNull","getTileWorldXY","paste","tileblock","tileA","tileB","swapHandler","removeAllLayers","dump","txt","map","renderSettings","enableScrollDelta","overdrawRatio","copyCanvas","debugSettings","missingImageFill","debuggedTileOverfill","forceFullRedraw","debugAlpha","facingEdgeStroke","collidingTileOverfill","scrollFactorX","scrollFactorY","rayStepRate","_wrap","_mc","renderWidth","renderHeight","_scrollX","_scrollY","ensureSharedCopyCanvas","sharedCopyCanvas","resizeWorld","_fixX","_unfixX","_fixY","_unfixY","getTileX","getTileY","getTileXY","getRayCastTiles","interestingFace","coord","fetchAll","wy","wx","resolveTileset","tileIndex","setIndex","containsTileIndex","resetTilesetCache","setScale","xScale","yScale","shiftCanvas","copyW","copyH","copyContext","renderRegion","lastAlpha","xmax","ymax","baseX","baseY","normStartX","normStartY","tileColor","renderDeltaScroll","shiftX","shiftY","renderW","renderH","trueTop","trueBottom","trueLeft","trueRight","renderFull","redrawAll","mc","renderDebug","INSERT_NULL","getEmptyData","parseCSV","parseTiledJSON","fields","sliced","curl","compression","encoding","binaryString","atob","bytes","opacity","flippedVal","curi","tileproperties","tileProperties","updateTileData","imagewidth","imageheight","newCollection","ti","curo","polyline","polygon","ellipse","sid","drawCoords","coordIndex","setSpacing","rowCount","colCount","Particle","autoScale","scaleData","_s","autoAlpha","alphaData","_a","onEmit","setAlphaData","setScaleData","emitters","ID","minParticleSpeed","maxParticleSpeed","minParticleScale","maxParticleScale","minRotation","maxRotation","minParticleAlpha","maxParticleAlpha","particleClass","particleDrag","on","particleAnchor","emitX","emitY","particleBringToTop","particleSendToBack","_minParticleScale","_maxParticleScale","_quantity","_timer","_counter","_flowQuantity","_flowTotal","_explode","emitParticle","makeParticles","particle","rndKey","rndFrame","explode","flow","forceQuantity","setXSpeed","setYSpeed","setRotation","setAlpha","rate","tweenData","at","bullets","autoExpandBulletsGroup","autofire","shots","fireLimit","fireRate","fireRateVariance","fireFrom","fireAngle","bulletInheritSpriteSpeed","bulletAnimation","bulletFrameRandom","bulletFrameCycle","bulletWorldWrap","bulletWorldWrapPadding","bulletAngleOffset","bulletAngleVariance","bulletSpeed","bulletSpeedVariance","bulletLifespan","bulletKillDistance","bulletGravity","bulletRotateToVelocity","bulletKey","bulletFrame","_bulletClass","Bullet","_bulletCollideWorldBounds","_bulletKillType","KILL_WORLD_BOUNDS","customBody","bulletBounds","bulletFrames","bulletFrameIndex","anims","onFire","onKill","onFireLimit","trackedSprite","trackedPointer","trackRotation","trackOffset","_nextFire","KILL_NEVER","KILL_LIFESPAN","KILL_DISTANCE","KILL_WEAPON_BOUNDS","KILL_CAMERA_BOUNDS","KILL_STATIC_BOUNDS","killAll","resetShots","newLimit","fire","trackSprite","trackPointer","moveX","moveY","bullet","bulletManager","killType","bulletKillType","killDistance","rotateToVelocity","bodyDirty","bulletCollideWorldBounds","fireAtPointer","fireAtSprite","fireAtXY","setBulletBodyOffset","setBulletFrames","cycle","addBulletAnimation","debugBodies","onAccess","onError","onTimeout","videoStream","isStreaming","retryLimit","retry","retryInterval","_retryID","_pending","_autoplay","_endCallback","_playCallback","_video","createVideoFromBlob","videoWidth","videoHeight","createVideoFromURL","snapshot","connectToMediaStream","stream","startMediaStream","captureAudio","removeVideoElement","setAttribute","getUserMediaTimeout","getUserMediaSuccess","getUserMediaError","mozSrcObject","createObjectURL","onloadeddata","checkStream","checkVideoProgress","change","playbackRate","setPause","setResume","playHandler","getTracks","track","playing","ended","changeSource","grab","hasChildNodes","firstChild","removeAttribute"],"mappings":"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"} \ No newline at end of file +{"version":3,"sources":["phaser-arcade-physics.js"],"names":["root","this","PIXI","game","WEBGL_RENDERER","CANVAS_RENDERER","VERSION","_UID","Float32Array","Uint16Array","Uint32Array","ArrayBuffer","Array","PI_2","Math","PI","RAD_TO_DEG","DEG_TO_RAD","RETINA_PREFIX","DisplayObject","position","Point","scale","pivot","rotation","alpha","visible","hitArea","renderable","parent","stage","worldAlpha","worldTransform","Matrix","worldPosition","worldScale","worldRotation","filterArea","_sr","_cr","_bounds","Rectangle","_currentBounds","_mask","_cacheAsBitmap","_cacheIsDirty","prototype","constructor","destroy","children","i","length","_destroyCachedSprite","updateTransform","p","world","a","b","c","d","tx","ty","pt","wt","rotationCache","sin","cos","x","y","set","sqrt","atan2","transformCallback","call","transformCallbackContext","setStageReference","preUpdate","generateTexture","resolution","scaleMode","renderer","bounds","getLocalBounds","renderTexture","RenderTexture","width","height","_tempMatrix","render","updateCache","_generateCachedSprite","toGlobal","apply","toLocal","from","applyInverse","_renderCachedSprite","renderSession","_cachedSprite","gl","Sprite","_renderWebGL","_renderCanvas","max","ceil","texture","resize","tempFilters","_filters","filters","anchor","displayObjectUpdateTransform","Object","defineProperties","get","value","worldVisible","item","mask","isMask","isArray","passes","filterPasses","j","push","_filterBlock","target","blendMode","blendModes","MULTIPLY","NORMAL","cacheAsBitmap","DisplayObjectContainer","ignoreChildInput","create","defineProperty","_width","_height","addChild","child","addChildAt","index","removeChild","splice","Error","swapChildren","child2","index1","getChildIndex","index2","indexOf","setChildIndex","currentIndex","getChildAt","removeChildAt","removeStageReference","undefined","removeChildren","beginIndex","endIndex","begin","end","range","removed","displayObjectContainerUpdateTransform","getBounds","EmptyRectangle","childBounds","childMaxX","childMaxY","minX","Infinity","minY","maxX","maxY","childVisible","matrixCache","identityMatrix","spriteBatch","flush","filterManager","pushFilter","stop","maskManager","pushMask","start","popMask","popFilter","Texture","emptyTexture","tint","cachedTint","tintedTexture","shader","exists","baseTexture","hasLoaded","onTextureUpdate","frame","setTexture","destroyBase","skipRender","valid","matrix","w0","w1","h0","h1","temp","x1","y1","x2","y2","x3","y3","x4","y4","crop","currentBlendMode","context","globalCompositeOperation","blendModesCanvas","globalAlpha","smoothProperty","scaleModes","LINEAR","dx","trim","dy","shakeX","shakeY","roundPixels","setTransform","cw","ch","requiresReTint","CanvasTinter","getTintedTexture","drawImage","cx","cy","source","SpriteBatch","textureThing","ready","initWebGL","fastSpriteBatch","WebGLFastSpriteBatch","setContext","shaderManager","setShader","fastShader","transform","isRotated","childTransform","hex2rgb","hex","rgb2hex","rgb","canUseNewCanvasBlendModes","document","pngHead","pngEnd","magenta","Image","src","yellow","canvas","CanvasPool","getContext","getImageData","data","remove","getNextPowerOfTwo","number","result","isPowerOfTwo","idx","getFirst","container","createElement","pool","removeByCanvas","getTotal","getFree","initDefaultShaders","CompileVertexShader","shaderSrc","_CompileShader","VERTEX_SHADER","CompileFragmentShader","FRAGMENT_SHADER","shaderType","join","createShader","shaderSource","compileShader","getShaderParameter","COMPILE_STATUS","window","console","log","getShaderInfoLog","compileProgram","vertexSrc","fragmentSrc","fragmentShader","vertexShader","shaderProgram","createProgram","attachShader","linkProgram","getProgramParameter","LINK_STATUS","getProgramInfoLog","PixiShader","program","textureCount","firstRun","dirty","attributes","init","defaultVertexSrc","useProgram","uSampler","getUniformLocation","projectionVector","offsetVector","dimensions","aVertexPosition","getAttribLocation","aTextureCoord","colorAttribute","key","uniforms","uniformLocation","initUniforms","uniform","type","_init","initSampler2D","glMatrix","glValueLength","glFunc","uniformMatrix2fv","uniformMatrix3fv","uniformMatrix4fv","activeTexture","bindTexture","TEXTURE_2D","_glTextures","id","textureData","magFilter","minFilter","wrapS","CLAMP_TO_EDGE","wrapT","format","LUMINANCE","RGBA","repeat","REPEAT","pixelStorei","UNPACK_FLIP_Y_WEBGL","flipY","border","texImage2D","UNSIGNED_BYTE","texParameteri","TEXTURE_MAG_FILTER","TEXTURE_MIN_FILTER","TEXTURE_WRAP_S","TEXTURE_WRAP_T","uniform1i","syncUniforms","transpose","z","w","_dirty","instances","updateTexture","deleteProgram","PixiFastShader","uMatrix","aPositionCoord","aScale","aRotation","StripShader","translationMatrix","attribute","PrimitiveShader","tintColor","ComplexPrimitiveShader","color","glContexts","WebGLRenderer","defaultRenderer","transparent","autoResize","preserveDrawingBuffer","clearBeforeRender","view","_contextOptions","antialias","premultipliedAlpha","stencil","projection","offset","WebGLShaderManager","WebGLSpriteBatch","WebGLMaskManager","WebGLFilterManager","stencilManager","WebGLStencilManager","blendModeManager","WebGLBlendModeManager","drawCount","initContext","mapBlendModes","glContextId","disable","DEPTH_TEST","CULL_FACE","enable","BLEND","contextLost","viewport","bindFramebuffer","FRAMEBUFFER","clearColor","_bgColor","r","g","clear","COLOR_BUFFER_BIT","camera","_shake","renderDisplayObject","displayObject","buffer","setBlendMode","style","createTexture","UNPACK_PREMULTIPLY_ALPHA_WEBGL","NEAREST","mipmap","LINEAR_MIPMAP_LINEAR","NEAREST_MIPMAP_NEAREST","generateMipmap","_powerOf2","blendModesWebGL","modes","ONE","ONE_MINUS_SRC_ALPHA","ADD","SRC_ALPHA","DST_ALPHA","DST_COLOR","SCREEN","OVERLAY","DARKEN","LIGHTEN","COLOR_DODGE","COLOR_BURN","HARD_LIGHT","SOFT_LIGHT","DIFFERENCE","EXCLUSION","HUE","SATURATION","COLOR","LUMINOSITY","blendModeWebGL","blendFunc","maskData","WebGLGraphics","updateGraphics","_webGL","pushStencil","popStencil","stencilStack","reverse","count","graphics","webGLData","bindGraphics","STENCIL_TEST","STENCIL_BUFFER_BIT","level","colorMask","stencilFunc","ALWAYS","stencilOp","KEEP","INVERT","mode","drawElements","TRIANGLE_FAN","indices","UNSIGNED_SHORT","EQUAL","DECR","INCR","TRIANGLE_STRIP","_currentGraphics","complexPrimitiveShader","uniform1f","toArray","uniform2f","uniform3fv","bindBuffer","ARRAY_BUFFER","vertexAttribPointer","FLOAT","ELEMENT_ARRAY_BUFFER","indexBuffer","primitiveShader","pop","maxAttibs","attribState","tempAttribState","stack","defaultShader","stripShader","setAttribs","attribs","attribId","enableVertexAttribArray","disableVertexAttribArray","_currentId","currentShader","vertSize","size","numVerts","numIndices","vertices","positions","colors","lastIndexCount","drawing","currentBatchSize","currentBaseTexture","textures","shaders","sprites","AbstractFilter","vertexBuffer","createBuffer","bufferData","STATIC_DRAW","DYNAMIC_DRAW","sprite","uvs","_uvs","aX","aY","x0","y0","renderTilingSprite","tilingTexture","TextureUvs","h","tilePosition","tileScaleOffset","offsetX","offsetY","scaleX","tileScale","scaleY","TEXTURE0","stride","bufferSubData","subarray","nextTexture","nextBlendMode","nextShader","batchSize","blendSwap","shaderSwap","skip","renderBatch","startIndex","TRIANGLES","deleteBuffer","maxSize","renderSprite","filterStack","texturePool","initShaderBuffers","filterBlock","_filterArea","_previous_stencil_mgr","filter","FilterTexture","padding","frameBuffer","_glFilterTexture","vertexArray","uvBuffer","uvArray","inputTexture","outputTexture","filterPass","applyFilterPass","sizeX","sizeY","currentFilter","colorBuffer","colorArray","createFramebuffer","DEFAULT","framebufferTexture2D","COLOR_ATTACHMENT0","renderBuffer","createRenderbuffer","bindRenderbuffer","RENDERBUFFER","framebufferRenderbuffer","DEPTH_STENCIL_ATTACHMENT","renderbufferStorage","DEPTH_STENCIL","deleteFramebuffer","deleteTexture","CanvasBuffer","clearRect","CanvasMaskManager","save","cacheAlpha","CanvasGraphics","renderGraphicsMask","clip","restore","tintMethod","tintWithMultiply","fillStyle","toString","substr","fillRect","tintWithPerPixel","rgbValues","pixelData","pixels","canHandleAlpha","putImageData","checkInverseAlpha","s1","s2","canUseMultiply","CanvasRenderer","refresh","Phaser","Canvas","getSmoothingPrefix","navigator","isCocoonJS","screencanvas","rgba","removeView","useNew","BaseTexture","complete","naturalWidth","naturalHeight","forceLoaded","unloadFromGPU","updateSourceImage","newSrc","warn","glTexture","fromCanvas","TextureSilentFail","noFrame","isTiling","requiresUpdate","setFrame","onBaseTextureLoaded","_updateUvs","tw","th","textureBuffer","renderWebGL","renderCanvas","tempMatrix","updateBase","identity","translate","append","realResolution","getImage","image","getBase64","getCanvas","toDataURL","webGLPixels","Uint8Array","readPixels","tempCanvas","canvasData","Strip","canvasPadding","drawMode","DrawModes","_vertexBuffer","_initWebGL","_renderStrip","_indexBuffer","_uvBuffer","_colorBuffer","_renderCanvasTriangleStrip","_renderCanvasTriangles","_renderCanvasDrawTriangle","index0","textureSource","textureWidth","textureHeight","u0","u1","u2","v0","v1","v2","paddingX","paddingY","centerX","centerY","normX","normY","dist","beginPath","moveTo","lineTo","closePath","delta","deltaA","deltaB","deltaC","deltaD","deltaE","deltaF","renderStripFlat","strip","fill","updateFrame","n","rawX","rawY","Rope","points","lastPoint","point","amount","total","nextPoint","perp","ratio","perpLength","num","TilingSprite","textureDebug","canvasBuffer","tilePattern","refreshTexture","frameWidth","frameHeight","generateTilingTexture","needsUpdate","createPattern","sessionBlendMode","forcePowerOfTwo","targetWidth","_frame","sourceSizeW","targetHeight","sourceSizeH","trimmed","spriteSourceSizeX","spriteSourceSizeY","strokeStyle","strokeRect","exports","module","define","amd","WheelEventProxy","scaleFactor","deltaMode","_scaleFactor","_deltaMode","originalEvent","GAMES","AUTO","CANVAS","WEBGL","HEADLESS","NONE","LEFT","RIGHT","UP","DOWN","SPRITE","BUTTON","IMAGE","GRAPHICS","TEXT","TILESPRITE","BITMAPTEXT","GROUP","RENDERTEXTURE","TILEMAP","TILEMAPLAYER","EMITTER","POLYGON","BITMAPDATA","CANVAS_FILTER","WEBGL_FILTER","ELLIPSE","SPRITEBATCH","RETROFONT","POINTER","ROPE","CIRCLE","RECTANGLE","LINE","MATRIX","POINT","ROUNDEDRECTANGLE","CREATURE","VIDEO","PENDING_ATLAS","HORIZONTAL","VERTICAL","LANDSCAPE","PORTRAIT","ANGLE_UP","ANGLE_DOWN","ANGLE_LEFT","ANGLE_RIGHT","ANGLE_NORTH_EAST","ANGLE_NORTH_WEST","ANGLE_SOUTH_EAST","ANGLE_SOUTH_WEST","TOP_LEFT","TOP_CENTER","TOP_RIGHT","LEFT_TOP","LEFT_CENTER","LEFT_BOTTOM","CENTER","RIGHT_TOP","RIGHT_CENTER","RIGHT_BOTTOM","BOTTOM_LEFT","BOTTOM_CENTER","BOTTOM_RIGHT","trunc","floor","Function","bind","slice","thisArg","bound","args","boundArgs","concat","arguments","TypeError","F","proto","arg","forEach","fun","t","len","CheapArray","assert","Utils","reverseString","string","split","getProperty","obj","prop","parts","last","l","current","setProperty","chanceRoll","chance","random","randomChoice","choice1","choice2","parseDimension","dimension","f","px","parseInt","innerWidth","innerHeight","pad","str","dir","padlen","right","left","isPlainObject","nodeType","hasOwnProperty","e","extend","options","name","copy","copyIsArray","clone","deep","mixinPrototype","mixin","replace","mixinKeys","keys","to","o","childNodes","cloneNode","Circle","diameter","_diameter","_radius","circumference","out","u","radius","setTo","copyFrom","copyTo","dest","distance","round","output","contains","circumferencePoint","angle","asDegrees","offsetPoint","top","bottom","equals","intersects","degToRad","intersectsRectangle","abs","halfWidth","xDist","halfHeight","yDist","xCornerDist","yCornerDist","xCornerDistSq","yCornerDistSq","maxCornerDistSq","Ellipse","normx","normy","Line","fromSprite","startSprite","endSprite","useCenter","center","fromAngle","rotate","rotateAround","line","asSegment","intersectsPoints","reflect","midPoint","centerOn","add","pointOnLine","pointOnSegment","xMin","min","xMax","yMin","yMax","coordinatesOnLine","stepRate","results","sx","sy","err","e2","wrap","a1","a2","b1","b2","c1","c2","denom","uc","ua","ub","rect","bx1","by1","bx2","by2","normalAngle","fromArray","array","pos","newPos","tx1","d1","invert","subtract","multiply","divide","clampX","clamp","clampY","radToDeg","getMagnitude","getMagnitudeSq","setMagnitude","magnitude","normalize","isZero","m","dot","cross","rperp","normalRightHand","negative","multiplyAdd","s","interpolate","project","amt","projectUnit","centroid","pointslength","parse","xProp","yProp","Polygon","area","_points","closed","flattened","toNumberArray","flatten","inside","ix","iy","jx","jy","Number","MAX_VALUE","calculateArea","p1","p2","avgHeight","floorAll","ceilAll","inflate","containsRect","intersection","intersectsRaw","tolerance","union","randomX","randomY","getPoint","empty","inflatePoint","containsRaw","rx","ry","rw","rh","containsPoint","volume","sameDimensions","aabb","NEGATIVE_INFINITY","POSITIVE_INFINITY","RoundedRectangle","Camera","deadzone","roundPx","atLimit","totalInView","lerp","onShakeComplete","Signal","onFlashComplete","onFadeComplete","fx","_targetPosition","_edge","_position","intensity","duration","horizontal","vertical","shakeBounds","_fxDuration","_fxType","FOLLOW_LOCKON","FOLLOW_PLATFORMER","FOLLOW_TOPDOWN","FOLLOW_TOPDOWN_TIGHT","SHAKE_BOTH","SHAKE_HORIZONTAL","SHAKE_VERTICAL","ENABLE_FX","boot","Graphics","follow","lerpX","lerpY","helper","unfollow","focusOn","setPosition","focusOnXY","shake","force","direction","flash","beginFill","drawRect","endFill","fade","update","updateFX","updateShake","checkBounds","time","elapsedMS","dispatch","rnd","frac","updateTarget","math","linear","setBoundsToWorld","vx","vw","vy","vh","setSize","reset","resetFX","State","make","cache","input","load","sound","state","tweens","particles","physics","preload","loadUpdate","loadRender","preRender","paused","resumed","pauseUpdate","shutdown","StateManager","pendingState","states","_pendingState","_clearWorld","_clearCache","_created","_args","onStateChange","onInitCallback","onPreloadCallback","onCreateCallback","onUpdateCallback","onRenderCallback","onResizeCallback","onPreRenderCallback","onLoadUpdateCallback","onLoadRenderCallback","onPausedCallback","onResumedCallback","onPauseUpdateCallback","onShutDownCallback","onPause","pause","onResume","resume","autoStart","newState","isBooted","callbackContext","clearWorld","clearCache","checkState","restart","dummy","previousStateKey","clearCurrentState","setCurrentState","totalQueuedFiles","totalQueuedPacks","loadComplete","removeAll","debug","link","unlink","_kickstart","getCurrentState","elapsedTime","renderType","_bindings","_prevParams","memorize","_shouldPropagate","active","_boundDispatch","validateListener","listener","fnName","_registerListener","isOnce","listenerContext","priority","binding","prevIndex","_indexOfListener","SignalBinding","_addBinding","execute","_priority","cur","_listener","has","addOnce","_destroy","getNumListeners","halt","bindings","paramsArr","forget","dispose","_this","signal","_isOnce","_signal","callCount","params","handlerReturn","detach","isBound","getListener","getSignal","Filter","prevPoint","Date","mouse","date","getFullYear","getMonth","getDate","getHours","getMinutes","getSeconds","sampleRate","iChannel0","iChannel1","iChannel2","iChannel3","setResolution","pointer","toFixed","totalElapsedSeconds","addToWorld","anchorX","anchorY","Plugin","hasPreUpdate","hasUpdate","hasPostUpdate","hasRender","hasPostRender","postRender","PluginManager","plugins","_len","_i","plugin","postUpdate","Stage","disableVisibilityChange","currentRenderOrderID","_hiddenVar","_onChange","config","parseConfig","setBackgroundColor","DOM","getOffset","setUserSelect","setTouchAction","checkVisibility","webkitHidden","mozHidden","msHidden","hidden","event","visibilityChange","addEventListener","onblur","onfocus","onpagehide","onpageshow","device","cocoonJSApp","CocoonJS","App","onSuspended","onActivated","focusLoss","focusGain","gamePaused","gameResumed","Color","valueToColor","updateColor","removeEventListener","Group","addToStage","enableBody","physicsBodyType","Physics","ARCADE","physicsType","alive","ignoreDestroy","pendingDestroy","classType","cursor","inputEnableChildren","onChildInputDown","onChildInputUp","onChildInputOver","onChildInputOut","enableBodyDebug","physicsSortDirection","onDestroy","cursorIndex","fixedToCamera","cameraOffset","hash","_sortProperty","RETURN_NONE","RETURN_TOTAL","RETURN_CHILD","SORT_ASCENDING","SORT_DESCENDING","silent","body","removeFromHash","updateZ","addToHash","inputEnabled","events","onAddedToGroup$dispatch","addAt","addMultiple","moveAll","getAt","createMultiple","quantity","singleKey","singleFrame","align","rows","columns","cellWidth","cellHeight","alignIn","resetCursor","next","previous","swap","child1","bringToTop","getIndex","sendToBack","moveUp","moveDown","xy","getByName","oldChild","newChild","hasProperty","operation","checkProperty","checkAlive","checkVisible","setAll","setAllChildren","checkAll","addAll","property","subAll","multiplyAll","divideAll","callAllExists","callback","existsValue","callbackFromArray","callAll","method","methodLength","contextLength","renderOrderID","predicate","checkExists","ArraySet","forEachExists","iterate","forEachAlive","forEachDead","sort","order","ascendingSortHandler","descendingSortHandler","customSort","sortHandler","returnType","getFirstExists","createIfNull","resetChild","getFirstAlive","getFirstDead","loadTexture","getTop","getBottom","getClosestTo","object","tempDistance","getFurthestFrom","countLiving","countDead","getRandom","ArrayUtils","getRandomItem","destroyPhase","onRemovedFromGroup$dispatch","group","destroyTexture","removeBetween","destroyChildren","soft","World","_definedSize","stateChange","setBounds","useBounds","between","Game","physicsConfig","isRunning","raf","net","Device","lockRender","stepping","pendingStep","stepCount","onBlur","onFocus","_paused","_codePaused","currentUpdateID","updatesThisFrame","_deltaTime","_lastCount","_spiraling","fpsProblemNotifier","forceSingleUpdate","_nextFpsNotification","enableDebug","RandomDataGenerator","now","whenReady","seed","ScaleManager","setUpRenderer","GameObjectFactory","GameObjectCreator","Cache","Loader","Time","TweenManager","Input","SoundManager","Particles","Create","Net","Debug","showDebugHeader","RequestAnimationFrame","stopFocus","focus","hideBanner","v","webAudio","chrome","webGL","contextRestored","cocoonJS","smoothed","addToDOM","preventDefault","clearGLTextures","updateLogic","desiredFpsMult","updateRender","slowMotion","desiredFps","slowStep","elapsed","timeStep","enableStep","disableStep","step","removeFromDOM","muteOnPause","setMute","cordova","iOS","unsetMute","hitCanvas","hitContext","moveCallbacks","customCandidateHandler","customCandidateHandlerContext","pollRate","enabled","multiInputOverride","MOUSE_TOUCH_COMBINE","speed","circle","maxPointers","tapRate","doubleTapRate","holdRate","justPressedRate","justReleasedRate","recordPointerHistory","recordRate","recordLimit","pointer1","pointer2","pointer3","pointer4","pointer5","pointer6","pointer7","pointer8","pointer9","pointer10","pointers","activePointer","mousePointer","keyboard","touch","mspointer","gamepad","resetLocked","onDown","onUp","onTap","onHold","minPriorityID","interactiveItems","_localPoint","_pollCounter","_oldPosition","_x","_y","MOUSE_OVERRIDES_TOUCH","TOUCH_OVERRIDES_MOUSE","MAX_POINTERS","Pointer","PointerMode","CURSOR","addPointer","Mouse","Touch","MSPointer","Keyboard","Gamepad","_onClickTrampoline","onClickTrampoline","setInteractiveCandidateHandler","addMoveCallback","deleteMoveCallback","TOUCH","hard","resetSpeed","startPointer","countActivePointers","updatePointer","identifier","move","stopPointer","limit","getPointer","isActive","getPointerFromIdentifier","getPointerFromId","pointerId","getLocalPosition","hitTest","localPoint","TileSprite","graphicsData","shape","processClickTrampolines","mouseDownCallback","mouseUpCallback","mouseOutCallback","mouseOverCallback","mouseWheelCallback","capture","button","wheelDelta","locked","stopOnGameOut","pointerLock","_onMouseDown","_onMouseMove","_onMouseUp","_onMouseOut","_onMouseOver","_onMouseWheel","_wheelEvent","NO_BUTTON","LEFT_BUTTON","MIDDLE_BUTTON","RIGHT_BUTTON","BACK_BUTTON","FORWARD_BUTTON","WHEEL_UP","WHEEL_DOWN","android","onMouseDown","onMouseMove","onMouseUp","_onMouseUpGlobal","onMouseUpGlobal","_onMouseOutGlobal","onMouseOutGlobal","onMouseOut","onMouseOver","onMouseWheel","wheelEvent","mouseMoveCallback","withinGame","leftButton","rightButton","bindEvent","deltaY","requestPointerLock","element","mozRequestPointerLock","webkitRequestPointerLock","_pointerLockChange","pointerLockChange","pointerLockElement","mozPointerLockElement","webkitPointerLockElement","releasePointerLock","exitPointerLock","mozExitPointerLock","webkitExitPointerLock","_stubsGenerated","makeBinder","detail","deltaX","wheelDeltaX","deltaZ","pointerDownCallback","pointerMoveCallback","pointerUpCallback","_onMSPointerDown","_onMSPointerMove","_onMSPointerUp","_onMSPointerUpGlobal","_onMSPointerOut","_onMSPointerOver","onPointerDown","onPointerMove","onPointerUp","onPointerUpGlobal","onPointerOut","onPointerOver","pointerType","DeviceButton","buttonCode","isDown","isUp","timeDown","timeUp","repeats","altKey","shiftKey","ctrlKey","onFloat","padFloat","justPressed","justReleased","pointerMode","CONTACT","middleButton","backButton","forwardButton","eraserButton","ERASER_BUTTON","_holdSent","_history","_nextDrop","_stateReset","clientX","clientY","pageX","pageY","screenX","screenY","rawMovementX","rawMovementY","movementX","movementY","isMouse","previousTapTime","totalTouches","msSinceLastClick","targetObject","interactiveCandidates","positionDown","positionUp","_clickTrampolines","_trampolineTargetObject","resetButtons","processButtonsDown","buttons","processButtonsUp","updateButtons","down","toLowerCase","totalActivePointers","_touchedHandler","processInteractiveObjects","shift","fromClick","pollLocked","mozMovementX","webkitMovementX","mozMovementY","webkitMovementY","isDragged","highestRenderOrderID","highestInputPriorityID","candidateTarget","currentNode","first","checked","validForInput","checkPointerDown","checkPointerOver","priorityID","swapTarget","newTarget","_pointerOutHandler","_pointerOverHandler","leave","currentPointers","addClickTrampoline","callbackArgs","trampolines","trampoline","_releasedHandler","resetMovement","touchLockCallbacks","touchStartCallback","touchMoveCallback","touchEndCallback","touchEnterCallback","touchLeaveCallback","touchCancelCallback","_onTouchStart","_onTouchMove","_onTouchEnd","_onTouchEnter","_onTouchLeave","_onTouchCancel","onTouchStart","onTouchMove","onTouchEnd","onTouchEnter","onTouchLeave","onTouchCancel","consumeDocumentTouches","_documentTouchMove","addTouchLockCallback","onEnd","removeTouchLockCallback","cb","changedTouches","InputHandler","useHandCursor","_setHandCursor","allowHorizontalDrag","allowVerticalDrag","snapOffset","snapOnDrag","snapOnRelease","snapX","snapY","snapOffsetX","snapOffsetY","pixelPerfectOver","pixelPerfectClick","pixelPerfectAlpha","draggable","boundsRect","boundsSprite","scaleLayer","dragOffset","dragFromCenter","dragStopBlocksInputUp","dragStartPoint","dragDistanceThreshold","dragTimeThreshold","downPoint","snapPoint","_dragPoint","_dragPhase","_pendingDrag","_dragTimePass","_dragDistancePass","_wasEnabled","_tempPoint","_pointerData","camX","camY","isOver","isOut","timeOver","timeOut","downDuration","onAddedToGroup","addedToGroup","onRemovedFromGroup","removedFromGroup","flagged","highestID","highestRenderID","includePixelPerfect","isPixelPerfect","pointerX","pointerY","pointerDown","pointerUp","pointerTimeDown","pointerTimeUp","pointerOver","pointerOut","pointerTimeOver","pointerTimeOut","pointerDragged","fastTest","checkPixel","_dx","_dy","startDrag","_draggedPointerID","updateDrag","sendEvent","onInputOver$dispatch","onInputOut$dispatch","onInputDown$dispatch","dragTimeElapsed","onInputUp$dispatch","stopDrag","fromStart","globalToLocalX","py","globalToLocalY","checkBoundsRect","checkBoundsSprite","onDragUpdate","justOver","delay","overDuration","justOut","enableDrag","lockCenter","pixelPerfect","alphaThreshold","disableDrag","onDragStart$dispatch","grid","boundsFluid","scaleFluidInversed","onDragStop$dispatch","setDragLock","allowHorizontal","allowVertical","enableSnap","onDrag","onRelease","disableSnap","_gamepadIndexMap","_rawPads","_active","_gamepadSupportAvailable","webkitGetGamepads","webkitGamepads","userAgent","getGamepads","_prevRawGamepadTypes","_prevTimestamps","onConnectCallback","onDisconnectCallback","onDownCallback","onUpCallback","onAxisCallback","onFloatCallback","_ongamepadconnected","_gamepaddisconnected","_gamepads","SinglePad","addCallbacks","callbacks","onConnect","onDisconnect","onAxis","_onGamepadConnected","onGamepadConnected","_onGamepadDisconnected","onGamepadDisconnected","newPad","connect","removedPad","disconnect","_pollGamepads","pad1","pollStatus","pad2","pad3","pad4","rawGamepads","gamepadsChanged","_rawPad","singlePad","validConnections","rawIndices","padIndices","connected","k","rawPad","setDeadZones","deadZone","BUTTON_0","BUTTON_1","BUTTON_2","BUTTON_3","BUTTON_4","BUTTON_5","BUTTON_6","BUTTON_7","BUTTON_8","BUTTON_9","BUTTON_10","BUTTON_11","BUTTON_12","BUTTON_13","BUTTON_14","BUTTON_15","AXIS_0","AXIS_1","AXIS_2","AXIS_3","AXIS_4","AXIS_5","AXIS_6","AXIS_7","AXIS_8","AXIS_9","XBOX360_A","XBOX360_B","XBOX360_X","XBOX360_Y","XBOX360_LEFT_BUMPER","XBOX360_RIGHT_BUMPER","XBOX360_LEFT_TRIGGER","XBOX360_RIGHT_TRIGGER","XBOX360_BACK","XBOX360_START","XBOX360_STICK_LEFT_BUTTON","XBOX360_STICK_RIGHT_BUTTON","XBOX360_DPAD_LEFT","XBOX360_DPAD_RIGHT","XBOX360_DPAD_UP","XBOX360_DPAD_DOWN","XBOX360_STICK_LEFT_X","XBOX360_STICK_LEFT_Y","XBOX360_STICK_RIGHT_X","XBOX360_STICK_RIGHT_Y","PS3XC_X","PS3XC_CIRCLE","PS3XC_SQUARE","PS3XC_TRIANGLE","PS3XC_L1","PS3XC_R1","PS3XC_L2","PS3XC_R2","PS3XC_SELECT","PS3XC_START","PS3XC_STICK_LEFT_BUTTON","PS3XC_STICK_RIGHT_BUTTON","PS3XC_DPAD_UP","PS3XC_DPAD_DOWN","PS3XC_DPAD_LEFT","PS3XC_DPAD_RIGHT","PS3XC_STICK_LEFT_X","PS3XC_STICK_LEFT_Y","PS3XC_STICK_RIGHT_X","PS3XC_STICK_RIGHT_Y","padParent","_padParent","_prevTimestamp","_buttons","_buttonsLen","_axes","_axesLen","getButton","timestamp","rawButtonVal","isNaN","processButtonDown","processButtonUp","processButtonFloat","axes","processAxisChange","triggerCallback","disconnectingIndex","axis","axisCode","buttonValue","Key","keycode","_enabled","keyCode","onHoldCallback","onHoldContext","_justDown","_justUp","processKeyDown","processKeyUp","upDuration","pressEvent","onPressCallback","_keys","_capture","_onKeyDown","_onKeyPress","_onKeyUp","_k","onPress","addKey","addKeyCapture","addKeys","removeKey","removeKeyCapture","createCursorKeys","up","KeyCode","processKeyPress","clearCaptures","String","fromCharCode","charCode","A","charCodeAt","B","C","D","E","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z","ZERO","TWO","THREE","FOUR","FIVE","SIX","SEVEN","EIGHT","NINE","NUMPAD_0","NUMPAD_1","NUMPAD_2","NUMPAD_3","NUMPAD_4","NUMPAD_5","NUMPAD_6","NUMPAD_7","NUMPAD_8","NUMPAD_9","NUMPAD_MULTIPLY","NUMPAD_ADD","NUMPAD_ENTER","NUMPAD_SUBTRACT","NUMPAD_DECIMAL","NUMPAD_DIVIDE","F1","F2","F3","F4","F5","F6","F7","F8","F9","F10","F11","F12","F13","F14","F15","COLON","EQUALS","COMMA","UNDERSCORE","PERIOD","QUESTION_MARK","TILDE","OPEN_BRACKET","BACKWARD_SLASH","CLOSED_BRACKET","QUOTES","BACKSPACE","TAB","CLEAR","ENTER","SHIFT","CONTROL","ALT","CAPS_LOCK","ESC","SPACEBAR","PAGE_UP","PAGE_DOWN","END","HOME","PLUS","MINUS","INSERT","DELETE","HELP","NUM_LOCK","match","Component","Angle","wrapAngle","Animation","play","frameRate","loop","killOnComplete","animations","AutoCull","autoCull","inCamera","checkWorldBounds","Bounds","alignTo","BringToTop","Core","install","components","previousPosition","Events","PhysicsBody","AnimationManager","LoadTexture","FixedToCamera","previousRotation","fresh","_exists","P2JS","removeFromWorld","customRender","Crop","cropRect","_crop","updateCrop","resetFrame","Delta","Destroy","onDestroy$dispatch","removeFrom","Video","onChangeSource","resizeFrame","BitmapText","_glyphs","_parent","_onDestroy","_onAddedToGroup","_onRemovedFromGroup","_onRemovedFromWorld","_onKilled","_onRevived","_onEnterBounds","_onOutOfBounds","_onInputOver","_onInputOut","_onInputDown","_onInputUp","_onDragStart","_onDragUpdate","_onDragStop","_onAnimationStart","_onAnimationComplete","_onAnimationLoop","onRemovedFromWorld","onKilled","onRevived","onOutOfBounds","onEnterBounds","onInputOver","onInputOut","onInputDown","onInputUp","onDragStart","onDragStop","onAnimationStart","onAnimationComplete","onAnimationLoop","backing","_fixedToCamera","Health","health","maxHealth","damage","kill","setHealth","heal","InCamera","InputEnabled","InWorld","outOfCameraBoundsKill","_outOfBoundsFired","onEnterBounds$dispatch","onOutOfBounds$dispatch","outOfBoundsKill","inWorld","LifeSpan","lifespan","physicsElapsedMS","revive","onRevived$dispatch","onKilled$dispatch","stopAnimation","BitmapData","hasFrameData","loadFrameData","getFrameData","frameData","Tilemap","TilemapLayer","img","base","frameName","Overlap","overlap","_reset","Reset","ScaleMinMax","scaleMin","scaleMax","checkTransform","setScaleMinMax","Smoothed","existing","weapon","Weapon","createBullets","creature","mesh","Creature","tween","physicsGroup","audio","audioSprite","addSprite","tileSprite","rope","text","Text","overFrame","outFrame","downFrame","upFrame","Button","emitter","maxParticles","Arcade","Emitter","retroFont","font","characterWidth","characterHeight","chars","charsPerRow","xSpacing","ySpacing","xOffset","yOffset","RetroFont","bitmapText","tilemap","tileWidth","tileHeight","addToCache","uuid","addRenderTexture","video","url","bitmapData","addBitmapData","Tween","preUpdatePhysics","preUpdateLifeSpan","preUpdateInWorld","preUpdateCore","_onOverFrame","_onOutFrame","_onDownFrame","_onUpFrame","onOverSound","onOutSound","onDownSound","onUpSound","onOverSoundMarker","onOutSoundMarker","onDownSoundMarker","onUpSoundMarker","onOverMouseOnly","justReleasedPreventsOver","freezeFrames","forceOut","setFrames","onInputOverHandler","onInputOutHandler","onInputDownHandler","onInputUpHandler","removedFromWorld","STATE_OVER","STATE_OUT","STATE_DOWN","STATE_UP","clearFrames","setStateFrame","switchImmediately","frameKey","changeStateFrame","setStateSound","marker","soundKey","markerKey","Sound","AudioSprite","playStateSound","setSounds","overSound","overMarker","downSound","downMarker","outSound","outMarker","upSound","upMarker","setOverSound","setOutSound","setDownSound","setUpSound","changedUp","skipPool","ctx","imageData","FrameData","textureFrame","addFrame","Frame","disableTextureUpload","cls","_image","_pos","_size","_scale","_rotate","_alpha","prev","_anchor","_tempR","_tempG","_tempB","_circle","_swapCanvas","moveH","moveV","draw","addImage","processPixelRGB","pixel","createColor","unpackPixel","getPixel32","setPixel32","processPixel","replaceRGB","r1","g1","r2","g2","region","packPixel","setHSL","bHaveH","bHaveS","bHaveL","HSLtoRGB","shiftHSL","red","green","blue","immediate","LITTLE_ENDIAN","setPixel","getPixel","getPixelRGB","hsl","hsv","getPixels","getFirstPixel","scan","newWidth","newHeight","op","copyTransform","copyRect","drawGroup","drawGroupProxy","drawFull","renderGraphics","shadow","blur","shadowColor","shadowBlur","shadowOffsetX","shadowOffsetY","alphaMask","sourceRect","maskRect","blendSourceAtop","blendReset","extract","destination","prevFont","fillText","arc","lineWidth","stroke","textureLine","blendSourceOver","blendSourceIn","blendSourceOut","blendDestinationOver","blendDestinationIn","blendDestinationOut","blendDestinationAtop","blendXor","blendAdd","blendMultiply","blendScreen","blendOverlay","blendDarken","blendLighten","blendColorDodge","blendColorBurn","blendHardLight","blendSoftLight","blendDifference","blendExclusion","blendHue","blendSaturation","blendColor","blendLuminosity","getSmoothingEnabled","setSmoothingEnabled","getTransform","translateX","translateY","skewX","skewY","fillAlpha","lineColor","currentPath","boundsPadding","_localBounds","webGLDirty","cachedSpriteDirty","lineStyle","lineAlpha","drawShape","updateLocalBounds","quadraticCurveTo","cpX","cpY","toX","toY","xa","ya","fromX","fromY","bezierCurveTo","cpX2","cpY2","dt","dt2","dt3","t2","t3","arcTo","mm","dd","cc","tt","k1","k2","j1","j2","qx","qy","startAngle","endAngle","anticlockwise","segments","sweep","segs","startX","startY","filling","theta","theta2","cTheta","sTheta","segMinus","remainder","real","fillColor","drawRoundedRect","drawCircle","drawEllipse","drawPolygon","path","clearDirty","updateCachedSpriteTexture","_prevTint","tempPoint","RECT","RREC","CIRC","ELIP","cachedSprite","destroyCachedSprite","GraphicsData","POLY","_lineTint","_fillTint","PolyK","Triangulate","sign","tgs","avl","al","i0","i1","i2","ax","ay","bx","by","earFound","_convex","vi","_PointInTriangle","v0x","v0y","v1x","v1y","v2x","v2y","dot00","dot01","dot02","dot11","dot12","invDenom","EarCut","holeIndices","dim","hasHoles","outerLen","outerNode","linkedList","triangles","eliminateHoles","earcutLinked","clockwise","sum","insertNode","filterPoints","again","steiner","removeNode","ear","pass","indexCurve","isEarHashed","isEar","cureLocalIntersections","splitEarcut","pointInTriangle","minTX","minTY","maxTX","maxTY","minZ","zOrder","maxZ","nextZ","prevZ","locallyInside","isValidDiagonal","splitPolygon","list","queue","getLeftmost","compareX","eliminateHole","hole","findHoleBridge","hx","hy","tan","tanMin","sortLinked","q","tail","numMerges","pSize","qSize","inSize","leftmost","intersectsPolygon","middleInside","q1","q2","Node","an","bp","stencilBufferLimit","lastIndex","graphicsDataPool","switchMode","canDrawUsingSimple","buildPoly","buildComplexPoly","buildLine","buildRectangle","buildCircle","buildRoundedRectangle","upload","WebGLGraphicsData","rectData","verts","vertPos","tempPoints","rrectData","recPoints","quadraticBezierCurve","vecPos","getPt","n1","n2","perc","diff","xb","yb","circleData","totalSegs","seg","firstPoint","midPointX","midPointY","unshift","p1x","p1y","p2x","p2y","p3x","p3y","perpx","perpy","perp2x","perp2y","perp3x","perp3y","pdist","indexCount","indexStart","glPoints","glIndicies","updateGraphicsTint","kappa","ox","oy","xe","ye","xm","ym","maxRadius","tintR","tintG","tintB","drawTriangle","cull","triangle","cameraToFace","ab","faceNormal","drawTriangles","point1","point2","point3","renderXY","renderRawXY","textBounds","strokeColors","fontStyles","fontWeights","autoRound","useAdvancedWrap","_res","_text","_fontComponents","_lineSpacing","_charCount","setStyle","updateText","setShadow","shadowStroke","shadowFill","backgroundColor","boundsAlignH","boundsAlignV","strokeThickness","wordWrap","wordWrapWidth","maxLines","tabs","fontToComponents","fontStyle","fontVariant","fontWeight","fontSize","componentsToFont","outputText","runWordWrap","lines","lineWidths","maxLineWidth","fontProperties","determineFontProperties","drawnLines","measureLine","measureText","tab","section","snapToCeil","lineHeight","lineSpacing","textBaseline","lineCap","lineJoin","linePositionX","linePositionY","ascent","updateLine","updateShadow","strokeText","renderTabLine","snap","lineLength","letter","clearColors","clearFontValues","addColor","addStrokeColor","addFontStyle","addFontWeight","weight","precalculateWordWrap","wrappedLines","advancedWordWrap","basicWordWrap","linesCount","currentLineWidth","words","word","wordWithSpace","wordWidth","newWord","secondPart","spaceLeft","wordWidthWithSpace","updateFont","family","exec","fontFamily","setText","parseList","setTextBounds","properties","fontPropertiesCache","fontPropertiesCanvas","fontPropertiesContext","baseline","descent","imagedata","parseFloat","textWidth","textHeight","_prevAnchor","_maxWidth","_data","getBitmapFont","_font","_fontSize","_align","_tint","sourceWidth","sourceHeight","scanLine","lastSpace","wrappedWidth","prevCharCode","maxWidth","test","charAt","charData","kerning","xAdvance","cleanText","re","purgeGlyphs","kept","checkImageKey","characterSpacingX","characterSpacingY","characterPerRow","multiLine","autoUpperCase","customSpacingX","customSpacingY","fixedWidth","fontSet","grabData","currentX","currentY","updateFrameData","stamp","ALIGN_LEFT","ALIGN_RIGHT","ALIGN_CENTER","TEXT_SET1","TEXT_SET2","TEXT_SET3","TEXT_SET4","TEXT_SET5","TEXT_SET6","TEXT_SET7","TEXT_SET8","TEXT_SET9","TEXT_SET10","TEXT_SET11","setFixedWidth","lineAlignment","content","characterSpacing","allowLowerCase","buildRetroFontText","getLongestLine","pasteLine","longestLine","removeUnsupportedCharacters","stripCR","newString","aChar","code","updateOffset","diffX","diffY","frames","getFrames","newText","toUpperCase","_hasUpdateAnimation","_updateAnimationCallback","updateAnimation","_updateAnimation","difference","_scroll","def","physicsElapsed","autoScroll","stopScroll","deviceReadyAt","initialized","desktop","iOSVersion","node","nodeWebkit","electron","ejecta","crosswalk","chromeOS","linux","macOS","windows","windowsPhone","canvasBitBltShift","file","fileSystem","localStorage","worker","css3D","typedArray","vibration","getUserMedia","quirksMode","arora","chromeVersion","epiphany","firefox","firefoxVersion","ie","ieVersion","trident","tridentVersion","edge","mobileSafari","midori","opera","safari","safariVersion","webApp","silk","audioData","ogg","opus","mp3","wav","m4a","webm","dolby","oggVideo","h264Video","mp4Video","webmVideo","vp9Video","hlsVideo","iPhone","iPhone4","iPad","pixelRatio","littleEndian","support32bit","fullscreen","requestFullscreen","cancelFullscreen","fullscreenKeyboard","onInitialized","nonPrimer","readyCheck","_readyCheck","_monitor","_queue","readyState","setTimeout","_initialize","_checkOS","vita","kindle","RegExp","$1","_checkFeatures","getItem","error","WebGLRenderingContext","compatMode","webkitGetUserMedia","mozGetUserMedia","msGetUserMedia","oGetUserMedia","URL","webkitURL","mozURL","msURL","_checkInput","documentElement","maxTouchPoints","msPointerEnabled","pointerEnabled","_checkFullScreenSupport","fs","cfs","Element","_checkBrowser","$3","process","require","versions","_checkVideo","videoElement","canPlayType","_checkAudio","audioElement","major","minor","$2","_checkDevice","Int8Array","_checkIsLittleEndian","Uint8ClampedArray","Int32Array","_checkIsUint8ClampedImageData","vibrate","webkitVibrate","mozVibrate","msVibrate","elem","createImageData","_checkCSS3D","has3d","el","transforms","webkitTransform","OTransform","msTransform","MozTransform","insertBefore","getComputedStyle","getPropertyValue","canPlayAudio","canPlayVideo","isConsoleOpen","profile","profileEnd","isAndroidStockBrowser","matches","display","msTouchAction","overflowHidden","getElementById","overflow","appendChild","parentNode","vendor","prefix","setImageRenderingCrisp","types","msInterpolationMode","setImageRenderingBicubic","forceSetTimeOut","vendors","requestAnimationFrame","cancelAnimationFrame","_isSetTimeOut","_onLoop","_timeOutID","updateSetTimeout","updateRAF","rafTime","timeToCall","clearTimeout","isSetTimeOut","isRAF","PI2","fuzzyEqual","epsilon","fuzzyLessThan","fuzzyGreaterThan","fuzzyCeil","val","fuzzyFloor","average","shear","snapTo","gap","snapToFloor","roundTo","place","pow","floorTo","ceilTo","angleBetween","angleBetweenY","angleBetweenPoints","angleBetweenPointsY","reverseAngle","angleRad","normalizeAngle","maxAdd","minSub","wrapValue","isOdd","isEven","minProperty","maxProperty","radians","linearInterpolation","bezierInterpolation","bernstein","catmullRomInterpolation","catmullRom","p0","factorial","res","p3","roundAwayFromZero","sinCosGenerator","sinAmplitude","cosAmplitude","frequency","frq","cosTable","sinTable","distanceSq","distancePow","clampBottom","within","mapLinear","smoothstep","smootherstep","percent","degreeToRadiansFactor","radianToDegreesFactor","degrees","seeds","s0","sow","integer","integerInRange","realInRange","normal","pick","ary","weightedPick","QuadTree","maxObjects","maxLevels","objects","nodes","_empty","subWidth","subHeight","populate","populateHandler","insert","retrieve","returnObjects","getHostName","location","hostname","checkDomainName","domain","updateQueryString","redirect","href","separator","getQueryString","parameter","keyValues","search","substring","decodeURI","decodeURIComponent","frameBased","_tweens","_add","easeMap","Power0","Easing","Power1","Power2","Power3","Power4","Linear","None","Quad","Quadratic","Out","Cubic","Quart","Quartic","Quint","Quintic","Sine","Sinusoidal","Expo","Exponential","Circ","Circular","Elastic","Back","Bounce","Quad.easeIn","In","Cubic.easeIn","Quart.easeIn","Quint.easeIn","Sine.easeIn","Expo.easeIn","Circ.easeIn","Elastic.easeIn","Back.easeIn","Bounce.easeIn","Quad.easeOut","Cubic.easeOut","Quart.easeOut","Quint.easeOut","Sine.easeOut","Expo.easeOut","Circ.easeOut","Elastic.easeOut","Back.easeOut","Bounce.easeOut","Quad.easeInOut","InOut","Cubic.easeInOut","Quart.easeInOut","Quint.easeInOut","Sine.easeInOut","Expo.easeInOut","Circ.easeInOut","Elastic.easeInOut","Back.easeInOut","Bounce.easeInOut","_pauseAll","_resumeAll","getAll","pendingDelete","_manager","addTweens","numTweens","isTweening","some","_pause","_resume","pauseAll","resumeAll","manager","timeline","timeScale","repeatCounter","onStart","onLoop","onRepeat","onChildComplete","onComplete","chainedTween","isPaused","_onUpdateCallback","_onUpdateCallbackContext","_pausedTime","_hasStarted","ease","yoyo","Default","TweenData","vEnd","loadValues","updateTweenData","repeatDelay","yoyoDelay","easing","interpolation","repeatAll","chain","startTime","status","PENDING","RUNNING","LOOPED","COMPLETE","generateData","vStart","vStartCache","vEndCache","repeatTotal","inReverse","easingFunction","interpolationFunction","interpolationContext","isFrom","yoyoCounter","ms","fps","blob","reversed","asin","prevTime","_desiredFps","suggestedFps","advancedTiming","fpsMin","fpsMax","msMin","msMax","pauseDuration","timeExpected","Timer","_frameCount","_elapsedAccumulator","_started","_timeLastSecond","_pauseStarted","_justResumed","_timers","timer","autoDestroy","previousDateNow","updateAdvancedTiming","updateTimers","elapsedSince","since","elapsedSecondsSince","running","expired","nextTick","timeCap","_pauseTotal","_now","_marked","_diff","_newTick","MINUTE","SECOND","HALF","QUARTER","repeatCount","tick","TimerEvent","clearEvents","clearPendingEvents","adjustEvents","baseTime","currentFrame","currentAnim","updateIfVisible","isLoaded","_frameData","_anims","_outputFrames","anim","copyFrameData","useNumericIndex","getFrameIndexes","validateFrames","checkFrameName","isPlaying","getAnimation","refreshFrame","getFrame","getFrameByName","_frameIndex","_frames","loopCount","isFinished","_pauseStartTime","_frameDiff","_frameSkip","onUpdate","isReversed","_timeLastFrame","_timeNextFrame","updateCurrentFrame","onAnimationStart$dispatch","reverseOnce","frameId","useLocalFrameIndex","frameIndex","dispatchComplete","onAnimationComplete$dispatch","onAnimationLoop$dispatch","signalUpdate","fromPlay","generateFrameNames","suffix","zeroPad","rotated","rotationDirection","spriteSourceSizeW","spriteSourceSizeH","setTrim","actualWidth","actualHeight","destX","destY","destWidth","destHeight","getRect","_frameNames","getFrameRange","AnimationParser","spriteSheet","frameMax","margin","spacing","row","column","JSONData","json","newFrame","filename","sourceSize","spriteSourceSize","JSONDataPyxel","signature","tileheight","tilewidth","JSONDataHash","XMLData","xml","getElementsByTagName","frameX","frameY","autoResolveURL","_cache","binary","bitmapFont","_urlMap","_urlResolver","_urlTemp","onSoundUnlock","_cacheMap","TEXTURE","SOUND","PHYSICS","BINARY","BITMAPFONT","JSON","XML","SHADER","RENDER_TEXTURE","addDefaultImage","addMissingImage","MISSING","addCanvas","removeImage","_resolveURL","addSound","audioTag","decoded","isDecoding","touchLocked","addText","addPhysicsData","addTilemap","mapData","addBinary","binaryData","addBitmapFont","atlasData","atlasType","LoaderParser","jsonBitmapFont","xmlBitmapFont","addJSON","addXML","addVideo","isBlob","addShader","addSpriteSheet","addTextureAtlas","TEXTURE_ATLAS_XML_STARLING","TEXTURE_ATLAS_JSON_PYXEL","reloadSound","getSound","reloadSoundComplete","updateSound","decodedSound","isSoundDecoded","isSoundReady","checkKey","checkURL","checkCanvasKey","checkTextureKey","checkSoundKey","checkTextKey","checkPhysicsKey","checkTilemapKey","checkBinaryKey","checkBitmapDataKey","checkBitmapFontKey","checkJSONKey","checkXMLKey","checkVideoKey","checkShaderKey","checkRenderTextureKey","full","getTextureFrame","getSoundData","getText","getPhysicsData","fixtureKey","fixtures","fixture","getTilemapData","getBinary","getBitmapData","getJSON","getXML","getVideo","getShader","getRenderTexture","getBaseTexture","getFrameCount","getFrameByIndex","getURL","getKeys","removeCanvas","destroyBaseTexture","removeSound","removeText","removePhysics","removeTilemap","removeBinary","removeBitmapData","removeBitmapFont","removeJSON","removeXML","removeVideo","removeShader","removeRenderTexture","removeSpriteSheet","removeTextureAtlas","atlas","baseURL","isLoading","preloadSprite","crossOrigin","headers","onLoadStart","onLoadComplete","onPackComplete","onFileStart","onFileComplete","onFileError","useXDomainRequest","_warnedAboutXDomainRequest","enableParallel","maxParallelDownloads","_withSyncPointDepth","_fileList","_flightQueue","_processingHead","_fileLoadStarted","_totalPackCount","_totalFileCount","_loadedPackCount","_loadedFileCount","TEXTURE_ATLAS_JSON_ARRAY","TEXTURE_ATLAS_JSON_HASH","PHYSICS_LIME_CORONA_JSON","PHYSICS_PHASER_JSON","setPreloadSprite","checkKeyExists","getAssetIndex","bestFound","loaded","loading","getAsset","fileIndex","addToFileList","overwrite","extension","syncPoint","currentFile","replaceInFileList","pack","images","urls","script","spritesheet","autoDecode","noAudio","jsonURL","jsonData","audiosprite","loadEvent","asBlob","CSV","TILED_JSON","LIME_CORONA_JSON","textureURL","atlasURL","parseXml","atlasJSONArray","atlasJSONHash","atlasXML","withSyncPoint","addSyncPoint","asset","removeFile","updateProgress","processLoadQueue","finishedLoading","requestUrl","requestObject","progress","syncblock","inflightLimit","processPack","loadFile","abnormal","asyncComplete","errorMessage","packData","transformUrl","xhrLoad","fileComplete","loadImageTag","getAudioURL","usingWebAudio","usingAudioTag","loadAudioTag","fileError","getVideoURL","loadVideoTag","jsonLoadComplete","xmlLoadComplete","csvLoadComplete","onload","onerror","controls","autoplay","videoLoadEvent","canplay","Audio","playThroughEvent","XDomainRequest","xhrLoadWithXDR","xhr","XMLHttpRequest","open","responseType","setRequestHeader","message","send","timeout","ontimeout","onprogress","videoType","uri","lastIndexOf","audioType","reason","loadNext","responseText","response","decode","language","defer","head","contentType","domparser","DOMParser","parseFromString","ActiveXObject","async","loadXML","totalLoadedFiles","totalLoadedPacks","progressFloat","info","common","getAttribute","letters","kernings","second","finalizeBitmapFont","_face","_lineHeight","_id","_xoffset","_yoffset","_xadvance","_second","_first","_amount","bitmapFontData","autoplayKey","sounds","spritemap","addMarker","connectToMaster","markers","totalDuration","currentTime","durationMS","stopTime","pausedPosition","pausedTime","currentMarker","fadeTween","pendingPlayback","override","allowMultiple","externalNode","masterGainNode","gainNode","_sound","masterGain","createGain","createGainNode","gain","soundHasUnlocked","onDecoded","onPlay","onStop","onMute","onMarkerComplete","_volume","_buffer","_muted","_tempMarker","_tempPosition","_tempVolume","_tempPause","_muteVolume","_tempLoop","_onDecodedEventDispatched","removeMarker","onEndedHandler","onended","isDecoded","loopFull","forceRestart","noteOff","createBufferSource","noteGrainOn","muted","mute","prevMarker","fadeIn","fadeTo","fadeOut","fadeComplete","updateGlobalVolume","globalVolume","onSoundDecode","onVolumeChange","onUnMute","channels","_codeMuted","_unlockSource","_sounds","_watchList","_watching","_watchCallback","_watchContext","disableAudio","disableWebAudio","audioContext","fakeiOSTouchLock","setTouchLock","unlock","noteOn","stopAll","soundData","decodeAudioData","setDecodedCallback","files","playbackState","PLAYING_STATE","FINISHED_STATE","removeByKey","close","dom","minWidth","minHeight","maxHeight","forceLandscape","forcePortrait","incorrectOrientation","_pageAlignHorizontally","_pageAlignVertically","onOrientationChange","enterIncorrectOrientation","leaveIncorrectOrientation","fullScreenTarget","_createdFullScreenTarget","onFullScreenInit","onFullScreenChange","onFullScreenError","screenOrientation","getScreenOrientation","scaleFactorInversed","aspectRatio","sourceAspectRatio","windowConstraints","compatibility","supportsFullScreen","orientationFallback","noMargins","scrollTo","forceMinimumDocumentHeight","canExpandParent","clickTrampoline","_scaleMode","NO_SCALE","_fullScreenScaleMode","parentIsWindow","parentScaleFactor","trackParentInterval","onSizeChange","onResize","onResizeContext","_pendingScaleMode","_fullScreenRestore","_gameSize","_userScaleFactor","_userScaleTrim","_lastUpdate","_updateThrottle","_updateThrottleReset","_parentBounds","_tempBounds","_lastReportedCanvasSize","_lastReportedGameSize","_booted","setupScale","EXACT_FIT","SHOW_ALL","RESIZE","USER_SCALE","compat","_orientationChange","orientationChange","_windowResize","windowResize","_fullScreenChange","fullScreenChange","_fullScreenError","fullScreenError","_gameResumed","setGameSize","FlexGrid","fullScreenScaleMode","getParentBounds","visualBounds","updateDimensions","queueUpdate","currentScaleMode","setUserScale","hScale","vScale","hTrim","vTrim","setResizeCallback","signalSizeChange","setMinMax","prevThrottle","prevWidth","prevHeight","boundsChanged","orientationChanged","updateOrientationState","updateLayout","throttle","updateScalingAndBounds","forceOrientation","classifyOrientation","orientation","previousOrientation","previouslyIncorrect","isLandscape","isPortrait","changed","correctnessChanged","scrollTop","reflowGame","setMaximum","setExactFit","isFullScreen","boundingParent","setShowAll","resetCanvas","reflowCanvas","layoutBounds","clientRect","getBoundingClientRect","parentRect","offsetParent","wc","windowBounds","alignCanvas","parentBounds","canvasBounds","currentEdge","targetEdge","marginLeft","marginRight","marginTop","marginBottom","pageAlignHorizontally","pageAlignVertically","cssWidth","cssHeight","expanding","multiplier","createFullScreenTarget","fsTarget","background","startFullScreen","allowTrampoline","cleanupCreatedTarget","initData","targetElement","ALLOW_KEYBOARD_INPUT","stopFullScreen","prepScreenMode","enteringFullscreen","createdTarget","scaleSprite","letterBox","scaleX1","scaleY1","scaleX2","scaleY2","scaleOnWidth","bmd","columnWidth","renderShadow","currentAlpha","scaleManager","currentColor","soundInfo","cameraInfo","hideIfUp","downColor","upColor","worldX","worldY","spriteInputInfo","justDown","justUp","inputInfo","spriteBounds","filled","rectangle","ropeSegments","self","segment","spriteInfo","spriteCoords","lineInfo","geom","forceType","quadTree","quadtree","Body","NINJA","Ninja","BOX2D","Box2D","renderBody","bodyInfo","renderBodyInfo","box2d","box2dWorld","renderDebugDraw","box2dBody","displayList","box","scrollY","scrollLeft","scrollX","clientTop","clientLeft","cushion","calibrate","coords","getAspectRatio","inLayoutViewport","primaryFallback","screen","mozOrientation","msOrientation","matchMedia","documentBounds","pageXOffset","pageYOffset","treatAsDesktop","clientWidth","clientHeight","offsetWidth","scrollWidth","offsetHeight","scrollHeight","getByKey","randomIndex","removeRandomItem","shuffle","transposeMatrix","sourceRowCount","sourceColCount","rotateMatrix","findClosest","arr","NaN","low","high","rotateRight","rotateLeft","numberArray","numberArrayStep","LinkedList","entity","palettes","0","1","2","3","4","5","6","7","8","9","PALETTE_ARNE","PALETTE_JMP","PALETTE_CGA","PALETTE_C64","PALETTE_JAPANESE_MACHINE","pixelWidth","pixelHeight","palette","boundsCustom","boundsFull","boundsNone","positionCustom","positionFluid","positionFull","positionNone","scaleCustom","scaleFluid","scaleFull","scaleNone","customWidth","customHeight","customOffsetX","customOffsetY","ratioH","ratioV","layers","createCustomLayer","layer","FlexLayer","createFluidLayer","createFullLayer","createFixedLayer","persist","fitSprite","topLeft","topMiddle","topRight","bottomLeft","bottomMiddle","bottomRight","RGBtoHSL","RGBtoHSV","fromRGBA","toRGBA","toABGR","hueToColor","HSVtoRGB","color32","getColor","getColor32","RGBtoString","componentToHex","hexToRGB","hexToColor","webToColor","web","tempColor","getRGB","HSVColorWheel","HSLColorWheel","interpolateColor","color1","color2","steps","currentStep","src1","src2","interpolateColorWithRGB","or","og","ob","interpolateRGB","getRandomColor","getWebRGB","getAlpha","getAlphaFloat","getRed","getGreen","getBlue","blendNormal","blendAverage","blendSubtract","blendNegation","blendLinearDodge","blendLinearBurn","blendLinearLight","blendVividLight","blendPinLight","blendHardMix","blendReflect","blendGlow","blendPhoenix","arcade","ninja","chipmunk","matter","CHIPMUNK","MATTERJS","P2","Matter","startSystem","system","enableAABB","gravity","checkCollision","OVERLAP_BIAS","forceX","sortDirection","LEFT_RIGHT","skipQuadTree","_total","SORT_NONE","RIGHT_LEFT","TOP_BOTTOM","BOTTOM_TOP","updateMotion","velocityDelta","computeVelocity","angularVelocity","angularAcceleration","angularDrag","maxAngular","velocity","acceleration","drag","maxVelocity","allowGravity","object1","object2","overlapCallback","processCallback","collideHandler","collide","collideCallback","sortLeftRight","sortRightLeft","sortTopBottom","sortBottomTop","overlapOnly","collideGroupVsSelf","collideSpriteVsSprite","collideSpriteVsGroup","collideSpriteVsTilemapLayer","collideGroupVsGroup","collideGroupVsTilemapLayer","sprite1","sprite2","separate","items","bounds1","bounds2","group1","group2","body1","body2","isCircle","separateCircle","bodyRect","bodyCircle","resultX","resultY","separateX","separateY","onOverlap","onCollide","circleBodyIntersects","getOverlapX","getOverlapY","angleCollision","angleBetweenCenters","immovable","customSeparateX","tempVel1","mass","tempVel2","bounce","maxOverlap","deltaAbsX","embedded","touching","none","overlapX","deltaAbsY","overlapY","moves","friction","nv1","nv2","avg","customSeparateY","getObjectsUnderPointer","getObjectsAtLocation","callbackArg","moveToObject","maxTime","distanceBetween","moveToPointer","angleToPointer","distanceToPointer","moveToXY","distanceToXY","velocityFromAngle","velocityFromRotation","accelerationFromRotation","accelerateToObject","xSpeedMax","ySpeedMax","accelerateToPointer","accelerateToXY","angleToXY","worldAngleToPointer","allowRotation","preRotation","newVelocity","deltaMax","worldBounce","onWorldBounds","facing","overlapR","collideWorldBounds","any","wasTouching","blocked","tilePadding","syncBounds","isMoving","stopVelocityOnCollide","moveTimer","moveDistance","moveDuration","moveTarget","moveEnd","onMoveComplete","movementCallback","movementCallbackContext","_sx","_sy","updateBounds","asx","asy","updateMovement","collided","stopMovement","stopVelocity","check","bodyBounds","moveFrom","setCircle","onFloor","onCeiling","onWall","TilemapCollision","TILE_BIAS","tilemapLayer","getTiles","separateTile","tile","tilemapLayerOffsetX","tilemapLayerOffsetY","collisionCallback","collisionCallbackContext","faceLeft","faceRight","faceTop","faceBottom","tileCheckX","tileCheckY","collideRight","collideLeft","processTileSeparationX","collideDown","collideUp","processTileSeparationY","ImageCollection","firstgid","imageWidth","imageHeight","imageMargin","imageSpacing","containsImageIndex","imageIndex","gid","Tile","flipped","scanned","setCollisionCallback","setCollision","resetCollision","isInteresting","collides","faces","TilemapParser","version","widthInPixels","heightInPixels","tilesets","imagecollections","tiles","collideIndexes","collision","currentLayer","debugMap","_results","_tempA","NORTH","EAST","SOUTH","WEST","setTileSize","createBlankLayer","addTilesetImage","tileset","tileMargin","tileSpacing","getTilesetIndex","setImage","newSet","Tileset","countX","countY","createFromObjects","CustomClass","adjustY","found","createFromTiles","replacements","getLayer","customClass","lw","lh","createLayer","pixiTest","getLayerIndex","TilemapLayerGL","indexes","bodies","getImageIndex","setTileIndexCallback","setTileLocationCallback","recalculate","setCollisionByIndex","calculateFaces","setCollisionBetween","setCollisionByExclusion","setPreventRecalculate","preventingRecalculate","needToRecalculate","above","below","getTileAbove","getTileBelow","getTileLeft","getTileRight","setLayer","hasTile","removeTile","removeTileWorldXY","putTile","putTileWorldXY","searchTileIndex","getTile","nonNull","getTileWorldXY","paste","tileblock","tileA","tileB","swapHandler","removeAllLayers","dump","txt","map","renderSettings","enableScrollDelta","overdrawRatio","copyCanvas","debugSettings","missingImageFill","debuggedTileOverfill","forceFullRedraw","debugAlpha","facingEdgeStroke","collidingTileOverfill","scrollFactorX","scrollFactorY","rayStepRate","_wrap","_mc","renderWidth","renderHeight","_scrollX","_scrollY","ensureSharedCopyCanvas","sharedCopyCanvas","resizeWorld","_fixX","_unfixX","_fixY","_unfixY","getTileX","getTileY","getTileXY","getRayCastTiles","interestingFace","coord","fetchAll","wy","wx","resolveTileset","tileIndex","setIndex","containsTileIndex","resetTilesetCache","setScale","xScale","yScale","shiftCanvas","copyW","copyH","copyContext","renderRegion","lastAlpha","xmax","ymax","baseX","baseY","normStartX","normStartY","renderDeltaScroll","shiftX","shiftY","renderW","renderH","trueTop","trueBottom","trueLeft","trueRight","renderFull","redrawAll","mc","renderDebug","INSERT_NULL","FLIPPED_HORIZONTALLY_FLAG","FLIPPED_VERTICALLY_FLAG","FLIPPED_DIAGONALLY_FLAG","getEmptyData","parseCSV","parseTiledJSON","fields","sliced","curl","compression","encoding","binaryString","atob","bytes","opacity","flippedVal","curi","tileproperties","tileProperties","updateTileData","imagewidth","imageheight","newCollection","ti","curo","horizontallyFlipped","verticallyFlipped","diagonallyFlipped","polyline","polygon","ellipse","sid","drawCoords","coordIndex","setSpacing","rowCount","colCount","Particle","autoScale","scaleData","_s","autoAlpha","alphaData","_a","onEmit","setAlphaData","setScaleData","emitters","ID","minParticleSpeed","maxParticleSpeed","minParticleScale","maxParticleScale","minRotation","maxRotation","minParticleAlpha","maxParticleAlpha","particleClass","particleDrag","on","particleAnchor","emitX","emitY","particleBringToTop","particleSendToBack","_minParticleScale","_maxParticleScale","_quantity","_timer","_counter","_flowQuantity","_flowTotal","_explode","emitParticle","makeParticles","particle","rndKey","rndFrame","explode","flow","forceQuantity","setXSpeed","setYSpeed","setRotation","setAlpha","rate","tweenData","at","bullets","autoExpandBulletsGroup","autofire","shots","fireLimit","fireRate","fireRateVariance","fireFrom","fireAngle","bulletInheritSpriteSpeed","bulletAnimation","bulletFrameRandom","bulletFrameCycle","bulletWorldWrap","bulletWorldWrapPadding","bulletAngleOffset","bulletAngleVariance","bulletSpeed","bulletSpeedVariance","bulletLifespan","bulletKillDistance","bulletGravity","bulletRotateToVelocity","bulletKey","bulletFrame","_bulletClass","Bullet","_bulletCollideWorldBounds","_bulletKillType","KILL_WORLD_BOUNDS","customBody","bulletBounds","bulletFrames","bulletFrameIndex","anims","onFire","onKill","onFireLimit","trackedSprite","trackedPointer","trackRotation","trackOffset","_nextFire","KILL_NEVER","KILL_LIFESPAN","KILL_DISTANCE","KILL_WEAPON_BOUNDS","KILL_CAMERA_BOUNDS","KILL_STATIC_BOUNDS","killAll","resetShots","newLimit","fire","trackSprite","trackPointer","moveX","moveY","bullet","bulletManager","killType","bulletKillType","killDistance","rotateToVelocity","bodyDirty","bulletCollideWorldBounds","fireAtPointer","fireAtSprite","fireAtXY","setBulletBodyOffset","setBulletFrames","cycle","addBulletAnimation","debugBodies","onAccess","onError","onTimeout","videoStream","isStreaming","retryLimit","retry","retryInterval","_retryID","_pending","_autoplay","_endCallback","_playCallback","_video","createVideoFromBlob","videoWidth","videoHeight","createVideoFromURL","snapshot","connectToMediaStream","stream","startMediaStream","captureAudio","removeVideoElement","setAttribute","getUserMediaTimeout","getUserMediaSuccess","getUserMediaError","mozSrcObject","createObjectURL","onloadeddata","checkStream","checkVideoProgress","change","playbackRate","setPause","setResume","playHandler","getTracks","track","playing","ended","changeSource","grab","hasChildNodes","firstChild","removeAttribute"],"mappings":"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","file":"phaser-arcade-physics.min.js"} \ No newline at end of file diff --git a/build/custom/phaser-arcade-physics.min.js b/build/custom/phaser-arcade-physics.min.js index 3192f1bfe..9c6926ccf 100644 --- a/build/custom/phaser-arcade-physics.min.js +++ b/build/custom/phaser-arcade-physics.min.js @@ -1,23 +1,23 @@ -/* Phaser v2.5.0 - http://phaser.io - @photonstorm - (c) 2016 Photon Storm Ltd. */ +/* Phaser v2.5.1 - http://phaser.io - @photonstorm - (c) 2016 Photon Storm Ltd. */ -(function(){var a=this,b=b||{};return b.game=null,b.WEBGL_RENDERER=0,b.CANVAS_RENDERER=1,b.VERSION="v2.2.9",b._UID=0,"undefined"!=typeof Float32Array?(b.Float32Array=Float32Array,b.Uint16Array=Uint16Array,b.Uint32Array=Uint32Array,b.ArrayBuffer=ArrayBuffer):(b.Float32Array=Array,b.Uint16Array=Array),b.PI_2=2*Math.PI,b.RAD_TO_DEG=180/Math.PI,b.DEG_TO_RAD=Math.PI/180,b.RETINA_PREFIX="@2x",b.DisplayObject=function(){this.position=new b.Point(0,0),this.scale=new b.Point(1,1),this.pivot=new b.Point(0,0),this.rotation=0,this.alpha=1,this.visible=!0,this.hitArea=null,this.renderable=!1,this.parent=null,this.stage=null,this.worldAlpha=1,this.worldTransform=new b.Matrix,this.worldPosition=new b.Point(0,0),this.worldScale=new b.Point(1,1),this.worldRotation=0,this._sr=0,this._cr=1,this.filterArea=null,this._bounds=new b.Rectangle(0,0,1,1),this._currentBounds=null,this._mask=null,this._cacheAsBitmap=!1,this._cacheIsDirty=!1},b.DisplayObject.prototype.constructor=b.DisplayObject,b.DisplayObject.prototype.destroy=function(){if(this.children){for(var a=this.children.length;a--;)this.children[a].destroy();this.children=[]}this.hitArea=null,this.parent=null,this.stage=null,this.worldTransform=null,this.filterArea=null,this._bounds=null,this._currentBounds=null,this._mask=null,this.renderable=!1,this._destroyCachedSprite()},Object.defineProperty(b.DisplayObject.prototype,"worldVisible",{get:function(){var a=this;do{if(!a.visible)return!1;a=a.parent}while(a);return!0}}),Object.defineProperty(b.DisplayObject.prototype,"mask",{get:function(){return this._mask},set:function(a){this._mask&&(this._mask.isMask=!1),this._mask=a,this._mask&&(this._mask.isMask=!0)}}),Object.defineProperty(b.DisplayObject.prototype,"filters",{get:function(){return this._filters},set:function(a){if(a){for(var c=[],d=0;d=0&&b<=this.children.length)return a.parent&&a.parent.removeChild(a),a.parent=this,this.children.splice(b,0,a),this.stage&&a.setStageReference(this.stage),a;throw new Error(a+"addChildAt: The index "+b+" supplied is out of bounds "+this.children.length)},b.DisplayObjectContainer.prototype.swapChildren=function(a,b){if(a!==b){var c=this.getChildIndex(a),d=this.getChildIndex(b);if(0>c||0>d)throw new Error("swapChildren: Both the supplied DisplayObjects must be a child of the caller.");this.children[c]=b,this.children[d]=a}},b.DisplayObjectContainer.prototype.getChildIndex=function(a){var b=this.children.indexOf(a);if(-1===b)throw new Error("The supplied DisplayObject must be a child of the caller");return b},b.DisplayObjectContainer.prototype.setChildIndex=function(a,b){if(0>b||b>=this.children.length)throw new Error("The supplied index is out of bounds");var c=this.getChildIndex(a);this.children.splice(c,1),this.children.splice(b,0,a)},b.DisplayObjectContainer.prototype.getChildAt=function(a){if(0>a||a>=this.children.length)throw new Error("getChildAt: Supplied index "+a+" does not exist in the child list, or the supplied DisplayObject must be a child of the caller");return this.children[a]},b.DisplayObjectContainer.prototype.removeChild=function(a){var b=this.children.indexOf(a);if(-1!==b)return this.removeChildAt(b)},b.DisplayObjectContainer.prototype.removeChildAt=function(a){var b=this.getChildAt(a);return this.stage&&b.removeStageReference(),b.parent=void 0,this.children.splice(a,1),b},b.DisplayObjectContainer.prototype.removeChildren=function(a,b){var c=a||0,d="number"==typeof b?b:this.children.length,e=d-c;if(e>0&&d>=e){for(var f=this.children.splice(c,e),g=0;gc?g:c,h=h>d?h:d)}if(!i)return b.EmptyRectangle;var l=this._bounds;return l.x=e,l.y=f,l.width=g-e,l.height=h-f,l},b.DisplayObjectContainer.prototype.getLocalBounds=function(){var a=this.worldTransform;this.worldTransform=b.identityMatrix;for(var c=0;ci){i*=-1;var s=d;d=-e,e=-s}if(0>l){l*=-1;var s=f;f=-g,g=-s}q=i*e+m,o=i*d+m,r=l*g+n,p=l*f+n}else{var t=i*e+k*g+m,u=l*g+j*e+n,v=i*d+k*g+m,w=l*g+j*d+n,x=i*d+k*f+m,y=l*f+j*d+n,z=i*e+k*f+m,A=l*f+j*e+n;q=q>t?t:q,q=q>v?v:q,q=q>x?x:q,q=q>z?z:q,r=r>u?u:r,r=r>w?w:r,r=r>y?y:r,r=r>A?A:r,o=t>o?t:o,o=v>o?v:o,o=x>o?x:o,o=z>o?z:o,p=u>p?u:p,p=w>p?w:p,p=y>p?y:p,p=A>p?A:p}var B=this._bounds;return B.x=q,B.width=o-q,B.y=r,B.height=p-r,this._currentBounds=B,B},b.Sprite.prototype._renderWebGL=function(a,b){if(this.visible&&!(this.alpha<=0)&&this.renderable){var c=this.worldTransform;if(b&&(c=b),this._mask||this._filters){var d=a.spriteBatch;this._filters&&(d.flush(),a.filterManager.pushFilter(this._filterBlock)),this._mask&&(d.stop(),a.maskManager.pushMask(this.mask,a),d.start()),d.render(this);for(var e=0;e>16&255)/255,(a>>8&255)/255,(255&a)/255]},b.rgb2hex=function(a){return(255*a[0]<<16)+(255*a[1]<<8)+255*a[2]},b.canUseNewCanvasBlendModes=function(){if(void 0===document)return!1;var a="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAQAAAABAQMAAADD8p2OAAAAA1BMVEX/",c="AAAACklEQVQI12NgAAAAAgAB4iG8MwAAAABJRU5ErkJggg==",d=new Image;d.src=a+"AP804Oa6"+c;var e=new Image;e.src=a+"/wCKxvRF"+c;var f=b.CanvasPool.create(this,6,1),g=f.getContext("2d");if(g.globalCompositeOperation="multiply",g.drawImage(d,0,0),g.drawImage(e,2,0),!g.getImageData(2,0,1,1))return!1;var h=g.getImageData(2,0,1,1).data;return b.CanvasPool.remove(this),255===h[0]&&0===h[1]&&0===h[2]},b.getNextPowerOfTwo=function(a){if(a>0&&0===(a&a-1))return a;for(var b=1;a>b;)b<<=1;return b},b.isPowerOfTwo=function(a,b){return a>0&&0===(a&a-1)&&b>0&&0===(b&b-1)},b.CanvasPool={create:function(a,c,d){var e,f=b.CanvasPool.getFirst();if(-1===f){var g={parent:a,canvas:document.createElement("canvas")};b.CanvasPool.pool.push(g),e=g.canvas}else b.CanvasPool.pool[f].parent=a,e=b.CanvasPool.pool[f].canvas;return void 0!==c&&(e.width=c,e.height=d),e},getFirst:function(){for(var a=b.CanvasPool.pool,c=0;cd;d+=6,e+=4)this.indices[d+0]=e+0,this.indices[d+1]=e+1,this.indices[d+2]=e+2,this.indices[d+3]=e+0,this.indices[d+4]=e+2,this.indices[d+5]=e+3;this.drawing=!1,this.currentBatchSize=0,this.currentBaseTexture=null,this.dirty=!0,this.textures=[],this.blendModes=[],this.shaders=[],this.sprites=[],this.defaultShader=new b.AbstractFilter(["precision lowp float;","varying vec2 vTextureCoord;","varying vec4 vColor;","uniform sampler2D uSampler;","void main(void) {"," gl_FragColor = texture2D(uSampler, vTextureCoord) * vColor ;","}"])},b.WebGLSpriteBatch.prototype.setContext=function(a){this.gl=a,this.vertexBuffer=a.createBuffer(),this.indexBuffer=a.createBuffer(),a.bindBuffer(a.ELEMENT_ARRAY_BUFFER,this.indexBuffer),a.bufferData(a.ELEMENT_ARRAY_BUFFER,this.indices,a.STATIC_DRAW),a.bindBuffer(a.ARRAY_BUFFER,this.vertexBuffer),a.bufferData(a.ARRAY_BUFFER,this.vertices,a.DYNAMIC_DRAW),this.currentBlendMode=99999;var c=new b.PixiShader(a);c.fragmentSrc=this.defaultShader.fragmentSrc,c.uniforms={},c.init(),this.defaultShader.shaders[a.id]=c},b.WebGLSpriteBatch.prototype.begin=function(a){this.renderSession=a,this.shader=this.renderSession.shaderManager.defaultShader,this.start()},b.WebGLSpriteBatch.prototype.end=function(){this.flush()},b.WebGLSpriteBatch.prototype.render=function(a,b){var c=a.texture,d=a.worldTransform;b&&(d=b),this.currentBatchSize>=this.size&&(this.flush(),this.currentBaseTexture=c.baseTexture);var e=c._uvs;if(e){var f,g,h,i,j=a.anchor.x,k=a.anchor.y;if(c.trim){var l=c.trim;g=l.x-j*l.width,f=g+c.crop.width,i=l.y-k*l.height,h=i+c.crop.height}else f=c.frame.width*(1-j),g=c.frame.width*-j,h=c.frame.height*(1-k),i=c.frame.height*-k;var m=4*this.currentBatchSize*this.vertSize,n=c.baseTexture.resolution,o=d.a/n,p=d.b/n,q=d.c/n,r=d.d/n,s=d.tx,t=d.ty,u=this.colors,v=this.positions;this.renderSession.roundPixels?(v[m]=o*g+q*i+s|0,v[m+1]=r*i+p*g+t|0,v[m+5]=o*f+q*i+s|0,v[m+6]=r*i+p*f+t|0,v[m+10]=o*f+q*h+s|0,v[m+11]=r*h+p*f+t|0,v[m+15]=o*g+q*h+s|0,v[m+16]=r*h+p*g+t|0):(v[m]=o*g+q*i+s,v[m+1]=r*i+p*g+t,v[m+5]=o*f+q*i+s,v[m+6]=r*i+p*f+t,v[m+10]=o*f+q*h+s,v[m+11]=r*h+p*f+t,v[m+15]=o*g+q*h+s,v[m+16]=r*h+p*g+t),v[m+2]=e.x0,v[m+3]=e.y0,v[m+7]=e.x1,v[m+8]=e.y1,v[m+12]=e.x2,v[m+13]=e.y2,v[m+17]=e.x3,v[m+18]=e.y3;var w=a.tint;u[m+4]=u[m+9]=u[m+14]=u[m+19]=(w>>16)+(65280&w)+((255&w)<<16)+(255*a.worldAlpha<<24),this.sprites[this.currentBatchSize++]=a}},b.WebGLSpriteBatch.prototype.renderTilingSprite=function(a){var c=a.tilingTexture;this.currentBatchSize>=this.size&&(this.flush(),this.currentBaseTexture=c.baseTexture),a._uvs||(a._uvs=new b.TextureUvs);var d=a._uvs,e=c.baseTexture.width,f=c.baseTexture.height;a.tilePosition.x%=e*a.tileScaleOffset.x,a.tilePosition.y%=f*a.tileScaleOffset.y;var g=a.tilePosition.x/(e*a.tileScaleOffset.x),h=a.tilePosition.y/(f*a.tileScaleOffset.y),i=a.width/e/(a.tileScale.x*a.tileScaleOffset.x),j=a.height/f/(a.tileScale.y*a.tileScaleOffset.y);d.x0=0-g,d.y0=0-h,d.x1=1*i-g,d.y1=0-h,d.x2=1*i-g,d.y2=1*j-h,d.x3=0-g,d.y3=1*j-h;var k=a.tint,l=(k>>16)+(65280&k)+((255&k)<<16)+(255*a.worldAlpha<<24),m=this.positions,n=this.colors,o=a.width,p=a.height,q=a.anchor.x,r=a.anchor.y,s=o*(1-q),t=o*-q,u=p*(1-r),v=p*-r,w=4*this.currentBatchSize*this.vertSize,x=c.baseTexture.resolution,y=a.worldTransform,z=y.a/x,A=y.b/x,B=y.c/x,C=y.d/x,D=y.tx,E=y.ty;m[w++]=z*t+B*v+D,m[w++]=C*v+A*t+E,m[w++]=d.x0,m[w++]=d.y0,n[w++]=l,m[w++]=z*s+B*v+D,m[w++]=C*v+A*s+E,m[w++]=d.x1,m[w++]=d.y1,n[w++]=l,m[w++]=z*s+B*u+D,m[w++]=C*u+A*s+E,m[w++]=d.x2,m[w++]=d.y2,n[w++]=l,m[w++]=z*t+B*u+D,m[w++]=C*u+A*t+E,m[w++]=d.x3,m[w++]=d.y3,n[w++]=l,this.sprites[this.currentBatchSize++]=a},b.WebGLSpriteBatch.prototype.flush=function(){if(0!==this.currentBatchSize){var a,c=this.gl;if(this.dirty){this.dirty=!1,c.activeTexture(c.TEXTURE0),c.bindBuffer(c.ARRAY_BUFFER,this.vertexBuffer),c.bindBuffer(c.ELEMENT_ARRAY_BUFFER,this.indexBuffer),a=this.defaultShader.shaders[c.id];var d=4*this.vertSize;c.vertexAttribPointer(a.aVertexPosition,2,c.FLOAT,!1,d,0),c.vertexAttribPointer(a.aTextureCoord,2,c.FLOAT,!1,d,8),c.vertexAttribPointer(a.colorAttribute,4,c.UNSIGNED_BYTE,!0,d,16)}if(this.currentBatchSize>.5*this.size)c.bufferSubData(c.ARRAY_BUFFER,0,this.vertices);else{var e=this.positions.subarray(0,4*this.currentBatchSize*this.vertSize);c.bufferSubData(c.ARRAY_BUFFER,0,e)}for(var f,g,h,i,j=0,k=0,l=null,m=this.renderSession.blendModeManager.currentBlendMode,n=null,o=!1,p=!1,q=0,r=this.currentBatchSize;r>q;q++){i=this.sprites[q],f=i.tilingTexture?i.tilingTexture.baseTexture:i.texture.baseTexture,g=i.blendMode,h=i.shader||this.defaultShader,o=m!==g,p=n!==h;var s=f.skipRender;if(s&&i.children.length>0&&(s=!1),(l!==f&&!s||o||p)&&(this.renderBatch(l,j,k),k=q,j=0,l=f,o&&(m=g,this.renderSession.blendModeManager.setBlendMode(m)),p)){n=h,a=n.shaders[c.id],a||(a=new b.PixiShader(c),a.fragmentSrc=n.fragmentSrc,a.uniforms=n.uniforms,a.init(),n.shaders[c.id]=a),this.renderSession.shaderManager.setShader(a),a.dirty&&a.syncUniforms();var t=this.renderSession.projection;c.uniform2f(a.projectionVector,t.x,t.y);var u=this.renderSession.offset;c.uniform2f(a.offsetVector,u.x,u.y)}j++}this.renderBatch(l,j,k),this.currentBatchSize=0}},b.WebGLSpriteBatch.prototype.renderBatch=function(a,b,c){if(0!==b){var d=this.gl;if(a._dirty[d.id]){if(!this.renderSession.renderer.updateTexture(a))return}else d.bindTexture(d.TEXTURE_2D,a._glTextures[d.id]);d.drawElements(d.TRIANGLES,6*b,d.UNSIGNED_SHORT,6*c*2),this.renderSession.drawCount++}},b.WebGLSpriteBatch.prototype.stop=function(){this.flush(),this.dirty=!0},b.WebGLSpriteBatch.prototype.start=function(){this.dirty=!0},b.WebGLSpriteBatch.prototype.destroy=function(){this.vertices=null,this.indices=null,this.gl.deleteBuffer(this.vertexBuffer),this.gl.deleteBuffer(this.indexBuffer),this.currentBaseTexture=null,this.gl=null},b.WebGLFastSpriteBatch=function(a){this.vertSize=10,this.maxSize=6e3,this.size=this.maxSize;var c=4*this.size*this.vertSize,d=6*this.maxSize;this.vertices=new b.Float32Array(c),this.indices=new b.Uint16Array(d),this.vertexBuffer=null,this.indexBuffer=null,this.lastIndexCount=0;for(var e=0,f=0;d>e;e+=6,f+=4)this.indices[e+0]=f+0,this.indices[e+1]=f+1,this.indices[e+2]=f+2,this.indices[e+3]=f+0,this.indices[e+4]=f+2,this.indices[e+5]=f+3;this.drawing=!1,this.currentBatchSize=0,this.currentBaseTexture=null,this.currentBlendMode=0,this.renderSession=null,this.shader=null,this.matrix=null,this.setContext(a)},b.WebGLFastSpriteBatch.prototype.constructor=b.WebGLFastSpriteBatch,b.WebGLFastSpriteBatch.prototype.setContext=function(a){this.gl=a,this.vertexBuffer=a.createBuffer(),this.indexBuffer=a.createBuffer(),a.bindBuffer(a.ELEMENT_ARRAY_BUFFER,this.indexBuffer),a.bufferData(a.ELEMENT_ARRAY_BUFFER,this.indices,a.STATIC_DRAW),a.bindBuffer(a.ARRAY_BUFFER,this.vertexBuffer),a.bufferData(a.ARRAY_BUFFER,this.vertices,a.DYNAMIC_DRAW)},b.WebGLFastSpriteBatch.prototype.begin=function(a,b){this.renderSession=b,this.shader=this.renderSession.shaderManager.fastShader,this.matrix=a.worldTransform.toArray(!0),this.start()},b.WebGLFastSpriteBatch.prototype.end=function(){this.flush()},b.WebGLFastSpriteBatch.prototype.render=function(a){var b=a.children,c=b[0];if(c.texture._uvs){this.currentBaseTexture=c.texture.baseTexture,c.blendMode!==this.renderSession.blendModeManager.currentBlendMode&&(this.flush(),this.renderSession.blendModeManager.setBlendMode(c.blendMode));for(var d=0,e=b.length;e>d;d++)this.renderSprite(b[d]);this.flush()}},b.WebGLFastSpriteBatch.prototype.renderSprite=function(a){if(a.visible&&(a.texture.baseTexture===this.currentBaseTexture||a.texture.baseTexture.skipRender||(this.flush(),this.currentBaseTexture=a.texture.baseTexture,a.texture._uvs))){var b,c,d,e,f,g,h,i,j=this.vertices;if(b=a.texture._uvs,c=a.texture.frame.width,d=a.texture.frame.height,a.texture.trim){var k=a.texture.trim;f=k.x-a.anchor.x*k.width,e=f+a.texture.crop.width,h=k.y-a.anchor.y*k.height,g=h+a.texture.crop.height}else e=a.texture.frame.width*(1-a.anchor.x),f=a.texture.frame.width*-a.anchor.x,g=a.texture.frame.height*(1-a.anchor.y),h=a.texture.frame.height*-a.anchor.y;i=4*this.currentBatchSize*this.vertSize,j[i++]=f,j[i++]=h,j[i++]=a.position.x,j[i++]=a.position.y,j[i++]=a.scale.x,j[i++]=a.scale.y,j[i++]=a.rotation,j[i++]=b.x0,j[i++]=b.y1,j[i++]=a.alpha,j[i++]=e,j[i++]=h,j[i++]=a.position.x,j[i++]=a.position.y,j[i++]=a.scale.x,j[i++]=a.scale.y,j[i++]=a.rotation,j[i++]=b.x1,j[i++]=b.y1,j[i++]=a.alpha,j[i++]=e,j[i++]=g,j[i++]=a.position.x,j[i++]=a.position.y,j[i++]=a.scale.x,j[i++]=a.scale.y,j[i++]=a.rotation,j[i++]=b.x2,j[i++]=b.y2,j[i++]=a.alpha,j[i++]=f,j[i++]=g,j[i++]=a.position.x,j[i++]=a.position.y,j[i++]=a.scale.x,j[i++]=a.scale.y,j[i++]=a.rotation,j[i++]=b.x3,j[i++]=b.y3,j[i++]=a.alpha,this.currentBatchSize++,this.currentBatchSize>=this.size&&this.flush()}},b.WebGLFastSpriteBatch.prototype.flush=function(){if(0!==this.currentBatchSize){var a=this.gl;if(this.currentBaseTexture._glTextures[a.id]||this.renderSession.renderer.updateTexture(this.currentBaseTexture,a),a.bindTexture(a.TEXTURE_2D,this.currentBaseTexture._glTextures[a.id]),this.currentBatchSize>.5*this.size)a.bufferSubData(a.ARRAY_BUFFER,0,this.vertices);else{var b=this.vertices.subarray(0,4*this.currentBatchSize*this.vertSize);a.bufferSubData(a.ARRAY_BUFFER,0,b)}a.drawElements(a.TRIANGLES,6*this.currentBatchSize,a.UNSIGNED_SHORT,0),this.currentBatchSize=0,this.renderSession.drawCount++}},b.WebGLFastSpriteBatch.prototype.stop=function(){this.flush()},b.WebGLFastSpriteBatch.prototype.start=function(){var a=this.gl;a.activeTexture(a.TEXTURE0),a.bindBuffer(a.ARRAY_BUFFER,this.vertexBuffer),a.bindBuffer(a.ELEMENT_ARRAY_BUFFER,this.indexBuffer);var b=this.renderSession.projection;a.uniform2f(this.shader.projectionVector,b.x,b.y),a.uniformMatrix3fv(this.shader.uMatrix,!1,this.matrix);var c=4*this.vertSize;a.vertexAttribPointer(this.shader.aVertexPosition,2,a.FLOAT,!1,c,0),a.vertexAttribPointer(this.shader.aPositionCoord,2,a.FLOAT,!1,c,8),a.vertexAttribPointer(this.shader.aScale,2,a.FLOAT,!1,c,16),a.vertexAttribPointer(this.shader.aRotation,1,a.FLOAT,!1,c,24),a.vertexAttribPointer(this.shader.aTextureCoord,2,a.FLOAT,!1,c,28),a.vertexAttribPointer(this.shader.colorAttribute,1,a.FLOAT,!1,c,36)},b.WebGLFilterManager=function(){this.filterStack=[],this.offsetX=0,this.offsetY=0},b.WebGLFilterManager.prototype.constructor=b.WebGLFilterManager,b.WebGLFilterManager.prototype.setContext=function(a){this.gl=a,this.texturePool=[],this.initShaderBuffers()},b.WebGLFilterManager.prototype.begin=function(a,b){this.renderSession=a,this.defaultShader=a.shaderManager.defaultShader;var c=this.renderSession.projection;this.width=2*c.x,this.height=2*-c.y,this.buffer=b},b.WebGLFilterManager.prototype.pushFilter=function(a){var c=this.gl,d=this.renderSession.projection,e=this.renderSession.offset;a._filterArea=a.target.filterArea||a.target.getBounds(),a._previous_stencil_mgr=this.renderSession.stencilManager,this.renderSession.stencilManager=new b.WebGLStencilManager,this.renderSession.stencilManager.setContext(c),c.disable(c.STENCIL_TEST),this.filterStack.push(a);var f=a.filterPasses[0];this.offsetX+=a._filterArea.x,this.offsetY+=a._filterArea.y;var g=this.texturePool.pop();g?g.resize(this.width*this.renderSession.resolution,this.height*this.renderSession.resolution):g=new b.FilterTexture(this.gl,this.width*this.renderSession.resolution,this.height*this.renderSession.resolution),c.bindTexture(c.TEXTURE_2D,g.texture);var h=a._filterArea,i=f.padding;h.x-=i,h.y-=i,h.width+=2*i,h.height+=2*i,h.x<0&&(h.x=0),h.width>this.width&&(h.width=this.width),h.y<0&&(h.y=0),h.height>this.height&&(h.height=this.height),c.bindFramebuffer(c.FRAMEBUFFER,g.frameBuffer),c.viewport(0,0,h.width*this.renderSession.resolution,h.height*this.renderSession.resolution),d.x=h.width/2,d.y=-h.height/2,e.x=-h.x,e.y=-h.y,c.colorMask(!0,!0,!0,!0),c.clearColor(0,0,0,0),c.clear(c.COLOR_BUFFER_BIT),a._glFilterTexture=g},b.WebGLFilterManager.prototype.popFilter=function(){var a=this.gl,c=this.filterStack.pop(),d=c._filterArea,e=c._glFilterTexture,f=this.renderSession.projection,g=this.renderSession.offset;if(c.filterPasses.length>1){a.viewport(0,0,d.width*this.renderSession.resolution,d.height*this.renderSession.resolution),a.bindBuffer(a.ARRAY_BUFFER,this.vertexBuffer),this.vertexArray[0]=0,this.vertexArray[1]=d.height,this.vertexArray[2]=d.width,this.vertexArray[3]=d.height,this.vertexArray[4]=0,this.vertexArray[5]=0,this.vertexArray[6]=d.width,this.vertexArray[7]=0,a.bufferSubData(a.ARRAY_BUFFER,0,this.vertexArray),a.bindBuffer(a.ARRAY_BUFFER,this.uvBuffer),this.uvArray[2]=d.width/this.width,this.uvArray[5]=d.height/this.height,this.uvArray[6]=d.width/this.width,this.uvArray[7]=d.height/this.height,a.bufferSubData(a.ARRAY_BUFFER,0,this.uvArray);var h=e,i=this.texturePool.pop();i||(i=new b.FilterTexture(this.gl,this.width*this.renderSession.resolution,this.height*this.renderSession.resolution)),i.resize(this.width*this.renderSession.resolution,this.height*this.renderSession.resolution),a.bindFramebuffer(a.FRAMEBUFFER,i.frameBuffer),a.clear(a.COLOR_BUFFER_BIT),a.disable(a.BLEND);for(var j=0;j0?a.enable(a.STENCIL_TEST):a.disable(a.STENCIL_TEST),this.applyFilterPass(m,d,n,o),this.texturePool.push(e),c._glFilterTexture=null},b.WebGLFilterManager.prototype.applyFilterPass=function(a,c,d,e){var f=this.gl,g=a.shaders[f.id];g||(g=new b.PixiShader(f),g.fragmentSrc=a.fragmentSrc,g.uniforms=a.uniforms,g.init(),a.shaders[f.id]=g),this.renderSession.shaderManager.setShader(g),f.uniform2f(g.projectionVector,d/2,-e/2),f.uniform2f(g.offsetVector,0,0),a.uniforms.dimensions&&(a.uniforms.dimensions.value[0]=this.width,a.uniforms.dimensions.value[1]=this.height,a.uniforms.dimensions.value[2]=this.vertexArray[0],a.uniforms.dimensions.value[3]=this.vertexArray[5]),g.syncUniforms(),f.bindBuffer(f.ARRAY_BUFFER,this.vertexBuffer),f.vertexAttribPointer(g.aVertexPosition,2,f.FLOAT,!1,0,0),f.bindBuffer(f.ARRAY_BUFFER,this.uvBuffer),f.vertexAttribPointer(g.aTextureCoord,2,f.FLOAT,!1,0,0),f.bindBuffer(f.ARRAY_BUFFER,this.colorBuffer),f.vertexAttribPointer(g.colorAttribute,2,f.FLOAT,!1,0,0),f.bindBuffer(f.ELEMENT_ARRAY_BUFFER,this.indexBuffer),f.drawElements(f.TRIANGLES,6,f.UNSIGNED_SHORT,0),this.renderSession.drawCount++},b.WebGLFilterManager.prototype.initShaderBuffers=function(){var a=this.gl;this.vertexBuffer=a.createBuffer(),this.uvBuffer=a.createBuffer(),this.colorBuffer=a.createBuffer(),this.indexBuffer=a.createBuffer(),this.vertexArray=new b.Float32Array([0,0,1,0,0,1,1,1]),a.bindBuffer(a.ARRAY_BUFFER,this.vertexBuffer),a.bufferData(a.ARRAY_BUFFER,this.vertexArray,a.STATIC_DRAW),this.uvArray=new b.Float32Array([0,0,1,0,0,1,1,1]),a.bindBuffer(a.ARRAY_BUFFER,this.uvBuffer),a.bufferData(a.ARRAY_BUFFER,this.uvArray,a.STATIC_DRAW),this.colorArray=new b.Float32Array([1,16777215,1,16777215,1,16777215,1,16777215]),a.bindBuffer(a.ARRAY_BUFFER,this.colorBuffer),a.bufferData(a.ARRAY_BUFFER,this.colorArray,a.STATIC_DRAW),a.bindBuffer(a.ELEMENT_ARRAY_BUFFER,this.indexBuffer),a.bufferData(a.ELEMENT_ARRAY_BUFFER,new Uint16Array([0,1,2,1,3,2]),a.STATIC_DRAW)},b.WebGLFilterManager.prototype.destroy=function(){var a=this.gl;this.filterStack=null,this.offsetX=0,this.offsetY=0;for(var b=0;b=0;a--){var c=this._glTextures[a],d=b.glContexts[a];d&&c&&d.deleteTexture(c)}this._glTextures.length=0,this.dirty()},b.BaseTexture.fromImage=function(a,c,d){var e=b.BaseTextureCache[a];if(void 0===c&&-1===a.indexOf("data:")&&(c=!0),!e){var f=new Image;c&&(f.crossOrigin=""),f.src=a,e=new b.BaseTexture(f,d),e.imageUrl=a,b.BaseTextureCache[a]=e,-1!==a.indexOf(b.RETINA_PREFIX+".")&&(e.resolution=2)}return e},b.BaseTexture.fromCanvas=function(a,c){a._pixiId||(a._pixiId="canvas_"+b.TextureCacheIdGenerator++),0===a.width&&(a.width=1),0===a.height&&(a.height=1);var d=b.BaseTextureCache[a._pixiId];return d||(d=new b.BaseTexture(a,c),b.BaseTextureCache[a._pixiId]=d),d},b.TextureCache={},b.FrameCache={},b.TextureSilentFail=!1,b.TextureCacheIdGenerator=0,b.Texture=function(a,c,d,e){this.noFrame=!1,c||(this.noFrame=!0,c=new b.Rectangle(0,0,1,1)),a instanceof b.Texture&&(a=a.baseTexture),this.baseTexture=a,this.frame=c,this.trim=e,this.valid=!1,this.isTiling=!1,this.requiresUpdate=!1,this.requiresReTint=!1,this._uvs=null,this.width=0,this.height=0,this.crop=d||new b.Rectangle(0,0,1,1),a.hasLoaded&&(this.noFrame&&(c=new b.Rectangle(0,0,a.width,a.height)),this.setFrame(c))},b.Texture.prototype.constructor=b.Texture,b.Texture.prototype.onBaseTextureLoaded=function(){var a=this.baseTexture;this.noFrame&&(this.frame=new b.Rectangle(0,0,a.width,a.height)),this.setFrame(this.frame)},b.Texture.prototype.destroy=function(a){a&&this.baseTexture.destroy(),this.valid=!1},b.Texture.prototype.setFrame=function(a){if(this.noFrame=!1,this.frame=a,this.width=a.width,this.height=a.height,this.crop.x=a.x,this.crop.y=a.y,this.crop.width=a.width,this.crop.height=a.height,!this.trim&&(a.x+a.width>this.baseTexture.width||a.y+a.height>this.baseTexture.height)){if(!b.TextureSilentFail)throw new Error("Texture Error: frame does not fit inside the base Texture dimensions "+this);return void(this.valid=!1)}this.valid=a&&a.width&&a.height&&this.baseTexture.source&&this.baseTexture.hasLoaded,this.trim&&(this.width=this.trim.width,this.height=this.trim.height,this.frame.width=this.trim.width,this.frame.height=this.trim.height),this.valid&&this._updateUvs()},b.Texture.prototype._updateUvs=function(){this._uvs||(this._uvs=new b.TextureUvs);var a=this.crop,c=this.baseTexture.width,d=this.baseTexture.height;this._uvs.x0=a.x/c,this._uvs.y0=a.y/d,this._uvs.x1=(a.x+a.width)/c,this._uvs.y1=a.y/d,this._uvs.x2=(a.x+a.width)/c,this._uvs.y2=(a.y+a.height)/d,this._uvs.x3=a.x/c,this._uvs.y3=(a.y+a.height)/d},b.Texture.fromImage=function(a,c,d){var e=b.TextureCache[a];return e||(e=new b.Texture(b.BaseTexture.fromImage(a,c,d)),b.TextureCache[a]=e),e},b.Texture.fromFrame=function(a){var c=b.TextureCache[a];if(!c)throw new Error('The frameId "'+a+'" does not exist in the texture cache ');return c},b.Texture.fromCanvas=function(a,c){var d=b.BaseTexture.fromCanvas(a,c);return new b.Texture(d)},b.Texture.addTextureToCache=function(a,c){b.TextureCache[c]=a},b.Texture.removeTextureFromCache=function(a){var c=b.TextureCache[a];return delete b.TextureCache[a],delete b.BaseTextureCache[a],c},b.TextureUvs=function(){this.x0=0,this.y0=0,this.x1=0,this.y1=0,this.x2=0,this.y2=0,this.x3=0,this.y3=0},b.RenderTexture=function(a,c,d,e,f){if(this.width=a||100,this.height=c||100,this.resolution=f||1,this.frame=new b.Rectangle(0,0,this.width*this.resolution,this.height*this.resolution),this.crop=new b.Rectangle(0,0,this.width*this.resolution,this.height*this.resolution),this.baseTexture=new b.BaseTexture,this.baseTexture.width=this.width*this.resolution,this.baseTexture.height=this.height*this.resolution,this.baseTexture._glTextures=[],this.baseTexture.resolution=this.resolution,this.baseTexture.scaleMode=e||b.scaleModes.DEFAULT,this.baseTexture.hasLoaded=!0,b.Texture.call(this,this.baseTexture,new b.Rectangle(0,0,this.width*this.resolution,this.height*this.resolution)),this.renderer=d||b.defaultRenderer,this.renderer.type===b.WEBGL_RENDERER){var g=this.renderer.gl;this.baseTexture._dirty[g.id]=!1,this.textureBuffer=new b.FilterTexture(g,this.width,this.height,this.baseTexture.scaleMode),this.baseTexture._glTextures[g.id]=this.textureBuffer.texture,this.render=this.renderWebGL,this.projection=new b.Point(.5*this.width,.5*-this.height)}else this.render=this.renderCanvas,this.textureBuffer=new b.CanvasBuffer(this.width*this.resolution,this.height*this.resolution),this.baseTexture.source=this.textureBuffer.canvas;this.valid=!0,this.tempMatrix=new Phaser.Matrix,this._updateUvs()},b.RenderTexture.prototype=Object.create(b.Texture.prototype),b.RenderTexture.prototype.constructor=b.RenderTexture,b.RenderTexture.prototype.resize=function(a,c,d){(a!==this.width||c!==this.height)&&(this.valid=a>0&&c>0,this.width=a,this.height=c,this.frame.width=this.crop.width=a*this.resolution,this.frame.height=this.crop.height=c*this.resolution,d&&(this.baseTexture.width=this.width*this.resolution,this.baseTexture.height=this.height*this.resolution),this.renderer.type===b.WEBGL_RENDERER&&(this.projection.x=this.width/2,this.projection.y=-this.height/2),this.valid&&this.textureBuffer.resize(this.width,this.height))},b.RenderTexture.prototype.clear=function(){this.valid&&(this.renderer.type===b.WEBGL_RENDERER&&this.renderer.gl.bindFramebuffer(this.renderer.gl.FRAMEBUFFER,this.textureBuffer.frameBuffer),this.textureBuffer.clear())},b.RenderTexture.prototype.renderWebGL=function(a,b,c){if(this.valid&&0!==a.alpha){var d=a.worldTransform;d.identity(),d.translate(0,2*this.projection.y),b&&d.append(b),d.scale(1,-1);for(var e=0;ea;a++)this.shaders[a].dirty=!0},b.Strip=function(a){b.DisplayObjectContainer.call(this),this.texture=a,this.uvs=new b.Float32Array([0,1,1,1,1,0,0,1]),this.vertices=new b.Float32Array([0,0,100,0,100,100,0,100]),this.colors=new b.Float32Array([1,1,1,1]),this.indices=new b.Uint16Array([0,1,2,3]),this.dirty=!0,this.blendMode=b.blendModes.NORMAL,this.canvasPadding=0,this.drawMode=b.Strip.DrawModes.TRIANGLE_STRIP},b.Strip.prototype=Object.create(b.DisplayObjectContainer.prototype),b.Strip.prototype.constructor=b.Strip,b.Strip.prototype._renderWebGL=function(a){!this.visible||this.alpha<=0||(a.spriteBatch.stop(),this._vertexBuffer||this._initWebGL(a),a.shaderManager.setShader(a.shaderManager.stripShader),this._renderStrip(a),a.spriteBatch.start())},b.Strip.prototype._initWebGL=function(a){var b=a.gl;this._vertexBuffer=b.createBuffer(),this._indexBuffer=b.createBuffer(),this._uvBuffer=b.createBuffer(),this._colorBuffer=b.createBuffer(),b.bindBuffer(b.ARRAY_BUFFER,this._vertexBuffer),b.bufferData(b.ARRAY_BUFFER,this.vertices,b.DYNAMIC_DRAW),b.bindBuffer(b.ARRAY_BUFFER,this._uvBuffer),b.bufferData(b.ARRAY_BUFFER,this.uvs,b.STATIC_DRAW),b.bindBuffer(b.ARRAY_BUFFER,this._colorBuffer),b.bufferData(b.ARRAY_BUFFER,this.colors,b.STATIC_DRAW),b.bindBuffer(b.ELEMENT_ARRAY_BUFFER,this._indexBuffer),b.bufferData(b.ELEMENT_ARRAY_BUFFER,this.indices,b.STATIC_DRAW)},b.Strip.prototype._renderStrip=function(a){var c=a.gl,d=a.projection,e=a.offset,f=a.shaderManager.stripShader,g=this.drawMode===b.Strip.DrawModes.TRIANGLE_STRIP?c.TRIANGLE_STRIP:c.TRIANGLES;a.blendModeManager.setBlendMode(this.blendMode),c.uniformMatrix3fv(f.translationMatrix,!1,this.worldTransform.toArray(!0)),c.uniform2f(f.projectionVector,d.x,-d.y),c.uniform2f(f.offsetVector,-e.x,-e.y),c.uniform1f(f.alpha,this.worldAlpha),this.dirty?(this.dirty=!1,c.bindBuffer(c.ARRAY_BUFFER,this._vertexBuffer),c.bufferData(c.ARRAY_BUFFER,this.vertices,c.STATIC_DRAW),c.vertexAttribPointer(f.aVertexPosition,2,c.FLOAT,!1,0,0),c.bindBuffer(c.ARRAY_BUFFER,this._uvBuffer),c.bufferData(c.ARRAY_BUFFER,this.uvs,c.STATIC_DRAW),c.vertexAttribPointer(f.aTextureCoord,2,c.FLOAT,!1,0,0),c.activeTexture(c.TEXTURE0),this.texture.baseTexture._dirty[c.id]?a.renderer.updateTexture(this.texture.baseTexture):c.bindTexture(c.TEXTURE_2D,this.texture.baseTexture._glTextures[c.id]),c.bindBuffer(c.ELEMENT_ARRAY_BUFFER,this._indexBuffer),c.bufferData(c.ELEMENT_ARRAY_BUFFER,this.indices,c.STATIC_DRAW)):(c.bindBuffer(c.ARRAY_BUFFER,this._vertexBuffer),c.bufferSubData(c.ARRAY_BUFFER,0,this.vertices),c.vertexAttribPointer(f.aVertexPosition,2,c.FLOAT,!1,0,0),c.bindBuffer(c.ARRAY_BUFFER,this._uvBuffer),c.vertexAttribPointer(f.aTextureCoord,2,c.FLOAT,!1,0,0),c.activeTexture(c.TEXTURE0),this.texture.baseTexture._dirty[c.id]?a.renderer.updateTexture(this.texture.baseTexture):c.bindTexture(c.TEXTURE_2D,this.texture.baseTexture._glTextures[c.id]),c.bindBuffer(c.ELEMENT_ARRAY_BUFFER,this._indexBuffer)),c.drawElements(g,this.indices.length,c.UNSIGNED_SHORT,0)},b.Strip.prototype._renderCanvas=function(a){var c=a.context,d=this.worldTransform,e=d.tx*a.resolution+a.shakeX,f=d.ty*a.resolution+a.shakeY;a.roundPixels?c.setTransform(d.a,d.b,d.c,d.d,0|e,0|f):c.setTransform(d.a,d.b,d.c,d.d,e,f),this.drawMode===b.Strip.DrawModes.TRIANGLE_STRIP?this._renderCanvasTriangleStrip(c):this._renderCanvasTriangles(c)},b.Strip.prototype._renderCanvasTriangleStrip=function(a){var b=this.vertices,c=this.uvs,d=b.length/2;this.count++;for(var e=0;d-2>e;e++){var f=2*e;this._renderCanvasDrawTriangle(a,b,c,f,f+2,f+4)}},b.Strip.prototype._renderCanvasTriangles=function(a){var b=this.vertices,c=this.uvs,d=this.indices,e=d.length;this.count++;for(var f=0;e>f;f+=3){var g=2*d[f],h=2*d[f+1],i=2*d[f+2];this._renderCanvasDrawTriangle(a,b,c,g,h,i)}},b.Strip.prototype._renderCanvasDrawTriangle=function(a,b,c,d,e,f){var g=this.texture.baseTexture.source,h=this.texture.width,i=this.texture.height,j=b[d],k=b[e],l=b[f],m=b[d+1],n=b[e+1],o=b[f+1],p=c[d]*h,q=c[e]*h,r=c[f]*h,s=c[d+1]*i,t=c[e+1]*i,u=c[f+1]*i;if(this.canvasPadding>0){var v=this.canvasPadding/this.worldTransform.a,w=this.canvasPadding/this.worldTransform.d,x=(j+k+l)/3,y=(m+n+o)/3,z=j-x,A=m-y,B=Math.sqrt(z*z+A*A);j=x+z/B*(B+v),m=y+A/B*(B+w),z=k-x,A=n-y,B=Math.sqrt(z*z+A*A),k=x+z/B*(B+v),n=y+A/B*(B+w),z=l-x,A=o-y,B=Math.sqrt(z*z+A*A),l=x+z/B*(B+v),o=y+A/B*(B+w)}a.save(),a.beginPath(),a.moveTo(j,m),a.lineTo(k,n),a.lineTo(l,o),a.closePath(),a.clip();var C=p*t+s*r+q*u-t*r-s*q-p*u,D=j*t+s*l+k*u-t*l-s*k-j*u,E=p*k+j*r+q*l-k*r-j*q-p*l,F=p*t*l+s*k*r+j*q*u-j*t*r-s*q*l-p*k*u,G=m*t+s*o+n*u-t*o-s*n-m*u,H=p*n+m*r+q*o-n*r-m*q-p*o,I=p*t*o+s*n*r+m*q*u-m*t*r-s*q*o-p*n*u;a.transform(D/C,G/C,E/C,H/C,F/C,I/C),a.drawImage(g,0,0),a.restore()},b.Strip.prototype.renderStripFlat=function(a){var b=this.context,c=a.vertices,d=c.length/2;this.count++,b.beginPath();for(var e=1;d-2>e;e++){var f=2*e,g=c[f],h=c[f+2],i=c[f+4],j=c[f+1],k=c[f+3],l=c[f+5];b.moveTo(g,j),b.lineTo(h,k),b.lineTo(i,l)}b.fillStyle="#FF0000",b.fill(),b.closePath()},b.Strip.prototype.onTextureUpdate=function(){this.updateFrame=!0},b.Strip.prototype.getBounds=function(a){for(var c=a||this.worldTransform,d=c.a,e=c.b,f=c.c,g=c.d,h=c.tx,i=c.ty,j=-(1/0),k=-(1/0),l=1/0,m=1/0,n=this.vertices,o=0,p=n.length;p>o;o+=2){var q=n[o],r=n[o+1],s=d*q+f*r+h,t=g*r+e*q+i;l=l>s?s:l,m=m>t?t:m,j=s>j?s:j,k=t>k?t:k}if(l===-(1/0)||k===1/0)return b.EmptyRectangle;var u=this._bounds;return u.x=l,u.width=j-l,u.y=m,u.height=k-m,this._currentBounds=u,u},b.Strip.DrawModes={TRIANGLE_STRIP:0,TRIANGLES:1},b.Rope=function(a,c){b.Strip.call(this,a),this.points=c,this.vertices=new b.Float32Array(4*c.length),this.uvs=new b.Float32Array(4*c.length),this.colors=new b.Float32Array(2*c.length),this.indices=new b.Uint16Array(2*c.length),this.refresh()},b.Rope.prototype=Object.create(b.Strip.prototype),b.Rope.prototype.constructor=b.Rope,b.Rope.prototype.refresh=function(){var a=this.points;if(!(a.length<1)){var b=this.uvs,c=a[0],d=this.indices,e=this.colors;this.count-=.2,b[0]=0,b[1]=0,b[2]=0,b[3]=1,e[0]=1,e[1]=1,d[0]=0,d[1]=1;for(var f,g,h,i=a.length,j=1;i>j;j++)f=a[j],g=4*j,h=j/(i-1),j%2?(b[g]=h,b[g+1]=0,b[g+2]=h,b[g+3]=1):(b[g]=h,b[g+1]=0,b[g+2]=h,b[g+3]=1),g=2*j,e[g]=1,e[g+1]=1,g=2*j,d[g]=g,d[g+1]=g+1,c=f}},b.Rope.prototype.updateTransform=function(){var a=this.points;if(!(a.length<1)){var c,d=a[0],e={x:0,y:0};this.count-=.2;for(var f,g,h,i,j,k=this.vertices,l=a.length,m=0;l>m;m++)f=a[m],g=4*m,c=m1&&(h=1),i=Math.sqrt(e.x*e.x+e.y*e.y),j=this.texture.height/2,e.x/=i,e.y/=i,e.x*=j,e.y*=j,k[g]=f.x+e.x,k[g+1]=f.y+e.y,k[g+2]=f.x-e.x,k[g+3]=f.y-e.y,d=f;b.DisplayObjectContainer.prototype.updateTransform.call(this)}},b.Rope.prototype.setTexture=function(a){this.texture=a},b.TilingSprite=function(a,c,d){b.Sprite.call(this,a),this._width=c||128,this._height=d||128,this.tileScale=new b.Point(1,1),this.tileScaleOffset=new b.Point(1,1),this.tilePosition=new b.Point,this.renderable=!0,this.tint=16777215,this.textureDebug=!1,this.blendMode=b.blendModes.NORMAL,this.canvasBuffer=null,this.tilingTexture=null,this.tilePattern=null,this.refreshTexture=!0,this.frameWidth=0,this.frameHeight=0},b.TilingSprite.prototype=Object.create(b.Sprite.prototype),b.TilingSprite.prototype.constructor=b.TilingSprite,b.TilingSprite.prototype.setTexture=function(a){this.texture!==a&&(this.texture=a,this.refreshTexture=!0,this.cachedTint=16777215)},b.TilingSprite.prototype._renderWebGL=function(a){if(this.visible&&this.renderable&&0!==this.alpha){if(this._mask&&(a.spriteBatch.stop(),a.maskManager.pushMask(this.mask,a),a.spriteBatch.start()),this._filters&&(a.spriteBatch.flush(),a.filterManager.pushFilter(this._filterBlock)),this.refreshTexture){if(this.generateTilingTexture(!0,a),!this.tilingTexture)return;this.tilingTexture.needsUpdate&&(a.renderer.updateTexture(this.tilingTexture.baseTexture),this.tilingTexture.needsUpdate=!1)}a.spriteBatch.renderTilingSprite(this);for(var b=0;bn?n:x,x=x>p?p:x,x=x>r?r:x,x=x>t?t:x,y=y>o?o:y,y=y>q?q:y,y=y>s?s:y,y=y>u?u:y,v=n>v?n:v,v=p>v?p:v,v=r>v?r:v,v=t>v?t:v,w=o>w?o:w,w=q>w?q:w,w=s>w?s:w,w=u>w?u:w;var z=this._bounds;return z.x=x,z.width=v-x,z.y=y,z.height=w-y,this._currentBounds=z,z},b.TilingSprite.prototype.destroy=function(){b.Sprite.prototype.destroy.call(this),this.canvasBuffer&&(this.canvasBuffer.destroy(),this.canvasBuffer=null),this.tileScale=null,this.tileScaleOffset=null,this.tilePosition=null,this.tilingTexture&&(this.tilingTexture.destroy(!0),this.tilingTexture=null)},Object.defineProperty(b.TilingSprite.prototype,"width",{get:function(){return this._width},set:function(a){this._width=a}}),Object.defineProperty(b.TilingSprite.prototype,"height",{get:function(){return this._height},set:function(a){this._height=a}}),"undefined"!=typeof exports?("undefined"!=typeof module&&module.exports&&(exports=module.exports=b),exports.PIXI=b):"undefined"!=typeof define&&define.amd?define("PIXI",function(){return a.PIXI=b}()):a.PIXI=b,b}).call(this),function(){function a(a,b){this._scaleFactor=a,this._deltaMode=b,this.originalEvent=null}var b=this,c=c||{VERSION:"2.5.0",GAMES:[],AUTO:0,CANVAS:1,WEBGL:2,HEADLESS:3,NONE:0,LEFT:1,RIGHT:2,UP:3,DOWN:4,SPRITE:0,BUTTON:1,IMAGE:2,GRAPHICS:3,TEXT:4,TILESPRITE:5,BITMAPTEXT:6,GROUP:7,RENDERTEXTURE:8,TILEMAP:9,TILEMAPLAYER:10,EMITTER:11,POLYGON:12,BITMAPDATA:13,CANVAS_FILTER:14,WEBGL_FILTER:15,ELLIPSE:16,SPRITEBATCH:17,RETROFONT:18,POINTER:19,ROPE:20,CIRCLE:21,RECTANGLE:22,LINE:23,MATRIX:24,POINT:25,ROUNDEDRECTANGLE:26,CREATURE:27,VIDEO:28,PENDING_ATLAS:-1,HORIZONTAL:0,VERTICAL:1,LANDSCAPE:0,PORTRAIT:1,ANGLE_UP:270,ANGLE_DOWN:90,ANGLE_LEFT:180,ANGLE_RIGHT:0,ANGLE_NORTH_EAST:315,ANGLE_NORTH_WEST:225,ANGLE_SOUTH_EAST:45,ANGLE_SOUTH_WEST:135,TOP_LEFT:0,TOP_CENTER:1,TOP_RIGHT:2,LEFT_TOP:3,LEFT_CENTER:4,LEFT_BOTTOM:5,CENTER:6,RIGHT_TOP:7,RIGHT_CENTER:8,RIGHT_BOTTOM:9,BOTTOM_LEFT:10,BOTTOM_CENTER:11,BOTTOM_RIGHT:12,blendModes:{NORMAL:0,ADD:1,MULTIPLY:2,SCREEN:3,OVERLAY:4,DARKEN:5,LIGHTEN:6,COLOR_DODGE:7,COLOR_BURN:8,HARD_LIGHT:9,SOFT_LIGHT:10,DIFFERENCE:11,EXCLUSION:12,HUE:13,SATURATION:14,COLOR:15,LUMINOSITY:16},scaleModes:{DEFAULT:0,LINEAR:0,NEAREST:1},PIXI:PIXI||{}};if(Math.trunc||(Math.trunc=function(a){return 0>a?Math.ceil(a):Math.floor(a)}),Function.prototype.bind||(Function.prototype.bind=function(){var a=Array.prototype.slice;return function(b){function c(){var f=e.concat(a.call(arguments));d.apply(this instanceof c?this:b,f)}var d=this,e=a.call(arguments,1);if("function"!=typeof d)throw new TypeError;return c.prototype=function f(a){return a&&(f.prototype=a),this instanceof f?void 0:new f}(d.prototype),c}}()),Array.isArray||(Array.isArray=function(a){return"[object Array]"==Object.prototype.toString.call(a)}),Array.prototype.forEach||(Array.prototype.forEach=function(a){"use strict";if(void 0===this||null===this)throw new TypeError;var b=Object(this),c=b.length>>>0;if("function"!=typeof a)throw new TypeError;for(var d=arguments.length>=2?arguments[1]:void 0,e=0;c>e;e++)e in b&&a.call(d,b[e],e,b)}),"function"!=typeof window.Uint32Array&&"object"!=typeof window.Uint32Array){var d=function(a){var b=new Array;window[a]=function(a){if("number"==typeof a){Array.call(this,a),this.length=a;for(var b=0;bf&&(a=a[g]);)g=c[f],f++;return a?a[d]:null},setProperty:function(a,b,c){for(var d=b.split("."),e=d.pop(),f=d.length,g=1,h=d[0];f>g&&(a=a[h]);)h=d[g],g++;return a&&(a[e]=c),a},chanceRoll:function(a){return void 0===a&&(a=50),a>0&&100*Math.random()<=a},randomChoice:function(a,b){return Math.random()<.5?a:b},parseDimension:function(a,b){var c=0,d=0;return"string"==typeof a?"%"===a.substr(-1)?(c=parseInt(a,10)/100,d=0===b?window.innerWidth*c:window.innerHeight*c):d=parseInt(a,10):d=a,d},pad:function(a,b,c,d){if(void 0===b)var b=0;if(void 0===c)var c=" ";if(void 0===d)var d=3;var e=0;if(b+1>=a.length)switch(d){case 1:a=new Array(b+1-a.length).join(c)+a;break;case 3:var f=Math.ceil((e=b-a.length)/2),g=e-f;a=new Array(g+1).join(c)+a+new Array(f+1).join(c);break;default:a+=new Array(b+1-a.length).join(c)}return a},isPlainObject:function(a){if("object"!=typeof a||a.nodeType||a===a.window)return!1;try{if(a.constructor&&!{}.hasOwnProperty.call(a.constructor.prototype,"isPrototypeOf"))return!1}catch(b){return!1}return!0},extend:function(){var a,b,d,e,f,g,h=arguments[0]||{},i=1,j=arguments.length,k=!1;for("boolean"==typeof h&&(k=h,h=arguments[1]||{},i=2),j===i&&(h=this,--i);j>i;i++)if(null!=(a=arguments[i]))for(b in a)d=h[b],e=a[b],h!==e&&(k&&e&&(c.Utils.isPlainObject(e)||(f=Array.isArray(e)))?(f?(f=!1,g=d&&Array.isArray(d)?d:[]):g=d&&c.Utils.isPlainObject(d)?d:{},h[b]=c.Utils.extend(k,g,e)):void 0!==e&&(h[b]=e));return h},mixinPrototype:function(a,b,c){void 0===c&&(c=!1);for(var d=Object.keys(b),e=0;e0&&(this._radius=.5*d),this.type=c.CIRCLE},c.Circle.prototype={circumference:function(){return 2*(Math.PI*this._radius)},random:function(a){void 0===a&&(a=new c.Point);var b=2*Math.PI*Math.random(),d=Math.random()+Math.random(),e=d>1?2-d:d,f=e*Math.cos(b),g=e*Math.sin(b);return a.x=this.x+f*this.radius,a.y=this.y+g*this.radius,a},getBounds:function(){return new c.Rectangle(this.x-this.radius,this.y-this.radius,this.diameter,this.diameter)},setTo:function(a,b,c){return this.x=a,this.y=b,this._diameter=c,this._radius=.5*c,this},copyFrom:function(a){return this.setTo(a.x,a.y,a.diameter)},copyTo:function(a){return a.x=this.x,a.y=this.y,a.diameter=this._diameter,a},distance:function(a,b){var d=c.Math.distance(this.x,this.y,a.x,a.y);return b?Math.round(d):d},clone:function(a){return void 0===a||null===a?a=new c.Circle(this.x,this.y,this.diameter):a.setTo(this.x,this.y,this.diameter),a},contains:function(a,b){return c.Circle.contains(this,a,b)},circumferencePoint:function(a,b,d){return c.Circle.circumferencePoint(this,a,b,d)},offset:function(a,b){return this.x+=a,this.y+=b,this},offsetPoint:function(a){return this.offset(a.x,a.y)},toString:function(){return"[{Phaser.Circle (x="+this.x+" y="+this.y+" diameter="+this.diameter+" radius="+this.radius+")}]"}},c.Circle.prototype.constructor=c.Circle,Object.defineProperty(c.Circle.prototype,"diameter",{get:function(){return this._diameter},set:function(a){a>0&&(this._diameter=a,this._radius=.5*a)}}),Object.defineProperty(c.Circle.prototype,"radius",{get:function(){return this._radius},set:function(a){a>0&&(this._radius=a,this._diameter=2*a)}}),Object.defineProperty(c.Circle.prototype,"left",{get:function(){return this.x-this._radius},set:function(a){a>this.x?(this._radius=0,this._diameter=0):this.radius=this.x-a}}),Object.defineProperty(c.Circle.prototype,"right",{get:function(){return this.x+this._radius},set:function(a){athis.y?(this._radius=0,this._diameter=0):this.radius=this.y-a}}),Object.defineProperty(c.Circle.prototype,"bottom",{get:function(){return this.y+this._radius},set:function(a){a0?Math.PI*this._radius*this._radius:0}}),Object.defineProperty(c.Circle.prototype,"empty",{get:function(){return 0===this._diameter},set:function(a){a===!0&&this.setTo(0,0,0)}}),c.Circle.contains=function(a,b,c){if(a.radius>0&&b>=a.left&&b<=a.right&&c>=a.top&&c<=a.bottom){ -var d=(a.x-b)*(a.x-b),e=(a.y-c)*(a.y-c);return d+e<=a.radius*a.radius}return!1},c.Circle.equals=function(a,b){return a.x==b.x&&a.y==b.y&&a.diameter==b.diameter},c.Circle.intersects=function(a,b){return c.Math.distance(a.x,a.y,b.x,b.y)<=a.radius+b.radius},c.Circle.circumferencePoint=function(a,b,d,e){return void 0===d&&(d=!1),void 0===e&&(e=new c.Point),d===!0&&(b=c.Math.degToRad(b)),e.x=a.x+a.radius*Math.cos(b),e.y=a.y+a.radius*Math.sin(b),e},c.Circle.intersectsRectangle=function(a,b){var c=Math.abs(a.x-b.x-b.halfWidth),d=b.halfWidth+a.radius;if(c>d)return!1;var e=Math.abs(a.y-b.y-b.halfHeight),f=b.halfHeight+a.radius;if(e>f)return!1;if(c<=b.halfWidth||e<=b.halfHeight)return!0;var g=c-b.halfWidth,h=e-b.halfHeight,i=g*g,j=h*h,k=a.radius*a.radius;return k>=i+j},PIXI.Circle=c.Circle,c.Ellipse=function(a,b,d,e){a=a||0,b=b||0,d=d||0,e=e||0,this.x=a,this.y=b,this.width=d,this.height=e,this.type=c.ELLIPSE},c.Ellipse.prototype={setTo:function(a,b,c,d){return this.x=a,this.y=b,this.width=c,this.height=d,this},getBounds:function(){return new c.Rectangle(this.x-this.width,this.y-this.height,this.width,this.height)},copyFrom:function(a){return this.setTo(a.x,a.y,a.width,a.height)},copyTo:function(a){return a.x=this.x,a.y=this.y,a.width=this.width,a.height=this.height,a},clone:function(a){return void 0===a||null===a?a=new c.Ellipse(this.x,this.y,this.width,this.height):a.setTo(this.x,this.y,this.width,this.height),a},contains:function(a,b){return c.Ellipse.contains(this,a,b)},random:function(a){void 0===a&&(a=new c.Point);var b=Math.random()*Math.PI*2,d=Math.random();return a.x=Math.sqrt(d)*Math.cos(b),a.y=Math.sqrt(d)*Math.sin(b),a.x=this.x+a.x*this.width/2,a.y=this.y+a.y*this.height/2,a},toString:function(){return"[{Phaser.Ellipse (x="+this.x+" y="+this.y+" width="+this.width+" height="+this.height+")}]"}},c.Ellipse.prototype.constructor=c.Ellipse,Object.defineProperty(c.Ellipse.prototype,"left",{get:function(){return this.x},set:function(a){this.x=a}}),Object.defineProperty(c.Ellipse.prototype,"right",{get:function(){return this.x+this.width},set:function(a){ad+e},PIXI.Ellipse=c.Ellipse,c.Line=function(a,b,d,e){a=a||0,b=b||0,d=d||0,e=e||0,this.start=new c.Point(a,b),this.end=new c.Point(d,e),this.type=c.LINE},c.Line.prototype={setTo:function(a,b,c,d){return this.start.setTo(a,b),this.end.setTo(c,d),this},fromSprite:function(a,b,c){return void 0===c&&(c=!1),c?this.setTo(a.center.x,a.center.y,b.center.x,b.center.y):this.setTo(a.x,a.y,b.x,b.y)},fromAngle:function(a,b,c,d){return this.start.setTo(a,b),this.end.setTo(a+Math.cos(c)*d,b+Math.sin(c)*d),this},rotate:function(a,b){var c=(this.start.x+this.end.x)/2,d=(this.start.y+this.end.y)/2;return this.start.rotate(c,d,a,b),this.end.rotate(c,d,a,b),this},rotateAround:function(a,b,c,d){return this.start.rotate(a,b,c,d),this.end.rotate(a,b,c,d),this},intersects:function(a,b,d){return c.Line.intersectsPoints(this.start,this.end,a.start,a.end,b,d)},reflect:function(a){return c.Line.reflect(this,a)},midPoint:function(a){return void 0===a&&(a=new c.Point),a.x=(this.start.x+this.end.x)/2,a.y=(this.start.y+this.end.y)/2,a},centerOn:function(a,b){var c=(this.start.x+this.end.x)/2,d=(this.start.y+this.end.y)/2,e=a-c,f=b-d;this.start.add(e,f),this.end.add(e,f)},pointOnLine:function(a,b){return(a-this.start.x)*(this.end.y-this.start.y)===(this.end.x-this.start.x)*(b-this.start.y)},pointOnSegment:function(a,b){var c=Math.min(this.start.x,this.end.x),d=Math.max(this.start.x,this.end.x),e=Math.min(this.start.y,this.end.y),f=Math.max(this.start.y,this.end.y);return this.pointOnLine(a,b)&&a>=c&&d>=a&&b>=e&&f>=b},random:function(a){void 0===a&&(a=new c.Point);var b=Math.random();return a.x=this.start.x+b*(this.end.x-this.start.x),a.y=this.start.y+b*(this.end.y-this.start.y),a},coordinatesOnLine:function(a,b){void 0===a&&(a=1),void 0===b&&(b=[]);var c=Math.round(this.start.x),d=Math.round(this.start.y),e=Math.round(this.end.x),f=Math.round(this.end.y),g=Math.abs(e-c),h=Math.abs(f-d),i=e>c?1:-1,j=f>d?1:-1,k=g-h;b.push([c,d]);for(var l=1;c!=e||d!=f;){var m=k<<1;m>-h&&(k-=h,c+=i),g>m&&(k+=g,d+=j),l%a===0&&b.push([c,d]),l++}return b},clone:function(a){return void 0===a||null===a?a=new c.Line(this.start.x,this.start.y,this.end.x,this.end.y):a.setTo(this.start.x,this.start.y,this.end.x,this.end.y),a}},Object.defineProperty(c.Line.prototype,"length",{get:function(){return Math.sqrt((this.end.x-this.start.x)*(this.end.x-this.start.x)+(this.end.y-this.start.y)*(this.end.y-this.start.y))}}),Object.defineProperty(c.Line.prototype,"angle",{get:function(){return Math.atan2(this.end.y-this.start.y,this.end.x-this.start.x)}}),Object.defineProperty(c.Line.prototype,"slope",{get:function(){return(this.end.y-this.start.y)/(this.end.x-this.start.x)}}),Object.defineProperty(c.Line.prototype,"perpSlope",{get:function(){return-((this.end.x-this.start.x)/(this.end.y-this.start.y))}}),Object.defineProperty(c.Line.prototype,"x",{get:function(){return Math.min(this.start.x,this.end.x)}}),Object.defineProperty(c.Line.prototype,"y",{get:function(){return Math.min(this.start.y,this.end.y)}}),Object.defineProperty(c.Line.prototype,"left",{get:function(){return Math.min(this.start.x,this.end.x)}}),Object.defineProperty(c.Line.prototype,"right",{get:function(){return Math.max(this.start.x,this.end.x)}}),Object.defineProperty(c.Line.prototype,"top",{get:function(){return Math.min(this.start.y,this.end.y)}}),Object.defineProperty(c.Line.prototype,"bottom",{get:function(){return Math.max(this.start.y,this.end.y)}}),Object.defineProperty(c.Line.prototype,"width",{get:function(){return Math.abs(this.start.x-this.end.x)}}),Object.defineProperty(c.Line.prototype,"height",{get:function(){return Math.abs(this.start.y-this.end.y)}}),Object.defineProperty(c.Line.prototype,"normalX",{get:function(){return Math.cos(this.angle-1.5707963267948966)}}),Object.defineProperty(c.Line.prototype,"normalY",{get:function(){return Math.sin(this.angle-1.5707963267948966)}}),Object.defineProperty(c.Line.prototype,"normalAngle",{get:function(){return c.Math.wrap(this.angle-1.5707963267948966,-Math.PI,Math.PI)}}),c.Line.intersectsPoints=function(a,b,d,e,f,g){void 0===f&&(f=!0),void 0===g&&(g=new c.Point);var h=b.y-a.y,i=e.y-d.y,j=a.x-b.x,k=d.x-e.x,l=b.x*a.y-a.x*b.y,m=e.x*d.y-d.x*e.y,n=h*k-i*j;if(0===n)return null;if(g.x=(j*m-k*l)/n,g.y=(i*l-h*m)/n,f){var o=(e.y-d.y)*(b.x-a.x)-(e.x-d.x)*(b.y-a.y),p=((e.x-d.x)*(a.y-d.y)-(e.y-d.y)*(a.x-d.x))/o,q=((b.x-a.x)*(a.y-d.y)-(b.y-a.y)*(a.x-d.x))/o;return p>=0&&1>=p&&q>=0&&1>=q?g:null}return g},c.Line.intersects=function(a,b,d,e){return c.Line.intersectsPoints(a.start,a.end,b.start,b.end,d,e)},c.Line.intersectsRectangle=function(a,b){if(!c.Rectangle.intersects(a,b))return!1;var d=a.start.x,e=a.start.y,f=a.end.x,g=a.end.y,h=b.x,i=b.y,j=b.right,k=b.bottom,l=0;if(d>=h&&j>=d&&e>=i&&k>=e||f>=h&&j>=f&&g>=i&&k>=g)return!0;if(h>d&&f>=h){if(l=e+(g-e)*(h-d)/(f-d),l>i&&k>=l)return!0}else if(d>j&&j>=f&&(l=e+(g-e)*(j-d)/(f-d),l>=i&&k>=l))return!0;if(i>e&&g>=i){if(l=d+(f-d)*(i-e)/(g-e),l>=h&&j>=l)return!0}else if(e>k&&k>=g&&(l=d+(f-d)*(k-e)/(g-e),l>=h&&j>=l))return!0;return!1},c.Line.reflect=function(a,b){return 2*b.normalAngle-3.141592653589793-a.angle},c.Matrix=function(a,b,d,e,f,g){(void 0===a||null===a)&&(a=1),(void 0===b||null===b)&&(b=0),(void 0===d||null===d)&&(d=0),(void 0===e||null===e)&&(e=1),(void 0===f||null===f)&&(f=0),(void 0===g||null===g)&&(g=0),this.a=a,this.b=b,this.c=d,this.d=e,this.tx=f,this.ty=g,this.type=c.MATRIX},c.Matrix.prototype={fromArray:function(a){return this.setTo(a[0],a[1],a[3],a[4],a[2],a[5])},setTo:function(a,b,c,d,e,f){return this.a=a,this.b=b,this.c=c,this.d=d,this.tx=e,this.ty=f,this},clone:function(a){return void 0===a||null===a?a=new c.Matrix(this.a,this.b,this.c,this.d,this.tx,this.ty):(a.a=this.a,a.b=this.b,a.c=this.c,a.d=this.d,a.tx=this.tx,a.ty=this.ty),a},copyTo:function(a){return a.copyFrom(this),a},copyFrom:function(a){return this.a=a.a,this.b=a.b,this.c=a.c,this.d=a.d,this.tx=a.tx,this.ty=a.ty,this},toArray:function(a,b){return void 0===b&&(b=new PIXI.Float32Array(9)),a?(b[0]=this.a,b[1]=this.b,b[2]=0,b[3]=this.c,b[4]=this.d,b[5]=0,b[6]=this.tx,b[7]=this.ty,b[8]=1):(b[0]=this.a,b[1]=this.c,b[2]=this.tx,b[3]=this.b,b[4]=this.d,b[5]=this.ty,b[6]=0,b[7]=0,b[8]=1),b},apply:function(a,b){return void 0===b&&(b=new c.Point),b.x=this.a*a.x+this.c*a.y+this.tx,b.y=this.b*a.x+this.d*a.y+this.ty,b},applyInverse:function(a,b){void 0===b&&(b=new c.Point);var d=1/(this.a*this.d+this.c*-this.b),e=a.x,f=a.y;return b.x=this.d*d*e+-this.c*d*f+(this.ty*this.c-this.tx*this.d)*d,b.y=this.a*d*f+-this.b*d*e+(-this.ty*this.a+this.tx*this.b)*d,b},translate:function(a,b){return this.tx+=a,this.ty+=b,this},scale:function(a,b){return this.a*=a,this.d*=b,this.c*=a,this.b*=b,this.tx*=a,this.ty*=b,this},rotate:function(a){var b=Math.cos(a),c=Math.sin(a),d=this.a,e=this.c,f=this.tx;return this.a=d*b-this.b*c,this.b=d*c+this.b*b,this.c=e*b-this.d*c,this.d=e*c+this.d*b,this.tx=f*b-this.ty*c,this.ty=f*c+this.ty*b,this},append:function(a){var b=this.a,c=this.b,d=this.c,e=this.d;return this.a=a.a*b+a.b*d,this.b=a.a*c+a.b*e,this.c=a.c*b+a.d*d,this.d=a.c*c+a.d*e,this.tx=a.tx*b+a.ty*d+this.tx,this.ty=a.tx*c+a.ty*e+this.ty,this},identity:function(){return this.setTo(1,0,0,1,0,0)}},c.identityMatrix=new c.Matrix,PIXI.Matrix=c.Matrix,PIXI.identityMatrix=c.identityMatrix,c.Point=function(a,b){a=a||0,b=b||0,this.x=a,this.y=b,this.type=c.POINT},c.Point.prototype={copyFrom:function(a){return this.setTo(a.x,a.y)},invert:function(){return this.setTo(this.y,this.x)},setTo:function(a,b){return this.x=a||0,this.y=b||(0!==b?this.x:0),this},set:function(a,b){return this.x=a||0,this.y=b||(0!==b?this.x:0),this},add:function(a,b){return this.x+=a,this.y+=b,this},subtract:function(a,b){return this.x-=a,this.y-=b,this},multiply:function(a,b){return this.x*=a,this.y*=b,this},divide:function(a,b){return this.x/=a,this.y/=b,this},clampX:function(a,b){return this.x=c.Math.clamp(this.x,a,b),this},clampY:function(a,b){return this.y=c.Math.clamp(this.y,a,b),this},clamp:function(a,b){return this.x=c.Math.clamp(this.x,a,b),this.y=c.Math.clamp(this.y,a,b),this},clone:function(a){return void 0===a||null===a?a=new c.Point(this.x,this.y):a.setTo(this.x,this.y),a},copyTo:function(a){return a.x=this.x,a.y=this.y,a},distance:function(a,b){return c.Point.distance(this,a,b)},equals:function(a){return a.x===this.x&&a.y===this.y},angle:function(a,b){return void 0===b&&(b=!1),b?c.Math.radToDeg(Math.atan2(a.y-this.y,a.x-this.x)):Math.atan2(a.y-this.y,a.x-this.x)},rotate:function(a,b,d,e,f){return c.Point.rotate(this,a,b,d,e,f)},getMagnitude:function(){return Math.sqrt(this.x*this.x+this.y*this.y)},getMagnitudeSq:function(){return this.x*this.x+this.y*this.y},setMagnitude:function(a){return this.normalize().multiply(a,a)},normalize:function(){if(!this.isZero()){var a=this.getMagnitude();this.x/=a,this.y/=a}return this},isZero:function(){return 0===this.x&&0===this.y},dot:function(a){return this.x*a.x+this.y*a.y},cross:function(a){return this.x*a.y-this.y*a.x},perp:function(){return this.setTo(-this.y,this.x)},rperp:function(){return this.setTo(this.y,-this.x)},normalRightHand:function(){return this.setTo(-1*this.y,this.x)},floor:function(){return this.setTo(Math.floor(this.x),Math.floor(this.y))},ceil:function(){return this.setTo(Math.ceil(this.x),Math.ceil(this.y))},toString:function(){return"[{Point (x="+this.x+" y="+this.y+")}]"}},c.Point.prototype.constructor=c.Point,c.Point.add=function(a,b,d){return void 0===d&&(d=new c.Point),d.x=a.x+b.x,d.y=a.y+b.y,d},c.Point.subtract=function(a,b,d){return void 0===d&&(d=new c.Point),d.x=a.x-b.x,d.y=a.y-b.y,d},c.Point.multiply=function(a,b,d){return void 0===d&&(d=new c.Point),d.x=a.x*b.x,d.y=a.y*b.y,d},c.Point.divide=function(a,b,d){return void 0===d&&(d=new c.Point),d.x=a.x/b.x,d.y=a.y/b.y,d},c.Point.equals=function(a,b){return a.x===b.x&&a.y===b.y},c.Point.angle=function(a,b){return Math.atan2(a.y-b.y,a.x-b.x)},c.Point.negative=function(a,b){return void 0===b&&(b=new c.Point),b.setTo(-a.x,-a.y)},c.Point.multiplyAdd=function(a,b,d,e){return void 0===e&&(e=new c.Point),e.setTo(a.x+b.x*d,a.y+b.y*d)},c.Point.interpolate=function(a,b,d,e){return void 0===e&&(e=new c.Point),e.setTo(a.x+(b.x-a.x)*d,a.y+(b.y-a.y)*d)},c.Point.perp=function(a,b){return void 0===b&&(b=new c.Point),b.setTo(-a.y,a.x)},c.Point.rperp=function(a,b){return void 0===b&&(b=new c.Point),b.setTo(a.y,-a.x)},c.Point.distance=function(a,b,d){var e=c.Math.distance(a.x,a.y,b.x,b.y);return d?Math.round(e):e},c.Point.project=function(a,b,d){void 0===d&&(d=new c.Point);var e=a.dot(b)/b.getMagnitudeSq();return 0!==e&&d.setTo(e*b.x,e*b.y),d},c.Point.projectUnit=function(a,b,d){void 0===d&&(d=new c.Point);var e=a.dot(b);return 0!==e&&d.setTo(e*b.x,e*b.y),d},c.Point.normalRightHand=function(a,b){return void 0===b&&(b=new c.Point),b.setTo(-1*a.y,a.x)},c.Point.normalize=function(a,b){void 0===b&&(b=new c.Point);var d=a.getMagnitude();return 0!==d&&b.setTo(a.x/d,a.y/d),b},c.Point.rotate=function(a,b,d,e,f,g){if(f&&(e=c.Math.degToRad(e)),void 0===g){a.subtract(b,d);var h=Math.sin(e),i=Math.cos(e),j=i*a.x-h*a.y,k=h*a.x+i*a.y;a.x=j+b,a.y=k+d}else{var l=e+Math.atan2(a.y-d,a.x-b);a.x=b+g*Math.cos(l),a.y=d+g*Math.sin(l)}return a},c.Point.centroid=function(a,b){if(void 0===b&&(b=new c.Point),"[object Array]"!==Object.prototype.toString.call(a))throw new Error("Phaser.Point. Parameter 'points' must be an array");var d=a.length;if(1>d)throw new Error("Phaser.Point. Parameter 'points' array must not be empty");if(1===d)return b.copyFrom(a[0]),b;for(var e=0;d>e;e++)c.Point.add(b,a[e],b);return b.divide(d,d),b},c.Point.parse=function(a,b,d){b=b||"x",d=d||"y";var e=new c.Point;return a[b]&&(e.x=parseInt(a[b],10)),a[d]&&(e.y=parseInt(a[d],10)),e},PIXI.Point=c.Point,c.Polygon=function(){this.area=0,this._points=[],arguments.length>0&&this.setTo.apply(this,arguments),this.closed=!0,this.type=c.POLYGON},c.Polygon.prototype={toNumberArray:function(a){void 0===a&&(a=[]);for(var b=0;b=h&&j>b||b>=j&&h>b)&&(i-g)*(b-h)/(j-h)+g>a&&(d=!d)}return d},setTo:function(a){if(this.area=0,this._points=[],arguments.length>0){Array.isArray(a)||(a=Array.prototype.slice.call(arguments));for(var b=Number.MAX_VALUE,c=0,d=a.length;d>c;c++){if("number"==typeof a[c]){var e=new PIXI.Point(a[c],a[c+1]);c++}else if(Array.isArray(a[c]))var e=new PIXI.Point(a[c][0],a[c][1]);else var e=new PIXI.Point(a[c].x,a[c].y);this._points.push(e),e.yf;f++)b=this._points[f],c=f===g-1?this._points[0]:this._points[f+1],d=(b.y-a+(c.y-a))/2,e=b.x-c.x,this.area+=d*e;return this.area}},c.Polygon.prototype.constructor=c.Polygon,Object.defineProperty(c.Polygon.prototype,"points",{get:function(){return this._points},set:function(a){null!=a?this.setTo(a):this.setTo()}}),PIXI.Polygon=c.Polygon,c.Rectangle=function(a,b,d,e){a=a||0,b=b||0,d=d||0,e=e||0,this.x=a,this.y=b,this.width=d,this.height=e,this.type=c.RECTANGLE},c.Rectangle.prototype={offset:function(a,b){return this.x+=a,this.y+=b,this},offsetPoint:function(a){return this.offset(a.x,a.y)},setTo:function(a,b,c,d){return this.x=a,this.y=b,this.width=c,this.height=d,this},scale:function(a,b){return void 0===b&&(b=a),this.width*=a,this.height*=b,this},centerOn:function(a,b){return this.centerX=a,this.centerY=b,this},floor:function(){this.x=Math.floor(this.x),this.y=Math.floor(this.y)},floorAll:function(){this.x=Math.floor(this.x),this.y=Math.floor(this.y),this.width=Math.floor(this.width),this.height=Math.floor(this.height)},ceil:function(){this.x=Math.ceil(this.x),this.y=Math.ceil(this.y)},ceilAll:function(){this.x=Math.ceil(this.x),this.y=Math.ceil(this.y),this.width=Math.ceil(this.width),this.height=Math.ceil(this.height)},copyFrom:function(a){return this.setTo(a.x,a.y,a.width,a.height)},copyTo:function(a){return a.x=this.x,a.y=this.y,a.width=this.width,a.height=this.height,a},inflate:function(a,b){return c.Rectangle.inflate(this,a,b)},size:function(a){return c.Rectangle.size(this,a)},resize:function(a,b){return this.width=a,this.height=b,this},clone:function(a){return c.Rectangle.clone(this,a)},contains:function(a,b){return c.Rectangle.contains(this,a,b)},containsRect:function(a){return c.Rectangle.containsRect(a,this)},equals:function(a){return c.Rectangle.equals(this,a)},intersection:function(a,b){return c.Rectangle.intersection(this,a,b)},intersects:function(a){return c.Rectangle.intersects(this,a)},intersectsRaw:function(a,b,d,e,f){return c.Rectangle.intersectsRaw(this,a,b,d,e,f)},union:function(a,b){return c.Rectangle.union(this,a,b)},random:function(a){return void 0===a&&(a=new c.Point),a.x=this.randomX,a.y=this.randomY,a},getPoint:function(a,b){switch(void 0===b&&(b=new c.Point),a){default:case c.TOP_LEFT:return b.set(this.x,this.y);case c.TOP_CENTER:return b.set(this.centerX,this.y);case c.TOP_RIGHT:return b.set(this.right,this.y);case c.LEFT_CENTER:return b.set(this.x,this.centerY);case c.CENTER:return b.set(this.centerX,this.centerY);case c.RIGHT_CENTER:return b.set(this.right,this.centerY);case c.BOTTOM_LEFT:return b.set(this.x,this.bottom);case c.BOTTOM_CENTER:return b.set(this.centerX,this.bottom);case c.BOTTOM_RIGHT:return b.set(this.right,this.bottom)}},toString:function(){return"[{Rectangle (x="+this.x+" y="+this.y+" width="+this.width+" height="+this.height+" empty="+this.empty+")}]"}},Object.defineProperty(c.Rectangle.prototype,"halfWidth",{get:function(){return Math.round(this.width/2)}}),Object.defineProperty(c.Rectangle.prototype,"halfHeight",{get:function(){return Math.round(this.height/2)}}),Object.defineProperty(c.Rectangle.prototype,"bottom",{get:function(){return this.y+this.height},set:function(a){a<=this.y?this.height=0:this.height=a-this.y}}),Object.defineProperty(c.Rectangle.prototype,"bottomLeft",{get:function(){return new c.Point(this.x,this.bottom)},set:function(a){this.x=a.x,this.bottom=a.y}}),Object.defineProperty(c.Rectangle.prototype,"bottomRight",{get:function(){return new c.Point(this.right,this.bottom)},set:function(a){this.right=a.x,this.bottom=a.y}}),Object.defineProperty(c.Rectangle.prototype,"left",{get:function(){return this.x},set:function(a){a>=this.right?this.width=0:this.width=this.right-a,this.x=a}}),Object.defineProperty(c.Rectangle.prototype,"right",{get:function(){return this.x+this.width},set:function(a){a<=this.x?this.width=0:this.width=a-this.x}}),Object.defineProperty(c.Rectangle.prototype,"volume",{get:function(){return this.width*this.height}}),Object.defineProperty(c.Rectangle.prototype,"perimeter",{get:function(){return 2*this.width+2*this.height}}),Object.defineProperty(c.Rectangle.prototype,"centerX",{get:function(){return this.x+this.halfWidth},set:function(a){this.x=a-this.halfWidth}}),Object.defineProperty(c.Rectangle.prototype,"centerY",{get:function(){return this.y+this.halfHeight},set:function(a){this.y=a-this.halfHeight}}),Object.defineProperty(c.Rectangle.prototype,"randomX",{get:function(){return this.x+Math.random()*this.width}}),Object.defineProperty(c.Rectangle.prototype,"randomY",{get:function(){return this.y+Math.random()*this.height}}),Object.defineProperty(c.Rectangle.prototype,"top",{get:function(){return this.y},set:function(a){a>=this.bottom?(this.height=0,this.y=a):this.height=this.bottom-a}}),Object.defineProperty(c.Rectangle.prototype,"topLeft",{get:function(){return new c.Point(this.x,this.y)},set:function(a){this.x=a.x,this.y=a.y}}),Object.defineProperty(c.Rectangle.prototype,"topRight",{get:function(){return new c.Point(this.x+this.width,this.y)},set:function(a){this.right=a.x,this.y=a.y}}),Object.defineProperty(c.Rectangle.prototype,"empty",{get:function(){return!this.width||!this.height},set:function(a){a===!0&&this.setTo(0,0,0,0)}}),c.Rectangle.prototype.constructor=c.Rectangle,c.Rectangle.inflate=function(a,b,c){return a.x-=b,a.width+=2*b,a.y-=c,a.height+=2*c,a},c.Rectangle.inflatePoint=function(a,b){return c.Rectangle.inflate(a,b.x,b.y)},c.Rectangle.size=function(a,b){return void 0===b||null===b?b=new c.Point(a.width,a.height):b.setTo(a.width,a.height),b},c.Rectangle.clone=function(a,b){return void 0===b||null===b?b=new c.Rectangle(a.x,a.y,a.width,a.height):b.setTo(a.x,a.y,a.width,a.height),b},c.Rectangle.contains=function(a,b,c){return a.width<=0||a.height<=0?!1:b>=a.x&&b=a.y&&c=a&&a+c>e&&f>=b&&b+d>f},c.Rectangle.containsPoint=function(a,b){return c.Rectangle.contains(a,b.x,b.y)},c.Rectangle.containsRect=function(a,b){return a.volume>b.volume?!1:a.x>=b.x&&a.y>=b.y&&a.rightb.right||a.y>b.bottom)},c.Rectangle.intersectsRaw=function(a,b,c,d,e,f){return void 0===f&&(f=0),!(b>a.right+f||ca.bottom+f||ed&&(d=a.x),a.xf&&(f=a.y),a.y=c&&a<=c+this.width){var d=this.y;if(b>=d&&b<=d+this.height)return!0}return!1}},c.RoundedRectangle.prototype.constructor=c.RoundedRectangle,PIXI.RoundedRectangle=c.RoundedRectangle,c.Camera=function(a,b,d,e,f,g){this.game=a,this.world=a.world,this.id=0,this.view=new c.Rectangle(d,e,f,g),this.bounds=new c.Rectangle(d,e,f,g),this.deadzone=null,this.visible=!0,this.roundPx=!0,this.atLimit={x:!1,y:!1},this.target=null,this.displayObject=null,this.scale=null,this.totalInView=0,this.lerp=new c.Point(1,1),this.onShakeComplete=new c.Signal,this.onFlashComplete=new c.Signal,this.onFadeComplete=new c.Signal,this.fx=null,this._targetPosition=new c.Point,this._edge=0,this._position=new c.Point,this._shake={intensity:0,duration:0,horizontal:!1,vertical:!1,shakeBounds:!0,x:0,y:0},this._fxDuration=0,this._fxType=0},c.Camera.FOLLOW_LOCKON=0,c.Camera.FOLLOW_PLATFORMER=1,c.Camera.FOLLOW_TOPDOWN=2,c.Camera.FOLLOW_TOPDOWN_TIGHT=3,c.Camera.SHAKE_BOTH=4,c.Camera.SHAKE_HORIZONTAL=5,c.Camera.SHAKE_VERTICAL=6,c.Camera.ENABLE_FX=!0,c.Camera.prototype={boot:function(){this.displayObject=this.game.world,this.scale=this.game.world.scale,this.game.camera=this,c.Graphics&&c.Camera.ENABLE_FX&&(this.fx=new c.Graphics(this.game),this.game.stage.addChild(this.fx))},preUpdate:function(){this.totalInView=0},follow:function(a,b,d,e){void 0===b&&(b=c.Camera.FOLLOW_LOCKON),void 0===d&&(d=1),void 0===e&&(e=1),this.target=a,this.lerp.set(d,e);var f;switch(b){case c.Camera.FOLLOW_PLATFORMER:var g=this.width/8,h=this.height/3;this.deadzone=new c.Rectangle((this.width-g)/2,(this.height-h)/2-.25*h,g,h);break;case c.Camera.FOLLOW_TOPDOWN:f=Math.max(this.width,this.height)/4,this.deadzone=new c.Rectangle((this.width-f)/2,(this.height-f)/2,f,f);break;case c.Camera.FOLLOW_TOPDOWN_TIGHT:f=Math.max(this.width,this.height)/8,this.deadzone=new c.Rectangle((this.width-f)/2,(this.height-f)/2,f,f);break;case c.Camera.FOLLOW_LOCKON:this.deadzone=null;break;default:this.deadzone=null}},unfollow:function(){this.target=null},focusOn:function(a){this.setPosition(Math.round(a.x-this.view.halfWidth),Math.round(a.y-this.view.halfHeight))},focusOnXY:function(a,b){this.setPosition(Math.round(a-this.view.halfWidth),Math.round(b-this.view.halfHeight))},shake:function(a,b,d,e,f){return void 0===a&&(a=.05),void 0===b&&(b=500),void 0===d&&(d=!0),void 0===e&&(e=c.Camera.SHAKE_BOTH),void 0===f&&(f=!0),!d&&this._shake.duration>0?!1:(this._shake.intensity=a,this._shake.duration=b,this._shake.shakeBounds=f,this._shake.x=0,this._shake.y=0,this._shake.horizontal=e===c.Camera.SHAKE_BOTH||e===c.Camera.SHAKE_HORIZONTAL,this._shake.vertical=e===c.Camera.SHAKE_BOTH||e===c.Camera.SHAKE_VERTICAL,!0)},flash:function(a,b,c){return void 0===a&&(a=16777215),void 0===b&&(b=500),void 0===c&&(c=!1),!this.fx||!c&&this._fxDuration>0?!1:(this.fx.clear(),this.fx.beginFill(a),this.fx.drawRect(0,0,this.width,this.height),this.fx.endFill(),this.fx.alpha=1,this._fxDuration=b,this._fxType=0,!0)},fade:function(a,b,c){return void 0===a&&(a=0),void 0===b&&(b=500),void 0===c&&(c=!1),!this.fx||!c&&this._fxDuration>0?!1:(this.fx.clear(),this.fx.beginFill(a),this.fx.drawRect(0,0,this.width,this.height),this.fx.endFill(),this.fx.alpha=0,this._fxDuration=b,this._fxType=1,!0)},update:function(){this._fxDuration>0&&this.updateFX(),this._shake.duration>0&&this.updateShake(),this.bounds&&this.checkBounds(),this.roundPx&&(this.view.floor(),this._shake.x=Math.floor(this._shake.x),this._shake.y=Math.floor(this._shake.y)),this.displayObject.position.x=-this.view.x,this.displayObject.position.y=-this.view.y},updateFX:function(){0===this._fxType?(this.fx.alpha-=this.game.time.elapsedMS/this._fxDuration,this.fx.alpha<=0&&(this._fxDuration=0,this.fx.alpha=0,this.onFlashComplete.dispatch())):(this.fx.alpha+=this.game.time.elapsedMS/this._fxDuration,this.fx.alpha>=1&&(this._fxDuration=0,this.fx.alpha=1,this.onFadeComplete.dispatch()))},updateShake:function(){this._shake.duration-=this.game.time.elapsedMS,this._shake.duration<=0?(this.onShakeComplete.dispatch(),this._shake.x=0,this._shake.y=0):(this._shake.horizontal&&(this._shake.x=this.game.rnd.frac()*this._shake.intensity*this.view.width*2-this._shake.intensity*this.view.width),this._shake.vertical&&(this._shake.y=this.game.rnd.frac()*this._shake.intensity*this.view.height*2-this._shake.intensity*this.view.height))},updateTarget:function(){this._targetPosition.x=this.view.x+this.target.worldPosition.x,this._targetPosition.y=this.view.y+this.target.worldPosition.y,this.deadzone?(this._edge=this._targetPosition.x-this.view.x,this._edgethis.deadzone.right&&(this.view.x=this.game.math.linear(this.view.x,this._targetPosition.x-this.deadzone.right,this.lerp.x)),this._edge=this._targetPosition.y-this.view.y,this._edgethis.deadzone.bottom&&(this.view.y=this.game.math.linear(this.view.y,this._targetPosition.y-this.deadzone.bottom,this.lerp.y))):(this.view.x=this.game.math.linear(this.view.x,this._targetPosition.x-this.view.halfWidth,this.lerp.x),this.view.y=this.game.math.linear(this.view.y,this._targetPosition.y-this.view.halfHeight,this.lerp.y)),this.bounds&&this.checkBounds(),this.roundPx&&this.view.floor(),this.displayObject.position.x=-this.view.x,this.displayObject.position.y=-this.view.y},setBoundsToWorld:function(){this.bounds&&this.bounds.copyFrom(this.game.world.bounds)},checkBounds:function(){this.atLimit.x=!1,this.atLimit.y=!1;var a=this.view.x+this._shake.x,b=this.view.right+this._shake.x,c=this.view.y+this._shake.y,d=this.view.bottom+this._shake.y;a<=this.bounds.x*this.scale.x&&(this.atLimit.x=!0,this.view.x=this.bounds.x*this.scale.x,this._shake.shakeBounds||(this._shake.x=0)),b>=this.bounds.right*this.scale.x&&(this.atLimit.x=!0,this.view.x=this.bounds.right*this.scale.x-this.width,this._shake.shakeBounds||(this._shake.x=0)),c<=this.bounds.top*this.scale.y&&(this.atLimit.y=!0,this.view.y=this.bounds.top*this.scale.y,this._shake.shakeBounds||(this._shake.y=0)),d>=this.bounds.bottom*this.scale.y&&(this.atLimit.y=!0,this.view.y=this.bounds.bottom*this.scale.y-this.height,this._shake.shakeBounds||(this._shake.y=0))},setPosition:function(a,b){this.view.x=a,this.view.y=b,this.bounds&&this.checkBounds()},setSize:function(a,b){this.view.width=a,this.view.height=b},reset:function(){this.target=null,this.view.x=0,this.view.y=0,this._shake.duration=0,this.resetFX()},resetFX:function(){this.fx.clear(),this.fx.alpha=0,this._fxDuration=0}},c.Camera.prototype.constructor=c.Camera,Object.defineProperty(c.Camera.prototype,"x",{get:function(){return this.view.x},set:function(a){this.view.x=a,this.bounds&&this.checkBounds()}}),Object.defineProperty(c.Camera.prototype,"y",{get:function(){return this.view.y},set:function(a){this.view.y=a,this.bounds&&this.checkBounds()}}),Object.defineProperty(c.Camera.prototype,"position",{get:function(){return this._position.set(this.view.x,this.view.y),this._position},set:function(a){"undefined"!=typeof a.x&&(this.view.x=a.x),"undefined"!=typeof a.y&&(this.view.y=a.y),this.bounds&&this.checkBounds()}}),Object.defineProperty(c.Camera.prototype,"width",{get:function(){return this.view.width},set:function(a){this.view.width=a}}),Object.defineProperty(c.Camera.prototype,"height",{get:function(){return this.view.height},set:function(a){this.view.height=a}}),Object.defineProperty(c.Camera.prototype,"shakeIntensity",{get:function(){return this._shake.intensity},set:function(a){this._shake.intensity=a}}),c.State=function(){this.game=null,this.key="",this.add=null,this.make=null,this.camera=null,this.cache=null,this.input=null,this.load=null,this.math=null,this.sound=null,this.scale=null,this.stage=null,this.state=null,this.time=null,this.tweens=null,this.world=null,this.particles=null,this.physics=null,this.rnd=null},c.State.prototype={init:function(){},preload:function(){},loadUpdate:function(){},loadRender:function(){},create:function(){},update:function(){},preRender:function(){},render:function(){},resize:function(){},paused:function(){},resumed:function(){},pauseUpdate:function(){},shutdown:function(){}},c.State.prototype.constructor=c.State,c.StateManager=function(a,b){this.game=a,this.states={},this._pendingState=null,"undefined"!=typeof b&&null!==b&&(this._pendingState=b),this._clearWorld=!1,this._clearCache=!1,this._created=!1,this._args=[],this.current="",this.onStateChange=new c.Signal,this.onInitCallback=null, -this.onPreloadCallback=null,this.onCreateCallback=null,this.onUpdateCallback=null,this.onRenderCallback=null,this.onResizeCallback=null,this.onPreRenderCallback=null,this.onLoadUpdateCallback=null,this.onLoadRenderCallback=null,this.onPausedCallback=null,this.onResumedCallback=null,this.onPauseUpdateCallback=null,this.onShutDownCallback=null},c.StateManager.prototype={boot:function(){this.game.onPause.add(this.pause,this),this.game.onResume.add(this.resume,this),null!==this._pendingState&&"string"!=typeof this._pendingState&&this.add("default",this._pendingState,!0)},add:function(a,b,d){void 0===d&&(d=!1);var e;return b instanceof c.State?e=b:"object"==typeof b?(e=b,e.game=this.game):"function"==typeof b&&(e=new b(this.game)),this.states[a]=e,d&&(this.game.isBooted?this.start(a):this._pendingState=a),e},remove:function(a){this.current===a&&(this.callbackContext=null,this.onInitCallback=null,this.onShutDownCallback=null,this.onPreloadCallback=null,this.onLoadRenderCallback=null,this.onLoadUpdateCallback=null,this.onCreateCallback=null,this.onUpdateCallback=null,this.onPreRenderCallback=null,this.onRenderCallback=null,this.onResizeCallback=null,this.onPausedCallback=null,this.onResumedCallback=null,this.onPauseUpdateCallback=null),delete this.states[a]},start:function(a,b,c){void 0===b&&(b=!0),void 0===c&&(c=!1),this.checkState(a)&&(this._pendingState=a,this._clearWorld=b,this._clearCache=c,arguments.length>3&&(this._args=Array.prototype.splice.call(arguments,3)))},restart:function(a,b){void 0===a&&(a=!0),void 0===b&&(b=!1),this._pendingState=this.current,this._clearWorld=a,this._clearCache=b,arguments.length>2&&(this._args=Array.prototype.slice.call(arguments,2))},dummy:function(){},preUpdate:function(){if(this._pendingState&&this.game.isBooted){var a=this.current;if(this.clearCurrentState(),this.setCurrentState(this._pendingState),this.onStateChange.dispatch(this.current,a),this.current!==this._pendingState)return;this._pendingState=null,this.onPreloadCallback?(this.game.load.reset(!0),this.onPreloadCallback.call(this.callbackContext,this.game),0===this.game.load.totalQueuedFiles()&&0===this.game.load.totalQueuedPacks()?this.loadComplete():this.game.load.start()):this.loadComplete()}},clearCurrentState:function(){this.current&&(this.onShutDownCallback&&this.onShutDownCallback.call(this.callbackContext,this.game),this.game.tweens.removeAll(),this.game.camera.reset(),this.game.input.reset(!0),this.game.physics.clear(),this.game.time.removeAll(),this.game.scale.reset(this._clearWorld),this.game.debug&&this.game.debug.reset(),this._clearWorld&&(this.game.world.shutdown(),this._clearCache&&this.game.cache.destroy()))},checkState:function(a){return this.states[a]?this.states[a].preload||this.states[a].create||this.states[a].update||this.states[a].render?!0:(console.warn("Invalid Phaser State object given. Must contain at least a one of the required functions: preload, create, update or render"),!1):(console.warn("Phaser.StateManager - No state found with the key: "+a),!1)},link:function(a){this.states[a].game=this.game,this.states[a].add=this.game.add,this.states[a].make=this.game.make,this.states[a].camera=this.game.camera,this.states[a].cache=this.game.cache,this.states[a].input=this.game.input,this.states[a].load=this.game.load,this.states[a].math=this.game.math,this.states[a].sound=this.game.sound,this.states[a].scale=this.game.scale,this.states[a].state=this,this.states[a].stage=this.game.stage,this.states[a].time=this.game.time,this.states[a].tweens=this.game.tweens,this.states[a].world=this.game.world,this.states[a].particles=this.game.particles,this.states[a].rnd=this.game.rnd,this.states[a].physics=this.game.physics,this.states[a].key=a},unlink:function(a){this.states[a]&&(this.states[a].game=null,this.states[a].add=null,this.states[a].make=null,this.states[a].camera=null,this.states[a].cache=null,this.states[a].input=null,this.states[a].load=null,this.states[a].math=null,this.states[a].sound=null,this.states[a].scale=null,this.states[a].state=null,this.states[a].stage=null,this.states[a].time=null,this.states[a].tweens=null,this.states[a].world=null,this.states[a].particles=null,this.states[a].rnd=null,this.states[a].physics=null)},setCurrentState:function(a){this.callbackContext=this.states[a],this.link(a),this.onInitCallback=this.states[a].init||this.dummy,this.onPreloadCallback=this.states[a].preload||null,this.onLoadRenderCallback=this.states[a].loadRender||null,this.onLoadUpdateCallback=this.states[a].loadUpdate||null,this.onCreateCallback=this.states[a].create||null,this.onUpdateCallback=this.states[a].update||null,this.onPreRenderCallback=this.states[a].preRender||null,this.onRenderCallback=this.states[a].render||null,this.onResizeCallback=this.states[a].resize||null,this.onPausedCallback=this.states[a].paused||null,this.onResumedCallback=this.states[a].resumed||null,this.onPauseUpdateCallback=this.states[a].pauseUpdate||null,this.onShutDownCallback=this.states[a].shutdown||this.dummy,""!==this.current&&this.game.physics.reset(),this.current=a,this._created=!1,this.onInitCallback.apply(this.callbackContext,this._args),a===this._pendingState&&(this._args=[]),this.game._kickstart=!0},getCurrentState:function(){return this.states[this.current]},loadComplete:function(){this._created===!1&&this.onLoadUpdateCallback&&this.onLoadUpdateCallback.call(this.callbackContext,this.game),this._created===!1&&this.onCreateCallback?(this._created=!0,this.onCreateCallback.call(this.callbackContext,this.game)):this._created=!0},pause:function(){this._created&&this.onPausedCallback&&this.onPausedCallback.call(this.callbackContext,this.game)},resume:function(){this._created&&this.onResumedCallback&&this.onResumedCallback.call(this.callbackContext,this.game)},update:function(){this._created?this.onUpdateCallback&&this.onUpdateCallback.call(this.callbackContext,this.game):this.onLoadUpdateCallback&&this.onLoadUpdateCallback.call(this.callbackContext,this.game)},pauseUpdate:function(){this._created?this.onPauseUpdateCallback&&this.onPauseUpdateCallback.call(this.callbackContext,this.game):this.onLoadUpdateCallback&&this.onLoadUpdateCallback.call(this.callbackContext,this.game)},preRender:function(a){this._created&&this.onPreRenderCallback&&this.onPreRenderCallback.call(this.callbackContext,this.game,a)},resize:function(a,b){this.onResizeCallback&&this.onResizeCallback.call(this.callbackContext,a,b)},render:function(){this._created?this.onRenderCallback&&(this.game.renderType===c.CANVAS?(this.game.context.save(),this.game.context.setTransform(1,0,0,1,0,0),this.onRenderCallback.call(this.callbackContext,this.game),this.game.context.restore()):this.onRenderCallback.call(this.callbackContext,this.game)):this.onLoadRenderCallback&&this.onLoadRenderCallback.call(this.callbackContext,this.game)},destroy:function(){this._clearWorld=!0,this._clearCache=!0,this.clearCurrentState(),this.callbackContext=null,this.onInitCallback=null,this.onShutDownCallback=null,this.onPreloadCallback=null,this.onLoadRenderCallback=null,this.onLoadUpdateCallback=null,this.onCreateCallback=null,this.onUpdateCallback=null,this.onRenderCallback=null,this.onPausedCallback=null,this.onResumedCallback=null,this.onPauseUpdateCallback=null,this.game=null,this.states={},this._pendingState=null,this.current=""}},c.StateManager.prototype.constructor=c.StateManager,Object.defineProperty(c.StateManager.prototype,"created",{get:function(){return this._created}}),c.Signal=function(){},c.Signal.prototype={_bindings:null,_prevParams:null,memorize:!1,_shouldPropagate:!0,active:!0,_boundDispatch:!1,validateListener:function(a,b){if("function"!=typeof a)throw new Error("Phaser.Signal: listener is a required param of {fn}() and should be a Function.".replace("{fn}",b))},_registerListener:function(a,b,d,e,f){var g,h=this._indexOfListener(a,d);if(-1!==h){if(g=this._bindings[h],g.isOnce()!==b)throw new Error("You cannot add"+(b?"":"Once")+"() then add"+(b?"Once":"")+"() the same listener without removing the relationship first.")}else g=new c.SignalBinding(this,a,b,d,e,f),this._addBinding(g);return this.memorize&&this._prevParams&&g.execute(this._prevParams),g},_addBinding:function(a){this._bindings||(this._bindings=[]);var b=this._bindings.length;do b--;while(this._bindings[b]&&a._priority<=this._bindings[b]._priority);this._bindings.splice(b+1,0,a)},_indexOfListener:function(a,b){if(!this._bindings)return-1;void 0===b&&(b=null);for(var c,d=this._bindings.length;d--;)if(c=this._bindings[d],c._listener===a&&c.context===b)return d;return-1},has:function(a,b){return-1!==this._indexOfListener(a,b)},add:function(a,b,c){this.validateListener(a,"add");var d=[];if(arguments.length>3)for(var e=3;e3)for(var e=3;ea||a>=this.children.length?-1:this.getChildAt(a)},c.Group.prototype.create=function(a,b,c,d,e,f){void 0===e&&(e=!0);var g=new this.classType(this.game,a,b,c,d);return g.exists=e,g.visible=e,g.alive=e,this.add(g,!1,f)},c.Group.prototype.createMultiple=function(a,b,c,d){void 0===c&&(c=0),void 0===d&&(d=!1),Array.isArray(b)||(b=[b]),Array.isArray(c)||(c=[c]);var e=this,f=[];return b.forEach(function(b){c.forEach(function(c){for(var g=0;a>g;g++)f.push(e.create(0,0,b,c,d))})}),f},c.Group.prototype.updateZ=function(){for(var a=this.children.length;a--;)this.children[a].z=a},c.Group.prototype.align=function(a,b,d,e,f,g){if(void 0===f&&(f=c.TOP_LEFT),void 0===g&&(g=0),!(0===this.children.length||g>this.children.length||-1===a&&-1===b))for(var h=new c.Rectangle(0,0,d,e),i=a*d,j=b*e,k=g;kthis.children.length-1&&(a=0),this.cursor?(this.cursorIndex=a,this.cursor=this.children[this.cursorIndex],this.cursor):void 0},c.Group.prototype.next=function(){return this.cursor?(this.cursorIndex>=this.children.length-1?this.cursorIndex=0:this.cursorIndex++,this.cursor=this.children[this.cursorIndex],this.cursor):void 0},c.Group.prototype.previous=function(){return this.cursor?(0===this.cursorIndex?this.cursorIndex=this.children.length-1:this.cursorIndex--,this.cursor=this.children[this.cursorIndex],this.cursor):void 0},c.Group.prototype.swap=function(a,b){this.swapChildren(a,b),this.updateZ()},c.Group.prototype.bringToTop=function(a){return a.parent===this&&this.getIndex(a)0&&(this.remove(a,!1,!0),this.addAt(a,0,!0)),a},c.Group.prototype.moveUp=function(a){if(a.parent===this&&this.getIndex(a)0){var b=this.getIndex(a),c=this.getAt(b-1);c&&this.swap(a,c)}return a},c.Group.prototype.xy=function(a,b,c){return 0>a||a>this.children.length?-1:(this.getChildAt(a).x=b,void(this.getChildAt(a).y=c))},c.Group.prototype.reverse=function(){this.children.reverse(),this.updateZ()},c.Group.prototype.getIndex=function(a){return this.children.indexOf(a)},c.Group.prototype.getByName=function(a){for(var b=0;b0))return!1;var f=b.length;return 1===f?0===d?a[b[0]]=c:1==d?a[b[0]]+=c:2==d?a[b[0]]-=c:3==d?a[b[0]]*=c:4==d&&(a[b[0]]/=c):2===f?0===d?a[b[0]][b[1]]=c:1==d?a[b[0]][b[1]]+=c:2==d?a[b[0]][b[1]]-=c:3==d?a[b[0]][b[1]]*=c:4==d&&(a[b[0]][b[1]]/=c):3===f?0===d?a[b[0]][b[1]][b[2]]=c:1==d?a[b[0]][b[1]][b[2]]+=c:2==d?a[b[0]][b[1]][b[2]]-=c:3==d?a[b[0]][b[1]][b[2]]*=c:4==d&&(a[b[0]][b[1]][b[2]]/=c):4===f&&(0===d?a[b[0]][b[1]][b[2]][b[3]]=c:1==d?a[b[0]][b[1]][b[2]][b[3]]+=c:2==d?a[b[0]][b[1]][b[2]][b[3]]-=c:3==d?a[b[0]][b[1]][b[2]][b[3]]*=c:4==d&&(a[b[0]][b[1]][b[2]][b[3]]/=c)),!0},c.Group.prototype.checkProperty=function(a,b,d,e){return void 0===e&&(e=!1),!c.Utils.getProperty(a,b)&&e?!1:c.Utils.getProperty(a,b)!==d?!1:!0},c.Group.prototype.set=function(a,b,c,d,e,f,g){return void 0===g&&(g=!1),b=b.split("."),void 0===d&&(d=!1),void 0===e&&(e=!1),(d===!1||d&&a.alive)&&(e===!1||e&&a.visible)?this.setProperty(a,b,c,f,g):void 0},c.Group.prototype.setAll=function(a,b,c,d,e,f){void 0===c&&(c=!1),void 0===d&&(d=!1),void 0===f&&(f=!1),a=a.split("."),e=e||0;for(var g=0;g2){c=[];for(var d=2;d2){e=[];for(var f=2;f2){d=[null];for(var e=2;e2){d=[null];for(var e=2;e2){d=[null];for(var e=2;eb[this._sortProperty]?1:a.zb[this._sortProperty]?-1:0},c.Group.prototype.iterate=function(a,b,d,e,f,g){if(d===c.Group.RETURN_TOTAL&&0===this.children.length)return 0;for(var h=0,i=0;i0?this.children[this.children.length-1]:void 0},c.Group.prototype.getBottom=function(){return this.children.length>0?this.children[0]:void 0},c.Group.prototype.getClosestTo=function(a){for(var b=Number.MAX_VALUE,d=0,e=null,f=0;fd&&(b=d,e=g))}return e},c.Group.prototype.getFurthestFrom=function(a){for(var b=0,d=0,e=null,f=0;fb&&(b=d,e=g))}return e; -},c.Group.prototype.countLiving=function(){return this.iterate("alive",!0,c.Group.RETURN_TOTAL)},c.Group.prototype.countDead=function(){return this.iterate("alive",!1,c.Group.RETURN_TOTAL)},c.Group.prototype.getRandom=function(a,b){return 0===this.children.length?null:(a=a||0,b=b||this.children.length,c.ArrayUtils.getRandomItem(this.children,a,b))},c.Group.prototype.remove=function(a,b,c){if(void 0===b&&(b=!1),void 0===c&&(c=!1),0===this.children.length||-1===this.children.indexOf(a))return!1;c||!a.events||a.destroyPhase||a.events.onRemovedFromGroup$dispatch(a,this);var d=this.removeChild(a);return this.removeFromHash(a),this.updateZ(),this.cursor===a&&this.next(),b&&d&&d.destroy(!0),!0},c.Group.prototype.moveAll=function(a,b){if(void 0===b&&(b=!1),this.children.length>0&&a instanceof c.Group){do a.add(this.children[0],b);while(this.children.length>0);this.hash=[],this.cursor=null}return a},c.Group.prototype.removeAll=function(a,b,c){if(void 0===a&&(a=!1),void 0===b&&(b=!1),void 0===c&&(c=!1),0!==this.children.length){do{!b&&this.children[0].events&&this.children[0].events.onRemovedFromGroup$dispatch(this.children[0],this);var d=this.removeChild(this.children[0]);this.removeFromHash(d),a&&d&&d.destroy(!0,c)}while(this.children.length>0);this.hash=[],this.cursor=null}},c.Group.prototype.removeBetween=function(a,b,c,d){if(void 0===b&&(b=this.children.length-1),void 0===c&&(c=!1),void 0===d&&(d=!1),0!==this.children.length){if(a>b||0>a||b>this.children.length)return!1;for(var e=b;e>=a;){!d&&this.children[e].events&&this.children[e].events.onRemovedFromGroup$dispatch(this.children[e],this);var f=this.removeChild(this.children[e]);this.removeFromHash(f),c&&f&&f.destroy(!0),this.cursor===this.children[e]&&(this.cursor=null),e--}this.updateZ()}},c.Group.prototype.destroy=function(a,b){null===this.game||this.ignoreDestroy||(void 0===a&&(a=!0),void 0===b&&(b=!1),this.onDestroy.dispatch(this,a,b),this.removeAll(a),this.cursor=null,this.filters=null,this.pendingDestroy=!1,b||(this.parent&&this.parent.removeChild(this),this.game=null,this.exists=!1))},Object.defineProperty(c.Group.prototype,"total",{get:function(){return this.iterate("exists",!0,c.Group.RETURN_TOTAL)}}),Object.defineProperty(c.Group.prototype,"length",{get:function(){return this.children.length}}),Object.defineProperty(c.Group.prototype,"angle",{get:function(){return c.Math.radToDeg(this.rotation)},set:function(a){this.rotation=c.Math.degToRad(a)}}),c.World=function(a){c.Group.call(this,a,null,"__world",!1),this.bounds=new c.Rectangle(0,0,a.width,a.height),this.camera=null,this._definedSize=!1,this._width=a.width,this._height=a.height,this.game.state.onStateChange.add(this.stateChange,this)},c.World.prototype=Object.create(c.Group.prototype),c.World.prototype.constructor=c.World,c.World.prototype.boot=function(){this.camera=new c.Camera(this.game,0,0,0,this.game.width,this.game.height),this.game.stage.addChild(this),this.camera.boot()},c.World.prototype.stateChange=function(){this.x=0,this.y=0,this.camera.reset()},c.World.prototype.setBounds=function(a,b,c,d){this._definedSize=!0,this._width=c,this._height=d,this.bounds.setTo(a,b,c,d),this.x=a,this.y=b,this.camera.bounds&&this.camera.bounds.setTo(a,b,Math.max(c,this.game.width),Math.max(d,this.game.height)),this.game.physics.setBoundsToWorld()},c.World.prototype.resize=function(a,b){this._definedSize&&(athis.bounds.right&&(a.x=this.bounds.left)),e&&(a.y+a._currentBounds.heightthis.bounds.bottom&&(a.y=this.bounds.top))):(d&&a.x+bthis.bounds.right&&(a.x=this.bounds.left-b),e&&a.y+bthis.bounds.bottom&&(a.y=this.bounds.top-b))},Object.defineProperty(c.World.prototype,"width",{get:function(){return this.bounds.width},set:function(a){ag;g++)e>g?f.push("color: #ff2424; background: #fff"):f.push("color: #959595; background: #fff");console.log.apply(console,f)}else window.console&&console.log("Phaser v"+a+" | Pixi.js "+PIXI.VERSION+" | "+b+" | "+d+" | http://phaser.io")}},setUpRenderer:function(){if(this.config.canvas?this.canvas=this.config.canvas:this.canvas=c.Canvas.create(this,this.width,this.height,this.config.canvasID,!0),this.config.canvasStyle?this.canvas.style=this.config.canvasStyle:this.canvas.style["-webkit-full-screen"]="width: 100%; height: 100%",this.renderType===c.HEADLESS||this.renderType===c.CANVAS||this.renderType===c.AUTO&&!this.device.webGL){if(!this.device.canvas)throw new Error("Phaser.Game - Cannot create Canvas or WebGL context, aborting.");this.renderType=c.CANVAS,this.renderer=new PIXI.CanvasRenderer(this),this.context=this.renderer.context}else this.renderType=c.WEBGL,this.renderer=new PIXI.WebGLRenderer(this),this.context=null,this.canvas.addEventListener("webglcontextlost",this.contextLost.bind(this),!1),this.canvas.addEventListener("webglcontextrestored",this.contextRestored.bind(this),!1);this.device.cocoonJS&&(this.canvas.screencanvas=this.renderType===c.CANVAS?!0:!1),this.renderType!==c.HEADLESS&&(this.stage.smoothed=this.antialias,c.Canvas.addToDOM(this.canvas,this.parent,!1),c.Canvas.setTouchAction(this.canvas))},contextLost:function(a){a.preventDefault(),this.renderer.contextLost=!0},contextRestored:function(){this.renderer.initContext(),this.cache.clearGLTextures(),this.renderer.contextLost=!1},update:function(a){if(this.time.update(a),this._kickstart)return this.updateLogic(this.time.desiredFpsMult),this.updateRender(this.time.slowMotion*this.time.desiredFps),void(this._kickstart=!1);if(this._spiraling>1&&!this.forceSingleUpdate)this.time.time>this._nextFpsNotification&&(this._nextFpsNotification=this.time.time+1e4,this.fpsProblemNotifier.dispatch()),this._deltaTime=0,this._spiraling=0,this.updateRender(this.time.slowMotion*this.time.desiredFps);else{var b=1e3*this.time.slowMotion/this.time.desiredFps;this._deltaTime+=Math.max(Math.min(3*b,this.time.elapsed),0);var c=0;for(this.updatesThisFrame=Math.floor(this._deltaTime/b),this.forceSingleUpdate&&(this.updatesThisFrame=Math.min(1,this.updatesThisFrame));this._deltaTime>=b&&(this._deltaTime-=b,this.currentUpdateID=c,this.updateLogic(this.time.desiredFpsMult),c++,!this.forceSingleUpdate||1!==c);)this.time.refresh();c>this._lastCount?this._spiraling++:c=c.Input.MAX_POINTERS)return console.warn("Phaser.Input.addPointer: Maximum limit of "+c.Input.MAX_POINTERS+" pointers reached."),null;var a=this.pointers.length+1,b=new c.Pointer(this.game,a,c.PointerMode.TOUCH);return this.pointers.push(b),this["pointer"+a]=b,b},update:function(){if(this.keyboard&&this.keyboard.update(),this.pollRate>0&&this._pollCounter=0&&this.countActivePointers(this.maxPointers)>=this.maxPointers)return null;if(!this.pointer1.active)return this.pointer1.start(a);if(!this.pointer2.active)return this.pointer2.start(a);for(var b=2;b0;c++){var d=this.pointers[c];d.active&&b--}return a-b},getPointer:function(a){void 0===a&&(a=!1);for(var b=0;b=g&&this._localPoint.x=h&&this._localPoint.y=g&&this._localPoint.x=h&&this._localPoint.y0&&this._pollCounterthis.game.time.time},justReleased:function(a){return a=a||250,this.isUp&&this.timeUp+a>this.game.time.time},reset:function(){this.isDown=!1,this.isUp=!0,this.timeDown=this.game.time.time,this.repeats=0,this.altKey=!1,this.shiftKey=!1,this.ctrlKey=!1},destroy:function(){this.onDown.dispose(),this.onUp.dispose(),this.onFloat.dispose(),this.parent=null,this.game=null}},c.DeviceButton.prototype.constructor=c.DeviceButton,Object.defineProperty(c.DeviceButton.prototype,"duration",{get:function(){return this.isUp?-1:this.game.time.time-this.timeDown}}),c.Pointer=function(a,b,d){this.game=a,this.id=b,this.type=c.POINTER,this.exists=!0,this.identifier=0,this.pointerId=null,this.pointerMode=d||c.PointerMode.CURSOR|c.PointerMode.CONTACT,this.target=null,this.button=null,this.leftButton=new c.DeviceButton(this,c.Pointer.LEFT_BUTTON),this.middleButton=new c.DeviceButton(this,c.Pointer.MIDDLE_BUTTON),this.rightButton=new c.DeviceButton(this,c.Pointer.RIGHT_BUTTON),this.backButton=new c.DeviceButton(this,c.Pointer.BACK_BUTTON),this.forwardButton=new c.DeviceButton(this,c.Pointer.FORWARD_BUTTON),this.eraserButton=new c.DeviceButton(this,c.Pointer.ERASER_BUTTON),this._holdSent=!1,this._history=[],this._nextDrop=0,this._stateReset=!1,this.withinGame=!1,this.clientX=-1,this.clientY=-1,this.pageX=-1,this.pageY=-1,this.screenX=-1,this.screenY=-1,this.rawMovementX=0,this.rawMovementY=0,this.movementX=0,this.movementY=0,this.x=-1,this.y=-1,this.isMouse=0===b,this.isDown=!1,this.isUp=!0,this.timeDown=0,this.timeUp=0,this.previousTapTime=0,this.totalTouches=0,this.msSinceLastClick=Number.MAX_VALUE,this.targetObject=null,this.interactiveCandidates=[],this.active=!1,this.dirty=!1,this.position=new c.Point,this.positionDown=new c.Point,this.positionUp=new c.Point,this.circle=new c.Circle(0,0,44),this._clickTrampolines=null,this._trampolineTargetObject=null},c.Pointer.NO_BUTTON=0,c.Pointer.LEFT_BUTTON=1,c.Pointer.RIGHT_BUTTON=2,c.Pointer.MIDDLE_BUTTON=4,c.Pointer.BACK_BUTTON=8,c.Pointer.FORWARD_BUTTON=16,c.Pointer.ERASER_BUTTON=32,c.Pointer.prototype={resetButtons:function(){this.isDown=!1,this.isUp=!0,this.isMouse&&(this.leftButton.reset(),this.middleButton.reset(),this.rightButton.reset(),this.backButton.reset(),this.forwardButton.reset(),this.eraserButton.reset())},processButtonsDown:function(a,b){c.Pointer.LEFT_BUTTON&a&&this.leftButton.start(b),c.Pointer.RIGHT_BUTTON&a&&this.rightButton.start(b),c.Pointer.MIDDLE_BUTTON&a&&this.middleButton.start(b),c.Pointer.BACK_BUTTON&a&&this.backButton.start(b),c.Pointer.FORWARD_BUTTON&a&&this.forwardButton.start(b),c.Pointer.ERASER_BUTTON&a&&this.eraserButton.start(b)},processButtonsUp:function(a,b){a===c.Mouse.LEFT_BUTTON&&this.leftButton.stop(b),a===c.Mouse.RIGHT_BUTTON&&this.rightButton.stop(b),a===c.Mouse.MIDDLE_BUTTON&&this.middleButton.stop(b),a===c.Mouse.BACK_BUTTON&&this.backButton.stop(b),a===c.Mouse.FORWARD_BUTTON&&this.forwardButton.stop(b),5===a&&this.eraserButton.stop(b)},updateButtons:function(a){this.button=a.button;var b="down"===a.type.toLowerCase().substr(-4);void 0!==a.buttons?b?this.processButtonsDown(a.buttons,a):this.processButtonsUp(a.button,a):b?this.leftButton.start(a):(this.leftButton.stop(a),this.rightButton.stop(a)),1===a.buttons&&a.ctrlKey&&this.leftButton.isDown&&(this.leftButton.stop(a),this.rightButton.start(a)),this.isUp=!0,this.isDown=!1,(this.leftButton.isDown||this.rightButton.isDown||this.middleButton.isDown||this.backButton.isDown||this.forwardButton.isDown||this.eraserButton.isDown)&&(this.isUp=!1,this.isDown=!0)},start:function(a){var b=this.game.input;return a.pointerId&&(this.pointerId=a.pointerId),this.identifier=a.identifier,this.target=a.target,this.isMouse?this.updateButtons(a):(this.isDown=!0,this.isUp=!1),this.active=!0,this.withinGame=!0,this.dirty=!1,this._history=[],this._clickTrampolines=null,this._trampolineTargetObject=null,this.msSinceLastClick=this.game.time.time-this.timeDown,this.timeDown=this.game.time.time,this._holdSent=!1,this.move(a,!0),this.positionDown.setTo(this.x,this.y),(b.multiInputOverride===c.Input.MOUSE_OVERRIDES_TOUCH||b.multiInputOverride===c.Input.MOUSE_TOUCH_COMBINE||b.multiInputOverride===c.Input.TOUCH_OVERRIDES_MOUSE&&0===b.totalActivePointers)&&(b.x=this.x,b.y=this.y,b.position.setTo(this.x,this.y),b.onDown.dispatch(this,a),b.resetSpeed(this.x,this.y)),this._stateReset=!1,this.totalTouches++,null!==this.targetObject&&this.targetObject._touchedHandler(this),this},update:function(){var a=this.game.input;this.active&&(this.dirty&&(a.interactiveItems.total>0&&this.processInteractiveObjects(!1),this.dirty=!1),this._holdSent===!1&&this.duration>=a.holdRate&&((a.multiInputOverride===c.Input.MOUSE_OVERRIDES_TOUCH||a.multiInputOverride===c.Input.MOUSE_TOUCH_COMBINE||a.multiInputOverride===c.Input.TOUCH_OVERRIDES_MOUSE&&0===a.totalActivePointers)&&a.onHold.dispatch(this),this._holdSent=!0),a.recordPointerHistory&&this.game.time.time>=this._nextDrop&&(this._nextDrop=this.game.time.time+a.recordRate,this._history.push({x:this.position.x,y:this.position.y}),this._history.length>a.recordLimit&&this._history.shift()))},move:function(a,b){var d=this.game.input;if(!d.pollLocked){if(void 0===b&&(b=!1),void 0!==a.button&&(this.button=a.button),b&&this.isMouse&&this.updateButtons(a),this.clientX=a.clientX,this.clientY=a.clientY,this.pageX=a.pageX,this.pageY=a.pageY,this.screenX=a.screenX,this.screenY=a.screenY,this.isMouse&&d.mouse.locked&&!b&&(this.rawMovementX=a.movementX||a.mozMovementX||a.webkitMovementX||0,this.rawMovementY=a.movementY||a.mozMovementY||a.webkitMovementY||0,this.movementX+=this.rawMovementX,this.movementY+=this.rawMovementY),this.x=(this.pageX-this.game.scale.offset.x)*d.scale.x,this.y=(this.pageY-this.game.scale.offset.y)*d.scale.y,this.position.setTo(this.x,this.y),this.circle.x=this.x,this.circle.y=this.y,(d.multiInputOverride===c.Input.MOUSE_OVERRIDES_TOUCH||d.multiInputOverride===c.Input.MOUSE_TOUCH_COMBINE||d.multiInputOverride===c.Input.TOUCH_OVERRIDES_MOUSE&&0===d.totalActivePointers)&&(d.activePointer=this,d.x=this.x,d.y=this.y,d.position.setTo(d.x,d.y),d.circle.x=d.x,d.circle.y=d.y),this.withinGame=this.game.scale.bounds.contains(this.pageX,this.pageY),this.game.paused)return this;for(var e=d.moveCallbacks.length;e--;)d.moveCallbacks[e].callback.call(d.moveCallbacks[e].context,this,this.x,this.y,b);return null!==this.targetObject&&this.targetObject.isDragged===!0?this.targetObject.update(this)===!1&&(this.targetObject=null):d.interactiveItems.total>0&&this.processInteractiveObjects(b),this}},processInteractiveObjects:function(a){var b=0,c=-1,d=null,e=this.game.input.interactiveItems.first;for(this.interactiveCandidates=[];e;)e.checked=!1,e.validForInput(c,b,!1)&&(e.checked=!0,(a&&e.checkPointerDown(this,!0)||!a&&e.checkPointerOver(this,!0))&&(b=e.sprite.renderOrderID,c=e.priorityID,d=e,this.interactiveCandidates.push(e))),e=this.game.input.interactiveItems.next;for(e=this.game.input.interactiveItems.first;e;)!e.checked&&e.validForInput(c,b,!0)&&(a&&e.checkPointerDown(this,!1)||!a&&e.checkPointerOver(this,!1))&&(b=e.sprite.renderOrderID,c=e.priorityID,d=e,this.interactiveCandidates.push(e)),e=this.game.input.interactiveItems.next;return this.game.input.customCandidateHandler&&(d=this.game.input.customCandidateHandler.call(this.game.input.customCandidateHandlerContext,this,this.interactiveCandidates,d)),this.swapTarget(d,!1),null!==this.targetObject},swapTarget:function(a,b){void 0===b&&(b=!1),null===a?this.targetObject&&(this.targetObject._pointerOutHandler(this,b),this.targetObject=null):null===this.targetObject?(this.targetObject=a,a._pointerOverHandler(this,b)):this.targetObject===a?a.update(this)===!1&&(this.targetObject=null):(this.targetObject._pointerOutHandler(this,b),this.targetObject=a,this.targetObject._pointerOverHandler(this,b))},leave:function(a){this.withinGame=!1,this.move(a,!1)},stop:function(a){var b=this.game.input;return this._stateReset&&this.withinGame?void a.preventDefault():(this.timeUp=this.game.time.time,(b.multiInputOverride===c.Input.MOUSE_OVERRIDES_TOUCH||b.multiInputOverride===c.Input.MOUSE_TOUCH_COMBINE||b.multiInputOverride===c.Input.TOUCH_OVERRIDES_MOUSE&&0===b.totalActivePointers)&&(b.onUp.dispatch(this,a),this.duration>=0&&this.duration<=b.tapRate&&(this.timeUp-this.previousTapTime0&&(this.active=!1),this.withinGame=this.game.scale.bounds.contains(a.pageX,a.pageY),this.pointerId=null,this.identifier=null,this.positionUp.setTo(this.x,this.y),this.isMouse===!1&&b.currentPointers--,b.interactiveItems.callAll("_releasedHandler",this),this._clickTrampolines&&(this._trampolineTargetObject=this.targetObject),this.targetObject=null,this)},justPressed:function(a){return a=a||this.game.input.justPressedRate,this.isDown===!0&&this.timeDown+a>this.game.time.time},justReleased:function(a){return a=a||this.game.input.justReleasedRate,this.isUp&&this.timeUp+a>this.game.time.time},addClickTrampoline:function(a,b,c,d){if(this.isDown){for(var e=this._clickTrampolines=this._clickTrampolines||[],f=0;fd;d++)this._pointerData[d]={id:d,x:0,y:0,isDown:!1,isUp:!1,isOver:!1,isOut:!1,timeOver:0,timeOut:0,timeDown:0,timeUp:0,downDuration:0,isDragged:!1};this.snapOffset=new c.Point,this.enabled=!0,this._wasEnabled=!0}return this.sprite.events.onAddedToGroup.add(this.addedToGroup,this),this.sprite.events.onRemovedFromGroup.add(this.removedFromGroup,this),this.flagged=!1,this.sprite},addedToGroup:function(){this._dragPhase||this._wasEnabled&&!this.enabled&&this.start()},removedFromGroup:function(){this._dragPhase||(this.enabled?(this._wasEnabled=!0,this.stop()):this._wasEnabled=!1)},reset:function(){this.enabled=!1,this.flagged=!1;for(var a=0;10>a;a++)this._pointerData[a]={id:a,x:0,y:0,isDown:!1,isUp:!1,isOver:!1,isOut:!1,timeOver:0,timeOut:0,timeDown:0,timeUp:0,downDuration:0,isDragged:!1}},stop:function(){this.enabled!==!1&&(this.enabled=!1,this.game.input.interactiveItems.remove(this))},destroy:function(){this.sprite&&(this._setHandCursor&&(this.game.canvas.style.cursor="default",this._setHandCursor=!1),this.enabled=!1,this.game.input.interactiveItems.remove(this),this._pointerData.length=0,this.boundsRect=null,this.boundsSprite=null,this.sprite=null)},validForInput:function(a,b,c){return void 0===c&&(c=!0),!this.enabled||0===this.sprite.scale.x||0===this.sprite.scale.y||this.priorityIDa||this.priorityID===a&&this.sprite.renderOrderID>b)?!0:!1},isPixelPerfect:function(){return this.pixelPerfectClick||this.pixelPerfectOver},pointerX:function(a){return a=a||0,this._pointerData[a].x},pointerY:function(a){return a=a||0,this._pointerData[a].y},pointerDown:function(a){return a=a||0,this._pointerData[a].isDown},pointerUp:function(a){return a=a||0,this._pointerData[a].isUp},pointerTimeDown:function(a){return a=a||0,this._pointerData[a].timeDown},pointerTimeUp:function(a){return a=a||0,this._pointerData[a].timeUp},pointerOver:function(a){if(!this.enabled)return!1;if(void 0===a){for(var b=0;10>b;b++)if(this._pointerData[b].isOver)return!0;return!1}return this._pointerData[a].isOver},pointerOut:function(a){if(!this.enabled)return!1;if(void 0!==a)return this._pointerData[a].isOut;for(var b=0;10>b;b++)if(this._pointerData[b].isOut)return!0},pointerTimeOver:function(a){return a=a||0,this._pointerData[a].timeOver},pointerTimeOut:function(a){return a=a||0,this._pointerData[a].timeOut},pointerDragged:function(a){return a=a||0,this._pointerData[a].isDragged},checkPointerDown:function(a,b){return a.isDown&&this.enabled&&this.sprite&&this.sprite.parent&&this.sprite.visible&&this.sprite.parent.visible&&0!==this.sprite.worldScale.x&&0!==this.sprite.worldScale.y&&this.game.input.hitTest(this.sprite,a,this._tempPoint)?(void 0===b&&(b=!1),!b&&this.pixelPerfectClick?this.checkPixel(this._tempPoint.x,this._tempPoint.y):!0):!1},checkPointerOver:function(a,b){return this.enabled&&this.sprite&&this.sprite.parent&&this.sprite.visible&&this.sprite.parent.visible&&0!==this.sprite.worldScale.x&&0!==this.sprite.worldScale.y&&this.game.input.hitTest(this.sprite,a,this._tempPoint)?(void 0===b&&(b=!1),!b&&this.pixelPerfectOver?this.checkPixel(this._tempPoint.x,this._tempPoint.y):!0):!1},checkPixel:function(a,b,c){if(this.sprite.texture.baseTexture.source){if(null===a&&null===b){this.game.input.getLocalPosition(this.sprite,c,this._tempPoint);var a=this._tempPoint.x,b=this._tempPoint.y}if(0!==this.sprite.anchor.x&&(a-=-this.sprite.texture.frame.width*this.sprite.anchor.x),0!==this.sprite.anchor.y&&(b-=-this.sprite.texture.frame.height*this.sprite.anchor.y),a+=this.sprite.texture.frame.x,b+=this.sprite.texture.frame.y,this.sprite.texture.trim&&(a-=this.sprite.texture.trim.x,b-=this.sprite.texture.trim.y,athis.sprite.texture.crop.right||bthis.sprite.texture.crop.bottom))return this._dx=a,this._dy=b,!1;this._dx=a,this._dy=b,this.game.input.hitContext.clearRect(0,0,1,1),this.game.input.hitContext.drawImage(this.sprite.texture.baseTexture.source,a,b,1,1,0,0,1,1);var d=this.game.input.hitContext.getImageData(0,0,1,1);if(d.data[3]>=this.pixelPerfectAlpha)return!0}return!1},update:function(a){return null!==this.sprite&&void 0!==this.sprite.parent?this.enabled&&this.sprite.visible&&this.sprite.parent.visible?this._pendingDrag?(this._dragDistancePass||(this._dragDistancePass=c.Math.distance(a.x,a.y,this.downPoint.x,this.downPoint.y)>=this.dragDistanceThreshold),this._dragDistancePass&&this._dragTimePass&&this.startDrag(a),!0):this.draggable&&this._draggedPointerID===a.id?this.updateDrag(a):this._pointerData[a.id].isOver?this.checkPointerOver(a)?(this._pointerData[a.id].x=a.x-this.sprite.x,this._pointerData[a.id].y=a.y-this.sprite.y,!0):(this._pointerOutHandler(a),!1):void 0:(this._pointerOutHandler(a),!1):void 0},_pointerOverHandler:function(a,b){if(null!==this.sprite){var d=this._pointerData[a.id];if(d.isOver===!1||a.dirty){var e=d.isOver===!1;d.isOver=!0,d.isOut=!1,d.timeOver=this.game.time.time,d.x=a.x-this.sprite.x,d.y=a.y-this.sprite.y,this.useHandCursor&&d.isDragged===!1&&(this.game.canvas.style.cursor="pointer",this._setHandCursor=!0),!b&&e&&this.sprite&&this.sprite.events&&this.sprite.events.onInputOver$dispatch(this.sprite,a),this.sprite.parent&&this.sprite.parent.type===c.GROUP&&this.sprite.parent.onChildInputOver.dispatch(this.sprite,a)}}},_pointerOutHandler:function(a,b){if(null!==this.sprite){var d=this._pointerData[a.id];d.isOver=!1,d.isOut=!0,d.timeOut=this.game.time.time,this.useHandCursor&&d.isDragged===!1&&(this.game.canvas.style.cursor="default",this._setHandCursor=!1),!b&&this.sprite&&this.sprite.events&&(this.sprite.events.onInputOut$dispatch(this.sprite,a),this.sprite&&this.sprite.parent&&this.sprite.parent.type===c.GROUP&&this.sprite.parent.onChildInputOut.dispatch(this.sprite,a))}},_touchedHandler:function(a){if(null!==this.sprite){var b=this._pointerData[a.id];if(!b.isDown&&b.isOver){if(this.pixelPerfectClick&&!this.checkPixel(null,null,a))return;if(b.isDown=!0,b.isUp=!1,b.timeDown=this.game.time.time,this.downPoint.set(a.x,a.y),a.dirty=!0,this.sprite&&this.sprite.events&&(this.sprite.events.onInputDown$dispatch(this.sprite,a),this.sprite&&this.sprite.parent&&this.sprite.parent.type===c.GROUP&&this.sprite.parent.onChildInputDown.dispatch(this.sprite,a),null===this.sprite))return;this.draggable&&this.isDragged===!1&&(0===this.dragTimeThreshold&&0===this.dragDistanceThreshold?this.startDrag(a):(this._pendingDrag=!0,this._dragDistancePass=0===this.dragDistanceThreshold,this.dragTimeThreshold>0?(this._dragTimePass=!1,this.game.time.events.add(this.dragTimeThreshold,this.dragTimeElapsed,this,a)):this._dragTimePass=!0)),this.bringToTop&&this.sprite.bringToTop()}}},dragTimeElapsed:function(a){this._dragTimePass=!0,this._pendingDrag&&this.sprite&&this._dragDistancePass&&this.startDrag(a)},_releasedHandler:function(a){if(null!==this.sprite){var b=this._pointerData[a.id];if(b.isDown&&a.isUp){b.isDown=!1,b.isUp=!0,b.timeUp=this.game.time.time,b.downDuration=b.timeUp-b.timeDown;var d=this.checkPointerOver(a);this.sprite&&this.sprite.events&&(this.dragStopBlocksInputUp&&(!this.dragStopBlocksInputUp||this.draggable&&this.isDragged&&this._draggedPointerID===a.id)||this.sprite.events.onInputUp$dispatch(this.sprite,a,d),this.sprite&&this.sprite.parent&&this.sprite.parent.type===c.GROUP&&this.sprite.parent.onChildInputUp.dispatch(this.sprite,a,d),d&&(d=this.checkPointerOver(a))),b.isOver=d,!d&&this.useHandCursor&&(this.game.canvas.style.cursor="default",this._setHandCursor=!1),a.dirty=!0,this._pendingDrag=!1,this.draggable&&this.isDragged&&this._draggedPointerID===a.id&&this.stopDrag(a)}}},updateDrag:function(a,b){if(a.isUp)return this.stopDrag(a),!1;void 0===b&&(b=!1);var c=this.globalToLocalX(a.x)+this._dragPoint.x+this.dragOffset.x,d=this.globalToLocalY(a.y)+this._dragPoint.y+this.dragOffset.y;if(this.sprite.fixedToCamera)this.allowHorizontalDrag&&(this.sprite.cameraOffset.x=c),this.allowVerticalDrag&&(this.sprite.cameraOffset.y=d),this.boundsRect&&this.checkBoundsRect(),this.boundsSprite&&this.checkBoundsSprite(),this.snapOnDrag&&(this.sprite.cameraOffset.x=Math.round((this.sprite.cameraOffset.x-this.snapOffsetX%this.snapX)/this.snapX)*this.snapX+this.snapOffsetX%this.snapX,this.sprite.cameraOffset.y=Math.round((this.sprite.cameraOffset.y-this.snapOffsetY%this.snapY)/this.snapY)*this.snapY+this.snapOffsetY%this.snapY,this.snapPoint.set(this.sprite.cameraOffset.x,this.sprite.cameraOffset.y));else{var e=this.game.camera.x-this._pointerData[a.id].camX,f=this.game.camera.y-this._pointerData[a.id].camY;this.allowHorizontalDrag&&(this.sprite.x=c+e),this.allowVerticalDrag&&(this.sprite.y=d+f),this.boundsRect&&this.checkBoundsRect(),this.boundsSprite&&this.checkBoundsSprite(),this.snapOnDrag&&(this.sprite.x=Math.round((this.sprite.x-this.snapOffsetX%this.snapX)/this.snapX)*this.snapX+this.snapOffsetX%this.snapX,this.sprite.y=Math.round((this.sprite.y-this.snapOffsetY%this.snapY)/this.snapY)*this.snapY+this.snapOffsetY%this.snapY,this.snapPoint.set(this.sprite.x,this.sprite.y))}return this.sprite.events.onDragUpdate.dispatch(this.sprite,a,c,d,this.snapPoint,b),!0},justOver:function(a,b){return a=a||0,b=b||500,this._pointerData[a].isOver&&this.overDuration(a)a;a++)this._pointerData[a].isDragged=!1;this.draggable=!1,this.isDragged=!1,this._draggedPointerID=-1,this._pendingDrag=!1},startDrag:function(a){var b=this.sprite.x,c=this.sprite.y;if(this.isDragged=!0,this._draggedPointerID=a.id,this._pointerData[a.id].camX=this.game.camera.x,this._pointerData[a.id].camY=this.game.camera.y,this._pointerData[a.id].isDragged=!0,this.sprite.fixedToCamera){if(this.dragFromCenter){var d=this.sprite.getBounds();this.sprite.cameraOffset.x=this.globalToLocalX(a.x)+(this.sprite.cameraOffset.x-d.centerX),this.sprite.cameraOffset.y=this.globalToLocalY(a.y)+(this.sprite.cameraOffset.y-d.centerY)}this._dragPoint.setTo(this.sprite.cameraOffset.x-a.x,this.sprite.cameraOffset.y-a.y)}else{if(this.dragFromCenter){var d=this.sprite.getBounds();this.sprite.x=this.globalToLocalX(a.x)+(this.sprite.x-d.centerX),this.sprite.y=this.globalToLocalY(a.y)+(this.sprite.y-d.centerY)}this._dragPoint.setTo(this.sprite.x-this.globalToLocalX(a.x),this.sprite.y-this.globalToLocalY(a.y))}this.updateDrag(a,!0),this.bringToTop&&(this._dragPhase=!0,this.sprite.bringToTop()),this.dragStartPoint.set(b,c),this.sprite.events.onDragStart$dispatch(this.sprite,a,b,c),this._pendingDrag=!1},globalToLocalX:function(a){return this.scaleLayer&&(a-=this.game.scale.grid.boundsFluid.x,a*=this.game.scale.grid.scaleFluidInversed.x),a},globalToLocalY:function(a){return this.scaleLayer&&(a-=this.game.scale.grid.boundsFluid.y,a*=this.game.scale.grid.scaleFluidInversed.y),a},stopDrag:function(a){this.isDragged=!1,this._draggedPointerID=-1,this._pointerData[a.id].isDragged=!1,this._dragPhase=!1,this._pendingDrag=!1,this.snapOnRelease&&(this.sprite.fixedToCamera?(this.sprite.cameraOffset.x=Math.round((this.sprite.cameraOffset.x-this.snapOffsetX%this.snapX)/this.snapX)*this.snapX+this.snapOffsetX%this.snapX,this.sprite.cameraOffset.y=Math.round((this.sprite.cameraOffset.y-this.snapOffsetY%this.snapY)/this.snapY)*this.snapY+this.snapOffsetY%this.snapY):(this.sprite.x=Math.round((this.sprite.x-this.snapOffsetX%this.snapX)/this.snapX)*this.snapX+this.snapOffsetX%this.snapX,this.sprite.y=Math.round((this.sprite.y-this.snapOffsetY%this.snapY)/this.snapY)*this.snapY+this.snapOffsetY%this.snapY)),this.sprite.events.onDragStop$dispatch(this.sprite,a),this.checkPointerOver(a)===!1&&this._pointerOutHandler(a)},setDragLock:function(a,b){void 0===a&&(a=!0),void 0===b&&(b=!0),this.allowHorizontalDrag=a,this.allowVerticalDrag=b},enableSnap:function(a,b,c,d,e,f){void 0===c&&(c=!0),void 0===d&&(d=!1),void 0===e&&(e=0),void 0===f&&(f=0),this.snapX=a,this.snapY=b,this.snapOffsetX=e,this.snapOffsetY=f,this.snapOnDrag=c,this.snapOnRelease=d},disableSnap:function(){this.snapOnDrag=!1,this.snapOnRelease=!1},checkBoundsRect:function(){this.sprite.fixedToCamera?(this.sprite.cameraOffset.xthis.boundsRect.right&&(this.sprite.cameraOffset.x=this.boundsRect.right-this.sprite.width),this.sprite.cameraOffset.ythis.boundsRect.bottom&&(this.sprite.cameraOffset.y=this.boundsRect.bottom-this.sprite.height)):(this.sprite.leftthis.boundsRect.right&&(this.sprite.x=this.boundsRect.right-(this.sprite.width-this.sprite.offsetX)), -this.sprite.topthis.boundsRect.bottom&&(this.sprite.y=this.boundsRect.bottom-(this.sprite.height-this.sprite.offsetY)))},checkBoundsSprite:function(){this.sprite.fixedToCamera&&this.boundsSprite.fixedToCamera?(this.sprite.cameraOffset.xthis.boundsSprite.cameraOffset.x+this.boundsSprite.width&&(this.sprite.cameraOffset.x=this.boundsSprite.cameraOffset.x+this.boundsSprite.width-this.sprite.width),this.sprite.cameraOffset.ythis.boundsSprite.cameraOffset.y+this.boundsSprite.height&&(this.sprite.cameraOffset.y=this.boundsSprite.cameraOffset.y+this.boundsSprite.height-this.sprite.height)):(this.sprite.leftthis.boundsSprite.right&&(this.sprite.x=this.boundsSprite.right-(this.sprite.width-this.sprite.offsetX)),this.sprite.topthis.boundsSprite.bottom&&(this.sprite.y=this.boundsSprite.bottom-(this.sprite.height-this.sprite.offsetY)))}},c.InputHandler.prototype.constructor=c.InputHandler,c.Gamepad=function(a){this.game=a,this._gamepadIndexMap={},this._rawPads=[],this._active=!1,this.enabled=!0,this._gamepadSupportAvailable=!!navigator.webkitGetGamepads||!!navigator.webkitGamepads||-1!=navigator.userAgent.indexOf("Firefox/")||!!navigator.getGamepads,this._prevRawGamepadTypes=[],this._prevTimestamps=[],this.callbackContext=this,this.onConnectCallback=null,this.onDisconnectCallback=null,this.onDownCallback=null,this.onUpCallback=null,this.onAxisCallback=null,this.onFloatCallback=null,this._ongamepadconnected=null,this._gamepaddisconnected=null,this._gamepads=[new c.SinglePad(a,this),new c.SinglePad(a,this),new c.SinglePad(a,this),new c.SinglePad(a,this)]},c.Gamepad.prototype={addCallbacks:function(a,b){"undefined"!=typeof b&&(this.onConnectCallback="function"==typeof b.onConnect?b.onConnect:this.onConnectCallback,this.onDisconnectCallback="function"==typeof b.onDisconnect?b.onDisconnect:this.onDisconnectCallback,this.onDownCallback="function"==typeof b.onDown?b.onDown:this.onDownCallback,this.onUpCallback="function"==typeof b.onUp?b.onUp:this.onUpCallback,this.onAxisCallback="function"==typeof b.onAxis?b.onAxis:this.onAxisCallback,this.onFloatCallback="function"==typeof b.onFloat?b.onFloat:this.onFloatCallback,this.callbackContext=a)},start:function(){if(!this._active){this._active=!0;var a=this;this._onGamepadConnected=function(b){return a.onGamepadConnected(b)},this._onGamepadDisconnected=function(b){return a.onGamepadDisconnected(b)},window.addEventListener("gamepadconnected",this._onGamepadConnected,!1),window.addEventListener("gamepaddisconnected",this._onGamepadDisconnected,!1)}},onGamepadConnected:function(a){var b=a.gamepad;this._rawPads.push(b),this._gamepads[b.index].connect(b)},onGamepadDisconnected:function(a){var b=a.gamepad;for(var c in this._rawPads)this._rawPads[c].index===b.index&&this._rawPads.splice(c,1);this._gamepads[b.index].disconnect()},update:function(){this._pollGamepads(),this.pad1.pollStatus(),this.pad2.pollStatus(),this.pad3.pollStatus(),this.pad4.pollStatus()},_pollGamepads:function(){if(this._active){if(navigator.getGamepads)var a=navigator.getGamepads();else if(navigator.webkitGetGamepads)var a=navigator.webkitGetGamepads();else if(navigator.webkitGamepads)var a=navigator.webkitGamepads();if(a){this._rawPads=[];for(var b=!1,c=0;c0&&d>this.deadZone||0>d&&d<-this.deadZone?this.processAxisChange(c,d):this.processAxisChange(c,0)}this._prevTimestamp=this._rawPad.timestamp}},connect:function(a){var b=!this.connected;this.connected=!0,this.index=a.index,this._rawPad=a,this._buttons=[],this._buttonsLen=a.buttons.length,this._axes=[],this._axesLen=a.axes.length;for(var d=0;dthis.maxHealth&&(this.health=this.maxHealth),this},heal:function(a){return this.alive&&(this.health+=a,this.health>this.maxHealth&&(this.health=this.maxHealth)),this}},c.Component.InCamera=function(){},c.Component.InCamera.prototype={inCamera:{get:function(){return this.game.world.camera.view.intersects(this._bounds)}}},c.Component.InputEnabled=function(){},c.Component.InputEnabled.prototype={input:null,inputEnabled:{get:function(){return this.input&&this.input.enabled},set:function(a){a?null===this.input?(this.input=new c.InputHandler(this),this.input.start()):this.input&&!this.input.enabled&&this.input.start():this.input&&this.input.enabled&&this.input.stop()}}},c.Component.InWorld=function(){},c.Component.InWorld.preUpdate=function(){if(this.autoCull||this.checkWorldBounds){if(this._bounds.copyFrom(this.getBounds()),this._bounds.x+=this.game.camera.view.x,this._bounds.y+=this.game.camera.view.y,this.autoCull)if(this.game.world.camera.view.intersects(this._bounds))this.renderable=!0,this.game.world.camera.totalInView++;else if(this.renderable=!1,this.outOfCameraBoundsKill)return this.kill(),!1;if(this.checkWorldBounds)if(this._outOfBoundsFired&&this.game.world.bounds.intersects(this._bounds))this._outOfBoundsFired=!1,this.events.onEnterBounds$dispatch(this);else if(!this._outOfBoundsFired&&!this.game.world.bounds.intersects(this._bounds)&&(this._outOfBoundsFired=!0,this.events.onOutOfBounds$dispatch(this),this.outOfBoundsKill))return this.kill(),!1}return!0},c.Component.InWorld.prototype={checkWorldBounds:!1,outOfBoundsKill:!1,outOfCameraBoundsKill:!1,_outOfBoundsFired:!1,inWorld:{get:function(){return this.game.world.bounds.intersects(this.getBounds())}}},c.Component.LifeSpan=function(){},c.Component.LifeSpan.preUpdate=function(){return this.lifespan>0&&(this.lifespan-=this.game.time.physicsElapsedMS, -this.lifespan<=0)?(this.kill(),!1):!0},c.Component.LifeSpan.prototype={alive:!0,lifespan:0,revive:function(a){return void 0===a&&(a=100),this.alive=!0,this.exists=!0,this.visible=!0,"function"==typeof this.setHealth&&this.setHealth(a),this.events&&this.events.onRevived$dispatch(this),this},kill:function(){return this.alive=!1,this.exists=!1,this.visible=!1,this.events&&this.events.onKilled$dispatch(this),this}},c.Component.LoadTexture=function(){},c.Component.LoadTexture.prototype={customRender:!1,_frame:null,loadTexture:function(a,b,d){a===c.PENDING_ATLAS?(a=b,b=0):b=b||0,(d||void 0===d)&&this.animations&&this.animations.stop(),this.key=a,this.customRender=!1;var e=this.game.cache,f=!0,g=!this.texture.baseTexture.scaleMode;if(c.RenderTexture&&a instanceof c.RenderTexture)this.key=a.key,this.setTexture(a);else if(c.BitmapData&&a instanceof c.BitmapData)this.customRender=!0,this.setTexture(a.texture),f=e.hasFrameData(a.key,c.Cache.BITMAPDATA)?!this.animations.loadFrameData(e.getFrameData(a.key,c.Cache.BITMAPDATA),b):!this.animations.loadFrameData(a.frameData,0);else if(c.Video&&a instanceof c.Video){this.customRender=!0;var h=a.texture.valid;this.setTexture(a.texture),this.setFrame(a.texture.frame.clone()),a.onChangeSource.add(this.resizeFrame,this),this.texture.valid=h}else if(c.Tilemap&&a instanceof c.TilemapLayer)this.setTexture(PIXI.Texture.fromCanvas(a.canvas));else if(a instanceof PIXI.Texture)this.setTexture(a);else{var i=e.getImage(a,!0);this.key=i.key,this.setTexture(new PIXI.Texture(i.base)),"__default"===a?this.texture.baseTexture.skipRender=!0:this.texture.baseTexture.skipRender=!1,f=!this.animations.loadFrameData(i.frameData,b)}f&&(this._frame=c.Rectangle.clone(this.texture.frame)),g||(this.texture.baseTexture.scaleMode=1)},setFrame:function(a){this._frame=a,this.texture.frame.x=a.x,this.texture.frame.y=a.y,this.texture.frame.width=a.width,this.texture.frame.height=a.height,this.texture.crop.x=a.x,this.texture.crop.y=a.y,this.texture.crop.width=a.width,this.texture.crop.height=a.height,a.trimmed?(this.texture.trim?(this.texture.trim.x=a.spriteSourceSizeX,this.texture.trim.y=a.spriteSourceSizeY,this.texture.trim.width=a.sourceSizeW,this.texture.trim.height=a.sourceSizeH):this.texture.trim={x:a.spriteSourceSizeX,y:a.spriteSourceSizeY,width:a.sourceSizeW,height:a.sourceSizeH},this.texture.width=a.sourceSizeW,this.texture.height=a.sourceSizeH,this.texture.frame.width=a.sourceSizeW,this.texture.frame.height=a.sourceSizeH):!a.trimmed&&this.texture.trim&&(this.texture.trim=null),this.cropRect&&this.updateCrop(),this.texture.requiresReTint=!0,this.texture._updateUvs(),this.tilingTexture&&(this.refreshTexture=!0)},resizeFrame:function(a,b,c){this.texture.frame.resize(b,c),this.texture.setFrame(this.texture.frame)},resetFrame:function(){this._frame&&this.setFrame(this._frame)},frame:{get:function(){return this.animations.frame},set:function(a){this.animations.frame=a}},frameName:{get:function(){return this.animations.frameName},set:function(a){this.animations.frameName=a}}},c.Component.Overlap=function(){},c.Component.Overlap.prototype={overlap:function(a){return c.Rectangle.intersects(this.getBounds(),a.getBounds())}},c.Component.PhysicsBody=function(){},c.Component.PhysicsBody.preUpdate=function(){return this.fresh&&this.exists?(this.world.setTo(this.parent.position.x+this.position.x,this.parent.position.y+this.position.y),this.worldTransform.tx=this.world.x,this.worldTransform.ty=this.world.y,this.previousPosition.set(this.world.x,this.world.y),this.previousRotation=this.rotation,this.body&&this.body.preUpdate(),this.fresh=!1,!1):(this.previousPosition.set(this.world.x,this.world.y),this.previousRotation=this.rotation,this._exists&&this.parent.exists?!0:(this.renderOrderID=-1,!1))},c.Component.PhysicsBody.postUpdate=function(){this.exists&&this.body&&this.body.postUpdate()},c.Component.PhysicsBody.prototype={body:null,x:{get:function(){return this.position.x},set:function(a){this.position.x=a,this.body&&!this.body.dirty&&(this.body._reset=!0)}},y:{get:function(){return this.position.y},set:function(a){this.position.y=a,this.body&&!this.body.dirty&&(this.body._reset=!0)}}},c.Component.Reset=function(){},c.Component.Reset.prototype.reset=function(a,b,c){return void 0===c&&(c=1),this.world.set(a,b),this.position.set(a,b),this.fresh=!0,this.exists=!0,this.visible=!0,this.renderable=!0,this.components.InWorld&&(this._outOfBoundsFired=!1),this.components.LifeSpan&&(this.alive=!0,this.health=c),this.components.PhysicsBody&&this.body&&this.body.reset(a,b,!1,!1),this},c.Component.ScaleMinMax=function(){},c.Component.ScaleMinMax.prototype={transformCallback:null,transformCallbackContext:this,scaleMin:null,scaleMax:null,checkTransform:function(a){this.scaleMin&&(a.athis.scaleMax.x&&(a.a=this.scaleMax.x),a.d>this.scaleMax.y&&(a.d=this.scaleMax.y))},setScaleMinMax:function(a,b,d,e){void 0===b?b=d=e=a:void 0===d&&(d=e=b,b=a),null===a?this.scaleMin=null:this.scaleMin?this.scaleMin.set(a,b):this.scaleMin=new c.Point(a,b),null===d?this.scaleMax=null:this.scaleMax?this.scaleMax.set(d,e):this.scaleMax=new c.Point(d,e),null===this.scaleMin?this.transformCallback=null:(this.transformCallback=this.checkTransform,this.transformCallbackContext=this)}},c.Component.Smoothed=function(){},c.Component.Smoothed.prototype={smoothed:{get:function(){return!this.texture.baseTexture.scaleMode},set:function(a){a?this.texture&&(this.texture.baseTexture.scaleMode=0):this.texture&&(this.texture.baseTexture.scaleMode=1)}}},c.GameObjectFactory=function(a){this.game=a,this.world=this.game.world},c.GameObjectFactory.prototype={existing:function(a){return this.world.add(a)},weapon:function(a,b,d,e){var f=this.game.plugins.add(c.Weapon);return f.createBullets(a,b,d,e),f},image:function(a,b,d,e,f){return void 0===f&&(f=this.world),f.add(new c.Image(this.game,a,b,d,e))},sprite:function(a,b,c,d,e){return void 0===e&&(e=this.world),e.create(a,b,c,d)},creature:function(a,b,d,e,f){void 0===f&&(f=this.world);var g=new c.Creature(this.game,a,b,d,e);return f.add(g),g},tween:function(a){return this.game.tweens.create(a)},group:function(a,b,d,e,f){return new c.Group(this.game,a,b,d,e,f)},physicsGroup:function(a,b,d,e){return new c.Group(this.game,b,d,e,!0,a)},spriteBatch:function(a,b,d){return void 0===a&&(a=null),void 0===b&&(b="group"),void 0===d&&(d=!1),new c.SpriteBatch(this.game,a,b,d)},audio:function(a,b,c,d){return this.game.sound.add(a,b,c,d)},sound:function(a,b,c,d){return this.game.sound.add(a,b,c,d)},audioSprite:function(a){return this.game.sound.addSprite(a)},tileSprite:function(a,b,d,e,f,g,h){return void 0===h&&(h=this.world),h.add(new c.TileSprite(this.game,a,b,d,e,f,g))},rope:function(a,b,d,e,f,g){return void 0===g&&(g=this.world),g.add(new c.Rope(this.game,a,b,d,e,f))},text:function(a,b,d,e,f){return void 0===f&&(f=this.world),f.add(new c.Text(this.game,a,b,d,e))},button:function(a,b,d,e,f,g,h,i,j,k){return void 0===k&&(k=this.world),k.add(new c.Button(this.game,a,b,d,e,f,g,h,i,j))},graphics:function(a,b,d){return void 0===d&&(d=this.world),d.add(new c.Graphics(this.game,a,b))},emitter:function(a,b,d){return this.game.particles.add(new c.Particles.Arcade.Emitter(this.game,a,b,d))},retroFont:function(a,b,d,e,f,g,h,i,j){return new c.RetroFont(this.game,a,b,d,e,f,g,h,i,j)},bitmapText:function(a,b,d,e,f,g){return void 0===g&&(g=this.world),g.add(new c.BitmapText(this.game,a,b,d,e,f))},tilemap:function(a,b,d,e,f){return new c.Tilemap(this.game,a,b,d,e,f)},renderTexture:function(a,b,d,e){(void 0===d||""===d)&&(d=this.game.rnd.uuid()),void 0===e&&(e=!1);var f=new c.RenderTexture(this.game,a,b,d);return e&&this.game.cache.addRenderTexture(d,f),f},video:function(a,b){return new c.Video(this.game,a,b)},bitmapData:function(a,b,d,e){void 0===e&&(e=!1),(void 0===d||""===d)&&(d=this.game.rnd.uuid());var f=new c.BitmapData(this.game,d,a,b);return e&&this.game.cache.addBitmapData(d,f),f},filter:function(a){var b=Array.prototype.slice.call(arguments,1),a=new c.Filter[a](this.game);return a.init.apply(a,b),a},plugin:function(a){return this.game.plugins.add(a)}},c.GameObjectFactory.prototype.constructor=c.GameObjectFactory,c.GameObjectCreator=function(a){this.game=a,this.world=this.game.world},c.GameObjectCreator.prototype={image:function(a,b,d,e){return new c.Image(this.game,a,b,d,e)},sprite:function(a,b,d,e){return new c.Sprite(this.game,a,b,d,e)},tween:function(a){return new c.Tween(a,this.game,this.game.tweens)},group:function(a,b,d,e,f){return new c.Group(this.game,a,b,d,e,f)},spriteBatch:function(a,b,d){return void 0===b&&(b="group"),void 0===d&&(d=!1),new c.SpriteBatch(this.game,a,b,d)},audio:function(a,b,c,d){return this.game.sound.add(a,b,c,d)},audioSprite:function(a){return this.game.sound.addSprite(a)},sound:function(a,b,c,d){return this.game.sound.add(a,b,c,d)},tileSprite:function(a,b,d,e,f,g){return new c.TileSprite(this.game,a,b,d,e,f,g)},rope:function(a,b,d,e,f){return new c.Rope(this.game,a,b,d,e,f)},text:function(a,b,d,e){return new c.Text(this.game,a,b,d,e)},button:function(a,b,d,e,f,g,h,i,j){return new c.Button(this.game,a,b,d,e,f,g,h,i,j)},graphics:function(a,b){return new c.Graphics(this.game,a,b)},emitter:function(a,b,d){return new c.Particles.Arcade.Emitter(this.game,a,b,d)},retroFont:function(a,b,d,e,f,g,h,i,j){return new c.RetroFont(this.game,a,b,d,e,f,g,h,i,j)},bitmapText:function(a,b,d,e,f,g){return new c.BitmapText(this.game,a,b,d,e,f,g)},tilemap:function(a,b,d,e,f){return new c.Tilemap(this.game,a,b,d,e,f)},renderTexture:function(a,b,d,e){(void 0===d||""===d)&&(d=this.game.rnd.uuid()),void 0===e&&(e=!1);var f=new c.RenderTexture(this.game,a,b,d);return e&&this.game.cache.addRenderTexture(d,f),f},bitmapData:function(a,b,d,e){void 0===e&&(e=!1),(void 0===d||""===d)&&(d=this.game.rnd.uuid());var f=new c.BitmapData(this.game,d,a,b);return e&&this.game.cache.addBitmapData(d,f),f},filter:function(a){var b=Array.prototype.slice.call(arguments,1),a=new c.Filter[a](this.game);return a.init.apply(a,b),a}},c.GameObjectCreator.prototype.constructor=c.GameObjectCreator,c.Sprite=function(a,b,d,e,f){b=b||0,d=d||0,e=e||null,f=f||null,this.type=c.SPRITE,this.physicsType=c.SPRITE,PIXI.Sprite.call(this,PIXI.TextureCache.__default),c.Component.Core.init.call(this,a,b,d,e,f)},c.Sprite.prototype=Object.create(PIXI.Sprite.prototype),c.Sprite.prototype.constructor=c.Sprite,c.Component.Core.install.call(c.Sprite.prototype,["Angle","Animation","AutoCull","Bounds","BringToTop","Crop","Delta","Destroy","FixedToCamera","Health","InCamera","InputEnabled","InWorld","LifeSpan","LoadTexture","Overlap","PhysicsBody","Reset","ScaleMinMax","Smoothed"]),c.Sprite.prototype.preUpdatePhysics=c.Component.PhysicsBody.preUpdate,c.Sprite.prototype.preUpdateLifeSpan=c.Component.LifeSpan.preUpdate,c.Sprite.prototype.preUpdateInWorld=c.Component.InWorld.preUpdate,c.Sprite.prototype.preUpdateCore=c.Component.Core.preUpdate,c.Sprite.prototype.preUpdate=function(){return this.preUpdatePhysics()&&this.preUpdateLifeSpan()&&this.preUpdateInWorld()?this.preUpdateCore():!1},c.Image=function(a,b,d,e,f){b=b||0,d=d||0,e=e||null,f=f||null,this.type=c.IMAGE,PIXI.Sprite.call(this,PIXI.TextureCache.__default),c.Component.Core.init.call(this,a,b,d,e,f)},c.Image.prototype=Object.create(PIXI.Sprite.prototype),c.Image.prototype.constructor=c.Image,c.Component.Core.install.call(c.Image.prototype,["Angle","Animation","AutoCull","Bounds","BringToTop","Crop","Destroy","FixedToCamera","InputEnabled","LifeSpan","LoadTexture","Overlap","Reset","Smoothed"]),c.Image.prototype.preUpdateInWorld=c.Component.InWorld.preUpdate,c.Image.prototype.preUpdateCore=c.Component.Core.preUpdate,c.Image.prototype.preUpdate=function(){return this.preUpdateInWorld()?this.preUpdateCore():!1},c.Button=function(a,b,d,e,f,g,h,i,j,k){b=b||0,d=d||0,e=e||null,f=f||null,g=g||this,c.Image.call(this,a,b,d,e,i),this.type=c.BUTTON,this.physicsType=c.SPRITE,this._onOverFrame=null,this._onOutFrame=null,this._onDownFrame=null,this._onUpFrame=null,this.onOverSound=null,this.onOutSound=null,this.onDownSound=null,this.onUpSound=null,this.onOverSoundMarker="",this.onOutSoundMarker="",this.onDownSoundMarker="",this.onUpSoundMarker="",this.onInputOver=new c.Signal,this.onInputOut=new c.Signal,this.onInputDown=new c.Signal,this.onInputUp=new c.Signal,this.onOverMouseOnly=!0,this.justReleasedPreventsOver=c.PointerMode.TOUCH,this.freezeFrames=!1,this.forceOut=!1,this.inputEnabled=!0,this.input.start(0,!0),this.input.useHandCursor=!0,this.setFrames(h,i,j,k),null!==f&&this.onInputUp.add(f,g),this.events.onInputOver.add(this.onInputOverHandler,this),this.events.onInputOut.add(this.onInputOutHandler,this),this.events.onInputDown.add(this.onInputDownHandler,this),this.events.onInputUp.add(this.onInputUpHandler,this),this.events.onRemovedFromWorld.add(this.removedFromWorld,this)},c.Button.prototype=Object.create(c.Image.prototype),c.Button.prototype.constructor=c.Button;var g="Over",h="Out",i="Down",j="Up";c.Button.prototype.clearFrames=function(){this.setFrames(null,null,null,null)},c.Button.prototype.removedFromWorld=function(){this.inputEnabled=!1},c.Button.prototype.setStateFrame=function(a,b,c){var d="_on"+a+"Frame";null!==b?(this[d]=b,c&&this.changeStateFrame(a)):this[d]=null},c.Button.prototype.changeStateFrame=function(a){if(this.freezeFrames)return!1;var b="_on"+a+"Frame",c=this[b];return"string"==typeof c?(this.frameName=c,!0):"number"==typeof c?(this.frame=c,!0):!1},c.Button.prototype.setFrames=function(a,b,c,d){this.setStateFrame(g,a,this.input.pointerOver()),this.setStateFrame(h,b,!this.input.pointerOver()),this.setStateFrame(i,c,this.input.pointerDown()),this.setStateFrame(j,d,this.input.pointerUp())},c.Button.prototype.setStateSound=function(a,b,d){var e="on"+a+"Sound",f="on"+a+"SoundMarker";b instanceof c.Sound||b instanceof c.AudioSprite?(this[e]=b,this[f]="string"==typeof d?d:""):(this[e]=null,this[f]="")},c.Button.prototype.playStateSound=function(a){var b="on"+a+"Sound",c=this[b];if(c){var d="on"+a+"SoundMarker",e=this[d];return c.play(e),!0}return!1},c.Button.prototype.setSounds=function(a,b,c,d,e,f,k,l){this.setStateSound(g,a,b),this.setStateSound(h,e,f),this.setStateSound(i,c,d),this.setStateSound(j,k,l)},c.Button.prototype.setOverSound=function(a,b){this.setStateSound(g,a,b)},c.Button.prototype.setOutSound=function(a,b){this.setStateSound(h,a,b)},c.Button.prototype.setDownSound=function(a,b){this.setStateSound(i,a,b)},c.Button.prototype.setUpSound=function(a,b){this.setStateSound(j,a,b)},c.Button.prototype.onInputOverHandler=function(a,b){b.justReleased()&&(this.justReleasedPreventsOver&b.pointerMode)===b.pointerMode||(this.changeStateFrame(g),(!this.onOverMouseOnly||b.isMouse)&&(this.playStateSound(g),this.onInputOver&&this.onInputOver.dispatch(this,b)))},c.Button.prototype.onInputOutHandler=function(a,b){this.changeStateFrame(h),this.playStateSound(h),this.onInputOut&&this.onInputOut.dispatch(this,b)},c.Button.prototype.onInputDownHandler=function(a,b){this.changeStateFrame(i),this.playStateSound(i),this.onInputDown&&this.onInputDown.dispatch(this,b)},c.Button.prototype.onInputUpHandler=function(a,b,c){if(this.playStateSound(j),this.onInputUp&&this.onInputUp.dispatch(this,b,c),!this.freezeFrames)if(this.forceOut===!0||(this.forceOut&b.pointerMode)===b.pointerMode)this.changeStateFrame(h);else{var d=this.changeStateFrame(j);d||(c?this.changeStateFrame(g):this.changeStateFrame(h))}},c.SpriteBatch=function(a,b,d,e){(void 0===b||null===b)&&(b=a.world),PIXI.SpriteBatch.call(this),c.Group.call(this,a,b,d,e),this.type=c.SPRITEBATCH},c.SpriteBatch.prototype=c.Utils.extend(!0,c.SpriteBatch.prototype,PIXI.SpriteBatch.prototype,c.Group.prototype),c.SpriteBatch.prototype.constructor=c.SpriteBatch,c.BitmapData=function(a,b,d,e){(void 0===d||0===d)&&(d=256),(void 0===e||0===e)&&(e=256),this.game=a,this.key=b,this.width=d,this.height=e,this.canvas=PIXI.CanvasPool.create(this,d,e),this.context=this.canvas.getContext("2d",{alpha:!0}),this.ctx=this.context,this.smoothProperty=a.renderType===c.CANVAS?a.renderer.renderSession.smoothProperty:c.Canvas.getSmoothingPrefix(this.context),this.imageData=this.context.getImageData(0,0,d,e),this.data=null,this.imageData&&(this.data=this.imageData.data),this.pixels=null,this.data&&(this.imageData.data.buffer?(this.buffer=this.imageData.data.buffer,this.pixels=new Uint32Array(this.buffer)):window.ArrayBuffer?(this.buffer=new ArrayBuffer(this.imageData.data.length),this.pixels=new Uint32Array(this.buffer)):this.pixels=this.imageData.data),this.baseTexture=new PIXI.BaseTexture(this.canvas),this.texture=new PIXI.Texture(this.baseTexture),this.frameData=new c.FrameData,this.textureFrame=this.frameData.addFrame(new c.Frame(0,0,0,d,e,"bitmapData")),this.texture.frame=this.textureFrame,this.type=c.BITMAPDATA,this.disableTextureUpload=!1,this.dirty=!1,this.cls=this.clear,this._image=null,this._pos=new c.Point,this._size=new c.Point,this._scale=new c.Point,this._rotate=0,this._alpha={prev:1,current:1},this._anchor=new c.Point,this._tempR=0,this._tempG=0,this._tempB=0,this._circle=new c.Circle,this._swapCanvas=void 0},c.BitmapData.prototype={move:function(a,b,c){return 0!==a&&this.moveH(a,c),0!==b&&this.moveV(b,c),this},moveH:function(a,b){void 0===b&&(b=!0),void 0===this._swapCanvas&&(this._swapCanvas=PIXI.CanvasPool.create(this,this.width,this.height));var c=this._swapCanvas,d=c.getContext("2d"),e=this.height,f=this.canvas;if(d.clearRect(0,0,this.width,this.height),0>a){a=Math.abs(a);var g=this.width-a;b&&d.drawImage(f,0,0,a,e,g,0,a,e),d.drawImage(f,a,0,g,e,0,0,g,e)}else{var g=this.width-a;b&&d.drawImage(f,g,0,a,e,0,0,a,e),d.drawImage(f,0,0,g,e,a,0,g,e)}return this.clear(),this.copy(this._swapCanvas)},moveV:function(a,b){void 0===b&&(b=!0),void 0===this._swapCanvas&&(this._swapCanvas=PIXI.CanvasPool.create(this,this.width,this.height));var c=this._swapCanvas,d=c.getContext("2d"),e=this.width,f=this.canvas;if(d.clearRect(0,0,this.width,this.height),0>a){a=Math.abs(a);var g=this.height-a;b&&d.drawImage(f,0,0,e,a,0,g,e,a),d.drawImage(f,0,a,e,g,0,0,e,g)}else{var g=this.height-a;b&&d.drawImage(f,0,g,e,a,0,0,e,a),d.drawImage(f,0,0,e,g,0,a,e,g)}return this.clear(),this.copy(this._swapCanvas)},add:function(a){if(Array.isArray(a))for(var b=0;bm;m++)for(var n=d;h>n;n++)c.Color.unpackPixel(this.getPixel32(n,m),j),k=a.call(b,j,n,m),k!==!1&&null!==k&&void 0!==k&&(this.setPixel32(n,m,k.r,k.g,k.b,k.a,!1),l=!0);return l&&(this.context.putImageData(this.imageData,0,0),this.dirty=!0),this},processPixel:function(a,b,c,d,e,f){void 0===c&&(c=0),void 0===d&&(d=0),void 0===e&&(e=this.width),void 0===f&&(f=this.height);for(var g=c+e,h=d+f,i=0,j=0,k=!1,l=d;h>l;l++)for(var m=c;g>m;m++)i=this.getPixel32(m,l),j=a.call(b,i,m,l),j!==i&&(this.pixels[l*this.width+m]=j,k=!0);return k&&(this.context.putImageData(this.imageData,0,0),this.dirty=!0),this},replaceRGB:function(a,b,d,e,f,g,h,i,j){var k=0,l=0,m=this.width,n=this.height,o=c.Color.packPixel(a,b,d,e);void 0!==j&&j instanceof c.Rectangle&&(k=j.x,l=j.y,m=j.width,n=j.height);for(var p=0;n>p;p++)for(var q=0;m>q;q++)this.getPixel32(k+q,l+p)===o&&this.setPixel32(k+q,l+p,f,g,h,i,!1);return this.context.putImageData(this.imageData,0,0),this.dirty=!0,this},setHSL:function(a,b,d,e){var f=a||0===a,g=b||0===b,h=d||0===d;if(f||g||h){void 0===e&&(e=new c.Rectangle(0,0,this.width,this.height));for(var i=c.Color.createColor(),j=e.y;j=0&&a<=this.width&&b>=0&&b<=this.height&&(c.Device.LITTLE_ENDIAN?this.pixels[b*this.width+a]=g<<24|f<<16|e<<8|d:this.pixels[b*this.width+a]=d<<24|e<<16|f<<8|g,h&&(this.context.putImageData(this.imageData,0,0),this.dirty=!0)),this},setPixel:function(a,b,c,d,e,f){return this.setPixel32(a,b,c,d,e,255,f)},getPixel:function(a,b,d){d||(d=c.Color.createColor());var e=~~(a+b*this.width);return e*=4,d.r=this.data[e],d.g=this.data[++e],d.b=this.data[++e],d.a=this.data[++e],d},getPixel32:function(a,b){return a>=0&&a<=this.width&&b>=0&&b<=this.height?this.pixels[b*this.width+a]:void 0},getPixelRGB:function(a,b,d,e,f){return c.Color.unpackPixel(this.getPixel32(a,b),d,e,f)},getPixels:function(a){return this.context.getImageData(a.x,a.y,a.width,a.height)},getFirstPixel:function(a){void 0===a&&(a=0);var b=c.Color.createColor(),d=0,e=0,f=1,g=!1;1===a?(f=-1,e=this.height):3===a&&(f=-1,d=this.width);do c.Color.unpackPixel(this.getPixel32(d,e),b),0===a||1===a?(d++,d===this.width&&(d=0,e+=f,(e>=this.height||0>=e)&&(g=!0))):(2===a||3===a)&&(e++,e===this.height&&(e=0,d+=f,(d>=this.width||0>=d)&&(g=!0)));while(0===b.a&&!g);return b.x=d,b.y=e,b},getBounds:function(a){return void 0===a&&(a=new c.Rectangle),a.x=this.getFirstPixel(2).x,a.x===this.width?a.setTo(0,0,0,0):(a.y=this.getFirstPixel(0).y,a.width=this.getFirstPixel(3).x-a.x+1,a.height=this.getFirstPixel(1).y-a.y+1,a)},addToWorld:function(a,b,c,d,e,f){e=e||1,f=f||1;var g=this.game.add.image(a,b,this);return g.anchor.set(c,d),g.scale.set(e,f),g},copy:function(a,b,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r){if((void 0===a||null===a)&&(a=this),(a instanceof c.RenderTexture||a instanceof PIXI.RenderTexture)&&(a=a.getCanvas()),this._image=a,a instanceof c.Sprite||a instanceof c.Image||a instanceof c.Text||a instanceof PIXI.Sprite)this._pos.set(a.texture.crop.x,a.texture.crop.y),this._size.set(a.texture.crop.width,a.texture.crop.height),this._scale.set(a.scale.x,a.scale.y),this._anchor.set(a.anchor.x,a.anchor.y),this._rotate=a.rotation,this._alpha.current=a.alpha,a.texture instanceof c.RenderTexture||a.texture instanceof PIXI.RenderTexture?this._image=a.texture.getCanvas():this._image=a.texture.baseTexture.source,(void 0===g||null===g)&&(g=a.x),(void 0===h||null===h)&&(h=a.y),a.texture.trim&&(g+=a.texture.trim.x-a.anchor.x*a.texture.trim.width,h+=a.texture.trim.y-a.anchor.y*a.texture.trim.height),16777215!==a.tint&&(a.cachedTint!==a.tint&&(a.cachedTint=a.tint,a.tintedTexture=PIXI.CanvasTinter.getTintedTexture(a,a.tint)),this._image=a.tintedTexture,this._pos.set(0));else{if(this._pos.set(0),this._scale.set(1),this._anchor.set(0),this._rotate=0,this._alpha.current=1,a instanceof c.BitmapData)this._image=a.canvas;else if("string"==typeof a){if(a=this.game.cache.getImage(a),null===a)return;this._image=a}this._size.set(this._image.width,this._image.height)}if((void 0===b||null===b)&&(b=0),(void 0===d||null===d)&&(d=0),e&&(this._size.x=e),f&&(this._size.y=f),(void 0===g||null===g)&&(g=b),(void 0===h||null===h)&&(h=d),(void 0===i||null===i)&&(i=this._size.x),(void 0===j||null===j)&&(j=this._size.y),"number"==typeof k&&(this._rotate=k),"number"==typeof l&&(this._anchor.x=l),"number"==typeof m&&(this._anchor.y=m),"number"==typeof n&&(this._scale.x=n),"number"==typeof o&&(this._scale.y=o),"number"==typeof p&&(this._alpha.current=p),void 0===q&&(q=null),void 0===r&&(r=!1),!(this._alpha.current<=0||0===this._scale.x||0===this._scale.y||0===this._size.x||0===this._size.y)){var s=this.context;return this._alpha.prev=s.globalAlpha,s.save(),s.globalAlpha=this._alpha.current,q&&(this.op=q),r&&(g|=0,h|=0),s.translate(g,h),s.scale(this._scale.x,this._scale.y),s.rotate(this._rotate),s.drawImage(this._image,this._pos.x+b,this._pos.y+d,this._size.x,this._size.y,-i*this._anchor.x,-j*this._anchor.y,i,j),s.restore(),s.globalAlpha=this._alpha.prev,this.dirty=!0,this}},copyTransform:function(a,b,d){if(void 0===b&&(b=null),void 0===d&&(d=!1),!a.hasOwnProperty("worldTransform")||!a.worldVisible||0===a.worldAlpha)return this;var e=a.worldTransform;if(this._pos.set(a.texture.crop.x,a.texture.crop.y),this._size.set(a.texture.crop.width,a.texture.crop.height),0===e.a||0===e.d||0===this._size.x||0===this._size.y)return this;a.texture instanceof c.RenderTexture||a.texture instanceof PIXI.RenderTexture?this._image=a.texture.getCanvas():this._image=a.texture.baseTexture.source;var f=e.tx,g=e.ty;a.texture.trim&&(f+=a.texture.trim.x-a.anchor.x*a.texture.trim.width,g+=a.texture.trim.y-a.anchor.y*a.texture.trim.height),16777215!==a.tint&&(a.cachedTint!==a.tint&&(a.cachedTint=a.tint,a.tintedTexture=PIXI.CanvasTinter.getTintedTexture(a,a.tint)),this._image=a.tintedTexture,this._pos.set(0)),d&&(f|=0,g|=0);var h=this.context;return this._alpha.prev=h.globalAlpha,h.save(),h.globalAlpha=this._alpha.current,b&&(this.op=b),h[this.smoothProperty]=a.texture.baseTexture.scaleMode===PIXI.scaleModes.LINEAR,h.setTransform(e.a,e.b,e.c,e.d,f,g),h.drawImage(this._image,this._pos.x,this._pos.y,this._size.x,this._size.y,-this._size.x*a.anchor.x,-this._size.y*a.anchor.y,this._size.x,this._size.y),h.restore(),h.globalAlpha=this._alpha.prev,this.dirty=!0,this},copyRect:function(a,b,c,d,e,f,g){return this.copy(a,b.x,b.y,b.width,b.height,c,d,b.width,b.height,0,0,0,1,1,e,f,g)},draw:function(a,b,c,d,e,f,g){return this.copy(a,null,null,null,null,b,c,d,e,null,null,null,null,null,null,f,g)},drawGroup:function(a,b,c){return a.total>0&&a.forEachExists(this.drawGroupProxy,this,b,c),this},drawGroupProxy:function(a,b,d){if(a.hasOwnProperty("texture")&&this.copyTransform(a,b,d),a.type===c.GROUP&&a.exists)this.drawGroup(a,b,d);else if(a.hasOwnProperty("children")&&a.children.length>0)for(var e=0;eb.width&&(e=b.width);var f=this.context;return f.fillStyle=f.createPattern(b,d),this._circle=new c.Circle(a.start.x,a.start.y,b.height),this._circle.circumferencePoint(a.angle-1.5707963267948966,!1,this._pos),f.save(),f.translate(this._pos.x,this._pos.y),f.rotate(a.angle),f.fillRect(0,0,e,b.height),f.restore(),this.dirty=!0,this}},render:function(){return!this.disableTextureUpload&&this.dirty&&(this.baseTexture.dirty(),this.dirty=!1),this},destroy:function(){this.frameData.destroy(),this.texture.destroy(!0),PIXI.CanvasPool.remove(this)},blendReset:function(){return this.op="source-over",this},blendSourceOver:function(){return this.op="source-over",this},blendSourceIn:function(){return this.op="source-in",this},blendSourceOut:function(){return this.op="source-out",this},blendSourceAtop:function(){return this.op="source-atop",this},blendDestinationOver:function(){return this.op="destination-over",this},blendDestinationIn:function(){return this.op="destination-in",this},blendDestinationOut:function(){return this.op="destination-out",this},blendDestinationAtop:function(){return this.op="destination-atop",this},blendXor:function(){return this.op="xor",this},blendAdd:function(){return this.op="lighter",this},blendMultiply:function(){return this.op="multiply",this},blendScreen:function(){return this.op="screen",this},blendOverlay:function(){return this.op="overlay",this},blendDarken:function(){return this.op="darken",this},blendLighten:function(){return this.op="lighten",this},blendColorDodge:function(){return this.op="color-dodge",this},blendColorBurn:function(){return this.op="color-burn",this},blendHardLight:function(){return this.op="hard-light",this},blendSoftLight:function(){return this.op="soft-light",this},blendDifference:function(){return this.op="difference",this},blendExclusion:function(){ -return this.op="exclusion",this},blendHue:function(){return this.op="hue",this},blendSaturation:function(){return this.op="saturation",this},blendColor:function(){return this.op="color",this},blendLuminosity:function(){return this.op="luminosity",this}},Object.defineProperty(c.BitmapData.prototype,"smoothed",{get:function(){c.Canvas.getSmoothingEnabled(this.context)},set:function(a){c.Canvas.setSmoothingEnabled(this.context,a)}}),Object.defineProperty(c.BitmapData.prototype,"op",{get:function(){return this.context.globalCompositeOperation},set:function(a){this.context.globalCompositeOperation=a}}),c.BitmapData.getTransform=function(a,b,c,d,e,f){return"number"!=typeof a&&(a=0),"number"!=typeof b&&(b=0),"number"!=typeof c&&(c=1),"number"!=typeof d&&(d=1),"number"!=typeof e&&(e=0),"number"!=typeof f&&(f=0),{sx:c,sy:d,scaleX:c,scaleY:d,skewX:e,skewY:f,translateX:a,translateY:b,tx:a,ty:b}},c.BitmapData.prototype.constructor=c.BitmapData,PIXI.Graphics=function(){PIXI.DisplayObjectContainer.call(this),this.renderable=!0,this.fillAlpha=1,this.lineWidth=0,this.lineColor=0,this.graphicsData=[],this.tint=16777215,this.blendMode=PIXI.blendModes.NORMAL,this.currentPath=null,this._webGL=[],this.isMask=!1,this.boundsPadding=0,this._localBounds=new PIXI.Rectangle(0,0,1,1),this.dirty=!0,this.webGLDirty=!1,this.cachedSpriteDirty=!1},PIXI.Graphics.prototype=Object.create(PIXI.DisplayObjectContainer.prototype),PIXI.Graphics.prototype.constructor=PIXI.Graphics,PIXI.Graphics.prototype.lineStyle=function(a,b,c){return this.lineWidth=a||0,this.lineColor=b||0,this.lineAlpha=void 0===c?1:c,this.currentPath&&(this.currentPath.shape.points.length?this.drawShape(new PIXI.Polygon(this.currentPath.shape.points.slice(-2))):(this.currentPath.lineWidth=this.lineWidth,this.currentPath.lineColor=this.lineColor,this.currentPath.lineAlpha=this.lineAlpha)),this},PIXI.Graphics.prototype.moveTo=function(a,b){return this.drawShape(new PIXI.Polygon([a,b])),this},PIXI.Graphics.prototype.lineTo=function(a,b){return this.currentPath||this.moveTo(0,0),this.currentPath.shape.points.push(a,b),this.dirty=!0,this},PIXI.Graphics.prototype.quadraticCurveTo=function(a,b,c,d){this.currentPath?0===this.currentPath.shape.points.length&&(this.currentPath.shape.points=[0,0]):this.moveTo(0,0);var e,f,g=20,h=this.currentPath.shape.points;0===h.length&&this.moveTo(0,0);for(var i=h[h.length-2],j=h[h.length-1],k=0,l=1;g>=l;++l)k=l/g,e=i+(a-i)*k,f=j+(b-j)*k,h.push(e+(a+(c-a)*k-e)*k,f+(b+(d-b)*k-f)*k);return this.dirty=!0,this},PIXI.Graphics.prototype.bezierCurveTo=function(a,b,c,d,e,f){this.currentPath?0===this.currentPath.shape.points.length&&(this.currentPath.shape.points=[0,0]):this.moveTo(0,0);for(var g,h,i,j,k,l=20,m=this.currentPath.shape.points,n=m[m.length-2],o=m[m.length-1],p=0,q=1;l>=q;++q)p=q/l,g=1-p,h=g*g,i=h*g,j=p*p,k=j*p,m.push(i*n+3*h*p*a+3*g*j*c+k*e,i*o+3*h*p*b+3*g*j*d+k*f);return this.dirty=!0,this},PIXI.Graphics.prototype.arcTo=function(a,b,c,d,e){this.currentPath?0===this.currentPath.shape.points.length&&this.currentPath.shape.points.push(a,b):this.moveTo(a,b);var f=this.currentPath.shape.points,g=f[f.length-2],h=f[f.length-1],i=h-b,j=g-a,k=d-b,l=c-a,m=Math.abs(i*l-j*k);if(1e-8>m||0===e)(f[f.length-2]!==a||f[f.length-1]!==b)&&f.push(a,b);else{var n=i*i+j*j,o=k*k+l*l,p=i*k+j*l,q=e*Math.sqrt(n)/m,r=e*Math.sqrt(o)/m,s=q*p/n,t=r*p/o,u=q*l+r*j,v=q*k+r*i,w=j*(r+s),x=i*(r+s),y=l*(q+t),z=k*(q+t),A=Math.atan2(x-v,w-u),B=Math.atan2(z-v,y-u);this.arc(u+a,v+b,e,A,B,j*k>l*i)}return this.dirty=!0,this},PIXI.Graphics.prototype.arc=function(a,b,c,d,e,f,g){if(d===e)return this;void 0===f&&(f=!1),void 0===g&&(g=40),!f&&d>=e?e+=2*Math.PI:f&&e>=d&&(d+=2*Math.PI);var h=f?-1*(d-e):e-d,i=Math.ceil(Math.abs(h)/(2*Math.PI))*g;if(0===h)return this;var j=a+Math.cos(d)*c,k=b+Math.sin(d)*c;f&&this.filling?this.moveTo(a,b):this.moveTo(j,k);for(var l=this.currentPath.shape.points,m=h/(2*i),n=2*m,o=Math.cos(m),p=Math.sin(m),q=i-1,r=q%1/q,s=0;q>=s;s++){var t=s+r*s,u=m+d+n*t,v=Math.cos(u),w=-Math.sin(u);l.push((o*v+p*w)*c+a,(o*-w+p*v)*c+b)}return this.dirty=!0,this},PIXI.Graphics.prototype.beginFill=function(a,b){return this.filling=!0,this.fillColor=a||0,this.fillAlpha=void 0===b?1:b,this.currentPath&&this.currentPath.shape.points.length<=2&&(this.currentPath.fill=this.filling,this.currentPath.fillColor=this.fillColor,this.currentPath.fillAlpha=this.fillAlpha),this},PIXI.Graphics.prototype.endFill=function(){return this.filling=!1,this.fillColor=null,this.fillAlpha=1,this},PIXI.Graphics.prototype.drawRect=function(a,b,c,d){return this.drawShape(new PIXI.Rectangle(a,b,c,d)),this},PIXI.Graphics.prototype.drawRoundedRect=function(a,b,c,d,e){return this.drawShape(new PIXI.RoundedRectangle(a,b,c,d,e)),this},PIXI.Graphics.prototype.drawCircle=function(a,b,c){return this.drawShape(new PIXI.Circle(a,b,c)),this},PIXI.Graphics.prototype.drawEllipse=function(a,b,c,d){return this.drawShape(new PIXI.Ellipse(a,b,c,d)),this},PIXI.Graphics.prototype.drawPolygon=function(a){(a instanceof c.Polygon||a instanceof PIXI.Polygon)&&(a=a.points);var b=a;if(!Array.isArray(b)){b=new Array(arguments.length);for(var d=0;dp?p:x,x=x>r?r:x,x=x>t?t:x,y=y>q?q:y,y=y>s?s:y,y=y>u?u:y,v=p>v?p:v,v=r>v?r:v,v=t>v?t:v,w=q>w?q:w,w=s>w?s:w,w=u>w?u:w,this._bounds.x=x,this._bounds.width=v-x,this._bounds.y=y,this._bounds.height=w-y,this._currentBounds=this._bounds}return this._currentBounds},PIXI.Graphics.prototype.containsPoint=function(a){this.worldTransform.applyInverse(a,tempPoint);for(var b=this.graphicsData,c=0;ch?h:a,b=h+j>b?h+j:b,d=d>i?i:d,e=i+k>e?i+k:e;else if(n===PIXI.Graphics.CIRC)h=f.x,i=f.y,j=f.radius+o/2,k=f.radius+o/2,a=a>h-j?h-j:a,b=h+j>b?h+j:b,d=d>i-k?i-k:d,e=i+k>e?i+k:e;else if(n===PIXI.Graphics.ELIP)h=f.x,i=f.y,j=f.width+o/2,k=f.height+o/2,a=a>h-j?h-j:a,b=h+j>b?h+j:b,d=d>i-k?i-k:d,e=i+k>e?i+k:e;else{g=f.points;for(var p=0;ph-o?h-o:a,b=h+o>b?h+o:b,d=d>i-o?i-o:d,e=i+o>e?i+o:e}}else a=0,b=0,d=0,e=0;var q=this.boundsPadding;this._localBounds.x=a-q,this._localBounds.width=b-a+2*q,this._localBounds.y=d-q,this._localBounds.height=e-d+2*q},PIXI.Graphics.prototype._generateCachedSprite=function(){var a=this.getLocalBounds();if(this._cachedSprite)this._cachedSprite.buffer.resize(a.width,a.height);else{var b=new PIXI.CanvasBuffer(a.width,a.height),c=PIXI.Texture.fromCanvas(b.canvas);this._cachedSprite=new PIXI.Sprite(c),this._cachedSprite.buffer=b,this._cachedSprite.worldTransform=this.worldTransform}this._cachedSprite.anchor.x=-(a.x/a.width),this._cachedSprite.anchor.y=-(a.y/a.height),this._cachedSprite.buffer.context.translate(-a.x,-a.y),this.worldAlpha=1,PIXI.CanvasGraphics.renderGraphics(this,this._cachedSprite.buffer.context),this._cachedSprite.alpha=this.alpha},PIXI.Graphics.prototype.updateCachedSpriteTexture=function(){var a=this._cachedSprite,b=a.texture,c=a.buffer.canvas;b.baseTexture.width=c.width,b.baseTexture.height=c.height,b.crop.width=b.frame.width=c.width,b.crop.height=b.frame.height=c.height,a._width=c.width,a._height=c.height,b.baseTexture.dirty()},PIXI.Graphics.prototype.destroyCachedSprite=function(){this._cachedSprite.texture.destroy(!0),this._cachedSprite=null},PIXI.Graphics.prototype.drawShape=function(a){this.currentPath&&this.currentPath.shape.points.length<=2&&this.graphicsData.pop(),this.currentPath=null,a instanceof c.Polygon&&(a=a.clone(),a.flatten());var b=new PIXI.GraphicsData(this.lineWidth,this.lineColor,this.lineAlpha,this.fillColor,this.fillAlpha,this.filling,a);return this.graphicsData.push(b),b.type===PIXI.Graphics.POLY&&(b.shape.closed=this.filling,this.currentPath=b),this.dirty=!0,b},Object.defineProperty(PIXI.Graphics.prototype,"cacheAsBitmap",{get:function(){return this._cacheAsBitmap},set:function(a){this._cacheAsBitmap=a,this._cacheAsBitmap?this._generateCachedSprite():this.destroyCachedSprite(),this.dirty=!0,this.webGLDirty=!0}}),PIXI.GraphicsData=function(a,b,c,d,e,f,g){this.lineWidth=a,this.lineColor=b,this.lineAlpha=c,this._lineTint=b,this.fillColor=d,this.fillAlpha=e,this._fillTint=d,this.fill=f,this.shape=g,this.type=g.type},PIXI.GraphicsData.prototype.constructor=PIXI.GraphicsData,PIXI.GraphicsData.prototype.clone=function(){return new GraphicsData(this.lineWidth,this.lineColor,this.lineAlpha,this.fillColor,this.fillAlpha,this.fill,this.shape)},PIXI.PolyK={},PIXI.PolyK.Triangulate=function(a){var b=!0,c=a.length>>1;if(3>c)return[];for(var d=[],e=[],f=0;c>f;f++)e.push(f);f=0;for(var g=c;g>3;){var h=e[(f+0)%g],i=e[(f+1)%g],j=e[(f+2)%g],k=a[2*h],l=a[2*h+1],m=a[2*i],n=a[2*i+1],o=a[2*j],p=a[2*j+1],q=!1;if(PIXI.PolyK._convex(k,l,m,n,o,p,b)){q=!0;for(var r=0;g>r;r++){var s=e[r];if(s!==h&&s!==i&&s!==j&&PIXI.PolyK._PointInTriangle(a[2*s],a[2*s+1],k,l,m,n,o,p)){q=!1;break}}}if(q)d.push(h,i,j),e.splice((f+1)%g,1),g--,f=0;else if(f++>3*g){if(!b)return null;for(d=[],e=[],f=0;c>f;f++)e.push(f);f=0,g=c,b=!1}}return d.push(e[0],e[1],e[2]),d},PIXI.PolyK._PointInTriangle=function(a,b,c,d,e,f,g,h){var i=g-c,j=h-d,k=e-c,l=f-d,m=a-c,n=b-d,o=i*i+j*j,p=i*k+j*l,q=i*m+j*n,r=k*k+l*l,s=k*m+l*n,t=1/(o*r-p*p),u=(r*q-p*s)*t,v=(o*s-p*q)*t;return u>=0&&v>=0&&1>u+v},PIXI.PolyK._convex=function(a,b,c,d,e,f,g){return(b-d)*(e-c)+(c-a)*(f-d)>=0===g},PIXI.EarCut={},PIXI.EarCut.Triangulate=function(a,b,c){c=c||2;var d=b&&b.length,e=d?b[0]*c:a.length,f=PIXI.EarCut.linkedList(a,0,e,c,!0),g=[];if(!f)return g;var h,i,j,k,l,m,n;if(d&&(f=PIXI.EarCut.eliminateHoles(a,b,f,c)),a.length>80*c){h=j=a[0],i=k=a[1];for(var o=c;e>o;o+=c)l=a[o],m=a[o+1],h>l&&(h=l),i>m&&(i=m),l>j&&(j=l),m>k&&(k=m);n=Math.max(j-h,k-i)}return PIXI.EarCut.earcutLinked(f,g,c,h,i,n),g},PIXI.EarCut.linkedList=function(a,b,c,d,e){var f,g,h,i=0;for(f=b,g=c-d;c>f;f+=d)i+=(a[g]-a[f])*(a[f+1]+a[g+1]),g=f;if(e===i>0)for(f=b;c>f;f+=d)h=PIXI.EarCut.insertNode(f,a[f],a[f+1],h);else for(f=c-d;f>=b;f-=d)h=PIXI.EarCut.insertNode(f,a[f],a[f+1],h);return h},PIXI.EarCut.filterPoints=function(a,b){if(!a)return a;b||(b=a);var c,d=a;do if(c=!1,d.steiner||!PIXI.EarCut.equals(d,d.next)&&0!==PIXI.EarCut.area(d.prev,d,d.next))d=d.next;else{if(PIXI.EarCut.removeNode(d),d=b=d.prev,d===d.next)return null;c=!0}while(c||d!==b);return b},PIXI.EarCut.earcutLinked=function(a,b,c,d,e,f,g){if(a){!g&&f&&PIXI.EarCut.indexCurve(a,d,e,f);for(var h,i,j=a;a.prev!==a.next;)if(h=a.prev,i=a.next,f?PIXI.EarCut.isEarHashed(a,d,e,f):PIXI.EarCut.isEar(a))b.push(h.i/c),b.push(a.i/c),b.push(i.i/c),PIXI.EarCut.removeNode(a),a=i.next,j=i.next;else if(a=i,a===j){g?1===g?(a=PIXI.EarCut.cureLocalIntersections(a,b,c),PIXI.EarCut.earcutLinked(a,b,c,d,e,f,2)):2===g&&PIXI.EarCut.splitEarcut(a,b,c,d,e,f):PIXI.EarCut.earcutLinked(PIXI.EarCut.filterPoints(a),b,c,d,e,f,1);break}}},PIXI.EarCut.isEar=function(a){var b=a.prev,c=a,d=a.next;if(PIXI.EarCut.area(b,c,d)>=0)return!1;for(var e=a.next.next;e!==a.prev;){if(PIXI.EarCut.pointInTriangle(b.x,b.y,c.x,c.y,d.x,d.y,e.x,e.y)&&PIXI.EarCut.area(e.prev,e,e.next)>=0)return!1;e=e.next}return!0},PIXI.EarCut.isEarHashed=function(a,b,c,d){var e=a.prev,f=a,g=a.next;if(PIXI.EarCut.area(e,f,g)>=0)return!1;for(var h=e.xf.x?e.x>g.x?e.x:g.x:f.x>g.x?f.x:g.x,k=e.y>f.y?e.y>g.y?e.y:g.y:f.y>g.y?f.y:g.y,l=PIXI.EarCut.zOrder(h,i,b,c,d),m=PIXI.EarCut.zOrder(j,k,b,c,d),n=a.nextZ;n&&n.z<=m;){if(n!==a.prev&&n!==a.next&&PIXI.EarCut.pointInTriangle(e.x,e.y,f.x,f.y,g.x,g.y,n.x,n.y)&&PIXI.EarCut.area(n.prev,n,n.next)>=0)return!1;n=n.nextZ}for(n=a.prevZ;n&&n.z>=l;){if(n!==a.prev&&n!==a.next&&PIXI.EarCut.pointInTriangle(e.x,e.y,f.x,f.y,g.x,g.y,n.x,n.y)&&PIXI.EarCut.area(n.prev,n,n.next)>=0)return!1;n=n.prevZ}return!0},PIXI.EarCut.cureLocalIntersections=function(a,b,c){var d=a;do{var e=d.prev,f=d.next.next;PIXI.EarCut.intersects(e,d,d.next,f)&&PIXI.EarCut.locallyInside(e,f)&&PIXI.EarCut.locallyInside(f,e)&&(b.push(e.i/c),b.push(d.i/c),b.push(f.i/c),PIXI.EarCut.removeNode(d),PIXI.EarCut.removeNode(d.next),d=a=f),d=d.next}while(d!==a);return d},PIXI.EarCut.splitEarcut=function(a,b,c,d,e,f){var g=a;do{for(var h=g.next.next;h!==g.prev;){if(g.i!==h.i&&PIXI.EarCut.isValidDiagonal(g,h)){var i=PIXI.EarCut.splitPolygon(g,h);return g=PIXI.EarCut.filterPoints(g,g.next),i=PIXI.EarCut.filterPoints(i,i.next),PIXI.EarCut.earcutLinked(g,b,c,d,e,f),void PIXI.EarCut.earcutLinked(i,b,c,d,e,f)}h=h.next}g=g.next}while(g!==a)},PIXI.EarCut.eliminateHoles=function(a,b,c,d){var e,f,g,h,i,j=[];for(e=0,f=b.length;f>e;e++)g=b[e]*d,h=f-1>e?b[e+1]*d:a.length,i=PIXI.EarCut.linkedList(a,g,h,d,!1),i===i.next&&(i.steiner=!0),j.push(PIXI.EarCut.getLeftmost(i));for(j.sort(compareX),e=0;e=d.next.y){var h=d.x+(f-d.y)*(d.next.x-d.x)/(d.next.y-d.y);e>=h&&h>g&&(g=h,c=d.x=d.x&&d.x>=c.x&&PIXI.EarCut.pointInTriangle(fi||i===k&&d.x>c.x)&&PIXI.EarCut.locallyInside(d,a)&&(c=d,k=i)),d=d.next;return c},PIXI.EarCut.indexCurve=function(a,b,c,d){var e=a;do null===e.z&&(e.z=PIXI.EarCut.zOrder(e.x,e.y,b,c,d)),e.prevZ=e.prev,e.nextZ=e.next,e=e.next;while(e!==a);e.prevZ.nextZ=null,e.prevZ=null,PIXI.EarCut.sortLinked(e)},PIXI.EarCut.sortLinked=function(a){var b,c,d,e,f,g,h,i,j=1;do{for(c=a,a=null,f=null,g=0;c;){for(g++,d=c,h=0,b=0;j>b&&(h++,d=d.nextZ,d);b++);for(i=j;h>0||i>0&&d;)0===h?(e=d,d=d.nextZ,i--):0!==i&&d?c.z<=d.z?(e=c,c=c.nextZ,h--):(e=d,d=d.nextZ,i--):(e=c,c=c.nextZ,h--),f?f.nextZ=e:a=e,e.prevZ=f,f=e;c=d}f.nextZ=null,j*=2}while(g>1);return a},PIXI.EarCut.zOrder=function(a,b,c,d,e){return a=32767*(a-c)/e,b=32767*(b-d)/e,a=16711935&(a|a<<8),a=252645135&(a|a<<4),a=858993459&(a|a<<2),a=1431655765&(a|a<<1),b=16711935&(b|b<<8),b=252645135&(b|b<<4),b=858993459&(b|b<<2),b=1431655765&(b|b<<1),a|b<<1},PIXI.EarCut.getLeftmost=function(a){var b=a,c=a;do b.x=0&&(a-g)*(d-h)-(c-g)*(b-h)>=0&&(c-g)*(f-h)-(e-g)*(d-h)>=0},PIXI.EarCut.isValidDiagonal=function(a,b){return PIXI.EarCut.equals(a,b)||a.next.i!==b.i&&a.prev.i!==b.i&&!PIXI.EarCut.intersectsPolygon(a,b)&&PIXI.EarCut.locallyInside(a,b)&&PIXI.EarCut.locallyInside(b,a)&&PIXI.EarCut.middleInside(a,b)},PIXI.EarCut.area=function(a,b,c){return(b.y-a.y)*(c.x-b.x)-(b.x-a.x)*(c.y-b.y)},PIXI.EarCut.equals=function(a,b){return a.x===b.x&&a.y===b.y},PIXI.EarCut.intersects=function(a,b,c,d){return PIXI.EarCut.area(a,b,c)>0!=PIXI.EarCut.area(a,b,d)>0&&PIXI.EarCut.area(c,d,a)>0!=PIXI.EarCut.area(c,d,b)>0},PIXI.EarCut.intersectsPolygon=function(a,b){var c=a;do{if(c.i!==a.i&&c.next.i!==a.i&&c.i!==b.i&&c.next.i!==b.i&&PIXI.EarCut.intersects(c,c.next,a,b))return!0;c=c.next}while(c!==a);return!1},PIXI.EarCut.locallyInside=function(a,b){return PIXI.EarCut.area(a.prev,a,a.next)<0?PIXI.EarCut.area(a,b,a.next)>=0&&PIXI.EarCut.area(a,a.prev,b)>=0:PIXI.EarCut.area(a,b,a.prev)<0||PIXI.EarCut.area(a,a.next,b)<0},PIXI.EarCut.middleInside=function(a,b){var c=a,d=!1,e=(a.x+b.x)/2,f=(a.y+b.y)/2;do c.y>f!=c.next.y>f&&e<(c.next.x-c.x)*(f-c.y)/(c.next.y-c.y)+c.x&&(d=!d),c=c.next;while(c!==a);return d},PIXI.EarCut.splitPolygon=function(a,b){var c=new PIXI.EarCut.Node(a.i,a.x,a.y),d=new PIXI.EarCut.Node(b.i,b.x,b.y),e=a.next,f=b.prev;return a.next=b,b.prev=a,c.next=e,e.prev=c,d.next=c,c.prev=d,f.next=d,d.prev=f,d},PIXI.EarCut.insertNode=function(a,b,c,d){var e=new PIXI.EarCut.Node(a,b,c);return d?(e.next=d.next,e.prev=d,d.next.prev=e,d.next=e):(e.prev=e,e.next=e),e},PIXI.EarCut.removeNode=function(a){a.next.prev=a.prev,a.prev.next=a.next,a.prevZ&&(a.prevZ.nextZ=a.nextZ),a.nextZ&&(a.nextZ.prevZ=a.prevZ)},PIXI.EarCut.Node=function(a,b,c){this.i=a,this.x=b,this.y=c,this.prev=null,this.next=null,this.z=null,this.prevZ=null,this.nextZ=null,this.steiner=!1},PIXI.WebGLGraphics=function(){},PIXI.WebGLGraphics.stencilBufferLimit=6,PIXI.WebGLGraphics.renderGraphics=function(a,b){var c,d=b.gl,e=b.projection,f=b.offset,g=b.shaderManager.primitiveShader;a.dirty&&PIXI.WebGLGraphics.updateGraphics(a,d);for(var h=a._webGL[d.id],i=0;i=PIXI.WebGLGraphics.stencilBufferLimit)if(g.points.length<2*PIXI.WebGLGraphics.stencilBufferLimit){f=PIXI.WebGLGraphics.switchMode(c,0);var h=PIXI.WebGLGraphics.buildPoly(g,f);h||(f=PIXI.WebGLGraphics.switchMode(c,1),PIXI.WebGLGraphics.buildComplexPoly(g,f))}else f=PIXI.WebGLGraphics.switchMode(c,1),PIXI.WebGLGraphics.buildComplexPoly(g,f);g.lineWidth>0&&(f=PIXI.WebGLGraphics.switchMode(c,0),PIXI.WebGLGraphics.buildLine(g,f))}else f=PIXI.WebGLGraphics.switchMode(c,0),g.type===PIXI.Graphics.RECT?PIXI.WebGLGraphics.buildRectangle(g,f):g.type===PIXI.Graphics.CIRC||g.type===PIXI.Graphics.ELIP?PIXI.WebGLGraphics.buildCircle(g,f):g.type===PIXI.Graphics.RREC&&PIXI.WebGLGraphics.buildRoundedRectangle(g,f);c.lastIndex++}for(d=0;d=q;q++)p=q/n,h=g(a,c,p),i=g(b,d,p),j=g(c,e,p),k=g(d,f,p),l=g(h,j,p),m=g(i,k,p),o.push(l,m);return o},PIXI.WebGLGraphics.buildCircle=function(a,b){var c,d,e=a.shape,f=e.x,g=e.y;a.type===PIXI.Graphics.CIRC?(c=e.radius,d=e.radius):(c=e.width,d=e.height);var h=40,i=2*Math.PI/h,j=0;if(a.fill){var k=PIXI.hex2rgb(a.fillColor),l=a.fillAlpha,m=k[0]*l,n=k[1]*l,o=k[2]*l,p=b.points,q=b.indices,r=p.length/6;for(q.push(r),j=0;h+1>j;j++)p.push(f,g,m,n,o,l),p.push(f+Math.sin(i*j)*c,g+Math.cos(i*j)*d,m,n,o,l),q.push(r++,r++);q.push(r-1)}if(a.lineWidth){var s=a.points;for(a.points=[],j=0;h+1>j;j++)a.points.push(f+Math.sin(i*j)*c,g+Math.cos(i*j)*d);PIXI.WebGLGraphics.buildLine(a,b),a.points=s}},PIXI.WebGLGraphics.buildLine=function(a,b){var c=0,d=a.points;if(0!==d.length){if(a.lineWidth%2)for(c=0;cc;c++)k=d[2*(c-1)],l=d[2*(c-1)+1],m=d[2*c],n=d[2*c+1],o=d[2*(c+1)],p=d[2*(c+1)+1],q=-(l-n),r=k-m,E=Math.sqrt(q*q+r*r),q/=E,r/=E,q*=K,r*=K,s=-(n-p),t=m-o,E=Math.sqrt(s*s+t*t),s/=E,t/=E,s*=K,t*=K,w=-r+l-(-r+n),x=-q+m-(-q+k),y=(-q+k)*(-r+n)-(-q+m)*(-r+l),z=-t+p-(-t+n),A=-s+m-(-s+o),B=(-s+o)*(-t+n)-(-s+m)*(-t+p),C=w*A-z*x,Math.abs(C)<.1?(C+=10.1,F.push(m-q,n-r,N,O,P,M),F.push(m+q,n+r,N,O,P,M)):(i=(x*B-A*y)/C,j=(z*y-w*B)/C,D=(i-m)*(i-m)+(j-n)+(j-n),D>19600?(u=q-s,v=r-t,E=Math.sqrt(u*u+v*v),u/=E,v/=E,u*=K,v*=K,F.push(m-u,n-v),F.push(N,O,P,M),F.push(m+u,n+v),F.push(N,O,P,M),F.push(m-u,n-v),F.push(N,O,P,M),I++):(F.push(i,j),F.push(N,O,P,M),F.push(m-(i-m),n-(j-n)),F.push(N,O,P,M)));for(k=d[2*(H-2)],l=d[2*(H-2)+1],m=d[2*(H-1)],n=d[2*(H-1)+1],q=-(l-n),r=k-m,E=Math.sqrt(q*q+r*r),q/=E,r/=E,q*=K,r*=K,F.push(m-q,n-r),F.push(N,O,P,M),F.push(m+q,n+r),F.push(N,O,P,M),G.push(J),c=0;I>c;c++)G.push(J++);G.push(J-1)}},PIXI.WebGLGraphics.buildComplexPoly=function(a,b){var c=a.points.slice();if(!(c.length<6)){var d=b.indices;b.points=c,b.alpha=a.fillAlpha,b.color=PIXI.hex2rgb(a.fillColor);for(var e,f,g=1/0,h=-(1/0),i=1/0,j=-(1/0),k=0;ke?e:g,h=e>h?e:h,i=i>f?f:i,j=f>j?f:j;c.push(g,i,h,i,h,j,g,j);var l=c.length/2;for(k=0;l>k;k++)d.push(k)}},PIXI.WebGLGraphics.buildPoly=function(a,b){var c=a.points;if(!(c.length<6)){var d=b.points,e=b.indices,f=c.length/2,g=PIXI.hex2rgb(a.fillColor),h=a.fillAlpha,i=g[0]*h,j=g[1]*h,k=g[2]*h,l=PIXI.EarCut.Triangulate(c,null,2);if(!l)return!1;var m=d.length/6,n=0;for(n=0;nn;n++)d.push(c[2*n],c[2*n+1],i,j,k,h);return!0}},PIXI.WebGLGraphics.graphicsDataPool=[],PIXI.WebGLGraphicsData=function(a){this.gl=a,this.color=[0,0,0],this.points=[],this.indices=[],this.buffer=a.createBuffer(),this.indexBuffer=a.createBuffer(),this.mode=1,this.alpha=1,this.dirty=!0},PIXI.WebGLGraphicsData.prototype.reset=function(){this.points=[],this.indices=[]},PIXI.WebGLGraphicsData.prototype.upload=function(){var a=this.gl;this.glPoints=new PIXI.Float32Array(this.points),a.bindBuffer(a.ARRAY_BUFFER,this.buffer),a.bufferData(a.ARRAY_BUFFER,this.glPoints,a.STATIC_DRAW),this.glIndicies=new PIXI.Uint16Array(this.indices),a.bindBuffer(a.ELEMENT_ARRAY_BUFFER,this.indexBuffer),a.bufferData(a.ELEMENT_ARRAY_BUFFER,this.glIndicies,a.STATIC_DRAW),this.dirty=!1},PIXI.CanvasGraphics=function(){},PIXI.CanvasGraphics.renderGraphics=function(a,b){var c=a.worldAlpha;a.dirty&&(this.updateGraphicsTint(a),a.dirty=!1);for(var d=0;dA?A:z,b.beginPath(),b.moveTo(v,w+z),b.lineTo(v,w+y-z),b.quadraticCurveTo(v,w+y,v+z,w+y),b.lineTo(v+x-z,w+y),b.quadraticCurveTo(v+x,w+y,v+x,w+y-z),b.lineTo(v+x,w+z),b.quadraticCurveTo(v+x,w,v+x-z,w),b.lineTo(v+z,w),b.quadraticCurveTo(v,w,v,w+z),b.closePath(),(e.fillColor||0===e.fillColor)&&(b.globalAlpha=e.fillAlpha*c,b.fillStyle="#"+("00000"+(0|g).toString(16)).substr(-6),b.fill()),e.lineWidth&&(b.globalAlpha=e.lineAlpha*c,b.strokeStyle="#"+("00000"+(0|h).toString(16)).substr(-6),b.stroke())}}},PIXI.CanvasGraphics.renderGraphicsMask=function(a,b){var c=a.graphicsData.length;if(0!==c){b.beginPath();for(var d=0;c>d;d++){var e=a.graphicsData[d],f=e.shape;if(e.type===PIXI.Graphics.POLY){var g=f.points;b.moveTo(g[0],g[1]);for(var h=1;hy?y:x,b.moveTo(t,u+x),b.lineTo(t,u+w-x),b.quadraticCurveTo(t,u+w,t+x,u+w),b.lineTo(t+v-x,u+w),b.quadraticCurveTo(t+v,u+w,t+v,u+w-x),b.lineTo(t+v,u+x),b.quadraticCurveTo(t+v,u,t+v-x,u),b.lineTo(t+x,u),b.quadraticCurveTo(t,u,t,u+x),b.closePath()}}}},PIXI.CanvasGraphics.updateGraphicsTint=function(a){if(16777215!==a.tint)for(var b=(a.tint>>16&255)/255,c=(a.tint>>8&255)/255,d=(255&a.tint)/255,e=0;e>16&255)/255*b*255<<16)+((g>>8&255)/255*c*255<<8)+(255&g)/255*d*255,f._lineTint=((h>>16&255)/255*b*255<<16)+((h>>8&255)/255*c*255<<8)+(255&h)/255*d*255}},c.Graphics=function(a,b,d){void 0===b&&(b=0),void 0===d&&(d=0), -this.type=c.GRAPHICS,this.physicsType=c.SPRITE,this.anchor=new c.Point,PIXI.Graphics.call(this),c.Component.Core.init.call(this,a,b,d,"",null)},c.Graphics.prototype=Object.create(PIXI.Graphics.prototype),c.Graphics.prototype.constructor=c.Graphics,c.Component.Core.install.call(c.Graphics.prototype,["Angle","AutoCull","Bounds","Destroy","FixedToCamera","InputEnabled","InWorld","LifeSpan","PhysicsBody","Reset"]),c.Graphics.prototype.preUpdatePhysics=c.Component.PhysicsBody.preUpdate,c.Graphics.prototype.preUpdateLifeSpan=c.Component.LifeSpan.preUpdate,c.Graphics.prototype.preUpdateInWorld=c.Component.InWorld.preUpdate,c.Graphics.prototype.preUpdateCore=c.Component.Core.preUpdate,c.Graphics.prototype.preUpdate=function(){return this.preUpdatePhysics()&&this.preUpdateLifeSpan()&&this.preUpdateInWorld()?this.preUpdateCore():!1},c.Graphics.prototype.destroy=function(a){this.clear(),c.Component.Destroy.prototype.destroy.call(this,a)},c.Graphics.prototype.drawTriangle=function(a,b){void 0===b&&(b=!1);var d=new c.Polygon(a);if(b){var e=new c.Point(this.game.camera.x-a[0].x,this.game.camera.y-a[0].y),f=new c.Point(a[1].x-a[0].x,a[1].y-a[0].y),g=new c.Point(a[1].x-a[2].x,a[1].y-a[2].y),h=g.cross(f);e.dot(h)>0&&this.drawPolygon(d)}else this.drawPolygon(d)},c.Graphics.prototype.drawTriangles=function(a,b,d){void 0===d&&(d=!1);var e,f=new c.Point,g=new c.Point,h=new c.Point,i=[];if(b)if(a[0]instanceof c.Point)for(e=0;e0&&this.style.maxLinesh;h++){if(0===c){var i=this.style.strokeThickness+this.padding.x;i+=this.colors.length>0||this.strokeColors.length>0||this.fontWeights.length>0||this.fontStyles.length>0?this.measureLine(b[h]):this.context.measureText(b[h]).width,this.style.wordWrap&&(i-=this.context.measureText(" ").width)}else{var j=b[h].split(/(?:\t)/),i=this.padding.x+this.style.strokeThickness;if(Array.isArray(c))for(var k=0,l=0;l0||this.strokeColors.length>0||this.fontWeights.length>0||this.fontStyles.length>0?this.measureLine(j[l]):Math.ceil(this.context.measureText(j[l]).width),l>0&&(k+=c[l-1]),i=k+m}else for(var l=0;l0||this.strokeColors.length>0||this.fontWeights.length>0||this.fontStyles.length>0?this.measureLine(j[l]):Math.ceil(this.context.measureText(j[l]).width);var n=this.game.math.snapToCeil(i,c)-i;i+=n}}d[h]=Math.ceil(i),e=Math.max(e,d[h])}this.canvas.width=e*this._res;var o=f.fontSize+this.style.strokeThickness+this.padding.y,p=o*g,q=this._lineSpacing;0>q&&Math.abs(q)>o&&(q=-o),0!==q&&(p+=q>0?q*b.length:q*(b.length-1)),this.canvas.height=p*this._res,this.context.scale(this._res,this._res),navigator.isCocoonJS&&this.context.clearRect(0,0,this.canvas.width,this.canvas.height),this.style.backgroundColor&&(this.context.fillStyle=this.style.backgroundColor,this.context.fillRect(0,0,this.canvas.width,this.canvas.height)),this.context.fillStyle=this.style.fill,this.context.font=this.style.font,this.context.strokeStyle=this.style.stroke,this.context.textBaseline="alphabetic",this.context.lineWidth=this.style.strokeThickness,this.context.lineCap="round",this.context.lineJoin="round";var r,s;for(this._charCount=0,h=0;g>h;h++)r=this.style.strokeThickness/2,s=this.style.strokeThickness/2+h*o+f.ascent,h>0&&(s+=q*h),"right"===this.style.align?r+=e-d[h]:"center"===this.style.align&&(r+=(e-d[h])/2),this.autoRound&&(r=Math.round(r),s=Math.round(s)),this.colors.length>0||this.strokeColors.length>0||this.fontWeights.length>0||this.fontStyles.length>0?this.updateLine(b[h],r,s):(this.style.stroke&&this.style.strokeThickness&&(this.updateShadow(this.style.shadowStroke),0===c?this.context.strokeText(b[h],r,s):this.renderTabLine(b[h],r,s,!1)),this.style.fill&&(this.updateShadow(this.style.shadowFill),0===c?this.context.fillText(b[h],r,s):this.renderTabLine(b[h],r,s,!0)));this.updateTexture()},c.Text.prototype.renderTabLine=function(a,b,c,d){var e=a.split(/(?:\t)/),f=this.style.tabs,g=0;if(Array.isArray(f))for(var h=0,i=0;i0&&(h+=f[i-1]),g=b+h,d?this.context.fillText(e[i],g,c):this.context.strokeText(e[i],g,c);else for(var i=0;i0||this.fontStyles.length>0){var e=this.fontToComponents(this.context.font);this.fontStyles[this._charCount]&&(e.fontStyle=this.fontStyles[this._charCount]),this.fontWeights[this._charCount]&&(e.fontWeight=this.fontWeights[this._charCount]),this.context.font=this.componentsToFont(e)}this.style.stroke&&this.style.strokeThickness&&(this.strokeColors[this._charCount]&&(this.context.strokeStyle=this.strokeColors[this._charCount]),this.updateShadow(this.style.shadowStroke)),this.style.fill&&(this.colors[this._charCount]&&(this.context.fillStyle=this.colors[this._charCount]),this.updateShadow(this.style.shadowFill)),b+=this.context.measureText(d).width,this._charCount++}return Math.ceil(b)},c.Text.prototype.updateLine=function(a,b,c){for(var d=0;d0||this.fontStyles.length>0){var f=this.fontToComponents(this.context.font);this.fontStyles[this._charCount]&&(f.fontStyle=this.fontStyles[this._charCount]),this.fontWeights[this._charCount]&&(f.fontWeight=this.fontWeights[this._charCount]),this.context.font=this.componentsToFont(f)}this.style.stroke&&this.style.strokeThickness&&(this.strokeColors[this._charCount]&&(this.context.strokeStyle=this.strokeColors[this._charCount]),this.updateShadow(this.style.shadowStroke),this.context.strokeText(e,b,c)),this.style.fill&&(this.colors[this._charCount]&&(this.context.fillStyle=this.colors[this._charCount]),this.updateShadow(this.style.shadowFill),this.context.fillText(e,b,c)),b+=this.context.measureText(e).width,this._charCount++}},c.Text.prototype.clearColors=function(){return this.colors=[],this.strokeColors=[],this.dirty=!0,this},c.Text.prototype.clearFontValues=function(){return this.fontStyles=[],this.fontWeights=[],this.dirty=!0,this},c.Text.prototype.addColor=function(a,b){return this.colors[b]=a,this.dirty=!0,this},c.Text.prototype.addStrokeColor=function(a,b){return this.strokeColors[b]=a,this.dirty=!0,this},c.Text.prototype.addFontStyle=function(a,b){return this.fontStyles[b]=a,this.dirty=!0,this},c.Text.prototype.addFontWeight=function(a,b){return this.fontWeights[b]=a,this.dirty=!0,this},c.Text.prototype.precalculateWordWrap=function(a){this.texture.baseTexture.resolution=this._res,this.context.font=this.style.font;var b=this.runWordWrap(a);return b.split(/(?:\r\n|\r|\n)/)},c.Text.prototype.runWordWrap=function(a){return this.useAdvancedWrap?this.advancedWordWrap(a):this.basicWordWrap(a)},c.Text.prototype.advancedWordWrap=function(a){for(var b=this.context,c=this.style.wordWrapWidth,d="",e=a.replace(/ +/gi," ").split(/\r?\n/gi),f=e.length,g=0;f>g;g++){var h=e[g],i="";h=h.replace(/^ *|\s*$/gi,"");var j=b.measureText(h).width;if(c>j)d+=h+"\n";else{for(var k=c,l=h.split(" "),m=0;mk){if(0===m){for(var q=o;q.length&&(q=q.slice(0,-1),p=b.measureText(q).width,!(k>=p)););if(!q.length)throw new Error("This text's wordWrapWidth setting is less than a single character!");var r=n.substr(q.length);l[m]=r,i+=q}var s=l[m].length?m:m+1,t=l.slice(s).join(" ").replace(/[ \n]*$/gi,"");e[g+1]=t+" "+(e[g+1]||""),f=e.length;break}i+=o,k-=p}d+=i.replace(/[ \n]*$/gi,"")+"\n"}}return d=d.replace(/[\s|\n]*$/gi,"")},c.Text.prototype.basicWordWrap=function(a){for(var b="",c=a.split("\n"),d=0;de?(g>0&&(b+="\n"),b+=f[g]+" ",e=this.style.wordWrapWidth-h):(e-=i,b+=f[g]+" ")}dd&&(this.style.wordWrapWidth=d)),this.updateTexture(),this},c.Text.prototype.updateTexture=function(){var a=this.texture.baseTexture,b=this.texture.crop,c=this.texture.frame,d=this.canvas.width,e=this.canvas.height;if(a.width=d,a.height=e,b.width=d,b.height=e,c.width=d,c.height=e,this.texture.width=d,this.texture.height=e,this._width=d,this._height=e,this.textBounds){var f=this.textBounds.x,g=this.textBounds.y;"right"===this.style.boundsAlignH?f+=this.textBounds.width-this.canvas.width:"center"===this.style.boundsAlignH&&(f+=this.textBounds.halfWidth-this.canvas.width/2),"bottom"===this.style.boundsAlignV?g+=this.textBounds.height-this.canvas.height:"middle"===this.style.boundsAlignV&&(g+=this.textBounds.halfHeight-this.canvas.height/2),this.pivot.x=-f,this.pivot.y=-g}this.renderable=0!==d&&0!==e,this.texture.requiresReTint=!0,this.texture.baseTexture.dirty()},c.Text.prototype._renderWebGL=function(a){this.dirty&&(this.updateText(),this.dirty=!1),PIXI.Sprite.prototype._renderWebGL.call(this,a)},c.Text.prototype._renderCanvas=function(a){this.dirty&&(this.updateText(),this.dirty=!1),PIXI.Sprite.prototype._renderCanvas.call(this,a)},c.Text.prototype.determineFontProperties=function(a){var b=c.Text.fontPropertiesCache[a];if(!b){b={};var d=c.Text.fontPropertiesCanvas,e=c.Text.fontPropertiesContext;e.font=a;var f=Math.ceil(e.measureText("|MÉq").width),g=Math.ceil(e.measureText("|MÉq").width),h=2*g;if(g=1.4*g|0,d.width=f,d.height=h,e.fillStyle="#f00",e.fillRect(0,0,f,h),e.font=a,e.textBaseline="alphabetic",e.fillStyle="#000",e.fillText("|MÉq",0,g),!e.getImageData(0,0,f,h))return b.ascent=g,b.descent=g+6,b.fontSize=b.ascent+b.descent,c.Text.fontPropertiesCache[a]=b,b;var i,j,k=e.getImageData(0,0,f,h).data,l=k.length,m=4*f,n=0,o=!1;for(i=0;g>i;i++){for(j=0;m>j;j+=4)if(255!==k[n+j]){o=!0;break}if(o)break;n+=m}for(b.ascent=g-i,n=l-m,o=!1,i=h;i>g;i--){for(j=0;m>j;j+=4)if(255!==k[n+j]){o=!0;break}if(o)break;n-=m}b.descent=i-g,b.descent+=6,b.fontSize=b.ascent+b.descent,c.Text.fontPropertiesCache[a]=b}return b},c.Text.prototype.getBounds=function(a){return this.dirty&&(this.updateText(),this.dirty=!1),PIXI.Sprite.prototype.getBounds.call(this,a)},Object.defineProperty(c.Text.prototype,"text",{get:function(){return this._text},set:function(a){a!==this._text&&(this._text=a.toString()||"",this.dirty=!0,this.parent&&this.updateTransform())}}),Object.defineProperty(c.Text.prototype,"cssFont",{get:function(){return this.componentsToFont(this._fontComponents)},set:function(a){a=a||"bold 20pt Arial",this._fontComponents=this.fontToComponents(a),this.updateFont(this._fontComponents)}}),Object.defineProperty(c.Text.prototype,"font",{get:function(){return this._fontComponents.fontFamily},set:function(a){a=a||"Arial",a=a.trim(),/^(?:inherit|serif|sans-serif|cursive|fantasy|monospace)$/.exec(a)||/['",]/.exec(a)||(a="'"+a+"'"),this._fontComponents.fontFamily=a,this.updateFont(this._fontComponents)}}),Object.defineProperty(c.Text.prototype,"fontSize",{get:function(){var a=this._fontComponents.fontSize;return a&&/(?:^0$|px$)/.exec(a)?parseInt(a,10):a},set:function(a){a=a||"0","number"==typeof a&&(a+="px"),this._fontComponents.fontSize=a,this.updateFont(this._fontComponents)}}),Object.defineProperty(c.Text.prototype,"fontWeight",{get:function(){return this._fontComponents.fontWeight||"normal"},set:function(a){a=a||"normal",this._fontComponents.fontWeight=a,this.updateFont(this._fontComponents)}}),Object.defineProperty(c.Text.prototype,"fontStyle",{get:function(){return this._fontComponents.fontStyle||"normal"},set:function(a){a=a||"normal",this._fontComponents.fontStyle=a,this.updateFont(this._fontComponents)}}),Object.defineProperty(c.Text.prototype,"fontVariant",{get:function(){return this._fontComponents.fontVariant||"normal"},set:function(a){a=a||"normal",this._fontComponents.fontVariant=a,this.updateFont(this._fontComponents)}}),Object.defineProperty(c.Text.prototype,"fill",{get:function(){return this.style.fill},set:function(a){a!==this.style.fill&&(this.style.fill=a,this.dirty=!0)}}),Object.defineProperty(c.Text.prototype,"align",{get:function(){return this.style.align},set:function(a){a!==this.style.align&&(this.style.align=a,this.dirty=!0)}}),Object.defineProperty(c.Text.prototype,"resolution",{get:function(){return this._res},set:function(a){a!==this._res&&(this._res=a,this.dirty=!0)}}),Object.defineProperty(c.Text.prototype,"tabs",{get:function(){return this.style.tabs},set:function(a){a!==this.style.tabs&&(this.style.tabs=a,this.dirty=!0)}}),Object.defineProperty(c.Text.prototype,"boundsAlignH",{get:function(){return this.style.boundsAlignH},set:function(a){a!==this.style.boundsAlignH&&(this.style.boundsAlignH=a,this.dirty=!0)}}),Object.defineProperty(c.Text.prototype,"boundsAlignV",{get:function(){return this.style.boundsAlignV},set:function(a){a!==this.style.boundsAlignV&&(this.style.boundsAlignV=a,this.dirty=!0)}}),Object.defineProperty(c.Text.prototype,"stroke",{get:function(){return this.style.stroke},set:function(a){a!==this.style.stroke&&(this.style.stroke=a,this.dirty=!0)}}),Object.defineProperty(c.Text.prototype,"strokeThickness",{get:function(){return this.style.strokeThickness},set:function(a){a!==this.style.strokeThickness&&(this.style.strokeThickness=a,this.dirty=!0)}}),Object.defineProperty(c.Text.prototype,"wordWrap",{get:function(){return this.style.wordWrap},set:function(a){a!==this.style.wordWrap&&(this.style.wordWrap=a,this.dirty=!0)}}),Object.defineProperty(c.Text.prototype,"wordWrapWidth",{get:function(){return this.style.wordWrapWidth},set:function(a){a!==this.style.wordWrapWidth&&(this.style.wordWrapWidth=a,this.dirty=!0)}}),Object.defineProperty(c.Text.prototype,"lineSpacing",{get:function(){return this._lineSpacing},set:function(a){a!==this._lineSpacing&&(this._lineSpacing=parseFloat(a),this.dirty=!0,this.parent&&this.updateTransform())}}),Object.defineProperty(c.Text.prototype,"shadowOffsetX",{get:function(){return this.style.shadowOffsetX},set:function(a){a!==this.style.shadowOffsetX&&(this.style.shadowOffsetX=a,this.dirty=!0)}}),Object.defineProperty(c.Text.prototype,"shadowOffsetY",{get:function(){return this.style.shadowOffsetY},set:function(a){a!==this.style.shadowOffsetY&&(this.style.shadowOffsetY=a,this.dirty=!0)}}),Object.defineProperty(c.Text.prototype,"shadowColor",{get:function(){return this.style.shadowColor},set:function(a){a!==this.style.shadowColor&&(this.style.shadowColor=a,this.dirty=!0)}}),Object.defineProperty(c.Text.prototype,"shadowBlur",{get:function(){return this.style.shadowBlur},set:function(a){a!==this.style.shadowBlur&&(this.style.shadowBlur=a,this.dirty=!0)}}),Object.defineProperty(c.Text.prototype,"shadowStroke",{get:function(){return this.style.shadowStroke},set:function(a){a!==this.style.shadowStroke&&(this.style.shadowStroke=a,this.dirty=!0)}}),Object.defineProperty(c.Text.prototype,"shadowFill",{get:function(){return this.style.shadowFill},set:function(a){a!==this.style.shadowFill&&(this.style.shadowFill=a,this.dirty=!0)}}),Object.defineProperty(c.Text.prototype,"width",{get:function(){return this.dirty&&(this.updateText(),this.dirty=!1),this.scale.x*this.texture.frame.width},set:function(a){this.scale.x=a/this.texture.frame.width,this._width=a}}),Object.defineProperty(c.Text.prototype,"height",{get:function(){return this.dirty&&(this.updateText(),this.dirty=!1),this.scale.y*this.texture.frame.height},set:function(a){this.scale.y=a/this.texture.frame.height,this._height=a}}),c.Text.fontPropertiesCache={},c.Text.fontPropertiesCanvas=PIXI.CanvasPool.create(c.Text.fontPropertiesCanvas),c.Text.fontPropertiesContext=c.Text.fontPropertiesCanvas.getContext("2d"),c.BitmapText=function(a,b,d,e,f,g,h){b=b||0,d=d||0,e=e||"",f=f||"",g=g||32,h=h||"left",PIXI.DisplayObjectContainer.call(this),this.type=c.BITMAPTEXT,this.physicsType=c.SPRITE,this.textWidth=0,this.textHeight=0,this.anchor=new c.Point,this._prevAnchor=new c.Point,this._glyphs=[],this._maxWidth=0,this._text=f.toString()||"",this._data=a.cache.getBitmapFont(e),this._font=e,this._fontSize=g,this._align=h,this._tint=16777215,this.updateText(),this.dirty=!1,c.Component.Core.init.call(this,a,b,d,"",null)},c.BitmapText.prototype=Object.create(PIXI.DisplayObjectContainer.prototype),c.BitmapText.prototype.constructor=c.BitmapText,c.Component.Core.install.call(c.BitmapText.prototype,["Angle","AutoCull","Bounds","Destroy","FixedToCamera","InputEnabled","InWorld","LifeSpan","PhysicsBody","Reset"]),c.BitmapText.prototype.preUpdatePhysics=c.Component.PhysicsBody.preUpdate,c.BitmapText.prototype.preUpdateLifeSpan=c.Component.LifeSpan.preUpdate,c.BitmapText.prototype.preUpdateInWorld=c.Component.InWorld.preUpdate,c.BitmapText.prototype.preUpdateCore=c.Component.Core.preUpdate,c.BitmapText.prototype.preUpdate=function(){return this.preUpdatePhysics()&&this.preUpdateLifeSpan()&&this.preUpdateInWorld()?this.preUpdateCore():!1},c.BitmapText.prototype.postUpdate=function(){c.Component.PhysicsBody.postUpdate.call(this),c.Component.FixedToCamera.postUpdate.call(this),this.body&&this.body.type===c.Physics.ARCADE&&(this.textWidth!==this.body.sourceWidth||this.textHeight!==this.body.sourceHeight)&&this.body.setSize(this.textWidth,this.textHeight)},c.BitmapText.prototype.setText=function(a){this.text=a},c.BitmapText.prototype.scanLine=function(a,b,c){for(var d=0,e=0,f=-1,g=0,h=null,i=this._maxWidth>0?this._maxWidth:null,j=[],k=0;k=i&&f>-1)return{width:g||e,text:c.substr(0,k-(k-f)),end:l,chars:j};e+=(n.xAdvance+p)*b,j.push(d+(n.xOffset+p)*b),d+=(n.xAdvance+p)*b,h=m}return{width:e,text:c,end:l,chars:j}},c.BitmapText.prototype.cleanText=function(a,b){void 0===b&&(b="");var c=this._data.font;if(!c)return"";for(var d=/\r\n|\n\r|\n|\r/g,e=a.replace(d,"\n").split("\n"),f=0;fthis.textWidth&&(this.textWidth=f.width),e+=a.lineHeight*c,b=b.substr(f.text.length+1)}while(f.end===!1);this.textHeight=e;for(var g=0,h=0,i=this.textWidth*this.anchor.x,j=this.textHeight*this.anchor.y,k=0;k0&&(this._fontSize=a,this.updateText())}}),Object.defineProperty(c.BitmapText.prototype,"text",{get:function(){return this._text},set:function(a){a!==this._text&&(this._text=a.toString()||"",this.updateText())}}),Object.defineProperty(c.BitmapText.prototype,"maxWidth",{get:function(){return this._maxWidth},set:function(a){a!==this._maxWidth&&(this._maxWidth=a,this.updateText())}}),Object.defineProperty(c.BitmapText.prototype,"smoothed",{get:function(){return!this._data.base.scaleMode},set:function(a){a?this._data.base.scaleMode=0:this._data.base.scaleMode=1}}),c.RetroFont=function(a,b,d,e,f,g,h,i,j,k){if(!a.cache.checkImageKey(b))return!1;(void 0===g||null===g)&&(g=a.cache.getImage(b).width/d),this.characterWidth=d,this.characterHeight=e,this.characterSpacingX=h||0,this.characterSpacingY=i||0,this.characterPerRow=g,this.offsetX=j||0,this.offsetY=k||0,this.align="left",this.multiLine=!1,this.autoUpperCase=!0,this.customSpacingX=0,this.customSpacingY=0,this.fixedWidth=0,this.fontSet=a.cache.getImage(b),this._text="",this.grabData=[],this.frameData=new c.FrameData;for(var l=this.offsetX,m=this.offsetY,n=0,o=0;o?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~",c.RetroFont.TEXT_SET2=" !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ",c.RetroFont.TEXT_SET3="ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789 ",c.RetroFont.TEXT_SET4="ABCDEFGHIJKLMNOPQRSTUVWXYZ 0123456789",c.RetroFont.TEXT_SET5="ABCDEFGHIJKLMNOPQRSTUVWXYZ.,/() '!?-*:0123456789",c.RetroFont.TEXT_SET6="ABCDEFGHIJKLMNOPQRSTUVWXYZ!?:;0123456789\"(),-.' ",c.RetroFont.TEXT_SET7="AGMSY+:4BHNTZ!;5CIOU.?06DJPV,(17EKQW\")28FLRX-'39",c.RetroFont.TEXT_SET8="0123456789 .ABCDEFGHIJKLMNOPQRSTUVWXYZ",c.RetroFont.TEXT_SET9="ABCDEFGHIJKLMNOPQRSTUVWXYZ()-0123456789.:,'\"?!",c.RetroFont.TEXT_SET10="ABCDEFGHIJKLMNOPQRSTUVWXYZ",c.RetroFont.TEXT_SET11="ABCDEFGHIJKLMNOPQRSTUVWXYZ.,\"-+!?()':;0123456789",c.RetroFont.prototype.setFixedWidth=function(a,b){void 0===b&&(b="left"),this.fixedWidth=a,this.align=b},c.RetroFont.prototype.setText=function(a,b,c,d,e,f){this.multiLine=b||!1,this.customSpacingX=c||0,this.customSpacingY=d||0,this.align=e||"left",f?this.autoUpperCase=!1:this.autoUpperCase=!0,a.length>0&&(this.text=a)},c.RetroFont.prototype.buildRetroFontText=function(){var a=0,b=0;if(this.clear(),this.multiLine){var d=this._text.split("\n");this.fixedWidth>0?this.resize(this.fixedWidth,d.length*(this.characterHeight+this.customSpacingY)-this.customSpacingY,!0):this.resize(this.getLongestLine()*(this.characterWidth+this.customSpacingX),d.length*(this.characterHeight+this.customSpacingY)-this.customSpacingY,!0);for(var e=0;ea&&(a=0),this.pasteLine(d[e],a,b,this.customSpacingX),b+=this.characterHeight+this.customSpacingY}else this.fixedWidth>0?this.resize(this.fixedWidth,this.characterHeight,!0):this.resize(this._text.length*(this.characterWidth+this.customSpacingX),this.characterHeight,!0),a=0,this.align===c.RetroFont.ALIGN_RIGHT?a=this.width-this._text.length*(this.characterWidth+this.customSpacingX):this.align===c.RetroFont.ALIGN_CENTER&&(a=this.width/2-this._text.length*(this.characterWidth+this.customSpacingX)/2,a+=this.customSpacingX/2),0>a&&(a=0),this.pasteLine(this._text,a,0,this.customSpacingX);this.requiresReTint=!0},c.RetroFont.prototype.pasteLine=function(a,b,c,d){for(var e=0;e=0&&(this.stamp.frame=this.grabData[a.charCodeAt(e)],this.renderXY(this.stamp,b,c,!1),b+=this.characterWidth+d,b>this.width))break},c.RetroFont.prototype.getLongestLine=function(){var a=0;if(this._text.length>0)for(var b=this._text.split("\n"),c=0;ca&&(a=b[c].length);return a},c.RetroFont.prototype.removeUnsupportedCharacters=function(a){for(var b="",c=0;c=0||!a&&"\n"===d)&&(b=b.concat(d))}return b},c.RetroFont.prototype.updateOffset=function(a,b){if(this.offsetX!==a||this.offsetY!==b){for(var c=a-this.offsetX,d=b-this.offsetY,e=this.game.cache.getFrameData(this.stamp.key).getFrames(),f=e.length;f--;)e[f].x+=c,e[f].y+=d;this.buildRetroFontText()}},Object.defineProperty(c.RetroFont.prototype,"text",{get:function(){return this._text},set:function(a){var b;b=this.autoUpperCase?a.toUpperCase():a, -b!==this._text&&(this._text=b,this.removeUnsupportedCharacters(this.multiLine),this.buildRetroFontText())}}),Object.defineProperty(c.RetroFont.prototype,"smoothed",{get:function(){return this.stamp.smoothed},set:function(a){this.stamp.smoothed=a,this.buildRetroFontText()}}),c.Rope=function(a,b,d,e,f,g){this.points=[],this.points=g,this._hasUpdateAnimation=!1,this._updateAnimationCallback=null,b=b||0,d=d||0,e=e||null,f=f||null,this.type=c.ROPE,PIXI.Rope.call(this,PIXI.TextureCache.__default,this.points),c.Component.Core.init.call(this,a,b,d,e,f)},c.Rope.prototype=Object.create(PIXI.Rope.prototype),c.Rope.prototype.constructor=c.Rope,c.Component.Core.install.call(c.Rope.prototype,["Angle","Animation","AutoCull","Bounds","BringToTop","Crop","Delta","Destroy","FixedToCamera","InWorld","LifeSpan","LoadTexture","Overlap","PhysicsBody","Reset","ScaleMinMax","Smoothed"]),c.Rope.prototype.preUpdatePhysics=c.Component.PhysicsBody.preUpdate,c.Rope.prototype.preUpdateLifeSpan=c.Component.LifeSpan.preUpdate,c.Rope.prototype.preUpdateInWorld=c.Component.InWorld.preUpdate,c.Rope.prototype.preUpdateCore=c.Component.Core.preUpdate,c.Rope.prototype.preUpdate=function(){return this.preUpdatePhysics()&&this.preUpdateLifeSpan()&&this.preUpdateInWorld()?this.preUpdateCore():!1},c.Rope.prototype.update=function(){this._hasUpdateAnimation&&this.updateAnimation.call(this)},c.Rope.prototype.reset=function(a,b){return c.Component.Reset.prototype.reset.call(this,a,b),this},Object.defineProperty(c.Rope.prototype,"updateAnimation",{get:function(){return this._updateAnimation},set:function(a){a&&"function"==typeof a?(this._hasUpdateAnimation=!0,this._updateAnimation=a):(this._hasUpdateAnimation=!1,this._updateAnimation=null)}}),Object.defineProperty(c.Rope.prototype,"segments",{get:function(){for(var a,b,d,e,f,g,h,i,j=[],k=0;k=1)&&(l.touch=!0),(window.navigator.msPointerEnabled||window.navigator.pointerEnabled)&&(l.mspointer=!0),l.cocoonJS||("onwheel"in window||l.ie&&"WheelEvent"in window?l.wheelEvent="wheel":"onmousewheel"in window?l.wheelEvent="mousewheel":l.firefox&&"MouseScrollEvent"in window&&(l.wheelEvent="DOMMouseScroll"))}function d(){for(var a=["requestFullscreen","requestFullScreen","webkitRequestFullscreen","webkitRequestFullScreen","msRequestFullscreen","msRequestFullScreen","mozRequestFullScreen","mozRequestFullscreen"],b=document.createElement("div"),c=0;c=9&&/Mac OS X (\d+)_(\d+)/.test(navigator.userAgent)){var c=parseInt(RegExp.$1,10),d=parseInt(RegExp.$2,10);(10===c&&d>=11||c>10)&&(l.dolby=!0)}}catch(e){}}function h(){l.pixelRatio=window.devicePixelRatio||1,l.iPhone=-1!=navigator.userAgent.toLowerCase().indexOf("iphone"),l.iPhone4=2==l.pixelRatio&&l.iPhone,l.iPad=-1!=navigator.userAgent.toLowerCase().indexOf("ipad"),"undefined"!=typeof Int8Array?l.typedArray=!0:l.typedArray=!1,"undefined"!=typeof ArrayBuffer&&"undefined"!=typeof Uint8Array&&"undefined"!=typeof Uint32Array&&(l.littleEndian=i(),l.LITTLE_ENDIAN=l.littleEndian),l.support32bit="undefined"!=typeof ArrayBuffer&&"undefined"!=typeof Uint8ClampedArray&&"undefined"!=typeof Int32Array&&null!==l.littleEndian&&j(),navigator.vibrate=navigator.vibrate||navigator.webkitVibrate||navigator.mozVibrate||navigator.msVibrate,navigator.vibrate&&(l.vibration=!0)}function i(){var a=new ArrayBuffer(4),b=new Uint8Array(a),c=new Uint32Array(a);return b[0]=161,b[1]=178,b[2]=195,b[3]=212,3569595041==c[0]?!0:2712847316==c[0]?!1:null}function j(){if(void 0===Uint8ClampedArray)return!1;var a=PIXI.CanvasPool.create(this,1,1),b=a.getContext("2d");if(!b)return!1;var c=b.createImageData(1,1);return PIXI.CanvasPool.remove(this),c.data instanceof Uint8ClampedArray}function k(){var a,b=document.createElement("p"),c={webkitTransform:"-webkit-transform",OTransform:"-o-transform",msTransform:"-ms-transform",MozTransform:"-moz-transform",transform:"transform"};document.body.insertBefore(b,null);for(var d in c)void 0!==b.style[d]&&(b.style[d]="translate3d(1px,1px,1px)",a=window.getComputedStyle(b).getPropertyValue(c[d]));document.body.removeChild(b),l.css3D=void 0!==a&&a.length>0&&"none"!==a}var l=this;a(),e(),g(),f(),k(),h(),b(),d(),c()},c.Device.canPlayAudio=function(a){return"mp3"===a&&this.mp3?!0:"ogg"===a&&(this.ogg||this.opus)?!0:"m4a"===a&&this.m4a?!0:"opus"===a&&this.opus?!0:"wav"===a&&this.wav?!0:"webm"===a&&this.webm?!0:"mp4"===a&&this.dolby?!0:!1},c.Device.canPlayVideo=function(a){return"webm"===a&&(this.webmVideo||this.vp9Video)?!0:"mp4"===a&&(this.mp4Video||this.h264Video)?!0:"ogg"!==a&&"ogv"!==a||!this.oggVideo?"mpeg"===a&&this.hlsVideo?!0:!1:!0},c.Device.isConsoleOpen=function(){return window.console&&window.console.firebug?!0:window.console&&(console.profile(),console.profileEnd(),console.clear&&console.clear(),console.profiles)?console.profiles.length>0:!1},c.Device.isAndroidStockBrowser=function(){var a=window.navigator.userAgent.match(/Android.*AppleWebKit\/([\d.]+)/);return a&&a[1]<537},c.Canvas={create:function(a,b,c,d,e){if(b=b||256,c=c||256,void 0===e)var f=PIXI.CanvasPool.create(a,b,c);else var f=document.createElement("canvas");return"string"==typeof d&&""!==d&&(f.id=d),f.width=b,f.height=c,f.style.display="block",f},setBackgroundColor:function(a,b){return b=b||"rgb(0,0,0)",a.style.backgroundColor=b,a},setTouchAction:function(a,b){return b=b||"none",a.style.msTouchAction=b,a.style["ms-touch-action"]=b,a.style["touch-action"]=b,a},setUserSelect:function(a,b){return b=b||"none",a.style["-webkit-touch-callout"]=b,a.style["-webkit-user-select"]=b,a.style["-khtml-user-select"]=b,a.style["-moz-user-select"]=b,a.style["-ms-user-select"]=b,a.style["user-select"]=b,a.style["-webkit-tap-highlight-color"]="rgba(0, 0, 0, 0)",a},addToDOM:function(a,b,c){var d;return void 0===c&&(c=!0),b&&("string"==typeof b?d=document.getElementById(b):"object"==typeof b&&1===b.nodeType&&(d=b)),d||(d=document.body),c&&d.style&&(d.style.overflow="hidden"),d.appendChild(a),a},removeFromDOM:function(a){a.parentNode&&a.parentNode.removeChild(a)},setTransform:function(a,b,c,d,e,f,g){return a.setTransform(d,f,g,e,b,c),a},setSmoothingEnabled:function(a,b){var d=c.Canvas.getSmoothingPrefix(a);return d&&(a[d]=b),a},getSmoothingPrefix:function(a){var b=["i","webkitI","msI","mozI","oI"];for(var c in b){var d=b[c]+"mageSmoothingEnabled";if(d in a)return d}return null},getSmoothingEnabled:function(a){var b=c.Canvas.getSmoothingPrefix(a);return b?a[b]:void 0},setImageRenderingCrisp:function(a){for(var b=["optimizeSpeed","crisp-edges","-moz-crisp-edges","-webkit-optimize-contrast","optimize-contrast","pixelated"],c=0;ca},fuzzyGreaterThan:function(a,b,c){return void 0===c&&(c=1e-4),a>b-c},fuzzyCeil:function(a,b){return void 0===b&&(b=1e-4),Math.ceil(a-b)},fuzzyFloor:function(a,b){return void 0===b&&(b=1e-4),Math.floor(a+b)},average:function(){for(var a=0,b=arguments.length,c=0;b>c;c++)a+=+arguments[c];return a/b},shear:function(a){return a%1},snapTo:function(a,b,c){return void 0===c&&(c=0),0===b?a:(a-=c,a=b*Math.round(a/b),c+a)},snapToFloor:function(a,b,c){return void 0===c&&(c=0),0===b?a:(a-=c,a=b*Math.floor(a/b),c+a)},snapToCeil:function(a,b,c){return void 0===c&&(c=0),0===b?a:(a-=c,a=b*Math.ceil(a/b),c+a)},roundTo:function(a,b,c){void 0===b&&(b=0),void 0===c&&(c=10);var d=Math.pow(c,-b);return Math.round(a*d)/d},floorTo:function(a,b,c){void 0===b&&(b=0),void 0===c&&(c=10);var d=Math.pow(c,-b);return Math.floor(a*d)/d},ceilTo:function(a,b,c){void 0===b&&(b=0),void 0===c&&(c=10);var d=Math.pow(c,-b);return Math.ceil(a*d)/d},angleBetween:function(a,b,c,d){return Math.atan2(d-b,c-a)},angleBetweenY:function(a,b,c,d){return Math.atan2(c-a,d-b)},angleBetweenPoints:function(a,b){return Math.atan2(b.y-a.y,b.x-a.x)},angleBetweenPointsY:function(a,b){return Math.atan2(b.x-a.x,b.y-a.y)},reverseAngle:function(a){return this.normalizeAngle(a+Math.PI,!0)},normalizeAngle:function(a){return a%=2*Math.PI,a>=0?a:a+2*Math.PI},maxAdd:function(a,b,c){return Math.min(a+b,c)},minSub:function(a,b,c){return Math.max(a-b,c)},wrap:function(a,b,c){var d=c-b;if(0>=d)return 0;var e=(a-b)%d;return 0>e&&(e+=d),e+b},wrapValue:function(a,b,c){var d;return a=Math.abs(a),b=Math.abs(b),c=Math.abs(c),d=(a+b)%c},isOdd:function(a){return!!(1&a)},isEven:function(a){return!(1&a)},min:function(){if(1===arguments.length&&"object"==typeof arguments[0])var a=arguments[0];else var a=arguments;for(var b=1,c=0,d=a.length;d>b;b++)a[b]b;b++)a[b]>a[c]&&(c=b);return a[c]},minProperty:function(a){if(2===arguments.length&&"object"==typeof arguments[1])var b=arguments[1];else var b=arguments.slice(1);for(var c=1,d=0,e=b.length;e>c;c++)b[c][a]c;c++)b[c][a]>b[d][a]&&(d=c);return b[d][a]},wrapAngle:function(a,b){return b?this.wrap(a,-Math.PI,Math.PI):this.wrap(a,-180,180)},linearInterpolation:function(a,b){var c=a.length-1,d=c*b,e=Math.floor(d);return 0>b?this.linear(a[0],a[1],d):b>1?this.linear(a[c],a[c-1],c-d):this.linear(a[e],a[e+1>c?c:e+1],d-e)},bezierInterpolation:function(a,b){for(var c=0,d=a.length-1,e=0;d>=e;e++)c+=Math.pow(1-b,d-e)*Math.pow(b,e)*a[e]*this.bernstein(d,e);return c},catmullRomInterpolation:function(a,b){var c=a.length-1,d=c*b,e=Math.floor(d);return a[0]===a[c]?(0>b&&(e=Math.floor(d=c*(1+b))),this.catmullRom(a[(e-1+c)%c],a[e],a[(e+1)%c],a[(e+2)%c],d-e)):0>b?a[0]-(this.catmullRom(a[0],a[0],a[1],a[1],-d)-a[0]):b>1?a[c]-(this.catmullRom(a[c],a[c],a[c-1],a[c-1],d-c)-a[c]):this.catmullRom(a[e?e-1:0],a[e],a[e+1>c?c:e+1],a[e+2>c?c:e+2],d-e)},linear:function(a,b,c){return(b-a)*c+a},bernstein:function(a,b){return this.factorial(a)/this.factorial(b)/this.factorial(a-b)},factorial:function(a){if(0===a)return 1;for(var b=a;--a;)b*=a;return b},catmullRom:function(a,b,c,d,e){var f=.5*(c-a),g=.5*(d-b),h=e*e,i=e*h;return(2*b-2*c+f+g)*i+(-3*b+3*c-2*f-g)*h+f*e+b},difference:function(a,b){return Math.abs(a-b)},roundAwayFromZero:function(a){return a>0?Math.ceil(a):Math.floor(a)},sinCosGenerator:function(a,b,c,d){void 0===b&&(b=1),void 0===c&&(c=1),void 0===d&&(d=1);for(var e=b,f=c,g=d*Math.PI/a,h=[],i=[],j=0;a>j;j++)f-=e*g,e+=f*g,h[j]=f,i[j]=e;return{sin:i,cos:h,length:a}},distance:function(a,b,c,d){var e=a-c,f=b-d;return Math.sqrt(e*e+f*f)},distanceSq:function(a,b,c,d){var e=a-c,f=b-d;return e*e+f*f},distancePow:function(a,b,c,d,e){return void 0===e&&(e=2),Math.sqrt(Math.pow(c-a,e)+Math.pow(d-b,e))},clamp:function(a,b,c){return b>a?b:a>c?c:a},clampBottom:function(a,b){return b>a?b:a},within:function(a,b,c){return Math.abs(a-b)<=c},mapLinear:function(a,b,c,d,e){return d+(a-b)*(e-d)/(c-b)},smoothstep:function(a,b,c){return a=Math.max(0,Math.min(1,(a-b)/(c-b))),a*a*(3-2*a)},smootherstep:function(a,b,c){return a=Math.max(0,Math.min(1,(a-b)/(c-b))),a*a*a*(a*(6*a-15)+10)},sign:function(a){return 0>a?-1:a>0?1:0},percent:function(a,b,c){return void 0===c&&(c=0),a>b||c>b?1:c>a||c>a?0:(a-c)/b}};var k=Math.PI/180,l=180/Math.PI;return c.Math.degToRad=function(a){return a*k},c.Math.radToDeg=function(a){return a*l},c.RandomDataGenerator=function(a){void 0===a&&(a=[]),this.c=1,this.s0=0,this.s1=0,this.s2=0,"string"==typeof a?this.state(a):this.sow(a)},c.RandomDataGenerator.prototype={rnd:function(){var a=2091639*this.s0+2.3283064365386963e-10*this.c;return this.c=0|a,this.s0=this.s1,this.s1=this.s2,this.s2=a-this.c,this.s2},sow:function(a){if(this.s0=this.hash(" "),this.s1=this.hash(this.s0),this.s2=this.hash(this.s1),this.c=1,a)for(var b=0;b>>0,b-=d,b*=d,d=b>>>0,b-=d,d+=4294967296*b;return 2.3283064365386963e-10*(d>>>0)},integer:function(){return 4294967296*this.rnd.apply(this)},frac:function(){return this.rnd.apply(this)+1.1102230246251565e-16*(2097152*this.rnd.apply(this)|0)},real:function(){return this.integer()+this.frac()},integerInRange:function(a,b){return Math.floor(this.realInRange(0,b-a+1)+a)},between:function(a,b){return this.integerInRange(a,b)},realInRange:function(a,b){return this.frac()*(b-a)+a},normal:function(){return 1-2*this.frac()},uuid:function(){var a="",b="";for(b=a="";a++<36;b+=~a%5|3*a&4?(15^a?8^this.frac()*(20^a?16:4):4).toString(16):"-");return b},pick:function(a){return a[this.integerInRange(0,a.length-1)]},sign:function(){return this.pick([-1,1])},weightedPick:function(a){return a[~~(Math.pow(this.frac(),2)*(a.length-1)+.5)]},timestamp:function(a,b){return this.realInRange(a||9466848e5,b||1577862e6)},angle:function(){return this.integerInRange(-180,180)},state:function(a){return"string"==typeof a&&a.match(/^!rnd/)&&(a=a.split(","),this.c=parseFloat(a[1]),this.s0=parseFloat(a[2]),this.s1=parseFloat(a[3]),this.s2=parseFloat(a[4])),["!rnd",this.c,this.s0,this.s1,this.s2].join(",")}},c.RandomDataGenerator.prototype.constructor=c.RandomDataGenerator,c.QuadTree=function(a,b,c,d,e,f,g){this.maxObjects=10,this.maxLevels=4,this.level=0,this.bounds={},this.objects=[],this.nodes=[],this._empty=[],this.reset(a,b,c,d,e,f,g)},c.QuadTree.prototype={reset:function(a,b,c,d,e,f,g){this.maxObjects=e||10,this.maxLevels=f||4,this.level=g||0,this.bounds={x:Math.round(a),y:Math.round(b),width:c,height:d,subWidth:Math.floor(c/2),subHeight:Math.floor(d/2),right:Math.round(a)+Math.floor(c/2),bottom:Math.round(b)+Math.floor(d/2)},this.objects.length=0,this.nodes.length=0},populate:function(a){a.forEach(this.populateHandler,this,!0)},populateHandler:function(a){a.body&&a.exists&&this.insert(a.body)},split:function(){this.nodes[0]=new c.QuadTree(this.bounds.right,this.bounds.y,this.bounds.subWidth,this.bounds.subHeight,this.maxObjects,this.maxLevels,this.level+1),this.nodes[1]=new c.QuadTree(this.bounds.x,this.bounds.y,this.bounds.subWidth,this.bounds.subHeight,this.maxObjects,this.maxLevels,this.level+1),this.nodes[2]=new c.QuadTree(this.bounds.x,this.bounds.bottom,this.bounds.subWidth,this.bounds.subHeight,this.maxObjects,this.maxLevels,this.level+1),this.nodes[3]=new c.QuadTree(this.bounds.right,this.bounds.bottom,this.bounds.subWidth,this.bounds.subHeight,this.maxObjects,this.maxLevels,this.level+1)},insert:function(a){var b,c=0;if(null!=this.nodes[0]&&(b=this.getIndex(a),-1!==b))return void this.nodes[b].insert(a);if(this.objects.push(a),this.objects.length>this.maxObjects&&this.levelthis.bounds.bottom&&(b=2):a.x>this.bounds.right&&(a.ythis.bounds.bottom&&(b=3)),b},retrieve:function(a){if(a instanceof c.Rectangle)var b=this.objects,d=this.getIndex(a);else{if(!a.body)return this._empty;var b=this.objects,d=this.getIndex(a.body)}return this.nodes[0]&&(-1!==d?b=b.concat(this.nodes[d].retrieve(a)):(b=b.concat(this.nodes[0].retrieve(a)),b=b.concat(this.nodes[1].retrieve(a)),b=b.concat(this.nodes[2].retrieve(a)),b=b.concat(this.nodes[3].retrieve(a)))),b},clear:function(){this.objects.length=0;for(var a=this.nodes.length;a--;)this.nodes[a].clear(),this.nodes.splice(a,1);this.nodes.length=0}},c.QuadTree.prototype.constructor=c.QuadTree,c.Net=function(a){this.game=a},c.Net.prototype={getHostName:function(){return window.location&&window.location.hostname?window.location.hostname:null},checkDomainName:function(a){return-1!==window.location.hostname.indexOf(a)},updateQueryString:function(a,b,c,d){void 0===c&&(c=!1),(void 0===d||""===d)&&(d=window.location.href);var e="",f=new RegExp("([?|&])"+a+"=.*?(&|#|$)(.*)","gi");if(f.test(d))e="undefined"!=typeof b&&null!==b?d.replace(f,"$1"+a+"="+b+"$2$3"):d.replace(f,"$1$3").replace(/(&|\?)$/,"");else if("undefined"!=typeof b&&null!==b){var g=-1!==d.indexOf("?")?"&":"?",h=d.split("#");d=h[0]+g+a+"="+b,h[1]&&(d+="#"+h[1]),e=d}else e=d;return c?void(window.location.href=e):e},getQueryString:function(a){void 0===a&&(a="");var b={},c=location.search.substring(1).split("&");for(var d in c){var e=c[d].split("=");if(e.length>1){if(a&&a==this.decodeURI(e[0]))return this.decodeURI(e[1]);b[this.decodeURI(e[0])]=this.decodeURI(e[1])}}return b},decodeURI:function(a){return decodeURIComponent(a.replace(/\+/g," "))}},c.Net.prototype.constructor=c.Net,c.TweenManager=function(a){this.game=a,this.frameBased=!1,this._tweens=[],this._add=[],this.easeMap={Power0:c.Easing.Power0,Power1:c.Easing.Power1,Power2:c.Easing.Power2,Power3:c.Easing.Power3,Power4:c.Easing.Power4,Linear:c.Easing.Linear.None,Quad:c.Easing.Quadratic.Out,Cubic:c.Easing.Cubic.Out,Quart:c.Easing.Quartic.Out,Quint:c.Easing.Quintic.Out,Sine:c.Easing.Sinusoidal.Out,Expo:c.Easing.Exponential.Out,Circ:c.Easing.Circular.Out,Elastic:c.Easing.Elastic.Out,Back:c.Easing.Back.Out,Bounce:c.Easing.Bounce.Out,"Quad.easeIn":c.Easing.Quadratic.In,"Cubic.easeIn":c.Easing.Cubic.In,"Quart.easeIn":c.Easing.Quartic.In,"Quint.easeIn":c.Easing.Quintic.In,"Sine.easeIn":c.Easing.Sinusoidal.In,"Expo.easeIn":c.Easing.Exponential.In,"Circ.easeIn":c.Easing.Circular.In,"Elastic.easeIn":c.Easing.Elastic.In,"Back.easeIn":c.Easing.Back.In,"Bounce.easeIn":c.Easing.Bounce.In,"Quad.easeOut":c.Easing.Quadratic.Out,"Cubic.easeOut":c.Easing.Cubic.Out,"Quart.easeOut":c.Easing.Quartic.Out,"Quint.easeOut":c.Easing.Quintic.Out,"Sine.easeOut":c.Easing.Sinusoidal.Out,"Expo.easeOut":c.Easing.Exponential.Out,"Circ.easeOut":c.Easing.Circular.Out,"Elastic.easeOut":c.Easing.Elastic.Out,"Back.easeOut":c.Easing.Back.Out,"Bounce.easeOut":c.Easing.Bounce.Out,"Quad.easeInOut":c.Easing.Quadratic.InOut,"Cubic.easeInOut":c.Easing.Cubic.InOut,"Quart.easeInOut":c.Easing.Quartic.InOut,"Quint.easeInOut":c.Easing.Quintic.InOut,"Sine.easeInOut":c.Easing.Sinusoidal.InOut,"Expo.easeInOut":c.Easing.Exponential.InOut,"Circ.easeInOut":c.Easing.Circular.InOut,"Elastic.easeInOut":c.Easing.Elastic.InOut,"Back.easeInOut":c.Easing.Back.InOut,"Bounce.easeInOut":c.Easing.Bounce.InOut},this.game.onPause.add(this._pauseAll,this),this.game.onResume.add(this._resumeAll,this)},c.TweenManager.prototype={getAll:function(){return this._tweens},removeAll:function(){for(var a=0;ad;d++)this.removeFrom(a[d]);else if(a.type===c.GROUP&&b)for(var d=0,e=a.children.length;e>d;d++)this.removeFrom(a.children[d]);else{for(d=0,e=this._tweens.length;e>d;d++)a===this._tweens[d].target&&this.remove(this._tweens[d]);for(d=0,e=this._add.length;e>d;d++)a===this._add[d].target&&this.remove(this._add[d])}},add:function(a){a._manager=this,this._add.push(a)},create:function(a){return new c.Tween(a,this.game,this)},remove:function(a){var b=this._tweens.indexOf(a);-1!==b?this._tweens[b].pendingDelete=!0:(b=this._add.indexOf(a),-1!==b&&(this._add[b].pendingDelete=!0))},update:function(){var a=this._add.length,b=this._tweens.length;if(0===b&&0===a)return!1;for(var c=0;b>c;)this._tweens[c].update(this.game.time.time)?c++:(this._tweens.splice(c,1),b--);return a>0&&(this._tweens=this._tweens.concat(this._add),this._add.length=0),!0},isTweening:function(a){return this._tweens.some(function(b){return b.target===a})},_pauseAll:function(){for(var a=this._tweens.length-1;a>=0;a--)this._tweens[a]._pause()},_resumeAll:function(){for(var a=this._tweens.length-1;a>=0;a--)this._tweens[a]._resume()},pauseAll:function(){for(var a=this._tweens.length-1;a>=0;a--)this._tweens[a].pause()},resumeAll:function(){for(var a=this._tweens.length-1;a>=0;a--)this._tweens[a].resume(!0)}},c.TweenManager.prototype.constructor=c.TweenManager,c.Tween=function(a,b,d){this.game=b,this.target=a,this.manager=d,this.timeline=[],this.reverse=!1,this.timeScale=1,this.repeatCounter=0,this.pendingDelete=!1,this.onStart=new c.Signal,this.onLoop=new c.Signal,this.onRepeat=new c.Signal,this.onChildComplete=new c.Signal,this.onComplete=new c.Signal,this.isRunning=!1,this.current=0,this.properties={},this.chainedTween=null,this.isPaused=!1,this.frameBased=d.frameBased,this._onUpdateCallback=null,this._onUpdateCallbackContext=null,this._pausedTime=0,this._codePaused=!1,this._hasStarted=!1},c.Tween.prototype={to:function(a,b,d,e,f,g,h){return(void 0===b||0>=b)&&(b=1e3), -(void 0===d||null===d)&&(d=c.Easing.Default),void 0===e&&(e=!1),void 0===f&&(f=0),void 0===g&&(g=0),void 0===h&&(h=!1),"string"==typeof d&&this.manager.easeMap[d]&&(d=this.manager.easeMap[d]),this.isRunning?(console.warn("Phaser.Tween.to cannot be called after Tween.start"),this):(this.timeline.push(new c.TweenData(this).to(a,b,d,f,g,h)),e&&this.start(),this)},from:function(a,b,d,e,f,g,h){return void 0===b&&(b=1e3),(void 0===d||null===d)&&(d=c.Easing.Default),void 0===e&&(e=!1),void 0===f&&(f=0),void 0===g&&(g=0),void 0===h&&(h=!1),"string"==typeof d&&this.manager.easeMap[d]&&(d=this.manager.easeMap[d]),this.isRunning?(console.warn("Phaser.Tween.from cannot be called after Tween.start"),this):(this.timeline.push(new c.TweenData(this).from(a,b,d,f,g,h)),e&&this.start(),this)},start:function(a){if(void 0===a&&(a=0),null===this.game||null===this.target||0===this.timeline.length||this.isRunning)return this;for(var b=0;ba||a>this.timeline.length-1)&&(a=0),this.current=a,this.timeline[this.current].start(),this},stop:function(a){return void 0===a&&(a=!1),this.isRunning=!1,this._onUpdateCallback=null,this._onUpdateCallbackContext=null,a&&(this.onComplete.dispatch(this.target,this),this._hasStarted=!1,this.chainedTween&&this.chainedTween.start()),this.manager.remove(this),this},updateTweenData:function(a,b,c){if(0===this.timeline.length)return this;if(void 0===c&&(c=0),-1===c)for(var d=0;d0?arguments[a-1].chainedTween=arguments[a]:this.chainedTween=arguments[a];return this},loop:function(a){return void 0===a&&(a=!0),this.repeatCounter=a?-1:0,this},onUpdateCallback:function(a,b){return this._onUpdateCallback=a,this._onUpdateCallbackContext=b,this},pause:function(){this.isPaused=!0,this._codePaused=!0,this._pausedTime=this.game.time.time},_pause:function(){this._codePaused||(this.isPaused=!0,this._pausedTime=this.game.time.time)},resume:function(){if(this.isPaused){this.isPaused=!1,this._codePaused=!1;for(var a=0;a0?(this.repeatCounter--,this.timeline[this.current].start(),this.onRepeat.dispatch(this.target,this),!0):(this.isRunning=!1,this.onComplete.dispatch(this.target,this),this._hasStarted=!1,this.chainedTween&&this.chainedTween.start(),!1):(this.onChildComplete.dispatch(this.target,this),this.timeline[this.current].start(),!0)}},generateData:function(a,b){if(null===this.game||null===this.target)return null;void 0===a&&(a=60),void 0===b&&(b=[]);for(var c=0;c0?this.isRunning=!1:this.isRunning=!0,this.isFrom)for(var a in this.vStartCache)this.vStart[a]=this.vEndCache[a],this.vEnd[a]=this.vStartCache[a],this.parent.target[a]=this.vStart[a];return this.value=0,this.yoyoCounter=0,this.repeatCounter=this.repeatTotal,this},loadValues:function(){for(var a in this.parent.properties){if(this.vStart[a]=this.parent.properties[a],Array.isArray(this.vEnd[a])){if(0===this.vEnd[a].length)continue;0===this.percent&&(this.vEnd[a]=[this.vStart[a]].concat(this.vEnd[a]))}"undefined"!=typeof this.vEnd[a]?("string"==typeof this.vEnd[a]&&(this.vEnd[a]=this.vStart[a]+parseFloat(this.vEnd[a],10)),this.parent.properties[a]=this.vEnd[a]):this.vEnd[a]=this.vStart[a],this.vStartCache[a]=this.vStart[a],this.vEndCache[a]=this.vEnd[a]}return this},update:function(a){if(this.isRunning){if(a=this.startTime))return c.TweenData.PENDING;this.isRunning=!0}var b=this.parent.frameBased?this.game.time.physicsElapsedMS:this.game.time.elapsedMS;this.parent.reverse?(this.dt-=b*this.parent.timeScale,this.dt=Math.max(this.dt,0)):(this.dt+=b*this.parent.timeScale,this.dt=Math.min(this.dt,this.duration)),this.percent=this.dt/this.duration,this.value=this.easingFunction(this.percent);for(var d in this.vEnd){var e=this.vStart[d],f=this.vEnd[d];Array.isArray(f)?this.parent.target[d]=this.interpolationFunction.call(this.interpolationContext,f,this.value):this.parent.target[d]=e+(f-e)*this.value}return!this.parent.reverse&&1===this.percent||this.parent.reverse&&0===this.percent?this.repeat():c.TweenData.RUNNING},generateData:function(a){this.parent.reverse?this.dt=this.duration:this.dt=0;var b=[],c=!1,d=1/a*1e3;do{this.parent.reverse?(this.dt-=d,this.dt=Math.max(this.dt,0)):(this.dt+=d,this.dt=Math.min(this.dt,this.duration)),this.percent=this.dt/this.duration,this.value=this.easingFunction(this.percent);var e={};for(var f in this.vEnd){var g=this.vStart[f],h=this.vEnd[f];Array.isArray(h)?e[f]=this.interpolationFunction(h,this.value):e[f]=g+(h-g)*this.value}b.push(e),(!this.parent.reverse&&1===this.percent||this.parent.reverse&&0===this.percent)&&(c=!0)}while(!c);if(this.yoyo){var i=b.slice();i.reverse(),b=b.concat(i)}return b},repeat:function(){if(this.yoyo){if(this.inReverse&&0===this.repeatCounter){for(var a in this.vStartCache)this.vStart[a]=this.vStartCache[a],this.vEnd[a]=this.vEndCache[a];return this.inReverse=!1,c.TweenData.COMPLETE}this.inReverse=!this.inReverse}else if(0===this.repeatCounter)return c.TweenData.COMPLETE;if(this.inReverse)for(var a in this.vStartCache)this.vStart[a]=this.vEndCache[a],this.vEnd[a]=this.vStartCache[a];else{for(var a in this.vStartCache)this.vStart[a]=this.vStartCache[a],this.vEnd[a]=this.vEndCache[a];this.repeatCounter>0&&this.repeatCounter--}return this.startTime=this.game.time.time,this.yoyo&&this.inReverse?this.startTime+=this.yoyoDelay:this.inReverse||(this.startTime+=this.repeatDelay),this.parent.reverse?this.dt=this.duration:this.dt=0,c.TweenData.LOOPED}},c.TweenData.prototype.constructor=c.TweenData,c.Easing={Linear:{None:function(a){return a}},Quadratic:{In:function(a){return a*a},Out:function(a){return a*(2-a)},InOut:function(a){return(a*=2)<1?.5*a*a:-.5*(--a*(a-2)-1)}},Cubic:{In:function(a){return a*a*a},Out:function(a){return--a*a*a+1},InOut:function(a){return(a*=2)<1?.5*a*a*a:.5*((a-=2)*a*a+2)}},Quartic:{In:function(a){return a*a*a*a},Out:function(a){return 1- --a*a*a*a},InOut:function(a){return(a*=2)<1?.5*a*a*a*a:-.5*((a-=2)*a*a*a-2)}},Quintic:{In:function(a){return a*a*a*a*a},Out:function(a){return--a*a*a*a*a+1},InOut:function(a){return(a*=2)<1?.5*a*a*a*a*a:.5*((a-=2)*a*a*a*a+2)}},Sinusoidal:{In:function(a){return 0===a?0:1===a?1:1-Math.cos(a*Math.PI/2)},Out:function(a){return 0===a?0:1===a?1:Math.sin(a*Math.PI/2)},InOut:function(a){return 0===a?0:1===a?1:.5*(1-Math.cos(Math.PI*a))}},Exponential:{In:function(a){return 0===a?0:Math.pow(1024,a-1)},Out:function(a){return 1===a?1:1-Math.pow(2,-10*a)},InOut:function(a){return 0===a?0:1===a?1:(a*=2)<1?.5*Math.pow(1024,a-1):.5*(-Math.pow(2,-10*(a-1))+2)}},Circular:{In:function(a){return 1-Math.sqrt(1-a*a)},Out:function(a){return Math.sqrt(1- --a*a)},InOut:function(a){return(a*=2)<1?-.5*(Math.sqrt(1-a*a)-1):.5*(Math.sqrt(1-(a-=2)*a)+1)}},Elastic:{In:function(a){var b,c=.1,d=.4;return 0===a?0:1===a?1:(!c||1>c?(c=1,b=d/4):b=d*Math.asin(1/c)/(2*Math.PI),-(c*Math.pow(2,10*(a-=1))*Math.sin((a-b)*(2*Math.PI)/d)))},Out:function(a){var b,c=.1,d=.4;return 0===a?0:1===a?1:(!c||1>c?(c=1,b=d/4):b=d*Math.asin(1/c)/(2*Math.PI),c*Math.pow(2,-10*a)*Math.sin((a-b)*(2*Math.PI)/d)+1)},InOut:function(a){var b,c=.1,d=.4;return 0===a?0:1===a?1:(!c||1>c?(c=1,b=d/4):b=d*Math.asin(1/c)/(2*Math.PI),(a*=2)<1?-.5*(c*Math.pow(2,10*(a-=1))*Math.sin((a-b)*(2*Math.PI)/d)):c*Math.pow(2,-10*(a-=1))*Math.sin((a-b)*(2*Math.PI)/d)*.5+1)}},Back:{In:function(a){var b=1.70158;return a*a*((b+1)*a-b)},Out:function(a){var b=1.70158;return--a*a*((b+1)*a+b)+1},InOut:function(a){var b=2.5949095;return(a*=2)<1?.5*(a*a*((b+1)*a-b)):.5*((a-=2)*a*((b+1)*a+b)+2)}},Bounce:{In:function(a){return 1-c.Easing.Bounce.Out(1-a)},Out:function(a){return 1/2.75>a?7.5625*a*a:2/2.75>a?7.5625*(a-=1.5/2.75)*a+.75:2.5/2.75>a?7.5625*(a-=2.25/2.75)*a+.9375:7.5625*(a-=2.625/2.75)*a+.984375},InOut:function(a){return.5>a?.5*c.Easing.Bounce.In(2*a):.5*c.Easing.Bounce.Out(2*a-1)+.5}}},c.Easing.Default=c.Easing.Linear.None,c.Easing.Power0=c.Easing.Linear.None,c.Easing.Power1=c.Easing.Quadratic.Out,c.Easing.Power2=c.Easing.Cubic.Out,c.Easing.Power3=c.Easing.Quartic.Out,c.Easing.Power4=c.Easing.Quintic.Out,c.Time=function(a){this.game=a,this.time=0,this.prevTime=0,this.now=0,this.elapsed=0,this.elapsedMS=0,this.physicsElapsed=1/60,this.physicsElapsedMS=1/60*1e3,this.desiredFpsMult=1/60,this._desiredFps=60,this.suggestedFps=this.desiredFps,this.slowMotion=1,this.advancedTiming=!1,this.frames=0,this.fps=0,this.fpsMin=1e3,this.fpsMax=0,this.msMin=1e3,this.msMax=0,this.pauseDuration=0,this.timeToCall=0,this.timeExpected=0,this.events=new c.Timer(this.game,!1),this._frameCount=0,this._elapsedAccumulator=0,this._started=0,this._timeLastSecond=0,this._pauseStarted=0,this._justResumed=!1,this._timers=[]},c.Time.prototype={boot:function(){this._started=Date.now(),this.time=Date.now(),this.events.start(),this.timeExpected=this.time},add:function(a){return this._timers.push(a),a},create:function(a){void 0===a&&(a=!0);var b=new c.Timer(this.game,a);return this._timers.push(b),b},removeAll:function(){for(var a=0;aa;)this._timers[a].update(this.time)?a++:(this._timers.splice(a,1),b--)},updateAdvancedTiming:function(){this._frameCount++,this._elapsedAccumulator+=this.elapsed,this._frameCount>=2*this._desiredFps&&(this.suggestedFps=5*Math.floor(200/(this._elapsedAccumulator/this._frameCount)),this._frameCount=0,this._elapsedAccumulator=0),this.msMin=Math.min(this.msMin,this.elapsed),this.msMax=Math.max(this.msMax,this.elapsed),this.frames++,this.now>this._timeLastSecond+1e3&&(this.fps=Math.round(1e3*this.frames/(this.now-this._timeLastSecond)),this.fpsMin=Math.min(this.fpsMin,this.fps),this.fpsMax=Math.max(this.fpsMax,this.fps),this._timeLastSecond=this.now,this.frames=0)},gamePaused:function(){this._pauseStarted=Date.now(),this.events.pause();for(var a=this._timers.length;a--;)this._timers[a]._pause()},gameResumed:function(){this.time=Date.now(),this.pauseDuration=this.time-this._pauseStarted,this.events.resume();for(var a=this._timers.length;a--;)this._timers[a]._resume()},totalElapsedSeconds:function(){return.001*(this.time-this._started)},elapsedSince:function(a){return this.time-a},elapsedSecondsSince:function(a){return.001*(this.time-a)},reset:function(){this._started=this.time,this.removeAll()}},Object.defineProperty(c.Time.prototype,"desiredFps",{get:function(){return this._desiredFps},set:function(a){this._desiredFps=a,this.physicsElapsed=1/a,this.physicsElapsedMS=1e3*this.physicsElapsed,this.desiredFpsMult=1/a}}),c.Time.prototype.constructor=c.Time,c.Timer=function(a,b){void 0===b&&(b=!0),this.game=a,this.running=!1,this.autoDestroy=b,this.expired=!1,this.elapsed=0,this.events=[],this.onComplete=new c.Signal,this.nextTick=0,this.timeCap=1e3,this.paused=!1,this._codePaused=!1,this._started=0,this._pauseStarted=0,this._pauseTotal=0,this._now=Date.now(),this._len=0,this._marked=0,this._i=0,this._diff=0,this._newTick=0},c.Timer.MINUTE=6e4,c.Timer.SECOND=1e3,c.Timer.HALF=500,c.Timer.QUARTER=250,c.Timer.prototype={create:function(a,b,d,e,f,g){a=Math.round(a);var h=a;h+=0===this._now?this.game.time.time:this._now;var i=new c.TimerEvent(this,a,h,d,b,e,f,g);return this.events.push(i),this.order(),this.expired=!1,i},add:function(a,b,c){return this.create(a,!1,0,b,c,Array.prototype.slice.call(arguments,3))},repeat:function(a,b,c,d){return this.create(a,!1,b,c,d,Array.prototype.slice.call(arguments,4))},loop:function(a,b,c){return this.create(a,!0,0,b,c,Array.prototype.slice.call(arguments,3))},start:function(a){if(!this.running){this._started=this.game.time.time+(a||0),this.running=!0;for(var b=0;b0&&(this.events.sort(this.sortHandler),this.nextTick=this.events[0].tick)},sortHandler:function(a,b){return a.tickb.tick?1:0},clearPendingEvents:function(){for(this._i=this.events.length;this._i--;)this.events[this._i].pendingDelete&&this.events.splice(this._i,1);this._len=this.events.length,this._i=0},update:function(a){if(this.paused)return!0;if(this.elapsed=a-this._now,this._now=a,this.elapsed>this.timeCap&&this.adjustEvents(a-this.elapsed),this._marked=0,this.clearPendingEvents(),this.running&&this._now>=this.nextTick&&this._len>0){for(;this._i=this.events[this._i].tick&&!this.events[this._i].pendingDelete;)this._newTick=this._now+this.events[this._i].delay-(this._now-this.events[this._i].tick),this._newTick<0&&(this._newTick=this._now+this.events[this._i].delay),this.events[this._i].loop===!0?(this.events[this._i].tick=this._newTick,this.events[this._i].callback.apply(this.events[this._i].callbackContext,this.events[this._i].args)):this.events[this._i].repeatCount>0?(this.events[this._i].repeatCount--,this.events[this._i].tick=this._newTick,this.events[this._i].callback.apply(this.events[this._i].callbackContext,this.events[this._i].args)):(this._marked++,this.events[this._i].pendingDelete=!0,this.events[this._i].callback.apply(this.events[this._i].callbackContext,this.events[this._i].args)),this._i++;this.events.length>this._marked?this.order():(this.expired=!0,this.onComplete.dispatch(this))}return this.expired&&this.autoDestroy?!1:!0},pause:function(){this.running&&(this._codePaused=!0,this.paused||(this._pauseStarted=this.game.time.time,this.paused=!0))},_pause:function(){!this.paused&&this.running&&(this._pauseStarted=this.game.time.time,this.paused=!0)},adjustEvents:function(a){for(var b=0;bc&&(c=0),this.events[b].tick=this._now+c}var d=this.nextTick-a;0>d?this.nextTick=this._now:this.nextTick=this._now+d},resume:function(){if(this.paused){var a=this.game.time.time;this._pauseTotal+=a-this._now,this._now=a,this.adjustEvents(this._pauseStarted),this.paused=!1,this._codePaused=!1}},_resume:function(){this._codePaused||this.resume()},removeAll:function(){this.onComplete.removeAll(),this.events.length=0,this._len=0,this._i=0},destroy:function(){this.onComplete.removeAll(),this.running=!1,this.events=[],this._len=0,this._i=0}},Object.defineProperty(c.Timer.prototype,"next",{get:function(){return this.nextTick}}),Object.defineProperty(c.Timer.prototype,"duration",{get:function(){return this.running&&this.nextTick>this._now?this.nextTick-this._now:0}}),Object.defineProperty(c.Timer.prototype,"length",{get:function(){return this.events.length}}),Object.defineProperty(c.Timer.prototype,"ms",{get:function(){return this.running?this._now-this._started-this._pauseTotal:0}}),Object.defineProperty(c.Timer.prototype,"seconds",{get:function(){return this.running?.001*this.ms:0}}),c.Timer.prototype.constructor=c.Timer,c.TimerEvent=function(a,b,c,d,e,f,g,h){this.timer=a,this.delay=b,this.tick=c,this.repeatCount=d-1,this.loop=e,this.callback=f,this.callbackContext=g,this.args=h,this.pendingDelete=!1},c.TimerEvent.prototype.constructor=c.TimerEvent,c.AnimationManager=function(a){this.sprite=a,this.game=a.game,this.currentFrame=null,this.currentAnim=null,this.updateIfVisible=!0,this.isLoaded=!1,this._frameData=null,this._anims={},this._outputFrames=[]},c.AnimationManager.prototype={loadFrameData:function(a,b){if(void 0===a)return!1;if(this.isLoaded)for(var c in this._anims)this._anims[c].updateFrameData(a);return this._frameData=a,void 0===b||null===b?this.frame=0:"string"==typeof b?this.frameName=b:this.frame=b,this.isLoaded=!0,!0},copyFrameData:function(a,b){if(this._frameData=a.clone(),this.isLoaded)for(var c in this._anims)this._anims[c].updateFrameData(this._frameData);return void 0===b||null===b?this.frame=0:"string"==typeof b?this.frameName=b:this.frame=b,this.isLoaded=!0,!0},add:function(a,b,d,e,f){return b=b||[],d=d||60,void 0===e&&(e=!1),void 0===f&&(f=b&&"number"==typeof b[0]?!0:!1),this._outputFrames=[],this._frameData.getFrameIndexes(b,f,this._outputFrames),this._anims[a]=new c.Animation(this.game,this.sprite,a,this._frameData,this._outputFrames,d,e),this.currentAnim=this._anims[a],this.sprite.tilingTexture&&(this.sprite.refreshTexture=!0),this._anims[a]},validateFrames:function(a,b){void 0===b&&(b=!0);for(var c=0;cthis._frameData.total)return!1}else if(this._frameData.checkFrameName(a[c])===!1)return!1;return!0},play:function(a,b,c,d){return this._anims[a]?this.currentAnim===this._anims[a]?this.currentAnim.isPlaying===!1?(this.currentAnim.paused=!1,this.currentAnim.play(b,c,d)):this.currentAnim:(this.currentAnim&&this.currentAnim.isPlaying&&this.currentAnim.stop(),this.currentAnim=this._anims[a],this.currentAnim.paused=!1,this.currentFrame=this.currentAnim.currentFrame,this.currentAnim.play(b,c,d)):void 0},stop:function(a,b){void 0===b&&(b=!1),!this.currentAnim||"string"==typeof a&&a!==this.currentAnim.name||this.currentAnim.stop(b)},update:function(){return this.updateIfVisible&&!this.sprite.visible?!1:this.currentAnim&&this.currentAnim.update()?(this.currentFrame=this.currentAnim.currentFrame,!0):!1},next:function(a){this.currentAnim&&(this.currentAnim.next(a),this.currentFrame=this.currentAnim.currentFrame)},previous:function(a){this.currentAnim&&(this.currentAnim.previous(a),this.currentFrame=this.currentAnim.currentFrame)},getAnimation:function(a){return"string"==typeof a&&this._anims[a]?this._anims[a]:null},refreshFrame:function(){this.sprite.setTexture(PIXI.TextureCache[this.currentFrame.uuid])},destroy:function(){var a=null;for(var a in this._anims)this._anims.hasOwnProperty(a)&&this._anims[a].destroy();this._anims={},this._outputFrames=[],this._frameData=null,this.currentAnim=null,this.currentFrame=null,this.sprite=null,this.game=null}},c.AnimationManager.prototype.constructor=c.AnimationManager,Object.defineProperty(c.AnimationManager.prototype,"frameData",{get:function(){return this._frameData}}),Object.defineProperty(c.AnimationManager.prototype,"frameTotal",{get:function(){return this._frameData.total}}),Object.defineProperty(c.AnimationManager.prototype,"paused",{get:function(){return this.currentAnim.isPaused},set:function(a){this.currentAnim.paused=a}}),Object.defineProperty(c.AnimationManager.prototype,"name",{get:function(){return this.currentAnim?this.currentAnim.name:void 0}}),Object.defineProperty(c.AnimationManager.prototype,"frame",{get:function(){return this.currentFrame?this.currentFrame.index:void 0},set:function(a){"number"==typeof a&&this._frameData&&null!==this._frameData.getFrame(a)&&(this.currentFrame=this._frameData.getFrame(a),this.currentFrame&&this.sprite.setFrame(this.currentFrame))}}),Object.defineProperty(c.AnimationManager.prototype,"frameName",{get:function(){return this.currentFrame?this.currentFrame.name:void 0},set:function(a){"string"==typeof a&&this._frameData&&null!==this._frameData.getFrameByName(a)?(this.currentFrame=this._frameData.getFrameByName(a),this.currentFrame&&(this._frameIndex=this.currentFrame.index,this.sprite.setFrame(this.currentFrame))):console.warn("Cannot set frameName: "+a)}}),c.Animation=function(a,b,d,e,f,g,h){void 0===h&&(h=!1),this.game=a,this._parent=b,this._frameData=e,this.name=d,this._frames=[],this._frames=this._frames.concat(f),this.delay=1e3/g,this.loop=h,this.loopCount=0,this.killOnComplete=!1,this.isFinished=!1,this.isPlaying=!1,this.isPaused=!1,this._pauseStartTime=0,this._frameIndex=0,this._frameDiff=0,this._frameSkip=1,this.currentFrame=this._frameData.getFrame(this._frames[this._frameIndex]),this.onStart=new c.Signal,this.onUpdate=null,this.onComplete=new c.Signal,this.onLoop=new c.Signal,this.isReversed=!1,this.game.onPause.add(this.onPause,this),this.game.onResume.add(this.onResume,this)},c.Animation.prototype={play:function(a,b,c){return"number"==typeof a&&(this.delay=1e3/a),"boolean"==typeof b&&(this.loop=b),"undefined"!=typeof c&&(this.killOnComplete=c),this.isPlaying=!0,this.isFinished=!1,this.paused=!1,this.loopCount=0,this._timeLastFrame=this.game.time.time,this._timeNextFrame=this.game.time.time+this.delay,this._frameIndex=this.isReversed?this._frames.length-1:0,this.updateCurrentFrame(!1,!0),this._parent.events.onAnimationStart$dispatch(this._parent,this),this.onStart.dispatch(this._parent,this),this._parent.animations.currentAnim=this,this._parent.animations.currentFrame=this.currentFrame,this},restart:function(){this.isPlaying=!0,this.isFinished=!1,this.paused=!1,this.loopCount=0,this._timeLastFrame=this.game.time.time,this._timeNextFrame=this.game.time.time+this.delay,this._frameIndex=0,this.currentFrame=this._frameData.getFrame(this._frames[this._frameIndex]),this._parent.setFrame(this.currentFrame),this._parent.animations.currentAnim=this,this._parent.animations.currentFrame=this.currentFrame,this.onStart.dispatch(this._parent,this)},reverse:function(){return this.reversed=!this.reversed,this},reverseOnce:function(){return this.onComplete.addOnce(this.reverse.bind(this)),this.reverse()},setFrame:function(a,b){var c;if(void 0===b&&(b=!1),"string"==typeof a)for(var d=0;d=this._timeNextFrame?(this._frameSkip=1,this._frameDiff=this.game.time.time-this._timeNextFrame,this._timeLastFrame=this.game.time.time,this._frameDiff>this.delay&&(this._frameSkip=Math.floor(this._frameDiff/this.delay),this._frameDiff-=this._frameSkip*this.delay),this._timeNextFrame=this.game.time.time+(this.delay-this._frameDiff),this.isReversed?this._frameIndex-=this._frameSkip:this._frameIndex+=this._frameSkip,!this.isReversed&&this._frameIndex>=this._frames.length||this.isReversed&&this._frameIndex<=-1?this.loop?(this._frameIndex=Math.abs(this._frameIndex)%this._frames.length,this.isReversed&&(this._frameIndex=this._frames.length-1-this._frameIndex),this.currentFrame=this._frameData.getFrame(this._frames[this._frameIndex]),this.currentFrame&&this._parent.setFrame(this.currentFrame),this.loopCount++,this._parent.events.onAnimationLoop$dispatch(this._parent,this),this.onLoop.dispatch(this._parent,this),this.onUpdate?(this.onUpdate.dispatch(this,this.currentFrame),!!this._frameData):!0):(this.complete(),!1):this.updateCurrentFrame(!0)):!1},updateCurrentFrame:function(a,b){if(void 0===b&&(b=!1),!this._frameData)return!1;var c=this.currentFrame.index;return this.currentFrame=this._frameData.getFrame(this._frames[this._frameIndex]),this.currentFrame&&(b||!b&&c!==this.currentFrame.index)&&this._parent.setFrame(this.currentFrame),this.onUpdate&&a?(this.onUpdate.dispatch(this,this.currentFrame),!!this._frameData):!0},next:function(a){void 0===a&&(a=1);var b=this._frameIndex+a;b>=this._frames.length&&(this.loop?b%=this._frames.length:b=this._frames.length-1),b!==this._frameIndex&&(this._frameIndex=b,this.updateCurrentFrame(!0))},previous:function(a){void 0===a&&(a=1);var b=this._frameIndex-a;0>b&&(this.loop?b=this._frames.length+b:b++),b!==this._frameIndex&&(this._frameIndex=b,this.updateCurrentFrame(!0))},updateFrameData:function(a){this._frameData=a,this.currentFrame=this._frameData?this._frameData.getFrame(this._frames[this._frameIndex%this._frames.length]):null},destroy:function(){this._frameData&&(this.game.onPause.remove(this.onPause,this),this.game.onResume.remove(this.onResume,this),this.game=null,this._parent=null,this._frames=null,this._frameData=null,this.currentFrame=null,this.isPlaying=!1,this.onStart.dispose(),this.onLoop.dispose(),this.onComplete.dispose(),this.onUpdate&&this.onUpdate.dispose())},complete:function(){this._frameIndex=this._frames.length-1,this.currentFrame=this._frameData.getFrame(this._frames[this._frameIndex]),this.isPlaying=!1,this.isFinished=!0,this.paused=!1,this._parent.events.onAnimationComplete$dispatch(this._parent,this),this.onComplete.dispatch(this._parent,this),this.killOnComplete&&this._parent.kill()}},c.Animation.prototype.constructor=c.Animation,Object.defineProperty(c.Animation.prototype,"paused",{get:function(){return this.isPaused},set:function(a){this.isPaused=a,a?this._pauseStartTime=this.game.time.time:this.isPlaying&&(this._timeNextFrame=this.game.time.time+this.delay)}}),Object.defineProperty(c.Animation.prototype,"reversed",{get:function(){return this.isReversed},set:function(a){this.isReversed=a}}),Object.defineProperty(c.Animation.prototype,"frameTotal",{get:function(){return this._frames.length}}),Object.defineProperty(c.Animation.prototype,"frame",{get:function(){return null!==this.currentFrame?this.currentFrame.index:this._frameIndex},set:function(a){this.currentFrame=this._frameData.getFrame(this._frames[a]),null!==this.currentFrame&&(this._frameIndex=a,this._parent.setFrame(this.currentFrame),this.onUpdate&&this.onUpdate.dispatch(this,this.currentFrame))}}),Object.defineProperty(c.Animation.prototype,"speed",{get:function(){return Math.round(1e3/this.delay)},set:function(a){a>=1&&(this.delay=1e3/a)}}),Object.defineProperty(c.Animation.prototype,"enableUpdate",{get:function(){return null!==this.onUpdate},set:function(a){a&&null===this.onUpdate?this.onUpdate=new c.Signal:a||null===this.onUpdate||(this.onUpdate.dispose(),this.onUpdate=null)}}),c.Animation.generateFrameNames=function(a,b,d,e,f){void 0===e&&(e="");var g=[],h="";if(d>b)for(var i=b;d>=i;i++)h="number"==typeof f?c.Utils.pad(i.toString(),f,"0",1):i.toString(),h=a+h+e,g.push(h);else for(var i=b;i>=d;i--)h="number"==typeof f?c.Utils.pad(i.toString(),f,"0",1):i.toString(),h=a+h+e,g.push(h);return g},c.Frame=function(a,b,d,e,f,g){this.index=a,this.x=b,this.y=d,this.width=e,this.height=f,this.name=g,this.centerX=Math.floor(e/2),this.centerY=Math.floor(f/2),this.distance=c.Math.distance(0,0,e,f),this.rotated=!1,this.rotationDirection="cw",this.trimmed=!1,this.sourceSizeW=e,this.sourceSizeH=f,this.spriteSourceSizeX=0,this.spriteSourceSizeY=0,this.spriteSourceSizeW=0,this.spriteSourceSizeH=0,this.right=this.x+this.width,this.bottom=this.y+this.height},c.Frame.prototype={resize:function(a,b){this.width=a,this.height=b,this.centerX=Math.floor(a/2),this.centerY=Math.floor(b/2),this.distance=c.Math.distance(0,0,a,b),this.sourceSizeW=a,this.sourceSizeH=b,this.right=this.x+a,this.bottom=this.y+b},setTrim:function(a,b,c,d,e,f,g){this.trimmed=a,a&&(this.sourceSizeW=b,this.sourceSizeH=c,this.centerX=Math.floor(b/2),this.centerY=Math.floor(c/2),this.spriteSourceSizeX=d,this.spriteSourceSizeY=e,this.spriteSourceSizeW=f,this.spriteSourceSizeH=g)},clone:function(){var a=new c.Frame(this.index,this.x,this.y,this.width,this.height,this.name);for(var b in this)this.hasOwnProperty(b)&&(a[b]=this[b]);return a},getRect:function(a){return void 0===a?a=new c.Rectangle(this.x,this.y,this.width,this.height):a.setTo(this.x,this.y,this.width,this.height),a}},c.Frame.prototype.constructor=c.Frame, -c.FrameData=function(){this._frames=[],this._frameNames=[]},c.FrameData.prototype={addFrame:function(a){return a.index=this._frames.length,this._frames.push(a),""!==a.name&&(this._frameNames[a.name]=a.index),a},getFrame:function(a){return a>=this._frames.length&&(a=0),this._frames[a]},getFrameByName:function(a){return"number"==typeof this._frameNames[a]?this._frames[this._frameNames[a]]:null},checkFrameName:function(a){return null==this._frameNames[a]?!1:!0},clone:function(){for(var a=new c.FrameData,b=0;b=d;d++)c.push(this._frames[d]);return c},getFrames:function(a,b,c){if(void 0===b&&(b=!0),void 0===c&&(c=[]),void 0===a||0===a.length)for(var d=0;d=d&&(d=Math.floor(-j/Math.min(-1,d))),0>=e&&(e=Math.floor(-k/Math.min(-1,e)));var l=Math.floor((j-g)/(d+h)),m=Math.floor((k-g)/(e+h)),n=l*m;if(-1!==f&&(n=f),0===j||0===k||d>j||e>k||0===n)return console.warn("Phaser.AnimationParser.spriteSheet: '"+b+"'s width/height zero or width/height < given frameWidth/frameHeight"),null;for(var o=new c.FrameData,p=g,q=g,r=0;n>r;r++)o.addFrame(new c.Frame(r,p,q,d,e,"")),p+=d+h,p+d>j&&(p=g,q+=e+h);return o},JSONData:function(a,b){if(!b.frames)return console.warn("Phaser.AnimationParser.JSONData: Invalid Texture Atlas JSON given, missing 'frames' array"),void console.log(b);for(var d,e=new c.FrameData,f=b.frames,g=0;g tag");for(var d,e,f,g,h,i,j,k,l,m,n,o=new c.FrameData,p=b.getElementsByTagName("SubTexture"),q=0;q-1},getAssetIndex:function(a,b){for(var c=-1,d=0;d-1?{index:c,file:this._fileList[c]}:!1},reset:function(a,b){void 0===b&&(b=!1),this.resetLocked||(a&&(this.preloadSprite=null),this.isLoading=!1,this._processingHead=0,this._fileList.length=0,this._flightQueue.length=0,this._fileLoadStarted=!1,this._totalFileCount=0,this._totalPackCount=0,this._loadedPackCount=0,this._loadedFileCount=0,b&&(this.onLoadStart.removeAll(),this.onLoadComplete.removeAll(),this.onPackComplete.removeAll(),this.onFileStart.removeAll(),this.onFileComplete.removeAll(),this.onFileError.removeAll()))},addToFileList:function(a,b,c,d,e,f){if(void 0===e&&(e=!1),void 0===b||""===b)return console.warn("Phaser.Loader: Invalid or no key given of type "+a),this;if(void 0===c||null===c){if(!f)return console.warn("Phaser.Loader: No URL given for file type: "+a+" key: "+b),this;c=b+f}var g={type:a,key:b,path:this.path,url:c,syncPoint:this._withSyncPointDepth>0,data:null,loading:!1,loaded:!1,error:!1};if(d)for(var h in d)g[h]=d[h];var i=this.getAssetIndex(a,b);if(e&&i>-1){var j=this._fileList[i];j.loading||j.loaded?(this._fileList.push(g),this._totalFileCount++):this._fileList[i]=g}else-1===i&&(this._fileList.push(g),this._totalFileCount++);return this},replaceInFileList:function(a,b,c,d){return this.addToFileList(a,b,c,d,!0)},pack:function(a,b,c,d){if(void 0===b&&(b=null),void 0===c&&(c=null),void 0===d&&(d=null),!b&&!c)return console.warn("Phaser.Loader.pack - Both url and data are null. One must be set."),this;var e={type:"packfile",key:a,url:b,path:this.path,syncPoint:!0,data:null,loading:!1,loaded:!1,error:!1,callbackContext:d};c&&("string"==typeof c&&(c=JSON.parse(c)),e.data=c||{},e.loaded=!0);for(var f=0;f=e||d&&this._loadedPackCount===this._totalPackCount)break}if(this.updateProgress(),this._processingHead>=this._fileList.length)this.finishedLoading();else if(!this._flightQueue.length){console.warn("Phaser.Loader - aborting: processing queue empty, loading may have stalled");var f=this;setTimeout(function(){f.finishedLoading(!0)},2e3)}},finishedLoading:function(a){this.hasLoaded||(this.hasLoaded=!0,this.isLoading=!1,a||this._fileLoadStarted||(this._fileLoadStarted=!0,this.onLoadStart.dispatch()),this.onLoadComplete.dispatch(),this.game.state.loadComplete(),this.reset())},asyncComplete:function(a,b){void 0===b&&(b=""),a.loaded=!0,a.error=!!b,b&&(a.errorMessage=b,console.warn("Phaser.Loader - "+a.type+"["+a.key+"]: "+b)),this.processLoadQueue()},processPack:function(a){var b=a.data[a.key];if(!b)return void console.warn("Phaser.Loader - "+a.key+": pack has data, but not for pack key");for(var d=0;d=400&&f.status<=599?e.call(g,a,f):d.call(g,a,f)}catch(b){g.hasLoaded?window.console&&console.error(b):g.asyncComplete(a,b.message||"Exception")}},f.onerror=function(){try{return e.call(g,a,f)}catch(b){g.hasLoaded?window.console&&console.error(b):g.asyncComplete(a,b.message||"Exception")}},a.requestObject=f,a.requestUrl=b,f.send()},xhrLoadWithXDR:function(a,b,c,d,e){ -this._warnedAboutXDomainRequest||this.game.device.ie&&!(this.game.device.ieVersion>=10)||(this._warnedAboutXDomainRequest=!0,console.warn("Phaser.Loader - using XDomainRequest outside of IE 9"));var f=new window.XDomainRequest;f.open("GET",b,!0),f.responseType=c,f.timeout=3e3,e=e||this.fileError;var g=this;f.onerror=function(){try{return e.call(g,a,f)}catch(b){g.asyncComplete(a,b.message||"Exception")}},f.ontimeout=function(){try{return e.call(g,a,f)}catch(b){g.asyncComplete(a,b.message||"Exception")}},f.onprogress=function(){},f.onload=function(){try{return 4==f.readyState&&f.status>=400&&f.status<=599?e.call(g,a,f):d.call(g,a,f)}catch(b){g.asyncComplete(a,b.message||"Exception")}},a.requestObject=f,a.requestUrl=b,setTimeout(function(){f.send()},0)},getVideoURL:function(a){for(var b=0;b=0&&(d=d.substr(0,d.indexOf("?")));var e=d.substr((Math.max(0,d.lastIndexOf("."))||1/0)+1);if(c=e.toLowerCase(),this.game.device.canPlayVideo(c))return a[b]}}return null},getAudioURL:function(a){if(this.game.sound.noAudio)return null;for(var b=0;b=0&&(d=d.substr(0,d.indexOf("?")));var e=d.substr((Math.max(0,d.lastIndexOf("."))||1/0)+1);if(c=e.toLowerCase(),this.game.device.canPlayAudio(c))return a[b]}}return null},fileError:function(a,b,c){var d=a.requestUrl||this.transformUrl(a.url,a),e="error loading asset from URL "+d;!c&&b&&(c=b.status),c&&(e=e+" ("+c+")"),this.asyncComplete(a,e)},fileComplete:function(a,b){var d=!0;switch(a.type){case"packfile":var e=JSON.parse(b.responseText);a.data=e||{};break;case"image":this.cache.addImage(a.key,a.url,a.data);break;case"spritesheet":this.cache.addSpriteSheet(a.key,a.url,a.data,a.frameWidth,a.frameHeight,a.frameMax,a.margin,a.spacing);break;case"textureatlas":if(null==a.atlasURL)this.cache.addTextureAtlas(a.key,a.url,a.data,a.atlasData,a.format);else if(d=!1,a.format==c.Loader.TEXTURE_ATLAS_JSON_ARRAY||a.format==c.Loader.TEXTURE_ATLAS_JSON_HASH||a.format==c.Loader.TEXTURE_ATLAS_JSON_PYXEL)this.xhrLoad(a,this.transformUrl(a.atlasURL,a),"text",this.jsonLoadComplete);else{if(a.format!=c.Loader.TEXTURE_ATLAS_XML_STARLING)throw new Error("Phaser.Loader. Invalid Texture Atlas format: "+a.format);this.xhrLoad(a,this.transformUrl(a.atlasURL,a),"text",this.xmlLoadComplete)}break;case"bitmapfont":a.atlasURL?(d=!1,this.xhrLoad(a,this.transformUrl(a.atlasURL,a),"text",function(a,b){var c;try{c=JSON.parse(b.responseText)}catch(d){}c?(a.atlasType="json",this.jsonLoadComplete(a,b)):(a.atlasType="xml",this.xmlLoadComplete(a,b))})):this.cache.addBitmapFont(a.key,a.url,a.data,a.atlasData,a.atlasType,a.xSpacing,a.ySpacing);break;case"video":if(a.asBlob)try{a.data=b.response}catch(f){throw new Error("Phaser.Loader. Unable to parse video file as Blob: "+a.key)}this.cache.addVideo(a.key,a.url,a.data,a.asBlob);break;case"audio":this.game.sound.usingWebAudio?(a.data=b.response,this.cache.addSound(a.key,a.url,a.data,!0,!1),a.autoDecode&&this.game.sound.decode(a.key)):this.cache.addSound(a.key,a.url,a.data,!1,!0);break;case"text":a.data=b.responseText,this.cache.addText(a.key,a.url,a.data);break;case"shader":a.data=b.responseText,this.cache.addShader(a.key,a.url,a.data);break;case"physics":var e=JSON.parse(b.responseText);this.cache.addPhysicsData(a.key,a.url,e,a.format);break;case"script":a.data=document.createElement("script"),a.data.language="javascript",a.data.type="text/javascript",a.data.defer=!1,a.data.text=b.responseText,document.head.appendChild(a.data),a.callback&&(a.data=a.callback.call(a.callbackContext,a.key,b.responseText));break;case"binary":a.callback?a.data=a.callback.call(a.callbackContext,a.key,b.response):a.data=b.response,this.cache.addBinary(a.key,a.data)}d&&this.asyncComplete(a)},jsonLoadComplete:function(a,b){var c=JSON.parse(b.responseText);"tilemap"===a.type?this.cache.addTilemap(a.key,a.url,c,a.format):"bitmapfont"===a.type?this.cache.addBitmapFont(a.key,a.url,a.data,c,a.atlasType,a.xSpacing,a.ySpacing):"json"===a.type?this.cache.addJSON(a.key,a.url,c):this.cache.addTextureAtlas(a.key,a.url,a.data,c,a.format),this.asyncComplete(a)},csvLoadComplete:function(a,b){var c=b.responseText;this.cache.addTilemap(a.key,a.url,c,a.format),this.asyncComplete(a)},xmlLoadComplete:function(a,b){var c=b.responseText,d=this.parseXml(c);if(!d){var e=b.responseType||b.contentType;return console.warn("Phaser.Loader - "+a.key+": invalid XML ("+e+")"),void this.asyncComplete(a,"invalid XML")}"bitmapfont"===a.type?this.cache.addBitmapFont(a.key,a.url,a.data,d,a.atlasType,a.xSpacing,a.ySpacing):"textureatlas"===a.type?this.cache.addTextureAtlas(a.key,a.url,a.data,d,a.format):"xml"===a.type&&this.cache.addXML(a.key,a.url,d),this.asyncComplete(a)},parseXml:function(a){var b;try{if(window.DOMParser){var c=new DOMParser;b=c.parseFromString(a,"text/xml")}else b=new ActiveXObject("Microsoft.XMLDOM"),b.async="false",b.loadXML(a)}catch(d){b=null}return b&&b.documentElement&&!b.getElementsByTagName("parsererror").length?b:null},updateProgress:function(){this.preloadSprite&&(0===this.preloadSprite.direction?this.preloadSprite.rect.width=Math.floor(this.preloadSprite.width/100*this.progress):this.preloadSprite.rect.height=Math.floor(this.preloadSprite.height/100*this.progress),this.preloadSprite.sprite?this.preloadSprite.sprite.updateCrop():this.preloadSprite=null)},totalLoadedFiles:function(){return this._loadedFileCount},totalQueuedFiles:function(){return this._totalFileCount-this._loadedFileCount},totalLoadedPacks:function(){return this._totalPackCount},totalQueuedPacks:function(){return this._totalPackCount-this._loadedPackCount}},Object.defineProperty(c.Loader.prototype,"progressFloat",{get:function(){var a=this._loadedFileCount/this._totalFileCount*100;return c.Math.clamp(a||0,0,100)}}),Object.defineProperty(c.Loader.prototype,"progress",{get:function(){return Math.round(this.progressFloat)}}),c.Loader.prototype.constructor=c.Loader,c.LoaderParser={bitmapFont:function(a,b,c,d){return this.xmlBitmapFont(a,b,c,d)},xmlBitmapFont:function(a,b,c,d){var e={},f=a.getElementsByTagName("info")[0],g=a.getElementsByTagName("common")[0];e.font=f.getAttribute("face"),e.size=parseInt(f.getAttribute("size"),10),e.lineHeight=parseInt(g.getAttribute("lineHeight"),10)+d,e.chars={};for(var h=a.getElementsByTagName("char"),i=0;i=this.durationMS&&(this.usingWebAudio?this.loop?(this.onLoop.dispatch(this),this.isPlaying=!1,""===this.currentMarker?(this.currentTime=0,this.startTime=this.game.time.time,this.isPlaying=!0):(this.onMarkerComplete.dispatch(this.currentMarker,this),this.play(this.currentMarker,0,this.volume,!0,!0))):""!==this.currentMarker&&this.stop():this.loop?(this.onLoop.dispatch(this),""===this.currentMarker&&(this.currentTime=0,this.startTime=this.game.time.time),this.isPlaying=!1,this.play(this.currentMarker,0,this.volume,!0,!0)):this.stop())))):void this.destroy()},loopFull:function(a){this.play(null,0,a,!0)},play:function(a,b,c,d,e){if((void 0===a||a===!1||null===a)&&(a=""),void 0===e&&(e=!0),this.isPlaying&&!this.allowMultiple&&!e&&!this.override)return this;if(this._sound&&this.isPlaying&&!this.allowMultiple&&(this.override||e))if(this.usingWebAudio){if(void 0===this._sound.stop)this._sound.noteOff(0);else try{this._sound.stop(0)}catch(f){}this.externalNode?this._sound.disconnect(this.externalNode):this._sound.disconnect(this.gainNode)}else this.usingAudioTag&&(this._sound.pause(),this._sound.currentTime=0);if(""===a&&Object.keys(this.markers).length>0)return this;if(""!==a){if(this.currentMarker=a,!this.markers[a])return this;this.position=this.markers[a].start,this.volume=this.markers[a].volume,this.loop=this.markers[a].loop,this.duration=this.markers[a].duration,this.durationMS=this.markers[a].durationMS,"undefined"!=typeof c&&(this.volume=c),"undefined"!=typeof d&&(this.loop=d),this._tempMarker=a,this._tempPosition=this.position,this._tempVolume=this.volume,this._tempLoop=this.loop}else b=b||0,void 0===c&&(c=this._volume),void 0===d&&(d=this.loop),this.position=Math.max(0,b),this.volume=c,this.loop=d,this.duration=0,this.durationMS=0,this._tempMarker=a,this._tempPosition=b,this._tempVolume=c,this._tempLoop=d;return this.usingWebAudio?this.game.cache.isSoundDecoded(this.key)?(this._sound=this.context.createBufferSource(),this.externalNode?this._sound.connect(this.externalNode):this._sound.connect(this.gainNode),this._buffer=this.game.cache.getSoundData(this.key),this._sound.buffer=this._buffer,this.loop&&""===a&&(this._sound.loop=!0),this.loop||""!==a||(this._sound.onended=this.onEndedHandler.bind(this)),this.totalDuration=this._sound.buffer.duration,0===this.duration&&(this.duration=this.totalDuration,this.durationMS=Math.ceil(1e3*this.totalDuration)),void 0===this._sound.start?this._sound.noteGrainOn(0,this.position,this.duration):this.loop&&""===a?this._sound.start(0,0):this._sound.start(0,this.position,this.duration),this.isPlaying=!0,this.startTime=this.game.time.time,this.currentTime=0,this.stopTime=this.startTime+this.durationMS,this.onPlay.dispatch(this)):(this.pendingPlayback=!0,this.game.cache.getSound(this.key)&&this.game.cache.getSound(this.key).isDecoding===!1&&this.game.sound.decode(this.key,this)):this.game.cache.getSound(this.key)&&this.game.cache.getSound(this.key).locked?(this.game.cache.reloadSound(this.key),this.pendingPlayback=!0):this._sound&&(this.game.device.cocoonJS||4===this._sound.readyState)?(this._sound.play(),this.totalDuration=this._sound.duration,0===this.duration&&(this.duration=this.totalDuration,this.durationMS=1e3*this.totalDuration),this._sound.currentTime=this.position,this._sound.muted=this._muted,this._muted||this.game.sound.mute?this._sound.volume=0:this._sound.volume=this._volume,this.isPlaying=!0,this.startTime=this.game.time.time,this.currentTime=0,this.stopTime=this.startTime+this.durationMS,this.onPlay.dispatch(this)):this.pendingPlayback=!0,this},restart:function(a,b,c,d){a=a||"",b=b||0,c=c||1,void 0===d&&(d=!1),this.play(a,b,c,d,!0)},pause:function(){this.isPlaying&&this._sound&&(this.paused=!0,this.pausedPosition=this.currentTime,this.pausedTime=this.game.time.time,this._tempPause=this._sound.currentTime,this.onPause.dispatch(this),this.stop())},resume:function(){if(this.paused&&this._sound){if(this.usingWebAudio){var a=Math.max(0,this.position+this.pausedPosition/1e3);this._sound=this.context.createBufferSource(),this._sound.buffer=this._buffer,this.externalNode?this._sound.connect(this.externalNode):this._sound.connect(this.gainNode),this.loop&&(this._sound.loop=!0),this.loop||""!==this.currentMarker||(this._sound.onended=this.onEndedHandler.bind(this));var b=this.duration-this.pausedPosition/1e3;void 0===this._sound.start?this._sound.noteGrainOn(0,a,b):this.loop&&this.game.device.chrome?42===this.game.device.chromeVersion?this._sound.start(0):this._sound.start(0,a):this._sound.start(0,a,b)}else this._sound.currentTime=this._tempPause,this._sound.play();this.isPlaying=!0,this.paused=!1,this.startTime+=this.game.time.time-this.pausedTime,this.onResume.dispatch(this)}},stop:function(){if(this.isPlaying&&this._sound)if(this.usingWebAudio){if(void 0===this._sound.stop)this._sound.noteOff(0);else try{this._sound.stop(0)}catch(a){}this.externalNode?this._sound.disconnect(this.externalNode):this._sound.disconnect(this.gainNode)}else this.usingAudioTag&&(this._sound.pause(),this._sound.currentTime=0);if(this.pendingPlayback=!1,this.isPlaying=!1,!this.paused){var b=this.currentMarker;""!==this.currentMarker&&this.onMarkerComplete.dispatch(this.currentMarker,this),this.currentMarker="",null!==this.fadeTween&&this.fadeTween.stop(),this.onStop.dispatch(this,b)}},fadeIn:function(a,b,c){void 0===b&&(b=!1),void 0===c&&(c=this.currentMarker),this.paused||(this.play(c,0,0,b),this.fadeTo(a,1))},fadeOut:function(a){this.fadeTo(a,0)},fadeTo:function(a,b){if(this.isPlaying&&!this.paused&&b!==this.volume){if(void 0===a&&(a=1e3),void 0===b)return void console.warn("Phaser.Sound.fadeTo: No Volume Specified.");this.fadeTween=this.game.add.tween(this).to({volume:b},a,c.Easing.Linear.None,!0),this.fadeTween.onComplete.add(this.fadeComplete,this)}},fadeComplete:function(){this.onFadeComplete.dispatch(this,this.volume),0===this.volume&&this.stop()},updateGlobalVolume:function(a){this.usingAudioTag&&this._sound&&(this._sound.volume=a*this._volume)},destroy:function(a){void 0===a&&(a=!0),this.stop(),a?this.game.sound.remove(this):(this.markers={},this.context=null,this._buffer=null,this.externalNode=null,this.onDecoded.dispose(),this.onPlay.dispose(),this.onPause.dispose(),this.onResume.dispose(),this.onLoop.dispose(),this.onStop.dispose(),this.onMute.dispose(),this.onMarkerComplete.dispose())}},c.Sound.prototype.constructor=c.Sound,Object.defineProperty(c.Sound.prototype,"isDecoding",{get:function(){return this.game.cache.getSound(this.key).isDecoding}}),Object.defineProperty(c.Sound.prototype,"isDecoded",{get:function(){return this.game.cache.isSoundDecoded(this.key)}}),Object.defineProperty(c.Sound.prototype,"mute",{get:function(){return this._muted||this.game.sound.mute},set:function(a){a=a||!1,a!==this._muted&&(a?(this._muted=!0,this._muteVolume=this._tempVolume,this.usingWebAudio?this.gainNode.gain.value=0:this.usingAudioTag&&this._sound&&(this._sound.volume=0)):(this._muted=!1,this.usingWebAudio?this.gainNode.gain.value=this._muteVolume:this.usingAudioTag&&this._sound&&(this._sound.volume=this._muteVolume)),this.onMute.dispatch(this))}}),Object.defineProperty(c.Sound.prototype,"volume",{get:function(){return this._volume},set:function(a){return this.game.device.firefox&&this.usingAudioTag&&(a=this.game.math.clamp(a,0,1)),this._muted?void(this._muteVolume=a):(this._tempVolume=a,this._volume=a,void(this.usingWebAudio?this.gainNode.gain.value=a:this.usingAudioTag&&this._sound&&(this._sound.volume=a)))}}),c.SoundManager=function(a){this.game=a,this.onSoundDecode=new c.Signal,this.onVolumeChange=new c.Signal,this.onMute=new c.Signal,this.onUnMute=new c.Signal,this.context=null,this.usingWebAudio=!1,this.usingAudioTag=!1,this.noAudio=!1,this.connectToMaster=!0,this.touchLocked=!1,this.channels=32,this.muteOnPause=!0,this._codeMuted=!1,this._muted=!1,this._unlockSource=null,this._volume=1,this._sounds=[],this._watchList=new c.ArraySet,this._watching=!1,this._watchCallback=null,this._watchContext=null},c.SoundManager.prototype={boot:function(){if(this.game.device.iOS&&this.game.device.webAudio===!1&&(this.channels=1),window.PhaserGlobal){if(window.PhaserGlobal.disableAudio===!0)return this.noAudio=!0,void(this.touchLocked=!1);if(window.PhaserGlobal.disableWebAudio===!0)return this.usingAudioTag=!0,void(this.touchLocked=!1)}if(window.PhaserGlobal&&window.PhaserGlobal.audioContext)this.context=window.PhaserGlobal.audioContext;else if(window.AudioContext)try{this.context=new window.AudioContext}catch(a){this.context=null,this.usingWebAudio=!1,this.touchLocked=!1}else if(window.webkitAudioContext)try{this.context=new window.webkitAudioContext}catch(a){this.context=null,this.usingWebAudio=!1,this.touchLocked=!1}if(null===this.context){if(void 0===window.Audio)return void(this.noAudio=!0);this.usingAudioTag=!0}else this.usingWebAudio=!0,void 0===this.context.createGain?this.masterGain=this.context.createGainNode():this.masterGain=this.context.createGain(),this.masterGain.gain.value=1,this.masterGain.connect(this.context.destination);this.noAudio||(!this.game.device.cocoonJS&&this.game.device.iOS||window.PhaserGlobal&&window.PhaserGlobal.fakeiOSTouchLock)&&this.setTouchLock()},setTouchLock:function(){this.noAudio||window.PhaserGlobal&&window.PhaserGlobal.disableAudio===!0||(this.game.device.iOSVersion>8?this.game.input.touch.addTouchLockCallback(this.unlock,this,!0):this.game.input.touch.addTouchLockCallback(this.unlock,this),this.touchLocked=!0)},unlock:function(){if(this.noAudio||!this.touchLocked||null!==this._unlockSource)return!0;if(this.usingAudioTag)this.touchLocked=!1,this._unlockSource=null;else if(this.usingWebAudio){var a=this.context.createBuffer(1,1,22050);this._unlockSource=this.context.createBufferSource(),this._unlockSource.buffer=a,this._unlockSource.connect(this.context.destination),void 0===this._unlockSource.start?this._unlockSource.noteOn(0):this._unlockSource.start(0)}return!0},stopAll:function(){if(!this.noAudio)for(var a=0;aa?a=0:a>1&&(a=1),this._volume!==a){if(this._volume=a,this.usingWebAudio)this.masterGain.gain.value=a;else for(var b=0;b=400?0:100,this.dom.getOffset(this.game.canvas,this.offset);var b=this._parentBounds.width,d=this._parentBounds.height,e=this.getParentBounds(this._parentBounds),f=e.width!==b||e.height!==d,g=this.updateOrientationState();(f||g)&&(this.onResize&&this.onResize.call(this.onResizeContext,this,e),this.updateLayout(),this.signalSizeChange());var h=2*this._updateThrottle;this._updateThrottle=b||0>=c)return a;var e=b,f=a.height*b/a.width,g=a.width*c/a.height,h=c,i=g>b;return i=i?d:!d,i?(a.width=Math.floor(e),a.height=Math.floor(f)):(a.width=Math.floor(g),a.height=Math.floor(h)),a},destroy:function(){this.game.onResume.remove(this._gameResumed,this),window.removeEventListener("orientationchange",this._orientationChange,!1),window.removeEventListener("resize",this._windowResize,!1),this.compatibility.supportsFullScreen&&(document.removeEventListener("webkitfullscreenchange",this._fullScreenChange,!1),document.removeEventListener("mozfullscreenchange",this._fullScreenChange,!1),document.removeEventListener("MSFullscreenChange",this._fullScreenChange,!1),document.removeEventListener("fullscreenchange",this._fullScreenChange,!1),document.removeEventListener("webkitfullscreenerror",this._fullScreenError,!1),document.removeEventListener("mozfullscreenerror",this._fullScreenError,!1),document.removeEventListener("MSFullscreenError",this._fullScreenError,!1),document.removeEventListener("fullscreenerror",this._fullScreenError,!1))}},c.ScaleManager.prototype.constructor=c.ScaleManager,Object.defineProperty(c.ScaleManager.prototype,"boundingParent",{get:function(){if(this.parentIsWindow||this.isFullScreen&&!this._createdFullScreenTarget)return null;var a=this.game.canvas&&this.game.canvas.parentNode;return a||null}}),Object.defineProperty(c.ScaleManager.prototype,"scaleMode",{get:function(){return this._scaleMode},set:function(a){return a!==this._scaleMode&&(this.isFullScreen||(this.updateDimensions(this._gameSize.width,this._gameSize.height,!0),this.queueUpdate(!0)),this._scaleMode=a),this._scaleMode}}),Object.defineProperty(c.ScaleManager.prototype,"fullScreenScaleMode",{get:function(){return this._fullScreenScaleMode},set:function(a){return a!==this._fullScreenScaleMode&&(this.isFullScreen?(this.prepScreenMode(!1),this._fullScreenScaleMode=a,this.prepScreenMode(!0),this.queueUpdate(!0)):this._fullScreenScaleMode=a),this._fullScreenScaleMode}}),Object.defineProperty(c.ScaleManager.prototype,"currentScaleMode",{get:function(){return this.isFullScreen?this._fullScreenScaleMode:this._scaleMode}}),Object.defineProperty(c.ScaleManager.prototype,"pageAlignHorizontally",{get:function(){return this._pageAlignHorizontally},set:function(a){a!==this._pageAlignHorizontally&&(this._pageAlignHorizontally=a,this.queueUpdate(!0))}}),Object.defineProperty(c.ScaleManager.prototype,"pageAlignVertically",{get:function(){return this._pageAlignVertically},set:function(a){a!==this._pageAlignVertically&&(this._pageAlignVertically=a,this.queueUpdate(!0))}}),Object.defineProperty(c.ScaleManager.prototype,"isFullScreen",{get:function(){return!!(document.fullscreenElement||document.webkitFullscreenElement||document.mozFullScreenElement||document.msFullscreenElement)}}),Object.defineProperty(c.ScaleManager.prototype,"isPortrait",{get:function(){return"portrait"===this.classifyOrientation(this.screenOrientation)}}),Object.defineProperty(c.ScaleManager.prototype,"isLandscape",{get:function(){return"landscape"===this.classifyOrientation(this.screenOrientation)}}),Object.defineProperty(c.ScaleManager.prototype,"isGamePortrait",{get:function(){return this.height>this.width}}),Object.defineProperty(c.ScaleManager.prototype,"isGameLandscape",{get:function(){return this.width>this.height}}),c.Utils.Debug=function(a){this.game=a,this.sprite=null,this.bmd=null,this.canvas=null,this.context=null,this.font="14px Courier",this.columnWidth=100,this.lineHeight=16,this.renderShadow=!0,this.currentX=0,this.currentY=0,this.currentAlpha=1,this.dirty=!1},c.Utils.Debug.prototype={boot:function(){this.game.renderType===c.CANVAS?this.context=this.game.context:(this.bmd=this.game.make.bitmapData(this.game.width,this.game.height),this.sprite=this.game.make.image(0,0,this.bmd),this.game.stage.addChild(this.sprite),this.game.scale.onSizeChange.add(this.resize,this),this.canvas=PIXI.CanvasPool.create(this,this.game.width,this.game.height),this.context=this.canvas.getContext("2d"))},resize:function(a,b,c){this.bmd.resize(b,c),this.canvas.width=b,this.canvas.height=c},preUpdate:function(){this.dirty&&this.sprite&&(this.bmd.clear(),this.bmd.draw(this.canvas,0,0),this.context.clearRect(0,0,this.game.width,this.game.height),this.dirty=!1)},reset:function(){this.context&&this.context.clearRect(0,0,this.game.width,this.game.height),this.sprite&&this.bmd.clear()},start:function(a,b,c,d){"number"!=typeof a&&(a=0),"number"!=typeof b&&(b=0),c=c||"rgb(255,255,255)",void 0===d&&(d=0),this.currentX=a,this.currentY=b,this.currentColor=c,this.columnWidth=d,this.dirty=!0,this.context.save(),this.context.setTransform(1,0,0,1,0,0),this.context.strokeStyle=c,this.context.fillStyle=c,this.context.font=this.font,this.context.globalAlpha=this.currentAlpha},stop:function(){this.context.restore()},line:function(){for(var a=this.currentX,b=0;b0)for(var b=0;b=0&&c.right>=0&&c.top<=this.layoutBounds.width&&c.left<=this.layoutBounds.height},getScreenOrientation:function(a){var b=window.screen,c=b.orientation||b.mozOrientation||b.msOrientation;if(c&&"string"==typeof c.type)return c.type;if("string"==typeof c)return c;var d="portrait-primary",e="landscape-primary";if("screen"===a)return b.height>b.width?d:e;if("viewport"===a)return this.visualBounds.height>this.visualBounds.width?d:e;if("window.orientation"===a&&"number"==typeof window.orientation)return 0===window.orientation||180===window.orientation?d:e;if(window.matchMedia){if(window.matchMedia("(orientation: portrait)").matches)return d;if(window.matchMedia("(orientation: landscape)").matches)return e}return this.visualBounds.height>this.visualBounds.width?d:e},visualBounds:new c.Rectangle,layoutBounds:new c.Rectangle,documentBounds:new c.Rectangle},c.Device.whenReady(function(a){var b=window&&"pageXOffset"in window?function(){return window.pageXOffset}:function(){return document.documentElement.scrollLeft},d=window&&"pageYOffset"in window?function(){return window.pageYOffset}:function(){return document.documentElement.scrollTop};Object.defineProperty(c.DOM,"scrollX",{get:b}),Object.defineProperty(c.DOM,"scrollY",{get:d}),Object.defineProperty(c.DOM.visualBounds,"x",{get:b}),Object.defineProperty(c.DOM.visualBounds,"y",{get:d}),Object.defineProperty(c.DOM.layoutBounds,"x",{value:0}),Object.defineProperty(c.DOM.layoutBounds,"y",{value:0});var e=a.desktop&&document.documentElement.clientWidth<=window.innerWidth&&document.documentElement.clientHeight<=window.innerHeight;if(e){var f=function(){return Math.max(window.innerWidth,document.documentElement.clientWidth)},g=function(){return Math.max(window.innerHeight,document.documentElement.clientHeight)};Object.defineProperty(c.DOM.visualBounds,"width",{get:f}),Object.defineProperty(c.DOM.visualBounds,"height",{get:g}),Object.defineProperty(c.DOM.layoutBounds,"width",{get:f}),Object.defineProperty(c.DOM.layoutBounds,"height",{get:g})}else Object.defineProperty(c.DOM.visualBounds,"width",{get:function(){return window.innerWidth}}),Object.defineProperty(c.DOM.visualBounds,"height",{get:function(){return window.innerHeight}}),Object.defineProperty(c.DOM.layoutBounds,"width",{get:function(){var a=document.documentElement.clientWidth,b=window.innerWidth;return b>a?b:a}}),Object.defineProperty(c.DOM.layoutBounds,"height",{get:function(){var a=document.documentElement.clientHeight,b=window.innerHeight;return b>a?b:a}});Object.defineProperty(c.DOM.documentBounds,"x",{value:0}),Object.defineProperty(c.DOM.documentBounds,"y",{value:0}),Object.defineProperty(c.DOM.documentBounds,"width",{get:function(){var a=document.documentElement;return Math.max(a.clientWidth,a.offsetWidth,a.scrollWidth)}}),Object.defineProperty(c.DOM.documentBounds,"height",{get:function(){var a=document.documentElement;return Math.max(a.clientHeight,a.offsetHeight,a.scrollHeight)}})},null,!0),c.ArraySet=function(a){this.position=0,this.list=a||[]},c.ArraySet.prototype={add:function(a){return this.exists(a)||this.list.push(a),a},getIndex:function(a){return this.list.indexOf(a)},getByKey:function(a,b){for(var c=this.list.length;c--;)if(this.list[c][a]===b)return this.list[c];return null},exists:function(a){return this.list.indexOf(a)>-1},reset:function(){this.list.length=0},remove:function(a){var b=this.list.indexOf(a);return b>-1?(this.list.splice(b,1),a):void 0},setAll:function(a,b){for(var c=this.list.length;c--;)this.list[c]&&(this.list[c][a]=b)},callAll:function(a){for(var b=Array.prototype.slice.call(arguments,1),c=this.list.length;c--;)this.list[c]&&this.list[c][a]&&this.list[c][a].apply(this.list[c],b)},removeAll:function(a){void 0===a&&(a=!1);for(var b=this.list.length;b--;)if(this.list[b]){var c=this.remove(this.list[b]);a&&c.destroy()}this.position=0,this.list=[]}},Object.defineProperty(c.ArraySet.prototype,"total",{get:function(){return this.list.length}}),Object.defineProperty(c.ArraySet.prototype,"first",{get:function(){return this.position=0,this.list.length>0?this.list[0]:null}}),Object.defineProperty(c.ArraySet.prototype,"next",{get:function(){return this.position0;b--){var c=Math.floor(Math.random()*(b+1)),d=a[b];a[b]=a[c],a[c]=d}return a},transposeMatrix:function(a){for(var b=a.length,c=a[0].length,d=new Array(c),e=0;c>e;e++){d[e]=new Array(b);for(var f=b-1;f>-1;f--)d[e][f]=a[f][e]}return d},rotateMatrix:function(a,b){if("string"!=typeof b&&(b=(b%360+360)%360),90===b||-270===b||"rotateLeft"===b)a=c.ArrayUtils.transposeMatrix(a),a=a.reverse();else if(-90===b||270===b||"rotateRight"===b)a=a.reverse(),a=c.ArrayUtils.transposeMatrix(a);else if(180===Math.abs(b)||"rotate180"===b){for(var d=0;d=e-a?e:d},rotate:function(a){var b=a.shift();return a.push(b),b},numberArray:function(a,b){for(var c=[],d=a;b>=d;d++)c.push(d);return c},numberArrayStep:function(a,b,d){(void 0===a||null===a)&&(a=0),(void 0===b||null===b)&&(b=a,a=0),void 0===d&&(d=1);for(var e=[],f=Math.max(c.Math.roundAwayFromZero((b-a)/(d||1)),0),g=0;f>g;g++)e.push(a),a+=d;return e}},c.LinkedList=function(){this.next=null,this.prev=null,this.first=null,this.last=null,this.total=0},c.LinkedList.prototype={add:function(a){return 0===this.total&&null===this.first&&null===this.last?(this.first=a,this.last=a,this.next=a,a.prev=this,this.total++,a):(this.last.next=a,a.prev=this.last,this.last=a,this.total++,a)},reset:function(){this.first=null,this.last=null,this.next=null,this.prev=null,this.total=0},remove:function(a){return 1===this.total?(this.reset(),void(a.next=a.prev=null)):(a===this.first?this.first=this.first.next:a===this.last&&(this.last=this.last.prev),a.prev&&(a.prev.next=a.next),a.next&&(a.next.prev=a.prev),a.next=a.prev=null,null===this.first&&(this.last=null),void this.total--)},callAll:function(a){if(this.first&&this.last){var b=this.first;do b&&b[a]&&b[a].call(b),b=b.next;while(b!=this.last.next)}}},c.LinkedList.prototype.constructor=c.LinkedList,c.Create=function(a){this.game=a,this.bmd=null,this.canvas=null,this.ctx=null,this.palettes=[{0:"#000",1:"#9D9D9D",2:"#FFF",3:"#BE2633",4:"#E06F8B",5:"#493C2B",6:"#A46422",7:"#EB8931",8:"#F7E26B",9:"#2F484E",A:"#44891A",B:"#A3CE27",C:"#1B2632",D:"#005784",E:"#31A2F2",F:"#B2DCEF"},{0:"#000",1:"#191028",2:"#46af45",3:"#a1d685",4:"#453e78",5:"#7664fe",6:"#833129",7:"#9ec2e8",8:"#dc534b",9:"#e18d79",A:"#d6b97b",B:"#e9d8a1",C:"#216c4b",D:"#d365c8",E:"#afaab9",F:"#f5f4eb"},{0:"#000",1:"#2234d1",2:"#0c7e45",3:"#44aacc",4:"#8a3622",5:"#5c2e78",6:"#aa5c3d",7:"#b5b5b5",8:"#5e606e",9:"#4c81fb",A:"#6cd947",B:"#7be2f9",C:"#eb8a60",D:"#e23d69",E:"#ffd93f",F:"#fff"},{0:"#000",1:"#fff",2:"#8b4131",3:"#7bbdc5",4:"#8b41ac",5:"#6aac41",6:"#3931a4",7:"#d5de73",8:"#945a20",9:"#5a4100",A:"#bd736a",B:"#525252",C:"#838383",D:"#acee8b",E:"#7b73de",F:"#acacac"},{0:"#000",1:"#191028",2:"#46af45",3:"#a1d685",4:"#453e78",5:"#7664fe",6:"#833129",7:"#9ec2e8",8:"#dc534b",9:"#e18d79",A:"#d6b97b",B:"#e9d8a1",C:"#216c4b",D:"#d365c8",E:"#afaab9",F:"#fff"}]},c.Create.PALETTE_ARNE=0,c.Create.PALETTE_JMP=1,c.Create.PALETTE_CGA=2,c.Create.PALETTE_C64=3,c.Create.PALETTE_JAPANESE_MACHINE=4,c.Create.prototype={texture:function(a,b,c,d,e){void 0===c&&(c=8),void 0===d&&(d=c),void 0===e&&(e=0);var f=b[0].length*c,g=b.length*d;null===this.bmd&&(this.bmd=this.game.make.bitmapData(),this.canvas=this.bmd.canvas,this.ctx=this.bmd.context),this.bmd.resize(f,g),this.bmd.clear();for(var h=0;hg;g+=e)this.ctx.fillRect(0,g,b,1);for(var h=0;b>h;h+=d)this.ctx.fillRect(h,0,1,c);return this.bmd.generateTexture(a)}},c.Create.prototype.constructor=c.Create,c.FlexGrid=function(a,b,d){this.game=a.game,this.manager=a,this.width=b,this.height=d,this.boundsCustom=new c.Rectangle(0,0,b,d),this.boundsFluid=new c.Rectangle(0,0,b,d),this.boundsFull=new c.Rectangle(0,0,b,d),this.boundsNone=new c.Rectangle(0,0,b,d),this.positionCustom=new c.Point(0,0),this.positionFluid=new c.Point(0,0),this.positionFull=new c.Point(0,0),this.positionNone=new c.Point(0,0),this.scaleCustom=new c.Point(1,1),this.scaleFluid=new c.Point(1,1),this.scaleFluidInversed=new c.Point(1,1),this.scaleFull=new c.Point(1,1),this.scaleNone=new c.Point(1,1), -this.customWidth=0,this.customHeight=0,this.customOffsetX=0,this.customOffsetY=0,this.ratioH=b/d,this.ratioV=d/b,this.multiplier=0,this.layers=[]},c.FlexGrid.prototype={setSize:function(a,b){this.width=a,this.height=b,this.ratioH=a/b,this.ratioV=b/a,this.scaleNone=new c.Point(1,1),this.boundsNone.width=this.width,this.boundsNone.height=this.height,this.refresh()},createCustomLayer:function(a,b,d,e){void 0===e&&(e=!0),this.customWidth=a,this.customHeight=b,this.boundsCustom.width=a,this.boundsCustom.height=b;var f=new c.FlexLayer(this,this.positionCustom,this.boundsCustom,this.scaleCustom);return e&&this.game.world.add(f),this.layers.push(f),"undefined"!=typeof d&&null!==typeof d&&f.addMultiple(d),f},createFluidLayer:function(a,b){void 0===b&&(b=!0);var d=new c.FlexLayer(this,this.positionFluid,this.boundsFluid,this.scaleFluid);return b&&this.game.world.add(d),this.layers.push(d),"undefined"!=typeof a&&null!==typeof a&&d.addMultiple(a),d},createFullLayer:function(a){var b=new c.FlexLayer(this,this.positionFull,this.boundsFull,this.scaleFluid);return this.game.world.add(b),this.layers.push(b),"undefined"!=typeof a&&b.addMultiple(a),b},createFixedLayer:function(a){var b=new c.FlexLayer(this,this.positionNone,this.boundsNone,this.scaleNone);return this.game.world.add(b),this.layers.push(b),"undefined"!=typeof a&&b.addMultiple(a),b},reset:function(){for(var a=this.layers.length;a--;)this.layers[a].persist||(this.layers[a].position=null,this.layers[a].scale=null,this.layers.slice(a,1))},onResize:function(a,b){this.ratioH=a/b,this.ratioV=b/a,this.refresh(a,b)},refresh:function(){this.multiplier=Math.min(this.manager.height/this.height,this.manager.width/this.width),this.boundsFluid.width=Math.round(this.width*this.multiplier),this.boundsFluid.height=Math.round(this.height*this.multiplier),this.scaleFluid.set(this.boundsFluid.width/this.width,this.boundsFluid.height/this.height),this.scaleFluidInversed.set(this.width/this.boundsFluid.width,this.height/this.boundsFluid.height),this.scaleFull.set(this.boundsFull.width/this.width,this.boundsFull.height/this.height),this.boundsFull.width=Math.round(this.manager.width*this.scaleFluidInversed.x),this.boundsFull.height=Math.round(this.manager.height*this.scaleFluidInversed.y),this.boundsFluid.centerOn(this.manager.bounds.centerX,this.manager.bounds.centerY),this.boundsNone.centerOn(this.manager.bounds.centerX,this.manager.bounds.centerY),this.positionFluid.set(this.boundsFluid.x,this.boundsFluid.y),this.positionNone.set(this.boundsNone.x,this.boundsNone.y)},fitSprite:function(a){this.manager.scaleSprite(a),a.x=this.manager.bounds.centerX,a.y=this.manager.bounds.centerY},debug:function(){this.game.debug.text(this.boundsFluid.width+" x "+this.boundsFluid.height,this.boundsFluid.x+4,this.boundsFluid.y+16),this.game.debug.geom(this.boundsFluid,"rgba(255,0,0,0.9",!1)}},c.FlexGrid.prototype.constructor=c.FlexGrid,c.FlexLayer=function(a,b,d,e){c.Group.call(this,a.game,null,"__flexLayer"+a.game.rnd.uuid(),!1),this.manager=a.manager,this.grid=a,this.persist=!1,this.position=b,this.bounds=d,this.scale=e,this.topLeft=d.topLeft,this.topMiddle=new c.Point(d.halfWidth,0),this.topRight=d.topRight,this.bottomLeft=d.bottomLeft,this.bottomMiddle=new c.Point(d.halfWidth,d.bottom),this.bottomRight=d.bottomRight},c.FlexLayer.prototype=Object.create(c.Group.prototype),c.FlexLayer.prototype.constructor=c.FlexLayer,c.FlexLayer.prototype.resize=function(){},c.FlexLayer.prototype.debug=function(){this.game.debug.text(this.bounds.width+" x "+this.bounds.height,this.bounds.x+4,this.bounds.y+16),this.game.debug.geom(this.bounds,"rgba(0,0,255,0.9",!1),this.game.debug.geom(this.topLeft,"rgba(255,255,255,0.9"),this.game.debug.geom(this.topMiddle,"rgba(255,255,255,0.9"),this.game.debug.geom(this.topRight,"rgba(255,255,255,0.9")},c.Color={packPixel:function(a,b,d,e){return c.Device.LITTLE_ENDIAN?(e<<24|d<<16|b<<8|a)>>>0:(a<<24|b<<16|d<<8|e)>>>0},unpackPixel:function(a,b,d,e){return(void 0===b||null===b)&&(b=c.Color.createColor()),(void 0===d||null===d)&&(d=!1),(void 0===e||null===e)&&(e=!1),c.Device.LITTLE_ENDIAN?(b.a=(4278190080&a)>>>24,b.b=(16711680&a)>>>16,b.g=(65280&a)>>>8,b.r=255&a):(b.r=(4278190080&a)>>>24,b.g=(16711680&a)>>>16,b.b=(65280&a)>>>8,b.a=255&a),b.color=a,b.rgba="rgba("+b.r+","+b.g+","+b.b+","+b.a/255+")",d&&c.Color.RGBtoHSL(b.r,b.g,b.b,b),e&&c.Color.RGBtoHSV(b.r,b.g,b.b,b),b},fromRGBA:function(a,b){return b||(b=c.Color.createColor()),b.r=(4278190080&a)>>>24,b.g=(16711680&a)>>>16,b.b=(65280&a)>>>8,b.a=255&a,b.rgba="rgba("+b.r+","+b.g+","+b.b+","+b.a+")",b},toRGBA:function(a,b,c,d){return a<<24|b<<16|c<<8|d},RGBtoHSL:function(a,b,d,e){e||(e=c.Color.createColor(a,b,d,1)),a/=255,b/=255,d/=255;var f=Math.min(a,b,d),g=Math.max(a,b,d);if(e.h=0,e.s=0,e.l=(g+f)/2,g!==f){var h=g-f;e.s=e.l>.5?h/(2-g-f):h/(g+f),g===a?e.h=(b-d)/h+(d>b?6:0):g===b?e.h=(d-a)/h+2:g===d&&(e.h=(a-b)/h+4),e.h/=6}return e},HSLtoRGB:function(a,b,d,e){if(e?(e.r=d,e.g=d,e.b=d):e=c.Color.createColor(d,d,d),0!==b){var f=.5>d?d*(1+b):d+b-d*b,g=2*d-f;e.r=c.Color.hueToColor(g,f,a+1/3),e.g=c.Color.hueToColor(g,f,a),e.b=c.Color.hueToColor(g,f,a-1/3)}return e.r=Math.floor(255*e.r|0),e.g=Math.floor(255*e.g|0),e.b=Math.floor(255*e.b|0),c.Color.updateColor(e),e},RGBtoHSV:function(a,b,d,e){e||(e=c.Color.createColor(a,b,d,255)),a/=255,b/=255,d/=255;var f=Math.min(a,b,d),g=Math.max(a,b,d),h=g-f;return e.h=0,e.s=0===g?0:h/g,e.v=g,g!==f&&(g===a?e.h=(b-d)/h+(d>b?6:0):g===b?e.h=(d-a)/h+2:g===d&&(e.h=(a-b)/h+4),e.h/=6),e},HSVtoRGB:function(a,b,d,e){void 0===e&&(e=c.Color.createColor(0,0,0,1,a,b,0,d));var f,g,h,i=Math.floor(6*a),j=6*a-i,k=d*(1-b),l=d*(1-j*b),m=d*(1-(1-j)*b);switch(i%6){case 0:f=d,g=m,h=k;break;case 1:f=l,g=d,h=k;break;case 2:f=k,g=d,h=m;break;case 3:f=k,g=l,h=d;break;case 4:f=m,g=k,h=d;break;case 5:f=d,g=k,h=l}return e.r=Math.floor(255*f),e.g=Math.floor(255*g),e.b=Math.floor(255*h),c.Color.updateColor(e),e},hueToColor:function(a,b,c){return 0>c&&(c+=1),c>1&&(c-=1),1/6>c?a+6*(b-a)*c:.5>c?b:2/3>c?a+(b-a)*(2/3-c)*6:a},createColor:function(a,b,d,e,f,g,h,i){var j={r:a||0,g:b||0,b:d||0,a:e||1,h:f||0,s:g||0,l:h||0,v:i||0,color:0,color32:0,rgba:""};return c.Color.updateColor(j)},updateColor:function(a){return a.rgba="rgba("+a.r.toString()+","+a.g.toString()+","+a.b.toString()+","+a.a.toString()+")",a.color=c.Color.getColor(a.r,a.g,a.b),a.color32=c.Color.getColor32(255*a.a,a.r,a.g,a.b),a},getColor32:function(a,b,c,d){return a<<24|b<<16|c<<8|d},getColor:function(a,b,c){return a<<16|b<<8|c},RGBtoString:function(a,b,d,e,f){return void 0===e&&(e=255),void 0===f&&(f="#"),"#"===f?"#"+((1<<24)+(a<<16)+(b<<8)+d).toString(16).slice(1):"0x"+c.Color.componentToHex(e)+c.Color.componentToHex(a)+c.Color.componentToHex(b)+c.Color.componentToHex(d)},hexToRGB:function(a){var b=c.Color.hexToColor(a);return b?c.Color.getColor32(b.a,b.r,b.g,b.b):void 0},hexToColor:function(a,b){a=a.replace(/^(?:#|0x)?([a-f\d])([a-f\d])([a-f\d])$/i,function(a,b,c,d){return b+b+c+c+d+d});var d=/^(?:#|0x)?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(a);if(d){var e=parseInt(d[1],16),f=parseInt(d[2],16),g=parseInt(d[3],16);b?(b.r=e,b.g=f,b.b=g):b=c.Color.createColor(e,f,g)}return b},webToColor:function(a,b){b||(b=c.Color.createColor());var d=/^rgba?\(\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*(?:,\s*(\d+(?:\.\d+)?))?\s*\)$/.exec(a);return d&&(b.r=parseInt(d[1],10),b.g=parseInt(d[2],10),b.b=parseInt(d[3],10),b.a=void 0!==d[4]?parseFloat(d[4]):1,c.Color.updateColor(b)),b},valueToColor:function(a,b){if(b||(b=c.Color.createColor()),"string"==typeof a)return 0===a.indexOf("rgb")?c.Color.webToColor(a,b):(b.a=1,c.Color.hexToColor(a,b));if("number"==typeof a){var d=c.Color.getRGB(a);return b.r=d.r,b.g=d.g,b.b=d.b,b.a=d.a/255,b}return b},componentToHex:function(a){var b=a.toString(16);return 1==b.length?"0"+b:b},HSVColorWheel:function(a,b){void 0===a&&(a=1),void 0===b&&(b=1);for(var d=[],e=0;359>=e;e++)d.push(c.Color.HSVtoRGB(e/359,a,b));return d},HSLColorWheel:function(a,b){void 0===a&&(a=.5),void 0===b&&(b=.5);for(var d=[],e=0;359>=e;e++)d.push(c.Color.HSLtoRGB(e/359,a,b));return d},interpolateColor:function(a,b,d,e,f){void 0===f&&(f=255);var g=c.Color.getRGB(a),h=c.Color.getRGB(b),i=(h.red-g.red)*e/d+g.red,j=(h.green-g.green)*e/d+g.green,k=(h.blue-g.blue)*e/d+g.blue;return c.Color.getColor32(f,i,j,k)},interpolateColorWithRGB:function(a,b,d,e,f,g){var h=c.Color.getRGB(a),i=(b-h.red)*g/f+h.red,j=(d-h.green)*g/f+h.green,k=(e-h.blue)*g/f+h.blue;return c.Color.getColor(i,j,k)},interpolateRGB:function(a,b,d,e,f,g,h,i){var j=(e-a)*i/h+a,k=(f-b)*i/h+b,l=(g-d)*i/h+d;return c.Color.getColor(j,k,l)},getRandomColor:function(a,b,d){if(void 0===a&&(a=0),void 0===b&&(b=255),void 0===d&&(d=255),b>255||a>b)return c.Color.getColor(255,255,255);var e=a+Math.round(Math.random()*(b-a)),f=a+Math.round(Math.random()*(b-a)),g=a+Math.round(Math.random()*(b-a));return c.Color.getColor32(d,e,f,g)},getRGB:function(a){return a>16777215?{alpha:a>>>24,red:a>>16&255,green:a>>8&255,blue:255&a,a:a>>>24,r:a>>16&255,g:a>>8&255,b:255&a}:{alpha:255,red:a>>16&255,green:a>>8&255,blue:255&a,a:255,r:a>>16&255,g:a>>8&255,b:255&a}},getWebRGB:function(a){if("object"==typeof a)return"rgba("+a.r.toString()+","+a.g.toString()+","+a.b.toString()+","+(a.a/255).toString()+")";var b=c.Color.getRGB(a);return"rgba("+b.r.toString()+","+b.g.toString()+","+b.b.toString()+","+(b.a/255).toString()+")"},getAlpha:function(a){return a>>>24},getAlphaFloat:function(a){return(a>>>24)/255},getRed:function(a){return a>>16&255},getGreen:function(a){return a>>8&255},getBlue:function(a){return 255&a},blendNormal:function(a){return a},blendLighten:function(a,b){return b>a?b:a},blendDarken:function(a,b){return b>a?a:b},blendMultiply:function(a,b){return a*b/255},blendAverage:function(a,b){return(a+b)/2},blendAdd:function(a,b){return Math.min(255,a+b)},blendSubtract:function(a,b){return Math.max(0,a+b-255)},blendDifference:function(a,b){return Math.abs(a-b)},blendNegation:function(a,b){return 255-Math.abs(255-a-b)},blendScreen:function(a,b){return 255-((255-a)*(255-b)>>8)},blendExclusion:function(a,b){return a+b-2*a*b/255},blendOverlay:function(a,b){return 128>b?2*a*b/255:255-2*(255-a)*(255-b)/255},blendSoftLight:function(a,b){return 128>b?2*((a>>1)+64)*(b/255):255-2*(255-((a>>1)+64))*(255-b)/255},blendHardLight:function(a,b){return c.Color.blendOverlay(b,a)},blendColorDodge:function(a,b){return 255===b?b:Math.min(255,(a<<8)/(255-b))},blendColorBurn:function(a,b){return 0===b?b:Math.max(0,255-(255-a<<8)/b)},blendLinearDodge:function(a,b){return c.Color.blendAdd(a,b)},blendLinearBurn:function(a,b){return c.Color.blendSubtract(a,b)},blendLinearLight:function(a,b){return 128>b?c.Color.blendLinearBurn(a,2*b):c.Color.blendLinearDodge(a,2*(b-128))},blendVividLight:function(a,b){return 128>b?c.Color.blendColorBurn(a,2*b):c.Color.blendColorDodge(a,2*(b-128))},blendPinLight:function(a,b){return 128>b?c.Color.blendDarken(a,2*b):c.Color.blendLighten(a,2*(b-128))},blendHardMix:function(a,b){return c.Color.blendVividLight(a,b)<128?0:255},blendReflect:function(a,b){return 255===b?b:Math.min(255,a*a/(255-b))},blendGlow:function(a,b){return c.Color.blendReflect(b,a)},blendPhoenix:function(a,b){return Math.min(a,b)-Math.max(a,b)+255}},c.Physics=function(a,b){b=b||{},this.game=a,this.config=b,this.arcade=null,this.p2=null,this.ninja=null,this.box2d=null,this.chipmunk=null,this.matter=null,this.parseConfig()},c.Physics.ARCADE=0,c.Physics.P2JS=1,c.Physics.NINJA=2,c.Physics.BOX2D=3,c.Physics.CHIPMUNK=4,c.Physics.MATTERJS=5,c.Physics.prototype={parseConfig:function(){this.config.hasOwnProperty("arcade")&&this.config.arcade!==!0||!c.Physics.hasOwnProperty("Arcade")||(this.arcade=new c.Physics.Arcade(this.game)),this.config.hasOwnProperty("ninja")&&this.config.ninja===!0&&c.Physics.hasOwnProperty("Ninja")&&(this.ninja=new c.Physics.Ninja(this.game)),this.config.hasOwnProperty("p2")&&this.config.p2===!0&&c.Physics.hasOwnProperty("P2")&&(this.p2=new c.Physics.P2(this.game,this.config)),this.config.hasOwnProperty("box2d")&&this.config.box2d===!0&&c.Physics.hasOwnProperty("BOX2D")&&(this.box2d=new c.Physics.BOX2D(this.game,this.config)),this.config.hasOwnProperty("matter")&&this.config.matter===!0&&c.Physics.hasOwnProperty("Matter")&&(this.matter=new c.Physics.Matter(this.game,this.config))},startSystem:function(a){a===c.Physics.ARCADE?this.arcade=new c.Physics.Arcade(this.game):a===c.Physics.P2JS?null===this.p2?this.p2=new c.Physics.P2(this.game,this.config):this.p2.reset():a===c.Physics.NINJA?this.ninja=new c.Physics.Ninja(this.game):a===c.Physics.BOX2D?null===this.box2d?this.box2d=new c.Physics.Box2D(this.game,this.config):this.box2d.reset():a===c.Physics.MATTERJS&&(null===this.matter?this.matter=new c.Physics.Matter(this.game,this.config):this.matter.reset())},enable:function(a,b,d){void 0===b&&(b=c.Physics.ARCADE),void 0===d&&(d=!1),b===c.Physics.ARCADE?this.arcade.enable(a):b===c.Physics.P2JS&&this.p2?this.p2.enable(a,d):b===c.Physics.NINJA&&this.ninja?this.ninja.enableAABB(a):b===c.Physics.BOX2D&&this.box2d?this.box2d.enable(a):b===c.Physics.MATTERJS&&this.matter?this.matter.enable(a):console.warn(a.key+" is attempting to enable a physics body using an unknown physics system.")},preUpdate:function(){this.p2&&this.p2.preUpdate(),this.box2d&&this.box2d.preUpdate(),this.matter&&this.matter.preUpdate()},update:function(){this.p2&&this.p2.update(),this.box2d&&this.box2d.update(),this.matter&&this.matter.update()},setBoundsToWorld:function(){this.arcade&&this.arcade.setBoundsToWorld(),this.ninja&&this.ninja.setBoundsToWorld(),this.p2&&this.p2.setBoundsToWorld(),this.box2d&&this.box2d.setBoundsToWorld(),this.matter&&this.matter.setBoundsToWorld()},clear:function(){this.p2&&this.p2.clear(),this.box2d&&this.box2d.clear(),this.matter&&this.matter.clear()},reset:function(){this.p2&&this.p2.reset(),this.box2d&&this.box2d.reset(),this.matter&&this.matter.reset()},destroy:function(){this.p2&&this.p2.destroy(),this.box2d&&this.box2d.destroy(),this.matter&&this.matter.destroy(),this.arcade=null,this.ninja=null,this.p2=null,this.box2d=null,this.matter=null}},c.Physics.prototype.constructor=c.Physics,c.Physics.Arcade=function(a){this.game=a,this.gravity=new c.Point,this.bounds=new c.Rectangle(0,0,a.world.width,a.world.height),this.checkCollision={up:!0,down:!0,left:!0,right:!0},this.maxObjects=10,this.maxLevels=4,this.OVERLAP_BIAS=4,this.forceX=!1,this.sortDirection=c.Physics.Arcade.LEFT_RIGHT,this.skipQuadTree=!0,this.isPaused=!1,this.quadTree=new c.QuadTree(this.game.world.bounds.x,this.game.world.bounds.y,this.game.world.bounds.width,this.game.world.bounds.height,this.maxObjects,this.maxLevels),this._total=0,this.setBoundsToWorld()},c.Physics.Arcade.prototype.constructor=c.Physics.Arcade,c.Physics.Arcade.SORT_NONE=0,c.Physics.Arcade.LEFT_RIGHT=1,c.Physics.Arcade.RIGHT_LEFT=2,c.Physics.Arcade.TOP_BOTTOM=3,c.Physics.Arcade.BOTTOM_TOP=4,c.Physics.Arcade.prototype={setBounds:function(a,b,c,d){this.bounds.setTo(a,b,c,d)},setBoundsToWorld:function(){this.bounds.copyFrom(this.game.world.bounds)},enable:function(a,b){void 0===b&&(b=!0);var d=1;if(Array.isArray(a))for(d=a.length;d--;)a[d]instanceof c.Group?this.enable(a[d].children,b):(this.enableBody(a[d]),b&&a[d].hasOwnProperty("children")&&a[d].children.length>0&&this.enable(a[d],!0));else a instanceof c.Group?this.enable(a.children,b):(this.enableBody(a),b&&a.hasOwnProperty("children")&&a.children.length>0&&this.enable(a.children,!0))},enableBody:function(a){a.hasOwnProperty("body")&&null===a.body&&(a.body=new c.Physics.Arcade.Body(a),a.parent&&a.parent instanceof c.Group&&a.parent.addToHash(a))},updateMotion:function(a){var b=this.computeVelocity(0,a,a.angularVelocity,a.angularAcceleration,a.angularDrag,a.maxAngular)-a.angularVelocity;a.angularVelocity+=b,a.rotation+=a.angularVelocity*this.game.time.physicsElapsed,a.velocity.x=this.computeVelocity(1,a,a.velocity.x,a.acceleration.x,a.drag.x,a.maxVelocity.x),a.velocity.y=this.computeVelocity(2,a,a.velocity.y,a.acceleration.y,a.drag.y,a.maxVelocity.y)},computeVelocity:function(a,b,c,d,e,f){return void 0===f&&(f=1e4),1===a&&b.allowGravity?c+=(this.gravity.x+b.gravity.x)*this.game.time.physicsElapsed:2===a&&b.allowGravity&&(c+=(this.gravity.y+b.gravity.y)*this.game.time.physicsElapsed),d?c+=d*this.game.time.physicsElapsed:e&&(e*=this.game.time.physicsElapsed,c-e>0?c-=e:0>c+e?c+=e:c=0),c>f?c=f:-f>c&&(c=-f),c},overlap:function(a,b,c,d,e){if(c=c||null,d=d||null,e=e||c,this._total=0,!Array.isArray(a)&&Array.isArray(b))for(var f=0;f0},collide:function(a,b,c,d,e){if(c=c||null,d=d||null,e=e||c,this._total=0,!Array.isArray(a)&&Array.isArray(b))for(var f=0;f0},sortLeftRight:function(a,b){return a.body&&b.body?a.body.x-b.body.x:0},sortRightLeft:function(a,b){return a.body&&b.body?b.body.x-a.body.x:0},sortTopBottom:function(a,b){return a.body&&b.body?a.body.y-b.body.y:0},sortBottomTop:function(a,b){return a.body&&b.body?b.body.y-a.body.y:0},sort:function(a,b){null!==a.physicsSortDirection?b=a.physicsSortDirection:void 0===b&&(b=this.sortDirection),b===c.Physics.Arcade.LEFT_RIGHT?a.hash.sort(this.sortLeftRight):b===c.Physics.Arcade.RIGHT_LEFT?a.hash.sort(this.sortRightLeft):b===c.Physics.Arcade.TOP_BOTTOM?a.hash.sort(this.sortTopBottom):b===c.Physics.Arcade.BOTTOM_TOP&&a.hash.sort(this.sortBottomTop)},collideHandler:function(a,b,d,e,f,g){return void 0===b&&a.physicsType===c.GROUP?(this.sort(a),void this.collideGroupVsSelf(a,d,e,f,g)):void(a&&b&&a.exists&&b.exists&&(this.sortDirection!==c.Physics.Arcade.SORT_NONE&&(a.physicsType===c.GROUP&&this.sort(a),b.physicsType===c.GROUP&&this.sort(b)),a.physicsType===c.SPRITE?b.physicsType===c.SPRITE?this.collideSpriteVsSprite(a,b,d,e,f,g):b.physicsType===c.GROUP?this.collideSpriteVsGroup(a,b,d,e,f,g):b.physicsType===c.TILEMAPLAYER&&this.collideSpriteVsTilemapLayer(a,b,d,e,f,g):a.physicsType===c.GROUP?b.physicsType===c.SPRITE?this.collideSpriteVsGroup(b,a,d,e,f,g):b.physicsType===c.GROUP?this.collideGroupVsGroup(a,b,d,e,f,g):b.physicsType===c.TILEMAPLAYER&&this.collideGroupVsTilemapLayer(a,b,d,e,f,g):a.physicsType===c.TILEMAPLAYER&&(b.physicsType===c.SPRITE?this.collideSpriteVsTilemapLayer(b,a,d,e,f,g):b.physicsType===c.GROUP&&this.collideGroupVsTilemapLayer(b,a,d,e,f,g))))},collideSpriteVsSprite:function(a,b,c,d,e,f){return a.body&&b.body?(this.separate(a.body,b.body,d,e,f)&&(c&&c.call(e,a,b),this._total++),!0):!1},collideSpriteVsGroup:function(a,b,d,e,f,g){if(0!==b.length&&a.body){var h;if(this.skipQuadTree||a.body.skipQuadTree){for(var i=0;ih.right)break;if(h.x>a.body.right)continue}else if(this.sortDirection===c.Physics.Arcade.TOP_BOTTOM){if(a.body.bottomh.bottom)break;if(h.y>a.body.bottom)continue}this.collideSpriteVsSprite(a,b.hash[i],d,e,f,g)}}else{this.quadTree.clear(),this.quadTree.reset(this.game.world.bounds.x,this.game.world.bounds.y,this.game.world.bounds.width,this.game.world.bounds.height,this.maxObjects,this.maxLevels),this.quadTree.populate(b);for(var j=this.quadTree.retrieve(a),i=0;ij.body.right)continue;if(j.body.x>h.body.right)break}else if(this.sortDirection===c.Physics.Arcade.TOP_BOTTOM){if(h.body.bottomj.body.bottom)continue;if(j.body.y>h.body.bottom)break}this.collideSpriteVsSprite(h,j,b,d,e,f)}},collideGroupVsGroup:function(a,b,d,e,f,g){if(0!==a.length&&0!==b.length)for(var h=0;h=b.right?!1:a.position.y>=b.bottom?!1:!0},getOverlapX:function(a,b,c){var d=0,e=a.deltaAbsX()+b.deltaAbsX()+this.OVERLAP_BIAS;return 0===a.deltaX()&&0===b.deltaX()?(a.embedded=!0,b.embedded=!0):a.deltaX()>b.deltaX()?(d=a.right-b.x,d>e&&!c||a.checkCollision.right===!1||b.checkCollision.left===!1?d=0:(a.touching.none=!1,a.touching.right=!0,b.touching.none=!1,b.touching.left=!0)):a.deltaX()e&&!c||a.checkCollision.left===!1||b.checkCollision.right===!1?d=0:(a.touching.none=!1,a.touching.left=!0,b.touching.none=!1,b.touching.right=!0)),a.overlapX=d,b.overlapX=d,d},getOverlapY:function(a,b,c){var d=0,e=a.deltaAbsY()+b.deltaAbsY()+this.OVERLAP_BIAS;return 0===a.deltaY()&&0===b.deltaY()?(a.embedded=!0,b.embedded=!0):a.deltaY()>b.deltaY()?(d=a.bottom-b.y,d>e&&!c||a.checkCollision.down===!1||b.checkCollision.up===!1?d=0:(a.touching.none=!1,a.touching.down=!0,b.touching.none=!1,b.touching.up=!0)):a.deltaY()e&&!c||a.checkCollision.up===!1||b.checkCollision.down===!1?d=0:(a.touching.none=!1,a.touching.up=!0,b.touching.none=!1,b.touching.down=!0)),a.overlapY=d,b.overlapY=d,d},separateX:function(a,b,c){var d=this.getOverlapX(a,b,c);if(c||0===d||a.immovable&&b.immovable||a.customSeparateX||b.customSeparateX)return 0!==d||a.embedded&&b.embedded;var e=a.velocity.x,f=b.velocity.x;if(a.immovable||b.immovable)a.immovable?(b.x+=d,b.velocity.x=e-f*b.bounce.x,a.moves&&(b.y+=(a.y-a.prev.y)*a.friction.y)):(a.x-=d,a.velocity.x=f-e*a.bounce.x,b.moves&&(a.y+=(b.y-b.prev.y)*b.friction.y));else{d*=.5,a.x-=d,b.x+=d;var g=Math.sqrt(f*f*b.mass/a.mass)*(f>0?1:-1),h=Math.sqrt(e*e*a.mass/b.mass)*(e>0?1:-1),i=.5*(g+h);g-=i,h-=i,a.velocity.x=i+g*a.bounce.x,b.velocity.x=i+h*b.bounce.x}return!0},separateY:function(a,b,c){var d=this.getOverlapY(a,b,c);if(c||0===d||a.immovable&&b.immovable||a.customSeparateY||b.customSeparateY)return 0!==d||a.embedded&&b.embedded;var e=a.velocity.y,f=b.velocity.y;if(a.immovable||b.immovable)a.immovable?(b.y+=d,b.velocity.y=e-f*b.bounce.y,a.moves&&(b.x+=(a.x-a.prev.x)*a.friction.x)):(a.y-=d,a.velocity.y=f-e*a.bounce.y,b.moves&&(a.x+=(b.x-b.prev.x)*b.friction.x));else{d*=.5,a.y-=d,b.y+=d;var g=Math.sqrt(f*f*b.mass/a.mass)*(f>0?1:-1),h=Math.sqrt(e*e*a.mass/b.mass)*(e>0?1:-1),i=.5*(g+h);g-=i,h-=i,a.velocity.y=i+g*a.bounce.y,b.velocity.y=i+h*b.bounce.y}return!0},getObjectsUnderPointer:function(a,b,c,d){return 0!==b.length&&a.exists?this.getObjectsAtLocation(a.x,a.y,b,c,d,a):void 0},getObjectsAtLocation:function(a,b,d,e,f,g){this.quadTree.clear(),this.quadTree.reset(this.game.world.bounds.x,this.game.world.bounds.y,this.game.world.bounds.width,this.game.world.bounds.height,this.maxObjects,this.maxLevels),this.quadTree.populate(d);for(var h=new c.Rectangle(a,b,1,1),i=[],j=this.quadTree.retrieve(h),k=0;k0&&(c=this.distanceBetween(a,b)/(d/1e3)),a.body.velocity.x=Math.cos(e)*c,a.body.velocity.y=Math.sin(e)*c,e},moveToPointer:function(a,b,c,d){void 0===b&&(b=60),c=c||this.game.input.activePointer,void 0===d&&(d=0);var e=this.angleToPointer(a,c);return d>0&&(b=this.distanceToPointer(a,c)/(d/1e3)),a.body.velocity.x=Math.cos(e)*b,a.body.velocity.y=Math.sin(e)*b,e},moveToXY:function(a,b,c,d,e){void 0===d&&(d=60),void 0===e&&(e=0);var f=Math.atan2(c-a.y,b-a.x);return e>0&&(d=this.distanceToXY(a,b,c)/(e/1e3)),a.body.velocity.x=Math.cos(f)*d,a.body.velocity.y=Math.sin(f)*d,f},velocityFromAngle:function(a,b,d){return void 0===b&&(b=60),d=d||new c.Point,d.setTo(Math.cos(this.game.math.degToRad(a))*b,Math.sin(this.game.math.degToRad(a))*b)},velocityFromRotation:function(a,b,d){return void 0===b&&(b=60),d=d||new c.Point,d.setTo(Math.cos(a)*b,Math.sin(a)*b)},accelerationFromRotation:function(a,b,d){return void 0===b&&(b=60),d=d||new c.Point,d.setTo(Math.cos(a)*b,Math.sin(a)*b)},accelerateToObject:function(a,b,c,d,e){void 0===c&&(c=60),void 0===d&&(d=1e3),void 0===e&&(e=1e3);var f=this.angleBetween(a,b);return a.body.acceleration.setTo(Math.cos(f)*c,Math.sin(f)*c),a.body.maxVelocity.setTo(d,e),f},accelerateToPointer:function(a,b,c,d,e){void 0===c&&(c=60),void 0===b&&(b=this.game.input.activePointer),void 0===d&&(d=1e3),void 0===e&&(e=1e3);var f=this.angleToPointer(a,b);return a.body.acceleration.setTo(Math.cos(f)*c,Math.sin(f)*c),a.body.maxVelocity.setTo(d,e),f},accelerateToXY:function(a,b,c,d,e,f){void 0===d&&(d=60),void 0===e&&(e=1e3),void 0===f&&(f=1e3);var g=this.angleToXY(a,b,c);return a.body.acceleration.setTo(Math.cos(g)*d,Math.sin(g)*d),a.body.maxVelocity.setTo(e,f),g},distanceBetween:function(a,b,c){void 0===c&&(c=!1);var d=c?a.world.x-b.world.x:a.x-b.x,e=c?a.world.y-b.world.y:a.y-b.y;return Math.sqrt(d*d+e*e)},distanceToXY:function(a,b,c,d){void 0===d&&(d=!1);var e=d?a.world.x-b:a.x-b,f=d?a.world.y-c:a.y-c;return Math.sqrt(e*e+f*f)},distanceToPointer:function(a,b,c){void 0===b&&(b=this.game.input.activePointer),void 0===c&&(c=!1);var d=c?a.world.x-b.worldX:a.x-b.worldX,e=c?a.world.y-b.worldY:a.y-b.worldY;return Math.sqrt(d*d+e*e)},angleBetween:function(a,b,c){return void 0===c&&(c=!1),c?Math.atan2(b.world.y-a.world.y,b.world.x-a.world.x):Math.atan2(b.y-a.y,b.x-a.x)},angleToXY:function(a,b,c,d){return void 0===d&&(d=!1),d?Math.atan2(c-a.world.y,b-a.world.x):Math.atan2(c-a.y,b-a.x)},angleToPointer:function(a,b,c){return void 0===b&&(b=this.game.input.activePointer),void 0===c&&(c=!1),c?Math.atan2(b.worldY-a.world.y,b.worldX-a.world.x):Math.atan2(b.worldY-a.y,b.worldX-a.x)},worldAngleToPointer:function(a,b){return this.angleToPointer(a,b,!0)}},c.Physics.Arcade.Body=function(a){this.sprite=a,this.game=a.game,this.type=c.Physics.ARCADE,this.enable=!0,this.offset=new c.Point,this.position=new c.Point(a.x,a.y),this.prev=new c.Point(this.position.x,this.position.y),this.allowRotation=!0,this.rotation=a.rotation,this.preRotation=a.rotation,this.width=a.width,this.height=a.height,this.sourceWidth=a.width,this.sourceHeight=a.height,a.texture&&(this.sourceWidth=a.texture.frame.width,this.sourceHeight=a.texture.frame.height),this.halfWidth=Math.abs(a.width/2),this.halfHeight=Math.abs(a.height/2),this.center=new c.Point(a.x+this.halfWidth,a.y+this.halfHeight),this.velocity=new c.Point,this.newVelocity=new c.Point(0,0),this.deltaMax=new c.Point(0,0),this.acceleration=new c.Point,this.drag=new c.Point,this.allowGravity=!0,this.gravity=new c.Point(0,0),this.bounce=new c.Point,this.worldBounce=null,this.maxVelocity=new c.Point(1e4,1e4),this.friction=new c.Point(1,0),this.angularVelocity=0,this.angularAcceleration=0,this.angularDrag=0,this.maxAngular=1e3,this.mass=1,this.angle=0,this.speed=0,this.facing=c.NONE,this.immovable=!1,this.moves=!0,this.customSeparateX=!1,this.customSeparateY=!1,this.overlapX=0,this.overlapY=0,this.embedded=!1,this.collideWorldBounds=!1,this.checkCollision={none:!1,any:!0,up:!0,down:!0,left:!0,right:!0},this.touching={none:!0,up:!1,down:!1,left:!1,right:!1},this.wasTouching={none:!0,up:!1,down:!1,left:!1,right:!1},this.blocked={up:!1,down:!1,left:!1,right:!1},this.tilePadding=new c.Point,this.dirty=!1,this.skipQuadTree=!1,this.syncBounds=!1,this.isMoving=!1,this.stopVelocityOnCollide=!0,this.moveTimer=0,this.moveDistance=0,this.moveDuration=0,this.moveTarget=null,this.moveEnd=null,this.onMoveComplete=new c.Signal,this.movementCallback=null,this.movementCallbackContext=null,this._reset=!0,this._sx=a.scale.x,this._sy=a.scale.y,this._dx=0,this._dy=0},c.Physics.Arcade.Body.prototype={updateBounds:function(){if(this.syncBounds){var a=this.sprite.getBounds();a.ceilAll(),(a.width!==this.width||a.height!==this.height)&&(this.width=a.width,this.height=a.height,this._reset=!0)}else{var b=Math.abs(this.sprite.scale.x),c=Math.abs(this.sprite.scale.y);(b!==this._sx||c!==this._sy)&&(this.width=this.sourceWidth*b,this.height=this.sourceHeight*c,this._sx=b,this._sy=c,this._reset=!0)}this._reset&&(this.halfWidth=Math.floor(this.width/2),this.halfHeight=Math.floor(this.height/2),this.center.setTo(this.position.x+this.halfWidth,this.position.y+this.halfHeight))},preUpdate:function(){this.enable&&!this.game.physics.arcade.isPaused&&(this.dirty=!0,this.wasTouching.none=this.touching.none,this.wasTouching.up=this.touching.up,this.wasTouching.down=this.touching.down,this.wasTouching.left=this.touching.left,this.wasTouching.right=this.touching.right,this.touching.none=!0,this.touching.up=!1,this.touching.down=!1,this.touching.left=!1,this.touching.right=!1,this.blocked.up=!1,this.blocked.down=!1,this.blocked.left=!1,this.blocked.right=!1,this.embedded=!1,this.updateBounds(),this.position.x=this.sprite.world.x-this.sprite.anchor.x*this.sprite.width+this.sprite.scale.x*this.offset.x,this.position.x-=this.sprite.scale.x<0?this.width:0,this.position.y=this.sprite.world.y-this.sprite.anchor.y*this.sprite.height+this.sprite.scale.y*this.offset.y,this.position.y-=this.sprite.scale.y<0?this.height:0,this.rotation=this.sprite.angle,this.preRotation=this.rotation,(this._reset||this.sprite.fresh)&&(this.prev.x=this.position.x,this.prev.y=this.position.y),this.moves&&(this.game.physics.arcade.updateMotion(this),this.newVelocity.set(this.velocity.x*this.game.time.physicsElapsed,this.velocity.y*this.game.time.physicsElapsed),this.position.x+=this.newVelocity.x,this.position.y+=this.newVelocity.y,(this.position.x!==this.prev.x||this.position.y!==this.prev.y)&&(this.angle=Math.atan2(this.velocity.y,this.velocity.x)),this.speed=Math.sqrt(this.velocity.x*this.velocity.x+this.velocity.y*this.velocity.y),this.collideWorldBounds&&this.checkWorldBounds()),this._dx=this.deltaX(),this._dy=this.deltaY(),this._reset=!1)},updateMovement:function(){var a=0,b=0!==this.overlapX||0!==this.overlapY;if(this.moveDuration>0?(this.moveTimer+=this.game.time.elapsedMS,a=this.moveTimer/this.moveDuration):(this.moveTarget.end.set(this.position.x,this.position.y),a=this.moveTarget.length/this.moveDistance),this.movementCallback)var c=this.movementCallback.call(this.movementCallbackContext,this,this.velocity,a);return b||a>=1||void 0!==c&&c!==!0?(this.stopMovement(a>=1||this.stopVelocityOnCollide&&b),!1):!0},stopMovement:function(a){this.isMoving&&(this.isMoving=!1,a&&this.velocity.set(0),this.onMoveComplete.dispatch(this.sprite,0!==this.overlapX||0!==this.overlapY))},postUpdate:function(){this.enable&&this.dirty&&(this.isMoving&&this.updateMovement(), -this.dirty=!1,this.deltaX()<0?this.facing=c.LEFT:this.deltaX()>0&&(this.facing=c.RIGHT),this.deltaY()<0?this.facing=c.UP:this.deltaY()>0&&(this.facing=c.DOWN),this.moves&&(this._dx=this.deltaX(),this._dy=this.deltaY(),0!==this.deltaMax.x&&0!==this._dx&&(this._dx<0&&this._dx<-this.deltaMax.x?this._dx=-this.deltaMax.x:this._dx>0&&this._dx>this.deltaMax.x&&(this._dx=this.deltaMax.x)),0!==this.deltaMax.y&&0!==this._dy&&(this._dy<0&&this._dy<-this.deltaMax.y?this._dy=-this.deltaMax.y:this._dy>0&&this._dy>this.deltaMax.y&&(this._dy=this.deltaMax.y)),this.sprite.position.x+=this._dx,this.sprite.position.y+=this._dy,this._reset=!0),this.center.setTo(this.position.x+this.halfWidth,this.position.y+this.halfHeight),this.allowRotation&&(this.sprite.angle+=this.deltaZ()),this.prev.x=this.position.x,this.prev.y=this.position.y)},checkWorldBounds:function(){var a=this.position,b=this.game.physics.arcade.bounds,c=this.game.physics.arcade.checkCollision,d=this.worldBounce?-this.worldBounce.x:-this.bounce.x,e=this.worldBounce?-this.worldBounce.y:-this.bounce.y;a.xb.right&&c.right&&(a.x=b.right-this.width,this.velocity.x*=d,this.blocked.right=!0),a.yb.bottom&&c.down&&(a.y=b.bottom-this.height,this.velocity.y*=e,this.blocked.down=!0)},moveFrom:function(a,b,c){if(void 0===b&&(b=this.speed),0===b)return!1;var d;return void 0===c?(d=this.angle,c=this.game.math.radToDeg(d)):d=this.game.math.degToRad(c),this.moveTimer=0,this.moveDuration=a,0===c||180===c?this.velocity.set(Math.cos(d)*b,0):90===c||270===c?this.velocity.set(0,Math.sin(d)*b):this.velocity.set(Math.cos(d)*b,Math.sin(d)*b),this.isMoving=!0,!0},moveTo:function(a,b,d){var e=b/(a/1e3);if(0===e)return!1;var f;return void 0===d?(f=this.angle,d=this.game.math.radToDeg(f)):f=this.game.math.degToRad(d),b=Math.abs(b),this.moveDuration=0,this.moveDistance=b,null===this.moveTarget&&(this.moveTarget=new c.Line,this.moveEnd=new c.Point),this.moveTarget.fromAngle(this.x,this.y,f,b),this.moveEnd.set(this.moveTarget.end.x,this.moveTarget.end.y),this.moveTarget.setTo(this.x,this.y,this.x,this.y),0===d||180===d?this.velocity.set(Math.cos(f)*e,0):90===d||270===d?this.velocity.set(0,Math.sin(f)*e):this.velocity.set(Math.cos(f)*e,Math.sin(f)*e),this.isMoving=!0,!0},setSize:function(a,b,c,d){void 0===c&&(c=this.offset.x),void 0===d&&(d=this.offset.y),this.sourceWidth=a,this.sourceHeight=b,this.width=this.sourceWidth*this._sx,this.height=this.sourceHeight*this._sy,this.halfWidth=Math.floor(this.width/2),this.halfHeight=Math.floor(this.height/2),this.offset.setTo(c,d),this.center.setTo(this.position.x+this.halfWidth,this.position.y+this.halfHeight)},reset:function(a,b){this.velocity.set(0),this.acceleration.set(0),this.speed=0,this.angularVelocity=0,this.angularAcceleration=0,this.position.x=a-this.sprite.anchor.x*this.sprite.width+this.sprite.scale.x*this.offset.x,this.position.x-=this.sprite.scale.x<0?this.width:0,this.position.y=b-this.sprite.anchor.y*this.sprite.height+this.sprite.scale.y*this.offset.y,this.position.y-=this.sprite.scale.y<0?this.height:0,this.prev.x=this.position.x,this.prev.y=this.position.y,this.rotation=this.sprite.angle,this.preRotation=this.rotation,this._sx=this.sprite.scale.x,this._sy=this.sprite.scale.y,this.center.setTo(this.position.x+this.halfWidth,this.position.y+this.halfHeight)},hitTest:function(a,b){return c.Rectangle.contains(this,a,b)},onFloor:function(){return this.blocked.down},onCeiling:function(){return this.blocked.up},onWall:function(){return this.blocked.left||this.blocked.right},deltaAbsX:function(){return this.deltaX()>0?this.deltaX():-this.deltaX()},deltaAbsY:function(){return this.deltaY()>0?this.deltaY():-this.deltaY()},deltaX:function(){return this.position.x-this.prev.x},deltaY:function(){return this.position.y-this.prev.y},deltaZ:function(){return this.rotation-this.preRotation},destroy:function(){this.sprite.parent&&this.sprite.parent instanceof c.Group&&this.sprite.parent.removeFromHash(this.sprite),this.sprite.body=null,this.sprite=null}},Object.defineProperty(c.Physics.Arcade.Body.prototype,"left",{get:function(){return this.position.x}}),Object.defineProperty(c.Physics.Arcade.Body.prototype,"right",{get:function(){return this.position.x+this.width}}),Object.defineProperty(c.Physics.Arcade.Body.prototype,"top",{get:function(){return this.position.y}}),Object.defineProperty(c.Physics.Arcade.Body.prototype,"bottom",{get:function(){return this.position.y+this.height}}),Object.defineProperty(c.Physics.Arcade.Body.prototype,"x",{get:function(){return this.position.x},set:function(a){this.position.x=a}}),Object.defineProperty(c.Physics.Arcade.Body.prototype,"y",{get:function(){return this.position.y},set:function(a){this.position.y=a}}),c.Physics.Arcade.Body.render=function(a,b,c,d){void 0===d&&(d=!0),c=c||"rgba(0,255,0,0.4)",d?(a.fillStyle=c,a.fillRect(b.position.x-b.game.camera.x,b.position.y-b.game.camera.y,b.width,b.height)):(a.strokeStyle=c,a.strokeRect(b.position.x-b.game.camera.x,b.position.y-b.game.camera.y,b.width,b.height))},c.Physics.Arcade.Body.renderBodyInfo=function(a,b){a.line("x: "+b.x.toFixed(2),"y: "+b.y.toFixed(2),"width: "+b.width,"height: "+b.height),a.line("velocity x: "+b.velocity.x.toFixed(2),"y: "+b.velocity.y.toFixed(2),"deltaX: "+b._dx.toFixed(2),"deltaY: "+b._dy.toFixed(2)),a.line("acceleration x: "+b.acceleration.x.toFixed(2),"y: "+b.acceleration.y.toFixed(2),"speed: "+b.speed.toFixed(2),"angle: "+b.angle.toFixed(2)),a.line("gravity x: "+b.gravity.x,"y: "+b.gravity.y,"bounce x: "+b.bounce.x.toFixed(2),"y: "+b.bounce.y.toFixed(2)),a.line("touching left: "+b.touching.left,"right: "+b.touching.right,"up: "+b.touching.up,"down: "+b.touching.down),a.line("blocked left: "+b.blocked.left,"right: "+b.blocked.right,"up: "+b.blocked.up,"down: "+b.blocked.down)},c.Physics.Arcade.Body.prototype.constructor=c.Physics.Arcade.Body,c.Physics.Arcade.TilemapCollision=function(){},c.Physics.Arcade.TilemapCollision.prototype={TILE_BIAS:16,collideSpriteVsTilemapLayer:function(a,b,c,d,e,f){if(a.body){var g=b.getTiles(a.body.position.x-a.body.tilePadding.x,a.body.position.y-a.body.tilePadding.y,a.body.width+a.body.tilePadding.x,a.body.height+a.body.tilePadding.y,!1,!1);if(0!==g.length)for(var h=0;hb.deltaAbsY()?j=-1:b.deltaAbsX()j){if((c.faceLeft||c.faceRight)&&(h=this.tileCheckX(b,c,d),0!==h&&!c.intersects(b.position.x-f,b.position.y-g,b.right-f,b.bottom-g)))return!0;(c.faceTop||c.faceBottom)&&(i=this.tileCheckY(b,c,d))}else{if((c.faceTop||c.faceBottom)&&(i=this.tileCheckY(b,c,d),0!==i&&!c.intersects(b.position.x-f,b.position.y-g,b.right-f,b.bottom-g)))return!0;(c.faceLeft||c.faceRight)&&(h=this.tileCheckX(b,c,d))}return 0!==h||0!==i},tileCheckX:function(a,b,c){var d=0,e=c.fixedToCamera?0:c.position.x;return a.deltaX()<0&&!a.blocked.left&&b.collideRight&&a.checkCollision.left?b.faceRight&&a.x-e0&&!a.blocked.right&&b.collideLeft&&a.checkCollision.right&&b.faceLeft&&a.right-e>b.left&&(d=a.right-e-b.left,d>this.TILE_BIAS&&(d=0)),0!==d&&(a.customSeparateX?a.overlapX=d:this.processTileSeparationX(a,d)),d},tileCheckY:function(a,b,c){var d=0,e=c.fixedToCamera?0:c.position.y;return a.deltaY()<0&&!a.blocked.up&&b.collideDown&&a.checkCollision.up?b.faceBottom&&a.y-e0&&!a.blocked.down&&b.collideUp&&a.checkCollision.down&&b.faceTop&&a.bottom-e>b.top&&(d=a.bottom-e-b.top,d>this.TILE_BIAS&&(d=0)),0!==d&&(a.customSeparateY?a.overlapY=d:this.processTileSeparationY(a,d)),d},processTileSeparationX:function(a,b){0>b?a.blocked.left=!0:b>0&&(a.blocked.right=!0),a.position.x-=b,0===a.bounce.x?a.velocity.x=0:a.velocity.x=-a.velocity.x*a.bounce.x},processTileSeparationY:function(a,b){0>b?a.blocked.up=!0:b>0&&(a.blocked.down=!0),a.position.y-=b,0===a.bounce.y?a.velocity.y=0:a.velocity.y=-a.velocity.y*a.bounce.y}},c.Utils.mixinPrototype(c.Physics.Arcade.prototype,c.Physics.Arcade.TilemapCollision.prototype),c.ImageCollection=function(a,b,c,d,e,f,g){(void 0===c||0>=c)&&(c=32),(void 0===d||0>=d)&&(d=32),void 0===e&&(e=0),void 0===f&&(f=0),this.name=a,this.firstgid=0|b,this.imageWidth=0|c,this.imageHeight=0|d,this.imageMargin=0|e,this.imageSpacing=0|f,this.properties=g||{},this.images=[],this.total=0},c.ImageCollection.prototype={containsImageIndex:function(a){return a>=this.firstgid&&athis.right||b>this.bottom)},intersects:function(a,b,c,d){return c<=this.worldX?!1:d<=this.worldY?!1:a>=this.worldX+this.width?!1:b>=this.worldY+this.height?!1:!0},setCollisionCallback:function(a,b){this.collisionCallback=a,this.collisionCallbackContext=b},destroy:function(){this.collisionCallback=null,this.collisionCallbackContext=null,this.properties=null},setCollision:function(a,b,c,d){this.collideLeft=a,this.collideRight=b,this.collideUp=c,this.collideDown=d,this.faceLeft=a,this.faceRight=b,this.faceTop=c,this.faceBottom=d},resetCollision:function(){this.collideLeft=!1,this.collideRight=!1,this.collideUp=!1,this.collideDown=!1,this.faceTop=!1,this.faceBottom=!1,this.faceLeft=!1,this.faceRight=!1},isInteresting:function(a,b){return a&&b?this.collideLeft||this.collideRight||this.collideUp||this.collideDown||this.faceTop||this.faceBottom||this.faceLeft||this.faceRight||this.collisionCallback:a?this.collideLeft||this.collideRight||this.collideUp||this.collideDown:b?this.faceTop||this.faceBottom||this.faceLeft||this.faceRight:!1},copy:function(a){this.index=a.index,this.alpha=a.alpha,this.properties=a.properties,this.collideUp=a.collideUp,this.collideDown=a.collideDown,this.collideLeft=a.collideLeft,this.collideRight=a.collideRight,this.collisionCallback=a.collisionCallback,this.collisionCallbackContext=a.collisionCallbackContext}},c.Tile.prototype.constructor=c.Tile,Object.defineProperty(c.Tile.prototype,"collides",{get:function(){return this.collideLeft||this.collideRight||this.collideUp||this.collideDown}}),Object.defineProperty(c.Tile.prototype,"canCollide",{get:function(){return this.collideLeft||this.collideRight||this.collideUp||this.collideDown||this.collisionCallback}}),Object.defineProperty(c.Tile.prototype,"left",{get:function(){return this.worldX}}),Object.defineProperty(c.Tile.prototype,"right",{get:function(){return this.worldX+this.width}}),Object.defineProperty(c.Tile.prototype,"top",{get:function(){return this.worldY}}),Object.defineProperty(c.Tile.prototype,"bottom",{get:function(){return this.worldY+this.height}}),c.Tilemap=function(a,b,d,e,f,g){this.game=a,this.key=b;var h=c.TilemapParser.parse(this.game,b,d,e,f,g);null!==h&&(this.width=h.width,this.height=h.height,this.tileWidth=h.tileWidth,this.tileHeight=h.tileHeight,this.orientation=h.orientation,this.format=h.format,this.version=h.version,this.properties=h.properties,this.widthInPixels=h.widthInPixels,this.heightInPixels=h.heightInPixels,this.layers=h.layers,this.tilesets=h.tilesets,this.imagecollections=h.imagecollections,this.tiles=h.tiles,this.objects=h.objects,this.collideIndexes=[],this.collision=h.collision,this.images=h.images,this.currentLayer=0,this.debugMap=[],this._results=[],this._tempA=0,this._tempB=0)},c.Tilemap.CSV=0,c.Tilemap.TILED_JSON=1,c.Tilemap.NORTH=0,c.Tilemap.EAST=1,c.Tilemap.SOUTH=2,c.Tilemap.WEST=3,c.Tilemap.prototype={create:function(a,b,c,d,e,f){return void 0===f&&(f=this.game.world),this.width=b,this.height=c,this.setTileSize(d,e),this.layers.length=0,this.createBlankLayer(a,b,c,d,e,f)},setTileSize:function(a,b){this.tileWidth=a,this.tileHeight=b,this.widthInPixels=this.width*a,this.heightInPixels=this.height*b},addTilesetImage:function(a,b,d,e,f,g,h){if(void 0===a)return null;void 0===d&&(d=this.tileWidth),void 0===e&&(e=this.tileHeight),void 0===f&&(f=0),void 0===g&&(g=0),void 0===h&&(h=0),0===d&&(d=32),0===e&&(e=32);var i=null;if((void 0===b||null===b)&&(b=a),b instanceof c.BitmapData)i=b.canvas;else{if(!this.game.cache.checkImageKey(b))return console.warn('Phaser.Tilemap.addTilesetImage: Invalid image key given: "'+b+'"'),null;i=this.game.cache.getImage(b)}var j=this.getTilesetIndex(a);if(null===j&&this.format===c.Tilemap.TILED_JSON)return console.warn('Phaser.Tilemap.addTilesetImage: No data found in the JSON matching the tileset name: "'+a+'"'),null;if(this.tilesets[j])return this.tilesets[j].setImage(i),this.tilesets[j];var k=new c.Tileset(a,h,d,e,f,g,{});k.setImage(i),this.tilesets.push(k);for(var l=this.tilesets.length-1,m=f,n=f,o=0,p=0,q=0,r=h;rl;l++)if(-1!==a.indexOf(this._results[l].index)){j=new g.customClass(this.game,this._results[l].worldX,this._results[l].worldY,d);for(var n in g)j[n]=g[n];f.add(j),k++}if(1===b.length)for(l=0;l1)for(l=0;lthis.layers.length?void console.warn("Tilemap.createLayer: Invalid layer ID given: "+g):f?e.add(new c.TilemapLayerGL(this.game,this,g,b,d)):e.add(new c.TilemapLayer(this.game,this,g,b,d))},createBlankLayer:function(a,b,d,e,f,g){if(void 0===g&&(g=this.game.world),null!==this.getLayerIndex(a))return void console.warn("Tilemap.createBlankLayer: Layer with matching name already exists");for(var h,i={name:a,x:0,y:0,width:b,height:d,widthInPixels:b*e,heightInPixels:d*f,alpha:1,visible:!0,properties:{},indexes:[],callbacks:[],bodies:[],data:null},j=[],k=0;d>k;k++){h=[];for(var l=0;b>l;l++)h.push(new c.Tile(i,-1,l,k,e,f));j.push(h)}i.data=j,this.layers.push(i),this.currentLayer=this.layers.length-1;var m=i.widthInPixels,n=i.heightInPixels;m>this.game.width&&(m=this.game.width),n>this.game.height&&(n=this.game.height);var j=new c.TilemapLayer(this.game,this,this.layers.length-1,m,n);return j.name=a,g.add(j)},getIndex:function(a,b){for(var c=0;ce;e++)this.layers[d].callbacks[a[e]]={callback:b,callbackContext:c}},setTileLocationCallback:function(a,b,c,d,e,f,g){if(g=this.getLayer(g),this.copy(a,b,c,d,g),!(this._results.length<2))for(var h=1;hb)){for(var f=a;b>=f;f++)this.setCollisionByIndex(f,c,d,!1);e&&this.calculateFaces(d)}},setCollisionByExclusion:function(a,b,c,d){void 0===b&&(b=!0),void 0===d&&(d=!0),c=this.getLayer(c);for(var e=0,f=this.tiles.length;f>e;e++)-1===a.indexOf(e)&&this.setCollisionByIndex(e,b,c,!1);d&&this.calculateFaces(c)},setCollisionByIndex:function(a,b,c,d){if(void 0===b&&(b=!0),void 0===c&&(c=this.currentLayer),void 0===d&&(d=!0),b)this.collideIndexes.push(a);else{var e=this.collideIndexes.indexOf(a);e>-1&&this.collideIndexes.splice(e,1)}for(var f=0;ff;f++)for(var h=0,i=this.layers[a].width;i>h;h++){var j=this.layers[a].data[f][h];j&&(b=this.getTileAbove(a,h,f),c=this.getTileBelow(a,h,f),d=this.getTileLeft(a,h,f),e=this.getTileRight(a,h,f),j.collides&&(j.faceTop=!0,j.faceBottom=!0,j.faceLeft=!0,j.faceRight=!0),b&&b.collides&&(j.faceTop=!1),c&&c.collides&&(j.faceBottom=!1),d&&d.collides&&(j.faceLeft=!1),e&&e.collides&&(j.faceRight=!1))}},getTileAbove:function(a,b,c){return c>0?this.layers[a].data[c-1][b]:null},getTileBelow:function(a,b,c){return c0?this.layers[a].data[c][b-1]:null},getTileRight:function(a,b,c){return b-1},removeTile:function(a,b,d){if(d=this.getLayer(d),a>=0&&a=0&&b=0&&b=0&&d-1?this.layers[e].data[d][b].setCollision(!0,!0,!0,!0):this.layers[e].data[d][b].resetCollision(),this.layers[e].dirty=!0,this.calculateFaces(e),this.layers[e].data[d][b]}return null},putTileWorldXY:function(a,b,c,d,e,f){return f=this.getLayer(f),b=this.game.math.snapToFloor(b,d)/d,c=this.game.math.snapToFloor(c,e)/e,this.putTile(a,b,c,f)},searchTileIndex:function(a,b,c,d){void 0===b&&(b=0),void 0===c&&(c=!1),d=this.getLayer(d);var e=0;if(c){for(var f=this.layers[d].height-1;f>=0;f--)for(var g=this.layers[d].width-1;g>=0;g--)if(this.layers[d].data[f][g].index===a){if(e===b)return this.layers[d].data[f][g];e++}}else for(var f=0;f=0&&a=0&&ba&&(a=0),0>b&&(b=0),c>this.layers[e].width&&(c=this.layers[e].width),d>this.layers[e].height&&(d=this.layers[e].height),this._results.length=0,this._results.push({x:a,y:b,width:c,height:d,layer:e});for(var f=b;b+d>f;f++)for(var g=a;a+c>g;g++)this._results.push(this.layers[e].data[f][g]);return this._results},paste:function(a,b,c,d){if(void 0===a&&(a=0),void 0===b&&(b=0),d=this.getLayer(d),c&&!(c.length<2)){for(var e=a-c[1].x,f=b-c[1].y,g=1;g1?this.debugMap[this.layers[this.currentLayer].data[c][d]]?b.push("background: "+this.debugMap[this.layers[this.currentLayer].data[c][d]]):b.push("background: #ffffff"):b.push("background: rgb(0, 0, 0)");a+="\n"}b[0]=a,console.log.apply(console,b)},destroy:function(){this.removeAllLayers(),this.data=[],this.game=null}},c.Tilemap.prototype.constructor=c.Tilemap,Object.defineProperty(c.Tilemap.prototype,"layer",{get:function(){return this.layers[this.currentLayer]},set:function(a){a!==this.currentLayer&&this.setLayer(a)}}),c.TilemapLayer=function(a,b,d,e,f){e|=0,f|=0,c.Sprite.call(this,a,0,0),this.map=b,this.index=d,this.layer=b.layers[d],this.canvas=PIXI.CanvasPool.create(this,e,f),this.context=this.canvas.getContext("2d"),this.setTexture(new PIXI.Texture(new PIXI.BaseTexture(this.canvas))),this.type=c.TILEMAPLAYER,this.physicsType=c.TILEMAPLAYER,this.renderSettings={enableScrollDelta:!1,overdrawRatio:.2,copyCanvas:null},this.debug=!1,this.exists=!0,this.debugSettings={missingImageFill:"rgb(255,255,255)",debuggedTileOverfill:"rgba(0,255,0,0.4)",forceFullRedraw:!0,debugAlpha:.5,facingEdgeStroke:"rgba(0,255,0,1)",collidingTileOverfill:"rgba(0,255,0,0.2)"},this.scrollFactorX=1,this.scrollFactorY=1,this.dirty=!0,this.rayStepRate=4,this._wrap=!1,this._mc={scrollX:0,scrollY:0,renderWidth:0,renderHeight:0,tileWidth:b.tileWidth,tileHeight:b.tileHeight,cw:b.tileWidth,ch:b.tileHeight,tilesets:[]},this._scrollX=0,this._scrollY=0,this._results=[],a.device.canvasBitBltShift||(this.renderSettings.copyCanvas=c.TilemapLayer.ensureSharedCopyCanvas()),this.fixedToCamera=!0},c.TilemapLayer.prototype=Object.create(c.Sprite.prototype),c.TilemapLayer.prototype.constructor=c.TilemapLayer,c.TilemapLayer.prototype.preUpdateCore=c.Component.Core.preUpdate,c.TilemapLayer.sharedCopyCanvas=null,c.TilemapLayer.ensureSharedCopyCanvas=function(){return this.sharedCopyCanvas||(this.sharedCopyCanvas=c.Canvas.create(2,2)),this.sharedCopyCanvas},c.TilemapLayer.prototype.preUpdate=function(){return this.preUpdateCore()},c.TilemapLayer.prototype.postUpdate=function(){this.fixedToCamera&&(this.position.x=(this.game.camera.view.x+this.cameraOffset.x)/this.game.camera.scale.x,this.position.y=(this.game.camera.view.y+this.cameraOffset.y)/this.game.camera.scale.y),this._scrollX=this.game.camera.view.x*this.scrollFactorX/this.scale.x,this._scrollY=this.game.camera.view.y*this.scrollFactorY/this.scale.y},c.TilemapLayer.prototype._renderCanvas=function(a){this.fixedToCamera&&(this.position.x=(this.game.camera.view.x+this.cameraOffset.x)/this.game.camera.scale.x,this.position.y=(this.game.camera.view.y+this.cameraOffset.y)/this.game.camera.scale.y),this._scrollX=this.game.camera.view.x*this.scrollFactorX/this.scale.x,this._scrollY=this.game.camera.view.y*this.scrollFactorY/this.scale.y,this.render(),PIXI.Sprite.prototype._renderCanvas.call(this,a)},c.TilemapLayer.prototype._renderWebGL=function(a){this.fixedToCamera&&(this.position.x=(this.game.camera.view.x+this.cameraOffset.x)/this.game.camera.scale.x,this.position.y=(this.game.camera.view.y+this.cameraOffset.y)/this.game.camera.scale.y),this._scrollX=this.game.camera.view.x*this.scrollFactorX/this.scale.x,this._scrollY=this.game.camera.view.y*this.scrollFactorY/this.scale.y,this.render(),PIXI.Sprite.prototype._renderWebGL.call(this,a)},c.TilemapLayer.prototype.destroy=function(){PIXI.CanvasPool.remove(this),c.Component.Destroy.prototype.destroy.call(this)},c.TilemapLayer.prototype.resize=function(a,b){this.canvas.width=a,this.canvas.height=b,this.texture.frame.resize(a,b),this.texture.width=a,this.texture.height=b,this.texture.crop.width=a,this.texture.crop.height=b,this.texture.baseTexture.width=a,this.texture.baseTexture.height=b,this.texture.baseTexture.dirty(),this.texture.requiresUpdate=!0,this.texture._updateUvs(),this.dirty=!0},c.TilemapLayer.prototype.resizeWorld=function(){this.game.world.setBounds(0,0,this.layer.widthInPixels*this.scale.x,this.layer.heightInPixels*this.scale.y)},c.TilemapLayer.prototype._fixX=function(a){return 1===this.scrollFactorX||0===this.scrollFactorX&&0===this.position.x?a:0===this.scrollFactorX&&0!==this.position.x?a-this.position.x:this._scrollX+(a-this._scrollX/this.scrollFactorX)},c.TilemapLayer.prototype._unfixX=function(a){return 1===this.scrollFactorX?a:this._scrollX/this.scrollFactorX+(a-this._scrollX)},c.TilemapLayer.prototype._fixY=function(a){return 1===this.scrollFactorY||0===this.scrollFactorY&&0===this.position.y?a:0===this.scrollFactorY&&0!==this.position.y?a-this.position.y:this._scrollY+(a-this._scrollY/this.scrollFactorY)},c.TilemapLayer.prototype._unfixY=function(a){return 1===this.scrollFactorY?a:this._scrollY/this.scrollFactorY+(a-this._scrollY)},c.TilemapLayer.prototype.getTileX=function(a){return Math.floor(this._fixX(a)/this._mc.tileWidth)},c.TilemapLayer.prototype.getTileY=function(a){return Math.floor(this._fixY(a)/this._mc.tileHeight)},c.TilemapLayer.prototype.getTileXY=function(a,b,c){return c.x=this.getTileX(a),c.y=this.getTileY(b),c},c.TilemapLayer.prototype.getRayCastTiles=function(a,b,c,d){b||(b=this.rayStepRate),void 0===c&&(c=!1),void 0===d&&(d=!1);var e=this.getTiles(a.x,a.y,a.width,a.height,c,d);if(0===e.length)return[];for(var f=a.coordinatesOnLine(b),g=[],h=0;hl;l++)for(var m=h;h+j>m;m++){var n=this.layer.data[l];n&&n[m]&&(g||n[m].isInteresting(e,f))&&this._results.push(n[m])}return this._results.slice()},c.TilemapLayer.prototype.resolveTileset=function(a){var b=this._mc.tilesets;if(2e3>a)for(;b.lengthb&&(g=-b,i=0),0>c&&(h=-c,j=0);var k=this.renderSettings.copyCanvas;if(k){(k.width=c&&(c=Math.max(0,c),e=Math.min(h-1,e)),f>=d&&(d=Math.max(0,d),f=Math.min(i-1,f)));var n,o,p,q,r,s,t=c*j-a,u=d*k-b,v=(c+(1<<20)*h)%h,w=(d+(1<<20)*i)%i;for(g.fillStyle=this.tileColor,q=w,s=f-d,o=u;s>=0;q++,s--,o+=k){q>=i&&(q-=i);var x=this.layer.data[q];for(p=v,r=e-c,n=t;r>=0;p++,r--,n+=j){p>=h&&(p-=h);var y=x[p];if(y&&!(y.index<0)){var z=y.index,A=l[z];void 0===A&&(A=this.resolveTileset(z)),y.alpha===m||this.debug||(g.globalAlpha=y.alpha,m=y.alpha),A?y.rotation||y.flipped?(g.save(),g.translate(n+y.centerX,o+y.centerY),g.rotate(y.rotation),y.flipped&&g.scale(-1,1),A.draw(g,-y.centerX,-y.centerY,z),g.restore()):A.draw(g,n,o,z):this.debugSettings.missingImageFill&&(g.fillStyle=this.debugSettings.missingImageFill,g.fillRect(n,o,j,k)),y.debug&&this.debugSettings.debuggedTileOverfill&&(g.fillStyle=this.debugSettings.debuggedTileOverfill,g.fillRect(n,o,j,k))}}}},c.TilemapLayer.prototype.renderDeltaScroll=function(a,b){var c=this._mc.scrollX,d=this._mc.scrollY,e=this.canvas.width,f=this.canvas.height,g=this._mc.tileWidth,h=this._mc.tileHeight,i=0,j=-g,k=0,l=-h;if(0>a?(i=e+a,j=e-1):a>0&&(j=a),0>b?(k=f+b,l=f-1):b>0&&(l=b),this.shiftCanvas(this.context,a,b),i=Math.floor((i+c)/g),j=Math.floor((j+c)/g),k=Math.floor((k+d)/h),l=Math.floor((l+d)/h),j>=i){this.context.clearRect(i*g-c,0,(j-i+1)*g,f);var m=Math.floor((0+d)/h),n=Math.floor((f-1+d)/h);this.renderRegion(c,d,i,m,j,n)}if(l>=k){this.context.clearRect(0,k*h-d,e,(l-k+1)*h);var o=Math.floor((0+c)/g),p=Math.floor((e-1+c)/g);this.renderRegion(c,d,o,k,p,l)}},c.TilemapLayer.prototype.renderFull=function(){var a=this._mc.scrollX,b=this._mc.scrollY,c=this.canvas.width,d=this.canvas.height,e=this._mc.tileWidth,f=this._mc.tileHeight,g=Math.floor(a/e),h=Math.floor((c-1+a)/e),i=Math.floor(b/f),j=Math.floor((d-1+b)/f);this.context.clearRect(0,0,c,d),this.renderRegion(a,b,g,i,h,j)},c.TilemapLayer.prototype.render=function(){var a=!1;if(this.visible){(this.dirty||this.layer.dirty)&&(this.layer.dirty=!1,a=!0);var b=this.canvas.width,c=this.canvas.height,d=0|this._scrollX,e=0|this._scrollY,f=this._mc,g=f.scrollX-d,h=f.scrollY-e;if(a||0!==g||0!==h||f.renderWidth!==b||f.renderHeight!==c)return this.context.save(),f.scrollX=d,f.scrollY=e,(f.renderWidth!==b||f.renderHeight!==c)&&(f.renderWidth=b,f.renderHeight=c),this.debug&&(this.context.globalAlpha=this.debugSettings.debugAlpha,this.debugSettings.forceFullRedraw&&(a=!0)),!a&&this.renderSettings.enableScrollDelta&&Math.abs(g)+Math.abs(h)=0;d++,f--,b+=o){d>=m&&(d-=m);var x=this.layer.data[d];for(c=v,e=q-p,a=t;e>=0;c++,e--,a+=n){c>=l&&(c-=l);var y=x[c];!y||y.index<0||!y.collides||(this.debugSettings.collidingTileOverfill&&(i.fillStyle=this.debugSettings.collidingTileOverfill,i.fillRect(a,b,this._mc.cw,this._mc.ch)),this.debugSettings.facingEdgeStroke&&(i.beginPath(),y.faceTop&&(i.moveTo(a,b),i.lineTo(a+this._mc.cw,b)),y.faceBottom&&(i.moveTo(a,b+this._mc.ch),i.lineTo(a+this._mc.cw,b+this._mc.ch)),y.faceLeft&&(i.moveTo(a,b),i.lineTo(a,b+this._mc.ch)),y.faceRight&&(i.moveTo(a+this._mc.cw,b),i.lineTo(a+this._mc.cw,b+this._mc.ch)),i.stroke()))}}},Object.defineProperty(c.TilemapLayer.prototype,"wrap",{get:function(){return this._wrap},set:function(a){this._wrap=a,this.dirty=!0}}),Object.defineProperty(c.TilemapLayer.prototype,"scrollX",{get:function(){return this._scrollX},set:function(a){this._scrollX=a}}),Object.defineProperty(c.TilemapLayer.prototype,"scrollY",{get:function(){return this._scrollY},set:function(a){this._scrollY=a}}),Object.defineProperty(c.TilemapLayer.prototype,"collisionWidth",{get:function(){return this._mc.cw},set:function(a){this._mc.cw=0|a,this.dirty=!0}}),Object.defineProperty(c.TilemapLayer.prototype,"collisionHeight",{get:function(){return this._mc.ch},set:function(a){this._mc.ch=0|a,this.dirty=!0}}),c.TilemapParser={INSERT_NULL:!1,parse:function(a,b,d,e,f,g){if(void 0===d&&(d=32),void 0===e&&(e=32),void 0===f&&(f=10),void 0===g&&(g=10),void 0===b)return this.getEmptyData();if(null===b)return this.getEmptyData(d,e,f,g);var h=a.cache.getTilemapData(b);if(h){if(h.format===c.Tilemap.CSV)return this.parseCSV(b,h.data,d,e);if(!h.format||h.format===c.Tilemap.TILED_JSON)return this.parseTiledJSON(h.data)}else console.warn("Phaser.TilemapParser.parse - No map data found for key "+b)},parseCSV:function(a,b,d,e){var f=this.getEmptyData();b=b.trim();for(var g=[],h=b.split("\n"),i=h.length,j=0,k=0;kk;k+=4)j[k/4]=(h.charCodeAt(k)|h.charCodeAt(k+1)<<8|h.charCodeAt(k+2)<<16|h.charCodeAt(k+3)<<24)>>>0;g.data=j,delete g.encoding}else if(g.compression){console.warn("TilemapParser.parseTiledJSON - Layer compression is unsupported, skipping layer '"+g.name+"'");continue}var l={name:g.name,x:g.x,y:g.y,width:g.width,height:g.height,widthInPixels:g.width*a.tilewidth,heightInPixels:g.height*a.tileheight,alpha:g.opacity,visible:g.visible,properties:{},indexes:[],callbacks:[],bodies:[]};g.properties&&(l.properties=g.properties);for(var m,n,o,p,q=0,r=[],s=[],t=0,i=g.data.length;i>t;t++){if(m=0,n=!1,p=g.data[t],p>536870912)switch(o=0,p>2147483648&&(p-=2147483648,o+=4),p>1073741824&&(p-=1073741824,o+=2),p>536870912&&(p-=536870912,o+=1),o){case 5:m=Math.PI/2;break;case 6:m=Math.PI;break;case 3:m=3*Math.PI/2;break;case 4:m=0,n=!0;break;case 7:m=Math.PI/2,n=!0;break;case 2:m=Math.PI,n=!0;break;case 1:m=3*Math.PI/2,n=!0}p>0?(r.push(new c.Tile(l,p,q,s.length,a.tilewidth,a.tileheight)),r[r.length-1].rotation=m,r[r.length-1].flipped=n):c.TilemapParser.INSERT_NULL?r.push(null):r.push(new c.Tile(l,-1,q,s.length,a.tilewidth,a.tileheight)),q++,q===g.width&&(s.push(r),q=0,r=[])}l.data=s,e.push(l)}d.layers=e;for(var u=[],f=0;fG;G++)if(F.objects[G].gid){var H={gid:F.objects[G].gid,name:F.objects[G].name,type:F.objects[G].hasOwnProperty("type")?F.objects[G].type:"",x:F.objects[G].x,y:F.objects[G].y,visible:F.objects[G].visible,properties:F.objects[G].properties};F.objects[G].rotation&&(H.rotation=F.objects[G].rotation),D[F.name].push(H)}else if(F.objects[G].polyline){var H={name:F.objects[G].name,type:F.objects[G].type,x:F.objects[G].x,y:F.objects[G].y,width:F.objects[G].width,height:F.objects[G].height,visible:F.objects[G].visible,properties:F.objects[G].properties};F.objects[G].rotation&&(H.rotation=F.objects[G].rotation),H.polyline=[];for(var I=0;I=c)&&(c=32),(void 0===d||0>=d)&&(d=32),void 0===e&&(e=0),void 0===f&&(f=0),this.name=a,this.firstgid=0|b,this.tileWidth=0|c,this.tileHeight=0|d,this.tileMargin=0|e,this.tileSpacing=0|f,this.properties=g||{},this.image=null,this.rows=0,this.columns=0,this.total=0,this.drawCoords=[]},c.Tileset.prototype={draw:function(a,b,c,d){var e=d-this.firstgid<<1;e>=0&&e+1=this.firstgid&&a=this._timer)if(this._timer=this.game.time.time+this.frequency*this.game.time.slowMotion,0!==this._flowTotal)if(this._flowQuantity>0){for(var a=0;a=this._flowTotal)){this.on=!1;break}}else this.emitParticle()&&(this._counter++,-1!==this._flowTotal&&this._counter>=this._flowTotal&&(this.on=!1));else this.emitParticle()&&(this._counter++,this._quantity>0&&this._counter>=this._quantity&&(this.on=!1));for(var a=this.children.length;a--;)this.children[a].exists&&this.children[a].update()},c.Particles.Arcade.Emitter.prototype.makeParticles=function(a,b,c,d,e){void 0===b&&(b=0),void 0===c&&(c=this.maxParticles),void 0===d&&(d=!1),void 0===e&&(e=!1);var f,g=0,h=a,i=b;for(this._frames=b,c>this.maxParticles&&(this.maxParticles=c);c>g;)Array.isArray(a)&&(h=this.game.rnd.pick(a)),Array.isArray(b)&&(i=this.game.rnd.pick(b)),f=new this.particleClass(this.game,0,0,h,i),this.game.physics.arcade.enable(f,!1),d?(f.body.checkCollision.any=!0,f.body.checkCollision.none=!1):f.body.checkCollision.none=!0,f.body.collideWorldBounds=e,f.body.skipQuadTree=!0,f.exists=!1,f.visible=!1,f.anchor.copyFrom(this.particleAnchor),this.add(f),g++;return this},c.Particles.Arcade.Emitter.prototype.kill=function(){return this.on=!1,this.alive=!1,this.exists=!1,this},c.Particles.Arcade.Emitter.prototype.revive=function(){return this.alive=!0,this.exists=!0,this},c.Particles.Arcade.Emitter.prototype.explode=function(a,b){return this._flowTotal=0,this.start(!0,a,0,b,!1),this},c.Particles.Arcade.Emitter.prototype.flow=function(a,b,c,d,e){return(void 0===c||0===c)&&(c=1),void 0===d&&(d=-1),void 0===e&&(e=!0),c>this.maxParticles&&(c=this.maxParticles),this._counter=0,this._flowQuantity=c,this._flowTotal=d,e?(this.start(!0,a,b,c),this._counter+=c,this.on=!0,this._timer=this.game.time.time+b*this.game.time.slowMotion):this.start(!1,a,b,c),this},c.Particles.Arcade.Emitter.prototype.start=function(a,b,c,d,e){if(void 0===a&&(a=!0),void 0===b&&(b=0),(void 0===c||null===c)&&(c=250),void 0===d&&(d=0),void 0===e&&(e=!1),d>this.maxParticles&&(d=this.maxParticles),this.revive(),this.visible=!0,this.lifespan=b,this.frequency=c,a||e)for(var f=0;d>f;f++)this.emitParticle();else this.on=!0,this._quantity=d,this._counter=0,this._timer=this.game.time.time+c*this.game.time.slowMotion;return this},c.Particles.Arcade.Emitter.prototype.emitParticle=function(a,b,c,d){void 0===a&&(a=null),void 0===b&&(b=null);var e=this.getFirstExists(!1);if(null===e)return!1;var f=this.game.rnd;void 0!==c&&void 0!==d?e.loadTexture(c,d):void 0!==c&&e.loadTexture(c);var g=this.emitX,h=this.emitY;null!==a?g=a:this.width>1&&(g=f.between(this.left,this.right)),null!==b?h=b:this.height>1&&(h=f.between(this.top,this.bottom)),e.reset(g,h),e.angle=0,e.lifespan=this.lifespan,this.particleBringToTop?this.bringToTop(e):this.particleSendToBack&&this.sendToBack(e),this.autoScale?e.setScaleData(this.scaleData):1!==this.minParticleScale||1!==this.maxParticleScale?e.scale.set(f.realInRange(this.minParticleScale,this.maxParticleScale)):(this._minParticleScale.x!==this._maxParticleScale.x||this._minParticleScale.y!==this._maxParticleScale.y)&&e.scale.set(f.realInRange(this._minParticleScale.x,this._maxParticleScale.x),f.realInRange(this._minParticleScale.y,this._maxParticleScale.y)),void 0===d&&(Array.isArray(this._frames)?e.frame=this.game.rnd.pick(this._frames):e.frame=this._frames),this.autoAlpha?e.setAlphaData(this.alphaData):e.alpha=f.realInRange(this.minParticleAlpha,this.maxParticleAlpha),e.blendMode=this.blendMode;var i=e.body;return i.updateBounds(),i.bounce.copyFrom(this.bounce),i.drag.copyFrom(this.particleDrag),i.velocity.x=f.between(this.minParticleSpeed.x,this.maxParticleSpeed.x),i.velocity.y=f.between(this.minParticleSpeed.y,this.maxParticleSpeed.y),i.angularVelocity=f.between(this.minRotation,this.maxRotation),i.gravity.y=this.gravity,i.angularDrag=this.angularDrag,e.onEmit(),!0},c.Particles.Arcade.Emitter.prototype.destroy=function(){this.game.particles.remove(this),c.Group.prototype.destroy.call(this,!0,!1)},c.Particles.Arcade.Emitter.prototype.setSize=function(a,b){return this.area.width=a,this.area.height=b,this},c.Particles.Arcade.Emitter.prototype.setXSpeed=function(a,b){return a=a||0,b=b||0,this.minParticleSpeed.x=a,this.maxParticleSpeed.x=b,this},c.Particles.Arcade.Emitter.prototype.setYSpeed=function(a,b){return a=a||0,b=b||0,this.minParticleSpeed.y=a,this.maxParticleSpeed.y=b,this},c.Particles.Arcade.Emitter.prototype.setRotation=function(a,b){return a=a||0,b=b||0,this.minRotation=a,this.maxRotation=b,this},c.Particles.Arcade.Emitter.prototype.setAlpha=function(a,b,d,e,f){if(void 0===a&&(a=1),void 0===b&&(b=1),void 0===d&&(d=0),void 0===e&&(e=c.Easing.Linear.None),void 0===f&&(f=!1),this.minParticleAlpha=a,this.maxParticleAlpha=b,this.autoAlpha=!1,d>0&&a!==b){var g={v:a},h=this.game.make.tween(g).to({v:b},d,e);h.yoyo(f),this.alphaData=h.generateData(60),this.alphaData.reverse(),this.autoAlpha=!0}return this},c.Particles.Arcade.Emitter.prototype.setScale=function(a,b,d,e,f,g,h){if(void 0===a&&(a=1),void 0===b&&(b=1),void 0===d&&(d=1),void 0===e&&(e=1),void 0===f&&(f=0),void 0===g&&(g=c.Easing.Linear.None),void 0===h&&(h=!1),this.minParticleScale=1,this.maxParticleScale=1,this._minParticleScale.set(a,d),this._maxParticleScale.set(b,e),this.autoScale=!1,f>0&&(a!==b||d!==e)){var i={x:a,y:d},j=this.game.make.tween(i).to({x:b,y:e},f,g);j.yoyo(h),this.scaleData=j.generateData(60),this.scaleData.reverse(),this.autoScale=!0}return this},c.Particles.Arcade.Emitter.prototype.at=function(a){return a.center?(this.emitX=a.center.x,this.emitY=a.center.y):(this.emitX=a.world.x+a.anchor.x*a.width,this.emitY=a.world.y+a.anchor.y*a.height),this},Object.defineProperty(c.Particles.Arcade.Emitter.prototype,"width",{get:function(){return this.area.width},set:function(a){this.area.width=a}}),Object.defineProperty(c.Particles.Arcade.Emitter.prototype,"height",{get:function(){return this.area.height},set:function(a){this.area.height=a}}),Object.defineProperty(c.Particles.Arcade.Emitter.prototype,"x",{get:function(){return this.emitX},set:function(a){this.emitX=a}}),Object.defineProperty(c.Particles.Arcade.Emitter.prototype,"y",{get:function(){return this.emitY},set:function(a){this.emitY=a}}),Object.defineProperty(c.Particles.Arcade.Emitter.prototype,"left",{get:function(){return Math.floor(this.x-this.area.width/2)}}),Object.defineProperty(c.Particles.Arcade.Emitter.prototype,"right",{get:function(){return Math.floor(this.x+this.area.width/2)}}),Object.defineProperty(c.Particles.Arcade.Emitter.prototype,"top",{get:function(){return Math.floor(this.y-this.area.height/2)}}),Object.defineProperty(c.Particles.Arcade.Emitter.prototype,"bottom",{get:function(){return Math.floor(this.y+this.area.height/2)}}),c.Weapon=function(a,b){c.Plugin.call(this,a,b),this.bullets=null,this.autoExpandBulletsGroup=!1,this.autofire=!1,this.shots=0,this.fireLimit=0,this.fireRate=100,this.fireRateVariance=0,this.fireFrom=new c.Rectangle(0,0,1,1),this.fireAngle=c.ANGLE_UP,this.bulletInheritSpriteSpeed=!1,this.bulletAnimation="",this.bulletFrameRandom=!1,this.bulletFrameCycle=!1,this.bulletWorldWrap=!1,this.bulletWorldWrapPadding=0,this.bulletAngleOffset=0,this.bulletAngleVariance=0,this.bulletSpeed=200,this.bulletSpeedVariance=0,this.bulletLifespan=0,this.bulletKillDistance=0,this.bulletGravity=new c.Point(0,0),this.bulletRotateToVelocity=!1,this.bulletKey="",this.bulletFrame="",this._bulletClass=c.Bullet,this._bulletCollideWorldBounds=!1,this._bulletKillType=c.Weapon.KILL_WORLD_BOUNDS,this._data={customBody:!1,width:0,height:0,offsetX:0,offsetY:0},this.bounds=new c.Rectangle,this.bulletBounds=a.world.bounds,this.bulletFrames=[],this.bulletFrameIndex=0,this.anims={},this.onFire=new c.Signal,this.onKill=new c.Signal,this.onFireLimit=new c.Signal,this.trackedSprite=null,this.trackedPointer=null,this.trackRotation=!1,this.trackOffset=new c.Point,this._nextFire=0},c.Weapon.prototype=Object.create(c.Plugin.prototype),c.Weapon.prototype.constructor=c.Weapon,c.Weapon.KILL_NEVER=0,c.Weapon.KILL_LIFESPAN=1,c.Weapon.KILL_DISTANCE=2,c.Weapon.KILL_WEAPON_BOUNDS=3,c.Weapon.KILL_CAMERA_BOUNDS=4,c.Weapon.KILL_WORLD_BOUNDS=5,c.Weapon.KILL_STATIC_BOUNDS=6,c.Weapon.prototype.createBullets=function(a,b,d,e){return void 0===a&&(a=1),void 0===e&&(e=this.game.world),this.bullets||(this.bullets=this.game.add.physicsGroup(c.Physics.ARCADE,e),this.bullets.classType=this._bulletClass),0!==a&&(-1===a&&(this.autoExpandBulletsGroup=!0,a=1),this.bullets.createMultiple(a,b,d),this.bullets.setAll("data.bulletManager",this),this.bulletKey=b,this.bulletFrame=d),this},c.Weapon.prototype.forEach=function(a,b){return this.bullets.forEachExists(a,b,arguments),this},c.Weapon.prototype.pauseAll=function(){return this.bullets.setAll("body.enable",!1),this},c.Weapon.prototype.resumeAll=function(){return this.bullets.setAll("body.enable",!0),this},c.Weapon.prototype.killAll=function(){return this.bullets.callAllExists("kill",!0),this.bullets.setAll("body.enable",!0),this},c.Weapon.prototype.resetShots=function(a){return this.shots=0,void 0!==a&&(this.fireLimit=a),this},c.Weapon.prototype.destroy=function(){this.parent.remove(this,!1),this.bullets.destroy(),this.game=null,this.parent=null,this.active=!1,this.visible=!1},c.Weapon.prototype.update=function(){this._bulletKillType===c.Weapon.KILL_WEAPON_BOUNDS&&(this.trackedSprite?(this.trackedSprite.updateTransform(),this.bounds.centerOn(this.trackedSprite.worldPosition.x,this.trackedSprite.worldPosition.y)):this.trackedPointer&&this.bounds.centerOn(this.trackedPointer.worldX,this.trackedPointer.worldY)),this.autofire&&this.game.time.now0&&this.shots===this.fireLimit)return!1;var e=this.bulletSpeed;0!==this.bulletSpeedVariance&&(e+=c.Math.between(-this.bulletSpeedVariance,this.bulletSpeedVariance)),a?this.fireFrom.width>1?this.fireFrom.centerOn(a.x,a.y):(this.fireFrom.x=a.x,this.fireFrom.y=a.y):this.trackedSprite?(this.fireFrom.width>1?this.fireFrom.centerOn(this.trackedSprite.world.x+this.trackOffset.x,this.trackedSprite.world.y+this.trackOffset.y):(this.fireFrom.x=this.trackedSprite.world.x+this.trackOffset.x,this.fireFrom.y=this.trackedSprite.world.y+this.trackOffset.y),this.bulletInheritSpriteSpeed&&(e+=this.trackedSprite.body.speed)):this.trackedPointer&&(this.fireFrom.width>1?this.fireFrom.centerOn(this.trackedPointer.world.x+this.trackOffset.x,this.trackedPointer.world.y+this.trackOffset.y):(this.fireFrom.x=this.trackedPointer.world.x+this.trackOffset.x,this.fireFrom.y=this.trackedPointer.world.y+this.trackOffset.y));var f=this.fireFrom.width>1?this.fireFrom.randomX:this.fireFrom.x,g=this.fireFrom.height>1?this.fireFrom.randomY:this.fireFrom.y,h=this.trackRotation?this.trackedSprite.angle:this.fireAngle;void 0!==b&&void 0!==d&&(h=this.game.math.radToDeg(Math.atan2(d-g,b-f))),0!==this.bulletAngleVariance&&(h+=c.Math.between(-this.bulletAngleVariance,this.bulletAngleVariance));var i=0,j=0;0===h||180===h?i=Math.cos(this.game.math.degToRad(h))*e:90===h||270===h?j=Math.sin(this.game.math.degToRad(h))*e:(i=Math.cos(this.game.math.degToRad(h))*e,j=Math.sin(this.game.math.degToRad(h))*e);var k=null;if(this.autoExpandBulletsGroup?(k=this.bullets.getFirstExists(!1,!0,f,g,this.bulletKey,this.bulletFrame),k.data.bulletManager=this):k=this.bullets.getFirstExists(!1),k){if(k.reset(f,g),k.data.fromX=f,k.data.fromY=g,k.data.killType=this.bulletKillType,k.data.killDistance=this.bulletKillDistance,k.data.rotateToVelocity=this.bulletRotateToVelocity,this.bulletKillType===c.Weapon.KILL_LIFESPAN&&(k.lifespan=this.bulletLifespan),k.angle=h+this.bulletAngleOffset,""!==this.bulletAnimation){if(null===k.animations.getAnimation(this.bulletAnimation)){var l=this.anims[this.bulletAnimation];k.animations.add(l.name,l.frames,l.frameRate,l.loop,l.useNumericIndex)}k.animations.play(this.bulletAnimation)}else this.bulletFrameCycle?(k.frame=this.bulletFrames[this.bulletFrameIndex],this.bulletFrameIndex++,this.bulletFrameIndex>=this.bulletFrames.length&&(this.bulletFrameIndex=0)):this.bulletFrameRandom&&(k.frame=this.bulletFrames[Math.floor(Math.random()*this.bulletFrames.length)]);k.data.bodyDirty&&(this._data.customBody&&k.body.setSize(this._data.width,this._data.height,this._data.offsetX,this._data.offsetY),k.body.collideWorldBounds=this.bulletCollideWorldBounds,k.data.bodyDirty=!1),k.body.velocity.set(i,j),k.body.gravity.set(this.bulletGravity.x,this.bulletGravity.y),this._nextFire=this.game.time.now+this.fireRate,this.shots++,this.onFire.dispatch(k,this,e),this.fireLimit>0&&this.shots===this.fireLimit&&this.onFireLimit.dispatch(this,this.fireLimit)}},c.Weapon.prototype.fireAtPointer=function(a){return void 0===a&&(a=this.game.input.activePointer),this.fire(null,a.worldX,a.worldY)},c.Weapon.prototype.fireAtSprite=function(a){return this.fire(null,a.world.x,a.world.y)},c.Weapon.prototype.fireAtXY=function(a,b){return this.fire(null,a,b)},c.Weapon.prototype.setBulletBodyOffset=function(a,b,c,d){return void 0===c&&(c=0),void 0===d&&(d=0),this._data.customBody=!0,this._data.width=a,this._data.height=b,this._data.offsetX=c,this._data.offsetY=d,this.bullets.callAll("body.setSize","body",a,b,c,d),this.bullets.setAll("data.bodyDirty",!1),this},c.Weapon.prototype.setBulletFrames=function(a,b,d,e){return void 0===d&&(d=!0),void 0===e&&(e=!1),this.bulletFrames=c.ArrayUtils.numberArray(a,b),this.bulletFrameIndex=0,this.bulletFrameCycle=d,this.bulletFrameRandom=e,this},c.Weapon.prototype.addBulletAnimation=function(a,b,c,d,e){return this.anims[a]={name:a,frames:b,frameRate:c,loop:d,useNumericIndex:e},this.bullets.callAll("animations.add","animations",a,b,c,d,e),this.bulletAnimation=a,this},c.Weapon.prototype.debug=function(a,b,c){void 0===a&&(a=16),void 0===b&&(b=32),void 0===c&&(c=!1),this.game.debug.text("Weapon Plugin",a,b),this.game.debug.text("Bullets Alive: "+this.bullets.total+" - Total: "+this.bullets.length,a,b+24),c&&this.bullets.forEachExists(this.game.debug.body,this.game.debug,"rgba(255, 0, 255, 0.8)")},Object.defineProperty(c.Weapon.prototype,"bulletClass",{get:function(){return this._bulletClass},set:function(a){this._bulletClass=a,this.bullets.classType=this._bulletClass}}),Object.defineProperty(c.Weapon.prototype,"bulletKillType",{get:function(){return this._bulletKillType},set:function(a){switch(a){case c.Weapon.KILL_STATIC_BOUNDS:case c.Weapon.KILL_WEAPON_BOUNDS:this.bulletBounds=this.bounds;break;case c.Weapon.KILL_CAMERA_BOUNDS:this.bulletBounds=this.game.camera.view;break;case c.Weapon.KILL_WORLD_BOUNDS:this.bulletBounds=this.game.world.bounds}this._bulletKillType=a}}),Object.defineProperty(c.Weapon.prototype,"bulletCollideWorldBounds",{get:function(){return this._bulletCollideWorldBounds},set:function(a){this._bulletCollideWorldBounds=a,this.bullets.setAll("body.collideWorldBounds",a),this.bullets.setAll("data.bodyDirty",!1)}}),Object.defineProperty(c.Weapon.prototype,"x",{get:function(){return this.fireFrom.x},set:function(a){this.fireFrom.x=a}}),Object.defineProperty(c.Weapon.prototype,"y",{get:function(){return this.fireFrom.y},set:function(a){this.fireFrom.y=a}}),c.Bullet=function(a,b,d,e,f){c.Sprite.call(this,a,b,d,e,f),this.anchor.set(.5),this.data={bulletManager:null,fromX:0,fromY:0,bodyDirty:!0,rotateToVelocity:!1,killType:0,killDistance:0}},c.Bullet.prototype=Object.create(c.Sprite.prototype),c.Bullet.prototype.constructor=c.Bullet,c.Bullet.prototype.kill=function(){ -return this.alive=!1,this.exists=!1,this.visible=!1,this.data.bulletManager.onKill.dispatch(this),this},c.Bullet.prototype.update=function(){this.exists&&(this.data.killType>c.Weapon.KILL_LIFESPAN&&(this.data.killType===c.Weapon.KILL_DISTANCE?this.game.physics.arcade.distanceToXY(this,this.data.fromX,this.data.fromY,!0)>this.data.killDistance&&this.kill():this.data.bulletManager.bulletBounds.intersects(this)||this.kill()),this.data.rotateToVelocity&&(this.rotation=Math.atan2(this.body.velocity.y,this.body.velocity.x)),this.data.bulletManager.bulletWorldWrap&&this.game.world.wrap(this,this.data.bulletManager.bulletWorldWrapPadding))},c.Video=function(a,b,d){if(void 0===b&&(b=null),void 0===d&&(d=null),this.game=a,this.key=b,this.width=0,this.height=0,this.type=c.VIDEO,this.disableTextureUpload=!1,this.touchLocked=!1,this.onPlay=new c.Signal,this.onChangeSource=new c.Signal,this.onComplete=new c.Signal,this.onAccess=new c.Signal,this.onError=new c.Signal,this.onTimeout=new c.Signal,this.timeout=15e3,this._timeOutID=null,this.video=null,this.videoStream=null,this.isStreaming=!1,this.retryLimit=20,this.retry=0,this.retryInterval=500,this._retryID=null,this._codeMuted=!1,this._muted=!1,this._codePaused=!1,this._paused=!1,this._pending=!1,this._autoplay=!1,this._endCallback=null,this._playCallback=null,b&&this.game.cache.checkVideoKey(b)){var e=this.game.cache.getVideo(b);e.isBlob?this.createVideoFromBlob(e.data):this.video=e.data,this.width=this.video.videoWidth,this.height=this.video.videoHeight}else d&&this.createVideoFromURL(d,!1);this.video&&!d?(this.baseTexture=new PIXI.BaseTexture(this.video),this.baseTexture.forceLoaded(this.width,this.height)):(this.baseTexture=new PIXI.BaseTexture(PIXI.TextureCache.__default.baseTexture.source),this.baseTexture.forceLoaded(this.width,this.height)),this.texture=new PIXI.Texture(this.baseTexture),this.textureFrame=new c.Frame(0,0,0,this.width,this.height,"video"),this.texture.setFrame(this.textureFrame),this.texture.valid=!1,null!==b&&this.video&&(this.texture.valid=this.video.canplay),this.snapshot=null,c.BitmapData&&(this.snapshot=new c.BitmapData(this.game,"",this.width,this.height)),!this.game.device.cocoonJS&&(this.game.device.iOS||this.game.device.android)||window.PhaserGlobal&&window.PhaserGlobal.fakeiOSTouchLock?this.setTouchLock():e&&(e.locked=!1)},c.Video.prototype={connectToMediaStream:function(a,b){return a&&b&&(this.video=a,this.videoStream=b,this.isStreaming=!0,this.baseTexture.source=this.video,this.updateTexture(null,this.video.videoWidth,this.video.videoHeight),this.onAccess.dispatch(this)),this},startMediaStream:function(a,b,c){if(void 0===a&&(a=!1),void 0===b&&(b=null),void 0===c&&(c=null),!this.game.device.getUserMedia)return this.onError.dispatch(this,"No getUserMedia"),!1;null!==this.videoStream&&(this.videoStream.active?this.videoStream.active=!1:this.videoStream.stop()),this.removeVideoElement(),this.video=document.createElement("video"),this.video.setAttribute("autoplay","autoplay"),null!==b&&(this.video.width=b),null!==c&&(this.video.height=c),this._timeOutID=window.setTimeout(this.getUserMediaTimeout.bind(this),this.timeout);try{navigator.getUserMedia({audio:a,video:!0},this.getUserMediaSuccess.bind(this),this.getUserMediaError.bind(this))}catch(d){this.getUserMediaError(d)}return this},getUserMediaTimeout:function(){clearTimeout(this._timeOutID),this.onTimeout.dispatch(this)},getUserMediaError:function(a){clearTimeout(this._timeOutID),this.onError.dispatch(this,a)},getUserMediaSuccess:function(a){clearTimeout(this._timeOutID),this.videoStream=a,void 0!==this.video.mozSrcObject?this.video.mozSrcObject=a:this.video.src=window.URL&&window.URL.createObjectURL(a)||a;var b=this;this.video.onloadeddata=function(){function a(){if(c>0)if(b.video.videoWidth>0){var d=b.video.videoWidth,e=b.video.videoHeight;isNaN(b.video.videoHeight)&&(e=d/(4/3)),b.video.play(),b.isStreaming=!0,b.baseTexture.source=b.video,b.updateTexture(null,d,e),b.onAccess.dispatch(b)}else window.setTimeout(a,500);else console.warn("Unable to connect to video stream. Webcam error?");c--}var c=10;a()}},createVideoFromBlob:function(a){var b=this;return this.video=document.createElement("video"),this.video.controls=!1,this.video.setAttribute("autoplay","autoplay"),this.video.addEventListener("loadeddata",function(a){b.updateTexture(a)},!0),this.video.src=window.URL.createObjectURL(a),this.video.canplay=!0,this},createVideoFromURL:function(a,b){return void 0===b&&(b=!1),this.texture&&(this.texture.valid=!1),this.video=document.createElement("video"),this.video.controls=!1,b&&this.video.setAttribute("autoplay","autoplay"),this.video.src=a,this.video.canplay=!0,this.video.load(),this.retry=this.retryLimit,this._retryID=window.setTimeout(this.checkVideoProgress.bind(this),this.retryInterval),this.key=a,this},updateTexture:function(a,b,c){var d=!1;(void 0===b||null===b)&&(b=this.video.videoWidth,d=!0),(void 0===c||null===c)&&(c=this.video.videoHeight),this.width=b,this.height=c,this.baseTexture.source!==this.video&&(this.baseTexture.source=this.video),this.baseTexture.forceLoaded(b,c),this.texture.frame.resize(b,c),this.texture.width=b,this.texture.height=c,this.texture.valid=!0,this.snapshot&&this.snapshot.resize(b,c),d&&null!==this.key&&(this.onChangeSource.dispatch(this,b,c),this._autoplay&&(this.video.play(),this.onPlay.dispatch(this,this.loop,this.playbackRate)))},complete:function(){this.onComplete.dispatch(this)},play:function(a,b){return void 0===a&&(a=!1),void 0===b&&(b=1),this.game.sound.onMute&&(this.game.sound.onMute.add(this.setMute,this),this.game.sound.onUnMute.add(this.unsetMute,this),this.game.sound.mute&&this.setMute()),this.game.onPause.add(this.setPause,this),this.game.onResume.add(this.setResume,this),this._endCallback=this.complete.bind(this),this.video.addEventListener("ended",this._endCallback,!0),this.video.addEventListener("webkitendfullscreen",this._endCallback,!0),a?this.video.loop="loop":this.video.loop="",this.video.playbackRate=b,this.touchLocked?this._pending=!0:(this._pending=!1,null!==this.key&&(4!==this.video.readyState?(this.retry=this.retryLimit,this._retryID=window.setTimeout(this.checkVideoProgress.bind(this),this.retryInterval)):(this._playCallback=this.playHandler.bind(this),this.video.addEventListener("playing",this._playCallback,!0))),this.video.play(),this.onPlay.dispatch(this,a,b)),this},playHandler:function(){this.video.removeEventListener("playing",this._playCallback,!0),this.updateTexture()},stop:function(){return this.game.sound.onMute&&(this.game.sound.onMute.remove(this.setMute,this),this.game.sound.onUnMute.remove(this.unsetMute,this)),this.game.onPause.remove(this.setPause,this),this.game.onResume.remove(this.setResume,this),this.isStreaming?(this.video.mozSrcObject?(this.video.mozSrcObject.stop(),this.video.src=null):(this.video.src="",this.videoStream.active?this.videoStream.active=!1:this.videoStream.getTracks?this.videoStream.getTracks().forEach(function(a){a.stop()}):this.videoStream.stop()),this.videoStream=null,this.isStreaming=!1):(this.video.removeEventListener("ended",this._endCallback,!0),this.video.removeEventListener("webkitendfullscreen",this._endCallback,!0),this.video.removeEventListener("playing",this._playCallback,!0),this.touchLocked?this._pending=!1:this.video.pause()),this},add:function(a){if(Array.isArray(a))for(var b=0;b0?this._retryID=window.setTimeout(this.checkVideoProgress.bind(this),this.retryInterval):console.warn("Phaser.Video: Unable to start downloading video in time",this.isStreaming))},setTouchLock:function(){this.game.input.touch.addTouchLockCallback(this.unlock,this),this.touchLocked=!0},unlock:function(){if(this.touchLocked=!1,this.video.play(),this.onPlay.dispatch(this,this.loop,this.playbackRate),this.key){var a=this.game.cache.getVideo(this.key);a&&!a.isBlob&&(a.locked=!1)}return!0},grab:function(a,b,c){return void 0===a&&(a=!1),void 0===b&&(b=1),void 0===c&&(c=null),null===this.snapshot?void console.warn("Video.grab cannot run because Phaser.BitmapData is unavailable"):(a&&this.snapshot.cls(),this.snapshot.copy(this.video,0,0,this.width,this.height,0,0,this.width,this.height,0,0,0,1,1,b,c),this.snapshot)},removeVideoElement:function(){if(this.video){for(this.video.parentNode&&this.video.parentNode.removeChild(this.video);this.video.hasChildNodes();)this.video.removeChild(this.video.firstChild);this.video.removeAttribute("autoplay"),this.video.removeAttribute("src"),this.video=null}},destroy:function(){this.stop(),this.removeVideoElement(),this.touchLocked&&this.game.input.touch.removeTouchLockCallback(this.unlock,this),this._retryID&&window.clearTimeout(this._retryID)}},Object.defineProperty(c.Video.prototype,"currentTime",{get:function(){return this.video?this.video.currentTime:0},set:function(a){this.video.currentTime=a}}),Object.defineProperty(c.Video.prototype,"duration",{get:function(){return this.video?this.video.duration:0}}),Object.defineProperty(c.Video.prototype,"progress",{get:function(){return this.video?this.video.currentTime/this.video.duration:0}}),Object.defineProperty(c.Video.prototype,"mute",{get:function(){return this._muted},set:function(a){if(a=a||null){if(this._muted)return;this._codeMuted=!0,this.setMute()}else{if(!this._muted)return;this._codeMuted=!1,this.unsetMute()}}}),Object.defineProperty(c.Video.prototype,"paused",{get:function(){return this._paused},set:function(a){if(a=a||null,!this.touchLocked)if(a){if(this._paused)return;this._codePaused=!0,this.setPause()}else{if(!this._paused)return;this._codePaused=!1,this.setResume()}}}),Object.defineProperty(c.Video.prototype,"volume",{get:function(){return this.video?this.video.volume:1},set:function(a){0>a?a=0:a>1&&(a=1),this.video&&(this.video.volume=a)}}),Object.defineProperty(c.Video.prototype,"playbackRate",{get:function(){return this.video?this.video.playbackRate:1},set:function(a){this.video&&(this.video.playbackRate=a)}}),Object.defineProperty(c.Video.prototype,"loop",{get:function(){return this.video?this.video.loop:!1},set:function(a){a&&this.video?this.video.loop="loop":this.video&&(this.video.loop="")}}),Object.defineProperty(c.Video.prototype,"playing",{get:function(){return!(this.video.paused&&this.video.ended)}}),c.Video.prototype.constructor=c.Video,void 0===PIXI.blendModes&&(PIXI.blendModes=c.blendModes),void 0===PIXI.scaleModes&&(PIXI.scaleModes=c.scaleModes),void 0===PIXI.Texture.emptyTexture&&(PIXI.Texture.emptyTexture=new PIXI.Texture(new PIXI.BaseTexture)),void 0===PIXI.DisplayObject._tempMatrix&&(PIXI.DisplayObject._tempMatrix=new PIXI.Matrix),void 0===PIXI.RenderTexture.tempMatrix&&(PIXI.RenderTexture.tempMatrix=new PIXI.Matrix),PIXI.Graphics&&void 0===PIXI.Graphics.POLY&&(PIXI.Graphics.POLY=c.POLYGON,PIXI.Graphics.RECT=c.RECTANGLE,PIXI.Graphics.CIRC=c.CIRCLE,PIXI.Graphics.ELIP=c.ELLIPSE,PIXI.Graphics.RREC=c.ROUNDEDRECTANGLE),PIXI.TextureSilentFail=!0,"undefined"!=typeof exports?("undefined"!=typeof module&&module.exports&&(exports=module.exports=c),exports.Phaser=c):"undefined"!=typeof define&&define.amd?define("Phaser",function(){return b.Phaser=c}()):b.Phaser=c,c}.call(this); +(function(){var a=this,b=b||{};return b.game=null,b.WEBGL_RENDERER=0,b.CANVAS_RENDERER=1,b.VERSION="v2.2.9",b._UID=0,"undefined"!=typeof Float32Array?(b.Float32Array=Float32Array,b.Uint16Array=Uint16Array,b.Uint32Array=Uint32Array,b.ArrayBuffer=ArrayBuffer):(b.Float32Array=Array,b.Uint16Array=Array),b.PI_2=2*Math.PI,b.RAD_TO_DEG=180/Math.PI,b.DEG_TO_RAD=Math.PI/180,b.RETINA_PREFIX="@2x",b.DisplayObject=function(){this.position=new b.Point(0,0),this.scale=new b.Point(1,1),this.pivot=new b.Point(0,0),this.rotation=0,this.alpha=1,this.visible=!0,this.hitArea=null,this.renderable=!1,this.parent=null,this.stage=null,this.worldAlpha=1,this.worldTransform=new b.Matrix,this.worldPosition=new b.Point(0,0),this.worldScale=new b.Point(1,1),this.worldRotation=0,this.filterArea=null,this._sr=0,this._cr=1,this._bounds=new b.Rectangle(0,0,1,1),this._currentBounds=null,this._mask=null,this._cacheAsBitmap=!1,this._cacheIsDirty=!1},b.DisplayObject.prototype.constructor=b.DisplayObject,b.DisplayObject.prototype={destroy:function(){if(this.children){for(var a=this.children.length;a--;)this.children[a].destroy();this.children=[]}this.hitArea=null,this.parent=null,this.stage=null,this.worldTransform=null,this.filterArea=null,this.renderable=!1,this._bounds=null,this._currentBounds=null,this._mask=null,this._destroyCachedSprite()},updateTransform:function(a){if(!a&&!this.parent&&!this.game)return this;var c=this.parent;a?c=a:this.parent||(c=this.game.world);var d,e,f,g,h,i,j=c.worldTransform,k=this.worldTransform;return this.rotation%b.PI_2?(this.rotation!==this.rotationCache&&(this.rotationCache=this.rotation,this._sr=Math.sin(this.rotation),this._cr=Math.cos(this.rotation)),d=this._cr*this.scale.x,e=this._sr*this.scale.x,f=-this._sr*this.scale.y,g=this._cr*this.scale.y,h=this.position.x,i=this.position.y,(this.pivot.x||this.pivot.y)&&(h-=this.pivot.x*d+this.pivot.y*f,i-=this.pivot.x*e+this.pivot.y*g),k.a=d*j.a+e*j.c,k.b=d*j.b+e*j.d,k.c=f*j.a+g*j.c,k.d=f*j.b+g*j.d,k.tx=h*j.a+i*j.c+j.tx,k.ty=h*j.b+i*j.d+j.ty):(d=this.scale.x,g=this.scale.y,h=this.position.x-this.pivot.x*d,i=this.position.y-this.pivot.y*g,k.a=d*j.a,k.b=d*j.b,k.c=g*j.c,k.d=g*j.d,k.tx=h*j.a+i*j.c+j.tx,k.ty=h*j.b+i*j.d+j.ty),this.worldAlpha=this.alpha*c.worldAlpha,this.worldPosition.set(k.tx,k.ty),this.worldScale.set(this.scale.x*Math.sqrt(k.a*k.a+k.c*k.c),this.scale.y*Math.sqrt(k.b*k.b+k.d*k.d)),this.worldRotation=Math.atan2(-k.c,k.d),this._currentBounds=null,this.transformCallback&&this.transformCallback.call(this.transformCallbackContext,k,j),this},setStageReference:function(a){return this.stage=a,this},preUpdate:function(){},generateTexture:function(a,c,d){var e=this.getLocalBounds(),f=new b.RenderTexture(0|e.width,0|e.height,d,c,a);return b.DisplayObject._tempMatrix.tx=-e.x,b.DisplayObject._tempMatrix.ty=-e.y,f.render(this,b.DisplayObject._tempMatrix),f},updateCache:function(){return this._generateCachedSprite(),this},toGlobal:function(a){return this.updateTransform(),this.worldTransform.apply(a)},toLocal:function(a,b){return b&&(a=b.toGlobal(a)),this.updateTransform(),this.worldTransform.applyInverse(a)},_renderCachedSprite:function(a){this._cachedSprite.worldAlpha=this.worldAlpha,a.gl?b.Sprite.prototype._renderWebGL.call(this._cachedSprite,a):b.Sprite.prototype._renderCanvas.call(this._cachedSprite,a)},_generateCachedSprite:function(){this._cacheAsBitmap=!1;var a=this.getLocalBounds();if(a.width=Math.max(1,Math.ceil(a.width)),a.height=Math.max(1,Math.ceil(a.height)),this.updateTransform(),this._cachedSprite)this._cachedSprite.texture.resize(a.width,a.height);else{var c=new b.RenderTexture(a.width,a.height);this._cachedSprite=new b.Sprite(c),this._cachedSprite.worldTransform=this.worldTransform}var d=this._filters;this._filters=null,this._cachedSprite.filters=d,b.DisplayObject._tempMatrix.tx=-a.x,b.DisplayObject._tempMatrix.ty=-a.y,this._cachedSprite.texture.render(this,b.DisplayObject._tempMatrix,!0),this._cachedSprite.anchor.x=-(a.x/a.width),this._cachedSprite.anchor.y=-(a.y/a.height),this._filters=d,this._cacheAsBitmap=!0},_destroyCachedSprite:function(){this._cachedSprite&&(this._cachedSprite.texture.destroy(!0),this._cachedSprite=null)}},b.DisplayObject.prototype.displayObjectUpdateTransform=b.DisplayObject.prototype.updateTransform,Object.defineProperties(b.DisplayObject.prototype,{x:{get:function(){return this.position.x},set:function(a){this.position.x=a}},y:{get:function(){return this.position.y},set:function(a){this.position.y=a}},worldVisible:{get:function(){if(this.visible){var a=this.parent;do{if(!a.visible)return!1;a=a.parent}while(a);return!0}return!1}},mask:{get:function(){return this._mask},set:function(a){this._mask&&(this._mask.isMask=!1),this._mask=a,a&&(this._mask.isMask=!0)}},filters:{get:function(){return this._filters},set:function(a){if(Array.isArray(a)){for(var c=[],d=0;d=0&&b<=this.children.length)return a.parent&&a.parent.removeChild(a),a.parent=this,this.children.splice(b,0,a),this.stage&&a.setStageReference(this.stage),a;throw new Error(a+"addChildAt: The index "+b+" supplied is out of bounds "+this.children.length)},b.DisplayObjectContainer.prototype.swapChildren=function(a,b){if(a!==b){var c=this.getChildIndex(a),d=this.getChildIndex(b);if(0>c||0>d)throw new Error("swapChildren: Both the supplied DisplayObjects must be a child of the caller.");this.children[c]=b,this.children[d]=a}},b.DisplayObjectContainer.prototype.getChildIndex=function(a){var b=this.children.indexOf(a);if(-1===b)throw new Error("The supplied DisplayObject must be a child of the caller");return b},b.DisplayObjectContainer.prototype.setChildIndex=function(a,b){if(0>b||b>=this.children.length)throw new Error("The supplied index is out of bounds");var c=this.getChildIndex(a);this.children.splice(c,1),this.children.splice(b,0,a)},b.DisplayObjectContainer.prototype.getChildAt=function(a){if(0>a||a>=this.children.length)throw new Error("getChildAt: Supplied index "+a+" does not exist in the child list, or the supplied DisplayObject must be a child of the caller");return this.children[a]},b.DisplayObjectContainer.prototype.removeChild=function(a){var b=this.children.indexOf(a);if(-1!==b)return this.removeChildAt(b)},b.DisplayObjectContainer.prototype.removeChildAt=function(a){var b=this.getChildAt(a);return this.stage&&b.removeStageReference(),b.parent=void 0,this.children.splice(a,1),b},b.DisplayObjectContainer.prototype.removeChildren=function(a,b){var c=a||0,d="number"==typeof b?b:this.children.length,e=d-c;if(e>0&&d>=e){for(var f=this.children.splice(c,e),g=0;gc?g:c,h=h>d?h:d)}if(!i)return b.EmptyRectangle;var l=this._bounds;return l.x=e,l.y=f,l.width=g-e,l.height=h-f,l},b.DisplayObjectContainer.prototype.getLocalBounds=function(){var a=this.worldTransform;this.worldTransform=b.identityMatrix;for(var c=0;ci){i*=-1;var s=d;d=-e,e=-s}if(0>l){l*=-1;var s=f;f=-g,g=-s}q=i*e+m,o=i*d+m,r=l*g+n,p=l*f+n}else{var t=i*e+k*g+m,u=l*g+j*e+n,v=i*d+k*g+m,w=l*g+j*d+n,x=i*d+k*f+m,y=l*f+j*d+n,z=i*e+k*f+m,A=l*f+j*e+n;q=q>t?t:q,q=q>v?v:q,q=q>x?x:q,q=q>z?z:q,r=r>u?u:r,r=r>w?w:r,r=r>y?y:r,r=r>A?A:r,o=t>o?t:o,o=v>o?v:o,o=x>o?x:o,o=z>o?z:o,p=u>p?u:p,p=w>p?w:p,p=y>p?y:p,p=A>p?A:p}var B=this._bounds;return B.x=q,B.width=o-q,B.y=r,B.height=p-r,this._currentBounds=B,B},b.Sprite.prototype._renderWebGL=function(a,b){if(this.visible&&!(this.alpha<=0)&&this.renderable){var c=this.worldTransform;if(b&&(c=b),this._mask||this._filters){var d=a.spriteBatch;this._filters&&(d.flush(),a.filterManager.pushFilter(this._filterBlock)),this._mask&&(d.stop(),a.maskManager.pushMask(this.mask,a),d.start()),d.render(this);for(var e=0;e>16&255)/255,(a>>8&255)/255,(255&a)/255]},b.rgb2hex=function(a){return(255*a[0]<<16)+(255*a[1]<<8)+255*a[2]},b.canUseNewCanvasBlendModes=function(){if(void 0===document)return!1;var a="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAQAAAABAQMAAADD8p2OAAAAA1BMVEX/",c="AAAACklEQVQI12NgAAAAAgAB4iG8MwAAAABJRU5ErkJggg==",d=new Image;d.src=a+"AP804Oa6"+c;var e=new Image;e.src=a+"/wCKxvRF"+c;var f=b.CanvasPool.create(this,6,1),g=f.getContext("2d");if(g.globalCompositeOperation="multiply",g.drawImage(d,0,0),g.drawImage(e,2,0),!g.getImageData(2,0,1,1))return!1;var h=g.getImageData(2,0,1,1).data;return b.CanvasPool.remove(this),255===h[0]&&0===h[1]&&0===h[2]},b.getNextPowerOfTwo=function(a){if(a>0&&0===(a&a-1))return a;for(var b=1;a>b;)b<<=1;return b},b.isPowerOfTwo=function(a,b){return a>0&&0===(a&a-1)&&b>0&&0===(b&b-1)},b.CanvasPool={create:function(a,c,d){var e,f=b.CanvasPool.getFirst();if(-1===f){var g={parent:a,canvas:document.createElement("canvas")};b.CanvasPool.pool.push(g),e=g.canvas}else b.CanvasPool.pool[f].parent=a,e=b.CanvasPool.pool[f].canvas;return void 0!==c&&(e.width=c,e.height=d),e},getFirst:function(){for(var a=b.CanvasPool.pool,c=0;cd;d+=6,e+=4)this.indices[d+0]=e+0,this.indices[d+1]=e+1,this.indices[d+2]=e+2,this.indices[d+3]=e+0,this.indices[d+4]=e+2,this.indices[d+5]=e+3;this.drawing=!1,this.currentBatchSize=0,this.currentBaseTexture=null,this.dirty=!0,this.textures=[],this.blendModes=[],this.shaders=[],this.sprites=[],this.defaultShader=new b.AbstractFilter(["precision lowp float;","varying vec2 vTextureCoord;","varying vec4 vColor;","uniform sampler2D uSampler;","void main(void) {"," gl_FragColor = texture2D(uSampler, vTextureCoord) * vColor ;","}"])},b.WebGLSpriteBatch.prototype.setContext=function(a){this.gl=a,this.vertexBuffer=a.createBuffer(),this.indexBuffer=a.createBuffer(),a.bindBuffer(a.ELEMENT_ARRAY_BUFFER,this.indexBuffer),a.bufferData(a.ELEMENT_ARRAY_BUFFER,this.indices,a.STATIC_DRAW),a.bindBuffer(a.ARRAY_BUFFER,this.vertexBuffer),a.bufferData(a.ARRAY_BUFFER,this.vertices,a.DYNAMIC_DRAW),this.currentBlendMode=99999;var c=new b.PixiShader(a);c.fragmentSrc=this.defaultShader.fragmentSrc,c.uniforms={},c.init(),this.defaultShader.shaders[a.id]=c},b.WebGLSpriteBatch.prototype.begin=function(a){this.renderSession=a,this.shader=this.renderSession.shaderManager.defaultShader,this.start()},b.WebGLSpriteBatch.prototype.end=function(){this.flush()},b.WebGLSpriteBatch.prototype.render=function(a,b){var c=a.texture,d=a.worldTransform;b&&(d=b),this.currentBatchSize>=this.size&&(this.flush(),this.currentBaseTexture=c.baseTexture);var e=c._uvs;if(e){var f,g,h,i,j=a.anchor.x,k=a.anchor.y;if(c.trim){var l=c.trim;g=l.x-j*l.width,f=g+c.crop.width,i=l.y-k*l.height,h=i+c.crop.height}else f=c.frame.width*(1-j),g=c.frame.width*-j,h=c.frame.height*(1-k),i=c.frame.height*-k;var m=4*this.currentBatchSize*this.vertSize,n=c.baseTexture.resolution,o=d.a/n,p=d.b/n,q=d.c/n,r=d.d/n,s=d.tx,t=d.ty,u=this.colors,v=this.positions;this.renderSession.roundPixels?(v[m]=o*g+q*i+s|0,v[m+1]=r*i+p*g+t|0,v[m+5]=o*f+q*i+s|0,v[m+6]=r*i+p*f+t|0,v[m+10]=o*f+q*h+s|0,v[m+11]=r*h+p*f+t|0,v[m+15]=o*g+q*h+s|0,v[m+16]=r*h+p*g+t|0):(v[m]=o*g+q*i+s,v[m+1]=r*i+p*g+t,v[m+5]=o*f+q*i+s,v[m+6]=r*i+p*f+t,v[m+10]=o*f+q*h+s,v[m+11]=r*h+p*f+t,v[m+15]=o*g+q*h+s,v[m+16]=r*h+p*g+t),v[m+2]=e.x0,v[m+3]=e.y0,v[m+7]=e.x1,v[m+8]=e.y1,v[m+12]=e.x2,v[m+13]=e.y2,v[m+17]=e.x3,v[m+18]=e.y3;var w=a.tint;u[m+4]=u[m+9]=u[m+14]=u[m+19]=(w>>16)+(65280&w)+((255&w)<<16)+(255*a.worldAlpha<<24),this.sprites[this.currentBatchSize++]=a}},b.WebGLSpriteBatch.prototype.renderTilingSprite=function(a){var c=a.tilingTexture;this.currentBatchSize>=this.size&&(this.flush(),this.currentBaseTexture=c.baseTexture),a._uvs||(a._uvs=new b.TextureUvs);var d=a._uvs,e=c.baseTexture.width,f=c.baseTexture.height;a.tilePosition.x%=e*a.tileScaleOffset.x,a.tilePosition.y%=f*a.tileScaleOffset.y;var g=a.tilePosition.x/(e*a.tileScaleOffset.x),h=a.tilePosition.y/(f*a.tileScaleOffset.y),i=a.width/e/(a.tileScale.x*a.tileScaleOffset.x),j=a.height/f/(a.tileScale.y*a.tileScaleOffset.y);d.x0=0-g,d.y0=0-h,d.x1=1*i-g,d.y1=0-h,d.x2=1*i-g,d.y2=1*j-h,d.x3=0-g,d.y3=1*j-h;var k=a.tint,l=(k>>16)+(65280&k)+((255&k)<<16)+(255*a.worldAlpha<<24),m=this.positions,n=this.colors,o=a.width,p=a.height,q=a.anchor.x,r=a.anchor.y,s=o*(1-q),t=o*-q,u=p*(1-r),v=p*-r,w=4*this.currentBatchSize*this.vertSize,x=c.baseTexture.resolution,y=a.worldTransform,z=y.a/x,A=y.b/x,B=y.c/x,C=y.d/x,D=y.tx,E=y.ty;m[w++]=z*t+B*v+D,m[w++]=C*v+A*t+E,m[w++]=d.x0,m[w++]=d.y0,n[w++]=l,m[w++]=z*s+B*v+D,m[w++]=C*v+A*s+E,m[w++]=d.x1,m[w++]=d.y1,n[w++]=l,m[w++]=z*s+B*u+D,m[w++]=C*u+A*s+E,m[w++]=d.x2,m[w++]=d.y2,n[w++]=l,m[w++]=z*t+B*u+D,m[w++]=C*u+A*t+E,m[w++]=d.x3,m[w++]=d.y3,n[w++]=l,this.sprites[this.currentBatchSize++]=a},b.WebGLSpriteBatch.prototype.flush=function(){if(0!==this.currentBatchSize){var a,c=this.gl;if(this.dirty){this.dirty=!1,c.activeTexture(c.TEXTURE0),c.bindBuffer(c.ARRAY_BUFFER,this.vertexBuffer),c.bindBuffer(c.ELEMENT_ARRAY_BUFFER,this.indexBuffer),a=this.defaultShader.shaders[c.id];var d=4*this.vertSize;c.vertexAttribPointer(a.aVertexPosition,2,c.FLOAT,!1,d,0),c.vertexAttribPointer(a.aTextureCoord,2,c.FLOAT,!1,d,8),c.vertexAttribPointer(a.colorAttribute,4,c.UNSIGNED_BYTE,!0,d,16)}if(this.currentBatchSize>.5*this.size)c.bufferSubData(c.ARRAY_BUFFER,0,this.vertices);else{var e=this.positions.subarray(0,4*this.currentBatchSize*this.vertSize);c.bufferSubData(c.ARRAY_BUFFER,0,e)}for(var f,g,h,i,j=0,k=0,l=null,m=this.renderSession.blendModeManager.currentBlendMode,n=null,o=!1,p=!1,q=0,r=this.currentBatchSize;r>q;q++){i=this.sprites[q],f=i.tilingTexture?i.tilingTexture.baseTexture:i.texture.baseTexture,g=i.blendMode,h=i.shader||this.defaultShader,o=m!==g,p=n!==h;var s=f.skipRender;if(s&&i.children.length>0&&(s=!1),(l!==f&&!s||o||p)&&(this.renderBatch(l,j,k),k=q,j=0,l=f,o&&(m=g,this.renderSession.blendModeManager.setBlendMode(m)),p)){n=h,a=n.shaders[c.id],a||(a=new b.PixiShader(c),a.fragmentSrc=n.fragmentSrc,a.uniforms=n.uniforms,a.init(),n.shaders[c.id]=a),this.renderSession.shaderManager.setShader(a),a.dirty&&a.syncUniforms();var t=this.renderSession.projection;c.uniform2f(a.projectionVector,t.x,t.y);var u=this.renderSession.offset;c.uniform2f(a.offsetVector,u.x,u.y)}j++}this.renderBatch(l,j,k),this.currentBatchSize=0}},b.WebGLSpriteBatch.prototype.renderBatch=function(a,b,c){if(0!==b){var d=this.gl;if(a._dirty[d.id]){if(!this.renderSession.renderer.updateTexture(a))return}else d.bindTexture(d.TEXTURE_2D,a._glTextures[d.id]);d.drawElements(d.TRIANGLES,6*b,d.UNSIGNED_SHORT,6*c*2),this.renderSession.drawCount++}},b.WebGLSpriteBatch.prototype.stop=function(){this.flush(),this.dirty=!0},b.WebGLSpriteBatch.prototype.start=function(){this.dirty=!0},b.WebGLSpriteBatch.prototype.destroy=function(){this.vertices=null,this.indices=null,this.gl.deleteBuffer(this.vertexBuffer),this.gl.deleteBuffer(this.indexBuffer),this.currentBaseTexture=null,this.gl=null},b.WebGLFastSpriteBatch=function(a){this.vertSize=10,this.maxSize=6e3,this.size=this.maxSize;var c=4*this.size*this.vertSize,d=6*this.maxSize;this.vertices=new b.Float32Array(c),this.indices=new b.Uint16Array(d),this.vertexBuffer=null,this.indexBuffer=null,this.lastIndexCount=0;for(var e=0,f=0;d>e;e+=6,f+=4)this.indices[e+0]=f+0,this.indices[e+1]=f+1,this.indices[e+2]=f+2,this.indices[e+3]=f+0,this.indices[e+4]=f+2,this.indices[e+5]=f+3;this.drawing=!1,this.currentBatchSize=0,this.currentBaseTexture=null,this.currentBlendMode=0,this.renderSession=null,this.shader=null,this.matrix=null,this.setContext(a)},b.WebGLFastSpriteBatch.prototype.constructor=b.WebGLFastSpriteBatch,b.WebGLFastSpriteBatch.prototype.setContext=function(a){this.gl=a,this.vertexBuffer=a.createBuffer(),this.indexBuffer=a.createBuffer(),a.bindBuffer(a.ELEMENT_ARRAY_BUFFER,this.indexBuffer),a.bufferData(a.ELEMENT_ARRAY_BUFFER,this.indices,a.STATIC_DRAW),a.bindBuffer(a.ARRAY_BUFFER,this.vertexBuffer),a.bufferData(a.ARRAY_BUFFER,this.vertices,a.DYNAMIC_DRAW)},b.WebGLFastSpriteBatch.prototype.begin=function(a,b){this.renderSession=b,this.shader=this.renderSession.shaderManager.fastShader,this.matrix=a.worldTransform.toArray(!0),this.start()},b.WebGLFastSpriteBatch.prototype.end=function(){this.flush()},b.WebGLFastSpriteBatch.prototype.render=function(a){var b=a.children,c=b[0];if(c.texture._uvs){this.currentBaseTexture=c.texture.baseTexture,c.blendMode!==this.renderSession.blendModeManager.currentBlendMode&&(this.flush(),this.renderSession.blendModeManager.setBlendMode(c.blendMode));for(var d=0,e=b.length;e>d;d++)this.renderSprite(b[d]);this.flush()}},b.WebGLFastSpriteBatch.prototype.renderSprite=function(a){if(a.visible&&(a.texture.baseTexture===this.currentBaseTexture||a.texture.baseTexture.skipRender||(this.flush(),this.currentBaseTexture=a.texture.baseTexture,a.texture._uvs))){var b,c,d,e,f,g,h,i,j=this.vertices;if(b=a.texture._uvs,c=a.texture.frame.width,d=a.texture.frame.height,a.texture.trim){var k=a.texture.trim;f=k.x-a.anchor.x*k.width,e=f+a.texture.crop.width,h=k.y-a.anchor.y*k.height,g=h+a.texture.crop.height}else e=a.texture.frame.width*(1-a.anchor.x),f=a.texture.frame.width*-a.anchor.x,g=a.texture.frame.height*(1-a.anchor.y),h=a.texture.frame.height*-a.anchor.y;i=4*this.currentBatchSize*this.vertSize,j[i++]=f,j[i++]=h,j[i++]=a.position.x,j[i++]=a.position.y,j[i++]=a.scale.x,j[i++]=a.scale.y,j[i++]=a.rotation,j[i++]=b.x0,j[i++]=b.y1,j[i++]=a.alpha,j[i++]=e,j[i++]=h,j[i++]=a.position.x,j[i++]=a.position.y,j[i++]=a.scale.x,j[i++]=a.scale.y,j[i++]=a.rotation,j[i++]=b.x1,j[i++]=b.y1,j[i++]=a.alpha,j[i++]=e,j[i++]=g,j[i++]=a.position.x,j[i++]=a.position.y,j[i++]=a.scale.x,j[i++]=a.scale.y,j[i++]=a.rotation,j[i++]=b.x2,j[i++]=b.y2,j[i++]=a.alpha,j[i++]=f,j[i++]=g,j[i++]=a.position.x,j[i++]=a.position.y,j[i++]=a.scale.x,j[i++]=a.scale.y,j[i++]=a.rotation,j[i++]=b.x3,j[i++]=b.y3,j[i++]=a.alpha,this.currentBatchSize++,this.currentBatchSize>=this.size&&this.flush()}},b.WebGLFastSpriteBatch.prototype.flush=function(){if(0!==this.currentBatchSize){var a=this.gl;if(this.currentBaseTexture._glTextures[a.id]||this.renderSession.renderer.updateTexture(this.currentBaseTexture,a),a.bindTexture(a.TEXTURE_2D,this.currentBaseTexture._glTextures[a.id]),this.currentBatchSize>.5*this.size)a.bufferSubData(a.ARRAY_BUFFER,0,this.vertices);else{var b=this.vertices.subarray(0,4*this.currentBatchSize*this.vertSize);a.bufferSubData(a.ARRAY_BUFFER,0,b)}a.drawElements(a.TRIANGLES,6*this.currentBatchSize,a.UNSIGNED_SHORT,0),this.currentBatchSize=0,this.renderSession.drawCount++}},b.WebGLFastSpriteBatch.prototype.stop=function(){this.flush()},b.WebGLFastSpriteBatch.prototype.start=function(){var a=this.gl;a.activeTexture(a.TEXTURE0),a.bindBuffer(a.ARRAY_BUFFER,this.vertexBuffer),a.bindBuffer(a.ELEMENT_ARRAY_BUFFER,this.indexBuffer);var b=this.renderSession.projection;a.uniform2f(this.shader.projectionVector,b.x,b.y),a.uniformMatrix3fv(this.shader.uMatrix,!1,this.matrix);var c=4*this.vertSize;a.vertexAttribPointer(this.shader.aVertexPosition,2,a.FLOAT,!1,c,0),a.vertexAttribPointer(this.shader.aPositionCoord,2,a.FLOAT,!1,c,8),a.vertexAttribPointer(this.shader.aScale,2,a.FLOAT,!1,c,16),a.vertexAttribPointer(this.shader.aRotation,1,a.FLOAT,!1,c,24),a.vertexAttribPointer(this.shader.aTextureCoord,2,a.FLOAT,!1,c,28),a.vertexAttribPointer(this.shader.colorAttribute,1,a.FLOAT,!1,c,36)},b.WebGLFilterManager=function(){this.filterStack=[],this.offsetX=0,this.offsetY=0},b.WebGLFilterManager.prototype.constructor=b.WebGLFilterManager,b.WebGLFilterManager.prototype.setContext=function(a){this.gl=a,this.texturePool=[],this.initShaderBuffers()},b.WebGLFilterManager.prototype.begin=function(a,b){this.renderSession=a,this.defaultShader=a.shaderManager.defaultShader;var c=this.renderSession.projection;this.width=2*c.x,this.height=2*-c.y,this.buffer=b},b.WebGLFilterManager.prototype.pushFilter=function(a){var c=this.gl,d=this.renderSession.projection,e=this.renderSession.offset;a._filterArea=a.target.filterArea||a.target.getBounds(),a._previous_stencil_mgr=this.renderSession.stencilManager,this.renderSession.stencilManager=new b.WebGLStencilManager,this.renderSession.stencilManager.setContext(c),c.disable(c.STENCIL_TEST),this.filterStack.push(a);var f=a.filterPasses[0];this.offsetX+=a._filterArea.x,this.offsetY+=a._filterArea.y;var g=this.texturePool.pop();g?g.resize(this.width*this.renderSession.resolution,this.height*this.renderSession.resolution):g=new b.FilterTexture(this.gl,this.width*this.renderSession.resolution,this.height*this.renderSession.resolution),c.bindTexture(c.TEXTURE_2D,g.texture);var h=a._filterArea,i=f.padding;h.x-=i,h.y-=i,h.width+=2*i,h.height+=2*i,h.x<0&&(h.x=0),h.width>this.width&&(h.width=this.width),h.y<0&&(h.y=0),h.height>this.height&&(h.height=this.height),c.bindFramebuffer(c.FRAMEBUFFER,g.frameBuffer),c.viewport(0,0,h.width*this.renderSession.resolution,h.height*this.renderSession.resolution),d.x=h.width/2,d.y=-h.height/2,e.x=-h.x,e.y=-h.y,c.colorMask(!0,!0,!0,!0),c.clearColor(0,0,0,0),c.clear(c.COLOR_BUFFER_BIT),a._glFilterTexture=g},b.WebGLFilterManager.prototype.popFilter=function(){var a=this.gl,c=this.filterStack.pop(),d=c._filterArea,e=c._glFilterTexture,f=this.renderSession.projection,g=this.renderSession.offset;if(c.filterPasses.length>1){a.viewport(0,0,d.width*this.renderSession.resolution,d.height*this.renderSession.resolution),a.bindBuffer(a.ARRAY_BUFFER,this.vertexBuffer),this.vertexArray[0]=0,this.vertexArray[1]=d.height,this.vertexArray[2]=d.width,this.vertexArray[3]=d.height,this.vertexArray[4]=0,this.vertexArray[5]=0,this.vertexArray[6]=d.width,this.vertexArray[7]=0,a.bufferSubData(a.ARRAY_BUFFER,0,this.vertexArray),a.bindBuffer(a.ARRAY_BUFFER,this.uvBuffer),this.uvArray[2]=d.width/this.width,this.uvArray[5]=d.height/this.height,this.uvArray[6]=d.width/this.width,this.uvArray[7]=d.height/this.height,a.bufferSubData(a.ARRAY_BUFFER,0,this.uvArray);var h=e,i=this.texturePool.pop();i||(i=new b.FilterTexture(this.gl,this.width*this.renderSession.resolution,this.height*this.renderSession.resolution)),i.resize(this.width*this.renderSession.resolution,this.height*this.renderSession.resolution),a.bindFramebuffer(a.FRAMEBUFFER,i.frameBuffer),a.clear(a.COLOR_BUFFER_BIT),a.disable(a.BLEND);for(var j=0;j0?a.enable(a.STENCIL_TEST):a.disable(a.STENCIL_TEST),this.applyFilterPass(m,d,n,o),this.texturePool.push(e),c._glFilterTexture=null},b.WebGLFilterManager.prototype.applyFilterPass=function(a,c,d,e){var f=this.gl,g=a.shaders[f.id];g||(g=new b.PixiShader(f),g.fragmentSrc=a.fragmentSrc,g.uniforms=a.uniforms,g.init(),a.shaders[f.id]=g),this.renderSession.shaderManager.setShader(g),f.uniform2f(g.projectionVector,d/2,-e/2),f.uniform2f(g.offsetVector,0,0),a.uniforms.dimensions&&(a.uniforms.dimensions.value[0]=this.width,a.uniforms.dimensions.value[1]=this.height,a.uniforms.dimensions.value[2]=this.vertexArray[0],a.uniforms.dimensions.value[3]=this.vertexArray[5]),g.syncUniforms(),f.bindBuffer(f.ARRAY_BUFFER,this.vertexBuffer),f.vertexAttribPointer(g.aVertexPosition,2,f.FLOAT,!1,0,0),f.bindBuffer(f.ARRAY_BUFFER,this.uvBuffer),f.vertexAttribPointer(g.aTextureCoord,2,f.FLOAT,!1,0,0),f.bindBuffer(f.ARRAY_BUFFER,this.colorBuffer),f.vertexAttribPointer(g.colorAttribute,2,f.FLOAT,!1,0,0),f.bindBuffer(f.ELEMENT_ARRAY_BUFFER,this.indexBuffer),f.drawElements(f.TRIANGLES,6,f.UNSIGNED_SHORT,0),this.renderSession.drawCount++},b.WebGLFilterManager.prototype.initShaderBuffers=function(){var a=this.gl;this.vertexBuffer=a.createBuffer(),this.uvBuffer=a.createBuffer(),this.colorBuffer=a.createBuffer(),this.indexBuffer=a.createBuffer(),this.vertexArray=new b.Float32Array([0,0,1,0,0,1,1,1]),a.bindBuffer(a.ARRAY_BUFFER,this.vertexBuffer),a.bufferData(a.ARRAY_BUFFER,this.vertexArray,a.STATIC_DRAW),this.uvArray=new b.Float32Array([0,0,1,0,0,1,1,1]),a.bindBuffer(a.ARRAY_BUFFER,this.uvBuffer),a.bufferData(a.ARRAY_BUFFER,this.uvArray,a.STATIC_DRAW),this.colorArray=new b.Float32Array([1,16777215,1,16777215,1,16777215,1,16777215]),a.bindBuffer(a.ARRAY_BUFFER,this.colorBuffer),a.bufferData(a.ARRAY_BUFFER,this.colorArray,a.STATIC_DRAW),a.bindBuffer(a.ELEMENT_ARRAY_BUFFER,this.indexBuffer),a.bufferData(a.ELEMENT_ARRAY_BUFFER,new Uint16Array([0,1,2,1,3,2]),a.STATIC_DRAW)},b.WebGLFilterManager.prototype.destroy=function(){var a=this.gl;this.filterStack=null,this.offsetX=0,this.offsetY=0;for(var b=0;b=0;a--){var c=this._glTextures[a],d=b.glContexts[a];d&&c&&d.deleteTexture(c)}this._glTextures.length=0,this.dirty()},b.BaseTexture.fromCanvas=function(a,c){return 0===a.width&&(a.width=1),0===a.height&&(a.height=1),new b.BaseTexture(a,c)},b.TextureSilentFail=!1,b.Texture=function(a,c,d,e){this.noFrame=!1,c||(this.noFrame=!0,c=new b.Rectangle(0,0,1,1)),a instanceof b.Texture&&(a=a.baseTexture),this.baseTexture=a,this.frame=c,this.trim=e,this.valid=!1,this.isTiling=!1,this.requiresUpdate=!1,this.requiresReTint=!1,this._uvs=null,this.width=0,this.height=0,this.crop=d||new b.Rectangle(0,0,1,1),a.hasLoaded&&(this.noFrame&&(c=new b.Rectangle(0,0,a.width,a.height)),this.setFrame(c))},b.Texture.prototype.constructor=b.Texture,b.Texture.prototype.onBaseTextureLoaded=function(){var a=this.baseTexture;this.noFrame&&(this.frame=new b.Rectangle(0,0,a.width,a.height)),this.setFrame(this.frame)},b.Texture.prototype.destroy=function(a){a&&this.baseTexture.destroy(),this.valid=!1},b.Texture.prototype.setFrame=function(a){if(this.noFrame=!1,this.frame=a,this.width=a.width,this.height=a.height,this.crop.x=a.x,this.crop.y=a.y,this.crop.width=a.width,this.crop.height=a.height,!this.trim&&(a.x+a.width>this.baseTexture.width||a.y+a.height>this.baseTexture.height)){if(!b.TextureSilentFail)throw new Error("Texture Error: frame does not fit inside the base Texture dimensions "+this);return void(this.valid=!1)}this.valid=a&&a.width&&a.height&&this.baseTexture.source&&this.baseTexture.hasLoaded,this.trim&&(this.width=this.trim.width,this.height=this.trim.height,this.frame.width=this.trim.width,this.frame.height=this.trim.height),this.valid&&this._updateUvs()},b.Texture.prototype._updateUvs=function(){this._uvs||(this._uvs=new b.TextureUvs);var a=this.crop,c=this.baseTexture.width,d=this.baseTexture.height;this._uvs.x0=a.x/c,this._uvs.y0=a.y/d,this._uvs.x1=(a.x+a.width)/c,this._uvs.y1=a.y/d,this._uvs.x2=(a.x+a.width)/c,this._uvs.y2=(a.y+a.height)/d,this._uvs.x3=a.x/c,this._uvs.y3=(a.y+a.height)/d},b.Texture.fromCanvas=function(a,c){var d=b.BaseTexture.fromCanvas(a,c);return new b.Texture(d)},b.TextureUvs=function(){this.x0=0,this.y0=0,this.x1=0,this.y1=0,this.x2=0,this.y2=0,this.x3=0,this.y3=0},b.RenderTexture=function(a,c,d,e,f){if(this.width=a||100,this.height=c||100,this.resolution=f||1,this.frame=new b.Rectangle(0,0,this.width*this.resolution,this.height*this.resolution),this.crop=new b.Rectangle(0,0,this.width*this.resolution,this.height*this.resolution),this.baseTexture=new b.BaseTexture,this.baseTexture.width=this.width*this.resolution,this.baseTexture.height=this.height*this.resolution,this.baseTexture._glTextures=[],this.baseTexture.resolution=this.resolution,this.baseTexture.scaleMode=e||b.scaleModes.DEFAULT,this.baseTexture.hasLoaded=!0,b.Texture.call(this,this.baseTexture,new b.Rectangle(0,0,this.width*this.resolution,this.height*this.resolution)),this.renderer=d||b.defaultRenderer,this.renderer.type===b.WEBGL_RENDERER){var g=this.renderer.gl;this.baseTexture._dirty[g.id]=!1,this.textureBuffer=new b.FilterTexture(g,this.width,this.height,this.baseTexture.scaleMode),this.baseTexture._glTextures[g.id]=this.textureBuffer.texture,this.render=this.renderWebGL,this.projection=new b.Point(.5*this.width,.5*-this.height)}else this.render=this.renderCanvas,this.textureBuffer=new b.CanvasBuffer(this.width*this.resolution,this.height*this.resolution),this.baseTexture.source=this.textureBuffer.canvas;this.valid=!0,this.tempMatrix=new Phaser.Matrix,this._updateUvs()},b.RenderTexture.prototype=Object.create(b.Texture.prototype),b.RenderTexture.prototype.constructor=b.RenderTexture,b.RenderTexture.prototype.resize=function(a,c,d){a===this.width&&c===this.height||(this.valid=a>0&&c>0,this.width=a,this.height=c,this.frame.width=this.crop.width=a*this.resolution,this.frame.height=this.crop.height=c*this.resolution,d&&(this.baseTexture.width=this.width*this.resolution,this.baseTexture.height=this.height*this.resolution),this.renderer.type===b.WEBGL_RENDERER&&(this.projection.x=this.width/2,this.projection.y=-this.height/2),this.valid&&this.textureBuffer.resize(this.width,this.height))},b.RenderTexture.prototype.clear=function(){this.valid&&(this.renderer.type===b.WEBGL_RENDERER&&this.renderer.gl.bindFramebuffer(this.renderer.gl.FRAMEBUFFER,this.textureBuffer.frameBuffer),this.textureBuffer.clear())},b.RenderTexture.prototype.renderWebGL=function(a,b,c){if(this.valid&&0!==a.alpha){var d=a.worldTransform;d.identity(),d.translate(0,2*this.projection.y),b&&d.append(b),d.scale(1,-1);for(var e=0;ea;a++)this.shaders[a].dirty=!0},b.Strip=function(a){b.DisplayObjectContainer.call(this),this.texture=a,this.uvs=new b.Float32Array([0,1,1,1,1,0,0,1]),this.vertices=new b.Float32Array([0,0,100,0,100,100,0,100]),this.colors=new b.Float32Array([1,1,1,1]),this.indices=new b.Uint16Array([0,1,2,3]),this.dirty=!0,this.blendMode=b.blendModes.NORMAL,this.canvasPadding=0,this.drawMode=b.Strip.DrawModes.TRIANGLE_STRIP},b.Strip.prototype=Object.create(b.DisplayObjectContainer.prototype),b.Strip.prototype.constructor=b.Strip,b.Strip.prototype._renderWebGL=function(a){!this.visible||this.alpha<=0||(a.spriteBatch.stop(),this._vertexBuffer||this._initWebGL(a),a.shaderManager.setShader(a.shaderManager.stripShader),this._renderStrip(a),a.spriteBatch.start())},b.Strip.prototype._initWebGL=function(a){var b=a.gl;this._vertexBuffer=b.createBuffer(),this._indexBuffer=b.createBuffer(),this._uvBuffer=b.createBuffer(),this._colorBuffer=b.createBuffer(),b.bindBuffer(b.ARRAY_BUFFER,this._vertexBuffer),b.bufferData(b.ARRAY_BUFFER,this.vertices,b.DYNAMIC_DRAW),b.bindBuffer(b.ARRAY_BUFFER,this._uvBuffer),b.bufferData(b.ARRAY_BUFFER,this.uvs,b.STATIC_DRAW),b.bindBuffer(b.ARRAY_BUFFER,this._colorBuffer),b.bufferData(b.ARRAY_BUFFER,this.colors,b.STATIC_DRAW),b.bindBuffer(b.ELEMENT_ARRAY_BUFFER,this._indexBuffer),b.bufferData(b.ELEMENT_ARRAY_BUFFER,this.indices,b.STATIC_DRAW)},b.Strip.prototype._renderStrip=function(a){var c=a.gl,d=a.projection,e=a.offset,f=a.shaderManager.stripShader,g=this.drawMode===b.Strip.DrawModes.TRIANGLE_STRIP?c.TRIANGLE_STRIP:c.TRIANGLES;a.blendModeManager.setBlendMode(this.blendMode),c.uniformMatrix3fv(f.translationMatrix,!1,this.worldTransform.toArray(!0)),c.uniform2f(f.projectionVector,d.x,-d.y),c.uniform2f(f.offsetVector,-e.x,-e.y),c.uniform1f(f.alpha,this.worldAlpha),this.dirty?(this.dirty=!1,c.bindBuffer(c.ARRAY_BUFFER,this._vertexBuffer),c.bufferData(c.ARRAY_BUFFER,this.vertices,c.STATIC_DRAW),c.vertexAttribPointer(f.aVertexPosition,2,c.FLOAT,!1,0,0),c.bindBuffer(c.ARRAY_BUFFER,this._uvBuffer),c.bufferData(c.ARRAY_BUFFER,this.uvs,c.STATIC_DRAW),c.vertexAttribPointer(f.aTextureCoord,2,c.FLOAT,!1,0,0),c.activeTexture(c.TEXTURE0),this.texture.baseTexture._dirty[c.id]?a.renderer.updateTexture(this.texture.baseTexture):c.bindTexture(c.TEXTURE_2D,this.texture.baseTexture._glTextures[c.id]),c.bindBuffer(c.ELEMENT_ARRAY_BUFFER,this._indexBuffer),c.bufferData(c.ELEMENT_ARRAY_BUFFER,this.indices,c.STATIC_DRAW)):(c.bindBuffer(c.ARRAY_BUFFER,this._vertexBuffer),c.bufferSubData(c.ARRAY_BUFFER,0,this.vertices),c.vertexAttribPointer(f.aVertexPosition,2,c.FLOAT,!1,0,0),c.bindBuffer(c.ARRAY_BUFFER,this._uvBuffer),c.vertexAttribPointer(f.aTextureCoord,2,c.FLOAT,!1,0,0),c.activeTexture(c.TEXTURE0),this.texture.baseTexture._dirty[c.id]?a.renderer.updateTexture(this.texture.baseTexture):c.bindTexture(c.TEXTURE_2D,this.texture.baseTexture._glTextures[c.id]),c.bindBuffer(c.ELEMENT_ARRAY_BUFFER,this._indexBuffer)),c.drawElements(g,this.indices.length,c.UNSIGNED_SHORT,0)},b.Strip.prototype._renderCanvas=function(a){var c=a.context,d=this.worldTransform,e=d.tx*a.resolution+a.shakeX,f=d.ty*a.resolution+a.shakeY;a.roundPixels?c.setTransform(d.a,d.b,d.c,d.d,0|e,0|f):c.setTransform(d.a,d.b,d.c,d.d,e,f),this.drawMode===b.Strip.DrawModes.TRIANGLE_STRIP?this._renderCanvasTriangleStrip(c):this._renderCanvasTriangles(c)},b.Strip.prototype._renderCanvasTriangleStrip=function(a){var b=this.vertices,c=this.uvs,d=b.length/2;this.count++;for(var e=0;d-2>e;e++){var f=2*e;this._renderCanvasDrawTriangle(a,b,c,f,f+2,f+4)}},b.Strip.prototype._renderCanvasTriangles=function(a){var b=this.vertices,c=this.uvs,d=this.indices,e=d.length;this.count++;for(var f=0;e>f;f+=3){var g=2*d[f],h=2*d[f+1],i=2*d[f+2];this._renderCanvasDrawTriangle(a,b,c,g,h,i)}},b.Strip.prototype._renderCanvasDrawTriangle=function(a,b,c,d,e,f){var g=this.texture.baseTexture.source,h=this.texture.width,i=this.texture.height,j=b[d],k=b[e],l=b[f],m=b[d+1],n=b[e+1],o=b[f+1],p=c[d]*h,q=c[e]*h,r=c[f]*h,s=c[d+1]*i,t=c[e+1]*i,u=c[f+1]*i;if(this.canvasPadding>0){var v=this.canvasPadding/this.worldTransform.a,w=this.canvasPadding/this.worldTransform.d,x=(j+k+l)/3,y=(m+n+o)/3,z=j-x,A=m-y,B=Math.sqrt(z*z+A*A);j=x+z/B*(B+v),m=y+A/B*(B+w),z=k-x,A=n-y,B=Math.sqrt(z*z+A*A),k=x+z/B*(B+v),n=y+A/B*(B+w),z=l-x,A=o-y,B=Math.sqrt(z*z+A*A),l=x+z/B*(B+v),o=y+A/B*(B+w)}a.save(),a.beginPath(),a.moveTo(j,m),a.lineTo(k,n),a.lineTo(l,o),a.closePath(),a.clip();var C=p*t+s*r+q*u-t*r-s*q-p*u,D=j*t+s*l+k*u-t*l-s*k-j*u,E=p*k+j*r+q*l-k*r-j*q-p*l,F=p*t*l+s*k*r+j*q*u-j*t*r-s*q*l-p*k*u,G=m*t+s*o+n*u-t*o-s*n-m*u,H=p*n+m*r+q*o-n*r-m*q-p*o,I=p*t*o+s*n*r+m*q*u-m*t*r-s*q*o-p*n*u;a.transform(D/C,G/C,E/C,H/C,F/C,I/C),a.drawImage(g,0,0),a.restore()},b.Strip.prototype.renderStripFlat=function(a){var b=this.context,c=a.vertices,d=c.length/2;this.count++,b.beginPath();for(var e=1;d-2>e;e++){var f=2*e,g=c[f],h=c[f+2],i=c[f+4],j=c[f+1],k=c[f+3],l=c[f+5];b.moveTo(g,j),b.lineTo(h,k),b.lineTo(i,l)}b.fillStyle="#FF0000",b.fill(),b.closePath()},b.Strip.prototype.onTextureUpdate=function(){this.updateFrame=!0},b.Strip.prototype.getBounds=function(a){for(var c=a||this.worldTransform,d=c.a,e=c.b,f=c.c,g=c.d,h=c.tx,i=c.ty,j=-(1/0),k=-(1/0),l=1/0,m=1/0,n=this.vertices,o=0,p=n.length;p>o;o+=2){var q=n[o],r=n[o+1],s=d*q+f*r+h,t=g*r+e*q+i;l=l>s?s:l,m=m>t?t:m,j=s>j?s:j,k=t>k?t:k}if(l===-(1/0)||k===1/0)return b.EmptyRectangle;var u=this._bounds;return u.x=l,u.width=j-l,u.y=m,u.height=k-m,this._currentBounds=u,u},b.Strip.DrawModes={TRIANGLE_STRIP:0,TRIANGLES:1},b.Rope=function(a,c){b.Strip.call(this,a),this.points=c,this.vertices=new b.Float32Array(4*c.length),this.uvs=new b.Float32Array(4*c.length),this.colors=new b.Float32Array(2*c.length),this.indices=new b.Uint16Array(2*c.length),this.refresh()},b.Rope.prototype=Object.create(b.Strip.prototype),b.Rope.prototype.constructor=b.Rope,b.Rope.prototype.refresh=function(){var a=this.points;if(!(a.length<1)){var b=this.uvs,c=a[0],d=this.indices,e=this.colors;this.count-=.2,b[0]=0,b[1]=0,b[2]=0,b[3]=1,e[0]=1,e[1]=1,d[0]=0,d[1]=1;for(var f,g,h,i=a.length,j=1;i>j;j++)f=a[j],g=4*j,h=j/(i-1),j%2?(b[g]=h,b[g+1]=0,b[g+2]=h,b[g+3]=1):(b[g]=h,b[g+1]=0,b[g+2]=h,b[g+3]=1),g=2*j,e[g]=1,e[g+1]=1,g=2*j,d[g]=g,d[g+1]=g+1,c=f}},b.Rope.prototype.updateTransform=function(){var a=this.points;if(!(a.length<1)){var c,d=a[0],e={x:0,y:0};this.count-=.2;for(var f,g,h,i,j,k=this.vertices,l=a.length,m=0;l>m;m++)f=a[m],g=4*m,c=m1&&(h=1),i=Math.sqrt(e.x*e.x+e.y*e.y),j=this.texture.height/2,e.x/=i,e.y/=i,e.x*=j,e.y*=j,k[g]=f.x+e.x,k[g+1]=f.y+e.y,k[g+2]=f.x-e.x,k[g+3]=f.y-e.y,d=f;b.DisplayObjectContainer.prototype.updateTransform.call(this)}},b.Rope.prototype.setTexture=function(a){this.texture=a},b.TilingSprite=function(a,c,d){b.Sprite.call(this,a),this._width=c||128,this._height=d||128,this.tileScale=new b.Point(1,1),this.tileScaleOffset=new b.Point(1,1),this.tilePosition=new b.Point,this.renderable=!0,this.tint=16777215,this.textureDebug=!1,this.blendMode=b.blendModes.NORMAL,this.canvasBuffer=null,this.tilingTexture=null,this.tilePattern=null,this.refreshTexture=!0,this.frameWidth=0,this.frameHeight=0},b.TilingSprite.prototype=Object.create(b.Sprite.prototype),b.TilingSprite.prototype.constructor=b.TilingSprite,b.TilingSprite.prototype.setTexture=function(a){this.texture!==a&&(this.texture=a,this.refreshTexture=!0,this.cachedTint=16777215)},b.TilingSprite.prototype._renderWebGL=function(a){if(this.visible&&this.renderable&&0!==this.alpha){if(this._mask&&(a.spriteBatch.stop(),a.maskManager.pushMask(this.mask,a),a.spriteBatch.start()),this._filters&&(a.spriteBatch.flush(),a.filterManager.pushFilter(this._filterBlock)),this.refreshTexture){if(this.generateTilingTexture(!0,a),!this.tilingTexture)return;this.tilingTexture.needsUpdate&&(a.renderer.updateTexture(this.tilingTexture.baseTexture),this.tilingTexture.needsUpdate=!1)}a.spriteBatch.renderTilingSprite(this);for(var b=0;bn?n:x,x=x>p?p:x,x=x>r?r:x,x=x>t?t:x,y=y>o?o:y,y=y>q?q:y,y=y>s?s:y,y=y>u?u:y,v=n>v?n:v,v=p>v?p:v,v=r>v?r:v,v=t>v?t:v,w=o>w?o:w,w=q>w?q:w,w=s>w?s:w,w=u>w?u:w;var z=this._bounds;return z.x=x,z.width=v-x,z.y=y,z.height=w-y,this._currentBounds=z,z},b.TilingSprite.prototype.destroy=function(){b.Sprite.prototype.destroy.call(this),this.canvasBuffer&&(this.canvasBuffer.destroy(),this.canvasBuffer=null),this.tileScale=null,this.tileScaleOffset=null,this.tilePosition=null,this.tilingTexture&&(this.tilingTexture.destroy(!0),this.tilingTexture=null)},Object.defineProperty(b.TilingSprite.prototype,"width",{get:function(){return this._width},set:function(a){this._width=a}}),Object.defineProperty(b.TilingSprite.prototype,"height",{get:function(){return this._height},set:function(a){this._height=a}}),"undefined"!=typeof exports?("undefined"!=typeof module&&module.exports&&(exports=module.exports=b),exports.PIXI=b):"undefined"!=typeof define&&define.amd?define("PIXI",function(){return a.PIXI=b}()):a.PIXI=b,b}).call(this),function(){function a(a,b){this._scaleFactor=a,this._deltaMode=b,this.originalEvent=null}var b=this,c=c||{VERSION:"2.6.0",GAMES:[],AUTO:0,CANVAS:1,WEBGL:2,HEADLESS:3,NONE:0,LEFT:1,RIGHT:2,UP:3,DOWN:4,SPRITE:0,BUTTON:1,IMAGE:2,GRAPHICS:3,TEXT:4,TILESPRITE:5,BITMAPTEXT:6,GROUP:7,RENDERTEXTURE:8,TILEMAP:9,TILEMAPLAYER:10,EMITTER:11,POLYGON:12,BITMAPDATA:13,CANVAS_FILTER:14,WEBGL_FILTER:15,ELLIPSE:16,SPRITEBATCH:17,RETROFONT:18,POINTER:19,ROPE:20,CIRCLE:21,RECTANGLE:22,LINE:23,MATRIX:24,POINT:25,ROUNDEDRECTANGLE:26,CREATURE:27,VIDEO:28,PENDING_ATLAS:-1,HORIZONTAL:0,VERTICAL:1,LANDSCAPE:0,PORTRAIT:1,ANGLE_UP:270,ANGLE_DOWN:90,ANGLE_LEFT:180,ANGLE_RIGHT:0,ANGLE_NORTH_EAST:315,ANGLE_NORTH_WEST:225,ANGLE_SOUTH_EAST:45,ANGLE_SOUTH_WEST:135,TOP_LEFT:0,TOP_CENTER:1,TOP_RIGHT:2,LEFT_TOP:3,LEFT_CENTER:4,LEFT_BOTTOM:5,CENTER:6,RIGHT_TOP:7,RIGHT_CENTER:8,RIGHT_BOTTOM:9,BOTTOM_LEFT:10,BOTTOM_CENTER:11,BOTTOM_RIGHT:12,blendModes:{NORMAL:0,ADD:1,MULTIPLY:2,SCREEN:3,OVERLAY:4,DARKEN:5,LIGHTEN:6,COLOR_DODGE:7,COLOR_BURN:8,HARD_LIGHT:9,SOFT_LIGHT:10,DIFFERENCE:11,EXCLUSION:12,HUE:13,SATURATION:14,COLOR:15,LUMINOSITY:16},scaleModes:{DEFAULT:0,LINEAR:0,NEAREST:1},PIXI:PIXI||{}};if(Math.trunc||(Math.trunc=function(a){return 0>a?Math.ceil(a):Math.floor(a)}),Function.prototype.bind||(Function.prototype.bind=function(){var a=Array.prototype.slice;return function(b){function c(){var f=e.concat(a.call(arguments));d.apply(this instanceof c?this:b,f)}var d=this,e=a.call(arguments,1);if("function"!=typeof d)throw new TypeError;return c.prototype=function f(a){return a&&(f.prototype=a),this instanceof f?void 0:new f}(d.prototype),c}}()),Array.isArray||(Array.isArray=function(a){return"[object Array]"==Object.prototype.toString.call(a)}),Array.prototype.forEach||(Array.prototype.forEach=function(a){"use strict";if(void 0===this||null===this)throw new TypeError;var b=Object(this),c=b.length>>>0;if("function"!=typeof a)throw new TypeError;for(var d=arguments.length>=2?arguments[1]:void 0,e=0;c>e;e++)e in b&&a.call(d,b[e],e,b)}),"function"!=typeof window.Uint32Array&&"object"!=typeof window.Uint32Array){var d=function(a){var b=new Array;window[a]=function(a){if("number"==typeof a){Array.call(this,a),this.length=a;for(var b=0;bf&&(a=a[g]);)g=c[f],f++;return a?a[d]:null},setProperty:function(a,b,c){for(var d=b.split("."),e=d.pop(),f=d.length,g=1,h=d[0];f>g&&(a=a[h]);)h=d[g],g++;return a&&(a[e]=c),a},chanceRoll:function(a){return void 0===a&&(a=50),a>0&&100*Math.random()<=a},randomChoice:function(a,b){return Math.random()<.5?a:b},parseDimension:function(a,b){var c=0,d=0;return"string"==typeof a?"%"===a.substr(-1)?(c=parseInt(a,10)/100,d=0===b?window.innerWidth*c:window.innerHeight*c):d=parseInt(a,10):d=a,d},pad:function(a,b,c,d){if(void 0===b)var b=0;if(void 0===c)var c=" ";if(void 0===d)var d=3;a=a.toString();var e=0;if(b+1>=a.length)switch(d){case 1:a=new Array(b+1-a.length).join(c)+a;break;case 3:var f=Math.ceil((e=b-a.length)/2),g=e-f;a=new Array(g+1).join(c)+a+new Array(f+1).join(c);break;default:a+=new Array(b+1-a.length).join(c)}return a},isPlainObject:function(a){if("object"!=typeof a||a.nodeType||a===a.window)return!1;try{if(a.constructor&&!{}.hasOwnProperty.call(a.constructor.prototype,"isPrototypeOf"))return!1}catch(b){return!1}return!0},extend:function(){var a,b,d,e,f,g,h=arguments[0]||{},i=1,j=arguments.length,k=!1;for("boolean"==typeof h&&(k=h,h=arguments[1]||{},i=2),j===i&&(h=this,--i);j>i;i++)if(null!=(a=arguments[i]))for(b in a)d=h[b],e=a[b],h!==e&&(k&&e&&(c.Utils.isPlainObject(e)||(f=Array.isArray(e)))?(f?(f=!1,g=d&&Array.isArray(d)?d:[]):g=d&&c.Utils.isPlainObject(d)?d:{},h[b]=c.Utils.extend(k,g,e)):void 0!==e&&(h[b]=e));return h},mixinPrototype:function(a,b,c){void 0===c&&(c=!1);for(var d=Object.keys(b),e=0;e0&&(this._radius=.5*d),this.type=c.CIRCLE},c.Circle.prototype={circumference:function(){return 2*(Math.PI*this._radius)},random:function(a){void 0===a&&(a=new c.Point);var b=2*Math.PI*Math.random(),d=Math.random()+Math.random(),e=d>1?2-d:d,f=e*Math.cos(b),g=e*Math.sin(b);return a.x=this.x+f*this.radius,a.y=this.y+g*this.radius,a},getBounds:function(){return new c.Rectangle(this.x-this.radius,this.y-this.radius,this.diameter,this.diameter)},setTo:function(a,b,c){return this.x=a,this.y=b,this._diameter=c,this._radius=.5*c,this},copyFrom:function(a){return this.setTo(a.x,a.y,a.diameter)},copyTo:function(a){return a.x=this.x,a.y=this.y,a.diameter=this._diameter,a},distance:function(a,b){var d=c.Math.distance(this.x,this.y,a.x,a.y);return b?Math.round(d):d},clone:function(a){return void 0===a||null===a?a=new c.Circle(this.x,this.y,this.diameter):a.setTo(this.x,this.y,this.diameter),a},contains:function(a,b){return c.Circle.contains(this,a,b)},circumferencePoint:function(a,b,d){return c.Circle.circumferencePoint(this,a,b,d)},offset:function(a,b){return this.x+=a,this.y+=b,this},offsetPoint:function(a){return this.offset(a.x,a.y)},toString:function(){return"[{Phaser.Circle (x="+this.x+" y="+this.y+" diameter="+this.diameter+" radius="+this.radius+")}]"}},c.Circle.prototype.constructor=c.Circle,Object.defineProperty(c.Circle.prototype,"diameter",{get:function(){return this._diameter},set:function(a){a>0&&(this._diameter=a,this._radius=.5*a)}}),Object.defineProperty(c.Circle.prototype,"radius",{get:function(){return this._radius},set:function(a){a>0&&(this._radius=a,this._diameter=2*a)}}),Object.defineProperty(c.Circle.prototype,"left",{get:function(){return this.x-this._radius},set:function(a){a>this.x?(this._radius=0,this._diameter=0):this.radius=this.x-a}}),Object.defineProperty(c.Circle.prototype,"right",{get:function(){return this.x+this._radius},set:function(a){athis.y?(this._radius=0,this._diameter=0):this.radius=this.y-a}}),Object.defineProperty(c.Circle.prototype,"bottom",{get:function(){return this.y+this._radius},set:function(a){a0?Math.PI*this._radius*this._radius:0}}),Object.defineProperty(c.Circle.prototype,"empty",{get:function(){return 0===this._diameter},set:function(a){a===!0&&this.setTo(0,0,0)}}),c.Circle.contains=function(a,b,c){if(a.radius>0&&b>=a.left&&b<=a.right&&c>=a.top&&c<=a.bottom){var d=(a.x-b)*(a.x-b),e=(a.y-c)*(a.y-c);return d+e<=a.radius*a.radius}return!1},c.Circle.equals=function(a,b){return a.x==b.x&&a.y==b.y&&a.diameter==b.diameter},c.Circle.intersects=function(a,b){return c.Math.distance(a.x,a.y,b.x,b.y)<=a.radius+b.radius},c.Circle.circumferencePoint=function(a,b,d,e){return void 0===d&&(d=!1),void 0===e&&(e=new c.Point),d===!0&&(b=c.Math.degToRad(b)),e.x=a.x+a.radius*Math.cos(b),e.y=a.y+a.radius*Math.sin(b),e},c.Circle.intersectsRectangle=function(a,b){var c=Math.abs(a.x-b.x-b.halfWidth),d=b.halfWidth+a.radius;if(c>d)return!1;var e=Math.abs(a.y-b.y-b.halfHeight),f=b.halfHeight+a.radius;if(e>f)return!1;if(c<=b.halfWidth||e<=b.halfHeight)return!0;var g=c-b.halfWidth,h=e-b.halfHeight,i=g*g,j=h*h,k=a.radius*a.radius;return k>=i+j},PIXI.Circle=c.Circle,c.Ellipse=function(a,b,d,e){a=a||0,b=b||0,d=d||0,e=e||0,this.x=a,this.y=b,this.width=d,this.height=e,this.type=c.ELLIPSE},c.Ellipse.prototype={setTo:function(a,b,c,d){return this.x=a,this.y=b,this.width=c,this.height=d,this},getBounds:function(){return new c.Rectangle(this.x-this.width,this.y-this.height,this.width,this.height)},copyFrom:function(a){return this.setTo(a.x,a.y,a.width,a.height)},copyTo:function(a){return a.x=this.x,a.y=this.y,a.width=this.width,a.height=this.height,a},clone:function(a){return void 0===a||null===a?a=new c.Ellipse(this.x,this.y,this.width,this.height):a.setTo(this.x,this.y,this.width,this.height),a},contains:function(a,b){return c.Ellipse.contains(this,a,b)},random:function(a){void 0===a&&(a=new c.Point);var b=Math.random()*Math.PI*2,d=Math.random();return a.x=Math.sqrt(d)*Math.cos(b),a.y=Math.sqrt(d)*Math.sin(b),a.x=this.x+a.x*this.width/2,a.y=this.y+a.y*this.height/2,a},toString:function(){return"[{Phaser.Ellipse (x="+this.x+" y="+this.y+" width="+this.width+" height="+this.height+")}]"}},c.Ellipse.prototype.constructor=c.Ellipse,Object.defineProperty(c.Ellipse.prototype,"left",{get:function(){return this.x},set:function(a){this.x=a}}),Object.defineProperty(c.Ellipse.prototype,"right",{ +get:function(){return this.x+this.width},set:function(a){ad+e},PIXI.Ellipse=c.Ellipse,c.Line=function(a,b,d,e){a=a||0,b=b||0,d=d||0,e=e||0,this.start=new c.Point(a,b),this.end=new c.Point(d,e),this.type=c.LINE},c.Line.prototype={setTo:function(a,b,c,d){return this.start.setTo(a,b),this.end.setTo(c,d),this},fromSprite:function(a,b,c){return void 0===c&&(c=!1),c?this.setTo(a.center.x,a.center.y,b.center.x,b.center.y):this.setTo(a.x,a.y,b.x,b.y)},fromAngle:function(a,b,c,d){return this.start.setTo(a,b),this.end.setTo(a+Math.cos(c)*d,b+Math.sin(c)*d),this},rotate:function(a,b){var c=(this.start.x+this.end.x)/2,d=(this.start.y+this.end.y)/2;return this.start.rotate(c,d,a,b),this.end.rotate(c,d,a,b),this},rotateAround:function(a,b,c,d){return this.start.rotate(a,b,c,d),this.end.rotate(a,b,c,d),this},intersects:function(a,b,d){return c.Line.intersectsPoints(this.start,this.end,a.start,a.end,b,d)},reflect:function(a){return c.Line.reflect(this,a)},midPoint:function(a){return void 0===a&&(a=new c.Point),a.x=(this.start.x+this.end.x)/2,a.y=(this.start.y+this.end.y)/2,a},centerOn:function(a,b){var c=(this.start.x+this.end.x)/2,d=(this.start.y+this.end.y)/2,e=a-c,f=b-d;this.start.add(e,f),this.end.add(e,f)},pointOnLine:function(a,b){return(a-this.start.x)*(this.end.y-this.start.y)===(this.end.x-this.start.x)*(b-this.start.y)},pointOnSegment:function(a,b){var c=Math.min(this.start.x,this.end.x),d=Math.max(this.start.x,this.end.x),e=Math.min(this.start.y,this.end.y),f=Math.max(this.start.y,this.end.y);return this.pointOnLine(a,b)&&a>=c&&d>=a&&b>=e&&f>=b},random:function(a){void 0===a&&(a=new c.Point);var b=Math.random();return a.x=this.start.x+b*(this.end.x-this.start.x),a.y=this.start.y+b*(this.end.y-this.start.y),a},coordinatesOnLine:function(a,b){void 0===a&&(a=1),void 0===b&&(b=[]);var c=Math.round(this.start.x),d=Math.round(this.start.y),e=Math.round(this.end.x),f=Math.round(this.end.y),g=Math.abs(e-c),h=Math.abs(f-d),i=e>c?1:-1,j=f>d?1:-1,k=g-h;b.push([c,d]);for(var l=1;c!=e||d!=f;){var m=k<<1;m>-h&&(k-=h,c+=i),g>m&&(k+=g,d+=j),l%a===0&&b.push([c,d]),l++}return b},clone:function(a){return void 0===a||null===a?a=new c.Line(this.start.x,this.start.y,this.end.x,this.end.y):a.setTo(this.start.x,this.start.y,this.end.x,this.end.y),a}},Object.defineProperty(c.Line.prototype,"length",{get:function(){return Math.sqrt((this.end.x-this.start.x)*(this.end.x-this.start.x)+(this.end.y-this.start.y)*(this.end.y-this.start.y))}}),Object.defineProperty(c.Line.prototype,"angle",{get:function(){return Math.atan2(this.end.y-this.start.y,this.end.x-this.start.x)}}),Object.defineProperty(c.Line.prototype,"slope",{get:function(){return(this.end.y-this.start.y)/(this.end.x-this.start.x)}}),Object.defineProperty(c.Line.prototype,"perpSlope",{get:function(){return-((this.end.x-this.start.x)/(this.end.y-this.start.y))}}),Object.defineProperty(c.Line.prototype,"x",{get:function(){return Math.min(this.start.x,this.end.x)}}),Object.defineProperty(c.Line.prototype,"y",{get:function(){return Math.min(this.start.y,this.end.y)}}),Object.defineProperty(c.Line.prototype,"left",{get:function(){return Math.min(this.start.x,this.end.x)}}),Object.defineProperty(c.Line.prototype,"right",{get:function(){return Math.max(this.start.x,this.end.x)}}),Object.defineProperty(c.Line.prototype,"top",{get:function(){return Math.min(this.start.y,this.end.y)}}),Object.defineProperty(c.Line.prototype,"bottom",{get:function(){return Math.max(this.start.y,this.end.y)}}),Object.defineProperty(c.Line.prototype,"width",{get:function(){return Math.abs(this.start.x-this.end.x)}}),Object.defineProperty(c.Line.prototype,"height",{get:function(){return Math.abs(this.start.y-this.end.y)}}),Object.defineProperty(c.Line.prototype,"normalX",{get:function(){return Math.cos(this.angle-1.5707963267948966)}}),Object.defineProperty(c.Line.prototype,"normalY",{get:function(){return Math.sin(this.angle-1.5707963267948966)}}),Object.defineProperty(c.Line.prototype,"normalAngle",{get:function(){return c.Math.wrap(this.angle-1.5707963267948966,-Math.PI,Math.PI)}}),c.Line.intersectsPoints=function(a,b,d,e,f,g){void 0===f&&(f=!0),void 0===g&&(g=new c.Point);var h=b.y-a.y,i=e.y-d.y,j=a.x-b.x,k=d.x-e.x,l=b.x*a.y-a.x*b.y,m=e.x*d.y-d.x*e.y,n=h*k-i*j;if(0===n)return null;if(g.x=(j*m-k*l)/n,g.y=(i*l-h*m)/n,f){var o=(e.y-d.y)*(b.x-a.x)-(e.x-d.x)*(b.y-a.y),p=((e.x-d.x)*(a.y-d.y)-(e.y-d.y)*(a.x-d.x))/o,q=((b.x-a.x)*(a.y-d.y)-(b.y-a.y)*(a.x-d.x))/o;return p>=0&&1>=p&&q>=0&&1>=q?g:null}return g},c.Line.intersects=function(a,b,d,e){return c.Line.intersectsPoints(a.start,a.end,b.start,b.end,d,e)},c.Line.intersectsRectangle=function(a,b){if(!c.Rectangle.intersects(a,b))return!1;var d=a.start.x,e=a.start.y,f=a.end.x,g=a.end.y,h=b.x,i=b.y,j=b.right,k=b.bottom,l=0;if(d>=h&&j>=d&&e>=i&&k>=e||f>=h&&j>=f&&g>=i&&k>=g)return!0;if(h>d&&f>=h){if(l=e+(g-e)*(h-d)/(f-d),l>i&&k>=l)return!0}else if(d>j&&j>=f&&(l=e+(g-e)*(j-d)/(f-d),l>=i&&k>=l))return!0;if(i>e&&g>=i){if(l=d+(f-d)*(i-e)/(g-e),l>=h&&j>=l)return!0}else if(e>k&&k>=g&&(l=d+(f-d)*(k-e)/(g-e),l>=h&&j>=l))return!0;return!1},c.Line.reflect=function(a,b){return 2*b.normalAngle-3.141592653589793-a.angle},c.Matrix=function(a,b,d,e,f,g){void 0!==a&&null!==a||(a=1),void 0!==b&&null!==b||(b=0),void 0!==d&&null!==d||(d=0),void 0!==e&&null!==e||(e=1),void 0!==f&&null!==f||(f=0),void 0!==g&&null!==g||(g=0),this.a=a,this.b=b,this.c=d,this.d=e,this.tx=f,this.ty=g,this.type=c.MATRIX},c.Matrix.prototype={fromArray:function(a){return this.setTo(a[0],a[1],a[3],a[4],a[2],a[5])},setTo:function(a,b,c,d,e,f){return this.a=a,this.b=b,this.c=c,this.d=d,this.tx=e,this.ty=f,this},clone:function(a){return void 0===a||null===a?a=new c.Matrix(this.a,this.b,this.c,this.d,this.tx,this.ty):(a.a=this.a,a.b=this.b,a.c=this.c,a.d=this.d,a.tx=this.tx,a.ty=this.ty),a},copyTo:function(a){return a.copyFrom(this),a},copyFrom:function(a){return this.a=a.a,this.b=a.b,this.c=a.c,this.d=a.d,this.tx=a.tx,this.ty=a.ty,this},toArray:function(a,b){return void 0===b&&(b=new PIXI.Float32Array(9)),a?(b[0]=this.a,b[1]=this.b,b[2]=0,b[3]=this.c,b[4]=this.d,b[5]=0,b[6]=this.tx,b[7]=this.ty,b[8]=1):(b[0]=this.a,b[1]=this.c,b[2]=this.tx,b[3]=this.b,b[4]=this.d,b[5]=this.ty,b[6]=0,b[7]=0,b[8]=1),b},apply:function(a,b){return void 0===b&&(b=new c.Point),b.x=this.a*a.x+this.c*a.y+this.tx,b.y=this.b*a.x+this.d*a.y+this.ty,b},applyInverse:function(a,b){void 0===b&&(b=new c.Point);var d=1/(this.a*this.d+this.c*-this.b),e=a.x,f=a.y;return b.x=this.d*d*e+-this.c*d*f+(this.ty*this.c-this.tx*this.d)*d,b.y=this.a*d*f+-this.b*d*e+(-this.ty*this.a+this.tx*this.b)*d,b},translate:function(a,b){return this.tx+=a,this.ty+=b,this},scale:function(a,b){return this.a*=a,this.d*=b,this.c*=a,this.b*=b,this.tx*=a,this.ty*=b,this},rotate:function(a){var b=Math.cos(a),c=Math.sin(a),d=this.a,e=this.c,f=this.tx;return this.a=d*b-this.b*c,this.b=d*c+this.b*b,this.c=e*b-this.d*c,this.d=e*c+this.d*b,this.tx=f*b-this.ty*c,this.ty=f*c+this.ty*b,this},append:function(a){var b=this.a,c=this.b,d=this.c,e=this.d;return this.a=a.a*b+a.b*d,this.b=a.a*c+a.b*e,this.c=a.c*b+a.d*d,this.d=a.c*c+a.d*e,this.tx=a.tx*b+a.ty*d+this.tx,this.ty=a.tx*c+a.ty*e+this.ty,this},identity:function(){return this.setTo(1,0,0,1,0,0)}},c.identityMatrix=new c.Matrix,PIXI.Matrix=c.Matrix,PIXI.identityMatrix=c.identityMatrix,c.Point=function(a,b){a=a||0,b=b||0,this.x=a,this.y=b,this.type=c.POINT},c.Point.prototype={copyFrom:function(a){return this.setTo(a.x,a.y)},invert:function(){return this.setTo(this.y,this.x)},setTo:function(a,b){return this.x=a||0,this.y=b||(0!==b?this.x:0),this},set:function(a,b){return this.x=a||0,this.y=b||(0!==b?this.x:0),this},add:function(a,b){return this.x+=a,this.y+=b,this},subtract:function(a,b){return this.x-=a,this.y-=b,this},multiply:function(a,b){return this.x*=a,this.y*=b,this},divide:function(a,b){return this.x/=a,this.y/=b,this},clampX:function(a,b){return this.x=c.Math.clamp(this.x,a,b),this},clampY:function(a,b){return this.y=c.Math.clamp(this.y,a,b),this},clamp:function(a,b){return this.x=c.Math.clamp(this.x,a,b),this.y=c.Math.clamp(this.y,a,b),this},clone:function(a){return void 0===a||null===a?a=new c.Point(this.x,this.y):a.setTo(this.x,this.y),a},copyTo:function(a){return a.x=this.x,a.y=this.y,a},distance:function(a,b){return c.Point.distance(this,a,b)},equals:function(a){return a.x===this.x&&a.y===this.y},angle:function(a,b){return void 0===b&&(b=!1),b?c.Math.radToDeg(Math.atan2(a.y-this.y,a.x-this.x)):Math.atan2(a.y-this.y,a.x-this.x)},rotate:function(a,b,d,e,f){return c.Point.rotate(this,a,b,d,e,f)},getMagnitude:function(){return Math.sqrt(this.x*this.x+this.y*this.y)},getMagnitudeSq:function(){return this.x*this.x+this.y*this.y},setMagnitude:function(a){return this.normalize().multiply(a,a)},normalize:function(){if(!this.isZero()){var a=this.getMagnitude();this.x/=a,this.y/=a}return this},isZero:function(){return 0===this.x&&0===this.y},dot:function(a){return this.x*a.x+this.y*a.y},cross:function(a){return this.x*a.y-this.y*a.x},perp:function(){return this.setTo(-this.y,this.x)},rperp:function(){return this.setTo(this.y,-this.x)},normalRightHand:function(){return this.setTo(-1*this.y,this.x)},floor:function(){return this.setTo(Math.floor(this.x),Math.floor(this.y))},ceil:function(){return this.setTo(Math.ceil(this.x),Math.ceil(this.y))},toString:function(){return"[{Point (x="+this.x+" y="+this.y+")}]"}},c.Point.prototype.constructor=c.Point,c.Point.add=function(a,b,d){return void 0===d&&(d=new c.Point),d.x=a.x+b.x,d.y=a.y+b.y,d},c.Point.subtract=function(a,b,d){return void 0===d&&(d=new c.Point),d.x=a.x-b.x,d.y=a.y-b.y,d},c.Point.multiply=function(a,b,d){return void 0===d&&(d=new c.Point),d.x=a.x*b.x,d.y=a.y*b.y,d},c.Point.divide=function(a,b,d){return void 0===d&&(d=new c.Point),d.x=a.x/b.x,d.y=a.y/b.y,d},c.Point.equals=function(a,b){return a.x===b.x&&a.y===b.y},c.Point.angle=function(a,b){return Math.atan2(a.y-b.y,a.x-b.x)},c.Point.negative=function(a,b){return void 0===b&&(b=new c.Point),b.setTo(-a.x,-a.y)},c.Point.multiplyAdd=function(a,b,d,e){return void 0===e&&(e=new c.Point),e.setTo(a.x+b.x*d,a.y+b.y*d)},c.Point.interpolate=function(a,b,d,e){return void 0===e&&(e=new c.Point),e.setTo(a.x+(b.x-a.x)*d,a.y+(b.y-a.y)*d)},c.Point.perp=function(a,b){return void 0===b&&(b=new c.Point),b.setTo(-a.y,a.x)},c.Point.rperp=function(a,b){return void 0===b&&(b=new c.Point),b.setTo(a.y,-a.x)},c.Point.distance=function(a,b,d){var e=c.Math.distance(a.x,a.y,b.x,b.y);return d?Math.round(e):e},c.Point.project=function(a,b,d){void 0===d&&(d=new c.Point);var e=a.dot(b)/b.getMagnitudeSq();return 0!==e&&d.setTo(e*b.x,e*b.y),d},c.Point.projectUnit=function(a,b,d){void 0===d&&(d=new c.Point);var e=a.dot(b);return 0!==e&&d.setTo(e*b.x,e*b.y),d},c.Point.normalRightHand=function(a,b){return void 0===b&&(b=new c.Point),b.setTo(-1*a.y,a.x)},c.Point.normalize=function(a,b){void 0===b&&(b=new c.Point);var d=a.getMagnitude();return 0!==d&&b.setTo(a.x/d,a.y/d),b},c.Point.rotate=function(a,b,d,e,f,g){if(f&&(e=c.Math.degToRad(e)),void 0===g){a.subtract(b,d);var h=Math.sin(e),i=Math.cos(e),j=i*a.x-h*a.y,k=h*a.x+i*a.y;a.x=j+b,a.y=k+d}else{var l=e+Math.atan2(a.y-d,a.x-b);a.x=b+g*Math.cos(l),a.y=d+g*Math.sin(l)}return a},c.Point.centroid=function(a,b){if(void 0===b&&(b=new c.Point),"[object Array]"!==Object.prototype.toString.call(a))throw new Error("Phaser.Point. Parameter 'points' must be an array");var d=a.length;if(1>d)throw new Error("Phaser.Point. Parameter 'points' array must not be empty");if(1===d)return b.copyFrom(a[0]),b;for(var e=0;d>e;e++)c.Point.add(b,a[e],b);return b.divide(d,d),b},c.Point.parse=function(a,b,d){b=b||"x",d=d||"y";var e=new c.Point;return a[b]&&(e.x=parseInt(a[b],10)),a[d]&&(e.y=parseInt(a[d],10)),e},PIXI.Point=c.Point,c.Polygon=function(){this.area=0,this._points=[],arguments.length>0&&this.setTo.apply(this,arguments),this.closed=!0,this.flattened=!1,this.type=c.POLYGON},c.Polygon.prototype={toNumberArray:function(a){void 0===a&&(a=[]);for(var b=0;b=g&&i>b||b>=i&&g>b)&&(h-f)*(b-g)/(i-g)+f>a&&(c=!c)}else for(var d=-1,e=this._points.length-1;++d=g&&i>b||b>=i&&g>b)&&(h-f)*(b-g)/(i-g)+f>a&&(c=!c)}return c},setTo:function(a){if(this.area=0,this._points=[],arguments.length>0){Array.isArray(a)||(a=Array.prototype.slice.call(arguments));for(var b=Number.MAX_VALUE,c=0,d=a.length;d>c;c++){if("number"==typeof a[c]){var e=new PIXI.Point(a[c],a[c+1]);c++}else if(Array.isArray(a[c]))var e=new PIXI.Point(a[c][0],a[c][1]);else var e=new PIXI.Point(a[c].x,a[c].y);this._points.push(e),e.yf;f++)b=this._points[f],c=f===g-1?this._points[0]:this._points[f+1],d=(b.y-a+(c.y-a))/2,e=b.x-c.x,this.area+=d*e;return this.area}},c.Polygon.prototype.constructor=c.Polygon,Object.defineProperty(c.Polygon.prototype,"points",{get:function(){return this._points},set:function(a){null!=a?this.setTo(a):this.setTo()}}),PIXI.Polygon=c.Polygon,c.Rectangle=function(a,b,d,e){a=a||0,b=b||0,d=d||0,e=e||0,this.x=a,this.y=b,this.width=d,this.height=e,this.type=c.RECTANGLE},c.Rectangle.prototype={offset:function(a,b){return this.x+=a,this.y+=b,this},offsetPoint:function(a){return this.offset(a.x,a.y)},setTo:function(a,b,c,d){return this.x=a,this.y=b,this.width=c,this.height=d,this},scale:function(a,b){return void 0===b&&(b=a),this.width*=a,this.height*=b,this},centerOn:function(a,b){return this.centerX=a,this.centerY=b,this},floor:function(){this.x=Math.floor(this.x),this.y=Math.floor(this.y)},floorAll:function(){this.x=Math.floor(this.x),this.y=Math.floor(this.y),this.width=Math.floor(this.width),this.height=Math.floor(this.height)},ceil:function(){this.x=Math.ceil(this.x),this.y=Math.ceil(this.y)},ceilAll:function(){this.x=Math.ceil(this.x),this.y=Math.ceil(this.y),this.width=Math.ceil(this.width),this.height=Math.ceil(this.height)},copyFrom:function(a){return this.setTo(a.x,a.y,a.width,a.height)},copyTo:function(a){return a.x=this.x,a.y=this.y,a.width=this.width,a.height=this.height,a},inflate:function(a,b){return c.Rectangle.inflate(this,a,b)},size:function(a){return c.Rectangle.size(this,a)},resize:function(a,b){return this.width=a,this.height=b,this},clone:function(a){return c.Rectangle.clone(this,a)},contains:function(a,b){return c.Rectangle.contains(this,a,b)},containsRect:function(a){return c.Rectangle.containsRect(a,this)},equals:function(a){return c.Rectangle.equals(this,a)},intersection:function(a,b){return c.Rectangle.intersection(this,a,b)},intersects:function(a){return c.Rectangle.intersects(this,a)},intersectsRaw:function(a,b,d,e,f){return c.Rectangle.intersectsRaw(this,a,b,d,e,f)},union:function(a,b){return c.Rectangle.union(this,a,b)},random:function(a){return void 0===a&&(a=new c.Point),a.x=this.randomX,a.y=this.randomY,a},getPoint:function(a,b){switch(void 0===b&&(b=new c.Point),a){default:case c.TOP_LEFT:return b.set(this.x,this.y);case c.TOP_CENTER:return b.set(this.centerX,this.y);case c.TOP_RIGHT:return b.set(this.right,this.y);case c.LEFT_CENTER:return b.set(this.x,this.centerY);case c.CENTER:return b.set(this.centerX,this.centerY);case c.RIGHT_CENTER:return b.set(this.right,this.centerY);case c.BOTTOM_LEFT:return b.set(this.x,this.bottom);case c.BOTTOM_CENTER:return b.set(this.centerX,this.bottom);case c.BOTTOM_RIGHT:return b.set(this.right,this.bottom)}},toString:function(){return"[{Rectangle (x="+this.x+" y="+this.y+" width="+this.width+" height="+this.height+" empty="+this.empty+")}]"}},Object.defineProperty(c.Rectangle.prototype,"halfWidth",{get:function(){return Math.round(this.width/2)}}),Object.defineProperty(c.Rectangle.prototype,"halfHeight",{get:function(){return Math.round(this.height/2)}}),Object.defineProperty(c.Rectangle.prototype,"bottom",{get:function(){return this.y+this.height},set:function(a){a<=this.y?this.height=0:this.height=a-this.y}}),Object.defineProperty(c.Rectangle.prototype,"bottomLeft",{get:function(){return new c.Point(this.x,this.bottom)},set:function(a){this.x=a.x,this.bottom=a.y}}),Object.defineProperty(c.Rectangle.prototype,"bottomRight",{get:function(){return new c.Point(this.right,this.bottom)},set:function(a){this.right=a.x,this.bottom=a.y}}),Object.defineProperty(c.Rectangle.prototype,"left",{get:function(){return this.x},set:function(a){a>=this.right?this.width=0:this.width=this.right-a,this.x=a}}),Object.defineProperty(c.Rectangle.prototype,"right",{get:function(){return this.x+this.width},set:function(a){a<=this.x?this.width=0:this.width=a-this.x}}),Object.defineProperty(c.Rectangle.prototype,"volume",{get:function(){return this.width*this.height}}),Object.defineProperty(c.Rectangle.prototype,"perimeter",{get:function(){return 2*this.width+2*this.height}}),Object.defineProperty(c.Rectangle.prototype,"centerX",{get:function(){return this.x+this.halfWidth},set:function(a){this.x=a-this.halfWidth}}),Object.defineProperty(c.Rectangle.prototype,"centerY",{get:function(){return this.y+this.halfHeight},set:function(a){this.y=a-this.halfHeight}}),Object.defineProperty(c.Rectangle.prototype,"randomX",{get:function(){return this.x+Math.random()*this.width}}),Object.defineProperty(c.Rectangle.prototype,"randomY",{get:function(){return this.y+Math.random()*this.height}}),Object.defineProperty(c.Rectangle.prototype,"top",{get:function(){return this.y},set:function(a){a>=this.bottom?(this.height=0,this.y=a):this.height=this.bottom-a}}),Object.defineProperty(c.Rectangle.prototype,"topLeft",{get:function(){return new c.Point(this.x,this.y)},set:function(a){this.x=a.x,this.y=a.y}}),Object.defineProperty(c.Rectangle.prototype,"topRight",{get:function(){return new c.Point(this.x+this.width,this.y)},set:function(a){this.right=a.x,this.y=a.y}}),Object.defineProperty(c.Rectangle.prototype,"empty",{get:function(){return!this.width||!this.height},set:function(a){a===!0&&this.setTo(0,0,0,0)}}),c.Rectangle.prototype.constructor=c.Rectangle,c.Rectangle.inflate=function(a,b,c){return a.x-=b,a.width+=2*b,a.y-=c,a.height+=2*c,a},c.Rectangle.inflatePoint=function(a,b){return c.Rectangle.inflate(a,b.x,b.y)},c.Rectangle.size=function(a,b){return void 0===b||null===b?b=new c.Point(a.width,a.height):b.setTo(a.width,a.height),b},c.Rectangle.clone=function(a,b){return void 0===b||null===b?b=new c.Rectangle(a.x,a.y,a.width,a.height):b.setTo(a.x,a.y,a.width,a.height),b},c.Rectangle.contains=function(a,b,c){return a.width<=0||a.height<=0?!1:b>=a.x&&b=a.y&&c=a&&a+c>e&&f>=b&&b+d>f},c.Rectangle.containsPoint=function(a,b){return c.Rectangle.contains(a,b.x,b.y)},c.Rectangle.containsRect=function(a,b){return a.volume>b.volume?!1:a.x>=b.x&&a.y>=b.y&&a.rightb.right||a.y>b.bottom)},c.Rectangle.intersectsRaw=function(a,b,c,d,e,f){return void 0===f&&(f=0),!(b>a.right+f||ca.bottom+f||ed&&(d=a.x),a.xf&&(f=a.y),a.y=c&&a<=c+this.width){var d=this.y;if(b>=d&&b<=d+this.height)return!0}return!1}},c.RoundedRectangle.prototype.constructor=c.RoundedRectangle,PIXI.RoundedRectangle=c.RoundedRectangle,c.Camera=function(a,b,d,e,f,g){this.game=a,this.world=a.world,this.id=0,this.view=new c.Rectangle(d,e,f,g),this.bounds=new c.Rectangle(d,e,f,g),this.deadzone=null,this.visible=!0,this.roundPx=!0,this.atLimit={x:!1,y:!1},this.target=null,this.displayObject=null,this.scale=null,this.totalInView=0,this.lerp=new c.Point(1,1),this.onShakeComplete=new c.Signal,this.onFlashComplete=new c.Signal,this.onFadeComplete=new c.Signal,this.fx=null,this._targetPosition=new c.Point,this._edge=0,this._position=new c.Point,this._shake={intensity:0,duration:0,horizontal:!1,vertical:!1,shakeBounds:!0,x:0,y:0},this._fxDuration=0,this._fxType=0},c.Camera.FOLLOW_LOCKON=0,c.Camera.FOLLOW_PLATFORMER=1,c.Camera.FOLLOW_TOPDOWN=2,c.Camera.FOLLOW_TOPDOWN_TIGHT=3,c.Camera.SHAKE_BOTH=4,c.Camera.SHAKE_HORIZONTAL=5,c.Camera.SHAKE_VERTICAL=6,c.Camera.ENABLE_FX=!0,c.Camera.prototype={boot:function(){this.displayObject=this.game.world,this.scale=this.game.world.scale,this.game.camera=this,c.Graphics&&c.Camera.ENABLE_FX&&(this.fx=new c.Graphics(this.game),this.game.stage.addChild(this.fx))},preUpdate:function(){this.totalInView=0},follow:function(a,b,d,e){void 0===b&&(b=c.Camera.FOLLOW_LOCKON),void 0===d&&(d=1),void 0===e&&(e=1),this.target=a,this.lerp.set(d,e);var f;switch(b){case c.Camera.FOLLOW_PLATFORMER:var g=this.width/8,h=this.height/3;this.deadzone=new c.Rectangle((this.width-g)/2,(this.height-h)/2-.25*h,g,h);break;case c.Camera.FOLLOW_TOPDOWN:f=Math.max(this.width,this.height)/4,this.deadzone=new c.Rectangle((this.width-f)/2,(this.height-f)/2,f,f);break;case c.Camera.FOLLOW_TOPDOWN_TIGHT:f=Math.max(this.width,this.height)/8,this.deadzone=new c.Rectangle((this.width-f)/2,(this.height-f)/2,f,f);break;case c.Camera.FOLLOW_LOCKON:this.deadzone=null;break;default:this.deadzone=null}},unfollow:function(){this.target=null},focusOn:function(a){this.setPosition(Math.round(a.x-this.view.halfWidth),Math.round(a.y-this.view.halfHeight))},focusOnXY:function(a,b){this.setPosition(Math.round(a-this.view.halfWidth),Math.round(b-this.view.halfHeight))},shake:function(a,b,d,e,f){return void 0===a&&(a=.05),void 0===b&&(b=500),void 0===d&&(d=!0),void 0===e&&(e=c.Camera.SHAKE_BOTH),void 0===f&&(f=!0),!d&&this._shake.duration>0?!1:(this._shake.intensity=a,this._shake.duration=b,this._shake.shakeBounds=f,this._shake.x=0,this._shake.y=0,this._shake.horizontal=e===c.Camera.SHAKE_BOTH||e===c.Camera.SHAKE_HORIZONTAL,this._shake.vertical=e===c.Camera.SHAKE_BOTH||e===c.Camera.SHAKE_VERTICAL,!0)},flash:function(a,b,c){return void 0===a&&(a=16777215),void 0===b&&(b=500),void 0===c&&(c=!1),!this.fx||!c&&this._fxDuration>0?!1:(this.fx.clear(),this.fx.beginFill(a),this.fx.drawRect(0,0,this.width,this.height),this.fx.endFill(),this.fx.alpha=1,this._fxDuration=b,this._fxType=0,!0)},fade:function(a,b,c){return void 0===a&&(a=0),void 0===b&&(b=500),void 0===c&&(c=!1),!this.fx||!c&&this._fxDuration>0?!1:(this.fx.clear(),this.fx.beginFill(a),this.fx.drawRect(0,0,this.width,this.height),this.fx.endFill(),this.fx.alpha=0,this._fxDuration=b,this._fxType=1,!0)},update:function(){this._fxDuration>0&&this.updateFX(),this._shake.duration>0&&this.updateShake(),this.bounds&&this.checkBounds(),this.roundPx&&(this.view.floor(),this._shake.x=Math.floor(this._shake.x),this._shake.y=Math.floor(this._shake.y)),this.displayObject.position.x=-this.view.x,this.displayObject.position.y=-this.view.y},updateFX:function(){0===this._fxType?(this.fx.alpha-=this.game.time.elapsedMS/this._fxDuration,this.fx.alpha<=0&&(this._fxDuration=0,this.fx.alpha=0,this.onFlashComplete.dispatch())):(this.fx.alpha+=this.game.time.elapsedMS/this._fxDuration,this.fx.alpha>=1&&(this._fxDuration=0,this.fx.alpha=1,this.onFadeComplete.dispatch()))},updateShake:function(){this._shake.duration-=this.game.time.elapsedMS,this._shake.duration<=0?(this.onShakeComplete.dispatch(),this._shake.x=0,this._shake.y=0):(this._shake.horizontal&&(this._shake.x=this.game.rnd.frac()*this._shake.intensity*this.view.width*2-this._shake.intensity*this.view.width),this._shake.vertical&&(this._shake.y=this.game.rnd.frac()*this._shake.intensity*this.view.height*2-this._shake.intensity*this.view.height))},updateTarget:function(){this._targetPosition.x=this.view.x+this.target.worldPosition.x,this._targetPosition.y=this.view.y+this.target.worldPosition.y,this.deadzone?(this._edge=this._targetPosition.x-this.view.x,this._edgethis.deadzone.right&&(this.view.x=this.game.math.linear(this.view.x,this._targetPosition.x-this.deadzone.right,this.lerp.x)),this._edge=this._targetPosition.y-this.view.y,this._edgethis.deadzone.bottom&&(this.view.y=this.game.math.linear(this.view.y,this._targetPosition.y-this.deadzone.bottom,this.lerp.y))):(this.view.x=this.game.math.linear(this.view.x,this._targetPosition.x-this.view.halfWidth,this.lerp.x),this.view.y=this.game.math.linear(this.view.y,this._targetPosition.y-this.view.halfHeight,this.lerp.y)),this.bounds&&this.checkBounds(),this.roundPx&&this.view.floor(),this.displayObject.position.x=-this.view.x,this.displayObject.position.y=-this.view.y},setBoundsToWorld:function(){this.bounds&&this.bounds.copyFrom(this.game.world.bounds)},checkBounds:function(){this.atLimit.x=!1,this.atLimit.y=!1;var a=this.view.x+this._shake.x,b=this.view.right+this._shake.x,c=this.view.y+this._shake.y,d=this.view.bottom+this._shake.y;a<=this.bounds.x*this.scale.x&&(this.atLimit.x=!0,this.view.x=this.bounds.x*this.scale.x,this._shake.shakeBounds||(this._shake.x=0)),b>=this.bounds.right*this.scale.x&&(this.atLimit.x=!0,this.view.x=this.bounds.right*this.scale.x-this.width,this._shake.shakeBounds||(this._shake.x=0)),c<=this.bounds.top*this.scale.y&&(this.atLimit.y=!0,this.view.y=this.bounds.top*this.scale.y,this._shake.shakeBounds||(this._shake.y=0)),d>=this.bounds.bottom*this.scale.y&&(this.atLimit.y=!0,this.view.y=this.bounds.bottom*this.scale.y-this.height,this._shake.shakeBounds||(this._shake.y=0))},setPosition:function(a,b){this.view.x=a,this.view.y=b,this.bounds&&this.checkBounds()},setSize:function(a,b){this.view.width=a,this.view.height=b},reset:function(){this.target=null,this.view.x=0,this.view.y=0,this._shake.duration=0,this.resetFX()},resetFX:function(){this.fx.clear(),this.fx.alpha=0,this._fxDuration=0}},c.Camera.prototype.constructor=c.Camera,Object.defineProperty(c.Camera.prototype,"x",{get:function(){return this.view.x},set:function(a){this.view.x=a,this.bounds&&this.checkBounds()}}),Object.defineProperty(c.Camera.prototype,"y",{get:function(){return this.view.y},set:function(a){this.view.y=a,this.bounds&&this.checkBounds()}}),Object.defineProperty(c.Camera.prototype,"position",{get:function(){return this._position.set(this.view.x,this.view.y),this._position},set:function(a){"undefined"!=typeof a.x&&(this.view.x=a.x),"undefined"!=typeof a.y&&(this.view.y=a.y),this.bounds&&this.checkBounds()}}),Object.defineProperty(c.Camera.prototype,"width",{get:function(){return this.view.width},set:function(a){this.view.width=a}}),Object.defineProperty(c.Camera.prototype,"height",{get:function(){return this.view.height},set:function(a){this.view.height=a}}),Object.defineProperty(c.Camera.prototype,"shakeIntensity",{get:function(){return this._shake.intensity},set:function(a){this._shake.intensity=a}}),c.State=function(){this.game=null,this.key="",this.add=null,this.make=null,this.camera=null,this.cache=null,this.input=null,this.load=null,this.math=null,this.sound=null,this.scale=null,this.stage=null,this.state=null,this.time=null,this.tweens=null,this.world=null,this.particles=null,this.physics=null,this.rnd=null},c.State.prototype={init:function(){},preload:function(){},loadUpdate:function(){},loadRender:function(){},create:function(){},update:function(){},preRender:function(){},render:function(){},resize:function(){},paused:function(){},resumed:function(){},pauseUpdate:function(){},shutdown:function(){}},c.State.prototype.constructor=c.State,c.StateManager=function(a,b){this.game=a,this.states={},this._pendingState=null,"undefined"!=typeof b&&null!==b&&(this._pendingState=b),this._clearWorld=!1,this._clearCache=!1,this._created=!1,this._args=[],this.current="",this.onStateChange=new c.Signal,this.onInitCallback=null,this.onPreloadCallback=null,this.onCreateCallback=null,this.onUpdateCallback=null,this.onRenderCallback=null,this.onResizeCallback=null,this.onPreRenderCallback=null,this.onLoadUpdateCallback=null,this.onLoadRenderCallback=null,this.onPausedCallback=null,this.onResumedCallback=null,this.onPauseUpdateCallback=null,this.onShutDownCallback=null},c.StateManager.prototype={boot:function(){this.game.onPause.add(this.pause,this),this.game.onResume.add(this.resume,this),null!==this._pendingState&&"string"!=typeof this._pendingState&&this.add("default",this._pendingState,!0)},add:function(a,b,d){void 0===d&&(d=!1);var e;return b instanceof c.State?e=b:"object"==typeof b?(e=b,e.game=this.game):"function"==typeof b&&(e=new b(this.game)),this.states[a]=e,d&&(this.game.isBooted?this.start(a):this._pendingState=a),e},remove:function(a){this.current===a&&(this.callbackContext=null,this.onInitCallback=null,this.onShutDownCallback=null,this.onPreloadCallback=null,this.onLoadRenderCallback=null,this.onLoadUpdateCallback=null,this.onCreateCallback=null,this.onUpdateCallback=null,this.onPreRenderCallback=null,this.onRenderCallback=null,this.onResizeCallback=null,this.onPausedCallback=null,this.onResumedCallback=null,this.onPauseUpdateCallback=null),delete this.states[a]},start:function(a,b,c){void 0===b&&(b=!0),void 0===c&&(c=!1),this.checkState(a)&&(this._pendingState=a,this._clearWorld=b,this._clearCache=c,arguments.length>3&&(this._args=Array.prototype.splice.call(arguments,3)))},restart:function(a,b){void 0===a&&(a=!0),void 0===b&&(b=!1),this._pendingState=this.current,this._clearWorld=a,this._clearCache=b,arguments.length>2&&(this._args=Array.prototype.slice.call(arguments,2))},dummy:function(){},preUpdate:function(){if(this._pendingState&&this.game.isBooted){ +var a=this.current;if(this.clearCurrentState(),this.setCurrentState(this._pendingState),this.onStateChange.dispatch(this.current,a),this.current!==this._pendingState)return;this._pendingState=null,this.onPreloadCallback?(this.game.load.reset(!0),this.onPreloadCallback.call(this.callbackContext,this.game),0===this.game.load.totalQueuedFiles()&&0===this.game.load.totalQueuedPacks()?this.loadComplete():this.game.load.start()):this.loadComplete()}},clearCurrentState:function(){this.current&&(this.onShutDownCallback&&this.onShutDownCallback.call(this.callbackContext,this.game),this.game.tweens.removeAll(),this.game.camera.reset(),this.game.input.reset(!0),this.game.physics.clear(),this.game.time.removeAll(),this.game.scale.reset(this._clearWorld),this.game.debug&&this.game.debug.reset(),this._clearWorld&&(this.game.world.shutdown(),this._clearCache&&this.game.cache.destroy()))},checkState:function(a){return this.states[a]?this.states[a].preload||this.states[a].create||this.states[a].update||this.states[a].render?!0:(console.warn("Invalid Phaser State object given. Must contain at least a one of the required functions: preload, create, update or render"),!1):(console.warn("Phaser.StateManager - No state found with the key: "+a),!1)},link:function(a){this.states[a].game=this.game,this.states[a].add=this.game.add,this.states[a].make=this.game.make,this.states[a].camera=this.game.camera,this.states[a].cache=this.game.cache,this.states[a].input=this.game.input,this.states[a].load=this.game.load,this.states[a].math=this.game.math,this.states[a].sound=this.game.sound,this.states[a].scale=this.game.scale,this.states[a].state=this,this.states[a].stage=this.game.stage,this.states[a].time=this.game.time,this.states[a].tweens=this.game.tweens,this.states[a].world=this.game.world,this.states[a].particles=this.game.particles,this.states[a].rnd=this.game.rnd,this.states[a].physics=this.game.physics,this.states[a].key=a},unlink:function(a){this.states[a]&&(this.states[a].game=null,this.states[a].add=null,this.states[a].make=null,this.states[a].camera=null,this.states[a].cache=null,this.states[a].input=null,this.states[a].load=null,this.states[a].math=null,this.states[a].sound=null,this.states[a].scale=null,this.states[a].state=null,this.states[a].stage=null,this.states[a].time=null,this.states[a].tweens=null,this.states[a].world=null,this.states[a].particles=null,this.states[a].rnd=null,this.states[a].physics=null)},setCurrentState:function(a){this.callbackContext=this.states[a],this.link(a),this.onInitCallback=this.states[a].init||this.dummy,this.onPreloadCallback=this.states[a].preload||null,this.onLoadRenderCallback=this.states[a].loadRender||null,this.onLoadUpdateCallback=this.states[a].loadUpdate||null,this.onCreateCallback=this.states[a].create||null,this.onUpdateCallback=this.states[a].update||null,this.onPreRenderCallback=this.states[a].preRender||null,this.onRenderCallback=this.states[a].render||null,this.onResizeCallback=this.states[a].resize||null,this.onPausedCallback=this.states[a].paused||null,this.onResumedCallback=this.states[a].resumed||null,this.onPauseUpdateCallback=this.states[a].pauseUpdate||null,this.onShutDownCallback=this.states[a].shutdown||this.dummy,""!==this.current&&this.game.physics.reset(),this.current=a,this._created=!1,this.onInitCallback.apply(this.callbackContext,this._args),a===this._pendingState&&(this._args=[]),this.game._kickstart=!0},getCurrentState:function(){return this.states[this.current]},loadComplete:function(){this._created===!1&&this.onLoadUpdateCallback&&this.onLoadUpdateCallback.call(this.callbackContext,this.game),this._created===!1&&this.onCreateCallback?(this._created=!0,this.onCreateCallback.call(this.callbackContext,this.game)):this._created=!0},pause:function(){this._created&&this.onPausedCallback&&this.onPausedCallback.call(this.callbackContext,this.game)},resume:function(){this._created&&this.onResumedCallback&&this.onResumedCallback.call(this.callbackContext,this.game)},update:function(){this._created?this.onUpdateCallback&&this.onUpdateCallback.call(this.callbackContext,this.game):this.onLoadUpdateCallback&&this.onLoadUpdateCallback.call(this.callbackContext,this.game)},pauseUpdate:function(){this._created?this.onPauseUpdateCallback&&this.onPauseUpdateCallback.call(this.callbackContext,this.game):this.onLoadUpdateCallback&&this.onLoadUpdateCallback.call(this.callbackContext,this.game)},preRender:function(a){this._created&&this.onPreRenderCallback&&this.onPreRenderCallback.call(this.callbackContext,this.game,a)},resize:function(a,b){this.onResizeCallback&&this.onResizeCallback.call(this.callbackContext,a,b)},render:function(){this._created?this.onRenderCallback&&(this.game.renderType===c.CANVAS?(this.game.context.save(),this.game.context.setTransform(1,0,0,1,0,0),this.onRenderCallback.call(this.callbackContext,this.game),this.game.context.restore()):this.onRenderCallback.call(this.callbackContext,this.game)):this.onLoadRenderCallback&&this.onLoadRenderCallback.call(this.callbackContext,this.game)},destroy:function(){this._clearWorld=!0,this._clearCache=!0,this.clearCurrentState(),this.callbackContext=null,this.onInitCallback=null,this.onShutDownCallback=null,this.onPreloadCallback=null,this.onLoadRenderCallback=null,this.onLoadUpdateCallback=null,this.onCreateCallback=null,this.onUpdateCallback=null,this.onRenderCallback=null,this.onPausedCallback=null,this.onResumedCallback=null,this.onPauseUpdateCallback=null,this.game=null,this.states={},this._pendingState=null,this.current=""}},c.StateManager.prototype.constructor=c.StateManager,Object.defineProperty(c.StateManager.prototype,"created",{get:function(){return this._created}}),c.Signal=function(){},c.Signal.prototype={_bindings:null,_prevParams:null,memorize:!1,_shouldPropagate:!0,active:!0,_boundDispatch:!1,validateListener:function(a,b){if("function"!=typeof a)throw new Error("Phaser.Signal: listener is a required param of {fn}() and should be a Function.".replace("{fn}",b))},_registerListener:function(a,b,d,e,f){var g,h=this._indexOfListener(a,d);if(-1!==h){if(g=this._bindings[h],g.isOnce()!==b)throw new Error("You cannot add"+(b?"":"Once")+"() then add"+(b?"Once":"")+"() the same listener without removing the relationship first.")}else g=new c.SignalBinding(this,a,b,d,e,f),this._addBinding(g);return this.memorize&&this._prevParams&&g.execute(this._prevParams),g},_addBinding:function(a){this._bindings||(this._bindings=[]);var b=this._bindings.length;do b--;while(this._bindings[b]&&a._priority<=this._bindings[b]._priority);this._bindings.splice(b+1,0,a)},_indexOfListener:function(a,b){if(!this._bindings)return-1;void 0===b&&(b=null);for(var c,d=this._bindings.length;d--;)if(c=this._bindings[d],c._listener===a&&c.context===b)return d;return-1},has:function(a,b){return-1!==this._indexOfListener(a,b)},add:function(a,b,c){this.validateListener(a,"add");var d=[];if(arguments.length>3)for(var e=3;e3)for(var e=3;ea||a>=this.children.length?-1:this.getChildAt(a)},c.Group.prototype.create=function(a,b,c,d,e,f){void 0===e&&(e=!0);var g=new this.classType(this.game,a,b,c,d);return g.exists=e,g.visible=e,g.alive=e,this.add(g,!1,f)},c.Group.prototype.createMultiple=function(a,b,c,d){void 0===c&&(c=0),void 0===d&&(d=!1),Array.isArray(b)||(b=[b]),Array.isArray(c)||(c=[c]);var e=this,f=[];return b.forEach(function(b){c.forEach(function(c){for(var g=0;a>g;g++)f.push(e.create(0,0,b,c,d))})}),f},c.Group.prototype.updateZ=function(){for(var a=this.children.length;a--;)this.children[a].z=a},c.Group.prototype.align=function(a,b,d,e,f,g){if(void 0===f&&(f=c.TOP_LEFT),void 0===g&&(g=0),!(0===this.children.length||g>this.children.length||-1===a&&-1===b))for(var h=new c.Rectangle(0,0,d,e),i=a*d,j=b*e,k=g;kthis.children.length-1&&(a=0),this.cursor?(this.cursorIndex=a,this.cursor=this.children[this.cursorIndex],this.cursor):void 0},c.Group.prototype.next=function(){return this.cursor?(this.cursorIndex>=this.children.length-1?this.cursorIndex=0:this.cursorIndex++,this.cursor=this.children[this.cursorIndex],this.cursor):void 0},c.Group.prototype.previous=function(){return this.cursor?(0===this.cursorIndex?this.cursorIndex=this.children.length-1:this.cursorIndex--,this.cursor=this.children[this.cursorIndex],this.cursor):void 0},c.Group.prototype.swap=function(a,b){this.swapChildren(a,b),this.updateZ()},c.Group.prototype.bringToTop=function(a){return a.parent===this&&this.getIndex(a)0&&(this.remove(a,!1,!0),this.addAt(a,0,!0)),a},c.Group.prototype.moveUp=function(a){if(a.parent===this&&this.getIndex(a)0){var b=this.getIndex(a),c=this.getAt(b-1);c&&this.swap(a,c)}return a},c.Group.prototype.xy=function(a,b,c){return 0>a||a>this.children.length?-1:(this.getChildAt(a).x=b,void(this.getChildAt(a).y=c))},c.Group.prototype.reverse=function(){this.children.reverse(),this.updateZ()},c.Group.prototype.getIndex=function(a){return this.children.indexOf(a)},c.Group.prototype.getByName=function(a){for(var b=0;b0))return!1;var f=b.length;return 1===f?0===d?a[b[0]]=c:1==d?a[b[0]]+=c:2==d?a[b[0]]-=c:3==d?a[b[0]]*=c:4==d&&(a[b[0]]/=c):2===f?0===d?a[b[0]][b[1]]=c:1==d?a[b[0]][b[1]]+=c:2==d?a[b[0]][b[1]]-=c:3==d?a[b[0]][b[1]]*=c:4==d&&(a[b[0]][b[1]]/=c):3===f?0===d?a[b[0]][b[1]][b[2]]=c:1==d?a[b[0]][b[1]][b[2]]+=c:2==d?a[b[0]][b[1]][b[2]]-=c:3==d?a[b[0]][b[1]][b[2]]*=c:4==d&&(a[b[0]][b[1]][b[2]]/=c):4===f&&(0===d?a[b[0]][b[1]][b[2]][b[3]]=c:1==d?a[b[0]][b[1]][b[2]][b[3]]+=c:2==d?a[b[0]][b[1]][b[2]][b[3]]-=c:3==d?a[b[0]][b[1]][b[2]][b[3]]*=c:4==d&&(a[b[0]][b[1]][b[2]][b[3]]/=c)),!0},c.Group.prototype.checkProperty=function(a,b,d,e){return void 0===e&&(e=!1),!c.Utils.getProperty(a,b)&&e?!1:c.Utils.getProperty(a,b)===d},c.Group.prototype.set=function(a,b,c,d,e,f,g){return void 0===g&&(g=!1),b=b.split("."),void 0===d&&(d=!1),void 0===e&&(e=!1),(d===!1||d&&a.alive)&&(e===!1||e&&a.visible)?this.setProperty(a,b,c,f,g):void 0},c.Group.prototype.setAll=function(a,b,c,d,e,f){void 0===c&&(c=!1),void 0===d&&(d=!1),void 0===f&&(f=!1),a=a.split("."),e=e||0;for(var g=0;g2){c=[];for(var d=2;d2){e=[];for(var f=2;f2){d=[null];for(var e=2;e2){d=[null];for(var e=2;e2){d=[null];for(var e=2;eb[this._sortProperty]?1:a.zb[this._sortProperty]?-1:0},c.Group.prototype.iterate=function(a,b,d,e,f,g){if(d===c.Group.RETURN_TOTAL&&0===this.children.length)return 0;for(var h=0,i=0;i0?this.children[this.children.length-1]:void 0},c.Group.prototype.getBottom=function(){return this.children.length>0?this.children[0]:void 0},c.Group.prototype.getClosestTo=function(a,b,d){for(var e=Number.MAX_VALUE,f=0,g=null,h=0;hf&&(!b||b.call(d,i,f))&&(e=f,g=i))}return g},c.Group.prototype.getFurthestFrom=function(a,b,d){for(var e=0,f=0,g=null,h=0;he&&(!b||b.call(d,i,f))&&(e=f,g=i))}return g},c.Group.prototype.countLiving=function(){return this.iterate("alive",!0,c.Group.RETURN_TOTAL)},c.Group.prototype.countDead=function(){return this.iterate("alive",!1,c.Group.RETURN_TOTAL)},c.Group.prototype.getRandom=function(a,b){return 0===this.children.length?null:(a=a||0,b=b||this.children.length,c.ArrayUtils.getRandomItem(this.children,a,b))},c.Group.prototype.remove=function(a,b,c){if(void 0===b&&(b=!1),void 0===c&&(c=!1),0===this.children.length||-1===this.children.indexOf(a))return!1;c||!a.events||a.destroyPhase||a.events.onRemovedFromGroup$dispatch(a,this);var d=this.removeChild(a);return this.removeFromHash(a),this.updateZ(),this.cursor===a&&this.next(),b&&d&&d.destroy(!0),!0},c.Group.prototype.moveAll=function(a,b){if(void 0===b&&(b=!1),this.children.length>0&&a instanceof c.Group){do a.add(this.children[0],b);while(this.children.length>0);this.hash=[],this.cursor=null}return a},c.Group.prototype.removeAll=function(a,b,c){if(void 0===a&&(a=!1),void 0===b&&(b=!1),void 0===c&&(c=!1),0!==this.children.length){do{!b&&this.children[0].events&&this.children[0].events.onRemovedFromGroup$dispatch(this.children[0],this);var d=this.removeChild(this.children[0]);this.removeFromHash(d),a&&d&&d.destroy(!0,c)}while(this.children.length>0);this.hash=[],this.cursor=null}},c.Group.prototype.removeBetween=function(a,b,c,d){if(void 0===b&&(b=this.children.length-1),void 0===c&&(c=!1),void 0===d&&(d=!1),0!==this.children.length){if(a>b||0>a||b>this.children.length)return!1;for(var e=b;e>=a;){!d&&this.children[e].events&&this.children[e].events.onRemovedFromGroup$dispatch(this.children[e],this);var f=this.removeChild(this.children[e]);this.removeFromHash(f),c&&f&&f.destroy(!0),this.cursor===this.children[e]&&(this.cursor=null), +e--}this.updateZ()}},c.Group.prototype.destroy=function(a,b){null===this.game||this.ignoreDestroy||(void 0===a&&(a=!0),void 0===b&&(b=!1),this.onDestroy.dispatch(this,a,b),this.removeAll(a),this.cursor=null,this.filters=null,this.pendingDestroy=!1,b||(this.parent&&this.parent.removeChild(this),this.game=null,this.exists=!1))},Object.defineProperty(c.Group.prototype,"total",{get:function(){return this.iterate("exists",!0,c.Group.RETURN_TOTAL)}}),Object.defineProperty(c.Group.prototype,"length",{get:function(){return this.children.length}}),Object.defineProperty(c.Group.prototype,"angle",{get:function(){return c.Math.radToDeg(this.rotation)},set:function(a){this.rotation=c.Math.degToRad(a)}}),Object.defineProperty(c.Group.prototype,"centerX",{get:function(){return this.getBounds().centerX},set:function(a){var b=this.getBounds(),c=this.x-b.x;this.x=a+c-b.halfWidth}}),Object.defineProperty(c.Group.prototype,"centerY",{get:function(){return this.getBounds().centerY},set:function(a){var b=this.getBounds(),c=this.y-b.y;this.y=a+c-b.halfHeight}}),Object.defineProperty(c.Group.prototype,"left",{get:function(){return this.getBounds().left},set:function(a){var b=this.getBounds(),c=this.x-b.x;this.x=a+c}}),Object.defineProperty(c.Group.prototype,"right",{get:function(){return this.getBounds().right},set:function(a){var b=this.getBounds(),c=this.x-b.x;this.x=a+c-b.width}}),Object.defineProperty(c.Group.prototype,"top",{get:function(){return this.getBounds().top},set:function(a){var b=this.getBounds(),c=this.y-b.y;this.y=a+c}}),Object.defineProperty(c.Group.prototype,"bottom",{get:function(){return this.getBounds().bottom},set:function(a){var b=this.getBounds(),c=this.y-b.y;this.y=a+c-b.height}}),c.World=function(a){c.Group.call(this,a,null,"__world",!1),this.bounds=new c.Rectangle(0,0,a.width,a.height),this.camera=null,this._definedSize=!1,this._width=a.width,this._height=a.height,this.game.state.onStateChange.add(this.stateChange,this)},c.World.prototype=Object.create(c.Group.prototype),c.World.prototype.constructor=c.World,c.World.prototype.boot=function(){this.camera=new c.Camera(this.game,0,0,0,this.game.width,this.game.height),this.game.stage.addChild(this),this.camera.boot()},c.World.prototype.stateChange=function(){this.x=0,this.y=0,this.camera.reset()},c.World.prototype.setBounds=function(a,b,c,d){this._definedSize=!0,this._width=c,this._height=d,this.bounds.setTo(a,b,c,d),this.x=a,this.y=b,this.camera.bounds&&this.camera.bounds.setTo(a,b,Math.max(c,this.game.width),Math.max(d,this.game.height)),this.game.physics.setBoundsToWorld()},c.World.prototype.resize=function(a,b){this._definedSize&&(athis.bounds.right&&(a.x=this.bounds.left)),e&&(a.y+a._currentBounds.heightthis.bounds.bottom&&(a.y=this.bounds.top))):(d&&a.x+bthis.bounds.right&&(a.x=this.bounds.left-b),e&&a.y+bthis.bounds.bottom&&(a.y=this.bounds.top-b))},Object.defineProperty(c.World.prototype,"width",{get:function(){return this.bounds.width},set:function(a){ag;g++)e>g?f.push("color: #ff2424; background: #fff"):f.push("color: #959595; background: #fff");console.log.apply(console,f)}else window.console&&console.log("Phaser v"+a+" | Pixi.js "+PIXI.VERSION+" | "+b+" | "+d+" | http://phaser.io")}},setUpRenderer:function(){if(this.config.canvas?this.canvas=this.config.canvas:this.canvas=c.Canvas.create(this,this.width,this.height,this.config.canvasID,!0),this.config.canvasStyle?this.canvas.style=this.config.canvasStyle:this.canvas.style["-webkit-full-screen"]="width: 100%; height: 100%",this.renderType===c.HEADLESS||this.renderType===c.CANVAS||this.renderType===c.AUTO&&!this.device.webGL){if(!this.device.canvas)throw new Error("Phaser.Game - Cannot create Canvas or WebGL context, aborting.");this.renderType=c.CANVAS,this.renderer=new PIXI.CanvasRenderer(this),this.context=this.renderer.context}else this.renderType=c.WEBGL,this.renderer=new PIXI.WebGLRenderer(this),this.context=null,this.canvas.addEventListener("webglcontextlost",this.contextLost.bind(this),!1),this.canvas.addEventListener("webglcontextrestored",this.contextRestored.bind(this),!1);this.device.cocoonJS&&(this.canvas.screencanvas=this.renderType===c.CANVAS),this.renderType!==c.HEADLESS&&(this.stage.smoothed=this.antialias,c.Canvas.addToDOM(this.canvas,this.parent,!1),c.Canvas.setTouchAction(this.canvas))},contextLost:function(a){a.preventDefault(),this.renderer.contextLost=!0},contextRestored:function(){this.renderer.initContext(),this.cache.clearGLTextures(),this.renderer.contextLost=!1},update:function(a){if(this.time.update(a),this._kickstart)return this.updateLogic(this.time.desiredFpsMult),this.updateRender(this.time.slowMotion*this.time.desiredFps),void(this._kickstart=!1);if(this._spiraling>1&&!this.forceSingleUpdate)this.time.time>this._nextFpsNotification&&(this._nextFpsNotification=this.time.time+1e4,this.fpsProblemNotifier.dispatch()),this._deltaTime=0,this._spiraling=0,this.updateRender(this.time.slowMotion*this.time.desiredFps);else{var b=1e3*this.time.slowMotion/this.time.desiredFps;this._deltaTime+=Math.max(Math.min(3*b,this.time.elapsed),0);var c=0;for(this.updatesThisFrame=Math.floor(this._deltaTime/b),this.forceSingleUpdate&&(this.updatesThisFrame=Math.min(1,this.updatesThisFrame));this._deltaTime>=b&&(this._deltaTime-=b,this.currentUpdateID=c,this.updateLogic(this.time.desiredFpsMult),c++,!this.forceSingleUpdate||1!==c);)this.time.refresh();c>this._lastCount?this._spiraling++:c=c.Input.MAX_POINTERS)return console.warn("Phaser.Input.addPointer: Maximum limit of "+c.Input.MAX_POINTERS+" pointers reached."),null;var a=this.pointers.length+1,b=new c.Pointer(this.game,a,c.PointerMode.TOUCH);return this.pointers.push(b),this["pointer"+a]=b,b},update:function(){if(this.keyboard&&this.keyboard.update(),this.pollRate>0&&this._pollCounter=0&&this.countActivePointers(this.maxPointers)>=this.maxPointers)return null;if(!this.pointer1.active)return this.pointer1.start(a);if(!this.pointer2.active)return this.pointer2.start(a);for(var b=2;b0;c++){var d=this.pointers[c];d.active&&b--}return a-b},getPointer:function(a){void 0===a&&(a=!1);for(var b=0;b=g&&this._localPoint.x=h&&this._localPoint.y=g&&this._localPoint.x=h&&this._localPoint.y0&&this._pollCounterthis.game.time.time},justReleased:function(a){return a=a||250,this.isUp&&this.timeUp+a>this.game.time.time},reset:function(){this.isDown=!1,this.isUp=!0,this.timeDown=this.game.time.time,this.repeats=0,this.altKey=!1,this.shiftKey=!1,this.ctrlKey=!1},destroy:function(){this.onDown.dispose(),this.onUp.dispose(),this.onFloat.dispose(),this.parent=null,this.game=null}},c.DeviceButton.prototype.constructor=c.DeviceButton,Object.defineProperty(c.DeviceButton.prototype,"duration",{get:function(){return this.isUp?-1:this.game.time.time-this.timeDown}}),c.Pointer=function(a,b,d){this.game=a,this.id=b,this.type=c.POINTER,this.exists=!0,this.identifier=0,this.pointerId=null,this.pointerMode=d||c.PointerMode.CURSOR|c.PointerMode.CONTACT,this.target=null,this.button=null,this.leftButton=new c.DeviceButton(this,c.Pointer.LEFT_BUTTON),this.middleButton=new c.DeviceButton(this,c.Pointer.MIDDLE_BUTTON),this.rightButton=new c.DeviceButton(this,c.Pointer.RIGHT_BUTTON),this.backButton=new c.DeviceButton(this,c.Pointer.BACK_BUTTON),this.forwardButton=new c.DeviceButton(this,c.Pointer.FORWARD_BUTTON),this.eraserButton=new c.DeviceButton(this,c.Pointer.ERASER_BUTTON),this._holdSent=!1,this._history=[],this._nextDrop=0,this._stateReset=!1,this.withinGame=!1,this.clientX=-1,this.clientY=-1,this.pageX=-1,this.pageY=-1,this.screenX=-1,this.screenY=-1,this.rawMovementX=0,this.rawMovementY=0,this.movementX=0,this.movementY=0,this.x=-1,this.y=-1,this.isMouse=0===b,this.isDown=!1,this.isUp=!0,this.timeDown=0,this.timeUp=0,this.previousTapTime=0,this.totalTouches=0,this.msSinceLastClick=Number.MAX_VALUE,this.targetObject=null,this.interactiveCandidates=[],this.active=!1,this.dirty=!1,this.position=new c.Point,this.positionDown=new c.Point,this.positionUp=new c.Point,this.circle=new c.Circle(0,0,44),this._clickTrampolines=null,this._trampolineTargetObject=null},c.Pointer.NO_BUTTON=0,c.Pointer.LEFT_BUTTON=1,c.Pointer.RIGHT_BUTTON=2,c.Pointer.MIDDLE_BUTTON=4,c.Pointer.BACK_BUTTON=8,c.Pointer.FORWARD_BUTTON=16,c.Pointer.ERASER_BUTTON=32,c.Pointer.prototype={resetButtons:function(){this.isDown=!1,this.isUp=!0,this.isMouse&&(this.leftButton.reset(),this.middleButton.reset(),this.rightButton.reset(),this.backButton.reset(),this.forwardButton.reset(),this.eraserButton.reset())},processButtonsDown:function(a,b){c.Pointer.LEFT_BUTTON&a&&this.leftButton.start(b),c.Pointer.RIGHT_BUTTON&a&&this.rightButton.start(b),c.Pointer.MIDDLE_BUTTON&a&&this.middleButton.start(b),c.Pointer.BACK_BUTTON&a&&this.backButton.start(b),c.Pointer.FORWARD_BUTTON&a&&this.forwardButton.start(b),c.Pointer.ERASER_BUTTON&a&&this.eraserButton.start(b)},processButtonsUp:function(a,b){a===c.Mouse.LEFT_BUTTON&&this.leftButton.stop(b),a===c.Mouse.RIGHT_BUTTON&&this.rightButton.stop(b),a===c.Mouse.MIDDLE_BUTTON&&this.middleButton.stop(b),a===c.Mouse.BACK_BUTTON&&this.backButton.stop(b),a===c.Mouse.FORWARD_BUTTON&&this.forwardButton.stop(b),5===a&&this.eraserButton.stop(b)},updateButtons:function(a){this.button=a.button;var b="down"===a.type.toLowerCase().substr(-4);void 0!==a.buttons?b?this.processButtonsDown(a.buttons,a):this.processButtonsUp(a.button,a):b?this.leftButton.start(a):(this.leftButton.stop(a),this.rightButton.stop(a)),1===a.buttons&&a.ctrlKey&&this.leftButton.isDown&&(this.leftButton.stop(a),this.rightButton.start(a)),this.isUp=!0,this.isDown=!1,(this.leftButton.isDown||this.rightButton.isDown||this.middleButton.isDown||this.backButton.isDown||this.forwardButton.isDown||this.eraserButton.isDown)&&(this.isUp=!1,this.isDown=!0)},start:function(a){var b=this.game.input;return a.pointerId&&(this.pointerId=a.pointerId),this.identifier=a.identifier,this.target=a.target,this.isMouse?this.updateButtons(a):(this.isDown=!0,this.isUp=!1),this.active=!0,this.withinGame=!0,this.dirty=!1,this._history=[],this._clickTrampolines=null,this._trampolineTargetObject=null,this.msSinceLastClick=this.game.time.time-this.timeDown,this.timeDown=this.game.time.time,this._holdSent=!1,this.move(a,!0),this.positionDown.setTo(this.x,this.y),(b.multiInputOverride===c.Input.MOUSE_OVERRIDES_TOUCH||b.multiInputOverride===c.Input.MOUSE_TOUCH_COMBINE||b.multiInputOverride===c.Input.TOUCH_OVERRIDES_MOUSE&&0===b.totalActivePointers)&&(b.x=this.x,b.y=this.y,b.position.setTo(this.x,this.y),b.onDown.dispatch(this,a),b.resetSpeed(this.x,this.y)),this._stateReset=!1,this.totalTouches++,null!==this.targetObject&&this.targetObject._touchedHandler(this),this},update:function(){var a=this.game.input;this.active&&(this.dirty&&(a.interactiveItems.total>0&&this.processInteractiveObjects(!1),this.dirty=!1),this._holdSent===!1&&this.duration>=a.holdRate&&((a.multiInputOverride===c.Input.MOUSE_OVERRIDES_TOUCH||a.multiInputOverride===c.Input.MOUSE_TOUCH_COMBINE||a.multiInputOverride===c.Input.TOUCH_OVERRIDES_MOUSE&&0===a.totalActivePointers)&&a.onHold.dispatch(this),this._holdSent=!0),a.recordPointerHistory&&this.game.time.time>=this._nextDrop&&(this._nextDrop=this.game.time.time+a.recordRate,this._history.push({x:this.position.x,y:this.position.y}),this._history.length>a.recordLimit&&this._history.shift()))},move:function(a,b){var d=this.game.input;if(!d.pollLocked){if(void 0===b&&(b=!1),void 0!==a.button&&(this.button=a.button),b&&this.isMouse&&this.updateButtons(a),this.clientX=a.clientX,this.clientY=a.clientY,this.pageX=a.pageX,this.pageY=a.pageY,this.screenX=a.screenX,this.screenY=a.screenY,this.isMouse&&d.mouse.locked&&!b&&(this.rawMovementX=a.movementX||a.mozMovementX||a.webkitMovementX||0,this.rawMovementY=a.movementY||a.mozMovementY||a.webkitMovementY||0,this.movementX+=this.rawMovementX,this.movementY+=this.rawMovementY),this.x=(this.pageX-this.game.scale.offset.x)*d.scale.x,this.y=(this.pageY-this.game.scale.offset.y)*d.scale.y,this.position.setTo(this.x,this.y),this.circle.x=this.x,this.circle.y=this.y,(d.multiInputOverride===c.Input.MOUSE_OVERRIDES_TOUCH||d.multiInputOverride===c.Input.MOUSE_TOUCH_COMBINE||d.multiInputOverride===c.Input.TOUCH_OVERRIDES_MOUSE&&0===d.totalActivePointers)&&(d.activePointer=this,d.x=this.x,d.y=this.y,d.position.setTo(d.x,d.y),d.circle.x=d.x,d.circle.y=d.y),this.withinGame=this.game.scale.bounds.contains(this.pageX,this.pageY),this.game.paused)return this;for(var e=d.moveCallbacks.length;e--;)d.moveCallbacks[e].callback.call(d.moveCallbacks[e].context,this,this.x,this.y,b);return null!==this.targetObject&&this.targetObject.isDragged===!0?this.targetObject.update(this)===!1&&(this.targetObject=null):d.interactiveItems.total>0&&this.processInteractiveObjects(b),this}},processInteractiveObjects:function(a){var b=0,c=-1,d=null,e=this.game.input.interactiveItems.first;for(this.interactiveCandidates=[];e;)e.checked=!1,e.validForInput(c,b,!1)&&(e.checked=!0,(a&&e.checkPointerDown(this,!0)||!a&&e.checkPointerOver(this,!0))&&(b=e.sprite.renderOrderID,c=e.priorityID,d=e,this.interactiveCandidates.push(e))),e=this.game.input.interactiveItems.next;for(e=this.game.input.interactiveItems.first;e;)!e.checked&&e.validForInput(c,b,!0)&&(a&&e.checkPointerDown(this,!1)||!a&&e.checkPointerOver(this,!1))&&(b=e.sprite.renderOrderID,c=e.priorityID,d=e,this.interactiveCandidates.push(e)),e=this.game.input.interactiveItems.next;return this.game.input.customCandidateHandler&&(d=this.game.input.customCandidateHandler.call(this.game.input.customCandidateHandlerContext,this,this.interactiveCandidates,d)),this.swapTarget(d,!1),null!==this.targetObject},swapTarget:function(a,b){void 0===b&&(b=!1),null===a?this.targetObject&&(this.targetObject._pointerOutHandler(this,b),this.targetObject=null):null===this.targetObject?(this.targetObject=a,a._pointerOverHandler(this,b)):this.targetObject===a?a.update(this)===!1&&(this.targetObject=null):(this.targetObject._pointerOutHandler(this,b),this.targetObject=a,this.targetObject._pointerOverHandler(this,b))},leave:function(a){this.withinGame=!1,this.move(a,!1)},stop:function(a){var b=this.game.input;return this._stateReset&&this.withinGame?void a.preventDefault():(this.timeUp=this.game.time.time,(b.multiInputOverride===c.Input.MOUSE_OVERRIDES_TOUCH||b.multiInputOverride===c.Input.MOUSE_TOUCH_COMBINE||b.multiInputOverride===c.Input.TOUCH_OVERRIDES_MOUSE&&0===b.totalActivePointers)&&(b.onUp.dispatch(this,a),this.duration>=0&&this.duration<=b.tapRate&&(this.timeUp-this.previousTapTime0&&(this.active=!1),this.withinGame=this.game.scale.bounds.contains(a.pageX,a.pageY),this.pointerId=null,this.identifier=null,this.positionUp.setTo(this.x,this.y),this.isMouse===!1&&b.currentPointers--,b.interactiveItems.callAll("_releasedHandler",this),this._clickTrampolines&&(this._trampolineTargetObject=this.targetObject),this.targetObject=null,this)},justPressed:function(a){return a=a||this.game.input.justPressedRate,this.isDown===!0&&this.timeDown+a>this.game.time.time},justReleased:function(a){return a=a||this.game.input.justReleasedRate,this.isUp&&this.timeUp+a>this.game.time.time},addClickTrampoline:function(a,b,c,d){if(this.isDown){for(var e=this._clickTrampolines=this._clickTrampolines||[],f=0;fd;d++)this._pointerData[d]={id:d,x:0,y:0,isDown:!1,isUp:!1,isOver:!1,isOut:!1,timeOver:0,timeOut:0,timeDown:0,timeUp:0,downDuration:0,isDragged:!1};this.snapOffset=new c.Point,this.enabled=!0,this._wasEnabled=!0}return this.sprite.events.onAddedToGroup.add(this.addedToGroup,this),this.sprite.events.onRemovedFromGroup.add(this.removedFromGroup,this),this.flagged=!1,this.sprite},addedToGroup:function(){this._dragPhase||this._wasEnabled&&!this.enabled&&this.start()},removedFromGroup:function(){this._dragPhase||(this.enabled?(this._wasEnabled=!0,this.stop()):this._wasEnabled=!1)},reset:function(){this.enabled=!1,this.flagged=!1;for(var a=0;10>a;a++)this._pointerData[a]={id:a,x:0,y:0,isDown:!1,isUp:!1,isOver:!1,isOut:!1,timeOver:0,timeOut:0,timeDown:0,timeUp:0,downDuration:0,isDragged:!1}},stop:function(){this.enabled!==!1&&(this.enabled=!1,this.game.input.interactiveItems.remove(this))},destroy:function(){this.sprite&&(this._setHandCursor&&(this.game.canvas.style.cursor="default",this._setHandCursor=!1),this.enabled=!1,this.game.input.interactiveItems.remove(this),this._pointerData.length=0,this.boundsRect=null,this.boundsSprite=null,this.sprite=null)},validForInput:function(a,b,c){return void 0===c&&(c=!0),!this.enabled||0===this.sprite.scale.x||0===this.sprite.scale.y||this.priorityIDa||this.priorityID===a&&this.sprite.renderOrderID>b:!1},isPixelPerfect:function(){return this.pixelPerfectClick||this.pixelPerfectOver},pointerX:function(a){return a=a||0,this._pointerData[a].x},pointerY:function(a){return a=a||0,this._pointerData[a].y},pointerDown:function(a){return a=a||0,this._pointerData[a].isDown},pointerUp:function(a){return a=a||0,this._pointerData[a].isUp},pointerTimeDown:function(a){return a=a||0,this._pointerData[a].timeDown},pointerTimeUp:function(a){return a=a||0,this._pointerData[a].timeUp},pointerOver:function(a){if(!this.enabled)return!1;if(void 0===a){for(var b=0;10>b;b++)if(this._pointerData[b].isOver)return!0;return!1}return this._pointerData[a].isOver},pointerOut:function(a){if(!this.enabled)return!1;if(void 0!==a)return this._pointerData[a].isOut;for(var b=0;10>b;b++)if(this._pointerData[b].isOut)return!0},pointerTimeOver:function(a){return a=a||0,this._pointerData[a].timeOver},pointerTimeOut:function(a){return a=a||0,this._pointerData[a].timeOut},pointerDragged:function(a){return a=a||0,this._pointerData[a].isDragged},checkPointerDown:function(a,b){return a.isDown&&this.enabled&&this.sprite&&this.sprite.parent&&this.sprite.visible&&this.sprite.parent.visible&&0!==this.sprite.worldScale.x&&0!==this.sprite.worldScale.y&&this.game.input.hitTest(this.sprite,a,this._tempPoint)?(void 0===b&&(b=!1),!b&&this.pixelPerfectClick?this.checkPixel(this._tempPoint.x,this._tempPoint.y):!0):!1},checkPointerOver:function(a,b){return this.enabled&&this.sprite&&this.sprite.parent&&this.sprite.visible&&this.sprite.parent.visible&&0!==this.sprite.worldScale.x&&0!==this.sprite.worldScale.y&&this.game.input.hitTest(this.sprite,a,this._tempPoint)?(void 0===b&&(b=!1),!b&&this.pixelPerfectOver?this.checkPixel(this._tempPoint.x,this._tempPoint.y):!0):!1},checkPixel:function(a,b,c){if(this.sprite.texture.baseTexture.source){if(null===a&&null===b){this.game.input.getLocalPosition(this.sprite,c,this._tempPoint);var a=this._tempPoint.x,b=this._tempPoint.y}if(0!==this.sprite.anchor.x&&(a-=-this.sprite.texture.frame.width*this.sprite.anchor.x),0!==this.sprite.anchor.y&&(b-=-this.sprite.texture.frame.height*this.sprite.anchor.y),a+=this.sprite.texture.frame.x,b+=this.sprite.texture.frame.y,this.sprite.texture.trim&&(a-=this.sprite.texture.trim.x,b-=this.sprite.texture.trim.y,athis.sprite.texture.crop.right||bthis.sprite.texture.crop.bottom))return this._dx=a,this._dy=b,!1;this._dx=a,this._dy=b,this.game.input.hitContext.clearRect(0,0,1,1),this.game.input.hitContext.drawImage(this.sprite.texture.baseTexture.source,a,b,1,1,0,0,1,1);var d=this.game.input.hitContext.getImageData(0,0,1,1);if(d.data[3]>=this.pixelPerfectAlpha)return!0}return!1},update:function(a){return null!==this.sprite&&void 0!==this.sprite.parent?this.enabled&&this.sprite.visible&&this.sprite.parent.visible?this._pendingDrag?(this._dragDistancePass||(this._dragDistancePass=c.Math.distance(a.x,a.y,this.downPoint.x,this.downPoint.y)>=this.dragDistanceThreshold),this._dragDistancePass&&this._dragTimePass&&this.startDrag(a),!0):this.draggable&&this._draggedPointerID===a.id?this.updateDrag(a,!1):this._pointerData[a.id].isOver?this.checkPointerOver(a)?(this._pointerData[a.id].x=a.x-this.sprite.x,this._pointerData[a.id].y=a.y-this.sprite.y,!0):(this._pointerOutHandler(a),!1):void 0:(this._pointerOutHandler(a),!1):void 0},_pointerOverHandler:function(a,b){if(null!==this.sprite){var d=this._pointerData[a.id];if(d.isOver===!1||a.dirty){var e=d.isOver===!1;d.isOver=!0,d.isOut=!1,d.timeOver=this.game.time.time,d.x=a.x-this.sprite.x,d.y=a.y-this.sprite.y,this.useHandCursor&&d.isDragged===!1&&(this.game.canvas.style.cursor="pointer",this._setHandCursor=!0),!b&&e&&this.sprite&&this.sprite.events&&this.sprite.events.onInputOver$dispatch(this.sprite,a),this.sprite.parent&&this.sprite.parent.type===c.GROUP&&this.sprite.parent.onChildInputOver.dispatch(this.sprite,a)}}},_pointerOutHandler:function(a,b){if(null!==this.sprite){var d=this._pointerData[a.id];d.isOver=!1,d.isOut=!0,d.timeOut=this.game.time.time,this.useHandCursor&&d.isDragged===!1&&(this.game.canvas.style.cursor="default",this._setHandCursor=!1),!b&&this.sprite&&this.sprite.events&&(this.sprite.events.onInputOut$dispatch(this.sprite,a),this.sprite&&this.sprite.parent&&this.sprite.parent.type===c.GROUP&&this.sprite.parent.onChildInputOut.dispatch(this.sprite,a))}},_touchedHandler:function(a){if(null!==this.sprite){var b=this._pointerData[a.id];if(!b.isDown&&b.isOver){if(this.pixelPerfectClick&&!this.checkPixel(null,null,a))return;if(b.isDown=!0,b.isUp=!1,b.timeDown=this.game.time.time,this.downPoint.set(a.x,a.y),a.dirty=!0,this.sprite&&this.sprite.events&&(this.sprite.events.onInputDown$dispatch(this.sprite,a),this.sprite&&this.sprite.parent&&this.sprite.parent.type===c.GROUP&&this.sprite.parent.onChildInputDown.dispatch(this.sprite,a),null===this.sprite))return;this.draggable&&this.isDragged===!1&&(0===this.dragTimeThreshold&&0===this.dragDistanceThreshold?this.startDrag(a):(this._pendingDrag=!0,this._dragDistancePass=0===this.dragDistanceThreshold,this.dragTimeThreshold>0?(this._dragTimePass=!1,this.game.time.events.add(this.dragTimeThreshold,this.dragTimeElapsed,this,a)):this._dragTimePass=!0)),this.bringToTop&&this.sprite.bringToTop()}}},dragTimeElapsed:function(a){this._dragTimePass=!0,this._pendingDrag&&this.sprite&&this._dragDistancePass&&this.startDrag(a)},_releasedHandler:function(a){if(null!==this.sprite){var b=this._pointerData[a.id];if(b.isDown&&a.isUp){b.isDown=!1,b.isUp=!0,b.timeUp=this.game.time.time,b.downDuration=b.timeUp-b.timeDown;var d=this.checkPointerOver(a);this.sprite&&this.sprite.events&&(this.dragStopBlocksInputUp&&(!this.dragStopBlocksInputUp||this.draggable&&this.isDragged&&this._draggedPointerID===a.id)||this.sprite.events.onInputUp$dispatch(this.sprite,a,d),this.sprite&&this.sprite.parent&&this.sprite.parent.type===c.GROUP&&this.sprite.parent.onChildInputUp.dispatch(this.sprite,a,d),d&&(d=this.checkPointerOver(a))),b.isOver=d,!d&&this.useHandCursor&&(this.game.canvas.style.cursor="default",this._setHandCursor=!1),a.dirty=!0,this._pendingDrag=!1,this.draggable&&this.isDragged&&this._draggedPointerID===a.id&&this.stopDrag(a)}}},updateDrag:function(a,b){if(void 0===b&&(b=!1),a.isUp)return this.stopDrag(a),!1;var c=this.globalToLocalX(a.x)+this._dragPoint.x+this.dragOffset.x,d=this.globalToLocalY(a.y)+this._dragPoint.y+this.dragOffset.y;if(this.sprite.fixedToCamera)this.allowHorizontalDrag&&(this.sprite.cameraOffset.x=c),this.allowVerticalDrag&&(this.sprite.cameraOffset.y=d),this.boundsRect&&this.checkBoundsRect(),this.boundsSprite&&this.checkBoundsSprite(),this.snapOnDrag&&(this.sprite.cameraOffset.x=Math.round((this.sprite.cameraOffset.x-this.snapOffsetX%this.snapX)/this.snapX)*this.snapX+this.snapOffsetX%this.snapX,this.sprite.cameraOffset.y=Math.round((this.sprite.cameraOffset.y-this.snapOffsetY%this.snapY)/this.snapY)*this.snapY+this.snapOffsetY%this.snapY,this.snapPoint.set(this.sprite.cameraOffset.x,this.sprite.cameraOffset.y));else{var e=this.game.camera.x-this._pointerData[a.id].camX,f=this.game.camera.y-this._pointerData[a.id].camY;this.allowHorizontalDrag&&(this.sprite.x=c+e),this.allowVerticalDrag&&(this.sprite.y=d+f),this.boundsRect&&this.checkBoundsRect(),this.boundsSprite&&this.checkBoundsSprite(),this.snapOnDrag&&(this.sprite.x=Math.round((this.sprite.x-this.snapOffsetX%this.snapX)/this.snapX)*this.snapX+this.snapOffsetX%this.snapX,this.sprite.y=Math.round((this.sprite.y-this.snapOffsetY%this.snapY)/this.snapY)*this.snapY+this.snapOffsetY%this.snapY,this.snapPoint.set(this.sprite.x,this.sprite.y))}return this.sprite.events.onDragUpdate.dispatch(this.sprite,a,c,d,this.snapPoint,b),!0},justOver:function(a,b){return a=a||0,b=b||500,this._pointerData[a].isOver&&this.overDuration(a)a;a++)this._pointerData[a].isDragged=!1;this.draggable=!1,this.isDragged=!1,this._draggedPointerID=-1,this._pendingDrag=!1},startDrag:function(a){var b=this.sprite.x,c=this.sprite.y;if(this.isDragged=!0,this._draggedPointerID=a.id,this._pointerData[a.id].camX=this.game.camera.x,this._pointerData[a.id].camY=this.game.camera.y,this._pointerData[a.id].isDragged=!0,this.sprite.fixedToCamera){if(this.dragFromCenter){var d=this.sprite.getBounds();this.sprite.cameraOffset.x=this.globalToLocalX(a.x)+(this.sprite.cameraOffset.x-d.centerX),this.sprite.cameraOffset.y=this.globalToLocalY(a.y)+(this.sprite.cameraOffset.y-d.centerY)}this._dragPoint.setTo(this.sprite.cameraOffset.x-a.x,this.sprite.cameraOffset.y-a.y)}else{if(this.dragFromCenter){var d=this.sprite.getBounds();this.sprite.x=this.globalToLocalX(a.x)+(this.sprite.x-d.centerX),this.sprite.y=this.globalToLocalY(a.y)+(this.sprite.y-d.centerY)}this._dragPoint.setTo(this.sprite.x-this.globalToLocalX(a.x),this.sprite.y-this.globalToLocalY(a.y))}this.updateDrag(a,!0),this.bringToTop&&(this._dragPhase=!0,this.sprite.bringToTop()),this.dragStartPoint.set(b,c),this.sprite.events.onDragStart$dispatch(this.sprite,a,b,c),this._pendingDrag=!1},globalToLocalX:function(a){return this.scaleLayer&&(a-=this.game.scale.grid.boundsFluid.x,a*=this.game.scale.grid.scaleFluidInversed.x),a},globalToLocalY:function(a){return this.scaleLayer&&(a-=this.game.scale.grid.boundsFluid.y,a*=this.game.scale.grid.scaleFluidInversed.y),a},stopDrag:function(a){this.isDragged=!1,this._draggedPointerID=-1,this._pointerData[a.id].isDragged=!1,this._dragPhase=!1,this._pendingDrag=!1,this.snapOnRelease&&(this.sprite.fixedToCamera?(this.sprite.cameraOffset.x=Math.round((this.sprite.cameraOffset.x-this.snapOffsetX%this.snapX)/this.snapX)*this.snapX+this.snapOffsetX%this.snapX,this.sprite.cameraOffset.y=Math.round((this.sprite.cameraOffset.y-this.snapOffsetY%this.snapY)/this.snapY)*this.snapY+this.snapOffsetY%this.snapY):(this.sprite.x=Math.round((this.sprite.x-this.snapOffsetX%this.snapX)/this.snapX)*this.snapX+this.snapOffsetX%this.snapX,this.sprite.y=Math.round((this.sprite.y-this.snapOffsetY%this.snapY)/this.snapY)*this.snapY+this.snapOffsetY%this.snapY)),this.sprite.events.onDragStop$dispatch(this.sprite,a),this.checkPointerOver(a)===!1&&this._pointerOutHandler(a)},setDragLock:function(a,b){void 0===a&&(a=!0),void 0===b&&(b=!0),this.allowHorizontalDrag=a,this.allowVerticalDrag=b},enableSnap:function(a,b,c,d,e,f){void 0===c&&(c=!0),void 0===d&&(d=!1),void 0===e&&(e=0),void 0===f&&(f=0),this.snapX=a,this.snapY=b,this.snapOffsetX=e,this.snapOffsetY=f,this.snapOnDrag=c,this.snapOnRelease=d},disableSnap:function(){this.snapOnDrag=!1,this.snapOnRelease=!1},checkBoundsRect:function(){this.sprite.fixedToCamera?(this.sprite.cameraOffset.xthis.boundsRect.right&&(this.sprite.cameraOffset.x=this.boundsRect.right-this.sprite.width),this.sprite.cameraOffset.ythis.boundsRect.bottom&&(this.sprite.cameraOffset.y=this.boundsRect.bottom-this.sprite.height)):(this.sprite.leftthis.boundsRect.right&&(this.sprite.x=this.boundsRect.right-(this.sprite.width-this.sprite.offsetX)),this.sprite.topthis.boundsRect.bottom&&(this.sprite.y=this.boundsRect.bottom-(this.sprite.height-this.sprite.offsetY)))},checkBoundsSprite:function(){this.sprite.fixedToCamera&&this.boundsSprite.fixedToCamera?(this.sprite.cameraOffset.xthis.boundsSprite.cameraOffset.x+this.boundsSprite.width&&(this.sprite.cameraOffset.x=this.boundsSprite.cameraOffset.x+this.boundsSprite.width-this.sprite.width),this.sprite.cameraOffset.ythis.boundsSprite.cameraOffset.y+this.boundsSprite.height&&(this.sprite.cameraOffset.y=this.boundsSprite.cameraOffset.y+this.boundsSprite.height-this.sprite.height)):(this.sprite.leftthis.boundsSprite.right&&(this.sprite.x=this.boundsSprite.right-(this.sprite.width-this.sprite.offsetX)), +this.sprite.topthis.boundsSprite.bottom&&(this.sprite.y=this.boundsSprite.bottom-(this.sprite.height-this.sprite.offsetY)))}},c.InputHandler.prototype.constructor=c.InputHandler,c.Gamepad=function(a){this.game=a,this._gamepadIndexMap={},this._rawPads=[],this._active=!1,this.enabled=!0,this._gamepadSupportAvailable=!!navigator.webkitGetGamepads||!!navigator.webkitGamepads||-1!=navigator.userAgent.indexOf("Firefox/")||!!navigator.getGamepads,this._prevRawGamepadTypes=[],this._prevTimestamps=[],this.callbackContext=this,this.onConnectCallback=null,this.onDisconnectCallback=null,this.onDownCallback=null,this.onUpCallback=null,this.onAxisCallback=null,this.onFloatCallback=null,this._ongamepadconnected=null,this._gamepaddisconnected=null,this._gamepads=[new c.SinglePad(a,this),new c.SinglePad(a,this),new c.SinglePad(a,this),new c.SinglePad(a,this)]},c.Gamepad.prototype={addCallbacks:function(a,b){"undefined"!=typeof b&&(this.onConnectCallback="function"==typeof b.onConnect?b.onConnect:this.onConnectCallback,this.onDisconnectCallback="function"==typeof b.onDisconnect?b.onDisconnect:this.onDisconnectCallback,this.onDownCallback="function"==typeof b.onDown?b.onDown:this.onDownCallback,this.onUpCallback="function"==typeof b.onUp?b.onUp:this.onUpCallback,this.onAxisCallback="function"==typeof b.onAxis?b.onAxis:this.onAxisCallback,this.onFloatCallback="function"==typeof b.onFloat?b.onFloat:this.onFloatCallback,this.callbackContext=a)},start:function(){if(!this._active){this._active=!0;var a=this;this._onGamepadConnected=function(b){return a.onGamepadConnected(b)},this._onGamepadDisconnected=function(b){return a.onGamepadDisconnected(b)},window.addEventListener("gamepadconnected",this._onGamepadConnected,!1),window.addEventListener("gamepaddisconnected",this._onGamepadDisconnected,!1)}},onGamepadConnected:function(a){var b=a.gamepad;this._rawPads.push(b),this._gamepads[b.index].connect(b)},onGamepadDisconnected:function(a){var b=a.gamepad;for(var c in this._rawPads)this._rawPads[c].index===b.index&&this._rawPads.splice(c,1);this._gamepads[b.index].disconnect()},update:function(){this._pollGamepads(),this.pad1.pollStatus(),this.pad2.pollStatus(),this.pad3.pollStatus(),this.pad4.pollStatus()},_pollGamepads:function(){if(this._active){if(navigator.getGamepads)var a=navigator.getGamepads();else if(navigator.webkitGetGamepads)var a=navigator.webkitGetGamepads();else if(navigator.webkitGamepads)var a=navigator.webkitGamepads();if(a){this._rawPads=[];for(var b=!1,c=0;c0&&d>this.deadZone||0>d&&d<-this.deadZone?this.processAxisChange(c,d):this.processAxisChange(c,0)}this._prevTimestamp=this._rawPad.timestamp}},connect:function(a){var b=!this.connected;this.connected=!0,this.index=a.index,this._rawPad=a,this._buttons=[],this._buttonsLen=a.buttons.length,this._axes=[],this._axesLen=a.axes.length;for(var d=0;dthis.maxHealth&&(this.health=this.maxHealth),this},heal:function(a){return this.alive&&(this.health+=a,this.health>this.maxHealth&&(this.health=this.maxHealth)),this}},c.Component.InCamera=function(){},c.Component.InCamera.prototype={inCamera:{get:function(){return this.game.world.camera.view.intersects(this._bounds)}}},c.Component.InputEnabled=function(){},c.Component.InputEnabled.prototype={input:null,inputEnabled:{get:function(){return this.input&&this.input.enabled},set:function(a){a?null===this.input?(this.input=new c.InputHandler(this),this.input.start()):this.input&&!this.input.enabled&&this.input.start():this.input&&this.input.enabled&&this.input.stop()}}},c.Component.InWorld=function(){},c.Component.InWorld.preUpdate=function(){if(this.autoCull||this.checkWorldBounds){if(this._bounds.copyFrom(this.getBounds()),this._bounds.x+=this.game.camera.view.x,this._bounds.y+=this.game.camera.view.y,this.autoCull)if(this.game.world.camera.view.intersects(this._bounds))this.renderable=!0,this.game.world.camera.totalInView++;else if(this.renderable=!1,this.outOfCameraBoundsKill)return this.kill(),!1;if(this.checkWorldBounds)if(this._outOfBoundsFired&&this.game.world.bounds.intersects(this._bounds))this._outOfBoundsFired=!1,this.events.onEnterBounds$dispatch(this);else if(!this._outOfBoundsFired&&!this.game.world.bounds.intersects(this._bounds)&&(this._outOfBoundsFired=!0,this.events.onOutOfBounds$dispatch(this),this.outOfBoundsKill))return this.kill(),!1}return!0},c.Component.InWorld.prototype={checkWorldBounds:!1,outOfBoundsKill:!1,outOfCameraBoundsKill:!1,_outOfBoundsFired:!1,inWorld:{get:function(){return this.game.world.bounds.intersects(this.getBounds())}}},c.Component.LifeSpan=function(){},c.Component.LifeSpan.preUpdate=function(){return this.lifespan>0&&(this.lifespan-=this.game.time.physicsElapsedMS,this.lifespan<=0)?(this.kill(),!1):!0},c.Component.LifeSpan.prototype={alive:!0,lifespan:0,revive:function(a){return void 0===a&&(a=100),this.alive=!0,this.exists=!0,this.visible=!0,"function"==typeof this.setHealth&&this.setHealth(a),this.events&&this.events.onRevived$dispatch(this),this},kill:function(){return this.alive=!1,this.exists=!1,this.visible=!1,this.events&&this.events.onKilled$dispatch(this),this}},c.Component.LoadTexture=function(){},c.Component.LoadTexture.prototype={customRender:!1,_frame:null,loadTexture:function(a,b,d){a===c.PENDING_ATLAS?(a=b,b=0):b=b||0,(d||void 0===d)&&this.animations&&this.animations.stop(),this.key=a,this.customRender=!1;var e=this.game.cache,f=!0,g=!this.texture.baseTexture.scaleMode;if(c.RenderTexture&&a instanceof c.RenderTexture)this.key=a.key,this.setTexture(a);else if(c.BitmapData&&a instanceof c.BitmapData)this.customRender=!0,this.setTexture(a.texture),f=e.hasFrameData(a.key,c.Cache.BITMAPDATA)?!this.animations.loadFrameData(e.getFrameData(a.key,c.Cache.BITMAPDATA),b):!this.animations.loadFrameData(a.frameData,0);else if(c.Video&&a instanceof c.Video){ +this.customRender=!0;var h=a.texture.valid;this.setTexture(a.texture),this.setFrame(a.texture.frame.clone()),a.onChangeSource.add(this.resizeFrame,this),this.texture.valid=h}else if(c.Tilemap&&a instanceof c.TilemapLayer)this.setTexture(PIXI.Texture.fromCanvas(a.canvas));else if(a instanceof PIXI.Texture)this.setTexture(a);else{var i=e.getImage(a,!0);this.key=i.key,this.setTexture(new PIXI.Texture(i.base)),"__default"===a?this.texture.baseTexture.skipRender=!0:this.texture.baseTexture.skipRender=!1,f=!this.animations.loadFrameData(i.frameData,b)}f&&(this._frame=c.Rectangle.clone(this.texture.frame)),g||(this.texture.baseTexture.scaleMode=1)},setFrame:function(a){this._frame=a,this.texture.frame.x=a.x,this.texture.frame.y=a.y,this.texture.frame.width=a.width,this.texture.frame.height=a.height,this.texture.crop.x=a.x,this.texture.crop.y=a.y,this.texture.crop.width=a.width,this.texture.crop.height=a.height,a.trimmed?(this.texture.trim?(this.texture.trim.x=a.spriteSourceSizeX,this.texture.trim.y=a.spriteSourceSizeY,this.texture.trim.width=a.sourceSizeW,this.texture.trim.height=a.sourceSizeH):this.texture.trim={x:a.spriteSourceSizeX,y:a.spriteSourceSizeY,width:a.sourceSizeW,height:a.sourceSizeH},this.texture.width=a.sourceSizeW,this.texture.height=a.sourceSizeH,this.texture.frame.width=a.sourceSizeW,this.texture.frame.height=a.sourceSizeH):!a.trimmed&&this.texture.trim&&(this.texture.trim=null),this.cropRect&&this.updateCrop(),this.texture.requiresReTint=!0,this.texture._updateUvs(),this.tilingTexture&&(this.refreshTexture=!0)},resizeFrame:function(a,b,c){this.texture.frame.resize(b,c),this.texture.setFrame(this.texture.frame)},resetFrame:function(){this._frame&&this.setFrame(this._frame)},frame:{get:function(){return this.animations.frame},set:function(a){this.animations.frame=a}},frameName:{get:function(){return this.animations.frameName},set:function(a){this.animations.frameName=a}}},c.Component.Overlap=function(){},c.Component.Overlap.prototype={overlap:function(a){return c.Rectangle.intersects(this.getBounds(),a.getBounds())}},c.Component.PhysicsBody=function(){},c.Component.PhysicsBody.preUpdate=function(){return this.fresh&&this.exists?(this.world.setTo(this.parent.position.x+this.position.x,this.parent.position.y+this.position.y),this.worldTransform.tx=this.world.x,this.worldTransform.ty=this.world.y,this.previousPosition.set(this.world.x,this.world.y),this.previousRotation=this.rotation,this.body&&this.body.preUpdate(),this.fresh=!1,!1):(this.previousPosition.set(this.world.x,this.world.y),this.previousRotation=this.rotation,this._exists&&this.parent.exists?!0:(this.renderOrderID=-1,!1))},c.Component.PhysicsBody.postUpdate=function(){this.exists&&this.body&&this.body.postUpdate()},c.Component.PhysicsBody.prototype={body:null,x:{get:function(){return this.position.x},set:function(a){this.position.x=a,this.body&&!this.body.dirty&&(this.body._reset=!0)}},y:{get:function(){return this.position.y},set:function(a){this.position.y=a,this.body&&!this.body.dirty&&(this.body._reset=!0)}}},c.Component.Reset=function(){},c.Component.Reset.prototype.reset=function(a,b,c){return void 0===c&&(c=1),this.world.set(a,b),this.position.set(a,b),this.fresh=!0,this.exists=!0,this.visible=!0,this.renderable=!0,this.components.InWorld&&(this._outOfBoundsFired=!1),this.components.LifeSpan&&(this.alive=!0,this.health=c),this.components.PhysicsBody&&this.body&&this.body.reset(a,b,!1,!1),this},c.Component.ScaleMinMax=function(){},c.Component.ScaleMinMax.prototype={transformCallback:null,transformCallbackContext:this,scaleMin:null,scaleMax:null,checkTransform:function(a){this.scaleMin&&(a.athis.scaleMax.x&&(a.a=this.scaleMax.x),a.d>this.scaleMax.y&&(a.d=this.scaleMax.y))},setScaleMinMax:function(a,b,d,e){void 0===b?b=d=e=a:void 0===d&&(d=e=b,b=a),null===a?this.scaleMin=null:this.scaleMin?this.scaleMin.set(a,b):this.scaleMin=new c.Point(a,b),null===d?this.scaleMax=null:this.scaleMax?this.scaleMax.set(d,e):this.scaleMax=new c.Point(d,e),null===this.scaleMin?this.transformCallback=null:(this.transformCallback=this.checkTransform,this.transformCallbackContext=this)}},c.Component.Smoothed=function(){},c.Component.Smoothed.prototype={smoothed:{get:function(){return!this.texture.baseTexture.scaleMode},set:function(a){a?this.texture&&(this.texture.baseTexture.scaleMode=0):this.texture&&(this.texture.baseTexture.scaleMode=1)}}},c.GameObjectFactory=function(a){this.game=a,this.world=this.game.world},c.GameObjectFactory.prototype={existing:function(a){return this.world.add(a)},weapon:function(a,b,d,e){var f=this.game.plugins.add(c.Weapon);return f.createBullets(a,b,d,e),f},image:function(a,b,d,e,f){return void 0===f&&(f=this.world),f.add(new c.Image(this.game,a,b,d,e))},sprite:function(a,b,c,d,e){return void 0===e&&(e=this.world),e.create(a,b,c,d)},creature:function(a,b,d,e,f){void 0===f&&(f=this.world);var g=new c.Creature(this.game,a,b,d,e);return f.add(g),g},tween:function(a){return this.game.tweens.create(a)},group:function(a,b,d,e,f){return new c.Group(this.game,a,b,d,e,f)},physicsGroup:function(a,b,d,e){return new c.Group(this.game,b,d,e,!0,a)},spriteBatch:function(a,b,d){return void 0===a&&(a=null),void 0===b&&(b="group"),void 0===d&&(d=!1),new c.SpriteBatch(this.game,a,b,d)},audio:function(a,b,c,d){return this.game.sound.add(a,b,c,d)},sound:function(a,b,c,d){return this.game.sound.add(a,b,c,d)},audioSprite:function(a){return this.game.sound.addSprite(a)},tileSprite:function(a,b,d,e,f,g,h){return void 0===h&&(h=this.world),h.add(new c.TileSprite(this.game,a,b,d,e,f,g))},rope:function(a,b,d,e,f,g){return void 0===g&&(g=this.world),g.add(new c.Rope(this.game,a,b,d,e,f))},text:function(a,b,d,e,f){return void 0===f&&(f=this.world),f.add(new c.Text(this.game,a,b,d,e))},button:function(a,b,d,e,f,g,h,i,j,k){return void 0===k&&(k=this.world),k.add(new c.Button(this.game,a,b,d,e,f,g,h,i,j))},graphics:function(a,b,d){return void 0===d&&(d=this.world),d.add(new c.Graphics(this.game,a,b))},emitter:function(a,b,d){return this.game.particles.add(new c.Particles.Arcade.Emitter(this.game,a,b,d))},retroFont:function(a,b,d,e,f,g,h,i,j){return new c.RetroFont(this.game,a,b,d,e,f,g,h,i,j)},bitmapText:function(a,b,d,e,f,g){return void 0===g&&(g=this.world),g.add(new c.BitmapText(this.game,a,b,d,e,f))},tilemap:function(a,b,d,e,f){return new c.Tilemap(this.game,a,b,d,e,f)},renderTexture:function(a,b,d,e){void 0!==d&&""!==d||(d=this.game.rnd.uuid()),void 0===e&&(e=!1);var f=new c.RenderTexture(this.game,a,b,d);return e&&this.game.cache.addRenderTexture(d,f),f},video:function(a,b){return new c.Video(this.game,a,b)},bitmapData:function(a,b,d,e){void 0===e&&(e=!1),void 0!==d&&""!==d||(d=this.game.rnd.uuid());var f=new c.BitmapData(this.game,d,a,b);return e&&this.game.cache.addBitmapData(d,f),f},filter:function(a){var b=Array.prototype.slice.call(arguments,1),a=new c.Filter[a](this.game);return a.init.apply(a,b),a},plugin:function(a){return this.game.plugins.add(a)}},c.GameObjectFactory.prototype.constructor=c.GameObjectFactory,c.GameObjectCreator=function(a){this.game=a,this.world=this.game.world},c.GameObjectCreator.prototype={image:function(a,b,d,e){return new c.Image(this.game,a,b,d,e)},sprite:function(a,b,d,e){return new c.Sprite(this.game,a,b,d,e)},tween:function(a){return new c.Tween(a,this.game,this.game.tweens)},group:function(a,b,d,e,f){return new c.Group(this.game,a,b,d,e,f)},spriteBatch:function(a,b,d){return void 0===b&&(b="group"),void 0===d&&(d=!1),new c.SpriteBatch(this.game,a,b,d)},audio:function(a,b,c,d){return this.game.sound.add(a,b,c,d)},audioSprite:function(a){return this.game.sound.addSprite(a)},sound:function(a,b,c,d){return this.game.sound.add(a,b,c,d)},tileSprite:function(a,b,d,e,f,g){return new c.TileSprite(this.game,a,b,d,e,f,g)},rope:function(a,b,d,e,f){return new c.Rope(this.game,a,b,d,e,f)},text:function(a,b,d,e){return new c.Text(this.game,a,b,d,e)},button:function(a,b,d,e,f,g,h,i,j){return new c.Button(this.game,a,b,d,e,f,g,h,i,j)},graphics:function(a,b){return new c.Graphics(this.game,a,b)},emitter:function(a,b,d){return new c.Particles.Arcade.Emitter(this.game,a,b,d)},retroFont:function(a,b,d,e,f,g,h,i,j){return new c.RetroFont(this.game,a,b,d,e,f,g,h,i,j)},bitmapText:function(a,b,d,e,f,g){return new c.BitmapText(this.game,a,b,d,e,f,g)},tilemap:function(a,b,d,e,f){return new c.Tilemap(this.game,a,b,d,e,f)},renderTexture:function(a,b,d,e){void 0!==d&&""!==d||(d=this.game.rnd.uuid()),void 0===e&&(e=!1);var f=new c.RenderTexture(this.game,a,b,d);return e&&this.game.cache.addRenderTexture(d,f),f},bitmapData:function(a,b,d,e){void 0===e&&(e=!1),void 0!==d&&""!==d||(d=this.game.rnd.uuid());var f=new c.BitmapData(this.game,d,a,b);return e&&this.game.cache.addBitmapData(d,f),f},filter:function(a){var b=Array.prototype.slice.call(arguments,1),a=new c.Filter[a](this.game);return a.init.apply(a,b),a}},c.GameObjectCreator.prototype.constructor=c.GameObjectCreator,c.Sprite=function(a,b,d,e,f){b=b||0,d=d||0,e=e||null,f=f||null,this.type=c.SPRITE,this.physicsType=c.SPRITE,PIXI.Sprite.call(this,c.Cache.DEFAULT),c.Component.Core.init.call(this,a,b,d,e,f)},c.Sprite.prototype=Object.create(PIXI.Sprite.prototype),c.Sprite.prototype.constructor=c.Sprite,c.Component.Core.install.call(c.Sprite.prototype,["Angle","Animation","AutoCull","Bounds","BringToTop","Crop","Delta","Destroy","FixedToCamera","Health","InCamera","InputEnabled","InWorld","LifeSpan","LoadTexture","Overlap","PhysicsBody","Reset","ScaleMinMax","Smoothed"]),c.Sprite.prototype.preUpdatePhysics=c.Component.PhysicsBody.preUpdate,c.Sprite.prototype.preUpdateLifeSpan=c.Component.LifeSpan.preUpdate,c.Sprite.prototype.preUpdateInWorld=c.Component.InWorld.preUpdate,c.Sprite.prototype.preUpdateCore=c.Component.Core.preUpdate,c.Sprite.prototype.preUpdate=function(){return this.preUpdatePhysics()&&this.preUpdateLifeSpan()&&this.preUpdateInWorld()?this.preUpdateCore():!1},c.Image=function(a,b,d,e,f){b=b||0,d=d||0,e=e||null,f=f||null,this.type=c.IMAGE,PIXI.Sprite.call(this,c.Cache.DEFAULT),c.Component.Core.init.call(this,a,b,d,e,f)},c.Image.prototype=Object.create(PIXI.Sprite.prototype),c.Image.prototype.constructor=c.Image,c.Component.Core.install.call(c.Image.prototype,["Angle","Animation","AutoCull","Bounds","BringToTop","Crop","Destroy","FixedToCamera","InputEnabled","LifeSpan","LoadTexture","Overlap","Reset","Smoothed"]),c.Image.prototype.preUpdateInWorld=c.Component.InWorld.preUpdate,c.Image.prototype.preUpdateCore=c.Component.Core.preUpdate,c.Image.prototype.preUpdate=function(){return this.preUpdateInWorld()?this.preUpdateCore():!1},c.Button=function(a,b,d,e,f,g,h,i,j,k){b=b||0,d=d||0,e=e||null,f=f||null,g=g||this,c.Image.call(this,a,b,d,e,i),this.type=c.BUTTON,this.physicsType=c.SPRITE,this._onOverFrame=null,this._onOutFrame=null,this._onDownFrame=null,this._onUpFrame=null,this.onOverSound=null,this.onOutSound=null,this.onDownSound=null,this.onUpSound=null,this.onOverSoundMarker="",this.onOutSoundMarker="",this.onDownSoundMarker="",this.onUpSoundMarker="",this.onInputOver=new c.Signal,this.onInputOut=new c.Signal,this.onInputDown=new c.Signal,this.onInputUp=new c.Signal,this.onOverMouseOnly=!0,this.justReleasedPreventsOver=c.PointerMode.TOUCH,this.freezeFrames=!1,this.forceOut=!1,this.inputEnabled=!0,this.input.start(0,!0),this.input.useHandCursor=!0,this.setFrames(h,i,j,k),null!==f&&this.onInputUp.add(f,g),this.events.onInputOver.add(this.onInputOverHandler,this),this.events.onInputOut.add(this.onInputOutHandler,this),this.events.onInputDown.add(this.onInputDownHandler,this),this.events.onInputUp.add(this.onInputUpHandler,this),this.events.onRemovedFromWorld.add(this.removedFromWorld,this)},c.Button.prototype=Object.create(c.Image.prototype),c.Button.prototype.constructor=c.Button;var g="Over",h="Out",i="Down",j="Up";c.Button.prototype.clearFrames=function(){this.setFrames(null,null,null,null)},c.Button.prototype.removedFromWorld=function(){this.inputEnabled=!1},c.Button.prototype.setStateFrame=function(a,b,c){var d="_on"+a+"Frame";null!==b?(this[d]=b,c&&this.changeStateFrame(a)):this[d]=null},c.Button.prototype.changeStateFrame=function(a){if(this.freezeFrames)return!1;var b="_on"+a+"Frame",c=this[b];return"string"==typeof c?(this.frameName=c,!0):"number"==typeof c?(this.frame=c,!0):!1},c.Button.prototype.setFrames=function(a,b,c,d){this.setStateFrame(g,a,this.input.pointerOver()),this.setStateFrame(h,b,!this.input.pointerOver()),this.setStateFrame(i,c,this.input.pointerDown()),this.setStateFrame(j,d,this.input.pointerUp())},c.Button.prototype.setStateSound=function(a,b,d){var e="on"+a+"Sound",f="on"+a+"SoundMarker";b instanceof c.Sound||b instanceof c.AudioSprite?(this[e]=b,this[f]="string"==typeof d?d:""):(this[e]=null,this[f]="")},c.Button.prototype.playStateSound=function(a){var b="on"+a+"Sound",c=this[b];if(c){var d="on"+a+"SoundMarker",e=this[d];return c.play(e),!0}return!1},c.Button.prototype.setSounds=function(a,b,c,d,e,f,k,l){this.setStateSound(g,a,b),this.setStateSound(h,e,f),this.setStateSound(i,c,d),this.setStateSound(j,k,l)},c.Button.prototype.setOverSound=function(a,b){this.setStateSound(g,a,b)},c.Button.prototype.setOutSound=function(a,b){this.setStateSound(h,a,b)},c.Button.prototype.setDownSound=function(a,b){this.setStateSound(i,a,b)},c.Button.prototype.setUpSound=function(a,b){this.setStateSound(j,a,b)},c.Button.prototype.onInputOverHandler=function(a,b){b.justReleased()&&(this.justReleasedPreventsOver&b.pointerMode)===b.pointerMode||(this.changeStateFrame(g),this.onOverMouseOnly&&!b.isMouse||(this.playStateSound(g),this.onInputOver&&this.onInputOver.dispatch(this,b)))},c.Button.prototype.onInputOutHandler=function(a,b){this.changeStateFrame(h),this.playStateSound(h),this.onInputOut&&this.onInputOut.dispatch(this,b)},c.Button.prototype.onInputDownHandler=function(a,b){this.changeStateFrame(i),this.playStateSound(i),this.onInputDown&&this.onInputDown.dispatch(this,b)},c.Button.prototype.onInputUpHandler=function(a,b,c){if(this.playStateSound(j),this.onInputUp&&this.onInputUp.dispatch(this,b,c),!this.freezeFrames)if(this.forceOut===!0||(this.forceOut&b.pointerMode)===b.pointerMode)this.changeStateFrame(h);else{var d=this.changeStateFrame(j);d||(c?this.changeStateFrame(g):this.changeStateFrame(h))}},c.SpriteBatch=function(a,b,d,e){void 0!==b&&null!==b||(b=a.world),PIXI.SpriteBatch.call(this),c.Group.call(this,a,b,d,e),this.type=c.SPRITEBATCH},c.SpriteBatch.prototype=c.Utils.extend(!0,c.SpriteBatch.prototype,PIXI.SpriteBatch.prototype,c.Group.prototype),c.SpriteBatch.prototype.constructor=c.SpriteBatch,c.BitmapData=function(a,b,d,e,f){void 0!==d&&0!==d||(d=256),void 0!==e&&0!==e||(e=256),void 0===f&&(f=!1),this.game=a,this.key=b,this.width=d,this.height=e,this.canvas=c.Canvas.create(this,d,e,null,f),this.context=this.canvas.getContext("2d",{alpha:!0}),this.ctx=this.context,this.smoothProperty=a.renderType===c.CANVAS?a.renderer.renderSession.smoothProperty:c.Canvas.getSmoothingPrefix(this.context),this.imageData=this.context.getImageData(0,0,d,e),this.data=null,this.imageData&&(this.data=this.imageData.data),this.pixels=null,this.data&&(this.imageData.data.buffer?(this.buffer=this.imageData.data.buffer,this.pixels=new Uint32Array(this.buffer)):window.ArrayBuffer?(this.buffer=new ArrayBuffer(this.imageData.data.length),this.pixels=new Uint32Array(this.buffer)):this.pixels=this.imageData.data),this.baseTexture=new PIXI.BaseTexture(this.canvas),this.texture=new PIXI.Texture(this.baseTexture),this.frameData=new c.FrameData,this.textureFrame=this.frameData.addFrame(new c.Frame(0,0,0,d,e,"bitmapData")),this.texture.frame=this.textureFrame,this.type=c.BITMAPDATA,this.disableTextureUpload=!1,this.dirty=!1,this.cls=this.clear,this._image=null,this._pos=new c.Point,this._size=new c.Point,this._scale=new c.Point,this._rotate=0,this._alpha={prev:1,current:1},this._anchor=new c.Point,this._tempR=0,this._tempG=0,this._tempB=0,this._circle=new c.Circle,this._swapCanvas=void 0},c.BitmapData.prototype={move:function(a,b,c){return 0!==a&&this.moveH(a,c),0!==b&&this.moveV(b,c),this},moveH:function(a,b){void 0===b&&(b=!0),void 0===this._swapCanvas&&(this._swapCanvas=PIXI.CanvasPool.create(this,this.width,this.height));var c=this._swapCanvas,d=c.getContext("2d"),e=this.height,f=this.canvas;if(d.clearRect(0,0,this.width,this.height),0>a){a=Math.abs(a);var g=this.width-a;b&&d.drawImage(f,0,0,a,e,g,0,a,e),d.drawImage(f,a,0,g,e,0,0,g,e)}else{var g=this.width-a;b&&d.drawImage(f,g,0,a,e,0,0,a,e),d.drawImage(f,0,0,g,e,a,0,g,e)}return this.clear(),this.copy(this._swapCanvas)},moveV:function(a,b){void 0===b&&(b=!0),void 0===this._swapCanvas&&(this._swapCanvas=PIXI.CanvasPool.create(this,this.width,this.height));var c=this._swapCanvas,d=c.getContext("2d"),e=this.width,f=this.canvas;if(d.clearRect(0,0,this.width,this.height),0>a){a=Math.abs(a);var g=this.height-a;b&&d.drawImage(f,0,0,e,a,0,g,e,a),d.drawImage(f,0,a,e,g,0,0,e,g)}else{var g=this.height-a;b&&d.drawImage(f,0,g,e,a,0,0,e,a),d.drawImage(f,0,0,e,g,0,a,e,g)}return this.clear(),this.copy(this._swapCanvas)},add:function(a){if(Array.isArray(a))for(var b=0;bm;m++)for(var n=d;h>n;n++)c.Color.unpackPixel(this.getPixel32(n,m),j),k=a.call(b,j,n,m),k!==!1&&null!==k&&void 0!==k&&(this.setPixel32(n,m,k.r,k.g,k.b,k.a,!1),l=!0);return l&&(this.context.putImageData(this.imageData,0,0),this.dirty=!0),this},processPixel:function(a,b,c,d,e,f){void 0===c&&(c=0),void 0===d&&(d=0),void 0===e&&(e=this.width),void 0===f&&(f=this.height);for(var g=c+e,h=d+f,i=0,j=0,k=!1,l=d;h>l;l++)for(var m=c;g>m;m++)i=this.getPixel32(m,l),j=a.call(b,i,m,l),j!==i&&(this.pixels[l*this.width+m]=j,k=!0);return k&&(this.context.putImageData(this.imageData,0,0),this.dirty=!0),this},replaceRGB:function(a,b,d,e,f,g,h,i,j){var k=0,l=0,m=this.width,n=this.height,o=c.Color.packPixel(a,b,d,e);void 0!==j&&j instanceof c.Rectangle&&(k=j.x,l=j.y,m=j.width,n=j.height);for(var p=0;n>p;p++)for(var q=0;m>q;q++)this.getPixel32(k+q,l+p)===o&&this.setPixel32(k+q,l+p,f,g,h,i,!1);return this.context.putImageData(this.imageData,0,0),this.dirty=!0,this},setHSL:function(a,b,d,e){var f=a||0===a,g=b||0===b,h=d||0===d;if(f||g||h){void 0===e&&(e=new c.Rectangle(0,0,this.width,this.height));for(var i=c.Color.createColor(),j=e.y;j=0&&a<=this.width&&b>=0&&b<=this.height&&(c.Device.LITTLE_ENDIAN?this.pixels[b*this.width+a]=g<<24|f<<16|e<<8|d:this.pixels[b*this.width+a]=d<<24|e<<16|f<<8|g,h&&(this.context.putImageData(this.imageData,0,0),this.dirty=!0)),this},setPixel:function(a,b,c,d,e,f){return this.setPixel32(a,b,c,d,e,255,f)},getPixel:function(a,b,d){d||(d=c.Color.createColor());var e=~~(a+b*this.width);return e*=4,d.r=this.data[e],d.g=this.data[++e],d.b=this.data[++e],d.a=this.data[++e],d},getPixel32:function(a,b){return a>=0&&a<=this.width&&b>=0&&b<=this.height?this.pixels[b*this.width+a]:void 0},getPixelRGB:function(a,b,d,e,f){return c.Color.unpackPixel(this.getPixel32(a,b),d,e,f)},getPixels:function(a){return this.context.getImageData(a.x,a.y,a.width,a.height)},getFirstPixel:function(a){void 0===a&&(a=0);var b=c.Color.createColor(),d=0,e=0,f=1,g=!1;1===a?(f=-1,e=this.height):3===a&&(f=-1,d=this.width);do c.Color.unpackPixel(this.getPixel32(d,e),b),0===a||1===a?(d++,d===this.width&&(d=0,e+=f,(e>=this.height||0>=e)&&(g=!0))):2!==a&&3!==a||(e++,e===this.height&&(e=0,d+=f,(d>=this.width||0>=d)&&(g=!0)));while(0===b.a&&!g);return b.x=d,b.y=e,b},getBounds:function(a){return void 0===a&&(a=new c.Rectangle),a.x=this.getFirstPixel(2).x,a.x===this.width?a.setTo(0,0,0,0):(a.y=this.getFirstPixel(0).y,a.width=this.getFirstPixel(3).x-a.x+1,a.height=this.getFirstPixel(1).y-a.y+1,a)},addToWorld:function(a,b,c,d,e,f){e=e||1,f=f||1;var g=this.game.add.image(a,b,this);return g.anchor.set(c,d),g.scale.set(e,f),g},copy:function(a,b,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r){if(void 0!==a&&null!==a||(a=this),(a instanceof c.RenderTexture||a instanceof PIXI.RenderTexture)&&(a=a.getCanvas()),this._image=a,a instanceof c.Sprite||a instanceof c.Image||a instanceof c.Text||a instanceof PIXI.Sprite)this._pos.set(a.texture.crop.x,a.texture.crop.y),this._size.set(a.texture.crop.width,a.texture.crop.height),this._scale.set(a.scale.x,a.scale.y),this._anchor.set(a.anchor.x,a.anchor.y),this._rotate=a.rotation,this._alpha.current=a.alpha,a.texture instanceof c.RenderTexture||a.texture instanceof PIXI.RenderTexture?this._image=a.texture.getCanvas():this._image=a.texture.baseTexture.source,void 0!==g&&null!==g||(g=a.x),void 0!==h&&null!==h||(h=a.y),a.texture.trim&&(g+=a.texture.trim.x-a.anchor.x*a.texture.trim.width,h+=a.texture.trim.y-a.anchor.y*a.texture.trim.height),16777215!==a.tint&&(a.cachedTint!==a.tint&&(a.cachedTint=a.tint,a.tintedTexture=PIXI.CanvasTinter.getTintedTexture(a,a.tint)),this._image=a.tintedTexture,this._pos.set(0));else{if(this._pos.set(0),this._scale.set(1),this._anchor.set(0),this._rotate=0,this._alpha.current=1,a instanceof c.BitmapData)this._image=a.canvas;else if("string"==typeof a){if(a=this.game.cache.getImage(a),null===a)return;this._image=a}this._size.set(this._image.width,this._image.height)}if(void 0!==b&&null!==b||(b=0),void 0!==d&&null!==d||(d=0),e&&(this._size.x=e),f&&(this._size.y=f),void 0!==g&&null!==g||(g=b),void 0!==h&&null!==h||(h=d),void 0!==i&&null!==i||(i=this._size.x),void 0!==j&&null!==j||(j=this._size.y),"number"==typeof k&&(this._rotate=k),"number"==typeof l&&(this._anchor.x=l),"number"==typeof m&&(this._anchor.y=m),"number"==typeof n&&(this._scale.x=n),"number"==typeof o&&(this._scale.y=o),"number"==typeof p&&(this._alpha.current=p),void 0===q&&(q=null),void 0===r&&(r=!1),!(this._alpha.current<=0||0===this._scale.x||0===this._scale.y||0===this._size.x||0===this._size.y)){var s=this.context;return this._alpha.prev=s.globalAlpha,s.save(),s.globalAlpha=this._alpha.current,q&&(this.op=q),r&&(g|=0,h|=0),s.translate(g,h),s.scale(this._scale.x,this._scale.y),s.rotate(this._rotate),s.drawImage(this._image,this._pos.x+b,this._pos.y+d,this._size.x,this._size.y,-i*this._anchor.x,-j*this._anchor.y,i,j),s.restore(),s.globalAlpha=this._alpha.prev,this.dirty=!0,this}},copyTransform:function(a,b,d){if(void 0===b&&(b=null),void 0===d&&(d=!1),!a.hasOwnProperty("worldTransform")||!a.worldVisible||0===a.worldAlpha)return this;var e=a.worldTransform;if(this._pos.set(a.texture.crop.x,a.texture.crop.y),this._size.set(a.texture.crop.width,a.texture.crop.height),0===e.a||0===e.d||0===this._size.x||0===this._size.y)return this;a.texture instanceof c.RenderTexture||a.texture instanceof PIXI.RenderTexture?this._image=a.texture.getCanvas():this._image=a.texture.baseTexture.source;var f=e.tx,g=e.ty;a.texture.trim&&(f+=a.texture.trim.x-a.anchor.x*a.texture.trim.width,g+=a.texture.trim.y-a.anchor.y*a.texture.trim.height),16777215!==a.tint&&(a.cachedTint!==a.tint&&(a.cachedTint=a.tint,a.tintedTexture=PIXI.CanvasTinter.getTintedTexture(a,a.tint)),this._image=a.tintedTexture,this._pos.set(0)),d&&(f|=0,g|=0);var h=this.context;return this._alpha.prev=h.globalAlpha,h.save(),h.globalAlpha=this._alpha.current,b&&(this.op=b),h[this.smoothProperty]=a.texture.baseTexture.scaleMode===PIXI.scaleModes.LINEAR,h.setTransform(e.a,e.b,e.c,e.d,f,g),h.drawImage(this._image,this._pos.x,this._pos.y,this._size.x,this._size.y,-this._size.x*a.anchor.x,-this._size.y*a.anchor.y,this._size.x,this._size.y),h.restore(),h.globalAlpha=this._alpha.prev,this.dirty=!0,this},copyRect:function(a,b,c,d,e,f,g){return this.copy(a,b.x,b.y,b.width,b.height,c,d,b.width,b.height,0,0,0,1,1,e,f,g)},draw:function(a,b,c,d,e,f,g){return this.copy(a,null,null,null,null,b,c,d,e,null,null,null,null,null,null,f,g)},drawGroup:function(a,b,c){return a.total>0&&a.forEachExists(this.drawGroupProxy,this,b,c),this},drawGroupProxy:function(a,b,d){if(a.hasOwnProperty("texture")&&this.copyTransform(a,b,d),a.type===c.GROUP&&a.exists)this.drawGroup(a,b,d);else if(a.hasOwnProperty("children")&&a.children.length>0)for(var e=0;eb.width&&(e=b.width);var f=this.context;return f.fillStyle=f.createPattern(b,d),this._circle=new c.Circle(a.start.x,a.start.y,b.height),this._circle.circumferencePoint(a.angle-1.5707963267948966,!1,this._pos),f.save(),f.translate(this._pos.x,this._pos.y),f.rotate(a.angle),f.fillRect(0,0,e,b.height),f.restore(),this.dirty=!0,this}},render:function(){return!this.disableTextureUpload&&this.dirty&&(this.baseTexture.dirty(),this.dirty=!1),this},destroy:function(){this.frameData.destroy(),this.texture.destroy(!0),PIXI.CanvasPool.remove(this)},blendReset:function(){return this.op="source-over",this},blendSourceOver:function(){return this.op="source-over",this},blendSourceIn:function(){return this.op="source-in",this},blendSourceOut:function(){return this.op="source-out",this},blendSourceAtop:function(){return this.op="source-atop",this},blendDestinationOver:function(){return this.op="destination-over",this},blendDestinationIn:function(){return this.op="destination-in",this},blendDestinationOut:function(){return this.op="destination-out",this},blendDestinationAtop:function(){return this.op="destination-atop",this},blendXor:function(){return this.op="xor",this},blendAdd:function(){return this.op="lighter",this},blendMultiply:function(){return this.op="multiply",this},blendScreen:function(){return this.op="screen",this},blendOverlay:function(){return this.op="overlay",this},blendDarken:function(){return this.op="darken",this},blendLighten:function(){return this.op="lighten",this},blendColorDodge:function(){return this.op="color-dodge",this},blendColorBurn:function(){return this.op="color-burn",this},blendHardLight:function(){return this.op="hard-light",this},blendSoftLight:function(){return this.op="soft-light",this},blendDifference:function(){return this.op="difference",this},blendExclusion:function(){return this.op="exclusion",this},blendHue:function(){return this.op="hue",this},blendSaturation:function(){return this.op="saturation",this},blendColor:function(){return this.op="color",this},blendLuminosity:function(){return this.op="luminosity",this}},Object.defineProperty(c.BitmapData.prototype,"smoothed",{get:function(){c.Canvas.getSmoothingEnabled(this.context)},set:function(a){c.Canvas.setSmoothingEnabled(this.context,a)}}),Object.defineProperty(c.BitmapData.prototype,"op",{get:function(){return this.context.globalCompositeOperation},set:function(a){this.context.globalCompositeOperation=a}}),c.BitmapData.getTransform=function(a,b,c,d,e,f){return"number"!=typeof a&&(a=0),"number"!=typeof b&&(b=0),"number"!=typeof c&&(c=1),"number"!=typeof d&&(d=1),"number"!=typeof e&&(e=0),"number"!=typeof f&&(f=0),{sx:c,sy:d,scaleX:c,scaleY:d,skewX:e,skewY:f,translateX:a,translateY:b,tx:a,ty:b}},c.BitmapData.prototype.constructor=c.BitmapData,PIXI.Graphics=function(){PIXI.DisplayObjectContainer.call(this),this.renderable=!0,this.fillAlpha=1,this.lineWidth=0,this.lineColor=0,this.graphicsData=[],this.tint=16777215,this.blendMode=PIXI.blendModes.NORMAL, +this.currentPath=null,this._webGL=[],this.isMask=!1,this.boundsPadding=0,this._localBounds=new PIXI.Rectangle(0,0,1,1),this.dirty=!0,this.webGLDirty=!1,this.cachedSpriteDirty=!1},PIXI.Graphics.prototype=Object.create(PIXI.DisplayObjectContainer.prototype),PIXI.Graphics.prototype.constructor=PIXI.Graphics,PIXI.Graphics.prototype.lineStyle=function(a,b,c){return this.lineWidth=a||0,this.lineColor=b||0,this.lineAlpha=void 0===c?1:c,this.currentPath&&(this.currentPath.shape.points.length?this.drawShape(new PIXI.Polygon(this.currentPath.shape.points.slice(-2))):(this.currentPath.lineWidth=this.lineWidth,this.currentPath.lineColor=this.lineColor,this.currentPath.lineAlpha=this.lineAlpha)),this},PIXI.Graphics.prototype.moveTo=function(a,b){return this.drawShape(new PIXI.Polygon([a,b])),this},PIXI.Graphics.prototype.lineTo=function(a,b){return this.currentPath||this.moveTo(0,0),this.currentPath.shape.points.push(a,b),this.dirty=!0,this.updateLocalBounds(),this},PIXI.Graphics.prototype.quadraticCurveTo=function(a,b,c,d){this.currentPath?0===this.currentPath.shape.points.length&&(this.currentPath.shape.points=[0,0]):this.moveTo(0,0);var e,f,g=20,h=this.currentPath.shape.points;0===h.length&&this.moveTo(0,0);for(var i=h[h.length-2],j=h[h.length-1],k=0,l=1;g>=l;++l)k=l/g,e=i+(a-i)*k,f=j+(b-j)*k,h.push(e+(a+(c-a)*k-e)*k,f+(b+(d-b)*k-f)*k);return this.dirty=!0,this.updateLocalBounds(),this},PIXI.Graphics.prototype.bezierCurveTo=function(a,b,c,d,e,f){this.currentPath?0===this.currentPath.shape.points.length&&(this.currentPath.shape.points=[0,0]):this.moveTo(0,0);for(var g,h,i,j,k,l=20,m=this.currentPath.shape.points,n=m[m.length-2],o=m[m.length-1],p=0,q=1;l>=q;++q)p=q/l,g=1-p,h=g*g,i=h*g,j=p*p,k=j*p,m.push(i*n+3*h*p*a+3*g*j*c+k*e,i*o+3*h*p*b+3*g*j*d+k*f);return this.dirty=!0,this.updateLocalBounds(),this},PIXI.Graphics.prototype.arcTo=function(a,b,c,d,e){this.currentPath?0===this.currentPath.shape.points.length&&this.currentPath.shape.points.push(a,b):this.moveTo(a,b);var f=this.currentPath.shape.points,g=f[f.length-2],h=f[f.length-1],i=h-b,j=g-a,k=d-b,l=c-a,m=Math.abs(i*l-j*k);if(1e-8>m||0===e)f[f.length-2]===a&&f[f.length-1]===b||f.push(a,b);else{var n=i*i+j*j,o=k*k+l*l,p=i*k+j*l,q=e*Math.sqrt(n)/m,r=e*Math.sqrt(o)/m,s=q*p/n,t=r*p/o,u=q*l+r*j,v=q*k+r*i,w=j*(r+s),x=i*(r+s),y=l*(q+t),z=k*(q+t),A=Math.atan2(x-v,w-u),B=Math.atan2(z-v,y-u);this.arc(u+a,v+b,e,A,B,j*k>l*i)}return this.dirty=!0,this.updateLocalBounds(),this},PIXI.Graphics.prototype.arc=function(a,b,c,d,e,f,g){if(d===e)return this;void 0===f&&(f=!1),void 0===g&&(g=40),!f&&d>=e?e+=2*Math.PI:f&&e>=d&&(d+=2*Math.PI);var h=f?-1*(d-e):e-d,i=Math.ceil(Math.abs(h)/(2*Math.PI))*g;if(0===h)return this;var j=a+Math.cos(d)*c,k=b+Math.sin(d)*c;f&&this.filling?this.moveTo(a,b):this.moveTo(j,k);for(var l=this.currentPath.shape.points,m=h/(2*i),n=2*m,o=Math.cos(m),p=Math.sin(m),q=i-1,r=q%1/q,s=0;q>=s;s++){var t=s+r*s,u=m+d+n*t,v=Math.cos(u),w=-Math.sin(u);l.push((o*v+p*w)*c+a,(o*-w+p*v)*c+b)}return this.dirty=!0,this.updateLocalBounds(),this},PIXI.Graphics.prototype.beginFill=function(a,b){return this.filling=!0,this.fillColor=a||0,this.fillAlpha=void 0===b?1:b,this.currentPath&&this.currentPath.shape.points.length<=2&&(this.currentPath.fill=this.filling,this.currentPath.fillColor=this.fillColor,this.currentPath.fillAlpha=this.fillAlpha),this},PIXI.Graphics.prototype.endFill=function(){return this.filling=!1,this.fillColor=null,this.fillAlpha=1,this},PIXI.Graphics.prototype.drawRect=function(a,b,c,d){return this.drawShape(new PIXI.Rectangle(a,b,c,d)),this},PIXI.Graphics.prototype.drawRoundedRect=function(a,b,c,d,e){return this.drawShape(new PIXI.RoundedRectangle(a,b,c,d,e)),this},PIXI.Graphics.prototype.drawCircle=function(a,b,c){return this.drawShape(new PIXI.Circle(a,b,c)),this},PIXI.Graphics.prototype.drawEllipse=function(a,b,c,d){return this.drawShape(new PIXI.Ellipse(a,b,c,d)),this},PIXI.Graphics.prototype.drawPolygon=function(a){(a instanceof c.Polygon||a instanceof PIXI.Polygon)&&(a=a.points);var b=a;if(!Array.isArray(b)){b=new Array(arguments.length);for(var d=0;dp?p:x,x=x>r?r:x,x=x>t?t:x,y=y>q?q:y,y=y>s?s:y,y=y>u?u:y,v=p>v?p:v,v=r>v?r:v,v=t>v?t:v,w=q>w?q:w,w=s>w?s:w,w=u>w?u:w,this._bounds.x=x,this._bounds.width=v-x,this._bounds.y=y,this._bounds.height=w-y,this._currentBounds=this._bounds}return this._currentBounds},PIXI.Graphics.prototype.containsPoint=function(a){this.worldTransform.applyInverse(a,tempPoint);for(var b=this.graphicsData,c=0;ch?h:a,b=h+j>b?h+j:b,d=d>i?i:d,e=i+k>e?i+k:e;else if(n===PIXI.Graphics.CIRC)h=f.x,i=f.y,j=f.radius+o/2,k=f.radius+o/2,a=a>h-j?h-j:a,b=h+j>b?h+j:b,d=d>i-k?i-k:d,e=i+k>e?i+k:e;else if(n===PIXI.Graphics.ELIP)h=f.x,i=f.y,j=f.width+o/2,k=f.height+o/2,a=a>h-j?h-j:a,b=h+j>b?h+j:b,d=d>i-k?i-k:d,e=i+k>e?i+k:e;else{g=f.points;for(var p=0;ph-o?h-o:a,b=h+o>b?h+o:b,d=d>i-o?i-o:d,e=i+o>e?i+o:e}}else a=0,b=0,d=0,e=0;var q=this.boundsPadding;this._localBounds.x=a-q,this._localBounds.width=b-a+2*q,this._localBounds.y=d-q,this._localBounds.height=e-d+2*q},PIXI.Graphics.prototype._generateCachedSprite=function(){var a=this.getLocalBounds();if(this._cachedSprite)this._cachedSprite.buffer.resize(a.width,a.height);else{var b=new PIXI.CanvasBuffer(a.width,a.height),c=PIXI.Texture.fromCanvas(b.canvas);this._cachedSprite=new PIXI.Sprite(c),this._cachedSprite.buffer=b,this._cachedSprite.worldTransform=this.worldTransform}this._cachedSprite.anchor.x=-(a.x/a.width),this._cachedSprite.anchor.y=-(a.y/a.height),this._cachedSprite.buffer.context.translate(-a.x,-a.y),this.worldAlpha=1,PIXI.CanvasGraphics.renderGraphics(this,this._cachedSprite.buffer.context),this._cachedSprite.alpha=this.alpha},PIXI.Graphics.prototype.updateCachedSpriteTexture=function(){var a=this._cachedSprite,b=a.texture,c=a.buffer.canvas;b.baseTexture.width=c.width,b.baseTexture.height=c.height,b.crop.width=b.frame.width=c.width,b.crop.height=b.frame.height=c.height,a._width=c.width,a._height=c.height,b.baseTexture.dirty()},PIXI.Graphics.prototype.destroyCachedSprite=function(){this._cachedSprite.texture.destroy(!0),this._cachedSprite=null},PIXI.Graphics.prototype.drawShape=function(a){this.currentPath&&this.currentPath.shape.points.length<=2&&this.graphicsData.pop(),this.currentPath=null,a instanceof c.Polygon&&(a=a.clone(),a.flatten());var b=new PIXI.GraphicsData(this.lineWidth,this.lineColor,this.lineAlpha,this.fillColor,this.fillAlpha,this.filling,a);return this.graphicsData.push(b),b.type===PIXI.Graphics.POLY&&(b.shape.closed=this.filling,this.currentPath=b),this.dirty=!0,this.updateLocalBounds(),b},Object.defineProperty(PIXI.Graphics.prototype,"cacheAsBitmap",{get:function(){return this._cacheAsBitmap},set:function(a){this._cacheAsBitmap=a,this._cacheAsBitmap?this._generateCachedSprite():this.destroyCachedSprite(),this.dirty=!0,this.webGLDirty=!0}}),PIXI.GraphicsData=function(a,b,c,d,e,f,g){this.lineWidth=a,this.lineColor=b,this.lineAlpha=c,this._lineTint=b,this.fillColor=d,this.fillAlpha=e,this._fillTint=d,this.fill=f,this.shape=g,this.type=g.type},PIXI.GraphicsData.prototype.constructor=PIXI.GraphicsData,PIXI.GraphicsData.prototype.clone=function(){return new GraphicsData(this.lineWidth,this.lineColor,this.lineAlpha,this.fillColor,this.fillAlpha,this.fill,this.shape)},PIXI.PolyK={},PIXI.PolyK.Triangulate=function(a){var b=!0,c=a.length>>1;if(3>c)return[];for(var d=[],e=[],f=0;c>f;f++)e.push(f);f=0;for(var g=c;g>3;){var h=e[(f+0)%g],i=e[(f+1)%g],j=e[(f+2)%g],k=a[2*h],l=a[2*h+1],m=a[2*i],n=a[2*i+1],o=a[2*j],p=a[2*j+1],q=!1;if(PIXI.PolyK._convex(k,l,m,n,o,p,b)){q=!0;for(var r=0;g>r;r++){var s=e[r];if(s!==h&&s!==i&&s!==j&&PIXI.PolyK._PointInTriangle(a[2*s],a[2*s+1],k,l,m,n,o,p)){q=!1;break}}}if(q)d.push(h,i,j),e.splice((f+1)%g,1),g--,f=0;else if(f++>3*g){if(!b)return null;for(d=[],e=[],f=0;c>f;f++)e.push(f);f=0,g=c,b=!1}}return d.push(e[0],e[1],e[2]),d},PIXI.PolyK._PointInTriangle=function(a,b,c,d,e,f,g,h){var i=g-c,j=h-d,k=e-c,l=f-d,m=a-c,n=b-d,o=i*i+j*j,p=i*k+j*l,q=i*m+j*n,r=k*k+l*l,s=k*m+l*n,t=1/(o*r-p*p),u=(r*q-p*s)*t,v=(o*s-p*q)*t;return u>=0&&v>=0&&1>u+v},PIXI.PolyK._convex=function(a,b,c,d,e,f,g){return(b-d)*(e-c)+(c-a)*(f-d)>=0===g},PIXI.EarCut={},PIXI.EarCut.Triangulate=function(a,b,c){c=c||2;var d=b&&b.length,e=d?b[0]*c:a.length,f=PIXI.EarCut.linkedList(a,0,e,c,!0),g=[];if(!f)return g;var h,i,j,k,l,m,n;if(d&&(f=PIXI.EarCut.eliminateHoles(a,b,f,c)),a.length>80*c){h=j=a[0],i=k=a[1];for(var o=c;e>o;o+=c)l=a[o],m=a[o+1],h>l&&(h=l),i>m&&(i=m),l>j&&(j=l),m>k&&(k=m);n=Math.max(j-h,k-i)}return PIXI.EarCut.earcutLinked(f,g,c,h,i,n),g},PIXI.EarCut.linkedList=function(a,b,c,d,e){var f,g,h,i=0;for(f=b,g=c-d;c>f;f+=d)i+=(a[g]-a[f])*(a[f+1]+a[g+1]),g=f;if(e===i>0)for(f=b;c>f;f+=d)h=PIXI.EarCut.insertNode(f,a[f],a[f+1],h);else for(f=c-d;f>=b;f-=d)h=PIXI.EarCut.insertNode(f,a[f],a[f+1],h);return h},PIXI.EarCut.filterPoints=function(a,b){if(!a)return a;b||(b=a);var c,d=a;do if(c=!1,d.steiner||!PIXI.EarCut.equals(d,d.next)&&0!==PIXI.EarCut.area(d.prev,d,d.next))d=d.next;else{if(PIXI.EarCut.removeNode(d),d=b=d.prev,d===d.next)return null;c=!0}while(c||d!==b);return b},PIXI.EarCut.earcutLinked=function(a,b,c,d,e,f,g){if(a){!g&&f&&PIXI.EarCut.indexCurve(a,d,e,f);for(var h,i,j=a;a.prev!==a.next;)if(h=a.prev,i=a.next,f?PIXI.EarCut.isEarHashed(a,d,e,f):PIXI.EarCut.isEar(a))b.push(h.i/c),b.push(a.i/c),b.push(i.i/c),PIXI.EarCut.removeNode(a),a=i.next,j=i.next;else if(a=i,a===j){g?1===g?(a=PIXI.EarCut.cureLocalIntersections(a,b,c),PIXI.EarCut.earcutLinked(a,b,c,d,e,f,2)):2===g&&PIXI.EarCut.splitEarcut(a,b,c,d,e,f):PIXI.EarCut.earcutLinked(PIXI.EarCut.filterPoints(a),b,c,d,e,f,1);break}}},PIXI.EarCut.isEar=function(a){var b=a.prev,c=a,d=a.next;if(PIXI.EarCut.area(b,c,d)>=0)return!1;for(var e=a.next.next;e!==a.prev;){if(PIXI.EarCut.pointInTriangle(b.x,b.y,c.x,c.y,d.x,d.y,e.x,e.y)&&PIXI.EarCut.area(e.prev,e,e.next)>=0)return!1;e=e.next}return!0},PIXI.EarCut.isEarHashed=function(a,b,c,d){var e=a.prev,f=a,g=a.next;if(PIXI.EarCut.area(e,f,g)>=0)return!1;for(var h=e.xf.x?e.x>g.x?e.x:g.x:f.x>g.x?f.x:g.x,k=e.y>f.y?e.y>g.y?e.y:g.y:f.y>g.y?f.y:g.y,l=PIXI.EarCut.zOrder(h,i,b,c,d),m=PIXI.EarCut.zOrder(j,k,b,c,d),n=a.nextZ;n&&n.z<=m;){if(n!==a.prev&&n!==a.next&&PIXI.EarCut.pointInTriangle(e.x,e.y,f.x,f.y,g.x,g.y,n.x,n.y)&&PIXI.EarCut.area(n.prev,n,n.next)>=0)return!1;n=n.nextZ}for(n=a.prevZ;n&&n.z>=l;){if(n!==a.prev&&n!==a.next&&PIXI.EarCut.pointInTriangle(e.x,e.y,f.x,f.y,g.x,g.y,n.x,n.y)&&PIXI.EarCut.area(n.prev,n,n.next)>=0)return!1;n=n.prevZ}return!0},PIXI.EarCut.cureLocalIntersections=function(a,b,c){var d=a;do{var e=d.prev,f=d.next.next;PIXI.EarCut.intersects(e,d,d.next,f)&&PIXI.EarCut.locallyInside(e,f)&&PIXI.EarCut.locallyInside(f,e)&&(b.push(e.i/c),b.push(d.i/c),b.push(f.i/c),PIXI.EarCut.removeNode(d),PIXI.EarCut.removeNode(d.next),d=a=f),d=d.next}while(d!==a);return d},PIXI.EarCut.splitEarcut=function(a,b,c,d,e,f){var g=a;do{for(var h=g.next.next;h!==g.prev;){if(g.i!==h.i&&PIXI.EarCut.isValidDiagonal(g,h)){var i=PIXI.EarCut.splitPolygon(g,h);return g=PIXI.EarCut.filterPoints(g,g.next),i=PIXI.EarCut.filterPoints(i,i.next),PIXI.EarCut.earcutLinked(g,b,c,d,e,f),void PIXI.EarCut.earcutLinked(i,b,c,d,e,f)}h=h.next}g=g.next}while(g!==a)},PIXI.EarCut.eliminateHoles=function(a,b,c,d){var e,f,g,h,i,j=[];for(e=0,f=b.length;f>e;e++)g=b[e]*d,h=f-1>e?b[e+1]*d:a.length,i=PIXI.EarCut.linkedList(a,g,h,d,!1),i===i.next&&(i.steiner=!0),j.push(PIXI.EarCut.getLeftmost(i));for(j.sort(compareX),e=0;e=d.next.y){var h=d.x+(f-d.y)*(d.next.x-d.x)/(d.next.y-d.y);e>=h&&h>g&&(g=h,c=d.x=d.x&&d.x>=c.x&&PIXI.EarCut.pointInTriangle(fi||i===k&&d.x>c.x)&&PIXI.EarCut.locallyInside(d,a)&&(c=d,k=i)),d=d.next;return c},PIXI.EarCut.indexCurve=function(a,b,c,d){var e=a;do null===e.z&&(e.z=PIXI.EarCut.zOrder(e.x,e.y,b,c,d)),e.prevZ=e.prev,e.nextZ=e.next,e=e.next;while(e!==a);e.prevZ.nextZ=null,e.prevZ=null,PIXI.EarCut.sortLinked(e)},PIXI.EarCut.sortLinked=function(a){var b,c,d,e,f,g,h,i,j=1;do{for(c=a,a=null,f=null,g=0;c;){for(g++,d=c,h=0,b=0;j>b&&(h++,d=d.nextZ,d);b++);for(i=j;h>0||i>0&&d;)0===h?(e=d,d=d.nextZ,i--):0!==i&&d?c.z<=d.z?(e=c,c=c.nextZ,h--):(e=d,d=d.nextZ,i--):(e=c,c=c.nextZ,h--),f?f.nextZ=e:a=e,e.prevZ=f,f=e;c=d}f.nextZ=null,j*=2}while(g>1);return a},PIXI.EarCut.zOrder=function(a,b,c,d,e){return a=32767*(a-c)/e,b=32767*(b-d)/e,a=16711935&(a|a<<8),a=252645135&(a|a<<4),a=858993459&(a|a<<2),a=1431655765&(a|a<<1),b=16711935&(b|b<<8),b=252645135&(b|b<<4),b=858993459&(b|b<<2),b=1431655765&(b|b<<1),a|b<<1},PIXI.EarCut.getLeftmost=function(a){var b=a,c=a;do b.x=0&&(a-g)*(d-h)-(c-g)*(b-h)>=0&&(c-g)*(f-h)-(e-g)*(d-h)>=0},PIXI.EarCut.isValidDiagonal=function(a,b){return PIXI.EarCut.equals(a,b)||a.next.i!==b.i&&a.prev.i!==b.i&&!PIXI.EarCut.intersectsPolygon(a,b)&&PIXI.EarCut.locallyInside(a,b)&&PIXI.EarCut.locallyInside(b,a)&&PIXI.EarCut.middleInside(a,b)},PIXI.EarCut.area=function(a,b,c){return(b.y-a.y)*(c.x-b.x)-(b.x-a.x)*(c.y-b.y)},PIXI.EarCut.equals=function(a,b){return a.x===b.x&&a.y===b.y},PIXI.EarCut.intersects=function(a,b,c,d){return PIXI.EarCut.area(a,b,c)>0!=PIXI.EarCut.area(a,b,d)>0&&PIXI.EarCut.area(c,d,a)>0!=PIXI.EarCut.area(c,d,b)>0},PIXI.EarCut.intersectsPolygon=function(a,b){var c=a;do{if(c.i!==a.i&&c.next.i!==a.i&&c.i!==b.i&&c.next.i!==b.i&&PIXI.EarCut.intersects(c,c.next,a,b))return!0;c=c.next}while(c!==a);return!1},PIXI.EarCut.locallyInside=function(a,b){return PIXI.EarCut.area(a.prev,a,a.next)<0?PIXI.EarCut.area(a,b,a.next)>=0&&PIXI.EarCut.area(a,a.prev,b)>=0:PIXI.EarCut.area(a,b,a.prev)<0||PIXI.EarCut.area(a,a.next,b)<0},PIXI.EarCut.middleInside=function(a,b){var c=a,d=!1,e=(a.x+b.x)/2,f=(a.y+b.y)/2;do c.y>f!=c.next.y>f&&e<(c.next.x-c.x)*(f-c.y)/(c.next.y-c.y)+c.x&&(d=!d),c=c.next;while(c!==a);return d},PIXI.EarCut.splitPolygon=function(a,b){var c=new PIXI.EarCut.Node(a.i,a.x,a.y),d=new PIXI.EarCut.Node(b.i,b.x,b.y),e=a.next,f=b.prev;return a.next=b,b.prev=a,c.next=e,e.prev=c,d.next=c,c.prev=d,f.next=d,d.prev=f,d},PIXI.EarCut.insertNode=function(a,b,c,d){var e=new PIXI.EarCut.Node(a,b,c);return d?(e.next=d.next,e.prev=d,d.next.prev=e,d.next=e):(e.prev=e,e.next=e),e},PIXI.EarCut.removeNode=function(a){a.next.prev=a.prev,a.prev.next=a.next,a.prevZ&&(a.prevZ.nextZ=a.nextZ),a.nextZ&&(a.nextZ.prevZ=a.prevZ)},PIXI.EarCut.Node=function(a,b,c){this.i=a,this.x=b,this.y=c,this.prev=null,this.next=null,this.z=null,this.prevZ=null,this.nextZ=null,this.steiner=!1},PIXI.WebGLGraphics=function(){},PIXI.WebGLGraphics.stencilBufferLimit=6,PIXI.WebGLGraphics.renderGraphics=function(a,b){var c,d=b.gl,e=b.projection,f=b.offset,g=b.shaderManager.primitiveShader;a.dirty&&PIXI.WebGLGraphics.updateGraphics(a,d);for(var h=a._webGL[d.id],i=0;i=PIXI.WebGLGraphics.stencilBufferLimit)if(g.points.length<2*PIXI.WebGLGraphics.stencilBufferLimit){f=PIXI.WebGLGraphics.switchMode(c,0);var h=PIXI.WebGLGraphics.buildPoly(g,f);h||(f=PIXI.WebGLGraphics.switchMode(c,1),PIXI.WebGLGraphics.buildComplexPoly(g,f))}else f=PIXI.WebGLGraphics.switchMode(c,1),PIXI.WebGLGraphics.buildComplexPoly(g,f);g.lineWidth>0&&(f=PIXI.WebGLGraphics.switchMode(c,0),PIXI.WebGLGraphics.buildLine(g,f))}else f=PIXI.WebGLGraphics.switchMode(c,0),g.type===PIXI.Graphics.RECT?PIXI.WebGLGraphics.buildRectangle(g,f):g.type===PIXI.Graphics.CIRC||g.type===PIXI.Graphics.ELIP?PIXI.WebGLGraphics.buildCircle(g,f):g.type===PIXI.Graphics.RREC&&PIXI.WebGLGraphics.buildRoundedRectangle(g,f);c.lastIndex++}for(d=0;d=q;q++)p=q/n,h=g(a,c,p),i=g(b,d,p),j=g(c,e,p),k=g(d,f,p),l=g(h,j,p),m=g(i,k,p),o.push(l,m);return o},PIXI.WebGLGraphics.buildCircle=function(a,b){var c,d,e=a.shape,f=e.x,g=e.y;a.type===PIXI.Graphics.CIRC?(c=e.radius,d=e.radius):(c=e.width,d=e.height);var h=40,i=2*Math.PI/h,j=0;if(a.fill){var k=PIXI.hex2rgb(a.fillColor),l=a.fillAlpha,m=k[0]*l,n=k[1]*l,o=k[2]*l,p=b.points,q=b.indices,r=p.length/6;for(q.push(r),j=0;h+1>j;j++)p.push(f,g,m,n,o,l),p.push(f+Math.sin(i*j)*c,g+Math.cos(i*j)*d,m,n,o,l),q.push(r++,r++);q.push(r-1)}if(a.lineWidth){var s=a.points;for(a.points=[],j=0;h+1>j;j++)a.points.push(f+Math.sin(i*j)*c,g+Math.cos(i*j)*d);PIXI.WebGLGraphics.buildLine(a,b),a.points=s}},PIXI.WebGLGraphics.buildLine=function(a,b){var c=0,d=a.points;if(0!==d.length){if(a.lineWidth%2)for(c=0;cc;c++)k=d[2*(c-1)],l=d[2*(c-1)+1],m=d[2*c],n=d[2*c+1],o=d[2*(c+1)],p=d[2*(c+1)+1],q=-(l-n),r=k-m,E=Math.sqrt(q*q+r*r),q/=E,r/=E,q*=K,r*=K,s=-(n-p),t=m-o,E=Math.sqrt(s*s+t*t),s/=E,t/=E,s*=K,t*=K,w=-r+l-(-r+n),x=-q+m-(-q+k),y=(-q+k)*(-r+n)-(-q+m)*(-r+l),z=-t+p-(-t+n),A=-s+m-(-s+o),B=(-s+o)*(-t+n)-(-s+m)*(-t+p),C=w*A-z*x,Math.abs(C)<.1?(C+=10.1,F.push(m-q,n-r,N,O,P,M),F.push(m+q,n+r,N,O,P,M)):(i=(x*B-A*y)/C,j=(z*y-w*B)/C,D=(i-m)*(i-m)+(j-n)+(j-n),D>19600?(u=q-s,v=r-t,E=Math.sqrt(u*u+v*v),u/=E,v/=E,u*=K,v*=K,F.push(m-u,n-v),F.push(N,O,P,M),F.push(m+u,n+v),F.push(N,O,P,M),F.push(m-u,n-v),F.push(N,O,P,M),I++):(F.push(i,j),F.push(N,O,P,M),F.push(m-(i-m),n-(j-n)),F.push(N,O,P,M)));for(k=d[2*(H-2)],l=d[2*(H-2)+1],m=d[2*(H-1)],n=d[2*(H-1)+1],q=-(l-n),r=k-m,E=Math.sqrt(q*q+r*r),q/=E,r/=E,q*=K,r*=K,F.push(m-q,n-r),F.push(N,O,P,M),F.push(m+q,n+r),F.push(N,O,P,M),G.push(J),c=0;I>c;c++)G.push(J++);G.push(J-1)}},PIXI.WebGLGraphics.buildComplexPoly=function(a,b){var c=a.points.slice();if(!(c.length<6)){var d=b.indices;b.points=c,b.alpha=a.fillAlpha,b.color=PIXI.hex2rgb(a.fillColor);for(var e,f,g=1/0,h=-(1/0),i=1/0,j=-(1/0),k=0;ke?e:g,h=e>h?e:h,i=i>f?f:i,j=f>j?f:j;c.push(g,i,h,i,h,j,g,j);var l=c.length/2;for(k=0;l>k;k++)d.push(k)}},PIXI.WebGLGraphics.buildPoly=function(a,b){var c=a.points;if(!(c.length<6)){var d=b.points,e=b.indices,f=c.length/2,g=PIXI.hex2rgb(a.fillColor),h=a.fillAlpha,i=g[0]*h,j=g[1]*h,k=g[2]*h,l=PIXI.EarCut.Triangulate(c,null,2);if(!l)return!1;var m=d.length/6,n=0;for(n=0;nn;n++)d.push(c[2*n],c[2*n+1],i,j,k,h);return!0}},PIXI.WebGLGraphics.graphicsDataPool=[],PIXI.WebGLGraphicsData=function(a){this.gl=a,this.color=[0,0,0],this.points=[],this.indices=[],this.buffer=a.createBuffer(),this.indexBuffer=a.createBuffer(),this.mode=1,this.alpha=1,this.dirty=!0},PIXI.WebGLGraphicsData.prototype.reset=function(){this.points=[],this.indices=[]},PIXI.WebGLGraphicsData.prototype.upload=function(){var a=this.gl;this.glPoints=new PIXI.Float32Array(this.points),a.bindBuffer(a.ARRAY_BUFFER,this.buffer),a.bufferData(a.ARRAY_BUFFER,this.glPoints,a.STATIC_DRAW),this.glIndicies=new PIXI.Uint16Array(this.indices),a.bindBuffer(a.ELEMENT_ARRAY_BUFFER,this.indexBuffer),a.bufferData(a.ELEMENT_ARRAY_BUFFER,this.glIndicies,a.STATIC_DRAW),this.dirty=!1},PIXI.CanvasGraphics=function(){},PIXI.CanvasGraphics.renderGraphics=function(a,b){var c=a.worldAlpha;a.dirty&&(this.updateGraphicsTint(a),a.dirty=!1);for(var d=0;dA?A:z,b.beginPath(),b.moveTo(v,w+z),b.lineTo(v,w+y-z),b.quadraticCurveTo(v,w+y,v+z,w+y),b.lineTo(v+x-z,w+y),b.quadraticCurveTo(v+x,w+y,v+x,w+y-z),b.lineTo(v+x,w+z),b.quadraticCurveTo(v+x,w,v+x-z,w),b.lineTo(v+z,w),b.quadraticCurveTo(v,w,v,w+z),b.closePath(),(e.fillColor||0===e.fillColor)&&(b.globalAlpha=e.fillAlpha*c,b.fillStyle="#"+("00000"+(0|g).toString(16)).substr(-6),b.fill()),e.lineWidth&&(b.globalAlpha=e.lineAlpha*c,b.strokeStyle="#"+("00000"+(0|h).toString(16)).substr(-6),b.stroke())}}},PIXI.CanvasGraphics.renderGraphicsMask=function(a,b){var c=a.graphicsData.length;if(0!==c){b.beginPath();for(var d=0;c>d;d++){var e=a.graphicsData[d],f=e.shape;if(e.type===PIXI.Graphics.POLY){var g=f.points;b.moveTo(g[0],g[1]);for(var h=1;hy?y:x,b.moveTo(t,u+x),b.lineTo(t,u+w-x),b.quadraticCurveTo(t,u+w,t+x,u+w),b.lineTo(t+v-x,u+w),b.quadraticCurveTo(t+v,u+w,t+v,u+w-x),b.lineTo(t+v,u+x),b.quadraticCurveTo(t+v,u,t+v-x,u),b.lineTo(t+x,u),b.quadraticCurveTo(t,u,t,u+x),b.closePath()}}}},PIXI.CanvasGraphics.updateGraphicsTint=function(a){if(16777215!==a.tint)for(var b=(a.tint>>16&255)/255,c=(a.tint>>8&255)/255,d=(255&a.tint)/255,e=0;e>16&255)/255*b*255<<16)+((g>>8&255)/255*c*255<<8)+(255&g)/255*d*255,f._lineTint=((h>>16&255)/255*b*255<<16)+((h>>8&255)/255*c*255<<8)+(255&h)/255*d*255}},c.Graphics=function(a,b,d){void 0===b&&(b=0),void 0===d&&(d=0),this.type=c.GRAPHICS,this.physicsType=c.SPRITE,this.anchor=new c.Point,PIXI.Graphics.call(this),c.Component.Core.init.call(this,a,b,d,"",null)},c.Graphics.prototype=Object.create(PIXI.Graphics.prototype),c.Graphics.prototype.constructor=c.Graphics,c.Component.Core.install.call(c.Graphics.prototype,["Angle","AutoCull","Bounds","Destroy","FixedToCamera","InputEnabled","InWorld","LifeSpan","PhysicsBody","Reset"]),c.Graphics.prototype.preUpdatePhysics=c.Component.PhysicsBody.preUpdate,c.Graphics.prototype.preUpdateLifeSpan=c.Component.LifeSpan.preUpdate,c.Graphics.prototype.preUpdateInWorld=c.Component.InWorld.preUpdate,c.Graphics.prototype.preUpdateCore=c.Component.Core.preUpdate,c.Graphics.prototype.preUpdate=function(){return this.preUpdatePhysics()&&this.preUpdateLifeSpan()&&this.preUpdateInWorld()?this.preUpdateCore():!1},c.Graphics.prototype.destroy=function(a){this.clear(),c.Component.Destroy.prototype.destroy.call(this,a)},c.Graphics.prototype.drawTriangle=function(a,b){ +void 0===b&&(b=!1);var d=new c.Polygon(a);if(b){var e=new c.Point(this.game.camera.x-a[0].x,this.game.camera.y-a[0].y),f=new c.Point(a[1].x-a[0].x,a[1].y-a[0].y),g=new c.Point(a[1].x-a[2].x,a[1].y-a[2].y),h=g.cross(f);e.dot(h)>0&&this.drawPolygon(d)}else this.drawPolygon(d)},c.Graphics.prototype.drawTriangles=function(a,b,d){void 0===d&&(d=!1);var e,f=new c.Point,g=new c.Point,h=new c.Point,i=[];if(b)if(a[0]instanceof c.Point)for(e=0;e0&&this.style.maxLinesh;h++){if(0===c){var i=this.style.strokeThickness+this.padding.x;i+=this.colors.length>0||this.strokeColors.length>0||this.fontWeights.length>0||this.fontStyles.length>0?this.measureLine(b[h]):this.context.measureText(b[h]).width,this.style.wordWrap&&(i-=this.context.measureText(" ").width)}else{var j=b[h].split(/(?:\t)/),i=this.padding.x+this.style.strokeThickness;if(Array.isArray(c))for(var k=0,l=0;l0||this.strokeColors.length>0||this.fontWeights.length>0||this.fontStyles.length>0?this.measureLine(j[l]):Math.ceil(this.context.measureText(j[l]).width),l>0&&(k+=c[l-1]),i=k+m}else for(var l=0;l0||this.strokeColors.length>0||this.fontWeights.length>0||this.fontStyles.length>0?this.measureLine(j[l]):Math.ceil(this.context.measureText(j[l]).width);var n=this.game.math.snapToCeil(i,c)-i;i+=n}}d[h]=Math.ceil(i),e=Math.max(e,d[h])}this.canvas.width=e*this._res;var o=f.fontSize+this.style.strokeThickness+this.padding.y,p=o*g,q=this._lineSpacing;0>q&&Math.abs(q)>o&&(q=-o),0!==q&&(p+=q>0?q*b.length:q*(b.length-1)),this.canvas.height=p*this._res,this.context.scale(this._res,this._res),navigator.isCocoonJS&&this.context.clearRect(0,0,this.canvas.width,this.canvas.height),this.style.backgroundColor&&(this.context.fillStyle=this.style.backgroundColor,this.context.fillRect(0,0,this.canvas.width,this.canvas.height)),this.context.fillStyle=this.style.fill,this.context.font=this.style.font,this.context.strokeStyle=this.style.stroke,this.context.textBaseline="alphabetic",this.context.lineWidth=this.style.strokeThickness,this.context.lineCap="round",this.context.lineJoin="round";var r,s;for(this._charCount=0,h=0;g>h;h++)r=this.style.strokeThickness/2,s=this.style.strokeThickness/2+h*o+f.ascent,h>0&&(s+=q*h),"right"===this.style.align?r+=e-d[h]:"center"===this.style.align&&(r+=(e-d[h])/2),this.autoRound&&(r=Math.round(r),s=Math.round(s)),this.colors.length>0||this.strokeColors.length>0||this.fontWeights.length>0||this.fontStyles.length>0?this.updateLine(b[h],r,s):(this.style.stroke&&this.style.strokeThickness&&(this.updateShadow(this.style.shadowStroke),0===c?this.context.strokeText(b[h],r,s):this.renderTabLine(b[h],r,s,!1)),this.style.fill&&(this.updateShadow(this.style.shadowFill),0===c?this.context.fillText(b[h],r,s):this.renderTabLine(b[h],r,s,!0)));this.updateTexture()},c.Text.prototype.renderTabLine=function(a,b,c,d){var e=a.split(/(?:\t)/),f=this.style.tabs,g=0;if(Array.isArray(f))for(var h=0,i=0;i0&&(h+=f[i-1]),g=b+h,d?this.context.fillText(e[i],g,c):this.context.strokeText(e[i],g,c);else for(var i=0;i0||this.fontStyles.length>0){var e=this.fontToComponents(this.context.font);this.fontStyles[this._charCount]&&(e.fontStyle=this.fontStyles[this._charCount]),this.fontWeights[this._charCount]&&(e.fontWeight=this.fontWeights[this._charCount]),this.context.font=this.componentsToFont(e)}this.style.stroke&&this.style.strokeThickness&&(this.strokeColors[this._charCount]&&(this.context.strokeStyle=this.strokeColors[this._charCount]),this.updateShadow(this.style.shadowStroke)),this.style.fill&&(this.colors[this._charCount]&&(this.context.fillStyle=this.colors[this._charCount]),this.updateShadow(this.style.shadowFill)),b+=this.context.measureText(d).width,this._charCount++}return Math.ceil(b)},c.Text.prototype.updateLine=function(a,b,c){for(var d=0;d0||this.fontStyles.length>0){var f=this.fontToComponents(this.context.font);this.fontStyles[this._charCount]&&(f.fontStyle=this.fontStyles[this._charCount]),this.fontWeights[this._charCount]&&(f.fontWeight=this.fontWeights[this._charCount]),this.context.font=this.componentsToFont(f)}this.style.stroke&&this.style.strokeThickness&&(this.strokeColors[this._charCount]&&(this.context.strokeStyle=this.strokeColors[this._charCount]),this.updateShadow(this.style.shadowStroke),this.context.strokeText(e,b,c)),this.style.fill&&(this.colors[this._charCount]&&(this.context.fillStyle=this.colors[this._charCount]),this.updateShadow(this.style.shadowFill),this.context.fillText(e,b,c)),b+=this.context.measureText(e).width,this._charCount++}},c.Text.prototype.clearColors=function(){return this.colors=[],this.strokeColors=[],this.dirty=!0,this},c.Text.prototype.clearFontValues=function(){return this.fontStyles=[],this.fontWeights=[],this.dirty=!0,this},c.Text.prototype.addColor=function(a,b){return this.colors[b]=a,this.dirty=!0,this},c.Text.prototype.addStrokeColor=function(a,b){return this.strokeColors[b]=a,this.dirty=!0,this},c.Text.prototype.addFontStyle=function(a,b){return this.fontStyles[b]=a,this.dirty=!0,this},c.Text.prototype.addFontWeight=function(a,b){return this.fontWeights[b]=a,this.dirty=!0,this},c.Text.prototype.precalculateWordWrap=function(a){this.texture.baseTexture.resolution=this._res,this.context.font=this.style.font;var b=this.runWordWrap(a);return b.split(/(?:\r\n|\r|\n)/)},c.Text.prototype.runWordWrap=function(a){return this.useAdvancedWrap?this.advancedWordWrap(a):this.basicWordWrap(a)},c.Text.prototype.advancedWordWrap=function(a){for(var b=this.context,c=this.style.wordWrapWidth,d="",e=a.replace(/ +/gi," ").split(/\r?\n/gi),f=e.length,g=0;f>g;g++){var h=e[g],i="";h=h.replace(/^ *|\s*$/gi,"");var j=b.measureText(h).width;if(c>j)d+=h+"\n";else{for(var k=c,l=h.split(" "),m=0;mk){if(0===m){for(var q=o;q.length&&(q=q.slice(0,-1),p=b.measureText(q).width,!(k>=p)););if(!q.length)throw new Error("This text's wordWrapWidth setting is less than a single character!");var r=n.substr(q.length);l[m]=r,i+=q}var s=l[m].length?m:m+1,t=l.slice(s).join(" ").replace(/[ \n]*$/gi,"");e[g+1]=t+" "+(e[g+1]||""),f=e.length;break}i+=o,k-=p}d+=i.replace(/[ \n]*$/gi,"")+"\n"}}return d=d.replace(/[\s|\n]*$/gi,"")},c.Text.prototype.basicWordWrap=function(a){for(var b="",c=a.split("\n"),d=0;de?(g>0&&(b+="\n"),b+=f[g]+" ",e=this.style.wordWrapWidth-h):(e-=i,b+=f[g]+" ")}dd&&(this.style.wordWrapWidth=d)),this.updateTexture(),this},c.Text.prototype.updateTexture=function(){var a=this.texture.baseTexture,b=this.texture.crop,c=this.texture.frame,d=this.canvas.width,e=this.canvas.height;if(a.width=d,a.height=e,b.width=d,b.height=e,c.width=d,c.height=e,this.texture.width=d,this.texture.height=e,this._width=d,this._height=e,this.textBounds){var f=this.textBounds.x,g=this.textBounds.y;"right"===this.style.boundsAlignH?f+=this.textBounds.width-this.canvas.width:"center"===this.style.boundsAlignH&&(f+=this.textBounds.halfWidth-this.canvas.width/2),"bottom"===this.style.boundsAlignV?g+=this.textBounds.height-this.canvas.height:"middle"===this.style.boundsAlignV&&(g+=this.textBounds.halfHeight-this.canvas.height/2),this.pivot.x=-f,this.pivot.y=-g}this.renderable=0!==d&&0!==e,this.texture.requiresReTint=!0,this.texture.baseTexture.dirty()},c.Text.prototype._renderWebGL=function(a){this.dirty&&(this.updateText(),this.dirty=!1),PIXI.Sprite.prototype._renderWebGL.call(this,a)},c.Text.prototype._renderCanvas=function(a){this.dirty&&(this.updateText(),this.dirty=!1),PIXI.Sprite.prototype._renderCanvas.call(this,a)},c.Text.prototype.determineFontProperties=function(a){var b=c.Text.fontPropertiesCache[a];if(!b){b={};var d=c.Text.fontPropertiesCanvas,e=c.Text.fontPropertiesContext;e.font=a;var f=Math.ceil(e.measureText("|MÉq").width),g=Math.ceil(e.measureText("|MÉq").width),h=2*g;if(g=1.4*g|0,d.width=f,d.height=h,e.fillStyle="#f00",e.fillRect(0,0,f,h),e.font=a,e.textBaseline="alphabetic",e.fillStyle="#000",e.fillText("|MÉq",0,g),!e.getImageData(0,0,f,h))return b.ascent=g,b.descent=g+6,b.fontSize=b.ascent+b.descent,c.Text.fontPropertiesCache[a]=b,b;var i,j,k=e.getImageData(0,0,f,h).data,l=k.length,m=4*f,n=0,o=!1;for(i=0;g>i;i++){for(j=0;m>j;j+=4)if(255!==k[n+j]){o=!0;break}if(o)break;n+=m}for(b.ascent=g-i,n=l-m,o=!1,i=h;i>g;i--){for(j=0;m>j;j+=4)if(255!==k[n+j]){o=!0;break}if(o)break;n-=m}b.descent=i-g,b.descent+=6,b.fontSize=b.ascent+b.descent,c.Text.fontPropertiesCache[a]=b}return b},c.Text.prototype.getBounds=function(a){return this.dirty&&(this.updateText(),this.dirty=!1),PIXI.Sprite.prototype.getBounds.call(this,a)},Object.defineProperty(c.Text.prototype,"text",{get:function(){return this._text},set:function(a){a!==this._text&&(this._text=a.toString()||"",this.dirty=!0,this.parent&&this.updateTransform())}}),Object.defineProperty(c.Text.prototype,"cssFont",{get:function(){return this.componentsToFont(this._fontComponents)},set:function(a){a=a||"bold 20pt Arial",this._fontComponents=this.fontToComponents(a),this.updateFont(this._fontComponents)}}),Object.defineProperty(c.Text.prototype,"font",{get:function(){return this._fontComponents.fontFamily},set:function(a){a=a||"Arial",a=a.trim(),/^(?:inherit|serif|sans-serif|cursive|fantasy|monospace)$/.exec(a)||/['",]/.exec(a)||(a="'"+a+"'"),this._fontComponents.fontFamily=a,this.updateFont(this._fontComponents)}}),Object.defineProperty(c.Text.prototype,"fontSize",{get:function(){var a=this._fontComponents.fontSize;return a&&/(?:^0$|px$)/.exec(a)?parseInt(a,10):a},set:function(a){a=a||"0","number"==typeof a&&(a+="px"),this._fontComponents.fontSize=a,this.updateFont(this._fontComponents)}}),Object.defineProperty(c.Text.prototype,"fontWeight",{get:function(){return this._fontComponents.fontWeight||"normal"},set:function(a){a=a||"normal",this._fontComponents.fontWeight=a,this.updateFont(this._fontComponents)}}),Object.defineProperty(c.Text.prototype,"fontStyle",{get:function(){return this._fontComponents.fontStyle||"normal"},set:function(a){a=a||"normal",this._fontComponents.fontStyle=a,this.updateFont(this._fontComponents)}}),Object.defineProperty(c.Text.prototype,"fontVariant",{get:function(){return this._fontComponents.fontVariant||"normal"},set:function(a){a=a||"normal",this._fontComponents.fontVariant=a,this.updateFont(this._fontComponents)}}),Object.defineProperty(c.Text.prototype,"fill",{get:function(){return this.style.fill},set:function(a){a!==this.style.fill&&(this.style.fill=a,this.dirty=!0)}}),Object.defineProperty(c.Text.prototype,"align",{get:function(){return this.style.align},set:function(a){a!==this.style.align&&(this.style.align=a,this.dirty=!0)}}),Object.defineProperty(c.Text.prototype,"resolution",{get:function(){return this._res},set:function(a){a!==this._res&&(this._res=a,this.dirty=!0)}}),Object.defineProperty(c.Text.prototype,"tabs",{get:function(){return this.style.tabs},set:function(a){a!==this.style.tabs&&(this.style.tabs=a,this.dirty=!0)}}),Object.defineProperty(c.Text.prototype,"boundsAlignH",{get:function(){return this.style.boundsAlignH},set:function(a){a!==this.style.boundsAlignH&&(this.style.boundsAlignH=a,this.dirty=!0)}}),Object.defineProperty(c.Text.prototype,"boundsAlignV",{get:function(){return this.style.boundsAlignV},set:function(a){a!==this.style.boundsAlignV&&(this.style.boundsAlignV=a,this.dirty=!0)}}),Object.defineProperty(c.Text.prototype,"stroke",{get:function(){return this.style.stroke},set:function(a){a!==this.style.stroke&&(this.style.stroke=a,this.dirty=!0)}}),Object.defineProperty(c.Text.prototype,"strokeThickness",{get:function(){return this.style.strokeThickness},set:function(a){a!==this.style.strokeThickness&&(this.style.strokeThickness=a,this.dirty=!0)}}),Object.defineProperty(c.Text.prototype,"wordWrap",{get:function(){return this.style.wordWrap},set:function(a){a!==this.style.wordWrap&&(this.style.wordWrap=a,this.dirty=!0)}}),Object.defineProperty(c.Text.prototype,"wordWrapWidth",{get:function(){return this.style.wordWrapWidth},set:function(a){a!==this.style.wordWrapWidth&&(this.style.wordWrapWidth=a,this.dirty=!0)}}),Object.defineProperty(c.Text.prototype,"lineSpacing",{get:function(){return this._lineSpacing},set:function(a){a!==this._lineSpacing&&(this._lineSpacing=parseFloat(a),this.dirty=!0,this.parent&&this.updateTransform())}}),Object.defineProperty(c.Text.prototype,"shadowOffsetX",{get:function(){return this.style.shadowOffsetX},set:function(a){a!==this.style.shadowOffsetX&&(this.style.shadowOffsetX=a,this.dirty=!0)}}),Object.defineProperty(c.Text.prototype,"shadowOffsetY",{get:function(){return this.style.shadowOffsetY},set:function(a){a!==this.style.shadowOffsetY&&(this.style.shadowOffsetY=a,this.dirty=!0)}}),Object.defineProperty(c.Text.prototype,"shadowColor",{get:function(){return this.style.shadowColor},set:function(a){a!==this.style.shadowColor&&(this.style.shadowColor=a,this.dirty=!0)}}),Object.defineProperty(c.Text.prototype,"shadowBlur",{get:function(){return this.style.shadowBlur},set:function(a){a!==this.style.shadowBlur&&(this.style.shadowBlur=a,this.dirty=!0)}}),Object.defineProperty(c.Text.prototype,"shadowStroke",{get:function(){return this.style.shadowStroke},set:function(a){a!==this.style.shadowStroke&&(this.style.shadowStroke=a,this.dirty=!0)}}),Object.defineProperty(c.Text.prototype,"shadowFill",{get:function(){return this.style.shadowFill},set:function(a){a!==this.style.shadowFill&&(this.style.shadowFill=a,this.dirty=!0)}}),Object.defineProperty(c.Text.prototype,"width",{get:function(){return this.dirty&&(this.updateText(),this.dirty=!1),this.scale.x*this.texture.frame.width},set:function(a){this.scale.x=a/this.texture.frame.width,this._width=a}}),Object.defineProperty(c.Text.prototype,"height",{get:function(){return this.dirty&&(this.updateText(),this.dirty=!1),this.scale.y*this.texture.frame.height},set:function(a){this.scale.y=a/this.texture.frame.height,this._height=a}}),c.Text.fontPropertiesCache={},c.Text.fontPropertiesCanvas=document.createElement("canvas"),c.Text.fontPropertiesContext=c.Text.fontPropertiesCanvas.getContext("2d"),c.BitmapText=function(a,b,d,e,f,g,h){b=b||0,d=d||0,e=e||"",f=f||"",g=g||32,h=h||"left",PIXI.DisplayObjectContainer.call(this),this.type=c.BITMAPTEXT,this.physicsType=c.SPRITE,this.textWidth=0,this.textHeight=0,this.anchor=new c.Point,this._prevAnchor=new c.Point,this._glyphs=[],this._maxWidth=0,this._text=f.toString()||"",this._data=a.cache.getBitmapFont(e),this._font=e,this._fontSize=g,this._align=h,this._tint=16777215,this.updateText(),this.dirty=!1,c.Component.Core.init.call(this,a,b,d,"",null)},c.BitmapText.prototype=Object.create(PIXI.DisplayObjectContainer.prototype),c.BitmapText.prototype.constructor=c.BitmapText,c.Component.Core.install.call(c.BitmapText.prototype,["Angle","AutoCull","Bounds","Destroy","FixedToCamera","InputEnabled","InWorld","LifeSpan","PhysicsBody","Reset"]),c.BitmapText.prototype.preUpdatePhysics=c.Component.PhysicsBody.preUpdate,c.BitmapText.prototype.preUpdateLifeSpan=c.Component.LifeSpan.preUpdate,c.BitmapText.prototype.preUpdateInWorld=c.Component.InWorld.preUpdate,c.BitmapText.prototype.preUpdateCore=c.Component.Core.preUpdate,c.BitmapText.prototype.preUpdate=function(){return this.preUpdatePhysics()&&this.preUpdateLifeSpan()&&this.preUpdateInWorld()?this.preUpdateCore():!1},c.BitmapText.prototype.postUpdate=function(){c.Component.PhysicsBody.postUpdate.call(this),c.Component.FixedToCamera.postUpdate.call(this),this.body&&this.body.type===c.Physics.ARCADE&&(this.textWidth===this.body.sourceWidth&&this.textHeight===this.body.sourceHeight||this.body.setSize(this.textWidth,this.textHeight))},c.BitmapText.prototype.setText=function(a){this.text=a},c.BitmapText.prototype.scanLine=function(a,b,c){for(var d=0,e=0,f=-1,g=0,h=null,i=this._maxWidth>0?this._maxWidth:null,j=[],k=0;k=i&&f>-1)return{width:g||e,text:c.substr(0,k-(k-f)),end:l,chars:j};e+=(n.xAdvance+p)*b,j.push(d+(n.xOffset+p)*b),d+=(n.xAdvance+p)*b,h=m}return{width:e,text:c,end:l,chars:j}},c.BitmapText.prototype.cleanText=function(a,b){void 0===b&&(b="");var c=this._data.font;if(!c)return"";for(var d=/\r\n|\n\r|\n|\r/g,e=a.replace(d,"\n").split("\n"),f=0;fthis.textWidth&&(this.textWidth=f.width),e+=a.lineHeight*c,b=b.substr(f.text.length+1)}while(f.end===!1);this.textHeight=e;for(var g=0,h=0,i=this.textWidth*this.anchor.x,j=this.textHeight*this.anchor.y,k=0;k0&&(this._fontSize=a,this.updateText())}}),Object.defineProperty(c.BitmapText.prototype,"text",{get:function(){return this._text},set:function(a){a!==this._text&&(this._text=a.toString()||"",this.updateText())}}),Object.defineProperty(c.BitmapText.prototype,"maxWidth",{get:function(){return this._maxWidth},set:function(a){a!==this._maxWidth&&(this._maxWidth=a,this.updateText())}}),Object.defineProperty(c.BitmapText.prototype,"smoothed",{get:function(){return!this._data.base.scaleMode},set:function(a){a?this._data.base.scaleMode=0:this._data.base.scaleMode=1}}),c.RetroFont=function(a,b,d,e,f,g,h,i,j,k){if(!a.cache.checkImageKey(b))return!1;void 0!==g&&null!==g||(g=a.cache.getImage(b).width/d),this.characterWidth=d,this.characterHeight=e,this.characterSpacingX=h||0,this.characterSpacingY=i||0,this.characterPerRow=g,this.offsetX=j||0,this.offsetY=k||0,this.align="left",this.multiLine=!1,this.autoUpperCase=!0,this.customSpacingX=0,this.customSpacingY=0,this.fixedWidth=0,this.fontSet=a.cache.getImage(b),this._text="",this.grabData=[],this.frameData=new c.FrameData;for(var l=this.offsetX,m=this.offsetY,n=0,o=0;o?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~",c.RetroFont.TEXT_SET2=" !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ",c.RetroFont.TEXT_SET3="ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789 ",c.RetroFont.TEXT_SET4="ABCDEFGHIJKLMNOPQRSTUVWXYZ 0123456789",c.RetroFont.TEXT_SET5="ABCDEFGHIJKLMNOPQRSTUVWXYZ.,/() '!?-*:0123456789",c.RetroFont.TEXT_SET6="ABCDEFGHIJKLMNOPQRSTUVWXYZ!?:;0123456789\"(),-.' ",c.RetroFont.TEXT_SET7="AGMSY+:4BHNTZ!;5CIOU.?06DJPV,(17EKQW\")28FLRX-'39",c.RetroFont.TEXT_SET8="0123456789 .ABCDEFGHIJKLMNOPQRSTUVWXYZ",c.RetroFont.TEXT_SET9="ABCDEFGHIJKLMNOPQRSTUVWXYZ()-0123456789.:,'\"?!",c.RetroFont.TEXT_SET10="ABCDEFGHIJKLMNOPQRSTUVWXYZ",c.RetroFont.TEXT_SET11="ABCDEFGHIJKLMNOPQRSTUVWXYZ.,\"-+!?()':;0123456789",c.RetroFont.prototype.setFixedWidth=function(a,b){void 0===b&&(b="left"),this.fixedWidth=a,this.align=b},c.RetroFont.prototype.setText=function(a,b,c,d,e,f){this.multiLine=b||!1,this.customSpacingX=c||0,this.customSpacingY=d||0,this.align=e||"left",f?this.autoUpperCase=!1:this.autoUpperCase=!0,a.length>0&&(this.text=a)},c.RetroFont.prototype.buildRetroFontText=function(){var a=0,b=0;if(this.clear(),this.multiLine){var d=this._text.split("\n");this.fixedWidth>0?this.resize(this.fixedWidth,d.length*(this.characterHeight+this.customSpacingY)-this.customSpacingY,!0):this.resize(this.getLongestLine()*(this.characterWidth+this.customSpacingX),d.length*(this.characterHeight+this.customSpacingY)-this.customSpacingY,!0);for(var e=0;ea&&(a=0),this.pasteLine(d[e],a,b,this.customSpacingX),b+=this.characterHeight+this.customSpacingY}else this.fixedWidth>0?this.resize(this.fixedWidth,this.characterHeight,!0):this.resize(this._text.length*(this.characterWidth+this.customSpacingX),this.characterHeight,!0),a=0,this.align===c.RetroFont.ALIGN_RIGHT?a=this.width-this._text.length*(this.characterWidth+this.customSpacingX):this.align===c.RetroFont.ALIGN_CENTER&&(a=this.width/2-this._text.length*(this.characterWidth+this.customSpacingX)/2,a+=this.customSpacingX/2),0>a&&(a=0),this.pasteLine(this._text,a,0,this.customSpacingX);this.requiresReTint=!0},c.RetroFont.prototype.pasteLine=function(a,b,c,d){for(var e=0;e=0&&(this.stamp.frame=this.grabData[a.charCodeAt(e)],this.renderXY(this.stamp,b,c,!1),b+=this.characterWidth+d,b>this.width))break},c.RetroFont.prototype.getLongestLine=function(){var a=0;if(this._text.length>0)for(var b=this._text.split("\n"),c=0;ca&&(a=b[c].length);return a},c.RetroFont.prototype.removeUnsupportedCharacters=function(a){for(var b="",c=0;c=0||!a&&"\n"===d)&&(b=b.concat(d))}return b},c.RetroFont.prototype.updateOffset=function(a,b){if(this.offsetX!==a||this.offsetY!==b){for(var c=a-this.offsetX,d=b-this.offsetY,e=this.game.cache.getFrameData(this.stamp.key).getFrames(),f=e.length;f--;)e[f].x+=c,e[f].y+=d;this.buildRetroFontText()}},Object.defineProperty(c.RetroFont.prototype,"text",{get:function(){return this._text},set:function(a){var b;b=this.autoUpperCase?a.toUpperCase():a,b!==this._text&&(this._text=b,this.removeUnsupportedCharacters(this.multiLine),this.buildRetroFontText())}}),Object.defineProperty(c.RetroFont.prototype,"smoothed",{get:function(){return this.stamp.smoothed},set:function(a){this.stamp.smoothed=a,this.buildRetroFontText()}}),c.Rope=function(a,b,d,e,f,g){this.points=[],this.points=g,this._hasUpdateAnimation=!1,this._updateAnimationCallback=null,b=b||0,d=d||0,e=e||null,f=f||null,this.type=c.ROPE,PIXI.Rope.call(this,c.Cache.DEFAULT,this.points),c.Component.Core.init.call(this,a,b,d,e,f)},c.Rope.prototype=Object.create(PIXI.Rope.prototype),c.Rope.prototype.constructor=c.Rope,c.Component.Core.install.call(c.Rope.prototype,["Angle","Animation","AutoCull","Bounds","BringToTop","Crop","Delta","Destroy","FixedToCamera","InWorld","LifeSpan","LoadTexture","Overlap","PhysicsBody","Reset","ScaleMinMax","Smoothed"]),c.Rope.prototype.preUpdatePhysics=c.Component.PhysicsBody.preUpdate,c.Rope.prototype.preUpdateLifeSpan=c.Component.LifeSpan.preUpdate, +c.Rope.prototype.preUpdateInWorld=c.Component.InWorld.preUpdate,c.Rope.prototype.preUpdateCore=c.Component.Core.preUpdate,c.Rope.prototype.preUpdate=function(){return this.preUpdatePhysics()&&this.preUpdateLifeSpan()&&this.preUpdateInWorld()?this.preUpdateCore():!1},c.Rope.prototype.update=function(){this._hasUpdateAnimation&&this.updateAnimation.call(this)},c.Rope.prototype.reset=function(a,b){return c.Component.Reset.prototype.reset.call(this,a,b),this},Object.defineProperty(c.Rope.prototype,"updateAnimation",{get:function(){return this._updateAnimation},set:function(a){a&&"function"==typeof a?(this._hasUpdateAnimation=!0,this._updateAnimation=a):(this._hasUpdateAnimation=!1,this._updateAnimation=null)}}),Object.defineProperty(c.Rope.prototype,"segments",{get:function(){for(var a,b,d,e,f,g,h,i,j=[],k=0;k=1)&&(l.touch=!0),(window.navigator.msPointerEnabled||window.navigator.pointerEnabled)&&(l.mspointer=!0),l.cocoonJS||("onwheel"in window||l.ie&&"WheelEvent"in window?l.wheelEvent="wheel":"onmousewheel"in window?l.wheelEvent="mousewheel":l.firefox&&"MouseScrollEvent"in window&&(l.wheelEvent="DOMMouseScroll"))}function d(){for(var a=["requestFullscreen","requestFullScreen","webkitRequestFullscreen","webkitRequestFullScreen","msRequestFullscreen","msRequestFullScreen","mozRequestFullScreen","mozRequestFullscreen"],b=document.createElement("div"),c=0;c=9&&/Mac OS X (\d+)_(\d+)/.test(navigator.userAgent)){var c=parseInt(RegExp.$1,10),d=parseInt(RegExp.$2,10);(10===c&&d>=11||c>10)&&(l.dolby=!0)}}catch(e){}}function h(){l.pixelRatio=window.devicePixelRatio||1,l.iPhone=-1!=navigator.userAgent.toLowerCase().indexOf("iphone"),l.iPhone4=2==l.pixelRatio&&l.iPhone,l.iPad=-1!=navigator.userAgent.toLowerCase().indexOf("ipad"),"undefined"!=typeof Int8Array?l.typedArray=!0:l.typedArray=!1,"undefined"!=typeof ArrayBuffer&&"undefined"!=typeof Uint8Array&&"undefined"!=typeof Uint32Array&&(l.littleEndian=i(),l.LITTLE_ENDIAN=l.littleEndian),l.support32bit="undefined"!=typeof ArrayBuffer&&"undefined"!=typeof Uint8ClampedArray&&"undefined"!=typeof Int32Array&&null!==l.littleEndian&&j(),navigator.vibrate=navigator.vibrate||navigator.webkitVibrate||navigator.mozVibrate||navigator.msVibrate,navigator.vibrate&&(l.vibration=!0)}function i(){var a=new ArrayBuffer(4),b=new Uint8Array(a),c=new Uint32Array(a);return b[0]=161,b[1]=178,b[2]=195,b[3]=212,3569595041==c[0]?!0:2712847316==c[0]?!1:null}function j(){if(void 0===Uint8ClampedArray)return!1;var a=PIXI.CanvasPool.create(this,1,1),b=a.getContext("2d");if(!b)return!1;var c=b.createImageData(1,1);return PIXI.CanvasPool.remove(this),c.data instanceof Uint8ClampedArray}function k(){var a,b=document.createElement("p"),c={webkitTransform:"-webkit-transform",OTransform:"-o-transform",msTransform:"-ms-transform",MozTransform:"-moz-transform",transform:"transform"};document.body.insertBefore(b,null);for(var d in c)void 0!==b.style[d]&&(b.style[d]="translate3d(1px,1px,1px)",a=window.getComputedStyle(b).getPropertyValue(c[d]));document.body.removeChild(b),l.css3D=void 0!==a&&a.length>0&&"none"!==a}var l=this;a(),e(),g(),f(),k(),h(),b(),d(),c()},c.Device.canPlayAudio=function(a){return"mp3"===a&&this.mp3?!0:"ogg"===a&&(this.ogg||this.opus)?!0:"m4a"===a&&this.m4a?!0:"opus"===a&&this.opus?!0:"wav"===a&&this.wav?!0:"webm"===a&&this.webm?!0:!("mp4"!==a||!this.dolby)},c.Device.canPlayVideo=function(a){return"webm"===a&&(this.webmVideo||this.vp9Video)?!0:"mp4"===a&&(this.mp4Video||this.h264Video)?!0:"ogg"!==a&&"ogv"!==a||!this.oggVideo?!("mpeg"!==a||!this.hlsVideo):!0},c.Device.isConsoleOpen=function(){return window.console&&window.console.firebug?!0:window.console&&(console.profile(),console.profileEnd(),console.clear&&console.clear(),console.profiles)?console.profiles.length>0:!1},c.Device.isAndroidStockBrowser=function(){var a=window.navigator.userAgent.match(/Android.*AppleWebKit\/([\d.]+)/);return a&&a[1]<537},c.Canvas={create:function(a,b,c,d,e){b=b||256,c=c||256;var f=e?document.createElement("canvas"):PIXI.CanvasPool.create(a,b,c);return"string"==typeof d&&""!==d&&(f.id=d),f.width=b,f.height=c,f.style.display="block",f},setBackgroundColor:function(a,b){return b=b||"rgb(0,0,0)",a.style.backgroundColor=b,a},setTouchAction:function(a,b){return b=b||"none",a.style.msTouchAction=b,a.style["ms-touch-action"]=b,a.style["touch-action"]=b,a},setUserSelect:function(a,b){return b=b||"none",a.style["-webkit-touch-callout"]=b,a.style["-webkit-user-select"]=b,a.style["-khtml-user-select"]=b,a.style["-moz-user-select"]=b,a.style["-ms-user-select"]=b,a.style["user-select"]=b,a.style["-webkit-tap-highlight-color"]="rgba(0, 0, 0, 0)",a},addToDOM:function(a,b,c){var d;return void 0===c&&(c=!0),b&&("string"==typeof b?d=document.getElementById(b):"object"==typeof b&&1===b.nodeType&&(d=b)),d||(d=document.body),c&&d.style&&(d.style.overflow="hidden"),d.appendChild(a),a},removeFromDOM:function(a){a.parentNode&&a.parentNode.removeChild(a)},setTransform:function(a,b,c,d,e,f,g){return a.setTransform(d,f,g,e,b,c),a},setSmoothingEnabled:function(a,b){var d=c.Canvas.getSmoothingPrefix(a);return d&&(a[d]=b),a},getSmoothingPrefix:function(a){var b=["i","webkitI","msI","mozI","oI"];for(var c in b){var d=b[c]+"mageSmoothingEnabled";if(d in a)return d}return null},getSmoothingEnabled:function(a){var b=c.Canvas.getSmoothingPrefix(a);return b?a[b]:void 0},setImageRenderingCrisp:function(a){for(var b=["optimizeSpeed","crisp-edges","-moz-crisp-edges","-webkit-optimize-contrast","optimize-contrast","pixelated"],c=0;ca},fuzzyGreaterThan:function(a,b,c){return void 0===c&&(c=1e-4),a>b-c},fuzzyCeil:function(a,b){return void 0===b&&(b=1e-4),Math.ceil(a-b)},fuzzyFloor:function(a,b){return void 0===b&&(b=1e-4),Math.floor(a+b)},average:function(){for(var a=0,b=arguments.length,c=0;b>c;c++)a+=+arguments[c];return a/b},shear:function(a){return a%1},snapTo:function(a,b,c){return void 0===c&&(c=0),0===b?a:(a-=c,a=b*Math.round(a/b),c+a)},snapToFloor:function(a,b,c){return void 0===c&&(c=0),0===b?a:(a-=c,a=b*Math.floor(a/b),c+a)},snapToCeil:function(a,b,c){return void 0===c&&(c=0),0===b?a:(a-=c,a=b*Math.ceil(a/b),c+a)},roundTo:function(a,b,c){void 0===b&&(b=0),void 0===c&&(c=10);var d=Math.pow(c,-b);return Math.round(a*d)/d},floorTo:function(a,b,c){void 0===b&&(b=0),void 0===c&&(c=10);var d=Math.pow(c,-b);return Math.floor(a*d)/d},ceilTo:function(a,b,c){void 0===b&&(b=0),void 0===c&&(c=10);var d=Math.pow(c,-b);return Math.ceil(a*d)/d},angleBetween:function(a,b,c,d){return Math.atan2(d-b,c-a)},angleBetweenY:function(a,b,c,d){return Math.atan2(c-a,d-b)},angleBetweenPoints:function(a,b){return Math.atan2(b.y-a.y,b.x-a.x)},angleBetweenPointsY:function(a,b){return Math.atan2(b.x-a.x,b.y-a.y)},reverseAngle:function(a){return this.normalizeAngle(a+Math.PI,!0)},normalizeAngle:function(a){return a%=2*Math.PI,a>=0?a:a+2*Math.PI},maxAdd:function(a,b,c){return Math.min(a+b,c)},minSub:function(a,b,c){return Math.max(a-b,c)},wrap:function(a,b,c){var d=c-b;if(0>=d)return 0;var e=(a-b)%d;return 0>e&&(e+=d),e+b},wrapValue:function(a,b,c){var d;return a=Math.abs(a),b=Math.abs(b),c=Math.abs(c),d=(a+b)%c},isOdd:function(a){return!!(1&a)},isEven:function(a){return!(1&a)},min:function(){if(1===arguments.length&&"object"==typeof arguments[0])var a=arguments[0];else var a=arguments;for(var b=1,c=0,d=a.length;d>b;b++)a[b]b;b++)a[b]>a[c]&&(c=b);return a[c]},minProperty:function(a){if(2===arguments.length&&"object"==typeof arguments[1])var b=arguments[1];else var b=arguments.slice(1);for(var c=1,d=0,e=b.length;e>c;c++)b[c][a]c;c++)b[c][a]>b[d][a]&&(d=c);return b[d][a]},wrapAngle:function(a,b){return b?this.wrap(a,-Math.PI,Math.PI):this.wrap(a,-180,180)},linearInterpolation:function(a,b){var c=a.length-1,d=c*b,e=Math.floor(d);return 0>b?this.linear(a[0],a[1],d):b>1?this.linear(a[c],a[c-1],c-d):this.linear(a[e],a[e+1>c?c:e+1],d-e)},bezierInterpolation:function(a,b){for(var c=0,d=a.length-1,e=0;d>=e;e++)c+=Math.pow(1-b,d-e)*Math.pow(b,e)*a[e]*this.bernstein(d,e);return c},catmullRomInterpolation:function(a,b){var c=a.length-1,d=c*b,e=Math.floor(d);return a[0]===a[c]?(0>b&&(e=Math.floor(d=c*(1+b))),this.catmullRom(a[(e-1+c)%c],a[e],a[(e+1)%c],a[(e+2)%c],d-e)):0>b?a[0]-(this.catmullRom(a[0],a[0],a[1],a[1],-d)-a[0]):b>1?a[c]-(this.catmullRom(a[c],a[c],a[c-1],a[c-1],d-c)-a[c]):this.catmullRom(a[e?e-1:0],a[e],a[e+1>c?c:e+1],a[e+2>c?c:e+2],d-e)},linear:function(a,b,c){return(b-a)*c+a},bernstein:function(a,b){return this.factorial(a)/this.factorial(b)/this.factorial(a-b)},factorial:function(a){if(0===a)return 1;for(var b=a;--a;)b*=a;return b},catmullRom:function(a,b,c,d,e){var f=.5*(c-a),g=.5*(d-b),h=e*e,i=e*h;return(2*b-2*c+f+g)*i+(-3*b+3*c-2*f-g)*h+f*e+b},difference:function(a,b){return Math.abs(a-b)},roundAwayFromZero:function(a){return a>0?Math.ceil(a):Math.floor(a)},sinCosGenerator:function(a,b,c,d){void 0===b&&(b=1),void 0===c&&(c=1),void 0===d&&(d=1);for(var e=b,f=c,g=d*Math.PI/a,h=[],i=[],j=0;a>j;j++)f-=e*g,e+=f*g,h[j]=f,i[j]=e;return{sin:i,cos:h,length:a}},distance:function(a,b,c,d){var e=a-c,f=b-d;return Math.sqrt(e*e+f*f)},distanceSq:function(a,b,c,d){var e=a-c,f=b-d;return e*e+f*f},distancePow:function(a,b,c,d,e){return void 0===e&&(e=2),Math.sqrt(Math.pow(c-a,e)+Math.pow(d-b,e))},clamp:function(a,b,c){return b>a?b:a>c?c:a},clampBottom:function(a,b){return b>a?b:a},within:function(a,b,c){return Math.abs(a-b)<=c},mapLinear:function(a,b,c,d,e){return d+(a-b)*(e-d)/(c-b)},smoothstep:function(a,b,c){return a=Math.max(0,Math.min(1,(a-b)/(c-b))),a*a*(3-2*a)},smootherstep:function(a,b,c){return a=Math.max(0,Math.min(1,(a-b)/(c-b))),a*a*a*(a*(6*a-15)+10)},sign:function(a){return 0>a?-1:a>0?1:0},percent:function(a,b,c){return void 0===c&&(c=0),a>b||c>b?1:c>a||c>a?0:(a-c)/b}};var k=Math.PI/180,l=180/Math.PI;return c.Math.degToRad=function(a){return a*k},c.Math.radToDeg=function(a){return a*l},c.RandomDataGenerator=function(a){void 0===a&&(a=[]),this.c=1,this.s0=0,this.s1=0,this.s2=0,"string"==typeof a?this.state(a):this.sow(a)},c.RandomDataGenerator.prototype={rnd:function(){var a=2091639*this.s0+2.3283064365386963e-10*this.c;return this.c=0|a,this.s0=this.s1,this.s1=this.s2,this.s2=a-this.c,this.s2},sow:function(a){if(this.s0=this.hash(" "),this.s1=this.hash(this.s0),this.s2=this.hash(this.s1),this.c=1,a)for(var b=0;b>>0,b-=d,b*=d,d=b>>>0,b-=d,d+=4294967296*b;return 2.3283064365386963e-10*(d>>>0)},integer:function(){return 4294967296*this.rnd.apply(this)},frac:function(){return this.rnd.apply(this)+1.1102230246251565e-16*(2097152*this.rnd.apply(this)|0)},real:function(){return this.integer()+this.frac()},integerInRange:function(a,b){return Math.floor(this.realInRange(0,b-a+1)+a)},between:function(a,b){return this.integerInRange(a,b)},realInRange:function(a,b){return this.frac()*(b-a)+a},normal:function(){return 1-2*this.frac()},uuid:function(){var a="",b="";for(b=a="";a++<36;b+=~a%5|3*a&4?(15^a?8^this.frac()*(20^a?16:4):4).toString(16):"-");return b},pick:function(a){return a[this.integerInRange(0,a.length-1)]},sign:function(){return this.pick([-1,1])},weightedPick:function(a){return a[~~(Math.pow(this.frac(),2)*(a.length-1)+.5)]},timestamp:function(a,b){return this.realInRange(a||9466848e5,b||1577862e6)},angle:function(){return this.integerInRange(-180,180)},state:function(a){return"string"==typeof a&&a.match(/^!rnd/)&&(a=a.split(","),this.c=parseFloat(a[1]),this.s0=parseFloat(a[2]),this.s1=parseFloat(a[3]),this.s2=parseFloat(a[4])),["!rnd",this.c,this.s0,this.s1,this.s2].join(",")}},c.RandomDataGenerator.prototype.constructor=c.RandomDataGenerator,c.QuadTree=function(a,b,c,d,e,f,g){this.maxObjects=10,this.maxLevels=4,this.level=0,this.bounds={},this.objects=[],this.nodes=[],this._empty=[],this.reset(a,b,c,d,e,f,g)},c.QuadTree.prototype={reset:function(a,b,c,d,e,f,g){this.maxObjects=e||10,this.maxLevels=f||4,this.level=g||0,this.bounds={x:Math.round(a),y:Math.round(b),width:c,height:d,subWidth:Math.floor(c/2),subHeight:Math.floor(d/2),right:Math.round(a)+Math.floor(c/2),bottom:Math.round(b)+Math.floor(d/2)},this.objects.length=0,this.nodes.length=0},populate:function(a){a.forEach(this.populateHandler,this,!0)},populateHandler:function(a){a.body&&a.exists&&this.insert(a.body)},split:function(){this.nodes[0]=new c.QuadTree(this.bounds.right,this.bounds.y,this.bounds.subWidth,this.bounds.subHeight,this.maxObjects,this.maxLevels,this.level+1),this.nodes[1]=new c.QuadTree(this.bounds.x,this.bounds.y,this.bounds.subWidth,this.bounds.subHeight,this.maxObjects,this.maxLevels,this.level+1),this.nodes[2]=new c.QuadTree(this.bounds.x,this.bounds.bottom,this.bounds.subWidth,this.bounds.subHeight,this.maxObjects,this.maxLevels,this.level+1),this.nodes[3]=new c.QuadTree(this.bounds.right,this.bounds.bottom,this.bounds.subWidth,this.bounds.subHeight,this.maxObjects,this.maxLevels,this.level+1)},insert:function(a){var b,c=0;if(null!=this.nodes[0]&&(b=this.getIndex(a),-1!==b))return void this.nodes[b].insert(a);if(this.objects.push(a),this.objects.length>this.maxObjects&&this.levelthis.bounds.bottom&&(b=2):a.x>this.bounds.right&&(a.ythis.bounds.bottom&&(b=3)),b},retrieve:function(a){if(a instanceof c.Rectangle)var b=this.objects,d=this.getIndex(a);else{if(!a.body)return this._empty;var b=this.objects,d=this.getIndex(a.body)}return this.nodes[0]&&(-1!==d?b=b.concat(this.nodes[d].retrieve(a)):(b=b.concat(this.nodes[0].retrieve(a)),b=b.concat(this.nodes[1].retrieve(a)),b=b.concat(this.nodes[2].retrieve(a)),b=b.concat(this.nodes[3].retrieve(a)))),b},clear:function(){this.objects.length=0;for(var a=this.nodes.length;a--;)this.nodes[a].clear(),this.nodes.splice(a,1);this.nodes.length=0}},c.QuadTree.prototype.constructor=c.QuadTree,c.Net=function(a){this.game=a},c.Net.prototype={getHostName:function(){return window.location&&window.location.hostname?window.location.hostname:null},checkDomainName:function(a){return-1!==window.location.hostname.indexOf(a)},updateQueryString:function(a,b,c,d){void 0===c&&(c=!1),void 0!==d&&""!==d||(d=window.location.href);var e="",f=new RegExp("([?|&])"+a+"=.*?(&|#|$)(.*)","gi");if(f.test(d))e="undefined"!=typeof b&&null!==b?d.replace(f,"$1"+a+"="+b+"$2$3"):d.replace(f,"$1$3").replace(/(&|\?)$/,"");else if("undefined"!=typeof b&&null!==b){var g=-1!==d.indexOf("?")?"&":"?",h=d.split("#");d=h[0]+g+a+"="+b,h[1]&&(d+="#"+h[1]),e=d}else e=d;return c?void(window.location.href=e):e},getQueryString:function(a){void 0===a&&(a="");var b={},c=location.search.substring(1).split("&");for(var d in c){var e=c[d].split("=");if(e.length>1){if(a&&a==this.decodeURI(e[0]))return this.decodeURI(e[1]);b[this.decodeURI(e[0])]=this.decodeURI(e[1])}}return b},decodeURI:function(a){return decodeURIComponent(a.replace(/\+/g," "))}},c.Net.prototype.constructor=c.Net,c.TweenManager=function(a){this.game=a,this.frameBased=!1,this._tweens=[],this._add=[],this.easeMap={Power0:c.Easing.Power0,Power1:c.Easing.Power1,Power2:c.Easing.Power2,Power3:c.Easing.Power3,Power4:c.Easing.Power4,Linear:c.Easing.Linear.None,Quad:c.Easing.Quadratic.Out,Cubic:c.Easing.Cubic.Out,Quart:c.Easing.Quartic.Out,Quint:c.Easing.Quintic.Out,Sine:c.Easing.Sinusoidal.Out,Expo:c.Easing.Exponential.Out,Circ:c.Easing.Circular.Out,Elastic:c.Easing.Elastic.Out,Back:c.Easing.Back.Out,Bounce:c.Easing.Bounce.Out,"Quad.easeIn":c.Easing.Quadratic.In,"Cubic.easeIn":c.Easing.Cubic.In,"Quart.easeIn":c.Easing.Quartic.In,"Quint.easeIn":c.Easing.Quintic.In,"Sine.easeIn":c.Easing.Sinusoidal.In,"Expo.easeIn":c.Easing.Exponential.In,"Circ.easeIn":c.Easing.Circular.In,"Elastic.easeIn":c.Easing.Elastic.In,"Back.easeIn":c.Easing.Back.In,"Bounce.easeIn":c.Easing.Bounce.In,"Quad.easeOut":c.Easing.Quadratic.Out,"Cubic.easeOut":c.Easing.Cubic.Out,"Quart.easeOut":c.Easing.Quartic.Out,"Quint.easeOut":c.Easing.Quintic.Out,"Sine.easeOut":c.Easing.Sinusoidal.Out,"Expo.easeOut":c.Easing.Exponential.Out,"Circ.easeOut":c.Easing.Circular.Out,"Elastic.easeOut":c.Easing.Elastic.Out,"Back.easeOut":c.Easing.Back.Out,"Bounce.easeOut":c.Easing.Bounce.Out,"Quad.easeInOut":c.Easing.Quadratic.InOut,"Cubic.easeInOut":c.Easing.Cubic.InOut,"Quart.easeInOut":c.Easing.Quartic.InOut,"Quint.easeInOut":c.Easing.Quintic.InOut,"Sine.easeInOut":c.Easing.Sinusoidal.InOut,"Expo.easeInOut":c.Easing.Exponential.InOut,"Circ.easeInOut":c.Easing.Circular.InOut,"Elastic.easeInOut":c.Easing.Elastic.InOut,"Back.easeInOut":c.Easing.Back.InOut,"Bounce.easeInOut":c.Easing.Bounce.InOut},this.game.onPause.add(this._pauseAll,this),this.game.onResume.add(this._resumeAll,this)},c.TweenManager.prototype={getAll:function(){return this._tweens},removeAll:function(){for(var a=0;ad;d++)this.removeFrom(a[d]);else if(a.type===c.GROUP&&b)for(var d=0,e=a.children.length;e>d;d++)this.removeFrom(a.children[d]);else{for(d=0,e=this._tweens.length;e>d;d++)a===this._tweens[d].target&&this.remove(this._tweens[d]);for(d=0,e=this._add.length;e>d;d++)a===this._add[d].target&&this.remove(this._add[d])}},add:function(a){a._manager=this,this._add.push(a)},create:function(a){return new c.Tween(a,this.game,this)},remove:function(a){var b=this._tweens.indexOf(a);-1!==b?this._tweens[b].pendingDelete=!0:(b=this._add.indexOf(a),-1!==b&&(this._add[b].pendingDelete=!0))},update:function(){var a=this._add.length,b=this._tweens.length;if(0===b&&0===a)return!1;for(var c=0;b>c;)this._tweens[c].update(this.game.time.time)?c++:(this._tweens.splice(c,1),b--);return a>0&&(this._tweens=this._tweens.concat(this._add),this._add.length=0),!0},isTweening:function(a){return this._tweens.some(function(b){return b.target===a})},_pauseAll:function(){for(var a=this._tweens.length-1;a>=0;a--)this._tweens[a]._pause()},_resumeAll:function(){for(var a=this._tweens.length-1;a>=0;a--)this._tweens[a]._resume()},pauseAll:function(){for(var a=this._tweens.length-1;a>=0;a--)this._tweens[a].pause()},resumeAll:function(){for(var a=this._tweens.length-1;a>=0;a--)this._tweens[a].resume(!0)}},c.TweenManager.prototype.constructor=c.TweenManager,c.Tween=function(a,b,d){this.game=b,this.target=a,this.manager=d,this.timeline=[],this.reverse=!1,this.timeScale=1,this.repeatCounter=0,this.pendingDelete=!1,this.onStart=new c.Signal,this.onLoop=new c.Signal,this.onRepeat=new c.Signal,this.onChildComplete=new c.Signal,this.onComplete=new c.Signal,this.isRunning=!1,this.current=0,this.properties={},this.chainedTween=null,this.isPaused=!1,this.frameBased=d.frameBased,this._onUpdateCallback=null,this._onUpdateCallbackContext=null,this._pausedTime=0,this._codePaused=!1,this._hasStarted=!1},c.Tween.prototype={to:function(a,b,d,e,f,g,h){return(void 0===b||0>=b)&&(b=1e3),void 0!==d&&null!==d||(d=c.Easing.Default),void 0===e&&(e=!1),void 0===f&&(f=0),void 0===g&&(g=0),void 0===h&&(h=!1),"string"==typeof d&&this.manager.easeMap[d]&&(d=this.manager.easeMap[d]),this.isRunning?(console.warn("Phaser.Tween.to cannot be called after Tween.start"),this):(this.timeline.push(new c.TweenData(this).to(a,b,d,f,g,h)),e&&this.start(),this)},from:function(a,b,d,e,f,g,h){return void 0===b&&(b=1e3),void 0!==d&&null!==d||(d=c.Easing.Default),void 0===e&&(e=!1),void 0===f&&(f=0),void 0===g&&(g=0),void 0===h&&(h=!1),"string"==typeof d&&this.manager.easeMap[d]&&(d=this.manager.easeMap[d]),this.isRunning?(console.warn("Phaser.Tween.from cannot be called after Tween.start"),this):(this.timeline.push(new c.TweenData(this).from(a,b,d,f,g,h)),e&&this.start(),this)},start:function(a){if(void 0===a&&(a=0),null===this.game||null===this.target||0===this.timeline.length||this.isRunning)return this;for(var b=0;ba||a>this.timeline.length-1)&&(a=0),this.current=a,this.timeline[this.current].start(),this},stop:function(a){return void 0===a&&(a=!1),this.isRunning=!1,this._onUpdateCallback=null,this._onUpdateCallbackContext=null,a&&(this.onComplete.dispatch(this.target,this),this._hasStarted=!1,this.chainedTween&&this.chainedTween.start()),this.manager.remove(this),this},updateTweenData:function(a,b,c){if(0===this.timeline.length)return this;if(void 0===c&&(c=0),-1===c)for(var d=0;d0?arguments[a-1].chainedTween=arguments[a]:this.chainedTween=arguments[a];return this},loop:function(a){return void 0===a&&(a=!0),this.repeatCounter=a?-1:0,this},onUpdateCallback:function(a,b){return this._onUpdateCallback=a,this._onUpdateCallbackContext=b,this},pause:function(){this.isPaused=!0,this._codePaused=!0,this._pausedTime=this.game.time.time},_pause:function(){this._codePaused||(this.isPaused=!0,this._pausedTime=this.game.time.time)},resume:function(){if(this.isPaused){this.isPaused=!1,this._codePaused=!1;for(var a=0;a0?(this.repeatCounter--,this.timeline[this.current].start(),this.onRepeat.dispatch(this.target,this),!0):(this.isRunning=!1,this.onComplete.dispatch(this.target,this),this._hasStarted=!1,this.chainedTween&&this.chainedTween.start(),!1):(this.onChildComplete.dispatch(this.target,this),this.timeline[this.current].start(),!0)}},generateData:function(a,b){if(null===this.game||null===this.target)return null;void 0===a&&(a=60),void 0===b&&(b=[]);for(var c=0;c0?this.isRunning=!1:this.isRunning=!0,this.isFrom)for(var a in this.vStartCache)this.vStart[a]=this.vEndCache[a],this.vEnd[a]=this.vStartCache[a],this.parent.target[a]=this.vStart[a];return this.value=0,this.yoyoCounter=0,this.repeatCounter=this.repeatTotal,this},loadValues:function(){for(var a in this.parent.properties){if(this.vStart[a]=this.parent.properties[a],Array.isArray(this.vEnd[a])){if(0===this.vEnd[a].length)continue;0===this.percent&&(this.vEnd[a]=[this.vStart[a]].concat(this.vEnd[a]))}"undefined"!=typeof this.vEnd[a]?("string"==typeof this.vEnd[a]&&(this.vEnd[a]=this.vStart[a]+parseFloat(this.vEnd[a],10)),this.parent.properties[a]=this.vEnd[a]):this.vEnd[a]=this.vStart[a],this.vStartCache[a]=this.vStart[a],this.vEndCache[a]=this.vEnd[a]}return this},update:function(a){if(this.isRunning){if(a=this.startTime))return c.TweenData.PENDING;this.isRunning=!0}var b=this.parent.frameBased?this.game.time.physicsElapsedMS:this.game.time.elapsedMS;this.parent.reverse?(this.dt-=b*this.parent.timeScale,this.dt=Math.max(this.dt,0)):(this.dt+=b*this.parent.timeScale,this.dt=Math.min(this.dt,this.duration)),this.percent=this.dt/this.duration,this.value=this.easingFunction(this.percent);for(var d in this.vEnd){var e=this.vStart[d],f=this.vEnd[d];Array.isArray(f)?this.parent.target[d]=this.interpolationFunction.call(this.interpolationContext,f,this.value):this.parent.target[d]=e+(f-e)*this.value}return!this.parent.reverse&&1===this.percent||this.parent.reverse&&0===this.percent?this.repeat():c.TweenData.RUNNING},generateData:function(a){this.parent.reverse?this.dt=this.duration:this.dt=0;var b=[],c=!1,d=1/a*1e3;do{this.parent.reverse?(this.dt-=d,this.dt=Math.max(this.dt,0)):(this.dt+=d,this.dt=Math.min(this.dt,this.duration)),this.percent=this.dt/this.duration,this.value=this.easingFunction(this.percent);var e={};for(var f in this.vEnd){var g=this.vStart[f],h=this.vEnd[f];Array.isArray(h)?e[f]=this.interpolationFunction(h,this.value):e[f]=g+(h-g)*this.value}b.push(e),(!this.parent.reverse&&1===this.percent||this.parent.reverse&&0===this.percent)&&(c=!0)}while(!c);if(this.yoyo){var i=b.slice();i.reverse(),b=b.concat(i)}return b},repeat:function(){if(this.yoyo){if(this.inReverse&&0===this.repeatCounter){for(var a in this.vStartCache)this.vStart[a]=this.vStartCache[a],this.vEnd[a]=this.vEndCache[a];return this.inReverse=!1,c.TweenData.COMPLETE}this.inReverse=!this.inReverse}else if(0===this.repeatCounter)return c.TweenData.COMPLETE;if(this.inReverse)for(var a in this.vStartCache)this.vStart[a]=this.vEndCache[a],this.vEnd[a]=this.vStartCache[a];else{for(var a in this.vStartCache)this.vStart[a]=this.vStartCache[a],this.vEnd[a]=this.vEndCache[a];this.repeatCounter>0&&this.repeatCounter--}return this.startTime=this.game.time.time,this.yoyo&&this.inReverse?this.startTime+=this.yoyoDelay:this.inReverse||(this.startTime+=this.repeatDelay),this.parent.reverse?this.dt=this.duration:this.dt=0,c.TweenData.LOOPED}},c.TweenData.prototype.constructor=c.TweenData,c.Easing={Linear:{None:function(a){return a}},Quadratic:{In:function(a){return a*a},Out:function(a){return a*(2-a)},InOut:function(a){return(a*=2)<1?.5*a*a:-.5*(--a*(a-2)-1)}},Cubic:{In:function(a){return a*a*a},Out:function(a){return--a*a*a+1},InOut:function(a){return(a*=2)<1?.5*a*a*a:.5*((a-=2)*a*a+2)}},Quartic:{In:function(a){return a*a*a*a},Out:function(a){return 1- --a*a*a*a},InOut:function(a){return(a*=2)<1?.5*a*a*a*a:-.5*((a-=2)*a*a*a-2)}},Quintic:{In:function(a){return a*a*a*a*a},Out:function(a){return--a*a*a*a*a+1},InOut:function(a){return(a*=2)<1?.5*a*a*a*a*a:.5*((a-=2)*a*a*a*a+2)}},Sinusoidal:{In:function(a){return 0===a?0:1===a?1:1-Math.cos(a*Math.PI/2)},Out:function(a){return 0===a?0:1===a?1:Math.sin(a*Math.PI/2)},InOut:function(a){return 0===a?0:1===a?1:.5*(1-Math.cos(Math.PI*a))}},Exponential:{In:function(a){return 0===a?0:Math.pow(1024,a-1)},Out:function(a){return 1===a?1:1-Math.pow(2,-10*a)},InOut:function(a){return 0===a?0:1===a?1:(a*=2)<1?.5*Math.pow(1024,a-1):.5*(-Math.pow(2,-10*(a-1))+2)}},Circular:{In:function(a){return 1-Math.sqrt(1-a*a)},Out:function(a){return Math.sqrt(1- --a*a)},InOut:function(a){return(a*=2)<1?-.5*(Math.sqrt(1-a*a)-1):.5*(Math.sqrt(1-(a-=2)*a)+1)}},Elastic:{In:function(a){var b,c=.1,d=.4;return 0===a?0:1===a?1:(!c||1>c?(c=1,b=d/4):b=d*Math.asin(1/c)/(2*Math.PI),-(c*Math.pow(2,10*(a-=1))*Math.sin((a-b)*(2*Math.PI)/d)))},Out:function(a){var b,c=.1,d=.4;return 0===a?0:1===a?1:(!c||1>c?(c=1,b=d/4):b=d*Math.asin(1/c)/(2*Math.PI),c*Math.pow(2,-10*a)*Math.sin((a-b)*(2*Math.PI)/d)+1)},InOut:function(a){var b,c=.1,d=.4;return 0===a?0:1===a?1:(!c||1>c?(c=1,b=d/4):b=d*Math.asin(1/c)/(2*Math.PI),(a*=2)<1?-.5*(c*Math.pow(2,10*(a-=1))*Math.sin((a-b)*(2*Math.PI)/d)):c*Math.pow(2,-10*(a-=1))*Math.sin((a-b)*(2*Math.PI)/d)*.5+1)}},Back:{In:function(a){var b=1.70158;return a*a*((b+1)*a-b)},Out:function(a){var b=1.70158;return--a*a*((b+1)*a+b)+1},InOut:function(a){var b=2.5949095;return(a*=2)<1?.5*(a*a*((b+1)*a-b)):.5*((a-=2)*a*((b+1)*a+b)+2)}},Bounce:{In:function(a){return 1-c.Easing.Bounce.Out(1-a)},Out:function(a){return 1/2.75>a?7.5625*a*a:2/2.75>a?7.5625*(a-=1.5/2.75)*a+.75:2.5/2.75>a?7.5625*(a-=2.25/2.75)*a+.9375:7.5625*(a-=2.625/2.75)*a+.984375},InOut:function(a){return.5>a?.5*c.Easing.Bounce.In(2*a):.5*c.Easing.Bounce.Out(2*a-1)+.5}}},c.Easing.Default=c.Easing.Linear.None,c.Easing.Power0=c.Easing.Linear.None,c.Easing.Power1=c.Easing.Quadratic.Out,c.Easing.Power2=c.Easing.Cubic.Out,c.Easing.Power3=c.Easing.Quartic.Out,c.Easing.Power4=c.Easing.Quintic.Out,c.Time=function(a){this.game=a,this.time=0,this.prevTime=0,this.now=0,this.elapsed=0,this.elapsedMS=0,this.physicsElapsed=1/60,this.physicsElapsedMS=1/60*1e3,this.desiredFpsMult=1/60,this._desiredFps=60,this.suggestedFps=this.desiredFps,this.slowMotion=1,this.advancedTiming=!1,this.frames=0,this.fps=0,this.fpsMin=1e3,this.fpsMax=0,this.msMin=1e3,this.msMax=0,this.pauseDuration=0,this.timeToCall=0,this.timeExpected=0,this.events=new c.Timer(this.game,!1),this._frameCount=0,this._elapsedAccumulator=0,this._started=0,this._timeLastSecond=0,this._pauseStarted=0,this._justResumed=!1,this._timers=[]},c.Time.prototype={boot:function(){this._started=Date.now(),this.time=Date.now(),this.events.start(),this.timeExpected=this.time},add:function(a){return this._timers.push(a),a},create:function(a){void 0===a&&(a=!0);var b=new c.Timer(this.game,a);return this._timers.push(b),b},removeAll:function(){for(var a=0;aa;)this._timers[a].update(this.time)?a++:(this._timers.splice(a,1),b--)},updateAdvancedTiming:function(){this._frameCount++,this._elapsedAccumulator+=this.elapsed,this._frameCount>=2*this._desiredFps&&(this.suggestedFps=5*Math.floor(200/(this._elapsedAccumulator/this._frameCount)),this._frameCount=0,this._elapsedAccumulator=0),this.msMin=Math.min(this.msMin,this.elapsed),this.msMax=Math.max(this.msMax,this.elapsed),this.frames++,this.now>this._timeLastSecond+1e3&&(this.fps=Math.round(1e3*this.frames/(this.now-this._timeLastSecond)),this.fpsMin=Math.min(this.fpsMin,this.fps),this.fpsMax=Math.max(this.fpsMax,this.fps),this._timeLastSecond=this.now,this.frames=0)},gamePaused:function(){this._pauseStarted=Date.now(),this.events.pause();for(var a=this._timers.length;a--;)this._timers[a]._pause()},gameResumed:function(){this.time=Date.now(),this.pauseDuration=this.time-this._pauseStarted,this.events.resume();for(var a=this._timers.length;a--;)this._timers[a]._resume()},totalElapsedSeconds:function(){return.001*(this.time-this._started)},elapsedSince:function(a){return this.time-a},elapsedSecondsSince:function(a){return.001*(this.time-a)},reset:function(){this._started=this.time,this.removeAll()}},Object.defineProperty(c.Time.prototype,"desiredFps",{get:function(){return this._desiredFps},set:function(a){this._desiredFps=a,this.physicsElapsed=1/a,this.physicsElapsedMS=1e3*this.physicsElapsed,this.desiredFpsMult=1/a}}),c.Time.prototype.constructor=c.Time,c.Timer=function(a,b){void 0===b&&(b=!0),this.game=a,this.running=!1,this.autoDestroy=b,this.expired=!1,this.elapsed=0,this.events=[],this.onComplete=new c.Signal,this.nextTick=0,this.timeCap=1e3,this.paused=!1,this._codePaused=!1,this._started=0,this._pauseStarted=0,this._pauseTotal=0,this._now=Date.now(),this._len=0,this._marked=0,this._i=0,this._diff=0,this._newTick=0},c.Timer.MINUTE=6e4,c.Timer.SECOND=1e3,c.Timer.HALF=500,c.Timer.QUARTER=250,c.Timer.prototype={create:function(a,b,d,e,f,g){a=Math.round(a);var h=a;h+=0===this._now?this.game.time.time:this._now;var i=new c.TimerEvent(this,a,h,d,b,e,f,g);return this.events.push(i),this.order(),this.expired=!1,i},add:function(a,b,c){return this.create(a,!1,0,b,c,Array.prototype.slice.call(arguments,3))},repeat:function(a,b,c,d){return this.create(a,!1,b,c,d,Array.prototype.slice.call(arguments,4))},loop:function(a,b,c){return this.create(a,!0,0,b,c,Array.prototype.slice.call(arguments,3))},start:function(a){if(!this.running){this._started=this.game.time.time+(a||0),this.running=!0;for(var b=0;b0&&(this.events.sort(this.sortHandler),this.nextTick=this.events[0].tick)},sortHandler:function(a,b){return a.tickb.tick?1:0},clearPendingEvents:function(){for(this._i=this.events.length;this._i--;)this.events[this._i].pendingDelete&&this.events.splice(this._i,1);this._len=this.events.length,this._i=0},update:function(a){if(this.paused)return!0;if(this.elapsed=a-this._now,this._now=a,this.elapsed>this.timeCap&&this.adjustEvents(a-this.elapsed),this._marked=0,this.clearPendingEvents(),this.running&&this._now>=this.nextTick&&this._len>0){for(;this._i=this.events[this._i].tick&&!this.events[this._i].pendingDelete;)this._newTick=this._now+this.events[this._i].delay-(this._now-this.events[this._i].tick),this._newTick<0&&(this._newTick=this._now+this.events[this._i].delay),this.events[this._i].loop===!0?(this.events[this._i].tick=this._newTick,this.events[this._i].callback.apply(this.events[this._i].callbackContext,this.events[this._i].args)):this.events[this._i].repeatCount>0?(this.events[this._i].repeatCount--,this.events[this._i].tick=this._newTick,this.events[this._i].callback.apply(this.events[this._i].callbackContext,this.events[this._i].args)):(this._marked++,this.events[this._i].pendingDelete=!0,this.events[this._i].callback.apply(this.events[this._i].callbackContext,this.events[this._i].args)),this._i++;this.events.length>this._marked?this.order():(this.expired=!0,this.onComplete.dispatch(this))}return!this.expired||!this.autoDestroy},pause:function(){this.running&&(this._codePaused=!0,this.paused||(this._pauseStarted=this.game.time.time,this.paused=!0))},_pause:function(){!this.paused&&this.running&&(this._pauseStarted=this.game.time.time,this.paused=!0)},adjustEvents:function(a){for(var b=0;bc&&(c=0),this.events[b].tick=this._now+c}var d=this.nextTick-a;0>d?this.nextTick=this._now:this.nextTick=this._now+d},resume:function(){if(this.paused){var a=this.game.time.time;this._pauseTotal+=a-this._now,this._now=a,this.adjustEvents(this._pauseStarted),this.paused=!1,this._codePaused=!1}},_resume:function(){this._codePaused||this.resume()},removeAll:function(){this.onComplete.removeAll(),this.events.length=0,this._len=0,this._i=0},destroy:function(){this.onComplete.removeAll(),this.running=!1,this.events=[],this._len=0,this._i=0}},Object.defineProperty(c.Timer.prototype,"next",{get:function(){return this.nextTick}}),Object.defineProperty(c.Timer.prototype,"duration",{get:function(){return this.running&&this.nextTick>this._now?this.nextTick-this._now:0}}),Object.defineProperty(c.Timer.prototype,"length",{get:function(){return this.events.length}}),Object.defineProperty(c.Timer.prototype,"ms",{get:function(){return this.running?this._now-this._started-this._pauseTotal:0}}),Object.defineProperty(c.Timer.prototype,"seconds",{get:function(){return this.running?.001*this.ms:0}}),c.Timer.prototype.constructor=c.Timer,c.TimerEvent=function(a,b,c,d,e,f,g,h){this.timer=a,this.delay=b,this.tick=c,this.repeatCount=d-1,this.loop=e,this.callback=f,this.callbackContext=g,this.args=h,this.pendingDelete=!1},c.TimerEvent.prototype.constructor=c.TimerEvent,c.AnimationManager=function(a){this.sprite=a,this.game=a.game,this.currentFrame=null,this.currentAnim=null,this.updateIfVisible=!0,this.isLoaded=!1,this._frameData=null,this._anims={},this._outputFrames=[]},c.AnimationManager.prototype={loadFrameData:function(a,b){if(void 0===a)return!1;if(this.isLoaded)for(var c in this._anims)this._anims[c].updateFrameData(a);return this._frameData=a,void 0===b||null===b?this.frame=0:"string"==typeof b?this.frameName=b:this.frame=b,this.isLoaded=!0,!0},copyFrameData:function(a,b){if(this._frameData=a.clone(),this.isLoaded)for(var c in this._anims)this._anims[c].updateFrameData(this._frameData);return void 0===b||null===b?this.frame=0:"string"==typeof b?this.frameName=b:this.frame=b,this.isLoaded=!0,!0},add:function(a,b,d,e,f){return b=b||[],d=d||60,void 0===e&&(e=!1),void 0===f&&(f=!(!b||"number"!=typeof b[0])),this._outputFrames=[],this._frameData.getFrameIndexes(b,f,this._outputFrames),this._anims[a]=new c.Animation(this.game,this.sprite,a,this._frameData,this._outputFrames,d,e),this.currentAnim=this._anims[a],this.sprite.tilingTexture&&(this.sprite.refreshTexture=!0),this._anims[a]},validateFrames:function(a,b){void 0===b&&(b=!0);for(var c=0;cthis._frameData.total)return!1}else if(this._frameData.checkFrameName(a[c])===!1)return!1;return!0},play:function(a,b,c,d){return this._anims[a]?this.currentAnim===this._anims[a]?this.currentAnim.isPlaying===!1?(this.currentAnim.paused=!1,this.currentAnim.play(b,c,d)):this.currentAnim:(this.currentAnim&&this.currentAnim.isPlaying&&this.currentAnim.stop(),this.currentAnim=this._anims[a],this.currentAnim.paused=!1,this.currentFrame=this.currentAnim.currentFrame,this.currentAnim.play(b,c,d)):void 0},stop:function(a,b){void 0===b&&(b=!1),!this.currentAnim||"string"==typeof a&&a!==this.currentAnim.name||this.currentAnim.stop(b)},update:function(){return this.updateIfVisible&&!this.sprite.visible?!1:this.currentAnim&&this.currentAnim.update()?(this.currentFrame=this.currentAnim.currentFrame,!0):!1},next:function(a){this.currentAnim&&(this.currentAnim.next(a),this.currentFrame=this.currentAnim.currentFrame)},previous:function(a){this.currentAnim&&(this.currentAnim.previous(a),this.currentFrame=this.currentAnim.currentFrame)},getAnimation:function(a){return"string"==typeof a&&this._anims[a]?this._anims[a]:null},refreshFrame:function(){},destroy:function(){var a=null;for(var a in this._anims)this._anims.hasOwnProperty(a)&&this._anims[a].destroy();this._anims={},this._outputFrames=[],this._frameData=null,this.currentAnim=null,this.currentFrame=null,this.sprite=null,this.game=null}},c.AnimationManager.prototype.constructor=c.AnimationManager,Object.defineProperty(c.AnimationManager.prototype,"frameData",{get:function(){return this._frameData}}),Object.defineProperty(c.AnimationManager.prototype,"frameTotal",{get:function(){return this._frameData.total}}),Object.defineProperty(c.AnimationManager.prototype,"paused",{get:function(){return this.currentAnim.isPaused},set:function(a){this.currentAnim.paused=a}}),Object.defineProperty(c.AnimationManager.prototype,"name",{get:function(){return this.currentAnim?this.currentAnim.name:void 0}}),Object.defineProperty(c.AnimationManager.prototype,"frame",{get:function(){return this.currentFrame?this.currentFrame.index:void 0},set:function(a){"number"==typeof a&&this._frameData&&null!==this._frameData.getFrame(a)&&(this.currentFrame=this._frameData.getFrame(a),this.currentFrame&&this.sprite.setFrame(this.currentFrame))}}),Object.defineProperty(c.AnimationManager.prototype,"frameName",{get:function(){return this.currentFrame?this.currentFrame.name:void 0},set:function(a){"string"==typeof a&&this._frameData&&null!==this._frameData.getFrameByName(a)?(this.currentFrame=this._frameData.getFrameByName(a),this.currentFrame&&(this._frameIndex=this.currentFrame.index,this.sprite.setFrame(this.currentFrame))):console.warn("Cannot set frameName: "+a)}}),c.Animation=function(a,b,d,e,f,g,h){void 0===h&&(h=!1),this.game=a,this._parent=b,this._frameData=e,this.name=d,this._frames=[],this._frames=this._frames.concat(f),this.delay=1e3/g,this.loop=h,this.loopCount=0,this.killOnComplete=!1,this.isFinished=!1,this.isPlaying=!1,this.isPaused=!1,this._pauseStartTime=0,this._frameIndex=0,this._frameDiff=0,this._frameSkip=1,this.currentFrame=this._frameData.getFrame(this._frames[this._frameIndex]),this.onStart=new c.Signal,this.onUpdate=null,this.onComplete=new c.Signal,this.onLoop=new c.Signal,this.isReversed=!1,this.game.onPause.add(this.onPause,this),this.game.onResume.add(this.onResume,this)},c.Animation.prototype={play:function(a,b,c){return"number"==typeof a&&(this.delay=1e3/a),"boolean"==typeof b&&(this.loop=b),"undefined"!=typeof c&&(this.killOnComplete=c),this.isPlaying=!0,this.isFinished=!1,this.paused=!1,this.loopCount=0,this._timeLastFrame=this.game.time.time,this._timeNextFrame=this.game.time.time+this.delay,this._frameIndex=this.isReversed?this._frames.length-1:0,this.updateCurrentFrame(!1,!0),this._parent.events.onAnimationStart$dispatch(this._parent,this),this.onStart.dispatch(this._parent,this),this._parent.animations.currentAnim=this,this._parent.animations.currentFrame=this.currentFrame,this},restart:function(){this.isPlaying=!0,this.isFinished=!1,this.paused=!1,this.loopCount=0,this._timeLastFrame=this.game.time.time,this._timeNextFrame=this.game.time.time+this.delay,this._frameIndex=0,this.currentFrame=this._frameData.getFrame(this._frames[this._frameIndex]),this._parent.setFrame(this.currentFrame),this._parent.animations.currentAnim=this,this._parent.animations.currentFrame=this.currentFrame,this.onStart.dispatch(this._parent,this)},reverse:function(){return this.reversed=!this.reversed,this},reverseOnce:function(){return this.onComplete.addOnce(this.reverse.bind(this)),this.reverse()},setFrame:function(a,b){var c;if(void 0===b&&(b=!1),"string"==typeof a)for(var d=0;d=this._timeNextFrame?(this._frameSkip=1,this._frameDiff=this.game.time.time-this._timeNextFrame,this._timeLastFrame=this.game.time.time,this._frameDiff>this.delay&&(this._frameSkip=Math.floor(this._frameDiff/this.delay),this._frameDiff-=this._frameSkip*this.delay),this._timeNextFrame=this.game.time.time+(this.delay-this._frameDiff),this.isReversed?this._frameIndex-=this._frameSkip:this._frameIndex+=this._frameSkip,!this.isReversed&&this._frameIndex>=this._frames.length||this.isReversed&&this._frameIndex<=-1?this.loop?(this._frameIndex=Math.abs(this._frameIndex)%this._frames.length,this.isReversed&&(this._frameIndex=this._frames.length-1-this._frameIndex),this.currentFrame=this._frameData.getFrame(this._frames[this._frameIndex]),this.currentFrame&&this._parent.setFrame(this.currentFrame),this.loopCount++,this._parent.events.onAnimationLoop$dispatch(this._parent,this),this.onLoop.dispatch(this._parent,this),this.onUpdate?(this.onUpdate.dispatch(this,this.currentFrame),!!this._frameData):!0):(this.complete(),!1):this.updateCurrentFrame(!0)):!1},updateCurrentFrame:function(a,b){if(void 0===b&&(b=!1),!this._frameData)return!1;var c=this.currentFrame.index;return this.currentFrame=this._frameData.getFrame(this._frames[this._frameIndex]),this.currentFrame&&(b||!b&&c!==this.currentFrame.index)&&this._parent.setFrame(this.currentFrame),this.onUpdate&&a?(this.onUpdate.dispatch(this,this.currentFrame),!!this._frameData):!0},next:function(a){void 0===a&&(a=1);var b=this._frameIndex+a;b>=this._frames.length&&(this.loop?b%=this._frames.length:b=this._frames.length-1),b!==this._frameIndex&&(this._frameIndex=b,this.updateCurrentFrame(!0))},previous:function(a){void 0===a&&(a=1);var b=this._frameIndex-a;0>b&&(this.loop?b=this._frames.length+b:b++),b!==this._frameIndex&&(this._frameIndex=b,this.updateCurrentFrame(!0))},updateFrameData:function(a){this._frameData=a,this.currentFrame=this._frameData?this._frameData.getFrame(this._frames[this._frameIndex%this._frames.length]):null},destroy:function(){this._frameData&&(this.game.onPause.remove(this.onPause,this),this.game.onResume.remove(this.onResume,this),this.game=null,this._parent=null,this._frames=null,this._frameData=null,this.currentFrame=null,this.isPlaying=!1,this.onStart.dispose(),this.onLoop.dispose(),this.onComplete.dispose(),this.onUpdate&&this.onUpdate.dispose())},complete:function(){this._frameIndex=this._frames.length-1,this.currentFrame=this._frameData.getFrame(this._frames[this._frameIndex]),this.isPlaying=!1,this.isFinished=!0,this.paused=!1,this._parent.events.onAnimationComplete$dispatch(this._parent,this),this.onComplete.dispatch(this._parent,this),this.killOnComplete&&this._parent.kill()}},c.Animation.prototype.constructor=c.Animation,Object.defineProperty(c.Animation.prototype,"paused",{get:function(){return this.isPaused},set:function(a){this.isPaused=a,a?this._pauseStartTime=this.game.time.time:this.isPlaying&&(this._timeNextFrame=this.game.time.time+this.delay)}}),Object.defineProperty(c.Animation.prototype,"reversed",{get:function(){return this.isReversed},set:function(a){this.isReversed=a}}),Object.defineProperty(c.Animation.prototype,"frameTotal",{get:function(){return this._frames.length}}),Object.defineProperty(c.Animation.prototype,"frame",{get:function(){return null!==this.currentFrame?this.currentFrame.index:this._frameIndex},set:function(a){this.currentFrame=this._frameData.getFrame(this._frames[a]),null!==this.currentFrame&&(this._frameIndex=a,this._parent.setFrame(this.currentFrame),this.onUpdate&&this.onUpdate.dispatch(this,this.currentFrame))}}),Object.defineProperty(c.Animation.prototype,"speed",{get:function(){return Math.round(1e3/this.delay)},set:function(a){a>=1&&(this.delay=1e3/a)}}),Object.defineProperty(c.Animation.prototype,"enableUpdate",{get:function(){return null!==this.onUpdate},set:function(a){a&&null===this.onUpdate?this.onUpdate=new c.Signal:a||null===this.onUpdate||(this.onUpdate.dispose(),this.onUpdate=null)}}),c.Animation.generateFrameNames=function(a,b,d,e,f){void 0===e&&(e="");var g=[],h="";if(d>b)for(var i=b;d>=i;i++)h="number"==typeof f?c.Utils.pad(i.toString(),f,"0",1):i.toString(),h=a+h+e,g.push(h);else for(var i=b;i>=d;i--)h="number"==typeof f?c.Utils.pad(i.toString(),f,"0",1):i.toString(),h=a+h+e,g.push(h);return g},c.Frame=function(a,b,d,e,f,g){this.index=a,this.x=b,this.y=d,this.width=e,this.height=f,this.name=g,this.centerX=Math.floor(e/2),this.centerY=Math.floor(f/2),this.distance=c.Math.distance(0,0,e,f),this.rotated=!1,this.rotationDirection="cw",this.trimmed=!1,this.sourceSizeW=e,this.sourceSizeH=f,this.spriteSourceSizeX=0,this.spriteSourceSizeY=0,this.spriteSourceSizeW=0,this.spriteSourceSizeH=0,this.right=this.x+this.width,this.bottom=this.y+this.height},c.Frame.prototype={resize:function(a,b){this.width=a,this.height=b,this.centerX=Math.floor(a/2),this.centerY=Math.floor(b/2),this.distance=c.Math.distance(0,0,a,b),this.sourceSizeW=a,this.sourceSizeH=b,this.right=this.x+a,this.bottom=this.y+b},setTrim:function(a,b,c,d,e,f,g){this.trimmed=a,a&&(this.sourceSizeW=b,this.sourceSizeH=c,this.centerX=Math.floor(b/2),this.centerY=Math.floor(c/2),this.spriteSourceSizeX=d,this.spriteSourceSizeY=e,this.spriteSourceSizeW=f,this.spriteSourceSizeH=g)},clone:function(){var a=new c.Frame(this.index,this.x,this.y,this.width,this.height,this.name);for(var b in this)this.hasOwnProperty(b)&&(a[b]=this[b]);return a},getRect:function(a){return void 0===a?a=new c.Rectangle(this.x,this.y,this.width,this.height):a.setTo(this.x,this.y,this.width,this.height),a}},c.Frame.prototype.constructor=c.Frame,c.FrameData=function(){this._frames=[],this._frameNames=[]},c.FrameData.prototype={addFrame:function(a){return a.index=this._frames.length,this._frames.push(a),""!==a.name&&(this._frameNames[a.name]=a.index),a},getFrame:function(a){return a>=this._frames.length&&(a=0),this._frames[a]},getFrameByName:function(a){return"number"==typeof this._frameNames[a]?this._frames[this._frameNames[a]]:null},checkFrameName:function(a){return null!=this._frameNames[a]},clone:function(){for(var a=new c.FrameData,b=0;b=d;d++)c.push(this._frames[d]);return c},getFrames:function(a,b,c){if(void 0===b&&(b=!0),void 0===c&&(c=[]),void 0===a||0===a.length)for(var d=0;d=d&&(d=Math.floor(-j/Math.min(-1,d))),0>=e&&(e=Math.floor(-k/Math.min(-1,e)));var l=Math.floor((j-g)/(d+h)),m=Math.floor((k-g)/(e+h)),n=l*m;if(-1!==f&&(n=f),0===j||0===k||d>j||e>k||0===n)return console.warn("Phaser.AnimationParser.spriteSheet: '"+b+"'s width/height zero or width/height < given frameWidth/frameHeight"),null;for(var o=new c.FrameData,p=g,q=g,r=0;n>r;r++)o.addFrame(new c.Frame(r,p,q,d,e,"")),p+=d+h,p+d>j&&(p=g,q+=e+h);return o},JSONData:function(a,b){if(!b.frames)return console.warn("Phaser.AnimationParser.JSONData: Invalid Texture Atlas JSON given, missing 'frames' array"),void console.log(b);for(var d,e=new c.FrameData,f=b.frames,g=0;g tag");for(var d,e,f,g,h,i,j,k,l,m,n,o=new c.FrameData,p=b.getElementsByTagName("SubTexture"),q=0;q-1},getAssetIndex:function(a,b){for(var c=-1,d=0;d-1?{index:c,file:this._fileList[c]}:!1},reset:function(a,b){void 0===b&&(b=!1),this.resetLocked||(a&&(this.preloadSprite=null),this.isLoading=!1,this._processingHead=0,this._fileList.length=0,this._flightQueue.length=0,this._fileLoadStarted=!1,this._totalFileCount=0,this._totalPackCount=0,this._loadedPackCount=0,this._loadedFileCount=0,b&&(this.onLoadStart.removeAll(),this.onLoadComplete.removeAll(),this.onPackComplete.removeAll(),this.onFileStart.removeAll(),this.onFileComplete.removeAll(),this.onFileError.removeAll()))},addToFileList:function(a,b,c,d,e,f){if(void 0===e&&(e=!1),void 0===b||""===b)return console.warn("Phaser.Loader: Invalid or no key given of type "+a),this;if(void 0===c||null===c){if(!f)return console.warn("Phaser.Loader: No URL given for file type: "+a+" key: "+b),this;c=b+f}var g={type:a,key:b,path:this.path,url:c,syncPoint:this._withSyncPointDepth>0,data:null,loading:!1,loaded:!1,error:!1};if(d)for(var h in d)g[h]=d[h];var i=this.getAssetIndex(a,b);if(e&&i>-1){var j=this._fileList[i];j.loading||j.loaded?(this._fileList.push(g),this._totalFileCount++):this._fileList[i]=g}else-1===i&&(this._fileList.push(g),this._totalFileCount++);return this},replaceInFileList:function(a,b,c,d){return this.addToFileList(a,b,c,d,!0)},pack:function(a,b,c,d){if(void 0===b&&(b=null),void 0===c&&(c=null),void 0===d&&(d=null),!b&&!c)return console.warn("Phaser.Loader.pack - Both url and data are null. One must be set."),this;var e={type:"packfile",key:a,url:b,path:this.path,syncPoint:!0,data:null,loading:!1,loaded:!1,error:!1,callbackContext:d};c&&("string"==typeof c&&(c=JSON.parse(c)),e.data=c||{},e.loaded=!0);for(var f=0;f=e||d&&this._loadedPackCount===this._totalPackCount)break}if(this.updateProgress(),this._processingHead>=this._fileList.length)this.finishedLoading();else if(!this._flightQueue.length){console.warn("Phaser.Loader - aborting: processing queue empty, loading may have stalled");var f=this;setTimeout(function(){f.finishedLoading(!0)},2e3)}},finishedLoading:function(a){this.hasLoaded||(this.hasLoaded=!0,this.isLoading=!1,a||this._fileLoadStarted||(this._fileLoadStarted=!0,this.onLoadStart.dispatch()),this.onLoadComplete.dispatch(),this.game.state.loadComplete(),this.reset())},asyncComplete:function(a,b){void 0===b&&(b=""),a.loaded=!0,a.error=!!b,b&&(a.errorMessage=b,console.warn("Phaser.Loader - "+a.type+"["+a.key+"]: "+b)),this.processLoadQueue()},processPack:function(a){var b=a.data[a.key];if(!b)return void console.warn("Phaser.Loader - "+a.key+": pack has data, but not for pack key");for(var d=0;d=400&&f.status<=599?e.call(g,a,f):d.call(g,a,f)}catch(b){g.hasLoaded?window.console&&console.error(b):g.asyncComplete(a,b.message||"Exception")}},f.onerror=function(){try{return e.call(g,a,f)}catch(b){g.hasLoaded?window.console&&console.error(b):g.asyncComplete(a,b.message||"Exception")}},a.requestObject=f,a.requestUrl=b,f.send()},xhrLoadWithXDR:function(a,b,c,d,e){this._warnedAboutXDomainRequest||this.game.device.ie&&!(this.game.device.ieVersion>=10)||(this._warnedAboutXDomainRequest=!0,console.warn("Phaser.Loader - using XDomainRequest outside of IE 9"));var f=new window.XDomainRequest;f.open("GET",b,!0),f.responseType=c,f.timeout=3e3,e=e||this.fileError;var g=this;f.onerror=function(){try{return e.call(g,a,f)}catch(b){g.asyncComplete(a,b.message||"Exception")}},f.ontimeout=function(){try{return e.call(g,a,f)}catch(b){g.asyncComplete(a,b.message||"Exception")}},f.onprogress=function(){},f.onload=function(){try{return 4==f.readyState&&f.status>=400&&f.status<=599?e.call(g,a,f):d.call(g,a,f)}catch(b){g.asyncComplete(a,b.message||"Exception")}},a.requestObject=f,a.requestUrl=b,setTimeout(function(){f.send()},0)},getVideoURL:function(a){for(var b=0;b=0&&(d=d.substr(0,d.indexOf("?")));var e=d.substr((Math.max(0,d.lastIndexOf("."))||1/0)+1);if(c=e.toLowerCase(),this.game.device.canPlayVideo(c))return a[b]}}return null},getAudioURL:function(a){if(this.game.sound.noAudio)return null;for(var b=0;b=0&&(d=d.substr(0,d.indexOf("?"))); +var e=d.substr((Math.max(0,d.lastIndexOf("."))||1/0)+1);if(c=e.toLowerCase(),this.game.device.canPlayAudio(c))return a[b]}}return null},fileError:function(a,b,c){var d=a.requestUrl||this.transformUrl(a.url,a),e="error loading asset from URL "+d;!c&&b&&(c=b.status),c&&(e=e+" ("+c+")"),this.asyncComplete(a,e)},fileComplete:function(a,b){var d=!0;switch(a.type){case"packfile":var e=JSON.parse(b.responseText);a.data=e||{};break;case"image":this.cache.addImage(a.key,a.url,a.data);break;case"spritesheet":this.cache.addSpriteSheet(a.key,a.url,a.data,a.frameWidth,a.frameHeight,a.frameMax,a.margin,a.spacing);break;case"textureatlas":if(null==a.atlasURL)this.cache.addTextureAtlas(a.key,a.url,a.data,a.atlasData,a.format);else if(d=!1,a.format==c.Loader.TEXTURE_ATLAS_JSON_ARRAY||a.format==c.Loader.TEXTURE_ATLAS_JSON_HASH||a.format==c.Loader.TEXTURE_ATLAS_JSON_PYXEL)this.xhrLoad(a,this.transformUrl(a.atlasURL,a),"text",this.jsonLoadComplete);else{if(a.format!=c.Loader.TEXTURE_ATLAS_XML_STARLING)throw new Error("Phaser.Loader. Invalid Texture Atlas format: "+a.format);this.xhrLoad(a,this.transformUrl(a.atlasURL,a),"text",this.xmlLoadComplete)}break;case"bitmapfont":a.atlasURL?(d=!1,this.xhrLoad(a,this.transformUrl(a.atlasURL,a),"text",function(a,b){var c;try{c=JSON.parse(b.responseText)}catch(d){}c?(a.atlasType="json",this.jsonLoadComplete(a,b)):(a.atlasType="xml",this.xmlLoadComplete(a,b))})):this.cache.addBitmapFont(a.key,a.url,a.data,a.atlasData,a.atlasType,a.xSpacing,a.ySpacing);break;case"video":if(a.asBlob)try{a.data=b.response}catch(f){throw new Error("Phaser.Loader. Unable to parse video file as Blob: "+a.key)}this.cache.addVideo(a.key,a.url,a.data,a.asBlob);break;case"audio":this.game.sound.usingWebAudio?(a.data=b.response,this.cache.addSound(a.key,a.url,a.data,!0,!1),a.autoDecode&&this.game.sound.decode(a.key)):this.cache.addSound(a.key,a.url,a.data,!1,!0);break;case"text":a.data=b.responseText,this.cache.addText(a.key,a.url,a.data);break;case"shader":a.data=b.responseText,this.cache.addShader(a.key,a.url,a.data);break;case"physics":var e=JSON.parse(b.responseText);this.cache.addPhysicsData(a.key,a.url,e,a.format);break;case"script":a.data=document.createElement("script"),a.data.language="javascript",a.data.type="text/javascript",a.data.defer=!1,a.data.text=b.responseText,document.head.appendChild(a.data),a.callback&&(a.data=a.callback.call(a.callbackContext,a.key,b.responseText));break;case"binary":a.callback?a.data=a.callback.call(a.callbackContext,a.key,b.response):a.data=b.response,this.cache.addBinary(a.key,a.data)}d&&this.asyncComplete(a)},jsonLoadComplete:function(a,b){var c=JSON.parse(b.responseText);"tilemap"===a.type?this.cache.addTilemap(a.key,a.url,c,a.format):"bitmapfont"===a.type?this.cache.addBitmapFont(a.key,a.url,a.data,c,a.atlasType,a.xSpacing,a.ySpacing):"json"===a.type?this.cache.addJSON(a.key,a.url,c):this.cache.addTextureAtlas(a.key,a.url,a.data,c,a.format),this.asyncComplete(a)},csvLoadComplete:function(a,b){var c=b.responseText;this.cache.addTilemap(a.key,a.url,c,a.format),this.asyncComplete(a)},xmlLoadComplete:function(a,b){var c=b.responseText,d=this.parseXml(c);if(!d){var e=b.responseType||b.contentType;return console.warn("Phaser.Loader - "+a.key+": invalid XML ("+e+")"),void this.asyncComplete(a,"invalid XML")}"bitmapfont"===a.type?this.cache.addBitmapFont(a.key,a.url,a.data,d,a.atlasType,a.xSpacing,a.ySpacing):"textureatlas"===a.type?this.cache.addTextureAtlas(a.key,a.url,a.data,d,a.format):"xml"===a.type&&this.cache.addXML(a.key,a.url,d),this.asyncComplete(a)},parseXml:function(a){var b;try{if(window.DOMParser){var c=new DOMParser;b=c.parseFromString(a,"text/xml")}else b=new ActiveXObject("Microsoft.XMLDOM"),b.async="false",b.loadXML(a)}catch(d){b=null}return b&&b.documentElement&&!b.getElementsByTagName("parsererror").length?b:null},updateProgress:function(){this.preloadSprite&&(0===this.preloadSprite.direction?this.preloadSprite.rect.width=Math.floor(this.preloadSprite.width/100*this.progress):this.preloadSprite.rect.height=Math.floor(this.preloadSprite.height/100*this.progress),this.preloadSprite.sprite?this.preloadSprite.sprite.updateCrop():this.preloadSprite=null)},totalLoadedFiles:function(){return this._loadedFileCount},totalQueuedFiles:function(){return this._totalFileCount-this._loadedFileCount},totalLoadedPacks:function(){return this._totalPackCount},totalQueuedPacks:function(){return this._totalPackCount-this._loadedPackCount}},Object.defineProperty(c.Loader.prototype,"progressFloat",{get:function(){var a=this._loadedFileCount/this._totalFileCount*100;return c.Math.clamp(a||0,0,100)}}),Object.defineProperty(c.Loader.prototype,"progress",{get:function(){return Math.round(this.progressFloat)}}),c.Loader.prototype.constructor=c.Loader,c.LoaderParser={bitmapFont:function(a,b,c,d){return this.xmlBitmapFont(a,b,c,d)},xmlBitmapFont:function(a,b,c,d){var e={},f=a.getElementsByTagName("info")[0],g=a.getElementsByTagName("common")[0];e.font=f.getAttribute("face"),e.size=parseInt(f.getAttribute("size"),10),e.lineHeight=parseInt(g.getAttribute("lineHeight"),10)+d,e.chars={};for(var h=a.getElementsByTagName("char"),i=0;i=this.durationMS&&(this.usingWebAudio?this.loop?(this.onLoop.dispatch(this),this.isPlaying=!1,""===this.currentMarker?(this.currentTime=0,this.startTime=this.game.time.time,this.isPlaying=!0):(this.onMarkerComplete.dispatch(this.currentMarker,this),this.play(this.currentMarker,0,this.volume,!0,!0))):""!==this.currentMarker&&this.stop():this.loop?(this.onLoop.dispatch(this),""===this.currentMarker&&(this.currentTime=0,this.startTime=this.game.time.time),this.isPlaying=!1,this.play(this.currentMarker,0,this.volume,!0,!0)):this.stop())))):void this.destroy()},loopFull:function(a){this.play(null,0,a,!0)},play:function(a,b,c,d,e){if(void 0!==a&&a!==!1&&null!==a||(a=""),void 0===e&&(e=!0),this.isPlaying&&!this.allowMultiple&&!e&&!this.override)return this;if(this._sound&&this.isPlaying&&!this.allowMultiple&&(this.override||e))if(this.usingWebAudio){if(void 0===this._sound.stop)this._sound.noteOff(0);else try{this._sound.stop(0)}catch(f){}this.externalNode?this._sound.disconnect(this.externalNode):this.gainNode&&this._sound.disconnect(this.gainNode)}else this.usingAudioTag&&(this._sound.pause(),this._sound.currentTime=0);if(""===a&&Object.keys(this.markers).length>0)return this;if(""!==a){if(this.currentMarker=a,!this.markers[a])return this;this.position=this.markers[a].start,this.volume=this.markers[a].volume,this.loop=this.markers[a].loop,this.duration=this.markers[a].duration,this.durationMS=this.markers[a].durationMS,"undefined"!=typeof c&&(this.volume=c),"undefined"!=typeof d&&(this.loop=d),this._tempMarker=a,this._tempPosition=this.position,this._tempVolume=this.volume,this._tempLoop=this.loop}else b=b||0,void 0===c&&(c=this._volume),void 0===d&&(d=this.loop),this.position=Math.max(0,b),this.volume=c,this.loop=d,this.duration=0,this.durationMS=0,this._tempMarker=a,this._tempPosition=b,this._tempVolume=c,this._tempLoop=d;return this.usingWebAudio?this.game.cache.isSoundDecoded(this.key)?(this._sound=this.context.createBufferSource(),this.externalNode?this._sound.connect(this.externalNode):this._sound.connect(this.gainNode),this._buffer=this.game.cache.getSoundData(this.key),this._sound.buffer=this._buffer,this.loop&&""===a&&(this._sound.loop=!0),this.loop||""!==a||(this._sound.onended=this.onEndedHandler.bind(this)),this.totalDuration=this._sound.buffer.duration,0===this.duration&&(this.duration=this.totalDuration,this.durationMS=Math.ceil(1e3*this.totalDuration)),void 0===this._sound.start?this._sound.noteGrainOn(0,this.position,this.duration):this.loop&&""===a?this._sound.start(0,0):this._sound.start(0,this.position,this.duration),this.isPlaying=!0,this.startTime=this.game.time.time,this.currentTime=0,this.stopTime=this.startTime+this.durationMS,this.onPlay.dispatch(this)):(this.pendingPlayback=!0,this.game.cache.getSound(this.key)&&this.game.cache.getSound(this.key).isDecoding===!1&&this.game.sound.decode(this.key,this)):this.game.cache.getSound(this.key)&&this.game.cache.getSound(this.key).locked?(this.game.cache.reloadSound(this.key),this.pendingPlayback=!0):this._sound&&(this.game.device.cocoonJS||4===this._sound.readyState)?(this._sound.play(),this.totalDuration=this._sound.duration,0===this.duration&&(this.duration=this.totalDuration,this.durationMS=1e3*this.totalDuration),this._sound.currentTime=this.position,this._sound.muted=this._muted,this._muted||this.game.sound.mute?this._sound.volume=0:this._sound.volume=this._volume,this.isPlaying=!0,this.startTime=this.game.time.time,this.currentTime=0,this.stopTime=this.startTime+this.durationMS,this.onPlay.dispatch(this)):this.pendingPlayback=!0,this},restart:function(a,b,c,d){a=a||"",b=b||0,c=c||1,void 0===d&&(d=!1),this.play(a,b,c,d,!0)},pause:function(){this.isPlaying&&this._sound&&(this.paused=!0,this.pausedPosition=this.currentTime,this.pausedTime=this.game.time.time,this._tempPause=this._sound.currentTime,this.onPause.dispatch(this),this.stop())},resume:function(){if(this.paused&&this._sound){if(this.usingWebAudio){var a=Math.max(0,this.position+this.pausedPosition/1e3);this._sound=this.context.createBufferSource(),this._sound.buffer=this._buffer,this.externalNode?this._sound.connect(this.externalNode):this._sound.connect(this.gainNode),this.loop&&(this._sound.loop=!0),this.loop||""!==this.currentMarker||(this._sound.onended=this.onEndedHandler.bind(this));var b=this.duration-this.pausedPosition/1e3;void 0===this._sound.start?this._sound.noteGrainOn(0,a,b):this.loop&&this.game.device.chrome?42===this.game.device.chromeVersion?this._sound.start(0):this._sound.start(0,a):this._sound.start(0,a,b)}else this._sound.currentTime=this._tempPause,this._sound.play();this.isPlaying=!0,this.paused=!1,this.startTime+=this.game.time.time-this.pausedTime,this.onResume.dispatch(this)}},stop:function(){if(this.isPlaying&&this._sound)if(this.usingWebAudio){if(void 0===this._sound.stop)this._sound.noteOff(0);else try{this._sound.stop(0)}catch(a){}this.externalNode?this._sound.disconnect(this.externalNode):this.gainNode&&this._sound.disconnect(this.gainNode)}else this.usingAudioTag&&(this._sound.pause(),this._sound.currentTime=0);if(this.pendingPlayback=!1,this.isPlaying=!1,!this.paused){var b=this.currentMarker;""!==this.currentMarker&&this.onMarkerComplete.dispatch(this.currentMarker,this),this.currentMarker="",null!==this.fadeTween&&this.fadeTween.stop(),this.onStop.dispatch(this,b)}},fadeIn:function(a,b,c){void 0===b&&(b=!1),void 0===c&&(c=this.currentMarker),this.paused||(this.play(c,0,0,b),this.fadeTo(a,1))},fadeOut:function(a){this.fadeTo(a,0)},fadeTo:function(a,b){if(this.isPlaying&&!this.paused&&b!==this.volume){if(void 0===a&&(a=1e3),void 0===b)return void console.warn("Phaser.Sound.fadeTo: No Volume Specified.");this.fadeTween=this.game.add.tween(this).to({volume:b},a,c.Easing.Linear.None,!0),this.fadeTween.onComplete.add(this.fadeComplete,this)}},fadeComplete:function(){this.onFadeComplete.dispatch(this,this.volume),0===this.volume&&this.stop()},updateGlobalVolume:function(a){this.usingAudioTag&&this._sound&&(this._sound.volume=a*this._volume)},destroy:function(a){void 0===a&&(a=!0),this.stop(),a?this.game.sound.remove(this):(this.markers={},this.context=null,this._buffer=null,this.externalNode=null,this.onDecoded.dispose(),this.onPlay.dispose(),this.onPause.dispose(),this.onResume.dispose(),this.onLoop.dispose(),this.onStop.dispose(),this.onMute.dispose(),this.onMarkerComplete.dispose())}},c.Sound.prototype.constructor=c.Sound,Object.defineProperty(c.Sound.prototype,"isDecoding",{get:function(){return this.game.cache.getSound(this.key).isDecoding}}),Object.defineProperty(c.Sound.prototype,"isDecoded",{get:function(){return this.game.cache.isSoundDecoded(this.key)}}),Object.defineProperty(c.Sound.prototype,"mute",{get:function(){return this._muted||this.game.sound.mute},set:function(a){a=a||!1,a!==this._muted&&(a?(this._muted=!0,this._muteVolume=this._tempVolume,this.usingWebAudio?this.gainNode.gain.value=0:this.usingAudioTag&&this._sound&&(this._sound.volume=0)):(this._muted=!1,this.usingWebAudio?this.gainNode.gain.value=this._muteVolume:this.usingAudioTag&&this._sound&&(this._sound.volume=this._muteVolume)),this.onMute.dispatch(this))}}),Object.defineProperty(c.Sound.prototype,"volume",{get:function(){return this._volume},set:function(a){return this.game.device.firefox&&this.usingAudioTag&&(a=this.game.math.clamp(a,0,1)),this._muted?void(this._muteVolume=a):(this._tempVolume=a,this._volume=a,void(this.usingWebAudio?this.gainNode.gain.value=a:this.usingAudioTag&&this._sound&&(this._sound.volume=a)))}}),c.SoundManager=function(a){this.game=a,this.onSoundDecode=new c.Signal,this.onVolumeChange=new c.Signal,this.onMute=new c.Signal,this.onUnMute=new c.Signal,this.context=null,this.usingWebAudio=!1,this.usingAudioTag=!1,this.noAudio=!1,this.connectToMaster=!0,this.touchLocked=!1,this.channels=32,this.muteOnPause=!0,this._codeMuted=!1,this._muted=!1,this._unlockSource=null,this._volume=1,this._sounds=[],this._watchList=new c.ArraySet,this._watching=!1,this._watchCallback=null,this._watchContext=null},c.SoundManager.prototype={boot:function(){if(this.game.device.iOS&&this.game.device.webAudio===!1&&(this.channels=1),window.PhaserGlobal){if(window.PhaserGlobal.disableAudio===!0)return this.noAudio=!0,void(this.touchLocked=!1);if(window.PhaserGlobal.disableWebAudio===!0)return this.usingAudioTag=!0,void(this.touchLocked=!1)}if(window.PhaserGlobal&&window.PhaserGlobal.audioContext)this.context=window.PhaserGlobal.audioContext;else if(window.AudioContext)try{this.context=new window.AudioContext}catch(a){this.context=null,this.usingWebAudio=!1,this.touchLocked=!1}else if(window.webkitAudioContext)try{this.context=new window.webkitAudioContext}catch(a){this.context=null,this.usingWebAudio=!1,this.touchLocked=!1}if(null===this.context){if(void 0===window.Audio)return void(this.noAudio=!0);this.usingAudioTag=!0}else this.usingWebAudio=!0,void 0===this.context.createGain?this.masterGain=this.context.createGainNode():this.masterGain=this.context.createGain(),this.masterGain.gain.value=1,this.masterGain.connect(this.context.destination);this.noAudio||(!this.game.device.cocoonJS&&this.game.device.iOS||window.PhaserGlobal&&window.PhaserGlobal.fakeiOSTouchLock)&&this.setTouchLock()},setTouchLock:function(){this.noAudio||window.PhaserGlobal&&window.PhaserGlobal.disableAudio===!0||(this.game.device.iOSVersion>8?this.game.input.touch.addTouchLockCallback(this.unlock,this,!0):this.game.input.touch.addTouchLockCallback(this.unlock,this),this.touchLocked=!0)},unlock:function(){if(this.noAudio||!this.touchLocked||null!==this._unlockSource)return!0;if(this.usingAudioTag)this.touchLocked=!1,this._unlockSource=null;else if(this.usingWebAudio){var a=this.context.createBuffer(1,1,22050);this._unlockSource=this.context.createBufferSource(),this._unlockSource.buffer=a,this._unlockSource.connect(this.context.destination),void 0===this._unlockSource.start?this._unlockSource.noteOn(0):this._unlockSource.start(0)}return!0},stopAll:function(){if(!this.noAudio)for(var a=0;aa?a=0:a>1&&(a=1),this._volume!==a){if(this._volume=a,this.usingWebAudio)this.masterGain.gain.value=a;else for(var b=0;b=400?0:100,this.dom.getOffset(this.game.canvas,this.offset);var b=this._parentBounds.width,d=this._parentBounds.height,e=this.getParentBounds(this._parentBounds),f=e.width!==b||e.height!==d,g=this.updateOrientationState();(f||g)&&(this.onResize&&this.onResize.call(this.onResizeContext,this,e),this.updateLayout(),this.signalSizeChange());var h=2*this._updateThrottle;this._updateThrottle=b||0>=c)return a;var e=b,f=a.height*b/a.width,g=a.width*c/a.height,h=c,i=g>b;return i=i?d:!d,i?(a.width=Math.floor(e),a.height=Math.floor(f)):(a.width=Math.floor(g),a.height=Math.floor(h)),a},destroy:function(){this.game.onResume.remove(this._gameResumed,this),window.removeEventListener("orientationchange",this._orientationChange,!1),window.removeEventListener("resize",this._windowResize,!1),this.compatibility.supportsFullScreen&&(document.removeEventListener("webkitfullscreenchange",this._fullScreenChange,!1),document.removeEventListener("mozfullscreenchange",this._fullScreenChange,!1),document.removeEventListener("MSFullscreenChange",this._fullScreenChange,!1),document.removeEventListener("fullscreenchange",this._fullScreenChange,!1),document.removeEventListener("webkitfullscreenerror",this._fullScreenError,!1),document.removeEventListener("mozfullscreenerror",this._fullScreenError,!1),document.removeEventListener("MSFullscreenError",this._fullScreenError,!1),document.removeEventListener("fullscreenerror",this._fullScreenError,!1))}},c.ScaleManager.prototype.constructor=c.ScaleManager,Object.defineProperty(c.ScaleManager.prototype,"boundingParent",{get:function(){if(this.parentIsWindow||this.isFullScreen&&!this._createdFullScreenTarget)return null;var a=this.game.canvas&&this.game.canvas.parentNode;return a||null}}),Object.defineProperty(c.ScaleManager.prototype,"scaleMode",{get:function(){return this._scaleMode},set:function(a){return a!==this._scaleMode&&(this.isFullScreen||(this.updateDimensions(this._gameSize.width,this._gameSize.height,!0),this.queueUpdate(!0)),this._scaleMode=a),this._scaleMode}}),Object.defineProperty(c.ScaleManager.prototype,"fullScreenScaleMode",{get:function(){return this._fullScreenScaleMode},set:function(a){return a!==this._fullScreenScaleMode&&(this.isFullScreen?(this.prepScreenMode(!1),this._fullScreenScaleMode=a,this.prepScreenMode(!0),this.queueUpdate(!0)):this._fullScreenScaleMode=a),this._fullScreenScaleMode}}),Object.defineProperty(c.ScaleManager.prototype,"currentScaleMode",{get:function(){return this.isFullScreen?this._fullScreenScaleMode:this._scaleMode}}),Object.defineProperty(c.ScaleManager.prototype,"pageAlignHorizontally",{get:function(){return this._pageAlignHorizontally},set:function(a){a!==this._pageAlignHorizontally&&(this._pageAlignHorizontally=a,this.queueUpdate(!0))}}),Object.defineProperty(c.ScaleManager.prototype,"pageAlignVertically",{get:function(){return this._pageAlignVertically},set:function(a){a!==this._pageAlignVertically&&(this._pageAlignVertically=a,this.queueUpdate(!0))}}),Object.defineProperty(c.ScaleManager.prototype,"isFullScreen",{get:function(){return!!(document.fullscreenElement||document.webkitFullscreenElement||document.mozFullScreenElement||document.msFullscreenElement)}}),Object.defineProperty(c.ScaleManager.prototype,"isPortrait",{get:function(){return"portrait"===this.classifyOrientation(this.screenOrientation)}}),Object.defineProperty(c.ScaleManager.prototype,"isLandscape",{get:function(){return"landscape"===this.classifyOrientation(this.screenOrientation)}}),Object.defineProperty(c.ScaleManager.prototype,"isGamePortrait",{get:function(){return this.height>this.width}}),Object.defineProperty(c.ScaleManager.prototype,"isGameLandscape",{get:function(){return this.width>this.height}}),c.Utils.Debug=function(a){this.game=a,this.sprite=null,this.bmd=null,this.canvas=null,this.context=null,this.font="14px Courier",this.columnWidth=100,this.lineHeight=16,this.renderShadow=!0,this.currentX=0,this.currentY=0,this.currentAlpha=1,this.dirty=!1},c.Utils.Debug.prototype={boot:function(){this.game.renderType===c.CANVAS?this.context=this.game.context:(this.bmd=new c.BitmapData(this.game,"__DEBUG",this.game.width,this.game.height,!0),this.sprite=this.game.make.image(0,0,this.bmd),this.game.stage.addChild(this.sprite),this.game.scale.onSizeChange.add(this.resize,this),this.canvas=PIXI.CanvasPool.create(this,this.game.width,this.game.height),this.context=this.canvas.getContext("2d"))},resize:function(a,b,c){this.bmd.resize(b,c),this.canvas.width=b,this.canvas.height=c},preUpdate:function(){this.dirty&&this.sprite&&(this.bmd.clear(),this.bmd.draw(this.canvas,0,0),this.context.clearRect(0,0,this.game.width,this.game.height),this.dirty=!1)},reset:function(){this.context&&this.context.clearRect(0,0,this.game.width,this.game.height),this.sprite&&this.bmd.clear()},start:function(a,b,c,d){"number"!=typeof a&&(a=0),"number"!=typeof b&&(b=0),c=c||"rgb(255,255,255)",void 0===d&&(d=0),this.currentX=a,this.currentY=b,this.currentColor=c,this.columnWidth=d,this.dirty=!0,this.context.save(),this.context.setTransform(1,0,0,1,0,0),this.context.strokeStyle=c,this.context.fillStyle=c,this.context.font=this.font,this.context.globalAlpha=this.currentAlpha},stop:function(){this.context.restore()},line:function(){for(var a=this.currentX,b=0;b0)for(var b=0;b=0&&c.right>=0&&c.top<=this.layoutBounds.width&&c.left<=this.layoutBounds.height},getScreenOrientation:function(a){var b=window.screen,c=b.orientation||b.mozOrientation||b.msOrientation;if(c&&"string"==typeof c.type)return c.type;if("string"==typeof c)return c;var d="portrait-primary",e="landscape-primary";if("screen"===a)return b.height>b.width?d:e;if("viewport"===a)return this.visualBounds.height>this.visualBounds.width?d:e;if("window.orientation"===a&&"number"==typeof window.orientation)return 0===window.orientation||180===window.orientation?d:e;if(window.matchMedia){if(window.matchMedia("(orientation: portrait)").matches)return d;if(window.matchMedia("(orientation: landscape)").matches)return e}return this.visualBounds.height>this.visualBounds.width?d:e},visualBounds:new c.Rectangle,layoutBounds:new c.Rectangle,documentBounds:new c.Rectangle},c.Device.whenReady(function(a){var b=window&&"pageXOffset"in window?function(){return window.pageXOffset}:function(){return document.documentElement.scrollLeft},d=window&&"pageYOffset"in window?function(){return window.pageYOffset}:function(){return document.documentElement.scrollTop};Object.defineProperty(c.DOM,"scrollX",{get:b}),Object.defineProperty(c.DOM,"scrollY",{get:d}),Object.defineProperty(c.DOM.visualBounds,"x",{get:b}),Object.defineProperty(c.DOM.visualBounds,"y",{get:d}),Object.defineProperty(c.DOM.layoutBounds,"x",{value:0}),Object.defineProperty(c.DOM.layoutBounds,"y",{value:0});var e=a.desktop&&document.documentElement.clientWidth<=window.innerWidth&&document.documentElement.clientHeight<=window.innerHeight;if(e){var f=function(){return Math.max(window.innerWidth,document.documentElement.clientWidth)},g=function(){return Math.max(window.innerHeight,document.documentElement.clientHeight)};Object.defineProperty(c.DOM.visualBounds,"width",{get:f}),Object.defineProperty(c.DOM.visualBounds,"height",{get:g}),Object.defineProperty(c.DOM.layoutBounds,"width",{get:f}),Object.defineProperty(c.DOM.layoutBounds,"height",{get:g})}else Object.defineProperty(c.DOM.visualBounds,"width",{get:function(){return window.innerWidth}}),Object.defineProperty(c.DOM.visualBounds,"height",{get:function(){return window.innerHeight}}),Object.defineProperty(c.DOM.layoutBounds,"width",{get:function(){var a=document.documentElement.clientWidth,b=window.innerWidth;return b>a?b:a}}),Object.defineProperty(c.DOM.layoutBounds,"height",{get:function(){var a=document.documentElement.clientHeight,b=window.innerHeight;return b>a?b:a}});Object.defineProperty(c.DOM.documentBounds,"x",{value:0}),Object.defineProperty(c.DOM.documentBounds,"y",{value:0}),Object.defineProperty(c.DOM.documentBounds,"width",{get:function(){var a=document.documentElement;return Math.max(a.clientWidth,a.offsetWidth,a.scrollWidth)}}),Object.defineProperty(c.DOM.documentBounds,"height",{get:function(){var a=document.documentElement;return Math.max(a.clientHeight,a.offsetHeight,a.scrollHeight)}})},null,!0),c.ArraySet=function(a){this.position=0,this.list=a||[]},c.ArraySet.prototype={add:function(a){return this.exists(a)||this.list.push(a),a},getIndex:function(a){return this.list.indexOf(a)},getByKey:function(a,b){for(var c=this.list.length;c--;)if(this.list[c][a]===b)return this.list[c];return null},exists:function(a){return this.list.indexOf(a)>-1},reset:function(){this.list.length=0},remove:function(a){var b=this.list.indexOf(a);return b>-1?(this.list.splice(b,1),a):void 0},setAll:function(a,b){for(var c=this.list.length;c--;)this.list[c]&&(this.list[c][a]=b)},callAll:function(a){for(var b=Array.prototype.slice.call(arguments,1),c=this.list.length;c--;)this.list[c]&&this.list[c][a]&&this.list[c][a].apply(this.list[c],b)},removeAll:function(a){void 0===a&&(a=!1);for(var b=this.list.length;b--;)if(this.list[b]){var c=this.remove(this.list[b]);a&&c.destroy()}this.position=0,this.list=[]}},Object.defineProperty(c.ArraySet.prototype,"total",{get:function(){return this.list.length}}),Object.defineProperty(c.ArraySet.prototype,"first",{get:function(){return this.position=0,this.list.length>0?this.list[0]:null}}),Object.defineProperty(c.ArraySet.prototype,"next",{get:function(){return this.position0;b--){var c=Math.floor(Math.random()*(b+1)),d=a[b];a[b]=a[c],a[c]=d}return a},transposeMatrix:function(a){for(var b=a.length,c=a[0].length,d=new Array(c),e=0;c>e;e++){d[e]=new Array(b);for(var f=b-1;f>-1;f--)d[e][f]=a[f][e]}return d},rotateMatrix:function(a,b){if("string"!=typeof b&&(b=(b%360+360)%360),90===b||-270===b||"rotateLeft"===b)a=c.ArrayUtils.transposeMatrix(a),a=a.reverse();else if(-90===b||270===b||"rotateRight"===b)a=a.reverse(),a=c.ArrayUtils.transposeMatrix(a);else if(180===Math.abs(b)||"rotate180"===b){for(var d=0;d=e-a?e:d},rotateRight:function(a){var b=a.pop();return a.unshift(b),b},rotateLeft:function(a){var b=a.shift();return a.push(b),b},rotate:function(a){var b=a.shift();return a.push(b),b},numberArray:function(a,b){for(var c=[],d=a;b>=d;d++)c.push(d);return c},numberArrayStep:function(a,b,d){void 0!==a&&null!==a||(a=0),void 0!==b&&null!==b||(b=a,a=0),void 0===d&&(d=1);for(var e=[],f=Math.max(c.Math.roundAwayFromZero((b-a)/(d||1)),0),g=0;f>g;g++)e.push(a),a+=d;return e}},c.LinkedList=function(){this.next=null,this.prev=null,this.first=null,this.last=null,this.total=0},c.LinkedList.prototype={add:function(a){return 0===this.total&&null===this.first&&null===this.last?(this.first=a,this.last=a,this.next=a,a.prev=this,this.total++,a):(this.last.next=a,a.prev=this.last,this.last=a,this.total++,a)},reset:function(){this.first=null,this.last=null,this.next=null,this.prev=null,this.total=0},remove:function(a){return 1===this.total?(this.reset(),void(a.next=a.prev=null)):(a===this.first?this.first=this.first.next:a===this.last&&(this.last=this.last.prev),a.prev&&(a.prev.next=a.next),a.next&&(a.next.prev=a.prev),a.next=a.prev=null,null===this.first&&(this.last=null),void this.total--)},callAll:function(a){if(this.first&&this.last){var b=this.first;do b&&b[a]&&b[a].call(b),b=b.next;while(b!=this.last.next)}}},c.LinkedList.prototype.constructor=c.LinkedList,c.Create=function(a){this.game=a,this.bmd=null,this.canvas=null,this.ctx=null,this.palettes=[{0:"#000",1:"#9D9D9D",2:"#FFF",3:"#BE2633",4:"#E06F8B",5:"#493C2B",6:"#A46422",7:"#EB8931",8:"#F7E26B",9:"#2F484E",A:"#44891A",B:"#A3CE27",C:"#1B2632",D:"#005784",E:"#31A2F2",F:"#B2DCEF"},{0:"#000",1:"#191028",2:"#46af45",3:"#a1d685",4:"#453e78",5:"#7664fe",6:"#833129",7:"#9ec2e8",8:"#dc534b",9:"#e18d79",A:"#d6b97b",B:"#e9d8a1",C:"#216c4b",D:"#d365c8",E:"#afaab9",F:"#f5f4eb"},{0:"#000",1:"#2234d1",2:"#0c7e45",3:"#44aacc",4:"#8a3622",5:"#5c2e78",6:"#aa5c3d",7:"#b5b5b5",8:"#5e606e",9:"#4c81fb",A:"#6cd947",B:"#7be2f9",C:"#eb8a60",D:"#e23d69",E:"#ffd93f",F:"#fff"},{0:"#000",1:"#fff",2:"#8b4131",3:"#7bbdc5",4:"#8b41ac",5:"#6aac41",6:"#3931a4",7:"#d5de73",8:"#945a20",9:"#5a4100",A:"#bd736a",B:"#525252",C:"#838383",D:"#acee8b",E:"#7b73de",F:"#acacac"},{0:"#000",1:"#191028",2:"#46af45",3:"#a1d685",4:"#453e78",5:"#7664fe",6:"#833129",7:"#9ec2e8",8:"#dc534b",9:"#e18d79",A:"#d6b97b",B:"#e9d8a1",C:"#216c4b",D:"#d365c8",E:"#afaab9",F:"#fff"}]},c.Create.PALETTE_ARNE=0,c.Create.PALETTE_JMP=1,c.Create.PALETTE_CGA=2,c.Create.PALETTE_C64=3,c.Create.PALETTE_JAPANESE_MACHINE=4,c.Create.prototype={texture:function(a,b,c,d,e){void 0===c&&(c=8),void 0===d&&(d=c),void 0===e&&(e=0);var f=b[0].length*c,g=b.length*d;null===this.bmd&&(this.bmd=this.game.make.bitmapData(),this.canvas=this.bmd.canvas,this.ctx=this.bmd.context),this.bmd.resize(f,g),this.bmd.clear();for(var h=0;hg;g+=e)this.ctx.fillRect(0,g,b,1);for(var h=0;b>h;h+=d)this.ctx.fillRect(h,0,1,c);return this.bmd.generateTexture(a)}},c.Create.prototype.constructor=c.Create,c.FlexGrid=function(a,b,d){this.game=a.game,this.manager=a,this.width=b,this.height=d,this.boundsCustom=new c.Rectangle(0,0,b,d),this.boundsFluid=new c.Rectangle(0,0,b,d),this.boundsFull=new c.Rectangle(0,0,b,d),this.boundsNone=new c.Rectangle(0,0,b,d),this.positionCustom=new c.Point(0,0),this.positionFluid=new c.Point(0,0),this.positionFull=new c.Point(0,0),this.positionNone=new c.Point(0,0),this.scaleCustom=new c.Point(1,1),this.scaleFluid=new c.Point(1,1),this.scaleFluidInversed=new c.Point(1,1),this.scaleFull=new c.Point(1,1),this.scaleNone=new c.Point(1,1),this.customWidth=0,this.customHeight=0,this.customOffsetX=0,this.customOffsetY=0,this.ratioH=b/d,this.ratioV=d/b,this.multiplier=0,this.layers=[]},c.FlexGrid.prototype={setSize:function(a,b){this.width=a,this.height=b,this.ratioH=a/b,this.ratioV=b/a,this.scaleNone=new c.Point(1,1),this.boundsNone.width=this.width,this.boundsNone.height=this.height,this.refresh()},createCustomLayer:function(a,b,d,e){void 0===e&&(e=!0),this.customWidth=a,this.customHeight=b,this.boundsCustom.width=a,this.boundsCustom.height=b;var f=new c.FlexLayer(this,this.positionCustom,this.boundsCustom,this.scaleCustom);return e&&this.game.world.add(f),this.layers.push(f),"undefined"!=typeof d&&null!==typeof d&&f.addMultiple(d),f},createFluidLayer:function(a,b){void 0===b&&(b=!0);var d=new c.FlexLayer(this,this.positionFluid,this.boundsFluid,this.scaleFluid);return b&&this.game.world.add(d),this.layers.push(d),"undefined"!=typeof a&&null!==typeof a&&d.addMultiple(a),d},createFullLayer:function(a){var b=new c.FlexLayer(this,this.positionFull,this.boundsFull,this.scaleFluid);return this.game.world.add(b),this.layers.push(b),"undefined"!=typeof a&&b.addMultiple(a),b},createFixedLayer:function(a){var b=new c.FlexLayer(this,this.positionNone,this.boundsNone,this.scaleNone);return this.game.world.add(b),this.layers.push(b),"undefined"!=typeof a&&b.addMultiple(a), +b},reset:function(){for(var a=this.layers.length;a--;)this.layers[a].persist||(this.layers[a].position=null,this.layers[a].scale=null,this.layers.slice(a,1))},onResize:function(a,b){this.ratioH=a/b,this.ratioV=b/a,this.refresh(a,b)},refresh:function(){this.multiplier=Math.min(this.manager.height/this.height,this.manager.width/this.width),this.boundsFluid.width=Math.round(this.width*this.multiplier),this.boundsFluid.height=Math.round(this.height*this.multiplier),this.scaleFluid.set(this.boundsFluid.width/this.width,this.boundsFluid.height/this.height),this.scaleFluidInversed.set(this.width/this.boundsFluid.width,this.height/this.boundsFluid.height),this.scaleFull.set(this.boundsFull.width/this.width,this.boundsFull.height/this.height),this.boundsFull.width=Math.round(this.manager.width*this.scaleFluidInversed.x),this.boundsFull.height=Math.round(this.manager.height*this.scaleFluidInversed.y),this.boundsFluid.centerOn(this.manager.bounds.centerX,this.manager.bounds.centerY),this.boundsNone.centerOn(this.manager.bounds.centerX,this.manager.bounds.centerY),this.positionFluid.set(this.boundsFluid.x,this.boundsFluid.y),this.positionNone.set(this.boundsNone.x,this.boundsNone.y)},fitSprite:function(a){this.manager.scaleSprite(a),a.x=this.manager.bounds.centerX,a.y=this.manager.bounds.centerY},debug:function(){this.game.debug.text(this.boundsFluid.width+" x "+this.boundsFluid.height,this.boundsFluid.x+4,this.boundsFluid.y+16),this.game.debug.geom(this.boundsFluid,"rgba(255,0,0,0.9",!1)}},c.FlexGrid.prototype.constructor=c.FlexGrid,c.FlexLayer=function(a,b,d,e){c.Group.call(this,a.game,null,"__flexLayer"+a.game.rnd.uuid(),!1),this.manager=a.manager,this.grid=a,this.persist=!1,this.position=b,this.bounds=d,this.scale=e,this.topLeft=d.topLeft,this.topMiddle=new c.Point(d.halfWidth,0),this.topRight=d.topRight,this.bottomLeft=d.bottomLeft,this.bottomMiddle=new c.Point(d.halfWidth,d.bottom),this.bottomRight=d.bottomRight},c.FlexLayer.prototype=Object.create(c.Group.prototype),c.FlexLayer.prototype.constructor=c.FlexLayer,c.FlexLayer.prototype.resize=function(){},c.FlexLayer.prototype.debug=function(){this.game.debug.text(this.bounds.width+" x "+this.bounds.height,this.bounds.x+4,this.bounds.y+16),this.game.debug.geom(this.bounds,"rgba(0,0,255,0.9",!1),this.game.debug.geom(this.topLeft,"rgba(255,255,255,0.9"),this.game.debug.geom(this.topMiddle,"rgba(255,255,255,0.9"),this.game.debug.geom(this.topRight,"rgba(255,255,255,0.9")},c.Color={packPixel:function(a,b,d,e){return c.Device.LITTLE_ENDIAN?(e<<24|d<<16|b<<8|a)>>>0:(a<<24|b<<16|d<<8|e)>>>0},unpackPixel:function(a,b,d,e){return void 0!==b&&null!==b||(b=c.Color.createColor()),void 0!==d&&null!==d||(d=!1),void 0!==e&&null!==e||(e=!1),c.Device.LITTLE_ENDIAN?(b.a=(4278190080&a)>>>24,b.b=(16711680&a)>>>16,b.g=(65280&a)>>>8,b.r=255&a):(b.r=(4278190080&a)>>>24,b.g=(16711680&a)>>>16,b.b=(65280&a)>>>8,b.a=255&a),b.color=a,b.rgba="rgba("+b.r+","+b.g+","+b.b+","+b.a/255+")",d&&c.Color.RGBtoHSL(b.r,b.g,b.b,b),e&&c.Color.RGBtoHSV(b.r,b.g,b.b,b),b},fromRGBA:function(a,b){return b||(b=c.Color.createColor()),b.r=(4278190080&a)>>>24,b.g=(16711680&a)>>>16,b.b=(65280&a)>>>8,b.a=255&a,b.rgba="rgba("+b.r+","+b.g+","+b.b+","+b.a+")",b},toRGBA:function(a,b,c,d){return a<<24|b<<16|c<<8|d},toABGR:function(a,b,c,d){return(d<<24|c<<16|b<<8|a)>>>0},RGBtoHSL:function(a,b,d,e){e||(e=c.Color.createColor(a,b,d,1)),a/=255,b/=255,d/=255;var f=Math.min(a,b,d),g=Math.max(a,b,d);if(e.h=0,e.s=0,e.l=(g+f)/2,g!==f){var h=g-f;e.s=e.l>.5?h/(2-g-f):h/(g+f),g===a?e.h=(b-d)/h+(d>b?6:0):g===b?e.h=(d-a)/h+2:g===d&&(e.h=(a-b)/h+4),e.h/=6}return e},HSLtoRGB:function(a,b,d,e){if(e?(e.r=d,e.g=d,e.b=d):e=c.Color.createColor(d,d,d),0!==b){var f=.5>d?d*(1+b):d+b-d*b,g=2*d-f;e.r=c.Color.hueToColor(g,f,a+1/3),e.g=c.Color.hueToColor(g,f,a),e.b=c.Color.hueToColor(g,f,a-1/3)}return e.r=Math.floor(255*e.r|0),e.g=Math.floor(255*e.g|0),e.b=Math.floor(255*e.b|0),c.Color.updateColor(e),e},RGBtoHSV:function(a,b,d,e){e||(e=c.Color.createColor(a,b,d,255)),a/=255,b/=255,d/=255;var f=Math.min(a,b,d),g=Math.max(a,b,d),h=g-f;return e.h=0,e.s=0===g?0:h/g,e.v=g,g!==f&&(g===a?e.h=(b-d)/h+(d>b?6:0):g===b?e.h=(d-a)/h+2:g===d&&(e.h=(a-b)/h+4),e.h/=6),e},HSVtoRGB:function(a,b,d,e){void 0===e&&(e=c.Color.createColor(0,0,0,1,a,b,0,d));var f,g,h,i=Math.floor(6*a),j=6*a-i,k=d*(1-b),l=d*(1-j*b),m=d*(1-(1-j)*b);switch(i%6){case 0:f=d,g=m,h=k;break;case 1:f=l,g=d,h=k;break;case 2:f=k,g=d,h=m;break;case 3:f=k,g=l,h=d;break;case 4:f=m,g=k,h=d;break;case 5:f=d,g=k,h=l}return e.r=Math.floor(255*f),e.g=Math.floor(255*g),e.b=Math.floor(255*h),c.Color.updateColor(e),e},hueToColor:function(a,b,c){return 0>c&&(c+=1),c>1&&(c-=1),1/6>c?a+6*(b-a)*c:.5>c?b:2/3>c?a+(b-a)*(2/3-c)*6:a},createColor:function(a,b,d,e,f,g,h,i){var j={r:a||0,g:b||0,b:d||0,a:e||1,h:f||0,s:g||0,l:h||0,v:i||0,color:0,color32:0,rgba:""};return c.Color.updateColor(j)},updateColor:function(a){return a.rgba="rgba("+a.r.toString()+","+a.g.toString()+","+a.b.toString()+","+a.a.toString()+")",a.color=c.Color.getColor(a.r,a.g,a.b),a.color32=c.Color.getColor32(255*a.a,a.r,a.g,a.b),a},getColor32:function(a,b,c,d){return a<<24|b<<16|c<<8|d},getColor:function(a,b,c){return a<<16|b<<8|c},RGBtoString:function(a,b,d,e,f){return void 0===e&&(e=255),void 0===f&&(f="#"),"#"===f?"#"+((1<<24)+(a<<16)+(b<<8)+d).toString(16).slice(1):"0x"+c.Color.componentToHex(e)+c.Color.componentToHex(a)+c.Color.componentToHex(b)+c.Color.componentToHex(d)},hexToRGB:function(a){var b=c.Color.hexToColor(a);return b?c.Color.getColor32(b.a,b.r,b.g,b.b):void 0},hexToColor:function(a,b){a=a.replace(/^(?:#|0x)?([a-f\d])([a-f\d])([a-f\d])$/i,function(a,b,c,d){return b+b+c+c+d+d});var d=/^(?:#|0x)?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(a);if(d){var e=parseInt(d[1],16),f=parseInt(d[2],16),g=parseInt(d[3],16);b?(b.r=e,b.g=f,b.b=g):b=c.Color.createColor(e,f,g)}return b},webToColor:function(a,b){b||(b=c.Color.createColor());var d=/^rgba?\(\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*(?:,\s*(\d+(?:\.\d+)?))?\s*\)$/.exec(a);return d&&(b.r=parseInt(d[1],10),b.g=parseInt(d[2],10),b.b=parseInt(d[3],10),b.a=void 0!==d[4]?parseFloat(d[4]):1,c.Color.updateColor(b)),b},valueToColor:function(a,b){if(b||(b=c.Color.createColor()),"string"==typeof a)return 0===a.indexOf("rgb")?c.Color.webToColor(a,b):(b.a=1,c.Color.hexToColor(a,b));if("number"==typeof a){var d=c.Color.getRGB(a);return b.r=d.r,b.g=d.g,b.b=d.b,b.a=d.a/255,b}return b},componentToHex:function(a){var b=a.toString(16);return 1==b.length?"0"+b:b},HSVColorWheel:function(a,b){void 0===a&&(a=1),void 0===b&&(b=1);for(var d=[],e=0;359>=e;e++)d.push(c.Color.HSVtoRGB(e/359,a,b));return d},HSLColorWheel:function(a,b){void 0===a&&(a=.5),void 0===b&&(b=.5);for(var d=[],e=0;359>=e;e++)d.push(c.Color.HSLtoRGB(e/359,a,b));return d},interpolateColor:function(a,b,d,e,f){void 0===f&&(f=255);var g=c.Color.getRGB(a),h=c.Color.getRGB(b),i=(h.red-g.red)*e/d+g.red,j=(h.green-g.green)*e/d+g.green,k=(h.blue-g.blue)*e/d+g.blue;return c.Color.getColor32(f,i,j,k)},interpolateColorWithRGB:function(a,b,d,e,f,g){var h=c.Color.getRGB(a),i=(b-h.red)*g/f+h.red,j=(d-h.green)*g/f+h.green,k=(e-h.blue)*g/f+h.blue;return c.Color.getColor(i,j,k)},interpolateRGB:function(a,b,d,e,f,g,h,i){var j=(e-a)*i/h+a,k=(f-b)*i/h+b,l=(g-d)*i/h+d;return c.Color.getColor(j,k,l)},getRandomColor:function(a,b,d){if(void 0===a&&(a=0),void 0===b&&(b=255),void 0===d&&(d=255),b>255||a>b)return c.Color.getColor(255,255,255);var e=a+Math.round(Math.random()*(b-a)),f=a+Math.round(Math.random()*(b-a)),g=a+Math.round(Math.random()*(b-a));return c.Color.getColor32(d,e,f,g)},getRGB:function(a){return a>16777215?{alpha:a>>>24,red:a>>16&255,green:a>>8&255,blue:255&a,a:a>>>24,r:a>>16&255,g:a>>8&255,b:255&a}:{alpha:255,red:a>>16&255,green:a>>8&255,blue:255&a,a:255,r:a>>16&255,g:a>>8&255,b:255&a}},getWebRGB:function(a){if("object"==typeof a)return"rgba("+a.r.toString()+","+a.g.toString()+","+a.b.toString()+","+(a.a/255).toString()+")";var b=c.Color.getRGB(a);return"rgba("+b.r.toString()+","+b.g.toString()+","+b.b.toString()+","+(b.a/255).toString()+")"},getAlpha:function(a){return a>>>24},getAlphaFloat:function(a){return(a>>>24)/255},getRed:function(a){return a>>16&255},getGreen:function(a){return a>>8&255},getBlue:function(a){return 255&a},blendNormal:function(a){return a},blendLighten:function(a,b){return b>a?b:a},blendDarken:function(a,b){return b>a?a:b},blendMultiply:function(a,b){return a*b/255},blendAverage:function(a,b){return(a+b)/2},blendAdd:function(a,b){return Math.min(255,a+b)},blendSubtract:function(a,b){return Math.max(0,a+b-255)},blendDifference:function(a,b){return Math.abs(a-b)},blendNegation:function(a,b){return 255-Math.abs(255-a-b)},blendScreen:function(a,b){return 255-((255-a)*(255-b)>>8)},blendExclusion:function(a,b){return a+b-2*a*b/255},blendOverlay:function(a,b){return 128>b?2*a*b/255:255-2*(255-a)*(255-b)/255},blendSoftLight:function(a,b){return 128>b?2*((a>>1)+64)*(b/255):255-2*(255-((a>>1)+64))*(255-b)/255},blendHardLight:function(a,b){return c.Color.blendOverlay(b,a)},blendColorDodge:function(a,b){return 255===b?b:Math.min(255,(a<<8)/(255-b))},blendColorBurn:function(a,b){return 0===b?b:Math.max(0,255-(255-a<<8)/b)},blendLinearDodge:function(a,b){return c.Color.blendAdd(a,b)},blendLinearBurn:function(a,b){return c.Color.blendSubtract(a,b)},blendLinearLight:function(a,b){return 128>b?c.Color.blendLinearBurn(a,2*b):c.Color.blendLinearDodge(a,2*(b-128))},blendVividLight:function(a,b){return 128>b?c.Color.blendColorBurn(a,2*b):c.Color.blendColorDodge(a,2*(b-128))},blendPinLight:function(a,b){return 128>b?c.Color.blendDarken(a,2*b):c.Color.blendLighten(a,2*(b-128))},blendHardMix:function(a,b){return c.Color.blendVividLight(a,b)<128?0:255},blendReflect:function(a,b){return 255===b?b:Math.min(255,a*a/(255-b))},blendGlow:function(a,b){return c.Color.blendReflect(b,a)},blendPhoenix:function(a,b){return Math.min(a,b)-Math.max(a,b)+255}},c.Physics=function(a,b){b=b||{},this.game=a,this.config=b,this.arcade=null,this.p2=null,this.ninja=null,this.box2d=null,this.chipmunk=null,this.matter=null,this.parseConfig()},c.Physics.ARCADE=0,c.Physics.P2JS=1,c.Physics.NINJA=2,c.Physics.BOX2D=3,c.Physics.CHIPMUNK=4,c.Physics.MATTERJS=5,c.Physics.prototype={parseConfig:function(){this.config.hasOwnProperty("arcade")&&this.config.arcade!==!0||!c.Physics.hasOwnProperty("Arcade")||(this.arcade=new c.Physics.Arcade(this.game)),this.config.hasOwnProperty("ninja")&&this.config.ninja===!0&&c.Physics.hasOwnProperty("Ninja")&&(this.ninja=new c.Physics.Ninja(this.game)),this.config.hasOwnProperty("p2")&&this.config.p2===!0&&c.Physics.hasOwnProperty("P2")&&(this.p2=new c.Physics.P2(this.game,this.config)),this.config.hasOwnProperty("box2d")&&this.config.box2d===!0&&c.Physics.hasOwnProperty("BOX2D")&&(this.box2d=new c.Physics.BOX2D(this.game,this.config)),this.config.hasOwnProperty("matter")&&this.config.matter===!0&&c.Physics.hasOwnProperty("Matter")&&(this.matter=new c.Physics.Matter(this.game,this.config))},startSystem:function(a){a===c.Physics.ARCADE?this.arcade=new c.Physics.Arcade(this.game):a===c.Physics.P2JS?null===this.p2?this.p2=new c.Physics.P2(this.game,this.config):this.p2.reset():a===c.Physics.NINJA?this.ninja=new c.Physics.Ninja(this.game):a===c.Physics.BOX2D?null===this.box2d?this.box2d=new c.Physics.Box2D(this.game,this.config):this.box2d.reset():a===c.Physics.MATTERJS&&(null===this.matter?this.matter=new c.Physics.Matter(this.game,this.config):this.matter.reset())},enable:function(a,b,d){void 0===b&&(b=c.Physics.ARCADE),void 0===d&&(d=!1),b===c.Physics.ARCADE?this.arcade.enable(a):b===c.Physics.P2JS&&this.p2?this.p2.enable(a,d):b===c.Physics.NINJA&&this.ninja?this.ninja.enableAABB(a):b===c.Physics.BOX2D&&this.box2d?this.box2d.enable(a):b===c.Physics.MATTERJS&&this.matter?this.matter.enable(a):console.warn(a.key+" is attempting to enable a physics body using an unknown physics system.")},preUpdate:function(){this.p2&&this.p2.preUpdate(),this.box2d&&this.box2d.preUpdate(),this.matter&&this.matter.preUpdate()},update:function(){this.p2&&this.p2.update(),this.box2d&&this.box2d.update(),this.matter&&this.matter.update()},setBoundsToWorld:function(){this.arcade&&this.arcade.setBoundsToWorld(),this.ninja&&this.ninja.setBoundsToWorld(),this.p2&&this.p2.setBoundsToWorld(),this.box2d&&this.box2d.setBoundsToWorld(),this.matter&&this.matter.setBoundsToWorld()},clear:function(){this.p2&&this.p2.clear(),this.box2d&&this.box2d.clear(),this.matter&&this.matter.clear()},reset:function(){this.p2&&this.p2.reset(),this.box2d&&this.box2d.reset(),this.matter&&this.matter.reset()},destroy:function(){this.p2&&this.p2.destroy(),this.box2d&&this.box2d.destroy(),this.matter&&this.matter.destroy(),this.arcade=null,this.ninja=null,this.p2=null,this.box2d=null,this.matter=null}},c.Physics.prototype.constructor=c.Physics,c.Physics.Arcade=function(a){this.game=a,this.gravity=new c.Point,this.bounds=new c.Rectangle(0,0,a.world.width,a.world.height),this.checkCollision={up:!0,down:!0,left:!0,right:!0},this.maxObjects=10,this.maxLevels=4,this.OVERLAP_BIAS=4,this.forceX=!1,this.sortDirection=c.Physics.Arcade.LEFT_RIGHT,this.skipQuadTree=!0,this.isPaused=!1,this.quadTree=new c.QuadTree(this.game.world.bounds.x,this.game.world.bounds.y,this.game.world.bounds.width,this.game.world.bounds.height,this.maxObjects,this.maxLevels),this._total=0,this.setBoundsToWorld()},c.Physics.Arcade.prototype.constructor=c.Physics.Arcade,c.Physics.Arcade.SORT_NONE=0,c.Physics.Arcade.LEFT_RIGHT=1,c.Physics.Arcade.RIGHT_LEFT=2,c.Physics.Arcade.TOP_BOTTOM=3,c.Physics.Arcade.BOTTOM_TOP=4,c.Physics.Arcade.prototype={setBounds:function(a,b,c,d){this.bounds.setTo(a,b,c,d)},setBoundsToWorld:function(){this.bounds.copyFrom(this.game.world.bounds)},enable:function(a,b){void 0===b&&(b=!0);var d=1;if(Array.isArray(a))for(d=a.length;d--;)a[d]instanceof c.Group?this.enable(a[d].children,b):(this.enableBody(a[d]),b&&a[d].hasOwnProperty("children")&&a[d].children.length>0&&this.enable(a[d],!0));else a instanceof c.Group?this.enable(a.children,b):(this.enableBody(a),b&&a.hasOwnProperty("children")&&a.children.length>0&&this.enable(a.children,!0))},enableBody:function(a){a.hasOwnProperty("body")&&null===a.body&&(a.body=new c.Physics.Arcade.Body(a),a.parent&&a.parent instanceof c.Group&&a.parent.addToHash(a))},updateMotion:function(a){var b=this.computeVelocity(0,a,a.angularVelocity,a.angularAcceleration,a.angularDrag,a.maxAngular)-a.angularVelocity;a.angularVelocity+=b,a.rotation+=a.angularVelocity*this.game.time.physicsElapsed,a.velocity.x=this.computeVelocity(1,a,a.velocity.x,a.acceleration.x,a.drag.x,a.maxVelocity.x),a.velocity.y=this.computeVelocity(2,a,a.velocity.y,a.acceleration.y,a.drag.y,a.maxVelocity.y)},computeVelocity:function(a,b,c,d,e,f){return void 0===f&&(f=1e4),1===a&&b.allowGravity?c+=(this.gravity.x+b.gravity.x)*this.game.time.physicsElapsed:2===a&&b.allowGravity&&(c+=(this.gravity.y+b.gravity.y)*this.game.time.physicsElapsed),d?c+=d*this.game.time.physicsElapsed:e&&(e*=this.game.time.physicsElapsed,c-e>0?c-=e:0>c+e?c+=e:c=0),c>f?c=f:-f>c&&(c=-f),c},overlap:function(a,b,c,d,e){if(c=c||null,d=d||null,e=e||c,this._total=0,!Array.isArray(a)&&Array.isArray(b))for(var f=0;f0},collide:function(a,b,c,d,e){if(c=c||null,d=d||null,e=e||c,this._total=0,!Array.isArray(a)&&Array.isArray(b))for(var f=0;f0},sortLeftRight:function(a,b){return a.body&&b.body?a.body.x-b.body.x:0},sortRightLeft:function(a,b){return a.body&&b.body?b.body.x-a.body.x:0},sortTopBottom:function(a,b){return a.body&&b.body?a.body.y-b.body.y:0},sortBottomTop:function(a,b){return a.body&&b.body?b.body.y-a.body.y:0},sort:function(a,b){null!==a.physicsSortDirection?b=a.physicsSortDirection:void 0===b&&(b=this.sortDirection),b===c.Physics.Arcade.LEFT_RIGHT?a.hash.sort(this.sortLeftRight):b===c.Physics.Arcade.RIGHT_LEFT?a.hash.sort(this.sortRightLeft):b===c.Physics.Arcade.TOP_BOTTOM?a.hash.sort(this.sortTopBottom):b===c.Physics.Arcade.BOTTOM_TOP&&a.hash.sort(this.sortBottomTop)},collideHandler:function(a,b,d,e,f,g){return void 0===b&&a.physicsType===c.GROUP?(this.sort(a),void this.collideGroupVsSelf(a,d,e,f,g)):void(a&&b&&a.exists&&b.exists&&(this.sortDirection!==c.Physics.Arcade.SORT_NONE&&(a.physicsType===c.GROUP&&this.sort(a),b.physicsType===c.GROUP&&this.sort(b)),a.physicsType===c.SPRITE?b.physicsType===c.SPRITE?this.collideSpriteVsSprite(a,b,d,e,f,g):b.physicsType===c.GROUP?this.collideSpriteVsGroup(a,b,d,e,f,g):b.physicsType===c.TILEMAPLAYER&&this.collideSpriteVsTilemapLayer(a,b,d,e,f,g):a.physicsType===c.GROUP?b.physicsType===c.SPRITE?this.collideSpriteVsGroup(b,a,d,e,f,g):b.physicsType===c.GROUP?this.collideGroupVsGroup(a,b,d,e,f,g):b.physicsType===c.TILEMAPLAYER&&this.collideGroupVsTilemapLayer(a,b,d,e,f,g):a.physicsType===c.TILEMAPLAYER&&(b.physicsType===c.SPRITE?this.collideSpriteVsTilemapLayer(b,a,d,e,f,g):b.physicsType===c.GROUP&&this.collideGroupVsTilemapLayer(b,a,d,e,f,g))))},collideSpriteVsSprite:function(a,b,c,d,e,f){return a.body&&b.body?(this.separate(a.body,b.body,d,e,f)&&(c&&c.call(e,a,b),this._total++),!0):!1},collideSpriteVsGroup:function(a,b,d,e,f,g){if(0!==b.length&&a.body)if(this.skipQuadTree||a.body.skipQuadTree)for(var h,i=0;ih.right)break;if(h.x>a.body.right)continue}else if(this.sortDirection===c.Physics.Arcade.TOP_BOTTOM){if(a.body.bottomh.bottom)break;if(h.y>a.body.bottom)continue}this.collideSpriteVsSprite(a,j,d,e,f,g)}}else{this.quadTree.clear(),this.quadTree.reset(this.game.world.bounds.x,this.game.world.bounds.y,this.game.world.bounds.width,this.game.world.bounds.height,this.maxObjects,this.maxLevels),this.quadTree.populate(b);for(var k=this.quadTree.retrieve(a),i=0;ik.right)continue;if(k.x>h.right)break}else if(this.sortDirection===c.Physics.Arcade.TOP_BOTTOM){if(h.bottomk.bottom)continue;if(k.y>i.body.bottom)break}this.collideSpriteVsSprite(i,l,b,d,e,f)}}}}},collideGroupVsGroup:function(a,b,d,e,f,g){if(0!==a.length&&0!==b.length)for(var h=0;hh.bottom)&&(i.xh.right))return this.separateCircle(a,b,e)}var j=!1,k=!1;this.forceX||Math.abs(this.gravity.y+a.gravity.y)=b.right?!1:!(a.position.y>=b.bottom)},circleBodyIntersects:function(a,b){var d=c.Math.clamp(a.center.x,b.left,b.right),e=c.Math.clamp(a.center.y,b.top,b.bottom),f=(a.center.x-d)*(a.center.x-d),g=(a.center.y-e)*(a.center.y-e);return f+g<=a.radius*a.radius},separateCircle:function(a,b,d){this.getOverlapX(a,b),this.getOverlapY(a,b);var e=this.angleBetweenCenters(a,b),f=0;if(a.isCircle!==b.isCircle){var g={x:b.isCircle?a.position.x:b.position.x,y:b.isCircle?a.position.y:b.position.y,right:b.isCircle?a.right:b.right,bottom:b.isCircle?a.bottom:b.bottom},h={x:a.isCircle?a.position.x+a.radius:b.position.x+b.radius,y:a.isCircle?a.position.y+a.radius:b.position.y+b.radius,radius:a.isCircle?a.radius:b.radius};h.yg.right&&(f=c.Math.distance(h.x,h.y,g.right,g.y)-h.radius):h.y>g.bottom&&(h.xg.right&&(f=c.Math.distance(h.x,h.y,g.right,g.bottom)-h.radius)),f*=-1}else f=a.radius+b.radius-c.Math.distance(a.center.x,a.center.y,b.center.x,b.center.y);if(d||0===f||a.immovable&&b.immovable||a.customSeparateX||b.customSeparateX)return 0!==f&&(a.onOverlap&&a.onOverlap.dispatch(a.sprite,b.sprite),b.onOverlap&&b.onOverlap.dispatch(b.sprite,a.sprite)),0!==f;var i={x:a.velocity.x*Math.cos(e)+a.velocity.y*Math.sin(e),y:a.velocity.x*Math.sin(e)-a.velocity.y*Math.cos(e)},j={x:b.velocity.x*Math.cos(e)+b.velocity.y*Math.sin(e),y:b.velocity.x*Math.sin(e)-b.velocity.y*Math.cos(e)},k=((a.mass-b.mass)*i.x+2*b.mass*j.x)/(a.mass+b.mass),l=(2*a.mass*i.x+(b.mass-a.mass)*j.x)/(a.mass+b.mass);return a.immovable||(a.velocity.x=(k*Math.cos(e)-i.y*Math.sin(e))*a.bounce.x,a.velocity.y=(i.y*Math.cos(e)+k*Math.sin(e))*a.bounce.y),b.immovable||(b.velocity.x=(l*Math.cos(e)-j.y*Math.sin(e))*b.bounce.x,b.velocity.y=(j.y*Math.cos(e)+l*Math.sin(e))*b.bounce.y),Math.abs(e)0&&!a.immovable&&b.velocity.x>a.velocity.x?a.velocity.x*=-1:b.velocity.x<0&&!b.immovable&&a.velocity.x0&&!a.immovable&&b.velocity.y>a.velocity.y?a.velocity.y*=-1:b.velocity.y<0&&!b.immovable&&a.velocity.yMath.PI/2&&(a.velocity.x<0&&!a.immovable&&b.velocity.x0&&!b.immovable&&a.velocity.x>b.velocity.x?b.velocity.x*=-1:a.velocity.y<0&&!a.immovable&&b.velocity.y0&&!b.immovable&&a.velocity.x>b.velocity.y&&(b.velocity.y*=-1)),a.immovable||(a.x+=a.velocity.x*this.game.time.physicsElapsed-f*Math.cos(e),a.y+=a.velocity.y*this.game.time.physicsElapsed-f*Math.sin(e)),b.immovable||(b.x+=b.velocity.x*this.game.time.physicsElapsed+f*Math.cos(e),b.y+=b.velocity.y*this.game.time.physicsElapsed+f*Math.sin(e)),a.onCollide&&a.onCollide.dispatch(a.sprite,b.sprite),b.onCollide&&b.onCollide.dispatch(b.sprite,a.sprite),!0},getOverlapX:function(a,b,c){var d=0,e=a.deltaAbsX()+b.deltaAbsX()+this.OVERLAP_BIAS;return 0===a.deltaX()&&0===b.deltaX()?(a.embedded=!0,b.embedded=!0):a.deltaX()>b.deltaX()?(d=a.right-b.x,d>e&&!c||a.checkCollision.right===!1||b.checkCollision.left===!1?d=0:(a.touching.none=!1,a.touching.right=!0,b.touching.none=!1,b.touching.left=!0)):a.deltaX()e&&!c||a.checkCollision.left===!1||b.checkCollision.right===!1?d=0:(a.touching.none=!1,a.touching.left=!0,b.touching.none=!1,b.touching.right=!0)),a.overlapX=d,b.overlapX=d,d},getOverlapY:function(a,b,c){var d=0,e=a.deltaAbsY()+b.deltaAbsY()+this.OVERLAP_BIAS;return 0===a.deltaY()&&0===b.deltaY()?(a.embedded=!0,b.embedded=!0):a.deltaY()>b.deltaY()?(d=a.bottom-b.y,d>e&&!c||a.checkCollision.down===!1||b.checkCollision.up===!1?d=0:(a.touching.none=!1,a.touching.down=!0,b.touching.none=!1,b.touching.up=!0)):a.deltaY()e&&!c||a.checkCollision.up===!1||b.checkCollision.down===!1?d=0:(a.touching.none=!1,a.touching.up=!0,b.touching.none=!1,b.touching.down=!0)),a.overlapY=d,b.overlapY=d,d},separateX:function(a,b,c){var d=this.getOverlapX(a,b,c);if(c||0===d||a.immovable&&b.immovable||a.customSeparateX||b.customSeparateX)return 0!==d||a.embedded&&b.embedded;var e=a.velocity.x,f=b.velocity.x;if(a.immovable||b.immovable)a.immovable?(b.x+=d,b.velocity.x=e-f*b.bounce.x,a.moves&&(b.y+=(a.y-a.prev.y)*a.friction.y)):(a.x-=d,a.velocity.x=f-e*a.bounce.x,b.moves&&(a.y+=(b.y-b.prev.y)*b.friction.y));else{d*=.5,a.x-=d,b.x+=d;var g=Math.sqrt(f*f*b.mass/a.mass)*(f>0?1:-1),h=Math.sqrt(e*e*a.mass/b.mass)*(e>0?1:-1),i=.5*(g+h);g-=i,h-=i,a.velocity.x=i+g*a.bounce.x,b.velocity.x=i+h*b.bounce.x}return!0},separateY:function(a,b,c){var d=this.getOverlapY(a,b,c);if(c||0===d||a.immovable&&b.immovable||a.customSeparateY||b.customSeparateY)return 0!==d||a.embedded&&b.embedded;var e=a.velocity.y,f=b.velocity.y;if(a.immovable||b.immovable)a.immovable?(b.y+=d,b.velocity.y=e-f*b.bounce.y,a.moves&&(b.x+=(a.x-a.prev.x)*a.friction.x)):(a.y-=d,a.velocity.y=f-e*a.bounce.y,b.moves&&(a.x+=(b.x-b.prev.x)*b.friction.x));else{d*=.5,a.y-=d,b.y+=d;var g=Math.sqrt(f*f*b.mass/a.mass)*(f>0?1:-1),h=Math.sqrt(e*e*a.mass/b.mass)*(e>0?1:-1),i=.5*(g+h);g-=i,h-=i,a.velocity.y=i+g*a.bounce.y,b.velocity.y=i+h*b.bounce.y}return!0},getObjectsUnderPointer:function(a,b,c,d){return 0!==b.length&&a.exists?this.getObjectsAtLocation(a.x,a.y,b,c,d,a):void 0},getObjectsAtLocation:function(a,b,d,e,f,g){this.quadTree.clear(),this.quadTree.reset(this.game.world.bounds.x,this.game.world.bounds.y,this.game.world.bounds.width,this.game.world.bounds.height,this.maxObjects,this.maxLevels),this.quadTree.populate(d);for(var h=new c.Rectangle(a,b,1,1),i=[],j=this.quadTree.retrieve(h),k=0;k0&&(c=this.distanceBetween(a,b)/(d/1e3)),a.body.velocity.x=Math.cos(e)*c,a.body.velocity.y=Math.sin(e)*c,e},moveToPointer:function(a,b,c,d){void 0===b&&(b=60),c=c||this.game.input.activePointer,void 0===d&&(d=0);var e=this.angleToPointer(a,c);return d>0&&(b=this.distanceToPointer(a,c)/(d/1e3)),a.body.velocity.x=Math.cos(e)*b,a.body.velocity.y=Math.sin(e)*b,e},moveToXY:function(a,b,c,d,e){void 0===d&&(d=60),void 0===e&&(e=0);var f=Math.atan2(c-a.y,b-a.x);return e>0&&(d=this.distanceToXY(a,b,c)/(e/1e3)),a.body.velocity.x=Math.cos(f)*d,a.body.velocity.y=Math.sin(f)*d,f},velocityFromAngle:function(a,b,d){return void 0===b&&(b=60),d=d||new c.Point,d.setTo(Math.cos(this.game.math.degToRad(a))*b,Math.sin(this.game.math.degToRad(a))*b)},velocityFromRotation:function(a,b,d){return void 0===b&&(b=60),d=d||new c.Point,d.setTo(Math.cos(a)*b,Math.sin(a)*b)},accelerationFromRotation:function(a,b,d){return void 0===b&&(b=60),d=d||new c.Point,d.setTo(Math.cos(a)*b,Math.sin(a)*b)},accelerateToObject:function(a,b,c,d,e){void 0===c&&(c=60),void 0===d&&(d=1e3),void 0===e&&(e=1e3);var f=this.angleBetween(a,b);return a.body.acceleration.setTo(Math.cos(f)*c,Math.sin(f)*c),a.body.maxVelocity.setTo(d,e),f},accelerateToPointer:function(a,b,c,d,e){void 0===c&&(c=60),void 0===b&&(b=this.game.input.activePointer),void 0===d&&(d=1e3),void 0===e&&(e=1e3);var f=this.angleToPointer(a,b);return a.body.acceleration.setTo(Math.cos(f)*c,Math.sin(f)*c),a.body.maxVelocity.setTo(d,e),f},accelerateToXY:function(a,b,c,d,e,f){void 0===d&&(d=60),void 0===e&&(e=1e3),void 0===f&&(f=1e3);var g=this.angleToXY(a,b,c);return a.body.acceleration.setTo(Math.cos(g)*d,Math.sin(g)*d),a.body.maxVelocity.setTo(e,f),g},distanceBetween:function(a,b,c){void 0===c&&(c=!1);var d=c?a.world.x-b.world.x:a.x-b.x,e=c?a.world.y-b.world.y:a.y-b.y;return Math.sqrt(d*d+e*e)},distanceToXY:function(a,b,c,d){void 0===d&&(d=!1);var e=d?a.world.x-b:a.x-b,f=d?a.world.y-c:a.y-c;return Math.sqrt(e*e+f*f)},distanceToPointer:function(a,b,c){void 0===b&&(b=this.game.input.activePointer),void 0===c&&(c=!1);var d=c?a.world.x-b.worldX:a.x-b.worldX,e=c?a.world.y-b.worldY:a.y-b.worldY;return Math.sqrt(d*d+e*e)},angleBetween:function(a,b,c){return void 0===c&&(c=!1),c?Math.atan2(b.world.y-a.world.y,b.world.x-a.world.x):Math.atan2(b.y-a.y,b.x-a.x)},angleBetweenCenters:function(a,b){var c=b.center.x-a.center.x,d=b.center.y-a.center.y;return Math.atan2(d,c)},angleToXY:function(a,b,c,d){return void 0===d&&(d=!1),d?Math.atan2(c-a.world.y,b-a.world.x):Math.atan2(c-a.y,b-a.x)},angleToPointer:function(a,b,c){return void 0===b&&(b=this.game.input.activePointer),void 0===c&&(c=!1),c?Math.atan2(b.worldY-a.world.y,b.worldX-a.world.x):Math.atan2(b.worldY-a.y,b.worldX-a.x)},worldAngleToPointer:function(a,b){return this.angleToPointer(a,b,!0)}},c.Physics.Arcade.Body=function(a){this.sprite=a,this.game=a.game,this.type=c.Physics.ARCADE,this.enable=!0,this.isCircle=!1,this.radius=0,this.offset=new c.Point,this.position=new c.Point(a.x,a.y),this.prev=new c.Point(this.position.x,this.position.y),this.allowRotation=!0,this.rotation=a.rotation,this.preRotation=a.rotation,this.width=a.width,this.height=a.height,this.sourceWidth=a.width,this.sourceHeight=a.height,a.texture&&(this.sourceWidth=a.texture.frame.width,this.sourceHeight=a.texture.frame.height),this.halfWidth=Math.abs(a.width/2),this.halfHeight=Math.abs(a.height/2),this.center=new c.Point(a.x+this.halfWidth,a.y+this.halfHeight),this.velocity=new c.Point,this.newVelocity=new c.Point,this.deltaMax=new c.Point,this.acceleration=new c.Point,this.drag=new c.Point,this.allowGravity=!0,this.gravity=new c.Point,this.bounce=new c.Point,this.worldBounce=null,this.onWorldBounds=null,this.onCollide=null,this.onOverlap=null,this.maxVelocity=new c.Point(1e4,1e4),this.friction=new c.Point(1,0),this.angularVelocity=0,this.angularAcceleration=0,this.angularDrag=0,this.maxAngular=1e3,this.mass=1,this.angle=0,this.speed=0,this.facing=c.NONE,this.immovable=!1,this.moves=!0,this.customSeparateX=!1,this.customSeparateY=!1,this.overlapX=0,this.overlapY=0,this.overlapR=0,this.embedded=!1,this.collideWorldBounds=!1,this.checkCollision={none:!1,any:!0,up:!0,down:!0,left:!0,right:!0},this.touching={none:!0,up:!1,down:!1,left:!1,right:!1},this.wasTouching={none:!0,up:!1,down:!1,left:!1,right:!1},this.blocked={up:!1,down:!1,left:!1,right:!1},this.tilePadding=new c.Point,this.dirty=!1,this.skipQuadTree=!1,this.syncBounds=!1,this.isMoving=!1,this.stopVelocityOnCollide=!0,this.moveTimer=0,this.moveDistance=0,this.moveDuration=0,this.moveTarget=null,this.moveEnd=null,this.onMoveComplete=new c.Signal,this.movementCallback=null,this.movementCallbackContext=null,this._reset=!0,this._sx=a.scale.x,this._sy=a.scale.y,this._dx=0,this._dy=0},c.Physics.Arcade.Body.prototype={updateBounds:function(){if(this.syncBounds){var a=this.sprite.getBounds();a.ceilAll(),a.width===this.width&&a.height===this.height||(this.width=a.width,this.height=a.height,this._reset=!0)}else{var b=Math.abs(this.sprite.scale.x),c=Math.abs(this.sprite.scale.y);b===this._sx&&c===this._sy||(this.width=this.sourceWidth*b,this.height=this.sourceHeight*c,this._sx=b,this._sy=c,this._reset=!0)}this._reset&&(this.halfWidth=Math.floor(this.width/2),this.halfHeight=Math.floor(this.height/2), +this.center.setTo(this.position.x+this.halfWidth,this.position.y+this.halfHeight))},preUpdate:function(){this.enable&&!this.game.physics.arcade.isPaused&&(this.dirty=!0,this.wasTouching.none=this.touching.none,this.wasTouching.up=this.touching.up,this.wasTouching.down=this.touching.down,this.wasTouching.left=this.touching.left,this.wasTouching.right=this.touching.right,this.touching.none=!0,this.touching.up=!1,this.touching.down=!1,this.touching.left=!1,this.touching.right=!1,this.blocked.up=!1,this.blocked.down=!1,this.blocked.left=!1,this.blocked.right=!1,this.embedded=!1,this.updateBounds(),this.position.x=this.sprite.world.x-this.sprite.anchor.x*this.sprite.width+this.sprite.scale.x*this.offset.x,this.position.x-=this.sprite.scale.x<0?this.width:0,this.position.y=this.sprite.world.y-this.sprite.anchor.y*this.sprite.height+this.sprite.scale.y*this.offset.y,this.position.y-=this.sprite.scale.y<0?this.height:0,this.rotation=this.sprite.angle,this.preRotation=this.rotation,(this._reset||this.sprite.fresh)&&(this.prev.x=this.position.x,this.prev.y=this.position.y),this.moves&&(this.game.physics.arcade.updateMotion(this),this.newVelocity.set(this.velocity.x*this.game.time.physicsElapsed,this.velocity.y*this.game.time.physicsElapsed),this.position.x+=this.newVelocity.x,this.position.y+=this.newVelocity.y,this.position.x===this.prev.x&&this.position.y===this.prev.y||(this.angle=Math.atan2(this.velocity.y,this.velocity.x)),this.speed=Math.sqrt(this.velocity.x*this.velocity.x+this.velocity.y*this.velocity.y),this.collideWorldBounds&&this.checkWorldBounds()&&this.onWorldBounds&&this.onWorldBounds.dispatch(this.sprite,this.blocked.up,this.blocked.down,this.blocked.left,this.blocked.right)),this._dx=this.deltaX(),this._dy=this.deltaY(),this._reset=!1)},updateMovement:function(){var a=0,b=0!==this.overlapX||0!==this.overlapY;if(this.moveDuration>0?(this.moveTimer+=this.game.time.elapsedMS,a=this.moveTimer/this.moveDuration):(this.moveTarget.end.set(this.position.x,this.position.y),a=this.moveTarget.length/this.moveDistance),this.movementCallback)var c=this.movementCallback.call(this.movementCallbackContext,this,this.velocity,a);return b||a>=1||void 0!==c&&c!==!0?(this.stopMovement(a>=1||this.stopVelocityOnCollide&&b),!1):!0},stopMovement:function(a){this.isMoving&&(this.isMoving=!1,a&&this.velocity.set(0),this.onMoveComplete.dispatch(this.sprite,0!==this.overlapX||0!==this.overlapY))},postUpdate:function(){this.enable&&this.dirty&&(this.isMoving&&this.updateMovement(),this.dirty=!1,this.deltaX()<0?this.facing=c.LEFT:this.deltaX()>0&&(this.facing=c.RIGHT),this.deltaY()<0?this.facing=c.UP:this.deltaY()>0&&(this.facing=c.DOWN),this.moves&&(this._dx=this.deltaX(),this._dy=this.deltaY(),0!==this.deltaMax.x&&0!==this._dx&&(this._dx<0&&this._dx<-this.deltaMax.x?this._dx=-this.deltaMax.x:this._dx>0&&this._dx>this.deltaMax.x&&(this._dx=this.deltaMax.x)),0!==this.deltaMax.y&&0!==this._dy&&(this._dy<0&&this._dy<-this.deltaMax.y?this._dy=-this.deltaMax.y:this._dy>0&&this._dy>this.deltaMax.y&&(this._dy=this.deltaMax.y)),this.sprite.position.x+=this._dx,this.sprite.position.y+=this._dy,this._reset=!0),this.center.setTo(this.position.x+this.halfWidth,this.position.y+this.halfHeight),this.allowRotation&&(this.sprite.angle+=this.deltaZ()),this.prev.x=this.position.x,this.prev.y=this.position.y)},checkWorldBounds:function(){var a=this.position,b=this.game.physics.arcade.bounds,c=this.game.physics.arcade.checkCollision,d=this.worldBounce?-this.worldBounce.x:-this.bounce.x,e=this.worldBounce?-this.worldBounce.y:-this.bounce.y;if(this.isCircle){var f={x:this.center.x-this.radius,y:this.center.y-this.radius,right:this.center.x+this.radius,bottom:this.center.y+this.radius};f.xb.right&&c.right&&(a.x=b.right-this.halfWidth-this.radius,this.velocity.x*=d,this.blocked.right=!0),f.yb.bottom&&c.down&&(a.y=b.bottom-this.halfHeight-this.radius,this.velocity.y*=e,this.blocked.down=!0)}else a.xb.right&&c.right&&(a.x=b.right-this.width,this.velocity.x*=d,this.blocked.right=!0),a.yb.bottom&&c.down&&(a.y=b.bottom-this.height,this.velocity.y*=e,this.blocked.down=!0);return this.blocked.up||this.blocked.down||this.blocked.left||this.blocked.right},moveFrom:function(a,b,c){if(void 0===b&&(b=this.speed),0===b)return!1;var d;return void 0===c?(d=this.angle,c=this.game.math.radToDeg(d)):d=this.game.math.degToRad(c),this.moveTimer=0,this.moveDuration=a,0===c||180===c?this.velocity.set(Math.cos(d)*b,0):90===c||270===c?this.velocity.set(0,Math.sin(d)*b):this.velocity.set(Math.cos(d)*b,Math.sin(d)*b),this.isMoving=!0,!0},moveTo:function(a,b,d){var e=b/(a/1e3);if(0===e)return!1;var f;return void 0===d?(f=this.angle,d=this.game.math.radToDeg(f)):f=this.game.math.degToRad(d),b=Math.abs(b),this.moveDuration=0,this.moveDistance=b,null===this.moveTarget&&(this.moveTarget=new c.Line,this.moveEnd=new c.Point),this.moveTarget.fromAngle(this.x,this.y,f,b),this.moveEnd.set(this.moveTarget.end.x,this.moveTarget.end.y),this.moveTarget.setTo(this.x,this.y,this.x,this.y),0===d||180===d?this.velocity.set(Math.cos(f)*e,0):90===d||270===d?this.velocity.set(0,Math.sin(f)*e):this.velocity.set(Math.cos(f)*e,Math.sin(f)*e),this.isMoving=!0,!0},setSize:function(a,b,c,d){void 0===c&&(c=this.offset.x),void 0===d&&(d=this.offset.y),this.sourceWidth=a,this.sourceHeight=b,this.width=this.sourceWidth*this._sx,this.height=this.sourceHeight*this._sy,this.halfWidth=Math.floor(this.width/2),this.halfHeight=Math.floor(this.height/2),this.offset.setTo(c,d),this.center.setTo(this.position.x+this.halfWidth,this.position.y+this.halfHeight),this.isCircle=!1,this.radius=0},setCircle:function(a,b,c){void 0===b&&(b=this.offset.x),void 0===c&&(c=this.offset.y),a>0?(this.isCircle=!0,this.radius=a,this.sourceWidth=2*a,this.sourceHeight=2*a,this.width=this.sourceWidth*this._sx,this.height=this.sourceHeight*this._sy,this.halfWidth=Math.floor(this.width/2),this.halfHeight=Math.floor(this.height/2),this.offset.setTo(b,c),this.center.setTo(this.position.x+this.halfWidth,this.position.y+this.halfHeight)):this.isCircle=!1},reset:function(a,b){this.velocity.set(0),this.acceleration.set(0),this.speed=0,this.angularVelocity=0,this.angularAcceleration=0,this.position.x=a-this.sprite.anchor.x*this.sprite.width+this.sprite.scale.x*this.offset.x,this.position.x-=this.sprite.scale.x<0?this.width:0,this.position.y=b-this.sprite.anchor.y*this.sprite.height+this.sprite.scale.y*this.offset.y,this.position.y-=this.sprite.scale.y<0?this.height:0,this.prev.x=this.position.x,this.prev.y=this.position.y,this.rotation=this.sprite.angle,this.preRotation=this.rotation,this._sx=this.sprite.scale.x,this._sy=this.sprite.scale.y,this.center.setTo(this.position.x+this.halfWidth,this.position.y+this.halfHeight)},getBounds:function(a){return this.isCircle?(a.x=this.center.x-this.radius,a.y=this.center.y-this.radius,a.right=this.center.x+this.radius,a.bottom=this.center.y+this.radius):(a.x=this.x,a.y=this.y,a.right=this.right,a.bottom=this.bottom),a},hitTest:function(a,b){return this.isCircle?c.Circle.contains(this,a,b):c.Rectangle.contains(this,a,b)},onFloor:function(){return this.blocked.down},onCeiling:function(){return this.blocked.up},onWall:function(){return this.blocked.left||this.blocked.right},deltaAbsX:function(){return this.deltaX()>0?this.deltaX():-this.deltaX()},deltaAbsY:function(){return this.deltaY()>0?this.deltaY():-this.deltaY()},deltaX:function(){return this.position.x-this.prev.x},deltaY:function(){return this.position.y-this.prev.y},deltaZ:function(){return this.rotation-this.preRotation},destroy:function(){this.sprite.parent&&this.sprite.parent instanceof c.Group&&this.sprite.parent.removeFromHash(this.sprite),this.sprite.body=null,this.sprite=null}},Object.defineProperty(c.Physics.Arcade.Body.prototype,"left",{get:function(){return this.position.x}}),Object.defineProperty(c.Physics.Arcade.Body.prototype,"right",{get:function(){return this.position.x+this.width}}),Object.defineProperty(c.Physics.Arcade.Body.prototype,"top",{get:function(){return this.position.y}}),Object.defineProperty(c.Physics.Arcade.Body.prototype,"bottom",{get:function(){return this.position.y+this.height}}),Object.defineProperty(c.Physics.Arcade.Body.prototype,"x",{get:function(){return this.position.x},set:function(a){this.position.x=a}}),Object.defineProperty(c.Physics.Arcade.Body.prototype,"y",{get:function(){return this.position.y},set:function(a){this.position.y=a}}),c.Physics.Arcade.Body.render=function(a,b,c,d){void 0===d&&(d=!0),c=c||"rgba(0,255,0,0.4)",a.fillStyle=c,a.strokeStyle=c,b.isCircle?(a.beginPath(),a.arc(b.center.x-b.game.camera.x,b.center.y-b.game.camera.y,b.radius,0,2*Math.PI),d?a.fill():a.stroke()):d?a.fillRect(b.position.x-b.game.camera.x,b.position.y-b.game.camera.y,b.width,b.height):a.strokeRect(b.position.x-b.game.camera.x,b.position.y-b.game.camera.y,b.width,b.height)},c.Physics.Arcade.Body.renderBodyInfo=function(a,b){a.line("x: "+b.x.toFixed(2),"y: "+b.y.toFixed(2),"width: "+b.width,"height: "+b.height),a.line("velocity x: "+b.velocity.x.toFixed(2),"y: "+b.velocity.y.toFixed(2),"deltaX: "+b._dx.toFixed(2),"deltaY: "+b._dy.toFixed(2)),a.line("acceleration x: "+b.acceleration.x.toFixed(2),"y: "+b.acceleration.y.toFixed(2),"speed: "+b.speed.toFixed(2),"angle: "+b.angle.toFixed(2)),a.line("gravity x: "+b.gravity.x,"y: "+b.gravity.y,"bounce x: "+b.bounce.x.toFixed(2),"y: "+b.bounce.y.toFixed(2)),a.line("touching left: "+b.touching.left,"right: "+b.touching.right,"up: "+b.touching.up,"down: "+b.touching.down),a.line("blocked left: "+b.blocked.left,"right: "+b.blocked.right,"up: "+b.blocked.up,"down: "+b.blocked.down)},c.Physics.Arcade.Body.prototype.constructor=c.Physics.Arcade.Body,c.Physics.Arcade.TilemapCollision=function(){},c.Physics.Arcade.TilemapCollision.prototype={TILE_BIAS:16,collideSpriteVsTilemapLayer:function(a,b,c,d,e,f){if(a.body){var g=b.getTiles(a.body.position.x-a.body.tilePadding.x,a.body.position.y-a.body.tilePadding.y,a.body.width+a.body.tilePadding.x,a.body.height+a.body.tilePadding.y,!1,!1);if(0!==g.length)for(var h=0;hb.deltaAbsY()?j=-1:b.deltaAbsX()j){if((c.faceLeft||c.faceRight)&&(h=this.tileCheckX(b,c,d),0!==h&&!c.intersects(b.position.x-f,b.position.y-g,b.right-f,b.bottom-g)))return!0;(c.faceTop||c.faceBottom)&&(i=this.tileCheckY(b,c,d))}else{if((c.faceTop||c.faceBottom)&&(i=this.tileCheckY(b,c,d),0!==i&&!c.intersects(b.position.x-f,b.position.y-g,b.right-f,b.bottom-g)))return!0;(c.faceLeft||c.faceRight)&&(h=this.tileCheckX(b,c,d))}return 0!==h||0!==i},tileCheckX:function(a,b,c){var d=0,e=c.fixedToCamera?0:c.position.x;return a.deltaX()<0&&!a.blocked.left&&b.collideRight&&a.checkCollision.left?b.faceRight&&a.x-e0&&!a.blocked.right&&b.collideLeft&&a.checkCollision.right&&b.faceLeft&&a.right-e>b.left&&(d=a.right-e-b.left,d>this.TILE_BIAS&&(d=0)),0!==d&&(a.customSeparateX?a.overlapX=d:this.processTileSeparationX(a,d)),d},tileCheckY:function(a,b,c){var d=0,e=c.fixedToCamera?0:c.position.y;return a.deltaY()<0&&!a.blocked.up&&b.collideDown&&a.checkCollision.up?b.faceBottom&&a.y-e0&&!a.blocked.down&&b.collideUp&&a.checkCollision.down&&b.faceTop&&a.bottom-e>b.top&&(d=a.bottom-e-b.top,d>this.TILE_BIAS&&(d=0)),0!==d&&(a.customSeparateY?a.overlapY=d:this.processTileSeparationY(a,d)),d},processTileSeparationX:function(a,b){0>b?a.blocked.left=!0:b>0&&(a.blocked.right=!0),a.position.x-=b,0===a.bounce.x?a.velocity.x=0:a.velocity.x=-a.velocity.x*a.bounce.x},processTileSeparationY:function(a,b){0>b?a.blocked.up=!0:b>0&&(a.blocked.down=!0),a.position.y-=b,0===a.bounce.y?a.velocity.y=0:a.velocity.y=-a.velocity.y*a.bounce.y}},c.Utils.mixinPrototype(c.Physics.Arcade.prototype,c.Physics.Arcade.TilemapCollision.prototype),c.ImageCollection=function(a,b,c,d,e,f,g){(void 0===c||0>=c)&&(c=32),(void 0===d||0>=d)&&(d=32),void 0===e&&(e=0),void 0===f&&(f=0),this.name=a,this.firstgid=0|b,this.imageWidth=0|c,this.imageHeight=0|d,this.imageMargin=0|e,this.imageSpacing=0|f,this.properties=g||{},this.images=[],this.total=0},c.ImageCollection.prototype={containsImageIndex:function(a){return a>=this.firstgid&&athis.right||b>this.bottom)},intersects:function(a,b,c,d){return c<=this.worldX?!1:d<=this.worldY?!1:a>=this.worldX+this.width?!1:!(b>=this.worldY+this.height)},setCollisionCallback:function(a,b){this.collisionCallback=a,this.collisionCallbackContext=b},destroy:function(){this.collisionCallback=null,this.collisionCallbackContext=null,this.properties=null},setCollision:function(a,b,c,d){this.collideLeft=a,this.collideRight=b,this.collideUp=c,this.collideDown=d,this.faceLeft=a,this.faceRight=b,this.faceTop=c,this.faceBottom=d},resetCollision:function(){this.collideLeft=!1,this.collideRight=!1,this.collideUp=!1,this.collideDown=!1,this.faceTop=!1,this.faceBottom=!1,this.faceLeft=!1,this.faceRight=!1},isInteresting:function(a,b){return a&&b?this.collideLeft||this.collideRight||this.collideUp||this.collideDown||this.faceTop||this.faceBottom||this.faceLeft||this.faceRight||this.collisionCallback:a?this.collideLeft||this.collideRight||this.collideUp||this.collideDown:b?this.faceTop||this.faceBottom||this.faceLeft||this.faceRight:!1},copy:function(a){this.index=a.index,this.alpha=a.alpha,this.properties=a.properties,this.collideUp=a.collideUp,this.collideDown=a.collideDown,this.collideLeft=a.collideLeft,this.collideRight=a.collideRight,this.collisionCallback=a.collisionCallback,this.collisionCallbackContext=a.collisionCallbackContext}},c.Tile.prototype.constructor=c.Tile,Object.defineProperty(c.Tile.prototype,"collides",{get:function(){return this.collideLeft||this.collideRight||this.collideUp||this.collideDown}}),Object.defineProperty(c.Tile.prototype,"canCollide",{get:function(){return this.collideLeft||this.collideRight||this.collideUp||this.collideDown||this.collisionCallback}}),Object.defineProperty(c.Tile.prototype,"left",{get:function(){return this.worldX}}),Object.defineProperty(c.Tile.prototype,"right",{get:function(){return this.worldX+this.width}}),Object.defineProperty(c.Tile.prototype,"top",{get:function(){return this.worldY}}),Object.defineProperty(c.Tile.prototype,"bottom",{get:function(){return this.worldY+this.height}}),c.Tilemap=function(a,b,d,e,f,g){this.game=a,this.key=b;var h=c.TilemapParser.parse(this.game,b,d,e,f,g);null!==h&&(this.width=h.width,this.height=h.height,this.tileWidth=h.tileWidth,this.tileHeight=h.tileHeight,this.orientation=h.orientation,this.format=h.format,this.version=h.version,this.properties=h.properties,this.widthInPixels=h.widthInPixels,this.heightInPixels=h.heightInPixels,this.layers=h.layers,this.tilesets=h.tilesets,this.imagecollections=h.imagecollections,this.tiles=h.tiles,this.objects=h.objects,this.collideIndexes=[],this.collision=h.collision,this.images=h.images,this.currentLayer=0,this.debugMap=[],this._results=[],this._tempA=0,this._tempB=0)},c.Tilemap.CSV=0,c.Tilemap.TILED_JSON=1,c.Tilemap.NORTH=0,c.Tilemap.EAST=1,c.Tilemap.SOUTH=2,c.Tilemap.WEST=3,c.Tilemap.prototype={create:function(a,b,c,d,e,f){return void 0===f&&(f=this.game.world),this.width=b,this.height=c,this.setTileSize(d,e),this.layers.length=0,this.createBlankLayer(a,b,c,d,e,f)},setTileSize:function(a,b){this.tileWidth=a,this.tileHeight=b,this.widthInPixels=this.width*a,this.heightInPixels=this.height*b},addTilesetImage:function(a,b,d,e,f,g,h){if(void 0===a)return null;void 0===d&&(d=this.tileWidth),void 0===e&&(e=this.tileHeight),void 0===f&&(f=0),void 0===g&&(g=0),void 0===h&&(h=0),0===d&&(d=32),0===e&&(e=32);var i=null;if(void 0!==b&&null!==b||(b=a),b instanceof c.BitmapData)i=b.canvas;else{if(!this.game.cache.checkImageKey(b))return console.warn('Phaser.Tilemap.addTilesetImage: Invalid image key given: "'+b+'"'),null;i=this.game.cache.getImage(b)}var j=this.getTilesetIndex(a);if(null===j&&this.format===c.Tilemap.TILED_JSON)return console.warn('Phaser.Tilemap.addTilesetImage: No data found in the JSON matching the tileset name: "'+a+'"'),null;if(this.tilesets[j])return this.tilesets[j].setImage(i),this.tilesets[j];var k=new c.Tileset(a,h,d,e,f,g,{});k.setImage(i),this.tilesets.push(k);for(var l=this.tilesets.length-1,m=f,n=f,o=0,p=0,q=0,r=h;rl;l++)if(-1!==a.indexOf(this._results[l].index)){j=new g.customClass(this.game,this._results[l].worldX,this._results[l].worldY,d);for(var n in g)j[n]=g[n];f.add(j),k++}if(1===b.length)for(l=0;l1)for(l=0;lthis.layers.length?void console.warn("Tilemap.createLayer: Invalid layer ID given: "+g):f?e.add(new c.TilemapLayerGL(this.game,this,g,b,d)):e.add(new c.TilemapLayer(this.game,this,g,b,d))},createBlankLayer:function(a,b,d,e,f,g){if(void 0===g&&(g=this.game.world),null!==this.getLayerIndex(a))return void console.warn("Tilemap.createBlankLayer: Layer with matching name already exists");for(var h,i={name:a,x:0,y:0,width:b,height:d,widthInPixels:b*e,heightInPixels:d*f,alpha:1,visible:!0,properties:{},indexes:[],callbacks:[],bodies:[],data:null},j=[],k=0;d>k;k++){h=[];for(var l=0;b>l;l++)h.push(new c.Tile(i,-1,l,k,e,f));j.push(h)}i.data=j,this.layers.push(i),this.currentLayer=this.layers.length-1;var m=i.widthInPixels,n=i.heightInPixels;m>this.game.width&&(m=this.game.width),n>this.game.height&&(n=this.game.height);var j=new c.TilemapLayer(this.game,this,this.layers.length-1,m,n);return j.name=a,g.add(j)},getIndex:function(a,b){for(var c=0;ce;e++)this.layers[d].callbacks[a[e]]={callback:b,callbackContext:c}},setTileLocationCallback:function(a,b,c,d,e,f,g){if(g=this.getLayer(g),this.copy(a,b,c,d,g),!(this._results.length<2))for(var h=1;hb)){for(var f=a;b>=f;f++)this.setCollisionByIndex(f,c,d,!1);e&&this.calculateFaces(d)}},setCollisionByExclusion:function(a,b,c,d){void 0===b&&(b=!0),void 0===d&&(d=!0),c=this.getLayer(c);for(var e=0,f=this.tiles.length;f>e;e++)-1===a.indexOf(e)&&this.setCollisionByIndex(e,b,c,!1);d&&this.calculateFaces(c)},setCollisionByIndex:function(a,b,c,d){if(void 0===b&&(b=!0),void 0===c&&(c=this.currentLayer),void 0===d&&(d=!0),b)this.collideIndexes.push(a);else{var e=this.collideIndexes.indexOf(a);e>-1&&this.collideIndexes.splice(e,1)}for(var f=0;ff;f++)for(var h=0,i=this.layers[a].width;i>h;h++){var j=this.layers[a].data[f][h];j&&(b=this.getTileAbove(a,h,f),c=this.getTileBelow(a,h,f),d=this.getTileLeft(a,h,f),e=this.getTileRight(a,h,f),j.collides&&(j.faceTop=!0,j.faceBottom=!0,j.faceLeft=!0,j.faceRight=!0),b&&b.collides&&(j.faceTop=!1),c&&c.collides&&(j.faceBottom=!1),d&&d.collides&&(j.faceLeft=!1),e&&e.collides&&(j.faceRight=!1))}},getTileAbove:function(a,b,c){return c>0?this.layers[a].data[c-1][b]:null},getTileBelow:function(a,b,c){return c0?this.layers[a].data[c][b-1]:null},getTileRight:function(a,b,c){return b-1},removeTile:function(a,b,d){if(d=this.getLayer(d),a>=0&&a=0&&b=0&&b=0&&d-1?this.layers[e].data[d][b].setCollision(!0,!0,!0,!0):this.layers[e].data[d][b].resetCollision(),this.layers[e].dirty=!0,this.calculateFaces(e),this.layers[e].data[d][b]}return null},putTileWorldXY:function(a,b,c,d,e,f){return f=this.getLayer(f),b=this.game.math.snapToFloor(b,d)/d,c=this.game.math.snapToFloor(c,e)/e,this.putTile(a,b,c,f)},searchTileIndex:function(a,b,c,d){void 0===b&&(b=0),void 0===c&&(c=!1),d=this.getLayer(d);var e=0;if(c){for(var f=this.layers[d].height-1;f>=0;f--)for(var g=this.layers[d].width-1;g>=0;g--)if(this.layers[d].data[f][g].index===a){if(e===b)return this.layers[d].data[f][g];e++}}else for(var f=0;f=0&&a=0&&ba&&(a=0),0>b&&(b=0),c>this.layers[e].width&&(c=this.layers[e].width),d>this.layers[e].height&&(d=this.layers[e].height),this._results.length=0,this._results.push({x:a,y:b,width:c,height:d,layer:e});for(var f=b;b+d>f;f++)for(var g=a;a+c>g;g++)this._results.push(this.layers[e].data[f][g]);return this._results},paste:function(a,b,c,d){if(void 0===a&&(a=0),void 0===b&&(b=0),d=this.getLayer(d),c&&!(c.length<2)){for(var e=a-c[1].x,f=b-c[1].y,g=1;g1?this.debugMap[this.layers[this.currentLayer].data[c][d]]?b.push("background: "+this.debugMap[this.layers[this.currentLayer].data[c][d]]):b.push("background: #ffffff"):b.push("background: rgb(0, 0, 0)");a+="\n"}b[0]=a,console.log.apply(console,b)},destroy:function(){this.removeAllLayers(),this.data=[],this.game=null}},c.Tilemap.prototype.constructor=c.Tilemap,Object.defineProperty(c.Tilemap.prototype,"layer",{get:function(){return this.layers[this.currentLayer]},set:function(a){a!==this.currentLayer&&this.setLayer(a)}}),c.TilemapLayer=function(a,b,d,e,f){e|=0,f|=0,c.Sprite.call(this,a,0,0),this.map=b,this.index=d,this.layer=b.layers[d],this.canvas=PIXI.CanvasPool.create(this,e,f),this.context=this.canvas.getContext("2d"),this.setTexture(new PIXI.Texture(new PIXI.BaseTexture(this.canvas))),this.type=c.TILEMAPLAYER,this.physicsType=c.TILEMAPLAYER,this.renderSettings={enableScrollDelta:!1,overdrawRatio:.2,copyCanvas:null},this.debug=!1,this.exists=!0,this.debugSettings={missingImageFill:"rgb(255,255,255)",debuggedTileOverfill:"rgba(0,255,0,0.4)",forceFullRedraw:!0,debugAlpha:.5,facingEdgeStroke:"rgba(0,255,0,1)",collidingTileOverfill:"rgba(0,255,0,0.2)"},this.scrollFactorX=1,this.scrollFactorY=1,this.dirty=!0,this.rayStepRate=4,this._wrap=!1,this._mc={scrollX:0,scrollY:0,renderWidth:0,renderHeight:0,tileWidth:b.tileWidth,tileHeight:b.tileHeight,cw:b.tileWidth,ch:b.tileHeight,tilesets:[]},this._scrollX=0,this._scrollY=0,this._results=[],a.device.canvasBitBltShift||(this.renderSettings.copyCanvas=c.TilemapLayer.ensureSharedCopyCanvas()),this.fixedToCamera=!0},c.TilemapLayer.prototype=Object.create(c.Sprite.prototype),c.TilemapLayer.prototype.constructor=c.TilemapLayer,c.TilemapLayer.prototype.preUpdateCore=c.Component.Core.preUpdate,c.TilemapLayer.sharedCopyCanvas=null,c.TilemapLayer.ensureSharedCopyCanvas=function(){return this.sharedCopyCanvas||(this.sharedCopyCanvas=c.Canvas.create(2,2)),this.sharedCopyCanvas},c.TilemapLayer.prototype.preUpdate=function(){return this.preUpdateCore()},c.TilemapLayer.prototype.postUpdate=function(){this.fixedToCamera&&(this.position.x=(this.game.camera.view.x+this.cameraOffset.x)/this.game.camera.scale.x,this.position.y=(this.game.camera.view.y+this.cameraOffset.y)/this.game.camera.scale.y),this._scrollX=this.game.camera.view.x*this.scrollFactorX/this.scale.x,this._scrollY=this.game.camera.view.y*this.scrollFactorY/this.scale.y},c.TilemapLayer.prototype._renderCanvas=function(a){this.fixedToCamera&&(this.position.x=(this.game.camera.view.x+this.cameraOffset.x)/this.game.camera.scale.x, +this.position.y=(this.game.camera.view.y+this.cameraOffset.y)/this.game.camera.scale.y),this._scrollX=this.game.camera.view.x*this.scrollFactorX/this.scale.x,this._scrollY=this.game.camera.view.y*this.scrollFactorY/this.scale.y,this.render(),PIXI.Sprite.prototype._renderCanvas.call(this,a)},c.TilemapLayer.prototype._renderWebGL=function(a){this.fixedToCamera&&(this.position.x=(this.game.camera.view.x+this.cameraOffset.x)/this.game.camera.scale.x,this.position.y=(this.game.camera.view.y+this.cameraOffset.y)/this.game.camera.scale.y),this._scrollX=this.game.camera.view.x*this.scrollFactorX/this.scale.x,this._scrollY=this.game.camera.view.y*this.scrollFactorY/this.scale.y,this.render(),PIXI.Sprite.prototype._renderWebGL.call(this,a)},c.TilemapLayer.prototype.destroy=function(){PIXI.CanvasPool.remove(this),c.Component.Destroy.prototype.destroy.call(this)},c.TilemapLayer.prototype.resize=function(a,b){this.canvas.width=a,this.canvas.height=b,this.texture.frame.resize(a,b),this.texture.width=a,this.texture.height=b,this.texture.crop.width=a,this.texture.crop.height=b,this.texture.baseTexture.width=a,this.texture.baseTexture.height=b,this.texture.baseTexture.dirty(),this.texture.requiresUpdate=!0,this.texture._updateUvs(),this.dirty=!0},c.TilemapLayer.prototype.resizeWorld=function(){this.game.world.setBounds(0,0,this.layer.widthInPixels*this.scale.x,this.layer.heightInPixels*this.scale.y)},c.TilemapLayer.prototype._fixX=function(a){return 1===this.scrollFactorX||0===this.scrollFactorX&&0===this.position.x?a:0===this.scrollFactorX&&0!==this.position.x?a-this.position.x:this._scrollX+(a-this._scrollX/this.scrollFactorX)},c.TilemapLayer.prototype._unfixX=function(a){return 1===this.scrollFactorX?a:this._scrollX/this.scrollFactorX+(a-this._scrollX)},c.TilemapLayer.prototype._fixY=function(a){return 1===this.scrollFactorY||0===this.scrollFactorY&&0===this.position.y?a:0===this.scrollFactorY&&0!==this.position.y?a-this.position.y:this._scrollY+(a-this._scrollY/this.scrollFactorY)},c.TilemapLayer.prototype._unfixY=function(a){return 1===this.scrollFactorY?a:this._scrollY/this.scrollFactorY+(a-this._scrollY)},c.TilemapLayer.prototype.getTileX=function(a){return Math.floor(this._fixX(a)/this._mc.tileWidth)},c.TilemapLayer.prototype.getTileY=function(a){return Math.floor(this._fixY(a)/this._mc.tileHeight)},c.TilemapLayer.prototype.getTileXY=function(a,b,c){return c.x=this.getTileX(a),c.y=this.getTileY(b),c},c.TilemapLayer.prototype.getRayCastTiles=function(a,b,c,d){b||(b=this.rayStepRate),void 0===c&&(c=!1),void 0===d&&(d=!1);var e=this.getTiles(a.x,a.y,a.width,a.height,c,d);if(0===e.length)return[];for(var f=a.coordinatesOnLine(b),g=[],h=0;hl;l++)for(var m=h;h+j>m;m++){var n=this.layer.data[l];n&&n[m]&&(g||n[m].isInteresting(e,f))&&this._results.push(n[m])}return this._results.slice()},c.TilemapLayer.prototype.resolveTileset=function(a){var b=this._mc.tilesets;if(2e3>a)for(;b.lengthb&&(g=-b,i=0),0>c&&(h=-c,j=0);var k=this.renderSettings.copyCanvas;if(k){(k.width=c&&(c=Math.max(0,c),e=Math.min(h-1,e)),f>=d&&(d=Math.max(0,d),f=Math.min(i-1,f)));var n,o,p,q,r,s,t=c*j-a,u=d*k-b,v=(c+(1<<20)*h)%h,w=(d+(1<<20)*i)%i;for(q=w,s=f-d,o=u;s>=0;q++,s--,o+=k){q>=i&&(q-=i);var x=this.layer.data[q];for(p=v,r=e-c,n=t;r>=0;p++,r--,n+=j){p>=h&&(p-=h);var y=x[p];if(y&&!(y.index<0)){var z=y.index,A=l[z];void 0===A&&(A=this.resolveTileset(z)),y.alpha===m||this.debug||(g.globalAlpha=y.alpha,m=y.alpha),A?y.rotation||y.flipped?(g.save(),g.translate(n+y.centerX,o+y.centerY),g.rotate(y.rotation),y.flipped&&g.scale(-1,1),A.draw(g,-y.centerX,-y.centerY,z),g.restore()):A.draw(g,n,o,z):this.debugSettings.missingImageFill&&(g.fillStyle=this.debugSettings.missingImageFill,g.fillRect(n,o,j,k)),y.debug&&this.debugSettings.debuggedTileOverfill&&(g.fillStyle=this.debugSettings.debuggedTileOverfill,g.fillRect(n,o,j,k))}}}},c.TilemapLayer.prototype.renderDeltaScroll=function(a,b){var c=this._mc.scrollX,d=this._mc.scrollY,e=this.canvas.width,f=this.canvas.height,g=this._mc.tileWidth,h=this._mc.tileHeight,i=0,j=-g,k=0,l=-h;if(0>a?(i=e+a,j=e-1):a>0&&(j=a),0>b?(k=f+b,l=f-1):b>0&&(l=b),this.shiftCanvas(this.context,a,b),i=Math.floor((i+c)/g),j=Math.floor((j+c)/g),k=Math.floor((k+d)/h),l=Math.floor((l+d)/h),j>=i){this.context.clearRect(i*g-c,0,(j-i+1)*g,f);var m=Math.floor((0+d)/h),n=Math.floor((f-1+d)/h);this.renderRegion(c,d,i,m,j,n)}if(l>=k){this.context.clearRect(0,k*h-d,e,(l-k+1)*h);var o=Math.floor((0+c)/g),p=Math.floor((e-1+c)/g);this.renderRegion(c,d,o,k,p,l)}},c.TilemapLayer.prototype.renderFull=function(){var a=this._mc.scrollX,b=this._mc.scrollY,c=this.canvas.width,d=this.canvas.height,e=this._mc.tileWidth,f=this._mc.tileHeight,g=Math.floor(a/e),h=Math.floor((c-1+a)/e),i=Math.floor(b/f),j=Math.floor((d-1+b)/f);this.context.clearRect(0,0,c,d),this.renderRegion(a,b,g,i,h,j)},c.TilemapLayer.prototype.render=function(){var a=!1;if(this.visible){(this.dirty||this.layer.dirty)&&(this.layer.dirty=!1,a=!0);var b=this.canvas.width,c=this.canvas.height,d=0|this._scrollX,e=0|this._scrollY,f=this._mc,g=f.scrollX-d,h=f.scrollY-e;if(a||0!==g||0!==h||f.renderWidth!==b||f.renderHeight!==c)return this.context.save(),f.scrollX=d,f.scrollY=e,f.renderWidth===b&&f.renderHeight===c||(f.renderWidth=b,f.renderHeight=c),this.debug&&(this.context.globalAlpha=this.debugSettings.debugAlpha,this.debugSettings.forceFullRedraw&&(a=!0)),!a&&this.renderSettings.enableScrollDelta&&Math.abs(g)+Math.abs(h)=0;d++,f--,b+=o){d>=m&&(d-=m);var x=this.layer.data[d];for(c=v,e=q-p,a=t;e>=0;c++,e--,a+=n){c>=l&&(c-=l);var y=x[c];!y||y.index<0||!y.collides||(this.debugSettings.collidingTileOverfill&&(i.fillStyle=this.debugSettings.collidingTileOverfill,i.fillRect(a,b,this._mc.cw,this._mc.ch)),this.debugSettings.facingEdgeStroke&&(i.beginPath(),y.faceTop&&(i.moveTo(a,b),i.lineTo(a+this._mc.cw,b)),y.faceBottom&&(i.moveTo(a,b+this._mc.ch),i.lineTo(a+this._mc.cw,b+this._mc.ch)),y.faceLeft&&(i.moveTo(a,b),i.lineTo(a,b+this._mc.ch)),y.faceRight&&(i.moveTo(a+this._mc.cw,b),i.lineTo(a+this._mc.cw,b+this._mc.ch)),i.stroke()))}}},Object.defineProperty(c.TilemapLayer.prototype,"wrap",{get:function(){return this._wrap},set:function(a){this._wrap=a,this.dirty=!0}}),Object.defineProperty(c.TilemapLayer.prototype,"scrollX",{get:function(){return this._scrollX},set:function(a){this._scrollX=a}}),Object.defineProperty(c.TilemapLayer.prototype,"scrollY",{get:function(){return this._scrollY},set:function(a){this._scrollY=a}}),Object.defineProperty(c.TilemapLayer.prototype,"collisionWidth",{get:function(){return this._mc.cw},set:function(a){this._mc.cw=0|a,this.dirty=!0}}),Object.defineProperty(c.TilemapLayer.prototype,"collisionHeight",{get:function(){return this._mc.ch},set:function(a){this._mc.ch=0|a,this.dirty=!0}}),c.TilemapParser={INSERT_NULL:!1,FLIPPED_HORIZONTALLY_FLAG:2147483648,FLIPPED_VERTICALLY_FLAG:1073741824,FLIPPED_DIAGONALLY_FLAG:536870912,parse:function(a,b,d,e,f,g){if(void 0===d&&(d=32),void 0===e&&(e=32),void 0===f&&(f=10),void 0===g&&(g=10),void 0===b)return this.getEmptyData();if(null===b)return this.getEmptyData(d,e,f,g);var h=a.cache.getTilemapData(b);if(h){if(h.format===c.Tilemap.CSV)return this.parseCSV(b,h.data,d,e);if(!h.format||h.format===c.Tilemap.TILED_JSON)return this.parseTiledJSON(h.data)}else console.warn("Phaser.TilemapParser.parse - No map data found for key "+b)},parseCSV:function(a,b,d,e){var f=this.getEmptyData();b=b.trim();for(var g=[],h=b.split("\n"),i=h.length,j=0,k=0;kk;k+=4)j[k/4]=(h.charCodeAt(k)|h.charCodeAt(k+1)<<8|h.charCodeAt(k+2)<<16|h.charCodeAt(k+3)<<24)>>>0;g.data=j,delete g.encoding}else if(g.compression){console.warn("TilemapParser.parseTiledJSON - Layer compression is unsupported, skipping layer '"+g.name+"'");continue}var l={name:g.name,x:g.x,y:g.y,width:g.width,height:g.height,widthInPixels:g.width*a.tilewidth,heightInPixels:g.height*a.tileheight,alpha:g.opacity,visible:g.visible,properties:{},indexes:[],callbacks:[],bodies:[]};g.properties&&(l.properties=g.properties);for(var m,n,o,p,q=0,r=[],s=[],t=0,i=g.data.length;i>t;t++){if(m=0,n=!1,p=g.data[t],p>536870912)switch(o=0,p>2147483648&&(p-=2147483648,o+=4),p>1073741824&&(p-=1073741824,o+=2),p>536870912&&(p-=536870912,o+=1),o){case 5:m=Math.PI/2;break;case 6:m=Math.PI;break;case 3:m=3*Math.PI/2;break;case 4:m=0,n=!0;break;case 7:m=Math.PI/2,n=!0;break;case 2:m=Math.PI,n=!0;break;case 1:m=3*Math.PI/2,n=!0}p>0?(r.push(new c.Tile(l,p,q,s.length,a.tilewidth,a.tileheight)),r[r.length-1].rotation=m,r[r.length-1].flipped=n):c.TilemapParser.INSERT_NULL?r.push(null):r.push(new c.Tile(l,-1,q,s.length,a.tilewidth,a.tileheight)),q++,q===g.width&&(s.push(r),q=0,r=[])}l.data=s,e.push(l)}d.layers=e;for(var u=[],f=0;fG;G++)if(F.objects[G].gid){var H=this,I={gid:F.objects[G].gid,name:F.objects[G].name,type:F.objects[G].hasOwnProperty("type")?F.objects[G].type:"",x:F.objects[G].x,y:F.objects[G].y,width:F.objects[G].width,height:F.objects[G].height,visible:F.objects[G].visible,properties:F.objects[G].properties,horizontallyFlipped:F.objects[G].gid&H.FLIPPED_HORIZONTALLY_FLAG,verticallyFlipped:F.objects[G].gid&H.FLIPPED_VERTICALLY_FLAG,diagonallyFlipped:F.objects[G].gid&H.FLIPPED_DIAGONALLY_FLAG};F.objects[G].rotation&&(I.rotation=F.objects[G].rotation),D[F.name].push(I)}else if(F.objects[G].polyline){var I={name:F.objects[G].name,type:F.objects[G].type,x:F.objects[G].x,y:F.objects[G].y,width:F.objects[G].width,height:F.objects[G].height,visible:F.objects[G].visible,properties:F.objects[G].properties};F.objects[G].rotation&&(I.rotation=F.objects[G].rotation),I.polyline=[];for(var J=0;J=c)&&(c=32),(void 0===d||0>=d)&&(d=32),void 0===e&&(e=0),void 0===f&&(f=0),this.name=a,this.firstgid=0|b,this.tileWidth=0|c,this.tileHeight=0|d,this.tileMargin=0|e,this.tileSpacing=0|f,this.properties=g||{},this.image=null,this.rows=0,this.columns=0,this.total=0,this.drawCoords=[]},c.Tileset.prototype={draw:function(a,b,c,d){var e=d-this.firstgid<<1;e>=0&&e+1=this.firstgid&&a=this._timer)if(this._timer=this.game.time.time+this.frequency*this.game.time.slowMotion,0!==this._flowTotal)if(this._flowQuantity>0){for(var a=0;a=this._flowTotal)){this.on=!1;break}}else this.emitParticle()&&(this._counter++,-1!==this._flowTotal&&this._counter>=this._flowTotal&&(this.on=!1));else this.emitParticle()&&(this._counter++,this._quantity>0&&this._counter>=this._quantity&&(this.on=!1));for(var a=this.children.length;a--;)this.children[a].exists&&this.children[a].update()},c.Particles.Arcade.Emitter.prototype.makeParticles=function(a,b,c,d,e){void 0===b&&(b=0),void 0===c&&(c=this.maxParticles),void 0===d&&(d=!1),void 0===e&&(e=!1);var f,g=0,h=a,i=b;for(this._frames=b,c>this.maxParticles&&(this.maxParticles=c);c>g;)Array.isArray(a)&&(h=this.game.rnd.pick(a)),Array.isArray(b)&&(i=this.game.rnd.pick(b)),f=new this.particleClass(this.game,0,0,h,i),this.game.physics.arcade.enable(f,!1),d?(f.body.checkCollision.any=!0,f.body.checkCollision.none=!1):f.body.checkCollision.none=!0,f.body.collideWorldBounds=e,f.body.skipQuadTree=!0,f.exists=!1,f.visible=!1,f.anchor.copyFrom(this.particleAnchor),this.add(f),g++;return this},c.Particles.Arcade.Emitter.prototype.kill=function(){return this.on=!1,this.alive=!1,this.exists=!1,this},c.Particles.Arcade.Emitter.prototype.revive=function(){return this.alive=!0,this.exists=!0,this},c.Particles.Arcade.Emitter.prototype.explode=function(a,b){return this._flowTotal=0,this.start(!0,a,0,b,!1),this},c.Particles.Arcade.Emitter.prototype.flow=function(a,b,c,d,e){return void 0!==c&&0!==c||(c=1),void 0===d&&(d=-1),void 0===e&&(e=!0),c>this.maxParticles&&(c=this.maxParticles),this._counter=0,this._flowQuantity=c,this._flowTotal=d,e?(this.start(!0,a,b,c),this._counter+=c,this.on=!0,this._timer=this.game.time.time+b*this.game.time.slowMotion):this.start(!1,a,b,c),this},c.Particles.Arcade.Emitter.prototype.start=function(a,b,c,d,e){if(void 0===a&&(a=!0),void 0===b&&(b=0),void 0!==c&&null!==c||(c=250),void 0===d&&(d=0),void 0===e&&(e=!1),d>this.maxParticles&&(d=this.maxParticles),this.revive(),this.visible=!0,this.lifespan=b,this.frequency=c,a||e)for(var f=0;d>f;f++)this.emitParticle();else this.on=!0,this._quantity=d,this._counter=0,this._timer=this.game.time.time+c*this.game.time.slowMotion;return this},c.Particles.Arcade.Emitter.prototype.emitParticle=function(a,b,c,d){void 0===a&&(a=null),void 0===b&&(b=null);var e=this.getFirstExists(!1);if(null===e)return!1;var f=this.game.rnd;void 0!==c&&void 0!==d?e.loadTexture(c,d):void 0!==c&&e.loadTexture(c);var g=this.emitX,h=this.emitY;null!==a?g=a:this.width>1&&(g=f.between(this.left,this.right)),null!==b?h=b:this.height>1&&(h=f.between(this.top,this.bottom)),e.reset(g,h),e.angle=0,e.lifespan=this.lifespan,this.particleBringToTop?this.bringToTop(e):this.particleSendToBack&&this.sendToBack(e),this.autoScale?e.setScaleData(this.scaleData):1!==this.minParticleScale||1!==this.maxParticleScale?e.scale.set(f.realInRange(this.minParticleScale,this.maxParticleScale)):this._minParticleScale.x===this._maxParticleScale.x&&this._minParticleScale.y===this._maxParticleScale.y||e.scale.set(f.realInRange(this._minParticleScale.x,this._maxParticleScale.x),f.realInRange(this._minParticleScale.y,this._maxParticleScale.y)),void 0===d&&(Array.isArray(this._frames)?e.frame=this.game.rnd.pick(this._frames):e.frame=this._frames),this.autoAlpha?e.setAlphaData(this.alphaData):e.alpha=f.realInRange(this.minParticleAlpha,this.maxParticleAlpha),e.blendMode=this.blendMode;var i=e.body;return i.updateBounds(),i.bounce.copyFrom(this.bounce),i.drag.copyFrom(this.particleDrag),i.velocity.x=f.between(this.minParticleSpeed.x,this.maxParticleSpeed.x),i.velocity.y=f.between(this.minParticleSpeed.y,this.maxParticleSpeed.y),i.angularVelocity=f.between(this.minRotation,this.maxRotation),i.gravity.y=this.gravity,i.angularDrag=this.angularDrag,e.onEmit(),!0},c.Particles.Arcade.Emitter.prototype.destroy=function(){this.game.particles.remove(this),c.Group.prototype.destroy.call(this,!0,!1)},c.Particles.Arcade.Emitter.prototype.setSize=function(a,b){return this.area.width=a,this.area.height=b,this},c.Particles.Arcade.Emitter.prototype.setXSpeed=function(a,b){return a=a||0,b=b||0,this.minParticleSpeed.x=a,this.maxParticleSpeed.x=b,this},c.Particles.Arcade.Emitter.prototype.setYSpeed=function(a,b){return a=a||0,b=b||0,this.minParticleSpeed.y=a,this.maxParticleSpeed.y=b,this},c.Particles.Arcade.Emitter.prototype.setRotation=function(a,b){return a=a||0,b=b||0,this.minRotation=a,this.maxRotation=b,this},c.Particles.Arcade.Emitter.prototype.setAlpha=function(a,b,d,e,f){if(void 0===a&&(a=1),void 0===b&&(b=1),void 0===d&&(d=0),void 0===e&&(e=c.Easing.Linear.None),void 0===f&&(f=!1),this.minParticleAlpha=a,this.maxParticleAlpha=b,this.autoAlpha=!1,d>0&&a!==b){var g={v:a},h=this.game.make.tween(g).to({v:b},d,e);h.yoyo(f),this.alphaData=h.generateData(60),this.alphaData.reverse(),this.autoAlpha=!0}return this},c.Particles.Arcade.Emitter.prototype.setScale=function(a,b,d,e,f,g,h){if(void 0===a&&(a=1),void 0===b&&(b=1),void 0===d&&(d=1),void 0===e&&(e=1),void 0===f&&(f=0),void 0===g&&(g=c.Easing.Linear.None),void 0===h&&(h=!1),this.minParticleScale=1,this.maxParticleScale=1,this._minParticleScale.set(a,d),this._maxParticleScale.set(b,e),this.autoScale=!1,f>0&&(a!==b||d!==e)){var i={x:a,y:d},j=this.game.make.tween(i).to({x:b,y:e},f,g);j.yoyo(h),this.scaleData=j.generateData(60),this.scaleData.reverse(),this.autoScale=!0}return this},c.Particles.Arcade.Emitter.prototype.at=function(a){return a.center?(this.emitX=a.center.x,this.emitY=a.center.y):(this.emitX=a.world.x+a.anchor.x*a.width,this.emitY=a.world.y+a.anchor.y*a.height),this},Object.defineProperty(c.Particles.Arcade.Emitter.prototype,"width",{get:function(){return this.area.width},set:function(a){this.area.width=a}}),Object.defineProperty(c.Particles.Arcade.Emitter.prototype,"height",{get:function(){return this.area.height},set:function(a){this.area.height=a}}),Object.defineProperty(c.Particles.Arcade.Emitter.prototype,"x",{get:function(){return this.emitX},set:function(a){this.emitX=a}}),Object.defineProperty(c.Particles.Arcade.Emitter.prototype,"y",{get:function(){return this.emitY},set:function(a){this.emitY=a}}),Object.defineProperty(c.Particles.Arcade.Emitter.prototype,"left",{get:function(){return Math.floor(this.x-this.area.width/2)}}),Object.defineProperty(c.Particles.Arcade.Emitter.prototype,"right",{get:function(){return Math.floor(this.x+this.area.width/2)}}),Object.defineProperty(c.Particles.Arcade.Emitter.prototype,"top",{get:function(){return Math.floor(this.y-this.area.height/2)}}),Object.defineProperty(c.Particles.Arcade.Emitter.prototype,"bottom",{get:function(){return Math.floor(this.y+this.area.height/2)}}),c.Weapon=function(a,b){c.Plugin.call(this,a,b),this.bullets=null,this.autoExpandBulletsGroup=!1,this.autofire=!1,this.shots=0,this.fireLimit=0,this.fireRate=100,this.fireRateVariance=0,this.fireFrom=new c.Rectangle(0,0,1,1),this.fireAngle=c.ANGLE_UP,this.bulletInheritSpriteSpeed=!1,this.bulletAnimation="",this.bulletFrameRandom=!1,this.bulletFrameCycle=!1,this.bulletWorldWrap=!1,this.bulletWorldWrapPadding=0,this.bulletAngleOffset=0,this.bulletAngleVariance=0,this.bulletSpeed=200,this.bulletSpeedVariance=0,this.bulletLifespan=0,this.bulletKillDistance=0,this.bulletGravity=new c.Point(0,0),this.bulletRotateToVelocity=!1,this.bulletKey="",this.bulletFrame="",this._bulletClass=c.Bullet,this._bulletCollideWorldBounds=!1,this._bulletKillType=c.Weapon.KILL_WORLD_BOUNDS,this._data={customBody:!1,width:0,height:0,offsetX:0,offsetY:0},this.bounds=new c.Rectangle,this.bulletBounds=a.world.bounds,this.bulletFrames=[],this.bulletFrameIndex=0,this.anims={},this.onFire=new c.Signal,this.onKill=new c.Signal,this.onFireLimit=new c.Signal,this.trackedSprite=null,this.trackedPointer=null,this.trackRotation=!1,this.trackOffset=new c.Point,this._nextFire=0},c.Weapon.prototype=Object.create(c.Plugin.prototype),c.Weapon.prototype.constructor=c.Weapon,c.Weapon.KILL_NEVER=0,c.Weapon.KILL_LIFESPAN=1,c.Weapon.KILL_DISTANCE=2,c.Weapon.KILL_WEAPON_BOUNDS=3,c.Weapon.KILL_CAMERA_BOUNDS=4,c.Weapon.KILL_WORLD_BOUNDS=5,c.Weapon.KILL_STATIC_BOUNDS=6,c.Weapon.prototype.createBullets=function(a,b,d,e){return void 0===a&&(a=1),void 0===e&&(e=this.game.world),this.bullets||(this.bullets=this.game.add.physicsGroup(c.Physics.ARCADE,e),this.bullets.classType=this._bulletClass),0!==a&&(-1===a&&(this.autoExpandBulletsGroup=!0,a=1),this.bullets.createMultiple(a,b,d),this.bullets.setAll("data.bulletManager",this),this.bulletKey=b,this.bulletFrame=d),this},c.Weapon.prototype.forEach=function(a,b){return this.bullets.forEachExists(a,b,arguments),this},c.Weapon.prototype.pauseAll=function(){return this.bullets.setAll("body.enable",!1),this},c.Weapon.prototype.resumeAll=function(){return this.bullets.setAll("body.enable",!0),this},c.Weapon.prototype.killAll=function(){return this.bullets.callAllExists("kill",!0),this.bullets.setAll("body.enable",!0),this},c.Weapon.prototype.resetShots=function(a){return this.shots=0,void 0!==a&&(this.fireLimit=a),this},c.Weapon.prototype.destroy=function(){this.parent.remove(this,!1),this.bullets.destroy(),this.game=null,this.parent=null,this.active=!1,this.visible=!1},c.Weapon.prototype.update=function(){this._bulletKillType===c.Weapon.KILL_WEAPON_BOUNDS&&(this.trackedSprite?(this.trackedSprite.updateTransform(),this.bounds.centerOn(this.trackedSprite.worldPosition.x,this.trackedSprite.worldPosition.y)):this.trackedPointer&&this.bounds.centerOn(this.trackedPointer.worldX,this.trackedPointer.worldY)),this.autofire&&this.game.time.now0&&this.shots===this.fireLimit)return!1;var e=this.bulletSpeed;0!==this.bulletSpeedVariance&&(e+=c.Math.between(-this.bulletSpeedVariance,this.bulletSpeedVariance)),a?this.fireFrom.width>1?this.fireFrom.centerOn(a.x,a.y):(this.fireFrom.x=a.x,this.fireFrom.y=a.y):this.trackedSprite?(this.fireFrom.width>1?this.fireFrom.centerOn(this.trackedSprite.world.x+this.trackOffset.x,this.trackedSprite.world.y+this.trackOffset.y):(this.fireFrom.x=this.trackedSprite.world.x+this.trackOffset.x,this.fireFrom.y=this.trackedSprite.world.y+this.trackOffset.y),this.bulletInheritSpriteSpeed&&(e+=this.trackedSprite.body.speed)):this.trackedPointer&&(this.fireFrom.width>1?this.fireFrom.centerOn(this.trackedPointer.world.x+this.trackOffset.x,this.trackedPointer.world.y+this.trackOffset.y):(this.fireFrom.x=this.trackedPointer.world.x+this.trackOffset.x,this.fireFrom.y=this.trackedPointer.world.y+this.trackOffset.y));var f=this.fireFrom.width>1?this.fireFrom.randomX:this.fireFrom.x,g=this.fireFrom.height>1?this.fireFrom.randomY:this.fireFrom.y,h=this.trackRotation?this.trackedSprite.angle:this.fireAngle;void 0!==b&&void 0!==d&&(h=this.game.math.radToDeg(Math.atan2(d-g,b-f))),0!==this.bulletAngleVariance&&(h+=c.Math.between(-this.bulletAngleVariance,this.bulletAngleVariance));var i=0,j=0;0===h||180===h?i=Math.cos(this.game.math.degToRad(h))*e:90===h||270===h?j=Math.sin(this.game.math.degToRad(h))*e:(i=Math.cos(this.game.math.degToRad(h))*e,j=Math.sin(this.game.math.degToRad(h))*e); +var k=null;if(this.autoExpandBulletsGroup?(k=this.bullets.getFirstExists(!1,!0,f,g,this.bulletKey,this.bulletFrame),k.data.bulletManager=this):k=this.bullets.getFirstExists(!1),k){if(k.reset(f,g),k.data.fromX=f,k.data.fromY=g,k.data.killType=this.bulletKillType,k.data.killDistance=this.bulletKillDistance,k.data.rotateToVelocity=this.bulletRotateToVelocity,this.bulletKillType===c.Weapon.KILL_LIFESPAN&&(k.lifespan=this.bulletLifespan),k.angle=h+this.bulletAngleOffset,""!==this.bulletAnimation){if(null===k.animations.getAnimation(this.bulletAnimation)){var l=this.anims[this.bulletAnimation];k.animations.add(l.name,l.frames,l.frameRate,l.loop,l.useNumericIndex)}k.animations.play(this.bulletAnimation)}else this.bulletFrameCycle?(k.frame=this.bulletFrames[this.bulletFrameIndex],this.bulletFrameIndex++,this.bulletFrameIndex>=this.bulletFrames.length&&(this.bulletFrameIndex=0)):this.bulletFrameRandom&&(k.frame=this.bulletFrames[Math.floor(Math.random()*this.bulletFrames.length)]);k.data.bodyDirty&&(this._data.customBody&&k.body.setSize(this._data.width,this._data.height,this._data.offsetX,this._data.offsetY),k.body.collideWorldBounds=this.bulletCollideWorldBounds,k.data.bodyDirty=!1),k.body.velocity.set(i,j),k.body.gravity.set(this.bulletGravity.x,this.bulletGravity.y),this._nextFire=this.game.time.now+this.fireRate,this.shots++,this.onFire.dispatch(k,this,e),this.fireLimit>0&&this.shots===this.fireLimit&&this.onFireLimit.dispatch(this,this.fireLimit)}},c.Weapon.prototype.fireAtPointer=function(a){return void 0===a&&(a=this.game.input.activePointer),this.fire(null,a.worldX,a.worldY)},c.Weapon.prototype.fireAtSprite=function(a){return this.fire(null,a.world.x,a.world.y)},c.Weapon.prototype.fireAtXY=function(a,b){return this.fire(null,a,b)},c.Weapon.prototype.setBulletBodyOffset=function(a,b,c,d){return void 0===c&&(c=0),void 0===d&&(d=0),this._data.customBody=!0,this._data.width=a,this._data.height=b,this._data.offsetX=c,this._data.offsetY=d,this.bullets.callAll("body.setSize","body",a,b,c,d),this.bullets.setAll("data.bodyDirty",!1),this},c.Weapon.prototype.setBulletFrames=function(a,b,d,e){return void 0===d&&(d=!0),void 0===e&&(e=!1),this.bulletFrames=c.ArrayUtils.numberArray(a,b),this.bulletFrameIndex=0,this.bulletFrameCycle=d,this.bulletFrameRandom=e,this},c.Weapon.prototype.addBulletAnimation=function(a,b,c,d,e){return this.anims[a]={name:a,frames:b,frameRate:c,loop:d,useNumericIndex:e},this.bullets.callAll("animations.add","animations",a,b,c,d,e),this.bulletAnimation=a,this},c.Weapon.prototype.debug=function(a,b,c){void 0===a&&(a=16),void 0===b&&(b=32),void 0===c&&(c=!1),this.game.debug.text("Weapon Plugin",a,b),this.game.debug.text("Bullets Alive: "+this.bullets.total+" - Total: "+this.bullets.length,a,b+24),c&&this.bullets.forEachExists(this.game.debug.body,this.game.debug,"rgba(255, 0, 255, 0.8)")},Object.defineProperty(c.Weapon.prototype,"bulletClass",{get:function(){return this._bulletClass},set:function(a){this._bulletClass=a,this.bullets.classType=this._bulletClass}}),Object.defineProperty(c.Weapon.prototype,"bulletKillType",{get:function(){return this._bulletKillType},set:function(a){switch(a){case c.Weapon.KILL_STATIC_BOUNDS:case c.Weapon.KILL_WEAPON_BOUNDS:this.bulletBounds=this.bounds;break;case c.Weapon.KILL_CAMERA_BOUNDS:this.bulletBounds=this.game.camera.view;break;case c.Weapon.KILL_WORLD_BOUNDS:this.bulletBounds=this.game.world.bounds}this._bulletKillType=a}}),Object.defineProperty(c.Weapon.prototype,"bulletCollideWorldBounds",{get:function(){return this._bulletCollideWorldBounds},set:function(a){this._bulletCollideWorldBounds=a,this.bullets.setAll("body.collideWorldBounds",a),this.bullets.setAll("data.bodyDirty",!1)}}),Object.defineProperty(c.Weapon.prototype,"x",{get:function(){return this.fireFrom.x},set:function(a){this.fireFrom.x=a}}),Object.defineProperty(c.Weapon.prototype,"y",{get:function(){return this.fireFrom.y},set:function(a){this.fireFrom.y=a}}),c.Bullet=function(a,b,d,e,f){c.Sprite.call(this,a,b,d,e,f),this.anchor.set(.5),this.data={bulletManager:null,fromX:0,fromY:0,bodyDirty:!0,rotateToVelocity:!1,killType:0,killDistance:0}},c.Bullet.prototype=Object.create(c.Sprite.prototype),c.Bullet.prototype.constructor=c.Bullet,c.Bullet.prototype.kill=function(){return this.alive=!1,this.exists=!1,this.visible=!1,this.data.bulletManager.onKill.dispatch(this),this},c.Bullet.prototype.update=function(){this.exists&&(this.data.killType>c.Weapon.KILL_LIFESPAN&&(this.data.killType===c.Weapon.KILL_DISTANCE?this.game.physics.arcade.distanceToXY(this,this.data.fromX,this.data.fromY,!0)>this.data.killDistance&&this.kill():this.data.bulletManager.bulletBounds.intersects(this)||this.kill()),this.data.rotateToVelocity&&(this.rotation=Math.atan2(this.body.velocity.y,this.body.velocity.x)),this.data.bulletManager.bulletWorldWrap&&this.game.world.wrap(this,this.data.bulletManager.bulletWorldWrapPadding))},c.Video=function(a,b,d){if(void 0===b&&(b=null),void 0===d&&(d=null),this.game=a,this.key=b,this.width=0,this.height=0,this.type=c.VIDEO,this.disableTextureUpload=!1,this.touchLocked=!1,this.onPlay=new c.Signal,this.onChangeSource=new c.Signal,this.onComplete=new c.Signal,this.onAccess=new c.Signal,this.onError=new c.Signal,this.onTimeout=new c.Signal,this.timeout=15e3,this._timeOutID=null,this.video=null,this.videoStream=null,this.isStreaming=!1,this.retryLimit=20,this.retry=0,this.retryInterval=500,this._retryID=null,this._codeMuted=!1,this._muted=!1,this._codePaused=!1,this._paused=!1,this._pending=!1,this._autoplay=!1,this._endCallback=null,this._playCallback=null,b&&this.game.cache.checkVideoKey(b)){var e=this.game.cache.getVideo(b);e.isBlob?this.createVideoFromBlob(e.data):this.video=e.data,this.width=this.video.videoWidth,this.height=this.video.videoHeight}else d&&this.createVideoFromURL(d,!1);this.video&&!d?(this.baseTexture=new PIXI.BaseTexture(this.video),this.baseTexture.forceLoaded(this.width,this.height)):(this.baseTexture=new PIXI.BaseTexture(c.Cache.DEFAULT.baseTexture.source),this.baseTexture.forceLoaded(this.width,this.height)),this.texture=new PIXI.Texture(this.baseTexture),this.textureFrame=new c.Frame(0,0,0,this.width,this.height,"video"),this.texture.setFrame(this.textureFrame),this.texture.valid=!1,null!==b&&this.video&&(this.texture.valid=this.video.canplay),this.snapshot=null,c.BitmapData&&(this.snapshot=new c.BitmapData(this.game,"",this.width,this.height)),!this.game.device.cocoonJS&&(this.game.device.iOS||this.game.device.android)||window.PhaserGlobal&&window.PhaserGlobal.fakeiOSTouchLock?this.setTouchLock():e&&(e.locked=!1)},c.Video.prototype={connectToMediaStream:function(a,b){return a&&b&&(this.video=a,this.videoStream=b,this.isStreaming=!0,this.baseTexture.source=this.video,this.updateTexture(null,this.video.videoWidth,this.video.videoHeight),this.onAccess.dispatch(this)),this},startMediaStream:function(a,b,c){if(void 0===a&&(a=!1),void 0===b&&(b=null),void 0===c&&(c=null),!this.game.device.getUserMedia)return this.onError.dispatch(this,"No getUserMedia"),!1;null!==this.videoStream&&(this.videoStream.active?this.videoStream.active=!1:this.videoStream.stop()),this.removeVideoElement(),this.video=document.createElement("video"),this.video.setAttribute("autoplay","autoplay"),null!==b&&(this.video.width=b),null!==c&&(this.video.height=c),this._timeOutID=window.setTimeout(this.getUserMediaTimeout.bind(this),this.timeout);try{navigator.getUserMedia({audio:a,video:!0},this.getUserMediaSuccess.bind(this),this.getUserMediaError.bind(this))}catch(d){this.getUserMediaError(d)}return this},getUserMediaTimeout:function(){clearTimeout(this._timeOutID),this.onTimeout.dispatch(this)},getUserMediaError:function(a){clearTimeout(this._timeOutID),this.onError.dispatch(this,a)},getUserMediaSuccess:function(a){clearTimeout(this._timeOutID),this.videoStream=a,void 0!==this.video.mozSrcObject?this.video.mozSrcObject=a:this.video.src=window.URL&&window.URL.createObjectURL(a)||a;var b=this;this.video.onloadeddata=function(){function a(){if(c>0)if(b.video.videoWidth>0){var d=b.video.videoWidth,e=b.video.videoHeight;isNaN(b.video.videoHeight)&&(e=d/(4/3)),b.video.play(),b.isStreaming=!0,b.baseTexture.source=b.video,b.updateTexture(null,d,e),b.onAccess.dispatch(b)}else window.setTimeout(a,500);else console.warn("Unable to connect to video stream. Webcam error?");c--}var c=10;a()}},createVideoFromBlob:function(a){var b=this;return this.video=document.createElement("video"),this.video.controls=!1,this.video.setAttribute("autoplay","autoplay"),this.video.addEventListener("loadeddata",function(a){b.updateTexture(a)},!0),this.video.src=window.URL.createObjectURL(a),this.video.canplay=!0,this},createVideoFromURL:function(a,b){return void 0===b&&(b=!1),this.texture&&(this.texture.valid=!1),this.video=document.createElement("video"),this.video.controls=!1,b&&this.video.setAttribute("autoplay","autoplay"),this.video.src=a,this.video.canplay=!0,this.video.load(),this.retry=this.retryLimit,this._retryID=window.setTimeout(this.checkVideoProgress.bind(this),this.retryInterval),this.key=a,this},updateTexture:function(a,b,c){var d=!1;void 0!==b&&null!==b||(b=this.video.videoWidth,d=!0),void 0!==c&&null!==c||(c=this.video.videoHeight),this.width=b,this.height=c,this.baseTexture.source!==this.video&&(this.baseTexture.source=this.video),this.baseTexture.forceLoaded(b,c),this.texture.frame.resize(b,c),this.texture.width=b,this.texture.height=c,this.texture.valid=!0,this.snapshot&&this.snapshot.resize(b,c),d&&null!==this.key&&(this.onChangeSource.dispatch(this,b,c),this._autoplay&&(this.video.play(),this.onPlay.dispatch(this,this.loop,this.playbackRate)))},complete:function(){this.onComplete.dispatch(this)},play:function(a,b){return void 0===a&&(a=!1),void 0===b&&(b=1),this.game.sound.onMute&&(this.game.sound.onMute.add(this.setMute,this),this.game.sound.onUnMute.add(this.unsetMute,this),this.game.sound.mute&&this.setMute()),this.game.onPause.add(this.setPause,this),this.game.onResume.add(this.setResume,this),this._endCallback=this.complete.bind(this),this.video.addEventListener("ended",this._endCallback,!0),this.video.addEventListener("webkitendfullscreen",this._endCallback,!0),a?this.video.loop="loop":this.video.loop="",this.video.playbackRate=b,this.touchLocked?this._pending=!0:(this._pending=!1,null!==this.key&&(4!==this.video.readyState?(this.retry=this.retryLimit,this._retryID=window.setTimeout(this.checkVideoProgress.bind(this),this.retryInterval)):(this._playCallback=this.playHandler.bind(this),this.video.addEventListener("playing",this._playCallback,!0))),this.video.play(),this.onPlay.dispatch(this,a,b)),this},playHandler:function(){this.video.removeEventListener("playing",this._playCallback,!0),this.updateTexture()},stop:function(){return this.game.sound.onMute&&(this.game.sound.onMute.remove(this.setMute,this),this.game.sound.onUnMute.remove(this.unsetMute,this)),this.game.onPause.remove(this.setPause,this),this.game.onResume.remove(this.setResume,this),this.isStreaming?(this.video.mozSrcObject?(this.video.mozSrcObject.stop(),this.video.src=null):(this.video.src="",this.videoStream.active?this.videoStream.active=!1:this.videoStream.getTracks?this.videoStream.getTracks().forEach(function(a){a.stop()}):this.videoStream.stop()),this.videoStream=null,this.isStreaming=!1):(this.video.removeEventListener("ended",this._endCallback,!0),this.video.removeEventListener("webkitendfullscreen",this._endCallback,!0),this.video.removeEventListener("playing",this._playCallback,!0),this.touchLocked?this._pending=!1:this.video.pause()),this},add:function(a){if(Array.isArray(a))for(var b=0;b0?this._retryID=window.setTimeout(this.checkVideoProgress.bind(this),this.retryInterval):console.warn("Phaser.Video: Unable to start downloading video in time",this.isStreaming))},setTouchLock:function(){this.game.input.touch.addTouchLockCallback(this.unlock,this),this.touchLocked=!0},unlock:function(){if(this.touchLocked=!1,this.video.play(),this.onPlay.dispatch(this,this.loop,this.playbackRate),this.key){var a=this.game.cache.getVideo(this.key);a&&!a.isBlob&&(a.locked=!1)}return!0},grab:function(a,b,c){return void 0===a&&(a=!1),void 0===b&&(b=1),void 0===c&&(c=null),null===this.snapshot?void console.warn("Video.grab cannot run because Phaser.BitmapData is unavailable"):(a&&this.snapshot.cls(),this.snapshot.copy(this.video,0,0,this.width,this.height,0,0,this.width,this.height,0,0,0,1,1,b,c),this.snapshot)},removeVideoElement:function(){if(this.video){for(this.video.parentNode&&this.video.parentNode.removeChild(this.video);this.video.hasChildNodes();)this.video.removeChild(this.video.firstChild);this.video.removeAttribute("autoplay"),this.video.removeAttribute("src"),this.video=null}},destroy:function(){this.stop(),this.removeVideoElement(),this.touchLocked&&this.game.input.touch.removeTouchLockCallback(this.unlock,this),this._retryID&&window.clearTimeout(this._retryID)}},Object.defineProperty(c.Video.prototype,"currentTime",{get:function(){return this.video?this.video.currentTime:0},set:function(a){this.video.currentTime=a}}),Object.defineProperty(c.Video.prototype,"duration",{get:function(){return this.video?this.video.duration:0}}),Object.defineProperty(c.Video.prototype,"progress",{get:function(){return this.video?this.video.currentTime/this.video.duration:0}}),Object.defineProperty(c.Video.prototype,"mute",{get:function(){return this._muted},set:function(a){if(a=a||null){if(this._muted)return;this._codeMuted=!0,this.setMute()}else{if(!this._muted)return;this._codeMuted=!1,this.unsetMute()}}}),Object.defineProperty(c.Video.prototype,"paused",{get:function(){return this._paused},set:function(a){if(a=a||null,!this.touchLocked)if(a){if(this._paused)return;this._codePaused=!0,this.setPause()}else{if(!this._paused)return;this._codePaused=!1,this.setResume()}}}),Object.defineProperty(c.Video.prototype,"volume",{get:function(){return this.video?this.video.volume:1},set:function(a){0>a?a=0:a>1&&(a=1),this.video&&(this.video.volume=a)}}),Object.defineProperty(c.Video.prototype,"playbackRate",{get:function(){return this.video?this.video.playbackRate:1},set:function(a){this.video&&(this.video.playbackRate=a)}}),Object.defineProperty(c.Video.prototype,"loop",{get:function(){return this.video?this.video.loop:!1},set:function(a){a&&this.video?this.video.loop="loop":this.video&&(this.video.loop="")}}),Object.defineProperty(c.Video.prototype,"playing",{get:function(){return!(this.video.paused&&this.video.ended)}}),c.Video.prototype.constructor=c.Video,void 0===PIXI.blendModes&&(PIXI.blendModes=c.blendModes),void 0===PIXI.scaleModes&&(PIXI.scaleModes=c.scaleModes),void 0===PIXI.Texture.emptyTexture&&(PIXI.Texture.emptyTexture=new PIXI.Texture(new PIXI.BaseTexture)),void 0===PIXI.DisplayObject._tempMatrix&&(PIXI.DisplayObject._tempMatrix=new PIXI.Matrix),void 0===PIXI.RenderTexture.tempMatrix&&(PIXI.RenderTexture.tempMatrix=new PIXI.Matrix),PIXI.Graphics&&void 0===PIXI.Graphics.POLY&&(PIXI.Graphics.POLY=c.POLYGON,PIXI.Graphics.RECT=c.RECTANGLE,PIXI.Graphics.CIRC=c.CIRCLE,PIXI.Graphics.ELIP=c.ELLIPSE,PIXI.Graphics.RREC=c.ROUNDEDRECTANGLE),PIXI.TextureSilentFail=!0,"undefined"!=typeof exports?("undefined"!=typeof module&&module.exports&&(exports=module.exports=c),exports.Phaser=c):"undefined"!=typeof define&&define.amd?define("Phaser",function(){return b.Phaser=c}()):b.Phaser=c,c}.call(this); //# sourceMappingURL=phaser-arcade-physics.map \ No newline at end of file diff --git a/build/custom/phaser-minimum.js b/build/custom/phaser-minimum.js index 48e94c44d..696baa1c6 100644 --- a/build/custom/phaser-minimum.js +++ b/build/custom/phaser-minimum.js @@ -7,7 +7,7 @@ * * Phaser - http://phaser.io * -* v2.5.0 "Five Kings" - Built: Fri Jun 17 2016 12:44:42 +* v2.5.1 "Fal Moran" - Built: Fri Jul 08 2016 15:42:07 * * By Richard Davey http://www.photonstorm.com @photonstorm * @@ -155,64 +155,91 @@ PIXI.defaultRenderOptions = { */ /** - * @author Mat Groves http://matgroves.com/ @Doormat23 - */ +* @author Mat Groves http://matgroves.com @Doormat23 +* @author Richard Davey +* @license {@link https://github.com/photonstorm/phaser/blob/master/license.txt|MIT License} +*/ /** - * The base class for all objects that are rendered on the screen. - * This is an abstract class and should not be used on its own rather it should be extended. - * - * @class DisplayObject - * @constructor - */ -PIXI.DisplayObject = function() -{ +* The base class for all objects that are rendered. Contains properties for position, scaling, +* rotation, masks and cache handling. +* +* This is an abstract class and should not be used on its own, rather it should be extended. +* +* It is used internally by the likes of PIXI.Sprite. +* +* @class PIXI.DisplayObject +* @constructor +*/ +PIXI.DisplayObject = function() { + /** - * The coordinate of the object relative to the local coordinates of the parent. - * - * @property position - * @type Point - */ + * The coordinates, in pixels, of this DisplayObject, relative to its parent container. + * + * The value of this property does not reflect any positioning happening further up the display list. + * To obtain that value please see the `worldPosition` property. + * + * @property {PIXI.Point} position + * @default + */ this.position = new PIXI.Point(0, 0); /** - * The scale factor of the object. - * - * @property scale - * @type Point - */ + * The scale of this DisplayObject. A scale of 1:1 represents the DisplayObject + * at its default size. A value of 0.5 would scale this DisplayObject by half, and so on. + * + * The value of this property does not reflect any scaling happening further up the display list. + * To obtain that value please see the `worldScale` property. + * + * @property {PIXI.Point} scale + * @default + */ this.scale = new PIXI.Point(1, 1); /** - * The pivot point of the displayObject that it rotates around - * - * @property pivot - * @type Point - */ + * The pivot point of this DisplayObject that it rotates around. The values are expressed + * in pixel values. + * @property {PIXI.Point} pivot + * @default + */ this.pivot = new PIXI.Point(0, 0); /** - * The rotation of the object in radians. - * - * @property rotation - * @type Number - */ + * The rotation of this DisplayObject. The value is given, and expressed, in radians, and is based on + * a right-handed orientation. + * + * The value of this property does not reflect any rotation happening further up the display list. + * To obtain that value please see the `worldRotation` property. + * + * @property {number} rotation + * @default + */ this.rotation = 0; /** - * The opacity of the object. - * - * @property alpha - * @type Number - */ + * The alpha value of this DisplayObject. A value of 1 is fully opaque. A value of 0 is transparent. + * Please note that an object with an alpha value of 0 is skipped during the render pass. + * + * The value of this property does not reflect any alpha values set further up the display list. + * To obtain that value please see the `worldAlpha` property. + * + * @property {number} alpha + * @default + */ this.alpha = 1; /** - * The visibility of the object. - * - * @property visible - * @type Boolean - */ + * The visibility of this DisplayObject. A value of `false` makes the object invisible. + * A value of `true` makes it visible. Please note that an object with a visible value of + * `false` is skipped during the render pass. Equally a DisplayObject with visible false will + * not render any of its children. + * + * The value of this property does not reflect any visible values set further up the display list. + * To obtain that value please see the `worldVisible` property. + * + * @property {boolean} visible + * @default + */ this.visible = true; /** @@ -225,688 +252,729 @@ PIXI.DisplayObject = function() this.hitArea = null; /** - * Can this object be rendered - * - * @property renderable - * @type Boolean - */ + * Should this DisplayObject be rendered by the renderer? An object with a renderable value of + * `false` is skipped during the render pass. + * + * @property {boolean} renderable + * @default + */ this.renderable = false; /** - * [read-only] The display object container that contains this display object. - * - * @property parent - * @type DisplayObjectContainer - * @readOnly - */ + * The parent DisplayObjectContainer that this DisplayObject is a child of. + * All DisplayObjects must belong to a parent in order to be rendered. + * The root parent is the Stage object. This property is set automatically when the + * DisplayObject is added to, or removed from, a DisplayObjectContainer. + * + * @property {PIXI.DisplayObjectContainer} parent + * @default + * @readOnly + */ this.parent = null; /** - * [read-only] The stage the display object is connected to, or undefined if it is not connected to the stage. - * - * @property stage - * @type Stage - * @readOnly - */ + * The stage that this DisplayObject is connected to. + * + * @property {PIXI.Stage} stage + * @default + * @readOnly + */ this.stage = null; /** - * [read-only] The multiplied alpha of the displayObject - * - * @property worldAlpha - * @type Number - * @readOnly - */ + * The multiplied alpha value of this DisplayObject. A value of 1 is fully opaque. A value of 0 is transparent. + * This value is the calculated total, based on the alpha values of all parents of this DisplayObjects + * in the display list. + * + * To obtain, and set, the local alpha value, see the `alpha` property. + * + * Note: This property is only updated at the end of the `updateTransform` call, once per render. Until + * that happens this property will contain values based on the previous frame. Be mindful of this if + * accessing this property outside of the normal game flow, i.e. from an asynchronous event callback. + * + * @property {number} worldAlpha + * @readOnly + */ this.worldAlpha = 1; /** - * [read-only] Current transform of the object based on world (parent) factors - * - * @property worldTransform - * @type Matrix - * @readOnly - * @private - */ + * The current transform of this DisplayObject. + * + * This property contains the calculated total, based on the transforms of all parents of this + * DisplayObject in the display list. + * + * Note: This property is only updated at the end of the `updateTransform` call, once per render. Until + * that happens this property will contain values based on the previous frame. Be mindful of this if + * accessing this property outside of the normal game flow, i.e. from an asynchronous event callback. + * + * @property {PIXI.Matrix} worldTransform + * @readOnly + */ this.worldTransform = new PIXI.Matrix(); /** - * The position of the Display Object based on the world transform. - * This value is updated at the end of updateTransform and takes all parent transforms into account. - * - * @property worldPosition - * @type Point - * @readOnly - */ + * The coordinates, in pixels, of this DisplayObject within the world. + * + * This property contains the calculated total, based on the positions of all parents of this + * DisplayObject in the display list. + * + * Note: This property is only updated at the end of the `updateTransform` call, once per render. Until + * that happens this property will contain values based on the previous frame. Be mindful of this if + * accessing this property outside of the normal game flow, i.e. from an asynchronous event callback. + * + * @property {PIXI.Point} worldPosition + * @readOnly + */ this.worldPosition = new PIXI.Point(0, 0); /** - * The scale of the Display Object based on the world transform. - * This value is updated at the end of updateTransform and takes all parent transforms into account. - * - * @property worldScale - * @type Point - * @readOnly - */ + * The global scale of this DisplayObject. + * + * This property contains the calculated total, based on the scales of all parents of this + * DisplayObject in the display list. + * + * Note: This property is only updated at the end of the `updateTransform` call, once per render. Until + * that happens this property will contain values based on the previous frame. Be mindful of this if + * accessing this property outside of the normal game flow, i.e. from an asynchronous event callback. + * + * @property {PIXI.Point} worldScale + * @readOnly + */ this.worldScale = new PIXI.Point(1, 1); /** - * The rotation of the Display Object, in radians, based on the world transform. - * This value is updated at the end of updateTransform and takes all parent transforms into account. - * - * @property worldRotation - * @type Number - * @readOnly - */ + * The rotation, in radians, of this DisplayObject. + * + * This property contains the calculated total, based on the rotations of all parents of this + * DisplayObject in the display list. + * + * Note: This property is only updated at the end of the `updateTransform` call, once per render. Until + * that happens this property will contain values based on the previous frame. Be mindful of this if + * accessing this property outside of the normal game flow, i.e. from an asynchronous event callback. + * + * @property {number} worldRotation + * @readOnly + */ this.worldRotation = 0; /** - * cached sin rotation and cos rotation - * - * @property _sr - * @type Number - * @private - */ - this._sr = 0; - - /** - * cached sin rotation and cos rotation - * - * @property _cr - * @type Number - * @private - */ - this._cr = 1; - - /** - * The area the filter is applied to like the hitArea this is used as more of an optimisation - * rather than figuring out the dimensions of the displayObject each frame you can set this rectangle - * - * @property filterArea - * @type Rectangle - */ + * The rectangular area used by filters when rendering a shader for this DisplayObject. + * + * @property {PIXI.Rectangle} filterArea + * @type Rectangle + * @default + */ this.filterArea = null; /** - * The original, cached bounds of the object - * - * @property _bounds - * @type Rectangle - * @private - */ + * @property {number} _sr - Cached rotation value. + * @private + */ + this._sr = 0; + + /** + * @property {number} _cr - Cached rotation value. + * @private + */ + this._cr = 1; + + /** + * @property {PIXI.Rectangle} _bounds - The cached bounds of this object. + * @private + */ this._bounds = new PIXI.Rectangle(0, 0, 1, 1); /** - * The most up-to-date bounds of the object - * - * @property _currentBounds - * @type Rectangle - * @private - */ + * @property {PIXI.Rectangle} _currentBounds - The most recently calculated bounds of this object. + * @private + */ this._currentBounds = null; /** - * The original, cached mask of the object - * - * @property _mask - * @type Rectangle - * @private - */ + * @property {PIXI.Rectangle} _mask - The cached mask of this object. + * @private + */ this._mask = null; /** - * Cached internal flag. - * - * @property _cacheAsBitmap - * @type Boolean - * @private - */ + * @property {boolean} _cacheAsBitmap - Internal cache as bitmap flag. + * @private + */ this._cacheAsBitmap = false; /** - * Cached internal flag. - * - * @property _cacheIsDirty - * @type Boolean - * @private - */ + * @property {boolean} _cacheIsDirty - Internal dirty cache flag. + * @private + */ this._cacheIsDirty = false; }; -// constructor PIXI.DisplayObject.prototype.constructor = PIXI.DisplayObject; -/** - * Destroy this DisplayObject. - * Removes all references to transformCallbacks, its parent, the stage, filters, bounds, mask and cached Sprites. - * - * @method destroy - */ -PIXI.DisplayObject.prototype.destroy = function() -{ - if (this.children) - { - var i = this.children.length; +PIXI.DisplayObject.prototype = { - while (i--) + /** + * Destroy this DisplayObject. + * + * Removes any cached sprites, sets renderable flag to false, and nulls references to the Stage, filters, + * bounds and mask. + * + * Also iteratively calls `destroy` on any children. + * + * @method PIXI.DisplayObject#destroy + */ + destroy: function () { + + if (this.children) { - this.children[i].destroy(); - } + var i = this.children.length; - this.children = []; - } - - this.hitArea = null; - this.parent = null; - this.stage = null; - this.worldTransform = null; - this.filterArea = null; - this._bounds = null; - this._currentBounds = null; - this._mask = null; - - // In case Pixi is still going to try and render it even though destroyed - this.renderable = false; - - this._destroyCachedSprite(); -}; - -/** - * [read-only] Indicates if the sprite is globally visible. - * - * @property worldVisible - * @type Boolean - */ -Object.defineProperty(PIXI.DisplayObject.prototype, 'worldVisible', { - - get: function() { - - var item = this; - - do - { - if (!item.visible) return false; - item = item.parent; - } - while(item); - - return true; - } - -}); - -/** - * Sets a mask for the displayObject. A mask is an object that limits the visibility of an object to the shape of the mask applied to it. - * In PIXI a regular mask must be a PIXI.Graphics object. This allows for much faster masking in canvas as it utilises shape clipping. - * To remove a mask, set this property to null. - * - * @property mask - * @type Graphics - */ -Object.defineProperty(PIXI.DisplayObject.prototype, 'mask', { - - get: function() { - return this._mask; - }, - - set: function(value) { - - if (this._mask) this._mask.isMask = false; - - this._mask = value; - - if (this._mask) this._mask.isMask = true; - } - -}); - -/** - * Sets the filters for the displayObject. - * IMPORTANT: This is a webGL only feature and will be ignored by the Canvas renderer. - * - * To remove filters simply set this property to 'null'. - * - * You cannot have a filter and a multiply blend mode active at the same time. Setting a filter will reset - * this objects blend mode to NORMAL. - * - * @property filters - * @type Array(Filter) - */ -Object.defineProperty(PIXI.DisplayObject.prototype, 'filters', { - - get: function() { - return this._filters; - }, - - set: function(value) { - - if (value) - { - // now put all the passes in one place.. - var passes = []; - - for (var i = 0; i < value.length; i++) + while (i--) { - var filterPasses = value[i].passes; - - for (var j = 0; j < filterPasses.length; j++) - { - passes.push(filterPasses[j]); - } + this.children[i].destroy(); } - // TODO change this as it is legacy - this._filterBlock = { target: this, filterPasses: passes }; + this.children = []; } - this._filters = value; + this.hitArea = null; + this.parent = null; + this.stage = null; + this.worldTransform = null; + this.filterArea = null; + this.renderable = false; - if (this.blendMode && this.blendMode === PIXI.blendModes.MULTIPLY) - { - this.blendMode = PIXI.blendModes.NORMAL; - } - } -}); + this._bounds = null; + this._currentBounds = null; + this._mask = null; -/** - * Set if this display object is cached as a bitmap. - * This basically takes a snap shot of the display object as it is at that moment. It can provide a performance benefit for complex static displayObjects. - * To remove simply set this property to 'null' - * @property cacheAsBitmap - * @type Boolean - */ -Object.defineProperty(PIXI.DisplayObject.prototype, 'cacheAsBitmap', { + this._destroyCachedSprite(); - get: function() { - return this._cacheAsBitmap; }, - set: function(value) { + /* + * Updates the transform matrix this DisplayObject uses for rendering. + * + * If the object has no parent, and no parent parameter is provided, it will default to + * Phaser.Game.World as the parent transform to use. If that is unavailable the transform fails to take place. + * + * The `parent` parameter has priority over the actual parent. Use it as a parent override. + * Setting it does **not** change the actual parent of this DisplayObject. + * + * Calling this method updates the `worldTransform`, `worldAlpha`, `worldPosition`, `worldScale` + * and `worldRotation` properties. + * + * If a `transformCallback` has been specified, it is called at the end of this method, and is passed + * the new, updated, worldTransform property, along with the parent transform used. + * + * @method PIXI.DisplayObject#updateTransform + * @param {PIXI.DisplayObject} [parent] - Optional parent to calculate this DisplayObjects transform from. + * @return {PIXI.DisplayObject} - A reference to this DisplayObject. + */ + updateTransform: function (parent) { - if (this._cacheAsBitmap === value) + if (!parent && !this.parent && !this.game) + { + return this; + } + + var p = this.parent; + + if (parent) + { + p = parent; + } + else if (!this.parent) + { + p = this.game.world; + } + + // create some matrix refs for easy access + var pt = p.worldTransform; + var wt = this.worldTransform; + + // temporary matrix variables + var a, b, c, d, tx, ty; + + // so if rotation is between 0 then we can simplify the multiplication process.. + if (this.rotation % PIXI.PI_2) + { + // check to see if the rotation is the same as the previous render. This means we only need to use sin and cos when rotation actually changes + if (this.rotation !== this.rotationCache) + { + this.rotationCache = this.rotation; + this._sr = Math.sin(this.rotation); + this._cr = Math.cos(this.rotation); + } + + // get the matrix values of the displayobject based on its transform properties.. + a = this._cr * this.scale.x; + b = this._sr * this.scale.x; + c = -this._sr * this.scale.y; + d = this._cr * this.scale.y; + tx = this.position.x; + ty = this.position.y; + + // check for pivot.. not often used so geared towards that fact! + if (this.pivot.x || this.pivot.y) + { + tx -= this.pivot.x * a + this.pivot.y * c; + ty -= this.pivot.x * b + this.pivot.y * d; + } + + // concat the parent matrix with the objects transform. + wt.a = a * pt.a + b * pt.c; + wt.b = a * pt.b + b * pt.d; + wt.c = c * pt.a + d * pt.c; + wt.d = c * pt.b + d * pt.d; + wt.tx = tx * pt.a + ty * pt.c + pt.tx; + wt.ty = tx * pt.b + ty * pt.d + pt.ty; + } + else + { + // lets do the fast version as we know there is no rotation.. + a = this.scale.x; + d = this.scale.y; + + tx = this.position.x - this.pivot.x * a; + ty = this.position.y - this.pivot.y * d; + + wt.a = a * pt.a; + wt.b = a * pt.b; + wt.c = d * pt.c; + wt.d = d * pt.d; + wt.tx = tx * pt.a + ty * pt.c + pt.tx; + wt.ty = tx * pt.b + ty * pt.d + pt.ty; + } + + // Set the World values + this.worldAlpha = this.alpha * p.worldAlpha; + this.worldPosition.set(wt.tx, wt.ty); + this.worldScale.set(this.scale.x * Math.sqrt(wt.a * wt.a + wt.c * wt.c), this.scale.y * Math.sqrt(wt.b * wt.b + wt.d * wt.d)); + this.worldRotation = Math.atan2(-wt.c, wt.d); + + // reset the bounds each time this is called! + this._currentBounds = null; + + // Custom callback? + if (this.transformCallback) + { + this.transformCallback.call(this.transformCallbackContext, wt, pt); + } + + return this; + + }, + + /** + * Sets the root Stage object that this DisplayObject is connected to. + * + * @method PIXI.DisplayObject#setStageReference + * @param {Phaser.Stage} stage - The stage that the object will have as its current stage reference + * @return {PIXI.DisplayObject} - A reference to this DisplayObject. + */ + setStageReference: function (stage) + { + this.stage = stage; + + return this; + + }, + + /** + * To be overridden by classes that require it. + * + * @method PIXI.DisplayObject#preUpdate + */ + preUpdate: function () { + + }, + + /** + * Generates a RenderTexture based on this DisplayObject, which can they be used to texture other Sprites. + * This can be useful if your DisplayObject is static, or complicated, and needs to be reused multiple times. + * + * Please note that no garbage collection takes place on old textures. It is up to you to destroy old textures, + * and references to them, so they don't linger in memory. + * + * @method PIXI.DisplayObject#generateTexture + * @param {number} [resolution=1] - The resolution of the texture being generated. + * @param {number} [scaleMode=PIXI.scaleModes.DEFAULT] - See {{#crossLink "PIXI/scaleModes:property"}}PIXI.scaleModes{{/crossLink}} for possible values. + * @param {PIXI.CanvasRenderer|PIXI.WebGLRenderer} renderer - The renderer used to generate the texture. + * @return {PIXI.RenderTexture} - A RenderTexture containing an image of this DisplayObject at the time it was invoked. + */ + generateTexture: function (resolution, scaleMode, renderer) { + + var bounds = this.getLocalBounds(); + + var renderTexture = new PIXI.RenderTexture(bounds.width | 0, bounds.height | 0, renderer, scaleMode, resolution); + + PIXI.DisplayObject._tempMatrix.tx = -bounds.x; + PIXI.DisplayObject._tempMatrix.ty = -bounds.y; + + renderTexture.render(this, PIXI.DisplayObject._tempMatrix); + + return renderTexture; + + }, + + /** + * If this DisplayObject has a cached Sprite, this method generates and updates it. + * + * @method PIXI.DisplayObject#updateCache + * @return {PIXI.DisplayObject} - A reference to this DisplayObject. + */ + updateCache: function () { + + this._generateCachedSprite(); + + return this; + + }, + + /** + * Calculates the global position of this DisplayObject, based on the position given. + * + * @method PIXI.DisplayObject#toGlobal + * @param {PIXI.Point} position - The global position to calculate from. + * @return {PIXI.Point} - A point object representing the position of this DisplayObject based on the global position given. + */ + toGlobal: function (position) { + + this.updateTransform(); + + return this.worldTransform.apply(position); + + }, + + /** + * Calculates the local position of this DisplayObject, relative to another point. + * + * @method PIXI.DisplayObject#toLocal + * @param {PIXI.Point} position - The world origin to calculate from. + * @param {PIXI.DisplayObject} [from] - An optional DisplayObject to calculate the global position from. + * @return {PIXI.Point} - A point object representing the position of this DisplayObject based on the global position given. + */ + toLocal: function (position, from) { + + if (from) + { + position = from.toGlobal(position); + } + + this.updateTransform(); + + return this.worldTransform.applyInverse(position); + + }, + + /** + * Internal method. + * + * @method PIXI.DisplayObject#_renderCachedSprite + * @private + * @param {Object} renderSession - The render session + */ + _renderCachedSprite: function (renderSession) { + + this._cachedSprite.worldAlpha = this.worldAlpha; + + if (renderSession.gl) + { + PIXI.Sprite.prototype._renderWebGL.call(this._cachedSprite, renderSession); + } + else + { + PIXI.Sprite.prototype._renderCanvas.call(this._cachedSprite, renderSession); + } + + }, + + /** + * Internal method. + * + * @method PIXI.DisplayObject#_generateCachedSprite + * @private + */ + _generateCachedSprite: function () { + + this._cacheAsBitmap = false; + + var bounds = this.getLocalBounds(); + + // Round it off and force non-zero dimensions + bounds.width = Math.max(1, Math.ceil(bounds.width)); + bounds.height = Math.max(1, Math.ceil(bounds.height)); + + this.updateTransform(); + + if (!this._cachedSprite) + { + var renderTexture = new PIXI.RenderTexture(bounds.width, bounds.height); + this._cachedSprite = new PIXI.Sprite(renderTexture); + this._cachedSprite.worldTransform = this.worldTransform; + } + else + { + this._cachedSprite.texture.resize(bounds.width, bounds.height); + } + + // Remove filters + var tempFilters = this._filters; + + this._filters = null; + this._cachedSprite.filters = tempFilters; + + PIXI.DisplayObject._tempMatrix.tx = -bounds.x; + PIXI.DisplayObject._tempMatrix.ty = -bounds.y; + + this._cachedSprite.texture.render(this, PIXI.DisplayObject._tempMatrix, true); + this._cachedSprite.anchor.x = -(bounds.x / bounds.width); + this._cachedSprite.anchor.y = -(bounds.y / bounds.height); + + this._filters = tempFilters; + + this._cacheAsBitmap = true; + + }, + + /** + * Destroys a cached Sprite. + * + * @method PIXI.DisplayObject#_destroyCachedSprite + * @private + */ + _destroyCachedSprite: function () { + + if (!this._cachedSprite) { return; } - if (value) - { - this._generateCachedSprite(); - } - else - { - this._destroyCachedSprite(); - } + this._cachedSprite.texture.destroy(true); - this._cacheAsBitmap = value; - } + this._cachedSprite = null; -}); - -/* - * Updates the object transform for rendering. - * - * If the object has no parent, and no parent parameter is provided, it will default to Phaser.Game.World as the parent. - * If that is unavailable the transform fails to take place. - * - * The `parent` parameter has priority over the actual parent. Use it as a parent override. - * Setting it does **not** change the actual parent of this DisplayObject, it just uses the parent for the transform update. - * - * @method updateTransform - * @param {DisplayObject} [parent] - Optional parent to parent this DisplayObject transform from. - */ -PIXI.DisplayObject.prototype.updateTransform = function(parent) -{ - if (!parent && !this.parent && !this.game) - { - return; - } - - var p = this.parent; - - if (parent) - { - p = parent; - } - else if (!this.parent) - { - p = this.game.world; - } - - // create some matrix refs for easy access - var pt = p.worldTransform; - var wt = this.worldTransform; - - // temporary matrix variables - var a, b, c, d, tx, ty; - - // so if rotation is between 0 then we can simplify the multiplication process.. - if (this.rotation % PIXI.PI_2) - { - // check to see if the rotation is the same as the previous render. This means we only need to use sin and cos when rotation actually changes - if (this.rotation !== this.rotationCache) - { - this.rotationCache = this.rotation; - this._sr = Math.sin(this.rotation); - this._cr = Math.cos(this.rotation); - } - - // get the matrix values of the displayobject based on its transform properties.. - a = this._cr * this.scale.x; - b = this._sr * this.scale.x; - c = -this._sr * this.scale.y; - d = this._cr * this.scale.y; - tx = this.position.x; - ty = this.position.y; - - // check for pivot.. not often used so geared towards that fact! - if (this.pivot.x || this.pivot.y) - { - tx -= this.pivot.x * a + this.pivot.y * c; - ty -= this.pivot.x * b + this.pivot.y * d; - } - - // concat the parent matrix with the objects transform. - wt.a = a * pt.a + b * pt.c; - wt.b = a * pt.b + b * pt.d; - wt.c = c * pt.a + d * pt.c; - wt.d = c * pt.b + d * pt.d; - wt.tx = tx * pt.a + ty * pt.c + pt.tx; - wt.ty = tx * pt.b + ty * pt.d + pt.ty; - } - else - { - // lets do the fast version as we know there is no rotation.. - a = this.scale.x; - d = this.scale.y; - - tx = this.position.x - this.pivot.x * a; - ty = this.position.y - this.pivot.y * d; - - wt.a = a * pt.a; - wt.b = a * pt.b; - wt.c = d * pt.c; - wt.d = d * pt.d; - wt.tx = tx * pt.a + ty * pt.c + pt.tx; - wt.ty = tx * pt.b + ty * pt.d + pt.ty; - } - - // Set the World values - this.worldAlpha = this.alpha * p.worldAlpha; - this.worldPosition.set(wt.tx, wt.ty); - this.worldScale.set(this.scale.x * Math.sqrt(wt.a * wt.a + wt.c * wt.c), this.scale.y * Math.sqrt(wt.b * wt.b + wt.d * wt.d)); - this.worldRotation = Math.atan2(-wt.c, wt.d); - - // reset the bounds each time this is called! - this._currentBounds = null; - - // Custom callback? - if (this.transformCallback) - { - this.transformCallback.call(this.transformCallbackContext, wt, pt); } }; -// performance increase to avoid using call.. (10x faster) +// Alias for updateTransform. As used in DisplayObject container, etc. PIXI.DisplayObject.prototype.displayObjectUpdateTransform = PIXI.DisplayObject.prototype.updateTransform; -/** - * Retrieves the bounds of the displayObject as a rectangle object - * - * @method getBounds - * @param matrix {Matrix} - * @return {Rectangle} the rectangular bounding area - */ -PIXI.DisplayObject.prototype.getBounds = function(matrix) -{ - matrix = matrix;//just to get passed js hinting (and preserve inheritance) - return PIXI.EmptyRectangle; -}; +Object.defineProperties(PIXI.DisplayObject.prototype, { -/** - * Retrieves the local bounds of the displayObject as a rectangle object - * - * @method getLocalBounds - * @return {Rectangle} the rectangular bounding area - */ -PIXI.DisplayObject.prototype.getLocalBounds = function() -{ - return this.getBounds(PIXI.identityMatrix);///PIXI.EmptyRectangle(); -}; + /** + * The horizontal position of the DisplayObject, in pixels, relative to its parent. + * If you need the world position of the DisplayObject, use `DisplayObject.worldPosition` instead. + * @name PIXI.DisplayObject#x + * @property {number} x - The horizontal position of the DisplayObject, in pixels, relative to its parent. + */ + 'x': { -/** - * Sets the object's stage reference, the stage this object is connected to - * - * @method setStageReference - * @param stage {Stage} the stage that the object will have as its current stage reference - */ -PIXI.DisplayObject.prototype.setStageReference = function(stage) -{ - this.stage = stage; -}; + get: function () { -/** - * Empty, to be overridden by classes that require it. - * - * @method preUpdate - */ -PIXI.DisplayObject.prototype.preUpdate = function() -{ -}; + return this.position.x; -/** - * Useful function that returns a texture of the displayObject object that can then be used to create sprites - * This can be quite useful if your displayObject is static / complicated and needs to be reused multiple times. - * - * @method generateTexture - * @param resolution {Number} The resolution of the texture being generated - * @param scaleMode {Number} See {{#crossLink "PIXI/scaleModes:property"}}PIXI.scaleModes{{/crossLink}} for possible values - * @param renderer {CanvasRenderer|WebGLRenderer} The renderer used to generate the texture. - * @return {RenderTexture} a texture of the graphics object - */ -PIXI.DisplayObject.prototype.generateTexture = function(resolution, scaleMode, renderer) -{ - var bounds = this.getLocalBounds(); + }, - var renderTexture = new PIXI.RenderTexture(bounds.width | 0, bounds.height | 0, renderer, scaleMode, resolution); - - PIXI.DisplayObject._tempMatrix.tx = -bounds.x; - PIXI.DisplayObject._tempMatrix.ty = -bounds.y; - - renderTexture.render(this, PIXI.DisplayObject._tempMatrix); + set: function (value) { - return renderTexture; -}; + this.position.x = value; -/** - * Generates and updates the cached sprite for this object. - * - * @method updateCache - */ -PIXI.DisplayObject.prototype.updateCache = function() -{ - this._generateCachedSprite(); -}; + } -/** - * Calculates the global position of the display object - * - * @method toGlobal - * @param position {Point} The world origin to calculate from - * @return {Point} A point object representing the position of this object - */ -PIXI.DisplayObject.prototype.toGlobal = function(position) -{ - // don't need to u[date the lot - this.displayObjectUpdateTransform(); - return this.worldTransform.apply(position); -}; - -/** - * Calculates the local position of the display object relative to another point - * - * @method toLocal - * @param position {Point} The world origin to calculate from - * @param [from] {DisplayObject} The DisplayObject to calculate the global position from - * @return {Point} A point object representing the position of this object - */ -PIXI.DisplayObject.prototype.toLocal = function(position, from) -{ - if (from) - { - position = from.toGlobal(position); - } - - // don't need to u[date the lot - this.displayObjectUpdateTransform(); - - return this.worldTransform.applyInverse(position); -}; - -/** - * Internal method. - * - * @method _renderCachedSprite - * @param renderSession {Object} The render session - * @private - */ -PIXI.DisplayObject.prototype._renderCachedSprite = function(renderSession) -{ - this._cachedSprite.worldAlpha = this.worldAlpha; - - if (renderSession.gl) - { - PIXI.Sprite.prototype._renderWebGL.call(this._cachedSprite, renderSession); - } - else - { - PIXI.Sprite.prototype._renderCanvas.call(this._cachedSprite, renderSession); - } -}; - -/** - * Internal method. - * - * @method _generateCachedSprite - * @private - */ -PIXI.DisplayObject.prototype._generateCachedSprite = function() -{ - this._cacheAsBitmap = false; - - var bounds = this.getLocalBounds(); - - // Round it off and force non-zero dimensions - bounds.width = Math.max(1, Math.ceil(bounds.width)); - bounds.height = Math.max(1, Math.ceil(bounds.height)); - - this.updateTransform(); - - if (!this._cachedSprite) - { - var renderTexture = new PIXI.RenderTexture(bounds.width, bounds.height); - this._cachedSprite = new PIXI.Sprite(renderTexture); - this._cachedSprite.worldTransform = this.worldTransform; - } - else - { - this._cachedSprite.texture.resize(bounds.width, bounds.height); - } - - // Remove filters - var tempFilters = this._filters; - this._filters = null; - this._cachedSprite.filters = tempFilters; - - // PIXI.DisplayObject._tempMatrix.identity(); - PIXI.DisplayObject._tempMatrix.tx = -bounds.x; - PIXI.DisplayObject._tempMatrix.ty = -bounds.y; - - this._cachedSprite.texture.render(this, PIXI.DisplayObject._tempMatrix, true); - this._cachedSprite.anchor.x = -(bounds.x / bounds.width); - this._cachedSprite.anchor.y = -(bounds.y / bounds.height); - - this._filters = tempFilters; - - this._cacheAsBitmap = true; -}; - -/** -* Destroys the cached sprite. -* -* @method _destroyCachedSprite -* @private -*/ -PIXI.DisplayObject.prototype._destroyCachedSprite = function() -{ - if (!this._cachedSprite) return; - - this._cachedSprite.texture.destroy(true); - - // TODO could be object pooled! - this._cachedSprite = null; -}; - -/** -* Renders the object using the WebGL renderer -* -* @method _renderWebGL -* @param renderSession {RenderSession} -* @private -*/ -PIXI.DisplayObject.prototype._renderWebGL = function(renderSession) -{ - // OVERWRITE; - // this line is just here to pass jshinting :) - renderSession = renderSession; -}; - -/** -* Renders the object using the Canvas renderer -* -* @method _renderCanvas -* @param renderSession {RenderSession} -* @private -*/ -PIXI.DisplayObject.prototype._renderCanvas = function(renderSession) -{ - // OVERWRITE; - // this line is just here to pass jshinting :) - renderSession = renderSession; -}; - -/** - * The position of the displayObject on the x axis relative to the local coordinates of the parent. - * - * @property x - * @type Number - */ -Object.defineProperty(PIXI.DisplayObject.prototype, 'x', { - - get: function() { - return this.position.x; }, - set: function(value) { - this.position.x = value; - } + /** + * The vertical position of the DisplayObject, in pixels, relative to its parent. + * If you need the world position of the DisplayObject, use `DisplayObject.worldPosition` instead. + * @name PIXI.DisplayObject#y + * @property {number} y - The vertical position of the DisplayObject, in pixels, relative to its parent. + */ + 'y': { -}); + get: function () { -/** - * The position of the displayObject on the y axis relative to the local coordinates of the parent. - * - * @property y - * @type Number - */ -Object.defineProperty(PIXI.DisplayObject.prototype, 'y', { + return this.position.y; + + }, + + set: function (value) { + + this.position.y = value; + + } - get: function() { - return this.position.y; }, - set: function(value) { - this.position.y = value; + /** + * Indicates if this DisplayObject is visible, based on it, and all of its parents, `visible` property values. + * @name PIXI.DisplayObject#worldVisible + * @property {boolean} worldVisible - Indicates if this DisplayObject is visible, based on it, and all of its parents, `visible` property values. + */ + 'worldVisible': { + + get: function () { + + if (!this.visible) + { + return false; + } + else + { + var item = this.parent; + + do + { + if (!item.visible) + { + return false; + } + + item = item.parent; + } + while (item); + + return true; + } + + } + + }, + + /** + * Sets a mask for this DisplayObject. A mask is an instance of a Graphics object. + * When applied it limits the visible area of this DisplayObject to the shape of the mask. + * Under a Canvas renderer it uses shape clipping. Under a WebGL renderer it uses a Stencil Buffer. + * To remove a mask, set this property to `null`. + * + * @name PIXI.DisplayObject#mask + * @property {PIXI.Graphics} mask - The mask applied to this DisplayObject. Set to `null` to remove an existing mask. + */ + 'mask': { + + get: function () { + + return this._mask; + + }, + + set: function (value) { + + if (this._mask) + { + this._mask.isMask = false; + } + + this._mask = value; + + if (value) + { + this._mask.isMask = true; + } + + } + + }, + + /** + * Sets the filters for this DisplayObject. This is a WebGL only feature, and is ignored by the Canvas + * Renderer. A filter is a shader applied to this DisplayObject. You can modify the placement of the filter + * using `DisplayObject.filterArea`. + * + * To remove filters, set this property to `null`. + * + * Note: You cannot have a filter set, and a MULTIPLY Blend Mode active, at the same time. Setting a + * filter will reset this DisplayObjects blend mode to NORMAL. + * + * @name PIXI.DisplayObject#filters + * @property {Array} filters - An Array of PIXI.AbstractFilter objects, or objects that extend them. + */ + 'filters': { + + get: function () { + + return this._filters; + + }, + + set: function (value) { + + if (Array.isArray(value)) + { + // Put all the passes in one place. + var passes = []; + + for (var i = 0; i < value.length; i++) + { + var filterPasses = value[i].passes; + + for (var j = 0; j < filterPasses.length; j++) + { + passes.push(filterPasses[j]); + } + } + + // Needed any more? + this._filterBlock = { target: this, filterPasses: passes }; + } + + this._filters = value; + + if (this.blendMode && this.blendMode === PIXI.blendModes.MULTIPLY) + { + this.blendMode = PIXI.blendModes.NORMAL; + } + + } + + }, + + /** + * Sets if this DisplayObject should be cached as a bitmap. + * + * When invoked it will take a snapshot of the DisplayObject, as it is at that moment, and store it + * in a RenderTexture. This is then used whenever this DisplayObject is rendered. It can provide a + * performance benefit for complex, but static, DisplayObjects. I.e. those with lots of children. + * + * Cached Bitmaps do not track their parents. If you update a property of this DisplayObject, it will not + * re-generate the cached bitmap automatically. To do that you need to call `DisplayObject.updateCache`. + * + * To remove a cached bitmap, set this property to `null`. + * + * @name PIXI.DisplayObject#cacheAsBitmap + * @property {boolean} cacheAsBitmap - Cache this DisplayObject as a Bitmap. Set to `null` to remove an existing cached bitmap. + */ + 'cacheAsBitmap': { + + get: function () { + + return this._cacheAsBitmap; + + }, + + set: function (value) { + + if (this._cacheAsBitmap === value) + { + return; + } + + if (value) + { + this._generateCachedSprite(); + } + else + { + this._destroyCachedSprite(); + } + + this._cacheAsBitmap = value; + + } + } }); @@ -1241,6 +1309,8 @@ PIXI.DisplayObjectContainer.prototype.getBounds = function() return PIXI.EmptyRectangle; } + this.updateTransform(); + var minX = Infinity; var minY = Infinity; @@ -1937,44 +2007,6 @@ PIXI.Sprite.prototype._renderCanvas = function(renderSession, matrix) }; -// some helper functions.. - -/** - * - * Helper function that creates a sprite that will contain a texture from the TextureCache based on the frameId - * The frame ids are created when a Texture packer file has been loaded - * - * @method fromFrame - * @static - * @param frameId {String} The frame Id of the texture in the cache - * @return {Sprite} A new Sprite using a texture from the texture cache matching the frameId - */ -PIXI.Sprite.fromFrame = function(frameId) -{ - var texture = PIXI.TextureCache[frameId]; - - if (!texture) throw new Error('The frameId "' + frameId + '" does not exist in the texture cache' + this); - - return new PIXI.Sprite(texture); -}; - -/** - * - * Helper function that creates a sprite that will contain a texture based on an image url - * If the image is not in the texture cache it will be loaded - * - * @method fromImage - * @static - * @param imageId {String} The image url of the texture - * @return {Sprite} A new Sprite using a texture from the texture cache matching the image id - */ -PIXI.Sprite.fromImage = function(imageId, crossorigin, scaleMode) -{ - var texture = PIXI.Texture.fromImage(imageId, crossorigin, scaleMode); - - return new PIXI.Sprite(texture); -}; - /** * @author Mat Groves http://matgroves.com/ */ @@ -2321,7 +2353,7 @@ PIXI.CanvasPool = { for (var i = 0; i < pool.length; i++) { - if (pool[i].parent === null) + if (!pool[i].parent) { return i; } @@ -2347,6 +2379,8 @@ PIXI.CanvasPool = { if (pool[i].parent === parent) { pool[i].parent = null; + pool[i].canvas.width = 1; + pool[i].canvas.height = 1; } } @@ -2368,6 +2402,8 @@ PIXI.CanvasPool = { if (pool[i].canvas === canvas) { pool[i].parent = null; + pool[i].canvas.width = 1; + pool[i].canvas.height = 1; } } @@ -2387,7 +2423,7 @@ PIXI.CanvasPool = { for (var i = 0; i < pool.length; i++) { - if (pool[i].parent !== null) + if (pool[i].parent) { c++; } @@ -2411,7 +2447,7 @@ PIXI.CanvasPool = { for (var i = 0; i < pool.length; i++) { - if (pool[i].parent === null) + if (!pool[i].parent) { c++; } @@ -6815,17 +6851,13 @@ PIXI.CanvasRenderer.prototype.mapBlendModes = function () { * @author Mat Groves http://matgroves.com/ @Doormat23 */ -PIXI.BaseTextureCache = {}; - -PIXI.BaseTextureCacheIdGenerator = 0; - /** * A texture stores the information that represents an image. All textures have a base texture. * * @class BaseTexture * @uses EventTarget * @constructor - * @param source {String} the source object (image or canvas) + * @param source {String|Canvas} the source object (image or canvas) * @param scaleMode {Number} See {{#crossLink "PIXI/scaleModes:property"}}PIXI.scaleModes{{/crossLink}} for possible values */ PIXI.BaseTexture = function(source, scaleMode) @@ -6882,8 +6914,6 @@ PIXI.BaseTexture = function(source, scaleMode) */ this.source = source; - this._UID = PIXI._UID++; - /** * Controls if RGB channels should be pre-multiplied by Alpha (WebGL only) * @@ -6942,12 +6972,6 @@ PIXI.BaseTexture = function(source, scaleMode) */ this.skipRender = false; - /** - * @property imageUrl - * @type String - */ - this.imageUrl = null; - /** * @property _powerOf2 * @type Boolean @@ -6974,7 +6998,6 @@ PIXI.BaseTexture.prototype.forceLoaded = function(width, height) this.width = width; this.height = height; this.dirty(); - }; /** @@ -6984,23 +7007,9 @@ PIXI.BaseTexture.prototype.forceLoaded = function(width, height) */ PIXI.BaseTexture.prototype.destroy = function() { - if (this.imageUrl) - { - delete PIXI.BaseTextureCache[this.imageUrl]; - delete PIXI.TextureCache[this.imageUrl]; - - this.imageUrl = null; - - if (!navigator.isCocoonJS) this.source.src = ''; - } - else if (this.source) + if (this.source) { PIXI.CanvasPool.removeByCanvas(this.source); - - if (this.source._pixiId) - { - delete PIXI.BaseTextureCache[this.source._pixiId]; - } } this.source = null; @@ -7013,12 +7022,11 @@ PIXI.BaseTexture.prototype.destroy = function() * * @method updateSourceImage * @param newSrc {String} the path of the image + * @deprecated This method is deprecated. Please use Phaser.Sprite.loadTexture instead. */ PIXI.BaseTexture.prototype.updateSourceImage = function(newSrc) { - this.hasLoaded = false; - this.source.src = null; - this.source.src = newSrc; + console.warn("PIXI.BaseTexture.updateSourceImage is deprecated. Use Phaser.Sprite.loadTexture instead."); }; /** @@ -7062,49 +7070,6 @@ PIXI.BaseTexture.prototype.unloadFromGPU = function() this.dirty(); }; -/** - * Helper function that creates a base texture from the given image url. - * If the image is not in the base texture cache it will be created and loaded. - * - * @static - * @method fromImage - * @param imageUrl {String} The image url of the texture - * @param crossorigin {Boolean} - * @param scaleMode {Number} See {{#crossLink "PIXI/scaleModes:property"}}PIXI.scaleModes{{/crossLink}} for possible values - * @return {BaseTexture} - */ -PIXI.BaseTexture.fromImage = function(imageUrl, crossorigin, scaleMode) -{ - var baseTexture = PIXI.BaseTextureCache[imageUrl]; - - if(crossorigin === undefined && imageUrl.indexOf('data:') === -1) crossorigin = true; - - if(!baseTexture) - { - // new Image() breaks tex loading in some versions of Chrome. - // See https://code.google.com/p/chromium/issues/detail?id=238071 - var image = new Image(); - - if (crossorigin) - { - image.crossOrigin = ''; - } - - image.src = imageUrl; - baseTexture = new PIXI.BaseTexture(image, scaleMode); - baseTexture.imageUrl = imageUrl; - PIXI.BaseTextureCache[imageUrl] = baseTexture; - - // if there is an @2x at the end of the url we are going to assume its a highres image - if( imageUrl.indexOf(PIXI.RETINA_PREFIX + '.') !== -1) - { - baseTexture.resolution = 2; - } - } - - return baseTexture; -}; - /** * Helper function that creates a base texture from the given canvas element. * @@ -7116,11 +7081,6 @@ PIXI.BaseTexture.fromImage = function(imageUrl, crossorigin, scaleMode) */ PIXI.BaseTexture.fromCanvas = function(canvas, scaleMode) { - if (!canvas._pixiId) - { - canvas._pixiId = 'canvas_' + PIXI.TextureCacheIdGenerator++; - } - if (canvas.width === 0) { canvas.width = 1; @@ -7131,24 +7091,13 @@ PIXI.BaseTexture.fromCanvas = function(canvas, scaleMode) canvas.height = 1; } - var baseTexture = PIXI.BaseTextureCache[canvas._pixiId]; - - if (!baseTexture) - { - baseTexture = new PIXI.BaseTexture(canvas, scaleMode); - PIXI.BaseTextureCache[canvas._pixiId] = baseTexture; - } - - return baseTexture; + return new PIXI.BaseTexture(canvas, scaleMode); }; /** * @author Mat Groves http://matgroves.com/ @Doormat23 */ -PIXI.TextureCache = {}; -PIXI.FrameCache = {}; - /** * TextureSilentFail is a boolean that defaults to `false`. * If `true` then `PIXI.Texture.setFrame` will no longer throw an error if the texture dimensions are incorrect. @@ -7158,8 +7107,6 @@ PIXI.FrameCache = {}; */ PIXI.TextureSilentFail = false; -PIXI.TextureCacheIdGenerator = 0; - /** * A texture stores the information that represents an image or part of an image. It cannot be added * to the display list directly. Instead use it as the texture for a PIXI.Sprite. If no frame is provided then the whole image is used. @@ -7395,46 +7342,6 @@ PIXI.Texture.prototype._updateUvs = function() this._uvs.y3 = (frame.y + frame.height) / th; }; -/** - * Helper function that creates a Texture object from the given image url. - * If the image is not in the texture cache it will be created and loaded. - * - * @static - * @method fromImage - * @param imageUrl {String} The image url of the texture - * @param crossorigin {Boolean} Whether requests should be treated as crossorigin - * @param scaleMode {Number} See {{#crossLink "PIXI/scaleModes:property"}}PIXI.scaleModes{{/crossLink}} for possible values - * @return {Texture} - */ -PIXI.Texture.fromImage = function(imageUrl, crossorigin, scaleMode) -{ - var texture = PIXI.TextureCache[imageUrl]; - - if(!texture) - { - texture = new PIXI.Texture(PIXI.BaseTexture.fromImage(imageUrl, crossorigin, scaleMode)); - PIXI.TextureCache[imageUrl] = texture; - } - - return texture; -}; - -/** - * Helper function that returns a Texture objected based on the given frame id. - * If the frame id is not in the texture cache an error will be thrown. - * - * @static - * @method fromFrame - * @param frameId {String} The frame id of the texture - * @return {Texture} - */ -PIXI.Texture.fromFrame = function(frameId) -{ - var texture = PIXI.TextureCache[frameId]; - if(!texture) throw new Error('The frameId "' + frameId + '" does not exist in the texture cache '); - return texture; -}; - /** * Helper function that creates a new a Texture based on the given canvas element. * @@ -7451,35 +7358,6 @@ PIXI.Texture.fromCanvas = function(canvas, scaleMode) return new PIXI.Texture(baseTexture); }; -/** - * Adds a texture to the global PIXI.TextureCache. This cache is shared across the whole PIXI object. - * - * @static - * @method addTextureToCache - * @param texture {Texture} The Texture to add to the cache. - * @param id {String} The id that the texture will be stored against. - */ -PIXI.Texture.addTextureToCache = function(texture, id) -{ - PIXI.TextureCache[id] = texture; -}; - -/** - * Remove a texture from the global PIXI.TextureCache. - * - * @static - * @method removeTextureFromCache - * @param id {String} The id of the texture to be removed - * @return {Texture} The texture that was removed - */ -PIXI.Texture.removeTextureFromCache = function(id) -{ - var texture = PIXI.TextureCache[id]; - delete PIXI.TextureCache[id]; - delete PIXI.BaseTextureCache[id]; - return texture; -}; - PIXI.TextureUvs = function() { this.x0 = 0; @@ -7965,7 +7843,7 @@ var Phaser = Phaser || { * @constant * @type {string} */ - VERSION: '2.5.0', + VERSION: '2.6.0', /** * An array of Phaser game instances. @@ -8656,6 +8534,20 @@ if (!window.console) */ Phaser.Utils = { + /** + * Takes the given string and reverses it, returning the reversed string. + * For example if given the string `Atari 520ST` it would return `TS025 iratA`. + * + * @method Phaser.Utils.reverseString + * @param {string} string - The string to be reversed. + * @return {string} The reversed string. + */ + reverseString: function (string) { + + return string.split('').reverse().join(''); + + }, + /** * Gets an objects property by string. * @@ -8791,14 +8683,31 @@ Phaser.Utils = { }, /** - * JavaScript string pad http://www.webtoolkit.info/. + * Takes the given string and pads it out, to the length required, using the character + * specified. For example if you need a string to be 6 characters long, you can call: + * + * `pad('bob', 6, '-', 2)` + * + * This would return: `bob---` as it has padded it out to 6 characters, using the `-` on the right. + * + * You can also use it to pad numbers (they are always returned as strings): + * + * `pad(512, 6, '0', 1)` + * + * Would return: `000512` with the string padded to the left. + * + * If you don't specify a direction it'll pad to both sides: + * + * `pad('c64', 7, '*')` + * + * Would return: `**c64**` * * @method Phaser.Utils.pad - * @param {string} str - The target string. + * @param {string} str - The target string. `toString()` will be called on the string, which means you can also pass in common data types like numbers. * @param {integer} [len=0] - The number of characters to be added. * @param {string} [pad=" "] - The string to pad it out with (defaults to a space). - * @param {integer} [dir=3] The direction dir = 1 (left), 2 (right), 3 (both). - * @return {string} The padded string + * @param {integer} [dir=3] - The direction dir = 1 (left), 2 (right), 3 (both). + * @return {string} The padded string. */ pad: function (str, len, pad, dir) { @@ -8806,6 +8715,8 @@ Phaser.Utils = { if (pad === undefined) { var pad = ' '; } if (dir === undefined) { var dir = 3; } + str = str.toString(); + var padlen = 0; if (len + 1 >= str.length) @@ -12031,6 +11942,11 @@ Phaser.Polygon = function () { */ this.closed = true; + /** + * @property {boolean} flattened - Has this Polygon been flattened by a call to `Polygon.flatten` ? + */ + this.flattened = false; + /** * @property {number} type - The base object type. */ @@ -12071,7 +11987,9 @@ Phaser.Polygon.prototype = { }, /** - * Flattens this Polygon so the points are a sequence of numbers. Any Point objects found are removed and replaced with two numbers. + * Flattens this Polygon so the points are a sequence of numbers. + * Any Point objects found are removed and replaced with two numbers. + * Also sets the Polygon.flattened property to `true`. * * @method Phaser.Polygon#flatten * @return {Phaser.Polygon} This Polygon object @@ -12080,6 +11998,8 @@ Phaser.Polygon.prototype = { this._points = this.toNumberArray(); + this.flattened = true; + return this; }, @@ -12121,20 +12041,39 @@ Phaser.Polygon.prototype = { // Adapted from http://www.ecse.rpi.edu/Homepages/wrf/Research/Short_Notes/pnpoly.html by Jonas Raoni Soares Silva - var length = this._points.length; var inside = false; - for (var i = -1, j = length - 1; ++i < length; j = i) + if (this.flattened) { - var ix = this._points[i].x; - var iy = this._points[i].y; - - var jx = this._points[j].x; - var jy = this._points[j].y; - - if (((iy <= y && y < jy) || (jy <= y && y < iy)) && (x < (jx - ix) * (y - iy) / (jy - iy) + ix)) + for (var i = -2, j = this._points.length - 2; (i += 2) < this._points.length; j = i) { - inside = !inside; + var ix = this._points[i]; + var iy = this._points[i + 1]; + + var jx = this._points[j]; + var jy = this._points[j + 1]; + + if (((iy <= y && y < jy) || (jy <= y && y < iy)) && (x < (jx - ix) * (y - iy) / (jy - iy) + ix)) + { + inside = !inside; + } + } + + } + else + { + for (var i = -1, j = this._points.length - 1; ++i < this._points.length; j = i) + { + var ix = this._points[i].x; + var iy = this._points[i].y; + + var jx = this._points[j].x; + var jy = this._points[j].y; + + if (((iy <= y && y < jy) || (jy <= y && y < iy)) && (x < (jx - ix) * (y - iy) / (jy - iy) + ix)) + { + inside = !inside; + } } } @@ -17982,6 +17921,8 @@ Phaser.Group.prototype.align = function (rows, columns, cellWidth, cellHeight, p else { // We keep laying them out until we hit the column limit + r.x += cellWidth; + if (r.x === w) { r.x = 0; @@ -19412,17 +19353,24 @@ Phaser.Group.prototype.getBottom = function () { }; /** -* Get the closest child to given Object. +* Get the closest child to given Object, with optional callback to filter children. * * This can be a Sprite, Group, Image or any object with public x and y properties. * * 'close' is determined by the distance from the objects `x` and `y` properties compared to the childs `x` and `y` properties. * +* You can use the optional `callback` argument to apply your own filter to the distance checks. +* If the child is closer then the previous child, it will be sent to `callback` as the first argument, +* with the distance as the second. The callback should return `true` if it passes your +* filtering criteria, otherwise it should return `false`. +* * @method Phaser.Group#getClosestTo * @param {any} object - The object used to determine the distance. This can be a Sprite, Group, Image or any object with public x and y properties. -* @return {any} The child closest to given object, or null if no child was found. +* @param {function} [callback] - The function that each child will be evaluated against. Each child of the group will be passed to it as its first parameter, with the distance as the second. It should return `true` if the child passes the matching criteria. +* @param {object} [callbackContext] - The context in which the function should be called (usually 'this'). +* @return {any} The child closest to given object, or `null` if no child was found. */ -Phaser.Group.prototype.getClosestTo = function (object) { +Phaser.Group.prototype.getClosestTo = function (object, callback, callbackContext) { var distance = Number.MAX_VALUE; var tempDistance = 0; @@ -19436,7 +19384,7 @@ Phaser.Group.prototype.getClosestTo = function (object) { { tempDistance = Math.abs(Phaser.Point.distance(object, child)); - if (tempDistance < distance) + if (tempDistance < distance && (!callback || callback.call(callbackContext, child, tempDistance))) { distance = tempDistance; result = child; @@ -19449,17 +19397,24 @@ Phaser.Group.prototype.getClosestTo = function (object) { }; /** -* Get the child furthest away from the given Object. +* Get the child furthest away from the given Object, with optional callback to filter children. * * This can be a Sprite, Group, Image or any object with public x and y properties. * * 'furthest away' is determined by the distance from the objects `x` and `y` properties compared to the childs `x` and `y` properties. * +* You can use the optional `callback` argument to apply your own filter to the distance checks. +* If the child is closer then the previous child, it will be sent to `callback` as the first argument, +* with the distance as the second. The callback should return `true` if it passes your +* filtering criteria, otherwise it should return `false`. +* * @method Phaser.Group#getFurthestFrom * @param {any} object - The object used to determine the distance. This can be a Sprite, Group, Image or any object with public x and y properties. -* @return {any} The child furthest from the given object, or null if no child was found. +* @param {function} [callback] - The function that each child will be evaluated against. Each child of the group will be passed to it as its first parameter, with the distance as the second. It should return `true` if the child passes the matching criteria. +* @param {object} [callbackContext] - The context in which the function should be called (usually 'this'). +* @return {any} The child furthest from the given object, or `null` if no child was found. */ -Phaser.Group.prototype.getFurthestFrom = function (object) { +Phaser.Group.prototype.getFurthestFrom = function (object, callback, callbackContext) { var distance = 0; var tempDistance = 0; @@ -19473,7 +19428,7 @@ Phaser.Group.prototype.getFurthestFrom = function (object) { { tempDistance = Math.abs(Phaser.Point.distance(object, child)); - if (tempDistance > distance) + if (tempDistance > distance && (!callback || callback.call(callbackContext, child, tempDistance))) { distance = tempDistance; result = child; @@ -19805,6 +19760,289 @@ Object.defineProperty(Phaser.Group.prototype, "angle", { }); +/** +* The center x coordinate of this Group. +* +* It is derived by calling `getBounds`, calculating the Groups dimensions based on its +* visible children. +* +* Note that no ancestors are factored into the result, meaning that if this Group is +* nested within another Group, with heavy transforms on it, the result of this property +* is likely to be incorrect. It is safe to get and set this property if the Group is a +* top-level descendant of Phaser.World, or untransformed parents. +* +* @name Phaser.Group#centerX +* @property {number} centerX +*/ +Object.defineProperty(Phaser.Group.prototype, "centerX", { + + get: function () { + + return this.getBounds().centerX; + + }, + + set: function (value) { + + var r = this.getBounds(); + var offset = this.x - r.x; + + this.x = (value + offset) - r.halfWidth; + + } + +}); + +/** +* The center y coordinate of this Group. +* +* It is derived by calling `getBounds`, calculating the Groups dimensions based on its +* visible children. +* +* Note that no ancestors are factored into the result, meaning that if this Group is +* nested within another Group, with heavy transforms on it, the result of this property +* is likely to be incorrect. It is safe to get and set this property if the Group is a +* top-level descendant of Phaser.World, or untransformed parents. +* +* @name Phaser.Group#centerY +* @property {number} centerY +*/ +Object.defineProperty(Phaser.Group.prototype, "centerY", { + + get: function () { + + return this.getBounds().centerY; + + }, + + set: function (value) { + + var r = this.getBounds(); + var offset = this.y - r.y; + + this.y = (value + offset) - r.halfHeight; + + } + +}); + +/** +* The left coordinate of this Group. +* +* It is derived by calling `getBounds`, calculating the Groups dimensions based on its +* visible children. +* +* Note that no ancestors are factored into the result, meaning that if this Group is +* nested within another Group, with heavy transforms on it, the result of this property +* is likely to be incorrect. It is safe to get and set this property if the Group is a +* top-level descendant of Phaser.World, or untransformed parents. +* +* @name Phaser.Group#left +* @property {number} left +*/ +Object.defineProperty(Phaser.Group.prototype, "left", { + + get: function () { + + return this.getBounds().left; + + }, + + set: function (value) { + + var r = this.getBounds(); + var offset = this.x - r.x; + + this.x = value + offset; + + } + +}); + +/** +* The right coordinate of this Group. +* +* It is derived by calling `getBounds`, calculating the Groups dimensions based on its +* visible children. +* +* Note that no ancestors are factored into the result, meaning that if this Group is +* nested within another Group, with heavy transforms on it, the result of this property +* is likely to be incorrect. It is safe to get and set this property if the Group is a +* top-level descendant of Phaser.World, or untransformed parents. +* +* @name Phaser.Group#right +* @property {number} right +*/ +Object.defineProperty(Phaser.Group.prototype, "right", { + + get: function () { + + return this.getBounds().right; + + }, + + set: function (value) { + + var r = this.getBounds(); + var offset = this.x - r.x; + + this.x = (value + offset) - r.width; + + } + +}); + +/** +* The top coordinate of this Group. +* +* It is derived by calling `getBounds`, calculating the Groups dimensions based on its +* visible children. +* +* Note that no ancestors are factored into the result, meaning that if this Group is +* nested within another Group, with heavy transforms on it, the result of this property +* is likely to be incorrect. It is safe to get and set this property if the Group is a +* top-level descendant of Phaser.World, or untransformed parents. +* +* @name Phaser.Group#top +* @property {number} top +*/ +Object.defineProperty(Phaser.Group.prototype, "top", { + + get: function () { + + return this.getBounds().top; + + }, + + set: function (value) { + + var r = this.getBounds(); + var offset = this.y - r.y; + + this.y = (value + offset); + + } + +}); + +/** +* The bottom coordinate of this Group. +* +* It is derived by calling `getBounds`, calculating the Groups dimensions based on its +* visible children. +* +* Note that no ancestors are factored into the result, meaning that if this Group is +* nested within another Group, with heavy transforms on it, the result of this property +* is likely to be incorrect. It is safe to get and set this property if the Group is a +* top-level descendant of Phaser.World, or untransformed parents. +* +* @name Phaser.Group#bottom +* @property {number} bottom +*/ +Object.defineProperty(Phaser.Group.prototype, "bottom", { + + get: function () { + + return this.getBounds().bottom; + + }, + + set: function (value) { + + var r = this.getBounds(); + var offset = this.y - r.y; + + this.y = (value + offset) - r.height; + + } + +}); + +/** +* Aligns this Group within another Game Object, or Rectangle, known as the +* 'container', to one of 9 possible positions. +* +* The container must be a Game Object, or Phaser.Rectangle object. This can include properties +* such as `World.bounds` or `Camera.view`, for aligning Groups within the world +* and camera bounds. Or it can include other Sprites, Images, Text objects, BitmapText, +* TileSprites or Buttons. +* +* Please note that aligning a Group to another Game Object does **not** make it a child of +* the container. It simply modifies its position coordinates so it aligns with it. +* +* The position constants you can use are: +* +* `Phaser.TOP_LEFT`, `Phaser.TOP_CENTER`, `Phaser.TOP_RIGHT`, `Phaser.LEFT_CENTER`, +* `Phaser.CENTER`, `Phaser.RIGHT_CENTER`, `Phaser.BOTTOM_LEFT`, +* `Phaser.BOTTOM_CENTER` and `Phaser.BOTTOM_RIGHT`. +* +* Groups are placed in such a way that their _bounds_ align with the +* container, taking into consideration rotation and scale of its children. +* This allows you to neatly align Groups, irrespective of their position value. +* +* The optional `offsetX` and `offsetY` arguments allow you to apply extra spacing to the final +* aligned position of the Group. For example: +* +* `group.alignIn(background, Phaser.BOTTOM_RIGHT, -20, -20)` +* +* Would align the `group` to the bottom-right, but moved 20 pixels in from the corner. +* Think of the offsets as applying an adjustment to the containers bounds before the alignment takes place. +* So providing a negative offset will 'shrink' the container bounds by that amount, and providing a positive +* one expands it. +* +* @method Phaser.Group#alignIn +* @param {Phaser.Rectangle|Phaser.Sprite|Phaser.Image|Phaser.Text|Phaser.BitmapText|Phaser.Button|Phaser.Graphics|Phaser.TileSprite} container - The Game Object or Rectangle with which to align this Group to. Can also include properties such as `World.bounds` or `Camera.view`. +* @param {integer} [position] - The position constant. One of `Phaser.TOP_LEFT` (default), `Phaser.TOP_CENTER`, `Phaser.TOP_RIGHT`, `Phaser.LEFT_CENTER`, `Phaser.CENTER`, `Phaser.RIGHT_CENTER`, `Phaser.BOTTOM_LEFT`, `Phaser.BOTTOM_CENTER` or `Phaser.BOTTOM_RIGHT`. +* @param {integer} [offsetX=0] - A horizontal adjustment of the Containers bounds, applied to the aligned position of the Game Object. Use a negative value to shrink the bounds, positive to increase it. +* @param {integer} [offsetY=0] - A vertical adjustment of the Containers bounds, applied to the aligned position of the Game Object. Use a negative value to shrink the bounds, positive to increase it. +* @return {Phaser.Group} This Group. +*/ + +// This function is set at the bottom of src/gameobjects/components/Bounds.js + +/** +* Aligns this Group to the side of another Game Object, or Rectangle, known as the +* 'parent', in one of 11 possible positions. +* +* The parent must be a Game Object, or Phaser.Rectangle object. This can include properties +* such as `World.bounds` or `Camera.view`, for aligning Groups within the world +* and camera bounds. Or it can include other Sprites, Images, Text objects, BitmapText, +* TileSprites or Buttons. +* +* Please note that aligning a Group to another Game Object does **not** make it a child of +* the parent. It simply modifies its position coordinates so it aligns with it. +* +* The position constants you can use are: +* +* `Phaser.TOP_LEFT` (default), `Phaser.TOP_CENTER`, `Phaser.TOP_RIGHT`, `Phaser.LEFT_TOP`, +* `Phaser.LEFT_CENTER`, `Phaser.LEFT_BOTTOM`, `Phaser.RIGHT_TOP`, `Phaser.RIGHT_CENTER`, +* `Phaser.RIGHT_BOTTOM`, `Phaser.BOTTOM_LEFT`, `Phaser.BOTTOM_CENTER` +* and `Phaser.BOTTOM_RIGHT`. +* +* Groups are placed in such a way that their _bounds_ align with the +* parent, taking into consideration rotation and scale of the children. +* This allows you to neatly align Groups, irrespective of their position value. +* +* The optional `offsetX` and `offsetY` arguments allow you to apply extra spacing to the final +* aligned position of the Group. For example: +* +* `group.alignTo(background, Phaser.BOTTOM_RIGHT, -20, -20)` +* +* Would align the `group` to the bottom-right, but moved 20 pixels in from the corner. +* Think of the offsets as applying an adjustment to the parents bounds before the alignment takes place. +* So providing a negative offset will 'shrink' the parent bounds by that amount, and providing a positive +* one expands it. +* +* @method Phaser.Group#alignTo +* @param {Phaser.Rectangle|Phaser.Sprite|Phaser.Image|Phaser.Text|Phaser.BitmapText|Phaser.Button|Phaser.Graphics|Phaser.TileSprite} parent - The Game Object or Rectangle with which to align this Group to. Can also include properties such as `World.bounds` or `Camera.view`. +* @param {integer} [position] - The position constant. One of `Phaser.TOP_LEFT`, `Phaser.TOP_CENTER`, `Phaser.TOP_RIGHT`, `Phaser.LEFT_TOP`, `Phaser.LEFT_CENTER`, `Phaser.LEFT_BOTTOM`, `Phaser.RIGHT_TOP`, `Phaser.RIGHT_CENTER`, `Phaser.RIGHT_BOTTOM`, `Phaser.BOTTOM_LEFT`, `Phaser.BOTTOM_CENTER` or `Phaser.BOTTOM_RIGHT`. +* @param {integer} [offsetX=0] - A horizontal adjustment of the Containers bounds, applied to the aligned position of the Game Object. Use a negative value to shrink the bounds, positive to increase it. +* @param {integer} [offsetY=0] - A vertical adjustment of the Containers bounds, applied to the aligned position of the Game Object. Use a negative value to shrink the bounds, positive to increase it. +* @return {Phaser.Group} This Group. +*/ + +// This function is set at the bottom of src/gameobjects/components/Bounds.js + /** * A display object is any object that can be rendered in the Phaser/pixi.js scene graph. * @@ -26074,9 +26312,10 @@ Phaser.InputHandler.prototype = { /** * Starts the Input Handler running. This is called automatically when you enable input on a Sprite, or can be called directly if you need to set a specific priority. + * * @method Phaser.InputHandler#start - * @param {number} priority - Higher priority sprites take click priority over low-priority sprites when they are stacked on-top of each other. - * @param {boolean} useHandCursor - If true the Sprite will show the hand cursor on mouse-over (doesn't apply to mobile browsers) + * @param {number} [priority=0] - Higher priority sprites take click priority over low-priority sprites when they are stacked on-top of each other. + * @param {boolean} [useHandCursor=false] - If true the Sprite will show the hand cursor on mouse-over (doesn't apply to mobile browsers) * @return {Phaser.Sprite} The Sprite object to which the Input Handler is bound. */ start: function (priority, useHandCursor) { @@ -26697,7 +26936,7 @@ Phaser.InputHandler.prototype = { } else if (this.draggable && this._draggedPointerID === pointer.id) { - return this.updateDrag(pointer); + return this.updateDrag(pointer, false); } else if (this._pointerData[pointer.id].isOver) { @@ -26976,24 +27215,24 @@ Phaser.InputHandler.prototype = { }, /** - * Updates the Pointer drag on this Sprite. + * Called as a Pointer actively drags this Game Object. + * * @method Phaser.InputHandler#updateDrag - * @param {Phaser.Pointer} pointer + * @private + * @param {Phaser.Pointer} pointer - The Pointer causing the drag update. + * @param {boolean} fromStart - True if this is the first update, immediately after the drag has started. * @return {boolean} */ updateDrag: function (pointer, fromStart) { + if (fromStart === undefined) { fromStart = false; } + if (pointer.isUp) { this.stopDrag(pointer); return false; } - if (fromStart === undefined) - { - fromStart = false; - } - var px = this.globalToLocalX(pointer.x) + this._dragPoint.x + this.dragOffset.x; var py = this.globalToLocalY(pointer.y) + this._dragPoint.y + this.dragOffset.y; @@ -27444,7 +27683,6 @@ Phaser.InputHandler.prototype = { }, - /** * Bounds Rect check for the sprite drag * @@ -28094,6 +28332,11 @@ Phaser.Component.Bounds.prototype = { }; +// Phaser.Group extensions + +Phaser.Group.prototype.alignIn = Phaser.Component.Bounds.prototype.alignIn; +Phaser.Group.prototype.alignTo = Phaser.Component.Bounds.prototype.alignTo; + /** * @author Richard Davey * @copyright 2016 Photon Storm Ltd. @@ -28913,7 +29156,7 @@ Phaser.Component.Destroy.prototype = { */ /** -* The Events component is a collection of events fired by the parent game object. +* The Events component is a collection of events fired by the parent Game Object. * * Phaser uses what are known as 'Signals' for all event handling. All of the events in * this class are signals you can subscribe to, much in the same way you'd "listen" for @@ -28983,92 +29226,187 @@ Phaser.Events.prototype = { // The following properties are sentinels that will be replaced with getters /** - * @property {Phaser.Signal} onAddedToGroup - This signal is dispatched when the parent is added to a new Group. + * This signal is dispatched when this Game Object is added to a new Group. + * It is sent two arguments: + * {any} The Game Object that was added to the Group. + * {Phaser.Group} The Group it was added to. + * @property {Phaser.Signal} onAddedToGroup */ onAddedToGroup: null, /** - * @property {Phaser.Signal} onRemovedFromGroup - This signal is dispatched when the parent is removed from a Group. + * This signal is dispatched when the Game Object is removed from a Group. + * It is sent two arguments: + * {any} The Game Object that was removed from the Group. + * {Phaser.Group} The Group it was removed from. + * @property {Phaser.Signal} onRemovedFromGroup */ onRemovedFromGroup: null, /** - * @property {Phaser.Signal} onRemovedFromWorld - This signal is dispatched if this item or any of its parents are removed from the game world. + * This Signal is never used internally by Phaser and is now deprecated. + * @deprecated + * @property {Phaser.Signal} onRemovedFromWorld */ onRemovedFromWorld: null, /** - * @property {Phaser.Signal} onDestroy - This signal is dispatched when the parent is destroyed. + * This signal is dispatched when the Game Object is destroyed. + * This happens when `Sprite.destroy()` is called, or `Group.destroy()` with `destroyChildren` set to true. + * It is sent one argument: + * {any} The Game Object that was destroyed. + * @property {Phaser.Signal} onDestroy */ onDestroy: null, /** - * @property {Phaser.Signal} onKilled - This signal is dispatched when the parent is killed. + * This signal is dispatched when the Game Object is killed. + * This happens when `Sprite.kill()` is called. + * Please understand the difference between `kill` and `destroy` by looking at their respective methods. + * It is sent one argument: + * {any} The Game Object that was killed. + * @property {Phaser.Signal} onKilled */ onKilled: null, /** - * @property {Phaser.Signal} onRevived - This signal is dispatched when the parent is revived. + * This signal is dispatched when the Game Object is revived from a previously killed state. + * This happens when `Sprite.revive()` is called. + * It is sent one argument: + * {any} The Game Object that was revived. + * @property {Phaser.Signal} onRevived */ onRevived: null, /** - * @property {Phaser.Signal} onOutOfBounds - This signal is dispatched when the parent leaves the world bounds (only if Sprite.checkWorldBounds is true). + * This signal is dispatched when the Game Object leaves the Phaser.World bounds. + * This signal is only if `Sprite.checkWorldBounds` is set to `true`. + * It is sent one argument: + * {any} The Game Object that left the World bounds. + * @property {Phaser.Signal} onOutOfBounds */ onOutOfBounds: null, /** - * @property {Phaser.Signal} onEnterBounds - This signal is dispatched when the parent returns within the world bounds (only if Sprite.checkWorldBounds is true). + * This signal is dispatched when the Game Object returns within the Phaser.World bounds, having previously been outside of them. + * This signal is only if `Sprite.checkWorldBounds` is set to `true`. + * It is sent one argument: + * {any} The Game Object that entered the World bounds. + * @property {Phaser.Signal} onEnterBounds */ onEnterBounds: null, /** - * @property {Phaser.Signal} onInputOver - This signal is dispatched if the parent is inputEnabled and receives an over event from a Pointer. + * This signal is dispatched if the Game Object has `inputEnabled` set to `true`, + * and receives an over event from a Phaser.Pointer. + * It is sent two arguments: + * {any} The Game Object that received the event. + * {Phaser.Pointer} The Phaser.Pointer object that caused the event. + * @property {Phaser.Signal} onInputOver */ onInputOver: null, /** - * @property {Phaser.Signal} onInputOut - This signal is dispatched if the parent is inputEnabled and receives an out event from a Pointer. + * This signal is dispatched if the Game Object has `inputEnabled` set to `true`, + * and receives an out event from a Phaser.Pointer, which was previously over it. + * It is sent two arguments: + * {any} The Game Object that received the event. + * {Phaser.Pointer} The Phaser.Pointer object that caused the event. + * @property {Phaser.Signal} onInputOut */ onInputOut: null, /** - * @property {Phaser.Signal} onInputDown - This signal is dispatched if the parent is inputEnabled and receives a down event from a Pointer. + * This signal is dispatched if the Game Object has `inputEnabled` set to `true`, + * and receives a down event from a Phaser.Pointer. This effectively means the Pointer has been + * pressed down (but not yet released) on the Game Object. + * It is sent two arguments: + * {any} The Game Object that received the event. + * {Phaser.Pointer} The Phaser.Pointer object that caused the event. + * @property {Phaser.Signal} onInputDown */ onInputDown: null, /** - * @property {Phaser.Signal} onInputUp - This signal is dispatched if the parent is inputEnabled and receives an up event from a Pointer. + * This signal is dispatched if the Game Object has `inputEnabled` set to `true`, + * and receives an up event from a Phaser.Pointer. This effectively means the Pointer had been + * pressed down, and was then released on the Game Object. + * It is sent three arguments: + * {any} The Game Object that received the event. + * {Phaser.Pointer} The Phaser.Pointer object that caused the event. + * {boolean} isOver - Is the Pointer still over the Game Object? + * @property {Phaser.Signal} onInputUp */ onInputUp: null, /** - * @property {Phaser.Signal} onDragStart - This signal is dispatched if the parent is inputEnabled and receives a drag start event from a Pointer. + * This signal is dispatched if the Game Object has been `inputEnabled` and `enableDrag` has been set. + * It is sent when a Phaser.Pointer starts to drag the Game Object, taking into consideration the various + * drag limitations that may be set. + * It is sent four arguments: + * {any} The Game Object that received the event. + * {Phaser.Pointer} The Phaser.Pointer object that caused the event. + * {number} The x coordinate that the drag started from. + * {number} The y coordinate that the drag started from. + * @property {Phaser.Signal} onDragStart */ onDragStart: null, /** - * @property {Phaser.Signal} onDragUpdate - This signal is dispatched if the parent is inputEnabled and receives a drag update event from a Pointer. + * This signal is dispatched if the Game Object has been `inputEnabled` and `enableDrag` has been set. + * It is sent when a Phaser.Pointer is actively dragging the Game Object. + * Be warned: This is a high volume Signal. Be careful what you bind to it. + * It is sent six arguments: + * {any} The Game Object that received the event. + * {Phaser.Pointer} The Phaser.Pointer object that caused the event. + * {number} The new x coordinate of the Game Object. + * {number} The new y coordinate of the Game Object. + * {Phaser.Point} A Point object that contains the point the Game Object was snapped to, if `snapOnDrag` has been enabled. + * {boolean} The `fromStart` boolean, indicates if this is the first update immediately after the drag has started. + * @property {Phaser.Signal} onDragUpdate */ onDragUpdate: null, /** - * @property {Phaser.Signal} onDragStop - This signal is dispatched if the parent is inputEnabled and receives a drag stop event from a Pointer. + * This signal is dispatched if the Game Object has been `inputEnabled` and `enableDrag` has been set. + * It is sent when a Phaser.Pointer stops dragging the Game Object. + * It is sent two arguments: + * {any} The Game Object that received the event. + * {Phaser.Pointer} The Phaser.Pointer object that caused the event. + * @property {Phaser.Signal} onDragStop */ onDragStop: null, /** - * @property {Phaser.Signal} onAnimationStart - This signal is dispatched when the parent has an animation that is played. + * This signal is dispatched if the Game Object has the AnimationManager component, + * and an Animation has been played. + * You can also listen to `Animation.onStart` rather than via the Game Objects events. + * It is sent two arguments: + * {any} The Game Object that received the event. + * {Phaser.Animation} The Phaser.Animation that was started. + * @property {Phaser.Signal} onAnimationStart */ onAnimationStart: null, /** - * @property {Phaser.Signal} onAnimationComplete - This signal is dispatched when the parent has an animation that finishes playing. + * This signal is dispatched if the Game Object has the AnimationManager component, + * and an Animation has been stopped (via `animation.stop()` and the `dispatchComplete` argument has been set. + * You can also listen to `Animation.onComplete` rather than via the Game Objects events. + * It is sent two arguments: + * {any} The Game Object that received the event. + * {Phaser.Animation} The Phaser.Animation that was stopped. + * @property {Phaser.Signal} onAnimationComplete */ onAnimationComplete: null, /** - * @property {Phaser.Signal} onAnimationLoop - This signal is dispatched when the parent has an animation that loops playback. + * This signal is dispatched if the Game Object has the AnimationManager component, + * and an Animation has looped playback. + * You can also listen to `Animation.onLoop` rather than via the Game Objects events. + * It is sent two arguments: + * {any} The Game Object that received the event. + * {Phaser.Animation} The Phaser.Animation that looped. + * @property {Phaser.Signal} onAnimationLoop */ onAnimationLoop: null @@ -29374,6 +29712,10 @@ Phaser.Component.InputEnabled.prototype = { * Note that Input related events are dispatched from `this.events`, i.e.: `events.onInputDown`. * * If you set this property to false it will stop the Input Handler from processing any more input events. + * + * If you want to _temporarily_ disable input for a Game Object, then it's better to set + * `input.enabled = false`, as it won't reset any of the Input Handlers internal properties. + * You can then toggle this back on as needed. * * @property {boolean} inputEnabled */ @@ -31527,7 +31869,7 @@ Phaser.Sprite = function (game, x, y, key, frame) { */ this.physicsType = Phaser.SPRITE; - PIXI.Sprite.call(this, PIXI.TextureCache['__default']); + PIXI.Sprite.call(this, Phaser.Cache.DEFAULT); Phaser.Component.Core.init.call(this, game, x, y, key, frame); @@ -31629,7 +31971,7 @@ Phaser.Image = function (game, x, y, key, frame) { */ this.type = Phaser.IMAGE; - PIXI.Sprite.call(this, PIXI.TextureCache['__default']); + PIXI.Sprite.call(this, Phaser.Cache.DEFAULT); Phaser.Component.Core.init.call(this, game, x, y, key, frame); @@ -33722,14 +34064,7 @@ Phaser.Canvas = { width = width || 256; height = height || 256; - if (skipPool === undefined) - { - var canvas = PIXI.CanvasPool.create(parent, width, height); - } - else - { - var canvas = document.createElement('canvas'); - } + var canvas = (skipPool) ? document.createElement('canvas') : PIXI.CanvasPool.create(parent, width, height); if (typeof id === 'string' && id !== '') { @@ -34322,7 +34657,9 @@ Phaser.Math = { * @return {number} n mod 1 */ shear: function (n) { + return n % 1; + }, /** @@ -34333,8 +34670,8 @@ Phaser.Math = { * @method Phaser.Math#snapTo * @param {number} input - The value to snap. * @param {number} gap - The interval gap of the grid. - * @param {number} [start] - Optional starting offset for gap. - * @return {number} + * @param {number} [start=0] - Optional starting offset for gap. + * @return {number} The snapped value. */ snapTo: function (input, gap, start) { @@ -34360,8 +34697,8 @@ Phaser.Math = { * @method Phaser.Math#snapToFloor * @param {number} input - The value to snap. * @param {number} gap - The interval gap of the grid. - * @param {number} [start] - Optional starting offset for gap. - * @return {number} + * @param {number} [start=0] - Optional starting offset for gap. + * @return {number} The snapped value. */ snapToFloor: function (input, gap, start) { @@ -34387,8 +34724,8 @@ Phaser.Math = { * @method Phaser.Math#snapToCeil * @param {number} input - The value to snap. * @param {number} gap - The interval gap of the grid. - * @param {number} [start] - Optional starting offset for gap. - * @return {number} + * @param {number} [start=0] - Optional starting offset for gap. + * @return {number} The snapped value. */ snapToCeil: function (input, gap, start) { @@ -34436,9 +34773,9 @@ Phaser.Math = { * * @method Phaser.Math#roundTo * @param {number} value - The value to round. - * @param {number} place - The place to round to. - * @param {number} base - The base to round in... default is 10 for decimal. - * @return {number} + * @param {number} [place=0] - The place to round to. + * @param {number} [base=10] - The base to round in. Default is 10 for decimal. + * @return {number} The rounded value. */ roundTo: function (value, place, base) { @@ -34452,11 +34789,14 @@ Phaser.Math = { }, /** + * Floors to some place comparative to a `base`, default is 10 for decimal place. + * The `place` is represented by the power applied to `base` to get that place. + * * @method Phaser.Math#floorTo * @param {number} value - The value to round. - * @param {number} place - The place to round to. - * @param {number} base - The base to round in... default is 10 for decimal. - * @return {number} + * @param {number} [place=0] - The place to round to. + * @param {number} [base=10] - The base to round in. Default is 10 for decimal. + * @return {number} The rounded value. */ floorTo: function (value, place, base) { @@ -34470,11 +34810,14 @@ Phaser.Math = { }, /** + * Ceils to some place comparative to a `base`, default is 10 for decimal place. + * The `place` is represented by the power applied to `base` to get that place. + * * @method Phaser.Math#ceilTo * @param {number} value - The value to round. - * @param {number} place - The place to round to. - * @param {number} base - The base to round in... default is 10 for decimal. - * @return {number} + * @param {number} [place=0] - The place to round to. + * @param {number} [base=10] - The base to round in. Default is 10 for decimal. + * @return {number} The rounded value. */ ceilTo: function (value, place, base) { @@ -34489,42 +34832,51 @@ Phaser.Math = { /** * Find the angle of a segment from (x1, y1) -> (x2, y2). + * * @method Phaser.Math#angleBetween - * @param {number} x1 - * @param {number} y1 - * @param {number} x2 - * @param {number} y2 + * @param {number} x1 - The x coordinate of the first value. + * @param {number} y1 - The y coordinate of the first value. + * @param {number} x2 - The x coordinate of the second value. + * @param {number} y2 - The y coordinate of the second value. * @return {number} The angle, in radians. */ angleBetween: function (x1, y1, x2, y2) { + return Math.atan2(y2 - y1, x2 - x1); + }, /** * Find the angle of a segment from (x1, y1) -> (x2, y2). - * Note that the difference between this method and Math.angleBetween is that this assumes the y coordinate travels + * + * The difference between this method and Math.angleBetween is that this assumes the y coordinate travels * down the screen. * * @method Phaser.Math#angleBetweenY - * @param {number} x1 - * @param {number} y1 - * @param {number} x2 - * @param {number} y2 + * @param {number} x1 - The x coordinate of the first value. + * @param {number} y1 - The y coordinate of the first value. + * @param {number} x2 - The x coordinate of the second value. + * @param {number} y2 - The y coordinate of the second value. * @return {number} The angle, in radians. */ angleBetweenY: function (x1, y1, x2, y2) { + return Math.atan2(x2 - x1, y2 - y1); + }, /** * Find the angle of a segment from (point1.x, point1.y) -> (point2.x, point2.y). + * * @method Phaser.Math#angleBetweenPoints - * @param {Phaser.Point} point1 - * @param {Phaser.Point} point2 - * @return {number} The angle, in radians. + * @param {Phaser.Point} point1 - The first point. + * @param {Phaser.Point} point2 - The second point. + * @return {number} The angle between the two points, in radians. */ angleBetweenPoints: function (point1, point2) { + return Math.atan2(point2.y - point1.y, point2.x - point1.x); + }, /** @@ -34535,24 +34887,28 @@ Phaser.Math = { * @return {number} The angle, in radians. */ angleBetweenPointsY: function (point1, point2) { + return Math.atan2(point2.x - point1.x, point2.y - point1.y); + }, /** * Reverses an angle. * @method Phaser.Math#reverseAngle * @param {number} angleRad - The angle to reverse, in radians. - * @return {number} Returns the reverse angle, in radians. + * @return {number} The reverse angle, in radians. */ reverseAngle: function (angleRad) { + return this.normalizeAngle(angleRad + Math.PI, true); + }, /** * Normalizes an angle to the [0,2pi) range. * @method Phaser.Math#normalizeAngle * @param {number} angleRad - The angle to normalize, in radians. - * @return {number} Returns the angle, fit within the [0,2pi] range, in radians. + * @return {number} The angle, fit within the [0,2pi] range, in radians. */ normalizeAngle: function (angleRad) { @@ -34568,10 +34924,12 @@ Phaser.Math = { * @param {number} value - The value to add the amount to. * @param {number} amount - The amount to add to the value. * @param {number} max - The maximum the value is allowed to be. - * @return {number} + * @return {number} The new value. */ maxAdd: function (value, amount, max) { + return Math.min(value + amount, max); + }, /** @@ -34584,7 +34942,9 @@ Phaser.Math = { * @return {number} The new value. */ minSub: function (value, amount, min) { + return Math.max(value - amount, min); + }, /** @@ -34649,8 +35009,10 @@ Phaser.Math = { * @return {boolean} True if the given number is odd. False if the given number is even. */ isOdd: function (n) { + // Does not work with extremely large values return !!(n & 1); + }, /** @@ -34661,8 +35023,10 @@ Phaser.Math = { * @return {boolean} True if the given number is even. False if the given number is odd. */ isEven: function (n) { + // Does not work with extremely large values return !(n & 1); + }, /** @@ -34899,11 +35263,13 @@ Phaser.Math = { * @method Phaser.Math#linear * @param {number} p0 * @param {number} p1 - * @param {number} t + * @param {number} t - A value between 0 and 1. * @return {number} */ linear: function (p0, p1, t) { + return (p1 - p0) * t + p0; + }, /** @@ -34914,7 +35280,9 @@ Phaser.Math = { * @return {number} */ bernstein: function (n, i) { + return this.factorial(n) / this.factorial(i) / this.factorial(n - i); + }, /** @@ -34922,7 +35290,7 @@ Phaser.Math = { * @param {number} value - the number you want to evaluate * @return {number} */ - factorial : function( value ){ + factorial: function (value) { if (value === 0) { @@ -34961,15 +35329,17 @@ Phaser.Math = { }, /** - * The (absolute) difference between two values. + * The absolute difference between two values. * * @method Phaser.Math#difference - * @param {number} a - * @param {number} b - * @return {number} + * @param {number} a - The first value to check. + * @param {number} b - The second value to check. + * @return {number} The absolute difference between the two values. */ difference: function (a, b) { + return Math.abs(a - b); + }, /** @@ -35120,7 +35490,9 @@ Phaser.Math = { * @return {number} */ clampBottom: function (x, a) { + return x < a ? a : x; + }, /** @@ -35134,22 +35506,26 @@ Phaser.Math = { * @see {@link Phaser.Math.fuzzyEqual} */ within: function (a, b, tolerance) { + return (Math.abs(a - b) <= tolerance); + }, /** * Linear mapping from range to range * * @method Phaser.Math#mapLinear - * @param {number} x the value to map - * @param {number} a1 first endpoint of the range - * @param {number} a2 final endpoint of the range - * @param {number} b1 first endpoint of the range - * @param {number} b2 final endpoint of the range + * @param {number} x - The value to map + * @param {number} a1 - First endpoint of the range + * @param {number} a2 - Final endpoint of the range + * @param {number} b1 - First endpoint of the range + * @param {number} b2 - Final endpoint of the range * @return {number} */ mapLinear: function (x, a1, a2, b1, b2) { + return b1 + ( x - a1 ) * ( b2 - b1 ) / ( a2 - a1 ); + }, /** @@ -35181,8 +35557,11 @@ Phaser.Math = { * @return {float} A value between 0 and 1. */ smootherstep: function (x, min, max) { + x = Math.max(0, Math.min(1, (x - min) / (max - min))); + return x * x * x * (x * (x * 6 - 15) + 10); + }, /** @@ -35195,7 +35574,9 @@ Phaser.Math = { * @return {integer} An integer in {-1, 0, 1} */ sign: function (x) { + return ( x < 0 ) ? -1 : ( ( x > 0 ) ? 1 : 0 ); + }, /** @@ -37879,7 +38260,7 @@ Phaser.AnimationManager.prototype = { refreshFrame: function () { // TODO - this.sprite.setTexture(PIXI.TextureCache[this.currentFrame.uuid]); + // this.sprite.setTexture(PIXI.TextureCache[this.currentFrame.uuid]); }, @@ -38354,7 +38735,7 @@ Phaser.Animation.prototype = { { for (var i = 0; i < this._frames.length; i++) { - if (this._frames[i] === frameIndex) + if (this._frames[i] === frameId) { frameIndex = i; } @@ -39976,6 +40357,20 @@ Phaser.Cache.SHADER = 14; */ Phaser.Cache.RENDER_TEXTURE = 15; +/** +* The default image used for a texture when no other is specified. +* @constant +* @type {PIXI.Texture} +*/ +Phaser.Cache.DEFAULT = null; + +/** +* The default image used for a texture when the source image is missing. +* @constant +* @type {PIXI.Texture} +*/ +Phaser.Cache.MISSING = null; + Phaser.Cache.prototype = { ////////////////// @@ -40030,6 +40425,15 @@ Phaser.Cache.prototype = { this._resolveURL(url, img); + if (key === '__default') + { + Phaser.Cache.DEFAULT = new PIXI.Texture(img.base); + } + else if (key === '__missing') + { + Phaser.Cache.MISSING = new PIXI.Texture(img.base); + } + return img; }, @@ -40054,7 +40458,8 @@ Phaser.Cache.prototype = { // Because we don't want to invalidate the sprite batch for an invisible texture obj.base.skipRender = true; - PIXI.TextureCache['__default'] = new PIXI.Texture(obj.base); + // Make it easily available within the rest of Phaser / Pixi + Phaser.Cache.DEFAULT = new PIXI.Texture(obj.base); }, @@ -40075,7 +40480,8 @@ Phaser.Cache.prototype = { var obj = this.addImage('__missing', null, img); - PIXI.TextureCache['__missing'] = new PIXI.Texture(obj.base); + // Make it easily available within the rest of Phaser / Pixi + Phaser.Cache.MISSING = new PIXI.Texture(obj.base); }, @@ -41325,71 +41731,6 @@ Phaser.Cache.prototype = { }, - /** - * Gets a PIXI.Texture by key from the PIXI.TextureCache. - * - * If the texture isn't found in the cache, then it searches the Phaser Image Cache and - * creates a new PIXI.Texture object which is then returned. - * - * @method Phaser.Cache#getPixiTexture - * @deprecated - * @param {string} key - Asset key of the Texture to retrieve from the Cache. - * @return {PIXI.Texture} The Texture object. - */ - getPixiTexture: function (key) { - - if (PIXI.TextureCache[key]) - { - return PIXI.TextureCache[key]; - } - else - { - var base = this.getPixiBaseTexture(key); - - if (base) - { - return new PIXI.Texture(base); - } - else - { - return null; - } - } - - }, - - /** - * Gets a PIXI.BaseTexture by key from the PIXI.BaseTextureCache. - * - * If the texture isn't found in the cache, then it searches the Phaser Image Cache. - * - * @method Phaser.Cache#getPixiBaseTexture - * @deprecated - * @param {string} key - Asset key of the BaseTexture to retrieve from the Cache. - * @return {PIXI.BaseTexture} The BaseTexture object or null if not found. - */ - getPixiBaseTexture: function (key) { - - if (PIXI.BaseTextureCache[key]) - { - return PIXI.BaseTextureCache[key]; - } - else - { - var img = this.getItem(key, Phaser.Cache.IMAGE, 'getPixiBaseTexture'); - - if (img !== null) - { - return img.base; - } - else - { - return null; - } - } - - }, - /** * Get a cached object by the URL. * This only returns a value if you set Cache.autoResolveURL to `true` *before* starting the preload of any assets. @@ -41467,20 +41808,20 @@ Phaser.Cache.prototype = { * * You can optionally elect to destroy it as well. This calls BaseTexture.destroy on it. * - * Note that this only removes it from the Phaser and PIXI Caches. If you still have references to the data elsewhere + * Note that this only removes it from the Phaser Cache. If you still have references to the data elsewhere * then it will persist in memory. * * @method Phaser.Cache#removeImage * @param {string} key - Key of the asset you want to remove. - * @param {boolean} [removeFromPixi=true] - Should this image also be destroyed? Removing it from the PIXI.BaseTextureCache? + * @param {boolean} [destroyBaseTexture=true] - Should the BaseTexture behind this image also be destroyed? */ - removeImage: function (key, removeFromPixi) { + removeImage: function (key, destroyBaseTexture) { - if (removeFromPixi === undefined) { removeFromPixi = true; } + if (destroyBaseTexture === undefined) { destroyBaseTexture = true; } var img = this.getImage(key, true); - if (removeFromPixi && img.base) + if (destroyBaseTexture && img.base) { img.base.destroy(); } @@ -41894,7 +42235,19 @@ Phaser.Loader = function (game) { this.path = ''; /** - * This event is dispatched when the loading process starts: before the first file has been requested, + * Used to map the application mime-types to to the Accept header in XHR requests. + * If you don't require these mappings, or they cause problems on your server, then + * remove them from the headers object and the XHR request will not try to use them. + * @property {object} headers + * @default + */ + this.headers = { + json: "application/json", + xml: "application/xml" + }; + + /** + * This event is dispatched when the loading process starts: before the first file has been requested, * but after all the initial packs have been loaded. * * @property {Phaser.Signal} onLoadStart @@ -44109,6 +44462,11 @@ Phaser.Loader.prototype = { xhr.open("GET", url, true); xhr.responseType = type; + if (this.headers[file.type]) + { + xhr.setRequestHeader("Accept", this.headers[file.type]); + } + onerror = onerror || this.fileError; var _this = this; @@ -48352,13 +48710,63 @@ Phaser.ArrayUtils = { }, + /** + * Moves the element from the end of the array to the start, shifting all items in the process. + * The "rotation" happens to the right. + * + * Before: `[ A, B, C, D, E, F ]` + * After: `[ F, A, B, C, D, E ]` + * + * See also Phaser.ArrayUtils.rotateLeft. + * + * @method Phaser.ArrayUtils.rotateRight + * @param {any[]} array - The array to rotate. The array is modified. + * @return {any} The shifted value. + */ + rotateRight: function (array) { + + var s = array.pop(); + array.unshift(s); + + return s; + + }, + /** * Moves the element from the start of the array to the end, shifting all items in the process. * The "rotation" happens to the left. * + * Before: `[ A, B, C, D, E, F ]` + * After: `[ B, C, D, E, F, A ]` + * + * See also Phaser.ArrayUtils.rotateRight + * + * @method Phaser.ArrayUtils.rotateLeft + * @param {any[]} array - The array to rotate. The array is modified. + * @return {any} The rotated value. + */ + rotateLeft: function (array) { + + var s = array.shift(); + array.push(s); + + return s; + + }, + + /** + * Moves the element from the start of the array to the end, shifting all items in the process. + * The "rotation" happens to the left. + * + * Before: `[ A, B, C, D, E, F ]` + * After: `[ B, C, D, E, F, A ]` + * + * See also Phaser.ArrayUtils.rotateRight + * * @method Phaser.ArrayUtils.rotate - * @param {any[]} array - The array to shift/rotate. The array is modified. - * @return {any} The shifted value. + * @deprecated Please use Phaser.ArrayUtils.rotate instead. + * @param {any[]} array - The array to rotate. The array is modified. + * @return {any} The rotated value. */ rotate: function (array) { @@ -49432,6 +49840,23 @@ Phaser.Color = { }, + /** + * Converts RGBA components to a 32 bit integer in AABBGGRR format. + * + * @method Phaser.Color.toABGR + * @static + * @param {number} r - The red color component, in the range 0 - 255. + * @param {number} g - The green color component, in the range 0 - 255. + * @param {number} b - The blue color component, in the range 0 - 255. + * @param {number} a - The alpha color component, in the range 0 - 255. + * @return {number} A RGBA-packed 32 bit integer + */ + toABGR: function (r, g, b, a) { + + return ((a << 24) | (b << 16) | (g << 8) | r) >>> 0; + + }, + /** * Converts an RGB color value to HSL (hue, saturation and lightness). * Conversion forumla from http://en.wikipedia.org/wiki/HSL_color_space. diff --git a/build/custom/phaser-minimum.map b/build/custom/phaser-minimum.map index 2c5953416..8f47aef72 100644 --- a/build/custom/phaser-minimum.map +++ b/build/custom/phaser-minimum.map @@ -1 +1 @@ -{"version":3,"file":"phaser-minimum.min.js","sources":["phaser-minimum.js"],"names":["root","this","PIXI","game","WEBGL_RENDERER","CANVAS_RENDERER","VERSION","_UID","Float32Array","Uint16Array","Uint32Array","ArrayBuffer","Array","PI_2","Math","PI","RAD_TO_DEG","DEG_TO_RAD","RETINA_PREFIX","DisplayObject","position","Point","scale","pivot","rotation","alpha","visible","hitArea","renderable","parent","stage","worldAlpha","worldTransform","Matrix","worldPosition","worldScale","worldRotation","_sr","_cr","filterArea","_bounds","Rectangle","_currentBounds","_mask","_cacheAsBitmap","_cacheIsDirty","prototype","constructor","destroy","children","i","length","_destroyCachedSprite","Object","defineProperty","get","item","set","value","isMask","_filters","passes","filterPasses","j","push","_filterBlock","target","blendMode","blendModes","MULTIPLY","NORMAL","_generateCachedSprite","updateTransform","p","world","a","b","c","d","tx","ty","pt","wt","rotationCache","sin","cos","x","y","sqrt","atan2","transformCallback","call","transformCallbackContext","displayObjectUpdateTransform","getBounds","matrix","EmptyRectangle","getLocalBounds","identityMatrix","setStageReference","preUpdate","generateTexture","resolution","scaleMode","renderer","bounds","renderTexture","RenderTexture","width","height","_tempMatrix","render","updateCache","toGlobal","apply","toLocal","from","applyInverse","_renderCachedSprite","renderSession","_cachedSprite","gl","Sprite","_renderWebGL","_renderCanvas","max","ceil","texture","resize","tempFilters","filters","anchor","DisplayObjectContainer","ignoreChildInput","create","_width","_height","addChild","child","addChildAt","index","removeChild","splice","Error","swapChildren","child2","index1","getChildIndex","index2","indexOf","setChildIndex","currentIndex","getChildAt","removeChildAt","removeStageReference","undefined","removeChildren","beginIndex","endIndex","begin","end","range","removed","displayObjectContainerUpdateTransform","childBounds","childMaxX","childMaxY","minX","Infinity","minY","maxX","maxY","childVisible","matrixCache","spriteBatch","flush","filterManager","pushFilter","stop","maskManager","pushMask","mask","start","popMask","popFilter","Texture","emptyTexture","tint","cachedTint","tintedTexture","shader","exists","baseTexture","hasLoaded","onTextureUpdate","frame","setTexture","destroyBase","skipRender","valid","w0","w1","h0","h1","temp","x1","y1","x2","y2","x3","y3","x4","y4","crop","currentBlendMode","context","globalCompositeOperation","blendModesCanvas","globalAlpha","smoothProperty","scaleModes","LINEAR","dx","trim","dy","shakeX","shakeY","roundPixels","setTransform","cw","ch","requiresReTint","CanvasTinter","getTintedTexture","drawImage","cx","cy","source","fromFrame","frameId","TextureCache","fromImage","imageId","crossorigin","SpriteBatch","textureThing","ready","initWebGL","fastSpriteBatch","WebGLFastSpriteBatch","setContext","shaderManager","setShader","fastShader","transform","isRotated","childTransform","hex2rgb","hex","rgb2hex","rgb","canUseNewCanvasBlendModes","document","pngHead","pngEnd","magenta","Image","src","yellow","canvas","CanvasPool","getContext","getImageData","data","remove","getNextPowerOfTwo","number","result","isPowerOfTwo","idx","getFirst","container","createElement","pool","removeByCanvas","getTotal","getFree","initDefaultShaders","CompileVertexShader","shaderSrc","_CompileShader","VERTEX_SHADER","CompileFragmentShader","FRAGMENT_SHADER","shaderType","isArray","join","createShader","shaderSource","compileShader","getShaderParameter","COMPILE_STATUS","window","console","log","getShaderInfoLog","compileProgram","vertexSrc","fragmentSrc","fragmentShader","vertexShader","shaderProgram","createProgram","attachShader","linkProgram","getProgramParameter","LINK_STATUS","getProgramInfoLog","PixiShader","program","textureCount","firstRun","dirty","attributes","init","defaultVertexSrc","useProgram","uSampler","getUniformLocation","projectionVector","offsetVector","dimensions","aVertexPosition","getAttribLocation","aTextureCoord","colorAttribute","key","uniforms","uniformLocation","initUniforms","uniform","type","_init","initSampler2D","glMatrix","glValueLength","glFunc","uniformMatrix2fv","uniformMatrix3fv","uniformMatrix4fv","activeTexture","bindTexture","TEXTURE_2D","_glTextures","id","textureData","magFilter","minFilter","wrapS","CLAMP_TO_EDGE","wrapT","format","LUMINANCE","RGBA","repeat","REPEAT","pixelStorei","UNPACK_FLIP_Y_WEBGL","flipY","border","texImage2D","UNSIGNED_BYTE","texParameteri","TEXTURE_MAG_FILTER","TEXTURE_MIN_FILTER","TEXTURE_WRAP_S","TEXTURE_WRAP_T","uniform1i","syncUniforms","transpose","z","w","_dirty","instances","updateTexture","deleteProgram","PixiFastShader","uMatrix","aPositionCoord","aScale","aRotation","StripShader","translationMatrix","attribute","PrimitiveShader","tintColor","ComplexPrimitiveShader","color","glContexts","WebGLRenderer","defaultRenderer","transparent","autoResize","preserveDrawingBuffer","clearBeforeRender","view","_contextOptions","antialias","premultipliedAlpha","stencil","projection","offset","WebGLShaderManager","WebGLSpriteBatch","WebGLMaskManager","WebGLFilterManager","stencilManager","WebGLStencilManager","blendModeManager","WebGLBlendModeManager","drawCount","initContext","mapBlendModes","glContextId","disable","DEPTH_TEST","CULL_FACE","enable","BLEND","contextLost","viewport","bindFramebuffer","FRAMEBUFFER","clearColor","_bgColor","r","g","clear","COLOR_BUFFER_BIT","camera","_shake","renderDisplayObject","displayObject","buffer","setBlendMode","style","createTexture","UNPACK_PREMULTIPLY_ALPHA_WEBGL","NEAREST","mipmap","LINEAR_MIPMAP_LINEAR","NEAREST_MIPMAP_NEAREST","generateMipmap","_powerOf2","blendModesWebGL","modes","ONE","ONE_MINUS_SRC_ALPHA","ADD","SRC_ALPHA","DST_ALPHA","DST_COLOR","SCREEN","OVERLAY","DARKEN","LIGHTEN","COLOR_DODGE","COLOR_BURN","HARD_LIGHT","SOFT_LIGHT","DIFFERENCE","EXCLUSION","HUE","SATURATION","COLOR","LUMINOSITY","blendModeWebGL","blendFunc","maskData","WebGLGraphics","updateGraphics","_webGL","pushStencil","popStencil","stencilStack","reverse","count","graphics","webGLData","bindGraphics","STENCIL_TEST","STENCIL_BUFFER_BIT","level","colorMask","stencilFunc","ALWAYS","stencilOp","KEEP","INVERT","mode","drawElements","TRIANGLE_FAN","indices","UNSIGNED_SHORT","EQUAL","DECR","INCR","TRIANGLE_STRIP","_currentGraphics","complexPrimitiveShader","uniform1f","toArray","uniform2f","uniform3fv","bindBuffer","ARRAY_BUFFER","vertexAttribPointer","FLOAT","ELEMENT_ARRAY_BUFFER","indexBuffer","primitiveShader","pop","maxAttibs","attribState","tempAttribState","stack","defaultShader","stripShader","setAttribs","attribs","attribId","enableVertexAttribArray","disableVertexAttribArray","_currentId","currentShader","vertSize","size","numVerts","numIndices","vertices","positions","colors","lastIndexCount","drawing","currentBatchSize","currentBaseTexture","textures","shaders","sprites","AbstractFilter","vertexBuffer","createBuffer","bufferData","STATIC_DRAW","DYNAMIC_DRAW","sprite","uvs","_uvs","aX","aY","x0","y0","renderTilingSprite","tilingTexture","TextureUvs","h","tilePosition","tileScaleOffset","offsetX","offsetY","scaleX","tileScale","scaleY","TEXTURE0","stride","bufferSubData","subarray","nextTexture","nextBlendMode","nextShader","batchSize","blendSwap","shaderSwap","skip","renderBatch","startIndex","TRIANGLES","deleteBuffer","maxSize","renderSprite","filterStack","texturePool","initShaderBuffers","filterBlock","_filterArea","_previous_stencil_mgr","filter","FilterTexture","padding","frameBuffer","_glFilterTexture","vertexArray","uvBuffer","uvArray","inputTexture","outputTexture","filterPass","applyFilterPass","sizeX","sizeY","currentFilter","colorBuffer","colorArray","createFramebuffer","DEFAULT","framebufferTexture2D","COLOR_ATTACHMENT0","renderBuffer","createRenderbuffer","bindRenderbuffer","RENDERBUFFER","framebufferRenderbuffer","DEPTH_STENCIL_ATTACHMENT","renderbufferStorage","DEPTH_STENCIL","deleteFramebuffer","deleteTexture","CanvasBuffer","clearRect","CanvasMaskManager","save","cacheAlpha","CanvasGraphics","renderGraphicsMask","clip","restore","tintMethod","tintWithMultiply","fillStyle","toString","substr","fillRect","tintWithPerPixel","rgbValues","pixelData","pixels","canHandleAlpha","putImageData","checkInverseAlpha","s1","s2","canUseMultiply","CanvasRenderer","refresh","Phaser","Canvas","getSmoothingPrefix","navigator","isCocoonJS","screencanvas","rgba","removeView","useNew","BaseTextureCache","BaseTextureCacheIdGenerator","BaseTexture","complete","naturalWidth","naturalHeight","imageUrl","forceLoaded","_pixiId","unloadFromGPU","updateSourceImage","newSrc","glTexture","image","crossOrigin","fromCanvas","TextureCacheIdGenerator","FrameCache","TextureSilentFail","noFrame","isTiling","requiresUpdate","setFrame","onBaseTextureLoaded","_updateUvs","tw","th","addTextureToCache","removeTextureFromCache","textureBuffer","renderWebGL","renderCanvas","tempMatrix","updateBase","identity","translate","append","realResolution","getImage","getBase64","getCanvas","toDataURL","webGLPixels","Uint8Array","readPixels","tempCanvas","canvasData","exports","module","define","amd","WheelEventProxy","scaleFactor","deltaMode","_scaleFactor","_deltaMode","originalEvent","GAMES","AUTO","CANVAS","WEBGL","HEADLESS","NONE","LEFT","RIGHT","UP","DOWN","SPRITE","BUTTON","IMAGE","GRAPHICS","TEXT","TILESPRITE","BITMAPTEXT","GROUP","RENDERTEXTURE","TILEMAP","TILEMAPLAYER","EMITTER","POLYGON","BITMAPDATA","CANVAS_FILTER","WEBGL_FILTER","ELLIPSE","SPRITEBATCH","RETROFONT","POINTER","ROPE","CIRCLE","RECTANGLE","LINE","MATRIX","POINT","ROUNDEDRECTANGLE","CREATURE","VIDEO","PENDING_ATLAS","HORIZONTAL","VERTICAL","LANDSCAPE","PORTRAIT","ANGLE_UP","ANGLE_DOWN","ANGLE_LEFT","ANGLE_RIGHT","ANGLE_NORTH_EAST","ANGLE_NORTH_WEST","ANGLE_SOUTH_EAST","ANGLE_SOUTH_WEST","TOP_LEFT","TOP_CENTER","TOP_RIGHT","LEFT_TOP","LEFT_CENTER","LEFT_BOTTOM","CENTER","RIGHT_TOP","RIGHT_CENTER","RIGHT_BOTTOM","BOTTOM_LEFT","BOTTOM_CENTER","BOTTOM_RIGHT","trunc","floor","Function","bind","slice","thisArg","bound","args","boundArgs","concat","arguments","TypeError","F","proto","arg","forEach","fun","t","len","CheapArray","assert","warn","Utils","getProperty","obj","prop","parts","split","last","l","current","setProperty","chanceRoll","chance","random","randomChoice","choice1","choice2","parseDimension","dimension","f","px","parseInt","innerWidth","innerHeight","pad","str","dir","padlen","right","left","isPlainObject","nodeType","hasOwnProperty","e","extend","options","name","copy","copyIsArray","clone","deep","mixinPrototype","mixin","replace","mixinKeys","keys","to","o","childNodes","cloneNode","Circle","diameter","_diameter","_radius","circumference","out","u","radius","setTo","copyFrom","copyTo","dest","distance","round","output","contains","circumferencePoint","angle","asDegrees","offsetPoint","point","top","bottom","equals","intersects","degToRad","intersectsRectangle","abs","halfWidth","xDist","halfHeight","yDist","xCornerDist","yCornerDist","xCornerDistSq","yCornerDistSq","maxCornerDistSq","Ellipse","normx","normy","Line","fromSprite","startSprite","endSprite","useCenter","center","fromAngle","rotate","rotateAround","line","asSegment","intersectsPoints","reflect","midPoint","centerOn","add","pointOnLine","pointOnSegment","xMin","min","xMax","yMin","yMax","coordinatesOnLine","stepRate","results","sx","sy","err","e2","wrap","a1","a2","b1","b2","c1","c2","denom","uc","ua","ub","rect","bx1","by1","bx2","by2","normalAngle","fromArray","array","pos","newPos","tx1","d1","invert","subtract","multiply","divide","clampX","clamp","clampY","radToDeg","getMagnitude","getMagnitudeSq","setMagnitude","magnitude","normalize","isZero","m","dot","cross","perp","rperp","normalRightHand","negative","multiplyAdd","s","interpolate","project","amt","projectUnit","centroid","points","pointslength","parse","xProp","yProp","Polygon","area","_points","closed","toNumberArray","flatten","inside","ix","iy","jx","jy","Number","MAX_VALUE","calculateArea","p1","p2","avgHeight","centerX","centerY","floorAll","ceilAll","inflate","containsRect","intersection","intersectsRaw","tolerance","union","randomX","randomY","getPoint","empty","inflatePoint","containsRaw","rx","ry","rw","rh","containsPoint","volume","sameDimensions","aabb","NEGATIVE_INFINITY","POSITIVE_INFINITY","RoundedRectangle","Camera","deadzone","roundPx","atLimit","totalInView","lerp","onShakeComplete","Signal","onFlashComplete","onFadeComplete","fx","_targetPosition","_edge","_position","intensity","duration","horizontal","vertical","shakeBounds","_fxDuration","_fxType","FOLLOW_LOCKON","FOLLOW_PLATFORMER","FOLLOW_TOPDOWN","FOLLOW_TOPDOWN_TIGHT","SHAKE_BOTH","SHAKE_HORIZONTAL","SHAKE_VERTICAL","ENABLE_FX","boot","Graphics","follow","lerpX","lerpY","helper","unfollow","focusOn","setPosition","focusOnXY","shake","force","direction","flash","beginFill","drawRect","endFill","fade","update","updateFX","updateShake","checkBounds","time","elapsedMS","dispatch","rnd","frac","updateTarget","math","linear","setBoundsToWorld","vx","vw","vy","vh","setSize","reset","resetFX","State","make","cache","input","load","sound","state","tweens","particles","physics","preload","loadUpdate","loadRender","preRender","paused","resumed","pauseUpdate","shutdown","StateManager","pendingState","states","_pendingState","_clearWorld","_clearCache","_created","_args","onStateChange","onInitCallback","onPreloadCallback","onCreateCallback","onUpdateCallback","onRenderCallback","onResizeCallback","onPreRenderCallback","onLoadUpdateCallback","onLoadRenderCallback","onPausedCallback","onResumedCallback","onPauseUpdateCallback","onShutDownCallback","onPause","pause","onResume","resume","autoStart","newState","isBooted","callbackContext","clearWorld","clearCache","checkState","restart","dummy","previousStateKey","clearCurrentState","setCurrentState","totalQueuedFiles","totalQueuedPacks","loadComplete","removeAll","debug","link","unlink","_kickstart","getCurrentState","elapsedTime","renderType","_bindings","_prevParams","memorize","_shouldPropagate","active","_boundDispatch","validateListener","listener","fnName","_registerListener","isOnce","listenerContext","priority","binding","prevIndex","_indexOfListener","SignalBinding","_addBinding","execute","n","_priority","cur","_listener","has","addOnce","_destroy","getNumListeners","halt","bindings","paramsArr","forget","dispose","_this","signal","_isOnce","_signal","callCount","params","handlerReturn","detach","isBound","getListener","getSignal","Filter","prevPoint","Date","mouse","date","getFullYear","getMonth","getDate","getHours","getMinutes","getSeconds","sampleRate","iChannel0","iChannel1","iChannel2","iChannel3","setResolution","pointer","toFixed","totalElapsedSeconds","addToWorld","anchorX","anchorY","Plugin","hasPreUpdate","hasUpdate","hasPostUpdate","hasRender","hasPostRender","postRender","PluginManager","plugins","_len","_i","plugin","postUpdate","Stage","disableVisibilityChange","currentRenderOrderID","_hiddenVar","_onChange","config","parseConfig","setBackgroundColor","DOM","getOffset","setUserSelect","setTouchAction","checkVisibility","webkitHidden","mozHidden","msHidden","hidden","event","visibilityChange","addEventListener","onblur","onfocus","onpagehide","onpageshow","device","cocoonJSApp","CocoonJS","App","onSuspended","onActivated","focusLoss","focusGain","gamePaused","gameResumed","Color","valueToColor","updateColor","removeEventListener","Group","addToStage","enableBody","physicsBodyType","Physics","ARCADE","physicsType","alive","ignoreDestroy","pendingDestroy","classType","cursor","inputEnableChildren","onChildInputDown","onChildInputUp","onChildInputOver","onChildInputOut","enableBodyDebug","physicsSortDirection","onDestroy","cursorIndex","fixedToCamera","cameraOffset","hash","_sortProperty","RETURN_NONE","RETURN_TOTAL","RETURN_CHILD","SORT_ASCENDING","SORT_DESCENDING","silent","body","removeFromHash","updateZ","addToHash","inputEnabled","events","onAddedToGroup$dispatch","addAt","addMultiple","moveAll","getAt","createMultiple","quantity","singleKey","singleFrame","align","rows","columns","cellWidth","cellHeight","alignIn","resetCursor","next","previous","swap","child1","bringToTop","getIndex","sendToBack","moveUp","moveDown","xy","getByName","oldChild","newChild","hasProperty","operation","checkProperty","checkAlive","checkVisible","setAll","setAllChildren","checkAll","addAll","property","amount","subAll","multiplyAll","divideAll","callAllExists","callback","existsValue","callbackFromArray","callAll","method","methodLength","contextLength","renderOrderID","predicate","checkExists","ArraySet","forEachExists","iterate","forEachAlive","forEachDead","sort","order","ascendingSortHandler","descendingSortHandler","customSort","sortHandler","returnType","total","getFirstExists","createIfNull","resetChild","getFirstAlive","getFirstDead","loadTexture","getTop","getBottom","getClosestTo","object","tempDistance","getFurthestFrom","countLiving","countDead","getRandom","ArrayUtils","getRandomItem","destroyPhase","onRemovedFromGroup$dispatch","group","destroyTexture","removeBetween","destroyChildren","soft","World","_definedSize","stateChange","setBounds","useBounds","between","Game","physicsConfig","isRunning","raf","net","Device","lockRender","stepping","pendingStep","stepCount","onBlur","onFocus","_paused","_codePaused","currentUpdateID","updatesThisFrame","_deltaTime","_lastCount","_spiraling","fpsProblemNotifier","forceSingleUpdate","_nextFpsNotification","enableDebug","RandomDataGenerator","now","whenReady","seed","ScaleManager","setUpRenderer","GameObjectFactory","GameObjectCreator","Cache","Loader","Time","TweenManager","Input","SoundManager","Particles","Create","Net","Debug","showDebugHeader","RequestAnimationFrame","stopFocus","focus","hideBanner","v","webAudio","chrome","webGL","contextRestored","cocoonJS","smoothed","addToDOM","preventDefault","clearGLTextures","updateLogic","desiredFpsMult","updateRender","slowMotion","desiredFps","slowStep","elapsed","timeStep","enableStep","disableStep","step","removeFromDOM","muteOnPause","setMute","cordova","iOS","unsetMute","hitCanvas","hitContext","moveCallbacks","customCandidateHandler","customCandidateHandlerContext","pollRate","enabled","multiInputOverride","MOUSE_TOUCH_COMBINE","speed","circle","maxPointers","tapRate","doubleTapRate","holdRate","justPressedRate","justReleasedRate","recordPointerHistory","recordRate","recordLimit","pointer1","pointer2","pointer3","pointer4","pointer5","pointer6","pointer7","pointer8","pointer9","pointer10","pointers","activePointer","mousePointer","keyboard","touch","mspointer","gamepad","resetLocked","onDown","onUp","onTap","onHold","minPriorityID","interactiveItems","_localPoint","_pollCounter","_oldPosition","_x","_y","MOUSE_OVERRIDES_TOUCH","TOUCH_OVERRIDES_MOUSE","MAX_POINTERS","Pointer","PointerMode","CURSOR","addPointer","Mouse","Touch","MSPointer","Keyboard","Gamepad","_onClickTrampoline","onClickTrampoline","setInteractiveCandidateHandler","addMoveCallback","deleteMoveCallback","TOUCH","hard","resetSpeed","startPointer","countActivePointers","updatePointer","identifier","move","stopPointer","limit","getPointer","isActive","getPointerFromIdentifier","getPointerFromId","pointerId","getLocalPosition","hitTest","localPoint","worldVisible","TileSprite","graphicsData","fill","shape","processClickTrampolines","mouseDownCallback","mouseUpCallback","mouseOutCallback","mouseOverCallback","mouseWheelCallback","capture","button","wheelDelta","locked","stopOnGameOut","pointerLock","_onMouseDown","_onMouseMove","_onMouseUp","_onMouseOut","_onMouseOver","_onMouseWheel","_wheelEvent","NO_BUTTON","LEFT_BUTTON","MIDDLE_BUTTON","RIGHT_BUTTON","BACK_BUTTON","FORWARD_BUTTON","WHEEL_UP","WHEEL_DOWN","android","onMouseDown","onMouseMove","onMouseUp","_onMouseUpGlobal","onMouseUpGlobal","_onMouseOutGlobal","onMouseOutGlobal","onMouseOut","onMouseOver","onMouseWheel","wheelEvent","mouseMoveCallback","withinGame","leftButton","rightButton","bindEvent","deltaY","requestPointerLock","element","mozRequestPointerLock","webkitRequestPointerLock","_pointerLockChange","pointerLockChange","pointerLockElement","mozPointerLockElement","webkitPointerLockElement","releasePointerLock","exitPointerLock","mozExitPointerLock","webkitExitPointerLock","_stubsGenerated","makeBinder","defineProperties","detail","deltaX","wheelDeltaX","deltaZ","pointerDownCallback","pointerMoveCallback","pointerUpCallback","_onMSPointerDown","_onMSPointerMove","_onMSPointerUp","_onMSPointerUpGlobal","_onMSPointerOut","_onMSPointerOver","onPointerDown","onPointerMove","onPointerUp","onPointerUpGlobal","onPointerOut","onPointerOver","pointerType","DeviceButton","buttonCode","isDown","isUp","timeDown","timeUp","repeats","altKey","shiftKey","ctrlKey","onFloat","padFloat","justPressed","justReleased","pointerMode","CONTACT","middleButton","backButton","forwardButton","eraserButton","ERASER_BUTTON","_holdSent","_history","_nextDrop","_stateReset","clientX","clientY","pageX","pageY","screenX","screenY","rawMovementX","rawMovementY","movementX","movementY","isMouse","previousTapTime","totalTouches","msSinceLastClick","targetObject","interactiveCandidates","positionDown","positionUp","_clickTrampolines","_trampolineTargetObject","resetButtons","processButtonsDown","buttons","processButtonsUp","updateButtons","down","toLowerCase","totalActivePointers","_touchedHandler","processInteractiveObjects","shift","fromClick","pollLocked","mozMovementX","webkitMovementX","mozMovementY","webkitMovementY","isDragged","highestRenderOrderID","highestInputPriorityID","candidateTarget","currentNode","first","checked","validForInput","checkPointerDown","checkPointerOver","priorityID","swapTarget","newTarget","_pointerOutHandler","_pointerOverHandler","leave","currentPointers","addClickTrampoline","callbackArgs","trampolines","trampoline","_releasedHandler","resetMovement","touchLockCallbacks","touchStartCallback","touchMoveCallback","touchEndCallback","touchEnterCallback","touchLeaveCallback","touchCancelCallback","_onTouchStart","_onTouchMove","_onTouchEnd","_onTouchEnter","_onTouchLeave","_onTouchCancel","onTouchStart","onTouchMove","onTouchEnd","onTouchEnter","onTouchLeave","onTouchCancel","consumeDocumentTouches","_documentTouchMove","addTouchLockCallback","onEnd","removeTouchLockCallback","cb","changedTouches","InputHandler","useHandCursor","_setHandCursor","allowHorizontalDrag","allowVerticalDrag","snapOffset","snapOnDrag","snapOnRelease","snapX","snapY","snapOffsetX","snapOffsetY","pixelPerfectOver","pixelPerfectClick","pixelPerfectAlpha","draggable","boundsRect","boundsSprite","scaleLayer","dragOffset","dragFromCenter","dragStopBlocksInputUp","dragStartPoint","dragDistanceThreshold","dragTimeThreshold","downPoint","snapPoint","_dragPoint","_dragPhase","_pendingDrag","_dragTimePass","_dragDistancePass","_wasEnabled","_tempPoint","_pointerData","camX","camY","isOver","isOut","timeOver","timeOut","downDuration","onAddedToGroup","addedToGroup","onRemovedFromGroup","removedFromGroup","flagged","highestID","highestRenderID","includePixelPerfect","isPixelPerfect","pointerX","pointerY","pointerDown","pointerUp","pointerTimeDown","pointerTimeUp","pointerOver","pointerOut","pointerTimeOver","pointerTimeOut","pointerDragged","fastTest","checkPixel","_dx","_dy","startDrag","_draggedPointerID","updateDrag","sendEvent","onInputOver$dispatch","onInputOut$dispatch","onInputDown$dispatch","dragTimeElapsed","onInputUp$dispatch","stopDrag","fromStart","globalToLocalX","py","globalToLocalY","checkBoundsRect","checkBoundsSprite","onDragUpdate","justOver","delay","overDuration","justOut","enableDrag","lockCenter","pixelPerfect","alphaThreshold","disableDrag","onDragStart$dispatch","grid","boundsFluid","scaleFluidInversed","onDragStop$dispatch","setDragLock","allowHorizontal","allowVertical","enableSnap","onDrag","onRelease","disableSnap","Component","Angle","wrapAngle","Animation","play","frameRate","loop","killOnComplete","animations","AutoCull","autoCull","inCamera","checkWorldBounds","Bounds","alignTo","BringToTop","Core","install","components","previousPosition","Events","PhysicsBody","AnimationManager","LoadTexture","FixedToCamera","previousRotation","fresh","_exists","P2JS","removeFromWorld","customRender","Crop","cropRect","_crop","updateCrop","resetFrame","_frame","Delta","Destroy","onDestroy$dispatch","removeFrom","Video","onChangeSource","resizeFrame","BitmapText","_glyphs","_parent","_onDestroy","_onAddedToGroup","_onRemovedFromGroup","_onRemovedFromWorld","_onKilled","_onRevived","_onEnterBounds","_onOutOfBounds","_onInputOver","_onInputOut","_onInputDown","_onInputUp","_onDragStart","_onDragUpdate","_onDragStop","_onAnimationStart","_onAnimationComplete","_onAnimationLoop","onRemovedFromWorld","onKilled","onRevived","onOutOfBounds","onEnterBounds","onInputOver","onInputOut","onInputDown","onInputUp","onDragStart","onDragStop","onAnimationStart","onAnimationComplete","onAnimationLoop","backing","_fixedToCamera","Health","health","maxHealth","damage","kill","setHealth","heal","InCamera","InputEnabled","InWorld","outOfCameraBoundsKill","_outOfBoundsFired","onEnterBounds$dispatch","onOutOfBounds$dispatch","outOfBoundsKill","inWorld","LifeSpan","lifespan","physicsElapsedMS","revive","onRevived$dispatch","onKilled$dispatch","stopAnimation","BitmapData","hasFrameData","loadFrameData","getFrameData","frameData","Tilemap","TilemapLayer","img","base","trimmed","spriteSourceSizeX","spriteSourceSizeY","sourceSizeW","sourceSizeH","refreshTexture","frameName","Overlap","overlap","_reset","Reset","ScaleMinMax","scaleMin","scaleMax","checkTransform","setScaleMinMax","Smoothed","existing","weapon","Weapon","createBullets","creature","mesh","Creature","tween","physicsGroup","audio","connect","audioSprite","addSprite","tileSprite","rope","Rope","text","Text","overFrame","outFrame","downFrame","upFrame","Button","emitter","maxParticles","Arcade","Emitter","retroFont","font","characterWidth","characterHeight","chars","charsPerRow","xSpacing","ySpacing","xOffset","yOffset","RetroFont","bitmapText","tilemap","tileWidth","tileHeight","addToCache","uuid","addRenderTexture","video","url","bitmapData","addBitmapData","Tween","preUpdatePhysics","preUpdateLifeSpan","preUpdateInWorld","preUpdateCore","_onOverFrame","_onOutFrame","_onDownFrame","_onUpFrame","onOverSound","onOutSound","onDownSound","onUpSound","onOverSoundMarker","onOutSoundMarker","onDownSoundMarker","onUpSoundMarker","onOverMouseOnly","justReleasedPreventsOver","freezeFrames","forceOut","setFrames","onInputOverHandler","onInputOutHandler","onInputDownHandler","onInputUpHandler","removedFromWorld","STATE_OVER","STATE_OUT","STATE_DOWN","STATE_UP","clearFrames","setStateFrame","switchImmediately","frameKey","changeStateFrame","setStateSound","marker","soundKey","markerKey","Sound","AudioSprite","playStateSound","setSounds","overSound","overMarker","downSound","downMarker","outSound","outMarker","upSound","upMarker","setOverSound","setOutSound","setDownSound","setUpSound","changedUp","deviceReadyAt","initialized","desktop","iOSVersion","node","nodeWebkit","electron","ejecta","crosswalk","chromeOS","linux","macOS","windows","windowsPhone","canvasBitBltShift","file","fileSystem","localStorage","worker","css3D","typedArray","vibration","getUserMedia","quirksMode","arora","chromeVersion","epiphany","firefox","firefoxVersion","ie","ieVersion","trident","tridentVersion","edge","mobileSafari","midori","opera","safari","safariVersion","webApp","silk","audioData","ogg","opus","mp3","wav","m4a","webm","dolby","oggVideo","h264Video","mp4Video","webmVideo","vp9Video","hlsVideo","iPhone","iPhone4","iPad","pixelRatio","littleEndian","LITTLE_ENDIAN","support32bit","fullscreen","requestFullscreen","cancelFullscreen","fullscreenKeyboard","onInitialized","nonPrimer","readyCheck","_readyCheck","_monitor","_queue","readyState","setTimeout","_initialize","_checkOS","userAgent","test","vita","kindle","match","RegExp","$1","_checkFeatures","getItem","error","WebGLRenderingContext","compatMode","webkitGetUserMedia","mozGetUserMedia","msGetUserMedia","oGetUserMedia","URL","webkitURL","mozURL","msURL","_checkInput","documentElement","maxTouchPoints","msPointerEnabled","pointerEnabled","_checkFullScreenSupport","fs","cfs","Element","_checkBrowser","$3","process","require","versions","_checkVideo","videoElement","canPlayType","_checkAudio","audioElement","major","minor","$2","_checkDevice","Int8Array","_checkIsLittleEndian","Uint8ClampedArray","Int32Array","_checkIsUint8ClampedImageData","vibrate","webkitVibrate","mozVibrate","msVibrate","elem","ctx","createImageData","_checkCSS3D","has3d","el","transforms","webkitTransform","OTransform","msTransform","MozTransform","insertBefore","getComputedStyle","getPropertyValue","canPlayAudio","canPlayVideo","isConsoleOpen","profile","profileEnd","isAndroidStockBrowser","matches","skipPool","display","backgroundColor","msTouchAction","overflowHidden","getElementById","overflow","appendChild","parentNode","translateX","translateY","skewX","skewY","setSmoothingEnabled","vendor","prefix","getSmoothingEnabled","setImageRenderingCrisp","types","msInterpolationMode","setImageRenderingBicubic","forceSetTimeOut","vendors","requestAnimationFrame","cancelAnimationFrame","_isSetTimeOut","_onLoop","_timeOutID","updateSetTimeout","updateRAF","rafTime","timeToCall","clearTimeout","isSetTimeOut","isRAF","PI2","fuzzyEqual","epsilon","fuzzyLessThan","fuzzyGreaterThan","fuzzyCeil","val","fuzzyFloor","average","sum","shear","snapTo","gap","snapToFloor","snapToCeil","roundTo","place","pow","floorTo","ceilTo","angleBetween","angleBetweenY","angleBetweenPoints","point1","point2","angleBetweenPointsY","reverseAngle","angleRad","normalizeAngle","maxAdd","minSub","wrapValue","diff","isOdd","isEven","minProperty","maxProperty","radians","linearInterpolation","k","bezierInterpolation","bernstein","catmullRomInterpolation","catmullRom","p0","factorial","res","p3","v0","v1","t2","t3","difference","roundAwayFromZero","sinCosGenerator","sinAmplitude","cosAmplitude","frequency","frq","cosTable","sinTable","distanceSq","distancePow","clampBottom","within","mapLinear","smoothstep","smootherstep","sign","percent","degreeToRadiansFactor","radianToDegreesFactor","degrees","seeds","s0","sow","charCodeAt","integer","real","integerInRange","realInRange","normal","pick","ary","weightedPick","timestamp","parseFloat","QuadTree","maxObjects","maxLevels","objects","nodes","_empty","subWidth","subHeight","populate","populateHandler","insert","retrieve","returnObjects","netNoop","isDisabled","getHostName","checkDomainName","updateQueryString","getQueryString","decodeURI","prevTime","physicsElapsed","_desiredFps","suggestedFps","advancedTiming","frames","fps","fpsMin","fpsMax","msMin","msMax","pauseDuration","timeExpected","Timer","_frameCount","_elapsedAccumulator","_started","_timeLastSecond","_pauseStarted","_justResumed","_timers","timer","autoDestroy","previousDateNow","updateAdvancedTiming","updateTimers","_pause","_resume","elapsedSince","since","elapsedSecondsSince","running","expired","onComplete","nextTick","timeCap","_pauseTotal","_now","_marked","_diff","_newTick","MINUTE","SECOND","HALF","QUARTER","repeatCount","tick","TimerEvent","clearEvents","pendingDelete","clearPendingEvents","adjustEvents","baseTime","ms","currentFrame","currentAnim","updateIfVisible","isLoaded","_frameData","_anims","_outputFrames","anim","updateFrameData","copyFrameData","useNumericIndex","getFrameIndexes","validateFrames","checkFrameName","isPlaying","getAnimation","refreshFrame","isPaused","getFrame","getFrameByName","_frameIndex","_frames","loopCount","isFinished","_pauseStartTime","_frameDiff","_frameSkip","onStart","onUpdate","onLoop","isReversed","_timeLastFrame","_timeNextFrame","updateCurrentFrame","onAnimationStart$dispatch","reversed","reverseOnce","useLocalFrameIndex","frameIndex","dispatchComplete","onAnimationComplete$dispatch","onAnimationLoop$dispatch","signalUpdate","fromPlay","generateFrameNames","suffix","zeroPad","Frame","rotated","rotationDirection","spriteSourceSizeW","spriteSourceSizeH","setTrim","actualWidth","actualHeight","destX","destY","destWidth","destHeight","getRect","FrameData","_frameNames","addFrame","getFrameRange","getFrames","AnimationParser","spriteSheet","frameWidth","frameHeight","frameMax","margin","spacing","row","column","JSONData","json","newFrame","filename","sourceSize","spriteSourceSize","JSONDataPyxel","signature","tileheight","tilewidth","JSONDataHash","XMLData","xml","getElementsByTagName","frameX","frameY","autoResolveURL","_cache","binary","bitmapFont","_urlMap","_urlResolver","_urlTemp","onSoundUnlock","_cacheMap","TEXTURE","SOUND","PHYSICS","BINARY","BITMAPFONT","JSON","XML","SHADER","RENDER_TEXTURE","addDefaultImage","addMissingImage","addCanvas","addImage","checkImageKey","removeImage","_resolveURL","addSound","audioTag","decoded","isDecoding","touchLocked","addText","addPhysicsData","addTilemap","mapData","addBinary","binaryData","textureFrame","addBitmapFont","atlasData","atlasType","LoaderParser","jsonBitmapFont","xmlBitmapFont","addJSON","addXML","addVideo","isBlob","addShader","addSpriteSheet","addTextureAtlas","TEXTURE_ATLAS_XML_STARLING","TEXTURE_ATLAS_JSON_PYXEL","reloadSound","getSound","reloadSoundComplete","updateSound","decodedSound","isSoundDecoded","isSoundReady","checkKey","checkURL","checkCanvasKey","checkTextureKey","checkSoundKey","checkTextKey","checkPhysicsKey","checkTilemapKey","checkBinaryKey","checkBitmapDataKey","checkBitmapFontKey","checkJSONKey","checkXMLKey","checkVideoKey","checkShaderKey","checkRenderTextureKey","full","getTextureFrame","getSoundData","getText","getPhysicsData","fixtureKey","fixtures","fixture","getTilemapData","getBinary","getBitmapData","getBitmapFont","getJSON","getXML","getVideo","getShader","getRenderTexture","getBaseTexture","getFrameCount","getFrameByIndex","getPixiTexture","getPixiBaseTexture","getURL","getKeys","removeCanvas","removeFromPixi","removeSound","removeText","removePhysics","removeTilemap","removeBinary","removeBitmapData","removeBitmapFont","removeJSON","removeXML","removeVideo","removeShader","removeRenderTexture","removeSpriteSheet","removeTextureAtlas","atlas","baseURL","isLoading","preloadSprite","path","onLoadStart","onLoadComplete","onPackComplete","onFileStart","onFileComplete","onFileError","useXDomainRequest","_warnedAboutXDomainRequest","enableParallel","maxParallelDownloads","_withSyncPointDepth","_fileList","_flightQueue","_processingHead","_fileLoadStarted","_totalPackCount","_totalFileCount","_loadedPackCount","_loadedFileCount","TEXTURE_ATLAS_JSON_ARRAY","TEXTURE_ATLAS_JSON_HASH","PHYSICS_LIME_CORONA_JSON","PHYSICS_PHASER_JSON","setPreloadSprite","checkKeyExists","getAssetIndex","bestFound","loaded","loading","getAsset","fileIndex","addToFileList","properties","overwrite","extension","syncPoint","currentFile","replaceInFileList","pack","images","urls","script","spritesheet","autoDecode","noAudio","jsonURL","jsonData","audiosprite","loadEvent","asBlob","CSV","TILED_JSON","LIME_CORONA_JSON","textureURL","atlasURL","parseXml","atlasJSONArray","atlasJSONHash","atlasXML","withSyncPoint","addSyncPoint","asset","removeFile","updateProgress","processLoadQueue","finishedLoading","requestUrl","requestObject","progress","syncblock","inflightLimit","processPack","loadFile","abnormal","asyncComplete","errorMessage","packData","transformUrl","xhrLoad","fileComplete","loadImageTag","getAudioURL","usingWebAudio","usingAudioTag","loadAudioTag","fileError","getVideoURL","loadVideoTag","jsonLoadComplete","xmlLoadComplete","csvLoadComplete","onload","onerror","controls","autoplay","videoLoadEvent","canplay","Audio","playThroughEvent","XDomainRequest","xhrLoadWithXDR","xhr","XMLHttpRequest","open","responseType","status","message","send","timeout","ontimeout","onprogress","videoType","uri","lastIndexOf","audioType","reason","loadNext","responseText","response","decode","language","defer","head","contentType","domparser","DOMParser","parseFromString","ActiveXObject","async","loadXML","totalLoadedFiles","totalLoadedPacks","progressFloat","info","common","getAttribute","lineHeight","letters","charCode","xAdvance","kerning","kernings","second","finalizeBitmapFont","_face","_size","_lineHeight","letter","_id","_xoffset","_yoffset","_xadvance","_second","_first","_amount","bitmapFontData","dom","minWidth","maxWidth","minHeight","maxHeight","forceLandscape","forcePortrait","incorrectOrientation","_pageAlignHorizontally","_pageAlignVertically","onOrientationChange","enterIncorrectOrientation","leaveIncorrectOrientation","fullScreenTarget","_createdFullScreenTarget","onFullScreenInit","onFullScreenChange","onFullScreenError","screenOrientation","getScreenOrientation","scaleFactorInversed","aspectRatio","sourceAspectRatio","windowConstraints","compatibility","supportsFullScreen","orientationFallback","noMargins","scrollTo","forceMinimumDocumentHeight","canExpandParent","clickTrampoline","_scaleMode","NO_SCALE","_fullScreenScaleMode","parentIsWindow","parentScaleFactor","trackParentInterval","onSizeChange","onResize","onResizeContext","_pendingScaleMode","_fullScreenRestore","_gameSize","_userScaleFactor","_userScaleTrim","_lastUpdate","_updateThrottle","_updateThrottleReset","_parentBounds","_tempBounds","_lastReportedCanvasSize","_lastReportedGameSize","_booted","setupScale","EXACT_FIT","SHOW_ALL","RESIZE","USER_SCALE","compat","_orientationChange","orientationChange","_windowResize","windowResize","_fullScreenChange","fullScreenChange","_fullScreenError","fullScreenError","_gameResumed","setGameSize","FlexGrid","fullScreenScaleMode","getParentBounds","visualBounds","newWidth","newHeight","updateDimensions","queueUpdate","currentScaleMode","setUserScale","hScale","vScale","hTrim","vTrim","setResizeCallback","signalSizeChange","setMinMax","prevThrottle","prevWidth","prevHeight","boundsChanged","orientationChanged","updateOrientationState","updateLayout","throttle","updateScalingAndBounds","forceOrientation","classifyOrientation","orientation","previousOrientation","previouslyIncorrect","isLandscape","isPortrait","changed","correctnessChanged","scrollTop","reflowGame","setMaximum","setExactFit","isFullScreen","boundingParent","setShowAll","resetCanvas","reflowCanvas","layoutBounds","clientRect","getBoundingClientRect","parentRect","offsetParent","wc","windowBounds","alignCanvas","parentBounds","canvasBounds","currentEdge","targetEdge","marginLeft","marginRight","marginTop","marginBottom","pageAlignHorizontally","pageAlignVertically","cssWidth","cssHeight","expanding","multiplier","createFullScreenTarget","fsTarget","background","startFullScreen","allowTrampoline","cleanupCreatedTarget","initData","targetElement","ALLOW_KEYBOARD_INPUT","stopFullScreen","prepScreenMode","enteringFullscreen","createdTarget","targetWidth","targetHeight","scaleSprite","letterBox","scaleX1","scaleY1","scaleX2","scaleY2","scaleOnWidth","debugNoop","soundInfo","cameraInfo","spriteInputInfo","inputInfo","spriteBounds","ropeSegments","spriteInfo","spriteCoords","lineInfo","pixel","geom","rectangle","quadTree","bodyInfo","box2dWorld","box2dBody","box","scrollY","scrollLeft","scrollX","clientTop","clientLeft","cushion","calibrate","coords","getAspectRatio","inLayoutViewport","primaryFallback","screen","mozOrientation","msOrientation","matchMedia","documentBounds","pageXOffset","pageYOffset","treatAsDesktop","clientWidth","clientHeight","offsetWidth","scrollWidth","offsetHeight","scrollHeight","list","getByKey","randomIndex","removeRandomItem","shuffle","transposeMatrix","sourceRowCount","sourceColCount","rotateMatrix","findClosest","arr","NaN","low","high","numberArray","numberArrayStep","LinkedList","prev","entity","bmd","palettes",1,2,3,4,5,6,7,8,9,"A","B","C","D","E","PALETTE_ARNE","PALETTE_JMP","PALETTE_CGA","PALETTE_C64","PALETTE_JAPANESE_MACHINE","pixelWidth","pixelHeight","palette","manager","boundsCustom","boundsFull","boundsNone","positionCustom","positionFluid","positionFull","positionNone","scaleCustom","scaleFluid","scaleFull","scaleNone","customWidth","customHeight","customOffsetX","customOffsetY","ratioH","ratioV","layers","createCustomLayer","layer","FlexLayer","createFluidLayer","createFullLayer","createFixedLayer","persist","fitSprite","topLeft","topMiddle","topRight","bottomLeft","bottomMiddle","bottomRight","packPixel","unpackPixel","hsl","hsv","createColor","RGBtoHSL","RGBtoHSV","fromRGBA","toRGBA","HSLtoRGB","q","hueToColor","HSVtoRGB","color32","getColor","getColor32","RGBtoString","componentToHex","hexToRGB","hexToColor","exec","webToColor","web","tempColor","getRGB","HSVColorWheel","HSLColorWheel","interpolateColor","color1","color2","steps","currentStep","src1","src2","red","green","blue","interpolateColorWithRGB","or","og","ob","interpolateRGB","r1","g1","r2","g2","getRandomColor","getWebRGB","getAlpha","getAlphaFloat","getRed","getGreen","getBlue","blendNormal","blendLighten","blendDarken","blendMultiply","blendAverage","blendAdd","blendSubtract","blendDifference","blendNegation","blendScreen","blendExclusion","blendOverlay","blendSoftLight","blendHardLight","blendColorDodge","blendColorBurn","blendLinearDodge","blendLinearBurn","blendLinearLight","blendVividLight","blendPinLight","blendHardMix","blendReflect","blendGlow","blendPhoenix","arcade","ninja","box2d","chipmunk","matter","NINJA","BOX2D","CHIPMUNK","MATTERJS","Ninja","P2","Matter","startSystem","system","Box2D","enableAABB","emitters","ID","POLY","RECT","CIRC","ELIP","RREC"],"mappings":"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"} \ No newline at end of file +{"version":3,"sources":["phaser-minimum.js"],"names":["root","this","PIXI","game","WEBGL_RENDERER","CANVAS_RENDERER","VERSION","_UID","Float32Array","Uint16Array","Uint32Array","ArrayBuffer","Array","PI_2","Math","PI","RAD_TO_DEG","DEG_TO_RAD","RETINA_PREFIX","DisplayObject","position","Point","scale","pivot","rotation","alpha","visible","hitArea","renderable","parent","stage","worldAlpha","worldTransform","Matrix","worldPosition","worldScale","worldRotation","filterArea","_sr","_cr","_bounds","Rectangle","_currentBounds","_mask","_cacheAsBitmap","_cacheIsDirty","prototype","constructor","destroy","children","i","length","_destroyCachedSprite","updateTransform","p","world","a","b","c","d","tx","ty","pt","wt","rotationCache","sin","cos","x","y","set","sqrt","atan2","transformCallback","call","transformCallbackContext","setStageReference","preUpdate","generateTexture","resolution","scaleMode","renderer","bounds","getLocalBounds","renderTexture","RenderTexture","width","height","_tempMatrix","render","updateCache","_generateCachedSprite","toGlobal","apply","toLocal","from","applyInverse","_renderCachedSprite","renderSession","_cachedSprite","gl","Sprite","_renderWebGL","_renderCanvas","max","ceil","texture","resize","tempFilters","_filters","filters","anchor","displayObjectUpdateTransform","Object","defineProperties","get","value","worldVisible","item","mask","isMask","isArray","passes","filterPasses","j","push","_filterBlock","target","blendMode","blendModes","MULTIPLY","NORMAL","cacheAsBitmap","DisplayObjectContainer","ignoreChildInput","create","defineProperty","_width","_height","addChild","child","addChildAt","index","removeChild","splice","Error","swapChildren","child2","index1","getChildIndex","index2","indexOf","setChildIndex","currentIndex","getChildAt","removeChildAt","removeStageReference","undefined","removeChildren","beginIndex","endIndex","begin","end","range","removed","displayObjectContainerUpdateTransform","getBounds","EmptyRectangle","childBounds","childMaxX","childMaxY","minX","Infinity","minY","maxX","maxY","childVisible","matrixCache","identityMatrix","spriteBatch","flush","filterManager","pushFilter","stop","maskManager","pushMask","start","popMask","popFilter","Texture","emptyTexture","tint","cachedTint","tintedTexture","shader","exists","baseTexture","hasLoaded","onTextureUpdate","frame","setTexture","destroyBase","skipRender","valid","matrix","w0","w1","h0","h1","temp","x1","y1","x2","y2","x3","y3","x4","y4","crop","currentBlendMode","context","globalCompositeOperation","blendModesCanvas","globalAlpha","smoothProperty","scaleModes","LINEAR","dx","trim","dy","shakeX","shakeY","roundPixels","setTransform","cw","ch","requiresReTint","CanvasTinter","getTintedTexture","drawImage","cx","cy","source","SpriteBatch","textureThing","ready","initWebGL","fastSpriteBatch","WebGLFastSpriteBatch","setContext","shaderManager","setShader","fastShader","transform","isRotated","childTransform","hex2rgb","hex","rgb2hex","rgb","canUseNewCanvasBlendModes","document","pngHead","pngEnd","magenta","Image","src","yellow","canvas","CanvasPool","getContext","getImageData","data","remove","getNextPowerOfTwo","number","result","isPowerOfTwo","idx","getFirst","container","createElement","pool","removeByCanvas","getTotal","getFree","initDefaultShaders","CompileVertexShader","shaderSrc","_CompileShader","VERTEX_SHADER","CompileFragmentShader","FRAGMENT_SHADER","shaderType","join","createShader","shaderSource","compileShader","getShaderParameter","COMPILE_STATUS","window","console","log","getShaderInfoLog","compileProgram","vertexSrc","fragmentSrc","fragmentShader","vertexShader","shaderProgram","createProgram","attachShader","linkProgram","getProgramParameter","LINK_STATUS","getProgramInfoLog","PixiShader","program","textureCount","firstRun","dirty","attributes","init","defaultVertexSrc","useProgram","uSampler","getUniformLocation","projectionVector","offsetVector","dimensions","aVertexPosition","getAttribLocation","aTextureCoord","colorAttribute","key","uniforms","uniformLocation","initUniforms","uniform","type","_init","initSampler2D","glMatrix","glValueLength","glFunc","uniformMatrix2fv","uniformMatrix3fv","uniformMatrix4fv","activeTexture","bindTexture","TEXTURE_2D","_glTextures","id","textureData","magFilter","minFilter","wrapS","CLAMP_TO_EDGE","wrapT","format","LUMINANCE","RGBA","repeat","REPEAT","pixelStorei","UNPACK_FLIP_Y_WEBGL","flipY","border","texImage2D","UNSIGNED_BYTE","texParameteri","TEXTURE_MAG_FILTER","TEXTURE_MIN_FILTER","TEXTURE_WRAP_S","TEXTURE_WRAP_T","uniform1i","syncUniforms","transpose","z","w","_dirty","instances","updateTexture","deleteProgram","PixiFastShader","uMatrix","aPositionCoord","aScale","aRotation","StripShader","translationMatrix","attribute","PrimitiveShader","tintColor","ComplexPrimitiveShader","color","glContexts","WebGLRenderer","defaultRenderer","transparent","autoResize","preserveDrawingBuffer","clearBeforeRender","view","_contextOptions","antialias","premultipliedAlpha","stencil","projection","offset","WebGLShaderManager","WebGLSpriteBatch","WebGLMaskManager","WebGLFilterManager","stencilManager","WebGLStencilManager","blendModeManager","WebGLBlendModeManager","drawCount","initContext","mapBlendModes","glContextId","disable","DEPTH_TEST","CULL_FACE","enable","BLEND","contextLost","viewport","bindFramebuffer","FRAMEBUFFER","clearColor","_bgColor","r","g","clear","COLOR_BUFFER_BIT","camera","_shake","renderDisplayObject","displayObject","buffer","setBlendMode","style","createTexture","UNPACK_PREMULTIPLY_ALPHA_WEBGL","NEAREST","mipmap","LINEAR_MIPMAP_LINEAR","NEAREST_MIPMAP_NEAREST","generateMipmap","_powerOf2","blendModesWebGL","modes","ONE","ONE_MINUS_SRC_ALPHA","ADD","SRC_ALPHA","DST_ALPHA","DST_COLOR","SCREEN","OVERLAY","DARKEN","LIGHTEN","COLOR_DODGE","COLOR_BURN","HARD_LIGHT","SOFT_LIGHT","DIFFERENCE","EXCLUSION","HUE","SATURATION","COLOR","LUMINOSITY","blendModeWebGL","blendFunc","maskData","WebGLGraphics","updateGraphics","_webGL","pushStencil","popStencil","stencilStack","reverse","count","graphics","webGLData","bindGraphics","STENCIL_TEST","STENCIL_BUFFER_BIT","level","colorMask","stencilFunc","ALWAYS","stencilOp","KEEP","INVERT","mode","drawElements","TRIANGLE_FAN","indices","UNSIGNED_SHORT","EQUAL","DECR","INCR","TRIANGLE_STRIP","_currentGraphics","complexPrimitiveShader","uniform1f","toArray","uniform2f","uniform3fv","bindBuffer","ARRAY_BUFFER","vertexAttribPointer","FLOAT","ELEMENT_ARRAY_BUFFER","indexBuffer","primitiveShader","pop","maxAttibs","attribState","tempAttribState","stack","defaultShader","stripShader","setAttribs","attribs","attribId","enableVertexAttribArray","disableVertexAttribArray","_currentId","currentShader","vertSize","size","numVerts","numIndices","vertices","positions","colors","lastIndexCount","drawing","currentBatchSize","currentBaseTexture","textures","shaders","sprites","AbstractFilter","vertexBuffer","createBuffer","bufferData","STATIC_DRAW","DYNAMIC_DRAW","sprite","uvs","_uvs","aX","aY","x0","y0","renderTilingSprite","tilingTexture","TextureUvs","h","tilePosition","tileScaleOffset","offsetX","offsetY","scaleX","tileScale","scaleY","TEXTURE0","stride","bufferSubData","subarray","nextTexture","nextBlendMode","nextShader","batchSize","blendSwap","shaderSwap","skip","renderBatch","startIndex","TRIANGLES","deleteBuffer","maxSize","renderSprite","filterStack","texturePool","initShaderBuffers","filterBlock","_filterArea","_previous_stencil_mgr","filter","FilterTexture","padding","frameBuffer","_glFilterTexture","vertexArray","uvBuffer","uvArray","inputTexture","outputTexture","filterPass","applyFilterPass","sizeX","sizeY","currentFilter","colorBuffer","colorArray","createFramebuffer","DEFAULT","framebufferTexture2D","COLOR_ATTACHMENT0","renderBuffer","createRenderbuffer","bindRenderbuffer","RENDERBUFFER","framebufferRenderbuffer","DEPTH_STENCIL_ATTACHMENT","renderbufferStorage","DEPTH_STENCIL","deleteFramebuffer","deleteTexture","CanvasBuffer","clearRect","CanvasMaskManager","save","cacheAlpha","CanvasGraphics","renderGraphicsMask","clip","restore","tintMethod","tintWithMultiply","fillStyle","toString","substr","fillRect","tintWithPerPixel","rgbValues","pixelData","pixels","canHandleAlpha","putImageData","checkInverseAlpha","s1","s2","canUseMultiply","CanvasRenderer","refresh","Phaser","Canvas","getSmoothingPrefix","navigator","isCocoonJS","screencanvas","rgba","removeView","useNew","BaseTexture","complete","naturalWidth","naturalHeight","forceLoaded","unloadFromGPU","updateSourceImage","newSrc","warn","glTexture","fromCanvas","TextureSilentFail","noFrame","isTiling","requiresUpdate","setFrame","onBaseTextureLoaded","_updateUvs","tw","th","textureBuffer","renderWebGL","renderCanvas","tempMatrix","updateBase","identity","translate","append","realResolution","getImage","image","getBase64","getCanvas","toDataURL","webGLPixels","Uint8Array","readPixels","tempCanvas","canvasData","exports","module","define","amd","WheelEventProxy","scaleFactor","deltaMode","_scaleFactor","_deltaMode","originalEvent","GAMES","AUTO","CANVAS","WEBGL","HEADLESS","NONE","LEFT","RIGHT","UP","DOWN","SPRITE","BUTTON","IMAGE","GRAPHICS","TEXT","TILESPRITE","BITMAPTEXT","GROUP","RENDERTEXTURE","TILEMAP","TILEMAPLAYER","EMITTER","POLYGON","BITMAPDATA","CANVAS_FILTER","WEBGL_FILTER","ELLIPSE","SPRITEBATCH","RETROFONT","POINTER","ROPE","CIRCLE","RECTANGLE","LINE","MATRIX","POINT","ROUNDEDRECTANGLE","CREATURE","VIDEO","PENDING_ATLAS","HORIZONTAL","VERTICAL","LANDSCAPE","PORTRAIT","ANGLE_UP","ANGLE_DOWN","ANGLE_LEFT","ANGLE_RIGHT","ANGLE_NORTH_EAST","ANGLE_NORTH_WEST","ANGLE_SOUTH_EAST","ANGLE_SOUTH_WEST","TOP_LEFT","TOP_CENTER","TOP_RIGHT","LEFT_TOP","LEFT_CENTER","LEFT_BOTTOM","CENTER","RIGHT_TOP","RIGHT_CENTER","RIGHT_BOTTOM","BOTTOM_LEFT","BOTTOM_CENTER","BOTTOM_RIGHT","trunc","floor","Function","bind","slice","thisArg","bound","args","boundArgs","concat","arguments","TypeError","F","proto","arg","forEach","fun","t","len","CheapArray","assert","Utils","reverseString","string","split","getProperty","obj","prop","parts","last","l","current","setProperty","chanceRoll","chance","random","randomChoice","choice1","choice2","parseDimension","dimension","f","px","parseInt","innerWidth","innerHeight","pad","str","dir","padlen","right","left","isPlainObject","nodeType","hasOwnProperty","e","extend","options","name","copy","copyIsArray","clone","deep","mixinPrototype","mixin","replace","mixinKeys","keys","to","o","childNodes","cloneNode","Circle","diameter","_diameter","_radius","circumference","out","u","radius","setTo","copyFrom","copyTo","dest","distance","round","output","contains","circumferencePoint","angle","asDegrees","offsetPoint","point","top","bottom","equals","intersects","degToRad","intersectsRectangle","abs","halfWidth","xDist","halfHeight","yDist","xCornerDist","yCornerDist","xCornerDistSq","yCornerDistSq","maxCornerDistSq","Ellipse","normx","normy","Line","fromSprite","startSprite","endSprite","useCenter","center","fromAngle","rotate","rotateAround","line","asSegment","intersectsPoints","reflect","midPoint","centerOn","add","pointOnLine","pointOnSegment","xMin","min","xMax","yMin","yMax","coordinatesOnLine","stepRate","results","sx","sy","err","e2","wrap","a1","a2","b1","b2","c1","c2","denom","uc","ua","ub","rect","bx1","by1","bx2","by2","normalAngle","fromArray","array","pos","newPos","tx1","d1","invert","subtract","multiply","divide","clampX","clamp","clampY","radToDeg","getMagnitude","getMagnitudeSq","setMagnitude","magnitude","normalize","isZero","m","dot","cross","perp","rperp","normalRightHand","negative","multiplyAdd","s","interpolate","project","amt","projectUnit","centroid","points","pointslength","parse","xProp","yProp","Polygon","area","_points","closed","flattened","toNumberArray","flatten","inside","ix","iy","jx","jy","Number","MAX_VALUE","calculateArea","p1","p2","avgHeight","centerX","centerY","floorAll","ceilAll","inflate","containsRect","intersection","intersectsRaw","tolerance","union","randomX","randomY","getPoint","empty","inflatePoint","containsRaw","rx","ry","rw","rh","containsPoint","volume","sameDimensions","aabb","NEGATIVE_INFINITY","POSITIVE_INFINITY","RoundedRectangle","Camera","deadzone","roundPx","atLimit","totalInView","lerp","onShakeComplete","Signal","onFlashComplete","onFadeComplete","fx","_targetPosition","_edge","_position","intensity","duration","horizontal","vertical","shakeBounds","_fxDuration","_fxType","FOLLOW_LOCKON","FOLLOW_PLATFORMER","FOLLOW_TOPDOWN","FOLLOW_TOPDOWN_TIGHT","SHAKE_BOTH","SHAKE_HORIZONTAL","SHAKE_VERTICAL","ENABLE_FX","boot","Graphics","follow","lerpX","lerpY","helper","unfollow","focusOn","setPosition","focusOnXY","shake","force","direction","flash","beginFill","drawRect","endFill","fade","update","updateFX","updateShake","checkBounds","time","elapsedMS","dispatch","rnd","frac","updateTarget","math","linear","setBoundsToWorld","vx","vw","vy","vh","setSize","reset","resetFX","State","make","cache","input","load","sound","state","tweens","particles","physics","preload","loadUpdate","loadRender","preRender","paused","resumed","pauseUpdate","shutdown","StateManager","pendingState","states","_pendingState","_clearWorld","_clearCache","_created","_args","onStateChange","onInitCallback","onPreloadCallback","onCreateCallback","onUpdateCallback","onRenderCallback","onResizeCallback","onPreRenderCallback","onLoadUpdateCallback","onLoadRenderCallback","onPausedCallback","onResumedCallback","onPauseUpdateCallback","onShutDownCallback","onPause","pause","onResume","resume","autoStart","newState","isBooted","callbackContext","clearWorld","clearCache","checkState","restart","dummy","previousStateKey","clearCurrentState","setCurrentState","totalQueuedFiles","totalQueuedPacks","loadComplete","removeAll","debug","link","unlink","_kickstart","getCurrentState","elapsedTime","renderType","_bindings","_prevParams","memorize","_shouldPropagate","active","_boundDispatch","validateListener","listener","fnName","_registerListener","isOnce","listenerContext","priority","binding","prevIndex","_indexOfListener","SignalBinding","_addBinding","execute","n","_priority","cur","_listener","has","addOnce","_destroy","getNumListeners","halt","bindings","paramsArr","forget","dispose","_this","signal","_isOnce","_signal","callCount","params","handlerReturn","detach","isBound","getListener","getSignal","Filter","prevPoint","Date","mouse","date","getFullYear","getMonth","getDate","getHours","getMinutes","getSeconds","sampleRate","iChannel0","iChannel1","iChannel2","iChannel3","setResolution","pointer","toFixed","totalElapsedSeconds","addToWorld","anchorX","anchorY","Plugin","hasPreUpdate","hasUpdate","hasPostUpdate","hasRender","hasPostRender","postRender","PluginManager","plugins","_len","_i","plugin","postUpdate","Stage","disableVisibilityChange","currentRenderOrderID","_hiddenVar","_onChange","config","parseConfig","setBackgroundColor","DOM","getOffset","setUserSelect","setTouchAction","checkVisibility","webkitHidden","mozHidden","msHidden","hidden","event","visibilityChange","addEventListener","onblur","onfocus","onpagehide","onpageshow","device","cocoonJSApp","CocoonJS","App","onSuspended","onActivated","focusLoss","focusGain","gamePaused","gameResumed","Color","valueToColor","updateColor","removeEventListener","Group","addToStage","enableBody","physicsBodyType","Physics","ARCADE","physicsType","alive","ignoreDestroy","pendingDestroy","classType","cursor","inputEnableChildren","onChildInputDown","onChildInputUp","onChildInputOver","onChildInputOut","enableBodyDebug","physicsSortDirection","onDestroy","cursorIndex","fixedToCamera","cameraOffset","hash","_sortProperty","RETURN_NONE","RETURN_TOTAL","RETURN_CHILD","SORT_ASCENDING","SORT_DESCENDING","silent","body","removeFromHash","updateZ","addToHash","inputEnabled","events","onAddedToGroup$dispatch","addAt","addMultiple","moveAll","getAt","createMultiple","quantity","singleKey","singleFrame","align","rows","columns","cellWidth","cellHeight","alignIn","resetCursor","next","previous","swap","child1","bringToTop","getIndex","sendToBack","moveUp","moveDown","xy","getByName","oldChild","newChild","hasProperty","operation","checkProperty","checkAlive","checkVisible","setAll","setAllChildren","checkAll","addAll","property","amount","subAll","multiplyAll","divideAll","callAllExists","callback","existsValue","callbackFromArray","callAll","method","methodLength","contextLength","renderOrderID","predicate","checkExists","ArraySet","forEachExists","iterate","forEachAlive","forEachDead","sort","order","ascendingSortHandler","descendingSortHandler","customSort","sortHandler","returnType","total","getFirstExists","createIfNull","resetChild","getFirstAlive","getFirstDead","loadTexture","getTop","getBottom","getClosestTo","object","tempDistance","getFurthestFrom","countLiving","countDead","getRandom","ArrayUtils","getRandomItem","destroyPhase","onRemovedFromGroup$dispatch","group","destroyTexture","removeBetween","destroyChildren","soft","World","_definedSize","stateChange","setBounds","useBounds","between","Game","physicsConfig","isRunning","raf","net","Device","lockRender","stepping","pendingStep","stepCount","onBlur","onFocus","_paused","_codePaused","currentUpdateID","updatesThisFrame","_deltaTime","_lastCount","_spiraling","fpsProblemNotifier","forceSingleUpdate","_nextFpsNotification","enableDebug","RandomDataGenerator","now","whenReady","seed","ScaleManager","setUpRenderer","GameObjectFactory","GameObjectCreator","Cache","Loader","Time","TweenManager","Input","SoundManager","Particles","Create","Net","Debug","showDebugHeader","RequestAnimationFrame","stopFocus","focus","hideBanner","v","webAudio","chrome","webGL","contextRestored","cocoonJS","smoothed","addToDOM","preventDefault","clearGLTextures","updateLogic","desiredFpsMult","updateRender","slowMotion","desiredFps","slowStep","elapsed","timeStep","enableStep","disableStep","step","removeFromDOM","muteOnPause","setMute","cordova","iOS","unsetMute","hitCanvas","hitContext","moveCallbacks","customCandidateHandler","customCandidateHandlerContext","pollRate","enabled","multiInputOverride","MOUSE_TOUCH_COMBINE","speed","circle","maxPointers","tapRate","doubleTapRate","holdRate","justPressedRate","justReleasedRate","recordPointerHistory","recordRate","recordLimit","pointer1","pointer2","pointer3","pointer4","pointer5","pointer6","pointer7","pointer8","pointer9","pointer10","pointers","activePointer","mousePointer","keyboard","touch","mspointer","gamepad","resetLocked","onDown","onUp","onTap","onHold","minPriorityID","interactiveItems","_localPoint","_pollCounter","_oldPosition","_x","_y","MOUSE_OVERRIDES_TOUCH","TOUCH_OVERRIDES_MOUSE","MAX_POINTERS","Pointer","PointerMode","CURSOR","addPointer","Mouse","Touch","MSPointer","Keyboard","Gamepad","_onClickTrampoline","onClickTrampoline","setInteractiveCandidateHandler","addMoveCallback","deleteMoveCallback","TOUCH","hard","resetSpeed","startPointer","countActivePointers","updatePointer","identifier","move","stopPointer","limit","getPointer","isActive","getPointerFromIdentifier","getPointerFromId","pointerId","getLocalPosition","hitTest","localPoint","TileSprite","graphicsData","fill","shape","processClickTrampolines","mouseDownCallback","mouseUpCallback","mouseOutCallback","mouseOverCallback","mouseWheelCallback","capture","button","wheelDelta","locked","stopOnGameOut","pointerLock","_onMouseDown","_onMouseMove","_onMouseUp","_onMouseOut","_onMouseOver","_onMouseWheel","_wheelEvent","NO_BUTTON","LEFT_BUTTON","MIDDLE_BUTTON","RIGHT_BUTTON","BACK_BUTTON","FORWARD_BUTTON","WHEEL_UP","WHEEL_DOWN","android","onMouseDown","onMouseMove","onMouseUp","_onMouseUpGlobal","onMouseUpGlobal","_onMouseOutGlobal","onMouseOutGlobal","onMouseOut","onMouseOver","onMouseWheel","wheelEvent","mouseMoveCallback","withinGame","leftButton","rightButton","bindEvent","deltaY","requestPointerLock","element","mozRequestPointerLock","webkitRequestPointerLock","_pointerLockChange","pointerLockChange","pointerLockElement","mozPointerLockElement","webkitPointerLockElement","releasePointerLock","exitPointerLock","mozExitPointerLock","webkitExitPointerLock","_stubsGenerated","makeBinder","detail","deltaX","wheelDeltaX","deltaZ","pointerDownCallback","pointerMoveCallback","pointerUpCallback","_onMSPointerDown","_onMSPointerMove","_onMSPointerUp","_onMSPointerUpGlobal","_onMSPointerOut","_onMSPointerOver","onPointerDown","onPointerMove","onPointerUp","onPointerUpGlobal","onPointerOut","onPointerOver","pointerType","DeviceButton","buttonCode","isDown","isUp","timeDown","timeUp","repeats","altKey","shiftKey","ctrlKey","onFloat","padFloat","justPressed","justReleased","pointerMode","CONTACT","middleButton","backButton","forwardButton","eraserButton","ERASER_BUTTON","_holdSent","_history","_nextDrop","_stateReset","clientX","clientY","pageX","pageY","screenX","screenY","rawMovementX","rawMovementY","movementX","movementY","isMouse","previousTapTime","totalTouches","msSinceLastClick","targetObject","interactiveCandidates","positionDown","positionUp","_clickTrampolines","_trampolineTargetObject","resetButtons","processButtonsDown","buttons","processButtonsUp","updateButtons","down","toLowerCase","totalActivePointers","_touchedHandler","processInteractiveObjects","shift","fromClick","pollLocked","mozMovementX","webkitMovementX","mozMovementY","webkitMovementY","isDragged","highestRenderOrderID","highestInputPriorityID","candidateTarget","currentNode","first","checked","validForInput","checkPointerDown","checkPointerOver","priorityID","swapTarget","newTarget","_pointerOutHandler","_pointerOverHandler","leave","currentPointers","addClickTrampoline","callbackArgs","trampolines","trampoline","_releasedHandler","resetMovement","touchLockCallbacks","touchStartCallback","touchMoveCallback","touchEndCallback","touchEnterCallback","touchLeaveCallback","touchCancelCallback","_onTouchStart","_onTouchMove","_onTouchEnd","_onTouchEnter","_onTouchLeave","_onTouchCancel","onTouchStart","onTouchMove","onTouchEnd","onTouchEnter","onTouchLeave","onTouchCancel","consumeDocumentTouches","_documentTouchMove","addTouchLockCallback","onEnd","removeTouchLockCallback","cb","changedTouches","InputHandler","useHandCursor","_setHandCursor","allowHorizontalDrag","allowVerticalDrag","snapOffset","snapOnDrag","snapOnRelease","snapX","snapY","snapOffsetX","snapOffsetY","pixelPerfectOver","pixelPerfectClick","pixelPerfectAlpha","draggable","boundsRect","boundsSprite","scaleLayer","dragOffset","dragFromCenter","dragStopBlocksInputUp","dragStartPoint","dragDistanceThreshold","dragTimeThreshold","downPoint","snapPoint","_dragPoint","_dragPhase","_pendingDrag","_dragTimePass","_dragDistancePass","_wasEnabled","_tempPoint","_pointerData","camX","camY","isOver","isOut","timeOver","timeOut","downDuration","onAddedToGroup","addedToGroup","onRemovedFromGroup","removedFromGroup","flagged","highestID","highestRenderID","includePixelPerfect","isPixelPerfect","pointerX","pointerY","pointerDown","pointerUp","pointerTimeDown","pointerTimeUp","pointerOver","pointerOut","pointerTimeOver","pointerTimeOut","pointerDragged","fastTest","checkPixel","_dx","_dy","startDrag","_draggedPointerID","updateDrag","sendEvent","onInputOver$dispatch","onInputOut$dispatch","onInputDown$dispatch","dragTimeElapsed","onInputUp$dispatch","stopDrag","fromStart","globalToLocalX","py","globalToLocalY","checkBoundsRect","checkBoundsSprite","onDragUpdate","justOver","delay","overDuration","justOut","enableDrag","lockCenter","pixelPerfect","alphaThreshold","disableDrag","onDragStart$dispatch","grid","boundsFluid","scaleFluidInversed","onDragStop$dispatch","setDragLock","allowHorizontal","allowVertical","enableSnap","onDrag","onRelease","disableSnap","Component","Angle","wrapAngle","Animation","play","frameRate","loop","killOnComplete","animations","AutoCull","autoCull","inCamera","checkWorldBounds","Bounds","alignTo","BringToTop","Core","install","components","previousPosition","Events","PhysicsBody","AnimationManager","LoadTexture","FixedToCamera","previousRotation","fresh","_exists","P2JS","removeFromWorld","customRender","Crop","cropRect","_crop","updateCrop","resetFrame","_frame","Delta","Destroy","onDestroy$dispatch","removeFrom","Video","onChangeSource","resizeFrame","BitmapText","_glyphs","_parent","_onDestroy","_onAddedToGroup","_onRemovedFromGroup","_onRemovedFromWorld","_onKilled","_onRevived","_onEnterBounds","_onOutOfBounds","_onInputOver","_onInputOut","_onInputDown","_onInputUp","_onDragStart","_onDragUpdate","_onDragStop","_onAnimationStart","_onAnimationComplete","_onAnimationLoop","onRemovedFromWorld","onKilled","onRevived","onOutOfBounds","onEnterBounds","onInputOver","onInputOut","onInputDown","onInputUp","onDragStart","onDragStop","onAnimationStart","onAnimationComplete","onAnimationLoop","backing","_fixedToCamera","Health","health","maxHealth","damage","kill","setHealth","heal","InCamera","InputEnabled","InWorld","outOfCameraBoundsKill","_outOfBoundsFired","onEnterBounds$dispatch","onOutOfBounds$dispatch","outOfBoundsKill","inWorld","LifeSpan","lifespan","physicsElapsedMS","revive","onRevived$dispatch","onKilled$dispatch","stopAnimation","BitmapData","hasFrameData","loadFrameData","getFrameData","frameData","Tilemap","TilemapLayer","img","base","trimmed","spriteSourceSizeX","spriteSourceSizeY","sourceSizeW","sourceSizeH","refreshTexture","frameName","Overlap","overlap","_reset","Reset","ScaleMinMax","scaleMin","scaleMax","checkTransform","setScaleMinMax","Smoothed","existing","weapon","Weapon","createBullets","creature","mesh","Creature","tween","physicsGroup","audio","connect","audioSprite","addSprite","tileSprite","rope","Rope","text","Text","overFrame","outFrame","downFrame","upFrame","Button","emitter","maxParticles","Arcade","Emitter","retroFont","font","characterWidth","characterHeight","chars","charsPerRow","xSpacing","ySpacing","xOffset","yOffset","RetroFont","bitmapText","tilemap","tileWidth","tileHeight","addToCache","uuid","addRenderTexture","video","url","bitmapData","addBitmapData","Tween","preUpdatePhysics","preUpdateLifeSpan","preUpdateInWorld","preUpdateCore","_onOverFrame","_onOutFrame","_onDownFrame","_onUpFrame","onOverSound","onOutSound","onDownSound","onUpSound","onOverSoundMarker","onOutSoundMarker","onDownSoundMarker","onUpSoundMarker","onOverMouseOnly","justReleasedPreventsOver","freezeFrames","forceOut","setFrames","onInputOverHandler","onInputOutHandler","onInputDownHandler","onInputUpHandler","removedFromWorld","STATE_OVER","STATE_OUT","STATE_DOWN","STATE_UP","clearFrames","setStateFrame","switchImmediately","frameKey","changeStateFrame","setStateSound","marker","soundKey","markerKey","Sound","AudioSprite","playStateSound","setSounds","overSound","overMarker","downSound","downMarker","outSound","outMarker","upSound","upMarker","setOverSound","setOutSound","setDownSound","setUpSound","changedUp","deviceReadyAt","initialized","desktop","iOSVersion","node","nodeWebkit","electron","ejecta","crosswalk","chromeOS","linux","macOS","windows","windowsPhone","canvasBitBltShift","file","fileSystem","localStorage","worker","css3D","typedArray","vibration","getUserMedia","quirksMode","arora","chromeVersion","epiphany","firefox","firefoxVersion","ie","ieVersion","trident","tridentVersion","edge","mobileSafari","midori","opera","safari","safariVersion","webApp","silk","audioData","ogg","opus","mp3","wav","m4a","webm","dolby","oggVideo","h264Video","mp4Video","webmVideo","vp9Video","hlsVideo","iPhone","iPhone4","iPad","pixelRatio","littleEndian","LITTLE_ENDIAN","support32bit","fullscreen","requestFullscreen","cancelFullscreen","fullscreenKeyboard","onInitialized","nonPrimer","readyCheck","_readyCheck","_monitor","_queue","readyState","setTimeout","_initialize","_checkOS","userAgent","test","vita","kindle","match","RegExp","$1","_checkFeatures","getItem","error","WebGLRenderingContext","compatMode","webkitGetUserMedia","mozGetUserMedia","msGetUserMedia","oGetUserMedia","URL","webkitURL","mozURL","msURL","_checkInput","documentElement","maxTouchPoints","msPointerEnabled","pointerEnabled","_checkFullScreenSupport","fs","cfs","Element","_checkBrowser","$3","process","require","versions","_checkVideo","videoElement","canPlayType","_checkAudio","audioElement","major","minor","$2","_checkDevice","Int8Array","_checkIsLittleEndian","Uint8ClampedArray","Int32Array","_checkIsUint8ClampedImageData","vibrate","webkitVibrate","mozVibrate","msVibrate","elem","ctx","createImageData","_checkCSS3D","has3d","el","transforms","webkitTransform","OTransform","msTransform","MozTransform","insertBefore","getComputedStyle","getPropertyValue","canPlayAudio","canPlayVideo","isConsoleOpen","profile","profileEnd","isAndroidStockBrowser","matches","skipPool","display","backgroundColor","msTouchAction","overflowHidden","getElementById","overflow","appendChild","parentNode","translateX","translateY","skewX","skewY","setSmoothingEnabled","vendor","prefix","getSmoothingEnabled","setImageRenderingCrisp","types","msInterpolationMode","setImageRenderingBicubic","forceSetTimeOut","vendors","requestAnimationFrame","cancelAnimationFrame","_isSetTimeOut","_onLoop","_timeOutID","updateSetTimeout","updateRAF","rafTime","timeToCall","clearTimeout","isSetTimeOut","isRAF","PI2","fuzzyEqual","epsilon","fuzzyLessThan","fuzzyGreaterThan","fuzzyCeil","val","fuzzyFloor","average","sum","shear","snapTo","gap","snapToFloor","snapToCeil","roundTo","place","pow","floorTo","ceilTo","angleBetween","angleBetweenY","angleBetweenPoints","point1","point2","angleBetweenPointsY","reverseAngle","angleRad","normalizeAngle","maxAdd","minSub","wrapValue","diff","isOdd","isEven","minProperty","maxProperty","radians","linearInterpolation","k","bezierInterpolation","bernstein","catmullRomInterpolation","catmullRom","p0","factorial","res","p3","v0","v1","t2","t3","difference","roundAwayFromZero","sinCosGenerator","sinAmplitude","cosAmplitude","frequency","frq","cosTable","sinTable","distanceSq","distancePow","clampBottom","within","mapLinear","smoothstep","smootherstep","sign","percent","degreeToRadiansFactor","radianToDegreesFactor","degrees","seeds","s0","sow","charCodeAt","integer","real","integerInRange","realInRange","normal","pick","ary","weightedPick","timestamp","parseFloat","QuadTree","maxObjects","maxLevels","objects","nodes","_empty","subWidth","subHeight","populate","populateHandler","insert","retrieve","returnObjects","netNoop","isDisabled","getHostName","checkDomainName","updateQueryString","getQueryString","decodeURI","prevTime","physicsElapsed","_desiredFps","suggestedFps","advancedTiming","frames","fps","fpsMin","fpsMax","msMin","msMax","pauseDuration","timeExpected","Timer","_frameCount","_elapsedAccumulator","_started","_timeLastSecond","_pauseStarted","_justResumed","_timers","timer","autoDestroy","previousDateNow","updateAdvancedTiming","updateTimers","_pause","_resume","elapsedSince","since","elapsedSecondsSince","running","expired","onComplete","nextTick","timeCap","_pauseTotal","_now","_marked","_diff","_newTick","MINUTE","SECOND","HALF","QUARTER","repeatCount","tick","TimerEvent","clearEvents","pendingDelete","clearPendingEvents","adjustEvents","baseTime","ms","currentFrame","currentAnim","updateIfVisible","isLoaded","_frameData","_anims","_outputFrames","anim","updateFrameData","copyFrameData","useNumericIndex","getFrameIndexes","validateFrames","checkFrameName","isPlaying","getAnimation","refreshFrame","isPaused","getFrame","getFrameByName","_frameIndex","_frames","loopCount","isFinished","_pauseStartTime","_frameDiff","_frameSkip","onStart","onUpdate","onLoop","isReversed","_timeLastFrame","_timeNextFrame","updateCurrentFrame","onAnimationStart$dispatch","reversed","reverseOnce","frameId","useLocalFrameIndex","frameIndex","dispatchComplete","onAnimationComplete$dispatch","onAnimationLoop$dispatch","signalUpdate","fromPlay","generateFrameNames","suffix","zeroPad","Frame","rotated","rotationDirection","spriteSourceSizeW","spriteSourceSizeH","setTrim","actualWidth","actualHeight","destX","destY","destWidth","destHeight","getRect","FrameData","_frameNames","addFrame","getFrameRange","getFrames","AnimationParser","spriteSheet","frameWidth","frameHeight","frameMax","margin","spacing","row","column","JSONData","json","newFrame","filename","sourceSize","spriteSourceSize","JSONDataPyxel","signature","tileheight","tilewidth","JSONDataHash","XMLData","xml","getElementsByTagName","frameX","frameY","autoResolveURL","_cache","binary","bitmapFont","_urlMap","_urlResolver","_urlTemp","onSoundUnlock","_cacheMap","TEXTURE","SOUND","PHYSICS","BINARY","BITMAPFONT","JSON","XML","SHADER","RENDER_TEXTURE","addDefaultImage","addMissingImage","MISSING","addCanvas","addImage","checkImageKey","removeImage","_resolveURL","addSound","audioTag","decoded","isDecoding","touchLocked","addText","addPhysicsData","addTilemap","mapData","addBinary","binaryData","textureFrame","addBitmapFont","atlasData","atlasType","LoaderParser","jsonBitmapFont","xmlBitmapFont","addJSON","addXML","addVideo","isBlob","addShader","addSpriteSheet","addTextureAtlas","TEXTURE_ATLAS_XML_STARLING","TEXTURE_ATLAS_JSON_PYXEL","reloadSound","getSound","reloadSoundComplete","updateSound","decodedSound","isSoundDecoded","isSoundReady","checkKey","checkURL","checkCanvasKey","checkTextureKey","checkSoundKey","checkTextKey","checkPhysicsKey","checkTilemapKey","checkBinaryKey","checkBitmapDataKey","checkBitmapFontKey","checkJSONKey","checkXMLKey","checkVideoKey","checkShaderKey","checkRenderTextureKey","full","getTextureFrame","getSoundData","getText","getPhysicsData","fixtureKey","fixtures","fixture","getTilemapData","getBinary","getBitmapData","getBitmapFont","getJSON","getXML","getVideo","getShader","getRenderTexture","getBaseTexture","getFrameCount","getFrameByIndex","getURL","getKeys","removeCanvas","destroyBaseTexture","removeSound","removeText","removePhysics","removeTilemap","removeBinary","removeBitmapData","removeBitmapFont","removeJSON","removeXML","removeVideo","removeShader","removeRenderTexture","removeSpriteSheet","removeTextureAtlas","atlas","baseURL","isLoading","preloadSprite","crossOrigin","path","headers","onLoadStart","onLoadComplete","onPackComplete","onFileStart","onFileComplete","onFileError","useXDomainRequest","_warnedAboutXDomainRequest","enableParallel","maxParallelDownloads","_withSyncPointDepth","_fileList","_flightQueue","_processingHead","_fileLoadStarted","_totalPackCount","_totalFileCount","_loadedPackCount","_loadedFileCount","TEXTURE_ATLAS_JSON_ARRAY","TEXTURE_ATLAS_JSON_HASH","PHYSICS_LIME_CORONA_JSON","PHYSICS_PHASER_JSON","setPreloadSprite","checkKeyExists","getAssetIndex","bestFound","loaded","loading","getAsset","fileIndex","addToFileList","properties","overwrite","extension","syncPoint","currentFile","replaceInFileList","pack","images","urls","script","spritesheet","autoDecode","noAudio","jsonURL","jsonData","audiosprite","loadEvent","asBlob","CSV","TILED_JSON","LIME_CORONA_JSON","textureURL","atlasURL","parseXml","atlasJSONArray","atlasJSONHash","atlasXML","withSyncPoint","addSyncPoint","asset","removeFile","updateProgress","processLoadQueue","finishedLoading","requestUrl","requestObject","progress","syncblock","inflightLimit","processPack","loadFile","abnormal","asyncComplete","errorMessage","packData","transformUrl","xhrLoad","fileComplete","loadImageTag","getAudioURL","usingWebAudio","usingAudioTag","loadAudioTag","fileError","getVideoURL","loadVideoTag","jsonLoadComplete","xmlLoadComplete","csvLoadComplete","onload","onerror","controls","autoplay","videoLoadEvent","canplay","Audio","playThroughEvent","XDomainRequest","xhrLoadWithXDR","xhr","XMLHttpRequest","open","responseType","setRequestHeader","status","message","send","timeout","ontimeout","onprogress","videoType","uri","lastIndexOf","audioType","reason","loadNext","responseText","response","decode","language","defer","head","contentType","domparser","DOMParser","parseFromString","ActiveXObject","async","loadXML","totalLoadedFiles","totalLoadedPacks","progressFloat","info","common","getAttribute","lineHeight","letters","charCode","xAdvance","kerning","kernings","second","finalizeBitmapFont","_face","_size","_lineHeight","letter","_id","_xoffset","_yoffset","_xadvance","_second","_first","_amount","bitmapFontData","dom","minWidth","maxWidth","minHeight","maxHeight","forceLandscape","forcePortrait","incorrectOrientation","_pageAlignHorizontally","_pageAlignVertically","onOrientationChange","enterIncorrectOrientation","leaveIncorrectOrientation","fullScreenTarget","_createdFullScreenTarget","onFullScreenInit","onFullScreenChange","onFullScreenError","screenOrientation","getScreenOrientation","scaleFactorInversed","aspectRatio","sourceAspectRatio","windowConstraints","compatibility","supportsFullScreen","orientationFallback","noMargins","scrollTo","forceMinimumDocumentHeight","canExpandParent","clickTrampoline","_scaleMode","NO_SCALE","_fullScreenScaleMode","parentIsWindow","parentScaleFactor","trackParentInterval","onSizeChange","onResize","onResizeContext","_pendingScaleMode","_fullScreenRestore","_gameSize","_userScaleFactor","_userScaleTrim","_lastUpdate","_updateThrottle","_updateThrottleReset","_parentBounds","_tempBounds","_lastReportedCanvasSize","_lastReportedGameSize","_booted","setupScale","EXACT_FIT","SHOW_ALL","RESIZE","USER_SCALE","compat","_orientationChange","orientationChange","_windowResize","windowResize","_fullScreenChange","fullScreenChange","_fullScreenError","fullScreenError","_gameResumed","setGameSize","FlexGrid","fullScreenScaleMode","getParentBounds","visualBounds","newWidth","newHeight","updateDimensions","queueUpdate","currentScaleMode","setUserScale","hScale","vScale","hTrim","vTrim","setResizeCallback","signalSizeChange","setMinMax","prevThrottle","prevWidth","prevHeight","boundsChanged","orientationChanged","updateOrientationState","updateLayout","throttle","updateScalingAndBounds","forceOrientation","classifyOrientation","orientation","previousOrientation","previouslyIncorrect","isLandscape","isPortrait","changed","correctnessChanged","scrollTop","reflowGame","setMaximum","setExactFit","isFullScreen","boundingParent","setShowAll","resetCanvas","reflowCanvas","layoutBounds","clientRect","getBoundingClientRect","parentRect","offsetParent","wc","windowBounds","alignCanvas","parentBounds","canvasBounds","currentEdge","targetEdge","marginLeft","marginRight","marginTop","marginBottom","pageAlignHorizontally","pageAlignVertically","cssWidth","cssHeight","expanding","multiplier","createFullScreenTarget","fsTarget","background","startFullScreen","allowTrampoline","cleanupCreatedTarget","initData","targetElement","ALLOW_KEYBOARD_INPUT","stopFullScreen","prepScreenMode","enteringFullscreen","createdTarget","targetWidth","targetHeight","scaleSprite","letterBox","scaleX1","scaleY1","scaleX2","scaleY2","scaleOnWidth","debugNoop","soundInfo","cameraInfo","spriteInputInfo","inputInfo","spriteBounds","ropeSegments","spriteInfo","spriteCoords","lineInfo","pixel","geom","rectangle","quadTree","bodyInfo","box2dWorld","box2dBody","box","scrollY","scrollLeft","scrollX","clientTop","clientLeft","cushion","calibrate","coords","getAspectRatio","inLayoutViewport","primaryFallback","screen","mozOrientation","msOrientation","matchMedia","documentBounds","pageXOffset","pageYOffset","treatAsDesktop","clientWidth","clientHeight","offsetWidth","scrollWidth","offsetHeight","scrollHeight","list","getByKey","randomIndex","removeRandomItem","shuffle","transposeMatrix","sourceRowCount","sourceColCount","rotateMatrix","findClosest","arr","NaN","low","high","rotateRight","unshift","rotateLeft","numberArray","numberArrayStep","LinkedList","prev","entity","bmd","palettes","0","1","2","3","4","5","6","7","8","9","A","B","C","D","E","PALETTE_ARNE","PALETTE_JMP","PALETTE_CGA","PALETTE_C64","PALETTE_JAPANESE_MACHINE","pixelWidth","pixelHeight","palette","manager","boundsCustom","boundsFull","boundsNone","positionCustom","positionFluid","positionFull","positionNone","scaleCustom","scaleFluid","scaleFull","scaleNone","customWidth","customHeight","customOffsetX","customOffsetY","ratioH","ratioV","layers","createCustomLayer","layer","FlexLayer","createFluidLayer","createFullLayer","createFixedLayer","persist","fitSprite","topLeft","topMiddle","topRight","bottomLeft","bottomMiddle","bottomRight","packPixel","unpackPixel","hsl","hsv","createColor","RGBtoHSL","RGBtoHSV","fromRGBA","toRGBA","toABGR","HSLtoRGB","q","hueToColor","HSVtoRGB","color32","getColor","getColor32","RGBtoString","componentToHex","hexToRGB","hexToColor","exec","webToColor","web","tempColor","getRGB","HSVColorWheel","HSLColorWheel","interpolateColor","color1","color2","steps","currentStep","src1","src2","red","green","blue","interpolateColorWithRGB","or","og","ob","interpolateRGB","r1","g1","r2","g2","getRandomColor","getWebRGB","getAlpha","getAlphaFloat","getRed","getGreen","getBlue","blendNormal","blendLighten","blendDarken","blendMultiply","blendAverage","blendAdd","blendSubtract","blendDifference","blendNegation","blendScreen","blendExclusion","blendOverlay","blendSoftLight","blendHardLight","blendColorDodge","blendColorBurn","blendLinearDodge","blendLinearBurn","blendLinearLight","blendVividLight","blendPinLight","blendHardMix","blendReflect","blendGlow","blendPhoenix","arcade","ninja","box2d","chipmunk","matter","NINJA","BOX2D","CHIPMUNK","MATTERJS","Ninja","P2","Matter","startSystem","system","Box2D","enableAABB","emitters","ID","POLY","RECT","CIRC","ELIP","RREC"],"mappings":"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","file":"phaser-minimum.min.js"} \ No newline at end of file diff --git a/build/custom/phaser-minimum.min.js b/build/custom/phaser-minimum.min.js index 84526bbd2..c6fcd7760 100644 --- a/build/custom/phaser-minimum.min.js +++ b/build/custom/phaser-minimum.min.js @@ -1,15 +1,15 @@ -/* Phaser v2.5.0 - http://phaser.io - @photonstorm - (c) 2016 Photon Storm Ltd. */ +/* Phaser v2.5.1 - http://phaser.io - @photonstorm - (c) 2016 Photon Storm Ltd. */ -(function(){var a=this,b=b||{};return b.game=null,b.WEBGL_RENDERER=0,b.CANVAS_RENDERER=1,b.VERSION="v2.2.9",b._UID=0,"undefined"!=typeof Float32Array?(b.Float32Array=Float32Array,b.Uint16Array=Uint16Array,b.Uint32Array=Uint32Array,b.ArrayBuffer=ArrayBuffer):(b.Float32Array=Array,b.Uint16Array=Array),b.PI_2=2*Math.PI,b.RAD_TO_DEG=180/Math.PI,b.DEG_TO_RAD=Math.PI/180,b.RETINA_PREFIX="@2x",b.DisplayObject=function(){this.position=new b.Point(0,0),this.scale=new b.Point(1,1),this.pivot=new b.Point(0,0),this.rotation=0,this.alpha=1,this.visible=!0,this.hitArea=null,this.renderable=!1,this.parent=null,this.stage=null,this.worldAlpha=1,this.worldTransform=new b.Matrix,this.worldPosition=new b.Point(0,0),this.worldScale=new b.Point(1,1),this.worldRotation=0,this._sr=0,this._cr=1,this.filterArea=null,this._bounds=new b.Rectangle(0,0,1,1),this._currentBounds=null,this._mask=null,this._cacheAsBitmap=!1,this._cacheIsDirty=!1},b.DisplayObject.prototype.constructor=b.DisplayObject,b.DisplayObject.prototype.destroy=function(){if(this.children){for(var a=this.children.length;a--;)this.children[a].destroy();this.children=[]}this.hitArea=null,this.parent=null,this.stage=null,this.worldTransform=null,this.filterArea=null,this._bounds=null,this._currentBounds=null,this._mask=null,this.renderable=!1,this._destroyCachedSprite()},Object.defineProperty(b.DisplayObject.prototype,"worldVisible",{get:function(){var a=this;do{if(!a.visible)return!1;a=a.parent}while(a);return!0}}),Object.defineProperty(b.DisplayObject.prototype,"mask",{get:function(){return this._mask},set:function(a){this._mask&&(this._mask.isMask=!1),this._mask=a,this._mask&&(this._mask.isMask=!0)}}),Object.defineProperty(b.DisplayObject.prototype,"filters",{get:function(){return this._filters},set:function(a){if(a){for(var c=[],d=0;d=0&&b<=this.children.length)return a.parent&&a.parent.removeChild(a),a.parent=this,this.children.splice(b,0,a),this.stage&&a.setStageReference(this.stage),a;throw new Error(a+"addChildAt: The index "+b+" supplied is out of bounds "+this.children.length)},b.DisplayObjectContainer.prototype.swapChildren=function(a,b){if(a!==b){var c=this.getChildIndex(a),d=this.getChildIndex(b);if(0>c||0>d)throw new Error("swapChildren: Both the supplied DisplayObjects must be a child of the caller.");this.children[c]=b,this.children[d]=a}},b.DisplayObjectContainer.prototype.getChildIndex=function(a){var b=this.children.indexOf(a);if(-1===b)throw new Error("The supplied DisplayObject must be a child of the caller");return b},b.DisplayObjectContainer.prototype.setChildIndex=function(a,b){if(0>b||b>=this.children.length)throw new Error("The supplied index is out of bounds");var c=this.getChildIndex(a);this.children.splice(c,1),this.children.splice(b,0,a)},b.DisplayObjectContainer.prototype.getChildAt=function(a){if(0>a||a>=this.children.length)throw new Error("getChildAt: Supplied index "+a+" does not exist in the child list, or the supplied DisplayObject must be a child of the caller");return this.children[a]},b.DisplayObjectContainer.prototype.removeChild=function(a){var b=this.children.indexOf(a);if(-1!==b)return this.removeChildAt(b)},b.DisplayObjectContainer.prototype.removeChildAt=function(a){var b=this.getChildAt(a);return this.stage&&b.removeStageReference(),b.parent=void 0,this.children.splice(a,1),b},b.DisplayObjectContainer.prototype.removeChildren=function(a,b){var c=a||0,d="number"==typeof b?b:this.children.length,e=d-c;if(e>0&&d>=e){for(var f=this.children.splice(c,e),g=0;gc?g:c,h=h>d?h:d)}if(!i)return b.EmptyRectangle;var l=this._bounds;return l.x=e,l.y=f,l.width=g-e,l.height=h-f,l},b.DisplayObjectContainer.prototype.getLocalBounds=function(){var a=this.worldTransform;this.worldTransform=b.identityMatrix;for(var c=0;ci){i*=-1;var s=d;d=-e,e=-s}if(0>l){l*=-1;var s=f;f=-g,g=-s}q=i*e+m,o=i*d+m,r=l*g+n,p=l*f+n}else{var t=i*e+k*g+m,u=l*g+j*e+n,v=i*d+k*g+m,w=l*g+j*d+n,x=i*d+k*f+m,y=l*f+j*d+n,z=i*e+k*f+m,A=l*f+j*e+n;q=q>t?t:q,q=q>v?v:q,q=q>x?x:q,q=q>z?z:q,r=r>u?u:r,r=r>w?w:r,r=r>y?y:r,r=r>A?A:r,o=t>o?t:o,o=v>o?v:o,o=x>o?x:o,o=z>o?z:o,p=u>p?u:p,p=w>p?w:p,p=y>p?y:p,p=A>p?A:p}var B=this._bounds;return B.x=q,B.width=o-q,B.y=r,B.height=p-r,this._currentBounds=B,B},b.Sprite.prototype._renderWebGL=function(a,b){if(this.visible&&!(this.alpha<=0)&&this.renderable){var c=this.worldTransform;if(b&&(c=b),this._mask||this._filters){var d=a.spriteBatch;this._filters&&(d.flush(),a.filterManager.pushFilter(this._filterBlock)),this._mask&&(d.stop(),a.maskManager.pushMask(this.mask,a),d.start()),d.render(this);for(var e=0;e>16&255)/255,(a>>8&255)/255,(255&a)/255]},b.rgb2hex=function(a){return(255*a[0]<<16)+(255*a[1]<<8)+255*a[2]},b.canUseNewCanvasBlendModes=function(){if(void 0===document)return!1;var a="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAQAAAABAQMAAADD8p2OAAAAA1BMVEX/",c="AAAACklEQVQI12NgAAAAAgAB4iG8MwAAAABJRU5ErkJggg==",d=new Image;d.src=a+"AP804Oa6"+c;var e=new Image;e.src=a+"/wCKxvRF"+c;var f=b.CanvasPool.create(this,6,1),g=f.getContext("2d");if(g.globalCompositeOperation="multiply",g.drawImage(d,0,0),g.drawImage(e,2,0),!g.getImageData(2,0,1,1))return!1;var h=g.getImageData(2,0,1,1).data;return b.CanvasPool.remove(this),255===h[0]&&0===h[1]&&0===h[2]},b.getNextPowerOfTwo=function(a){if(a>0&&0===(a&a-1))return a;for(var b=1;a>b;)b<<=1;return b},b.isPowerOfTwo=function(a,b){return a>0&&0===(a&a-1)&&b>0&&0===(b&b-1)},b.CanvasPool={create:function(a,c,d){var e,f=b.CanvasPool.getFirst();if(-1===f){var g={parent:a,canvas:document.createElement("canvas")};b.CanvasPool.pool.push(g),e=g.canvas}else b.CanvasPool.pool[f].parent=a,e=b.CanvasPool.pool[f].canvas;return void 0!==c&&(e.width=c,e.height=d),e},getFirst:function(){for(var a=b.CanvasPool.pool,c=0;cd;d+=6,e+=4)this.indices[d+0]=e+0,this.indices[d+1]=e+1,this.indices[d+2]=e+2,this.indices[d+3]=e+0,this.indices[d+4]=e+2,this.indices[d+5]=e+3;this.drawing=!1,this.currentBatchSize=0,this.currentBaseTexture=null,this.dirty=!0,this.textures=[],this.blendModes=[],this.shaders=[],this.sprites=[],this.defaultShader=new b.AbstractFilter(["precision lowp float;","varying vec2 vTextureCoord;","varying vec4 vColor;","uniform sampler2D uSampler;","void main(void) {"," gl_FragColor = texture2D(uSampler, vTextureCoord) * vColor ;","}"])},b.WebGLSpriteBatch.prototype.setContext=function(a){this.gl=a,this.vertexBuffer=a.createBuffer(),this.indexBuffer=a.createBuffer(),a.bindBuffer(a.ELEMENT_ARRAY_BUFFER,this.indexBuffer),a.bufferData(a.ELEMENT_ARRAY_BUFFER,this.indices,a.STATIC_DRAW),a.bindBuffer(a.ARRAY_BUFFER,this.vertexBuffer),a.bufferData(a.ARRAY_BUFFER,this.vertices,a.DYNAMIC_DRAW),this.currentBlendMode=99999;var c=new b.PixiShader(a);c.fragmentSrc=this.defaultShader.fragmentSrc,c.uniforms={},c.init(),this.defaultShader.shaders[a.id]=c},b.WebGLSpriteBatch.prototype.begin=function(a){this.renderSession=a,this.shader=this.renderSession.shaderManager.defaultShader,this.start()},b.WebGLSpriteBatch.prototype.end=function(){this.flush()},b.WebGLSpriteBatch.prototype.render=function(a,b){var c=a.texture,d=a.worldTransform;b&&(d=b),this.currentBatchSize>=this.size&&(this.flush(),this.currentBaseTexture=c.baseTexture);var e=c._uvs;if(e){var f,g,h,i,j=a.anchor.x,k=a.anchor.y;if(c.trim){var l=c.trim;g=l.x-j*l.width,f=g+c.crop.width,i=l.y-k*l.height,h=i+c.crop.height}else f=c.frame.width*(1-j),g=c.frame.width*-j,h=c.frame.height*(1-k),i=c.frame.height*-k;var m=4*this.currentBatchSize*this.vertSize,n=c.baseTexture.resolution,o=d.a/n,p=d.b/n,q=d.c/n,r=d.d/n,s=d.tx,t=d.ty,u=this.colors,v=this.positions;this.renderSession.roundPixels?(v[m]=o*g+q*i+s|0,v[m+1]=r*i+p*g+t|0,v[m+5]=o*f+q*i+s|0,v[m+6]=r*i+p*f+t|0,v[m+10]=o*f+q*h+s|0,v[m+11]=r*h+p*f+t|0,v[m+15]=o*g+q*h+s|0,v[m+16]=r*h+p*g+t|0):(v[m]=o*g+q*i+s,v[m+1]=r*i+p*g+t,v[m+5]=o*f+q*i+s,v[m+6]=r*i+p*f+t,v[m+10]=o*f+q*h+s,v[m+11]=r*h+p*f+t,v[m+15]=o*g+q*h+s,v[m+16]=r*h+p*g+t),v[m+2]=e.x0,v[m+3]=e.y0,v[m+7]=e.x1,v[m+8]=e.y1,v[m+12]=e.x2,v[m+13]=e.y2,v[m+17]=e.x3,v[m+18]=e.y3;var w=a.tint;u[m+4]=u[m+9]=u[m+14]=u[m+19]=(w>>16)+(65280&w)+((255&w)<<16)+(255*a.worldAlpha<<24),this.sprites[this.currentBatchSize++]=a}},b.WebGLSpriteBatch.prototype.renderTilingSprite=function(a){var c=a.tilingTexture;this.currentBatchSize>=this.size&&(this.flush(),this.currentBaseTexture=c.baseTexture),a._uvs||(a._uvs=new b.TextureUvs);var d=a._uvs,e=c.baseTexture.width,f=c.baseTexture.height;a.tilePosition.x%=e*a.tileScaleOffset.x,a.tilePosition.y%=f*a.tileScaleOffset.y;var g=a.tilePosition.x/(e*a.tileScaleOffset.x),h=a.tilePosition.y/(f*a.tileScaleOffset.y),i=a.width/e/(a.tileScale.x*a.tileScaleOffset.x),j=a.height/f/(a.tileScale.y*a.tileScaleOffset.y);d.x0=0-g,d.y0=0-h,d.x1=1*i-g,d.y1=0-h,d.x2=1*i-g,d.y2=1*j-h,d.x3=0-g,d.y3=1*j-h;var k=a.tint,l=(k>>16)+(65280&k)+((255&k)<<16)+(255*a.worldAlpha<<24),m=this.positions,n=this.colors,o=a.width,p=a.height,q=a.anchor.x,r=a.anchor.y,s=o*(1-q),t=o*-q,u=p*(1-r),v=p*-r,w=4*this.currentBatchSize*this.vertSize,x=c.baseTexture.resolution,y=a.worldTransform,z=y.a/x,A=y.b/x,B=y.c/x,C=y.d/x,D=y.tx,E=y.ty;m[w++]=z*t+B*v+D,m[w++]=C*v+A*t+E,m[w++]=d.x0,m[w++]=d.y0,n[w++]=l,m[w++]=z*s+B*v+D,m[w++]=C*v+A*s+E,m[w++]=d.x1,m[w++]=d.y1,n[w++]=l,m[w++]=z*s+B*u+D,m[w++]=C*u+A*s+E,m[w++]=d.x2,m[w++]=d.y2,n[w++]=l,m[w++]=z*t+B*u+D,m[w++]=C*u+A*t+E,m[w++]=d.x3,m[w++]=d.y3,n[w++]=l,this.sprites[this.currentBatchSize++]=a},b.WebGLSpriteBatch.prototype.flush=function(){if(0!==this.currentBatchSize){var a,c=this.gl;if(this.dirty){this.dirty=!1,c.activeTexture(c.TEXTURE0),c.bindBuffer(c.ARRAY_BUFFER,this.vertexBuffer),c.bindBuffer(c.ELEMENT_ARRAY_BUFFER,this.indexBuffer),a=this.defaultShader.shaders[c.id];var d=4*this.vertSize;c.vertexAttribPointer(a.aVertexPosition,2,c.FLOAT,!1,d,0),c.vertexAttribPointer(a.aTextureCoord,2,c.FLOAT,!1,d,8),c.vertexAttribPointer(a.colorAttribute,4,c.UNSIGNED_BYTE,!0,d,16)}if(this.currentBatchSize>.5*this.size)c.bufferSubData(c.ARRAY_BUFFER,0,this.vertices);else{var e=this.positions.subarray(0,4*this.currentBatchSize*this.vertSize);c.bufferSubData(c.ARRAY_BUFFER,0,e)}for(var f,g,h,i,j=0,k=0,l=null,m=this.renderSession.blendModeManager.currentBlendMode,n=null,o=!1,p=!1,q=0,r=this.currentBatchSize;r>q;q++){i=this.sprites[q],f=i.tilingTexture?i.tilingTexture.baseTexture:i.texture.baseTexture,g=i.blendMode,h=i.shader||this.defaultShader,o=m!==g,p=n!==h;var s=f.skipRender;if(s&&i.children.length>0&&(s=!1),(l!==f&&!s||o||p)&&(this.renderBatch(l,j,k),k=q,j=0,l=f,o&&(m=g,this.renderSession.blendModeManager.setBlendMode(m)),p)){n=h,a=n.shaders[c.id],a||(a=new b.PixiShader(c),a.fragmentSrc=n.fragmentSrc,a.uniforms=n.uniforms,a.init(),n.shaders[c.id]=a),this.renderSession.shaderManager.setShader(a),a.dirty&&a.syncUniforms();var t=this.renderSession.projection;c.uniform2f(a.projectionVector,t.x,t.y);var u=this.renderSession.offset;c.uniform2f(a.offsetVector,u.x,u.y)}j++}this.renderBatch(l,j,k),this.currentBatchSize=0}},b.WebGLSpriteBatch.prototype.renderBatch=function(a,b,c){if(0!==b){var d=this.gl;if(a._dirty[d.id]){if(!this.renderSession.renderer.updateTexture(a))return}else d.bindTexture(d.TEXTURE_2D,a._glTextures[d.id]);d.drawElements(d.TRIANGLES,6*b,d.UNSIGNED_SHORT,6*c*2),this.renderSession.drawCount++}},b.WebGLSpriteBatch.prototype.stop=function(){this.flush(),this.dirty=!0},b.WebGLSpriteBatch.prototype.start=function(){this.dirty=!0},b.WebGLSpriteBatch.prototype.destroy=function(){this.vertices=null,this.indices=null,this.gl.deleteBuffer(this.vertexBuffer),this.gl.deleteBuffer(this.indexBuffer),this.currentBaseTexture=null,this.gl=null},b.WebGLFastSpriteBatch=function(a){this.vertSize=10,this.maxSize=6e3,this.size=this.maxSize;var c=4*this.size*this.vertSize,d=6*this.maxSize;this.vertices=new b.Float32Array(c),this.indices=new b.Uint16Array(d),this.vertexBuffer=null,this.indexBuffer=null,this.lastIndexCount=0;for(var e=0,f=0;d>e;e+=6,f+=4)this.indices[e+0]=f+0,this.indices[e+1]=f+1,this.indices[e+2]=f+2,this.indices[e+3]=f+0,this.indices[e+4]=f+2,this.indices[e+5]=f+3;this.drawing=!1,this.currentBatchSize=0,this.currentBaseTexture=null,this.currentBlendMode=0,this.renderSession=null,this.shader=null,this.matrix=null,this.setContext(a)},b.WebGLFastSpriteBatch.prototype.constructor=b.WebGLFastSpriteBatch,b.WebGLFastSpriteBatch.prototype.setContext=function(a){this.gl=a,this.vertexBuffer=a.createBuffer(),this.indexBuffer=a.createBuffer(),a.bindBuffer(a.ELEMENT_ARRAY_BUFFER,this.indexBuffer),a.bufferData(a.ELEMENT_ARRAY_BUFFER,this.indices,a.STATIC_DRAW),a.bindBuffer(a.ARRAY_BUFFER,this.vertexBuffer),a.bufferData(a.ARRAY_BUFFER,this.vertices,a.DYNAMIC_DRAW)},b.WebGLFastSpriteBatch.prototype.begin=function(a,b){this.renderSession=b,this.shader=this.renderSession.shaderManager.fastShader,this.matrix=a.worldTransform.toArray(!0),this.start()},b.WebGLFastSpriteBatch.prototype.end=function(){this.flush()},b.WebGLFastSpriteBatch.prototype.render=function(a){var b=a.children,c=b[0];if(c.texture._uvs){this.currentBaseTexture=c.texture.baseTexture,c.blendMode!==this.renderSession.blendModeManager.currentBlendMode&&(this.flush(),this.renderSession.blendModeManager.setBlendMode(c.blendMode));for(var d=0,e=b.length;e>d;d++)this.renderSprite(b[d]);this.flush()}},b.WebGLFastSpriteBatch.prototype.renderSprite=function(a){if(a.visible&&(a.texture.baseTexture===this.currentBaseTexture||a.texture.baseTexture.skipRender||(this.flush(),this.currentBaseTexture=a.texture.baseTexture,a.texture._uvs))){var b,c,d,e,f,g,h,i,j=this.vertices;if(b=a.texture._uvs,c=a.texture.frame.width,d=a.texture.frame.height,a.texture.trim){var k=a.texture.trim;f=k.x-a.anchor.x*k.width,e=f+a.texture.crop.width,h=k.y-a.anchor.y*k.height,g=h+a.texture.crop.height}else e=a.texture.frame.width*(1-a.anchor.x),f=a.texture.frame.width*-a.anchor.x,g=a.texture.frame.height*(1-a.anchor.y),h=a.texture.frame.height*-a.anchor.y;i=4*this.currentBatchSize*this.vertSize,j[i++]=f,j[i++]=h,j[i++]=a.position.x,j[i++]=a.position.y,j[i++]=a.scale.x,j[i++]=a.scale.y,j[i++]=a.rotation,j[i++]=b.x0,j[i++]=b.y1,j[i++]=a.alpha,j[i++]=e,j[i++]=h,j[i++]=a.position.x,j[i++]=a.position.y,j[i++]=a.scale.x,j[i++]=a.scale.y,j[i++]=a.rotation,j[i++]=b.x1,j[i++]=b.y1,j[i++]=a.alpha,j[i++]=e,j[i++]=g,j[i++]=a.position.x,j[i++]=a.position.y,j[i++]=a.scale.x,j[i++]=a.scale.y,j[i++]=a.rotation,j[i++]=b.x2,j[i++]=b.y2,j[i++]=a.alpha,j[i++]=f,j[i++]=g,j[i++]=a.position.x,j[i++]=a.position.y,j[i++]=a.scale.x,j[i++]=a.scale.y,j[i++]=a.rotation,j[i++]=b.x3,j[i++]=b.y3,j[i++]=a.alpha,this.currentBatchSize++,this.currentBatchSize>=this.size&&this.flush()}},b.WebGLFastSpriteBatch.prototype.flush=function(){if(0!==this.currentBatchSize){var a=this.gl;if(this.currentBaseTexture._glTextures[a.id]||this.renderSession.renderer.updateTexture(this.currentBaseTexture,a),a.bindTexture(a.TEXTURE_2D,this.currentBaseTexture._glTextures[a.id]),this.currentBatchSize>.5*this.size)a.bufferSubData(a.ARRAY_BUFFER,0,this.vertices);else{var b=this.vertices.subarray(0,4*this.currentBatchSize*this.vertSize);a.bufferSubData(a.ARRAY_BUFFER,0,b)}a.drawElements(a.TRIANGLES,6*this.currentBatchSize,a.UNSIGNED_SHORT,0),this.currentBatchSize=0,this.renderSession.drawCount++}},b.WebGLFastSpriteBatch.prototype.stop=function(){this.flush()},b.WebGLFastSpriteBatch.prototype.start=function(){var a=this.gl;a.activeTexture(a.TEXTURE0),a.bindBuffer(a.ARRAY_BUFFER,this.vertexBuffer),a.bindBuffer(a.ELEMENT_ARRAY_BUFFER,this.indexBuffer);var b=this.renderSession.projection;a.uniform2f(this.shader.projectionVector,b.x,b.y),a.uniformMatrix3fv(this.shader.uMatrix,!1,this.matrix);var c=4*this.vertSize;a.vertexAttribPointer(this.shader.aVertexPosition,2,a.FLOAT,!1,c,0),a.vertexAttribPointer(this.shader.aPositionCoord,2,a.FLOAT,!1,c,8),a.vertexAttribPointer(this.shader.aScale,2,a.FLOAT,!1,c,16),a.vertexAttribPointer(this.shader.aRotation,1,a.FLOAT,!1,c,24),a.vertexAttribPointer(this.shader.aTextureCoord,2,a.FLOAT,!1,c,28),a.vertexAttribPointer(this.shader.colorAttribute,1,a.FLOAT,!1,c,36)},b.WebGLFilterManager=function(){this.filterStack=[],this.offsetX=0,this.offsetY=0},b.WebGLFilterManager.prototype.constructor=b.WebGLFilterManager,b.WebGLFilterManager.prototype.setContext=function(a){this.gl=a,this.texturePool=[],this.initShaderBuffers()},b.WebGLFilterManager.prototype.begin=function(a,b){this.renderSession=a,this.defaultShader=a.shaderManager.defaultShader;var c=this.renderSession.projection;this.width=2*c.x,this.height=2*-c.y,this.buffer=b},b.WebGLFilterManager.prototype.pushFilter=function(a){var c=this.gl,d=this.renderSession.projection,e=this.renderSession.offset;a._filterArea=a.target.filterArea||a.target.getBounds(),a._previous_stencil_mgr=this.renderSession.stencilManager,this.renderSession.stencilManager=new b.WebGLStencilManager,this.renderSession.stencilManager.setContext(c),c.disable(c.STENCIL_TEST),this.filterStack.push(a);var f=a.filterPasses[0];this.offsetX+=a._filterArea.x,this.offsetY+=a._filterArea.y;var g=this.texturePool.pop();g?g.resize(this.width*this.renderSession.resolution,this.height*this.renderSession.resolution):g=new b.FilterTexture(this.gl,this.width*this.renderSession.resolution,this.height*this.renderSession.resolution),c.bindTexture(c.TEXTURE_2D,g.texture);var h=a._filterArea,i=f.padding;h.x-=i,h.y-=i,h.width+=2*i,h.height+=2*i,h.x<0&&(h.x=0),h.width>this.width&&(h.width=this.width),h.y<0&&(h.y=0),h.height>this.height&&(h.height=this.height),c.bindFramebuffer(c.FRAMEBUFFER,g.frameBuffer),c.viewport(0,0,h.width*this.renderSession.resolution,h.height*this.renderSession.resolution),d.x=h.width/2,d.y=-h.height/2,e.x=-h.x,e.y=-h.y,c.colorMask(!0,!0,!0,!0),c.clearColor(0,0,0,0),c.clear(c.COLOR_BUFFER_BIT),a._glFilterTexture=g},b.WebGLFilterManager.prototype.popFilter=function(){var a=this.gl,c=this.filterStack.pop(),d=c._filterArea,e=c._glFilterTexture,f=this.renderSession.projection,g=this.renderSession.offset;if(c.filterPasses.length>1){a.viewport(0,0,d.width*this.renderSession.resolution,d.height*this.renderSession.resolution),a.bindBuffer(a.ARRAY_BUFFER,this.vertexBuffer),this.vertexArray[0]=0,this.vertexArray[1]=d.height,this.vertexArray[2]=d.width,this.vertexArray[3]=d.height,this.vertexArray[4]=0,this.vertexArray[5]=0,this.vertexArray[6]=d.width,this.vertexArray[7]=0,a.bufferSubData(a.ARRAY_BUFFER,0,this.vertexArray),a.bindBuffer(a.ARRAY_BUFFER,this.uvBuffer),this.uvArray[2]=d.width/this.width,this.uvArray[5]=d.height/this.height,this.uvArray[6]=d.width/this.width,this.uvArray[7]=d.height/this.height,a.bufferSubData(a.ARRAY_BUFFER,0,this.uvArray);var h=e,i=this.texturePool.pop();i||(i=new b.FilterTexture(this.gl,this.width*this.renderSession.resolution,this.height*this.renderSession.resolution)),i.resize(this.width*this.renderSession.resolution,this.height*this.renderSession.resolution),a.bindFramebuffer(a.FRAMEBUFFER,i.frameBuffer),a.clear(a.COLOR_BUFFER_BIT),a.disable(a.BLEND);for(var j=0;j0?a.enable(a.STENCIL_TEST):a.disable(a.STENCIL_TEST),this.applyFilterPass(m,d,n,o),this.texturePool.push(e),c._glFilterTexture=null},b.WebGLFilterManager.prototype.applyFilterPass=function(a,c,d,e){var f=this.gl,g=a.shaders[f.id];g||(g=new b.PixiShader(f),g.fragmentSrc=a.fragmentSrc,g.uniforms=a.uniforms,g.init(),a.shaders[f.id]=g),this.renderSession.shaderManager.setShader(g),f.uniform2f(g.projectionVector,d/2,-e/2),f.uniform2f(g.offsetVector,0,0),a.uniforms.dimensions&&(a.uniforms.dimensions.value[0]=this.width,a.uniforms.dimensions.value[1]=this.height,a.uniforms.dimensions.value[2]=this.vertexArray[0],a.uniforms.dimensions.value[3]=this.vertexArray[5]),g.syncUniforms(),f.bindBuffer(f.ARRAY_BUFFER,this.vertexBuffer),f.vertexAttribPointer(g.aVertexPosition,2,f.FLOAT,!1,0,0),f.bindBuffer(f.ARRAY_BUFFER,this.uvBuffer),f.vertexAttribPointer(g.aTextureCoord,2,f.FLOAT,!1,0,0),f.bindBuffer(f.ARRAY_BUFFER,this.colorBuffer),f.vertexAttribPointer(g.colorAttribute,2,f.FLOAT,!1,0,0),f.bindBuffer(f.ELEMENT_ARRAY_BUFFER,this.indexBuffer),f.drawElements(f.TRIANGLES,6,f.UNSIGNED_SHORT,0),this.renderSession.drawCount++},b.WebGLFilterManager.prototype.initShaderBuffers=function(){var a=this.gl;this.vertexBuffer=a.createBuffer(),this.uvBuffer=a.createBuffer(),this.colorBuffer=a.createBuffer(),this.indexBuffer=a.createBuffer(),this.vertexArray=new b.Float32Array([0,0,1,0,0,1,1,1]),a.bindBuffer(a.ARRAY_BUFFER,this.vertexBuffer),a.bufferData(a.ARRAY_BUFFER,this.vertexArray,a.STATIC_DRAW),this.uvArray=new b.Float32Array([0,0,1,0,0,1,1,1]),a.bindBuffer(a.ARRAY_BUFFER,this.uvBuffer),a.bufferData(a.ARRAY_BUFFER,this.uvArray,a.STATIC_DRAW),this.colorArray=new b.Float32Array([1,16777215,1,16777215,1,16777215,1,16777215]),a.bindBuffer(a.ARRAY_BUFFER,this.colorBuffer),a.bufferData(a.ARRAY_BUFFER,this.colorArray,a.STATIC_DRAW),a.bindBuffer(a.ELEMENT_ARRAY_BUFFER,this.indexBuffer),a.bufferData(a.ELEMENT_ARRAY_BUFFER,new Uint16Array([0,1,2,1,3,2]),a.STATIC_DRAW)},b.WebGLFilterManager.prototype.destroy=function(){var a=this.gl;this.filterStack=null,this.offsetX=0,this.offsetY=0;for(var b=0;b=0;a--){var c=this._glTextures[a],d=b.glContexts[a];d&&c&&d.deleteTexture(c)}this._glTextures.length=0,this.dirty()},b.BaseTexture.fromImage=function(a,c,d){var e=b.BaseTextureCache[a];if(void 0===c&&-1===a.indexOf("data:")&&(c=!0),!e){var f=new Image;c&&(f.crossOrigin=""),f.src=a,e=new b.BaseTexture(f,d),e.imageUrl=a,b.BaseTextureCache[a]=e,-1!==a.indexOf(b.RETINA_PREFIX+".")&&(e.resolution=2)}return e},b.BaseTexture.fromCanvas=function(a,c){a._pixiId||(a._pixiId="canvas_"+b.TextureCacheIdGenerator++),0===a.width&&(a.width=1),0===a.height&&(a.height=1);var d=b.BaseTextureCache[a._pixiId];return d||(d=new b.BaseTexture(a,c),b.BaseTextureCache[a._pixiId]=d),d},b.TextureCache={},b.FrameCache={},b.TextureSilentFail=!1,b.TextureCacheIdGenerator=0,b.Texture=function(a,c,d,e){this.noFrame=!1,c||(this.noFrame=!0,c=new b.Rectangle(0,0,1,1)),a instanceof b.Texture&&(a=a.baseTexture),this.baseTexture=a,this.frame=c,this.trim=e,this.valid=!1,this.isTiling=!1,this.requiresUpdate=!1,this.requiresReTint=!1,this._uvs=null,this.width=0,this.height=0,this.crop=d||new b.Rectangle(0,0,1,1),a.hasLoaded&&(this.noFrame&&(c=new b.Rectangle(0,0,a.width,a.height)),this.setFrame(c))},b.Texture.prototype.constructor=b.Texture,b.Texture.prototype.onBaseTextureLoaded=function(){var a=this.baseTexture;this.noFrame&&(this.frame=new b.Rectangle(0,0,a.width,a.height)),this.setFrame(this.frame)},b.Texture.prototype.destroy=function(a){a&&this.baseTexture.destroy(),this.valid=!1},b.Texture.prototype.setFrame=function(a){if(this.noFrame=!1,this.frame=a,this.width=a.width,this.height=a.height,this.crop.x=a.x,this.crop.y=a.y,this.crop.width=a.width,this.crop.height=a.height,!this.trim&&(a.x+a.width>this.baseTexture.width||a.y+a.height>this.baseTexture.height)){if(!b.TextureSilentFail)throw new Error("Texture Error: frame does not fit inside the base Texture dimensions "+this);return void(this.valid=!1)}this.valid=a&&a.width&&a.height&&this.baseTexture.source&&this.baseTexture.hasLoaded,this.trim&&(this.width=this.trim.width,this.height=this.trim.height,this.frame.width=this.trim.width,this.frame.height=this.trim.height),this.valid&&this._updateUvs()},b.Texture.prototype._updateUvs=function(){this._uvs||(this._uvs=new b.TextureUvs);var a=this.crop,c=this.baseTexture.width,d=this.baseTexture.height;this._uvs.x0=a.x/c,this._uvs.y0=a.y/d,this._uvs.x1=(a.x+a.width)/c,this._uvs.y1=a.y/d,this._uvs.x2=(a.x+a.width)/c,this._uvs.y2=(a.y+a.height)/d,this._uvs.x3=a.x/c,this._uvs.y3=(a.y+a.height)/d},b.Texture.fromImage=function(a,c,d){var e=b.TextureCache[a];return e||(e=new b.Texture(b.BaseTexture.fromImage(a,c,d)),b.TextureCache[a]=e),e},b.Texture.fromFrame=function(a){var c=b.TextureCache[a];if(!c)throw new Error('The frameId "'+a+'" does not exist in the texture cache ');return c},b.Texture.fromCanvas=function(a,c){var d=b.BaseTexture.fromCanvas(a,c);return new b.Texture(d)},b.Texture.addTextureToCache=function(a,c){b.TextureCache[c]=a},b.Texture.removeTextureFromCache=function(a){var c=b.TextureCache[a];return delete b.TextureCache[a],delete b.BaseTextureCache[a],c},b.TextureUvs=function(){this.x0=0,this.y0=0,this.x1=0,this.y1=0,this.x2=0,this.y2=0,this.x3=0,this.y3=0},b.RenderTexture=function(a,c,d,e,f){if(this.width=a||100,this.height=c||100,this.resolution=f||1,this.frame=new b.Rectangle(0,0,this.width*this.resolution,this.height*this.resolution),this.crop=new b.Rectangle(0,0,this.width*this.resolution,this.height*this.resolution),this.baseTexture=new b.BaseTexture,this.baseTexture.width=this.width*this.resolution,this.baseTexture.height=this.height*this.resolution,this.baseTexture._glTextures=[],this.baseTexture.resolution=this.resolution,this.baseTexture.scaleMode=e||b.scaleModes.DEFAULT,this.baseTexture.hasLoaded=!0,b.Texture.call(this,this.baseTexture,new b.Rectangle(0,0,this.width*this.resolution,this.height*this.resolution)),this.renderer=d||b.defaultRenderer,this.renderer.type===b.WEBGL_RENDERER){var g=this.renderer.gl;this.baseTexture._dirty[g.id]=!1,this.textureBuffer=new b.FilterTexture(g,this.width,this.height,this.baseTexture.scaleMode),this.baseTexture._glTextures[g.id]=this.textureBuffer.texture,this.render=this.renderWebGL,this.projection=new b.Point(.5*this.width,.5*-this.height)}else this.render=this.renderCanvas,this.textureBuffer=new b.CanvasBuffer(this.width*this.resolution,this.height*this.resolution),this.baseTexture.source=this.textureBuffer.canvas;this.valid=!0,this.tempMatrix=new Phaser.Matrix,this._updateUvs()},b.RenderTexture.prototype=Object.create(b.Texture.prototype),b.RenderTexture.prototype.constructor=b.RenderTexture,b.RenderTexture.prototype.resize=function(a,c,d){(a!==this.width||c!==this.height)&&(this.valid=a>0&&c>0,this.width=a,this.height=c,this.frame.width=this.crop.width=a*this.resolution,this.frame.height=this.crop.height=c*this.resolution,d&&(this.baseTexture.width=this.width*this.resolution,this.baseTexture.height=this.height*this.resolution),this.renderer.type===b.WEBGL_RENDERER&&(this.projection.x=this.width/2,this.projection.y=-this.height/2),this.valid&&this.textureBuffer.resize(this.width,this.height))},b.RenderTexture.prototype.clear=function(){this.valid&&(this.renderer.type===b.WEBGL_RENDERER&&this.renderer.gl.bindFramebuffer(this.renderer.gl.FRAMEBUFFER,this.textureBuffer.frameBuffer),this.textureBuffer.clear())},b.RenderTexture.prototype.renderWebGL=function(a,b,c){if(this.valid&&0!==a.alpha){var d=a.worldTransform;d.identity(),d.translate(0,2*this.projection.y),b&&d.append(b),d.scale(1,-1);for(var e=0;ea;a++)this.shaders[a].dirty=!0},"undefined"!=typeof exports?("undefined"!=typeof module&&module.exports&&(exports=module.exports=b),exports.PIXI=b):"undefined"!=typeof define&&define.amd?define("PIXI",function(){return a.PIXI=b}()):a.PIXI=b,b}).call(this),function(){function a(a,b){this._scaleFactor=a,this._deltaMode=b,this.originalEvent=null}var b=this,c=c||{VERSION:"2.5.0",GAMES:[],AUTO:0,CANVAS:1,WEBGL:2,HEADLESS:3,NONE:0,LEFT:1,RIGHT:2,UP:3,DOWN:4,SPRITE:0,BUTTON:1,IMAGE:2,GRAPHICS:3,TEXT:4,TILESPRITE:5,BITMAPTEXT:6,GROUP:7,RENDERTEXTURE:8,TILEMAP:9,TILEMAPLAYER:10,EMITTER:11,POLYGON:12,BITMAPDATA:13,CANVAS_FILTER:14,WEBGL_FILTER:15,ELLIPSE:16,SPRITEBATCH:17,RETROFONT:18,POINTER:19,ROPE:20,CIRCLE:21,RECTANGLE:22,LINE:23,MATRIX:24,POINT:25,ROUNDEDRECTANGLE:26,CREATURE:27,VIDEO:28,PENDING_ATLAS:-1,HORIZONTAL:0,VERTICAL:1,LANDSCAPE:0,PORTRAIT:1,ANGLE_UP:270,ANGLE_DOWN:90,ANGLE_LEFT:180,ANGLE_RIGHT:0,ANGLE_NORTH_EAST:315,ANGLE_NORTH_WEST:225,ANGLE_SOUTH_EAST:45,ANGLE_SOUTH_WEST:135,TOP_LEFT:0,TOP_CENTER:1,TOP_RIGHT:2,LEFT_TOP:3,LEFT_CENTER:4,LEFT_BOTTOM:5,CENTER:6,RIGHT_TOP:7,RIGHT_CENTER:8,RIGHT_BOTTOM:9,BOTTOM_LEFT:10,BOTTOM_CENTER:11,BOTTOM_RIGHT:12,blendModes:{NORMAL:0,ADD:1,MULTIPLY:2,SCREEN:3,OVERLAY:4,DARKEN:5,LIGHTEN:6,COLOR_DODGE:7,COLOR_BURN:8,HARD_LIGHT:9,SOFT_LIGHT:10,DIFFERENCE:11,EXCLUSION:12,HUE:13,SATURATION:14,COLOR:15,LUMINOSITY:16},scaleModes:{DEFAULT:0,LINEAR:0,NEAREST:1},PIXI:PIXI||{}};if(Math.trunc||(Math.trunc=function(a){return 0>a?Math.ceil(a):Math.floor(a)}),Function.prototype.bind||(Function.prototype.bind=function(){var a=Array.prototype.slice;return function(b){function c(){var f=e.concat(a.call(arguments));d.apply(this instanceof c?this:b,f)}var d=this,e=a.call(arguments,1);if("function"!=typeof d)throw new TypeError;return c.prototype=function f(a){return a&&(f.prototype=a),this instanceof f?void 0:new f}(d.prototype),c}}()),Array.isArray||(Array.isArray=function(a){return"[object Array]"==Object.prototype.toString.call(a)}),Array.prototype.forEach||(Array.prototype.forEach=function(a){"use strict";if(void 0===this||null===this)throw new TypeError;var b=Object(this),c=b.length>>>0;if("function"!=typeof a)throw new TypeError;for(var d=arguments.length>=2?arguments[1]:void 0,e=0;c>e;e++)e in b&&a.call(d,b[e],e,b)}),"function"!=typeof window.Uint32Array&&"object"!=typeof window.Uint32Array){var d=function(a){var b=new Array;window[a]=function(a){if("number"==typeof a){Array.call(this,a),this.length=a;for(var b=0;bf&&(a=a[g]);)g=c[f],f++;return a?a[d]:null},setProperty:function(a,b,c){for(var d=b.split("."),e=d.pop(),f=d.length,g=1,h=d[0];f>g&&(a=a[h]);)h=d[g],g++;return a&&(a[e]=c),a},chanceRoll:function(a){return void 0===a&&(a=50),a>0&&100*Math.random()<=a},randomChoice:function(a,b){return Math.random()<.5?a:b},parseDimension:function(a,b){var c=0,d=0;return"string"==typeof a?"%"===a.substr(-1)?(c=parseInt(a,10)/100,d=0===b?window.innerWidth*c:window.innerHeight*c):d=parseInt(a,10):d=a,d},pad:function(a,b,c,d){if(void 0===b)var b=0;if(void 0===c)var c=" ";if(void 0===d)var d=3;var e=0;if(b+1>=a.length)switch(d){case 1:a=new Array(b+1-a.length).join(c)+a;break;case 3:var f=Math.ceil((e=b-a.length)/2),g=e-f;a=new Array(g+1).join(c)+a+new Array(f+1).join(c);break;default:a+=new Array(b+1-a.length).join(c)}return a},isPlainObject:function(a){if("object"!=typeof a||a.nodeType||a===a.window)return!1;try{if(a.constructor&&!{}.hasOwnProperty.call(a.constructor.prototype,"isPrototypeOf"))return!1}catch(b){return!1}return!0},extend:function(){var a,b,d,e,f,g,h=arguments[0]||{},i=1,j=arguments.length,k=!1;for("boolean"==typeof h&&(k=h,h=arguments[1]||{},i=2),j===i&&(h=this,--i);j>i;i++)if(null!=(a=arguments[i]))for(b in a)d=h[b],e=a[b],h!==e&&(k&&e&&(c.Utils.isPlainObject(e)||(f=Array.isArray(e)))?(f?(f=!1,g=d&&Array.isArray(d)?d:[]):g=d&&c.Utils.isPlainObject(d)?d:{},h[b]=c.Utils.extend(k,g,e)):void 0!==e&&(h[b]=e));return h},mixinPrototype:function(a,b,c){void 0===c&&(c=!1);for(var d=Object.keys(b),e=0;e0&&(this._radius=.5*d),this.type=c.CIRCLE},c.Circle.prototype={circumference:function(){return 2*(Math.PI*this._radius)},random:function(a){void 0===a&&(a=new c.Point);var b=2*Math.PI*Math.random(),d=Math.random()+Math.random(),e=d>1?2-d:d,f=e*Math.cos(b),g=e*Math.sin(b);return a.x=this.x+f*this.radius,a.y=this.y+g*this.radius,a},getBounds:function(){return new c.Rectangle(this.x-this.radius,this.y-this.radius,this.diameter,this.diameter)},setTo:function(a,b,c){return this.x=a,this.y=b,this._diameter=c,this._radius=.5*c,this},copyFrom:function(a){return this.setTo(a.x,a.y,a.diameter)},copyTo:function(a){return a.x=this.x,a.y=this.y,a.diameter=this._diameter,a},distance:function(a,b){var d=c.Math.distance(this.x,this.y,a.x,a.y);return b?Math.round(d):d},clone:function(a){return void 0===a||null===a?a=new c.Circle(this.x,this.y,this.diameter):a.setTo(this.x,this.y,this.diameter),a},contains:function(a,b){return c.Circle.contains(this,a,b)},circumferencePoint:function(a,b,d){return c.Circle.circumferencePoint(this,a,b,d)},offset:function(a,b){return this.x+=a,this.y+=b,this},offsetPoint:function(a){return this.offset(a.x,a.y)},toString:function(){return"[{Phaser.Circle (x="+this.x+" y="+this.y+" diameter="+this.diameter+" radius="+this.radius+")}]"}},c.Circle.prototype.constructor=c.Circle,Object.defineProperty(c.Circle.prototype,"diameter",{get:function(){return this._diameter},set:function(a){a>0&&(this._diameter=a,this._radius=.5*a)}}),Object.defineProperty(c.Circle.prototype,"radius",{get:function(){return this._radius},set:function(a){a>0&&(this._radius=a,this._diameter=2*a)}}),Object.defineProperty(c.Circle.prototype,"left",{get:function(){return this.x-this._radius},set:function(a){a>this.x?(this._radius=0,this._diameter=0):this.radius=this.x-a}}),Object.defineProperty(c.Circle.prototype,"right",{get:function(){return this.x+this._radius},set:function(a){athis.y?(this._radius=0,this._diameter=0):this.radius=this.y-a}}),Object.defineProperty(c.Circle.prototype,"bottom",{get:function(){return this.y+this._radius},set:function(a){a0?Math.PI*this._radius*this._radius:0}}),Object.defineProperty(c.Circle.prototype,"empty",{get:function(){return 0===this._diameter},set:function(a){a===!0&&this.setTo(0,0,0)}}),c.Circle.contains=function(a,b,c){if(a.radius>0&&b>=a.left&&b<=a.right&&c>=a.top&&c<=a.bottom){var d=(a.x-b)*(a.x-b),e=(a.y-c)*(a.y-c);return d+e<=a.radius*a.radius}return!1},c.Circle.equals=function(a,b){return a.x==b.x&&a.y==b.y&&a.diameter==b.diameter},c.Circle.intersects=function(a,b){return c.Math.distance(a.x,a.y,b.x,b.y)<=a.radius+b.radius},c.Circle.circumferencePoint=function(a,b,d,e){return void 0===d&&(d=!1),void 0===e&&(e=new c.Point),d===!0&&(b=c.Math.degToRad(b)),e.x=a.x+a.radius*Math.cos(b),e.y=a.y+a.radius*Math.sin(b),e},c.Circle.intersectsRectangle=function(a,b){var c=Math.abs(a.x-b.x-b.halfWidth),d=b.halfWidth+a.radius;if(c>d)return!1;var e=Math.abs(a.y-b.y-b.halfHeight),f=b.halfHeight+a.radius;if(e>f)return!1;if(c<=b.halfWidth||e<=b.halfHeight)return!0;var g=c-b.halfWidth,h=e-b.halfHeight,i=g*g,j=h*h,k=a.radius*a.radius;return k>=i+j},PIXI.Circle=c.Circle,c.Ellipse=function(a,b,d,e){a=a||0,b=b||0,d=d||0,e=e||0,this.x=a,this.y=b,this.width=d,this.height=e,this.type=c.ELLIPSE},c.Ellipse.prototype={setTo:function(a,b,c,d){return this.x=a,this.y=b,this.width=c,this.height=d,this},getBounds:function(){return new c.Rectangle(this.x-this.width,this.y-this.height,this.width,this.height)},copyFrom:function(a){return this.setTo(a.x,a.y,a.width,a.height)},copyTo:function(a){return a.x=this.x,a.y=this.y,a.width=this.width,a.height=this.height,a},clone:function(a){return void 0===a||null===a?a=new c.Ellipse(this.x,this.y,this.width,this.height):a.setTo(this.x,this.y,this.width,this.height),a},contains:function(a,b){return c.Ellipse.contains(this,a,b)},random:function(a){void 0===a&&(a=new c.Point);var b=Math.random()*Math.PI*2,d=Math.random();return a.x=Math.sqrt(d)*Math.cos(b),a.y=Math.sqrt(d)*Math.sin(b),a.x=this.x+a.x*this.width/2,a.y=this.y+a.y*this.height/2,a},toString:function(){return"[{Phaser.Ellipse (x="+this.x+" y="+this.y+" width="+this.width+" height="+this.height+")}]"}},c.Ellipse.prototype.constructor=c.Ellipse,Object.defineProperty(c.Ellipse.prototype,"left",{get:function(){return this.x},set:function(a){this.x=a}}),Object.defineProperty(c.Ellipse.prototype,"right",{get:function(){return this.x+this.width},set:function(a){ad+e},PIXI.Ellipse=c.Ellipse,c.Line=function(a,b,d,e){a=a||0,b=b||0,d=d||0,e=e||0,this.start=new c.Point(a,b),this.end=new c.Point(d,e),this.type=c.LINE},c.Line.prototype={setTo:function(a,b,c,d){return this.start.setTo(a,b),this.end.setTo(c,d),this},fromSprite:function(a,b,c){return void 0===c&&(c=!1),c?this.setTo(a.center.x,a.center.y,b.center.x,b.center.y):this.setTo(a.x,a.y,b.x,b.y)},fromAngle:function(a,b,c,d){return this.start.setTo(a,b),this.end.setTo(a+Math.cos(c)*d,b+Math.sin(c)*d),this},rotate:function(a,b){var c=(this.start.x+this.end.x)/2,d=(this.start.y+this.end.y)/2;return this.start.rotate(c,d,a,b),this.end.rotate(c,d,a,b),this},rotateAround:function(a,b,c,d){return this.start.rotate(a,b,c,d),this.end.rotate(a,b,c,d),this},intersects:function(a,b,d){return c.Line.intersectsPoints(this.start,this.end,a.start,a.end,b,d)},reflect:function(a){return c.Line.reflect(this,a)},midPoint:function(a){return void 0===a&&(a=new c.Point),a.x=(this.start.x+this.end.x)/2,a.y=(this.start.y+this.end.y)/2,a},centerOn:function(a,b){var c=(this.start.x+this.end.x)/2,d=(this.start.y+this.end.y)/2,e=a-c,f=b-d;this.start.add(e,f),this.end.add(e,f)},pointOnLine:function(a,b){return(a-this.start.x)*(this.end.y-this.start.y)===(this.end.x-this.start.x)*(b-this.start.y)},pointOnSegment:function(a,b){var c=Math.min(this.start.x,this.end.x),d=Math.max(this.start.x,this.end.x),e=Math.min(this.start.y,this.end.y),f=Math.max(this.start.y,this.end.y);return this.pointOnLine(a,b)&&a>=c&&d>=a&&b>=e&&f>=b},random:function(a){void 0===a&&(a=new c.Point);var b=Math.random();return a.x=this.start.x+b*(this.end.x-this.start.x),a.y=this.start.y+b*(this.end.y-this.start.y),a},coordinatesOnLine:function(a,b){void 0===a&&(a=1),void 0===b&&(b=[]);var c=Math.round(this.start.x),d=Math.round(this.start.y),e=Math.round(this.end.x),f=Math.round(this.end.y),g=Math.abs(e-c),h=Math.abs(f-d),i=e>c?1:-1,j=f>d?1:-1,k=g-h;b.push([c,d]);for(var l=1;c!=e||d!=f;){var m=k<<1;m>-h&&(k-=h,c+=i),g>m&&(k+=g,d+=j),l%a===0&&b.push([c,d]),l++}return b},clone:function(a){return void 0===a||null===a?a=new c.Line(this.start.x,this.start.y,this.end.x,this.end.y):a.setTo(this.start.x,this.start.y,this.end.x,this.end.y),a}},Object.defineProperty(c.Line.prototype,"length",{get:function(){return Math.sqrt((this.end.x-this.start.x)*(this.end.x-this.start.x)+(this.end.y-this.start.y)*(this.end.y-this.start.y))}}),Object.defineProperty(c.Line.prototype,"angle",{get:function(){return Math.atan2(this.end.y-this.start.y,this.end.x-this.start.x)}}),Object.defineProperty(c.Line.prototype,"slope",{get:function(){return(this.end.y-this.start.y)/(this.end.x-this.start.x)}}),Object.defineProperty(c.Line.prototype,"perpSlope",{get:function(){return-((this.end.x-this.start.x)/(this.end.y-this.start.y))}}),Object.defineProperty(c.Line.prototype,"x",{get:function(){return Math.min(this.start.x,this.end.x)}}),Object.defineProperty(c.Line.prototype,"y",{get:function(){return Math.min(this.start.y,this.end.y)}}),Object.defineProperty(c.Line.prototype,"left",{get:function(){return Math.min(this.start.x,this.end.x)}}),Object.defineProperty(c.Line.prototype,"right",{get:function(){return Math.max(this.start.x,this.end.x)}}),Object.defineProperty(c.Line.prototype,"top",{get:function(){return Math.min(this.start.y,this.end.y)}}),Object.defineProperty(c.Line.prototype,"bottom",{get:function(){return Math.max(this.start.y,this.end.y)}}),Object.defineProperty(c.Line.prototype,"width",{get:function(){return Math.abs(this.start.x-this.end.x)}}),Object.defineProperty(c.Line.prototype,"height",{get:function(){return Math.abs(this.start.y-this.end.y)}}),Object.defineProperty(c.Line.prototype,"normalX",{get:function(){return Math.cos(this.angle-1.5707963267948966)}}),Object.defineProperty(c.Line.prototype,"normalY",{get:function(){return Math.sin(this.angle-1.5707963267948966)}}),Object.defineProperty(c.Line.prototype,"normalAngle",{get:function(){return c.Math.wrap(this.angle-1.5707963267948966,-Math.PI,Math.PI)}}),c.Line.intersectsPoints=function(a,b,d,e,f,g){void 0===f&&(f=!0),void 0===g&&(g=new c.Point);var h=b.y-a.y,i=e.y-d.y,j=a.x-b.x,k=d.x-e.x,l=b.x*a.y-a.x*b.y,m=e.x*d.y-d.x*e.y,n=h*k-i*j;if(0===n)return null;if(g.x=(j*m-k*l)/n,g.y=(i*l-h*m)/n,f){var o=(e.y-d.y)*(b.x-a.x)-(e.x-d.x)*(b.y-a.y),p=((e.x-d.x)*(a.y-d.y)-(e.y-d.y)*(a.x-d.x))/o,q=((b.x-a.x)*(a.y-d.y)-(b.y-a.y)*(a.x-d.x))/o;return p>=0&&1>=p&&q>=0&&1>=q?g:null}return g},c.Line.intersects=function(a,b,d,e){return c.Line.intersectsPoints(a.start,a.end,b.start,b.end,d,e)},c.Line.intersectsRectangle=function(a,b){if(!c.Rectangle.intersects(a,b))return!1;var d=a.start.x,e=a.start.y,f=a.end.x,g=a.end.y,h=b.x,i=b.y,j=b.right,k=b.bottom,l=0;if(d>=h&&j>=d&&e>=i&&k>=e||f>=h&&j>=f&&g>=i&&k>=g)return!0;if(h>d&&f>=h){if(l=e+(g-e)*(h-d)/(f-d),l>i&&k>=l)return!0}else if(d>j&&j>=f&&(l=e+(g-e)*(j-d)/(f-d),l>=i&&k>=l))return!0;if(i>e&&g>=i){if(l=d+(f-d)*(i-e)/(g-e),l>=h&&j>=l)return!0}else if(e>k&&k>=g&&(l=d+(f-d)*(k-e)/(g-e),l>=h&&j>=l))return!0;return!1},c.Line.reflect=function(a,b){return 2*b.normalAngle-3.141592653589793-a.angle},c.Matrix=function(a,b,d,e,f,g){(void 0===a||null===a)&&(a=1),(void 0===b||null===b)&&(b=0),(void 0===d||null===d)&&(d=0),(void 0===e||null===e)&&(e=1),(void 0===f||null===f)&&(f=0),(void 0===g||null===g)&&(g=0),this.a=a,this.b=b,this.c=d,this.d=e,this.tx=f,this.ty=g,this.type=c.MATRIX},c.Matrix.prototype={fromArray:function(a){return this.setTo(a[0],a[1],a[3],a[4],a[2],a[5])},setTo:function(a,b,c,d,e,f){return this.a=a,this.b=b,this.c=c,this.d=d,this.tx=e,this.ty=f,this},clone:function(a){return void 0===a||null===a?a=new c.Matrix(this.a,this.b,this.c,this.d,this.tx,this.ty):(a.a=this.a,a.b=this.b,a.c=this.c,a.d=this.d,a.tx=this.tx,a.ty=this.ty),a},copyTo:function(a){return a.copyFrom(this),a},copyFrom:function(a){return this.a=a.a,this.b=a.b,this.c=a.c,this.d=a.d,this.tx=a.tx,this.ty=a.ty,this},toArray:function(a,b){return void 0===b&&(b=new PIXI.Float32Array(9)),a?(b[0]=this.a,b[1]=this.b,b[2]=0,b[3]=this.c,b[4]=this.d,b[5]=0,b[6]=this.tx,b[7]=this.ty,b[8]=1):(b[0]=this.a,b[1]=this.c,b[2]=this.tx,b[3]=this.b,b[4]=this.d,b[5]=this.ty,b[6]=0,b[7]=0,b[8]=1),b},apply:function(a,b){return void 0===b&&(b=new c.Point),b.x=this.a*a.x+this.c*a.y+this.tx,b.y=this.b*a.x+this.d*a.y+this.ty,b},applyInverse:function(a,b){void 0===b&&(b=new c.Point);var d=1/(this.a*this.d+this.c*-this.b),e=a.x,f=a.y;return b.x=this.d*d*e+-this.c*d*f+(this.ty*this.c-this.tx*this.d)*d,b.y=this.a*d*f+-this.b*d*e+(-this.ty*this.a+this.tx*this.b)*d,b},translate:function(a,b){return this.tx+=a,this.ty+=b,this},scale:function(a,b){return this.a*=a,this.d*=b,this.c*=a,this.b*=b,this.tx*=a,this.ty*=b,this},rotate:function(a){var b=Math.cos(a),c=Math.sin(a),d=this.a,e=this.c,f=this.tx;return this.a=d*b-this.b*c,this.b=d*c+this.b*b,this.c=e*b-this.d*c,this.d=e*c+this.d*b,this.tx=f*b-this.ty*c,this.ty=f*c+this.ty*b,this},append:function(a){var b=this.a,c=this.b,d=this.c,e=this.d;return this.a=a.a*b+a.b*d,this.b=a.a*c+a.b*e,this.c=a.c*b+a.d*d,this.d=a.c*c+a.d*e,this.tx=a.tx*b+a.ty*d+this.tx,this.ty=a.tx*c+a.ty*e+this.ty,this},identity:function(){return this.setTo(1,0,0,1,0,0)}},c.identityMatrix=new c.Matrix,PIXI.Matrix=c.Matrix,PIXI.identityMatrix=c.identityMatrix,c.Point=function(a,b){a=a||0,b=b||0,this.x=a,this.y=b,this.type=c.POINT},c.Point.prototype={copyFrom:function(a){return this.setTo(a.x,a.y)},invert:function(){return this.setTo(this.y,this.x)},setTo:function(a,b){return this.x=a||0,this.y=b||(0!==b?this.x:0),this},set:function(a,b){return this.x=a||0,this.y=b||(0!==b?this.x:0),this},add:function(a,b){return this.x+=a,this.y+=b,this},subtract:function(a,b){return this.x-=a,this.y-=b,this},multiply:function(a,b){return this.x*=a,this.y*=b,this},divide:function(a,b){return this.x/=a,this.y/=b,this},clampX:function(a,b){return this.x=c.Math.clamp(this.x,a,b),this},clampY:function(a,b){return this.y=c.Math.clamp(this.y,a,b),this},clamp:function(a,b){return this.x=c.Math.clamp(this.x,a,b),this.y=c.Math.clamp(this.y,a,b),this},clone:function(a){return void 0===a||null===a?a=new c.Point(this.x,this.y):a.setTo(this.x,this.y),a},copyTo:function(a){return a.x=this.x,a.y=this.y,a},distance:function(a,b){return c.Point.distance(this,a,b)},equals:function(a){return a.x===this.x&&a.y===this.y},angle:function(a,b){return void 0===b&&(b=!1),b?c.Math.radToDeg(Math.atan2(a.y-this.y,a.x-this.x)):Math.atan2(a.y-this.y,a.x-this.x)},rotate:function(a,b,d,e,f){return c.Point.rotate(this,a,b,d,e,f)},getMagnitude:function(){return Math.sqrt(this.x*this.x+this.y*this.y)},getMagnitudeSq:function(){return this.x*this.x+this.y*this.y},setMagnitude:function(a){return this.normalize().multiply(a,a)},normalize:function(){if(!this.isZero()){var a=this.getMagnitude();this.x/=a,this.y/=a}return this},isZero:function(){return 0===this.x&&0===this.y},dot:function(a){return this.x*a.x+this.y*a.y},cross:function(a){return this.x*a.y-this.y*a.x},perp:function(){return this.setTo(-this.y,this.x)},rperp:function(){return this.setTo(this.y,-this.x)},normalRightHand:function(){return this.setTo(-1*this.y,this.x); -},floor:function(){return this.setTo(Math.floor(this.x),Math.floor(this.y))},ceil:function(){return this.setTo(Math.ceil(this.x),Math.ceil(this.y))},toString:function(){return"[{Point (x="+this.x+" y="+this.y+")}]"}},c.Point.prototype.constructor=c.Point,c.Point.add=function(a,b,d){return void 0===d&&(d=new c.Point),d.x=a.x+b.x,d.y=a.y+b.y,d},c.Point.subtract=function(a,b,d){return void 0===d&&(d=new c.Point),d.x=a.x-b.x,d.y=a.y-b.y,d},c.Point.multiply=function(a,b,d){return void 0===d&&(d=new c.Point),d.x=a.x*b.x,d.y=a.y*b.y,d},c.Point.divide=function(a,b,d){return void 0===d&&(d=new c.Point),d.x=a.x/b.x,d.y=a.y/b.y,d},c.Point.equals=function(a,b){return a.x===b.x&&a.y===b.y},c.Point.angle=function(a,b){return Math.atan2(a.y-b.y,a.x-b.x)},c.Point.negative=function(a,b){return void 0===b&&(b=new c.Point),b.setTo(-a.x,-a.y)},c.Point.multiplyAdd=function(a,b,d,e){return void 0===e&&(e=new c.Point),e.setTo(a.x+b.x*d,a.y+b.y*d)},c.Point.interpolate=function(a,b,d,e){return void 0===e&&(e=new c.Point),e.setTo(a.x+(b.x-a.x)*d,a.y+(b.y-a.y)*d)},c.Point.perp=function(a,b){return void 0===b&&(b=new c.Point),b.setTo(-a.y,a.x)},c.Point.rperp=function(a,b){return void 0===b&&(b=new c.Point),b.setTo(a.y,-a.x)},c.Point.distance=function(a,b,d){var e=c.Math.distance(a.x,a.y,b.x,b.y);return d?Math.round(e):e},c.Point.project=function(a,b,d){void 0===d&&(d=new c.Point);var e=a.dot(b)/b.getMagnitudeSq();return 0!==e&&d.setTo(e*b.x,e*b.y),d},c.Point.projectUnit=function(a,b,d){void 0===d&&(d=new c.Point);var e=a.dot(b);return 0!==e&&d.setTo(e*b.x,e*b.y),d},c.Point.normalRightHand=function(a,b){return void 0===b&&(b=new c.Point),b.setTo(-1*a.y,a.x)},c.Point.normalize=function(a,b){void 0===b&&(b=new c.Point);var d=a.getMagnitude();return 0!==d&&b.setTo(a.x/d,a.y/d),b},c.Point.rotate=function(a,b,d,e,f,g){if(f&&(e=c.Math.degToRad(e)),void 0===g){a.subtract(b,d);var h=Math.sin(e),i=Math.cos(e),j=i*a.x-h*a.y,k=h*a.x+i*a.y;a.x=j+b,a.y=k+d}else{var l=e+Math.atan2(a.y-d,a.x-b);a.x=b+g*Math.cos(l),a.y=d+g*Math.sin(l)}return a},c.Point.centroid=function(a,b){if(void 0===b&&(b=new c.Point),"[object Array]"!==Object.prototype.toString.call(a))throw new Error("Phaser.Point. Parameter 'points' must be an array");var d=a.length;if(1>d)throw new Error("Phaser.Point. Parameter 'points' array must not be empty");if(1===d)return b.copyFrom(a[0]),b;for(var e=0;d>e;e++)c.Point.add(b,a[e],b);return b.divide(d,d),b},c.Point.parse=function(a,b,d){b=b||"x",d=d||"y";var e=new c.Point;return a[b]&&(e.x=parseInt(a[b],10)),a[d]&&(e.y=parseInt(a[d],10)),e},PIXI.Point=c.Point,c.Polygon=function(){this.area=0,this._points=[],arguments.length>0&&this.setTo.apply(this,arguments),this.closed=!0,this.type=c.POLYGON},c.Polygon.prototype={toNumberArray:function(a){void 0===a&&(a=[]);for(var b=0;b=h&&j>b||b>=j&&h>b)&&(i-g)*(b-h)/(j-h)+g>a&&(d=!d)}return d},setTo:function(a){if(this.area=0,this._points=[],arguments.length>0){Array.isArray(a)||(a=Array.prototype.slice.call(arguments));for(var b=Number.MAX_VALUE,c=0,d=a.length;d>c;c++){if("number"==typeof a[c]){var e=new PIXI.Point(a[c],a[c+1]);c++}else if(Array.isArray(a[c]))var e=new PIXI.Point(a[c][0],a[c][1]);else var e=new PIXI.Point(a[c].x,a[c].y);this._points.push(e),e.yf;f++)b=this._points[f],c=f===g-1?this._points[0]:this._points[f+1],d=(b.y-a+(c.y-a))/2,e=b.x-c.x,this.area+=d*e;return this.area}},c.Polygon.prototype.constructor=c.Polygon,Object.defineProperty(c.Polygon.prototype,"points",{get:function(){return this._points},set:function(a){null!=a?this.setTo(a):this.setTo()}}),PIXI.Polygon=c.Polygon,c.Rectangle=function(a,b,d,e){a=a||0,b=b||0,d=d||0,e=e||0,this.x=a,this.y=b,this.width=d,this.height=e,this.type=c.RECTANGLE},c.Rectangle.prototype={offset:function(a,b){return this.x+=a,this.y+=b,this},offsetPoint:function(a){return this.offset(a.x,a.y)},setTo:function(a,b,c,d){return this.x=a,this.y=b,this.width=c,this.height=d,this},scale:function(a,b){return void 0===b&&(b=a),this.width*=a,this.height*=b,this},centerOn:function(a,b){return this.centerX=a,this.centerY=b,this},floor:function(){this.x=Math.floor(this.x),this.y=Math.floor(this.y)},floorAll:function(){this.x=Math.floor(this.x),this.y=Math.floor(this.y),this.width=Math.floor(this.width),this.height=Math.floor(this.height)},ceil:function(){this.x=Math.ceil(this.x),this.y=Math.ceil(this.y)},ceilAll:function(){this.x=Math.ceil(this.x),this.y=Math.ceil(this.y),this.width=Math.ceil(this.width),this.height=Math.ceil(this.height)},copyFrom:function(a){return this.setTo(a.x,a.y,a.width,a.height)},copyTo:function(a){return a.x=this.x,a.y=this.y,a.width=this.width,a.height=this.height,a},inflate:function(a,b){return c.Rectangle.inflate(this,a,b)},size:function(a){return c.Rectangle.size(this,a)},resize:function(a,b){return this.width=a,this.height=b,this},clone:function(a){return c.Rectangle.clone(this,a)},contains:function(a,b){return c.Rectangle.contains(this,a,b)},containsRect:function(a){return c.Rectangle.containsRect(a,this)},equals:function(a){return c.Rectangle.equals(this,a)},intersection:function(a,b){return c.Rectangle.intersection(this,a,b)},intersects:function(a){return c.Rectangle.intersects(this,a)},intersectsRaw:function(a,b,d,e,f){return c.Rectangle.intersectsRaw(this,a,b,d,e,f)},union:function(a,b){return c.Rectangle.union(this,a,b)},random:function(a){return void 0===a&&(a=new c.Point),a.x=this.randomX,a.y=this.randomY,a},getPoint:function(a,b){switch(void 0===b&&(b=new c.Point),a){default:case c.TOP_LEFT:return b.set(this.x,this.y);case c.TOP_CENTER:return b.set(this.centerX,this.y);case c.TOP_RIGHT:return b.set(this.right,this.y);case c.LEFT_CENTER:return b.set(this.x,this.centerY);case c.CENTER:return b.set(this.centerX,this.centerY);case c.RIGHT_CENTER:return b.set(this.right,this.centerY);case c.BOTTOM_LEFT:return b.set(this.x,this.bottom);case c.BOTTOM_CENTER:return b.set(this.centerX,this.bottom);case c.BOTTOM_RIGHT:return b.set(this.right,this.bottom)}},toString:function(){return"[{Rectangle (x="+this.x+" y="+this.y+" width="+this.width+" height="+this.height+" empty="+this.empty+")}]"}},Object.defineProperty(c.Rectangle.prototype,"halfWidth",{get:function(){return Math.round(this.width/2)}}),Object.defineProperty(c.Rectangle.prototype,"halfHeight",{get:function(){return Math.round(this.height/2)}}),Object.defineProperty(c.Rectangle.prototype,"bottom",{get:function(){return this.y+this.height},set:function(a){a<=this.y?this.height=0:this.height=a-this.y}}),Object.defineProperty(c.Rectangle.prototype,"bottomLeft",{get:function(){return new c.Point(this.x,this.bottom)},set:function(a){this.x=a.x,this.bottom=a.y}}),Object.defineProperty(c.Rectangle.prototype,"bottomRight",{get:function(){return new c.Point(this.right,this.bottom)},set:function(a){this.right=a.x,this.bottom=a.y}}),Object.defineProperty(c.Rectangle.prototype,"left",{get:function(){return this.x},set:function(a){a>=this.right?this.width=0:this.width=this.right-a,this.x=a}}),Object.defineProperty(c.Rectangle.prototype,"right",{get:function(){return this.x+this.width},set:function(a){a<=this.x?this.width=0:this.width=a-this.x}}),Object.defineProperty(c.Rectangle.prototype,"volume",{get:function(){return this.width*this.height}}),Object.defineProperty(c.Rectangle.prototype,"perimeter",{get:function(){return 2*this.width+2*this.height}}),Object.defineProperty(c.Rectangle.prototype,"centerX",{get:function(){return this.x+this.halfWidth},set:function(a){this.x=a-this.halfWidth}}),Object.defineProperty(c.Rectangle.prototype,"centerY",{get:function(){return this.y+this.halfHeight},set:function(a){this.y=a-this.halfHeight}}),Object.defineProperty(c.Rectangle.prototype,"randomX",{get:function(){return this.x+Math.random()*this.width}}),Object.defineProperty(c.Rectangle.prototype,"randomY",{get:function(){return this.y+Math.random()*this.height}}),Object.defineProperty(c.Rectangle.prototype,"top",{get:function(){return this.y},set:function(a){a>=this.bottom?(this.height=0,this.y=a):this.height=this.bottom-a}}),Object.defineProperty(c.Rectangle.prototype,"topLeft",{get:function(){return new c.Point(this.x,this.y)},set:function(a){this.x=a.x,this.y=a.y}}),Object.defineProperty(c.Rectangle.prototype,"topRight",{get:function(){return new c.Point(this.x+this.width,this.y)},set:function(a){this.right=a.x,this.y=a.y}}),Object.defineProperty(c.Rectangle.prototype,"empty",{get:function(){return!this.width||!this.height},set:function(a){a===!0&&this.setTo(0,0,0,0)}}),c.Rectangle.prototype.constructor=c.Rectangle,c.Rectangle.inflate=function(a,b,c){return a.x-=b,a.width+=2*b,a.y-=c,a.height+=2*c,a},c.Rectangle.inflatePoint=function(a,b){return c.Rectangle.inflate(a,b.x,b.y)},c.Rectangle.size=function(a,b){return void 0===b||null===b?b=new c.Point(a.width,a.height):b.setTo(a.width,a.height),b},c.Rectangle.clone=function(a,b){return void 0===b||null===b?b=new c.Rectangle(a.x,a.y,a.width,a.height):b.setTo(a.x,a.y,a.width,a.height),b},c.Rectangle.contains=function(a,b,c){return a.width<=0||a.height<=0?!1:b>=a.x&&b=a.y&&c=a&&a+c>e&&f>=b&&b+d>f},c.Rectangle.containsPoint=function(a,b){return c.Rectangle.contains(a,b.x,b.y)},c.Rectangle.containsRect=function(a,b){return a.volume>b.volume?!1:a.x>=b.x&&a.y>=b.y&&a.rightb.right||a.y>b.bottom)},c.Rectangle.intersectsRaw=function(a,b,c,d,e,f){return void 0===f&&(f=0),!(b>a.right+f||ca.bottom+f||ed&&(d=a.x),a.xf&&(f=a.y),a.y=c&&a<=c+this.width){var d=this.y;if(b>=d&&b<=d+this.height)return!0}return!1}},c.RoundedRectangle.prototype.constructor=c.RoundedRectangle,PIXI.RoundedRectangle=c.RoundedRectangle,c.Camera=function(a,b,d,e,f,g){this.game=a,this.world=a.world,this.id=0,this.view=new c.Rectangle(d,e,f,g),this.bounds=new c.Rectangle(d,e,f,g),this.deadzone=null,this.visible=!0,this.roundPx=!0,this.atLimit={x:!1,y:!1},this.target=null,this.displayObject=null,this.scale=null,this.totalInView=0,this.lerp=new c.Point(1,1),this.onShakeComplete=new c.Signal,this.onFlashComplete=new c.Signal,this.onFadeComplete=new c.Signal,this.fx=null,this._targetPosition=new c.Point,this._edge=0,this._position=new c.Point,this._shake={intensity:0,duration:0,horizontal:!1,vertical:!1,shakeBounds:!0,x:0,y:0},this._fxDuration=0,this._fxType=0},c.Camera.FOLLOW_LOCKON=0,c.Camera.FOLLOW_PLATFORMER=1,c.Camera.FOLLOW_TOPDOWN=2,c.Camera.FOLLOW_TOPDOWN_TIGHT=3,c.Camera.SHAKE_BOTH=4,c.Camera.SHAKE_HORIZONTAL=5,c.Camera.SHAKE_VERTICAL=6,c.Camera.ENABLE_FX=!0,c.Camera.prototype={boot:function(){this.displayObject=this.game.world,this.scale=this.game.world.scale,this.game.camera=this,c.Graphics&&c.Camera.ENABLE_FX&&(this.fx=new c.Graphics(this.game),this.game.stage.addChild(this.fx))},preUpdate:function(){this.totalInView=0},follow:function(a,b,d,e){void 0===b&&(b=c.Camera.FOLLOW_LOCKON),void 0===d&&(d=1),void 0===e&&(e=1),this.target=a,this.lerp.set(d,e);var f;switch(b){case c.Camera.FOLLOW_PLATFORMER:var g=this.width/8,h=this.height/3;this.deadzone=new c.Rectangle((this.width-g)/2,(this.height-h)/2-.25*h,g,h);break;case c.Camera.FOLLOW_TOPDOWN:f=Math.max(this.width,this.height)/4,this.deadzone=new c.Rectangle((this.width-f)/2,(this.height-f)/2,f,f);break;case c.Camera.FOLLOW_TOPDOWN_TIGHT:f=Math.max(this.width,this.height)/8,this.deadzone=new c.Rectangle((this.width-f)/2,(this.height-f)/2,f,f);break;case c.Camera.FOLLOW_LOCKON:this.deadzone=null;break;default:this.deadzone=null}},unfollow:function(){this.target=null},focusOn:function(a){this.setPosition(Math.round(a.x-this.view.halfWidth),Math.round(a.y-this.view.halfHeight))},focusOnXY:function(a,b){this.setPosition(Math.round(a-this.view.halfWidth),Math.round(b-this.view.halfHeight))},shake:function(a,b,d,e,f){return void 0===a&&(a=.05),void 0===b&&(b=500),void 0===d&&(d=!0),void 0===e&&(e=c.Camera.SHAKE_BOTH),void 0===f&&(f=!0),!d&&this._shake.duration>0?!1:(this._shake.intensity=a,this._shake.duration=b,this._shake.shakeBounds=f,this._shake.x=0,this._shake.y=0,this._shake.horizontal=e===c.Camera.SHAKE_BOTH||e===c.Camera.SHAKE_HORIZONTAL,this._shake.vertical=e===c.Camera.SHAKE_BOTH||e===c.Camera.SHAKE_VERTICAL,!0)},flash:function(a,b,c){return void 0===a&&(a=16777215),void 0===b&&(b=500),void 0===c&&(c=!1),!this.fx||!c&&this._fxDuration>0?!1:(this.fx.clear(),this.fx.beginFill(a),this.fx.drawRect(0,0,this.width,this.height),this.fx.endFill(),this.fx.alpha=1,this._fxDuration=b,this._fxType=0,!0)},fade:function(a,b,c){return void 0===a&&(a=0),void 0===b&&(b=500),void 0===c&&(c=!1),!this.fx||!c&&this._fxDuration>0?!1:(this.fx.clear(),this.fx.beginFill(a),this.fx.drawRect(0,0,this.width,this.height),this.fx.endFill(),this.fx.alpha=0,this._fxDuration=b,this._fxType=1,!0)},update:function(){this._fxDuration>0&&this.updateFX(),this._shake.duration>0&&this.updateShake(),this.bounds&&this.checkBounds(),this.roundPx&&(this.view.floor(),this._shake.x=Math.floor(this._shake.x),this._shake.y=Math.floor(this._shake.y)),this.displayObject.position.x=-this.view.x,this.displayObject.position.y=-this.view.y},updateFX:function(){0===this._fxType?(this.fx.alpha-=this.game.time.elapsedMS/this._fxDuration,this.fx.alpha<=0&&(this._fxDuration=0,this.fx.alpha=0,this.onFlashComplete.dispatch())):(this.fx.alpha+=this.game.time.elapsedMS/this._fxDuration,this.fx.alpha>=1&&(this._fxDuration=0,this.fx.alpha=1,this.onFadeComplete.dispatch()))},updateShake:function(){this._shake.duration-=this.game.time.elapsedMS,this._shake.duration<=0?(this.onShakeComplete.dispatch(),this._shake.x=0,this._shake.y=0):(this._shake.horizontal&&(this._shake.x=this.game.rnd.frac()*this._shake.intensity*this.view.width*2-this._shake.intensity*this.view.width),this._shake.vertical&&(this._shake.y=this.game.rnd.frac()*this._shake.intensity*this.view.height*2-this._shake.intensity*this.view.height))},updateTarget:function(){this._targetPosition.x=this.view.x+this.target.worldPosition.x,this._targetPosition.y=this.view.y+this.target.worldPosition.y,this.deadzone?(this._edge=this._targetPosition.x-this.view.x,this._edgethis.deadzone.right&&(this.view.x=this.game.math.linear(this.view.x,this._targetPosition.x-this.deadzone.right,this.lerp.x)),this._edge=this._targetPosition.y-this.view.y,this._edgethis.deadzone.bottom&&(this.view.y=this.game.math.linear(this.view.y,this._targetPosition.y-this.deadzone.bottom,this.lerp.y))):(this.view.x=this.game.math.linear(this.view.x,this._targetPosition.x-this.view.halfWidth,this.lerp.x),this.view.y=this.game.math.linear(this.view.y,this._targetPosition.y-this.view.halfHeight,this.lerp.y)),this.bounds&&this.checkBounds(),this.roundPx&&this.view.floor(),this.displayObject.position.x=-this.view.x,this.displayObject.position.y=-this.view.y},setBoundsToWorld:function(){this.bounds&&this.bounds.copyFrom(this.game.world.bounds)},checkBounds:function(){this.atLimit.x=!1,this.atLimit.y=!1;var a=this.view.x+this._shake.x,b=this.view.right+this._shake.x,c=this.view.y+this._shake.y,d=this.view.bottom+this._shake.y;a<=this.bounds.x*this.scale.x&&(this.atLimit.x=!0,this.view.x=this.bounds.x*this.scale.x,this._shake.shakeBounds||(this._shake.x=0)),b>=this.bounds.right*this.scale.x&&(this.atLimit.x=!0,this.view.x=this.bounds.right*this.scale.x-this.width,this._shake.shakeBounds||(this._shake.x=0)),c<=this.bounds.top*this.scale.y&&(this.atLimit.y=!0,this.view.y=this.bounds.top*this.scale.y,this._shake.shakeBounds||(this._shake.y=0)),d>=this.bounds.bottom*this.scale.y&&(this.atLimit.y=!0,this.view.y=this.bounds.bottom*this.scale.y-this.height,this._shake.shakeBounds||(this._shake.y=0))},setPosition:function(a,b){this.view.x=a,this.view.y=b,this.bounds&&this.checkBounds()},setSize:function(a,b){this.view.width=a,this.view.height=b},reset:function(){this.target=null,this.view.x=0,this.view.y=0,this._shake.duration=0,this.resetFX()},resetFX:function(){this.fx.clear(),this.fx.alpha=0,this._fxDuration=0}},c.Camera.prototype.constructor=c.Camera,Object.defineProperty(c.Camera.prototype,"x",{get:function(){return this.view.x},set:function(a){this.view.x=a,this.bounds&&this.checkBounds()}}),Object.defineProperty(c.Camera.prototype,"y",{get:function(){return this.view.y},set:function(a){this.view.y=a,this.bounds&&this.checkBounds()}}),Object.defineProperty(c.Camera.prototype,"position",{get:function(){return this._position.set(this.view.x,this.view.y),this._position},set:function(a){"undefined"!=typeof a.x&&(this.view.x=a.x),"undefined"!=typeof a.y&&(this.view.y=a.y),this.bounds&&this.checkBounds()}}),Object.defineProperty(c.Camera.prototype,"width",{get:function(){return this.view.width},set:function(a){this.view.width=a}}),Object.defineProperty(c.Camera.prototype,"height",{get:function(){return this.view.height},set:function(a){this.view.height=a}}),Object.defineProperty(c.Camera.prototype,"shakeIntensity",{get:function(){return this._shake.intensity},set:function(a){this._shake.intensity=a}}),c.State=function(){this.game=null,this.key="",this.add=null,this.make=null,this.camera=null,this.cache=null,this.input=null,this.load=null,this.math=null,this.sound=null,this.scale=null,this.stage=null,this.state=null,this.time=null,this.tweens=null,this.world=null,this.particles=null,this.physics=null,this.rnd=null},c.State.prototype={init:function(){},preload:function(){},loadUpdate:function(){},loadRender:function(){},create:function(){},update:function(){},preRender:function(){},render:function(){},resize:function(){},paused:function(){},resumed:function(){},pauseUpdate:function(){},shutdown:function(){}},c.State.prototype.constructor=c.State,c.StateManager=function(a,b){this.game=a,this.states={},this._pendingState=null,"undefined"!=typeof b&&null!==b&&(this._pendingState=b),this._clearWorld=!1,this._clearCache=!1,this._created=!1,this._args=[],this.current="",this.onStateChange=new c.Signal,this.onInitCallback=null,this.onPreloadCallback=null,this.onCreateCallback=null,this.onUpdateCallback=null,this.onRenderCallback=null,this.onResizeCallback=null,this.onPreRenderCallback=null,this.onLoadUpdateCallback=null,this.onLoadRenderCallback=null,this.onPausedCallback=null,this.onResumedCallback=null,this.onPauseUpdateCallback=null,this.onShutDownCallback=null},c.StateManager.prototype={boot:function(){this.game.onPause.add(this.pause,this),this.game.onResume.add(this.resume,this),null!==this._pendingState&&"string"!=typeof this._pendingState&&this.add("default",this._pendingState,!0)},add:function(a,b,d){void 0===d&&(d=!1);var e;return b instanceof c.State?e=b:"object"==typeof b?(e=b,e.game=this.game):"function"==typeof b&&(e=new b(this.game)),this.states[a]=e,d&&(this.game.isBooted?this.start(a):this._pendingState=a),e},remove:function(a){this.current===a&&(this.callbackContext=null,this.onInitCallback=null,this.onShutDownCallback=null,this.onPreloadCallback=null,this.onLoadRenderCallback=null,this.onLoadUpdateCallback=null,this.onCreateCallback=null,this.onUpdateCallback=null,this.onPreRenderCallback=null,this.onRenderCallback=null,this.onResizeCallback=null,this.onPausedCallback=null,this.onResumedCallback=null,this.onPauseUpdateCallback=null),delete this.states[a]},start:function(a,b,c){void 0===b&&(b=!0),void 0===c&&(c=!1),this.checkState(a)&&(this._pendingState=a,this._clearWorld=b,this._clearCache=c,arguments.length>3&&(this._args=Array.prototype.splice.call(arguments,3)))},restart:function(a,b){void 0===a&&(a=!0),void 0===b&&(b=!1),this._pendingState=this.current,this._clearWorld=a,this._clearCache=b,arguments.length>2&&(this._args=Array.prototype.slice.call(arguments,2))},dummy:function(){},preUpdate:function(){if(this._pendingState&&this.game.isBooted){var a=this.current;if(this.clearCurrentState(),this.setCurrentState(this._pendingState),this.onStateChange.dispatch(this.current,a),this.current!==this._pendingState)return;this._pendingState=null,this.onPreloadCallback?(this.game.load.reset(!0),this.onPreloadCallback.call(this.callbackContext,this.game),0===this.game.load.totalQueuedFiles()&&0===this.game.load.totalQueuedPacks()?this.loadComplete():this.game.load.start()):this.loadComplete()}},clearCurrentState:function(){this.current&&(this.onShutDownCallback&&this.onShutDownCallback.call(this.callbackContext,this.game),this.game.tweens.removeAll(),this.game.camera.reset(),this.game.input.reset(!0),this.game.physics.clear(),this.game.time.removeAll(),this.game.scale.reset(this._clearWorld),this.game.debug&&this.game.debug.reset(),this._clearWorld&&(this.game.world.shutdown(),this._clearCache&&this.game.cache.destroy()))},checkState:function(a){return this.states[a]?this.states[a].preload||this.states[a].create||this.states[a].update||this.states[a].render?!0:(console.warn("Invalid Phaser State object given. Must contain at least a one of the required functions: preload, create, update or render"),!1):(console.warn("Phaser.StateManager - No state found with the key: "+a),!1)},link:function(a){this.states[a].game=this.game,this.states[a].add=this.game.add,this.states[a].make=this.game.make,this.states[a].camera=this.game.camera,this.states[a].cache=this.game.cache,this.states[a].input=this.game.input,this.states[a].load=this.game.load,this.states[a].math=this.game.math,this.states[a].sound=this.game.sound,this.states[a].scale=this.game.scale,this.states[a].state=this,this.states[a].stage=this.game.stage,this.states[a].time=this.game.time,this.states[a].tweens=this.game.tweens,this.states[a].world=this.game.world,this.states[a].particles=this.game.particles,this.states[a].rnd=this.game.rnd,this.states[a].physics=this.game.physics,this.states[a].key=a},unlink:function(a){this.states[a]&&(this.states[a].game=null,this.states[a].add=null,this.states[a].make=null,this.states[a].camera=null,this.states[a].cache=null,this.states[a].input=null,this.states[a].load=null,this.states[a].math=null,this.states[a].sound=null,this.states[a].scale=null,this.states[a].state=null,this.states[a].stage=null,this.states[a].time=null,this.states[a].tweens=null,this.states[a].world=null,this.states[a].particles=null,this.states[a].rnd=null,this.states[a].physics=null)},setCurrentState:function(a){this.callbackContext=this.states[a],this.link(a),this.onInitCallback=this.states[a].init||this.dummy,this.onPreloadCallback=this.states[a].preload||null,this.onLoadRenderCallback=this.states[a].loadRender||null,this.onLoadUpdateCallback=this.states[a].loadUpdate||null,this.onCreateCallback=this.states[a].create||null,this.onUpdateCallback=this.states[a].update||null,this.onPreRenderCallback=this.states[a].preRender||null,this.onRenderCallback=this.states[a].render||null,this.onResizeCallback=this.states[a].resize||null,this.onPausedCallback=this.states[a].paused||null,this.onResumedCallback=this.states[a].resumed||null,this.onPauseUpdateCallback=this.states[a].pauseUpdate||null,this.onShutDownCallback=this.states[a].shutdown||this.dummy,""!==this.current&&this.game.physics.reset(),this.current=a,this._created=!1,this.onInitCallback.apply(this.callbackContext,this._args),a===this._pendingState&&(this._args=[]),this.game._kickstart=!0},getCurrentState:function(){return this.states[this.current]},loadComplete:function(){this._created===!1&&this.onLoadUpdateCallback&&this.onLoadUpdateCallback.call(this.callbackContext,this.game),this._created===!1&&this.onCreateCallback?(this._created=!0,this.onCreateCallback.call(this.callbackContext,this.game)):this._created=!0},pause:function(){this._created&&this.onPausedCallback&&this.onPausedCallback.call(this.callbackContext,this.game)},resume:function(){this._created&&this.onResumedCallback&&this.onResumedCallback.call(this.callbackContext,this.game)},update:function(){this._created?this.onUpdateCallback&&this.onUpdateCallback.call(this.callbackContext,this.game):this.onLoadUpdateCallback&&this.onLoadUpdateCallback.call(this.callbackContext,this.game)},pauseUpdate:function(){this._created?this.onPauseUpdateCallback&&this.onPauseUpdateCallback.call(this.callbackContext,this.game):this.onLoadUpdateCallback&&this.onLoadUpdateCallback.call(this.callbackContext,this.game)},preRender:function(a){this._created&&this.onPreRenderCallback&&this.onPreRenderCallback.call(this.callbackContext,this.game,a)},resize:function(a,b){this.onResizeCallback&&this.onResizeCallback.call(this.callbackContext,a,b)},render:function(){this._created?this.onRenderCallback&&(this.game.renderType===c.CANVAS?(this.game.context.save(),this.game.context.setTransform(1,0,0,1,0,0),this.onRenderCallback.call(this.callbackContext,this.game),this.game.context.restore()):this.onRenderCallback.call(this.callbackContext,this.game)):this.onLoadRenderCallback&&this.onLoadRenderCallback.call(this.callbackContext,this.game)},destroy:function(){this._clearWorld=!0,this._clearCache=!0,this.clearCurrentState(),this.callbackContext=null,this.onInitCallback=null,this.onShutDownCallback=null,this.onPreloadCallback=null,this.onLoadRenderCallback=null,this.onLoadUpdateCallback=null,this.onCreateCallback=null,this.onUpdateCallback=null,this.onRenderCallback=null,this.onPausedCallback=null,this.onResumedCallback=null,this.onPauseUpdateCallback=null,this.game=null,this.states={},this._pendingState=null,this.current=""}},c.StateManager.prototype.constructor=c.StateManager,Object.defineProperty(c.StateManager.prototype,"created",{get:function(){return this._created}}),c.Signal=function(){},c.Signal.prototype={_bindings:null,_prevParams:null,memorize:!1,_shouldPropagate:!0,active:!0,_boundDispatch:!1,validateListener:function(a,b){if("function"!=typeof a)throw new Error("Phaser.Signal: listener is a required param of {fn}() and should be a Function.".replace("{fn}",b))},_registerListener:function(a,b,d,e,f){var g,h=this._indexOfListener(a,d);if(-1!==h){if(g=this._bindings[h],g.isOnce()!==b)throw new Error("You cannot add"+(b?"":"Once")+"() then add"+(b?"Once":"")+"() the same listener without removing the relationship first.")}else g=new c.SignalBinding(this,a,b,d,e,f),this._addBinding(g);return this.memorize&&this._prevParams&&g.execute(this._prevParams),g},_addBinding:function(a){this._bindings||(this._bindings=[]);var b=this._bindings.length;do b--;while(this._bindings[b]&&a._priority<=this._bindings[b]._priority);this._bindings.splice(b+1,0,a)},_indexOfListener:function(a,b){if(!this._bindings)return-1;void 0===b&&(b=null);for(var c,d=this._bindings.length;d--;)if(c=this._bindings[d],c._listener===a&&c.context===b)return d;return-1},has:function(a,b){return-1!==this._indexOfListener(a,b)},add:function(a,b,c){this.validateListener(a,"add");var d=[];if(arguments.length>3)for(var e=3;e3)for(var e=3;ea||a>=this.children.length?-1:this.getChildAt(a)},c.Group.prototype.create=function(a,b,c,d,e,f){void 0===e&&(e=!0);var g=new this.classType(this.game,a,b,c,d);return g.exists=e,g.visible=e,g.alive=e,this.add(g,!1,f)},c.Group.prototype.createMultiple=function(a,b,c,d){void 0===c&&(c=0),void 0===d&&(d=!1),Array.isArray(b)||(b=[b]),Array.isArray(c)||(c=[c]);var e=this,f=[];return b.forEach(function(b){c.forEach(function(c){for(var g=0;a>g;g++)f.push(e.create(0,0,b,c,d))})}),f},c.Group.prototype.updateZ=function(){for(var a=this.children.length;a--;)this.children[a].z=a},c.Group.prototype.align=function(a,b,d,e,f,g){if(void 0===f&&(f=c.TOP_LEFT),void 0===g&&(g=0),!(0===this.children.length||g>this.children.length||-1===a&&-1===b))for(var h=new c.Rectangle(0,0,d,e),i=a*d,j=b*e,k=g;kthis.children.length-1&&(a=0),this.cursor?(this.cursorIndex=a,this.cursor=this.children[this.cursorIndex],this.cursor):void 0},c.Group.prototype.next=function(){return this.cursor?(this.cursorIndex>=this.children.length-1?this.cursorIndex=0:this.cursorIndex++,this.cursor=this.children[this.cursorIndex],this.cursor):void 0},c.Group.prototype.previous=function(){return this.cursor?(0===this.cursorIndex?this.cursorIndex=this.children.length-1:this.cursorIndex--,this.cursor=this.children[this.cursorIndex],this.cursor):void 0},c.Group.prototype.swap=function(a,b){this.swapChildren(a,b),this.updateZ()},c.Group.prototype.bringToTop=function(a){return a.parent===this&&this.getIndex(a)0&&(this.remove(a,!1,!0),this.addAt(a,0,!0)),a},c.Group.prototype.moveUp=function(a){if(a.parent===this&&this.getIndex(a)0){var b=this.getIndex(a),c=this.getAt(b-1);c&&this.swap(a,c)}return a},c.Group.prototype.xy=function(a,b,c){return 0>a||a>this.children.length?-1:(this.getChildAt(a).x=b,void(this.getChildAt(a).y=c))},c.Group.prototype.reverse=function(){this.children.reverse(),this.updateZ()},c.Group.prototype.getIndex=function(a){return this.children.indexOf(a)},c.Group.prototype.getByName=function(a){for(var b=0;b0))return!1;var f=b.length;return 1===f?0===d?a[b[0]]=c:1==d?a[b[0]]+=c:2==d?a[b[0]]-=c:3==d?a[b[0]]*=c:4==d&&(a[b[0]]/=c):2===f?0===d?a[b[0]][b[1]]=c:1==d?a[b[0]][b[1]]+=c:2==d?a[b[0]][b[1]]-=c:3==d?a[b[0]][b[1]]*=c:4==d&&(a[b[0]][b[1]]/=c):3===f?0===d?a[b[0]][b[1]][b[2]]=c:1==d?a[b[0]][b[1]][b[2]]+=c:2==d?a[b[0]][b[1]][b[2]]-=c:3==d?a[b[0]][b[1]][b[2]]*=c:4==d&&(a[b[0]][b[1]][b[2]]/=c):4===f&&(0===d?a[b[0]][b[1]][b[2]][b[3]]=c:1==d?a[b[0]][b[1]][b[2]][b[3]]+=c:2==d?a[b[0]][b[1]][b[2]][b[3]]-=c:3==d?a[b[0]][b[1]][b[2]][b[3]]*=c:4==d&&(a[b[0]][b[1]][b[2]][b[3]]/=c)),!0},c.Group.prototype.checkProperty=function(a,b,d,e){return void 0===e&&(e=!1),!c.Utils.getProperty(a,b)&&e?!1:c.Utils.getProperty(a,b)!==d?!1:!0},c.Group.prototype.set=function(a,b,c,d,e,f,g){return void 0===g&&(g=!1),b=b.split("."),void 0===d&&(d=!1),void 0===e&&(e=!1),(d===!1||d&&a.alive)&&(e===!1||e&&a.visible)?this.setProperty(a,b,c,f,g):void 0},c.Group.prototype.setAll=function(a,b,c,d,e,f){void 0===c&&(c=!1),void 0===d&&(d=!1),void 0===f&&(f=!1),a=a.split("."),e=e||0;for(var g=0;g2){c=[];for(var d=2;d2){e=[];for(var f=2;f2){d=[null];for(var e=2;e2){d=[null];for(var e=2;e2){d=[null];for(var e=2;eb[this._sortProperty]?1:a.zb[this._sortProperty]?-1:0},c.Group.prototype.iterate=function(a,b,d,e,f,g){if(d===c.Group.RETURN_TOTAL&&0===this.children.length)return 0;for(var h=0,i=0;i0?this.children[this.children.length-1]:void 0},c.Group.prototype.getBottom=function(){return this.children.length>0?this.children[0]:void 0},c.Group.prototype.getClosestTo=function(a){for(var b=Number.MAX_VALUE,d=0,e=null,f=0;fd&&(b=d,e=g))}return e},c.Group.prototype.getFurthestFrom=function(a){for(var b=0,d=0,e=null,f=0;fb&&(b=d,e=g))}return e},c.Group.prototype.countLiving=function(){return this.iterate("alive",!0,c.Group.RETURN_TOTAL)},c.Group.prototype.countDead=function(){return this.iterate("alive",!1,c.Group.RETURN_TOTAL)},c.Group.prototype.getRandom=function(a,b){return 0===this.children.length?null:(a=a||0,b=b||this.children.length,c.ArrayUtils.getRandomItem(this.children,a,b))},c.Group.prototype.remove=function(a,b,c){if(void 0===b&&(b=!1),void 0===c&&(c=!1),0===this.children.length||-1===this.children.indexOf(a))return!1;c||!a.events||a.destroyPhase||a.events.onRemovedFromGroup$dispatch(a,this);var d=this.removeChild(a);return this.removeFromHash(a),this.updateZ(),this.cursor===a&&this.next(),b&&d&&d.destroy(!0),!0},c.Group.prototype.moveAll=function(a,b){if(void 0===b&&(b=!1),this.children.length>0&&a instanceof c.Group){do a.add(this.children[0],b);while(this.children.length>0);this.hash=[],this.cursor=null}return a},c.Group.prototype.removeAll=function(a,b,c){if(void 0===a&&(a=!1),void 0===b&&(b=!1),void 0===c&&(c=!1),0!==this.children.length){do{!b&&this.children[0].events&&this.children[0].events.onRemovedFromGroup$dispatch(this.children[0],this);var d=this.removeChild(this.children[0]);this.removeFromHash(d),a&&d&&d.destroy(!0,c)}while(this.children.length>0);this.hash=[],this.cursor=null}},c.Group.prototype.removeBetween=function(a,b,c,d){if(void 0===b&&(b=this.children.length-1),void 0===c&&(c=!1),void 0===d&&(d=!1),0!==this.children.length){if(a>b||0>a||b>this.children.length)return!1;for(var e=b;e>=a;){!d&&this.children[e].events&&this.children[e].events.onRemovedFromGroup$dispatch(this.children[e],this);var f=this.removeChild(this.children[e]);this.removeFromHash(f),c&&f&&f.destroy(!0),this.cursor===this.children[e]&&(this.cursor=null),e--}this.updateZ()}},c.Group.prototype.destroy=function(a,b){null===this.game||this.ignoreDestroy||(void 0===a&&(a=!0),void 0===b&&(b=!1),this.onDestroy.dispatch(this,a,b),this.removeAll(a),this.cursor=null,this.filters=null,this.pendingDestroy=!1,b||(this.parent&&this.parent.removeChild(this),this.game=null,this.exists=!1))},Object.defineProperty(c.Group.prototype,"total",{get:function(){return this.iterate("exists",!0,c.Group.RETURN_TOTAL)}}),Object.defineProperty(c.Group.prototype,"length",{get:function(){return this.children.length}}),Object.defineProperty(c.Group.prototype,"angle",{get:function(){return c.Math.radToDeg(this.rotation)},set:function(a){this.rotation=c.Math.degToRad(a)}}),c.World=function(a){c.Group.call(this,a,null,"__world",!1),this.bounds=new c.Rectangle(0,0,a.width,a.height),this.camera=null,this._definedSize=!1,this._width=a.width,this._height=a.height,this.game.state.onStateChange.add(this.stateChange,this)},c.World.prototype=Object.create(c.Group.prototype),c.World.prototype.constructor=c.World,c.World.prototype.boot=function(){this.camera=new c.Camera(this.game,0,0,0,this.game.width,this.game.height),this.game.stage.addChild(this),this.camera.boot()},c.World.prototype.stateChange=function(){this.x=0,this.y=0,this.camera.reset()},c.World.prototype.setBounds=function(a,b,c,d){this._definedSize=!0,this._width=c,this._height=d,this.bounds.setTo(a,b,c,d),this.x=a,this.y=b,this.camera.bounds&&this.camera.bounds.setTo(a,b,Math.max(c,this.game.width),Math.max(d,this.game.height)),this.game.physics.setBoundsToWorld()},c.World.prototype.resize=function(a,b){this._definedSize&&(athis.bounds.right&&(a.x=this.bounds.left)),e&&(a.y+a._currentBounds.heightthis.bounds.bottom&&(a.y=this.bounds.top))):(d&&a.x+bthis.bounds.right&&(a.x=this.bounds.left-b),e&&a.y+bthis.bounds.bottom&&(a.y=this.bounds.top-b))},Object.defineProperty(c.World.prototype,"width",{get:function(){return this.bounds.width},set:function(a){ag;g++)e>g?f.push("color: #ff2424; background: #fff"):f.push("color: #959595; background: #fff");console.log.apply(console,f)}else window.console&&console.log("Phaser v"+a+" | Pixi.js "+PIXI.VERSION+" | "+b+" | "+d+" | http://phaser.io")}},setUpRenderer:function(){if(this.config.canvas?this.canvas=this.config.canvas:this.canvas=c.Canvas.create(this,this.width,this.height,this.config.canvasID,!0),this.config.canvasStyle?this.canvas.style=this.config.canvasStyle:this.canvas.style["-webkit-full-screen"]="width: 100%; height: 100%",this.renderType===c.HEADLESS||this.renderType===c.CANVAS||this.renderType===c.AUTO&&!this.device.webGL){if(!this.device.canvas)throw new Error("Phaser.Game - Cannot create Canvas or WebGL context, aborting.");this.renderType=c.CANVAS,this.renderer=new PIXI.CanvasRenderer(this),this.context=this.renderer.context}else this.renderType=c.WEBGL,this.renderer=new PIXI.WebGLRenderer(this),this.context=null,this.canvas.addEventListener("webglcontextlost",this.contextLost.bind(this),!1),this.canvas.addEventListener("webglcontextrestored",this.contextRestored.bind(this),!1);this.device.cocoonJS&&(this.canvas.screencanvas=this.renderType===c.CANVAS?!0:!1),this.renderType!==c.HEADLESS&&(this.stage.smoothed=this.antialias,c.Canvas.addToDOM(this.canvas,this.parent,!1),c.Canvas.setTouchAction(this.canvas))},contextLost:function(a){a.preventDefault(),this.renderer.contextLost=!0},contextRestored:function(){this.renderer.initContext(),this.cache.clearGLTextures(),this.renderer.contextLost=!1},update:function(a){if(this.time.update(a),this._kickstart)return this.updateLogic(this.time.desiredFpsMult),this.updateRender(this.time.slowMotion*this.time.desiredFps),void(this._kickstart=!1);if(this._spiraling>1&&!this.forceSingleUpdate)this.time.time>this._nextFpsNotification&&(this._nextFpsNotification=this.time.time+1e4,this.fpsProblemNotifier.dispatch()),this._deltaTime=0,this._spiraling=0,this.updateRender(this.time.slowMotion*this.time.desiredFps);else{var b=1e3*this.time.slowMotion/this.time.desiredFps;this._deltaTime+=Math.max(Math.min(3*b,this.time.elapsed),0);var c=0;for(this.updatesThisFrame=Math.floor(this._deltaTime/b), -this.forceSingleUpdate&&(this.updatesThisFrame=Math.min(1,this.updatesThisFrame));this._deltaTime>=b&&(this._deltaTime-=b,this.currentUpdateID=c,this.updateLogic(this.time.desiredFpsMult),c++,!this.forceSingleUpdate||1!==c);)this.time.refresh();c>this._lastCount?this._spiraling++:c=c.Input.MAX_POINTERS)return console.warn("Phaser.Input.addPointer: Maximum limit of "+c.Input.MAX_POINTERS+" pointers reached."),null;var a=this.pointers.length+1,b=new c.Pointer(this.game,a,c.PointerMode.TOUCH);return this.pointers.push(b),this["pointer"+a]=b,b},update:function(){if(this.keyboard&&this.keyboard.update(),this.pollRate>0&&this._pollCounter=0&&this.countActivePointers(this.maxPointers)>=this.maxPointers)return null;if(!this.pointer1.active)return this.pointer1.start(a);if(!this.pointer2.active)return this.pointer2.start(a);for(var b=2;b0;c++){var d=this.pointers[c];d.active&&b--}return a-b},getPointer:function(a){void 0===a&&(a=!1);for(var b=0;b=g&&this._localPoint.x=h&&this._localPoint.y=g&&this._localPoint.x=h&&this._localPoint.y0&&this._pollCounterthis.game.time.time},justReleased:function(a){return a=a||250,this.isUp&&this.timeUp+a>this.game.time.time},reset:function(){this.isDown=!1,this.isUp=!0,this.timeDown=this.game.time.time,this.repeats=0,this.altKey=!1,this.shiftKey=!1,this.ctrlKey=!1},destroy:function(){this.onDown.dispose(),this.onUp.dispose(),this.onFloat.dispose(),this.parent=null,this.game=null}},c.DeviceButton.prototype.constructor=c.DeviceButton,Object.defineProperty(c.DeviceButton.prototype,"duration",{get:function(){return this.isUp?-1:this.game.time.time-this.timeDown}}),c.Pointer=function(a,b,d){this.game=a,this.id=b,this.type=c.POINTER,this.exists=!0,this.identifier=0,this.pointerId=null,this.pointerMode=d||c.PointerMode.CURSOR|c.PointerMode.CONTACT,this.target=null,this.button=null,this.leftButton=new c.DeviceButton(this,c.Pointer.LEFT_BUTTON),this.middleButton=new c.DeviceButton(this,c.Pointer.MIDDLE_BUTTON),this.rightButton=new c.DeviceButton(this,c.Pointer.RIGHT_BUTTON),this.backButton=new c.DeviceButton(this,c.Pointer.BACK_BUTTON),this.forwardButton=new c.DeviceButton(this,c.Pointer.FORWARD_BUTTON),this.eraserButton=new c.DeviceButton(this,c.Pointer.ERASER_BUTTON),this._holdSent=!1,this._history=[],this._nextDrop=0,this._stateReset=!1,this.withinGame=!1,this.clientX=-1,this.clientY=-1,this.pageX=-1,this.pageY=-1,this.screenX=-1,this.screenY=-1,this.rawMovementX=0,this.rawMovementY=0,this.movementX=0,this.movementY=0,this.x=-1,this.y=-1,this.isMouse=0===b,this.isDown=!1,this.isUp=!0,this.timeDown=0,this.timeUp=0,this.previousTapTime=0,this.totalTouches=0,this.msSinceLastClick=Number.MAX_VALUE,this.targetObject=null,this.interactiveCandidates=[],this.active=!1,this.dirty=!1,this.position=new c.Point,this.positionDown=new c.Point,this.positionUp=new c.Point,this.circle=new c.Circle(0,0,44),this._clickTrampolines=null,this._trampolineTargetObject=null},c.Pointer.NO_BUTTON=0,c.Pointer.LEFT_BUTTON=1,c.Pointer.RIGHT_BUTTON=2,c.Pointer.MIDDLE_BUTTON=4,c.Pointer.BACK_BUTTON=8,c.Pointer.FORWARD_BUTTON=16,c.Pointer.ERASER_BUTTON=32,c.Pointer.prototype={resetButtons:function(){this.isDown=!1,this.isUp=!0,this.isMouse&&(this.leftButton.reset(),this.middleButton.reset(),this.rightButton.reset(),this.backButton.reset(),this.forwardButton.reset(),this.eraserButton.reset())},processButtonsDown:function(a,b){c.Pointer.LEFT_BUTTON&a&&this.leftButton.start(b),c.Pointer.RIGHT_BUTTON&a&&this.rightButton.start(b),c.Pointer.MIDDLE_BUTTON&a&&this.middleButton.start(b),c.Pointer.BACK_BUTTON&a&&this.backButton.start(b),c.Pointer.FORWARD_BUTTON&a&&this.forwardButton.start(b),c.Pointer.ERASER_BUTTON&a&&this.eraserButton.start(b)},processButtonsUp:function(a,b){a===c.Mouse.LEFT_BUTTON&&this.leftButton.stop(b),a===c.Mouse.RIGHT_BUTTON&&this.rightButton.stop(b),a===c.Mouse.MIDDLE_BUTTON&&this.middleButton.stop(b),a===c.Mouse.BACK_BUTTON&&this.backButton.stop(b),a===c.Mouse.FORWARD_BUTTON&&this.forwardButton.stop(b),5===a&&this.eraserButton.stop(b)},updateButtons:function(a){this.button=a.button;var b="down"===a.type.toLowerCase().substr(-4);void 0!==a.buttons?b?this.processButtonsDown(a.buttons,a):this.processButtonsUp(a.button,a):b?this.leftButton.start(a):(this.leftButton.stop(a),this.rightButton.stop(a)),1===a.buttons&&a.ctrlKey&&this.leftButton.isDown&&(this.leftButton.stop(a),this.rightButton.start(a)),this.isUp=!0,this.isDown=!1,(this.leftButton.isDown||this.rightButton.isDown||this.middleButton.isDown||this.backButton.isDown||this.forwardButton.isDown||this.eraserButton.isDown)&&(this.isUp=!1,this.isDown=!0)},start:function(a){var b=this.game.input;return a.pointerId&&(this.pointerId=a.pointerId),this.identifier=a.identifier,this.target=a.target,this.isMouse?this.updateButtons(a):(this.isDown=!0,this.isUp=!1),this.active=!0,this.withinGame=!0,this.dirty=!1,this._history=[],this._clickTrampolines=null,this._trampolineTargetObject=null,this.msSinceLastClick=this.game.time.time-this.timeDown,this.timeDown=this.game.time.time,this._holdSent=!1,this.move(a,!0),this.positionDown.setTo(this.x,this.y),(b.multiInputOverride===c.Input.MOUSE_OVERRIDES_TOUCH||b.multiInputOverride===c.Input.MOUSE_TOUCH_COMBINE||b.multiInputOverride===c.Input.TOUCH_OVERRIDES_MOUSE&&0===b.totalActivePointers)&&(b.x=this.x,b.y=this.y,b.position.setTo(this.x,this.y),b.onDown.dispatch(this,a),b.resetSpeed(this.x,this.y)),this._stateReset=!1,this.totalTouches++,null!==this.targetObject&&this.targetObject._touchedHandler(this),this},update:function(){var a=this.game.input;this.active&&(this.dirty&&(a.interactiveItems.total>0&&this.processInteractiveObjects(!1),this.dirty=!1),this._holdSent===!1&&this.duration>=a.holdRate&&((a.multiInputOverride===c.Input.MOUSE_OVERRIDES_TOUCH||a.multiInputOverride===c.Input.MOUSE_TOUCH_COMBINE||a.multiInputOverride===c.Input.TOUCH_OVERRIDES_MOUSE&&0===a.totalActivePointers)&&a.onHold.dispatch(this),this._holdSent=!0),a.recordPointerHistory&&this.game.time.time>=this._nextDrop&&(this._nextDrop=this.game.time.time+a.recordRate,this._history.push({x:this.position.x,y:this.position.y}),this._history.length>a.recordLimit&&this._history.shift()))},move:function(a,b){var d=this.game.input;if(!d.pollLocked){if(void 0===b&&(b=!1),void 0!==a.button&&(this.button=a.button),b&&this.isMouse&&this.updateButtons(a),this.clientX=a.clientX,this.clientY=a.clientY,this.pageX=a.pageX,this.pageY=a.pageY,this.screenX=a.screenX,this.screenY=a.screenY,this.isMouse&&d.mouse.locked&&!b&&(this.rawMovementX=a.movementX||a.mozMovementX||a.webkitMovementX||0,this.rawMovementY=a.movementY||a.mozMovementY||a.webkitMovementY||0,this.movementX+=this.rawMovementX,this.movementY+=this.rawMovementY),this.x=(this.pageX-this.game.scale.offset.x)*d.scale.x,this.y=(this.pageY-this.game.scale.offset.y)*d.scale.y,this.position.setTo(this.x,this.y),this.circle.x=this.x,this.circle.y=this.y,(d.multiInputOverride===c.Input.MOUSE_OVERRIDES_TOUCH||d.multiInputOverride===c.Input.MOUSE_TOUCH_COMBINE||d.multiInputOverride===c.Input.TOUCH_OVERRIDES_MOUSE&&0===d.totalActivePointers)&&(d.activePointer=this,d.x=this.x,d.y=this.y,d.position.setTo(d.x,d.y),d.circle.x=d.x,d.circle.y=d.y),this.withinGame=this.game.scale.bounds.contains(this.pageX,this.pageY),this.game.paused)return this;for(var e=d.moveCallbacks.length;e--;)d.moveCallbacks[e].callback.call(d.moveCallbacks[e].context,this,this.x,this.y,b);return null!==this.targetObject&&this.targetObject.isDragged===!0?this.targetObject.update(this)===!1&&(this.targetObject=null):d.interactiveItems.total>0&&this.processInteractiveObjects(b),this}},processInteractiveObjects:function(a){var b=0,c=-1,d=null,e=this.game.input.interactiveItems.first;for(this.interactiveCandidates=[];e;)e.checked=!1,e.validForInput(c,b,!1)&&(e.checked=!0,(a&&e.checkPointerDown(this,!0)||!a&&e.checkPointerOver(this,!0))&&(b=e.sprite.renderOrderID,c=e.priorityID,d=e,this.interactiveCandidates.push(e))),e=this.game.input.interactiveItems.next;for(e=this.game.input.interactiveItems.first;e;)!e.checked&&e.validForInput(c,b,!0)&&(a&&e.checkPointerDown(this,!1)||!a&&e.checkPointerOver(this,!1))&&(b=e.sprite.renderOrderID,c=e.priorityID,d=e,this.interactiveCandidates.push(e)),e=this.game.input.interactiveItems.next;return this.game.input.customCandidateHandler&&(d=this.game.input.customCandidateHandler.call(this.game.input.customCandidateHandlerContext,this,this.interactiveCandidates,d)),this.swapTarget(d,!1),null!==this.targetObject},swapTarget:function(a,b){void 0===b&&(b=!1),null===a?this.targetObject&&(this.targetObject._pointerOutHandler(this,b),this.targetObject=null):null===this.targetObject?(this.targetObject=a,a._pointerOverHandler(this,b)):this.targetObject===a?a.update(this)===!1&&(this.targetObject=null):(this.targetObject._pointerOutHandler(this,b),this.targetObject=a,this.targetObject._pointerOverHandler(this,b))},leave:function(a){this.withinGame=!1,this.move(a,!1)},stop:function(a){var b=this.game.input;return this._stateReset&&this.withinGame?void a.preventDefault():(this.timeUp=this.game.time.time,(b.multiInputOverride===c.Input.MOUSE_OVERRIDES_TOUCH||b.multiInputOverride===c.Input.MOUSE_TOUCH_COMBINE||b.multiInputOverride===c.Input.TOUCH_OVERRIDES_MOUSE&&0===b.totalActivePointers)&&(b.onUp.dispatch(this,a),this.duration>=0&&this.duration<=b.tapRate&&(this.timeUp-this.previousTapTime0&&(this.active=!1),this.withinGame=this.game.scale.bounds.contains(a.pageX,a.pageY),this.pointerId=null,this.identifier=null,this.positionUp.setTo(this.x,this.y),this.isMouse===!1&&b.currentPointers--,b.interactiveItems.callAll("_releasedHandler",this),this._clickTrampolines&&(this._trampolineTargetObject=this.targetObject),this.targetObject=null,this)},justPressed:function(a){return a=a||this.game.input.justPressedRate,this.isDown===!0&&this.timeDown+a>this.game.time.time},justReleased:function(a){return a=a||this.game.input.justReleasedRate,this.isUp&&this.timeUp+a>this.game.time.time},addClickTrampoline:function(a,b,c,d){if(this.isDown){for(var e=this._clickTrampolines=this._clickTrampolines||[],f=0;fd;d++)this._pointerData[d]={id:d,x:0,y:0,isDown:!1,isUp:!1,isOver:!1,isOut:!1,timeOver:0,timeOut:0,timeDown:0,timeUp:0,downDuration:0,isDragged:!1};this.snapOffset=new c.Point,this.enabled=!0,this._wasEnabled=!0}return this.sprite.events.onAddedToGroup.add(this.addedToGroup,this),this.sprite.events.onRemovedFromGroup.add(this.removedFromGroup,this),this.flagged=!1,this.sprite},addedToGroup:function(){this._dragPhase||this._wasEnabled&&!this.enabled&&this.start()},removedFromGroup:function(){this._dragPhase||(this.enabled?(this._wasEnabled=!0,this.stop()):this._wasEnabled=!1)},reset:function(){this.enabled=!1,this.flagged=!1;for(var a=0;10>a;a++)this._pointerData[a]={id:a,x:0,y:0,isDown:!1,isUp:!1,isOver:!1,isOut:!1,timeOver:0,timeOut:0,timeDown:0,timeUp:0,downDuration:0,isDragged:!1}},stop:function(){this.enabled!==!1&&(this.enabled=!1,this.game.input.interactiveItems.remove(this))},destroy:function(){this.sprite&&(this._setHandCursor&&(this.game.canvas.style.cursor="default",this._setHandCursor=!1),this.enabled=!1,this.game.input.interactiveItems.remove(this),this._pointerData.length=0,this.boundsRect=null,this.boundsSprite=null,this.sprite=null)},validForInput:function(a,b,c){return void 0===c&&(c=!0),!this.enabled||0===this.sprite.scale.x||0===this.sprite.scale.y||this.priorityIDa||this.priorityID===a&&this.sprite.renderOrderID>b)?!0:!1},isPixelPerfect:function(){return this.pixelPerfectClick||this.pixelPerfectOver},pointerX:function(a){return a=a||0,this._pointerData[a].x},pointerY:function(a){return a=a||0,this._pointerData[a].y},pointerDown:function(a){return a=a||0,this._pointerData[a].isDown},pointerUp:function(a){return a=a||0,this._pointerData[a].isUp},pointerTimeDown:function(a){return a=a||0,this._pointerData[a].timeDown},pointerTimeUp:function(a){return a=a||0,this._pointerData[a].timeUp},pointerOver:function(a){if(!this.enabled)return!1;if(void 0===a){for(var b=0;10>b;b++)if(this._pointerData[b].isOver)return!0;return!1}return this._pointerData[a].isOver},pointerOut:function(a){if(!this.enabled)return!1;if(void 0!==a)return this._pointerData[a].isOut;for(var b=0;10>b;b++)if(this._pointerData[b].isOut)return!0},pointerTimeOver:function(a){return a=a||0,this._pointerData[a].timeOver},pointerTimeOut:function(a){return a=a||0,this._pointerData[a].timeOut},pointerDragged:function(a){return a=a||0,this._pointerData[a].isDragged},checkPointerDown:function(a,b){return a.isDown&&this.enabled&&this.sprite&&this.sprite.parent&&this.sprite.visible&&this.sprite.parent.visible&&0!==this.sprite.worldScale.x&&0!==this.sprite.worldScale.y&&this.game.input.hitTest(this.sprite,a,this._tempPoint)?(void 0===b&&(b=!1),!b&&this.pixelPerfectClick?this.checkPixel(this._tempPoint.x,this._tempPoint.y):!0):!1},checkPointerOver:function(a,b){return this.enabled&&this.sprite&&this.sprite.parent&&this.sprite.visible&&this.sprite.parent.visible&&0!==this.sprite.worldScale.x&&0!==this.sprite.worldScale.y&&this.game.input.hitTest(this.sprite,a,this._tempPoint)?(void 0===b&&(b=!1),!b&&this.pixelPerfectOver?this.checkPixel(this._tempPoint.x,this._tempPoint.y):!0):!1},checkPixel:function(a,b,c){if(this.sprite.texture.baseTexture.source){if(null===a&&null===b){this.game.input.getLocalPosition(this.sprite,c,this._tempPoint);var a=this._tempPoint.x,b=this._tempPoint.y}if(0!==this.sprite.anchor.x&&(a-=-this.sprite.texture.frame.width*this.sprite.anchor.x),0!==this.sprite.anchor.y&&(b-=-this.sprite.texture.frame.height*this.sprite.anchor.y),a+=this.sprite.texture.frame.x,b+=this.sprite.texture.frame.y,this.sprite.texture.trim&&(a-=this.sprite.texture.trim.x,b-=this.sprite.texture.trim.y,athis.sprite.texture.crop.right||bthis.sprite.texture.crop.bottom))return this._dx=a,this._dy=b,!1;this._dx=a,this._dy=b,this.game.input.hitContext.clearRect(0,0,1,1),this.game.input.hitContext.drawImage(this.sprite.texture.baseTexture.source,a,b,1,1,0,0,1,1);var d=this.game.input.hitContext.getImageData(0,0,1,1);if(d.data[3]>=this.pixelPerfectAlpha)return!0}return!1},update:function(a){return null!==this.sprite&&void 0!==this.sprite.parent?this.enabled&&this.sprite.visible&&this.sprite.parent.visible?this._pendingDrag?(this._dragDistancePass||(this._dragDistancePass=c.Math.distance(a.x,a.y,this.downPoint.x,this.downPoint.y)>=this.dragDistanceThreshold),this._dragDistancePass&&this._dragTimePass&&this.startDrag(a),!0):this.draggable&&this._draggedPointerID===a.id?this.updateDrag(a):this._pointerData[a.id].isOver?this.checkPointerOver(a)?(this._pointerData[a.id].x=a.x-this.sprite.x,this._pointerData[a.id].y=a.y-this.sprite.y,!0):(this._pointerOutHandler(a),!1):void 0:(this._pointerOutHandler(a),!1):void 0},_pointerOverHandler:function(a,b){if(null!==this.sprite){var d=this._pointerData[a.id];if(d.isOver===!1||a.dirty){var e=d.isOver===!1;d.isOver=!0,d.isOut=!1,d.timeOver=this.game.time.time,d.x=a.x-this.sprite.x,d.y=a.y-this.sprite.y,this.useHandCursor&&d.isDragged===!1&&(this.game.canvas.style.cursor="pointer",this._setHandCursor=!0),!b&&e&&this.sprite&&this.sprite.events&&this.sprite.events.onInputOver$dispatch(this.sprite,a),this.sprite.parent&&this.sprite.parent.type===c.GROUP&&this.sprite.parent.onChildInputOver.dispatch(this.sprite,a)}}},_pointerOutHandler:function(a,b){if(null!==this.sprite){var d=this._pointerData[a.id];d.isOver=!1,d.isOut=!0,d.timeOut=this.game.time.time,this.useHandCursor&&d.isDragged===!1&&(this.game.canvas.style.cursor="default",this._setHandCursor=!1),!b&&this.sprite&&this.sprite.events&&(this.sprite.events.onInputOut$dispatch(this.sprite,a),this.sprite&&this.sprite.parent&&this.sprite.parent.type===c.GROUP&&this.sprite.parent.onChildInputOut.dispatch(this.sprite,a))}},_touchedHandler:function(a){if(null!==this.sprite){var b=this._pointerData[a.id];if(!b.isDown&&b.isOver){if(this.pixelPerfectClick&&!this.checkPixel(null,null,a))return;if(b.isDown=!0,b.isUp=!1,b.timeDown=this.game.time.time,this.downPoint.set(a.x,a.y),a.dirty=!0,this.sprite&&this.sprite.events&&(this.sprite.events.onInputDown$dispatch(this.sprite,a),this.sprite&&this.sprite.parent&&this.sprite.parent.type===c.GROUP&&this.sprite.parent.onChildInputDown.dispatch(this.sprite,a),null===this.sprite))return;this.draggable&&this.isDragged===!1&&(0===this.dragTimeThreshold&&0===this.dragDistanceThreshold?this.startDrag(a):(this._pendingDrag=!0,this._dragDistancePass=0===this.dragDistanceThreshold,this.dragTimeThreshold>0?(this._dragTimePass=!1,this.game.time.events.add(this.dragTimeThreshold,this.dragTimeElapsed,this,a)):this._dragTimePass=!0)),this.bringToTop&&this.sprite.bringToTop()}}},dragTimeElapsed:function(a){this._dragTimePass=!0,this._pendingDrag&&this.sprite&&this._dragDistancePass&&this.startDrag(a)},_releasedHandler:function(a){if(null!==this.sprite){var b=this._pointerData[a.id];if(b.isDown&&a.isUp){b.isDown=!1,b.isUp=!0,b.timeUp=this.game.time.time,b.downDuration=b.timeUp-b.timeDown;var d=this.checkPointerOver(a);this.sprite&&this.sprite.events&&(this.dragStopBlocksInputUp&&(!this.dragStopBlocksInputUp||this.draggable&&this.isDragged&&this._draggedPointerID===a.id)||this.sprite.events.onInputUp$dispatch(this.sprite,a,d),this.sprite&&this.sprite.parent&&this.sprite.parent.type===c.GROUP&&this.sprite.parent.onChildInputUp.dispatch(this.sprite,a,d),d&&(d=this.checkPointerOver(a))),b.isOver=d,!d&&this.useHandCursor&&(this.game.canvas.style.cursor="default",this._setHandCursor=!1),a.dirty=!0,this._pendingDrag=!1,this.draggable&&this.isDragged&&this._draggedPointerID===a.id&&this.stopDrag(a)}}},updateDrag:function(a,b){if(a.isUp)return this.stopDrag(a),!1;void 0===b&&(b=!1);var c=this.globalToLocalX(a.x)+this._dragPoint.x+this.dragOffset.x,d=this.globalToLocalY(a.y)+this._dragPoint.y+this.dragOffset.y;if(this.sprite.fixedToCamera)this.allowHorizontalDrag&&(this.sprite.cameraOffset.x=c),this.allowVerticalDrag&&(this.sprite.cameraOffset.y=d),this.boundsRect&&this.checkBoundsRect(),this.boundsSprite&&this.checkBoundsSprite(),this.snapOnDrag&&(this.sprite.cameraOffset.x=Math.round((this.sprite.cameraOffset.x-this.snapOffsetX%this.snapX)/this.snapX)*this.snapX+this.snapOffsetX%this.snapX,this.sprite.cameraOffset.y=Math.round((this.sprite.cameraOffset.y-this.snapOffsetY%this.snapY)/this.snapY)*this.snapY+this.snapOffsetY%this.snapY,this.snapPoint.set(this.sprite.cameraOffset.x,this.sprite.cameraOffset.y));else{var e=this.game.camera.x-this._pointerData[a.id].camX,f=this.game.camera.y-this._pointerData[a.id].camY;this.allowHorizontalDrag&&(this.sprite.x=c+e),this.allowVerticalDrag&&(this.sprite.y=d+f),this.boundsRect&&this.checkBoundsRect(),this.boundsSprite&&this.checkBoundsSprite(),this.snapOnDrag&&(this.sprite.x=Math.round((this.sprite.x-this.snapOffsetX%this.snapX)/this.snapX)*this.snapX+this.snapOffsetX%this.snapX,this.sprite.y=Math.round((this.sprite.y-this.snapOffsetY%this.snapY)/this.snapY)*this.snapY+this.snapOffsetY%this.snapY,this.snapPoint.set(this.sprite.x,this.sprite.y))}return this.sprite.events.onDragUpdate.dispatch(this.sprite,a,c,d,this.snapPoint,b),!0},justOver:function(a,b){return a=a||0,b=b||500,this._pointerData[a].isOver&&this.overDuration(a)a;a++)this._pointerData[a].isDragged=!1;this.draggable=!1,this.isDragged=!1,this._draggedPointerID=-1,this._pendingDrag=!1},startDrag:function(a){var b=this.sprite.x,c=this.sprite.y;if(this.isDragged=!0,this._draggedPointerID=a.id,this._pointerData[a.id].camX=this.game.camera.x,this._pointerData[a.id].camY=this.game.camera.y,this._pointerData[a.id].isDragged=!0,this.sprite.fixedToCamera){if(this.dragFromCenter){var d=this.sprite.getBounds();this.sprite.cameraOffset.x=this.globalToLocalX(a.x)+(this.sprite.cameraOffset.x-d.centerX),this.sprite.cameraOffset.y=this.globalToLocalY(a.y)+(this.sprite.cameraOffset.y-d.centerY)}this._dragPoint.setTo(this.sprite.cameraOffset.x-a.x,this.sprite.cameraOffset.y-a.y)}else{if(this.dragFromCenter){var d=this.sprite.getBounds();this.sprite.x=this.globalToLocalX(a.x)+(this.sprite.x-d.centerX),this.sprite.y=this.globalToLocalY(a.y)+(this.sprite.y-d.centerY)}this._dragPoint.setTo(this.sprite.x-this.globalToLocalX(a.x),this.sprite.y-this.globalToLocalY(a.y))}this.updateDrag(a,!0),this.bringToTop&&(this._dragPhase=!0,this.sprite.bringToTop()),this.dragStartPoint.set(b,c),this.sprite.events.onDragStart$dispatch(this.sprite,a,b,c),this._pendingDrag=!1},globalToLocalX:function(a){return this.scaleLayer&&(a-=this.game.scale.grid.boundsFluid.x,a*=this.game.scale.grid.scaleFluidInversed.x),a},globalToLocalY:function(a){return this.scaleLayer&&(a-=this.game.scale.grid.boundsFluid.y,a*=this.game.scale.grid.scaleFluidInversed.y),a},stopDrag:function(a){this.isDragged=!1,this._draggedPointerID=-1,this._pointerData[a.id].isDragged=!1,this._dragPhase=!1,this._pendingDrag=!1,this.snapOnRelease&&(this.sprite.fixedToCamera?(this.sprite.cameraOffset.x=Math.round((this.sprite.cameraOffset.x-this.snapOffsetX%this.snapX)/this.snapX)*this.snapX+this.snapOffsetX%this.snapX,this.sprite.cameraOffset.y=Math.round((this.sprite.cameraOffset.y-this.snapOffsetY%this.snapY)/this.snapY)*this.snapY+this.snapOffsetY%this.snapY):(this.sprite.x=Math.round((this.sprite.x-this.snapOffsetX%this.snapX)/this.snapX)*this.snapX+this.snapOffsetX%this.snapX,this.sprite.y=Math.round((this.sprite.y-this.snapOffsetY%this.snapY)/this.snapY)*this.snapY+this.snapOffsetY%this.snapY)),this.sprite.events.onDragStop$dispatch(this.sprite,a),this.checkPointerOver(a)===!1&&this._pointerOutHandler(a)},setDragLock:function(a,b){void 0===a&&(a=!0),void 0===b&&(b=!0),this.allowHorizontalDrag=a,this.allowVerticalDrag=b},enableSnap:function(a,b,c,d,e,f){void 0===c&&(c=!0),void 0===d&&(d=!1),void 0===e&&(e=0),void 0===f&&(f=0),this.snapX=a,this.snapY=b,this.snapOffsetX=e,this.snapOffsetY=f,this.snapOnDrag=c,this.snapOnRelease=d},disableSnap:function(){this.snapOnDrag=!1,this.snapOnRelease=!1},checkBoundsRect:function(){this.sprite.fixedToCamera?(this.sprite.cameraOffset.xthis.boundsRect.right&&(this.sprite.cameraOffset.x=this.boundsRect.right-this.sprite.width),this.sprite.cameraOffset.ythis.boundsRect.bottom&&(this.sprite.cameraOffset.y=this.boundsRect.bottom-this.sprite.height)):(this.sprite.leftthis.boundsRect.right&&(this.sprite.x=this.boundsRect.right-(this.sprite.width-this.sprite.offsetX)),this.sprite.topthis.boundsRect.bottom&&(this.sprite.y=this.boundsRect.bottom-(this.sprite.height-this.sprite.offsetY)))},checkBoundsSprite:function(){this.sprite.fixedToCamera&&this.boundsSprite.fixedToCamera?(this.sprite.cameraOffset.xthis.boundsSprite.cameraOffset.x+this.boundsSprite.width&&(this.sprite.cameraOffset.x=this.boundsSprite.cameraOffset.x+this.boundsSprite.width-this.sprite.width),this.sprite.cameraOffset.ythis.boundsSprite.cameraOffset.y+this.boundsSprite.height&&(this.sprite.cameraOffset.y=this.boundsSprite.cameraOffset.y+this.boundsSprite.height-this.sprite.height)):(this.sprite.leftthis.boundsSprite.right&&(this.sprite.x=this.boundsSprite.right-(this.sprite.width-this.sprite.offsetX)),this.sprite.topthis.boundsSprite.bottom&&(this.sprite.y=this.boundsSprite.bottom-(this.sprite.height-this.sprite.offsetY)))}},c.InputHandler.prototype.constructor=c.InputHandler,c.Component=function(){},c.Component.Angle=function(){},c.Component.Angle.prototype={angle:{get:function(){return c.Math.wrapAngle(c.Math.radToDeg(this.rotation))},set:function(a){this.rotation=c.Math.degToRad(c.Math.wrapAngle(a))}}},c.Component.Animation=function(){},c.Component.Animation.prototype={play:function(a,b,c,d){return this.animations?this.animations.play(a,b,c,d):void 0}},c.Component.AutoCull=function(){},c.Component.AutoCull.prototype={autoCull:!1,inCamera:{get:function(){return this.autoCull||this.checkWorldBounds||(this._bounds.copyFrom(this.getBounds()),this._bounds.x+=this.game.camera.view.x,this._bounds.y+=this.game.camera.view.y),this.game.world.camera.view.intersects(this._bounds)}}},c.Component.Bounds=function(){},c.Component.Bounds.prototype={offsetX:{get:function(){return this.anchor.x*this.width}},offsetY:{get:function(){return this.anchor.y*this.height}},centerX:{get:function(){return this.x-this.offsetX+.5*this.width},set:function(a){this.x=a+this.offsetX-.5*this.width}},centerY:{get:function(){return this.y-this.offsetY+.5*this.height},set:function(a){this.y=a+this.offsetY-.5*this.height}},left:{get:function(){return this.x-this.offsetX},set:function(a){this.x=a+this.offsetX}},right:{get:function(){return this.x+this.width-this.offsetX},set:function(a){this.x=a-this.width+this.offsetX}},top:{get:function(){return this.y-this.offsetY},set:function(a){this.y=a+this.offsetY}},bottom:{get:function(){return this.y+this.height-this.offsetY},set:function(a){this.y=a-this.height+this.offsetY}},alignIn:function(a,b,d,e){switch(void 0===d&&(d=0),void 0===e&&(e=0),b){default:case c.TOP_LEFT:this.left=a.left-d,this.top=a.top-e;break;case c.TOP_CENTER:this.centerX=a.centerX+d,this.top=a.top-e;break;case c.TOP_RIGHT:this.right=a.right+d,this.top=a.top-e;break;case c.LEFT_CENTER:this.left=a.left-d,this.centerY=a.centerY+e;break;case c.CENTER:this.centerX=a.centerX+d,this.centerY=a.centerY+e;break;case c.RIGHT_CENTER:this.right=a.right+d,this.centerY=a.centerY+e;break;case c.BOTTOM_LEFT:this.left=a.left-d,this.bottom=a.bottom+e;break;case c.BOTTOM_CENTER:this.centerX=a.centerX+d,this.bottom=a.bottom+e;break;case c.BOTTOM_RIGHT:this.right=a.right+d,this.bottom=a.bottom+e}return this},alignTo:function(a,b,d,e){switch(void 0===d&&(d=0),void 0===e&&(e=0),b){default:case c.TOP_LEFT:this.left=a.left-d,this.bottom=a.top-e;break;case c.TOP_CENTER:this.centerX=a.centerX+d,this.bottom=a.top-e;break;case c.TOP_RIGHT:this.right=a.right+d,this.bottom=a.top-e;break;case c.LEFT_TOP:this.right=a.left-d,this.top=a.top-e;break;case c.LEFT_CENTER:this.right=a.left-d,this.centerY=a.centerY+e;break;case c.LEFT_BOTTOM:this.right=a.left-d,this.bottom=a.bottom+e;break;case c.RIGHT_TOP:this.left=a.right+d,this.top=a.top-e;break;case c.RIGHT_CENTER:this.left=a.right+d,this.centerY=a.centerY+e;break;case c.RIGHT_BOTTOM:this.left=a.right+d,this.bottom=a.bottom+e;break;case c.BOTTOM_LEFT:this.left=a.left-d,this.top=a.bottom+e;break;case c.BOTTOM_CENTER:this.centerX=a.centerX+d,this.top=a.bottom+e;break;case c.BOTTOM_RIGHT:this.right=a.right+d,this.top=a.bottom+e}return this}},c.Component.BringToTop=function(){},c.Component.BringToTop.prototype.bringToTop=function(){return this.parent&&this.parent.bringToTop(this),this},c.Component.BringToTop.prototype.sendToBack=function(){return this.parent&&this.parent.sendToBack(this),this},c.Component.BringToTop.prototype.moveUp=function(){return this.parent&&this.parent.moveUp(this),this},c.Component.BringToTop.prototype.moveDown=function(){return this.parent&&this.parent.moveDown(this),this},c.Component.Core=function(){},c.Component.Core.install=function(a){c.Utils.mixinPrototype(this,c.Component.Core.prototype),this.components={};for(var b=0;bthis.maxHealth&&(this.health=this.maxHealth),this},heal:function(a){return this.alive&&(this.health+=a,this.health>this.maxHealth&&(this.health=this.maxHealth)),this}},c.Component.InCamera=function(){},c.Component.InCamera.prototype={inCamera:{get:function(){return this.game.world.camera.view.intersects(this._bounds)}}},c.Component.InputEnabled=function(){},c.Component.InputEnabled.prototype={input:null,inputEnabled:{get:function(){return this.input&&this.input.enabled},set:function(a){a?null===this.input?(this.input=new c.InputHandler(this),this.input.start()):this.input&&!this.input.enabled&&this.input.start():this.input&&this.input.enabled&&this.input.stop()}}},c.Component.InWorld=function(){},c.Component.InWorld.preUpdate=function(){if(this.autoCull||this.checkWorldBounds){if(this._bounds.copyFrom(this.getBounds()),this._bounds.x+=this.game.camera.view.x,this._bounds.y+=this.game.camera.view.y,this.autoCull)if(this.game.world.camera.view.intersects(this._bounds))this.renderable=!0,this.game.world.camera.totalInView++;else if(this.renderable=!1,this.outOfCameraBoundsKill)return this.kill(),!1;if(this.checkWorldBounds)if(this._outOfBoundsFired&&this.game.world.bounds.intersects(this._bounds))this._outOfBoundsFired=!1,this.events.onEnterBounds$dispatch(this);else if(!this._outOfBoundsFired&&!this.game.world.bounds.intersects(this._bounds)&&(this._outOfBoundsFired=!0,this.events.onOutOfBounds$dispatch(this),this.outOfBoundsKill))return this.kill(),!1}return!0},c.Component.InWorld.prototype={checkWorldBounds:!1,outOfBoundsKill:!1,outOfCameraBoundsKill:!1,_outOfBoundsFired:!1,inWorld:{get:function(){return this.game.world.bounds.intersects(this.getBounds())}}},c.Component.LifeSpan=function(){},c.Component.LifeSpan.preUpdate=function(){return this.lifespan>0&&(this.lifespan-=this.game.time.physicsElapsedMS,this.lifespan<=0)?(this.kill(),!1):!0},c.Component.LifeSpan.prototype={alive:!0,lifespan:0,revive:function(a){return void 0===a&&(a=100),this.alive=!0,this.exists=!0,this.visible=!0,"function"==typeof this.setHealth&&this.setHealth(a),this.events&&this.events.onRevived$dispatch(this),this},kill:function(){return this.alive=!1,this.exists=!1,this.visible=!1,this.events&&this.events.onKilled$dispatch(this),this}},c.Component.LoadTexture=function(){},c.Component.LoadTexture.prototype={customRender:!1,_frame:null,loadTexture:function(a,b,d){a===c.PENDING_ATLAS?(a=b,b=0):b=b||0,(d||void 0===d)&&this.animations&&this.animations.stop(),this.key=a,this.customRender=!1;var e=this.game.cache,f=!0,g=!this.texture.baseTexture.scaleMode;if(c.RenderTexture&&a instanceof c.RenderTexture)this.key=a.key,this.setTexture(a);else if(c.BitmapData&&a instanceof c.BitmapData)this.customRender=!0,this.setTexture(a.texture),f=e.hasFrameData(a.key,c.Cache.BITMAPDATA)?!this.animations.loadFrameData(e.getFrameData(a.key,c.Cache.BITMAPDATA),b):!this.animations.loadFrameData(a.frameData,0);else if(c.Video&&a instanceof c.Video){this.customRender=!0;var h=a.texture.valid;this.setTexture(a.texture),this.setFrame(a.texture.frame.clone()),a.onChangeSource.add(this.resizeFrame,this),this.texture.valid=h}else if(c.Tilemap&&a instanceof c.TilemapLayer)this.setTexture(PIXI.Texture.fromCanvas(a.canvas));else if(a instanceof PIXI.Texture)this.setTexture(a);else{var i=e.getImage(a,!0);this.key=i.key,this.setTexture(new PIXI.Texture(i.base)),"__default"===a?this.texture.baseTexture.skipRender=!0:this.texture.baseTexture.skipRender=!1,f=!this.animations.loadFrameData(i.frameData,b)}f&&(this._frame=c.Rectangle.clone(this.texture.frame)),g||(this.texture.baseTexture.scaleMode=1)},setFrame:function(a){this._frame=a,this.texture.frame.x=a.x,this.texture.frame.y=a.y,this.texture.frame.width=a.width,this.texture.frame.height=a.height,this.texture.crop.x=a.x,this.texture.crop.y=a.y,this.texture.crop.width=a.width,this.texture.crop.height=a.height,a.trimmed?(this.texture.trim?(this.texture.trim.x=a.spriteSourceSizeX,this.texture.trim.y=a.spriteSourceSizeY,this.texture.trim.width=a.sourceSizeW,this.texture.trim.height=a.sourceSizeH):this.texture.trim={x:a.spriteSourceSizeX,y:a.spriteSourceSizeY,width:a.sourceSizeW,height:a.sourceSizeH},this.texture.width=a.sourceSizeW,this.texture.height=a.sourceSizeH,this.texture.frame.width=a.sourceSizeW,this.texture.frame.height=a.sourceSizeH):!a.trimmed&&this.texture.trim&&(this.texture.trim=null),this.cropRect&&this.updateCrop(),this.texture.requiresReTint=!0,this.texture._updateUvs(),this.tilingTexture&&(this.refreshTexture=!0)},resizeFrame:function(a,b,c){this.texture.frame.resize(b,c),this.texture.setFrame(this.texture.frame)},resetFrame:function(){this._frame&&this.setFrame(this._frame)},frame:{get:function(){return this.animations.frame},set:function(a){this.animations.frame=a}},frameName:{get:function(){return this.animations.frameName},set:function(a){this.animations.frameName=a}}},c.Component.Overlap=function(){},c.Component.Overlap.prototype={overlap:function(a){return c.Rectangle.intersects(this.getBounds(),a.getBounds())}},c.Component.PhysicsBody=function(){},c.Component.PhysicsBody.preUpdate=function(){return this.fresh&&this.exists?(this.world.setTo(this.parent.position.x+this.position.x,this.parent.position.y+this.position.y),this.worldTransform.tx=this.world.x,this.worldTransform.ty=this.world.y,this.previousPosition.set(this.world.x,this.world.y),this.previousRotation=this.rotation,this.body&&this.body.preUpdate(),this.fresh=!1,!1):(this.previousPosition.set(this.world.x,this.world.y),this.previousRotation=this.rotation,this._exists&&this.parent.exists?!0:(this.renderOrderID=-1,!1))},c.Component.PhysicsBody.postUpdate=function(){this.exists&&this.body&&this.body.postUpdate()},c.Component.PhysicsBody.prototype={body:null,x:{get:function(){return this.position.x},set:function(a){this.position.x=a,this.body&&!this.body.dirty&&(this.body._reset=!0)}},y:{get:function(){return this.position.y},set:function(a){this.position.y=a,this.body&&!this.body.dirty&&(this.body._reset=!0)}}},c.Component.Reset=function(){},c.Component.Reset.prototype.reset=function(a,b,c){return void 0===c&&(c=1),this.world.set(a,b),this.position.set(a,b),this.fresh=!0,this.exists=!0,this.visible=!0,this.renderable=!0,this.components.InWorld&&(this._outOfBoundsFired=!1),this.components.LifeSpan&&(this.alive=!0,this.health=c),this.components.PhysicsBody&&this.body&&this.body.reset(a,b,!1,!1),this},c.Component.ScaleMinMax=function(){},c.Component.ScaleMinMax.prototype={transformCallback:null,transformCallbackContext:this,scaleMin:null,scaleMax:null,checkTransform:function(a){this.scaleMin&&(a.athis.scaleMax.x&&(a.a=this.scaleMax.x),a.d>this.scaleMax.y&&(a.d=this.scaleMax.y))},setScaleMinMax:function(a,b,d,e){void 0===b?b=d=e=a:void 0===d&&(d=e=b,b=a),null===a?this.scaleMin=null:this.scaleMin?this.scaleMin.set(a,b):this.scaleMin=new c.Point(a,b),null===d?this.scaleMax=null:this.scaleMax?this.scaleMax.set(d,e):this.scaleMax=new c.Point(d,e),null===this.scaleMin?this.transformCallback=null:(this.transformCallback=this.checkTransform,this.transformCallbackContext=this)}},c.Component.Smoothed=function(){},c.Component.Smoothed.prototype={smoothed:{get:function(){return!this.texture.baseTexture.scaleMode},set:function(a){a?this.texture&&(this.texture.baseTexture.scaleMode=0):this.texture&&(this.texture.baseTexture.scaleMode=1)}}},c.GameObjectFactory=function(a){this.game=a,this.world=this.game.world},c.GameObjectFactory.prototype={existing:function(a){return this.world.add(a)},weapon:function(a,b,d,e){var f=this.game.plugins.add(c.Weapon);return f.createBullets(a,b,d,e),f},image:function(a,b,d,e,f){return void 0===f&&(f=this.world),f.add(new c.Image(this.game,a,b,d,e))},sprite:function(a,b,c,d,e){return void 0===e&&(e=this.world),e.create(a,b,c,d)},creature:function(a,b,d,e,f){void 0===f&&(f=this.world);var g=new c.Creature(this.game,a,b,d,e);return f.add(g),g},tween:function(a){return this.game.tweens.create(a)},group:function(a,b,d,e,f){return new c.Group(this.game,a,b,d,e,f)},physicsGroup:function(a,b,d,e){return new c.Group(this.game,b,d,e,!0,a)},spriteBatch:function(a,b,d){return void 0===a&&(a=null),void 0===b&&(b="group"),void 0===d&&(d=!1),new c.SpriteBatch(this.game,a,b,d)},audio:function(a,b,c,d){return this.game.sound.add(a,b,c,d)},sound:function(a,b,c,d){return this.game.sound.add(a,b,c,d)},audioSprite:function(a){return this.game.sound.addSprite(a)},tileSprite:function(a,b,d,e,f,g,h){return void 0===h&&(h=this.world),h.add(new c.TileSprite(this.game,a,b,d,e,f,g))},rope:function(a,b,d,e,f,g){return void 0===g&&(g=this.world),g.add(new c.Rope(this.game,a,b,d,e,f))},text:function(a,b,d,e,f){return void 0===f&&(f=this.world),f.add(new c.Text(this.game,a,b,d,e))},button:function(a,b,d,e,f,g,h,i,j,k){return void 0===k&&(k=this.world),k.add(new c.Button(this.game,a,b,d,e,f,g,h,i,j))},graphics:function(a,b,d){return void 0===d&&(d=this.world),d.add(new c.Graphics(this.game,a,b))},emitter:function(a,b,d){return this.game.particles.add(new c.Particles.Arcade.Emitter(this.game,a,b,d))},retroFont:function(a,b,d,e,f,g,h,i,j){return new c.RetroFont(this.game,a,b,d,e,f,g,h,i,j)},bitmapText:function(a,b,d,e,f,g){return void 0===g&&(g=this.world),g.add(new c.BitmapText(this.game,a,b,d,e,f))},tilemap:function(a,b,d,e,f){return new c.Tilemap(this.game,a,b,d,e,f)},renderTexture:function(a,b,d,e){(void 0===d||""===d)&&(d=this.game.rnd.uuid()),void 0===e&&(e=!1);var f=new c.RenderTexture(this.game,a,b,d);return e&&this.game.cache.addRenderTexture(d,f),f},video:function(a,b){return new c.Video(this.game,a,b)},bitmapData:function(a,b,d,e){void 0===e&&(e=!1),(void 0===d||""===d)&&(d=this.game.rnd.uuid());var f=new c.BitmapData(this.game,d,a,b);return e&&this.game.cache.addBitmapData(d,f),f},filter:function(a){var b=Array.prototype.slice.call(arguments,1),a=new c.Filter[a](this.game);return a.init.apply(a,b),a},plugin:function(a){return this.game.plugins.add(a)}},c.GameObjectFactory.prototype.constructor=c.GameObjectFactory,c.GameObjectCreator=function(a){this.game=a,this.world=this.game.world},c.GameObjectCreator.prototype={image:function(a,b,d,e){return new c.Image(this.game,a,b,d,e)},sprite:function(a,b,d,e){return new c.Sprite(this.game,a,b,d,e)},tween:function(a){return new c.Tween(a,this.game,this.game.tweens)},group:function(a,b,d,e,f){return new c.Group(this.game,a,b,d,e,f)},spriteBatch:function(a,b,d){return void 0===b&&(b="group"),void 0===d&&(d=!1),new c.SpriteBatch(this.game,a,b,d)},audio:function(a,b,c,d){return this.game.sound.add(a,b,c,d)},audioSprite:function(a){return this.game.sound.addSprite(a)},sound:function(a,b,c,d){return this.game.sound.add(a,b,c,d)},tileSprite:function(a,b,d,e,f,g){return new c.TileSprite(this.game,a,b,d,e,f,g)},rope:function(a,b,d,e,f){return new c.Rope(this.game,a,b,d,e,f)},text:function(a,b,d,e){return new c.Text(this.game,a,b,d,e)},button:function(a,b,d,e,f,g,h,i,j){return new c.Button(this.game,a,b,d,e,f,g,h,i,j)},graphics:function(a,b){return new c.Graphics(this.game,a,b)},emitter:function(a,b,d){return new c.Particles.Arcade.Emitter(this.game,a,b,d)},retroFont:function(a,b,d,e,f,g,h,i,j){return new c.RetroFont(this.game,a,b,d,e,f,g,h,i,j)},bitmapText:function(a,b,d,e,f,g){return new c.BitmapText(this.game,a,b,d,e,f,g)},tilemap:function(a,b,d,e,f){return new c.Tilemap(this.game,a,b,d,e,f)},renderTexture:function(a,b,d,e){(void 0===d||""===d)&&(d=this.game.rnd.uuid()),void 0===e&&(e=!1);var f=new c.RenderTexture(this.game,a,b,d);return e&&this.game.cache.addRenderTexture(d,f),f},bitmapData:function(a,b,d,e){void 0===e&&(e=!1),(void 0===d||""===d)&&(d=this.game.rnd.uuid());var f=new c.BitmapData(this.game,d,a,b);return e&&this.game.cache.addBitmapData(d,f),f},filter:function(a){var b=Array.prototype.slice.call(arguments,1),a=new c.Filter[a](this.game);return a.init.apply(a,b),a}},c.GameObjectCreator.prototype.constructor=c.GameObjectCreator,c.Sprite=function(a,b,d,e,f){b=b||0,d=d||0,e=e||null,f=f||null,this.type=c.SPRITE,this.physicsType=c.SPRITE,PIXI.Sprite.call(this,PIXI.TextureCache.__default),c.Component.Core.init.call(this,a,b,d,e,f)},c.Sprite.prototype=Object.create(PIXI.Sprite.prototype),c.Sprite.prototype.constructor=c.Sprite,c.Component.Core.install.call(c.Sprite.prototype,["Angle","Animation","AutoCull","Bounds","BringToTop","Crop","Delta","Destroy","FixedToCamera","Health","InCamera","InputEnabled","InWorld","LifeSpan","LoadTexture","Overlap","PhysicsBody","Reset","ScaleMinMax","Smoothed"]),c.Sprite.prototype.preUpdatePhysics=c.Component.PhysicsBody.preUpdate,c.Sprite.prototype.preUpdateLifeSpan=c.Component.LifeSpan.preUpdate,c.Sprite.prototype.preUpdateInWorld=c.Component.InWorld.preUpdate,c.Sprite.prototype.preUpdateCore=c.Component.Core.preUpdate,c.Sprite.prototype.preUpdate=function(){return this.preUpdatePhysics()&&this.preUpdateLifeSpan()&&this.preUpdateInWorld()?this.preUpdateCore():!1},c.Image=function(a,b,d,e,f){b=b||0,d=d||0,e=e||null,f=f||null,this.type=c.IMAGE,PIXI.Sprite.call(this,PIXI.TextureCache.__default),c.Component.Core.init.call(this,a,b,d,e,f)},c.Image.prototype=Object.create(PIXI.Sprite.prototype),c.Image.prototype.constructor=c.Image,c.Component.Core.install.call(c.Image.prototype,["Angle","Animation","AutoCull","Bounds","BringToTop","Crop","Destroy","FixedToCamera","InputEnabled","LifeSpan","LoadTexture","Overlap","Reset","Smoothed"]),c.Image.prototype.preUpdateInWorld=c.Component.InWorld.preUpdate,c.Image.prototype.preUpdateCore=c.Component.Core.preUpdate,c.Image.prototype.preUpdate=function(){return this.preUpdateInWorld()?this.preUpdateCore():!1},c.Button=function(a,b,d,e,f,g,h,i,j,k){b=b||0,d=d||0,e=e||null,f=f||null,g=g||this,c.Image.call(this,a,b,d,e,i),this.type=c.BUTTON,this.physicsType=c.SPRITE,this._onOverFrame=null,this._onOutFrame=null,this._onDownFrame=null,this._onUpFrame=null,this.onOverSound=null,this.onOutSound=null,this.onDownSound=null,this.onUpSound=null,this.onOverSoundMarker="",this.onOutSoundMarker="",this.onDownSoundMarker="",this.onUpSoundMarker="",this.onInputOver=new c.Signal,this.onInputOut=new c.Signal,this.onInputDown=new c.Signal,this.onInputUp=new c.Signal,this.onOverMouseOnly=!0,this.justReleasedPreventsOver=c.PointerMode.TOUCH,this.freezeFrames=!1,this.forceOut=!1,this.inputEnabled=!0,this.input.start(0,!0),this.input.useHandCursor=!0,this.setFrames(h,i,j,k),null!==f&&this.onInputUp.add(f,g),this.events.onInputOver.add(this.onInputOverHandler,this),this.events.onInputOut.add(this.onInputOutHandler,this),this.events.onInputDown.add(this.onInputDownHandler,this),this.events.onInputUp.add(this.onInputUpHandler,this),this.events.onRemovedFromWorld.add(this.removedFromWorld,this)},c.Button.prototype=Object.create(c.Image.prototype),c.Button.prototype.constructor=c.Button;var f="Over",g="Out",h="Down",i="Up";c.Button.prototype.clearFrames=function(){this.setFrames(null,null,null,null)},c.Button.prototype.removedFromWorld=function(){this.inputEnabled=!1},c.Button.prototype.setStateFrame=function(a,b,c){var d="_on"+a+"Frame";null!==b?(this[d]=b,c&&this.changeStateFrame(a)):this[d]=null},c.Button.prototype.changeStateFrame=function(a){if(this.freezeFrames)return!1;var b="_on"+a+"Frame",c=this[b];return"string"==typeof c?(this.frameName=c,!0):"number"==typeof c?(this.frame=c,!0):!1},c.Button.prototype.setFrames=function(a,b,c,d){this.setStateFrame(f,a,this.input.pointerOver()),this.setStateFrame(g,b,!this.input.pointerOver()),this.setStateFrame(h,c,this.input.pointerDown()),this.setStateFrame(i,d,this.input.pointerUp())},c.Button.prototype.setStateSound=function(a,b,d){var e="on"+a+"Sound",f="on"+a+"SoundMarker";b instanceof c.Sound||b instanceof c.AudioSprite?(this[e]=b,this[f]="string"==typeof d?d:""):(this[e]=null,this[f]="")},c.Button.prototype.playStateSound=function(a){var b="on"+a+"Sound",c=this[b];if(c){var d="on"+a+"SoundMarker",e=this[d];return c.play(e),!0}return!1},c.Button.prototype.setSounds=function(a,b,c,d,e,j,k,l){this.setStateSound(f,a,b),this.setStateSound(g,e,j),this.setStateSound(h,c,d),this.setStateSound(i,k,l)},c.Button.prototype.setOverSound=function(a,b){this.setStateSound(f,a,b)},c.Button.prototype.setOutSound=function(a,b){this.setStateSound(g,a,b)},c.Button.prototype.setDownSound=function(a,b){this.setStateSound(h,a,b)},c.Button.prototype.setUpSound=function(a,b){this.setStateSound(i,a,b)},c.Button.prototype.onInputOverHandler=function(a,b){b.justReleased()&&(this.justReleasedPreventsOver&b.pointerMode)===b.pointerMode||(this.changeStateFrame(f),(!this.onOverMouseOnly||b.isMouse)&&(this.playStateSound(f),this.onInputOver&&this.onInputOver.dispatch(this,b)))},c.Button.prototype.onInputOutHandler=function(a,b){this.changeStateFrame(g),this.playStateSound(g),this.onInputOut&&this.onInputOut.dispatch(this,b)},c.Button.prototype.onInputDownHandler=function(a,b){this.changeStateFrame(h),this.playStateSound(h),this.onInputDown&&this.onInputDown.dispatch(this,b)},c.Button.prototype.onInputUpHandler=function(a,b,c){if(this.playStateSound(i),this.onInputUp&&this.onInputUp.dispatch(this,b,c),!this.freezeFrames)if(this.forceOut===!0||(this.forceOut&b.pointerMode)===b.pointerMode)this.changeStateFrame(g);else{var d=this.changeStateFrame(i);d||(c?this.changeStateFrame(f):this.changeStateFrame(g))}},c.SpriteBatch=function(a,b,d,e){(void 0===b||null===b)&&(b=a.world),PIXI.SpriteBatch.call(this),c.Group.call(this,a,b,d,e),this.type=c.SPRITEBATCH},c.SpriteBatch.prototype=c.Utils.extend(!0,c.SpriteBatch.prototype,PIXI.SpriteBatch.prototype,c.Group.prototype),c.SpriteBatch.prototype.constructor=c.SpriteBatch,c.TileSprite=function(){},c.Device=function(){this.deviceReadyAt=0,this.initialized=!1,this.desktop=!1,this.iOS=!1,this.iOSVersion=0,this.cocoonJS=!1,this.cocoonJSApp=!1,this.cordova=!1,this.node=!1,this.nodeWebkit=!1,this.electron=!1,this.ejecta=!1,this.crosswalk=!1,this.android=!1,this.chromeOS=!1,this.linux=!1,this.macOS=!1,this.windows=!1,this.windowsPhone=!1,this.canvas=!1,this.canvasBitBltShift=null,this.webGL=!1,this.file=!1,this.fileSystem=!1,this.localStorage=!1,this.worker=!1,this.css3D=!1,this.pointerLock=!1,this.typedArray=!1,this.vibration=!1,this.getUserMedia=!0,this.quirksMode=!1,this.touch=!1,this.mspointer=!1,this.wheelEvent=null,this.arora=!1,this.chrome=!1,this.chromeVersion=0,this.epiphany=!1,this.firefox=!1,this.firefoxVersion=0,this.ie=!1,this.ieVersion=0,this.trident=!1,this.tridentVersion=0,this.edge=!1,this.mobileSafari=!1,this.midori=!1,this.opera=!1,this.safari=!1,this.safariVersion=0,this.webApp=!1,this.silk=!1,this.audioData=!1,this.webAudio=!1,this.ogg=!1,this.opus=!1,this.mp3=!1,this.wav=!1,this.m4a=!1,this.webm=!1,this.dolby=!1,this.oggVideo=!1,this.h264Video=!1,this.mp4Video=!1,this.webmVideo=!1,this.vp9Video=!1,this.hlsVideo=!1,this.iPhone=!1,this.iPhone4=!1,this.iPad=!1,this.pixelRatio=0,this.littleEndian=!1,this.LITTLE_ENDIAN=!1,this.support32bit=!1,this.fullscreen=!1,this.requestFullscreen="",this.cancelFullscreen="",this.fullscreenKeyboard=!1},c.Device=new c.Device,c.Device.onInitialized=new c.Signal,c.Device.whenReady=function(a,b,c){var d=this._readyCheck;if(this.deviceReadyAt||!d)a.call(b,this);else if(d._monitor||c)d._queue=d._queue||[],d._queue.push([a,b]);else{d._monitor=d.bind(this),d._queue=d._queue||[],d._queue.push([a,b]);var e="undefined"!=typeof window.cordova,f=navigator.isCocoonJS;"complete"===document.readyState||"interactive"===document.readyState?window.setTimeout(d._monitor,0):e&&!f?document.addEventListener("deviceready",d._monitor,!1):(document.addEventListener("DOMContentLoaded",d._monitor,!1),window.addEventListener("load",d._monitor,!1))}},c.Device._readyCheck=function(){var a=this._readyCheck;if(document.body){if(!this.deviceReadyAt){this.deviceReadyAt=Date.now(),document.removeEventListener("deviceready",a._monitor),document.removeEventListener("DOMContentLoaded",a._monitor),window.removeEventListener("load",a._monitor),this._initialize(),this.initialized=!0,this.onInitialized.dispatch(this);for(var b;b=a._queue.shift();){var c=b[0],d=b[1];c.call(d,this)}this._readyCheck=null,this._initialize=null,this.onInitialized=null}}else window.setTimeout(a._monitor,20)},c.Device._initialize=function(){function a(){var a=navigator.userAgent;/Playstation Vita/.test(a)?l.vita=!0:/Kindle/.test(a)||/\bKF[A-Z][A-Z]+/.test(a)||/Silk.*Mobile Safari/.test(a)?l.kindle=!0:/Android/.test(a)?l.android=!0:/CrOS/.test(a)?l.chromeOS=!0:/iP[ao]d|iPhone/i.test(a)?(l.iOS=!0,navigator.appVersion.match(/OS (\d+)/),l.iOSVersion=parseInt(RegExp.$1,10)):/Linux/.test(a)?l.linux=!0:/Mac OS/.test(a)?l.macOS=!0:/Windows/.test(a)&&(l.windows=!0),(/Windows Phone/i.test(a)||/IEMobile/i.test(a))&&(l.android=!1,l.iOS=!1,l.macOS=!1,l.windows=!0,l.windowsPhone=!0);var b=/Silk/.test(a);(l.windows||l.macOS||l.linux&&!b||l.chromeOS)&&(l.desktop=!0),(l.windowsPhone||/Windows NT/i.test(a)&&/Touch/i.test(a))&&(l.desktop=!1)}function b(){l.canvas=!!window.CanvasRenderingContext2D||l.cocoonJS;try{l.localStorage=!!localStorage.getItem}catch(a){l.localStorage=!1}l.file=!!(window.File&&window.FileReader&&window.FileList&&window.Blob),l.fileSystem=!!window.requestFileSystem,l.webGL=function(){try{var a=document.createElement("canvas");return a.screencanvas=!1,!!window.WebGLRenderingContext&&(a.getContext("webgl")||a.getContext("experimental-webgl"))}catch(b){return!1}}(),l.webGL=!!l.webGL,l.worker=!!window.Worker,l.pointerLock="pointerLockElement"in document||"mozPointerLockElement"in document||"webkitPointerLockElement"in document,l.quirksMode="CSS1Compat"===document.compatMode?!1:!0,navigator.getUserMedia=navigator.getUserMedia||navigator.webkitGetUserMedia||navigator.mozGetUserMedia||navigator.msGetUserMedia||navigator.oGetUserMedia,window.URL=window.URL||window.webkitURL||window.mozURL||window.msURL,l.getUserMedia=l.getUserMedia&&!!navigator.getUserMedia&&!!window.URL,l.firefox&&l.firefoxVersion<21&&(l.getUserMedia=!1),!l.iOS&&(l.ie||l.firefox||l.chrome)&&(l.canvasBitBltShift=!0),(l.safari||l.mobileSafari)&&(l.canvasBitBltShift=!1)}function c(){("ontouchstart"in document.documentElement||window.navigator.maxTouchPoints&&window.navigator.maxTouchPoints>=1)&&(l.touch=!0),(window.navigator.msPointerEnabled||window.navigator.pointerEnabled)&&(l.mspointer=!0),l.cocoonJS||("onwheel"in window||l.ie&&"WheelEvent"in window?l.wheelEvent="wheel":"onmousewheel"in window?l.wheelEvent="mousewheel":l.firefox&&"MouseScrollEvent"in window&&(l.wheelEvent="DOMMouseScroll"))}function d(){for(var a=["requestFullscreen","requestFullScreen","webkitRequestFullscreen","webkitRequestFullScreen","msRequestFullscreen","msRequestFullScreen","mozRequestFullScreen","mozRequestFullscreen"],b=document.createElement("div"),c=0;c=9&&/Mac OS X (\d+)_(\d+)/.test(navigator.userAgent)){var c=parseInt(RegExp.$1,10),d=parseInt(RegExp.$2,10);(10===c&&d>=11||c>10)&&(l.dolby=!0)}}catch(e){}}function h(){l.pixelRatio=window.devicePixelRatio||1,l.iPhone=-1!=navigator.userAgent.toLowerCase().indexOf("iphone"),l.iPhone4=2==l.pixelRatio&&l.iPhone,l.iPad=-1!=navigator.userAgent.toLowerCase().indexOf("ipad"),"undefined"!=typeof Int8Array?l.typedArray=!0:l.typedArray=!1,"undefined"!=typeof ArrayBuffer&&"undefined"!=typeof Uint8Array&&"undefined"!=typeof Uint32Array&&(l.littleEndian=i(),l.LITTLE_ENDIAN=l.littleEndian),l.support32bit="undefined"!=typeof ArrayBuffer&&"undefined"!=typeof Uint8ClampedArray&&"undefined"!=typeof Int32Array&&null!==l.littleEndian&&j(),navigator.vibrate=navigator.vibrate||navigator.webkitVibrate||navigator.mozVibrate||navigator.msVibrate,navigator.vibrate&&(l.vibration=!0)}function i(){var a=new ArrayBuffer(4),b=new Uint8Array(a),c=new Uint32Array(a);return b[0]=161,b[1]=178,b[2]=195,b[3]=212,3569595041==c[0]?!0:2712847316==c[0]?!1:null}function j(){if(void 0===Uint8ClampedArray)return!1;var a=PIXI.CanvasPool.create(this,1,1),b=a.getContext("2d");if(!b)return!1;var c=b.createImageData(1,1);return PIXI.CanvasPool.remove(this),c.data instanceof Uint8ClampedArray}function k(){var a,b=document.createElement("p"),c={webkitTransform:"-webkit-transform",OTransform:"-o-transform",msTransform:"-ms-transform",MozTransform:"-moz-transform",transform:"transform"};document.body.insertBefore(b,null);for(var d in c)void 0!==b.style[d]&&(b.style[d]="translate3d(1px,1px,1px)",a=window.getComputedStyle(b).getPropertyValue(c[d]));document.body.removeChild(b),l.css3D=void 0!==a&&a.length>0&&"none"!==a}var l=this;a(),e(),g(),f(),k(),h(),b(),d(),c()},c.Device.canPlayAudio=function(a){return"mp3"===a&&this.mp3?!0:"ogg"===a&&(this.ogg||this.opus)?!0:"m4a"===a&&this.m4a?!0:"opus"===a&&this.opus?!0:"wav"===a&&this.wav?!0:"webm"===a&&this.webm?!0:"mp4"===a&&this.dolby?!0:!1},c.Device.canPlayVideo=function(a){return"webm"===a&&(this.webmVideo||this.vp9Video)?!0:"mp4"===a&&(this.mp4Video||this.h264Video)?!0:"ogg"!==a&&"ogv"!==a||!this.oggVideo?"mpeg"===a&&this.hlsVideo?!0:!1:!0},c.Device.isConsoleOpen=function(){return window.console&&window.console.firebug?!0:window.console&&(console.profile(),console.profileEnd(),console.clear&&console.clear(),console.profiles)?console.profiles.length>0:!1},c.Device.isAndroidStockBrowser=function(){var a=window.navigator.userAgent.match(/Android.*AppleWebKit\/([\d.]+)/);return a&&a[1]<537},c.Canvas={create:function(a,b,c,d,e){if(b=b||256,c=c||256,void 0===e)var f=PIXI.CanvasPool.create(a,b,c);else var f=document.createElement("canvas");return"string"==typeof d&&""!==d&&(f.id=d),f.width=b,f.height=c,f.style.display="block",f},setBackgroundColor:function(a,b){return b=b||"rgb(0,0,0)",a.style.backgroundColor=b,a},setTouchAction:function(a,b){return b=b||"none",a.style.msTouchAction=b,a.style["ms-touch-action"]=b,a.style["touch-action"]=b,a},setUserSelect:function(a,b){return b=b||"none",a.style["-webkit-touch-callout"]=b,a.style["-webkit-user-select"]=b,a.style["-khtml-user-select"]=b,a.style["-moz-user-select"]=b,a.style["-ms-user-select"]=b,a.style["user-select"]=b,a.style["-webkit-tap-highlight-color"]="rgba(0, 0, 0, 0)",a},addToDOM:function(a,b,c){var d;return void 0===c&&(c=!0),b&&("string"==typeof b?d=document.getElementById(b):"object"==typeof b&&1===b.nodeType&&(d=b)),d||(d=document.body),c&&d.style&&(d.style.overflow="hidden"),d.appendChild(a),a},removeFromDOM:function(a){a.parentNode&&a.parentNode.removeChild(a)},setTransform:function(a,b,c,d,e,f,g){return a.setTransform(d,f,g,e,b,c),a},setSmoothingEnabled:function(a,b){var d=c.Canvas.getSmoothingPrefix(a);return d&&(a[d]=b),a},getSmoothingPrefix:function(a){var b=["i","webkitI","msI","mozI","oI"];for(var c in b){var d=b[c]+"mageSmoothingEnabled";if(d in a)return d}return null},getSmoothingEnabled:function(a){var b=c.Canvas.getSmoothingPrefix(a);return b?a[b]:void 0},setImageRenderingCrisp:function(a){for(var b=["optimizeSpeed","crisp-edges","-moz-crisp-edges","-webkit-optimize-contrast","optimize-contrast","pixelated"],c=0;ca},fuzzyGreaterThan:function(a,b,c){return void 0===c&&(c=1e-4),a>b-c},fuzzyCeil:function(a,b){return void 0===b&&(b=1e-4),Math.ceil(a-b)},fuzzyFloor:function(a,b){return void 0===b&&(b=1e-4),Math.floor(a+b)},average:function(){for(var a=0,b=arguments.length,c=0;b>c;c++)a+=+arguments[c];return a/b},shear:function(a){return a%1},snapTo:function(a,b,c){return void 0===c&&(c=0),0===b?a:(a-=c,a=b*Math.round(a/b),c+a)},snapToFloor:function(a,b,c){return void 0===c&&(c=0),0===b?a:(a-=c,a=b*Math.floor(a/b),c+a)},snapToCeil:function(a,b,c){return void 0===c&&(c=0),0===b?a:(a-=c,a=b*Math.ceil(a/b),c+a)},roundTo:function(a,b,c){void 0===b&&(b=0),void 0===c&&(c=10);var d=Math.pow(c,-b);return Math.round(a*d)/d},floorTo:function(a,b,c){void 0===b&&(b=0),void 0===c&&(c=10);var d=Math.pow(c,-b);return Math.floor(a*d)/d},ceilTo:function(a,b,c){void 0===b&&(b=0),void 0===c&&(c=10);var d=Math.pow(c,-b);return Math.ceil(a*d)/d},angleBetween:function(a,b,c,d){return Math.atan2(d-b,c-a)},angleBetweenY:function(a,b,c,d){return Math.atan2(c-a,d-b)},angleBetweenPoints:function(a,b){return Math.atan2(b.y-a.y,b.x-a.x)},angleBetweenPointsY:function(a,b){return Math.atan2(b.x-a.x,b.y-a.y)},reverseAngle:function(a){return this.normalizeAngle(a+Math.PI,!0)},normalizeAngle:function(a){return a%=2*Math.PI,a>=0?a:a+2*Math.PI},maxAdd:function(a,b,c){return Math.min(a+b,c)},minSub:function(a,b,c){return Math.max(a-b,c)},wrap:function(a,b,c){var d=c-b;if(0>=d)return 0;var e=(a-b)%d;return 0>e&&(e+=d),e+b},wrapValue:function(a,b,c){var d;return a=Math.abs(a),b=Math.abs(b),c=Math.abs(c),d=(a+b)%c},isOdd:function(a){return!!(1&a)},isEven:function(a){return!(1&a)},min:function(){if(1===arguments.length&&"object"==typeof arguments[0])var a=arguments[0];else var a=arguments;for(var b=1,c=0,d=a.length;d>b;b++)a[b]b;b++)a[b]>a[c]&&(c=b);return a[c]},minProperty:function(a){if(2===arguments.length&&"object"==typeof arguments[1])var b=arguments[1];else var b=arguments.slice(1);for(var c=1,d=0,e=b.length;e>c;c++)b[c][a]c;c++)b[c][a]>b[d][a]&&(d=c);return b[d][a]},wrapAngle:function(a,b){return b?this.wrap(a,-Math.PI,Math.PI):this.wrap(a,-180,180)},linearInterpolation:function(a,b){var c=a.length-1,d=c*b,e=Math.floor(d);return 0>b?this.linear(a[0],a[1],d):b>1?this.linear(a[c],a[c-1],c-d):this.linear(a[e],a[e+1>c?c:e+1],d-e)},bezierInterpolation:function(a,b){for(var c=0,d=a.length-1,e=0;d>=e;e++)c+=Math.pow(1-b,d-e)*Math.pow(b,e)*a[e]*this.bernstein(d,e);return c},catmullRomInterpolation:function(a,b){var c=a.length-1,d=c*b,e=Math.floor(d);return a[0]===a[c]?(0>b&&(e=Math.floor(d=c*(1+b))),this.catmullRom(a[(e-1+c)%c],a[e],a[(e+1)%c],a[(e+2)%c],d-e)):0>b?a[0]-(this.catmullRom(a[0],a[0],a[1],a[1],-d)-a[0]):b>1?a[c]-(this.catmullRom(a[c],a[c],a[c-1],a[c-1],d-c)-a[c]):this.catmullRom(a[e?e-1:0],a[e],a[e+1>c?c:e+1],a[e+2>c?c:e+2],d-e)},linear:function(a,b,c){return(b-a)*c+a},bernstein:function(a,b){return this.factorial(a)/this.factorial(b)/this.factorial(a-b)},factorial:function(a){if(0===a)return 1;for(var b=a;--a;)b*=a;return b},catmullRom:function(a,b,c,d,e){var f=.5*(c-a),g=.5*(d-b),h=e*e,i=e*h;return(2*b-2*c+f+g)*i+(-3*b+3*c-2*f-g)*h+f*e+b},difference:function(a,b){return Math.abs(a-b)},roundAwayFromZero:function(a){return a>0?Math.ceil(a):Math.floor(a)},sinCosGenerator:function(a,b,c,d){void 0===b&&(b=1),void 0===c&&(c=1),void 0===d&&(d=1);for(var e=b,f=c,g=d*Math.PI/a,h=[],i=[],j=0;a>j;j++)f-=e*g,e+=f*g,h[j]=f,i[j]=e;return{sin:i,cos:h,length:a}},distance:function(a,b,c,d){var e=a-c,f=b-d;return Math.sqrt(e*e+f*f)},distanceSq:function(a,b,c,d){var e=a-c,f=b-d;return e*e+f*f},distancePow:function(a,b,c,d,e){return void 0===e&&(e=2),Math.sqrt(Math.pow(c-a,e)+Math.pow(d-b,e))},clamp:function(a,b,c){return b>a?b:a>c?c:a},clampBottom:function(a,b){return b>a?b:a},within:function(a,b,c){return Math.abs(a-b)<=c},mapLinear:function(a,b,c,d,e){return d+(a-b)*(e-d)/(c-b)},smoothstep:function(a,b,c){return a=Math.max(0,Math.min(1,(a-b)/(c-b))),a*a*(3-2*a)},smootherstep:function(a,b,c){return a=Math.max(0,Math.min(1,(a-b)/(c-b))),a*a*a*(a*(6*a-15)+10)},sign:function(a){return 0>a?-1:a>0?1:0},percent:function(a,b,c){return void 0===c&&(c=0),a>b||c>b?1:c>a||c>a?0:(a-c)/b}};var j=Math.PI/180,k=180/Math.PI;c.Math.degToRad=function(a){return a*j},c.Math.radToDeg=function(a){return a*k},c.RandomDataGenerator=function(a){void 0===a&&(a=[]),this.c=1,this.s0=0,this.s1=0,this.s2=0,"string"==typeof a?this.state(a):this.sow(a)},c.RandomDataGenerator.prototype={rnd:function(){var a=2091639*this.s0+2.3283064365386963e-10*this.c;return this.c=0|a,this.s0=this.s1,this.s1=this.s2,this.s2=a-this.c,this.s2},sow:function(a){if(this.s0=this.hash(" "),this.s1=this.hash(this.s0),this.s2=this.hash(this.s1),this.c=1,a)for(var b=0;b>>0,b-=d,b*=d,d=b>>>0,b-=d,d+=4294967296*b;return 2.3283064365386963e-10*(d>>>0)},integer:function(){return 4294967296*this.rnd.apply(this)},frac:function(){return this.rnd.apply(this)+1.1102230246251565e-16*(2097152*this.rnd.apply(this)|0)},real:function(){return this.integer()+this.frac()},integerInRange:function(a,b){return Math.floor(this.realInRange(0,b-a+1)+a)},between:function(a,b){return this.integerInRange(a,b)},realInRange:function(a,b){return this.frac()*(b-a)+a},normal:function(){return 1-2*this.frac()},uuid:function(){var a="",b="";for(b=a="";a++<36;b+=~a%5|3*a&4?(15^a?8^this.frac()*(20^a?16:4):4).toString(16):"-");return b},pick:function(a){return a[this.integerInRange(0,a.length-1)]},sign:function(){return this.pick([-1,1])},weightedPick:function(a){return a[~~(Math.pow(this.frac(),2)*(a.length-1)+.5)]},timestamp:function(a,b){return this.realInRange(a||9466848e5,b||1577862e6)},angle:function(){return this.integerInRange(-180,180)},state:function(a){return"string"==typeof a&&a.match(/^!rnd/)&&(a=a.split(","),this.c=parseFloat(a[1]),this.s0=parseFloat(a[2]),this.s1=parseFloat(a[3]),this.s2=parseFloat(a[4])),["!rnd",this.c,this.s0,this.s1,this.s2].join(",")}},c.RandomDataGenerator.prototype.constructor=c.RandomDataGenerator,c.QuadTree=function(a,b,c,d,e,f,g){this.maxObjects=10,this.maxLevels=4,this.level=0,this.bounds={},this.objects=[],this.nodes=[],this._empty=[],this.reset(a,b,c,d,e,f,g)},c.QuadTree.prototype={reset:function(a,b,c,d,e,f,g){this.maxObjects=e||10,this.maxLevels=f||4,this.level=g||0,this.bounds={x:Math.round(a),y:Math.round(b),width:c,height:d,subWidth:Math.floor(c/2),subHeight:Math.floor(d/2),right:Math.round(a)+Math.floor(c/2),bottom:Math.round(b)+Math.floor(d/2)},this.objects.length=0,this.nodes.length=0},populate:function(a){a.forEach(this.populateHandler,this,!0)},populateHandler:function(a){a.body&&a.exists&&this.insert(a.body)},split:function(){this.nodes[0]=new c.QuadTree(this.bounds.right,this.bounds.y,this.bounds.subWidth,this.bounds.subHeight,this.maxObjects,this.maxLevels,this.level+1),this.nodes[1]=new c.QuadTree(this.bounds.x,this.bounds.y,this.bounds.subWidth,this.bounds.subHeight,this.maxObjects,this.maxLevels,this.level+1),this.nodes[2]=new c.QuadTree(this.bounds.x,this.bounds.bottom,this.bounds.subWidth,this.bounds.subHeight,this.maxObjects,this.maxLevels,this.level+1),this.nodes[3]=new c.QuadTree(this.bounds.right,this.bounds.bottom,this.bounds.subWidth,this.bounds.subHeight,this.maxObjects,this.maxLevels,this.level+1)},insert:function(a){var b,c=0;if(null!=this.nodes[0]&&(b=this.getIndex(a),-1!==b))return void this.nodes[b].insert(a);if(this.objects.push(a),this.objects.length>this.maxObjects&&this.levelthis.bounds.bottom&&(b=2):a.x>this.bounds.right&&(a.ythis.bounds.bottom&&(b=3)),b},retrieve:function(a){if(a instanceof c.Rectangle)var b=this.objects,d=this.getIndex(a);else{if(!a.body)return this._empty;var b=this.objects,d=this.getIndex(a.body)}return this.nodes[0]&&(-1!==d?b=b.concat(this.nodes[d].retrieve(a)):(b=b.concat(this.nodes[0].retrieve(a)),b=b.concat(this.nodes[1].retrieve(a)),b=b.concat(this.nodes[2].retrieve(a)),b=b.concat(this.nodes[3].retrieve(a)))),b},clear:function(){this.objects.length=0;for(var a=this.nodes.length;a--;)this.nodes[a].clear(),this.nodes.splice(a,1);this.nodes.length=0}},c.QuadTree.prototype.constructor=c.QuadTree;var l=function(){};c.Net=l,c.Net.prototype={isDisabled:!0,getHostName:l,checkDomainName:l,updateQueryString:l,getQueryString:l,decodeURI:l},c.Net.prototype.constructor=c.Net,c.TweenManager=function(){},c.TweenManager.prototype.update=function(){},c.TweenManager.prototype.removeAll=function(){},c.TweenManager.prototype.removeFrom=function(){},c.TweenManager.prototype.constructor=c.TweenManager,c.Time=function(a){this.game=a,this.time=0,this.prevTime=0,this.now=0,this.elapsed=0,this.elapsedMS=0,this.physicsElapsed=1/60,this.physicsElapsedMS=1/60*1e3,this.desiredFpsMult=1/60,this._desiredFps=60,this.suggestedFps=this.desiredFps,this.slowMotion=1,this.advancedTiming=!1,this.frames=0,this.fps=0,this.fpsMin=1e3,this.fpsMax=0,this.msMin=1e3,this.msMax=0,this.pauseDuration=0,this.timeToCall=0,this.timeExpected=0,this.events=new c.Timer(this.game,!1),this._frameCount=0,this._elapsedAccumulator=0,this._started=0,this._timeLastSecond=0,this._pauseStarted=0,this._justResumed=!1,this._timers=[]},c.Time.prototype={boot:function(){this._started=Date.now(),this.time=Date.now(),this.events.start(),this.timeExpected=this.time},add:function(a){return this._timers.push(a),a},create:function(a){void 0===a&&(a=!0);var b=new c.Timer(this.game,a);return this._timers.push(b),b},removeAll:function(){for(var a=0;aa;)this._timers[a].update(this.time)?a++:(this._timers.splice(a,1),b--)},updateAdvancedTiming:function(){this._frameCount++,this._elapsedAccumulator+=this.elapsed,this._frameCount>=2*this._desiredFps&&(this.suggestedFps=5*Math.floor(200/(this._elapsedAccumulator/this._frameCount)),this._frameCount=0,this._elapsedAccumulator=0),this.msMin=Math.min(this.msMin,this.elapsed),this.msMax=Math.max(this.msMax,this.elapsed),this.frames++,this.now>this._timeLastSecond+1e3&&(this.fps=Math.round(1e3*this.frames/(this.now-this._timeLastSecond)),this.fpsMin=Math.min(this.fpsMin,this.fps),this.fpsMax=Math.max(this.fpsMax,this.fps),this._timeLastSecond=this.now,this.frames=0)},gamePaused:function(){this._pauseStarted=Date.now(),this.events.pause();for(var a=this._timers.length;a--;)this._timers[a]._pause()},gameResumed:function(){this.time=Date.now(),this.pauseDuration=this.time-this._pauseStarted,this.events.resume();for(var a=this._timers.length;a--;)this._timers[a]._resume()},totalElapsedSeconds:function(){return.001*(this.time-this._started)},elapsedSince:function(a){return this.time-a},elapsedSecondsSince:function(a){return.001*(this.time-a)},reset:function(){this._started=this.time,this.removeAll()}},Object.defineProperty(c.Time.prototype,"desiredFps",{get:function(){return this._desiredFps},set:function(a){this._desiredFps=a,this.physicsElapsed=1/a,this.physicsElapsedMS=1e3*this.physicsElapsed,this.desiredFpsMult=1/a}}),c.Time.prototype.constructor=c.Time,c.Timer=function(a,b){void 0===b&&(b=!0),this.game=a,this.running=!1,this.autoDestroy=b,this.expired=!1,this.elapsed=0,this.events=[],this.onComplete=new c.Signal,this.nextTick=0,this.timeCap=1e3,this.paused=!1,this._codePaused=!1,this._started=0,this._pauseStarted=0,this._pauseTotal=0,this._now=Date.now(),this._len=0,this._marked=0,this._i=0,this._diff=0,this._newTick=0},c.Timer.MINUTE=6e4,c.Timer.SECOND=1e3,c.Timer.HALF=500,c.Timer.QUARTER=250,c.Timer.prototype={create:function(a,b,d,e,f,g){a=Math.round(a);var h=a;h+=0===this._now?this.game.time.time:this._now;var i=new c.TimerEvent(this,a,h,d,b,e,f,g);return this.events.push(i),this.order(),this.expired=!1,i},add:function(a,b,c){return this.create(a,!1,0,b,c,Array.prototype.slice.call(arguments,3))},repeat:function(a,b,c,d){return this.create(a,!1,b,c,d,Array.prototype.slice.call(arguments,4))},loop:function(a,b,c){return this.create(a,!0,0,b,c,Array.prototype.slice.call(arguments,3))},start:function(a){if(!this.running){this._started=this.game.time.time+(a||0),this.running=!0;for(var b=0;b0&&(this.events.sort(this.sortHandler),this.nextTick=this.events[0].tick)},sortHandler:function(a,b){return a.tickb.tick?1:0},clearPendingEvents:function(){for(this._i=this.events.length;this._i--;)this.events[this._i].pendingDelete&&this.events.splice(this._i,1);this._len=this.events.length,this._i=0},update:function(a){if(this.paused)return!0;if(this.elapsed=a-this._now,this._now=a,this.elapsed>this.timeCap&&this.adjustEvents(a-this.elapsed),this._marked=0,this.clearPendingEvents(),this.running&&this._now>=this.nextTick&&this._len>0){for(;this._i=this.events[this._i].tick&&!this.events[this._i].pendingDelete;)this._newTick=this._now+this.events[this._i].delay-(this._now-this.events[this._i].tick),this._newTick<0&&(this._newTick=this._now+this.events[this._i].delay),this.events[this._i].loop===!0?(this.events[this._i].tick=this._newTick,this.events[this._i].callback.apply(this.events[this._i].callbackContext,this.events[this._i].args)):this.events[this._i].repeatCount>0?(this.events[this._i].repeatCount--,this.events[this._i].tick=this._newTick,this.events[this._i].callback.apply(this.events[this._i].callbackContext,this.events[this._i].args)):(this._marked++,this.events[this._i].pendingDelete=!0,this.events[this._i].callback.apply(this.events[this._i].callbackContext,this.events[this._i].args)),this._i++;this.events.length>this._marked?this.order():(this.expired=!0,this.onComplete.dispatch(this))}return this.expired&&this.autoDestroy?!1:!0},pause:function(){this.running&&(this._codePaused=!0,this.paused||(this._pauseStarted=this.game.time.time,this.paused=!0))},_pause:function(){!this.paused&&this.running&&(this._pauseStarted=this.game.time.time,this.paused=!0)},adjustEvents:function(a){for(var b=0;bc&&(c=0),this.events[b].tick=this._now+c}var d=this.nextTick-a;0>d?this.nextTick=this._now:this.nextTick=this._now+d},resume:function(){if(this.paused){var a=this.game.time.time;this._pauseTotal+=a-this._now,this._now=a,this.adjustEvents(this._pauseStarted),this.paused=!1,this._codePaused=!1}},_resume:function(){this._codePaused||this.resume()},removeAll:function(){this.onComplete.removeAll(),this.events.length=0,this._len=0,this._i=0},destroy:function(){this.onComplete.removeAll(),this.running=!1,this.events=[],this._len=0,this._i=0}},Object.defineProperty(c.Timer.prototype,"next",{get:function(){return this.nextTick}}),Object.defineProperty(c.Timer.prototype,"duration",{get:function(){return this.running&&this.nextTick>this._now?this.nextTick-this._now:0}}),Object.defineProperty(c.Timer.prototype,"length",{get:function(){return this.events.length}}),Object.defineProperty(c.Timer.prototype,"ms",{get:function(){return this.running?this._now-this._started-this._pauseTotal:0}}),Object.defineProperty(c.Timer.prototype,"seconds",{get:function(){return this.running?.001*this.ms:0}}),c.Timer.prototype.constructor=c.Timer,c.TimerEvent=function(a,b,c,d,e,f,g,h){this.timer=a,this.delay=b,this.tick=c,this.repeatCount=d-1,this.loop=e,this.callback=f,this.callbackContext=g,this.args=h,this.pendingDelete=!1},c.TimerEvent.prototype.constructor=c.TimerEvent,c.AnimationManager=function(a){this.sprite=a,this.game=a.game,this.currentFrame=null,this.currentAnim=null,this.updateIfVisible=!0,this.isLoaded=!1,this._frameData=null,this._anims={},this._outputFrames=[]},c.AnimationManager.prototype={loadFrameData:function(a,b){if(void 0===a)return!1;if(this.isLoaded)for(var c in this._anims)this._anims[c].updateFrameData(a);return this._frameData=a,void 0===b||null===b?this.frame=0:"string"==typeof b?this.frameName=b:this.frame=b,this.isLoaded=!0,!0},copyFrameData:function(a,b){if(this._frameData=a.clone(),this.isLoaded)for(var c in this._anims)this._anims[c].updateFrameData(this._frameData);return void 0===b||null===b?this.frame=0:"string"==typeof b?this.frameName=b:this.frame=b,this.isLoaded=!0,!0},add:function(a,b,d,e,f){return b=b||[],d=d||60,void 0===e&&(e=!1),void 0===f&&(f=b&&"number"==typeof b[0]?!0:!1),this._outputFrames=[],this._frameData.getFrameIndexes(b,f,this._outputFrames),this._anims[a]=new c.Animation(this.game,this.sprite,a,this._frameData,this._outputFrames,d,e),this.currentAnim=this._anims[a],this.sprite.tilingTexture&&(this.sprite.refreshTexture=!0),this._anims[a]},validateFrames:function(a,b){void 0===b&&(b=!0);for(var c=0;cthis._frameData.total)return!1}else if(this._frameData.checkFrameName(a[c])===!1)return!1;return!0},play:function(a,b,c,d){return this._anims[a]?this.currentAnim===this._anims[a]?this.currentAnim.isPlaying===!1?(this.currentAnim.paused=!1,this.currentAnim.play(b,c,d)):this.currentAnim:(this.currentAnim&&this.currentAnim.isPlaying&&this.currentAnim.stop(),this.currentAnim=this._anims[a],this.currentAnim.paused=!1,this.currentFrame=this.currentAnim.currentFrame,this.currentAnim.play(b,c,d)):void 0},stop:function(a,b){void 0===b&&(b=!1),!this.currentAnim||"string"==typeof a&&a!==this.currentAnim.name||this.currentAnim.stop(b)},update:function(){return this.updateIfVisible&&!this.sprite.visible?!1:this.currentAnim&&this.currentAnim.update()?(this.currentFrame=this.currentAnim.currentFrame,!0):!1},next:function(a){this.currentAnim&&(this.currentAnim.next(a),this.currentFrame=this.currentAnim.currentFrame)},previous:function(a){this.currentAnim&&(this.currentAnim.previous(a),this.currentFrame=this.currentAnim.currentFrame)},getAnimation:function(a){return"string"==typeof a&&this._anims[a]?this._anims[a]:null},refreshFrame:function(){this.sprite.setTexture(PIXI.TextureCache[this.currentFrame.uuid])},destroy:function(){var a=null;for(var a in this._anims)this._anims.hasOwnProperty(a)&&this._anims[a].destroy();this._anims={},this._outputFrames=[],this._frameData=null,this.currentAnim=null,this.currentFrame=null,this.sprite=null,this.game=null}},c.AnimationManager.prototype.constructor=c.AnimationManager,Object.defineProperty(c.AnimationManager.prototype,"frameData",{get:function(){return this._frameData}}),Object.defineProperty(c.AnimationManager.prototype,"frameTotal",{get:function(){return this._frameData.total}}),Object.defineProperty(c.AnimationManager.prototype,"paused",{get:function(){return this.currentAnim.isPaused},set:function(a){this.currentAnim.paused=a}}),Object.defineProperty(c.AnimationManager.prototype,"name",{get:function(){return this.currentAnim?this.currentAnim.name:void 0}}),Object.defineProperty(c.AnimationManager.prototype,"frame",{get:function(){return this.currentFrame?this.currentFrame.index:void 0},set:function(a){"number"==typeof a&&this._frameData&&null!==this._frameData.getFrame(a)&&(this.currentFrame=this._frameData.getFrame(a),this.currentFrame&&this.sprite.setFrame(this.currentFrame))}}),Object.defineProperty(c.AnimationManager.prototype,"frameName",{get:function(){return this.currentFrame?this.currentFrame.name:void 0},set:function(a){"string"==typeof a&&this._frameData&&null!==this._frameData.getFrameByName(a)?(this.currentFrame=this._frameData.getFrameByName(a),this.currentFrame&&(this._frameIndex=this.currentFrame.index,this.sprite.setFrame(this.currentFrame))):console.warn("Cannot set frameName: "+a)}}),c.Animation=function(a,b,d,e,f,g,h){void 0===h&&(h=!1),this.game=a,this._parent=b,this._frameData=e,this.name=d,this._frames=[],this._frames=this._frames.concat(f),this.delay=1e3/g,this.loop=h,this.loopCount=0,this.killOnComplete=!1,this.isFinished=!1,this.isPlaying=!1,this.isPaused=!1,this._pauseStartTime=0,this._frameIndex=0,this._frameDiff=0,this._frameSkip=1,this.currentFrame=this._frameData.getFrame(this._frames[this._frameIndex]),this.onStart=new c.Signal,this.onUpdate=null,this.onComplete=new c.Signal,this.onLoop=new c.Signal,this.isReversed=!1,this.game.onPause.add(this.onPause,this),this.game.onResume.add(this.onResume,this)},c.Animation.prototype={play:function(a,b,c){return"number"==typeof a&&(this.delay=1e3/a),"boolean"==typeof b&&(this.loop=b),"undefined"!=typeof c&&(this.killOnComplete=c),this.isPlaying=!0,this.isFinished=!1,this.paused=!1,this.loopCount=0,this._timeLastFrame=this.game.time.time,this._timeNextFrame=this.game.time.time+this.delay,this._frameIndex=this.isReversed?this._frames.length-1:0,this.updateCurrentFrame(!1,!0),this._parent.events.onAnimationStart$dispatch(this._parent,this),this.onStart.dispatch(this._parent,this),this._parent.animations.currentAnim=this,this._parent.animations.currentFrame=this.currentFrame,this},restart:function(){this.isPlaying=!0,this.isFinished=!1,this.paused=!1,this.loopCount=0,this._timeLastFrame=this.game.time.time,this._timeNextFrame=this.game.time.time+this.delay,this._frameIndex=0,this.currentFrame=this._frameData.getFrame(this._frames[this._frameIndex]),this._parent.setFrame(this.currentFrame),this._parent.animations.currentAnim=this,this._parent.animations.currentFrame=this.currentFrame,this.onStart.dispatch(this._parent,this)},reverse:function(){return this.reversed=!this.reversed,this},reverseOnce:function(){return this.onComplete.addOnce(this.reverse.bind(this)),this.reverse()},setFrame:function(a,b){var c;if(void 0===b&&(b=!1),"string"==typeof a)for(var d=0;d=this._timeNextFrame?(this._frameSkip=1,this._frameDiff=this.game.time.time-this._timeNextFrame,this._timeLastFrame=this.game.time.time,this._frameDiff>this.delay&&(this._frameSkip=Math.floor(this._frameDiff/this.delay),this._frameDiff-=this._frameSkip*this.delay),this._timeNextFrame=this.game.time.time+(this.delay-this._frameDiff),this.isReversed?this._frameIndex-=this._frameSkip:this._frameIndex+=this._frameSkip,!this.isReversed&&this._frameIndex>=this._frames.length||this.isReversed&&this._frameIndex<=-1?this.loop?(this._frameIndex=Math.abs(this._frameIndex)%this._frames.length,this.isReversed&&(this._frameIndex=this._frames.length-1-this._frameIndex),this.currentFrame=this._frameData.getFrame(this._frames[this._frameIndex]),this.currentFrame&&this._parent.setFrame(this.currentFrame),this.loopCount++,this._parent.events.onAnimationLoop$dispatch(this._parent,this),this.onLoop.dispatch(this._parent,this),this.onUpdate?(this.onUpdate.dispatch(this,this.currentFrame),!!this._frameData):!0):(this.complete(),!1):this.updateCurrentFrame(!0)):!1},updateCurrentFrame:function(a,b){if(void 0===b&&(b=!1),!this._frameData)return!1;var c=this.currentFrame.index;return this.currentFrame=this._frameData.getFrame(this._frames[this._frameIndex]),this.currentFrame&&(b||!b&&c!==this.currentFrame.index)&&this._parent.setFrame(this.currentFrame),this.onUpdate&&a?(this.onUpdate.dispatch(this,this.currentFrame),!!this._frameData):!0},next:function(a){void 0===a&&(a=1);var b=this._frameIndex+a;b>=this._frames.length&&(this.loop?b%=this._frames.length:b=this._frames.length-1),b!==this._frameIndex&&(this._frameIndex=b,this.updateCurrentFrame(!0))},previous:function(a){void 0===a&&(a=1);var b=this._frameIndex-a;0>b&&(this.loop?b=this._frames.length+b:b++),b!==this._frameIndex&&(this._frameIndex=b,this.updateCurrentFrame(!0))},updateFrameData:function(a){this._frameData=a,this.currentFrame=this._frameData?this._frameData.getFrame(this._frames[this._frameIndex%this._frames.length]):null},destroy:function(){this._frameData&&(this.game.onPause.remove(this.onPause,this),this.game.onResume.remove(this.onResume,this),this.game=null,this._parent=null,this._frames=null,this._frameData=null,this.currentFrame=null,this.isPlaying=!1,this.onStart.dispose(),this.onLoop.dispose(),this.onComplete.dispose(),this.onUpdate&&this.onUpdate.dispose())},complete:function(){this._frameIndex=this._frames.length-1,this.currentFrame=this._frameData.getFrame(this._frames[this._frameIndex]),this.isPlaying=!1,this.isFinished=!0,this.paused=!1,this._parent.events.onAnimationComplete$dispatch(this._parent,this),this.onComplete.dispatch(this._parent,this),this.killOnComplete&&this._parent.kill()}},c.Animation.prototype.constructor=c.Animation,Object.defineProperty(c.Animation.prototype,"paused",{get:function(){return this.isPaused},set:function(a){this.isPaused=a,a?this._pauseStartTime=this.game.time.time:this.isPlaying&&(this._timeNextFrame=this.game.time.time+this.delay)}}),Object.defineProperty(c.Animation.prototype,"reversed",{get:function(){return this.isReversed},set:function(a){this.isReversed=a}}),Object.defineProperty(c.Animation.prototype,"frameTotal",{get:function(){return this._frames.length}}),Object.defineProperty(c.Animation.prototype,"frame",{get:function(){return null!==this.currentFrame?this.currentFrame.index:this._frameIndex},set:function(a){this.currentFrame=this._frameData.getFrame(this._frames[a]),null!==this.currentFrame&&(this._frameIndex=a,this._parent.setFrame(this.currentFrame),this.onUpdate&&this.onUpdate.dispatch(this,this.currentFrame))}}),Object.defineProperty(c.Animation.prototype,"speed",{get:function(){return Math.round(1e3/this.delay)},set:function(a){a>=1&&(this.delay=1e3/a)}}),Object.defineProperty(c.Animation.prototype,"enableUpdate",{get:function(){return null!==this.onUpdate},set:function(a){a&&null===this.onUpdate?this.onUpdate=new c.Signal:a||null===this.onUpdate||(this.onUpdate.dispose(),this.onUpdate=null)}}),c.Animation.generateFrameNames=function(a,b,d,e,f){void 0===e&&(e="");var g=[],h="";if(d>b)for(var i=b;d>=i;i++)h="number"==typeof f?c.Utils.pad(i.toString(),f,"0",1):i.toString(),h=a+h+e,g.push(h);else for(var i=b;i>=d;i--)h="number"==typeof f?c.Utils.pad(i.toString(),f,"0",1):i.toString(),h=a+h+e,g.push(h);return g},c.Frame=function(a,b,d,e,f,g){this.index=a,this.x=b,this.y=d,this.width=e,this.height=f,this.name=g,this.centerX=Math.floor(e/2),this.centerY=Math.floor(f/2),this.distance=c.Math.distance(0,0,e,f),this.rotated=!1,this.rotationDirection="cw",this.trimmed=!1,this.sourceSizeW=e,this.sourceSizeH=f,this.spriteSourceSizeX=0,this.spriteSourceSizeY=0,this.spriteSourceSizeW=0,this.spriteSourceSizeH=0,this.right=this.x+this.width,this.bottom=this.y+this.height},c.Frame.prototype={resize:function(a,b){this.width=a,this.height=b,this.centerX=Math.floor(a/2),this.centerY=Math.floor(b/2),this.distance=c.Math.distance(0,0,a,b),this.sourceSizeW=a,this.sourceSizeH=b,this.right=this.x+a,this.bottom=this.y+b},setTrim:function(a,b,c,d,e,f,g){this.trimmed=a,a&&(this.sourceSizeW=b,this.sourceSizeH=c,this.centerX=Math.floor(b/2),this.centerY=Math.floor(c/2),this.spriteSourceSizeX=d,this.spriteSourceSizeY=e,this.spriteSourceSizeW=f,this.spriteSourceSizeH=g)},clone:function(){var a=new c.Frame(this.index,this.x,this.y,this.width,this.height,this.name);for(var b in this)this.hasOwnProperty(b)&&(a[b]=this[b]);return a},getRect:function(a){return void 0===a?a=new c.Rectangle(this.x,this.y,this.width,this.height):a.setTo(this.x,this.y,this.width,this.height),a}},c.Frame.prototype.constructor=c.Frame,c.FrameData=function(){this._frames=[],this._frameNames=[]},c.FrameData.prototype={addFrame:function(a){return a.index=this._frames.length,this._frames.push(a),""!==a.name&&(this._frameNames[a.name]=a.index),a},getFrame:function(a){return a>=this._frames.length&&(a=0),this._frames[a]},getFrameByName:function(a){return"number"==typeof this._frameNames[a]?this._frames[this._frameNames[a]]:null},checkFrameName:function(a){return null==this._frameNames[a]?!1:!0},clone:function(){for(var a=new c.FrameData,b=0;b=d;d++)c.push(this._frames[d]);return c},getFrames:function(a,b,c){if(void 0===b&&(b=!0),void 0===c&&(c=[]),void 0===a||0===a.length)for(var d=0;d=d&&(d=Math.floor(-j/Math.min(-1,d))),0>=e&&(e=Math.floor(-k/Math.min(-1,e)));var l=Math.floor((j-g)/(d+h)),m=Math.floor((k-g)/(e+h)),n=l*m;if(-1!==f&&(n=f),0===j||0===k||d>j||e>k||0===n)return console.warn("Phaser.AnimationParser.spriteSheet: '"+b+"'s width/height zero or width/height < given frameWidth/frameHeight"),null;for(var o=new c.FrameData,p=g,q=g,r=0;n>r;r++)o.addFrame(new c.Frame(r,p,q,d,e,"")), -p+=d+h,p+d>j&&(p=g,q+=e+h);return o},JSONData:function(a,b){if(!b.frames)return console.warn("Phaser.AnimationParser.JSONData: Invalid Texture Atlas JSON given, missing 'frames' array"),void console.log(b);for(var d,e=new c.FrameData,f=b.frames,g=0;g tag");for(var d,e,f,g,h,i,j,k,l,m,n,o=new c.FrameData,p=b.getElementsByTagName("SubTexture"),q=0;q-1},getAssetIndex:function(a,b){for(var c=-1,d=0;d-1?{index:c,file:this._fileList[c]}:!1},reset:function(a,b){void 0===b&&(b=!1),this.resetLocked||(a&&(this.preloadSprite=null),this.isLoading=!1,this._processingHead=0,this._fileList.length=0,this._flightQueue.length=0,this._fileLoadStarted=!1,this._totalFileCount=0,this._totalPackCount=0,this._loadedPackCount=0,this._loadedFileCount=0,b&&(this.onLoadStart.removeAll(),this.onLoadComplete.removeAll(),this.onPackComplete.removeAll(),this.onFileStart.removeAll(),this.onFileComplete.removeAll(),this.onFileError.removeAll()))},addToFileList:function(a,b,c,d,e,f){if(void 0===e&&(e=!1),void 0===b||""===b)return console.warn("Phaser.Loader: Invalid or no key given of type "+a),this;if(void 0===c||null===c){if(!f)return console.warn("Phaser.Loader: No URL given for file type: "+a+" key: "+b),this;c=b+f}var g={type:a,key:b,path:this.path,url:c,syncPoint:this._withSyncPointDepth>0,data:null,loading:!1,loaded:!1,error:!1};if(d)for(var h in d)g[h]=d[h];var i=this.getAssetIndex(a,b);if(e&&i>-1){var j=this._fileList[i];j.loading||j.loaded?(this._fileList.push(g),this._totalFileCount++):this._fileList[i]=g}else-1===i&&(this._fileList.push(g),this._totalFileCount++);return this},replaceInFileList:function(a,b,c,d){return this.addToFileList(a,b,c,d,!0)},pack:function(a,b,c,d){if(void 0===b&&(b=null),void 0===c&&(c=null),void 0===d&&(d=null),!b&&!c)return console.warn("Phaser.Loader.pack - Both url and data are null. One must be set."),this;var e={type:"packfile",key:a,url:b,path:this.path,syncPoint:!0,data:null,loading:!1,loaded:!1,error:!1,callbackContext:d};c&&("string"==typeof c&&(c=JSON.parse(c)),e.data=c||{},e.loaded=!0);for(var f=0;f=e||d&&this._loadedPackCount===this._totalPackCount)break}if(this.updateProgress(),this._processingHead>=this._fileList.length)this.finishedLoading();else if(!this._flightQueue.length){console.warn("Phaser.Loader - aborting: processing queue empty, loading may have stalled");var f=this;setTimeout(function(){f.finishedLoading(!0)},2e3)}},finishedLoading:function(a){this.hasLoaded||(this.hasLoaded=!0,this.isLoading=!1,a||this._fileLoadStarted||(this._fileLoadStarted=!0,this.onLoadStart.dispatch()),this.onLoadComplete.dispatch(),this.game.state.loadComplete(),this.reset())},asyncComplete:function(a,b){void 0===b&&(b=""),a.loaded=!0,a.error=!!b,b&&(a.errorMessage=b,console.warn("Phaser.Loader - "+a.type+"["+a.key+"]: "+b)),this.processLoadQueue()},processPack:function(a){var b=a.data[a.key];if(!b)return void console.warn("Phaser.Loader - "+a.key+": pack has data, but not for pack key");for(var d=0;d=400&&f.status<=599?e.call(g,a,f):d.call(g,a,f)}catch(b){g.hasLoaded?window.console&&console.error(b):g.asyncComplete(a,b.message||"Exception")}},f.onerror=function(){try{return e.call(g,a,f)}catch(b){g.hasLoaded?window.console&&console.error(b):g.asyncComplete(a,b.message||"Exception")}},a.requestObject=f,a.requestUrl=b,f.send()},xhrLoadWithXDR:function(a,b,c,d,e){this._warnedAboutXDomainRequest||this.game.device.ie&&!(this.game.device.ieVersion>=10)||(this._warnedAboutXDomainRequest=!0,console.warn("Phaser.Loader - using XDomainRequest outside of IE 9"));var f=new window.XDomainRequest;f.open("GET",b,!0),f.responseType=c,f.timeout=3e3,e=e||this.fileError;var g=this;f.onerror=function(){try{return e.call(g,a,f)}catch(b){g.asyncComplete(a,b.message||"Exception")}},f.ontimeout=function(){try{return e.call(g,a,f)}catch(b){g.asyncComplete(a,b.message||"Exception")}},f.onprogress=function(){},f.onload=function(){try{return 4==f.readyState&&f.status>=400&&f.status<=599?e.call(g,a,f):d.call(g,a,f)}catch(b){g.asyncComplete(a,b.message||"Exception")}},a.requestObject=f,a.requestUrl=b,setTimeout(function(){f.send()},0)},getVideoURL:function(a){for(var b=0;b=0&&(d=d.substr(0,d.indexOf("?")));var e=d.substr((Math.max(0,d.lastIndexOf("."))||1/0)+1);if(c=e.toLowerCase(),this.game.device.canPlayVideo(c))return a[b]}}return null},getAudioURL:function(a){if(this.game.sound.noAudio)return null;for(var b=0;b=0&&(d=d.substr(0,d.indexOf("?")));var e=d.substr((Math.max(0,d.lastIndexOf("."))||1/0)+1);if(c=e.toLowerCase(),this.game.device.canPlayAudio(c))return a[b]}}return null},fileError:function(a,b,c){var d=a.requestUrl||this.transformUrl(a.url,a),e="error loading asset from URL "+d;!c&&b&&(c=b.status),c&&(e=e+" ("+c+")"),this.asyncComplete(a,e)},fileComplete:function(a,b){var d=!0;switch(a.type){case"packfile":var e=JSON.parse(b.responseText);a.data=e||{};break;case"image":this.cache.addImage(a.key,a.url,a.data);break;case"spritesheet":this.cache.addSpriteSheet(a.key,a.url,a.data,a.frameWidth,a.frameHeight,a.frameMax,a.margin,a.spacing);break;case"textureatlas":if(null==a.atlasURL)this.cache.addTextureAtlas(a.key,a.url,a.data,a.atlasData,a.format);else if(d=!1, -a.format==c.Loader.TEXTURE_ATLAS_JSON_ARRAY||a.format==c.Loader.TEXTURE_ATLAS_JSON_HASH||a.format==c.Loader.TEXTURE_ATLAS_JSON_PYXEL)this.xhrLoad(a,this.transformUrl(a.atlasURL,a),"text",this.jsonLoadComplete);else{if(a.format!=c.Loader.TEXTURE_ATLAS_XML_STARLING)throw new Error("Phaser.Loader. Invalid Texture Atlas format: "+a.format);this.xhrLoad(a,this.transformUrl(a.atlasURL,a),"text",this.xmlLoadComplete)}break;case"bitmapfont":a.atlasURL?(d=!1,this.xhrLoad(a,this.transformUrl(a.atlasURL,a),"text",function(a,b){var c;try{c=JSON.parse(b.responseText)}catch(d){}c?(a.atlasType="json",this.jsonLoadComplete(a,b)):(a.atlasType="xml",this.xmlLoadComplete(a,b))})):this.cache.addBitmapFont(a.key,a.url,a.data,a.atlasData,a.atlasType,a.xSpacing,a.ySpacing);break;case"video":if(a.asBlob)try{a.data=b.response}catch(f){throw new Error("Phaser.Loader. Unable to parse video file as Blob: "+a.key)}this.cache.addVideo(a.key,a.url,a.data,a.asBlob);break;case"audio":this.game.sound.usingWebAudio?(a.data=b.response,this.cache.addSound(a.key,a.url,a.data,!0,!1),a.autoDecode&&this.game.sound.decode(a.key)):this.cache.addSound(a.key,a.url,a.data,!1,!0);break;case"text":a.data=b.responseText,this.cache.addText(a.key,a.url,a.data);break;case"shader":a.data=b.responseText,this.cache.addShader(a.key,a.url,a.data);break;case"physics":var e=JSON.parse(b.responseText);this.cache.addPhysicsData(a.key,a.url,e,a.format);break;case"script":a.data=document.createElement("script"),a.data.language="javascript",a.data.type="text/javascript",a.data.defer=!1,a.data.text=b.responseText,document.head.appendChild(a.data),a.callback&&(a.data=a.callback.call(a.callbackContext,a.key,b.responseText));break;case"binary":a.callback?a.data=a.callback.call(a.callbackContext,a.key,b.response):a.data=b.response,this.cache.addBinary(a.key,a.data)}d&&this.asyncComplete(a)},jsonLoadComplete:function(a,b){var c=JSON.parse(b.responseText);"tilemap"===a.type?this.cache.addTilemap(a.key,a.url,c,a.format):"bitmapfont"===a.type?this.cache.addBitmapFont(a.key,a.url,a.data,c,a.atlasType,a.xSpacing,a.ySpacing):"json"===a.type?this.cache.addJSON(a.key,a.url,c):this.cache.addTextureAtlas(a.key,a.url,a.data,c,a.format),this.asyncComplete(a)},csvLoadComplete:function(a,b){var c=b.responseText;this.cache.addTilemap(a.key,a.url,c,a.format),this.asyncComplete(a)},xmlLoadComplete:function(a,b){var c=b.responseText,d=this.parseXml(c);if(!d){var e=b.responseType||b.contentType;return console.warn("Phaser.Loader - "+a.key+": invalid XML ("+e+")"),void this.asyncComplete(a,"invalid XML")}"bitmapfont"===a.type?this.cache.addBitmapFont(a.key,a.url,a.data,d,a.atlasType,a.xSpacing,a.ySpacing):"textureatlas"===a.type?this.cache.addTextureAtlas(a.key,a.url,a.data,d,a.format):"xml"===a.type&&this.cache.addXML(a.key,a.url,d),this.asyncComplete(a)},parseXml:function(a){var b;try{if(window.DOMParser){var c=new DOMParser;b=c.parseFromString(a,"text/xml")}else b=new ActiveXObject("Microsoft.XMLDOM"),b.async="false",b.loadXML(a)}catch(d){b=null}return b&&b.documentElement&&!b.getElementsByTagName("parsererror").length?b:null},updateProgress:function(){this.preloadSprite&&(0===this.preloadSprite.direction?this.preloadSprite.rect.width=Math.floor(this.preloadSprite.width/100*this.progress):this.preloadSprite.rect.height=Math.floor(this.preloadSprite.height/100*this.progress),this.preloadSprite.sprite?this.preloadSprite.sprite.updateCrop():this.preloadSprite=null)},totalLoadedFiles:function(){return this._loadedFileCount},totalQueuedFiles:function(){return this._totalFileCount-this._loadedFileCount},totalLoadedPacks:function(){return this._totalPackCount},totalQueuedPacks:function(){return this._totalPackCount-this._loadedPackCount}},Object.defineProperty(c.Loader.prototype,"progressFloat",{get:function(){var a=this._loadedFileCount/this._totalFileCount*100;return c.Math.clamp(a||0,0,100)}}),Object.defineProperty(c.Loader.prototype,"progress",{get:function(){return Math.round(this.progressFloat)}}),c.Loader.prototype.constructor=c.Loader,c.LoaderParser={bitmapFont:function(a,b,c,d){return this.xmlBitmapFont(a,b,c,d)},xmlBitmapFont:function(a,b,c,d){var e={},f=a.getElementsByTagName("info")[0],g=a.getElementsByTagName("common")[0];e.font=f.getAttribute("face"),e.size=parseInt(f.getAttribute("size"),10),e.lineHeight=parseInt(g.getAttribute("lineHeight"),10)+d,e.chars={};for(var h=a.getElementsByTagName("char"),i=0;i=400?0:100,this.dom.getOffset(this.game.canvas,this.offset);var b=this._parentBounds.width,d=this._parentBounds.height,e=this.getParentBounds(this._parentBounds),f=e.width!==b||e.height!==d,g=this.updateOrientationState();(f||g)&&(this.onResize&&this.onResize.call(this.onResizeContext,this,e),this.updateLayout(),this.signalSizeChange());var h=2*this._updateThrottle;this._updateThrottle=b||0>=c)return a;var e=b,f=a.height*b/a.width,g=a.width*c/a.height,h=c,i=g>b;return i=i?d:!d,i?(a.width=Math.floor(e),a.height=Math.floor(f)):(a.width=Math.floor(g),a.height=Math.floor(h)),a},destroy:function(){this.game.onResume.remove(this._gameResumed,this),window.removeEventListener("orientationchange",this._orientationChange,!1),window.removeEventListener("resize",this._windowResize,!1),this.compatibility.supportsFullScreen&&(document.removeEventListener("webkitfullscreenchange",this._fullScreenChange,!1),document.removeEventListener("mozfullscreenchange",this._fullScreenChange,!1),document.removeEventListener("MSFullscreenChange",this._fullScreenChange,!1),document.removeEventListener("fullscreenchange",this._fullScreenChange,!1),document.removeEventListener("webkitfullscreenerror",this._fullScreenError,!1),document.removeEventListener("mozfullscreenerror",this._fullScreenError,!1),document.removeEventListener("MSFullscreenError",this._fullScreenError,!1),document.removeEventListener("fullscreenerror",this._fullScreenError,!1))}},c.ScaleManager.prototype.constructor=c.ScaleManager,Object.defineProperty(c.ScaleManager.prototype,"boundingParent",{get:function(){if(this.parentIsWindow||this.isFullScreen&&!this._createdFullScreenTarget)return null;var a=this.game.canvas&&this.game.canvas.parentNode;return a||null}}),Object.defineProperty(c.ScaleManager.prototype,"scaleMode",{get:function(){return this._scaleMode},set:function(a){return a!==this._scaleMode&&(this.isFullScreen||(this.updateDimensions(this._gameSize.width,this._gameSize.height,!0),this.queueUpdate(!0)),this._scaleMode=a),this._scaleMode}}),Object.defineProperty(c.ScaleManager.prototype,"fullScreenScaleMode",{get:function(){return this._fullScreenScaleMode},set:function(a){return a!==this._fullScreenScaleMode&&(this.isFullScreen?(this.prepScreenMode(!1),this._fullScreenScaleMode=a,this.prepScreenMode(!0),this.queueUpdate(!0)):this._fullScreenScaleMode=a),this._fullScreenScaleMode}}),Object.defineProperty(c.ScaleManager.prototype,"currentScaleMode",{get:function(){return this.isFullScreen?this._fullScreenScaleMode:this._scaleMode}}),Object.defineProperty(c.ScaleManager.prototype,"pageAlignHorizontally",{get:function(){return this._pageAlignHorizontally},set:function(a){a!==this._pageAlignHorizontally&&(this._pageAlignHorizontally=a,this.queueUpdate(!0))}}),Object.defineProperty(c.ScaleManager.prototype,"pageAlignVertically",{get:function(){return this._pageAlignVertically},set:function(a){a!==this._pageAlignVertically&&(this._pageAlignVertically=a,this.queueUpdate(!0))}}),Object.defineProperty(c.ScaleManager.prototype,"isFullScreen",{get:function(){return!!(document.fullscreenElement||document.webkitFullscreenElement||document.mozFullScreenElement||document.msFullscreenElement)}}),Object.defineProperty(c.ScaleManager.prototype,"isPortrait",{get:function(){return"portrait"===this.classifyOrientation(this.screenOrientation)}}),Object.defineProperty(c.ScaleManager.prototype,"isLandscape",{get:function(){return"landscape"===this.classifyOrientation(this.screenOrientation)}}),Object.defineProperty(c.ScaleManager.prototype,"isGamePortrait",{get:function(){return this.height>this.width}}),Object.defineProperty(c.ScaleManager.prototype,"isGameLandscape",{get:function(){return this.width>this.height}});var m=function(){};return c.Utils.Debug=m,c.Utils.Debug.prototype={isDisabled:!0,boot:m,preUpdate:m,reset:m,start:m,stop:m,line:m,soundInfo:m,cameraInfo:m,timer:m,pointer:m,spriteInputInfo:m,key:m,inputInfo:m,spriteBounds:m,ropeSegments:m,spriteInfo:m,spriteCoords:m,lineInfo:m,pixel:m,geom:m,rectangle:m,text:m,quadTree:m,body:m,bodyInfo:m,box2dWorld:m,box2dBody:m},c.Utils.Debug.prototype.constructor=c.Utils.Debug,c.DOM={getOffset:function(a,b){b=b||new c.Point;var d=a.getBoundingClientRect(),e=c.DOM.scrollY,f=c.DOM.scrollX,g=document.documentElement.clientTop,h=document.documentElement.clientLeft;return b.x=d.left+f-h,b.y=d.top+e-g,b},getBounds:function(a,b){return void 0===b&&(b=0),a=a&&!a.nodeType?a[0]:a,a&&1===a.nodeType?this.calibrate(a.getBoundingClientRect(),b):!1},calibrate:function(a,b){b=+b||0;var c={width:0,height:0,left:0,right:0,top:0,bottom:0};return c.width=(c.right=a.right+b)-(c.left=a.left-b),c.height=(c.bottom=a.bottom+b)-(c.top=a.top-b),c},getAspectRatio:function(a){a=null==a?this.visualBounds:1===a.nodeType?this.getBounds(a):a;var b=a.width,c=a.height;return"function"==typeof b&&(b=b.call(a)),"function"==typeof c&&(c=c.call(a)),b/c},inLayoutViewport:function(a,b){var c=this.getBounds(a,b);return!!c&&c.bottom>=0&&c.right>=0&&c.top<=this.layoutBounds.width&&c.left<=this.layoutBounds.height},getScreenOrientation:function(a){var b=window.screen,c=b.orientation||b.mozOrientation||b.msOrientation;if(c&&"string"==typeof c.type)return c.type;if("string"==typeof c)return c;var d="portrait-primary",e="landscape-primary";if("screen"===a)return b.height>b.width?d:e;if("viewport"===a)return this.visualBounds.height>this.visualBounds.width?d:e;if("window.orientation"===a&&"number"==typeof window.orientation)return 0===window.orientation||180===window.orientation?d:e;if(window.matchMedia){if(window.matchMedia("(orientation: portrait)").matches)return d;if(window.matchMedia("(orientation: landscape)").matches)return e}return this.visualBounds.height>this.visualBounds.width?d:e},visualBounds:new c.Rectangle,layoutBounds:new c.Rectangle,documentBounds:new c.Rectangle},c.Device.whenReady(function(a){var b=window&&"pageXOffset"in window?function(){return window.pageXOffset}:function(){return document.documentElement.scrollLeft},d=window&&"pageYOffset"in window?function(){return window.pageYOffset}:function(){return document.documentElement.scrollTop};Object.defineProperty(c.DOM,"scrollX",{get:b}),Object.defineProperty(c.DOM,"scrollY",{get:d}),Object.defineProperty(c.DOM.visualBounds,"x",{get:b}),Object.defineProperty(c.DOM.visualBounds,"y",{get:d}),Object.defineProperty(c.DOM.layoutBounds,"x",{value:0}),Object.defineProperty(c.DOM.layoutBounds,"y",{value:0});var e=a.desktop&&document.documentElement.clientWidth<=window.innerWidth&&document.documentElement.clientHeight<=window.innerHeight;if(e){var f=function(){return Math.max(window.innerWidth,document.documentElement.clientWidth)},g=function(){return Math.max(window.innerHeight,document.documentElement.clientHeight)};Object.defineProperty(c.DOM.visualBounds,"width",{get:f}),Object.defineProperty(c.DOM.visualBounds,"height",{get:g}),Object.defineProperty(c.DOM.layoutBounds,"width",{get:f}),Object.defineProperty(c.DOM.layoutBounds,"height",{get:g})}else Object.defineProperty(c.DOM.visualBounds,"width",{get:function(){return window.innerWidth}}),Object.defineProperty(c.DOM.visualBounds,"height",{get:function(){return window.innerHeight}}),Object.defineProperty(c.DOM.layoutBounds,"width",{get:function(){var a=document.documentElement.clientWidth,b=window.innerWidth;return b>a?b:a}}),Object.defineProperty(c.DOM.layoutBounds,"height",{get:function(){var a=document.documentElement.clientHeight,b=window.innerHeight;return b>a?b:a}});Object.defineProperty(c.DOM.documentBounds,"x",{value:0}),Object.defineProperty(c.DOM.documentBounds,"y",{value:0}),Object.defineProperty(c.DOM.documentBounds,"width",{get:function(){var a=document.documentElement;return Math.max(a.clientWidth,a.offsetWidth,a.scrollWidth)}}),Object.defineProperty(c.DOM.documentBounds,"height",{get:function(){var a=document.documentElement;return Math.max(a.clientHeight,a.offsetHeight,a.scrollHeight)}})},null,!0),c.ArraySet=function(a){this.position=0,this.list=a||[]},c.ArraySet.prototype={add:function(a){return this.exists(a)||this.list.push(a),a},getIndex:function(a){return this.list.indexOf(a)},getByKey:function(a,b){for(var c=this.list.length;c--;)if(this.list[c][a]===b)return this.list[c];return null},exists:function(a){return this.list.indexOf(a)>-1},reset:function(){this.list.length=0},remove:function(a){var b=this.list.indexOf(a);return b>-1?(this.list.splice(b,1),a):void 0},setAll:function(a,b){for(var c=this.list.length;c--;)this.list[c]&&(this.list[c][a]=b)},callAll:function(a){for(var b=Array.prototype.slice.call(arguments,1),c=this.list.length;c--;)this.list[c]&&this.list[c][a]&&this.list[c][a].apply(this.list[c],b)},removeAll:function(a){void 0===a&&(a=!1);for(var b=this.list.length;b--;)if(this.list[b]){var c=this.remove(this.list[b]);a&&c.destroy()}this.position=0,this.list=[]}},Object.defineProperty(c.ArraySet.prototype,"total",{get:function(){return this.list.length}}),Object.defineProperty(c.ArraySet.prototype,"first",{get:function(){return this.position=0,this.list.length>0?this.list[0]:null}}),Object.defineProperty(c.ArraySet.prototype,"next",{get:function(){return this.position0;b--){var c=Math.floor(Math.random()*(b+1)),d=a[b];a[b]=a[c],a[c]=d}return a},transposeMatrix:function(a){for(var b=a.length,c=a[0].length,d=new Array(c),e=0;c>e;e++){d[e]=new Array(b);for(var f=b-1;f>-1;f--)d[e][f]=a[f][e]}return d},rotateMatrix:function(a,b){if("string"!=typeof b&&(b=(b%360+360)%360),90===b||-270===b||"rotateLeft"===b)a=c.ArrayUtils.transposeMatrix(a),a=a.reverse();else if(-90===b||270===b||"rotateRight"===b)a=a.reverse(),a=c.ArrayUtils.transposeMatrix(a);else if(180===Math.abs(b)||"rotate180"===b){for(var d=0;d=e-a?e:d; -},rotate:function(a){var b=a.shift();return a.push(b),b},numberArray:function(a,b){for(var c=[],d=a;b>=d;d++)c.push(d);return c},numberArrayStep:function(a,b,d){(void 0===a||null===a)&&(a=0),(void 0===b||null===b)&&(b=a,a=0),void 0===d&&(d=1);for(var e=[],f=Math.max(c.Math.roundAwayFromZero((b-a)/(d||1)),0),g=0;f>g;g++)e.push(a),a+=d;return e}},c.LinkedList=function(){this.next=null,this.prev=null,this.first=null,this.last=null,this.total=0},c.LinkedList.prototype={add:function(a){return 0===this.total&&null===this.first&&null===this.last?(this.first=a,this.last=a,this.next=a,a.prev=this,this.total++,a):(this.last.next=a,a.prev=this.last,this.last=a,this.total++,a)},reset:function(){this.first=null,this.last=null,this.next=null,this.prev=null,this.total=0},remove:function(a){return 1===this.total?(this.reset(),void(a.next=a.prev=null)):(a===this.first?this.first=this.first.next:a===this.last&&(this.last=this.last.prev),a.prev&&(a.prev.next=a.next),a.next&&(a.next.prev=a.prev),a.next=a.prev=null,null===this.first&&(this.last=null),void this.total--)},callAll:function(a){if(this.first&&this.last){var b=this.first;do b&&b[a]&&b[a].call(b),b=b.next;while(b!=this.last.next)}}},c.LinkedList.prototype.constructor=c.LinkedList,c.Create=function(a){this.game=a,this.bmd=null,this.canvas=null,this.ctx=null,this.palettes=[{0:"#000",1:"#9D9D9D",2:"#FFF",3:"#BE2633",4:"#E06F8B",5:"#493C2B",6:"#A46422",7:"#EB8931",8:"#F7E26B",9:"#2F484E",A:"#44891A",B:"#A3CE27",C:"#1B2632",D:"#005784",E:"#31A2F2",F:"#B2DCEF"},{0:"#000",1:"#191028",2:"#46af45",3:"#a1d685",4:"#453e78",5:"#7664fe",6:"#833129",7:"#9ec2e8",8:"#dc534b",9:"#e18d79",A:"#d6b97b",B:"#e9d8a1",C:"#216c4b",D:"#d365c8",E:"#afaab9",F:"#f5f4eb"},{0:"#000",1:"#2234d1",2:"#0c7e45",3:"#44aacc",4:"#8a3622",5:"#5c2e78",6:"#aa5c3d",7:"#b5b5b5",8:"#5e606e",9:"#4c81fb",A:"#6cd947",B:"#7be2f9",C:"#eb8a60",D:"#e23d69",E:"#ffd93f",F:"#fff"},{0:"#000",1:"#fff",2:"#8b4131",3:"#7bbdc5",4:"#8b41ac",5:"#6aac41",6:"#3931a4",7:"#d5de73",8:"#945a20",9:"#5a4100",A:"#bd736a",B:"#525252",C:"#838383",D:"#acee8b",E:"#7b73de",F:"#acacac"},{0:"#000",1:"#191028",2:"#46af45",3:"#a1d685",4:"#453e78",5:"#7664fe",6:"#833129",7:"#9ec2e8",8:"#dc534b",9:"#e18d79",A:"#d6b97b",B:"#e9d8a1",C:"#216c4b",D:"#d365c8",E:"#afaab9",F:"#fff"}]},c.Create.PALETTE_ARNE=0,c.Create.PALETTE_JMP=1,c.Create.PALETTE_CGA=2,c.Create.PALETTE_C64=3,c.Create.PALETTE_JAPANESE_MACHINE=4,c.Create.prototype={texture:function(a,b,c,d,e){void 0===c&&(c=8),void 0===d&&(d=c),void 0===e&&(e=0);var f=b[0].length*c,g=b.length*d;null===this.bmd&&(this.bmd=this.game.make.bitmapData(),this.canvas=this.bmd.canvas,this.ctx=this.bmd.context),this.bmd.resize(f,g),this.bmd.clear();for(var h=0;hg;g+=e)this.ctx.fillRect(0,g,b,1);for(var h=0;b>h;h+=d)this.ctx.fillRect(h,0,1,c);return this.bmd.generateTexture(a)}},c.Create.prototype.constructor=c.Create,c.FlexGrid=function(a,b,d){this.game=a.game,this.manager=a,this.width=b,this.height=d,this.boundsCustom=new c.Rectangle(0,0,b,d),this.boundsFluid=new c.Rectangle(0,0,b,d),this.boundsFull=new c.Rectangle(0,0,b,d),this.boundsNone=new c.Rectangle(0,0,b,d),this.positionCustom=new c.Point(0,0),this.positionFluid=new c.Point(0,0),this.positionFull=new c.Point(0,0),this.positionNone=new c.Point(0,0),this.scaleCustom=new c.Point(1,1),this.scaleFluid=new c.Point(1,1),this.scaleFluidInversed=new c.Point(1,1),this.scaleFull=new c.Point(1,1),this.scaleNone=new c.Point(1,1),this.customWidth=0,this.customHeight=0,this.customOffsetX=0,this.customOffsetY=0,this.ratioH=b/d,this.ratioV=d/b,this.multiplier=0,this.layers=[]},c.FlexGrid.prototype={setSize:function(a,b){this.width=a,this.height=b,this.ratioH=a/b,this.ratioV=b/a,this.scaleNone=new c.Point(1,1),this.boundsNone.width=this.width,this.boundsNone.height=this.height,this.refresh()},createCustomLayer:function(a,b,d,e){void 0===e&&(e=!0),this.customWidth=a,this.customHeight=b,this.boundsCustom.width=a,this.boundsCustom.height=b;var f=new c.FlexLayer(this,this.positionCustom,this.boundsCustom,this.scaleCustom);return e&&this.game.world.add(f),this.layers.push(f),"undefined"!=typeof d&&null!==typeof d&&f.addMultiple(d),f},createFluidLayer:function(a,b){void 0===b&&(b=!0);var d=new c.FlexLayer(this,this.positionFluid,this.boundsFluid,this.scaleFluid);return b&&this.game.world.add(d),this.layers.push(d),"undefined"!=typeof a&&null!==typeof a&&d.addMultiple(a),d},createFullLayer:function(a){var b=new c.FlexLayer(this,this.positionFull,this.boundsFull,this.scaleFluid);return this.game.world.add(b),this.layers.push(b),"undefined"!=typeof a&&b.addMultiple(a),b},createFixedLayer:function(a){var b=new c.FlexLayer(this,this.positionNone,this.boundsNone,this.scaleNone);return this.game.world.add(b),this.layers.push(b),"undefined"!=typeof a&&b.addMultiple(a),b},reset:function(){for(var a=this.layers.length;a--;)this.layers[a].persist||(this.layers[a].position=null,this.layers[a].scale=null,this.layers.slice(a,1))},onResize:function(a,b){this.ratioH=a/b,this.ratioV=b/a,this.refresh(a,b)},refresh:function(){this.multiplier=Math.min(this.manager.height/this.height,this.manager.width/this.width),this.boundsFluid.width=Math.round(this.width*this.multiplier),this.boundsFluid.height=Math.round(this.height*this.multiplier),this.scaleFluid.set(this.boundsFluid.width/this.width,this.boundsFluid.height/this.height),this.scaleFluidInversed.set(this.width/this.boundsFluid.width,this.height/this.boundsFluid.height),this.scaleFull.set(this.boundsFull.width/this.width,this.boundsFull.height/this.height),this.boundsFull.width=Math.round(this.manager.width*this.scaleFluidInversed.x),this.boundsFull.height=Math.round(this.manager.height*this.scaleFluidInversed.y),this.boundsFluid.centerOn(this.manager.bounds.centerX,this.manager.bounds.centerY),this.boundsNone.centerOn(this.manager.bounds.centerX,this.manager.bounds.centerY),this.positionFluid.set(this.boundsFluid.x,this.boundsFluid.y),this.positionNone.set(this.boundsNone.x,this.boundsNone.y)},fitSprite:function(a){this.manager.scaleSprite(a),a.x=this.manager.bounds.centerX,a.y=this.manager.bounds.centerY},debug:function(){this.game.debug.text(this.boundsFluid.width+" x "+this.boundsFluid.height,this.boundsFluid.x+4,this.boundsFluid.y+16),this.game.debug.geom(this.boundsFluid,"rgba(255,0,0,0.9",!1)}},c.FlexGrid.prototype.constructor=c.FlexGrid,c.FlexLayer=function(a,b,d,e){c.Group.call(this,a.game,null,"__flexLayer"+a.game.rnd.uuid(),!1),this.manager=a.manager,this.grid=a,this.persist=!1,this.position=b,this.bounds=d,this.scale=e,this.topLeft=d.topLeft,this.topMiddle=new c.Point(d.halfWidth,0),this.topRight=d.topRight,this.bottomLeft=d.bottomLeft,this.bottomMiddle=new c.Point(d.halfWidth,d.bottom),this.bottomRight=d.bottomRight},c.FlexLayer.prototype=Object.create(c.Group.prototype),c.FlexLayer.prototype.constructor=c.FlexLayer,c.FlexLayer.prototype.resize=function(){},c.FlexLayer.prototype.debug=function(){this.game.debug.text(this.bounds.width+" x "+this.bounds.height,this.bounds.x+4,this.bounds.y+16),this.game.debug.geom(this.bounds,"rgba(0,0,255,0.9",!1),this.game.debug.geom(this.topLeft,"rgba(255,255,255,0.9"),this.game.debug.geom(this.topMiddle,"rgba(255,255,255,0.9"),this.game.debug.geom(this.topRight,"rgba(255,255,255,0.9")},c.Color={packPixel:function(a,b,d,e){return c.Device.LITTLE_ENDIAN?(e<<24|d<<16|b<<8|a)>>>0:(a<<24|b<<16|d<<8|e)>>>0},unpackPixel:function(a,b,d,e){return(void 0===b||null===b)&&(b=c.Color.createColor()),(void 0===d||null===d)&&(d=!1),(void 0===e||null===e)&&(e=!1),c.Device.LITTLE_ENDIAN?(b.a=(4278190080&a)>>>24,b.b=(16711680&a)>>>16,b.g=(65280&a)>>>8,b.r=255&a):(b.r=(4278190080&a)>>>24,b.g=(16711680&a)>>>16,b.b=(65280&a)>>>8,b.a=255&a),b.color=a,b.rgba="rgba("+b.r+","+b.g+","+b.b+","+b.a/255+")",d&&c.Color.RGBtoHSL(b.r,b.g,b.b,b),e&&c.Color.RGBtoHSV(b.r,b.g,b.b,b),b},fromRGBA:function(a,b){return b||(b=c.Color.createColor()),b.r=(4278190080&a)>>>24,b.g=(16711680&a)>>>16,b.b=(65280&a)>>>8,b.a=255&a,b.rgba="rgba("+b.r+","+b.g+","+b.b+","+b.a+")",b},toRGBA:function(a,b,c,d){return a<<24|b<<16|c<<8|d},RGBtoHSL:function(a,b,d,e){e||(e=c.Color.createColor(a,b,d,1)),a/=255,b/=255,d/=255;var f=Math.min(a,b,d),g=Math.max(a,b,d);if(e.h=0,e.s=0,e.l=(g+f)/2,g!==f){var h=g-f;e.s=e.l>.5?h/(2-g-f):h/(g+f),g===a?e.h=(b-d)/h+(d>b?6:0):g===b?e.h=(d-a)/h+2:g===d&&(e.h=(a-b)/h+4),e.h/=6}return e},HSLtoRGB:function(a,b,d,e){if(e?(e.r=d,e.g=d,e.b=d):e=c.Color.createColor(d,d,d),0!==b){var f=.5>d?d*(1+b):d+b-d*b,g=2*d-f;e.r=c.Color.hueToColor(g,f,a+1/3),e.g=c.Color.hueToColor(g,f,a),e.b=c.Color.hueToColor(g,f,a-1/3)}return e.r=Math.floor(255*e.r|0),e.g=Math.floor(255*e.g|0),e.b=Math.floor(255*e.b|0),c.Color.updateColor(e),e},RGBtoHSV:function(a,b,d,e){e||(e=c.Color.createColor(a,b,d,255)),a/=255,b/=255,d/=255;var f=Math.min(a,b,d),g=Math.max(a,b,d),h=g-f;return e.h=0,e.s=0===g?0:h/g,e.v=g,g!==f&&(g===a?e.h=(b-d)/h+(d>b?6:0):g===b?e.h=(d-a)/h+2:g===d&&(e.h=(a-b)/h+4),e.h/=6),e},HSVtoRGB:function(a,b,d,e){void 0===e&&(e=c.Color.createColor(0,0,0,1,a,b,0,d));var f,g,h,i=Math.floor(6*a),j=6*a-i,k=d*(1-b),l=d*(1-j*b),m=d*(1-(1-j)*b);switch(i%6){case 0:f=d,g=m,h=k;break;case 1:f=l,g=d,h=k;break;case 2:f=k,g=d,h=m;break;case 3:f=k,g=l,h=d;break;case 4:f=m,g=k,h=d;break;case 5:f=d,g=k,h=l}return e.r=Math.floor(255*f),e.g=Math.floor(255*g),e.b=Math.floor(255*h),c.Color.updateColor(e),e},hueToColor:function(a,b,c){return 0>c&&(c+=1),c>1&&(c-=1),1/6>c?a+6*(b-a)*c:.5>c?b:2/3>c?a+(b-a)*(2/3-c)*6:a},createColor:function(a,b,d,e,f,g,h,i){var j={r:a||0,g:b||0,b:d||0,a:e||1,h:f||0,s:g||0,l:h||0,v:i||0,color:0,color32:0,rgba:""};return c.Color.updateColor(j)},updateColor:function(a){return a.rgba="rgba("+a.r.toString()+","+a.g.toString()+","+a.b.toString()+","+a.a.toString()+")",a.color=c.Color.getColor(a.r,a.g,a.b),a.color32=c.Color.getColor32(255*a.a,a.r,a.g,a.b),a},getColor32:function(a,b,c,d){return a<<24|b<<16|c<<8|d},getColor:function(a,b,c){return a<<16|b<<8|c},RGBtoString:function(a,b,d,e,f){return void 0===e&&(e=255),void 0===f&&(f="#"),"#"===f?"#"+((1<<24)+(a<<16)+(b<<8)+d).toString(16).slice(1):"0x"+c.Color.componentToHex(e)+c.Color.componentToHex(a)+c.Color.componentToHex(b)+c.Color.componentToHex(d)},hexToRGB:function(a){var b=c.Color.hexToColor(a);return b?c.Color.getColor32(b.a,b.r,b.g,b.b):void 0},hexToColor:function(a,b){a=a.replace(/^(?:#|0x)?([a-f\d])([a-f\d])([a-f\d])$/i,function(a,b,c,d){return b+b+c+c+d+d});var d=/^(?:#|0x)?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(a);if(d){var e=parseInt(d[1],16),f=parseInt(d[2],16),g=parseInt(d[3],16);b?(b.r=e,b.g=f,b.b=g):b=c.Color.createColor(e,f,g)}return b},webToColor:function(a,b){b||(b=c.Color.createColor());var d=/^rgba?\(\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*(?:,\s*(\d+(?:\.\d+)?))?\s*\)$/.exec(a);return d&&(b.r=parseInt(d[1],10),b.g=parseInt(d[2],10),b.b=parseInt(d[3],10),b.a=void 0!==d[4]?parseFloat(d[4]):1,c.Color.updateColor(b)),b},valueToColor:function(a,b){if(b||(b=c.Color.createColor()),"string"==typeof a)return 0===a.indexOf("rgb")?c.Color.webToColor(a,b):(b.a=1,c.Color.hexToColor(a,b));if("number"==typeof a){var d=c.Color.getRGB(a);return b.r=d.r,b.g=d.g,b.b=d.b,b.a=d.a/255,b}return b},componentToHex:function(a){var b=a.toString(16);return 1==b.length?"0"+b:b},HSVColorWheel:function(a,b){void 0===a&&(a=1),void 0===b&&(b=1);for(var d=[],e=0;359>=e;e++)d.push(c.Color.HSVtoRGB(e/359,a,b));return d},HSLColorWheel:function(a,b){void 0===a&&(a=.5),void 0===b&&(b=.5);for(var d=[],e=0;359>=e;e++)d.push(c.Color.HSLtoRGB(e/359,a,b));return d},interpolateColor:function(a,b,d,e,f){void 0===f&&(f=255);var g=c.Color.getRGB(a),h=c.Color.getRGB(b),i=(h.red-g.red)*e/d+g.red,j=(h.green-g.green)*e/d+g.green,k=(h.blue-g.blue)*e/d+g.blue;return c.Color.getColor32(f,i,j,k)},interpolateColorWithRGB:function(a,b,d,e,f,g){var h=c.Color.getRGB(a),i=(b-h.red)*g/f+h.red,j=(d-h.green)*g/f+h.green,k=(e-h.blue)*g/f+h.blue;return c.Color.getColor(i,j,k)},interpolateRGB:function(a,b,d,e,f,g,h,i){var j=(e-a)*i/h+a,k=(f-b)*i/h+b,l=(g-d)*i/h+d;return c.Color.getColor(j,k,l)},getRandomColor:function(a,b,d){if(void 0===a&&(a=0),void 0===b&&(b=255),void 0===d&&(d=255),b>255||a>b)return c.Color.getColor(255,255,255);var e=a+Math.round(Math.random()*(b-a)),f=a+Math.round(Math.random()*(b-a)),g=a+Math.round(Math.random()*(b-a));return c.Color.getColor32(d,e,f,g)},getRGB:function(a){return a>16777215?{alpha:a>>>24,red:a>>16&255,green:a>>8&255,blue:255&a,a:a>>>24,r:a>>16&255,g:a>>8&255,b:255&a}:{alpha:255,red:a>>16&255,green:a>>8&255,blue:255&a,a:255,r:a>>16&255,g:a>>8&255,b:255&a}},getWebRGB:function(a){if("object"==typeof a)return"rgba("+a.r.toString()+","+a.g.toString()+","+a.b.toString()+","+(a.a/255).toString()+")";var b=c.Color.getRGB(a);return"rgba("+b.r.toString()+","+b.g.toString()+","+b.b.toString()+","+(b.a/255).toString()+")"},getAlpha:function(a){return a>>>24},getAlphaFloat:function(a){return(a>>>24)/255},getRed:function(a){return a>>16&255},getGreen:function(a){return a>>8&255},getBlue:function(a){return 255&a},blendNormal:function(a){return a},blendLighten:function(a,b){return b>a?b:a},blendDarken:function(a,b){return b>a?a:b},blendMultiply:function(a,b){return a*b/255},blendAverage:function(a,b){return(a+b)/2},blendAdd:function(a,b){return Math.min(255,a+b)},blendSubtract:function(a,b){return Math.max(0,a+b-255)},blendDifference:function(a,b){return Math.abs(a-b)},blendNegation:function(a,b){return 255-Math.abs(255-a-b)},blendScreen:function(a,b){return 255-((255-a)*(255-b)>>8)},blendExclusion:function(a,b){return a+b-2*a*b/255},blendOverlay:function(a,b){return 128>b?2*a*b/255:255-2*(255-a)*(255-b)/255},blendSoftLight:function(a,b){return 128>b?2*((a>>1)+64)*(b/255):255-2*(255-((a>>1)+64))*(255-b)/255},blendHardLight:function(a,b){return c.Color.blendOverlay(b,a)},blendColorDodge:function(a,b){return 255===b?b:Math.min(255,(a<<8)/(255-b))},blendColorBurn:function(a,b){return 0===b?b:Math.max(0,255-(255-a<<8)/b)},blendLinearDodge:function(a,b){return c.Color.blendAdd(a,b)},blendLinearBurn:function(a,b){return c.Color.blendSubtract(a,b)},blendLinearLight:function(a,b){return 128>b?c.Color.blendLinearBurn(a,2*b):c.Color.blendLinearDodge(a,2*(b-128))},blendVividLight:function(a,b){return 128>b?c.Color.blendColorBurn(a,2*b):c.Color.blendColorDodge(a,2*(b-128))},blendPinLight:function(a,b){return 128>b?c.Color.blendDarken(a,2*b):c.Color.blendLighten(a,2*(b-128))},blendHardMix:function(a,b){return c.Color.blendVividLight(a,b)<128?0:255},blendReflect:function(a,b){return 255===b?b:Math.min(255,a*a/(255-b))},blendGlow:function(a,b){return c.Color.blendReflect(b,a)},blendPhoenix:function(a,b){return Math.min(a,b)-Math.max(a,b)+255}},c.Physics=function(a,b){b=b||{},this.game=a,this.config=b,this.arcade=null,this.p2=null,this.ninja=null,this.box2d=null,this.chipmunk=null,this.matter=null,this.parseConfig()},c.Physics.ARCADE=0,c.Physics.P2JS=1,c.Physics.NINJA=2,c.Physics.BOX2D=3,c.Physics.CHIPMUNK=4,c.Physics.MATTERJS=5,c.Physics.prototype={parseConfig:function(){this.config.hasOwnProperty("arcade")&&this.config.arcade!==!0||!c.Physics.hasOwnProperty("Arcade")||(this.arcade=new c.Physics.Arcade(this.game)),this.config.hasOwnProperty("ninja")&&this.config.ninja===!0&&c.Physics.hasOwnProperty("Ninja")&&(this.ninja=new c.Physics.Ninja(this.game)),this.config.hasOwnProperty("p2")&&this.config.p2===!0&&c.Physics.hasOwnProperty("P2")&&(this.p2=new c.Physics.P2(this.game,this.config)),this.config.hasOwnProperty("box2d")&&this.config.box2d===!0&&c.Physics.hasOwnProperty("BOX2D")&&(this.box2d=new c.Physics.BOX2D(this.game,this.config)),this.config.hasOwnProperty("matter")&&this.config.matter===!0&&c.Physics.hasOwnProperty("Matter")&&(this.matter=new c.Physics.Matter(this.game,this.config))},startSystem:function(a){a===c.Physics.ARCADE?this.arcade=new c.Physics.Arcade(this.game):a===c.Physics.P2JS?null===this.p2?this.p2=new c.Physics.P2(this.game,this.config):this.p2.reset():a===c.Physics.NINJA?this.ninja=new c.Physics.Ninja(this.game):a===c.Physics.BOX2D?null===this.box2d?this.box2d=new c.Physics.Box2D(this.game,this.config):this.box2d.reset():a===c.Physics.MATTERJS&&(null===this.matter?this.matter=new c.Physics.Matter(this.game,this.config):this.matter.reset())},enable:function(a,b,d){void 0===b&&(b=c.Physics.ARCADE),void 0===d&&(d=!1),b===c.Physics.ARCADE?this.arcade.enable(a):b===c.Physics.P2JS&&this.p2?this.p2.enable(a,d):b===c.Physics.NINJA&&this.ninja?this.ninja.enableAABB(a):b===c.Physics.BOX2D&&this.box2d?this.box2d.enable(a):b===c.Physics.MATTERJS&&this.matter?this.matter.enable(a):console.warn(a.key+" is attempting to enable a physics body using an unknown physics system.")},preUpdate:function(){this.p2&&this.p2.preUpdate(),this.box2d&&this.box2d.preUpdate(),this.matter&&this.matter.preUpdate()},update:function(){this.p2&&this.p2.update(),this.box2d&&this.box2d.update(),this.matter&&this.matter.update()},setBoundsToWorld:function(){this.arcade&&this.arcade.setBoundsToWorld(),this.ninja&&this.ninja.setBoundsToWorld(),this.p2&&this.p2.setBoundsToWorld(),this.box2d&&this.box2d.setBoundsToWorld(),this.matter&&this.matter.setBoundsToWorld()},clear:function(){this.p2&&this.p2.clear(),this.box2d&&this.box2d.clear(),this.matter&&this.matter.clear()},reset:function(){this.p2&&this.p2.reset(),this.box2d&&this.box2d.reset(),this.matter&&this.matter.reset()},destroy:function(){this.p2&&this.p2.destroy(),this.box2d&&this.box2d.destroy(),this.matter&&this.matter.destroy(),this.arcade=null,this.ninja=null,this.p2=null,this.box2d=null,this.matter=null}},c.Physics.prototype.constructor=c.Physics,c.Particles=function(a){this.game=a,this.emitters={},this.ID=0},c.Particles.prototype={add:function(a){return this.emitters[a.name]=a,a},remove:function(a){delete this.emitters[a.name]},update:function(){for(var a in this.emitters)this.emitters[a].exists&&this.emitters[a].update()}},c.Particles.prototype.constructor=c.Particles,void 0===PIXI.blendModes&&(PIXI.blendModes=c.blendModes),void 0===PIXI.scaleModes&&(PIXI.scaleModes=c.scaleModes),void 0===PIXI.Texture.emptyTexture&&(PIXI.Texture.emptyTexture=new PIXI.Texture(new PIXI.BaseTexture)),void 0===PIXI.DisplayObject._tempMatrix&&(PIXI.DisplayObject._tempMatrix=new PIXI.Matrix),void 0===PIXI.RenderTexture.tempMatrix&&(PIXI.RenderTexture.tempMatrix=new PIXI.Matrix),PIXI.Graphics&&void 0===PIXI.Graphics.POLY&&(PIXI.Graphics.POLY=c.POLYGON,PIXI.Graphics.RECT=c.RECTANGLE,PIXI.Graphics.CIRC=c.CIRCLE,PIXI.Graphics.ELIP=c.ELLIPSE,PIXI.Graphics.RREC=c.ROUNDEDRECTANGLE),PIXI.TextureSilentFail=!0,"undefined"!=typeof exports?("undefined"!=typeof module&&module.exports&&(exports=module.exports=c),exports.Phaser=c):"undefined"!=typeof define&&define.amd?define("Phaser",function(){return b.Phaser=c}()):b.Phaser=c,c}.call(this); +(function(){var a=this,b=b||{};return b.game=null,b.WEBGL_RENDERER=0,b.CANVAS_RENDERER=1,b.VERSION="v2.2.9",b._UID=0,"undefined"!=typeof Float32Array?(b.Float32Array=Float32Array,b.Uint16Array=Uint16Array,b.Uint32Array=Uint32Array,b.ArrayBuffer=ArrayBuffer):(b.Float32Array=Array,b.Uint16Array=Array),b.PI_2=2*Math.PI,b.RAD_TO_DEG=180/Math.PI,b.DEG_TO_RAD=Math.PI/180,b.RETINA_PREFIX="@2x",b.DisplayObject=function(){this.position=new b.Point(0,0),this.scale=new b.Point(1,1),this.pivot=new b.Point(0,0),this.rotation=0,this.alpha=1,this.visible=!0,this.hitArea=null,this.renderable=!1,this.parent=null,this.stage=null,this.worldAlpha=1,this.worldTransform=new b.Matrix,this.worldPosition=new b.Point(0,0),this.worldScale=new b.Point(1,1),this.worldRotation=0,this.filterArea=null,this._sr=0,this._cr=1,this._bounds=new b.Rectangle(0,0,1,1),this._currentBounds=null,this._mask=null,this._cacheAsBitmap=!1,this._cacheIsDirty=!1},b.DisplayObject.prototype.constructor=b.DisplayObject,b.DisplayObject.prototype={destroy:function(){if(this.children){for(var a=this.children.length;a--;)this.children[a].destroy();this.children=[]}this.hitArea=null,this.parent=null,this.stage=null,this.worldTransform=null,this.filterArea=null,this.renderable=!1,this._bounds=null,this._currentBounds=null,this._mask=null,this._destroyCachedSprite()},updateTransform:function(a){if(!a&&!this.parent&&!this.game)return this;var c=this.parent;a?c=a:this.parent||(c=this.game.world);var d,e,f,g,h,i,j=c.worldTransform,k=this.worldTransform;return this.rotation%b.PI_2?(this.rotation!==this.rotationCache&&(this.rotationCache=this.rotation,this._sr=Math.sin(this.rotation),this._cr=Math.cos(this.rotation)),d=this._cr*this.scale.x,e=this._sr*this.scale.x,f=-this._sr*this.scale.y,g=this._cr*this.scale.y,h=this.position.x,i=this.position.y,(this.pivot.x||this.pivot.y)&&(h-=this.pivot.x*d+this.pivot.y*f,i-=this.pivot.x*e+this.pivot.y*g),k.a=d*j.a+e*j.c,k.b=d*j.b+e*j.d,k.c=f*j.a+g*j.c,k.d=f*j.b+g*j.d,k.tx=h*j.a+i*j.c+j.tx,k.ty=h*j.b+i*j.d+j.ty):(d=this.scale.x,g=this.scale.y,h=this.position.x-this.pivot.x*d,i=this.position.y-this.pivot.y*g,k.a=d*j.a,k.b=d*j.b,k.c=g*j.c,k.d=g*j.d,k.tx=h*j.a+i*j.c+j.tx,k.ty=h*j.b+i*j.d+j.ty),this.worldAlpha=this.alpha*c.worldAlpha,this.worldPosition.set(k.tx,k.ty),this.worldScale.set(this.scale.x*Math.sqrt(k.a*k.a+k.c*k.c),this.scale.y*Math.sqrt(k.b*k.b+k.d*k.d)),this.worldRotation=Math.atan2(-k.c,k.d),this._currentBounds=null,this.transformCallback&&this.transformCallback.call(this.transformCallbackContext,k,j),this},setStageReference:function(a){return this.stage=a,this},preUpdate:function(){},generateTexture:function(a,c,d){var e=this.getLocalBounds(),f=new b.RenderTexture(0|e.width,0|e.height,d,c,a);return b.DisplayObject._tempMatrix.tx=-e.x,b.DisplayObject._tempMatrix.ty=-e.y,f.render(this,b.DisplayObject._tempMatrix),f},updateCache:function(){return this._generateCachedSprite(),this},toGlobal:function(a){return this.updateTransform(),this.worldTransform.apply(a)},toLocal:function(a,b){return b&&(a=b.toGlobal(a)),this.updateTransform(),this.worldTransform.applyInverse(a)},_renderCachedSprite:function(a){this._cachedSprite.worldAlpha=this.worldAlpha,a.gl?b.Sprite.prototype._renderWebGL.call(this._cachedSprite,a):b.Sprite.prototype._renderCanvas.call(this._cachedSprite,a)},_generateCachedSprite:function(){this._cacheAsBitmap=!1;var a=this.getLocalBounds();if(a.width=Math.max(1,Math.ceil(a.width)),a.height=Math.max(1,Math.ceil(a.height)),this.updateTransform(),this._cachedSprite)this._cachedSprite.texture.resize(a.width,a.height);else{var c=new b.RenderTexture(a.width,a.height);this._cachedSprite=new b.Sprite(c),this._cachedSprite.worldTransform=this.worldTransform}var d=this._filters;this._filters=null,this._cachedSprite.filters=d,b.DisplayObject._tempMatrix.tx=-a.x,b.DisplayObject._tempMatrix.ty=-a.y,this._cachedSprite.texture.render(this,b.DisplayObject._tempMatrix,!0),this._cachedSprite.anchor.x=-(a.x/a.width),this._cachedSprite.anchor.y=-(a.y/a.height),this._filters=d,this._cacheAsBitmap=!0},_destroyCachedSprite:function(){this._cachedSprite&&(this._cachedSprite.texture.destroy(!0),this._cachedSprite=null)}},b.DisplayObject.prototype.displayObjectUpdateTransform=b.DisplayObject.prototype.updateTransform,Object.defineProperties(b.DisplayObject.prototype,{x:{get:function(){return this.position.x},set:function(a){this.position.x=a}},y:{get:function(){return this.position.y},set:function(a){this.position.y=a}},worldVisible:{get:function(){if(this.visible){var a=this.parent;do{if(!a.visible)return!1;a=a.parent}while(a);return!0}return!1}},mask:{get:function(){return this._mask},set:function(a){this._mask&&(this._mask.isMask=!1),this._mask=a,a&&(this._mask.isMask=!0)}},filters:{get:function(){return this._filters},set:function(a){if(Array.isArray(a)){for(var c=[],d=0;d=0&&b<=this.children.length)return a.parent&&a.parent.removeChild(a),a.parent=this,this.children.splice(b,0,a),this.stage&&a.setStageReference(this.stage),a;throw new Error(a+"addChildAt: The index "+b+" supplied is out of bounds "+this.children.length)},b.DisplayObjectContainer.prototype.swapChildren=function(a,b){if(a!==b){var c=this.getChildIndex(a),d=this.getChildIndex(b);if(0>c||0>d)throw new Error("swapChildren: Both the supplied DisplayObjects must be a child of the caller.");this.children[c]=b,this.children[d]=a}},b.DisplayObjectContainer.prototype.getChildIndex=function(a){var b=this.children.indexOf(a);if(-1===b)throw new Error("The supplied DisplayObject must be a child of the caller");return b},b.DisplayObjectContainer.prototype.setChildIndex=function(a,b){if(0>b||b>=this.children.length)throw new Error("The supplied index is out of bounds");var c=this.getChildIndex(a);this.children.splice(c,1),this.children.splice(b,0,a)},b.DisplayObjectContainer.prototype.getChildAt=function(a){if(0>a||a>=this.children.length)throw new Error("getChildAt: Supplied index "+a+" does not exist in the child list, or the supplied DisplayObject must be a child of the caller");return this.children[a]},b.DisplayObjectContainer.prototype.removeChild=function(a){var b=this.children.indexOf(a);if(-1!==b)return this.removeChildAt(b)},b.DisplayObjectContainer.prototype.removeChildAt=function(a){var b=this.getChildAt(a);return this.stage&&b.removeStageReference(),b.parent=void 0,this.children.splice(a,1),b},b.DisplayObjectContainer.prototype.removeChildren=function(a,b){var c=a||0,d="number"==typeof b?b:this.children.length,e=d-c;if(e>0&&d>=e){for(var f=this.children.splice(c,e),g=0;gc?g:c,h=h>d?h:d)}if(!i)return b.EmptyRectangle;var l=this._bounds;return l.x=e,l.y=f,l.width=g-e,l.height=h-f,l},b.DisplayObjectContainer.prototype.getLocalBounds=function(){var a=this.worldTransform;this.worldTransform=b.identityMatrix;for(var c=0;ci){i*=-1;var s=d;d=-e,e=-s}if(0>l){l*=-1;var s=f;f=-g,g=-s}q=i*e+m,o=i*d+m,r=l*g+n,p=l*f+n}else{var t=i*e+k*g+m,u=l*g+j*e+n,v=i*d+k*g+m,w=l*g+j*d+n,x=i*d+k*f+m,y=l*f+j*d+n,z=i*e+k*f+m,A=l*f+j*e+n;q=q>t?t:q,q=q>v?v:q,q=q>x?x:q,q=q>z?z:q,r=r>u?u:r,r=r>w?w:r,r=r>y?y:r,r=r>A?A:r,o=t>o?t:o,o=v>o?v:o,o=x>o?x:o,o=z>o?z:o,p=u>p?u:p,p=w>p?w:p,p=y>p?y:p,p=A>p?A:p}var B=this._bounds;return B.x=q,B.width=o-q,B.y=r,B.height=p-r,this._currentBounds=B,B},b.Sprite.prototype._renderWebGL=function(a,b){if(this.visible&&!(this.alpha<=0)&&this.renderable){var c=this.worldTransform;if(b&&(c=b),this._mask||this._filters){var d=a.spriteBatch;this._filters&&(d.flush(),a.filterManager.pushFilter(this._filterBlock)),this._mask&&(d.stop(),a.maskManager.pushMask(this.mask,a),d.start()),d.render(this);for(var e=0;e>16&255)/255,(a>>8&255)/255,(255&a)/255]},b.rgb2hex=function(a){return(255*a[0]<<16)+(255*a[1]<<8)+255*a[2]},b.canUseNewCanvasBlendModes=function(){if(void 0===document)return!1;var a="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAQAAAABAQMAAADD8p2OAAAAA1BMVEX/",c="AAAACklEQVQI12NgAAAAAgAB4iG8MwAAAABJRU5ErkJggg==",d=new Image;d.src=a+"AP804Oa6"+c;var e=new Image;e.src=a+"/wCKxvRF"+c;var f=b.CanvasPool.create(this,6,1),g=f.getContext("2d");if(g.globalCompositeOperation="multiply",g.drawImage(d,0,0),g.drawImage(e,2,0),!g.getImageData(2,0,1,1))return!1;var h=g.getImageData(2,0,1,1).data;return b.CanvasPool.remove(this),255===h[0]&&0===h[1]&&0===h[2]},b.getNextPowerOfTwo=function(a){if(a>0&&0===(a&a-1))return a;for(var b=1;a>b;)b<<=1;return b},b.isPowerOfTwo=function(a,b){return a>0&&0===(a&a-1)&&b>0&&0===(b&b-1)},b.CanvasPool={create:function(a,c,d){var e,f=b.CanvasPool.getFirst();if(-1===f){var g={parent:a,canvas:document.createElement("canvas")};b.CanvasPool.pool.push(g),e=g.canvas}else b.CanvasPool.pool[f].parent=a,e=b.CanvasPool.pool[f].canvas;return void 0!==c&&(e.width=c,e.height=d),e},getFirst:function(){for(var a=b.CanvasPool.pool,c=0;cd;d+=6,e+=4)this.indices[d+0]=e+0,this.indices[d+1]=e+1,this.indices[d+2]=e+2,this.indices[d+3]=e+0,this.indices[d+4]=e+2,this.indices[d+5]=e+3;this.drawing=!1,this.currentBatchSize=0,this.currentBaseTexture=null,this.dirty=!0,this.textures=[],this.blendModes=[],this.shaders=[],this.sprites=[],this.defaultShader=new b.AbstractFilter(["precision lowp float;","varying vec2 vTextureCoord;","varying vec4 vColor;","uniform sampler2D uSampler;","void main(void) {"," gl_FragColor = texture2D(uSampler, vTextureCoord) * vColor ;","}"])},b.WebGLSpriteBatch.prototype.setContext=function(a){this.gl=a,this.vertexBuffer=a.createBuffer(),this.indexBuffer=a.createBuffer(),a.bindBuffer(a.ELEMENT_ARRAY_BUFFER,this.indexBuffer),a.bufferData(a.ELEMENT_ARRAY_BUFFER,this.indices,a.STATIC_DRAW),a.bindBuffer(a.ARRAY_BUFFER,this.vertexBuffer),a.bufferData(a.ARRAY_BUFFER,this.vertices,a.DYNAMIC_DRAW),this.currentBlendMode=99999;var c=new b.PixiShader(a);c.fragmentSrc=this.defaultShader.fragmentSrc,c.uniforms={},c.init(),this.defaultShader.shaders[a.id]=c},b.WebGLSpriteBatch.prototype.begin=function(a){this.renderSession=a,this.shader=this.renderSession.shaderManager.defaultShader,this.start()},b.WebGLSpriteBatch.prototype.end=function(){this.flush()},b.WebGLSpriteBatch.prototype.render=function(a,b){var c=a.texture,d=a.worldTransform;b&&(d=b),this.currentBatchSize>=this.size&&(this.flush(),this.currentBaseTexture=c.baseTexture);var e=c._uvs;if(e){var f,g,h,i,j=a.anchor.x,k=a.anchor.y;if(c.trim){var l=c.trim;g=l.x-j*l.width,f=g+c.crop.width,i=l.y-k*l.height,h=i+c.crop.height}else f=c.frame.width*(1-j),g=c.frame.width*-j,h=c.frame.height*(1-k),i=c.frame.height*-k;var m=4*this.currentBatchSize*this.vertSize,n=c.baseTexture.resolution,o=d.a/n,p=d.b/n,q=d.c/n,r=d.d/n,s=d.tx,t=d.ty,u=this.colors,v=this.positions;this.renderSession.roundPixels?(v[m]=o*g+q*i+s|0,v[m+1]=r*i+p*g+t|0,v[m+5]=o*f+q*i+s|0,v[m+6]=r*i+p*f+t|0,v[m+10]=o*f+q*h+s|0,v[m+11]=r*h+p*f+t|0,v[m+15]=o*g+q*h+s|0,v[m+16]=r*h+p*g+t|0):(v[m]=o*g+q*i+s,v[m+1]=r*i+p*g+t,v[m+5]=o*f+q*i+s,v[m+6]=r*i+p*f+t,v[m+10]=o*f+q*h+s,v[m+11]=r*h+p*f+t,v[m+15]=o*g+q*h+s,v[m+16]=r*h+p*g+t),v[m+2]=e.x0,v[m+3]=e.y0,v[m+7]=e.x1,v[m+8]=e.y1,v[m+12]=e.x2,v[m+13]=e.y2,v[m+17]=e.x3,v[m+18]=e.y3;var w=a.tint;u[m+4]=u[m+9]=u[m+14]=u[m+19]=(w>>16)+(65280&w)+((255&w)<<16)+(255*a.worldAlpha<<24),this.sprites[this.currentBatchSize++]=a}},b.WebGLSpriteBatch.prototype.renderTilingSprite=function(a){var c=a.tilingTexture;this.currentBatchSize>=this.size&&(this.flush(),this.currentBaseTexture=c.baseTexture),a._uvs||(a._uvs=new b.TextureUvs);var d=a._uvs,e=c.baseTexture.width,f=c.baseTexture.height;a.tilePosition.x%=e*a.tileScaleOffset.x,a.tilePosition.y%=f*a.tileScaleOffset.y;var g=a.tilePosition.x/(e*a.tileScaleOffset.x),h=a.tilePosition.y/(f*a.tileScaleOffset.y),i=a.width/e/(a.tileScale.x*a.tileScaleOffset.x),j=a.height/f/(a.tileScale.y*a.tileScaleOffset.y);d.x0=0-g,d.y0=0-h,d.x1=1*i-g,d.y1=0-h,d.x2=1*i-g,d.y2=1*j-h,d.x3=0-g,d.y3=1*j-h;var k=a.tint,l=(k>>16)+(65280&k)+((255&k)<<16)+(255*a.worldAlpha<<24),m=this.positions,n=this.colors,o=a.width,p=a.height,q=a.anchor.x,r=a.anchor.y,s=o*(1-q),t=o*-q,u=p*(1-r),v=p*-r,w=4*this.currentBatchSize*this.vertSize,x=c.baseTexture.resolution,y=a.worldTransform,z=y.a/x,A=y.b/x,B=y.c/x,C=y.d/x,D=y.tx,E=y.ty;m[w++]=z*t+B*v+D,m[w++]=C*v+A*t+E,m[w++]=d.x0,m[w++]=d.y0,n[w++]=l,m[w++]=z*s+B*v+D,m[w++]=C*v+A*s+E,m[w++]=d.x1,m[w++]=d.y1,n[w++]=l,m[w++]=z*s+B*u+D,m[w++]=C*u+A*s+E,m[w++]=d.x2,m[w++]=d.y2,n[w++]=l,m[w++]=z*t+B*u+D,m[w++]=C*u+A*t+E,m[w++]=d.x3,m[w++]=d.y3,n[w++]=l,this.sprites[this.currentBatchSize++]=a},b.WebGLSpriteBatch.prototype.flush=function(){if(0!==this.currentBatchSize){var a,c=this.gl;if(this.dirty){this.dirty=!1,c.activeTexture(c.TEXTURE0),c.bindBuffer(c.ARRAY_BUFFER,this.vertexBuffer),c.bindBuffer(c.ELEMENT_ARRAY_BUFFER,this.indexBuffer),a=this.defaultShader.shaders[c.id];var d=4*this.vertSize;c.vertexAttribPointer(a.aVertexPosition,2,c.FLOAT,!1,d,0),c.vertexAttribPointer(a.aTextureCoord,2,c.FLOAT,!1,d,8),c.vertexAttribPointer(a.colorAttribute,4,c.UNSIGNED_BYTE,!0,d,16)}if(this.currentBatchSize>.5*this.size)c.bufferSubData(c.ARRAY_BUFFER,0,this.vertices);else{var e=this.positions.subarray(0,4*this.currentBatchSize*this.vertSize);c.bufferSubData(c.ARRAY_BUFFER,0,e)}for(var f,g,h,i,j=0,k=0,l=null,m=this.renderSession.blendModeManager.currentBlendMode,n=null,o=!1,p=!1,q=0,r=this.currentBatchSize;r>q;q++){i=this.sprites[q],f=i.tilingTexture?i.tilingTexture.baseTexture:i.texture.baseTexture,g=i.blendMode,h=i.shader||this.defaultShader,o=m!==g,p=n!==h;var s=f.skipRender;if(s&&i.children.length>0&&(s=!1),(l!==f&&!s||o||p)&&(this.renderBatch(l,j,k),k=q,j=0,l=f,o&&(m=g,this.renderSession.blendModeManager.setBlendMode(m)),p)){n=h,a=n.shaders[c.id],a||(a=new b.PixiShader(c),a.fragmentSrc=n.fragmentSrc,a.uniforms=n.uniforms,a.init(),n.shaders[c.id]=a),this.renderSession.shaderManager.setShader(a),a.dirty&&a.syncUniforms();var t=this.renderSession.projection;c.uniform2f(a.projectionVector,t.x,t.y);var u=this.renderSession.offset;c.uniform2f(a.offsetVector,u.x,u.y)}j++}this.renderBatch(l,j,k),this.currentBatchSize=0}},b.WebGLSpriteBatch.prototype.renderBatch=function(a,b,c){if(0!==b){var d=this.gl;if(a._dirty[d.id]){if(!this.renderSession.renderer.updateTexture(a))return}else d.bindTexture(d.TEXTURE_2D,a._glTextures[d.id]);d.drawElements(d.TRIANGLES,6*b,d.UNSIGNED_SHORT,6*c*2),this.renderSession.drawCount++}},b.WebGLSpriteBatch.prototype.stop=function(){this.flush(),this.dirty=!0},b.WebGLSpriteBatch.prototype.start=function(){this.dirty=!0},b.WebGLSpriteBatch.prototype.destroy=function(){this.vertices=null,this.indices=null,this.gl.deleteBuffer(this.vertexBuffer),this.gl.deleteBuffer(this.indexBuffer),this.currentBaseTexture=null,this.gl=null},b.WebGLFastSpriteBatch=function(a){this.vertSize=10,this.maxSize=6e3,this.size=this.maxSize;var c=4*this.size*this.vertSize,d=6*this.maxSize;this.vertices=new b.Float32Array(c),this.indices=new b.Uint16Array(d),this.vertexBuffer=null,this.indexBuffer=null,this.lastIndexCount=0;for(var e=0,f=0;d>e;e+=6,f+=4)this.indices[e+0]=f+0,this.indices[e+1]=f+1,this.indices[e+2]=f+2,this.indices[e+3]=f+0,this.indices[e+4]=f+2,this.indices[e+5]=f+3;this.drawing=!1,this.currentBatchSize=0,this.currentBaseTexture=null,this.currentBlendMode=0,this.renderSession=null,this.shader=null,this.matrix=null,this.setContext(a)},b.WebGLFastSpriteBatch.prototype.constructor=b.WebGLFastSpriteBatch,b.WebGLFastSpriteBatch.prototype.setContext=function(a){this.gl=a,this.vertexBuffer=a.createBuffer(),this.indexBuffer=a.createBuffer(),a.bindBuffer(a.ELEMENT_ARRAY_BUFFER,this.indexBuffer),a.bufferData(a.ELEMENT_ARRAY_BUFFER,this.indices,a.STATIC_DRAW),a.bindBuffer(a.ARRAY_BUFFER,this.vertexBuffer),a.bufferData(a.ARRAY_BUFFER,this.vertices,a.DYNAMIC_DRAW)},b.WebGLFastSpriteBatch.prototype.begin=function(a,b){this.renderSession=b,this.shader=this.renderSession.shaderManager.fastShader,this.matrix=a.worldTransform.toArray(!0),this.start()},b.WebGLFastSpriteBatch.prototype.end=function(){this.flush()},b.WebGLFastSpriteBatch.prototype.render=function(a){var b=a.children,c=b[0];if(c.texture._uvs){this.currentBaseTexture=c.texture.baseTexture,c.blendMode!==this.renderSession.blendModeManager.currentBlendMode&&(this.flush(),this.renderSession.blendModeManager.setBlendMode(c.blendMode));for(var d=0,e=b.length;e>d;d++)this.renderSprite(b[d]);this.flush()}},b.WebGLFastSpriteBatch.prototype.renderSprite=function(a){if(a.visible&&(a.texture.baseTexture===this.currentBaseTexture||a.texture.baseTexture.skipRender||(this.flush(),this.currentBaseTexture=a.texture.baseTexture,a.texture._uvs))){var b,c,d,e,f,g,h,i,j=this.vertices;if(b=a.texture._uvs,c=a.texture.frame.width,d=a.texture.frame.height,a.texture.trim){var k=a.texture.trim;f=k.x-a.anchor.x*k.width,e=f+a.texture.crop.width,h=k.y-a.anchor.y*k.height,g=h+a.texture.crop.height}else e=a.texture.frame.width*(1-a.anchor.x),f=a.texture.frame.width*-a.anchor.x,g=a.texture.frame.height*(1-a.anchor.y),h=a.texture.frame.height*-a.anchor.y;i=4*this.currentBatchSize*this.vertSize,j[i++]=f,j[i++]=h,j[i++]=a.position.x,j[i++]=a.position.y,j[i++]=a.scale.x,j[i++]=a.scale.y,j[i++]=a.rotation,j[i++]=b.x0,j[i++]=b.y1,j[i++]=a.alpha,j[i++]=e,j[i++]=h,j[i++]=a.position.x,j[i++]=a.position.y,j[i++]=a.scale.x,j[i++]=a.scale.y,j[i++]=a.rotation,j[i++]=b.x1,j[i++]=b.y1,j[i++]=a.alpha,j[i++]=e,j[i++]=g,j[i++]=a.position.x,j[i++]=a.position.y,j[i++]=a.scale.x,j[i++]=a.scale.y,j[i++]=a.rotation,j[i++]=b.x2,j[i++]=b.y2,j[i++]=a.alpha,j[i++]=f,j[i++]=g,j[i++]=a.position.x,j[i++]=a.position.y,j[i++]=a.scale.x,j[i++]=a.scale.y,j[i++]=a.rotation,j[i++]=b.x3,j[i++]=b.y3,j[i++]=a.alpha,this.currentBatchSize++,this.currentBatchSize>=this.size&&this.flush()}},b.WebGLFastSpriteBatch.prototype.flush=function(){if(0!==this.currentBatchSize){var a=this.gl;if(this.currentBaseTexture._glTextures[a.id]||this.renderSession.renderer.updateTexture(this.currentBaseTexture,a),a.bindTexture(a.TEXTURE_2D,this.currentBaseTexture._glTextures[a.id]),this.currentBatchSize>.5*this.size)a.bufferSubData(a.ARRAY_BUFFER,0,this.vertices);else{var b=this.vertices.subarray(0,4*this.currentBatchSize*this.vertSize);a.bufferSubData(a.ARRAY_BUFFER,0,b)}a.drawElements(a.TRIANGLES,6*this.currentBatchSize,a.UNSIGNED_SHORT,0),this.currentBatchSize=0,this.renderSession.drawCount++}},b.WebGLFastSpriteBatch.prototype.stop=function(){this.flush()},b.WebGLFastSpriteBatch.prototype.start=function(){var a=this.gl;a.activeTexture(a.TEXTURE0),a.bindBuffer(a.ARRAY_BUFFER,this.vertexBuffer),a.bindBuffer(a.ELEMENT_ARRAY_BUFFER,this.indexBuffer);var b=this.renderSession.projection;a.uniform2f(this.shader.projectionVector,b.x,b.y),a.uniformMatrix3fv(this.shader.uMatrix,!1,this.matrix);var c=4*this.vertSize;a.vertexAttribPointer(this.shader.aVertexPosition,2,a.FLOAT,!1,c,0),a.vertexAttribPointer(this.shader.aPositionCoord,2,a.FLOAT,!1,c,8),a.vertexAttribPointer(this.shader.aScale,2,a.FLOAT,!1,c,16),a.vertexAttribPointer(this.shader.aRotation,1,a.FLOAT,!1,c,24),a.vertexAttribPointer(this.shader.aTextureCoord,2,a.FLOAT,!1,c,28),a.vertexAttribPointer(this.shader.colorAttribute,1,a.FLOAT,!1,c,36)},b.WebGLFilterManager=function(){this.filterStack=[],this.offsetX=0,this.offsetY=0},b.WebGLFilterManager.prototype.constructor=b.WebGLFilterManager,b.WebGLFilterManager.prototype.setContext=function(a){this.gl=a,this.texturePool=[],this.initShaderBuffers()},b.WebGLFilterManager.prototype.begin=function(a,b){this.renderSession=a,this.defaultShader=a.shaderManager.defaultShader;var c=this.renderSession.projection;this.width=2*c.x,this.height=2*-c.y,this.buffer=b},b.WebGLFilterManager.prototype.pushFilter=function(a){var c=this.gl,d=this.renderSession.projection,e=this.renderSession.offset;a._filterArea=a.target.filterArea||a.target.getBounds(),a._previous_stencil_mgr=this.renderSession.stencilManager,this.renderSession.stencilManager=new b.WebGLStencilManager,this.renderSession.stencilManager.setContext(c),c.disable(c.STENCIL_TEST),this.filterStack.push(a);var f=a.filterPasses[0];this.offsetX+=a._filterArea.x,this.offsetY+=a._filterArea.y;var g=this.texturePool.pop();g?g.resize(this.width*this.renderSession.resolution,this.height*this.renderSession.resolution):g=new b.FilterTexture(this.gl,this.width*this.renderSession.resolution,this.height*this.renderSession.resolution),c.bindTexture(c.TEXTURE_2D,g.texture);var h=a._filterArea,i=f.padding;h.x-=i,h.y-=i,h.width+=2*i,h.height+=2*i,h.x<0&&(h.x=0),h.width>this.width&&(h.width=this.width),h.y<0&&(h.y=0),h.height>this.height&&(h.height=this.height),c.bindFramebuffer(c.FRAMEBUFFER,g.frameBuffer),c.viewport(0,0,h.width*this.renderSession.resolution,h.height*this.renderSession.resolution),d.x=h.width/2,d.y=-h.height/2,e.x=-h.x,e.y=-h.y,c.colorMask(!0,!0,!0,!0),c.clearColor(0,0,0,0),c.clear(c.COLOR_BUFFER_BIT),a._glFilterTexture=g},b.WebGLFilterManager.prototype.popFilter=function(){var a=this.gl,c=this.filterStack.pop(),d=c._filterArea,e=c._glFilterTexture,f=this.renderSession.projection,g=this.renderSession.offset;if(c.filterPasses.length>1){a.viewport(0,0,d.width*this.renderSession.resolution,d.height*this.renderSession.resolution),a.bindBuffer(a.ARRAY_BUFFER,this.vertexBuffer),this.vertexArray[0]=0,this.vertexArray[1]=d.height,this.vertexArray[2]=d.width,this.vertexArray[3]=d.height,this.vertexArray[4]=0,this.vertexArray[5]=0,this.vertexArray[6]=d.width,this.vertexArray[7]=0,a.bufferSubData(a.ARRAY_BUFFER,0,this.vertexArray),a.bindBuffer(a.ARRAY_BUFFER,this.uvBuffer),this.uvArray[2]=d.width/this.width,this.uvArray[5]=d.height/this.height,this.uvArray[6]=d.width/this.width,this.uvArray[7]=d.height/this.height,a.bufferSubData(a.ARRAY_BUFFER,0,this.uvArray);var h=e,i=this.texturePool.pop();i||(i=new b.FilterTexture(this.gl,this.width*this.renderSession.resolution,this.height*this.renderSession.resolution)),i.resize(this.width*this.renderSession.resolution,this.height*this.renderSession.resolution),a.bindFramebuffer(a.FRAMEBUFFER,i.frameBuffer),a.clear(a.COLOR_BUFFER_BIT),a.disable(a.BLEND);for(var j=0;j0?a.enable(a.STENCIL_TEST):a.disable(a.STENCIL_TEST),this.applyFilterPass(m,d,n,o),this.texturePool.push(e),c._glFilterTexture=null},b.WebGLFilterManager.prototype.applyFilterPass=function(a,c,d,e){var f=this.gl,g=a.shaders[f.id];g||(g=new b.PixiShader(f),g.fragmentSrc=a.fragmentSrc,g.uniforms=a.uniforms,g.init(),a.shaders[f.id]=g),this.renderSession.shaderManager.setShader(g),f.uniform2f(g.projectionVector,d/2,-e/2),f.uniform2f(g.offsetVector,0,0),a.uniforms.dimensions&&(a.uniforms.dimensions.value[0]=this.width,a.uniforms.dimensions.value[1]=this.height,a.uniforms.dimensions.value[2]=this.vertexArray[0],a.uniforms.dimensions.value[3]=this.vertexArray[5]),g.syncUniforms(),f.bindBuffer(f.ARRAY_BUFFER,this.vertexBuffer),f.vertexAttribPointer(g.aVertexPosition,2,f.FLOAT,!1,0,0),f.bindBuffer(f.ARRAY_BUFFER,this.uvBuffer),f.vertexAttribPointer(g.aTextureCoord,2,f.FLOAT,!1,0,0),f.bindBuffer(f.ARRAY_BUFFER,this.colorBuffer),f.vertexAttribPointer(g.colorAttribute,2,f.FLOAT,!1,0,0),f.bindBuffer(f.ELEMENT_ARRAY_BUFFER,this.indexBuffer),f.drawElements(f.TRIANGLES,6,f.UNSIGNED_SHORT,0),this.renderSession.drawCount++},b.WebGLFilterManager.prototype.initShaderBuffers=function(){var a=this.gl;this.vertexBuffer=a.createBuffer(),this.uvBuffer=a.createBuffer(),this.colorBuffer=a.createBuffer(),this.indexBuffer=a.createBuffer(),this.vertexArray=new b.Float32Array([0,0,1,0,0,1,1,1]),a.bindBuffer(a.ARRAY_BUFFER,this.vertexBuffer),a.bufferData(a.ARRAY_BUFFER,this.vertexArray,a.STATIC_DRAW),this.uvArray=new b.Float32Array([0,0,1,0,0,1,1,1]),a.bindBuffer(a.ARRAY_BUFFER,this.uvBuffer),a.bufferData(a.ARRAY_BUFFER,this.uvArray,a.STATIC_DRAW),this.colorArray=new b.Float32Array([1,16777215,1,16777215,1,16777215,1,16777215]),a.bindBuffer(a.ARRAY_BUFFER,this.colorBuffer),a.bufferData(a.ARRAY_BUFFER,this.colorArray,a.STATIC_DRAW),a.bindBuffer(a.ELEMENT_ARRAY_BUFFER,this.indexBuffer),a.bufferData(a.ELEMENT_ARRAY_BUFFER,new Uint16Array([0,1,2,1,3,2]),a.STATIC_DRAW)},b.WebGLFilterManager.prototype.destroy=function(){var a=this.gl;this.filterStack=null,this.offsetX=0,this.offsetY=0;for(var b=0;b=0;a--){var c=this._glTextures[a],d=b.glContexts[a];d&&c&&d.deleteTexture(c)}this._glTextures.length=0,this.dirty()},b.BaseTexture.fromCanvas=function(a,c){return 0===a.width&&(a.width=1),0===a.height&&(a.height=1),new b.BaseTexture(a,c)},b.TextureSilentFail=!1,b.Texture=function(a,c,d,e){this.noFrame=!1,c||(this.noFrame=!0,c=new b.Rectangle(0,0,1,1)),a instanceof b.Texture&&(a=a.baseTexture),this.baseTexture=a,this.frame=c,this.trim=e,this.valid=!1,this.isTiling=!1,this.requiresUpdate=!1,this.requiresReTint=!1,this._uvs=null,this.width=0,this.height=0,this.crop=d||new b.Rectangle(0,0,1,1),a.hasLoaded&&(this.noFrame&&(c=new b.Rectangle(0,0,a.width,a.height)),this.setFrame(c))},b.Texture.prototype.constructor=b.Texture,b.Texture.prototype.onBaseTextureLoaded=function(){var a=this.baseTexture;this.noFrame&&(this.frame=new b.Rectangle(0,0,a.width,a.height)),this.setFrame(this.frame)},b.Texture.prototype.destroy=function(a){a&&this.baseTexture.destroy(),this.valid=!1},b.Texture.prototype.setFrame=function(a){if(this.noFrame=!1,this.frame=a,this.width=a.width,this.height=a.height,this.crop.x=a.x,this.crop.y=a.y,this.crop.width=a.width,this.crop.height=a.height,!this.trim&&(a.x+a.width>this.baseTexture.width||a.y+a.height>this.baseTexture.height)){if(!b.TextureSilentFail)throw new Error("Texture Error: frame does not fit inside the base Texture dimensions "+this);return void(this.valid=!1)}this.valid=a&&a.width&&a.height&&this.baseTexture.source&&this.baseTexture.hasLoaded,this.trim&&(this.width=this.trim.width,this.height=this.trim.height,this.frame.width=this.trim.width,this.frame.height=this.trim.height),this.valid&&this._updateUvs()},b.Texture.prototype._updateUvs=function(){this._uvs||(this._uvs=new b.TextureUvs);var a=this.crop,c=this.baseTexture.width,d=this.baseTexture.height;this._uvs.x0=a.x/c,this._uvs.y0=a.y/d,this._uvs.x1=(a.x+a.width)/c,this._uvs.y1=a.y/d,this._uvs.x2=(a.x+a.width)/c,this._uvs.y2=(a.y+a.height)/d,this._uvs.x3=a.x/c,this._uvs.y3=(a.y+a.height)/d},b.Texture.fromCanvas=function(a,c){var d=b.BaseTexture.fromCanvas(a,c);return new b.Texture(d)},b.TextureUvs=function(){this.x0=0,this.y0=0,this.x1=0,this.y1=0,this.x2=0,this.y2=0,this.x3=0,this.y3=0},b.RenderTexture=function(a,c,d,e,f){if(this.width=a||100,this.height=c||100,this.resolution=f||1,this.frame=new b.Rectangle(0,0,this.width*this.resolution,this.height*this.resolution),this.crop=new b.Rectangle(0,0,this.width*this.resolution,this.height*this.resolution),this.baseTexture=new b.BaseTexture,this.baseTexture.width=this.width*this.resolution,this.baseTexture.height=this.height*this.resolution,this.baseTexture._glTextures=[],this.baseTexture.resolution=this.resolution,this.baseTexture.scaleMode=e||b.scaleModes.DEFAULT,this.baseTexture.hasLoaded=!0,b.Texture.call(this,this.baseTexture,new b.Rectangle(0,0,this.width*this.resolution,this.height*this.resolution)),this.renderer=d||b.defaultRenderer,this.renderer.type===b.WEBGL_RENDERER){var g=this.renderer.gl;this.baseTexture._dirty[g.id]=!1,this.textureBuffer=new b.FilterTexture(g,this.width,this.height,this.baseTexture.scaleMode),this.baseTexture._glTextures[g.id]=this.textureBuffer.texture,this.render=this.renderWebGL,this.projection=new b.Point(.5*this.width,.5*-this.height)}else this.render=this.renderCanvas,this.textureBuffer=new b.CanvasBuffer(this.width*this.resolution,this.height*this.resolution),this.baseTexture.source=this.textureBuffer.canvas;this.valid=!0,this.tempMatrix=new Phaser.Matrix,this._updateUvs()},b.RenderTexture.prototype=Object.create(b.Texture.prototype),b.RenderTexture.prototype.constructor=b.RenderTexture,b.RenderTexture.prototype.resize=function(a,c,d){a===this.width&&c===this.height||(this.valid=a>0&&c>0,this.width=a,this.height=c,this.frame.width=this.crop.width=a*this.resolution,this.frame.height=this.crop.height=c*this.resolution,d&&(this.baseTexture.width=this.width*this.resolution,this.baseTexture.height=this.height*this.resolution),this.renderer.type===b.WEBGL_RENDERER&&(this.projection.x=this.width/2,this.projection.y=-this.height/2),this.valid&&this.textureBuffer.resize(this.width,this.height))},b.RenderTexture.prototype.clear=function(){this.valid&&(this.renderer.type===b.WEBGL_RENDERER&&this.renderer.gl.bindFramebuffer(this.renderer.gl.FRAMEBUFFER,this.textureBuffer.frameBuffer),this.textureBuffer.clear())},b.RenderTexture.prototype.renderWebGL=function(a,b,c){if(this.valid&&0!==a.alpha){var d=a.worldTransform;d.identity(),d.translate(0,2*this.projection.y),b&&d.append(b),d.scale(1,-1);for(var e=0;ea;a++)this.shaders[a].dirty=!0},"undefined"!=typeof exports?("undefined"!=typeof module&&module.exports&&(exports=module.exports=b),exports.PIXI=b):"undefined"!=typeof define&&define.amd?define("PIXI",function(){return a.PIXI=b}()):a.PIXI=b,b}).call(this),function(){function a(a,b){this._scaleFactor=a,this._deltaMode=b,this.originalEvent=null}var b=this,c=c||{VERSION:"2.6.0",GAMES:[],AUTO:0,CANVAS:1,WEBGL:2,HEADLESS:3,NONE:0,LEFT:1,RIGHT:2,UP:3,DOWN:4,SPRITE:0,BUTTON:1,IMAGE:2,GRAPHICS:3,TEXT:4,TILESPRITE:5,BITMAPTEXT:6,GROUP:7,RENDERTEXTURE:8,TILEMAP:9,TILEMAPLAYER:10,EMITTER:11,POLYGON:12,BITMAPDATA:13,CANVAS_FILTER:14,WEBGL_FILTER:15,ELLIPSE:16,SPRITEBATCH:17,RETROFONT:18,POINTER:19,ROPE:20,CIRCLE:21,RECTANGLE:22,LINE:23,MATRIX:24,POINT:25,ROUNDEDRECTANGLE:26,CREATURE:27,VIDEO:28,PENDING_ATLAS:-1,HORIZONTAL:0,VERTICAL:1,LANDSCAPE:0,PORTRAIT:1,ANGLE_UP:270,ANGLE_DOWN:90,ANGLE_LEFT:180,ANGLE_RIGHT:0,ANGLE_NORTH_EAST:315,ANGLE_NORTH_WEST:225,ANGLE_SOUTH_EAST:45,ANGLE_SOUTH_WEST:135,TOP_LEFT:0,TOP_CENTER:1,TOP_RIGHT:2,LEFT_TOP:3,LEFT_CENTER:4,LEFT_BOTTOM:5,CENTER:6,RIGHT_TOP:7,RIGHT_CENTER:8,RIGHT_BOTTOM:9,BOTTOM_LEFT:10,BOTTOM_CENTER:11,BOTTOM_RIGHT:12,blendModes:{NORMAL:0,ADD:1,MULTIPLY:2,SCREEN:3,OVERLAY:4,DARKEN:5,LIGHTEN:6,COLOR_DODGE:7,COLOR_BURN:8,HARD_LIGHT:9,SOFT_LIGHT:10,DIFFERENCE:11,EXCLUSION:12,HUE:13,SATURATION:14,COLOR:15,LUMINOSITY:16},scaleModes:{DEFAULT:0,LINEAR:0,NEAREST:1},PIXI:PIXI||{}};if(Math.trunc||(Math.trunc=function(a){return 0>a?Math.ceil(a):Math.floor(a)}),Function.prototype.bind||(Function.prototype.bind=function(){var a=Array.prototype.slice;return function(b){function c(){var f=e.concat(a.call(arguments));d.apply(this instanceof c?this:b,f)}var d=this,e=a.call(arguments,1);if("function"!=typeof d)throw new TypeError;return c.prototype=function f(a){return a&&(f.prototype=a),this instanceof f?void 0:new f}(d.prototype),c}}()),Array.isArray||(Array.isArray=function(a){return"[object Array]"==Object.prototype.toString.call(a)}),Array.prototype.forEach||(Array.prototype.forEach=function(a){"use strict";if(void 0===this||null===this)throw new TypeError;var b=Object(this),c=b.length>>>0;if("function"!=typeof a)throw new TypeError;for(var d=arguments.length>=2?arguments[1]:void 0,e=0;c>e;e++)e in b&&a.call(d,b[e],e,b)}),"function"!=typeof window.Uint32Array&&"object"!=typeof window.Uint32Array){var d=function(a){var b=new Array;window[a]=function(a){if("number"==typeof a){Array.call(this,a),this.length=a;for(var b=0;bf&&(a=a[g]);)g=c[f],f++;return a?a[d]:null},setProperty:function(a,b,c){for(var d=b.split("."),e=d.pop(),f=d.length,g=1,h=d[0];f>g&&(a=a[h]);)h=d[g],g++;return a&&(a[e]=c),a},chanceRoll:function(a){return void 0===a&&(a=50),a>0&&100*Math.random()<=a},randomChoice:function(a,b){return Math.random()<.5?a:b},parseDimension:function(a,b){var c=0,d=0;return"string"==typeof a?"%"===a.substr(-1)?(c=parseInt(a,10)/100,d=0===b?window.innerWidth*c:window.innerHeight*c):d=parseInt(a,10):d=a,d},pad:function(a,b,c,d){if(void 0===b)var b=0;if(void 0===c)var c=" ";if(void 0===d)var d=3;a=a.toString();var e=0;if(b+1>=a.length)switch(d){case 1:a=new Array(b+1-a.length).join(c)+a;break;case 3:var f=Math.ceil((e=b-a.length)/2),g=e-f;a=new Array(g+1).join(c)+a+new Array(f+1).join(c);break;default:a+=new Array(b+1-a.length).join(c)}return a},isPlainObject:function(a){if("object"!=typeof a||a.nodeType||a===a.window)return!1;try{if(a.constructor&&!{}.hasOwnProperty.call(a.constructor.prototype,"isPrototypeOf"))return!1}catch(b){return!1}return!0},extend:function(){var a,b,d,e,f,g,h=arguments[0]||{},i=1,j=arguments.length,k=!1;for("boolean"==typeof h&&(k=h,h=arguments[1]||{},i=2),j===i&&(h=this,--i);j>i;i++)if(null!=(a=arguments[i]))for(b in a)d=h[b],e=a[b],h!==e&&(k&&e&&(c.Utils.isPlainObject(e)||(f=Array.isArray(e)))?(f?(f=!1,g=d&&Array.isArray(d)?d:[]):g=d&&c.Utils.isPlainObject(d)?d:{},h[b]=c.Utils.extend(k,g,e)):void 0!==e&&(h[b]=e));return h},mixinPrototype:function(a,b,c){void 0===c&&(c=!1);for(var d=Object.keys(b),e=0;e0&&(this._radius=.5*d),this.type=c.CIRCLE},c.Circle.prototype={circumference:function(){return 2*(Math.PI*this._radius)},random:function(a){void 0===a&&(a=new c.Point);var b=2*Math.PI*Math.random(),d=Math.random()+Math.random(),e=d>1?2-d:d,f=e*Math.cos(b),g=e*Math.sin(b);return a.x=this.x+f*this.radius,a.y=this.y+g*this.radius,a},getBounds:function(){return new c.Rectangle(this.x-this.radius,this.y-this.radius,this.diameter,this.diameter)},setTo:function(a,b,c){return this.x=a,this.y=b,this._diameter=c,this._radius=.5*c,this},copyFrom:function(a){return this.setTo(a.x,a.y,a.diameter)},copyTo:function(a){return a.x=this.x,a.y=this.y,a.diameter=this._diameter,a},distance:function(a,b){var d=c.Math.distance(this.x,this.y,a.x,a.y);return b?Math.round(d):d},clone:function(a){return void 0===a||null===a?a=new c.Circle(this.x,this.y,this.diameter):a.setTo(this.x,this.y,this.diameter),a},contains:function(a,b){return c.Circle.contains(this,a,b)},circumferencePoint:function(a,b,d){return c.Circle.circumferencePoint(this,a,b,d)},offset:function(a,b){return this.x+=a,this.y+=b,this},offsetPoint:function(a){return this.offset(a.x,a.y)},toString:function(){return"[{Phaser.Circle (x="+this.x+" y="+this.y+" diameter="+this.diameter+" radius="+this.radius+")}]"}},c.Circle.prototype.constructor=c.Circle,Object.defineProperty(c.Circle.prototype,"diameter",{get:function(){return this._diameter},set:function(a){a>0&&(this._diameter=a,this._radius=.5*a)}}),Object.defineProperty(c.Circle.prototype,"radius",{get:function(){return this._radius},set:function(a){a>0&&(this._radius=a,this._diameter=2*a)}}),Object.defineProperty(c.Circle.prototype,"left",{get:function(){return this.x-this._radius},set:function(a){a>this.x?(this._radius=0,this._diameter=0):this.radius=this.x-a}}),Object.defineProperty(c.Circle.prototype,"right",{get:function(){return this.x+this._radius},set:function(a){athis.y?(this._radius=0,this._diameter=0):this.radius=this.y-a}}),Object.defineProperty(c.Circle.prototype,"bottom",{get:function(){return this.y+this._radius},set:function(a){a0?Math.PI*this._radius*this._radius:0}}),Object.defineProperty(c.Circle.prototype,"empty",{get:function(){return 0===this._diameter},set:function(a){a===!0&&this.setTo(0,0,0)}}),c.Circle.contains=function(a,b,c){if(a.radius>0&&b>=a.left&&b<=a.right&&c>=a.top&&c<=a.bottom){var d=(a.x-b)*(a.x-b),e=(a.y-c)*(a.y-c);return d+e<=a.radius*a.radius}return!1},c.Circle.equals=function(a,b){return a.x==b.x&&a.y==b.y&&a.diameter==b.diameter},c.Circle.intersects=function(a,b){return c.Math.distance(a.x,a.y,b.x,b.y)<=a.radius+b.radius},c.Circle.circumferencePoint=function(a,b,d,e){return void 0===d&&(d=!1),void 0===e&&(e=new c.Point),d===!0&&(b=c.Math.degToRad(b)),e.x=a.x+a.radius*Math.cos(b),e.y=a.y+a.radius*Math.sin(b),e},c.Circle.intersectsRectangle=function(a,b){var c=Math.abs(a.x-b.x-b.halfWidth),d=b.halfWidth+a.radius;if(c>d)return!1;var e=Math.abs(a.y-b.y-b.halfHeight),f=b.halfHeight+a.radius;if(e>f)return!1;if(c<=b.halfWidth||e<=b.halfHeight)return!0;var g=c-b.halfWidth,h=e-b.halfHeight,i=g*g,j=h*h,k=a.radius*a.radius;return k>=i+j},PIXI.Circle=c.Circle,c.Ellipse=function(a,b,d,e){a=a||0,b=b||0,d=d||0,e=e||0,this.x=a,this.y=b,this.width=d,this.height=e,this.type=c.ELLIPSE},c.Ellipse.prototype={setTo:function(a,b,c,d){return this.x=a,this.y=b,this.width=c,this.height=d,this},getBounds:function(){return new c.Rectangle(this.x-this.width,this.y-this.height,this.width,this.height)},copyFrom:function(a){return this.setTo(a.x,a.y,a.width,a.height)},copyTo:function(a){return a.x=this.x,a.y=this.y,a.width=this.width,a.height=this.height,a},clone:function(a){return void 0===a||null===a?a=new c.Ellipse(this.x,this.y,this.width,this.height):a.setTo(this.x,this.y,this.width,this.height),a},contains:function(a,b){return c.Ellipse.contains(this,a,b)},random:function(a){void 0===a&&(a=new c.Point);var b=Math.random()*Math.PI*2,d=Math.random();return a.x=Math.sqrt(d)*Math.cos(b),a.y=Math.sqrt(d)*Math.sin(b),a.x=this.x+a.x*this.width/2,a.y=this.y+a.y*this.height/2,a},toString:function(){return"[{Phaser.Ellipse (x="+this.x+" y="+this.y+" width="+this.width+" height="+this.height+")}]"}},c.Ellipse.prototype.constructor=c.Ellipse,Object.defineProperty(c.Ellipse.prototype,"left",{get:function(){return this.x},set:function(a){this.x=a}}),Object.defineProperty(c.Ellipse.prototype,"right",{get:function(){return this.x+this.width},set:function(a){ad+e},PIXI.Ellipse=c.Ellipse,c.Line=function(a,b,d,e){a=a||0,b=b||0,d=d||0,e=e||0,this.start=new c.Point(a,b),this.end=new c.Point(d,e),this.type=c.LINE},c.Line.prototype={setTo:function(a,b,c,d){return this.start.setTo(a,b),this.end.setTo(c,d),this},fromSprite:function(a,b,c){return void 0===c&&(c=!1),c?this.setTo(a.center.x,a.center.y,b.center.x,b.center.y):this.setTo(a.x,a.y,b.x,b.y)},fromAngle:function(a,b,c,d){return this.start.setTo(a,b),this.end.setTo(a+Math.cos(c)*d,b+Math.sin(c)*d),this},rotate:function(a,b){var c=(this.start.x+this.end.x)/2,d=(this.start.y+this.end.y)/2;return this.start.rotate(c,d,a,b),this.end.rotate(c,d,a,b),this},rotateAround:function(a,b,c,d){return this.start.rotate(a,b,c,d),this.end.rotate(a,b,c,d),this},intersects:function(a,b,d){return c.Line.intersectsPoints(this.start,this.end,a.start,a.end,b,d)},reflect:function(a){return c.Line.reflect(this,a)},midPoint:function(a){return void 0===a&&(a=new c.Point),a.x=(this.start.x+this.end.x)/2,a.y=(this.start.y+this.end.y)/2,a},centerOn:function(a,b){var c=(this.start.x+this.end.x)/2,d=(this.start.y+this.end.y)/2,e=a-c,f=b-d;this.start.add(e,f),this.end.add(e,f)},pointOnLine:function(a,b){return(a-this.start.x)*(this.end.y-this.start.y)===(this.end.x-this.start.x)*(b-this.start.y)},pointOnSegment:function(a,b){var c=Math.min(this.start.x,this.end.x),d=Math.max(this.start.x,this.end.x),e=Math.min(this.start.y,this.end.y),f=Math.max(this.start.y,this.end.y);return this.pointOnLine(a,b)&&a>=c&&d>=a&&b>=e&&f>=b},random:function(a){void 0===a&&(a=new c.Point);var b=Math.random();return a.x=this.start.x+b*(this.end.x-this.start.x),a.y=this.start.y+b*(this.end.y-this.start.y),a},coordinatesOnLine:function(a,b){void 0===a&&(a=1),void 0===b&&(b=[]);var c=Math.round(this.start.x),d=Math.round(this.start.y),e=Math.round(this.end.x),f=Math.round(this.end.y),g=Math.abs(e-c),h=Math.abs(f-d),i=e>c?1:-1,j=f>d?1:-1,k=g-h;b.push([c,d]);for(var l=1;c!=e||d!=f;){var m=k<<1;m>-h&&(k-=h,c+=i),g>m&&(k+=g,d+=j),l%a===0&&b.push([c,d]),l++}return b},clone:function(a){return void 0===a||null===a?a=new c.Line(this.start.x,this.start.y,this.end.x,this.end.y):a.setTo(this.start.x,this.start.y,this.end.x,this.end.y),a}},Object.defineProperty(c.Line.prototype,"length",{get:function(){return Math.sqrt((this.end.x-this.start.x)*(this.end.x-this.start.x)+(this.end.y-this.start.y)*(this.end.y-this.start.y))}}),Object.defineProperty(c.Line.prototype,"angle",{get:function(){return Math.atan2(this.end.y-this.start.y,this.end.x-this.start.x)}}),Object.defineProperty(c.Line.prototype,"slope",{get:function(){return(this.end.y-this.start.y)/(this.end.x-this.start.x)}}),Object.defineProperty(c.Line.prototype,"perpSlope",{get:function(){return-((this.end.x-this.start.x)/(this.end.y-this.start.y))}}),Object.defineProperty(c.Line.prototype,"x",{get:function(){return Math.min(this.start.x,this.end.x)}}),Object.defineProperty(c.Line.prototype,"y",{get:function(){return Math.min(this.start.y,this.end.y)}}),Object.defineProperty(c.Line.prototype,"left",{get:function(){return Math.min(this.start.x,this.end.x)}}),Object.defineProperty(c.Line.prototype,"right",{get:function(){return Math.max(this.start.x,this.end.x)}}),Object.defineProperty(c.Line.prototype,"top",{get:function(){return Math.min(this.start.y,this.end.y)}}),Object.defineProperty(c.Line.prototype,"bottom",{get:function(){return Math.max(this.start.y,this.end.y)}}),Object.defineProperty(c.Line.prototype,"width",{get:function(){return Math.abs(this.start.x-this.end.x)}}),Object.defineProperty(c.Line.prototype,"height",{get:function(){return Math.abs(this.start.y-this.end.y)}}),Object.defineProperty(c.Line.prototype,"normalX",{get:function(){return Math.cos(this.angle-1.5707963267948966)}}),Object.defineProperty(c.Line.prototype,"normalY",{get:function(){return Math.sin(this.angle-1.5707963267948966)}}),Object.defineProperty(c.Line.prototype,"normalAngle",{get:function(){return c.Math.wrap(this.angle-1.5707963267948966,-Math.PI,Math.PI)}}),c.Line.intersectsPoints=function(a,b,d,e,f,g){void 0===f&&(f=!0),void 0===g&&(g=new c.Point);var h=b.y-a.y,i=e.y-d.y,j=a.x-b.x,k=d.x-e.x,l=b.x*a.y-a.x*b.y,m=e.x*d.y-d.x*e.y,n=h*k-i*j;if(0===n)return null;if(g.x=(j*m-k*l)/n,g.y=(i*l-h*m)/n,f){var o=(e.y-d.y)*(b.x-a.x)-(e.x-d.x)*(b.y-a.y),p=((e.x-d.x)*(a.y-d.y)-(e.y-d.y)*(a.x-d.x))/o,q=((b.x-a.x)*(a.y-d.y)-(b.y-a.y)*(a.x-d.x))/o;return p>=0&&1>=p&&q>=0&&1>=q?g:null}return g},c.Line.intersects=function(a,b,d,e){return c.Line.intersectsPoints(a.start,a.end,b.start,b.end,d,e)},c.Line.intersectsRectangle=function(a,b){if(!c.Rectangle.intersects(a,b))return!1;var d=a.start.x,e=a.start.y,f=a.end.x,g=a.end.y,h=b.x,i=b.y,j=b.right,k=b.bottom,l=0;if(d>=h&&j>=d&&e>=i&&k>=e||f>=h&&j>=f&&g>=i&&k>=g)return!0;if(h>d&&f>=h){if(l=e+(g-e)*(h-d)/(f-d),l>i&&k>=l)return!0}else if(d>j&&j>=f&&(l=e+(g-e)*(j-d)/(f-d),l>=i&&k>=l))return!0;if(i>e&&g>=i){if(l=d+(f-d)*(i-e)/(g-e),l>=h&&j>=l)return!0}else if(e>k&&k>=g&&(l=d+(f-d)*(k-e)/(g-e),l>=h&&j>=l))return!0;return!1},c.Line.reflect=function(a,b){return 2*b.normalAngle-3.141592653589793-a.angle},c.Matrix=function(a,b,d,e,f,g){void 0!==a&&null!==a||(a=1),void 0!==b&&null!==b||(b=0),void 0!==d&&null!==d||(d=0),void 0!==e&&null!==e||(e=1),void 0!==f&&null!==f||(f=0),void 0!==g&&null!==g||(g=0),this.a=a,this.b=b,this.c=d,this.d=e,this.tx=f,this.ty=g,this.type=c.MATRIX},c.Matrix.prototype={fromArray:function(a){return this.setTo(a[0],a[1],a[3],a[4],a[2],a[5])},setTo:function(a,b,c,d,e,f){return this.a=a,this.b=b,this.c=c,this.d=d,this.tx=e,this.ty=f,this},clone:function(a){return void 0===a||null===a?a=new c.Matrix(this.a,this.b,this.c,this.d,this.tx,this.ty):(a.a=this.a,a.b=this.b,a.c=this.c,a.d=this.d,a.tx=this.tx,a.ty=this.ty),a},copyTo:function(a){return a.copyFrom(this),a},copyFrom:function(a){return this.a=a.a,this.b=a.b,this.c=a.c,this.d=a.d,this.tx=a.tx,this.ty=a.ty,this},toArray:function(a,b){return void 0===b&&(b=new PIXI.Float32Array(9)),a?(b[0]=this.a,b[1]=this.b,b[2]=0,b[3]=this.c,b[4]=this.d,b[5]=0,b[6]=this.tx,b[7]=this.ty,b[8]=1):(b[0]=this.a,b[1]=this.c,b[2]=this.tx,b[3]=this.b,b[4]=this.d,b[5]=this.ty,b[6]=0,b[7]=0,b[8]=1),b},apply:function(a,b){return void 0===b&&(b=new c.Point),b.x=this.a*a.x+this.c*a.y+this.tx,b.y=this.b*a.x+this.d*a.y+this.ty,b},applyInverse:function(a,b){void 0===b&&(b=new c.Point);var d=1/(this.a*this.d+this.c*-this.b),e=a.x,f=a.y;return b.x=this.d*d*e+-this.c*d*f+(this.ty*this.c-this.tx*this.d)*d,b.y=this.a*d*f+-this.b*d*e+(-this.ty*this.a+this.tx*this.b)*d,b},translate:function(a,b){return this.tx+=a,this.ty+=b,this},scale:function(a,b){return this.a*=a,this.d*=b,this.c*=a,this.b*=b,this.tx*=a,this.ty*=b,this},rotate:function(a){var b=Math.cos(a),c=Math.sin(a),d=this.a,e=this.c,f=this.tx;return this.a=d*b-this.b*c,this.b=d*c+this.b*b,this.c=e*b-this.d*c,this.d=e*c+this.d*b,this.tx=f*b-this.ty*c,this.ty=f*c+this.ty*b,this},append:function(a){var b=this.a,c=this.b,d=this.c,e=this.d;return this.a=a.a*b+a.b*d,this.b=a.a*c+a.b*e,this.c=a.c*b+a.d*d,this.d=a.c*c+a.d*e,this.tx=a.tx*b+a.ty*d+this.tx,this.ty=a.tx*c+a.ty*e+this.ty,this},identity:function(){return this.setTo(1,0,0,1,0,0)}},c.identityMatrix=new c.Matrix,PIXI.Matrix=c.Matrix,PIXI.identityMatrix=c.identityMatrix,c.Point=function(a,b){a=a||0,b=b||0,this.x=a,this.y=b,this.type=c.POINT},c.Point.prototype={copyFrom:function(a){return this.setTo(a.x,a.y)},invert:function(){return this.setTo(this.y,this.x)},setTo:function(a,b){return this.x=a||0,this.y=b||(0!==b?this.x:0),this},set:function(a,b){return this.x=a||0,this.y=b||(0!==b?this.x:0),this},add:function(a,b){return this.x+=a,this.y+=b,this},subtract:function(a,b){return this.x-=a,this.y-=b,this},multiply:function(a,b){return this.x*=a,this.y*=b,this},divide:function(a,b){return this.x/=a,this.y/=b,this},clampX:function(a,b){return this.x=c.Math.clamp(this.x,a,b),this},clampY:function(a,b){return this.y=c.Math.clamp(this.y,a,b),this},clamp:function(a,b){return this.x=c.Math.clamp(this.x,a,b),this.y=c.Math.clamp(this.y,a,b),this},clone:function(a){return void 0===a||null===a?a=new c.Point(this.x,this.y):a.setTo(this.x,this.y),a},copyTo:function(a){return a.x=this.x,a.y=this.y,a},distance:function(a,b){return c.Point.distance(this,a,b)},equals:function(a){return a.x===this.x&&a.y===this.y},angle:function(a,b){return void 0===b&&(b=!1),b?c.Math.radToDeg(Math.atan2(a.y-this.y,a.x-this.x)):Math.atan2(a.y-this.y,a.x-this.x)},rotate:function(a,b,d,e,f){return c.Point.rotate(this,a,b,d,e,f)},getMagnitude:function(){return Math.sqrt(this.x*this.x+this.y*this.y)},getMagnitudeSq:function(){return this.x*this.x+this.y*this.y},setMagnitude:function(a){return this.normalize().multiply(a,a)},normalize:function(){if(!this.isZero()){var a=this.getMagnitude();this.x/=a,this.y/=a}return this},isZero:function(){return 0===this.x&&0===this.y},dot:function(a){return this.x*a.x+this.y*a.y},cross:function(a){return this.x*a.y-this.y*a.x},perp:function(){return this.setTo(-this.y,this.x)},rperp:function(){return this.setTo(this.y,-this.x)},normalRightHand:function(){return this.setTo(-1*this.y,this.x)},floor:function(){return this.setTo(Math.floor(this.x),Math.floor(this.y))},ceil:function(){return this.setTo(Math.ceil(this.x),Math.ceil(this.y))},toString:function(){return"[{Point (x="+this.x+" y="+this.y+")}]"}},c.Point.prototype.constructor=c.Point,c.Point.add=function(a,b,d){return void 0===d&&(d=new c.Point),d.x=a.x+b.x,d.y=a.y+b.y,d},c.Point.subtract=function(a,b,d){return void 0===d&&(d=new c.Point),d.x=a.x-b.x,d.y=a.y-b.y,d},c.Point.multiply=function(a,b,d){return void 0===d&&(d=new c.Point),d.x=a.x*b.x,d.y=a.y*b.y,d},c.Point.divide=function(a,b,d){return void 0===d&&(d=new c.Point),d.x=a.x/b.x,d.y=a.y/b.y,d},c.Point.equals=function(a,b){return a.x===b.x&&a.y===b.y},c.Point.angle=function(a,b){return Math.atan2(a.y-b.y,a.x-b.x)},c.Point.negative=function(a,b){return void 0===b&&(b=new c.Point),b.setTo(-a.x,-a.y)},c.Point.multiplyAdd=function(a,b,d,e){return void 0===e&&(e=new c.Point),e.setTo(a.x+b.x*d,a.y+b.y*d)},c.Point.interpolate=function(a,b,d,e){return void 0===e&&(e=new c.Point),e.setTo(a.x+(b.x-a.x)*d,a.y+(b.y-a.y)*d)},c.Point.perp=function(a,b){return void 0===b&&(b=new c.Point),b.setTo(-a.y,a.x)},c.Point.rperp=function(a,b){return void 0===b&&(b=new c.Point),b.setTo(a.y,-a.x)},c.Point.distance=function(a,b,d){var e=c.Math.distance(a.x,a.y,b.x,b.y);return d?Math.round(e):e},c.Point.project=function(a,b,d){void 0===d&&(d=new c.Point);var e=a.dot(b)/b.getMagnitudeSq();return 0!==e&&d.setTo(e*b.x,e*b.y),d},c.Point.projectUnit=function(a,b,d){void 0===d&&(d=new c.Point);var e=a.dot(b);return 0!==e&&d.setTo(e*b.x,e*b.y),d},c.Point.normalRightHand=function(a,b){return void 0===b&&(b=new c.Point),b.setTo(-1*a.y,a.x)},c.Point.normalize=function(a,b){void 0===b&&(b=new c.Point);var d=a.getMagnitude();return 0!==d&&b.setTo(a.x/d,a.y/d),b},c.Point.rotate=function(a,b,d,e,f,g){if(f&&(e=c.Math.degToRad(e)),void 0===g){a.subtract(b,d);var h=Math.sin(e),i=Math.cos(e),j=i*a.x-h*a.y,k=h*a.x+i*a.y;a.x=j+b,a.y=k+d}else{var l=e+Math.atan2(a.y-d,a.x-b);a.x=b+g*Math.cos(l),a.y=d+g*Math.sin(l)}return a; +},c.Point.centroid=function(a,b){if(void 0===b&&(b=new c.Point),"[object Array]"!==Object.prototype.toString.call(a))throw new Error("Phaser.Point. Parameter 'points' must be an array");var d=a.length;if(1>d)throw new Error("Phaser.Point. Parameter 'points' array must not be empty");if(1===d)return b.copyFrom(a[0]),b;for(var e=0;d>e;e++)c.Point.add(b,a[e],b);return b.divide(d,d),b},c.Point.parse=function(a,b,d){b=b||"x",d=d||"y";var e=new c.Point;return a[b]&&(e.x=parseInt(a[b],10)),a[d]&&(e.y=parseInt(a[d],10)),e},PIXI.Point=c.Point,c.Polygon=function(){this.area=0,this._points=[],arguments.length>0&&this.setTo.apply(this,arguments),this.closed=!0,this.flattened=!1,this.type=c.POLYGON},c.Polygon.prototype={toNumberArray:function(a){void 0===a&&(a=[]);for(var b=0;b=g&&i>b||b>=i&&g>b)&&(h-f)*(b-g)/(i-g)+f>a&&(c=!c)}else for(var d=-1,e=this._points.length-1;++d=g&&i>b||b>=i&&g>b)&&(h-f)*(b-g)/(i-g)+f>a&&(c=!c)}return c},setTo:function(a){if(this.area=0,this._points=[],arguments.length>0){Array.isArray(a)||(a=Array.prototype.slice.call(arguments));for(var b=Number.MAX_VALUE,c=0,d=a.length;d>c;c++){if("number"==typeof a[c]){var e=new PIXI.Point(a[c],a[c+1]);c++}else if(Array.isArray(a[c]))var e=new PIXI.Point(a[c][0],a[c][1]);else var e=new PIXI.Point(a[c].x,a[c].y);this._points.push(e),e.yf;f++)b=this._points[f],c=f===g-1?this._points[0]:this._points[f+1],d=(b.y-a+(c.y-a))/2,e=b.x-c.x,this.area+=d*e;return this.area}},c.Polygon.prototype.constructor=c.Polygon,Object.defineProperty(c.Polygon.prototype,"points",{get:function(){return this._points},set:function(a){null!=a?this.setTo(a):this.setTo()}}),PIXI.Polygon=c.Polygon,c.Rectangle=function(a,b,d,e){a=a||0,b=b||0,d=d||0,e=e||0,this.x=a,this.y=b,this.width=d,this.height=e,this.type=c.RECTANGLE},c.Rectangle.prototype={offset:function(a,b){return this.x+=a,this.y+=b,this},offsetPoint:function(a){return this.offset(a.x,a.y)},setTo:function(a,b,c,d){return this.x=a,this.y=b,this.width=c,this.height=d,this},scale:function(a,b){return void 0===b&&(b=a),this.width*=a,this.height*=b,this},centerOn:function(a,b){return this.centerX=a,this.centerY=b,this},floor:function(){this.x=Math.floor(this.x),this.y=Math.floor(this.y)},floorAll:function(){this.x=Math.floor(this.x),this.y=Math.floor(this.y),this.width=Math.floor(this.width),this.height=Math.floor(this.height)},ceil:function(){this.x=Math.ceil(this.x),this.y=Math.ceil(this.y)},ceilAll:function(){this.x=Math.ceil(this.x),this.y=Math.ceil(this.y),this.width=Math.ceil(this.width),this.height=Math.ceil(this.height)},copyFrom:function(a){return this.setTo(a.x,a.y,a.width,a.height)},copyTo:function(a){return a.x=this.x,a.y=this.y,a.width=this.width,a.height=this.height,a},inflate:function(a,b){return c.Rectangle.inflate(this,a,b)},size:function(a){return c.Rectangle.size(this,a)},resize:function(a,b){return this.width=a,this.height=b,this},clone:function(a){return c.Rectangle.clone(this,a)},contains:function(a,b){return c.Rectangle.contains(this,a,b)},containsRect:function(a){return c.Rectangle.containsRect(a,this)},equals:function(a){return c.Rectangle.equals(this,a)},intersection:function(a,b){return c.Rectangle.intersection(this,a,b)},intersects:function(a){return c.Rectangle.intersects(this,a)},intersectsRaw:function(a,b,d,e,f){return c.Rectangle.intersectsRaw(this,a,b,d,e,f)},union:function(a,b){return c.Rectangle.union(this,a,b)},random:function(a){return void 0===a&&(a=new c.Point),a.x=this.randomX,a.y=this.randomY,a},getPoint:function(a,b){switch(void 0===b&&(b=new c.Point),a){default:case c.TOP_LEFT:return b.set(this.x,this.y);case c.TOP_CENTER:return b.set(this.centerX,this.y);case c.TOP_RIGHT:return b.set(this.right,this.y);case c.LEFT_CENTER:return b.set(this.x,this.centerY);case c.CENTER:return b.set(this.centerX,this.centerY);case c.RIGHT_CENTER:return b.set(this.right,this.centerY);case c.BOTTOM_LEFT:return b.set(this.x,this.bottom);case c.BOTTOM_CENTER:return b.set(this.centerX,this.bottom);case c.BOTTOM_RIGHT:return b.set(this.right,this.bottom)}},toString:function(){return"[{Rectangle (x="+this.x+" y="+this.y+" width="+this.width+" height="+this.height+" empty="+this.empty+")}]"}},Object.defineProperty(c.Rectangle.prototype,"halfWidth",{get:function(){return Math.round(this.width/2)}}),Object.defineProperty(c.Rectangle.prototype,"halfHeight",{get:function(){return Math.round(this.height/2)}}),Object.defineProperty(c.Rectangle.prototype,"bottom",{get:function(){return this.y+this.height},set:function(a){a<=this.y?this.height=0:this.height=a-this.y}}),Object.defineProperty(c.Rectangle.prototype,"bottomLeft",{get:function(){return new c.Point(this.x,this.bottom)},set:function(a){this.x=a.x,this.bottom=a.y}}),Object.defineProperty(c.Rectangle.prototype,"bottomRight",{get:function(){return new c.Point(this.right,this.bottom)},set:function(a){this.right=a.x,this.bottom=a.y}}),Object.defineProperty(c.Rectangle.prototype,"left",{get:function(){return this.x},set:function(a){a>=this.right?this.width=0:this.width=this.right-a,this.x=a}}),Object.defineProperty(c.Rectangle.prototype,"right",{get:function(){return this.x+this.width},set:function(a){a<=this.x?this.width=0:this.width=a-this.x}}),Object.defineProperty(c.Rectangle.prototype,"volume",{get:function(){return this.width*this.height}}),Object.defineProperty(c.Rectangle.prototype,"perimeter",{get:function(){return 2*this.width+2*this.height}}),Object.defineProperty(c.Rectangle.prototype,"centerX",{get:function(){return this.x+this.halfWidth},set:function(a){this.x=a-this.halfWidth}}),Object.defineProperty(c.Rectangle.prototype,"centerY",{get:function(){return this.y+this.halfHeight},set:function(a){this.y=a-this.halfHeight}}),Object.defineProperty(c.Rectangle.prototype,"randomX",{get:function(){return this.x+Math.random()*this.width}}),Object.defineProperty(c.Rectangle.prototype,"randomY",{get:function(){return this.y+Math.random()*this.height}}),Object.defineProperty(c.Rectangle.prototype,"top",{get:function(){return this.y},set:function(a){a>=this.bottom?(this.height=0,this.y=a):this.height=this.bottom-a}}),Object.defineProperty(c.Rectangle.prototype,"topLeft",{get:function(){return new c.Point(this.x,this.y)},set:function(a){this.x=a.x,this.y=a.y}}),Object.defineProperty(c.Rectangle.prototype,"topRight",{get:function(){return new c.Point(this.x+this.width,this.y)},set:function(a){this.right=a.x,this.y=a.y}}),Object.defineProperty(c.Rectangle.prototype,"empty",{get:function(){return!this.width||!this.height},set:function(a){a===!0&&this.setTo(0,0,0,0)}}),c.Rectangle.prototype.constructor=c.Rectangle,c.Rectangle.inflate=function(a,b,c){return a.x-=b,a.width+=2*b,a.y-=c,a.height+=2*c,a},c.Rectangle.inflatePoint=function(a,b){return c.Rectangle.inflate(a,b.x,b.y)},c.Rectangle.size=function(a,b){return void 0===b||null===b?b=new c.Point(a.width,a.height):b.setTo(a.width,a.height),b},c.Rectangle.clone=function(a,b){return void 0===b||null===b?b=new c.Rectangle(a.x,a.y,a.width,a.height):b.setTo(a.x,a.y,a.width,a.height),b},c.Rectangle.contains=function(a,b,c){return a.width<=0||a.height<=0?!1:b>=a.x&&b=a.y&&c=a&&a+c>e&&f>=b&&b+d>f},c.Rectangle.containsPoint=function(a,b){return c.Rectangle.contains(a,b.x,b.y)},c.Rectangle.containsRect=function(a,b){return a.volume>b.volume?!1:a.x>=b.x&&a.y>=b.y&&a.rightb.right||a.y>b.bottom)},c.Rectangle.intersectsRaw=function(a,b,c,d,e,f){return void 0===f&&(f=0),!(b>a.right+f||ca.bottom+f||ed&&(d=a.x),a.xf&&(f=a.y),a.y=c&&a<=c+this.width){var d=this.y;if(b>=d&&b<=d+this.height)return!0}return!1}},c.RoundedRectangle.prototype.constructor=c.RoundedRectangle,PIXI.RoundedRectangle=c.RoundedRectangle,c.Camera=function(a,b,d,e,f,g){this.game=a,this.world=a.world,this.id=0,this.view=new c.Rectangle(d,e,f,g),this.bounds=new c.Rectangle(d,e,f,g),this.deadzone=null,this.visible=!0,this.roundPx=!0,this.atLimit={x:!1,y:!1},this.target=null,this.displayObject=null,this.scale=null,this.totalInView=0,this.lerp=new c.Point(1,1),this.onShakeComplete=new c.Signal,this.onFlashComplete=new c.Signal,this.onFadeComplete=new c.Signal,this.fx=null,this._targetPosition=new c.Point,this._edge=0,this._position=new c.Point,this._shake={intensity:0,duration:0,horizontal:!1,vertical:!1,shakeBounds:!0,x:0,y:0},this._fxDuration=0,this._fxType=0},c.Camera.FOLLOW_LOCKON=0,c.Camera.FOLLOW_PLATFORMER=1,c.Camera.FOLLOW_TOPDOWN=2,c.Camera.FOLLOW_TOPDOWN_TIGHT=3,c.Camera.SHAKE_BOTH=4,c.Camera.SHAKE_HORIZONTAL=5,c.Camera.SHAKE_VERTICAL=6,c.Camera.ENABLE_FX=!0,c.Camera.prototype={boot:function(){this.displayObject=this.game.world,this.scale=this.game.world.scale,this.game.camera=this,c.Graphics&&c.Camera.ENABLE_FX&&(this.fx=new c.Graphics(this.game),this.game.stage.addChild(this.fx))},preUpdate:function(){this.totalInView=0},follow:function(a,b,d,e){void 0===b&&(b=c.Camera.FOLLOW_LOCKON),void 0===d&&(d=1),void 0===e&&(e=1),this.target=a,this.lerp.set(d,e);var f;switch(b){case c.Camera.FOLLOW_PLATFORMER:var g=this.width/8,h=this.height/3;this.deadzone=new c.Rectangle((this.width-g)/2,(this.height-h)/2-.25*h,g,h);break;case c.Camera.FOLLOW_TOPDOWN:f=Math.max(this.width,this.height)/4,this.deadzone=new c.Rectangle((this.width-f)/2,(this.height-f)/2,f,f);break;case c.Camera.FOLLOW_TOPDOWN_TIGHT:f=Math.max(this.width,this.height)/8,this.deadzone=new c.Rectangle((this.width-f)/2,(this.height-f)/2,f,f);break;case c.Camera.FOLLOW_LOCKON:this.deadzone=null;break;default:this.deadzone=null}},unfollow:function(){this.target=null},focusOn:function(a){this.setPosition(Math.round(a.x-this.view.halfWidth),Math.round(a.y-this.view.halfHeight))},focusOnXY:function(a,b){this.setPosition(Math.round(a-this.view.halfWidth),Math.round(b-this.view.halfHeight))},shake:function(a,b,d,e,f){return void 0===a&&(a=.05),void 0===b&&(b=500),void 0===d&&(d=!0),void 0===e&&(e=c.Camera.SHAKE_BOTH),void 0===f&&(f=!0),!d&&this._shake.duration>0?!1:(this._shake.intensity=a,this._shake.duration=b,this._shake.shakeBounds=f,this._shake.x=0,this._shake.y=0,this._shake.horizontal=e===c.Camera.SHAKE_BOTH||e===c.Camera.SHAKE_HORIZONTAL,this._shake.vertical=e===c.Camera.SHAKE_BOTH||e===c.Camera.SHAKE_VERTICAL,!0)},flash:function(a,b,c){return void 0===a&&(a=16777215),void 0===b&&(b=500),void 0===c&&(c=!1),!this.fx||!c&&this._fxDuration>0?!1:(this.fx.clear(),this.fx.beginFill(a),this.fx.drawRect(0,0,this.width,this.height),this.fx.endFill(),this.fx.alpha=1,this._fxDuration=b,this._fxType=0,!0)},fade:function(a,b,c){return void 0===a&&(a=0),void 0===b&&(b=500),void 0===c&&(c=!1),!this.fx||!c&&this._fxDuration>0?!1:(this.fx.clear(),this.fx.beginFill(a),this.fx.drawRect(0,0,this.width,this.height),this.fx.endFill(),this.fx.alpha=0,this._fxDuration=b,this._fxType=1,!0)},update:function(){this._fxDuration>0&&this.updateFX(),this._shake.duration>0&&this.updateShake(),this.bounds&&this.checkBounds(),this.roundPx&&(this.view.floor(),this._shake.x=Math.floor(this._shake.x),this._shake.y=Math.floor(this._shake.y)),this.displayObject.position.x=-this.view.x,this.displayObject.position.y=-this.view.y},updateFX:function(){0===this._fxType?(this.fx.alpha-=this.game.time.elapsedMS/this._fxDuration,this.fx.alpha<=0&&(this._fxDuration=0,this.fx.alpha=0,this.onFlashComplete.dispatch())):(this.fx.alpha+=this.game.time.elapsedMS/this._fxDuration,this.fx.alpha>=1&&(this._fxDuration=0,this.fx.alpha=1,this.onFadeComplete.dispatch()))},updateShake:function(){this._shake.duration-=this.game.time.elapsedMS,this._shake.duration<=0?(this.onShakeComplete.dispatch(),this._shake.x=0,this._shake.y=0):(this._shake.horizontal&&(this._shake.x=this.game.rnd.frac()*this._shake.intensity*this.view.width*2-this._shake.intensity*this.view.width),this._shake.vertical&&(this._shake.y=this.game.rnd.frac()*this._shake.intensity*this.view.height*2-this._shake.intensity*this.view.height))},updateTarget:function(){this._targetPosition.x=this.view.x+this.target.worldPosition.x,this._targetPosition.y=this.view.y+this.target.worldPosition.y,this.deadzone?(this._edge=this._targetPosition.x-this.view.x,this._edgethis.deadzone.right&&(this.view.x=this.game.math.linear(this.view.x,this._targetPosition.x-this.deadzone.right,this.lerp.x)),this._edge=this._targetPosition.y-this.view.y,this._edgethis.deadzone.bottom&&(this.view.y=this.game.math.linear(this.view.y,this._targetPosition.y-this.deadzone.bottom,this.lerp.y))):(this.view.x=this.game.math.linear(this.view.x,this._targetPosition.x-this.view.halfWidth,this.lerp.x),this.view.y=this.game.math.linear(this.view.y,this._targetPosition.y-this.view.halfHeight,this.lerp.y)),this.bounds&&this.checkBounds(),this.roundPx&&this.view.floor(),this.displayObject.position.x=-this.view.x,this.displayObject.position.y=-this.view.y},setBoundsToWorld:function(){this.bounds&&this.bounds.copyFrom(this.game.world.bounds)},checkBounds:function(){this.atLimit.x=!1,this.atLimit.y=!1;var a=this.view.x+this._shake.x,b=this.view.right+this._shake.x,c=this.view.y+this._shake.y,d=this.view.bottom+this._shake.y;a<=this.bounds.x*this.scale.x&&(this.atLimit.x=!0,this.view.x=this.bounds.x*this.scale.x,this._shake.shakeBounds||(this._shake.x=0)),b>=this.bounds.right*this.scale.x&&(this.atLimit.x=!0,this.view.x=this.bounds.right*this.scale.x-this.width,this._shake.shakeBounds||(this._shake.x=0)),c<=this.bounds.top*this.scale.y&&(this.atLimit.y=!0,this.view.y=this.bounds.top*this.scale.y,this._shake.shakeBounds||(this._shake.y=0)),d>=this.bounds.bottom*this.scale.y&&(this.atLimit.y=!0,this.view.y=this.bounds.bottom*this.scale.y-this.height,this._shake.shakeBounds||(this._shake.y=0))},setPosition:function(a,b){this.view.x=a,this.view.y=b,this.bounds&&this.checkBounds()},setSize:function(a,b){this.view.width=a,this.view.height=b},reset:function(){this.target=null,this.view.x=0,this.view.y=0,this._shake.duration=0,this.resetFX()},resetFX:function(){this.fx.clear(),this.fx.alpha=0,this._fxDuration=0}},c.Camera.prototype.constructor=c.Camera,Object.defineProperty(c.Camera.prototype,"x",{get:function(){return this.view.x},set:function(a){this.view.x=a,this.bounds&&this.checkBounds()}}),Object.defineProperty(c.Camera.prototype,"y",{get:function(){return this.view.y},set:function(a){this.view.y=a,this.bounds&&this.checkBounds()}}),Object.defineProperty(c.Camera.prototype,"position",{get:function(){return this._position.set(this.view.x,this.view.y),this._position},set:function(a){"undefined"!=typeof a.x&&(this.view.x=a.x),"undefined"!=typeof a.y&&(this.view.y=a.y),this.bounds&&this.checkBounds()}}),Object.defineProperty(c.Camera.prototype,"width",{get:function(){return this.view.width},set:function(a){this.view.width=a}}),Object.defineProperty(c.Camera.prototype,"height",{get:function(){return this.view.height},set:function(a){this.view.height=a}}),Object.defineProperty(c.Camera.prototype,"shakeIntensity",{get:function(){return this._shake.intensity},set:function(a){this._shake.intensity=a}}),c.State=function(){this.game=null,this.key="",this.add=null,this.make=null,this.camera=null,this.cache=null,this.input=null,this.load=null,this.math=null,this.sound=null,this.scale=null,this.stage=null,this.state=null,this.time=null,this.tweens=null,this.world=null,this.particles=null,this.physics=null,this.rnd=null},c.State.prototype={init:function(){},preload:function(){},loadUpdate:function(){},loadRender:function(){},create:function(){},update:function(){},preRender:function(){},render:function(){},resize:function(){},paused:function(){},resumed:function(){},pauseUpdate:function(){},shutdown:function(){}},c.State.prototype.constructor=c.State,c.StateManager=function(a,b){this.game=a,this.states={},this._pendingState=null,"undefined"!=typeof b&&null!==b&&(this._pendingState=b),this._clearWorld=!1,this._clearCache=!1,this._created=!1,this._args=[],this.current="",this.onStateChange=new c.Signal,this.onInitCallback=null,this.onPreloadCallback=null,this.onCreateCallback=null,this.onUpdateCallback=null,this.onRenderCallback=null,this.onResizeCallback=null,this.onPreRenderCallback=null,this.onLoadUpdateCallback=null,this.onLoadRenderCallback=null,this.onPausedCallback=null,this.onResumedCallback=null,this.onPauseUpdateCallback=null,this.onShutDownCallback=null},c.StateManager.prototype={boot:function(){this.game.onPause.add(this.pause,this),this.game.onResume.add(this.resume,this),null!==this._pendingState&&"string"!=typeof this._pendingState&&this.add("default",this._pendingState,!0)},add:function(a,b,d){void 0===d&&(d=!1);var e;return b instanceof c.State?e=b:"object"==typeof b?(e=b,e.game=this.game):"function"==typeof b&&(e=new b(this.game)),this.states[a]=e,d&&(this.game.isBooted?this.start(a):this._pendingState=a),e},remove:function(a){this.current===a&&(this.callbackContext=null,this.onInitCallback=null,this.onShutDownCallback=null,this.onPreloadCallback=null,this.onLoadRenderCallback=null,this.onLoadUpdateCallback=null,this.onCreateCallback=null,this.onUpdateCallback=null,this.onPreRenderCallback=null,this.onRenderCallback=null,this.onResizeCallback=null,this.onPausedCallback=null,this.onResumedCallback=null,this.onPauseUpdateCallback=null),delete this.states[a]},start:function(a,b,c){void 0===b&&(b=!0),void 0===c&&(c=!1),this.checkState(a)&&(this._pendingState=a,this._clearWorld=b,this._clearCache=c,arguments.length>3&&(this._args=Array.prototype.splice.call(arguments,3)))},restart:function(a,b){void 0===a&&(a=!0),void 0===b&&(b=!1),this._pendingState=this.current,this._clearWorld=a,this._clearCache=b,arguments.length>2&&(this._args=Array.prototype.slice.call(arguments,2))},dummy:function(){},preUpdate:function(){if(this._pendingState&&this.game.isBooted){var a=this.current;if(this.clearCurrentState(),this.setCurrentState(this._pendingState),this.onStateChange.dispatch(this.current,a),this.current!==this._pendingState)return;this._pendingState=null,this.onPreloadCallback?(this.game.load.reset(!0),this.onPreloadCallback.call(this.callbackContext,this.game),0===this.game.load.totalQueuedFiles()&&0===this.game.load.totalQueuedPacks()?this.loadComplete():this.game.load.start()):this.loadComplete()}},clearCurrentState:function(){this.current&&(this.onShutDownCallback&&this.onShutDownCallback.call(this.callbackContext,this.game),this.game.tweens.removeAll(),this.game.camera.reset(),this.game.input.reset(!0),this.game.physics.clear(),this.game.time.removeAll(),this.game.scale.reset(this._clearWorld),this.game.debug&&this.game.debug.reset(),this._clearWorld&&(this.game.world.shutdown(),this._clearCache&&this.game.cache.destroy()))},checkState:function(a){return this.states[a]?this.states[a].preload||this.states[a].create||this.states[a].update||this.states[a].render?!0:(console.warn("Invalid Phaser State object given. Must contain at least a one of the required functions: preload, create, update or render"),!1):(console.warn("Phaser.StateManager - No state found with the key: "+a),!1)},link:function(a){this.states[a].game=this.game,this.states[a].add=this.game.add,this.states[a].make=this.game.make,this.states[a].camera=this.game.camera,this.states[a].cache=this.game.cache,this.states[a].input=this.game.input,this.states[a].load=this.game.load,this.states[a].math=this.game.math,this.states[a].sound=this.game.sound,this.states[a].scale=this.game.scale,this.states[a].state=this,this.states[a].stage=this.game.stage,this.states[a].time=this.game.time,this.states[a].tweens=this.game.tweens,this.states[a].world=this.game.world,this.states[a].particles=this.game.particles,this.states[a].rnd=this.game.rnd,this.states[a].physics=this.game.physics,this.states[a].key=a},unlink:function(a){this.states[a]&&(this.states[a].game=null,this.states[a].add=null,this.states[a].make=null,this.states[a].camera=null,this.states[a].cache=null,this.states[a].input=null,this.states[a].load=null,this.states[a].math=null,this.states[a].sound=null,this.states[a].scale=null,this.states[a].state=null,this.states[a].stage=null,this.states[a].time=null,this.states[a].tweens=null,this.states[a].world=null,this.states[a].particles=null,this.states[a].rnd=null,this.states[a].physics=null)},setCurrentState:function(a){this.callbackContext=this.states[a],this.link(a),this.onInitCallback=this.states[a].init||this.dummy,this.onPreloadCallback=this.states[a].preload||null,this.onLoadRenderCallback=this.states[a].loadRender||null,this.onLoadUpdateCallback=this.states[a].loadUpdate||null,this.onCreateCallback=this.states[a].create||null,this.onUpdateCallback=this.states[a].update||null,this.onPreRenderCallback=this.states[a].preRender||null,this.onRenderCallback=this.states[a].render||null,this.onResizeCallback=this.states[a].resize||null,this.onPausedCallback=this.states[a].paused||null,this.onResumedCallback=this.states[a].resumed||null,this.onPauseUpdateCallback=this.states[a].pauseUpdate||null,this.onShutDownCallback=this.states[a].shutdown||this.dummy,""!==this.current&&this.game.physics.reset(),this.current=a,this._created=!1,this.onInitCallback.apply(this.callbackContext,this._args),a===this._pendingState&&(this._args=[]),this.game._kickstart=!0},getCurrentState:function(){return this.states[this.current]},loadComplete:function(){this._created===!1&&this.onLoadUpdateCallback&&this.onLoadUpdateCallback.call(this.callbackContext,this.game),this._created===!1&&this.onCreateCallback?(this._created=!0,this.onCreateCallback.call(this.callbackContext,this.game)):this._created=!0},pause:function(){this._created&&this.onPausedCallback&&this.onPausedCallback.call(this.callbackContext,this.game)},resume:function(){this._created&&this.onResumedCallback&&this.onResumedCallback.call(this.callbackContext,this.game)},update:function(){this._created?this.onUpdateCallback&&this.onUpdateCallback.call(this.callbackContext,this.game):this.onLoadUpdateCallback&&this.onLoadUpdateCallback.call(this.callbackContext,this.game)},pauseUpdate:function(){this._created?this.onPauseUpdateCallback&&this.onPauseUpdateCallback.call(this.callbackContext,this.game):this.onLoadUpdateCallback&&this.onLoadUpdateCallback.call(this.callbackContext,this.game)},preRender:function(a){this._created&&this.onPreRenderCallback&&this.onPreRenderCallback.call(this.callbackContext,this.game,a)},resize:function(a,b){this.onResizeCallback&&this.onResizeCallback.call(this.callbackContext,a,b)},render:function(){this._created?this.onRenderCallback&&(this.game.renderType===c.CANVAS?(this.game.context.save(),this.game.context.setTransform(1,0,0,1,0,0),this.onRenderCallback.call(this.callbackContext,this.game),this.game.context.restore()):this.onRenderCallback.call(this.callbackContext,this.game)):this.onLoadRenderCallback&&this.onLoadRenderCallback.call(this.callbackContext,this.game)},destroy:function(){this._clearWorld=!0,this._clearCache=!0,this.clearCurrentState(),this.callbackContext=null,this.onInitCallback=null,this.onShutDownCallback=null,this.onPreloadCallback=null,this.onLoadRenderCallback=null,this.onLoadUpdateCallback=null,this.onCreateCallback=null,this.onUpdateCallback=null,this.onRenderCallback=null,this.onPausedCallback=null,this.onResumedCallback=null,this.onPauseUpdateCallback=null,this.game=null,this.states={},this._pendingState=null,this.current=""}},c.StateManager.prototype.constructor=c.StateManager,Object.defineProperty(c.StateManager.prototype,"created",{get:function(){return this._created}}),c.Signal=function(){},c.Signal.prototype={_bindings:null,_prevParams:null,memorize:!1,_shouldPropagate:!0,active:!0,_boundDispatch:!1,validateListener:function(a,b){if("function"!=typeof a)throw new Error("Phaser.Signal: listener is a required param of {fn}() and should be a Function.".replace("{fn}",b))},_registerListener:function(a,b,d,e,f){var g,h=this._indexOfListener(a,d);if(-1!==h){if(g=this._bindings[h],g.isOnce()!==b)throw new Error("You cannot add"+(b?"":"Once")+"() then add"+(b?"Once":"")+"() the same listener without removing the relationship first.")}else g=new c.SignalBinding(this,a,b,d,e,f),this._addBinding(g);return this.memorize&&this._prevParams&&g.execute(this._prevParams),g},_addBinding:function(a){this._bindings||(this._bindings=[]);var b=this._bindings.length;do b--;while(this._bindings[b]&&a._priority<=this._bindings[b]._priority);this._bindings.splice(b+1,0,a)},_indexOfListener:function(a,b){if(!this._bindings)return-1;void 0===b&&(b=null);for(var c,d=this._bindings.length;d--;)if(c=this._bindings[d],c._listener===a&&c.context===b)return d;return-1},has:function(a,b){return-1!==this._indexOfListener(a,b)},add:function(a,b,c){this.validateListener(a,"add");var d=[];if(arguments.length>3)for(var e=3;e3)for(var e=3;ea||a>=this.children.length?-1:this.getChildAt(a)},c.Group.prototype.create=function(a,b,c,d,e,f){void 0===e&&(e=!0);var g=new this.classType(this.game,a,b,c,d);return g.exists=e,g.visible=e,g.alive=e,this.add(g,!1,f)},c.Group.prototype.createMultiple=function(a,b,c,d){void 0===c&&(c=0),void 0===d&&(d=!1),Array.isArray(b)||(b=[b]),Array.isArray(c)||(c=[c]);var e=this,f=[];return b.forEach(function(b){c.forEach(function(c){for(var g=0;a>g;g++)f.push(e.create(0,0,b,c,d))})}),f},c.Group.prototype.updateZ=function(){for(var a=this.children.length;a--;)this.children[a].z=a},c.Group.prototype.align=function(a,b,d,e,f,g){if(void 0===f&&(f=c.TOP_LEFT),void 0===g&&(g=0),!(0===this.children.length||g>this.children.length||-1===a&&-1===b))for(var h=new c.Rectangle(0,0,d,e),i=a*d,j=b*e,k=g;kthis.children.length-1&&(a=0),this.cursor?(this.cursorIndex=a,this.cursor=this.children[this.cursorIndex],this.cursor):void 0},c.Group.prototype.next=function(){return this.cursor?(this.cursorIndex>=this.children.length-1?this.cursorIndex=0:this.cursorIndex++,this.cursor=this.children[this.cursorIndex],this.cursor):void 0},c.Group.prototype.previous=function(){return this.cursor?(0===this.cursorIndex?this.cursorIndex=this.children.length-1:this.cursorIndex--,this.cursor=this.children[this.cursorIndex],this.cursor):void 0},c.Group.prototype.swap=function(a,b){this.swapChildren(a,b),this.updateZ()},c.Group.prototype.bringToTop=function(a){return a.parent===this&&this.getIndex(a)0&&(this.remove(a,!1,!0),this.addAt(a,0,!0)),a},c.Group.prototype.moveUp=function(a){if(a.parent===this&&this.getIndex(a)0){var b=this.getIndex(a),c=this.getAt(b-1);c&&this.swap(a,c)}return a},c.Group.prototype.xy=function(a,b,c){return 0>a||a>this.children.length?-1:(this.getChildAt(a).x=b,void(this.getChildAt(a).y=c))},c.Group.prototype.reverse=function(){this.children.reverse(),this.updateZ()},c.Group.prototype.getIndex=function(a){return this.children.indexOf(a)},c.Group.prototype.getByName=function(a){for(var b=0;b0))return!1;var f=b.length;return 1===f?0===d?a[b[0]]=c:1==d?a[b[0]]+=c:2==d?a[b[0]]-=c:3==d?a[b[0]]*=c:4==d&&(a[b[0]]/=c):2===f?0===d?a[b[0]][b[1]]=c:1==d?a[b[0]][b[1]]+=c:2==d?a[b[0]][b[1]]-=c:3==d?a[b[0]][b[1]]*=c:4==d&&(a[b[0]][b[1]]/=c):3===f?0===d?a[b[0]][b[1]][b[2]]=c:1==d?a[b[0]][b[1]][b[2]]+=c:2==d?a[b[0]][b[1]][b[2]]-=c:3==d?a[b[0]][b[1]][b[2]]*=c:4==d&&(a[b[0]][b[1]][b[2]]/=c):4===f&&(0===d?a[b[0]][b[1]][b[2]][b[3]]=c:1==d?a[b[0]][b[1]][b[2]][b[3]]+=c:2==d?a[b[0]][b[1]][b[2]][b[3]]-=c:3==d?a[b[0]][b[1]][b[2]][b[3]]*=c:4==d&&(a[b[0]][b[1]][b[2]][b[3]]/=c)),!0},c.Group.prototype.checkProperty=function(a,b,d,e){return void 0===e&&(e=!1),!c.Utils.getProperty(a,b)&&e?!1:c.Utils.getProperty(a,b)===d},c.Group.prototype.set=function(a,b,c,d,e,f,g){return void 0===g&&(g=!1),b=b.split("."),void 0===d&&(d=!1),void 0===e&&(e=!1),(d===!1||d&&a.alive)&&(e===!1||e&&a.visible)?this.setProperty(a,b,c,f,g):void 0},c.Group.prototype.setAll=function(a,b,c,d,e,f){void 0===c&&(c=!1),void 0===d&&(d=!1),void 0===f&&(f=!1),a=a.split("."),e=e||0;for(var g=0;g2){c=[];for(var d=2;d2){e=[];for(var f=2;f2){d=[null];for(var e=2;e2){d=[null];for(var e=2;e2){d=[null];for(var e=2;eb[this._sortProperty]?1:a.zb[this._sortProperty]?-1:0},c.Group.prototype.iterate=function(a,b,d,e,f,g){if(d===c.Group.RETURN_TOTAL&&0===this.children.length)return 0;for(var h=0,i=0;i0?this.children[this.children.length-1]:void 0},c.Group.prototype.getBottom=function(){return this.children.length>0?this.children[0]:void 0},c.Group.prototype.getClosestTo=function(a,b,d){for(var e=Number.MAX_VALUE,f=0,g=null,h=0;hf&&(!b||b.call(d,i,f))&&(e=f,g=i))}return g},c.Group.prototype.getFurthestFrom=function(a,b,d){for(var e=0,f=0,g=null,h=0;he&&(!b||b.call(d,i,f))&&(e=f,g=i))}return g},c.Group.prototype.countLiving=function(){return this.iterate("alive",!0,c.Group.RETURN_TOTAL)},c.Group.prototype.countDead=function(){return this.iterate("alive",!1,c.Group.RETURN_TOTAL)},c.Group.prototype.getRandom=function(a,b){return 0===this.children.length?null:(a=a||0,b=b||this.children.length,c.ArrayUtils.getRandomItem(this.children,a,b))},c.Group.prototype.remove=function(a,b,c){if(void 0===b&&(b=!1),void 0===c&&(c=!1),0===this.children.length||-1===this.children.indexOf(a))return!1;c||!a.events||a.destroyPhase||a.events.onRemovedFromGroup$dispatch(a,this);var d=this.removeChild(a);return this.removeFromHash(a),this.updateZ(),this.cursor===a&&this.next(),b&&d&&d.destroy(!0),!0},c.Group.prototype.moveAll=function(a,b){if(void 0===b&&(b=!1),this.children.length>0&&a instanceof c.Group){do a.add(this.children[0],b);while(this.children.length>0);this.hash=[],this.cursor=null}return a},c.Group.prototype.removeAll=function(a,b,c){if(void 0===a&&(a=!1),void 0===b&&(b=!1),void 0===c&&(c=!1),0!==this.children.length){do{!b&&this.children[0].events&&this.children[0].events.onRemovedFromGroup$dispatch(this.children[0],this);var d=this.removeChild(this.children[0]);this.removeFromHash(d),a&&d&&d.destroy(!0,c)}while(this.children.length>0);this.hash=[],this.cursor=null}},c.Group.prototype.removeBetween=function(a,b,c,d){if(void 0===b&&(b=this.children.length-1),void 0===c&&(c=!1),void 0===d&&(d=!1),0!==this.children.length){if(a>b||0>a||b>this.children.length)return!1;for(var e=b;e>=a;){!d&&this.children[e].events&&this.children[e].events.onRemovedFromGroup$dispatch(this.children[e],this);var f=this.removeChild(this.children[e]);this.removeFromHash(f),c&&f&&f.destroy(!0),this.cursor===this.children[e]&&(this.cursor=null),e--}this.updateZ()}},c.Group.prototype.destroy=function(a,b){null===this.game||this.ignoreDestroy||(void 0===a&&(a=!0),void 0===b&&(b=!1),this.onDestroy.dispatch(this,a,b),this.removeAll(a),this.cursor=null,this.filters=null,this.pendingDestroy=!1,b||(this.parent&&this.parent.removeChild(this),this.game=null,this.exists=!1))},Object.defineProperty(c.Group.prototype,"total",{get:function(){return this.iterate("exists",!0,c.Group.RETURN_TOTAL)}}),Object.defineProperty(c.Group.prototype,"length",{get:function(){return this.children.length}}),Object.defineProperty(c.Group.prototype,"angle",{get:function(){return c.Math.radToDeg(this.rotation)},set:function(a){this.rotation=c.Math.degToRad(a)}}),Object.defineProperty(c.Group.prototype,"centerX",{get:function(){return this.getBounds().centerX},set:function(a){var b=this.getBounds(),c=this.x-b.x;this.x=a+c-b.halfWidth}}),Object.defineProperty(c.Group.prototype,"centerY",{get:function(){return this.getBounds().centerY},set:function(a){var b=this.getBounds(),c=this.y-b.y;this.y=a+c-b.halfHeight}}),Object.defineProperty(c.Group.prototype,"left",{get:function(){return this.getBounds().left},set:function(a){var b=this.getBounds(),c=this.x-b.x;this.x=a+c}}),Object.defineProperty(c.Group.prototype,"right",{get:function(){return this.getBounds().right},set:function(a){var b=this.getBounds(),c=this.x-b.x;this.x=a+c-b.width}}),Object.defineProperty(c.Group.prototype,"top",{get:function(){return this.getBounds().top},set:function(a){var b=this.getBounds(),c=this.y-b.y;this.y=a+c}}),Object.defineProperty(c.Group.prototype,"bottom",{get:function(){return this.getBounds().bottom},set:function(a){var b=this.getBounds(),c=this.y-b.y;this.y=a+c-b.height}}),c.World=function(a){c.Group.call(this,a,null,"__world",!1),this.bounds=new c.Rectangle(0,0,a.width,a.height),this.camera=null,this._definedSize=!1,this._width=a.width,this._height=a.height,this.game.state.onStateChange.add(this.stateChange,this)},c.World.prototype=Object.create(c.Group.prototype),c.World.prototype.constructor=c.World,c.World.prototype.boot=function(){this.camera=new c.Camera(this.game,0,0,0,this.game.width,this.game.height),this.game.stage.addChild(this),this.camera.boot()},c.World.prototype.stateChange=function(){this.x=0,this.y=0,this.camera.reset()},c.World.prototype.setBounds=function(a,b,c,d){this._definedSize=!0,this._width=c,this._height=d,this.bounds.setTo(a,b,c,d),this.x=a,this.y=b,this.camera.bounds&&this.camera.bounds.setTo(a,b,Math.max(c,this.game.width),Math.max(d,this.game.height)),this.game.physics.setBoundsToWorld()},c.World.prototype.resize=function(a,b){this._definedSize&&(athis.bounds.right&&(a.x=this.bounds.left)),e&&(a.y+a._currentBounds.heightthis.bounds.bottom&&(a.y=this.bounds.top))):(d&&a.x+bthis.bounds.right&&(a.x=this.bounds.left-b),e&&a.y+bthis.bounds.bottom&&(a.y=this.bounds.top-b))},Object.defineProperty(c.World.prototype,"width",{get:function(){return this.bounds.width},set:function(a){ag;g++)e>g?f.push("color: #ff2424; background: #fff"):f.push("color: #959595; background: #fff");console.log.apply(console,f)}else window.console&&console.log("Phaser v"+a+" | Pixi.js "+PIXI.VERSION+" | "+b+" | "+d+" | http://phaser.io")}},setUpRenderer:function(){if(this.config.canvas?this.canvas=this.config.canvas:this.canvas=c.Canvas.create(this,this.width,this.height,this.config.canvasID,!0),this.config.canvasStyle?this.canvas.style=this.config.canvasStyle:this.canvas.style["-webkit-full-screen"]="width: 100%; height: 100%",this.renderType===c.HEADLESS||this.renderType===c.CANVAS||this.renderType===c.AUTO&&!this.device.webGL){if(!this.device.canvas)throw new Error("Phaser.Game - Cannot create Canvas or WebGL context, aborting.");this.renderType=c.CANVAS,this.renderer=new PIXI.CanvasRenderer(this),this.context=this.renderer.context}else this.renderType=c.WEBGL,this.renderer=new PIXI.WebGLRenderer(this),this.context=null,this.canvas.addEventListener("webglcontextlost",this.contextLost.bind(this),!1),this.canvas.addEventListener("webglcontextrestored",this.contextRestored.bind(this),!1);this.device.cocoonJS&&(this.canvas.screencanvas=this.renderType===c.CANVAS),this.renderType!==c.HEADLESS&&(this.stage.smoothed=this.antialias,c.Canvas.addToDOM(this.canvas,this.parent,!1),c.Canvas.setTouchAction(this.canvas))},contextLost:function(a){a.preventDefault(),this.renderer.contextLost=!0},contextRestored:function(){this.renderer.initContext(),this.cache.clearGLTextures(),this.renderer.contextLost=!1},update:function(a){if(this.time.update(a),this._kickstart)return this.updateLogic(this.time.desiredFpsMult),this.updateRender(this.time.slowMotion*this.time.desiredFps),void(this._kickstart=!1);if(this._spiraling>1&&!this.forceSingleUpdate)this.time.time>this._nextFpsNotification&&(this._nextFpsNotification=this.time.time+1e4,this.fpsProblemNotifier.dispatch()),this._deltaTime=0,this._spiraling=0,this.updateRender(this.time.slowMotion*this.time.desiredFps);else{var b=1e3*this.time.slowMotion/this.time.desiredFps;this._deltaTime+=Math.max(Math.min(3*b,this.time.elapsed),0);var c=0;for(this.updatesThisFrame=Math.floor(this._deltaTime/b),this.forceSingleUpdate&&(this.updatesThisFrame=Math.min(1,this.updatesThisFrame));this._deltaTime>=b&&(this._deltaTime-=b,this.currentUpdateID=c,this.updateLogic(this.time.desiredFpsMult),c++,!this.forceSingleUpdate||1!==c);)this.time.refresh();c>this._lastCount?this._spiraling++:c=c.Input.MAX_POINTERS)return console.warn("Phaser.Input.addPointer: Maximum limit of "+c.Input.MAX_POINTERS+" pointers reached."),null;var a=this.pointers.length+1,b=new c.Pointer(this.game,a,c.PointerMode.TOUCH);return this.pointers.push(b),this["pointer"+a]=b,b},update:function(){if(this.keyboard&&this.keyboard.update(),this.pollRate>0&&this._pollCounter=0&&this.countActivePointers(this.maxPointers)>=this.maxPointers)return null;if(!this.pointer1.active)return this.pointer1.start(a);if(!this.pointer2.active)return this.pointer2.start(a);for(var b=2;b0;c++){var d=this.pointers[c];d.active&&b--}return a-b},getPointer:function(a){void 0===a&&(a=!1);for(var b=0;b=g&&this._localPoint.x=h&&this._localPoint.y=g&&this._localPoint.x=h&&this._localPoint.y0&&this._pollCounterthis.game.time.time},justReleased:function(a){return a=a||250,this.isUp&&this.timeUp+a>this.game.time.time},reset:function(){this.isDown=!1,this.isUp=!0,this.timeDown=this.game.time.time,this.repeats=0,this.altKey=!1,this.shiftKey=!1,this.ctrlKey=!1},destroy:function(){this.onDown.dispose(),this.onUp.dispose(),this.onFloat.dispose(),this.parent=null,this.game=null}},c.DeviceButton.prototype.constructor=c.DeviceButton,Object.defineProperty(c.DeviceButton.prototype,"duration",{get:function(){return this.isUp?-1:this.game.time.time-this.timeDown}}),c.Pointer=function(a,b,d){this.game=a,this.id=b,this.type=c.POINTER,this.exists=!0,this.identifier=0,this.pointerId=null,this.pointerMode=d||c.PointerMode.CURSOR|c.PointerMode.CONTACT,this.target=null,this.button=null,this.leftButton=new c.DeviceButton(this,c.Pointer.LEFT_BUTTON),this.middleButton=new c.DeviceButton(this,c.Pointer.MIDDLE_BUTTON),this.rightButton=new c.DeviceButton(this,c.Pointer.RIGHT_BUTTON),this.backButton=new c.DeviceButton(this,c.Pointer.BACK_BUTTON),this.forwardButton=new c.DeviceButton(this,c.Pointer.FORWARD_BUTTON),this.eraserButton=new c.DeviceButton(this,c.Pointer.ERASER_BUTTON),this._holdSent=!1,this._history=[],this._nextDrop=0,this._stateReset=!1,this.withinGame=!1,this.clientX=-1,this.clientY=-1,this.pageX=-1,this.pageY=-1,this.screenX=-1,this.screenY=-1,this.rawMovementX=0,this.rawMovementY=0,this.movementX=0,this.movementY=0,this.x=-1,this.y=-1,this.isMouse=0===b,this.isDown=!1,this.isUp=!0,this.timeDown=0,this.timeUp=0,this.previousTapTime=0,this.totalTouches=0,this.msSinceLastClick=Number.MAX_VALUE,this.targetObject=null,this.interactiveCandidates=[],this.active=!1,this.dirty=!1,this.position=new c.Point,this.positionDown=new c.Point,this.positionUp=new c.Point,this.circle=new c.Circle(0,0,44),this._clickTrampolines=null,this._trampolineTargetObject=null},c.Pointer.NO_BUTTON=0,c.Pointer.LEFT_BUTTON=1,c.Pointer.RIGHT_BUTTON=2,c.Pointer.MIDDLE_BUTTON=4,c.Pointer.BACK_BUTTON=8,c.Pointer.FORWARD_BUTTON=16,c.Pointer.ERASER_BUTTON=32,c.Pointer.prototype={resetButtons:function(){this.isDown=!1,this.isUp=!0,this.isMouse&&(this.leftButton.reset(),this.middleButton.reset(),this.rightButton.reset(),this.backButton.reset(),this.forwardButton.reset(),this.eraserButton.reset())},processButtonsDown:function(a,b){c.Pointer.LEFT_BUTTON&a&&this.leftButton.start(b),c.Pointer.RIGHT_BUTTON&a&&this.rightButton.start(b),c.Pointer.MIDDLE_BUTTON&a&&this.middleButton.start(b),c.Pointer.BACK_BUTTON&a&&this.backButton.start(b),c.Pointer.FORWARD_BUTTON&a&&this.forwardButton.start(b),c.Pointer.ERASER_BUTTON&a&&this.eraserButton.start(b)},processButtonsUp:function(a,b){a===c.Mouse.LEFT_BUTTON&&this.leftButton.stop(b),a===c.Mouse.RIGHT_BUTTON&&this.rightButton.stop(b),a===c.Mouse.MIDDLE_BUTTON&&this.middleButton.stop(b),a===c.Mouse.BACK_BUTTON&&this.backButton.stop(b),a===c.Mouse.FORWARD_BUTTON&&this.forwardButton.stop(b),5===a&&this.eraserButton.stop(b)},updateButtons:function(a){this.button=a.button;var b="down"===a.type.toLowerCase().substr(-4);void 0!==a.buttons?b?this.processButtonsDown(a.buttons,a):this.processButtonsUp(a.button,a):b?this.leftButton.start(a):(this.leftButton.stop(a),this.rightButton.stop(a)),1===a.buttons&&a.ctrlKey&&this.leftButton.isDown&&(this.leftButton.stop(a),this.rightButton.start(a)),this.isUp=!0,this.isDown=!1,(this.leftButton.isDown||this.rightButton.isDown||this.middleButton.isDown||this.backButton.isDown||this.forwardButton.isDown||this.eraserButton.isDown)&&(this.isUp=!1,this.isDown=!0)},start:function(a){var b=this.game.input;return a.pointerId&&(this.pointerId=a.pointerId),this.identifier=a.identifier,this.target=a.target,this.isMouse?this.updateButtons(a):(this.isDown=!0,this.isUp=!1),this.active=!0,this.withinGame=!0,this.dirty=!1,this._history=[],this._clickTrampolines=null,this._trampolineTargetObject=null,this.msSinceLastClick=this.game.time.time-this.timeDown,this.timeDown=this.game.time.time,this._holdSent=!1,this.move(a,!0),this.positionDown.setTo(this.x,this.y),(b.multiInputOverride===c.Input.MOUSE_OVERRIDES_TOUCH||b.multiInputOverride===c.Input.MOUSE_TOUCH_COMBINE||b.multiInputOverride===c.Input.TOUCH_OVERRIDES_MOUSE&&0===b.totalActivePointers)&&(b.x=this.x,b.y=this.y,b.position.setTo(this.x,this.y),b.onDown.dispatch(this,a),b.resetSpeed(this.x,this.y)),this._stateReset=!1,this.totalTouches++,null!==this.targetObject&&this.targetObject._touchedHandler(this),this},update:function(){var a=this.game.input;this.active&&(this.dirty&&(a.interactiveItems.total>0&&this.processInteractiveObjects(!1),this.dirty=!1),this._holdSent===!1&&this.duration>=a.holdRate&&((a.multiInputOverride===c.Input.MOUSE_OVERRIDES_TOUCH||a.multiInputOverride===c.Input.MOUSE_TOUCH_COMBINE||a.multiInputOverride===c.Input.TOUCH_OVERRIDES_MOUSE&&0===a.totalActivePointers)&&a.onHold.dispatch(this),this._holdSent=!0),a.recordPointerHistory&&this.game.time.time>=this._nextDrop&&(this._nextDrop=this.game.time.time+a.recordRate,this._history.push({x:this.position.x,y:this.position.y}),this._history.length>a.recordLimit&&this._history.shift()))},move:function(a,b){var d=this.game.input;if(!d.pollLocked){if(void 0===b&&(b=!1),void 0!==a.button&&(this.button=a.button),b&&this.isMouse&&this.updateButtons(a),this.clientX=a.clientX,this.clientY=a.clientY,this.pageX=a.pageX,this.pageY=a.pageY,this.screenX=a.screenX,this.screenY=a.screenY,this.isMouse&&d.mouse.locked&&!b&&(this.rawMovementX=a.movementX||a.mozMovementX||a.webkitMovementX||0,this.rawMovementY=a.movementY||a.mozMovementY||a.webkitMovementY||0,this.movementX+=this.rawMovementX,this.movementY+=this.rawMovementY),this.x=(this.pageX-this.game.scale.offset.x)*d.scale.x,this.y=(this.pageY-this.game.scale.offset.y)*d.scale.y,this.position.setTo(this.x,this.y),this.circle.x=this.x,this.circle.y=this.y,(d.multiInputOverride===c.Input.MOUSE_OVERRIDES_TOUCH||d.multiInputOverride===c.Input.MOUSE_TOUCH_COMBINE||d.multiInputOverride===c.Input.TOUCH_OVERRIDES_MOUSE&&0===d.totalActivePointers)&&(d.activePointer=this,d.x=this.x,d.y=this.y,d.position.setTo(d.x,d.y),d.circle.x=d.x,d.circle.y=d.y),this.withinGame=this.game.scale.bounds.contains(this.pageX,this.pageY),this.game.paused)return this;for(var e=d.moveCallbacks.length;e--;)d.moveCallbacks[e].callback.call(d.moveCallbacks[e].context,this,this.x,this.y,b);return null!==this.targetObject&&this.targetObject.isDragged===!0?this.targetObject.update(this)===!1&&(this.targetObject=null):d.interactiveItems.total>0&&this.processInteractiveObjects(b),this}},processInteractiveObjects:function(a){var b=0,c=-1,d=null,e=this.game.input.interactiveItems.first;for(this.interactiveCandidates=[];e;)e.checked=!1,e.validForInput(c,b,!1)&&(e.checked=!0,(a&&e.checkPointerDown(this,!0)||!a&&e.checkPointerOver(this,!0))&&(b=e.sprite.renderOrderID,c=e.priorityID,d=e,this.interactiveCandidates.push(e))),e=this.game.input.interactiveItems.next;for(e=this.game.input.interactiveItems.first;e;)!e.checked&&e.validForInput(c,b,!0)&&(a&&e.checkPointerDown(this,!1)||!a&&e.checkPointerOver(this,!1))&&(b=e.sprite.renderOrderID,c=e.priorityID,d=e,this.interactiveCandidates.push(e)),e=this.game.input.interactiveItems.next;return this.game.input.customCandidateHandler&&(d=this.game.input.customCandidateHandler.call(this.game.input.customCandidateHandlerContext,this,this.interactiveCandidates,d)),this.swapTarget(d,!1),null!==this.targetObject},swapTarget:function(a,b){void 0===b&&(b=!1),null===a?this.targetObject&&(this.targetObject._pointerOutHandler(this,b),this.targetObject=null):null===this.targetObject?(this.targetObject=a,a._pointerOverHandler(this,b)):this.targetObject===a?a.update(this)===!1&&(this.targetObject=null):(this.targetObject._pointerOutHandler(this,b),this.targetObject=a,this.targetObject._pointerOverHandler(this,b))},leave:function(a){this.withinGame=!1,this.move(a,!1)},stop:function(a){var b=this.game.input;return this._stateReset&&this.withinGame?void a.preventDefault():(this.timeUp=this.game.time.time,(b.multiInputOverride===c.Input.MOUSE_OVERRIDES_TOUCH||b.multiInputOverride===c.Input.MOUSE_TOUCH_COMBINE||b.multiInputOverride===c.Input.TOUCH_OVERRIDES_MOUSE&&0===b.totalActivePointers)&&(b.onUp.dispatch(this,a),this.duration>=0&&this.duration<=b.tapRate&&(this.timeUp-this.previousTapTime0&&(this.active=!1),this.withinGame=this.game.scale.bounds.contains(a.pageX,a.pageY),this.pointerId=null,this.identifier=null,this.positionUp.setTo(this.x,this.y),this.isMouse===!1&&b.currentPointers--,b.interactiveItems.callAll("_releasedHandler",this),this._clickTrampolines&&(this._trampolineTargetObject=this.targetObject),this.targetObject=null,this)},justPressed:function(a){return a=a||this.game.input.justPressedRate,this.isDown===!0&&this.timeDown+a>this.game.time.time},justReleased:function(a){return a=a||this.game.input.justReleasedRate,this.isUp&&this.timeUp+a>this.game.time.time},addClickTrampoline:function(a,b,c,d){if(this.isDown){for(var e=this._clickTrampolines=this._clickTrampolines||[],f=0;fd;d++)this._pointerData[d]={id:d,x:0,y:0,isDown:!1,isUp:!1,isOver:!1,isOut:!1,timeOver:0,timeOut:0,timeDown:0,timeUp:0,downDuration:0,isDragged:!1};this.snapOffset=new c.Point,this.enabled=!0,this._wasEnabled=!0}return this.sprite.events.onAddedToGroup.add(this.addedToGroup,this),this.sprite.events.onRemovedFromGroup.add(this.removedFromGroup,this),this.flagged=!1,this.sprite},addedToGroup:function(){this._dragPhase||this._wasEnabled&&!this.enabled&&this.start()},removedFromGroup:function(){this._dragPhase||(this.enabled?(this._wasEnabled=!0,this.stop()):this._wasEnabled=!1)},reset:function(){this.enabled=!1,this.flagged=!1;for(var a=0;10>a;a++)this._pointerData[a]={id:a,x:0,y:0,isDown:!1,isUp:!1,isOver:!1,isOut:!1,timeOver:0,timeOut:0,timeDown:0,timeUp:0,downDuration:0,isDragged:!1}},stop:function(){this.enabled!==!1&&(this.enabled=!1,this.game.input.interactiveItems.remove(this))},destroy:function(){this.sprite&&(this._setHandCursor&&(this.game.canvas.style.cursor="default",this._setHandCursor=!1),this.enabled=!1,this.game.input.interactiveItems.remove(this),this._pointerData.length=0,this.boundsRect=null,this.boundsSprite=null,this.sprite=null)},validForInput:function(a,b,c){return void 0===c&&(c=!0),!this.enabled||0===this.sprite.scale.x||0===this.sprite.scale.y||this.priorityIDa||this.priorityID===a&&this.sprite.renderOrderID>b:!1},isPixelPerfect:function(){return this.pixelPerfectClick||this.pixelPerfectOver},pointerX:function(a){return a=a||0,this._pointerData[a].x},pointerY:function(a){return a=a||0,this._pointerData[a].y},pointerDown:function(a){return a=a||0,this._pointerData[a].isDown},pointerUp:function(a){return a=a||0,this._pointerData[a].isUp},pointerTimeDown:function(a){return a=a||0,this._pointerData[a].timeDown},pointerTimeUp:function(a){return a=a||0,this._pointerData[a].timeUp},pointerOver:function(a){if(!this.enabled)return!1;if(void 0===a){for(var b=0;10>b;b++)if(this._pointerData[b].isOver)return!0;return!1}return this._pointerData[a].isOver},pointerOut:function(a){if(!this.enabled)return!1;if(void 0!==a)return this._pointerData[a].isOut;for(var b=0;10>b;b++)if(this._pointerData[b].isOut)return!0},pointerTimeOver:function(a){return a=a||0,this._pointerData[a].timeOver},pointerTimeOut:function(a){return a=a||0,this._pointerData[a].timeOut},pointerDragged:function(a){return a=a||0,this._pointerData[a].isDragged},checkPointerDown:function(a,b){return a.isDown&&this.enabled&&this.sprite&&this.sprite.parent&&this.sprite.visible&&this.sprite.parent.visible&&0!==this.sprite.worldScale.x&&0!==this.sprite.worldScale.y&&this.game.input.hitTest(this.sprite,a,this._tempPoint)?(void 0===b&&(b=!1),!b&&this.pixelPerfectClick?this.checkPixel(this._tempPoint.x,this._tempPoint.y):!0):!1},checkPointerOver:function(a,b){return this.enabled&&this.sprite&&this.sprite.parent&&this.sprite.visible&&this.sprite.parent.visible&&0!==this.sprite.worldScale.x&&0!==this.sprite.worldScale.y&&this.game.input.hitTest(this.sprite,a,this._tempPoint)?(void 0===b&&(b=!1),!b&&this.pixelPerfectOver?this.checkPixel(this._tempPoint.x,this._tempPoint.y):!0):!1},checkPixel:function(a,b,c){if(this.sprite.texture.baseTexture.source){if(null===a&&null===b){this.game.input.getLocalPosition(this.sprite,c,this._tempPoint);var a=this._tempPoint.x,b=this._tempPoint.y}if(0!==this.sprite.anchor.x&&(a-=-this.sprite.texture.frame.width*this.sprite.anchor.x),0!==this.sprite.anchor.y&&(b-=-this.sprite.texture.frame.height*this.sprite.anchor.y),a+=this.sprite.texture.frame.x,b+=this.sprite.texture.frame.y,this.sprite.texture.trim&&(a-=this.sprite.texture.trim.x,b-=this.sprite.texture.trim.y,athis.sprite.texture.crop.right||bthis.sprite.texture.crop.bottom))return this._dx=a,this._dy=b,!1;this._dx=a,this._dy=b,this.game.input.hitContext.clearRect(0,0,1,1),this.game.input.hitContext.drawImage(this.sprite.texture.baseTexture.source,a,b,1,1,0,0,1,1);var d=this.game.input.hitContext.getImageData(0,0,1,1);if(d.data[3]>=this.pixelPerfectAlpha)return!0}return!1},update:function(a){return null!==this.sprite&&void 0!==this.sprite.parent?this.enabled&&this.sprite.visible&&this.sprite.parent.visible?this._pendingDrag?(this._dragDistancePass||(this._dragDistancePass=c.Math.distance(a.x,a.y,this.downPoint.x,this.downPoint.y)>=this.dragDistanceThreshold),this._dragDistancePass&&this._dragTimePass&&this.startDrag(a),!0):this.draggable&&this._draggedPointerID===a.id?this.updateDrag(a,!1):this._pointerData[a.id].isOver?this.checkPointerOver(a)?(this._pointerData[a.id].x=a.x-this.sprite.x,this._pointerData[a.id].y=a.y-this.sprite.y,!0):(this._pointerOutHandler(a),!1):void 0:(this._pointerOutHandler(a),!1):void 0},_pointerOverHandler:function(a,b){if(null!==this.sprite){var d=this._pointerData[a.id];if(d.isOver===!1||a.dirty){var e=d.isOver===!1;d.isOver=!0,d.isOut=!1,d.timeOver=this.game.time.time,d.x=a.x-this.sprite.x,d.y=a.y-this.sprite.y,this.useHandCursor&&d.isDragged===!1&&(this.game.canvas.style.cursor="pointer",this._setHandCursor=!0),!b&&e&&this.sprite&&this.sprite.events&&this.sprite.events.onInputOver$dispatch(this.sprite,a),this.sprite.parent&&this.sprite.parent.type===c.GROUP&&this.sprite.parent.onChildInputOver.dispatch(this.sprite,a)}}},_pointerOutHandler:function(a,b){if(null!==this.sprite){var d=this._pointerData[a.id];d.isOver=!1,d.isOut=!0,d.timeOut=this.game.time.time,this.useHandCursor&&d.isDragged===!1&&(this.game.canvas.style.cursor="default",this._setHandCursor=!1),!b&&this.sprite&&this.sprite.events&&(this.sprite.events.onInputOut$dispatch(this.sprite,a),this.sprite&&this.sprite.parent&&this.sprite.parent.type===c.GROUP&&this.sprite.parent.onChildInputOut.dispatch(this.sprite,a))}},_touchedHandler:function(a){if(null!==this.sprite){var b=this._pointerData[a.id];if(!b.isDown&&b.isOver){if(this.pixelPerfectClick&&!this.checkPixel(null,null,a))return;if(b.isDown=!0,b.isUp=!1,b.timeDown=this.game.time.time,this.downPoint.set(a.x,a.y),a.dirty=!0,this.sprite&&this.sprite.events&&(this.sprite.events.onInputDown$dispatch(this.sprite,a),this.sprite&&this.sprite.parent&&this.sprite.parent.type===c.GROUP&&this.sprite.parent.onChildInputDown.dispatch(this.sprite,a),null===this.sprite))return;this.draggable&&this.isDragged===!1&&(0===this.dragTimeThreshold&&0===this.dragDistanceThreshold?this.startDrag(a):(this._pendingDrag=!0,this._dragDistancePass=0===this.dragDistanceThreshold,this.dragTimeThreshold>0?(this._dragTimePass=!1,this.game.time.events.add(this.dragTimeThreshold,this.dragTimeElapsed,this,a)):this._dragTimePass=!0)),this.bringToTop&&this.sprite.bringToTop()}}},dragTimeElapsed:function(a){this._dragTimePass=!0,this._pendingDrag&&this.sprite&&this._dragDistancePass&&this.startDrag(a)},_releasedHandler:function(a){if(null!==this.sprite){var b=this._pointerData[a.id];if(b.isDown&&a.isUp){b.isDown=!1,b.isUp=!0,b.timeUp=this.game.time.time,b.downDuration=b.timeUp-b.timeDown;var d=this.checkPointerOver(a);this.sprite&&this.sprite.events&&(this.dragStopBlocksInputUp&&(!this.dragStopBlocksInputUp||this.draggable&&this.isDragged&&this._draggedPointerID===a.id)||this.sprite.events.onInputUp$dispatch(this.sprite,a,d),this.sprite&&this.sprite.parent&&this.sprite.parent.type===c.GROUP&&this.sprite.parent.onChildInputUp.dispatch(this.sprite,a,d),d&&(d=this.checkPointerOver(a))),b.isOver=d,!d&&this.useHandCursor&&(this.game.canvas.style.cursor="default",this._setHandCursor=!1),a.dirty=!0,this._pendingDrag=!1,this.draggable&&this.isDragged&&this._draggedPointerID===a.id&&this.stopDrag(a)}}},updateDrag:function(a,b){if(void 0===b&&(b=!1),a.isUp)return this.stopDrag(a),!1;var c=this.globalToLocalX(a.x)+this._dragPoint.x+this.dragOffset.x,d=this.globalToLocalY(a.y)+this._dragPoint.y+this.dragOffset.y;if(this.sprite.fixedToCamera)this.allowHorizontalDrag&&(this.sprite.cameraOffset.x=c),this.allowVerticalDrag&&(this.sprite.cameraOffset.y=d),this.boundsRect&&this.checkBoundsRect(),this.boundsSprite&&this.checkBoundsSprite(),this.snapOnDrag&&(this.sprite.cameraOffset.x=Math.round((this.sprite.cameraOffset.x-this.snapOffsetX%this.snapX)/this.snapX)*this.snapX+this.snapOffsetX%this.snapX,this.sprite.cameraOffset.y=Math.round((this.sprite.cameraOffset.y-this.snapOffsetY%this.snapY)/this.snapY)*this.snapY+this.snapOffsetY%this.snapY,this.snapPoint.set(this.sprite.cameraOffset.x,this.sprite.cameraOffset.y));else{var e=this.game.camera.x-this._pointerData[a.id].camX,f=this.game.camera.y-this._pointerData[a.id].camY;this.allowHorizontalDrag&&(this.sprite.x=c+e),this.allowVerticalDrag&&(this.sprite.y=d+f),this.boundsRect&&this.checkBoundsRect(),this.boundsSprite&&this.checkBoundsSprite(),this.snapOnDrag&&(this.sprite.x=Math.round((this.sprite.x-this.snapOffsetX%this.snapX)/this.snapX)*this.snapX+this.snapOffsetX%this.snapX,this.sprite.y=Math.round((this.sprite.y-this.snapOffsetY%this.snapY)/this.snapY)*this.snapY+this.snapOffsetY%this.snapY,this.snapPoint.set(this.sprite.x,this.sprite.y))}return this.sprite.events.onDragUpdate.dispatch(this.sprite,a,c,d,this.snapPoint,b),!0},justOver:function(a,b){return a=a||0,b=b||500,this._pointerData[a].isOver&&this.overDuration(a)a;a++)this._pointerData[a].isDragged=!1;this.draggable=!1,this.isDragged=!1,this._draggedPointerID=-1,this._pendingDrag=!1},startDrag:function(a){var b=this.sprite.x,c=this.sprite.y;if(this.isDragged=!0,this._draggedPointerID=a.id,this._pointerData[a.id].camX=this.game.camera.x,this._pointerData[a.id].camY=this.game.camera.y,this._pointerData[a.id].isDragged=!0,this.sprite.fixedToCamera){if(this.dragFromCenter){var d=this.sprite.getBounds();this.sprite.cameraOffset.x=this.globalToLocalX(a.x)+(this.sprite.cameraOffset.x-d.centerX),this.sprite.cameraOffset.y=this.globalToLocalY(a.y)+(this.sprite.cameraOffset.y-d.centerY)}this._dragPoint.setTo(this.sprite.cameraOffset.x-a.x,this.sprite.cameraOffset.y-a.y)}else{if(this.dragFromCenter){var d=this.sprite.getBounds();this.sprite.x=this.globalToLocalX(a.x)+(this.sprite.x-d.centerX),this.sprite.y=this.globalToLocalY(a.y)+(this.sprite.y-d.centerY)}this._dragPoint.setTo(this.sprite.x-this.globalToLocalX(a.x),this.sprite.y-this.globalToLocalY(a.y))}this.updateDrag(a,!0),this.bringToTop&&(this._dragPhase=!0,this.sprite.bringToTop()),this.dragStartPoint.set(b,c),this.sprite.events.onDragStart$dispatch(this.sprite,a,b,c),this._pendingDrag=!1},globalToLocalX:function(a){return this.scaleLayer&&(a-=this.game.scale.grid.boundsFluid.x,a*=this.game.scale.grid.scaleFluidInversed.x),a},globalToLocalY:function(a){return this.scaleLayer&&(a-=this.game.scale.grid.boundsFluid.y,a*=this.game.scale.grid.scaleFluidInversed.y),a},stopDrag:function(a){this.isDragged=!1,this._draggedPointerID=-1,this._pointerData[a.id].isDragged=!1,this._dragPhase=!1,this._pendingDrag=!1,this.snapOnRelease&&(this.sprite.fixedToCamera?(this.sprite.cameraOffset.x=Math.round((this.sprite.cameraOffset.x-this.snapOffsetX%this.snapX)/this.snapX)*this.snapX+this.snapOffsetX%this.snapX,this.sprite.cameraOffset.y=Math.round((this.sprite.cameraOffset.y-this.snapOffsetY%this.snapY)/this.snapY)*this.snapY+this.snapOffsetY%this.snapY):(this.sprite.x=Math.round((this.sprite.x-this.snapOffsetX%this.snapX)/this.snapX)*this.snapX+this.snapOffsetX%this.snapX,this.sprite.y=Math.round((this.sprite.y-this.snapOffsetY%this.snapY)/this.snapY)*this.snapY+this.snapOffsetY%this.snapY)),this.sprite.events.onDragStop$dispatch(this.sprite,a),this.checkPointerOver(a)===!1&&this._pointerOutHandler(a)},setDragLock:function(a,b){void 0===a&&(a=!0),void 0===b&&(b=!0),this.allowHorizontalDrag=a,this.allowVerticalDrag=b},enableSnap:function(a,b,c,d,e,f){void 0===c&&(c=!0),void 0===d&&(d=!1),void 0===e&&(e=0),void 0===f&&(f=0),this.snapX=a,this.snapY=b,this.snapOffsetX=e,this.snapOffsetY=f,this.snapOnDrag=c,this.snapOnRelease=d},disableSnap:function(){this.snapOnDrag=!1,this.snapOnRelease=!1},checkBoundsRect:function(){this.sprite.fixedToCamera?(this.sprite.cameraOffset.xthis.boundsRect.right&&(this.sprite.cameraOffset.x=this.boundsRect.right-this.sprite.width),this.sprite.cameraOffset.ythis.boundsRect.bottom&&(this.sprite.cameraOffset.y=this.boundsRect.bottom-this.sprite.height)):(this.sprite.leftthis.boundsRect.right&&(this.sprite.x=this.boundsRect.right-(this.sprite.width-this.sprite.offsetX)),this.sprite.topthis.boundsRect.bottom&&(this.sprite.y=this.boundsRect.bottom-(this.sprite.height-this.sprite.offsetY)))},checkBoundsSprite:function(){this.sprite.fixedToCamera&&this.boundsSprite.fixedToCamera?(this.sprite.cameraOffset.xthis.boundsSprite.cameraOffset.x+this.boundsSprite.width&&(this.sprite.cameraOffset.x=this.boundsSprite.cameraOffset.x+this.boundsSprite.width-this.sprite.width),this.sprite.cameraOffset.ythis.boundsSprite.cameraOffset.y+this.boundsSprite.height&&(this.sprite.cameraOffset.y=this.boundsSprite.cameraOffset.y+this.boundsSprite.height-this.sprite.height)):(this.sprite.leftthis.boundsSprite.right&&(this.sprite.x=this.boundsSprite.right-(this.sprite.width-this.sprite.offsetX)),this.sprite.topthis.boundsSprite.bottom&&(this.sprite.y=this.boundsSprite.bottom-(this.sprite.height-this.sprite.offsetY)))}},c.InputHandler.prototype.constructor=c.InputHandler,c.Component=function(){},c.Component.Angle=function(){},c.Component.Angle.prototype={angle:{get:function(){return c.Math.wrapAngle(c.Math.radToDeg(this.rotation))},set:function(a){this.rotation=c.Math.degToRad(c.Math.wrapAngle(a))}}},c.Component.Animation=function(){},c.Component.Animation.prototype={play:function(a,b,c,d){return this.animations?this.animations.play(a,b,c,d):void 0}},c.Component.AutoCull=function(){},c.Component.AutoCull.prototype={autoCull:!1,inCamera:{get:function(){return this.autoCull||this.checkWorldBounds||(this._bounds.copyFrom(this.getBounds()),this._bounds.x+=this.game.camera.view.x,this._bounds.y+=this.game.camera.view.y),this.game.world.camera.view.intersects(this._bounds)}}},c.Component.Bounds=function(){},c.Component.Bounds.prototype={offsetX:{get:function(){return this.anchor.x*this.width}},offsetY:{get:function(){return this.anchor.y*this.height}},centerX:{get:function(){return this.x-this.offsetX+.5*this.width},set:function(a){this.x=a+this.offsetX-.5*this.width}},centerY:{get:function(){return this.y-this.offsetY+.5*this.height},set:function(a){this.y=a+this.offsetY-.5*this.height}},left:{get:function(){return this.x-this.offsetX},set:function(a){this.x=a+this.offsetX}},right:{get:function(){return this.x+this.width-this.offsetX},set:function(a){this.x=a-this.width+this.offsetX}},top:{get:function(){return this.y-this.offsetY},set:function(a){this.y=a+this.offsetY}},bottom:{get:function(){return this.y+this.height-this.offsetY},set:function(a){this.y=a-this.height+this.offsetY}},alignIn:function(a,b,d,e){switch(void 0===d&&(d=0),void 0===e&&(e=0),b){default:case c.TOP_LEFT:this.left=a.left-d,this.top=a.top-e;break;case c.TOP_CENTER:this.centerX=a.centerX+d,this.top=a.top-e;break;case c.TOP_RIGHT:this.right=a.right+d,this.top=a.top-e;break;case c.LEFT_CENTER:this.left=a.left-d,this.centerY=a.centerY+e;break;case c.CENTER:this.centerX=a.centerX+d,this.centerY=a.centerY+e;break;case c.RIGHT_CENTER:this.right=a.right+d,this.centerY=a.centerY+e;break;case c.BOTTOM_LEFT:this.left=a.left-d,this.bottom=a.bottom+e;break;case c.BOTTOM_CENTER:this.centerX=a.centerX+d,this.bottom=a.bottom+e;break;case c.BOTTOM_RIGHT:this.right=a.right+d,this.bottom=a.bottom+e}return this},alignTo:function(a,b,d,e){switch(void 0===d&&(d=0),void 0===e&&(e=0),b){default:case c.TOP_LEFT:this.left=a.left-d,this.bottom=a.top-e;break;case c.TOP_CENTER:this.centerX=a.centerX+d,this.bottom=a.top-e;break;case c.TOP_RIGHT:this.right=a.right+d,this.bottom=a.top-e;break;case c.LEFT_TOP:this.right=a.left-d,this.top=a.top-e;break;case c.LEFT_CENTER:this.right=a.left-d,this.centerY=a.centerY+e;break;case c.LEFT_BOTTOM:this.right=a.left-d,this.bottom=a.bottom+e;break;case c.RIGHT_TOP:this.left=a.right+d,this.top=a.top-e;break;case c.RIGHT_CENTER:this.left=a.right+d,this.centerY=a.centerY+e;break;case c.RIGHT_BOTTOM:this.left=a.right+d,this.bottom=a.bottom+e;break;case c.BOTTOM_LEFT:this.left=a.left-d,this.top=a.bottom+e;break;case c.BOTTOM_CENTER:this.centerX=a.centerX+d,this.top=a.bottom+e;break;case c.BOTTOM_RIGHT:this.right=a.right+d,this.top=a.bottom+e}return this}},c.Group.prototype.alignIn=c.Component.Bounds.prototype.alignIn,c.Group.prototype.alignTo=c.Component.Bounds.prototype.alignTo,c.Component.BringToTop=function(){},c.Component.BringToTop.prototype.bringToTop=function(){return this.parent&&this.parent.bringToTop(this),this},c.Component.BringToTop.prototype.sendToBack=function(){return this.parent&&this.parent.sendToBack(this),this},c.Component.BringToTop.prototype.moveUp=function(){return this.parent&&this.parent.moveUp(this),this},c.Component.BringToTop.prototype.moveDown=function(){return this.parent&&this.parent.moveDown(this),this},c.Component.Core=function(){},c.Component.Core.install=function(a){c.Utils.mixinPrototype(this,c.Component.Core.prototype),this.components={};for(var b=0;bthis.maxHealth&&(this.health=this.maxHealth),this},heal:function(a){return this.alive&&(this.health+=a,this.health>this.maxHealth&&(this.health=this.maxHealth)),this}},c.Component.InCamera=function(){},c.Component.InCamera.prototype={inCamera:{get:function(){return this.game.world.camera.view.intersects(this._bounds)}}},c.Component.InputEnabled=function(){},c.Component.InputEnabled.prototype={input:null,inputEnabled:{get:function(){return this.input&&this.input.enabled},set:function(a){a?null===this.input?(this.input=new c.InputHandler(this),this.input.start()):this.input&&!this.input.enabled&&this.input.start():this.input&&this.input.enabled&&this.input.stop()}}},c.Component.InWorld=function(){},c.Component.InWorld.preUpdate=function(){if(this.autoCull||this.checkWorldBounds){if(this._bounds.copyFrom(this.getBounds()),this._bounds.x+=this.game.camera.view.x,this._bounds.y+=this.game.camera.view.y,this.autoCull)if(this.game.world.camera.view.intersects(this._bounds))this.renderable=!0,this.game.world.camera.totalInView++;else if(this.renderable=!1,this.outOfCameraBoundsKill)return this.kill(),!1;if(this.checkWorldBounds)if(this._outOfBoundsFired&&this.game.world.bounds.intersects(this._bounds))this._outOfBoundsFired=!1,this.events.onEnterBounds$dispatch(this);else if(!this._outOfBoundsFired&&!this.game.world.bounds.intersects(this._bounds)&&(this._outOfBoundsFired=!0,this.events.onOutOfBounds$dispatch(this),this.outOfBoundsKill))return this.kill(),!1}return!0},c.Component.InWorld.prototype={checkWorldBounds:!1,outOfBoundsKill:!1,outOfCameraBoundsKill:!1,_outOfBoundsFired:!1,inWorld:{get:function(){return this.game.world.bounds.intersects(this.getBounds())}}},c.Component.LifeSpan=function(){},c.Component.LifeSpan.preUpdate=function(){return this.lifespan>0&&(this.lifespan-=this.game.time.physicsElapsedMS,this.lifespan<=0)?(this.kill(),!1):!0},c.Component.LifeSpan.prototype={alive:!0,lifespan:0,revive:function(a){return void 0===a&&(a=100),this.alive=!0,this.exists=!0,this.visible=!0,"function"==typeof this.setHealth&&this.setHealth(a),this.events&&this.events.onRevived$dispatch(this),this},kill:function(){return this.alive=!1,this.exists=!1,this.visible=!1,this.events&&this.events.onKilled$dispatch(this),this}},c.Component.LoadTexture=function(){},c.Component.LoadTexture.prototype={customRender:!1,_frame:null,loadTexture:function(a,b,d){a===c.PENDING_ATLAS?(a=b,b=0):b=b||0,(d||void 0===d)&&this.animations&&this.animations.stop(),this.key=a,this.customRender=!1;var e=this.game.cache,f=!0,g=!this.texture.baseTexture.scaleMode;if(c.RenderTexture&&a instanceof c.RenderTexture)this.key=a.key,this.setTexture(a);else if(c.BitmapData&&a instanceof c.BitmapData)this.customRender=!0,this.setTexture(a.texture),f=e.hasFrameData(a.key,c.Cache.BITMAPDATA)?!this.animations.loadFrameData(e.getFrameData(a.key,c.Cache.BITMAPDATA),b):!this.animations.loadFrameData(a.frameData,0);else if(c.Video&&a instanceof c.Video){this.customRender=!0;var h=a.texture.valid;this.setTexture(a.texture),this.setFrame(a.texture.frame.clone()),a.onChangeSource.add(this.resizeFrame,this),this.texture.valid=h}else if(c.Tilemap&&a instanceof c.TilemapLayer)this.setTexture(PIXI.Texture.fromCanvas(a.canvas));else if(a instanceof PIXI.Texture)this.setTexture(a);else{var i=e.getImage(a,!0);this.key=i.key,this.setTexture(new PIXI.Texture(i.base)),"__default"===a?this.texture.baseTexture.skipRender=!0:this.texture.baseTexture.skipRender=!1,f=!this.animations.loadFrameData(i.frameData,b)}f&&(this._frame=c.Rectangle.clone(this.texture.frame)),g||(this.texture.baseTexture.scaleMode=1)},setFrame:function(a){this._frame=a,this.texture.frame.x=a.x,this.texture.frame.y=a.y,this.texture.frame.width=a.width,this.texture.frame.height=a.height,this.texture.crop.x=a.x,this.texture.crop.y=a.y,this.texture.crop.width=a.width,this.texture.crop.height=a.height,a.trimmed?(this.texture.trim?(this.texture.trim.x=a.spriteSourceSizeX,this.texture.trim.y=a.spriteSourceSizeY,this.texture.trim.width=a.sourceSizeW,this.texture.trim.height=a.sourceSizeH):this.texture.trim={x:a.spriteSourceSizeX,y:a.spriteSourceSizeY,width:a.sourceSizeW,height:a.sourceSizeH},this.texture.width=a.sourceSizeW,this.texture.height=a.sourceSizeH,this.texture.frame.width=a.sourceSizeW,this.texture.frame.height=a.sourceSizeH):!a.trimmed&&this.texture.trim&&(this.texture.trim=null),this.cropRect&&this.updateCrop(),this.texture.requiresReTint=!0,this.texture._updateUvs(),this.tilingTexture&&(this.refreshTexture=!0)},resizeFrame:function(a,b,c){this.texture.frame.resize(b,c),this.texture.setFrame(this.texture.frame)},resetFrame:function(){this._frame&&this.setFrame(this._frame)},frame:{get:function(){return this.animations.frame},set:function(a){this.animations.frame=a}},frameName:{get:function(){return this.animations.frameName},set:function(a){this.animations.frameName=a}}},c.Component.Overlap=function(){},c.Component.Overlap.prototype={overlap:function(a){return c.Rectangle.intersects(this.getBounds(),a.getBounds())}},c.Component.PhysicsBody=function(){},c.Component.PhysicsBody.preUpdate=function(){return this.fresh&&this.exists?(this.world.setTo(this.parent.position.x+this.position.x,this.parent.position.y+this.position.y),this.worldTransform.tx=this.world.x,this.worldTransform.ty=this.world.y,this.previousPosition.set(this.world.x,this.world.y),this.previousRotation=this.rotation,this.body&&this.body.preUpdate(),this.fresh=!1,!1):(this.previousPosition.set(this.world.x,this.world.y),this.previousRotation=this.rotation,this._exists&&this.parent.exists?!0:(this.renderOrderID=-1,!1))},c.Component.PhysicsBody.postUpdate=function(){this.exists&&this.body&&this.body.postUpdate()},c.Component.PhysicsBody.prototype={body:null,x:{get:function(){return this.position.x},set:function(a){this.position.x=a,this.body&&!this.body.dirty&&(this.body._reset=!0)}},y:{get:function(){return this.position.y},set:function(a){this.position.y=a,this.body&&!this.body.dirty&&(this.body._reset=!0)}}},c.Component.Reset=function(){},c.Component.Reset.prototype.reset=function(a,b,c){return void 0===c&&(c=1),this.world.set(a,b),this.position.set(a,b),this.fresh=!0,this.exists=!0,this.visible=!0,this.renderable=!0,this.components.InWorld&&(this._outOfBoundsFired=!1),this.components.LifeSpan&&(this.alive=!0,this.health=c),this.components.PhysicsBody&&this.body&&this.body.reset(a,b,!1,!1),this},c.Component.ScaleMinMax=function(){},c.Component.ScaleMinMax.prototype={transformCallback:null,transformCallbackContext:this,scaleMin:null,scaleMax:null,checkTransform:function(a){this.scaleMin&&(a.athis.scaleMax.x&&(a.a=this.scaleMax.x),a.d>this.scaleMax.y&&(a.d=this.scaleMax.y))},setScaleMinMax:function(a,b,d,e){void 0===b?b=d=e=a:void 0===d&&(d=e=b,b=a),null===a?this.scaleMin=null:this.scaleMin?this.scaleMin.set(a,b):this.scaleMin=new c.Point(a,b),null===d?this.scaleMax=null:this.scaleMax?this.scaleMax.set(d,e):this.scaleMax=new c.Point(d,e),null===this.scaleMin?this.transformCallback=null:(this.transformCallback=this.checkTransform,this.transformCallbackContext=this)}},c.Component.Smoothed=function(){},c.Component.Smoothed.prototype={smoothed:{get:function(){return!this.texture.baseTexture.scaleMode},set:function(a){a?this.texture&&(this.texture.baseTexture.scaleMode=0):this.texture&&(this.texture.baseTexture.scaleMode=1)}}},c.GameObjectFactory=function(a){this.game=a,this.world=this.game.world},c.GameObjectFactory.prototype={existing:function(a){return this.world.add(a)},weapon:function(a,b,d,e){var f=this.game.plugins.add(c.Weapon);return f.createBullets(a,b,d,e),f},image:function(a,b,d,e,f){return void 0===f&&(f=this.world),f.add(new c.Image(this.game,a,b,d,e))},sprite:function(a,b,c,d,e){return void 0===e&&(e=this.world),e.create(a,b,c,d)},creature:function(a,b,d,e,f){void 0===f&&(f=this.world);var g=new c.Creature(this.game,a,b,d,e);return f.add(g),g},tween:function(a){return this.game.tweens.create(a)},group:function(a,b,d,e,f){return new c.Group(this.game,a,b,d,e,f)},physicsGroup:function(a,b,d,e){return new c.Group(this.game,b,d,e,!0,a)},spriteBatch:function(a,b,d){return void 0===a&&(a=null),void 0===b&&(b="group"),void 0===d&&(d=!1),new c.SpriteBatch(this.game,a,b,d)},audio:function(a,b,c,d){return this.game.sound.add(a,b,c,d)},sound:function(a,b,c,d){return this.game.sound.add(a,b,c,d)},audioSprite:function(a){return this.game.sound.addSprite(a)},tileSprite:function(a,b,d,e,f,g,h){return void 0===h&&(h=this.world),h.add(new c.TileSprite(this.game,a,b,d,e,f,g))},rope:function(a,b,d,e,f,g){return void 0===g&&(g=this.world),g.add(new c.Rope(this.game,a,b,d,e,f))},text:function(a,b,d,e,f){return void 0===f&&(f=this.world),f.add(new c.Text(this.game,a,b,d,e))},button:function(a,b,d,e,f,g,h,i,j,k){return void 0===k&&(k=this.world),k.add(new c.Button(this.game,a,b,d,e,f,g,h,i,j))},graphics:function(a,b,d){return void 0===d&&(d=this.world),d.add(new c.Graphics(this.game,a,b))},emitter:function(a,b,d){return this.game.particles.add(new c.Particles.Arcade.Emitter(this.game,a,b,d))},retroFont:function(a,b,d,e,f,g,h,i,j){return new c.RetroFont(this.game,a,b,d,e,f,g,h,i,j)},bitmapText:function(a,b,d,e,f,g){return void 0===g&&(g=this.world),g.add(new c.BitmapText(this.game,a,b,d,e,f))},tilemap:function(a,b,d,e,f){return new c.Tilemap(this.game,a,b,d,e,f)},renderTexture:function(a,b,d,e){void 0!==d&&""!==d||(d=this.game.rnd.uuid()),void 0===e&&(e=!1);var f=new c.RenderTexture(this.game,a,b,d);return e&&this.game.cache.addRenderTexture(d,f),f},video:function(a,b){return new c.Video(this.game,a,b)},bitmapData:function(a,b,d,e){void 0===e&&(e=!1),void 0!==d&&""!==d||(d=this.game.rnd.uuid());var f=new c.BitmapData(this.game,d,a,b);return e&&this.game.cache.addBitmapData(d,f),f},filter:function(a){var b=Array.prototype.slice.call(arguments,1),a=new c.Filter[a](this.game);return a.init.apply(a,b),a},plugin:function(a){return this.game.plugins.add(a)}},c.GameObjectFactory.prototype.constructor=c.GameObjectFactory,c.GameObjectCreator=function(a){this.game=a,this.world=this.game.world},c.GameObjectCreator.prototype={image:function(a,b,d,e){return new c.Image(this.game,a,b,d,e)},sprite:function(a,b,d,e){return new c.Sprite(this.game,a,b,d,e)},tween:function(a){return new c.Tween(a,this.game,this.game.tweens)},group:function(a,b,d,e,f){return new c.Group(this.game,a,b,d,e,f)},spriteBatch:function(a,b,d){return void 0===b&&(b="group"),void 0===d&&(d=!1),new c.SpriteBatch(this.game,a,b,d)},audio:function(a,b,c,d){return this.game.sound.add(a,b,c,d)},audioSprite:function(a){return this.game.sound.addSprite(a)},sound:function(a,b,c,d){return this.game.sound.add(a,b,c,d)},tileSprite:function(a,b,d,e,f,g){return new c.TileSprite(this.game,a,b,d,e,f,g)},rope:function(a,b,d,e,f){return new c.Rope(this.game,a,b,d,e,f)},text:function(a,b,d,e){return new c.Text(this.game,a,b,d,e)},button:function(a,b,d,e,f,g,h,i,j){return new c.Button(this.game,a,b,d,e,f,g,h,i,j)},graphics:function(a,b){return new c.Graphics(this.game,a,b)},emitter:function(a,b,d){return new c.Particles.Arcade.Emitter(this.game,a,b,d)},retroFont:function(a,b,d,e,f,g,h,i,j){return new c.RetroFont(this.game,a,b,d,e,f,g,h,i,j)},bitmapText:function(a,b,d,e,f,g){return new c.BitmapText(this.game,a,b,d,e,f,g)},tilemap:function(a,b,d,e,f){return new c.Tilemap(this.game,a,b,d,e,f)},renderTexture:function(a,b,d,e){void 0!==d&&""!==d||(d=this.game.rnd.uuid()),void 0===e&&(e=!1);var f=new c.RenderTexture(this.game,a,b,d);return e&&this.game.cache.addRenderTexture(d,f),f},bitmapData:function(a,b,d,e){void 0===e&&(e=!1),void 0!==d&&""!==d||(d=this.game.rnd.uuid());var f=new c.BitmapData(this.game,d,a,b);return e&&this.game.cache.addBitmapData(d,f),f},filter:function(a){var b=Array.prototype.slice.call(arguments,1),a=new c.Filter[a](this.game);return a.init.apply(a,b),a}},c.GameObjectCreator.prototype.constructor=c.GameObjectCreator,c.Sprite=function(a,b,d,e,f){b=b||0,d=d||0,e=e||null,f=f||null,this.type=c.SPRITE,this.physicsType=c.SPRITE,PIXI.Sprite.call(this,c.Cache.DEFAULT),c.Component.Core.init.call(this,a,b,d,e,f)},c.Sprite.prototype=Object.create(PIXI.Sprite.prototype),c.Sprite.prototype.constructor=c.Sprite,c.Component.Core.install.call(c.Sprite.prototype,["Angle","Animation","AutoCull","Bounds","BringToTop","Crop","Delta","Destroy","FixedToCamera","Health","InCamera","InputEnabled","InWorld","LifeSpan","LoadTexture","Overlap","PhysicsBody","Reset","ScaleMinMax","Smoothed"]),c.Sprite.prototype.preUpdatePhysics=c.Component.PhysicsBody.preUpdate,c.Sprite.prototype.preUpdateLifeSpan=c.Component.LifeSpan.preUpdate,c.Sprite.prototype.preUpdateInWorld=c.Component.InWorld.preUpdate,c.Sprite.prototype.preUpdateCore=c.Component.Core.preUpdate,c.Sprite.prototype.preUpdate=function(){return this.preUpdatePhysics()&&this.preUpdateLifeSpan()&&this.preUpdateInWorld()?this.preUpdateCore():!1},c.Image=function(a,b,d,e,f){b=b||0,d=d||0,e=e||null,f=f||null,this.type=c.IMAGE,PIXI.Sprite.call(this,c.Cache.DEFAULT),c.Component.Core.init.call(this,a,b,d,e,f)},c.Image.prototype=Object.create(PIXI.Sprite.prototype),c.Image.prototype.constructor=c.Image,c.Component.Core.install.call(c.Image.prototype,["Angle","Animation","AutoCull","Bounds","BringToTop","Crop","Destroy","FixedToCamera","InputEnabled","LifeSpan","LoadTexture","Overlap","Reset","Smoothed"]),c.Image.prototype.preUpdateInWorld=c.Component.InWorld.preUpdate,c.Image.prototype.preUpdateCore=c.Component.Core.preUpdate,c.Image.prototype.preUpdate=function(){return this.preUpdateInWorld()?this.preUpdateCore():!1},c.Button=function(a,b,d,e,f,g,h,i,j,k){b=b||0,d=d||0,e=e||null,f=f||null,g=g||this,c.Image.call(this,a,b,d,e,i),this.type=c.BUTTON,this.physicsType=c.SPRITE,this._onOverFrame=null,this._onOutFrame=null,this._onDownFrame=null,this._onUpFrame=null,this.onOverSound=null,this.onOutSound=null,this.onDownSound=null,this.onUpSound=null,this.onOverSoundMarker="",this.onOutSoundMarker="",this.onDownSoundMarker="",this.onUpSoundMarker="",this.onInputOver=new c.Signal,this.onInputOut=new c.Signal,this.onInputDown=new c.Signal,this.onInputUp=new c.Signal,this.onOverMouseOnly=!0,this.justReleasedPreventsOver=c.PointerMode.TOUCH,this.freezeFrames=!1,this.forceOut=!1,this.inputEnabled=!0,this.input.start(0,!0),this.input.useHandCursor=!0,this.setFrames(h,i,j,k),null!==f&&this.onInputUp.add(f,g),this.events.onInputOver.add(this.onInputOverHandler,this),this.events.onInputOut.add(this.onInputOutHandler,this),this.events.onInputDown.add(this.onInputDownHandler,this),this.events.onInputUp.add(this.onInputUpHandler,this),this.events.onRemovedFromWorld.add(this.removedFromWorld,this)},c.Button.prototype=Object.create(c.Image.prototype),c.Button.prototype.constructor=c.Button;var f="Over",g="Out",h="Down",i="Up";c.Button.prototype.clearFrames=function(){this.setFrames(null,null,null,null)},c.Button.prototype.removedFromWorld=function(){this.inputEnabled=!1},c.Button.prototype.setStateFrame=function(a,b,c){var d="_on"+a+"Frame";null!==b?(this[d]=b,c&&this.changeStateFrame(a)):this[d]=null},c.Button.prototype.changeStateFrame=function(a){if(this.freezeFrames)return!1;var b="_on"+a+"Frame",c=this[b];return"string"==typeof c?(this.frameName=c,!0):"number"==typeof c?(this.frame=c,!0):!1},c.Button.prototype.setFrames=function(a,b,c,d){this.setStateFrame(f,a,this.input.pointerOver()),this.setStateFrame(g,b,!this.input.pointerOver()),this.setStateFrame(h,c,this.input.pointerDown()),this.setStateFrame(i,d,this.input.pointerUp())},c.Button.prototype.setStateSound=function(a,b,d){var e="on"+a+"Sound",f="on"+a+"SoundMarker";b instanceof c.Sound||b instanceof c.AudioSprite?(this[e]=b,this[f]="string"==typeof d?d:""):(this[e]=null,this[f]="")},c.Button.prototype.playStateSound=function(a){var b="on"+a+"Sound",c=this[b];if(c){var d="on"+a+"SoundMarker",e=this[d];return c.play(e),!0}return!1},c.Button.prototype.setSounds=function(a,b,c,d,e,j,k,l){this.setStateSound(f,a,b),this.setStateSound(g,e,j),this.setStateSound(h,c,d),this.setStateSound(i,k,l)},c.Button.prototype.setOverSound=function(a,b){this.setStateSound(f,a,b)},c.Button.prototype.setOutSound=function(a,b){this.setStateSound(g,a,b)},c.Button.prototype.setDownSound=function(a,b){this.setStateSound(h,a,b)},c.Button.prototype.setUpSound=function(a,b){this.setStateSound(i,a,b)},c.Button.prototype.onInputOverHandler=function(a,b){b.justReleased()&&(this.justReleasedPreventsOver&b.pointerMode)===b.pointerMode||(this.changeStateFrame(f),this.onOverMouseOnly&&!b.isMouse||(this.playStateSound(f),this.onInputOver&&this.onInputOver.dispatch(this,b)))},c.Button.prototype.onInputOutHandler=function(a,b){this.changeStateFrame(g),this.playStateSound(g),this.onInputOut&&this.onInputOut.dispatch(this,b)},c.Button.prototype.onInputDownHandler=function(a,b){this.changeStateFrame(h),this.playStateSound(h),this.onInputDown&&this.onInputDown.dispatch(this,b)},c.Button.prototype.onInputUpHandler=function(a,b,c){if(this.playStateSound(i),this.onInputUp&&this.onInputUp.dispatch(this,b,c),!this.freezeFrames)if(this.forceOut===!0||(this.forceOut&b.pointerMode)===b.pointerMode)this.changeStateFrame(g);else{var d=this.changeStateFrame(i);d||(c?this.changeStateFrame(f):this.changeStateFrame(g))}},c.SpriteBatch=function(a,b,d,e){void 0!==b&&null!==b||(b=a.world),PIXI.SpriteBatch.call(this),c.Group.call(this,a,b,d,e),this.type=c.SPRITEBATCH},c.SpriteBatch.prototype=c.Utils.extend(!0,c.SpriteBatch.prototype,PIXI.SpriteBatch.prototype,c.Group.prototype),c.SpriteBatch.prototype.constructor=c.SpriteBatch,c.TileSprite=function(){},c.Device=function(){this.deviceReadyAt=0,this.initialized=!1,this.desktop=!1,this.iOS=!1,this.iOSVersion=0,this.cocoonJS=!1,this.cocoonJSApp=!1,this.cordova=!1,this.node=!1,this.nodeWebkit=!1,this.electron=!1,this.ejecta=!1,this.crosswalk=!1,this.android=!1,this.chromeOS=!1,this.linux=!1,this.macOS=!1,this.windows=!1,this.windowsPhone=!1,this.canvas=!1,this.canvasBitBltShift=null,this.webGL=!1,this.file=!1,this.fileSystem=!1,this.localStorage=!1,this.worker=!1,this.css3D=!1,this.pointerLock=!1,this.typedArray=!1,this.vibration=!1,this.getUserMedia=!0,this.quirksMode=!1,this.touch=!1,this.mspointer=!1,this.wheelEvent=null,this.arora=!1,this.chrome=!1,this.chromeVersion=0,this.epiphany=!1,this.firefox=!1,this.firefoxVersion=0,this.ie=!1,this.ieVersion=0,this.trident=!1,this.tridentVersion=0,this.edge=!1,this.mobileSafari=!1,this.midori=!1,this.opera=!1,this.safari=!1,this.safariVersion=0,this.webApp=!1,this.silk=!1,this.audioData=!1,this.webAudio=!1,this.ogg=!1,this.opus=!1,this.mp3=!1,this.wav=!1,this.m4a=!1,this.webm=!1,this.dolby=!1,this.oggVideo=!1,this.h264Video=!1,this.mp4Video=!1,this.webmVideo=!1,this.vp9Video=!1,this.hlsVideo=!1,this.iPhone=!1,this.iPhone4=!1,this.iPad=!1,this.pixelRatio=0,this.littleEndian=!1,this.LITTLE_ENDIAN=!1,this.support32bit=!1,this.fullscreen=!1,this.requestFullscreen="",this.cancelFullscreen="",this.fullscreenKeyboard=!1},c.Device=new c.Device,c.Device.onInitialized=new c.Signal,c.Device.whenReady=function(a,b,c){var d=this._readyCheck;if(this.deviceReadyAt||!d)a.call(b,this);else if(d._monitor||c)d._queue=d._queue||[],d._queue.push([a,b]);else{d._monitor=d.bind(this),d._queue=d._queue||[],d._queue.push([a,b]);var e="undefined"!=typeof window.cordova,f=navigator.isCocoonJS;"complete"===document.readyState||"interactive"===document.readyState?window.setTimeout(d._monitor,0):e&&!f?document.addEventListener("deviceready",d._monitor,!1):(document.addEventListener("DOMContentLoaded",d._monitor,!1),window.addEventListener("load",d._monitor,!1))}},c.Device._readyCheck=function(){var a=this._readyCheck;if(document.body){if(!this.deviceReadyAt){this.deviceReadyAt=Date.now(),document.removeEventListener("deviceready",a._monitor),document.removeEventListener("DOMContentLoaded",a._monitor),window.removeEventListener("load",a._monitor),this._initialize(),this.initialized=!0,this.onInitialized.dispatch(this);for(var b;b=a._queue.shift();){var c=b[0],d=b[1];c.call(d,this)}this._readyCheck=null,this._initialize=null,this.onInitialized=null}}else window.setTimeout(a._monitor,20)},c.Device._initialize=function(){function a(){var a=navigator.userAgent;/Playstation Vita/.test(a)?l.vita=!0:/Kindle/.test(a)||/\bKF[A-Z][A-Z]+/.test(a)||/Silk.*Mobile Safari/.test(a)?l.kindle=!0:/Android/.test(a)?l.android=!0:/CrOS/.test(a)?l.chromeOS=!0:/iP[ao]d|iPhone/i.test(a)?(l.iOS=!0,navigator.appVersion.match(/OS (\d+)/),l.iOSVersion=parseInt(RegExp.$1,10)):/Linux/.test(a)?l.linux=!0:/Mac OS/.test(a)?l.macOS=!0:/Windows/.test(a)&&(l.windows=!0),(/Windows Phone/i.test(a)||/IEMobile/i.test(a))&&(l.android=!1,l.iOS=!1,l.macOS=!1,l.windows=!0,l.windowsPhone=!0);var b=/Silk/.test(a);(l.windows||l.macOS||l.linux&&!b||l.chromeOS)&&(l.desktop=!0),(l.windowsPhone||/Windows NT/i.test(a)&&/Touch/i.test(a))&&(l.desktop=!1)}function b(){l.canvas=!!window.CanvasRenderingContext2D||l.cocoonJS;try{l.localStorage=!!localStorage.getItem}catch(a){l.localStorage=!1}l.file=!!(window.File&&window.FileReader&&window.FileList&&window.Blob),l.fileSystem=!!window.requestFileSystem,l.webGL=function(){try{var a=document.createElement("canvas");return a.screencanvas=!1,!!window.WebGLRenderingContext&&(a.getContext("webgl")||a.getContext("experimental-webgl"))}catch(b){return!1}}(),l.webGL=!!l.webGL,l.worker=!!window.Worker,l.pointerLock="pointerLockElement"in document||"mozPointerLockElement"in document||"webkitPointerLockElement"in document,l.quirksMode="CSS1Compat"!==document.compatMode,navigator.getUserMedia=navigator.getUserMedia||navigator.webkitGetUserMedia||navigator.mozGetUserMedia||navigator.msGetUserMedia||navigator.oGetUserMedia,window.URL=window.URL||window.webkitURL||window.mozURL||window.msURL,l.getUserMedia=l.getUserMedia&&!!navigator.getUserMedia&&!!window.URL,l.firefox&&l.firefoxVersion<21&&(l.getUserMedia=!1),!l.iOS&&(l.ie||l.firefox||l.chrome)&&(l.canvasBitBltShift=!0),(l.safari||l.mobileSafari)&&(l.canvasBitBltShift=!1)}function c(){("ontouchstart"in document.documentElement||window.navigator.maxTouchPoints&&window.navigator.maxTouchPoints>=1)&&(l.touch=!0),(window.navigator.msPointerEnabled||window.navigator.pointerEnabled)&&(l.mspointer=!0),l.cocoonJS||("onwheel"in window||l.ie&&"WheelEvent"in window?l.wheelEvent="wheel":"onmousewheel"in window?l.wheelEvent="mousewheel":l.firefox&&"MouseScrollEvent"in window&&(l.wheelEvent="DOMMouseScroll"))}function d(){for(var a=["requestFullscreen","requestFullScreen","webkitRequestFullscreen","webkitRequestFullScreen","msRequestFullscreen","msRequestFullScreen","mozRequestFullScreen","mozRequestFullscreen"],b=document.createElement("div"),c=0;c=9&&/Mac OS X (\d+)_(\d+)/.test(navigator.userAgent)){var c=parseInt(RegExp.$1,10),d=parseInt(RegExp.$2,10);(10===c&&d>=11||c>10)&&(l.dolby=!0)}}catch(e){}}function h(){l.pixelRatio=window.devicePixelRatio||1,l.iPhone=-1!=navigator.userAgent.toLowerCase().indexOf("iphone"),l.iPhone4=2==l.pixelRatio&&l.iPhone,l.iPad=-1!=navigator.userAgent.toLowerCase().indexOf("ipad"),"undefined"!=typeof Int8Array?l.typedArray=!0:l.typedArray=!1,"undefined"!=typeof ArrayBuffer&&"undefined"!=typeof Uint8Array&&"undefined"!=typeof Uint32Array&&(l.littleEndian=i(),l.LITTLE_ENDIAN=l.littleEndian),l.support32bit="undefined"!=typeof ArrayBuffer&&"undefined"!=typeof Uint8ClampedArray&&"undefined"!=typeof Int32Array&&null!==l.littleEndian&&j(),navigator.vibrate=navigator.vibrate||navigator.webkitVibrate||navigator.mozVibrate||navigator.msVibrate,navigator.vibrate&&(l.vibration=!0)}function i(){var a=new ArrayBuffer(4),b=new Uint8Array(a),c=new Uint32Array(a);return b[0]=161,b[1]=178,b[2]=195,b[3]=212,3569595041==c[0]?!0:2712847316==c[0]?!1:null}function j(){if(void 0===Uint8ClampedArray)return!1;var a=PIXI.CanvasPool.create(this,1,1),b=a.getContext("2d");if(!b)return!1;var c=b.createImageData(1,1);return PIXI.CanvasPool.remove(this),c.data instanceof Uint8ClampedArray}function k(){var a,b=document.createElement("p"),c={webkitTransform:"-webkit-transform",OTransform:"-o-transform",msTransform:"-ms-transform",MozTransform:"-moz-transform",transform:"transform"};document.body.insertBefore(b,null);for(var d in c)void 0!==b.style[d]&&(b.style[d]="translate3d(1px,1px,1px)",a=window.getComputedStyle(b).getPropertyValue(c[d]));document.body.removeChild(b),l.css3D=void 0!==a&&a.length>0&&"none"!==a}var l=this;a(),e(),g(),f(),k(),h(),b(),d(),c()},c.Device.canPlayAudio=function(a){return"mp3"===a&&this.mp3?!0:"ogg"===a&&(this.ogg||this.opus)?!0:"m4a"===a&&this.m4a?!0:"opus"===a&&this.opus?!0:"wav"===a&&this.wav?!0:"webm"===a&&this.webm?!0:!("mp4"!==a||!this.dolby)},c.Device.canPlayVideo=function(a){return"webm"===a&&(this.webmVideo||this.vp9Video)?!0:"mp4"===a&&(this.mp4Video||this.h264Video)?!0:"ogg"!==a&&"ogv"!==a||!this.oggVideo?!("mpeg"!==a||!this.hlsVideo):!0},c.Device.isConsoleOpen=function(){return window.console&&window.console.firebug?!0:window.console&&(console.profile(),console.profileEnd(),console.clear&&console.clear(),console.profiles)?console.profiles.length>0:!1},c.Device.isAndroidStockBrowser=function(){var a=window.navigator.userAgent.match(/Android.*AppleWebKit\/([\d.]+)/);return a&&a[1]<537},c.Canvas={create:function(a,b,c,d,e){b=b||256,c=c||256;var f=e?document.createElement("canvas"):PIXI.CanvasPool.create(a,b,c);return"string"==typeof d&&""!==d&&(f.id=d),f.width=b,f.height=c,f.style.display="block",f},setBackgroundColor:function(a,b){return b=b||"rgb(0,0,0)",a.style.backgroundColor=b,a},setTouchAction:function(a,b){return b=b||"none",a.style.msTouchAction=b,a.style["ms-touch-action"]=b,a.style["touch-action"]=b,a},setUserSelect:function(a,b){return b=b||"none",a.style["-webkit-touch-callout"]=b,a.style["-webkit-user-select"]=b,a.style["-khtml-user-select"]=b,a.style["-moz-user-select"]=b,a.style["-ms-user-select"]=b,a.style["user-select"]=b,a.style["-webkit-tap-highlight-color"]="rgba(0, 0, 0, 0)",a},addToDOM:function(a,b,c){var d;return void 0===c&&(c=!0),b&&("string"==typeof b?d=document.getElementById(b):"object"==typeof b&&1===b.nodeType&&(d=b)),d||(d=document.body),c&&d.style&&(d.style.overflow="hidden"),d.appendChild(a),a},removeFromDOM:function(a){a.parentNode&&a.parentNode.removeChild(a)},setTransform:function(a,b,c,d,e,f,g){return a.setTransform(d,f,g,e,b,c),a},setSmoothingEnabled:function(a,b){var d=c.Canvas.getSmoothingPrefix(a);return d&&(a[d]=b),a},getSmoothingPrefix:function(a){var b=["i","webkitI","msI","mozI","oI"];for(var c in b){var d=b[c]+"mageSmoothingEnabled";if(d in a)return d}return null},getSmoothingEnabled:function(a){var b=c.Canvas.getSmoothingPrefix(a);return b?a[b]:void 0},setImageRenderingCrisp:function(a){for(var b=["optimizeSpeed","crisp-edges","-moz-crisp-edges","-webkit-optimize-contrast","optimize-contrast","pixelated"],c=0;ca},fuzzyGreaterThan:function(a,b,c){return void 0===c&&(c=1e-4),a>b-c},fuzzyCeil:function(a,b){return void 0===b&&(b=1e-4),Math.ceil(a-b)},fuzzyFloor:function(a,b){return void 0===b&&(b=1e-4),Math.floor(a+b)},average:function(){for(var a=0,b=arguments.length,c=0;b>c;c++)a+=+arguments[c];return a/b},shear:function(a){ +return a%1},snapTo:function(a,b,c){return void 0===c&&(c=0),0===b?a:(a-=c,a=b*Math.round(a/b),c+a)},snapToFloor:function(a,b,c){return void 0===c&&(c=0),0===b?a:(a-=c,a=b*Math.floor(a/b),c+a)},snapToCeil:function(a,b,c){return void 0===c&&(c=0),0===b?a:(a-=c,a=b*Math.ceil(a/b),c+a)},roundTo:function(a,b,c){void 0===b&&(b=0),void 0===c&&(c=10);var d=Math.pow(c,-b);return Math.round(a*d)/d},floorTo:function(a,b,c){void 0===b&&(b=0),void 0===c&&(c=10);var d=Math.pow(c,-b);return Math.floor(a*d)/d},ceilTo:function(a,b,c){void 0===b&&(b=0),void 0===c&&(c=10);var d=Math.pow(c,-b);return Math.ceil(a*d)/d},angleBetween:function(a,b,c,d){return Math.atan2(d-b,c-a)},angleBetweenY:function(a,b,c,d){return Math.atan2(c-a,d-b)},angleBetweenPoints:function(a,b){return Math.atan2(b.y-a.y,b.x-a.x)},angleBetweenPointsY:function(a,b){return Math.atan2(b.x-a.x,b.y-a.y)},reverseAngle:function(a){return this.normalizeAngle(a+Math.PI,!0)},normalizeAngle:function(a){return a%=2*Math.PI,a>=0?a:a+2*Math.PI},maxAdd:function(a,b,c){return Math.min(a+b,c)},minSub:function(a,b,c){return Math.max(a-b,c)},wrap:function(a,b,c){var d=c-b;if(0>=d)return 0;var e=(a-b)%d;return 0>e&&(e+=d),e+b},wrapValue:function(a,b,c){var d;return a=Math.abs(a),b=Math.abs(b),c=Math.abs(c),d=(a+b)%c},isOdd:function(a){return!!(1&a)},isEven:function(a){return!(1&a)},min:function(){if(1===arguments.length&&"object"==typeof arguments[0])var a=arguments[0];else var a=arguments;for(var b=1,c=0,d=a.length;d>b;b++)a[b]b;b++)a[b]>a[c]&&(c=b);return a[c]},minProperty:function(a){if(2===arguments.length&&"object"==typeof arguments[1])var b=arguments[1];else var b=arguments.slice(1);for(var c=1,d=0,e=b.length;e>c;c++)b[c][a]c;c++)b[c][a]>b[d][a]&&(d=c);return b[d][a]},wrapAngle:function(a,b){return b?this.wrap(a,-Math.PI,Math.PI):this.wrap(a,-180,180)},linearInterpolation:function(a,b){var c=a.length-1,d=c*b,e=Math.floor(d);return 0>b?this.linear(a[0],a[1],d):b>1?this.linear(a[c],a[c-1],c-d):this.linear(a[e],a[e+1>c?c:e+1],d-e)},bezierInterpolation:function(a,b){for(var c=0,d=a.length-1,e=0;d>=e;e++)c+=Math.pow(1-b,d-e)*Math.pow(b,e)*a[e]*this.bernstein(d,e);return c},catmullRomInterpolation:function(a,b){var c=a.length-1,d=c*b,e=Math.floor(d);return a[0]===a[c]?(0>b&&(e=Math.floor(d=c*(1+b))),this.catmullRom(a[(e-1+c)%c],a[e],a[(e+1)%c],a[(e+2)%c],d-e)):0>b?a[0]-(this.catmullRom(a[0],a[0],a[1],a[1],-d)-a[0]):b>1?a[c]-(this.catmullRom(a[c],a[c],a[c-1],a[c-1],d-c)-a[c]):this.catmullRom(a[e?e-1:0],a[e],a[e+1>c?c:e+1],a[e+2>c?c:e+2],d-e)},linear:function(a,b,c){return(b-a)*c+a},bernstein:function(a,b){return this.factorial(a)/this.factorial(b)/this.factorial(a-b)},factorial:function(a){if(0===a)return 1;for(var b=a;--a;)b*=a;return b},catmullRom:function(a,b,c,d,e){var f=.5*(c-a),g=.5*(d-b),h=e*e,i=e*h;return(2*b-2*c+f+g)*i+(-3*b+3*c-2*f-g)*h+f*e+b},difference:function(a,b){return Math.abs(a-b)},roundAwayFromZero:function(a){return a>0?Math.ceil(a):Math.floor(a)},sinCosGenerator:function(a,b,c,d){void 0===b&&(b=1),void 0===c&&(c=1),void 0===d&&(d=1);for(var e=b,f=c,g=d*Math.PI/a,h=[],i=[],j=0;a>j;j++)f-=e*g,e+=f*g,h[j]=f,i[j]=e;return{sin:i,cos:h,length:a}},distance:function(a,b,c,d){var e=a-c,f=b-d;return Math.sqrt(e*e+f*f)},distanceSq:function(a,b,c,d){var e=a-c,f=b-d;return e*e+f*f},distancePow:function(a,b,c,d,e){return void 0===e&&(e=2),Math.sqrt(Math.pow(c-a,e)+Math.pow(d-b,e))},clamp:function(a,b,c){return b>a?b:a>c?c:a},clampBottom:function(a,b){return b>a?b:a},within:function(a,b,c){return Math.abs(a-b)<=c},mapLinear:function(a,b,c,d,e){return d+(a-b)*(e-d)/(c-b)},smoothstep:function(a,b,c){return a=Math.max(0,Math.min(1,(a-b)/(c-b))),a*a*(3-2*a)},smootherstep:function(a,b,c){return a=Math.max(0,Math.min(1,(a-b)/(c-b))),a*a*a*(a*(6*a-15)+10)},sign:function(a){return 0>a?-1:a>0?1:0},percent:function(a,b,c){return void 0===c&&(c=0),a>b||c>b?1:c>a||c>a?0:(a-c)/b}};var j=Math.PI/180,k=180/Math.PI;c.Math.degToRad=function(a){return a*j},c.Math.radToDeg=function(a){return a*k},c.RandomDataGenerator=function(a){void 0===a&&(a=[]),this.c=1,this.s0=0,this.s1=0,this.s2=0,"string"==typeof a?this.state(a):this.sow(a)},c.RandomDataGenerator.prototype={rnd:function(){var a=2091639*this.s0+2.3283064365386963e-10*this.c;return this.c=0|a,this.s0=this.s1,this.s1=this.s2,this.s2=a-this.c,this.s2},sow:function(a){if(this.s0=this.hash(" "),this.s1=this.hash(this.s0),this.s2=this.hash(this.s1),this.c=1,a)for(var b=0;b>>0,b-=d,b*=d,d=b>>>0,b-=d,d+=4294967296*b;return 2.3283064365386963e-10*(d>>>0)},integer:function(){return 4294967296*this.rnd.apply(this)},frac:function(){return this.rnd.apply(this)+1.1102230246251565e-16*(2097152*this.rnd.apply(this)|0)},real:function(){return this.integer()+this.frac()},integerInRange:function(a,b){return Math.floor(this.realInRange(0,b-a+1)+a)},between:function(a,b){return this.integerInRange(a,b)},realInRange:function(a,b){return this.frac()*(b-a)+a},normal:function(){return 1-2*this.frac()},uuid:function(){var a="",b="";for(b=a="";a++<36;b+=~a%5|3*a&4?(15^a?8^this.frac()*(20^a?16:4):4).toString(16):"-");return b},pick:function(a){return a[this.integerInRange(0,a.length-1)]},sign:function(){return this.pick([-1,1])},weightedPick:function(a){return a[~~(Math.pow(this.frac(),2)*(a.length-1)+.5)]},timestamp:function(a,b){return this.realInRange(a||9466848e5,b||1577862e6)},angle:function(){return this.integerInRange(-180,180)},state:function(a){return"string"==typeof a&&a.match(/^!rnd/)&&(a=a.split(","),this.c=parseFloat(a[1]),this.s0=parseFloat(a[2]),this.s1=parseFloat(a[3]),this.s2=parseFloat(a[4])),["!rnd",this.c,this.s0,this.s1,this.s2].join(",")}},c.RandomDataGenerator.prototype.constructor=c.RandomDataGenerator,c.QuadTree=function(a,b,c,d,e,f,g){this.maxObjects=10,this.maxLevels=4,this.level=0,this.bounds={},this.objects=[],this.nodes=[],this._empty=[],this.reset(a,b,c,d,e,f,g)},c.QuadTree.prototype={reset:function(a,b,c,d,e,f,g){this.maxObjects=e||10,this.maxLevels=f||4,this.level=g||0,this.bounds={x:Math.round(a),y:Math.round(b),width:c,height:d,subWidth:Math.floor(c/2),subHeight:Math.floor(d/2),right:Math.round(a)+Math.floor(c/2),bottom:Math.round(b)+Math.floor(d/2)},this.objects.length=0,this.nodes.length=0},populate:function(a){a.forEach(this.populateHandler,this,!0)},populateHandler:function(a){a.body&&a.exists&&this.insert(a.body)},split:function(){this.nodes[0]=new c.QuadTree(this.bounds.right,this.bounds.y,this.bounds.subWidth,this.bounds.subHeight,this.maxObjects,this.maxLevels,this.level+1),this.nodes[1]=new c.QuadTree(this.bounds.x,this.bounds.y,this.bounds.subWidth,this.bounds.subHeight,this.maxObjects,this.maxLevels,this.level+1),this.nodes[2]=new c.QuadTree(this.bounds.x,this.bounds.bottom,this.bounds.subWidth,this.bounds.subHeight,this.maxObjects,this.maxLevels,this.level+1),this.nodes[3]=new c.QuadTree(this.bounds.right,this.bounds.bottom,this.bounds.subWidth,this.bounds.subHeight,this.maxObjects,this.maxLevels,this.level+1)},insert:function(a){var b,c=0;if(null!=this.nodes[0]&&(b=this.getIndex(a),-1!==b))return void this.nodes[b].insert(a);if(this.objects.push(a),this.objects.length>this.maxObjects&&this.levelthis.bounds.bottom&&(b=2):a.x>this.bounds.right&&(a.ythis.bounds.bottom&&(b=3)),b},retrieve:function(a){if(a instanceof c.Rectangle)var b=this.objects,d=this.getIndex(a);else{if(!a.body)return this._empty;var b=this.objects,d=this.getIndex(a.body)}return this.nodes[0]&&(-1!==d?b=b.concat(this.nodes[d].retrieve(a)):(b=b.concat(this.nodes[0].retrieve(a)),b=b.concat(this.nodes[1].retrieve(a)),b=b.concat(this.nodes[2].retrieve(a)),b=b.concat(this.nodes[3].retrieve(a)))),b},clear:function(){this.objects.length=0;for(var a=this.nodes.length;a--;)this.nodes[a].clear(),this.nodes.splice(a,1);this.nodes.length=0}},c.QuadTree.prototype.constructor=c.QuadTree;var l=function(){};c.Net=l,c.Net.prototype={isDisabled:!0,getHostName:l,checkDomainName:l,updateQueryString:l,getQueryString:l,decodeURI:l},c.Net.prototype.constructor=c.Net,c.TweenManager=function(){},c.TweenManager.prototype.update=function(){},c.TweenManager.prototype.removeAll=function(){},c.TweenManager.prototype.removeFrom=function(){},c.TweenManager.prototype.constructor=c.TweenManager,c.Time=function(a){this.game=a,this.time=0,this.prevTime=0,this.now=0,this.elapsed=0,this.elapsedMS=0,this.physicsElapsed=1/60,this.physicsElapsedMS=1/60*1e3,this.desiredFpsMult=1/60,this._desiredFps=60,this.suggestedFps=this.desiredFps,this.slowMotion=1,this.advancedTiming=!1,this.frames=0,this.fps=0,this.fpsMin=1e3,this.fpsMax=0,this.msMin=1e3,this.msMax=0,this.pauseDuration=0,this.timeToCall=0,this.timeExpected=0,this.events=new c.Timer(this.game,!1),this._frameCount=0,this._elapsedAccumulator=0,this._started=0,this._timeLastSecond=0,this._pauseStarted=0,this._justResumed=!1,this._timers=[]},c.Time.prototype={boot:function(){this._started=Date.now(),this.time=Date.now(),this.events.start(),this.timeExpected=this.time},add:function(a){return this._timers.push(a),a},create:function(a){void 0===a&&(a=!0);var b=new c.Timer(this.game,a);return this._timers.push(b),b},removeAll:function(){for(var a=0;aa;)this._timers[a].update(this.time)?a++:(this._timers.splice(a,1),b--)},updateAdvancedTiming:function(){this._frameCount++,this._elapsedAccumulator+=this.elapsed,this._frameCount>=2*this._desiredFps&&(this.suggestedFps=5*Math.floor(200/(this._elapsedAccumulator/this._frameCount)),this._frameCount=0,this._elapsedAccumulator=0),this.msMin=Math.min(this.msMin,this.elapsed),this.msMax=Math.max(this.msMax,this.elapsed),this.frames++,this.now>this._timeLastSecond+1e3&&(this.fps=Math.round(1e3*this.frames/(this.now-this._timeLastSecond)),this.fpsMin=Math.min(this.fpsMin,this.fps),this.fpsMax=Math.max(this.fpsMax,this.fps),this._timeLastSecond=this.now,this.frames=0)},gamePaused:function(){this._pauseStarted=Date.now(),this.events.pause();for(var a=this._timers.length;a--;)this._timers[a]._pause()},gameResumed:function(){this.time=Date.now(),this.pauseDuration=this.time-this._pauseStarted,this.events.resume();for(var a=this._timers.length;a--;)this._timers[a]._resume()},totalElapsedSeconds:function(){return.001*(this.time-this._started)},elapsedSince:function(a){return this.time-a},elapsedSecondsSince:function(a){return.001*(this.time-a)},reset:function(){this._started=this.time,this.removeAll()}},Object.defineProperty(c.Time.prototype,"desiredFps",{get:function(){return this._desiredFps},set:function(a){this._desiredFps=a,this.physicsElapsed=1/a,this.physicsElapsedMS=1e3*this.physicsElapsed,this.desiredFpsMult=1/a}}),c.Time.prototype.constructor=c.Time,c.Timer=function(a,b){void 0===b&&(b=!0),this.game=a,this.running=!1,this.autoDestroy=b,this.expired=!1,this.elapsed=0,this.events=[],this.onComplete=new c.Signal,this.nextTick=0,this.timeCap=1e3,this.paused=!1,this._codePaused=!1,this._started=0,this._pauseStarted=0,this._pauseTotal=0,this._now=Date.now(),this._len=0,this._marked=0,this._i=0,this._diff=0,this._newTick=0},c.Timer.MINUTE=6e4,c.Timer.SECOND=1e3,c.Timer.HALF=500,c.Timer.QUARTER=250,c.Timer.prototype={create:function(a,b,d,e,f,g){a=Math.round(a);var h=a;h+=0===this._now?this.game.time.time:this._now;var i=new c.TimerEvent(this,a,h,d,b,e,f,g);return this.events.push(i),this.order(),this.expired=!1,i},add:function(a,b,c){return this.create(a,!1,0,b,c,Array.prototype.slice.call(arguments,3))},repeat:function(a,b,c,d){return this.create(a,!1,b,c,d,Array.prototype.slice.call(arguments,4))},loop:function(a,b,c){return this.create(a,!0,0,b,c,Array.prototype.slice.call(arguments,3))},start:function(a){if(!this.running){this._started=this.game.time.time+(a||0),this.running=!0;for(var b=0;b0&&(this.events.sort(this.sortHandler),this.nextTick=this.events[0].tick)},sortHandler:function(a,b){return a.tickb.tick?1:0},clearPendingEvents:function(){for(this._i=this.events.length;this._i--;)this.events[this._i].pendingDelete&&this.events.splice(this._i,1);this._len=this.events.length,this._i=0},update:function(a){if(this.paused)return!0;if(this.elapsed=a-this._now,this._now=a,this.elapsed>this.timeCap&&this.adjustEvents(a-this.elapsed),this._marked=0,this.clearPendingEvents(),this.running&&this._now>=this.nextTick&&this._len>0){for(;this._i=this.events[this._i].tick&&!this.events[this._i].pendingDelete;)this._newTick=this._now+this.events[this._i].delay-(this._now-this.events[this._i].tick),this._newTick<0&&(this._newTick=this._now+this.events[this._i].delay),this.events[this._i].loop===!0?(this.events[this._i].tick=this._newTick,this.events[this._i].callback.apply(this.events[this._i].callbackContext,this.events[this._i].args)):this.events[this._i].repeatCount>0?(this.events[this._i].repeatCount--,this.events[this._i].tick=this._newTick,this.events[this._i].callback.apply(this.events[this._i].callbackContext,this.events[this._i].args)):(this._marked++,this.events[this._i].pendingDelete=!0,this.events[this._i].callback.apply(this.events[this._i].callbackContext,this.events[this._i].args)),this._i++;this.events.length>this._marked?this.order():(this.expired=!0,this.onComplete.dispatch(this))}return!this.expired||!this.autoDestroy},pause:function(){this.running&&(this._codePaused=!0,this.paused||(this._pauseStarted=this.game.time.time,this.paused=!0))},_pause:function(){!this.paused&&this.running&&(this._pauseStarted=this.game.time.time,this.paused=!0)},adjustEvents:function(a){for(var b=0;bc&&(c=0),this.events[b].tick=this._now+c}var d=this.nextTick-a;0>d?this.nextTick=this._now:this.nextTick=this._now+d},resume:function(){if(this.paused){var a=this.game.time.time;this._pauseTotal+=a-this._now,this._now=a,this.adjustEvents(this._pauseStarted),this.paused=!1,this._codePaused=!1}},_resume:function(){this._codePaused||this.resume()},removeAll:function(){this.onComplete.removeAll(),this.events.length=0,this._len=0,this._i=0},destroy:function(){this.onComplete.removeAll(),this.running=!1,this.events=[],this._len=0,this._i=0}},Object.defineProperty(c.Timer.prototype,"next",{get:function(){return this.nextTick}}),Object.defineProperty(c.Timer.prototype,"duration",{get:function(){return this.running&&this.nextTick>this._now?this.nextTick-this._now:0}}),Object.defineProperty(c.Timer.prototype,"length",{get:function(){return this.events.length}}),Object.defineProperty(c.Timer.prototype,"ms",{get:function(){return this.running?this._now-this._started-this._pauseTotal:0}}),Object.defineProperty(c.Timer.prototype,"seconds",{get:function(){return this.running?.001*this.ms:0}}),c.Timer.prototype.constructor=c.Timer,c.TimerEvent=function(a,b,c,d,e,f,g,h){this.timer=a,this.delay=b,this.tick=c,this.repeatCount=d-1,this.loop=e,this.callback=f,this.callbackContext=g,this.args=h,this.pendingDelete=!1},c.TimerEvent.prototype.constructor=c.TimerEvent,c.AnimationManager=function(a){this.sprite=a,this.game=a.game,this.currentFrame=null,this.currentAnim=null,this.updateIfVisible=!0,this.isLoaded=!1,this._frameData=null,this._anims={},this._outputFrames=[]},c.AnimationManager.prototype={loadFrameData:function(a,b){if(void 0===a)return!1;if(this.isLoaded)for(var c in this._anims)this._anims[c].updateFrameData(a);return this._frameData=a,void 0===b||null===b?this.frame=0:"string"==typeof b?this.frameName=b:this.frame=b,this.isLoaded=!0,!0},copyFrameData:function(a,b){if(this._frameData=a.clone(),this.isLoaded)for(var c in this._anims)this._anims[c].updateFrameData(this._frameData);return void 0===b||null===b?this.frame=0:"string"==typeof b?this.frameName=b:this.frame=b,this.isLoaded=!0,!0},add:function(a,b,d,e,f){return b=b||[],d=d||60,void 0===e&&(e=!1),void 0===f&&(f=!(!b||"number"!=typeof b[0])),this._outputFrames=[],this._frameData.getFrameIndexes(b,f,this._outputFrames),this._anims[a]=new c.Animation(this.game,this.sprite,a,this._frameData,this._outputFrames,d,e),this.currentAnim=this._anims[a],this.sprite.tilingTexture&&(this.sprite.refreshTexture=!0),this._anims[a]},validateFrames:function(a,b){void 0===b&&(b=!0);for(var c=0;cthis._frameData.total)return!1}else if(this._frameData.checkFrameName(a[c])===!1)return!1;return!0},play:function(a,b,c,d){return this._anims[a]?this.currentAnim===this._anims[a]?this.currentAnim.isPlaying===!1?(this.currentAnim.paused=!1,this.currentAnim.play(b,c,d)):this.currentAnim:(this.currentAnim&&this.currentAnim.isPlaying&&this.currentAnim.stop(),this.currentAnim=this._anims[a],this.currentAnim.paused=!1,this.currentFrame=this.currentAnim.currentFrame,this.currentAnim.play(b,c,d)):void 0},stop:function(a,b){void 0===b&&(b=!1),!this.currentAnim||"string"==typeof a&&a!==this.currentAnim.name||this.currentAnim.stop(b)},update:function(){return this.updateIfVisible&&!this.sprite.visible?!1:this.currentAnim&&this.currentAnim.update()?(this.currentFrame=this.currentAnim.currentFrame,!0):!1},next:function(a){this.currentAnim&&(this.currentAnim.next(a),this.currentFrame=this.currentAnim.currentFrame)},previous:function(a){this.currentAnim&&(this.currentAnim.previous(a),this.currentFrame=this.currentAnim.currentFrame)},getAnimation:function(a){return"string"==typeof a&&this._anims[a]?this._anims[a]:null},refreshFrame:function(){},destroy:function(){var a=null;for(var a in this._anims)this._anims.hasOwnProperty(a)&&this._anims[a].destroy();this._anims={},this._outputFrames=[],this._frameData=null,this.currentAnim=null,this.currentFrame=null,this.sprite=null,this.game=null}},c.AnimationManager.prototype.constructor=c.AnimationManager,Object.defineProperty(c.AnimationManager.prototype,"frameData",{get:function(){return this._frameData}}),Object.defineProperty(c.AnimationManager.prototype,"frameTotal",{get:function(){return this._frameData.total}}),Object.defineProperty(c.AnimationManager.prototype,"paused",{get:function(){return this.currentAnim.isPaused},set:function(a){this.currentAnim.paused=a}}),Object.defineProperty(c.AnimationManager.prototype,"name",{get:function(){return this.currentAnim?this.currentAnim.name:void 0}}),Object.defineProperty(c.AnimationManager.prototype,"frame",{get:function(){return this.currentFrame?this.currentFrame.index:void 0},set:function(a){"number"==typeof a&&this._frameData&&null!==this._frameData.getFrame(a)&&(this.currentFrame=this._frameData.getFrame(a),this.currentFrame&&this.sprite.setFrame(this.currentFrame))}}),Object.defineProperty(c.AnimationManager.prototype,"frameName",{get:function(){return this.currentFrame?this.currentFrame.name:void 0},set:function(a){"string"==typeof a&&this._frameData&&null!==this._frameData.getFrameByName(a)?(this.currentFrame=this._frameData.getFrameByName(a),this.currentFrame&&(this._frameIndex=this.currentFrame.index,this.sprite.setFrame(this.currentFrame))):console.warn("Cannot set frameName: "+a)}}),c.Animation=function(a,b,d,e,f,g,h){void 0===h&&(h=!1),this.game=a,this._parent=b,this._frameData=e,this.name=d,this._frames=[],this._frames=this._frames.concat(f),this.delay=1e3/g,this.loop=h,this.loopCount=0,this.killOnComplete=!1,this.isFinished=!1,this.isPlaying=!1,this.isPaused=!1,this._pauseStartTime=0,this._frameIndex=0,this._frameDiff=0,this._frameSkip=1,this.currentFrame=this._frameData.getFrame(this._frames[this._frameIndex]),this.onStart=new c.Signal,this.onUpdate=null,this.onComplete=new c.Signal,this.onLoop=new c.Signal,this.isReversed=!1,this.game.onPause.add(this.onPause,this),this.game.onResume.add(this.onResume,this)},c.Animation.prototype={play:function(a,b,c){return"number"==typeof a&&(this.delay=1e3/a),"boolean"==typeof b&&(this.loop=b),"undefined"!=typeof c&&(this.killOnComplete=c),this.isPlaying=!0,this.isFinished=!1,this.paused=!1,this.loopCount=0,this._timeLastFrame=this.game.time.time,this._timeNextFrame=this.game.time.time+this.delay,this._frameIndex=this.isReversed?this._frames.length-1:0,this.updateCurrentFrame(!1,!0),this._parent.events.onAnimationStart$dispatch(this._parent,this),this.onStart.dispatch(this._parent,this),this._parent.animations.currentAnim=this,this._parent.animations.currentFrame=this.currentFrame,this},restart:function(){this.isPlaying=!0,this.isFinished=!1,this.paused=!1,this.loopCount=0,this._timeLastFrame=this.game.time.time,this._timeNextFrame=this.game.time.time+this.delay,this._frameIndex=0,this.currentFrame=this._frameData.getFrame(this._frames[this._frameIndex]),this._parent.setFrame(this.currentFrame),this._parent.animations.currentAnim=this,this._parent.animations.currentFrame=this.currentFrame,this.onStart.dispatch(this._parent,this)},reverse:function(){return this.reversed=!this.reversed,this},reverseOnce:function(){return this.onComplete.addOnce(this.reverse.bind(this)),this.reverse()},setFrame:function(a,b){var c;if(void 0===b&&(b=!1),"string"==typeof a)for(var d=0;d=this._timeNextFrame?(this._frameSkip=1,this._frameDiff=this.game.time.time-this._timeNextFrame,this._timeLastFrame=this.game.time.time,this._frameDiff>this.delay&&(this._frameSkip=Math.floor(this._frameDiff/this.delay),this._frameDiff-=this._frameSkip*this.delay),this._timeNextFrame=this.game.time.time+(this.delay-this._frameDiff),this.isReversed?this._frameIndex-=this._frameSkip:this._frameIndex+=this._frameSkip,!this.isReversed&&this._frameIndex>=this._frames.length||this.isReversed&&this._frameIndex<=-1?this.loop?(this._frameIndex=Math.abs(this._frameIndex)%this._frames.length,this.isReversed&&(this._frameIndex=this._frames.length-1-this._frameIndex),this.currentFrame=this._frameData.getFrame(this._frames[this._frameIndex]),this.currentFrame&&this._parent.setFrame(this.currentFrame),this.loopCount++,this._parent.events.onAnimationLoop$dispatch(this._parent,this),this.onLoop.dispatch(this._parent,this),this.onUpdate?(this.onUpdate.dispatch(this,this.currentFrame),!!this._frameData):!0):(this.complete(),!1):this.updateCurrentFrame(!0)):!1},updateCurrentFrame:function(a,b){if(void 0===b&&(b=!1),!this._frameData)return!1;var c=this.currentFrame.index;return this.currentFrame=this._frameData.getFrame(this._frames[this._frameIndex]),this.currentFrame&&(b||!b&&c!==this.currentFrame.index)&&this._parent.setFrame(this.currentFrame),this.onUpdate&&a?(this.onUpdate.dispatch(this,this.currentFrame),!!this._frameData):!0},next:function(a){void 0===a&&(a=1);var b=this._frameIndex+a;b>=this._frames.length&&(this.loop?b%=this._frames.length:b=this._frames.length-1),b!==this._frameIndex&&(this._frameIndex=b,this.updateCurrentFrame(!0))},previous:function(a){void 0===a&&(a=1);var b=this._frameIndex-a;0>b&&(this.loop?b=this._frames.length+b:b++),b!==this._frameIndex&&(this._frameIndex=b,this.updateCurrentFrame(!0))},updateFrameData:function(a){this._frameData=a,this.currentFrame=this._frameData?this._frameData.getFrame(this._frames[this._frameIndex%this._frames.length]):null},destroy:function(){this._frameData&&(this.game.onPause.remove(this.onPause,this),this.game.onResume.remove(this.onResume,this),this.game=null,this._parent=null,this._frames=null,this._frameData=null,this.currentFrame=null,this.isPlaying=!1,this.onStart.dispose(),this.onLoop.dispose(),this.onComplete.dispose(),this.onUpdate&&this.onUpdate.dispose())},complete:function(){this._frameIndex=this._frames.length-1,this.currentFrame=this._frameData.getFrame(this._frames[this._frameIndex]),this.isPlaying=!1,this.isFinished=!0,this.paused=!1,this._parent.events.onAnimationComplete$dispatch(this._parent,this),this.onComplete.dispatch(this._parent,this),this.killOnComplete&&this._parent.kill()}},c.Animation.prototype.constructor=c.Animation,Object.defineProperty(c.Animation.prototype,"paused",{get:function(){return this.isPaused},set:function(a){this.isPaused=a,a?this._pauseStartTime=this.game.time.time:this.isPlaying&&(this._timeNextFrame=this.game.time.time+this.delay)}}),Object.defineProperty(c.Animation.prototype,"reversed",{get:function(){return this.isReversed},set:function(a){this.isReversed=a}}),Object.defineProperty(c.Animation.prototype,"frameTotal",{get:function(){return this._frames.length}}),Object.defineProperty(c.Animation.prototype,"frame",{get:function(){return null!==this.currentFrame?this.currentFrame.index:this._frameIndex},set:function(a){this.currentFrame=this._frameData.getFrame(this._frames[a]),null!==this.currentFrame&&(this._frameIndex=a,this._parent.setFrame(this.currentFrame),this.onUpdate&&this.onUpdate.dispatch(this,this.currentFrame))}}),Object.defineProperty(c.Animation.prototype,"speed",{get:function(){return Math.round(1e3/this.delay)},set:function(a){a>=1&&(this.delay=1e3/a)}}),Object.defineProperty(c.Animation.prototype,"enableUpdate",{get:function(){return null!==this.onUpdate},set:function(a){a&&null===this.onUpdate?this.onUpdate=new c.Signal:a||null===this.onUpdate||(this.onUpdate.dispose(),this.onUpdate=null)}}),c.Animation.generateFrameNames=function(a,b,d,e,f){void 0===e&&(e="");var g=[],h="";if(d>b)for(var i=b;d>=i;i++)h="number"==typeof f?c.Utils.pad(i.toString(),f,"0",1):i.toString(),h=a+h+e,g.push(h);else for(var i=b;i>=d;i--)h="number"==typeof f?c.Utils.pad(i.toString(),f,"0",1):i.toString(),h=a+h+e,g.push(h);return g},c.Frame=function(a,b,d,e,f,g){this.index=a,this.x=b,this.y=d,this.width=e,this.height=f,this.name=g,this.centerX=Math.floor(e/2),this.centerY=Math.floor(f/2),this.distance=c.Math.distance(0,0,e,f),this.rotated=!1,this.rotationDirection="cw",this.trimmed=!1,this.sourceSizeW=e,this.sourceSizeH=f,this.spriteSourceSizeX=0,this.spriteSourceSizeY=0,this.spriteSourceSizeW=0,this.spriteSourceSizeH=0,this.right=this.x+this.width,this.bottom=this.y+this.height},c.Frame.prototype={resize:function(a,b){this.width=a,this.height=b,this.centerX=Math.floor(a/2),this.centerY=Math.floor(b/2),this.distance=c.Math.distance(0,0,a,b),this.sourceSizeW=a,this.sourceSizeH=b,this.right=this.x+a,this.bottom=this.y+b},setTrim:function(a,b,c,d,e,f,g){this.trimmed=a,a&&(this.sourceSizeW=b,this.sourceSizeH=c,this.centerX=Math.floor(b/2),this.centerY=Math.floor(c/2),this.spriteSourceSizeX=d,this.spriteSourceSizeY=e,this.spriteSourceSizeW=f,this.spriteSourceSizeH=g)},clone:function(){var a=new c.Frame(this.index,this.x,this.y,this.width,this.height,this.name);for(var b in this)this.hasOwnProperty(b)&&(a[b]=this[b]);return a},getRect:function(a){return void 0===a?a=new c.Rectangle(this.x,this.y,this.width,this.height):a.setTo(this.x,this.y,this.width,this.height),a}},c.Frame.prototype.constructor=c.Frame,c.FrameData=function(){this._frames=[],this._frameNames=[]},c.FrameData.prototype={addFrame:function(a){return a.index=this._frames.length,this._frames.push(a),""!==a.name&&(this._frameNames[a.name]=a.index),a},getFrame:function(a){return a>=this._frames.length&&(a=0),this._frames[a]},getFrameByName:function(a){return"number"==typeof this._frameNames[a]?this._frames[this._frameNames[a]]:null},checkFrameName:function(a){return null!=this._frameNames[a]},clone:function(){for(var a=new c.FrameData,b=0;b=d;d++)c.push(this._frames[d]);return c},getFrames:function(a,b,c){if(void 0===b&&(b=!0),void 0===c&&(c=[]),void 0===a||0===a.length)for(var d=0;d=d&&(d=Math.floor(-j/Math.min(-1,d))),0>=e&&(e=Math.floor(-k/Math.min(-1,e)));var l=Math.floor((j-g)/(d+h)),m=Math.floor((k-g)/(e+h)),n=l*m;if(-1!==f&&(n=f),0===j||0===k||d>j||e>k||0===n)return console.warn("Phaser.AnimationParser.spriteSheet: '"+b+"'s width/height zero or width/height < given frameWidth/frameHeight"),null;for(var o=new c.FrameData,p=g,q=g,r=0;n>r;r++)o.addFrame(new c.Frame(r,p,q,d,e,"")),p+=d+h,p+d>j&&(p=g,q+=e+h);return o},JSONData:function(a,b){if(!b.frames)return console.warn("Phaser.AnimationParser.JSONData: Invalid Texture Atlas JSON given, missing 'frames' array"),void console.log(b);for(var d,e=new c.FrameData,f=b.frames,g=0;g tag");for(var d,e,f,g,h,i,j,k,l,m,n,o=new c.FrameData,p=b.getElementsByTagName("SubTexture"),q=0;q-1},getAssetIndex:function(a,b){for(var c=-1,d=0;d-1?{index:c,file:this._fileList[c]}:!1},reset:function(a,b){void 0===b&&(b=!1),this.resetLocked||(a&&(this.preloadSprite=null),this.isLoading=!1,this._processingHead=0,this._fileList.length=0,this._flightQueue.length=0,this._fileLoadStarted=!1,this._totalFileCount=0,this._totalPackCount=0,this._loadedPackCount=0,this._loadedFileCount=0,b&&(this.onLoadStart.removeAll(),this.onLoadComplete.removeAll(),this.onPackComplete.removeAll(),this.onFileStart.removeAll(),this.onFileComplete.removeAll(),this.onFileError.removeAll()))},addToFileList:function(a,b,c,d,e,f){if(void 0===e&&(e=!1),void 0===b||""===b)return console.warn("Phaser.Loader: Invalid or no key given of type "+a),this;if(void 0===c||null===c){if(!f)return console.warn("Phaser.Loader: No URL given for file type: "+a+" key: "+b),this;c=b+f}var g={type:a,key:b,path:this.path,url:c,syncPoint:this._withSyncPointDepth>0,data:null,loading:!1,loaded:!1,error:!1};if(d)for(var h in d)g[h]=d[h];var i=this.getAssetIndex(a,b);if(e&&i>-1){var j=this._fileList[i];j.loading||j.loaded?(this._fileList.push(g),this._totalFileCount++):this._fileList[i]=g}else-1===i&&(this._fileList.push(g),this._totalFileCount++);return this},replaceInFileList:function(a,b,c,d){return this.addToFileList(a,b,c,d,!0)},pack:function(a,b,c,d){if(void 0===b&&(b=null),void 0===c&&(c=null),void 0===d&&(d=null),!b&&!c)return console.warn("Phaser.Loader.pack - Both url and data are null. One must be set."),this;var e={type:"packfile",key:a,url:b,path:this.path,syncPoint:!0,data:null,loading:!1,loaded:!1,error:!1,callbackContext:d};c&&("string"==typeof c&&(c=JSON.parse(c)),e.data=c||{},e.loaded=!0);for(var f=0;f=e||d&&this._loadedPackCount===this._totalPackCount)break}if(this.updateProgress(),this._processingHead>=this._fileList.length)this.finishedLoading();else if(!this._flightQueue.length){console.warn("Phaser.Loader - aborting: processing queue empty, loading may have stalled");var f=this;setTimeout(function(){f.finishedLoading(!0)},2e3)}},finishedLoading:function(a){this.hasLoaded||(this.hasLoaded=!0,this.isLoading=!1,a||this._fileLoadStarted||(this._fileLoadStarted=!0,this.onLoadStart.dispatch()),this.onLoadComplete.dispatch(),this.game.state.loadComplete(),this.reset())},asyncComplete:function(a,b){void 0===b&&(b=""),a.loaded=!0,a.error=!!b,b&&(a.errorMessage=b,console.warn("Phaser.Loader - "+a.type+"["+a.key+"]: "+b)),this.processLoadQueue()},processPack:function(a){var b=a.data[a.key];if(!b)return void console.warn("Phaser.Loader - "+a.key+": pack has data, but not for pack key");for(var d=0;d=400&&f.status<=599?e.call(g,a,f):d.call(g,a,f)}catch(b){g.hasLoaded?window.console&&console.error(b):g.asyncComplete(a,b.message||"Exception")}},f.onerror=function(){try{return e.call(g,a,f)}catch(b){g.hasLoaded?window.console&&console.error(b):g.asyncComplete(a,b.message||"Exception")}},a.requestObject=f,a.requestUrl=b,f.send()},xhrLoadWithXDR:function(a,b,c,d,e){this._warnedAboutXDomainRequest||this.game.device.ie&&!(this.game.device.ieVersion>=10)||(this._warnedAboutXDomainRequest=!0,console.warn("Phaser.Loader - using XDomainRequest outside of IE 9"));var f=new window.XDomainRequest;f.open("GET",b,!0),f.responseType=c,f.timeout=3e3,e=e||this.fileError;var g=this;f.onerror=function(){try{return e.call(g,a,f)}catch(b){g.asyncComplete(a,b.message||"Exception")}},f.ontimeout=function(){try{return e.call(g,a,f)}catch(b){g.asyncComplete(a,b.message||"Exception")}},f.onprogress=function(){},f.onload=function(){try{return 4==f.readyState&&f.status>=400&&f.status<=599?e.call(g,a,f):d.call(g,a,f)}catch(b){g.asyncComplete(a,b.message||"Exception")}},a.requestObject=f,a.requestUrl=b,setTimeout(function(){f.send()},0)},getVideoURL:function(a){for(var b=0;b=0&&(d=d.substr(0,d.indexOf("?")));var e=d.substr((Math.max(0,d.lastIndexOf("."))||1/0)+1);if(c=e.toLowerCase(),this.game.device.canPlayVideo(c))return a[b]}}return null},getAudioURL:function(a){if(this.game.sound.noAudio)return null;for(var b=0;b=0&&(d=d.substr(0,d.indexOf("?")));var e=d.substr((Math.max(0,d.lastIndexOf("."))||1/0)+1);if(c=e.toLowerCase(),this.game.device.canPlayAudio(c))return a[b]}}return null},fileError:function(a,b,c){var d=a.requestUrl||this.transformUrl(a.url,a),e="error loading asset from URL "+d;!c&&b&&(c=b.status),c&&(e=e+" ("+c+")"),this.asyncComplete(a,e)},fileComplete:function(a,b){var d=!0;switch(a.type){case"packfile":var e=JSON.parse(b.responseText);a.data=e||{};break;case"image":this.cache.addImage(a.key,a.url,a.data);break;case"spritesheet":this.cache.addSpriteSheet(a.key,a.url,a.data,a.frameWidth,a.frameHeight,a.frameMax,a.margin,a.spacing);break;case"textureatlas":if(null==a.atlasURL)this.cache.addTextureAtlas(a.key,a.url,a.data,a.atlasData,a.format);else if(d=!1,a.format==c.Loader.TEXTURE_ATLAS_JSON_ARRAY||a.format==c.Loader.TEXTURE_ATLAS_JSON_HASH||a.format==c.Loader.TEXTURE_ATLAS_JSON_PYXEL)this.xhrLoad(a,this.transformUrl(a.atlasURL,a),"text",this.jsonLoadComplete);else{if(a.format!=c.Loader.TEXTURE_ATLAS_XML_STARLING)throw new Error("Phaser.Loader. Invalid Texture Atlas format: "+a.format);this.xhrLoad(a,this.transformUrl(a.atlasURL,a),"text",this.xmlLoadComplete)}break;case"bitmapfont":a.atlasURL?(d=!1,this.xhrLoad(a,this.transformUrl(a.atlasURL,a),"text",function(a,b){var c;try{c=JSON.parse(b.responseText)}catch(d){}c?(a.atlasType="json",this.jsonLoadComplete(a,b)):(a.atlasType="xml",this.xmlLoadComplete(a,b)); +})):this.cache.addBitmapFont(a.key,a.url,a.data,a.atlasData,a.atlasType,a.xSpacing,a.ySpacing);break;case"video":if(a.asBlob)try{a.data=b.response}catch(f){throw new Error("Phaser.Loader. Unable to parse video file as Blob: "+a.key)}this.cache.addVideo(a.key,a.url,a.data,a.asBlob);break;case"audio":this.game.sound.usingWebAudio?(a.data=b.response,this.cache.addSound(a.key,a.url,a.data,!0,!1),a.autoDecode&&this.game.sound.decode(a.key)):this.cache.addSound(a.key,a.url,a.data,!1,!0);break;case"text":a.data=b.responseText,this.cache.addText(a.key,a.url,a.data);break;case"shader":a.data=b.responseText,this.cache.addShader(a.key,a.url,a.data);break;case"physics":var e=JSON.parse(b.responseText);this.cache.addPhysicsData(a.key,a.url,e,a.format);break;case"script":a.data=document.createElement("script"),a.data.language="javascript",a.data.type="text/javascript",a.data.defer=!1,a.data.text=b.responseText,document.head.appendChild(a.data),a.callback&&(a.data=a.callback.call(a.callbackContext,a.key,b.responseText));break;case"binary":a.callback?a.data=a.callback.call(a.callbackContext,a.key,b.response):a.data=b.response,this.cache.addBinary(a.key,a.data)}d&&this.asyncComplete(a)},jsonLoadComplete:function(a,b){var c=JSON.parse(b.responseText);"tilemap"===a.type?this.cache.addTilemap(a.key,a.url,c,a.format):"bitmapfont"===a.type?this.cache.addBitmapFont(a.key,a.url,a.data,c,a.atlasType,a.xSpacing,a.ySpacing):"json"===a.type?this.cache.addJSON(a.key,a.url,c):this.cache.addTextureAtlas(a.key,a.url,a.data,c,a.format),this.asyncComplete(a)},csvLoadComplete:function(a,b){var c=b.responseText;this.cache.addTilemap(a.key,a.url,c,a.format),this.asyncComplete(a)},xmlLoadComplete:function(a,b){var c=b.responseText,d=this.parseXml(c);if(!d){var e=b.responseType||b.contentType;return console.warn("Phaser.Loader - "+a.key+": invalid XML ("+e+")"),void this.asyncComplete(a,"invalid XML")}"bitmapfont"===a.type?this.cache.addBitmapFont(a.key,a.url,a.data,d,a.atlasType,a.xSpacing,a.ySpacing):"textureatlas"===a.type?this.cache.addTextureAtlas(a.key,a.url,a.data,d,a.format):"xml"===a.type&&this.cache.addXML(a.key,a.url,d),this.asyncComplete(a)},parseXml:function(a){var b;try{if(window.DOMParser){var c=new DOMParser;b=c.parseFromString(a,"text/xml")}else b=new ActiveXObject("Microsoft.XMLDOM"),b.async="false",b.loadXML(a)}catch(d){b=null}return b&&b.documentElement&&!b.getElementsByTagName("parsererror").length?b:null},updateProgress:function(){this.preloadSprite&&(0===this.preloadSprite.direction?this.preloadSprite.rect.width=Math.floor(this.preloadSprite.width/100*this.progress):this.preloadSprite.rect.height=Math.floor(this.preloadSprite.height/100*this.progress),this.preloadSprite.sprite?this.preloadSprite.sprite.updateCrop():this.preloadSprite=null)},totalLoadedFiles:function(){return this._loadedFileCount},totalQueuedFiles:function(){return this._totalFileCount-this._loadedFileCount},totalLoadedPacks:function(){return this._totalPackCount},totalQueuedPacks:function(){return this._totalPackCount-this._loadedPackCount}},Object.defineProperty(c.Loader.prototype,"progressFloat",{get:function(){var a=this._loadedFileCount/this._totalFileCount*100;return c.Math.clamp(a||0,0,100)}}),Object.defineProperty(c.Loader.prototype,"progress",{get:function(){return Math.round(this.progressFloat)}}),c.Loader.prototype.constructor=c.Loader,c.LoaderParser={bitmapFont:function(a,b,c,d){return this.xmlBitmapFont(a,b,c,d)},xmlBitmapFont:function(a,b,c,d){var e={},f=a.getElementsByTagName("info")[0],g=a.getElementsByTagName("common")[0];e.font=f.getAttribute("face"),e.size=parseInt(f.getAttribute("size"),10),e.lineHeight=parseInt(g.getAttribute("lineHeight"),10)+d,e.chars={};for(var h=a.getElementsByTagName("char"),i=0;i=400?0:100,this.dom.getOffset(this.game.canvas,this.offset);var b=this._parentBounds.width,d=this._parentBounds.height,e=this.getParentBounds(this._parentBounds),f=e.width!==b||e.height!==d,g=this.updateOrientationState();(f||g)&&(this.onResize&&this.onResize.call(this.onResizeContext,this,e),this.updateLayout(),this.signalSizeChange());var h=2*this._updateThrottle;this._updateThrottle=b||0>=c)return a;var e=b,f=a.height*b/a.width,g=a.width*c/a.height,h=c,i=g>b;return i=i?d:!d,i?(a.width=Math.floor(e),a.height=Math.floor(f)):(a.width=Math.floor(g),a.height=Math.floor(h)),a},destroy:function(){this.game.onResume.remove(this._gameResumed,this),window.removeEventListener("orientationchange",this._orientationChange,!1),window.removeEventListener("resize",this._windowResize,!1),this.compatibility.supportsFullScreen&&(document.removeEventListener("webkitfullscreenchange",this._fullScreenChange,!1),document.removeEventListener("mozfullscreenchange",this._fullScreenChange,!1),document.removeEventListener("MSFullscreenChange",this._fullScreenChange,!1),document.removeEventListener("fullscreenchange",this._fullScreenChange,!1),document.removeEventListener("webkitfullscreenerror",this._fullScreenError,!1),document.removeEventListener("mozfullscreenerror",this._fullScreenError,!1),document.removeEventListener("MSFullscreenError",this._fullScreenError,!1),document.removeEventListener("fullscreenerror",this._fullScreenError,!1))}},c.ScaleManager.prototype.constructor=c.ScaleManager,Object.defineProperty(c.ScaleManager.prototype,"boundingParent",{get:function(){if(this.parentIsWindow||this.isFullScreen&&!this._createdFullScreenTarget)return null;var a=this.game.canvas&&this.game.canvas.parentNode;return a||null}}),Object.defineProperty(c.ScaleManager.prototype,"scaleMode",{get:function(){return this._scaleMode},set:function(a){return a!==this._scaleMode&&(this.isFullScreen||(this.updateDimensions(this._gameSize.width,this._gameSize.height,!0),this.queueUpdate(!0)),this._scaleMode=a),this._scaleMode}}),Object.defineProperty(c.ScaleManager.prototype,"fullScreenScaleMode",{get:function(){return this._fullScreenScaleMode},set:function(a){return a!==this._fullScreenScaleMode&&(this.isFullScreen?(this.prepScreenMode(!1),this._fullScreenScaleMode=a,this.prepScreenMode(!0),this.queueUpdate(!0)):this._fullScreenScaleMode=a),this._fullScreenScaleMode}}),Object.defineProperty(c.ScaleManager.prototype,"currentScaleMode",{get:function(){return this.isFullScreen?this._fullScreenScaleMode:this._scaleMode}}),Object.defineProperty(c.ScaleManager.prototype,"pageAlignHorizontally",{get:function(){return this._pageAlignHorizontally},set:function(a){a!==this._pageAlignHorizontally&&(this._pageAlignHorizontally=a,this.queueUpdate(!0))}}),Object.defineProperty(c.ScaleManager.prototype,"pageAlignVertically",{get:function(){return this._pageAlignVertically},set:function(a){a!==this._pageAlignVertically&&(this._pageAlignVertically=a,this.queueUpdate(!0))}}),Object.defineProperty(c.ScaleManager.prototype,"isFullScreen",{get:function(){return!!(document.fullscreenElement||document.webkitFullscreenElement||document.mozFullScreenElement||document.msFullscreenElement)}}),Object.defineProperty(c.ScaleManager.prototype,"isPortrait",{get:function(){return"portrait"===this.classifyOrientation(this.screenOrientation)}}),Object.defineProperty(c.ScaleManager.prototype,"isLandscape",{get:function(){return"landscape"===this.classifyOrientation(this.screenOrientation)}}),Object.defineProperty(c.ScaleManager.prototype,"isGamePortrait",{get:function(){return this.height>this.width}}),Object.defineProperty(c.ScaleManager.prototype,"isGameLandscape",{get:function(){return this.width>this.height}});var m=function(){};return c.Utils.Debug=m,c.Utils.Debug.prototype={isDisabled:!0,boot:m,preUpdate:m,reset:m,start:m,stop:m,line:m,soundInfo:m,cameraInfo:m,timer:m,pointer:m,spriteInputInfo:m,key:m,inputInfo:m,spriteBounds:m,ropeSegments:m,spriteInfo:m,spriteCoords:m,lineInfo:m,pixel:m,geom:m,rectangle:m,text:m,quadTree:m,body:m,bodyInfo:m,box2dWorld:m,box2dBody:m},c.Utils.Debug.prototype.constructor=c.Utils.Debug,c.DOM={getOffset:function(a,b){b=b||new c.Point;var d=a.getBoundingClientRect(),e=c.DOM.scrollY,f=c.DOM.scrollX,g=document.documentElement.clientTop,h=document.documentElement.clientLeft;return b.x=d.left+f-h,b.y=d.top+e-g,b},getBounds:function(a,b){return void 0===b&&(b=0),a=a&&!a.nodeType?a[0]:a,a&&1===a.nodeType?this.calibrate(a.getBoundingClientRect(),b):!1},calibrate:function(a,b){b=+b||0;var c={width:0,height:0,left:0,right:0,top:0,bottom:0};return c.width=(c.right=a.right+b)-(c.left=a.left-b),c.height=(c.bottom=a.bottom+b)-(c.top=a.top-b),c},getAspectRatio:function(a){a=null==a?this.visualBounds:1===a.nodeType?this.getBounds(a):a;var b=a.width,c=a.height;return"function"==typeof b&&(b=b.call(a)),"function"==typeof c&&(c=c.call(a)),b/c},inLayoutViewport:function(a,b){var c=this.getBounds(a,b);return!!c&&c.bottom>=0&&c.right>=0&&c.top<=this.layoutBounds.width&&c.left<=this.layoutBounds.height},getScreenOrientation:function(a){var b=window.screen,c=b.orientation||b.mozOrientation||b.msOrientation;if(c&&"string"==typeof c.type)return c.type;if("string"==typeof c)return c;var d="portrait-primary",e="landscape-primary";if("screen"===a)return b.height>b.width?d:e;if("viewport"===a)return this.visualBounds.height>this.visualBounds.width?d:e;if("window.orientation"===a&&"number"==typeof window.orientation)return 0===window.orientation||180===window.orientation?d:e;if(window.matchMedia){if(window.matchMedia("(orientation: portrait)").matches)return d;if(window.matchMedia("(orientation: landscape)").matches)return e}return this.visualBounds.height>this.visualBounds.width?d:e},visualBounds:new c.Rectangle,layoutBounds:new c.Rectangle,documentBounds:new c.Rectangle},c.Device.whenReady(function(a){var b=window&&"pageXOffset"in window?function(){return window.pageXOffset}:function(){return document.documentElement.scrollLeft},d=window&&"pageYOffset"in window?function(){return window.pageYOffset}:function(){return document.documentElement.scrollTop};Object.defineProperty(c.DOM,"scrollX",{get:b}),Object.defineProperty(c.DOM,"scrollY",{get:d}),Object.defineProperty(c.DOM.visualBounds,"x",{get:b}),Object.defineProperty(c.DOM.visualBounds,"y",{get:d}),Object.defineProperty(c.DOM.layoutBounds,"x",{value:0}),Object.defineProperty(c.DOM.layoutBounds,"y",{value:0});var e=a.desktop&&document.documentElement.clientWidth<=window.innerWidth&&document.documentElement.clientHeight<=window.innerHeight;if(e){var f=function(){return Math.max(window.innerWidth,document.documentElement.clientWidth)},g=function(){return Math.max(window.innerHeight,document.documentElement.clientHeight)};Object.defineProperty(c.DOM.visualBounds,"width",{get:f}),Object.defineProperty(c.DOM.visualBounds,"height",{get:g}),Object.defineProperty(c.DOM.layoutBounds,"width",{get:f}),Object.defineProperty(c.DOM.layoutBounds,"height",{get:g})}else Object.defineProperty(c.DOM.visualBounds,"width",{get:function(){return window.innerWidth}}),Object.defineProperty(c.DOM.visualBounds,"height",{get:function(){return window.innerHeight}}),Object.defineProperty(c.DOM.layoutBounds,"width",{get:function(){var a=document.documentElement.clientWidth,b=window.innerWidth;return b>a?b:a}}),Object.defineProperty(c.DOM.layoutBounds,"height",{get:function(){var a=document.documentElement.clientHeight,b=window.innerHeight;return b>a?b:a}});Object.defineProperty(c.DOM.documentBounds,"x",{value:0}),Object.defineProperty(c.DOM.documentBounds,"y",{value:0}),Object.defineProperty(c.DOM.documentBounds,"width",{get:function(){var a=document.documentElement;return Math.max(a.clientWidth,a.offsetWidth,a.scrollWidth)}}),Object.defineProperty(c.DOM.documentBounds,"height",{get:function(){var a=document.documentElement;return Math.max(a.clientHeight,a.offsetHeight,a.scrollHeight)}})},null,!0),c.ArraySet=function(a){this.position=0,this.list=a||[]},c.ArraySet.prototype={add:function(a){return this.exists(a)||this.list.push(a),a},getIndex:function(a){return this.list.indexOf(a)},getByKey:function(a,b){for(var c=this.list.length;c--;)if(this.list[c][a]===b)return this.list[c];return null},exists:function(a){return this.list.indexOf(a)>-1},reset:function(){this.list.length=0},remove:function(a){var b=this.list.indexOf(a);return b>-1?(this.list.splice(b,1),a):void 0},setAll:function(a,b){for(var c=this.list.length;c--;)this.list[c]&&(this.list[c][a]=b)},callAll:function(a){for(var b=Array.prototype.slice.call(arguments,1),c=this.list.length;c--;)this.list[c]&&this.list[c][a]&&this.list[c][a].apply(this.list[c],b)},removeAll:function(a){void 0===a&&(a=!1);for(var b=this.list.length;b--;)if(this.list[b]){var c=this.remove(this.list[b]);a&&c.destroy()}this.position=0,this.list=[]}},Object.defineProperty(c.ArraySet.prototype,"total",{get:function(){return this.list.length}}),Object.defineProperty(c.ArraySet.prototype,"first",{get:function(){return this.position=0,this.list.length>0?this.list[0]:null}}),Object.defineProperty(c.ArraySet.prototype,"next",{get:function(){return this.position0;b--){var c=Math.floor(Math.random()*(b+1)),d=a[b];a[b]=a[c],a[c]=d}return a},transposeMatrix:function(a){for(var b=a.length,c=a[0].length,d=new Array(c),e=0;c>e;e++){d[e]=new Array(b);for(var f=b-1;f>-1;f--)d[e][f]=a[f][e]}return d},rotateMatrix:function(a,b){if("string"!=typeof b&&(b=(b%360+360)%360),90===b||-270===b||"rotateLeft"===b)a=c.ArrayUtils.transposeMatrix(a),a=a.reverse();else if(-90===b||270===b||"rotateRight"===b)a=a.reverse(),a=c.ArrayUtils.transposeMatrix(a);else if(180===Math.abs(b)||"rotate180"===b){for(var d=0;d=e-a?e:d},rotateRight:function(a){var b=a.pop();return a.unshift(b),b},rotateLeft:function(a){var b=a.shift();return a.push(b),b},rotate:function(a){var b=a.shift();return a.push(b),b},numberArray:function(a,b){for(var c=[],d=a;b>=d;d++)c.push(d);return c},numberArrayStep:function(a,b,d){void 0!==a&&null!==a||(a=0),void 0!==b&&null!==b||(b=a,a=0),void 0===d&&(d=1);for(var e=[],f=Math.max(c.Math.roundAwayFromZero((b-a)/(d||1)),0),g=0;f>g;g++)e.push(a),a+=d;return e}},c.LinkedList=function(){this.next=null,this.prev=null,this.first=null,this.last=null,this.total=0},c.LinkedList.prototype={add:function(a){return 0===this.total&&null===this.first&&null===this.last?(this.first=a, +this.last=a,this.next=a,a.prev=this,this.total++,a):(this.last.next=a,a.prev=this.last,this.last=a,this.total++,a)},reset:function(){this.first=null,this.last=null,this.next=null,this.prev=null,this.total=0},remove:function(a){return 1===this.total?(this.reset(),void(a.next=a.prev=null)):(a===this.first?this.first=this.first.next:a===this.last&&(this.last=this.last.prev),a.prev&&(a.prev.next=a.next),a.next&&(a.next.prev=a.prev),a.next=a.prev=null,null===this.first&&(this.last=null),void this.total--)},callAll:function(a){if(this.first&&this.last){var b=this.first;do b&&b[a]&&b[a].call(b),b=b.next;while(b!=this.last.next)}}},c.LinkedList.prototype.constructor=c.LinkedList,c.Create=function(a){this.game=a,this.bmd=null,this.canvas=null,this.ctx=null,this.palettes=[{0:"#000",1:"#9D9D9D",2:"#FFF",3:"#BE2633",4:"#E06F8B",5:"#493C2B",6:"#A46422",7:"#EB8931",8:"#F7E26B",9:"#2F484E",A:"#44891A",B:"#A3CE27",C:"#1B2632",D:"#005784",E:"#31A2F2",F:"#B2DCEF"},{0:"#000",1:"#191028",2:"#46af45",3:"#a1d685",4:"#453e78",5:"#7664fe",6:"#833129",7:"#9ec2e8",8:"#dc534b",9:"#e18d79",A:"#d6b97b",B:"#e9d8a1",C:"#216c4b",D:"#d365c8",E:"#afaab9",F:"#f5f4eb"},{0:"#000",1:"#2234d1",2:"#0c7e45",3:"#44aacc",4:"#8a3622",5:"#5c2e78",6:"#aa5c3d",7:"#b5b5b5",8:"#5e606e",9:"#4c81fb",A:"#6cd947",B:"#7be2f9",C:"#eb8a60",D:"#e23d69",E:"#ffd93f",F:"#fff"},{0:"#000",1:"#fff",2:"#8b4131",3:"#7bbdc5",4:"#8b41ac",5:"#6aac41",6:"#3931a4",7:"#d5de73",8:"#945a20",9:"#5a4100",A:"#bd736a",B:"#525252",C:"#838383",D:"#acee8b",E:"#7b73de",F:"#acacac"},{0:"#000",1:"#191028",2:"#46af45",3:"#a1d685",4:"#453e78",5:"#7664fe",6:"#833129",7:"#9ec2e8",8:"#dc534b",9:"#e18d79",A:"#d6b97b",B:"#e9d8a1",C:"#216c4b",D:"#d365c8",E:"#afaab9",F:"#fff"}]},c.Create.PALETTE_ARNE=0,c.Create.PALETTE_JMP=1,c.Create.PALETTE_CGA=2,c.Create.PALETTE_C64=3,c.Create.PALETTE_JAPANESE_MACHINE=4,c.Create.prototype={texture:function(a,b,c,d,e){void 0===c&&(c=8),void 0===d&&(d=c),void 0===e&&(e=0);var f=b[0].length*c,g=b.length*d;null===this.bmd&&(this.bmd=this.game.make.bitmapData(),this.canvas=this.bmd.canvas,this.ctx=this.bmd.context),this.bmd.resize(f,g),this.bmd.clear();for(var h=0;hg;g+=e)this.ctx.fillRect(0,g,b,1);for(var h=0;b>h;h+=d)this.ctx.fillRect(h,0,1,c);return this.bmd.generateTexture(a)}},c.Create.prototype.constructor=c.Create,c.FlexGrid=function(a,b,d){this.game=a.game,this.manager=a,this.width=b,this.height=d,this.boundsCustom=new c.Rectangle(0,0,b,d),this.boundsFluid=new c.Rectangle(0,0,b,d),this.boundsFull=new c.Rectangle(0,0,b,d),this.boundsNone=new c.Rectangle(0,0,b,d),this.positionCustom=new c.Point(0,0),this.positionFluid=new c.Point(0,0),this.positionFull=new c.Point(0,0),this.positionNone=new c.Point(0,0),this.scaleCustom=new c.Point(1,1),this.scaleFluid=new c.Point(1,1),this.scaleFluidInversed=new c.Point(1,1),this.scaleFull=new c.Point(1,1),this.scaleNone=new c.Point(1,1),this.customWidth=0,this.customHeight=0,this.customOffsetX=0,this.customOffsetY=0,this.ratioH=b/d,this.ratioV=d/b,this.multiplier=0,this.layers=[]},c.FlexGrid.prototype={setSize:function(a,b){this.width=a,this.height=b,this.ratioH=a/b,this.ratioV=b/a,this.scaleNone=new c.Point(1,1),this.boundsNone.width=this.width,this.boundsNone.height=this.height,this.refresh()},createCustomLayer:function(a,b,d,e){void 0===e&&(e=!0),this.customWidth=a,this.customHeight=b,this.boundsCustom.width=a,this.boundsCustom.height=b;var f=new c.FlexLayer(this,this.positionCustom,this.boundsCustom,this.scaleCustom);return e&&this.game.world.add(f),this.layers.push(f),"undefined"!=typeof d&&null!==typeof d&&f.addMultiple(d),f},createFluidLayer:function(a,b){void 0===b&&(b=!0);var d=new c.FlexLayer(this,this.positionFluid,this.boundsFluid,this.scaleFluid);return b&&this.game.world.add(d),this.layers.push(d),"undefined"!=typeof a&&null!==typeof a&&d.addMultiple(a),d},createFullLayer:function(a){var b=new c.FlexLayer(this,this.positionFull,this.boundsFull,this.scaleFluid);return this.game.world.add(b),this.layers.push(b),"undefined"!=typeof a&&b.addMultiple(a),b},createFixedLayer:function(a){var b=new c.FlexLayer(this,this.positionNone,this.boundsNone,this.scaleNone);return this.game.world.add(b),this.layers.push(b),"undefined"!=typeof a&&b.addMultiple(a),b},reset:function(){for(var a=this.layers.length;a--;)this.layers[a].persist||(this.layers[a].position=null,this.layers[a].scale=null,this.layers.slice(a,1))},onResize:function(a,b){this.ratioH=a/b,this.ratioV=b/a,this.refresh(a,b)},refresh:function(){this.multiplier=Math.min(this.manager.height/this.height,this.manager.width/this.width),this.boundsFluid.width=Math.round(this.width*this.multiplier),this.boundsFluid.height=Math.round(this.height*this.multiplier),this.scaleFluid.set(this.boundsFluid.width/this.width,this.boundsFluid.height/this.height),this.scaleFluidInversed.set(this.width/this.boundsFluid.width,this.height/this.boundsFluid.height),this.scaleFull.set(this.boundsFull.width/this.width,this.boundsFull.height/this.height),this.boundsFull.width=Math.round(this.manager.width*this.scaleFluidInversed.x),this.boundsFull.height=Math.round(this.manager.height*this.scaleFluidInversed.y),this.boundsFluid.centerOn(this.manager.bounds.centerX,this.manager.bounds.centerY),this.boundsNone.centerOn(this.manager.bounds.centerX,this.manager.bounds.centerY),this.positionFluid.set(this.boundsFluid.x,this.boundsFluid.y),this.positionNone.set(this.boundsNone.x,this.boundsNone.y)},fitSprite:function(a){this.manager.scaleSprite(a),a.x=this.manager.bounds.centerX,a.y=this.manager.bounds.centerY},debug:function(){this.game.debug.text(this.boundsFluid.width+" x "+this.boundsFluid.height,this.boundsFluid.x+4,this.boundsFluid.y+16),this.game.debug.geom(this.boundsFluid,"rgba(255,0,0,0.9",!1)}},c.FlexGrid.prototype.constructor=c.FlexGrid,c.FlexLayer=function(a,b,d,e){c.Group.call(this,a.game,null,"__flexLayer"+a.game.rnd.uuid(),!1),this.manager=a.manager,this.grid=a,this.persist=!1,this.position=b,this.bounds=d,this.scale=e,this.topLeft=d.topLeft,this.topMiddle=new c.Point(d.halfWidth,0),this.topRight=d.topRight,this.bottomLeft=d.bottomLeft,this.bottomMiddle=new c.Point(d.halfWidth,d.bottom),this.bottomRight=d.bottomRight},c.FlexLayer.prototype=Object.create(c.Group.prototype),c.FlexLayer.prototype.constructor=c.FlexLayer,c.FlexLayer.prototype.resize=function(){},c.FlexLayer.prototype.debug=function(){this.game.debug.text(this.bounds.width+" x "+this.bounds.height,this.bounds.x+4,this.bounds.y+16),this.game.debug.geom(this.bounds,"rgba(0,0,255,0.9",!1),this.game.debug.geom(this.topLeft,"rgba(255,255,255,0.9"),this.game.debug.geom(this.topMiddle,"rgba(255,255,255,0.9"),this.game.debug.geom(this.topRight,"rgba(255,255,255,0.9")},c.Color={packPixel:function(a,b,d,e){return c.Device.LITTLE_ENDIAN?(e<<24|d<<16|b<<8|a)>>>0:(a<<24|b<<16|d<<8|e)>>>0},unpackPixel:function(a,b,d,e){return void 0!==b&&null!==b||(b=c.Color.createColor()),void 0!==d&&null!==d||(d=!1),void 0!==e&&null!==e||(e=!1),c.Device.LITTLE_ENDIAN?(b.a=(4278190080&a)>>>24,b.b=(16711680&a)>>>16,b.g=(65280&a)>>>8,b.r=255&a):(b.r=(4278190080&a)>>>24,b.g=(16711680&a)>>>16,b.b=(65280&a)>>>8,b.a=255&a),b.color=a,b.rgba="rgba("+b.r+","+b.g+","+b.b+","+b.a/255+")",d&&c.Color.RGBtoHSL(b.r,b.g,b.b,b),e&&c.Color.RGBtoHSV(b.r,b.g,b.b,b),b},fromRGBA:function(a,b){return b||(b=c.Color.createColor()),b.r=(4278190080&a)>>>24,b.g=(16711680&a)>>>16,b.b=(65280&a)>>>8,b.a=255&a,b.rgba="rgba("+b.r+","+b.g+","+b.b+","+b.a+")",b},toRGBA:function(a,b,c,d){return a<<24|b<<16|c<<8|d},toABGR:function(a,b,c,d){return(d<<24|c<<16|b<<8|a)>>>0},RGBtoHSL:function(a,b,d,e){e||(e=c.Color.createColor(a,b,d,1)),a/=255,b/=255,d/=255;var f=Math.min(a,b,d),g=Math.max(a,b,d);if(e.h=0,e.s=0,e.l=(g+f)/2,g!==f){var h=g-f;e.s=e.l>.5?h/(2-g-f):h/(g+f),g===a?e.h=(b-d)/h+(d>b?6:0):g===b?e.h=(d-a)/h+2:g===d&&(e.h=(a-b)/h+4),e.h/=6}return e},HSLtoRGB:function(a,b,d,e){if(e?(e.r=d,e.g=d,e.b=d):e=c.Color.createColor(d,d,d),0!==b){var f=.5>d?d*(1+b):d+b-d*b,g=2*d-f;e.r=c.Color.hueToColor(g,f,a+1/3),e.g=c.Color.hueToColor(g,f,a),e.b=c.Color.hueToColor(g,f,a-1/3)}return e.r=Math.floor(255*e.r|0),e.g=Math.floor(255*e.g|0),e.b=Math.floor(255*e.b|0),c.Color.updateColor(e),e},RGBtoHSV:function(a,b,d,e){e||(e=c.Color.createColor(a,b,d,255)),a/=255,b/=255,d/=255;var f=Math.min(a,b,d),g=Math.max(a,b,d),h=g-f;return e.h=0,e.s=0===g?0:h/g,e.v=g,g!==f&&(g===a?e.h=(b-d)/h+(d>b?6:0):g===b?e.h=(d-a)/h+2:g===d&&(e.h=(a-b)/h+4),e.h/=6),e},HSVtoRGB:function(a,b,d,e){void 0===e&&(e=c.Color.createColor(0,0,0,1,a,b,0,d));var f,g,h,i=Math.floor(6*a),j=6*a-i,k=d*(1-b),l=d*(1-j*b),m=d*(1-(1-j)*b);switch(i%6){case 0:f=d,g=m,h=k;break;case 1:f=l,g=d,h=k;break;case 2:f=k,g=d,h=m;break;case 3:f=k,g=l,h=d;break;case 4:f=m,g=k,h=d;break;case 5:f=d,g=k,h=l}return e.r=Math.floor(255*f),e.g=Math.floor(255*g),e.b=Math.floor(255*h),c.Color.updateColor(e),e},hueToColor:function(a,b,c){return 0>c&&(c+=1),c>1&&(c-=1),1/6>c?a+6*(b-a)*c:.5>c?b:2/3>c?a+(b-a)*(2/3-c)*6:a},createColor:function(a,b,d,e,f,g,h,i){var j={r:a||0,g:b||0,b:d||0,a:e||1,h:f||0,s:g||0,l:h||0,v:i||0,color:0,color32:0,rgba:""};return c.Color.updateColor(j)},updateColor:function(a){return a.rgba="rgba("+a.r.toString()+","+a.g.toString()+","+a.b.toString()+","+a.a.toString()+")",a.color=c.Color.getColor(a.r,a.g,a.b),a.color32=c.Color.getColor32(255*a.a,a.r,a.g,a.b),a},getColor32:function(a,b,c,d){return a<<24|b<<16|c<<8|d},getColor:function(a,b,c){return a<<16|b<<8|c},RGBtoString:function(a,b,d,e,f){return void 0===e&&(e=255),void 0===f&&(f="#"),"#"===f?"#"+((1<<24)+(a<<16)+(b<<8)+d).toString(16).slice(1):"0x"+c.Color.componentToHex(e)+c.Color.componentToHex(a)+c.Color.componentToHex(b)+c.Color.componentToHex(d)},hexToRGB:function(a){var b=c.Color.hexToColor(a);return b?c.Color.getColor32(b.a,b.r,b.g,b.b):void 0},hexToColor:function(a,b){a=a.replace(/^(?:#|0x)?([a-f\d])([a-f\d])([a-f\d])$/i,function(a,b,c,d){return b+b+c+c+d+d});var d=/^(?:#|0x)?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(a);if(d){var e=parseInt(d[1],16),f=parseInt(d[2],16),g=parseInt(d[3],16);b?(b.r=e,b.g=f,b.b=g):b=c.Color.createColor(e,f,g)}return b},webToColor:function(a,b){b||(b=c.Color.createColor());var d=/^rgba?\(\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*(?:,\s*(\d+(?:\.\d+)?))?\s*\)$/.exec(a);return d&&(b.r=parseInt(d[1],10),b.g=parseInt(d[2],10),b.b=parseInt(d[3],10),b.a=void 0!==d[4]?parseFloat(d[4]):1,c.Color.updateColor(b)),b},valueToColor:function(a,b){if(b||(b=c.Color.createColor()),"string"==typeof a)return 0===a.indexOf("rgb")?c.Color.webToColor(a,b):(b.a=1,c.Color.hexToColor(a,b));if("number"==typeof a){var d=c.Color.getRGB(a);return b.r=d.r,b.g=d.g,b.b=d.b,b.a=d.a/255,b}return b},componentToHex:function(a){var b=a.toString(16);return 1==b.length?"0"+b:b},HSVColorWheel:function(a,b){void 0===a&&(a=1),void 0===b&&(b=1);for(var d=[],e=0;359>=e;e++)d.push(c.Color.HSVtoRGB(e/359,a,b));return d},HSLColorWheel:function(a,b){void 0===a&&(a=.5),void 0===b&&(b=.5);for(var d=[],e=0;359>=e;e++)d.push(c.Color.HSLtoRGB(e/359,a,b));return d},interpolateColor:function(a,b,d,e,f){void 0===f&&(f=255);var g=c.Color.getRGB(a),h=c.Color.getRGB(b),i=(h.red-g.red)*e/d+g.red,j=(h.green-g.green)*e/d+g.green,k=(h.blue-g.blue)*e/d+g.blue;return c.Color.getColor32(f,i,j,k)},interpolateColorWithRGB:function(a,b,d,e,f,g){var h=c.Color.getRGB(a),i=(b-h.red)*g/f+h.red,j=(d-h.green)*g/f+h.green,k=(e-h.blue)*g/f+h.blue;return c.Color.getColor(i,j,k)},interpolateRGB:function(a,b,d,e,f,g,h,i){var j=(e-a)*i/h+a,k=(f-b)*i/h+b,l=(g-d)*i/h+d;return c.Color.getColor(j,k,l)},getRandomColor:function(a,b,d){if(void 0===a&&(a=0),void 0===b&&(b=255),void 0===d&&(d=255),b>255||a>b)return c.Color.getColor(255,255,255);var e=a+Math.round(Math.random()*(b-a)),f=a+Math.round(Math.random()*(b-a)),g=a+Math.round(Math.random()*(b-a));return c.Color.getColor32(d,e,f,g)},getRGB:function(a){return a>16777215?{alpha:a>>>24,red:a>>16&255,green:a>>8&255,blue:255&a,a:a>>>24,r:a>>16&255,g:a>>8&255,b:255&a}:{alpha:255,red:a>>16&255,green:a>>8&255,blue:255&a,a:255,r:a>>16&255,g:a>>8&255,b:255&a}},getWebRGB:function(a){if("object"==typeof a)return"rgba("+a.r.toString()+","+a.g.toString()+","+a.b.toString()+","+(a.a/255).toString()+")";var b=c.Color.getRGB(a);return"rgba("+b.r.toString()+","+b.g.toString()+","+b.b.toString()+","+(b.a/255).toString()+")"},getAlpha:function(a){return a>>>24},getAlphaFloat:function(a){return(a>>>24)/255},getRed:function(a){return a>>16&255},getGreen:function(a){return a>>8&255},getBlue:function(a){return 255&a},blendNormal:function(a){return a},blendLighten:function(a,b){return b>a?b:a},blendDarken:function(a,b){return b>a?a:b},blendMultiply:function(a,b){return a*b/255},blendAverage:function(a,b){return(a+b)/2},blendAdd:function(a,b){return Math.min(255,a+b)},blendSubtract:function(a,b){return Math.max(0,a+b-255)},blendDifference:function(a,b){return Math.abs(a-b)},blendNegation:function(a,b){return 255-Math.abs(255-a-b)},blendScreen:function(a,b){return 255-((255-a)*(255-b)>>8)},blendExclusion:function(a,b){return a+b-2*a*b/255},blendOverlay:function(a,b){return 128>b?2*a*b/255:255-2*(255-a)*(255-b)/255},blendSoftLight:function(a,b){return 128>b?2*((a>>1)+64)*(b/255):255-2*(255-((a>>1)+64))*(255-b)/255},blendHardLight:function(a,b){return c.Color.blendOverlay(b,a)},blendColorDodge:function(a,b){return 255===b?b:Math.min(255,(a<<8)/(255-b))},blendColorBurn:function(a,b){return 0===b?b:Math.max(0,255-(255-a<<8)/b)},blendLinearDodge:function(a,b){return c.Color.blendAdd(a,b)},blendLinearBurn:function(a,b){return c.Color.blendSubtract(a,b)},blendLinearLight:function(a,b){return 128>b?c.Color.blendLinearBurn(a,2*b):c.Color.blendLinearDodge(a,2*(b-128))},blendVividLight:function(a,b){return 128>b?c.Color.blendColorBurn(a,2*b):c.Color.blendColorDodge(a,2*(b-128))},blendPinLight:function(a,b){return 128>b?c.Color.blendDarken(a,2*b):c.Color.blendLighten(a,2*(b-128))},blendHardMix:function(a,b){return c.Color.blendVividLight(a,b)<128?0:255},blendReflect:function(a,b){return 255===b?b:Math.min(255,a*a/(255-b))},blendGlow:function(a,b){return c.Color.blendReflect(b,a)},blendPhoenix:function(a,b){return Math.min(a,b)-Math.max(a,b)+255}},c.Physics=function(a,b){b=b||{},this.game=a,this.config=b,this.arcade=null,this.p2=null,this.ninja=null,this.box2d=null,this.chipmunk=null,this.matter=null,this.parseConfig()},c.Physics.ARCADE=0,c.Physics.P2JS=1,c.Physics.NINJA=2,c.Physics.BOX2D=3,c.Physics.CHIPMUNK=4,c.Physics.MATTERJS=5,c.Physics.prototype={parseConfig:function(){this.config.hasOwnProperty("arcade")&&this.config.arcade!==!0||!c.Physics.hasOwnProperty("Arcade")||(this.arcade=new c.Physics.Arcade(this.game)),this.config.hasOwnProperty("ninja")&&this.config.ninja===!0&&c.Physics.hasOwnProperty("Ninja")&&(this.ninja=new c.Physics.Ninja(this.game)),this.config.hasOwnProperty("p2")&&this.config.p2===!0&&c.Physics.hasOwnProperty("P2")&&(this.p2=new c.Physics.P2(this.game,this.config)),this.config.hasOwnProperty("box2d")&&this.config.box2d===!0&&c.Physics.hasOwnProperty("BOX2D")&&(this.box2d=new c.Physics.BOX2D(this.game,this.config)),this.config.hasOwnProperty("matter")&&this.config.matter===!0&&c.Physics.hasOwnProperty("Matter")&&(this.matter=new c.Physics.Matter(this.game,this.config))},startSystem:function(a){a===c.Physics.ARCADE?this.arcade=new c.Physics.Arcade(this.game):a===c.Physics.P2JS?null===this.p2?this.p2=new c.Physics.P2(this.game,this.config):this.p2.reset():a===c.Physics.NINJA?this.ninja=new c.Physics.Ninja(this.game):a===c.Physics.BOX2D?null===this.box2d?this.box2d=new c.Physics.Box2D(this.game,this.config):this.box2d.reset():a===c.Physics.MATTERJS&&(null===this.matter?this.matter=new c.Physics.Matter(this.game,this.config):this.matter.reset())},enable:function(a,b,d){void 0===b&&(b=c.Physics.ARCADE),void 0===d&&(d=!1),b===c.Physics.ARCADE?this.arcade.enable(a):b===c.Physics.P2JS&&this.p2?this.p2.enable(a,d):b===c.Physics.NINJA&&this.ninja?this.ninja.enableAABB(a):b===c.Physics.BOX2D&&this.box2d?this.box2d.enable(a):b===c.Physics.MATTERJS&&this.matter?this.matter.enable(a):console.warn(a.key+" is attempting to enable a physics body using an unknown physics system.")},preUpdate:function(){this.p2&&this.p2.preUpdate(),this.box2d&&this.box2d.preUpdate(),this.matter&&this.matter.preUpdate()},update:function(){this.p2&&this.p2.update(),this.box2d&&this.box2d.update(),this.matter&&this.matter.update()},setBoundsToWorld:function(){this.arcade&&this.arcade.setBoundsToWorld(),this.ninja&&this.ninja.setBoundsToWorld(),this.p2&&this.p2.setBoundsToWorld(),this.box2d&&this.box2d.setBoundsToWorld(),this.matter&&this.matter.setBoundsToWorld()},clear:function(){this.p2&&this.p2.clear(),this.box2d&&this.box2d.clear(),this.matter&&this.matter.clear()},reset:function(){this.p2&&this.p2.reset(),this.box2d&&this.box2d.reset(),this.matter&&this.matter.reset()},destroy:function(){this.p2&&this.p2.destroy(),this.box2d&&this.box2d.destroy(),this.matter&&this.matter.destroy(),this.arcade=null,this.ninja=null,this.p2=null,this.box2d=null,this.matter=null}},c.Physics.prototype.constructor=c.Physics,c.Particles=function(a){this.game=a,this.emitters={},this.ID=0},c.Particles.prototype={add:function(a){return this.emitters[a.name]=a,a},remove:function(a){delete this.emitters[a.name]},update:function(){for(var a in this.emitters)this.emitters[a].exists&&this.emitters[a].update()}},c.Particles.prototype.constructor=c.Particles,void 0===PIXI.blendModes&&(PIXI.blendModes=c.blendModes),void 0===PIXI.scaleModes&&(PIXI.scaleModes=c.scaleModes),void 0===PIXI.Texture.emptyTexture&&(PIXI.Texture.emptyTexture=new PIXI.Texture(new PIXI.BaseTexture)),void 0===PIXI.DisplayObject._tempMatrix&&(PIXI.DisplayObject._tempMatrix=new PIXI.Matrix),void 0===PIXI.RenderTexture.tempMatrix&&(PIXI.RenderTexture.tempMatrix=new PIXI.Matrix),PIXI.Graphics&&void 0===PIXI.Graphics.POLY&&(PIXI.Graphics.POLY=c.POLYGON,PIXI.Graphics.RECT=c.RECTANGLE,PIXI.Graphics.CIRC=c.CIRCLE,PIXI.Graphics.ELIP=c.ELLIPSE,PIXI.Graphics.RREC=c.ROUNDEDRECTANGLE),PIXI.TextureSilentFail=!0,"undefined"!=typeof exports?("undefined"!=typeof module&&module.exports&&(exports=module.exports=c),exports.Phaser=c):"undefined"!=typeof define&&define.amd?define("Phaser",function(){return b.Phaser=c}()):b.Phaser=c,c}.call(this); //# sourceMappingURL=phaser-minimum.map \ No newline at end of file diff --git a/build/custom/phaser-no-physics.js b/build/custom/phaser-no-physics.js index 7442e88d5..f0edc8b62 100644 --- a/build/custom/phaser-no-physics.js +++ b/build/custom/phaser-no-physics.js @@ -7,7 +7,7 @@ * * Phaser - http://phaser.io * -* v2.5.0 "Five Kings" - Built: Fri Jun 17 2016 12:44:32 +* v2.5.1 "Fal Moran" - Built: Fri Jul 08 2016 15:42:03 * * By Richard Davey http://www.photonstorm.com @photonstorm * @@ -155,64 +155,91 @@ PIXI.defaultRenderOptions = { */ /** - * @author Mat Groves http://matgroves.com/ @Doormat23 - */ +* @author Mat Groves http://matgroves.com @Doormat23 +* @author Richard Davey +* @license {@link https://github.com/photonstorm/phaser/blob/master/license.txt|MIT License} +*/ /** - * The base class for all objects that are rendered on the screen. - * This is an abstract class and should not be used on its own rather it should be extended. - * - * @class DisplayObject - * @constructor - */ -PIXI.DisplayObject = function() -{ +* The base class for all objects that are rendered. Contains properties for position, scaling, +* rotation, masks and cache handling. +* +* This is an abstract class and should not be used on its own, rather it should be extended. +* +* It is used internally by the likes of PIXI.Sprite. +* +* @class PIXI.DisplayObject +* @constructor +*/ +PIXI.DisplayObject = function() { + /** - * The coordinate of the object relative to the local coordinates of the parent. - * - * @property position - * @type Point - */ + * The coordinates, in pixels, of this DisplayObject, relative to its parent container. + * + * The value of this property does not reflect any positioning happening further up the display list. + * To obtain that value please see the `worldPosition` property. + * + * @property {PIXI.Point} position + * @default + */ this.position = new PIXI.Point(0, 0); /** - * The scale factor of the object. - * - * @property scale - * @type Point - */ + * The scale of this DisplayObject. A scale of 1:1 represents the DisplayObject + * at its default size. A value of 0.5 would scale this DisplayObject by half, and so on. + * + * The value of this property does not reflect any scaling happening further up the display list. + * To obtain that value please see the `worldScale` property. + * + * @property {PIXI.Point} scale + * @default + */ this.scale = new PIXI.Point(1, 1); /** - * The pivot point of the displayObject that it rotates around - * - * @property pivot - * @type Point - */ + * The pivot point of this DisplayObject that it rotates around. The values are expressed + * in pixel values. + * @property {PIXI.Point} pivot + * @default + */ this.pivot = new PIXI.Point(0, 0); /** - * The rotation of the object in radians. - * - * @property rotation - * @type Number - */ + * The rotation of this DisplayObject. The value is given, and expressed, in radians, and is based on + * a right-handed orientation. + * + * The value of this property does not reflect any rotation happening further up the display list. + * To obtain that value please see the `worldRotation` property. + * + * @property {number} rotation + * @default + */ this.rotation = 0; /** - * The opacity of the object. - * - * @property alpha - * @type Number - */ + * The alpha value of this DisplayObject. A value of 1 is fully opaque. A value of 0 is transparent. + * Please note that an object with an alpha value of 0 is skipped during the render pass. + * + * The value of this property does not reflect any alpha values set further up the display list. + * To obtain that value please see the `worldAlpha` property. + * + * @property {number} alpha + * @default + */ this.alpha = 1; /** - * The visibility of the object. - * - * @property visible - * @type Boolean - */ + * The visibility of this DisplayObject. A value of `false` makes the object invisible. + * A value of `true` makes it visible. Please note that an object with a visible value of + * `false` is skipped during the render pass. Equally a DisplayObject with visible false will + * not render any of its children. + * + * The value of this property does not reflect any visible values set further up the display list. + * To obtain that value please see the `worldVisible` property. + * + * @property {boolean} visible + * @default + */ this.visible = true; /** @@ -225,688 +252,729 @@ PIXI.DisplayObject = function() this.hitArea = null; /** - * Can this object be rendered - * - * @property renderable - * @type Boolean - */ + * Should this DisplayObject be rendered by the renderer? An object with a renderable value of + * `false` is skipped during the render pass. + * + * @property {boolean} renderable + * @default + */ this.renderable = false; /** - * [read-only] The display object container that contains this display object. - * - * @property parent - * @type DisplayObjectContainer - * @readOnly - */ + * The parent DisplayObjectContainer that this DisplayObject is a child of. + * All DisplayObjects must belong to a parent in order to be rendered. + * The root parent is the Stage object. This property is set automatically when the + * DisplayObject is added to, or removed from, a DisplayObjectContainer. + * + * @property {PIXI.DisplayObjectContainer} parent + * @default + * @readOnly + */ this.parent = null; /** - * [read-only] The stage the display object is connected to, or undefined if it is not connected to the stage. - * - * @property stage - * @type Stage - * @readOnly - */ + * The stage that this DisplayObject is connected to. + * + * @property {PIXI.Stage} stage + * @default + * @readOnly + */ this.stage = null; /** - * [read-only] The multiplied alpha of the displayObject - * - * @property worldAlpha - * @type Number - * @readOnly - */ + * The multiplied alpha value of this DisplayObject. A value of 1 is fully opaque. A value of 0 is transparent. + * This value is the calculated total, based on the alpha values of all parents of this DisplayObjects + * in the display list. + * + * To obtain, and set, the local alpha value, see the `alpha` property. + * + * Note: This property is only updated at the end of the `updateTransform` call, once per render. Until + * that happens this property will contain values based on the previous frame. Be mindful of this if + * accessing this property outside of the normal game flow, i.e. from an asynchronous event callback. + * + * @property {number} worldAlpha + * @readOnly + */ this.worldAlpha = 1; /** - * [read-only] Current transform of the object based on world (parent) factors - * - * @property worldTransform - * @type Matrix - * @readOnly - * @private - */ + * The current transform of this DisplayObject. + * + * This property contains the calculated total, based on the transforms of all parents of this + * DisplayObject in the display list. + * + * Note: This property is only updated at the end of the `updateTransform` call, once per render. Until + * that happens this property will contain values based on the previous frame. Be mindful of this if + * accessing this property outside of the normal game flow, i.e. from an asynchronous event callback. + * + * @property {PIXI.Matrix} worldTransform + * @readOnly + */ this.worldTransform = new PIXI.Matrix(); /** - * The position of the Display Object based on the world transform. - * This value is updated at the end of updateTransform and takes all parent transforms into account. - * - * @property worldPosition - * @type Point - * @readOnly - */ + * The coordinates, in pixels, of this DisplayObject within the world. + * + * This property contains the calculated total, based on the positions of all parents of this + * DisplayObject in the display list. + * + * Note: This property is only updated at the end of the `updateTransform` call, once per render. Until + * that happens this property will contain values based on the previous frame. Be mindful of this if + * accessing this property outside of the normal game flow, i.e. from an asynchronous event callback. + * + * @property {PIXI.Point} worldPosition + * @readOnly + */ this.worldPosition = new PIXI.Point(0, 0); /** - * The scale of the Display Object based on the world transform. - * This value is updated at the end of updateTransform and takes all parent transforms into account. - * - * @property worldScale - * @type Point - * @readOnly - */ + * The global scale of this DisplayObject. + * + * This property contains the calculated total, based on the scales of all parents of this + * DisplayObject in the display list. + * + * Note: This property is only updated at the end of the `updateTransform` call, once per render. Until + * that happens this property will contain values based on the previous frame. Be mindful of this if + * accessing this property outside of the normal game flow, i.e. from an asynchronous event callback. + * + * @property {PIXI.Point} worldScale + * @readOnly + */ this.worldScale = new PIXI.Point(1, 1); /** - * The rotation of the Display Object, in radians, based on the world transform. - * This value is updated at the end of updateTransform and takes all parent transforms into account. - * - * @property worldRotation - * @type Number - * @readOnly - */ + * The rotation, in radians, of this DisplayObject. + * + * This property contains the calculated total, based on the rotations of all parents of this + * DisplayObject in the display list. + * + * Note: This property is only updated at the end of the `updateTransform` call, once per render. Until + * that happens this property will contain values based on the previous frame. Be mindful of this if + * accessing this property outside of the normal game flow, i.e. from an asynchronous event callback. + * + * @property {number} worldRotation + * @readOnly + */ this.worldRotation = 0; /** - * cached sin rotation and cos rotation - * - * @property _sr - * @type Number - * @private - */ - this._sr = 0; - - /** - * cached sin rotation and cos rotation - * - * @property _cr - * @type Number - * @private - */ - this._cr = 1; - - /** - * The area the filter is applied to like the hitArea this is used as more of an optimisation - * rather than figuring out the dimensions of the displayObject each frame you can set this rectangle - * - * @property filterArea - * @type Rectangle - */ + * The rectangular area used by filters when rendering a shader for this DisplayObject. + * + * @property {PIXI.Rectangle} filterArea + * @type Rectangle + * @default + */ this.filterArea = null; /** - * The original, cached bounds of the object - * - * @property _bounds - * @type Rectangle - * @private - */ + * @property {number} _sr - Cached rotation value. + * @private + */ + this._sr = 0; + + /** + * @property {number} _cr - Cached rotation value. + * @private + */ + this._cr = 1; + + /** + * @property {PIXI.Rectangle} _bounds - The cached bounds of this object. + * @private + */ this._bounds = new PIXI.Rectangle(0, 0, 1, 1); /** - * The most up-to-date bounds of the object - * - * @property _currentBounds - * @type Rectangle - * @private - */ + * @property {PIXI.Rectangle} _currentBounds - The most recently calculated bounds of this object. + * @private + */ this._currentBounds = null; /** - * The original, cached mask of the object - * - * @property _mask - * @type Rectangle - * @private - */ + * @property {PIXI.Rectangle} _mask - The cached mask of this object. + * @private + */ this._mask = null; /** - * Cached internal flag. - * - * @property _cacheAsBitmap - * @type Boolean - * @private - */ + * @property {boolean} _cacheAsBitmap - Internal cache as bitmap flag. + * @private + */ this._cacheAsBitmap = false; /** - * Cached internal flag. - * - * @property _cacheIsDirty - * @type Boolean - * @private - */ + * @property {boolean} _cacheIsDirty - Internal dirty cache flag. + * @private + */ this._cacheIsDirty = false; }; -// constructor PIXI.DisplayObject.prototype.constructor = PIXI.DisplayObject; -/** - * Destroy this DisplayObject. - * Removes all references to transformCallbacks, its parent, the stage, filters, bounds, mask and cached Sprites. - * - * @method destroy - */ -PIXI.DisplayObject.prototype.destroy = function() -{ - if (this.children) - { - var i = this.children.length; +PIXI.DisplayObject.prototype = { - while (i--) + /** + * Destroy this DisplayObject. + * + * Removes any cached sprites, sets renderable flag to false, and nulls references to the Stage, filters, + * bounds and mask. + * + * Also iteratively calls `destroy` on any children. + * + * @method PIXI.DisplayObject#destroy + */ + destroy: function () { + + if (this.children) { - this.children[i].destroy(); - } + var i = this.children.length; - this.children = []; - } - - this.hitArea = null; - this.parent = null; - this.stage = null; - this.worldTransform = null; - this.filterArea = null; - this._bounds = null; - this._currentBounds = null; - this._mask = null; - - // In case Pixi is still going to try and render it even though destroyed - this.renderable = false; - - this._destroyCachedSprite(); -}; - -/** - * [read-only] Indicates if the sprite is globally visible. - * - * @property worldVisible - * @type Boolean - */ -Object.defineProperty(PIXI.DisplayObject.prototype, 'worldVisible', { - - get: function() { - - var item = this; - - do - { - if (!item.visible) return false; - item = item.parent; - } - while(item); - - return true; - } - -}); - -/** - * Sets a mask for the displayObject. A mask is an object that limits the visibility of an object to the shape of the mask applied to it. - * In PIXI a regular mask must be a PIXI.Graphics object. This allows for much faster masking in canvas as it utilises shape clipping. - * To remove a mask, set this property to null. - * - * @property mask - * @type Graphics - */ -Object.defineProperty(PIXI.DisplayObject.prototype, 'mask', { - - get: function() { - return this._mask; - }, - - set: function(value) { - - if (this._mask) this._mask.isMask = false; - - this._mask = value; - - if (this._mask) this._mask.isMask = true; - } - -}); - -/** - * Sets the filters for the displayObject. - * IMPORTANT: This is a webGL only feature and will be ignored by the Canvas renderer. - * - * To remove filters simply set this property to 'null'. - * - * You cannot have a filter and a multiply blend mode active at the same time. Setting a filter will reset - * this objects blend mode to NORMAL. - * - * @property filters - * @type Array(Filter) - */ -Object.defineProperty(PIXI.DisplayObject.prototype, 'filters', { - - get: function() { - return this._filters; - }, - - set: function(value) { - - if (value) - { - // now put all the passes in one place.. - var passes = []; - - for (var i = 0; i < value.length; i++) + while (i--) { - var filterPasses = value[i].passes; - - for (var j = 0; j < filterPasses.length; j++) - { - passes.push(filterPasses[j]); - } + this.children[i].destroy(); } - // TODO change this as it is legacy - this._filterBlock = { target: this, filterPasses: passes }; + this.children = []; } - this._filters = value; + this.hitArea = null; + this.parent = null; + this.stage = null; + this.worldTransform = null; + this.filterArea = null; + this.renderable = false; - if (this.blendMode && this.blendMode === PIXI.blendModes.MULTIPLY) - { - this.blendMode = PIXI.blendModes.NORMAL; - } - } -}); + this._bounds = null; + this._currentBounds = null; + this._mask = null; -/** - * Set if this display object is cached as a bitmap. - * This basically takes a snap shot of the display object as it is at that moment. It can provide a performance benefit for complex static displayObjects. - * To remove simply set this property to 'null' - * @property cacheAsBitmap - * @type Boolean - */ -Object.defineProperty(PIXI.DisplayObject.prototype, 'cacheAsBitmap', { + this._destroyCachedSprite(); - get: function() { - return this._cacheAsBitmap; }, - set: function(value) { + /* + * Updates the transform matrix this DisplayObject uses for rendering. + * + * If the object has no parent, and no parent parameter is provided, it will default to + * Phaser.Game.World as the parent transform to use. If that is unavailable the transform fails to take place. + * + * The `parent` parameter has priority over the actual parent. Use it as a parent override. + * Setting it does **not** change the actual parent of this DisplayObject. + * + * Calling this method updates the `worldTransform`, `worldAlpha`, `worldPosition`, `worldScale` + * and `worldRotation` properties. + * + * If a `transformCallback` has been specified, it is called at the end of this method, and is passed + * the new, updated, worldTransform property, along with the parent transform used. + * + * @method PIXI.DisplayObject#updateTransform + * @param {PIXI.DisplayObject} [parent] - Optional parent to calculate this DisplayObjects transform from. + * @return {PIXI.DisplayObject} - A reference to this DisplayObject. + */ + updateTransform: function (parent) { - if (this._cacheAsBitmap === value) + if (!parent && !this.parent && !this.game) + { + return this; + } + + var p = this.parent; + + if (parent) + { + p = parent; + } + else if (!this.parent) + { + p = this.game.world; + } + + // create some matrix refs for easy access + var pt = p.worldTransform; + var wt = this.worldTransform; + + // temporary matrix variables + var a, b, c, d, tx, ty; + + // so if rotation is between 0 then we can simplify the multiplication process.. + if (this.rotation % PIXI.PI_2) + { + // check to see if the rotation is the same as the previous render. This means we only need to use sin and cos when rotation actually changes + if (this.rotation !== this.rotationCache) + { + this.rotationCache = this.rotation; + this._sr = Math.sin(this.rotation); + this._cr = Math.cos(this.rotation); + } + + // get the matrix values of the displayobject based on its transform properties.. + a = this._cr * this.scale.x; + b = this._sr * this.scale.x; + c = -this._sr * this.scale.y; + d = this._cr * this.scale.y; + tx = this.position.x; + ty = this.position.y; + + // check for pivot.. not often used so geared towards that fact! + if (this.pivot.x || this.pivot.y) + { + tx -= this.pivot.x * a + this.pivot.y * c; + ty -= this.pivot.x * b + this.pivot.y * d; + } + + // concat the parent matrix with the objects transform. + wt.a = a * pt.a + b * pt.c; + wt.b = a * pt.b + b * pt.d; + wt.c = c * pt.a + d * pt.c; + wt.d = c * pt.b + d * pt.d; + wt.tx = tx * pt.a + ty * pt.c + pt.tx; + wt.ty = tx * pt.b + ty * pt.d + pt.ty; + } + else + { + // lets do the fast version as we know there is no rotation.. + a = this.scale.x; + d = this.scale.y; + + tx = this.position.x - this.pivot.x * a; + ty = this.position.y - this.pivot.y * d; + + wt.a = a * pt.a; + wt.b = a * pt.b; + wt.c = d * pt.c; + wt.d = d * pt.d; + wt.tx = tx * pt.a + ty * pt.c + pt.tx; + wt.ty = tx * pt.b + ty * pt.d + pt.ty; + } + + // Set the World values + this.worldAlpha = this.alpha * p.worldAlpha; + this.worldPosition.set(wt.tx, wt.ty); + this.worldScale.set(this.scale.x * Math.sqrt(wt.a * wt.a + wt.c * wt.c), this.scale.y * Math.sqrt(wt.b * wt.b + wt.d * wt.d)); + this.worldRotation = Math.atan2(-wt.c, wt.d); + + // reset the bounds each time this is called! + this._currentBounds = null; + + // Custom callback? + if (this.transformCallback) + { + this.transformCallback.call(this.transformCallbackContext, wt, pt); + } + + return this; + + }, + + /** + * Sets the root Stage object that this DisplayObject is connected to. + * + * @method PIXI.DisplayObject#setStageReference + * @param {Phaser.Stage} stage - The stage that the object will have as its current stage reference + * @return {PIXI.DisplayObject} - A reference to this DisplayObject. + */ + setStageReference: function (stage) + { + this.stage = stage; + + return this; + + }, + + /** + * To be overridden by classes that require it. + * + * @method PIXI.DisplayObject#preUpdate + */ + preUpdate: function () { + + }, + + /** + * Generates a RenderTexture based on this DisplayObject, which can they be used to texture other Sprites. + * This can be useful if your DisplayObject is static, or complicated, and needs to be reused multiple times. + * + * Please note that no garbage collection takes place on old textures. It is up to you to destroy old textures, + * and references to them, so they don't linger in memory. + * + * @method PIXI.DisplayObject#generateTexture + * @param {number} [resolution=1] - The resolution of the texture being generated. + * @param {number} [scaleMode=PIXI.scaleModes.DEFAULT] - See {{#crossLink "PIXI/scaleModes:property"}}PIXI.scaleModes{{/crossLink}} for possible values. + * @param {PIXI.CanvasRenderer|PIXI.WebGLRenderer} renderer - The renderer used to generate the texture. + * @return {PIXI.RenderTexture} - A RenderTexture containing an image of this DisplayObject at the time it was invoked. + */ + generateTexture: function (resolution, scaleMode, renderer) { + + var bounds = this.getLocalBounds(); + + var renderTexture = new PIXI.RenderTexture(bounds.width | 0, bounds.height | 0, renderer, scaleMode, resolution); + + PIXI.DisplayObject._tempMatrix.tx = -bounds.x; + PIXI.DisplayObject._tempMatrix.ty = -bounds.y; + + renderTexture.render(this, PIXI.DisplayObject._tempMatrix); + + return renderTexture; + + }, + + /** + * If this DisplayObject has a cached Sprite, this method generates and updates it. + * + * @method PIXI.DisplayObject#updateCache + * @return {PIXI.DisplayObject} - A reference to this DisplayObject. + */ + updateCache: function () { + + this._generateCachedSprite(); + + return this; + + }, + + /** + * Calculates the global position of this DisplayObject, based on the position given. + * + * @method PIXI.DisplayObject#toGlobal + * @param {PIXI.Point} position - The global position to calculate from. + * @return {PIXI.Point} - A point object representing the position of this DisplayObject based on the global position given. + */ + toGlobal: function (position) { + + this.updateTransform(); + + return this.worldTransform.apply(position); + + }, + + /** + * Calculates the local position of this DisplayObject, relative to another point. + * + * @method PIXI.DisplayObject#toLocal + * @param {PIXI.Point} position - The world origin to calculate from. + * @param {PIXI.DisplayObject} [from] - An optional DisplayObject to calculate the global position from. + * @return {PIXI.Point} - A point object representing the position of this DisplayObject based on the global position given. + */ + toLocal: function (position, from) { + + if (from) + { + position = from.toGlobal(position); + } + + this.updateTransform(); + + return this.worldTransform.applyInverse(position); + + }, + + /** + * Internal method. + * + * @method PIXI.DisplayObject#_renderCachedSprite + * @private + * @param {Object} renderSession - The render session + */ + _renderCachedSprite: function (renderSession) { + + this._cachedSprite.worldAlpha = this.worldAlpha; + + if (renderSession.gl) + { + PIXI.Sprite.prototype._renderWebGL.call(this._cachedSprite, renderSession); + } + else + { + PIXI.Sprite.prototype._renderCanvas.call(this._cachedSprite, renderSession); + } + + }, + + /** + * Internal method. + * + * @method PIXI.DisplayObject#_generateCachedSprite + * @private + */ + _generateCachedSprite: function () { + + this._cacheAsBitmap = false; + + var bounds = this.getLocalBounds(); + + // Round it off and force non-zero dimensions + bounds.width = Math.max(1, Math.ceil(bounds.width)); + bounds.height = Math.max(1, Math.ceil(bounds.height)); + + this.updateTransform(); + + if (!this._cachedSprite) + { + var renderTexture = new PIXI.RenderTexture(bounds.width, bounds.height); + this._cachedSprite = new PIXI.Sprite(renderTexture); + this._cachedSprite.worldTransform = this.worldTransform; + } + else + { + this._cachedSprite.texture.resize(bounds.width, bounds.height); + } + + // Remove filters + var tempFilters = this._filters; + + this._filters = null; + this._cachedSprite.filters = tempFilters; + + PIXI.DisplayObject._tempMatrix.tx = -bounds.x; + PIXI.DisplayObject._tempMatrix.ty = -bounds.y; + + this._cachedSprite.texture.render(this, PIXI.DisplayObject._tempMatrix, true); + this._cachedSprite.anchor.x = -(bounds.x / bounds.width); + this._cachedSprite.anchor.y = -(bounds.y / bounds.height); + + this._filters = tempFilters; + + this._cacheAsBitmap = true; + + }, + + /** + * Destroys a cached Sprite. + * + * @method PIXI.DisplayObject#_destroyCachedSprite + * @private + */ + _destroyCachedSprite: function () { + + if (!this._cachedSprite) { return; } - if (value) - { - this._generateCachedSprite(); - } - else - { - this._destroyCachedSprite(); - } + this._cachedSprite.texture.destroy(true); - this._cacheAsBitmap = value; - } + this._cachedSprite = null; -}); - -/* - * Updates the object transform for rendering. - * - * If the object has no parent, and no parent parameter is provided, it will default to Phaser.Game.World as the parent. - * If that is unavailable the transform fails to take place. - * - * The `parent` parameter has priority over the actual parent. Use it as a parent override. - * Setting it does **not** change the actual parent of this DisplayObject, it just uses the parent for the transform update. - * - * @method updateTransform - * @param {DisplayObject} [parent] - Optional parent to parent this DisplayObject transform from. - */ -PIXI.DisplayObject.prototype.updateTransform = function(parent) -{ - if (!parent && !this.parent && !this.game) - { - return; - } - - var p = this.parent; - - if (parent) - { - p = parent; - } - else if (!this.parent) - { - p = this.game.world; - } - - // create some matrix refs for easy access - var pt = p.worldTransform; - var wt = this.worldTransform; - - // temporary matrix variables - var a, b, c, d, tx, ty; - - // so if rotation is between 0 then we can simplify the multiplication process.. - if (this.rotation % PIXI.PI_2) - { - // check to see if the rotation is the same as the previous render. This means we only need to use sin and cos when rotation actually changes - if (this.rotation !== this.rotationCache) - { - this.rotationCache = this.rotation; - this._sr = Math.sin(this.rotation); - this._cr = Math.cos(this.rotation); - } - - // get the matrix values of the displayobject based on its transform properties.. - a = this._cr * this.scale.x; - b = this._sr * this.scale.x; - c = -this._sr * this.scale.y; - d = this._cr * this.scale.y; - tx = this.position.x; - ty = this.position.y; - - // check for pivot.. not often used so geared towards that fact! - if (this.pivot.x || this.pivot.y) - { - tx -= this.pivot.x * a + this.pivot.y * c; - ty -= this.pivot.x * b + this.pivot.y * d; - } - - // concat the parent matrix with the objects transform. - wt.a = a * pt.a + b * pt.c; - wt.b = a * pt.b + b * pt.d; - wt.c = c * pt.a + d * pt.c; - wt.d = c * pt.b + d * pt.d; - wt.tx = tx * pt.a + ty * pt.c + pt.tx; - wt.ty = tx * pt.b + ty * pt.d + pt.ty; - } - else - { - // lets do the fast version as we know there is no rotation.. - a = this.scale.x; - d = this.scale.y; - - tx = this.position.x - this.pivot.x * a; - ty = this.position.y - this.pivot.y * d; - - wt.a = a * pt.a; - wt.b = a * pt.b; - wt.c = d * pt.c; - wt.d = d * pt.d; - wt.tx = tx * pt.a + ty * pt.c + pt.tx; - wt.ty = tx * pt.b + ty * pt.d + pt.ty; - } - - // Set the World values - this.worldAlpha = this.alpha * p.worldAlpha; - this.worldPosition.set(wt.tx, wt.ty); - this.worldScale.set(this.scale.x * Math.sqrt(wt.a * wt.a + wt.c * wt.c), this.scale.y * Math.sqrt(wt.b * wt.b + wt.d * wt.d)); - this.worldRotation = Math.atan2(-wt.c, wt.d); - - // reset the bounds each time this is called! - this._currentBounds = null; - - // Custom callback? - if (this.transformCallback) - { - this.transformCallback.call(this.transformCallbackContext, wt, pt); } }; -// performance increase to avoid using call.. (10x faster) +// Alias for updateTransform. As used in DisplayObject container, etc. PIXI.DisplayObject.prototype.displayObjectUpdateTransform = PIXI.DisplayObject.prototype.updateTransform; -/** - * Retrieves the bounds of the displayObject as a rectangle object - * - * @method getBounds - * @param matrix {Matrix} - * @return {Rectangle} the rectangular bounding area - */ -PIXI.DisplayObject.prototype.getBounds = function(matrix) -{ - matrix = matrix;//just to get passed js hinting (and preserve inheritance) - return PIXI.EmptyRectangle; -}; +Object.defineProperties(PIXI.DisplayObject.prototype, { -/** - * Retrieves the local bounds of the displayObject as a rectangle object - * - * @method getLocalBounds - * @return {Rectangle} the rectangular bounding area - */ -PIXI.DisplayObject.prototype.getLocalBounds = function() -{ - return this.getBounds(PIXI.identityMatrix);///PIXI.EmptyRectangle(); -}; + /** + * The horizontal position of the DisplayObject, in pixels, relative to its parent. + * If you need the world position of the DisplayObject, use `DisplayObject.worldPosition` instead. + * @name PIXI.DisplayObject#x + * @property {number} x - The horizontal position of the DisplayObject, in pixels, relative to its parent. + */ + 'x': { -/** - * Sets the object's stage reference, the stage this object is connected to - * - * @method setStageReference - * @param stage {Stage} the stage that the object will have as its current stage reference - */ -PIXI.DisplayObject.prototype.setStageReference = function(stage) -{ - this.stage = stage; -}; + get: function () { -/** - * Empty, to be overridden by classes that require it. - * - * @method preUpdate - */ -PIXI.DisplayObject.prototype.preUpdate = function() -{ -}; + return this.position.x; -/** - * Useful function that returns a texture of the displayObject object that can then be used to create sprites - * This can be quite useful if your displayObject is static / complicated and needs to be reused multiple times. - * - * @method generateTexture - * @param resolution {Number} The resolution of the texture being generated - * @param scaleMode {Number} See {{#crossLink "PIXI/scaleModes:property"}}PIXI.scaleModes{{/crossLink}} for possible values - * @param renderer {CanvasRenderer|WebGLRenderer} The renderer used to generate the texture. - * @return {RenderTexture} a texture of the graphics object - */ -PIXI.DisplayObject.prototype.generateTexture = function(resolution, scaleMode, renderer) -{ - var bounds = this.getLocalBounds(); + }, - var renderTexture = new PIXI.RenderTexture(bounds.width | 0, bounds.height | 0, renderer, scaleMode, resolution); - - PIXI.DisplayObject._tempMatrix.tx = -bounds.x; - PIXI.DisplayObject._tempMatrix.ty = -bounds.y; - - renderTexture.render(this, PIXI.DisplayObject._tempMatrix); + set: function (value) { - return renderTexture; -}; + this.position.x = value; -/** - * Generates and updates the cached sprite for this object. - * - * @method updateCache - */ -PIXI.DisplayObject.prototype.updateCache = function() -{ - this._generateCachedSprite(); -}; + } -/** - * Calculates the global position of the display object - * - * @method toGlobal - * @param position {Point} The world origin to calculate from - * @return {Point} A point object representing the position of this object - */ -PIXI.DisplayObject.prototype.toGlobal = function(position) -{ - // don't need to u[date the lot - this.displayObjectUpdateTransform(); - return this.worldTransform.apply(position); -}; - -/** - * Calculates the local position of the display object relative to another point - * - * @method toLocal - * @param position {Point} The world origin to calculate from - * @param [from] {DisplayObject} The DisplayObject to calculate the global position from - * @return {Point} A point object representing the position of this object - */ -PIXI.DisplayObject.prototype.toLocal = function(position, from) -{ - if (from) - { - position = from.toGlobal(position); - } - - // don't need to u[date the lot - this.displayObjectUpdateTransform(); - - return this.worldTransform.applyInverse(position); -}; - -/** - * Internal method. - * - * @method _renderCachedSprite - * @param renderSession {Object} The render session - * @private - */ -PIXI.DisplayObject.prototype._renderCachedSprite = function(renderSession) -{ - this._cachedSprite.worldAlpha = this.worldAlpha; - - if (renderSession.gl) - { - PIXI.Sprite.prototype._renderWebGL.call(this._cachedSprite, renderSession); - } - else - { - PIXI.Sprite.prototype._renderCanvas.call(this._cachedSprite, renderSession); - } -}; - -/** - * Internal method. - * - * @method _generateCachedSprite - * @private - */ -PIXI.DisplayObject.prototype._generateCachedSprite = function() -{ - this._cacheAsBitmap = false; - - var bounds = this.getLocalBounds(); - - // Round it off and force non-zero dimensions - bounds.width = Math.max(1, Math.ceil(bounds.width)); - bounds.height = Math.max(1, Math.ceil(bounds.height)); - - this.updateTransform(); - - if (!this._cachedSprite) - { - var renderTexture = new PIXI.RenderTexture(bounds.width, bounds.height); - this._cachedSprite = new PIXI.Sprite(renderTexture); - this._cachedSprite.worldTransform = this.worldTransform; - } - else - { - this._cachedSprite.texture.resize(bounds.width, bounds.height); - } - - // Remove filters - var tempFilters = this._filters; - this._filters = null; - this._cachedSprite.filters = tempFilters; - - // PIXI.DisplayObject._tempMatrix.identity(); - PIXI.DisplayObject._tempMatrix.tx = -bounds.x; - PIXI.DisplayObject._tempMatrix.ty = -bounds.y; - - this._cachedSprite.texture.render(this, PIXI.DisplayObject._tempMatrix, true); - this._cachedSprite.anchor.x = -(bounds.x / bounds.width); - this._cachedSprite.anchor.y = -(bounds.y / bounds.height); - - this._filters = tempFilters; - - this._cacheAsBitmap = true; -}; - -/** -* Destroys the cached sprite. -* -* @method _destroyCachedSprite -* @private -*/ -PIXI.DisplayObject.prototype._destroyCachedSprite = function() -{ - if (!this._cachedSprite) return; - - this._cachedSprite.texture.destroy(true); - - // TODO could be object pooled! - this._cachedSprite = null; -}; - -/** -* Renders the object using the WebGL renderer -* -* @method _renderWebGL -* @param renderSession {RenderSession} -* @private -*/ -PIXI.DisplayObject.prototype._renderWebGL = function(renderSession) -{ - // OVERWRITE; - // this line is just here to pass jshinting :) - renderSession = renderSession; -}; - -/** -* Renders the object using the Canvas renderer -* -* @method _renderCanvas -* @param renderSession {RenderSession} -* @private -*/ -PIXI.DisplayObject.prototype._renderCanvas = function(renderSession) -{ - // OVERWRITE; - // this line is just here to pass jshinting :) - renderSession = renderSession; -}; - -/** - * The position of the displayObject on the x axis relative to the local coordinates of the parent. - * - * @property x - * @type Number - */ -Object.defineProperty(PIXI.DisplayObject.prototype, 'x', { - - get: function() { - return this.position.x; }, - set: function(value) { - this.position.x = value; - } + /** + * The vertical position of the DisplayObject, in pixels, relative to its parent. + * If you need the world position of the DisplayObject, use `DisplayObject.worldPosition` instead. + * @name PIXI.DisplayObject#y + * @property {number} y - The vertical position of the DisplayObject, in pixels, relative to its parent. + */ + 'y': { -}); + get: function () { -/** - * The position of the displayObject on the y axis relative to the local coordinates of the parent. - * - * @property y - * @type Number - */ -Object.defineProperty(PIXI.DisplayObject.prototype, 'y', { + return this.position.y; + + }, + + set: function (value) { + + this.position.y = value; + + } - get: function() { - return this.position.y; }, - set: function(value) { - this.position.y = value; + /** + * Indicates if this DisplayObject is visible, based on it, and all of its parents, `visible` property values. + * @name PIXI.DisplayObject#worldVisible + * @property {boolean} worldVisible - Indicates if this DisplayObject is visible, based on it, and all of its parents, `visible` property values. + */ + 'worldVisible': { + + get: function () { + + if (!this.visible) + { + return false; + } + else + { + var item = this.parent; + + do + { + if (!item.visible) + { + return false; + } + + item = item.parent; + } + while (item); + + return true; + } + + } + + }, + + /** + * Sets a mask for this DisplayObject. A mask is an instance of a Graphics object. + * When applied it limits the visible area of this DisplayObject to the shape of the mask. + * Under a Canvas renderer it uses shape clipping. Under a WebGL renderer it uses a Stencil Buffer. + * To remove a mask, set this property to `null`. + * + * @name PIXI.DisplayObject#mask + * @property {PIXI.Graphics} mask - The mask applied to this DisplayObject. Set to `null` to remove an existing mask. + */ + 'mask': { + + get: function () { + + return this._mask; + + }, + + set: function (value) { + + if (this._mask) + { + this._mask.isMask = false; + } + + this._mask = value; + + if (value) + { + this._mask.isMask = true; + } + + } + + }, + + /** + * Sets the filters for this DisplayObject. This is a WebGL only feature, and is ignored by the Canvas + * Renderer. A filter is a shader applied to this DisplayObject. You can modify the placement of the filter + * using `DisplayObject.filterArea`. + * + * To remove filters, set this property to `null`. + * + * Note: You cannot have a filter set, and a MULTIPLY Blend Mode active, at the same time. Setting a + * filter will reset this DisplayObjects blend mode to NORMAL. + * + * @name PIXI.DisplayObject#filters + * @property {Array} filters - An Array of PIXI.AbstractFilter objects, or objects that extend them. + */ + 'filters': { + + get: function () { + + return this._filters; + + }, + + set: function (value) { + + if (Array.isArray(value)) + { + // Put all the passes in one place. + var passes = []; + + for (var i = 0; i < value.length; i++) + { + var filterPasses = value[i].passes; + + for (var j = 0; j < filterPasses.length; j++) + { + passes.push(filterPasses[j]); + } + } + + // Needed any more? + this._filterBlock = { target: this, filterPasses: passes }; + } + + this._filters = value; + + if (this.blendMode && this.blendMode === PIXI.blendModes.MULTIPLY) + { + this.blendMode = PIXI.blendModes.NORMAL; + } + + } + + }, + + /** + * Sets if this DisplayObject should be cached as a bitmap. + * + * When invoked it will take a snapshot of the DisplayObject, as it is at that moment, and store it + * in a RenderTexture. This is then used whenever this DisplayObject is rendered. It can provide a + * performance benefit for complex, but static, DisplayObjects. I.e. those with lots of children. + * + * Cached Bitmaps do not track their parents. If you update a property of this DisplayObject, it will not + * re-generate the cached bitmap automatically. To do that you need to call `DisplayObject.updateCache`. + * + * To remove a cached bitmap, set this property to `null`. + * + * @name PIXI.DisplayObject#cacheAsBitmap + * @property {boolean} cacheAsBitmap - Cache this DisplayObject as a Bitmap. Set to `null` to remove an existing cached bitmap. + */ + 'cacheAsBitmap': { + + get: function () { + + return this._cacheAsBitmap; + + }, + + set: function (value) { + + if (this._cacheAsBitmap === value) + { + return; + } + + if (value) + { + this._generateCachedSprite(); + } + else + { + this._destroyCachedSprite(); + } + + this._cacheAsBitmap = value; + + } + } }); @@ -1241,6 +1309,8 @@ PIXI.DisplayObjectContainer.prototype.getBounds = function() return PIXI.EmptyRectangle; } + this.updateTransform(); + var minX = Infinity; var minY = Infinity; @@ -1937,44 +2007,6 @@ PIXI.Sprite.prototype._renderCanvas = function(renderSession, matrix) }; -// some helper functions.. - -/** - * - * Helper function that creates a sprite that will contain a texture from the TextureCache based on the frameId - * The frame ids are created when a Texture packer file has been loaded - * - * @method fromFrame - * @static - * @param frameId {String} The frame Id of the texture in the cache - * @return {Sprite} A new Sprite using a texture from the texture cache matching the frameId - */ -PIXI.Sprite.fromFrame = function(frameId) -{ - var texture = PIXI.TextureCache[frameId]; - - if (!texture) throw new Error('The frameId "' + frameId + '" does not exist in the texture cache' + this); - - return new PIXI.Sprite(texture); -}; - -/** - * - * Helper function that creates a sprite that will contain a texture based on an image url - * If the image is not in the texture cache it will be loaded - * - * @method fromImage - * @static - * @param imageId {String} The image url of the texture - * @return {Sprite} A new Sprite using a texture from the texture cache matching the image id - */ -PIXI.Sprite.fromImage = function(imageId, crossorigin, scaleMode) -{ - var texture = PIXI.Texture.fromImage(imageId, crossorigin, scaleMode); - - return new PIXI.Sprite(texture); -}; - /** * @author Mat Groves http://matgroves.com/ */ @@ -2321,7 +2353,7 @@ PIXI.CanvasPool = { for (var i = 0; i < pool.length; i++) { - if (pool[i].parent === null) + if (!pool[i].parent) { return i; } @@ -2347,6 +2379,8 @@ PIXI.CanvasPool = { if (pool[i].parent === parent) { pool[i].parent = null; + pool[i].canvas.width = 1; + pool[i].canvas.height = 1; } } @@ -2368,6 +2402,8 @@ PIXI.CanvasPool = { if (pool[i].canvas === canvas) { pool[i].parent = null; + pool[i].canvas.width = 1; + pool[i].canvas.height = 1; } } @@ -2387,7 +2423,7 @@ PIXI.CanvasPool = { for (var i = 0; i < pool.length; i++) { - if (pool[i].parent !== null) + if (pool[i].parent) { c++; } @@ -2411,7 +2447,7 @@ PIXI.CanvasPool = { for (var i = 0; i < pool.length; i++) { - if (pool[i].parent === null) + if (!pool[i].parent) { c++; } @@ -6815,17 +6851,13 @@ PIXI.CanvasRenderer.prototype.mapBlendModes = function () { * @author Mat Groves http://matgroves.com/ @Doormat23 */ -PIXI.BaseTextureCache = {}; - -PIXI.BaseTextureCacheIdGenerator = 0; - /** * A texture stores the information that represents an image. All textures have a base texture. * * @class BaseTexture * @uses EventTarget * @constructor - * @param source {String} the source object (image or canvas) + * @param source {String|Canvas} the source object (image or canvas) * @param scaleMode {Number} See {{#crossLink "PIXI/scaleModes:property"}}PIXI.scaleModes{{/crossLink}} for possible values */ PIXI.BaseTexture = function(source, scaleMode) @@ -6882,8 +6914,6 @@ PIXI.BaseTexture = function(source, scaleMode) */ this.source = source; - this._UID = PIXI._UID++; - /** * Controls if RGB channels should be pre-multiplied by Alpha (WebGL only) * @@ -6942,12 +6972,6 @@ PIXI.BaseTexture = function(source, scaleMode) */ this.skipRender = false; - /** - * @property imageUrl - * @type String - */ - this.imageUrl = null; - /** * @property _powerOf2 * @type Boolean @@ -6974,7 +6998,6 @@ PIXI.BaseTexture.prototype.forceLoaded = function(width, height) this.width = width; this.height = height; this.dirty(); - }; /** @@ -6984,23 +7007,9 @@ PIXI.BaseTexture.prototype.forceLoaded = function(width, height) */ PIXI.BaseTexture.prototype.destroy = function() { - if (this.imageUrl) - { - delete PIXI.BaseTextureCache[this.imageUrl]; - delete PIXI.TextureCache[this.imageUrl]; - - this.imageUrl = null; - - if (!navigator.isCocoonJS) this.source.src = ''; - } - else if (this.source) + if (this.source) { PIXI.CanvasPool.removeByCanvas(this.source); - - if (this.source._pixiId) - { - delete PIXI.BaseTextureCache[this.source._pixiId]; - } } this.source = null; @@ -7013,12 +7022,11 @@ PIXI.BaseTexture.prototype.destroy = function() * * @method updateSourceImage * @param newSrc {String} the path of the image + * @deprecated This method is deprecated. Please use Phaser.Sprite.loadTexture instead. */ PIXI.BaseTexture.prototype.updateSourceImage = function(newSrc) { - this.hasLoaded = false; - this.source.src = null; - this.source.src = newSrc; + console.warn("PIXI.BaseTexture.updateSourceImage is deprecated. Use Phaser.Sprite.loadTexture instead."); }; /** @@ -7062,49 +7070,6 @@ PIXI.BaseTexture.prototype.unloadFromGPU = function() this.dirty(); }; -/** - * Helper function that creates a base texture from the given image url. - * If the image is not in the base texture cache it will be created and loaded. - * - * @static - * @method fromImage - * @param imageUrl {String} The image url of the texture - * @param crossorigin {Boolean} - * @param scaleMode {Number} See {{#crossLink "PIXI/scaleModes:property"}}PIXI.scaleModes{{/crossLink}} for possible values - * @return {BaseTexture} - */ -PIXI.BaseTexture.fromImage = function(imageUrl, crossorigin, scaleMode) -{ - var baseTexture = PIXI.BaseTextureCache[imageUrl]; - - if(crossorigin === undefined && imageUrl.indexOf('data:') === -1) crossorigin = true; - - if(!baseTexture) - { - // new Image() breaks tex loading in some versions of Chrome. - // See https://code.google.com/p/chromium/issues/detail?id=238071 - var image = new Image(); - - if (crossorigin) - { - image.crossOrigin = ''; - } - - image.src = imageUrl; - baseTexture = new PIXI.BaseTexture(image, scaleMode); - baseTexture.imageUrl = imageUrl; - PIXI.BaseTextureCache[imageUrl] = baseTexture; - - // if there is an @2x at the end of the url we are going to assume its a highres image - if( imageUrl.indexOf(PIXI.RETINA_PREFIX + '.') !== -1) - { - baseTexture.resolution = 2; - } - } - - return baseTexture; -}; - /** * Helper function that creates a base texture from the given canvas element. * @@ -7116,11 +7081,6 @@ PIXI.BaseTexture.fromImage = function(imageUrl, crossorigin, scaleMode) */ PIXI.BaseTexture.fromCanvas = function(canvas, scaleMode) { - if (!canvas._pixiId) - { - canvas._pixiId = 'canvas_' + PIXI.TextureCacheIdGenerator++; - } - if (canvas.width === 0) { canvas.width = 1; @@ -7131,24 +7091,13 @@ PIXI.BaseTexture.fromCanvas = function(canvas, scaleMode) canvas.height = 1; } - var baseTexture = PIXI.BaseTextureCache[canvas._pixiId]; - - if (!baseTexture) - { - baseTexture = new PIXI.BaseTexture(canvas, scaleMode); - PIXI.BaseTextureCache[canvas._pixiId] = baseTexture; - } - - return baseTexture; + return new PIXI.BaseTexture(canvas, scaleMode); }; /** * @author Mat Groves http://matgroves.com/ @Doormat23 */ -PIXI.TextureCache = {}; -PIXI.FrameCache = {}; - /** * TextureSilentFail is a boolean that defaults to `false`. * If `true` then `PIXI.Texture.setFrame` will no longer throw an error if the texture dimensions are incorrect. @@ -7158,8 +7107,6 @@ PIXI.FrameCache = {}; */ PIXI.TextureSilentFail = false; -PIXI.TextureCacheIdGenerator = 0; - /** * A texture stores the information that represents an image or part of an image. It cannot be added * to the display list directly. Instead use it as the texture for a PIXI.Sprite. If no frame is provided then the whole image is used. @@ -7395,46 +7342,6 @@ PIXI.Texture.prototype._updateUvs = function() this._uvs.y3 = (frame.y + frame.height) / th; }; -/** - * Helper function that creates a Texture object from the given image url. - * If the image is not in the texture cache it will be created and loaded. - * - * @static - * @method fromImage - * @param imageUrl {String} The image url of the texture - * @param crossorigin {Boolean} Whether requests should be treated as crossorigin - * @param scaleMode {Number} See {{#crossLink "PIXI/scaleModes:property"}}PIXI.scaleModes{{/crossLink}} for possible values - * @return {Texture} - */ -PIXI.Texture.fromImage = function(imageUrl, crossorigin, scaleMode) -{ - var texture = PIXI.TextureCache[imageUrl]; - - if(!texture) - { - texture = new PIXI.Texture(PIXI.BaseTexture.fromImage(imageUrl, crossorigin, scaleMode)); - PIXI.TextureCache[imageUrl] = texture; - } - - return texture; -}; - -/** - * Helper function that returns a Texture objected based on the given frame id. - * If the frame id is not in the texture cache an error will be thrown. - * - * @static - * @method fromFrame - * @param frameId {String} The frame id of the texture - * @return {Texture} - */ -PIXI.Texture.fromFrame = function(frameId) -{ - var texture = PIXI.TextureCache[frameId]; - if(!texture) throw new Error('The frameId "' + frameId + '" does not exist in the texture cache '); - return texture; -}; - /** * Helper function that creates a new a Texture based on the given canvas element. * @@ -7451,35 +7358,6 @@ PIXI.Texture.fromCanvas = function(canvas, scaleMode) return new PIXI.Texture(baseTexture); }; -/** - * Adds a texture to the global PIXI.TextureCache. This cache is shared across the whole PIXI object. - * - * @static - * @method addTextureToCache - * @param texture {Texture} The Texture to add to the cache. - * @param id {String} The id that the texture will be stored against. - */ -PIXI.Texture.addTextureToCache = function(texture, id) -{ - PIXI.TextureCache[id] = texture; -}; - -/** - * Remove a texture from the global PIXI.TextureCache. - * - * @static - * @method removeTextureFromCache - * @param id {String} The id of the texture to be removed - * @return {Texture} The texture that was removed - */ -PIXI.Texture.removeTextureFromCache = function(id) -{ - var texture = PIXI.TextureCache[id]; - delete PIXI.TextureCache[id]; - delete PIXI.BaseTextureCache[id]; - return texture; -}; - PIXI.TextureUvs = function() { this.x0 = 0; @@ -9165,7 +9043,7 @@ var Phaser = Phaser || { * @constant * @type {string} */ - VERSION: '2.5.0', + VERSION: '2.6.0', /** * An array of Phaser game instances. @@ -9856,6 +9734,20 @@ if (!window.console) */ Phaser.Utils = { + /** + * Takes the given string and reverses it, returning the reversed string. + * For example if given the string `Atari 520ST` it would return `TS025 iratA`. + * + * @method Phaser.Utils.reverseString + * @param {string} string - The string to be reversed. + * @return {string} The reversed string. + */ + reverseString: function (string) { + + return string.split('').reverse().join(''); + + }, + /** * Gets an objects property by string. * @@ -9991,14 +9883,31 @@ Phaser.Utils = { }, /** - * JavaScript string pad http://www.webtoolkit.info/. + * Takes the given string and pads it out, to the length required, using the character + * specified. For example if you need a string to be 6 characters long, you can call: + * + * `pad('bob', 6, '-', 2)` + * + * This would return: `bob---` as it has padded it out to 6 characters, using the `-` on the right. + * + * You can also use it to pad numbers (they are always returned as strings): + * + * `pad(512, 6, '0', 1)` + * + * Would return: `000512` with the string padded to the left. + * + * If you don't specify a direction it'll pad to both sides: + * + * `pad('c64', 7, '*')` + * + * Would return: `**c64**` * * @method Phaser.Utils.pad - * @param {string} str - The target string. + * @param {string} str - The target string. `toString()` will be called on the string, which means you can also pass in common data types like numbers. * @param {integer} [len=0] - The number of characters to be added. * @param {string} [pad=" "] - The string to pad it out with (defaults to a space). - * @param {integer} [dir=3] The direction dir = 1 (left), 2 (right), 3 (both). - * @return {string} The padded string + * @param {integer} [dir=3] - The direction dir = 1 (left), 2 (right), 3 (both). + * @return {string} The padded string. */ pad: function (str, len, pad, dir) { @@ -10006,6 +9915,8 @@ Phaser.Utils = { if (pad === undefined) { var pad = ' '; } if (dir === undefined) { var dir = 3; } + str = str.toString(); + var padlen = 0; if (len + 1 >= str.length) @@ -13231,6 +13142,11 @@ Phaser.Polygon = function () { */ this.closed = true; + /** + * @property {boolean} flattened - Has this Polygon been flattened by a call to `Polygon.flatten` ? + */ + this.flattened = false; + /** * @property {number} type - The base object type. */ @@ -13271,7 +13187,9 @@ Phaser.Polygon.prototype = { }, /** - * Flattens this Polygon so the points are a sequence of numbers. Any Point objects found are removed and replaced with two numbers. + * Flattens this Polygon so the points are a sequence of numbers. + * Any Point objects found are removed and replaced with two numbers. + * Also sets the Polygon.flattened property to `true`. * * @method Phaser.Polygon#flatten * @return {Phaser.Polygon} This Polygon object @@ -13280,6 +13198,8 @@ Phaser.Polygon.prototype = { this._points = this.toNumberArray(); + this.flattened = true; + return this; }, @@ -13321,20 +13241,39 @@ Phaser.Polygon.prototype = { // Adapted from http://www.ecse.rpi.edu/Homepages/wrf/Research/Short_Notes/pnpoly.html by Jonas Raoni Soares Silva - var length = this._points.length; var inside = false; - for (var i = -1, j = length - 1; ++i < length; j = i) + if (this.flattened) { - var ix = this._points[i].x; - var iy = this._points[i].y; - - var jx = this._points[j].x; - var jy = this._points[j].y; - - if (((iy <= y && y < jy) || (jy <= y && y < iy)) && (x < (jx - ix) * (y - iy) / (jy - iy) + ix)) + for (var i = -2, j = this._points.length - 2; (i += 2) < this._points.length; j = i) { - inside = !inside; + var ix = this._points[i]; + var iy = this._points[i + 1]; + + var jx = this._points[j]; + var jy = this._points[j + 1]; + + if (((iy <= y && y < jy) || (jy <= y && y < iy)) && (x < (jx - ix) * (y - iy) / (jy - iy) + ix)) + { + inside = !inside; + } + } + + } + else + { + for (var i = -1, j = this._points.length - 1; ++i < this._points.length; j = i) + { + var ix = this._points[i].x; + var iy = this._points[i].y; + + var jx = this._points[j].x; + var jy = this._points[j].y; + + if (((iy <= y && y < jy) || (jy <= y && y < iy)) && (x < (jx - ix) * (y - iy) / (jy - iy) + ix)) + { + inside = !inside; + } } } @@ -19182,6 +19121,8 @@ Phaser.Group.prototype.align = function (rows, columns, cellWidth, cellHeight, p else { // We keep laying them out until we hit the column limit + r.x += cellWidth; + if (r.x === w) { r.x = 0; @@ -20612,17 +20553,24 @@ Phaser.Group.prototype.getBottom = function () { }; /** -* Get the closest child to given Object. +* Get the closest child to given Object, with optional callback to filter children. * * This can be a Sprite, Group, Image or any object with public x and y properties. * * 'close' is determined by the distance from the objects `x` and `y` properties compared to the childs `x` and `y` properties. * +* You can use the optional `callback` argument to apply your own filter to the distance checks. +* If the child is closer then the previous child, it will be sent to `callback` as the first argument, +* with the distance as the second. The callback should return `true` if it passes your +* filtering criteria, otherwise it should return `false`. +* * @method Phaser.Group#getClosestTo * @param {any} object - The object used to determine the distance. This can be a Sprite, Group, Image or any object with public x and y properties. -* @return {any} The child closest to given object, or null if no child was found. +* @param {function} [callback] - The function that each child will be evaluated against. Each child of the group will be passed to it as its first parameter, with the distance as the second. It should return `true` if the child passes the matching criteria. +* @param {object} [callbackContext] - The context in which the function should be called (usually 'this'). +* @return {any} The child closest to given object, or `null` if no child was found. */ -Phaser.Group.prototype.getClosestTo = function (object) { +Phaser.Group.prototype.getClosestTo = function (object, callback, callbackContext) { var distance = Number.MAX_VALUE; var tempDistance = 0; @@ -20636,7 +20584,7 @@ Phaser.Group.prototype.getClosestTo = function (object) { { tempDistance = Math.abs(Phaser.Point.distance(object, child)); - if (tempDistance < distance) + if (tempDistance < distance && (!callback || callback.call(callbackContext, child, tempDistance))) { distance = tempDistance; result = child; @@ -20649,17 +20597,24 @@ Phaser.Group.prototype.getClosestTo = function (object) { }; /** -* Get the child furthest away from the given Object. +* Get the child furthest away from the given Object, with optional callback to filter children. * * This can be a Sprite, Group, Image or any object with public x and y properties. * * 'furthest away' is determined by the distance from the objects `x` and `y` properties compared to the childs `x` and `y` properties. * +* You can use the optional `callback` argument to apply your own filter to the distance checks. +* If the child is closer then the previous child, it will be sent to `callback` as the first argument, +* with the distance as the second. The callback should return `true` if it passes your +* filtering criteria, otherwise it should return `false`. +* * @method Phaser.Group#getFurthestFrom * @param {any} object - The object used to determine the distance. This can be a Sprite, Group, Image or any object with public x and y properties. -* @return {any} The child furthest from the given object, or null if no child was found. +* @param {function} [callback] - The function that each child will be evaluated against. Each child of the group will be passed to it as its first parameter, with the distance as the second. It should return `true` if the child passes the matching criteria. +* @param {object} [callbackContext] - The context in which the function should be called (usually 'this'). +* @return {any} The child furthest from the given object, or `null` if no child was found. */ -Phaser.Group.prototype.getFurthestFrom = function (object) { +Phaser.Group.prototype.getFurthestFrom = function (object, callback, callbackContext) { var distance = 0; var tempDistance = 0; @@ -20673,7 +20628,7 @@ Phaser.Group.prototype.getFurthestFrom = function (object) { { tempDistance = Math.abs(Phaser.Point.distance(object, child)); - if (tempDistance > distance) + if (tempDistance > distance && (!callback || callback.call(callbackContext, child, tempDistance))) { distance = tempDistance; result = child; @@ -21005,6 +20960,289 @@ Object.defineProperty(Phaser.Group.prototype, "angle", { }); +/** +* The center x coordinate of this Group. +* +* It is derived by calling `getBounds`, calculating the Groups dimensions based on its +* visible children. +* +* Note that no ancestors are factored into the result, meaning that if this Group is +* nested within another Group, with heavy transforms on it, the result of this property +* is likely to be incorrect. It is safe to get and set this property if the Group is a +* top-level descendant of Phaser.World, or untransformed parents. +* +* @name Phaser.Group#centerX +* @property {number} centerX +*/ +Object.defineProperty(Phaser.Group.prototype, "centerX", { + + get: function () { + + return this.getBounds().centerX; + + }, + + set: function (value) { + + var r = this.getBounds(); + var offset = this.x - r.x; + + this.x = (value + offset) - r.halfWidth; + + } + +}); + +/** +* The center y coordinate of this Group. +* +* It is derived by calling `getBounds`, calculating the Groups dimensions based on its +* visible children. +* +* Note that no ancestors are factored into the result, meaning that if this Group is +* nested within another Group, with heavy transforms on it, the result of this property +* is likely to be incorrect. It is safe to get and set this property if the Group is a +* top-level descendant of Phaser.World, or untransformed parents. +* +* @name Phaser.Group#centerY +* @property {number} centerY +*/ +Object.defineProperty(Phaser.Group.prototype, "centerY", { + + get: function () { + + return this.getBounds().centerY; + + }, + + set: function (value) { + + var r = this.getBounds(); + var offset = this.y - r.y; + + this.y = (value + offset) - r.halfHeight; + + } + +}); + +/** +* The left coordinate of this Group. +* +* It is derived by calling `getBounds`, calculating the Groups dimensions based on its +* visible children. +* +* Note that no ancestors are factored into the result, meaning that if this Group is +* nested within another Group, with heavy transforms on it, the result of this property +* is likely to be incorrect. It is safe to get and set this property if the Group is a +* top-level descendant of Phaser.World, or untransformed parents. +* +* @name Phaser.Group#left +* @property {number} left +*/ +Object.defineProperty(Phaser.Group.prototype, "left", { + + get: function () { + + return this.getBounds().left; + + }, + + set: function (value) { + + var r = this.getBounds(); + var offset = this.x - r.x; + + this.x = value + offset; + + } + +}); + +/** +* The right coordinate of this Group. +* +* It is derived by calling `getBounds`, calculating the Groups dimensions based on its +* visible children. +* +* Note that no ancestors are factored into the result, meaning that if this Group is +* nested within another Group, with heavy transforms on it, the result of this property +* is likely to be incorrect. It is safe to get and set this property if the Group is a +* top-level descendant of Phaser.World, or untransformed parents. +* +* @name Phaser.Group#right +* @property {number} right +*/ +Object.defineProperty(Phaser.Group.prototype, "right", { + + get: function () { + + return this.getBounds().right; + + }, + + set: function (value) { + + var r = this.getBounds(); + var offset = this.x - r.x; + + this.x = (value + offset) - r.width; + + } + +}); + +/** +* The top coordinate of this Group. +* +* It is derived by calling `getBounds`, calculating the Groups dimensions based on its +* visible children. +* +* Note that no ancestors are factored into the result, meaning that if this Group is +* nested within another Group, with heavy transforms on it, the result of this property +* is likely to be incorrect. It is safe to get and set this property if the Group is a +* top-level descendant of Phaser.World, or untransformed parents. +* +* @name Phaser.Group#top +* @property {number} top +*/ +Object.defineProperty(Phaser.Group.prototype, "top", { + + get: function () { + + return this.getBounds().top; + + }, + + set: function (value) { + + var r = this.getBounds(); + var offset = this.y - r.y; + + this.y = (value + offset); + + } + +}); + +/** +* The bottom coordinate of this Group. +* +* It is derived by calling `getBounds`, calculating the Groups dimensions based on its +* visible children. +* +* Note that no ancestors are factored into the result, meaning that if this Group is +* nested within another Group, with heavy transforms on it, the result of this property +* is likely to be incorrect. It is safe to get and set this property if the Group is a +* top-level descendant of Phaser.World, or untransformed parents. +* +* @name Phaser.Group#bottom +* @property {number} bottom +*/ +Object.defineProperty(Phaser.Group.prototype, "bottom", { + + get: function () { + + return this.getBounds().bottom; + + }, + + set: function (value) { + + var r = this.getBounds(); + var offset = this.y - r.y; + + this.y = (value + offset) - r.height; + + } + +}); + +/** +* Aligns this Group within another Game Object, or Rectangle, known as the +* 'container', to one of 9 possible positions. +* +* The container must be a Game Object, or Phaser.Rectangle object. This can include properties +* such as `World.bounds` or `Camera.view`, for aligning Groups within the world +* and camera bounds. Or it can include other Sprites, Images, Text objects, BitmapText, +* TileSprites or Buttons. +* +* Please note that aligning a Group to another Game Object does **not** make it a child of +* the container. It simply modifies its position coordinates so it aligns with it. +* +* The position constants you can use are: +* +* `Phaser.TOP_LEFT`, `Phaser.TOP_CENTER`, `Phaser.TOP_RIGHT`, `Phaser.LEFT_CENTER`, +* `Phaser.CENTER`, `Phaser.RIGHT_CENTER`, `Phaser.BOTTOM_LEFT`, +* `Phaser.BOTTOM_CENTER` and `Phaser.BOTTOM_RIGHT`. +* +* Groups are placed in such a way that their _bounds_ align with the +* container, taking into consideration rotation and scale of its children. +* This allows you to neatly align Groups, irrespective of their position value. +* +* The optional `offsetX` and `offsetY` arguments allow you to apply extra spacing to the final +* aligned position of the Group. For example: +* +* `group.alignIn(background, Phaser.BOTTOM_RIGHT, -20, -20)` +* +* Would align the `group` to the bottom-right, but moved 20 pixels in from the corner. +* Think of the offsets as applying an adjustment to the containers bounds before the alignment takes place. +* So providing a negative offset will 'shrink' the container bounds by that amount, and providing a positive +* one expands it. +* +* @method Phaser.Group#alignIn +* @param {Phaser.Rectangle|Phaser.Sprite|Phaser.Image|Phaser.Text|Phaser.BitmapText|Phaser.Button|Phaser.Graphics|Phaser.TileSprite} container - The Game Object or Rectangle with which to align this Group to. Can also include properties such as `World.bounds` or `Camera.view`. +* @param {integer} [position] - The position constant. One of `Phaser.TOP_LEFT` (default), `Phaser.TOP_CENTER`, `Phaser.TOP_RIGHT`, `Phaser.LEFT_CENTER`, `Phaser.CENTER`, `Phaser.RIGHT_CENTER`, `Phaser.BOTTOM_LEFT`, `Phaser.BOTTOM_CENTER` or `Phaser.BOTTOM_RIGHT`. +* @param {integer} [offsetX=0] - A horizontal adjustment of the Containers bounds, applied to the aligned position of the Game Object. Use a negative value to shrink the bounds, positive to increase it. +* @param {integer} [offsetY=0] - A vertical adjustment of the Containers bounds, applied to the aligned position of the Game Object. Use a negative value to shrink the bounds, positive to increase it. +* @return {Phaser.Group} This Group. +*/ + +// This function is set at the bottom of src/gameobjects/components/Bounds.js + +/** +* Aligns this Group to the side of another Game Object, or Rectangle, known as the +* 'parent', in one of 11 possible positions. +* +* The parent must be a Game Object, or Phaser.Rectangle object. This can include properties +* such as `World.bounds` or `Camera.view`, for aligning Groups within the world +* and camera bounds. Or it can include other Sprites, Images, Text objects, BitmapText, +* TileSprites or Buttons. +* +* Please note that aligning a Group to another Game Object does **not** make it a child of +* the parent. It simply modifies its position coordinates so it aligns with it. +* +* The position constants you can use are: +* +* `Phaser.TOP_LEFT` (default), `Phaser.TOP_CENTER`, `Phaser.TOP_RIGHT`, `Phaser.LEFT_TOP`, +* `Phaser.LEFT_CENTER`, `Phaser.LEFT_BOTTOM`, `Phaser.RIGHT_TOP`, `Phaser.RIGHT_CENTER`, +* `Phaser.RIGHT_BOTTOM`, `Phaser.BOTTOM_LEFT`, `Phaser.BOTTOM_CENTER` +* and `Phaser.BOTTOM_RIGHT`. +* +* Groups are placed in such a way that their _bounds_ align with the +* parent, taking into consideration rotation and scale of the children. +* This allows you to neatly align Groups, irrespective of their position value. +* +* The optional `offsetX` and `offsetY` arguments allow you to apply extra spacing to the final +* aligned position of the Group. For example: +* +* `group.alignTo(background, Phaser.BOTTOM_RIGHT, -20, -20)` +* +* Would align the `group` to the bottom-right, but moved 20 pixels in from the corner. +* Think of the offsets as applying an adjustment to the parents bounds before the alignment takes place. +* So providing a negative offset will 'shrink' the parent bounds by that amount, and providing a positive +* one expands it. +* +* @method Phaser.Group#alignTo +* @param {Phaser.Rectangle|Phaser.Sprite|Phaser.Image|Phaser.Text|Phaser.BitmapText|Phaser.Button|Phaser.Graphics|Phaser.TileSprite} parent - The Game Object or Rectangle with which to align this Group to. Can also include properties such as `World.bounds` or `Camera.view`. +* @param {integer} [position] - The position constant. One of `Phaser.TOP_LEFT`, `Phaser.TOP_CENTER`, `Phaser.TOP_RIGHT`, `Phaser.LEFT_TOP`, `Phaser.LEFT_CENTER`, `Phaser.LEFT_BOTTOM`, `Phaser.RIGHT_TOP`, `Phaser.RIGHT_CENTER`, `Phaser.RIGHT_BOTTOM`, `Phaser.BOTTOM_LEFT`, `Phaser.BOTTOM_CENTER` or `Phaser.BOTTOM_RIGHT`. +* @param {integer} [offsetX=0] - A horizontal adjustment of the Containers bounds, applied to the aligned position of the Game Object. Use a negative value to shrink the bounds, positive to increase it. +* @param {integer} [offsetY=0] - A vertical adjustment of the Containers bounds, applied to the aligned position of the Game Object. Use a negative value to shrink the bounds, positive to increase it. +* @return {Phaser.Group} This Group. +*/ + +// This function is set at the bottom of src/gameobjects/components/Bounds.js + /** * A display object is any object that can be rendered in the Phaser/pixi.js scene graph. * @@ -27274,9 +27512,10 @@ Phaser.InputHandler.prototype = { /** * Starts the Input Handler running. This is called automatically when you enable input on a Sprite, or can be called directly if you need to set a specific priority. + * * @method Phaser.InputHandler#start - * @param {number} priority - Higher priority sprites take click priority over low-priority sprites when they are stacked on-top of each other. - * @param {boolean} useHandCursor - If true the Sprite will show the hand cursor on mouse-over (doesn't apply to mobile browsers) + * @param {number} [priority=0] - Higher priority sprites take click priority over low-priority sprites when they are stacked on-top of each other. + * @param {boolean} [useHandCursor=false] - If true the Sprite will show the hand cursor on mouse-over (doesn't apply to mobile browsers) * @return {Phaser.Sprite} The Sprite object to which the Input Handler is bound. */ start: function (priority, useHandCursor) { @@ -27897,7 +28136,7 @@ Phaser.InputHandler.prototype = { } else if (this.draggable && this._draggedPointerID === pointer.id) { - return this.updateDrag(pointer); + return this.updateDrag(pointer, false); } else if (this._pointerData[pointer.id].isOver) { @@ -28176,24 +28415,24 @@ Phaser.InputHandler.prototype = { }, /** - * Updates the Pointer drag on this Sprite. + * Called as a Pointer actively drags this Game Object. + * * @method Phaser.InputHandler#updateDrag - * @param {Phaser.Pointer} pointer + * @private + * @param {Phaser.Pointer} pointer - The Pointer causing the drag update. + * @param {boolean} fromStart - True if this is the first update, immediately after the drag has started. * @return {boolean} */ updateDrag: function (pointer, fromStart) { + if (fromStart === undefined) { fromStart = false; } + if (pointer.isUp) { this.stopDrag(pointer); return false; } - if (fromStart === undefined) - { - fromStart = false; - } - var px = this.globalToLocalX(pointer.x) + this._dragPoint.x + this.dragOffset.x; var py = this.globalToLocalY(pointer.y) + this._dragPoint.y + this.dragOffset.y; @@ -28644,7 +28883,6 @@ Phaser.InputHandler.prototype = { }, - /** * Bounds Rect check for the sprite drag * @@ -31709,6 +31947,11 @@ Phaser.Component.Bounds.prototype = { }; +// Phaser.Group extensions + +Phaser.Group.prototype.alignIn = Phaser.Component.Bounds.prototype.alignIn; +Phaser.Group.prototype.alignTo = Phaser.Component.Bounds.prototype.alignTo; + /** * @author Richard Davey * @copyright 2016 Photon Storm Ltd. @@ -32528,7 +32771,7 @@ Phaser.Component.Destroy.prototype = { */ /** -* The Events component is a collection of events fired by the parent game object. +* The Events component is a collection of events fired by the parent Game Object. * * Phaser uses what are known as 'Signals' for all event handling. All of the events in * this class are signals you can subscribe to, much in the same way you'd "listen" for @@ -32598,92 +32841,187 @@ Phaser.Events.prototype = { // The following properties are sentinels that will be replaced with getters /** - * @property {Phaser.Signal} onAddedToGroup - This signal is dispatched when the parent is added to a new Group. + * This signal is dispatched when this Game Object is added to a new Group. + * It is sent two arguments: + * {any} The Game Object that was added to the Group. + * {Phaser.Group} The Group it was added to. + * @property {Phaser.Signal} onAddedToGroup */ onAddedToGroup: null, /** - * @property {Phaser.Signal} onRemovedFromGroup - This signal is dispatched when the parent is removed from a Group. + * This signal is dispatched when the Game Object is removed from a Group. + * It is sent two arguments: + * {any} The Game Object that was removed from the Group. + * {Phaser.Group} The Group it was removed from. + * @property {Phaser.Signal} onRemovedFromGroup */ onRemovedFromGroup: null, /** - * @property {Phaser.Signal} onRemovedFromWorld - This signal is dispatched if this item or any of its parents are removed from the game world. + * This Signal is never used internally by Phaser and is now deprecated. + * @deprecated + * @property {Phaser.Signal} onRemovedFromWorld */ onRemovedFromWorld: null, /** - * @property {Phaser.Signal} onDestroy - This signal is dispatched when the parent is destroyed. + * This signal is dispatched when the Game Object is destroyed. + * This happens when `Sprite.destroy()` is called, or `Group.destroy()` with `destroyChildren` set to true. + * It is sent one argument: + * {any} The Game Object that was destroyed. + * @property {Phaser.Signal} onDestroy */ onDestroy: null, /** - * @property {Phaser.Signal} onKilled - This signal is dispatched when the parent is killed. + * This signal is dispatched when the Game Object is killed. + * This happens when `Sprite.kill()` is called. + * Please understand the difference between `kill` and `destroy` by looking at their respective methods. + * It is sent one argument: + * {any} The Game Object that was killed. + * @property {Phaser.Signal} onKilled */ onKilled: null, /** - * @property {Phaser.Signal} onRevived - This signal is dispatched when the parent is revived. + * This signal is dispatched when the Game Object is revived from a previously killed state. + * This happens when `Sprite.revive()` is called. + * It is sent one argument: + * {any} The Game Object that was revived. + * @property {Phaser.Signal} onRevived */ onRevived: null, /** - * @property {Phaser.Signal} onOutOfBounds - This signal is dispatched when the parent leaves the world bounds (only if Sprite.checkWorldBounds is true). + * This signal is dispatched when the Game Object leaves the Phaser.World bounds. + * This signal is only if `Sprite.checkWorldBounds` is set to `true`. + * It is sent one argument: + * {any} The Game Object that left the World bounds. + * @property {Phaser.Signal} onOutOfBounds */ onOutOfBounds: null, /** - * @property {Phaser.Signal} onEnterBounds - This signal is dispatched when the parent returns within the world bounds (only if Sprite.checkWorldBounds is true). + * This signal is dispatched when the Game Object returns within the Phaser.World bounds, having previously been outside of them. + * This signal is only if `Sprite.checkWorldBounds` is set to `true`. + * It is sent one argument: + * {any} The Game Object that entered the World bounds. + * @property {Phaser.Signal} onEnterBounds */ onEnterBounds: null, /** - * @property {Phaser.Signal} onInputOver - This signal is dispatched if the parent is inputEnabled and receives an over event from a Pointer. + * This signal is dispatched if the Game Object has `inputEnabled` set to `true`, + * and receives an over event from a Phaser.Pointer. + * It is sent two arguments: + * {any} The Game Object that received the event. + * {Phaser.Pointer} The Phaser.Pointer object that caused the event. + * @property {Phaser.Signal} onInputOver */ onInputOver: null, /** - * @property {Phaser.Signal} onInputOut - This signal is dispatched if the parent is inputEnabled and receives an out event from a Pointer. + * This signal is dispatched if the Game Object has `inputEnabled` set to `true`, + * and receives an out event from a Phaser.Pointer, which was previously over it. + * It is sent two arguments: + * {any} The Game Object that received the event. + * {Phaser.Pointer} The Phaser.Pointer object that caused the event. + * @property {Phaser.Signal} onInputOut */ onInputOut: null, /** - * @property {Phaser.Signal} onInputDown - This signal is dispatched if the parent is inputEnabled and receives a down event from a Pointer. + * This signal is dispatched if the Game Object has `inputEnabled` set to `true`, + * and receives a down event from a Phaser.Pointer. This effectively means the Pointer has been + * pressed down (but not yet released) on the Game Object. + * It is sent two arguments: + * {any} The Game Object that received the event. + * {Phaser.Pointer} The Phaser.Pointer object that caused the event. + * @property {Phaser.Signal} onInputDown */ onInputDown: null, /** - * @property {Phaser.Signal} onInputUp - This signal is dispatched if the parent is inputEnabled and receives an up event from a Pointer. + * This signal is dispatched if the Game Object has `inputEnabled` set to `true`, + * and receives an up event from a Phaser.Pointer. This effectively means the Pointer had been + * pressed down, and was then released on the Game Object. + * It is sent three arguments: + * {any} The Game Object that received the event. + * {Phaser.Pointer} The Phaser.Pointer object that caused the event. + * {boolean} isOver - Is the Pointer still over the Game Object? + * @property {Phaser.Signal} onInputUp */ onInputUp: null, /** - * @property {Phaser.Signal} onDragStart - This signal is dispatched if the parent is inputEnabled and receives a drag start event from a Pointer. + * This signal is dispatched if the Game Object has been `inputEnabled` and `enableDrag` has been set. + * It is sent when a Phaser.Pointer starts to drag the Game Object, taking into consideration the various + * drag limitations that may be set. + * It is sent four arguments: + * {any} The Game Object that received the event. + * {Phaser.Pointer} The Phaser.Pointer object that caused the event. + * {number} The x coordinate that the drag started from. + * {number} The y coordinate that the drag started from. + * @property {Phaser.Signal} onDragStart */ onDragStart: null, /** - * @property {Phaser.Signal} onDragUpdate - This signal is dispatched if the parent is inputEnabled and receives a drag update event from a Pointer. + * This signal is dispatched if the Game Object has been `inputEnabled` and `enableDrag` has been set. + * It is sent when a Phaser.Pointer is actively dragging the Game Object. + * Be warned: This is a high volume Signal. Be careful what you bind to it. + * It is sent six arguments: + * {any} The Game Object that received the event. + * {Phaser.Pointer} The Phaser.Pointer object that caused the event. + * {number} The new x coordinate of the Game Object. + * {number} The new y coordinate of the Game Object. + * {Phaser.Point} A Point object that contains the point the Game Object was snapped to, if `snapOnDrag` has been enabled. + * {boolean} The `fromStart` boolean, indicates if this is the first update immediately after the drag has started. + * @property {Phaser.Signal} onDragUpdate */ onDragUpdate: null, /** - * @property {Phaser.Signal} onDragStop - This signal is dispatched if the parent is inputEnabled and receives a drag stop event from a Pointer. + * This signal is dispatched if the Game Object has been `inputEnabled` and `enableDrag` has been set. + * It is sent when a Phaser.Pointer stops dragging the Game Object. + * It is sent two arguments: + * {any} The Game Object that received the event. + * {Phaser.Pointer} The Phaser.Pointer object that caused the event. + * @property {Phaser.Signal} onDragStop */ onDragStop: null, /** - * @property {Phaser.Signal} onAnimationStart - This signal is dispatched when the parent has an animation that is played. + * This signal is dispatched if the Game Object has the AnimationManager component, + * and an Animation has been played. + * You can also listen to `Animation.onStart` rather than via the Game Objects events. + * It is sent two arguments: + * {any} The Game Object that received the event. + * {Phaser.Animation} The Phaser.Animation that was started. + * @property {Phaser.Signal} onAnimationStart */ onAnimationStart: null, /** - * @property {Phaser.Signal} onAnimationComplete - This signal is dispatched when the parent has an animation that finishes playing. + * This signal is dispatched if the Game Object has the AnimationManager component, + * and an Animation has been stopped (via `animation.stop()` and the `dispatchComplete` argument has been set. + * You can also listen to `Animation.onComplete` rather than via the Game Objects events. + * It is sent two arguments: + * {any} The Game Object that received the event. + * {Phaser.Animation} The Phaser.Animation that was stopped. + * @property {Phaser.Signal} onAnimationComplete */ onAnimationComplete: null, /** - * @property {Phaser.Signal} onAnimationLoop - This signal is dispatched when the parent has an animation that loops playback. + * This signal is dispatched if the Game Object has the AnimationManager component, + * and an Animation has looped playback. + * You can also listen to `Animation.onLoop` rather than via the Game Objects events. + * It is sent two arguments: + * {any} The Game Object that received the event. + * {Phaser.Animation} The Phaser.Animation that looped. + * @property {Phaser.Signal} onAnimationLoop */ onAnimationLoop: null @@ -32989,6 +33327,10 @@ Phaser.Component.InputEnabled.prototype = { * Note that Input related events are dispatched from `this.events`, i.e.: `events.onInputDown`. * * If you set this property to false it will stop the Input Handler from processing any more input events. + * + * If you want to _temporarily_ disable input for a Game Object, then it's better to set + * `input.enabled = false`, as it won't reset any of the Input Handlers internal properties. + * You can then toggle this back on as needed. * * @property {boolean} inputEnabled */ @@ -35142,7 +35484,7 @@ Phaser.Sprite = function (game, x, y, key, frame) { */ this.physicsType = Phaser.SPRITE; - PIXI.Sprite.call(this, PIXI.TextureCache['__default']); + PIXI.Sprite.call(this, Phaser.Cache.DEFAULT); Phaser.Component.Core.init.call(this, game, x, y, key, frame); @@ -35244,7 +35586,7 @@ Phaser.Image = function (game, x, y, key, frame) { */ this.type = Phaser.IMAGE; - PIXI.Sprite.call(this, PIXI.TextureCache['__default']); + PIXI.Sprite.call(this, Phaser.Cache.DEFAULT); Phaser.Component.Core.init.call(this, game, x, y, key, frame); @@ -35949,11 +36291,13 @@ Phaser.SpriteBatch.prototype.constructor = Phaser.SpriteBatch; * @param {string} key - Internal Phaser reference key for the BitmapData. * @param {number} [width=256] - The width of the BitmapData in pixels. If undefined or zero it's set to a default value. * @param {number} [height=256] - The height of the BitmapData in pixels. If undefined or zero it's set to a default value. +* @param {boolean} [skipPool=false] - When this BitmapData generates its internal canvas to use for rendering, it will get the canvas from the CanvasPool if false, or create its own if true. */ -Phaser.BitmapData = function (game, key, width, height) { +Phaser.BitmapData = function (game, key, width, height, skipPool) { if (width === undefined || width === 0) { width = 256; } if (height === undefined || height === 0) { height = 256; } + if (skipPool === undefined) { skipPool = false; } /** * @property {Phaser.Game} game - A reference to the currently running game. @@ -35979,7 +36323,7 @@ Phaser.BitmapData = function (game, key, width, height) { * @property {HTMLCanvasElement} canvas - The canvas to which this BitmapData draws. * @default */ - this.canvas = PIXI.CanvasPool.create(this, width, height); + this.canvas = Phaser.Canvas.create(this, width, height, null, skipPool); /** * @property {CanvasRenderingContext2D} context - The 2d context of the canvas. @@ -37481,7 +37825,13 @@ Phaser.BitmapData.prototype = { /** * Draws the given Phaser.Sprite, Phaser.Image or Phaser.Text to this BitmapData at the coordinates specified. * You can use the optional width and height values to 'stretch' the sprite as it is drawn. This uses drawImage stretching, not scaling. - * When drawing it will take into account the Sprites rotation, scale and alpha values. + * + * The children will be drawn at their `x` and `y` world space coordinates. If this is outside the bounds of the BitmapData they won't be visible. + * When drawing it will take into account the rotation, scale, scaleMode, alpha and tint values. + * + * Note: You should ensure that at least 1 full update has taken place before calling this, + * otherwise the objects are likely to render incorrectly, if at all. + * You can trigger an update yourself by calling `stage.updateTransform()` before calling `draw`. * * @method Phaser.BitmapData#draw * @param {Phaser.Sprite|Phaser.Image|Phaser.Text|Phaser.RenderTexture} source - The Sprite, Image or Text object to draw onto this BitmapData. @@ -37512,7 +37862,7 @@ Phaser.BitmapData.prototype = { * * Note: You should ensure that at least 1 full update has taken place before calling this, * otherwise the objects are likely to render incorrectly, if at all. - * You can trigger an update yourself by calling `stage.updateTransform()` before calling `drawGroup`. + * You can trigger an update yourself by calling `stage.updateTransform()` before calling `drawGroup`. * * @method Phaser.BitmapData#drawGroup * @param {Phaser.Group} group - The Group to draw onto this BitmapData. Can also be Phaser.World. @@ -38566,6 +38916,7 @@ PIXI.Graphics.prototype.lineTo = function(x, y) this.currentPath.shape.points.push(x, y); this.dirty = true; + this.updateLocalBounds(); return this; }; @@ -38620,6 +38971,7 @@ PIXI.Graphics.prototype.quadraticCurveTo = function(cpX, cpY, toX, toY) } this.dirty = true; + this.updateLocalBounds(); return this; }; @@ -38678,6 +39030,7 @@ PIXI.Graphics.prototype.bezierCurveTo = function(cpX, cpY, cpX2, cpY2, toX, toY) } this.dirty = true; + this.updateLocalBounds(); return this; }; @@ -38747,6 +39100,7 @@ PIXI.Graphics.prototype.arcTo = function(x1, y1, x2, y2, radius) } this.dirty = true; + this.updateLocalBounds(); return this; }; @@ -38832,6 +39186,7 @@ PIXI.Graphics.prototype.arc = function(cx, cy, radius, startAngle, endAngle, ant } this.dirty = true; + this.updateLocalBounds(); return this; }; @@ -38993,6 +39348,8 @@ PIXI.Graphics.prototype.clear = function() this.clearDirty = true; this.graphicsData = []; + this.updateLocalBounds(); + return this; }; @@ -39027,8 +39384,6 @@ PIXI.Graphics.prototype.generateTexture = function(resolution, scaleMode, paddin canvasBuffer.context.translate(-bounds.x, -bounds.y); - // Call here - PIXI.CanvasGraphics.renderGraphics(this, canvasBuffer.context); return texture; @@ -39540,8 +39895,11 @@ PIXI.Graphics.prototype.drawShape = function(shape) } this.dirty = true; + + this.updateLocalBounds(); return data; + }; /** @@ -41727,7 +42085,29 @@ PIXI.CanvasGraphics.updateGraphicsTint = function(graphics) */ /** -* Creates a new `Graphics` object. +* A Graphics object is a way to draw primitives to your game. Primitives include forms of geometry, such as Rectangles, +* Circles and Polygons. They also include lines, arcs and curves. When you initially create a Graphics object it will +* be empty. To 'draw' to it you first specify a lineStyle or fillStyle (or both), and then draw a shape. For example: +* +* ``` +* graphics.beginFill(0xff0000); +* graphics.drawCircle(50, 50, 100); +* graphics.endFill(); +* ``` +* +* This will draw a circle shape to the Graphics object, with a diameter of 100, located at x: 50, y: 50. +* +* When a Graphics object is rendered it will render differently based on if the game is running under Canvas or +* WebGL. Under Canvas it will use the HTML Canvas context drawing operations to draw the path. Under WebGL the +* graphics data is decomposed into polygons. Both of these are expensive processes, especially with complex shapes. +* +* If your Graphics object doesn't change much (or at all) once you've drawn your shape to it, then you will help +* performance by calling `Graphics.generateTexture`. This will 'bake' the Graphics object into a Texture, and return it. +* You can then use this Texture for Sprites or other display objects. If your Graphics object updates frequently then +* you should avoid doing this, as it will constantly generate new textures, which will consume memory. +* +* As you can tell, Graphics objects are a bit of a trade-off. While they are extremely useful, you need to be careful +* in their complexity and quantity of them in your game. * * @class Phaser.Graphics * @constructor @@ -43342,18 +43722,34 @@ Phaser.Text.prototype.componentsToFont = function (components) { }; /** - * The text to be displayed by this Text object. - * Use a \n to insert a carriage return and split the text. - * The text will be rendered with any style currently set. - * - * @method Phaser.Text#setText - * @param {string} [text] - The text to be displayed. Set to an empty string to clear text that is already present. - * @return {Phaser.Text} This Text instance. - */ -Phaser.Text.prototype.setText = function (text) { +* The text to be displayed by this Text object. +* Use a \n to insert a carriage return and split the text. +* The text will be rendered with any style currently set. +* +* Use the optional `immediate` argument if you need the Text display to update immediately. +* +* If not it will re-create the texture of this Text object during the next time the render +* loop is called. +* +* @method Phaser.Text#setText +* @param {string} [text] - The text to be displayed. Set to an empty string to clear text that is already present. +* @param {boolean} [immediate=false] - Update the texture used by this Text object immediately (true) or automatically during the next render loop (false). +* @return {Phaser.Text} This Text instance. +*/ +Phaser.Text.prototype.setText = function (text, immediate) { + + if (immediate === undefined) { immediate = false; } this.text = text.toString() || ''; - this.dirty = true; + + if (immediate) + { + this.updateText(); + } + else + { + this.dirty = true; + } return this; @@ -44364,7 +44760,7 @@ Object.defineProperty(Phaser.Text.prototype, 'height', { Phaser.Text.fontPropertiesCache = {}; -Phaser.Text.fontPropertiesCanvas = PIXI.CanvasPool.create(Phaser.Text.fontPropertiesCanvas); +Phaser.Text.fontPropertiesCanvas = document.createElement('canvas'); Phaser.Text.fontPropertiesContext = Phaser.Text.fontPropertiesCanvas.getContext('2d'); /** @@ -45742,7 +46138,7 @@ Phaser.Rope = function (game, x, y, key, frame, points) { */ this.type = Phaser.ROPE; - PIXI.Rope.call(this, PIXI.TextureCache['__default'], this.points); + PIXI.Rope.call(this, Phaser.Cache.DEFAULT, this.points); Phaser.Component.Core.init.call(this, game, x, y, key, frame); @@ -47517,14 +47913,7 @@ Phaser.Canvas = { width = width || 256; height = height || 256; - if (skipPool === undefined) - { - var canvas = PIXI.CanvasPool.create(parent, width, height); - } - else - { - var canvas = document.createElement('canvas'); - } + var canvas = (skipPool) ? document.createElement('canvas') : PIXI.CanvasPool.create(parent, width, height); if (typeof id === 'string' && id !== '') { @@ -48117,7 +48506,9 @@ Phaser.Math = { * @return {number} n mod 1 */ shear: function (n) { + return n % 1; + }, /** @@ -48128,8 +48519,8 @@ Phaser.Math = { * @method Phaser.Math#snapTo * @param {number} input - The value to snap. * @param {number} gap - The interval gap of the grid. - * @param {number} [start] - Optional starting offset for gap. - * @return {number} + * @param {number} [start=0] - Optional starting offset for gap. + * @return {number} The snapped value. */ snapTo: function (input, gap, start) { @@ -48155,8 +48546,8 @@ Phaser.Math = { * @method Phaser.Math#snapToFloor * @param {number} input - The value to snap. * @param {number} gap - The interval gap of the grid. - * @param {number} [start] - Optional starting offset for gap. - * @return {number} + * @param {number} [start=0] - Optional starting offset for gap. + * @return {number} The snapped value. */ snapToFloor: function (input, gap, start) { @@ -48182,8 +48573,8 @@ Phaser.Math = { * @method Phaser.Math#snapToCeil * @param {number} input - The value to snap. * @param {number} gap - The interval gap of the grid. - * @param {number} [start] - Optional starting offset for gap. - * @return {number} + * @param {number} [start=0] - Optional starting offset for gap. + * @return {number} The snapped value. */ snapToCeil: function (input, gap, start) { @@ -48231,9 +48622,9 @@ Phaser.Math = { * * @method Phaser.Math#roundTo * @param {number} value - The value to round. - * @param {number} place - The place to round to. - * @param {number} base - The base to round in... default is 10 for decimal. - * @return {number} + * @param {number} [place=0] - The place to round to. + * @param {number} [base=10] - The base to round in. Default is 10 for decimal. + * @return {number} The rounded value. */ roundTo: function (value, place, base) { @@ -48247,11 +48638,14 @@ Phaser.Math = { }, /** + * Floors to some place comparative to a `base`, default is 10 for decimal place. + * The `place` is represented by the power applied to `base` to get that place. + * * @method Phaser.Math#floorTo * @param {number} value - The value to round. - * @param {number} place - The place to round to. - * @param {number} base - The base to round in... default is 10 for decimal. - * @return {number} + * @param {number} [place=0] - The place to round to. + * @param {number} [base=10] - The base to round in. Default is 10 for decimal. + * @return {number} The rounded value. */ floorTo: function (value, place, base) { @@ -48265,11 +48659,14 @@ Phaser.Math = { }, /** + * Ceils to some place comparative to a `base`, default is 10 for decimal place. + * The `place` is represented by the power applied to `base` to get that place. + * * @method Phaser.Math#ceilTo * @param {number} value - The value to round. - * @param {number} place - The place to round to. - * @param {number} base - The base to round in... default is 10 for decimal. - * @return {number} + * @param {number} [place=0] - The place to round to. + * @param {number} [base=10] - The base to round in. Default is 10 for decimal. + * @return {number} The rounded value. */ ceilTo: function (value, place, base) { @@ -48284,42 +48681,51 @@ Phaser.Math = { /** * Find the angle of a segment from (x1, y1) -> (x2, y2). + * * @method Phaser.Math#angleBetween - * @param {number} x1 - * @param {number} y1 - * @param {number} x2 - * @param {number} y2 + * @param {number} x1 - The x coordinate of the first value. + * @param {number} y1 - The y coordinate of the first value. + * @param {number} x2 - The x coordinate of the second value. + * @param {number} y2 - The y coordinate of the second value. * @return {number} The angle, in radians. */ angleBetween: function (x1, y1, x2, y2) { + return Math.atan2(y2 - y1, x2 - x1); + }, /** * Find the angle of a segment from (x1, y1) -> (x2, y2). - * Note that the difference between this method and Math.angleBetween is that this assumes the y coordinate travels + * + * The difference between this method and Math.angleBetween is that this assumes the y coordinate travels * down the screen. * * @method Phaser.Math#angleBetweenY - * @param {number} x1 - * @param {number} y1 - * @param {number} x2 - * @param {number} y2 + * @param {number} x1 - The x coordinate of the first value. + * @param {number} y1 - The y coordinate of the first value. + * @param {number} x2 - The x coordinate of the second value. + * @param {number} y2 - The y coordinate of the second value. * @return {number} The angle, in radians. */ angleBetweenY: function (x1, y1, x2, y2) { + return Math.atan2(x2 - x1, y2 - y1); + }, /** * Find the angle of a segment from (point1.x, point1.y) -> (point2.x, point2.y). + * * @method Phaser.Math#angleBetweenPoints - * @param {Phaser.Point} point1 - * @param {Phaser.Point} point2 - * @return {number} The angle, in radians. + * @param {Phaser.Point} point1 - The first point. + * @param {Phaser.Point} point2 - The second point. + * @return {number} The angle between the two points, in radians. */ angleBetweenPoints: function (point1, point2) { + return Math.atan2(point2.y - point1.y, point2.x - point1.x); + }, /** @@ -48330,24 +48736,28 @@ Phaser.Math = { * @return {number} The angle, in radians. */ angleBetweenPointsY: function (point1, point2) { + return Math.atan2(point2.x - point1.x, point2.y - point1.y); + }, /** * Reverses an angle. * @method Phaser.Math#reverseAngle * @param {number} angleRad - The angle to reverse, in radians. - * @return {number} Returns the reverse angle, in radians. + * @return {number} The reverse angle, in radians. */ reverseAngle: function (angleRad) { + return this.normalizeAngle(angleRad + Math.PI, true); + }, /** * Normalizes an angle to the [0,2pi) range. * @method Phaser.Math#normalizeAngle * @param {number} angleRad - The angle to normalize, in radians. - * @return {number} Returns the angle, fit within the [0,2pi] range, in radians. + * @return {number} The angle, fit within the [0,2pi] range, in radians. */ normalizeAngle: function (angleRad) { @@ -48363,10 +48773,12 @@ Phaser.Math = { * @param {number} value - The value to add the amount to. * @param {number} amount - The amount to add to the value. * @param {number} max - The maximum the value is allowed to be. - * @return {number} + * @return {number} The new value. */ maxAdd: function (value, amount, max) { + return Math.min(value + amount, max); + }, /** @@ -48379,7 +48791,9 @@ Phaser.Math = { * @return {number} The new value. */ minSub: function (value, amount, min) { + return Math.max(value - amount, min); + }, /** @@ -48444,8 +48858,10 @@ Phaser.Math = { * @return {boolean} True if the given number is odd. False if the given number is even. */ isOdd: function (n) { + // Does not work with extremely large values return !!(n & 1); + }, /** @@ -48456,8 +48872,10 @@ Phaser.Math = { * @return {boolean} True if the given number is even. False if the given number is odd. */ isEven: function (n) { + // Does not work with extremely large values return !(n & 1); + }, /** @@ -48694,11 +49112,13 @@ Phaser.Math = { * @method Phaser.Math#linear * @param {number} p0 * @param {number} p1 - * @param {number} t + * @param {number} t - A value between 0 and 1. * @return {number} */ linear: function (p0, p1, t) { + return (p1 - p0) * t + p0; + }, /** @@ -48709,7 +49129,9 @@ Phaser.Math = { * @return {number} */ bernstein: function (n, i) { + return this.factorial(n) / this.factorial(i) / this.factorial(n - i); + }, /** @@ -48717,7 +49139,7 @@ Phaser.Math = { * @param {number} value - the number you want to evaluate * @return {number} */ - factorial : function( value ){ + factorial: function (value) { if (value === 0) { @@ -48756,15 +49178,17 @@ Phaser.Math = { }, /** - * The (absolute) difference between two values. + * The absolute difference between two values. * * @method Phaser.Math#difference - * @param {number} a - * @param {number} b - * @return {number} + * @param {number} a - The first value to check. + * @param {number} b - The second value to check. + * @return {number} The absolute difference between the two values. */ difference: function (a, b) { + return Math.abs(a - b); + }, /** @@ -48915,7 +49339,9 @@ Phaser.Math = { * @return {number} */ clampBottom: function (x, a) { + return x < a ? a : x; + }, /** @@ -48929,22 +49355,26 @@ Phaser.Math = { * @see {@link Phaser.Math.fuzzyEqual} */ within: function (a, b, tolerance) { + return (Math.abs(a - b) <= tolerance); + }, /** * Linear mapping from range to range * * @method Phaser.Math#mapLinear - * @param {number} x the value to map - * @param {number} a1 first endpoint of the range - * @param {number} a2 final endpoint of the range - * @param {number} b1 first endpoint of the range - * @param {number} b2 final endpoint of the range + * @param {number} x - The value to map + * @param {number} a1 - First endpoint of the range + * @param {number} a2 - Final endpoint of the range + * @param {number} b1 - First endpoint of the range + * @param {number} b2 - Final endpoint of the range * @return {number} */ mapLinear: function (x, a1, a2, b1, b2) { + return b1 + ( x - a1 ) * ( b2 - b1 ) / ( a2 - a1 ); + }, /** @@ -48976,8 +49406,11 @@ Phaser.Math = { * @return {float} A value between 0 and 1. */ smootherstep: function (x, min, max) { + x = Math.max(0, Math.min(1, (x - min) / (max - min))); + return x * x * x * (x * (x * 6 - 15) + 10); + }, /** @@ -48990,7 +49423,9 @@ Phaser.Math = { * @return {integer} An integer in {-1, 0, 1} */ sign: function (x) { + return ( x < 0 ) ? -1 : ( ( x > 0 ) ? 1 : 0 ); + }, /** @@ -54227,7 +54662,7 @@ Phaser.AnimationManager.prototype = { refreshFrame: function () { // TODO - this.sprite.setTexture(PIXI.TextureCache[this.currentFrame.uuid]); + // this.sprite.setTexture(PIXI.TextureCache[this.currentFrame.uuid]); }, @@ -54702,7 +55137,7 @@ Phaser.Animation.prototype = { { for (var i = 0; i < this._frames.length; i++) { - if (this._frames[i] === frameIndex) + if (this._frames[i] === frameId) { frameIndex = i; } @@ -56324,6 +56759,20 @@ Phaser.Cache.SHADER = 14; */ Phaser.Cache.RENDER_TEXTURE = 15; +/** +* The default image used for a texture when no other is specified. +* @constant +* @type {PIXI.Texture} +*/ +Phaser.Cache.DEFAULT = null; + +/** +* The default image used for a texture when the source image is missing. +* @constant +* @type {PIXI.Texture} +*/ +Phaser.Cache.MISSING = null; + Phaser.Cache.prototype = { ////////////////// @@ -56378,6 +56827,15 @@ Phaser.Cache.prototype = { this._resolveURL(url, img); + if (key === '__default') + { + Phaser.Cache.DEFAULT = new PIXI.Texture(img.base); + } + else if (key === '__missing') + { + Phaser.Cache.MISSING = new PIXI.Texture(img.base); + } + return img; }, @@ -56402,7 +56860,8 @@ Phaser.Cache.prototype = { // Because we don't want to invalidate the sprite batch for an invisible texture obj.base.skipRender = true; - PIXI.TextureCache['__default'] = new PIXI.Texture(obj.base); + // Make it easily available within the rest of Phaser / Pixi + Phaser.Cache.DEFAULT = new PIXI.Texture(obj.base); }, @@ -56423,7 +56882,8 @@ Phaser.Cache.prototype = { var obj = this.addImage('__missing', null, img); - PIXI.TextureCache['__missing'] = new PIXI.Texture(obj.base); + // Make it easily available within the rest of Phaser / Pixi + Phaser.Cache.MISSING = new PIXI.Texture(obj.base); }, @@ -57673,71 +58133,6 @@ Phaser.Cache.prototype = { }, - /** - * Gets a PIXI.Texture by key from the PIXI.TextureCache. - * - * If the texture isn't found in the cache, then it searches the Phaser Image Cache and - * creates a new PIXI.Texture object which is then returned. - * - * @method Phaser.Cache#getPixiTexture - * @deprecated - * @param {string} key - Asset key of the Texture to retrieve from the Cache. - * @return {PIXI.Texture} The Texture object. - */ - getPixiTexture: function (key) { - - if (PIXI.TextureCache[key]) - { - return PIXI.TextureCache[key]; - } - else - { - var base = this.getPixiBaseTexture(key); - - if (base) - { - return new PIXI.Texture(base); - } - else - { - return null; - } - } - - }, - - /** - * Gets a PIXI.BaseTexture by key from the PIXI.BaseTextureCache. - * - * If the texture isn't found in the cache, then it searches the Phaser Image Cache. - * - * @method Phaser.Cache#getPixiBaseTexture - * @deprecated - * @param {string} key - Asset key of the BaseTexture to retrieve from the Cache. - * @return {PIXI.BaseTexture} The BaseTexture object or null if not found. - */ - getPixiBaseTexture: function (key) { - - if (PIXI.BaseTextureCache[key]) - { - return PIXI.BaseTextureCache[key]; - } - else - { - var img = this.getItem(key, Phaser.Cache.IMAGE, 'getPixiBaseTexture'); - - if (img !== null) - { - return img.base; - } - else - { - return null; - } - } - - }, - /** * Get a cached object by the URL. * This only returns a value if you set Cache.autoResolveURL to `true` *before* starting the preload of any assets. @@ -57815,20 +58210,20 @@ Phaser.Cache.prototype = { * * You can optionally elect to destroy it as well. This calls BaseTexture.destroy on it. * - * Note that this only removes it from the Phaser and PIXI Caches. If you still have references to the data elsewhere + * Note that this only removes it from the Phaser Cache. If you still have references to the data elsewhere * then it will persist in memory. * * @method Phaser.Cache#removeImage * @param {string} key - Key of the asset you want to remove. - * @param {boolean} [removeFromPixi=true] - Should this image also be destroyed? Removing it from the PIXI.BaseTextureCache? + * @param {boolean} [destroyBaseTexture=true] - Should the BaseTexture behind this image also be destroyed? */ - removeImage: function (key, removeFromPixi) { + removeImage: function (key, destroyBaseTexture) { - if (removeFromPixi === undefined) { removeFromPixi = true; } + if (destroyBaseTexture === undefined) { destroyBaseTexture = true; } var img = this.getImage(key, true); - if (removeFromPixi && img.base) + if (destroyBaseTexture && img.base) { img.base.destroy(); } @@ -58242,7 +58637,19 @@ Phaser.Loader = function (game) { this.path = ''; /** - * This event is dispatched when the loading process starts: before the first file has been requested, + * Used to map the application mime-types to to the Accept header in XHR requests. + * If you don't require these mappings, or they cause problems on your server, then + * remove them from the headers object and the XHR request will not try to use them. + * @property {object} headers + * @default + */ + this.headers = { + json: "application/json", + xml: "application/xml" + }; + + /** + * This event is dispatched when the loading process starts: before the first file has been requested, * but after all the initial packs have been loaded. * * @property {Phaser.Signal} onLoadStart @@ -60457,6 +60864,11 @@ Phaser.Loader.prototype = { xhr.open("GET", url, true); xhr.responseType = type; + if (this.headers[file.type]) + { + xhr.setRequestHeader("Accept", this.headers[file.type]); + } + onerror = onerror || this.fileError; var _this = this; @@ -61517,11 +61929,6 @@ Phaser.Sound = function (game, key, volume, loop, connect) { */ this.loop = loop; - /** - * @property {number} volume - The sound or sound marker volume. A value between 0 (silence) and 1 (full volume). - */ - this.volume = volume; - /** * @property {object} markers - The sound markers. */ @@ -62026,7 +62433,7 @@ Phaser.Sound.prototype = { { this._sound.disconnect(this.externalNode); } - else + else if (this.gainNode) { this._sound.disconnect(this.gainNode); } @@ -62364,7 +62771,7 @@ Phaser.Sound.prototype = { { this._sound.disconnect(this.externalNode); } - else + else if (this.gainNode) { this._sound.disconnect(this.gainNode); } @@ -65909,10 +66316,15 @@ Object.defineProperty(Phaser.ScaleManager.prototype, "isGameLandscape", { /** * A collection of methods for displaying debug information about game objects. +* +* If your game is running in Canvas mode, then you should invoke all of the Debug methods from +* your games `render` function. This is because they are drawn directly onto the game canvas +* itself, so if you call any debug methods outside of `render` they are likely to be overwritten +* by the game itself. +* * If your game is running in WebGL then Debug will create a Sprite that is placed at the top of the Stage display list and bind a canvas texture * to it, which must be uploaded every frame. Be advised: this is very expensive, especially in browsers like Firefox. So please only enable Debug * in WebGL mode if you really need it (or your desktop can cope with it well) and disable it for production! -* If your game is using a Canvas renderer then the debug information is literally drawn on the top of the active game canvas and no Sprite is used. * * @class Phaser.Utils.Debug * @constructor @@ -66007,7 +66419,7 @@ Phaser.Utils.Debug.prototype = { } else { - this.bmd = this.game.make.bitmapData(this.game.width, this.game.height); + this.bmd = new Phaser.BitmapData(this.game, '__DEBUG', this.game.width, this.game.height, true); this.sprite = this.game.make.image(0, 0, this.bmd); this.game.stage.addChild(this.sprite); @@ -67696,13 +68108,63 @@ Phaser.ArrayUtils = { }, + /** + * Moves the element from the end of the array to the start, shifting all items in the process. + * The "rotation" happens to the right. + * + * Before: `[ A, B, C, D, E, F ]` + * After: `[ F, A, B, C, D, E ]` + * + * See also Phaser.ArrayUtils.rotateLeft. + * + * @method Phaser.ArrayUtils.rotateRight + * @param {any[]} array - The array to rotate. The array is modified. + * @return {any} The shifted value. + */ + rotateRight: function (array) { + + var s = array.pop(); + array.unshift(s); + + return s; + + }, + /** * Moves the element from the start of the array to the end, shifting all items in the process. * The "rotation" happens to the left. * + * Before: `[ A, B, C, D, E, F ]` + * After: `[ B, C, D, E, F, A ]` + * + * See also Phaser.ArrayUtils.rotateRight + * + * @method Phaser.ArrayUtils.rotateLeft + * @param {any[]} array - The array to rotate. The array is modified. + * @return {any} The rotated value. + */ + rotateLeft: function (array) { + + var s = array.shift(); + array.push(s); + + return s; + + }, + + /** + * Moves the element from the start of the array to the end, shifting all items in the process. + * The "rotation" happens to the left. + * + * Before: `[ A, B, C, D, E, F ]` + * After: `[ B, C, D, E, F, A ]` + * + * See also Phaser.ArrayUtils.rotateRight + * * @method Phaser.ArrayUtils.rotate - * @param {any[]} array - The array to shift/rotate. The array is modified. - * @return {any} The shifted value. + * @deprecated Please use Phaser.ArrayUtils.rotate instead. + * @param {any[]} array - The array to rotate. The array is modified. + * @return {any} The rotated value. */ rotate: function (array) { @@ -68776,6 +69238,23 @@ Phaser.Color = { }, + /** + * Converts RGBA components to a 32 bit integer in AABBGGRR format. + * + * @method Phaser.Color.toABGR + * @static + * @param {number} r - The red color component, in the range 0 - 255. + * @param {number} g - The green color component, in the range 0 - 255. + * @param {number} b - The blue color component, in the range 0 - 255. + * @param {number} a - The alpha color component, in the range 0 - 255. + * @return {number} A RGBA-packed 32 bit integer + */ + toABGR: function (r, g, b, a) { + + return ((a << 24) | (b << 16) | (g << 8) | r) >>> 0; + + }, + /** * Converts an RGB color value to HSL (hue, saturation and lightness). * Conversion forumla from http://en.wikipedia.org/wiki/HSL_color_space. @@ -70740,7 +71219,7 @@ Phaser.Video = function (game, key, url) { } else { - this.baseTexture = new PIXI.BaseTexture(PIXI.TextureCache['__default'].baseTexture.source); + this.baseTexture = new PIXI.BaseTexture(Phaser.Cache.DEFAULT.baseTexture.source); this.baseTexture.forceLoaded(this.width, this.height); } diff --git a/build/custom/phaser-no-physics.map b/build/custom/phaser-no-physics.map index 39d44ce0c..cf9b54582 100644 --- a/build/custom/phaser-no-physics.map +++ b/build/custom/phaser-no-physics.map @@ -1 +1 @@ -{"version":3,"file":"phaser-no-physics.min.js","sources":["phaser-no-physics.js"],"names":["root","this","PIXI","game","WEBGL_RENDERER","CANVAS_RENDERER","VERSION","_UID","Float32Array","Uint16Array","Uint32Array","ArrayBuffer","Array","PI_2","Math","PI","RAD_TO_DEG","DEG_TO_RAD","RETINA_PREFIX","DisplayObject","position","Point","scale","pivot","rotation","alpha","visible","hitArea","renderable","parent","stage","worldAlpha","worldTransform","Matrix","worldPosition","worldScale","worldRotation","_sr","_cr","filterArea","_bounds","Rectangle","_currentBounds","_mask","_cacheAsBitmap","_cacheIsDirty","prototype","constructor","destroy","children","i","length","_destroyCachedSprite","Object","defineProperty","get","item","set","value","isMask","_filters","passes","filterPasses","j","push","_filterBlock","target","blendMode","blendModes","MULTIPLY","NORMAL","_generateCachedSprite","updateTransform","p","world","a","b","c","d","tx","ty","pt","wt","rotationCache","sin","cos","x","y","sqrt","atan2","transformCallback","call","transformCallbackContext","displayObjectUpdateTransform","getBounds","matrix","EmptyRectangle","getLocalBounds","identityMatrix","setStageReference","preUpdate","generateTexture","resolution","scaleMode","renderer","bounds","renderTexture","RenderTexture","width","height","_tempMatrix","render","updateCache","toGlobal","apply","toLocal","from","applyInverse","_renderCachedSprite","renderSession","_cachedSprite","gl","Sprite","_renderWebGL","_renderCanvas","max","ceil","texture","resize","tempFilters","filters","anchor","DisplayObjectContainer","ignoreChildInput","create","_width","_height","addChild","child","addChildAt","index","removeChild","splice","Error","swapChildren","child2","index1","getChildIndex","index2","indexOf","setChildIndex","currentIndex","getChildAt","removeChildAt","removeStageReference","undefined","removeChildren","beginIndex","endIndex","begin","end","range","removed","displayObjectContainerUpdateTransform","childBounds","childMaxX","childMaxY","minX","Infinity","minY","maxX","maxY","childVisible","matrixCache","spriteBatch","flush","filterManager","pushFilter","stop","maskManager","pushMask","mask","start","popMask","popFilter","Texture","emptyTexture","tint","cachedTint","tintedTexture","shader","exists","baseTexture","hasLoaded","onTextureUpdate","frame","setTexture","destroyBase","skipRender","valid","w0","w1","h0","h1","temp","x1","y1","x2","y2","x3","y3","x4","y4","crop","currentBlendMode","context","globalCompositeOperation","blendModesCanvas","globalAlpha","smoothProperty","scaleModes","LINEAR","dx","trim","dy","shakeX","shakeY","roundPixels","setTransform","cw","ch","requiresReTint","CanvasTinter","getTintedTexture","drawImage","cx","cy","source","fromFrame","frameId","TextureCache","fromImage","imageId","crossorigin","SpriteBatch","textureThing","ready","initWebGL","fastSpriteBatch","WebGLFastSpriteBatch","setContext","shaderManager","setShader","fastShader","transform","isRotated","childTransform","hex2rgb","hex","rgb2hex","rgb","canUseNewCanvasBlendModes","document","pngHead","pngEnd","magenta","Image","src","yellow","canvas","CanvasPool","getContext","getImageData","data","remove","getNextPowerOfTwo","number","result","isPowerOfTwo","idx","getFirst","container","createElement","pool","removeByCanvas","getTotal","getFree","initDefaultShaders","CompileVertexShader","shaderSrc","_CompileShader","VERTEX_SHADER","CompileFragmentShader","FRAGMENT_SHADER","shaderType","isArray","join","createShader","shaderSource","compileShader","getShaderParameter","COMPILE_STATUS","window","console","log","getShaderInfoLog","compileProgram","vertexSrc","fragmentSrc","fragmentShader","vertexShader","shaderProgram","createProgram","attachShader","linkProgram","getProgramParameter","LINK_STATUS","getProgramInfoLog","PixiShader","program","textureCount","firstRun","dirty","attributes","init","defaultVertexSrc","useProgram","uSampler","getUniformLocation","projectionVector","offsetVector","dimensions","aVertexPosition","getAttribLocation","aTextureCoord","colorAttribute","key","uniforms","uniformLocation","initUniforms","uniform","type","_init","initSampler2D","glMatrix","glValueLength","glFunc","uniformMatrix2fv","uniformMatrix3fv","uniformMatrix4fv","activeTexture","bindTexture","TEXTURE_2D","_glTextures","id","textureData","magFilter","minFilter","wrapS","CLAMP_TO_EDGE","wrapT","format","LUMINANCE","RGBA","repeat","REPEAT","pixelStorei","UNPACK_FLIP_Y_WEBGL","flipY","border","texImage2D","UNSIGNED_BYTE","texParameteri","TEXTURE_MAG_FILTER","TEXTURE_MIN_FILTER","TEXTURE_WRAP_S","TEXTURE_WRAP_T","uniform1i","syncUniforms","transpose","z","w","_dirty","instances","updateTexture","deleteProgram","PixiFastShader","uMatrix","aPositionCoord","aScale","aRotation","StripShader","translationMatrix","attribute","PrimitiveShader","tintColor","ComplexPrimitiveShader","color","glContexts","WebGLRenderer","defaultRenderer","transparent","autoResize","preserveDrawingBuffer","clearBeforeRender","view","_contextOptions","antialias","premultipliedAlpha","stencil","projection","offset","WebGLShaderManager","WebGLSpriteBatch","WebGLMaskManager","WebGLFilterManager","stencilManager","WebGLStencilManager","blendModeManager","WebGLBlendModeManager","drawCount","initContext","mapBlendModes","glContextId","disable","DEPTH_TEST","CULL_FACE","enable","BLEND","contextLost","viewport","bindFramebuffer","FRAMEBUFFER","clearColor","_bgColor","r","g","clear","COLOR_BUFFER_BIT","camera","_shake","renderDisplayObject","displayObject","buffer","setBlendMode","style","createTexture","UNPACK_PREMULTIPLY_ALPHA_WEBGL","NEAREST","mipmap","LINEAR_MIPMAP_LINEAR","NEAREST_MIPMAP_NEAREST","generateMipmap","_powerOf2","blendModesWebGL","modes","ONE","ONE_MINUS_SRC_ALPHA","ADD","SRC_ALPHA","DST_ALPHA","DST_COLOR","SCREEN","OVERLAY","DARKEN","LIGHTEN","COLOR_DODGE","COLOR_BURN","HARD_LIGHT","SOFT_LIGHT","DIFFERENCE","EXCLUSION","HUE","SATURATION","COLOR","LUMINOSITY","blendModeWebGL","blendFunc","maskData","WebGLGraphics","updateGraphics","_webGL","pushStencil","popStencil","stencilStack","reverse","count","graphics","webGLData","bindGraphics","STENCIL_TEST","STENCIL_BUFFER_BIT","level","colorMask","stencilFunc","ALWAYS","stencilOp","KEEP","INVERT","mode","drawElements","TRIANGLE_FAN","indices","UNSIGNED_SHORT","EQUAL","DECR","INCR","TRIANGLE_STRIP","_currentGraphics","complexPrimitiveShader","uniform1f","toArray","uniform2f","uniform3fv","bindBuffer","ARRAY_BUFFER","vertexAttribPointer","FLOAT","ELEMENT_ARRAY_BUFFER","indexBuffer","primitiveShader","pop","maxAttibs","attribState","tempAttribState","stack","defaultShader","stripShader","setAttribs","attribs","attribId","enableVertexAttribArray","disableVertexAttribArray","_currentId","currentShader","vertSize","size","numVerts","numIndices","vertices","positions","colors","lastIndexCount","drawing","currentBatchSize","currentBaseTexture","textures","shaders","sprites","AbstractFilter","vertexBuffer","createBuffer","bufferData","STATIC_DRAW","DYNAMIC_DRAW","sprite","uvs","_uvs","aX","aY","x0","y0","renderTilingSprite","tilingTexture","TextureUvs","h","tilePosition","tileScaleOffset","offsetX","offsetY","scaleX","tileScale","scaleY","TEXTURE0","stride","bufferSubData","subarray","nextTexture","nextBlendMode","nextShader","batchSize","blendSwap","shaderSwap","skip","renderBatch","startIndex","TRIANGLES","deleteBuffer","maxSize","renderSprite","filterStack","texturePool","initShaderBuffers","filterBlock","_filterArea","_previous_stencil_mgr","filter","FilterTexture","padding","frameBuffer","_glFilterTexture","vertexArray","uvBuffer","uvArray","inputTexture","outputTexture","filterPass","applyFilterPass","sizeX","sizeY","currentFilter","colorBuffer","colorArray","createFramebuffer","DEFAULT","framebufferTexture2D","COLOR_ATTACHMENT0","renderBuffer","createRenderbuffer","bindRenderbuffer","RENDERBUFFER","framebufferRenderbuffer","DEPTH_STENCIL_ATTACHMENT","renderbufferStorage","DEPTH_STENCIL","deleteFramebuffer","deleteTexture","CanvasBuffer","clearRect","CanvasMaskManager","save","cacheAlpha","CanvasGraphics","renderGraphicsMask","clip","restore","tintMethod","tintWithMultiply","fillStyle","toString","substr","fillRect","tintWithPerPixel","rgbValues","pixelData","pixels","canHandleAlpha","putImageData","checkInverseAlpha","s1","s2","canUseMultiply","CanvasRenderer","refresh","Phaser","Canvas","getSmoothingPrefix","navigator","isCocoonJS","screencanvas","rgba","removeView","useNew","BaseTextureCache","BaseTextureCacheIdGenerator","BaseTexture","complete","naturalWidth","naturalHeight","imageUrl","forceLoaded","_pixiId","unloadFromGPU","updateSourceImage","newSrc","glTexture","image","crossOrigin","fromCanvas","TextureCacheIdGenerator","FrameCache","TextureSilentFail","noFrame","isTiling","requiresUpdate","setFrame","onBaseTextureLoaded","_updateUvs","tw","th","addTextureToCache","removeTextureFromCache","textureBuffer","renderWebGL","renderCanvas","tempMatrix","updateBase","identity","translate","append","realResolution","getImage","getBase64","getCanvas","toDataURL","webGLPixels","Uint8Array","readPixels","tempCanvas","canvasData","Strip","canvasPadding","drawMode","DrawModes","_vertexBuffer","_initWebGL","_renderStrip","_indexBuffer","_uvBuffer","_colorBuffer","_renderCanvasTriangleStrip","_renderCanvasTriangles","_renderCanvasDrawTriangle","index0","textureSource","textureWidth","textureHeight","u0","u1","u2","v0","v1","v2","paddingX","paddingY","centerX","centerY","normX","normY","dist","beginPath","moveTo","lineTo","closePath","delta","deltaA","deltaB","deltaC","deltaD","deltaE","deltaF","renderStripFlat","strip","fill","updateFrame","n","rawX","rawY","Rope","points","lastPoint","point","amount","total","nextPoint","perp","ratio","perpLength","num","TilingSprite","textureDebug","canvasBuffer","tilePattern","refreshTexture","frameWidth","frameHeight","generateTilingTexture","needsUpdate","createPattern","sessionBlendMode","forcePowerOfTwo","targetWidth","_frame","sourceSizeW","targetHeight","sourceSizeH","trimmed","spriteSourceSizeX","spriteSourceSizeY","strokeStyle","strokeRect","exports","module","define","amd","WheelEventProxy","scaleFactor","deltaMode","_scaleFactor","_deltaMode","originalEvent","GAMES","AUTO","CANVAS","WEBGL","HEADLESS","NONE","LEFT","RIGHT","UP","DOWN","SPRITE","BUTTON","IMAGE","GRAPHICS","TEXT","TILESPRITE","BITMAPTEXT","GROUP","RENDERTEXTURE","TILEMAP","TILEMAPLAYER","EMITTER","POLYGON","BITMAPDATA","CANVAS_FILTER","WEBGL_FILTER","ELLIPSE","SPRITEBATCH","RETROFONT","POINTER","ROPE","CIRCLE","RECTANGLE","LINE","MATRIX","POINT","ROUNDEDRECTANGLE","CREATURE","VIDEO","PENDING_ATLAS","HORIZONTAL","VERTICAL","LANDSCAPE","PORTRAIT","ANGLE_UP","ANGLE_DOWN","ANGLE_LEFT","ANGLE_RIGHT","ANGLE_NORTH_EAST","ANGLE_NORTH_WEST","ANGLE_SOUTH_EAST","ANGLE_SOUTH_WEST","TOP_LEFT","TOP_CENTER","TOP_RIGHT","LEFT_TOP","LEFT_CENTER","LEFT_BOTTOM","CENTER","RIGHT_TOP","RIGHT_CENTER","RIGHT_BOTTOM","BOTTOM_LEFT","BOTTOM_CENTER","BOTTOM_RIGHT","trunc","floor","Function","bind","slice","thisArg","bound","args","boundArgs","concat","arguments","TypeError","F","proto","arg","forEach","fun","t","len","CheapArray","assert","warn","Utils","getProperty","obj","prop","parts","split","last","l","current","setProperty","chanceRoll","chance","random","randomChoice","choice1","choice2","parseDimension","dimension","f","px","parseInt","innerWidth","innerHeight","pad","str","dir","padlen","right","left","isPlainObject","nodeType","hasOwnProperty","e","extend","options","name","copy","copyIsArray","clone","deep","mixinPrototype","mixin","replace","mixinKeys","keys","to","o","childNodes","cloneNode","Circle","diameter","_diameter","_radius","circumference","out","u","radius","setTo","copyFrom","copyTo","dest","distance","round","output","contains","circumferencePoint","angle","asDegrees","offsetPoint","top","bottom","equals","intersects","degToRad","intersectsRectangle","abs","halfWidth","xDist","halfHeight","yDist","xCornerDist","yCornerDist","xCornerDistSq","yCornerDistSq","maxCornerDistSq","Ellipse","normx","normy","Line","fromSprite","startSprite","endSprite","useCenter","center","fromAngle","rotate","rotateAround","line","asSegment","intersectsPoints","reflect","midPoint","centerOn","add","pointOnLine","pointOnSegment","xMin","min","xMax","yMin","yMax","coordinatesOnLine","stepRate","results","sx","sy","err","e2","wrap","a1","a2","b1","b2","c1","c2","denom","uc","ua","ub","rect","bx1","by1","bx2","by2","normalAngle","fromArray","array","pos","newPos","tx1","d1","invert","subtract","multiply","divide","clampX","clamp","clampY","radToDeg","getMagnitude","getMagnitudeSq","setMagnitude","magnitude","normalize","isZero","m","dot","cross","rperp","normalRightHand","negative","multiplyAdd","s","interpolate","project","amt","projectUnit","centroid","pointslength","parse","xProp","yProp","Polygon","area","_points","closed","toNumberArray","flatten","inside","ix","iy","jx","jy","Number","MAX_VALUE","calculateArea","p1","p2","avgHeight","floorAll","ceilAll","inflate","containsRect","intersection","intersectsRaw","tolerance","union","randomX","randomY","getPoint","empty","inflatePoint","containsRaw","rx","ry","rw","rh","containsPoint","volume","sameDimensions","aabb","NEGATIVE_INFINITY","POSITIVE_INFINITY","RoundedRectangle","Camera","deadzone","roundPx","atLimit","totalInView","lerp","onShakeComplete","Signal","onFlashComplete","onFadeComplete","fx","_targetPosition","_edge","_position","intensity","duration","horizontal","vertical","shakeBounds","_fxDuration","_fxType","FOLLOW_LOCKON","FOLLOW_PLATFORMER","FOLLOW_TOPDOWN","FOLLOW_TOPDOWN_TIGHT","SHAKE_BOTH","SHAKE_HORIZONTAL","SHAKE_VERTICAL","ENABLE_FX","boot","Graphics","follow","lerpX","lerpY","helper","unfollow","focusOn","setPosition","focusOnXY","shake","force","direction","flash","beginFill","drawRect","endFill","fade","update","updateFX","updateShake","checkBounds","time","elapsedMS","dispatch","rnd","frac","updateTarget","math","linear","setBoundsToWorld","vx","vw","vy","vh","setSize","reset","resetFX","State","make","cache","input","load","sound","state","tweens","particles","physics","preload","loadUpdate","loadRender","preRender","paused","resumed","pauseUpdate","shutdown","StateManager","pendingState","states","_pendingState","_clearWorld","_clearCache","_created","_args","onStateChange","onInitCallback","onPreloadCallback","onCreateCallback","onUpdateCallback","onRenderCallback","onResizeCallback","onPreRenderCallback","onLoadUpdateCallback","onLoadRenderCallback","onPausedCallback","onResumedCallback","onPauseUpdateCallback","onShutDownCallback","onPause","pause","onResume","resume","autoStart","newState","isBooted","callbackContext","clearWorld","clearCache","checkState","restart","dummy","previousStateKey","clearCurrentState","setCurrentState","totalQueuedFiles","totalQueuedPacks","loadComplete","removeAll","debug","link","unlink","_kickstart","getCurrentState","elapsedTime","renderType","_bindings","_prevParams","memorize","_shouldPropagate","active","_boundDispatch","validateListener","listener","fnName","_registerListener","isOnce","listenerContext","priority","binding","prevIndex","_indexOfListener","SignalBinding","_addBinding","execute","_priority","cur","_listener","has","addOnce","_destroy","getNumListeners","halt","bindings","paramsArr","forget","dispose","_this","signal","_isOnce","_signal","callCount","params","handlerReturn","detach","isBound","getListener","getSignal","Filter","prevPoint","Date","mouse","date","getFullYear","getMonth","getDate","getHours","getMinutes","getSeconds","sampleRate","iChannel0","iChannel1","iChannel2","iChannel3","setResolution","pointer","toFixed","totalElapsedSeconds","addToWorld","anchorX","anchorY","Plugin","hasPreUpdate","hasUpdate","hasPostUpdate","hasRender","hasPostRender","postRender","PluginManager","plugins","_len","_i","plugin","postUpdate","Stage","disableVisibilityChange","currentRenderOrderID","_hiddenVar","_onChange","config","parseConfig","setBackgroundColor","DOM","getOffset","setUserSelect","setTouchAction","checkVisibility","webkitHidden","mozHidden","msHidden","hidden","event","visibilityChange","addEventListener","onblur","onfocus","onpagehide","onpageshow","device","cocoonJSApp","CocoonJS","App","onSuspended","onActivated","focusLoss","focusGain","gamePaused","gameResumed","Color","valueToColor","updateColor","removeEventListener","Group","addToStage","enableBody","physicsBodyType","Physics","ARCADE","physicsType","alive","ignoreDestroy","pendingDestroy","classType","cursor","inputEnableChildren","onChildInputDown","onChildInputUp","onChildInputOver","onChildInputOut","enableBodyDebug","physicsSortDirection","onDestroy","cursorIndex","fixedToCamera","cameraOffset","hash","_sortProperty","RETURN_NONE","RETURN_TOTAL","RETURN_CHILD","SORT_ASCENDING","SORT_DESCENDING","silent","body","removeFromHash","updateZ","addToHash","inputEnabled","events","onAddedToGroup$dispatch","addAt","addMultiple","moveAll","getAt","createMultiple","quantity","singleKey","singleFrame","align","rows","columns","cellWidth","cellHeight","alignIn","resetCursor","next","previous","swap","child1","bringToTop","getIndex","sendToBack","moveUp","moveDown","xy","getByName","oldChild","newChild","hasProperty","operation","checkProperty","checkAlive","checkVisible","setAll","setAllChildren","checkAll","addAll","property","subAll","multiplyAll","divideAll","callAllExists","callback","existsValue","callbackFromArray","callAll","method","methodLength","contextLength","renderOrderID","predicate","checkExists","ArraySet","forEachExists","iterate","forEachAlive","forEachDead","sort","order","ascendingSortHandler","descendingSortHandler","customSort","sortHandler","returnType","getFirstExists","createIfNull","resetChild","getFirstAlive","getFirstDead","loadTexture","getTop","getBottom","getClosestTo","object","tempDistance","getFurthestFrom","countLiving","countDead","getRandom","ArrayUtils","getRandomItem","destroyPhase","onRemovedFromGroup$dispatch","group","destroyTexture","removeBetween","destroyChildren","soft","World","_definedSize","stateChange","setBounds","useBounds","between","Game","physicsConfig","isRunning","raf","net","Device","lockRender","stepping","pendingStep","stepCount","onBlur","onFocus","_paused","_codePaused","currentUpdateID","updatesThisFrame","_deltaTime","_lastCount","_spiraling","fpsProblemNotifier","forceSingleUpdate","_nextFpsNotification","enableDebug","RandomDataGenerator","now","whenReady","seed","ScaleManager","setUpRenderer","GameObjectFactory","GameObjectCreator","Cache","Loader","Time","TweenManager","Input","SoundManager","Particles","Create","Net","Debug","showDebugHeader","RequestAnimationFrame","stopFocus","focus","hideBanner","v","webAudio","chrome","webGL","contextRestored","cocoonJS","smoothed","addToDOM","preventDefault","clearGLTextures","updateLogic","desiredFpsMult","updateRender","slowMotion","desiredFps","slowStep","elapsed","timeStep","enableStep","disableStep","step","removeFromDOM","muteOnPause","setMute","cordova","iOS","unsetMute","hitCanvas","hitContext","moveCallbacks","customCandidateHandler","customCandidateHandlerContext","pollRate","enabled","multiInputOverride","MOUSE_TOUCH_COMBINE","speed","circle","maxPointers","tapRate","doubleTapRate","holdRate","justPressedRate","justReleasedRate","recordPointerHistory","recordRate","recordLimit","pointer1","pointer2","pointer3","pointer4","pointer5","pointer6","pointer7","pointer8","pointer9","pointer10","pointers","activePointer","mousePointer","keyboard","touch","mspointer","gamepad","resetLocked","onDown","onUp","onTap","onHold","minPriorityID","interactiveItems","_localPoint","_pollCounter","_oldPosition","_x","_y","MOUSE_OVERRIDES_TOUCH","TOUCH_OVERRIDES_MOUSE","MAX_POINTERS","Pointer","PointerMode","CURSOR","addPointer","Mouse","Touch","MSPointer","Keyboard","Gamepad","_onClickTrampoline","onClickTrampoline","setInteractiveCandidateHandler","addMoveCallback","deleteMoveCallback","TOUCH","hard","resetSpeed","startPointer","countActivePointers","updatePointer","identifier","move","stopPointer","limit","getPointer","isActive","getPointerFromIdentifier","getPointerFromId","pointerId","getLocalPosition","hitTest","localPoint","worldVisible","TileSprite","graphicsData","shape","processClickTrampolines","mouseDownCallback","mouseUpCallback","mouseOutCallback","mouseOverCallback","mouseWheelCallback","capture","button","wheelDelta","locked","stopOnGameOut","pointerLock","_onMouseDown","_onMouseMove","_onMouseUp","_onMouseOut","_onMouseOver","_onMouseWheel","_wheelEvent","NO_BUTTON","LEFT_BUTTON","MIDDLE_BUTTON","RIGHT_BUTTON","BACK_BUTTON","FORWARD_BUTTON","WHEEL_UP","WHEEL_DOWN","android","onMouseDown","onMouseMove","onMouseUp","_onMouseUpGlobal","onMouseUpGlobal","_onMouseOutGlobal","onMouseOutGlobal","onMouseOut","onMouseOver","onMouseWheel","wheelEvent","mouseMoveCallback","withinGame","leftButton","rightButton","bindEvent","deltaY","requestPointerLock","element","mozRequestPointerLock","webkitRequestPointerLock","_pointerLockChange","pointerLockChange","pointerLockElement","mozPointerLockElement","webkitPointerLockElement","releasePointerLock","exitPointerLock","mozExitPointerLock","webkitExitPointerLock","_stubsGenerated","makeBinder","defineProperties","detail","deltaX","wheelDeltaX","deltaZ","pointerDownCallback","pointerMoveCallback","pointerUpCallback","_onMSPointerDown","_onMSPointerMove","_onMSPointerUp","_onMSPointerUpGlobal","_onMSPointerOut","_onMSPointerOver","onPointerDown","onPointerMove","onPointerUp","onPointerUpGlobal","onPointerOut","onPointerOver","pointerType","DeviceButton","buttonCode","isDown","isUp","timeDown","timeUp","repeats","altKey","shiftKey","ctrlKey","onFloat","padFloat","justPressed","justReleased","pointerMode","CONTACT","middleButton","backButton","forwardButton","eraserButton","ERASER_BUTTON","_holdSent","_history","_nextDrop","_stateReset","clientX","clientY","pageX","pageY","screenX","screenY","rawMovementX","rawMovementY","movementX","movementY","isMouse","previousTapTime","totalTouches","msSinceLastClick","targetObject","interactiveCandidates","positionDown","positionUp","_clickTrampolines","_trampolineTargetObject","resetButtons","processButtonsDown","buttons","processButtonsUp","updateButtons","down","toLowerCase","totalActivePointers","_touchedHandler","processInteractiveObjects","shift","fromClick","pollLocked","mozMovementX","webkitMovementX","mozMovementY","webkitMovementY","isDragged","highestRenderOrderID","highestInputPriorityID","candidateTarget","currentNode","first","checked","validForInput","checkPointerDown","checkPointerOver","priorityID","swapTarget","newTarget","_pointerOutHandler","_pointerOverHandler","leave","currentPointers","addClickTrampoline","callbackArgs","trampolines","trampoline","_releasedHandler","resetMovement","touchLockCallbacks","touchStartCallback","touchMoveCallback","touchEndCallback","touchEnterCallback","touchLeaveCallback","touchCancelCallback","_onTouchStart","_onTouchMove","_onTouchEnd","_onTouchEnter","_onTouchLeave","_onTouchCancel","onTouchStart","onTouchMove","onTouchEnd","onTouchEnter","onTouchLeave","onTouchCancel","consumeDocumentTouches","_documentTouchMove","addTouchLockCallback","onEnd","removeTouchLockCallback","cb","changedTouches","InputHandler","useHandCursor","_setHandCursor","allowHorizontalDrag","allowVerticalDrag","snapOffset","snapOnDrag","snapOnRelease","snapX","snapY","snapOffsetX","snapOffsetY","pixelPerfectOver","pixelPerfectClick","pixelPerfectAlpha","draggable","boundsRect","boundsSprite","scaleLayer","dragOffset","dragFromCenter","dragStopBlocksInputUp","dragStartPoint","dragDistanceThreshold","dragTimeThreshold","downPoint","snapPoint","_dragPoint","_dragPhase","_pendingDrag","_dragTimePass","_dragDistancePass","_wasEnabled","_tempPoint","_pointerData","camX","camY","isOver","isOut","timeOver","timeOut","downDuration","onAddedToGroup","addedToGroup","onRemovedFromGroup","removedFromGroup","flagged","highestID","highestRenderID","includePixelPerfect","isPixelPerfect","pointerX","pointerY","pointerDown","pointerUp","pointerTimeDown","pointerTimeUp","pointerOver","pointerOut","pointerTimeOver","pointerTimeOut","pointerDragged","fastTest","checkPixel","_dx","_dy","startDrag","_draggedPointerID","updateDrag","sendEvent","onInputOver$dispatch","onInputOut$dispatch","onInputDown$dispatch","dragTimeElapsed","onInputUp$dispatch","stopDrag","fromStart","globalToLocalX","py","globalToLocalY","checkBoundsRect","checkBoundsSprite","onDragUpdate","justOver","delay","overDuration","justOut","enableDrag","lockCenter","pixelPerfect","alphaThreshold","disableDrag","onDragStart$dispatch","grid","boundsFluid","scaleFluidInversed","onDragStop$dispatch","setDragLock","allowHorizontal","allowVertical","enableSnap","onDrag","onRelease","disableSnap","_gamepadIndexMap","_rawPads","_active","_gamepadSupportAvailable","webkitGetGamepads","webkitGamepads","userAgent","getGamepads","_prevRawGamepadTypes","_prevTimestamps","onConnectCallback","onDisconnectCallback","onDownCallback","onUpCallback","onAxisCallback","onFloatCallback","_ongamepadconnected","_gamepaddisconnected","_gamepads","SinglePad","addCallbacks","callbacks","onConnect","onDisconnect","onAxis","_onGamepadConnected","onGamepadConnected","_onGamepadDisconnected","onGamepadDisconnected","newPad","connect","removedPad","disconnect","_pollGamepads","pad1","pollStatus","pad2","pad3","pad4","rawGamepads","gamepadsChanged","_rawPad","singlePad","validConnections","rawIndices","padIndices","connected","k","rawPad","setDeadZones","deadZone","BUTTON_0","BUTTON_1","BUTTON_2","BUTTON_3","BUTTON_4","BUTTON_5","BUTTON_6","BUTTON_7","BUTTON_8","BUTTON_9","BUTTON_10","BUTTON_11","BUTTON_12","BUTTON_13","BUTTON_14","BUTTON_15","AXIS_0","AXIS_1","AXIS_2","AXIS_3","AXIS_4","AXIS_5","AXIS_6","AXIS_7","AXIS_8","AXIS_9","XBOX360_A","XBOX360_B","XBOX360_X","XBOX360_Y","XBOX360_LEFT_BUMPER","XBOX360_RIGHT_BUMPER","XBOX360_LEFT_TRIGGER","XBOX360_RIGHT_TRIGGER","XBOX360_BACK","XBOX360_START","XBOX360_STICK_LEFT_BUTTON","XBOX360_STICK_RIGHT_BUTTON","XBOX360_DPAD_LEFT","XBOX360_DPAD_RIGHT","XBOX360_DPAD_UP","XBOX360_DPAD_DOWN","XBOX360_STICK_LEFT_X","XBOX360_STICK_LEFT_Y","XBOX360_STICK_RIGHT_X","XBOX360_STICK_RIGHT_Y","PS3XC_X","PS3XC_CIRCLE","PS3XC_SQUARE","PS3XC_TRIANGLE","PS3XC_L1","PS3XC_R1","PS3XC_L2","PS3XC_R2","PS3XC_SELECT","PS3XC_START","PS3XC_STICK_LEFT_BUTTON","PS3XC_STICK_RIGHT_BUTTON","PS3XC_DPAD_UP","PS3XC_DPAD_DOWN","PS3XC_DPAD_LEFT","PS3XC_DPAD_RIGHT","PS3XC_STICK_LEFT_X","PS3XC_STICK_LEFT_Y","PS3XC_STICK_RIGHT_X","PS3XC_STICK_RIGHT_Y","padParent","_padParent","_prevTimestamp","_buttons","_buttonsLen","_axes","_axesLen","getButton","timestamp","rawButtonVal","isNaN","processButtonDown","processButtonUp","processButtonFloat","axes","processAxisChange","triggerCallback","disconnectingIndex","axis","axisCode","buttonValue","Key","keycode","_enabled","keyCode","onHoldCallback","onHoldContext","_justDown","_justUp","processKeyDown","processKeyUp","upDuration","pressEvent","onPressCallback","_keys","_capture","_onKeyDown","_onKeyPress","_onKeyUp","_k","onPress","addKey","addKeyCapture","addKeys","removeKey","removeKeyCapture","createCursorKeys","up","KeyCode","processKeyPress","clearCaptures","String","fromCharCode","charCode","A","charCodeAt","B","C","D","E","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z","ZERO","TWO","THREE","FOUR","FIVE","SIX","SEVEN","EIGHT","NINE","NUMPAD_0","NUMPAD_1","NUMPAD_2","NUMPAD_3","NUMPAD_4","NUMPAD_5","NUMPAD_6","NUMPAD_7","NUMPAD_8","NUMPAD_9","NUMPAD_MULTIPLY","NUMPAD_ADD","NUMPAD_ENTER","NUMPAD_SUBTRACT","NUMPAD_DECIMAL","NUMPAD_DIVIDE","F1","F2","F3","F4","F5","F6","F7","F8","F9","F10","F11","F12","F13","F14","F15","COLON","EQUALS","COMMA","UNDERSCORE","PERIOD","QUESTION_MARK","TILDE","OPEN_BRACKET","BACKWARD_SLASH","CLOSED_BRACKET","QUOTES","BACKSPACE","TAB","CLEAR","ENTER","SHIFT","CONTROL","ALT","CAPS_LOCK","ESC","SPACEBAR","PAGE_UP","PAGE_DOWN","END","HOME","PLUS","MINUS","INSERT","DELETE","HELP","NUM_LOCK","match","Component","Angle","wrapAngle","Animation","play","frameRate","loop","killOnComplete","animations","AutoCull","autoCull","inCamera","checkWorldBounds","Bounds","alignTo","BringToTop","Core","install","components","previousPosition","Events","PhysicsBody","AnimationManager","LoadTexture","FixedToCamera","previousRotation","fresh","_exists","P2JS","removeFromWorld","customRender","Crop","cropRect","_crop","updateCrop","resetFrame","Delta","Destroy","onDestroy$dispatch","removeFrom","Video","onChangeSource","resizeFrame","BitmapText","_glyphs","_parent","_onDestroy","_onAddedToGroup","_onRemovedFromGroup","_onRemovedFromWorld","_onKilled","_onRevived","_onEnterBounds","_onOutOfBounds","_onInputOver","_onInputOut","_onInputDown","_onInputUp","_onDragStart","_onDragUpdate","_onDragStop","_onAnimationStart","_onAnimationComplete","_onAnimationLoop","onRemovedFromWorld","onKilled","onRevived","onOutOfBounds","onEnterBounds","onInputOver","onInputOut","onInputDown","onInputUp","onDragStart","onDragStop","onAnimationStart","onAnimationComplete","onAnimationLoop","backing","_fixedToCamera","Health","health","maxHealth","damage","kill","setHealth","heal","InCamera","InputEnabled","InWorld","outOfCameraBoundsKill","_outOfBoundsFired","onEnterBounds$dispatch","onOutOfBounds$dispatch","outOfBoundsKill","inWorld","LifeSpan","lifespan","physicsElapsedMS","revive","onRevived$dispatch","onKilled$dispatch","stopAnimation","BitmapData","hasFrameData","loadFrameData","getFrameData","frameData","Tilemap","TilemapLayer","img","base","frameName","Overlap","overlap","_reset","Reset","ScaleMinMax","scaleMin","scaleMax","checkTransform","setScaleMinMax","Smoothed","existing","weapon","Weapon","createBullets","creature","mesh","Creature","tween","physicsGroup","audio","audioSprite","addSprite","tileSprite","rope","text","Text","overFrame","outFrame","downFrame","upFrame","Button","emitter","maxParticles","Arcade","Emitter","retroFont","font","characterWidth","characterHeight","chars","charsPerRow","xSpacing","ySpacing","xOffset","yOffset","RetroFont","bitmapText","tilemap","tileWidth","tileHeight","addToCache","uuid","addRenderTexture","video","url","bitmapData","addBitmapData","Tween","preUpdatePhysics","preUpdateLifeSpan","preUpdateInWorld","preUpdateCore","_onOverFrame","_onOutFrame","_onDownFrame","_onUpFrame","onOverSound","onOutSound","onDownSound","onUpSound","onOverSoundMarker","onOutSoundMarker","onDownSoundMarker","onUpSoundMarker","onOverMouseOnly","justReleasedPreventsOver","freezeFrames","forceOut","setFrames","onInputOverHandler","onInputOutHandler","onInputDownHandler","onInputUpHandler","removedFromWorld","STATE_OVER","STATE_OUT","STATE_DOWN","STATE_UP","clearFrames","setStateFrame","switchImmediately","frameKey","changeStateFrame","setStateSound","marker","soundKey","markerKey","Sound","AudioSprite","playStateSound","setSounds","overSound","overMarker","downSound","downMarker","outSound","outMarker","upSound","upMarker","setOverSound","setOutSound","setDownSound","setUpSound","changedUp","ctx","imageData","FrameData","textureFrame","addFrame","Frame","disableTextureUpload","cls","_image","_pos","_size","_scale","_rotate","_alpha","prev","_anchor","_tempR","_tempG","_tempB","_circle","_swapCanvas","moveH","moveV","draw","addImage","processPixelRGB","pixel","createColor","unpackPixel","getPixel32","setPixel32","processPixel","replaceRGB","r1","g1","r2","g2","region","packPixel","setHSL","bHaveH","bHaveS","bHaveL","HSLtoRGB","shiftHSL","red","green","blue","immediate","LITTLE_ENDIAN","setPixel","getPixel","getPixelRGB","hsl","hsv","getPixels","getFirstPixel","scan","newWidth","newHeight","op","copyTransform","copyRect","drawGroup","drawGroupProxy","drawFull","renderGraphics","shadow","blur","shadowColor","shadowBlur","shadowOffsetX","shadowOffsetY","alphaMask","sourceRect","maskRect","blendSourceAtop","blendReset","extract","destination","prevFont","fillText","arc","lineWidth","stroke","textureLine","blendSourceOver","blendSourceIn","blendSourceOut","blendDestinationOver","blendDestinationIn","blendDestinationOut","blendDestinationAtop","blendXor","blendAdd","blendMultiply","blendScreen","blendOverlay","blendDarken","blendLighten","blendColorDodge","blendColorBurn","blendHardLight","blendSoftLight","blendDifference","blendExclusion","blendHue","blendSaturation","blendColor","blendLuminosity","getSmoothingEnabled","setSmoothingEnabled","getTransform","translateX","translateY","skewX","skewY","fillAlpha","lineColor","currentPath","boundsPadding","_localBounds","webGLDirty","cachedSpriteDirty","lineStyle","lineAlpha","drawShape","quadraticCurveTo","cpX","cpY","toX","toY","xa","ya","fromX","fromY","bezierCurveTo","cpX2","cpY2","dt","dt2","dt3","t2","t3","arcTo","mm","dd","cc","tt","k1","k2","j1","j2","qx","qy","startAngle","endAngle","anticlockwise","segments","sweep","segs","startX","startY","filling","theta","theta2","cTheta","sTheta","segMinus","remainder","real","fillColor","drawRoundedRect","drawCircle","drawEllipse","drawPolygon","path","clearDirty","updateCachedSpriteTexture","_prevTint","updateLocalBounds","tempPoint","RECT","RREC","CIRC","ELIP","cachedSprite","destroyCachedSprite","GraphicsData","POLY","_lineTint","_fillTint","PolyK","Triangulate","sign","tgs","avl","al","i0","i1","i2","ax","ay","bx","by","earFound","_convex","vi","_PointInTriangle","v0x","v0y","v1x","v1y","v2x","v2y","dot00","dot01","dot02","dot11","dot12","invDenom","EarCut","holeIndices","dim","hasHoles","outerLen","outerNode","linkedList","triangles","eliminateHoles","earcutLinked","clockwise","sum","insertNode","filterPoints","again","steiner","removeNode","ear","pass","indexCurve","isEarHashed","isEar","cureLocalIntersections","splitEarcut","pointInTriangle","minTX","minTY","maxTX","maxTY","minZ","zOrder","maxZ","nextZ","prevZ","locallyInside","isValidDiagonal","splitPolygon","list","queue","getLeftmost","compareX","eliminateHole","hole","findHoleBridge","hx","hy","tan","tanMin","sortLinked","q","tail","numMerges","pSize","qSize","inSize","leftmost","intersectsPolygon","middleInside","q1","q2","Node","an","bp","stencilBufferLimit","lastIndex","graphicsDataPool","switchMode","canDrawUsingSimple","buildPoly","buildComplexPoly","buildLine","buildRectangle","buildCircle","buildRoundedRectangle","upload","WebGLGraphicsData","rectData","verts","vertPos","tempPoints","rrectData","recPoints","quadraticBezierCurve","vecPos","getPt","n1","n2","perc","diff","xb","yb","circleData","totalSegs","seg","firstPoint","midPointX","midPointY","unshift","p1x","p1y","p2x","p2y","p3x","p3y","perpx","perpy","perp2x","perp2y","perp3x","perp3y","pdist","indexCount","indexStart","glPoints","glIndicies","updateGraphicsTint","kappa","ox","oy","xe","ye","xm","ym","maxRadius","tintR","tintG","tintB","drawTriangle","cull","triangle","cameraToFace","ab","faceNormal","drawTriangles","point1","point2","point3","renderXY","renderRawXY","textBounds","strokeColors","fontStyles","fontWeights","autoRound","useAdvancedWrap","_res","_text","_fontComponents","_lineSpacing","_charCount","setStyle","updateText","setShadow","shadowStroke","shadowFill","backgroundColor","boundsAlignH","boundsAlignV","strokeThickness","wordWrap","wordWrapWidth","maxLines","tabs","fontToComponents","fontStyle","fontVariant","fontWeight","fontSize","componentsToFont","outputText","runWordWrap","lines","lineWidths","maxLineWidth","fontProperties","determineFontProperties","drawnLines","measureLine","measureText","tab","section","snapToCeil","lineHeight","lineSpacing","textBaseline","lineCap","lineJoin","linePositionX","linePositionY","ascent","updateLine","updateShadow","strokeText","renderTabLine","snap","lineLength","letter","clearColors","clearFontValues","addColor","addStrokeColor","addFontStyle","addFontWeight","weight","precalculateWordWrap","wrappedLines","advancedWordWrap","basicWordWrap","linesCount","currentLineWidth","words","word","wordWithSpace","wordWidth","newWord","secondPart","spaceLeft","wordWidthWithSpace","updateFont","family","exec","fontFamily","setText","parseList","setTextBounds","properties","fontPropertiesCache","fontPropertiesCanvas","fontPropertiesContext","baseline","descent","imagedata","parseFloat","textWidth","textHeight","_prevAnchor","_maxWidth","_data","getBitmapFont","_font","_fontSize","_align","_tint","sourceWidth","sourceHeight","scanLine","lastSpace","wrappedWidth","prevCharCode","maxWidth","test","charAt","charData","kerning","xAdvance","cleanText","re","purgeGlyphs","kept","checkImageKey","characterSpacingX","characterSpacingY","characterPerRow","multiLine","autoUpperCase","customSpacingX","customSpacingY","fixedWidth","fontSet","grabData","currentX","currentY","updateFrameData","stamp","ALIGN_LEFT","ALIGN_RIGHT","ALIGN_CENTER","TEXT_SET1","TEXT_SET2","TEXT_SET3","TEXT_SET4","TEXT_SET5","TEXT_SET6","TEXT_SET7","TEXT_SET8","TEXT_SET9","TEXT_SET10","TEXT_SET11","setFixedWidth","lineAlignment","content","characterSpacing","allowLowerCase","buildRetroFontText","getLongestLine","pasteLine","longestLine","removeUnsupportedCharacters","stripCR","newString","aChar","code","updateOffset","diffX","diffY","frames","getFrames","newText","toUpperCase","_hasUpdateAnimation","_updateAnimationCallback","updateAnimation","_updateAnimation","difference","_scroll","def","physicsElapsed","autoScroll","stopScroll","deviceReadyAt","initialized","desktop","iOSVersion","node","nodeWebkit","electron","ejecta","crosswalk","chromeOS","linux","macOS","windows","windowsPhone","canvasBitBltShift","file","fileSystem","localStorage","worker","css3D","typedArray","vibration","getUserMedia","quirksMode","arora","chromeVersion","epiphany","firefox","firefoxVersion","ie","ieVersion","trident","tridentVersion","edge","mobileSafari","midori","opera","safari","safariVersion","webApp","silk","audioData","ogg","opus","mp3","wav","m4a","webm","dolby","oggVideo","h264Video","mp4Video","webmVideo","vp9Video","hlsVideo","iPhone","iPhone4","iPad","pixelRatio","littleEndian","support32bit","fullscreen","requestFullscreen","cancelFullscreen","fullscreenKeyboard","onInitialized","nonPrimer","readyCheck","_readyCheck","_monitor","_queue","readyState","setTimeout","_initialize","_checkOS","vita","kindle","RegExp","$1","_checkFeatures","getItem","error","WebGLRenderingContext","compatMode","webkitGetUserMedia","mozGetUserMedia","msGetUserMedia","oGetUserMedia","URL","webkitURL","mozURL","msURL","_checkInput","documentElement","maxTouchPoints","msPointerEnabled","pointerEnabled","_checkFullScreenSupport","fs","cfs","Element","_checkBrowser","$3","process","require","versions","_checkVideo","videoElement","canPlayType","_checkAudio","audioElement","major","minor","$2","_checkDevice","Int8Array","_checkIsLittleEndian","Uint8ClampedArray","Int32Array","_checkIsUint8ClampedImageData","vibrate","webkitVibrate","mozVibrate","msVibrate","elem","createImageData","_checkCSS3D","has3d","el","transforms","webkitTransform","OTransform","msTransform","MozTransform","insertBefore","getComputedStyle","getPropertyValue","canPlayAudio","canPlayVideo","isConsoleOpen","profile","profileEnd","isAndroidStockBrowser","matches","skipPool","display","msTouchAction","overflowHidden","getElementById","overflow","appendChild","parentNode","vendor","prefix","setImageRenderingCrisp","types","msInterpolationMode","setImageRenderingBicubic","forceSetTimeOut","vendors","requestAnimationFrame","cancelAnimationFrame","_isSetTimeOut","_onLoop","_timeOutID","updateSetTimeout","updateRAF","rafTime","timeToCall","clearTimeout","isSetTimeOut","isRAF","PI2","fuzzyEqual","epsilon","fuzzyLessThan","fuzzyGreaterThan","fuzzyCeil","val","fuzzyFloor","average","shear","snapTo","gap","snapToFloor","roundTo","place","pow","floorTo","ceilTo","angleBetween","angleBetweenY","angleBetweenPoints","angleBetweenPointsY","reverseAngle","angleRad","normalizeAngle","maxAdd","minSub","wrapValue","isOdd","isEven","minProperty","maxProperty","radians","linearInterpolation","bezierInterpolation","bernstein","catmullRomInterpolation","catmullRom","p0","factorial","res","p3","roundAwayFromZero","sinCosGenerator","sinAmplitude","cosAmplitude","frequency","frq","cosTable","sinTable","distanceSq","distancePow","clampBottom","within","mapLinear","smoothstep","smootherstep","percent","degreeToRadiansFactor","radianToDegreesFactor","degrees","seeds","s0","sow","integer","integerInRange","realInRange","normal","pick","ary","weightedPick","QuadTree","maxObjects","maxLevels","objects","nodes","_empty","subWidth","subHeight","populate","populateHandler","insert","retrieve","returnObjects","getHostName","location","hostname","checkDomainName","domain","updateQueryString","redirect","href","separator","getQueryString","parameter","keyValues","search","substring","decodeURI","decodeURIComponent","frameBased","_tweens","_add","easeMap","Power0","Easing","Power1","Power2","Power3","Power4","Linear","None","Quad","Quadratic","Out","Cubic","Quart","Quartic","Quint","Quintic","Sine","Sinusoidal","Expo","Exponential","Circ","Circular","Elastic","Back","Bounce","Quad.easeIn","In","Cubic.easeIn","Quart.easeIn","Quint.easeIn","Sine.easeIn","Expo.easeIn","Circ.easeIn","Elastic.easeIn","Back.easeIn","Bounce.easeIn","Quad.easeOut","Cubic.easeOut","Quart.easeOut","Quint.easeOut","Sine.easeOut","Expo.easeOut","Circ.easeOut","Elastic.easeOut","Back.easeOut","Bounce.easeOut","Quad.easeInOut","InOut","Cubic.easeInOut","Quart.easeInOut","Quint.easeInOut","Sine.easeInOut","Expo.easeInOut","Circ.easeInOut","Elastic.easeInOut","Back.easeInOut","Bounce.easeInOut","_pauseAll","_resumeAll","getAll","pendingDelete","_manager","addTweens","numTweens","isTweening","some","_pause","_resume","pauseAll","resumeAll","manager","timeline","timeScale","repeatCounter","onStart","onLoop","onRepeat","onChildComplete","onComplete","chainedTween","isPaused","_onUpdateCallback","_onUpdateCallbackContext","_pausedTime","_hasStarted","ease","yoyo","Default","TweenData","vEnd","loadValues","updateTweenData","repeatDelay","yoyoDelay","easing","interpolation","repeatAll","chain","startTime","status","PENDING","RUNNING","LOOPED","COMPLETE","generateData","vStart","vStartCache","vEndCache","repeatTotal","inReverse","easingFunction","interpolationFunction","interpolationContext","isFrom","yoyoCounter","ms","fps","blob","reversed","asin","prevTime","_desiredFps","suggestedFps","advancedTiming","fpsMin","fpsMax","msMin","msMax","pauseDuration","timeExpected","Timer","_frameCount","_elapsedAccumulator","_started","_timeLastSecond","_pauseStarted","_justResumed","_timers","timer","autoDestroy","previousDateNow","updateAdvancedTiming","updateTimers","elapsedSince","since","elapsedSecondsSince","running","expired","nextTick","timeCap","_pauseTotal","_now","_marked","_diff","_newTick","MINUTE","SECOND","HALF","QUARTER","repeatCount","tick","TimerEvent","clearEvents","clearPendingEvents","adjustEvents","baseTime","currentFrame","currentAnim","updateIfVisible","isLoaded","_frameData","_anims","_outputFrames","anim","copyFrameData","useNumericIndex","getFrameIndexes","validateFrames","checkFrameName","isPlaying","getAnimation","refreshFrame","getFrame","getFrameByName","_frameIndex","_frames","loopCount","isFinished","_pauseStartTime","_frameDiff","_frameSkip","onUpdate","isReversed","_timeLastFrame","_timeNextFrame","updateCurrentFrame","onAnimationStart$dispatch","reverseOnce","useLocalFrameIndex","frameIndex","dispatchComplete","onAnimationComplete$dispatch","onAnimationLoop$dispatch","signalUpdate","fromPlay","generateFrameNames","suffix","zeroPad","rotated","rotationDirection","spriteSourceSizeW","spriteSourceSizeH","setTrim","actualWidth","actualHeight","destX","destY","destWidth","destHeight","getRect","_frameNames","getFrameRange","AnimationParser","spriteSheet","frameMax","margin","spacing","row","column","JSONData","json","newFrame","filename","sourceSize","spriteSourceSize","JSONDataPyxel","signature","tileheight","tilewidth","JSONDataHash","XMLData","xml","getElementsByTagName","frameX","frameY","autoResolveURL","_cache","binary","bitmapFont","_urlMap","_urlResolver","_urlTemp","onSoundUnlock","_cacheMap","TEXTURE","SOUND","PHYSICS","BINARY","BITMAPFONT","JSON","XML","SHADER","RENDER_TEXTURE","addDefaultImage","addMissingImage","addCanvas","removeImage","_resolveURL","addSound","audioTag","decoded","isDecoding","touchLocked","addText","addPhysicsData","addTilemap","mapData","addBinary","binaryData","addBitmapFont","atlasData","atlasType","LoaderParser","jsonBitmapFont","xmlBitmapFont","addJSON","addXML","addVideo","isBlob","addShader","addSpriteSheet","addTextureAtlas","TEXTURE_ATLAS_XML_STARLING","TEXTURE_ATLAS_JSON_PYXEL","reloadSound","getSound","reloadSoundComplete","updateSound","decodedSound","isSoundDecoded","isSoundReady","checkKey","checkURL","checkCanvasKey","checkTextureKey","checkSoundKey","checkTextKey","checkPhysicsKey","checkTilemapKey","checkBinaryKey","checkBitmapDataKey","checkBitmapFontKey","checkJSONKey","checkXMLKey","checkVideoKey","checkShaderKey","checkRenderTextureKey","full","getTextureFrame","getSoundData","getText","getPhysicsData","fixtureKey","fixtures","fixture","getTilemapData","getBinary","getBitmapData","getJSON","getXML","getVideo","getShader","getRenderTexture","getBaseTexture","getFrameCount","getFrameByIndex","getPixiTexture","getPixiBaseTexture","getURL","getKeys","removeCanvas","removeFromPixi","removeSound","removeText","removePhysics","removeTilemap","removeBinary","removeBitmapData","removeBitmapFont","removeJSON","removeXML","removeVideo","removeShader","removeRenderTexture","removeSpriteSheet","removeTextureAtlas","atlas","baseURL","isLoading","preloadSprite","onLoadStart","onLoadComplete","onPackComplete","onFileStart","onFileComplete","onFileError","useXDomainRequest","_warnedAboutXDomainRequest","enableParallel","maxParallelDownloads","_withSyncPointDepth","_fileList","_flightQueue","_processingHead","_fileLoadStarted","_totalPackCount","_totalFileCount","_loadedPackCount","_loadedFileCount","TEXTURE_ATLAS_JSON_ARRAY","TEXTURE_ATLAS_JSON_HASH","PHYSICS_LIME_CORONA_JSON","PHYSICS_PHASER_JSON","setPreloadSprite","checkKeyExists","getAssetIndex","bestFound","loaded","loading","getAsset","fileIndex","addToFileList","overwrite","extension","syncPoint","currentFile","replaceInFileList","pack","images","urls","script","spritesheet","autoDecode","noAudio","jsonURL","jsonData","audiosprite","loadEvent","asBlob","CSV","TILED_JSON","LIME_CORONA_JSON","textureURL","atlasURL","parseXml","atlasJSONArray","atlasJSONHash","atlasXML","withSyncPoint","addSyncPoint","asset","removeFile","updateProgress","processLoadQueue","finishedLoading","requestUrl","requestObject","progress","syncblock","inflightLimit","processPack","loadFile","abnormal","asyncComplete","errorMessage","packData","transformUrl","xhrLoad","fileComplete","loadImageTag","getAudioURL","usingWebAudio","usingAudioTag","loadAudioTag","fileError","getVideoURL","loadVideoTag","jsonLoadComplete","xmlLoadComplete","csvLoadComplete","onload","onerror","controls","autoplay","videoLoadEvent","canplay","Audio","playThroughEvent","XDomainRequest","xhrLoadWithXDR","xhr","XMLHttpRequest","open","responseType","message","send","timeout","ontimeout","onprogress","videoType","uri","lastIndexOf","audioType","reason","loadNext","responseText","response","decode","language","defer","head","contentType","domparser","DOMParser","parseFromString","ActiveXObject","async","loadXML","totalLoadedFiles","totalLoadedPacks","progressFloat","info","common","getAttribute","letters","kernings","second","finalizeBitmapFont","_face","_lineHeight","_id","_xoffset","_yoffset","_xadvance","_second","_first","_amount","bitmapFontData","autoplayKey","sounds","spritemap","addMarker","connectToMaster","markers","totalDuration","currentTime","durationMS","stopTime","pausedPosition","pausedTime","currentMarker","fadeTween","pendingPlayback","override","allowMultiple","externalNode","masterGainNode","gainNode","_sound","masterGain","createGain","createGainNode","gain","soundHasUnlocked","onDecoded","onPlay","onStop","onMute","onMarkerComplete","_volume","_buffer","_muted","_tempMarker","_tempPosition","_tempVolume","_tempPause","_muteVolume","_tempLoop","_onDecodedEventDispatched","removeMarker","onEndedHandler","onended","isDecoded","loopFull","forceRestart","noteOff","createBufferSource","noteGrainOn","muted","mute","prevMarker","fadeIn","fadeTo","fadeOut","fadeComplete","updateGlobalVolume","globalVolume","onSoundDecode","onVolumeChange","onUnMute","channels","_codeMuted","_unlockSource","_sounds","_watchList","_watching","_watchCallback","_watchContext","disableAudio","disableWebAudio","audioContext","fakeiOSTouchLock","setTouchLock","unlock","noteOn","stopAll","soundData","decodeAudioData","setDecodedCallback","files","playbackState","PLAYING_STATE","FINISHED_STATE","removeByKey","close","dom","minWidth","minHeight","maxHeight","forceLandscape","forcePortrait","incorrectOrientation","_pageAlignHorizontally","_pageAlignVertically","onOrientationChange","enterIncorrectOrientation","leaveIncorrectOrientation","fullScreenTarget","_createdFullScreenTarget","onFullScreenInit","onFullScreenChange","onFullScreenError","screenOrientation","getScreenOrientation","scaleFactorInversed","aspectRatio","sourceAspectRatio","windowConstraints","compatibility","supportsFullScreen","orientationFallback","noMargins","scrollTo","forceMinimumDocumentHeight","canExpandParent","clickTrampoline","_scaleMode","NO_SCALE","_fullScreenScaleMode","parentIsWindow","parentScaleFactor","trackParentInterval","onSizeChange","onResize","onResizeContext","_pendingScaleMode","_fullScreenRestore","_gameSize","_userScaleFactor","_userScaleTrim","_lastUpdate","_updateThrottle","_updateThrottleReset","_parentBounds","_tempBounds","_lastReportedCanvasSize","_lastReportedGameSize","_booted","setupScale","EXACT_FIT","SHOW_ALL","RESIZE","USER_SCALE","compat","_orientationChange","orientationChange","_windowResize","windowResize","_fullScreenChange","fullScreenChange","_fullScreenError","fullScreenError","_gameResumed","setGameSize","FlexGrid","fullScreenScaleMode","getParentBounds","visualBounds","updateDimensions","queueUpdate","currentScaleMode","setUserScale","hScale","vScale","hTrim","vTrim","setResizeCallback","signalSizeChange","setMinMax","prevThrottle","prevWidth","prevHeight","boundsChanged","orientationChanged","updateOrientationState","updateLayout","throttle","updateScalingAndBounds","forceOrientation","classifyOrientation","orientation","previousOrientation","previouslyIncorrect","isLandscape","isPortrait","changed","correctnessChanged","scrollTop","reflowGame","setMaximum","setExactFit","isFullScreen","boundingParent","setShowAll","resetCanvas","reflowCanvas","layoutBounds","clientRect","getBoundingClientRect","parentRect","offsetParent","wc","windowBounds","alignCanvas","parentBounds","canvasBounds","currentEdge","targetEdge","marginLeft","marginRight","marginTop","marginBottom","pageAlignHorizontally","pageAlignVertically","cssWidth","cssHeight","expanding","multiplier","createFullScreenTarget","fsTarget","background","startFullScreen","allowTrampoline","cleanupCreatedTarget","initData","targetElement","ALLOW_KEYBOARD_INPUT","stopFullScreen","prepScreenMode","enteringFullscreen","createdTarget","scaleSprite","letterBox","scaleX1","scaleY1","scaleX2","scaleY2","scaleOnWidth","bmd","columnWidth","renderShadow","currentAlpha","scaleManager","currentColor","soundInfo","cameraInfo","hideIfUp","downColor","upColor","worldX","worldY","spriteInputInfo","justDown","justUp","inputInfo","spriteBounds","filled","rectangle","ropeSegments","self","segment","spriteInfo","spriteCoords","lineInfo","geom","forceType","quadTree","quadtree","Body","NINJA","Ninja","BOX2D","Box2D","renderBody","bodyInfo","renderBodyInfo","box2d","box2dWorld","renderDebugDraw","box2dBody","displayList","box","scrollY","scrollLeft","scrollX","clientTop","clientLeft","cushion","calibrate","coords","getAspectRatio","inLayoutViewport","primaryFallback","screen","mozOrientation","msOrientation","matchMedia","documentBounds","pageXOffset","pageYOffset","treatAsDesktop","clientWidth","clientHeight","offsetWidth","scrollWidth","offsetHeight","scrollHeight","getByKey","randomIndex","removeRandomItem","shuffle","transposeMatrix","sourceRowCount","sourceColCount","rotateMatrix","findClosest","arr","NaN","low","high","numberArray","numberArrayStep","LinkedList","entity","palettes",1,2,3,4,5,6,7,8,9,"PALETTE_ARNE","PALETTE_JMP","PALETTE_CGA","PALETTE_C64","PALETTE_JAPANESE_MACHINE","pixelWidth","pixelHeight","palette","boundsCustom","boundsFull","boundsNone","positionCustom","positionFluid","positionFull","positionNone","scaleCustom","scaleFluid","scaleFull","scaleNone","customWidth","customHeight","customOffsetX","customOffsetY","ratioH","ratioV","layers","createCustomLayer","layer","FlexLayer","createFluidLayer","createFullLayer","createFixedLayer","persist","fitSprite","topLeft","topMiddle","topRight","bottomLeft","bottomMiddle","bottomRight","RGBtoHSL","RGBtoHSV","fromRGBA","toRGBA","hueToColor","HSVtoRGB","color32","getColor","getColor32","RGBtoString","componentToHex","hexToRGB","hexToColor","webToColor","web","tempColor","getRGB","HSVColorWheel","HSLColorWheel","interpolateColor","color1","color2","steps","currentStep","src1","src2","interpolateColorWithRGB","or","og","ob","interpolateRGB","getRandomColor","getWebRGB","getAlpha","getAlphaFloat","getRed","getGreen","getBlue","blendNormal","blendAverage","blendSubtract","blendNegation","blendLinearDodge","blendLinearBurn","blendLinearLight","blendVividLight","blendPinLight","blendHardMix","blendReflect","blendGlow","blendPhoenix","arcade","ninja","chipmunk","matter","CHIPMUNK","MATTERJS","P2","Matter","startSystem","system","enableAABB","emitters","ID","onAccess","onError","onTimeout","videoStream","isStreaming","retryLimit","retry","retryInterval","_retryID","_pending","_autoplay","_endCallback","_playCallback","_video","createVideoFromBlob","videoWidth","videoHeight","createVideoFromURL","snapshot","connectToMediaStream","stream","startMediaStream","captureAudio","removeVideoElement","setAttribute","getUserMediaTimeout","getUserMediaSuccess","getUserMediaError","mozSrcObject","createObjectURL","onloadeddata","checkStream","checkVideoProgress","change","playbackRate","setPause","setResume","playHandler","getTracks","track","playing","ended","changeSource","grab","hasChildNodes","firstChild","removeAttribute"],"mappings":";;CAiCA,WAEI,GAAIA,GAAOC,KAoBXC,EAAOA,KA23RP,OAp3RJA,GAAKC,KAAO,KAOZD,EAAKE,eAAiB,EAOtBF,EAAKG,gBAAkB,EAOvBH,EAAKI,QAAU,SAGfJ,EAAKK,KAAO,EAEgB,mBAAlB,eAENL,EAAKM,aAAeA,aACpBN,EAAKO,YAAcA,YAOnBP,EAAKQ,YAAcA,YACnBR,EAAKS,YAAcA,cAInBT,EAAKM,aAAeI,MACpBV,EAAKO,YAAcG,OAOvBV,EAAKW,KAAiB,EAAVC,KAAKC,GAMjBb,EAAKc,WAAa,IAAMF,KAAKC,GAM7Bb,EAAKe,WAAaH,KAAKC,GAAK,IAO5Bb,EAAKgB,cAAgB,MAqCrBhB,EAAKiB,cAAgB,WAQjBlB,KAAKmB,SAAW,GAAIlB,GAAKmB,MAAM,EAAG,GAQlCpB,KAAKqB,MAAQ,GAAIpB,GAAKmB,MAAM,EAAG,GAQ/BpB,KAAKsB,MAAQ,GAAIrB,GAAKmB,MAAM,EAAG,GAQ/BpB,KAAKuB,SAAW,EAQhBvB,KAAKwB,MAAQ,EAQbxB,KAAKyB,SAAU,EASfzB,KAAK0B,QAAU,KAQf1B,KAAK2B,YAAa,EASlB3B,KAAK4B,OAAS,KASd5B,KAAK6B,MAAQ,KASb7B,KAAK8B,WAAa,EAUlB9B,KAAK+B,eAAiB,GAAI9B,GAAK+B,OAU/BhC,KAAKiC,cAAgB,GAAIhC,GAAKmB,MAAM,EAAG,GAUvCpB,KAAKkC,WAAa,GAAIjC,GAAKmB,MAAM,EAAG,GAUpCpB,KAAKmC,cAAgB,EASrBnC,KAAKoC,IAAM,EASXpC,KAAKqC,IAAM,EASXrC,KAAKsC,WAAa,KASlBtC,KAAKuC,QAAU,GAAItC,GAAKuC,UAAU,EAAG,EAAG,EAAG,GAS3CxC,KAAKyC,eAAiB,KAStBzC,KAAK0C,MAAQ,KASb1C,KAAK2C,gBAAiB,EAStB3C,KAAK4C,eAAgB,GAKzB3C,EAAKiB,cAAc2B,UAAUC,YAAc7C,EAAKiB,cAQhDjB,EAAKiB,cAAc2B,UAAUE,QAAU,WAEnC,GAAI/C,KAAKgD,SACT,CAGI,IAFA,GAAIC,GAAIjD,KAAKgD,SAASE,OAEfD,KAEHjD,KAAKgD,SAASC,GAAGF,SAGrB/C,MAAKgD,YAGThD,KAAK0B,QAAU,KACf1B,KAAK4B,OAAS,KACd5B,KAAK6B,MAAQ,KACb7B,KAAK+B,eAAiB,KACtB/B,KAAKsC,WAAa,KAClBtC,KAAKuC,QAAU,KACfvC,KAAKyC,eAAiB,KACtBzC,KAAK0C,MAAQ,KAGb1C,KAAK2B,YAAa,EAElB3B,KAAKmD,wBASTC,OAAOC,eAAepD,EAAKiB,cAAc2B,UAAW,gBAEhDS,IAAK,WAED,GAAIC,GAAOvD,IAEX,GACA,CACI,IAAKuD,EAAK9B,QAAS,OAAO,CAC1B8B,GAAOA,EAAK3B,aAEV2B,EAEN,QAAO,KAafH,OAAOC,eAAepD,EAAKiB,cAAc2B,UAAW,QAEhDS,IAAK,WACD,MAAOtD,MAAK0C,OAGhBc,IAAK,SAASC,GAENzD,KAAK0C,QAAO1C,KAAK0C,MAAMgB,QAAS,GAEpC1D,KAAK0C,MAAQe,EAETzD,KAAK0C,QAAO1C,KAAK0C,MAAMgB,QAAS,MAiB5CN,OAAOC,eAAepD,EAAKiB,cAAc2B,UAAW,WAEhDS,IAAK,WACD,MAAOtD,MAAK2D,UAGhBH,IAAK,SAASC,GAEV,GAAIA,EACJ,CAII,IAAK,GAFDG,MAEKX,EAAI,EAAGA,EAAIQ,EAAMP,OAAQD,IAI9B,IAAK,GAFDY,GAAeJ,EAAMR,GAAGW,OAEnBE,EAAI,EAAGA,EAAID,EAAaX,OAAQY,IAErCF,EAAOG,KAAKF,EAAaC,GAKjC9D,MAAKgE,cAAiBC,OAAQjE,KAAM6D,aAAcD,GAGtD5D,KAAK2D,SAAWF,EAEZzD,KAAKkE,WAAalE,KAAKkE,YAAcjE,EAAKkE,WAAWC,WAErDpE,KAAKkE,UAAYjE,EAAKkE,WAAWE,WAY7CjB,OAAOC,eAAepD,EAAKiB,cAAc2B,UAAW,iBAEhDS,IAAK,WACD,MAAQtD,MAAK2C,gBAGjBa,IAAK,SAASC,GAENzD,KAAK2C,iBAAmBc,IAKxBA,EAEAzD,KAAKsE,wBAILtE,KAAKmD,uBAGTnD,KAAK2C,eAAiBc,MAiB9BxD,EAAKiB,cAAc2B,UAAU0B,gBAAkB,SAAS3C,GAEpD,GAAKA,GAAW5B,KAAK4B,QAAW5B,KAAKE,KAArC,CAKA,GAAIsE,GAAIxE,KAAK4B,MAETA,GAEA4C,EAAI5C,EAEE5B,KAAK4B,SAEX4C,EAAIxE,KAAKE,KAAKuE,MAIlB,IAIIC,GAAGC,EAAGC,EAAGC,EAAGC,EAAIC,EAJhBC,EAAKR,EAAEzC,eACPkD,EAAKjF,KAAK+B,cAMV/B,MAAKuB,SAAWtB,EAAKW,MAGjBZ,KAAKuB,WAAavB,KAAKkF,gBAEvBlF,KAAKkF,cAAgBlF,KAAKuB,SAC1BvB,KAAKoC,IAAMvB,KAAKsE,IAAInF,KAAKuB,UACzBvB,KAAKqC,IAAMxB,KAAKuE,IAAIpF,KAAKuB,WAI7BmD,EAAM1E,KAAKqC,IAAMrC,KAAKqB,MAAMgE,EAC5BV,EAAM3E,KAAKoC,IAAMpC,KAAKqB,MAAMgE,EAC5BT,GAAM5E,KAAKoC,IAAMpC,KAAKqB,MAAMiE,EAC5BT,EAAM7E,KAAKqC,IAAMrC,KAAKqB,MAAMiE,EAC5BR,EAAM9E,KAAKmB,SAASkE,EACpBN,EAAM/E,KAAKmB,SAASmE,GAGhBtF,KAAKsB,MAAM+D,GAAKrF,KAAKsB,MAAMgE,KAE3BR,GAAM9E,KAAKsB,MAAM+D,EAAIX,EAAI1E,KAAKsB,MAAMgE,EAAIV,EACxCG,GAAM/E,KAAKsB,MAAM+D,EAAIV,EAAI3E,KAAKsB,MAAMgE,EAAIT,GAI5CI,EAAGP,EAAKA,EAAKM,EAAGN,EAAIC,EAAKK,EAAGJ,EAC5BK,EAAGN,EAAKD,EAAKM,EAAGL,EAAIA,EAAKK,EAAGH,EAC5BI,EAAGL,EAAKA,EAAKI,EAAGN,EAAIG,EAAKG,EAAGJ,EAC5BK,EAAGJ,EAAKD,EAAKI,EAAGL,EAAIE,EAAKG,EAAGH,EAC5BI,EAAGH,GAAKA,EAAKE,EAAGN,EAAIK,EAAKC,EAAGJ,EAAII,EAAGF,GACnCG,EAAGF,GAAKD,EAAKE,EAAGL,EAAII,EAAKC,EAAGH,EAAIG,EAAGD,KAKnCL,EAAK1E,KAAKqB,MAAMgE,EAChBR,EAAK7E,KAAKqB,MAAMiE,EAEhBR,EAAK9E,KAAKmB,SAASkE,EAAIrF,KAAKsB,MAAM+D,EAAIX,EACtCK,EAAK/E,KAAKmB,SAASmE,EAAItF,KAAKsB,MAAMgE,EAAIT,EAEtCI,EAAGP,EAAKA,EAAKM,EAAGN,EAChBO,EAAGN,EAAKD,EAAKM,EAAGL,EAChBM,EAAGL,EAAKC,EAAKG,EAAGJ,EAChBK,EAAGJ,EAAKA,EAAKG,EAAGH,EAChBI,EAAGH,GAAKA,EAAKE,EAAGN,EAAIK,EAAKC,EAAGJ,EAAII,EAAGF,GACnCG,EAAGF,GAAKD,EAAKE,EAAGL,EAAII,EAAKC,EAAGH,EAAIG,EAAGD,IAIvC/E,KAAK8B,WAAa9B,KAAKwB,MAAQgD,EAAE1C,WACjC9B,KAAKiC,cAAcuB,IAAIyB,EAAGH,GAAIG,EAAGF,IACjC/E,KAAKkC,WAAWsB,IAAIxD,KAAKqB,MAAMgE,EAAIxE,KAAK0E,KAAKN,EAAGP,EAAIO,EAAGP,EAAIO,EAAGL,EAAIK,EAAGL,GAAI5E,KAAKqB,MAAMiE,EAAIzE,KAAK0E,KAAKN,EAAGN,EAAIM,EAAGN,EAAIM,EAAGJ,EAAII,EAAGJ,IAC1H7E,KAAKmC,cAAgBtB,KAAK2E,OAAOP,EAAGL,EAAGK,EAAGJ,GAG1C7E,KAAKyC,eAAiB,KAGlBzC,KAAKyF,mBAELzF,KAAKyF,kBAAkBC,KAAK1F,KAAK2F,yBAA0BV,EAAID,KAMvE/E,EAAKiB,cAAc2B,UAAU+C,6BAA+B3F,EAAKiB,cAAc2B,UAAU0B,gBASzFtE,EAAKiB,cAAc2B,UAAUgD,UAAY,SAASC,GAG9C,MADAA,GAASA,EACF7F,EAAK8F,gBAShB9F,EAAKiB,cAAc2B,UAAUmD,eAAiB,WAE1C,MAAOhG,MAAK6F,UAAU5F,EAAKgG,iBAS/BhG,EAAKiB,cAAc2B,UAAUqD,kBAAoB,SAASrE,GAEtD7B,KAAK6B,MAAQA,GAQjB5B,EAAKiB,cAAc2B,UAAUsD,UAAY,aAczClG,EAAKiB,cAAc2B,UAAUuD,gBAAkB,SAASC,EAAYC,EAAWC,GAE3E,GAAIC,GAASxG,KAAKgG,iBAEdS,EAAgB,GAAIxG,GAAKyG,cAA6B,EAAfF,EAAOG,MAA2B,EAAhBH,EAAOI,OAAYL,EAAUD,EAAWD,EAOrG,OALApG,GAAKiB,cAAc2F,YAAY/B,IAAM0B,EAAOnB,EAC5CpF,EAAKiB,cAAc2F,YAAY9B,IAAMyB,EAAOlB,EAE5CmB,EAAcK,OAAO9G,KAAMC,EAAKiB,cAAc2F,aAEvCJ,GAQXxG,EAAKiB,cAAc2B,UAAUkE,YAAc,WAEvC/G,KAAKsE,yBAUTrE,EAAKiB,cAAc2B,UAAUmE,SAAW,SAAS7F,GAI7C,MADAnB,MAAK4F,+BACE5F,KAAK+B,eAAekF,MAAM9F,IAWrClB,EAAKiB,cAAc2B,UAAUqE,QAAU,SAAS/F,EAAUgG,GAUtD,MARIA,KAEAhG,EAAWgG,EAAKH,SAAS7F,IAI7BnB,KAAK4F,+BAEE5F,KAAK+B,eAAeqF,aAAajG,IAU5ClB,EAAKiB,cAAc2B,UAAUwE,oBAAsB,SAASC,GAExDtH,KAAKuH,cAAczF,WAAa9B,KAAK8B,WAEjCwF,EAAcE,GAEdvH,EAAKwH,OAAO5E,UAAU6E,aAAahC,KAAK1F,KAAKuH,cAAeD,GAI5DrH,EAAKwH,OAAO5E,UAAU8E,cAAcjC,KAAK1F,KAAKuH,cAAeD,IAUrErH,EAAKiB,cAAc2B,UAAUyB,sBAAwB,WAEjDtE,KAAK2C,gBAAiB,CAEtB,IAAI6D,GAASxG,KAAKgG,gBAQlB,IALAQ,EAAOG,MAAQ9F,KAAK+G,IAAI,EAAG/G,KAAKgH,KAAKrB,EAAOG,QAC5CH,EAAOI,OAAS/F,KAAK+G,IAAI,EAAG/G,KAAKgH,KAAKrB,EAAOI,SAE7C5G,KAAKuE,kBAEAvE,KAAKuH,cAQNvH,KAAKuH,cAAcO,QAAQC,OAAOvB,EAAOG,MAAOH,EAAOI,YAP3D,CACI,GAAIH,GAAgB,GAAIxG,GAAKyG,cAAcF,EAAOG,MAAOH,EAAOI,OAChE5G,MAAKuH,cAAgB,GAAItH,GAAKwH,OAAOhB,GACrCzG,KAAKuH,cAAcxF,eAAiB/B,KAAK+B,eAQ7C,GAAIiG,GAAchI,KAAK2D,QACvB3D,MAAK2D,SAAW,KAChB3D,KAAKuH,cAAcU,QAAUD,EAG7B/H,EAAKiB,cAAc2F,YAAY/B,IAAM0B,EAAOnB,EAC5CpF,EAAKiB,cAAc2F,YAAY9B,IAAMyB,EAAOlB,EAE5CtF,KAAKuH,cAAcO,QAAQhB,OAAO9G,KAAMC,EAAKiB,cAAc2F,aAAa,GACxE7G,KAAKuH,cAAcW,OAAO7C,IAAMmB,EAAOnB,EAAImB,EAAOG,OAClD3G,KAAKuH,cAAcW,OAAO5C,IAAMkB,EAAOlB,EAAIkB,EAAOI,QAElD5G,KAAK2D,SAAWqE,EAEhBhI,KAAK2C,gBAAiB,GAS1B1C,EAAKiB,cAAc2B,UAAUM,qBAAuB,WAE3CnD,KAAKuH,gBAEVvH,KAAKuH,cAAcO,QAAQ/E,SAAQ,GAGnC/C,KAAKuH,cAAgB,OAUzBtH,EAAKiB,cAAc2B,UAAU6E,aAAe,SAASJ,GAIjDA,EAAgBA,GAUpBrH,EAAKiB,cAAc2B,UAAU8E,cAAgB,SAASL,GAIlDA,EAAgBA,GASpBlE,OAAOC,eAAepD,EAAKiB,cAAc2B,UAAW,KAEhDS,IAAK,WACD,MAAQtD,MAAKmB,SAASkE,GAG1B7B,IAAK,SAASC,GACVzD,KAAKmB,SAASkE,EAAI5B,KAW1BL,OAAOC,eAAepD,EAAKiB,cAAc2B,UAAW,KAEhDS,IAAK,WACD,MAAQtD,MAAKmB,SAASmE,GAG1B9B,IAAK,SAASC,GACVzD,KAAKmB,SAASmE,EAAI7B,KAiB1BxD,EAAKkI,uBAAyB,WAE1BlI,EAAKiB,cAAcwE,KAAK1F,MASxBA,KAAKgD,YAWLhD,KAAKoI,kBAAmB,GAK5BnI,EAAKkI,uBAAuBtF,UAAYO,OAAOiF,OAAQpI,EAAKiB,cAAc2B,WAC1E5C,EAAKkI,uBAAuBtF,UAAUC,YAAc7C,EAAKkI,uBAQzD/E,OAAOC,eAAepD,EAAKkI,uBAAuBtF,UAAW,SAEzDS,IAAK,WACD,MAAOtD,MAAKqB,MAAMgE,EAAIrF,KAAKgG,iBAAiBW,OAGhDnD,IAAK,SAASC,GAEV,GAAIkD,GAAQ3G,KAAKgG,iBAAiBW,KAEpB,KAAVA,EAEA3G,KAAKqB,MAAMgE,EAAI5B,EAAQkD,EAIvB3G,KAAKqB,MAAMgE,EAAI,EAGnBrF,KAAKsI,OAAS7E,KAUtBL,OAAOC,eAAepD,EAAKkI,uBAAuBtF,UAAW,UAEzDS,IAAK,WACD,MAAQtD,MAAKqB,MAAMiE,EAAItF,KAAKgG,iBAAiBY,QAGjDpD,IAAK,SAASC,GAEV,GAAImD,GAAS5G,KAAKgG,iBAAiBY,MAEpB,KAAXA,EAEA5G,KAAKqB,MAAMiE,EAAI7B,EAAQmD,EAIvB5G,KAAKqB,MAAMiE,EAAI,EAGnBtF,KAAKuI,QAAU9E,KAYvBxD,EAAKkI,uBAAuBtF,UAAU2F,SAAW,SAASC,GAEtD,MAAOzI,MAAK0I,WAAWD,EAAOzI,KAAKgD,SAASE,SAWhDjD,EAAKkI,uBAAuBtF,UAAU6F,WAAa,SAASD,EAAOE,GAE/D,GAAGA,GAAS,GAAKA,GAAS3I,KAAKgD,SAASE,OAapC,MAXGuF,GAAM7G,QAEL6G,EAAM7G,OAAOgH,YAAYH,GAG7BA,EAAM7G,OAAS5B,KAEfA,KAAKgD,SAAS6F,OAAOF,EAAO,EAAGF,GAE5BzI,KAAK6B,OAAM4G,EAAMvC,kBAAkBlG,KAAK6B,OAEpC4G,CAIP,MAAM,IAAIK,OAAML,EAAQ,yBAA0BE,EAAO,8BAAgC3I,KAAKgD,SAASE,SAW/GjD,EAAKkI,uBAAuBtF,UAAUkG,aAAe,SAASN,EAAOO,GAEjE,GAAGP,IAAUO,EAAb,CAIA,GAAIC,GAASjJ,KAAKkJ,cAAcT,GAC5BU,EAASnJ,KAAKkJ,cAAcF,EAEhC,IAAY,EAATC,GAAuB,EAATE,EACb,KAAM,IAAIL,OAAM,gFAGpB9I,MAAKgD,SAASiG,GAAUD,EACxBhJ,KAAKgD,SAASmG,GAAUV,IAW5BxI,EAAKkI,uBAAuBtF,UAAUqG,cAAgB,SAAST,GAE3D,GAAIE,GAAQ3I,KAAKgD,SAASoG,QAAQX,EAClC,IAAc,KAAVE,EAEA,KAAM,IAAIG,OAAM,2DAEpB,OAAOH,IAUX1I,EAAKkI,uBAAuBtF,UAAUwG,cAAgB,SAASZ,EAAOE,GAElE,GAAY,EAARA,GAAaA,GAAS3I,KAAKgD,SAASE,OAEpC,KAAM,IAAI4F,OAAM,sCAEpB,IAAIQ,GAAetJ,KAAKkJ,cAAcT,EACtCzI,MAAKgD,SAAS6F,OAAOS,EAAc,GACnCtJ,KAAKgD,SAAS6F,OAAOF,EAAO,EAAGF,IAUnCxI,EAAKkI,uBAAuBtF,UAAU0G,WAAa,SAASZ,GAExD,GAAY,EAARA,GAAaA,GAAS3I,KAAKgD,SAASE,OAEpC,KAAM,IAAI4F,OAAM,8BAA+BH,EAAO,iGAE1D,OAAO3I,MAAKgD,SAAS2F,IAWzB1I,EAAKkI,uBAAuBtF,UAAU+F,YAAc,SAASH,GAEzD,GAAIE,GAAQ3I,KAAKgD,SAASoG,QAASX,EACnC,IAAa,KAAVE,EAEH,MAAO3I,MAAKwJ,cAAeb,IAU/B1I,EAAKkI,uBAAuBtF,UAAU2G,cAAgB,SAASb,GAE3D,GAAIF,GAAQzI,KAAKuJ,WAAYZ,EAM7B,OALG3I,MAAK6B,OACJ4G,EAAMgB,uBAEVhB,EAAM7G,OAAS8H,OACf1J,KAAKgD,SAAS6F,OAAQF,EAAO,GACtBF,GAUXxI,EAAKkI,uBAAuBtF,UAAU8G,eAAiB,SAASC,EAAYC,GAExE,GAAIC,GAAQF,GAAc,EACtBG,EAA0B,gBAAbF,GAAwBA,EAAW7J,KAAKgD,SAASE,OAC9D8G,EAAQD,EAAMD,CAElB,IAAIE,EAAQ,GAAcD,GAATC,EACjB,CAEI,IAAK,GADDC,GAAUjK,KAAKgD,SAAS6F,OAAOiB,EAAOE,GACjC/G,EAAI,EAAGA,EAAIgH,EAAQ/G,OAAQD,IAAK,CACrC,GAAIwF,GAAQwB,EAAQhH,EACjBjD,MAAK6B,OACJ4G,EAAMgB,uBACVhB,EAAM7G,OAAS8H,OAEnB,MAAOO,GAEN,GAAc,IAAVD,GAAwC,IAAzBhK,KAAKgD,SAASE,OAElC,QAIA,MAAM,IAAI4F,OAAO,iFAUzB7I,EAAKkI,uBAAuBtF,UAAU0B,gBAAkB,WAEpD,GAAKvE,KAAKyB,UAKVzB,KAAK4F,gCAED5F,KAAK2C,gBAKT,IAAK,GAAIM,GAAI,EAAGA,EAAIjD,KAAKgD,SAASE,OAAQD,IAEtCjD,KAAKgD,SAASC,GAAGsB,mBAKzBtE,EAAKkI,uBAAuBtF,UAAUqH,sCAAwCjK,EAAKkI,uBAAuBtF,UAAU0B,gBAQpHtE,EAAKkI,uBAAuBtF,UAAUgD,UAAY,WAE9C,GAA6B,IAAzB7F,KAAKgD,SAASE,OAEd,MAAOjD,GAAK8F,cAehB,KAAK,GANDoE,GACAC,EACAC,EARAC,EAAOC,EAAAA,EACPC,EAAOD,EAAAA,EAEPE,IAAQF,EAAAA,GACRG,IAAQH,EAAAA,GAMRI,GAAe,EAEV1H,EAAI,EAAGA,EAAIjD,KAAKgD,SAASE,OAAQD,IAC1C,CACI,GAAIwF,GAAQzI,KAAKgD,SAASC,EAErBwF,GAAMhH,UAKXkJ,GAAe,EAEfR,EAAcnK,KAAKgD,SAASC,GAAG4C,YAE/ByE,EAAOA,EAAOH,EAAY9E,EAAIiF,EAAOH,EAAY9E,EACjDmF,EAAOA,EAAOL,EAAY7E,EAAIkF,EAAOL,EAAY7E,EAEjD8E,EAAYD,EAAYxD,MAAQwD,EAAY9E,EAC5CgF,EAAYF,EAAYvD,OAASuD,EAAY7E,EAE7CmF,EAAOA,EAAOL,EAAYK,EAAOL,EACjCM,EAAOA,EAAOL,EAAYK,EAAOL,GAGrC,IAAKM,EAED,MAAO1K,GAAK8F,cAGhB,IAAIS,GAASxG,KAAKuC,OAOlB,OALAiE,GAAOnB,EAAIiF,EACX9D,EAAOlB,EAAIkF,EACXhE,EAAOG,MAAQ8D,EAAOH,EACtB9D,EAAOI,OAAS8D,EAAOF,EAEhBhE,GASXvG,EAAKkI,uBAAuBtF,UAAUmD,eAAiB,WAEnD,GAAI4E,GAAc5K,KAAK+B,cAEvB/B,MAAK+B,eAAiB9B,EAAKgG,cAE3B,KAAK,GAAIhD,GAAI,EAAGA,EAAIjD,KAAKgD,SAASE,OAAQD,IAEtCjD,KAAKgD,SAASC,GAAGsB,iBAGrB,IAAIiC,GAASxG,KAAK6F,WAIlB,KAFA7F,KAAK+B,eAAiB6I,EAEjB3H,EAAI,EAAGA,EAAIjD,KAAKgD,SAASE,OAAQD,IAElCjD,KAAKgD,SAASC,GAAGsB,iBAGrB,OAAOiC,IASXvG,EAAKkI,uBAAuBtF,UAAUqD,kBAAoB,SAASrE,GAE/D7B,KAAK6B,MAAQA,CAEb,KAAK,GAAIoB,GAAE,EAAGA,EAAIjD,KAAKgD,SAASE,OAAQD,IAEpCjD,KAAKgD,SAASC,GAAGiD,kBAAkBrE,IAS3C5B,EAAKkI,uBAAuBtF,UAAU4G,qBAAuB,WAEzD,IAAK,GAAIxG,GAAI,EAAGA,EAAIjD,KAAKgD,SAASE,OAAQD,IAEtCjD,KAAKgD,SAASC,GAAGwG,sBAGrBzJ,MAAK6B,MAAQ,MAUjB5B,EAAKkI,uBAAuBtF,UAAU6E,aAAe,SAASJ,GAE1D,GAAKtH,KAAKyB,WAAWzB,KAAKwB,OAAS,GAAnC,CAEA,GAAIxB,KAAK2C,eAGL,WADA3C,MAAKqH,oBAAoBC,EAI7B,IAAIrE,EAEJ,IAAIjD,KAAK0C,OAAS1C,KAAK2D,SACvB,CAgBI,IAdI3D,KAAK2D,WAEL2D,EAAcuD,YAAYC,QAC1BxD,EAAcyD,cAAcC,WAAWhL,KAAKgE,eAG5ChE,KAAK0C,QAEL4E,EAAcuD,YAAYI,OAC1B3D,EAAc4D,YAAYC,SAASnL,KAAKoL,KAAM9D,GAC9CA,EAAcuD,YAAYQ,SAIzBpI,EAAI,EAAGA,EAAIjD,KAAKgD,SAASE,OAAQD,IAElCjD,KAAKgD,SAASC,GAAGyE,aAAaJ,EAGlCA,GAAcuD,YAAYI,OAEtBjL,KAAK0C,OAAO4E,EAAc4D,YAAYI,QAAQtL,KAAK0C,MAAO4E,GAC1DtH,KAAK2D,UAAU2D,EAAcyD,cAAcQ,YAE/CjE,EAAcuD,YAAYQ,YAK1B,KAAKpI,EAAI,EAAGA,EAAIjD,KAAKgD,SAASE,OAAQD,IAElCjD,KAAKgD,SAASC,GAAGyE,aAAaJ,KAY1CrH,EAAKkI,uBAAuBtF,UAAU8E,cAAgB,SAASL,GAE3D,GAAItH,KAAKyB,WAAY,GAAwB,IAAfzB,KAAKwB,MAAnC,CAEA,GAAIxB,KAAK2C,eAGL,WADA3C,MAAKqH,oBAAoBC,EAIzBtH,MAAK0C,OAEL4E,EAAc4D,YAAYC,SAASnL,KAAK0C,MAAO4E,EAGnD,KAAK,GAAIrE,GAAI,EAAGA,EAAIjD,KAAKgD,SAASE,OAAQD,IAEtCjD,KAAKgD,SAASC,GAAG0E,cAAcL,EAG/BtH,MAAK0C,OAEL4E,EAAc4D,YAAYI,QAAQhE,KAsB1CrH,EAAKwH,OAAS,SAASK,GAEnB7H,EAAKkI,uBAAuBzC,KAAK1F,MAWjCA,KAAKkI,OAAS,GAAIjI,GAAKmB,MAQvBpB,KAAK8H,QAAUA,GAAW7H,EAAKuL,QAAQC,aASvCzL,KAAKsI,OAAS,EASdtI,KAAKuI,QAAU,EASfvI,KAAK0L,KAAO,SAUZ1L,KAAK2L,WAAa,GASlB3L,KAAK4L,cAAgB,KAWrB5L,KAAKkE,UAAYjE,EAAKkE,WAAWE,OASjCrE,KAAK6L,OAAS,KASd7L,KAAK8L,QAAS,EAEV9L,KAAK8H,QAAQiE,YAAYC,WAEzBhM,KAAKiM,kBAGTjM,KAAK2B,YAAa,GAKtB1B,EAAKwH,OAAO5E,UAAYO,OAAOiF,OAAOpI,EAAKkI,uBAAuBtF,WAClE5C,EAAKwH,OAAO5E,UAAUC,YAAc7C,EAAKwH,OAQzCrE,OAAOC,eAAepD,EAAKwH,OAAO5E,UAAW,SAEzCS,IAAK,WACD,MAAOtD,MAAKqB,MAAMgE,EAAIrF,KAAK8H,QAAQoE,MAAMvF,OAG7CnD,IAAK,SAASC,GACVzD,KAAKqB,MAAMgE,EAAI5B,EAAQzD,KAAK8H,QAAQoE,MAAMvF,MAC1C3G,KAAKsI,OAAS7E,KAWtBL,OAAOC,eAAepD,EAAKwH,OAAO5E,UAAW,UAEzCS,IAAK,WACD,MAAQtD,MAAKqB,MAAMiE,EAAItF,KAAK8H,QAAQoE,MAAMtF,QAG9CpD,IAAK,SAASC,GACVzD,KAAKqB,MAAMiE,EAAI7B,EAAQzD,KAAK8H,QAAQoE,MAAMtF,OAC1C5G,KAAKuI,QAAU9E,KAavBxD,EAAKwH,OAAO5E,UAAUsJ,WAAa,SAASrE,EAASsE,GAE7B1C,SAAhB0C,GAEApM,KAAK8H,QAAQiE,YAAYhJ,UAI7B/C,KAAK8H,QAAQiE,YAAYM,YAAa,EACtCrM,KAAK8H,QAAUA,EACf9H,KAAK8H,QAAQwE,OAAQ,EACrBtM,KAAK2L,WAAa,IAUtB1L,EAAKwH,OAAO5E,UAAUoJ,gBAAkB,WAGhCjM,KAAKsI,SAAQtI,KAAKqB,MAAMgE,EAAIrF,KAAKsI,OAAStI,KAAK8H,QAAQoE,MAAMvF,OAC7D3G,KAAKuI,UAASvI,KAAKqB,MAAMiE,EAAItF,KAAKuI,QAAUvI,KAAK8H,QAAQoE,MAAMtF,SAkBvE3G,EAAKwH,OAAO5E,UAAUgD,UAAY,SAASC,GAEvC,GAAIa,GAAQ3G,KAAK8H,QAAQoE,MAAMvF,MAC3BC,EAAS5G,KAAK8H,QAAQoE,MAAMtF,OAE5B2F,EAAK5F,GAAS,EAAE3G,KAAKkI,OAAO7C,GAC5BmH,EAAK7F,GAAS3G,KAAKkI,OAAO7C,EAE1BoH,EAAK7F,GAAU,EAAE5G,KAAKkI,OAAO5C,GAC7BoH,EAAK9F,GAAU5G,KAAKkI,OAAO5C,EAE3BvD,EAAiB+D,GAAU9F,KAAK+B,eAEhC2C,EAAI3C,EAAe2C,EACnBC,EAAI5C,EAAe4C,EACnBC,EAAI7C,EAAe6C,EACnBC,EAAI9C,EAAe8C,EACnBC,EAAK/C,EAAe+C,GACpBC,EAAKhD,EAAegD,GAEpB0F,IAAQF,EAAAA,GACRG,IAAQH,EAAAA,GAERD,EAAOC,EAAAA,EACPC,EAAOD,EAAAA,CAEX,IAAU,IAAN5F,GAAiB,IAANC,EACf,CAEI,GAAQ,EAAJF,EACJ,CACIA,GAAK,EACL,IAAIiI,GAAOJ,CACXA,IAAMC,EACNA,GAAMG,EAGV,GAAQ,EAAJ9H,EACJ,CACIA,GAAK,EACL,IAAI8H,GAAOF,CACXA,IAAMC,EACNA,GAAMC,EAKVrC,EAAO5F,EAAI8H,EAAK1H,EAChB2F,EAAO/F,EAAI6H,EAAKzH,EAChB0F,EAAO3F,EAAI6H,EAAK3H,EAChB2F,EAAO7F,EAAI4H,EAAK1H,MAGpB,CACI,GAAI6H,GAAKlI,EAAI8H,EAAK5H,EAAI8H,EAAK5H,EACvB+H,EAAKhI,EAAI6H,EAAK/H,EAAI6H,EAAKzH,EAEvB+H,EAAKpI,EAAI6H,EAAK3H,EAAI8H,EAAK5H,EACvBiI,EAAKlI,EAAI6H,EAAK/H,EAAI4H,EAAKxH,EAEvBiI,EAAKtI,EAAI6H,EAAK3H,EAAI6H,EAAK3H,EACvBmI,EAAKpI,EAAI4H,EAAK9H,EAAI4H,EAAKxH,EAEvBmI,EAAMxI,EAAI8H,EAAK5H,EAAI6H,EAAK3H,EACxBqI,EAAMtI,EAAI4H,EAAK9H,EAAI6H,EAAKzH,CAE5BuF,GAAYA,EAALsC,EAAYA,EAAKtC,EACxBA,EAAYA,EAALwC,EAAYA,EAAKxC,EACxBA,EAAYA,EAAL0C,EAAYA,EAAK1C,EACxBA,EAAYA,EAAL4C,EAAYA,EAAK5C,EAExBE,EAAYA,EAALqC,EAAYA,EAAKrC,EACxBA,EAAYA,EAALuC,EAAYA,EAAKvC,EACxBA,EAAYA,EAALyC,EAAYA,EAAKzC,EACxBA,EAAYA,EAAL2C,EAAYA,EAAK3C,EAExBC,EAAOmC,EAAKnC,EAAOmC,EAAKnC,EACxBA,EAAOqC,EAAKrC,EAAOqC,EAAKrC,EACxBA,EAAOuC,EAAKvC,EAAOuC,EAAKvC,EACxBA,EAAOyC,EAAKzC,EAAOyC,EAAKzC,EAExBC,EAAOmC,EAAKnC,EAAOmC,EAAKnC,EACxBA,EAAOqC,EAAKrC,EAAOqC,EAAKrC,EACxBA,EAAOuC,EAAKvC,EAAOuC,EAAKvC,EACxBA,EAAOyC,EAAKzC,EAAOyC,EAAKzC,EAG5B,GAAIlE,GAASxG,KAAKuC,OAWlB,OATAiE,GAAOnB,EAAIiF,EACX9D,EAAOG,MAAQ8D,EAAOH,EAEtB9D,EAAOlB,EAAIkF,EACXhE,EAAOI,OAAS8D,EAAOF,EAGvBxK,KAAKyC,eAAiB+D,EAEfA,GAWXvG,EAAKwH,OAAO5E,UAAU6E,aAAe,SAASJ,EAAexB,GAGzD,GAAK9F,KAAKyB,WAAWzB,KAAKwB,OAAS,IAAMxB,KAAK2B,WAA9C,CAGA,GAAIsD,GAAKjF,KAAK+B,cAQd,IANI+D,IAEAb,EAAKa,GAIL9F,KAAK0C,OAAS1C,KAAK2D,SACvB,CACI,GAAIkH,GAAcvD,EAAcuD,WAG5B7K,MAAK2D,WAELkH,EAAYC,QACZxD,EAAcyD,cAAcC,WAAWhL,KAAKgE,eAG5ChE,KAAK0C,QAELmI,EAAYI,OACZ3D,EAAc4D,YAAYC,SAASnL,KAAKoL,KAAM9D,GAC9CuD,EAAYQ,SAIhBR,EAAY/D,OAAO9G,KAGnB,KAAK,GAAIiD,GAAI,EAAGA,EAAIjD,KAAKgD,SAASE,OAAQD,IAEtCjD,KAAKgD,SAASC,GAAGyE,aAAaJ,EAIlCuD,GAAYI,OAERjL,KAAK0C,OAAO4E,EAAc4D,YAAYI,QAAQtL,KAAK0C,MAAO4E,GAC1DtH,KAAK2D,UAAU2D,EAAcyD,cAAcQ,YAE/CV,EAAYQ,YAGhB,CACI/D,EAAcuD,YAAY/D,OAAO9G,KAGjC,KAAK,GAAIiD,GAAI,EAAGA,EAAIjD,KAAKgD,SAASE,OAAQD,IAEtCjD,KAAKgD,SAASC,GAAGyE,aAAaJ,EAAerC,MAczDhF,EAAKwH,OAAO5E,UAAU8E,cAAgB,SAASL,EAAexB,GAG1D,MAAK9F,KAAKyB,SAA0B,IAAfzB,KAAKwB,QAAgBxB,KAAK2B,YAAc3B,KAAK8H,QAAQsF,KAAKzG,OAAS,GAAK3G,KAAK8H,QAAQsF,KAAKxG,QAAU,GAAzH,CAKA,GAAI3B,GAAKjF,KAAK+B,cAoBd,IAjBI+D,IAEAb,EAAKa,GAGL9F,KAAKkE,YAAcoD,EAAc+F,mBAEjC/F,EAAc+F,iBAAmBrN,KAAKkE,UACtCoD,EAAcgG,QAAQC,yBAA2BtN,EAAKuN,iBAAiBlG,EAAc+F,mBAGrFrN,KAAK0C,OAEL4E,EAAc4D,YAAYC,SAASnL,KAAK0C,MAAO4E,GAI/CtH,KAAK8H,QAAQwE,MACjB,CACI,GAAIjG,GAAarG,KAAK8H,QAAQiE,YAAY1F,WAAaiB,EAAcjB,UAErEiB,GAAcgG,QAAQG,YAAczN,KAAK8B,WAGrCwF,EAAcoG,gBAAkBpG,EAAchB,YAActG,KAAK8H,QAAQiE,YAAYzF,YAErFgB,EAAchB,UAAYtG,KAAK8H,QAAQiE,YAAYzF,UACnDgB,EAAcgG,QAAQhG,EAAcoG,gBAAmBpG,EAAchB,YAAcrG,EAAK0N,WAAWC,OAIvG,IAAIC,GAAM7N,KAAK8H,QAAY,KAAI9H,KAAK8H,QAAQgG,KAAKzI,EAAIrF,KAAKkI,OAAO7C,EAAIrF,KAAK8H,QAAQgG,KAAKnH,MAAQ3G,KAAKkI,OAAO7C,GAAKrF,KAAK8H,QAAQoE,MAAMvF,MAC/HoH,EAAM/N,KAAK8H,QAAY,KAAI9H,KAAK8H,QAAQgG,KAAKxI,EAAItF,KAAKkI,OAAO5C,EAAItF,KAAK8H,QAAQgG,KAAKlH,OAAS5G,KAAKkI,OAAO5C,GAAKtF,KAAK8H,QAAQoE,MAAMtF,OAEhI9B,EAAMG,EAAGH,GAAKwC,EAAcjB,WAAciB,EAAc0G,OACxDjJ,EAAME,EAAGF,GAAKuC,EAAcjB,WAAciB,EAAc2G,MAGxD3G,GAAc4G,aAEd5G,EAAcgG,QAAQa,aAAalJ,EAAGP,EAAGO,EAAGN,EAAGM,EAAGL,EAAGK,EAAGJ,EAAQ,EAALC,EAAa,EAALC,GACnE8I,GAAM,EACNE,GAAM,GAINzG,EAAcgG,QAAQa,aAAalJ,EAAGP,EAAGO,EAAGN,EAAGM,EAAGL,EAAGK,EAAGJ,EAAGC,EAAIC,EAGnE,IAAIqJ,GAAKpO,KAAK8H,QAAQsF,KAAKzG,MACvB0H,EAAKrO,KAAK8H,QAAQsF,KAAKxG,MAK3B,IAHAiH,GAAMxH,EACN0H,GAAM1H,EAEY,WAAdrG,KAAK0L,MAED1L,KAAK8H,QAAQwG,gBAAkBtO,KAAK2L,aAAe3L,KAAK0L,QAExD1L,KAAK4L,cAAgB3L,EAAKsO,aAAaC,iBAAiBxO,KAAMA,KAAK0L,MAEnE1L,KAAK2L,WAAa3L,KAAK0L,KACvB1L,KAAK8H,QAAQwG,gBAAiB,GAGlChH,EAAcgG,QAAQmB,UAAUzO,KAAK4L,cAAe,EAAG,EAAGwC,EAAIC,EAAIR,EAAIE,EAAIK,EAAK/H,EAAYgI,EAAKhI,OAGpG,CACI,GAAIqI,GAAK1O,KAAK8H,QAAQsF,KAAK/H,EACvBsJ,EAAK3O,KAAK8H,QAAQsF,KAAK9H,CAC3BgC,GAAcgG,QAAQmB,UAAUzO,KAAK8H,QAAQiE,YAAY6C,OAAQF,EAAIC,EAAIP,EAAIC,EAAIR,EAAIE,EAAIK,EAAK/H,EAAYgI,EAAKhI,IAIvH,IAAK,GAAIpD,GAAI,EAAGA,EAAIjD,KAAKgD,SAASE,OAAQD,IAEtCjD,KAAKgD,SAASC,GAAG0E,cAAcL,EAG/BtH,MAAK0C,OAEL4E,EAAc4D,YAAYI,QAAQhE,KAiB1CrH,EAAKwH,OAAOoH,UAAY,SAASC,GAE7B,GAAIhH,GAAU7H,EAAK8O,aAAaD,EAEhC,KAAKhH,EAAS,KAAM,IAAIgB,OAAM,gBAAkBgG,EAAU,wCAA0C9O,KAEpG,OAAO,IAAIC,GAAKwH,OAAOK,IAa3B7H,EAAKwH,OAAOuH,UAAY,SAASC,EAASC,EAAa5I,GAEnD,GAAIwB,GAAU7H,EAAKuL,QAAQwD,UAAUC,EAASC,EAAa5I,EAE3D,OAAO,IAAIrG,GAAKwH,OAAOK,IA2B3B7H,EAAKkP,YAAc,SAASrH,GAExB7H,EAAKkI,uBAAuBzC,KAAM1F,MAElCA,KAAKoP,aAAetH,EAEpB9H,KAAKqP,OAAQ,GAGjBpP,EAAKkP,YAAYtM,UAAYO,OAAOiF,OAAOpI,EAAKkI,uBAAuBtF,WACvE5C,EAAKkP,YAAYtM,UAAUC,YAAc7C,EAAKkP,YAQ9ClP,EAAKkP,YAAYtM,UAAUyM,UAAY,SAAS9H,GAG5CxH,KAAKuP,gBAAkB,GAAItP,GAAKuP,qBAAqBhI,GAErDxH,KAAKqP,OAAQ,GASjBpP,EAAKkP,YAAYtM,UAAU0B,gBAAkB,WAGzCvE,KAAK4F,gCAWT3F,EAAKkP,YAAYtM,UAAU6E,aAAe,SAASJ,IAE1CtH,KAAKyB,SAAWzB,KAAKwB,OAAS,IAAMxB,KAAKgD,SAASE,SAElDlD,KAAKqP,OAENrP,KAAKsP,UAAUhI,EAAcE,IAG7BxH,KAAKuP,gBAAgB/H,KAAOF,EAAcE,IAE1CxH,KAAKuP,gBAAgBE,WAAWnI,EAAcE,IAGlDF,EAAcuD,YAAYI,OAE1B3D,EAAcoI,cAAcC,UAAUrI,EAAcoI,cAAcE,YAElE5P,KAAKuP,gBAAgBzF,MAAM9J,KAAMsH,GACjCtH,KAAKuP,gBAAgBzI,OAAO9G,MAE5BsH,EAAcuD,YAAYQ,UAW9BpL,EAAKkP,YAAYtM,UAAU8E,cAAgB,SAASL,GAEhD,GAAKtH,KAAKyB,WAAWzB,KAAKwB,OAAS,IAAMxB,KAAKgD,SAASE,OAAvD,CAEA,GAAIoK,GAAUhG,EAAcgG,OAE5BA,GAAQG,YAAczN,KAAK8B,WAE3B9B,KAAK4F,8BAML,KAAK,GAJDiK,GAAY7P,KAAK+B,eAEjB+N,GAAY,EAEP7M,EAAI,EAAGA,EAAIjD,KAAKgD,SAASE,OAAQD,IAC1C,CACI,GAAIwF,GAAQzI,KAAKgD,SAASC,EAE1B,IAAKwF,EAAMhH,QAAX,CAEA,GAAIqG,GAAUW,EAAMX,QAChBoE,EAAQpE,EAAQoE,KAIpB,IAFAoB,EAAQG,YAAczN,KAAK8B,WAAa2G,EAAMjH,MAE1CiH,EAAMlH,UAAsB,EAAVV,KAAKC,MAAY,EAE/BgP,IAEAxC,EAAQa,aAAa0B,EAAUnL,EAAGmL,EAAUlL,EAAGkL,EAAUjL,EAAGiL,EAAUhL,EAAGgL,EAAU/K,GAAI+K,EAAU9K,IACjG+K,GAAY,GAIhBxC,EAAQmB,UAAU3G,EAAQiE,YAAY6C,OACjB1C,EAAM7G,EACN6G,EAAM5G,EACN4G,EAAMvF,MACNuF,EAAMtF,OACJ6B,EAAMP,OAAQ,IAAMgE,EAAMvF,MAAQ8B,EAAMpH,MAAMgE,GAAKoD,EAAMtH,SAASkE,EAAI,GAAMiC,EAAc0G,OAAU,EACpGvF,EAAMP,OAAQ,IAAMgE,EAAMtF,OAAS6B,EAAMpH,MAAMiE,GAAKmD,EAAMtH,SAASmE,EAAI,GAAMgC,EAAc2G,OAAU,EACvG/B,EAAMvF,MAAQ8B,EAAMpH,MAAMgE,EAC1B6G,EAAMtF,OAAS6B,EAAMpH,MAAMiE,OAGpD,CACSwK,IAAWA,GAAY,GAE5BrH,EAAM7C,8BAEN,IAAImK,GAAiBtH,EAAM1G,eACvB+C,EAAMiL,EAAejL,GAAKwC,EAAcjB,WAAciB,EAAc0G,OACpEjJ,EAAMgL,EAAehL,GAAKuC,EAAcjB,WAAciB,EAAc2G,MAIpE3G,GAAc4G,YAEdZ,EAAQa,aAAa4B,EAAerL,EAAGqL,EAAepL,EAAGoL,EAAenL,EAAGmL,EAAelL,EAAQ,EAALC,EAAa,EAALC,GAIrGuI,EAAQa,aAAa4B,EAAerL,EAAGqL,EAAepL,EAAGoL,EAAenL,EAAGmL,EAAelL,EAAGC,EAAIC,GAGrGuI,EAAQmB,UAAU3G,EAAQiE,YAAY6C,OACjB1C,EAAM7G,EACN6G,EAAM5G,EACN4G,EAAMvF,MACNuF,EAAMtF,OACJ6B,EAAMP,OAAQ,GAAMgE,EAAMvF,MAAS,GAAO,EAC1C8B,EAAMP,OAAQ,GAAMgE,EAAMtF,OAAU,GAAO,EAC7CsF,EAAMvF,MACNuF,EAAMtF,aAgBvC3G,EAAK+P,QAAU,SAASC,GACpB,QAASA,GAAO,GAAK,KAAQ,KAAOA,GAAO,EAAI,KAAQ,KAAY,IAANA,GAAa,MAS9EhQ,EAAKiQ,QAAU,SAASC,GACpB,OAAgB,IAAPA,EAAI,IAAU,KAAc,IAAPA,EAAI,IAAU,GAAY,IAAPA,EAAI,IASzDlQ,EAAKmQ,0BAA4B,WAE7B,GAAiB1G,SAAb2G,SAAwB,OAAO,CAEnC,IAAIC,GAAU,iFACVC,EAAS,mDAETC,EAAU,GAAIC,MAClBD,GAAQE,IAAMJ,EAAU,WAAaC,CAErC,IAAII,GAAS,GAAIF,MACjBE,GAAOD,IAAMJ,EAAU,WAAaC,CAEpC,IAAIK,GAAS3Q,EAAK4Q,WAAWxI,OAAOrI,KAAM,EAAG,GACzCsN,EAAUsD,EAAOE,WAAW,KAKhC,IAJAxD,EAAQC,yBAA2B,WACnCD,EAAQmB,UAAU+B,EAAS,EAAG,GAC9BlD,EAAQmB,UAAUkC,EAAQ,EAAG,IAExBrD,EAAQyD,aAAa,EAAE,EAAE,EAAE,GAE5B,OAAO,CAGX,IAAIC,GAAO1D,EAAQyD,aAAa,EAAE,EAAE,EAAE,GAAGC,IAIzC,OAFA/Q,GAAK4Q,WAAWI,OAAOjR,MAEH,MAAZgR,EAAK,IAA0B,IAAZA,EAAK,IAAwB,IAAZA,EAAK,IAYrD/Q,EAAKiR,kBAAoB,SAASC,GAE9B,GAAIA,EAAS,GAAiC,KAA3BA,EAAUA,EAAS,GAClC,MAAOA,EAIP,KADA,GAAIC,GAAS,EACGD,EAATC,GAAiBA,IAAW,CACnC,OAAOA,IAWfnR,EAAKoR,aAAe,SAAS1K,EAAOC,GAEhC,MAAQD,GAAQ,GAA+B,KAAzBA,EAASA,EAAQ,IAAaC,EAAS,GAAiC,KAA3BA,EAAUA,EAAS,IAgB1F3G,EAAK4Q,YAYDxI,OAAQ,SAAUzG,EAAQ+E,EAAOC,GAE7B,GACIgK,GADAU,EAAMrR,EAAK4Q,WAAWU,UAG1B,IAAY,KAARD,EACJ,CACI,GAAIE,IACA5P,OAAQA,EACRgP,OAAQP,SAASoB,cAAc,UAGnCxR,GAAK4Q,WAAWa,KAAK3N,KAAKyN,GAE1BZ,EAASY,EAAUZ,WAInB3Q,GAAK4Q,WAAWa,KAAKJ,GAAK1P,OAASA,EAEnCgP,EAAS3Q,EAAK4Q,WAAWa,KAAKJ,GAAKV,MASvC,OANclH,UAAV/C,IAEAiK,EAAOjK,MAAQA,EACfiK,EAAOhK,OAASA,GAGbgK,GAWXW,SAAU,WAIN,IAAK,GAFDG,GAAOzR,EAAK4Q,WAAWa,KAElBzO,EAAI,EAAGA,EAAIyO,EAAKxO,OAAQD,IAE7B,GAAuB,OAAnByO,EAAKzO,GAAGrB,OAER,MAAOqB,EAIf,OAAO,IAWXgO,OAAQ,SAAUrP,GAId,IAAK,GAFD8P,GAAOzR,EAAK4Q,WAAWa,KAElBzO,EAAI,EAAGA,EAAIyO,EAAKxO,OAAQD,IAEzByO,EAAKzO,GAAGrB,SAAWA,IAEnB8P,EAAKzO,GAAGrB,OAAS,OAa7B+P,eAAgB,SAAUf,GAItB,IAAK,GAFDc,GAAOzR,EAAK4Q,WAAWa,KAElBzO,EAAI,EAAGA,EAAIyO,EAAKxO,OAAQD,IAEzByO,EAAKzO,GAAG2N,SAAWA,IAEnBc,EAAKzO,GAAGrB,OAAS,OAa7BgQ,SAAU,WAKN,IAAK,GAHDF,GAAOzR,EAAK4Q,WAAWa,KACvB9M,EAAI,EAEC3B,EAAI,EAAGA,EAAIyO,EAAKxO,OAAQD,IAEN,OAAnByO,EAAKzO,GAAGrB,QAERgD,GAIR,OAAOA,IAWXiN,QAAS,WAKL,IAAK,GAHDH,GAAOzR,EAAK4Q,WAAWa,KACvB9M,EAAI,EAEC3B,EAAI,EAAGA,EAAIyO,EAAKxO,OAAQD,IAEN,OAAnByO,EAAKzO,GAAGrB,QAERgD,GAIR,OAAOA,KAaf3E,EAAK4Q,WAAWa,QAWhBzR,EAAK6R,mBAAqB,aAW1B7R,EAAK8R,oBAAsB,SAASvK,EAAIwK,GAEpC,MAAO/R,GAAKgS,eAAezK,EAAIwK,EAAWxK,EAAG0K,gBAUjDjS,EAAKkS,sBAAwB,SAAS3K,EAAIwK,GAEtC,MAAO/R,GAAKgS,eAAezK,EAAIwK,EAAWxK,EAAG4K,kBAYjDnS,EAAKgS,eAAiB,SAASzK,EAAIwK,EAAWK,GAE1C,GAAI3B,GAAMsB,CAENrR,OAAM2R,QAAQN,KAEdtB,EAAMsB,EAAUO,KAAK,MAGzB,IAAI1G,GAASrE,EAAGgL,aAAaH,EAI7B,OAHA7K,GAAGiL,aAAa5G,EAAQ6E,GACxBlJ,EAAGkL,cAAc7G,GAEZrE,EAAGmL,mBAAmB9G,EAAQrE,EAAGoL,gBAM/B/G,GAJHgH,OAAOC,QAAQC,IAAIvL,EAAGwL,iBAAiBnH,IAChC,OAcf5L,EAAKgT,eAAiB,SAASzL,EAAI0L,EAAWC,GAE1C,GAAIC,GAAiBnT,EAAKkS,sBAAsB3K,EAAI2L,GAChDE,EAAepT,EAAK8R,oBAAoBvK,EAAI0L,GAE5CI,EAAgB9L,EAAG+L,eAYvB,OAVA/L,GAAGgM,aAAaF,EAAeD,GAC/B7L,EAAGgM,aAAaF,EAAeF,GAC/B5L,EAAGiM,YAAYH,GAEV9L,EAAGkM,oBAAoBJ,EAAe9L,EAAGmM,eAE1Cd,OAAOC,QAAQC,IAAIvL,EAAGoM,kBAAkBN,IACxCT,OAAOC,QAAQC,IAAI,iCAGhBO,GAaXrT,EAAK4T,WAAa,SAASrM,GAOvBxH,KAAKM,KAAOL,EAAKK,OAMjBN,KAAKwH,GAAKA,EAOVxH,KAAK8T,QAAU,KAOf9T,KAAKmT,aACD,wBACA,8BACA,uBACA,8BACA,oBACA,kEACA,KAQJnT,KAAK+T,aAAe,EAQpB/T,KAAKgU,UAAW,EAOhBhU,KAAKiU,OAAQ,EAQbjU,KAAKkU,cAELlU,KAAKmU,QAGTlU,EAAK4T,WAAWhR,UAAUC,YAAc7C,EAAK4T,WAO7C5T,EAAK4T,WAAWhR,UAAUsR,KAAO,WAE7B,GAAI3M,GAAKxH,KAAKwH,GAEVsM,EAAU7T,EAAKgT,eAAezL,EAAIxH,KAAKkT,WAAajT,EAAK4T,WAAWO,iBAAkBpU,KAAKmT,YAE/F3L,GAAG6M,WAAWP,GAGd9T,KAAKsU,SAAW9M,EAAG+M,mBAAmBT,EAAS,YAC/C9T,KAAKwU,iBAAmBhN,EAAG+M,mBAAmBT,EAAS,oBACvD9T,KAAKyU,aAAejN,EAAG+M,mBAAmBT,EAAS,gBACnD9T,KAAK0U,WAAalN,EAAG+M,mBAAmBT,EAAS,cAGjD9T,KAAK2U,gBAAkBnN,EAAGoN,kBAAkBd,EAAS,mBACrD9T,KAAK6U,cAAgBrN,EAAGoN,kBAAkBd,EAAS,iBACnD9T,KAAK8U,eAAiBtN,EAAGoN,kBAAkBd,EAAS,UAQzB,KAAxB9T,KAAK8U,iBAEJ9U,KAAK8U,eAAiB,GAG1B9U,KAAKkU,YAAclU,KAAK2U,gBAAiB3U,KAAK6U,cAAe7U,KAAK8U,eAKlE,KAAK,GAAIC,KAAO/U,MAAKgV,SAGjBhV,KAAKgV,SAASD,GAAKE,gBAAkBzN,EAAG+M,mBAAmBT,EAASiB,EAGxE/U,MAAKkV,eAELlV,KAAK8T,QAAUA,GAWnB7T,EAAK4T,WAAWhR,UAAUqS,aAAe,WAErClV,KAAK+T,aAAe,CACpB,IACIoB,GADA3N,EAAKxH,KAAKwH,EAGd,KAAK,GAAIuN,KAAO/U,MAAKgV,SACrB,CACIG,EAAUnV,KAAKgV,SAASD,EAExB,IAAIK,GAAOD,EAAQC,IAEN,eAATA,GAEAD,EAAQE,OAAQ,EAEM,OAAlBF,EAAQ1R,OAERzD,KAAKsV,cAAcH,IAGT,SAATC,GAA4B,SAATA,GAA4B,SAATA,GAG3CD,EAAQI,UAAW,EACnBJ,EAAQK,cAAgB,EAEX,SAATJ,EAEAD,EAAQM,OAASjO,EAAGkO,iBAEN,SAATN,EAELD,EAAQM,OAASjO,EAAGmO,iBAEN,SAATP,IAELD,EAAQM,OAASjO,EAAGoO,oBAMxBT,EAAQM,OAASjO,EAAG,UAAY4N,GAEnB,OAATA,GAA0B,OAATA,EAEjBD,EAAQK,cAAgB,EAEV,OAATJ,GAA0B,OAATA,EAEtBD,EAAQK,cAAgB,EAEV,OAATJ,GAA0B,OAATA,EAEtBD,EAAQK,cAAgB,EAIxBL,EAAQK,cAAgB,KAYxCvV,EAAK4T,WAAWhR,UAAUyS,cAAgB,SAASH,GAE/C,GAAKA,EAAQ1R,OAAU0R,EAAQ1R,MAAMsI,aAAgBoJ,EAAQ1R,MAAMsI,YAAYC,UAA/E,CAKA,GAAIxE,GAAKxH,KAAKwH,EAMd,IAJAA,EAAGqO,cAAcrO,EAAG,UAAYxH,KAAK+T,eACrCvM,EAAGsO,YAAYtO,EAAGuO,WAAYZ,EAAQ1R,MAAMsI,YAAYiK,YAAYxO,EAAGyO,KAGnEd,EAAQe,YACZ,CACI,GAAIlF,GAAOmE,EAAQe,YAYfC,EAAanF,EAAc,UAAIA,EAAKmF,UAAY3O,EAAGoG,OACnDwI,EAAapF,EAAc,UAAIA,EAAKoF,UAAY5O,EAAGoG,OACnDyI,EAASrF,EAAU,MAAIA,EAAKqF,MAAQ7O,EAAG8O,cACvCC,EAASvF,EAAU,MAAIA,EAAKuF,MAAQ/O,EAAG8O,cACvCE,EAAUxF,EAAc,UAAIxJ,EAAGiP,UAAYjP,EAAGkP,IAUlD,IARI1F,EAAK2F,SAELN,EAAQ7O,EAAGoP,OACXL,EAAQ/O,EAAGoP,QAGfpP,EAAGqP,YAAYrP,EAAGsP,sBAAuB9F,EAAK+F,OAE1C/F,EAAKrK,MACT,CACI,GAAIA,GAASqK,EAAU,MAAIA,EAAKrK,MAAQ,IACpCC,EAAUoK,EAAW,OAAIA,EAAKpK,OAAS,EACvCoQ,EAAUhG,EAAW,OAAIA,EAAKgG,OAAS,CAG3CxP,GAAGyP,WAAWzP,EAAGuO,WAAY,EAAGS,EAAQ7P,EAAOC,EAAQoQ,EAAQR,EAAQhP,EAAG0P,cAAe,UAKzF1P,GAAGyP,WAAWzP,EAAGuO,WAAY,EAAGS,EAAQhP,EAAGkP,KAAMlP,EAAG0P,cAAe/B,EAAQ1R,MAAMsI,YAAY6C,OAGjGpH,GAAG2P,cAAc3P,EAAGuO,WAAYvO,EAAG4P,mBAAoBjB,GACvD3O,EAAG2P,cAAc3P,EAAGuO,WAAYvO,EAAG6P,mBAAoBjB,GACvD5O,EAAG2P,cAAc3P,EAAGuO,WAAYvO,EAAG8P,eAAgBjB,GACnD7O,EAAG2P,cAAc3P,EAAGuO,WAAYvO,EAAG+P,eAAgBhB,GAGvD/O,EAAGgQ,UAAUrC,EAAQF,gBAAiBjV,KAAK+T,cAE3CoB,EAAQE,OAAQ,EAEhBrV,KAAK+T,iBAST9T,EAAK4T,WAAWhR,UAAU4U,aAAe,WAErCzX,KAAK+T,aAAe,CACpB,IAAIoB,GACA3N,EAAKxH,KAAKwH,EAGd,KAAK,GAAIuN,KAAO/U,MAAKgV,SAEjBG,EAAUnV,KAAKgV,SAASD,GAEM,IAA1BI,EAAQK,cAEJL,EAAQI,YAAa,EAErBJ,EAAQM,OAAO/P,KAAK8B,EAAI2N,EAAQF,gBAAiBE,EAAQuC,UAAWvC,EAAQ1R,OAI5E0R,EAAQM,OAAO/P,KAAK8B,EAAI2N,EAAQF,gBAAiBE,EAAQ1R,OAG9B,IAA1B0R,EAAQK,cAEbL,EAAQM,OAAO/P,KAAK8B,EAAI2N,EAAQF,gBAAiBE,EAAQ1R,MAAM4B,EAAG8P,EAAQ1R,MAAM6B,GAEjD,IAA1B6P,EAAQK,cAEbL,EAAQM,OAAO/P,KAAK8B,EAAI2N,EAAQF,gBAAiBE,EAAQ1R,MAAM4B,EAAG8P,EAAQ1R,MAAM6B,EAAG6P,EAAQ1R,MAAMkU,GAElE,IAA1BxC,EAAQK,cAEbL,EAAQM,OAAO/P,KAAK8B,EAAI2N,EAAQF,gBAAiBE,EAAQ1R,MAAM4B,EAAG8P,EAAQ1R,MAAM6B,EAAG6P,EAAQ1R,MAAMkU,EAAGxC,EAAQ1R,MAAMmU,GAE5F,cAAjBzC,EAAQC,OAETD,EAAQE,OAER7N,EAAGqO,cAAcrO,EAAG,UAAYxH,KAAK+T,eAElCoB,EAAQ1R,MAAMsI,YAAY8L,OAAOrQ,EAAGyO,IAEnChW,EAAK6X,UAAUtQ,EAAGyO,IAAI8B,cAAc5C,EAAQ1R,MAAMsI,aAKlDvE,EAAGsO,YAAYtO,EAAGuO,WAAYZ,EAAQ1R,MAAMsI,YAAYiK,YAAYxO,EAAGyO,KAI3EzO,EAAGgQ,UAAUrC,EAAQF,gBAAiBjV,KAAK+T,cAC3C/T,KAAK+T,gBAIL/T,KAAKsV,cAAcH,KAYnClV,EAAK4T,WAAWhR,UAAUE,QAAU,WAEhC/C,KAAKwH,GAAGwQ,cAAehY,KAAK8T,SAC5B9T,KAAKgV,SAAW,KAChBhV,KAAKwH,GAAK,KAEVxH,KAAKkU,WAAa,MAStBjU,EAAK4T,WAAWO,kBACZ,kCACA,gCACA,yBAEA,iCACA,6BAEA,8BACA,uBAEA,uCAEA,oBACA,qGACA,oCACA,qDACA,KAWJnU,EAAKgY,eAAiB,SAASzQ,GAO3BxH,KAAKM,KAAOL,EAAKK,OAMjBN,KAAKwH,GAAKA,EAOVxH,KAAK8T,QAAU,KAOf9T,KAAKmT,aACD,wBACA,8BACA,wBACA,8BACA,oBACA,kEACA,KAQJnT,KAAKkT,WACD,kCACA,iCACA,yBACA,6BACA,gCACA,0BAEA,iCACA,6BACA,wBAEA,8BACA,wBAEA,uCAEA,oBACA,aACA,yCACA,8DACA,8DACA,2DACA,uEACA,oCAEA,sBACA,KAQJlT,KAAK+T,aAAe,EAEpB/T,KAAKmU,QAGTlU,EAAKgY,eAAepV,UAAUC,YAAc7C,EAAKgY,eAOjDhY,EAAKgY,eAAepV,UAAUsR,KAAO,WAEjC,GAAI3M,GAAKxH,KAAKwH,GAEVsM,EAAU7T,EAAKgT,eAAezL,EAAIxH,KAAKkT,UAAWlT,KAAKmT,YAE3D3L,GAAG6M,WAAWP,GAGd9T,KAAKsU,SAAW9M,EAAG+M,mBAAmBT,EAAS,YAE/C9T,KAAKwU,iBAAmBhN,EAAG+M,mBAAmBT,EAAS,oBACvD9T,KAAKyU,aAAejN,EAAG+M,mBAAmBT,EAAS,gBACnD9T,KAAK0U,WAAalN,EAAG+M,mBAAmBT,EAAS,cACjD9T,KAAKkY,QAAU1Q,EAAG+M,mBAAmBT,EAAS,WAG9C9T,KAAK2U,gBAAkBnN,EAAGoN,kBAAkBd,EAAS,mBACrD9T,KAAKmY,eAAiB3Q,EAAGoN,kBAAkBd,EAAS,kBAEpD9T,KAAKoY,OAAS5Q,EAAGoN,kBAAkBd,EAAS,UAC5C9T,KAAKqY,UAAY7Q,EAAGoN,kBAAkBd,EAAS,aAE/C9T,KAAK6U,cAAgBrN,EAAGoN,kBAAkBd,EAAS,iBACnD9T,KAAK8U,eAAiBtN,EAAGoN,kBAAkBd,EAAS,UAQzB,KAAxB9T,KAAK8U,iBAEJ9U,KAAK8U,eAAiB,GAG1B9U,KAAKkU,YAAclU,KAAK2U,gBAAiB3U,KAAKmY,eAAiBnY,KAAKoY,OAAQpY,KAAKqY,UAAWrY,KAAK6U,cAAe7U,KAAK8U,gBAIrH9U,KAAK8T,QAAUA,GAQnB7T,EAAKgY,eAAepV,UAAUE,QAAU,WAEpC/C,KAAKwH,GAAGwQ,cAAehY,KAAK8T,SAC5B9T,KAAKgV,SAAW,KAChBhV,KAAKwH,GAAK,KAEVxH,KAAKkU,WAAa,MAYtBjU,EAAKqY,YAAc,SAAS9Q,GAOxBxH,KAAKM,KAAOL,EAAKK,OAMjBN,KAAKwH,GAAKA,EAOVxH,KAAK8T,QAAU,KAOf9T,KAAKmT,aACD,2BACA,8BAEA,uBACA,8BAEA,oBACA,yFAEA,KAQJnT,KAAKkT,WACD,kCACA,gCACA,kCACA,iCACA,6BAGA,8BAGA,oBACA,+DACA,4BACA,qGACA,oCAEA,KAGJlT,KAAKmU,QAGTlU,EAAKqY,YAAYzV,UAAUC,YAAc7C,EAAKqY,YAO9CrY,EAAKqY,YAAYzV,UAAUsR,KAAO,WAE9B,GAAI3M,GAAKxH,KAAKwH,GAEVsM,EAAU7T,EAAKgT,eAAezL,EAAIxH,KAAKkT,UAAWlT,KAAKmT,YAC3D3L,GAAG6M,WAAWP,GAGd9T,KAAKsU,SAAW9M,EAAG+M,mBAAmBT,EAAS,YAC/C9T,KAAKwU,iBAAmBhN,EAAG+M,mBAAmBT,EAAS,oBACvD9T,KAAKyU,aAAejN,EAAG+M,mBAAmBT,EAAS,gBACnD9T,KAAK8U,eAAiBtN,EAAGoN,kBAAkBd,EAAS,UAIpD9T,KAAK2U,gBAAkBnN,EAAGoN,kBAAkBd,EAAS,mBACrD9T,KAAK6U,cAAgBrN,EAAGoN,kBAAkBd,EAAS,iBAEnD9T,KAAKkU,YAAclU,KAAK2U,gBAAiB3U,KAAK6U,eAE9C7U,KAAKuY,kBAAoB/Q,EAAG+M,mBAAmBT,EAAS,qBACxD9T,KAAKwB,MAAQgG,EAAG+M,mBAAmBT,EAAS,SAE5C9T,KAAK8T,QAAUA,GAQnB7T,EAAKqY,YAAYzV,UAAUE,QAAU,WAEjC/C,KAAKwH,GAAGwQ,cAAehY,KAAK8T,SAC5B9T,KAAKgV,SAAW,KAChBhV,KAAKwH,GAAK,KAEVxH,KAAKwY,UAAY,MAYrBvY,EAAKwY,gBAAkB,SAASjR,GAO5BxH,KAAKM,KAAOL,EAAKK,OAMjBN,KAAKwH,GAAKA,EAOVxH,KAAK8T,QAAU,KAOf9T,KAAKmT,aACD,2BACA,uBAEA,oBACA,4BACA,KAQJnT,KAAKkT,WACD,kCACA,yBACA,kCACA,iCACA,6BACA,uBACA,uBACA,qBACA,uBAEA,oBACA,+DACA,4BACA,iHACA,kDACA,KAGJlT,KAAKmU,QAGTlU,EAAKwY,gBAAgB5V,UAAUC,YAAc7C,EAAKwY,gBAOlDxY,EAAKwY,gBAAgB5V,UAAUsR,KAAO,WAElC,GAAI3M,GAAKxH,KAAKwH,GAEVsM,EAAU7T,EAAKgT,eAAezL,EAAIxH,KAAKkT,UAAWlT,KAAKmT,YAC3D3L,GAAG6M,WAAWP,GAGd9T,KAAKwU,iBAAmBhN,EAAG+M,mBAAmBT,EAAS,oBACvD9T,KAAKyU,aAAejN,EAAG+M,mBAAmBT,EAAS,gBACnD9T,KAAK0Y,UAAYlR,EAAG+M,mBAAmBT,EAAS,QAChD9T,KAAK+W,MAAQvP,EAAG+M,mBAAmBT,EAAS,SAG5C9T,KAAK2U,gBAAkBnN,EAAGoN,kBAAkBd,EAAS,mBACrD9T,KAAK8U,eAAiBtN,EAAGoN,kBAAkBd,EAAS,UAEpD9T,KAAKkU,YAAclU,KAAK2U,gBAAiB3U,KAAK8U,gBAE9C9U,KAAKuY,kBAAoB/Q,EAAG+M,mBAAmBT,EAAS,qBACxD9T,KAAKwB,MAAQgG,EAAG+M,mBAAmBT,EAAS,SAE5C9T,KAAK8T,QAAUA,GAQnB7T,EAAKwY,gBAAgB5V,UAAUE,QAAU,WAErC/C,KAAKwH,GAAGwQ,cAAehY,KAAK8T,SAC5B9T,KAAKgV,SAAW,KAChBhV,KAAKwH,GAAK,KAEVxH,KAAKkU,WAAa,MAYtBjU,EAAK0Y,uBAAyB,SAASnR,GAOnCxH,KAAKM,KAAOL,EAAKK,OAMjBN,KAAKwH,GAAKA,EAOVxH,KAAK8T,QAAU,KAOf9T,KAAKmT,aAED,2BAEA,uBAEA,oBACA,4BACA,KAQJnT,KAAKkT,WACD,kCAEA,kCACA,iCACA,6BAEA,qBACA,uBACA,sBACA,uBACA,uBAEA,oBACA,+DACA,4BACA,iHACA,iDACA,KAGJlT,KAAKmU,QAGTlU,EAAK0Y,uBAAuB9V,UAAUC,YAAc7C,EAAK0Y,uBAOzD1Y,EAAK0Y,uBAAuB9V,UAAUsR,KAAO,WAEzC,GAAI3M,GAAKxH,KAAKwH,GAEVsM,EAAU7T,EAAKgT,eAAezL,EAAIxH,KAAKkT,UAAWlT,KAAKmT,YAC3D3L,GAAG6M,WAAWP,GAGd9T,KAAKwU,iBAAmBhN,EAAG+M,mBAAmBT,EAAS,oBACvD9T,KAAKyU,aAAejN,EAAG+M,mBAAmBT,EAAS,gBACnD9T,KAAK0Y,UAAYlR,EAAG+M,mBAAmBT,EAAS,QAChD9T,KAAK4Y,MAAQpR,EAAG+M,mBAAmBT,EAAS,SAC5C9T,KAAK+W,MAAQvP,EAAG+M,mBAAmBT,EAAS,SAG5C9T,KAAK2U,gBAAkBnN,EAAGoN,kBAAkBd,EAAS,mBAGrD9T,KAAKkU,YAAclU,KAAK2U,gBAAiB3U,KAAK8U,gBAE9C9U,KAAKuY,kBAAoB/Q,EAAG+M,mBAAmBT,EAAS,qBACxD9T,KAAKwB,MAAQgG,EAAG+M,mBAAmBT,EAAS,SAE5C9T,KAAK8T,QAAUA,GAQnB7T,EAAK0Y,uBAAuB9V,UAAUE,QAAU,WAE5C/C,KAAKwH,GAAGwQ,cAAehY,KAAK8T,SAC5B9T,KAAKgV,SAAW,KAChBhV,KAAKwH,GAAK,KAEVxH,KAAKwY,UAAY,MAOrBvY,EAAK4Y,cACL5Y,EAAK6X,aAYL7X,EAAK6Y,cAAgB,SAAS5Y,GAK1BF,KAAKE,KAAOA,EAEPD,EAAK8Y,kBAEN9Y,EAAK8Y,gBAAkB/Y,MAO3BA,KAAKoV,KAAOnV,EAAKE,eASjBH,KAAKqG,WAAanG,EAAKmG,WAQvBrG,KAAKgZ,YAAc9Y,EAAK8Y,YAQxBhZ,KAAKiZ,YAAa,EAQlBjZ,KAAKkZ,sBAAwBhZ,EAAKgZ,sBAYlClZ,KAAKmZ,kBAAoBjZ,EAAKiZ,kBAQ9BnZ,KAAK2G,MAAQzG,EAAKyG,MAQlB3G,KAAK4G,OAAS1G,EAAK0G,OAQnB5G,KAAKoZ,KAAOlZ,EAAK0Q,OAOjB5Q,KAAKqZ,iBACD7X,MAAOxB,KAAKgZ,YACZM,UAAWpZ,EAAKoZ,UAChBC,mBAAoBvZ,KAAKgZ,aAAoC,kBAArBhZ,KAAKgZ,YAC7CQ,SAAS,EACTN,sBAAuBlZ,KAAKkZ,uBAOhClZ,KAAKyZ,WAAa,GAAIxZ,GAAKmB,MAM3BpB,KAAK0Z,OAAS,GAAIzZ,GAAKmB,MASvBpB,KAAK0P,cAAgB,GAAIzP,GAAK0Z,mBAO9B3Z,KAAK6K,YAAc,GAAI5K,GAAK2Z,iBAO5B5Z,KAAKkL,YAAc,GAAIjL,GAAK4Z,iBAO5B7Z,KAAK+K,cAAgB,GAAI9K,GAAK6Z;AAO9B9Z,KAAK+Z,eAAiB,GAAI9Z,GAAK+Z,oBAO/Bha,KAAKia,iBAAmB,GAAIha,GAAKia,sBAMjCla,KAAKsH,iBAGLtH,KAAKsH,cAAcpH,KAAOF,KAAKE,KAC/BF,KAAKsH,cAAcE,GAAKxH,KAAKwH,GAC7BxH,KAAKsH,cAAc6S,UAAY,EAC/Bna,KAAKsH,cAAcoI,cAAgB1P,KAAK0P,cACxC1P,KAAKsH,cAAc4D,YAAclL,KAAKkL,YACtClL,KAAKsH,cAAcyD,cAAgB/K,KAAK+K,cACxC/K,KAAKsH,cAAc2S,iBAAmBja,KAAKia,iBAC3Cja,KAAKsH,cAAcuD,YAAc7K,KAAK6K,YACtC7K,KAAKsH,cAAcyS,eAAiB/Z,KAAK+Z,eACzC/Z,KAAKsH,cAAcf,SAAWvG,KAC9BA,KAAKsH,cAAcjB,WAAarG,KAAKqG,WAGrCrG,KAAKoa,cAGLpa,KAAKqa,iBAKTpa,EAAK6Y,cAAcjW,UAAUC,YAAc7C,EAAK6Y,cAKhD7Y,EAAK6Y,cAAcjW,UAAUuX,YAAc,WAEvC,GAAI5S,GAAKxH,KAAKoZ,KAAKtI,WAAW,QAAS9Q,KAAKqZ,kBAAoBrZ,KAAKoZ,KAAKtI,WAAW,qBAAsB9Q,KAAKqZ,gBAIhH,IAFArZ,KAAKwH,GAAKA,GAELA,EAED,KAAM,IAAIsB,OAAM,qEAGpB9I,MAAKsa,YAAc9S,EAAGyO,GAAKhW,EAAK6Y,cAAcwB,cAE9Cra,EAAK4Y,WAAW7Y,KAAKsa,aAAe9S,EAEpCvH,EAAK6X,UAAU9X,KAAKsa,aAAeta,KAGnCwH,EAAG+S,QAAQ/S,EAAGgT,YACdhT,EAAG+S,QAAQ/S,EAAGiT,WACdjT,EAAGkT,OAAOlT,EAAGmT,OAGb3a,KAAK0P,cAAcD,WAAWjI,GAC9BxH,KAAK6K,YAAY4E,WAAWjI,GAC5BxH,KAAKkL,YAAYuE,WAAWjI,GAC5BxH,KAAK+K,cAAc0E,WAAWjI,GAC9BxH,KAAKia,iBAAiBxK,WAAWjI,GACjCxH,KAAK+Z,eAAetK,WAAWjI,GAE/BxH,KAAKsH,cAAcE,GAAKxH,KAAKwH,GAG7BxH,KAAK+H,OAAO/H,KAAK2G,MAAO3G,KAAK4G,SASjC3G,EAAK6Y,cAAcjW,UAAUiE,OAAS,SAASjF,GAG3C,IAAI7B,KAAK4a,YAAT,CAKA,GAAIpT,GAAKxH,KAAKwH,EAGdA,GAAGqT,SAAS,EAAG,EAAG7a,KAAK2G,MAAO3G,KAAK4G,QAGnCY,EAAGsT,gBAAgBtT,EAAGuT,YAAa,MAE/B/a,KAAKE,KAAKiZ,oBAEV3R,EAAGwT,WAAWnZ,EAAMoZ,SAASC,EAAGrZ,EAAMoZ,SAASE,EAAGtZ,EAAMoZ,SAAStW,EAAG9C,EAAMoZ,SAASvW,GAEnF8C,EAAG4T,MAAM5T,EAAG6T,mBAGhBrb,KAAK0Z,OAAOrU,EAAIrF,KAAKE,KAAKob,OAAOC,OAAOlW,EACxCrF,KAAK0Z,OAAOpU,EAAItF,KAAKE,KAAKob,OAAOC,OAAOjW,EAExCtF,KAAKwb,oBAAoB3Z,EAAO7B,KAAKyZ,cAWzCxZ,EAAK6Y,cAAcjW,UAAU2Y,oBAAsB,SAASC,EAAehC,EAAYiC,EAAQ5V,GAE3F9F,KAAKsH,cAAc2S,iBAAiB0B,aAAa1b,EAAKkE,WAAWE,QAGjErE,KAAKsH,cAAc6S,UAAY,EAG/Bna,KAAKsH,cAAcyP,MAAQ2E,EAAS,GAAK,EAGzC1b,KAAKsH,cAAcmS,WAAaA,EAGhCzZ,KAAKsH,cAAcoS,OAAS1Z,KAAK0Z,OAGjC1Z,KAAK6K,YAAYf,MAAM9J,KAAKsH,eAG5BtH,KAAK+K,cAAcjB,MAAM9J,KAAKsH,cAAeoU,GAG7CD,EAAc/T,aAAa1H,KAAKsH,cAAexB,GAG/C9F,KAAK6K,YAAYd,OAUrB9J,EAAK6Y,cAAcjW,UAAUkF,OAAS,SAASpB,EAAOC,GAElD5G,KAAK2G,MAAQA,EAAQ3G,KAAKqG,WAC1BrG,KAAK4G,OAASA,EAAS5G,KAAKqG,WAE5BrG,KAAKoZ,KAAKzS,MAAQ3G,KAAK2G,MACvB3G,KAAKoZ,KAAKxS,OAAS5G,KAAK4G,OAEpB5G,KAAKiZ,aACLjZ,KAAKoZ,KAAKwC,MAAMjV,MAAQ3G,KAAK2G,MAAQ3G,KAAKqG,WAAa,KACvDrG,KAAKoZ,KAAKwC,MAAMhV,OAAS5G,KAAK4G,OAAS5G,KAAKqG,WAAa,MAG7DrG,KAAKwH,GAAGqT,SAAS,EAAG,EAAG7a,KAAK2G,MAAO3G,KAAK4G,QAExC5G,KAAKyZ,WAAWpU,EAAKrF,KAAK2G,MAAQ,EAAI3G,KAAKqG,WAC3CrG,KAAKyZ,WAAWnU,GAAMtF,KAAK4G,OAAS,EAAI5G,KAAKqG,YAUjDpG,EAAK6Y,cAAcjW,UAAUkV,cAAgB,SAASjQ,GAElD,IAAKA,EAAQkE,UAET,OAAO,CAGX,IAAIxE,GAAKxH,KAAKwH,EAuCd,OArCKM,GAAQkO,YAAYxO,EAAGyO,MAExBnO,EAAQkO,YAAYxO,EAAGyO,IAAMzO,EAAGqU,iBAGpCrU,EAAGsO,YAAYtO,EAAGuO,WAAYjO,EAAQkO,YAAYxO,EAAGyO,KAErDzO,EAAGqP,YAAYrP,EAAGsU,+BAAgChU,EAAQyR,oBAE1D/R,EAAGyP,WAAWzP,EAAGuO,WAAY,EAAGvO,EAAGkP,KAAMlP,EAAGkP,KAAMlP,EAAG0P,cAAepP,EAAQ8G,QAE5EpH,EAAG2P,cAAc3P,EAAGuO,WAAYvO,EAAG4P,mBAAoBtP,EAAQxB,YAAcrG,EAAK0N,WAAWC,OAASpG,EAAGoG,OAASpG,EAAGuU,SAEjHjU,EAAQkU,QAAU/b,EAAKoR,aAAavJ,EAAQnB,MAAOmB,EAAQlB,SAE3DY,EAAG2P,cAAc3P,EAAGuO,WAAYvO,EAAG6P,mBAAoBvP,EAAQxB,YAAcrG,EAAK0N,WAAWC,OAASpG,EAAGyU,qBAAuBzU,EAAG0U,wBACnI1U,EAAG2U,eAAe3U,EAAGuO,aAIrBvO,EAAG2P,cAAc3P,EAAGuO,WAAYvO,EAAG6P,mBAAoBvP,EAAQxB,YAAcrG,EAAK0N,WAAWC,OAASpG,EAAGoG,OAASpG,EAAGuU,SAGpHjU,EAAQsU,WAOT5U,EAAG2P,cAAc3P,EAAGuO,WAAYvO,EAAG8P,eAAgB9P,EAAGoP,QACtDpP,EAAG2P,cAAc3P,EAAGuO,WAAYvO,EAAG+P,eAAgB/P,EAAGoP,UANtDpP,EAAG2P,cAAc3P,EAAGuO,WAAYvO,EAAG8P,eAAgB9P,EAAG8O,eACtD9O,EAAG2P,cAAc3P,EAAGuO,WAAYvO,EAAG+P,eAAgB/P,EAAG8O,gBAQ1DxO,EAAQ+P,OAAOrQ,EAAGyO,KAAM,GAGjB,GASXhW,EAAK6Y,cAAcjW,UAAUE,QAAU,WAEnC9C,EAAK4Y,WAAW7Y,KAAKsa,aAAe,KAEpCta,KAAKyZ,WAAa,KAClBzZ,KAAK0Z,OAAS,KAEd1Z,KAAK0P,cAAc3M,UACnB/C,KAAK6K,YAAY9H,UACjB/C,KAAKkL,YAAYnI,UACjB/C,KAAK+K,cAAchI,UAEnB/C,KAAK0P,cAAgB,KACrB1P,KAAK6K,YAAc,KACnB7K,KAAKkL,YAAc,KACnBlL,KAAK+K,cAAgB,KAErB/K,KAAKwH,GAAK,KACVxH,KAAKsH,cAAgB,KAErBrH,EAAK4Q,WAAWI,OAAOjR,MAEvBC,EAAK6X,UAAU9X,KAAKsa,aAAe,KAEnCra,EAAK6Y,cAAcwB,eAQvBra,EAAK6Y,cAAcjW,UAAUwX,cAAgB,WAEzC,GAAI7S,GAAKxH,KAAKwH,EAEd,KAAKvH,EAAKoc,gBACV,CACI,GAAI1X,MACA2X,EAAQrc,EAAKkE,UAEjBQ,GAAE2X,EAAMjY,SAAkBmD,EAAG+U,IAAW/U,EAAGgV,qBAC3C7X,EAAE2X,EAAMG,MAAkBjV,EAAGkV,UAAWlV,EAAGmV,WAC3ChY,EAAE2X,EAAMlY,WAAkBoD,EAAGoV,UAAWpV,EAAGgV,qBAC3C7X,EAAE2X,EAAMO,SAAkBrV,EAAGkV,UAAWlV,EAAG+U,KAC3C5X,EAAE2X,EAAMQ,UAAkBtV,EAAG+U,IAAW/U,EAAGgV,qBAC3C7X,EAAE2X,EAAMS,SAAkBvV,EAAG+U,IAAW/U,EAAGgV,qBAC3C7X,EAAE2X,EAAMU,UAAkBxV,EAAG+U,IAAW/U,EAAGgV,qBAC3C7X,EAAE2X,EAAMW,cAAkBzV,EAAG+U,IAAW/U,EAAGgV,qBAC3C7X,EAAE2X,EAAMY,aAAkB1V,EAAG+U,IAAW/U,EAAGgV,qBAC3C7X,EAAE2X,EAAMa,aAAkB3V,EAAG+U,IAAW/U,EAAGgV,qBAC3C7X,EAAE2X,EAAMc,aAAkB5V,EAAG+U,IAAW/U,EAAGgV,qBAC3C7X,EAAE2X,EAAMe,aAAkB7V,EAAG+U,IAAW/U,EAAGgV,qBAC3C7X,EAAE2X,EAAMgB,YAAkB9V,EAAG+U,IAAW/U,EAAGgV,qBAC3C7X,EAAE2X,EAAMiB,MAAkB/V,EAAG+U,IAAW/U,EAAGgV,qBAC3C7X,EAAE2X,EAAMkB,aAAkBhW,EAAG+U,IAAW/U,EAAGgV,qBAC3C7X,EAAE2X,EAAMmB,QAAkBjW,EAAG+U,IAAW/U,EAAGgV,qBAC3C7X,EAAE2X,EAAMoB,aAAkBlW,EAAG+U,IAAW/U,EAAGgV,qBAE3Cvc,EAAKoc,gBAAkB1X,IAI/B1E,EAAK6Y,cAAcwB,YAAc,EAWjCra,EAAKia,sBAAwB,WAMzBla,KAAKqN,iBAAmB,OAG5BpN,EAAKia,sBAAsBrX,UAAUC,YAAc7C,EAAKia,sBAQxDja,EAAKia,sBAAsBrX,UAAU4M,WAAa,SAASjI,GAEvDxH,KAAKwH,GAAKA,GASdvH,EAAKia,sBAAsBrX,UAAU8Y,aAAe,SAASzX,GAEzD,GAAGlE,KAAKqN,mBAAqBnJ,EAAU,OAAO,CAE9ClE,MAAKqN,iBAAmBnJ,CAExB,IAAIyZ,GAAiB1d,EAAKoc,gBAAgBrc,KAAKqN,iBAO/C,OALIsQ,IAEA3d,KAAKwH,GAAGoW,UAAUD,EAAe,GAAIA,EAAe,KAGjD,GAQX1d,EAAKia,sBAAsBrX,UAAUE,QAAU,WAE3C/C,KAAKwH,GAAK,MAYdvH,EAAK4Z,iBAAmB,aAIxB5Z,EAAK4Z,iBAAiBhX,UAAUC,YAAc7C,EAAK4Z,iBAQnD5Z,EAAK4Z,iBAAiBhX,UAAU4M,WAAa,SAASjI,GAElDxH,KAAKwH,GAAKA,GAUdvH,EAAK4Z,iBAAiBhX,UAAUsI,SAAW,SAAS0S,EAAUvW,GAE1D,GAAIE,GAAKF,EAAcE,EAEnBqW,GAAS5J,OAEThU,EAAK6d,cAAcC,eAAeF,EAAUrW,GAGjBkC,SAA3BmU,EAASG,OAAOxW,EAAGyO,KAAqDvM,SAAhCmU,EAASG,OAAOxW,EAAGyO,IAAIjF,MAA6D,IAAvC6M,EAASG,OAAOxW,EAAGyO,IAAIjF,KAAK9N,QAKrHoE,EAAcyS,eAAekE,YAAYJ,EAAUA,EAASG,OAAOxW,EAAGyO,IAAIjF,KAAK,GAAI1J,IAUvFrH,EAAK4Z,iBAAiBhX,UAAUyI,QAAU,SAASuS,EAAUvW,GAEzD,GAAIE,GAAKxH,KAAKwH,EAEiBkC,UAA3BmU,EAASG,OAAOxW,EAAGyO,KAAqDvM,SAAhCmU,EAASG,OAAOxW,EAAGyO,IAAIjF,MAA6D,IAAvC6M,EAASG,OAAOxW,EAAGyO,IAAIjF,KAAK9N,QAKrHoE,EAAcyS,eAAemE,WAAWL,EAAUA,EAASG,OAAOxW,EAAGyO,IAAIjF,KAAK,GAAI1J,IAStFrH,EAAK4Z,iBAAiBhX,UAAUE,QAAU,WAEtC/C,KAAKwH,GAAK,MAYdvH,EAAK+Z,oBAAsB,WAEvBha,KAAKme,gBACLne,KAAKoe,SAAU,EACfpe,KAAKqe,MAAQ,GASjBpe,EAAK+Z,oBAAoBnX,UAAU4M,WAAa,SAASjI,GAErDxH,KAAKwH,GAAKA,GAWdvH,EAAK+Z,oBAAoBnX,UAAUob,YAAc,SAASK,EAAUC,EAAWjX,GAE3E,GAAIE,GAAKxH,KAAKwH,EACdxH,MAAKwe,aAAaF,EAAUC,EAAWjX,GAEP,IAA7BtH,KAAKme,aAAajb,SAEjBsE,EAAGkT,OAAOlT,EAAGiX,cACbjX,EAAG4T,MAAM5T,EAAGkX,oBACZ1e,KAAKoe,SAAU,EACfpe,KAAKqe,MAAQ,GAGjBre,KAAKme,aAAapa,KAAKwa,EAEvB,IAAII,GAAQ3e,KAAKqe,KAEjB7W,GAAGoX,WAAU,GAAO,GAAO,GAAO,GAElCpX,EAAGqX,YAAYrX,EAAGsX,OAAO,EAAE,KAC3BtX,EAAGuX,UAAUvX,EAAGwX,KAAKxX,EAAGwX,KAAKxX,EAAGyX,QAIV,IAAnBV,EAAUW,MAET1X,EAAG2X,aAAa3X,EAAG4X,aAAeb,EAAUc,QAAQnc,OAAS,EAAGsE,EAAG8X,eAAgB,GAEhFtf,KAAKoe,SAEJ5W,EAAGqX,YAAYrX,EAAG+X,MAAO,IAAOZ,EAAO,KACvCnX,EAAGuX,UAAUvX,EAAGwX,KAAKxX,EAAGwX,KAAKxX,EAAGgY,QAIhChY,EAAGqX,YAAYrX,EAAG+X,MAAMZ,EAAO,KAC/BnX,EAAGuX,UAAUvX,EAAGwX,KAAKxX,EAAGwX,KAAKxX,EAAGiY,OAIpCjY,EAAG2X,aAAa3X,EAAG4X,aAAc,EAAG5X,EAAG8X,eAAmD,GAAjCf,EAAUc,QAAQnc,OAAS,IAEjFlD,KAAKoe,QAEJ5W,EAAGqX,YAAYrX,EAAG+X,MAAM,KAAMZ,EAAM,GAAI,KAIxCnX,EAAGqX,YAAYrX,EAAG+X,MAAMZ,EAAM,EAAG,KAGrC3e,KAAKoe,SAAWpe,KAAKoe,UAIjBpe,KAAKoe,SAOL5W,EAAGqX,YAAYrX,EAAG+X,MAAMZ,EAAO,KAC/BnX,EAAGuX,UAAUvX,EAAGwX,KAAKxX,EAAGwX,KAAKxX,EAAGiY,QANhCjY,EAAGqX,YAAYrX,EAAG+X,MAAO,IAAOZ,EAAO,KACvCnX,EAAGuX,UAAUvX,EAAGwX,KAAKxX,EAAGwX,KAAKxX,EAAGgY,OAQpChY,EAAG2X,aAAa3X,EAAGkY,eAAiBnB,EAAUc,QAAQnc,OAAQsE,EAAG8X,eAAgB,GAE7Etf,KAAKoe,QAML5W,EAAGqX,YAAYrX,EAAG+X,MAAMZ,EAAM,EAAG,KAJjCnX,EAAGqX,YAAYrX,EAAG+X,MAAM,KAAMZ,EAAM,GAAI,MAQhDnX,EAAGoX,WAAU,GAAM,GAAM,GAAM,GAC/BpX,EAAGuX,UAAUvX,EAAGwX,KAAKxX,EAAGwX,KAAKxX,EAAGwX,MAEhChf,KAAKqe,SAWTpe,EAAK+Z,oBAAoBnX,UAAU2b,aAAe,SAASF,EAAUC,EAAWjX,GAG5EtH,KAAK2f,iBAAmBrB,CAExB,IAKIzS,GALArE,EAAKxH,KAAKwH,GAGViS,EAAanS,EAAcmS,WAC3BC,EAASpS,EAAcoS,MAGL,KAAnB6E,EAAUW,MAETrT,EAASvE,EAAcoI,cAAckQ,uBAErCtY,EAAcoI,cAAcC,UAAW9D,GAEvCrE,EAAGqY,UAAUhU,EAAOkL,MAAOzP,EAAcyP,OAEzCvP,EAAGmO,iBAAiB9J,EAAO0M,mBAAmB,EAAO+F,EAASvc,eAAe+d,SAAQ,IAErFtY,EAAGuY,UAAUlU,EAAO2I,iBAAkBiF,EAAWpU,GAAIoU,EAAWnU,GAChEkC,EAAGuY,UAAUlU,EAAO4I,cAAeiF,EAAOrU,GAAIqU,EAAOpU,GAErDkC,EAAGwY,WAAWnU,EAAO6M,UAAWzY,EAAK+P,QAAQsO,EAAS5S,OACtDlE,EAAGwY,WAAWnU,EAAO+M,MAAO2F,EAAU3F,OAEtCpR,EAAGqY,UAAUhU,EAAOrK,MAAO8c,EAASxc,WAAayc,EAAU/c,OAE3DgG,EAAGyY,WAAWzY,EAAG0Y,aAAc3B,EAAU7C,QAEzClU,EAAG2Y,oBAAoBtU,EAAO8I,gBAAiB,EAAGnN,EAAG4Y,OAAO,EAAO,EAAO,GAK1E5Y,EAAGyY,WAAWzY,EAAG6Y,qBAAsB9B,EAAU+B,eAKjDzU,EAASvE,EAAcoI,cAAc6Q,gBACrCjZ,EAAcoI,cAAcC,UAAW9D,GAEvCrE,EAAGmO,iBAAiB9J,EAAO0M,mBAAmB,EAAO+F,EAASvc,eAAe+d,SAAQ,IAErFtY,EAAGqY,UAAUhU,EAAOkL,MAAOzP,EAAcyP,OACzCvP,EAAGuY,UAAUlU,EAAO2I,iBAAkBiF,EAAWpU,GAAIoU,EAAWnU,GAChEkC,EAAGuY,UAAUlU,EAAO4I,cAAeiF,EAAOrU,GAAIqU,EAAOpU,GAErDkC,EAAGwY,WAAWnU,EAAO6M,UAAWzY,EAAK+P,QAAQsO,EAAS5S,OAEtDlE,EAAGqY,UAAUhU,EAAOrK,MAAO8c,EAASxc,YAEpC0F,EAAGyY,WAAWzY,EAAG0Y,aAAc3B,EAAU7C,QAEzClU,EAAG2Y,oBAAoBtU,EAAO8I,gBAAiB,EAAGnN,EAAG4Y,OAAO,EAAO,GAAO,GAC1E5Y,EAAG2Y,oBAAoBtU,EAAOiJ,eAAgB,EAAGtN,EAAG4Y,OAAO,EAAM,GAAO,GAGxE5Y,EAAGyY,WAAWzY,EAAG6Y,qBAAsB9B,EAAU+B,eAUzDrgB,EAAK+Z,oBAAoBnX,UAAUqb,WAAa,SAASI,EAAUC,EAAWjX,GAE7E,GAAIE,GAAKxH,KAAKwH,EAKX,IAJAxH,KAAKme,aAAaqC,MAElBxgB,KAAKqe,QAE2B,IAA7Bre,KAAKme,aAAajb,OAGjBsE,EAAG+S,QAAQ/S,EAAGiX,kBAIlB,CAEI,GAAIE,GAAQ3e,KAAKqe,KAEjBre,MAAKwe,aAAaF,EAAUC,EAAWjX,GAEvCE,EAAGoX,WAAU,GAAO,GAAO,GAAO,GAEZ,IAAnBL,EAAUW,MAETlf,KAAKoe,SAAWpe,KAAKoe,QAElBpe,KAAKoe,SAEJ5W,EAAGqX,YAAYrX,EAAG+X,MAAO,KAAQZ,EAAM,GAAI,KAC3CnX,EAAGuX,UAAUvX,EAAGwX,KAAKxX,EAAGwX,KAAKxX,EAAGiY,QAIhCjY,EAAGqX,YAAYrX,EAAG+X,MAAMZ,EAAM,EAAG,KACjCnX,EAAGuX,UAAUvX,EAAGwX,KAAKxX,EAAGwX,KAAKxX,EAAGgY,OAIpChY,EAAG2X,aAAa3X,EAAG4X,aAAc,EAAG5X,EAAG8X,eAAmD,GAAjCf,EAAUc,QAAQnc,OAAS,IAEpFsE,EAAGqX,YAAYrX,EAAGsX,OAAO,EAAE,KAC3BtX,EAAGuX,UAAUvX,EAAGwX,KAAKxX,EAAGwX,KAAKxX,EAAGyX,QAGhCzX,EAAG2X,aAAa3X,EAAG4X,aAAeb,EAAUc,QAAQnc,OAAS,EAAGsE,EAAG8X,eAAgB,GAE/Etf,KAAKoe,QAML5W,EAAGqX,YAAYrX,EAAG+X,MAAMZ,EAAO,KAJ/BnX,EAAGqX,YAAYrX,EAAG+X,MAAM,IAAK,EAAS,OAWtCvf,KAAKoe,SAOL5W,EAAGqX,YAAYrX,EAAG+X,MAAMZ,EAAM,EAAG,KACjCnX,EAAGuX,UAAUvX,EAAGwX,KAAKxX,EAAGwX,KAAKxX,EAAGgY,QANhChY,EAAGqX,YAAYrX,EAAG+X,MAAO,KAAQZ,EAAM,GAAI,KAC3CnX,EAAGuX,UAAUvX,EAAGwX,KAAKxX,EAAGwX,KAAKxX,EAAGiY,OAQpCjY,EAAG2X,aAAa3X,EAAGkY,eAAiBnB,EAAUc,QAAQnc,OAAQsE,EAAG8X,eAAgB,GAE7Etf,KAAKoe,QAML5W,EAAGqX,YAAYrX,EAAG+X,MAAMZ,EAAO,KAJ/BnX,EAAGqX,YAAYrX,EAAG+X,MAAM,IAAK,EAAS,MAQ9C/X,EAAGoX,WAAU,GAAM,GAAM,GAAM,GAC/BpX,EAAGuX,UAAUvX,EAAGwX,KAAKxX,EAAGwX,KAAKxX,EAAGwX,QAWxC/e,EAAK+Z,oBAAoBnX,UAAUE,QAAU,WAEzC/C,KAAKme,aAAe,KACpBne,KAAKwH,GAAK,MAYdvH,EAAK0Z,mBAAqB,WAMtB3Z,KAAKygB,UAAY,GAMjBzgB,KAAK0gB,eAML1gB,KAAK2gB,kBAEL,KAAK,GAAI1d,GAAI,EAAGA,EAAIjD,KAAKygB,UAAWxd,IAEhCjD,KAAK0gB,YAAYzd,IAAK,CAO1BjD,MAAK4gB,UAIT3gB,EAAK0Z,mBAAmB9W,UAAUC,YAAc7C,EAAK0Z,mBAQrD1Z,EAAK0Z,mBAAmB9W,UAAU4M,WAAa,SAASjI,GAEpDxH,KAAKwH,GAAKA,EAGVxH,KAAKugB,gBAAkB,GAAItgB,GAAKwY,gBAAgBjR,GAGhDxH,KAAK4f,uBAAyB,GAAI3f,GAAK0Y,uBAAuBnR,GAG9DxH,KAAK6gB,cAAgB,GAAI5gB,GAAK4T,WAAWrM,GAGzCxH,KAAK4P,WAAa,GAAI3P,GAAKgY,eAAezQ,GAG1CxH,KAAK8gB,YAAc,GAAI7gB,GAAKqY,YAAY9Q,GAExCxH,KAAK2P,UAAU3P,KAAK6gB,gBASxB5gB,EAAK0Z,mBAAmB9W,UAAUke,WAAa,SAASC,GAGpD,GAAI/d,EAEJ,KAAKA,EAAI,EAAGA,EAAIjD,KAAK2gB,gBAAgBzd,OAAQD,IAEzCjD,KAAK2gB,gBAAgB1d,IAAK,CAI9B,KAAKA,EAAI,EAAGA,EAAI+d,EAAQ9d,OAAQD,IAChC,CACI,GAAIge,GAAWD,EAAQ/d,EACvBjD,MAAK2gB,gBAAgBM,IAAY,EAGrC,GAAIzZ,GAAKxH,KAAKwH,EAEd,KAAKvE,EAAI,EAAGA,EAAIjD,KAAK0gB,YAAYxd,OAAQD,IAElCjD,KAAK0gB,YAAYzd,KAAOjD,KAAK2gB,gBAAgB1d,KAE5CjD,KAAK0gB,YAAYzd,GAAKjD,KAAK2gB,gBAAgB1d,GAExCjD,KAAK2gB,gBAAgB1d,GAEpBuE,EAAG0Z,wBAAwBje,GAI3BuE,EAAG2Z,yBAAyBle,KAY5ChD,EAAK0Z,mBAAmB9W,UAAU8M,UAAY,SAAS9D,GAEnD,MAAG7L,MAAKohB,aAAevV,EAAOvL,MAAY,GAE1CN,KAAKohB,WAAavV,EAAOvL,KAEzBN,KAAKqhB,cAAgBxV,EAErB7L,KAAKwH,GAAG6M,WAAWxI,EAAOiI,SAC1B9T,KAAK+gB,WAAWlV,EAAOqI,aAEhB,IAQXjU,EAAK0Z,mBAAmB9W,UAAUE,QAAU,WAExC/C,KAAK0gB,YAAc,KAEnB1gB,KAAK2gB,gBAAkB,KAEvB3gB,KAAKugB,gBAAgBxd,UAErB/C,KAAK4f,uBAAuB7c,UAE5B/C,KAAK6gB,cAAc9d,UAEnB/C,KAAK4P,WAAW7M,UAEhB/C,KAAK8gB,YAAY/d,UAEjB/C,KAAKwH,GAAK,MAoBdvH,EAAK2Z,iBAAmB,WAMpB5Z,KAAKshB,SAAW,EAOhBthB,KAAKuhB,KAAO,GAGZ,IAAIC,GAAuB,EAAZxhB,KAAKuhB,KAAW,EAAIvhB,KAAKshB,SAEpCG,EAAyB,EAAZzhB,KAAKuhB,IAQtBvhB,MAAK0hB,SAAW,GAAIzhB,GAAKS,YAAY8gB,GAQrCxhB,KAAK2hB,UAAY,GAAI1hB,GAAKM,aAAaP,KAAK0hB,UAQ5C1hB,KAAK4hB,OAAS,GAAI3hB,GAAKQ,YAAYT,KAAK0hB,UAQxC1hB,KAAKqf,QAAU,GAAIpf,GAAKO,YAAYihB,GAMpCzhB,KAAK6hB,eAAiB,CAEtB,KAAK,GAAI5e,GAAE,EAAGa,EAAE,EAAO2d,EAAJxe,EAAgBA,GAAK,EAAGa,GAAK,EAE5C9D,KAAKqf,QAAQpc,EAAI,GAAKa,EAAI,EAC1B9D,KAAKqf,QAAQpc,EAAI,GAAKa,EAAI,EAC1B9D,KAAKqf,QAAQpc,EAAI,GAAKa,EAAI,EAC1B9D,KAAKqf,QAAQpc,EAAI,GAAKa,EAAI,EAC1B9D,KAAKqf,QAAQpc,EAAI,GAAKa,EAAI,EAC1B9D,KAAKqf,QAAQpc,EAAI,GAAKa,EAAI,CAO9B9D,MAAK8hB,SAAU,EAMf9hB,KAAK+hB,iBAAmB,EAMxB/hB,KAAKgiB,mBAAqB,KAM1BhiB,KAAKiU,OAAQ,EAMbjU,KAAKiiB,YAMLjiB,KAAKmE,cAMLnE,KAAKkiB,WAMLliB,KAAKmiB,WAMLniB,KAAK6gB,cAAgB,GAAI5gB,GAAKmiB,gBAC1B,wBACA,8BACA,uBACA,8BACA,oBACA,kEACA,OAQRniB,EAAK2Z,iBAAiB/W,UAAU4M,WAAa,SAASjI,GAElDxH,KAAKwH,GAAKA,EAGVxH,KAAKqiB,aAAe7a,EAAG8a,eACvBtiB,KAAKsgB,YAAc9Y,EAAG8a,eAKtB9a,EAAGyY,WAAWzY,EAAG6Y,qBAAsBrgB,KAAKsgB,aAC5C9Y,EAAG+a,WAAW/a,EAAG6Y,qBAAsBrgB,KAAKqf,QAAS7X,EAAGgb,aAExDhb,EAAGyY,WAAWzY,EAAG0Y,aAAclgB,KAAKqiB,cACpC7a,EAAG+a,WAAW/a,EAAG0Y,aAAclgB,KAAK0hB,SAAUla,EAAGib,cAEjDziB,KAAKqN,iBAAmB,KAExB,IAAIxB,GAAS,GAAI5L,GAAK4T,WAAWrM,EAEjCqE,GAAOsH,YAAcnT,KAAK6gB,cAAc1N,YACxCtH,EAAOmJ,YACPnJ,EAAOsI,OAEPnU,KAAK6gB,cAAcqB,QAAQ1a,EAAGyO,IAAMpK,GAOxC5L,EAAK2Z,iBAAiB/W,UAAUiH,MAAQ,SAASxC,GAE7CtH,KAAKsH,cAAgBA,EACrBtH,KAAK6L,OAAS7L,KAAKsH,cAAcoI,cAAcmR,cAE/C7gB,KAAKqL,SAMTpL,EAAK2Z,iBAAiB/W,UAAUkH,IAAM,WAElC/J,KAAK8K,SAQT7K,EAAK2Z,iBAAiB/W,UAAUiE,OAAS,SAAS4b,EAAQ5c,GAEtD,GAAIgC,GAAU4a,EAAO5a,QAGjB7C,EAAKyd,EAAO3gB,cAEZ+D,KAEAb,EAAKa,GAIL9F,KAAK+hB,kBAAoB/hB,KAAKuhB,OAE9BvhB,KAAK8K,QACL9K,KAAKgiB,mBAAqBla,EAAQiE,YAItC,IAAI4W,GAAM7a,EAAQ8a,IAGlB,IAAKD,EAAL,CAKA,GAGIpW,GAAIC,EAAIC,EAAIC,EAHZmW,EAAKH,EAAOxa,OAAO7C,EACnByd,EAAKJ,EAAOxa,OAAO5C,CAIvB,IAAIwC,EAAQgG,KACZ,CAEI,GAAIA,GAAOhG,EAAQgG,IAEnBtB,GAAKsB,EAAKzI,EAAIwd,EAAK/U,EAAKnH,MACxB4F,EAAKC,EAAK1E,EAAQsF,KAAKzG,MAEvB+F,EAAKoB,EAAKxI,EAAIwd,EAAKhV,EAAKlH,OACxB6F,EAAKC,EAAK5E,EAAQsF,KAAKxG,WAIvB2F,GAAMzE,EAAQoE,MAAW,OAAK,EAAE2W,GAChCrW,EAAM1E,EAAQoE,MAAW,OAAK2W,EAE9BpW,EAAK3E,EAAQoE,MAAMtF,QAAU,EAAEkc,GAC/BpW,EAAK5E,EAAQoE,MAAMtF,QAAUkc,CAGjC,IAAI7f,GAA4B,EAAxBjD,KAAK+hB,iBAAuB/hB,KAAKshB,SACrCjb,EAAayB,EAAQiE,YAAY1F,WAEjC3B,EAAIO,EAAGP,EAAI2B,EACX1B,EAAIM,EAAGN,EAAI0B,EACXzB,EAAIK,EAAGL,EAAIyB,EACXxB,EAAII,EAAGJ,EAAIwB,EACXvB,EAAKG,EAAGH,GACRC,EAAKE,EAAGF,GAER6c,EAAS5hB,KAAK4hB,OACdD,EAAY3hB,KAAK2hB,SAEjB3hB,MAAKsH,cAAc4G,aAGnByT,EAAU1e,GAAKyB,EAAI8H,EAAK5H,EAAI8H,EAAK5H,EAAK,EACtC6c,EAAU1e,EAAE,GAAK4B,EAAI6H,EAAK/H,EAAI6H,EAAKzH,EAAK,EAGxC4c,EAAU1e,EAAE,GAAKyB,EAAI6H,EAAK3H,EAAI8H,EAAK5H,EAAK,EACxC6c,EAAU1e,EAAE,GAAK4B,EAAI6H,EAAK/H,EAAI4H,EAAKxH,EAAK,EAGxC4c,EAAU1e,EAAE,IAAMyB,EAAI6H,EAAK3H,EAAI6H,EAAK3H,EAAK,EACzC6c,EAAU1e,EAAE,IAAM4B,EAAI4H,EAAK9H,EAAI4H,EAAKxH,EAAK,EAGzC4c,EAAU1e,EAAE,IAAMyB,EAAI8H,EAAK5H,EAAI6H,EAAK3H,EAAK,EACzC6c,EAAU1e,EAAE,IAAM4B,EAAI4H,EAAK9H,EAAI6H,EAAKzH,EAAK,IAKzC4c,EAAU1e,GAAKyB,EAAI8H,EAAK5H,EAAI8H,EAAK5H,EACjC6c,EAAU1e,EAAE,GAAK4B,EAAI6H,EAAK/H,EAAI6H,EAAKzH,EAGnC4c,EAAU1e,EAAE,GAAKyB,EAAI6H,EAAK3H,EAAI8H,EAAK5H,EACnC6c,EAAU1e,EAAE,GAAK4B,EAAI6H,EAAK/H,EAAI4H,EAAKxH,EAGnC4c,EAAU1e,EAAE,IAAMyB,EAAI6H,EAAK3H,EAAI6H,EAAK3H,EACpC6c,EAAU1e,EAAE,IAAM4B,EAAI4H,EAAK9H,EAAI4H,EAAKxH,EAGpC4c,EAAU1e,EAAE,IAAMyB,EAAI8H,EAAK5H,EAAI6H,EAAK3H,EACpC6c,EAAU1e,EAAE,IAAM4B,EAAI4H,EAAK9H,EAAI6H,EAAKzH,GAIxC4c,EAAU1e,EAAE,GAAK0f,EAAII,GACrBpB,EAAU1e,EAAE,GAAK0f,EAAIK,GAGrBrB,EAAU1e,EAAE,GAAK0f,EAAI/V,GACrB+U,EAAU1e,EAAE,GAAK0f,EAAI9V,GAGrB8U,EAAU1e,EAAE,IAAM0f,EAAI7V,GACtB6U,EAAU1e,EAAE,IAAM0f,EAAI5V,GAGtB4U,EAAU1e,EAAE,IAAM0f,EAAI3V,GACtB2U,EAAU1e,EAAE,IAAM0f,EAAI1V,EAGtB,IAAIvB,GAAOgX,EAAOhX,IAElBkW,GAAO3e,EAAE,GAAK2e,EAAO3e,EAAE,GAAK2e,EAAO3e,EAAE,IAAM2e,EAAO3e,EAAE,KAAOyI,GAAQ,KAAc,MAAPA,KAA0B,IAAPA,IAAgB,KAA2B,IAApBgX,EAAO5gB,YAAoB,IAG/I9B,KAAKmiB,QAAQniB,KAAK+hB,oBAAsBW,IAU5CziB,EAAK2Z,iBAAiB/W,UAAUogB,mBAAqB,SAASP,GAE1D,GAAI5a,GAAU4a,EAAOQ,aAGjBljB,MAAK+hB,kBAAoB/hB,KAAKuhB,OAE9BvhB,KAAK8K,QACL9K,KAAKgiB,mBAAqBla,EAAQiE,aAIjC2W,EAAOE,OAERF,EAAOE,KAAO,GAAI3iB,GAAKkjB,WAG3B,IAAIR,GAAMD,EAAOE,KAEbhL,EAAI9P,EAAQiE,YAAYpF,MACxByc,EAAItb,EAAQiE,YAAYnF,MAQ5B8b,GAAOW,aAAahe,GAAKuS,EAAI8K,EAAOY,gBAAgBje,EACpDqd,EAAOW,aAAa/d,GAAK8d,EAAIV,EAAOY,gBAAgBhe,CAEpD,IAAIie,GAAUb,EAAOW,aAAahe,GAAKuS,EAAI8K,EAAOY,gBAAgBje,GAC9Dme,EAAUd,EAAOW,aAAa/d,GAAK8d,EAAIV,EAAOY,gBAAgBhe,GAE9Dme,EAAUf,EAAO/b,MAAQiR,GAAM8K,EAAOgB,UAAUre,EAAIqd,EAAOY,gBAAgBje,GAC3Ese,EAAUjB,EAAO9b,OAASwc,GAAMV,EAAOgB,UAAUpe,EAAIod,EAAOY,gBAAgBhe,EAEhFqd,GAAII,GAAK,EAAIQ,EACbZ,EAAIK,GAAK,EAAIQ,EAEbb,EAAI/V,GAAM,EAAI6W,EAAUF,EACxBZ,EAAI9V,GAAK,EAAI2W,EAEbb,EAAI7V,GAAM,EAAI2W,EAAUF,EACxBZ,EAAI5V,GAAM,EAAI4W,EAAUH,EAExBb,EAAI3V,GAAK,EAAIuW,EACbZ,EAAI1V,GAAM,EAAI0W,EAAUH,CAGxB,IAAI9X,GAAOgX,EAAOhX,KACdkN,GAASlN,GAAQ,KAAc,MAAPA,KAA0B,IAAPA,IAAgB,KAA2B,IAApBgX,EAAO5gB,YAAoB,IAE7F6f,EAAY3hB,KAAK2hB,UACjBC,EAAS5hB,KAAK4hB,OAEdjb,EAAQ+b,EAAO/b,MACfC,EAAS8b,EAAO9b,OAGhBic,EAAKH,EAAOxa,OAAO7C,EACnByd,EAAKJ,EAAOxa,OAAO5C,EACnBiH,EAAK5F,GAAS,EAAEkc,GAChBrW,EAAK7F,GAASkc,EAEdpW,EAAK7F,GAAU,EAAEkc,GACjBpW,EAAK9F,GAAUkc,EAEf7f,EAA4B,EAAxBjD,KAAK+hB,iBAAuB/hB,KAAKshB,SAErCjb,EAAayB,EAAQiE,YAAY1F,WAEjCpB,EAAKyd,EAAO3gB,eAEZ2C,EAAIO,EAAGP,EAAI2B,EACX1B,EAAIM,EAAGN,EAAI0B,EACXzB,EAAIK,EAAGL,EAAIyB,EACXxB,EAAII,EAAGJ,EAAIwB,EACXvB,EAAKG,EAAGH,GACRC,EAAKE,EAAGF,EAGZ4c,GAAU1e,KAAOyB,EAAI8H,EAAK5H,EAAI8H,EAAK5H,EACnC6c,EAAU1e,KAAO4B,EAAI6H,EAAK/H,EAAI6H,EAAKzH,EAEnC4c,EAAU1e,KAAO0f,EAAII,GACrBpB,EAAU1e,KAAO0f,EAAIK,GAErBpB,EAAO3e,KAAO2V,EAGd+I,EAAU1e,KAAQyB,EAAI6H,EAAK3H,EAAI8H,EAAK5H,EACpC6c,EAAU1e,KAAO4B,EAAI6H,EAAK/H,EAAI4H,EAAKxH,EAEnC4c,EAAU1e,KAAO0f,EAAI/V,GACrB+U,EAAU1e,KAAO0f,EAAI9V,GAErB+U,EAAO3e,KAAO2V,EAGd+I,EAAU1e,KAAOyB,EAAI6H,EAAK3H,EAAI6H,EAAK3H,EACnC6c,EAAU1e,KAAO4B,EAAI4H,EAAK9H,EAAI4H,EAAKxH,EAEnC4c,EAAU1e,KAAO0f,EAAI7V,GACrB6U,EAAU1e,KAAO0f,EAAI5V,GAErB6U,EAAO3e,KAAO2V,EAGd+I,EAAU1e,KAAOyB,EAAI8H,EAAK5H,EAAI6H,EAAK3H,EACnC6c,EAAU1e,KAAO4B,EAAI4H,EAAK9H,EAAI6H,EAAKzH,EAEnC4c,EAAU1e,KAAO0f,EAAI3V,GACrB2U,EAAU1e,KAAO0f,EAAI1V,GAErB2U,EAAO3e,KAAO2V,EAGd5Y,KAAKmiB,QAAQniB,KAAK+hB,oBAAsBW,GAQ5CziB,EAAK2Z,iBAAiB/W,UAAUiI,MAAQ,WAGpC,GAA8B,IAA1B9K,KAAK+hB,iBAAT,CAKA,GACIlW,GADArE,EAAKxH,KAAKwH,EAGd,IAAIxH,KAAKiU,MACT,CACIjU,KAAKiU,OAAQ,EAGbzM,EAAGqO,cAAcrO,EAAGoc,UAGpBpc,EAAGyY,WAAWzY,EAAG0Y,aAAclgB,KAAKqiB,cACpC7a,EAAGyY,WAAWzY,EAAG6Y,qBAAsBrgB,KAAKsgB,aAE5CzU,EAAS7L,KAAK6gB,cAAcqB,QAAQ1a,EAAGyO,GAGvC,IAAI4N,GAAyB,EAAhB7jB,KAAKshB,QAClB9Z,GAAG2Y,oBAAoBtU,EAAO8I,gBAAiB,EAAGnN,EAAG4Y,OAAO,EAAOyD,EAAQ,GAC3Erc,EAAG2Y,oBAAoBtU,EAAOgJ,cAAe,EAAGrN,EAAG4Y,OAAO,EAAOyD,EAAQ,GAGzErc,EAAG2Y,oBAAoBtU,EAAOiJ,eAAgB,EAAGtN,EAAG0P,eAAe,EAAM2M,EAAQ,IAIrF,GAAI7jB,KAAK+hB,iBAAgC,GAAZ/hB,KAAKuhB,KAE9B/Z,EAAGsc,cAActc,EAAG0Y,aAAc,EAAGlgB,KAAK0hB,cAG9C,CACI,GAAItI,GAAOpZ,KAAK2hB,UAAUoC,SAAS,EAA2B,EAAxB/jB,KAAK+hB,iBAAuB/hB,KAAKshB,SACvE9Z,GAAGsc,cAActc,EAAG0Y,aAAc,EAAG9G,GAezC,IAAK,GAZD4K,GAAaC,EAAeC,EAU5BxB,EATAyB,EAAY,EACZ9Y,EAAQ,EAER2W,EAAqB,KACrB3U,EAAmBrN,KAAKsH,cAAc2S,iBAAiB5M,iBACvDgU,EAAgB,KAEhB+C,GAAY,EACZC,GAAa,EAGRphB,EAAI,EAAGa,EAAI9D,KAAK+hB,iBAAsBje,EAAJb,EAAOA,IAAK,CAEnDyf,EAAS1iB,KAAKmiB,QAAQlf,GAIlB+gB,EAFAtB,EAAOQ,cAEOR,EAAOQ,cAAcnX,YAIrB2W,EAAO5a,QAAQiE,YAGjCkY,EAAgBvB,EAAOxe,UACvBggB,EAAaxB,EAAO7W,QAAU7L,KAAK6gB,cAEnCuD,EAAY/W,IAAqB4W,EACjCI,EAAahD,IAAkB6C,CAE/B,IAAII,GAAON,EAAY3X,UAOvB,IALIiY,GAAQ5B,EAAO1f,SAASE,OAAS,IAEjCohB,GAAO,IAGNtC,IAAuBgC,IAAgBM,GAASF,GAAaC,KAE9DrkB,KAAKukB,YAAYvC,EAAoBmC,EAAW9Y,GAEhDA,EAAQpI,EACRkhB,EAAY,EACZnC,EAAqBgC,EAEjBI,IAEA/W,EAAmB4W,EACnBjkB,KAAKsH,cAAc2S,iBAAiB0B,aAAatO,IAGjDgX,GACJ,CACIhD,EAAgB6C,EAEhBrY,EAASwV,EAAca,QAAQ1a,EAAGyO,IAE7BpK,IAEDA,EAAS,GAAI5L,GAAK4T,WAAWrM,GAE7BqE,EAAOsH,YAAckO,EAAclO,YACnCtH,EAAOmJ,SAAWqM,EAAcrM,SAChCnJ,EAAOsI,OAEPkN,EAAca,QAAQ1a,EAAGyO,IAAMpK,GAInC7L,KAAKsH,cAAcoI,cAAcC,UAAU9D,GAEvCA,EAAOoI,OAEPpI,EAAO4L,cAKX,IAAIgC,GAAazZ,KAAKsH,cAAcmS,UACpCjS,GAAGuY,UAAUlU,EAAO2I,iBAAkBiF,EAAWpU,EAAGoU,EAAWnU,EAG/D,IAAImP,GAAezU,KAAKsH,cAAcoS,MACtClS,GAAGuY,UAAUlU,EAAO4I,aAAcA,EAAapP,EAAGoP,EAAanP,GAMvE6e,IAGJnkB,KAAKukB,YAAYvC,EAAoBmC,EAAW9Y,GAGhDrL,KAAK+hB,iBAAmB,IAS5B9hB,EAAK2Z,iBAAiB/W,UAAU0hB,YAAc,SAASzc,EAASyZ,EAAMiD,GAElE,GAAa,IAATjD,EAAJ,CAKA,GAAI/Z,GAAKxH,KAAKwH,EAGd,IAAIM,EAAQ+P,OAAOrQ,EAAGyO,KAElB,IAAKjW,KAAKsH,cAAcf,SAASwR,cAAcjQ,GAG3C,WAMJN,GAAGsO,YAAYtO,EAAGuO,WAAYjO,EAAQkO,YAAYxO,EAAGyO,IAIzDzO,GAAG2X,aAAa3X,EAAGid,UAAkB,EAAPlD,EAAU/Z,EAAG8X,eAA6B,EAAbkF,EAAiB,GAG5ExkB,KAAKsH,cAAc6S,cAMvBla,EAAK2Z,iBAAiB/W,UAAUoI,KAAO,WAEnCjL,KAAK8K,QACL9K,KAAKiU,OAAQ,GAMjBhU,EAAK2Z,iBAAiB/W,UAAUwI,MAAQ,WAEpCrL,KAAKiU,OAAQ,GAQjBhU,EAAK2Z,iBAAiB/W,UAAUE,QAAU,WAEtC/C,KAAK0hB,SAAW,KAChB1hB,KAAKqf,QAAU,KAEfrf,KAAKwH,GAAGkd,aAAa1kB,KAAKqiB,cAC1BriB,KAAKwH,GAAGkd,aAAa1kB,KAAKsgB,aAE1BtgB,KAAKgiB,mBAAqB,KAE1BhiB,KAAKwH,GAAK,MAgBdvH,EAAKuP,qBAAuB,SAAShI,GAMjCxH,KAAKshB,SAAW,GAMhBthB,KAAK2kB,QAAU,IAMf3kB,KAAKuhB,KAAOvhB,KAAK2kB,OAGjB,IAAInD,GAAuB,EAAZxhB,KAAKuhB,KAAYvhB,KAAKshB,SAGjCG,EAA4B,EAAfzhB,KAAK2kB,OAOtB3kB,MAAK0hB,SAAW,GAAIzhB,GAAKM,aAAaihB,GAOtCxhB,KAAKqf,QAAU,GAAIpf,GAAKO,YAAYihB,GAMpCzhB,KAAKqiB,aAAe,KAMpBriB,KAAKsgB,YAAc,KAMnBtgB,KAAK6hB,eAAiB,CAEtB,KAAK,GAAI5e,GAAE,EAAGa,EAAE,EAAO2d,EAAJxe,EAAgBA,GAAK,EAAGa,GAAK,EAE5C9D,KAAKqf,QAAQpc,EAAI,GAAKa,EAAI,EAC1B9D,KAAKqf,QAAQpc,EAAI,GAAKa,EAAI,EAC1B9D,KAAKqf,QAAQpc,EAAI,GAAKa,EAAI,EAC1B9D,KAAKqf,QAAQpc,EAAI,GAAKa,EAAI,EAC1B9D,KAAKqf,QAAQpc,EAAI,GAAKa,EAAI,EAC1B9D,KAAKqf,QAAQpc,EAAI,GAAKa,EAAI,CAO9B9D,MAAK8hB,SAAU,EAMf9hB,KAAK+hB,iBAAmB,EAMxB/hB,KAAKgiB,mBAAqB,KAM1BhiB,KAAKqN,iBAAmB,EAMxBrN,KAAKsH,cAAgB,KAMrBtH,KAAK6L,OAAS,KAMd7L,KAAK8F,OAAS,KAEd9F,KAAKyP,WAAWjI,IAGpBvH,EAAKuP,qBAAqB3M,UAAUC,YAAc7C,EAAKuP,qBAQvDvP,EAAKuP,qBAAqB3M,UAAU4M,WAAa,SAASjI,GAEtDxH,KAAKwH,GAAKA,EAGVxH,KAAKqiB,aAAe7a,EAAG8a,eACvBtiB,KAAKsgB,YAAc9Y,EAAG8a,eAKtB9a,EAAGyY,WAAWzY,EAAG6Y,qBAAsBrgB,KAAKsgB,aAC5C9Y,EAAG+a,WAAW/a,EAAG6Y,qBAAsBrgB,KAAKqf,QAAS7X,EAAGgb,aAExDhb,EAAGyY,WAAWzY,EAAG0Y,aAAclgB,KAAKqiB,cACpC7a,EAAG+a,WAAW/a,EAAG0Y,aAAclgB,KAAK0hB,SAAUla,EAAGib,eAQrDxiB,EAAKuP,qBAAqB3M,UAAUiH,MAAQ,SAASe,EAAavD,GAE9DtH,KAAKsH,cAAgBA,EACrBtH,KAAK6L,OAAS7L,KAAKsH,cAAcoI,cAAcE,WAE/C5P,KAAK8F,OAAS+E,EAAY9I,eAAe+d,SAAQ,GAEjD9f,KAAKqL,SAMTpL,EAAKuP,qBAAqB3M,UAAUkH,IAAM,WAEtC/J,KAAK8K,SAOT7K,EAAKuP,qBAAqB3M,UAAUiE,OAAS,SAAS+D,GAElD,GAAI7H,GAAW6H,EAAY7H,SACvB0f,EAAS1f,EAAS,EAKtB,IAAI0f,EAAO5a,QAAQ8a,KAAnB,CAEA5iB,KAAKgiB,mBAAqBU,EAAO5a,QAAQiE,YAGtC2W,EAAOxe,YAAclE,KAAKsH,cAAc2S,iBAAiB5M,mBAExDrN,KAAK8K,QACL9K,KAAKsH,cAAc2S,iBAAiB0B,aAAa+G,EAAOxe,WAG5D,KAAI,GAAIjB,GAAE,EAAEa,EAAGd,EAASE,OAAUY,EAAFb,EAAKA,IAEjCjD,KAAK4kB,aAAa5hB,EAASC,GAG/BjD,MAAK8K,UAOT7K,EAAKuP,qBAAqB3M,UAAU+hB,aAAe,SAASlC,GAGxD,GAAIA,EAAOjhB,UAGRihB,EAAO5a,QAAQiE,cAAgB/L,KAAKgiB,oBAAuBU,EAAO5a,QAAQiE,YAAYM,aAErFrM,KAAK8K,QACL9K,KAAKgiB,mBAAqBU,EAAO5a,QAAQiE,YAErC2W,EAAO5a,QAAQ8a,OALvB,CAQA,GAAID,GAA+Bhc,EAAOC,EAAQ2F,EAAIC,EAAIC,EAAIC,EAAI/D,EAAzD+Y,EAAW1hB,KAAK0hB,QAOzB,IALAiB,EAAMD,EAAO5a,QAAQ8a,KAErBjc,EAAQ+b,EAAO5a,QAAQoE,MAAMvF,MAC7BC,EAAS8b,EAAO5a,QAAQoE,MAAMtF,OAE1B8b,EAAO5a,QAAQgG,KACnB,CAEI,GAAIA,GAAO4U,EAAO5a,QAAQgG,IAE1BtB,GAAKsB,EAAKzI,EAAIqd,EAAOxa,OAAO7C,EAAIyI,EAAKnH,MACrC4F,EAAKC,EAAKkW,EAAO5a,QAAQsF,KAAKzG,MAE9B+F,EAAKoB,EAAKxI,EAAIod,EAAOxa,OAAO5C,EAAIwI,EAAKlH,OACrC6F,EAAKC,EAAKgW,EAAO5a,QAAQsF,KAAKxG,WAI9B2F,GAAMmW,EAAO5a,QAAQoE,MAAY,OAAK,EAAEwW,EAAOxa,OAAO7C,GACtDmH,EAAMkW,EAAO5a,QAAQoE,MAAY,OAAKwW,EAAOxa,OAAO7C,EAEpDoH,EAAKiW,EAAO5a,QAAQoE,MAAMtF,QAAU,EAAE8b,EAAOxa,OAAO5C,GACpDoH,EAAKgW,EAAO5a,QAAQoE,MAAMtF,QAAU8b,EAAOxa,OAAO5C,CAGtDqD,GAAgC,EAAxB3I,KAAK+hB,iBAAuB/hB,KAAKshB,SAGzCI,EAAS/Y,KAAW6D,EACpBkV,EAAS/Y,KAAW+D,EAEpBgV,EAAS/Y,KAAW+Z,EAAOvhB,SAASkE,EACpCqc,EAAS/Y,KAAW+Z,EAAOvhB,SAASmE,EAGpCoc,EAAS/Y,KAAW+Z,EAAOrhB,MAAMgE,EACjCqc,EAAS/Y,KAAW+Z,EAAOrhB,MAAMiE,EAGjCoc,EAAS/Y,KAAW+Z,EAAOnhB,SAG3BmgB,EAAS/Y,KAAWga,EAAII,GACxBrB,EAAS/Y,KAAWga,EAAI9V,GAExB6U,EAAS/Y,KAAW+Z,EAAOlhB,MAI3BkgB,EAAS/Y,KAAW4D,EACpBmV,EAAS/Y,KAAW+D,EAEpBgV,EAAS/Y,KAAW+Z,EAAOvhB,SAASkE,EACpCqc,EAAS/Y,KAAW+Z,EAAOvhB,SAASmE,EAGpCoc,EAAS/Y,KAAW+Z,EAAOrhB,MAAMgE,EACjCqc,EAAS/Y,KAAW+Z,EAAOrhB,MAAMiE,EAGjCoc,EAAS/Y,KAAW+Z,EAAOnhB,SAG3BmgB,EAAS/Y,KAAWga,EAAI/V,GACxB8U,EAAS/Y,KAAWga,EAAI9V,GAExB6U,EAAS/Y,KAAW+Z,EAAOlhB,MAI3BkgB,EAAS/Y,KAAW4D,EACpBmV,EAAS/Y,KAAW8D,EAEpBiV,EAAS/Y,KAAW+Z,EAAOvhB,SAASkE,EACpCqc,EAAS/Y,KAAW+Z,EAAOvhB,SAASmE,EAGpCoc,EAAS/Y,KAAW+Z,EAAOrhB,MAAMgE,EACjCqc,EAAS/Y,KAAW+Z,EAAOrhB,MAAMiE,EAGjCoc,EAAS/Y,KAAW+Z,EAAOnhB,SAG3BmgB,EAAS/Y,KAAWga,EAAI7V,GACxB4U,EAAS/Y,KAAWga,EAAI5V,GAExB2U,EAAS/Y,KAAW+Z,EAAOlhB,MAM3BkgB,EAAS/Y,KAAW6D,EACpBkV,EAAS/Y,KAAW8D,EAEpBiV,EAAS/Y,KAAW+Z,EAAOvhB,SAASkE,EACpCqc,EAAS/Y,KAAW+Z,EAAOvhB,SAASmE,EAGpCoc,EAAS/Y,KAAW+Z,EAAOrhB,MAAMgE,EACjCqc,EAAS/Y,KAAW+Z,EAAOrhB,MAAMiE,EAGjCoc,EAAS/Y,KAAW+Z,EAAOnhB,SAG3BmgB,EAAS/Y,KAAWga,EAAI3V,GACxB0U,EAAS/Y,KAAWga,EAAI1V,GAExByU,EAAS/Y,KAAW+Z,EAAOlhB,MAG3BxB,KAAK+hB,mBAEF/hB,KAAK+hB,kBAAoB/hB,KAAKuhB,MAE7BvhB,KAAK8K,UAOb7K,EAAKuP,qBAAqB3M,UAAUiI,MAAQ,WAGxC,GAA4B,IAAxB9K,KAAK+hB,iBAAT,CAEA,GAAIva,GAAKxH,KAAKwH,EAUd,IANIxH,KAAKgiB,mBAAmBhM,YAAYxO,EAAGyO,KAAIjW,KAAKsH,cAAcf,SAASwR,cAAc/X,KAAKgiB,mBAAoBxa,GAElHA,EAAGsO,YAAYtO,EAAGuO,WAAY/V,KAAKgiB,mBAAmBhM,YAAYxO,EAAGyO,KAIlEjW,KAAK+hB,iBAAiC,GAAZ/hB,KAAKuhB,KAE9B/Z,EAAGsc,cAActc,EAAG0Y,aAAc,EAAGlgB,KAAK0hB,cAG9C,CACI,GAAItI,GAAOpZ,KAAK0hB,SAASqC,SAAS,EAA2B,EAAxB/jB,KAAK+hB,iBAAuB/hB,KAAKshB,SAEtE9Z,GAAGsc,cAActc,EAAG0Y,aAAc,EAAG9G,GAIzC5R,EAAG2X,aAAa3X,EAAGid,UAAmC,EAAxBzkB,KAAK+hB,iBAAsBva,EAAG8X,eAAgB,GAG5Etf,KAAK+hB,iBAAmB,EAGxB/hB,KAAKsH,cAAc6S,cAOvBla,EAAKuP,qBAAqB3M,UAAUoI,KAAO,WAEvCjL,KAAK8K,SAMT7K,EAAKuP,qBAAqB3M,UAAUwI,MAAQ,WAExC,GAAI7D,GAAKxH,KAAKwH,EAGdA,GAAGqO,cAAcrO,EAAGoc,UAGpBpc,EAAGyY,WAAWzY,EAAG0Y,aAAclgB,KAAKqiB,cACpC7a,EAAGyY,WAAWzY,EAAG6Y,qBAAsBrgB,KAAKsgB,YAG5C,IAAI7G,GAAazZ,KAAKsH,cAAcmS,UACpCjS,GAAGuY,UAAU/f,KAAK6L,OAAO2I,iBAAkBiF,EAAWpU,EAAGoU,EAAWnU,GAGpEkC,EAAGmO,iBAAiB3V,KAAK6L,OAAOqM,SAAS,EAAOlY,KAAK8F,OAGrD,IAAI+d,GAA0B,EAAhB7jB,KAAKshB,QAEnB9Z,GAAG2Y,oBAAoBngB,KAAK6L,OAAO8I,gBAAiB,EAAGnN,EAAG4Y,OAAO,EAAOyD,EAAQ,GAChFrc,EAAG2Y,oBAAoBngB,KAAK6L,OAAOsM,eAAgB,EAAG3Q,EAAG4Y,OAAO,EAAOyD,EAAQ,GAC/Erc,EAAG2Y,oBAAoBngB,KAAK6L,OAAOuM,OAAQ,EAAG5Q,EAAG4Y,OAAO,EAAOyD,EAAQ,IACvErc,EAAG2Y,oBAAoBngB,KAAK6L,OAAOwM,UAAW,EAAG7Q,EAAG4Y,OAAO,EAAOyD,EAAQ,IAC1Erc,EAAG2Y,oBAAoBngB,KAAK6L,OAAOgJ,cAAe,EAAGrN,EAAG4Y,OAAO,EAAOyD,EAAQ,IAC9Erc,EAAG2Y,oBAAoBngB,KAAK6L,OAAOiJ,eAAgB,EAAGtN,EAAG4Y,OAAO,EAAOyD,EAAQ,KAYnF5jB,EAAK6Z,mBAAqB,WAMtB9Z,KAAK6kB,eAML7kB,KAAKujB,QAAU,EAMfvjB,KAAKwjB,QAAU,GAGnBvjB,EAAK6Z,mBAAmBjX,UAAUC,YAAc7C,EAAK6Z,mBAQrD7Z,EAAK6Z,mBAAmBjX,UAAU4M,WAAa,SAASjI,GAEpDxH,KAAKwH,GAAKA,EACVxH,KAAK8kB,eAEL9kB,KAAK+kB,qBAQT9kB,EAAK6Z,mBAAmBjX,UAAUiH,MAAQ,SAASxC,EAAeoU,GAE9D1b,KAAKsH,cAAgBA,EACrBtH,KAAK6gB,cAAgBvZ,EAAcoI,cAAcmR,aAEjD,IAAIpH,GAAazZ,KAAKsH,cAAcmS,UACpCzZ,MAAK2G,MAAuB,EAAf8S,EAAWpU,EACxBrF,KAAK4G,OAAyB,GAAf6S,EAAWnU,EAC1BtF,KAAK0b,OAASA,GASlBzb,EAAK6Z,mBAAmBjX,UAAUmI,WAAa,SAASga,GAEpD,GAAIxd,GAAKxH,KAAKwH,GAEViS,EAAazZ,KAAKsH,cAAcmS,WAChCC,EAAS1Z,KAAKsH,cAAcoS,MAEhCsL,GAAYC,YAAcD,EAAY/gB,OAAO3B,YAAc0iB,EAAY/gB,OAAO4B,YAG9Emf,EAAYE,sBAAwBllB,KAAKsH,cAAcyS,eACvD/Z,KAAKsH,cAAcyS,eAAiB,GAAI9Z,GAAK+Z,oBAC7Cha,KAAKsH,cAAcyS,eAAetK,WAAWjI,GAC7CA,EAAG+S,QAAQ/S,EAAGiX,cAKdze,KAAK6kB,YAAY9gB,KAAKihB,EAEtB,IAAIG,GAASH,EAAYnhB,aAAa,EAEtC7D,MAAKujB,SAAWyB,EAAYC,YAAY5f,EACxCrF,KAAKwjB,SAAWwB,EAAYC,YAAY3f,CAExC,IAAIwC,GAAU9H,KAAK8kB,YAAYtE,KAC3B1Y,GAMAA,EAAQC,OAAO/H,KAAK2G,MAAQ3G,KAAKsH,cAAcjB,WAAYrG,KAAK4G,OAAS5G,KAAKsH,cAAcjB,YAJ5FyB,EAAU,GAAI7H,GAAKmlB,cAAcplB,KAAKwH,GAAIxH,KAAK2G,MAAQ3G,KAAKsH,cAAcjB,WAAYrG,KAAK4G,OAAS5G,KAAKsH,cAAcjB,YAO3HmB,EAAGsO,YAAYtO,EAAGuO,WAAajO,EAAQA,QAEvC,IAAIxF,GAAa0iB,EAAYC,YAEzBI,EAAUF,EAAOE,OACrB/iB,GAAW+C,GAAKggB,EAChB/iB,EAAWgD,GAAK+f,EAChB/iB,EAAWqE,OAAmB,EAAV0e,EACpB/iB,EAAWsE,QAAoB,EAAVye,EAGlB/iB,EAAW+C,EAAI,IAAE/C,EAAW+C,EAAI,GAChC/C,EAAWqE,MAAQ3G,KAAK2G,QAAMrE,EAAWqE,MAAQ3G,KAAK2G,OACtDrE,EAAWgD,EAAI,IAAEhD,EAAWgD,EAAI,GAChChD,EAAWsE,OAAS5G,KAAK4G,SAAOtE,EAAWsE,OAAS5G,KAAK4G,QAG5DY,EAAGsT,gBAAgBtT,EAAGuT,YAAajT,EAAQwd,aAG3C9d,EAAGqT,SAAS,EAAG,EAAGvY,EAAWqE,MAAQ3G,KAAKsH,cAAcjB,WAAY/D,EAAWsE,OAAS5G,KAAKsH,cAAcjB,YAE3GoT,EAAWpU,EAAI/C,EAAWqE,MAAM,EAChC8S,EAAWnU,GAAKhD,EAAWsE,OAAO,EAElC8S,EAAOrU,GAAK/C,EAAW+C,EACvBqU,EAAOpU,GAAKhD,EAAWgD,EAQvBkC,EAAGoX,WAAU,GAAM,GAAM,GAAM,GAC/BpX,EAAGwT,WAAW,EAAE,EAAE,EAAG,GACrBxT,EAAG4T,MAAM5T,EAAG6T,kBAEZ2J,EAAYO,iBAAmBzd,GASnC7H,EAAK6Z,mBAAmBjX,UAAU0I,UAAY,WAE1C,GAAI/D,GAAKxH,KAAKwH,GACVwd,EAAchlB,KAAK6kB,YAAYrE,MAC/Ble,EAAa0iB,EAAYC,YACzBnd,EAAUkd,EAAYO,iBACtB9L,EAAazZ,KAAKsH,cAAcmS,WAChCC,EAAS1Z,KAAKsH,cAAcoS,MAEhC,IAAGsL,EAAYnhB,aAAaX,OAAS,EACrC,CACIsE,EAAGqT,SAAS,EAAG,EAAGvY,EAAWqE,MAAQ3G,KAAKsH,cAAcjB,WAAY/D,EAAWsE,OAAS5G,KAAKsH,cAAcjB,YAE3GmB,EAAGyY,WAAWzY,EAAG0Y,aAAclgB,KAAKqiB,cAEpCriB,KAAKwlB,YAAY,GAAK,EACtBxlB,KAAKwlB,YAAY,GAAKljB,EAAWsE,OAEjC5G,KAAKwlB,YAAY,GAAKljB,EAAWqE,MACjC3G,KAAKwlB,YAAY,GAAKljB,EAAWsE,OAEjC5G,KAAKwlB,YAAY,GAAK,EACtBxlB,KAAKwlB,YAAY,GAAK,EAEtBxlB,KAAKwlB,YAAY,GAAKljB,EAAWqE,MACjC3G,KAAKwlB,YAAY,GAAK,EAEtBhe,EAAGsc,cAActc,EAAG0Y,aAAc,EAAGlgB,KAAKwlB,aAE1Che,EAAGyY,WAAWzY,EAAG0Y,aAAclgB,KAAKylB,UAEpCzlB,KAAK0lB,QAAQ,GAAKpjB,EAAWqE,MAAM3G,KAAK2G,MACxC3G,KAAK0lB,QAAQ,GAAKpjB,EAAWsE,OAAO5G,KAAK4G,OACzC5G,KAAK0lB,QAAQ,GAAKpjB,EAAWqE,MAAM3G,KAAK2G,MACxC3G,KAAK0lB,QAAQ,GAAKpjB,EAAWsE,OAAO5G,KAAK4G,OAEzCY,EAAGsc,cAActc,EAAG0Y,aAAc,EAAGlgB,KAAK0lB,QAE1C,IAAIC,GAAe7d,EACf8d,EAAgB5lB,KAAK8kB,YAAYtE,KACjCoF,KAAcA,EAAgB,GAAI3lB,GAAKmlB,cAAcplB,KAAKwH,GAAIxH,KAAK2G,MAAQ3G,KAAKsH,cAAcjB,WAAYrG,KAAK4G,OAAS5G,KAAKsH,cAAcjB,aAC/Iuf,EAAc7d,OAAO/H,KAAK2G,MAAQ3G,KAAKsH,cAAcjB,WAAYrG,KAAK4G,OAAS5G,KAAKsH,cAAcjB,YAGlGmB,EAAGsT,gBAAgBtT,EAAGuT,YAAa6K,EAAcN,aACjD9d,EAAG4T,MAAM5T,EAAG6T,kBAEZ7T,EAAG+S,QAAQ/S,EAAGmT,MAEd,KAAK,GAAI1X,GAAI,EAAGA,EAAI+hB,EAAYnhB,aAAaX,OAAO,EAAGD,IACvD,CACI,GAAI4iB,GAAab,EAAYnhB,aAAaZ,EAE1CuE,GAAGsT,gBAAgBtT,EAAGuT,YAAa6K,EAAcN,aAGjD9d,EAAGqO,cAAcrO,EAAGoc,UACpBpc,EAAGsO,YAAYtO,EAAGuO,WAAY4P,EAAa7d,SAI3C9H,KAAK8lB,gBAAgBD,EAAYvjB,EAAYA,EAAWqE,MAAOrE,EAAWsE,OAG1E,IAAI+F,GAAOgZ,CACXA,GAAeC,EACfA,EAAgBjZ,EAGpBnF,EAAGkT,OAAOlT,EAAGmT,OAEb7S,EAAU6d,EACV3lB,KAAK8kB,YAAY/gB,KAAK6hB,GAG1B,GAAIT,GAASH,EAAYnhB,aAAamhB,EAAYnhB,aAAaX,OAAO,EAEtElD,MAAKujB,SAAWjhB,EAAW+C,EAC3BrF,KAAKwjB,SAAWlhB,EAAWgD,CAE3B,IAAIygB,GAAQ/lB,KAAK2G,MACbqf,EAAQhmB,KAAK4G,OAEb2c,EAAU,EACVC,EAAU,EAEV9H,EAAS1b,KAAK0b,MAGlB,IAA+B,IAA5B1b,KAAK6kB,YAAY3hB,OAEhBsE,EAAGoX,WAAU,GAAM,GAAM,GAAM,OAGnC,CACI,GAAIqH,GAAgBjmB,KAAK6kB,YAAY7kB,KAAK6kB,YAAY3hB,OAAO,EAC7DZ,GAAa2jB,EAAchB,YAE3Bc,EAAQzjB,EAAWqE,MACnBqf,EAAQ1jB,EAAWsE,OAEnB2c,EAAUjhB,EAAW+C,EACrBme,EAAUlhB,EAAWgD,EAErBoW,EAAUuK,EAAcV,iBAAiBD,YAI7C7L,EAAWpU,EAAI0gB,EAAM,EACrBtM,EAAWnU,GAAK0gB,EAAM,EAEtBtM,EAAOrU,EAAIke,EACX7J,EAAOpU,EAAIke,EAEXlhB,EAAa0iB,EAAYC,WAEzB,IAAI5f,GAAI/C,EAAW+C,EAAEke,EACjBje,EAAIhD,EAAWgD,EAAEke,CAIrBhc,GAAGyY,WAAWzY,EAAG0Y,aAAclgB,KAAKqiB,cAEpCriB,KAAKwlB,YAAY,GAAKngB,EACtBrF,KAAKwlB,YAAY,GAAKlgB,EAAIhD,EAAWsE,OAErC5G,KAAKwlB,YAAY,GAAKngB,EAAI/C,EAAWqE,MACrC3G,KAAKwlB,YAAY,GAAKlgB,EAAIhD,EAAWsE,OAErC5G,KAAKwlB,YAAY,GAAKngB,EACtBrF,KAAKwlB,YAAY,GAAKlgB,EAEtBtF,KAAKwlB,YAAY,GAAKngB,EAAI/C,EAAWqE,MACrC3G,KAAKwlB,YAAY,GAAKlgB,EAEtBkC,EAAGsc,cAActc,EAAG0Y,aAAc,EAAGlgB,KAAKwlB,aAE1Che,EAAGyY,WAAWzY,EAAG0Y,aAAclgB,KAAKylB,UAEpCzlB,KAAK0lB,QAAQ,GAAKpjB,EAAWqE,MAAM3G,KAAK2G,MACxC3G,KAAK0lB,QAAQ,GAAKpjB,EAAWsE,OAAO5G,KAAK4G,OACzC5G,KAAK0lB,QAAQ,GAAKpjB,EAAWqE,MAAM3G,KAAK2G,MACxC3G,KAAK0lB,QAAQ,GAAKpjB,EAAWsE,OAAO5G,KAAK4G,OAEzCY,EAAGsc,cAActc,EAAG0Y,aAAc,EAAGlgB,KAAK0lB,SAE1Cle,EAAGqT,SAAS,EAAG,EAAGkL,EAAQ/lB,KAAKsH,cAAcjB,WAAY2f,EAAQhmB,KAAKsH,cAAcjB,YAGpFmB,EAAGsT,gBAAgBtT,EAAGuT,YAAaW,GAMnClU,EAAGqO,cAAcrO,EAAGoc,UACpBpc,EAAGsO,YAAYtO,EAAGuO,WAAYjO,EAAQA,SAGlC9H,KAAKsH,cAAcyS,gBACnB/Z,KAAKsH,cAAcyS,eAAehX,UAEtC/C,KAAKsH,cAAcyS,eAAiBiL,EAAYE,sBAChDF,EAAYE,sBAAwB,KAChCllB,KAAKsH,cAAcyS,eAAesE,MAAQ,EAC1C7W,EAAGkT,OAAOlT,EAAGiX,cAGbjX,EAAG+S,QAAQ/S,EAAGiX,cAKlBze,KAAK8lB,gBAAgBX,EAAQ7iB,EAAYyjB,EAAOC,GAQhDhmB,KAAK8kB,YAAY/gB,KAAK+D,GACtBkd,EAAYO,iBAAmB,MAanCtlB,EAAK6Z,mBAAmBjX,UAAUijB,gBAAkB,SAASX,EAAQ7iB,EAAYqE,EAAOC,GAGpF,GAAIY,GAAKxH,KAAKwH,GACVqE,EAASsZ,EAAOjD,QAAQ1a,EAAGyO,GAE3BpK,KAEAA,EAAS,GAAI5L,GAAK4T,WAAWrM,GAE7BqE,EAAOsH,YAAcgS,EAAOhS,YAC5BtH,EAAOmJ,SAAWmQ,EAAOnQ,SACzBnJ,EAAOsI,OAEPgR,EAAOjD,QAAQ1a,EAAGyO,IAAMpK,GAI5B7L,KAAKsH,cAAcoI,cAAcC,UAAU9D,GAI3CrE,EAAGuY,UAAUlU,EAAO2I,iBAAkB7N,EAAM,GAAIC,EAAO,GACvDY,EAAGuY,UAAUlU,EAAO4I,aAAc,EAAE,GAEjC0Q,EAAOnQ,SAASN,aAEfyQ,EAAOnQ,SAASN,WAAWjR,MAAM,GAAKzD,KAAK2G,MAC3Cwe,EAAOnQ,SAASN,WAAWjR,MAAM,GAAKzD,KAAK4G,OAC3Cue,EAAOnQ,SAASN,WAAWjR,MAAM,GAAKzD,KAAKwlB,YAAY,GACvDL,EAAOnQ,SAASN,WAAWjR,MAAM,GAAKzD,KAAKwlB,YAAY,IAG3D3Z,EAAO4L,eAEPjQ,EAAGyY,WAAWzY,EAAG0Y,aAAclgB,KAAKqiB,cACpC7a,EAAG2Y,oBAAoBtU,EAAO8I,gBAAiB,EAAGnN,EAAG4Y,OAAO,EAAO,EAAG,GAEtE5Y,EAAGyY,WAAWzY,EAAG0Y,aAAclgB,KAAKylB,UACpCje,EAAG2Y,oBAAoBtU,EAAOgJ,cAAe,EAAGrN,EAAG4Y,OAAO,EAAO,EAAG,GAEpE5Y,EAAGyY,WAAWzY,EAAG0Y,aAAclgB,KAAKkmB,aACpC1e,EAAG2Y,oBAAoBtU,EAAOiJ,eAAgB,EAAGtN,EAAG4Y,OAAO,EAAO,EAAG,GAErE5Y,EAAGyY,WAAWzY,EAAG6Y,qBAAsBrgB,KAAKsgB,aAG5C9Y,EAAG2X,aAAa3X,EAAGid,UAAW,EAAGjd,EAAG8X,eAAgB,GAEpDtf,KAAKsH,cAAc6S,aAQvBla,EAAK6Z,mBAAmBjX,UAAUkiB,kBAAoB,WAElD,GAAIvd,GAAKxH,KAAKwH,EAGdxH,MAAKqiB,aAAe7a,EAAG8a,eACvBtiB,KAAKylB,SAAWje,EAAG8a,eACnBtiB,KAAKkmB,YAAc1e,EAAG8a,eACtBtiB,KAAKsgB,YAAc9Y,EAAG8a,eAItBtiB,KAAKwlB,YAAc,GAAIvlB,GAAKM,cAAc,EAAK,EACV,EAAK,EACL,EAAK,EACL,EAAK,IAE1CiH,EAAGyY,WAAWzY,EAAG0Y,aAAclgB,KAAKqiB,cACpC7a,EAAG+a,WAAW/a,EAAG0Y,aAAclgB,KAAKwlB,YAAahe,EAAGgb,aAGpDxiB,KAAK0lB,QAAU,GAAIzlB,GAAKM,cAAc,EAAK,EACV,EAAK,EACL,EAAK,EACL,EAAK,IAEtCiH,EAAGyY,WAAWzY,EAAG0Y,aAAclgB,KAAKylB,UACpCje,EAAG+a,WAAW/a,EAAG0Y,aAAclgB,KAAK0lB,QAASle,EAAGgb,aAEhDxiB,KAAKmmB,WAAa,GAAIlmB,GAAKM,cAAc,EAAK,SACV,EAAK,SACL,EAAK,SACL,EAAK,WAEzCiH,EAAGyY,WAAWzY,EAAG0Y,aAAclgB,KAAKkmB,aACpC1e,EAAG+a,WAAW/a,EAAG0Y,aAAclgB,KAAKmmB,WAAY3e,EAAGgb,aAGnDhb,EAAGyY,WAAWzY,EAAG6Y,qBAAsBrgB,KAAKsgB,aAC5C9Y,EAAG+a,WAAW/a,EAAG6Y,qBAAsB,GAAI7f,cAAa,EAAG,EAAG,EAAG,EAAG,EAAG,IAAKgH,EAAGgb,cASnFviB,EAAK6Z,mBAAmBjX,UAAUE,QAAU,WAExC,GAAIyE,GAAKxH,KAAKwH,EAEdxH,MAAK6kB,YAAc,KAEnB7kB,KAAKujB,QAAU,EACfvjB,KAAKwjB,QAAU,CAGf,KAAK,GAAIvgB,GAAI,EAAGA,EAAIjD,KAAK8kB,YAAY5hB,OAAQD,IACzCjD,KAAK8kB,YAAY7hB,GAAGF,SAGxB/C,MAAK8kB,YAAc,KAGnBtd,EAAGkd,aAAa1kB,KAAKqiB,cACrB7a,EAAGkd,aAAa1kB,KAAKylB,UACrBje,EAAGkd,aAAa1kB,KAAKkmB,aACrB1e,EAAGkd,aAAa1kB,KAAKsgB,cAezBrgB,EAAKmlB,cAAgB,SAAS5d,EAAIb,EAAOC,EAAQN,GAM7CtG,KAAKwH,GAAKA,EAQVxH,KAAKslB,YAAc9d,EAAG4e,oBAMtBpmB,KAAK8H,QAAUN,EAAGqU,gBAMlBvV,EAAYA,GAAarG,EAAK0N,WAAW0Y,QAEzC7e,EAAGsO,YAAYtO,EAAGuO,WAAa/V,KAAK8H,SACpCN,EAAG2P,cAAc3P,EAAGuO,WAAYvO,EAAG4P,mBAAoB9Q,IAAcrG,EAAK0N,WAAWC,OAASpG,EAAGoG,OAASpG,EAAGuU,SAC7GvU,EAAG2P,cAAc3P,EAAGuO,WAAYvO,EAAG6P,mBAAoB/Q,IAAcrG,EAAK0N,WAAWC,OAASpG,EAAGoG,OAASpG,EAAGuU,SAC7GvU,EAAG2P,cAAc3P,EAAGuO,WAAYvO,EAAG8P,eAAgB9P,EAAG8O,eACtD9O,EAAG2P,cAAc3P,EAAGuO,WAAYvO,EAAG+P,eAAgB/P,EAAG8O,eACtD9O,EAAGsT,gBAAgBtT,EAAGuT,YAAa/a,KAAKslB,aAExC9d,EAAGsT,gBAAgBtT,EAAGuT,YAAa/a,KAAKslB,aACxC9d,EAAG8e,qBAAqB9e,EAAGuT,YAAavT,EAAG+e,kBAAmB/e,EAAGuO,WAAY/V,KAAK8H,QAAS,GAG3F9H,KAAKwmB,aAAehf,EAAGif,qBACvBjf,EAAGkf,iBAAiBlf,EAAGmf,aAAc3mB,KAAKwmB,cAC1Chf,EAAGof,wBAAwBpf,EAAGuT,YAAavT,EAAGqf,yBAA0Brf,EAAGmf,aAAc3mB,KAAKwmB,cAE9FxmB,KAAK+H,OAAOpB,EAAOC,IAGvB3G,EAAKmlB,cAAcviB,UAAUC,YAAc7C,EAAKmlB,cAOhDnlB,EAAKmlB,cAAcviB,UAAUuY,MAAQ,WAEjC,GAAI5T,GAAKxH,KAAKwH,EAEdA,GAAGwT,WAAW,EAAE,EAAE,EAAG,GACrBxT,EAAG4T,MAAM5T,EAAG6T,mBAUhBpb,EAAKmlB,cAAcviB,UAAUkF,OAAS,SAASpB,EAAOC,GAElD,GAAG5G,KAAK2G,QAAUA,GAAS3G,KAAK4G,SAAWA,EAA3C,CAEA5G,KAAK2G,MAAQA,EACb3G,KAAK4G,OAASA,CAEd,IAAIY,GAAKxH,KAAKwH,EAEdA,GAAGsO,YAAYtO,EAAGuO,WAAa/V,KAAK8H,SACpCN,EAAGyP,WAAWzP,EAAGuO,WAAY,EAAGvO,EAAGkP,KAAO/P,EAAQC,EAAS,EAAGY,EAAGkP,KAAMlP,EAAG0P,cAAe,MAEzF1P,EAAGkf,iBAAiBlf,EAAGmf,aAAc3mB,KAAKwmB,cAC1Chf,EAAGsf,oBAAoBtf,EAAGmf,aAAcnf,EAAGuf,cAAepgB,EAAQC,KAQtE3G,EAAKmlB,cAAcviB,UAAUE,QAAU,WAEnC,GAAIyE,GAAKxH,KAAKwH,EACdA,GAAGwf,kBAAmBhnB,KAAKslB,aAC3B9d,EAAGyf,cAAejnB,KAAK8H,SAEvB9H,KAAKslB,YAAc,KACnBtlB,KAAK8H,QAAU,MAenB7H,EAAKinB,aAAe,SAASvgB,EAAOC,GAQhC5G,KAAK2G,MAAQA,EAQb3G,KAAK4G,OAASA,EAQd5G,KAAK4Q,OAAS3Q,EAAK4Q,WAAWxI,OAAOrI,KAAMA,KAAK2G,MAAO3G,KAAK4G,QAQ5D5G,KAAKsN,QAAUtN,KAAK4Q,OAAOE,WAAW,MAEtC9Q,KAAK4Q,OAAOjK,MAAQA,EACpB3G,KAAK4Q,OAAOhK,OAASA,GAGzB3G,EAAKinB,aAAarkB,UAAUC,YAAc7C,EAAKinB,aAQ/CjnB,EAAKinB,aAAarkB,UAAUuY,MAAQ,WAEhCpb,KAAKsN,QAAQa,aAAa,EAAG,EAAG,EAAG,EAAG,EAAG,GACzCnO,KAAKsN,QAAQ6Z,UAAU,EAAE,EAAGnnB,KAAK2G,MAAO3G,KAAK4G,SAUjD3G,EAAKinB,aAAarkB,UAAUkF,OAAS,SAASpB,EAAOC,GAEjD5G,KAAK2G,MAAQ3G,KAAK4Q,OAAOjK,MAAQA,EACjC3G,KAAK4G,OAAS5G,KAAK4Q,OAAOhK,OAASA,GAQvC3G,EAAKinB,aAAarkB,UAAUE,QAAU,WAElC9C,EAAK4Q,WAAWI,OAAOjR,OAa3BC,EAAKmnB,kBAAoB,aAIzBnnB,EAAKmnB,kBAAkBvkB,UAAUC,YAAc7C,EAAKmnB,kBASpDnnB,EAAKmnB,kBAAkBvkB,UAAUsI,SAAW,SAAS0S,EAAUvW,GAE9D,GAAIgG,GAAUhG,EAAcgG,OAEzBA,GAAQ+Z,MAER,IAAIC,GAAazJ,EAASrc,MACtBqO,EAAYgO,EAAS9b,eAErBsE,EAAaiB,EAAcjB,UAE/BiH,GAAQa,aAAa0B,EAAUnL,EAAI2B,EACdwJ,EAAUlL,EAAI0B,EACdwJ,EAAUjL,EAAIyB,EACdwJ,EAAUhL,EAAIwB,EACdwJ,EAAU/K,GAAKuB,EACfwJ,EAAU9K,GAAKsB,GAEpCpG,EAAKsnB,eAAeC,mBAAmB3J,EAAUvQ,GAEjDA,EAAQma,OAER5J,EAAS/b,WAAawlB,GAS1BrnB,EAAKmnB,kBAAkBvkB,UAAUyI,QAAU,SAAShE,GAEhDA,EAAcgG,QAAQoa,WAa1BznB,EAAKsO,aAAe,aAWpBtO,EAAKsO,aAAaC,iBAAmB,SAASkU,EAAQ9J,GAElD,GAAIhI,GAAS8R,EAAO9W,eAAiB3L,EAAK4Q,WAAWxI,OAAOrI,KAI5D,OAFAC,GAAKsO,aAAaoZ,WAAWjF,EAAO5a,QAAS8Q,EAAOhI,GAE7CA,GAYX3Q,EAAKsO,aAAaqZ,iBAAmB,SAAS9f,EAAS8Q,EAAOhI,GAE1D,GAAItD,GAAUsD,EAAOE,WAAW,MAE5B1D,EAAOtF,EAAQsF,MAEfwD,EAAOjK,QAAUyG,EAAKzG,OAASiK,EAAOhK,SAAWwG,EAAKxG,UAEtDgK,EAAOjK,MAAQyG,EAAKzG,MACpBiK,EAAOhK,OAASwG,EAAKxG,QAGzB0G,EAAQ6Z,UAAU,EAAG,EAAG/Z,EAAKzG,MAAOyG,EAAKxG,QAEzC0G,EAAQua,UAAY,KAAO,SAAmB,EAARjP,GAAWkP,SAAS,KAAKC,OAAO,IACtEza,EAAQ0a,SAAS,EAAG,EAAG5a,EAAKzG,MAAOyG,EAAKxG,QAExC0G,EAAQC,yBAA2B,WACnCD,EAAQmB,UAAU3G,EAAQiE,YAAY6C,OAAQxB,EAAK/H,EAAG+H,EAAK9H,EAAG8H,EAAKzG,MAAOyG,EAAKxG,OAAQ,EAAG,EAAGwG,EAAKzG,MAAOyG,EAAKxG,QAE9G0G,EAAQC,yBAA2B,mBACnCD,EAAQmB,UAAU3G,EAAQiE,YAAY6C,OAAQxB,EAAK/H,EAAG+H,EAAK9H,EAAG8H,EAAKzG,MAAOyG,EAAKxG,OAAQ,EAAG,EAAGwG,EAAKzG,MAAOyG,EAAKxG,SAalH3G,EAAKsO,aAAa0Z,iBAAmB,SAASngB,EAAS8Q,EAAOhI,GAE1D,GAAItD,GAAUsD,EAAOE,WAAW,MAE5B1D,EAAOtF,EAAQsF,IAEnBwD,GAAOjK,MAAQyG,EAAKzG,MACpBiK,EAAOhK,OAASwG,EAAKxG,OAErB0G,EAAQC,yBAA2B,OAEnCD,EAAQmB,UAAU3G,EAAQiE,YAAY6C,OAAQxB,EAAK/H,EAAG+H,EAAK9H,EAAG8H,EAAKzG,MAAOyG,EAAKxG,OAAQ,EAAG,EAAGwG,EAAKzG,MAAOyG,EAAKxG;AAS9G,IAAK,GAPDshB,GAAYjoB,EAAK+P,QAAQ4I,GACzBsC,EAAIgN,EAAU,GAAI/M,EAAI+M,EAAU,GAAIvjB,EAAIujB,EAAU,GAElDC,EAAY7a,EAAQyD,aAAa,EAAG,EAAG3D,EAAKzG,MAAOyG,EAAKxG,QAExDwhB,EAASD,EAAUnX,KAEd/N,EAAI,EAAGA,EAAImlB,EAAOllB,OAAQD,GAAK,EAMpC,GAJAmlB,EAAOnlB,EAAI,IAAMiY,EACjBkN,EAAOnlB,EAAI,IAAMkY,EACjBiN,EAAOnlB,EAAI,IAAM0B,GAEZ1E,EAAKsO,aAAa8Z,eACvB,CACI,GAAI7mB,GAAQ4mB,EAAOnlB,EAAI,EAEvBmlB,GAAOnlB,EAAI,IAAM,IAAMzB,EACvB4mB,EAAOnlB,EAAI,IAAM,IAAMzB,EACvB4mB,EAAOnlB,EAAI,IAAM,IAAMzB,EAI/B8L,EAAQgb,aAAaH,EAAW,EAAG,IASvCloB,EAAKsO,aAAaga,kBAAoB,WAElC,GAAI3X,GAAS,GAAI3Q,GAAKinB,aAAa,EAAG,EAEtCtW,GAAOtD,QAAQua,UAAY,wBAG3BjX,EAAOtD,QAAQ0a,SAAS,EAAG,EAAG,EAAG,EAGjC,IAAIQ,GAAK5X,EAAOtD,QAAQyD,aAAa,EAAG,EAAG,EAAG,EAE9C,IAAW,OAAPyX,EAEA,OAAO,CAIX5X,GAAOtD,QAAQgb,aAAaE,EAAI,EAAG,EAGnC,IAAIC,GAAK7X,EAAOtD,QAAQyD,aAAa,EAAG,EAAG,EAAG,EAG9C,OAAQ0X,GAAGzX,KAAK,KAAOwX,EAAGxX,KAAK,IAAMyX,EAAGzX,KAAK,KAAOwX,EAAGxX,KAAK,IAAMyX,EAAGzX,KAAK,KAAOwX,EAAGxX,KAAK,IAAMyX,EAAGzX,KAAK,KAAOwX,EAAGxX,KAAK,IAW1H/Q,EAAKsO,aAAa8Z,eAAiBpoB,EAAKsO,aAAaga,oBASrDtoB,EAAKsO,aAAama,eAAiBzoB,EAAKmQ,4BAQxCnQ,EAAKsO,aAAaoZ,WAAa1nB,EAAKsO,aAAama,eAAiBzoB,EAAKsO,aAAaqZ,iBAAoB3nB,EAAKsO,aAAa0Z,iBAc1HhoB,EAAK0oB,eAAiB,SAAUzoB,GAK5BF,KAAKE,KAAOA,EAEPD,EAAK8Y,kBAEN9Y,EAAK8Y,gBAAkB/Y,MAS3BA,KAAKoV,KAAOnV,EAAKG,gBAQjBJ,KAAKqG,WAAanG,EAAKmG,WAYvBrG,KAAKmZ,kBAAoBjZ,EAAKiZ,kBAQ9BnZ,KAAKgZ,YAAc9Y,EAAK8Y,YAQxBhZ,KAAKiZ,YAAa,EASlBjZ,KAAK2G,MAAQzG,EAAKyG,MAAQ3G,KAAKqG,WAS/BrG,KAAK4G,OAAS1G,EAAK0G,OAAS5G,KAAKqG,WAQjCrG,KAAKoZ,KAAOlZ,EAAK0Q,OAOjB5Q,KAAKsN,QAAUtN,KAAKoZ,KAAKtI,WAAW,MAAQtP,MAAOxB,KAAKgZ,cAQxDhZ,KAAK4oB,SAAU,EAQf5oB,KAAKqe,MAAQ,EAObre,KAAKkL,YAAc,GAAIjL,GAAKmnB,kBAO5BpnB,KAAKsH,eACDgG,QAAStN,KAAKsN,QACdpC,YAAalL,KAAKkL,YAClB5E,UAAW,KACXoH,eAAgBmb,OAAOC,OAAOC,mBAAmB/oB,KAAKsN,SAMtDY,aAAa,GAGjBlO,KAAKqa,gBAELra,KAAK+H,OAAO/H,KAAK2G,MAAO3G,KAAK4G,SAKjC3G,EAAK0oB,eAAe9lB,UAAUC,YAAc7C,EAAK0oB,eAQjD1oB,EAAK0oB,eAAe9lB,UAAUiE,OAAS,SAAUjF,GAE7C7B,KAAKsN,QAAQa,aAAa,EAAG,EAAG,EAAG,EAAG,EAAG,GAEzCnO,KAAKsN,QAAQG,YAAc,EAE3BzN,KAAKsH,cAAc+F,iBAAmB,EACtCrN,KAAKsH,cAAc0G,OAAShO,KAAKE,KAAKob,OAAOC,OAAOlW,EACpDrF,KAAKsH,cAAc2G,OAASjO,KAAKE,KAAKob,OAAOC,OAAOjW,EAEpDtF,KAAKsN,QAAQC,yBAA2B,cAEpCyb,UAAUC,YAAcjpB,KAAKoZ,KAAK8P,eAElClpB,KAAKsN,QAAQua,UAAY,QACzB7nB,KAAKsN,QAAQ8N,SAGbpb,KAAKmZ,oBAEDnZ,KAAKgZ,YAELhZ,KAAKsN,QAAQ6Z,UAAU,EAAG,EAAGnnB,KAAK2G,MAAO3G,KAAK4G,SAI9C5G,KAAKsN,QAAQua,UAAYhmB,EAAMoZ,SAASkO,KACxCnpB,KAAKsN,QAAQ0a,SAAS,EAAG,EAAGhoB,KAAK2G,MAAQ3G,KAAK4G,UAItD5G,KAAKwb,oBAAoB3Z,IAU7B5B,EAAK0oB,eAAe9lB,UAAUE,QAAU,SAAUqmB,GAE3B1f,SAAf0f,IAA4BA,GAAa,GAEzCA,GAAcppB,KAAKoZ,KAAKxX,QAExB5B,KAAKoZ,KAAKxX,OAAOgH,YAAY5I,KAAKoZ,MAGtCpZ,KAAKoZ,KAAO,KACZpZ,KAAKsN,QAAU,KACftN,KAAKkL,YAAc,KACnBlL,KAAKsH,cAAgB,MAWzBrH,EAAK0oB,eAAe9lB,UAAUkF,OAAS,SAAUpB,EAAOC,GAEpD5G,KAAK2G,MAAQA,EAAQ3G,KAAKqG,WAC1BrG,KAAK4G,OAASA,EAAS5G,KAAKqG,WAE5BrG,KAAKoZ,KAAKzS,MAAQ3G,KAAK2G,MACvB3G,KAAKoZ,KAAKxS,OAAS5G,KAAK4G,OAEpB5G,KAAKiZ,aAELjZ,KAAKoZ,KAAKwC,MAAMjV,MAAQ3G,KAAK2G,MAAQ3G,KAAKqG,WAAa,KACvDrG,KAAKoZ,KAAKwC,MAAMhV,OAAS5G,KAAK4G,OAAS5G,KAAKqG,WAAa,MAGzDrG,KAAKsH,cAAcoG,iBAEnB1N,KAAKsN,QAAQtN,KAAKsH,cAAcoG,gBAAmB1N,KAAKsH,cAAchB,YAAcrG,EAAK0N,WAAWC,SAc5G3N,EAAK0oB,eAAe9lB,UAAU2Y,oBAAsB,SAAUC,EAAenO,EAASxH,GAElF9F,KAAKsH,cAAcgG,QAAUA,GAAWtN,KAAKsN,QAC7CtN,KAAKsH,cAAcjB,WAAarG,KAAKqG,WACrCoV,EAAc9T,cAAc3H,KAAKsH,cAAexB,IAUpD7F,EAAK0oB,eAAe9lB,UAAUwX,cAAgB,WAE1C,IAAKpa,EAAKuN,iBACV,CACI,GAAI7I,MACA2X,EAAQrc,EAAKkE,WACbklB,EAASppB,EAAKmQ,2BAElBzL,GAAE2X,EAAMjY,QAAU,cAClBM,EAAE2X,EAAMG,KAAO,UACf9X,EAAE2X,EAAMlY,UAAY,EAAW,WAAa,cAC5CO,EAAE2X,EAAMO,QAAU,EAAW,SAAW,cACxClY,EAAE2X,EAAMQ,SAAW,EAAW,UAAY,cAC1CnY,EAAE2X,EAAMS,QAAU,EAAW,SAAW,cACxCpY,EAAE2X,EAAMU,SAAW,EAAW,UAAY,cAC1CrY,EAAE2X,EAAMW,aAAe,EAAW,cAAgB,cAClDtY,EAAE2X,EAAMY,YAAc,EAAW,aAAe,cAChDvY,EAAE2X,EAAMa,YAAc,EAAW,aAAe,cAChDxY,EAAE2X,EAAMc,YAAc,EAAW,aAAe,cAChDzY,EAAE2X,EAAMe,YAAc,EAAW,aAAe,cAChD1Y,EAAE2X,EAAMgB,WAAa,EAAW,YAAc,cAC9C3Y,EAAE2X,EAAMiB,KAAO,EAAW,MAAQ,cAClC5Y,EAAE2X,EAAMkB,YAAc,EAAW,aAAe,cAChD7Y,EAAE2X,EAAMmB,OAAS,EAAW,QAAU,cACtC9Y,EAAE2X,EAAMoB,YAAc,EAAW,aAAe,cAEhDzd,EAAKuN,iBAAmB7I,IAShC1E,EAAKqpB,oBAELrpB,EAAKspB,4BAA8B,EAWnCtpB,EAAKupB,YAAc,SAAS5a,EAAQtI,GAQhCtG,KAAKqG,WAAa,EASlBrG,KAAK2G,MAAQ,IASb3G,KAAK4G,OAAS,IASd5G,KAAKsG,UAAYA,GAAarG,EAAK0N,WAAW0Y,QAS9CrmB,KAAKgM,WAAY,EAQjBhM,KAAK4O,OAASA,EAEd5O,KAAKM,KAAOL,EAAKK,OASjBN,KAAKuZ,oBAAqB,EAS1BvZ,KAAKgW,eASLhW,KAAKgc,QAAS,EAOdhc,KAAK6X,SAAU,GAAM,GAAM,GAAM,GAE5BjJ,KAKA5O,KAAK4O,OAAO6a,UAAYzpB,KAAK4O,OAAOkC,aAAe9Q,KAAK4O,OAAOjI,OAAS3G,KAAK4O,OAAOhI,SAErF5G,KAAKgM,WAAY,EACjBhM,KAAK2G,MAAQ3G,KAAK4O,OAAO8a,cAAgB1pB,KAAK4O,OAAOjI,MACrD3G,KAAK4G,OAAS5G,KAAK4O,OAAO+a,eAAiB3pB,KAAK4O,OAAOhI,OACvD5G,KAAKiU,SAYTjU,KAAKqM,YAAa,EAMlBrM,KAAK4pB,SAAW,KAOhB5pB,KAAKoc,WAAY,IAIrBnc,EAAKupB,YAAY3mB,UAAUC,YAAc7C,EAAKupB,YAW9CvpB,EAAKupB,YAAY3mB,UAAUgnB,YAAc,SAASljB,EAAOC,GAErD5G,KAAKgM,WAAY,EACjBhM,KAAK2G,MAAQA,EACb3G,KAAK4G,OAASA,EACd5G,KAAKiU,SASThU,EAAKupB,YAAY3mB,UAAUE,QAAU,WAE7B/C,KAAK4pB,gBAEE3pB,GAAKqpB,iBAAiBtpB,KAAK4pB,gBAC3B3pB,GAAK8O,aAAa/O,KAAK4pB,UAE9B5pB,KAAK4pB,SAAW,KAEXZ,UAAUC,aAAYjpB,KAAK4O,OAAO8B,IAAM,KAExC1Q,KAAK4O,SAEV3O,EAAK4Q,WAAWc,eAAe3R,KAAK4O,QAEhC5O,KAAK4O,OAAOkb,eAEL7pB,GAAKqpB,iBAAiBtpB,KAAK4O,OAAOkb,UAIjD9pB,KAAK4O,OAAS,KAEd5O,KAAK+pB,iBAST9pB,EAAKupB,YAAY3mB,UAAUmnB,kBAAoB,SAASC,GAEpDjqB,KAAKgM,WAAY,EACjBhM,KAAK4O,OAAO8B,IAAM,KAClB1Q,KAAK4O,OAAO8B,IAAMuZ,GAQtBhqB,EAAKupB,YAAY3mB,UAAUoR,MAAQ,WAE/B,IAAK,GAAIhR,GAAI,EAAGA,EAAIjD,KAAKgW,YAAY9S,OAAQD,IAEzCjD,KAAK6X,OAAO5U,IAAK,GAUzBhD,EAAKupB,YAAY3mB,UAAUknB,cAAgB,WAEvC/pB,KAAKiU,OAGL,KAAK,GAAIhR,GAAIjD,KAAKgW,YAAY9S,OAAS,EAAGD,GAAK,EAAGA,IAClD,CACI,GAAIinB,GAAYlqB,KAAKgW,YAAY/S,GAC7BuE,EAAKvH,EAAK4Y,WAAW5V,EAEtBuE,IAAM0iB,GAEL1iB,EAAGyf,cAAciD,GAKzBlqB,KAAKgW,YAAY9S,OAAS,EAE1BlD,KAAKiU,SAcThU,EAAKupB,YAAYxa,UAAY,SAAS4a,EAAU1a,EAAa5I,GAEzD,GAAIyF,GAAc9L,EAAKqpB,iBAAiBM,EAIxC,IAFmBlgB,SAAhBwF,GAA2D,KAA9B0a,EAASxgB,QAAQ,WAAiB8F,GAAc,IAE5EnD,EACJ,CAGI,GAAIoe,GAAQ,GAAI1Z,MAEZvB,KAEAib,EAAMC,YAAc,IAGxBD,EAAMzZ,IAAMkZ,EACZ7d,EAAc,GAAI9L,GAAKupB,YAAYW,EAAO7jB,GAC1CyF,EAAY6d,SAAWA,EACvB3pB,EAAKqpB,iBAAiBM,GAAY7d,EAGiB,KAA/C6d,EAASxgB,QAAQnJ,EAAKgB,cAAgB,OAEtC8K,EAAY1F,WAAa,GAIjC,MAAO0F,IAYX9L,EAAKupB,YAAYa,WAAa,SAASzZ,EAAQtK,GAEtCsK,EAAOkZ,UAERlZ,EAAOkZ,QAAU,UAAY7pB,EAAKqqB,2BAGjB,IAAjB1Z,EAAOjK,QAEPiK,EAAOjK,MAAQ,GAGG,IAAlBiK,EAAOhK,SAEPgK,EAAOhK,OAAS,EAGpB,IAAImF,GAAc9L,EAAKqpB,iBAAiB1Y,EAAOkZ,QAQ/C,OANK/d,KAEDA,EAAc,GAAI9L,GAAKupB,YAAY5Y,EAAQtK,GAC3CrG,EAAKqpB,iBAAiB1Y,EAAOkZ,SAAW/d,GAGrCA,GAOX9L,EAAK8O,gBACL9O,EAAKsqB,cASLtqB,EAAKuqB,mBAAoB,EAEzBvqB,EAAKqqB,wBAA0B,EAc/BrqB,EAAKuL,QAAU,SAASO,EAAaG,EAAOkB,EAAMU,GAQ9C9N,KAAKyqB,SAAU,EAEVve,IAEDlM,KAAKyqB,SAAU,EACfve,EAAQ,GAAIjM,GAAKuC,UAAU,EAAE,EAAE,EAAE,IAGjCuJ,YAAuB9L,GAAKuL,UAE5BO,EAAcA,EAAYA,aAS9B/L,KAAK+L,YAAcA,EAQnB/L,KAAKkM,MAAQA,EAQblM,KAAK8N,KAAOA,EAQZ9N,KAAKsM,OAAQ,EAQbtM,KAAK0qB,UAAW,EAQhB1qB,KAAK2qB,gBAAiB,EAQtB3qB,KAAKsO,gBAAiB,EAStBtO,KAAK4iB,KAAO,KAQZ5iB,KAAK2G,MAAQ,EAQb3G,KAAK4G,OAAS,EASd5G,KAAKoN,KAAOA,GAAQ,GAAInN,GAAKuC,UAAU,EAAG,EAAG,EAAG,GAE5CuJ,EAAYC,YAERhM,KAAKyqB,UAASve,EAAQ,GAAIjM,GAAKuC,UAAU,EAAG,EAAGuJ,EAAYpF,MAAOoF,EAAYnF,SAClF5G,KAAK4qB,SAAS1e,KAKtBjM,EAAKuL,QAAQ3I,UAAUC,YAAc7C,EAAKuL,QAQ1CvL,EAAKuL,QAAQ3I,UAAUgoB,oBAAsB,WAEzC,GAAI9e,GAAc/L,KAAK+L,WAEnB/L,MAAKyqB,UAELzqB,KAAKkM,MAAQ,GAAIjM,GAAKuC,UAAU,EAAG,EAAGuJ,EAAYpF,MAAOoF,EAAYnF,SAGzE5G,KAAK4qB,SAAS5qB,KAAKkM,QASvBjM,EAAKuL,QAAQ3I,UAAUE,QAAU,SAASqJ,GAElCA,GAAapM,KAAK+L,YAAYhJ,UAElC/C,KAAKsM,OAAQ,GASjBrM,EAAKuL,QAAQ3I,UAAU+nB,SAAW,SAAS1e,GAavC,GAXAlM,KAAKyqB,SAAU,EAEfzqB,KAAKkM,MAAQA,EACblM,KAAK2G,MAAQuF,EAAMvF,MACnB3G,KAAK4G,OAASsF,EAAMtF,OAEpB5G,KAAKoN,KAAK/H,EAAI6G,EAAM7G,EACpBrF,KAAKoN,KAAK9H,EAAI4G,EAAM5G,EACpBtF,KAAKoN,KAAKzG,MAAQuF,EAAMvF,MACxB3G,KAAKoN,KAAKxG,OAASsF,EAAMtF,QAEpB5G,KAAK8N,OAAS5B,EAAM7G,EAAI6G,EAAMvF,MAAQ3G,KAAK+L,YAAYpF,OAASuF,EAAM5G,EAAI4G,EAAMtF,OAAS5G,KAAK+L,YAAYnF,QAC/G,CACI,IAAK3G,EAAKuqB,kBAEN,KAAM,IAAI1hB,OAAM,wEAA0E9I,KAI9F,aADAA,KAAKsM,OAAQ,GAIjBtM,KAAKsM,MAAQJ,GAASA,EAAMvF,OAASuF,EAAMtF,QAAU5G,KAAK+L,YAAY6C,QAAU5O,KAAK+L,YAAYC,UAE7FhM,KAAK8N,OAEL9N,KAAK2G,MAAQ3G,KAAK8N,KAAKnH,MACvB3G,KAAK4G,OAAS5G,KAAK8N,KAAKlH,OACxB5G,KAAKkM,MAAMvF,MAAQ3G,KAAK8N,KAAKnH,MAC7B3G,KAAKkM,MAAMtF,OAAS5G,KAAK8N,KAAKlH,QAG9B5G,KAAKsM,OAAOtM,KAAK8qB,cAUzB7qB,EAAKuL,QAAQ3I,UAAUioB,WAAa,WAE5B9qB,KAAK4iB,OAAK5iB,KAAK4iB,KAAO,GAAI3iB,GAAKkjB,WAEnC,IAAIjX,GAAQlM,KAAKoN,KACb2d,EAAK/qB,KAAK+L,YAAYpF,MACtBqkB,EAAKhrB,KAAK+L,YAAYnF,MAE1B5G,MAAK4iB,KAAKG,GAAK7W,EAAM7G,EAAI0lB,EACzB/qB,KAAK4iB,KAAKI,GAAK9W,EAAM5G,EAAI0lB,EAEzBhrB,KAAK4iB,KAAKhW,IAAMV,EAAM7G,EAAI6G,EAAMvF,OAASokB,EACzC/qB,KAAK4iB,KAAK/V,GAAKX,EAAM5G,EAAI0lB,EAEzBhrB,KAAK4iB,KAAK9V,IAAMZ,EAAM7G,EAAI6G,EAAMvF,OAASokB,EACzC/qB,KAAK4iB,KAAK7V,IAAMb,EAAM5G,EAAI4G,EAAMtF,QAAUokB,EAE1ChrB,KAAK4iB,KAAK5V,GAAKd,EAAM7G,EAAI0lB,EACzB/qB,KAAK4iB,KAAK3V,IAAMf,EAAM5G,EAAI4G,EAAMtF,QAAUokB,GAc9C/qB,EAAKuL,QAAQwD,UAAY,SAAS4a,EAAU1a,EAAa5I,GAErD,GAAIwB,GAAU7H,EAAK8O,aAAa6a,EAQhC,OANI9hB,KAEAA,EAAU,GAAI7H,GAAKuL,QAAQvL,EAAKupB,YAAYxa,UAAU4a,EAAU1a,EAAa5I,IAC7ErG,EAAK8O,aAAa6a,GAAY9hB,GAG3BA,GAYX7H,EAAKuL,QAAQqD,UAAY,SAASC,GAE9B,GAAIhH,GAAU7H,EAAK8O,aAAaD,EAChC,KAAIhH,EAAS,KAAM,IAAIgB,OAAM,gBAAkBgG,EAAU,yCACzD,OAAOhH,IAYX7H,EAAKuL,QAAQ6e,WAAa,SAASzZ,EAAQtK,GAEvC,GAAIyF,GAAc9L,EAAKupB,YAAYa,WAAWzZ,EAAQtK,EAEtD,OAAO,IAAIrG,GAAKuL,QAAQO,IAW5B9L,EAAKuL,QAAQyf,kBAAoB,SAASnjB,EAASmO,GAE/ChW,EAAK8O,aAAakH,GAAMnO,GAW5B7H,EAAKuL,QAAQ0f,uBAAyB,SAASjV,GAE3C,GAAInO,GAAU7H,EAAK8O,aAAakH,EAGhC,cAFOhW,GAAK8O,aAAakH,SAClBhW,GAAKqpB,iBAAiBrT,GACtBnO,GAGX7H,EAAKkjB,WAAa,WAEdnjB,KAAK+iB,GAAK,EACV/iB,KAAKgjB,GAAK,EAEVhjB,KAAK4M,GAAK,EACV5M,KAAK6M,GAAK,EAEV7M,KAAK8M,GAAK,EACV9M,KAAK+M,GAAK,EAEV/M,KAAKgN,GAAK,EACVhN,KAAKiN,GAAK,GAqCdhN,EAAKyG,cAAgB,SAASC,EAAOC,EAAQL,EAAUD,EAAWD,GAwE9D,GAhEArG,KAAK2G,MAAQA,GAAS,IAQtB3G,KAAK4G,OAASA,GAAU,IAQxB5G,KAAKqG,WAAaA,GAAc,EAQhCrG,KAAKkM,MAAQ,GAAIjM,GAAKuC,UAAU,EAAG,EAAGxC,KAAK2G,MAAQ3G,KAAKqG,WAAYrG,KAAK4G,OAAS5G,KAAKqG,YASvFrG,KAAKoN,KAAO,GAAInN,GAAKuC,UAAU,EAAG,EAAGxC,KAAK2G,MAAQ3G,KAAKqG,WAAYrG,KAAK4G,OAAS5G,KAAKqG,YAQtFrG,KAAK+L,YAAc,GAAI9L,GAAKupB,YAC5BxpB,KAAK+L,YAAYpF,MAAQ3G,KAAK2G,MAAQ3G,KAAKqG,WAC3CrG,KAAK+L,YAAYnF,OAAS5G,KAAK4G,OAAS5G,KAAKqG,WAC7CrG,KAAK+L,YAAYiK,eACjBhW,KAAK+L,YAAY1F,WAAarG,KAAKqG,WAEnCrG,KAAK+L,YAAYzF,UAAYA,GAAarG,EAAK0N,WAAW0Y,QAE1DrmB,KAAK+L,YAAYC,WAAY,EAE7B/L,EAAKuL,QAAQ9F,KAAK1F,KACdA,KAAK+L,YACL,GAAI9L,GAAKuC,UAAU,EAAG,EAAGxC,KAAK2G,MAAQ3G,KAAKqG,WAAYrG,KAAK4G,OAAS5G,KAAKqG,aAS9ErG,KAAKuG,SAAWA,GAAYtG,EAAK8Y,gBAE7B/Y,KAAKuG,SAAS6O,OAASnV,EAAKE,eAChC,CACI,GAAIqH,GAAKxH,KAAKuG,SAASiB,EACvBxH,MAAK+L,YAAY8L,OAAOrQ,EAAGyO,KAAM,EAEjCjW,KAAKmrB,cAAgB,GAAIlrB,GAAKmlB,cAAc5d,EAAIxH,KAAK2G,MAAO3G,KAAK4G,OAAQ5G,KAAK+L,YAAYzF,WAC1FtG,KAAK+L,YAAYiK,YAAYxO,EAAGyO,IAAOjW,KAAKmrB,cAAcrjB,QAE1D9H,KAAK8G,OAAS9G,KAAKorB,YACnBprB,KAAKyZ,WAAa,GAAIxZ,GAAKmB,MAAmB,GAAbpB,KAAK2G,MAA4B,IAAd3G,KAAK4G,YAIzD5G,MAAK8G,OAAS9G,KAAKqrB,aACnBrrB,KAAKmrB,cAAgB,GAAIlrB,GAAKinB,aAAalnB,KAAK2G,MAAQ3G,KAAKqG,WAAYrG,KAAK4G,OAAS5G,KAAKqG,YAC5FrG,KAAK+L,YAAY6C,OAAS5O,KAAKmrB,cAAcva,MAOjD5Q,MAAKsM,OAAQ,EAEbtM,KAAKsrB,WAAa,GAAIzC,QAAO7mB,OAE7BhC,KAAK8qB,cAGT7qB,EAAKyG,cAAc7D,UAAYO,OAAOiF,OAAOpI,EAAKuL,QAAQ3I,WAC1D5C,EAAKyG,cAAc7D,UAAUC,YAAc7C,EAAKyG,cAUhDzG,EAAKyG,cAAc7D,UAAUkF,OAAS,SAASpB,EAAOC,EAAQ2kB,IAEtD5kB,IAAU3G,KAAK2G,OAASC,IAAW5G,KAAK4G,UAE5C5G,KAAKsM,MAAS3F,EAAQ,GAAKC,EAAS,EAEpC5G,KAAK2G,MAAQA,EACb3G,KAAK4G,OAASA,EACd5G,KAAKkM,MAAMvF,MAAQ3G,KAAKoN,KAAKzG,MAAQA,EAAQ3G,KAAKqG,WAClDrG,KAAKkM,MAAMtF,OAAS5G,KAAKoN,KAAKxG,OAASA,EAAS5G,KAAKqG,WAEjDklB,IAEAvrB,KAAK+L,YAAYpF,MAAQ3G,KAAK2G,MAAQ3G,KAAKqG,WAC3CrG,KAAK+L,YAAYnF,OAAS5G,KAAK4G,OAAS5G,KAAKqG,YAG7CrG,KAAKuG,SAAS6O,OAASnV,EAAKE,iBAE5BH,KAAKyZ,WAAWpU,EAAIrF,KAAK2G,MAAQ,EACjC3G,KAAKyZ,WAAWnU,GAAKtF,KAAK4G,OAAS,GAGnC5G,KAAKsM,OAETtM,KAAKmrB,cAAcpjB,OAAO/H,KAAK2G,MAAO3G,KAAK4G,UAQ/C3G,EAAKyG,cAAc7D,UAAUuY,MAAQ,WAE5Bpb,KAAKsM,QAKNtM,KAAKuG,SAAS6O,OAASnV,EAAKE,gBAE5BH,KAAKuG,SAASiB,GAAGsT,gBAAgB9a,KAAKuG,SAASiB,GAAGuT,YAAa/a,KAAKmrB,cAAc7F,aAGtFtlB,KAAKmrB,cAAc/P,UAYvBnb,EAAKyG,cAAc7D,UAAUuoB,YAAc,SAAS3P,EAAe3V,EAAQsV,GAEvE,GAAKpb,KAAKsM,OAAiC,IAAxBmP,EAAcja,MAAjC,CAOA,GAAIyD,GAAKwW,EAAc1Z,cACvBkD,GAAGumB,WACHvmB,EAAGwmB,UAAU,EAAuB,EAApBzrB,KAAKyZ,WAAWnU,GAE5BQ,GAEAb,EAAGymB,OAAO5lB,GAGdb,EAAG5D,MAAM,EAAG,GAGZ,KAAK,GAAI4B,GAAI,EAAGA,EAAIwY,EAAczY,SAASE,OAAQD,IAE/CwY,EAAczY,SAASC,GAAGsB,iBAI9B,IAAIiD,GAAKxH,KAAKuG,SAASiB,EAEvBA,GAAGqT,SAAS,EAAG,EAAG7a,KAAK2G,MAAQ3G,KAAKqG,WAAYrG,KAAK4G,OAAS5G,KAAKqG,YAEnEmB,EAAGsT,gBAAgBtT,EAAGuT,YAAa/a,KAAKmrB,cAAc7F,aAElDlK,GAEApb,KAAKmrB,cAAc/P,QAGvBpb,KAAKuG,SAASsE,YAAYoJ,OAAQ,EAElCjU,KAAKuG,SAASiV,oBAAoBC,EAAezb,KAAKyZ,WAAYzZ,KAAKmrB,cAAc7F,YAAaxf,GAElG9F,KAAKuG,SAASsE,YAAYoJ,OAAQ,IAatChU,EAAKyG,cAAc7D,UAAUwoB,aAAe,SAAS5P,EAAe3V,EAAQsV,GAExE,GAAKpb,KAAKsM,OAAiC,IAAxBmP,EAAcja,MAAjC,CAOA,GAAIyD,GAAKwW,EAAc1Z,cACvBkD,GAAGumB,WAEC1lB,GAEAb,EAAGymB,OAAO5lB,EAId,KAAK,GAAI7C,GAAI,EAAGA,EAAIwY,EAAczY,SAASE,OAAQD,IAE/CwY,EAAczY,SAASC,GAAGsB,iBAG1B6W,IAEApb,KAAKmrB,cAAc/P,OAGvB,IAAIuQ,GAAiB3rB,KAAKuG,SAASF,UAEnCrG,MAAKuG,SAASF,WAAarG,KAAKqG,WAEhCrG,KAAKuG,SAASiV,oBAAoBC,EAAezb,KAAKmrB,cAAc7d,QAASxH,GAE7E9F,KAAKuG,SAASF,WAAaslB,IAS/B1rB,EAAKyG,cAAc7D,UAAU+oB,SAAW,WAEpC,GAAIzB,GAAQ,GAAI1Z,MAEhB,OADA0Z,GAAMzZ,IAAM1Q,KAAK6rB,YACV1B,GASXlqB,EAAKyG,cAAc7D,UAAUgpB,UAAY,WAErC,MAAO7rB,MAAK8rB,YAAYC,aAS5B9rB,EAAKyG,cAAc7D,UAAUipB,UAAY,WAErC,GAAI9rB,KAAKuG,SAAS6O,OAASnV,EAAKE,eAChC,CACI,GAAIqH,GAAMxH,KAAKuG,SAASiB,GACpBb,EAAQ3G,KAAKmrB,cAAcxkB,MAC3BC,EAAS5G,KAAKmrB,cAAcvkB,OAE5BolB,EAAc,GAAIC,YAAW,EAAItlB,EAAQC,EAE7CY,GAAGsT,gBAAgBtT,EAAGuT,YAAa/a,KAAKmrB,cAAc7F,aACtD9d,EAAG0kB,WAAW,EAAG,EAAGvlB,EAAOC,EAAQY,EAAGkP,KAAMlP,EAAG0P,cAAe8U,GAC9DxkB,EAAGsT,gBAAgBtT,EAAGuT,YAAa,KAEnC,IAAIoR,GAAa,GAAIlsB,GAAKinB,aAAavgB,EAAOC,GAC1CwlB,EAAaD,EAAW7e,QAAQyD,aAAa,EAAG,EAAGpK,EAAOC,EAK9D,OAJAwlB,GAAWpb,KAAKxN,IAAIwoB,GAEpBG,EAAW7e,QAAQgb,aAAa8D,EAAY,EAAG,GAExCD,EAAWvb,OAIlB,MAAO5Q,MAAKmrB,cAAcva,QAiBlC3Q,EAAKmiB,eAAiB,SAASjP,EAAa6B,GASxChV,KAAK4D,QAAU5D,MAOfA,KAAKkiB,WAMLliB,KAAKiU,OAAQ,EAMbjU,KAAKqlB,QAAU,EAOfrlB,KAAKgV,SAAWA,MAOhBhV,KAAKmT,YAAcA,OAGvBlT,EAAKmiB,eAAevf,UAAUC,YAAc7C,EAAKmiB,eAOjDniB,EAAKmiB,eAAevf,UAAU4U,aAAe,WAEzC,IAAI,GAAIxU,GAAE,EAAEa,EAAE9D,KAAKkiB,QAAQhf,OAAUY,EAAFb,EAAKA,IAEpCjD,KAAKkiB,QAAQjf,GAAGgR,OAAQ,GAkBhChU,EAAKosB,MAAQ,SAASvkB,GAElB7H,EAAKkI,uBAAuBzC,KAAM1F,MASlCA,KAAK8H,QAAUA,EAGf9H,KAAK2iB,IAAM,GAAI1iB,GAAKM,cAAc,EAAG,EACH,EAAG,EACH,EAAG,EACH,EAAG,IAErCP,KAAK0hB,SAAW,GAAIzhB,GAAKM,cAAc,EAAG,EACF,IAAK,EACL,IAAK,IACL,EAAG,MAE3CP,KAAK4hB,OAAS,GAAI3hB,GAAKM,cAAc,EAAG,EAAG,EAAG,IAE9CP,KAAKqf,QAAU,GAAIpf,GAAKO,aAAa,EAAG,EAAG,EAAG,IAQ9CR,KAAKiU,OAAQ,EASbjU,KAAKkE,UAAYjE,EAAKkE,WAAWE,OAQjCrE,KAAKssB,cAAgB,EAErBtsB,KAAKusB,SAAWtsB,EAAKosB,MAAMG,UAAU9M,gBAKzCzf,EAAKosB,MAAMxpB,UAAYO,OAAOiF,OAAOpI,EAAKkI,uBAAuBtF,WACjE5C,EAAKosB,MAAMxpB,UAAUC,YAAc7C,EAAKosB,MAExCpsB,EAAKosB,MAAMxpB,UAAU6E,aAAe,SAASJ,IAGrCtH,KAAKyB,SAAWzB,KAAKwB,OAAS,IAGlC8F,EAAcuD,YAAYI,OAGtBjL,KAAKysB,eAAczsB,KAAK0sB,WAAWplB,GAEvCA,EAAcoI,cAAcC,UAAUrI,EAAcoI,cAAcoR,aAElE9gB,KAAK2sB,aAAarlB,GAIlBA,EAAcuD,YAAYQ,UAK9BpL,EAAKosB,MAAMxpB,UAAU6pB,WAAa,SAASplB,GAGvC,GAAIE,GAAKF,EAAcE,EAEvBxH,MAAKysB,cAAgBjlB,EAAG8a,eACxBtiB,KAAK4sB,aAAeplB,EAAG8a,eACvBtiB,KAAK6sB,UAAYrlB,EAAG8a,eACpBtiB,KAAK8sB,aAAetlB,EAAG8a,eAEvB9a,EAAGyY,WAAWzY,EAAG0Y,aAAclgB,KAAKysB,eACpCjlB,EAAG+a,WAAW/a,EAAG0Y,aAAclgB,KAAK0hB,SAAUla,EAAGib,cAEjDjb,EAAGyY,WAAWzY,EAAG0Y,aAAclgB,KAAK6sB,WACpCrlB,EAAG+a,WAAW/a,EAAG0Y,aAAelgB,KAAK2iB,IAAKnb,EAAGgb,aAE7Chb,EAAGyY,WAAWzY,EAAG0Y,aAAclgB,KAAK8sB,cACpCtlB,EAAG+a,WAAW/a,EAAG0Y,aAAclgB,KAAK4hB,OAAQpa,EAAGgb,aAE/Chb,EAAGyY,WAAWzY,EAAG6Y,qBAAsBrgB,KAAK4sB,cAC5CplB,EAAG+a,WAAW/a,EAAG6Y,qBAAsBrgB,KAAKqf,QAAS7X,EAAGgb,cAG5DviB,EAAKosB,MAAMxpB,UAAU8pB,aAAe,SAASrlB,GAEzC,GAAIE,GAAKF,EAAcE,GACnBiS,EAAanS,EAAcmS,WAC3BC,EAASpS,EAAcoS,OACvB7N,EAASvE,EAAcoI,cAAcoR,YAErCyL,EAAWvsB,KAAKusB,WAAatsB,EAAKosB,MAAMG,UAAU9M,eAAiBlY,EAAGkY,eAAiBlY,EAAGid,SAI9Fnd,GAAc2S,iBAAiB0B,aAAa3b,KAAKkE,WAIjDsD,EAAGmO,iBAAiB9J,EAAO0M,mBAAmB,EAAOvY,KAAK+B,eAAe+d,SAAQ,IACjFtY,EAAGuY,UAAUlU,EAAO2I,iBAAkBiF,EAAWpU,GAAIoU,EAAWnU,GAChEkC,EAAGuY,UAAUlU,EAAO4I,cAAeiF,EAAOrU,GAAIqU,EAAOpU,GACrDkC,EAAGqY,UAAUhU,EAAOrK,MAAOxB,KAAK8B,YAE5B9B,KAAKiU,OAgCLjU,KAAKiU,OAAQ,EACbzM,EAAGyY,WAAWzY,EAAG0Y,aAAclgB,KAAKysB,eACpCjlB,EAAG+a,WAAW/a,EAAG0Y,aAAclgB,KAAK0hB,SAAUla,EAAGgb,aACjDhb,EAAG2Y,oBAAoBtU,EAAO8I,gBAAiB,EAAGnN,EAAG4Y,OAAO,EAAO,EAAG,GAGtE5Y,EAAGyY,WAAWzY,EAAG0Y,aAAclgB,KAAK6sB,WACpCrlB,EAAG+a,WAAW/a,EAAG0Y,aAAclgB,KAAK2iB,IAAKnb,EAAGgb,aAC5Chb,EAAG2Y,oBAAoBtU,EAAOgJ,cAAe,EAAGrN,EAAG4Y,OAAO,EAAO,EAAG,GAEpE5Y,EAAGqO,cAAcrO,EAAGoc,UAGjB5jB,KAAK8H,QAAQiE,YAAY8L,OAAOrQ,EAAGyO,IAElC3O,EAAcf,SAASwR,cAAc/X,KAAK8H,QAAQiE,aAIlDvE,EAAGsO,YAAYtO,EAAGuO,WAAY/V,KAAK8H,QAAQiE,YAAYiK,YAAYxO,EAAGyO,KAI1EzO,EAAGyY,WAAWzY,EAAG6Y,qBAAsBrgB,KAAK4sB,cAC5CplB,EAAG+a,WAAW/a,EAAG6Y,qBAAsBrgB,KAAKqf,QAAS7X,EAAGgb,eArDxDhb,EAAGyY,WAAWzY,EAAG0Y,aAAclgB,KAAKysB,eACpCjlB,EAAGsc,cAActc,EAAG0Y,aAAc,EAAGlgB,KAAK0hB,UAC1Cla,EAAG2Y,oBAAoBtU,EAAO8I,gBAAiB,EAAGnN,EAAG4Y,OAAO,EAAO,EAAG,GAGtE5Y,EAAGyY,WAAWzY,EAAG0Y,aAAclgB,KAAK6sB,WACpCrlB,EAAG2Y,oBAAoBtU,EAAOgJ,cAAe,EAAGrN,EAAG4Y,OAAO,EAAO,EAAG,GAEpE5Y,EAAGqO,cAAcrO,EAAGoc,UAGjB5jB,KAAK8H,QAAQiE,YAAY8L,OAAOrQ,EAAGyO,IAElC3O,EAAcf,SAASwR,cAAc/X,KAAK8H,QAAQiE,aAKlDvE,EAAGsO,YAAYtO,EAAGuO,WAAY/V,KAAK8H,QAAQiE,YAAYiK,YAAYxO,EAAGyO,KAI1EzO,EAAGyY,WAAWzY,EAAG6Y,qBAAsBrgB,KAAK4sB,eAqChDplB,EAAG2X,aAAaoN,EAAUvsB,KAAKqf,QAAQnc,OAAQsE,EAAG8X,eAAgB,IAOtErf,EAAKosB,MAAMxpB,UAAU8E,cAAgB,SAASL,GAE1C,GAAIgG,GAAUhG,EAAcgG,QAExBuC,EAAY7P,KAAK+B,eAEjB+C,EAAM+K,EAAU/K,GAAKwC,EAAcjB,WAAciB,EAAc0G,OAC/DjJ,EAAM8K,EAAU9K,GAAKuC,EAAcjB,WAAciB,EAAc2G,MAE/D3G,GAAc4G,YAEdZ,EAAQa,aAAa0B,EAAUnL,EAAGmL,EAAUlL,EAAGkL,EAAUjL,EAAGiL,EAAUhL,EAAQ,EAALC,EAAa,EAALC,GAIjFuI,EAAQa,aAAa0B,EAAUnL,EAAGmL,EAAUlL,EAAGkL,EAAUjL,EAAGiL,EAAUhL,EAAGC,EAAIC,GAG7E/E,KAAKusB,WAAatsB,EAAKosB,MAAMG,UAAU9M,eAEvC1f,KAAK+sB,2BAA2Bzf,GAIhCtN,KAAKgtB,uBAAuB1f,IAIpCrN,EAAKosB,MAAMxpB,UAAUkqB,2BAA6B,SAASzf,GAGvD,GAAIoU,GAAW1hB,KAAK0hB,SAChBiB,EAAM3iB,KAAK2iB,IAEXzf,EAASwe,EAASxe,OAAS,CAC/BlD,MAAKqe,OAEL,KAAK,GAAIpb,GAAI,EAAOC,EAAS,EAAbD,EAAgBA,IAAK,CAEjC,GAAI0F,GAAY,EAAJ1F,CACZjD,MAAKitB,0BAA0B3f,EAASoU,EAAUiB,EAAKha,EAAQA,EAAQ,EAAKA,EAAQ,KAI5F1I,EAAKosB,MAAMxpB,UAAUmqB,uBAAyB,SAAS1f,GAGnD,GAAIoU,GAAW1hB,KAAK0hB,SAChBiB,EAAM3iB,KAAK2iB,IACXtD,EAAUrf,KAAKqf,QAEfnc,EAASmc,EAAQnc,MACrBlD,MAAKqe,OAEL,KAAK,GAAIpb,GAAI,EAAOC,EAAJD,EAAYA,GAAK,EAAG,CAEhC,GAAIiqB,GAAsB,EAAb7N,EAAQpc,GAAQgG,EAA0B,EAAjBoW,EAAQpc,EAAI,GAAQkG,EAA0B,EAAjBkW,EAAQpc,EAAI,EAC/EjD,MAAKitB,0BAA0B3f,EAASoU,EAAUiB,EAAKuK,EAAQjkB,EAAQE,KAI/ElJ,EAAKosB,MAAMxpB,UAAUoqB,0BAA4B,SAAS3f,EAASoU,EAAUiB,EAAKuK,EAAQjkB,EAAQE,GAE9F,GAAIgkB,GAAgBntB,KAAK8H,QAAQiE,YAAY6C,OACzCwe,EAAeptB,KAAK8H,QAAQnB,MAC5B0mB,EAAgBrtB,KAAK8H,QAAQlB,OAE7Bmc,EAAKrB,EAASwL,GAAStgB,EAAK8U,EAASzY,GAAS6D,EAAK4U,EAASvY,GAC5D6Z,EAAKtB,EAASwL,EAAS,GAAIrgB,EAAK6U,EAASzY,EAAS,GAAI8D,EAAK2U,EAASvY,EAAS,GAE7EmkB,EAAK3K,EAAIuK,GAAUE,EAAcG,EAAK5K,EAAI1Z,GAAUmkB,EAAcI,EAAK7K,EAAIxZ,GAAUikB,EACrFK,EAAK9K,EAAIuK,EAAS,GAAKG,EAAeK,EAAK/K,EAAI1Z,EAAS,GAAKokB,EAAeM,EAAKhL,EAAIxZ,EAAS,GAAKkkB,CAEvG,IAAIrtB,KAAKssB,cAAgB,EAAG,CACxB,GAAIsB,GAAW5tB,KAAKssB,cAAgBtsB,KAAK+B,eAAe2C,EACpDmpB,EAAW7tB,KAAKssB,cAAgBtsB,KAAK+B,eAAe8C,EACpDipB,GAAW/K,EAAKnW,EAAKE,GAAM,EAC3BihB,GAAW/K,EAAKnW,EAAKE,GAAM,EAE3BihB,EAAQjL,EAAK+K,EACbG,EAAQjL,EAAK+K,EAEbG,EAAOrtB,KAAK0E,KAAKyoB,EAAQA,EAAQC,EAAQA,EAC7ClL,GAAK+K,EAAWE,EAAQE,GAASA,EAAON,GACxC5K,EAAK+K,EAAWE,EAAQC,GAASA,EAAOL,GAIxCG,EAAQphB,EAAKkhB,EACbG,EAAQphB,EAAKkhB,EAEbG,EAAOrtB,KAAK0E,KAAKyoB,EAAQA,EAAQC,EAAQA,GACzCrhB,EAAKkhB,EAAWE,EAAQE,GAASA,EAAON,GACxC/gB,EAAKkhB,EAAWE,EAAQC,GAASA,EAAOL,GAExCG,EAAQlhB,EAAKghB,EACbG,EAAQlhB,EAAKghB,EAEbG,EAAOrtB,KAAK0E,KAAKyoB,EAAQA,EAAQC,EAAQA,GACzCnhB,EAAKghB,EAAWE,EAAQE,GAASA,EAAON,GACxC7gB,EAAKghB,EAAWE,EAAQC,GAASA,EAAOL,GAG5CvgB,EAAQ+Z,OACR/Z,EAAQ6gB,YAGR7gB,EAAQ8gB,OAAOrL,EAAIC,GACnB1V,EAAQ+gB,OAAOzhB,EAAIC,GACnBS,EAAQ+gB,OAAOvhB,EAAIC,GAEnBO,EAAQghB,YAERhhB,EAAQma,MAGR,IAAI8G,GAAUjB,EAAKI,EAAYD,EAAKD,EAAYD,EAAKI,EAAYD,EAAKF,EAAYC,EAAKF,EAAYD,EAAKK,EACpGa,EAAUzL,EAAK2K,EAAYD,EAAK3gB,EAAYF,EAAK+gB,EAAYD,EAAK5gB,EAAY2gB,EAAK7gB,EAAYmW,EAAK4K,EACpGc,EAAUnB,EAAK1gB,EAAYmW,EAAKyK,EAAYD,EAAKzgB,EAAYF,EAAK4gB,EAAYzK,EAAKwK,EAAYD,EAAKxgB,EACpG4hB,EAAUpB,EAAKI,EAAK5gB,EAAO2gB,EAAK7gB,EAAK4gB,EAAOzK,EAAKwK,EAAKI,EAAO5K,EAAK2K,EAAKF,EAAOC,EAAKF,EAAKzgB,EAAOwgB,EAAK1gB,EAAK+gB,EACzGgB,EAAU3L,EAAK0K,EAAYD,EAAK1gB,EAAYF,EAAK8gB,EAAYD,EAAK3gB,EAAY0gB,EAAK5gB,EAAYmW,EAAK2K,EACpGiB,EAAUtB,EAAKzgB,EAAYmW,EAAKwK,EAAYD,EAAKxgB,EAAYF,EAAK2gB,EAAYxK,EAAKuK,EAAYD,EAAKvgB,EACpG8hB,EAAUvB,EAAKI,EAAK3gB,EAAO0gB,EAAK5gB,EAAK2gB,EAAOxK,EAAKuK,EAAKI,EAAO3K,EAAK0K,EAAKF,EAAOC,EAAKF,EAAKxgB,EAAOugB,EAAKzgB,EAAK8gB,CAE7GrgB,GAAQuC,UAAU2e,EAASD,EAAOI,EAASJ,EACvCE,EAASF,EAAOK,EAASL,EACzBG,EAASH,EAAOM,EAASN,GAE7BjhB,EAAQmB,UAAU0e,EAAe,EAAG,GACpC7f,EAAQoa,WAYZznB,EAAKosB,MAAMxpB,UAAUisB,gBAAkB,SAASC,GAE5C,GAAIzhB,GAAUtN,KAAKsN,QACfoU,EAAWqN,EAAMrN,SAEjBxe,EAASwe,EAASxe,OAAO,CAC7BlD,MAAKqe,QAEL/Q,EAAQ6gB,WACR,KAAK,GAAIlrB,GAAE,EAAOC,EAAO,EAAXD,EAAcA,IAC5B,CAEI,GAAI0F,GAAU,EAAF1F,EAER8f,EAAKrB,EAAS/Y,GAAUiE,EAAK8U,EAAS/Y,EAAM,GAAImE,EAAK4U,EAAS/Y,EAAM,GACpEqa,EAAKtB,EAAS/Y,EAAM,GAAIkE,EAAK6U,EAAS/Y,EAAM,GAAIoE,EAAK2U,EAAS/Y,EAAM,EAExE2E,GAAQ8gB,OAAOrL,EAAIC,GACnB1V,EAAQ+gB,OAAOzhB,EAAIC,GACnBS,EAAQ+gB,OAAOvhB,EAAIC,GAGvBO,EAAQua,UAAY,UACpBva,EAAQ0hB,OACR1hB,EAAQghB,aAyBZruB,EAAKosB,MAAMxpB,UAAUoJ,gBAAkB,WAEnCjM,KAAKivB,aAAc,GAUvBhvB,EAAKosB,MAAMxpB,UAAUgD,UAAY,SAASC,GAkBtC,IAAK,GAhBD/D,GAAiB+D,GAAU9F,KAAK+B,eAEhC2C,EAAI3C,EAAe2C,EACnBC,EAAI5C,EAAe4C,EACnBC,EAAI7C,EAAe6C,EACnBC,EAAI9C,EAAe8C,EACnBC,EAAK/C,EAAe+C,GACpBC,EAAKhD,EAAegD,GAEpB0F,IAAQF,EAAAA,GACRG,IAAQH,EAAAA,GAERD,EAAOC,EAAAA,EACPC,EAAOD,EAAAA,EAEPmX,EAAW1hB,KAAK0hB,SACXze,EAAI,EAAGisB,EAAIxN,EAASxe,OAAYgsB,EAAJjsB,EAAOA,GAAK,EACjD,CACI,GAAIksB,GAAOzN,EAASze,GAAImsB,EAAO1N,EAASze,EAAI,GACxCoC,EAAKX,EAAIyqB,EAASvqB,EAAIwqB,EAAQtqB,EAC9BQ,EAAKT,EAAIuqB,EAASzqB,EAAIwqB,EAAQpqB,CAElCuF,GAAWA,EAAJjF,EAAWA,EAAIiF,EACtBE,EAAWA,EAAJlF,EAAWA,EAAIkF,EAEtBC,EAAOpF,EAAIoF,EAAOpF,EAAIoF,EACtBC,EAAOpF,EAAIoF,EAAOpF,EAAIoF,EAG1B,GAAIJ,MAAUC,EAAAA,IAAYG,IAASH,EAAAA,EAE/B,MAAOtK,GAAK8F,cAGhB,IAAIS,GAASxG,KAAKuC,OAWlB,OATAiE,GAAOnB,EAAIiF,EACX9D,EAAOG,MAAQ8D,EAAOH,EAEtB9D,EAAOlB,EAAIkF,EACXhE,EAAOI,OAAS8D,EAAOF,EAGvBxK,KAAKyC,eAAiB+D,EAEfA,GAUXvG,EAAKosB,MAAMG,WACP9M,eAAgB,EAChB+E,UAAW,GAiBfxkB,EAAKovB,KAAO,SAASvnB,EAASwnB,GAE1BrvB,EAAKosB,MAAM3mB,KAAM1F,KAAM8H,GACvB9H,KAAKsvB,OAASA,EAEdtvB,KAAK0hB,SAAW,GAAIzhB,GAAKM,aAA6B,EAAhB+uB,EAAOpsB,QAC7ClD,KAAK2iB,IAAM,GAAI1iB,GAAKM,aAA6B,EAAhB+uB,EAAOpsB,QACxClD,KAAK4hB,OAAS,GAAI3hB,GAAKM,aAA6B,EAAhB+uB,EAAOpsB,QAC3ClD,KAAKqf,QAAU,GAAIpf,GAAKO,YAA4B,EAAhB8uB,EAAOpsB,QAG3ClD,KAAK4oB,WAKT3oB,EAAKovB,KAAKxsB,UAAYO,OAAOiF,OAAQpI,EAAKosB,MAAMxpB,WAChD5C,EAAKovB,KAAKxsB,UAAUC,YAAc7C,EAAKovB,KAOvCpvB,EAAKovB,KAAKxsB,UAAU+lB,QAAU,WAE1B,GAAI0G,GAAStvB,KAAKsvB,MAClB,MAAGA,EAAOpsB,OAAS,GAAnB,CAEA,GAAIyf,GAAM3iB,KAAK2iB,IAEX4M,EAAYD,EAAO,GACnBjQ,EAAUrf,KAAKqf,QACfuC,EAAS5hB,KAAK4hB,MAElB5hB,MAAKqe,OAAO,GAEZsE,EAAI,GAAK,EACTA,EAAI,GAAK,EACTA,EAAI,GAAK,EACTA,EAAI,GAAK,EAETf,EAAO,GAAK,EACZA,EAAO,GAAK,EAEZvC,EAAQ,GAAK,EACbA,EAAQ,GAAK,CAKb,KAAK,GAFDmQ,GAAO7mB,EAAO8mB,EADdC,EAAQJ,EAAOpsB,OAGVD,EAAI,EAAOysB,EAAJzsB,EAAWA,IAEvBusB,EAAQF,EAAOrsB,GACf0F,EAAY,EAAJ1F,EAERwsB,EAASxsB,GAAKysB,EAAM,GAEjBzsB,EAAE,GAED0f,EAAIha,GAAS8mB,EACb9M,EAAIha,EAAM,GAAK,EAEfga,EAAIha,EAAM,GAAK8mB,EACf9M,EAAIha,EAAM,GAAK,IAIfga,EAAIha,GAAS8mB,EACb9M,EAAIha,EAAM,GAAK,EAEfga,EAAIha,EAAM,GAAK8mB,EACf9M,EAAIha,EAAM,GAAK,GAGnBA,EAAY,EAAJ1F,EACR2e,EAAOjZ,GAAS,EAChBiZ,EAAOjZ,EAAM,GAAK,EAElBA,EAAY,EAAJ1F,EACRoc,EAAQ1W,GAASA,EACjB0W,EAAQ1W,EAAQ,GAAKA,EAAQ,EAE7B4mB,EAAYC,IAUpBvvB,EAAKovB,KAAKxsB,UAAU0B,gBAAkB,WAGlC,GAAI+qB,GAAStvB,KAAKsvB,MAClB,MAAGA,EAAOpsB,OAAS,GAAnB,CAEA,GACIysB,GADAJ,EAAYD,EAAO,GAEnBM,GAAQvqB,EAAE,EAAGC,EAAE,EAEnBtF,MAAKqe,OAAO,EAMZ,KAAK,GAFDmR,GAAO7mB,EAAOknB,EAAOC,EAAYC,EAFjCrO,EAAW1hB,KAAK0hB,SAChBgO,EAAQJ,EAAOpsB,OAGVD,EAAI,EAAOysB,EAAJzsB,EAAWA,IAEvBusB,EAAQF,EAAOrsB,GACf0F,EAAY,EAAJ1F,EAIJ0sB,EAFD1sB,EAAIqsB,EAAOpsB,OAAO,EAELosB,EAAOrsB,EAAE,GAITusB,EAGhBI,EAAKtqB,IAAMqqB,EAAUtqB,EAAIkqB,EAAUlqB,GACnCuqB,EAAKvqB,EAAIsqB,EAAUrqB,EAAIiqB,EAAUjqB,EAEjCuqB,EAAgC,IAAvB,EAAK5sB,GAAKysB,EAAM,IAEtBG,EAAQ,IAAGA,EAAQ,GAEtBC,EAAajvB,KAAK0E,KAAKqqB,EAAKvqB,EAAIuqB,EAAKvqB,EAAIuqB,EAAKtqB,EAAIsqB,EAAKtqB,GACvDyqB,EAAM/vB,KAAK8H,QAAQlB,OAAS,EAC5BgpB,EAAKvqB,GAAKyqB,EACVF,EAAKtqB,GAAKwqB,EAEVF,EAAKvqB,GAAK0qB,EACVH,EAAKtqB,GAAKyqB,EAEVrO,EAAS/Y,GAAS6mB,EAAMnqB,EAAIuqB,EAAKvqB,EACjCqc,EAAS/Y,EAAM,GAAK6mB,EAAMlqB,EAAIsqB,EAAKtqB,EACnCoc,EAAS/Y,EAAM,GAAK6mB,EAAMnqB,EAAIuqB,EAAKvqB,EACnCqc,EAAS/Y,EAAM,GAAK6mB,EAAMlqB,EAAIsqB,EAAKtqB,EAEnCiqB,EAAYC,CAGhBvvB,GAAKkI,uBAAuBtF,UAAU0B,gBAAgBmB,KAAM1F,QAQhEC,EAAKovB,KAAKxsB,UAAUsJ,WAAa,SAASrE,GAGtC9H,KAAK8H,QAAUA,GAkBnB7H,EAAK+vB,aAAe,SAASloB,EAASnB,EAAOC,GAEzC3G,EAAKwH,OAAO/B,KAAK1F,KAAM8H,GAQvB9H,KAAKsI,OAAS3B,GAAS,IAQvB3G,KAAKuI,QAAU3B,GAAU,IAQzB5G,KAAK0jB,UAAY,GAAIzjB,GAAKmB,MAAM,EAAG,GAQnCpB,KAAKsjB,gBAAkB,GAAIrjB,GAAKmB,MAAM,EAAG,GAQzCpB,KAAKqjB,aAAe,GAAIpjB,GAAKmB,MAS7BpB,KAAK2B,YAAa,EASlB3B,KAAK0L,KAAO,SASZ1L,KAAKiwB,cAAe,EASpBjwB,KAAKkE,UAAYjE,EAAKkE,WAAWE,OAQjCrE,KAAKkwB,aAAe,KAQpBlwB,KAAKkjB,cAAgB,KAQrBljB,KAAKmwB,YAAc,KAUnBnwB,KAAKowB,gBAAiB,EAEtBpwB,KAAKqwB,WAAa,EAClBrwB,KAAKswB,YAAc,GAIvBrwB,EAAK+vB,aAAantB,UAAYO,OAAOiF,OAAOpI,EAAKwH,OAAO5E,WACxD5C,EAAK+vB,aAAantB,UAAUC,YAAc7C,EAAK+vB,aAE/C/vB,EAAK+vB,aAAantB,UAAUsJ,WAAa,SAASrE,GAE1C9H,KAAK8H,UAAYA,IAEjB9H,KAAK8H,QAAUA,EACf9H,KAAKowB,gBAAiB,EACtBpwB,KAAK2L,WAAa,WAY1B1L,EAAK+vB,aAAantB,UAAU6E,aAAe,SAASJ,GAEhD,GAAKtH,KAAKyB,SAAYzB,KAAK2B,YAA6B,IAAf3B,KAAKwB,MAA9C,CAkBA,GAbIxB,KAAK0C,QAEL4E,EAAcuD,YAAYI,OAC1B3D,EAAc4D,YAAYC,SAASnL,KAAKoL,KAAM9D,GAC9CA,EAAcuD,YAAYQ,SAG1BrL,KAAK2D,WAEL2D,EAAcuD,YAAYC,QAC1BxD,EAAcyD,cAAcC,WAAWhL,KAAKgE,eAG5ChE,KAAKowB,eACT,CAGI,GAFApwB,KAAKuwB,uBAAsB,EAAMjpB,IAE7BtH,KAAKkjB,cAUL,MARIljB,MAAKkjB,cAAcsN,cAEnBlpB,EAAcf,SAASwR,cAAc/X,KAAKkjB,cAAcnX,aACxD/L,KAAKkjB,cAAcsN,aAAc,GAS7ClpB,EAAcuD,YAAYoY,mBAAmBjjB,KAE7C,KAAK,GAAIiD,GAAI,EAAGA,EAAIjD,KAAKgD,SAASE,OAAQD,IAEtCjD,KAAKgD,SAASC,GAAGyE,aAAaJ,EAGlCA,GAAcuD,YAAYI,OAEtBjL,KAAK2D,UAEL2D,EAAcyD,cAAcQ,YAG5BvL,KAAK0C,OAEL4E,EAAc4D,YAAYI,QAAQtL,KAAK0C,MAAO4E,GAGlDA,EAAcuD,YAAYQ,UAW9BpL,EAAK+vB,aAAantB,UAAU8E,cAAgB,SAASL,GAEjD,GAAKtH,KAAKyB,SAAYzB,KAAK2B,YAA6B,IAAf3B,KAAKwB,MAA9C,CAKA,GAAI8L,GAAUhG,EAAcgG,OAExBtN,MAAK0C,OAEL4E,EAAc4D,YAAYC,SAASnL,KAAK0C,MAAO4E,GAGnDgG,EAAQG,YAAczN,KAAK8B,UAE3B,IAAImD,GAAKjF,KAAK+B,eACVsE,EAAaiB,EAAcjB,WAC3BvB,EAAMG,EAAGH,GAAKuB,EAAciB,EAAc0G,OAC1CjJ,EAAME,EAAGF,GAAKsB,EAAciB,EAAc2G,MAI9C,IAFAX,EAAQa,aAAalJ,EAAGP,EAAI2B,EAAYpB,EAAGN,EAAI0B,EAAYpB,EAAGL,EAAIyB,EAAYpB,EAAGJ,EAAIwB,EAAYvB,EAAIC,GAEjG/E,KAAKowB,eACT,CAGI,GAFApwB,KAAKuwB,uBAAsB,EAAOjpB,IAE9BtH,KAAKkjB,cAML,MAJAljB,MAAKmwB,YAAc7iB,EAAQmjB,cAAczwB,KAAKkjB,cAAcnX,YAAY6C,OAAQ,UAQxF,GAAI8hB,GAAmBppB,EAAc+F,gBAGjCrN,MAAKkE,YAAcoD,EAAc+F,mBAEjC/F,EAAc+F,iBAAmBrN,KAAKkE,UACtCoJ,EAAQC,yBAA2BtN,EAAKuN,iBAAiBlG,EAAc+F,kBAG3E,IAAIgW,GAAerjB,KAAKqjB,aACpBK,EAAY1jB,KAAK0jB,SAErBL,GAAahe,GAAKrF,KAAKkjB,cAAcnX,YAAYpF,MACjD0c,EAAa/d,GAAKtF,KAAKkjB,cAAcnX,YAAYnF,OAGjD0G,EAAQjM,MAAMqiB,EAAUre,EAAGqe,EAAUpe,GACrCgI,EAAQme,UAAUpI,EAAahe,EAAKrF,KAAKkI,OAAO7C,GAAKrF,KAAKsI,OAAS+a,EAAa/d,EAAKtF,KAAKkI,OAAO5C,GAAKtF,KAAKuI,SAE3G+E,EAAQua,UAAY7nB,KAAKmwB,WAEzB,IAAIrrB,IAAMue,EAAahe,EACnBN,GAAMse,EAAa/d,EACnBylB,EAAK/qB,KAAKsI,OAASob,EAAUre,EAC7B2lB,EAAKhrB,KAAKuI,QAAUmb,EAAUpe,CAG9BgC,GAAc4G,cAEdpJ,GAAM,EACNC,GAAM,EACNgmB,GAAM,EACNC,GAAM,GAGV1d,EAAQ0a,SAASljB,EAAIC,EAAIgmB,EAAIC,GAG7B1d,EAAQjM,MAAM,EAAIqiB,EAAUre,EAAG,EAAIqe,EAAUpe,GAC7CgI,EAAQme,WAAWpI,EAAahe,EAAKrF,KAAKkI,OAAO7C,EAAIrF,KAAKsI,QAAU+a,EAAa/d,EAAKtF,KAAKkI,OAAO5C,EAAItF,KAAKuI,SAEvGvI,KAAK0C,OAEL4E,EAAc4D,YAAYI,QAAQhE,EAGtC,KAAK,GAAIrE,GAAI,EAAGA,EAAIjD,KAAKgD,SAASE,OAAQD,IAEtCjD,KAAKgD,SAASC,GAAG0E,cAAcL,EAI/BopB,KAAqB1wB,KAAKkE,YAE1BoD,EAAc+F,iBAAmBqjB,EACjCpjB,EAAQC,yBAA2BtN,EAAKuN,iBAAiBkjB,MAYjEzwB,EAAK+vB,aAAantB,UAAUoJ,gBAAkB,aAY9ChM,EAAK+vB,aAAantB,UAAU0tB,sBAAwB,SAASI,EAAiBrpB,GAE1E,GAAKtH,KAAK8H,QAAQiE,YAAYC,UAA9B,CAKA,GAAIlE,GAAU9H,KAAK8H,QACfoE,EAAQpE,EAAQoE,MAEhB0kB,EAAc5wB,KAAK6wB,OAAOC,aAAe9wB,KAAK6wB,OAAOlqB,MACrDoqB,EAAe/wB,KAAK6wB,OAAOG,aAAehxB,KAAK6wB,OAAOjqB,OAEtDiH,EAAK,EACLE,EAAK,CAEL/N,MAAK6wB,OAAOI,UAEZpjB,EAAK7N,KAAK6wB,OAAOK,kBACjBnjB,EAAK/N,KAAK6wB,OAAOM,mBAGjBR,IAEAC,EAAc3wB,EAAKiR,kBAAkB0f,GACrCG,EAAe9wB,EAAKiR,kBAAkB6f,IAGtC/wB,KAAKkwB,cAELlwB,KAAKkwB,aAAanoB,OAAO6oB,EAAaG,GACtC/wB,KAAKkjB,cAAcnX,YAAYpF,MAAQiqB,EACvC5wB,KAAKkjB,cAAcnX,YAAYnF,OAASmqB,EACxC/wB,KAAKkjB,cAAcsN,aAAc,IAIjCxwB,KAAKkwB,aAAe,GAAIjwB,GAAKinB,aAAa0J,EAAaG,GACvD/wB,KAAKkjB,cAAgBjjB,EAAKuL,QAAQ6e,WAAWrqB,KAAKkwB,aAAatf,QAC/D5Q,KAAKkjB,cAAcwH,UAAW,EAC9B1qB,KAAKkjB,cAAcsN,aAAc,GAGjCxwB,KAAKiwB,eAELjwB,KAAKkwB,aAAa5iB,QAAQ8jB,YAAc,UACxCpxB,KAAKkwB,aAAa5iB,QAAQ+jB,WAAW,EAAG,EAAGT,EAAaG,GAI5D,IAAInZ,GAAI9P,EAAQsF,KAAKzG,MACjByc,EAAItb,EAAQsF,KAAKxG,QAEjBgR,IAAMgZ,GAAexN,IAAM2N,KAE3BnZ,EAAIgZ,EACJxN,EAAI2N,GAGR/wB,KAAKkwB,aAAa5iB,QAAQmB,UAAU3G,EAAQiE,YAAY6C,OACjC9G,EAAQsF,KAAK/H,EACbyC,EAAQsF,KAAK9H,EACbwC,EAAQsF,KAAKzG,MACbmB,EAAQsF,KAAKxG,OACbiH,EACAE,EACA6J,EACAwL,GAEvBpjB,KAAKsjB,gBAAgBje,EAAI6G,EAAMvF,MAAQiqB,EACvC5wB,KAAKsjB,gBAAgBhe,EAAI4G,EAAMtF,OAASmqB,EAExC/wB,KAAKowB,gBAAiB,EAEtBpwB,KAAKkjB,cAAcnX,YAAYqQ,WAAY,IAU/Cnc,EAAK+vB,aAAantB,UAAUgD,UAAY,WAEpC,GAAIc,GAAQ3G,KAAKsI,OACb1B,EAAS5G,KAAKuI,QAEdgE,EAAK5F,GAAS,EAAE3G,KAAKkI,OAAO7C,GAC5BmH,EAAK7F,GAAS3G,KAAKkI,OAAO7C,EAE1BoH,EAAK7F,GAAU,EAAE5G,KAAKkI,OAAO5C,GAC7BoH,EAAK9F,GAAU5G,KAAKkI,OAAO5C,EAE3BvD,EAAiB/B,KAAK+B,eAEtB2C,EAAI3C,EAAe2C,EACnBC,EAAI5C,EAAe4C,EACnBC,EAAI7C,EAAe6C,EACnBC,EAAI9C,EAAe8C,EACnBC,EAAK/C,EAAe+C,GACpBC,EAAKhD,EAAegD,GAEpB6H,EAAKlI,EAAI8H,EAAK5H,EAAI8H,EAAK5H,EACvB+H,EAAKhI,EAAI6H,EAAK/H,EAAI6H,EAAKzH,EAEvB+H,EAAKpI,EAAI6H,EAAK3H,EAAI8H,EAAK5H,EACvBiI,EAAKlI,EAAI6H,EAAK/H,EAAI4H,EAAKxH,EAEvBiI,EAAKtI,EAAI6H,EAAK3H,EAAI6H,EAAK3H,EACvBmI,EAAKpI,EAAI4H,EAAK9H,EAAI4H,EAAKxH,EAEvBmI,EAAMxI,EAAI8H,EAAK5H,EAAI6H,EAAK3H,EACxBqI,EAAMtI,EAAI4H,EAAK9H,EAAI6H,EAAKzH,EAExB0F,IAAQF,EAAAA,GACRG,IAAQH,EAAAA,GAERD,EAAOC,EAAAA,EACPC,EAAOD,EAAAA,CAEXD,GAAYA,EAALsC,EAAYA,EAAKtC,EACxBA,EAAYA,EAALwC,EAAYA,EAAKxC,EACxBA,EAAYA,EAAL0C,EAAYA,EAAK1C,EACxBA,EAAYA,EAAL4C,EAAYA,EAAK5C,EAExBE,EAAYA,EAALqC,EAAYA,EAAKrC,EACxBA,EAAYA,EAALuC,EAAYA,EAAKvC,EACxBA,EAAYA,EAALyC,EAAYA,EAAKzC,EACxBA,EAAYA,EAAL2C,EAAYA,EAAK3C,EAExBC,EAAOmC,EAAKnC,EAAOmC,EAAKnC,EACxBA,EAAOqC,EAAKrC,EAAOqC,EAAKrC,EACxBA,EAAOuC,EAAKvC,EAAOuC,EAAKvC,EACxBA,EAAOyC,EAAKzC,EAAOyC,EAAKzC,EAExBC,EAAOmC,EAAKnC,EAAOmC,EAAKnC,EACxBA,EAAOqC,EAAKrC,EAAOqC,EAAKrC,EACxBA,EAAOuC,EAAKvC,EAAOuC,EAAKvC,EACxBA,EAAOyC,EAAKzC,EAAOyC,EAAKzC,CAExB,IAAIlE,GAASxG,KAAKuC,OAWlB,OATAiE,GAAOnB,EAAIiF,EACX9D,EAAOG,MAAQ8D,EAAOH,EAEtB9D,EAAOlB,EAAIkF,EACXhE,EAAOI,OAAS8D,EAAOF,EAGvBxK,KAAKyC,eAAiB+D,EAEfA,GAGXvG,EAAK+vB,aAAantB,UAAUE,QAAU,WAElC9C,EAAKwH,OAAO5E,UAAUE,QAAQ2C,KAAK1F,MAE/BA,KAAKkwB,eAELlwB,KAAKkwB,aAAantB,UAClB/C,KAAKkwB,aAAe,MAGxBlwB,KAAK0jB,UAAY,KACjB1jB,KAAKsjB,gBAAkB,KACvBtjB,KAAKqjB,aAAe,KAEhBrjB,KAAKkjB,gBAELljB,KAAKkjB,cAAcngB,SAAQ,GAC3B/C,KAAKkjB,cAAgB,OAW7B9f,OAAOC,eAAepD,EAAK+vB,aAAantB,UAAW,SAE/CS,IAAK,WACD,MAAOtD,MAAKsI,QAGhB9E,IAAK,SAASC,GACVzD,KAAKsI,OAAS7E,KAWtBL,OAAOC,eAAepD,EAAK+vB,aAAantB,UAAW,UAE/CS,IAAK,WACD,MAAQtD,MAAKuI,SAGjB/E,IAAK,SAASC,GACVzD,KAAKuI,QAAU9E,KASI,mBAAZ6tB,UACe,mBAAXC,SAA0BA,OAAOD,UACxCA,QAAUC,OAAOD,QAAUrxB,GAE/BqxB,QAAQrxB,KAAOA,GACU,mBAAXuxB,SAA0BA,OAAOC,IAC/CD,OAAO,OAAQ,WAAc,MAAOzxB,GAAKE,KAAOA,MAEhDF,EAAKE,KAAOA,EAGTA,IACRyF,KAAK1F,MAOR,WA45dA,QAAS0xB,GAAiBC,EAAaC,GAMnC5xB,KAAK6xB,aAAeF,EAMpB3xB,KAAK8xB,WAAaF,EAMlB5xB,KAAK+xB,cAAgB,KA56drB,GAAIhyB,GAAOC,KAYX6oB,EAASA,IAOTxoB,QAAS,QAOT2xB,SAOAC,KAAM,EAONC,OAAQ,EAORC,MAAO,EAOPC,SAAU,EAOVC,KAAM,EAONC,KAAM,EAONC,MAAO,EAOPC,GAAI,EAOJC,KAAM,EAONC,OAAQ,EAORC,OAAQ,EAORC,MAAO,EAOPC,SAAU,EAOVC,KAAM,EAONC,WAAY,EAOZC,WAAY,EAOZC,MAAO,EAOPC,cAAe,EAOfC,QAAS,EAOTC,aAAc,GAOdC,QAAS,GAOTC,QAAS,GAOTC,WAAY,GAOZC,cAAe,GAOfC,aAAc,GAOdC,QAAS,GAOTC,YAAa,GAObC,UAAW,GAOXC,QAAS,GAOTC,KAAM,GAONC,OAAQ,GAORC,UAAW,GAOXC,KAAM,GAONC,OAAQ,GAORC,MAAO,GAOPC,iBAAkB,GAOlBC,SAAU,GAOVC,MAAO,GAOPC,cAAe,GAOfC,WAAY,EAOZC,SAAU,EAOVC,UAAW,EAOXC,SAAU,EAOVC,SAAU,IAOVC,WAAY,GAOZC,WAAY,IAOZC,YAAa,EAObC,iBAAkB,IAOlBC,iBAAkB,IAOlBC,iBAAkB,GAOlBC,iBAAkB,IAOlBC,SAAU,EAOVC,WAAY,EAOZC,UAAW,EAOXC,SAAU,EAOVC,YAAa,EAObC,YAAa,EAObC,OAAQ,EAORC,UAAW,EAOXC,aAAc,EAOdC,aAAc,EAOdC,YAAa,GAObC,cAAe,GAOfC,aAAc,GA2Bd7xB,YACIE,OAAO,EACPoY,IAAI,EACJrY,SAAS,EACTyY,OAAO,EACPC,QAAQ,EACRC,OAAO,EACPC,QAAQ,EACRC,YAAY,EACZC,WAAW,EACXC,WAAW,EACXC,WAAW,GACXC,WAAW,GACXC,UAAU,GACVC,IAAI,GACJC,WAAW,GACXC,MAAM,GACNC,WAAW,IAgBf/P,YACI0Y,QAAQ,EACRzY,OAAO,EACPmO,QAAQ,GAGZ9b,KAAMA,SA6GV,IAnGKY,KAAKo1B,QACNp1B,KAAKo1B,MAAQ,SAAe5wB,GACxB,MAAW,GAAJA,EAAQxE,KAAKgH,KAAKxC,GAAKxE,KAAKq1B,MAAM7wB,KAO5C8wB,SAAStzB,UAAUuzB,OAGpBD,SAAStzB,UAAUuzB,KAAO,WAEtB,GAAIC,GAAQ11B,MAAMkC,UAAUwzB,KAE5B,OAAO,UAAUC,GASb,QAASC,KACL,GAAIC,GAAOC,EAAUC,OAAOL,EAAM3wB,KAAKixB,WACvC1yB,GAAOgD,MAAMjH,eAAgBu2B,GAAQv2B,KAAOs2B,EAASE,GATzD,GAAIvyB,GAASjE,KAAMy2B,EAAYJ,EAAM3wB,KAAKixB,UAAW,EAErD,IAAsB,kBAAX1yB,GAEP,KAAM,IAAI2yB,UAqBd,OAbAL,GAAM1zB,UAAY,QAAUg0B,GAAEC,GAM1B,MALIA,KAEAD,EAAEh0B,UAAYi0B,GAGZ92B,eAAgB62B,GAAtB,OAGW,GAAIA,IAEhB5yB,EAAOpB,WAEH0zB,OAQd51B,MAAM2R,UAEP3R,MAAM2R,QAAU,SAAUykB,GAEtB,MAA8C,kBAAvC3zB,OAAOP,UAAUilB,SAASpiB,KAAKqxB,KAQzCp2B,MAAMkC,UAAUm0B,UAEjBr2B,MAAMkC,UAAUm0B,QAAU,SAASC,GAE/B,YAEA,IAAa,SAATj3B,MAA4B,OAATA,KAEnB,KAAM,IAAI42B,UAGd,IAAIM,GAAI9zB,OAAOpD,MACXm3B,EAAMD,EAAEh0B,SAAW,CAEvB,IAAmB,kBAAR+zB,GAEP,KAAM,IAAIL,UAKd,KAAK,GAFDN,GAAUK,UAAUzzB,QAAU,EAAIyzB,UAAU,GAAK,OAE5C1zB,EAAI,EAAOk0B,EAAJl0B,EAASA,IAEjBA,IAAKi0B,IAELD,EAAIvxB,KAAK4wB,EAASY,EAAEj0B,GAAIA,EAAGi0B,KAWT,kBAAvBrkB,QAAOpS,aAA4D,gBAAvBoS,QAAOpS,YAC9D,CACI,GAAI22B,GAAa,SAAShiB,GAEtB,GAAI0hB,GAAQ,GAAIn2B,MAEhBkS,QAAOuC,GAAQ,SAAS2hB,GAEpB,GAAoB,gBAAV,GACV,CACIp2B,MAAM+E,KAAK1F,KAAM+2B,GACjB/2B,KAAKkD,OAAS6zB,CAEd,KAAK,GAAI9zB,GAAI,EAAGA,EAAIjD,KAAKkD,OAAQD,IAE7BjD,KAAKiD,GAAK,MAIlB,CACItC,MAAM+E,KAAK1F,KAAM+2B,EAAI7zB,QAErBlD,KAAKkD,OAAS6zB,EAAI7zB,MAElB,KAAK,GAAID,GAAI,EAAGA,EAAIjD,KAAKkD,OAAQD,IAE7BjD,KAAKiD,GAAK8zB,EAAI9zB,KAK1B4P,OAAOuC,GAAMvS,UAAYi0B,EACzBjkB,OAAOuC,GAAMtS,YAAc+P,OAAOuC,GAGtCgiB,GAAW,eACXA,EAAW,cAMVvkB,OAAOC,UAERD,OAAOC,WACPD,OAAOC,QAAQC,IAAMF,OAAOC,QAAQukB,OAAS,aAC7CxkB,OAAOC,QAAQwkB,KAAOzkB,OAAOC,QAAQukB,OAAS,cAalDxO,EAAO0O,OAUHC,YAAa,SAASC,EAAKC,GAQvB,IANA,GAAIC,GAAQD,EAAKE,MAAM,KACnBC,EAAOF,EAAMnX,MACbsX,EAAIH,EAAMz0B,OACVD,EAAI,EACJ80B,EAAUJ,EAAM,GAETG,EAAJ70B,IAAUw0B,EAAMA,EAAIM,KAEvBA,EAAUJ,EAAM10B,GAChBA,GAGJ,OAAIw0B,GAEOA,EAAII,GAIJ,MAafG,YAAa,SAASP,EAAKC,EAAMj0B,GAQ7B,IANA,GAAIk0B,GAAQD,EAAKE,MAAM,KACnBC,EAAOF,EAAMnX,MACbsX,EAAIH,EAAMz0B,OACVD,EAAI,EACJ80B,EAAUJ,EAAM,GAETG,EAAJ70B,IAAUw0B,EAAMA,EAAIM,KAEvBA,EAAUJ,EAAM10B,GAChBA,GAQJ,OALIw0B,KAEAA,EAAII,GAAQp0B,GAGTg0B,GAcXQ,WAAY,SAAUC,GAElB,MADexuB,UAAXwuB,IAAwBA,EAAS,IAC9BA,EAAS,GAAsB,IAAhBr3B,KAAKs3B,UAAkBD,GAWjDE,aAAc,SAAUC,EAASC,GAC7B,MAAQz3B,MAAKs3B,SAAW,GAAOE,EAAUC,GAW7CC,eAAgB,SAAUhX,EAAMiX,GAE5B,GAAIC,GAAI,EACJC,EAAK,CA4BT,OA1BoB,gBAATnX,GAGiB,MAApBA,EAAKwG,OAAO,KAEZ0Q,EAAIE,SAASpX,EAAM,IAAM,IAIrBmX,EAFc,IAAdF,EAEK3lB,OAAO+lB,WAAaH,EAIpB5lB,OAAOgmB,YAAcJ,GAK9BC,EAAKC,SAASpX,EAAM,IAKxBmX,EAAKnX,EAGFmX,GAcXI,IAAK,SAAUC,EAAK5B,EAAK2B,EAAKE,GAE1B,GAAYtvB,SAARytB,EAAqB,GAAIA,GAAM,CACnC,IAAYztB,SAARovB,EAAqB,GAAIA,GAAM,GACnC,IAAYpvB,SAARsvB,EAAqB,GAAIA,GAAM,CAEnC,IAAIC,GAAS,CAEb,IAAI9B,EAAM,GAAK4B,EAAI71B,OAEf,OAAQ81B,GAEJ,IAAK,GACDD,EAAM,GAAIp4B,OAAMw2B,EAAM,EAAI4B,EAAI71B,QAAQqP,KAAKumB,GAAOC,CAClD,MAEJ,KAAK,GACD,GAAIG,GAAQr4B,KAAKgH,MAAMoxB,EAAS9B,EAAM4B,EAAI71B,QAAU,GAChDi2B,EAAOF,EAASC,CACpBH,GAAM,GAAIp4B,OAAMw4B,EAAK,GAAG5mB,KAAKumB,GAAOC,EAAM,GAAIp4B,OAAMu4B,EAAM,GAAG3mB,KAAKumB,EAClE,MAEJ,SACIC,GAAY,GAAIp4B,OAAMw2B,EAAM,EAAI4B,EAAI71B,QAAQqP,KAAKumB,GAK7D,MAAOC,IAWXK,cAAe,SAAU3B,GAMrB,GAAoB,gBAAV,IAAsBA,EAAI4B,UAAY5B,IAAQA,EAAI5kB,OAExD,OAAO,CAOX,KACI,GAAI4kB,EAAI30B,iBAAqBw2B,eAAe5zB,KAAK+xB,EAAI30B,YAAYD,UAAW,iBAExE,OAAO,EAEb,MAAO02B,GACL,OAAO,EAKX,OAAO,GAWXC,OAAQ,WAEJ,GAAIC,GAASC,EAAMhpB,EAAKipB,EAAMC,EAAaC,EACvC51B,EAAS0yB,UAAU,OACnB1zB,EAAI,EACJC,EAASyzB,UAAUzzB,OACnB42B,GAAO,CAkBX,KAfsB,iBAAX71B,KAEP61B,EAAO71B,EACPA,EAAS0yB,UAAU,OAEnB1zB,EAAI,GAIJC,IAAWD,IAEXgB,EAASjE,OACPiD,GAGKC,EAAJD,EAAYA,IAGf,GAAgC,OAA3Bw2B,EAAU9C,UAAU1zB,IAGrB,IAAKy2B,IAAQD,GAET/oB,EAAMzM,EAAOy1B,GACbC,EAAOF,EAAQC,GAGXz1B,IAAW01B,IAMXG,GAAQH,IAAS9Q,EAAO0O,MAAM6B,cAAcO,KAAUC,EAAcj5B,MAAM2R,QAAQqnB,MAE9EC,GAEAA,GAAc,EACdC,EAAQnpB,GAAO/P,MAAM2R,QAAQ5B,GAAOA,MAIpCmpB,EAAQnpB,GAAOmY,EAAO0O,MAAM6B,cAAc1oB,GAAOA,KAIrDzM,EAAOy1B,GAAQ7Q,EAAO0O,MAAMiC,OAAOM,EAAMD,EAAOF,IAIlCjwB,SAATiwB,IAEL11B,EAAOy1B,GAAQC,GAO/B,OAAO11B,IAgBX81B,eAAgB,SAAU91B,EAAQ+1B,EAAOC,GAErBvwB,SAAZuwB,IAAyBA,GAAU,EAIvC,KAAK,GAFDC,GAAY92B,OAAO+2B,KAAKH,GAEnB/2B,EAAI,EAAGA,EAAIi3B,EAAUh3B,OAAQD,IACtC,CACI,GAAI8R,GAAMmlB,EAAUj3B,GAChBQ,EAAQu2B,EAAMjlB,IAEbklB,GAAYllB,IAAO9Q,MAOhBR,GACsB,kBAAdA,GAAMH,KAA2C,kBAAdG,GAAMD,IAcjDS,EAAO8Q,GAAOtR,EAXa,kBAAhBA,GAAMo2B,MAEb51B,EAAO8Q,GAAOtR,EAAMo2B,QAIpBz2B,OAAOC,eAAeY,EAAQ8Q,EAAKtR,MAqBvDu2B,MAAO,SAAU7yB,EAAMizB,GAEnB,IAAKjzB,GAA0B,gBAAX,GAEhB,MAAOizB,EAGX,KAAK,GAAIrlB,KAAO5N,GAChB,CACI,GAAIkzB,GAAIlzB,EAAK4N,EAEb,KAAIslB,EAAEC,aAAcD,EAAEE,UAAtB,CAKA,GAAInlB,SAAejO,GAAK4N,EAEnB5N,GAAK4N,IAAiB,WAATK,QAOFglB,GAAGrlB,KAAUK,EAErBglB,EAAGrlB,GAAO8T,EAAO0O,MAAMyC,MAAM7yB,EAAK4N,GAAMqlB,EAAGrlB,IAI3CqlB,EAAGrlB,GAAO8T,EAAO0O,MAAMyC,MAAM7yB,EAAK4N,GAAM,GAAIslB,GAAEv3B,aAXlDs3B,EAAGrlB,GAAO5N,EAAK4N,IAgBvB,MAAOqlB,KAsBfvR,EAAO2R,OAAS,SAAUn1B,EAAGC,EAAGm1B,GAE5Bp1B,EAAIA,GAAK,EACTC,EAAIA,GAAK,EACTm1B,EAAWA,GAAY,EAKvBz6B,KAAKqF,EAAIA,EAKTrF,KAAKsF,EAAIA,EAMTtF,KAAK06B,UAAYD,EAMjBz6B,KAAK26B,QAAU,EAEXF,EAAW,IAEXz6B,KAAK26B,QAAqB,GAAXF,GAOnBz6B,KAAKoV,KAAOyT,EAAOkL,QAIvBlL,EAAO2R,OAAO33B,WAQV+3B,cAAe,WAEX,MAAO,IAAK/5B,KAAKC,GAAKd,KAAK26B,UAY/BxC,OAAQ,SAAU0C,GAEFnxB,SAARmxB,IAAqBA,EAAM,GAAIhS,GAAOznB,MAE1C,IAAI81B,GAAI,EAAIr2B,KAAKC,GAAKD,KAAKs3B,SACvB2C,EAAIj6B,KAAKs3B,SAAWt3B,KAAKs3B,SACzBjd,EAAK4f,EAAI,EAAK,EAAIA,EAAIA,EACtBz1B,EAAI6V,EAAIra,KAAKuE,IAAI8xB,GACjB5xB,EAAI4V,EAAIra,KAAKsE,IAAI+xB,EAKrB,OAHA2D,GAAIx1B,EAAIrF,KAAKqF,EAAKA,EAAIrF,KAAK+6B,OAC3BF,EAAIv1B,EAAItF,KAAKsF,EAAKA,EAAItF,KAAK+6B,OAEpBF,GAUXh1B,UAAW,WAEP,MAAO,IAAIgjB,GAAOrmB,UAAUxC,KAAKqF,EAAIrF,KAAK+6B,OAAQ/6B,KAAKsF,EAAItF,KAAK+6B,OAAQ/6B,KAAKy6B,SAAUz6B,KAAKy6B,WAYhGO,MAAO,SAAU31B,EAAGC,EAAGm1B,GAOnB,MALAz6B,MAAKqF,EAAIA,EACTrF,KAAKsF,EAAIA,EACTtF,KAAK06B,UAAYD,EACjBz6B,KAAK26B,QAAqB,GAAXF,EAERz6B,MAUXi7B,SAAU,SAAUrsB,GAEhB,MAAO5O,MAAKg7B,MAAMpsB,EAAOvJ,EAAGuJ,EAAOtJ,EAAGsJ,EAAO6rB,WAUjDS,OAAQ,SAAUC,GAMd,MAJAA,GAAK91B,EAAIrF,KAAKqF,EACd81B,EAAK71B,EAAItF,KAAKsF,EACd61B,EAAKV,SAAWz6B,KAAK06B,UAEdS,GAYXC,SAAU,SAAUD,EAAME,GAEtB,GAAID,GAAWvS,EAAOhoB,KAAKu6B,SAASp7B,KAAKqF,EAAGrF,KAAKsF,EAAG61B,EAAK91B,EAAG81B,EAAK71B,EACjE,OAAO+1B,GAAQx6B,KAAKw6B,MAAMD,GAAYA,GAU1CvB,MAAO,SAAUyB,GAWb,MATe5xB,UAAX4xB,GAAmC,OAAXA,EAExBA,EAAS,GAAIzS,GAAO2R,OAAOx6B,KAAKqF,EAAGrF,KAAKsF,EAAGtF,KAAKy6B,UAIhDa,EAAON,MAAMh7B,KAAKqF,EAAGrF,KAAKsF,EAAGtF,KAAKy6B,UAG/Ba,GAWXC,SAAU,SAAUl2B,EAAGC,GAEnB,MAAOujB,GAAO2R,OAAOe,SAASv7B,KAAMqF,EAAGC,IAY3Ck2B,mBAAoB,SAAUC,EAAOC,EAAWb,GAE5C,MAAOhS,GAAO2R,OAAOgB,mBAAmBx7B,KAAMy7B,EAAOC,EAAWb,IAWpEnhB,OAAQ,SAAU7L,EAAIE,GAKlB,MAHA/N,MAAKqF,GAAKwI,EACV7N,KAAKsF,GAAKyI,EAEH/N,MAUX27B,YAAa,SAAUnM,GACnB,MAAOxvB,MAAK0Z,OAAO8V,EAAMnqB,EAAGmqB,EAAMlqB,IAQtCwiB,SAAU,WACN,MAAO,sBAAwB9nB,KAAKqF,EAAI,MAAQrF,KAAKsF,EAAI,aAAetF,KAAKy6B,SAAW,WAAaz6B,KAAK+6B,OAAS,QAK3HlS,EAAO2R,OAAO33B,UAAUC,YAAc+lB,EAAO2R,OAQ7Cp3B,OAAOC,eAAewlB,EAAO2R,OAAO33B,UAAW,YAE3CS,IAAK,WACD,MAAOtD,MAAK06B,WAGhBl3B,IAAK,SAAUC,GAEPA,EAAQ,IAERzD,KAAK06B,UAAYj3B,EACjBzD,KAAK26B,QAAkB,GAARl3B,MAW3BL,OAAOC,eAAewlB,EAAO2R,OAAO33B,UAAW,UAE3CS,IAAK,WACD,MAAOtD,MAAK26B,SAGhBn3B,IAAK,SAAUC,GAEPA,EAAQ,IAERzD,KAAK26B,QAAUl3B,EACfzD,KAAK06B,UAAoB,EAARj3B,MAY7BL,OAAOC,eAAewlB,EAAO2R,OAAO33B,UAAW,QAE3CS,IAAK,WACD,MAAOtD,MAAKqF,EAAIrF,KAAK26B,SAGzBn3B,IAAK,SAAUC,GAEPA,EAAQzD,KAAKqF,GAEbrF,KAAK26B,QAAU,EACf36B,KAAK06B,UAAY,GAIjB16B,KAAK+6B,OAAS/6B,KAAKqF,EAAI5B,KAYnCL,OAAOC,eAAewlB,EAAO2R,OAAO33B,UAAW,SAE3CS,IAAK,WACD,MAAOtD,MAAKqF,EAAIrF,KAAK26B,SAGzBn3B,IAAK,SAAUC,GAEPA,EAAQzD,KAAKqF,GAEbrF,KAAK26B,QAAU,EACf36B,KAAK06B,UAAY,GAIjB16B,KAAK+6B,OAASt3B,EAAQzD,KAAKqF,KAYvCjC,OAAOC,eAAewlB,EAAO2R,OAAO33B,UAAW,OAE3CS,IAAK,WACD,MAAOtD,MAAKsF,EAAItF,KAAK26B,SAGzBn3B,IAAK,SAAUC,GAEPA,EAAQzD,KAAKsF,GAEbtF,KAAK26B,QAAU,EACf36B,KAAK06B,UAAY,GAIjB16B,KAAK+6B,OAAS/6B,KAAKsF,EAAI7B,KAYnCL,OAAOC,eAAewlB,EAAO2R,OAAO33B,UAAW,UAE3CS,IAAK,WACD,MAAOtD,MAAKsF,EAAItF,KAAK26B,SAGzBn3B,IAAK,SAAUC,GAEPA,EAAQzD,KAAKsF,GAEbtF,KAAK26B,QAAU,EACf36B,KAAK06B,UAAY,GAIjB16B,KAAK+6B,OAASt3B,EAAQzD,KAAKsF,KAavClC,OAAOC,eAAewlB,EAAO2R,OAAO33B,UAAW,QAE3CS,IAAK,WAED,MAAItD,MAAK26B,QAAU,EAER95B,KAAKC,GAAKd,KAAK26B,QAAU36B,KAAK26B,QAI9B,KAanBv3B,OAAOC,eAAewlB,EAAO2R,OAAO33B,UAAW,SAE3CS,IAAK,WACD,MAA2B,KAAnBtD,KAAK06B,WAGjBl3B,IAAK,SAAUC,GAEPA,KAAU,GAEVzD,KAAKg7B,MAAM,EAAG,EAAG,MAe7BnS,EAAO2R,OAAOe,SAAW,SAAU72B,EAAGW,EAAGC,GAGrC,GAAIZ,EAAEq2B,OAAS,GAAK11B,GAAKX,EAAEy0B,MAAQ9zB,GAAKX,EAAEw0B,OAAS5zB,GAAKZ,EAAEk3B,KAAOt2B,GAAKZ,EAAEm3B,OACxE;AACI,GAAIhuB,IAAMnJ,EAAEW,EAAIA,IAAMX,EAAEW,EAAIA,GACxB0I,GAAMrJ,EAAEY,EAAIA,IAAMZ,EAAEY,EAAIA,EAE5B,OAAQuI,GAAKE,GAAQrJ,EAAEq2B,OAASr2B,EAAEq2B,OAIlC,OAAO,GAYflS,EAAO2R,OAAOsB,OAAS,SAAUp3B,EAAGC,GAChC,MAAQD,GAAEW,GAAKV,EAAEU,GAAKX,EAAEY,GAAKX,EAAEW,GAAKZ,EAAE+1B,UAAY91B,EAAE81B,UAWxD5R,EAAO2R,OAAOuB,WAAa,SAAUr3B,EAAGC,GACpC,MAAQkkB,GAAOhoB,KAAKu6B,SAAS12B,EAAEW,EAAGX,EAAEY,EAAGX,EAAEU,EAAGV,EAAEW,IAAOZ,EAAEq2B,OAASp2B,EAAEo2B,QAYtElS,EAAO2R,OAAOgB,mBAAqB,SAAU92B,EAAG+2B,EAAOC,EAAWb,GAa9D,MAXkBnxB,UAAdgyB,IAA2BA,GAAY,GAC/BhyB,SAARmxB,IAAqBA,EAAM,GAAIhS,GAAOznB,OAEtCs6B,KAAc,IAEdD,EAAQ5S,EAAOhoB,KAAKm7B,SAASP,IAGjCZ,EAAIx1B,EAAIX,EAAEW,EAAIX,EAAEq2B,OAASl6B,KAAKuE,IAAIq2B,GAClCZ,EAAIv1B,EAAIZ,EAAEY,EAAIZ,EAAEq2B,OAASl6B,KAAKsE,IAAIs2B,GAE3BZ,GAWXhS,EAAO2R,OAAOyB,oBAAsB,SAAUr3B,EAAGsW,GAE7C,GAAIxM,GAAK7N,KAAKq7B,IAAIt3B,EAAES,EAAI6V,EAAE7V,EAAI6V,EAAEihB,WAC5BC,EAAQlhB,EAAEihB,UAAYv3B,EAAEm2B,MAE5B,IAAIrsB,EAAK0tB,EAEL,OAAO,CAGX,IAAIztB,GAAK9N,KAAKq7B,IAAIt3B,EAAEU,EAAI4V,EAAE5V,EAAI4V,EAAEmhB,YAC5BC,EAAQphB,EAAEmhB,WAAaz3B,EAAEm2B,MAE7B,IAAIpsB,EAAK2tB,EAEL,OAAO,CAGX,IAAI5tB,GAAMwM,EAAEihB,WAAaxtB,GAAMuM,EAAEmhB,WAE7B,OAAO,CAGX,IAAIE,GAAc7tB,EAAKwM,EAAEihB,UACrBK,EAAc7tB,EAAKuM,EAAEmhB,WACrBI,EAAgBF,EAAcA,EAC9BG,EAAgBF,EAAcA,EAC9BG,EAAkB/3B,EAAEm2B,OAASn2B,EAAEm2B,MAEnC,OAAwC4B,IAAjCF,EAAgBC,GAK3Bz8B,KAAKu6B,OAAS3R,EAAO2R,OAmBrB3R,EAAO+T,QAAU,SAAUv3B,EAAGC,EAAGqB,EAAOC,GAEpCvB,EAAIA,GAAK,EACTC,EAAIA,GAAK,EACTqB,EAAQA,GAAS,EACjBC,EAASA,GAAU,EAKnB5G,KAAKqF,EAAIA,EAKTrF,KAAKsF,EAAIA,EAKTtF,KAAK2G,MAAQA,EAKb3G,KAAK4G,OAASA,EAMd5G,KAAKoV,KAAOyT,EAAO6K,SAIvB7K,EAAO+T,QAAQ/5B,WAWXm4B,MAAO,SAAU31B,EAAGC,EAAGqB,EAAOC,GAO1B,MALA5G,MAAKqF,EAAIA,EACTrF,KAAKsF,EAAIA,EACTtF,KAAK2G,MAAQA,EACb3G,KAAK4G,OAASA,EAEP5G,MAUX6F,UAAW,WAEP,MAAO,IAAIgjB,GAAOrmB,UAAUxC,KAAKqF,EAAIrF,KAAK2G,MAAO3G,KAAKsF,EAAItF,KAAK4G,OAAQ5G,KAAK2G,MAAO3G,KAAK4G,SAW5Fq0B,SAAU,SAAUrsB,GAEhB,MAAO5O,MAAKg7B,MAAMpsB,EAAOvJ,EAAGuJ,EAAOtJ,EAAGsJ,EAAOjI,MAAOiI,EAAOhI,SAU/Ds0B,OAAQ,SAASC,GAOb,MALAA,GAAK91B,EAAIrF,KAAKqF,EACd81B,EAAK71B,EAAItF,KAAKsF,EACd61B,EAAKx0B,MAAQ3G,KAAK2G,MAClBw0B,EAAKv0B,OAAS5G,KAAK4G,OAEZu0B,GAUXtB,MAAO,SAASyB,GAWZ,MATe5xB,UAAX4xB,GAAmC,OAAXA,EAExBA,EAAS,GAAIzS,GAAO+T,QAAQ58B,KAAKqF,EAAGrF,KAAKsF,EAAGtF,KAAK2G,MAAO3G,KAAK4G,QAI7D00B,EAAON,MAAMh7B,KAAKqF,EAAGrF,KAAKsF,EAAGtF,KAAK2G,MAAO3G,KAAK4G,QAG3C00B,GAYXC,SAAU,SAAUl2B,EAAGC,GAEnB,MAAOujB,GAAO+T,QAAQrB,SAASv7B,KAAMqF,EAAGC,IAY5C6yB,OAAQ,SAAU0C,GAEFnxB,SAARmxB,IAAqBA,EAAM,GAAIhS,GAAOznB,MAE1C,IAAIoD,GAAI3D,KAAKs3B,SAAWt3B,KAAKC,GAAK,EAC9Boa,EAAIra,KAAKs3B,QAQb,OANA0C,GAAIx1B,EAAIxE,KAAK0E,KAAK2V,GAAKra,KAAKuE,IAAIZ,GAChCq2B,EAAIv1B,EAAIzE,KAAK0E,KAAK2V,GAAKra,KAAKsE,IAAIX,GAEhCq2B,EAAIx1B,EAAIrF,KAAKqF,EAAKw1B,EAAIx1B,EAAIrF,KAAK2G,MAAQ,EACvCk0B,EAAIv1B,EAAItF,KAAKsF,EAAKu1B,EAAIv1B,EAAItF,KAAK4G,OAAS,EAEjCi0B,GASX/S,SAAU,WACN,MAAO,uBAAyB9nB,KAAKqF,EAAI,MAAQrF,KAAKsF,EAAI,UAAYtF,KAAK2G,MAAQ,WAAa3G,KAAK4G,OAAS,QAKtHiiB,EAAO+T,QAAQ/5B,UAAUC,YAAc+lB,EAAO+T,QAO9Cx5B,OAAOC,eAAewlB,EAAO+T,QAAQ/5B,UAAW,QAE5CS,IAAK,WACD,MAAOtD,MAAKqF,GAGhB7B,IAAK,SAAUC,GAEXzD,KAAKqF,EAAI5B,KAWjBL,OAAOC,eAAewlB,EAAO+T,QAAQ/5B,UAAW,SAE5CS,IAAK,WACD,MAAOtD,MAAKqF,EAAIrF,KAAK2G,OAGzBnD,IAAK,SAAUC,GAEPA,EAAQzD,KAAKqF,EAEbrF,KAAK2G,MAAQ,EAIb3G,KAAK2G,MAAQlD,EAAQzD,KAAKqF,KAWtCjC,OAAOC,eAAewlB,EAAO+T,QAAQ/5B,UAAW,OAE5CS,IAAK,WACD,MAAOtD,MAAKsF,GAGhB9B,IAAK,SAAUC,GACXzD,KAAKsF,EAAI7B,KAUjBL,OAAOC,eAAewlB,EAAO+T,QAAQ/5B,UAAW,UAE5CS,IAAK,WACD,MAAOtD,MAAKsF,EAAItF,KAAK4G,QAGzBpD,IAAK,SAAUC,GAEPA,EAAQzD,KAAKsF,EAEbtF,KAAK4G,OAAS,EAId5G,KAAK4G,OAASnD,EAAQzD,KAAKsF,KAYvClC,OAAOC,eAAewlB,EAAO+T,QAAQ/5B,UAAW,SAE5CS,IAAK,WACD,MAAuB,KAAftD,KAAK2G,OAA+B,IAAhB3G,KAAK4G,QAGrCpD,IAAK,SAAUC,GAEPA,KAAU,GAEVzD,KAAKg7B,MAAM,EAAG,EAAG,EAAG,MAgBhCnS,EAAO+T,QAAQrB,SAAW,SAAU72B,EAAGW,EAAGC,GAEtC,GAAIZ,EAAEiC,OAAS,GAAKjC,EAAEkC,QAAU,EAC5B,OAAO,CAIX,IAAIi2B,IAAUx3B,EAAIX,EAAEW,GAAKX,EAAEiC,MAAS,GAChCm2B,GAAUx3B,EAAIZ,EAAEY,GAAKZ,EAAEkC,OAAU,EAKrC,OAHAi2B,IAASA,EACTC,GAASA,EAEe,IAAhBD,EAAQC,GAKpB78B,KAAK28B,QAAU/T,EAAO+T,QAkBtB/T,EAAOkU,KAAO,SAAUnwB,EAAIC,EAAIC,EAAIC,GAEhCH,EAAKA,GAAM,EACXC,EAAKA,GAAM,EACXC,EAAKA,GAAM,EACXC,EAAKA,GAAM,EAKX/M,KAAKqL,MAAQ,GAAIwd,GAAOznB,MAAMwL,EAAIC,GAKlC7M,KAAK+J,IAAM,GAAI8e,GAAOznB,MAAM0L,EAAIC,GAMhC/M,KAAKoV,KAAOyT,EAAOoL,MAIvBpL,EAAOkU,KAAKl6B,WAYRm4B,MAAO,SAAUpuB,EAAIC,EAAIC,EAAIC,GAKzB,MAHA/M,MAAKqL,MAAM2vB,MAAMpuB,EAAIC,GACrB7M,KAAK+J,IAAIixB,MAAMluB,EAAIC,GAEZ/M,MAcXg9B,WAAY,SAAUC,EAAaC,EAAWC,GAI1C,MAFkBzzB,UAAdyzB,IAA2BA,GAAY,GAEvCA,EAEOn9B,KAAKg7B,MAAMiC,EAAYG,OAAO/3B,EAAG43B,EAAYG,OAAO93B,EAAG43B,EAAUE,OAAO/3B,EAAG63B,EAAUE,OAAO93B,GAGhGtF,KAAKg7B,MAAMiC,EAAY53B,EAAG43B,EAAY33B,EAAG43B,EAAU73B,EAAG63B,EAAU53B,IAc3E+3B,UAAW,SAAUh4B,EAAGC,EAAGm2B,EAAOv4B,GAK9B,MAHAlD,MAAKqL,MAAM2vB,MAAM31B,EAAGC,GACpBtF,KAAK+J,IAAIixB,MAAM31B,EAAKxE,KAAKuE,IAAIq2B,GAASv4B,EAASoC,EAAKzE,KAAKsE,IAAIs2B,GAASv4B,GAE/DlD,MAiBXs9B,OAAQ,SAAU7B,EAAOC,GAErB,GAAIhtB,IAAM1O,KAAKqL,MAAMhG,EAAIrF,KAAK+J,IAAI1E,GAAK,EACnCsJ,GAAM3O,KAAKqL,MAAM/F,EAAItF,KAAK+J,IAAIzE,GAAK,CAKvC,OAHAtF,MAAKqL,MAAMiyB,OAAO5uB,EAAIC,EAAI8sB,EAAOC,GACjC17B,KAAK+J,IAAIuzB,OAAO5uB,EAAIC,EAAI8sB,EAAOC,GAExB17B,MAgBXu9B,aAAc,SAAUl4B,EAAGC,EAAGm2B,EAAOC,GAKjC,MAHA17B,MAAKqL,MAAMiyB,OAAOj4B,EAAGC,EAAGm2B,EAAOC,GAC/B17B,KAAK+J,IAAIuzB,OAAOj4B,EAAGC,EAAGm2B,EAAOC,GAEtB17B,MAeX+7B,WAAY,SAAUyB,EAAMC,EAAWrsB,GAEnC,MAAOyX,GAAOkU,KAAKW,iBAAiB19B,KAAKqL,MAAOrL,KAAK+J,IAAKyzB,EAAKnyB,MAAOmyB,EAAKzzB,IAAK0zB,EAAWrsB,IAY/FusB,QAAS,SAAUH,GAEf,MAAO3U,GAAOkU,KAAKY,QAAQ39B,KAAMw9B,IAWrCI,SAAU,SAAU/C,GAOhB,MALYnxB,UAARmxB,IAAqBA,EAAM,GAAIhS,GAAOznB,OAE1Cy5B,EAAIx1B,GAAKrF,KAAKqL,MAAMhG,EAAIrF,KAAK+J,IAAI1E,GAAK,EACtCw1B,EAAIv1B,GAAKtF,KAAKqL,MAAM/F,EAAItF,KAAK+J,IAAIzE,GAAK,EAE/Bu1B,GAeXgD,SAAU,SAAUx4B,EAAGC,GAEnB,GAAIoJ,IAAM1O,KAAKqL,MAAMhG,EAAIrF,KAAK+J,IAAI1E,GAAK,EACnCsJ,GAAM3O,KAAKqL,MAAM/F,EAAItF,KAAK+J,IAAIzE,GAAK,EAEnCR,EAAKO,EAAIqJ,EACT3J,EAAKO,EAAIqJ,CAEb3O,MAAKqL,MAAMyyB,IAAIh5B,EAAIC,GACnB/E,KAAK+J,IAAI+zB,IAAIh5B,EAAIC,IAYrBg5B,YAAa,SAAU14B,EAAGC,GAEtB,OAASD,EAAIrF,KAAKqL,MAAMhG,IAAMrF,KAAK+J,IAAIzE,EAAItF,KAAKqL,MAAM/F,MAAQtF,KAAK+J,IAAI1E,EAAIrF,KAAKqL,MAAMhG,IAAMC,EAAItF,KAAKqL,MAAM/F,IAY/G04B,eAAgB,SAAU34B,EAAGC,GAEzB,GAAI24B,GAAOp9B,KAAKq9B,IAAIl+B,KAAKqL,MAAMhG,EAAGrF,KAAK+J,IAAI1E,GACvC84B,EAAOt9B,KAAK+G,IAAI5H,KAAKqL,MAAMhG,EAAGrF,KAAK+J,IAAI1E,GACvC+4B,EAAOv9B,KAAKq9B,IAAIl+B,KAAKqL,MAAM/F,EAAGtF,KAAK+J,IAAIzE,GACvC+4B,EAAOx9B,KAAK+G,IAAI5H,KAAKqL,MAAM/F,EAAGtF,KAAK+J,IAAIzE,EAE3C,OAAQtF,MAAK+9B,YAAY14B,EAAGC,IAAOD,GAAK44B,GAAaE,GAAL94B,GAAeC,GAAK84B,GAAaC,GAAL/4B,GAYhF6yB,OAAQ,SAAU0C,GAEFnxB,SAARmxB,IAAqBA,EAAM,GAAIhS,GAAOznB,MAE1C,IAAI81B,GAAIr2B,KAAKs3B,QAKb,OAHA0C,GAAIx1B,EAAIrF,KAAKqL,MAAMhG,EAAI6xB,GAAKl3B,KAAK+J,IAAI1E,EAAIrF,KAAKqL,MAAMhG,GACpDw1B,EAAIv1B,EAAItF,KAAKqL,MAAM/F,EAAI4xB,GAAKl3B,KAAK+J,IAAIzE,EAAItF,KAAKqL,MAAM/F,GAE7Cu1B,GAaXyD,kBAAmB,SAAUC,EAAUC,GAElB90B,SAAb60B,IAA0BA,EAAW,GACzB70B,SAAZ80B,IAAyBA,KAE7B,IAAI5xB,GAAK/L,KAAKw6B,MAAMr7B,KAAKqL,MAAMhG,GAC3BwH,EAAKhM,KAAKw6B,MAAMr7B,KAAKqL,MAAM/F,GAC3BwH,EAAKjM,KAAKw6B,MAAMr7B,KAAK+J,IAAI1E,GACzB0H,EAAKlM,KAAKw6B,MAAMr7B,KAAK+J,IAAIzE,GAEzBuI,EAAKhN,KAAKq7B,IAAIpvB,EAAKF,GACnBmB,EAAKlN,KAAKq7B,IAAInvB,EAAKF,GACnB4xB,EAAW3xB,EAALF,EAAW,EAAI,GACrB8xB,EAAW3xB,EAALF,EAAW,EAAI,GACrB8xB,EAAM9wB,EAAKE,CAEfywB,GAAQz6B,MAAM6I,EAAIC,GAIlB,KAFA,GAAI5J,GAAI,EAEE2J,GAAME,GAAQD,GAAME,GAC9B,CACI,GAAI6xB,GAAKD,GAAO,CAEZC,IAAM7wB,IAEN4wB,GAAO5wB,EACPnB,GAAM6xB,GAGD5wB,EAAL+wB,IAEAD,GAAO9wB,EACPhB,GAAM6xB,GAGNz7B,EAAIs7B,IAAa,GAEjBC,EAAQz6B,MAAM6I,EAAIC,IAGtB5J,IAIJ,MAAOu7B,IAUX3E,MAAO,SAAUyB,GAWb,MATe5xB,UAAX4xB,GAAmC,OAAXA,EAExBA,EAAS,GAAIzS,GAAOkU,KAAK/8B,KAAKqL,MAAMhG,EAAGrF,KAAKqL,MAAM/F,EAAGtF,KAAK+J,IAAI1E,EAAGrF,KAAK+J,IAAIzE,GAI1Eg2B,EAAON,MAAMh7B,KAAKqL,MAAMhG,EAAGrF,KAAKqL,MAAM/F,EAAGtF,KAAK+J,IAAI1E,EAAGrF,KAAK+J,IAAIzE,GAG3Dg2B,IAWfl4B,OAAOC,eAAewlB,EAAOkU,KAAKl6B,UAAW,UAEzCS,IAAK,WACD,MAAOzC,MAAK0E,MAAMvF,KAAK+J,IAAI1E,EAAIrF,KAAKqL,MAAMhG,IAAMrF,KAAK+J,IAAI1E,EAAIrF,KAAKqL,MAAMhG,IAAMrF,KAAK+J,IAAIzE,EAAItF,KAAKqL,MAAM/F,IAAMtF,KAAK+J,IAAIzE,EAAItF,KAAKqL,MAAM/F,OAU5IlC,OAAOC,eAAewlB,EAAOkU,KAAKl6B,UAAW,SAEzCS,IAAK,WACD,MAAOzC,MAAK2E,MAAMxF,KAAK+J,IAAIzE,EAAItF,KAAKqL,MAAM/F,EAAGtF,KAAK+J,IAAI1E,EAAIrF,KAAKqL,MAAMhG,MAU7EjC,OAAOC,eAAewlB,EAAOkU,KAAKl6B,UAAW,SAEzCS,IAAK,WACD,OAAQtD,KAAK+J,IAAIzE,EAAItF,KAAKqL,MAAM/F,IAAMtF,KAAK+J,IAAI1E,EAAIrF,KAAKqL,MAAMhG,MAUtEjC,OAAOC,eAAewlB,EAAOkU,KAAKl6B,UAAW,aAEzCS,IAAK,WACD,SAAUtD,KAAK+J,IAAI1E,EAAIrF,KAAKqL,MAAMhG,IAAMrF,KAAK+J,IAAIzE,EAAItF,KAAKqL,MAAM/F,OAUxElC,OAAOC,eAAewlB,EAAOkU,KAAKl6B,UAAW,KAEzCS,IAAK,WACD,MAAOzC,MAAKq9B,IAAIl+B,KAAKqL,MAAMhG,EAAGrF,KAAK+J,IAAI1E,MAU/CjC,OAAOC,eAAewlB,EAAOkU,KAAKl6B,UAAW,KAEzCS,IAAK,WACD,MAAOzC,MAAKq9B,IAAIl+B,KAAKqL,MAAM/F,EAAGtF,KAAK+J,IAAIzE,MAU/ClC,OAAOC,eAAewlB,EAAOkU,KAAKl6B,UAAW,QAEzCS,IAAK,WACD,MAAOzC,MAAKq9B,IAAIl+B,KAAKqL,MAAMhG,EAAGrF,KAAK+J,IAAI1E,MAU/CjC,OAAOC,eAAewlB,EAAOkU,KAAKl6B,UAAW,SAEzCS,IAAK,WACD,MAAOzC,MAAK+G,IAAI5H,KAAKqL,MAAMhG,EAAGrF,KAAK+J,IAAI1E,MAU/CjC,OAAOC,eAAewlB,EAAOkU,KAAKl6B,UAAW,OAEzCS,IAAK,WACD,MAAOzC,MAAKq9B,IAAIl+B,KAAKqL,MAAM/F,EAAGtF,KAAK+J,IAAIzE,MAU/ClC,OAAOC,eAAewlB,EAAOkU,KAAKl6B,UAAW,UAEzCS,IAAK,WACD,MAAOzC,MAAK+G,IAAI5H,KAAKqL,MAAM/F,EAAGtF,KAAK+J,IAAIzE,MAU/ClC,OAAOC,eAAewlB,EAAOkU,KAAKl6B,UAAW,SAEzCS,IAAK,WACD,MAAOzC,MAAKq7B,IAAIl8B,KAAKqL,MAAMhG,EAAIrF,KAAK+J,IAAI1E,MAUhDjC,OAAOC,eAAewlB,EAAOkU,KAAKl6B,UAAW,UAEzCS,IAAK,WACD,MAAOzC,MAAKq7B,IAAIl8B,KAAKqL,MAAM/F,EAAItF,KAAK+J,IAAIzE,MAUhDlC,OAAOC,eAAewlB,EAAOkU,KAAKl6B,UAAW,WAEzCS,IAAK,WACD,MAAOzC,MAAKuE,IAAIpF,KAAKy7B,MAAQ,uBAUrCr4B,OAAOC,eAAewlB,EAAOkU,KAAKl6B,UAAW,WAEzCS,IAAK,WACD,MAAOzC,MAAKsE,IAAInF,KAAKy7B,MAAQ,uBAUrCr4B,OAAOC,eAAewlB,EAAOkU,KAAKl6B,UAAW,eAEzCS,IAAK,WACD,MAAOulB,GAAOhoB,KAAKg+B,KAAK7+B,KAAKy7B,MAAQ,oBAAqB56B,KAAKC,GAAID,KAAKC,OAoBhF+nB,EAAOkU,KAAKW,iBAAmB,SAAUh5B,EAAGC,EAAG40B,EAAGd,EAAGgF,EAAWrsB,GAE1C1H,SAAd+zB,IAA2BA,GAAY,GAC5B/zB,SAAX0H,IAAwBA,EAAS,GAAIyX,GAAOznB,MAEhD,IAAI09B,GAAKn6B,EAAEW,EAAIZ,EAAEY,EACby5B,EAAKtG,EAAEnzB,EAAIi0B,EAAEj0B,EACb05B,EAAKt6B,EAAEW,EAAIV,EAAEU,EACb45B,EAAK1F,EAAEl0B,EAAIozB,EAAEpzB,EACb65B,EAAMv6B,EAAEU,EAAIX,EAAEY,EAAMZ,EAAEW,EAAIV,EAAEW,EAC5B65B,EAAM1G,EAAEpzB,EAAIk0B,EAAEj0B,EAAMi0B,EAAEl0B,EAAIozB,EAAEnzB,EAC5B85B,EAASN,EAAKG,EAAOF,EAAKC,CAE9B,IAAc,IAAVI,EAEA,MAAO,KAMX,IAHAhuB,EAAO/L,GAAM25B,EAAKG,EAAOF,EAAKC,GAAOE,EACrChuB,EAAO9L,GAAMy5B,EAAKG,EAAOJ,EAAKK,GAAOC,EAEjC3B,EACJ,CACI,GAAI4B,IAAO5G,EAAEnzB,EAAIi0B,EAAEj0B,IAAMX,EAAEU,EAAIX,EAAEW,IAAMozB,EAAEpzB,EAAIk0B,EAAEl0B,IAAMV,EAAEW,EAAIZ,EAAEY,GACzDg6B,IAAQ7G,EAAEpzB,EAAIk0B,EAAEl0B,IAAMX,EAAEY,EAAIi0B,EAAEj0B,IAAOmzB,EAAEnzB,EAAIi0B,EAAEj0B,IAAMZ,EAAEW,EAAIk0B,EAAEl0B,IAAMg6B,EACjEE,IAAQ56B,EAAEU,EAAIX,EAAEW,IAAMX,EAAEY,EAAIi0B,EAAEj0B,IAAQX,EAAEW,EAAIZ,EAAEY,IAAMZ,EAAEW,EAAIk0B,EAAEl0B,IAAOg6B,CAEvE,OAAIC,IAAM,GAAW,GAANA,GAAWC,GAAM,GAAW,GAANA,EAE1BnuB,EAIA,KAIf,MAAOA,IAkBXyX,EAAOkU,KAAKhB,WAAa,SAAUr3B,EAAGC,EAAG84B,EAAWrsB,GAEhD,MAAOyX,GAAOkU,KAAKW,iBAAiBh5B,EAAE2G,MAAO3G,EAAEqF,IAAKpF,EAAE0G,MAAO1G,EAAEoF,IAAK0zB,EAAWrsB,IAoBnFyX,EAAOkU,KAAKd,oBAAsB,SAAUuB,EAAMgC,GAG9C,IAAK3W,EAAOrmB,UAAUu5B,WAAWyB,EAAMgC,GAEnC,OAAO,CAGX,IAAI5yB,GAAK4wB,EAAKnyB,MAAMhG,EAChBwH,EAAK2wB,EAAKnyB,MAAM/F,EAEhBwH,EAAK0wB,EAAKzzB,IAAI1E,EACd0H,EAAKywB,EAAKzzB,IAAIzE,EAEdm6B,EAAMD,EAAKn6B,EACXq6B,EAAMF,EAAKl6B,EACXq6B,EAAMH,EAAKtG,MACX0G,EAAMJ,EAAK3D,OAEX3E,EAAI,CAKR,IAAKtqB,GAAM6yB,GAAaE,GAAN/yB,GAAaC,GAAM6yB,GAAaE,GAAN/yB,GACvCC,GAAM2yB,GAAaE,GAAN7yB,GAAaC,GAAM2yB,GAAaE,GAAN7yB,EAExC,OAAO,CAGX,IAAS0yB,EAAL7yB,GAAYE,GAAM2yB,GAKlB,GAFAvI,EAAIrqB,GAAME,EAAKF,IAAO4yB,EAAM7yB,IAAOE,EAAKF,GAEpCsqB,EAAIwI,GAAYE,GAAL1I,EAEX,OAAO,MAGV,IAAItqB,EAAK+yB,GAAaA,GAAN7yB,IAGjBoqB,EAAIrqB,GAAME,EAAKF,IAAO8yB,EAAM/yB,IAAOE,EAAKF,GAEpCsqB,GAAKwI,GAAYE,GAAL1I,GAEZ,OAAO,CAIf,IAASwI,EAAL7yB,GAAYE,GAAM2yB,GAKlB,GAFAxI,EAAItqB,GAAME,EAAKF,IAAO8yB,EAAM7yB,IAAOE,EAAKF,GAEpCqqB,GAAKuI,GAAYE,GAALzI,EAEZ,OAAO,MAGV,IAAIrqB,EAAK+yB,GAAaA,GAAN7yB,IAGjBmqB,EAAItqB,GAAME,EAAKF,IAAOgzB,EAAM/yB,IAAOE,EAAKF,GAEpCqqB,GAAKuI,GAAYE,GAALzI,GAEZ,OAAO,CAIf,QAAO,GAaXrO,EAAOkU,KAAKY,QAAU,SAAUj5B,EAAGC,GAE/B,MAAO,GAAIA,EAAEk7B,YAAc,kBAAoBn7B,EAAE+2B,OA6BrD5S,EAAO7mB,OAAS,SAAU0C,EAAGC,EAAGC,EAAGC,EAAGC,EAAIC,IAE5B2E,SAANhF,GAAyB,OAANA,KAAcA,EAAI,IAC/BgF,SAAN/E,GAAyB,OAANA,KAAcA,EAAI,IAC/B+E,SAAN9E,GAAyB,OAANA,KAAcA,EAAI,IAC/B8E,SAAN7E,GAAyB,OAANA,KAAcA,EAAI,IAC9B6E,SAAP5E,GAA2B,OAAPA,KAAeA,EAAK,IACjC4E,SAAP3E,GAA2B,OAAPA,KAAeA,EAAK,GAM5C/E,KAAK0E,EAAIA,EAMT1E,KAAK2E,EAAIA,EAMT3E,KAAK4E,EAAIA,EAMT5E,KAAK6E,EAAIA,EAMT7E,KAAK8E,GAAKA,EAMV9E,KAAK+E,GAAKA,EAMV/E,KAAKoV,KAAOyT,EAAOqL,QAIvBrL,EAAO7mB,OAAOa,WAkBVi9B,UAAW,SAAUC,GAEjB,MAAO//B,MAAKg7B,MAAM+E,EAAM,GAAIA,EAAM,GAAIA,EAAM,GAAIA,EAAM,GAAIA,EAAM,GAAIA,EAAM,KAgB9E/E,MAAO,SAAUt2B,EAAGC,EAAGC,EAAGC,EAAGC,EAAIC,GAS7B,MAPA/E,MAAK0E,EAAIA,EACT1E,KAAK2E,EAAIA,EACT3E,KAAK4E,EAAIA,EACT5E,KAAK6E,EAAIA,EACT7E,KAAK8E,GAAKA,EACV9E,KAAK+E,GAAKA,EAEH/E,MAaX65B,MAAO,SAAUyB,GAgBb,MAde5xB,UAAX4xB,GAAmC,OAAXA,EAExBA,EAAS,GAAIzS,GAAO7mB,OAAOhC,KAAK0E,EAAG1E,KAAK2E,EAAG3E,KAAK4E,EAAG5E,KAAK6E,EAAG7E,KAAK8E,GAAI9E,KAAK+E,KAIzEu2B,EAAO52B,EAAI1E,KAAK0E,EAChB42B,EAAO32B,EAAI3E,KAAK2E,EAChB22B,EAAO12B,EAAI5E,KAAK4E,EAChB02B,EAAOz2B,EAAI7E,KAAK6E,EAChBy2B,EAAOx2B,GAAK9E,KAAK8E,GACjBw2B,EAAOv2B,GAAK/E,KAAK+E,IAGdu2B,GAWXJ,OAAQ,SAAUp1B,GAId,MAFAA,GAAOm1B,SAASj7B,MAET8F,GAWXm1B,SAAU,SAAUn1B,GAShB,MAPA9F,MAAK0E,EAAIoB,EAAOpB,EAChB1E,KAAK2E,EAAImB,EAAOnB,EAChB3E,KAAK4E,EAAIkB,EAAOlB,EAChB5E,KAAK6E,EAAIiB,EAAOjB,EAChB7E,KAAK8E,GAAKgB,EAAOhB,GACjB9E,KAAK+E,GAAKe,EAAOf,GAEV/E,MAYX8f,QAAS,SAAUpI,EAAWqoB,GA6B1B,MA3Bcr2B,UAAVq2B,IAAuBA,EAAQ,GAAI9/B,MAAKM,aAAa,IAErDmX,GAEAqoB,EAAM,GAAK//B,KAAK0E,EAChBq7B,EAAM,GAAK//B,KAAK2E,EAChBo7B,EAAM,GAAK,EACXA,EAAM,GAAK//B,KAAK4E,EAChBm7B,EAAM,GAAK//B,KAAK6E,EAChBk7B,EAAM,GAAK,EACXA,EAAM,GAAK//B,KAAK8E,GAChBi7B,EAAM,GAAK//B,KAAK+E,GAChBg7B,EAAM,GAAK,IAIXA,EAAM,GAAK//B,KAAK0E,EAChBq7B,EAAM,GAAK//B,KAAK4E,EAChBm7B,EAAM,GAAK//B,KAAK8E,GAChBi7B,EAAM,GAAK//B,KAAK2E,EAChBo7B,EAAM,GAAK//B,KAAK6E,EAChBk7B,EAAM,GAAK//B,KAAK+E,GAChBg7B,EAAM,GAAK,EACXA,EAAM,GAAK,EACXA,EAAM,GAAK,GAGRA,GAcX94B,MAAO,SAAU+4B,EAAKC,GAOlB,MALev2B,UAAXu2B,IAAwBA,EAAS,GAAIpX,GAAOznB,OAEhD6+B,EAAO56B,EAAIrF,KAAK0E,EAAIs7B,EAAI36B,EAAIrF,KAAK4E,EAAIo7B,EAAI16B,EAAItF,KAAK8E,GAClDm7B,EAAO36B,EAAItF,KAAK2E,EAAIq7B,EAAI36B,EAAIrF,KAAK6E,EAAIm7B,EAAI16B,EAAItF,KAAK+E,GAE3Ck7B,GAcX74B,aAAc,SAAU44B,EAAKC,GAEVv2B,SAAXu2B,IAAwBA,EAAS,GAAIpX,GAAOznB,MAEhD,IAAI6U,GAAK,GAAKjW,KAAK0E,EAAI1E,KAAK6E,EAAI7E,KAAK4E,GAAK5E,KAAK2E,GAC3CU,EAAI26B,EAAI36B,EACRC,EAAI06B,EAAI16B,CAKZ,OAHA26B,GAAO56B,EAAIrF,KAAK6E,EAAIoR,EAAK5Q,GAAKrF,KAAK4E,EAAIqR,EAAK3Q,GAAKtF,KAAK+E,GAAK/E,KAAK4E,EAAI5E,KAAK8E,GAAK9E,KAAK6E,GAAKoR,EACxFgqB,EAAO36B,EAAItF,KAAK0E,EAAIuR,EAAK3Q,GAAKtF,KAAK2E,EAAIsR,EAAK5Q,IAAMrF,KAAK+E,GAAK/E,KAAK0E,EAAI1E,KAAK8E,GAAK9E,KAAK2E,GAAKsR,EAElFgqB,GAaXxU,UAAW,SAAUpmB,EAAGC,GAKpB,MAHAtF,MAAK8E,IAAMO,EACXrF,KAAK+E,IAAMO,EAEJtF,MAYXqB,MAAO,SAAUgE,EAAGC,GAShB,MAPAtF,MAAK0E,GAAKW,EACVrF,KAAK6E,GAAKS,EACVtF,KAAK4E,GAAKS,EACVrF,KAAK2E,GAAKW,EACVtF,KAAK8E,IAAMO,EACXrF,KAAK+E,IAAMO,EAEJtF,MAWXs9B,OAAQ,SAAU7B,GAEd,GAAIr2B,GAAMvE,KAAKuE,IAAIq2B,GACft2B,EAAMtE,KAAKsE,IAAIs2B,GAEfqD,EAAK9+B,KAAK0E,EACVw6B,EAAKl/B,KAAK4E,EACVs7B,EAAMlgC,KAAK8E,EASf,OAPA9E,MAAK0E,EAAIo6B,EAAK15B,EAAIpF,KAAK2E,EAAIQ,EAC3BnF,KAAK2E,EAAIm6B,EAAK35B,EAAInF,KAAK2E,EAAIS,EAC3BpF,KAAK4E,EAAIs6B,EAAK95B,EAAIpF,KAAK6E,EAAIM,EAC3BnF,KAAK6E,EAAIq6B,EAAK/5B,EAAInF,KAAK6E,EAAIO,EAC3BpF,KAAK8E,GAAKo7B,EAAM96B,EAAMpF,KAAK+E,GAAKI,EAChCnF,KAAK+E,GAAKm7B,EAAM/6B,EAAMnF,KAAK+E,GAAKK,EAEzBpF,MAWX0rB,OAAQ,SAAU5lB,GAEd,GAAIg5B,GAAK9+B,KAAK0E,EACVs6B,EAAKh/B,KAAK2E,EACVu6B,EAAKl/B,KAAK4E,EACVu7B,EAAKngC,KAAK6E,CAUd,OARA7E,MAAK0E,EAAKoB,EAAOpB,EAAIo6B,EAAKh5B,EAAOnB,EAAIu6B,EACrCl/B,KAAK2E,EAAKmB,EAAOpB,EAAIs6B,EAAKl5B,EAAOnB,EAAIw7B,EACrCngC,KAAK4E,EAAKkB,EAAOlB,EAAIk6B,EAAKh5B,EAAOjB,EAAIq6B,EACrCl/B,KAAK6E,EAAKiB,EAAOlB,EAAIo6B,EAAKl5B,EAAOjB,EAAIs7B,EAErCngC,KAAK8E,GAAKgB,EAAOhB,GAAKg6B,EAAKh5B,EAAOf,GAAKm6B,EAAKl/B,KAAK8E,GACjD9E,KAAK+E,GAAKe,EAAOhB,GAAKk6B,EAAKl5B,EAAOf,GAAKo7B,EAAKngC,KAAK+E,GAE1C/E,MAUXwrB,SAAU,WAEN,MAAOxrB,MAAKg7B,MAAM,EAAG,EAAG,EAAG,EAAG,EAAG,KAMzCnS,EAAO5iB,eAAiB,GAAI4iB,GAAO7mB,OAGnC/B,KAAK+B,OAAS6mB,EAAO7mB,OACrB/B,KAAKgG,eAAiB4iB,EAAO5iB,eAmB7B4iB,EAAOznB,MAAQ,SAAUiE,EAAGC,GAExBD,EAAIA,GAAK,EACTC,EAAIA,GAAK,EAKTtF,KAAKqF,EAAIA,EAKTrF,KAAKsF,EAAIA,EAMTtF,KAAKoV,KAAOyT,EAAOsL,OAIvBtL,EAAOznB,MAAMyB,WASTo4B,SAAU,SAAUrsB,GAEhB,MAAO5O,MAAKg7B,MAAMpsB,EAAOvJ,EAAGuJ,EAAOtJ,IAUvC86B,OAAQ,WAEJ,MAAOpgC,MAAKg7B,MAAMh7B,KAAKsF,EAAGtF,KAAKqF,IAcnC21B,MAAO,SAAU31B,EAAGC,GAKhB,MAHAtF,MAAKqF,EAAIA,GAAK,EACdrF,KAAKsF,EAAIA,IAAc,IAANA,EAAWtF,KAAKqF,EAAI,GAE9BrF,MAcXwD,IAAK,SAAU6B,EAAGC,GAKd,MAHAtF,MAAKqF,EAAIA,GAAK,EACdrF,KAAKsF,EAAIA,IAAc,IAANA,EAAWtF,KAAKqF,EAAI,GAE9BrF,MAYX89B,IAAK,SAAUz4B,EAAGC,GAId,MAFAtF,MAAKqF,GAAKA,EACVrF,KAAKsF,GAAKA,EACHtF,MAYXqgC,SAAU,SAAUh7B,EAAGC,GAInB,MAFAtF,MAAKqF,GAAKA,EACVrF,KAAKsF,GAAKA,EACHtF,MAYXsgC,SAAU,SAAUj7B,EAAGC,GAInB,MAFAtF,MAAKqF,GAAKA,EACVrF,KAAKsF,GAAKA,EACHtF,MAYXugC,OAAQ,SAAUl7B,EAAGC,GAIjB,MAFAtF,MAAKqF,GAAKA,EACVrF,KAAKsF,GAAKA,EACHtF,MAYXwgC,OAAQ,SAAUtC,EAAKt2B,GAGnB,MADA5H,MAAKqF,EAAIwjB,EAAOhoB,KAAK4/B,MAAMzgC,KAAKqF,EAAG64B,EAAKt2B,GACjC5H,MAYX0gC,OAAQ,SAAUxC,EAAKt2B,GAGnB,MADA5H,MAAKsF,EAAIujB,EAAOhoB,KAAK4/B,MAAMzgC,KAAKsF,EAAG44B,EAAKt2B,GACjC5H,MAYXygC,MAAO,SAAUvC,EAAKt2B,GAIlB,MAFA5H,MAAKqF,EAAIwjB,EAAOhoB,KAAK4/B,MAAMzgC,KAAKqF,EAAG64B,EAAKt2B,GACxC5H,KAAKsF,EAAIujB,EAAOhoB,KAAK4/B,MAAMzgC,KAAKsF,EAAG44B,EAAKt2B,GACjC5H,MAWX65B,MAAO,SAAUyB,GAWb,MATe5xB,UAAX4xB,GAAmC,OAAXA,EAExBA,EAAS,GAAIzS,GAAOznB,MAAMpB,KAAKqF,EAAGrF,KAAKsF,GAIvCg2B,EAAON,MAAMh7B,KAAKqF,EAAGrF,KAAKsF,GAGvBg2B,GAWXJ,OAAQ,SAAUC,GAKd,MAHAA,GAAK91B,EAAIrF,KAAKqF,EACd81B,EAAK71B,EAAItF,KAAKsF,EAEP61B,GAYXC,SAAU,SAAUD,EAAME,GAEtB,MAAOxS,GAAOznB,MAAMg6B,SAASp7B,KAAMm7B,EAAME,IAW7CS,OAAQ,SAAUp3B,GAEd,MAAQA,GAAEW,IAAMrF,KAAKqF,GAAKX,EAAEY,IAAMtF,KAAKsF,GAY3Cm2B,MAAO,SAAU/2B,EAAGg3B,GAIhB,MAFkBhyB,UAAdgyB,IAA2BA,GAAY,GAEvCA,EAEO7S,EAAOhoB,KAAK8/B,SAAS9/B,KAAK2E,MAAMd,EAAEY,EAAItF,KAAKsF,EAAGZ,EAAEW,EAAIrF,KAAKqF,IAIzDxE,KAAK2E,MAAMd,EAAEY,EAAItF,KAAKsF,EAAGZ,EAAEW,EAAIrF,KAAKqF,IAgBnDi4B,OAAQ,SAAUj4B,EAAGC,EAAGm2B,EAAOC,EAAWN,GAEtC,MAAOvS,GAAOznB,MAAMk8B,OAAOt9B,KAAMqF,EAAGC,EAAGm2B,EAAOC,EAAWN,IAU7DwF,aAAc,WAEV,MAAO//B,MAAK0E,KAAMvF,KAAKqF,EAAIrF,KAAKqF,EAAMrF,KAAKsF,EAAItF,KAAKsF,IAUxDu7B,eAAgB,WAEZ,MAAQ7gC,MAAKqF,EAAIrF,KAAKqF,EAAMrF,KAAKsF,EAAItF,KAAKsF,GAW9Cw7B,aAAc,SAAUC,GAEpB,MAAO/gC,MAAKghC,YAAYV,SAASS,EAAWA,IAUhDC,UAAW,WAEP,IAAKhhC,KAAKihC,SACV,CACI,GAAIC,GAAIlhC,KAAK4gC,cACb5gC,MAAKqF,GAAK67B,EACVlhC,KAAKsF,GAAK47B,EAGd,MAAOlhC,OAUXihC,OAAQ,WAEJ,MAAmB,KAAXjhC,KAAKqF,GAAsB,IAAXrF,KAAKsF,GAWjC67B,IAAK,SAAUz8B,GAEX,MAAS1E,MAAKqF,EAAIX,EAAEW,EAAMrF,KAAKsF,EAAIZ,EAAEY,GAWzC87B,MAAO,SAAU18B,GAEb,MAAS1E,MAAKqF,EAAIX,EAAEY,EAAMtF,KAAKsF,EAAIZ,EAAEW,GAUzCuqB,KAAM,WAEF,MAAO5vB,MAAKg7B,OAAOh7B,KAAKsF,EAAGtF,KAAKqF,IAUpCg8B,MAAO,WAEH,MAAOrhC,MAAKg7B,MAAMh7B,KAAKsF,GAAItF,KAAKqF,IAUpCi8B,gBAAiB,WAEb,MAAOthC,MAAKg7B,MAAe,GAATh7B,KAAKsF,EAAQtF,KAAKqF,IAUxC6wB,MAAO,WAEH,MAAOl2B,MAAKg7B,MAAMn6B,KAAKq1B,MAAMl2B,KAAKqF,GAAIxE,KAAKq1B,MAAMl2B,KAAKsF,KAU1DuC,KAAM,WAEF,MAAO7H,MAAKg7B,MAAMn6B,KAAKgH,KAAK7H,KAAKqF,GAAIxE,KAAKgH,KAAK7H,KAAKsF,KAUxDwiB,SAAU,WAEN,MAAO,cAAgB9nB,KAAKqF,EAAI,MAAQrF,KAAKsF,EAAI,QAMzDujB,EAAOznB,MAAMyB,UAAUC,YAAc+lB,EAAOznB,MAW5CynB,EAAOznB,MAAM08B,IAAM,SAAUp5B,EAAGC,EAAGk2B,GAO/B,MALYnxB,UAARmxB,IAAqBA,EAAM,GAAIhS,GAAOznB,OAE1Cy5B,EAAIx1B,EAAIX,EAAEW,EAAIV,EAAEU,EAChBw1B,EAAIv1B,EAAIZ,EAAEY,EAAIX,EAAEW,EAETu1B,GAaXhS,EAAOznB,MAAMi/B,SAAW,SAAU37B,EAAGC,EAAGk2B,GAOpC,MALYnxB,UAARmxB,IAAqBA,EAAM,GAAIhS,GAAOznB,OAE1Cy5B,EAAIx1B,EAAIX,EAAEW,EAAIV,EAAEU,EAChBw1B,EAAIv1B,EAAIZ,EAAEY,EAAIX,EAAEW,EAETu1B,GAaXhS,EAAOznB,MAAMk/B,SAAW,SAAU57B,EAAGC,EAAGk2B,GAOpC,MALYnxB,UAARmxB,IAAqBA,EAAM,GAAIhS,GAAOznB,OAE1Cy5B,EAAIx1B,EAAIX,EAAEW,EAAIV,EAAEU,EAChBw1B,EAAIv1B,EAAIZ,EAAEY,EAAIX,EAAEW,EAETu1B,GAaXhS,EAAOznB,MAAMm/B,OAAS,SAAU77B,EAAGC,EAAGk2B,GAOlC,MALYnxB,UAARmxB,IAAqBA,EAAM,GAAIhS,GAAOznB,OAE1Cy5B,EAAIx1B,EAAIX,EAAEW,EAAIV,EAAEU,EAChBw1B,EAAIv1B,EAAIZ,EAAEY,EAAIX,EAAEW,EAETu1B,GAYXhS,EAAOznB,MAAM06B,OAAS,SAAUp3B,EAAGC,GAE/B,MAAQD,GAAEW,IAAMV,EAAEU,GAAKX,EAAEY,IAAMX,EAAEW,GAYrCujB,EAAOznB,MAAMq6B,MAAQ,SAAU/2B,EAAGC,GAG9B,MAAO9D,MAAK2E,MAAMd,EAAEY,EAAIX,EAAEW,EAAGZ,EAAEW,EAAIV,EAAEU,IAYzCwjB,EAAOznB,MAAMmgC,SAAW,SAAU78B,EAAGm2B,GAIjC,MAFYnxB,UAARmxB,IAAqBA,EAAM,GAAIhS,GAAOznB,OAEnCy5B,EAAIG,OAAOt2B,EAAEW,GAAIX,EAAEY,IAc9BujB,EAAOznB,MAAMogC,YAAc,SAAU98B,EAAGC,EAAG88B,EAAG5G,GAI1C,MAFYnxB,UAARmxB,IAAqBA,EAAM,GAAIhS,GAAOznB,OAEnCy5B,EAAIG,MAAMt2B,EAAEW,EAAIV,EAAEU,EAAIo8B,EAAG/8B,EAAEY,EAAIX,EAAEW,EAAIm8B,IAchD5Y,EAAOznB,MAAMsgC,YAAc,SAAUh9B,EAAGC,EAAG8zB,EAAGoC,GAI1C,MAFYnxB,UAARmxB,IAAqBA,EAAM,GAAIhS,GAAOznB,OAEnCy5B,EAAIG,MAAMt2B,EAAEW,GAAKV,EAAEU,EAAIX,EAAEW,GAAKozB,EAAG/zB,EAAEY,GAAKX,EAAEW,EAAIZ,EAAEY,GAAKmzB,IAYhE5P,EAAOznB,MAAMwuB,KAAO,SAAUlrB,EAAGm2B,GAI7B,MAFYnxB,UAARmxB,IAAqBA,EAAM,GAAIhS,GAAOznB,OAEnCy5B,EAAIG,OAAOt2B,EAAEY,EAAGZ,EAAEW,IAY7BwjB,EAAOznB,MAAMigC,MAAQ,SAAU38B,EAAGm2B,GAI9B,MAFYnxB,UAARmxB,IAAqBA,EAAM,GAAIhS,GAAOznB,OAEnCy5B,EAAIG,MAAMt2B,EAAEY,GAAIZ,EAAEW,IAa7BwjB,EAAOznB,MAAMg6B,SAAW,SAAU12B,EAAGC,EAAG02B,GAEpC,GAAID,GAAWvS,EAAOhoB,KAAKu6B,SAAS12B,EAAEW,EAAGX,EAAEY,EAAGX,EAAEU,EAAGV,EAAEW,EACrD,OAAO+1B,GAAQx6B,KAAKw6B,MAAMD,GAAYA,GAa1CvS,EAAOznB,MAAMugC,QAAU,SAAUj9B,EAAGC,EAAGk2B,GAEvBnxB,SAARmxB,IAAqBA,EAAM,GAAIhS,GAAOznB,MAE1C,IAAIwgC,GAAMl9B,EAAEy8B,IAAIx8B,GAAKA,EAAEk8B,gBAOvB,OALY,KAARe,GAEA/G,EAAIG,MAAM4G,EAAMj9B,EAAEU,EAAGu8B,EAAMj9B,EAAEW,GAG1Bu1B,GAaXhS,EAAOznB,MAAMygC,YAAc,SAAUn9B,EAAGC,EAAGk2B,GAE3BnxB,SAARmxB,IAAqBA,EAAM,GAAIhS,GAAOznB,MAE1C,IAAIwgC,GAAMl9B,EAAEy8B,IAAIx8B,EAOhB,OALY,KAARi9B,GAEA/G,EAAIG,MAAM4G,EAAMj9B,EAAEU,EAAGu8B,EAAMj9B,EAAEW,GAG1Bu1B,GAYXhS,EAAOznB,MAAMkgC,gBAAkB,SAAU58B,EAAGm2B,GAIxC,MAFYnxB,UAARmxB,IAAqBA,EAAM,GAAIhS,GAAOznB,OAEnCy5B,EAAIG,MAAY,GAANt2B,EAAEY,EAAQZ,EAAEW,IAYjCwjB,EAAOznB,MAAM4/B,UAAY,SAAUt8B,EAAGm2B,GAEtBnxB,SAARmxB,IAAqBA,EAAM,GAAIhS,GAAOznB,MAE1C,IAAI8/B,GAAIx8B,EAAEk8B,cAOV,OALU,KAANM,GAEArG,EAAIG,MAAMt2B,EAAEW,EAAI67B,EAAGx8B,EAAEY,EAAI47B,GAGtBrG,GAqBXhS,EAAOznB,MAAMk8B,OAAS,SAAU54B,EAAGW,EAAGC,EAAGm2B,EAAOC,EAAWN,GAIvD,GAFIM,IAAaD,EAAQ5S,EAAOhoB,KAAKm7B,SAASP,IAE7B/xB,SAAb0xB,EACJ,CACI12B,EAAE27B,SAASh7B,EAAGC,EAEd,IAAIm8B,GAAI5gC,KAAKsE,IAAIs2B,GACb72B,EAAI/D,KAAKuE,IAAIq2B,GAEb32B,EAAKF,EAAIF,EAAEW,EAAIo8B,EAAI/8B,EAAEY,EACrBP,EAAK08B,EAAI/8B,EAAEW,EAAIT,EAAIF,EAAEY,CAEzBZ,GAAEW,EAAIP,EAAKO,EACXX,EAAEY,EAAIP,EAAKO,MAGf,CACI,GAAI4xB,GAAIuE,EAAQ56B,KAAK2E,MAAMd,EAAEY,EAAIA,EAAGZ,EAAEW,EAAIA,EAC1CX,GAAEW,EAAIA,EAAI+1B,EAAWv6B,KAAKuE,IAAI8xB,GAC9BxyB,EAAEY,EAAIA,EAAI81B,EAAWv6B,KAAKsE,IAAI+xB,GAGlC,MAAOxyB,IAYXmkB,EAAOznB,MAAM0gC,SAAW,SAAUxS,EAAQuL,GAItC,GAFYnxB,SAARmxB,IAAqBA,EAAM,GAAIhS,GAAOznB,OAEK,mBAA3CgC,OAAOP,UAAUilB,SAASpiB,KAAK4pB,GAE/B,KAAM,IAAIxmB,OAAM,oDAGpB,IAAIi5B,GAAezS,EAAOpsB,MAE1B,IAAmB,EAAf6+B,EAEA,KAAM,IAAIj5B,OAAM,2DAGpB,IAAqB,IAAjBi5B,EAGA,MADAlH,GAAII,SAAS3L,EAAO,IACbuL,CAGX,KAAK,GAAI53B,GAAI,EAAO8+B,EAAJ9+B,EAAkBA,IAE9B4lB,EAAOznB,MAAM08B,IAAIjD,EAAKvL,EAAOrsB,GAAI43B,EAKrC,OAFAA,GAAI0F,OAAOwB,EAAcA,GAElBlH,GAeXhS,EAAOznB,MAAM4gC,MAAQ,SAASvK,EAAKwK,EAAOC,GAEtCD,EAAQA,GAAS,IACjBC,EAAQA,GAAS,GAEjB,IAAI1S,GAAQ,GAAI3G,GAAOznB,KAYvB,OAVIq2B,GAAIwK,KAEJzS,EAAMnqB,EAAIszB,SAASlB,EAAIwK,GAAQ,KAG/BxK,EAAIyK,KAEJ1S,EAAMlqB,EAAIqzB,SAASlB,EAAIyK,GAAQ,KAG5B1S,GAKXvvB,KAAKmB,MAAQynB,EAAOznB,MAyBpBynB,EAAOsZ,QAAU,WAKbniC,KAAKoiC,KAAO,EAMZpiC,KAAKqiC,WAED1L,UAAUzzB,OAAS,GAEnBlD,KAAKg7B,MAAM/zB,MAAMjH,KAAM22B,WAM3B32B,KAAKsiC,QAAS,EAKdtiC,KAAKoV,KAAOyT,EAAOyK,SAIvBzK,EAAOsZ,QAAQt/B,WASX0/B,cAAe,SAAUjH,GAEN5xB,SAAX4xB,IAAwBA,KAE5B,KAAK,GAAIr4B,GAAI,EAAGA,EAAIjD,KAAKqiC,QAAQn/B,OAAQD,IAEN,gBAApBjD,MAAKqiC,QAAQp/B,IAEpBq4B,EAAOv3B,KAAK/D,KAAKqiC,QAAQp/B,IACzBq4B,EAAOv3B,KAAK/D,KAAKqiC,QAAQp/B,EAAI,IAC7BA,MAIAq4B,EAAOv3B,KAAK/D,KAAKqiC,QAAQp/B,GAAGoC,GAC5Bi2B,EAAOv3B,KAAK/D,KAAKqiC,QAAQp/B,GAAGqC,GAIpC,OAAOg2B,IAUXkH,QAAS,WAIL,MAFAxiC,MAAKqiC,QAAUriC,KAAKuiC,gBAEbviC,MAYX65B,MAAO,SAAUyB,GAEb,GAAIhM,GAAStvB,KAAKqiC,QAAQhM,OAW1B,OATe3sB,UAAX4xB,GAAmC,OAAXA,EAExBA,EAAS,GAAIzS,GAAOsZ,QAAQ7S,GAI5BgM,EAAON,MAAM1L,GAGVgM,GAYXC,SAAU,SAAUl2B,EAAGC,GAOnB,IAAK,GAHDpC,GAASlD,KAAKqiC,QAAQn/B,OACtBu/B,GAAS,EAEJx/B,EAAI,GAAIa,EAAIZ,EAAS,IAAKD,EAAIC,EAAQY,EAAIb,EACnD,CACI,GAAIy/B,GAAK1iC,KAAKqiC,QAAQp/B,GAAGoC,EACrBs9B,EAAK3iC,KAAKqiC,QAAQp/B,GAAGqC,EAErBs9B,EAAK5iC,KAAKqiC,QAAQv+B,GAAGuB,EACrBw9B,EAAK7iC,KAAKqiC,QAAQv+B,GAAGwB,GAEbA,GAANq9B,GAAeE,EAAJv9B,GAAkBA,GAANu9B,GAAeF,EAAJr9B,KAAkBs9B,EAAKF,IAAOp9B,EAAIq9B,IAAOE,EAAKF,GAAMD,EAAvCr9B,IAEjDo9B,GAAUA,GAIlB,MAAOA,IAuBXzH,MAAO,SAAU1L,GAKb,GAHAtvB,KAAKoiC,KAAO,EACZpiC,KAAKqiC,WAED1L,UAAUzzB,OAAS,EACvB,CAESvC,MAAM2R,QAAQgd,KAEfA,EAAS3uB,MAAMkC,UAAUwzB,MAAM3wB,KAAKixB,WAMxC,KAAK,GAHD3T,GAAK8f,OAAOC,UAGP9/B,EAAI,EAAGk0B,EAAM7H,EAAOpsB,OAAYi0B,EAAJl0B,EAASA,IAC9C,CACI,GAAyB,gBAAdqsB,GAAOrsB,GAClB,CACI,GAAIuB,GAAI,GAAIvE,MAAKmB,MAAMkuB,EAAOrsB,GAAIqsB,EAAOrsB,EAAI,GAC7CA,SAEC,IAAItC,MAAM2R,QAAQgd,EAAOrsB,IAE1B,GAAIuB,GAAI,GAAIvE,MAAKmB,MAAMkuB,EAAOrsB,GAAG,GAAIqsB,EAAOrsB,GAAG,QAI/C,IAAIuB,GAAI,GAAIvE,MAAKmB,MAAMkuB,EAAOrsB,GAAGoC,EAAGiqB,EAAOrsB,GAAGqC,EAGlDtF,MAAKqiC,QAAQt+B,KAAKS,GAGdA,EAAEc,EAAI0d,IAENA,EAAKxe,EAAEc,GAIftF,KAAKgjC,cAAchgB,GAGvB,MAAOhjB,OAYXgjC,cAAe,SAAUhgB,GAOrB,IAAK,GALDigB,GACAC,EACAC,EACAx8B,EAEK1D,EAAI,EAAGk0B,EAAMn3B,KAAKqiC,QAAQn/B,OAAYi0B,EAAJl0B,EAASA,IAEhDggC,EAAKjjC,KAAKqiC,QAAQp/B,GAIdigC,EAFAjgC,IAAMk0B,EAAM,EAEPn3B,KAAKqiC,QAAQ,GAIbriC,KAAKqiC,QAAQp/B,EAAI,GAG1BkgC,GAAcF,EAAG39B,EAAI0d,GAAOkgB,EAAG59B,EAAI0d,IAAO,EAC1Crc,EAAQs8B,EAAG59B,EAAI69B,EAAG79B,EAClBrF,KAAKoiC,MAAQe,EAAYx8B,CAG7B,OAAO3G,MAAKoiC,OAMpBvZ,EAAOsZ,QAAQt/B,UAAUC,YAAc+lB,EAAOsZ,QAW9C/+B,OAAOC,eAAewlB,EAAOsZ,QAAQt/B,UAAW,UAE5CS,IAAK,WACD,MAAOtD,MAAKqiC,SAGhB7+B,IAAK,SAAS8rB,GAEI,MAAVA,EAEAtvB,KAAKg7B,MAAM1L,GAKXtvB,KAAKg7B,WAQjB/6B,KAAKkiC,QAAUtZ,EAAOsZ,QAmBtBtZ,EAAOrmB,UAAY,SAAU6C,EAAGC,EAAGqB,EAAOC,GAEtCvB,EAAIA,GAAK,EACTC,EAAIA,GAAK,EACTqB,EAAQA,GAAS,EACjBC,EAASA,GAAU,EAKnB5G,KAAKqF,EAAIA,EAKTrF,KAAKsF,EAAIA,EAKTtF,KAAK2G,MAAQA,EAKb3G,KAAK4G,OAASA,EAMd5G,KAAKoV,KAAOyT,EAAOmL,WAIvBnL,EAAOrmB,UAAUK,WASb6W,OAAQ,SAAU7L,EAAIE,GAKlB,MAHA/N,MAAKqF,GAAKwI,EACV7N,KAAKsF,GAAKyI,EAEH/N,MAUX27B,YAAa,SAAUnM,GAEnB,MAAOxvB,MAAK0Z,OAAO8V,EAAMnqB,EAAGmqB,EAAMlqB,IAatC01B,MAAO,SAAU31B,EAAGC,EAAGqB,EAAOC,GAO1B,MALA5G,MAAKqF,EAAIA,EACTrF,KAAKsF,EAAIA,EACTtF,KAAK2G,MAAQA,EACb3G,KAAK4G,OAASA,EAEP5G,MAYXqB,MAAO,SAAUgE,EAAGC,GAOhB,MALUoE,UAANpE,IAAmBA,EAAID,GAE3BrF,KAAK2G,OAAStB,EACdrF,KAAK4G,QAAUtB,EAERtF,MAYX69B,SAAU,SAAUx4B,EAAGC,GAKnB,MAHAtF,MAAK8tB,QAAUzoB,EACfrF,KAAK+tB,QAAUzoB,EAERtF,MAQXk2B,MAAO,WAEHl2B,KAAKqF,EAAIxE,KAAKq1B,MAAMl2B,KAAKqF,GACzBrF,KAAKsF,EAAIzE,KAAKq1B,MAAMl2B,KAAKsF,IAQ7B89B,SAAU,WAENpjC,KAAKqF,EAAIxE,KAAKq1B,MAAMl2B,KAAKqF,GACzBrF,KAAKsF,EAAIzE,KAAKq1B,MAAMl2B,KAAKsF,GACzBtF,KAAK2G,MAAQ9F,KAAKq1B,MAAMl2B,KAAK2G,OAC7B3G,KAAK4G,OAAS/F,KAAKq1B,MAAMl2B,KAAK4G,SAQlCiB,KAAM,WAEF7H,KAAKqF,EAAIxE,KAAKgH,KAAK7H,KAAKqF,GACxBrF,KAAKsF,EAAIzE,KAAKgH,KAAK7H,KAAKsF,IAQ5B+9B,QAAS,WAELrjC,KAAKqF,EAAIxE,KAAKgH,KAAK7H,KAAKqF,GACxBrF,KAAKsF,EAAIzE,KAAKgH,KAAK7H,KAAKsF,GACxBtF,KAAK2G,MAAQ9F,KAAKgH,KAAK7H,KAAK2G,OAC5B3G,KAAK4G,OAAS/F,KAAKgH,KAAK7H,KAAK4G,SAUjCq0B,SAAU,SAAUrsB,GAEhB,MAAO5O,MAAKg7B,MAAMpsB,EAAOvJ,EAAGuJ,EAAOtJ,EAAGsJ,EAAOjI,MAAOiI,EAAOhI,SAU/Ds0B,OAAQ,SAAUC,GAOd,MALAA,GAAK91B,EAAIrF,KAAKqF,EACd81B,EAAK71B,EAAItF,KAAKsF,EACd61B,EAAKx0B,MAAQ3G,KAAK2G,MAClBw0B,EAAKv0B,OAAS5G,KAAK4G,OAEZu0B,GAWXmI,QAAS,SAAUz1B,EAAIE,GAEnB,MAAO8a,GAAOrmB,UAAU8gC,QAAQtjC,KAAM6N,EAAIE,IAU9CwT,KAAM,SAAU+Z,GAEZ,MAAOzS,GAAOrmB,UAAU+e,KAAKvhB,KAAMs7B,IAavCvzB,OAAQ,SAAUpB,EAAOC,GAKrB,MAHA5G,MAAK2G,MAAQA,EACb3G,KAAK4G,OAASA,EAEP5G,MAUX65B,MAAO,SAAUyB,GAEb,MAAOzS,GAAOrmB,UAAUq3B,MAAM75B,KAAMs7B,IAWxCC,SAAU,SAAUl2B,EAAGC,GAEnB,MAAOujB,GAAOrmB,UAAU+4B,SAASv7B,KAAMqF,EAAGC,IAW9Ci+B,aAAc,SAAU5+B,GAEpB,MAAOkkB,GAAOrmB,UAAU+gC,aAAa5+B,EAAG3E,OAW5C87B,OAAQ,SAAUn3B,GAEd,MAAOkkB,GAAOrmB,UAAUs5B,OAAO97B,KAAM2E,IAWzC6+B,aAAc,SAAU7+B,EAAGk2B,GAEvB,MAAOhS,GAAOrmB,UAAUghC,aAAaxjC,KAAM2E,EAAGk2B,IAYlDkB,WAAY,SAAUp3B,GAElB,MAAOkkB,GAAOrmB,UAAUu5B,WAAW/7B,KAAM2E,IAe7C8+B,cAAe,SAAUtK,EAAMD,EAAO0C,EAAKC,EAAQ6H,GAE/C,MAAO7a,GAAOrmB,UAAUihC,cAAczjC,KAAMm5B,EAAMD,EAAO0C,EAAKC,EAAQ6H,IAW1EC,MAAO,SAAUh/B,EAAGk2B,GAEhB,MAAOhS,GAAOrmB,UAAUmhC,MAAM3jC,KAAM2E,EAAGk2B,IAY3C1C,OAAQ,SAAU0C,GAOd,MALYnxB,UAARmxB,IAAqBA,EAAM,GAAIhS,GAAOznB,OAE1Cy5B,EAAIx1B,EAAIrF,KAAK4jC,QACb/I,EAAIv1B,EAAItF,KAAK6jC,QAENhJ,GAoBXiJ,SAAU,SAAU3iC,EAAU05B,GAI1B,OAFYnxB,SAARmxB,IAAqBA,EAAM,GAAIhS,GAAOznB,OAElCD,GAEJ,QACA,IAAK0nB,GAAOuM,SACR,MAAOyF,GAAIr3B,IAAIxD,KAAKqF,EAAGrF,KAAKsF,EAEhC,KAAKujB,GAAOwM,WACR,MAAOwF,GAAIr3B,IAAIxD,KAAK8tB,QAAS9tB,KAAKsF,EAEtC,KAAKujB,GAAOyM,UACR,MAAOuF,GAAIr3B,IAAIxD,KAAKk5B,MAAOl5B,KAAKsF,EAEpC,KAAKujB,GAAO2M,YACR,MAAOqF,GAAIr3B,IAAIxD,KAAKqF,EAAGrF,KAAK+tB,QAEhC,KAAKlF,GAAO6M,OACR,MAAOmF,GAAIr3B,IAAIxD,KAAK8tB,QAAS9tB,KAAK+tB,QAEtC,KAAKlF,GAAO+M,aACR,MAAOiF,GAAIr3B,IAAIxD,KAAKk5B,MAAOl5B,KAAK+tB,QAEpC,KAAKlF,GAAOiN,YACR,MAAO+E,GAAIr3B,IAAIxD,KAAKqF,EAAGrF,KAAK67B,OAEhC,KAAKhT,GAAOkN,cACR,MAAO8E,GAAIr3B,IAAIxD,KAAK8tB,QAAS9tB,KAAK67B,OAEtC,KAAKhT,GAAOmN,aACR,MAAO6E,GAAIr3B,IAAIxD,KAAKk5B,MAAOl5B,KAAK67B,UAU5C/T,SAAU,WAEN,MAAO,kBAAoB9nB,KAAKqF,EAAI,MAAQrF,KAAKsF,EAAI,UAAYtF,KAAK2G,MAAQ,WAAa3G,KAAK4G,OAAS,UAAY5G,KAAK+jC,MAAQ,QAW1I3gC,OAAOC,eAAewlB,EAAOrmB,UAAUK,UAAW,aAE9CS,IAAK,WACD,MAAOzC,MAAKw6B,MAAMr7B,KAAK2G,MAAQ,MAUvCvD,OAAOC,eAAewlB,EAAOrmB,UAAUK,UAAW,cAE9CS,IAAK,WACD,MAAOzC,MAAKw6B,MAAMr7B,KAAK4G,OAAS,MAUxCxD,OAAOC,eAAewlB,EAAOrmB,UAAUK,UAAW,UAE9CS,IAAK,WACD,MAAOtD,MAAKsF,EAAItF,KAAK4G,QAGzBpD,IAAK,SAAUC,GAEPA,GAASzD,KAAKsF,EAEdtF,KAAK4G,OAAS,EAId5G,KAAK4G,OAASnD,EAAQzD,KAAKsF,KAYvClC,OAAOC,eAAewlB,EAAOrmB,UAAUK,UAAW,cAE9CS,IAAK,WACD,MAAO,IAAIulB,GAAOznB,MAAMpB,KAAKqF,EAAGrF,KAAK67B,SAGzCr4B,IAAK,SAAUC,GACXzD,KAAKqF,EAAI5B,EAAM4B,EACfrF,KAAK67B,OAASp4B,EAAM6B,KAU5BlC,OAAOC,eAAewlB,EAAOrmB,UAAUK,UAAW,eAE9CS,IAAK,WACD,MAAO,IAAIulB,GAAOznB,MAAMpB,KAAKk5B,MAAOl5B,KAAK67B,SAG7Cr4B,IAAK,SAAUC,GACXzD,KAAKk5B,MAAQz1B,EAAM4B,EACnBrF,KAAK67B,OAASp4B,EAAM6B,KAU5BlC,OAAOC,eAAewlB,EAAOrmB,UAAUK,UAAW,QAE9CS,IAAK,WACD,MAAOtD,MAAKqF,GAGhB7B,IAAK,SAAUC,GACPA,GAASzD,KAAKk5B,MACdl5B,KAAK2G,MAAQ,EAEb3G,KAAK2G,MAAQ3G,KAAKk5B,MAAQz1B,EAE9BzD,KAAKqF,EAAI5B,KAUjBL,OAAOC,eAAewlB,EAAOrmB,UAAUK,UAAW,SAE9CS,IAAK,WACD,MAAOtD,MAAKqF,EAAIrF,KAAK2G,OAGzBnD,IAAK,SAAUC,GACPA,GAASzD,KAAKqF,EACdrF,KAAK2G,MAAQ,EAEb3G,KAAK2G,MAAQlD,EAAQzD,KAAKqF,KAYtCjC,OAAOC,eAAewlB,EAAOrmB,UAAUK,UAAW,UAE9CS,IAAK,WACD,MAAOtD,MAAK2G,MAAQ3G,KAAK4G,UAWjCxD,OAAOC,eAAewlB,EAAOrmB,UAAUK,UAAW,aAE9CS,IAAK,WACD,MAAqB,GAAbtD,KAAK2G,MAA4B,EAAd3G,KAAK4G,UAUxCxD,OAAOC,eAAewlB,EAAOrmB,UAAUK,UAAW,WAE9CS,IAAK,WACD,MAAOtD,MAAKqF,EAAIrF,KAAKm8B,WAGzB34B,IAAK,SAAUC,GACXzD,KAAKqF,EAAI5B,EAAQzD,KAAKm8B,aAU9B/4B,OAAOC,eAAewlB,EAAOrmB,UAAUK,UAAW,WAE9CS,IAAK,WACD,MAAOtD,MAAKsF,EAAItF,KAAKq8B,YAGzB74B,IAAK,SAAUC,GACXzD,KAAKsF,EAAI7B,EAAQzD,KAAKq8B,cAW9Bj5B,OAAOC,eAAewlB,EAAOrmB,UAAUK,UAAW,WAE9CS,IAAK,WAED,MAAOtD,MAAKqF,EAAKxE,KAAKs3B,SAAWn4B,KAAK2G,SAY9CvD,OAAOC,eAAewlB,EAAOrmB,UAAUK,UAAW,WAE9CS,IAAK,WAED,MAAOtD,MAAKsF,EAAKzE,KAAKs3B,SAAWn4B,KAAK4G,UAY9CxD,OAAOC,eAAewlB,EAAOrmB,UAAUK,UAAW,OAE9CS,IAAK,WACD,MAAOtD,MAAKsF,GAGhB9B,IAAK,SAAUC,GACPA,GAASzD,KAAK67B,QACd77B,KAAK4G,OAAS,EACd5G,KAAKsF,EAAI7B,GAETzD,KAAK4G,OAAU5G,KAAK67B,OAASp4B,KAWzCL,OAAOC,eAAewlB,EAAOrmB,UAAUK,UAAW,WAE9CS,IAAK,WACD,MAAO,IAAIulB,GAAOznB,MAAMpB,KAAKqF,EAAGrF,KAAKsF,IAGzC9B,IAAK,SAAUC,GACXzD,KAAKqF,EAAI5B,EAAM4B,EACfrF,KAAKsF,EAAI7B,EAAM6B,KAUvBlC,OAAOC,eAAewlB,EAAOrmB,UAAUK,UAAW,YAE9CS,IAAK,WACD,MAAO,IAAIulB,GAAOznB,MAAMpB,KAAKqF,EAAIrF,KAAK2G,MAAO3G,KAAKsF,IAGtD9B,IAAK,SAAUC,GACXzD,KAAKk5B,MAAQz1B,EAAM4B,EACnBrF,KAAKsF,EAAI7B,EAAM6B,KAWvBlC,OAAOC,eAAewlB,EAAOrmB,UAAUK,UAAW,SAE9CS,IAAK,WACD,OAAStD,KAAK2G,QAAU3G,KAAK4G,QAGjCpD,IAAK,SAAUC,GAEPA,KAAU,GAEVzD,KAAKg7B,MAAM,EAAG,EAAG,EAAG,MAOhCnS,EAAOrmB,UAAUK,UAAUC,YAAc+lB,EAAOrmB,UAUhDqmB,EAAOrmB,UAAU8gC,QAAU,SAAU5+B,EAAGmJ,EAAIE,GAOxC,MALArJ,GAAEW,GAAKwI,EACPnJ,EAAEiC,OAAS,EAAIkH,EACfnJ,EAAEY,GAAKyI,EACPrJ,EAAEkC,QAAU,EAAImH,EAETrJ,GAWXmkB,EAAOrmB,UAAUwhC,aAAe,SAAUt/B,EAAG8qB,GAEzC,MAAO3G,GAAOrmB,UAAU8gC,QAAQ5+B,EAAG8qB,EAAMnqB,EAAGmqB,EAAMlqB,IAWtDujB,EAAOrmB,UAAU+e,KAAO,SAAU7c,EAAG42B,GAWjC,MATe5xB,UAAX4xB,GAAmC,OAAXA,EAExBA,EAAS,GAAIzS,GAAOznB,MAAMsD,EAAEiC,MAAOjC,EAAEkC,QAIrC00B,EAAON,MAAMt2B,EAAEiC,MAAOjC,EAAEkC,QAGrB00B,GAWXzS,EAAOrmB,UAAUq3B,MAAQ,SAAUn1B,EAAG42B,GAWlC,MATe5xB,UAAX4xB,GAAmC,OAAXA,EAExBA,EAAS,GAAIzS,GAAOrmB,UAAUkC,EAAEW,EAAGX,EAAEY,EAAGZ,EAAEiC,MAAOjC,EAAEkC,QAInD00B,EAAON,MAAMt2B,EAAEW,EAAGX,EAAEY,EAAGZ,EAAEiC,MAAOjC,EAAEkC,QAG/B00B,GAYXzS,EAAOrmB,UAAU+4B,SAAW,SAAU72B,EAAGW,EAAGC,GAExC,MAAIZ,GAAEiC,OAAS,GAAKjC,EAAEkC,QAAU,GAErB,EAGHvB,GAAKX,EAAEW,GAAKA,EAAIX,EAAEw0B,OAAS5zB,GAAKZ,EAAEY,GAAKA,EAAIZ,EAAEm3B,QAezDhT,EAAOrmB,UAAUyhC,YAAc,SAAUC,EAAIC,EAAIC,EAAIC,EAAIh/B,EAAGC,GAExD,MAAQD,IAAK6+B,GAAWA,EAAKE,EAAV/+B,GAAiBC,GAAK6+B,GAAWA,EAAKE,EAAV/+B,GAWnDujB,EAAOrmB,UAAU8hC,cAAgB,SAAU5/B,EAAG8qB,GAE1C,MAAO3G,GAAOrmB,UAAU+4B,SAAS72B,EAAG8qB,EAAMnqB,EAAGmqB,EAAMlqB,IAYvDujB,EAAOrmB,UAAU+gC,aAAe,SAAU7+B,EAAGC,GAGzC,MAAID,GAAE6/B,OAAS5/B,EAAE4/B,QAEN,EAGH7/B,EAAEW,GAAKV,EAAEU,GAAKX,EAAEY,GAAKX,EAAEW,GAAKZ,EAAEw0B,MAAQv0B,EAAEu0B,OAASx0B,EAAEm3B,OAASl3B,EAAEk3B,QAY1EhT,EAAOrmB,UAAUs5B,OAAS,SAAUp3B,EAAGC,GAEnC,MAAQD,GAAEW,GAAKV,EAAEU,GAAKX,EAAEY,GAAKX,EAAEW,GAAKZ,EAAEiC,OAAShC,EAAEgC,OAASjC,EAAEkC,QAAUjC,EAAEiC,QAW5EiiB,EAAOrmB,UAAUgiC,eAAiB,SAAU9/B,EAAGC,GAE3C,MAAQD,GAAEiC,QAAUhC,EAAEgC,OAASjC,EAAEkC,SAAWjC,EAAEiC,QAYlDiiB,EAAOrmB,UAAUghC,aAAe,SAAU9+B,EAAGC,EAAG22B,GAe5C,MAbe5xB,UAAX4xB,IAEAA,EAAS,GAAIzS,GAAOrmB,WAGpBqmB,EAAOrmB,UAAUu5B,WAAWr3B,EAAGC,KAE/B22B,EAAOj2B,EAAIxE,KAAK+G,IAAIlD,EAAEW,EAAGV,EAAEU,GAC3Bi2B,EAAOh2B,EAAIzE,KAAK+G,IAAIlD,EAAEY,EAAGX,EAAEW,GAC3Bg2B,EAAO30B,MAAQ9F,KAAKq9B,IAAIx5B,EAAEw0B,MAAOv0B,EAAEu0B,OAASoC,EAAOj2B,EACnDi2B,EAAO10B,OAAS/F,KAAKq9B,IAAIx5B,EAAEm3B,OAAQl3B,EAAEk3B,QAAUP,EAAOh2B,GAGnDg2B,GAYXzS,EAAOrmB,UAAUu5B,WAAa,SAAUr3B,EAAGC,GAEvC,MAAID,GAAEiC,OAAS,GAAKjC,EAAEkC,QAAU,GAAKjC,EAAEgC,OAAS,GAAKhC,EAAEiC,QAAU,GAEtD,IAGFlC,EAAEw0B,MAAQv0B,EAAEU,GAAKX,EAAEm3B,OAASl3B,EAAEW,GAAKZ,EAAEW,EAAIV,EAAEu0B,OAASx0B,EAAEY,EAAIX,EAAEk3B,SAczEhT,EAAOrmB,UAAUihC,cAAgB,SAAU/+B,EAAGy0B,EAAMD,EAAO0C,EAAKC,EAAQ6H,GAIpE,MAFkBh6B,UAAdg6B,IAA2BA,EAAY,KAElCvK,EAAOz0B,EAAEw0B,MAAQwK,GAAaxK,EAAQx0B,EAAEy0B,KAAOuK,GAAa9H,EAAMl3B,EAAEm3B,OAAS6H,GAAa7H,EAASn3B,EAAEk3B,IAAM8H,IAYxH7a,EAAOrmB,UAAUmhC,MAAQ,SAAUj/B,EAAGC,EAAG22B,GAOrC,MALe5xB,UAAX4xB,IAEAA,EAAS,GAAIzS,GAAOrmB,WAGjB84B,EAAON,MAAMn6B,KAAKq9B,IAAIx5B,EAAEW,EAAGV,EAAEU,GAAIxE,KAAKq9B,IAAIx5B,EAAEY,EAAGX,EAAEW,GAAIzE,KAAK+G,IAAIlD,EAAEw0B,MAAOv0B,EAAEu0B,OAASr4B,KAAKq9B,IAAIx5B,EAAEy0B,KAAMx0B,EAAEw0B,MAAOt4B,KAAK+G,IAAIlD,EAAEm3B,OAAQl3B,EAAEk3B,QAAUh7B,KAAKq9B,IAAIx5B,EAAEk3B,IAAKj3B,EAAEi3B,OAaxK/S,EAAOrmB,UAAUiiC,KAAO,SAASnV,EAAQuL,GAEzBnxB,SAARmxB,IACAA,EAAM,GAAIhS,GAAOrmB,UAGrB,IAAI27B,GAAO2E,OAAO4B,kBACdzG,EAAO6E,OAAO6B,kBACdtG,EAAOyE,OAAO4B,kBACdtG,EAAO0E,OAAO6B,iBAoBlB,OAlBArV,GAAO0H,QAAQ,SAASxH,GAChBA,EAAMnqB,EAAI84B,IACVA,EAAO3O,EAAMnqB,GAEbmqB,EAAMnqB,EAAI44B,IACVA,EAAOzO,EAAMnqB,GAGbmqB,EAAMlqB,EAAI+4B,IACVA,EAAO7O,EAAMlqB,GAEbkqB,EAAMlqB,EAAI84B,IACVA,EAAO5O,EAAMlqB,KAIrBu1B,EAAIG,MAAMiD,EAAMG,EAAMD,EAAOF,EAAMI,EAAOD,GAEnCvD,GAIX56B,KAAKuC,UAAYqmB,EAAOrmB,UACxBvC,KAAK8F,eAAiB,GAAI8iB,GAAOrmB,UAAU,EAAG,EAAG,EAAG,GAqBpDqmB,EAAO+b,iBAAmB,SAASv/B,EAAGC,EAAGqB,EAAOC,EAAQm0B,GAE1CrxB,SAANrE,IAAmBA,EAAI,GACjBqE,SAANpE,IAAmBA,EAAI,GACboE,SAAV/C,IAAuBA,EAAQ,GACpB+C,SAAX9C,IAAwBA,EAAS,GACtB8C,SAAXqxB,IAAwBA,EAAS,IAKrC/6B,KAAKqF,EAAIA,EAKTrF,KAAKsF,EAAIA,EAKTtF,KAAK2G,MAAQA,EAKb3G,KAAK4G,OAASA,EAKd5G,KAAK+6B,OAASA,GAAU,GAMxB/6B,KAAKoV,KAAOyT,EAAOuL,kBAGvBvL,EAAO+b,iBAAiB/hC,WASpBg3B,MAAO,WAEH,MAAO,IAAIhR,GAAO+b,iBAAiB5kC,KAAKqF,EAAGrF,KAAKsF,EAAGtF,KAAK2G,MAAO3G,KAAK4G,OAAQ5G,KAAK+6B,SAYrFQ,SAAU,SAAUl2B,EAAGC,GAEnB,GAAItF,KAAK2G,OAAS,GAAK3G,KAAK4G,QAAU,EAElC,OAAO,CAGX,IAAIgG,GAAK5M,KAAKqF,CAEd,IAAIA,GAAKuH,GAAMvH,GAAKuH,EAAK5M,KAAK2G,MAC9B,CACI,GAAIkG,GAAK7M,KAAKsF,CAEd,IAAIA,GAAKuH,GAAMvH,GAAKuH,EAAK7M,KAAK4G,OAE1B,OAAO,EAIf,OAAO,IAMfiiB,EAAO+b,iBAAiB/hC,UAAUC,YAAc+lB,EAAO+b,iBAGvD3kC,KAAK2kC,iBAAmB/b,EAAO+b,iBAqB/B/b,EAAOgc,OAAS,SAAU3kC,EAAM+V,EAAI5Q,EAAGC,EAAGqB,EAAOC,GAK7C5G,KAAKE,KAAOA,EAKZF,KAAKyE,MAAQvE,EAAKuE,MAMlBzE,KAAKiW,GAAK,EASVjW,KAAKoZ,KAAO,GAAIyP,GAAOrmB,UAAU6C,EAAGC,EAAGqB,EAAOC,GAS9C5G,KAAKwG,OAAS,GAAIqiB,GAAOrmB,UAAU6C,EAAGC,EAAGqB,EAAOC,GAKhD5G,KAAK8kC,SAAW,KAMhB9kC,KAAKyB,SAAU,EAMfzB,KAAK+kC,SAAU,EAKf/kC,KAAKglC,SAAY3/B,GAAG,EAAOC,GAAG,GAM9BtF,KAAKiE,OAAS,KAKdjE,KAAKyb,cAAgB,KAKrBzb,KAAKqB,MAAQ,KAMbrB,KAAKilC,YAAc,EAWnBjlC,KAAKklC,KAAO,GAAIrc,GAAOznB,MAAM,EAAG,GAKhCpB,KAAKmlC,gBAAkB,GAAItc,GAAOuc,OAKlCplC,KAAKqlC,gBAAkB,GAAIxc,GAAOuc,OASlCplC,KAAKslC,eAAiB,GAAIzc,GAAOuc,OAOjCplC,KAAKulC,GAAK,KAMVvlC,KAAKwlC,gBAAkB,GAAI3c,GAAOznB,MAOlCpB,KAAKylC,MAAQ,EAObzlC,KAAK0lC,UAAY,GAAI7c,GAAOznB,MAM5BpB,KAAKub,QACDoqB,UAAW,EACXC,SAAU,EACVC,YAAY,EACZC,UAAU,EACVC,aAAa,EACb1gC,EAAG,EACHC,EAAG,GAOPtF,KAAKgmC,YAAc,EAMnBhmC,KAAKimC,QAAU,GAQnBpd,EAAOgc,OAAOqB,cAAgB,EAM9Brd,EAAOgc,OAAOsB,kBAAoB,EAMlCtd,EAAOgc,OAAOuB,eAAiB,EAM/Bvd,EAAOgc,OAAOwB,qBAAuB,EAMrCxd,EAAOgc,OAAOyB,WAAa,EAM3Bzd,EAAOgc,OAAO0B,iBAAmB,EAMjC1d,EAAOgc,OAAO2B,eAAiB,EAM/B3d,EAAOgc,OAAO4B,WAAY,EAE1B5d,EAAOgc,OAAOhiC,WAQV6jC,KAAM,WAEF1mC,KAAKyb,cAAgBzb,KAAKE,KAAKuE,MAE/BzE,KAAKqB,MAAQrB,KAAKE,KAAKuE,MAAMpD,MAE7BrB,KAAKE,KAAKob,OAAStb,KAEf6oB,EAAO8d,UAAY9d,EAAOgc,OAAO4B,YAEjCzmC,KAAKulC,GAAK,GAAI1c,GAAO8d,SAAS3mC,KAAKE,MAEnCF,KAAKE,KAAK2B,MAAM2G,SAASxI,KAAKulC,MAUtCp/B,UAAW,WAEPnG,KAAKilC,YAAc,GAmBvB2B,OAAQ,SAAU3iC,EAAQ2X,EAAOirB,EAAOC,GAEtBp9B,SAAVkS,IAAuBA,EAAQiN,EAAOgc,OAAOqB,eACnCx8B,SAAVm9B,IAAuBA,EAAQ,GACrBn9B,SAAVo9B,IAAuBA,EAAQ,GAEnC9mC,KAAKiE,OAASA,EACdjE,KAAKklC,KAAK1hC,IAAIqjC,EAAOC,EAErB,IAAIC,EAEJ,QAAQnrB,GAEJ,IAAKiN,GAAOgc,OAAOsB,kBACf,GAAIvuB,GAAI5X,KAAK2G,MAAQ,EACjByc,EAAIpjB,KAAK4G,OAAS,CACtB5G,MAAK8kC,SAAW,GAAIjc,GAAOrmB,WAAWxC,KAAK2G,MAAQiR,GAAK,GAAI5X,KAAK4G,OAASwc,GAAK,EAAQ,IAAJA,EAAUxL,EAAGwL,EAChG,MAEJ,KAAKyF,GAAOgc,OAAOuB,eACfW,EAASlmC,KAAK+G,IAAI5H,KAAK2G,MAAO3G,KAAK4G,QAAU,EAC7C5G,KAAK8kC,SAAW,GAAIjc,GAAOrmB,WAAWxC,KAAK2G,MAAQogC,GAAU,GAAI/mC,KAAK4G,OAASmgC,GAAU,EAAGA,EAAQA,EACpG,MAEJ,KAAKle,GAAOgc,OAAOwB,qBACfU,EAASlmC,KAAK+G,IAAI5H,KAAK2G,MAAO3G,KAAK4G,QAAU,EAC7C5G,KAAK8kC,SAAW,GAAIjc,GAAOrmB,WAAWxC,KAAK2G,MAAQogC,GAAU,GAAI/mC,KAAK4G,OAASmgC,GAAU,EAAGA,EAAQA,EACpG,MAEJ,KAAKle,GAAOgc,OAAOqB,cACflmC,KAAK8kC,SAAW,IAChB,MAEJ,SACI9kC,KAAK8kC,SAAW,OAW5BkC,SAAU,WAENhnC,KAAKiE,OAAS,MASlBgjC,QAAS,SAAUxrB,GAEfzb,KAAKknC,YAAYrmC,KAAKw6B,MAAM5f,EAAcpW,EAAIrF,KAAKoZ,KAAK+iB,WAAYt7B,KAAKw6B,MAAM5f,EAAcnW,EAAItF,KAAKoZ,KAAKijB,cAU/G8K,UAAW,SAAU9hC,EAAGC,GAEpBtF,KAAKknC,YAAYrmC,KAAKw6B,MAAMh2B,EAAIrF,KAAKoZ,KAAK+iB,WAAYt7B,KAAKw6B,MAAM/1B,EAAItF,KAAKoZ,KAAKijB,cAmBnF+K,MAAO,SAAUzB,EAAWC,EAAUyB,EAAOC,EAAWvB,GAQpD,MANkBr8B,UAAdi8B,IAA2BA,EAAY,KAC1Bj8B,SAAbk8B,IAA0BA,EAAW,KAC3Bl8B,SAAV29B,IAAuBA,GAAQ,GACjB39B,SAAd49B,IAA2BA,EAAYze,EAAOgc,OAAOyB,YACrC58B,SAAhBq8B,IAA6BA,GAAc,IAE1CsB,GAASrnC,KAAKub,OAAOqqB,SAAW,GAG1B,GAGX5lC,KAAKub,OAAOoqB,UAAYA,EACxB3lC,KAAKub,OAAOqqB,SAAWA,EACvB5lC,KAAKub,OAAOwqB,YAAcA,EAE1B/lC,KAAKub,OAAOlW,EAAI,EAChBrF,KAAKub,OAAOjW,EAAI,EAEhBtF,KAAKub,OAAOsqB,WAAcyB,IAAcze,EAAOgc,OAAOyB,YAAcgB,IAAcze,EAAOgc,OAAO0B,iBAChGvmC,KAAKub,OAAOuqB,SAAYwB,IAAcze,EAAOgc,OAAOyB,YAAcgB,IAAcze,EAAOgc,OAAO2B,gBAEvF,IAkBXe,MAAO,SAAU3uB,EAAOgtB,EAAUyB,GAM9B,MAJc39B,UAAVkP,IAAuBA,EAAQ,UAClBlP,SAAbk8B,IAA0BA,EAAW,KAC3Bl8B,SAAV29B,IAAuBA,GAAQ,IAE9BrnC,KAAKulC,KAAQ8B,GAASrnC,KAAKgmC,YAAc,GAEnC,GAGXhmC,KAAKulC,GAAGnqB,QAERpb,KAAKulC,GAAGiC,UAAU5uB,GAClB5Y,KAAKulC,GAAGkC,SAAS,EAAG,EAAGznC,KAAK2G,MAAO3G,KAAK4G,QACxC5G,KAAKulC,GAAGmC,UAER1nC,KAAKulC,GAAG/jC,MAAQ,EAEhBxB,KAAKgmC,YAAcJ,EACnB5lC,KAAKimC,QAAU,GAER,IAuBX0B,KAAM,SAAU/uB,EAAOgtB,EAAUyB,GAM7B,MAJc39B,UAAVkP,IAAuBA,EAAQ,GAClBlP,SAAbk8B,IAA0BA,EAAW,KAC3Bl8B,SAAV29B,IAAuBA,GAAQ,IAE9BrnC,KAAKulC,KAAQ8B,GAASrnC,KAAKgmC,YAAc,GAEnC,GAGXhmC,KAAKulC,GAAGnqB,QAERpb,KAAKulC,GAAGiC,UAAU5uB,GAClB5Y,KAAKulC,GAAGkC,SAAS,EAAG,EAAGznC,KAAK2G,MAAO3G,KAAK4G,QACxC5G,KAAKulC,GAAGmC,UAER1nC,KAAKulC,GAAG/jC,MAAQ,EAEhBxB,KAAKgmC,YAAcJ,EACnB5lC,KAAKimC,QAAU,GAER,IAUX2B,OAAQ,WAEA5nC,KAAKgmC,YAAc,GAEnBhmC,KAAK6nC,WAGL7nC,KAAKub,OAAOqqB,SAAW,GAEvB5lC,KAAK8nC,cAGL9nC,KAAKwG,QAELxG,KAAK+nC,cAGL/nC,KAAK+kC,UAEL/kC,KAAKoZ,KAAK8c,QACVl2B,KAAKub,OAAOlW,EAAIxE,KAAKq1B,MAAMl2B,KAAKub,OAAOlW,GACvCrF,KAAKub,OAAOjW,EAAIzE,KAAKq1B,MAAMl2B,KAAKub,OAAOjW,IAG3CtF,KAAKyb,cAActa,SAASkE,GAAKrF,KAAKoZ,KAAK/T,EAC3CrF,KAAKyb,cAActa,SAASmE,GAAKtF,KAAKoZ,KAAK9T,GAU/CuiC,SAAU,WAEe,IAAjB7nC,KAAKimC,SAGLjmC,KAAKulC,GAAG/jC,OAASxB,KAAKE,KAAK8nC,KAAKC,UAAYjoC,KAAKgmC,YAE7ChmC,KAAKulC,GAAG/jC,OAAS,IAEjBxB,KAAKgmC,YAAc,EACnBhmC,KAAKulC,GAAG/jC,MAAQ,EAChBxB,KAAKqlC,gBAAgB6C,cAMzBloC,KAAKulC,GAAG/jC,OAASxB,KAAKE,KAAK8nC,KAAKC,UAAYjoC,KAAKgmC,YAE7ChmC,KAAKulC,GAAG/jC,OAAS,IAEjBxB,KAAKgmC,YAAc,EACnBhmC,KAAKulC,GAAG/jC,MAAQ,EAChBxB,KAAKslC,eAAe4C,cAYhCJ,YAAa,WAET9nC,KAAKub,OAAOqqB,UAAY5lC,KAAKE,KAAK8nC,KAAKC,UAEnCjoC,KAAKub,OAAOqqB,UAAY,GAExB5lC,KAAKmlC,gBAAgB+C,WACrBloC,KAAKub,OAAOlW,EAAI,EAChBrF,KAAKub,OAAOjW,EAAI,IAIZtF,KAAKub,OAAOsqB,aAEZ7lC,KAAKub,OAAOlW,EAAIrF,KAAKE,KAAKioC,IAAIC,OAASpoC,KAAKub,OAAOoqB,UAAY3lC,KAAKoZ,KAAKzS,MAAQ,EAAI3G,KAAKub,OAAOoqB,UAAY3lC,KAAKoZ,KAAKzS,OAGvH3G,KAAKub,OAAOuqB,WAEZ9lC,KAAKub,OAAOjW,EAAItF,KAAKE,KAAKioC,IAAIC,OAASpoC,KAAKub,OAAOoqB,UAAY3lC,KAAKoZ,KAAKxS,OAAS,EAAI5G,KAAKub,OAAOoqB,UAAY3lC,KAAKoZ,KAAKxS,UAYpIyhC,aAAc,WAEVroC,KAAKwlC,gBAAgBngC,EAAIrF,KAAKoZ,KAAK/T,EAAIrF,KAAKiE,OAAOhC,cAAcoD,EACjErF,KAAKwlC,gBAAgBlgC,EAAItF,KAAKoZ,KAAK9T,EAAItF,KAAKiE,OAAOhC,cAAcqD,EAE7DtF,KAAK8kC,UAEL9kC,KAAKylC,MAAQzlC,KAAKwlC,gBAAgBngC,EAAIrF,KAAKoZ,KAAK/T,EAE5CrF,KAAKylC,MAAQzlC,KAAK8kC,SAAS3L,KAE3Bn5B,KAAKoZ,KAAK/T,EAAIrF,KAAKE,KAAKooC,KAAKC,OAAOvoC,KAAKoZ,KAAK/T,EAAGrF,KAAKwlC,gBAAgBngC,EAAIrF,KAAK8kC,SAAS3L,KAAMn5B,KAAKklC,KAAK7/B,GAEnGrF,KAAKylC,MAAQzlC,KAAK8kC,SAAS5L,QAEhCl5B,KAAKoZ,KAAK/T,EAAIrF,KAAKE,KAAKooC,KAAKC,OAAOvoC,KAAKoZ,KAAK/T,EAAGrF,KAAKwlC,gBAAgBngC,EAAIrF,KAAK8kC,SAAS5L,MAAOl5B,KAAKklC,KAAK7/B,IAG7GrF,KAAKylC,MAAQzlC,KAAKwlC,gBAAgBlgC,EAAItF,KAAKoZ,KAAK9T,EAE5CtF,KAAKylC,MAAQzlC,KAAK8kC,SAASlJ,IAE3B57B,KAAKoZ,KAAK9T,EAAItF,KAAKE,KAAKooC,KAAKC,OAAOvoC,KAAKoZ,KAAK9T,EAAGtF,KAAKwlC,gBAAgBlgC,EAAItF,KAAK8kC,SAASlJ,IAAK57B,KAAKklC,KAAK5/B,GAElGtF,KAAKylC,MAAQzlC,KAAK8kC,SAASjJ,SAEhC77B,KAAKoZ,KAAK9T,EAAItF,KAAKE,KAAKooC,KAAKC,OAAOvoC,KAAKoZ,KAAK9T,EAAGtF,KAAKwlC,gBAAgBlgC,EAAItF,KAAK8kC,SAASjJ,OAAQ77B,KAAKklC,KAAK5/B,MAK9GtF,KAAKoZ,KAAK/T,EAAIrF,KAAKE,KAAKooC,KAAKC,OAAOvoC,KAAKoZ,KAAK/T,EAAGrF,KAAKwlC,gBAAgBngC,EAAIrF,KAAKoZ,KAAK+iB,UAAWn8B,KAAKklC,KAAK7/B,GACzGrF,KAAKoZ,KAAK9T,EAAItF,KAAKE,KAAKooC,KAAKC,OAAOvoC,KAAKoZ,KAAK9T,EAAGtF,KAAKwlC,gBAAgBlgC,EAAItF,KAAKoZ,KAAKijB,WAAYr8B,KAAKklC,KAAK5/B,IAG1GtF,KAAKwG,QAELxG,KAAK+nC,cAGL/nC,KAAK+kC,SAEL/kC,KAAKoZ,KAAK8c,QAGdl2B,KAAKyb,cAActa,SAASkE,GAAKrF,KAAKoZ,KAAK/T,EAC3CrF,KAAKyb,cAActa,SAASmE,GAAKtF,KAAKoZ,KAAK9T,GAS/CkjC,iBAAkB,WAEVxoC,KAAKwG,QAELxG,KAAKwG,OAAOy0B,SAASj7B,KAAKE,KAAKuE,MAAM+B,SAY7CuhC,YAAa,WAET/nC,KAAKglC,QAAQ3/B,GAAI,EACjBrF,KAAKglC,QAAQ1/B,GAAI,CAEjB,IAAImjC,GAAKzoC,KAAKoZ,KAAK/T,EAAIrF,KAAKub,OAAOlW,EAC/BqjC,EAAK1oC,KAAKoZ,KAAK8f,MAAQl5B,KAAKub,OAAOlW,EACnCsjC,EAAK3oC,KAAKoZ,KAAK9T,EAAItF,KAAKub,OAAOjW,EAC/BsjC,EAAK5oC,KAAKoZ,KAAKyiB,OAAS77B,KAAKub,OAAOjW,CAGpCmjC,IAAMzoC,KAAKwG,OAAOnB,EAAIrF,KAAKqB,MAAMgE,IAEjCrF,KAAKglC,QAAQ3/B,GAAI,EACjBrF,KAAKoZ,KAAK/T,EAAIrF,KAAKwG,OAAOnB,EAAIrF,KAAKqB,MAAMgE,EAEpCrF,KAAKub,OAAOwqB,cAGb/lC,KAAKub,OAAOlW,EAAI,IAIpBqjC,GAAM1oC,KAAKwG,OAAO0yB,MAAQl5B,KAAKqB,MAAMgE,IAErCrF,KAAKglC,QAAQ3/B,GAAI,EACjBrF,KAAKoZ,KAAK/T,EAAKrF,KAAKwG,OAAO0yB,MAAQl5B,KAAKqB,MAAMgE,EAAKrF,KAAK2G,MAEnD3G,KAAKub,OAAOwqB,cAGb/lC,KAAKub,OAAOlW,EAAI,IAIpBsjC,GAAM3oC,KAAKwG,OAAOo1B,IAAM57B,KAAKqB,MAAMiE,IAEnCtF,KAAKglC,QAAQ1/B,GAAI,EACjBtF,KAAKoZ,KAAK9T,EAAItF,KAAKwG,OAAOo1B,IAAM57B,KAAKqB,MAAMiE,EAEtCtF,KAAKub,OAAOwqB,cAGb/lC,KAAKub,OAAOjW,EAAI,IAIpBsjC,GAAM5oC,KAAKwG,OAAOq1B,OAAS77B,KAAKqB,MAAMiE,IAEtCtF,KAAKglC,QAAQ1/B,GAAI,EACjBtF,KAAKoZ,KAAK9T,EAAKtF,KAAKwG,OAAOq1B,OAAS77B,KAAKqB,MAAMiE,EAAKtF,KAAK4G,OAEpD5G,KAAKub,OAAOwqB,cAGb/lC,KAAKub,OAAOjW,EAAI,KAc5B4hC,YAAa,SAAU7hC,EAAGC,GAEtBtF,KAAKoZ,KAAK/T,EAAIA,EACdrF,KAAKoZ,KAAK9T,EAAIA,EAEVtF,KAAKwG,QAELxG,KAAK+nC,eAYbc,QAAS,SAAUliC,EAAOC,GAEtB5G,KAAKoZ,KAAKzS,MAAQA,EAClB3G,KAAKoZ,KAAKxS,OAASA,GAWvBkiC,MAAO,WAEH9oC,KAAKiE,OAAS,KAEdjE,KAAKoZ,KAAK/T,EAAI,EACdrF,KAAKoZ,KAAK9T,EAAI,EAEdtF,KAAKub,OAAOqqB,SAAW,EAEvB5lC,KAAK+oC,WAUTA,QAAS,WAEL/oC,KAAKulC,GAAGnqB,QAERpb,KAAKulC,GAAG/jC,MAAQ,EAEhBxB,KAAKgmC,YAAc,IAM3Bnd,EAAOgc,OAAOhiC,UAAUC,YAAc+lB,EAAOgc,OAO7CzhC,OAAOC,eAAewlB,EAAOgc,OAAOhiC,UAAW,KAE3CS,IAAK,WAED,MAAOtD,MAAKoZ,KAAK/T,GAIrB7B,IAAK,SAAUC,GAEXzD,KAAKoZ,KAAK/T,EAAI5B,EAEVzD,KAAKwG,QAELxG,KAAK+nC,iBAWjB3kC,OAAOC,eAAewlB,EAAOgc,OAAOhiC,UAAW,KAE3CS,IAAK,WAED,MAAOtD,MAAKoZ,KAAK9T,GAIrB9B,IAAK,SAAUC,GAEXzD,KAAKoZ,KAAK9T,EAAI7B,EAEVzD,KAAKwG,QAELxG,KAAK+nC,iBAWjB3kC,OAAOC,eAAewlB,EAAOgc,OAAOhiC,UAAW,YAE3CS,IAAK,WAID,MAFAtD,MAAK0lC,UAAUliC,IAAIxD,KAAKoZ,KAAK/T,EAAGrF,KAAKoZ,KAAK9T,GAEnCtF,KAAK0lC,WAIhBliC,IAAK,SAAUC,GAEY,mBAAZA,GAAM4B,IAAqBrF,KAAKoZ,KAAK/T,EAAI5B,EAAM4B,GACnC,mBAAZ5B,GAAM6B,IAAqBtF,KAAKoZ,KAAK9T,EAAI7B,EAAM6B,GAEtDtF,KAAKwG,QAELxG,KAAK+nC,iBAWjB3kC,OAAOC,eAAewlB,EAAOgc,OAAOhiC,UAAW,SAE3CS,IAAK,WAED,MAAOtD,MAAKoZ,KAAKzS,OAIrBnD,IAAK,SAAUC,GAEXzD,KAAKoZ,KAAKzS,MAAQlD,KAW1BL,OAAOC,eAAewlB,EAAOgc,OAAOhiC,UAAW,UAE3CS,IAAK,WAED,MAAOtD,MAAKoZ,KAAKxS,QAIrBpD,IAAK,SAAUC,GAEXzD,KAAKoZ,KAAKxS,OAASnD,KAY3BL,OAAOC,eAAewlB,EAAOgc,OAAOhiC,UAAW,kBAE3CS,IAAK,WAED,MAAOtD,MAAKub,OAAOoqB,WAIvBniC,IAAK,SAAUC,GAEXzD,KAAKub,OAAOoqB,UAAYliC,KAmBhColB,EAAOmgB,MAAQ,WAKXhpC,KAAKE,KAAO,KAKZF,KAAK+U,IAAM,GAKX/U,KAAK89B,IAAM,KAKX99B,KAAKipC,KAAO,KAKZjpC,KAAKsb,OAAS,KAKdtb,KAAKkpC,MAAQ,KAKblpC,KAAKmpC,MAAQ,KAKbnpC,KAAKopC,KAAO,KAKZppC,KAAKsoC,KAAO,KAKZtoC,KAAKqpC,MAAQ,KAKbrpC,KAAKqB,MAAQ,KAKbrB,KAAK6B,MAAQ,KAKb7B,KAAKspC,MAAQ,KAKbtpC,KAAKgoC,KAAO,KAKZhoC,KAAKupC,OAAS,KAKdvpC,KAAKyE,MAAQ,KAKbzE,KAAKwpC,UAAY,KAKjBxpC,KAAKypC,QAAU,KAKfzpC,KAAKmoC,IAAM,MAIftf,EAAOmgB,MAAMnmC,WASTsR,KAAM,aAUNu1B,QAAS,aAQTC,WAAY,aASZC,WAAY,aASZvhC,OAAQ,aAURu/B,OAAQ,aAQRiC,UAAW,aAUX/iC,OAAQ,aAQRiB,OAAQ,aAQR+hC,OAAQ,aAQRC,QAAS,aAQTC,YAAa,aAQbC,SAAU,cAKdphB,EAAOmgB,MAAMnmC,UAAUC,YAAc+lB,EAAOmgB,MAkB5CngB,EAAOqhB,aAAe,SAAUhqC,EAAMiqC,GAKlCnqC,KAAKE,KAAOA,EAKZF,KAAKoqC,UAMLpqC,KAAKqqC,cAAgB,KAEO,mBAAjBF,IAAiD,OAAjBA,IAEvCnqC,KAAKqqC,cAAgBF,GAOzBnqC,KAAKsqC,aAAc,EAMnBtqC,KAAKuqC,aAAc,EAMnBvqC,KAAKwqC,UAAW,EAMhBxqC,KAAKyqC,SAMLzqC,KAAK+3B,QAAU,GAcf/3B,KAAK0qC,cAAgB,GAAI7hB,GAAOuc,OAMhCplC,KAAK2qC,eAAiB;AAMtB3qC,KAAK4qC,kBAAoB,KAMzB5qC,KAAK6qC,iBAAmB,KAMxB7qC,KAAK8qC,iBAAmB,KAMxB9qC,KAAK+qC,iBAAmB,KAMxB/qC,KAAKgrC,iBAAmB,KAMxBhrC,KAAKirC,oBAAsB,KAM3BjrC,KAAKkrC,qBAAuB,KAM5BlrC,KAAKmrC,qBAAuB,KAM5BnrC,KAAKorC,iBAAmB,KAMxBprC,KAAKqrC,kBAAoB,KAMzBrrC,KAAKsrC,sBAAwB,KAM7BtrC,KAAKurC,mBAAqB,MAI9B1iB,EAAOqhB,aAAarnC,WAOhB6jC,KAAM,WAEF1mC,KAAKE,KAAKsrC,QAAQ1N,IAAI99B,KAAKyrC,MAAOzrC,MAClCA,KAAKE,KAAKwrC,SAAS5N,IAAI99B,KAAK2rC,OAAQ3rC,MAET,OAAvBA,KAAKqqC,eAAwD,gBAAvBrqC,MAAKqqC,eAE3CrqC,KAAK89B,IAAI,UAAW99B,KAAKqqC,eAAe,IAehDvM,IAAK,SAAU/oB,EAAKu0B,EAAOsC,GAELliC,SAAdkiC,IAA2BA,GAAY,EAE3C,IAAIC,EA8BJ,OA5BIvC,aAAiBzgB,GAAOmgB,MAExB6C,EAAWvC,EAEW,gBAAVA,IAEZuC,EAAWvC,EACXuC,EAAS3rC,KAAOF,KAAKE,MAEC,kBAAVopC,KAEZuC,EAAW,GAAIvC,GAAMtpC,KAAKE,OAG9BF,KAAKoqC,OAAOr1B,GAAO82B,EAEfD,IAEI5rC,KAAKE,KAAK4rC,SAEV9rC,KAAKqL,MAAM0J,GAIX/U,KAAKqqC,cAAgBt1B,GAItB82B,GASX56B,OAAQ,SAAU8D,GAEV/U,KAAK+3B,UAAYhjB,IAEjB/U,KAAK+rC,gBAAkB,KAEvB/rC,KAAK2qC,eAAiB,KACtB3qC,KAAKurC,mBAAqB,KAE1BvrC,KAAK4qC,kBAAoB,KACzB5qC,KAAKmrC,qBAAuB,KAC5BnrC,KAAKkrC,qBAAuB,KAC5BlrC,KAAK6qC,iBAAmB,KACxB7qC,KAAK8qC,iBAAmB,KACxB9qC,KAAKirC,oBAAsB,KAC3BjrC,KAAK+qC,iBAAmB,KACxB/qC,KAAKgrC,iBAAmB,KACxBhrC,KAAKorC,iBAAmB,KACxBprC,KAAKqrC,kBAAoB,KACzBrrC,KAAKsrC,sBAAwB,YAG1BtrC,MAAKoqC,OAAOr1B,IAavB1J,MAAO,SAAU0J,EAAKi3B,EAAYC,GAEXviC,SAAfsiC,IAA4BA,GAAa,GAC1BtiC,SAAfuiC,IAA4BA,GAAa,GAEzCjsC,KAAKksC,WAAWn3B,KAGhB/U,KAAKqqC,cAAgBt1B,EACrB/U,KAAKsqC,YAAc0B,EACnBhsC,KAAKuqC,YAAc0B,EAEftV,UAAUzzB,OAAS,IAEnBlD,KAAKyqC,MAAQ9pC,MAAMkC,UAAUgG,OAAOnD,KAAKixB,UAAW,MAchEwV,QAAS,SAAUH,EAAYC,GAERviC,SAAfsiC,IAA4BA,GAAa,GAC1BtiC,SAAfuiC,IAA4BA,GAAa,GAG7CjsC,KAAKqqC,cAAgBrqC,KAAK+3B,QAC1B/3B,KAAKsqC,YAAc0B,EACnBhsC,KAAKuqC,YAAc0B,EAEftV,UAAUzzB,OAAS,IAEnBlD,KAAKyqC,MAAQ9pC,MAAMkC,UAAUwzB,MAAM3wB,KAAKixB,UAAW,KAU3DyV,MAAO,aAQPjmC,UAAW,WAEP,GAAInG,KAAKqqC,eAAiBrqC,KAAKE,KAAK4rC,SACpC,CACI,GAAIO,GAAmBrsC,KAAK+3B,OAS5B,IANA/3B,KAAKssC,oBAELtsC,KAAKusC,gBAAgBvsC,KAAKqqC,eAE1BrqC,KAAK0qC,cAAcxC,SAASloC,KAAK+3B,QAASsU,GAEtCrsC,KAAK+3B,UAAY/3B,KAAKqqC,cAEtB,MAIArqC,MAAKqqC,cAAgB,KAKrBrqC,KAAK4qC,mBAEL5qC,KAAKE,KAAKkpC,KAAKN,OAAM,GACrB9oC,KAAK4qC,kBAAkBllC,KAAK1F,KAAK+rC,gBAAiB/rC,KAAKE,MAGb,IAAtCF,KAAKE,KAAKkpC,KAAKoD,oBAAkE,IAAtCxsC,KAAKE,KAAKkpC,KAAKqD,mBAE1DzsC,KAAK0sC,eAKL1sC,KAAKE,KAAKkpC,KAAK/9B,SAMnBrL,KAAK0sC,iBAYjBJ,kBAAmB,WAEXtsC,KAAK+3B,UAED/3B,KAAKurC,oBAELvrC,KAAKurC,mBAAmB7lC,KAAK1F,KAAK+rC,gBAAiB/rC,KAAKE,MAG5DF,KAAKE,KAAKqpC,OAAOoD,YAEjB3sC,KAAKE,KAAKob,OAAOwtB,QAEjB9oC,KAAKE,KAAKipC,MAAML,OAAM,GAEtB9oC,KAAKE,KAAKupC,QAAQruB,QAElBpb,KAAKE,KAAK8nC,KAAK2E,YAEf3sC,KAAKE,KAAKmB,MAAMynC,MAAM9oC,KAAKsqC,aAEvBtqC,KAAKE,KAAK0sC,OAEV5sC,KAAKE,KAAK0sC,MAAM9D,QAGhB9oC,KAAKsqC,cAELtqC,KAAKE,KAAKuE,MAAMwlC,WAEZjqC,KAAKuqC,aAELvqC,KAAKE,KAAKgpC,MAAMnmC,aAchCmpC,WAAY,SAAUn3B,GAElB,MAAI/U,MAAKoqC,OAAOr1B,GAER/U,KAAKoqC,OAAOr1B,GAAc,SAAK/U,KAAKoqC,OAAOr1B,GAAa,QAAK/U,KAAKoqC,OAAOr1B,GAAa,QAAK/U,KAAKoqC,OAAOr1B,GAAa,QAE7G,GAIPjC,QAAQwkB,KAAK,gIACN,IAKXxkB,QAAQwkB,KAAK,sDAAwDviB,IAC9D,IAYf83B,KAAM,SAAU93B,GAEZ/U,KAAKoqC,OAAOr1B,GAAK7U,KAAOF,KAAKE,KAC7BF,KAAKoqC,OAAOr1B,GAAK+oB,IAAM99B,KAAKE,KAAK49B,IACjC99B,KAAKoqC,OAAOr1B,GAAKk0B,KAAOjpC,KAAKE,KAAK+oC,KAClCjpC,KAAKoqC,OAAOr1B,GAAKuG,OAAStb,KAAKE,KAAKob,OACpCtb,KAAKoqC,OAAOr1B,GAAKm0B,MAAQlpC,KAAKE,KAAKgpC,MACnClpC,KAAKoqC,OAAOr1B,GAAKo0B,MAAQnpC,KAAKE,KAAKipC,MACnCnpC,KAAKoqC,OAAOr1B,GAAKq0B,KAAOppC,KAAKE,KAAKkpC,KAClCppC,KAAKoqC,OAAOr1B,GAAKuzB,KAAOtoC,KAAKE,KAAKooC,KAClCtoC,KAAKoqC,OAAOr1B,GAAKs0B,MAAQrpC,KAAKE,KAAKmpC,MACnCrpC,KAAKoqC,OAAOr1B,GAAK1T,MAAQrB,KAAKE,KAAKmB,MACnCrB,KAAKoqC,OAAOr1B,GAAKu0B,MAAQtpC,KACzBA,KAAKoqC,OAAOr1B,GAAKlT,MAAQ7B,KAAKE,KAAK2B,MACnC7B,KAAKoqC,OAAOr1B,GAAKizB,KAAOhoC,KAAKE,KAAK8nC,KAClChoC,KAAKoqC,OAAOr1B,GAAKw0B,OAASvpC,KAAKE,KAAKqpC,OACpCvpC,KAAKoqC,OAAOr1B,GAAKtQ,MAAQzE,KAAKE,KAAKuE,MACnCzE,KAAKoqC,OAAOr1B,GAAKy0B,UAAYxpC,KAAKE,KAAKspC,UACvCxpC,KAAKoqC,OAAOr1B,GAAKozB,IAAMnoC,KAAKE,KAAKioC,IACjCnoC,KAAKoqC,OAAOr1B,GAAK00B,QAAUzpC,KAAKE,KAAKupC,QACrCzpC,KAAKoqC,OAAOr1B,GAAKA,IAAMA,GAW3B+3B,OAAQ,SAAU/3B,GAEV/U,KAAKoqC,OAAOr1B,KAEZ/U,KAAKoqC,OAAOr1B,GAAK7U,KAAO,KACxBF,KAAKoqC,OAAOr1B,GAAK+oB,IAAM,KACvB99B,KAAKoqC,OAAOr1B,GAAKk0B,KAAO,KACxBjpC,KAAKoqC,OAAOr1B,GAAKuG,OAAS,KAC1Btb,KAAKoqC,OAAOr1B,GAAKm0B,MAAQ,KACzBlpC,KAAKoqC,OAAOr1B,GAAKo0B,MAAQ,KACzBnpC,KAAKoqC,OAAOr1B,GAAKq0B,KAAO,KACxBppC,KAAKoqC,OAAOr1B,GAAKuzB,KAAO,KACxBtoC,KAAKoqC,OAAOr1B,GAAKs0B,MAAQ,KACzBrpC,KAAKoqC,OAAOr1B,GAAK1T,MAAQ,KACzBrB,KAAKoqC,OAAOr1B,GAAKu0B,MAAQ,KACzBtpC,KAAKoqC,OAAOr1B,GAAKlT,MAAQ,KACzB7B,KAAKoqC,OAAOr1B,GAAKizB,KAAO,KACxBhoC,KAAKoqC,OAAOr1B,GAAKw0B,OAAS,KAC1BvpC,KAAKoqC,OAAOr1B,GAAKtQ,MAAQ,KACzBzE,KAAKoqC,OAAOr1B,GAAKy0B,UAAY,KAC7BxpC,KAAKoqC,OAAOr1B,GAAKozB,IAAM,KACvBnoC,KAAKoqC,OAAOr1B,GAAK00B,QAAU,OAYnC8C,gBAAiB,SAAUx3B,GAEvB/U,KAAK+rC,gBAAkB/rC,KAAKoqC,OAAOr1B,GAEnC/U,KAAK6sC,KAAK93B,GAGV/U,KAAK2qC,eAAiB3qC,KAAKoqC,OAAOr1B,GAAW,MAAK/U,KAAKosC,MAEvDpsC,KAAK4qC,kBAAoB5qC,KAAKoqC,OAAOr1B,GAAc,SAAK,KACxD/U,KAAKmrC,qBAAuBnrC,KAAKoqC,OAAOr1B,GAAiB,YAAK,KAC9D/U,KAAKkrC,qBAAuBlrC,KAAKoqC,OAAOr1B,GAAiB,YAAK,KAC9D/U,KAAK6qC,iBAAmB7qC,KAAKoqC,OAAOr1B,GAAa,QAAK,KACtD/U,KAAK8qC,iBAAmB9qC,KAAKoqC,OAAOr1B,GAAa,QAAK,KACtD/U,KAAKirC,oBAAsBjrC,KAAKoqC,OAAOr1B,GAAgB,WAAK,KAC5D/U,KAAK+qC,iBAAmB/qC,KAAKoqC,OAAOr1B,GAAa,QAAK,KACtD/U,KAAKgrC,iBAAmBhrC,KAAKoqC,OAAOr1B,GAAa,QAAK,KACtD/U,KAAKorC,iBAAmBprC,KAAKoqC,OAAOr1B,GAAa,QAAK,KACtD/U,KAAKqrC,kBAAoBrrC,KAAKoqC,OAAOr1B,GAAc,SAAK,KACxD/U,KAAKsrC,sBAAwBtrC,KAAKoqC,OAAOr1B,GAAkB,aAAK,KAGhE/U,KAAKurC,mBAAqBvrC,KAAKoqC,OAAOr1B,GAAe,UAAK/U,KAAKosC,MAG1C,KAAjBpsC,KAAK+3B,SAEL/3B,KAAKE,KAAKupC,QAAQX,QAGtB9oC,KAAK+3B,QAAUhjB,EACf/U,KAAKwqC,UAAW,EAGhBxqC,KAAK2qC,eAAe1jC,MAAMjH,KAAK+rC,gBAAiB/rC,KAAKyqC,OAGjD11B,IAAQ/U,KAAKqqC,gBAEbrqC,KAAKyqC,UAGTzqC,KAAKE,KAAK6sC,YAAa,GAW3BC,gBAAiB,WACb,MAAOhtC,MAAKoqC,OAAOpqC,KAAK+3B,UAO5B2U,aAAc,WAGN1sC,KAAKwqC,YAAa,GAASxqC,KAAKkrC,sBAEhClrC,KAAKkrC,qBAAqBxlC,KAAK1F,KAAK+rC,gBAAiB/rC,KAAKE,MAG1DF,KAAKwqC,YAAa,GAASxqC,KAAK6qC,kBAEhC7qC,KAAKwqC,UAAW,EAChBxqC,KAAK6qC,iBAAiBnlC,KAAK1F,KAAK+rC,gBAAiB/rC,KAAKE,OAItDF,KAAKwqC,UAAW,GASxBiB,MAAO,WAECzrC,KAAKwqC,UAAYxqC,KAAKorC,kBAEtBprC,KAAKorC,iBAAiB1lC,KAAK1F,KAAK+rC,gBAAiB/rC,KAAKE,OAS9DyrC,OAAQ,WAEA3rC,KAAKwqC,UAAYxqC,KAAKqrC,mBAEtBrrC,KAAKqrC,kBAAkB3lC,KAAK1F,KAAK+rC,gBAAiB/rC,KAAKE,OAS/D0nC,OAAQ,WAEA5nC,KAAKwqC,SAEDxqC,KAAK8qC,kBAEL9qC,KAAK8qC,iBAAiBplC,KAAK1F,KAAK+rC,gBAAiB/rC,KAAKE,MAKtDF,KAAKkrC,sBAELlrC,KAAKkrC,qBAAqBxlC,KAAK1F,KAAK+rC,gBAAiB/rC,KAAKE,OAUtE8pC,YAAa,WAELhqC,KAAKwqC,SAEDxqC,KAAKsrC,uBAELtrC,KAAKsrC,sBAAsB5lC,KAAK1F,KAAK+rC,gBAAiB/rC,KAAKE,MAK3DF,KAAKkrC,sBAELlrC,KAAKkrC,qBAAqBxlC,KAAK1F,KAAK+rC,gBAAiB/rC,KAAKE,OAWtE2pC,UAAW,SAAUoD,GAEbjtC,KAAKwqC,UAAYxqC,KAAKirC,qBAEtBjrC,KAAKirC,oBAAoBvlC,KAAK1F,KAAK+rC,gBAAiB/rC,KAAKE,KAAM+sC,IASvEllC,OAAQ,SAAUpB,EAAOC,GAEjB5G,KAAKgrC,kBAELhrC,KAAKgrC,iBAAiBtlC,KAAK1F,KAAK+rC,gBAAiBplC,EAAOC,IAShEE,OAAQ,WAEA9G,KAAKwqC,SAEDxqC,KAAK+qC,mBAED/qC,KAAKE,KAAKgtC,aAAerkB,EAAOqJ,QAEhClyB,KAAKE,KAAKoN,QAAQ+Z,OAClBrnB,KAAKE,KAAKoN,QAAQa,aAAa,EAAG,EAAG,EAAG,EAAG,EAAG,GAC9CnO,KAAK+qC,iBAAiBrlC,KAAK1F,KAAK+rC,gBAAiB/rC,KAAKE,MACtDF,KAAKE,KAAKoN,QAAQoa,WAIlB1nB,KAAK+qC,iBAAiBrlC,KAAK1F,KAAK+rC,gBAAiB/rC,KAAKE,OAM1DF,KAAKmrC,sBAELnrC,KAAKmrC,qBAAqBzlC,KAAK1F,KAAK+rC,gBAAiB/rC,KAAKE,OAWtE6C,QAAS,WAEL/C,KAAKsqC,aAAc,EACnBtqC,KAAKuqC,aAAc,EAEnBvqC,KAAKssC,oBAELtsC,KAAK+rC,gBAAkB,KAEvB/rC,KAAK2qC,eAAiB,KACtB3qC,KAAKurC,mBAAqB,KAE1BvrC,KAAK4qC,kBAAoB,KACzB5qC,KAAKmrC,qBAAuB,KAC5BnrC,KAAKkrC,qBAAuB,KAC5BlrC,KAAK6qC,iBAAmB,KACxB7qC,KAAK8qC,iBAAmB,KACxB9qC,KAAK+qC,iBAAmB,KACxB/qC,KAAKorC,iBAAmB,KACxBprC,KAAKqrC,kBAAoB,KACzBrrC,KAAKsrC,sBAAwB,KAE7BtrC,KAAKE,KAAO,KACZF,KAAKoqC,UACLpqC,KAAKqqC,cAAgB,KACrBrqC,KAAK+3B,QAAU,KAMvBlP,EAAOqhB,aAAarnC,UAAUC,YAAc+lB,EAAOqhB,aAOnD9mC,OAAOC,eAAewlB,EAAOqhB,aAAarnC,UAAW,WAEjDS,IAAK,WAED,MAAOtD,MAAKwqC,YAqEpB3hB,EAAOuc,OAAS,aAEhBvc,EAAOuc,OAAOviC,WAMVsqC,UAAW,KAMXC,YAAa,KAUbC,UAAU,EAMVC,kBAAkB,EAUlBC,QAAQ,EAMRC,gBAAgB,EAQhBC,iBAAkB,SAAUC,EAAUC,GAElC,GAAwB,kBAAbD,GAEP,KAAM,IAAI5kC,OAAM,kFAAkFmxB,QAAQ,OAAQ0T,KAc1HC,kBAAmB,SAAUF,EAAUG,EAAQC,EAAiBC,EAAUvX,GAEtE,GACIwX,GADAC,EAAYjuC,KAAKkuC,iBAAiBR,EAAUI,EAGhD,IAAkB,KAAdG,GAIA,GAFAD,EAAUhuC,KAAKmtC,UAAUc,GAErBD,EAAQH,WAAaA,EAErB,KAAM,IAAI/kC,OAAM,kBAAoB+kC,EAAS,GAAK,QAAU,eAAkBA,EAAc,OAAL,IAAe,qEAK1GG,GAAU,GAAInlB,GAAOslB,cAAcnuC,KAAM0tC,EAAUG,EAAQC,EAAiBC,EAAUvX,GACtFx2B,KAAKouC,YAAYJ,EAQrB,OALIhuC,MAAKqtC,UAAYrtC,KAAKotC,aAEtBY,EAAQK,QAAQruC,KAAKotC,aAGlBY,GASXI,YAAa,SAAUJ,GAEdhuC,KAAKmtC,YAENntC,KAAKmtC,aAIT,IAAIje,GAAIlvB,KAAKmtC,UAAUjqC,MAEvB,GACIgsB,WAEGlvB,KAAKmtC,UAAUje,IAAM8e,EAAQM,WAAatuC,KAAKmtC,UAAUje,GAAGof,UAEnEtuC,MAAKmtC,UAAUtkC,OAAOqmB,EAAI,EAAG,EAAG8e,IAWpCE,iBAAkB,SAAUR,EAAUpgC,GAElC,IAAKtN,KAAKmtC,UAEN,MAAO,EAGKzjC,UAAZ4D,IAAyBA,EAAU,KAKvC,KAHA,GACIihC,GADArf,EAAIlvB,KAAKmtC,UAAUjqC,OAGhBgsB,KAIH,GAFAqf,EAAMvuC,KAAKmtC,UAAUje,GAEjBqf,EAAIC,YAAcd,GAAYa,EAAIjhC,UAAYA,EAE9C,MAAO4hB,EAIf,OAAO,IAYXuf,IAAK,SAAUf,EAAUpgC,GAErB,MAAoD,KAA7CtN,KAAKkuC,iBAAiBR,EAAUpgC,IA4B3CwwB,IAAK,SAAU4P,EAAUI,EAAiBC,GAEtC/tC,KAAKytC,iBAAiBC,EAAU,MAEhC,IAAIlX,KAEJ,IAAIG,UAAUzzB,OAAS,EAEnB,IAAK,GAAID,GAAI,EAAGA,EAAI0zB,UAAUzzB,OAAQD,IAElCuzB,EAAKzyB,KAAK4yB,UAAU1zB,GAI5B,OAAOjD,MAAK4tC,kBAAkBF,GAAU,EAAOI,EAAiBC,EAAUvX,IAiB9EkY,QAAS,SAAUhB,EAAUI,EAAiBC,GAE1C/tC,KAAKytC,iBAAiBC,EAAU,UAEhC,IAAIlX,KAEJ,IAAIG,UAAUzzB,OAAS,EAEnB,IAAK,GAAID,GAAI,EAAGA,EAAI0zB,UAAUzzB,OAAQD,IAElCuzB,EAAKzyB,KAAK4yB,UAAU1zB,GAI5B,OAAOjD,MAAK4tC,kBAAkBF,GAAU,EAAMI,EAAiBC,EAAUvX,IAY7EvlB,OAAQ,SAAUy8B,EAAUpgC,GAExBtN,KAAKytC,iBAAiBC,EAAU,SAEhC,IAAIzqC,GAAIjD,KAAKkuC,iBAAiBR,EAAUpgC,EAQxC,OANU,KAANrK,IAEAjD,KAAKmtC,UAAUlqC,GAAG0rC,WAClB3uC,KAAKmtC,UAAUtkC,OAAO5F,EAAG,IAGtByqC,GAUXf,UAAW,SAAUr/B,GAIjB,GAFgB5D,SAAZ4D,IAAyBA,EAAU,MAElCtN,KAAKmtC,UAAV,CAOA,IAFA,GAAIje,GAAIlvB,KAAKmtC,UAAUjqC,OAEhBgsB,KAEC5hB,EAEItN,KAAKmtC,UAAUje,GAAG5hB,UAAYA,IAE9BtN,KAAKmtC,UAAUje,GAAGyf,WAClB3uC,KAAKmtC,UAAUtkC,OAAOqmB,EAAG,IAK7BlvB,KAAKmtC,UAAUje,GAAGyf,UAIrBrhC,KAEDtN,KAAKmtC,UAAUjqC,OAAS,KAWhC0rC,gBAAiB,WAEb,MAAO5uC,MAAKmtC,UAAYntC,KAAKmtC,UAAUjqC,OAAS,GAYpD2rC,KAAM,WAEF7uC,KAAKstC,kBAAmB,GAY5BpF,SAAU,WAEN,GAAKloC,KAAKutC,QAAWvtC,KAAKmtC,UAA1B,CAKA,GAEI2B,GAFAC,EAAYpuC,MAAMkC,UAAUwzB,MAAM3wB,KAAKixB,WACvCzH,EAAIlvB,KAAKmtC,UAAUjqC,MAQvB,IALIlD,KAAKqtC,WAELrtC,KAAKotC,YAAc2B,GAGlB7f,EAAL,CAMA4f,EAAW9uC,KAAKmtC,UAAU9W,QAC1Br2B,KAAKstC,kBAAmB,CAIxB,GACIpe,WAEG4f,EAAS5f,IAAMlvB,KAAKstC,kBAAoBwB,EAAS5f,GAAGmf,QAAQU,MAAe,MAStFC,OAAQ,WAEAhvC,KAAKotC,cAELptC,KAAKotC,YAAc,OAa3B6B,QAAS,WAELjvC,KAAK2sC,YAEL3sC,KAAKmtC,UAAY,KACbntC,KAAKotC,cAELptC,KAAKotC,YAAc,OAW3BtlB,SAAU,WAEN,MAAO,yBAA0B9nB,KAAKutC,OAAQ,iBAAkBvtC,KAAK4uC,kBAAmB,MAehGxrC,OAAOC,eAAewlB,EAAOuc,OAAOviC,UAAW,iBAE3CS,IAAK,WACD,GAAI4rC,GAAQlvC,IACZ,OAAOA,MAAKwtC,iBAAmBxtC,KAAKwtC,eAAiB,WACjD,MAAO0B,GAAMhH,SAASjhC,MAAMioC,EAAOvY,gBAM/C9N,EAAOuc,OAAOviC,UAAUC,YAAc+lB,EAAOuc,OAuB7Cvc,EAAOslB,cAAgB,SAAUgB,EAAQzB,EAAUG,EAAQC,EAAiBC,EAAUvX,GAMlFx2B,KAAKwuC,UAAYd,EAEbG,IAEA7tC,KAAKovC,SAAU,GAGI,MAAnBtB,IAEA9tC,KAAKsN,QAAUwgC,GAOnB9tC,KAAKqvC,QAAUF,EAEXpB,IAEA/tC,KAAKsuC,UAAYP,GAGjBvX,GAAQA,EAAKtzB,SAEblD,KAAKyqC,MAAQjU,IAKrB3N,EAAOslB,cAActrC,WAKjByK,QAAS,KAMT8hC,SAAS,EAMTd,UAAW,EAMX7D,MAAO,KAKP6E,UAAW,EAOX/B,QAAQ,EAORgC,OAAQ,KASRlB,QAAS,SAASU,GAEd,GAAIS,GAAeD,CAqBnB,OAnBIvvC,MAAKutC,QAAYvtC,KAAKwuC,YAEtBe,EAASvvC,KAAKuvC,OAASvvC,KAAKuvC,OAAO7Y,OAAOqY,GAAaA,EAEnD/uC,KAAKyqC,QAEL8E,EAASA,EAAO7Y,OAAO12B,KAAKyqC,QAGhC+E,EAAgBxvC,KAAKwuC,UAAUvnC,MAAMjH,KAAKsN,QAASiiC,GAEnDvvC,KAAKsvC,YAEDtvC,KAAKovC,SAELpvC,KAAKyvC,UAIND,GAUXC,OAAQ,WACJ,MAAOzvC,MAAK0vC,UAAY1vC,KAAKqvC,QAAQp+B,OAAOjR,KAAKwuC,UAAWxuC,KAAKsN,SAAW,MAOhFoiC,QAAS,WACL,QAAU1vC,KAAKqvC,WAAarvC,KAAKwuC,WAOrCX,OAAQ,WACJ,MAAO7tC,MAAKovC,SAOhBO,YAAa,WACT,MAAO3vC,MAAKwuC,WAOhBoB,UAAW,WACP,MAAO5vC,MAAKqvC,SAQhBV,SAAU,iBACC3uC,MAAKqvC,cACLrvC,MAAKwuC,gBACLxuC,MAAKsN,SAOhBwa,SAAU,WACN,MAAO,gCAAkC9nB,KAAKovC,QAAS,aAAcpvC,KAAK0vC,UAAW,YAAc1vC,KAAKutC,OAAS,MAKzH1kB,EAAOslB,cAActrC,UAAUC,YAAc+lB,EAAOslB,cAoBpDtlB,EAAOgnB,OAAS,SAAU3vC,EAAM8U,EAAU7B,GAKtCnT,KAAKE,KAAOA,EAMZF,KAAKoV,KAAOyT,EAAO4K,aAQnBzzB,KAAK4D,QAAU5D,MAMfA,KAAKkiB,WAMLliB,KAAKiU,OAAQ,EAMbjU,KAAKqlB,QAAU,EAKfrlB,KAAK8vC,UAAY,GAAIjnB,GAAOznB,KAM5B,IAAIyD,GAAI,GAAIkrC,KAoBZ,IAfA/vC,KAAKgV,UAED3O,YAAc+O,KAAM,KAAM3R,OAAS4B,EAAG,IAAKC,EAAG,MAC9C0iC,MAAQ5yB,KAAM,KAAM3R,MAAO,GAC3BusC,OAAS56B,KAAM,KAAM3R,OAAS4B,EAAG,EAAKC,EAAG,IACzC2qC,MAAQ76B,KAAM,MAAO3R,OAASoB,EAAEqrC,cAAgBrrC,EAAEsrC,WAAatrC,EAAEurC,UAAyB,GAAdvrC,EAAEwrC,WAAiB,GAAsB,GAAjBxrC,EAAEyrC,aAAoBzrC,EAAE0rC,eAC5HC,YAAcp7B,KAAM,KAAM3R,MAAO,OACjCgtC,WAAar7B,KAAM,YAAa3R,MAAO,KAAMyS,aAAeS,QAAQ,IACpE+5B,WAAat7B,KAAM,YAAa3R,MAAO,KAAMyS,aAAeS,QAAQ,IACpEg6B,WAAav7B,KAAM,YAAa3R,MAAO,KAAMyS,aAAeS,QAAQ,IACpEi6B,WAAax7B,KAAM,YAAa3R,MAAO,KAAMyS,aAAeS,QAAQ,KAKpE3B,EAEA,IAAK,GAAID,KAAOC,GAEZhV,KAAKgV,SAASD,GAAOC,EAASD,EAOtC/U,MAAKmT,YAAcA,GAAe,IAItC0V,EAAOgnB,OAAOhtC,WAMVsR,KAAM,aAUN08B,cAAe,SAAUlqC,EAAOC,GAE5B5G,KAAKgV,SAAS3O,WAAW5C,MAAM4B,EAAIsB,EACnC3G,KAAKgV,SAAS3O,WAAW5C,MAAM6B,EAAIsB,GASvCghC,OAAQ,SAAUkJ,GAEd,GAAuB,mBAAZA,GACX,CACI,GAAIzrC,GAAIyrC,EAAQzrC,EAAIrF,KAAKE,KAAKyG,MAC1BrB,EAAI,EAAIwrC,EAAQxrC,EAAItF,KAAKE,KAAK0G,QAE9BvB,IAAMrF,KAAK8vC,UAAUzqC,GAAKC,IAAMtF,KAAK8vC,UAAUxqC,KAE/CtF,KAAKgV,SAASg7B,MAAMvsC,MAAM4B,EAAIA,EAAE0rC,QAAQ,GACxC/wC,KAAKgV,SAASg7B,MAAMvsC,MAAM6B,EAAIA,EAAEyrC,QAAQ,GACxC/wC,KAAK8vC,UAAUtsC,IAAI6B,EAAGC,IAI9BtF,KAAKgV,SAASgzB,KAAKvkC,MAAQzD,KAAKE,KAAK8nC,KAAKgJ,uBAsB9CC,WAAY,SAAU5rC,EAAGC,EAAGqB,EAAOC,EAAQsqC,EAASC,GAEhCznC,SAAZwnC,IAAyBA,EAAU,GACvBxnC,SAAZynC,IAAyBA,EAAU,GAEzBznC,SAAV/C,GAAiC,OAAVA,EAEvB3G,KAAK2G,MAAQA,EAIbA,EAAQ3G,KAAK2G,MAGF+C,SAAX9C,GAAmC,OAAXA,EAExB5G,KAAK4G,OAASA,EAIdA,EAAS5G,KAAK4G,MAGlB,IAAIujB,GAAQnqB,KAAKE,KAAK49B,IAAI3T,MAAM9kB,EAAGC,EAAG,YAStC,OAPA6kB,GAAMxjB,MAAQA,EACdwjB,EAAMvjB,OAASA,EAEfujB,EAAMjiB,OAAO1E,IAAI0tC,EAASC,GAE1BhnB,EAAMliB,SAAYjI,MAEXmqB,GAQXpnB,QAAS,WAEL/C,KAAKE,KAAO,OAMpB2oB,EAAOgnB,OAAOhtC,UAAUC,YAAc+lB,EAAOgnB,OAM7CzsC,OAAOC,eAAewlB,EAAOgnB,OAAOhtC,UAAW,SAE3CS,IAAK,WACD,MAAOtD,MAAKgV,SAAS3O,WAAW5C,MAAM4B,GAG1C7B,IAAK,SAASC,GACVzD,KAAKgV,SAAS3O,WAAW5C,MAAM4B,EAAI5B,KAS3CL,OAAOC,eAAewlB,EAAOgnB,OAAOhtC,UAAW,UAE3CS,IAAK,WACD,MAAOtD,MAAKgV,SAAS3O,WAAW5C,MAAM6B,GAG1C9B,IAAK,SAASC,GACVzD,KAAKgV,SAAS3O,WAAW5C,MAAM6B,EAAI7B,KAmB3ColB,EAAOuoB,OAAS,SAAUlxC,EAAM0B,GAEb8H,SAAX9H,IAAwBA,EAAS,MAKrC5B,KAAKE,KAAOA,EAKZF,KAAK4B,OAASA,EAMd5B,KAAKutC,QAAS,EAMdvtC,KAAKyB,SAAU,EAMfzB,KAAKqxC,cAAe,EAMpBrxC,KAAKsxC,WAAY,EAMjBtxC,KAAKuxC,eAAgB,EAMrBvxC,KAAKwxC,WAAY,EAMjBxxC,KAAKyxC,eAAgB,GAIzB5oB,EAAOuoB,OAAOvuC,WAOVsD,UAAW,aAQXyhC,OAAQ,aAQR9gC,OAAQ,aAQR4qC,WAAY,aAOZ3uC,QAAS,WAEL/C,KAAKE,KAAO,KACZF,KAAK4B,OAAS,KACd5B,KAAKutC,QAAS,EACdvtC,KAAKyB,SAAU,IAMvBonB,EAAOuoB,OAAOvuC,UAAUC,YAAc+lB,EAAOuoB,OAiB7CvoB,EAAO8oB,cAAgB,SAASzxC,GAK5BF,KAAKE,KAAOA,EAKZF,KAAK4xC,WAML5xC,KAAK6xC,KAAO,EAMZ7xC,KAAK8xC,GAAK,GAIdjpB,EAAO8oB,cAAc9uC,WAWjBi7B,IAAK,SAAUiU,GAEX,GAAIvb,GAAO71B,MAAMkC,UAAUwzB,MAAM3wB,KAAKixB,UAAW,GAC7CvlB,GAAS,CA6Cb,OA1CsB,kBAAX2gC,GAEPA,EAAS,GAAIA,GAAO/xC,KAAKE,KAAMF,OAI/B+xC,EAAO7xC,KAAOF,KAAKE,KACnB6xC,EAAOnwC,OAAS5B,MAIe,kBAAxB+xC,GAAkB,YAEzBA,EAAOV,cAAe,EACtBjgC,GAAS,GAGmB,kBAArB2gC,GAAe,SAEtBA,EAAOT,WAAY,EACnBlgC,GAAS,GAGuB,kBAAzB2gC,GAAmB,aAE1BA,EAAOR,eAAgB,EACvBngC,GAAS,GAGmB,kBAArB2gC,GAAe,SAEtBA,EAAOP,WAAY,EACnBpgC,GAAS,GAGuB,kBAAzB2gC,GAAmB,aAE1BA,EAAON,eAAgB,EACvBrgC,GAAS,GAITA,IAEI2gC,EAAOV,cAAgBU,EAAOT,WAAaS,EAAOR,iBAElDQ,EAAOxE,QAAS,IAGhBwE,EAAOP,WAAaO,EAAON,iBAE3BM,EAAOtwC,SAAU,GAGrBzB,KAAK6xC,KAAO7xC,KAAK4xC,QAAQ7tC,KAAKguC,GAGA,kBAAnBA,GAAa,MAEpBA,EAAO59B,KAAKlN,MAAM8qC,EAAQvb,GAGvBub,GAIA,MAWf9gC,OAAQ,SAAU8gC,EAAQhvC,GAMtB,IAJgB2G,SAAZ3G,IAAyBA,GAAU,GAEvC/C,KAAK8xC,GAAK9xC,KAAK6xC,KAER7xC,KAAK8xC,MAER,GAAI9xC,KAAK4xC,QAAQ5xC,KAAK8xC,MAAQC,EAS1B,MAPIhvC,IAEAgvC,EAAOhvC,UAGX/C,KAAK4xC,QAAQ/oC,OAAO7I,KAAK8xC,GAAI,OAC7B9xC,MAAK6xC,QAYjBlF,UAAW,WAIP,IAFA3sC,KAAK8xC,GAAK9xC,KAAK6xC,KAER7xC,KAAK8xC,MAER9xC,KAAK4xC,QAAQ5xC,KAAK8xC,IAAI/uC,SAG1B/C,MAAK4xC,QAAQ1uC,OAAS,EACtBlD,KAAK6xC,KAAO,GAUhB1rC,UAAW,WAIP,IAFAnG,KAAK8xC,GAAK9xC,KAAK6xC,KAER7xC,KAAK8xC,MAEJ9xC,KAAK4xC,QAAQ5xC,KAAK8xC,IAAIvE,QAAUvtC,KAAK4xC,QAAQ5xC,KAAK8xC,IAAIT,cAEtDrxC,KAAK4xC,QAAQ5xC,KAAK8xC,IAAI3rC,aAYlCyhC,OAAQ,WAIJ,IAFA5nC,KAAK8xC,GAAK9xC,KAAK6xC,KAER7xC,KAAK8xC,MAEJ9xC,KAAK4xC,QAAQ5xC,KAAK8xC,IAAIvE,QAAUvtC,KAAK4xC,QAAQ5xC,KAAK8xC,IAAIR,WAEtDtxC,KAAK4xC,QAAQ5xC,KAAK8xC,IAAIlK,UAalCoK,WAAY,WAIR,IAFAhyC,KAAK8xC,GAAK9xC,KAAK6xC,KAER7xC,KAAK8xC,MAEJ9xC,KAAK4xC,QAAQ5xC,KAAK8xC,IAAIvE,QAAUvtC,KAAK4xC,QAAQ5xC,KAAK8xC,IAAIP,eAEtDvxC,KAAK4xC,QAAQ5xC,KAAK8xC,IAAIE,cAYlClrC,OAAQ,WAIJ,IAFA9G,KAAK8xC,GAAK9xC,KAAK6xC,KAER7xC,KAAK8xC,MAEJ9xC,KAAK4xC,QAAQ5xC,KAAK8xC,IAAIrwC,SAAWzB,KAAK4xC,QAAQ5xC,KAAK8xC,IAAIN,WAEvDxxC,KAAK4xC,QAAQ5xC,KAAK8xC,IAAIhrC,UAYlC4qC,WAAY,WAIR,IAFA1xC,KAAK8xC,GAAK9xC,KAAK6xC,KAER7xC,KAAK8xC,MAEJ9xC,KAAK4xC,QAAQ5xC,KAAK8xC,IAAIrwC,SAAWzB,KAAK4xC,QAAQ5xC,KAAK8xC,IAAIL,eAEvDzxC,KAAK4xC,QAAQ5xC,KAAK8xC,IAAIJ,cAWlC3uC,QAAS,WAEL/C,KAAK2sC,YAEL3sC,KAAKE,KAAO,OAMpB2oB,EAAO8oB,cAAc9uC,UAAUC,YAAc+lB,EAAO8oB,cAiBpD9oB,EAAOopB,MAAQ,SAAU/xC,GAKrBF,KAAKE,KAAOA,EAEZD,KAAKkI,uBAAuBzC,KAAK1F,MAMjCA,KAAK05B,KAAO,cAWZ15B,KAAKkyC,yBAA0B,EAM/BlyC,KAAK8L,QAAS,EAOd9L,KAAK+B,eAAiB,GAAI9B,MAAK+B,OAO/BhC,KAAK6B,MAAQ7B,KAKbA,KAAKmyC,qBAAuB,EAM5BnyC,KAAKoyC,WAAa,SAMlBpyC,KAAKqyC,UAAY,KAMjBryC,KAAKib,UAAaC,EAAG,EAAGC,EAAG,EAAGxW,EAAG,EAAGD,EAAG,EAAGkU,MAAO,EAAGuQ,KAAM,WAErDnpB,KAAKE,KAAK8Y,cAGXhZ,KAAKib,SAASvW,EAAI,GAGlBxE,EAAKoyC,QAELtyC,KAAKuyC,YAAYryC,EAAKoyC,SAK9BzpB,EAAOopB,MAAMpvC,UAAYO,OAAOiF,OAAOpI,KAAKkI,uBAAuBtF,WACnEgmB,EAAOopB,MAAMpvC,UAAUC,YAAc+lB,EAAOopB,MAS5CppB,EAAOopB,MAAMpvC,UAAU0vC,YAAc,SAAUD,GAEvCA,EAAgC,0BAEhCtyC,KAAKkyC,wBAA0BI,EAAgC,yBAG/DA,EAAwB,iBAExBtyC,KAAKwyC,mBAAmBF,EAAwB,kBAUxDzpB,EAAOopB,MAAMpvC,UAAU6jC,KAAO,WAE1B7d,EAAO4pB,IAAIC,UAAU1yC,KAAKE,KAAK0Q,OAAQ5Q,KAAK0Z,QAE5CmP,EAAOC,OAAO6pB,cAAc3yC,KAAKE,KAAK0Q,OAAQ,QAC9CiY,EAAOC,OAAO8pB,eAAe5yC,KAAKE,KAAK0Q,OAAQ,QAE/C5Q,KAAK6yC,mBAUThqB,EAAOopB,MAAMpvC,UAAUsD,UAAY,WAE/BnG,KAAKmyC,qBAAuB,CAG5B,KAAK,GAAIlvC,GAAI,EAAGA,EAAIjD,KAAKgD,SAASE,OAAQD,IAEtCjD,KAAKgD,SAASC,GAAGkD,aAUzB0iB,EAAOopB,MAAMpvC,UAAU+kC,OAAS,WAK5B,IAFA,GAAI3kC,GAAIjD,KAAKgD,SAASE,OAEfD,KAEHjD,KAAKgD,SAASC,GAAG2kC,UAYzB/e,EAAOopB,MAAMpvC,UAAUmvC,WAAa,WAGhChyC,KAAKE,KAAKob,OAAOssB,SAGb5nC,KAAKE,KAAKob,OAAOrX,SAEjBjE,KAAKE,KAAKob,OAAOrX,OAAO+tC,aAExBhyC,KAAKuE,kBAELvE,KAAKE,KAAKob,OAAO+sB,eAGrB,KAAK,GAAIplC,GAAI,EAAGA,EAAIjD,KAAKgD,SAASE,OAAQD,IAEtCjD,KAAKgD,SAASC,GAAG+uC,YAGrBhyC,MAAKuE,mBAUTskB,EAAOopB,MAAMpvC,UAAU0B,gBAAkB,WAErCvE,KAAK8B,WAAa,CAElB,KAAK,GAAImB,GAAI,EAAGA,EAAIjD,KAAKgD,SAASE,OAAQD,IAEtCjD,KAAKgD,SAASC,GAAGsB,mBAWzBskB,EAAOopB,MAAMpvC,UAAUgwC,gBAAkB,WAEPnpC,SAA1B2G,SAASyiC,aAET9yC,KAAKoyC,WAAa,yBAEU1oC,SAAvB2G,SAAS0iC,UAEd/yC,KAAKoyC,WAAa,sBAES1oC,SAAtB2G,SAAS2iC,SAEdhzC,KAAKoyC,WAAa,qBAEO1oC,SAApB2G,SAAS4iC,OAEdjzC,KAAKoyC,WAAa,mBAIlBpyC,KAAKoyC,WAAa,IAGtB,IAAIlD,GAAQlvC,IAEZA,MAAKqyC,UAAY,SAAUa,GACvB,MAAOhE,GAAMiE,iBAAiBD,IAI9BlzC,KAAKoyC,YAEL/hC,SAAS+iC,iBAAiBpzC,KAAKoyC,WAAYpyC,KAAKqyC,WAAW,GAG/Dx/B,OAAOwgC,OAASrzC,KAAKqyC,UACrBx/B,OAAOygC,QAAUtzC,KAAKqyC,UAEtBx/B,OAAO0gC,WAAavzC,KAAKqyC,UACzBx/B,OAAO2gC,WAAaxzC,KAAKqyC,UAErBryC,KAAKE,KAAKuzC,OAAOC,cAEjBC,SAASC,IAAIC,YAAYT,iBAAiB,WACtCvqB,EAAOopB,MAAMpvC,UAAUswC,iBAAiBztC,KAAKwpC,GAAS95B,KAAM,YAGhEu+B,SAASC,IAAIE,YAAYV,iBAAiB,WACtCvqB,EAAOopB,MAAMpvC,UAAUswC,iBAAiBztC,KAAKwpC,GAAS95B,KAAM,eAYxEyT,EAAOopB,MAAMpvC,UAAUswC,iBAAmB,SAAUD,GAEhD,MAAmB,aAAfA,EAAM99B,MAAsC,SAAf89B,EAAM99B,MAAkC,aAAf89B,EAAM99B,MAAsC,UAAf89B,EAAM99B,UAEtE,aAAf89B,EAAM99B,MAAsC,SAAf89B,EAAM99B,KAEnCpV,KAAKE,KAAK6zC,UAAUb,IAEA,aAAfA,EAAM99B,MAAsC,UAAf89B,EAAM99B,OAExCpV,KAAKE,KAAK8zC,UAAUd,SAMxBlzC,KAAKkyC,0BAKL7hC,SAAS4iC,QAAU5iC,SAAS0iC,WAAa1iC,SAAS2iC,UAAY3iC,SAASyiC,cAA+B,UAAfI,EAAM99B,KAE7FpV,KAAKE,KAAK+zC,WAAWf,GAIrBlzC,KAAKE,KAAKg0C,YAAYhB,MAiB9BrqB,EAAOopB,MAAMpvC,UAAU2vC,mBAAqB,SAAU55B,GAE9C5Y,KAAKE,KAAK8Y,cAEd6P,EAAOsrB,MAAMC,aAAax7B,EAAO5Y,KAAKib,UACtC4N,EAAOsrB,MAAME,YAAYr0C,KAAKib,UAG9Bjb,KAAKib,SAASC,GAAK,IACnBlb,KAAKib,SAASE,GAAK,IACnBnb,KAAKib,SAAStW,GAAK,IACnB3E,KAAKib,SAASvW,EAAI,IAStBmkB,EAAOopB,MAAMpvC,UAAUE,QAAU,WAEzB/C,KAAKoyC,YAEL/hC,SAASikC,oBAAoBt0C,KAAKoyC,WAAYpyC,KAAKqyC,WAAW,GAGlEx/B,OAAO0gC,WAAa,KACpB1gC,OAAO2gC,WAAa,KAEpB3gC,OAAOwgC,OAAS,KAChBxgC,OAAOygC,QAAU,MAQrBlwC,OAAOC,eAAewlB,EAAOopB,MAAMpvC,UAAW,mBAE1CS,IAAK,WAED,MAAOtD,MAAKib,SAASrC,OAIzBpV,IAAK,SAAUoV,GAEX5Y,KAAKwyC,mBAAmB55B,MAYhCxV,OAAOC,eAAewlB,EAAOopB,MAAMpvC,UAAW,YAE1CS,IAAK,WAED,MAAOrD,MAAK0N,WAAW0Y,UAAYpmB,KAAK0N,WAAWC,QAIvDpK,IAAK,SAAUC,GAEPA,EAEAxD,KAAK0N,WAAW0Y,QAAUpmB,KAAK0N,WAAWC,OAI1C3N,KAAK0N,WAAW0Y,QAAUpmB,KAAK0N,WAAWoO,WAgCtD8M,EAAO0rB,MAAQ,SAAUr0C,EAAM0B,EAAQ83B,EAAM8a,EAAYC,EAAYC,GAE9ChrC,SAAf8qC,IAA4BA,GAAa,GAC1B9qC,SAAf+qC,IAA4BA,GAAa,GACrB/qC,SAApBgrC,IAAiCA,EAAkB7rB,EAAO8rB,QAAQC,QAOtE50C,KAAKE,KAAOA,EAEGwJ,SAAX9H,IAEAA,EAAS1B,EAAKuE,OAOlBzE,KAAK05B,KAAOA,GAAQ,QAQpB15B,KAAK2X,EAAI,EAET1X,KAAKkI,uBAAuBzC,KAAK1F,MAE7Bw0C,GAEAx0C,KAAKE,KAAK2B,MAAM2G,SAASxI,MACzBA,KAAK2X,EAAI3X,KAAKE,KAAK2B,MAAMmB,SAASE,QAI9BtB,IAEAA,EAAO4G,SAASxI,MAChBA,KAAK2X,EAAI/V,EAAOoB,SAASE,QASjClD,KAAKoV,KAAOyT,EAAOoK,MAMnBjzB,KAAK60C,YAAchsB,EAAOoK,MAO1BjzB,KAAK80C,OAAQ,EAOb90C,KAAK8L,QAAS,EAOd9L,KAAK+0C,eAAgB,EAYrB/0C,KAAKg1C,gBAAiB,EAWtBh1C,KAAKi1C,UAAYpsB,EAAOphB,OAQxBzH,KAAKk1C,OAAS,KAWdl1C,KAAKm1C,qBAAsB,EAY3Bn1C,KAAKo1C,iBAAmB,GAAIvsB,GAAOuc,OAanCplC,KAAKq1C,eAAiB,GAAIxsB,GAAOuc,OAYjCplC,KAAKs1C,iBAAmB,GAAIzsB,GAAOuc,OAYnCplC,KAAKu1C,gBAAkB,GAAI1sB,GAAOuc,OAUlCplC,KAAKy0C,WAAaA,EASlBz0C,KAAKw1C,iBAAkB,EAQvBx1C,KAAK00C,gBAAkBA,EAkBvB10C,KAAKy1C,qBAAuB,KAM5Bz1C,KAAK01C,UAAY,GAAI7sB,GAAOuc,OAM5BplC,KAAK21C,YAAc,EAUnB31C,KAAK41C,eAAgB,EAOrB51C,KAAK61C,aAAe,GAAIhtB,GAAOznB,MAa/BpB,KAAK81C,QAOL91C,KAAK+1C,cAAgB,KAIzBltB,EAAO0rB,MAAM1xC,UAAYO,OAAOiF,OAAOpI,KAAKkI,uBAAuBtF,WACnEgmB,EAAO0rB,MAAM1xC,UAAUC,YAAc+lB,EAAO0rB,MAO5C1rB,EAAO0rB,MAAMyB,YAAc,EAO3BntB,EAAO0rB,MAAM0B,aAAe,EAO5BptB,EAAO0rB,MAAM2B,aAAe,EAO5BrtB,EAAO0rB,MAAM4B,eAAiB,GAO9BttB,EAAO0rB,MAAM6B,gBAAkB,EAwB/BvtB,EAAO0rB,MAAM1xC,UAAUi7B,IAAM,SAAUr1B,EAAO4tC,EAAQ1tC,GAIlD,MAFee,UAAX2sC,IAAwBA,GAAS,GAEjC5tC,EAAM7G,SAAW5B,KAEVyI,GAGPA,EAAM6tC,MAAQ7tC,EAAM7G,QAAU6G,EAAM7G,OAAOk0C,MAE3CrtC,EAAM7G,OAAO20C,eAAe9tC,GAGlBiB,SAAVf,GAEAF,EAAMkP,EAAI3X,KAAKgD,SAASE,OAExBlD,KAAKwI,SAASC,KAIdzI,KAAK0I,WAAWD,EAAOE,GAEvB3I,KAAKw2C,WAGLx2C,KAAKy0C,YAAchsC,EAAM6wB,eAAe,SAA0B,OAAf7wB,EAAM6tC,KAEzDt2C,KAAKE,KAAKupC,QAAQ/uB,OAAOjS,EAAOzI,KAAK00C,iBAEhCjsC,EAAM6tC,MAEXt2C,KAAKy2C,UAAUhuC,GAGfzI,KAAKm1C,sBAAwB1sC,EAAMiuC,eAEnCjuC,EAAMiuC,cAAe,IAGpBL,GAAU5tC,EAAMkuC,QAEjBluC,EAAMkuC,OAAOC,wBAAwBnuC,EAAOzI,MAG5B,OAAhBA,KAAKk1C,SAELl1C,KAAKk1C,OAASzsC,GAGXA,IAmBXogB,EAAO0rB,MAAM1xC,UAAUg0C,MAAQ,SAAUpuC,EAAOE,EAAO0tC,GAEnDr2C,KAAK89B,IAAIr1B,EAAO4tC,EAAQ1tC,IAY5BkgB,EAAO0rB,MAAM1xC,UAAU4zC,UAAY,SAAUhuC,GAEzC,GAAIA,EAAM7G,SAAW5B,KACrB,CACI,GAAI2I,GAAQ3I,KAAK81C,KAAK1sC,QAAQX,EAE9B,IAAc,KAAVE,EAGA,MADA3I,MAAK81C,KAAK/xC,KAAK0E,IACR,EAIf,OAAO,GAYXogB,EAAO0rB,MAAM1xC,UAAU0zC,eAAiB,SAAU9tC,GAE9C,GAAIA,EACJ,CACI,GAAIE,GAAQ3I,KAAK81C,KAAK1sC,QAAQX,EAE9B,IAAc,KAAVE,EAGA,MADA3I,MAAK81C,KAAKjtC,OAAOF,EAAO,IACjB,EAIf,OAAO,GAqBXkgB,EAAO0rB,MAAM1xC,UAAUi0C,YAAc,SAAU9zC,EAAUqzC,GAErD,GAAIrzC,YAAoB6lB,GAAO0rB,MAE3BvxC,EAAS+zC,QAAQ/2C,KAAMq2C,OAEtB,IAAI11C,MAAM2R,QAAQtP,GAEnB,IAAK,GAAIC,GAAI,EAAGA,EAAID,EAASE,OAAQD,IAEjCjD,KAAK89B,IAAI96B,EAASC,GAAIozC,EAI9B,OAAOrzC,IAWX6lB,EAAO0rB,MAAM1xC,UAAUm0C,MAAQ,SAAUruC,GAErC,MAAY,GAARA,GAAaA,GAAS3I,KAAKgD,SAASE,OAE7B,GAIAlD,KAAKuJ,WAAWZ,IA4B/BkgB,EAAO0rB,MAAM1xC,UAAUwF,OAAS,SAAUhD,EAAGC,EAAGyP,EAAK7I,EAAOJ,EAAQnD,GAEjDe,SAAXoC,IAAwBA,GAAS,EAErC,IAAIrD,GAAQ,GAAIzI,MAAKi1C,UAAUj1C,KAAKE,KAAMmF,EAAGC,EAAGyP,EAAK7I,EAMrD,OAJAzD,GAAMqD,OAASA,EACfrD,EAAMhH,QAAUqK,EAChBrD,EAAMqsC,MAAQhpC,EAEP9L,KAAK89B,IAAIr1B,GAAO,EAAOE,IAmDlCkgB,EAAO0rB,MAAM1xC,UAAUo0C,eAAiB,SAAUC,EAAUniC,EAAK7I,EAAOJ,GAEtDpC,SAAVwC,IAAuBA,EAAQ,GACpBxC,SAAXoC,IAAwBA,GAAS,GAEhCnL,MAAM2R,QAAQyC,KAEfA,GAAQA,IAGPpU,MAAM2R,QAAQpG,KAEfA,GAAUA,GAGd,IAAIgjC,GAAQlvC,KACRgD,IAeJ,OAbA+R,GAAIiiB,QAAQ,SAASmgB,GAEjBjrC,EAAM8qB,QAAQ,SAASogB,GAEnB,IAAK,GAAIn0C,GAAI,EAAOi0C,EAAJj0C,EAAcA,IAE1BD,EAASe,KAAKmrC,EAAM7mC,OAAO,EAAG,EAAG8uC,EAAWC,EAAatrC,QAO9D9I,GAYX6lB,EAAO0rB,MAAM1xC,UAAU2zC,QAAU,WAI7B,IAFA,GAAIvzC,GAAIjD,KAAKgD,SAASE,OAEfD,KAEHjD,KAAKgD,SAASC,GAAG0U,EAAI1U,GAwD7B4lB,EAAO0rB,MAAM1xC,UAAUw0C,MAAQ,SAAUC,EAAMC,EAASC,EAAWC,EAAYt2C,EAAUuY,GAKrF,GAHiBhQ,SAAbvI,IAA0BA,EAAW0nB,EAAOuM,UACjC1rB,SAAXgQ,IAAwBA,EAAS,KAER,IAAzB1Z,KAAKgD,SAASE,QAAgBwW,EAAS1Z,KAAKgD,SAASE,QAAoB,KAATo0C,GAA2B,KAAZC,GASnF,IAAK,GAJDr8B,GAAI,GAAI2N,GAAOrmB,UAAU,EAAG,EAAGg1C,EAAWC,GAC1C7/B,EAAK0/B,EAAOE,EACZp0B,EAAKm0B,EAAUE,EAEVx0C,EAAIyW,EAAQzW,EAAIjD,KAAKgD,SAASE,OAAQD,IAC/C,CACI,GAAIwF,GAAQzI,KAAKgD,SAASC,EAE1B,IAAIwF,EAAe,QASnB,GAPIA,EAAMivC,QAAQx8B,EAAG/Z,GAOR,KAATm2C,EAGAp8B,EAAE5V,GAAKmyC,EAEHv8B,EAAE5V,IAAM8d,IAERlI,EAAE7V,GAAKmyC,EACPt8B,EAAE5V,EAAI,OAGT,IAAgB,KAAZiyC,EAGLr8B,EAAE7V,GAAKmyC,EAEHt8B,EAAE7V,IAAMuS,IAERsD,EAAE7V,EAAI,EACN6V,EAAE5V,GAAKmyC,OAMX,IAAIv8B,EAAE7V,IAAMuS,IAERsD,EAAE7V,EAAI,EACN6V,EAAE5V,GAAKmyC,EAEHv8B,EAAE5V,IAAM8d,GAGR,SAiBpByF,EAAO0rB,MAAM1xC,UAAU80C,YAAc,SAAUhvC,GAS3C,MAPce,UAAVf,IAAuBA,EAAQ,GAE/BA,EAAQ3I,KAAKgD,SAASE,OAAS,IAE/ByF,EAAQ,GAGR3I,KAAKk1C,QAELl1C,KAAK21C,YAAchtC,EACnB3I,KAAKk1C,OAASl1C,KAAKgD,SAAShD,KAAK21C,aAC1B31C,KAAKk1C,QAJhB,QAiBJrsB,EAAO0rB,MAAM1xC,UAAU+0C,KAAO,WAE1B,MAAI53C,MAAKk1C,QAGDl1C,KAAK21C,aAAe31C,KAAKgD,SAASE,OAAS,EAE3ClD,KAAK21C,YAAc,EAInB31C,KAAK21C,cAGT31C,KAAKk1C,OAASl1C,KAAKgD,SAAShD,KAAK21C,aAE1B31C,KAAKk1C,QAdhB,QA2BJrsB,EAAO0rB,MAAM1xC,UAAUg1C,SAAW,WAE9B,MAAI73C,MAAKk1C,QAGoB,IAArBl1C,KAAK21C,YAEL31C,KAAK21C,YAAc31C,KAAKgD,SAASE,OAAS,EAI1ClD,KAAK21C,cAGT31C,KAAKk1C,OAASl1C,KAAKgD,SAAShD,KAAK21C,aAE1B31C,KAAKk1C,QAdhB,QA4BJrsB,EAAO0rB,MAAM1xC,UAAUi1C,KAAO,SAAUC,EAAQ/uC,GAE5ChJ,KAAK+I,aAAagvC,EAAQ/uC,GAC1BhJ,KAAKw2C,WAWT3tB,EAAO0rB,MAAM1xC,UAAUm1C,WAAa,SAAUvvC,GAQ1C,MANIA,GAAM7G,SAAW5B,MAAQA,KAAKi4C,SAASxvC,GAASzI,KAAKgD,SAASE,SAE9DlD,KAAKiR,OAAOxI,GAAO,GAAO,GAC1BzI,KAAK89B,IAAIr1B,GAAO,IAGbA,GAWXogB,EAAO0rB,MAAM1xC,UAAUq1C,WAAa,SAAUzvC,GAQ1C,MANIA,GAAM7G,SAAW5B,MAAQA,KAAKi4C,SAASxvC,GAAS,IAEhDzI,KAAKiR,OAAOxI,GAAO,GAAO,GAC1BzI,KAAK62C,MAAMpuC,EAAO,GAAG,IAGlBA,GAWXogB,EAAO0rB,MAAM1xC,UAAUs1C,OAAS,SAAU1vC,GAEtC,GAAIA,EAAM7G,SAAW5B,MAAQA,KAAKi4C,SAASxvC,GAASzI,KAAKgD,SAASE,OAAS,EAC3E,CACI,GAAIwB,GAAI1E,KAAKi4C,SAASxvC,GAClB9D,EAAI3E,KAAKg3C,MAAMtyC,EAAI,EAEnBC,IAEA3E,KAAK83C,KAAKrvC,EAAO9D,GAIzB,MAAO8D,IAWXogB,EAAO0rB,MAAM1xC,UAAUu1C,SAAW,SAAU3vC,GAExC,GAAIA,EAAM7G,SAAW5B,MAAQA,KAAKi4C,SAASxvC,GAAS,EACpD,CACI,GAAI/D,GAAI1E,KAAKi4C,SAASxvC,GAClB9D,EAAI3E,KAAKg3C,MAAMtyC,EAAI,EAEnBC,IAEA3E,KAAK83C,KAAKrvC,EAAO9D,GAIzB,MAAO8D,IAYXogB,EAAO0rB,MAAM1xC,UAAUw1C,GAAK,SAAU1vC,EAAOtD,EAAGC,GAE5C,MAAY,GAARqD,GAAaA,EAAQ3I,KAAKgD,SAASE,OAE5B,IAIPlD,KAAKuJ,WAAWZ,GAAOtD,EAAIA,OAC3BrF,KAAKuJ,WAAWZ,GAAOrD,EAAIA,KAYnCujB,EAAO0rB,MAAM1xC,UAAUub,QAAU,WAE7Bpe,KAAKgD,SAASob,UACdpe,KAAKw2C,WAWT3tB,EAAO0rB,MAAM1xC,UAAUo1C,SAAW,SAAUxvC,GAExC,MAAOzI,MAAKgD,SAASoG,QAAQX,IAajCogB,EAAO0rB,MAAM1xC,UAAUy1C,UAAY,SAAU5e,GAEzC,IAAK,GAAIz2B,GAAI,EAAGA,EAAIjD,KAAKgD,SAASE,OAAQD,IAEtC,GAAIjD,KAAKgD,SAASC,GAAGy2B,OAASA,EAE1B,MAAO15B,MAAKgD,SAASC,EAI7B,OAAO,OAgBX4lB,EAAO0rB,MAAM1xC,UAAUo3B,QAAU,SAAUse,EAAUC,GAEjD,GAAI7vC,GAAQ3I,KAAKi4C,SAASM,EAE1B,OAAc,KAAV5vC,GAEI6vC,EAAS52C,SAEL42C,EAAS52C,iBAAkBinB,GAAO0rB,MAElCiE,EAAS52C,OAAOqP,OAAOunC,GAIvBA,EAAS52C,OAAOgH,YAAY4vC,IAIpCx4C,KAAKiR,OAAOsnC,GAEZv4C,KAAK62C,MAAM2B,EAAU7vC,GAEd4vC,GAlBX,QAiCJ1vB,EAAO0rB,MAAM1xC,UAAU41C,YAAc,SAAUhwC,EAAOsM,GAElD,GAAIoiB,GAAMpiB,EAAI7R,MAEd,OAAY,KAARi0B,GAAapiB,EAAI,IAAMtM,IAEhB,EAEM,IAAR0uB,GAAapiB,EAAI,IAAMtM,IAASsM,EAAI,IAAMtM,GAAMsM,EAAI,KAElD,EAEM,IAARoiB,GAAapiB,EAAI,IAAMtM,IAASsM,EAAI,IAAMtM,GAAMsM,EAAI,KAAOA,EAAI,IAAMtM,GAAMsM,EAAI,IAAIA,EAAI,KAErF,EAEM,IAARoiB,GAAapiB,EAAI,IAAMtM,IAASsM,EAAI,IAAMtM,GAAMsM,EAAI,KAAOA,EAAI,IAAMtM,GAAMsM,EAAI,IAAIA,EAAI,KAAOA,EAAI,IAAMtM,GAAMsM,EAAI,IAAIA,EAAI,IAAIA,EAAI,KAEhI,GAGJ,GAsBX8T,EAAO0rB,MAAM1xC,UAAUm1B,YAAc,SAAUvvB,EAAOsM,EAAKtR,EAAOi1C,EAAWrR,GAgBzE,GAdc39B,SAAV29B,IAAuBA,GAAQ,GAEnCqR,EAAYA,GAAa,GAYpB14C,KAAKy4C,YAAYhwC,EAAOsM,MAAUsyB,GAASqR,EAAY,GAExD,OAAO,CAGX,IAAIvhB,GAAMpiB,EAAI7R,MAmCd,OAjCY,KAARi0B,EAEkB,IAAduhB,EAAmBjwC,EAAMsM,EAAI,IAAMtR,EACjB,GAAbi1C,EAAkBjwC,EAAMsM,EAAI,KAAOtR,EACtB,GAAbi1C,EAAkBjwC,EAAMsM,EAAI,KAAOtR,EACtB,GAAbi1C,EAAkBjwC,EAAMsM,EAAI,KAAOtR,EACtB,GAAbi1C,IAAkBjwC,EAAMsM,EAAI,KAAOtR,GAE/B,IAAR0zB,EAEa,IAAduhB,EAAmBjwC,EAAMsM,EAAI,IAAIA,EAAI,IAAMtR,EACzB,GAAbi1C,EAAkBjwC,EAAMsM,EAAI,IAAIA,EAAI,KAAOtR,EAC9B,GAAbi1C,EAAkBjwC,EAAMsM,EAAI,IAAIA,EAAI,KAAOtR,EAC9B,GAAbi1C,EAAkBjwC,EAAMsM,EAAI,IAAIA,EAAI,KAAOtR,EAC9B,GAAbi1C,IAAkBjwC,EAAMsM,EAAI,IAAIA,EAAI,KAAOtR,GAEvC,IAAR0zB,EAEa,IAAduhB,EAAmBjwC,EAAMsM,EAAI,IAAIA,EAAI,IAAIA,EAAI,IAAMtR,EACjC,GAAbi1C,EAAkBjwC,EAAMsM,EAAI,IAAIA,EAAI,IAAIA,EAAI,KAAOtR,EACtC,GAAbi1C,EAAkBjwC,EAAMsM,EAAI,IAAIA,EAAI,IAAIA,EAAI,KAAOtR,EACtC,GAAbi1C,EAAkBjwC,EAAMsM,EAAI,IAAIA,EAAI,IAAIA,EAAI,KAAOtR,EACtC,GAAbi1C,IAAkBjwC,EAAMsM,EAAI,IAAIA,EAAI,IAAIA,EAAI,KAAOtR,GAE/C,IAAR0zB,IAEa,IAAduhB,EAAmBjwC,EAAMsM,EAAI,IAAIA,EAAI,IAAIA,EAAI,IAAIA,EAAI,IAAMtR,EACzC,GAAbi1C,EAAkBjwC,EAAMsM,EAAI,IAAIA,EAAI,IAAIA,EAAI,IAAIA,EAAI,KAAOtR,EAC9C,GAAbi1C,EAAkBjwC,EAAMsM,EAAI,IAAIA,EAAI,IAAIA,EAAI,IAAIA,EAAI,KAAOtR,EAC9C,GAAbi1C,EAAkBjwC,EAAMsM,EAAI,IAAIA,EAAI,IAAIA,EAAI,IAAIA,EAAI,KAAOtR,EAC9C,GAAbi1C,IAAkBjwC,EAAMsM,EAAI,IAAIA,EAAI,IAAIA,EAAI,IAAIA,EAAI,KAAOtR,KAGjE,GAcXolB,EAAO0rB,MAAM1xC,UAAU81C,cAAgB,SAAUlwC,EAAOsM,EAAKtR,EAAO4jC,GAKhE,MAHc39B,UAAV29B,IAAuBA,GAAQ,IAG9Bxe,EAAO0O,MAAMC,YAAY/uB,EAAOsM,IAAQsyB,GAElC,EAGPxe,EAAO0O,MAAMC,YAAY/uB,EAAOsM,KAAStR,GAElC,GAGJ,GAmBXolB,EAAO0rB,MAAM1xC,UAAUW,IAAM,SAAUiF,EAAOsM,EAAKtR,EAAOm1C,EAAYC,EAAcH,EAAWrR,GAS3F,MAPc39B,UAAV29B,IAAuBA,GAAQ,GAEnCtyB,EAAMA,EAAI6iB,MAAM,KAEGluB,SAAfkvC,IAA4BA,GAAa,GACxBlvC,SAAjBmvC,IAA8BA,GAAe,IAE5CD,KAAe,GAAUA,GAAcnwC,EAAMqsC,SAAY+D,KAAiB,GAAUA,GAAgBpwC,EAAMhH,SAEpGzB,KAAKg4B,YAAYvvB,EAAOsM,EAAKtR,EAAOi1C,EAAWrR,GAF1D,QAuBJxe,EAAO0rB,MAAM1xC,UAAUi2C,OAAS,SAAU/jC,EAAKtR,EAAOm1C,EAAYC,EAAcH,EAAWrR,GAEpE39B,SAAfkvC,IAA4BA,GAAa,GACxBlvC,SAAjBmvC,IAA8BA,GAAe,GACnCnvC,SAAV29B,IAAuBA,GAAQ,GAEnCtyB,EAAMA,EAAI6iB,MAAM,KAChB8gB,EAAYA,GAAa,CAEzB,KAAK,GAAIz1C,GAAI,EAAGA,EAAIjD,KAAKgD,SAASE,OAAQD,MAEhC21C,GAAeA,GAAc54C,KAAKgD,SAASC,GAAG6xC,UAAa+D,GAAiBA,GAAgB74C,KAAKgD,SAASC,GAAGxB,UAE/GzB,KAAKg4B,YAAYh4B,KAAKgD,SAASC,GAAI8R,EAAKtR,EAAOi1C,EAAWrR,IAsBtExe,EAAO0rB,MAAM1xC,UAAUk2C,eAAiB,SAAUhkC,EAAKtR,EAAOm1C,EAAYC,EAAcH,EAAWrR,GAE5E39B,SAAfkvC,IAA4BA,GAAa,GACxBlvC,SAAjBmvC,IAA8BA,GAAe,GACnCnvC,SAAV29B,IAAuBA,GAAQ,GAEnCqR,EAAYA,GAAa,CAEzB,KAAK,GAAIz1C,GAAI,EAAGA,EAAIjD,KAAKgD,SAASE,OAAQD,MAEhC21C,GAAeA,GAAc54C,KAAKgD,SAASC,GAAG6xC,UAAa+D,GAAiBA,GAAgB74C,KAAKgD,SAASC,GAAGxB,WAE3GzB,KAAKgD,SAASC,YAAc4lB,GAAO0rB,MAEnCv0C,KAAKgD,SAASC,GAAG81C,eAAehkC,EAAKtR,EAAOm1C,EAAYC,EAAcH,EAAWrR,GAIjFrnC,KAAKg4B,YAAYh4B,KAAKgD,SAASC,GAAI8R,EAAI6iB,MAAM,KAAMn0B,EAAOi1C,EAAWrR,KAmBrFxe,EAAO0rB,MAAM1xC,UAAUm2C,SAAW,SAAUjkC,EAAKtR,EAAOm1C,EAAYC,EAAcxR,GAE3D39B,SAAfkvC,IAA4BA,GAAa,GACxBlvC,SAAjBmvC,IAA8BA,GAAe,GACnCnvC,SAAV29B,IAAuBA,GAAQ,EAEnC,KAAK,GAAIpkC,GAAI,EAAGA,EAAIjD,KAAKgD,SAASE,OAAQD,IAEtC,KAAM21C,GAAeA,GAAc54C,KAAKgD,SAASC,GAAG6xC,UAAa+D,GAAiBA,GAAgB74C,KAAKgD,SAASC,GAAGxB,WAE1GzB,KAAK24C,cAAc34C,KAAKgD,SAASC,GAAI8R,EAAKtR,EAAO4jC,GAElD,OAAO,CAKnB,QAAO,GAeXxe,EAAO0rB,MAAM1xC,UAAUo2C,OAAS,SAAUC,EAAUzpB,EAAQmpB,EAAYC,GAEpE74C,KAAK84C,OAAOI,EAAUzpB,EAAQmpB,EAAYC,EAAc,IAe5DhwB,EAAO0rB,MAAM1xC,UAAUs2C,OAAS,SAAUD,EAAUzpB,EAAQmpB,EAAYC,GAEpE74C,KAAK84C,OAAOI,EAAUzpB,EAAQmpB,EAAYC,EAAc,IAe5DhwB,EAAO0rB,MAAM1xC,UAAUu2C,YAAc,SAAUF,EAAUzpB,EAAQmpB,EAAYC,GAEzE74C,KAAK84C,OAAOI,EAAUzpB,EAAQmpB,EAAYC,EAAc,IAe5DhwB,EAAO0rB,MAAM1xC,UAAUw2C,UAAY,SAAUH,EAAUzpB,EAAQmpB,EAAYC,GAEvE74C,KAAK84C,OAAOI,EAAUzpB,EAAQmpB,EAAYC,EAAc,IAc5DhwB,EAAO0rB,MAAM1xC,UAAUy2C,cAAgB,SAAUC,EAAUC,GAEvD,GAAIhjB,EAEJ,IAAIG,UAAUzzB,OAAS,EACvB,CACIszB,IAEA,KAAK,GAAIvzB,GAAI,EAAGA,EAAI0zB,UAAUzzB,OAAQD,IAElCuzB,EAAKzyB,KAAK4yB,UAAU1zB,IAI5B,IAAK,GAAIA,GAAI,EAAGA,EAAIjD,KAAKgD,SAASE,OAAQD,IAElCjD,KAAKgD,SAASC,GAAG6I,SAAW0tC,GAAex5C,KAAKgD,SAASC,GAAGs2C,IAE5Dv5C,KAAKgD,SAASC,GAAGs2C,GAAUtyC,MAAMjH,KAAKgD,SAASC,GAAIuzB,IAe/D3N,EAAO0rB,MAAM1xC,UAAU42C,kBAAoB,SAAUhxC,EAAO8wC,EAAUr2C,GAIlE,GAAc,GAAVA,GAEA,GAAIuF,EAAM8wC,EAAS,IAEf,MAAO9wC,GAAM8wC,EAAS,QAGzB,IAAc,GAAVr2C,GAEL,GAAIuF,EAAM8wC,EAAS,IAAIA,EAAS,IAE5B,MAAO9wC,GAAM8wC,EAAS,IAAIA,EAAS,QAGtC,IAAc,GAAVr2C,GAEL,GAAIuF,EAAM8wC,EAAS,IAAIA,EAAS,IAAIA,EAAS,IAEzC,MAAO9wC,GAAM8wC,EAAS,IAAIA,EAAS,IAAIA,EAAS,QAGnD,IAAc,GAAVr2C,GAEL,GAAIuF,EAAM8wC,EAAS,IAAIA,EAAS,IAAIA,EAAS,IAAIA,EAAS,IAEtD,MAAO9wC,GAAM8wC,EAAS,IAAIA,EAAS,IAAIA,EAAS,IAAIA,EAAS,QAKjE,IAAI9wC,EAAM8wC,GAEN,MAAO9wC,GAAM8wC,EAIrB,QAAO,GAeX1wB,EAAO0rB,MAAM1xC,UAAU62C,QAAU,SAAUC,EAAQrsC,GAE/C,GAAe5D,SAAXiwC,EAAJ,CAMAA,EAASA,EAAO/hB,MAAM,IAEtB,IAAIgiB,GAAeD,EAAOz2C,MAE1B,IAAgBwG,SAAZ4D,GAAqC,OAAZA,GAAgC,KAAZA,EAE7CA,EAAU,SAKV,IAAuB,gBAAZA,GACX,CACIA,EAAUA,EAAQsqB,MAAM,IACxB,IAAIiiB,GAAgBvsC,EAAQpK,OAIpC,GAAIszB,EAEJ,IAAIG,UAAUzzB,OAAS,EACvB,CACIszB,IAEA,KAAK,GAAIvzB,GAAI,EAAGA,EAAI0zB,UAAUzzB,OAAQD,IAElCuzB,EAAKzyB,KAAK4yB,UAAU1zB,IAO5B,IAAK,GAHDs2C,GAAW,KACXxN,EAAkB,KAEb9oC,EAAI,EAAGA,EAAIjD,KAAKgD,SAASE,OAAQD,IAEtCs2C,EAAWv5C,KAAKy5C,kBAAkBz5C,KAAKgD,SAASC,GAAI02C,EAAQC,GAExDtsC,GAAWisC,GAEXxN,EAAkB/rC,KAAKy5C,kBAAkBz5C,KAAKgD,SAASC,GAAIqK,EAASusC,GAEhEN,GAEAA,EAAStyC,MAAM8kC,EAAiBvV,IAG/B+iB,GAELA,EAAStyC,MAAMjH,KAAKgD,SAASC,GAAIuzB,KAW7C3N,EAAO0rB,MAAM1xC,UAAUsD,UAAY,WAE/B,GAAInG,KAAKg1C,eAGL,MADAh1C,MAAK+C,WACE,CAGX,KAAK/C,KAAK8L,SAAW9L,KAAK4B,OAAOkK,OAG7B,MADA9L,MAAK85C,cAAgB,IACd,CAGX,KAAK,GAAI72C,GAAI,EAAGA,EAAIjD,KAAKgD,SAASE,OAAQD,IAEtCjD,KAAKgD,SAASC,GAAGkD,WAGrB,QAAO,GASX0iB,EAAO0rB,MAAM1xC,UAAU+kC,OAAS,WAK5B,IAFA,GAAI3kC,GAAIjD,KAAKgD,SAASE,OAEfD,KAEHjD,KAAKgD,SAASC,GAAG2kC,UAUzB/e,EAAO0rB,MAAM1xC,UAAUmvC,WAAa,WAG5BhyC,KAAK41C,gBAEL51C,KAAKqF,EAAIrF,KAAKE,KAAKob,OAAOlC,KAAK/T,EAAIrF,KAAK61C,aAAaxwC,EACrDrF,KAAKsF,EAAItF,KAAKE,KAAKob,OAAOlC,KAAK9T,EAAItF,KAAK61C,aAAavwC,EAGzD,KAAK,GAAIrC,GAAI,EAAGA,EAAIjD,KAAKgD,SAASE,OAAQD,IAEtCjD,KAAKgD,SAASC,GAAG+uC,cAsBzBnpB,EAAO0rB,MAAM1xC,UAAUsiB,OAAS,SAAU40B,EAAWC,GAMjD,IAJA,GAAIrxC,GAAQ,GACRzF,EAASlD,KAAKgD,SAASE,OACvBs7B,OAEK71B,EAAQzF,GACjB,CACI,GAAIuF,GAAQzI,KAAKgD,SAAS2F,KAErBqxC,GAAgBA,GAAevxC,EAAMqD,SAElCiuC,EAAUtxC,EAAOE,EAAO3I,KAAKgD,WAE7Bw7B,EAAQz6B,KAAK0E,GAKzB,MAAO,IAAIogB,GAAOoxB,SAASzb,IAqB/B3V,EAAO0rB,MAAM1xC,UAAUm0B,QAAU,SAAUuiB,EAAUxN,EAAiBiO,GAIlE,GAFoBtwC,SAAhBswC,IAA6BA,GAAc,GAE3CrjB,UAAUzzB,QAAU,EAEpB,IAAK,GAAID,GAAI,EAAGA,EAAIjD,KAAKgD,SAASE,OAAQD,MAEjC+2C,GAAgBA,GAAeh6C,KAAKgD,SAASC,GAAG6I,SAEjDytC,EAAS7zC,KAAKqmC,EAAiB/rC,KAAKgD,SAASC,QAKzD,CAKI,IAAK,GAFDuzB,IAAQ,MAEHvzB,EAAI,EAAGA,EAAI0zB,UAAUzzB,OAAQD,IAElCuzB,EAAKzyB,KAAK4yB,UAAU1zB,GAGxB,KAAK,GAAIA,GAAI,EAAGA,EAAIjD,KAAKgD,SAASE,OAAQD,MAEjC+2C,GAAgBA,GAAeh6C,KAAKgD,SAASC,GAAG6I,UAEjD0qB,EAAK,GAAKx2B,KAAKgD,SAASC,GACxBs2C,EAAStyC,MAAM8kC,EAAiBvV,MAiBhD3N,EAAO0rB,MAAM1xC,UAAUq3C,cAAgB,SAAUX,EAAUxN,GAEvD,GAAIvV,EAEJ,IAAIG,UAAUzzB,OAAS,EACvB,CACIszB,GAAQ,KAER,KAAK,GAAIvzB,GAAI,EAAGA,EAAI0zB,UAAUzzB,OAAQD,IAElCuzB,EAAKzyB,KAAK4yB,UAAU1zB,IAI5BjD,KAAKm6C,QAAQ,UAAU,EAAMtxB,EAAO0rB,MAAM0B,aAAcsD,EAAUxN,EAAiBvV,IAcvF3N,EAAO0rB,MAAM1xC,UAAUu3C,aAAe,SAAUb,EAAUxN,GAEtD,GAAIvV,EAEJ,IAAIG,UAAUzzB,OAAS,EACvB,CACIszB,GAAQ,KAER,KAAK,GAAIvzB,GAAI,EAAGA,EAAI0zB,UAAUzzB,OAAQD,IAElCuzB,EAAKzyB,KAAK4yB,UAAU1zB,IAI5BjD,KAAKm6C,QAAQ,SAAS,EAAMtxB,EAAO0rB,MAAM0B,aAAcsD,EAAUxN,EAAiBvV,IActF3N,EAAO0rB,MAAM1xC,UAAUw3C,YAAc,SAAUd,EAAUxN,GAErD,GAAIvV,EAEJ,IAAIG,UAAUzzB,OAAS,EACvB,CACIszB,GAAQ,KAER,KAAK,GAAIvzB,GAAI,EAAGA,EAAI0zB,UAAUzzB,OAAQD,IAElCuzB,EAAKzyB,KAAK4yB,UAAU1zB,IAI5BjD,KAAKm6C,QAAQ,SAAS,EAAOtxB,EAAO0rB,MAAM0B,aAAcsD,EAAUxN,EAAiBvV,IAkBvF3N,EAAO0rB,MAAM1xC,UAAUy3C,KAAO,SAAUvlC,EAAKwlC,GAErCv6C,KAAKgD,SAASE,OAAS,IAMfwG,SAARqL,IAAqBA,EAAM,KACjBrL,SAAV6wC,IAAuBA,EAAQ1xB,EAAO0rB,MAAM4B,gBAEhDn2C,KAAK+1C,cAAgBhhC,EAEjBwlC,IAAU1xB,EAAO0rB,MAAM4B,eAEvBn2C,KAAKgD,SAASs3C,KAAKt6C,KAAKw6C,qBAAqBpkB,KAAKp2B,OAIlDA,KAAKgD,SAASs3C,KAAKt6C,KAAKy6C,sBAAsBrkB,KAAKp2B,OAGvDA,KAAKw2C,YAcT3tB,EAAO0rB,MAAM1xC,UAAU63C,WAAa,SAAUC,EAAartC,GAEnDtN,KAAKgD,SAASE,OAAS,IAM3BlD,KAAKgD,SAASs3C,KAAKK,EAAYvkB,KAAK9oB,IAEpCtN,KAAKw2C,YAYT3tB,EAAO0rB,MAAM1xC,UAAU23C,qBAAuB,SAAU91C,EAAGC,GAEvD,MAAID,GAAE1E,KAAK+1C,eAAiBpxC,EAAE3E,KAAK+1C,eAExB,GAEFrxC,EAAE1E,KAAK+1C,eAAiBpxC,EAAE3E,KAAK+1C,eAE7B,EAIHrxC,EAAEiT,EAAIhT,EAAEgT,EAED,GAIA,GAcnBkR,EAAO0rB,MAAM1xC,UAAU43C,sBAAwB,SAAU/1C,EAAGC,GAExD,MAAID,GAAE1E,KAAK+1C,eAAiBpxC,EAAE3E,KAAK+1C,eAExB,EAEFrxC,EAAE1E,KAAK+1C,eAAiBpxC,EAAE3E,KAAK+1C,eAE7B,GAIA,GAiCfltB,EAAO0rB,MAAM1xC,UAAUs3C,QAAU,SAAUplC,EAAKtR,EAAOm3C,EAAYrB,EAAUxN,EAAiBvV,GAE1F,GAAIokB,IAAe/xB,EAAO0rB,MAAM0B,cAAyC,IAAzBj2C,KAAKgD,SAASE,OAE1D,MAAO,EAKX,KAAK,GAFDwsB,GAAQ,EAEHzsB,EAAI,EAAGA,EAAIjD,KAAKgD,SAASE,OAAQD,IAEtC,GAAIjD,KAAKgD,SAASC,GAAG8R,KAAStR,IAE1BisB,IAEI6pB,IAEI/iB,GAEAA,EAAK,GAAKx2B,KAAKgD,SAASC,GACxBs2C,EAAStyC,MAAM8kC,EAAiBvV,IAIhC+iB,EAAS7zC,KAAKqmC,EAAiB/rC,KAAKgD,SAASC,KAIjD23C,IAAe/xB,EAAO0rB,MAAM2B,cAE5B,MAAOl2C,MAAKgD,SAASC,EAKjC,OAAI23C,KAAe/xB,EAAO0rB,MAAM0B,aAErBvmB,EAIJ,MAuBX7G,EAAO0rB,MAAM1xC,UAAUg4C,eAAiB,SAAU/uC,EAAQgvC,EAAcz1C,EAAGC,EAAGyP,EAAK7I,GAE1DxC,SAAjBoxC,IAA8BA,GAAe,GAE3B,iBAAXhvC,KAEPA,GAAS,EAGb,IAAIrD,GAAQzI,KAAKm6C,QAAQ,SAAUruC,EAAQ+c,EAAO0rB,MAAM2B,aAExD,OAAkB,QAAVztC,GAAkBqyC,EAAgB96C,KAAKqI,OAAOhD,EAAGC,EAAGyP,EAAK7I,GAASlM,KAAK+6C,WAAWtyC,EAAOpD,EAAGC,EAAGyP,EAAK7I,IAwBhH2c,EAAO0rB,MAAM1xC,UAAUm4C,cAAgB,SAAUF,EAAcz1C,EAAGC,EAAGyP,EAAK7I,GAEjDxC,SAAjBoxC,IAA8BA,GAAe,EAEjD,IAAIryC,GAAQzI,KAAKm6C,QAAQ,SAAS,EAAMtxB,EAAO0rB,MAAM2B,aAErD,OAAkB,QAAVztC,GAAkBqyC,EAAgB96C,KAAKqI,OAAOhD,EAAGC,EAAGyP,EAAK7I,GAASlM,KAAK+6C,WAAWtyC,EAAOpD,EAAGC,EAAGyP,EAAK7I,IAwBhH2c,EAAO0rB,MAAM1xC,UAAUo4C,aAAe,SAAUH,EAAcz1C,EAAGC,EAAGyP,EAAK7I,GAEhDxC,SAAjBoxC,IAA8BA,GAAe,EAEjD,IAAIryC,GAAQzI,KAAKm6C,QAAQ,SAAS,EAAOtxB,EAAO0rB,MAAM2B,aAEtD,OAAkB,QAAVztC,GAAkBqyC,EAAgB96C,KAAKqI,OAAOhD,EAAGC,EAAGyP,EAAK7I,GAASlM,KAAK+6C,WAAWtyC,EAAOpD,EAAGC,EAAGyP,EAAK7I,IAmBhH2c,EAAO0rB,MAAM1xC,UAAUk4C,WAAa,SAAUtyC,EAAOpD,EAAGC,EAAGyP,EAAK7I,GAE5D,MAAc,QAAVzD,EAEO,MAGDiB,SAANrE,IAAmBA,EAAI,MACjBqE,SAANpE,IAAmBA,EAAI,MAEjB,OAAND,GAAoB,OAANC,GAEdmD,EAAMqgC,MAAMzjC,EAAGC,GAGPoE,SAARqL,GAEAtM,EAAMyyC,YAAYnmC,EAAK7I,GAGpBzD,IAYXogB,EAAO0rB,MAAM1xC,UAAUs4C,OAAS,WAE5B,MAAIn7C,MAAKgD,SAASE,OAAS,EAEhBlD,KAAKgD,SAAShD,KAAKgD,SAASE,OAAS,GAFhD,QAeJ2lB,EAAO0rB,MAAM1xC,UAAUu4C,UAAY,WAE/B,MAAIp7C,MAAKgD,SAASE,OAAS,EAEhBlD,KAAKgD,SAAS,GAFzB,QAkBJ6lB,EAAO0rB,MAAM1xC,UAAUw4C,aAAe,SAAUC,GAM5C,IAAK,GAJDlgB,GAAW0H,OAAOC,UAClBwY,EAAe,EACfnqC,EAAS,KAEJnO,EAAI,EAAGA,EAAIjD,KAAKgD,SAASE,OAAQD,IAC1C,CACI,GAAIwF,GAAQzI,KAAKgD,SAASC,EAEtBwF,GAAMqD,SAENyvC,EAAe16C,KAAKq7B,IAAIrT,EAAOznB,MAAMg6B,SAASkgB,EAAQ7yC,IAEnC2yB,EAAfmgB,IAEAngB,EAAWmgB,EACXnqC,EAAS3I,IAKrB,MAAO2I,IAeXyX,EAAO0rB,MAAM1xC,UAAU24C,gBAAkB,SAAUF,GAM/C,IAAK,GAJDlgB,GAAW,EACXmgB,EAAe,EACfnqC,EAAS,KAEJnO,EAAI,EAAGA,EAAIjD,KAAKgD,SAASE,OAAQD,IAC1C,CACI,GAAIwF,GAAQzI,KAAKgD,SAASC,EAEtBwF,GAAMqD,SAENyvC,EAAe16C,KAAKq7B,IAAIrT,EAAOznB,MAAMg6B,SAASkgB,EAAQ7yC,IAElD8yC,EAAengB,IAEfA,EAAWmgB,EACXnqC,EAAS3I,IAKrB,MAAO2I;EAUXyX,EAAO0rB,MAAM1xC,UAAU44C,YAAc,WAEjC,MAAOz7C,MAAKm6C,QAAQ,SAAS,EAAMtxB,EAAO0rB,MAAM0B,eAUpDptB,EAAO0rB,MAAM1xC,UAAU64C,UAAY,WAE/B,MAAO17C,MAAKm6C,QAAQ,SAAS,EAAOtxB,EAAO0rB,MAAM0B,eAYrDptB,EAAO0rB,MAAM1xC,UAAU84C,UAAY,SAAUn3B,EAAYthB,GAErD,MAA6B,KAAzBlD,KAAKgD,SAASE,OAEP,MAGXshB,EAAaA,GAAc,EAC3BthB,EAASA,GAAUlD,KAAKgD,SAASE,OAE1B2lB,EAAO+yB,WAAWC,cAAc77C,KAAKgD,SAAUwhB,EAAYthB,KAiBtE2lB,EAAO0rB,MAAM1xC,UAAUoO,OAAS,SAAUxI,EAAO1F,EAASszC,GAKtD,GAHgB3sC,SAAZ3G,IAAyBA,GAAU,GACxB2G,SAAX2sC,IAAwBA,GAAS,GAER,IAAzBr2C,KAAKgD,SAASE,QAAiD,KAAjClD,KAAKgD,SAASoG,QAAQX,GAEpD,OAAO,CAGN4tC,KAAU5tC,EAAMkuC,QAAWluC,EAAMqzC,cAElCrzC,EAAMkuC,OAAOoF,4BAA4BtzC,EAAOzI,KAGpD,IAAIiK,GAAUjK,KAAK4I,YAAYH,EAgB/B,OAdAzI,MAAKu2C,eAAe9tC,GAEpBzI,KAAKw2C,UAEDx2C,KAAKk1C,SAAWzsC,GAEhBzI,KAAK43C,OAGL70C,GAAWkH,GAEXA,EAAQlH,SAAQ,IAGb,GAYX8lB,EAAO0rB,MAAM1xC,UAAUk0C,QAAU,SAAUiF,EAAO3F,GAI9C,GAFe3sC,SAAX2sC,IAAwBA,GAAS,GAEjCr2C,KAAKgD,SAASE,OAAS,GAAK84C,YAAiBnzB,GAAO0rB,MACxD,CACI,EAEIyH,GAAMle,IAAI99B,KAAKgD,SAAS,GAAIqzC,SAEzBr2C,KAAKgD,SAASE,OAAS,EAE9BlD,MAAK81C,QAEL91C,KAAKk1C,OAAS,KAGlB,MAAO8G,IAiBXnzB,EAAO0rB,MAAM1xC,UAAU8pC,UAAY,SAAU5pC,EAASszC,EAAQ4F,GAM1D,GAJgBvyC,SAAZ3G,IAAyBA,GAAU,GACxB2G,SAAX2sC,IAAwBA,GAAS,GACd3sC,SAAnBuyC,IAAgCA,GAAiB,GAExB,IAAzBj8C,KAAKgD,SAASE,OAAlB,CAKA,EACA,EACSmzC,GAAUr2C,KAAKgD,SAAS,GAAG2zC,QAE5B32C,KAAKgD,SAAS,GAAG2zC,OAAOoF,4BAA4B/7C,KAAKgD,SAAS,GAAIhD,KAG1E,IAAIiK,GAAUjK,KAAK4I,YAAY5I,KAAKgD,SAAS,GAE7ChD,MAAKu2C,eAAetsC,GAEhBlH,GAAWkH,GAEXA,EAAQlH,SAAQ,EAAMk5C,SAGvBj8C,KAAKgD,SAASE,OAAS,EAE9BlD,MAAK81C,QAEL91C,KAAKk1C,OAAS,OAalBrsB,EAAO0rB,MAAM1xC,UAAUq5C,cAAgB,SAAU13B,EAAY3a,EAAU9G,EAASszC,GAM5E,GAJiB3sC,SAAbG,IAA0BA,EAAW7J,KAAKgD,SAASE,OAAS,GAChDwG,SAAZ3G,IAAyBA,GAAU,GACxB2G,SAAX2sC,IAAwBA,GAAS,GAER,IAAzBr2C,KAAKgD,SAASE,OAAlB,CAKA,GAAIshB,EAAa3a,GAAyB,EAAb2a,GAAkB3a,EAAW7J,KAAKgD,SAASE,OAEpE,OAAO,CAKX,KAFA,GAAID,GAAI4G,EAED5G,GAAKuhB,GACZ,EACS6xB,GAAUr2C,KAAKgD,SAASC,GAAG0zC,QAE5B32C,KAAKgD,SAASC,GAAG0zC,OAAOoF,4BAA4B/7C,KAAKgD,SAASC,GAAIjD,KAG1E,IAAIiK,GAAUjK,KAAK4I,YAAY5I,KAAKgD,SAASC,GAE7CjD,MAAKu2C,eAAetsC,GAEhBlH,GAAWkH,GAEXA,EAAQlH,SAAQ,GAGhB/C,KAAKk1C,SAAWl1C,KAAKgD,SAASC,KAE9BjD,KAAKk1C,OAAS,MAGlBjyC,IAGJjD,KAAKw2C,YAaT3tB,EAAO0rB,MAAM1xC,UAAUE,QAAU,SAAUo5C,EAAiBC,GAEtC,OAAdp8C,KAAKE,MAAiBF,KAAK+0C,gBAEPrrC,SAApByyC,IAAiCA,GAAkB,GAC1CzyC,SAAT0yC,IAAsBA,GAAO,GAEjCp8C,KAAK01C,UAAUxN,SAASloC,KAAMm8C,EAAiBC,GAE/Cp8C,KAAK2sC,UAAUwP,GAEfn8C,KAAKk1C,OAAS,KACdl1C,KAAKiI,QAAU,KACfjI,KAAKg1C,gBAAiB,EAEjBoH,IAEGp8C,KAAK4B,QAEL5B,KAAK4B,OAAOgH,YAAY5I,MAG5BA,KAAKE,KAAO,KACZF,KAAK8L,QAAS,KAYtB1I,OAAOC,eAAewlB,EAAO0rB,MAAM1xC,UAAW,SAE1CS,IAAK,WAED,MAAOtD,MAAKm6C,QAAQ,UAAU,EAAMtxB,EAAO0rB,MAAM0B,iBAazD7yC,OAAOC,eAAewlB,EAAO0rB,MAAM1xC,UAAW,UAE1CS,IAAK,WAED,MAAOtD,MAAKgD,SAASE,UAiB7BE,OAAOC,eAAewlB,EAAO0rB,MAAM1xC,UAAW,SAE1CS,IAAK,WACD,MAAOulB,GAAOhoB,KAAK8/B,SAAS3gC,KAAKuB,WAGrCiC,IAAK,SAASC,GACVzD,KAAKuB,SAAWsnB,EAAOhoB,KAAKm7B,SAASv4B,MA2E7ColB,EAAOwzB,MAAQ,SAAUn8C,GAErB2oB,EAAO0rB,MAAM7uC,KAAK1F,KAAME,EAAM,KAAM,WAAW,GAS/CF,KAAKwG,OAAS,GAAIqiB,GAAOrmB,UAAU,EAAG,EAAGtC,EAAKyG,MAAOzG,EAAK0G,QAK1D5G,KAAKsb,OAAS,KAMdtb,KAAKs8C,cAAe,EAKpBt8C,KAAKsI,OAASpI,EAAKyG,MAKnB3G,KAAKuI,QAAUrI,EAAK0G,OAEpB5G,KAAKE,KAAKopC,MAAMoB,cAAc5M,IAAI99B,KAAKu8C,YAAav8C,OAIxD6oB,EAAOwzB,MAAMx5C,UAAYO,OAAOiF,OAAOwgB,EAAO0rB,MAAM1xC,WACpDgmB,EAAOwzB,MAAMx5C,UAAUC,YAAc+lB,EAAOwzB,MAQ5CxzB,EAAOwzB,MAAMx5C,UAAU6jC,KAAO,WAE1B1mC,KAAKsb,OAAS,GAAIuN,GAAOgc,OAAO7kC,KAAKE,KAAM,EAAG,EAAG,EAAGF,KAAKE,KAAKyG,MAAO3G,KAAKE,KAAK0G,QAE/E5G,KAAKE,KAAK2B,MAAM2G,SAASxI,MAEzBA,KAAKsb,OAAOorB,QAahB7d,EAAOwzB,MAAMx5C,UAAU05C,YAAc,WAEjCv8C,KAAKqF,EAAI,EACTrF,KAAKsF,EAAI,EAETtF,KAAKsb,OAAOwtB,SAchBjgB,EAAOwzB,MAAMx5C,UAAU25C,UAAY,SAAUn3C,EAAGC,EAAGqB,EAAOC,GAEtD5G,KAAKs8C,cAAe,EACpBt8C,KAAKsI,OAAS3B,EACd3G,KAAKuI,QAAU3B,EAEf5G,KAAKwG,OAAOw0B,MAAM31B,EAAGC,EAAGqB,EAAOC,GAE/B5G,KAAKqF,EAAIA,EACTrF,KAAKsF,EAAIA,EAELtF,KAAKsb,OAAO9U,QAGZxG,KAAKsb,OAAO9U,OAAOw0B,MAAM31B,EAAGC,EAAGzE,KAAK+G,IAAIjB,EAAO3G,KAAKE,KAAKyG,OAAQ9F,KAAK+G,IAAIhB,EAAQ5G,KAAKE,KAAK0G,SAGhG5G,KAAKE,KAAKupC,QAAQjB,oBAWtB3f,EAAOwzB,MAAMx5C,UAAUkF,OAAS,SAAUpB,EAAOC,GAIzC5G,KAAKs8C,eAED31C,EAAQ3G,KAAKsI,SAEb3B,EAAQ3G,KAAKsI,QAGb1B,EAAS5G,KAAKuI,UAEd3B,EAAS5G,KAAKuI,UAItBvI,KAAKwG,OAAOG,MAAQA,EACpB3G,KAAKwG,OAAOI,OAASA,EAErB5G,KAAKE,KAAKob,OAAOktB,mBAEjBxoC,KAAKE,KAAKupC,QAAQjB,oBAStB3f,EAAOwzB,MAAMx5C,UAAUonC,SAAW,WAG9BjqC,KAAK+C,SAAQ,GAAM,IAmBvB8lB,EAAOwzB,MAAMx5C,UAAUg8B,KAAO,SAAUnc,EAAQ2C,EAASo3B,EAAW5W,EAAYC,GAE5Dp8B,SAAZ2b,IAAyBA,EAAU,GACrB3b,SAAd+yC,IAA2BA,GAAY,GACxB/yC,SAAfm8B,IAA4BA,GAAa,GAC5Bn8B,SAAbo8B,IAA0BA,GAAW,GAEpC2W,GAsBD/5B,EAAO7c,YAEHggC,IAEKnjB,EAAOrd,EAAIqd,EAAOjgB,eAAekE,MAAS3G,KAAKwG,OAAOnB,EAEvDqd,EAAOrd,EAAIrF,KAAKwG,OAAO0yB,MAElBxW,EAAOrd,EAAIrF,KAAKwG,OAAO0yB,QAE5BxW,EAAOrd,EAAIrF,KAAKwG,OAAO2yB,OAI3B2M,IAEKpjB,EAAOpd,EAAIod,EAAOjgB,eAAemE,OAAU5G,KAAKwG,OAAOo1B,IAExDlZ,EAAOpd,EAAItF,KAAKwG,OAAOq1B,OAElBnZ,EAAOpd,EAAItF,KAAKwG,OAAOq1B,SAE5BnZ,EAAOpd,EAAItF,KAAKwG,OAAOo1B,QA1C3BiK,GAAcnjB,EAAOrd,EAAIggB,EAAUrlB,KAAKwG,OAAOnB,EAE/Cqd,EAAOrd,EAAIrF,KAAKwG,OAAO0yB,MAAQ7T,EAE1BwgB,GAAcnjB,EAAOrd,EAAIggB,EAAUrlB,KAAKwG,OAAO0yB,QAEpDxW,EAAOrd,EAAIrF,KAAKwG,OAAO2yB,KAAO9T,GAG9BygB,GAAYpjB,EAAOpd,EAAI+f,EAAUrlB,KAAKwG,OAAOo1B,IAE7ClZ,EAAOpd,EAAItF,KAAKwG,OAAOq1B,OAASxW,EAE3BygB,GAAYpjB,EAAOpd,EAAI+f,EAAUrlB,KAAKwG,OAAOq1B,SAElDnZ,EAAOpd,EAAItF,KAAKwG,OAAOo1B,IAAMvW,KAsCzCjiB,OAAOC,eAAewlB,EAAOwzB,MAAMx5C,UAAW,SAE1CS,IAAK,WACD,MAAOtD,MAAKwG,OAAOG,OAGvBnD,IAAK,SAAUC,GAEPA,EAAQzD,KAAKE,KAAKyG,QAElBlD,EAAQzD,KAAKE,KAAKyG,OAGtB3G,KAAKwG,OAAOG,MAAQlD,EACpBzD,KAAKsI,OAAS7E,EACdzD,KAAKs8C,cAAe,KAU5Bl5C,OAAOC,eAAewlB,EAAOwzB,MAAMx5C,UAAW,UAE1CS,IAAK,WACD,MAAOtD,MAAKwG,OAAOI,QAGvBpD,IAAK,SAAUC,GAEPA,EAAQzD,KAAKE,KAAK0G,SAElBnD,EAAQzD,KAAKE,KAAK0G,QAGtB5G,KAAKwG,OAAOI,OAASnD,EACrBzD,KAAKuI,QAAU9E,EACfzD,KAAKs8C,cAAe,KAW5Bl5C,OAAOC,eAAewlB,EAAOwzB,MAAMx5C,UAAW,WAE1CS,IAAK,WACD,MAAOtD,MAAKwG,OAAO21B,UAAYn8B,KAAKwG,OAAOnB,KAUnDjC,OAAOC,eAAewlB,EAAOwzB,MAAMx5C,UAAW,WAE1CS,IAAK,WACD,MAAOtD,MAAKwG,OAAO61B,WAAar8B,KAAKwG,OAAOlB,KAUpDlC,OAAOC,eAAewlB,EAAOwzB,MAAMx5C,UAAW,WAE1CS,IAAK,WAED,MAAItD,MAAKwG,OAAOnB,EAAI,EAETrF,KAAKE,KAAKioC,IAAIuU,QAAQ18C,KAAKwG,OAAOnB,EAAIrF,KAAKwG,OAAOG,MAAQ9F,KAAKq7B,IAAIl8B,KAAKwG,OAAOnB,IAI/ErF,KAAKE,KAAKioC,IAAIuU,QAAQ18C,KAAKwG,OAAOnB,EAAGrF,KAAKwG,OAAOG,UAYpEvD,OAAOC,eAAewlB,EAAOwzB,MAAMx5C,UAAW,WAE1CS,IAAK,WAED,MAAItD,MAAKwG,OAAOlB,EAAI,EAETtF,KAAKE,KAAKioC,IAAIuU,QAAQ18C,KAAKwG,OAAOlB,EAAItF,KAAKwG,OAAOI,OAAS/F,KAAKq7B,IAAIl8B,KAAKwG,OAAOlB,IAIhFtF,KAAKE,KAAKioC,IAAIuU,QAAQ18C,KAAKwG,OAAOlB,EAAGtF,KAAKwG,OAAOI,WA+BpEiiB,EAAO8zB,KAAO,SAAUh2C,EAAOC,EAAQL,EAAU3E,EAAQ0nC,EAAOtwB,EAAaM,EAAWsjC,GAyZpF,MAnZA58C,MAAKiW,GAAK4S,EAAOmJ,MAAMjuB,KAAK/D,MAAQ,EAKpCA,KAAKsyC,OAAS,KAKdtyC,KAAK48C,cAAgBA,EAMrB58C,KAAK4B,OAAS,GAWd5B,KAAK2G,MAAQ,IAWb3G,KAAK4G,OAAS,IASd5G,KAAKqG,WAAa,EAMlBrG,KAAKsI,OAAS,IAMdtI,KAAKuI,QAAU,IAMfvI,KAAKgZ,aAAc,EAMnBhZ,KAAKsZ,WAAY,EAMjBtZ,KAAKkZ,uBAAwB,EAQ7BlZ,KAAKmZ,mBAAoB,EAMzBnZ,KAAKuG,SAAW,KAMhBvG,KAAKktC,WAAarkB,EAAOoJ,KAKzBjyB,KAAKspC,MAAQ,KAMbtpC,KAAK8rC,UAAW,EAMhB9rC,KAAK68C,WAAY,EAMjB78C,KAAK88C,IAAM,KAKX98C,KAAK89B,IAAM,KAKX99B,KAAKipC,KAAO,KAKZjpC,KAAKkpC,MAAQ,KAKblpC,KAAKmpC,MAAQ,KAKbnpC,KAAKopC,KAAO,KAKZppC,KAAKsoC,KAAO,KAKZtoC,KAAK+8C,IAAM,KAKX/8C,KAAKqB,MAAQ,KAKbrB,KAAKqpC,MAAQ,KAKbrpC,KAAK6B,MAAQ,KAKb7B,KAAKgoC,KAAO,KAKZhoC,KAAKupC,OAAS,KAKdvpC,KAAKyE,MAAQ,KAKbzE,KAAKypC,QAAU,KAKfzpC,KAAK4xC,QAAU,KAKf5xC,KAAKmoC,IAAM,KAKXnoC,KAAKyzC,OAAS5qB,EAAOm0B,OAKrBh9C,KAAKsb,OAAS,KAKdtb,KAAK4Q,OAAS,KAKd5Q,KAAKsN,QAAU,KAKftN,KAAK4sC,MAAQ,KAKb5sC,KAAKwpC,UAAY,KAKjBxpC,KAAKqI,OAAS,KASdrI,KAAKi9C,YAAa,EAOlBj9C,KAAKk9C,UAAW,EAOhBl9C,KAAKm9C,aAAc,EAOnBn9C,KAAKo9C,UAAY,EAKjBp9C,KAAKwrC,QAAU,KAKfxrC,KAAK0rC,SAAW,KAKhB1rC,KAAKq9C,OAAS,KAKdr9C,KAAKs9C,QAAU,KAMft9C,KAAKu9C,SAAU,EAMfv9C,KAAKw9C,aAAc,EAQnBx9C,KAAKy9C,gBAAkB,EAOvBz9C,KAAK09C,iBAAmB,EAMxB19C,KAAK29C,WAAa,EAMlB39C,KAAK49C,WAAa,EAMlB59C,KAAK69C,WAAa,EAMlB79C,KAAK+sC,YAAa,EAQlB/sC,KAAK89C,mBAAqB,GAAIj1B,GAAOuc,OAKrCplC,KAAK+9C,mBAAoB,EAMzB/9C,KAAKg+C,qBAAuB,EAGH,IAArBrnB,UAAUzzB,QAAwC,gBAAjByzB,WAAU,GAE3C32B,KAAKuyC,YAAY5b,UAAU,KAI3B32B,KAAKsyC,QAAW2L,aAAa,GAER,mBAAVt3C,KAEP3G,KAAKsI,OAAS3B,GAGI,mBAAXC,KAEP5G,KAAKuI,QAAU3B,GAGK,mBAAbL,KAEPvG,KAAKktC,WAAa3mC,GAGA,mBAAX3E,KAEP5B,KAAK4B,OAASA,GAGS,mBAAhBoX,KAEPhZ,KAAKgZ,YAAcA,GAGE,mBAAdM,KAEPtZ,KAAKsZ,UAAYA,GAGrBtZ,KAAKmoC,IAAM,GAAItf,GAAOq1B,sBAAsBnO,KAAKoO,MAAQt9C,KAAKs3B,UAAUrQ,aAExE9nB,KAAKspC,MAAQ,GAAIzgB,GAAOqhB,aAAalqC,KAAMspC,IAG/CtpC,KAAKyzC,OAAO2K,UAAUp+C,KAAK0mC,KAAM1mC,MAE1BA,MAIX6oB,EAAO8zB,KAAK95C,WAQR0vC,YAAa,SAAUD,GAEnBtyC,KAAKsyC,OAASA,EAEgB5oC,SAA1B4oC,EAAoB,cAEpBtyC,KAAKsyC,OAAO2L,aAAc,GAG1B3L,EAAc,QAEdtyC,KAAKsI,OAASgqC,EAAc,OAG5BA,EAAe,SAEftyC,KAAKuI,QAAU+pC,EAAe,QAG9BA,EAAiB,WAEjBtyC,KAAKktC,WAAaoF,EAAiB,UAGnCA,EAAe,SAEftyC,KAAK4B,OAAS0wC,EAAe,QAGH5oC,SAA1B4oC,EAAoB,cAEpBtyC,KAAKgZ,YAAcs5B,EAAoB,aAGf5oC,SAAxB4oC,EAAkB,YAElBtyC,KAAKsZ,UAAYg5B,EAAkB,WAGnCA,EAAmB,aAEnBtyC,KAAKqG,WAAaisC,EAAmB,YAGD5oC,SAApC4oC,EAA8B,wBAE9BtyC,KAAKkZ,sBAAwBo5B,EAA8B,uBAG3DA,EAAsB,gBAEtBtyC,KAAK48C,cAAgBtK,EAAsB,cAG/C,IAAI+L,KAAStO,KAAKoO,MAAQt9C,KAAKs3B,UAAUrQ,WAErCwqB,GAAa,OAEb+L,EAAO/L,EAAa,MAGxBtyC,KAAKmoC,IAAM,GAAItf,GAAOq1B,oBAAoBG,EAE1C,IAAI/U,GAAQ,IAERgJ,GAAc,QAEdhJ,EAAQgJ,EAAc,OAG1BtyC,KAAKspC,MAAQ,GAAIzgB,GAAOqhB,aAAalqC,KAAMspC,IAU/C5C,KAAM,WAEE1mC,KAAK8rC,WAKT9rC,KAAKwrC,QAAU,GAAI3iB,GAAOuc,OAC1BplC,KAAK0rC,SAAW,GAAI7iB,GAAOuc,OAC3BplC,KAAKq9C,OAAS,GAAIx0B,GAAOuc,OACzBplC,KAAKs9C,QAAU,GAAIz0B,GAAOuc,OAE1BplC,KAAK8rC,UAAW,EAEhB7rC,KAAKC,KAAOF,KAEZA,KAAKsoC,KAAOzf,EAAOhoB,KAEnBb,KAAKqB,MAAQ,GAAIwnB,GAAOy1B,aAAat+C,KAAMA,KAAKsI,OAAQtI,KAAKuI,SAC7DvI,KAAK6B,MAAQ,GAAIgnB,GAAOopB,MAAMjyC,MAE9BA,KAAKu+C,gBAELv+C,KAAKyE,MAAQ,GAAIokB,GAAOwzB,MAAMr8C,MAC9BA,KAAK89B,IAAM,GAAIjV,GAAO21B,kBAAkBx+C,MACxCA,KAAKipC,KAAO,GAAIpgB,GAAO41B,kBAAkBz+C,MACzCA,KAAKkpC,MAAQ,GAAIrgB,GAAO61B,MAAM1+C,MAC9BA,KAAKopC,KAAO,GAAIvgB,GAAO81B,OAAO3+C,MAC9BA,KAAKgoC,KAAO,GAAInf,GAAO+1B,KAAK5+C,MAC5BA,KAAKupC,OAAS,GAAI1gB,GAAOg2B,aAAa7+C,MACtCA,KAAKmpC,MAAQ,GAAItgB,GAAOi2B,MAAM9+C,MAC9BA,KAAKqpC,MAAQ,GAAIxgB,GAAOk2B,aAAa/+C,MACrCA,KAAKypC,QAAU,GAAI5gB,GAAO8rB,QAAQ30C,KAAMA,KAAK48C,eAC7C58C,KAAKwpC,UAAY,GAAI3gB,GAAOm2B,UAAUh/C,MACtCA,KAAKqI,OAAS,GAAIwgB,GAAOo2B,OAAOj/C,MAChCA,KAAK4xC,QAAU,GAAI/oB,GAAO8oB,cAAc3xC,MACxCA,KAAK+8C,IAAM,GAAIl0B,GAAOq2B,IAAIl/C,MAE1BA,KAAKgoC,KAAKtB,OACV1mC,KAAK6B,MAAM6kC,OACX1mC,KAAKyE,MAAMiiC,OACX1mC,KAAKqB,MAAMqlC,OACX1mC,KAAKmpC,MAAMzC,OACX1mC,KAAKqpC,MAAM3C,OACX1mC,KAAKspC,MAAM5C,OAEP1mC,KAAKsyC,OAAoB,aAEzBtyC,KAAK4sC,MAAQ,GAAI/jB,GAAO0O,MAAM4nB,MAAMn/C,MACpCA,KAAK4sC,MAAMlG,QAIX1mC,KAAK4sC,OAAUzmC,UAAW,aAAgByhC,OAAQ,aAAgBkB,MAAO,cAG7E9oC,KAAKo/C,kBAELp/C,KAAK68C,WAAY,EAEb78C,KAAKsyC,QAAUtyC,KAAKsyC,OAAwB,gBAE5CtyC,KAAK88C,IAAM,GAAIj0B,GAAOw2B,sBAAsBr/C,KAAMA,KAAKsyC,OAAwB,iBAI/EtyC,KAAK88C,IAAM,GAAIj0B,GAAOw2B,sBAAsBr/C,MAAM,GAGtDA,KAAK+sC,YAAa,EAEdl6B,OAAc,SAETA,OAAqB,cAAMA,OAAqB,eAAMA,OAAqB,aAAEysC,YAE9EzsC,OAAO0sC,QAIfv/C,KAAK88C,IAAIzxC,UAUb+zC,gBAAiB,WAEb,IAAIvsC,OAAqB,eAAKA,OAAqB,aAAE2sC,WAArD,CAKA,GAAIC,GAAI52B,EAAOxoB,QACX6a,EAAI,SACJxW,EAAI,aACJE,EAAI,CAkBR,IAhBI5E,KAAKktC,aAAerkB,EAAOsJ,OAE3BjX,EAAI,QACJtW,KAEK5E,KAAKktC,YAAcrkB,EAAOuJ,WAE/BlX,EAAI,YAGJlb,KAAKyzC,OAAOiM,WAEZh7C,EAAI,WACJE,KAGA5E,KAAKyzC,OAAOkM,OAChB,CAWI,IAAK,GAVDnpB,IACA,oBAAsBipB,EAAI,gBAAkBvkC,EAAI,MAAQxW,EAAI,wCAC5D,sBACA,sBACA,uCACA,sBACA,sBACA,uBAGKzB,EAAI,EAAO,EAAJA,EAAOA,IAEX2B,EAAJ3B,EAEAuzB,EAAKzyB,KAAK,oCAIVyyB,EAAKzyB,KAAK,mCAIlB+O,SAAQC,IAAI9L,MAAM6L,QAAS0jB,OAEtB3jB,QAAgB,SAErBC,QAAQC,IAAI,WAAa0sC,EAAI,cAAgBx/C,KAAKI,QAAU,MAAQ6a,EAAI,MAAQxW,EAAI,yBAW5F65C,cAAe,WAoBX,GAlBIv+C,KAAKsyC,OAAe,OAEpBtyC,KAAK4Q,OAAS5Q,KAAKsyC,OAAe,OAIlCtyC,KAAK4Q,OAASiY,EAAOC,OAAOzgB,OAAOrI,KAAMA,KAAK2G,MAAO3G,KAAK4G,OAAQ5G,KAAKsyC,OAAiB,UAAG,GAG3FtyC,KAAKsyC,OAAoB,YAEzBtyC,KAAK4Q,OAAOgL,MAAQ5b,KAAKsyC,OAAoB,YAI7CtyC,KAAK4Q,OAAOgL,MAAM,uBAAyB,4BAG3C5b,KAAKktC,aAAerkB,EAAOuJ,UAAYpyB,KAAKktC,aAAerkB,EAAOqJ,QAAWlyB,KAAKktC,aAAerkB,EAAOoJ,OAASjyB,KAAKyzC,OAAOmM,MACjI,CACI,IAAI5/C,KAAKyzC,OAAO7iC,OAWZ,KAAM,IAAI9H,OAAM,iEARhB9I,MAAKktC,WAAarkB,EAAOqJ,OAEzBlyB,KAAKuG,SAAW,GAAItG,MAAK0oB,eAAe3oB,MAExCA,KAAKsN,QAAUtN,KAAKuG,SAAS+G,YAUjCtN,MAAKktC,WAAarkB,EAAOsJ,MAEzBnyB,KAAKuG,SAAW,GAAItG,MAAK6Y,cAAc9Y,MAEvCA,KAAKsN,QAAU,KAEftN,KAAK4Q,OAAOwiC,iBAAiB,mBAAoBpzC,KAAK4a,YAAYwb,KAAKp2B,OAAO,GAC9EA,KAAK4Q,OAAOwiC,iBAAiB,uBAAwBpzC,KAAK6/C,gBAAgBzpB,KAAKp2B,OAAO,EAGtFA,MAAKyzC,OAAOqM,WAEZ9/C,KAAK4Q,OAAOsY,aAAgBlpB,KAAKktC,aAAerkB,EAAOqJ,QAAU,GAAO,GAGxElyB,KAAKktC,aAAerkB,EAAOuJ,WAE3BpyB,KAAK6B,MAAMk+C,SAAW//C,KAAKsZ,UAE3BuP,EAAOC,OAAOk3B,SAAShgD,KAAK4Q,OAAQ5Q,KAAK4B,QAAQ,GACjDinB,EAAOC,OAAO8pB,eAAe5yC,KAAK4Q,UAY1CgK,YAAa,SAAUs4B,GAEnBA,EAAM+M,iBAENjgD,KAAKuG,SAASqU,aAAc,GAUhCilC,gBAAiB,WAEb7/C,KAAKuG,SAAS6T,cAEdpa,KAAKkpC,MAAMgX,kBAEXlgD,KAAKuG,SAASqU,aAAc,GAWhCgtB,OAAQ,SAAUI,GAId,GAFAhoC,KAAKgoC,KAAKJ,OAAOI,GAEbhoC,KAAK+sC,WASL,MAPA/sC,MAAKmgD,YAAYngD,KAAKgoC,KAAKoY,gBAG3BpgD,KAAKqgD,aAAargD,KAAKgoC,KAAKsY,WAAatgD,KAAKgoC,KAAKuY,iBAEnDvgD,KAAK+sC,YAAa,EAMtB,IAAI/sC,KAAK69C,WAAa,IAAM79C,KAAK+9C,kBAGzB/9C,KAAKgoC,KAAKA,KAAOhoC,KAAKg+C,uBAGtBh+C,KAAKg+C,qBAAuBh+C,KAAKgoC,KAAKA,KAAO,IAG7ChoC,KAAK89C,mBAAmB5V,YAI5BloC,KAAK29C,WAAa,EAClB39C,KAAK69C,WAAa,EAGlB79C,KAAKqgD,aAAargD,KAAKgoC,KAAKsY,WAAatgD,KAAKgoC,KAAKuY,gBAGvD,CAEI,GAAIC,GAAkC,IAAvBxgD,KAAKgoC,KAAKsY,WAAsBtgD,KAAKgoC,KAAKuY,UAGzDvgD,MAAK29C,YAAc98C,KAAK+G,IAAI/G,KAAKq9B,IAAe,EAAXsiB,EAAcxgD,KAAKgoC,KAAKyY,SAAU,EAIvE,IAAIpiC,GAAQ,CASZ,KAPAre,KAAK09C,iBAAmB78C,KAAKq1B,MAAMl2B,KAAK29C,WAAa6C,GAEjDxgD,KAAK+9C,oBAEL/9C,KAAK09C,iBAAmB78C,KAAKq9B,IAAI,EAAGl+B,KAAK09C,mBAGtC19C,KAAK29C,YAAc6C,IAEtBxgD,KAAK29C,YAAc6C,EACnBxgD,KAAKy9C,gBAAkBp/B,EAEvBre,KAAKmgD,YAAYngD,KAAKgoC,KAAKoY,gBAE3B/hC,KAEIre,KAAK+9C,mBAA+B,IAAV1/B,IAM1Bre,KAAKgoC,KAAKpf,SAKdvK,GAAQre,KAAK49C,WAEb59C,KAAK69C,aAEAx/B,EAAQre,KAAK49C,aAGlB59C,KAAK69C,WAAa,GAGtB79C,KAAK49C,WAAav/B,EAGlBre,KAAKqgD,aAAargD,KAAK29C,WAAa6C,KAY5CL,YAAa,SAAUO,GAEd1gD,KAAKu9C,SAAYv9C,KAAKm9C,aA8BvBn9C,KAAKqB,MAAM2oC,cACXhqC,KAAKspC,MAAMU,cACXhqC,KAAK4sC,MAAMzmC,cA9BPnG,KAAKk9C,WAELl9C,KAAKm9C,aAAc,GAGvBn9C,KAAKqB,MAAM8E,YACXnG,KAAK4sC,MAAMzmC,YACXnG,KAAKsb,OAAOnV,YACZnG,KAAKypC,QAAQtjC,YACbnG,KAAKspC,MAAMnjC,UAAUu6C,GACrB1gD,KAAK4xC,QAAQzrC,UAAUu6C,GACvB1gD,KAAK6B,MAAMsE,YAEXnG,KAAKspC,MAAM1B,SACX5nC,KAAK6B,MAAM+lC,SACX5nC,KAAKupC,OAAO3B,SACZ5nC,KAAKqpC,MAAMzB,SACX5nC,KAAKmpC,MAAMvB,SACX5nC,KAAKypC,QAAQ7B,SACb5nC,KAAKwpC,UAAU5B,SACf5nC,KAAK4xC,QAAQhK,SAEb5nC,KAAK6B,MAAMmwC,aACXhyC,KAAK4xC,QAAQI,cAUjBhyC,KAAK6B,MAAM0C,mBAmBf87C,aAAc,SAAUpT,GAEhBjtC,KAAKi9C,aAKTj9C,KAAKspC,MAAMO,UAAUoD,GAEjBjtC,KAAKktC,aAAerkB,EAAOuJ,WAE3BpyB,KAAKuG,SAASO,OAAO9G,KAAK6B,OAE1B7B,KAAK4xC,QAAQ9qC,OAAOmmC,GAEpBjtC,KAAKspC,MAAMxiC,OAAOmmC,IAGtBjtC,KAAK4xC,QAAQF,WAAWzE,KAU5B0T,WAAY,WAER3gD,KAAKk9C,UAAW,EAChBl9C,KAAKm9C,aAAc,EACnBn9C,KAAKo9C,UAAY,GASrBwD,YAAa,WAET5gD,KAAKk9C,UAAW,EAChBl9C,KAAKm9C,aAAc,GAUvB0D,KAAM,WAEF7gD,KAAKm9C,aAAc,EACnBn9C,KAAKo9C,aAcTr6C,QAAS,WAEL/C,KAAK88C,IAAI7xC,OAETjL,KAAKspC,MAAMvmC,UACX/C,KAAKqpC,MAAMtmC,UACX/C,KAAKqB,MAAM0B,UACX/C,KAAK6B,MAAMkB,UACX/C,KAAKmpC,MAAMpmC,UACX/C,KAAKypC,QAAQ1mC,UACb/C,KAAK4xC,QAAQ7uC,UAEb/C,KAAKspC,MAAQ,KACbtpC,KAAKqpC,MAAQ,KACbrpC,KAAKqB,MAAQ,KACbrB,KAAK6B,MAAQ,KACb7B,KAAKmpC,MAAQ,KACbnpC,KAAKypC,QAAU,KACfzpC,KAAK4xC,QAAU,KAEf5xC,KAAKkpC,MAAQ,KACblpC,KAAKopC,KAAO,KACZppC,KAAKgoC,KAAO,KACZhoC,KAAKyE,MAAQ,KAEbzE,KAAK8rC,UAAW,EAEhB9rC,KAAKuG,SAASxD,SAAQ,GAEtB8lB,EAAOC,OAAOg4B,cAAc9gD,KAAK4Q,QAEjC3Q,KAAK8Y,gBAAkB,KAEvB8P,EAAOmJ,MAAMhyB,KAAKiW,IAAM,MAW5Bg+B,WAAY,SAAUf,GAGblzC,KAAKu9C,UAENv9C,KAAKu9C,SAAU,EAEfv9C,KAAKgoC,KAAKiM,aAENj0C,KAAKqpC,MAAM0X,aAEX/gD,KAAKqpC,MAAM2X,UAGfhhD,KAAKwrC,QAAQtD,SAASgL,GAGlBlzC,KAAKyzC,OAAOwN,SAAWjhD,KAAKyzC,OAAOyN,MAEnClhD,KAAKi9C,YAAa,KAa9B/I,YAAa,SAAUhB,GAGflzC,KAAKu9C,UAAYv9C,KAAKw9C,cAEtBx9C,KAAKu9C,SAAU,EAEfv9C,KAAKgoC,KAAKkM,cAEVl0C,KAAKmpC,MAAML,QAEP9oC,KAAKqpC,MAAM0X,aAEX/gD,KAAKqpC,MAAM8X,YAGfnhD,KAAK0rC,SAASxD,SAASgL,GAGnBlzC,KAAKyzC,OAAOwN,SAAWjhD,KAAKyzC,OAAOyN,MAEnClhD,KAAKi9C,YAAa,KAa9BlJ,UAAW,SAAUb,GAEjBlzC,KAAKq9C,OAAOnV,SAASgL,GAEhBlzC,KAAK6B,MAAMqwC,yBAEZlyC,KAAKi0C,WAAWf,IAYxBc,UAAW,SAAUd,GAEjBlzC,KAAKs9C,QAAQpV,SAASgL,GAEjBlzC,KAAK6B,MAAMqwC,yBAEZlyC,KAAKk0C,YAAYhB,KAO7BrqB,EAAO8zB,KAAK95C,UAAUC,YAAc+lB,EAAO8zB,KAQ3Cv5C,OAAOC,eAAewlB,EAAO8zB,KAAK95C,UAAW,UAEzCS,IAAK,WACD,MAAOtD,MAAKu9C,SAGhB/5C,IAAK,SAAUC,GAEPA,KAAU,GAENzD,KAAKu9C,WAAY,IAEjBv9C,KAAKu9C,SAAU,EACfv9C,KAAKqpC,MAAM2X,UACXhhD,KAAKgoC,KAAKiM,aACVj0C,KAAKwrC,QAAQtD,SAASloC,OAE1BA,KAAKw9C,aAAc,IAIfx9C,KAAKu9C,UAELv9C,KAAKu9C,SAAU,EACfv9C,KAAKmpC,MAAML,QACX9oC,KAAKqpC,MAAM8X,YACXnhD,KAAKgoC,KAAKkM,cACVl0C,KAAK0rC,SAASxD,SAASloC,OAE3BA,KAAKw9C,aAAc,MA6B/B30B,EAAOi2B,MAAQ,SAAU5+C,GAKrBF,KAAKE,KAAOA,EAMZF,KAAKohD,UAAY,KAMjBphD,KAAKqhD,WAAa,KAQlBrhD,KAAKshD,iBAMLthD,KAAKuhD,uBAAyB,KAM9BvhD,KAAKwhD,8BAAgC,KAMrCxhD,KAAKyhD,SAAW,EAShBzhD,KAAK0hD,SAAU,EAMf1hD,KAAK2hD,mBAAqB94B,EAAOi2B,MAAM8C,oBAMvC5hD,KAAKmB,SAAW,KAKhBnB,KAAK6hD,MAAQ,KAOb7hD,KAAK8hD,OAAS,KAKd9hD,KAAKqB,MAAQ,KAMbrB,KAAK+hD,YAAc,GAMnB/hD,KAAKgiD,QAAU,IAMfhiD,KAAKiiD,cAAgB,IAMrBjiD,KAAKkiD,SAAW,IAMhBliD,KAAKmiD,gBAAkB,IAMvBniD,KAAKoiD,iBAAmB,IASxBpiD,KAAKqiD,sBAAuB,EAM5BriD,KAAKsiD,WAAa,IAQlBtiD,KAAKuiD,YAAc,IAKnBviD,KAAKwiD,SAAW,KAKhBxiD,KAAKyiD,SAAW,KAKhBziD,KAAK0iD,SAAW,KAKhB1iD,KAAK2iD,SAAW,KAKhB3iD,KAAK4iD,SAAW,KAKhB5iD,KAAK6iD,SAAW,KAKhB7iD,KAAK8iD,SAAW,KAKhB9iD,KAAK+iD,SAAW,KAKhB/iD,KAAKgjD,SAAW,KAKhBhjD,KAAKijD,UAAY,KASjBjjD,KAAKkjD,YASLljD,KAAKmjD,cAAgB,KAOrBnjD,KAAKojD,aAAe,KAUpBpjD,KAAKgwC,MAAQ,KAObhwC,KAAKqjD,SAAW,KAUhBrjD,KAAKsjD,MAAQ,KAUbtjD,KAAKujD,UAAY,KAOjBvjD,KAAKwjD,QAAU,KAQfxjD,KAAKyjD,aAAc,EAMnBzjD,KAAK0jD,OAAS,KAMd1jD,KAAK2jD,KAAO,KAMZ3jD,KAAK4jD,MAAQ,KAMb5jD,KAAK6jD,OAAS,KAQd7jD,KAAK8jD,cAAgB,EAMrB9jD,KAAK+jD,iBAAmB,GAAIl7B,GAAOoxB,SAMnCj6C,KAAKgkD,YAAc,GAAIn7B,GAAOznB,MAM9BpB,KAAKikD,aAAe,EAMpBjkD,KAAKkkD,aAAe,KAMpBlkD,KAAKmkD,GAAK,EAMVnkD,KAAKokD,GAAK,GAQdv7B,EAAOi2B,MAAMuF,sBAAwB,EAMrCx7B,EAAOi2B,MAAMwF,sBAAwB,EAMrCz7B,EAAOi2B,MAAM8C,oBAAsB,EAOnC/4B,EAAOi2B,MAAMyF,aAAe,GAE5B17B,EAAOi2B,MAAMj8C,WAQT6jC,KAAM,WAEF1mC,KAAKojD,aAAe,GAAIv6B,GAAO27B,QAAQxkD,KAAKE,KAAM,EAAG2oB,EAAO47B,YAAYC,QACxE1kD,KAAK2kD,aACL3kD,KAAK2kD,aAEL3kD,KAAKgwC,MAAQ,GAAInnB,GAAO+7B,MAAM5kD,KAAKE,MACnCF,KAAKsjD,MAAQ,GAAIz6B,GAAOg8B,MAAM7kD,KAAKE,MACnCF,KAAKujD,UAAY,GAAI16B,GAAOi8B,UAAU9kD,KAAKE,MAEvC2oB,EAAOk8B,WAEP/kD,KAAKqjD,SAAW,GAAIx6B,GAAOk8B,SAAS/kD,KAAKE,OAGzC2oB,EAAOm8B,UAEPhlD,KAAKwjD,QAAU,GAAI36B,GAAOm8B,QAAQhlD,KAAKE,OAG3CF,KAAK0jD,OAAS,GAAI76B,GAAOuc,OACzBplC,KAAK2jD,KAAO,GAAI96B,GAAOuc,OACvBplC,KAAK4jD,MAAQ,GAAI/6B,GAAOuc,OACxBplC,KAAK6jD,OAAS,GAAIh7B,GAAOuc,OAEzBplC,KAAKqB,MAAQ,GAAIwnB,GAAOznB,MAAM,EAAG,GACjCpB,KAAK6hD,MAAQ,GAAIh5B,GAAOznB,MACxBpB,KAAKmB,SAAW,GAAI0nB,GAAOznB,MAC3BpB,KAAKkkD,aAAe,GAAIr7B,GAAOznB,MAE/BpB,KAAK8hD,OAAS,GAAIj5B,GAAO2R,OAAO,EAAG,EAAG,IAEtCx6B,KAAKmjD,cAAgBnjD,KAAKojD,aAE1BpjD,KAAKohD,UAAYnhD,KAAK4Q,WAAWxI,OAAOrI,KAAM,EAAG,GACjDA,KAAKqhD,WAAarhD,KAAKohD,UAAUtwC,WAAW,MAE5C9Q,KAAKgwC,MAAM3kC,QACXrL,KAAKsjD,MAAMj4C,QACXrL,KAAKujD,UAAUl4C,QACfrL,KAAKojD,aAAa7V,QAAS,EAEvBvtC,KAAKqjD,UAELrjD,KAAKqjD,SAASh4C,OAGlB,IAAI6jC,GAAQlvC,IAEZA,MAAKilD,mBAAqB,SAAU/R,GAChChE,EAAMgW,kBAAkBhS,IAG5BlzC,KAAKE,KAAK0Q,OAAOwiC,iBAAiB,QAASpzC,KAAKilD,oBAAoB,IASxEliD,QAAS,WAEL/C,KAAKgwC,MAAM/kC,OACXjL,KAAKsjD,MAAMr4C,OACXjL,KAAKujD,UAAUt4C,OAEXjL,KAAKqjD,UAELrjD,KAAKqjD,SAASp4C,OAGdjL,KAAKwjD,SAELxjD,KAAKwjD,QAAQv4C,OAGjBjL,KAAKshD,iBAELrhD,KAAK4Q,WAAWI,OAAOjR,MAEvBA,KAAKE,KAAK0Q,OAAO0jC,oBAAoB,QAASt0C,KAAKilD,qBA0BvDE,+BAAgC,SAAU5L,EAAUjsC,GAEhDtN,KAAKuhD,uBAAyBhI,EAC9Bv5C,KAAKwhD,8BAAgCl0C,GAuBzC83C,gBAAiB,SAAU7L,EAAUjsC,GAEjCtN,KAAKshD,cAAcv9C,MAAOw1C,SAAUA,EAAUjsC,QAASA,KAW3D+3C,mBAAoB,SAAU9L,EAAUjsC,GAIpC,IAFA,GAAIrK,GAAIjD,KAAKshD,cAAcp+C,OAEpBD,KAEH,GAAIjD,KAAKshD,cAAcr+C,GAAGs2C,WAAaA,GAAYv5C,KAAKshD,cAAcr+C,GAAGqK,UAAYA,EAGjF,WADAtN,MAAKshD,cAAcz4C,OAAO5F,EAAG,IAezC0hD,WAAY,WAER,GAAI3kD,KAAKkjD,SAAShgD,QAAU2lB,EAAOi2B,MAAMyF,aAGrC,MADAzxC,SAAQwkB,KAAK,6CAA+CzO,EAAOi2B,MAAMyF,aAAe,sBACjF,IAGX,IAAItuC,GAAKjW,KAAKkjD,SAAShgD,OAAS,EAC5B4tC,EAAU,GAAIjoB,GAAO27B,QAAQxkD,KAAKE,KAAM+V,EAAI4S,EAAO47B,YAAYa,MAKnE,OAHAtlD,MAAKkjD,SAASn/C,KAAK+sC,GACnB9wC,KAAK,UAAYiW,GAAM66B,EAEhBA,GAUXlJ,OAAQ,WAOJ,GALI5nC,KAAKqjD,UAELrjD,KAAKqjD,SAASzb,SAGd5nC,KAAKyhD,SAAW,GAAKzhD,KAAKikD,aAAejkD,KAAKyhD,SAG9C,WADAzhD,MAAKikD,cAITjkD,MAAK6hD,MAAMx8C,EAAIrF,KAAKmB,SAASkE,EAAIrF,KAAKkkD,aAAa7+C,EACnDrF,KAAK6hD,MAAMv8C,EAAItF,KAAKmB,SAASmE,EAAItF,KAAKkkD,aAAa5+C,EAEnDtF,KAAKkkD,aAAajpB,SAASj7B,KAAKmB,UAChCnB,KAAKojD,aAAaxb,SAEd5nC,KAAKwjD,SAAWxjD,KAAKwjD,QAAQjW,QAE7BvtC,KAAKwjD,QAAQ5b,QAGjB,KAAK,GAAI3kC,GAAI,EAAGA,EAAIjD,KAAKkjD,SAAShgD,OAAQD,IAEtCjD,KAAKkjD,SAASjgD,GAAG2kC,QAGrB5nC,MAAKikD,aAAe,GAexBnb,MAAO,SAAUyc,GAEb,GAAKvlD,KAAKE,KAAK4rC,WAAY9rC,KAAKyjD,YAAhC,CAKa/5C,SAAT67C,IAAsBA,GAAO,GAEjCvlD,KAAKojD,aAAata,QAEd9oC,KAAKqjD,UAELrjD,KAAKqjD,SAASva,MAAMyc,GAGpBvlD,KAAKwjD,SAELxjD,KAAKwjD,QAAQ1a,OAGjB,KAAK,GAAI7lC,GAAI,EAAGA,EAAIjD,KAAKkjD,SAAShgD,OAAQD,IAEtCjD,KAAKkjD,SAASjgD,GAAG6lC,OAGiB,UAAlC9oC,KAAKE,KAAK0Q,OAAOgL,MAAMs5B,SAEvBl1C,KAAKE,KAAK0Q,OAAOgL,MAAMs5B,OAAS,WAGhCqQ,IAEAvlD,KAAK0jD,OAAOzU,UACZjvC,KAAK2jD,KAAK1U,UACVjvC,KAAK4jD,MAAM3U,UACXjvC,KAAK6jD,OAAO5U,UACZjvC,KAAK0jD,OAAS,GAAI76B,GAAOuc,OACzBplC,KAAK2jD,KAAO,GAAI96B,GAAOuc,OACvBplC,KAAK4jD,MAAQ,GAAI/6B,GAAOuc,OACxBplC,KAAK6jD,OAAS,GAAIh7B,GAAOuc,OACzBplC,KAAKshD,kBAGTthD,KAAKikD,aAAe,IAWxBuB,WAAY,SAAUngD,EAAGC,GAErBtF,KAAKkkD,aAAalpB,MAAM31B,EAAGC,GAC3BtF,KAAK6hD,MAAM7mB,MAAM,EAAG,IAaxByqB,aAAc,SAAUvS,GAEpB,GAAIlzC,KAAK+hD,aAAe,GAAK/hD,KAAK0lD,oBAAoB1lD,KAAK+hD,cAAgB/hD,KAAK+hD,YAE5E,MAAO,KAGX,KAAK/hD,KAAKwiD,SAASjV,OAEf,MAAOvtC,MAAKwiD,SAASn3C,MAAM6nC,EAG/B,KAAKlzC,KAAKyiD,SAASlV,OAEf,MAAOvtC,MAAKyiD,SAASp3C,MAAM6nC,EAG/B,KAAK,GAAIjwC,GAAI,EAAGA,EAAIjD,KAAKkjD,SAAShgD,OAAQD,IAC1C,CACI,GAAI6tC,GAAU9wC,KAAKkjD,SAASjgD,EAE5B,KAAK6tC,EAAQvD,OAET,MAAOuD,GAAQzlC,MAAM6nC,GAI7B,MAAO,OAaXyS,cAAe,SAAUzS,GAErB,GAAIlzC,KAAKwiD,SAASjV,QAAUvtC,KAAKwiD,SAASoD,aAAe1S,EAAM0S,WAE3D,MAAO5lD,MAAKwiD,SAASqD,KAAK3S,EAG9B,IAAIlzC,KAAKyiD,SAASlV,QAAUvtC,KAAKyiD,SAASmD,aAAe1S,EAAM0S,WAE3D,MAAO5lD,MAAKyiD,SAASoD,KAAK3S,EAG9B,KAAK,GAAIjwC,GAAI,EAAGA,EAAIjD,KAAKkjD,SAAShgD,OAAQD,IAC1C,CACI,GAAI6tC,GAAU9wC,KAAKkjD,SAASjgD,EAE5B,IAAI6tC,EAAQvD,QAAUuD,EAAQ8U,aAAe1S,EAAM0S,WAE/C,MAAO9U,GAAQ+U,KAAK3S,GAI5B,MAAO,OAYX4S,YAAa,SAAU5S,GAEnB,GAAIlzC,KAAKwiD,SAASjV,QAAUvtC,KAAKwiD,SAASoD,aAAe1S,EAAM0S,WAE3D,MAAO5lD,MAAKwiD,SAASv3C,KAAKioC,EAG9B,IAAIlzC,KAAKyiD,SAASlV,QAAUvtC,KAAKyiD,SAASmD,aAAe1S,EAAM0S,WAE3D,MAAO5lD,MAAKyiD,SAASx3C,KAAKioC,EAG9B,KAAK,GAAIjwC,GAAI,EAAGA,EAAIjD,KAAKkjD,SAAShgD,OAAQD,IAC1C,CACI,GAAI6tC,GAAU9wC,KAAKkjD,SAASjgD,EAE5B,IAAI6tC,EAAQvD,QAAUuD,EAAQ8U,aAAe1S,EAAM0S,WAE/C,MAAO9U,GAAQ7lC,KAAKioC,GAI5B,MAAO,OAYXwS,oBAAqB,SAAUK,GAEbr8C,SAAVq8C,IAAuBA,EAAQ/lD,KAAKkjD,SAAShgD,OAIjD,KAAK,GAFDmb,GAAQ0nC,EAEH9iD,EAAI,EAAGA,EAAIjD,KAAKkjD,SAAShgD,QAAUmb,EAAQ,EAAGpb,IACvD,CACI,GAAI6tC,GAAU9wC,KAAKkjD,SAASjgD,EAExB6tC,GAAQvD,QAERlvB,IAIR,MAAQ0nC,GAAQ1nC,GAWpB2nC,WAAY,SAAUC,GAEDv8C,SAAbu8C,IAA0BA,GAAW,EAEzC,KAAK,GAAIhjD,GAAI,EAAGA,EAAIjD,KAAKkjD,SAAShgD,OAAQD,IAC1C,CACI,GAAI6tC,GAAU9wC,KAAKkjD,SAASjgD,EAE5B,IAAI6tC,EAAQvD,SAAW0Y,EAEnB,MAAOnV,GAIf,MAAO,OAeXoV,yBAA0B,SAAUN,GAEhC,IAAK,GAAI3iD,GAAI,EAAGA,EAAIjD,KAAKkjD,SAAShgD,OAAQD,IAC1C,CACI,GAAI6tC,GAAU9wC,KAAKkjD,SAASjgD,EAE5B,IAAI6tC,EAAQ8U,aAAeA,EAEvB,MAAO9U,GAIf,MAAO,OAcXqV,iBAAkB,SAAUC,GAExB,IAAK,GAAInjD,GAAI,EAAGA,EAAIjD,KAAKkjD,SAAShgD,OAAQD,IAC1C,CACI,GAAI6tC,GAAU9wC,KAAKkjD,SAASjgD,EAE5B,IAAI6tC,EAAQsV,YAAcA,EAEtB,MAAOtV,GAIf,MAAO,OAYXuV,iBAAkB,SAAU5qC,EAAeq1B,EAASxV,GAEjC5xB,SAAX4xB,IAAwBA,EAAS,GAAIzS,GAAOznB,MAEhD,IAAI6D,GAAKwW,EAAc1Z,eACnBkU,EAAK,GAAKhR,EAAGP,EAAIO,EAAGJ,EAAII,EAAGL,GAAKK,EAAGN,EAEvC,OAAO22B,GAAON,MACV/1B,EAAGJ,EAAIoR,EAAK66B,EAAQzrC,GAAKJ,EAAGL,EAAIqR,EAAK66B,EAAQxrC,GAAKL,EAAGF,GAAKE,EAAGL,EAAIK,EAAGH,GAAKG,EAAGJ,GAAKoR,EACjFhR,EAAGP,EAAIuR,EAAK66B,EAAQxrC,GAAKL,EAAGN,EAAIsR,EAAK66B,EAAQzrC,IAAMJ,EAAGF,GAAKE,EAAGP,EAAIO,EAAGH,GAAKG,EAAGN,GAAKsR,IAa1FqwC,QAAS,SAAU7qC,EAAeq1B,EAASyV,GAEvC,IAAK9qC,EAAc+qC,aAEf,OAAO,CAOX,IAJAxmD,KAAKqmD,iBAAiB5qC,EAAeq1B,EAAS9wC,KAAKgkD,aAEnDuC,EAAWtrB,SAASj7B,KAAKgkD,aAErBvoC,EAAc/Z,SAAW+Z,EAAc/Z,QAAQ65B,SAE/C,MAAQ9f,GAAc/Z,QAAQ65B,SAASv7B,KAAKgkD,YAAY3+C,EAAGrF,KAAKgkD,YAAY1+C,EAE3E,IAAImW,YAAyBoN,GAAO49B,WACzC,CACI,GAAI9/C,GAAQ8U,EAAc9U,MACtBC,EAAS6U,EAAc7U,OACvBgG,GAAMjG,EAAQ8U,EAAcvT,OAAO7C,CAEvC,IAAIrF,KAAKgkD,YAAY3+C,GAAKuH,GAAM5M,KAAKgkD,YAAY3+C,EAAIuH,EAAKjG,EAC1D,CACI,GAAIkG,IAAMjG,EAAS6U,EAAcvT,OAAO5C,CAExC,IAAItF,KAAKgkD,YAAY1+C,GAAKuH,GAAM7M,KAAKgkD,YAAY1+C,EAAIuH,EAAKjG,EAEtD,OAAO,OAId,IAAI6U,YAAyBxb,MAAKwH,OACvC,CACI,GAAId,GAAQ8U,EAAc3T,QAAQoE,MAAMvF,MACpCC,EAAS6U,EAAc3T,QAAQoE,MAAMtF,OACrCgG,GAAMjG,EAAQ8U,EAAcvT,OAAO7C,CAEvC,IAAIrF,KAAKgkD,YAAY3+C,GAAKuH,GAAM5M,KAAKgkD,YAAY3+C,EAAIuH,EAAKjG,EAC1D,CACI,GAAIkG,IAAMjG,EAAS6U,EAAcvT,OAAO5C,CAExC,IAAItF,KAAKgkD,YAAY1+C,GAAKuH,GAAM7M,KAAKgkD,YAAY1+C,EAAIuH,EAAKjG,EAEtD,OAAO,OAId,IAAI6U,YAAyBoN,GAAO8d,SAErC,IAAK,GAAI1jC,GAAI,EAAGA,EAAIwY,EAAcirC,aAAaxjD,OAAQD,IACvD,CACI,GAAI+N,GAAOyK,EAAcirC,aAAazjD,EAEtC,IAAK+N,EAAKge,MAMNhe,EAAK21C,OAAS31C,EAAK21C,MAAMprB,SAASv7B,KAAKgkD,YAAY3+C,EAAGrF,KAAKgkD,YAAY1+C,GAEvE,OAAO,EAOnB,IAAK,GAAIrC,GAAI,EAAGA,EAAIwY,EAAczY,SAASE,OAAQD,IAE/C,GAAIjD,KAAKsmD,QAAQ7qC,EAAczY,SAASC,GAAI6tC,EAASyV,GAEjD,OAAO,CAIf,QAAO,GASXrB,kBAAmB,WAIfllD,KAAKmjD,cAAcyD,4BAM3B/9B,EAAOi2B,MAAMj8C,UAAUC,YAAc+lB,EAAOi2B,MAQ5C17C,OAAOC,eAAewlB,EAAOi2B,MAAMj8C,UAAW,KAE1CS,IAAK,WACD,MAAOtD,MAAKmkD,IAGhB3gD,IAAK,SAAUC,GACXzD,KAAKmkD,GAAKtjD,KAAKq1B,MAAMzyB,MAW7BL,OAAOC,eAAewlB,EAAOi2B,MAAMj8C,UAAW,KAE1CS,IAAK,WACD,MAAOtD,MAAKokD,IAGhB5gD,IAAK,SAAUC,GACXzD,KAAKokD,GAAKvjD,KAAKq1B,MAAMzyB,MAW7BL,OAAOC,eAAewlB,EAAOi2B,MAAMj8C,UAAW,cAE1CS,IAAK,WACD,MAAQtD,MAAKyhD,SAAW,GAAKzhD,KAAKikD,aAAejkD,KAAKyhD,YAW9Dr+C,OAAOC,eAAewlB,EAAOi2B,MAAMj8C,UAAW,yBAE1CS,IAAK,WACD,MAAOtD,MAAKkjD,SAAShgD,OAASlD,KAAK0lD,yBAW3CtiD,OAAOC,eAAewlB,EAAOi2B,MAAMj8C,UAAW,uBAE1CS,IAAK,WACD,MAAOtD,MAAK0lD,yBAWpBtiD,OAAOC,eAAewlB,EAAOi2B,MAAMj8C,UAAW,UAE1CS,IAAK,WACD,MAAOtD,MAAKE,KAAKob,OAAOlC,KAAK/T,EAAIrF,KAAKqF,KAW9CjC,OAAOC,eAAewlB,EAAOi2B,MAAMj8C,UAAW,UAE1CS,IAAK,WACD,MAAOtD,MAAKE,KAAKob,OAAOlC,KAAK9T,EAAItF,KAAKsF,KAyB9CujB,EAAO+7B,MAAQ,SAAU1kD,GAKrBF,KAAKE,KAAOA,EAMZF,KAAKmpC,MAAQjpC,EAAKipC,MAKlBnpC,KAAK+rC,gBAAkB/rC,KAAKE,KAK5BF,KAAK6mD,kBAAoB,KAKzB7mD,KAAK8mD,gBAAkB,KAKvB9mD,KAAK+mD,iBAAmB,KAKxB/mD,KAAKgnD,kBAAoB,KAKzBhnD,KAAKinD,mBAAqB,KAK1BjnD,KAAKknD,SAAU,EASflnD,KAAKmnD,OAAS,GAMdnnD,KAAKonD,WAAa,EAOlBpnD,KAAK0hD,SAAU,EAMf1hD,KAAKqnD,QAAS,EAMdrnD,KAAKsnD,eAAgB,EAMrBtnD,KAAKunD,YAAc,GAAI1+B,GAAOuc,OAQ9BplC,KAAKkzC,MAAQ,KAMblzC,KAAKwnD,aAAe,KAMpBxnD,KAAKynD,aAAe,KAMpBznD,KAAK0nD,WAAa,KAMlB1nD,KAAK2nD,YAAc,KAMnB3nD,KAAK4nD,aAAe,KAMpB5nD,KAAK6nD,cAAgB,KAOrB7nD,KAAK8nD,YAAc,MAQvBj/B,EAAO+7B,MAAMmD,UAAY,GAMzBl/B,EAAO+7B,MAAMoD,YAAc,EAM3Bn/B,EAAO+7B,MAAMqD,cAAgB,EAM7Bp/B,EAAO+7B,MAAMsD,aAAe,EAM5Br/B,EAAO+7B,MAAMuD,YAAc,EAM3Bt/B,EAAO+7B,MAAMwD,eAAiB,EAM9Bv/B,EAAO+7B,MAAMyD,SAAW,EAMxBx/B,EAAO+7B,MAAM0D,WAAa,GAE1Bz/B,EAAO+7B,MAAM/hD,WAMTwI,MAAO,WAEH,KAAIrL,KAAKE,KAAKuzC,OAAO8U,SAAWvoD,KAAKE,KAAKuzC,OAAOkM,UAAW,IAMlC,OAAtB3/C,KAAKwnD,aAAT,CAMA,GAAItY,GAAQlvC,IAEZA,MAAKwnD,aAAe,SAAUtU,GAC1B,MAAOhE,GAAMsZ,YAAYtV,IAG7BlzC,KAAKynD,aAAe,SAAUvU,GAC1B,MAAOhE,GAAMuZ,YAAYvV,IAG7BlzC,KAAK0nD,WAAa,SAAUxU,GACxB,MAAOhE,GAAMwZ,UAAUxV,IAG3BlzC,KAAK2oD,iBAAmB,SAAUzV,GAC9B,MAAOhE,GAAM0Z,gBAAgB1V,IAGjClzC,KAAK6oD,kBAAoB,SAAU3V,GAC/B,MAAOhE,GAAM4Z,iBAAiB5V,IAGlClzC,KAAK2nD,YAAc,SAAUzU,GACzB,MAAOhE,GAAM6Z,WAAW7V,IAG5BlzC,KAAK4nD,aAAe,SAAU1U,GAC1B,MAAOhE,GAAM8Z,YAAY9V,IAG7BlzC,KAAK6nD,cAAgB,SAAU3U,GAC3B,MAAOhE,GAAM+Z,aAAa/V,GAG9B,IAAItiC,GAAS5Q,KAAKE,KAAK0Q,MAEvBA,GAAOwiC,iBAAiB,YAAapzC,KAAKwnD,cAAc,GACxD52C,EAAOwiC,iBAAiB,YAAapzC,KAAKynD,cAAc,GACxD72C,EAAOwiC,iBAAiB,UAAWpzC,KAAK0nD,YAAY,GAE/C1nD,KAAKE,KAAKuzC,OAAOqM,WAElBjtC,OAAOugC,iBAAiB,UAAWpzC,KAAK2oD,kBAAkB,GAC1D91C,OAAOugC,iBAAiB,WAAYpzC,KAAK6oD,mBAAmB,GAC5Dj4C,EAAOwiC,iBAAiB,YAAapzC,KAAK4nD,cAAc,GACxDh3C,EAAOwiC,iBAAiB,WAAYpzC,KAAK2nD,aAAa,GAG1D,IAAIuB,GAAalpD,KAAKE,KAAKuzC,OAAOyV,UAE9BA,KAEAt4C,EAAOwiC,iBAAiB8V,EAAYlpD,KAAK6nD,eAAe,GAErC,eAAfqB,EAEAlpD,KAAK8nD,YAAc,GAAIp2B,GAAgB,GAAG,GAAI,GAE1B,mBAAfw3B,IAELlpD,KAAK8nD,YAAc,GAAIp2B,GAAgB,EAAG,OAWtD82B,YAAa,SAAUtV,GAEnBlzC,KAAKkzC,MAAQA,EAETlzC,KAAKknD,SAELhU,EAAM+M,iBAGNjgD,KAAK6mD,mBAEL7mD,KAAK6mD,kBAAkBnhD,KAAK1F,KAAK+rC,gBAAiBmH,GAGjDlzC,KAAKmpC,MAAMuY,SAAY1hD,KAAK0hD,UAKjCxO,EAAkB,WAAI,EAEtBlzC,KAAKmpC,MAAMia,aAAa/3C,MAAM6nC,KASlCuV,YAAa,SAAUvV,GAEnBlzC,KAAKkzC,MAAQA,EAETlzC,KAAKknD,SAELhU,EAAM+M,iBAGNjgD,KAAKmpD,mBAELnpD,KAAKmpD,kBAAkBzjD,KAAK1F,KAAK+rC,gBAAiBmH,GAGjDlzC,KAAKmpC,MAAMuY,SAAY1hD,KAAK0hD,UAKjCxO,EAAkB,WAAI,EAEtBlzC,KAAKmpC,MAAMia,aAAayC,KAAK3S,KASjCwV,UAAW,SAAUxV,GAEjBlzC,KAAKkzC,MAAQA,EAETlzC,KAAKknD,SAELhU,EAAM+M,iBAGNjgD,KAAK8mD,iBAEL9mD,KAAK8mD,gBAAgBphD,KAAK1F,KAAK+rC,gBAAiBmH,GAG/ClzC,KAAKmpC,MAAMuY,SAAY1hD,KAAK0hD,UAKjCxO,EAAkB,WAAI,EAEtBlzC,KAAKmpC,MAAMia,aAAan4C,KAAKioC,KAUjC0V,gBAAiB,SAAU1V,GAElBlzC,KAAKmpC,MAAMia,aAAagG,aAErBppD,KAAK8mD,iBAEL9mD,KAAK8mD,gBAAgBphD,KAAK1F,KAAK+rC,gBAAiBmH,GAGpDA,EAAkB,WAAI,EAEtBlzC,KAAKmpC,MAAMia,aAAan4C,KAAKioC,KAWrC4V,iBAAkB,SAAU5V,GAExBlzC,KAAKkzC,MAAQA,EAETlzC,KAAKknD,SAELhU,EAAM+M,iBAGVjgD,KAAKmpC,MAAMia,aAAagG,YAAa,EAEhCppD,KAAKmpC,MAAMuY,SAAY1hD,KAAK0hD,UAajC1hD,KAAKmpC,MAAMia,aAAan4C,KAAKioC,GAC7BlzC,KAAKmpC,MAAMia,aAAaiG,WAAWp+C,KAAKioC,GACxClzC,KAAKmpC,MAAMia,aAAakG,YAAYr+C,KAAKioC,KAU7C6V,WAAY,SAAU7V,GAElBlzC,KAAKkzC,MAAQA,EAETlzC,KAAKknD,SAELhU,EAAM+M,iBAGVjgD,KAAKmpC,MAAMia,aAAagG,YAAa,EAEjCppD,KAAK+mD,kBAEL/mD,KAAK+mD,iBAAiBrhD,KAAK1F,KAAK+rC,gBAAiBmH,GAGhDlzC,KAAKmpC,MAAMuY,SAAY1hD,KAAK0hD,SAK7B1hD,KAAKsnD,gBAELpU,EAAkB,WAAI,EAEtBlzC,KAAKmpC,MAAMia,aAAan4C,KAAKioC,KAWrC8V,YAAa,SAAU9V,GAEnBlzC,KAAKkzC,MAAQA,EAETlzC,KAAKknD,SAELhU,EAAM+M,iBAGVjgD,KAAKmpC,MAAMia,aAAagG,YAAa,EAEjCppD,KAAKgnD,mBAELhnD,KAAKgnD,kBAAkBthD,KAAK1F,KAAK+rC,gBAAiBmH,IAW1D+V,aAAc,SAAU/V,GAEhBlzC,KAAK8nD,cACL5U,EAAQlzC,KAAK8nD,YAAYyB,UAAUrW,IAGvClzC,KAAKkzC,MAAQA,EAETlzC,KAAKknD,SAELhU,EAAM+M,iBAIVjgD,KAAKonD,WAAav+B,EAAOhoB,KAAK4/B,OAAOyS,EAAMsW,OAAQ,GAAI,GAEnDxpD,KAAKinD,oBAELjnD,KAAKinD,mBAAmBvhD,KAAK1F,KAAK+rC,gBAAiBmH,IAW3DuW,mBAAoB,WAEhB,GAAIzpD,KAAKE,KAAKuzC,OAAO8T,YACrB,CACI,GAAImC,GAAU1pD,KAAKE,KAAK0Q,MAExB84C,GAAQD,mBAAqBC,EAAQD,oBAAsBC,EAAQC,uBAAyBD,EAAQE,yBAEpGF,EAAQD,oBAER,IAAIva,GAAQlvC,IAEZA,MAAK6pD,mBAAqB,SAAU3W,GAChC,MAAOhE,GAAM4a,kBAAkB5W,IAGnC7iC,SAAS+iC,iBAAiB,oBAAqBpzC,KAAK6pD,oBAAoB,GACxEx5C,SAAS+iC,iBAAiB,uBAAwBpzC,KAAK6pD,oBAAoB,GAC3Ex5C,SAAS+iC,iBAAiB,0BAA2BpzC,KAAK6pD,oBAAoB,KAWtFC,kBAAmB,SAAU5W,GAEzB,GAAIwW,GAAU1pD,KAAKE,KAAK0Q,MAEpBP,UAAS05C,qBAAuBL,GAAWr5C,SAAS25C,wBAA0BN,GAAWr5C,SAAS45C,2BAA6BP,GAG/H1pD,KAAKqnD,QAAS,EACdrnD,KAAKunD,YAAYrf,UAAS,EAAMgL,KAKhClzC,KAAKqnD,QAAS,EACdrnD,KAAKunD,YAAYrf,UAAS,EAAOgL,KASzCgX,mBAAoB,WAEhB75C,SAAS85C,gBAAkB95C,SAAS85C,iBAAmB95C,SAAS+5C,oBAAsB/5C,SAASg6C,sBAE/Fh6C,SAAS85C,kBAET95C,SAASikC,oBAAoB,oBAAqBt0C,KAAK6pD,oBAAoB,GAC3Ex5C,SAASikC,oBAAoB,uBAAwBt0C,KAAK6pD,oBAAoB,GAC9Ex5C,SAASikC,oBAAoB,0BAA2Bt0C,KAAK6pD,oBAAoB,IAQrF5+C,KAAM,WAEF,GAAI2F,GAAS5Q,KAAKE,KAAK0Q,MAEvBA,GAAO0jC,oBAAoB,YAAat0C,KAAKwnD,cAAc,GAC3D52C,EAAO0jC,oBAAoB,YAAat0C,KAAKynD,cAAc,GAC3D72C,EAAO0jC,oBAAoB,UAAWt0C,KAAK0nD,YAAY,GACvD92C,EAAO0jC,oBAAoB,YAAat0C,KAAK4nD,cAAc,GAC3Dh3C,EAAO0jC,oBAAoB,WAAYt0C,KAAK2nD,aAAa,EAEzD,IAAIuB,GAAalpD,KAAKE,KAAKuzC,OAAOyV,UAE9BA,IAEAt4C,EAAO0jC,oBAAoB4U,EAAYlpD,KAAK6nD,eAAe,GAG/Dh1C,OAAOyhC,oBAAoB,UAAWt0C,KAAK2oD,kBAAkB,GAC7D91C,OAAOyhC,oBAAoB,WAAYt0C,KAAK6oD,mBAAmB,GAE/Dx4C,SAASikC,oBAAoB,oBAAqBt0C,KAAK6pD,oBAAoB,GAC3Ex5C,SAASikC,oBAAoB,uBAAwBt0C,KAAK6pD,oBAAoB,GAC9Ex5C,SAASikC,oBAAoB,0BAA2Bt0C,KAAK6pD,oBAAoB,KAMzFhhC,EAAO+7B,MAAM/hD,UAAUC,YAAc+lB,EAAO+7B,MAoC5ClzB,EAAgB7uB,aAChB6uB,EAAgB7uB,UAAUC,YAAc4uB,EAExCA,EAAgB7uB,UAAU0mD,UAAY,SAAUrW,GAG5C,IAAKxhB,EAAgB44B,iBAAmBpX,EACxC,CACI,GAAIqX,GAAa,SAAU7wB,GAEvB,MAAO,YACH,GAAI+lB,GAAIz/C,KAAK+xB,cAAc2H,EAC3B,OAAoB,kBAAN+lB,GAAmBA,EAAIA,EAAErpB,KAAKp2B,KAAK+xB,gBAKzD,KAAK,GAAI2F,KAAQwb,GAEPxb,IAAQhG,GAAgB7uB,WAE1BO,OAAOC,eAAequB,EAAgB7uB,UAAW60B,GAC7Cp0B,IAAKinD,EAAW7yB,IAI5BhG,GAAgB44B,iBAAkB,EAItC,MADAtqD,MAAK+xB,cAAgBmhB,EACdlzC,MAIXoD,OAAOonD,iBAAiB94B,EAAgB7uB,WACpCuS,MAAU3R,MAAO,SACjBmuB,WAAetuB,IAAK,WAAc,MAAOtD,MAAK8xB,aAC9C03B,QACIlmD,IAAK,WACD,MAAQtD,MAAK6xB,cAAgB7xB,KAAK+xB,cAAcq1B,YAAcpnD,KAAK+xB,cAAc04B,SAAY,IAGrGC,QACIpnD,IAAK,WACD,MAAQtD,MAAK6xB,aAAe7xB,KAAK+xB,cAAc44B,aAAgB,IAGvEC,QAAYnnD,MAAO,KAyBvBolB,EAAOi8B,UAAY,SAAU5kD,GAKzBF,KAAKE,KAAOA,EAMZF,KAAKmpC,MAAQjpC,EAAKipC,MAKlBnpC,KAAK+rC,gBAAkB/rC,KAAKE,KAK5BF,KAAK6qD,oBAAsB,KAK3B7qD,KAAK8qD,oBAAsB,KAK3B9qD,KAAK+qD,kBAAoB,KAKzB/qD,KAAKknD,SAAU,EAQflnD,KAAKmnD,OAAS,GAQdnnD,KAAKkzC,MAAQ,KAOblzC,KAAK0hD,SAAU,EAMf1hD,KAAKgrD,iBAAmB,KAMxBhrD,KAAKirD,iBAAmB,KAMxBjrD,KAAKkrD,eAAiB,KAMtBlrD,KAAKmrD,qBAAuB,KAM5BnrD,KAAKorD,gBAAkB,KAMvBprD,KAAKqrD,iBAAmB,MAI5BxiC,EAAOi8B,UAAUjiD,WAMbwI,MAAO,WAEH,GAA8B,OAA1BrL,KAAKgrD,iBAAT,CAMA,GAAI9b,GAAQlvC,IAEZ,IAAIA,KAAKE,KAAKuzC,OAAO8P,UACrB,CACIvjD,KAAKgrD,iBAAmB,SAAU9X,GAC9B,MAAOhE,GAAMoc,cAAcpY,IAG/BlzC,KAAKirD,iBAAmB,SAAU/X,GAC9B,MAAOhE,GAAMqc,cAAcrY,IAG/BlzC,KAAKkrD,eAAiB,SAAUhY,GAC5B,MAAOhE,GAAMsc,YAAYtY,IAG7BlzC,KAAKmrD,qBAAuB,SAAUjY,GAClC,MAAOhE,GAAMuc,kBAAkBvY,IAGnClzC,KAAKorD,gBAAkB,SAAUlY,GAC7B,MAAOhE,GAAMwc,aAAaxY,IAG9BlzC,KAAKqrD,iBAAmB,SAAUnY,GAC9B,MAAOhE,GAAMyc,cAAczY,GAG/B,IAAItiC,GAAS5Q,KAAKE,KAAK0Q,MAEvBA,GAAOwiC,iBAAiB,gBAAiBpzC,KAAKgrD,kBAAkB,GAChEp6C,EAAOwiC,iBAAiB,gBAAiBpzC,KAAKirD,kBAAkB,GAChEr6C,EAAOwiC,iBAAiB,cAAepzC,KAAKkrD,gBAAgB,GAG5Dt6C,EAAOwiC,iBAAiB,cAAepzC,KAAKgrD,kBAAkB,GAC9Dp6C,EAAOwiC,iBAAiB,cAAepzC,KAAKirD,kBAAkB,GAC9Dr6C,EAAOwiC,iBAAiB,YAAapzC,KAAKkrD,gBAAgB,GAE1Dt6C,EAAOgL,MAAM,uBAAyB,OACtChL,EAAOgL,MAAM,oBAAsB,OAE9B5b,KAAKE,KAAKuzC,OAAOqM,WAElBjtC,OAAOugC,iBAAiB,cAAepzC,KAAKmrD,sBAAsB,GAClEv6C,EAAOwiC,iBAAiB,gBAAiBpzC,KAAKqrD,kBAAkB,GAChEz6C,EAAOwiC,iBAAiB,eAAgBpzC,KAAKorD,iBAAiB,GAG9Dv4C,OAAOugC,iBAAiB,YAAapzC,KAAKmrD,sBAAsB,GAChEv6C,EAAOwiC,iBAAiB,cAAepzC,KAAKqrD,kBAAkB,GAC9Dz6C,EAAOwiC,iBAAiB,aAAcpzC,KAAKorD,iBAAiB,OAYxEE,cAAe,SAAUpY,GAErBlzC,KAAKkzC,MAAQA,EAETlzC,KAAKknD,SAELhU,EAAM+M,iBAGNjgD,KAAK6qD,qBAEL7qD,KAAK6qD,oBAAoBnlD,KAAK1F,KAAK+rC,gBAAiBmH,GAGnDlzC,KAAKmpC,MAAMuY,SAAY1hD,KAAK0hD,UAKjCxO,EAAM0S,WAAa1S,EAAMkT,UAEC,UAAtBlT,EAAM0Y,aAAiD,IAAtB1Y,EAAM0Y,YAEvC5rD,KAAKmpC,MAAMia,aAAa/3C,MAAM6nC,GAI9BlzC,KAAKmpC,MAAMsc,aAAavS,KAUhCqY,cAAe,SAAUrY,GAErBlzC,KAAKkzC,MAAQA,EAETlzC,KAAKknD,SAELhU,EAAM+M,iBAGNjgD,KAAK8qD,qBAEL9qD,KAAK8qD,oBAAoBplD,KAAK1F,KAAK+rC,gBAAiBmH,GAGnDlzC,KAAKmpC,MAAMuY,SAAY1hD,KAAK0hD,UAKjCxO,EAAM0S,WAAa1S,EAAMkT,UAEC,UAAtBlT,EAAM0Y,aAAiD,IAAtB1Y,EAAM0Y,YAEvC5rD,KAAKmpC,MAAMia,aAAayC,KAAK3S,GAI7BlzC,KAAKmpC,MAAMwc,cAAczS,KAUjCsY,YAAa,SAAUtY,GAEnBlzC,KAAKkzC,MAAQA,EAETlzC,KAAKknD,SAELhU,EAAM+M,iBAGNjgD,KAAK+qD,mBAEL/qD,KAAK+qD,kBAAkBrlD,KAAK1F,KAAK+rC,gBAAiBmH,GAGjDlzC,KAAKmpC,MAAMuY,SAAY1hD,KAAK0hD,UAKjCxO,EAAM0S,WAAa1S,EAAMkT,UAEC,UAAtBlT,EAAM0Y,aAAiD,IAAtB1Y,EAAM0Y,YAEvC5rD,KAAKmpC,MAAMia,aAAan4C,KAAKioC,GAI7BlzC,KAAKmpC,MAAM2c,YAAY5S,KAW/BuY,kBAAmB,SAAUvY,GAEzB,GAA2B,UAAtBA,EAAM0Y,aAAiD,IAAtB1Y,EAAM0Y,aAAgC5rD,KAAKmpC,MAAMia,aAAagG,WAKpG,CACI,GAAItY,GAAU9wC,KAAKmpC,MAAM+c,yBAAyBhT,EAAM0S,WAEpD9U,IAAWA,EAAQsY,YAEnBppD,KAAKwrD,YAAYtY,OARrBlzC,MAAKwrD,YAAYtY;EAoBzBwY,aAAc,SAAUxY,GASpB,GAPAlzC,KAAKkzC,MAAQA,EAETlzC,KAAKknD,SAELhU,EAAM+M,iBAGgB,UAAtB/M,EAAM0Y,aAAiD,IAAtB1Y,EAAM0Y,YAEvC5rD,KAAKmpC,MAAMia,aAAagG,YAAa,MAGzC,CACI,GAAItY,GAAU9wC,KAAKmpC,MAAM+c,yBAAyBhT,EAAM0S,WAEpD9U,KAEAA,EAAQsY,YAAa,GAIzBppD,KAAKmpC,MAAM6G,MAAM+W,kBAEjB/mD,KAAKmpC,MAAM6G,MAAM+W,iBAAiBrhD,KAAK1F,KAAKmpC,MAAM6G,MAAMjE,gBAAiBmH,GAGxElzC,KAAKmpC,MAAMuY,SAAY1hD,KAAK0hD,SAK7B1hD,KAAKmpC,MAAM6G,MAAMsX,gBAEjBpU,EAAkB,WAAI,EAElBpC,EAEAA,EAAQ7lC,KAAKioC,GAIblzC,KAAKmpC,MAAMia,aAAan4C,KAAKioC,KAYzCyY,cAAe,SAAUzY,GASrB,GAPAlzC,KAAKkzC,MAAQA,EAETlzC,KAAKknD,SAELhU,EAAM+M,iBAGgB,UAAtB/M,EAAM0Y,aAAiD,IAAtB1Y,EAAM0Y,YAEvC5rD,KAAKmpC,MAAMia,aAAagG,YAAa,MAGzC,CACI,GAAItY,GAAU9wC,KAAKmpC,MAAM+c,yBAAyBhT,EAAM0S,WAEpD9U,KAEAA,EAAQsY,YAAa,GAIzBppD,KAAKmpC,MAAM6G,MAAMgX,mBAEjBhnD,KAAKmpC,MAAM6G,MAAMgX,kBAAkBthD,KAAK1F,KAAKmpC,MAAM6G,MAAMjE,gBAAiBmH,IASlFjoC,KAAM,WAEF,GAAI2F,GAAS5Q,KAAKE,KAAK0Q,MAEvBA,GAAO0jC,oBAAoB,gBAAiBt0C,KAAKgrD,kBAAkB,GACnEp6C,EAAO0jC,oBAAoB,gBAAiBt0C,KAAKirD,kBAAkB,GACnEr6C,EAAO0jC,oBAAoB,cAAet0C,KAAKkrD,gBAAgB,GAG/Dt6C,EAAO0jC,oBAAoB,cAAet0C,KAAKgrD,kBAAkB,GACjEp6C,EAAO0jC,oBAAoB,cAAet0C,KAAKirD,kBAAkB,GACjEr6C,EAAO0jC,oBAAoB,YAAat0C,KAAKkrD,gBAAgB,GAE7Dr4C,OAAOyhC,oBAAoB,cAAet0C,KAAKmrD,sBAAsB,GACrEv6C,EAAO0jC,oBAAoB,gBAAiBt0C,KAAKqrD,kBAAkB,GACnEz6C,EAAO0jC,oBAAoB,eAAgBt0C,KAAKorD,iBAAiB,GAGjEv4C,OAAOyhC,oBAAoB,YAAat0C,KAAKmrD,sBAAsB,GACnEv6C,EAAO0jC,oBAAoB,cAAet0C,KAAKqrD,kBAAkB,GACjEz6C,EAAO0jC,oBAAoB,aAAct0C,KAAKorD,iBAAiB,KAMvEviC,EAAOi8B,UAAUjiD,UAAUC,YAAc+lB,EAAOi8B,UAgChDj8B,EAAOgjC,aAAe,SAAUjqD,EAAQkqD,GAKpC9rD,KAAK4B,OAASA,EAKd5B,KAAKE,KAAO0B,EAAO1B,KAMnBF,KAAKkzC,MAAQ,KAMblzC,KAAK+rD,QAAS,EAMd/rD,KAAKgsD,MAAO,EAMZhsD,KAAKisD,SAAW,EAMhBjsD,KAAKksD,OAAS,EAQdlsD,KAAKmsD,QAAU,EAQfnsD,KAAKosD,QAAS,EAQdpsD,KAAKqsD,UAAW,EAQhBrsD,KAAKssD,SAAU,EAMftsD,KAAKyD,MAAQ,EAKbzD,KAAK8rD,WAAaA,EAQlB9rD,KAAK0jD,OAAS,GAAI76B,GAAOuc,OAQzBplC,KAAK2jD,KAAO,GAAI96B,GAAOuc,OAQvBplC,KAAKusD,QAAU,GAAI1jC,GAAOuc,QAI9Bvc,EAAOgjC,aAAahpD,WAWhBwI,MAAO,SAAU6nC,EAAOzvC,GAEhBzD,KAAK+rD,SAKT/rD,KAAK+rD,QAAS,EACd/rD,KAAKgsD,MAAO,EACZhsD,KAAKisD,SAAWjsD,KAAKE,KAAK8nC,KAAKA,KAC/BhoC,KAAKmsD,QAAU,EAEfnsD,KAAKkzC,MAAQA,EACblzC,KAAKyD,MAAQA,EAETyvC,IAEAlzC,KAAKosD,OAASlZ,EAAMkZ,OACpBpsD,KAAKqsD,SAAWnZ,EAAMmZ,SACtBrsD,KAAKssD,QAAUpZ,EAAMoZ,SAGzBtsD,KAAK0jD,OAAOxb,SAASloC,KAAMyD,KAa/BwH,KAAM,SAAUioC,EAAOzvC,GAEfzD,KAAKgsD,OAKThsD,KAAK+rD,QAAS,EACd/rD,KAAKgsD,MAAO,EACZhsD,KAAKksD,OAASlsD,KAAKE,KAAK8nC,KAAKA,KAE7BhoC,KAAKkzC,MAAQA,EACblzC,KAAKyD,MAAQA,EAETyvC,IAEAlzC,KAAKosD,OAASlZ,EAAMkZ,OACpBpsD,KAAKqsD,SAAWnZ,EAAMmZ,SACtBrsD,KAAKssD,QAAUpZ,EAAMoZ,SAGzBtsD,KAAK2jD,KAAKzb,SAASloC,KAAMyD,KAW7B+oD,SAAU,SAAU/oD,GAEhBzD,KAAKyD,MAAQA,EAEbzD,KAAKusD,QAAQrkB,SAASloC,KAAMyD,IAYhCgpD,YAAa,SAAU7mB,GAInB,MAFAA,GAAWA,GAAY,IAEf5lC,KAAK+rD,QAAW/rD,KAAKisD,SAAWrmB,EAAY5lC,KAAKE,KAAK8nC,KAAKA,MAYvE0kB,aAAc,SAAU9mB,GAIpB,MAFAA,GAAWA,GAAY,IAEf5lC,KAAKgsD,MAAShsD,KAAKksD,OAAStmB,EAAY5lC,KAAKE,KAAK8nC,KAAKA,MASnEc,MAAO,WAEH9oC,KAAK+rD,QAAS,EACd/rD,KAAKgsD,MAAO,EAEZhsD,KAAKisD,SAAWjsD,KAAKE,KAAK8nC,KAAKA,KAC/BhoC,KAAKmsD,QAAU,EAEfnsD,KAAKosD,QAAS,EACdpsD,KAAKqsD,UAAW,EAChBrsD,KAAKssD,SAAU,GAUnBvpD,QAAS,WAEL/C,KAAK0jD,OAAOzU,UACZjvC,KAAK2jD,KAAK1U,UACVjvC,KAAKusD,QAAQtd,UAEbjvC,KAAK4B,OAAS,KACd5B,KAAKE,KAAO,OAMpB2oB,EAAOgjC,aAAahpD,UAAUC,YAAc+lB,EAAOgjC,aAUnDzoD,OAAOC,eAAewlB,EAAOgjC,aAAahpD,UAAW,YAEjDS,IAAK,WAED,MAAItD,MAAKgsD,KAEE,GAGJhsD,KAAKE,KAAK8nC,KAAKA,KAAOhoC,KAAKisD,YAqB1CpjC,EAAO27B,QAAU,SAAUtkD,EAAM+V,EAAI02C,GAKjC3sD,KAAKE,KAAOA,EAKZF,KAAKiW,GAAKA,EAMVjW,KAAKoV,KAAOyT,EAAOgL,QAMnB7zB,KAAK8L,QAAS,EAMd9L,KAAK4lD,WAAa,EAMlB5lD,KAAKomD,UAAY,KAKjBpmD,KAAK2sD,YAAcA,GAAgB9jC,EAAO47B,YAAYC,OAAS77B,EAAO47B,YAAYmI,QAMlF5sD,KAAKiE,OAAS,KASdjE,KAAKmnD,OAAS,KAWdnnD,KAAKqpD,WAAa,GAAIxgC,GAAOgjC,aAAa7rD,KAAM6oB,EAAO27B,QAAQwD,aAa/DhoD,KAAK6sD,aAAe,GAAIhkC,GAAOgjC,aAAa7rD,KAAM6oB,EAAO27B,QAAQyD,eAajEjoD,KAAKspD,YAAc,GAAIzgC,GAAOgjC,aAAa7rD,KAAM6oB,EAAO27B,QAAQ0D,cAahEloD,KAAK8sD,WAAa,GAAIjkC,GAAOgjC,aAAa7rD,KAAM6oB,EAAO27B,QAAQ2D,aAa/DnoD,KAAK+sD,cAAgB,GAAIlkC,GAAOgjC,aAAa7rD,KAAM6oB,EAAO27B,QAAQ4D,gBAalEpoD,KAAKgtD,aAAe,GAAInkC,GAAOgjC,aAAa7rD,KAAM6oB,EAAO27B,QAAQyI,eAOjEjtD,KAAKktD,WAAY,EAMjBltD,KAAKmtD,YAMLntD,KAAKotD,UAAY,EAMjBptD,KAAKqtD,aAAc,EAKnBrtD,KAAKopD,YAAa,EAKlBppD,KAAKstD,QAAU,GAKfttD,KAAKutD,QAAU,GAKfvtD,KAAKwtD,MAAQ,GAKbxtD,KAAKytD,MAAQ,GAKbztD,KAAK0tD,QAAU,GAKf1tD,KAAK2tD,QAAU,GAMf3tD,KAAK4tD,aAAe,EAMpB5tD,KAAK6tD,aAAe,EAMpB7tD,KAAK8tD,UAAY,EAMjB9tD,KAAK+tD,UAAY,EAMjB/tD,KAAKqF,EAAI,GAMTrF,KAAKsF,EAAI,GAKTtF,KAAKguD,QAAkB,IAAP/3C,EAQhBjW,KAAK+rD,QAAS,EAQd/rD,KAAKgsD,MAAO,EAMZhsD,KAAKisD,SAAW,EAMhBjsD,KAAKksD,OAAS,EAMdlsD,KAAKiuD,gBAAkB,EAMvBjuD,KAAKkuD,aAAe,EAMpBluD,KAAKmuD,iBAAmBrrB,OAAOC,UAM/B/iC,KAAKouD,aAAe,KAWpBpuD,KAAKquD,yBAMLruD,KAAKutC,QAAS,EAMdvtC,KAAKiU,OAAQ,EAKbjU,KAAKmB,SAAW,GAAI0nB,GAAOznB,MAK3BpB,KAAKsuD,aAAe,GAAIzlC,GAAOznB,MAK/BpB,KAAKuuD,WAAa,GAAI1lC,GAAOznB,MAO7BpB,KAAK8hD,OAAS,GAAIj5B,GAAO2R,OAAO,EAAG,EAAG,IAOtCx6B,KAAKwuD,kBAAoB,KAQzBxuD,KAAKyuD,wBAA0B,MASnC5lC,EAAO27B,QAAQuD,UAAY,EAO3Bl/B,EAAO27B,QAAQwD,YAAc,EAO7Bn/B,EAAO27B,QAAQ0D,aAAe,EAO9Br/B,EAAO27B,QAAQyD,cAAgB,EAQ/Bp/B,EAAO27B,QAAQ2D,YAAc,EAQ7Bt/B,EAAO27B,QAAQ4D,eAAiB,GAOhCv/B,EAAO27B,QAAQyI,cAAgB,GAE/BpkC,EAAO27B,QAAQ3hD,WAQX6rD,aAAc,WAEV1uD,KAAK+rD,QAAS,EACd/rD,KAAKgsD,MAAO,EAERhsD,KAAKguD,UAELhuD,KAAKqpD,WAAWvgB,QAChB9oC,KAAK6sD,aAAa/jB,QAClB9oC,KAAKspD,YAAYxgB,QACjB9oC,KAAK8sD,WAAWhkB,QAChB9oC,KAAK+sD,cAAcjkB,QACnB9oC,KAAKgtD,aAAalkB,UAa1B6lB,mBAAoB,SAAUC,EAAS1b,GAI/BrqB,EAAO27B,QAAQwD,YAAc4G,GAE7B5uD,KAAKqpD,WAAWh+C,MAAM6nC,GAGtBrqB,EAAO27B,QAAQ0D,aAAe0G,GAE9B5uD,KAAKspD,YAAYj+C,MAAM6nC,GAGvBrqB,EAAO27B,QAAQyD,cAAgB2G,GAE/B5uD,KAAK6sD,aAAaxhD,MAAM6nC,GAGxBrqB,EAAO27B,QAAQ2D,YAAcyG,GAE7B5uD,KAAK8sD,WAAWzhD,MAAM6nC,GAGtBrqB,EAAO27B,QAAQ4D,eAAiBwG,GAEhC5uD,KAAK+sD,cAAc1hD,MAAM6nC,GAGzBrqB,EAAO27B,QAAQyI,cAAgB2B,GAE/B5uD,KAAKgtD,aAAa3hD,MAAM6nC,IAahC2b,iBAAkB,SAAU1H,EAAQjU,GAI5BiU,IAAWt+B,EAAO+7B,MAAMoD,aAExBhoD,KAAKqpD,WAAWp+C,KAAKioC,GAGrBiU,IAAWt+B,EAAO+7B,MAAMsD,cAExBloD,KAAKspD,YAAYr+C,KAAKioC,GAGtBiU,IAAWt+B,EAAO+7B,MAAMqD,eAExBjoD,KAAK6sD,aAAa5hD,KAAKioC,GAGvBiU,IAAWt+B,EAAO+7B,MAAMuD,aAExBnoD,KAAK8sD,WAAW7hD,KAAKioC,GAGrBiU,IAAWt+B,EAAO+7B,MAAMwD,gBAExBpoD,KAAK+sD,cAAc9hD,KAAKioC,GAGb,IAAXiU,GAEAnnD,KAAKgtD,aAAa/hD,KAAKioC,IAa/B4b,cAAe,SAAU5b,GAErBlzC,KAAKmnD,OAASjU,EAAMiU,MAEpB,IAAI4H,GAAgD,SAAxC7b,EAAM99B,KAAK45C,cAAcjnC,OAAO,GAEtBre,UAAlBwpC,EAAM0b,QAEFG,EAEA/uD,KAAK2uD,mBAAmBzb,EAAM0b,QAAS1b,GAIvClzC,KAAK6uD,iBAAiB3b,EAAMiU,OAAQjU,GAMpC6b,EAEA/uD,KAAKqpD,WAAWh+C,MAAM6nC,IAItBlzC,KAAKqpD,WAAWp+C,KAAKioC,GACrBlzC,KAAKspD,YAAYr+C,KAAKioC,IAQR,IAAlBA,EAAM0b,SAAiB1b,EAAMoZ,SAAWtsD,KAAKqpD,WAAW0C,SAExD/rD,KAAKqpD,WAAWp+C,KAAKioC,GACrBlzC,KAAKspD,YAAYj+C,MAAM6nC,IAG3BlzC,KAAKgsD,MAAO,EACZhsD,KAAK+rD,QAAS,GAEV/rD,KAAKqpD,WAAW0C,QAAU/rD,KAAKspD,YAAYyC,QAAU/rD,KAAK6sD,aAAad,QAAU/rD,KAAK8sD,WAAWf,QAAU/rD,KAAK+sD,cAAchB,QAAU/rD,KAAKgtD,aAAajB,UAE1J/rD,KAAKgsD,MAAO,EACZhsD,KAAK+rD,QAAS,IAUtB1gD,MAAO,SAAU6nC,GAEb,GAAI/J,GAAQnpC,KAAKE,KAAKipC,KA2DtB,OAzDI+J,GAAiB,YAEjBlzC,KAAKomD,UAAYlT,EAAMkT,WAG3BpmD,KAAK4lD,WAAa1S,EAAM0S,WACxB5lD,KAAKiE,OAASivC,EAAMjvC,OAEhBjE,KAAKguD,QAELhuD,KAAK8uD,cAAc5b,IAInBlzC,KAAK+rD,QAAS,EACd/rD,KAAKgsD,MAAO,GAGhBhsD,KAAKutC,QAAS,EACdvtC,KAAKopD,YAAa,EAClBppD,KAAKiU,OAAQ,EAEbjU,KAAKmtD,YACLntD,KAAKwuD,kBAAoB,KACzBxuD,KAAKyuD,wBAA0B,KAG/BzuD,KAAKmuD,iBAAmBnuD,KAAKE,KAAK8nC,KAAKA,KAAOhoC,KAAKisD,SACnDjsD,KAAKisD,SAAWjsD,KAAKE,KAAK8nC,KAAKA,KAC/BhoC,KAAKktD,WAAY,EAGjBltD,KAAK6lD,KAAK3S,GAAO,GAGjBlzC,KAAKsuD,aAAatzB,MAAMh7B,KAAKqF,EAAGrF,KAAKsF,IAEjC6jC,EAAMwY,qBAAuB94B,EAAOi2B,MAAMuF,uBAC1Clb,EAAMwY,qBAAuB94B,EAAOi2B,MAAM8C,qBACzCzY,EAAMwY,qBAAuB94B,EAAOi2B,MAAMwF,uBAAuD,IAA9Bnb,EAAM8lB,uBAE1E9lB,EAAM9jC,EAAIrF,KAAKqF,EACf8jC,EAAM7jC,EAAItF,KAAKsF,EACf6jC,EAAMhoC,SAAS65B,MAAMh7B,KAAKqF,EAAGrF,KAAKsF,GAClC6jC,EAAMua,OAAOxb,SAASloC,KAAMkzC,GAC5B/J,EAAMqc,WAAWxlD,KAAKqF,EAAGrF,KAAKsF,IAGlCtF,KAAKqtD,aAAc,EAEnBrtD,KAAKkuD,eAEqB,OAAtBluD,KAAKouD,cAELpuD,KAAKouD,aAAac,gBAAgBlvD,MAG/BA,MAQX4nC,OAAQ,WAEJ,GAAIuB,GAAQnpC,KAAKE,KAAKipC,KAElBnpC,MAAKutC,SAGDvtC,KAAKiU,QAEDk1B,EAAM4a,iBAAiBr0B,MAAQ,GAE/B1vB,KAAKmvD,2BAA0B,GAGnCnvD,KAAKiU,OAAQ,GAGbjU,KAAKktD,aAAc,GAASltD,KAAK4lC,UAAYuD,EAAM+Y,YAE/C/Y,EAAMwY,qBAAuB94B,EAAOi2B,MAAMuF,uBAC1Clb,EAAMwY,qBAAuB94B,EAAOi2B,MAAM8C,qBACzCzY,EAAMwY,qBAAuB94B,EAAOi2B,MAAMwF,uBAAuD,IAA9Bnb,EAAM8lB,sBAE1E9lB,EAAM0a,OAAO3b,SAASloC,MAG1BA,KAAKktD,WAAY,GAIjB/jB,EAAMkZ,sBAAwBriD,KAAKE,KAAK8nC,KAAKA,MAAQhoC,KAAKotD,YAE1DptD,KAAKotD,UAAYptD,KAAKE,KAAK8nC,KAAKA,KAAOmB,EAAMmZ,WAE7CtiD,KAAKmtD,SAASppD,MACVsB,EAAGrF,KAAKmB,SAASkE,EACjBC,EAAGtF,KAAKmB,SAASmE,IAGjBtF,KAAKmtD,SAASjqD,OAASimC,EAAMoZ,aAE7BviD,KAAKmtD,SAASiC,WAc9BvJ,KAAM,SAAU3S,EAAOmc,GAEnB,GAAIlmB,GAAQnpC,KAAKE,KAAKipC,KAEtB,KAAIA,EAAMmmB,WAAV,CAyDA,GApDkB5lD,SAAd2lD,IAA2BA,GAAY,GAEtB3lD,SAAjBwpC,EAAMiU,SAENnnD,KAAKmnD,OAASjU,EAAMiU,QAGpBkI,GAAarvD,KAAKguD,SAElBhuD,KAAK8uD,cAAc5b,GAGvBlzC,KAAKstD,QAAUpa,EAAMoa,QACrBttD,KAAKutD,QAAUra,EAAMqa,QAErBvtD,KAAKwtD,MAAQta,EAAMsa,MACnBxtD,KAAKytD,MAAQva,EAAMua,MAEnBztD,KAAK0tD,QAAUxa,EAAMwa,QACrB1tD,KAAK2tD,QAAUza,EAAMya,QAEjB3tD,KAAKguD,SAAW7kB,EAAM6G,MAAMqX,SAAWgI,IAEvCrvD,KAAK4tD,aAAe1a,EAAM4a,WAAa5a,EAAMqc,cAAgBrc,EAAMsc,iBAAmB,EACtFxvD,KAAK6tD,aAAe3a,EAAM6a,WAAa7a,EAAMuc,cAAgBvc,EAAMwc,iBAAmB,EAEtF1vD,KAAK8tD,WAAa9tD,KAAK4tD,aACvB5tD,KAAK+tD,WAAa/tD,KAAK6tD,cAG3B7tD,KAAKqF,GAAKrF,KAAKwtD,MAAQxtD,KAAKE,KAAKmB,MAAMqY,OAAOrU,GAAK8jC,EAAM9nC,MAAMgE,EAC/DrF,KAAKsF,GAAKtF,KAAKytD,MAAQztD,KAAKE,KAAKmB,MAAMqY,OAAOpU,GAAK6jC,EAAM9nC,MAAMiE,EAE/DtF,KAAKmB,SAAS65B,MAAMh7B,KAAKqF,EAAGrF,KAAKsF,GACjCtF,KAAK8hD,OAAOz8C,EAAIrF,KAAKqF,EACrBrF,KAAK8hD,OAAOx8C,EAAItF,KAAKsF,GAEjB6jC,EAAMwY,qBAAuB94B,EAAOi2B,MAAMuF,uBAC1Clb,EAAMwY,qBAAuB94B,EAAOi2B,MAAM8C,qBACzCzY,EAAMwY,qBAAuB94B,EAAOi2B,MAAMwF,uBAAuD,IAA9Bnb,EAAM8lB,uBAE1E9lB,EAAMga,cAAgBnjD,KACtBmpC,EAAM9jC,EAAIrF,KAAKqF,EACf8jC,EAAM7jC,EAAItF,KAAKsF,EACf6jC,EAAMhoC,SAAS65B,MAAMmO,EAAM9jC,EAAG8jC,EAAM7jC,GACpC6jC,EAAM2Y,OAAOz8C,EAAI8jC,EAAM9jC,EACvB8jC,EAAM2Y,OAAOx8C,EAAI6jC,EAAM7jC,GAG3BtF,KAAKopD,WAAappD,KAAKE,KAAKmB,MAAMmF,OAAO+0B,SAASv7B,KAAKwtD,MAAOxtD,KAAKytD,OAG/DztD,KAAKE,KAAK4pC,OAEV,MAAO9pC,KAKX,KAFA,GAAIiD,GAAIkmC,EAAMmY,cAAcp+C,OAErBD,KAEHkmC,EAAMmY,cAAcr+C,GAAGs2C,SAAS7zC,KAAKyjC,EAAMmY,cAAcr+C,GAAGqK,QAAStN,KAAMA,KAAKqF,EAAGrF,KAAKsF,EAAG+pD,EAgB/F,OAZ0B,QAAtBrvD,KAAKouD,cAAyBpuD,KAAKouD,aAAauB,aAAc,EAE1D3vD,KAAKouD,aAAaxmB,OAAO5nC,SAAU,IAEnCA,KAAKouD,aAAe,MAGnBjlB,EAAM4a,iBAAiBr0B,MAAQ,GAEpC1vB,KAAKmvD,0BAA0BE,GAG5BrvD,OAYXmvD,0BAA2B,SAAUE,GAGjC,GAAIO,GAAuB,EACvBC,EAAyB,GACzBC,EAAkB,KAKlBC,EAAc/vD,KAAKE,KAAKipC,MAAM4a,iBAAiBiM,KAInD,KAFAhwD,KAAKquD,yBAEE0B,GAGHA,EAAYE,SAAU,EAElBF,EAAYG,cAAcL,EAAwBD,GAAsB,KAGxEG,EAAYE,SAAU,GAEjBZ,GAAaU,EAAYI,iBAAiBnwD,MAAM,KAC/CqvD,GAAaU,EAAYK,iBAAiBpwD,MAAM,MAElD4vD,EAAuBG,EAAYrtC,OAAOo3B,cAC1C+V,EAAyBE,EAAYM,WACrCP,EAAkBC,EAClB/vD,KAAKquD,sBAAsBtqD,KAAKgsD,KAIxCA,EAAc/vD,KAAKE,KAAKipC,MAAM4a,iBAAiBnM,IASnD,KAFAmY,EAAc/vD,KAAKE,KAAKipC,MAAM4a,iBAAiBiM,MAExCD,IAEEA,EAAYE,SACbF,EAAYG,cAAcL,EAAwBD,GAAsB,KAEnEP,GAAaU,EAAYI,iBAAiBnwD,MAAM,KAC/CqvD,GAAaU,EAAYK,iBAAiBpwD,MAAM,MAElD4vD,EAAuBG,EAAYrtC,OAAOo3B,cAC1C+V,EAAyBE,EAAYM,WACrCP,EAAkBC,EAClB/vD,KAAKquD,sBAAsBtqD,KAAKgsD,IAIxCA,EAAc/vD,KAAKE,KAAKipC,MAAM4a,iBAAiBnM,IAUnD,OAPI53C,MAAKE,KAAKipC,MAAMoY,yBAEhBuO,EAAkB9vD,KAAKE,KAAKipC,MAAMoY,uBAAuB77C,KAAK1F,KAAKE,KAAKipC,MAAMqY,8BAA+BxhD,KAAMA,KAAKquD,sBAAuByB,IAGnJ9vD,KAAKswD,WAAWR,GAAiB,GAEH,OAAtB9vD,KAAKouD,cAgBjBkC,WAAY,SAAUC,EAAWla,GAEd3sC,SAAX2sC,IAAwBA,GAAS,GAGnB,OAAdka,EAGIvwD,KAAKouD,eAELpuD,KAAKouD,aAAaoC,mBAAmBxwD,KAAMq2C,GAC3Cr2C,KAAKouD,aAAe,MAKE,OAAtBpuD,KAAKouD,cAGLpuD,KAAKouD,aAAemC,EACpBA,EAAUE,oBAAoBzwD,KAAMq2C,IAKhCr2C,KAAKouD,eAAiBmC,EAGlBA,EAAU3oB,OAAO5nC,SAAU,IAE3BA,KAAKouD,aAAe,OAMxBpuD,KAAKouD,aAAaoC,mBAAmBxwD,KAAMq2C,GAG3Cr2C,KAAKouD,aAAemC,EACpBvwD,KAAKouD,aAAaqC,oBAAoBzwD,KAAMq2C,KAa5Dqa,MAAO,SAAUxd,GAEblzC,KAAKopD,YAAa,EAClBppD,KAAK6lD,KAAK3S,GAAO,IAUrBjoC,KAAM,SAAUioC,GAEZ,GAAI/J,GAAQnpC,KAAKE,KAAKipC,KAEtB,OAAInpC,MAAKqtD,aAAertD,KAAKopD,eAEzBlW,GAAM+M,kBAIVjgD,KAAKksD,OAASlsD,KAAKE,KAAK8nC,KAAKA,MAEzBmB,EAAMwY,qBAAuB94B,EAAOi2B,MAAMuF,uBAC1Clb,EAAMwY,qBAAuB94B,EAAOi2B,MAAM8C,qBACzCzY,EAAMwY,qBAAuB94B,EAAOi2B,MAAMwF,uBAAuD,IAA9Bnb,EAAM8lB,uBAE1E9lB,EAAMwa,KAAKzb,SAASloC,KAAMkzC,GAGtBlzC,KAAK4lC,UAAY,GAAK5lC,KAAK4lC,UAAYuD,EAAM6Y,UAGzChiD,KAAKksD,OAASlsD,KAAKiuD,gBAAkB9kB,EAAM8Y,cAG3C9Y,EAAMya,MAAM1b,SAASloC,MAAM,GAK3BmpC,EAAMya,MAAM1b,SAASloC,MAAM,GAG/BA,KAAKiuD,gBAAkBjuD,KAAKksD,SAIhClsD,KAAKguD,QAELhuD,KAAK8uD,cAAc5b,IAInBlzC,KAAK+rD,QAAS,EACd/rD,KAAKgsD,MAAO,GAIZhsD,KAAKiW,GAAK,IAEVjW,KAAKutC,QAAS,GAGlBvtC,KAAKopD,WAAappD,KAAKE,KAAKmB,MAAMmF,OAAO+0B,SAAS2X,EAAMsa,MAAOta,EAAMua,OACrEztD,KAAKomD,UAAY,KACjBpmD,KAAK4lD,WAAa,KAElB5lD,KAAKuuD,WAAWvzB,MAAMh7B,KAAKqF,EAAGrF,KAAKsF,GAE/BtF,KAAKguD,WAAY,GAEjB7kB,EAAMwnB,kBAGVxnB,EAAM4a,iBAAiBrK,QAAQ,mBAAoB15C,MAE/CA,KAAKwuD,oBAELxuD,KAAKyuD,wBAA0BzuD,KAAKouD,cAGxCpuD,KAAKouD,aAAe,KAEbpuD,OAYXysD,YAAa,SAAU7mB,GAInB,MAFAA,GAAWA,GAAY5lC,KAAKE,KAAKipC,MAAMgZ,gBAE/BniD,KAAK+rD,UAAW,GAAS/rD,KAAKisD,SAAWrmB,EAAY5lC,KAAKE,KAAK8nC,KAAKA,MAYhF0kB,aAAc,SAAU9mB,GAIpB,MAFAA,GAAWA,GAAY5lC,KAAKE,KAAKipC,MAAMiZ,iBAE/BpiD,KAAKgsD,MAAShsD,KAAKksD,OAAStmB,EAAY5lC,KAAKE,KAAK8nC,KAAKA,MAqBnE4oB,mBAAoB,SAAUl3B,EAAM6f,EAAUxN,EAAiB8kB,GAE3D,GAAK7wD,KAAK+rD,OAAV,CAOA,IAAK,GAFD+E,GAAe9wD,KAAKwuD,kBAAoBxuD,KAAKwuD,sBAExCvrD,EAAI,EAAGA,EAAI6tD,EAAY5tD,OAAQD,IAEpC,GAAI6tD,EAAY7tD,GAAGy2B,OAASA,EAC5B,CACIo3B,EAAYjoD,OAAO5F,EAAG,EACtB,OAIR6tD,EAAY/sD,MACR21B,KAAMA,EACN00B,aAAcpuD,KAAKouD,aACnB7U,SAAUA,EACVxN,gBAAiBA,EACjB8kB,aAAcA,MAUtBjK,wBAAyB,WAErB,GAAIkK,GAAc9wD,KAAKwuD,iBAEvB,IAAKsC,EAAL,CAKA,IAAK,GAAI7tD,GAAI,EAAGA,EAAI6tD,EAAY5tD,OAAQD,IACxC,CACI,GAAI8tD,GAAaD,EAAY7tD,EAEzB8tD,GAAW3C,eAAiBpuD,KAAKyuD,yBAEjCsC,EAAWxX,SAAStyC,MAAM8pD,EAAWhlB,gBAAiBglB,EAAWF,cAIzE7wD,KAAKwuD,kBAAoB,KACzBxuD,KAAKyuD,wBAA0B,OAQnC3lB,MAAO,WAEC9oC,KAAKguD,WAAY,IAEjBhuD,KAAKutC,QAAS,GAGlBvtC,KAAKomD,UAAY,KACjBpmD,KAAK4lD,WAAa,KAClB5lD,KAAKiU,OAAQ,EACbjU,KAAKkuD,aAAe,EACpBluD,KAAKktD,WAAY,EACjBltD,KAAKmtD,SAASjqD,OAAS,EACvBlD,KAAKqtD,aAAc,EAEnBrtD,KAAK0uD,eAED1uD,KAAKouD,cAELpuD,KAAKouD,aAAa4C,iBAAiBhxD,MAGvCA,KAAKouD,aAAe,MAQxB6C,cAAe,WAEXjxD,KAAK8tD,UAAY,EACjB9tD,KAAK+tD,UAAY,IAMzBllC,EAAO27B,QAAQ3hD,UAAUC,YAAc+lB,EAAO27B,QAW9CphD,OAAOC,eAAewlB,EAAO27B,QAAQ3hD,UAAW,YAE5CS,IAAK,WAED,MAAItD,MAAKgsD,KAEE,GAGJhsD,KAAKE,KAAK8nC,KAAKA,KAAOhoC,KAAKisD,YAY1C7oD,OAAOC,eAAewlB,EAAO27B,QAAQ3hD,UAAW,UAE5CS,IAAK,WAED,MAAOtD,MAAKE,KAAKuE,MAAM6W,OAAOjW,EAAIrF,KAAKqF,KAY/CjC,OAAOC,eAAewlB,EAAO27B,QAAQ3hD,UAAW,UAE5CS,IAAK,WAED,MAAOtD,MAAKE,KAAKuE,MAAM6W,OAAOhW,EAAItF,KAAKsF,KAgB/CujB,EAAO47B,aASHC,OAAQ,EAMRkI,QAAS,GAmBb/jC,EAAOg8B,MAAQ,SAAU3kD,GAKrBF,KAAKE,KAAOA,EAOZF,KAAK0hD,SAAU,EASf1hD,KAAKkxD,sBAKLlxD,KAAK+rC,gBAAkB/rC,KAAKE,KAK5BF,KAAKmxD,mBAAqB,KAK1BnxD,KAAKoxD,kBAAoB,KAKzBpxD,KAAKqxD,iBAAmB,KAKxBrxD,KAAKsxD,mBAAqB,KAK1BtxD,KAAKuxD,mBAAqB,KAK1BvxD,KAAKwxD,oBAAsB,KAM3BxxD,KAAKigD,gBAAiB,EAMtBjgD,KAAKkzC,MAAQ,KAMblzC,KAAKyxD,cAAgB,KAMrBzxD,KAAK0xD,aAAe,KAMpB1xD,KAAK2xD,YAAc,KAMnB3xD,KAAK4xD,cAAgB,KAMrB5xD,KAAK6xD,cAAgB,KAMrB7xD,KAAK8xD,eAAiB,KAMtB9xD,KAAK0xD,aAAe,MAIxB7oC,EAAOg8B,MAAMhiD,WAMTwI,MAAO,WAEH,GAA2B,OAAvBrL,KAAKyxD,cAAT,CAMA,GAAIviB,GAAQlvC,IAERA,MAAKE,KAAKuzC,OAAO6P,QAEjBtjD,KAAKyxD,cAAgB,SAAUve,GAC3B,MAAOhE,GAAM6iB,aAAa7e,IAG9BlzC,KAAK0xD,aAAe,SAAUxe,GAC1B,MAAOhE,GAAM8iB,YAAY9e,IAG7BlzC,KAAK2xD,YAAc,SAAUze,GACzB,MAAOhE,GAAM+iB,WAAW/e,IAG5BlzC,KAAK4xD,cAAgB,SAAU1e,GAC3B,MAAOhE,GAAMgjB,aAAahf,IAG9BlzC,KAAK6xD,cAAgB,SAAU3e,GAC3B,MAAOhE,GAAMijB,aAAajf,IAG9BlzC,KAAK8xD,eAAiB,SAAU5e,GAC5B,MAAOhE,GAAMkjB,cAAclf,IAG/BlzC,KAAKE,KAAK0Q,OAAOwiC,iBAAiB,aAAcpzC,KAAKyxD,eAAe,GACpEzxD,KAAKE,KAAK0Q,OAAOwiC,iBAAiB,YAAapzC,KAAK0xD,cAAc,GAClE1xD,KAAKE,KAAK0Q,OAAOwiC,iBAAiB,WAAYpzC,KAAK2xD,aAAa,GAChE3xD,KAAKE,KAAK0Q,OAAOwiC,iBAAiB,cAAepzC,KAAK8xD,gBAAgB,GAEjE9xD,KAAKE,KAAKuzC,OAAOqM,WAElB9/C,KAAKE,KAAK0Q,OAAOwiC,iBAAiB,aAAcpzC,KAAK4xD,eAAe,GACpE5xD,KAAKE,KAAK0Q,OAAOwiC,iBAAiB,aAAcpzC,KAAK6xD,eAAe,OAUhFQ,uBAAwB,WAEpBryD,KAAKsyD,mBAAqB,SAAUpf,GAChCA,EAAM+M,kBAGV5vC,SAAS+iC,iBAAiB,YAAapzC,KAAKsyD,oBAAoB,IAkBpEC,qBAAsB,SAAUhZ,EAAUjsC,EAASklD,GAEjC9oD,SAAV8oD,IAAuBA,GAAQ,GAEnCxyD,KAAKkxD,mBAAmBntD,MAAOw1C,SAAUA,EAAUjsC,QAASA,EAASklD,MAAOA,KAYhFC,wBAAyB,SAAUlZ,EAAUjsC,GAIzC,IAFA,GAAIrK,GAAIjD,KAAKkxD,mBAAmBhuD,OAEzBD,KAEH,GAAIjD,KAAKkxD,mBAAmBjuD,GAAGs2C,WAAaA,GAAYv5C,KAAKkxD,mBAAmBjuD,GAAGqK,UAAYA,EAG3F,MADAtN,MAAKkxD,mBAAmBroD,OAAO5F,EAAG,IAC3B,CAIf,QAAO,GASX8uD,aAAc,SAAU7e,GAIpB,IAFA,GAAIjwC,GAAIjD,KAAKkxD,mBAAmBhuD,OAEzBD,KACP,CACI,GAAIyvD,GAAK1yD,KAAKkxD,mBAAmBjuD,IAE5ByvD,EAAGF,OAASE,EAAGnZ,SAAS7zC,KAAKgtD,EAAGplD,QAAStN,KAAMkzC,IAEhDlzC,KAAKkxD,mBAAmBroD,OAAO5F,EAAG,GAM1C,GAFAjD,KAAKkzC,MAAQA,EAERlzC,KAAKE,KAAKipC,MAAMuY,SAAY1hD,KAAK0hD,QAAtC,CAKI1hD,KAAKmxD,oBAELnxD,KAAKmxD,mBAAmBzrD,KAAK1F,KAAK+rC,gBAAiBmH,GAGnDlzC,KAAKigD,gBAEL/M,EAAM+M,gBAMV,KAAK,GAAIh9C,GAAI,EAAGA,EAAIiwC,EAAMyf,eAAezvD,OAAQD,IAE7CjD,KAAKE,KAAKipC,MAAMsc,aAAavS,EAAMyf,eAAe1vD,MAW1DmvD,cAAe,SAAUlf,GASrB,GAPAlzC,KAAKkzC,MAAQA,EAETlzC,KAAKwxD,qBAELxxD,KAAKwxD,oBAAoB9rD,KAAK1F,KAAK+rC,gBAAiBmH,GAGnDlzC,KAAKE,KAAKipC,MAAMuY,SAAY1hD,KAAK0hD,QAAtC,CAKI1hD,KAAKigD,gBAEL/M,EAAM+M,gBAKV,KAAK,GAAIh9C,GAAI,EAAGA,EAAIiwC,EAAMyf,eAAezvD,OAAQD,IAE7CjD,KAAKE,KAAKipC,MAAM2c,YAAY5S,EAAMyf,eAAe1vD,MAWzDivD,aAAc,SAAUhf,GAEpBlzC,KAAKkzC,MAAQA,EAETlzC,KAAKsxD,oBAELtxD,KAAKsxD,mBAAmB5rD,KAAK1F,KAAK+rC,gBAAiBmH,GAGlDlzC,KAAKE,KAAKipC,MAAMuY,SAAY1hD,KAAK0hD,SAKlC1hD,KAAKigD,gBAEL/M,EAAM+M,kBAWdkS,aAAc,SAAUjf,GAEpBlzC,KAAKkzC,MAAQA,EAETlzC,KAAKuxD,oBAELvxD,KAAKuxD,mBAAmB7rD,KAAK1F,KAAK+rC,gBAAiBmH,GAGnDlzC,KAAKigD,gBAEL/M,EAAM+M,kBAUd+R,YAAa,SAAU9e,GAEnBlzC,KAAKkzC,MAAQA,EAETlzC,KAAKoxD,mBAELpxD,KAAKoxD,kBAAkB1rD,KAAK1F,KAAK+rC,gBAAiBmH,GAGlDlzC,KAAKigD,gBAEL/M,EAAM+M,gBAGV,KAAK,GAAIh9C,GAAI,EAAGA,EAAIiwC,EAAMyf,eAAezvD,OAAQD,IAE7CjD,KAAKE,KAAKipC,MAAMwc,cAAczS,EAAMyf,eAAe1vD,KAU3DgvD,WAAY,SAAU/e,GAIlB,IAFA,GAAIjwC,GAAIjD,KAAKkxD,mBAAmBhuD,OAEzBD,KACP,CACI,GAAIyvD,GAAK1yD,KAAKkxD,mBAAmBjuD,EAE7ByvD,GAAGF,OAASE,EAAGnZ,SAAS7zC,KAAKgtD,EAAGplD,QAAStN,KAAMkzC,IAE/ClzC,KAAKkxD,mBAAmBroD,OAAO5F,EAAG,GAI1CjD,KAAKkzC,MAAQA,EAETlzC,KAAKqxD,kBAELrxD,KAAKqxD,iBAAiB3rD,KAAK1F,KAAK+rC,gBAAiBmH,GAGjDlzC,KAAKigD,gBAEL/M,EAAM+M,gBAMV,KAAK,GAAIh9C,GAAI,EAAGA,EAAIiwC,EAAMyf,eAAezvD,OAAQD,IAE7CjD,KAAKE,KAAKipC,MAAM2c,YAAY5S,EAAMyf,eAAe1vD,KASzDgI,KAAM,WAEEjL,KAAKE,KAAKuzC,OAAO6P,QAEjBtjD,KAAKE,KAAK0Q,OAAO0jC,oBAAoB,aAAct0C,KAAKyxD,eACxDzxD,KAAKE,KAAK0Q,OAAO0jC,oBAAoB,YAAat0C,KAAK0xD,cACvD1xD,KAAKE,KAAK0Q,OAAO0jC,oBAAoB,WAAYt0C,KAAK2xD,aACtD3xD,KAAKE,KAAK0Q,OAAO0jC,oBAAoB,aAAct0C,KAAK4xD,eACxD5xD,KAAKE,KAAK0Q,OAAO0jC,oBAAoB,aAAct0C,KAAK6xD,eACxD7xD,KAAKE,KAAK0Q,OAAO0jC,oBAAoB,cAAet0C,KAAK8xD,mBAOrEjpC,EAAOg8B,MAAMhiD,UAAUC,YAAc+lB,EAAOg8B,MAe5Ch8B,EAAO+pC,aAAe,SAAUlwC,GAK5B1iB,KAAK0iB,OAASA,EAKd1iB,KAAKE,KAAOwiB,EAAOxiB,KAMnBF,KAAK0hD,SAAU,EAMf1hD,KAAKiwD,SAAU,EASfjwD,KAAKqwD,WAAa,EAMlBrwD,KAAK6yD,eAAgB,EAMrB7yD,KAAK8yD,gBAAiB,EAMtB9yD,KAAK2vD,WAAY,EAMjB3vD,KAAK+yD,qBAAsB,EAM3B/yD,KAAKgzD,mBAAoB,EAMzBhzD,KAAKg4C,YAAa,EAMlBh4C,KAAKizD,WAAa,KAMlBjzD,KAAKkzD,YAAa,EAMlBlzD,KAAKmzD,eAAgB,EAMrBnzD,KAAKozD,MAAQ,EAMbpzD,KAAKqzD,MAAQ,EAMbrzD,KAAKszD,YAAc,EAMnBtzD,KAAKuzD,YAAc,EAUnBvzD,KAAKwzD,kBAAmB,EAUxBxzD,KAAKyzD,mBAAoB,EAMzBzzD,KAAK0zD,kBAAoB,IAMzB1zD,KAAK2zD,WAAY,EAMjB3zD,KAAK4zD,WAAa,KAMlB5zD,KAAK6zD,aAAe,KAKpB7zD,KAAK8zD,YAAa,EAKlB9zD,KAAK+zD,WAAa,GAAIlrC,GAAOznB,MAK7BpB,KAAKg0D,gBAAiB,EAKtBh0D,KAAKi0D,uBAAwB,EAK7Bj0D,KAAKk0D,eAAiB,GAAIrrC,GAAOznB,MAKjCpB,KAAKm0D,sBAAwB,EAK7Bn0D,KAAKo0D,kBAAoB,EAKzBp0D,KAAKq0D,UAAY,GAAIxrC,GAAOznB,MAK5BpB,KAAKs0D,UAAY,GAAIzrC,GAAOznB,MAM5BpB,KAAKu0D,WAAa,GAAI1rC,GAAOznB,MAM7BpB,KAAKw0D,YAAa,EAMlBx0D,KAAKy0D,cAAe,EAMpBz0D,KAAK00D,eAAgB,EAMrB10D,KAAK20D,mBAAoB,EAMzB30D,KAAK40D,aAAc,EAMnB50D,KAAK60D,WAAa,GAAIhsC,GAAOznB,MAM7BpB,KAAK80D,gBAEL90D,KAAK80D,aAAa/wD,MACdkS,GAAI,EACJ5Q,EAAG,EACHC,EAAG,EACHyvD,KAAM,EACNC,KAAM,EACNjJ,QAAQ,EACRC,MAAM,EACNiJ,QAAQ,EACRC,OAAO,EACPC,SAAU,EACVC,QAAS,EACTnJ,SAAU,EACVC,OAAQ,EACRmJ,aAAc,EACd1F,WAAW,KAKnB9mC,EAAO+pC,aAAa/vD,WAShBwI,MAAO,SAAU0iC,EAAU8kB,GAMvB,GAJA9kB,EAAWA,GAAY,EACDrkC,SAAlBmpD,IAA+BA,GAAgB,GAG/C7yD,KAAK0hD,WAAY,EACrB,CAEI1hD,KAAKE,KAAKipC,MAAM4a,iBAAiBjmB,IAAI99B,MACrCA,KAAK6yD,cAAgBA,EACrB7yD,KAAKqwD,WAAatiB,CAElB,KAAK,GAAI9qC,GAAI,EAAO,GAAJA,EAAQA,IAEpBjD,KAAK80D,aAAa7xD,IACdgT,GAAIhT,EACJoC,EAAG,EACHC,EAAG,EACHymD,QAAQ,EACRC,MAAM,EACNiJ,QAAQ,EACRC,OAAO,EACPC,SAAU,EACVC,QAAS,EACTnJ,SAAU,EACVC,OAAQ,EACRmJ,aAAc,EACd1F,WAAW,EAInB3vD,MAAKizD,WAAa,GAAIpqC,GAAOznB,MAC7BpB,KAAK0hD,SAAU,EACf1hD,KAAK40D,aAAc,EASvB,MALA50D,MAAK0iB,OAAOi0B,OAAO2e,eAAex3B,IAAI99B,KAAKu1D,aAAcv1D,MACzDA,KAAK0iB,OAAOi0B,OAAO6e,mBAAmB13B,IAAI99B,KAAKy1D,iBAAkBz1D,MAEjEA,KAAK01D,SAAU,EAER11D,KAAK0iB,QAUhB6yC,aAAc,WAENv1D,KAAKw0D,YAKLx0D,KAAK40D,cAAgB50D,KAAK0hD,SAE1B1hD,KAAKqL,SAWboqD,iBAAkB,WAEVz1D,KAAKw0D,aAKLx0D,KAAK0hD,SAEL1hD,KAAK40D,aAAc,EACnB50D,KAAKiL,QAILjL,KAAK40D,aAAc,IAS3B9rB,MAAO,WAEH9oC,KAAK0hD,SAAU,EACf1hD,KAAK01D,SAAU,CAEf,KAAK,GAAIzyD,GAAI,EAAO,GAAJA,EAAQA,IAEpBjD,KAAK80D,aAAa7xD,IACdgT,GAAIhT,EACJoC,EAAG,EACHC,EAAG,EACHymD,QAAQ,EACRC,MAAM,EACNiJ,QAAQ,EACRC,OAAO,EACPC,SAAU,EACVC,QAAS,EACTnJ,SAAU,EACVC,OAAQ,EACRmJ,aAAc,EACd1F,WAAW,IASvB1kD,KAAM,WAGEjL,KAAK0hD,WAAY,IAOjB1hD,KAAK0hD,SAAU,EACf1hD,KAAKE,KAAKipC,MAAM4a,iBAAiB9yC,OAAOjR,QAShD+C,QAAS,WAED/C,KAAK0iB,SAED1iB,KAAK8yD,iBAEL9yD,KAAKE,KAAK0Q,OAAOgL,MAAMs5B,OAAS,UAChCl1C,KAAK8yD,gBAAiB,GAG1B9yD,KAAK0hD,SAAU,EAEf1hD,KAAKE,KAAKipC,MAAM4a,iBAAiB9yC,OAAOjR,MAExCA,KAAK80D,aAAa5xD,OAAS,EAC3BlD,KAAK4zD,WAAa,KAClB5zD,KAAK6zD,aAAe,KACpB7zD,KAAK0iB,OAAS,OAgBtBwtC,cAAe,SAAUyF,EAAWC,EAAiBC,GAIjD,MAF4BnsD,UAAxBmsD,IAAqCA,GAAsB,IAE1D71D,KAAK0hD,SACkB,IAAxB1hD,KAAK0iB,OAAOrhB,MAAMgE,GACM,IAAxBrF,KAAK0iB,OAAOrhB,MAAMiE,GAClBtF,KAAKqwD,WAAarwD,KAAKE,KAAKipC,MAAM2a,eACjC9jD,KAAK0iB,OAAO9gB,QAAU5B,KAAK0iB,OAAO9gB,OAAOwG,kBAEnC,GAINytD,IAAwB71D,KAAKyzD,oBAAqBzzD,KAAKwzD,oBAKxDxzD,KAAKqwD,WAAasF,GAAc31D,KAAKqwD,aAAesF,GAAa31D,KAAK0iB,OAAOo3B,cAAgB8b,IAEtF,GALA,GAkBfE,eAAgB,WAEZ,MAAQ91D,MAAKyzD,mBAAqBzzD,KAAKwzD,kBAY3CuC,SAAU,SAAU3P,GAIhB,MAFAA,GAAYA,GAAa,EAElBpmD,KAAK80D,aAAa1O,GAAW/gD,GAYxC2wD,SAAU,SAAU5P,GAIhB,MAFAA,GAAYA,GAAa,EAElBpmD,KAAK80D,aAAa1O,GAAW9gD,GAYxC2wD,YAAa,SAAU7P,GAInB,MAFAA,GAAYA,GAAa,EAElBpmD,KAAK80D,aAAa1O,GAAW2F,QAYxCmK,UAAW,SAAU9P,GAIjB,MAFAA,GAAYA,GAAa,EAElBpmD,KAAK80D,aAAa1O,GAAW4F,MAWxCmK,gBAAiB,SAAU/P,GAIvB,MAFAA,GAAYA,GAAa,EAElBpmD,KAAK80D,aAAa1O,GAAW6F,UAWxCmK,cAAe,SAAUhQ,GAIrB,MAFAA,GAAYA,GAAa,EAElBpmD,KAAK80D,aAAa1O,GAAW8F,QAWxCmK,YAAa,SAAUjQ,GAEnB,IAAKpmD,KAAK0hD,QAEN,OAAO,CAGX,IAAkBh4C,SAAd08C,EACJ,CACI,IAAK,GAAInjD,GAAI,EAAO,GAAJA,EAAQA,IAEpB,GAAIjD,KAAK80D,aAAa7xD,GAAGgyD,OAErB,OAAO,CAIf,QAAO,EAIP,MAAOj1D,MAAK80D,aAAa1O,GAAW6O,QAY5CqB,WAAY,SAAUlQ,GAElB,IAAKpmD,KAAK0hD,QAEN,OAAO,CAGX,IAAkBh4C,SAAd08C,EAYA,MAAOpmD,MAAK80D,aAAa1O,GAAW8O,KAVpC,KAAK,GAAIjyD,GAAI,EAAO,GAAJA,EAAQA,IAEpB,GAAIjD,KAAK80D,aAAa7xD,GAAGiyD,MAErB,OAAO,GAkBvBqB,gBAAiB,SAAUnQ,GAIvB,MAFAA,GAAYA,GAAa,EAElBpmD,KAAK80D,aAAa1O,GAAW+O,UAWxCqB,eAAgB,SAAUpQ,GAItB,MAFAA,GAAYA,GAAa,EAElBpmD,KAAK80D,aAAa1O,GAAWgP,SAWxCqB,eAAgB,SAAUrQ,GAItB,MAFAA,GAAYA,GAAa,EAElBpmD,KAAK80D,aAAa1O,GAAWuJ,WAaxCQ,iBAAkB,SAAUrf,EAAS4lB,GAEjC,MAAK5lB,GAAQib,QACR/rD,KAAK0hD,SACL1hD,KAAK0iB,QACL1iB,KAAK0iB,OAAO9gB,QACZ5B,KAAK0iB,OAAOjhB,SACZzB,KAAK0iB,OAAO9gB,OAAOH,SACS,IAA7BzB,KAAK0iB,OAAOxgB,WAAWmD,GACM,IAA7BrF,KAAK0iB,OAAOxgB,WAAWoD,GAMvBtF,KAAKE,KAAKipC,MAAMmd,QAAQtmD,KAAK0iB,OAAQouB,EAAS9wC,KAAK60D,aAElCnrD,SAAbgtD,IAEAA,GAAW,IAGVA,GAAY12D,KAAKyzD,kBAEXzzD,KAAK22D,WAAW32D,KAAK60D,WAAWxvD,EAAGrF,KAAK60D,WAAWvvD,IAInD,IAjBJ,GAkCf8qD,iBAAkB,SAAUtf,EAAS4lB,GAEjC,MAAK12D,MAAK0hD,SACL1hD,KAAK0iB,QACL1iB,KAAK0iB,OAAO9gB,QACZ5B,KAAK0iB,OAAOjhB,SACZzB,KAAK0iB,OAAO9gB,OAAOH,SACS,IAA7BzB,KAAK0iB,OAAOxgB,WAAWmD,GACM,IAA7BrF,KAAK0iB,OAAOxgB,WAAWoD,GAMvBtF,KAAKE,KAAKipC,MAAMmd,QAAQtmD,KAAK0iB,OAAQouB,EAAS9wC,KAAK60D,aAElCnrD,SAAbgtD,IAEAA,GAAW,IAGVA,GAAY12D,KAAKwzD,iBAEXxzD,KAAK22D,WAAW32D,KAAK60D,WAAWxvD,EAAGrF,KAAK60D,WAAWvvD,IAInD,IAjBJ,GAmCfqxD,WAAY,SAAUtxD,EAAGC,EAAGwrC,GAGxB,GAAI9wC,KAAK0iB,OAAO5a,QAAQiE,YAAY6C,OACpC,CACI,GAAU,OAANvJ,GAAoB,OAANC,EAClB,CAEItF,KAAKE,KAAKipC,MAAMkd,iBAAiBrmD,KAAK0iB,OAAQouB,EAAS9wC,KAAK60D,WAE5D,IAAIxvD,GAAIrF,KAAK60D,WAAWxvD,EACpBC,EAAItF,KAAK60D,WAAWvvD,EAgB5B,GAb6B,IAAzBtF,KAAK0iB,OAAOxa,OAAO7C,IAEnBA,IAAMrF,KAAK0iB,OAAO5a,QAAQoE,MAAMvF,MAAQ3G,KAAK0iB,OAAOxa,OAAO7C,GAGlC,IAAzBrF,KAAK0iB,OAAOxa,OAAO5C,IAEnBA,IAAMtF,KAAK0iB,OAAO5a,QAAQoE,MAAMtF,OAAS5G,KAAK0iB,OAAOxa,OAAO5C,GAGhED,GAAKrF,KAAK0iB,OAAO5a,QAAQoE,MAAM7G,EAC/BC,GAAKtF,KAAK0iB,OAAO5a,QAAQoE,MAAM5G,EAE3BtF,KAAK0iB,OAAO5a,QAAQgG,OAEpBzI,GAAKrF,KAAK0iB,OAAO5a,QAAQgG,KAAKzI,EAC9BC,GAAKtF,KAAK0iB,OAAO5a,QAAQgG,KAAKxI,EAG1BD,EAAIrF,KAAK0iB,OAAO5a,QAAQsF,KAAK/H,GAAKA,EAAIrF,KAAK0iB,OAAO5a,QAAQsF,KAAK8rB,OAAS5zB,EAAItF,KAAK0iB,OAAO5a,QAAQsF,KAAK9H,GAAKA,EAAItF,KAAK0iB,OAAO5a,QAAQsF,KAAKyuB,QAIvI,MAFA77B,MAAK42D,IAAMvxD,EACXrF,KAAK62D,IAAMvxD,GACJ,CAIftF,MAAK42D,IAAMvxD,EACXrF,KAAK62D,IAAMvxD,EAEXtF,KAAKE,KAAKipC,MAAMkY,WAAWl6B,UAAU,EAAG,EAAG,EAAG,GAC9CnnB,KAAKE,KAAKipC,MAAMkY,WAAW5yC,UAAUzO,KAAK0iB,OAAO5a,QAAQiE,YAAY6C,OAAQvJ,EAAGC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAElG,IAAI6K,GAAMnQ,KAAKE,KAAKipC,MAAMkY,WAAWtwC,aAAa,EAAG,EAAG,EAAG,EAE3D,IAAIZ,EAAIa,KAAK,IAAMhR,KAAK0zD,kBAEpB,OAAO,EAIf,OAAO,GAaX9rB,OAAQ,SAAUkJ,GAEd,MAAoB,QAAhB9wC,KAAK0iB,QAA0ChZ,SAAvB1J,KAAK0iB,OAAO9gB,OAMnC5B,KAAK0hD,SAAY1hD,KAAK0iB,OAAOjhB,SAAYzB,KAAK0iB,OAAO9gB,OAAOH,QAM7DzB,KAAKy0D,cAEAz0D,KAAK20D,oBAEN30D,KAAK20D,kBAAqB9rC,EAAOhoB,KAAKu6B,SAAS0V,EAAQzrC,EAAGyrC,EAAQxrC,EAAGtF,KAAKq0D,UAAUhvD,EAAGrF,KAAKq0D,UAAU/uD,IAAMtF,KAAKm0D,uBAGjHn0D,KAAK20D,mBAAqB30D,KAAK00D,eAE/B10D,KAAK82D,UAAUhmB,IAGZ,GAEF9wC,KAAK2zD,WAAa3zD,KAAK+2D,oBAAsBjmB,EAAQ76B,GAEnDjW,KAAKg3D,WAAWlmB,GAElB9wC,KAAK80D,aAAahkB,EAAQ76B,IAAIg/C,OAE/Bj1D,KAAKowD,iBAAiBtf,IAEtB9wC,KAAK80D,aAAahkB,EAAQ76B,IAAI5Q,EAAIyrC,EAAQzrC,EAAIrF,KAAK0iB,OAAOrd,EAC1DrF,KAAK80D,aAAahkB,EAAQ76B,IAAI3Q,EAAIwrC,EAAQxrC,EAAItF,KAAK0iB,OAAOpd,GACnD,IAIPtF,KAAKwwD,mBAAmB1f,IACjB,GAXV,QAtBD9wC,KAAKwwD,mBAAmB1f,IACjB,GATX,QAsDJ2f,oBAAqB,SAAU3f,EAASuF,GAEpC,GAAoB,OAAhBr2C,KAAK0iB,OAAT,CAMA,GAAI1R,GAAOhR,KAAK80D,aAAahkB,EAAQ76B,GAErC,IAAIjF,EAAKikD,UAAW,GAASnkB,EAAQ78B,MACrC,CACI,GAAIgjD,GAAajmD,EAAKikD,UAAW,CAEjCjkD,GAAKikD,QAAS,EACdjkD,EAAKkkD,OAAQ,EACblkD,EAAKmkD,SAAWn1D,KAAKE,KAAK8nC,KAAKA,KAC/Bh3B,EAAK3L,EAAIyrC,EAAQzrC,EAAIrF,KAAK0iB,OAAOrd,EACjC2L,EAAK1L,EAAIwrC,EAAQxrC,EAAItF,KAAK0iB,OAAOpd,EAE7BtF,KAAK6yD,eAAiB7hD,EAAK2+C,aAAc,IAEzC3vD,KAAKE,KAAK0Q,OAAOgL,MAAMs5B,OAAS,UAChCl1C,KAAK8yD,gBAAiB,IAGrBzc,GAAU4gB,GAAaj3D,KAAK0iB,QAAU1iB,KAAK0iB,OAAOi0B,QAEnD32C,KAAK0iB,OAAOi0B,OAAOugB,qBAAqBl3D,KAAK0iB,OAAQouB,GAGrD9wC,KAAK0iB,OAAO9gB,QAAU5B,KAAK0iB,OAAO9gB,OAAOwT,OAASyT,EAAOoK,OAEzDjzB,KAAK0iB,OAAO9gB,OAAO0zC,iBAAiBpN,SAASloC,KAAK0iB,OAAQouB,MActE0f,mBAAoB,SAAU1f,EAASuF,GAEnC,GAAoB,OAAhBr2C,KAAK0iB,OAAT,CAMA,GAAI1R,GAAOhR,KAAK80D,aAAahkB,EAAQ76B,GAErCjF,GAAKikD,QAAS,EACdjkD,EAAKkkD,OAAQ,EACblkD,EAAKokD,QAAUp1D,KAAKE,KAAK8nC,KAAKA,KAE1BhoC,KAAK6yD,eAAiB7hD,EAAK2+C,aAAc,IAEzC3vD,KAAKE,KAAK0Q,OAAOgL,MAAMs5B,OAAS,UAChCl1C,KAAK8yD,gBAAiB,IAGrBzc,GAAUr2C,KAAK0iB,QAAU1iB,KAAK0iB,OAAOi0B,SAEtC32C,KAAK0iB,OAAOi0B,OAAOwgB,oBAAoBn3D,KAAK0iB,OAAQouB,GAEhD9wC,KAAK0iB,QAAU1iB,KAAK0iB,OAAO9gB,QAAU5B,KAAK0iB,OAAO9gB,OAAOwT,OAASyT,EAAOoK,OAExEjzB,KAAK0iB,OAAO9gB,OAAO2zC,gBAAgBrN,SAASloC,KAAK0iB,OAAQouB,MAarEoe,gBAAiB,SAAUpe,GAEvB,GAAoB,OAAhB9wC,KAAK0iB,OAAT,CAMA,GAAI1R,GAAOhR,KAAK80D,aAAahkB,EAAQ76B,GAErC,KAAKjF,EAAK+6C,QAAU/6C,EAAKikD,OACzB,CACI,GAAIj1D,KAAKyzD,oBAAsBzzD,KAAK22D,WAAW,KAAM,KAAM7lB,GAEvD,MAYJ,IATA9/B,EAAK+6C,QAAS,EACd/6C,EAAKg7C,MAAO,EACZh7C,EAAKi7C,SAAWjsD,KAAKE,KAAK8nC,KAAKA,KAE/BhoC,KAAKq0D,UAAU7wD,IAAIstC,EAAQzrC,EAAGyrC,EAAQxrC,GAGtCwrC,EAAQ78B,OAAQ,EAEZjU,KAAK0iB,QAAU1iB,KAAK0iB,OAAOi0B,SAE3B32C,KAAK0iB,OAAOi0B,OAAOygB,qBAAqBp3D,KAAK0iB,OAAQouB,GAGjD9wC,KAAK0iB,QAAU1iB,KAAK0iB,OAAO9gB,QAAU5B,KAAK0iB,OAAO9gB,OAAOwT,OAASyT,EAAOoK,OAExEjzB,KAAK0iB,OAAO9gB,OAAOwzC,iBAAiBlN,SAASloC,KAAK0iB,OAAQouB,GAI1C,OAAhB9wC,KAAK0iB,QAEL,MAKJ1iB,MAAK2zD,WAAa3zD,KAAK2vD,aAAc,IAEN,IAA3B3vD,KAAKo0D,mBAA0D,IAA/Bp0D,KAAKm0D,sBAErCn0D,KAAK82D,UAAUhmB,IAIf9wC,KAAKy0D,cAAe,EAEpBz0D,KAAK20D,kBAAoD,IAA/B30D,KAAKm0D,sBAE3Bn0D,KAAKo0D,kBAAoB,GAEzBp0D,KAAK00D,eAAgB,EACrB10D,KAAKE,KAAK8nC,KAAK2O,OAAO7Y,IAAI99B,KAAKo0D,kBAAmBp0D,KAAKq3D,gBAAiBr3D,KAAM8wC,IAI9E9wC,KAAK00D,eAAgB,IAK7B10D,KAAKg4C,YAELh4C,KAAK0iB,OAAOs1B,gBAaxBqf,gBAAiB,SAAUvmB,GAEvB9wC,KAAK00D,eAAgB,EAEjB10D,KAAKy0D,cAAgBz0D,KAAK0iB,QAEtB1iB,KAAK20D,mBAEL30D,KAAK82D,UAAUhmB,IAY3BkgB,iBAAkB,SAAUlgB,GAExB,GAAoB,OAAhB9wC,KAAK0iB,OAAT,CAMA,GAAI1R,GAAOhR,KAAK80D,aAAahkB,EAAQ76B,GAGrC,IAAIjF,EAAK+6C,QAAUjb,EAAQkb,KAC3B,CACIh7C,EAAK+6C,QAAS,EACd/6C,EAAKg7C,MAAO,EACZh7C,EAAKk7C,OAASlsD,KAAKE,KAAK8nC,KAAKA,KAC7Bh3B,EAAKqkD,aAAerkD,EAAKk7C,OAASl7C,EAAKi7C,QAGvC,IAAIgJ,GAASj1D,KAAKowD,iBAAiBtf,EAE/B9wC,MAAK0iB,QAAU1iB,KAAK0iB,OAAOi0B,SAEtB32C,KAAKi0D,yBACNj0D,KAAKi0D,uBAA2Bj0D,KAAK2zD,WAAa3zD,KAAK2vD,WAAa3vD,KAAK+2D,oBAAsBjmB,EAAQ76B,KAEvGjW,KAAK0iB,OAAOi0B,OAAO2gB,mBAAmBt3D,KAAK0iB,OAAQouB,EAASmkB,GAG5Dj1D,KAAK0iB,QAAU1iB,KAAK0iB,OAAO9gB,QAAU5B,KAAK0iB,OAAO9gB,OAAOwT,OAASyT,EAAOoK,OAExEjzB,KAAK0iB,OAAO9gB,OAAOyzC,eAAenN,SAASloC,KAAK0iB,OAAQouB,EAASmkB,GAIjEA,IAEAA,EAASj1D,KAAKowD,iBAAiBtf,KAIvC9/B,EAAKikD,OAASA,GAETA,GAAUj1D,KAAK6yD,gBAEhB7yD,KAAKE,KAAK0Q,OAAOgL,MAAMs5B,OAAS,UAChCl1C,KAAK8yD,gBAAiB,GAI1BhiB,EAAQ78B,OAAQ,EAEhBjU,KAAKy0D,cAAe,EAGhBz0D,KAAK2zD,WAAa3zD,KAAK2vD,WAAa3vD,KAAK+2D,oBAAsBjmB,EAAQ76B,IAEvEjW,KAAKu3D,SAASzmB,MAY1BkmB,WAAY,SAAUlmB,EAAS0mB,GAE3B,GAAI1mB,EAAQkb,KAGR,MADAhsD,MAAKu3D,SAASzmB,IACP,CAGOpnC,UAAd8tD,IAEAA,GAAY,EAGhB,IAAI9+B,GAAK14B,KAAKy3D,eAAe3mB,EAAQzrC,GAAKrF,KAAKu0D,WAAWlvD,EAAIrF,KAAK+zD,WAAW1uD,EAC1EqyD,EAAK13D,KAAK23D,eAAe7mB,EAAQxrC,GAAKtF,KAAKu0D,WAAWjvD,EAAItF,KAAK+zD,WAAWzuD,CAE9E,IAAItF,KAAK0iB,OAAOkzB,cAER51C,KAAK+yD,sBAEL/yD,KAAK0iB,OAAOmzB,aAAaxwC,EAAIqzB,GAG7B14B,KAAKgzD,oBAELhzD,KAAK0iB,OAAOmzB,aAAavwC,EAAIoyD,GAG7B13D,KAAK4zD,YAEL5zD,KAAK43D,kBAGL53D,KAAK6zD,cAEL7zD,KAAK63D,oBAGL73D,KAAKkzD,aAELlzD,KAAK0iB,OAAOmzB,aAAaxwC,EAAIxE,KAAKw6B,OAAOr7B,KAAK0iB,OAAOmzB,aAAaxwC,EAAKrF,KAAKszD,YAActzD,KAAKozD,OAAUpzD,KAAKozD,OAASpzD,KAAKozD,MAASpzD,KAAKszD,YAActzD,KAAKozD,MAC7JpzD,KAAK0iB,OAAOmzB,aAAavwC,EAAIzE,KAAKw6B,OAAOr7B,KAAK0iB,OAAOmzB,aAAavwC,EAAKtF,KAAKuzD,YAAcvzD,KAAKqzD,OAAUrzD,KAAKqzD,OAASrzD,KAAKqzD,MAASrzD,KAAKuzD,YAAcvzD,KAAKqzD,MAC7JrzD,KAAKs0D,UAAU9wD,IAAIxD,KAAK0iB,OAAOmzB,aAAaxwC,EAAGrF,KAAK0iB,OAAOmzB,aAAavwC,QAIhF,CACI,GAAIoJ,GAAK1O,KAAKE,KAAKob,OAAOjW,EAAIrF,KAAK80D,aAAahkB,EAAQ76B,IAAI8+C,KACxDpmD,EAAK3O,KAAKE,KAAKob,OAAOhW,EAAItF,KAAK80D,aAAahkB,EAAQ76B,IAAI++C,IAExDh1D,MAAK+yD,sBAEL/yD,KAAK0iB,OAAOrd,EAAIqzB,EAAKhqB,GAGrB1O,KAAKgzD,oBAELhzD,KAAK0iB,OAAOpd,EAAIoyD,EAAK/oD,GAGrB3O,KAAK4zD,YAEL5zD,KAAK43D,kBAGL53D,KAAK6zD,cAEL7zD,KAAK63D,oBAGL73D,KAAKkzD,aAELlzD,KAAK0iB,OAAOrd,EAAIxE,KAAKw6B,OAAOr7B,KAAK0iB,OAAOrd,EAAKrF,KAAKszD,YAActzD,KAAKozD,OAAUpzD,KAAKozD,OAASpzD,KAAKozD,MAASpzD,KAAKszD,YAActzD,KAAKozD,MACnIpzD,KAAK0iB,OAAOpd,EAAIzE,KAAKw6B,OAAOr7B,KAAK0iB,OAAOpd,EAAKtF,KAAKuzD,YAAcvzD,KAAKqzD,OAAUrzD,KAAKqzD,OAASrzD,KAAKqzD,MAASrzD,KAAKuzD,YAAcvzD,KAAKqzD,MACnIrzD,KAAKs0D,UAAU9wD,IAAIxD,KAAK0iB,OAAOrd,EAAGrF,KAAK0iB,OAAOpd,IAMtD,MAFAtF,MAAK0iB,OAAOi0B,OAAOmhB,aAAa5vB,SAASloC,KAAK0iB,OAAQouB,EAASpY,EAAIg/B,EAAI13D,KAAKs0D,UAAWkD,IAEhF,GAYXO,SAAU,SAAU3R,EAAW4R,GAK3B,MAHA5R,GAAYA,GAAa,EACzB4R,EAAQA,GAAS,IAETh4D,KAAK80D,aAAa1O,GAAW6O,QAAUj1D,KAAKi4D,aAAa7R,GAAa4R,GAYlFE,QAAS,SAAU9R,EAAW4R,GAK1B,MAHA5R,GAAYA,GAAa,EACzB4R,EAAQA,GAAS,IAETh4D,KAAK80D,aAAa1O,GAAW8O,OAAUl1D,KAAKE,KAAK8nC,KAAKA,KAAOhoC,KAAK80D,aAAa1O,GAAWgP,QAAU4C,GAYhHvL,YAAa,SAAUrG,EAAW4R,GAK9B,MAHA5R,GAAYA,GAAa,EACzB4R,EAAQA,GAAS,IAETh4D,KAAK80D,aAAa1O,GAAW2F,QAAU/rD,KAAKq1D,aAAajP,GAAa4R,GAYlFtL,aAAc,SAAUtG,EAAW4R,GAK/B,MAHA5R,GAAYA,GAAa,EACzB4R,EAAQA,GAAS,IAETh4D,KAAK80D,aAAa1O,GAAW4F,MAAShsD,KAAKE,KAAK8nC,KAAKA,KAAOhoC,KAAK80D,aAAa1O,GAAW8F,OAAS8L,GAW9GC,aAAc,SAAU7R,GAIpB,MAFAA,GAAYA,GAAa,EAErBpmD,KAAK80D,aAAa1O,GAAW6O,OAEtBj1D,KAAKE,KAAK8nC,KAAKA,KAAOhoC,KAAK80D,aAAa1O,GAAW+O,SAGvD,IAWXE,aAAc,SAAUjP,GAIpB,MAFAA,GAAYA,GAAa,EAErBpmD,KAAK80D,aAAa1O,GAAW2F,OAEtB/rD,KAAKE,KAAK8nC,KAAKA,KAAOhoC,KAAK80D,aAAa1O,GAAW6F,SAGvD,IAgCXkM,WAAY,SAAUC,EAAYpgB,EAAYqgB,EAAcC,EAAgB1E,EAAYC,GAEjEnqD,SAAf0uD,IAA4BA,GAAa,GAC1B1uD,SAAfsuC,IAA4BA,GAAa,GACxBtuC,SAAjB2uD,IAA8BA,GAAe,GAC1B3uD,SAAnB4uD,IAAgCA,EAAiB,KAClC5uD,SAAfkqD,IAA4BA,EAAa,MACxBlqD,SAAjBmqD,IAA8BA,EAAe,MAEjD7zD,KAAKu0D,WAAa,GAAI1rC,GAAOznB,MAC7BpB,KAAK2zD,WAAY,EACjB3zD,KAAKg4C,WAAaA,EAClBh4C,KAAK+zD,WAAa,GAAIlrC,GAAOznB,MAC7BpB,KAAKg0D,eAAiBoE,EAEtBp4D,KAAKyzD,kBAAoB4E,EACzBr4D,KAAK0zD,kBAAoB4E,EAErB1E,IAEA5zD,KAAK4zD,WAAaA,GAGlBC,IAEA7zD,KAAK6zD,aAAeA,IAW5B0E,YAAa,WAET,GAAIv4D,KAAK80D,aAEL,IAAK,GAAI7xD,GAAI,EAAO,GAAJA,EAAQA,IAEpBjD,KAAK80D,aAAa7xD,GAAG0sD,WAAY,CAIzC3vD,MAAK2zD,WAAY,EACjB3zD,KAAK2vD,WAAY,EACjB3vD,KAAK+2D,kBAAoB,GACzB/2D,KAAKy0D,cAAe,GAUxBqC,UAAW,SAAUhmB,GAEjB,GAAIzrC,GAAIrF,KAAK0iB,OAAOrd,EAChBC,EAAItF,KAAK0iB,OAAOpd,CAUpB,IARAtF,KAAK2vD,WAAY,EACjB3vD,KAAK+2D,kBAAoBjmB,EAAQ76B,GAEjCjW,KAAK80D,aAAahkB,EAAQ76B,IAAI8+C,KAAO/0D,KAAKE,KAAKob,OAAOjW,EACtDrF,KAAK80D,aAAahkB,EAAQ76B,IAAI++C,KAAOh1D,KAAKE,KAAKob,OAAOhW,EAEtDtF,KAAK80D,aAAahkB,EAAQ76B,IAAI05C,WAAY,EAEtC3vD,KAAK0iB,OAAOkzB,cAChB,CACI,GAAI51C,KAAKg0D,eACT,CACI,GAAIxtD,GAASxG,KAAK0iB,OAAO7c,WAEzB7F,MAAK0iB,OAAOmzB,aAAaxwC,EAAIrF,KAAKy3D,eAAe3mB,EAAQzrC,IAAMrF,KAAK0iB,OAAOmzB,aAAaxwC,EAAImB,EAAOsnB,SACnG9tB,KAAK0iB,OAAOmzB,aAAavwC,EAAItF,KAAK23D,eAAe7mB,EAAQxrC,IAAMtF,KAAK0iB,OAAOmzB,aAAavwC,EAAIkB,EAAOunB,SAGvG/tB,KAAKu0D,WAAWv5B,MAAMh7B,KAAK0iB,OAAOmzB,aAAaxwC,EAAIyrC,EAAQzrC,EAAGrF,KAAK0iB,OAAOmzB,aAAavwC,EAAIwrC,EAAQxrC,OAGvG,CACI,GAAItF,KAAKg0D,eACT,CACI,GAAIxtD,GAASxG,KAAK0iB,OAAO7c,WAEzB7F,MAAK0iB,OAAOrd,EAAIrF,KAAKy3D,eAAe3mB,EAAQzrC,IAAMrF,KAAK0iB,OAAOrd,EAAImB,EAAOsnB,SACzE9tB,KAAK0iB,OAAOpd,EAAItF,KAAK23D,eAAe7mB,EAAQxrC,IAAMtF,KAAK0iB,OAAOpd,EAAIkB,EAAOunB,SAG7E/tB,KAAKu0D,WAAWv5B,MAAMh7B,KAAK0iB,OAAOrd,EAAIrF,KAAKy3D,eAAe3mB,EAAQzrC,GAAIrF,KAAK0iB,OAAOpd,EAAItF,KAAK23D,eAAe7mB,EAAQxrC,IAGtHtF,KAAKg3D,WAAWlmB,GAAS,GAErB9wC,KAAKg4C,aAELh4C,KAAKw0D,YAAa,EAClBx0D,KAAK0iB,OAAOs1B,cAGhBh4C,KAAKk0D,eAAe1wD,IAAI6B,EAAGC,GAE3BtF,KAAK0iB,OAAOi0B,OAAO6hB,qBAAqBx4D,KAAK0iB,OAAQouB,EAASzrC,EAAGC,GAEjEtF,KAAKy0D,cAAe,GAUxBgD,eAAgB,SAAUpyD,GAQtB,MANIrF,MAAK8zD,aAELzuD,GAAKrF,KAAKE,KAAKmB,MAAMo3D,KAAKC,YAAYrzD,EACtCA,GAAKrF,KAAKE,KAAKmB,MAAMo3D,KAAKE,mBAAmBtzD,GAG1CA,GAUXsyD,eAAgB,SAAUryD,GAQtB,MANItF,MAAK8zD,aAELxuD,GAAKtF,KAAKE,KAAKmB,MAAMo3D,KAAKC,YAAYpzD,EACtCA,GAAKtF,KAAKE,KAAKmB,MAAMo3D,KAAKE,mBAAmBrzD,GAG1CA,GAUXiyD,SAAU,SAAUzmB,GAEhB9wC,KAAK2vD,WAAY,EACjB3vD,KAAK+2D,kBAAoB,GACzB/2D,KAAK80D,aAAahkB,EAAQ76B,IAAI05C,WAAY,EAC1C3vD,KAAKw0D,YAAa,EAClBx0D,KAAKy0D,cAAe,EAEhBz0D,KAAKmzD,gBAEDnzD,KAAK0iB,OAAOkzB,eAEZ51C,KAAK0iB,OAAOmzB,aAAaxwC,EAAIxE,KAAKw6B,OAAOr7B,KAAK0iB,OAAOmzB,aAAaxwC,EAAKrF,KAAKszD,YAActzD,KAAKozD,OAAUpzD,KAAKozD,OAASpzD,KAAKozD,MAASpzD,KAAKszD,YAActzD,KAAKozD,MAC7JpzD,KAAK0iB,OAAOmzB,aAAavwC,EAAIzE,KAAKw6B,OAAOr7B,KAAK0iB,OAAOmzB,aAAavwC,EAAKtF,KAAKuzD,YAAcvzD,KAAKqzD,OAAUrzD,KAAKqzD,OAASrzD,KAAKqzD,MAASrzD,KAAKuzD,YAAcvzD,KAAKqzD,QAI7JrzD,KAAK0iB,OAAOrd,EAAIxE,KAAKw6B,OAAOr7B,KAAK0iB,OAAOrd,EAAKrF,KAAKszD,YAActzD,KAAKozD,OAAUpzD,KAAKozD,OAASpzD,KAAKozD,MAASpzD,KAAKszD,YAActzD,KAAKozD,MACnIpzD,KAAK0iB,OAAOpd,EAAIzE,KAAKw6B,OAAOr7B,KAAK0iB,OAAOpd,EAAKtF,KAAKuzD,YAAcvzD,KAAKqzD,OAAUrzD,KAAKqzD,OAASrzD,KAAKqzD,MAASrzD,KAAKuzD,YAAcvzD,KAAKqzD,QAI3IrzD,KAAK0iB,OAAOi0B,OAAOiiB,oBAAoB54D,KAAK0iB,OAAQouB,GAEhD9wC,KAAKowD,iBAAiBtf,MAAa,GAEnC9wC,KAAKwwD,mBAAmB1f,IAYhC+nB,YAAa,SAAUC,EAAiBC,GAEZrvD,SAApBovD,IAAiCA,GAAkB,GACjCpvD,SAAlBqvD,IAA+BA,GAAgB,GAEnD/4D,KAAK+yD,oBAAsB+F,EAC3B94D,KAAKgzD,kBAAoB+F,GAgB7BC,WAAY,SAAU5F,EAAOC,EAAO4F,EAAQC,EAAW5F,EAAaC,GAEjD7pD,SAAXuvD,IAAwBA,GAAS,GACnBvvD,SAAdwvD,IAA2BA,GAAY,GACvBxvD,SAAhB4pD,IAA6BA,EAAc,GAC3B5pD,SAAhB6pD,IAA6BA,EAAc,GAE/CvzD,KAAKozD,MAAQA,EACbpzD,KAAKqzD,MAAQA,EACbrzD,KAAKszD,YAAcA,EACnBtzD,KAAKuzD,YAAcA,EACnBvzD,KAAKkzD,WAAa+F,EAClBj5D,KAAKmzD,cAAgB+F,GASzBC,YAAa,WAETn5D,KAAKkzD,YAAa,EAClBlzD,KAAKmzD,eAAgB,GAUzByE,gBAAiB,WAET53D,KAAK0iB,OAAOkzB,eAER51C,KAAK0iB,OAAOmzB,aAAaxwC,EAAIrF,KAAK4zD,WAAWz6B,KAE7Cn5B,KAAK0iB,OAAOmzB,aAAaxwC,EAAIrF,KAAK4zD,WAAWz6B,KAEvCn5B,KAAK0iB,OAAOmzB,aAAaxwC,EAAIrF,KAAK0iB,OAAO/b,MAAS3G,KAAK4zD,WAAW16B,QAExEl5B,KAAK0iB,OAAOmzB,aAAaxwC,EAAIrF,KAAK4zD,WAAW16B,MAAQl5B,KAAK0iB,OAAO/b,OAGjE3G,KAAK0iB,OAAOmzB,aAAavwC,EAAItF,KAAK4zD,WAAWh4B,IAE7C57B,KAAK0iB,OAAOmzB,aAAavwC,EAAItF,KAAK4zD,WAAWh4B,IAEvC57B,KAAK0iB,OAAOmzB,aAAavwC,EAAItF,KAAK0iB,OAAO9b,OAAU5G,KAAK4zD,WAAW/3B,SAEzE77B,KAAK0iB,OAAOmzB,aAAavwC,EAAItF,KAAK4zD,WAAW/3B,OAAS77B,KAAK0iB,OAAO9b,UAKlE5G,KAAK0iB,OAAOyW,KAAOn5B,KAAK4zD,WAAWz6B,KAEnCn5B,KAAK0iB,OAAOrd,EAAIrF,KAAK4zD,WAAWvuD,EAAIrF,KAAK0iB,OAAOa,QAE3CvjB,KAAK0iB,OAAOwW,MAAQl5B,KAAK4zD,WAAW16B,QAEzCl5B,KAAK0iB,OAAOrd,EAAIrF,KAAK4zD,WAAW16B,OAASl5B,KAAK0iB,OAAO/b,MAAQ3G,KAAK0iB,OAAOa;AAGzEvjB,KAAK0iB,OAAOkZ,IAAM57B,KAAK4zD,WAAWh4B,IAElC57B,KAAK0iB,OAAOpd,EAAItF,KAAK4zD,WAAWh4B,IAAM57B,KAAK0iB,OAAOc,QAE7CxjB,KAAK0iB,OAAOmZ,OAAS77B,KAAK4zD,WAAW/3B,SAE1C77B,KAAK0iB,OAAOpd,EAAItF,KAAK4zD,WAAW/3B,QAAU77B,KAAK0iB,OAAO9b,OAAS5G,KAAK0iB,OAAOc,YAWvFq0C,kBAAmB,WAEX73D,KAAK0iB,OAAOkzB,eAAiB51C,KAAK6zD,aAAaje,eAE3C51C,KAAK0iB,OAAOmzB,aAAaxwC,EAAIrF,KAAK6zD,aAAahe,aAAaxwC,EAE5DrF,KAAK0iB,OAAOmzB,aAAaxwC,EAAIrF,KAAK6zD,aAAahe,aAAaxwC,EAEtDrF,KAAK0iB,OAAOmzB,aAAaxwC,EAAIrF,KAAK0iB,OAAO/b,MAAU3G,KAAK6zD,aAAahe,aAAaxwC,EAAIrF,KAAK6zD,aAAaltD,QAE9G3G,KAAK0iB,OAAOmzB,aAAaxwC,EAAKrF,KAAK6zD,aAAahe,aAAaxwC,EAAIrF,KAAK6zD,aAAaltD,MAAS3G,KAAK0iB,OAAO/b,OAGxG3G,KAAK0iB,OAAOmzB,aAAavwC,EAAItF,KAAK6zD,aAAahe,aAAavwC,EAE5DtF,KAAK0iB,OAAOmzB,aAAavwC,EAAItF,KAAK6zD,aAAahe,aAAavwC,EAEtDtF,KAAK0iB,OAAOmzB,aAAavwC,EAAItF,KAAK0iB,OAAO9b,OAAW5G,KAAK6zD,aAAahe,aAAavwC,EAAItF,KAAK6zD,aAAajtD,SAE/G5G,KAAK0iB,OAAOmzB,aAAavwC,EAAKtF,KAAK6zD,aAAahe,aAAavwC,EAAItF,KAAK6zD,aAAajtD,OAAU5G,KAAK0iB,OAAO9b,UAKzG5G,KAAK0iB,OAAOyW,KAAOn5B,KAAK6zD,aAAa16B,KAErCn5B,KAAK0iB,OAAOrd,EAAIrF,KAAK6zD,aAAa16B,KAAOn5B,KAAK0iB,OAAOa,QAEhDvjB,KAAK0iB,OAAOwW,MAAQl5B,KAAK6zD,aAAa36B,QAE3Cl5B,KAAK0iB,OAAOrd,EAAIrF,KAAK6zD,aAAa36B,OAASl5B,KAAK0iB,OAAO/b,MAAQ3G,KAAK0iB,OAAOa,UAG3EvjB,KAAK0iB,OAAOkZ,IAAM57B,KAAK6zD,aAAaj4B,IAEpC57B,KAAK0iB,OAAOpd,EAAItF,KAAK6zD,aAAaj4B,IAAM57B,KAAK0iB,OAAOc,QAE/CxjB,KAAK0iB,OAAOmZ,OAAS77B,KAAK6zD,aAAah4B,SAE5C77B,KAAK0iB,OAAOpd,EAAItF,KAAK6zD,aAAah4B,QAAU77B,KAAK0iB,OAAO9b,OAAS5G,KAAK0iB,OAAOc,aAQ7FqF,EAAO+pC,aAAa/vD,UAAUC,YAAc+lB,EAAO+pC,aAsBnD/pC,EAAOm8B,QAAU,SAAU9kD,GAKvBF,KAAKE,KAAOA,EAMZF,KAAKo5D,oBAMLp5D,KAAKq5D,YAOLr5D,KAAKs5D,SAAU,EAOft5D,KAAK0hD,SAAU,EAOf1hD,KAAKu5D,2BAA6BvwC,UAAUwwC,qBAAuBxwC,UAAUywC,gBAA8D,IAA3CzwC,UAAU0wC,UAAUtwD,QAAQ,eAAwB4f,UAAU2wC,YAQ9J35D,KAAK45D,wBAQL55D,KAAK65D,mBAKL75D,KAAK+rC,gBAAkB/rC,KAKvBA,KAAK85D,kBAAoB,KAKzB95D,KAAK+5D,qBAAuB,KAK5B/5D,KAAKg6D,eAAiB,KAKtBh6D,KAAKi6D,aAAe,KAKpBj6D,KAAKk6D,eAAiB,KAKtBl6D,KAAKm6D,gBAAkB,KAMvBn6D,KAAKo6D,oBAAsB,KAM3Bp6D,KAAKq6D,qBAAuB,KAM5Br6D,KAAKs6D,WACD,GAAIzxC,GAAO0xC,UAAUr6D,EAAMF,MAC3B,GAAI6oB,GAAO0xC,UAAUr6D,EAAMF,MAC3B,GAAI6oB,GAAO0xC,UAAUr6D,EAAMF,MAC3B,GAAI6oB,GAAO0xC,UAAUr6D,EAAMF,QAKnC6oB,EAAOm8B,QAAQniD,WAUX23D,aAAc,SAAUltD,EAASmtD,GAEJ,mBAAdA,KAEPz6D,KAAK85D,kBAAoD,kBAAxBW,GAAUC,UAA4BD,EAAUC,UAAY16D,KAAK85D,kBAClG95D,KAAK+5D,qBAA0D,kBAA3BU,GAAUE,aAA+BF,EAAUE,aAAe36D,KAAK+5D,qBAC3G/5D,KAAKg6D,eAA8C,kBAArBS,GAAU/W,OAAyB+W,EAAU/W,OAAS1jD,KAAKg6D,eACzFh6D,KAAKi6D,aAA0C,kBAAnBQ,GAAU9W,KAAuB8W,EAAU9W,KAAO3jD,KAAKi6D,aACnFj6D,KAAKk6D,eAA8C,kBAArBO,GAAUG,OAAyBH,EAAUG,OAAS56D,KAAKk6D,eACzFl6D,KAAKm6D,gBAAgD,kBAAtBM,GAAUlO,QAA0BkO,EAAUlO,QAAUvsD,KAAKm6D,gBAC5Fn6D,KAAK+rC,gBAAkBz+B,IAW/BjC,MAAO,WAEH,IAAIrL,KAAKs5D,QAAT,CAMAt5D,KAAKs5D,SAAU,CAEf,IAAIpqB,GAAQlvC,IAEZA,MAAK66D,oBAAsB,SAAU3nB,GACjC,MAAOhE,GAAM4rB,mBAAmB5nB,IAGpClzC,KAAK+6D,uBAAyB,SAAU7nB,GACpC,MAAOhE,GAAM8rB,sBAAsB9nB,IAGvCrgC,OAAOugC,iBAAiB,mBAAoBpzC,KAAK66D,qBAAqB,GACtEhoD,OAAOugC,iBAAiB,sBAAuBpzC,KAAK+6D,wBAAwB,KAWhFD,mBAAoB,SAAU5nB,GAE1B,GAAI+nB,GAAS/nB,EAAMsQ,OACnBxjD,MAAKq5D,SAASt1D,KAAKk3D,GACnBj7D,KAAKs6D,UAAUW,EAAOtyD,OAAOuyD,QAAQD,IAWzCD,sBAAuB,SAAU9nB,GAE7B,GAAIioB,GAAajoB,EAAMsQ,OAEvB,KAAK,GAAIvgD,KAAKjD,MAAKq5D,SAEXr5D,KAAKq5D,SAASp2D,GAAG0F,QAAUwyD,EAAWxyD,OAEtC3I,KAAKq5D,SAASxwD,OAAO5F,EAAE,EAI/BjD,MAAKs6D,UAAUa,EAAWxyD,OAAOyyD,cASrCxzB,OAAQ,WAEJ5nC,KAAKq7D,gBAELr7D,KAAKs7D,KAAKC,aACVv7D,KAAKw7D,KAAKD,aACVv7D,KAAKy7D,KAAKF,aACVv7D,KAAK07D,KAAKH,cAUdF,cAAe,WAEX,GAAKr7D,KAAKs5D,QAAV,CAKA,GAAItwC,UAAuB,YAEvB,GAAI2yC,GAAc3yC,UAAU2wC,kBAE3B,IAAI3wC,UAA6B,kBAElC,GAAI2yC,GAAc3yC,UAAUwwC,wBAE3B,IAAIxwC,UAA0B,eAE/B,GAAI2yC,GAAc3yC,UAAUywC,gBAGhC,IAAIkC,EACJ,CACI37D,KAAKq5D,WAIL,KAAK,GAFDuC,IAAkB,EAEb34D,EAAI,EAAGA,EAAI04D,EAAYz4D,eAEjBy4D,GAAY14D,KAAOjD,KAAK45D,qBAAqB32D,KAEpD24D,GAAkB,EAClB57D,KAAK45D,qBAAqB32D,SAAY04D,GAAY14D,IAGlD04D,EAAY14D,IAEZjD,KAAKq5D,SAASt1D,KAAK43D,EAAY14D,IAIzB,IAANA,GAdgCA,KAoBxC,IAAK,GAAIkY,GAAI,EAAGA,EAAInb,KAAKs6D,UAAUp3D,OAAQiY,IAEvCnb,KAAKs6D,UAAUn/C,GAAG0gD,QAAU77D,KAAKq5D,SAASl+C,EAG9C,IAAIygD,EACJ,CAII,IAAK,GAFDE,GADAC,GAAqBC,cAAgBC,eAGhCn4D,EAAI,EAAGA,EAAI9D,KAAKs6D,UAAUp3D,OAAQY,IAIvC,GAFAg4D,EAAY97D,KAAKs6D,UAAUx2D,GAEvBg4D,EAAUI,UAEV,IAAK,GAAIC,GAAI,EAAGA,EAAIn8D,KAAKq5D,SAASn2D,OAAQi5D,IAElCn8D,KAAKq5D,SAAS8C,GAAGxzD,QAAUmzD,EAAUnzD,QAErCozD,EAAiBC,WAAWF,EAAUnzD,QAAS,EAC/CozD,EAAiBE,WAAWn4D,IAAK,EAMjD,KAAK,GAAIg0B,GAAI,EAAGA,EAAI93B,KAAKs6D,UAAUp3D,OAAQ40B,IAIvC,GAFAgkC,EAAY97D,KAAKs6D,UAAUxiC,IAEvBikC,EAAiBE,WAAWnkC,GAAhC,CAKI93B,KAAKq5D,SAASn2D,OAAS,GAEvB44D,EAAUV,YAGd,KAAK,GAAIl6B,GAAI,EAAGA,EAAIlhC,KAAKq5D,SAASn2D,SAE1B64D,EAAiBE,WAAWnkC,GAFMoJ,IAC1C,CAMI,GAAIk7B,GAASp8D,KAAKq5D,SAASn4B,EAE3B,IAAIk7B,EACJ,CACI,GAAIL,EAAiBC,WAAWI,EAAOzzD,OACvC,CACImzD,EAAUV,YACV,UAIAU,EAAUZ,QAAQkB,GAClBL,EAAiBC,WAAWI,EAAOzzD,QAAS,EAC5CozD,EAAiBE,WAAWnkC,IAAK,MAKrCgkC,GAAUV,mBAYlCiB,aAAc,SAAU54D,GAEpB,IAAK,GAAIR,GAAI,EAAGA,EAAIjD,KAAKs6D,UAAUp3D,OAAQD,IAEvCjD,KAAKs6D,UAAUr3D,GAAGq5D,SAAW74D,GAUrCwH,KAAM,WAEFjL,KAAKs5D,SAAU,EAEfzmD,OAAOyhC,oBAAoB,mBAAoBt0C,KAAK66D,qBACpDhoD,OAAOyhC,oBAAoB,sBAAuBt0C,KAAK+6D,yBAQ3DjyB,MAAO,WAEH9oC,KAAK4nC,QAEL,KAAK,GAAI3kC,GAAI,EAAGA,EAAIjD,KAAKs6D,UAAUp3D,OAAQD,IAEvCjD,KAAKs6D,UAAUr3D,GAAG6lC,SAY1B2jB,YAAa,SAAUX,EAAYlmB,GAE/B,IAAK,GAAI3iC,GAAI,EAAGA,EAAIjD,KAAKs6D,UAAUp3D,OAAQD,IAEvC,GAAIjD,KAAKs6D,UAAUr3D,GAAGwpD,YAAYX,EAAYlmB,MAAc,EAExD,OAAO,CAIf,QAAO,GAWX8mB,aAAc,SAAUZ,EAAYlmB,GAEhC,IAAK,GAAI3iC,GAAI,EAAGA,EAAIjD,KAAKs6D,UAAUp3D,OAAQD,IAEvC,GAAIjD,KAAKs6D,UAAUr3D,GAAGypD,aAAaZ,EAAYlmB,MAAc,EAEzD,OAAO,CAIf,QAAO,GAUXmmB,OAAQ,SAAUD,GAEd,IAAK,GAAI7oD,GAAI,EAAGA,EAAIjD,KAAKs6D,UAAUp3D,OAAQD,IAEvC,GAAIjD,KAAKs6D,UAAUr3D,GAAG8oD,OAAOD,MAAgB,EAEzC,OAAO,CAIf,QAAO,GAQX/oD,QAAS,WAEL/C,KAAKiL,MAEL,KAAK,GAAIhI,GAAI,EAAGA,EAAIjD,KAAKs6D,UAAUp3D,OAAQD,IAEvCjD,KAAKs6D,UAAUr3D,GAAGF,YAO9B8lB,EAAOm8B,QAAQniD,UAAUC,YAAc+lB,EAAOm8B,QAQ9C5hD,OAAOC,eAAewlB,EAAOm8B,QAAQniD,UAAW,UAE5CS,IAAK,WACD,MAAOtD,MAAKs5D,WAWpBl2D,OAAOC,eAAewlB,EAAOm8B,QAAQniD,UAAW,aAE5CS,IAAK,WACD,MAAOtD,MAAKu5D,4BAWpBn2D,OAAOC,eAAewlB,EAAOm8B,QAAQniD,UAAW,iBAE5CS,IAAK,WACD,MAAOtD,MAAKq5D,SAASn2D,UAW7BE,OAAOC,eAAewlB,EAAOm8B,QAAQniD,UAAW,QAE5CS,IAAK,WACD,MAAOtD,MAAKs6D,UAAU,MAW9Bl3D,OAAOC,eAAewlB,EAAOm8B,QAAQniD,UAAW,QAE5CS,IAAK,WACD,MAAOtD,MAAKs6D,UAAU,MAW9Bl3D,OAAOC,eAAewlB,EAAOm8B,QAAQniD,UAAW,QAE5CS,IAAK,WACD,MAAOtD,MAAKs6D,UAAU,MAW9Bl3D,OAAOC,eAAewlB,EAAOm8B,QAAQniD,UAAW,QAE5CS,IAAK,WACD,MAAOtD,MAAKs6D,UAAU,MAK9BzxC,EAAOm8B,QAAQuX,SAAW,EAC1B1zC,EAAOm8B,QAAQwX,SAAW,EAC1B3zC,EAAOm8B,QAAQyX,SAAW,EAC1B5zC,EAAOm8B,QAAQ0X,SAAW,EAC1B7zC,EAAOm8B,QAAQ2X,SAAW,EAC1B9zC,EAAOm8B,QAAQ4X,SAAW,EAC1B/zC,EAAOm8B,QAAQ6X,SAAW,EAC1Bh0C,EAAOm8B,QAAQ8X,SAAW,EAC1Bj0C,EAAOm8B,QAAQ+X,SAAW,EAC1Bl0C,EAAOm8B,QAAQgY,SAAW,EAC1Bn0C,EAAOm8B,QAAQiY,UAAY,GAC3Bp0C,EAAOm8B,QAAQkY,UAAY,GAC3Br0C,EAAOm8B,QAAQmY,UAAY,GAC3Bt0C,EAAOm8B,QAAQoY,UAAY,GAC3Bv0C,EAAOm8B,QAAQqY,UAAY,GAC3Bx0C,EAAOm8B,QAAQsY,UAAY,GAE3Bz0C,EAAOm8B,QAAQuY,OAAS,EACxB10C,EAAOm8B,QAAQwY,OAAS,EACxB30C,EAAOm8B,QAAQyY,OAAS,EACxB50C,EAAOm8B,QAAQ0Y,OAAS,EACxB70C,EAAOm8B,QAAQ2Y,OAAS,EACxB90C,EAAOm8B,QAAQ4Y,OAAS,EACxB/0C,EAAOm8B,QAAQ6Y,OAAS,EACxBh1C,EAAOm8B,QAAQ8Y,OAAS,EACxBj1C,EAAOm8B,QAAQ+Y,OAAS,EACxBl1C,EAAOm8B,QAAQgZ,OAAS,EAMxBn1C,EAAOm8B,QAAQiZ,UAAY,EAC3Bp1C,EAAOm8B,QAAQkZ,UAAY,EAC3Br1C,EAAOm8B,QAAQmZ,UAAY,EAC3Bt1C,EAAOm8B,QAAQoZ,UAAY,EAC3Bv1C,EAAOm8B,QAAQqZ,oBAAsB,EACrCx1C,EAAOm8B,QAAQsZ,qBAAuB,EACtCz1C,EAAOm8B,QAAQuZ,qBAAuB,EACtC11C,EAAOm8B,QAAQwZ,sBAAwB,EACvC31C,EAAOm8B,QAAQyZ,aAAe,EAC9B51C,EAAOm8B,QAAQ0Z,cAAgB,EAC/B71C,EAAOm8B,QAAQ2Z,0BAA4B,GAC3C91C,EAAOm8B,QAAQ4Z,2BAA6B,GAE5C/1C,EAAOm8B,QAAQ6Z,kBAAoB,GACnCh2C,EAAOm8B,QAAQ8Z,mBAAqB,GACpCj2C,EAAOm8B,QAAQ+Z,gBAAkB,GACjCl2C,EAAOm8B,QAAQga,kBAAoB,GAGnCn2C,EAAOm8B,QAAQia,qBAAuB,EACtCp2C,EAAOm8B,QAAQka,qBAAuB,EACtCr2C,EAAOm8B,QAAQma,sBAAwB,EACvCt2C,EAAOm8B,QAAQoa,sBAAwB,EAIvCv2C,EAAOm8B,QAAQqa,QAAU,EACzBx2C,EAAOm8B,QAAQsa,aAAe,EAC9Bz2C,EAAOm8B,QAAQua,aAAe,EAC9B12C,EAAOm8B,QAAQwa,eAAiB,EAChC32C,EAAOm8B,QAAQya,SAAW,EAC1B52C,EAAOm8B,QAAQ0a,SAAW,EAC1B72C,EAAOm8B,QAAQ2a,SAAW,EAC1B92C,EAAOm8B,QAAQ4a,SAAW,EAC1B/2C,EAAOm8B,QAAQ6a,aAAe,EAC9Bh3C,EAAOm8B,QAAQ8a,YAAc,EAC7Bj3C,EAAOm8B,QAAQ+a,wBAA0B,GACzCl3C,EAAOm8B,QAAQgb,yBAA2B,GAC1Cn3C,EAAOm8B,QAAQib,cAAgB,GAC/Bp3C,EAAOm8B,QAAQkb,gBAAkB,GACjCr3C,EAAOm8B,QAAQmb,gBAAkB,GACjCt3C,EAAOm8B,QAAQob,iBAAmB,GAClCv3C,EAAOm8B,QAAQqb,mBAAqB,EACpCx3C,EAAOm8B,QAAQsb,mBAAqB,EACpCz3C,EAAOm8B,QAAQub,oBAAsB,EACrC13C,EAAOm8B,QAAQwb,oBAAsB,EAiBrC33C,EAAO0xC,UAAY,SAAUr6D,EAAMugE,GAK/BzgE,KAAKE,KAAOA,EAMZF,KAAK2I,MAAQ,KAMb3I,KAAKk8D,WAAY,EAKjBl8D,KAAK+rC,gBAAkB/rC,KAKvBA,KAAK85D,kBAAoB,KAKzB95D,KAAK+5D,qBAAuB,KAK5B/5D,KAAKg6D,eAAiB,KAKtBh6D,KAAKi6D,aAAe,KAKpBj6D,KAAKk6D,eAAiB,KAKtBl6D,KAAKm6D,gBAAkB,KAKvBn6D,KAAKs8D,SAAW,IAMhBt8D,KAAK0gE,WAAaD,EAMlBzgE,KAAK67D,QAAU,KAMf77D,KAAK2gE,eAAiB,KAMtB3gE,KAAK4gE,YAML5gE,KAAK6gE,YAAc,EAMnB7gE,KAAK8gE,SAML9gE,KAAK+gE,SAAW,GAIpBl4C,EAAO0xC,UAAU13D,WAUb23D,aAAc,SAAUltD,EAASmtD,GAEJ,mBAAdA,KAEPz6D,KAAK85D,kBAAoD,kBAAxBW,GAAUC,UAA4BD,EAAUC,UAAY16D,KAAK85D,kBAClG95D,KAAK+5D,qBAA0D,kBAA3BU,GAAUE,aAA+BF,EAAUE,aAAe36D,KAAK+5D,qBAC3G/5D,KAAKg6D,eAA8C,kBAArBS,GAAU/W,OAAyB+W,EAAU/W,OAAS1jD,KAAKg6D,eACzFh6D,KAAKi6D,aAA0C,kBAAnBQ,GAAU9W,KAAuB8W,EAAU9W,KAAO3jD,KAAKi6D,aACnFj6D,KAAKk6D,eAA8C,kBAArBO,GAAUG,OAAyBH,EAAUG,OAAS56D,KAAKk6D,eACzFl6D,KAAKm6D,gBAAgD,kBAAtBM,GAAUlO,QAA0BkO,EAAUlO,QAAUvsD,KAAKm6D,gBAE5Fn6D,KAAK+rC,gBAAkBz+B,IAY/B0zD,UAAW,SAAUlV,GAEjB,MAAI9rD,MAAK4gE,SAAS9U,GAEP9rD,KAAK4gE,SAAS9U,GAId,MAUfyP,WAAY,WAER,GAAKv7D,KAAKk8D,WAAcl8D,KAAKE,KAAKipC,MAAMuY,SAAY1hD,KAAKE,KAAKipC,MAAMqa,QAAQ9B,WAAY1hD,KAAK67D,QAAQoF,WAAcjhE,KAAK67D,QAAQoF,YAAcjhE,KAAK2gE,gBAAnJ,CAKA,IAAK,GAAI19D,GAAI,EAAGA,EAAIjD,KAAK6gE,YAAa59D,IACtC,CACI,GAAIi+D,GAAeC,MAAMnhE,KAAK67D,QAAQjN,QAAQ3rD,IAAMjD,KAAK67D,QAAQjN,QAAQ3rD,GAAGQ,MAAQzD,KAAK67D,QAAQjN,QAAQ3rD,EAErGi+D,KAAiBlhE,KAAK4gE,SAAS39D,GAAGQ,QAEb,IAAjBy9D,EAEAlhE,KAAKohE,kBAAkBn+D,EAAGi+D,GAEJ,IAAjBA,EAELlhE,KAAKqhE,gBAAgBp+D,EAAGi+D,GAIxBlhE,KAAKshE,mBAAmBr+D,EAAGi+D,IAKvC,IAAK,GAAIv4D,GAAQ,EAAGA,EAAQ3I,KAAK+gE,SAAUp4D,IAC3C,CACI,GAAIlF,GAAQzD,KAAK67D,QAAQ0F,KAAK54D,EAEzBlF,GAAQ,GAAKA,EAAQzD,KAAKs8D,UAAsB,EAAR74D,GAAaA,GAASzD,KAAKs8D,SAEpEt8D,KAAKwhE,kBAAkB74D,EAAOlF,GAI9BzD,KAAKwhE,kBAAkB74D,EAAO,GAItC3I,KAAK2gE,eAAiB3gE,KAAK67D,QAAQoF,YAUvC/F,QAAS,SAAUkB,GAEf,GAAIqF,IAAmBzhE,KAAKk8D,SAE5Bl8D,MAAKk8D,WAAY,EACjBl8D,KAAK2I,MAAQyzD,EAAOzzD,MAEpB3I,KAAK67D,QAAUO,EAEfp8D,KAAK4gE,YACL5gE,KAAK6gE,YAAczE,EAAOxN,QAAQ1rD,OAElClD,KAAK8gE,SACL9gE,KAAK+gE,SAAW3E,EAAOmF,KAAKr+D,MAE5B,KAAK,GAAIwB,GAAI,EAAGA,EAAI1E,KAAK+gE,SAAUr8D,IAE/B1E,KAAK8gE,MAAMp8D,GAAK03D,EAAOmF,KAAK78D,EAGhC,KAAK,GAAIonD,KAAcsQ,GAAOxN,QAE1B9C,EAAanzB,SAASmzB,EAAY,IAClC9rD,KAAK4gE,SAAS9U,GAAc,GAAIjjC,GAAOgjC,aAAa7rD,KAAM8rD,EAG1D2V,IAAmBzhE,KAAK0gE,WAAW5G,mBAEnC95D,KAAK0gE,WAAW5G,kBAAkBp0D,KAAK1F,KAAK0gE,WAAW30B,gBAAiB/rC,KAAK2I,OAG7E84D,GAAmBzhE,KAAK85D,mBAExB95D,KAAK85D,kBAAkBp0D,KAAK1F,KAAK+rC,kBAUzCqvB,WAAY,WAER,GAAIqG,GAAkBzhE,KAAKk8D,UACvBwF,EAAqB1hE,KAAK2I,KAE9B3I,MAAKk8D,WAAY,EACjBl8D,KAAK2I,MAAQ,KAEb3I,KAAK67D,QAAUnyD,MAEf,KAAK,GAAIzG,GAAI,EAAGA,EAAIjD,KAAK6gE,YAAa59D,IAElCjD,KAAK4gE,SAAS39D,GAAGF,SAGrB/C,MAAK4gE,YACL5gE,KAAK6gE,YAAc,EAEnB7gE,KAAK8gE,SACL9gE,KAAK+gE,SAAW,EAEZU,GAAmBzhE,KAAK0gE,WAAW3G,sBAEnC/5D,KAAK0gE,WAAW3G,qBAAqBr0D,KAAK1F,KAAK0gE,WAAW30B,gBAAiB21B,GAG3ED,GAAmBzhE,KAAK+5D,sBAExB/5D,KAAK+5D,qBAAqBr0D,KAAK1F,KAAK+rC,kBAU5ChpC,QAAS,WAEL/C,KAAK67D,QAAUnyD,MAEf,KAAK,GAAIzG,GAAI,EAAGA,EAAIjD,KAAK6gE,YAAa59D,IAElCjD,KAAK4gE,SAAS39D,GAAGF,SAGrB/C,MAAK4gE,YACL5gE,KAAK6gE,YAAc,EAEnB7gE,KAAK8gE,SACL9gE,KAAK+gE,SAAW,EAEhB/gE,KAAK85D,kBAAoB,KACzB95D,KAAK+5D,qBAAuB,KAC5B/5D,KAAKg6D,eAAiB,KACtBh6D,KAAKi6D,aAAe,KACpBj6D,KAAKk6D,eAAiB,KACtBl6D,KAAKm6D,gBAAkB,MAU3BqH,kBAAmB,SAAU74D,EAAOlF,GAE5BzD,KAAK8gE,MAAMn4D,KAAWlF,IAK1BzD,KAAK8gE,MAAMn4D,GAASlF,EAEhBzD,KAAK0gE,WAAWxG,gBAEhBl6D,KAAK0gE,WAAWxG,eAAex0D,KAAK1F,KAAK0gE,WAAW30B,gBAAiB/rC,KAAM2I,EAAOlF,GAGlFzD,KAAKk6D,gBAELl6D,KAAKk6D,eAAex0D,KAAK1F,KAAK+rC,gBAAiB/rC,KAAM2I,EAAOlF,KAYpE29D,kBAAmB,SAAUtV,EAAYroD,GAEjCzD,KAAK4gE,SAAS9U,IAEd9rD,KAAK4gE,SAAS9U,GAAYzgD,MAAM,KAAM5H,GAGtCzD,KAAK0gE,WAAW1G,gBAEhBh6D,KAAK0gE,WAAW1G,eAAet0D,KAAK1F,KAAK0gE,WAAW30B,gBAAiB+f,EAAYroD,EAAOzD,KAAK2I,OAG7F3I,KAAKg6D,gBAELh6D,KAAKg6D,eAAet0D,KAAK1F,KAAK+rC,gBAAiB+f,EAAYroD,IAYnE49D,gBAAiB,SAAUvV,EAAYroD,GAE/BzD,KAAK0gE,WAAWzG,cAEhBj6D,KAAK0gE,WAAWzG,aAAav0D,KAAK1F,KAAK0gE,WAAW30B,gBAAiB+f,EAAYroD,EAAOzD,KAAK2I,OAG3F3I,KAAKi6D,cAELj6D,KAAKi6D,aAAav0D,KAAK1F,KAAK+rC,gBAAiB+f,EAAYroD,GAGzDzD,KAAK4gE,SAAS9U,IAEd9rD,KAAK4gE,SAAS9U,GAAY7gD,KAAK,KAAMxH,IAY7C69D,mBAAoB,SAAUxV,EAAYroD,GAElCzD,KAAK0gE,WAAWvG,iBAEhBn6D,KAAK0gE,WAAWvG,gBAAgBz0D,KAAK1F,KAAK0gE,WAAW30B,gBAAiB+f,EAAYroD,EAAOzD,KAAK2I,OAG9F3I,KAAKm6D,iBAELn6D,KAAKm6D,gBAAgBz0D,KAAK1F,KAAK+rC,gBAAiB+f,EAAYroD,GAG5DzD,KAAK4gE,SAAS9U,IAEd9rD,KAAK4gE,SAAS9U,GAAYU,SAAS/oD,IAY3Ck+D,KAAM,SAAUC,GAEZ,MAAI5hE,MAAK8gE,MAAMc,GAEJ5hE,KAAK8gE,MAAMc,IAGf,GAWX7V,OAAQ,SAAUD,GAEd,MAAI9rD,MAAK4gE,SAAS9U,GAEP9rD,KAAK4gE,SAAS9U,GAAYC,QAG9B,GAWXC,KAAM,SAAUF,GAEZ,MAAI9rD,MAAK4gE,SAAS9U,GAEP9rD,KAAK4gE,SAAS9U,GAAYE,MAG9B,GAYXU,aAAc,SAAUZ,EAAYlmB,GAEhC,MAAI5lC,MAAK4gE,SAAS9U,GAEP9rD,KAAK4gE,SAAS9U,GAAYY,aAAa9mB,GAFlD,QAeJ6mB,YAAa,SAAUX,EAAYlmB,GAE/B,MAAI5lC,MAAK4gE,SAAS9U,GAEP9rD,KAAK4gE,SAAS9U,GAAYW,YAAY7mB,GAFjD,QAeJi8B,YAAa,SAAU/V,GAEnB,MAAI9rD,MAAK4gE,SAAS9U,GAEP9rD,KAAK4gE,SAAS9U,GAAYroD,MAG9B,MASXqlC,MAAO,WAEH,IAAK,GAAIhlC,GAAI,EAAGA,EAAI9D,KAAK8gE,MAAM59D,OAAQY,IAEnC9D,KAAK8gE,MAAMh9D,GAAK,IAO5B+kB,EAAO0xC,UAAU13D,UAAUC,YAAc+lB,EAAO0xC,UAgBhD1xC,EAAOi5C,IAAM,SAAU5hE,EAAM6hE,GAKzB/hE,KAAKE,KAAOA,EAOZF,KAAKgiE,UAAW,EAMhBhiE,KAAKkzC,MAAQ,KAMblzC,KAAK+rD,QAAS,EAMd/rD,KAAKgsD,MAAO,EAMZhsD,KAAKosD,QAAS,EAMdpsD,KAAKssD,SAAU,EAMftsD,KAAKqsD,UAAW,EAKhBrsD,KAAKisD,SAAW,EAQhBjsD,KAAK4lC,SAAW,EAMhB5lC,KAAKksD,OAAS,MAMdlsD,KAAKmsD,QAAU,EAKfnsD,KAAKiiE,QAAUF,EAKf/hE,KAAK0jD,OAAS,GAAI76B,GAAOuc,OAKzBplC,KAAKkiE,eAAiB,KAKtBliE,KAAKmiE,cAAgB,KAKrBniE,KAAK2jD,KAAO,GAAI96B,GAAOuc,OAMvBplC,KAAKoiE,WAAY,EAMjBpiE,KAAKqiE,SAAU,GAInBx5C,EAAOi5C,IAAIj/D,WAQP+kC,OAAQ,WAEC5nC,KAAKgiE,UAENhiE,KAAK+rD,SAEL/rD,KAAK4lC,SAAW5lC,KAAKE,KAAK8nC,KAAKA,KAAOhoC,KAAKisD,SAC3CjsD,KAAKmsD,UAEDnsD,KAAKkiE,gBAELliE,KAAKkiE,eAAex8D,KAAK1F,KAAKmiE,cAAeniE,QAazDsiE,eAAgB,SAAUpvB,GAEjBlzC,KAAKgiE,WAEVhiE,KAAKkzC,MAAQA,EAGTlzC,KAAK+rD,SAKT/rD,KAAKosD,OAASlZ,EAAMkZ,OACpBpsD,KAAKssD,QAAUpZ,EAAMoZ,QACrBtsD,KAAKqsD,SAAWnZ,EAAMmZ,SAEtBrsD,KAAK+rD,QAAS,EACd/rD,KAAKgsD,MAAO,EACZhsD,KAAKisD,SAAWjsD,KAAKE,KAAK8nC,KAAKA,KAC/BhoC,KAAK4lC,SAAW,EAChB5lC,KAAKmsD,QAAU,EAIfnsD,KAAKoiE,WAAY,EAEjBpiE,KAAK0jD,OAAOxb,SAASloC,SAWzBuiE,aAAc,SAAUrvB,GAEflzC,KAAKgiE,WAEVhiE,KAAKkzC,MAAQA,EAETlzC,KAAKgsD,OAKThsD,KAAK+rD,QAAS,EACd/rD,KAAKgsD,MAAO,EACZhsD,KAAKksD,OAASlsD,KAAKE,KAAK8nC,KAAKA,KAC7BhoC,KAAK4lC,SAAW5lC,KAAKE,KAAK8nC,KAAKA,KAAOhoC,KAAKisD,SAI3CjsD,KAAKqiE,SAAU,EAEfriE,KAAK2jD,KAAKzb,SAASloC,SAavB8oC,MAAO,SAAUyc,GAEA77C,SAAT67C,IAAsBA,GAAO,GAEjCvlD,KAAK+rD,QAAS,EACd/rD,KAAKgsD,MAAO,EACZhsD,KAAKksD,OAASlsD,KAAKE,KAAK8nC,KAAKA,KAC7BhoC,KAAK4lC,SAAW,EAChB5lC,KAAKgiE,UAAW,EAChBhiE,KAAKoiE,WAAY,EACjBpiE,KAAKqiE,SAAU,EAEX9c,IAEAvlD,KAAK0jD,OAAO/W,YACZ3sC,KAAK2jD,KAAKhX,YACV3sC,KAAKkiE,eAAiB,KACtBliE,KAAKmiE,cAAgB,OAa7B9M,aAAc,SAAUzvB,GAIpB,MAFiBl8B,UAAbk8B,IAA0BA,EAAW,IAEjC5lC,KAAK+rD,QAAU/rD,KAAK4lC,SAAWA,GAY3C48B,WAAY,SAAU58B,GAIlB,MAFiBl8B,UAAbk8B,IAA0BA,EAAW,KAEhC5lC,KAAK+rD,QAAY/rD,KAAKE,KAAK8nC,KAAKA,KAAOhoC,KAAKksD,OAAUtmB,IAgBvExiC,OAAOC,eAAewlB,EAAOi5C,IAAIj/D,UAAW,YAExCS,IAAK,WAED,GAAIy0B,GAAU/3B,KAAKoiE,SAEnB,OADApiE,MAAKoiE,WAAY,EACVrqC,KAgBf30B,OAAOC,eAAewlB,EAAOi5C,IAAIj/D,UAAW,UAExCS,IAAK,WAED,GAAIy0B,GAAU/3B,KAAKqiE,OAEnB,OADAriE,MAAKqiE,SAAU,EACRtqC,KAcf30B,OAAOC,eAAewlB,EAAOi5C,IAAIj/D,UAAW,WAExCS,IAAK,WAED,MAAOtD,MAAKgiE,UAIhBx+D,IAAK,SAAUC,GAEXA,IAAUA,EAENA,IAAUzD,KAAKgiE,WAEVv+D,GAEDzD,KAAK8oC,OAAM,GAGf9oC,KAAKgiE,SAAWv+D,MAM5BolB,EAAOi5C,IAAIj/D,UAAUC,YAAc+lB,EAAOi5C,IAsB1Cj5C,EAAOk8B,SAAW,SAAU7kD,GAKxBF,KAAKE,KAAOA,EAOZF,KAAK0hD,SAAU,EAKf1hD,KAAKkzC,MAAQ,KAKblzC,KAAKyiE,WAAa,KAKlBziE,KAAK+rC,gBAAkB/rC,KAKvBA,KAAKg6D,eAAiB,KAKtBh6D,KAAK0iE,gBAAkB,KAKvB1iE,KAAKi6D,aAAe,KAMpBj6D,KAAK2iE,SAML3iE,KAAK4iE,YAOL5iE,KAAK6iE,WAAa,KAOlB7iE,KAAK8iE,YAAc,KAOnB9iE,KAAK+iE,SAAW,KAMhB/iE,KAAK8xC,GAAK,EAMV9xC,KAAKgjE,GAAK,GAIdn6C,EAAOk8B,SAASliD,WAWZ23D,aAAc,SAAUltD,EAASo2C,EAAQC,EAAMsf,GAE3CjjE,KAAK+rC,gBAAkBz+B,EAER5D,SAAXg6C,GAAmC,OAAXA,IAExB1jD,KAAKg6D,eAAiBtW,GAGbh6C,SAATi6C,GAA+B,OAATA,IAEtB3jD,KAAKi6D,aAAetW,GAGRj6C,SAAZu5D,GAAqC,OAAZA,IAEzBjjE,KAAK0iE,gBAAkBO,IAa/BC,OAAQ,SAAUnB,GASd,MAPK/hE,MAAK2iE,MAAMZ,KAEZ/hE,KAAK2iE,MAAMZ,GAAW,GAAIl5C,GAAOi5C,IAAI9hE,KAAKE,KAAM6hE,GAEhD/hE,KAAKmjE,cAAcpB,IAGhB/hE,KAAK2iE,MAAMZ,IAiBtBqB,QAAS,SAAUjpC,GAEf,GAAImB,KAEJ,KAAK,GAAIvmB,KAAOolB,GAEZmB,EAAOvmB,GAAO/U,KAAKkjE,OAAO/oC,EAAKplB,GAGnC,OAAOumB,IAUX+nC,UAAW,SAAUtB,GAEb/hE,KAAK2iE,MAAMZ,KAEX/hE,KAAK2iE,MAAMZ,GAAW,KAEtB/hE,KAAKsjE,iBAAiBvB,KAW9BwB,iBAAkB,WAEd,MAAOvjE,MAAKojE,SAAUI,GAAM36C,EAAO46C,QAAQjxC,GAAIu8B,KAAQlmC,EAAO46C,QAAQhxC,KAAM0G,KAAQtQ,EAAO46C,QAAQnxC,KAAM4G,MAASrQ,EAAO46C,QAAQlxC,SAWrIlnB,MAAO,WAEH,IAAIrL,KAAKE,KAAKuzC,OAAOqM,UAKG,OAApB9/C,KAAK6iE,WAAT,CAMA,GAAI3zB,GAAQlvC,IAEZA,MAAK6iE,WAAa,SAAU3vB,GACxB,MAAOhE,GAAMozB,eAAepvB,IAGhClzC,KAAK+iE,SAAW,SAAU7vB,GACtB,MAAOhE,GAAMqzB,aAAarvB,IAG9BlzC,KAAK8iE,YAAc,SAAU5vB,GACzB,MAAOhE,GAAMw0B,gBAAgBxwB,IAGjCrgC,OAAOugC,iBAAiB,UAAWpzC,KAAK6iE,YAAY,GACpDhwD,OAAOugC,iBAAiB,QAASpzC,KAAK+iE,UAAU,GAChDlwD,OAAOugC,iBAAiB,WAAYpzC,KAAK8iE,aAAa,KAS1D73D,KAAM,WAEF4H,OAAOyhC,oBAAoB,UAAWt0C,KAAK6iE,YAC3ChwD,OAAOyhC,oBAAoB,QAASt0C,KAAK+iE,UACzClwD,OAAOyhC,oBAAoB,WAAYt0C,KAAK8iE,aAE5C9iE,KAAK6iE,WAAa,KAClB7iE,KAAK+iE,SAAW,KAChB/iE,KAAK8iE,YAAc,MAUvB//D,QAAS,WAEL/C,KAAKiL,OAELjL,KAAK2jE,gBAEL3jE,KAAK2iE,MAAMz/D,OAAS,EACpBlD,KAAK8xC,GAAK,GAgBdqxB,cAAe,SAAUpB,GAErB,GAAuB,gBAAZA,GAEP,IAAK,GAAIhtD,KAAOgtD,GAEZ/hE,KAAK4iE,SAASb,EAAQhtD,KAAQ,MAKlC/U,MAAK4iE,SAASb,IAAW,GAUjCuB,iBAAkB,SAAUvB,SAEjB/hE,MAAK4iE,SAASb,IASzB4B,cAAe,WAEX3jE,KAAK4iE,aASTh7B,OAAQ,WAIJ,IAFA5nC,KAAK8xC,GAAK9xC,KAAK2iE,MAAMz/D,OAEdlD,KAAK8xC,MAEJ9xC,KAAK2iE,MAAM3iE,KAAK8xC,KAEhB9xC,KAAK2iE,MAAM3iE,KAAK8xC,IAAIlK,UAahC06B,eAAgB,SAAUpvB,GAItB,GAFAlzC,KAAKkzC,MAAQA,EAERlzC,KAAKE,KAAKipC,MAAMuY,SAAY1hD,KAAK0hD,QAAtC,CAKA,GAAI3sC,GAAMm+B,EAAM+uB,OAGZjiE,MAAK4iE,SAAS7tD,IAEdm+B,EAAM+M,iBAGLjgD,KAAK2iE,MAAM5tD,KAEZ/U,KAAK2iE,MAAM5tD,GAAO,GAAI8T,GAAOi5C,IAAI9hE,KAAKE,KAAM6U,IAGhD/U,KAAK2iE,MAAM5tD,GAAKutD,eAAepvB,GAE/BlzC,KAAKgjE,GAAKjuD,EAEN/U,KAAKg6D,gBAELh6D,KAAKg6D,eAAet0D,KAAK1F,KAAK+rC,gBAAiBmH,KAYvDwwB,gBAAiB,SAAUxwB,GAEvBlzC,KAAKyiE,WAAavvB,EAEblzC,KAAKE,KAAKipC,MAAMuY,SAAY1hD,KAAK0hD,SAKlC1hD,KAAK0iE,iBAEL1iE,KAAK0iE,gBAAgBh9D,KAAK1F,KAAK+rC,gBAAiB63B,OAAOC,aAAa3wB,EAAM4wB,UAAW5wB,IAY7FqvB,aAAc,SAAUrvB,GAIpB,GAFAlzC,KAAKkzC,MAAQA,EAERlzC,KAAKE,KAAKipC,MAAMuY,SAAY1hD,KAAK0hD,QAAtC,CAKA,GAAI3sC,GAAMm+B,EAAM+uB,OAEZjiE,MAAK4iE,SAAS7tD,IAEdm+B,EAAM+M,iBAGLjgD,KAAK2iE,MAAM5tD,KAEZ/U,KAAK2iE,MAAM5tD,GAAO,GAAI8T,GAAOi5C,IAAI9hE,KAAKE,KAAM6U,IAGhD/U,KAAK2iE,MAAM5tD,GAAKwtD,aAAarvB,GAEzBlzC,KAAKi6D,cAELj6D,KAAKi6D,aAAav0D,KAAK1F,KAAK+rC,gBAAiBmH,KAWrDpK,MAAO,SAAUyc,GAEA77C,SAAT67C,IAAsBA,GAAO,GAEjCvlD,KAAKkzC,MAAQ,IAIb,KAFA,GAAIjwC,GAAIjD,KAAK2iE,MAAMz/D,OAEZD,KAECjD,KAAK2iE,MAAM1/D,IAEXjD,KAAK2iE,MAAM1/D,GAAG6lC,MAAMyc,IAehC8P,aAAc,SAAU0M,EAASn8B,GAE7B,MAAI5lC,MAAK2iE,MAAMZ,GAEJ/hE,KAAK2iE,MAAMZ,GAAS1M,aAAazvB,GAIjC,MAcf48B,WAAY,SAAUT,EAASn8B,GAE3B,MAAI5lC,MAAK2iE,MAAMZ,GAEJ/hE,KAAK2iE,MAAMZ,GAASS,WAAW58B,GAI/B,MAYfmmB,OAAQ,SAAUgW,GAEd,MAAI/hE,MAAK2iE,MAAMZ,GAEJ/hE,KAAK2iE,MAAMZ,GAAShW,OAIpB,OAanB3oD,OAAOC,eAAewlB,EAAOk8B,SAASliD,UAAW,YAE7CS,IAAK,WAED,MAA4B,MAAxBtD,KAAKkzC,MAAM4wB,SAEJ,GAIAF,OAAOC,aAAa7jE,KAAKyiE,WAAWqB,aAavD1gE,OAAOC,eAAewlB,EAAOk8B,SAASliD,UAAW,WAE7CS,IAAK,WAED,MAAOtD,MAAK2iE,MAAM3iE,KAAKgjE,OAM/Bn6C,EAAOk8B,SAASliD,UAAUC,YAAc+lB,EAAOk8B,SAiB/Cl8B,EAAO46C,SAEHM,EAAG,IAAIC,WAAW,GAElBC,EAAG,IAAID,WAAW,GAElBE,EAAG,IAAIF,WAAW,GAElBG,EAAG,IAAIH,WAAW,GAElBI,EAAG,IAAIJ,WAAW,GAElBntC,EAAG,IAAImtC,WAAW,GAElBK,EAAG,IAAIL,WAAW,GAElBM,EAAG,IAAIN,WAAW,GAElBO,EAAG,IAAIP,WAAW,GAElBQ,EAAG,IAAIR,WAAW,GAElBS,EAAG,IAAIT,WAAW,GAElBU,EAAG,IAAIV,WAAW,GAElBW,EAAG,IAAIX,WAAW,GAElBY,EAAG,IAAIZ,WAAW,GAElBa,EAAG,IAAIb,WAAW,GAElBc,EAAG,IAAId,WAAW,GAElBe,EAAG,IAAIf,WAAW,GAElBgB,EAAG,IAAIhB,WAAW,GAElBiB,EAAG,IAAIjB,WAAW,GAElBkB,EAAG,IAAIlB,WAAW,GAElBmB,EAAG,IAAInB,WAAW,GAElBoB,EAAG,IAAIpB,WAAW,GAElBqB,EAAG,IAAIrB,WAAW,GAElBsB,EAAG,IAAItB,WAAW,GAElBuB,EAAG,IAAIvB,WAAW,GAElBwB,EAAG,IAAIxB,WAAW,GAElByB,KAAM,IAAIzB,WAAW,GAErBznD,IAAK,IAAIynD,WAAW,GAEpB0B,IAAK,IAAI1B,WAAW,GAEpB2B,MAAO,IAAI3B,WAAW,GAEtB4B,KAAM,IAAI5B,WAAW,GAErB6B,KAAM,IAAI7B,WAAW,GAErB8B,IAAK,IAAI9B,WAAW,GAEpB+B,MAAO,IAAI/B,WAAW,GAEtBgC,MAAO,IAAIhC,WAAW,GAEtBiC,KAAM,IAAIjC,WAAW,GAErBkC,SAAU,GAEVC,SAAU,GAEVC,SAAU,GAEVC,SAAU,GAEVC,SAAU,IAEVC,SAAU,IAEVC,SAAU,IAEVC,SAAU,IAEVC,SAAU,IAEVC,SAAU,IAEVC,gBAAiB,IAEjBC,WAAY,IAEZC,aAAc,IAEdC,gBAAiB,IAEjBC,eAAgB,IAEhBC,cAAe,IAEfC,GAAI,IAEJC,GAAI,IAEJC,GAAI,IAEJC,GAAI,IAEJC,GAAI,IAEJC,GAAI,IAEJC,GAAI,IAEJC,GAAI,IAEJC,GAAI,IAEJC,IAAK,IAELC,IAAK,IAELC,IAAK,IAELC,IAAK,IAELC,IAAK,IAELC,IAAK,IAELC,MAAO,IAEPC,OAAQ,IAERC,MAAO,IAEPC,WAAY,IAEZC,OAAQ,IAERC,cAAe,IAEfC,MAAO,IAEPC,aAAc,IAEdC,eAAgB,IAEhBC,eAAgB,IAEhBC,OAAQ,IAERC,UAAW,EAEXC,IAAK,EAELC,MAAO,GAEPC,MAAO,GAEPC,MAAO,GAEPC,QAAS,GAETC,IAAK,GAELC,UAAW,GAEXC,IAAK,GAELC,SAAU,GAEVC,QAAS,GAETC,UAAW,GAEXC,IAAK,GAELC,KAAM,GAENn3C,KAAM,GAENE,GAAI,GAEJD,MAAO,GAEPE,KAAM,GAENi3C,KAAM,GAENC,MAAO,GAEPC,OAAQ,GAERC,OAAQ,GAERC,KAAM,GAENC,SAAU,IAId,KAAK,GAAIh1D,KAAO8T,GAAO46C,QACf56C,EAAO46C,QAAQnqC,eAAevkB,KAASA,EAAIi1D,MAAM,WACjDnhD,EAAOk8B,SAAShwC,GAAO8T,EAAO46C,QAAQ1uD,GAU9C8T,GAAOohD,UAAY,aAanBphD,EAAOohD,UAAUC,MAAQ,aAEzBrhD,EAAOohD,UAAUC,MAAMrnE,WAenB44B,OAEIn4B,IAAK,WAED,MAAOulB,GAAOhoB,KAAKspE,UAAUthD,EAAOhoB,KAAK8/B,SAAS3gC,KAAKuB,YAI3DiC,IAAK,SAASC,GAEVzD,KAAKuB,SAAWsnB,EAAOhoB,KAAKm7B,SAASnT,EAAOhoB,KAAKspE,UAAU1mE,OAmBvEolB,EAAOohD,UAAUG,UAAY,aAE7BvhD,EAAOohD,UAAUG,UAAUvnE,WAiBvBwnE,KAAM,SAAU3wC,EAAM4wC,EAAWC,EAAMC,GAEnC,MAAIxqE,MAAKyqE,WAEEzqE,KAAKyqE,WAAWJ,KAAK3wC,EAAM4wC,EAAWC,EAAMC,GAFvD,SAqBR3hD,EAAOohD,UAAUS,SAAW,aAE5B7hD,EAAOohD,UAAUS,SAAS7nE,WAatB8nE,UAAU,EASVC,UAEItnE,IAAK,WASD,MAPKtD,MAAK2qE,UAAa3qE,KAAK6qE,mBAExB7qE,KAAKuC,QAAQ04B,SAASj7B,KAAK6F,aAC3B7F,KAAKuC,QAAQ8C,GAAKrF,KAAKE,KAAKob,OAAOlC,KAAK/T,EACxCrF,KAAKuC,QAAQ+C,GAAKtF,KAAKE,KAAKob,OAAOlC,KAAK9T,GAGrCtF,KAAKE,KAAKuE,MAAM6W,OAAOlC,KAAK2iB,WAAW/7B,KAAKuC,YAmB/DsmB,EAAOohD,UAAUa,OAAS,aAE1BjiD,EAAOohD,UAAUa,OAAOjoE,WAUpB0gB,SAEIjgB,IAAK,WAED,MAAOtD,MAAKkI,OAAO7C,EAAIrF,KAAK2G,QAcpC6c,SAEIlgB,IAAK,WAED,MAAOtD,MAAKkI,OAAO5C,EAAItF,KAAK4G,SAYpCknB,SAEIxqB,IAAK,WAED,MAAQtD,MAAKqF,EAAIrF,KAAKujB,QAAyB,GAAbvjB,KAAK2G,OAI3CnD,IAAK,SAAUC,GAEXzD,KAAKqF,EAAK5B,EAAQzD,KAAKujB,QAAyB,GAAbvjB,KAAK2G,QAYhDonB,SAEIzqB,IAAK,WAED,MAAQtD,MAAKsF,EAAItF,KAAKwjB,QAA0B,GAAdxjB,KAAK4G,QAI3CpD,IAAK,SAAUC,GAEXzD,KAAKsF,EAAK7B,EAAQzD,KAAKwjB,QAA0B,GAAdxjB,KAAK4G,SAYhDuyB,MAEI71B,IAAK,WAED,MAAOtD,MAAKqF,EAAIrF,KAAKujB,SAIzB/f,IAAK,SAAUC,GAEXzD,KAAKqF,EAAI5B,EAAQzD,KAAKujB,UAY9B2V,OAEI51B,IAAK,WAED,MAAQtD,MAAKqF,EAAIrF,KAAK2G,MAAS3G,KAAKujB,SAIxC/f,IAAK,SAAUC,GAEXzD,KAAKqF,EAAI5B,EAASzD,KAAU,MAAIA,KAAKujB,UAY7CqY,KAEIt4B,IAAK,WAED,MAAOtD,MAAKsF,EAAItF,KAAKwjB,SAIzBhgB,IAAK,SAAUC,GAEXzD,KAAKsF,EAAI7B,EAAQzD,KAAKwjB,UAY9BqY,QAEIv4B,IAAK,WAED,MAAQtD,MAAKsF,EAAItF,KAAK4G,OAAU5G,KAAKwjB,SAIzChgB,IAAK,SAAUC,GAEXzD,KAAKsF,EAAI7B,EAASzD,KAAW,OAAIA,KAAKwjB,UA6C9Ck0B,QAAS,SAAUlmC,EAAWrQ,EAAUoiB,EAASC,GAK7C,OAHgB9Z,SAAZ6Z,IAAyBA,EAAU,GACvB7Z,SAAZ8Z,IAAyBA,EAAU,GAE/BriB,GAEJ,QACA,IAAK0nB,GAAOuM,SACRp1B,KAAKm5B,KAAO3nB,EAAU2nB,KAAO5V,EAC7BvjB,KAAK47B,IAAMpqB,EAAUoqB,IAAMpY,CAC3B,MAEJ,KAAKqF,GAAOwM,WACRr1B,KAAK8tB,QAAUtc,EAAUsc,QAAUvK,EACnCvjB,KAAK47B,IAAMpqB,EAAUoqB,IAAMpY,CAC3B,MAEJ,KAAKqF,GAAOyM,UACRt1B,KAAKk5B,MAAQ1nB,EAAU0nB,MAAQ3V,EAC/BvjB,KAAK47B,IAAMpqB,EAAUoqB,IAAMpY,CAC3B,MAEJ,KAAKqF,GAAO2M,YACRx1B,KAAKm5B,KAAO3nB,EAAU2nB,KAAO5V,EAC7BvjB,KAAK+tB,QAAUvc,EAAUuc,QAAUvK,CACnC,MAEJ,KAAKqF,GAAO6M,OACR11B,KAAK8tB,QAAUtc,EAAUsc,QAAUvK,EACnCvjB,KAAK+tB,QAAUvc,EAAUuc,QAAUvK,CACnC,MAEJ,KAAKqF,GAAO+M,aACR51B,KAAKk5B,MAAQ1nB,EAAU0nB,MAAQ3V,EAC/BvjB,KAAK+tB,QAAUvc,EAAUuc,QAAUvK,CACnC,MAEJ,KAAKqF,GAAOiN,YACR91B,KAAKm5B,KAAO3nB,EAAU2nB,KAAO5V,EAC7BvjB,KAAK67B,OAASrqB,EAAUqqB,OAASrY,CACjC,MAEJ,KAAKqF,GAAOkN,cACR/1B,KAAK8tB,QAAUtc,EAAUsc,QAAUvK,EACnCvjB,KAAK67B,OAASrqB,EAAUqqB,OAASrY,CACjC,MAEJ,KAAKqF,GAAOmN,aACRh2B,KAAKk5B,MAAQ1nB,EAAU0nB,MAAQ3V,EAC/BvjB,KAAK67B,OAASrqB,EAAUqqB,OAASrY,EAIzC,MAAOxjB,OA4CX+qE,QAAS,SAAUnpE,EAAQT,EAAUoiB,EAASC,GAK1C,OAHgB9Z,SAAZ6Z,IAAyBA,EAAU,GACvB7Z,SAAZ8Z,IAAyBA,EAAU,GAE/BriB,GAEJ,QACA,IAAK0nB,GAAOuM,SACRp1B,KAAKm5B,KAAOv3B,EAAOu3B,KAAO5V,EAC1BvjB,KAAK67B,OAASj6B,EAAOg6B,IAAMpY,CAC3B,MAEJ,KAAKqF,GAAOwM,WACRr1B,KAAK8tB,QAAUlsB,EAAOksB,QAAUvK,EAChCvjB,KAAK67B,OAASj6B,EAAOg6B,IAAMpY,CAC3B,MAEJ,KAAKqF,GAAOyM,UACRt1B,KAAKk5B,MAAQt3B,EAAOs3B,MAAQ3V,EAC5BvjB,KAAK67B,OAASj6B,EAAOg6B,IAAMpY,CAC3B,MAEJ,KAAKqF,GAAO0M,SACRv1B,KAAKk5B,MAAQt3B,EAAOu3B,KAAO5V,EAC3BvjB,KAAK47B,IAAMh6B,EAAOg6B,IAAMpY,CACxB,MAEJ,KAAKqF,GAAO2M,YACRx1B,KAAKk5B,MAAQt3B,EAAOu3B,KAAO5V,EAC3BvjB,KAAK+tB,QAAUnsB,EAAOmsB,QAAUvK,CAChC,MAEJ,KAAKqF,GAAO4M,YACRz1B,KAAKk5B,MAAQt3B,EAAOu3B,KAAO5V,EAC3BvjB,KAAK67B,OAASj6B,EAAOi6B,OAASrY,CAC9B,MAEJ,KAAKqF,GAAO8M,UACR31B,KAAKm5B,KAAOv3B,EAAOs3B,MAAQ3V,EAC3BvjB,KAAK47B,IAAMh6B,EAAOg6B,IAAMpY,CACxB,MAEJ,KAAKqF,GAAO+M,aACR51B,KAAKm5B,KAAOv3B,EAAOs3B,MAAQ3V,EAC3BvjB,KAAK+tB,QAAUnsB,EAAOmsB,QAAUvK,CAChC,MAEJ,KAAKqF,GAAOgN,aACR71B,KAAKm5B,KAAOv3B,EAAOs3B,MAAQ3V,EAC3BvjB,KAAK67B,OAASj6B,EAAOi6B,OAASrY,CAC9B,MAEJ,KAAKqF,GAAOiN,YACR91B,KAAKm5B,KAAOv3B,EAAOu3B,KAAO5V,EAC1BvjB,KAAK47B,IAAMh6B,EAAOi6B,OAASrY,CAC3B,MAEJ,KAAKqF,GAAOkN,cACR/1B,KAAK8tB,QAAUlsB,EAAOksB,QAAUvK,EAChCvjB,KAAK47B,IAAMh6B,EAAOi6B,OAASrY,CAC3B,MAEJ,KAAKqF,GAAOmN,aACRh2B,KAAKk5B,MAAQt3B,EAAOs3B,MAAQ3V,EAC5BvjB,KAAK47B,IAAMh6B,EAAOi6B,OAASrY,EAInC,MAAOxjB,QAiBf6oB,EAAOohD,UAAUe,WAAa,aAY9BniD,EAAOohD,UAAUe,WAAWnoE,UAAUm1C,WAAa,WAO/C,MALIh4C,MAAK4B,QAEL5B,KAAK4B,OAAOo2C,WAAWh4C,MAGpBA,MAcX6oB,EAAOohD,UAAUe,WAAWnoE,UAAUq1C,WAAa,WAO/C,MALIl4C,MAAK4B,QAEL5B,KAAK4B,OAAOs2C,WAAWl4C,MAGpBA,MAcX6oB,EAAOohD,UAAUe,WAAWnoE,UAAUs1C,OAAS,WAO3C,MALIn4C,MAAK4B,QAEL5B,KAAK4B,OAAOu2C,OAAOn4C,MAGhBA,MAcX6oB,EAAOohD,UAAUe,WAAWnoE,UAAUu1C,SAAW,WAO7C,MALIp4C,MAAK4B,QAEL5B,KAAK4B,OAAOw2C,SAASp4C,MAGlBA,MAeX6oB,EAAOohD,UAAUgB,KAAO,aAUxBpiD,EAAOohD,UAAUgB,KAAKC,QAAU,SAAUC,GAGtCtiD,EAAO0O,MAAMwC,eAAe/5B,KAAM6oB,EAAOohD,UAAUgB,KAAKpoE,WAExD7C,KAAKmrE,aAEL,KAAK,GAAIloE,GAAI,EAAGA,EAAIkoE,EAAWjoE,OAAQD,IACvC,CACI,GAAIgT,GAAKk1D,EAAWloE,GAChBg3B,GAAU,CAEH,aAAPhkB,IAEAgkB,GAAU,GAGdpR,EAAO0O,MAAMwC,eAAe/5B,KAAM6oB,EAAOohD,UAAUh0D,GAAIpT,UAAWo3B,GAElEj6B,KAAKmrE,WAAWl1D,IAAM,IAa9B4S,EAAOohD,UAAUgB,KAAK92D,KAAO,SAAUjU,EAAMmF,EAAGC,EAAGyP,EAAK7I,GAEpDlM,KAAKE,KAAOA,EAEZF,KAAK+U,IAAMA,EAEX/U,KAAKgR,QAELhR,KAAKmB,SAASqC,IAAI6B,EAAGC,GACrBtF,KAAKyE,MAAQ,GAAIokB,GAAOznB,MAAMiE,EAAGC,GACjCtF,KAAKorE,iBAAmB,GAAIviD,GAAOznB,MAAMiE,EAAGC,GAE5CtF,KAAK22C,OAAS,GAAI9tB,GAAOwiD,OAAOrrE,MAEhCA,KAAKuC,QAAU,GAAIsmB,GAAOrmB,UAEtBxC,KAAKmrE,WAAWG,cAGhBtrE,KAAKs2C,KAAOt2C,KAAKs2C,MAGjBt2C,KAAKmrE,WAAWf,YAEhBpqE,KAAKyqE,WAAa,GAAI5hD,GAAO0iD,iBAAiBvrE,OAG9CA,KAAKmrE,WAAWK,aAAuB,OAARz2D,GAE/B/U,KAAKk7C,YAAYnmC,EAAK7I,GAGtBlM,KAAKmrE,WAAWM,gBAEhBzrE,KAAK61C,aAAe,GAAIhtB,GAAOznB,MAAMiE,EAAGC,KAKhDujB,EAAOohD,UAAUgB,KAAK9kE,UAAY,WAE9B,GAAInG,KAAKg1C,eAGL,WADAh1C,MAAK+C,SAOT,IAHA/C,KAAKorE,iBAAiB5nE,IAAIxD,KAAKyE,MAAMY,EAAGrF,KAAKyE,MAAMa,GACnDtF,KAAK0rE,iBAAmB1rE,KAAKuB,UAExBvB,KAAK8L,SAAW9L,KAAK4B,OAAOkK,OAG7B,MADA9L,MAAK85C,cAAgB,IACd,CAGX95C,MAAKyE,MAAMu2B,MAAMh7B,KAAKE,KAAKob,OAAOjW,EAAIrF,KAAK+B,eAAe+C,GAAI9E,KAAKE,KAAKob,OAAOhW,EAAItF,KAAK+B,eAAegD,IAEnG/E,KAAKyB,UAELzB,KAAK85C,cAAgB95C,KAAKE,KAAK2B,MAAMswC,wBAGrCnyC,KAAKyqE,YAELzqE,KAAKyqE,WAAW7iC,SAGhB5nC,KAAKs2C,MAELt2C,KAAKs2C,KAAKnwC,WAGd,KAAK,GAAIlD,GAAI,EAAGA,EAAIjD,KAAKgD,SAASE,OAAQD,IAEtCjD,KAAKgD,SAASC,GAAGkD,WAGrB,QAAO,GAIX0iB,EAAOohD,UAAUgB,KAAKpoE,WAMlB3C,KAAM,KAQNw5B,KAAM,GAUN1oB,QAOAm6D,cAUAxzD,EAAG,EAQHg/B,OAAQjtC,OAQR+gE,WAAY/gE,OAUZqL,IAAK,GAQLtQ,MAAO,KAOPmoC,OAAO,EAOPw+B,iBAAkB,KAOlBM,iBAAkB,EAQlB5xB,cAAe,EAQf6xB,OAAO,EAWP32B,gBAAgB,EAMhBzyC,QAAS,KAMTqpE,SAAS,EAaT9/D,QAEIxI,IAAK,WAED,MAAOtD,MAAK4rE,SAIhBpoE,IAAK,SAAUC,GAEPA,GAEAzD,KAAK4rE,SAAU,EAEX5rE,KAAKs2C,MAAQt2C,KAAKs2C,KAAKlhC,OAASyT,EAAO8rB,QAAQk3B,MAE/C7rE,KAAKs2C,KAAKrF,aAGdjxC,KAAKyB,SAAU,IAIfzB,KAAK4rE,SAAU,EAEX5rE,KAAKs2C,MAAQt2C,KAAKs2C,KAAKlhC,OAASyT,EAAO8rB,QAAQk3B,MAE/C7rE,KAAKs2C,KAAKw1B,kBAGd9rE,KAAKyB,SAAU,KAc3BmmC,OAAQ,aAURoK,WAAY,WAEJhyC,KAAK+rE,cAEL/rE,KAAK+U,IAAIjO,SAGT9G,KAAKmrE,WAAWG,aAEhBziD,EAAOohD,UAAUqB,YAAYt5B,WAAWtsC,KAAK1F,MAG7CA,KAAKmrE,WAAWM,eAEhB5iD,EAAOohD,UAAUwB,cAAcz5B,WAAWtsC,KAAK1F,KAGnD,KAAK,GAAIiD,GAAI,EAAGA,EAAIjD,KAAKgD,SAASE,OAAQD,IAEtCjD,KAAKgD,SAASC,GAAG+uC,eAmB7BnpB,EAAOohD,UAAU+B,KAAO,aAExBnjD,EAAOohD,UAAU+B,KAAKnpE,WASlBopE,SAAU,KAMVC,MAAO,KAmBP9+D,KAAM,SAASoyB,EAAM7F,GAEJjwB,SAATiwB,IAAsBA,GAAO,GAE7B6F,GAEI7F,GAA0B,OAAlB35B,KAAKisE,SAEbjsE,KAAKisE,SAASjxC,MAAMwE,EAAKn6B,EAAGm6B,EAAKl6B,EAAGk6B,EAAK74B,MAAO64B,EAAK54B,QAEhD+yB,GAA0B,OAAlB35B,KAAKisE,SAElBjsE,KAAKisE,SAAW,GAAIpjD,GAAOrmB,UAAUg9B,EAAKn6B,EAAGm6B,EAAKl6B,EAAGk6B,EAAK74B,MAAO64B,EAAK54B,QAItE5G,KAAKisE,SAAWzsC,EAGpBx/B,KAAKmsE,eAILnsE,KAAKksE,MAAQ,KACblsE,KAAKisE,SAAW,KAEhBjsE,KAAKosE,eAWbD,WAAY,WAER,GAAKnsE,KAAKisE,SAAV,CAKAjsE,KAAKksE,MAAQrjD,EAAOrmB,UAAUq3B,MAAM75B,KAAKisE,SAAUjsE,KAAKksE,OACxDlsE,KAAKksE,MAAM7mE,GAAKrF,KAAK6wB,OAAOxrB,EAC5BrF,KAAKksE,MAAM5mE,GAAKtF,KAAK6wB,OAAOvrB,CAE5B,IAAIoJ,GAAK7N,KAAK+G,IAAI5H,KAAK6wB,OAAOxrB,EAAGrF,KAAKksE,MAAM7mE,GACxCsJ,EAAK9N,KAAK+G,IAAI5H,KAAK6wB,OAAOvrB,EAAGtF,KAAKksE,MAAM5mE,GACxC8I,EAAKvN,KAAKq9B,IAAIl+B,KAAK6wB,OAAOqI,MAAOl5B,KAAKksE,MAAMhzC,OAASxqB,EACrDL,EAAKxN,KAAKq9B,IAAIl+B,KAAK6wB,OAAOgL,OAAQ77B,KAAKksE,MAAMrwC,QAAUltB,CAE3D3O,MAAK8H,QAAQsF,KAAK/H,EAAIqJ,EACtB1O,KAAK8H,QAAQsF,KAAK9H,EAAIqJ,EACtB3O,KAAK8H,QAAQsF,KAAKzG,MAAQyH,EAC1BpO,KAAK8H,QAAQsF,KAAKxG,OAASyH,EAE3BrO,KAAK8H,QAAQoE,MAAMvF,MAAQ9F,KAAKq9B,IAAI9vB,EAAIpO,KAAKisE,SAAStlE,OACtD3G,KAAK8H,QAAQoE,MAAMtF,OAAS/F,KAAKq9B,IAAI7vB,EAAIrO,KAAKisE,SAASrlE,QAEvD5G,KAAK8H,QAAQnB,MAAQ3G,KAAK8H,QAAQoE,MAAMvF,MACxC3G,KAAK8H,QAAQlB,OAAS5G,KAAK8H,QAAQoE,MAAMtF,OAEzC5G,KAAK8H,QAAQgjB,gBAiBrBjC,EAAOohD,UAAUoC,MAAQ,aAEzBxjD,EAAOohD,UAAUoC,MAAMxpE,WAUnB6nD,QAEIpnD,IAAK,WAED,MAAOtD,MAAKyE,MAAMY,EAAIrF,KAAKorE,iBAAiB/lE,IAcpDmkD,QAEIlmD,IAAK,WAED,MAAOtD,MAAKyE,MAAMa,EAAItF,KAAKorE,iBAAiB9lE,IAYpDslD,QAEItnD,IAAK,WAED,MAAOtD,MAAKuB,SAAWvB,KAAK0rE,oBAmBxC7iD,EAAOohD,UAAUqC,QAAU,aAE3BzjD,EAAOohD,UAAUqC,QAAQzpE,WAQrBi5C,cAAc,EAed/4C,QAAS,SAAUo5C,EAAiBF,GAEhC,GAAkB,OAAdj8C,KAAKE,OAAiBF,KAAK87C,aAA/B,CAEwBpyC,SAApByyC,IAAiCA,GAAkB,GAChCzyC,SAAnBuyC,IAAgCA,GAAiB,GAErDj8C,KAAK87C,cAAe,EAEhB97C,KAAK22C,QAEL32C,KAAK22C,OAAO41B,mBAAmBvsE,MAG/BA,KAAK4B,SAED5B,KAAK4B,iBAAkBinB,GAAO0rB,MAE9Bv0C,KAAK4B,OAAOqP,OAAOjR,MAInBA,KAAK4B,OAAOgH,YAAY5I,OAI5BA,KAAKmpC,OAELnpC,KAAKmpC,MAAMpmC,UAGX/C,KAAKyqE,YAELzqE,KAAKyqE,WAAW1nE,UAGhB/C,KAAKs2C,MAELt2C,KAAKs2C,KAAKvzC,UAGV/C,KAAK22C,QAEL32C,KAAK22C,OAAO5zC,UAGhB/C,KAAKE,KAAKqpC,OAAOijC,WAAWxsE,KAE5B,IAAIiD,GAAIjD,KAAKgD,SAASE,MAEtB,IAAIi5C,EAEA,KAAOl5C,KAEHjD,KAAKgD,SAASC,GAAGF,QAAQo5C,OAK7B,MAAOl5C,KAEHjD,KAAK4I,YAAY5I,KAAKgD,SAASC,GAInCjD,MAAKksE,QAELlsE,KAAKksE,MAAQ,MAGblsE,KAAK6wB,SAEL7wB,KAAK6wB,OAAS,MAGdhI,EAAO4jD,OAASzsE,KAAK+U,cAAe8T,GAAO4jD,OAE3CzsE,KAAK+U,IAAI23D,eAAez7D,OAAOjR,KAAK2sE,YAAa3sE,MAGjD6oB,EAAO+jD,YAAc5sE,KAAK6sE,UAE1B7sE,KAAK6sE,YAGT7sE,KAAK80C,OAAQ,EACb90C,KAAK8L,QAAS,EACd9L,KAAKyB,SAAU,EAEfzB,KAAKiI,QAAU,KACfjI,KAAKoL,KAAO,KACZpL,KAAKE,KAAO,KAEZF,KAAKgR,QAGLhR,KAAK2B,YAAa,EAEd3B,KAAKyF,oBAELzF,KAAKyF,kBAAoB,KACzBzF,KAAK2F,yBAA2B,MAIpC3F,KAAK0B,QAAU,KACf1B,KAAK4B,OAAS,KACd5B,KAAK6B,MAAQ,KACb7B,KAAK+B,eAAiB,KACtB/B,KAAKsC,WAAa,KAClBtC,KAAKuC,QAAU,KACfvC,KAAKyC,eAAiB,KACtBzC,KAAK0C,MAAQ,KAEb1C,KAAKmD,uBAGD84C,GAEAj8C,KAAK8H,QAAQ/E,SAAQ,GAGzB/C,KAAK87C,cAAe,EACpB97C,KAAKg1C,gBAAiB,KAmC9BnsB,EAAOwiD,OAAS,SAAU3oD,GAKtB1iB,KAAK4B,OAAS8gB,GAMlBmG,EAAOwiD,OAAOxoE,WAOVE,QAAS,WAEL/C,KAAK8sE,QAAU,KAEX9sE,KAAK+sE,YAAwB/sE,KAAK+sE,WAAW99B,UAC7CjvC,KAAKgtE,iBAAwBhtE,KAAKgtE,gBAAgB/9B,UAClDjvC,KAAKitE,qBAAwBjtE,KAAKitE,oBAAoBh+B,UACtDjvC,KAAKktE,qBAAwBltE,KAAKktE,oBAAoBj+B,UACtDjvC,KAAKmtE,WAAwBntE,KAAKmtE,UAAUl+B,UAC5CjvC,KAAKotE,YAAwBptE,KAAKotE,WAAWn+B,UAC7CjvC,KAAKqtE,gBAAwBrtE,KAAKqtE,eAAep+B,UACjDjvC,KAAKstE,gBAAwBttE,KAAKstE,eAAer+B,UAEjDjvC,KAAKutE,cAAwBvtE,KAAKutE,aAAat+B,UAC/CjvC,KAAKwtE,aAAwBxtE,KAAKwtE,YAAYv+B,UAC9CjvC,KAAKytE,cAAwBztE,KAAKytE,aAAax+B,UAC/CjvC,KAAK0tE,YAAwB1tE,KAAK0tE,WAAWz+B,UAC7CjvC,KAAK2tE,cAAwB3tE,KAAK2tE,aAAa1+B,UAC/CjvC,KAAK4tE,eAAwB5tE,KAAK4tE,cAAc3+B,UAChDjvC,KAAK6tE,aAAwB7tE,KAAK6tE,YAAY5+B,UAE9CjvC,KAAK8tE,mBAAwB9tE,KAAK8tE,kBAAkB7+B,UACpDjvC,KAAK+tE,sBAAwB/tE,KAAK+tE,qBAAqB9+B,UACvDjvC,KAAKguE,kBAAwBhuE,KAAKguE,iBAAiB/+B,WAS3DqmB,eAAgB,KAKhBE,mBAAoB,KAKpByY,mBAAoB,KAKpBv4B,UAAW,KAKXw4B,SAAU,KAKVC,UAAW,KAKXC,cAAe,KAKfC,cAAe,KAKfC,YAAa,KAKbC,WAAY,KAKZC,YAAa,KAKbC,UAAW,KAKXC,YAAa,KAKb5W,aAAc,KAKd6W,WAAY,KAKZC,iBAAkB,KAKlBC,oBAAqB,KAKrBC,gBAAiB,MAIrBjmD,EAAOwiD,OAAOxoE,UAAUC,YAAc+lB,EAAOwiD,MAK7C,KAAK,GAAI3zC,KAAQ7O,GAAOwiD,OAAOxoE,UAEtBgmB,EAAOwiD,OAAOxoE,UAAUy2B,eAAe5B,IACjB,IAAvBA,EAAKtuB,QAAQ,OACqB,OAAlCyf,EAAOwiD,OAAOxoE,UAAU60B,KAK5B,SAAWA,EAAMq3C,GACb,YAGA3rE,QAAOC,eAAewlB,EAAOwiD,OAAOxoE,UAAW60B,GAC3Cp0B,IAAK,WACD,MAAOtD,MAAK+uE,KAAa/uE,KAAK+uE,GAAW,GAAIlmD,GAAOuc,WAK5Dvc,EAAOwiD,OAAOxoE,UAAU60B,EAAO,aAAe,WAC1C,MAAO13B,MAAK+uE,GAAW/uE,KAAK+uE,GAAS7mC,SAASjhC,MAAMjH,KAAK+uE,GAAUp4C,WAAa,OAGrFe,EAAM,IAAMA,EAgBnB7O,GAAOohD,UAAUwB,cAAgB,aAQjC5iD,EAAOohD,UAAUwB,cAAcz5B,WAAa,WAEpChyC,KAAK41C,gBAEL51C,KAAKmB,SAASkE,GAAKrF,KAAKE,KAAKob,OAAOlC,KAAK/T,EAAIrF,KAAK61C,aAAaxwC,GAAKrF,KAAKE,KAAKob,OAAOja,MAAMgE,EAC3FrF,KAAKmB,SAASmE,GAAKtF,KAAKE,KAAKob,OAAOlC,KAAK9T,EAAItF,KAAK61C,aAAavwC,GAAKtF,KAAKE,KAAKob,OAAOja,MAAMiE,IAKnGujB,EAAOohD,UAAUwB,cAAc5oE,WAM3BmsE,gBAAgB,EAmBhBp5B,eAEItyC,IAAK,WAED,MAAOtD,MAAKgvE,gBAIhBxrE,IAAK,SAAUC,GAEPA,GAEAzD,KAAKgvE,gBAAiB,EACtBhvE,KAAK61C,aAAaryC,IAAIxD,KAAKqF,EAAGrF,KAAKsF,IAInCtF,KAAKgvE,gBAAiB,IAalCn5B,aAAc,GAAIhtB,GAAOznB,OAiB7BynB,EAAOohD,UAAUgF,OAAS,aAE1BpmD,EAAOohD,UAAUgF,OAAOpsE,WAUpBqsE,OAAQ,EASRC,UAAW,IAWXC,OAAQ,SAAU3/C,GAYd,MAVIzvB,MAAK80C,QAEL90C,KAAKkvE,QAAUz/C,EAEXzvB,KAAKkvE,QAAU,GAEflvE,KAAKqvE,QAINrvE,MAYXsvE,UAAW,SAAU7/C,GASjB,MAPAzvB,MAAKkvE,OAASz/C,EAEVzvB,KAAKkvE,OAASlvE,KAAKmvE,YAEnBnvE,KAAKkvE,OAASlvE,KAAKmvE,WAGhBnvE,MAWXuvE,KAAM,SAAU9/C,GAYZ,MAVIzvB,MAAK80C,QAEL90C,KAAKkvE,QAAUz/C,EAEXzvB,KAAKkvE,OAASlvE,KAAKmvE,YAEnBnvE,KAAKkvE,OAASlvE,KAAKmvE,YAIpBnvE,OAiBf6oB,EAAOohD,UAAUuF,SAAW,aAE5B3mD,EAAOohD,UAAUuF,SAAS3sE,WAYtB+nE,UAEItnE,IAAK,WAED,MAAOtD,MAAKE,KAAKuE,MAAM6W,OAAOlC,KAAK2iB,WAAW/7B,KAAKuC,YAmB/DsmB,EAAOohD,UAAUwF,aAAe,aAEhC5mD,EAAOohD,UAAUwF,aAAa5sE,WAU1BsmC,MAAO,KAcPuN,cAEIpzC,IAAK,WAED,MAAQtD,MAAKmpC,OAASnpC,KAAKmpC,MAAMuY,SAIrCl+C,IAAK,SAAUC,GAEPA,EAEmB,OAAfzD,KAAKmpC,OAELnpC,KAAKmpC,MAAQ,GAAItgB,GAAO+pC,aAAa5yD,MACrCA,KAAKmpC,MAAM99B,SAENrL,KAAKmpC,QAAUnpC,KAAKmpC,MAAMuY,SAE/B1hD,KAAKmpC,MAAM99B,QAKXrL,KAAKmpC,OAASnpC,KAAKmpC,MAAMuY,SAEzB1hD,KAAKmpC,MAAMl+B,UAuB/B4d,EAAOohD,UAAUyF,QAAU,aAQ3B7mD,EAAOohD,UAAUyF,QAAQvpE,UAAY,WAGjC,GAAInG,KAAK2qE,UAAY3qE,KAAK6qE,iBAC1B,CAMI,GALA7qE,KAAKuC,QAAQ04B,SAASj7B,KAAK6F,aAE3B7F,KAAKuC,QAAQ8C,GAAKrF,KAAKE,KAAKob,OAAOlC,KAAK/T,EACxCrF,KAAKuC,QAAQ+C,GAAKtF,KAAKE,KAAKob,OAAOlC,KAAK9T,EAEpCtF,KAAK2qE,SAGL,GAAI3qE,KAAKE,KAAKuE,MAAM6W,OAAOlC,KAAK2iB,WAAW/7B,KAAKuC,SAE5CvC,KAAK2B,YAAa,EAClB3B,KAAKE,KAAKuE,MAAM6W,OAAO2pB,kBAMvB,IAFAjlC,KAAK2B,YAAa,EAEd3B,KAAK2vE,sBAGL,MADA3vE,MAAKqvE,QACE,CAKnB,IAAIrvE,KAAK6qE,iBAGL,GAAI7qE,KAAK4vE,mBAAqB5vE,KAAKE,KAAKuE,MAAM+B,OAAOu1B,WAAW/7B,KAAKuC,SAEjEvC,KAAK4vE,mBAAoB,EACzB5vE,KAAK22C,OAAOk5B,uBAAuB7vE,UAElC,KAAKA,KAAK4vE,oBAAsB5vE,KAAKE,KAAKuE,MAAM+B,OAAOu1B,WAAW/7B,KAAKuC,WAGxEvC,KAAK4vE,mBAAoB,EACzB5vE,KAAK22C,OAAOm5B,uBAAuB9vE,MAE/BA,KAAK+vE,iBAGL,MADA/vE,MAAKqvE,QACE,EAMvB,OAAO,GAIXxmD,EAAOohD,UAAUyF,QAAQ7sE,WAmBrBgoE,kBAAkB,EAQlBkF,iBAAiB,EASjBJ,uBAAuB,EAMvBC,mBAAmB,EAQnBI,SAEI1sE,IAAK,WAED,MAAOtD,MAAKE,KAAKuE,MAAM+B,OAAOu1B,WAAW/7B,KAAK6F,gBAmB1DgjB,EAAOohD,UAAUgG,SAAW,aAQ5BpnD,EAAOohD,UAAUgG,SAAS9pE,UAAY,WAElC,MAAInG,MAAKkwE,SAAW,IAEhBlwE,KAAKkwE,UAAYlwE,KAAKE,KAAK8nC,KAAKmoC;AAE5BnwE,KAAKkwE,UAAY,IAEjBlwE,KAAKqvE,QACE,IAIR,GAIXxmD,EAAOohD,UAAUgG,SAASptE,WAatBiyC,OAAO,EAePo7B,SAAU,EAaVE,OAAQ,SAAUlB,GAkBd,MAhBexlE,UAAXwlE,IAAwBA,EAAS,KAErClvE,KAAK80C,OAAQ,EACb90C,KAAK8L,QAAS,EACd9L,KAAKyB,SAAU,EAEe,kBAAnBzB,MAAKsvE,WAEZtvE,KAAKsvE,UAAUJ,GAGflvE,KAAK22C,QAEL32C,KAAK22C,OAAO05B,mBAAmBrwE,MAG5BA,MAiBXqvE,KAAM,WAWF,MATArvE,MAAK80C,OAAQ,EACb90C,KAAK8L,QAAS,EACd9L,KAAKyB,SAAU,EAEXzB,KAAK22C,QAEL32C,KAAK22C,OAAO25B,kBAAkBtwE,MAG3BA,OAiBf6oB,EAAOohD,UAAUuB,YAAc,aAE/B3iD,EAAOohD,UAAUuB,YAAY3oE,WAMzBkpE,cAAc,EAMdl7C,OAAQ,KAyBRqqB,YAAa,SAAUnmC,EAAK7I,EAAOqkE,GAE3Bx7D,IAAQ8T,EAAO0L,eAEfxf,EAAM7I,EACNA,EAAQ,GAIRA,EAAQA,GAAS,GAGhBqkE,GAAmC7mE,SAAlB6mE,IAAgCvwE,KAAKyqE,YAEvDzqE,KAAKyqE,WAAWx/D,OAGpBjL,KAAK+U,IAAMA,EACX/U,KAAK+rE,cAAe,CACpB,IAAI7iC,GAAQlpC,KAAKE,KAAKgpC,MAElBte,GAAW,EACXm1B,GAAY//C,KAAK8H,QAAQiE,YAAYzF,SAEzC,IAAIuiB,EAAOniB,eAAiBqO,YAAe8T,GAAOniB,cAE9C1G,KAAK+U,IAAMA,EAAIA,IACf/U,KAAKmM,WAAW4I,OAEf,IAAI8T,EAAO2nD,YAAcz7D,YAAe8T,GAAO2nD,WAEhDxwE,KAAK+rE,cAAe,EAEpB/rE,KAAKmM,WAAW4I,EAAIjN,SAIhB8iB,EAFAse,EAAMunC,aAAa17D,EAAIA,IAAK8T,EAAO61B,MAAMnrB,aAE7BvzB,KAAKyqE,WAAWiG,cAAcxnC,EAAMynC,aAAa57D,EAAIA,IAAK8T,EAAO61B,MAAMnrB,YAAarnB,IAIpFlM,KAAKyqE,WAAWiG,cAAc37D,EAAI67D,UAAW,OAG5D,IAAI/nD,EAAO4jD,OAAS13D,YAAe8T,GAAO4jD,MAC/C,CACIzsE,KAAK+rE,cAAe,CAGpB,IAAIz/D,GAAQyI,EAAIjN,QAAQwE,KACxBtM,MAAKmM,WAAW4I,EAAIjN,SACpB9H,KAAK4qB,SAAS7V,EAAIjN,QAAQoE,MAAM2tB,SAChC9kB,EAAI23D,eAAe5uC,IAAI99B,KAAK2sE,YAAa3sE,MACzCA,KAAK8H,QAAQwE,MAAQA,MAEpB,IAAIuc,EAAOgoD,SAAW97D,YAAe8T,GAAOioD,aAI7C9wE,KAAKmM,WAAWlM,KAAKuL,QAAQ6e,WAAWtV,EAAInE,aAE3C,IAAImE,YAAe9U,MAAKuL,QAEzBxL,KAAKmM,WAAW4I,OAGpB,CACI,GAAIg8D,GAAM7nC,EAAMtd,SAAS7W,GAAK,EAE9B/U,MAAK+U,IAAMg8D,EAAIh8D,IACf/U,KAAKmM,WAAW,GAAIlM,MAAKuL,QAAQulE,EAAIC,OAEzB,cAARj8D,EAEA/U,KAAK8H,QAAQiE,YAAYM,YAAa,EAItCrM,KAAK8H,QAAQiE,YAAYM,YAAa,EAG1Cue,GAAY5qB,KAAKyqE,WAAWiG,cAAcK,EAAIH,UAAW1kE,GAGzD0e,IAEA5qB,KAAK6wB,OAAShI,EAAOrmB,UAAUq3B,MAAM75B,KAAK8H,QAAQoE,QAGjD6zC,IAED//C,KAAK8H,QAAQiE,YAAYzF,UAAY,IAa7CskB,SAAU,SAAU1e,GAEhBlM,KAAK6wB,OAAS3kB,EAEdlM,KAAK8H,QAAQoE,MAAM7G,EAAI6G,EAAM7G,EAC7BrF,KAAK8H,QAAQoE,MAAM5G,EAAI4G,EAAM5G,EAC7BtF,KAAK8H,QAAQoE,MAAMvF,MAAQuF,EAAMvF,MACjC3G,KAAK8H,QAAQoE,MAAMtF,OAASsF,EAAMtF,OAElC5G,KAAK8H,QAAQsF,KAAK/H,EAAI6G,EAAM7G,EAC5BrF,KAAK8H,QAAQsF,KAAK9H,EAAI4G,EAAM5G,EAC5BtF,KAAK8H,QAAQsF,KAAKzG,MAAQuF,EAAMvF,MAChC3G,KAAK8H,QAAQsF,KAAKxG,OAASsF,EAAMtF,OAE7BsF,EAAM+kB,SAEFjxB,KAAK8H,QAAQgG,MAEb9N,KAAK8H,QAAQgG,KAAKzI,EAAI6G,EAAMglB,kBAC5BlxB,KAAK8H,QAAQgG,KAAKxI,EAAI4G,EAAMilB,kBAC5BnxB,KAAK8H,QAAQgG,KAAKnH,MAAQuF,EAAM4kB,YAChC9wB,KAAK8H,QAAQgG,KAAKlH,OAASsF,EAAM8kB,aAIjChxB,KAAK8H,QAAQgG,MAASzI,EAAG6G,EAAMglB,kBAAmB5rB,EAAG4G,EAAMilB,kBAAmBxqB,MAAOuF,EAAM4kB,YAAalqB,OAAQsF,EAAM8kB,aAG1HhxB,KAAK8H,QAAQnB,MAAQuF,EAAM4kB,YAC3B9wB,KAAK8H,QAAQlB,OAASsF,EAAM8kB,YAC5BhxB,KAAK8H,QAAQoE,MAAMvF,MAAQuF,EAAM4kB,YACjC9wB,KAAK8H,QAAQoE,MAAMtF,OAASsF,EAAM8kB,cAE5B9kB,EAAM+kB,SAAWjxB,KAAK8H,QAAQgG,OAEpC9N,KAAK8H,QAAQgG,KAAO,MAGpB9N,KAAKisE,UAELjsE,KAAKmsE,aAGTnsE,KAAK8H,QAAQwG,gBAAiB,EAE9BtO,KAAK8H,QAAQgjB,aAET9qB,KAAKkjB,gBAELljB,KAAKowB,gBAAiB,IAgB9Bu8C,YAAa,SAAU/qE,EAAQ+E,EAAOC,GAElC5G,KAAK8H,QAAQoE,MAAMnE,OAAOpB,EAAOC,GACjC5G,KAAK8H,QAAQ8iB,SAAS5qB,KAAK8H,QAAQoE,QASvCkgE,WAAY,WAEJpsE,KAAK6wB,QAEL7wB,KAAK4qB,SAAS5qB,KAAK6wB,SAkB3B3kB,OAEI5I,IAAK,WACD,MAAOtD,MAAKyqE,WAAWv+D,OAG3B1I,IAAK,SAAUC,GACXzD,KAAKyqE,WAAWv+D,MAAQzI,IAkBhCwtE,WAEI3tE,IAAK,WACD,MAAOtD,MAAKyqE,WAAWwG,WAG3BztE,IAAK,SAAUC,GACXzD,KAAKyqE,WAAWwG,UAAYxtE,KAkBxColB,EAAOohD,UAAUiH,QAAU,aAE3BroD,EAAOohD,UAAUiH,QAAQruE,WAerBsuE,QAAS,SAAU11D,GAEf,MAAOoN,GAAOrmB,UAAUu5B,WAAW/7B,KAAK6F,YAAa4V,EAAc5V,eAkB3EgjB,EAAOohD,UAAUqB,YAAc,aAQ/BziD,EAAOohD,UAAUqB,YAAYnlE,UAAY,WAErC,MAAInG,MAAK2rE,OAAS3rE,KAAK8L,QAEnB9L,KAAKyE,MAAMu2B,MAAMh7B,KAAK4B,OAAOT,SAASkE,EAAIrF,KAAKmB,SAASkE,EAAGrF,KAAK4B,OAAOT,SAASmE,EAAItF,KAAKmB,SAASmE,GAClGtF,KAAK+B,eAAe+C,GAAK9E,KAAKyE,MAAMY,EACpCrF,KAAK+B,eAAegD,GAAK/E,KAAKyE,MAAMa,EAEpCtF,KAAKorE,iBAAiB5nE,IAAIxD,KAAKyE,MAAMY,EAAGrF,KAAKyE,MAAMa,GACnDtF,KAAK0rE,iBAAmB1rE,KAAKuB,SAEzBvB,KAAKs2C,MAELt2C,KAAKs2C,KAAKnwC,YAGdnG,KAAK2rE,OAAQ,GAEN,IAGX3rE,KAAKorE,iBAAiB5nE,IAAIxD,KAAKyE,MAAMY,EAAGrF,KAAKyE,MAAMa,GACnDtF,KAAK0rE,iBAAmB1rE,KAAKuB,SAExBvB,KAAK4rE,SAAY5rE,KAAK4B,OAAOkK,QAM3B,GAJH9L,KAAK85C,cAAgB,IACd,KAafjxB,EAAOohD,UAAUqB,YAAYt5B,WAAa,WAElChyC,KAAK8L,QAAU9L,KAAKs2C,MAEpBt2C,KAAKs2C,KAAKtE,cAKlBnpB,EAAOohD,UAAUqB,YAAYzoE,WAqBzByzC,KAAM,KAONjxC,GAEI/B,IAAK,WAED,MAAOtD,MAAKmB,SAASkE,GAIzB7B,IAAK,SAAUC,GAEXzD,KAAKmB,SAASkE,EAAI5B,EAEdzD,KAAKs2C,OAASt2C,KAAKs2C,KAAKriC,QAExBjU,KAAKs2C,KAAK86B,QAAS,KAY/B9rE,GAEIhC,IAAK,WAED,MAAOtD,MAAKmB,SAASmE,GAIzB9B,IAAK,SAAUC,GAEXzD,KAAKmB,SAASmE,EAAI7B,EAEdzD,KAAKs2C,OAASt2C,KAAKs2C,KAAKriC,QAExBjU,KAAKs2C,KAAK86B,QAAS,MAoBnCvoD,EAAOohD,UAAUoH,MAAQ,aAkBzBxoD,EAAOohD,UAAUoH,MAAMxuE,UAAUimC,MAAQ,SAAUzjC,EAAGC,EAAG4pE,GA+BrD,MA7BexlE,UAAXwlE,IAAwBA,EAAS,GAErClvE,KAAKyE,MAAMjB,IAAI6B,EAAGC,GAClBtF,KAAKmB,SAASqC,IAAI6B,EAAGC,GAErBtF,KAAK2rE,OAAQ,EACb3rE,KAAK8L,QAAS,EACd9L,KAAKyB,SAAU,EACfzB,KAAK2B,YAAa,EAEd3B,KAAKmrE,WAAWuE,UAEhB1vE,KAAK4vE,mBAAoB,GAGzB5vE,KAAKmrE,WAAW8E,WAEhBjwE,KAAK80C,OAAQ,EACb90C,KAAKkvE,OAASA,GAGdlvE,KAAKmrE,WAAWG,aAEZtrE,KAAKs2C,MAELt2C,KAAKs2C,KAAKxN,MAAMzjC,EAAGC,GAAG,GAAO,GAI9BtF,MAeX6oB,EAAOohD,UAAUqH,YAAc,aAE/BzoD,EAAOohD,UAAUqH,YAAYzuE,WAMzB4C,kBAAmB,KAMnBE,yBAA0B3F,KAU1BuxE,SAAU,KAUVC,SAAU,KASVC,eAAgB,SAAUxsE,GAElBjF,KAAKuxE,WAEDtsE,EAAGP,EAAI1E,KAAKuxE,SAASlsE,IAErBJ,EAAGP,EAAI1E,KAAKuxE,SAASlsE,GAGrBJ,EAAGJ,EAAI7E,KAAKuxE,SAASjsE,IAErBL,EAAGJ,EAAI7E,KAAKuxE,SAASjsE,IAIzBtF,KAAKwxE,WAEDvsE,EAAGP,EAAI1E,KAAKwxE,SAASnsE,IAErBJ,EAAGP,EAAI1E,KAAKwxE,SAASnsE,GAGrBJ,EAAGJ,EAAI7E,KAAKwxE,SAASlsE,IAErBL,EAAGJ,EAAI7E,KAAKwxE,SAASlsE,KA+BjCosE,eAAgB,SAAUpnE,EAAME,EAAMC,EAAMC,GAE3BhB,SAATc,EAGAA,EAAOC,EAAOC,EAAOJ,EAEPZ,SAATe,IAGLA,EAAOC,EAAOF,EACdA,EAAOF,GAGE,OAATA,EAEAtK,KAAKuxE,SAAW,KAIZvxE,KAAKuxE,SAELvxE,KAAKuxE,SAAS/tE,IAAI8G,EAAME,GAIxBxK,KAAKuxE,SAAW,GAAI1oD,GAAOznB,MAAMkJ,EAAME,GAIlC,OAATC,EAEAzK,KAAKwxE,SAAW,KAIZxxE,KAAKwxE,SAELxxE,KAAKwxE,SAAShuE,IAAIiH,EAAMC,GAIxB1K,KAAKwxE,SAAW,GAAI3oD,GAAOznB,MAAMqJ,EAAMC,GAIzB,OAAlB1K,KAAKuxE,SAELvxE,KAAKyF,kBAAoB,MAIzBzF,KAAKyF,kBAAoBzF,KAAKyxE,eAC9BzxE,KAAK2F,yBAA2B3F,QAiB5C6oB,EAAOohD,UAAU0H,SAAW,aAE5B9oD,EAAOohD,UAAU0H,SAAS9uE,WAWtBk9C,UAEIz8C,IAAK,WAED,OAAQtD,KAAK8H,QAAQiE,YAAYzF,WAIrC9C,IAAK,SAAUC,GAEPA,EAEIzD,KAAK8H,UAEL9H,KAAK8H,QAAQiE,YAAYzF,UAAY,GAKrCtG,KAAK8H,UAEL9H,KAAK8H,QAAQiE,YAAYzF,UAAY,MAyBzDuiB,EAAO21B,kBAAoB,SAAUt+C,GAMjCF,KAAKE,KAAOA,EAMZF,KAAKyE,MAAQzE,KAAKE,KAAKuE,OAI3BokB,EAAO21B,kBAAkB37C,WASrB+uE,SAAU,SAAUt2B,GAEhB,MAAOt7C,MAAKyE,MAAMq5B,IAAIwd,IAwB1Bu2B,OAAQ,SAAU36B,EAAUniC,EAAK7I,EAAO8vC,GAEpC,GAAI61B,GAAS7xE,KAAKE,KAAK0xC,QAAQ9T,IAAIjV,EAAOipD,OAI1C,OAFAD,GAAOE,cAAc76B,EAAUniC,EAAK7I,EAAO8vC,GAEpC61B,GAoBX1nD,MAAO,SAAU9kB,EAAGC,EAAGyP,EAAK7I,EAAO8vC,GAI/B,MAFctyC,UAAVsyC,IAAuBA,EAAQh8C,KAAKyE,OAEjCu3C,EAAMle,IAAI,GAAIjV,GAAOpY,MAAMzQ,KAAKE,KAAMmF,EAAGC,EAAGyP,EAAK7I,KAmB5DwW,OAAQ,SAAUrd,EAAGC,EAAGyP,EAAK7I,EAAO8vC,GAIhC,MAFctyC,UAAVsyC,IAAuBA,EAAQh8C,KAAKyE,OAEjCu3C,EAAM3zC,OAAOhD,EAAGC,EAAGyP,EAAK7I,IAyBnC8lE,SAAU,SAAU3sE,EAAGC,EAAGyP,EAAKk9D,EAAMj2B,GAEnBtyC,SAAVsyC,IAAuBA,EAAQh8C,KAAKyE,MAExC,IAAIgzB,GAAM,GAAI5O,GAAOqpD,SAASlyE,KAAKE,KAAMmF,EAAGC,EAAGyP,EAAKk9D,EAIpD,OAFAj2B,GAAMle,IAAIrG,GAEHA,GAaX06C,MAAO,SAAU72B,GAEb,MAAOt7C,MAAKE,KAAKqpC,OAAOlhC,OAAOizC,IAenCU,MAAO,SAAUp6C,EAAQ83B,EAAM8a,EAAYC,EAAYC,GAEnD,MAAO,IAAI7rB,GAAO0rB,MAAMv0C,KAAKE,KAAM0B,EAAQ83B,EAAM8a,EAAYC,EAAYC,IAiB7E09B,aAAc,SAAU19B,EAAiB9yC,EAAQ83B,EAAM8a,GAEnD,MAAO,IAAI3rB,GAAO0rB,MAAMv0C,KAAKE,KAAM0B,EAAQ83B,EAAM8a,GAAY,EAAME,IAevE7pC,YAAa,SAAUjJ,EAAQ83B,EAAM8a,GAMjC,MAJe9qC,UAAX9H,IAAwBA,EAAS,MACxB8H,SAATgwB,IAAsBA,EAAO,SACdhwB,SAAf8qC,IAA4BA,GAAa,GAEtC,GAAI3rB,GAAO1Z,YAAYnP,KAAKE,KAAM0B,EAAQ83B,EAAM8a,IAc3D69B,MAAO,SAAUt9D,EAAKwvB,EAAQgmC,EAAMrP,GAEhC,MAAOl7D,MAAKE,KAAKmpC,MAAMvL,IAAI/oB,EAAKwvB,EAAQgmC,EAAMrP,IAclD7xB,MAAO,SAAUt0B,EAAKwvB,EAAQgmC,EAAMrP,GAEhC,MAAOl7D,MAAKE,KAAKmpC,MAAMvL,IAAI/oB,EAAKwvB,EAAQgmC,EAAMrP,IAWlDoX,YAAa,SAAUv9D,GAEnB,MAAO/U,MAAKE,KAAKmpC,MAAMkpC,UAAUx9D,IAiBrCy9D,WAAY,SAAUntE,EAAGC,EAAGqB,EAAOC,EAAQmO,EAAK7I,EAAO8vC,GAInD,MAFctyC,UAAVsyC,IAAuBA,EAAQh8C,KAAKyE,OAEjCu3C,EAAMle,IAAI,GAAIjV,GAAO49B,WAAWzmD,KAAKE,KAAMmF,EAAGC,EAAGqB,EAAOC,EAAQmO,EAAK7I,KAkBhFumE,KAAM,SAAUptE,EAAGC,EAAGyP,EAAK7I,EAAOojB,EAAQ0sB,GAItC,MAFctyC,UAAVsyC,IAAuBA,EAAQh8C,KAAKyE,OAEjCu3C,EAAMle,IAAI,GAAIjV,GAAOwG,KAAKrvB,KAAKE,KAAMmF,EAAGC,EAAGyP,EAAK7I,EAAOojB,KAelEojD,KAAM,SAAUrtE,EAAGC,EAAGotE,EAAM92D,EAAOogC,GAI/B,MAFctyC,UAAVsyC,IAAuBA,EAAQh8C,KAAKyE,OAEjCu3C,EAAMle,IAAI,GAAIjV,GAAO8pD,KAAK3yE,KAAKE,KAAMmF,EAAGC,EAAGotE,EAAM92D,KAoB5DurC,OAAQ,SAAU9hD,EAAGC,EAAGyP,EAAKwkC,EAAUxN,EAAiB6mC,EAAWC,EAAUC,EAAWC,EAAS/2B,GAI7F,MAFctyC,UAAVsyC,IAAuBA,EAAQh8C,KAAKyE,OAEjCu3C,EAAMle,IAAI,GAAIjV,GAAOmqD,OAAOhzE,KAAKE,KAAMmF,EAAGC,EAAGyP,EAAKwkC,EAAUxN,EAAiB6mC,EAAWC,EAAUC,EAAWC,KAaxHz0D,SAAU,SAAUjZ,EAAGC,EAAG02C,GAItB,MAFctyC,UAAVsyC,IAAuBA,EAAQh8C,KAAKyE,OAEjCu3C,EAAMle,IAAI,GAAIjV,GAAO8d,SAAS3mC,KAAKE,KAAMmF,EAAGC,KAiBvD2tE,QAAS,SAAU5tE,EAAGC,EAAG4tE,GAErB,MAAOlzE,MAAKE,KAAKspC,UAAU1L,IAAI,GAAIjV,GAAOm2B,UAAUm0B,OAAOC,QAAQpzE,KAAKE,KAAMmF,EAAGC,EAAG4tE,KA0BxFG,UAAW,SAAUC,EAAMC,EAAgBC,EAAiBC,EAAOC,EAAaC,EAAUC,EAAUC,EAASC,GAEzG,MAAO,IAAIjrD,GAAOkrD,UAAU/zE,KAAKE,KAAMozE,EAAMC,EAAgBC,EAAiBC,EAAOC,EAAaC,EAAUC,EAAUC,EAASC,IAgCnIE,WAAY,SAAU3uE,EAAGC,EAAGguE,EAAMZ,EAAMnxD,EAAMy6B,GAI1C,MAFctyC,UAAVsyC,IAAuBA,EAAQh8C,KAAKyE,OAEjCu3C,EAAMle,IAAI,GAAIjV,GAAO+jD,WAAW5sE,KAAKE,KAAMmF,EAAGC,EAAGguE,EAAMZ,EAAMnxD,KAqBxE0yD,QAAS,SAAUl/D,EAAKm/D,EAAWC,EAAYxtE,EAAOC,GAElD,MAAO,IAAIiiB,GAAOgoD,QAAQ7wE,KAAKE,KAAM6U,EAAKm/D,EAAWC,EAAYxtE,EAAOC,IAc5EH,cAAe,SAAUE,EAAOC,EAAQmO,EAAKq/D,IAE7B1qE,SAARqL,GAA6B,KAARA,KAAcA,EAAM/U,KAAKE,KAAKioC,IAAIksC,QACxC3qE,SAAf0qE,IAA4BA,GAAa,EAE7C,IAAItsE,GAAU,GAAI+gB,GAAOniB,cAAc1G,KAAKE,KAAMyG,EAAOC,EAAQmO,EAOjE,OALIq/D,IAEAp0E,KAAKE,KAAKgpC,MAAMorC,iBAAiBv/D,EAAKjN,GAGnCA,GAcXysE,MAAO,SAAUx/D,EAAKy/D,GAElB,MAAO,IAAI3rD,GAAO4jD,MAAMzsE,KAAKE,KAAM6U,EAAKy/D,IAgB5CC,WAAY,SAAU9tE,EAAOC,EAAQmO,EAAKq/D,GAEnB1qE,SAAf0qE,IAA4BA,GAAa,IACjC1qE,SAARqL,GAA6B,KAARA,KAAcA,EAAM/U,KAAKE,KAAKioC,IAAIksC,OAE3D,IAAIvsE,GAAU,GAAI+gB,GAAO2nD,WAAWxwE,KAAKE,KAAM6U,EAAKpO,EAAOC,EAO3D,OALIwtE,IAEAp0E,KAAKE,KAAKgpC,MAAMwrC,cAAc3/D,EAAKjN,GAGhCA,GAYXqd,OAAQ,SAAUA,GAEd,GAAIqR,GAAO71B,MAAMkC,UAAUwzB,MAAM3wB,KAAKixB,UAAW,GAE7CxR,EAAS,GAAI0D,GAAOgnB,OAAO1qB,GAAQnlB,KAAKE,KAI5C,OAFAilB,GAAOhR,KAAKlN,MAAMke,EAAQqR,GAEnBrR,GAcX4sB,OAAQ,SAAUA,GAEd,MAAO/xC,MAAKE,KAAK0xC,QAAQ9T,IAAIiU,KAMrClpB,EAAO21B,kBAAkB37C,UAAUC,YAAc+lB,EAAO21B,kBAgBxD31B,EAAO41B,kBAAoB,SAAUv+C,GAMjCF,KAAKE,KAAOA,EAMZF,KAAKyE,MAAQzE,KAAKE,KAAKuE,OAI3BokB,EAAO41B,kBAAkB57C,WAerBsnB,MAAO,SAAU9kB,EAAGC,EAAGyP,EAAK7I,GAExB,MAAO,IAAI2c,GAAOpY,MAAMzQ,KAAKE,KAAMmF,EAAGC,EAAGyP,EAAK7I,IAclDwW,OAAQ,SAAUrd,EAAGC,EAAGyP,EAAK7I,GAEzB,MAAO,IAAI2c,GAAOphB,OAAOzH,KAAKE,KAAMmF,EAAGC,EAAGyP,EAAK7I,IAanDimE,MAAO,SAAU16C,GAEb,MAAO,IAAI5O,GAAO8rD,MAAMl9C,EAAKz3B,KAAKE,KAAMF,KAAKE,KAAKqpC,SAetDyS,MAAO,SAAUp6C,EAAQ83B,EAAM8a,EAAYC,EAAYC,GAEnD,MAAO,IAAI7rB,GAAO0rB,MAAMv0C,KAAKE,KAAM0B,EAAQ83B,EAAM8a,EAAYC,EAAYC,IAa7E7pC,YAAa,SAAUjJ,EAAQ83B,EAAM8a,GAKjC,MAHa9qC,UAATgwB,IAAsBA,EAAO,SACdhwB,SAAf8qC,IAA4BA,GAAa,GAEtC,GAAI3rB,GAAO1Z,YAAYnP,KAAKE,KAAM0B,EAAQ83B,EAAM8a,IAc3D69B,MAAO,SAAUt9D,EAAKwvB,EAAQgmC,EAAMrP,GAEhC,MAAOl7D,MAAKE,KAAKmpC,MAAMvL,IAAI/oB,EAAKwvB,EAAQgmC,EAAMrP,IAWlDoX,YAAa,SAAUv9D,GAEnB,MAAO/U,MAAKE,KAAKmpC,MAAMkpC,UAAUx9D,IAcrCs0B,MAAO,SAAUt0B,EAAKwvB,EAAQgmC,EAAMrP,GAEhC,MAAOl7D,MAAKE,KAAKmpC,MAAMvL,IAAI/oB,EAAKwvB,EAAQgmC,EAAMrP,IAgBlDsX,WAAY,SAAUntE,EAAGC,EAAGqB,EAAOC,EAAQmO,EAAK7I,GAE5C,MAAO,IAAI2c,GAAO49B,WAAWzmD,KAAKE,KAAMmF,EAAGC,EAAGqB,EAAOC,EAAQmO,EAAK7I,IAgBtEumE,KAAM,SAAUptE,EAAGC,EAAGyP,EAAK7I,EAAOojB,GAE9B,MAAO,IAAIzG,GAAOwG,KAAKrvB,KAAKE,KAAMmF,EAAGC,EAAGyP,EAAK7I,EAAOojB,IAcxDojD,KAAM,SAAUrtE,EAAGC,EAAGotE,EAAM92D,GAExB,MAAO,IAAIiN,GAAO8pD,KAAK3yE,KAAKE,KAAMmF,EAAGC,EAAGotE,EAAM92D,IAmBlDurC,OAAQ,SAAU9hD,EAAGC,EAAGyP,EAAKwkC,EAAUxN,EAAiB6mC,EAAWC,EAAUC,EAAWC,GAEpF,MAAO,IAAIlqD,GAAOmqD,OAAOhzE,KAAKE,KAAMmF,EAAGC,EAAGyP,EAAKwkC,EAAUxN,EAAiB6mC,EAAWC,EAAUC,EAAWC,IAY9Gz0D,SAAU,SAAUjZ,EAAGC,GAEnB,MAAO,IAAIujB,GAAO8d,SAAS3mC,KAAKE,KAAMmF,EAAGC,IAiB7C2tE,QAAS,SAAU5tE,EAAGC,EAAG4tE,GAErB,MAAO,IAAIrqD,GAAOm2B,UAAUm0B,OAAOC,QAAQpzE,KAAKE,KAAMmF,EAAGC,EAAG4tE,IA0BhEG,UAAW,SAAUC,EAAMC,EAAgBC,EAAiBC,EAAOC,EAAaC,EAAUC,EAAUC,EAASC,GAEzG,MAAO,IAAIjrD,GAAOkrD,UAAU/zE,KAAKE,KAAMozE,EAAMC,EAAgBC,EAAiBC,EAAOC,EAAaC,EAAUC,EAAUC,EAASC,IAgCnIE,WAAY,SAAU3uE,EAAGC,EAAGguE,EAAMZ,EAAMnxD,EAAM81B,GAE1C,MAAO,IAAIxuB,GAAO+jD,WAAW5sE,KAAKE,KAAMmF,EAAGC,EAAGguE,EAAMZ,EAAMnxD,EAAM81B,IAoBpE48B,QAAS,SAAUl/D,EAAKm/D,EAAWC,EAAYxtE,EAAOC,GAElD,MAAO,IAAIiiB,GAAOgoD,QAAQ7wE,KAAKE,KAAM6U,EAAKm/D,EAAWC,EAAYxtE,EAAOC,IAc5EH,cAAe,SAAUE,EAAOC,EAAQmO,EAAKq/D,IAE7B1qE,SAARqL,GAA6B,KAARA,KAAcA,EAAM/U,KAAKE,KAAKioC,IAAIksC,QACxC3qE,SAAf0qE,IAA4BA,GAAa,EAE7C,IAAItsE,GAAU,GAAI+gB,GAAOniB,cAAc1G,KAAKE,KAAMyG,EAAOC,EAAQmO,EAOjE,OALIq/D,IAEAp0E,KAAKE,KAAKgpC,MAAMorC,iBAAiBv/D,EAAKjN,GAGnCA,GAgBX2sE,WAAY,SAAU9tE,EAAOC,EAAQmO,EAAKq/D,GAEnB1qE,SAAf0qE,IAA4BA,GAAa,IACjC1qE,SAARqL,GAA6B,KAARA,KAAcA,EAAM/U,KAAKE,KAAKioC,IAAIksC,OAE3D,IAAIvsE,GAAU,GAAI+gB,GAAO2nD,WAAWxwE,KAAKE,KAAM6U,EAAKpO,EAAOC,EAO3D,OALIwtE,IAEAp0E,KAAKE,KAAKgpC,MAAMwrC,cAAc3/D,EAAKjN,GAGhCA,GAYXqd,OAAQ,SAAUA,GAEd,GAAIqR,GAAO71B,MAAMkC,UAAUwzB,MAAM3wB,KAAKixB,UAAW,GAE7CxR,EAAS,GAAI0D,GAAOgnB,OAAO1qB,GAAQnlB,KAAKE,KAI5C,OAFAilB,GAAOhR,KAAKlN,MAAMke,EAAQqR,GAEnBrR,IAMf0D,EAAO41B,kBAAkB57C,UAAUC,YAAc+lB,EAAO41B,kBA6CxD51B,EAAOphB,OAAS,SAAUvH,EAAMmF,EAAGC,EAAGyP,EAAK7I,GAEvC7G,EAAIA,GAAK,EACTC,EAAIA,GAAK,EACTyP,EAAMA,GAAO,KACb7I,EAAQA,GAAS,KAMjBlM,KAAKoV,KAAOyT,EAAO6J,OAMnB1yB,KAAK60C,YAAchsB,EAAO6J,OAE1BzyB,KAAKwH,OAAO/B,KAAK1F,KAAMC,KAAK8O,aAAwB,WAEpD8Z,EAAOohD,UAAUgB,KAAK92D,KAAKzO,KAAK1F,KAAME,EAAMmF,EAAGC,EAAGyP,EAAK7I,IAI3D2c,EAAOphB,OAAO5E,UAAYO,OAAOiF,OAAOpI,KAAKwH,OAAO5E,WACpDgmB,EAAOphB,OAAO5E,UAAUC,YAAc+lB,EAAOphB,OAE7CohB,EAAOohD,UAAUgB,KAAKC,QAAQxlE,KAAKmjB,EAAOphB,OAAO5E,WAC7C,QACA,YACA,WACA,SACA,aACA,OACA,QACA,UACA,gBACA,SACA,WACA,eACA,UACA,WACA,cACA,UACA,cACA,QACA,cACA,aAGJgmB,EAAOphB,OAAO5E,UAAU+xE,iBAAmB/rD,EAAOohD,UAAUqB,YAAYnlE,UACxE0iB,EAAOphB,OAAO5E,UAAUgyE,kBAAoBhsD,EAAOohD,UAAUgG,SAAS9pE,UACtE0iB,EAAOphB,OAAO5E,UAAUiyE,iBAAmBjsD,EAAOohD,UAAUyF,QAAQvpE,UACpE0iB,EAAOphB,OAAO5E,UAAUkyE,cAAgBlsD,EAAOohD,UAAUgB,KAAK9kE,UAS9D0iB,EAAOphB,OAAO5E,UAAUsD,UAAY,WAEhC,MAAKnG,MAAK40E,oBAAuB50E,KAAK60E,qBAAwB70E,KAAK80E,mBAK5D90E,KAAK+0E,iBAHD,GAyCflsD,EAAOpY,MAAQ,SAAUvQ,EAAMmF,EAAGC,EAAGyP,EAAK7I,GAEtC7G,EAAIA,GAAK,EACTC,EAAIA,GAAK,EACTyP,EAAMA,GAAO,KACb7I,EAAQA,GAAS,KAMjBlM,KAAKoV,KAAOyT,EAAO+J,MAEnB3yB,KAAKwH,OAAO/B,KAAK1F,KAAMC,KAAK8O,aAAwB,WAEpD8Z,EAAOohD,UAAUgB,KAAK92D,KAAKzO,KAAK1F,KAAME,EAAMmF,EAAGC,EAAGyP,EAAK7I,IAI3D2c,EAAOpY,MAAM5N,UAAYO,OAAOiF,OAAOpI,KAAKwH,OAAO5E,WACnDgmB,EAAOpY,MAAM5N,UAAUC,YAAc+lB,EAAOpY,MAE5CoY,EAAOohD,UAAUgB,KAAKC,QAAQxlE,KAAKmjB,EAAOpY,MAAM5N,WAC5C,QACA,YACA,WACA,SACA,aACA,OACA,UACA,gBACA,eACA,WACA,cACA,UACA,QACA,aAGJgmB,EAAOpY,MAAM5N,UAAUiyE,iBAAmBjsD,EAAOohD,UAAUyF,QAAQvpE,UACnE0iB,EAAOpY,MAAM5N,UAAUkyE,cAAgBlsD,EAAOohD,UAAUgB,KAAK9kE,UAQ7D0iB,EAAOpY,MAAM5N,UAAUsD,UAAY,WAE/B,MAAKnG,MAAK80E,mBAKH90E,KAAK+0E,iBAHD,GAyCflsD,EAAOmqD,OAAS,SAAU9yE,EAAMmF,EAAGC,EAAGyP,EAAKwkC,EAAUxN,EAAiB6mC,EAAWC,EAAUC,EAAWC,GAElG1tE,EAAIA,GAAK,EACTC,EAAIA,GAAK,EACTyP,EAAMA,GAAO,KACbwkC,EAAWA,GAAY,KACvBxN,EAAkBA,GAAmB/rC,KAErC6oB,EAAOpY,MAAM/K,KAAK1F,KAAME,EAAMmF,EAAGC,EAAGyP,EAAK89D,GAOzC7yE,KAAKoV,KAAOyT,EAAO8J,OAMnB3yB,KAAK60C,YAAchsB,EAAO6J,OAO1B1yB,KAAKg1E,aAAe,KAOpBh1E,KAAKi1E,YAAc,KAOnBj1E,KAAKk1E,aAAe,KAOpBl1E,KAAKm1E,WAAa,KAOlBn1E,KAAKo1E,YAAc,KAOnBp1E,KAAKq1E,WAAa,KAOlBr1E,KAAKs1E,YAAc,KAOnBt1E,KAAKu1E,UAAY,KAOjBv1E,KAAKw1E,kBAAoB,GAOzBx1E,KAAKy1E,iBAAmB,GAOxBz1E,KAAK01E,kBAAoB,GAOzB11E,KAAK21E,gBAAkB,GAMvB31E,KAAKsuE,YAAc,GAAIzlD,GAAOuc,OAM9BplC,KAAKuuE,WAAa,GAAI1lD,GAAOuc,OAM7BplC,KAAKwuE,YAAc,GAAI3lD,GAAOuc,OAM9BplC,KAAKyuE,UAAY,GAAI5lD,GAAOuc,OAS5BplC,KAAK41E,iBAAkB,EASvB51E,KAAK61E,yBAA2BhtD,EAAO47B,YAAYa,MAOnDtlD,KAAK81E,cAAe,EAUpB91E,KAAK+1E,UAAW,EAEhB/1E,KAAK02C,cAAe,EAEpB12C,KAAKmpC,MAAM99B,MAAM,GAAG,GAEpBrL,KAAKmpC,MAAM0pB,eAAgB,EAE3B7yD,KAAKg2E,UAAUpD,EAAWC,EAAUC,EAAWC,GAE9B,OAAbx5B,GAEAv5C,KAAKyuE,UAAU3wC,IAAIyb,EAAUxN,GAIjC/rC,KAAK22C,OAAO23B,YAAYxwC,IAAI99B,KAAKi2E,mBAAoBj2E,MACrDA,KAAK22C,OAAO43B,WAAWzwC,IAAI99B,KAAKk2E,kBAAmBl2E,MACnDA,KAAK22C,OAAO63B,YAAY1wC,IAAI99B,KAAKm2E,mBAAoBn2E,MACrDA,KAAK22C,OAAO83B,UAAU3wC,IAAI99B,KAAKo2E,iBAAkBp2E,MAEjDA,KAAK22C,OAAOs3B,mBAAmBnwC,IAAI99B,KAAKq2E,iBAAkBr2E,OAI9D6oB,EAAOmqD,OAAOnwE,UAAYO,OAAOiF,OAAOwgB,EAAOpY,MAAM5N,WACrDgmB,EAAOmqD,OAAOnwE,UAAUC,YAAc+lB,EAAOmqD,MAG7C,IAAIsD,GAAa,OACbC,EAAY,MACZC,EAAa,OACbC,EAAW,IAOf5tD,GAAOmqD,OAAOnwE,UAAU6zE,YAAc,WAElC12E,KAAKg2E,UAAU,KAAM,KAAM,KAAM,OAUrCntD,EAAOmqD,OAAOnwE,UAAUwzE,iBAAmB,WAEvCr2E,KAAK02C,cAAe,GAaxB7tB,EAAOmqD,OAAOnwE,UAAU8zE,cAAgB,SAAUrtC,EAAOp9B,EAAO0qE,GAE5D,GAAIC,GAAW,MAAQvtC,EAAQ,OAEjB,QAAVp9B,GAEAlM,KAAK62E,GAAY3qE,EAEb0qE,GAEA52E,KAAK82E,iBAAiBxtC,IAK1BtpC,KAAK62E,GAAY,MAazBhuD,EAAOmqD,OAAOnwE,UAAUi0E,iBAAmB,SAAUxtC,GAEjD,GAAItpC,KAAK81E,aAEL,OAAO,CAGX,IAAIe,GAAW,MAAQvtC,EAAQ,QAC3Bp9B,EAAQlM,KAAK62E,EAEjB,OAAqB,gBAAV3qE,IAEPlM,KAAKixE,UAAY/kE,GACV,GAEe,gBAAVA,IAEZlM,KAAKkM,MAAQA,GACN,IAIA,GAiBf2c,EAAOmqD,OAAOnwE,UAAUmzE,UAAY,SAAUpD,EAAWC,EAAUC,EAAWC,GAE1E/yE,KAAK22E,cAAcL,EAAY1D,EAAW5yE,KAAKmpC,MAAMktB,eACrDr2D,KAAK22E,cAAcJ,EAAW1D,GAAW7yE,KAAKmpC,MAAMktB,eACpDr2D,KAAK22E,cAAcH,EAAY1D,EAAW9yE,KAAKmpC,MAAM8sB,eACrDj2D,KAAK22E,cAAcF,EAAU1D,EAAS/yE,KAAKmpC,MAAM+sB,cAarDrtC,EAAOmqD,OAAOnwE,UAAUk0E,cAAgB,SAAUztC,EAAOD,EAAO2tC,GAE5D,GAAIC,GAAW,KAAO3tC,EAAQ,QAC1B4tC,EAAY,KAAO5tC,EAAQ,aAE3BD,aAAiBxgB,GAAOsuD,OAAS9tC,YAAiBxgB,GAAOuuD,aAEzDp3E,KAAKi3E,GAAY5tC,EACjBrpC,KAAKk3E,GAA+B,gBAAXF,GAAsBA,EAAS,KAIxDh3E,KAAKi3E,GAAY,KACjBj3E,KAAKk3E,GAAa,KAa1BruD,EAAOmqD,OAAOnwE,UAAUw0E,eAAiB,SAAU/tC,GAE/C,GAAI2tC,GAAW,KAAO3tC,EAAQ,QAC1BD,EAAQrpC,KAAKi3E,EAEjB,IAAI5tC,EACJ,CACI,GAAI6tC,GAAY,KAAO5tC,EAAQ,cAC3B0tC,EAASh3E,KAAKk3E,EAGlB,OADA7tC,GAAMghC,KAAK2M,IACJ,EAIP,OAAO,GAsBfnuD,EAAOmqD,OAAOnwE,UAAUy0E,UAAY,SAAUC,EAAWC,EAAYC,EAAWC,EAAYC,EAAUC,EAAWC,EAASC,GAEtH93E,KAAK+2E,cAAcT,EAAYiB,EAAWC,GAC1Cx3E,KAAK+2E,cAAcR,EAAWoB,EAAUC,GACxC53E,KAAK+2E,cAAcP,EAAYiB,EAAWC,GAC1C13E,KAAK+2E,cAAcN,EAAUoB,EAASC,IAY1CjvD,EAAOmqD,OAAOnwE,UAAUk1E,aAAe,SAAU1uC,EAAO2tC,GAEpDh3E,KAAK+2E,cAAcT,EAAYjtC,EAAO2tC,IAY1CnuD,EAAOmqD,OAAOnwE,UAAUm1E,YAAc,SAAU3uC,EAAO2tC,GAEnDh3E,KAAK+2E,cAAcR,EAAWltC,EAAO2tC,IAYzCnuD,EAAOmqD,OAAOnwE,UAAUo1E,aAAe,SAAU5uC,EAAO2tC,GAEpDh3E,KAAK+2E,cAAcP,EAAYntC,EAAO2tC,IAY1CnuD,EAAOmqD,OAAOnwE,UAAUq1E,WAAa,SAAU7uC,EAAO2tC,GAElDh3E,KAAK+2E,cAAcN,EAAUptC,EAAO2tC,IAYxCnuD,EAAOmqD,OAAOnwE,UAAUozE,mBAAqB,SAAUvzD,EAAQouB,GAEvDA,EAAQ4b,iBACP1sD,KAAK61E,yBAA2B/kC,EAAQ6b,eAAiB7b,EAAQ6b,cAMtE3sD,KAAK82E,iBAAiBR,KAElBt2E,KAAK41E,iBAAoB9kC,EAAQkd,WAKrChuD,KAAKq3E,eAAef,GAEhBt2E,KAAKsuE,aAELtuE,KAAKsuE,YAAYpmC,SAASloC,KAAM8wC,MAaxCjoB,EAAOmqD,OAAOnwE,UAAUqzE,kBAAoB,SAAUxzD,EAAQouB,GAE1D9wC,KAAK82E,iBAAiBP,GAEtBv2E,KAAKq3E,eAAed,GAEhBv2E,KAAKuuE,YAELvuE,KAAKuuE,WAAWrmC,SAASloC,KAAM8wC,IAYvCjoB,EAAOmqD,OAAOnwE,UAAUszE,mBAAqB,SAAUzzD,EAAQouB,GAE3D9wC,KAAK82E,iBAAiBN,GAEtBx2E,KAAKq3E,eAAeb,GAEhBx2E,KAAKwuE,aAELxuE,KAAKwuE,YAAYtmC,SAASloC,KAAM8wC,IAYxCjoB,EAAOmqD,OAAOnwE,UAAUuzE,iBAAmB,SAAU1zD,EAAQouB,EAASmkB,GAUlE,GARAj1D,KAAKq3E,eAAeZ,GAGhBz2E,KAAKyuE,WAELzuE,KAAKyuE,UAAUvmC,SAASloC,KAAM8wC,EAASmkB,IAGvCj1D,KAAK81E,aAKT,GAAI91E,KAAK+1E,YAAa,IAAS/1E,KAAK+1E,SAAWjlC,EAAQ6b,eAAiB7b,EAAQ6b,YAE5E3sD,KAAK82E,iBAAiBP,OAG1B,CACI,GAAI4B,GAAYn4E,KAAK82E,iBAAiBL,EACjC0B,KAGGljB,EAEAj1D,KAAK82E,iBAAiBR,GAItBt2E,KAAK82E,iBAAiBP,MA6BtC1tD,EAAO1Z,YAAc,SAAUjP,EAAM0B,EAAQ83B,EAAM8a,IAEhC9qC,SAAX9H,GAAmC,OAAXA,KAAmBA,EAAS1B,EAAKuE,OAE7DxE,KAAKkP,YAAYzJ,KAAK1F,MAEtB6oB,EAAO0rB,MAAM7uC,KAAK1F,KAAME,EAAM0B,EAAQ83B,EAAM8a,GAM5Cx0C,KAAKoV,KAAOyT,EAAO8K,aAIvB9K,EAAO1Z,YAAYtM,UAAYgmB,EAAO0O,MAAMiC,QAAO,EAAM3Q,EAAO1Z,YAAYtM,UAAW5C,KAAKkP,YAAYtM,UAAWgmB,EAAO0rB,MAAM1xC,WAEhIgmB,EAAO1Z,YAAYtM,UAAUC,YAAc+lB,EAAO1Z,YAwBlD0Z,EAAO2nD,WAAa,SAAUtwE,EAAM6U,EAAKpO,EAAOC,IAE9B8C,SAAV/C,GAAiC,IAAVA,KAAeA,EAAQ,MACnC+C,SAAX9C,GAAmC,IAAXA,KAAgBA,EAAS,KAKrD5G,KAAKE,KAAOA,EAKZF,KAAK+U,IAAMA,EAKX/U,KAAK2G,MAAQA,EAKb3G,KAAK4G,OAASA,EAMd5G,KAAK4Q,OAAS3Q,KAAK4Q,WAAWxI,OAAOrI,KAAM2G,EAAOC,GAMlD5G,KAAKsN,QAAUtN,KAAK4Q,OAAOE,WAAW,MAAQtP,OAAO,IAKrDxB,KAAKo4E,IAAMp4E,KAAKsN,QAKhBtN,KAAK0N,eAAkBxN,EAAKgtC,aAAerkB,EAAOqJ,OAAUhyB,EAAKqG,SAASe,cAAcoG,eAAiBmb,EAAOC,OAAOC,mBAAmB/oB,KAAKsN,SAO/ItN,KAAKq4E,UAAYr4E,KAAKsN,QAAQyD,aAAa,EAAG,EAAGpK,EAAOC,GAOxD5G,KAAKgR,KAAO,KAERhR,KAAKq4E,YAELr4E,KAAKgR,KAAOhR,KAAKq4E,UAAUrnE,MAM/BhR,KAAKooB,OAAS,KAKVpoB,KAAKgR,OAEDhR,KAAKq4E,UAAUrnE,KAAK0K,QAEpB1b,KAAK0b,OAAS1b,KAAKq4E,UAAUrnE,KAAK0K,OAClC1b,KAAKooB,OAAS,GAAI3nB,aAAYT,KAAK0b,SAI/B7I,OAAoB,aAEpB7S,KAAK0b,OAAS,GAAIhb,aAAYV,KAAKq4E,UAAUrnE,KAAK9N,QAClDlD,KAAKooB,OAAS,GAAI3nB,aAAYT,KAAK0b,SAInC1b,KAAKooB,OAASpoB,KAAKq4E,UAAUrnE,MASzChR,KAAK+L,YAAc,GAAI9L,MAAKupB,YAAYxpB,KAAK4Q,QAM7C5Q,KAAK8H,QAAU,GAAI7H,MAAKuL,QAAQxL,KAAK+L,aAKrC/L,KAAK4wE,UAAY,GAAI/nD,GAAOyvD,UAM5Bt4E,KAAKu4E,aAAev4E,KAAK4wE,UAAU4H,SAAS,GAAI3vD,GAAO4vD,MAAM,EAAG,EAAG,EAAG9xE,EAAOC,EAAQ,eAErF5G,KAAK8H,QAAQoE,MAAQlM,KAAKu4E,aAM1Bv4E,KAAKoV,KAAOyT,EAAO0K,WAKnBvzB,KAAK04E,sBAAuB,EAK5B14E,KAAKiU,OAAQ,EAGbjU,KAAK24E,IAAM34E,KAAKob,MAMhBpb,KAAK44E,OAAS,KAMd54E,KAAK64E,KAAO,GAAIhwD,GAAOznB,MAMvBpB,KAAK84E,MAAQ,GAAIjwD,GAAOznB,MAMxBpB,KAAK+4E,OAAS,GAAIlwD,GAAOznB,MAMzBpB,KAAKg5E,QAAU,EAMfh5E,KAAKi5E,QAAWC,KAAM,EAAGnhD,QAAS,GAMlC/3B,KAAKm5E,QAAU,GAAItwD,GAAOznB,MAM1BpB,KAAKo5E,OAAS,EAMdp5E,KAAKq5E,OAAS,EAMdr5E,KAAKs5E,OAAS,EAMdt5E,KAAKu5E,QAAU,GAAI1wD,GAAO2R,OAM1Bx6B,KAAKw5E,YAAc9vE,QAIvBmf,EAAO2nD,WAAW3tE,WAadgjD,KAAM,SAAUxgD,EAAGC,EAAGu5B,GAYlB,MAVU,KAANx5B,GAEArF,KAAKy5E,MAAMp0E,EAAGw5B,GAGR,IAANv5B,GAEAtF,KAAK05E,MAAMp0E,EAAGu5B,GAGX7+B,MAcXy5E,MAAO,SAAUr+C,EAAUyD,GAEVn1B,SAATm1B,IAAsBA,GAAO,GAERn1B,SAArB1J,KAAKw5E,cAELx5E,KAAKw5E,YAAcv5E,KAAK4Q,WAAWxI,OAAOrI,KAAMA,KAAK2G,MAAO3G,KAAK4G,QAGrE,IAAIhC,GAAI5E,KAAKw5E,YACTpB,EAAMxzE,EAAEkM,WAAW,MACnBsS,EAAIpjB,KAAK4G,OACT8J,EAAM1Q,KAAK4Q,MAIf,IAFAwnE,EAAIjxD,UAAU,EAAG,EAAGnnB,KAAK2G,MAAO3G,KAAK4G,QAEtB,EAAXw0B,EACJ,CACIA,EAAWv6B,KAAKq7B,IAAId,EAGpB,IAAIxjB,GAAI5X,KAAK2G,MAAQy0B,CAGjByD,IAEAu5C,EAAI3pE,UAAUiC,EAAK,EAAG,EAAG0qB,EAAUhY,EAAGxL,EAAG,EAAGwjB,EAAUhY,GAI1Dg1D,EAAI3pE,UAAUiC,EAAK0qB,EAAU,EAAGxjB,EAAGwL,EAAG,EAAG,EAAGxL,EAAGwL,OAGnD,CAEI,GAAIxL,GAAI5X,KAAK2G,MAAQy0B,CAGjByD,IAEAu5C,EAAI3pE,UAAUiC,EAAKkH,EAAG,EAAGwjB,EAAUhY,EAAG,EAAG,EAAGgY,EAAUhY,GAI1Dg1D,EAAI3pE,UAAUiC,EAAK,EAAG,EAAGkH,EAAGwL,EAAGgY,EAAU,EAAGxjB,EAAGwL,GAKnD,MAFApjB,MAAKob,QAEEpb,KAAK25B,KAAK35B,KAAKw5E,cAc1BE,MAAO,SAAUt+C,EAAUyD,GAEVn1B,SAATm1B,IAAsBA,GAAO,GAERn1B,SAArB1J,KAAKw5E,cAELx5E,KAAKw5E,YAAcv5E,KAAK4Q,WAAWxI,OAAOrI,KAAMA,KAAK2G,MAAO3G,KAAK4G,QAGrE,IAAIhC,GAAI5E,KAAKw5E,YACTpB,EAAMxzE,EAAEkM,WAAW,MACnB8G,EAAI5X,KAAK2G,MACT+J,EAAM1Q,KAAK4Q,MAIf,IAFAwnE,EAAIjxD,UAAU,EAAG,EAAGnnB,KAAK2G,MAAO3G,KAAK4G,QAEtB,EAAXw0B,EACJ,CACIA,EAAWv6B,KAAKq7B,IAAId,EAGpB,IAAIhY,GAAIpjB,KAAK4G,OAASw0B,CAGlByD,IAEAu5C,EAAI3pE,UAAUiC,EAAK,EAAG,EAAGkH,EAAGwjB,EAAU,EAAGhY,EAAGxL,EAAGwjB,GAInDg9C,EAAI3pE,UAAUiC,EAAK,EAAG0qB,EAAUxjB,EAAGwL,EAAG,EAAG,EAAGxL,EAAGwL,OAGnD,CAEI,GAAIA,GAAIpjB,KAAK4G,OAASw0B,CAGlByD,IAEAu5C,EAAI3pE,UAAUiC,EAAK,EAAG0S,EAAGxL,EAAGwjB,EAAU,EAAG,EAAGxjB,EAAGwjB,GAInDg9C,EAAI3pE,UAAUiC,EAAK,EAAG,EAAGkH,EAAGwL,EAAG,EAAGgY,EAAUxjB,EAAGwL,GAKnD,MAFApjB,MAAKob,QAEEpb,KAAK25B,KAAK35B,KAAKw5E,cAY1B17C,IAAK,SAAUwd,GAEX,GAAI36C,MAAM2R,QAAQgpC,GAEd,IAAK,GAAIr4C,GAAI,EAAGA,EAAIq4C,EAAOp4C,OAAQD,IAE3Bq4C,EAAOr4C,GAAgB,aAEvBq4C,EAAOr4C,GAAGi4C,YAAYl7C,UAM9Bs7C,GAAOJ,YAAYl7C,KAGvB,OAAOA,OAcXopC,KAAM,SAAUx6B,GAOZ,MALsB,gBAAXA,KAEPA,EAAS5O,KAAKE,KAAKgpC,MAAMtd,SAAShd,IAGlCA,GAEA5O,KAAK+H,OAAO6G,EAAOjI,MAAOiI,EAAOhI,QACjC5G,KAAK24E,MAOT34E,KAAK25E,KAAK/qE,GAEV5O,KAAK4nC,SAEE5nC,MAdP,QAwCJob,MAAO,SAAU/V,EAAGC,EAAGqB,EAAOC,GAW1B,MATU8C,UAANrE,IAAmBA,EAAI,GACjBqE,SAANpE,IAAmBA,EAAI,GACboE,SAAV/C,IAAuBA,EAAQ3G,KAAK2G,OACzB+C,SAAX9C,IAAwBA,EAAS5G,KAAK4G,QAE1C5G,KAAKsN,QAAQ6Z,UAAU9hB,EAAGC,EAAGqB,EAAOC,GAEpC5G,KAAKiU,OAAQ,EAENjU,MAcXgvB,KAAM,SAAU9T,EAAGC,EAAGxW,EAAGD,GAQrB,MANUgF,UAANhF,IAAmBA,EAAI,GAE3B1E,KAAKsN,QAAQua,UAAY,QAAU3M,EAAI,IAAMC,EAAI,IAAMxW,EAAI,IAAMD,EAAI,IACrE1E,KAAKsN,QAAQ0a,SAAS,EAAG,EAAGhoB,KAAK2G,MAAO3G,KAAK4G,QAC7C5G,KAAKiU,OAAQ,EAENjU,MA4BXoG,gBAAiB,SAAU2O,GAEvB,GAAIoV,GAAQ,GAAI1Z,MAEhB0Z,GAAMzZ,IAAM1Q,KAAK4Q,OAAOmb,UAAU,YAElC,IAAI0L,GAAMz3B,KAAKE,KAAKgpC,MAAM0wC,SAAS7kE,EAAK,GAAIoV,EAE5C,OAAO,IAAIlqB,MAAKuL,QAAQisB,EAAIu5C,OAYhCjpE,OAAQ,SAAUpB,EAAOC,GAgCrB,OA9BID,IAAU3G,KAAK2G,OAASC,IAAW5G,KAAK4G,UAExC5G,KAAK2G,MAAQA,EACb3G,KAAK4G,OAASA,EAEd5G,KAAK4Q,OAAOjK,MAAQA,EACpB3G,KAAK4Q,OAAOhK,OAASA,EAEI8C,SAArB1J,KAAKw5E,cAELx5E,KAAKw5E,YAAY7yE,MAAQA,EACzB3G,KAAKw5E,YAAY5yE,OAASA,GAG9B5G,KAAK+L,YAAYpF,MAAQA,EACzB3G,KAAK+L,YAAYnF,OAASA,EAE1B5G,KAAKu4E,aAAa5xE,MAAQA,EAC1B3G,KAAKu4E,aAAa3xE,OAASA,EAE3B5G,KAAK8H,QAAQnB,MAAQA,EACrB3G,KAAK8H,QAAQlB,OAASA,EAEtB5G,KAAK8H,QAAQsF,KAAKzG,MAAQA,EAC1B3G,KAAK8H,QAAQsF,KAAKxG,OAASA,EAE3B5G,KAAK4nC,SACL5nC,KAAKiU,OAAQ,GAGVjU,MAkBX4nC,OAAQ,SAAUviC,EAAGC,EAAGqB,EAAOC,GA4B3B,MA1BU8C,UAANrE,IAAmBA,EAAI,GACjBqE,SAANpE,IAAmBA,EAAI,GACboE,SAAV/C,IAAuBA,EAAQ9F,KAAK+G,IAAI,EAAG5H,KAAK2G,QACrC+C,SAAX9C,IAAwBA,EAAS/F,KAAK+G,IAAI,EAAG5H,KAAK4G,SAEtD5G,KAAKq4E,UAAYr4E,KAAKsN,QAAQyD,aAAa1L,EAAGC,EAAGqB,EAAOC,GACxD5G,KAAKgR,KAAOhR,KAAKq4E,UAAUrnE,KAEvBhR,KAAKq4E,UAAUrnE,KAAK0K,QAEpB1b,KAAK0b,OAAS1b,KAAKq4E,UAAUrnE,KAAK0K,OAClC1b,KAAKooB,OAAS,GAAI3nB,aAAYT,KAAK0b,SAI/B7I,OAAoB,aAEpB7S,KAAK0b,OAAS,GAAIhb,aAAYV,KAAKq4E,UAAUrnE,KAAK9N,QAClDlD,KAAKooB,OAAS,GAAI3nB,aAAYT,KAAK0b,SAInC1b,KAAKooB,OAASpoB,KAAKq4E,UAAUrnE,KAI9BhR,MAuBX65E,gBAAiB,SAAUtgC,EAAUxN,EAAiB1mC,EAAGC,EAAGqB,EAAOC,GAErD8C,SAANrE,IAAmBA,EAAI,GACjBqE,SAANpE,IAAmBA,EAAI,GACboE,SAAV/C,IAAuBA,EAAQ3G,KAAK2G,OACzB+C,SAAX9C,IAAwBA,EAAS5G,KAAK4G,OAQ1C,KAAK,GANDgR,GAAIvS,EAAIsB,EACRyc,EAAI9d,EAAIsB,EACRkzE,EAAQjxD,EAAOsrB,MAAM4lC,cACrB3oE,GAAW8J,EAAG,EAAGC,EAAG,EAAGxW,EAAG,EAAGD,EAAG,GAChCuP,GAAQ,EAEHlP,EAAKO,EAAQ8d,EAALre,EAAQA,IAErB,IAAK,GAAID,GAAKO,EAAQuS,EAAL9S,EAAQA,IAErB+jB,EAAOsrB,MAAM6lC,YAAYh6E,KAAKi6E,WAAWn1E,EAAIC,GAAK+0E,GAElD1oE,EAASmoC,EAAS7zC,KAAKqmC,EAAiB+tC,EAAOh1E,EAAIC,GAE/CqM,KAAW,GAAoB,OAAXA,GAA8B1H,SAAX0H,IAEvCpR,KAAKk6E,WAAWp1E,EAAIC,EAAIqM,EAAO8J,EAAG9J,EAAO+J,EAAG/J,EAAOzM,EAAGyM,EAAO1M,GAAG,GAChEuP,GAAQ,EAWpB,OANIA,KAEAjU,KAAKsN,QAAQgb,aAAatoB,KAAKq4E,UAAW,EAAG,GAC7Cr4E,KAAKiU,OAAQ,GAGVjU,MAoBXm6E,aAAc,SAAU5gC,EAAUxN,EAAiB1mC,EAAGC,EAAGqB,EAAOC,GAElD8C,SAANrE,IAAmBA,EAAI,GACjBqE,SAANpE,IAAmBA,EAAI,GACboE,SAAV/C,IAAuBA,EAAQ3G,KAAK2G,OACzB+C,SAAX9C,IAAwBA,EAAS5G,KAAK4G,OAQ1C,KAAK,GANDgR,GAAIvS,EAAIsB,EACRyc,EAAI9d,EAAIsB,EACRkzE,EAAQ,EACR1oE,EAAS,EACT6C,GAAQ,EAEHlP,EAAKO,EAAQ8d,EAALre,EAAQA,IAErB,IAAK,GAAID,GAAKO,EAAQuS,EAAL9S,EAAQA,IAErBg1E,EAAQ95E,KAAKi6E,WAAWn1E,EAAIC,GAC5BqM,EAASmoC,EAAS7zC,KAAKqmC,EAAiB+tC,EAAOh1E,EAAIC,GAE/CqM,IAAW0oE,IAEX95E,KAAKooB,OAAOrjB,EAAK/E,KAAK2G,MAAQ7B,GAAMsM,EACpC6C,GAAQ,EAWpB,OANIA,KAEAjU,KAAKsN,QAAQgb,aAAatoB,KAAKq4E,UAAW,EAAG,GAC7Cr4E,KAAKiU,OAAQ,GAGVjU,MAoBXo6E,WAAY,SAAUC,EAAIC,EAAIt7C,EAAIF,EAAIy7C,EAAIC,EAAIv7C,EAAIF,EAAI07C,GAElD,GAAIh8C,GAAK,EACLC,EAAK,EACL9mB,EAAI5X,KAAK2G,MACTyc,EAAIpjB,KAAK4G,OACTgI,EAASia,EAAOsrB,MAAMumC,UAAUL,EAAIC,EAAIt7C,EAAIF,EAEjCp1B,UAAX+wE,GAAwBA,YAAkB5xD,GAAOrmB,YAEjDi8B,EAAKg8C,EAAOp1E,EACZq5B,EAAK+7C,EAAOn1E,EACZsS,EAAI6iE,EAAO9zE,MACXyc,EAAIq3D,EAAO7zE,OAGf,KAAK,GAAItB,GAAI,EAAO8d,EAAJ9d,EAAOA,IAEnB,IAAK,GAAID,GAAI,EAAOuS,EAAJvS,EAAOA,IAEfrF,KAAKi6E,WAAWx7C,EAAKp5B,EAAGq5B,EAAKp5B,KAAOsJ,GAEpC5O,KAAKk6E,WAAWz7C,EAAKp5B,EAAGq5B,EAAKp5B,EAAGi1E,EAAIC,EAAIv7C,EAAIF,GAAI,EAQ5D,OAHA/+B,MAAKsN,QAAQgb,aAAatoB,KAAKq4E,UAAW,EAAG,GAC7Cr4E,KAAKiU,OAAQ,EAENjU,MAcX26E,OAAQ,SAAUv3D,EAAGqe,EAAG3J,EAAG2iD,GAEvB,GAAIG,GAASx3D,GAAW,IAANA,EACdy3D,EAASp5C,GAAW,IAANA,EACdq5C,EAAShjD,GAAW,IAANA,CAElB,IAAK8iD,GAAWC,GAAWC,EAA3B,CAKepxE,SAAX+wE,IAEAA,EAAS,GAAI5xD,GAAOrmB,UAAU,EAAG,EAAGxC,KAAK2G,MAAO3G,KAAK4G,QAKzD,KAAK,GAFDkzE,GAAQjxD,EAAOsrB,MAAM4lC,cAEhBz0E,EAAIm1E,EAAOn1E,EAAGA,EAAIm1E,EAAO5+C,OAAQv2B,IAEtC,IAAK,GAAID,GAAIo1E,EAAOp1E,EAAGA,EAAIo1E,EAAOvhD,MAAO7zB,IAErCwjB,EAAOsrB,MAAM6lC,YAAYh6E,KAAKi6E,WAAW50E,EAAGC,GAAIw0E,GAAO,GAEnDc,IAEAd,EAAM12D,EAAIA,GAGVy3D,IAEAf,EAAMr4C,EAAIA,GAGVq5C,IAEAhB,EAAMhiD,EAAIA,GAGdjP,EAAOsrB,MAAM4mC,SAASjB,EAAM12D,EAAG02D,EAAMr4C,EAAGq4C,EAAMhiD,EAAGgiD,GACjD95E,KAAKk6E,WAAW70E,EAAGC,EAAGw0E,EAAM5+D,EAAG4+D,EAAM3+D,EAAG2+D,EAAMn1E,EAAGm1E,EAAMp1E,GAAG,EAOlE,OAHA1E,MAAKsN,QAAQgb,aAAatoB,KAAKq4E,UAAW,EAAG,GAC7Cr4E,KAAKiU,OAAQ,EAENjU,OAgBXg7E,SAAU,SAAU53D,EAAGqe,EAAG3J,EAAG2iD,GAMzB,IAJU/wE,SAAN0Z,GAAyB,OAANA,KAAcA,GAAI,IAC/B1Z,SAAN+3B,GAAyB,OAANA,KAAcA,GAAI,IAC/B/3B,SAANouB,GAAyB,OAANA,KAAcA,GAAI,GAEpC1U,GAAMqe,GAAM3J,EAAjB,CAKepuB,SAAX+wE,IAEAA,EAAS,GAAI5xD,GAAOrmB,UAAU,EAAG,EAAGxC,KAAK2G,MAAO3G,KAAK4G,QAKzD,KAAK,GAFDkzE,GAAQjxD,EAAOsrB,MAAM4lC,cAEhBz0E,EAAIm1E,EAAOn1E,EAAGA,EAAIm1E,EAAO5+C,OAAQv2B,IAEtC,IAAK,GAAID,GAAIo1E,EAAOp1E,EAAGA,EAAIo1E,EAAOvhD,MAAO7zB,IAErCwjB,EAAOsrB,MAAM6lC,YAAYh6E,KAAKi6E,WAAW50E,EAAGC,GAAIw0E,GAAO,GAEnD12D,IAEA02D,EAAM12D,EAAIpjB,KAAKE,KAAKooC,KAAKzJ,KAAKi7C,EAAM12D,EAAIA,EAAG,EAAG,IAG9Cqe,IAEAq4C,EAAMr4C,EAAIzhC,KAAKE,KAAKooC,KAAK7H,MAAMq5C,EAAMr4C,EAAIA,EAAG,EAAG,IAG/C3J,IAEAgiD,EAAMhiD,EAAI93B,KAAKE,KAAKooC,KAAK7H,MAAMq5C,EAAMhiD,EAAIA,EAAG,EAAG,IAGnDjP,EAAOsrB,MAAM4mC,SAASjB,EAAM12D,EAAG02D,EAAMr4C,EAAGq4C,EAAMhiD,EAAGgiD,GACjD95E,KAAKk6E,WAAW70E,EAAGC,EAAGw0E,EAAM5+D,EAAG4+D,EAAM3+D,EAAG2+D,EAAMn1E,EAAGm1E,EAAMp1E,GAAG,EAOlE,OAHA1E,MAAKsN,QAAQgb,aAAatoB,KAAKq4E,UAAW,EAAG,GAC7Cr4E,KAAKiU,OAAQ,EAENjU,OAiBXk6E,WAAY,SAAU70E,EAAGC,EAAG21E,EAAKC,EAAOC,EAAM35E,EAAO45E,GAsBjD,MApBkB1xE,UAAd0xE,IAA2BA,GAAY,GAEvC/1E,GAAK,GAAKA,GAAKrF,KAAK2G,OAASrB,GAAK,GAAKA,GAAKtF,KAAK4G,SAE7CiiB,EAAOm0B,OAAOq+B,cAEdr7E,KAAKooB,OAAO9iB,EAAItF,KAAK2G,MAAQtB,GAAM7D,GAAS,GAAO25E,GAAQ,GAAOD,GAAS,EAAKD,EAIhFj7E,KAAKooB,OAAO9iB,EAAItF,KAAK2G,MAAQtB,GAAM41E,GAAO,GAAOC,GAAS,GAAOC,GAAQ,EAAK35E,EAG9E45E,IAEAp7E,KAAKsN,QAAQgb,aAAatoB,KAAKq4E,UAAW,EAAG,GAC7Cr4E,KAAKiU,OAAQ,IAIdjU,MAgBXs7E,SAAU,SAAUj2E,EAAGC,EAAG21E,EAAKC,EAAOC,EAAMC,GAExC,MAAOp7E,MAAKk6E,WAAW70E,EAAGC,EAAG21E,EAAKC,EAAOC,EAAM,IAAKC,IAexDG,SAAU,SAAUl2E,EAAGC,EAAGu1B,GAEjBA,IAEDA,EAAMhS,EAAOsrB,MAAM4lC,cAGvB,IAAIpxE,MAAWtD,EAAKC,EAAItF,KAAK2G,MAS7B,OAPAgC,IAAS,EAETkyB,EAAI3f,EAAIlb,KAAKgR,KAAKrI,GAClBkyB,EAAI1f,EAAInb,KAAKgR,OAAOrI,GACpBkyB,EAAIl2B,EAAI3E,KAAKgR,OAAOrI,GACpBkyB,EAAIn2B,EAAI1E,KAAKgR,OAAOrI,GAEbkyB,GAeXo/C,WAAY,SAAU50E,EAAGC,GAErB,MAAID,IAAK,GAAKA,GAAKrF,KAAK2G,OAASrB,GAAK,GAAKA,GAAKtF,KAAK4G,OAE1C5G,KAAKooB,OAAO9iB,EAAItF,KAAK2G,MAAQtB,GAFxC,QAoBJm2E,YAAa,SAAUn2E,EAAGC,EAAGu1B,EAAK4gD,EAAKC,GAEnC,MAAO7yD,GAAOsrB,MAAM6lC,YAAYh6E,KAAKi6E,WAAW50E,EAAGC,GAAIu1B,EAAK4gD,EAAKC,IAWrEC,UAAW,SAAUn8C,GAEjB,MAAOx/B,MAAKsN,QAAQyD,aAAayuB,EAAKn6B,EAAGm6B,EAAKl6B,EAAGk6B,EAAK74B,MAAO64B,EAAK54B,SAmBtEg1E,cAAe,SAAUt0C,GAEH59B,SAAd49B,IAA2BA,EAAY,EAE3C,IAAIwyC,GAAQjxD,EAAOsrB,MAAM4lC,cAErB10E,EAAI,EACJC,EAAI,EACJm6C,EAAI,EACJo8B,GAAO,CAEO,KAAdv0C,GAEAmY,EAAI,GACJn6C,EAAItF,KAAK4G,QAEU,IAAd0gC,IAELmY,EAAI,GACJp6C,EAAIrF,KAAK2G,MAGb,GAEIkiB,GAAOsrB,MAAM6lC,YAAYh6E,KAAKi6E,WAAW50E,EAAGC,GAAIw0E,GAE9B,IAAdxyC,GAAiC,IAAdA,GAGnBjiC,IAEIA,IAAMrF,KAAK2G,QAEXtB,EAAI,EACJC,GAAKm6C,GAEDn6C,GAAKtF,KAAK4G,QAAe,GAALtB,KAEpBu2E,GAAO,MAII,IAAdv0C,GAAiC,IAAdA,KAGxBhiC,IAEIA,IAAMtF,KAAK4G,SAEXtB,EAAI,EACJD,GAAKo6C,GAEDp6C,GAAKrF,KAAK2G,OAAc,GAALtB,KAEnBw2E,GAAO,WAKJ,IAAZ/B,EAAMp1E,IAAYm3E,EAKzB,OAHA/B,GAAMz0E,EAAIA,EACVy0E,EAAMx0E,EAAIA,EAEHw0E,GAYXj0E,UAAW,SAAU25B,GAOjB,MALa91B,UAAT81B,IAAsBA,EAAO,GAAI3W,GAAOrmB,WAE5Cg9B,EAAKn6B,EAAIrF,KAAK47E,cAAc,GAAGv2E,EAG3Bm6B,EAAKn6B,IAAMrF,KAAK2G,MAET64B,EAAKxE,MAAM,EAAG,EAAG,EAAG,IAG/BwE,EAAKl6B,EAAItF,KAAK47E,cAAc,GAAGt2E,EAC/Bk6B,EAAK74B,MAAS3G,KAAK47E,cAAc,GAAGv2E,EAAIm6B,EAAKn6B,EAAK,EAClDm6B,EAAK54B,OAAU5G,KAAK47E,cAAc,GAAGt2E,EAAIk6B,EAAKl6B,EAAK,EAE5Ck6B,IAgBXyR,WAAY,SAAU5rC,EAAGC,EAAG4rC,EAASC,EAAS1tB,EAAQE,GAElDF,EAASA,GAAU,EACnBE,EAASA,GAAU,CAEnB,IAAIwG,GAAQnqB,KAAKE,KAAK49B,IAAI3T,MAAM9kB,EAAGC,EAAGtF,KAKtC,OAHAmqB,GAAMjiB,OAAO1E,IAAI0tC,EAASC,GAC1BhnB,EAAM9oB,MAAMmC,IAAIigB,EAAQE,GAEjBwG,GAuCXwP,KAAM,SAAU/qB,EAAQvJ,EAAGC,EAAGqB,EAAOC,EAAQ9B,EAAIC,EAAI+2E,EAAUC,EAAWz+C,EAAQ4T,EAASC,EAAS1tB,EAAQE,EAAQniB,EAAO0C,EAAW6gC,GAWlI,IATer7B,SAAXkF,GAAmC,OAAXA,KAAmBA,EAAS5O,OAEpD4O,YAAkBia,GAAOniB,eAAiBkI,YAAkB3O,MAAKyG,iBAEjEkI,EAASA,EAAOkd,aAGpB9rB,KAAK44E,OAAShqE,EAEVA,YAAkBia,GAAOphB,QAAUmH,YAAkBia,GAAOpY,OAAS7B,YAAkBia,GAAO8pD,MAAQ/jE,YAAkB3O,MAAKwH,OAG7HzH,KAAK64E,KAAKr1E,IAAIoL,EAAO9G,QAAQsF,KAAK/H,EAAGuJ,EAAO9G,QAAQsF,KAAK9H,GACzDtF,KAAK84E,MAAMt1E,IAAIoL,EAAO9G,QAAQsF,KAAKzG,MAAOiI,EAAO9G,QAAQsF,KAAKxG,QAC9D5G,KAAK+4E,OAAOv1E,IAAIoL,EAAOvN,MAAMgE,EAAGuJ,EAAOvN,MAAMiE,GAC7CtF,KAAKm5E,QAAQ31E,IAAIoL,EAAO1G,OAAO7C,EAAGuJ,EAAO1G,OAAO5C,GAChDtF,KAAKg5E,QAAUpqE,EAAOrN,SACtBvB,KAAKi5E,OAAOlhD,QAAUnpB,EAAOpN,MAEzBoN,EAAO9G,kBAAmB+gB,GAAOniB,eAAiBkI,EAAO9G,kBAAmB7H,MAAKyG,cAEjF1G,KAAK44E,OAAShqE,EAAO9G,QAAQgkB,YAI7B9rB,KAAK44E,OAAShqE,EAAO9G,QAAQiE,YAAY6C,QAGlClF,SAAP5E,GAA2B,OAAPA,KAAeA,EAAK8J,EAAOvJ,IACxCqE,SAAP3E,GAA2B,OAAPA,KAAeA,EAAK6J,EAAOtJ,GAE/CsJ,EAAO9G,QAAQgG,OAGfhJ,GAAM8J,EAAO9G,QAAQgG,KAAKzI,EAAIuJ,EAAO1G,OAAO7C,EAAIuJ,EAAO9G,QAAQgG,KAAKnH,MACpE5B,GAAM6J,EAAO9G,QAAQgG,KAAKxI,EAAIsJ,EAAO1G,OAAO5C,EAAIsJ,EAAO9G,QAAQgG,KAAKlH,QAGpD,WAAhBgI,EAAOlD,OAEHkD,EAAOjD,aAAeiD,EAAOlD,OAE7BkD,EAAOjD,WAAaiD,EAAOlD,KAC3BkD,EAAOhD,cAAgB3L,KAAKsO,aAAaC,iBAAiBI,EAAQA,EAAOlD,OAG7E1L,KAAK44E,OAAShqE,EAAOhD,cACrB5L,KAAK64E,KAAKr1E,IAAI,QAItB,CAQI,GANAxD,KAAK64E,KAAKr1E,IAAI,GACdxD,KAAK+4E,OAAOv1E,IAAI,GAChBxD,KAAKm5E,QAAQ31E,IAAI,GACjBxD,KAAKg5E,QAAU,EACfh5E,KAAKi5E,OAAOlhD,QAAU,EAElBnpB,YAAkBia,GAAO2nD,WAEzBxwE,KAAK44E,OAAShqE,EAAOgC,WAEpB,IAAsB,gBAAXhC,GAChB,CAGI,GAFAA,EAAS5O,KAAKE,KAAKgpC,MAAMtd,SAAShd,GAEnB,OAAXA,EAEA,MAIA5O,MAAK44E,OAAShqE,EAItB5O,KAAK84E,MAAMt1E,IAAIxD,KAAK44E,OAAOjyE,MAAO3G,KAAK44E,OAAOhyE,QA6DlD,IAzDU8C,SAANrE,GAAyB,OAANA,KAAcA,EAAI,IAC/BqE,SAANpE,GAAyB,OAANA,KAAcA,EAAI,GAGrCqB,IAEA3G,KAAK84E,MAAMzzE,EAAIsB,GAGfC,IAEA5G,KAAK84E,MAAMxzE,EAAIsB,IAIR8C,SAAP5E,GAA2B,OAAPA,KAAeA,EAAKO,IACjCqE,SAAP3E,GAA2B,OAAPA,KAAeA,EAAKO,IAC3BoE,SAAboyE,GAAuC,OAAbA,KAAqBA,EAAW97E,KAAK84E,MAAMzzE,IACvDqE,SAAdqyE,GAAyC,OAAdA,KAAsBA,EAAY/7E,KAAK84E,MAAMxzE,GAGtD,gBAAXg4B,KAEPt9B,KAAKg5E,QAAU17C,GAII,gBAAZ4T,KAEPlxC,KAAKm5E,QAAQ9zE,EAAI6rC,GAGE,gBAAZC,KAEPnxC,KAAKm5E,QAAQ7zE,EAAI6rC,GAIC,gBAAX1tB,KAEPzjB,KAAK+4E,OAAO1zE,EAAIoe,GAGE,gBAAXE,KAEP3jB,KAAK+4E,OAAOzzE,EAAIqe,GAIC,gBAAVniB,KAEPxB,KAAKi5E,OAAOlhD,QAAUv2B,GAGRkI,SAAdxF,IAA2BA,EAAY,MAC3BwF,SAAZq7B,IAAyBA,GAAU,KAEnC/kC,KAAKi5E,OAAOlhD,SAAW,GAAuB,IAAlB/3B,KAAK+4E,OAAO1zE,GAA6B,IAAlBrF,KAAK+4E,OAAOzzE,GAA4B,IAAjBtF,KAAK84E,MAAMzzE,GAA4B,IAAjBrF,KAAK84E,MAAMxzE,GAA/G,CAMA,GAAI8yE,GAAMp4E,KAAKsN,OAoCf,OAlCAtN,MAAKi5E,OAAOC,KAAOd,EAAI3qE,YAEvB2qE,EAAI/wD,OAEJ+wD,EAAI3qE,YAAczN,KAAKi5E,OAAOlhD,QAE1B7zB,IAEAlE,KAAKg8E,GAAK93E,GAGV6gC,IAEAjgC,GAAM,EACNC,GAAM,GAIVqzE,EAAI3sD,UAAU3mB,EAAIC,GAElBqzE,EAAI/2E,MAAMrB,KAAK+4E,OAAO1zE,EAAGrF,KAAK+4E,OAAOzzE,GAErC8yE,EAAI96C,OAAOt9B,KAAKg5E,SAEhBZ,EAAI3pE,UAAUzO,KAAK44E,OAAQ54E,KAAK64E,KAAKxzE,EAAIA,EAAGrF,KAAK64E,KAAKvzE,EAAIA,EAAGtF,KAAK84E,MAAMzzE,EAAGrF,KAAK84E,MAAMxzE,GAAIw2E,EAAW97E,KAAKm5E,QAAQ9zE,GAAI02E,EAAY/7E,KAAKm5E,QAAQ7zE,EAAGw2E,EAAUC,GAI5J3D,EAAI1wD,UAEJ0wD,EAAI3qE,YAAczN,KAAKi5E,OAAOC,KAE9Bl5E,KAAKiU,OAAQ,EAENjU,OAiBXi8E,cAAe,SAAUrtE,EAAQ1K,EAAW6gC,GAKxC,GAHkBr7B,SAAdxF,IAA2BA,EAAY,MAC3BwF,SAAZq7B,IAAyBA,GAAU,IAElCn2B,EAAO0qB,eAAe,oBAAsB1qB,EAAO43C,cAAsC,IAAtB53C,EAAO9M,WAE3E,MAAO9B,KAGX,IAAIiF,GAAK2J,EAAO7M,cAKhB,IAHA/B,KAAK64E,KAAKr1E,IAAIoL,EAAO9G,QAAQsF,KAAK/H,EAAGuJ,EAAO9G,QAAQsF,KAAK9H,GACzDtF,KAAK84E,MAAMt1E,IAAIoL,EAAO9G,QAAQsF,KAAKzG,MAAOiI,EAAO9G,QAAQsF,KAAKxG,QAEjD,IAAT3B,EAAGP,GAAoB,IAATO,EAAGJ,GAA4B,IAAjB7E,KAAK84E,MAAMzzE,GAA4B,IAAjBrF,KAAK84E,MAAMxzE,EAG7D,MAAOtF,KAGP4O,GAAO9G,kBAAmB+gB,GAAOniB,eAAiBkI,EAAO9G,kBAAmB7H,MAAKyG,cAEjF1G,KAAK44E,OAAShqE,EAAO9G,QAAQgkB,YAI7B9rB,KAAK44E,OAAShqE,EAAO9G,QAAQiE,YAAY6C,MAG7C,IAAI9J,GAAKG,EAAGH,GACRC,EAAKE,EAAGF,EAER6J,GAAO9G,QAAQgG,OAGfhJ,GAAM8J,EAAO9G,QAAQgG,KAAKzI,EAAIuJ,EAAO1G,OAAO7C,EAAIuJ,EAAO9G,QAAQgG,KAAKnH,MACpE5B,GAAM6J,EAAO9G,QAAQgG,KAAKxI,EAAIsJ,EAAO1G,OAAO5C,EAAIsJ,EAAO9G,QAAQgG,KAAKlH,QAGpD,WAAhBgI,EAAOlD,OAEHkD,EAAOjD,aAAeiD,EAAOlD,OAE7BkD,EAAOjD,WAAaiD,EAAOlD,KAC3BkD,EAAOhD,cAAgB3L,KAAKsO,aAAaC,iBAAiBI,EAAQA,EAAOlD,OAG7E1L,KAAK44E,OAAShqE,EAAOhD,cACrB5L,KAAK64E,KAAKr1E,IAAI,IAGduhC,IAEAjgC,GAAM,EACNC,GAAM,EAGV,IAAIqzE,GAAMp4E,KAAKsN,OAiCf,OA/BAtN,MAAKi5E,OAAOC,KAAOd,EAAI3qE,YAEvB2qE,EAAI/wD,OAEJ+wD,EAAI3qE,YAAczN,KAAKi5E,OAAOlhD,QAE1B7zB,IAEAlE,KAAKg8E,GAAK93E,GAGdk0E,EAAIp4E,KAAK0N,gBAAmBkB,EAAO9G,QAAQiE,YAAYzF,YAAcrG,KAAK0N,WAAWC,OAErFwqE,EAAIjqE,aAAalJ,EAAGP,EAAGO,EAAGN,EAAGM,EAAGL,EAAGK,EAAGJ,EAAGC,EAAIC,GAE7CqzE,EAAI3pE,UAAUzO,KAAK44E,OACf54E,KAAK64E,KAAKxzE,EACVrF,KAAK64E,KAAKvzE,EACVtF,KAAK84E,MAAMzzE,EACXrF,KAAK84E,MAAMxzE,GACVtF,KAAK84E,MAAMzzE,EAAIuJ,EAAO1G,OAAO7C,GAC7BrF,KAAK84E,MAAMxzE,EAAIsJ,EAAO1G,OAAO5C,EAC9BtF,KAAK84E,MAAMzzE,EACXrF,KAAK84E,MAAMxzE,GAEf8yE,EAAI1wD,UAEJ0wD,EAAI3qE,YAAczN,KAAKi5E,OAAOC,KAE9Bl5E,KAAKiU,OAAQ,EAENjU,MAiBXk8E,SAAU,SAAUttE,EAAQwzB,EAAM/8B,EAAGC,EAAG9D,EAAO0C,EAAW6gC,GAEtD,MAAO/kC,MAAK25B,KAAK/qB,EAAQwzB,EAAK/8B,EAAG+8B,EAAK98B,EAAG88B,EAAKz7B,MAAOy7B,EAAKx7B,OAAQvB,EAAGC,EAAG88B,EAAKz7B,MAAOy7B,EAAKx7B,OAAQ,EAAG,EAAG,EAAG,EAAG,EAAGpF,EAAO0C,EAAW6gC,IAmBtI40C,KAAM,SAAU/qE,EAAQvJ,EAAGC,EAAGqB,EAAOC,EAAQ1C,EAAW6gC,GAGpD,MAAO/kC,MAAK25B,KAAK/qB,EAAQ,KAAM,KAAM,KAAM,KAAMvJ,EAAGC,EAAGqB,EAAOC,EAAQ,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM1C,EAAW6gC,IAwBzHo3C,UAAW,SAAUngC,EAAO93C,EAAW6gC,GAOnC,MALIiX,GAAMtsB,MAAQ,GAEdssB,EAAM9B,cAAcl6C,KAAKo8E,eAAgBp8E,KAAMkE,EAAW6gC,GAGvD/kC,MAaXo8E,eAAgB,SAAU3zE,EAAOvE,EAAW6gC,GAOxC,GALIt8B,EAAM6wB,eAAe,YAErBt5B,KAAKi8E,cAAcxzE,EAAOvE,EAAW6gC,GAGrCt8B,EAAM2M,OAASyT,EAAOoK,OAASxqB,EAAMqD,OAErC9L,KAAKm8E,UAAU1zE,EAAOvE,EAAW6gC,OAIjC,IAAIt8B,EAAM6wB,eAAe,aAAe7wB,EAAMzF,SAASE,OAAS,EAE5D,IAAK,GAAID,GAAI,EAAGA,EAAIwF,EAAMzF,SAASE,OAAQD,IAEnCwF,EAAMzF,SAASC,GAAG6I,QAElB9L,KAAKi8E,cAAcxzE,EAAMzF,SAASC,GAAIiB,EAAW6gC,IA+BrEs3C,SAAU,SAAUz6E,EAAQsC,EAAW6gC,GAEnC,GAAInjC,EAAO4kD,gBAAiB,GAA+B,IAAtB5kD,EAAOE,YAAqBF,EAAO03B,eAAe,WAAa13B,EAAOkK,UAAW,EAElH,MAAO9L,KAGX,IAAI4B,EAAOwT,OAASyT,EAAOoK,OAASrxB,EAAOwT,OAASyT,EAAOwK,SAAWzxB,EAAOwT,OAASyT,EAAOmK,WAEzF,GAAIpxB,EAAOwT,OAASyT,EAAOgK,SAC3B,CACI,GAAIrsB,GAAS5E,EAAOiE,WACpB7F,MAAKo4E,IAAI/wD,OACTrnB,KAAKo4E,IAAI3sD,UAAUjlB,EAAOnB,EAAGmB,EAAOlB,GACpCrF,KAAKsnB,eAAe+0D,eAAe16E,EAAQ5B,KAAKo4E,KAChDp4E,KAAKo4E,IAAI1wD,cAIT1nB,MAAK25B,KAAK/3B,EAAQ,KAAM,KAAM,KAAM,KAAMA,EAAOK,cAAcoD,EAAGzD,EAAOK,cAAcqD,EAAG,KAAM,KAAM1D,EAAOO,cAAe,KAAM,KAAMP,EAAOM,WAAWmD,EAAGzD,EAAOM,WAAWoD,EAAG1D,EAAOE,WAAYoC,EAAW6gC,EAIxN,IAAInjC,EAAOoB,SAEP,IAAK,GAAIC,GAAI,EAAGA,EAAIrB,EAAOoB,SAASE,OAAQD,IAExCjD,KAAKq8E,SAASz6E,EAAOoB,SAASC,GAAIiB,EAAW6gC,EAIrD,OAAO/kC,OAgBXu8E,OAAQ,SAAU3jE,EAAO4jE,EAAMn3E,EAAGC,GAE9B,GAAI8yE,GAAMp4E,KAAKsN,OAED5D,UAAVkP,GAAiC,OAAVA,EAEvBw/D,EAAIqE,YAAc,iBAIlBrE,EAAIqE,YAAc7jE,EAClBw/D,EAAIsE,WAAaF,GAAQ,EACzBpE,EAAIuE,cAAgBt3E,GAAK,GACzB+yE,EAAIwE,cAAgBt3E,GAAK,KAejCu3E,UAAW,SAAUjuE,EAAQxD,EAAM0xE,EAAYC,GAoB3C,MAlBiBrzE,UAAbqzE,GAAuC,OAAbA,EAE1B/8E,KAAK25E,KAAKvuE,GAAM4xE,kBAIhBh9E,KAAK25E,KAAKvuE,EAAM2xE,EAAS13E,EAAG03E,EAASz3E,EAAGy3E,EAASp2E,MAAOo2E,EAASn2E,QAAQo2E,kBAG1DtzE,SAAfozE,GAA2C,OAAfA,EAE5B98E,KAAK25E,KAAK/qE,GAAQquE,aAIlBj9E,KAAK25E,KAAK/qE,EAAQkuE,EAAWz3E,EAAGy3E,EAAWx3E,EAAGw3E,EAAWn2E,MAAOm2E,EAAWl2E,QAAQq2E,aAGhFj9E,MA0BXk9E,QAAS,SAAUC,EAAajiE,EAAGC,EAAGxW,EAAGD,EAAGqD,EAAQwyE,EAAIC,EAAIv7C,GA2BxD,MAzBUv1B,UAANhF,IAAmBA,EAAI,KACZgF,SAAX3B,IAAwBA,GAAS,GAC1B2B,SAAP6wE,IAAoBA,EAAKr/D,GAClBxR,SAAP8wE,IAAoBA,EAAKr/D,GAClBzR,SAAPu1B,IAAoBA,EAAKt6B,GAEzBoD,GAEAo1E,EAAYp1E,OAAO/H,KAAK2G,MAAO3G,KAAK4G,QAGxC5G,KAAK65E,gBACD,SAAUC,EAAOz0E,EAAGC,GAMhB,MAJIw0E,GAAM5+D,IAAMA,GAAK4+D,EAAM3+D,IAAMA,GAAK2+D,EAAMn1E,IAAMA,GAE9Cw4E,EAAYjD,WAAW70E,EAAGC,EAAGi1E,EAAIC,EAAIv7C,EAAIv6B,GAAG,IAEzC,GAEX1E,MAEJm9E,EAAY7vE,QAAQgb,aAAa60D,EAAY9E,UAAW,EAAG,GAC3D8E,EAAYlpE,OAAQ,EAEbkpE,GAeX39C,KAAM,SAAUn6B,EAAGC,EAAGqB,EAAOC,EAAQihB,GASjC,MAPyB,mBAAdA,KAEP7nB,KAAKsN,QAAQua,UAAYA,GAG7B7nB,KAAKsN,QAAQ0a,SAAS3iB,EAAGC,EAAGqB,EAAOC,GAE5B5G,MAkBX0yE,KAAM,SAAUA,EAAMrtE,EAAGC,EAAGguE,EAAM16D,EAAO2jE,GAE3B7yE,SAANrE,IAAmBA,EAAI,GACjBqE,SAANpE,IAAmBA,EAAI,GACdoE,SAAT4pE,IAAsBA,EAAO,gBACnB5pE,SAAVkP,IAAuBA,EAAQ,oBACpBlP,SAAX6yE,IAAwBA,GAAS,EAErC,IAAInE,GAAMp4E,KAAKsN,QACX8vE,EAAWhF,EAAI9E,IAEnB8E,GAAI9E,KAAOA,EAEPiJ,IAEAnE,EAAIvwD,UAAY,aAChBuwD,EAAIiF,SAAS3K,EAAMrtE,EAAI,EAAGC,EAAI,IAGlC8yE,EAAIvwD,UAAYjP,EAChBw/D,EAAIiF,SAAS3K,EAAMrtE,EAAGC,GAEtB8yE,EAAI9E,KAAO8J,GAcft7B,OAAQ,SAAUz8C,EAAGC,EAAGy1B,EAAQlT,GAE5B,GAAIuwD,GAAMp4E,KAAKsN,OAaf,OAXkB5D,UAAdme,IAEAuwD,EAAIvwD,UAAYA,GAGpBuwD,EAAIjqD,YACJiqD,EAAIkF,IAAIj4E,EAAGC,EAAGy1B,EAAQ,EAAa,EAAVl6B,KAAKC,IAAQ,GACtCs3E,EAAI9pD,YAEJ8pD,EAAIppD,OAEGhvB,MAgBXw9B,KAAM,SAAU5wB,EAAIC,EAAIC,EAAIC,EAAI6L,EAAOjS,GAErB+C,SAAVkP,IAAuBA,EAAQ,QACrBlP,SAAV/C,IAAuBA,EAAQ,EAEnC,IAAIyxE,GAAMp4E,KAAKsN,OAaf,OAXA8qE,GAAIjqD,YAEJiqD,EAAIhqD,OAAOxhB,EAAIC,GACfurE,EAAI/pD,OAAOvhB,EAAIC,GAEfqrE,EAAImF,UAAY52E,EAChByxE,EAAIhnD,YAAcxY,EAClBw/D,EAAIoF,SAEJpF,EAAI9pD,YAEGtuB,MAaXy9E,YAAa,SAAUjgD,EAAMrT,EAAOxT,GAIhC,GAFejN,SAAXiN,IAAwBA,EAAS,YAEhB,gBAAVwT,KAEPA,EAAQnqB,KAAKE,KAAKgpC,MAAMtd,SAASzB,IAFrC,CAUA,GAAIxjB,GAAQ62B,EAAKt6B,MAEF,eAAXyT,GAA0BhQ,EAAQwjB,EAAMxjB,QAExCA,EAAQwjB,EAAMxjB,MAGlB,IAAIyxE,GAAMp4E,KAAKsN,OAgBf,OAdA8qE,GAAIvwD,UAAYuwD,EAAI3nD,cAActG,EAAOxT,GAEzC3W,KAAKu5E,QAAU,GAAI1wD,GAAO2R,OAAOgD,EAAKnyB,MAAMhG,EAAGm4B,EAAKnyB,MAAM/F,EAAG6kB,EAAMvjB,QAEnE5G,KAAKu5E,QAAQ/9C,mBAAmBgC,EAAK/B,MAAQ,oBAAoB,EAAOz7B,KAAK64E,MAE7ET,EAAI/wD,OACJ+wD,EAAI3sD,UAAUzrB,KAAK64E,KAAKxzE,EAAGrF,KAAK64E,KAAKvzE,GACrC8yE,EAAI96C,OAAOE,EAAK/B,OAChB28C,EAAIpwD,SAAS,EAAG,EAAGrhB,EAAOwjB,EAAMvjB,QAChCwxE,EAAI1wD,UAEJ1nB,KAAKiU,OAAQ,EAENjU,OAYX8G,OAAQ,WAQJ,OANK9G,KAAK04E,sBAAwB14E,KAAKiU,QAEnCjU,KAAK+L,YAAYkI,QACjBjU,KAAKiU,OAAQ,GAGVjU,MASX+C,QAAS,WAEL/C,KAAK4wE,UAAU7tE,UAEf/C,KAAK8H,QAAQ/E,SAAQ,GAErB9C,KAAK4Q,WAAWI,OAAOjR,OAU3Bi9E,WAAY,WAGR,MADAj9E,MAAKg8E,GAAK,cACHh8E,MAUX09E,gBAAiB,WAGb,MADA19E,MAAKg8E,GAAK,cACHh8E,MAUX29E,cAAe,WAGX,MADA39E,MAAKg8E,GAAK,YACHh8E,MAUX49E,eAAgB,WAGZ,MADA59E,MAAKg8E,GAAK,aACHh8E,MAUXg9E,gBAAiB,WAGb,MADAh9E,MAAKg8E,GAAK,cACHh8E,MAUX69E,qBAAsB,WAGlB,MADA79E,MAAKg8E,GAAK,mBACHh8E,MAUX89E,mBAAoB,WAGhB,MADA99E,MAAKg8E,GAAK,iBACHh8E,MAUX+9E,oBAAqB,WAGjB,MADA/9E,MAAKg8E,GAAK,kBACHh8E,MAUXg+E,qBAAsB,WAGlB,MADAh+E,MAAKg8E,GAAK,mBACHh8E,MAUXi+E,SAAU,WAGN,MADAj+E,MAAKg8E,GAAK,MACHh8E,MAUXk+E,SAAU,WAGN,MADAl+E,MAAKg8E,GAAK,UACHh8E,MAUXm+E,cAAe,WAGX,MADAn+E,MAAKg8E,GAAK,WACHh8E,MAUXo+E,YAAa,WAGT,MADAp+E,MAAKg8E,GAAK,SACHh8E,MAUXq+E,aAAc,WAGV,MADAr+E,MAAKg8E,GAAK,UACHh8E,MAUXs+E,YAAa,WAGT,MADAt+E,MAAKg8E,GAAK,SACHh8E,MAUXu+E,aAAc,WAGV,MADAv+E,MAAKg8E,GAAK,UACHh8E,MAUXw+E,gBAAiB,WAGb,MADAx+E,MAAKg8E,GAAK,cACHh8E,MAUXy+E,eAAgB,WAGZ,MADAz+E,MAAKg8E,GAAK,aACHh8E,MAUX0+E,eAAgB,WAGZ,MADA1+E,MAAKg8E,GAAK,aACHh8E,MAUX2+E,eAAgB,WAGZ,MADA3+E,MAAKg8E,GAAK,aACHh8E,MAUX4+E,gBAAiB,WAGb,MADA5+E,MAAKg8E,GAAK,aACHh8E,MAUX6+E,eAAgB;AAGZ,MADA7+E,MAAKg8E,GAAK,YACHh8E,MAUX8+E,SAAU,WAGN,MADA9+E,MAAKg8E,GAAK,MACHh8E,MAUX++E,gBAAiB,WAGb,MADA/+E,MAAKg8E,GAAK,aACHh8E,MAUXg/E,WAAY,WAGR,MADAh/E,MAAKg8E,GAAK,QACHh8E,MAUXi/E,gBAAiB,WAGb,MADAj/E,MAAKg8E,GAAK,aACHh8E,OAUfoD,OAAOC,eAAewlB,EAAO2nD,WAAW3tE,UAAW,YAE/CS,IAAK,WAEDulB,EAAOC,OAAOo2D,oBAAoBl/E,KAAKsN,UAI3C9J,IAAK,SAAUC,GAEXolB,EAAOC,OAAOq2D,oBAAoBn/E,KAAKsN,QAAS7J,MAUxDL,OAAOC,eAAewlB,EAAO2nD,WAAW3tE,UAAW,MAE/CS,IAAK,WAED,MAAOtD,MAAKsN,QAAQC,0BAIxB/J,IAAK,SAAUC,GAEXzD,KAAKsN,QAAQC,yBAA2B9J,KAkBhDolB,EAAO2nD,WAAW4O,aAAe,SAAUC,EAAYC,EAAY77D,EAAQE,EAAQ47D,EAAOC,GAStF,MAP0B,gBAAfH,KAA2BA,EAAa,GACzB,gBAAfC,KAA2BA,EAAa,GAC7B,gBAAX77D,KAAuBA,EAAS,GACrB,gBAAXE,KAAuBA,EAAS,GACtB,gBAAV47D,KAAsBA,EAAQ,GACpB,gBAAVC,KAAsBA,EAAQ,IAEhC/gD,GAAIhb,EAAQib,GAAI/a,EAAQF,OAAQA,EAAQE,OAAQA,EAAQ47D,MAAOA,EAAOC,MAAOA,EAAOH,WAAYA,EAAYC,WAAYA,EAAYx6E,GAAIu6E,EAAYt6E,GAAIu6E,IAIrKz2D,EAAO2nD,WAAW3tE,UAAUC,YAAc+lB,EAAO2nD,WAajDvwE,KAAK0mC,SAAW,WAEZ1mC,KAAKkI,uBAAuBzC,KAAK1F,MAEjCA,KAAK2B,YAAa,EAQlB3B,KAAKy/E,UAAY,EAQjBz/E,KAAKu9E,UAAY,EASjBv9E,KAAK0/E,UAAY,EASjB1/E,KAAK0mD,gBASL1mD,KAAK0L,KAAO,SASZ1L,KAAKkE,UAAYjE,KAAKkE,WAAWE,OASjCrE,KAAK2/E,YAAc,KASnB3/E,KAAKge,UAQLhe,KAAK0D,QAAS,EAQd1D,KAAK4/E,cAAgB,EAErB5/E,KAAK6/E,aAAe,GAAI5/E,MAAKuC,UAAU,EAAE,EAAE,EAAE,GAS7CxC,KAAKiU,OAAQ,EASbjU,KAAK8/E,YAAa,EASlB9/E,KAAK+/E,mBAAoB,GAK7B9/E,KAAK0mC,SAAS9jC,UAAYO,OAAOiF,OAAQpI,KAAKkI,uBAAuBtF,WACrE5C,KAAK0mC,SAAS9jC,UAAUC,YAAc7C,KAAK0mC,SAW3C1mC,KAAK0mC,SAAS9jC,UAAUm9E,UAAY,SAASzC,EAAW3kE,EAAOpX,GAsB3D,MApBAxB,MAAKu9E,UAAYA,GAAa,EAC9Bv9E,KAAK0/E,UAAY9mE,GAAS,EAC1B5Y,KAAKigF,UAAuBv2E,SAAVlI,EAAuB,EAAIA,EAEzCxB,KAAK2/E,cAED3/E,KAAK2/E,YAAYh5B,MAAMr3B,OAAOpsB,OAG9BlD,KAAKkgF,UAAU,GAAIjgF,MAAKkiC,QAAQniC,KAAK2/E,YAAYh5B,MAAMr3B,OAAO+G,MAAM,OAKpEr2B,KAAK2/E,YAAYpC,UAAYv9E,KAAKu9E,UAClCv9E,KAAK2/E,YAAYD,UAAY1/E,KAAK0/E,UAClC1/E,KAAK2/E,YAAYM,UAAYjgF,KAAKigF,YAInCjgF,MAWXC,KAAK0mC,SAAS9jC,UAAUurB,OAAS,SAAS/oB,EAAGC,GAIzC,MAFAtF,MAAKkgF,UAAU,GAAIjgF,MAAKkiC,SAAS98B,EAAGC,KAE7BtF,MAYXC,KAAK0mC,SAAS9jC,UAAUwrB,OAAS,SAAShpB,EAAGC,GAUzC,MARKtF,MAAK2/E,aAEN3/E,KAAKouB,OAAO,EAAG,GAGnBpuB,KAAK2/E,YAAYh5B,MAAMr3B,OAAOvrB,KAAKsB,EAAGC,GACtCtF,KAAKiU,OAAQ,EAENjU,MAcXC,KAAK0mC,SAAS9jC,UAAUs9E,iBAAmB,SAASC,EAAKC,EAAKC,EAAKC,GAE3DvgF,KAAK2/E,YAEwC,IAAzC3/E,KAAK2/E,YAAYh5B,MAAMr3B,OAAOpsB,SAE9BlD,KAAK2/E,YAAYh5B,MAAMr3B,QAAU,EAAG,IAKxCtvB,KAAKouB,OAAO,EAAE,EAGlB,IAAIoyD,GACAC,EACAvxD,EAAI,GACJI,EAAStvB,KAAK2/E,YAAYh5B,MAAMr3B,MAEd,KAAlBA,EAAOpsB,QAEPlD,KAAKouB,OAAO,EAAG,EAMnB,KAAK,GAHDsyD,GAAQpxD,EAAOA,EAAOpsB,OAAS,GAC/By9E,EAAQrxD,EAAOA,EAAOpsB,OAAS,GAC/BY,EAAI,EACCb,EAAI,EAAQisB,GAALjsB,IAAUA,EAEtBa,EAAIb,EAAIisB,EAERsxD,EAAKE,GAAWN,EAAMM,GAAS58E,EAC/B28E,EAAKE,GAAWN,EAAMM,GAAS78E,EAE/BwrB,EAAOvrB,KAAMy8E,GAASJ,GAASE,EAAMF,GAAOt8E,EAAO08E,GAAM18E,EAC5C28E,GAASJ,GAASE,EAAMF,GAAOv8E,EAAO28E,GAAM38E,EAK7D,OAFA9D,MAAKiU,OAAQ,EAENjU,MAeXC,KAAK0mC,SAAS9jC,UAAU+9E,cAAgB,SAASR,EAAKC,EAAKQ,EAAMC,EAAMR,EAAKC,GAEpEvgF,KAAK2/E,YAEwC,IAAzC3/E,KAAK2/E,YAAYh5B,MAAMr3B,OAAOpsB,SAE9BlD,KAAK2/E,YAAYh5B,MAAMr3B,QAAU,EAAG,IAKxCtvB,KAAKouB,OAAO,EAAE,EAelB,KAAK,GAXD2yD,GACAC,EACAC,EACAC,EACAC,EALAjyD,EAAI,GAMJI,EAAStvB,KAAK2/E,YAAYh5B,MAAMr3B,OAEhCoxD,EAAQpxD,EAAOA,EAAOpsB,OAAO,GAC7By9E,EAAQrxD,EAAOA,EAAOpsB,OAAO,GAC7BY,EAAI,EAECb,EAAI,EAAQisB,GAALjsB,IAAUA,EAEtBa,EAAIb,EAAIisB,EAER6xD,EAAM,EAAIj9E,EACVk9E,EAAMD,EAAKA,EACXE,EAAMD,EAAMD,EAEZG,EAAKp9E,EAAIA,EACTq9E,EAAKD,EAAKp9E,EAEVwrB,EAAOvrB,KAAMk9E,EAAMP,EAAQ,EAAIM,EAAMl9E,EAAIs8E,EAAM,EAAIW,EAAKG,EAAKL,EAAOM,EAAKb,EAC5DW,EAAMN,EAAQ,EAAIK,EAAMl9E,EAAIu8E,EAAM,EAAIU,EAAKG,EAAKJ,EAAOK,EAAKZ,EAK7E,OAFAvgF,MAAKiU,OAAQ,EAENjU,MAgBXC,KAAK0mC,SAAS9jC,UAAUu+E,MAAQ,SAASx0E,EAAIC,EAAIC,EAAIC,EAAIguB,GAEjD/6B,KAAK2/E,YAEwC,IAAzC3/E,KAAK2/E,YAAYh5B,MAAMr3B,OAAOpsB,QAE9BlD,KAAK2/E,YAAYh5B,MAAMr3B,OAAOvrB,KAAK6I,EAAIC,GAK3C7M,KAAKouB,OAAOxhB,EAAIC,EAGpB,IAAIyiB,GAAStvB,KAAK2/E,YAAYh5B,MAAMr3B,OAChCoxD,EAAQpxD,EAAOA,EAAOpsB,OAAO,GAC7By9E,EAAQrxD,EAAOA,EAAOpsB,OAAO,GAC7B47B,EAAK6hD,EAAQ9zE,EACbmyB,EAAK0hD,EAAQ9zE,EACbmyB,EAAKhyB,EAAOF,EACZoyB,EAAKnyB,EAAOF,EACZy0E,EAAKxgF,KAAKq7B,IAAI4C,EAAKG,EAAKD,EAAKD,EAEjC,IAAS,KAALsiD,GAA0B,IAAXtmD,GAEXzL,EAAOA,EAAOpsB,OAAO,KAAO0J,GAAM0iB,EAAOA,EAAOpsB,OAAO,KAAO2J,IAE9DyiB,EAAOvrB,KAAK6I,EAAIC,OAIxB,CACI,GAAIy0E,GAAKxiD,EAAKA,EAAKE,EAAKA,EACpBuiD,EAAKxiD,EAAKA,EAAKE,EAAKA,EACpBuiD,EAAK1iD,EAAKC,EAAKC,EAAKC,EACpBwiD,EAAK1mD,EAASl6B,KAAK0E,KAAK+7E,GAAMD,EAC9BK,EAAK3mD,EAASl6B,KAAK0E,KAAKg8E,GAAMF,EAC9BM,EAAKF,EAAKD,EAAKF,EACfM,EAAKF,EAAKF,EAAKD,EACf7yE,EAAK+yE,EAAKxiD,EAAKyiD,EAAK1iD,EACpBrwB,EAAK8yE,EAAK1iD,EAAK2iD,EAAK5iD,EACpBpG,EAAKsG,GAAM0iD,EAAKC,GAChBjqB,EAAK54B,GAAM4iD,EAAKC,GAChBE,EAAK5iD,GAAMwiD,EAAKG,GAChBE,EAAK/iD,GAAM0iD,EAAKG,GAChBG,EAAalhF,KAAK2E,MAAMkyD,EAAK/oD,EAAI+pB,EAAKhqB,GACtCszE,EAAanhF,KAAK2E,MAAMs8E,EAAKnzE,EAAIkzE,EAAKnzE,EAE1C1O,MAAKs9E,IAAI5uE,EAAK9B,EAAI+B,EAAK9B,EAAIkuB,EAAQgnD,EAAYC,EAAUhjD,EAAKD,EAAKE,EAAKH,GAK5E,MAFA9+B,MAAKiU,OAAQ,EAENjU,MAgBXC,KAAK0mC,SAAS9jC,UAAUy6E,IAAM,SAAS5uE,EAAIC,EAAIosB,EAAQgnD,EAAYC,EAAUC,EAAeC,GAGxF,GAAIH,IAAeC,EAEf,MAAOhiF,KAGW0J,UAAlBu4E,IAA+BA,GAAgB,GAClCv4E,SAAbw4E,IAA0BA,EAAW,KAEpCD,GAA6BF,GAAZC,EAElBA,GAAsB,EAAVnhF,KAAKC,GAEZmhF,GAA+BD,GAAdD,IAEtBA,GAAwB,EAAVlhF,KAAKC,GAGvB,IAAIqhF,GAAQF,EAA0C,IAAzBF,EAAaC,GAAkBA,EAAWD,EACnEK,EAAQvhF,KAAKgH,KAAKhH,KAAKq7B,IAAIimD,IAAoB,EAAVthF,KAAKC,KAAWohF,CAGzD,IAAc,IAAVC,EAEA,MAAOniF,KAGX,IAAIqiF,GAAS3zE,EAAK7N,KAAKuE,IAAI28E,GAAchnD,EACrCunD,EAAS3zE,EAAK9N,KAAKsE,IAAI48E,GAAchnD,CAErCknD,IAAiBjiF,KAAKuiF,QAEtBviF,KAAKouB,OAAO1f,EAAIC,GAIhB3O,KAAKouB,OAAOi0D,EAAQC,EAgBxB,KAAK,GAZDhzD,GAAStvB,KAAK2/E,YAAYh5B,MAAMr3B,OAEhCkzD,EAAQL,GAAgB,EAAPC,GACjBK,EAAiB,EAARD,EAETE,EAAS7hF,KAAKuE,IAAIo9E,GAClBG,EAAS9hF,KAAKsE,IAAIq9E,GAElBI,EAAWR,EAAO,EAElBS,EAAaD,EAAW,EAAKA,EAExB3/E,EAAI,EAAQ2/E,GAAL3/E,EAAeA,IAC/B,CACI,GAAI6/E,GAAQ7/E,EAAI4/E,EAAY5/E,EAExBw4B,EAAS,EAAUsmD,EAAcU,EAASK,EAE1Cl+E,EAAI/D,KAAKuE,IAAIq2B,GACbgG,GAAK5gC,KAAKsE,IAAIs2B,EAElBnM,GAAOvrB,MAAQ2+E,EAAU99E,EAAM+9E,EAASlhD,GAAO1G,EAASrsB,GACzCg0E,GAAUjhD,EAAMkhD,EAAS/9E,GAAOm2B,EAASpsB,GAK5D,MAFA3O,MAAKiU,OAAQ,EAENjU,MAYXC,KAAK0mC,SAAS9jC,UAAU2kC,UAAY,SAAS5uB,EAAOpX,GAgBhD,MAdAxB,MAAKuiF,SAAU,EACfviF,KAAK+iF,UAAYnqE,GAAS,EAC1B5Y,KAAKy/E,UAAuB/1E,SAAVlI,EAAuB,EAAIA,EAEzCxB,KAAK2/E,aAED3/E,KAAK2/E,YAAYh5B,MAAMr3B,OAAOpsB,QAAU,IAExClD,KAAK2/E,YAAY3wD,KAAOhvB,KAAKuiF,QAC7BviF,KAAK2/E,YAAYoD,UAAY/iF,KAAK+iF,UAClC/iF,KAAK2/E,YAAYF,UAAYz/E,KAAKy/E,WAInCz/E,MASXC,KAAK0mC,SAAS9jC,UAAU6kC,QAAU,WAM9B,MAJA1nC,MAAKuiF,SAAU,EACfviF,KAAK+iF,UAAY,KACjB/iF,KAAKy/E,UAAY,EAEVz/E,MAYXC,KAAK0mC,SAAS9jC,UAAU4kC,SAAW,SAASpiC,EAAGC,EAAGqB,EAAOC,GAIrD,MAFA5G,MAAKkgF,UAAU,GAAIjgF,MAAKuC,UAAU6C,EAAGC,EAAGqB,EAAOC,IAExC5G,MAWXC,KAAK0mC,SAAS9jC,UAAUmgF,gBAAkB,SAAS39E,EAAGC,EAAGqB,EAAOC,EAAQm0B,GAIpE,MAFA/6B,MAAKkgF,UAAU,GAAIjgF,MAAK2kC,iBAAiBv/B,EAAGC,EAAGqB,EAAOC,EAAQm0B,IAEvD/6B,MAYXC,KAAK0mC,SAAS9jC,UAAUogF,WAAa,SAAS59E,EAAGC,EAAGm1B,GAIhD,MAFAz6B,MAAKkgF,UAAU,GAAIjgF,MAAKu6B,OAAOn1B,EAAGC,EAAGm1B,IAE9Bz6B,MAaXC,KAAK0mC,SAAS9jC,UAAUqgF,YAAc,SAAS79E,EAAGC,EAAGqB,EAAOC,GAIxD,MAFA5G,MAAKkgF,UAAU,GAAIjgF,MAAK28B,QAAQv3B,EAAGC,EAAGqB,EAAOC,IAEtC5G,MAUXC,KAAK0mC,SAAS9jC,UAAUsgF,YAAc,SAASC,IAEvCA,YAAgBv6D,GAAOsZ,SAAWihD,YAAgBnjF,MAAKkiC,WAEvDihD,EAAOA,EAAK9zD,OAKhB,IAAIA,GAAS8zD,CAEb,KAAKziF,MAAM2R,QAAQgd,GACnB,CAGIA,EAAS,GAAI3uB,OAAMg2B,UAAUzzB,OAE7B,KAAK,GAAID,GAAI,EAAGA,EAAIqsB,EAAOpsB,SAAUD,EAEjCqsB,EAAOrsB,GAAK0zB,UAAU1zB,GAM9B,MAFAjD,MAAKkgF,UAAU,GAAIr3D,GAAOsZ,QAAQ7S,IAE3BtvB,MASXC,KAAK0mC,SAAS9jC,UAAUuY,MAAQ,WAS5B,MAPApb,MAAKu9E,UAAY,EACjBv9E,KAAKuiF,SAAU,EAEfviF,KAAKiU,OAAQ,EACbjU,KAAKqjF,YAAa,EAClBrjF,KAAK0mD,gBAEE1mD,MAaXC,KAAK0mC,SAAS9jC,UAAUuD,gBAAkB,SAASC,EAAYC,EAAW+e,GAEnD3b,SAAfrD,IAA4BA,EAAa,GAC3BqD,SAAdpD,IAA2BA,EAAYrG,KAAK0N,WAAW0Y,SAC3C3c,SAAZ2b,IAAyBA,EAAU,EAEvC,IAAI7e,GAASxG,KAAK6F,WAElBW,GAAOG,OAAS0e,EAChB7e,EAAOI,QAAUye,CAEjB,IAAI6K,GAAe,GAAIjwB,MAAKinB,aAAa1gB,EAAOG,MAAQN,EAAYG,EAAOI,OAASP,GAEhFyB,EAAU7H,KAAKuL,QAAQ6e,WAAW6F,EAAatf,OAAQtK,EAY3D,OAVAwB,GAAQiE,YAAY1F,WAAaA,EAEjC6pB,EAAa5iB,QAAQjM,MAAMgF,EAAYA,GAEvC6pB,EAAa5iB,QAAQme,WAAWjlB,EAAOnB,GAAImB,EAAOlB,GAIlDrF,KAAKsnB,eAAe+0D,eAAet8E,KAAMkwB,EAAa5iB,SAE/CxF,GAUX7H,KAAK0mC,SAAS9jC,UAAU6E,aAAe,SAASJ,GAG5C,GAAItH,KAAKyB,WAAY,GAAwB,IAAfzB,KAAKwB,OAAexB,KAAK0D,UAAW,EAAlE,CAEA,GAAI1D,KAAK2C,eAiBL,OAfI3C,KAAKiU,OAASjU,KAAK+/E,qBAEnB//E,KAAKsE,wBAGLtE,KAAKsjF,4BAELtjF,KAAK+/E,mBAAoB,EACzB//E,KAAKiU,OAAQ,GAGjBjU,KAAKuH,cAAczF,WAAa9B,KAAK8B,eAErC7B,MAAKwH,OAAO5E,UAAU6E,aAAahC,KAAK1F,KAAKuH,cAAeD,EAa5D,IAPAA,EAAcuD,YAAYI,OAC1B3D,EAAc2S,iBAAiB0B,aAAa3b,KAAKkE,WAE7ClE,KAAK0C,OAAO4E,EAAc4D,YAAYC,SAASnL,KAAK0C,MAAO4E,GAC3DtH,KAAK2D,UAAU2D,EAAcyD,cAAcC,WAAWhL,KAAKgE,cAG3DhE,KAAKkE,YAAcoD,EAAcuD,YAAYwC,iBACjD,CACI/F,EAAcuD,YAAYwC,iBAAmBrN,KAAKkE,SAClD,IAAIyZ,GAAiB1d,KAAKoc,gBAAgB/U,EAAcuD,YAAYwC,iBACpE/F,GAAcuD,YAAYrD,GAAGoW,UAAUD,EAAe,GAAIA,EAAe,IAa7E,GATI3d,KAAK8/E,aAEL9/E,KAAKiU,OAAQ,EACbjU,KAAK8/E,YAAa,GAGtB7/E,KAAK6d,cAAcw+D,eAAet8E,KAAMsH,GAGpCtH,KAAKgD,SAASE,OAClB,CACIoE,EAAcuD,YAAYQ,OAG1B,KAAK,GAAIpI,GAAI,EAAGA,EAAIjD,KAAKgD,SAASE,OAAQD,IAEtCjD,KAAKgD,SAASC,GAAGyE,aAAaJ,EAGlCA,GAAcuD,YAAYI,OAG1BjL,KAAK2D,UAAU2D,EAAcyD,cAAcQ,YAC3CvL,KAAK0C,OAAO4E,EAAc4D,YAAYI,QAAQtL,KAAKoL,KAAM9D,GAE7DA,EAAc6S,YAEd7S,EAAcuD,YAAYQ,UAWlCpL,KAAK0mC,SAAS9jC,UAAU8E,cAAgB,SAASL,GAG7C,GAAItH,KAAKyB,WAAY,GAAwB,IAAfzB,KAAKwB,OAAexB,KAAK0D,UAAW,EAAlE,CAQA,GALI1D,KAAKujF,YAAcvjF,KAAK0L,OACxB1L,KAAKiU,OAAQ,EACbjU,KAAKujF,UAAYvjF,KAAK0L,MAGtB1L,KAAK2C,eAiBL,OAfI3C,KAAKiU,OAASjU,KAAK+/E,qBAEnB//E,KAAKsE,wBAGLtE,KAAKsjF,4BAELtjF,KAAK+/E,mBAAoB,EACzB//E,KAAKiU,OAAQ,GAGjBjU,KAAKuH,cAAc/F,MAAQxB,KAAKwB,UAEhCvB,MAAKwH,OAAO5E,UAAU8E,cAAcjC,KAAK1F,KAAKuH,cAAeD,EAM7D,IAAIgG,GAAUhG,EAAcgG,QACxBuC,EAAY7P,KAAK+B,cAEjB/B,MAAKkE,YAAcoD,EAAc+F,mBAEjC/F,EAAc+F,iBAAmBrN,KAAKkE,UACtCoJ,EAAQC,yBAA2BtN,KAAKuN,iBAAiBlG,EAAc+F,mBAGvErN,KAAK0C,OAEL4E,EAAc4D,YAAYC,SAASnL,KAAK0C,MAAO4E,EAGnD,IAAIjB,GAAaiB,EAAcjB,WAC3BvB,EAAM+K,EAAU/K,GAAKwC,EAAcjB,WAAciB,EAAc0G,OAC/DjJ,EAAM8K,EAAU9K,GAAKuC,EAAcjB,WAAciB,EAAc2G,MAEnEX,GAAQa,aAAa0B,EAAUnL,EAAI2B,EACdwJ,EAAUlL,EAAI0B,EACdwJ,EAAUjL,EAAIyB,EACdwJ,EAAUhL,EAAIwB,EACdvB,EACAC,GAErB9E,KAAKsnB,eAAe+0D,eAAet8E,KAAMsN,EAGzC,KAAK,GAAIrK,GAAI,EAAGA,EAAIjD,KAAKgD,SAASE,OAAQD,IAEtCjD,KAAKgD,SAASC,GAAG0E,cAAcL,EAG/BtH,MAAK0C,OAEL4E,EAAc4D,YAAYI,QAAQhE,KAW9CrH,KAAK0mC,SAAS9jC,UAAUgD,UAAY,SAASC,GAEzC,IAAK9F,KAAKyC,eACV,CAEI,IAAKzC,KAAK2B,WAEN,MAAO1B,MAAK8F,cAGZ/F,MAAKiU,QAELjU,KAAKwjF,oBACLxjF,KAAK8/E,YAAa,EAClB9/E,KAAK+/E,mBAAoB,EACzB//E,KAAKiU,OAAQ,EAGjB,IAAIzN,GAASxG,KAAK6/E,aAEdtzE,EAAK/F,EAAOnB,EACZmH,EAAKhG,EAAOG,MAAQH,EAAOnB,EAE3BoH,EAAKjG,EAAOlB,EACZoH,EAAKlG,EAAOI,OAASJ,EAAOlB,EAE5BvD,EAAiB+D,GAAU9F,KAAK+B,eAEhC2C,EAAI3C,EAAe2C,EACnBC,EAAI5C,EAAe4C,EACnBC,EAAI7C,EAAe6C,EACnBC,EAAI9C,EAAe8C,EACnBC,EAAK/C,EAAe+C,GACpBC,EAAKhD,EAAegD,GAEpB6H,EAAKlI,EAAI8H,EAAK5H,EAAI8H,EAAK5H,EACvB+H,EAAKhI,EAAI6H,EAAK/H,EAAI6H,EAAKzH,EAEvB+H,EAAKpI,EAAI6H,EAAK3H,EAAI8H,EAAK5H,EACvBiI,EAAKlI,EAAI6H,EAAK/H,EAAI4H,EAAKxH,EAEvBiI,EAAKtI,EAAI6H,EAAK3H,EAAI6H,EAAK3H,EACvBmI,EAAKpI,EAAI4H,EAAK9H,EAAI4H,EAAKxH,EAEvBmI,EAAMxI,EAAI8H,EAAK5H,EAAI6H,EAAK3H,EACxBqI,EAAMtI,EAAI4H,EAAK9H,EAAI6H,EAAKzH,EAExB0F,EAAOmC,EACPlC,EAAOmC,EAEPvC,EAAOsC,EACPpC,EAAOqC,CAEXvC,GAAYA,EAALwC,EAAYA,EAAKxC,EACxBA,EAAYA,EAAL0C,EAAYA,EAAK1C,EACxBA,EAAYA,EAAL4C,EAAYA,EAAK5C,EAExBE,EAAYA,EAALuC,EAAYA,EAAKvC,EACxBA,EAAYA,EAALyC,EAAYA,EAAKzC,EACxBA,EAAYA,EAAL2C,EAAYA,EAAK3C,EAExBC,EAAOqC,EAAKrC,EAAOqC,EAAKrC,EACxBA,EAAOuC,EAAKvC,EAAOuC,EAAKvC,EACxBA,EAAOyC,EAAKzC,EAAOyC,EAAKzC,EAExBC,EAAOqC,EAAKrC,EAAOqC,EAAKrC,EACxBA,EAAOuC,EAAKvC,EAAOuC,EAAKvC,EACxBA,EAAOyC,EAAKzC,EAAOyC,EAAKzC,EAExB1K,KAAKuC,QAAQ8C,EAAIiF,EACjBtK,KAAKuC,QAAQoE,MAAQ8D,EAAOH,EAE5BtK,KAAKuC,QAAQ+C,EAAIkF,EACjBxK,KAAKuC,QAAQqE,OAAS8D,EAAOF,EAE7BxK,KAAKyC,eAAiBzC,KAAKuC,QAG/B,MAAOvC,MAAKyC,gBAUhBxC,KAAK0mC,SAAS9jC,UAAUyhC,cAAgB,SAAU9U,GAE9CxvB,KAAK+B,eAAeqF,aAAaooB,EAAQi0D,UAIzC,KAAK,GAFD/8B,GAAe1mD,KAAK0mD,aAEfzjD,EAAI,EAAGA,EAAIyjD,EAAaxjD,OAAQD,IACzC,CACI,GAAI+N,GAAO01C,EAAazjD,EAExB,IAAK+N,EAAKge,MAMNhe,EAAK21C,OAED31C,EAAK21C,MAAMprB,SAASkoD,UAAUp+E,EAAGo+E,UAAUn+E,GAE3C,OAAO,EAKnB,OAAO,GASXrF,KAAK0mC,SAAS9jC,UAAU2gF,kBAAoB,WAExC,GAAIl5E,GAAOC,EAAAA,EACPE,IAAQF,EAAAA,GAERC,EAAOD,EAAAA,EACPG,IAAQH,EAAAA,EAEZ,IAAIvK,KAAK0mD,aAAaxjD,OAIlB,IAAK,GAFDyjD,GAAOr3B,EAAQjqB,EAAGC,EAAGsS,EAAGwL,EAEnBngB,EAAI,EAAGA,EAAIjD,KAAK0mD,aAAaxjD,OAAQD,IAC9C,CACI,GAAI+N,GAAOhR,KAAK0mD,aAAazjD,GACzBmS,EAAOpE,EAAKoE,KACZmoE,EAAYvsE,EAAKusE,SAGrB,IAFA52B,EAAQ31C,EAAK21C,MAETvxC,IAASnV,KAAK0mC,SAAS+8C,MAAQtuE,IAASnV,KAAK0mC,SAASg9C,KAEtDt+E,EAAIshD,EAAMthD,EAAIk4E,EAAY,EAC1Bj4E,EAAIqhD,EAAMrhD,EAAIi4E,EAAY,EAC1B3lE,EAAI+uC,EAAMhgD,MAAQ42E,EAClBn6D,EAAIujC,EAAM//C,OAAS22E,EAEnBjzE,EAAWA,EAAJjF,EAAWA,EAAIiF,EACtBG,EAAOpF,EAAIuS,EAAInN,EAAOpF,EAAIuS,EAAInN,EAE9BD,EAAWA,EAAJlF,EAAWA,EAAIkF,EACtBE,EAAOpF,EAAI8d,EAAI1Y,EAAOpF,EAAI8d,EAAI1Y,MAE7B,IAAI0K,IAASnV,KAAK0mC,SAASi9C,KAE5Bv+E,EAAIshD,EAAMthD,EACVC,EAAIqhD,EAAMrhD,EACVsS,EAAI+uC,EAAM5rB,OAASwiD,EAAY,EAC/Bn6D,EAAIujC,EAAM5rB,OAASwiD,EAAY,EAE/BjzE,EAAeA,EAARjF,EAAIuS,EAAWvS,EAAIuS,EAAItN,EAC9BG,EAAOpF,EAAIuS,EAAInN,EAAOpF,EAAIuS,EAAInN,EAE9BD,EAAeA,EAARlF,EAAI8d,EAAW9d,EAAI8d,EAAI5Y,EAC9BE,EAAOpF,EAAI8d,EAAI1Y,EAAOpF,EAAI8d,EAAI1Y,MAE7B,IAAI0K,IAASnV,KAAK0mC,SAASk9C,KAE5Bx+E,EAAIshD,EAAMthD,EACVC,EAAIqhD,EAAMrhD,EACVsS,EAAI+uC,EAAMhgD,MAAQ42E,EAAY,EAC9Bn6D,EAAIujC,EAAM//C,OAAS22E,EAAY,EAE/BjzE,EAAeA,EAARjF,EAAIuS,EAAWvS,EAAIuS,EAAItN,EAC9BG,EAAOpF,EAAIuS,EAAInN,EAAOpF,EAAIuS,EAAInN,EAE9BD,EAAeA,EAARlF,EAAI8d,EAAW9d,EAAI8d,EAAI5Y,EAC9BE,EAAOpF,EAAI8d,EAAI1Y,EAAOpF,EAAI8d,EAAI1Y,MAGlC,CAEI4kB,EAASq3B,EAAMr3B,MAEf,KAAK,GAAIxrB,GAAI,EAAGA,EAAIwrB,EAAOpsB,OAAQY,IAE3BwrB,EAAOxrB,YAAc+kB,GAAOznB,OAE5BiE,EAAIiqB,EAAOxrB,GAAGuB,EACdC,EAAIgqB,EAAOxrB,GAAGwB,IAIdD,EAAIiqB,EAAOxrB,GACXwB,EAAIgqB,EAAOxrB,EAAI,GAEXA,EAAIwrB,EAAOpsB,OAAS,GAEpBY,KAIRwG,EAAuBA,EAAhBjF,EAAIk4E,EAAmBl4E,EAAIk4E,EAAYjzE,EAC9CG,EAAOpF,EAAIk4E,EAAY9yE,EAAOpF,EAAIk4E,EAAY9yE,EAE9CD,EAAuBA,EAAhBlF,EAAIi4E,EAAmBj4E,EAAIi4E,EAAY/yE,EAC9CE,EAAOpF,EAAIi4E,EAAY7yE,EAAOpF,EAAIi4E,EAAY7yE,OAO1DJ,GAAO,EACPG,EAAO,EACPD,EAAO,EACPE,EAAO,CAGX,IAAI2a,GAAUrlB,KAAK4/E,aAEnB5/E,MAAK6/E,aAAax6E,EAAIiF,EAAO+a,EAC7BrlB,KAAK6/E,aAAal5E,MAAS8D,EAAOH,EAAkB,EAAV+a,EAE1CrlB,KAAK6/E,aAAav6E,EAAIkF,EAAO6a,EAC7BrlB,KAAK6/E,aAAaj5E,OAAU8D,EAAOF,EAAkB,EAAV6a,GAS/CplB,KAAK0mC,SAAS9jC,UAAUyB,sBAAwB,WAE5C,GAAIkC,GAASxG,KAAKgG,gBAElB,IAAKhG,KAAKuH,cAYNvH,KAAKuH,cAAcmU,OAAO3T,OAAOvB,EAAOG,MAAOH,EAAOI,YAX1D,CACI,GAAIspB,GAAe,GAAIjwB,MAAKinB,aAAa1gB,EAAOG,MAAOH,EAAOI,QAC1DkB,EAAU7H,KAAKuL,QAAQ6e,WAAW6F,EAAatf,OAEnD5Q,MAAKuH,cAAgB,GAAItH,MAAKwH,OAAOK,GACrC9H,KAAKuH,cAAcmU,OAASwU,EAE5BlwB,KAAKuH,cAAcxF,eAAiB/B,KAAK+B,eAQ7C/B,KAAKuH,cAAcW,OAAO7C,IAAMmB,EAAOnB,EAAImB,EAAOG,OAClD3G,KAAKuH,cAAcW,OAAO5C,IAAMkB,EAAOlB,EAAIkB,EAAOI,QAGlD5G,KAAKuH,cAAcmU,OAAOpO,QAAQme,WAAWjlB,EAAOnB,GAAImB,EAAOlB,GAG/DtF,KAAK8B,WAAa,EAGlB7B,KAAKsnB,eAAe+0D,eAAet8E,KAAMA,KAAKuH,cAAcmU,OAAOpO,SACnEtN,KAAKuH,cAAc/F,MAAQxB,KAAKwB,OASpCvB,KAAK0mC,SAAS9jC,UAAUygF,0BAA4B,WAEhD,GAAIQ,GAAe9jF,KAAKuH,cACpBO,EAAUg8E,EAAah8E,QACvB8I,EAASkzE,EAAapoE,OAAO9K,MAEjC9I,GAAQiE,YAAYpF,MAAQiK,EAAOjK,MACnCmB,EAAQiE,YAAYnF,OAASgK,EAAOhK,OACpCkB,EAAQsF,KAAKzG,MAAQmB,EAAQoE,MAAMvF,MAAQiK,EAAOjK,MAClDmB,EAAQsF,KAAKxG,OAASkB,EAAQoE,MAAMtF,OAASgK,EAAOhK,OAEpDk9E,EAAax7E,OAASsI,EAAOjK,MAC7Bm9E,EAAav7E,QAAUqI,EAAOhK,OAG9BkB,EAAQiE,YAAYkI,SAQxBhU,KAAK0mC,SAAS9jC,UAAUkhF,oBAAsB,WAE1C/jF,KAAKuH,cAAcO,QAAQ/E,SAAQ,GACnC/C,KAAKuH,cAAgB,MAUzBtH,KAAK0mC,SAAS9jC,UAAUq9E,UAAY,SAASv5B,GAErC3mD,KAAK2/E,aAGD3/E,KAAK2/E,YAAYh5B,MAAMr3B,OAAOpsB,QAAU,GAExClD,KAAK0mD,aAAalmC,MAI1BxgB,KAAK2/E,YAAc,KAGfh5B,YAAiB99B,GAAOsZ,UAExBwkB,EAAQA,EAAM9sB,QACd8sB,EAAMnkB,UAGV,IAAIxxB,GAAO,GAAI/Q,MAAK+jF,aAAahkF,KAAKu9E,UAAWv9E,KAAK0/E,UAAW1/E,KAAKigF,UAAWjgF,KAAK+iF,UAAW/iF,KAAKy/E,UAAWz/E,KAAKuiF,QAAS57B,EAY/H,OAVA3mD,MAAK0mD,aAAa3iD,KAAKiN,GAEnBA,EAAKoE,OAASnV,KAAK0mC,SAASs9C,OAE5BjzE,EAAK21C,MAAMrkB,OAAStiC,KAAKuiF,QACzBviF,KAAK2/E,YAAc3uE,GAGvBhR,KAAKiU,OAAQ,EAENjD,GAcX5N,OAAOC,eAAepD,KAAK0mC,SAAS9jC,UAAW,iBAE3CS,IAAK,WACD,MAAQtD,MAAK2C,gBAGjBa,IAAK,SAASC,GAEVzD,KAAK2C,eAAiBc,EAElBzD,KAAK2C,eAEL3C,KAAKsE,wBAILtE,KAAK+jF,sBAGT/jF,KAAKiU,OAAQ,EACbjU,KAAK8/E,YAAa,KAyC1B7/E,KAAK+jF,aAAe,SAASzG,EAAWmC,EAAWO,EAAW8C,EAAWtD,EAAWzwD,EAAM23B,GAKtF3mD,KAAKu9E,UAAYA,EAKjBv9E,KAAK0/E,UAAYA,EAKjB1/E,KAAKigF,UAAYA,EAKjBjgF,KAAKkkF,UAAYxE,EAKjB1/E,KAAK+iF,UAAYA,EAKjB/iF,KAAKy/E,UAAYA,EAKjBz/E,KAAKmkF,UAAYpB,EAKjB/iF,KAAKgvB,KAAOA,EAKZhvB,KAAK2mD,MAAQA,EAKb3mD,KAAKoV,KAAOuxC,EAAMvxC,MAItBnV,KAAK+jF,aAAanhF,UAAUC,YAAc7C,KAAK+jF,aAO/C/jF,KAAK+jF,aAAanhF,UAAUg3B,MAAQ,WAEhC,MAAO,IAAImqD,cACPhkF,KAAKu9E,UACLv9E,KAAK0/E,UACL1/E,KAAKigF,UACLjgF,KAAK+iF,UACL/iF,KAAKy/E,UACLz/E,KAAKgvB,KACLhvB,KAAK2mD,QA2Cb1mD,KAAKmkF,SAOLnkF,KAAKmkF,MAAMC,YAAc,SAAS7/E,GAE9B,GAAI8/E,IAAO,EAEPp1D,EAAI1qB,EAAEtB,QAAU,CACpB,IAAO,EAAJgsB,EAAO,QAIV,KAAI,GAFAq1D,MACAC,KACIvhF,EAAI,EAAOisB,EAAJjsB,EAAOA,IAAKuhF,EAAIzgF,KAAKd,EAEpCA,GAAI,CAEJ,KADA,GAAIwhF,GAAKv1D,EACHu1D,EAAK,GACX,CACI,GAAIC,GAAKF,GAAKvhF,EAAE,GAAGwhF,GACfE,EAAKH,GAAKvhF,EAAE,GAAGwhF,GACfG,EAAKJ,GAAKvhF,EAAE,GAAGwhF,GAEfI,EAAKrgF,EAAE,EAAEkgF,GAAMI,EAAKtgF,EAAE,EAAEkgF,EAAG,GAC3BK,EAAKvgF,EAAE,EAAEmgF,GAAMK,EAAKxgF,EAAE,EAAEmgF,EAAG,GAC3Bj2E,EAAKlK,EAAE,EAAEogF,GAAMj2E,EAAKnK,EAAE,EAAEogF,EAAG,GAE3BK,GAAW,CACf,IAAGhlF,KAAKmkF,MAAMc,QAAQL,EAAIC,EAAIC,EAAIC,EAAIt2E,EAAIC,EAAI21E,GAC9C,CACIW,GAAW,CACX,KAAI,GAAInhF,GAAI,EAAO2gF,EAAJ3gF,EAAQA,IACvB,CACI,GAAIqhF,GAAKX,EAAI1gF,EACb,IAAGqhF,IAAOT,GAAMS,IAAOR,GAAMQ,IAAOP,GAEjC3kF,KAAKmkF,MAAMgB,iBAAiB5gF,EAAE,EAAE2gF,GAAK3gF,EAAE,EAAE2gF,EAAG,GAAIN,EAAIC,EAAIC,EAAIC,EAAIt2E,EAAIC,GAAK,CACxEs2E,GAAW,CACX,SAKZ,GAAGA,EAECV,EAAIxgF,KAAK2gF,EAAIC,EAAIC,GACjBJ,EAAI37E,QAAQ5F,EAAE,GAAGwhF,EAAI,GACrBA,IACAxhF,EAAI,MAEH,IAAGA,IAAM,EAAEwhF,EAChB,CAGI,IAAGH,EAcC,MAAO,KAVP,KAFAC,KACAC,KACIvhF,EAAI,EAAOisB,EAAJjsB,EAAOA,IAAKuhF,EAAIzgF,KAAKd,EAEhCA,GAAI,EACJwhF,EAAKv1D,EAELo1D,GAAO,GAWnB,MADAC,GAAIxgF,KAAKygF,EAAI,GAAIA,EAAI,GAAIA,EAAI,IACtBD,GAkBXtkF,KAAKmkF,MAAMgB,iBAAmB,SAAS1sD,EAAIg/B,EAAImtB,EAAIC,EAAIC,EAAIC,EAAIt2E,EAAIC,GAE/D,GAAI02E,GAAM32E,EAAGm2E,EACTS,EAAM32E,EAAGm2E,EACTS,EAAMR,EAAGF,EACTW,EAAMR,EAAGF,EACTW,EAAM/sD,EAAGmsD,EACTa,EAAMhuB,EAAGotB,EAETa,EAAQN,EAAIA,EAAIC,EAAIA,EACpBM,EAAQP,EAAIE,EAAID,EAAIE,EACpBK,EAAQR,EAAII,EAAIH,EAAII,EACpBI,EAAQP,EAAIA,EAAIC,EAAIA,EACpBO,EAAQR,EAAIE,EAAID,EAAIE,EAEpBM,EAAW,GAAKL,EAAQG,EAAQF,EAAQA,GACxC9qD,GAAKgrD,EAAQD,EAAQD,EAAQG,GAASC,EACtCvmC,GAAKkmC,EAAQI,EAAQH,EAAQC,GAASG,CAG1C,OAAQlrD,IAAK,GAAO2kB,GAAK,GAAe,EAAR3kB,EAAI2kB,GAUxCx/C,KAAKmkF,MAAMc,QAAU,SAASL,EAAIC,EAAIC,EAAIC,EAAIt2E,EAAIC,EAAI21E,GAElD,OAASQ,EAAGE,IAAKt2E,EAAGq2E,IAAOA,EAAGF,IAAKl2E,EAAGq2E,IAAO,IAAOV,GAsBxDrkF,KAAKgmF,UAELhmF,KAAKgmF,OAAO5B,YAAc,SAAUrzE,EAAMk1E,EAAaC,GAEnDA,EAAMA,GAAO,CAEb,IAAIC,GAAWF,GAAeA,EAAYhjF,OACtCmjF,EAAWD,EAAWF,EAAY,GAAKC,EAAMn1E,EAAK9N,OAClDojF,EAAYrmF,KAAKgmF,OAAOM,WAAWv1E,EAAM,EAAGq1E,EAAUF,GAAK,GAC3DK,IAEJ,KAAKF,EAAW,MAAOE,EAEvB,IAAIl8E,GAAME,EAAMC,EAAMC,EAAMrF,EAAGC,EAAGic,CAKlC,IAHI6kE,IAAUE,EAAYrmF,KAAKgmF,OAAOQ,eAAez1E,EAAMk1E,EAAaI,EAAWH,IAG/En1E,EAAK9N,OAAS,GAAKijF,EAAK,CACxB77E,EAAOG,EAAOuG,EAAK,GACnBxG,EAAOE,EAAOsG,EAAK,EAEnB,KAAK,GAAI/N,GAAIkjF,EAASE,EAAJpjF,EAAcA,GAAKkjF,EACjC9gF,EAAI2L,EAAK/N,GACTqC,EAAI0L,EAAK/N,EAAI,GACLqH,EAAJjF,IAAUiF,EAAOjF,GACbmF,EAAJlF,IAAUkF,EAAOlF,GACjBD,EAAIoF,IAAMA,EAAOpF,GACjBC,EAAIoF,IAAMA,EAAOpF,EAIzBic,GAAO1gB,KAAK+G,IAAI6C,EAAOH,EAAMI,EAAOF,GAKxC,MAFAvK,MAAKgmF,OAAOS,aAAaJ,EAAWE,EAAWL,EAAK77E,EAAME,EAAM+W,GAEzDilE,GAKXvmF,KAAKgmF,OAAOM,WAAa,SAAUv1E,EAAM3F,EAAOtB,EAAKo8E,EAAKQ,GACtD,GACI1jF,GAAGa,EAAG+zB,EADN+uD,EAAM,CAIV,KAAK3jF,EAAIoI,EAAOvH,EAAIiG,EAAMo8E,EAASp8E,EAAJ9G,EAASA,GAAKkjF,EACzCS,IAAQ51E,EAAKlN,GAAKkN,EAAK/N,KAAO+N,EAAK/N,EAAI,GAAK+N,EAAKlN,EAAI,IACrDA,EAAIb,CAIR,IAAI0jF,IAAeC,EAAM,EACrB,IAAK3jF,EAAIoI,EAAWtB,EAAJ9G,EAASA,GAAKkjF,EAAKtuD,EAAO53B,KAAKgmF,OAAOY,WAAW5jF,EAAG+N,EAAK/N,GAAI+N,EAAK/N,EAAI,GAAI40B,OAE1F,KAAK50B,EAAI8G,EAAMo8E,EAAKljF,GAAKoI,EAAOpI,GAAKkjF,EAAKtuD,EAAO53B,KAAKgmF,OAAOY,WAAW5jF,EAAG+N,EAAK/N,GAAI+N,EAAK/N,EAAI,GAAI40B,EAGrG,OAAOA,IAKX53B,KAAKgmF,OAAOa,aAAe,SAAUz7E,EAAOtB,GACxC,IAAKsB,EAAO,MAAOA,EACdtB,KAAKA,EAAMsB,EAEhB,IACI07E,GADAviF,EAAI6G,CAER,GAGI,IAFA07E,GAAQ,EAEHviF,EAAEwiF,UAAY/mF,KAAKgmF,OAAOnqD,OAAOt3B,EAAGA,EAAEozC,OAAiD,IAAxC33C,KAAKgmF,OAAO7jD,KAAK59B,EAAE00E,KAAM10E,EAAGA,EAAEozC,MAO9EpzC,EAAIA,EAAEozC,SAPsF,CAG5F,GAFA33C,KAAKgmF,OAAOgB,WAAWziF,GACvBA,EAAIuF,EAAMvF,EAAE00E,KACR10E,IAAMA,EAAEozC,KAAM,MAAO,KACzBmvC,IAAQ,QAKPA,GAASviF,IAAMuF,EAExB,OAAOA,IAKX9J,KAAKgmF,OAAOS,aAAe,SAAUQ,EAAKV,EAAWL,EAAK77E,EAAME,EAAM+W,EAAM4lE,GACxE,GAAKD,EAAL,EAGKC,GAAQ5lE,GAAMthB,KAAKgmF,OAAOmB,WAAWF,EAAK58E,EAAME,EAAM+W,EAM3D,KAJA,GACI23D,GAAMthC,EADN3sC,EAAOi8E,EAIJA,EAAIhO,OAASgO,EAAItvC,MAIpB,GAHAshC,EAAOgO,EAAIhO,KACXthC,EAAOsvC,EAAItvC,KAEPr2B,EAAOthB,KAAKgmF,OAAOoB,YAAYH,EAAK58E,EAAME,EAAM+W,GAAQthB,KAAKgmF,OAAOqB,MAAMJ,GAE1EV,EAAUziF,KAAKm1E,EAAKj2E,EAAIkjF,GACxBK,EAAUziF,KAAKmjF,EAAIjkF,EAAIkjF,GACvBK,EAAUziF,KAAK6zC,EAAK30C,EAAIkjF,GAExBlmF,KAAKgmF,OAAOgB,WAAWC,GAGvBA,EAAMtvC,EAAKA,KACX3sC,EAAO2sC,EAAKA,SAQhB,IAHAsvC,EAAMtvC,EAGFsvC,IAAQj8E,EAAM,CAETk8E,EAIe,IAATA,GACPD,EAAMjnF,KAAKgmF,OAAOsB,uBAAuBL,EAAKV,EAAWL,GACzDlmF,KAAKgmF,OAAOS,aAAaQ,EAAKV,EAAWL,EAAK77E,EAAME,EAAM+W,EAAM,IAGhD,IAAT4lE,GACPlnF,KAAKgmF,OAAOuB,YAAYN,EAAKV,EAAWL,EAAK77E,EAAME,EAAM+W,GATzDthB,KAAKgmF,OAAOS,aAAazmF,KAAKgmF,OAAOa,aAAaI,GAAMV,EAAWL,EAAK77E,EAAME,EAAM+W,EAAM,EAY9F,UAOZthB,KAAKgmF,OAAOqB,MAAQ,SAAUJ,GAC1B,GAAIxiF,GAAIwiF,EAAIhO,KACRv0E,EAAIuiF,EACJtiF,EAAIsiF,EAAItvC,IAEZ,IAAI33C,KAAKgmF,OAAO7jD,KAAK19B,EAAGC,EAAGC,IAAM,EAAG,OAAO,CAK3C,KAFA,GAAIJ,GAAI0iF,EAAItvC,KAAKA,KAEVpzC,IAAM0iF,EAAIhO,MAAM,CACnB,GAAIj5E,KAAKgmF,OAAOwB,gBAAgB/iF,EAAEW,EAAGX,EAAEY,EAAGX,EAAEU,EAAGV,EAAEW,EAAGV,EAAES,EAAGT,EAAEU,EAAGd,EAAEa,EAAGb,EAAEc,IACjErF,KAAKgmF,OAAO7jD,KAAK59B,EAAE00E,KAAM10E,EAAGA,EAAEozC,OAAS,EAAG,OAAO,CACrDpzC,GAAIA,EAAEozC,KAGV,OAAO,GAGX33C,KAAKgmF,OAAOoB,YAAc,SAAUH,EAAK58E,EAAME,EAAM+W,GACjD,GAAI7c,GAAIwiF,EAAIhO,KACRv0E,EAAIuiF,EACJtiF,EAAIsiF,EAAItvC,IAEZ,IAAI33C,KAAKgmF,OAAO7jD,KAAK19B,EAAGC,EAAGC,IAAM,EAAG,OAAO,CAe3C,KAZA,GAAI8iF,GAAQhjF,EAAEW,EAAIV,EAAEU,EAAKX,EAAEW,EAAIT,EAAES,EAAIX,EAAEW,EAAIT,EAAES,EAAMV,EAAEU,EAAIT,EAAES,EAAIV,EAAEU,EAAIT,EAAES,EACnEsiF,EAAQjjF,EAAEY,EAAIX,EAAEW,EAAKZ,EAAEY,EAAIV,EAAEU,EAAIZ,EAAEY,EAAIV,EAAEU,EAAMX,EAAEW,EAAIV,EAAEU,EAAIX,EAAEW,EAAIV,EAAEU,EACnEsiF,EAAQljF,EAAEW,EAAIV,EAAEU,EAAKX,EAAEW,EAAIT,EAAES,EAAIX,EAAEW,EAAIT,EAAES,EAAMV,EAAEU,EAAIT,EAAES,EAAIV,EAAEU,EAAIT,EAAES,EACnEwiF,EAAQnjF,EAAEY,EAAIX,EAAEW,EAAKZ,EAAEY,EAAIV,EAAEU,EAAIZ,EAAEY,EAAIV,EAAEU,EAAMX,EAAEW,EAAIV,EAAEU,EAAIX,EAAEW,EAAIV,EAAEU,EAGnEwiF,EAAO7nF,KAAKgmF,OAAO8B,OAAOL,EAAOC,EAAOr9E,EAAME,EAAM+W,GACpDymE,EAAO/nF,KAAKgmF,OAAO8B,OAAOH,EAAOC,EAAOv9E,EAAME,EAAM+W,GAGpD/c,EAAI0iF,EAAIe,MAELzjF,GAAKA,EAAEmT,GAAKqwE,GAAM,CACrB,GAAIxjF,IAAM0iF,EAAIhO,MAAQ10E,IAAM0iF,EAAItvC,MAC5B33C,KAAKgmF,OAAOwB,gBAAgB/iF,EAAEW,EAAGX,EAAEY,EAAGX,EAAEU,EAAGV,EAAEW,EAAGV,EAAES,EAAGT,EAAEU,EAAGd,EAAEa,EAAGb,EAAEc,IACjErF,KAAKgmF,OAAO7jD,KAAK59B,EAAE00E,KAAM10E,EAAGA,EAAEozC,OAAS,EAAG,OAAO,CACrDpzC,GAAIA,EAAEyjF,MAMV,IAFAzjF,EAAI0iF,EAAIgB,MAED1jF,GAAKA,EAAEmT,GAAKmwE,GAAM,CACrB,GAAItjF,IAAM0iF,EAAIhO,MAAQ10E,IAAM0iF,EAAItvC,MAC5B33C,KAAKgmF,OAAOwB,gBAAgB/iF,EAAEW,EAAGX,EAAEY,EAAGX,EAAEU,EAAGV,EAAEW,EAAGV,EAAES,EAAGT,EAAEU,EAAGd,EAAEa,EAAGb,EAAEc,IACjErF,KAAKgmF,OAAO7jD,KAAK59B,EAAE00E,KAAM10E,EAAGA,EAAEozC,OAAS,EAAG,OAAO,CACrDpzC,GAAIA,EAAE0jF,MAGV,OAAO,GAKXjoF,KAAKgmF,OAAOsB,uBAAyB,SAAUl8E,EAAOm7E,EAAWL,GAC7D,GAAI3hF,GAAI6G,CACR,GAAG,CACC,GAAI3G,GAAIF,EAAE00E,KACNv0E,EAAIH,EAAEozC,KAAKA,IAGX33C,MAAKgmF,OAAOlqD,WAAWr3B,EAAGF,EAAGA,EAAEozC,KAAMjzC,IAAM1E,KAAKgmF,OAAOkC,cAAczjF,EAAGC,IAAM1E,KAAKgmF,OAAOkC,cAAcxjF,EAAGD,KAE3G8hF,EAAUziF,KAAKW,EAAEzB,EAAIkjF,GACrBK,EAAUziF,KAAKS,EAAEvB,EAAIkjF,GACrBK,EAAUziF,KAAKY,EAAE1B,EAAIkjF,GAGrBlmF,KAAKgmF,OAAOgB,WAAWziF,GACvBvE,KAAKgmF,OAAOgB,WAAWziF,EAAEozC,MAEzBpzC,EAAI6G,EAAQ1G,GAEhBH,EAAIA,EAAEozC,WACDpzC,IAAM6G,EAEf,OAAO7G,IAKXvE,KAAKgmF,OAAOuB,YAAc,SAAUn8E,EAAOm7E,EAAWL,EAAK77E,EAAME,EAAM+W,GAEnE,GAAI7c,GAAI2G,CACR,GAAG,CAEC,IADA,GAAI1G,GAAID,EAAEkzC,KAAKA,KACRjzC,IAAMD,EAAEw0E,MAAM,CACjB,GAAIx0E,EAAEzB,IAAM0B,EAAE1B,GAAKhD,KAAKgmF,OAAOmC,gBAAgB1jF,EAAGC,GAAI,CAElD,GAAIC,GAAI3E,KAAKgmF,OAAOoC,aAAa3jF,EAAGC,EASpC,OANAD,GAAIzE,KAAKgmF,OAAOa,aAAapiF,EAAGA,EAAEkzC,MAClChzC,EAAI3E,KAAKgmF,OAAOa,aAAaliF,EAAGA,EAAEgzC,MAGlC33C,KAAKgmF,OAAOS,aAAahiF,EAAG8hF,EAAWL,EAAK77E,EAAME,EAAM+W,OACxDthB,MAAKgmF,OAAOS,aAAa9hF,EAAG4hF,EAAWL,EAAK77E,EAAME,EAAM+W,GAG5D5c,EAAIA,EAAEizC,KAEVlzC,EAAIA,EAAEkzC,WACDlzC,IAAM2G,IAKnBpL,KAAKgmF,OAAOQ,eAAiB,SAAUz1E,EAAMk1E,EAAaI,EAAWH,GACjE,GACIljF,GAAGk0B,EAAK9rB,EAAOtB,EAAKu+E,EADpBC,IAGJ,KAAKtlF,EAAI,EAAGk0B,EAAM+uD,EAAYhjF,OAAYi0B,EAAJl0B,EAASA,IAC3CoI,EAAQ66E,EAAYjjF,GAAKkjF,EACzBp8E,EAAUotB,EAAM,EAAVl0B,EAAcijF,EAAYjjF,EAAI,GAAKkjF,EAAMn1E,EAAK9N,OACpDolF,EAAOroF,KAAKgmF,OAAOM,WAAWv1E,EAAM3F,EAAOtB,EAAKo8E,GAAK,GACjDmC,IAASA,EAAK1wC,OAAM0wC,EAAKtB,SAAU,GACvCuB,EAAMxkF,KAAK9D,KAAKgmF,OAAOuC,YAAYF,GAMvC,KAHAC,EAAMjuC,KAAKmuC,UAGNxlF,EAAI,EAAGA,EAAIslF,EAAMrlF,OAAQD,IAC1BhD,KAAKgmF,OAAOyC,cAAcH,EAAMtlF,GAAIqjF,GACpCA,EAAYrmF,KAAKgmF,OAAOa,aAAaR,EAAWA,EAAU1uC,KAG9D,OAAO0uC,IAGXrmF,KAAKgmF,OAAOwC,SAAW,SAAU/jF,EAAGC,GAChC,MAAOD,GAAEW,EAAIV,EAAEU,GAKnBpF,KAAKgmF,OAAOyC,cAAgB,SAAUC,EAAMrC,GAExC,GADAA,EAAYrmF,KAAKgmF,OAAO2C,eAAeD,EAAMrC,GAC9B,CACX,GAAI3hF,GAAI1E,KAAKgmF,OAAOoC,aAAa/B,EAAWqC,EAC5C1oF,MAAKgmF,OAAOa,aAAaniF,EAAGA,EAAEizC,QAMtC33C,KAAKgmF,OAAO2C,eAAiB,SAAUD,EAAMrC,GACzC,GAIIplD,GAJA18B,EAAI8hF,EACJuC,EAAKF,EAAKtjF,EACVyjF,EAAKH,EAAKrjF,EACVu8E,IAAMt3E,EAAAA,EAKV,GAAG,CACC,GAAIu+E,GAAMtkF,EAAEc,GAAKwjF,GAAMtkF,EAAEozC,KAAKtyC,EAAG,CAC7B,GAAID,GAAIb,EAAEa,GAAKyjF,EAAKtkF,EAAEc,IAAMd,EAAEozC,KAAKvyC,EAAIb,EAAEa,IAAMb,EAAEozC,KAAKtyC,EAAId,EAAEc,EACnDujF,IAALxjF,GAAWA,EAAIw8E,IACfA,EAAKx8E,EACL67B,EAAI18B,EAAEa,EAAIb,EAAEozC,KAAKvyC,EAAIb,EAAIA,EAAEozC,MAGnCpzC,EAAIA,EAAEozC,WACDpzC,IAAM8hF,EAEf,KAAKplD,EAAG,MAAO,KAEf,IAAIynD,EAAKtjF,IAAM67B,EAAE77B,EAAG,MAAO67B,GAAEg4C,IAM7B,IAEI6P,GAFA99E,EAAOi2B,EACP8nD,EAASz+E,EAAAA,CAKb,KAFA/F,EAAI08B,EAAE0W,KAECpzC,IAAMyG,GACL49E,GAAMrkF,EAAEa,GAAKb,EAAEa,GAAK67B,EAAE77B,GACtBpF,KAAKgmF,OAAOwB,gBAAgBqB,EAAK5nD,EAAE57B,EAAIujF,EAAKhH,EAAIiH,EAAI5nD,EAAE77B,EAAG67B,EAAE57B,EAAGwjF,EAAK5nD,EAAE57B,EAAIu8E,EAAKgH,EAAIC,EAAItkF,EAAEa,EAAGb,EAAEc,KAE7FyjF,EAAMloF,KAAKq7B,IAAI4sD,EAAKtkF,EAAEc,IAAMujF,EAAKrkF,EAAEa,IAExB2jF,EAAND,GAAiBA,IAAQC,GAAUxkF,EAAEa,EAAI67B,EAAE77B,IAAOpF,KAAKgmF,OAAOkC,cAAc3jF,EAAGmkF,KAChFznD,EAAI18B,EACJwkF,EAASD,IAIjBvkF,EAAIA,EAAEozC,IAGV,OAAO1W,IAKXjhC,KAAKgmF,OAAOmB,WAAa,SAAU/7E,EAAOf,EAAME,EAAM+W,GAClD,GAAI/c,GAAI6G,CACR,GACgB,QAAR7G,EAAEmT,IAAYnT,EAAEmT,EAAI1X,KAAKgmF,OAAO8B,OAAOvjF,EAAEa,EAAGb,EAAEc,EAAGgF,EAAME,EAAM+W,IACjE/c,EAAE0jF,MAAQ1jF,EAAE00E,KACZ10E,EAAEyjF,MAAQzjF,EAAEozC,KACZpzC,EAAIA,EAAEozC,WACDpzC,IAAM6G,EAEf7G,GAAE0jF,MAAMD,MAAQ,KAChBzjF,EAAE0jF,MAAQ,KAEVjoF,KAAKgmF,OAAOgD,WAAWzkF,IAM3BvE,KAAKgmF,OAAOgD,WAAa,SAAUX,GAC/B,GAAIrlF,GAAGuB,EAAG0kF,EAAG3vD,EAAG4vD,EAAMC,EAAWC,EAAOC,EACpCC,EAAS,CAEb,GAAG,CAMC,IALA/kF,EAAI8jF,EACJA,EAAO,KACPa,EAAO,KACPC,EAAY,EAEL5kF,GAAG,CAIN,IAHA4kF,IACAF,EAAI1kF,EACJ6kF,EAAQ,EACHpmF,EAAI,EAAOsmF,EAAJtmF,IACRomF,IACAH,EAAIA,EAAEjB,MACDiB,GAHejmF,KAQxB,IAFAqmF,EAAQC,EAEDF,EAAQ,GAAMC,EAAQ,GAAKJ,GAEhB,IAAVG,GACA9vD,EAAI2vD,EACJA,EAAIA,EAAEjB,MACNqB,KACiB,IAAVA,GAAgBJ,EAIhB1kF,EAAEmT,GAAKuxE,EAAEvxE,GAChB4hB,EAAI/0B,EACJA,EAAIA,EAAEyjF,MACNoB,MAEA9vD,EAAI2vD,EACJA,EAAIA,EAAEjB,MACNqB,MAVA/vD,EAAI/0B,EACJA,EAAIA,EAAEyjF,MACNoB,KAWAF,EAAMA,EAAKlB,MAAQ1uD,EAClB+uD,EAAO/uD,EAEZA,EAAE2uD,MAAQiB,EACVA,EAAO5vD,CAGX/0B,GAAI0kF,EAGRC,EAAKlB,MAAQ,KACbsB,GAAU,QAELH,EAAY,EAErB,OAAOd,IAKXroF,KAAKgmF,OAAO8B,OAAS,SAAU1iF,EAAGC,EAAGgF,EAAME,EAAM+W,GAe7C,MAbAlc,GAAI,OAASA,EAAIiF,GAAQiX,EACzBjc,EAAI,OAASA,EAAIkF,GAAQ+W,EAEzBlc,EAAqB,UAAhBA,EAAKA,GAAK,GACfA,EAAqB,WAAhBA,EAAKA,GAAK,GACfA,EAAqB,WAAhBA,EAAKA,GAAK,GACfA,EAAqB,YAAhBA,EAAKA,GAAK,GAEfC,EAAqB,UAAhBA,EAAKA,GAAK,GACfA,EAAqB,WAAhBA,EAAKA,GAAK,GACfA,EAAqB,WAAhBA,EAAKA,GAAK,GACfA,EAAqB,YAAhBA,EAAKA,GAAK,GAERD,EAAKC,GAAK,GAKrBrF,KAAKgmF,OAAOuC,YAAc,SAAUn9E,GAChC,GAAI7G,GAAI6G,EACJm+E,EAAWn+E,CACf,GACQ7G,GAAEa,EAAImkF,EAASnkF,IAAGmkF,EAAWhlF,GACjCA,EAAIA,EAAEozC,WACDpzC,IAAM6G,EAEf,OAAOm+E,IAKXvpF,KAAKgmF,OAAOwB,gBAAkB,SAAU5C,EAAIC,EAAIC,EAAIC,EAAIt2E,EAAIC,EAAI+pB,EAAIg/B,GAChE,OAAQhpD,EAAKgqB,IAAOosD,EAAKptB,IAAOmtB,EAAKnsD,IAAO/pB,EAAK+oD,IAAO,IACnDmtB,EAAKnsD,IAAOssD,EAAKttB,IAAOqtB,EAAKrsD,IAAOosD,EAAKptB,IAAO,IAChDqtB,EAAKrsD,IAAO/pB,EAAK+oD,IAAOhpD,EAAKgqB,IAAOssD,EAAKttB,IAAO,GAKzDz3D,KAAKgmF,OAAOmC,gBAAkB,SAAU1jF,EAAGC,GACvC,MAAO1E,MAAKgmF,OAAOnqD,OAAOp3B,EAAGC,IAAMD,EAAEkzC,KAAK30C,IAAM0B,EAAE1B,GAAKyB,EAAEw0E,KAAKj2E,IAAM0B,EAAE1B,IAAMhD,KAAKgmF,OAAOwD,kBAAkB/kF,EAAGC,IACzG1E,KAAKgmF,OAAOkC,cAAczjF,EAAGC,IAAM1E,KAAKgmF,OAAOkC,cAAcxjF,EAAGD,IAAMzE,KAAKgmF,OAAOyD,aAAahlF,EAAGC,IAK1G1E,KAAKgmF,OAAO7jD,KAAO,SAAU59B,EAAG0kF,EAAGhuE,GAC/B,OAAQguE,EAAE5jF,EAAId,EAAEc,IAAM4V,EAAE7V,EAAI6jF,EAAE7jF,IAAM6jF,EAAE7jF,EAAIb,EAAEa,IAAM6V,EAAE5V,EAAI4jF,EAAE5jF,IAK9DrF,KAAKgmF,OAAOnqD,OAAS,SAAUmH,EAAIC,GAC/B,MAAOD,GAAG59B,IAAM69B,EAAG79B,GAAK49B,EAAG39B,IAAM49B,EAAG59B,GAKxCrF,KAAKgmF,OAAOlqD,WAAa,SAAUkH,EAAI0mD,EAAIzmD,EAAI0mD,GAC3C,MAAO3pF,MAAKgmF,OAAO7jD,KAAKa,EAAI0mD,EAAIzmD,GAAM,GAAMjjC,KAAKgmF,OAAO7jD,KAAKa,EAAI0mD,EAAIC,GAAM,GACvE3pF,KAAKgmF,OAAO7jD,KAAKc,EAAI0mD,EAAI3mD,GAAM,GAAMhjC,KAAKgmF,OAAO7jD,KAAKc,EAAI0mD,EAAID,GAAM,GAK5E1pF,KAAKgmF,OAAOwD,kBAAoB,SAAU/kF,EAAGC,GACzC,GAAIH,GAAIE,CACR,GAAG,CACC,GAAIF,EAAEvB,IAAMyB,EAAEzB,GAAKuB,EAAEozC,KAAK30C,IAAMyB,EAAEzB,GAAKuB,EAAEvB,IAAM0B,EAAE1B,GAAKuB,EAAEozC,KAAK30C,IAAM0B,EAAE1B,GACjEhD,KAAKgmF,OAAOlqD,WAAWv3B,EAAGA,EAAEozC,KAAMlzC,EAAGC,GAAI,OAAO,CACpDH,GAAIA,EAAEozC,WACDpzC,IAAME,EAEf,QAAO,GAKXzE,KAAKgmF,OAAOkC,cAAgB,SAAUzjF,EAAGC,GACrC,MAAO1E,MAAKgmF,OAAO7jD,KAAK19B,EAAEw0E,KAAMx0E,EAAGA,EAAEkzC,MAAQ,EACzC33C,KAAKgmF,OAAO7jD,KAAK19B,EAAGC,EAAGD,EAAEkzC,OAAS,GAAK33C,KAAKgmF,OAAO7jD,KAAK19B,EAAGA,EAAEw0E,KAAMv0E,IAAM,EACzE1E,KAAKgmF,OAAO7jD,KAAK19B,EAAGC,EAAGD,EAAEw0E,MAAQ,GAAKj5E,KAAKgmF,OAAO7jD,KAAK19B,EAAGA,EAAEkzC,KAAMjzC,GAAK,GAK/E1E,KAAKgmF,OAAOyD,aAAe,SAAUhlF,EAAGC,GACpC,GAAIH,GAAIE,EACJ+9B,GAAS,EACT/J,GAAMh0B,EAAEW,EAAIV,EAAEU,GAAK,EACnBqyD,GAAMhzD,EAAEY,EAAIX,EAAEW,GAAK,CACvB,GACUd,GAAEc,EAAIoyD,GAASlzD,EAAEozC,KAAKtyC,EAAIoyD,GAASh/B,GAAMl0B,EAAEozC,KAAKvyC,EAAIb,EAAEa,IAAMqyD,EAAKlzD,EAAEc,IAAMd,EAAEozC,KAAKtyC,EAAId,EAAEc,GAAKd,EAAEa,IAC/Fo9B,GAAUA,GACdj+B,EAAIA,EAAEozC,WACDpzC,IAAME,EAEf,OAAO+9B,IAMXxiC,KAAKgmF,OAAOoC,aAAe,SAAU3jF,EAAGC,GACpC,GAAIo6B,GAAK,GAAI9+B,MAAKgmF,OAAO4D,KAAKnlF,EAAEzB,EAAGyB,EAAEW,EAAGX,EAAEY,GACtC25B,EAAK,GAAIh/B,MAAKgmF,OAAO4D,KAAKllF,EAAE1B,EAAG0B,EAAEU,EAAGV,EAAEW,GACtCwkF,EAAKplF,EAAEkzC,KACPmyC,EAAKplF,EAAEu0E,IAcX,OAZAx0E,GAAEkzC,KAAOjzC,EACTA,EAAEu0E,KAAOx0E,EAETq6B,EAAG6Y,KAAOkyC,EACVA,EAAG5Q,KAAOn6C,EAEVE,EAAG2Y,KAAO7Y,EACVA,EAAGm6C,KAAOj6C,EAEV8qD,EAAGnyC,KAAO3Y,EACVA,EAAGi6C,KAAO6Q,EAEH9qD,GAKXh/B,KAAKgmF,OAAOY,WAAa,SAAU5jF,EAAGoC,EAAGC,EAAGuyB,GACxC,GAAIrzB,GAAI,GAAIvE,MAAKgmF,OAAO4D,KAAK5mF,EAAGoC,EAAGC,EAYnC,OAVKuyB,IAKDrzB,EAAEozC,KAAO/f,EAAK+f,KACdpzC,EAAE00E,KAAOrhD,EACTA,EAAK+f,KAAKshC,KAAO10E,EACjBqzB,EAAK+f,KAAOpzC,IAPZA,EAAE00E,KAAO10E,EACTA,EAAEozC,KAAOpzC,GAQNA,GAGXvE,KAAKgmF,OAAOgB,WAAa,SAAUziF,GAC/BA,EAAEozC,KAAKshC,KAAO10E,EAAE00E,KAChB10E,EAAE00E,KAAKthC,KAAOpzC,EAAEozC,KAEZpzC,EAAE0jF,QAAO1jF,EAAE0jF,MAAMD,MAAQzjF,EAAEyjF,OAC3BzjF,EAAEyjF,QAAOzjF,EAAEyjF,MAAMC,MAAQ1jF,EAAE0jF,QAGnCjoF,KAAKgmF,OAAO4D,KAAO,SAAU5mF,EAAGoC,EAAGC,GAE/BtF,KAAKiD,EAAIA,EAGTjD,KAAKqF,EAAIA,EACTrF,KAAKsF,EAAIA,EAGTtF,KAAKk5E,KAAO,KACZl5E,KAAK43C,KAAO,KAGZ53C,KAAK2X,EAAI,KAGT3X,KAAKkoF,MAAQ,KACbloF,KAAKioF,MAAQ,KAGbjoF,KAAKgnF,SAAU,GAcnB/mF,KAAK6d,cAAgB,aASrB7d,KAAK6d,cAAcksE,mBAAqB,EAWxC/pF,KAAK6d,cAAcw+D,eAAiB,SAASh+D,EAAUhX,GAEnD,GAIIiX,GAJA/W,EAAKF,EAAcE,GACnBiS,EAAanS,EAAcmS,WAC3BC,EAASpS,EAAcoS,OACvB7N,EAASvE,EAAcoI,cAAc6Q,eAGtCjC,GAASrK,OAERhU,KAAK6d,cAAcC,eAAeO,EAAU9W,EAOhD,KAAK,GAJDo4C,GAAQthC,EAASN,OAAOxW,EAAGyO,IAItBhT,EAAI,EAAGA,EAAI28C,EAAM5uC,KAAK9N,OAAQD,IAET,IAAvB28C,EAAM5uC,KAAK/N,GAAGic,MAEbX,EAAYqhC,EAAM5uC,KAAK/N,GAEvBqE,EAAcyS,eAAekE,YAAYK,EAAUC,EAAWjX,GAG9DE,EAAG2X,aAAa3X,EAAG4X,aAAc,EAAG5X,EAAG8X,eAAmD,GAAjCf,EAAUc,QAAQnc,OAAS,IAEpFoE,EAAcyS,eAAemE,WAAWI,EAAUC,EAAWjX,KAI7DiX,EAAYqhC,EAAM5uC,KAAK/N,GAGvBqE,EAAcoI,cAAcC,UAAW9D,GACvCA,EAASvE,EAAcoI,cAAc6Q,gBACrC/Y,EAAGmO,iBAAiB9J,EAAO0M,mBAAmB,EAAO+F,EAASvc,eAAe+d,SAAQ,IAErFtY,EAAGqY,UAAUhU,EAAOkL,MAAO,GAE3BvP,EAAGuY,UAAUlU,EAAO2I,iBAAkBiF,EAAWpU,GAAIoU,EAAWnU,GAChEkC,EAAGuY,UAAUlU,EAAO4I,cAAeiF,EAAOrU,GAAIqU,EAAOpU,GAErDkC,EAAGwY,WAAWnU,EAAO6M,UAAWzY,KAAK+P,QAAQsO,EAAS5S,OAEtDlE,EAAGqY,UAAUhU,EAAOrK,MAAO8c,EAASxc,YAGpC0F,EAAGyY,WAAWzY,EAAG0Y,aAAc3B,EAAU7C,QAEzClU,EAAG2Y,oBAAoBtU,EAAO8I,gBAAiB,EAAGnN,EAAG4Y,OAAO,EAAO,GAAO,GAC1E5Y,EAAG2Y,oBAAoBtU,EAAOiJ,eAAgB,EAAGtN,EAAG4Y,OAAO,EAAM,GAAO,GAGxE5Y,EAAGyY,WAAWzY,EAAG6Y,qBAAsB9B,EAAU+B,aACjD9Y,EAAG2X,aAAa3X,EAAGkY,eAAiBnB,EAAUc,QAAQnc,OAAQsE,EAAG8X,eAAgB,KAc7Frf,KAAK6d,cAAcC,eAAiB,SAASO,EAAU9W,GAGnD,GAAIo4C,GAAQthC,EAASN,OAAOxW,EAAGyO,GAE3B2pC,KAAMA,EAAQthC,EAASN,OAAOxW,EAAGyO,KAAOg0E,UAAU,EAAGj5E,QAASxJ,GAAGA,IAGrE8W,EAASrK,OAAQ,CAEjB,IAAIhR,EAGJ,IAAGqb,EAAS+kE,WACZ,CAII,IAHA/kE,EAAS+kE,YAAa,EAGjBpgF,EAAI,EAAGA,EAAI28C,EAAM5uC,KAAK9N,OAAQD,IACnC,CACI,GAAIyjD,GAAe9G,EAAM5uC,KAAK/N,EAC9ByjD,GAAa5d,QACb7oC,KAAK6d,cAAcosE,iBAAiBnmF,KAAM2iD,GAI9C9G,EAAM5uC,QACN4uC,EAAMqqC,UAAY,EAGtB,GAAI1rE,EAKJ,KAAKtb,EAAI28C,EAAMqqC,UAAWhnF,EAAIqb,EAASooC,aAAaxjD,OAAQD,IAC5D,CACI,GAAI+N,GAAOsN,EAASooC,aAAazjD,EAEjC,IAAG+N,EAAKoE,OAASnV,KAAK0mC,SAASs9C,KAC/B,CAaI,GAXAjzE,EAAKse,OAASte,EAAK21C,MAAMr3B,OAAO+G,QAC7BrlB,EAAK21C,MAAMrkB,SAGPtxB,EAAKse,OAAO,KAAOte,EAAKse,OAAOte,EAAKse,OAAOpsB,OAAO,IAAM8N,EAAKse,OAAO,KAAOte,EAAKse,OAAOte,EAAKse,OAAOpsB,OAAO,KAEzG8N,EAAKse,OAAOvrB,KAAKiN,EAAKse,OAAO,GAAIte,EAAKse,OAAO,IAKlDte,EAAKge,MAEDhe,EAAKse,OAAOpsB,QAAUjD,KAAK6d,cAAcksE,mBAExC,GAAGh5E,EAAKse,OAAOpsB,OAAiD,EAAxCjD,KAAK6d,cAAcksE,mBAC3C,CACIzrE,EAAYte,KAAK6d,cAAcqsE,WAAWvqC,EAAO,EAEjD,IAAIwqC,GAAqBnqF,KAAK6d,cAAcusE,UAAUr5E,EAAMuN,EAGxD6rE,KAGA7rE,EAAYte,KAAK6d,cAAcqsE,WAAWvqC,EAAO,GACjD3/C,KAAK6d,cAAcwsE,iBAAiBt5E,EAAMuN,QAM9CA,GAAYte,KAAK6d,cAAcqsE,WAAWvqC,EAAO,GACjD3/C,KAAK6d,cAAcwsE,iBAAiBt5E,EAAMuN,EAKnDvN,GAAKusE,UAAY,IAEhBh/D,EAAYte,KAAK6d,cAAcqsE,WAAWvqC,EAAO,GACjD3/C,KAAK6d,cAAcysE,UAAUv5E,EAAMuN,QAMvCA,GAAYte,KAAK6d,cAAcqsE,WAAWvqC,EAAO,GAE9C5uC,EAAKoE,OAASnV,KAAK0mC,SAAS+8C,KAE3BzjF,KAAK6d,cAAc0sE,eAAex5E,EAAMuN,GAEpCvN,EAAKoE,OAASnV,KAAK0mC,SAASi9C,MAAQ5yE,EAAKoE,OAASnV,KAAK0mC,SAASk9C,KAEpE5jF,KAAK6d,cAAc2sE,YAAYz5E,EAAMuN,GAEjCvN,EAAKoE,OAASnV,KAAK0mC,SAASg9C,MAEhC1jF,KAAK6d,cAAc4sE,sBAAsB15E,EAAMuN,EAIvDqhC,GAAMqqC,YAIV,IAAKhnF,EAAI,EAAGA,EAAI28C,EAAM5uC,KAAK9N,OAAQD,IAE/Bsb,EAAYqhC,EAAM5uC,KAAK/N,GACpBsb,EAAUtK,OAAMsK,EAAUosE,UAWrC1qF,KAAK6d,cAAcqsE,WAAa,SAASvqC,EAAOxqC,GAE5C,GAAImJ,EAsBJ,OApBIqhC,GAAM5uC,KAAK9N,QAQXqb,EAAYqhC,EAAM5uC,KAAK4uC,EAAM5uC,KAAK9N,OAAO,IAEtCqb,EAAUW,OAAS9J,GAAiB,IAATA,KAE1BmJ,EAAYte,KAAK6d,cAAcosE,iBAAiB1pE,OAAS,GAAIvgB,MAAK2qF,kBAAkBhrC,EAAMp4C,IAC1F+W,EAAUW,KAAO9J,EACjBwqC,EAAM5uC,KAAKjN,KAAKwa,MAZpBA,EAAYte,KAAK6d,cAAcosE,iBAAiB1pE,OAAS,GAAIvgB,MAAK2qF,kBAAkBhrC,EAAMp4C,IAC1F+W,EAAUW,KAAO9J,EACjBwqC,EAAM5uC,KAAKjN,KAAKwa,IAcpBA,EAAUtK,OAAQ,EAEXsK,GAYXte,KAAK6d,cAAc0sE,eAAiB,SAAS9jC,EAAcnoC,GAKvD,GAAIssE,GAAWnkC,EAAaC,MACxBthD,EAAIwlF,EAASxlF,EACbC,EAAIulF,EAASvlF,EACbqB,EAAQkkF,EAASlkF,MACjBC,EAASikF,EAASjkF,MAEtB,IAAG8/C,EAAa13B,KAChB,CACI,GAAIpW,GAAQ3Y,KAAK+P,QAAQ02C,EAAaq8B,WAClCvhF,EAAQklD,EAAa+4B,UAErBvkE,EAAItC,EAAM,GAAKpX,EACf2Z,EAAIvC,EAAM,GAAKpX,EACfmD,EAAIiU,EAAM,GAAKpX,EAEfspF,EAAQvsE,EAAU+Q,OAClBjQ,EAAUd,EAAUc,QAEpB0rE,EAAUD,EAAM5nF,OAAS,CAG7B4nF,GAAM/mF,KAAKsB,EAAGC,GACdwlF,EAAM/mF,KAAKmX,EAAGC,EAAGxW,EAAGnD,GAEpBspF,EAAM/mF,KAAKsB,EAAIsB,EAAOrB,GACtBwlF,EAAM/mF,KAAKmX,EAAGC,EAAGxW,EAAGnD,GAEpBspF,EAAM/mF,KAAKsB,EAAIC,EAAIsB,GACnBkkF,EAAM/mF,KAAKmX,EAAGC,EAAGxW,EAAGnD,GAEpBspF,EAAM/mF,KAAKsB,EAAIsB,EAAOrB,EAAIsB,GAC1BkkF,EAAM/mF,KAAKmX,EAAGC,EAAGxW,EAAGnD,GAGpB6d,EAAQtb,KAAKgnF,EAASA,EAASA,EAAU,EAAGA,EAAU,EAAGA,EAAU,EAAGA,EAAU,GAGpF,GAAIrkC,EAAa62B,UACjB,CACI,GAAIyN,GAAatkC,EAAap3B,MAE9Bo3B,GAAap3B,QAAUjqB,EAAGC,EAChBD,EAAIsB,EAAOrB,EACXD,EAAIsB,EAAOrB,EAAIsB,EACfvB,EAAGC,EAAIsB,EACPvB,EAAGC,GAGbrF,KAAK6d,cAAcysE,UAAU7jC,EAAcnoC,GAE3CmoC,EAAap3B,OAAS07D,IAa9B/qF,KAAK6d,cAAc4sE,sBAAwB,SAAShkC,EAAcnoC,GAE9D,GAAI0sE,GAAYvkC,EAAaC,MACzBthD,EAAI4lF,EAAU5lF,EACdC,EAAI2lF,EAAU3lF,EACdqB,EAAQskF,EAAUtkF,MAClBC,EAASqkF,EAAUrkF,OAEnBm0B,EAASkwD,EAAUlwD,OAEnBmwD,IAOJ,IANAA,EAAUnnF,KAAKsB,EAAGC,EAAIy1B,GACtBmwD,EAAYA,EAAUx0D,OAAOz2B,KAAK6d,cAAcqtE,qBAAqB9lF,EAAGC,EAAIsB,EAASm0B,EAAQ11B,EAAGC,EAAIsB,EAAQvB,EAAI01B,EAAQz1B,EAAIsB,IAC5HskF,EAAYA,EAAUx0D,OAAOz2B,KAAK6d,cAAcqtE,qBAAqB9lF,EAAIsB,EAAQo0B,EAAQz1B,EAAIsB,EAAQvB,EAAIsB,EAAOrB,EAAIsB,EAAQvB,EAAIsB,EAAOrB,EAAIsB,EAASm0B,IACpJmwD,EAAYA,EAAUx0D,OAAOz2B,KAAK6d,cAAcqtE,qBAAqB9lF,EAAIsB,EAAOrB,EAAIy1B,EAAQ11B,EAAIsB,EAAOrB,EAAGD,EAAIsB,EAAQo0B,EAAQz1B,IAC9H4lF,EAAYA,EAAUx0D,OAAOz2B,KAAK6d,cAAcqtE,qBAAqB9lF,EAAI01B,EAAQz1B,EAAGD,EAAGC,EAAGD,EAAGC,EAAIy1B,IAE7F2rB,EAAa13B,KAAM,CACnB,GAAIpW,GAAQ3Y,KAAK+P,QAAQ02C,EAAaq8B,WAClCvhF,EAAQklD,EAAa+4B,UAErBvkE,EAAItC,EAAM,GAAKpX,EACf2Z,EAAIvC,EAAM,GAAKpX,EACfmD,EAAIiU,EAAM,GAAKpX,EAEfspF,EAAQvsE,EAAU+Q,OAClBjQ,EAAUd,EAAUc,QAEpB+rE,EAASN,EAAM5nF,OAAS,EAExBsjF,EAAYvmF,KAAKgmF,OAAO5B,YAAY6G,EAAW,KAAM,GAErDjoF,EAAI,CAER,KAAKA,EAAI,EAAGA,EAAIujF,EAAUtjF,OAAQD,GAAG,EAEjCoc,EAAQtb,KAAKyiF,EAAUvjF,GAAKmoF,GAC5B/rE,EAAQtb,KAAKyiF,EAAUvjF,GAAKmoF,GAC5B/rE,EAAQtb,KAAKyiF,EAAUvjF,EAAE,GAAKmoF,GAC9B/rE,EAAQtb,KAAKyiF,EAAUvjF,EAAE,GAAKmoF,GAC9B/rE,EAAQtb,KAAKyiF,EAAUvjF,EAAE,GAAKmoF,EAIlC,KAAKnoF,EAAI,EAAGA,EAAIioF,EAAUhoF,OAAQD,IAE9B6nF,EAAM/mF,KAAKmnF,EAAUjoF,GAAIioF,IAAYjoF,GAAIiY,EAAGC,EAAGxW,EAAGnD,GAI1D,GAAIklD,EAAa62B,UAAW,CACxB,GAAIyN,GAAatkC,EAAap3B,MAE9Bo3B,GAAap3B,OAAS47D,EAEtBjrF,KAAK6d,cAAcysE,UAAU7jC,EAAcnoC,GAE3CmoC,EAAap3B,OAAS07D,IAmB9B/qF,KAAK6d,cAAcqtE,qBAAuB,SAASzK,EAAOC,EAAOP,EAAKC,EAAKC,EAAKC,GAW5E,QAAS8K,GAAMC,EAAKC,EAAIC,GACpB,GAAIC,GAAOF,EAAKD,CAEhB,OAAOA,GAAOG,EAAOD,EAIzB,IAAK,GAhBDhL,GACAC,EACAiL,EACAC,EACAtmF,EACAC,EACA4pB,EAAI,GACJI,KAQAxrB,EAAI,EACCb,EAAI,EAAQisB,GAALjsB,EAAQA,IAEpBa,EAAIb,EAAIisB,EAGRsxD,EAAK6K,EAAO3K,EAAQN,EAAMt8E,GAC1B28E,EAAK4K,EAAO1K,EAAQN,EAAMv8E,GAC1B4nF,EAAKL,EAAOjL,EAAME,EAAMx8E,GACxB6nF,EAAKN,EAAOhL,EAAME,EAAMz8E,GAGxBuB,EAAIgmF,EAAO7K,EAAKkL,EAAK5nF,GACrBwB,EAAI+lF,EAAO5K,EAAKkL,EAAK7nF,GAErBwrB,EAAOvrB,KAAKsB,EAAGC,EAEnB,OAAOgqB,IAYXrvB,KAAK6d,cAAc2sE,YAAc,SAAS/jC,EAAcnoC,GAGpD,GAGI5X,GACAC,EAJAglF,EAAallC,EAAaC,MAC1BthD,EAAIumF,EAAWvmF,EACfC,EAAIsmF,EAAWtmF,CAKhBohD,GAAatxC,OAASnV,KAAK0mC,SAASi9C,MAEnCj9E,EAAQilF,EAAW7wD,OACnBn0B,EAASglF,EAAW7wD,SAIpBp0B,EAAQilF,EAAWjlF,MACnBC,EAASglF,EAAWhlF,OAGxB,IAAIilF,GAAY,GACZC,EAAiB,EAAVjrF,KAAKC,GAAU+qF,EAEtB5oF,EAAI,CAER,IAAGyjD,EAAa13B,KAChB,CACI,GAAIpW,GAAQ3Y,KAAK+P,QAAQ02C,EAAaq8B,WAClCvhF,EAAQklD,EAAa+4B,UAErBvkE,EAAItC,EAAM,GAAKpX,EACf2Z,EAAIvC,EAAM,GAAKpX,EACfmD,EAAIiU,EAAM,GAAKpX,EAEfspF,EAAQvsE,EAAU+Q,OAClBjQ,EAAUd,EAAUc,QAEpB+rE,EAASN,EAAM5nF,OAAS,CAI5B,KAFAmc,EAAQtb,KAAKqnF,GAERnoF,EAAI,EAAO4oF,EAAY,EAAhB5oF,EAAoBA,IAE5B6nF,EAAM/mF,KAAKsB,EAAEC,EAAG4V,EAAGC,EAAGxW,EAAGnD,GAEzBspF,EAAM/mF,KAAKsB,EAAIxE,KAAKsE,IAAI2mF,EAAM7oF,GAAK0D,EACxBrB,EAAIzE,KAAKuE,IAAI0mF,EAAM7oF,GAAK2D,EACxBsU,EAAGC,EAAGxW,EAAGnD,GAEpB6d,EAAQtb,KAAKqnF,IAAUA,IAG3B/rE,GAAQtb,KAAKqnF,EAAO,GAGxB,GAAG1kC,EAAa62B,UAChB,CACI,GAAIyN,GAAatkC,EAAap3B,MAI9B,KAFAo3B,EAAap3B,UAERrsB,EAAI,EAAO4oF,EAAY,EAAhB5oF,EAAmBA,IAE3ByjD,EAAap3B,OAAOvrB,KAAKsB,EAAIxE,KAAKsE,IAAI2mF,EAAM7oF,GAAK0D,EACxBrB,EAAIzE,KAAKuE,IAAI0mF,EAAM7oF,GAAK2D,EAGrD3G,MAAK6d,cAAcysE,UAAU7jC,EAAcnoC,GAE3CmoC,EAAap3B,OAAS07D,IAa9B/qF,KAAK6d,cAAcysE,UAAY,SAAS7jC,EAAcnoC,GAGlD,GAAItb,GAAI,EACJqsB,EAASo3B,EAAap3B,MAC1B,IAAqB,IAAlBA,EAAOpsB,OAAV,CAGA,GAAGwjD,EAAa62B,UAAU,EAEtB,IAAKt6E,EAAI,EAAGA,EAAIqsB,EAAOpsB,OAAQD,IAC3BqsB,EAAOrsB,IAAM,EAKrB,IAAI8oF,GAAa,GAAI9rF,MAAKmB,MAAOkuB,EAAO,GAAIA,EAAO,IAC/CC,EAAY,GAAItvB,MAAKmB,MAAOkuB,EAAOA,EAAOpsB,OAAS,GAAIosB,EAAOA,EAAOpsB,OAAS,GAGlF,IAAG6oF,EAAW1mF,IAAMkqB,EAAUlqB,GAAK0mF,EAAWzmF,IAAMiqB,EAAUjqB,EAC9D,CAEIgqB,EAASA,EAAO+G,QAEhB/G,EAAO9O,MACP8O,EAAO9O,MAEP+O,EAAY,GAAItvB,MAAKmB,MAAOkuB,EAAOA,EAAOpsB,OAAS,GAAIosB,EAAOA,EAAOpsB,OAAS,GAE9E,IAAI8oF,GAAYz8D,EAAUlqB,EAAkC,IAA7B0mF,EAAW1mF,EAAIkqB,EAAUlqB,GACpD4mF,EAAY18D,EAAUjqB,EAAkC,IAA7BymF,EAAWzmF,EAAIiqB,EAAUjqB,EAExDgqB,GAAO48D,QAAQF,EAAWC,GAC1B38D,EAAOvrB,KAAKioF,EAAWC,GAG3B,GAgBIvzD,GAAIg/B,EAAIy0B,EAAKC,EAAKC,EAAKC,EAAKC,EAAKC,EACjCC,EAAOC,EAAOC,EAAQC,EAAQC,EAAQC,EACtChuD,EAAIE,EAAIE,EAAIH,EAAIE,EAAIE,EACpBC,EAAO2tD,EAAO7+D,EAnBd48D,EAAQvsE,EAAU+Q,OAClBjQ,EAAUd,EAAUc,QACpBnc,EAASosB,EAAOpsB,OAAS,EACzB8pF,EAAa19D,EAAOpsB,OACpB+pF,EAAanC,EAAM5nF,OAAO,EAG1ByD,EAAQ+/C,EAAa62B,UAAY,EAGjC3kE,EAAQ3Y,KAAK+P,QAAQ02C,EAAag5B,WAClCl+E,EAAQklD,EAAau5B,UACrB/kE,EAAItC,EAAM,GAAKpX,EACf2Z,EAAIvC,EAAM,GAAKpX,EACfmD,EAAIiU,EAAM,GAAKpX,CA8BnB,KAvBA2qF,EAAM78D,EAAO,GACb88D,EAAM98D,EAAO,GAEb+8D,EAAM/8D,EAAO,GACbg9D,EAAMh9D,EAAO,GAEbm9D,IAAUL,EAAME,GAChBI,EAASP,EAAME,EAEfn+D,EAAOrtB,KAAK0E,KAAKknF,EAAMA,EAAQC,EAAMA,GAErCD,GAASv+D,EACTw+D,GAASx+D,EACTu+D,GAAS9lF,EACT+lF,GAAS/lF,EAGTmkF,EAAM/mF,KAAKooF,EAAMM,EAAQL,EAAMM,EACnBxxE,EAAGC,EAAGxW,EAAGnD,GAErBspF,EAAM/mF,KAAKooF,EAAMM,EAAQL,EAAMM,EACnBxxE,EAAGC,EAAGxW,EAAGnD,GAEhByB,EAAI,EAAOC,EAAO,EAAXD,EAAcA,IAEtBkpF,EAAM78D,EAAa,GAALrsB,EAAE,IAChBmpF,EAAM98D,EAAa,GAALrsB,EAAE,GAAO,GAEvBopF,EAAM/8D,EAAW,EAAJ,GACbg9D,EAAMh9D,EAAW,EAAJ,EAAQ,GAErBi9D,EAAMj9D,EAAa,GAALrsB,EAAE,IAChBupF,EAAMl9D,EAAa,GAALrsB,EAAE,GAAO,GAEvBwpF,IAAUL,EAAME,GAChBI,EAAQP,EAAME,EAEdn+D,EAAOrtB,KAAK0E,KAAKknF,EAAMA,EAAQC,EAAMA,GACrCD,GAASv+D,EACTw+D,GAASx+D,EACTu+D,GAAS9lF,EACT+lF,GAAS/lF,EAETgmF,IAAWL,EAAME,GACjBI,EAASP,EAAME,EAEfr+D,EAAOrtB,KAAK0E,KAAKonF,EAAOA,EAASC,EAAOA,GACxCD,GAAUz+D,EACV0+D,GAAU1+D,EACVy+D,GAAUhmF,EACVimF,GAAUjmF,EAEVm4B,GAAO4tD,EAAQN,IAASM,EAAQJ,GAChCttD,GAAOytD,EAAQJ,IAASI,EAAQN,GAChCjtD,IAAOutD,EAAQN,KAASO,EAAQJ,KAASG,EAAQJ,KAASK,EAAQN,GAClErtD,GAAO6tD,EAASJ,IAASI,EAASN,GAClCrtD,GAAO0tD,EAASN,IAASM,EAASJ,GAClCptD,IAAOwtD,EAASJ,KAASK,EAASN,KAASK,EAASN,KAASO,EAASJ,GAEtEptD,EAAQN,EAAGG,EAAKF,EAAGC,EAEhBn+B,KAAKq7B,IAAIkD,GAAS,IAGjBA,GAAO,KACP0rD,EAAM/mF,KAAKsoF,EAAMI,EAAQH,EAAMI,EAC3BxxE,EAAGC,EAAGxW,EAAGnD,GAEbspF,EAAM/mF,KAAKsoF,EAAMI,EAAQH,EAAMI,EAC3BxxE,EAAGC,EAAGxW,EAAGnD,KAKjBk3B,GAAMsG,EAAGG,EAAKF,EAAGC,GAAIE,EACrBs4B,GAAM34B,EAAGG,EAAKJ,EAAGK,GAAIC,EAGrB2tD,GAASr0D,EAAI2zD,IAAQ3zD,EAAI2zD,IAAQ30B,EAAI40B,IAAQ50B,EAAI40B,GAG9CS,EAAQ,OAEPF,EAASJ,EAAQE,EACjBG,EAASJ,EAAQE,EAEjB1+D,EAAOrtB,KAAK0E,KAAKsnF,EAAOA,EAASC,EAAOA,GACxCD,GAAU3+D,EACV4+D,GAAU5+D,EACV2+D,GAAUlmF,EACVmmF,GAAUnmF,EAEVmkF,EAAM/mF,KAAKsoF,EAAMQ,EAAQP,EAAKQ,GAC9BhC,EAAM/mF,KAAKmX,EAAGC,EAAGxW,EAAGnD,GAEpBspF,EAAM/mF,KAAKsoF,EAAMQ,EAAQP,EAAKQ,GAC9BhC,EAAM/mF,KAAKmX,EAAGC,EAAGxW,EAAGnD,GAEpBspF,EAAM/mF,KAAKsoF,EAAMQ,EAAQP,EAAKQ,GAC9BhC,EAAM/mF,KAAKmX,EAAGC,EAAGxW,EAAGnD,GAEpBwrF,MAKAlC,EAAM/mF,KAAK20B,EAAKg/B,GAChBozB,EAAM/mF,KAAKmX,EAAGC,EAAGxW,EAAGnD,GAEpBspF,EAAM/mF,KAAKsoF,GAAO3zD,EAAG2zD,GAAMC,GAAO50B,EAAK40B,IACvCxB,EAAM/mF,KAAKmX,EAAGC,EAAGxW,EAAGnD,IA2B5B,KAvBA2qF,EAAM78D,EAAkB,GAAVpsB,EAAO,IACrBkpF,EAAM98D,EAAkB,GAAVpsB,EAAO,GAAO,GAE5BmpF,EAAM/8D,EAAkB,GAAVpsB,EAAO,IACrBopF,EAAMh9D,EAAkB,GAAVpsB,EAAO,GAAO,GAE5BupF,IAAUL,EAAME,GAChBI,EAAQP,EAAME,EAEdn+D,EAAOrtB,KAAK0E,KAAKknF,EAAMA,EAAQC,EAAMA,GACrCD,GAASv+D,EACTw+D,GAASx+D,EACTu+D,GAAS9lF,EACT+lF,GAAS/lF,EAETmkF,EAAM/mF,KAAKsoF,EAAMI,EAAQH,EAAMI,GAC/B5B,EAAM/mF,KAAKmX,EAAGC,EAAGxW,EAAGnD,GAEpBspF,EAAM/mF,KAAKsoF,EAAMI,EAAQH,EAAMI,GAC/B5B,EAAM/mF,KAAKmX,EAAGC,EAAGxW,EAAGnD,GAEpB6d,EAAQtb,KAAKkpF,GAERhqF,EAAI,EAAO+pF,EAAJ/pF,EAAgBA,IAExBoc,EAAQtb,KAAKkpF,IAGjB5tE,GAAQtb,KAAKkpF,EAAW,KAY5BhtF,KAAK6d,cAAcwsE,iBAAmB,SAAS5jC,EAAcnoC,GAGzD,GAAI+Q,GAASo3B,EAAap3B,OAAO+G,OACjC,MAAG/G,EAAOpsB,OAAS,GAAnB,CAGA,GAAImc,GAAUd,EAAUc,OACxBd,GAAU+Q,OAASA,EACnB/Q,EAAU/c,MAAQklD,EAAa+4B,UAC/BlhE,EAAU3F,MAAQ3Y,KAAK+P,QAAQ02C,EAAaq8B,UAc5C,KAAK,GAHD19E,GAAEC,EANFgF,EAAOC,EAAAA,EACPE,IAAQF,EAAAA,GAERC,EAAOD,EAAAA,EACPG,IAAQH,EAAAA,GAKHtH,EAAI,EAAGA,EAAIqsB,EAAOpsB,OAAQD,GAAG,EAElCoC,EAAIiqB,EAAOrsB,GACXqC,EAAIgqB,EAAOrsB,EAAE,GAEbqH,EAAWA,EAAJjF,EAAWA,EAAIiF,EACtBG,EAAOpF,EAAIoF,EAAOpF,EAAIoF,EAEtBD,EAAWA,EAAJlF,EAAWA,EAAIkF,EACtBE,EAAOpF,EAAIoF,EAAOpF,EAAIoF,CAI1B4kB,GAAOvrB,KAAKuG,EAAME,EACNC,EAAMD,EACNC,EAAMC,EACNJ,EAAMI,EAKlB,IAAIxH,GAASosB,EAAOpsB,OAAS,CAC7B,KAAKD,EAAI,EAAOC,EAAJD,EAAYA,IAEpBoc,EAAQtb,KAAMd,KActBhD,KAAK6d,cAAcusE,UAAY,SAAS3jC,EAAcnoC,GAElD,GAAI+Q,GAASo3B,EAAap3B,MAE1B,MAAGA,EAAOpsB,OAAS,GAAnB,CAEA,GAAI4nF,GAAQvsE,EAAU+Q,OAClBjQ,EAAUd,EAAUc,QAEpBnc,EAASosB,EAAOpsB,OAAS,EAGzB0V,EAAQ3Y,KAAK+P,QAAQ02C,EAAaq8B,WAClCvhF,EAAQklD,EAAa+4B,UACrBvkE,EAAItC,EAAM,GAAKpX,EACf2Z,EAAIvC,EAAM,GAAKpX,EACfmD,EAAIiU,EAAM,GAAKpX,EAEfglF,EAAYvmF,KAAKgmF,OAAO5B,YAAY/0D,EAAQ,KAAM,EAEtD,KAAIk3D,EAAU,OAAO,CAErB,IAAIuE,GAAUD,EAAM5nF,OAAS,EAEzBD,EAAI,CAER,KAAKA,EAAI,EAAGA,EAAIujF,EAAUtjF,OAAQD,GAAG,EAEjCoc,EAAQtb,KAAKyiF,EAAUvjF,GAAK8nF,GAC5B1rE,EAAQtb,KAAKyiF,EAAUvjF,GAAK8nF,GAC5B1rE,EAAQtb,KAAKyiF,EAAUvjF,EAAE,GAAK8nF,GAC9B1rE,EAAQtb,KAAKyiF,EAAUvjF,EAAE,GAAI8nF,GAC7B1rE,EAAQtb,KAAKyiF,EAAUvjF,EAAE,GAAK8nF,EAGlC,KAAK9nF,EAAI,EAAOC,EAAJD,EAAYA,IAEpB6nF,EAAM/mF,KAAKurB,EAAW,EAAJrsB,GAAQqsB,EAAW,EAAJrsB,EAAQ,GAC9BiY,EAAGC,EAAGxW,EAAGnD,EAGxB,QAAO,IAGXvB,KAAK6d,cAAcosE,oBAOnBjqF,KAAK2qF,kBAAoB,SAASpjF,GAE9BxH,KAAKwH,GAAKA,EAGVxH,KAAK4Y,OAAS,EAAE,EAAE,GAClB5Y,KAAKsvB,UACLtvB,KAAKqf,WACLrf,KAAK0b,OAASlU,EAAG8a,eACjBtiB,KAAKsgB,YAAc9Y,EAAG8a,eACtBtiB,KAAKkf,KAAO,EACZlf,KAAKwB,MAAQ,EACbxB,KAAKiU,OAAQ,GAMjBhU,KAAK2qF,kBAAkB/nF,UAAUimC,MAAQ,WAErC9oC,KAAKsvB,UACLtvB,KAAKqf,YAMTpf,KAAK2qF,kBAAkB/nF,UAAU8nF,OAAS,WAEtC,GAAInjF,GAAKxH,KAAKwH,EAGdxH,MAAKktF,SAAW,GAAIjtF,MAAKM,aAAaP,KAAKsvB,QAE3C9nB,EAAGyY,WAAWzY,EAAG0Y,aAAclgB,KAAK0b,QACpClU,EAAG+a,WAAW/a,EAAG0Y,aAAclgB,KAAKktF,SAAU1lF,EAAGgb,aAEjDxiB,KAAKmtF,WAAa,GAAIltF,MAAKO,YAAYR,KAAKqf,SAE5C7X,EAAGyY,WAAWzY,EAAG6Y,qBAAsBrgB,KAAKsgB,aAC5C9Y,EAAG+a,WAAW/a,EAAG6Y,qBAAsBrgB,KAAKmtF,WAAY3lF,EAAGgb,aAE3DxiB,KAAKiU,OAAQ,GAcjBhU,KAAKsnB,eAAiB,aAYtBtnB,KAAKsnB,eAAe+0D,eAAiB,SAASh+D,EAAUhR,GAEpD,GAAIxL,GAAawc,EAASxc,UAEtBwc,GAASrK,QAETjU,KAAKotF,mBAAmB9uE,GACxBA,EAASrK,OAAQ,EAGrB,KAAK,GAAIhR,GAAI,EAAGA,EAAIqb,EAASooC,aAAaxjD,OAAQD,IAClD,CACI,GAAI+N,GAAOsN,EAASooC,aAAazjD,GAC7B0jD,EAAQ31C,EAAK21C,MAEbo8B,EAAY/xE,EAAKmzE,UACjBzE,EAAY1uE,EAAKkzE,SAIrB,IAFA52E,EAAQiwE,UAAYvsE,EAAKusE,UAErBvsE,EAAKoE,OAASnV,KAAK0mC,SAASs9C,KAChC,CACI32E,EAAQ6gB,WAER,IAAImB,GAASq3B,EAAMr3B,MAEnBhiB,GAAQ8gB,OAAOkB,EAAO,GAAIA,EAAO,GAEjC,KAAK,GAAIxrB,GAAE,EAAGA,EAAIwrB,EAAOpsB,OAAO,EAAGY,IAE/BwJ,EAAQ+gB,OAAOiB,EAAW,EAAJxrB,GAAQwrB,EAAW,EAAJxrB,EAAQ,GAG7C6iD,GAAMrkB,QAENh1B,EAAQ+gB,OAAOiB,EAAO,GAAIA,EAAO,IAIjCA,EAAO,KAAOA,EAAOA,EAAOpsB,OAAO,IAAMosB,EAAO,KAAOA,EAAOA,EAAOpsB,OAAO,IAE5EoK,EAAQghB,YAGRtd,EAAKge,OAEL1hB,EAAQG,YAAcuD,EAAKyuE,UAAY39E,EACvCwL,EAAQua,UAAY,KAAO,SAAwB,EAAZk7D,GAAej7D,SAAS,KAAKC,OAAO,IAC3Eza,EAAQ0hB,QAGRhe,EAAKusE,YAELjwE,EAAQG,YAAcuD,EAAKivE,UAAYn+E,EACvCwL,EAAQ8jB,YAAc,KAAO,SAAwB,EAAZsuD,GAAe53D,SAAS,KAAKC,OAAO,IAC7Eza,EAAQkwE,cAGX,IAAIxsE,EAAKoE,OAASnV,KAAK0mC,SAAS+8C,MAE7B1yE,EAAK+xE,WAAgC,IAAnB/xE,EAAK+xE,aAEvBz1E,EAAQG,YAAcuD,EAAKyuE,UAAY39E,EACvCwL,EAAQua,UAAY,KAAO,SAAwB,EAAZk7D,GAAej7D,SAAS,KAAKC,OAAO,IAC3Eza,EAAQ0a,SAAS2+B,EAAMthD,EAAGshD,EAAMrhD,EAAGqhD,EAAMhgD,MAAOggD,EAAM//C,SAGtDoK,EAAKusE,YAELjwE,EAAQG,YAAcuD,EAAKivE,UAAYn+E,EACvCwL,EAAQ8jB,YAAc,KAAO,SAAwB,EAAZsuD,GAAe53D,SAAS,KAAKC,OAAO,IAC7Eza,EAAQ+jB,WAAWs1B,EAAMthD,EAAGshD,EAAMrhD,EAAGqhD,EAAMhgD,MAAOggD,EAAM//C,aAG3D,IAAIoK,EAAKoE,OAASnV,KAAK0mC,SAASi9C,KAGjCt2E,EAAQ6gB,YACR7gB,EAAQgwE,IAAI32B,EAAMthD,EAAGshD,EAAMrhD,EAAGqhD,EAAM5rB,OAAO,EAAE,EAAEl6B,KAAKC,IACpDwM,EAAQghB,YAEJtd,EAAKge,OAEL1hB,EAAQG,YAAcuD,EAAKyuE,UAAY39E,EACvCwL,EAAQua,UAAY,KAAO,SAAwB,EAAZk7D,GAAej7D,SAAS,KAAKC,OAAO,IAC3Eza,EAAQ0hB,QAGRhe,EAAKusE,YAELjwE,EAAQG,YAAcuD,EAAKivE,UAAYn+E,EACvCwL,EAAQ8jB,YAAc,KAAO,SAAwB,EAAZsuD,GAAe53D,SAAS,KAAKC,OAAO,IAC7Eza,EAAQkwE,cAGX,IAAIxsE,EAAKoE,OAASnV,KAAK0mC,SAASk9C,KACrC,CAGI,GAAIjsE,GAAkB,EAAd+uC,EAAMhgD,MACVyc,EAAmB,EAAfujC,EAAM//C,OAEVvB,EAAIshD,EAAMthD,EAAIuS,EAAE,EAChBtS,EAAIqhD,EAAMrhD,EAAI8d,EAAE,CAEpB9V,GAAQ6gB,WAER,IAAIk/D,GAAQ,SACRC,EAAM11E,EAAI,EAAKy1E,EACfE,EAAMnqE,EAAI,EAAKiqE,EACfG,EAAKnoF,EAAIuS,EACT61E,EAAKnoF,EAAI8d,EACTsqE,EAAKroF,EAAIuS,EAAI,EACb+1E,EAAKroF,EAAI8d,EAAI,CAEjB9V,GAAQ8gB,OAAO/oB,EAAGsoF,GAClBrgF,EAAQszE,cAAcv7E,EAAGsoF,EAAKJ,EAAIG,EAAKJ,EAAIhoF,EAAGooF,EAAIpoF,GAClDgI,EAAQszE,cAAc8M,EAAKJ,EAAIhoF,EAAGkoF,EAAIG,EAAKJ,EAAIC,EAAIG,GACnDrgF,EAAQszE,cAAc4M,EAAIG,EAAKJ,EAAIG,EAAKJ,EAAIG,EAAIC,EAAID,GACpDngF,EAAQszE,cAAc8M,EAAKJ,EAAIG,EAAIpoF,EAAGsoF,EAAKJ,EAAIloF,EAAGsoF,GAElDrgF,EAAQghB,YAEJtd,EAAKge,OAEL1hB,EAAQG,YAAcuD,EAAKyuE,UAAY39E,EACvCwL,EAAQua,UAAY,KAAO,SAAwB,EAAZk7D,GAAej7D,SAAS,KAAKC,OAAO,IAC3Eza,EAAQ0hB,QAGRhe,EAAKusE,YAELjwE,EAAQG,YAAcuD,EAAKivE,UAAYn+E,EACvCwL,EAAQ8jB,YAAc,KAAO,SAAwB,EAAZsuD,GAAe53D,SAAS,KAAKC,OAAO,IAC7Eza,EAAQkwE,cAGX,IAAIxsE,EAAKoE,OAASnV,KAAK0mC,SAASg9C,KACrC,CACI,GAAIz/C,GAAKyiB,EAAMthD,EACX8+B,EAAKwiB,EAAMrhD,EACXqB,EAAQggD,EAAMhgD,MACdC,EAAS+/C,EAAM//C,OACfm0B,EAAS4rB,EAAM5rB,OAEf6yD,EAAY/sF,KAAKq9B,IAAIv3B,EAAOC,GAAU,EAAI,CAC9Cm0B,GAASA,EAAS6yD,EAAYA,EAAY7yD,EAE1CztB,EAAQ6gB,YACR7gB,EAAQ8gB,OAAO8V,EAAIC,EAAKpJ,GACxBztB,EAAQ+gB,OAAO6V,EAAIC,EAAKv9B,EAASm0B,GACjCztB,EAAQ6yE,iBAAiBj8C,EAAIC,EAAKv9B,EAAQs9B,EAAKnJ,EAAQoJ,EAAKv9B,GAC5D0G,EAAQ+gB,OAAO6V,EAAKv9B,EAAQo0B,EAAQoJ,EAAKv9B,GACzC0G,EAAQ6yE,iBAAiBj8C,EAAKv9B,EAAOw9B,EAAKv9B,EAAQs9B,EAAKv9B,EAAOw9B,EAAKv9B,EAASm0B,GAC5EztB,EAAQ+gB,OAAO6V,EAAKv9B,EAAOw9B,EAAKpJ,GAChCztB,EAAQ6yE,iBAAiBj8C,EAAKv9B,EAAOw9B,EAAID,EAAKv9B,EAAQo0B,EAAQoJ,GAC9D72B,EAAQ+gB,OAAO6V,EAAKnJ,EAAQoJ,GAC5B72B,EAAQ6yE,iBAAiBj8C,EAAIC,EAAID,EAAIC,EAAKpJ,GAC1CztB,EAAQghB,aAEJtd,EAAK+xE,WAAgC,IAAnB/xE,EAAK+xE,aAEvBz1E,EAAQG,YAAcuD,EAAKyuE,UAAY39E,EACvCwL,EAAQua,UAAY,KAAO,SAAwB,EAAZk7D,GAAej7D,SAAS,KAAKC,OAAO,IAC3Eza,EAAQ0hB,QAGRhe,EAAKusE,YAELjwE,EAAQG,YAAcuD,EAAKivE,UAAYn+E,EACvCwL,EAAQ8jB,YAAc,KAAO,SAAwB,EAAZsuD,GAAe53D,SAAS,KAAKC,OAAO,IAC7Eza,EAAQkwE,aAgBxBv9E,KAAKsnB,eAAeC,mBAAqB,SAASlJ,EAAUhR,GAExD,GAAI6pB,GAAM7Y,EAASooC,aAAaxjD,MAEhC,IAAY,IAARi0B,EAAJ,CAKA7pB,EAAQ6gB,WAER,KAAK,GAAIlrB,GAAI,EAAOk0B,EAAJl0B,EAASA,IACzB,CACI,GAAI+N,GAAOsN,EAASooC,aAAazjD,GAC7B0jD,EAAQ31C,EAAK21C,KAEjB,IAAI31C,EAAKoE,OAASnV,KAAK0mC,SAASs9C,KAChC,CAEI,GAAI30D,GAASq3B,EAAMr3B,MAEnBhiB,GAAQ8gB,OAAOkB,EAAO,GAAIA,EAAO,GAEjC,KAAK,GAAIxrB,GAAE,EAAGA,EAAIwrB,EAAOpsB,OAAO,EAAGY,IAE/BwJ,EAAQ+gB,OAAOiB,EAAW,EAAJxrB,GAAQwrB,EAAW,EAAJxrB,EAAQ,GAI7CwrB,GAAO,KAAOA,EAAOA,EAAOpsB,OAAO,IAAMosB,EAAO,KAAOA,EAAOA,EAAOpsB,OAAO,IAE5EoK,EAAQghB,gBAIX,IAAItd,EAAKoE,OAASnV,KAAK0mC,SAAS+8C,KAEjCp2E,EAAQkyB,KAAKmnB,EAAMthD,EAAGshD,EAAMrhD,EAAGqhD,EAAMhgD,MAAOggD,EAAM//C,QAClD0G,EAAQghB,gBAEP,IAAItd,EAAKoE,OAASnV,KAAK0mC,SAASi9C,KAGjCt2E,EAAQgwE,IAAI32B,EAAMthD,EAAGshD,EAAMrhD,EAAGqhD,EAAM5rB,OAAQ,EAAG,EAAIl6B,KAAKC,IACxDwM,EAAQghB,gBAEP,IAAItd,EAAKoE,OAASnV,KAAK0mC,SAASk9C,KACrC,CAII,GAAIjsE,GAAkB,EAAd+uC,EAAMhgD,MACVyc,EAAmB,EAAfujC,EAAM//C,OAEVvB,EAAIshD,EAAMthD,EAAIuS,EAAE,EAChBtS,EAAIqhD,EAAMrhD,EAAI8d,EAAE,EAEhBiqE,EAAQ,SACRC,EAAM11E,EAAI,EAAKy1E,EACfE,EAAMnqE,EAAI,EAAKiqE,EACfG,EAAKnoF,EAAIuS,EACT61E,EAAKnoF,EAAI8d,EACTsqE,EAAKroF,EAAIuS,EAAI,EACb+1E,EAAKroF,EAAI8d,EAAI,CAEjB9V,GAAQ8gB,OAAO/oB,EAAGsoF,GAClBrgF,EAAQszE,cAAcv7E,EAAGsoF,EAAKJ,EAAIG,EAAKJ,EAAIhoF,EAAGooF,EAAIpoF,GAClDgI,EAAQszE,cAAc8M,EAAKJ,EAAIhoF,EAAGkoF,EAAIG,EAAKJ,EAAIC,EAAIG,GACnDrgF,EAAQszE,cAAc4M,EAAIG,EAAKJ,EAAIG,EAAKJ,EAAIG,EAAIC,EAAID,GACpDngF,EAAQszE,cAAc8M,EAAKJ,EAAIG,EAAIpoF,EAAGsoF,EAAKJ,EAAIloF,EAAGsoF,GAClDrgF,EAAQghB,gBAEP,IAAItd,EAAKoE,OAASnV,KAAK0mC,SAASg9C,KACrC,CAEI,GAAIz/C,GAAKyiB,EAAMthD,EACX8+B,EAAKwiB,EAAMrhD,EACXqB,EAAQggD,EAAMhgD,MACdC,EAAS+/C,EAAM//C,OACfm0B,EAAS4rB,EAAM5rB,OAEf6yD,EAAY/sF,KAAKq9B,IAAIv3B,EAAOC,GAAU,EAAI,CAC9Cm0B,GAASA,EAAS6yD,EAAYA,EAAY7yD,EAE1CztB,EAAQ8gB,OAAO8V,EAAIC,EAAKpJ,GACxBztB,EAAQ+gB,OAAO6V,EAAIC,EAAKv9B,EAASm0B,GACjCztB,EAAQ6yE,iBAAiBj8C,EAAIC,EAAKv9B,EAAQs9B,EAAKnJ,EAAQoJ,EAAKv9B,GAC5D0G,EAAQ+gB,OAAO6V,EAAKv9B,EAAQo0B,EAAQoJ,EAAKv9B,GACzC0G,EAAQ6yE,iBAAiBj8C,EAAKv9B,EAAOw9B,EAAKv9B,EAAQs9B,EAAKv9B,EAAOw9B,EAAKv9B,EAASm0B,GAC5EztB,EAAQ+gB,OAAO6V,EAAKv9B,EAAOw9B,EAAKpJ,GAChCztB,EAAQ6yE,iBAAiBj8C,EAAKv9B,EAAOw9B,EAAID,EAAKv9B,EAAQo0B,EAAQoJ,GAC9D72B,EAAQ+gB,OAAO6V,EAAKnJ,EAAQoJ,GAC5B72B,EAAQ6yE,iBAAiBj8C,EAAIC,EAAID,EAAIC,EAAKpJ,GAC1CztB,EAAQghB,gBAKpBruB,KAAKsnB,eAAe6lE,mBAAqB,SAAS9uE,GAE9C,GAAsB,WAAlBA,EAAS5S,KASb,IAAK,GAJDmiF,IAASvvE,EAAS5S,MAAQ,GAAK,KAAQ,IACvCoiF,GAASxvE,EAAS5S,MAAQ,EAAI,KAAQ,IACtCqiF,GAAyB,IAAhBzvE,EAAS5S,MAAc,IAE3BzI,EAAI,EAAGA,EAAIqb,EAASooC,aAAaxjD,OAAQD,IAClD,CACI,GAAI+N,GAAOsN,EAASooC,aAAazjD,GAE7B8/E,EAA6B,EAAjB/xE,EAAK+xE,UACjBrD,EAA6B,EAAjB1uE,EAAK0uE,SAErB1uE,GAAKmzE,YAAepB,GAAa,GAAK,KAAQ,IAAM8K,EAAM,KAAO,MAAQ9K,GAAa,EAAI,KAAQ,IAAM+K,EAAM,KAAO,IAAmB,IAAZ/K,GAAoB,IAAMgL,EAAM,IAC5J/8E,EAAKkzE,YAAexE,GAAa,GAAK,KAAQ,IAAMmO,EAAM,KAAO,MAAQnO,GAAa,EAAI,KAAQ,IAAMoO,EAAM,KAAO,IAAmB,IAAZpO,GAAoB,IAAMqO,EAAM,MAiCpKllE,EAAO8d,SAAW,SAAUzmC,EAAMmF,EAAGC,GAEvBoE,SAANrE,IAAmBA,EAAI,GACjBqE,SAANpE,IAAmBA,EAAI;AAM3BtF,KAAKoV,KAAOyT,EAAOgK,SAMnB7yB,KAAK60C,YAAchsB,EAAO6J,OAM1B1yB,KAAKkI,OAAS,GAAI2gB,GAAOznB,MAEzBnB,KAAK0mC,SAASjhC,KAAK1F,MAEnB6oB,EAAOohD,UAAUgB,KAAK92D,KAAKzO,KAAK1F,KAAME,EAAMmF,EAAGC,EAAG,GAAI,OAI1DujB,EAAO8d,SAAS9jC,UAAYO,OAAOiF,OAAOpI,KAAK0mC,SAAS9jC,WACxDgmB,EAAO8d,SAAS9jC,UAAUC,YAAc+lB,EAAO8d,SAE/C9d,EAAOohD,UAAUgB,KAAKC,QAAQxlE,KAAKmjB,EAAO8d,SAAS9jC,WAC/C,QACA,WACA,SACA,UACA,gBACA,eACA,UACA,WACA,cACA,UAGJgmB,EAAO8d,SAAS9jC,UAAU+xE,iBAAmB/rD,EAAOohD,UAAUqB,YAAYnlE,UAC1E0iB,EAAO8d,SAAS9jC,UAAUgyE,kBAAoBhsD,EAAOohD,UAAUgG,SAAS9pE,UACxE0iB,EAAO8d,SAAS9jC,UAAUiyE,iBAAmBjsD,EAAOohD,UAAUyF,QAAQvpE,UACtE0iB,EAAO8d,SAAS9jC,UAAUkyE,cAAgBlsD,EAAOohD,UAAUgB,KAAK9kE,UAQhE0iB,EAAO8d,SAAS9jC,UAAUsD,UAAY,WAElC,MAAKnG,MAAK40E,oBAAuB50E,KAAK60E,qBAAwB70E,KAAK80E,mBAK5D90E,KAAK+0E,iBAHD,GAaflsD,EAAO8d,SAAS9jC,UAAUE,QAAU,SAASo5C,GAEzCn8C,KAAKob,QAELyN,EAAOohD,UAAUqC,QAAQzpE,UAAUE,QAAQ2C,KAAK1F,KAAMm8C,IAW1DtzB,EAAO8d,SAAS9jC,UAAUmrF,aAAe,SAAS1+D,EAAQ2+D,GAEzCvkF,SAATukF,IAAsBA,GAAO,EAEjC,IAAIC,GAAW,GAAIrlE,GAAOsZ,QAAQ7S,EAElC,IAAI2+D,EACJ,CACI,GAAIE,GAAe,GAAItlE,GAAOznB,MAAMpB,KAAKE,KAAKob,OAAOjW,EAAIiqB,EAAO,GAAGjqB,EAAGrF,KAAKE,KAAKob,OAAOhW,EAAIgqB,EAAO,GAAGhqB,GACjG8oF,EAAK,GAAIvlE,GAAOznB,MAAMkuB,EAAO,GAAGjqB,EAAIiqB,EAAO,GAAGjqB,EAAGiqB,EAAO,GAAGhqB,EAAIgqB,EAAO,GAAGhqB,GACzEotD,EAAK,GAAI7pC,GAAOznB,MAAMkuB,EAAO,GAAGjqB,EAAIiqB,EAAO,GAAGjqB,EAAGiqB,EAAO,GAAGhqB,EAAIgqB,EAAO,GAAGhqB,GACzE+oF,EAAa37B,EAAGtxB,MAAMgtD,EAEtBD,GAAahtD,IAAIktD,GAAc,GAE/BruF,KAAKmjF,YAAY+K,OAKrBluF,MAAKmjF,YAAY+K,IAazBrlE,EAAO8d,SAAS9jC,UAAUyrF,cAAgB,SAAS5sE,EAAUrC,EAAS4uE,GAErDvkF,SAATukF,IAAsBA,GAAO,EAEjC,IAIIhrF,GAJAsrF,EAAS,GAAI1lE,GAAOznB,MACpBotF,EAAS,GAAI3lE,GAAOznB,MACpBqtF,EAAS,GAAI5lE,GAAOznB,MACpBkuB,IAGJ,IAAKjQ,EAyBD,GAAIqC,EAAS,YAAcmH,GAAOznB,MAE9B,IAAK6B,EAAI,EAAGA,EAAIoc,EAAQnc,OAAQ,EAAGD,IAE/BqsB,EAAOvrB,KAAK2d,EAASrC,EAAY,EAAJpc,KAC7BqsB,EAAOvrB,KAAK2d,EAASrC,EAAY,EAAJpc,EAAQ,KACrCqsB,EAAOvrB,KAAK2d,EAASrC,EAAY,EAAJpc,EAAQ,KAEf,IAAlBqsB,EAAOpsB,SAEPlD,KAAKguF,aAAa1+D,EAAQ2+D,GAC1B3+D,UAMR,KAAKrsB,EAAI,EAAGA,EAAIoc,EAAQnc,OAAQD,IAE5BsrF,EAAOlpF,EAAIqc,EAAsB,EAAbrC,EAAQpc,IAC5BsrF,EAAOjpF,EAAIoc,EAAsB,EAAbrC,EAAQpc,GAAS,GACrCqsB,EAAOvrB,KAAKwqF,EAAOrzD,YAEG,IAAlB5L,EAAOpsB,SAEPlD,KAAKguF,aAAa1+D,EAAQ2+D,GAC1B3+D,UAjDZ,IAAI5N,EAAS,YAAcmH,GAAOznB,MAE9B,IAAK6B,EAAI,EAAGA,EAAIye,EAASxe,OAAS,EAAGD,IAEjCjD,KAAKguF,cAActsE,EAAa,EAAJze,GAAQye,EAAa,EAAJze,EAAQ,GAAIye,EAAa,EAAJze,EAAQ,IAAKgrF,OAKnF,KAAKhrF,EAAI,EAAGA,EAAIye,EAASxe,OAAS,EAAGD,IAEjCsrF,EAAOlpF,EAAIqc,EAAa,EAAJze,EAAQ,GAC5BsrF,EAAOjpF,EAAIoc,EAAa,EAAJze,EAAQ,GAC5BurF,EAAOnpF,EAAIqc,EAAa,EAAJze,EAAQ,GAC5BurF,EAAOlpF,EAAIoc,EAAa,EAAJze,EAAQ,GAC5BwrF,EAAOppF,EAAIqc,EAAa,EAAJze,EAAQ,GAC5BwrF,EAAOnpF,EAAIoc,EAAa,EAAJze,EAAQ,GAC5BjD,KAAKguF,cAAcO,EAAQC,EAAQC,GAASR,IA4D5DplE,EAAOniB,cAAgB,SAAUxG,EAAMyG,EAAOC,EAAQmO,EAAKzO,EAAWD,GAEtDqD,SAARqL,IAAqBA,EAAM,IACbrL,SAAdpD,IAA2BA,EAAYuiB,EAAOlb,WAAW0Y,SAC1C3c,SAAfrD,IAA4BA,EAAa,GAK7CrG,KAAKE,KAAOA,EAKZF,KAAK+U,IAAMA,EAKX/U,KAAKoV,KAAOyT,EAAOqK,cAMnBlzB,KAAK6G,YAAc,GAAI5G,MAAK+B,OAE5B/B,KAAKyG,cAAchB,KAAK1F,KAAM2G,EAAOC,EAAQ5G,KAAKE,KAAKqG,SAAUD,EAAWD,GAE5ErG,KAAK8G,OAAS+hB,EAAOniB,cAAc7D,UAAUiE,QAIjD+hB,EAAOniB,cAAc7D,UAAYO,OAAOiF,OAAOpI,KAAKyG,cAAc7D,WAClEgmB,EAAOniB,cAAc7D,UAAUC,YAAc+lB,EAAOniB,cAepDmiB,EAAOniB,cAAc7D,UAAU6rF,SAAW,SAAUjzE,EAAepW,EAAGC,EAAG8V,GAErEK,EAAclX,kBAEdvE,KAAK6G,YAAYo0B,SAASxf,EAAc1Z,gBACxC/B,KAAK6G,YAAY/B,GAAKO,EACtBrF,KAAK6G,YAAY9B,GAAKO,EAElBtF,KAAKuG,SAAS6O,OAASnV,KAAKE,eAE5BH,KAAKorB,YAAY3P,EAAezb,KAAK6G,YAAauU,GAIlDpb,KAAKqrB,aAAa5P,EAAezb,KAAK6G,YAAauU,IAkB3DyN,EAAOniB,cAAc7D,UAAU8rF,YAAc,SAAUlzE,EAAepW,EAAGC,EAAG8V,GAExEpb,KAAK6G,YAAY2kB,WAAWC,UAAUpmB,EAAGC,GAErCtF,KAAKuG,SAAS6O,OAASnV,KAAKE,eAE5BH,KAAKorB,YAAY3P,EAAezb,KAAK6G,YAAauU,GAIlDpb,KAAKqrB,aAAa5P,EAAezb,KAAK6G,YAAauU,IAoB3DyN,EAAOniB,cAAc7D,UAAUiE,OAAS,SAAU2U,EAAe3V,EAAQsV,GAEtD1R,SAAX5D,GAAmC,OAAXA,EAExB9F,KAAK6G,YAAYo0B,SAASxf,EAAc1Z,gBAIxC/B,KAAK6G,YAAYo0B,SAASn1B,GAG1B9F,KAAKuG,SAAS6O,OAASnV,KAAKE,eAE5BH,KAAKorB,YAAY3P,EAAezb,KAAK6G,YAAauU,GAIlDpb,KAAKqrB,aAAa5P,EAAezb,KAAK6G,YAAauU,IA4C3DyN,EAAO8pD,KAAO,SAAUzyE,EAAMmF,EAAGC,EAAGotE,EAAM92D,GAEtCvW,EAAIA,GAAK,EACTC,EAAIA,GAAK,EAILotE,EAFShpE,SAATgpE,GAA+B,OAATA,EAEf,GAIAA,EAAK5qD,WAGhBlM,EAAQiN,EAAO0O,MAAMiC,UAAW5d,GAMhC5b,KAAKoV,KAAOyT,EAAOiK,KAMnB9yB,KAAK60C,YAAchsB,EAAO6J,OAO1B1yB,KAAKqlB,QAAU,GAAIwD,GAAOznB,MAQ1BpB,KAAK4uF,WAAa,KAKlB5uF,KAAK4Q,OAAS3Q,KAAK4Q,WAAWxI,OAAOrI,MAKrCA,KAAKsN,QAAUtN,KAAK4Q,OAAOE,WAAW,MAKtC9Q,KAAK4hB,UAKL5hB,KAAK6uF,gBAKL7uF,KAAK8uF,cAKL9uF,KAAK+uF,eAQL/uF,KAAKgvF,WAAY,EAajBhvF,KAAKivF,iBAAkB,EAMvBjvF,KAAKkvF,KAAOhvF,EAAKqG,SAASF,WAM1BrG,KAAKmvF,MAAQzc,EAMb1yE,KAAKovF,gBAAkB,KAMvBpvF,KAAKqvF,aAAe,EAMpBrvF,KAAKsvF,WAAa,EAMlBtvF,KAAKsI,OAAS,EAMdtI,KAAKuI,QAAU,EAEfsgB,EAAOphB,OAAO/B,KAAK1F,KAAME,EAAMmF,EAAGC,EAAGrF,KAAKuL,QAAQ6e,WAAWrqB,KAAK4Q,SAElE5Q,KAAKuvF,SAAS3zE,GAED,KAAT82D,GAEA1yE,KAAKwvF,cAKb3mE,EAAO8pD,KAAK9vE,UAAYO,OAAOiF,OAAOwgB,EAAOphB,OAAO5E,WACpDgmB,EAAO8pD,KAAK9vE,UAAUC,YAAc+lB,EAAO8pD,KAQ3C9pD,EAAO8pD,KAAK9vE,UAAUsD,UAAY,WAE9B,MAAKnG,MAAK40E,oBAAuB50E,KAAK60E,qBAAwB70E,KAAK80E,mBAK5D90E,KAAK+0E,iBAHD,GAaflsD,EAAO8pD,KAAK9vE,UAAU+kC,OAAS,aAU/B/e,EAAO8pD,KAAK9vE,UAAUE,QAAU,SAAUo5C,GAEtCn8C,KAAK8H,QAAQ/E,SAAQ,GAErB9C,KAAK4Q,WAAWI,OAAOjR,MAEvB6oB,EAAOohD,UAAUqC,QAAQzpE,UAAUE,QAAQ2C,KAAK1F,KAAMm8C,IAmB1DtzB,EAAO8pD,KAAK9vE,UAAU4sF,UAAY,SAAUpqF,EAAGC,EAAGsT,EAAO4jE,EAAMkT,EAAcC,GAiBzE,MAfUjmF,UAANrE,IAAmBA,EAAI,GACjBqE,SAANpE,IAAmBA,EAAI,GACboE,SAAVkP,IAAuBA,EAAQ,oBACtBlP,SAAT8yE,IAAsBA,EAAO,GACZ9yE,SAAjBgmF,IAA8BA,GAAe,GAC9BhmF,SAAfimF,IAA4BA,GAAa,GAE7C3vF,KAAK4b,MAAM+gE,cAAgBt3E,EAC3BrF,KAAK4b,MAAMghE,cAAgBt3E,EAC3BtF,KAAK4b,MAAM6gE,YAAc7jE,EACzB5Y,KAAK4b,MAAM8gE,WAAaF,EACxBx8E,KAAK4b,MAAM8zE,aAAeA,EAC1B1vF,KAAK4b,MAAM+zE,WAAaA,EACxB3vF,KAAKiU,OAAQ,EAENjU,MA4BX6oB,EAAO8pD,KAAK9vE,UAAU0sF,SAAW,SAAU3zE,EAAOgsB,GAE/Bl+B,SAAXk+B,IAAwBA,GAAS,GAErChsB,EAAQA,MACRA,EAAM03D,KAAO13D,EAAM03D,MAAQ,kBAC3B13D,EAAMg0E,gBAAkBh0E,EAAMg0E,iBAAmB,KACjDh0E,EAAMoT,KAAOpT,EAAMoT,MAAQ,QAC3BpT,EAAMy7B,MAAQz7B,EAAMy7B,OAAS,OAC7Bz7B,EAAMi0E,aAAej0E,EAAMi0E,cAAgB,OAC3Cj0E,EAAMk0E,aAAel0E,EAAMk0E,cAAgB,MAC3Cl0E,EAAM4hE,OAAS5hE,EAAM4hE,QAAU,QAC/B5hE,EAAMm0E,gBAAkBn0E,EAAMm0E,iBAAmB,EACjDn0E,EAAMo0E,SAAWp0E,EAAMo0E,WAAY,EACnCp0E,EAAMq0E,cAAgBr0E,EAAMq0E,eAAiB,IAC7Cr0E,EAAMs0E,SAAWt0E,EAAMs0E,UAAY,EACnCt0E,EAAM+gE,cAAgB/gE,EAAM+gE,eAAiB,EAC7C/gE,EAAMghE,cAAgBhhE,EAAMghE,eAAiB,EAC7ChhE,EAAM6gE,YAAc7gE,EAAM6gE,aAAe,gBACzC7gE,EAAM8gE,WAAa9gE,EAAM8gE,YAAc,EACvC9gE,EAAMu0E,KAAOv0E,EAAMu0E,MAAQ,CAE3B,IAAIhlB,GAAanrE,KAAKowF,iBAAiBx0E,EAAM03D,KAuC7C,OArCI13D,GAAMy0E,YAENllB,EAAWklB,UAAYz0E,EAAMy0E,WAG7Bz0E,EAAM00E,cAENnlB,EAAWmlB,YAAc10E,EAAM00E,aAG/B10E,EAAM20E,aAENplB,EAAWolB,WAAa30E,EAAM20E,YAG9B30E,EAAM40E,WAEwB,gBAAnB50E,GAAM40E,WAEb50E,EAAM40E,SAAW50E,EAAM40E,SAAW,MAGtCrlB,EAAWqlB,SAAW50E,EAAM40E,UAGhCxwF,KAAKovF,gBAAkBjkB,EAEvBvvD,EAAM03D,KAAOtzE,KAAKywF,iBAAiBzwF,KAAKovF,iBAExCpvF,KAAK4b,MAAQA,EACb5b,KAAKiU,OAAQ,EAET2zB,GAEA5nC,KAAKwvF,aAGFxvF,MAUX6oB,EAAO8pD,KAAK9vE,UAAU2sF,WAAa,WAE/BxvF,KAAK8H,QAAQiE,YAAY1F,WAAarG,KAAKkvF,KAE3ClvF,KAAKsN,QAAQgmE,KAAOtzE,KAAK4b,MAAM03D,IAE/B,IAAIod,GAAa1wF,KAAK0yE,IAElB1yE,MAAK4b,MAAMo0E,WAEXU,EAAa1wF,KAAK2wF,YAAY3wF,KAAK0yE,MAIvC,IAAIke,GAAQF,EAAW94D,MAAM,kBAGzBu4D,EAAOnwF,KAAK4b,MAAMu0E,KAClBU,KACAC,EAAe,EACfC,EAAiB/wF,KAAKgxF,wBAAwBhxF,KAAK4b,MAAM03D,MAEzD2d,EAAaL,EAAM1tF,MAEnBlD,MAAK4b,MAAMs0E,SAAW,GAAKlwF,KAAK4b,MAAMs0E,SAAWU,EAAM1tF,SAEvD+tF,EAAajxF,KAAK4b,MAAMs0E,UAG5BlwF,KAAKsvF,WAAa,CAElB,KAAK,GAAIrsF,GAAI,EAAOguF,EAAJhuF,EAAgBA,IAChC,CACI,GAAa,IAATktF,EACJ,CAEI,GAAI5S,GAAav9E,KAAK4b,MAAMm0E,gBAAkB/vF,KAAKqlB,QAAQhgB,CAIvDk4E,IAFAv9E,KAAK4hB,OAAO1e,OAAS,GAAKlD,KAAK6uF,aAAa3rF,OAAS,GAAKlD,KAAK+uF,YAAY7rF,OAAS,GAAKlD,KAAK8uF,WAAW5rF,OAAS,EAErGlD,KAAKkxF,YAAYN,EAAM3tF,IAIvBjD,KAAKsN,QAAQ6jF,YAAYP,EAAM3tF,IAAI0D,MAIhD3G,KAAK4b,MAAMo0E,WAEXzS,GAAav9E,KAAKsN,QAAQ6jF,YAAY,KAAKxqF,WAInD,CAEI,GAAI62B,GAAOozD,EAAM3tF,GAAG20B,MAAM,UACtB2lD,EAAYv9E,KAAKqlB,QAAQhgB,EAAIrF,KAAK4b,MAAMm0E,eAE5C,IAAIpvF,MAAM2R,QAAQ69E,GAId,IAAK,GAFDiB,GAAM,EAEDxsF,EAAI,EAAGA,EAAI44B,EAAKt6B,OAAQ0B,IACjC,CACI,GAAIysF,GAAU,CAIVA,GAFArxF,KAAK4hB,OAAO1e,OAAS,GAAKlD,KAAK6uF,aAAa3rF,OAAS,GAAKlD,KAAK+uF,YAAY7rF,OAAS,GAAKlD,KAAK8uF,WAAW5rF,OAAS,EAExGlD,KAAKkxF,YAAY1zD,EAAK54B,IAItB/D,KAAKgH,KAAK7H,KAAKsN,QAAQ6jF,YAAY3zD,EAAK54B,IAAI+B,OAGtD/B,EAAI,IAEJwsF,GAAOjB,EAAKvrF,EAAI,IAGpB24E,EAAY6T,EAAMC,MAKtB,KAAK,GAAIzsF,GAAI,EAAGA,EAAI44B,EAAKt6B,OAAQ0B,IACjC,CAIQ24E,GAFAv9E,KAAK4hB,OAAO1e,OAAS,GAAKlD,KAAK6uF,aAAa3rF,OAAS,GAAKlD,KAAK+uF,YAAY7rF,OAAS,GAAKlD,KAAK8uF,WAAW5rF,OAAS,EAErGlD,KAAKkxF,YAAY1zD,EAAK54B,IAItB/D,KAAKgH,KAAK7H,KAAKsN,QAAQ6jF,YAAY3zD,EAAK54B,IAAI+B,MAG7D,IAAI8kF,GAAOzrF,KAAKE,KAAKooC,KAAKgpD,WAAW/T,EAAW4S,GAAQ5S,CAExDA,IAAakO,GAKzBoF,EAAW5tF,GAAKpC,KAAKgH,KAAK01E,GAC1BuT,EAAejwF,KAAK+G,IAAIkpF,EAAcD,EAAW5tF,IAGrDjD,KAAK4Q,OAAOjK,MAAQmqF,EAAe9wF,KAAKkvF,IAGxC,IAAIqC,GAAaR,EAAeP,SAAWxwF,KAAK4b,MAAMm0E,gBAAkB/vF,KAAKqlB,QAAQ/f,EACjFsB,EAAS2qF,EAAaN,EACtBO,EAAcxxF,KAAKqvF,YAEL,GAAdmC,GAAmB3wF,KAAKq7B,IAAIs1D,GAAeD,IAE3CC,GAAeD,GAIC,IAAhBC,IAEA5qF,GAAW4qF,EAAc,EAAKA,EAAcZ,EAAM1tF,OAASsuF,GAAeZ,EAAM1tF,OAAS,IAG7FlD,KAAK4Q,OAAOhK,OAASA,EAAS5G,KAAKkvF,KAEnClvF,KAAKsN,QAAQjM,MAAMrB,KAAKkvF,KAAMlvF,KAAKkvF,MAE/BlmE,UAAUC,YAEVjpB,KAAKsN,QAAQ6Z,UAAU,EAAG,EAAGnnB,KAAK4Q,OAAOjK,MAAO3G,KAAK4Q,OAAOhK,QAG5D5G,KAAK4b,MAAMg0E,kBAEX5vF,KAAKsN,QAAQua,UAAY7nB,KAAK4b,MAAMg0E,gBACpC5vF,KAAKsN,QAAQ0a,SAAS,EAAG,EAAGhoB,KAAK4Q,OAAOjK,MAAO3G,KAAK4Q,OAAOhK,SAG/D5G,KAAKsN,QAAQua,UAAY7nB,KAAK4b,MAAMoT,KACpChvB,KAAKsN,QAAQgmE,KAAOtzE,KAAK4b,MAAM03D,KAC/BtzE,KAAKsN,QAAQ8jB,YAAcpxB,KAAK4b,MAAM4hE,OACtCx9E,KAAKsN,QAAQmkF,aAAe,aAE5BzxF,KAAKsN,QAAQiwE,UAAYv9E,KAAK4b,MAAMm0E,gBACpC/vF,KAAKsN,QAAQokF,QAAU,QACvB1xF,KAAKsN,QAAQqkF,SAAW,OAExB,IAAIC,GACAC,CAKJ,KAHA7xF,KAAKsvF,WAAa,EAGbrsF,EAAI,EAAOguF,EAAJhuF,EAAgBA,IAIxB2uF,EAAgB5xF,KAAK4b,MAAMm0E,gBAAkB,EAC7C8B,EAAiB7xF,KAAK4b,MAAMm0E,gBAAkB,EAAI9sF,EAAIsuF,EAAcR,EAAee,OAE/E7uF,EAAI,IAEJ4uF,GAAkBL,EAAcvuF,GAGX,UAArBjD,KAAK4b,MAAMy7B,MAEXu6C,GAAiBd,EAAeD,EAAW5tF,GAEjB,WAArBjD,KAAK4b,MAAMy7B,QAEhBu6C,IAAkBd,EAAeD,EAAW5tF,IAAM,GAGlDjD,KAAKgvF,YAEL4C,EAAgB/wF,KAAKw6B,MAAMu2D,GAC3BC,EAAgBhxF,KAAKw6B,MAAMw2D,IAG3B7xF,KAAK4hB,OAAO1e,OAAS,GAAKlD,KAAK6uF,aAAa3rF,OAAS,GAAKlD,KAAK+uF,YAAY7rF,OAAS,GAAKlD,KAAK8uF,WAAW5rF,OAAS,EAElHlD,KAAK+xF,WAAWnB,EAAM3tF,GAAI2uF,EAAeC,IAIrC7xF,KAAK4b,MAAM4hE,QAAUx9E,KAAK4b,MAAMm0E,kBAEhC/vF,KAAKgyF,aAAahyF,KAAK4b,MAAM8zE,cAEhB,IAATS,EAEAnwF,KAAKsN,QAAQ2kF,WAAWrB,EAAM3tF,GAAI2uF,EAAeC,GAIjD7xF,KAAKkyF,cAActB,EAAM3tF,GAAI2uF,EAAeC,GAAe,IAI/D7xF,KAAK4b,MAAMoT,OAEXhvB,KAAKgyF,aAAahyF,KAAK4b,MAAM+zE,YAEhB,IAATQ,EAEAnwF,KAAKsN,QAAQ+vE,SAASuT,EAAM3tF,GAAI2uF,EAAeC,GAI/C7xF,KAAKkyF,cAActB,EAAM3tF,GAAI2uF,EAAeC,GAAe,IAM3E7xF,MAAK+X,iBAeT8Q,EAAO8pD,KAAK9vE,UAAUqvF,cAAgB,SAAU10D,EAAMn4B,EAAGC,EAAG0pB,GAExD,GAAI0jD,GAAOl1C,EAAK5F,MAAM,UAClBu4D,EAAOnwF,KAAK4b,MAAMu0E,KAClBgC,EAAO,CAEX,IAAIxxF,MAAM2R,QAAQ69E,GAId,IAAK,GAFDiB,GAAM,EAEDxsF,EAAI,EAAGA,EAAI8tE,EAAKxvE,OAAQ0B,IAEzBA,EAAI,IAEJwsF,GAAOjB,EAAKvrF,EAAI,IAGpButF,EAAO9sF,EAAI+rF,EAEPpiE,EAEAhvB,KAAKsN,QAAQ+vE,SAAS3K,EAAK9tE,GAAIutF,EAAM7sF,GAIrCtF,KAAKsN,QAAQ2kF,WAAWvf,EAAK9tE,GAAIutF,EAAM7sF,OAM/C,KAAK,GAAIV,GAAI,EAAGA,EAAI8tE,EAAKxvE,OAAQ0B,IACjC,CACI,GAAIysF,GAAUxwF,KAAKgH,KAAK7H,KAAKsN,QAAQ6jF,YAAYze,EAAK9tE,IAAI+B,MAG1DwrF,GAAOnyF,KAAKE,KAAKooC,KAAKgpD,WAAWjsF,EAAG8qF,GAEhCnhE,EAEAhvB,KAAKsN,QAAQ+vE,SAAS3K,EAAK9tE,GAAIutF,EAAM7sF,GAIrCtF,KAAKsN,QAAQ2kF,WAAWvf,EAAK9tE,GAAIutF,EAAM7sF,GAG3CD,EAAI8sF,EAAOd,IAavBxoE,EAAO8pD,KAAK9vE,UAAUmvF,aAAe,SAAU1oD,GAEvCA,GAEAtpC,KAAKsN,QAAQqvE,cAAgB38E,KAAK4b,MAAM+gE,cACxC38E,KAAKsN,QAAQsvE,cAAgB58E,KAAK4b,MAAMghE,cACxC58E,KAAKsN,QAAQmvE,YAAcz8E,KAAK4b,MAAM6gE,YACtCz8E,KAAKsN,QAAQovE,WAAa18E,KAAK4b,MAAM8gE,aAIrC18E,KAAKsN,QAAQqvE,cAAgB,EAC7B38E,KAAKsN,QAAQsvE,cAAgB,EAC7B58E,KAAKsN,QAAQmvE,YAAc,EAC3Bz8E,KAAKsN,QAAQovE,WAAa,IAalC7zD,EAAO8pD,KAAK9vE,UAAUquF,YAAc,SAAU1zD,GAI1C,IAAK,GAFD40D,GAAa,EAERnvF,EAAI,EAAGA,EAAIu6B,EAAKt6B,OAAQD,IACjC,CACI,GAAIovF,GAAS70D,EAAKv6B,EAElB,IAAIjD,KAAK+uF,YAAY7rF,OAAS,GAAKlD,KAAK8uF,WAAW5rF,OAAS,EAC5D,CACI,GAAIioE,GAAanrE,KAAKowF,iBAAiBpwF,KAAKsN,QAAQgmE,KAEhDtzE,MAAK8uF,WAAW9uF,KAAKsvF,cAErBnkB,EAAWklB,UAAYrwF,KAAK8uF,WAAW9uF,KAAKsvF,aAG5CtvF,KAAK+uF,YAAY/uF,KAAKsvF,cAEtBnkB,EAAWolB,WAAavwF,KAAK+uF,YAAY/uF,KAAKsvF,aAGlDtvF,KAAKsN,QAAQgmE,KAAOtzE,KAAKywF,iBAAiBtlB,GAG1CnrE,KAAK4b,MAAM4hE,QAAUx9E,KAAK4b,MAAMm0E,kBAE5B/vF,KAAK6uF,aAAa7uF,KAAKsvF,cAEvBtvF,KAAKsN,QAAQ8jB,YAAcpxB,KAAK6uF,aAAa7uF,KAAKsvF,aAGtDtvF,KAAKgyF,aAAahyF,KAAK4b,MAAM8zE,eAG7B1vF,KAAK4b,MAAMoT,OAEPhvB,KAAK4hB,OAAO5hB,KAAKsvF,cAEjBtvF,KAAKsN,QAAQua,UAAY7nB,KAAK4hB,OAAO5hB,KAAKsvF,aAG9CtvF,KAAKgyF,aAAahyF,KAAK4b,MAAM+zE,aAGjCyC,GAAcpyF,KAAKsN,QAAQ6jF,YAAYkB,GAAQ1rF,MAE/C3G,KAAKsvF,aAGT,MAAOzuF,MAAKgH,KAAKuqF,IASrBvpE,EAAO8pD,KAAK9vE,UAAUkvF,WAAa,SAAUv0D,EAAMn4B,EAAGC,GAElD,IAAK,GAAIrC,GAAI,EAAGA,EAAIu6B,EAAKt6B,OAAQD,IACjC,CACI,GAAIovF,GAAS70D,EAAKv6B,EAElB,IAAIjD,KAAK+uF,YAAY7rF,OAAS,GAAKlD,KAAK8uF,WAAW5rF,OAAS,EAC5D,CACI,GAAIioE,GAAanrE,KAAKowF,iBAAiBpwF,KAAKsN,QAAQgmE,KAEhDtzE,MAAK8uF,WAAW9uF,KAAKsvF,cAErBnkB,EAAWklB,UAAYrwF,KAAK8uF,WAAW9uF,KAAKsvF,aAG5CtvF,KAAK+uF,YAAY/uF,KAAKsvF,cAEtBnkB,EAAWolB,WAAavwF,KAAK+uF,YAAY/uF,KAAKsvF,aAGlDtvF,KAAKsN,QAAQgmE,KAAOtzE,KAAKywF,iBAAiBtlB,GAG1CnrE,KAAK4b,MAAM4hE,QAAUx9E,KAAK4b,MAAMm0E,kBAE5B/vF,KAAK6uF,aAAa7uF,KAAKsvF,cAEvBtvF,KAAKsN,QAAQ8jB,YAAcpxB,KAAK6uF,aAAa7uF,KAAKsvF,aAGtDtvF,KAAKgyF,aAAahyF,KAAK4b,MAAM8zE,cAC7B1vF,KAAKsN,QAAQ2kF,WAAWI,EAAQhtF,EAAGC,IAGnCtF,KAAK4b,MAAMoT,OAEPhvB,KAAK4hB,OAAO5hB,KAAKsvF,cAEjBtvF,KAAKsN,QAAQua,UAAY7nB,KAAK4hB,OAAO5hB,KAAKsvF,aAG9CtvF,KAAKgyF,aAAahyF,KAAK4b,MAAM+zE,YAC7B3vF,KAAKsN,QAAQ+vE,SAASgV,EAAQhtF,EAAGC,IAGrCD,GAAKrF,KAAKsN,QAAQ6jF,YAAYkB,GAAQ1rF,MAEtC3G,KAAKsvF,eAWbzmE,EAAO8pD,KAAK9vE,UAAUyvF,YAAc,WAMhC,MAJAtyF,MAAK4hB,UACL5hB,KAAK6uF,gBACL7uF,KAAKiU,OAAQ,EAENjU,MAUX6oB,EAAO8pD,KAAK9vE,UAAU0vF,gBAAkB,WAMpC,MAJAvyF,MAAK8uF,cACL9uF,KAAK+uF,eACL/uF,KAAKiU,OAAQ,EAENjU,MAmBX6oB,EAAO8pD,KAAK9vE,UAAU2vF,SAAW,SAAU55E,EAAOzX,GAK9C,MAHAnB,MAAK4hB,OAAOzgB,GAAYyX,EACxB5Y,KAAKiU,OAAQ,EAENjU,MAqBX6oB,EAAO8pD,KAAK9vE,UAAU4vF,eAAiB,SAAU75E,EAAOzX,GAKpD,MAHAnB,MAAK6uF,aAAa1tF,GAAYyX,EAC9B5Y,KAAKiU,OAAQ,EAENjU,MAmBX6oB,EAAO8pD,KAAK9vE,UAAU6vF,aAAe,SAAU92E,EAAOza,GAKlD,MAHAnB,MAAK8uF,WAAW3tF,GAAYya,EAC5B5b,KAAKiU,OAAQ,EAENjU,MAmBX6oB,EAAO8pD,KAAK9vE,UAAU8vF,cAAgB,SAAUC,EAAQzxF,GAKpD,MAHAnB,MAAK+uF,YAAY5tF,GAAYyxF,EAC7B5yF,KAAKiU,OAAQ,EAENjU,MAeX6oB,EAAO8pD,KAAK9vE,UAAUgwF,qBAAuB,SAAUngB,GAEnD1yE,KAAK8H,QAAQiE,YAAY1F,WAAarG,KAAKkvF,KAC3ClvF,KAAKsN,QAAQgmE,KAAOtzE,KAAK4b,MAAM03D,IAE/B,IAAIwf,GAAe9yF,KAAK2wF,YAAYje,EAEpC,OAAOogB,GAAal7D,MAAM,mBAW9B/O,EAAO8pD,KAAK9vE,UAAU8tF,YAAc,SAAUje,GAE1C,MAAI1yE,MAAKivF,gBAEEjvF,KAAK+yF,iBAAiBrgB,GAItB1yE,KAAKgzF,cAActgB,IAelC7pD,EAAO8pD,KAAK9vE,UAAUkwF,iBAAmB,SAAUrgB,GAe/C,IAAK,GAbDplE,GAAUtN,KAAKsN,QACf2iF,EAAgBjwF,KAAK4b,MAAMq0E,cAE3B30D,EAAS,GAITs1D,EAAQle,EACPz4C,QAAQ,OAAQ,KAChBrC,MAAM,WAEPq7D,EAAarC,EAAM1tF,OAEdD,EAAI,EAAOgwF,EAAJhwF,EAAgBA,IAChC,CACI,GAAIu6B,GAAOozD,EAAM3tF,GACb43B,EAAM,EAGV2C,GAAOA,EAAKvD,QAAQ,aAAc,GAIlC,IAAIsjD,GAAYjwE,EAAQ6jF,YAAY3zD,GAAM72B,KAE1C,IAAgBspF,EAAZ1S,EAEAjiD,GAAUkC,EAAO,SAFrB,CAYA,IAAK,GALD01D,GAAmBjD,EAGnBkD,EAAQ31D,EAAK5F,MAAM,KAEd9zB,EAAI,EAAGA,EAAIqvF,EAAMjwF,OAAQY,IAClC,CACI,GAAIsvF,GAAOD,EAAMrvF,GACbuvF,EAAgBD,EAAO,IACvBE,EAAYhmF,EAAQ6jF,YAAYkC,GAAe1sF,KAEnD,IAAI2sF,EAAYJ,EAChB,CAEI,GAAU,IAANpvF,EACJ,CAII,IAFA,GAAIyvF,GAAUF,EAEPE,EAAQrwF,SAEXqwF,EAAUA,EAAQl9D,MAAM,EAAG,IAC3Bi9D,EAAYhmF,EAAQ6jF,YAAYoC,GAAS5sF,QAExBusF,GAAbI,MAQR,IAAKC,EAAQrwF,OAET,KAAM,IAAI4F,OAAM,qEAIpB,IAAI0qF,GAAaJ,EAAKrrE,OAAOwrE,EAAQrwF,OAErCiwF,GAAMrvF,GAAK0vF,EAGX34D,GAAO04D,EAIX,GAAI75E,GAAUy5E,EAAMrvF,GAAS,OAAIA,EAAIA,EAAI,EAGrC++E,EAAYsQ,EAAM98D,MAAM3c,GAAQnH,KAAK,KAExC0nB,QAAQ,YAAa,GAGtB22D,GAAM3tF,EAAI,GAAK4/E,EAAY,KAAO+N,EAAM3tF,EAAI,IAAM,IAClDgwF,EAAarC,EAAM1tF,MAEnB,OAMA23B,GAAOw4D,EACPH,GAAoBI,EAK5Bh4D,GAAUT,EAAIZ,QAAQ,YAAa,IAAM,MAM7C,MAFAqB,GAASA,EAAOrB,QAAQ,cAAe,KAa3CpR,EAAO8pD,KAAK9vE,UAAUmwF,cAAgB,SAAUtgB,GAK5C,IAAK,GAHDthE,GAAS,GACTw/E,EAAQle,EAAK96C,MAAM,MAEd30B,EAAI,EAAGA,EAAI2tF,EAAM1tF,OAAQD,IAClC,CAII,IAAK,GAHDwwF,GAAYzzF,KAAK4b,MAAMq0E,cACvBkD,EAAQvC,EAAM3tF,GAAG20B,MAAM,KAElB9zB,EAAI,EAAGA,EAAIqvF,EAAMjwF,OAAQY,IAClC,CACI,GAAIwvF,GAAYtzF,KAAKsN,QAAQ6jF,YAAYgC,EAAMrvF,IAAI6C,MAC/C+sF,EAAqBJ,EAAYtzF,KAAKsN,QAAQ6jF,YAAY,KAAKxqF,KAE/D+sF,GAAqBD,GAGjB3vF,EAAI,IAEJsN,GAAU,MAEdA,GAAU+hF,EAAMrvF,GAAK,IACrB2vF,EAAYzzF,KAAK4b,MAAMq0E,cAAgBqD,IAIvCG,GAAaC,EACbtiF,GAAU+hF,EAAMrvF,GAAK,KAIzBb,EAAI2tF,EAAM1tF,OAAO,IAEjBkO,GAAU,MAIlB,MAAOA,IAWXyX,EAAO8pD,KAAK9vE,UAAU8wF,WAAa,SAAUxoB,GAEzC,GAAImI,GAAOtzE,KAAKywF,iBAAiBtlB,EAE7BnrE,MAAK4b,MAAM03D,OAASA,IAEpBtzE,KAAK4b,MAAM03D,KAAOA,EAClBtzE,KAAKiU,OAAQ,EAETjU,KAAK4B,QAEL5B,KAAKuE,oBAajBskB,EAAO8pD,KAAK9vE,UAAUutF,iBAAmB,SAAU9c,GAU/C,GAAIpyC,GAAIoyC,EAAKtJ,MAAM,uSAEnB,IAAI9oC,EACJ,CACI,GAAI0yD,GAAS1yD,EAAE,GAAGpzB,MAQlB,OALK,2DAA2D+lF,KAAKD,IAAY,QAAQC,KAAKD,KAE1FA,EAAS,IAAMA,EAAS,MAIxBtgB,KAAMA,EACN+c,UAAWnvD,EAAE,IAAM,SACnBovD,YAAapvD,EAAE,IAAM,SACrBqvD,WAAYrvD,EAAE,IAAM,SACpBsvD,SAAUtvD,EAAE,IAAM,SAClB4yD,WAAYF,GAOhB,MAFA9gF,SAAQwkB,KAAK,sCAAwCg8C,IAGjDA,KAAMA,IAalBzqD,EAAO8pD,KAAK9vE,UAAU4tF,iBAAmB,SAAUtlB,GAE/C,GACI1rB,GADA9nB,IAwBJ,OArBA8nB,GAAI0rB,EAAWklB,UACX5wC,GAAW,WAANA,GAAkB9nB,EAAM5zB,KAAK07C,GAEtCA,EAAI0rB,EAAWmlB,YACX7wC,GAAW,WAANA,GAAkB9nB,EAAM5zB,KAAK07C,GAEtCA,EAAI0rB,EAAWolB,WACX9wC,GAAW,WAANA,GAAkB9nB,EAAM5zB,KAAK07C,GAEtCA,EAAI0rB,EAAWqlB,SACX/wC,GAAW,WAANA,GAAkB9nB,EAAM5zB,KAAK07C,GAEtCA,EAAI0rB,EAAW2oB,WACXr0C,GAAK9nB,EAAM5zB,KAAK07C,GAEf9nB,EAAMz0B,QAGPy0B,EAAM5zB,KAAKonE,EAAWmI,MAGnB37C,EAAMplB,KAAK,MAatBsW,EAAO8pD,KAAK9vE,UAAUkxF,QAAU,SAAUrhB,GAKtC,MAHA1yE,MAAK0yE,KAAOA,EAAK5qD,YAAc,GAC/B9nB,KAAKiU,OAAQ,EAENjU,MAyBX6oB,EAAO8pD,KAAK9vE,UAAUmxF,UAAY,SAAU1L,GAExC,IAAK3nF,MAAM2R,QAAQg2E,GAEf,MAAOtoF,KAMP,KAAK,GAFDyhC,GAAI,GAECx+B,EAAI,EAAGA,EAAIqlF,EAAKplF,OAAQD,IAEzBtC,MAAM2R,QAAQg2E,EAAKrlF,KAEnBw+B,GAAK6mD,EAAKrlF,GAAGsP,KAAK,KAEdtP,EAAIqlF,EAAKplF,OAAS,IAElBu+B,GAAK,QAKTA,GAAK6mD,EAAKrlF,GAENA,EAAIqlF,EAAKplF,OAAS,IAElBu+B,GAAK,KASrB,OAHAzhC,MAAK0yE,KAAOjxC,EACZzhC,KAAKiU,OAAQ,EAENjU,MAmCX6oB,EAAO8pD,KAAK9vE,UAAUoxF,cAAgB,SAAU5uF,EAAGC,EAAGqB,EAAOC,GAyBzD,MAvBU8C,UAANrE,EAEArF,KAAK4uF,WAAa,MAIb5uF,KAAK4uF,WAMN5uF,KAAK4uF,WAAW5zD,MAAM31B,EAAGC,EAAGqB,EAAOC,GAJnC5G,KAAK4uF,WAAa,GAAI/lE,GAAOrmB,UAAU6C,EAAGC,EAAGqB,EAAOC,GAOpD5G,KAAK4b,MAAMq0E,cAAgBtpF,IAE3B3G,KAAK4b,MAAMq0E,cAAgBtpF,IAInC3G,KAAK+X,gBAEE/X,MAUX6oB,EAAO8pD,KAAK9vE,UAAUkV,cAAgB,WAElC,GAAIi5D,GAAOhxE,KAAK8H,QAAQiE,YACpBqB,EAAOpN,KAAK8H,QAAQsF,KACpBlB,EAAQlM,KAAK8H,QAAQoE,MAErB0L,EAAI5X,KAAK4Q,OAAOjK,MAChByc,EAAIpjB,KAAK4Q,OAAOhK,MAiBpB,IAfAoqE,EAAKrqE,MAAQiR,EACbo5D,EAAKpqE,OAASwc,EAEdhW,EAAKzG,MAAQiR,EACbxK,EAAKxG,OAASwc,EAEdlX,EAAMvF,MAAQiR,EACd1L,EAAMtF,OAASwc,EAEfpjB,KAAK8H,QAAQnB,MAAQiR,EACrB5X,KAAK8H,QAAQlB,OAASwc,EAEtBpjB,KAAKsI,OAASsP,EACd5X,KAAKuI,QAAU6a,EAEXpjB,KAAK4uF,WACT,CACI,GAAIvpF,GAAIrF,KAAK4uF,WAAWvpF,EACpBC,EAAItF,KAAK4uF,WAAWtpF,CAGQ,WAA5BtF,KAAK4b,MAAMi0E,aAEXxqF,GAAKrF,KAAK4uF,WAAWjoF,MAAQ3G,KAAK4Q,OAAOjK,MAER,WAA5B3G,KAAK4b,MAAMi0E,eAEhBxqF,GAAKrF,KAAK4uF,WAAWzyD,UAAan8B,KAAK4Q,OAAOjK,MAAQ,GAG1B,WAA5B3G,KAAK4b,MAAMk0E,aAEXxqF,GAAKtF,KAAK4uF,WAAWhoF,OAAS5G,KAAK4Q,OAAOhK,OAET,WAA5B5G,KAAK4b,MAAMk0E,eAEhBxqF,GAAKtF,KAAK4uF,WAAWvyD,WAAcr8B,KAAK4Q,OAAOhK,OAAS,GAG5D5G,KAAKsB,MAAM+D,GAAKA,EAChBrF,KAAKsB,MAAMgE,GAAKA,EAIpBtF,KAAK2B,WAAoB,IAANiW,GAAiB,IAANwL,EAE9BpjB,KAAK8H,QAAQwG,gBAAiB,EAE9BtO,KAAK8H,QAAQiE,YAAYkI,SAW7B4U,EAAO8pD,KAAK9vE,UAAU6E,aAAe,SAAUJ,GAEvCtH,KAAKiU,QAELjU,KAAKwvF,aACLxvF,KAAKiU,OAAQ,GAGjBhU,KAAKwH,OAAO5E,UAAU6E,aAAahC,KAAK1F,KAAMsH,IAWlDuhB,EAAO8pD,KAAK9vE,UAAU8E,cAAgB,SAAUL,GAExCtH,KAAKiU,QAELjU,KAAKwvF,aACLxvF,KAAKiU,OAAQ,GAGjBhU,KAAKwH,OAAO5E,UAAU8E,cAAcjC,KAAK1F,KAAMsH,IAWnDuhB,EAAO8pD,KAAK9vE,UAAUmuF,wBAA0B,SAAUX,GAEtD,GAAI6D,GAAarrE,EAAO8pD,KAAKwhB,oBAAoB9D,EAEjD,KAAK6D,EACL,CACIA,IAEA,IAAItjF,GAASiY,EAAO8pD,KAAKyhB,qBACrB9mF,EAAUub,EAAO8pD,KAAK0hB,qBAE1B/mF,GAAQgmE,KAAO+c,CAEf,IAAI1pF,GAAQ9F,KAAKgH,KAAKyF,EAAQ6jF,YAAY,QAAQxqF,OAC9C2tF,EAAWzzF,KAAKgH,KAAKyF,EAAQ6jF,YAAY,QAAQxqF,OACjDC,EAAS,EAAI0tF,CAgBjB,IAdAA,EAAsB,IAAXA,EAAiB,EAE5B1jF,EAAOjK,MAAQA,EACfiK,EAAOhK,OAASA,EAEhB0G,EAAQua,UAAY,OACpBva,EAAQ0a,SAAS,EAAG,EAAGrhB,EAAOC,GAE9B0G,EAAQgmE,KAAO+c,EAEf/iF,EAAQmkF,aAAe,aACvBnkF,EAAQua,UAAY,OACpBva,EAAQ+vE,SAAS,OAAQ,EAAGiX,IAEvBhnF,EAAQyD,aAAa,EAAG,EAAGpK,EAAOC,GAQnC,MANAstF,GAAWpC,OAASwC,EACpBJ,EAAWK,QAAUD,EAAW,EAChCJ,EAAW1D,SAAW0D,EAAWpC,OAASoC,EAAWK,QAErD1rE,EAAO8pD,KAAKwhB,oBAAoB9D,GAAa6D,EAEtCA,CAGX,IAIIjxF,GAAGa,EAJH0wF,EAAYlnF,EAAQyD,aAAa,EAAG,EAAGpK,EAAOC,GAAQoK,KACtDoX,EAASosE,EAAUtxF,OACnBs6B,EAAe,EAAR72B,EAIP2K,EAAM,EACNrG,GAAO,CAGX,KAAKhI,EAAI,EAAOqxF,EAAJrxF,EAAcA,IAC1B,CACI,IAAKa,EAAI,EAAO05B,EAAJ15B,EAAUA,GAAK,EAEvB,GAA2B,MAAvB0wF,EAAUljF,EAAMxN,GACpB,CACImH,GAAO,CACP,OAIR,GAAKA,EAMD,KAJAqG,IAAOksB,EAcf,IANA02D,EAAWpC,OAASwC,EAAWrxF,EAE/BqO,EAAM8W,EAASoV,EACfvyB,GAAO,EAGFhI,EAAI2D,EAAQ3D,EAAIqxF,EAAUrxF,IAC/B,CACI,IAAKa,EAAI,EAAO05B,EAAJ15B,EAAUA,GAAK,EAEvB,GAA2B,MAAvB0wF,EAAUljF,EAAMxN,GACpB,CACImH,GAAO,CACP,OAIR,GAAKA,EAMD,KAJAqG,IAAOksB,EAQf02D,EAAWK,QAAUtxF,EAAIqxF,EAEzBJ,EAAWK,SAAW,EACtBL,EAAW1D,SAAW0D,EAAWpC,OAASoC,EAAWK,QAErD1rE,EAAO8pD,KAAKwhB,oBAAoB9D,GAAa6D,EAGjD,MAAOA,IAYXrrE,EAAO8pD,KAAK9vE,UAAUgD,UAAY,SAAUC,GAQxC,MANI9F,MAAKiU,QAELjU,KAAKwvF,aACLxvF,KAAKiU,OAAQ,GAGVhU,KAAKwH,OAAO5E,UAAUgD,UAAUH,KAAK1F,KAAM8F,IAYtD1C,OAAOC,eAAewlB,EAAO8pD,KAAK9vE,UAAW,QAEzCS,IAAK,WACD,MAAOtD,MAAKmvF,OAGhB3rF,IAAK,SAASC,GAENA,IAAUzD,KAAKmvF,QAEfnvF,KAAKmvF,MAAQ1rF,EAAMqkB,YAAc,GACjC9nB,KAAKiU,OAAQ,EAETjU,KAAK4B,QAEL5B,KAAKuE,sBAmBrBnB,OAAOC,eAAewlB,EAAO8pD,KAAK9vE,UAAW,WAEzCS,IAAK,WACD,MAAOtD,MAAKywF,iBAAiBzwF,KAAKovF,kBAGtC5rF,IAAK,SAAUC,GAEXA,EAAQA,GAAS,kBACjBzD,KAAKovF,gBAAkBpvF,KAAKowF,iBAAiB3sF,GAC7CzD,KAAK2zF,WAAW3zF,KAAKovF,oBAgB7BhsF,OAAOC,eAAewlB,EAAO8pD,KAAK9vE,UAAW,QAEzCS,IAAK,WACD,MAAOtD,MAAKovF,gBAAgB0E,YAGhCtwF,IAAK,SAASC,GAEVA,EAAQA,GAAS,QACjBA,EAAQA,EAAMqK,OAGT,2DAA2D+lF,KAAKpwF,IAAW,QAAQowF,KAAKpwF,KAEzFA,EAAQ,IAAMA,EAAQ,KAG1BzD,KAAKovF,gBAAgB0E,WAAarwF,EAClCzD,KAAK2zF,WAAW3zF,KAAKovF,oBAe7BhsF,OAAOC,eAAewlB,EAAO8pD,KAAK9vE,UAAW,YAEzCS,IAAK,WAED,GAAIie,GAAOvhB,KAAKovF,gBAAgBoB,QAEhC,OAAIjvE,IAAQ,cAAcsyE,KAAKtyE,GAEpBoX,SAASpX,EAAM,IAIfA,GAKf/d,IAAK,SAASC,GAEVA,EAAQA,GAAS,IAEI,gBAAVA,KAEPA,GAAgB,MAGpBzD,KAAKovF,gBAAgBoB,SAAW/sF,EAChCzD,KAAK2zF,WAAW3zF,KAAKovF,oBAW7BhsF,OAAOC,eAAewlB,EAAO8pD,KAAK9vE,UAAW,cAEzCS,IAAK,WACD,MAAOtD,MAAKovF,gBAAgBmB,YAAc,UAG9C/sF,IAAK,SAASC,GAEVA,EAAQA,GAAS,SACjBzD,KAAKovF,gBAAgBmB,WAAa9sF,EAClCzD,KAAK2zF,WAAW3zF,KAAKovF,oBAW7BhsF,OAAOC,eAAewlB,EAAO8pD,KAAK9vE,UAAW,aAEzCS,IAAK,WACD,MAAOtD,MAAKovF,gBAAgBiB,WAAa,UAG7C7sF,IAAK,SAASC,GAEVA,EAAQA,GAAS,SACjBzD,KAAKovF,gBAAgBiB,UAAY5sF,EACjCzD,KAAK2zF,WAAW3zF,KAAKovF,oBAW7BhsF,OAAOC,eAAewlB,EAAO8pD,KAAK9vE,UAAW,eAEzCS,IAAK,WACD,MAAOtD,MAAKovF,gBAAgBkB,aAAe,UAG/C9sF,IAAK,SAASC,GAEVA,EAAQA,GAAS,SACjBzD,KAAKovF,gBAAgBkB,YAAc7sF,EACnCzD,KAAK2zF,WAAW3zF,KAAKovF,oBAU7BhsF,OAAOC,eAAewlB,EAAO8pD,KAAK9vE,UAAW,QAEzCS,IAAK,WACD,MAAOtD,MAAK4b,MAAMoT,MAGtBxrB,IAAK,SAASC,GAENA,IAAUzD,KAAK4b,MAAMoT,OAErBhvB,KAAK4b,MAAMoT,KAAOvrB,EAClBzD,KAAKiU,OAAQ,MAczB7Q,OAAOC,eAAewlB,EAAO8pD,KAAK9vE,UAAW,SAEzCS,IAAK,WACD,MAAOtD,MAAK4b,MAAMy7B,OAGtB7zC,IAAK,SAASC,GAENA,IAAUzD,KAAK4b,MAAMy7B,QAErBr3C,KAAK4b,MAAMy7B,MAAQ5zC,EACnBzD,KAAKiU,OAAQ,MAazB7Q,OAAOC,eAAewlB,EAAO8pD,KAAK9vE,UAAW,cAEzCS,IAAK,WACD,MAAOtD,MAAKkvF,MAGhB1rF,IAAK,SAASC,GAENA,IAAUzD,KAAKkvF,OAEflvF,KAAKkvF,KAAOzrF,EACZzD,KAAKiU,OAAQ,MAgBzB7Q,OAAOC,eAAewlB,EAAO8pD,KAAK9vE,UAAW,QAEzCS,IAAK,WACD,MAAOtD,MAAK4b,MAAMu0E,MAGtB3sF,IAAK,SAASC,GAENA,IAAUzD,KAAK4b,MAAMu0E,OAErBnwF,KAAK4b,MAAMu0E,KAAO1sF,EAClBzD,KAAKiU,OAAQ,MAYzB7Q,OAAOC,eAAewlB,EAAO8pD,KAAK9vE,UAAW,gBAEzCS,IAAK,WACD,MAAOtD,MAAK4b,MAAMi0E,cAGtBrsF,IAAK,SAASC,GAENA,IAAUzD,KAAK4b,MAAMi0E,eAErB7vF,KAAK4b,MAAMi0E,aAAepsF,EAC1BzD,KAAKiU,OAAQ,MAYzB7Q,OAAOC,eAAewlB,EAAO8pD,KAAK9vE,UAAW,gBAEzCS,IAAK,WACD,MAAOtD,MAAK4b,MAAMk0E,cAGtBtsF,IAAK,SAASC,GAENA,IAAUzD,KAAK4b,MAAMk0E,eAErB9vF,KAAK4b,MAAMk0E,aAAersF,EAC1BzD,KAAKiU,OAAQ,MAWzB7Q,OAAOC,eAAewlB,EAAO8pD,KAAK9vE,UAAW,UAEzCS,IAAK,WACD,MAAOtD,MAAK4b,MAAM4hE,QAGtBh6E,IAAK,SAASC,GAENA,IAAUzD,KAAK4b,MAAM4hE,SAErBx9E,KAAK4b,MAAM4hE,OAAS/5E,EACpBzD,KAAKiU,OAAQ,MAWzB7Q,OAAOC,eAAewlB,EAAO8pD,KAAK9vE,UAAW,mBAEzCS,IAAK,WACD,MAAOtD,MAAK4b,MAAMm0E,iBAGtBvsF,IAAK,SAASC,GAENA,IAAUzD,KAAK4b,MAAMm0E,kBAErB/vF,KAAK4b,MAAMm0E,gBAAkBtsF,EAC7BzD,KAAKiU,OAAQ,MAWzB7Q,OAAOC,eAAewlB,EAAO8pD,KAAK9vE,UAAW,YAEzCS,IAAK,WACD,MAAOtD,MAAK4b,MAAMo0E,UAGtBxsF,IAAK,SAASC,GAENA,IAAUzD,KAAK4b,MAAMo0E,WAErBhwF,KAAK4b,MAAMo0E,SAAWvsF,EACtBzD,KAAKiU,OAAQ,MAWzB7Q,OAAOC,eAAewlB,EAAO8pD,KAAK9vE,UAAW,iBAEzCS,IAAK,WACD,MAAOtD,MAAK4b,MAAMq0E,eAGtBzsF,IAAK,SAASC,GAENA,IAAUzD,KAAK4b,MAAMq0E,gBAErBjwF,KAAK4b,MAAMq0E,cAAgBxsF,EAC3BzD,KAAKiU,OAAQ,MAWzB7Q,OAAOC,eAAewlB,EAAO8pD,KAAK9vE,UAAW,eAEzCS,IAAK,WACD,MAAOtD,MAAKqvF,cAGhB7rF,IAAK,SAASC,GAENA,IAAUzD,KAAKqvF,eAEfrvF,KAAKqvF,aAAeoF,WAAWhxF,GAC/BzD,KAAKiU,OAAQ,EAETjU,KAAK4B,QAEL5B,KAAKuE,sBAYrBnB,OAAOC,eAAewlB,EAAO8pD,KAAK9vE,UAAW,iBAEzCS,IAAK,WACD,MAAOtD,MAAK4b,MAAM+gE,eAGtBn5E,IAAK,SAASC,GAENA,IAAUzD,KAAK4b,MAAM+gE,gBAErB38E,KAAK4b,MAAM+gE,cAAgBl5E,EAC3BzD,KAAKiU,OAAQ,MAWzB7Q,OAAOC,eAAewlB,EAAO8pD,KAAK9vE,UAAW,iBAEzCS,IAAK,WACD,MAAOtD,MAAK4b,MAAMghE,eAGtBp5E,IAAK,SAASC,GAENA,IAAUzD,KAAK4b,MAAMghE,gBAErB58E,KAAK4b,MAAMghE,cAAgBn5E,EAC3BzD,KAAKiU,OAAQ,MAWzB7Q,OAAOC,eAAewlB,EAAO8pD,KAAK9vE,UAAW,eAEzCS,IAAK,WACD,MAAOtD,MAAK4b,MAAM6gE,aAGtBj5E,IAAK,SAASC,GAENA,IAAUzD,KAAK4b,MAAM6gE,cAErBz8E,KAAK4b,MAAM6gE,YAAch5E,EACzBzD,KAAKiU,OAAQ,MAWzB7Q,OAAOC,eAAewlB,EAAO8pD,KAAK9vE,UAAW,cAEzCS,IAAK,WACD,MAAOtD,MAAK4b,MAAM8gE,YAGtBl5E,IAAK,SAASC,GAENA,IAAUzD,KAAK4b,MAAM8gE,aAErB18E,KAAK4b,MAAM8gE,WAAaj5E,EACxBzD,KAAKiU,OAAQ,MAWzB7Q,OAAOC,eAAewlB,EAAO8pD,KAAK9vE,UAAW,gBAEzCS,IAAK,WACD,MAAOtD,MAAK4b,MAAM8zE,cAGtBlsF,IAAK,SAASC,GAENA,IAAUzD,KAAK4b,MAAM8zE,eAErB1vF,KAAK4b,MAAM8zE,aAAejsF,EAC1BzD,KAAKiU,OAAQ,MAWzB7Q,OAAOC,eAAewlB,EAAO8pD,KAAK9vE,UAAW,cAEzCS,IAAK,WACD,MAAOtD,MAAK4b,MAAM+zE,YAGtBnsF,IAAK,SAASC,GAENA,IAAUzD,KAAK4b,MAAM+zE,aAErB3vF,KAAK4b,MAAM+zE,WAAalsF,EACxBzD,KAAKiU,OAAQ,MAWzB7Q,OAAOC,eAAewlB,EAAO8pD,KAAK9vE,UAAW,SAEzCS,IAAK,WAQD,MANItD,MAAKiU,QAELjU,KAAKwvF,aACLxvF,KAAKiU,OAAQ,GAGVjU,KAAKqB,MAAMgE,EAAIrF,KAAK8H,QAAQoE,MAAMvF,OAG7CnD,IAAK,SAASC,GAEVzD,KAAKqB,MAAMgE,EAAI5B,EAAQzD,KAAK8H,QAAQoE,MAAMvF,MAC1C3G,KAAKsI,OAAS7E,KAStBL,OAAOC,eAAewlB,EAAO8pD,KAAK9vE,UAAW,UAEzCS,IAAK,WAQD,MANItD,MAAKiU,QAELjU,KAAKwvF,aACLxvF,KAAKiU,OAAQ,GAGVjU,KAAKqB,MAAMiE,EAAItF,KAAK8H,QAAQoE,MAAMtF,QAG7CpD,IAAK,SAASC,GAEVzD,KAAKqB,MAAMiE,EAAI7B,EAAQzD,KAAK8H,QAAQoE,MAAMtF,OAC1C5G,KAAKuI,QAAU9E,KAKvBolB,EAAO8pD,KAAKwhB,uBAEZtrE,EAAO8pD,KAAKyhB,qBAAuBn0F,KAAK4Q,WAAWxI,OAAOwgB,EAAO8pD,KAAKyhB,sBACtEvrE,EAAO8pD,KAAK0hB,sBAAwBxrE,EAAO8pD,KAAKyhB,qBAAqBtjF,WAAW,MAuDhF+X,EAAO+jD,WAAa,SAAU1sE,EAAMmF,EAAGC,EAAGguE,EAAMZ,EAAMnxD,EAAM81B,GAExDhyC,EAAIA,GAAK,EACTC,EAAIA,GAAK,EACTguE,EAAOA,GAAQ,GACfZ,EAAOA,GAAQ,GACfnxD,EAAOA,GAAQ,GACf81B,EAAQA,GAAS,OAEjBp3C,KAAKkI,uBAAuBzC,KAAK1F,MAMjCA,KAAKoV,KAAOyT,EAAOmK,WAMnBhzB,KAAK60C,YAAchsB,EAAO6J,OAM1B1yB,KAAK00F,UAAY,EAMjB10F,KAAK20F,WAAa,EAKlB30F,KAAKkI,OAAS,GAAI2gB,GAAOznB,MAMzBpB,KAAK40F,YAAc,GAAI/rE,GAAOznB,MAM9BpB,KAAK6sE,WAML7sE,KAAK60F,UAAY,EAMjB70F,KAAKmvF,MAAQzc,EAAK5qD,YAAc,GAMhC9nB,KAAK80F,MAAQ50F,EAAKgpC,MAAM6rD,cAAczhB,GAMtCtzE,KAAKg1F,MAAQ1hB,EAMbtzE,KAAKi1F,UAAY1zE,EAMjBvhB,KAAKk1F,OAAS79C,EAMdr3C,KAAKm1F,MAAQ,SAEbn1F,KAAKwvF,aAKLxvF,KAAKiU,OAAQ,EAEb4U,EAAOohD,UAAUgB,KAAK92D,KAAKzO,KAAK1F,KAAME,EAAMmF,EAAGC,EAAG,GAAI,OAI1DujB,EAAO+jD,WAAW/pE,UAAYO,OAAOiF,OAAOpI,KAAKkI,uBAAuBtF,WACxEgmB,EAAO+jD,WAAW/pE,UAAUC,YAAc+lB,EAAO+jD,WAEjD/jD,EAAOohD,UAAUgB,KAAKC,QAAQxlE,KAAKmjB,EAAO+jD,WAAW/pE,WACjD,QACA,WACA,SACA,UACA,gBACA,eACA,UACA,WACA,cACA,UAGJgmB,EAAO+jD,WAAW/pE,UAAU+xE,iBAAmB/rD,EAAOohD,UAAUqB,YAAYnlE,UAC5E0iB,EAAO+jD,WAAW/pE,UAAUgyE,kBAAoBhsD,EAAOohD,UAAUgG,SAAS9pE,UAC1E0iB,EAAO+jD,WAAW/pE,UAAUiyE,iBAAmBjsD,EAAOohD,UAAUyF,QAAQvpE,UACxE0iB,EAAO+jD,WAAW/pE,UAAUkyE,cAAgBlsD,EAAOohD,UAAUgB,KAAK9kE,UASlE0iB,EAAO+jD,WAAW/pE,UAAUsD,UAAY,WAEpC,MAAKnG,MAAK40E,oBAAuB50E,KAAK60E,qBAAwB70E,KAAK80E,mBAK5D90E,KAAK+0E,iBAHD,GAWflsD,EAAO+jD,WAAW/pE,UAAUmvC,WAAa,WAErCnpB,EAAOohD,UAAUqB,YAAYt5B,WAAWtsC,KAAK1F,MAC7C6oB,EAAOohD,UAAUwB,cAAcz5B,WAAWtsC,KAAK1F,MAE3CA,KAAKs2C,MAAQt2C,KAAKs2C,KAAKlhC,OAASyT,EAAO8rB,QAAQC,SAE1C50C,KAAK00F,YAAc10F,KAAKs2C,KAAK8+C,aAAiBp1F,KAAK20F,aAAe30F,KAAKs2C,KAAK++C,eAE7Er1F,KAAKs2C,KAAKzN,QAAQ7oC,KAAK00F,UAAW10F,KAAK20F,aAcnD9rE,EAAO+jD,WAAW/pE,UAAUkxF,QAAU,SAAUrhB,GAE5C1yE,KAAK0yE,KAAOA,GAehB7pD,EAAO+jD,WAAW/pE,UAAUyyF,SAAW,SAAUtkF,EAAM3P,EAAOqxE,GAW1D,IAAK,GATDrtE,GAAI,EACJuS,EAAI,EACJ29E,EAAY,GACZC,EAAe,EACfC,EAAe,KACfC,EAAY11F,KAAK60F,UAAY,EAAK70F,KAAK60F,UAAY,KACnDphB,KAGKxwE,EAAI,EAAGA,EAAIyvE,EAAKxvE,OAAQD,IACjC,CACI,GAAI8G,GAAO9G,IAAMyvE,EAAKxvE,OAAS,GAAK,GAAO,CAE3C,IAAI,iBAAiByyF,KAAKjjB,EAAKkjB,OAAO3yF,IAElC,OAAS0D,MAAOiR,EAAG86D,KAAMA,EAAK3qD,OAAO,EAAG9kB,GAAI8G,IAAKA,EAAK0pE,MAAOA,EAI7D,IAAI3P,GAAW4O,EAAK1O,WAAW/gE,GAC3B4yF,EAAW7kF,EAAKyiE,MAAM3P,GAEtBl/D,EAAI,CAIS8E,UAAbmsF,IAEA/xB,EAAW,GACX+xB,EAAW7kF,EAAKyiE,MAAM3P,GAI1B,IAAIgyB,GAAWL,GAAgBI,EAASC,QAAQL,GAAiBI,EAASC,QAAQL,GAAgB,CAYlG,IATI,OAAOE,KAAKjjB,EAAKkjB,OAAO3yF,MACxBsyF,EAAYtyF,EACZuyF,EAAe59E,GAInBhT,GAAKkxF,EAAUD,EAAS/tF,QAAQnB,MAAQkvF,EAAShiB,SAAWxyE,EAGxDq0F,GAAc99E,EAAIhT,GAAM8wF,GAAaH,EAAY,GAGjD,OAAS5uF,MAAO6uF,GAAgB59E,EAAG86D,KAAMA,EAAK3qD,OAAO,EAAG9kB,GAAKA,EAAIsyF,IAAaxrF,IAAKA,EAAK0pE,MAAOA,EAI/F77D,KAAMi+E,EAASE,SAAWD,GAAWz0F,EAErCoyE,EAAM1vE,KAAKsB,GAAKwwF,EAAShiB,QAAUiiB,GAAWz0F,GAE9CgE,IAAMwwF,EAASE,SAAWD,GAAWz0F,EAErCo0F,EAAe3xB,EAK3B,OAASn9D,MAAOiR,EAAG86D,KAAMA,EAAM3oE,IAAKA,EAAK0pE,MAAOA,IAepD5qD,EAAO+jD,WAAW/pE,UAAUmzF,UAAY,SAAUtjB,EAAMz4C,GAEpCvwB,SAAZuwB,IAEAA,EAAU,GAGd,IAAIjpB,GAAOhR,KAAK80F,MAAMxhB,IAEtB,KAAKtiE,EAED,MAAO,EAMX,KAAK,GAHDilF,GAAK,mBACLrF,EAAQle,EAAKz4C,QAAQg8D,EAAI,MAAMr+D,MAAM,MAEhC30B,EAAI,EAAGA,EAAI2tF,EAAM1tF,OAAQD,IAClC,CAII,IAAK,GAHDq4B,GAAS,GACTkC,EAAOozD,EAAM3tF,GAER2B,EAAI,EAAGA,EAAI44B,EAAKt6B,OAAQ0B,IAIzB02B,EAFAtqB,EAAKyiE,MAAMj2C,EAAKwmC,WAAWp/D,IAElB02B,EAAO5E,OAAO8G,EAAK54B,IAInB02B,EAAO5E,OAAOuD,EAI/B22D,GAAM3tF,GAAKq4B,EAGf,MAAOs1D,GAAMr+E,KAAK,OAUtBsW,EAAO+jD,WAAW/pE,UAAU2sF,WAAa,WAErC,GAAIx+E,GAAOhR,KAAK80F,MAAMxhB,IAEtB,IAAKtiE,EAAL,CAKA,GAAI0hE,GAAO1yE,KAAK0yE,KACZrxE,EAAQrB,KAAKi1F,UAAYjkF,EAAKuQ,KAC9BqvE,KAEAtrF,EAAI,CAERtF,MAAK00F,UAAY,CAEjB,GACA,CACI,GAAIl3D,GAAOx9B,KAAKs1F,SAAStkF,EAAM3P,EAAOqxE,EAEtCl1C,GAAKl4B,EAAIA,EAETsrF,EAAM7sF,KAAKy5B,GAEPA,EAAK72B,MAAQ3G,KAAK00F,YAElB10F,KAAK00F,UAAYl3D,EAAK72B,OAG1BrB,GAAM0L,EAAKugF,WAAalwF,EAExBqxE,EAAOA,EAAK3qD,OAAOyV,EAAKk1C,KAAKxvE,OAAS,SAEjCs6B,EAAKzzB,OAAQ,EAEtB/J,MAAK20F,WAAarvF,CAOlB,KAAK,GALD4xB,GAAI,EACJmgB,EAAQ,EACRwtC,EAAK7kF,KAAK00F,UAAY10F,KAAKkI,OAAO7C,EAClCy/E,EAAK9kF,KAAK20F,WAAa30F,KAAKkI,OAAO5C,EAE9BrC,EAAI,EAAGA,EAAI2tF,EAAM1tF,OAAQD,IAClC,CACI,GAAIu6B,GAAOozD,EAAM3tF,EAEG,WAAhBjD,KAAKk1F,OAEL79C,EAAQr3C,KAAK00F,UAAYl3D,EAAK72B,MAET,WAAhB3G,KAAKk1F,SAEV79C,GAASr3C,KAAK00F,UAAYl3D,EAAK72B,OAAS,EAG5C,KAAK,GAAI/B,GAAI,EAAGA,EAAI44B,EAAKk1C,KAAKxvE,OAAQ0B,IACtC,CACI,GAAIk/D,GAAWtmC,EAAKk1C,KAAK1O,WAAWp/D,GAChCixF,EAAW7kF,EAAKyiE,MAAM3P,EAETp6D,UAAbmsF,IAEA/xB,EAAW,GACX+xB,EAAW7kF,EAAKyiE,MAAM3P,GAG1B,IAAI3oD,GAAInb,KAAK6sE,QAAQ31C,EAEjB/b,GAGAA,EAAErT,QAAU+tF,EAAS/tF,SAKrBqT,EAAI,GAAIlb,MAAKwH,OAAOouF,EAAS/tF,SAC7BqT,EAAEue,KAAO8D,EAAKk1C,KAAK9tE,GACnB5E,KAAK6sE,QAAQ9oE,KAAKoX,IAGtBA,EAAEha,SAASkE,EAAKm4B,EAAKi2C,MAAM7uE,GAAKyyC,EAASwtC,EACzC1pE,EAAEha,SAASmE,EAAKk4B,EAAKl4B,EAAKuwF,EAAS/hB,QAAUzyE,EAAUyjF,EAEvD3pE,EAAE9Z,MAAMmC,IAAInC,GACZ8Z,EAAEzP,KAAO1L,KAAK0L,KACdyP,EAAErT,QAAQwG,gBAAiB,EAEtB6M,EAAEvZ,QAEH5B,KAAKwI,SAAS2S,GAGlB+b,KAMR,IAAKj0B,EAAIi0B,EAAGj0B,EAAIjD,KAAK6sE,QAAQ3pE,OAAQD,IAEjCjD,KAAK4I,YAAY5I,KAAK6sE,QAAQ5pE,MAkBtC4lB,EAAO+jD,WAAW/pE,UAAUqzF,YAAc,WAKtC,IAAK,GAHD/+D,GAAMn3B,KAAK6sE,QAAQ3pE,OACnBizF,KAEKlzF,EAAI,EAAGA,EAAIjD,KAAK6sE,QAAQ3pE,OAAQD,IAEjCjD,KAAK6sE,QAAQ5pE,GAAGrB,SAAW5B,KAE3BA,KAAK6sE,QAAQ5pE,GAAGF,UAIhBozF,EAAKpyF,KAAK/D,KAAK6sE,QAAQ5pE,GAS/B,OALAjD,MAAK6sE,WACL7sE,KAAK6sE,QAAUspB,EAEfn2F,KAAKwvF,aAEEr4D,EAAMg/D,EAAKjzF,QAUtB2lB,EAAO+jD,WAAW/pE,UAAU0B,gBAAkB,YAEtCvE,KAAKiU,QAAUjU,KAAKkI,OAAO4zB,OAAO97B,KAAK40F,gBAEvC50F,KAAKwvF,aACLxvF,KAAKiU,OAAQ,EACbjU,KAAK40F,YAAY35D,SAASj7B,KAAKkI,SAGnCjI,KAAKkI,uBAAuBtF,UAAU0B,gBAAgBmB,KAAK1F,OAQ/DoD,OAAOC,eAAewlB,EAAO+jD,WAAW/pE,UAAW,SAE/CS,IAAK,WACD,MAAOtD,MAAKk1F,QAGhB1xF,IAAK,SAASC,GAENA,IAAUzD,KAAKk1F,QAAqB,SAAVzxF,GAA8B,WAAVA,GAAgC,UAAVA,IAEpEzD,KAAKk1F,OAASzxF,EACdzD,KAAKwvF,iBAWjBpsF,OAAOC,eAAewlB,EAAO+jD,WAAW/pE,UAAW,QAE/CS,IAAK,WACD,MAAOtD,MAAKm1F,OAGhB3xF,IAAK,SAASC,GAENA,IAAUzD,KAAKm1F,QAEfn1F,KAAKm1F,MAAQ1xF,EACbzD,KAAKwvF,iBAWjBpsF,OAAOC,eAAewlB,EAAO+jD,WAAW/pE,UAAW,QAE/CS,IAAK,WACD,MAAOtD,MAAKg1F,OAGhBxxF,IAAK,SAASC,GAENA,IAAUzD,KAAKg1F,QAEfh1F,KAAKg1F,MAAQvxF,EAAMqK,OACnB9N,KAAK80F,MAAQ90F,KAAKE,KAAKgpC,MAAM6rD,cAAc/0F,KAAKg1F,OAChDh1F,KAAKwvF,iBAWjBpsF,OAAOC,eAAewlB,EAAO+jD,WAAW/pE,UAAW,YAE/CS,IAAK,WACD,MAAOtD,MAAKi1F,WAGhBzxF,IAAK,SAASC,GAEVA,EAAQk1B,SAASl1B,EAAO,IAEpBA,IAAUzD,KAAKi1F,WAAaxxF,EAAQ,IAEpCzD,KAAKi1F,UAAYxxF,EACjBzD,KAAKwvF,iBAWjBpsF,OAAOC,eAAewlB,EAAO+jD,WAAW/pE,UAAW,QAE/CS,IAAK,WACD,MAAOtD,MAAKmvF,OAGhB3rF,IAAK,SAASC,GAENA,IAAUzD,KAAKmvF,QAEfnvF,KAAKmvF,MAAQ1rF,EAAMqkB,YAAc,GACjC9nB,KAAKwvF,iBAoBjBpsF,OAAOC,eAAewlB,EAAO+jD,WAAW/pE,UAAW,YAE/CS,IAAK,WAED,MAAOtD,MAAK60F,WAIhBrxF,IAAK,SAASC,GAENA,IAAUzD,KAAK60F,YAEf70F,KAAK60F,UAAYpxF,EACjBzD,KAAKwvF,iBAiBjBpsF,OAAOC,eAAewlB,EAAO+jD,WAAW/pE,UAAW,YAE/CS,IAAK,WAED,OAAQtD,KAAK80F,MAAM9jB,KAAK1qE,WAI5B9C,IAAK,SAASC,GAENA,EAEAzD,KAAK80F,MAAM9jB,KAAK1qE,UAAY,EAI5BtG,KAAK80F,MAAM9jB,KAAK1qE,UAAY,KA+BxCuiB,EAAOkrD,UAAY,SAAU7zE,EAAM6U,EAAKw+D,EAAgBC,EAAiBC,EAAOC,EAAaC,EAAUC,EAAUC,EAASC,GAEtH,IAAK5zE,EAAKgpC,MAAMktD,cAAcrhF,GAE1B,OAAO,GAGSrL,SAAhBgqE,GAA6C,OAAhBA,KAE7BA,EAAcxzE,EAAKgpC,MAAMtd,SAAS7W,GAAKpO,MAAQ4sE,GAMnDvzE,KAAKuzE,eAAiBA,EAKtBvzE,KAAKwzE,gBAAkBA,EAKvBxzE,KAAKq2F,kBAAoB1iB,GAAY,EAKrC3zE,KAAKs2F,kBAAoB1iB,GAAY,EAKrC5zE,KAAKu2F,gBAAkB7iB,EAMvB1zE,KAAKujB,QAAUswD,GAAW,EAM1B7zE,KAAKwjB,QAAUswD,GAAW,EAK1B9zE,KAAKq3C,MAAQ,OAMbr3C,KAAKw2F,WAAY,EAMjBx2F,KAAKy2F,eAAgB,EAMrBz2F,KAAK02F,eAAiB,EAMtB12F,KAAK22F,eAAiB,EAOtB32F,KAAK42F,WAAa,EAKlB52F,KAAK62F,QAAU32F,EAAKgpC,MAAMtd,SAAS7W,GAMnC/U,KAAKmvF,MAAQ,GAMbnvF,KAAK82F,YAKL92F,KAAK4wE,UAAY,GAAI/nD,GAAOyvD,SAO5B,KAAK,GAJDye,GAAW/2F,KAAKujB,QAChByzE,EAAWh3F,KAAKwjB,QAChBtI,EAAI,EAECtW,EAAI,EAAGA,EAAI6uE,EAAMvwE,OAAQ0B,IAClC,CACI,GAAIsH,GAAQlM,KAAK4wE,UAAU4H,SAAS,GAAI3vD,GAAO4vD,MAAM7zE,EAAGmyF,EAAUC,EAAUh3F,KAAKuzE,eAAgBvzE,KAAKwzE,iBAEtGxzE,MAAK82F,SAASrjB,EAAMzP,WAAWp/D,IAAMsH,EAAMvD,MAE3CuS,IAEIA,IAAMlb,KAAKu2F,iBAEXr7E,EAAI,EACJ67E,EAAW/2F,KAAKujB,QAChByzE,GAAYh3F,KAAKwzE,gBAAkBxzE,KAAKs2F,mBAIxCS,GAAY/2F,KAAKuzE,eAAiBvzE,KAAKq2F,kBAI/Cn2F,EAAKgpC,MAAM+tD,gBAAgBliF,EAAK/U,KAAK4wE,WAMrC5wE,KAAKk3F,MAAQ,GAAIruE,GAAOpY,MAAMvQ,EAAM,EAAG,EAAG6U,EAAK,GAE/C8T,EAAOniB,cAAchB,KAAK1F,KAAME,EAAM,IAAK,IAAK,GAAI2oB,EAAOlb,WAAWoO,SAKtE/b,KAAKoV,KAAOyT,EAAO+K,WAIvB/K,EAAOkrD,UAAUlxE,UAAYO,OAAOiF,OAAOwgB,EAAOniB,cAAc7D,WAChEgmB,EAAOkrD,UAAUlxE,UAAUC,YAAc+lB,EAAOkrD,UAOhDlrD,EAAOkrD,UAAUojB,WAAa,OAO9BtuE,EAAOkrD,UAAUqjB,YAAc,QAO/BvuE,EAAOkrD,UAAUsjB,aAAe,SAOhCxuE,EAAOkrD,UAAUujB,UAAY,oGAO7BzuE,EAAOkrD,UAAUwjB,UAAY,+DAO7B1uE,EAAOkrD,UAAUyjB,UAAY,wCAO7B3uE,EAAOkrD,UAAU0jB,UAAY,wCAO7B5uE,EAAOkrD,UAAU2jB,UAAY,mDAO7B7uE,EAAOkrD,UAAU4jB,UAAY,oDAO7B9uE,EAAOkrD,UAAU6jB,UAAY,oDAO7B/uE,EAAOkrD,UAAU8jB,UAAY,yCAO7BhvE,EAAOkrD,UAAU+jB,UAAY,kDAO7BjvE,EAAOkrD,UAAUgkB,WAAa,6BAO9BlvE,EAAOkrD,UAAUikB,WAAa,oDAW9BnvE,EAAOkrD,UAAUlxE,UAAUo1F,cAAgB,SAAUtxF,EAAOuxF,GAElCxuF,SAAlBwuF,IAA+BA,EAAgB,QAEnDl4F,KAAK42F,WAAajwF,EAClB3G,KAAKq3C,MAAQ6gD,GAgBjBrvE,EAAOkrD,UAAUlxE,UAAUkxF,QAAU,SAAUoE,EAAS3B,EAAW4B,EAAkB5G,EAAa0G,EAAeG,GAE7Gr4F,KAAKw2F,UAAYA,IAAa,EAC9Bx2F,KAAK02F,eAAiB0B,GAAoB,EAC1Cp4F,KAAK22F,eAAiBnF,GAAe,EACrCxxF,KAAKq3C,MAAQ6gD,GAAiB,OAE1BG,EAEAr4F,KAAKy2F,eAAgB,EAIrBz2F,KAAKy2F,eAAgB,EAGrB0B,EAAQj1F,OAAS,IAEjBlD,KAAK0yE,KAAOylB,IAWpBtvE,EAAOkrD,UAAUlxE,UAAUy1F,mBAAqB,WAE5C,GAAI5pF,GAAK,EACLC,EAAK,CAKT,IAFA3O,KAAKob,QAEDpb,KAAKw2F,UACT,CACI,GAAI5F,GAAQ5wF,KAAKmvF,MAAMv3D,MAAM,KAEzB53B,MAAK42F,WAAa,EAElB52F,KAAK+H,OAAO/H,KAAK42F,WAAahG,EAAM1tF,QAAUlD,KAAKwzE,gBAAkBxzE,KAAK22F,gBAAmB32F,KAAK22F,gBAAgB,GAIlH32F,KAAK+H,OAAO/H,KAAKu4F,kBAAoBv4F,KAAKuzE,eAAiBvzE,KAAK02F,gBAAkB9F,EAAM1tF,QAAUlD,KAAKwzE,gBAAkBxzE,KAAK22F,gBAAmB32F,KAAK22F,gBAAgB,EAI1K,KAAK,GAAI1zF,GAAI,EAAGA,EAAI2tF,EAAM1tF,OAAQD,IAG9ByL,EAAK,EAGD1O,KAAKq3C,QAAUxuB,EAAOkrD,UAAUqjB,YAEhC1oF,EAAK1O,KAAK2G,MAASiqF,EAAM3tF,GAAGC,QAAUlD,KAAKuzE,eAAiBvzE,KAAK02F,gBAE5D12F,KAAKq3C,QAAUxuB,EAAOkrD,UAAUsjB,eAErC3oF,EAAM1O,KAAK2G,MAAQ,EAAOiqF,EAAM3tF,GAAGC,QAAUlD,KAAKuzE,eAAiBvzE,KAAK02F,gBAAmB,EAC3FhoF,GAAM1O,KAAK02F,eAAiB,GAIvB,EAALhoF,IAEAA,EAAK,GAGT1O,KAAKw4F,UAAU5H,EAAM3tF,GAAIyL,EAAIC,EAAI3O,KAAK02F,gBAEtC/nF,GAAM3O,KAAKwzE,gBAAkBxzE,KAAK22F,mBAKlC32F,MAAK42F,WAAa,EAElB52F,KAAK+H,OAAO/H,KAAK42F,WAAY52F,KAAKwzE,iBAAiB,GAInDxzE,KAAK+H,OAAO/H,KAAKmvF,MAAMjsF,QAAUlD,KAAKuzE,eAAiBvzE,KAAK02F,gBAAiB12F,KAAKwzE,iBAAiB,GAIvG9kE,EAAK,EAED1O,KAAKq3C,QAAUxuB,EAAOkrD,UAAUqjB,YAEhC1oF,EAAK1O,KAAK2G,MAAS3G,KAAKmvF,MAAMjsF,QAAUlD,KAAKuzE,eAAiBvzE,KAAK02F,gBAE9D12F,KAAKq3C,QAAUxuB,EAAOkrD,UAAUsjB,eAErC3oF,EAAM1O,KAAK2G,MAAQ,EAAO3G,KAAKmvF,MAAMjsF,QAAUlD,KAAKuzE,eAAiBvzE,KAAK02F,gBAAmB,EAC7FhoF,GAAM1O,KAAK02F,eAAiB,GAIvB,EAALhoF,IAEAA,EAAK,GAGT1O,KAAKw4F,UAAUx4F,KAAKmvF,MAAOzgF,EAAI,EAAG1O,KAAK02F,eAG3C12F,MAAKsO,gBAAiB,GAe1Bua,EAAOkrD,UAAUlxE,UAAU21F,UAAY,SAAUh7D,EAAMn4B,EAAGC,EAAGoxF,GAEzD,IAAK,GAAI9xF,GAAI,EAAGA,EAAI44B,EAAKt6B,OAAQ0B,IAG7B,GAAuB,MAAnB44B,EAAKo4D,OAAOhxF,GAEZS,GAAKrF,KAAKuzE,eAAiBmjB,MAK3B,IAAI12F,KAAK82F,SAASt5D,EAAKwmC,WAAWp/D,KAAO,IAErC5E,KAAKk3F,MAAMhrF,MAAQlM,KAAK82F,SAASt5D,EAAKwmC,WAAWp/D,IACjD5E,KAAK0uF,SAAS1uF,KAAKk3F,MAAO7xF,EAAGC,GAAG,GAEhCD,GAAKrF,KAAKuzE,eAAiBmjB,EAEvBrxF,EAAIrF,KAAK2G,OAET,OAcpBkiB,EAAOkrD,UAAUlxE,UAAU01F,eAAiB,WAExC,GAAIE,GAAc,CAElB,IAAIz4F,KAAKmvF,MAAMjsF,OAAS,EAIpB,IAAK,GAFD0tF,GAAQ5wF,KAAKmvF,MAAMv3D,MAAM,MAEpB30B,EAAI,EAAGA,EAAI2tF,EAAM1tF,OAAQD,IAE1B2tF,EAAM3tF,GAAGC,OAASu1F,IAElBA,EAAc7H,EAAM3tF,GAAGC,OAKnC,OAAOu1F,IAYX5vE,EAAOkrD,UAAUlxE,UAAU61F,4BAA8B,SAAUC,GAI/D,IAAK,GAFDC,GAAY,GAEPh0F,EAAI,EAAGA,EAAI5E,KAAKmvF,MAAMjsF,OAAQ0B,IACvC,CACI,GAAIi0F,GAAQ74F,KAAKmvF,MAAMvqF,GACnBk0F,EAAOD,EAAM70B,WAAW,IAExBhkE,KAAK82F,SAASgC,IAAS,IAAOH,GAAqB,OAAVE,KAEzCD,EAAYA,EAAUliE,OAAOmiE,IAIrC,MAAOD,IAcX/vE,EAAOkrD,UAAUlxE,UAAUk2F,aAAe,SAAU1zF,EAAGC,GAEnD,GAAItF,KAAKujB,UAAYle,GAAKrF,KAAKwjB,UAAYle,EAA3C,CAWA,IANA,GAAI0zF,GAAQ3zF,EAAIrF,KAAKujB,QACjB01E,EAAQ3zF,EAAItF,KAAKwjB,QAEjB01E,EAASl5F,KAAKE,KAAKgpC,MAAMynC,aAAa3wE,KAAKk3F,MAAMniF,KAAKokF,YACtDl2F,EAAIi2F,EAAOh2F,OAERD,KAEHi2F,EAAOj2F,GAAGoC,GAAK2zF,EACfE,EAAOj2F,GAAGqC,GAAK2zF,CAGnBj5F,MAAKs4F,uBAQTl1F,OAAOC,eAAewlB,EAAOkrD,UAAUlxE,UAAW,QAE9CS,IAAK,WAED,MAAOtD,MAAKmvF,OAIhB3rF,IAAK,SAAUC,GAEX,GAAI21F,EAIAA,GAFAp5F,KAAKy2F,cAEKhzF,EAAM41F,cAIN51F;AAGV21F,IAAYp5F,KAAKmvF,QAEjBnvF,KAAKmvF,MAAQiK,EAEbp5F,KAAK04F,4BAA4B14F,KAAKw2F,WAEtCx2F,KAAKs4F,yBAWjBl1F,OAAOC,eAAewlB,EAAOkrD,UAAUlxE,UAAW,YAE9CS,IAAK,WAED,MAAOtD,MAAKk3F,MAAMn3C,UAItBv8C,IAAK,SAAUC,GAEXzD,KAAKk3F,MAAMn3C,SAAWt8C,EACtBzD,KAAKs4F,wBA+CbzvE,EAAOwG,KAAO,SAAUnvB,EAAMmF,EAAGC,EAAGyP,EAAK7I,EAAOojB,GAE5CtvB,KAAKsvB,UACLtvB,KAAKsvB,OAASA,EACdtvB,KAAKs5F,qBAAsB,EAC3Bt5F,KAAKu5F,yBAA2B,KAChCl0F,EAAIA,GAAK,EACTC,EAAIA,GAAK,EACTyP,EAAMA,GAAO,KACb7I,EAAQA,GAAS,KAMjBlM,KAAKoV,KAAOyT,EAAOiL,KAEnB7zB,KAAKovB,KAAK3pB,KAAK1F,KAAMC,KAAK8O,aAAwB,UAAG/O,KAAKsvB,QAE1DzG,EAAOohD,UAAUgB,KAAK92D,KAAKzO,KAAK1F,KAAME,EAAMmF,EAAGC,EAAGyP,EAAK7I,IAI3D2c,EAAOwG,KAAKxsB,UAAYO,OAAOiF,OAAOpI,KAAKovB,KAAKxsB,WAChDgmB,EAAOwG,KAAKxsB,UAAUC,YAAc+lB,EAAOwG,KAE3CxG,EAAOohD,UAAUgB,KAAKC,QAAQxlE,KAAKmjB,EAAOwG,KAAKxsB,WAC3C,QACA,YACA,WACA,SACA,aACA,OACA,QACA,UACA,gBACA,UACA,WACA,cACA,UACA,cACA,QACA,cACA,aAGJgmB,EAAOwG,KAAKxsB,UAAU+xE,iBAAmB/rD,EAAOohD,UAAUqB,YAAYnlE,UACtE0iB,EAAOwG,KAAKxsB,UAAUgyE,kBAAoBhsD,EAAOohD,UAAUgG,SAAS9pE,UACpE0iB,EAAOwG,KAAKxsB,UAAUiyE,iBAAmBjsD,EAAOohD,UAAUyF,QAAQvpE,UAClE0iB,EAAOwG,KAAKxsB,UAAUkyE,cAAgBlsD,EAAOohD,UAAUgB,KAAK9kE,UAQ5D0iB,EAAOwG,KAAKxsB,UAAUsD,UAAY,WAE9B,MAAKnG,MAAK40E,oBAAuB50E,KAAK60E,qBAAwB70E,KAAK80E,mBAK5D90E,KAAK+0E,iBAHD,GAaflsD,EAAOwG,KAAKxsB,UAAU+kC,OAAS,WAEvB5nC,KAAKs5F,qBAELt5F,KAAKw5F,gBAAgB9zF,KAAK1F,OAgBlC6oB,EAAOwG,KAAKxsB,UAAUimC,MAAQ,SAASzjC,EAAGC,GAItC,MAFAujB,GAAOohD,UAAUoH,MAAMxuE,UAAUimC,MAAMpjC,KAAK1F,KAAMqF,EAAGC,GAE9CtF,MAUXoD,OAAOC,eAAewlB,EAAOwG,KAAKxsB,UAAW,mBAEzCS,IAAK,WAED,MAAOtD,MAAKy5F,kBAIhBj2F,IAAK,SAAUC,GAEPA,GAA0B,kBAAVA,IAEhBzD,KAAKs5F,qBAAsB,EAC3Bt5F,KAAKy5F,iBAAmBh2F,IAIxBzD,KAAKs5F,qBAAsB,EAC3Bt5F,KAAKy5F,iBAAmB,SAapCr2F,OAAOC,eAAewlB,EAAOwG,KAAKxsB,UAAW,YAEzCS,IAAK,WAKD,IAAK,GAFDqF,GAAOiE,EAAIC,EAAIC,EAAIC,EAAIpG,EAAOC,EAAQ44B,EADtC0iD,KAGKj/E,EAAI,EAAGA,EAAIjD,KAAKsvB,OAAOpsB,OAAQD,IAEpC0F,EAAY,EAAJ1F,EAER2J,EAAK5M,KAAK0hB,SAAS/Y,GAAS3I,KAAKqB,MAAMgE,EACvCwH,EAAK7M,KAAK0hB,SAAS/Y,EAAQ,GAAK3I,KAAKqB,MAAMiE,EAC3CwH,EAAK9M,KAAK0hB,SAAS/Y,EAAQ,GAAK3I,KAAKqB,MAAMgE,EAC3C0H,EAAK/M,KAAK0hB,SAAS/Y,EAAQ,GAAK3I,KAAKqB,MAAMiE,EAE3CqB,EAAQkiB,EAAOhoB,KAAK64F,WAAW9sF,EAAIE,GACnClG,EAASiiB,EAAOhoB,KAAK64F,WAAW7sF,EAAIE,GAEpCH,GAAM5M,KAAKyE,MAAMY,EACjBwH,GAAM7M,KAAKyE,MAAMa,EACjBk6B,EAAO,GAAI3W,GAAOrmB,UAAUoK,EAAIC,EAAIlG,EAAOC,GAC3Cs7E,EAASn+E,KAAKy7B,EAGlB,OAAO0iD,MA+Dfr5D,EAAO49B,WAAa,SAAUvmD,EAAMmF,EAAGC,EAAGqB,EAAOC,EAAQmO,EAAK7I,GAE1D7G,EAAIA,GAAK,EACTC,EAAIA,GAAK,EACTqB,EAAQA,GAAS,IACjBC,EAASA,GAAU,IACnBmO,EAAMA,GAAO,KACb7I,EAAQA,GAAS,KAMjBlM,KAAKoV,KAAOyT,EAAOkK,WAMnB/yB,KAAK60C,YAAchsB,EAAO6J,OAM1B1yB,KAAK25F,QAAU,GAAI9wE,GAAOznB,KAE1B,IAAIw4F,GAAM15F,EAAKgpC,MAAMtd,SAAS,aAAa,EAE3C3rB,MAAK+vB,aAAatqB,KAAK1F,KAAM,GAAIC,MAAKuL,QAAQouF,EAAI5oB,MAAOrqE,EAAOC,GAEhEiiB,EAAOohD,UAAUgB,KAAK92D,KAAKzO,KAAK1F,KAAME,EAAMmF,EAAGC,EAAGyP,EAAK7I,IAI3D2c,EAAO49B,WAAW5jD,UAAYO,OAAOiF,OAAOpI,KAAK+vB,aAAantB,WAC9DgmB,EAAO49B,WAAW5jD,UAAUC,YAAc+lB,EAAO49B,WAEjD59B,EAAOohD,UAAUgB,KAAKC,QAAQxlE,KAAKmjB,EAAO49B,WAAW5jD,WACjD,QACA,YACA,WACA,SACA,aACA,UACA,gBACA,SACA,WACA,eACA,UACA,WACA,cACA,UACA,cACA,QACA,aAGJgmB,EAAO49B,WAAW5jD,UAAU+xE,iBAAmB/rD,EAAOohD,UAAUqB,YAAYnlE,UAC5E0iB,EAAO49B,WAAW5jD,UAAUgyE,kBAAoBhsD,EAAOohD,UAAUgG,SAAS9pE,UAC1E0iB,EAAO49B,WAAW5jD,UAAUiyE,iBAAmBjsD,EAAOohD,UAAUyF,QAAQvpE,UACxE0iB,EAAO49B,WAAW5jD,UAAUkyE,cAAgBlsD,EAAOohD,UAAUgB,KAAK9kE,UAQlE0iB,EAAO49B,WAAW5jD,UAAUsD,UAAY,WAYpC,MAVuB,KAAnBnG,KAAK25F,QAAQt0F,IAEbrF,KAAKqjB,aAAahe,GAAKrF,KAAK25F,QAAQt0F,EAAIrF,KAAKE,KAAK8nC,KAAK6xD,gBAGpC,IAAnB75F,KAAK25F,QAAQr0F,IAEbtF,KAAKqjB,aAAa/d,GAAKtF,KAAK25F,QAAQr0F,EAAItF,KAAKE,KAAK8nC,KAAK6xD,gBAGtD75F,KAAK40E,oBAAuB50E,KAAK60E,qBAAwB70E,KAAK80E,mBAK5D90E,KAAK+0E,iBAHD,GAkBflsD,EAAO49B,WAAW5jD,UAAUi3F,WAAa,SAASz0F,EAAGC,GAEjDtF,KAAK25F,QAAQn2F,IAAI6B,EAAGC,IAUxBujB,EAAO49B,WAAW5jD,UAAUk3F,WAAa,WAErC/5F,KAAK25F,QAAQn2F,IAAI,EAAG,IAYxBqlB,EAAO49B,WAAW5jD,UAAUE,QAAU,SAASo5C,GAE3CtzB,EAAOohD,UAAUqC,QAAQzpE,UAAUE,QAAQ2C,KAAK1F,KAAMm8C,GAEtDl8C,KAAK+vB,aAAantB,UAAUE,QAAQ2C,KAAK1F,OAe7C6oB,EAAO49B,WAAW5jD,UAAUimC,MAAQ,SAASzjC,EAAGC,GAO5C,MALAujB,GAAOohD,UAAUoH,MAAMxuE,UAAUimC,MAAMpjC,KAAK1F,KAAMqF,EAAGC,GAErDtF,KAAKqjB,aAAahe,EAAI,EACtBrF,KAAKqjB,aAAa/d,EAAI,EAEftF,MAiCX6oB,EAAOm0B,OAAS,WAOZh9C,KAAKg6F,cAAgB,EAOrBh6F,KAAKi6F,aAAc,EAQnBj6F,KAAKk6F,SAAU,EAMfl6F,KAAKkhD,KAAM,EAMXlhD,KAAKm6F,WAAa,EAMlBn6F,KAAK8/C,UAAW,EAMhB9/C,KAAK0zC,aAAc,EAMnB1zC,KAAKihD,SAAU,EAMfjhD,KAAKo6F,MAAO,EAMZp6F,KAAKq6F,YAAa,EAMlBr6F,KAAKs6F,UAAW,EAMhBt6F,KAAKu6F,QAAS,EAMdv6F,KAAKw6F,WAAY,EAMjBx6F,KAAKuoD,SAAU,EAMfvoD,KAAKy6F,UAAW,EAMhBz6F,KAAK06F,OAAQ,EAMb16F,KAAK26F,OAAQ,EAMb36F,KAAK46F,SAAU,EAMf56F,KAAK66F,cAAe,EAQpB76F,KAAK4Q,QAAS,EAMd5Q,KAAK86F,kBAAoB,KAMzB96F,KAAK4/C,OAAQ,EAMb5/C,KAAK+6F,MAAO,EAMZ/6F,KAAKg7F,YAAa,EAMlBh7F,KAAKi7F,cAAe,EAMpBj7F,KAAKk7F,QAAS,EAMdl7F,KAAKm7F,OAAQ,EAMbn7F,KAAKunD,aAAc,EAMnBvnD,KAAKo7F,YAAa,EAMlBp7F,KAAKq7F,WAAY,EAMjBr7F,KAAKs7F,cAAe,EAMpBt7F,KAAKu7F,YAAa,EAQlBv7F,KAAKsjD,OAAQ,EAMbtjD,KAAKujD,WAAY,EAOjBvjD,KAAKkpD,WAAa,KAQlBlpD,KAAKw7F,OAAQ,EAMbx7F,KAAK2/C,QAAS,EAMd3/C,KAAKy7F,cAAgB,EAMrBz7F,KAAK07F,UAAW,EAMhB17F,KAAK27F,SAAU,EAMf37F,KAAK47F,eAAiB,EAMtB57F,KAAK67F,IAAK,EAMV77F,KAAK87F,UAAY,EAMjB97F,KAAK+7F,SAAU,EAMf/7F,KAAKg8F,eAAiB,EAMtBh8F,KAAKi8F,MAAO,EAMZj8F,KAAKk8F,cAAe,EAMpBl8F,KAAKm8F,QAAS,EAMdn8F,KAAKo8F,OAAQ,EAMbp8F,KAAKq8F,QAAS,EAMdr8F,KAAKs8F,cAAgB,EAMrBt8F,KAAKu8F,QAAS,EAMdv8F,KAAKw8F,MAAO,EAQZx8F,KAAKy8F,WAAY,EAMjBz8F,KAAK0/C,UAAW,EAMhB1/C,KAAK08F,KAAM,EAMX18F,KAAK28F,MAAO,EAMZ38F,KAAK48F,KAAM,EAMX58F,KAAK68F,KAAM,EAOX78F,KAAK88F,KAAM,EAMX98F,KAAK+8F,MAAO,EAMZ/8F,KAAKg9F,OAAQ,EAQbh9F,KAAKi9F,UAAW,EAMhBj9F,KAAKk9F,WAAY,EAMjBl9F,KAAKm9F,UAAW,EAMhBn9F,KAAKo9F,WAAY,EAMjBp9F,KAAKq9F,UAAW,EAMhBr9F,KAAKs9F,UAAW,EAQhBt9F,KAAKu9F,QAAS,EAMdv9F,KAAKw9F,SAAU,EAMfx9F,KAAKy9F,MAAO,EAQZz9F,KAAK09F,WAAa,EAMlB19F,KAAK29F,cAAe,EAMpB39F,KAAKq7E,eAAgB,EAMrBr7E,KAAK49F,cAAe,EAMpB59F,KAAK69F,YAAa,EAMlB79F,KAAK89F,kBAAoB,GAMzB99F,KAAK+9F,iBAAmB,GAMxB/9F,KAAKg+F,oBAAqB,GAM9Bn1E,EAAOm0B,OAAS,GAAIn0B,GAAOm0B,OAc3Bn0B,EAAOm0B,OAAOihD,cAAgB,GAAIp1E,GAAOuc,OAgBzCvc,EAAOm0B,OAAOoB,UAAY,SAAU7E,EAAUjsC,EAAS4wF,GAEnD,GAAIC,GAAan+F,KAAKo+F,WAEtB,IAAIp+F,KAAKg6F,gBAAkBmE,EAEvB5kD,EAAS7zC,KAAK4H,EAAStN,UAEtB,IAAIm+F,EAAWE,UAAYH,EAE5BC,EAAWG,OAASH,EAAWG,WAC/BH,EAAWG,OAAOv6F,MAAMw1C,EAAUjsC,QAGtC,CACI6wF,EAAWE,SAAWF,EAAW/nE,KAAKp2B,MACtCm+F,EAAWG,OAASH,EAAWG,WAC/BH,EAAWG,OAAOv6F,MAAMw1C,EAAUjsC,GAElC,IAAI2zC,GAAoC,mBAAnBpuC,QAAOouC,QACxBnB,EAAW92B,UAAsB,UAET,cAAxB3Y,SAASkuF,YAAqD,gBAAxBluF,SAASkuF,WAG/C1rF,OAAO2rF,WAAWL,EAAWE,SAAU,GAElCp9C,IAAYnB,EAIjBzvC,SAAS+iC,iBAAiB,cAAe+qD,EAAWE,UAAU,IAI9DhuF,SAAS+iC,iBAAiB,mBAAoB+qD,EAAWE,UAAU,GACnExrF,OAAOugC,iBAAiB,OAAQ+qD,EAAWE,UAAU,MAajEx1E,EAAOm0B,OAAOohD,YAAc,WAExB,GAAID,GAAan+F,KAAKo+F,WAEtB,IAAK/tF,SAASimC,MAIT,IAAKt2C,KAAKg6F,cACf,CACIh6F,KAAKg6F,cAAgBjqD,KAAKoO,MAE1B9tC,SAASikC,oBAAoB,cAAe6pD,EAAWE,UACvDhuF,SAASikC,oBAAoB,mBAAoB6pD,EAAWE,UAC5DxrF,OAAOyhC,oBAAoB,OAAQ6pD,EAAWE,UAE9Cr+F,KAAKy+F,cACLz+F,KAAKi6F,aAAc,EAEnBj6F,KAAKi+F,cAAc/1D,SAASloC,KAG5B,KADA,GAAIuD,GACIA,EAAO46F,EAAWG,OAAOlvC,SACjC,CACI,GAAI7V,GAAWh2C,EAAK,GAChB+J,EAAU/J,EAAK,EACnBg2C,GAAS7zC,KAAK4H,EAAStN,MAI3BA,KAAKo+F,YAAc,KACnBp+F,KAAKy+F,YAAc,KACnBz+F,KAAKi+F,cAAgB,UA1BrBprF,QAAO2rF,WAAWL,EAAWE,SAAU,KAsC/Cx1E,EAAOm0B,OAAOyhD,YAAc,WAOxB,QAASC,KAEL,GAAIp/D,GAAKtW,UAAU0wC,SAEf,oBAAmBi8B,KAAKr2D,GAExBmU,EAAOkrD,MAAO,EAET,SAAShJ,KAAKr2D,IAAO,kBAAkBq2D,KAAKr2D,IAAO,sBAAsBq2D,KAAKr2D,GAEnFmU,EAAOmrD,QAAS,EAIX,UAAUjJ,KAAKr2D,GAEpBmU,EAAO8U,SAAU,EAEZ,OAAOotC,KAAKr2D,GAEjBmU,EAAOgnD,UAAW,EAEb,kBAAkB9E,KAAKr2D,IAE5BmU,EAAOyN,KAAM,EACZl4B,UAAoB,WAAEghD,MAAM,YAC7Bv2B,EAAO0mD,WAAaxhE,SAASkmE,OAAOC,GAAI,KAEnC,QAAQnJ,KAAKr2D,GAElBmU,EAAOinD,OAAQ,EAEV,SAAS/E,KAAKr2D,GAEnBmU,EAAOknD,OAAQ,EAEV,UAAUhF,KAAKr2D,KAEpBmU,EAAOmnD,SAAU,IAGjB,iBAAiBjF,KAAKr2D,IAAO,YAAYq2D,KAAKr2D,MAE9CmU,EAAO8U,SAAU,EACjB9U,EAAOyN,KAAM,EACbzN,EAAOknD,OAAQ,EACflnD,EAAOmnD,SAAU,EACjBnnD,EAAOonD,cAAe,EAG1B,IAAI2B,GAAO,OAAO7G,KAAKr2D,IAEnBmU,EAAOmnD,SAAWnnD,EAAOknD,OAAUlnD,EAAOinD,QAAU8B,GAAS/oD,EAAOgnD,YAEpEhnD,EAAOymD,SAAU,IAIjBzmD,EAAOonD,cAAkB,cAAclF,KAAKr2D,IAAS,SAASq2D,KAAKr2D,MAEnEmU,EAAOymD,SAAU,GAQzB,QAAS6E,KAELtrD,EAAO7iC,SAAWiC,OAAiC,0BAAK4gC,EAAOqM,QAE/D,KACIrM,EAAOwnD,eAAiBA,aAAa+D,QACvC,MAAOC,GACLxrD,EAAOwnD,cAAe,EAG1BxnD,EAAOsnD,QAASloF,OAAa,MAAOA,OAAmB,YAAOA,OAAiB,UAAOA,OAAa,MACnG4gC,EAAOunD,aAAenoF,OAA0B,kBAEhD4gC,EAAOmM,MAAQ,WAAgB,IAAM,GAAIhvC,GAASP,SAASoB,cAAe,SAAyE,OAA7Bb,GAAOsY,cAAe,IAAiBrW,OAAOqsF,wBAA2BtuF,EAAOE,WAAY,UAAaF,EAAOE,WAAY,uBAA4B,MAAOyoB,GAAM,OAAO,MAClSka,EAAOmM,QAAUnM,EAAOmM,MAExBnM,EAAOynD,SAAWroF,OAAe,OAEjC4gC,EAAO8T,YAAc,sBAAwBl3C,WAAY,yBAA2BA,WAAY,4BAA8BA,UAE9HojC,EAAO8nD,WAAsC,eAAxBlrF,SAAS8uF,YAA+B,GAAQ,EAErEn2E,UAAUsyE,aAAetyE,UAAUsyE,cAAgBtyE,UAAUo2E,oBAAsBp2E,UAAUq2E,iBAAmBr2E,UAAUs2E,gBAAkBt2E,UAAUu2E,cAEtJ1sF,OAAO2sF,IAAM3sF,OAAO2sF,KAAO3sF,OAAO4sF,WAAa5sF,OAAO6sF,QAAU7sF,OAAO8sF,MAEvElsD,EAAO6nD,aAAe7nD,EAAO6nD,gBAAkBtyE,UAAUsyE,gBAAkBzoF,OAAO2sF,IAG9E/rD,EAAOkoD,SAAWloD,EAAOmoD,eAAiB,KAE1CnoD,EAAO6nD,cAAe,IAOrB7nD,EAAOyN,MAAQzN,EAAOooD,IAAMpoD,EAAOkoD,SAAWloD,EAAOkM,UAEtDlM,EAAOqnD,mBAAoB,IAI3BrnD,EAAO4oD,QAAU5oD,EAAOyoD,gBAExBzoD,EAAOqnD,mBAAoB,GAQnC,QAAS8E,MAED,gBAAkBvvF,UAASwvF,iBAAoBhtF,OAAOmW,UAAU82E,gBAAkBjtF,OAAOmW,UAAU82E,gBAAkB,KAErHrsD,EAAO6P,OAAQ,IAGfzwC,OAAOmW,UAAU+2E,kBAAoBltF,OAAOmW,UAAUg3E,kBAEtDvsD,EAAO8P,WAAY,GAGlB9P,EAAOqM,WAGJ,WAAajtC,SAAW4gC,EAAOooD,IAAM,cAAgBhpF,QAGrD4gC,EAAOyV,WAAa,QAEf,gBAAkBr2C,QAGvB4gC,EAAOyV,WAAa,aAEfzV,EAAOkoD,SAAW,oBAAsB9oF,UAG7C4gC,EAAOyV,WAAa,mBAShC,QAAS+2C,KAeL,IAAK,GAbDC,IACA,oBACA,oBACA,0BACA,0BACA,sBACA,sBACA,uBACA,wBAGAx2C,EAAUr5C,SAASoB,cAAc,OAE5BxO,EAAI,EAAGA,EAAIi9F,EAAGh9F,OAAQD,IAE3B,GAAIymD,EAAQw2C,EAAGj9F,IACf,CACIwwC,EAAOoqD,YAAa,EACpBpqD,EAAOqqD,kBAAoBoC,EAAGj9F,EAC9B,OAIR,GAAIk9F,IACA,mBACA,iBACA,yBACA,uBACA,qBACA,mBACA,sBACA,oBAGJ,IAAI1sD,EAAOoqD,WAEP,IAAK,GAAI56F,GAAI,EAAGA,EAAIk9F,EAAIj9F,OAAQD,IAE5B,GAAIoN,SAAS8vF,EAAIl9F,IACjB,CACIwwC,EAAOsqD,iBAAmBoC,EAAIl9F,EAC9B,OAMR4P,OAAgB,SAAKutF,QAA8B,uBAEnD3sD,EAAOuqD,oBAAqB,GAQpC,QAASqC,KAEL,GAAI/gE,GAAKtW,UAAU0wC,SA4FnB,IA1FI,QAAQi8B,KAAKr2D,GAEbmU,EAAO+nD,OAAQ,EAEV,YAAY7F,KAAKr2D,GAEtBmU,EAAOwoD,MAAO,EAET,gBAAgBtG,KAAKr2D,KAAQmU,EAAOonD,cAEzCpnD,EAAOkM,QAAS,EAChBlM,EAAOgoD,cAAgB9iE,SAASkmE,OAAOC,GAAI,KAEtC,WAAWnJ,KAAKr2D,GAErBmU,EAAOioD,UAAW,EAEb,kBAAkB/F,KAAKr2D,IAE5BmU,EAAOkoD,SAAU,EACjBloD,EAAOmoD,eAAiBjjE,SAASkmE,OAAOC,GAAI,KAEvC,cAAcnJ,KAAKr2D,IAAOmU,EAAOyN,IAEtCzN,EAAOyoD,cAAe,EAEjB,mBAAmBvG,KAAKr2D,IAE7BmU,EAAOooD,IAAK,EACZpoD,EAAOqoD,UAAYnjE,SAASkmE,OAAOC,GAAI,KAElC,SAASnJ,KAAKr2D,GAEnBmU,EAAO0oD,QAAS,EAEX,QAAQxG,KAAKr2D,GAElBmU,EAAO2oD,OAAQ,EAEV,gBAAgBzG,KAAKr2D,KAAQmU,EAAOonD,cAEzCpnD,EAAO4oD,QAAS,EAEZ,mBAAmB1G,KAAKr2D,KAExBmU,EAAO6oD,cAAgB3jE,SAASkmE,OAAOC,GAAI,MAG1C,uCAAuCnJ,KAAKr2D,KAEjDmU,EAAOooD,IAAK,EACZpoD,EAAOsoD,SAAU,EACjBtoD,EAAOuoD,eAAiBrjE,SAASkmE,OAAOC,GAAI,IAC5CrrD,EAAOqoD,UAAYnjE,SAASkmE,OAAOyB,GAAI,KAIvC,OAAO3K,KAAKr2D,KAEZmU,EAAO+oD,MAAO,GAIdxzE,UAAsB,aAEtByqB,EAAO8oD,QAAS,GAGU,mBAAnB1pF,QAAOouC,UAEdxN,EAAOwN,SAAU,GAGE,mBAAZs/C,UAA8C,mBAAZC,WAEzC/sD,EAAO2mD,MAAO,GAGd3mD,EAAO2mD,MAAoC,gBAArBmG,SAAQE,WAE9BhtD,EAAO4mD,aAAekG,QAAQE,SAAS,eAEvChtD,EAAO6mD,WAAaiG,QAAQE,SAASnG,UAGrCtxE,UAAsB,aAEtByqB,EAAOqM,UAAW,GAGlBrM,EAAOqM,SAEP,IACIrM,EAAOC,YAAmC,mBAAbC,UAEjC,MAAMsrD,GAEFxrD,EAAOC,aAAc,EAIA,mBAAlB7gC,QAAO0nF,SAEd9mD,EAAO8mD,QAAS,GAGhB,YAAY5E,KAAKr2D,KAEjBmU,EAAO+mD,WAAY,GAQ3B,QAASkG,KAEL,GAAIC,GAAetwF,SAASoB,cAAc,SACtCL,GAAS,CAEb,MACQA,IAAWuvF,EAAaC,eAEpBD,EAAaC,YAAY,8BAA8B3mE,QAAQ,OAAQ,MAEvEwZ,EAAOwpD,UAAW,GAGlB0D,EAAaC,YAAY,mCAAmC3mE,QAAQ,OAAQ,MAG5EwZ,EAAOypD,WAAY,EACnBzpD,EAAO0pD,UAAW,GAGlBwD,EAAaC,YAAY,oCAAoC3mE,QAAQ,OAAQ,MAE7EwZ,EAAO2pD,WAAY,GAGnBuD,EAAaC,YAAY,4BAA4B3mE,QAAQ,OAAQ,MAErEwZ,EAAO4pD,UAAW,GAGlBsD,EAAaC,YAAY,+CAA+C3mE,QAAQ,OAAQ,MAExFwZ,EAAO6pD,UAAW,IAG5B,MAAO/jE,KAMb,QAASsnE,KAELptD,EAAOgpD,YAAe5pF,OAAe,MACrC4gC,EAAOiM,YAAc7sC,OAAqB,eAAKA,OAA2B,mBAC1E,IAAIiuF,GAAezwF,SAASoB,cAAc,SACtCL,GAAS,CAEb,KACI,IAAIA,IAAW0vF,EAAaF,eAEpBE,EAAaF,YAAY,8BAA8B3mE,QAAQ,OAAQ,MAEvEwZ,EAAOipD,KAAM,IAGboE,EAAaF,YAAY,4BAA4B3mE,QAAQ,OAAQ,KAAO6mE,EAAaF,YAAY,eAAe3mE,QAAQ,OAAQ,OAEpIwZ,EAAOkpD,MAAO,GAGdmE,EAAaF,YAAY,eAAe3mE,QAAQ,OAAQ,MAExDwZ,EAAOmpD,KAAM,GAMbkE,EAAaF,YAAY,yBAAyB3mE,QAAQ,OAAQ,MAElEwZ,EAAOopD,KAAM,IAGbiE,EAAaF,YAAY,iBAAmBE,EAAaF,YAAY,cAAc3mE,QAAQ,OAAQ,OAEnGwZ,EAAOqpD,KAAM,GAGbgE,EAAaF,YAAY,+BAA+B3mE,QAAQ,OAAQ,MAExEwZ,EAAOspD,MAAO,GAG0C,KAAxD+D,EAAaF,YAAY,4BAEzB,GAAIntD,EAAOwoD,KAEPxoD,EAAOupD,OAAQ,MAEd,IAAIvpD,EAAO4oD,QAAU5oD,EAAO6oD,eAAiB,GAE1C,uBAAuB3G,KAAK3sE,UAAU0wC,WAC1C,CACI,GAAIqnC,GAAQpoE,SAASkmE,OAAOC,GAAI,IAC5BkC,EAAQroE,SAASkmE,OAAOoC,GAAI,KAEjB,KAAVF,GAAgBC,GAAS,IAAOD,EAAQ,MAEzCttD,EAAOupD,OAAQ,IAMrC,MAAOzjE,KAQb,QAAS2nE,KAELztD,EAAOiqD,WAAa7qF,OAAyB,kBAAK,EAClD4gC,EAAO8pD,OAAgE,IAAvDv0E,UAAU0wC,UAAU1K,cAAc5lD,QAAQ,UAC1DqqC,EAAO+pD,QAAgC,GAArB/pD,EAAOiqD,YAAmBjqD,EAAO8pD,OACnD9pD,EAAOgqD,KAA4D,IAArDz0E,UAAU0wC,UAAU1K,cAAc5lD,QAAQ,QAE/B,mBAAd+3F,WAEP1tD,EAAO2nD,YAAa,EAIpB3nD,EAAO2nD,YAAa,EAGG,mBAAhB16F,cAAqD,mBAAfurB,aAAqD,mBAAhBxrB,eAElFgzC,EAAOkqD,aAAeyD,IACtB3tD,EAAO4nC,cAAgB5nC,EAAOkqD,cAGlClqD,EAAOmqD,aAAuC,mBAAhBl9F,cAA4D,mBAAtB2gG,oBAA2D,mBAAfC,aAAsD,OAAxB7tD,EAAOkqD,cAAyB4D,IAE9Kv4E,UAAUw4E,QAAUx4E,UAAUw4E,SAAWx4E,UAAUy4E,eAAiBz4E,UAAU04E,YAAc14E,UAAU24E,UAElG34E,UAAUw4E,UAEV/tD,EAAO4nD,WAAY,GAU3B,QAAS+F,KAEL,GAAI18F,GAAI,GAAIhE,aAAY,GACpBiE,EAAI,GAAIsnB,YAAWvnB,GACnBE,EAAI,GAAInE,aAAYiE,EAOxB,OALAC,GAAE,GAAK,IACPA,EAAE,GAAK,IACPA,EAAE,GAAK,IACPA,EAAE,GAAK,IAEK,YAARC,EAAE,IAEK,EAGC,YAARA,EAAE,IAEK,EAKA,KAUf,QAAS28F,KAEL,GAA0B73F,SAAtB23F,kBAEA,OAAO,CAGX,IAAIO,GAAO3hG,KAAK4Q,WAAWxI,OAAOrI,KAAM,EAAG,GACvCo4E,EAAMwpB,EAAK9wF,WAAW,KAE1B,KAAKsnE,EAED,OAAO,CAGX,IAAIjuD,GAAQiuD,EAAIypB,gBAAgB,EAAG,EAInC,OAFA5hG,MAAK4Q,WAAWI,OAAOjR,MAEhBmqB,EAAMnZ,eAAgBqwF,mBAOjC,QAASS,KAEL,GACIC,GADAC,EAAK3xF,SAASoB,cAAc,KAE5BwwF,GACAC,gBAAmB,oBACnBC,WAAc,eACdC,YAAe,gBACfC,aAAgB,iBAChBxyF,UAAa,YAIjBQ,UAASimC,KAAKgsD,aAAaN,EAAI,KAE/B,KAAK,GAAI9qE,KAAK+qE,GAEUv4F,SAAhBs4F,EAAGpmF,MAAMsb,KAET8qE,EAAGpmF,MAAMsb,GAAK,2BACd6qE,EAAQlvF,OAAO0vF,iBAAiBP,GAAIQ,iBAAiBP,EAAW/qE,IAIxE7mB,UAASimC,KAAK1tC,YAAYo5F,GAC1BvuD,EAAO0nD,MAAmBzxF,SAAVq4F,GAAuBA,EAAM7+F,OAAS,GAAe,SAAV6+F,EAlkB/D,GAAItuD,GAASzzC,IAukBb0+F,KACA2B,IACAQ,IACAH,IACAoB,IACAZ,IACAnC,IACAkB,IACAL,KAYJ/2E,EAAOm0B,OAAOylD,aAAe,SAAUrtF,GAEnC,MAAa,QAATA,GAAkBpV,KAAK48F,KAEhB,EAEO,QAATxnF,IAAmBpV,KAAK08F,KAAO18F,KAAK28F,OAElC,EAEO,QAATvnF,GAAkBpV,KAAK88F,KAErB,EAEO,SAAT1nF,GAAmBpV,KAAK28F,MAEtB,EAEO,QAATvnF,GAAkBpV,KAAK68F,KAErB,EAEO,SAATznF,GAAmBpV,KAAK+8F,MAEtB,EAEO,QAAT3nF,GAAkBpV,KAAKg9F,OAErB,GAGJ,GAYXn0E,EAAOm0B,OAAO0lD,aAAe,SAAUttF,GAEnC,MAAa,SAATA,IAAoBpV,KAAKo9F,WAAap9F,KAAKq9F,WAEpC,EAEO,QAATjoF,IAAmBpV,KAAKm9F,UAAYn9F,KAAKk9F,YAEvC,EAEQ,QAAT9nF,GAA2B,QAATA,IAAmBpV,KAAKi9F,SAIlC,SAAT7nF,GAAmBpV,KAAKs9F,UAEtB,GAGJ,GAPI,GAmBfz0E,EAAOm0B,OAAO2lD,cAAgB,WAE1B,MAAI9vF,QAAOC,SAAWD,OAAOC,QAAiB,SAEnC,EAGPD,OAAOC,UAEPA,QAAQ8vF,UACR9vF,QAAQ+vF,aAEJ/vF,QAAQsI,OAERtI,QAAQsI,QAGRtI,QAAkB,UAEXA,QAAkB,SAAE5P,OAAS,GAIrC,GAgBX2lB,EAAOm0B,OAAO8lD,sBAAwB,WAElC,GAAIC,GAAUlwF,OAAOmW,UAAU0wC,UAAUsQ,MAAM,iCAC/C,OAAO+4B,IAAWA,EAAQ,GAAK,KAiBnCl6E,EAAOC,QAaHzgB,OAAQ,SAAUzG,EAAQ+E,EAAOC,EAAQqP,EAAI+sF,GAKzC,GAHAr8F,EAAQA,GAAS,IACjBC,EAASA,GAAU,IAEF8C,SAAbs5F,EAEA,GAAIpyF,GAAS3Q,KAAK4Q,WAAWxI,OAAOzG,EAAQ+E,EAAOC,OAInD,IAAIgK,GAASP,SAASoB,cAAc,SAYxC,OATkB,gBAAPwE,IAA0B,KAAPA,IAE1BrF,EAAOqF,GAAKA,GAGhBrF,EAAOjK,MAAQA,EACfiK,EAAOhK,OAASA,EAChBgK,EAAOgL,MAAMqnF,QAAU,QAEhBryF,GAYX4hC,mBAAoB,SAAU5hC,EAAQgI,GAMlC,MAJAA,GAAQA,GAAS,aAEjBhI,EAAOgL,MAAMg0E,gBAAkBh3E,EAExBhI,GAYXgiC,eAAgB,SAAUhiC,EAAQnN,GAQ9B,MANAA,GAAQA,GAAS,OAEjBmN,EAAOgL,MAAMsnF,cAAgBz/F,EAC7BmN,EAAOgL,MAAM,mBAAqBnY,EAClCmN,EAAOgL,MAAM,gBAAkBnY,EAExBmN,GAYX+hC,cAAe,SAAU/hC,EAAQnN,GAY7B,MAVAA,GAAQA,GAAS,OAEjBmN,EAAOgL,MAAM,yBAA2BnY,EACxCmN,EAAOgL,MAAM,uBAAyBnY,EACtCmN,EAAOgL,MAAM,sBAAwBnY,EACrCmN,EAAOgL,MAAM,oBAAsBnY,EACnCmN,EAAOgL,MAAM,mBAAqBnY,EAClCmN,EAAOgL,MAAM,eAAiBnY,EAC9BmN,EAAOgL,MAAM,+BAAiC,mBAEvChL,GAcXovC,SAAU,SAAUpvC,EAAQhP,EAAQuhG,GAEhC,GAAIl/F,EA+BJ,OA7BuByF,UAAnBy5F,IAAgCA,GAAiB,GAEjDvhG,IAEsB,gBAAXA,GAGPqC,EAASoM,SAAS+yF,eAAexhG,GAEV,gBAAXA,IAA2C,IAApBA,EAAOy3B,WAG1Cp1B,EAASrC,IAKZqC,IAEDA,EAASoM,SAASimC,MAGlB6sD,GAAkBl/F,EAAO2X,QAEzB3X,EAAO2X,MAAMynF,SAAW,UAG5Bp/F,EAAOq/F,YAAY1yF,GAEZA,GAUXkwC,cAAe,SAAUlwC,GAEjBA,EAAO2yF,YAEP3yF,EAAO2yF,WAAW36F,YAAYgI,IAkBtCzC,aAAc,SAAUb,EAAS+xE,EAAYC,EAAY77D,EAAQE,EAAQ47D,EAAOC,GAI5E,MAFAlyE,GAAQa,aAAasV,EAAQ87D,EAAOC,EAAO77D,EAAQ07D,EAAYC,GAExDhyE,GAgBX6xE,oBAAqB,SAAU7xE,EAAS7J,GAEpC,GAAIg+B,GAAI5Y,EAAOC,OAAOC,mBAAmBzb,EAOzC,OALIm0B,KAEAn0B,EAAQm0B,GAAKh+B,GAGV6J,GAWXyb,mBAAoB,SAAUzb,GAE1B,GAAIk2F,IAAW,IAAK,UAAW,MAAO,OAAQ,KAE9C,KAAK,GAAIC,KAAUD,GACnB,CACI,GAAI/hE,GAAI+hE,EAAOC,GAAU,sBAEzB,IAAIhiE,IAAKn0B,GAEL,MAAOm0B,GAIf,MAAO,OAWXy9C,oBAAqB,SAAU5xE,GAE3B,GAAIm0B,GAAI5Y,EAAOC,OAAOC,mBAAmBzb,EAEzC,OAAIm0B,GAEOn0B,EAAQm0B,GAFnB,QAeJiiE,uBAAwB,SAAU9yF,GAI9B,IAAK,GAFD+yF,IAAU,gBAAiB,cAAe,mBAAoB,4BAA6B,oBAAqB,aAE3G1gG,EAAI,EAAGA,EAAI0gG,EAAMzgG,OAAQD,IAE9B2N,EAAOgL,MAAM,mBAAqB+nF,EAAM1gG,EAK5C,OAFA2N,GAAOgL,MAAMgoF,oBAAsB,mBAE5BhzF,GAYXizF,yBAA0B,SAAUjzF,GAKhC,MAHAA,GAAOgL,MAAM,mBAAqB,OAClChL,EAAOgL,MAAMgoF,oBAAsB,UAE5BhzF,IAoBfiY,EAAOw2B,sBAAwB,SAASn/C,EAAM4jG,GAElBp6F,SAApBo6F,IAAiCA,GAAkB,GAKvD9jG,KAAKE,KAAOA,EAMZF,KAAK68C,WAAY,EAKjB78C,KAAK8jG,gBAAkBA,CASvB,KAAK,GAPDC,IACA,KACA,MACA,SACA,KAGK1+F,EAAI,EAAGA,EAAI0+F,EAAQ7gG,SAAW2P,OAAOmxF,sBAAuB3+F,IAEjEwN,OAAOmxF,sBAAwBnxF,OAAOkxF,EAAQ1+F,GAAK,yBACnDwN,OAAOoxF,qBAAuBpxF,OAAOkxF,EAAQ1+F,GAAK,uBAOtDrF,MAAKkkG,eAAgB,EAMrBlkG,KAAKmkG,QAAU,KAMfnkG,KAAKokG,WAAa,MAItBv7E,EAAOw2B,sBAAsBx8C,WAMzBwI,MAAO,WAEHrL,KAAK68C,WAAY,CAEjB,IAAI3N,GAAQlvC,MAEP6S,OAAOmxF,uBAAyBhkG,KAAK8jG,iBAEtC9jG,KAAKkkG,eAAgB,EAErBlkG,KAAKmkG,QAAU,WACX,MAAOj1D,GAAMm1D,oBAGjBrkG,KAAKokG,WAAavxF,OAAO2rF,WAAWx+F,KAAKmkG,QAAS,KAIlDnkG,KAAKkkG,eAAgB,EAErBlkG,KAAKmkG,QAAU,SAAUn8D,GACrB,MAAOkH,GAAMo1D,UAAUt8D,IAG3BhoC,KAAKokG,WAAavxF,OAAOmxF,sBAAsBhkG,KAAKmkG,WAS5DG,UAAW,SAAUC,GAEbvkG,KAAK68C,YAGL78C,KAAKE,KAAK0nC,OAAO/mC,KAAKq1B,MAAMquE,IAE5BvkG,KAAKokG,WAAavxF,OAAOmxF,sBAAsBhkG,KAAKmkG,WAS5DE,iBAAkB,WAEVrkG,KAAK68C,YAEL78C,KAAKE,KAAK0nC,OAAOmI,KAAKoO,OAEtBn+C,KAAKokG,WAAavxF,OAAO2rF,WAAWx+F,KAAKmkG,QAASnkG,KAAKE,KAAK8nC,KAAKw8D,cASzEv5F,KAAM,WAEEjL,KAAKkkG,cAELO,aAAazkG,KAAKokG,YAIlBvxF,OAAOoxF,qBAAqBjkG,KAAKokG,YAGrCpkG,KAAK68C,WAAY,GASrB6nD,aAAc,WACV,MAAO1kG,MAAKkkG,eAQhBS,MAAO,WACH,MAAQ3kG,MAAKkkG,iBAAkB,IAKvCr7E,EAAOw2B,sBAAsBx8C,UAAUC,YAAc+lB,EAAOw2B,sBAkB5Dx2B,EAAOhoB,MAOH+jG,IAAe,EAAV/jG,KAAKC,GAUV47C,QAAS,SAAUxe,EAAKt2B,GAEpB,MAAO/G,MAAKq1B,MAAMr1B,KAAKs3B,UAAYvwB,EAAMs2B,EAAM,GAAKA,IAaxD2mE,WAAY,SAAUngG,EAAGC,EAAGmgG,GAIxB,MAFgBp7F,UAAZo7F,IAAyBA,EAAU,MAEhCjkG,KAAKq7B,IAAIx3B,EAAIC,GAAKmgG,GAa7BC,cAAe,SAAUrgG,EAAGC,EAAGmgG,GAI3B,MAFgBp7F,UAAZo7F,IAAyBA,EAAU,MAE5BngG,EAAImgG,EAARpgG,GAaXsgG,iBAAkB,SAAUtgG,EAAGC,EAAGmgG,GAI9B,MAFgBp7F,UAAZo7F,IAAyBA,EAAU,MAEhCpgG,EAAIC,EAAImgG,GAYnBG,UAAW,SAAUC,EAAKJ,GAItB,MAFgBp7F,UAAZo7F,IAAyBA,EAAU,MAEhCjkG,KAAKgH,KAAKq9F,EAAMJ,IAY3BK,WAAY,SAAUD,EAAKJ,GAIvB,MAFgBp7F,UAAZo7F,IAAyBA,EAAU,MAEhCjkG,KAAKq1B,MAAMgvE,EAAMJ,IAW5BM,QAAS,WAKL,IAAK,GAHDxe,GAAM,EACNzvD,EAAMR,UAAUzzB,OAEXD,EAAI,EAAOk0B,EAAJl0B,EAASA,IAErB2jF,IAASjwD,UAAU1zB,EAGvB,OAAO2jF,GAAMzvD,GASjBkuE,MAAO,SAAUn2E,GACb,MAAOA,GAAI,GAcfo2E,OAAQ,SAAUn8D,EAAOo8D,EAAKl6F,GAI1B,MAFc3B,UAAV2B,IAAuBA,EAAQ,GAEvB,IAARk6F,EACOp8D,GAGXA,GAAS99B,EACT89B,EAAQo8D,EAAM1kG,KAAKw6B,MAAM8N,EAAQo8D,GAE1Bl6F,EAAQ89B,IAgBnBq8D,YAAa,SAAUr8D,EAAOo8D,EAAKl6F,GAI/B,MAFc3B,UAAV2B,IAAuBA,EAAQ,GAEvB,IAARk6F,EACOp8D,GAGXA,GAAS99B,EACT89B,EAAQo8D,EAAM1kG,KAAKq1B,MAAMiT,EAAQo8D,GAE1Bl6F,EAAQ89B,IAgBnBmoD,WAAY,SAAUnoD,EAAOo8D,EAAKl6F,GAI9B,MAFc3B,UAAV2B,IAAuBA,EAAQ,GAEvB,IAARk6F,EACOp8D,GAGXA,GAAS99B,EACT89B,EAAQo8D,EAAM1kG,KAAKgH,KAAKshC,EAAQo8D,GAEzBl6F,EAAQ89B,IAuCnBs8D,QAAS,SAAUhiG,EAAOiiG,EAAO10B,GAEftnE,SAAVg8F,IAAuBA,EAAQ,GACtBh8F,SAATsnE,IAAsBA,EAAO,GAEjC,IAAIxsE,GAAI3D,KAAK8kG,IAAI30B,GAAO00B,EAExB,OAAO7kG,MAAKw6B,MAAM53B,EAAQe,GAAKA,GAWnCohG,QAAS,SAAUniG,EAAOiiG,EAAO10B,GAEftnE,SAAVg8F,IAAuBA,EAAQ,GACtBh8F,SAATsnE,IAAsBA,EAAO,GAEjC,IAAIxsE,GAAI3D,KAAK8kG,IAAI30B,GAAO00B,EAExB,OAAO7kG,MAAKq1B,MAAMzyB,EAAQe,GAAKA,GAWnCqhG,OAAQ,SAAUpiG,EAAOiiG,EAAO10B,GAEdtnE,SAAVg8F,IAAuBA,EAAQ,GACtBh8F,SAATsnE,IAAsBA,EAAO,GAEjC,IAAIxsE,GAAI3D,KAAK8kG,IAAI30B,GAAO00B,EAExB,OAAO7kG,MAAKgH,KAAKpE,EAAQe,GAAKA,GAalCshG,aAAc,SAAUl5F,EAAIC,EAAIC,EAAIC,GAChC,MAAOlM,MAAK2E,MAAMuH,EAAKF,EAAIC,EAAKF,IAepCm5F,cAAe,SAAUn5F,EAAIC,EAAIC,EAAIC,GACjC,MAAOlM,MAAK2E,MAAMsH,EAAKF,EAAIG,EAAKF,IAUpCm5F,mBAAoB,SAAUzX,EAAQC,GAClC,MAAO3tF,MAAK2E,MAAMgpF,EAAOlpF,EAAIipF,EAAOjpF,EAAGkpF,EAAOnpF,EAAIkpF,EAAOlpF,IAU7D4gG,oBAAqB,SAAU1X,EAAQC,GACnC,MAAO3tF,MAAK2E,MAAMgpF,EAAOnpF,EAAIkpF,EAAOlpF,EAAGmpF,EAAOlpF,EAAIipF,EAAOjpF,IAS7D4gG,aAAc,SAAUC,GACpB,MAAOnmG,MAAKomG,eAAeD,EAAWtlG,KAAKC,IAAI,IASnDslG,eAAgB,SAAUD,GAGtB,MADAA,IAAuB,EAAItlG,KAAKC,GACzBqlG,GAAY,EAAIA,EAAWA,EAAW,EAAItlG,KAAKC,IAa1DulG,OAAQ,SAAU5iG,EAAOgsB,EAAQ7nB,GAC7B,MAAO/G,MAAKq9B,IAAIz6B,EAAQgsB,EAAQ7nB,IAYpC0+F,OAAQ,SAAU7iG,EAAOgsB,EAAQyO,GAC7B,MAAOr9B,MAAK+G,IAAInE,EAAQgsB,EAAQyO,IAcpCW,KAAM,SAAUp7B,EAAOy6B,EAAKt2B,GAExB,GAAIoC,GAAQpC,EAAMs2B,CAElB,IAAa,GAATl0B,EAEA,MAAO,EAGX,IAAIoH,IAAU3N,EAAQy6B,GAAOl0B,CAO7B,OALa,GAAToH,IAEAA,GAAUpH,GAGPoH,EAAS8sB,GAepBqoE,UAAW,SAAU9iG,EAAOgsB,EAAQ7nB,GAEhC,GAAI6jF,EAMJ,OALAhoF,GAAQ5C,KAAKq7B,IAAIz4B,GACjBgsB,EAAS5uB,KAAKq7B,IAAIzM,GAClB7nB,EAAM/G,KAAKq7B,IAAIt0B,GACf6jF,GAAQhoF,EAAQgsB,GAAU7nB,GAa9B4+F,MAAO,SAAUt3E,GAEb,SAAc,EAAJA,IAUdu3E,OAAQ,SAAUv3E,GAEd,QAAa,EAAJA,IAYbgP,IAAK,WAED,GAAyB,IAArBvH,UAAUzzB,QAAwC,gBAAjByzB,WAAU,GAE3C,GAAI3lB,GAAO2lB,UAAU,OAIrB,IAAI3lB,GAAO2lB,SAGf,KAAK,GAAI1zB,GAAI,EAAGi7B,EAAM,EAAG/G,EAAMnmB,EAAK9N,OAAYi0B,EAAJl0B,EAASA,IAE7C+N,EAAK/N,GAAK+N,EAAKktB,KAEfA,EAAMj7B,EAId,OAAO+N,GAAKktB,IAahBt2B,IAAK,WAED,GAAyB,IAArB+uB,UAAUzzB,QAAwC,gBAAjByzB,WAAU,GAE3C,GAAI3lB,GAAO2lB,UAAU,OAIrB,IAAI3lB,GAAO2lB,SAGf,KAAK,GAAI1zB,GAAI,EAAG2E,EAAM,EAAGuvB,EAAMnmB,EAAK9N,OAAYi0B,EAAJl0B,EAASA,IAE7C+N,EAAK/N,GAAK+N,EAAKpJ,KAEfA,EAAM3E,EAId,OAAO+N,GAAKpJ,IAWhB8+F,YAAa,SAAUxtD,GAEnB,GAAyB,IAArBviB,UAAUzzB,QAAwC,gBAAjByzB,WAAU,GAE3C,GAAI3lB,GAAO2lB,UAAU,OAIrB,IAAI3lB,GAAO2lB,UAAUN,MAAM,EAG/B,KAAK,GAAIpzB,GAAI,EAAGi7B,EAAM,EAAG/G,EAAMnmB,EAAK9N,OAAYi0B,EAAJl0B,EAASA,IAE7C+N,EAAK/N,GAAGi2C,GAAYloC,EAAKktB,GAAKgb,KAE9Bhb,EAAMj7B,EAId,OAAO+N,GAAKktB,GAAKgb,IAWrBytD,YAAa,SAAUztD,GAEnB,GAAyB,IAArBviB,UAAUzzB,QAAwC,gBAAjByzB,WAAU,GAE3C,GAAI3lB,GAAO2lB,UAAU,OAIrB,IAAI3lB,GAAO2lB,UAAUN,MAAM,EAG/B,KAAK,GAAIpzB,GAAI,EAAG2E,EAAM,EAAGuvB,EAAMnmB,EAAK9N,OAAYi0B,EAAJl0B,EAASA,IAE7C+N,EAAK/N,GAAGi2C,GAAYloC,EAAKpJ,GAAKsxC,KAE9BtxC,EAAM3E,EAId,OAAO+N,GAAKpJ,GAAKsxC,IAYrBixB,UAAW,SAAU1uC,EAAOmrE,GAExB,MAAOA,GAAU5mG,KAAK6+B,KAAKpD,GAAQ56B,KAAKC,GAAID,KAAKC,IAAMd,KAAK6+B,KAAKpD,EAAO,KAAM,MAYlForE,oBAAqB,SAAUpnD,EAAG0c,GAE9B,GAAIj7B,GAAIue,EAAEv8C,OAAS,EACfu1B,EAAIyI,EAAIi7B,EACRl5D,EAAIpC,KAAKq1B,MAAMuC,EAEnB,OAAQ,GAAJ0jC,EAEOn8D,KAAKuoC,OAAOkX,EAAE,GAAIA,EAAE,GAAIhnB,GAG/B0jC,EAAI,EAEGn8D,KAAKuoC,OAAOkX,EAAEve,GAAIue,EAAEve,EAAI,GAAIA,EAAIzI,GAGpCz4B,KAAKuoC,OAAOkX,EAAEx8C,GAAIw8C,EAAEx8C,EAAI,EAAIi+B,EAAIA,EAAIj+B,EAAI,GAAIw1B,EAAIx1B,IAY3D6jG,oBAAqB,SAAUrnD,EAAG0c,GAK9B,IAAK,GAHDx3D,GAAI,EACJuqB,EAAIuwB,EAAEv8C,OAAS,EAEVD,EAAI,EAAQisB,GAALjsB,EAAQA,IAEpB0B,GAAK9D,KAAK8kG,IAAI,EAAIxpC,EAAGjtC,EAAIjsB,GAAKpC,KAAK8kG,IAAIxpC,EAAGl5D,GAAKw8C,EAAEx8C,GAAKjD,KAAK+mG,UAAU73E,EAAGjsB,EAG5E,OAAO0B,IAYXqiG,wBAAyB,SAAUvnD,EAAG0c,GAElC,GAAIj7B,GAAIue,EAAEv8C,OAAS,EACfu1B,EAAIyI,EAAIi7B,EACRl5D,EAAIpC,KAAKq1B,MAAMuC,EAEnB,OAAIgnB,GAAE,KAAOA,EAAEve,IAEH,EAAJi7B,IAEAl5D,EAAIpC,KAAKq1B,MAAMuC,EAAIyI,GAAK,EAAIi7B,KAGzBn8D,KAAKinG,WAAWxnD,GAAGx8C,EAAI,EAAIi+B,GAAKA,GAAIue,EAAEx8C,GAAIw8C,GAAGx8C,EAAI,GAAKi+B,GAAIue,GAAGx8C,EAAI,GAAKi+B,GAAIzI,EAAIx1B,IAI7E,EAAJk5D,EAEO1c,EAAE,IAAMz/C,KAAKinG,WAAWxnD,EAAE,GAAIA,EAAE,GAAIA,EAAE,GAAIA,EAAE,IAAKhnB,GAAKgnB,EAAE,IAG/D0c,EAAI,EAEG1c,EAAEve,IAAMlhC,KAAKinG,WAAWxnD,EAAEve,GAAIue,EAAEve,GAAIue,EAAEve,EAAI,GAAIue,EAAEve,EAAI,GAAIzI,EAAIyI,GAAKue,EAAEve,IAGvElhC,KAAKinG,WAAWxnD,EAAEx8C,EAAIA,EAAI,EAAI,GAAIw8C,EAAEx8C,GAAIw8C,EAAMx8C,EAAI,EAARi+B,EAAYA,EAAIj+B,EAAI,GAAIw8C,EAAMx8C,EAAI,EAARi+B,EAAYA,EAAIj+B,EAAI,GAAIw1B,EAAIx1B,IAc/GslC,OAAQ,SAAU2+D,EAAIjkE,EAAI/L,GACtB,OAAQ+L,EAAKikE,GAAMhwE,EAAIgwE,GAU3BH,UAAW,SAAU73E,EAAGjsB,GACpB,MAAOjD,MAAKmnG,UAAUj4E,GAAKlvB,KAAKmnG,UAAUlkG,GAAKjD,KAAKmnG,UAAUj4E,EAAIjsB,IAQtEkkG,UAAY,SAAU1jG,GAElB,GAAc,IAAVA,EAEA,MAAO,EAKX,KAFA,GAAI2jG,GAAM3jG,IAEFA,GAEJ2jG,GAAO3jG,CAGX,OAAO2jG,IAgBXH,WAAY,SAAUC,EAAIjkE,EAAIC,EAAImkE,EAAInwE,GAElC,GAAIzJ,GAAiB,IAAXyV,EAAKgkE,GAAWx5E,EAAiB,IAAX25E,EAAKpkE,GAAWi+C,EAAKhqD,EAAIA,EAAGiqD,EAAKjqD,EAAIgqD,CAErE,QAAQ,EAAIj+C,EAAK,EAAIC,EAAKzV,EAAKC,GAAMyzD,GAAM,GAAKl+C,EAAK,EAAIC,EAAK,EAAIzV,EAAKC,GAAMwzD,EAAKzzD,EAAKyJ,EAAI+L,GAY/Fy2D,WAAY,SAAUh1F,EAAGC,GACrB,MAAO9D,MAAKq7B,IAAIx3B,EAAIC,IAUxB2iG,kBAAmB,SAAU7jG,GAGzB,MAAQA,GAAQ,EAAK5C,KAAKgH,KAAKpE,GAAS5C,KAAKq1B,MAAMzyB,IAiBvD8jG,gBAAiB,SAAUrkG,EAAQskG,EAAcC,EAAcC,GAEtCh+F,SAAjB89F,IAA8BA,EAAe,GAC5B99F,SAAjB+9F,IAA8BA,EAAe,GAC/B/9F,SAAdg+F,IAA2BA,EAAY,EAS3C,KAAK,GAPDviG,GAAMqiG,EACNpiG,EAAMqiG,EACNE,EAAMD,EAAY7mG,KAAKC,GAAKoC,EAE5B0kG,KACAC,KAEKjjG,EAAI,EAAO1B,EAAJ0B,EAAYA,IAExBQ,GAAOD,EAAMwiG,EACbxiG,GAAOC,EAAMuiG,EAEbC,EAAShjG,GAAKQ,EACdyiG,EAASjjG,GAAKO,CAIlB,QAASA,IAAK0iG,EAAUziG,IAAKwiG,EAAU1kG,OAAQA,IAcnDk4B,SAAU,SAAUxuB,EAAIC,EAAIC,EAAIC,GAE5B,GAAIc,GAAKjB,EAAKE,EACViB,EAAKlB,EAAKE,CAEd,OAAOlM,MAAK0E,KAAKsI,EAAKA,EAAKE,EAAKA,IAepC+5F,WAAY,SAAUl7F,EAAIC,EAAIC,EAAIC,GAE9B,GAAIc,GAAKjB,EAAKE,EACViB,EAAKlB,EAAKE,CAEd,OAAOc,GAAKA,EAAKE,EAAKA,GAe1Bg6F,YAAa,SAAUn7F,EAAIC,EAAIC,EAAIC,EAAI44F,GAInC,MAFYj8F,UAARi8F,IAAqBA,EAAM,GAExB9kG,KAAK0E,KAAK1E,KAAK8kG,IAAI74F,EAAKF,EAAI+4F,GAAO9kG,KAAK8kG,IAAI54F,EAAKF,EAAI84F,KAahEllE,MAAO,SAAUgf,EAAGvhB,EAAKt2B,GAErB,MAAQs2B,GAAJuhB,EAEOvhB,EAEIuhB,EAAN73C,EAEEA,EAIA63C,GAcfuoD,YAAa,SAAU3iG,EAAGX,GACtB,MAAWA,GAAJW,EAAQX,EAAIW,GAavB4iG,OAAQ,SAAUvjG,EAAGC,EAAG++B,GACpB,MAAQ7iC,MAAKq7B,IAAIx3B,EAAIC,IAAM++B,GAc/BwkE,UAAW,SAAU7iG,EAAGy5B,EAAIC,EAAIC,EAAIC,GAChC,MAAOD,IAAO35B,EAAIy5B,IAASG,EAAKD,IAASD,EAAKD,IAYlDqpE,WAAY,SAAU9iG,EAAG64B,EAAKt2B,GAM1B,MAHAvC,GAAIxE,KAAK+G,IAAI,EAAG/G,KAAKq9B,IAAI,GAAI74B,EAAI64B,IAAQt2B,EAAMs2B,KAGxC74B,EAAIA,GAAK,EAAI,EAAIA,IAa5B+iG,aAAc,SAAU/iG,EAAG64B,EAAKt2B,GAE5B,MADAvC,GAAIxE,KAAK+G,IAAI,EAAG/G,KAAKq9B,IAAI,GAAI74B,EAAI64B,IAAQt2B,EAAMs2B,KACxC74B,EAAIA,EAAIA,GAAKA,GAAS,EAAJA,EAAQ,IAAM,KAY3Ci/E,KAAM,SAAUj/E,GACZ,MAAa,GAAJA,EAAU,GAASA,EAAI,EAAM,EAAI,GAY9CgjG,QAAS,SAAU3jG,EAAGC,EAAGqsE,GAIrB,MAFatnE,UAATsnE,IAAsBA,EAAO,GAE7BtsE,EAAIC,GAAKqsE,EAAOrsE,EAET,EAEEqsE,EAAJtsE,GAAYssE,EAAOtsE,EAEjB,GAICA,EAAIssE,GAAQrsE,GAOhC,IAAI2jG,GAAwBznG,KAAKC,GAAK,IAClCynG,EAAwB,IAAM1nG,KAAKC,EAm5sBnC,OA14sBJ+nB,GAAOhoB,KAAKm7B,SAAW,SAAmBwsE,GACtC,MAAOA,GAAUF,GAUrBz/E,EAAOhoB,KAAK8/B,SAAW,SAAmBimE,GACtC,MAAOA,GAAU2B,GAyBrB1/E,EAAOq1B,oBAAsB,SAAUuqD,GAErB/+F,SAAV++F,IAAuBA,MAM3BzoG,KAAK4E,EAAI,EAMT5E,KAAK0oG,GAAK,EAMV1oG,KAAKwoB,GAAK,EAMVxoB,KAAKyoB,GAAK,EAEW,gBAAVggF,GAEPzoG,KAAKspC,MAAMm/D,GAIXzoG,KAAK2oG,IAAIF,IAKjB5/E,EAAOq1B,oBAAoBr7C,WASvBslC,IAAK,WAED,GAAIjR,GAAI,QAAUl3B,KAAK0oG,GAAc,uBAAT1oG,KAAK4E,CAOjC,OALA5E,MAAK4E,EAAQ,EAAJsyB,EACTl3B,KAAK0oG,GAAK1oG,KAAKwoB,GACfxoB,KAAKwoB,GAAKxoB,KAAKyoB,GACfzoB,KAAKyoB,GAAKyO,EAAIl3B,KAAK4E,EAEZ5E,KAAKyoB,IAWhBkgF,IAAK,SAAUF,GAQX,GALAzoG,KAAK0oG,GAAK1oG,KAAK81C,KAAK,KACpB91C,KAAKwoB,GAAKxoB,KAAK81C,KAAK91C,KAAK0oG,IACzB1oG,KAAKyoB,GAAKzoB,KAAK81C,KAAK91C,KAAKwoB,IACzBxoB,KAAK4E,EAAI,EAEJ6jG,EAML,IAAK,GAAIxlG,GAAI,EAAGA,EAAIwlG,EAAMvlG,QAAuB,MAAZulG,EAAMxlG,GAAaA,IACxD,CACI,GAAIo7C,GAAOoqD,EAAMxlG,EAEjBjD,MAAK0oG,IAAM1oG,KAAK81C,KAAKuI,GACrBr+C,KAAK0oG,OAAS1oG,KAAK0oG,GAAK,GACxB1oG,KAAKwoB,IAAMxoB,KAAK81C,KAAKuI,GACrBr+C,KAAKwoB,OAASxoB,KAAKwoB,GAAK,GACxBxoB,KAAKyoB,IAAMzoB,KAAK81C,KAAKuI,GACrBr+C,KAAKyoB,OAASzoB,KAAKyoB,GAAK,KAahCqtB,KAAM,SAAU9kC,GAEZ,GAAIoS,GAAGngB,EAAGisB,CAIV,KAHAA,EAAI,WACJle,EAAOA,EAAK8W,WAEP7kB,EAAI,EAAGA,EAAI+N,EAAK9N,OAAQD,IACzBisB,GAAKle,EAAKgzD,WAAW/gE,GACrBmgB,EAAI,mBAAsB8L,EAC1BA,EAAI9L,IAAM,EACVA,GAAK8L,EACL9L,GAAK8L,EACLA,EAAI9L,IAAM,EACVA,GAAK8L,EACLA,GAAS,WAAJ9L,CAGT,OAAmB,yBAAX8L,IAAM,IAUlB05E,QAAS,WAEL,MAA8B,YAAvB5oG,KAAKmoC,IAAIlhC,MAAMjH,OAU1BooC,KAAM,WAEF,MAAOpoC,MAAKmoC,IAAIlhC,MAAMjH,MAAgD,wBAAhB,QAAvBA,KAAKmoC,IAAIlhC,MAAMjH,MAAmB,IAUrE8iF,KAAM,WAEF,MAAO9iF,MAAK4oG,UAAY5oG,KAAKooC,QAYjCygE,eAAgB,SAAU3qE,EAAKt2B,GAE3B,MAAO/G,MAAKq1B,MAAMl2B,KAAK8oG,YAAY,EAAGlhG,EAAMs2B,EAAM,GAAKA,IAa3Dwe,QAAS,SAAUxe,EAAKt2B,GAEpB,MAAO5H,MAAK6oG,eAAe3qE,EAAKt2B,IAYpCkhG,YAAa,SAAU5qE,EAAKt2B,GAExB,MAAO5H,MAAKooC,QAAUxgC,EAAMs2B,GAAOA,GAUvC6qE,OAAQ,WAEJ,MAAO,GAAI,EAAI/oG,KAAKooC,QAUxBisC,KAAM,WAEF,GAAI3vE,GAAI,GACJC,EAAI,EAER,KAAKA,EAAID,EAAI,GAAIA,IAAM,GAAIC,IAAKD,EAAI,EAAQ,EAAJA,EAAM,GAAO,GAAFA,EAAO,EAAE1E,KAAKooC,QAAY,GAAF1jC,EAAO,GAAK,GAAK,GAAGojB,SAAS,IAAM,KAI9G,MAAOnjB,IAWXqkG,KAAM,SAAUC,GAEZ,MAAOA,GAAIjpG,KAAK6oG,eAAe,EAAGI,EAAI/lG,OAAS,KAUnDohF,KAAM,WAEF,MAAOtkF,MAAKgpG,MAAM,GAAI,KAW1BE,aAAc,SAAUD,GAEpB,MAAOA,MAAOpoG,KAAK8kG,IAAI3lG,KAAKooC,OAAQ,IAAM6gE,EAAI/lG,OAAS,GAAK,MAYhE+9D,UAAW,SAAU/iC,EAAKt2B,GAEtB,MAAO5H,MAAK8oG,YAAY5qE,GAAO,UAAct2B,GAAO,YAUxD6zB,MAAO,WAEH,MAAOz7B,MAAK6oG,eAAe,KAAM,MAqBrCv/D,MAAO,SAAUA,GAYb,MAVqB,gBAAVA,IAAsBA,EAAM0gC,MAAM,WAEzC1gC,EAAQA,EAAM1R,MAAM,KAEpB53B,KAAK4E,EAAI6vF,WAAWnrD,EAAM,IAC1BtpC,KAAK0oG,GAAKjU,WAAWnrD,EAAM,IAC3BtpC,KAAKwoB,GAAKisE,WAAWnrD,EAAM,IAC3BtpC,KAAKyoB,GAAKgsE,WAAWnrD,EAAM,MAGvB,OAAQtpC,KAAK4E,EAAG5E,KAAK0oG,GAAI1oG,KAAKwoB,GAAIxoB,KAAKyoB,IAAIlW,KAAK,OAMhEsW,EAAOq1B,oBAAoBr7C,UAAUC,YAAc+lB,EAAOq1B,oBAwB1Dr1B,EAAOsgF,SAAW,SAAS9jG,EAAGC,EAAGqB,EAAOC,EAAQwiG,EAAYC,EAAW1qF,GAMnE3e,KAAKopG,WAAa,GAMlBppG,KAAKqpG,UAAY,EAKjBrpG,KAAK2e,MAAQ,EAKb3e,KAAKwG,UAKLxG,KAAKspG,WAKLtpG,KAAKupG,SAMLvpG,KAAKwpG,UAELxpG,KAAK8oC,MAAMzjC,EAAGC,EAAGqB,EAAOC,EAAQwiG,EAAYC,EAAW1qF,IAI3DkK,EAAOsgF,SAAStmG,WAcZimC,MAAO,SAAUzjC,EAAGC,EAAGqB,EAAOC,EAAQwiG,EAAYC,EAAW1qF,GAEzD3e,KAAKopG,WAAaA,GAAc,GAChCppG,KAAKqpG,UAAYA,GAAa,EAC9BrpG,KAAK2e,MAAQA,GAAS,EAEtB3e,KAAKwG,QACDnB,EAAGxE,KAAKw6B,MAAMh2B,GACdC,EAAGzE,KAAKw6B,MAAM/1B,GACdqB,MAAOA,EACPC,OAAQA,EACR6iG,SAAU5oG,KAAKq1B,MAAMvvB,EAAQ,GAC7B+iG,UAAW7oG,KAAKq1B,MAAMtvB,EAAS,GAC/BsyB,MAAOr4B,KAAKw6B,MAAMh2B,GAAKxE,KAAKq1B,MAAMvvB,EAAQ,GAC1Ck1B,OAAQh7B,KAAKw6B,MAAM/1B,GAAKzE,KAAKq1B,MAAMtvB,EAAS,IAGhD5G,KAAKspG,QAAQpmG,OAAS,EACtBlD,KAAKupG,MAAMrmG,OAAS,GAUxBymG,SAAU,SAAU3tD,GAEhBA,EAAMhlB,QAAQh3B,KAAK4pG,gBAAiB5pG,MAAM,IAU9C4pG,gBAAiB,SAAUlnF,GAEnBA,EAAO4zB,MAAQ5zB,EAAO5W,QAEtB9L,KAAK6pG,OAAOnnF,EAAO4zB,OAU3B1e,MAAO,WAGH53B,KAAKupG,MAAM,GAAK,GAAI1gF,GAAOsgF,SAASnpG,KAAKwG,OAAO0yB,MAAOl5B,KAAKwG,OAAOlB,EAAGtF,KAAKwG,OAAOijG,SAAUzpG,KAAKwG,OAAOkjG,UAAW1pG,KAAKopG,WAAYppG,KAAKqpG,UAAYrpG,KAAK2e,MAAQ,GAGlK3e,KAAKupG,MAAM,GAAK,GAAI1gF,GAAOsgF,SAASnpG,KAAKwG,OAAOnB,EAAGrF,KAAKwG,OAAOlB,EAAGtF,KAAKwG,OAAOijG,SAAUzpG,KAAKwG,OAAOkjG,UAAW1pG,KAAKopG,WAAYppG,KAAKqpG,UAAYrpG,KAAK2e,MAAQ,GAG9J3e,KAAKupG,MAAM,GAAK,GAAI1gF,GAAOsgF,SAASnpG,KAAKwG,OAAOnB,EAAGrF,KAAKwG,OAAOq1B,OAAQ77B,KAAKwG,OAAOijG,SAAUzpG,KAAKwG,OAAOkjG,UAAW1pG,KAAKopG,WAAYppG,KAAKqpG,UAAYrpG,KAAK2e,MAAQ,GAGnK3e,KAAKupG,MAAM,GAAK,GAAI1gF,GAAOsgF,SAASnpG,KAAKwG,OAAO0yB,MAAOl5B,KAAKwG,OAAOq1B,OAAQ77B,KAAKwG,OAAOijG,SAAUzpG,KAAKwG,OAAOkjG,UAAW1pG,KAAKopG,WAAYppG,KAAKqpG,UAAYrpG,KAAK2e,MAAQ,IAU3KkrF,OAAQ,SAAUvzD,GAEd,GACI3tC,GADA1F,EAAI,CAIR,IAAqB,MAAjBjD,KAAKupG,MAAM,KAEX5gG,EAAQ3I,KAAKi4C,SAAS3B,GAER,KAAV3tC,GAGA,WADA3I,MAAKupG,MAAM5gG,GAAOkhG,OAAOvzD,EAOjC,IAFAt2C,KAAKspG,QAAQvlG,KAAKuyC,GAEdt2C,KAAKspG,QAAQpmG,OAASlD,KAAKopG,YAAcppG,KAAK2e,MAAQ3e,KAAKqpG,UAS3D,IANqB,MAAjBrpG,KAAKupG,MAAM,IAEXvpG,KAAK43B,QAIF30B,EAAIjD,KAAKspG,QAAQpmG,QAEpByF,EAAQ3I,KAAKi4C,SAASj4C,KAAKspG,QAAQrmG,IAErB,KAAV0F,EAGA3I,KAAKupG,MAAM5gG,GAAOkhG,OAAO7pG,KAAKspG,QAAQzgG,OAAO5F,EAAG,GAAG,IAInDA,KAchBg1C,SAAU,SAAUzY,GAGhB,GAAI72B,GAAQ,EA8BZ,OA5BI62B,GAAKn6B,EAAIrF,KAAKwG,OAAO0yB,OAASsG,EAAKtG,MAAQl5B,KAAKwG,OAAO0yB,MAEnDsG,EAAKl6B,EAAItF,KAAKwG,OAAOq1B,QAAU2D,EAAK3D,OAAS77B,KAAKwG,OAAOq1B,OAGzDlzB,EAAQ,EAEH62B,EAAKl6B,EAAItF,KAAKwG,OAAOq1B,SAG1BlzB,EAAQ,GAGP62B,EAAKn6B,EAAIrF,KAAKwG,OAAO0yB,QAGtBsG,EAAKl6B,EAAItF,KAAKwG,OAAOq1B,QAAU2D,EAAK3D,OAAS77B,KAAKwG,OAAOq1B,OAGzDlzB,EAAQ,EAEH62B,EAAKl6B,EAAItF,KAAKwG,OAAOq1B,SAG1BlzB,EAAQ,IAITA,GAWXmhG,SAAU,SAAUl7F,GAEhB,GAAIA,YAAkBia,GAAOrmB,UAEzB,GAAIunG,GAAgB/pG,KAAKspG,QAErB3gG,EAAQ3I,KAAKi4C,SAASrpC,OAG9B,CACI,IAAKA,EAAO0nC,KAER,MAAOt2C,MAAKwpG,MAGhB,IAAIO,GAAgB/pG,KAAKspG,QAErB3gG,EAAQ3I,KAAKi4C,SAASrpC,EAAO0nC,MAoBrC,MAjBIt2C,MAAKupG,MAAM,KAGG,KAAV5gG,EAEAohG,EAAgBA,EAAcrzE,OAAO12B,KAAKupG,MAAM5gG,GAAOmhG,SAASl7F,KAKhEm7F,EAAgBA,EAAcrzE,OAAO12B,KAAKupG,MAAM,GAAGO,SAASl7F,IAC5Dm7F,EAAgBA,EAAcrzE,OAAO12B,KAAKupG,MAAM,GAAGO,SAASl7F,IAC5Dm7F,EAAgBA,EAAcrzE,OAAO12B,KAAKupG,MAAM,GAAGO,SAASl7F,IAC5Dm7F,EAAgBA,EAAcrzE,OAAO12B,KAAKupG,MAAM,GAAGO,SAASl7F,MAI7Dm7F,GAQX3uF,MAAO,WAEHpb,KAAKspG,QAAQpmG,OAAS,CAItB,KAFA,GAAID,GAAIjD,KAAKupG,MAAMrmG,OAEZD,KAEHjD,KAAKupG,MAAMtmG,GAAGmY,QACdpb,KAAKupG,MAAM1gG,OAAO5F,EAAG,EAGzBjD,MAAKupG,MAAMrmG,OAAS,IAK5B2lB,EAAOsgF,SAAStmG,UAAUC,YAAc+lB,EAAOsgF,SAmD/CtgF,EAAOq2B,IAAM,SAAUh/C,GAEnBF,KAAKE,KAAOA,GAIhB2oB,EAAOq2B,IAAIr8C,WAQPmnG,YAAa,WAET,MAAIn3F,QAAOo3F,UAAYp3F,OAAOo3F,SAASC,SAC5Br3F,OAAOo3F,SAASC,SAGpB,MAcXC,gBAAiB,SAAUC,GACvB,MAAoD,KAA7Cv3F,OAAOo3F,SAASC,SAAS9gG,QAAQghG,IAgB5CC,kBAAmB,SAAUt1F,EAAKtR,EAAO6mG,EAAU91B,GAE9B9qE,SAAb4gG,IAA0BA,GAAW,IAC7B5gG,SAAR8qE,GAA6B,KAARA,KAAcA,EAAM3hE,OAAOo3F,SAASM,KAE7D,IAAIjvE,GAAS,GACT26D,EAAK,GAAI4I,QAAO,UAAY9pF,EAAM,kBAAmB,KAEzD,IAAIkhF,EAAGN,KAAKnhB,GAIJl5C,EAFiB,mBAAV73B,IAAmC,OAAVA,EAEvB+wE,EAAIv6C,QAAQg8D,EAAI,KAAOlhF,EAAM,IAAMtR,EAAQ,QAI3C+wE,EAAIv6C,QAAQg8D,EAAI,QAAQh8D,QAAQ,UAAW,QAKxD,IAAqB,mBAAVx2B,IAAmC,OAAVA,EACpC,CACI,GAAI+mG,GAAiC,KAArBh2B,EAAIprE,QAAQ,KAAc,IAAM,IAC5C0sC,EAAO0+B,EAAI58C,MAAM,IACrB48C,GAAM1+B,EAAK,GAAK00D,EAAYz1F,EAAM,IAAMtR,EAEpCqyC,EAAK,KACL0+B,GAAO,IAAM1+B,EAAK,IAGtBxa,EAASk5C,MAKTl5C,GAASk5C,CAIjB,OAAI81B,QAEAz3F,OAAOo3F,SAASM,KAAOjvE,GAIhBA,GAafmvE,eAAgB,SAAUC,GAEJhhG,SAAdghG,IAA2BA,EAAY,GAE3C,IAAIpvE,MACAqvE,EAAYV,SAASW,OAAOC,UAAU,GAAGjzE,MAAM,IAEnD,KAAK,GAAI30B,KAAK0nG,GACd,CACI,GAAI51F,GAAM41F,EAAU1nG,GAAG20B,MAAM,IAE7B,IAAI7iB,EAAI7R,OAAS,EACjB,CACI,GAAIwnG,GAAaA,GAAa1qG,KAAK8qG,UAAU/1F,EAAI,IAE7C,MAAO/U,MAAK8qG,UAAU/1F,EAAI,GAI1BumB,GAAOt7B,KAAK8qG,UAAU/1F,EAAI,KAAO/U,KAAK8qG,UAAU/1F,EAAI,KAKhE,MAAOumB,IAYXwvE,UAAW,SAAUrnG,GACjB,MAAOsnG,oBAAmBtnG,EAAMw2B,QAAQ,MAAO,QAKvDpR,EAAOq2B,IAAIr8C,UAAUC,YAAc+lB,EAAOq2B,IAqB1Cr2B,EAAOg2B,aAAe,SAAU3+C,GAK5BF,KAAKE,KAAOA,EAaZF,KAAKgrG,YAAa,EAMlBhrG,KAAKirG,WAMLjrG,KAAKkrG,QAELlrG,KAAKmrG,SAEDC,OAAUviF,EAAOwiF,OAAOD,OACxBE,OAAUziF,EAAOwiF,OAAOC,OACxBC,OAAU1iF,EAAOwiF,OAAOE,OACxBC,OAAU3iF,EAAOwiF,OAAOG,OACxBC,OAAU5iF,EAAOwiF,OAAOI,OAExBC,OAAU7iF,EAAOwiF,OAAOK,OAAOC,KAC/BC,KAAQ/iF,EAAOwiF,OAAOQ,UAAUC,IAChCC,MAASljF,EAAOwiF,OAAOU,MAAMD,IAC7BE,MAASnjF,EAAOwiF,OAAOY,QAAQH,IAC/BI,MAASrjF,EAAOwiF,OAAOc,QAAQL,IAC/BM,KAAQvjF,EAAOwiF,OAAOgB,WAAWP,IACjCQ,KAAQzjF,EAAOwiF,OAAOkB,YAAYT,IAClCU,KAAQ3jF,EAAOwiF,OAAOoB,SAASX,IAC/BY,QAAW7jF,EAAOwiF,OAAOqB,QAAQZ,IACjCa,KAAQ9jF,EAAOwiF,OAAOsB,KAAKb,IAC3Bc,OAAU/jF,EAAOwiF,OAAOuB,OAAOd,IAE/Be,cAAehkF,EAAOwiF,OAAOQ,UAAUiB,GACvCC,eAAgBlkF,EAAOwiF,OAAOU,MAAMe,GACpCE,eAAgBnkF,EAAOwiF,OAAOY,QAAQa,GACtCG,eAAgBpkF,EAAOwiF,OAAOc,QAAQW,GACtCI,cAAerkF,EAAOwiF,OAAOgB,WAAWS,GACxCK,cAAetkF,EAAOwiF,OAAOkB,YAAYO,GACzCM,cAAevkF,EAAOwiF,OAAOoB,SAASK,GACtCO,iBAAkBxkF,EAAOwiF,OAAOqB,QAAQI,GACxCQ,cAAezkF,EAAOwiF,OAAOsB,KAAKG,GAClCS,gBAAiB1kF,EAAOwiF,OAAOuB,OAAOE,GAEtCU,eAAgB3kF,EAAOwiF,OAAOQ,UAAUC,IACxC2B,gBAAiB5kF,EAAOwiF,OAAOU,MAAMD,IACrC4B,gBAAiB7kF,EAAOwiF,OAAOY,QAAQH,IACvC6B,gBAAiB9kF,EAAOwiF,OAAOc,QAAQL,IACvC8B,eAAgB/kF,EAAOwiF,OAAOgB,WAAWP,IACzC+B,eAAgBhlF,EAAOwiF,OAAOkB,YAAYT,IAC1CgC,eAAgBjlF,EAAOwiF,OAAOoB,SAASX,IACvCiC,kBAAmBllF,EAAOwiF,OAAOqB,QAAQZ,IACzCkC,eAAgBnlF,EAAOwiF,OAAOsB,KAAKb,IACnCmC,iBAAkBplF,EAAOwiF,OAAOuB,OAAOd,IAEvCoC,iBAAkBrlF,EAAOwiF,OAAOQ,UAAUsC,MAC1CC,kBAAmBvlF,EAAOwiF,OAAOU,MAAMoC,MACvCE,kBAAmBxlF,EAAOwiF,OAAOY,QAAQkC,MACzCG,kBAAmBzlF,EAAOwiF,OAAOc,QAAQgC,MACzCI,iBAAkB1lF,EAAOwiF,OAAOgB,WAAW8B,MAC3CK,iBAAkB3lF,EAAOwiF,OAAOkB,YAAY4B,MAC5CM,iBAAkB5lF,EAAOwiF,OAAOoB,SAAS0B,MACzCO,oBAAqB7lF,EAAOwiF,OAAOqB,QAAQyB,MAC3CQ,iBAAkB9lF,EAAOwiF,OAAOsB,KAAKwB,MACrCS,mBAAoB/lF,EAAOwiF,OAAOuB,OAAOuB,OAI7CnuG,KAAKE,KAAKsrC,QAAQ1N,IAAI99B,KAAK6uG,UAAW7uG,MACtCA,KAAKE,KAAKwrC,SAAS5N,IAAI99B,KAAK8uG,WAAY9uG,OAI5C6oB,EAAOg2B,aAAah8C,WAOhBksG,OAAQ,WAEJ,MAAO/uG,MAAKirG,SAQhBt+D,UAAW,WAEP,IAAK,GAAI1pC,GAAI,EAAGA,EAAIjD,KAAKirG,QAAQ/nG,OAAQD,IAErCjD,KAAKirG,QAAQhoG,GAAG+rG,eAAgB,CAGpChvG,MAAKkrG,SAWT1+B,WAAY,SAAU/0C,EAAKz0B,GAEN0G,SAAb1G,IAA0BA,GAAW,EAEzC,IAAIC,GACAk0B,CAEJ,IAAIx2B,MAAM2R,QAAQmlB,GAEd,IAAKx0B,EAAI,EAAGk0B,EAAMM,EAAIv0B,OAAYi0B,EAAJl0B,EAASA,IAEnCjD,KAAKwsE,WAAW/0C,EAAIx0B,QAGvB,IAAIw0B,EAAIriB,OAASyT,EAAOoK,OAASjwB,EAElC,IAAK,GAAIC,GAAI,EAAGk0B,EAAMM,EAAIz0B,SAASE,OAAYi0B,EAAJl0B,EAASA,IAEhDjD,KAAKwsE,WAAW/0C,EAAIz0B,SAASC,QAIrC,CACI,IAAKA,EAAI,EAAGk0B,EAAMn3B,KAAKirG,QAAQ/nG,OAAYi0B,EAAJl0B,EAASA,IAExCw0B,IAAQz3B,KAAKirG,QAAQhoG,GAAGgB,QAExBjE,KAAKiR,OAAOjR,KAAKirG,QAAQhoG,GAIjC,KAAKA,EAAI,EAAGk0B,EAAMn3B,KAAKkrG,KAAKhoG,OAAYi0B,EAAJl0B,EAASA,IAErCw0B,IAAQz3B,KAAKkrG,KAAKjoG,GAAGgB,QAErBjE,KAAKiR,OAAOjR,KAAKkrG,KAAKjoG,MActC66B,IAAK,SAAUq0C,GAEXA,EAAM88B,SAAWjvG,KACjBA,KAAKkrG,KAAKnnG,KAAKouE,IAWnB9pE,OAAQ,SAAUizC,GAEd,MAAO,IAAIzyB,GAAO8rD,MAAMr5B,EAAQt7C,KAAKE,KAAMF,OAU/CiR,OAAQ,SAAUkhE,GAEd,GAAIlvE,GAAIjD,KAAKirG,QAAQ7hG,QAAQ+oE,EAEnB,MAANlvE,EAEAjD,KAAKirG,QAAQhoG,GAAG+rG,eAAgB,GAIhC/rG,EAAIjD,KAAKkrG,KAAK9hG,QAAQ+oE,GAEZ,KAANlvE,IAEAjD,KAAKkrG,KAAKjoG,GAAG+rG,eAAgB,KAYzCpnE,OAAQ,WAEJ,GAAIsnE,GAAYlvG,KAAKkrG,KAAKhoG,OACtBisG,EAAYnvG,KAAKirG,QAAQ/nG,MAE7B,IAAkB,IAAdisG,GAAiC,IAAdD,EAEnB,OAAO,CAKX,KAFA,GAAIjsG,GAAI,EAEGksG,EAAJlsG,GAECjD,KAAKirG,QAAQhoG,GAAG2kC,OAAO5nC,KAAKE,KAAK8nC,KAAKA,MAEtC/kC,KAIAjD,KAAKirG,QAAQpiG,OAAO5F,EAAG,GAEvBksG,IAWR,OANID,GAAY,IAEZlvG,KAAKirG,QAAUjrG,KAAKirG,QAAQv0E,OAAO12B,KAAKkrG,MACxClrG,KAAKkrG,KAAKhoG,OAAS,IAGhB,GAWXksG,WAAY,SAAS9zD,GAEjB,MAAOt7C,MAAKirG,QAAQoE,KAAK,SAASl9B,GAC9B,MAAOA,GAAMluE,SAAWq3C,KAWhCuzD,UAAW,WAEP,IAAK,GAAI5rG,GAAIjD,KAAKirG,QAAQ/nG,OAAS,EAAGD,GAAK,EAAGA,IAE1CjD,KAAKirG,QAAQhoG,GAAGqsG,UAWxBR,WAAY,WAER,IAAK,GAAI7rG,GAAIjD,KAAKirG,QAAQ/nG,OAAS,EAAGD,GAAK,EAAGA,IAE1CjD,KAAKirG,QAAQhoG,GAAGssG,WAUxBC,SAAU,WAEN,IAAK,GAAIvsG,GAAIjD,KAAKirG,QAAQ/nG,OAAS,EAAGD,GAAK,EAAGA,IAE1CjD,KAAKirG,QAAQhoG,GAAGwoC,SAUxBgkE,UAAW,WAEP,IAAK,GAAIxsG,GAAIjD,KAAKirG,QAAQ/nG,OAAS,EAAGD,GAAK,EAAGA,IAE1CjD,KAAKirG,QAAQhoG,GAAG0oC,QAAO,KAOnC9iB,EAAOg2B,aAAah8C,UAAUC,YAAc+lB,EAAOg2B,aAqBnDh2B,EAAO8rD,MAAQ,SAAU1wE,EAAQ/D,EAAMwvG,GAKnC1vG,KAAKE,KAAOA,EAKZF,KAAKiE,OAASA,EAKdjE,KAAK0vG,QAAUA,EAKf1vG,KAAK2vG,YASL3vG,KAAKoe,SAAU,EASfpe,KAAK4vG,UAAY,EAKjB5vG,KAAK6vG,cAAgB,EAOrB7vG,KAAKgvG,eAAgB,EAOrBhvG,KAAK8vG,QAAU,GAAIjnF,GAAOuc,OAQ1BplC,KAAK+vG,OAAS,GAAIlnF,GAAOuc,OAOzBplC,KAAKgwG,SAAW,GAAInnF,GAAOuc,OAQ3BplC,KAAKiwG,gBAAkB,GAAIpnF,GAAOuc,OAOlCplC,KAAKkwG,WAAa,GAAIrnF,GAAOuc,OAM7BplC,KAAK68C,WAAY,EAOjB78C,KAAK+3B,QAAU,EAKf/3B,KAAKk0F,cAKLl0F,KAAKmwG,aAAe,KAMpBnwG,KAAKowG,UAAW,EAgBhBpwG,KAAKgrG,WAAa0E,EAAQ1E,WAO1BhrG,KAAKqwG,kBAAoB,KAOzBrwG,KAAKswG,yBAA2B,KAOhCtwG,KAAKuwG,YAAc,EAMnBvwG,KAAKw9C,aAAc,EAMnBx9C,KAAKwwG,aAAc,GAGvB3nF,EAAO8rD,MAAM9xE,WAkBTu3B,GAAI,SAAU85D,EAAYtuD,EAAU6qE,EAAM7kE,EAAWosB,EAAOrhD,EAAQ+5F,GAchE,OAZiBhnG,SAAbk8B,GAAsC,GAAZA,KAAiBA,EAAW;CAC7Cl8B,SAAT+mG,GAA+B,OAATA,KAAiBA,EAAO5nF,EAAOwiF,OAAOsF,SAC9CjnG,SAAdkiC,IAA2BA,GAAY,GAC7BliC,SAAVsuD,IAAuBA,EAAQ,GACpBtuD,SAAXiN,IAAwBA,EAAS,GACxBjN,SAATgnG,IAAsBA,GAAO,GAEb,gBAATD,IAAqBzwG,KAAK0vG,QAAQvE,QAAQsF,KAEjDA,EAAOzwG,KAAK0vG,QAAQvE,QAAQsF,IAG5BzwG,KAAK68C,WAEL/pC,QAAQwkB,KAAK,sDACNt3B,OAGXA,KAAK2vG,SAAS5rG,KAAK,GAAI8kB,GAAO+nF,UAAU5wG,MAAMo6B,GAAG85D,EAAYtuD,EAAU6qE,EAAMz4C,EAAOrhD,EAAQ+5F,IAExF9kE,GAEA5rC,KAAKqL,QAGFrL,OAoBXmH,KAAM,SAAU+sF,EAAYtuD,EAAU6qE,EAAM7kE,EAAWosB,EAAOrhD,EAAQ+5F,GAclE,MAZiBhnG,UAAbk8B,IAA0BA,EAAW,MAC5Bl8B,SAAT+mG,GAA+B,OAATA,KAAiBA,EAAO5nF,EAAOwiF,OAAOsF,SAC9CjnG,SAAdkiC,IAA2BA,GAAY,GAC7BliC,SAAVsuD,IAAuBA,EAAQ,GACpBtuD,SAAXiN,IAAwBA,EAAS,GACxBjN,SAATgnG,IAAsBA,GAAO,GAEb,gBAATD,IAAqBzwG,KAAK0vG,QAAQvE,QAAQsF,KAEjDA,EAAOzwG,KAAK0vG,QAAQvE,QAAQsF,IAG5BzwG,KAAK68C,WAEL/pC,QAAQwkB,KAAK,wDACNt3B,OAGXA,KAAK2vG,SAAS5rG,KAAK,GAAI8kB,GAAO+nF,UAAU5wG,MAAMmH,KAAK+sF,EAAYtuD,EAAU6qE,EAAMz4C,EAAOrhD,EAAQ+5F,IAE1F9kE,GAEA5rC,KAAKqL,QAGFrL,OAaXqL,MAAO,SAAU1C,GAIb,GAFce,SAAVf,IAAuBA,EAAQ,GAEjB,OAAd3I,KAAKE,MAAiC,OAAhBF,KAAKiE,QAA4C,IAAzBjE,KAAK2vG,SAASzsG,QAAgBlD,KAAK68C,UAEjF,MAAO78C,KAIX,KAAK,GAAIiD,GAAI,EAAGA,EAAIjD,KAAK2vG,SAASzsG,OAAQD,IAGtC,IAAK,GAAIi2C,KAAYl5C,MAAK2vG,SAAS1sG,GAAG4tG,KAElC7wG,KAAKk0F,WAAWh7C,GAAYl5C,KAAKiE,OAAOi1C,IAAa,EAEhDv4C,MAAM2R,QAAQtS,KAAKk0F,WAAWh7C,MAG/Bl5C,KAAKk0F,WAAWh7C,IAAa,EAKzC,KAAK,GAAIj2C,GAAI,EAAGA,EAAIjD,KAAK2vG,SAASzsG,OAAQD,IAEtCjD,KAAK2vG,SAAS1sG,GAAG6tG,YAgBrB,OAbA9wG,MAAK0vG,QAAQ5xE,IAAI99B,MAEjBA,KAAK68C,WAAY,GAEL,EAARl0C,GAAaA,EAAQ3I,KAAK2vG,SAASzsG,OAAS,KAE5CyF,EAAQ,GAGZ3I,KAAK+3B,QAAUpvB,EAEf3I,KAAK2vG,SAAS3vG,KAAK+3B,SAAS1sB,QAErBrL,MAaXiL,KAAM,SAAUwe,GAsBZ,MApBiB/f,UAAb+f,IAA0BA,GAAW,GAEzCzpB,KAAK68C,WAAY,EAEjB78C,KAAKqwG,kBAAoB,KACzBrwG,KAAKswG,yBAA2B,KAE5B7mF,IAEAzpB,KAAKkwG,WAAWhoE,SAASloC,KAAKiE,OAAQjE,MACtCA,KAAKwwG,aAAc,EAEfxwG,KAAKmwG,cAELnwG,KAAKmwG,aAAa9kG,SAI1BrL,KAAK0vG,QAAQz+F,OAAOjR,MAEbA,MAeX+wG,gBAAiB,SAAU73D,EAAUz1C,EAAOkF,GAExC,GAA6B,IAAzB3I,KAAK2vG,SAASzsG,OAAgB,MAAOlD,KAIzC,IAFc0J,SAAVf,IAAuBA,EAAQ,GAErB,KAAVA,EAEA,IAAK,GAAI1F,GAAI,EAAGA,EAAIjD,KAAK2vG,SAASzsG,OAAQD,IAEtCjD,KAAK2vG,SAAS1sG,GAAGi2C,GAAYz1C,MAKjCzD,MAAK2vG,SAAShnG,GAAOuwC,GAAYz1C,CAGrC,OAAOzD,OAeXg4D,MAAO,SAAUpyB,EAAUj9B,GAEvB,MAAO3I,MAAK+wG,gBAAgB,QAASnrE,EAAUj9B,IAgBnDgO,OAAQ,SAAU+Y,EAAOshF,EAAaroG,GAMlC,MAJoBe,UAAhBsnG,IAA6BA,EAAc,GAE/ChxG,KAAK+wG,gBAAgB,gBAAiBrhF,EAAO/mB,GAEtC3I,KAAK+wG,gBAAgB,cAAeC,EAAaroG,IAe5DqoG,YAAa,SAAUprE,EAAUj9B,GAE7B,MAAO3I,MAAK+wG,gBAAgB,cAAenrE,EAAUj9B,IAiBzD+nG,KAAM,SAASh2F,EAAQu2F,EAAWtoG,GAM9B,MAJkBe,UAAdunG,IAA2BA,EAAY,GAE3CjxG,KAAK+wG,gBAAgB,OAAQr2F,EAAQ/R,GAE9B3I,KAAK+wG,gBAAgB,YAAaE,EAAWtoG,IAexDsoG,UAAW,SAAUrrE,EAAUj9B,GAE3B,MAAO3I,MAAK+wG,gBAAgB,YAAanrE,EAAUj9B,IAevDuoG,OAAQ,SAAUT,EAAM9nG,GAOpB,MALoB,gBAAT8nG,IAAqBzwG,KAAK0vG,QAAQvE,QAAQsF,KAEjDA,EAAOzwG,KAAK0vG,QAAQvE,QAAQsF,IAGzBzwG,KAAK+wG,gBAAgB,iBAAkBN,EAAM9nG,IAgBxDwoG,cAAe,SAAUA,EAAe7jG,EAAS3E,GAM7C,MAJgBe,UAAZ4D,IAAyBA,EAAUub,EAAOhoB,MAE9Cb,KAAK+wG,gBAAgB,wBAAyBI,EAAexoG,GAEtD3I,KAAK+wG,gBAAgB,uBAAwBzjG,EAAS3E,IAYjEyoG,UAAW,SAAU1hF,GAMjB,MAJchmB,UAAVgmB,IAAuBA,EAAQ,GAEnC1vB,KAAK6vG,cAAgBngF,EAEd1vB,MAkBXqxG,MAAO,WAIH,IAFA,GAAIpuG,GAAI0zB,UAAUzzB,OAEXD,KAECA,EAAI,EAEJ0zB,UAAU1zB,EAAI,GAAGktG,aAAex5E,UAAU1zB,GAI1CjD,KAAKmwG,aAAex5E,UAAU1zB,EAItC,OAAOjD,OAoBXuqE,KAAM,SAAU9mE,GAMZ,MAJciG,UAAVjG,IAAuBA,GAAQ,GAEnCzD,KAAK6vG,cAAgB,EAAU,GAAK,EAE7B7vG,MAYX8qC,iBAAkB,SAAUyO,EAAUxN,GAKlC,MAHA/rC,MAAKqwG,kBAAoB92D,EACzBv5C,KAAKswG,yBAA2BvkE,EAEzB/rC,MASXyrC,MAAO,WAEHzrC,KAAKowG,UAAW,EAEhBpwG,KAAKw9C,aAAc,EAEnBx9C,KAAKuwG,YAAcvwG,KAAKE,KAAK8nC,KAAKA,MAUtCsnE,OAAQ,WAECtvG,KAAKw9C,cAENx9C,KAAKowG,UAAW,EAEhBpwG,KAAKuwG,YAAcvwG,KAAKE,KAAK8nC,KAAKA,OAU1C2D,OAAQ,WAEJ,GAAI3rC,KAAKowG,SACT,CACIpwG,KAAKowG,UAAW,EAEhBpwG,KAAKw9C,aAAc,CAEnB,KAAK,GAAIv6C,GAAI,EAAGA,EAAIjD,KAAK2vG,SAASzsG,OAAQD,IAEjCjD,KAAK2vG,SAAS1sG,GAAG45C,YAElB78C,KAAK2vG,SAAS1sG,GAAGquG,WAActxG,KAAKE,KAAK8nC,KAAKA,KAAOhoC,KAAKuwG,eAY1EhB,QAAS,WAEDvvG,KAAKw9C,aAMLx9C,KAAK2rC,UAYb/D,OAAQ,SAAUI,GAEd,GAAIhoC,KAAKgvG,gBAAkBhvG,KAAKiE,OAE5B,OAAO,CAGX,IAAIjE,KAAKowG,SAEL,OAAO,CAGX,IAAImB,GAASvxG,KAAK2vG,SAAS3vG,KAAK+3B,SAAS6P,OAAOI,EAEhD,IAAIupE,IAAW1oF,EAAO+nF,UAAUY,QAE5B,OAAO,CAEN,IAAID,IAAW1oF,EAAO+nF,UAAUa,QAcjC,MAZKzxG,MAAKwwG,cAENxwG,KAAK8vG,QAAQ5nE,SAASloC,KAAKiE,OAAQjE,MACnCA,KAAKwwG,aAAc,GAGQ,OAA3BxwG,KAAKqwG,mBAELrwG,KAAKqwG,kBAAkB3qG,KAAK1F,KAAKswG,yBAA0BtwG,KAAMA,KAAK2vG,SAAS3vG,KAAK+3B,SAASt0B,MAAOzD,KAAK2vG,SAAS3vG,KAAK+3B,UAIpH/3B,KAAK68C,SAEX,IAAI00D,IAAW1oF,EAAO+nF,UAAUc,OAWjC,MATkD,KAA9C1xG,KAAK2vG,SAAS3vG,KAAK+3B,SAAS83E,cAE5B7vG,KAAK+vG,OAAO7nE,SAASloC,KAAKiE,OAAQjE,MAIlCA,KAAKgwG,SAAS9nE,SAASloC,KAAKiE,OAAQjE,OAGjC,CAEN,IAAIuxG,IAAW1oF,EAAO+nF,UAAUe,SACrC,CACI,GAAIloF,IAAW,CAwBf,OArBIzpB,MAAKoe,SAELpe,KAAK+3B,UAED/3B,KAAK+3B,QAAU,IAEf/3B,KAAK+3B,QAAU/3B,KAAK2vG,SAASzsG,OAAS,EACtCumB,GAAW,KAKfzpB,KAAK+3B,UAED/3B,KAAK+3B,UAAY/3B,KAAK2vG,SAASzsG,SAE/BlD,KAAK+3B,QAAU,EACftO,GAAW,IAIfA,EAG2B,KAAvBzpB,KAAK6vG,eAEL7vG,KAAK2vG,SAAS3vG,KAAK+3B,SAAS1sB,QAC5BrL,KAAK+vG,OAAO7nE,SAASloC,KAAKiE,OAAQjE,OAC3B,GAEFA,KAAK6vG,cAAgB,GAE1B7vG,KAAK6vG,gBAEL7vG,KAAK2vG,SAAS3vG,KAAK+3B,SAAS1sB,QAC5BrL,KAAKgwG,SAAS9nE,SAASloC,KAAKiE,OAAQjE,OAC7B,IAKPA,KAAK68C,WAAY,EACjB78C,KAAKkwG,WAAWhoE,SAASloC,KAAKiE,OAAQjE,MACtCA,KAAKwwG,aAAc,EAEfxwG,KAAKmwG,cAELnwG,KAAKmwG,aAAa9kG,SAGf,IAMXrL,KAAKiwG,gBAAgB/nE,SAASloC,KAAKiE,OAAQjE,MAC3CA,KAAK2vG,SAAS3vG,KAAK+3B,SAAS1sB,SACrB,KAiBnBumG,aAAc,SAAUtnC,EAAWt5D,GAE/B,GAAkB,OAAdhR,KAAKE,MAAiC,OAAhBF,KAAKiE,OAE3B,MAAO,KAGOyF,UAAd4gE,IAA2BA,EAAY,IAC9B5gE,SAATsH,IAAsBA,KAG1B,KAAK,GAAI/N,GAAI,EAAGA,EAAIjD,KAAK2vG,SAASzsG,OAAQD,IAGtC,IAAK,GAAIi2C,KAAYl5C,MAAK2vG,SAAS1sG,GAAG4tG,KAElC7wG,KAAKk0F,WAAWh7C,GAAYl5C,KAAKiE,OAAOi1C,IAAa,EAEhDv4C,MAAM2R,QAAQtS,KAAKk0F,WAAWh7C,MAG/Bl5C,KAAKk0F,WAAWh7C,IAAa,EAKzC,KAAK,GAAIj2C,GAAI,EAAGA,EAAIjD,KAAK2vG,SAASzsG,OAAQD,IAEtCjD,KAAK2vG,SAAS1sG,GAAG6tG,YAGrB,KAAK,GAAI7tG,GAAI,EAAGA,EAAIjD,KAAK2vG,SAASzsG,OAAQD,IAEtC+N,EAAOA,EAAK0lB,OAAO12B,KAAK2vG,SAAS1sG,GAAG2uG,aAAatnC,GAGrD,OAAOt5D,KAUf5N,OAAOC,eAAewlB,EAAO8rD,MAAM9xE,UAAW,iBAE1CS,IAAK,WAID,IAAK,GAFDosB,GAAQ,EAEHzsB,EAAI,EAAGA,EAAIjD,KAAK2vG,SAASzsG,OAAQD,IAEtCysB,GAAS1vB,KAAK2vG,SAAS1sG,GAAG2iC,QAG9B,OAAOlW,MAMf7G,EAAO8rD,MAAM9xE,UAAUC,YAAc+lB,EAAO8rD,MAiB5C9rD,EAAO+nF,UAAY,SAAUhvG,GAKzB5B,KAAK4B,OAASA,EAKd5B,KAAKE,KAAO0B,EAAO1B,KAMnBF,KAAK6xG,UAML7xG,KAAK8xG,eAML9xG,KAAK6wG,QAML7wG,KAAK+xG,aAML/xG,KAAK4lC,SAAW,IAMhB5lC,KAAKqoG,QAAU,EAMfroG,KAAKyD,MAAQ,EAKbzD,KAAK6vG,cAAgB,EAKrB7vG,KAAKgxG,YAAc,EAMnBhxG,KAAKgyG,YAAc,EAMnBhyG,KAAK0hC,aAAc,EAMnB1hC,KAAK0wG,MAAO,EAKZ1wG,KAAKixG,UAAY,EAMjBjxG,KAAKiyG,WAAY,EAMjBjyG,KAAKg4D,MAAQ,EAKbh4D,KAAK+gF,GAAK,EAKV/gF,KAAKsxG,UAAY,KAMjBtxG,KAAKkyG,eAAiBrpF,EAAOwiF,OAAOsF,QAMpC3wG,KAAKmyG,sBAAwBtpF,EAAOhoB,KAAKgmG,oBAMzC7mG,KAAKoyG,qBAAuBvpF,EAAOhoB,KAMnCb,KAAK68C,WAAY,EAMjB78C,KAAKqyG,QAAS,GAQlBxpF,EAAO+nF,UAAUY,QAAU,EAM3B3oF,EAAO+nF,UAAUa,QAAU,EAM3B5oF,EAAO+nF,UAAUc,OAAS,EAM1B7oF,EAAO+nF,UAAUe,SAAW,EAE5B9oF,EAAO+nF,UAAU/tG,WAebu3B,GAAI,SAAU85D,EAAYtuD,EAAU6qE,EAAMz4C,EAAOrhD,EAAQ+5F,GAWrD,MATA1wG,MAAK6wG,KAAO3c,EACZl0F,KAAK4lC,SAAWA,EAChB5lC,KAAKkyG,eAAiBzB,EACtBzwG,KAAKg4D,MAAQA,EACbh4D,KAAKgyG,YAAcr7F,EACnB3W,KAAK0wG,KAAOA,EAEZ1wG,KAAKqyG,QAAS,EAEPryG,MAiBXmH,KAAM,SAAU+sF,EAAYtuD,EAAU6qE,EAAMz4C,EAAOrhD,EAAQ+5F,GAWvD,MATA1wG,MAAK6wG,KAAO3c,EACZl0F,KAAK4lC,SAAWA,EAChB5lC,KAAKkyG,eAAiBzB,EACtBzwG,KAAKg4D,MAAQA,EACbh4D,KAAKgyG,YAAcr7F,EACnB3W,KAAK0wG,KAAOA,EAEZ1wG,KAAKqyG,QAAS,EAEPryG,MAUXqL,MAAO,WAsBH,GApBArL,KAAKsxG,UAAYtxG,KAAKE,KAAK8nC,KAAKA,KAAOhoC,KAAKg4D,MAExCh4D,KAAK4B,OAAOwc,QAEZpe,KAAK+gF,GAAK/gF,KAAK4lC,SAIf5lC,KAAK+gF,GAAK,EAGV/gF,KAAKg4D,MAAQ,EAEbh4D,KAAK68C,WAAY,EAIjB78C,KAAK68C,WAAY,EAGjB78C,KAAKqyG,OAGL,IAAK,GAAIn5D,KAAYl5C,MAAK8xG,YAEtB9xG,KAAK6xG,OAAO34D,GAAYl5C,KAAK+xG,UAAU74D,GACvCl5C,KAAK6wG,KAAK33D,GAAYl5C,KAAK8xG,YAAY54D,GACvCl5C,KAAK4B,OAAOqC,OAAOi1C,GAAYl5C,KAAK6xG,OAAO34D,EAQnD,OAJAl5C,MAAKyD,MAAQ,EACbzD,KAAKsyG,YAAc,EACnBtyG,KAAK6vG,cAAgB7vG,KAAKgyG,YAEnBhyG,MAWX8wG,WAAY,WAER,IAAK,GAAI53D,KAAYl5C,MAAK4B,OAAOsyF,WACjC,CAKI,GAHAl0F,KAAK6xG,OAAO34D,GAAYl5C,KAAK4B,OAAOsyF,WAAWh7C,GAG3Cv4C,MAAM2R,QAAQtS,KAAK6wG,KAAK33D,IAC5B,CACI,GAAmC,IAA/Bl5C,KAAK6wG,KAAK33D,GAAUh2C,OAEpB,QAGiB,KAAjBlD,KAAKqoG,UAILroG,KAAK6wG,KAAK33D,IAAal5C,KAAK6xG,OAAO34D,IAAWxiB,OAAO12B,KAAK6wG,KAAK33D,KAIpC,mBAAxBl5C,MAAK6wG,KAAK33D,IAEkB,gBAAxBl5C,MAAK6wG,KAAK33D,KAGjBl5C,KAAK6wG,KAAK33D,GAAYl5C,KAAK6xG,OAAO34D,GAAYu7C,WAAWz0F,KAAK6wG,KAAK33D,GAAW,KAGlFl5C,KAAK4B,OAAOsyF,WAAWh7C,GAAYl5C,KAAK6wG,KAAK33D,IAK7Cl5C,KAAK6wG,KAAK33D,GAAYl5C,KAAK6xG,OAAO34D,GAGtCl5C,KAAK8xG,YAAY54D,GAAYl5C,KAAK6xG,OAAO34D,GACzCl5C,KAAK+xG,UAAU74D,GAAYl5C,KAAK6wG,KAAK33D,GAGzC,MAAOl5C,OAYX4nC,OAAQ,SAAUI,GAEd,GAAKhoC,KAAK68C,WAcN,GAAI7U,EAAOhoC,KAAKsxG,UAEZ,MAAOzoF,GAAO+nF,UAAUa,YAfhC,CACI,KAAIzpE,GAAQhoC,KAAKsxG,WAMb,MAAOzoF,GAAO+nF,UAAUY,OAJxBxxG,MAAK68C,WAAY,EAgBzB,GAAI01D,GAAMvyG,KAAK4B,OAAiB,WAAI5B,KAAKE,KAAK8nC,KAAKmoC,iBAAmBnwE,KAAKE,KAAK8nC,KAAKC,SAEjFjoC,MAAK4B,OAAOwc,SAEZpe,KAAK+gF,IAAMwxB,EAAKvyG,KAAK4B,OAAOguG,UAC5B5vG,KAAK+gF,GAAKlgF,KAAK+G,IAAI5H,KAAK+gF,GAAI,KAI5B/gF,KAAK+gF,IAAMwxB,EAAKvyG,KAAK4B,OAAOguG,UAC5B5vG,KAAK+gF,GAAKlgF,KAAKq9B,IAAIl+B,KAAK+gF,GAAI/gF,KAAK4lC,WAGrC5lC,KAAKqoG,QAAUroG,KAAK+gF,GAAK/gF,KAAK4lC,SAE9B5lC,KAAKyD,MAAQzD,KAAKkyG,eAAelyG,KAAKqoG,QAEtC,KAAK,GAAInvD,KAAYl5C,MAAK6wG,KAC1B,CACI,GAAIxlG,GAAQrL,KAAK6xG,OAAO34D,GACpBnvC,EAAM/J,KAAK6wG,KAAK33D,EAEhBv4C,OAAM2R,QAAQvI,GAEd/J,KAAK4B,OAAOqC,OAAOi1C,GAAYl5C,KAAKmyG,sBAAsBzsG,KAAK1F,KAAKoyG,qBAAsBroG,EAAK/J,KAAKyD,OAIpGzD,KAAK4B,OAAOqC,OAAOi1C,GAAY7tC,GAAUtB,EAAMsB,GAASrL,KAAKyD,MAIrE,OAAMzD,KAAK4B,OAAOwc,SAA4B,IAAjBpe,KAAKqoG,SAAmBroG,KAAK4B,OAAOwc,SAA4B,IAAjBpe,KAAKqoG,QAEtEroG,KAAK2W,SAGTkS,EAAO+nF,UAAUa,SAa5BG,aAAc,SAAUtnC,GAEhBtqE,KAAK4B,OAAOwc,QAEZpe,KAAK+gF,GAAK/gF,KAAK4lC,SAIf5lC,KAAK+gF,GAAK,CAGd,IAAI/vE,MACAyY,GAAW,EACX+oF,EAAO,EAAIloC,EAAa,GAE5B,GACA,CACQtqE,KAAK4B,OAAOwc,SAEZpe,KAAK+gF,IAAMyxB,EACXxyG,KAAK+gF,GAAKlgF,KAAK+G,IAAI5H,KAAK+gF,GAAI,KAI5B/gF,KAAK+gF,IAAMyxB,EACXxyG,KAAK+gF,GAAKlgF,KAAKq9B,IAAIl+B,KAAK+gF,GAAI/gF,KAAK4lC,WAGrC5lC,KAAKqoG,QAAUroG,KAAK+gF,GAAK/gF,KAAK4lC,SAE9B5lC,KAAKyD,MAAQzD,KAAKkyG,eAAelyG,KAAKqoG,QAEtC,IAAIoK,KAEJ,KAAK,GAAIv5D,KAAYl5C,MAAK6wG,KAC1B,CACI,GAAIxlG,GAAQrL,KAAK6xG,OAAO34D,GACpBnvC,EAAM/J,KAAK6wG,KAAK33D,EAEhBv4C,OAAM2R,QAAQvI,GAEd0oG,EAAKv5D,GAAYl5C,KAAKmyG,sBAAsBpoG,EAAK/J,KAAKyD,OAItDgvG,EAAKv5D,GAAY7tC,GAAUtB,EAAMsB,GAASrL,KAAKyD,MAIvDuN,EAAKjN,KAAK0uG,KAEJzyG,KAAK4B,OAAOwc,SAA4B,IAAjBpe,KAAKqoG,SAAmBroG,KAAK4B,OAAOwc,SAA4B,IAAjBpe,KAAKqoG,WAE7E5+E,GAAW,UAGTA,EAEV,IAAIzpB,KAAK0wG,KACT,CACI,GAAIgC,GAAW1hG,EAAKqlB,OACpBq8E,GAASt0F,UACTpN,EAAOA,EAAK0lB,OAAOg8E,GAGvB,MAAO1hG,IAWX2F,OAAQ,WAGJ,GAAI3W,KAAK0wG,KACT,CAEI,GAAI1wG,KAAKiyG,WAAoC,IAAvBjyG,KAAK6vG,cAC3B,CAEI,IAAK,GAAI32D,KAAYl5C,MAAK8xG,YAEtB9xG,KAAK6xG,OAAO34D,GAAYl5C,KAAK8xG,YAAY54D,GACzCl5C,KAAK6wG,KAAK33D,GAAYl5C,KAAK+xG,UAAU74D,EAKzC,OAFAl5C,MAAKiyG,WAAY,EAEVppF,EAAO+nF,UAAUe,SAG5B3xG,KAAKiyG,WAAajyG,KAAKiyG,cAIvB,IAA2B,IAAvBjyG,KAAK6vG,cAEL,MAAOhnF,GAAO+nF,UAAUe,QAIhC,IAAI3xG,KAAKiyG,UAGL,IAAK,GAAI/4D,KAAYl5C,MAAK8xG,YAEtB9xG,KAAK6xG,OAAO34D,GAAYl5C,KAAK+xG,UAAU74D,GACvCl5C,KAAK6wG,KAAK33D,GAAYl5C,KAAK8xG,YAAY54D,OAI/C,CAEI,IAAK,GAAIA,KAAYl5C,MAAK8xG,YAEtB9xG,KAAK6xG,OAAO34D,GAAYl5C,KAAK8xG,YAAY54D,GACzCl5C,KAAK6wG,KAAK33D,GAAYl5C,KAAK+xG,UAAU74D,EAKrCl5C,MAAK6vG,cAAgB,GAErB7vG,KAAK6vG,gBAwBb,MApBA7vG,MAAKsxG,UAAYtxG,KAAKE,KAAK8nC,KAAKA,KAE5BhoC,KAAK0wG,MAAQ1wG,KAAKiyG,UAElBjyG,KAAKsxG,WAAatxG,KAAKixG,UAEjBjxG,KAAKiyG,YAEXjyG,KAAKsxG,WAAatxG,KAAKgxG,aAGvBhxG,KAAK4B,OAAOwc,QAEZpe,KAAK+gF,GAAK/gF,KAAK4lC,SAIf5lC,KAAK+gF,GAAK,EAGPl4D,EAAO+nF,UAAUc,SAMhC7oF,EAAO+nF,UAAU/tG,UAAUC,YAAc+lB,EAAO+nF,UAehD/nF,EAAOwiF,QAOHK,QASIC,KAAM,SAAWxvC,GAEb,MAAOA,KAWf0vC,WASIiB,GAAI,SAAW3wC,GAEX,MAAOA,GAAIA,GAWf2vC,IAAK,SAAW3vC,GAEZ,MAAOA,IAAM,EAAIA,IAWrBgyC,MAAO,SAAWhyC,GAEd,OAAOA,GAAK,GAAM,EAAW,GAAMA,EAAIA,GAC9B,MAAUA,GAAMA,EAAI,GAAM,KAW3C4vC,OASIe,GAAI,SAAW3wC,GAEX,MAAOA,GAAIA,EAAIA,GAWnB2vC,IAAK,SAAW3vC,GAEZ,QAASA,EAAIA,EAAIA,EAAI,GAWzBgyC,MAAO,SAAWhyC,GAEd,OAAOA,GAAK,GAAM,EAAW,GAAMA,EAAIA,EAAIA,EACpC,KAAUA,GAAK,GAAMA,EAAIA,EAAI,KAW5C8vC,SASIa,GAAI,SAAW3wC,GAEX,MAAOA,GAAIA,EAAIA,EAAIA,GAWvB2vC,IAAK,SAAW3vC,GAEZ,MAAO,MAAQA,EAAIA,EAAIA,EAAIA,GAW/BgyC,MAAO,SAAWhyC,GAEd,OAAOA,GAAK,GAAM,EAAU,GAAMA,EAAIA,EAAIA,EAAIA,GACrC,KAAUA,GAAK,GAAMA,EAAIA,EAAIA,EAAI,KAWlDgwC,SASIW,GAAI,SAAW3wC,GAEX,MAAOA,GAAIA,EAAIA,EAAIA,EAAIA,GAW3B2vC,IAAK,SAAW3vC,GAEZ,QAASA,EAAIA,EAAIA,EAAIA,EAAIA,EAAI,GAWjCgyC,MAAO,SAAWhyC,GAEd,OAAOA,GAAK,GAAM,EAAW,GAAMA,EAAIA,EAAIA,EAAIA,EAAIA,EAC5C,KAAUA,GAAK,GAAMA,EAAIA,EAAIA,EAAIA,EAAI,KAWpDkwC,YASIS,GAAI,SAAW3wC,GAEX,MAAU,KAANA,EAAgB,EACV,IAANA,EAAgB,EACb,EAAIt7D,KAAKuE,IAAK+2D,EAAIt7D,KAAKC,GAAK,IAWvCgrG,IAAK,SAAW3vC,GAEZ,MAAU,KAANA,EAAgB,EACV,IAANA,EAAgB,EACbt7D,KAAKsE,IAAKg3D,EAAIt7D,KAAKC,GAAK,IAWnCqtG,MAAO,SAAWhyC,GAEd,MAAU,KAANA,EAAgB,EACV,IAANA,EAAgB,EACb,IAAQ,EAAIt7D,KAAKuE,IAAKvE,KAAKC,GAAKq7D,MAW/CowC,aASIO,GAAI,SAAW3wC,GAEX,MAAa,KAANA,EAAU,EAAIt7D,KAAK8kG,IAAK,KAAMxpC,EAAI,IAW7C2vC,IAAK,SAAW3vC,GAEZ,MAAa,KAANA,EAAU,EAAI,EAAIt7D,KAAK8kG,IAAK,EAAG,IAAOxpC,IAWjDgyC,MAAO,SAAWhyC,GAEd,MAAW,KAANA,EAAiB,EACX,IAANA,EAAiB,GACfA,GAAK,GAAM,EAAW,GAAMt7D,KAAK8kG,IAAK,KAAMxpC,EAAI,GAChD,KAAUt7D,KAAK8kG,IAAK,EAAG,KAASxpC,EAAI,IAAQ,KAW3DswC,UASIK,GAAI,SAAW3wC,GAEX,MAAO,GAAIt7D,KAAK0E,KAAM,EAAI42D,EAAIA,IAWlC2vC,IAAK,SAAW3vC,GAEZ,MAAOt7D,MAAK0E,KAAM,KAAQ42D,EAAIA,IAWlCgyC,MAAO,SAAWhyC,GAEd,OAAOA,GAAK,GAAM,GAAY,IAAQt7D,KAAK0E,KAAM,EAAI42D,EAAIA,GAAK,GACvD,IAAQt7D,KAAK0E,KAAM,GAAM42D,GAAK,GAAKA,GAAK,KAWvDuwC,SASII,GAAI,SAAW3wC,GAEX,GAAI16B,GAAG/8B,EAAI,GAAKF,EAAI,EACpB,OAAW,KAAN23D,EAAiB,EACX,IAANA,EAAiB,IAChBz3D,GAAS,EAAJA,GAAUA,EAAI,EAAG+8B,EAAIj9B,EAAI,GAC/Bi9B,EAAIj9B,EAAI3D,KAAK8xG,KAAM,EAAIjuG,IAAQ,EAAI7D,KAAKC,MAClC4D,EAAI7D,KAAK8kG,IAAK,EAAG,IAAOxpC,GAAK,IAAQt7D,KAAKsE,KAAOg3D,EAAI16B,IAAQ,EAAI5gC,KAAKC,IAAO0D,MAW5FsnG,IAAK,SAAW3vC,GAEZ,GAAI16B,GAAG/8B,EAAI,GAAKF,EAAI,EACpB,OAAW,KAAN23D,EAAiB,EACX,IAANA,EAAiB,IAChBz3D,GAAS,EAAJA,GAAUA,EAAI,EAAG+8B,EAAIj9B,EAAI,GAC/Bi9B,EAAIj9B,EAAI3D,KAAK8xG,KAAM,EAAIjuG,IAAQ,EAAI7D,KAAKC,IACpC4D,EAAI7D,KAAK8kG,IAAK,EAAG,IAAOxpC,GAAKt7D,KAAKsE,KAAOg3D,EAAI16B,IAAQ,EAAI5gC,KAAKC,IAAO0D,GAAM,IAWxF2pG,MAAO,SAAWhyC,GAEd,GAAI16B,GAAG/8B,EAAI,GAAKF,EAAI,EACpB,OAAW,KAAN23D,EAAiB,EACX,IAANA,EAAiB,IAChBz3D,GAAS,EAAJA,GAAUA,EAAI,EAAG+8B,EAAIj9B,EAAI,GAC/Bi9B,EAAIj9B,EAAI3D,KAAK8xG,KAAM,EAAIjuG,IAAQ,EAAI7D,KAAKC,KACtCq7D,GAAK,GAAM,GAAa,IAAQz3D,EAAI7D,KAAK8kG,IAAK,EAAG,IAAOxpC,GAAK,IAAQt7D,KAAKsE,KAAOg3D,EAAI16B,IAAQ,EAAI5gC,KAAKC,IAAO0D,IAC7GE,EAAI7D,KAAK8kG,IAAK,EAAG,KAAQxpC,GAAK,IAAQt7D,KAAKsE,KAAOg3D,EAAI16B,IAAQ,EAAI5gC,KAAKC,IAAO0D,GAAM,GAAM,KAWzGmoG,MASIG,GAAI,SAAW3wC,GAEX,GAAI16B,GAAI,OACR,OAAO06B,GAAIA,IAAQ16B,EAAI,GAAM06B,EAAI16B,IAWrCqqE,IAAK,SAAW3vC,GAEZ,GAAI16B,GAAI,OACR,SAAS06B,EAAIA,IAAQ16B,EAAI,GAAM06B,EAAI16B,GAAM,GAW7C0sE,MAAO,SAAWhyC,GAEd,GAAI16B,GAAI,SACR,QAAO06B,GAAK,GAAM,EAAW,IAAQA,EAAIA,IAAQ16B,EAAI,GAAM06B,EAAI16B,IACxD,KAAU06B,GAAK,GAAMA,IAAQ16B,EAAI,GAAM06B,EAAI16B,GAAM,KAWhEmrE,QASIE,GAAI,SAAW3wC,GAEX,MAAO,GAAItzC,EAAOwiF,OAAOuB,OAAOd,IAAK,EAAI3vC,IAW7C2vC,IAAK,SAAW3vC,GAEZ,MAAW,GAAI,KAAVA,EAEM,OAASA,EAAIA,EAEN,EAAI,KAAVA,EAED,QAAWA,GAAO,IAAM,MAAWA,EAAI,IAEhC,IAAM,KAAZA,EAED,QAAWA,GAAO,KAAO,MAAWA,EAAI,MAIxC,QAAWA,GAAO,MAAQ,MAAWA,EAAI,SAaxDgyC,MAAO,SAAWhyC,GAEd,MAAS,GAAJA,EAAoD,GAAnCtzC,EAAOwiF,OAAOuB,OAAOE,GAAQ,EAAJ3wC,GACA,GAAxCtzC,EAAOwiF,OAAOuB,OAAOd,IAAS,EAAJ3vC,EAAQ,GAAY,MAQjEtzC,EAAOwiF,OAAOsF,QAAU9nF,EAAOwiF,OAAOK,OAAOC,KAC7C9iF,EAAOwiF,OAAOD,OAASviF,EAAOwiF,OAAOK,OAAOC,KAC5C9iF,EAAOwiF,OAAOC,OAASziF,EAAOwiF,OAAOQ,UAAUC,IAC/CjjF,EAAOwiF,OAAOE,OAAS1iF,EAAOwiF,OAAOU,MAAMD,IAC3CjjF,EAAOwiF,OAAOG,OAAS3iF,EAAOwiF,OAAOY,QAAQH,IAC7CjjF,EAAOwiF,OAAOI,OAAS5iF,EAAOwiF,OAAOc,QAAQL,IAuC7CjjF,EAAO+1B,KAAO,SAAU1+C,GAMpBF,KAAKE,KAAOA,EAOZF,KAAKgoC,KAAO,EAOZhoC,KAAK4yG,SAAW,EAchB5yG,KAAKm+C,IAAM,EAcXn+C,KAAKygD,QAAU,EAafzgD,KAAKioC,UAAY,EAajBjoC,KAAK65F,eAAiB,EAAI,GAO1B75F,KAAKmwE,iBAAoB,EAAI,GAAM,IAOnCnwE,KAAKogD,eAAiB,EAAM,GAW5BpgD,KAAK6yG,YAAc,GAYnB7yG,KAAK8yG,aAAe9yG,KAAKugD,WASzBvgD,KAAKsgD,WAAa,EAOlBtgD,KAAK+yG,gBAAiB,EAStB/yG,KAAKk5F,OAAS,EASdl5F,KAAKwyG,IAAM,EASXxyG,KAAKgzG,OAAS,IASdhzG,KAAKizG,OAAS,EAUdjzG,KAAKkzG,MAAQ,IASblzG,KAAKmzG,MAAQ,EAObnzG,KAAKozG,cAAgB,EAMrBpzG,KAAKwkG,WAAa,EAMlBxkG,KAAKqzG,aAAe,EAMpBrzG,KAAK22C,OAAS,GAAI9tB,GAAOyqF,MAAMtzG,KAAKE,MAAM,GAM1CF,KAAKuzG,YAAc,EAMnBvzG,KAAKwzG,oBAAsB,EAM3BxzG,KAAKyzG,SAAW,EAMhBzzG,KAAK0zG,gBAAkB,EAMvB1zG,KAAK2zG,cAAgB,EAMrB3zG,KAAK4zG,cAAe,EAMpB5zG,KAAK6zG,YAIThrF,EAAO+1B,KAAK/7C,WAQR6jC,KAAM,WAEF1mC,KAAKyzG,SAAW1jE,KAAKoO,MACrBn+C,KAAKgoC,KAAO+H,KAAKoO,MACjBn+C,KAAK22C,OAAOtrC,QACZrL,KAAKqzG,aAAerzG,KAAKgoC,MAW7BlK,IAAK,SAAUg2E,GAIX,MAFA9zG,MAAK6zG,QAAQ9vG,KAAK+vG,GAEXA,GAWXzrG,OAAQ,SAAU0rG,GAEMrqG,SAAhBqqG,IAA6BA,GAAc,EAE/C,IAAID,GAAQ,GAAIjrF,GAAOyqF,MAAMtzG,KAAKE,KAAM6zG,EAIxC,OAFA/zG,MAAK6zG,QAAQ9vG,KAAK+vG,GAEXA,GASXnnE,UAAW,WAEP,IAAK,GAAI1pC,GAAI,EAAGA,EAAIjD,KAAK6zG,QAAQ3wG,OAAQD,IAErCjD,KAAK6zG,QAAQ5wG,GAAGF,SAGpB/C,MAAK6zG,WAEL7zG,KAAK22C,OAAOhK,aAShB/jB,QAAS,WAGL,GAAIorF,GAAkBh0G,KAAKgoC,IAG3BhoC,MAAKgoC,KAAO+H,KAAKoO,MAGjBn+C,KAAKioC,UAAYjoC,KAAKgoC,KAAOgsE,GAWjCpsE,OAAQ,SAAUI,GAGd,GAAIgsE,GAAkBh0G,KAAKgoC,IAG3BhoC,MAAKgoC,KAAO+H,KAAKoO,MAGjBn+C,KAAKioC,UAAYjoC,KAAKgoC,KAAOgsE,EAG7Bh0G,KAAK4yG,SAAW5yG,KAAKm+C,IAIrBn+C,KAAKm+C,IAAMnW,EAGXhoC,KAAKygD,QAAUzgD,KAAKm+C,IAAMn+C,KAAK4yG,SAE3B5yG,KAAKE,KAAK48C,IAAIonD,gBAKdlkG,KAAKwkG,WAAa3jG,KAAKq1B,MAAMr1B,KAAK+G,IAAI,EAAI,IAAS5H,KAAK6yG,aAAgB7yG,KAAKqzG,aAAerrE,KAG5FhoC,KAAKqzG,aAAerrE,EAAOhoC,KAAKwkG,YAKhCxkG,KAAK+yG,gBAEL/yG,KAAKi0G,uBAIJj0G,KAAKE,KAAK4pC,SAGX9pC,KAAK22C,OAAO/O,OAAO5nC,KAAKgoC,MAEpBhoC,KAAK6zG,QAAQ3wG,QAEblD,KAAKk0G,iBAajBA,aAAc,WAMV,IAHA,GAAIjxG,GAAI,EACJk0B,EAAMn3B,KAAK6zG,QAAQ3wG,OAEZi0B,EAAJl0B,GAECjD,KAAK6zG,QAAQ5wG,GAAG2kC,OAAO5nC,KAAKgoC,MAE5B/kC,KAKAjD,KAAK6zG,QAAQhrG,OAAO5F,EAAG,GACvBk0B,MAaZ88E,qBAAsB,WAGlBj0G,KAAKuzG,cACLvzG,KAAKwzG,qBAAuBxzG,KAAKygD,QAG7BzgD,KAAKuzG,aAAkC,EAAnBvzG,KAAK6yG,cAGzB7yG,KAAK8yG,aAAiF,EAAlEjyG,KAAKq1B,MAAM,KAAOl2B,KAAKwzG,oBAAsBxzG,KAAKuzG,cACtEvzG,KAAKuzG,YAAc,EACnBvzG,KAAKwzG,oBAAsB,GAG/BxzG,KAAKkzG,MAAQryG,KAAKq9B,IAAIl+B,KAAKkzG,MAAOlzG,KAAKygD,SACvCzgD,KAAKmzG,MAAQtyG,KAAK+G,IAAI5H,KAAKmzG,MAAOnzG,KAAKygD,SAEvCzgD,KAAKk5F,SAEDl5F,KAAKm+C,IAAMn+C,KAAK0zG,gBAAkB,MAElC1zG,KAAKwyG,IAAM3xG,KAAKw6B,MAAqB,IAAdr7B,KAAKk5F,QAAkBl5F,KAAKm+C,IAAMn+C,KAAK0zG,kBAC9D1zG,KAAKgzG,OAASnyG,KAAKq9B,IAAIl+B,KAAKgzG,OAAQhzG,KAAKwyG,KACzCxyG,KAAKizG,OAASpyG,KAAK+G,IAAI5H,KAAKizG,OAAQjzG,KAAKwyG,KACzCxyG,KAAK0zG,gBAAkB1zG,KAAKm+C,IAC5Bn+C,KAAKk5F,OAAS,IAWtBjlD,WAAY,WAERj0C,KAAK2zG,cAAgB5jE,KAAKoO,MAE1Bn+C,KAAK22C,OAAOlL,OAIZ,KAFA,GAAIxoC,GAAIjD,KAAK6zG,QAAQ3wG,OAEdD,KAEHjD,KAAK6zG,QAAQ5wG,GAAGqsG,UAWxBp7D,YAAa,WAGTl0C,KAAKgoC,KAAO+H,KAAKoO,MAEjBn+C,KAAKozG,cAAgBpzG,KAAKgoC,KAAOhoC,KAAK2zG,cAEtC3zG,KAAK22C,OAAOhL,QAIZ,KAFA,GAAI1oC,GAAIjD,KAAK6zG,QAAQ3wG,OAEdD,KAEHjD,KAAK6zG,QAAQ5wG,GAAGssG,WAWxBv+D,oBAAqB,WACjB,MAAqC,MAA7BhxC,KAAKgoC,KAAOhoC,KAAKyzG,WAU7BU,aAAc,SAAUC,GACpB,MAAOp0G,MAAKgoC,KAAOosE,GAUvBC,oBAAqB,SAAUD,GAC3B,MAA6B,MAArBp0G,KAAKgoC,KAAOosE,IAQxBtrE,MAAO,WAEH9oC,KAAKyzG,SAAWzzG,KAAKgoC,KACrBhoC,KAAK2sC,cAcbvpC,OAAOC,eAAewlB,EAAO+1B,KAAK/7C,UAAW,cAEzCS,IAAK,WAED,MAAOtD,MAAK6yG,aAIhBrvG,IAAK,SAAUC,GAEXzD,KAAK6yG,YAAcpvG,EAInBzD,KAAK65F,eAAiB,EAAIp2F,EAE1BzD,KAAKmwE,iBAAyC,IAAtBnwE,KAAK65F,eAE7B75F,KAAKogD,eAAiB,EAAM38C,KAMpColB,EAAO+1B,KAAK/7C,UAAUC,YAAc+lB,EAAO+1B,KAsB3C/1B,EAAOyqF,MAAQ,SAAUpzG,EAAM6zG,GAEPrqG,SAAhBqqG,IAA6BA,GAAc,GAM/C/zG,KAAKE,KAAOA,EAUZF,KAAKs0G,SAAU,EAMft0G,KAAK+zG,YAAcA,EAOnB/zG,KAAKu0G,SAAU,EAMfv0G,KAAKygD,QAAU,EAKfzgD,KAAK22C,UASL32C,KAAKkwG,WAAa,GAAIrnF,GAAOuc,OAO7BplC,KAAKw0G,SAAW,EAKhBx0G,KAAKy0G,QAAU,IAOfz0G,KAAK8pC,QAAS,EAMd9pC,KAAKw9C,aAAc,EAOnBx9C,KAAKyzG,SAAW,EAMhBzzG,KAAK2zG,cAAgB,EAMrB3zG,KAAK00G,YAAc,EAMnB10G,KAAK20G,KAAO5kE,KAAKoO,MAMjBn+C,KAAK6xC,KAAO,EAMZ7xC,KAAK40G,QAAU,EAMf50G,KAAK8xC,GAAK,EAMV9xC,KAAK60G,MAAQ,EAMb70G,KAAK80G,SAAW,GASpBjsF,EAAOyqF,MAAMyB,OAAS,IAOtBlsF,EAAOyqF,MAAM0B,OAAS,IAOtBnsF,EAAOyqF,MAAM2B,KAAO,IAOpBpsF,EAAOyqF,MAAM4B,QAAU,IAEvBrsF,EAAOyqF,MAAMzwG,WAiBTwF,OAAQ,SAAU2vD,EAAOuS,EAAM4qC,EAAa57D,EAAUxN,EAAiBvV,GAEnEwhC,EAAQn3D,KAAKw6B,MAAM28B,EAEnB,IAAIo9C,GAAOp9C,CAIPo9C,IAFc,IAAdp1G,KAAK20G,KAEG30G,KAAKE,KAAK8nC,KAAKA,KAIfhoC,KAAK20G,IAGjB,IAAIzhE,GAAQ,GAAIrqB,GAAOwsF,WAAWr1G,KAAMg4D,EAAOo9C,EAAMD,EAAa5qC,EAAMhxB,EAAUxN,EAAiBvV,EAQnG,OANAx2B,MAAK22C,OAAO5yC,KAAKmvC,GAEjBlzC,KAAKu6C,QAELv6C,KAAKu0G,SAAU,EAERrhE,GAmBXpV,IAAK,SAAUk6B,EAAOze,EAAUxN,GAE5B,MAAO/rC,MAAKqI,OAAO2vD,GAAO,EAAO,EAAGze,EAAUxN,EAAiBprC,MAAMkC,UAAUwzB,MAAM3wB,KAAKixB,UAAW,KAqBzGhgB,OAAQ,SAAUqhD,EAAOm9C,EAAa57D,EAAUxN,GAE5C,MAAO/rC,MAAKqI,OAAO2vD,GAAO,EAAOm9C,EAAa57D,EAAUxN,EAAiBprC,MAAMkC,UAAUwzB,MAAM3wB,KAAKixB,UAAW,KAmBnH4zC,KAAM,SAAUvS,EAAOze,EAAUxN,GAE7B,MAAO/rC,MAAKqI,OAAO2vD,GAAO,EAAM,EAAGze,EAAUxN,EAAiBprC,MAAMkC,UAAUwzB,MAAM3wB,KAAKixB,UAAW,KASxGtrB,MAAO,SAAU2sD,GAEb,IAAIh4D,KAAKs0G,QAAT,CAKAt0G,KAAKyzG,SAAWzzG,KAAKE,KAAK8nC,KAAKA,MAAQgwB,GAAS,GAEhDh4D,KAAKs0G,SAAU,CAEf,KAAK,GAAIrxG,GAAI,EAAGA,EAAIjD,KAAK22C,OAAOzzC,OAAQD,IAEpCjD,KAAK22C,OAAO1zC,GAAGmyG,KAAOp1G,KAAK22C,OAAO1zC,GAAG+0D,MAAQh4D,KAAKyzG,WAU1DxoG,KAAM,SAAUqqG,GAEZt1G,KAAKs0G,SAAU,EAEK5qG,SAAhB4rG,IAA6BA,GAAc,GAE3CA,IAEAt1G,KAAK22C,OAAOzzC,OAAS,IAU7B+N,OAAQ,SAAUiiC,GAEd,IAAK,GAAIjwC,GAAI,EAAGA,EAAIjD,KAAK22C,OAAOzzC,OAAQD,IAEpC,GAAIjD,KAAK22C,OAAO1zC,KAAOiwC,EAGnB,MADAlzC,MAAK22C,OAAO1zC,GAAG+rG,eAAgB,GACxB,CAIf,QAAO,GAUXz0D,MAAO,WAECv6C,KAAK22C,OAAOzzC,OAAS,IAGrBlD,KAAK22C,OAAO2D,KAAKt6C,KAAK26C,aAEtB36C,KAAKw0G,SAAWx0G,KAAK22C,OAAO,GAAGy+D,OAUvCz6D,YAAa,SAAUj2C,EAAGC,GAEtB,MAAID,GAAE0wG,KAAOzwG,EAAEywG,KAEJ,GAEF1wG,EAAE0wG,KAAOzwG,EAAEywG,KAET,EAGJ,GAUXG,mBAAoB,WAIhB,IAFAv1G,KAAK8xC,GAAK9xC,KAAK22C,OAAOzzC,OAEflD,KAAK8xC,MAEJ9xC,KAAK22C,OAAO32C,KAAK8xC,IAAIk9D,eAErBhvG,KAAK22C,OAAO9tC,OAAO7I,KAAK8xC,GAAI,EAIpC9xC,MAAK6xC,KAAO7xC,KAAK22C,OAAOzzC,OACxBlD,KAAK8xC,GAAK,GAYdlK,OAAQ,SAAUI,GAEd,GAAIhoC,KAAK8pC,OAEL,OAAO,CAoBX,IAjBA9pC,KAAKygD,QAAUzY,EAAOhoC,KAAK20G,KAC3B30G,KAAK20G,KAAO3sE,EAGRhoC,KAAKygD,QAAUzgD,KAAKy0G,SAKpBz0G,KAAKw1G,aAAaxtE,EAAOhoC,KAAKygD,SAGlCzgD,KAAK40G,QAAU,EAGf50G,KAAKu1G,qBAEDv1G,KAAKs0G,SAAWt0G,KAAK20G,MAAQ30G,KAAKw0G,UAAYx0G,KAAK6xC,KAAO,EAC9D,CACI,KAAO7xC,KAAK8xC,GAAK9xC,KAAK6xC,MAAQ7xC,KAAKs0G,SAE3Bt0G,KAAK20G,MAAQ30G,KAAK22C,OAAO32C,KAAK8xC,IAAIsjE,OAASp1G,KAAK22C,OAAO32C,KAAK8xC,IAAIk9D,eAGhEhvG,KAAK80G,SAAY90G,KAAK20G,KAAO30G,KAAK22C,OAAO32C,KAAK8xC,IAAIkmB,OAAUh4D,KAAK20G,KAAO30G,KAAK22C,OAAO32C,KAAK8xC,IAAIsjE,MAEzFp1G,KAAK80G,SAAW,IAEhB90G,KAAK80G,SAAW90G,KAAK20G,KAAO30G,KAAK22C,OAAO32C,KAAK8xC,IAAIkmB,OAGjDh4D,KAAK22C,OAAO32C,KAAK8xC,IAAIy4B,QAAS,GAE9BvqE,KAAK22C,OAAO32C,KAAK8xC,IAAIsjE,KAAOp1G,KAAK80G,SACjC90G,KAAK22C,OAAO32C,KAAK8xC,IAAIyH,SAAStyC,MAAMjH,KAAK22C,OAAO32C,KAAK8xC,IAAI/F,gBAAiB/rC,KAAK22C,OAAO32C,KAAK8xC,IAAItb,OAE1Fx2B,KAAK22C,OAAO32C,KAAK8xC,IAAIqjE,YAAc,GAExCn1G,KAAK22C,OAAO32C,KAAK8xC,IAAIqjE,cACrBn1G,KAAK22C,OAAO32C,KAAK8xC,IAAIsjE,KAAOp1G,KAAK80G,SACjC90G,KAAK22C,OAAO32C,KAAK8xC,IAAIyH,SAAStyC,MAAMjH,KAAK22C,OAAO32C,KAAK8xC,IAAI/F,gBAAiB/rC,KAAK22C,OAAO32C,KAAK8xC,IAAItb,QAI/Fx2B,KAAK40G,UACL50G,KAAK22C,OAAO32C,KAAK8xC,IAAIk9D,eAAgB,EACrChvG,KAAK22C,OAAO32C,KAAK8xC,IAAIyH,SAAStyC,MAAMjH,KAAK22C,OAAO32C,KAAK8xC,IAAI/F,gBAAiB/rC,KAAK22C,OAAO32C,KAAK8xC,IAAItb,OAGnGx2B,KAAK8xC,IAST9xC,MAAK22C,OAAOzzC,OAASlD,KAAK40G,QAE1B50G,KAAKu6C,SAILv6C,KAAKu0G,SAAU,EACfv0G,KAAKkwG,WAAWhoE,SAASloC,OAIjC,MAAIA,MAAKu0G,SAAWv0G,KAAK+zG,aAEd,GAIA,GASftoE,MAAO,WAEEzrC,KAAKs0G,UAKVt0G,KAAKw9C,aAAc,EAEfx9C,KAAK8pC,SAKT9pC,KAAK2zG,cAAgB3zG,KAAKE,KAAK8nC,KAAKA,KAEpChoC,KAAK8pC,QAAS,KASlBwlE,OAAQ,YAEAtvG,KAAK8pC,QAAW9pC,KAAKs0G,UAKzBt0G,KAAK2zG,cAAgB3zG,KAAKE,KAAK8nC,KAAKA,KAEpChoC,KAAK8pC,QAAS,IAUlB0rE,aAAc,SAAUC,GAEpB,IAAK,GAAIxyG,GAAI,EAAGA,EAAIjD,KAAK22C,OAAOzzC,OAAQD,IAEpC,IAAKjD,KAAK22C,OAAO1zC,GAAG+rG,cACpB,CAEI,GAAI93E,GAAIl3B,KAAK22C,OAAO1zC,GAAGmyG,KAAOK,CAEtB,GAAJv+E,IAEAA,EAAI,GAIRl3B,KAAK22C,OAAO1zC,GAAGmyG,KAAOp1G,KAAK20G,KAAOz9E,EAI1C,GAAIryB,GAAI7E,KAAKw0G,SAAWiB,CAEhB,GAAJ5wG,EAEA7E,KAAKw0G,SAAWx0G,KAAK20G,KAIrB30G,KAAKw0G,SAAWx0G,KAAK20G,KAAO9vG,GAUpC8mC,OAAQ,WAEJ,GAAK3rC,KAAK8pC,OAAV,CAKA,GAAIqU,GAAMn+C,KAAKE,KAAK8nC,KAAKA,IACzBhoC,MAAK00G,aAAev2D,EAAMn+C,KAAK20G,KAC/B30G,KAAK20G,KAAOx2D,EAEZn+C,KAAKw1G,aAAax1G,KAAK2zG,eAEvB3zG,KAAK8pC,QAAS,EACd9pC,KAAKw9C,aAAc,IASvB+xD,QAAS,WAEDvvG,KAAKw9C,aAMLx9C,KAAK2rC,UAWbgB,UAAW,WAEP3sC,KAAKkwG,WAAWvjE,YAChB3sC,KAAK22C,OAAOzzC,OAAS,EACrBlD,KAAK6xC,KAAO,EACZ7xC,KAAK8xC,GAAK,GAUd/uC,QAAS,WAEL/C,KAAKkwG,WAAWvjE,YAChB3sC,KAAKs0G,SAAU,EACft0G,KAAK22C,UACL32C,KAAK6xC,KAAO,EACZ7xC,KAAK8xC,GAAK,IAWlB1uC,OAAOC,eAAewlB,EAAOyqF,MAAMzwG,UAAW,QAE1CS,IAAK,WACD,MAAOtD,MAAKw0G,YAUpBpxG,OAAOC,eAAewlB,EAAOyqF,MAAMzwG,UAAW,YAE1CS,IAAK,WAED,MAAItD,MAAKs0G,SAAWt0G,KAAKw0G,SAAWx0G,KAAK20G,KAE9B30G,KAAKw0G,SAAWx0G,KAAK20G,KAIrB,KAYnBvxG,OAAOC,eAAewlB,EAAOyqF,MAAMzwG,UAAW,UAE1CS,IAAK,WACD,MAAOtD,MAAK22C,OAAOzzC,UAU3BE,OAAOC,eAAewlB,EAAOyqF,MAAMzwG,UAAW,MAE1CS,IAAK,WAED,MAAItD,MAAKs0G,QAEEt0G,KAAK20G,KAAO30G,KAAKyzG,SAAWzzG,KAAK00G,YAIjC,KAYnBtxG,OAAOC,eAAewlB,EAAOyqF,MAAMzwG,UAAW,WAE1CS,IAAK,WAED,MAAItD,MAAKs0G,QAEY,KAAVt0G,KAAKuyG,GAIL,KAOnB1pF,EAAOyqF,MAAMzwG,UAAUC,YAAc+lB,EAAOyqF,MA6B5CzqF,EAAOwsF,WAAa,SAAUvB,EAAO97C,EAAOo9C,EAAMD,EAAa5qC,EAAMhxB,EAAUxN,EAAiBvV,GAO5Fx2B,KAAK8zG,MAAQA,EAKb9zG,KAAKg4D,MAAQA,EAKbh4D,KAAKo1G,KAAOA,EAKZp1G,KAAKm1G,YAAcA,EAAc,EAKjCn1G,KAAKuqE,KAAOA,EAKZvqE,KAAKu5C,SAAWA,EAKhBv5C,KAAK+rC,gBAAkBA,EAKvB/rC,KAAKw2B,KAAOA,EAMZx2B,KAAKgvG,eAAgB,GAIzBnmF,EAAOwsF,WAAWxyG,UAAUC,YAAc+lB,EAAOwsF,WAgBjDxsF,EAAO0iD,iBAAmB,SAAU7oD,GAKhC1iB,KAAK0iB,OAASA,EAKd1iB,KAAKE,KAAOwiB,EAAOxiB,KASnBF,KAAK01G,aAAe,KAMpB11G,KAAK21G,YAAc,KAMnB31G,KAAK41G,iBAAkB,EAMvB51G,KAAK61G,UAAW,EAOhB71G,KAAK81G,WAAa,KAMlB91G,KAAK+1G,UAML/1G,KAAKg2G,kBAITntF,EAAO0iD,iBAAiB1oE,WAYpB6tE,cAAe,SAAUE,EAAW1kE,GAEhC,GAAkBxC,SAAdknE,EAEA,OAAO,CAGX,IAAI5wE,KAAK61G,SAGL,IAAK,GAAII,KAAQj2G,MAAK+1G,OAElB/1G,KAAK+1G,OAAOE,GAAMhf,gBAAgBrmB,EAwB1C,OApBA5wE,MAAK81G,WAAallC,EAEJlnE,SAAVwC,GAAiC,OAAVA,EAEvBlM,KAAKkM,MAAQ,EAIQ,gBAAVA,GAEPlM,KAAKixE,UAAY/kE,EAIjBlM,KAAKkM,MAAQA,EAIrBlM,KAAK61G,UAAW,GAET,GAaXK,cAAe,SAAUtlC,EAAW1kE,GAIhC,GAFAlM,KAAK81G,WAAallC,EAAU/2C,QAExB75B,KAAK61G,SAGL,IAAK,GAAII,KAAQj2G,MAAK+1G,OAElB/1G,KAAK+1G,OAAOE,GAAMhf,gBAAgBj3F,KAAK81G,WAsB/C,OAlBcpsG,UAAVwC,GAAiC,OAAVA,EAEvBlM,KAAKkM,MAAQ,EAIQ,gBAAVA,GAEPlM,KAAKixE,UAAY/kE,EAIjBlM,KAAKkM,MAAQA,EAIrBlM,KAAK61G,UAAW,GAET,GAeX/3E,IAAK,SAAUpE,EAAMw/D,EAAQ5uB,EAAWC,EAAM4rC,GAoC1C,MAlCAjd,GAASA,MACT5uB,EAAYA,GAAa,GAEZ5gE,SAAT6gE,IAAsBA,GAAO,GAGT7gE,SAApBysG,IAIIA,EAFAjd,GAA+B,gBAAdA,GAAO,IAEN,GAIA,GAI1Bl5F,KAAKg2G,iBAELh2G,KAAK81G,WAAWM,gBAAgBld,EAAQid,EAAiBn2G,KAAKg2G,eAE9Dh2G,KAAK+1G,OAAOr8E,GAAQ,GAAI7Q,GAAOuhD,UAAUpqE,KAAKE,KAAMF,KAAK0iB,OAAQgX,EAAM15B,KAAK81G,WAAY91G,KAAKg2G,cAAe1rC,EAAWC,GAEvHvqE,KAAK21G,YAAc31G,KAAK+1G,OAAOr8E,GAK3B15B,KAAK0iB,OAAOQ,gBAEZljB,KAAK0iB,OAAO0N,gBAAiB,GAG1BpwB,KAAK+1G,OAAOr8E,IAYvB28E,eAAgB,SAAUnd,EAAQid,GAENzsG,SAApBysG,IAAiCA,GAAkB,EAEvD,KAAK,GAAIlzG,GAAI,EAAGA,EAAIi2F,EAAOh2F,OAAQD,IAE/B,GAAIkzG,KAAoB,GAEpB,GAAIjd,EAAOj2F,GAAKjD,KAAK81G,WAAWpmF,MAE5B,OAAO,MAKX,IAAI1vB,KAAK81G,WAAWQ,eAAepd,EAAOj2F,OAAQ,EAE9C,OAAO,CAKnB,QAAO,GAiBXonE,KAAM,SAAU3wC,EAAM4wC,EAAWC,EAAMC,GAEnC,MAAIxqE,MAAK+1G,OAAOr8E,GAER15B,KAAK21G,cAAgB31G,KAAK+1G,OAAOr8E,GAE7B15B,KAAK21G,YAAYY,aAAc,GAE/Bv2G,KAAK21G,YAAY7rE,QAAS,EACnB9pC,KAAK21G,YAAYtrC,KAAKC,EAAWC,EAAMC,IAG3CxqE,KAAK21G,aAIR31G,KAAK21G,aAAe31G,KAAK21G,YAAYY,WAErCv2G,KAAK21G,YAAY1qG,OAGrBjL,KAAK21G,YAAc31G,KAAK+1G,OAAOr8E,GAC/B15B,KAAK21G,YAAY7rE,QAAS,EAC1B9pC,KAAK01G,aAAe11G,KAAK21G,YAAYD,aAC9B11G,KAAK21G,YAAYtrC,KAAKC,EAAWC,EAAMC,IAtBtD,QAoCJv/D,KAAM,SAAUyuB,EAAM0yC,GAEC1iE,SAAf0iE,IAA4BA,GAAa,IAEzCpsE,KAAK21G,aAAgC,gBAATj8E,IAAqBA,IAAS15B,KAAK21G,YAAYj8E,MAE3E15B,KAAK21G,YAAY1qG,KAAKmhE,IAY9BxkC,OAAQ,WAEJ,MAAI5nC,MAAK41G,kBAAoB51G,KAAK0iB,OAAOjhB,SAE9B,EAGPzB,KAAK21G,aAAe31G,KAAK21G,YAAY/tE,UAErC5nC,KAAK01G,aAAe11G,KAAK21G,YAAYD,cAC9B,IAGJ,GAUX99D,KAAM,SAAUV,GAERl3C,KAAK21G,cAEL31G,KAAK21G,YAAY/9D,KAAKV,GACtBl3C,KAAK01G,aAAe11G,KAAK21G,YAAYD,eAW7C79D,SAAU,SAAUX,GAEZl3C,KAAK21G,cAEL31G,KAAK21G,YAAY99D,SAASX,GAC1Bl3C,KAAK01G,aAAe11G,KAAK21G,YAAYD,eAY7Cc,aAAc,SAAU98E,GAEpB,MAAoB,gBAATA,IAEH15B,KAAK+1G,OAAOr8E,GAEL15B,KAAK+1G,OAAOr8E,GAIpB,MASX+8E,aAAc,WAGVz2G,KAAK0iB,OAAOvW,WAAWlM,KAAK8O,aAAa/O,KAAK01G,aAAarhC,QAU/DtxE,QAAS,WAEL,GAAIkzG,GAAO,IAEX,KAAK,GAAIA,KAAQj2G,MAAK+1G,OAEd/1G,KAAK+1G,OAAOz8E,eAAe28E,IAE3Bj2G,KAAK+1G,OAAOE,GAAMlzG,SAI1B/C,MAAK+1G,UACL/1G,KAAKg2G,iBACLh2G,KAAK81G,WAAa,KAClB91G,KAAK21G,YAAc,KACnB31G,KAAK01G,aAAe,KACpB11G,KAAK0iB,OAAS,KACd1iB,KAAKE,KAAO,OAMpB2oB,EAAO0iD,iBAAiB1oE,UAAUC,YAAc+lB,EAAO0iD,iBAOvDnoE,OAAOC,eAAewlB,EAAO0iD,iBAAiB1oE,UAAW,aAErDS,IAAK,WACD,MAAOtD,MAAK81G,cAUpB1yG,OAAOC,eAAewlB,EAAO0iD,iBAAiB1oE,UAAW,cAErDS,IAAK,WAED,MAAOtD,MAAK81G,WAAWpmF,SAS/BtsB,OAAOC,eAAewlB,EAAO0iD,iBAAiB1oE,UAAW,UAErDS,IAAK,WAED,MAAOtD,MAAK21G,YAAYvF,UAI5B5sG,IAAK,SAAUC,GAEXzD,KAAK21G,YAAY7rE,OAASrmC,KAUlCL,OAAOC,eAAewlB,EAAO0iD,iBAAiB1oE,UAAW,QAErDS,IAAK,WAED,MAAItD,MAAK21G,YAEE31G,KAAK21G,YAAYj8E,KAF5B,UAaRt2B,OAAOC,eAAewlB,EAAO0iD,iBAAiB1oE,UAAW,SAErDS,IAAK,WAED,MAAItD,MAAK01G,aAEE11G,KAAK01G,aAAa/sG,MAF7B,QAOJnF,IAAK,SAAUC,GAEU,gBAAVA,IAAsBzD,KAAK81G,YAAkD,OAApC91G,KAAK81G,WAAWY,SAASjzG,KAEzEzD,KAAK01G,aAAe11G,KAAK81G,WAAWY,SAASjzG,GAEzCzD,KAAK01G,cAEL11G,KAAK0iB,OAAOkI,SAAS5qB,KAAK01G,kBAY1CtyG,OAAOC,eAAewlB,EAAO0iD,iBAAiB1oE,UAAW,aAErDS,IAAK,WAED,MAAItD,MAAK01G,aAEE11G,KAAK01G,aAAah8E,KAF7B,QAOJl2B,IAAK,SAAUC,GAEU,gBAAVA,IAAsBzD,KAAK81G,YAAwD,OAA1C91G,KAAK81G,WAAWa,eAAelzG,IAE/EzD,KAAK01G,aAAe11G,KAAK81G,WAAWa,eAAelzG,GAE/CzD,KAAK01G,eAEL11G,KAAK42G,YAAc52G,KAAK01G,aAAa/sG,MAErC3I,KAAK0iB,OAAOkI,SAAS5qB,KAAK01G,gBAK9B5iG,QAAQwkB,KAAK,yBAA2B7zB,MA2BpDolB,EAAOuhD,UAAY,SAAUlqE,EAAM0B,EAAQ83B,EAAMk3C,EAAWsoB,EAAQ5uB,EAAWC,GAE9D7gE,SAAT6gE,IAAsBA,GAAO,GAKjCvqE,KAAKE,KAAOA,EAMZF,KAAK8sE,QAAUlrE,EAMf5B,KAAK81G,WAAallC,EAKlB5wE,KAAK05B,KAAOA,EAMZ15B,KAAK62G,WACL72G,KAAK62G,QAAU72G,KAAK62G,QAAQngF,OAAOwiE,GAKnCl5F,KAAKg4D,MAAQ,IAAOsS,EAKpBtqE,KAAKuqE,KAAOA,EAKZvqE,KAAK82G,UAAY,EAMjB92G,KAAKwqE,gBAAiB,EAMtBxqE,KAAK+2G,YAAa,EAMlB/2G,KAAKu2G,WAAY,EAMjBv2G,KAAKowG,UAAW,EAOhBpwG,KAAKg3G,gBAAkB,EAOvBh3G,KAAK42G,YAAc,EAOnB52G,KAAKi3G,WAAa,EAOlBj3G,KAAKk3G,WAAa,EAKlBl3G,KAAK01G,aAAe11G,KAAK81G,WAAWY,SAAS12G,KAAK62G,QAAQ72G,KAAK42G,cAK/D52G,KAAK8vG,QAAU,GAAIjnF,GAAOuc,OAW1BplC,KAAKm3G,SAAW,KAKhBn3G,KAAKkwG,WAAa,GAAIrnF,GAAOuc,OAK7BplC,KAAK+vG,OAAS,GAAIlnF,GAAOuc,OAMzBplC,KAAKo3G,YAAa,EAGlBp3G,KAAKE,KAAKsrC,QAAQ1N,IAAI99B,KAAKwrC,QAASxrC,MACpCA,KAAKE,KAAKwrC,SAAS5N,IAAI99B,KAAK0rC,SAAU1rC,OAI1C6oB,EAAOuhD,UAAUvnE,WAWbwnE,KAAM,SAAUC,EAAWC,EAAMC,GAsC7B,MApCyB,gBAAdF,KAGPtqE,KAAKg4D,MAAQ,IAAOsS,GAGJ,iBAATC,KAGPvqE,KAAKuqE,KAAOA,GAGc,mBAAnBC,KAGPxqE,KAAKwqE,eAAiBA,GAG1BxqE,KAAKu2G,WAAY,EACjBv2G,KAAK+2G,YAAa,EAClB/2G,KAAK8pC,QAAS,EACd9pC,KAAK82G,UAAY,EAEjB92G,KAAKq3G,eAAiBr3G,KAAKE,KAAK8nC,KAAKA,KACrChoC,KAAKs3G,eAAiBt3G,KAAKE,KAAK8nC,KAAKA,KAAOhoC,KAAKg4D,MAEjDh4D,KAAK42G,YAAc52G,KAAKo3G,WAAap3G,KAAK62G,QAAQ3zG,OAAS,EAAI,EAC/DlD,KAAKu3G,oBAAmB,GAAO,GAE/Bv3G,KAAK8sE,QAAQn2B,OAAO6gE,0BAA0Bx3G,KAAK8sE,QAAS9sE,MAE5DA,KAAK8vG,QAAQ5nE,SAASloC,KAAK8sE,QAAS9sE,MAEpCA,KAAK8sE,QAAQrC,WAAWkrC,YAAc31G,KACtCA,KAAK8sE,QAAQrC,WAAWirC,aAAe11G,KAAK01G,aAErC11G,MASXmsC,QAAS,WAELnsC,KAAKu2G,WAAY,EACjBv2G,KAAK+2G,YAAa,EAClB/2G,KAAK8pC,QAAS,EACd9pC,KAAK82G,UAAY,EAEjB92G,KAAKq3G,eAAiBr3G,KAAKE,KAAK8nC,KAAKA,KACrChoC,KAAKs3G,eAAiBt3G,KAAKE,KAAK8nC,KAAKA,KAAOhoC,KAAKg4D,MAEjDh4D,KAAK42G,YAAc,EAEnB52G,KAAK01G,aAAe11G,KAAK81G,WAAWY,SAAS12G,KAAK62G,QAAQ72G,KAAK42G,cAE/D52G,KAAK8sE,QAAQliD,SAAS5qB,KAAK01G,cAE3B11G,KAAK8sE,QAAQrC,WAAWkrC,YAAc31G,KACtCA,KAAK8sE,QAAQrC,WAAWirC,aAAe11G,KAAK01G,aAE5C11G,KAAK8vG,QAAQ5nE,SAASloC,KAAK8sE,QAAS9sE,OAUxCoe,QAAS,WAGL,MAFApe,MAAK0yG,UAAY1yG,KAAK0yG,SAEf1yG,MAWXy3G,YAAa,WAGT,MAFAz3G,MAAKkwG,WAAWxhE,QAAQ1uC,KAAKoe,QAAQgY,KAAKp2B,OAEnCA,KAAKoe,WAUhBwM,SAAU,SAAS9b,EAAS4oG,GAExB,GAAIC,EAQJ,IAN2BjuG,SAAvBguG,IAEAA,GAAqB,GAIF,gBAAZ5oG,GAEP,IAAK,GAAI7L,GAAI,EAAGA,EAAIjD,KAAK62G,QAAQ3zG,OAAQD,IAEjCjD,KAAK81G,WAAWY,SAAS12G,KAAK62G,QAAQ5zG,IAAIy2B,OAAS5qB,IAEnD6oG,EAAa10G,OAIpB,IAAuB,gBAAZ6L,GAEZ,GAAI4oG,EAEAC,EAAa7oG,MAIb,KAAK,GAAI7L,GAAI,EAAGA,EAAIjD,KAAK62G,QAAQ3zG,OAAQD,IAEjCjD,KAAK62G,QAAQ5zG,KAAO00G,IAEpBA,EAAa10G,EAMzB00G,KAGA33G,KAAK42G,YAAce,EAAa,EAGhC33G,KAAKs3G,eAAiBt3G,KAAKE,KAAK8nC,KAAKA,KAErChoC,KAAK4nC,WAab38B,KAAM,SAAUmhE,EAAYwrC,GAELluG,SAAf0iE,IAA4BA,GAAa,GACpB1iE,SAArBkuG,IAAkCA,GAAmB,GAEzD53G,KAAKu2G,WAAY,EACjBv2G,KAAK+2G,YAAa,EAClB/2G,KAAK8pC,QAAS,EAEVsiC,IAEApsE,KAAK01G,aAAe11G,KAAK81G,WAAWY,SAAS12G,KAAK62G,QAAQ,IAC1D72G,KAAK8sE,QAAQliD,SAAS5qB,KAAK01G,eAG3BkC,IAEA53G,KAAK8sE,QAAQn2B,OAAOkhE,6BAA6B73G,KAAK8sE,QAAS9sE,MAC/DA,KAAKkwG,WAAWhoE,SAASloC,KAAK8sE,QAAS9sE,QAU/CwrC,QAAS,WAEDxrC,KAAKu2G,YAELv2G,KAAKi3G,WAAaj3G,KAAKs3G,eAAiBt3G,KAAKE,KAAK8nC,KAAKA,OAU/D0D,SAAU,WAEF1rC,KAAKu2G,YAELv2G,KAAKs3G,eAAiBt3G,KAAKE,KAAK8nC,KAAKA,KAAOhoC,KAAKi3G,aAUzDrvE,OAAQ,WAEJ,MAAI5nC,MAAKowG,UAEE,EAGPpwG,KAAKu2G,WAAav2G,KAAKE,KAAK8nC,KAAKA,MAAQhoC,KAAKs3G,gBAE9Ct3G,KAAKk3G,WAAa,EAGlBl3G,KAAKi3G,WAAaj3G,KAAKE,KAAK8nC,KAAKA,KAAOhoC,KAAKs3G,eAE7Ct3G,KAAKq3G,eAAiBr3G,KAAKE,KAAK8nC,KAAKA,KAEjChoC,KAAKi3G,WAAaj3G,KAAKg4D,QAGvBh4D,KAAKk3G,WAAar2G,KAAKq1B,MAAMl2B,KAAKi3G,WAAaj3G,KAAKg4D,OACpDh4D,KAAKi3G,YAAej3G,KAAKk3G,WAAal3G,KAAKg4D,OAI/Ch4D,KAAKs3G,eAAiBt3G,KAAKE,KAAK8nC,KAAKA,MAAQhoC,KAAKg4D,MAAQh4D,KAAKi3G,YAE3Dj3G,KAAKo3G,WACLp3G,KAAK42G,aAAe52G,KAAKk3G,WAEzBl3G,KAAK42G,aAAe52G,KAAKk3G,YAGxBl3G,KAAKo3G,YAAcp3G,KAAK42G,aAAe52G,KAAK62G,QAAQ3zG,QAAUlD,KAAKo3G,YAAcp3G,KAAK42G,aAAe,GAElG52G,KAAKuqE,MAGLvqE,KAAK42G,YAAc/1G,KAAKq7B,IAAIl8B,KAAK42G,aAAe52G,KAAK62G,QAAQ3zG,OAEzDlD,KAAKo3G,aACLp3G,KAAK42G,YAAc52G,KAAK62G,QAAQ3zG,OAAS,EAAIlD,KAAK42G,aAGtD52G,KAAK01G,aAAe11G,KAAK81G,WAAWY,SAAS12G,KAAK62G,QAAQ72G,KAAK42G,cAG3D52G,KAAK01G,cAEL11G,KAAK8sE,QAAQliD,SAAS5qB,KAAK01G,cAG/B11G,KAAK82G,YACL92G,KAAK8sE,QAAQn2B,OAAOmhE,yBAAyB93G,KAAK8sE,QAAS9sE,MAC3DA,KAAK+vG,OAAO7nE,SAASloC,KAAK8sE,QAAS9sE,MAE/BA,KAAKm3G,UAELn3G,KAAKm3G,SAASjvE,SAASloC,KAAMA,KAAK01G,gBAGzB11G,KAAK81G,aAIP,IAKX91G,KAAKypB,YACE,GAKJzpB,KAAKu3G,oBAAmB,KAIhC,GAgBXA,mBAAoB,SAAUQ,EAAcC,GAIxC,GAFiBtuG,SAAbsuG,IAA0BA,GAAW,IAEpCh4G,KAAK81G,WAGN,OAAO,CAIX,IAAIxkG,GAAMtR,KAAK01G,aAAa/sG,KAS5B,OAPA3I,MAAK01G,aAAe11G,KAAK81G,WAAWY,SAAS12G,KAAK62G,QAAQ72G,KAAK42G,cAE3D52G,KAAK01G,eAAiBsC,IAAcA,GAAY1mG,IAAQtR,KAAK01G,aAAa/sG,QAE1E3I,KAAK8sE,QAAQliD,SAAS5qB,KAAK01G,cAG3B11G,KAAKm3G,UAAYY,GAEjB/3G,KAAKm3G,SAASjvE,SAASloC,KAAMA,KAAK01G,gBAGzB11G,KAAK81G,aAIP,GAWfl+D,KAAM,SAAUV,GAEKxtC,SAAbwtC,IAA0BA,EAAW,EAEzC,IAAIhrC,GAAQlM,KAAK42G,YAAc1/D,CAE3BhrC,IAASlM,KAAK62G,QAAQ3zG,SAElBlD,KAAKuqE,KAELr+D,GAASlM,KAAK62G,QAAQ3zG,OAItBgJ,EAAQlM,KAAK62G,QAAQ3zG,OAAS,GAIlCgJ,IAAUlM,KAAK42G,cAEf52G,KAAK42G,YAAc1qG,EACnBlM,KAAKu3G,oBAAmB,KAWhC1/D,SAAU,SAAUX,GAECxtC,SAAbwtC,IAA0BA,EAAW,EAEzC,IAAIhrC,GAAQlM,KAAK42G,YAAc1/D,CAEnB,GAARhrC,IAEIlM,KAAKuqE,KAELr+D,EAAQlM,KAAK62G,QAAQ3zG,OAASgJ,EAI9BA,KAIJA,IAAUlM,KAAK42G,cAEf52G,KAAK42G,YAAc1qG,EACnBlM,KAAKu3G,oBAAmB,KAWhCtgB,gBAAiB,SAAUrmB,GAEvB5wE,KAAK81G,WAAallC,EAClB5wE,KAAK01G,aAAe11G,KAAK81G,WAAa91G,KAAK81G,WAAWY,SAAS12G,KAAK62G,QAAQ72G,KAAK42G,YAAc52G,KAAK62G,QAAQ3zG,SAAW,MAS3HH,QAAS,WAEA/C,KAAK81G,aAMV91G,KAAKE,KAAKsrC,QAAQv6B,OAAOjR,KAAKwrC,QAASxrC,MACvCA,KAAKE,KAAKwrC,SAASz6B,OAAOjR,KAAK0rC,SAAU1rC,MAEzCA,KAAKE,KAAO,KACZF,KAAK8sE,QAAU,KACf9sE,KAAK62G,QAAU,KACf72G,KAAK81G,WAAa,KAClB91G,KAAK01G,aAAe,KACpB11G,KAAKu2G,WAAY,EAEjBv2G,KAAK8vG,QAAQ7gE,UACbjvC,KAAK+vG,OAAO9gE,UACZjvC,KAAKkwG,WAAWjhE,UAEZjvC,KAAKm3G,UAELn3G,KAAKm3G,SAASloE,YAWtBxlB,SAAU,WAENzpB,KAAK42G,YAAc52G,KAAK62G,QAAQ3zG,OAAS,EACzClD,KAAK01G,aAAe11G,KAAK81G,WAAWY,SAAS12G,KAAK62G,QAAQ72G,KAAK42G,cAE/D52G,KAAKu2G,WAAY,EACjBv2G,KAAK+2G,YAAa,EAClB/2G,KAAK8pC,QAAS,EAEd9pC,KAAK8sE,QAAQn2B,OAAOkhE,6BAA6B73G,KAAK8sE,QAAS9sE,MAE/DA,KAAKkwG,WAAWhoE,SAASloC,KAAK8sE,QAAS9sE,MAEnCA,KAAKwqE,gBAELxqE,KAAK8sE,QAAQuC,SAOzBxmD,EAAOuhD,UAAUvnE,UAAUC,YAAc+lB,EAAOuhD,UAMhDhnE,OAAOC,eAAewlB,EAAOuhD,UAAUvnE,UAAW,UAE9CS,IAAK,WAED,MAAOtD,MAAKowG,UAIhB5sG,IAAK,SAAUC,GAEXzD,KAAKowG,SAAW3sG,EAEZA,EAGAzD,KAAKg3G,gBAAkBh3G,KAAKE,KAAK8nC,KAAKA,KAKlChoC,KAAKu2G,YAELv2G,KAAKs3G,eAAiBt3G,KAAKE,KAAK8nC,KAAKA,KAAOhoC,KAAKg4D,UAYjE50D,OAAOC,eAAewlB,EAAOuhD,UAAUvnE,UAAW,YAE9CS,IAAK,WAED,MAAOtD,MAAKo3G,YAIhB5zG,IAAK,SAAUC,GAEXzD,KAAKo3G,WAAa3zG,KAW1BL,OAAOC,eAAewlB,EAAOuhD,UAAUvnE,UAAW,cAE9CS,IAAK,WACD,MAAOtD,MAAK62G,QAAQ3zG,UAS5BE,OAAOC,eAAewlB,EAAOuhD,UAAUvnE,UAAW,SAE9CS,IAAK,WAED,MAA0B,QAAtBtD,KAAK01G,aAEE11G,KAAK01G,aAAa/sG,MAIlB3I,KAAK42G,aAKpBpzG,IAAK,SAAUC,GAEXzD,KAAK01G,aAAe11G,KAAK81G,WAAWY,SAAS12G,KAAK62G,QAAQpzG,IAEhC,OAAtBzD,KAAK01G,eAEL11G,KAAK42G,YAAcnzG,EACnBzD,KAAK8sE,QAAQliD,SAAS5qB,KAAK01G,cAEvB11G,KAAKm3G,UAELn3G,KAAKm3G,SAASjvE,SAASloC,KAAMA,KAAK01G,kBAYlDtyG,OAAOC,eAAewlB,EAAOuhD,UAAUvnE,UAAW,SAE9CS,IAAK,WAED,MAAOzC,MAAKw6B,MAAM,IAAOr7B,KAAKg4D,QAIlCx0D,IAAK,SAAUC,GAEPA,GAAS,IAETzD,KAAKg4D,MAAQ,IAAOv0D,MAWhCL,OAAOC,eAAewlB,EAAOuhD,UAAUvnE,UAAW,gBAE9CS,IAAK,WAED,MAA0B,QAAlBtD,KAAKm3G,UAIjB3zG,IAAK,SAAUC,GAEPA,GAA2B,OAAlBzD,KAAKm3G,SAEdn3G,KAAKm3G,SAAW,GAAItuF,GAAOuc,OAErB3hC,GAA2B,OAAlBzD,KAAKm3G,WAEpBn3G,KAAKm3G,SAASloE,UACdjvC,KAAKm3G,SAAW,SAqB5BtuF,EAAOuhD,UAAU6tC,mBAAqB,SAAUxU,EAAQp4F,EAAOJ,EAAMitG,EAAQC,GAE1DzuG,SAAXwuG,IAAwBA,EAAS,GAErC,IAAI58E,MACApvB,EAAQ,EAEZ,IAAYjB,EAARI,EAEA,IAAK,GAAIpI,GAAIoI,EAAYJ,GAALhI,EAAWA,IAKvBiJ,EAHmB,gBAAZisG,GAGCtvF,EAAO0O,MAAMuB,IAAI71B,EAAE6kB,WAAYqwF,EAAS,IAAK,GAI7Cl1G,EAAE6kB,WAGd5b,EAAQu3F,EAASv3F,EAAQgsG,EAEzB58E,EAAOv3B,KAAKmI,OAKhB,KAAK,GAAIjJ,GAAIoI,EAAOpI,GAAKgI,EAAMhI,IAKvBiJ,EAHmB,gBAAZisG,GAGCtvF,EAAO0O,MAAMuB,IAAI71B,EAAE6kB,WAAYqwF,EAAS,IAAK,GAI7Cl1G,EAAE6kB,WAGd5b,EAAQu3F,EAASv3F,EAAQgsG,EAEzB58E,EAAOv3B,KAAKmI,EAIpB,OAAOovB,IAsBXzS,EAAO4vD,MAAQ,SAAU9vE,EAAOtD,EAAGC,EAAGqB,EAAOC,EAAQ8yB,GAKjD15B,KAAK2I,MAAQA,EAKb3I,KAAKqF,EAAIA,EAKTrF,KAAKsF,EAAIA,EAKTtF,KAAK2G,MAAQA,EAKb3G,KAAK4G,OAASA,EAKd5G,KAAK05B,KAAOA,EAKZ15B,KAAK8tB,QAAUjtB,KAAKq1B,MAAMvvB,EAAQ,GAKlC3G,KAAK+tB,QAAUltB,KAAKq1B,MAAMtvB,EAAS,GAKnC5G,KAAKo7B,SAAWvS,EAAOhoB,KAAKu6B,SAAS,EAAG,EAAGz0B,EAAOC,GAMlD5G,KAAKo4G,SAAU,EAMfp4G,KAAKq4G,kBAAoB,KAMzBr4G,KAAKixB,SAAU,EAKfjxB,KAAK8wB,YAAcnqB,EAKnB3G,KAAKgxB,YAAcpqB,EAMnB5G,KAAKkxB,kBAAoB,EAMzBlxB,KAAKmxB,kBAAoB,EAMzBnxB,KAAKs4G,kBAAoB,EAMzBt4G,KAAKu4G,kBAAoB,EAKzBv4G,KAAKk5B,MAAQl5B,KAAKqF,EAAIrF,KAAK2G,MAK3B3G,KAAK67B,OAAS77B,KAAKsF,EAAItF,KAAK4G,QAIhCiiB,EAAO4vD,MAAM51E,WASTkF,OAAQ,SAAUpB,EAAOC,GAErB5G,KAAK2G,MAAQA,EACb3G,KAAK4G,OAASA,EACd5G,KAAK8tB,QAAUjtB,KAAKq1B,MAAMvvB,EAAQ,GAClC3G,KAAK+tB,QAAUltB,KAAKq1B,MAAMtvB,EAAS,GACnC5G,KAAKo7B,SAAWvS,EAAOhoB,KAAKu6B,SAAS,EAAG,EAAGz0B,EAAOC,GAClD5G,KAAK8wB,YAAcnqB,EACnB3G,KAAKgxB,YAAcpqB,EACnB5G,KAAKk5B,MAAQl5B,KAAKqF,EAAIsB,EACtB3G,KAAK67B,OAAS77B,KAAKsF,EAAIsB,GAgB3B4xG,QAAS,SAAUvnF,EAASwnF,EAAaC,EAAcC,EAAOC,EAAOC,EAAWC,GAE5E94G,KAAKixB,QAAUA,EAEXA,IAEAjxB,KAAK8wB,YAAc2nF,EACnBz4G,KAAKgxB,YAAc0nF,EACnB14G,KAAK8tB,QAAUjtB,KAAKq1B,MAAMuiF,EAAc,GACxCz4G,KAAK+tB,QAAUltB,KAAKq1B,MAAMwiF,EAAe,GACzC14G,KAAKkxB,kBAAoBynF,EACzB34G,KAAKmxB,kBAAoBynF,EACzB54G,KAAKs4G,kBAAoBO,EACzB74G,KAAKu4G,kBAAoBO,IAYjCj/E,MAAO,WAEH,GAAIyB,GAAS,GAAIzS,GAAO4vD,MAAMz4E,KAAK2I,MAAO3I,KAAKqF,EAAGrF,KAAKsF,EAAGtF,KAAK2G,MAAO3G,KAAK4G,OAAQ5G,KAAK05B,KAExF,KAAK,GAAIhC,KAAQ13B,MAETA,KAAKs5B,eAAe5B,KAEpB4D,EAAO5D,GAAQ13B,KAAK03B,GAI5B,OAAO4D,IAWXy9E,QAAS,SAAUl+E,GAWf,MATYnxB,UAARmxB,EAEAA,EAAM,GAAIhS,GAAOrmB,UAAUxC,KAAKqF,EAAGrF,KAAKsF,EAAGtF,KAAK2G,MAAO3G,KAAK4G,QAI5Di0B,EAAIG,MAAMh7B,KAAKqF,EAAGrF,KAAKsF,EAAGtF,KAAK2G,MAAO3G,KAAK4G,QAGxCi0B,IAMfhS,EAAO4vD,MAAM51E,UAAUC,YAAc+lB,EAAO4vD;AAc5C5vD,EAAOyvD,UAAY,WAMft4E,KAAK62G,WAML72G,KAAKg5G,gBAITnwF,EAAOyvD,UAAUz1E,WASb21E,SAAU,SAAUtsE,GAWhB,MATAA,GAAMvD,MAAQ3I,KAAK62G,QAAQ3zG,OAE3BlD,KAAK62G,QAAQ9yG,KAAKmI,GAEC,KAAfA,EAAMwtB,OAEN15B,KAAKg5G,YAAY9sG,EAAMwtB,MAAQxtB,EAAMvD,OAGlCuD,GAWXwqG,SAAU,SAAU/tG,GAOhB,MALIA,IAAS3I,KAAK62G,QAAQ3zG,SAEtByF,EAAQ,GAGL3I,KAAK62G,QAAQluG,IAWxBguG,eAAgB,SAAUj9E,GAEtB,MAAsC,gBAA3B15B,MAAKg5G,YAAYt/E,GAEjB15B,KAAK62G,QAAQ72G,KAAKg5G,YAAYt/E,IAGlC,MAWX48E,eAAgB,SAAU58E,GAEtB,MAA8B,OAA1B15B,KAAKg5G,YAAYt/E,IAEV,GAGJ,GAUXG,MAAO,WAKH,IAAK,GAHDyB,GAAS,GAAIzS,GAAOyvD,UAGfr1E,EAAI,EAAGA,EAAIjD,KAAK62G,QAAQ3zG,OAAQD,IAErCq4B,EAAOu7E,QAAQ9yG,KAAK/D,KAAK62G,QAAQ5zG,GAAG42B,QAGxC,KAAK,GAAIr1B,KAAKxE,MAAKg5G,YAEXh5G,KAAKg5G,YAAY1/E,eAAe90B,IAEhC82B,EAAO09E,YAAYj1G,KAAK/D,KAAKg5G,YAAYx0G,GAIjD,OAAO82B,IAaX29E,cAAe,SAAU5tG,EAAOtB,EAAKuxB,GAElB5xB,SAAX4xB,IAAwBA,KAE5B,KAAK,GAAIr4B,GAAIoI,EAAYtB,GAAL9G,EAAUA,IAE1Bq4B,EAAOv3B,KAAK/D,KAAK62G,QAAQ5zG,GAG7B,OAAOq4B,IAcX69D,UAAW,SAAUD,EAAQid,EAAiB76E,GAK1C,GAHwB5xB,SAApBysG,IAAiCA,GAAkB,GACxCzsG,SAAX4xB,IAAwBA,MAEb5xB,SAAXwvF,GAA0C,IAAlBA,EAAOh2F,OAG/B,IAAK,GAAID,GAAI,EAAGA,EAAIjD,KAAK62G,QAAQ3zG,OAAQD,IAGrCq4B,EAAOv3B,KAAK/D,KAAK62G,QAAQ5zG,QAM7B,KAAK,GAAIA,GAAI,EAAGA,EAAIi2F,EAAOh2F,OAAQD,IAG3BkzG,EAGA76E,EAAOv3B,KAAK/D,KAAK02G,SAASxd,EAAOj2F,KAKjCq4B,EAAOv3B,KAAK/D,KAAK22G,eAAezd,EAAOj2F,IAKnD,OAAOq4B,IAcX86E,gBAAiB,SAAUld,EAAQid,EAAiB76E,GAKhD,GAHwB5xB,SAApBysG,IAAiCA,GAAkB,GACxCzsG,SAAX4xB,IAAwBA,MAEb5xB,SAAXwvF,GAA0C,IAAlBA,EAAOh2F,OAG/B,IAAK,GAAID,GAAI,EAAGA,EAAIjD,KAAK62G,QAAQ3zG,OAAQD,IAErCq4B,EAAOv3B,KAAK/D,KAAK62G,QAAQ5zG,GAAG0F,WAMhC,KAAK,GAAI1F,GAAI,EAAGA,EAAIi2F,EAAOh2F,OAAQD,IAG3BkzG,GAAmBn2G,KAAK62G,QAAQ3d,EAAOj2F,IAEvCq4B,EAAOv3B,KAAK/D,KAAK62G,QAAQ3d,EAAOj2F,IAAI0F,OAIhC3I,KAAK22G,eAAezd,EAAOj2F,KAE3Bq4B,EAAOv3B,KAAK/D,KAAK22G,eAAezd,EAAOj2F,IAAI0F,MAM3D,OAAO2yB,IASXv4B,QAAS,WAEL/C,KAAK62G,QAAU,KACf72G,KAAKg5G,YAAc,OAM3BnwF,EAAOyvD,UAAUz1E,UAAUC,YAAc+lB,EAAOyvD,UAOhDl1E,OAAOC,eAAewlB,EAAOyvD,UAAUz1E,UAAW,SAE9CS,IAAK,WACD,MAAOtD,MAAK62G,QAAQ3zG,UAiB5B2lB,EAAOqwF,iBAeHC,YAAa,SAAUj5G,EAAM6U,EAAKsb,EAAYC,EAAa8oF,EAAUC,EAAQC,GAEzE,GAAIvoC,GAAMh8D,CAOV,IALmB,gBAARA,KAEPg8D,EAAM7wE,EAAKgpC,MAAMtd,SAAS7W,IAGlB,OAARg8D,EAEA,MAAO,KAGX,IAAIpqE,GAAQoqE,EAAIpqE,MACZC,EAASmqE,EAAInqE,MAEC,IAAdypB,IAEAA,EAAaxvB,KAAKq1B,OAAOvvB,EAAQ9F,KAAKq9B,IAAI,GAAI7N,KAG/B,GAAfC,IAEAA,EAAczvB,KAAKq1B,OAAOtvB,EAAS/F,KAAKq9B,IAAI,GAAI5N,IAGpD,IAAIipF,GAAM14G,KAAKq1B,OAAOvvB,EAAQ0yG,IAAWhpF,EAAaipF,IAClDE,EAAS34G,KAAKq1B,OAAOtvB,EAASyyG,IAAW/oF,EAAcgpF,IACvD5pF,EAAQ6pF,EAAMC,CAQlB,IANiB,KAAbJ,IAEA1pF,EAAQ0pF,GAIE,IAAVzyG,GAA0B,IAAXC,GAAwBypB,EAAR1pB,GAA+B2pB,EAAT1pB,GAAkC,IAAV8oB,EAG7E,MADA5c,SAAQwkB,KAAK,wCAA0CviB,EAAM,uEACtD,IAQX,KAAK,GAJD/D,GAAO,GAAI6X,GAAOyvD,UAClBjzE,EAAIg0G,EACJ/zG,EAAI+zG,EAECp2G,EAAI,EAAOysB,EAAJzsB,EAAWA,IAEvB+N,EAAKwnE,SAAS,GAAI3vD,GAAO4vD,MAAMx1E,EAAGoC,EAAGC,EAAG+qB,EAAYC,EAAa,KAEjEjrB,GAAKgrB,EAAaipF,EAEdj0G,EAAIgrB,EAAa1pB,IAEjBtB,EAAIg0G,EACJ/zG,GAAKgrB,EAAcgpF,EAI3B,OAAOtoG,IAYXyoG,SAAU,SAAUv5G,EAAMw5G,GAGtB,IAAKA,EAAa,OAId,MAFA5mG,SAAQwkB,KAAK,iGACbxkB,SAAQC,IAAI2mG,EAWhB,KAAK,GAFDC,GAJA3oG,EAAO,GAAI6X,GAAOyvD,UAGlB4gB,EAASwgB,EAAa,OAGjBz2G,EAAI,EAAGA,EAAIi2F,EAAOh2F,OAAQD,IAE/B02G,EAAW3oG,EAAKwnE,SAAS,GAAI3vD,GAAO4vD,MAChCx1E,EACAi2F,EAAOj2F,GAAGiJ,MAAM7G,EAChB6zF,EAAOj2F,GAAGiJ,MAAM5G,EAChB4zF,EAAOj2F,GAAGiJ,MAAM0L,EAChBshF,EAAOj2F,GAAGiJ,MAAMkX,EAChB81E,EAAOj2F,GAAG22G,WAGV1gB,EAAOj2F,GAAGguB,SAEV0oF,EAASnB,QACLtf,EAAOj2F,GAAGguB,QACVioE,EAAOj2F,GAAG42G,WAAWjiG,EACrBshF,EAAOj2F,GAAG42G,WAAWz2F,EACrB81E,EAAOj2F,GAAG62G,iBAAiBz0G,EAC3B6zF,EAAOj2F,GAAG62G,iBAAiBx0G,EAC3B4zF,EAAOj2F,GAAG62G,iBAAiBliG,EAC3BshF,EAAOj2F,GAAG62G,iBAAiB12F,EAKvC,OAAOpS,IAYX+oG,cAAe,SAAU75G,EAAMw5G,GAG3B,GAAIM,IAAa,SAAU,YAAY,aAAa,YAAa,YAYjE,IAVAA,EAAUhjF,QAAS,SAASjiB,GACxB,MAAK2kG,GAAK3kG,GAAV,QAEIjC,QAAQwkB,KAAK,oFAAsFviB,EAAM,cACzGjC,SAAQC,IAAI2mG,MAMQ,GAAzBA,EAAa,OAAEx2G,OAGd,MAFA4P,SAAQwkB,KAAK,uGACbxkB,SAAQC,IAAI2mG,EAYhB,KAAK,GAFDC,GANA3oG,EAAO,GAAI6X,GAAOyvD,UAElB2hC,EAAaP,EAAiB,WAC9BQ,EAAYR,EAAgB,UAE5BxgB,EAASwgB,EAAa,OAAE,GAAU,MAG7Bz2G,EAAI,EAAGA,EAAIi2F,EAAOh2F,OAAQD,IAE/B02G,EAAW3oG,EAAKwnE,SAAS,GAAI3vD,GAAO4vD,MAChCx1E,EACAi2F,EAAOj2F,GAAGoC,EACV6zF,EAAOj2F,GAAGqC,EACV40G,EACAD,EACA,SAAWh3G,IAIf02G,EAASnB,SAAQ,EAGrB,OAAOxnG,IAYXmpG,aAAc,SAAUj6G,EAAMw5G,GAG1B,IAAKA,EAAa,OAId,MAFA5mG,SAAQwkB,KAAK,sGACbxkB,SAAQC,IAAI2mG,EAKhB,IAIIC,GAJA3oG,EAAO,GAAI6X,GAAOyvD,UAGlB4gB,EAASwgB,EAAa,OAEtBz2G,EAAI,CAER,KAAK,GAAI8R,KAAOmkF,GAEZygB,EAAW3oG,EAAKwnE,SAAS,GAAI3vD,GAAO4vD,MAChCx1E,EACAi2F,EAAOnkF,GAAK7I,MAAM7G,EAClB6zF,EAAOnkF,GAAK7I,MAAM5G,EAClB4zF,EAAOnkF,GAAK7I,MAAM0L,EAClBshF,EAAOnkF,GAAK7I,MAAMkX,EAClBrO,IAGAmkF,EAAOnkF,GAAKkc,SAEZ0oF,EAASnB,QACLtf,EAAOnkF,GAAKkc,QACZioE,EAAOnkF,GAAK8kG,WAAWjiG,EACvBshF,EAAOnkF,GAAK8kG,WAAWz2F,EACvB81E,EAAOnkF,GAAK+kG,iBAAiBz0G,EAC7B6zF,EAAOnkF,GAAK+kG,iBAAiBx0G,EAC7B4zF,EAAOnkF,GAAK+kG,iBAAiBliG,EAC7BshF,EAAOnkF,GAAK+kG,iBAAiB12F,GAIrCngB,GAGJ,OAAO+N,IAYXopG,QAAS,SAAUl6G,EAAMm6G,GAGrB,IAAKA,EAAIC,qBAAqB,gBAG1B,WADAxnG,SAAQwkB,KAAK,8FAoBjB,KAAK,GAbDqiF,GAEAjgF,EACAxtB,EACA7G,EACAC,EACAqB,EACAC,EACA2zG,EACAC,EACAnqF,EACAC,EAbAtf,EAAO,GAAI6X,GAAOyvD,UAClB4gB,EAASmhB,EAAIC,qBAAqB,cAc7Br3G,EAAI,EAAGA,EAAIi2F,EAAOh2F,OAAQD,IAE/BiJ,EAAQgtF,EAAOj2F,GAAGiR,WAElBwlB,EAAOxtB,EAAMwtB,KAAKj2B,MAClB4B,EAAIszB,SAASzsB,EAAM7G,EAAE5B,MAAO,IAC5B6B,EAAIqzB,SAASzsB,EAAM5G,EAAE7B,MAAO,IAC5BkD,EAAQgyB,SAASzsB,EAAMvF,MAAMlD,MAAO,IACpCmD,EAAS+xB,SAASzsB,EAAMtF,OAAOnD,MAAO,IAEtC82G,EAAS,KACTC,EAAS,KAELtuG,EAAMquG,SAENA,EAAS15G,KAAKq7B,IAAIvD,SAASzsB,EAAMquG,OAAO92G,MAAO,KAC/C+2G,EAAS35G,KAAKq7B,IAAIvD,SAASzsB,EAAMsuG,OAAO/2G,MAAO,KAC/C4sB,EAAasI,SAASzsB,EAAMmkB,WAAW5sB,MAAO,IAC9C6sB,EAAcqI,SAASzsB,EAAMokB,YAAY7sB,MAAO,KAGpDk2G,EAAW3oG,EAAKwnE,SAAS,GAAI3vD,GAAO4vD,MAAMx1E,EAAGoC,EAAGC,EAAGqB,EAAOC,EAAQ8yB,KAGnD,OAAX6gF,GAA8B,OAAXC,IAEnBb,EAASnB,SAAQ,EAAM7xG,EAAOC,EAAQ2zG,EAAQC,EAAQnqF,EAAYC,EAI1E,OAAOtf,KAuCf6X,EAAO61B,MAAQ,SAAUx+C,GAKrBF,KAAKE,KAAOA,EAMZF,KAAKy6G,gBAAiB,EAOtBz6G,KAAK06G,QACD9pG,UACAuZ,SACAriB,WACAuhC,SACAkrC,SACA7B,QACAgnC,QACAW,OACA5wE,WACAwqC,WACA0mC,UACAlmC,cACAmmC,cACA/uG,UACApF,kBAOJzG,KAAK66G,WAML76G,KAAK86G,aAAe,GAAIrqG,OAMxBzQ,KAAK+6G,SAAW,KAKhB/6G,KAAKg7G,cAAgB,GAAInyF,GAAOuc,OAMhCplC,KAAKi7G,aAELj7G,KAAKi7G,UAAUpyF,EAAO61B,MAAMxsB,QAAUlyB,KAAK06G,OAAO9pG,OAClD5Q,KAAKi7G,UAAUpyF,EAAO61B,MAAM9rB,OAAS5yB,KAAK06G,OAAOvwF,MACjDnqB,KAAKi7G,UAAUpyF,EAAO61B,MAAMw8D,SAAWl7G,KAAK06G,OAAO5yG,QACnD9H,KAAKi7G,UAAUpyF,EAAO61B,MAAMy8D,OAASn7G,KAAK06G,OAAOrxE,MACjDrpC,KAAKi7G,UAAUpyF,EAAO61B,MAAM5rB,MAAQ9yB,KAAK06G,OAAOhoC,KAChD1yE,KAAKi7G,UAAUpyF,EAAO61B,MAAM08D,SAAWp7G,KAAK06G,OAAOjxE,QACnDzpC,KAAKi7G,UAAUpyF,EAAO61B,MAAMvrB,SAAWnzB,KAAK06G,OAAOzmC,QACnDj0E,KAAKi7G,UAAUpyF,EAAO61B,MAAM28D,QAAUr7G,KAAK06G,OAAOC,OAClD36G,KAAKi7G,UAAUpyF,EAAO61B,MAAMnrB,YAAcvzB,KAAK06G,OAAOjmC,WACtDz0E,KAAKi7G,UAAUpyF,EAAO61B,MAAM48D,YAAct7G,KAAK06G,OAAOE,WACtD56G,KAAKi7G,UAAUpyF,EAAO61B,MAAM68D,MAAQv7G,KAAK06G,OAAOhB,KAChD15G,KAAKi7G,UAAUpyF,EAAO61B,MAAM88D,KAAOx7G,KAAK06G,OAAOL,IAC/Cr6G,KAAKi7G,UAAUpyF,EAAO61B,MAAMpqB,OAASt0B,KAAK06G,OAAOnmC,MACjDv0E,KAAKi7G,UAAUpyF,EAAO61B,MAAM+8D,QAAUz7G,KAAK06G,OAAO7uG,OAClD7L,KAAKi7G,UAAUpyF,EAAO61B,MAAMg9D,gBAAkB17G,KAAK06G,OAAOj0G,cAE1DzG,KAAK27G,kBACL37G,KAAK47G,mBAQT/yF,EAAO61B,MAAMxsB,OAAS,EAMtBrJ,EAAO61B,MAAM9rB,MAAQ,EAMrB/J,EAAO61B,MAAMw8D,QAAU,EAMvBryF,EAAO61B,MAAMy8D,MAAQ,EAMrBtyF,EAAO61B,MAAM5rB,KAAO,EAMpBjK,EAAO61B,MAAM08D,QAAU,EAMvBvyF,EAAO61B,MAAMvrB,QAAU,EAMvBtK,EAAO61B,MAAM28D,OAAS,EAMtBxyF,EAAO61B,MAAMnrB,WAAa,EAM1B1K,EAAO61B,MAAM48D,WAAa,GAM1BzyF,EAAO61B,MAAM68D,KAAO,GAMpB1yF,EAAO61B,MAAM88D,IAAM,GAMnB3yF,EAAO61B,MAAMpqB,MAAQ,GAMrBzL,EAAO61B,MAAM+8D,OAAS,GAMtB5yF,EAAO61B,MAAMg9D,eAAiB,GAE9B7yF,EAAO61B,MAAM77C,WAcTg5G,UAAW,SAAU9mG,EAAKnE,EAAQtD,GAEd5D,SAAZ4D,IAAyBA,EAAUsD,EAAOE,WAAW,OAEzD9Q,KAAK06G,OAAO9pG,OAAOmE,IAASnE,OAAQA,EAAQtD,QAASA,IAczDssE,SAAU,SAAU7kE,EAAKy/D,EAAKxjE,GAEtBhR,KAAKo2F,cAAcrhF,IAEnB/U,KAAK87G,YAAY/mG,EAGrB,IAAIg8D,IACAh8D,IAAKA,EACLy/D,IAAKA,EACLxjE,KAAMA,EACNggE,KAAM,GAAI/wE,MAAKupB,YAAYxY,GAC3B9E,MAAO,GAAI2c,GAAO4vD,MAAM,EAAG,EAAG,EAAGznE,EAAKrK,MAAOqK,EAAKpK,OAAQmO,GAC1D67D,UAAW,GAAI/nD,GAAOyvD,UAS1B,OANAvH,GAAIH,UAAU4H,SAAS,GAAI3vD,GAAO4vD,MAAM,EAAG,EAAG,EAAGznE,EAAKrK,MAAOqK,EAAKpK,OAAQ4tE,IAE1Ex0E,KAAK06G,OAAOvwF,MAAMpV,GAAOg8D,EAEzB/wE,KAAK+7G,YAAYvnC,EAAKzD,GAEfA,GAaX4qC,gBAAiB,WAEb,GAAI5qC,GAAM,GAAItgE,MAEdsgE,GAAIrgE,IAAM,wKAEV,IAAI+mB,GAAMz3B,KAAK45E,SAAS,YAAa,KAAM7I,EAG3Ct5C,GAAIu5C,KAAK3kE,YAAa,EAEtBpM,KAAK8O,aAAwB,UAAI,GAAI9O,MAAKuL,QAAQisB,EAAIu5C,OAa1D4qC,gBAAiB,WAEb,GAAI7qC,GAAM,GAAItgE,MAEdsgE,GAAIrgE,IAAM,4WAEV,IAAI+mB,GAAMz3B,KAAK45E,SAAS,YAAa,KAAM7I,EAE3C9wE,MAAK8O,aAAwB,UAAI,GAAI9O,MAAKuL,QAAQisB,EAAIu5C,OAc1DgrC,SAAU,SAAUjnG,EAAKy/D,EAAKxjE,EAAM0uC,EAAUu8D,GAEzBvyG,SAAbg2C,IAA0BA,GAAW,EAAMu8D,GAAW,GACzCvyG,SAAbuyG,IAA0Bv8D,GAAW,EAAOu8D,GAAW,EAE3D,IAAIC,IAAU,CAEVD,KAEAC,GAAU,GAGdl8G,KAAK06G,OAAOrxE,MAAMt0B,IACdy/D,IAAKA,EACLxjE,KAAMA,EACNmrG,YAAY,EACZD,QAASA,EACTx8D,SAAUA,EACVu8D,SAAUA,EACV50D,OAAQrnD,KAAKE,KAAKmpC,MAAM+yE,aAG5Bp8G,KAAK+7G,YAAYvnC,EAAKx0E,KAAK06G,OAAOrxE,MAAMt0B,KAY5CsnG,QAAS,SAAUtnG,EAAKy/D,EAAKxjE,GAEzBhR,KAAK06G,OAAOhoC,KAAK39D,IAASy/D,IAAKA,EAAKxjE,KAAMA,GAE1ChR,KAAK+7G,YAAYvnC,EAAKx0E,KAAK06G,OAAOhoC,KAAK39D,KAa3CunG,eAAgB,SAAUvnG,EAAKy/D,EAAKilC,EAAUjjG,GAE1CxW,KAAK06G,OAAOjxE,QAAQ10B,IAASy/D,IAAKA,EAAKxjE,KAAMyoG,EAAUjjG,OAAQA,GAE/DxW,KAAK+7G,YAAYvnC,EAAKx0E,KAAK06G,OAAOjxE,QAAQ10B,KAa9CwnG,WAAY,SAAUxnG,EAAKy/D,EAAKgoC,EAAShmG,GAErCxW,KAAK06G,OAAOzmC,QAAQl/D,IAASy/D,IAAKA,EAAKxjE,KAAMwrG,EAAShmG,OAAQA,GAE9DxW,KAAK+7G,YAAYvnC,EAAKx0E,KAAK06G,OAAOzmC,QAAQl/D,KAW9C0nG,UAAW,SAAU1nG,EAAK2nG,GAEtB18G,KAAK06G,OAAOC,OAAO5lG,GAAO2nG,GAa9BhoC,cAAe,SAAU3/D,EAAK0/D,EAAY7D,GAYtC,MAVA6D,GAAW1/D,IAAMA,EAECrL,SAAdknE,IAEAA,EAAY,GAAI/nD,GAAOyvD,UACvB1H,EAAU4H,SAAS/D,EAAW8D,eAGlCv4E,KAAK06G,OAAOjmC,WAAW1/D,IAAS/D,KAAMyjE,EAAY7D,UAAWA,GAEtD6D,GAgBXkoC,cAAe,SAAU5nG,EAAKy/D,EAAKxjE,EAAM4rG,EAAWC,EAAWlpC,EAAUC,GAErE,GAAIn8C,IACA+8C,IAAKA,EACLxjE,KAAMA,EACNsiE,KAAM,KACNtC,KAAM,GAAI/wE,MAAKupB,YAAYxY,GAGdtH,UAAbiqE,IAA0BA,EAAW,GACxBjqE,SAAbkqE,IAA0BA,EAAW,GAEvB,SAAdipC,EAEAplF,EAAI67C,KAAOzqD,EAAOi0F,aAAaC,eAAeH,EAAWnlF,EAAIu5C,KAAM2C,EAAUC,GAI7En8C,EAAI67C,KAAOzqD,EAAOi0F,aAAaE,cAAcJ,EAAWnlF,EAAIu5C,KAAM2C,EAAUC,GAGhF5zE,KAAK06G,OAAOE,WAAW7lG,GAAO0iB,EAE9Bz3B,KAAK+7G,YAAYvnC,EAAK/8C,IAY1BwlF,QAAS,SAAUloG,EAAKy/D,EAAKxjE,GAEzBhR,KAAK06G,OAAOhB,KAAK3kG,IAASy/D,IAAKA,EAAKxjE,KAAMA,GAE1ChR,KAAK+7G,YAAYvnC,EAAKx0E,KAAK06G,OAAOhB,KAAK3kG,KAY3CmoG,OAAQ,SAAUnoG,EAAKy/D,EAAKxjE,GAExBhR,KAAK06G,OAAOL,IAAItlG,IAASy/D,IAAKA,EAAKxjE,KAAMA,GAEzChR,KAAK+7G,YAAYvnC,EAAKx0E,KAAK06G,OAAOL,IAAItlG,KAa1CooG,SAAU,SAAUpoG,EAAKy/D,EAAKxjE,EAAMosG,GAEhCp9G,KAAK06G,OAAOnmC,MAAMx/D,IAASy/D,IAAKA,EAAKxjE,KAAMA,EAAMosG,OAAQA,EAAQ/1D,QAAQ,GAEzErnD,KAAK+7G,YAAYvnC,EAAKx0E,KAAK06G,OAAOnmC,MAAMx/D,KAY5CsoG,UAAW,SAAUtoG,EAAKy/D,EAAKxjE,GAE3BhR,KAAK06G,OAAO7uG,OAAOkJ,IAASy/D,IAAKA,EAAKxjE,KAAMA,GAE5ChR,KAAK+7G,YAAYvnC,EAAKx0E,KAAK06G,OAAO7uG,OAAOkJ,KAW7Cu/D,iBAAkB,SAAUv/D,EAAKjN,GAE7B9H,KAAK06G,OAAOj0G,cAAcsO,IAASjN,QAASA,EAASoE,MAAO,GAAI2c,GAAO4vD,MAAM,EAAG,EAAG,EAAG3wE,EAAQnB,MAAOmB,EAAQlB,OAAQ,GAAI,MAiB7H02G,eAAgB,SAAUvoG,EAAKy/D,EAAKxjE,EAAMqf,EAAYC,EAAa8oF,EAAUC,EAAQC,GAEhE5vG,SAAb0vG,IAA0BA,EAAW,IAC1B1vG,SAAX2vG,IAAwBA,EAAS,GACrB3vG,SAAZ4vG,IAAyBA,EAAU,EAEvC,IAAI7hF,IACA1iB,IAAKA,EACLy/D,IAAKA,EACLxjE,KAAMA,EACNqf,WAAYA,EACZC,YAAaA,EACb+oF,OAAQA,EACRC,QAASA,EACTtoC,KAAM,GAAI/wE,MAAKupB,YAAYxY,GAC3B4/D,UAAW/nD,EAAOqwF,gBAAgBC,YAAYn5G,KAAKE,KAAM8Q,EAAMqf,EAAYC,EAAa8oF,EAAUC,EAAQC,GAG9Gt5G,MAAK06G,OAAOvwF,MAAMpV,GAAO0iB,EAEzBz3B,KAAK+7G,YAAYvnC,EAAK/8C,IAc1B8lF,gBAAiB,SAAUxoG,EAAKy/D,EAAKxjE,EAAM4rG,EAAWpmG,GAElD,GAAIihB,IACA1iB,IAAKA,EACLy/D,IAAKA,EACLxjE,KAAMA,EACNggE,KAAM,GAAI/wE,MAAKupB,YAAYxY,GAG3BwF,KAAWqS,EAAO81B,OAAO6+D,2BAEzB/lF,EAAIm5C,UAAY/nD,EAAOqwF,gBAAgBkB,QAAQp6G,KAAKE,KAAM08G,EAAW7nG,GAEhEyB,IAAWqS,EAAO81B,OAAO8+D,yBAE9BhmF,EAAIm5C,UAAY/nD,EAAOqwF,gBAAgBa,cAAc/5G,KAAKE,KAAM08G,EAAW7nG,GAKvEpU,MAAM2R,QAAQsqG,EAAU1jB,QAExBzhE,EAAIm5C,UAAY/nD,EAAOqwF,gBAAgBO,SAASz5G,KAAKE,KAAM08G,EAAW7nG,GAItE0iB,EAAIm5C,UAAY/nD,EAAOqwF,gBAAgBiB,aAAan6G,KAAKE,KAAM08G,EAAW7nG,GAIlF/U,KAAK06G,OAAOvwF,MAAMpV,GAAO0iB,EAEzBz3B,KAAK+7G,YAAYvnC,EAAK/8C,IAc1BimF,YAAa,SAAU3oG,GAEnB,GAAIm6B,GAAQlvC,KAERqpC,EAAQrpC,KAAK29G,SAAS5oG,EAEtBs0B,KAEAA,EAAMr4B,KAAKN,IAAM24B,EAAMmrC,IAEvBnrC,EAAMr4B,KAAKoiC,iBAAiB,iBAAkB,WAC1C,MAAOlE,GAAM0uE,oBAAoB7oG,KAClC,GAEHs0B,EAAMr4B,KAAKo4B,SAWnBw0E,oBAAqB,SAAU7oG,GAE3B,GAAIs0B,GAAQrpC,KAAK29G,SAAS5oG,EAEtBs0B,KAEAA,EAAMge,QAAS,EACfrnD,KAAKg7G,cAAc9yE,SAASnzB,KAWpC8oG,YAAa,SAAU9oG,EAAKmkC,EAAUz1C,GAElC,GAAI4lC,GAAQrpC,KAAK29G,SAAS5oG,EAEtBs0B,KAEAA,EAAM6P,GAAYz1C,IAY1Bq6G,aAAc,SAAU/oG,EAAK/D,GAEzB,GAAIq4B,GAAQrpC,KAAK29G,SAAS5oG,EAE1Bs0B,GAAMr4B,KAAOA,EACbq4B,EAAM6yE,SAAU,EAChB7yE,EAAM8yE,YAAa,GAWvB4B,eAAgB,SAAUhpG,GAEtB,GAAIs0B,GAAQrpC,KAAKg/F,QAAQjqF,EAAK8T,EAAO61B,MAAMy8D,MAAO,iBAElD,OAAI9xE,GAEOA,EAAM6yE,QAFjB,QAeJ8B,aAAc,SAAUjpG,GAEpB,GAAIs0B,GAAQrpC,KAAKg/F,QAAQjqF,EAAK8T,EAAO61B,MAAMy8D,MAAO,iBAElD,OAAI9xE,GAEQA,EAAM6yE,UAAYl8G,KAAKE,KAAKmpC,MAAM+yE,YAF9C,QAmBJ6B,SAAU,SAAU/0E,EAAOn0B,GAEvB,MAAI/U,MAAKi7G,UAAU/xE,GAAOn0B,IAEf,GAGJ,GAcXmpG,SAAU,SAAU1pC,GAEhB,MAAIx0E,MAAK66G,QAAQ76G,KAAK+7G,YAAYvnC,KAEvB,GAGJ,GAWX2pC,eAAgB,SAAUppG,GAEtB,MAAO/U,MAAKi+G,SAASp1F,EAAO61B,MAAMxsB,OAAQnd,IAW9CqhF,cAAe,SAAUrhF,GAErB,MAAO/U,MAAKi+G,SAASp1F,EAAO61B,MAAM9rB,MAAO7d,IAW7CqpG,gBAAiB,SAAUrpG,GAEvB,MAAO/U,MAAKi+G,SAASp1F,EAAO61B,MAAMw8D,QAASnmG,IAW/CspG,cAAe,SAAUtpG,GAErB,MAAO/U,MAAKi+G,SAASp1F,EAAO61B,MAAMy8D,MAAOpmG,IAW7CupG,aAAc,SAAUvpG,GAEpB,MAAO/U,MAAKi+G,SAASp1F,EAAO61B,MAAM5rB,KAAM/d,IAW5CwpG,gBAAiB,SAAUxpG,GAEvB,MAAO/U,MAAKi+G,SAASp1F,EAAO61B,MAAM08D,QAASrmG,IAW/CypG,gBAAiB,SAAUzpG,GAEvB,MAAO/U,MAAKi+G,SAASp1F,EAAO61B,MAAMvrB,QAASpe,IAW/C0pG,eAAgB,SAAU1pG,GAEtB,MAAO/U,MAAKi+G,SAASp1F,EAAO61B,MAAM28D,OAAQtmG,IAW9C2pG,mBAAoB,SAAU3pG,GAE1B,MAAO/U,MAAKi+G,SAASp1F,EAAO61B,MAAMnrB,WAAYxe,IAWlD4pG,mBAAoB,SAAU5pG,GAE1B,MAAO/U,MAAKi+G,SAASp1F,EAAO61B,MAAM48D,WAAYvmG,IAWlD6pG,aAAc,SAAU7pG,GAEpB,MAAO/U,MAAKi+G,SAASp1F,EAAO61B,MAAM68D,KAAMxmG,IAW5C8pG,YAAa,SAAU9pG,GAEnB,MAAO/U,MAAKi+G,SAASp1F,EAAO61B,MAAM88D,IAAKzmG,IAW3C+pG,cAAe,SAAU/pG,GAErB,MAAO/U,MAAKi+G,SAASp1F,EAAO61B,MAAMpqB,MAAOvf,IAW7CgqG,eAAgB,SAAUhqG,GAEtB,MAAO/U,MAAKi+G,SAASp1F,EAAO61B,MAAM+8D,OAAQ1mG,IAW9CiqG,sBAAuB,SAAUjqG,GAE7B,MAAO/U,MAAKi+G,SAASp1F,EAAO61B,MAAMg9D,eAAgB3mG,IAqBtDiqF,QAAS,SAAUjqF,EAAKm0B,EAAOyQ,EAAQT,GAEnC,MAAKl5C,MAAKi+G,SAAS/0E,EAAOn0B,GASLrL,SAAbwvC,EAEOl5C,KAAKi7G,UAAU/xE,GAAOn0B,GAItB/U,KAAKi7G,UAAU/xE,GAAOn0B,GAAKmkC,IAblCS,GAEA7mC,QAAQwkB,KAAK,gBAAkBqiB,EAAS,UAAY5kC,EAAM,yBAe3D,OAeX+W,UAAW,SAAU/W,GAEjB,MAAO/U,MAAKg/F,QAAQjqF,EAAK8T,EAAO61B,MAAMxsB,OAAQ,YAAa,WAoB/DtG,SAAU,SAAU7W,EAAKkqG,IAETv1G,SAARqL,GAA6B,OAARA,KAErBA,EAAM,aAGGrL,SAATu1G,IAAsBA,GAAO,EAEjC,IAAIluC,GAAM/wE,KAAKg/F,QAAQjqF,EAAK8T,EAAO61B,MAAM9rB,MAAO,WAOhD,OALY,QAARm+C,IAEAA,EAAM/wE,KAAKg/F,QAAQ,YAAan2E,EAAO61B,MAAM9rB,MAAO,aAGpDqsF,EAEOluC,EAIAA,EAAI//D,MAcnBkuG,gBAAiB,SAAUnqG,GAEvB,MAAO/U,MAAKg/F,QAAQjqF,EAAK8T,EAAO61B,MAAMw8D,QAAS,kBAAmB,UAetEyC,SAAU,SAAU5oG,GAEhB,MAAO/U,MAAKg/F,QAAQjqF,EAAK8T,EAAO61B,MAAMy8D,MAAO,aAejDgE,aAAc,SAAUpqG,GAEpB,MAAO/U,MAAKg/F,QAAQjqF,EAAK8T,EAAO61B,MAAMy8D,MAAO,eAAgB,SAejEiE,QAAS,SAAUrqG,GAEf,MAAO/U,MAAKg/F,QAAQjqF,EAAK8T,EAAO61B,MAAM5rB,KAAM,UAAW,SAmB3DusF,eAAgB,SAAUtqG,EAAKumC,EAAQgkE,GAEnC,GAAItuG,GAAOhR,KAAKg/F,QAAQjqF,EAAK8T,EAAO61B,MAAM08D,QAAS,iBAAkB,OAErE,IAAa,OAATpqG,GAA4BtH,SAAX4xC,GAAmC,OAAXA,EAEzC,MAAOtqC,EAIP,IAAIA,EAAKsqC,GACT,CACI,GAAIikE,GAAWvuG,EAAKsqC,EAGpB,KAAIikE,IAAYD,EAmBZ,MAAOC,EAjBP,KAAK,GAAIC,KAAWD,GAMhB,GAHAC,EAAUD,EAASC,GAGfA,EAAQF,aAAeA,EAEvB,MAAOE,EAKf1sG,SAAQwkB,KAAK,kEAAoEgoF,EAAa,OAASvqG,EAAM,SASjHjC,SAAQwkB,KAAK,qDAAuDviB,EAAM,MAAQumC,EAAS,IAInG,OAAO,OAeXmkE,eAAgB,SAAU1qG,GAEtB,MAAO/U,MAAKg/F,QAAQjqF,EAAK8T,EAAO61B,MAAMvrB,QAAS,mBAenDusF,UAAW,SAAU3qG,GAEjB,MAAO/U,MAAKg/F,QAAQjqF,EAAK8T,EAAO61B,MAAM28D,OAAQ,cAelDsE,cAAe,SAAU5qG,GAErB,MAAO/U,MAAKg/F,QAAQjqF,EAAK8T,EAAO61B,MAAMnrB,WAAY,gBAAiB,SAevEwhE,cAAe,SAAUhgF,GAErB,MAAO/U,MAAKg/F,QAAQjqF,EAAK8T,EAAO61B,MAAM48D,WAAY,kBAmBtDsE,QAAS,SAAU7qG,EAAK8kB,GAEpB,GAAI7oB,GAAOhR,KAAKg/F,QAAQjqF,EAAK8T,EAAO61B,MAAM68D,KAAM,UAAW,OAE3D,OAAIvqG,GAEI6oB,EAEOhR,EAAO0O,MAAMiC,QAAO,EAAM74B,MAAM2R,QAAQtB,SAAiBA,GAIzDA,EAKJ,MAgBf6uG,OAAQ,SAAU9qG,GAEd,MAAO/U,MAAKg/F,QAAQjqF,EAAK8T,EAAO61B,MAAM88D,IAAK,SAAU,SAezDsE,SAAU,SAAU/qG,GAEhB,MAAO/U,MAAKg/F,QAAQjqF,EAAK8T,EAAO61B,MAAMpqB,MAAO,aAejDyrF,UAAW,SAAUhrG,GAEjB,MAAO/U,MAAKg/F,QAAQjqF,EAAK8T,EAAO61B,MAAM+8D,OAAQ,YAAa,SAe/DuE,iBAAkB,SAAUjrG,GAExB,MAAO/U,MAAKg/F,QAAQjqF,EAAK8T,EAAO61B,MAAMg9D,eAAgB,qBAgB1DuE,eAAgB,SAAUlrG,EAAKm0B,GAI3B,MAFcx/B,UAAVw/B,IAAuBA,EAAQrgB,EAAO61B,MAAM9rB,OAEzC5yB,KAAKg/F,QAAQjqF,EAAKm0B,EAAO,iBAAkB,SAYtDwtE,SAAU,SAAU3hG,EAAKm0B,GAIrB,MAFcx/B,UAAVw/B,IAAuBA,EAAQrgB,EAAO61B,MAAM9rB,OAEzC5yB,KAAKg/F,QAAQjqF,EAAKm0B,EAAO,WAAY,UAYhDg3E,cAAe,SAAUnrG,EAAKm0B,GAE1B,GAAIl4B,GAAOhR,KAAK2wE,aAAa57D,EAAKm0B,EAElC,OAAIl4B,GAEOA,EAAK0e,MAIL,GAiBfihD,aAAc,SAAU57D,EAAKm0B,GAIzB,MAFcx/B,UAAVw/B,IAAuBA,EAAQrgB,EAAO61B,MAAM9rB,OAEzC5yB,KAAKg/F,QAAQjqF,EAAKm0B,EAAO,eAAgB,cAYpDunC,aAAc,SAAU17D,EAAKm0B,GAIzB,MAFcx/B,UAAVw/B,IAAuBA,EAAQrgB,EAAO61B,MAAM9rB,OAEM,OAA9C5yB,KAAKg/F,QAAQjqF,EAAKm0B,EAAO,GAAI,cAYzC+tD,gBAAiB,SAAUliF,EAAK67D,EAAW1nC,GAEzBx/B,SAAVw/B,IAAuBA,EAAQrgB,EAAO61B,MAAM9rB,OAE5C5yB,KAAKi7G,UAAU/xE,GAAOn0B,KAEtB/U,KAAKi7G,UAAU/xE,GAAOn0B,GAAK67D,UAAYA,IAc/CuvC,gBAAiB,SAAUprG,EAAKpM,EAAOugC,GAEnC,GAAIl4B,GAAOhR,KAAK2wE,aAAa57D,EAAKm0B,EAElC,OAAIl4B,GAEOA,EAAK0lG,SAAS/tG,GAId,MAcfguG,eAAgB,SAAU5hG,EAAK2kB,EAAMwP,GAEjC,GAAIl4B,GAAOhR,KAAK2wE,aAAa57D,EAAKm0B,EAElC,OAAIl4B,GAEOA,EAAK2lG,eAAej9E,GAIpB,MAgBf0mF,eAAgB,SAAUrrG,GAEtB,GAAI9U,KAAK8O,aAAagG,GAElB,MAAO9U,MAAK8O,aAAagG,EAIzB,IAAIi8D,GAAOhxE,KAAKqgH,mBAAmBtrG,EAEnC,OAAIi8D,GAEO,GAAI/wE,MAAKuL,QAAQwlE,GAIjB,MAgBnBqvC,mBAAoB,SAAUtrG,GAE1B,GAAI9U,KAAKqpB,iBAAiBvU,GAEtB,MAAO9U,MAAKqpB,iBAAiBvU,EAI7B,IAAIg8D,GAAM/wE,KAAKg/F,QAAQjqF,EAAK8T,EAAO61B,MAAM9rB,MAAO,qBAEhD,OAAY,QAARm+C,EAEOA,EAAIC,KAIJ,MAenBsvC,OAAQ,SAAU9rC,GAEd,GAAIA,GAAMx0E,KAAK+7G,YAAYvnC,EAE3B,OAAIA,GAEOx0E,KAAK66G,QAAQrmC,IAIpB1hE,QAAQwkB,KAAK,sCAAwCk9C,EAAO,uCACrD,OAYf+rC,QAAS,SAAUr3E,GAEDx/B,SAAVw/B,IAAuBA,EAAQrgB,EAAO61B,MAAM9rB,MAEhD,IAAIiI,KAEJ,IAAI76B,KAAKi7G,UAAU/xE,GAEf,IAAK,GAAIn0B,KAAO/U,MAAKi7G,UAAU/xE,GAEf,cAARn0B,GAA+B,cAARA,GAEvB8lB,EAAI92B,KAAKgR,EAKrB,OAAO8lB,IAiBX2lF,aAAc,SAAUzrG,SAEb/U,MAAK06G,OAAO9pG,OAAOmE,IAgB9B+mG,YAAa,SAAU/mG,EAAK0rG,GAED/2G,SAAnB+2G,IAAgCA,GAAiB,EAErD,IAAI1vC,GAAM/wE,KAAK4rB,SAAS7W,GAAK,EAEzB0rG,IAAkB1vC,EAAIC,MAEtBD,EAAIC,KAAKjuE,gBAGN/C,MAAK06G,OAAOvwF,MAAMpV,IAiB7B2rG,YAAa,SAAU3rG,SAEZ/U,MAAK06G,OAAOrxE,MAAMt0B,IAa7B4rG,WAAY,SAAU5rG,SAEX/U,MAAK06G,OAAOhoC,KAAK39D,IAa5B6rG,cAAe,SAAU7rG,SAEd/U,MAAK06G,OAAOjxE,QAAQ10B,IAa/B8rG,cAAe,SAAU9rG,SAEd/U,MAAK06G,OAAOzmC,QAAQl/D,IAa/B+rG,aAAc,SAAU/rG,SAEb/U,MAAK06G,OAAOC,OAAO5lG,IAa9BgsG,iBAAkB,SAAUhsG,SAEjB/U,MAAK06G,OAAOjmC,WAAW1/D,IAalCisG,iBAAkB,SAAUjsG,SAEjB/U,MAAK06G,OAAOE,WAAW7lG,IAalCksG,WAAY,SAAUlsG,SAEX/U,MAAK06G,OAAOhB,KAAK3kG,IAa5BmsG,UAAW,SAAUnsG,SAEV/U,MAAK06G,OAAOL,IAAItlG,IAa3BosG,YAAa,SAAUpsG,SAEZ/U,MAAK06G,OAAOnmC,MAAMx/D,IAa7BqsG,aAAc,SAAUrsG,SAEb/U,MAAK06G,OAAO7uG,OAAOkJ,IAa9BssG,oBAAqB,SAAUtsG,SAEpB/U,MAAK06G,OAAOj0G,cAAcsO,IAarCusG,kBAAmB,SAAUvsG,SAElB/U,MAAK06G,OAAOvB,YAAYpkG,IAanCwsG,mBAAoB,SAAUxsG,SAEnB/U,MAAK06G,OAAO8G,MAAMzsG,IAW7BmrC,gBAAiB,WAEb,IAAK,GAAInrC,KAAO/U,MAAK06G,OAAOvwF,MAExBnqB,KAAK06G,OAAOvwF,MAAMpV,GAAKi8D,KAAKh7D,gBAepC+lG,YAAa,SAAUvnC,EAAKxjE,GAExB,MAAKhR,MAAKy6G,gBAKVz6G,KAAK86G,aAAapqG,IAAM1Q,KAAKE,KAAKkpC,KAAKq4E,QAAUjtC,EAEjDx0E,KAAK+6G,SAAW/6G,KAAK86G,aAAapqG,IAGlC1Q,KAAK86G,aAAapqG,IAAM,GAGpBM,IAEAhR,KAAK66G,QAAQ76G,KAAK+6G,UAAY/pG,GAG3BhR,KAAK+6G,UAhBD,MA0Bfh4G,QAAS,WAEL,IAAK,GAAIE,GAAI,EAAGA,EAAIjD,KAAKi7G,UAAU/3G,OAAQD,IAC3C,CACI,GAAIimC,GAAQlpC,KAAKi7G,UAAUh4G,EAE3B,KAAK,GAAI8R,KAAOm0B,GAEA,cAARn0B,GAA+B,cAARA,IAEnBm0B,EAAMn0B,GAAc,SAEpBm0B,EAAMn0B,GAAKhS,gBAGRmmC,GAAMn0B,IAKzB/U,KAAK66G,QAAU,KACf76G,KAAK86G,aAAe,KACpB96G,KAAK+6G,SAAW,OAMxBlyF,EAAO61B,MAAM77C,UAAUC,YAAc+lB,EAAO61B,MAuB5C71B,EAAO81B,OAAS,SAAUz+C,GAOtBF,KAAKE,KAAOA,EAOZF,KAAKkpC,MAAQhpC,EAAKgpC,MAOlBlpC,KAAKyjD,aAAc,EAOnBzjD,KAAK0hH,WAAY,EAOjB1hH,KAAKgM,WAAY,EAUjBhM,KAAK2hH,cAAgB,KAOrB3hH,KAAKoqB,aAAc,EASnBpqB,KAAKyhH,QAAU,GAoBfzhH,KAAKojF,KAAO,GAQZpjF,KAAK4hH,YAAc,GAAI/4F,GAAOuc,OAO9BplC,KAAK6hH,eAAiB,GAAIh5F,GAAOuc,OAWjCplC,KAAK8hH,eAAiB,GAAIj5F,GAAOuc,OAUjCplC,KAAK+hH,YAAc,GAAIl5F,GAAOuc,OAa9BplC,KAAKgiH,eAAiB,GAAIn5F,GAAOuc,OAWjCplC,KAAKiiH,YAAc,GAAIp5F,GAAOuc,OAU9BplC,KAAKkiH,mBAAoB,EAMzBliH,KAAKmiH,4BAA6B,EASlCniH,KAAKoiH,gBAAiB,EAUtBpiH,KAAKqiH,qBAAuB,EAM5BriH,KAAKsiH,oBAAsB,EAU3BtiH,KAAKuiH,aAcLviH,KAAKwiH,gBAQLxiH,KAAKyiH,gBAAkB,EASvBziH,KAAK0iH,kBAAmB,EAOxB1iH,KAAK2iH,gBAAkB,EAOvB3iH,KAAK4iH,gBAAkB,EAOvB5iH,KAAK6iH,iBAAmB,EAOxB7iH,KAAK8iH,iBAAmB,GAQ5Bj6F,EAAO81B,OAAOokE,yBAA2B,EAMzCl6F,EAAO81B,OAAOqkE,wBAA0B,EAMxCn6F,EAAO81B,OAAO6+D,2BAA6B,EAM3C30F,EAAO81B,OAAOskE,yBAA2B,EAMzCp6F,EAAO81B,OAAOukE,oBAAsB,EAMpCr6F,EAAO81B,OAAO8+D,yBAA2B,EAEzC50F,EAAO81B,OAAO97C,WAcVsgH,iBAAkB,SAAUzgG,EAAQ4kB,GAEhCA,EAAYA,GAAa,EAEzBtnC,KAAK2hH,eAAkBj/F,OAAQA,EAAQ4kB,UAAWA,EAAW3gC,MAAO+b,EAAO/b,MAAOC,OAAQ8b,EAAO9b,OAAQ44B,KAAM,MAE7F,IAAd8H,EAGAtnC,KAAK2hH,cAAcniF,KAAO,GAAI3W,GAAOrmB,UAAU,EAAG,EAAG,EAAGkgB,EAAO9b,QAK/D5G,KAAK2hH,cAAcniF,KAAO,GAAI3W,GAAOrmB,UAAU,EAAG,EAAGkgB,EAAO/b,MAAO,GAGvE+b,EAAOtV,KAAKpN,KAAK2hH,cAAcniF,MAE/B9c,EAAOjhB,SAAU,GAYrBsG,OAAQ,WAEA/H,KAAK2hH,eAAiB3hH,KAAK2hH,cAAc/6G,SAAW5G,KAAK2hH,cAAcj/F,OAAO9b,SAE9E5G,KAAK2hH,cAAcniF,KAAK54B,OAAS5G,KAAK2hH,cAAcj/F,OAAO9b,SAenEw8G,eAAgB,SAAUhuG,EAAML,GAE5B,MAAO/U,MAAKqjH,cAAcjuG,EAAML,GAAO,IAe3CsuG,cAAe,SAAUjuG,EAAML,GAI3B,IAAK,GAFDuuG,GAAY,GAEPrgH,EAAI,EAAGA,EAAIjD,KAAKuiH,UAAUr/G,OAAQD,IAC3C,CACI,GAAI83F,GAAO/6F,KAAKuiH,UAAUt/G,EAE1B,IAAI83F,EAAK3lF,OAASA,GAAQ2lF,EAAKhmF,MAAQA,IAEnCuuG,EAAYrgH,GAGP83F,EAAKwoB,SAAWxoB,EAAKyoB,SAEtB,MAKZ,MAAOF,IAeXG,SAAU,SAAUruG,EAAML,GAEtB,GAAI2uG,GAAY1jH,KAAKqjH,cAAcjuG,EAAML,EAEzC,OAAI2uG,GAAY,IAEH/6G,MAAO+6G,EAAW3oB,KAAM/6F,KAAKuiH,UAAUmB,KAG7C,GAgBX56E,MAAO,SAAUyc,EAAM+vD,GAEC5rG,SAAhB4rG,IAA6BA,GAAc,GAE3Ct1G,KAAKyjD,cAKL8B,IAEAvlD,KAAK2hH,cAAgB,MAGzB3hH,KAAK0hH,WAAY,EAEjB1hH,KAAKyiH,gBAAkB,EACvBziH,KAAKuiH,UAAUr/G,OAAS,EACxBlD,KAAKwiH,aAAat/G,OAAS,EAE3BlD,KAAK0iH,kBAAmB,EACxB1iH,KAAK4iH,gBAAkB,EACvB5iH,KAAK2iH,gBAAkB,EACvB3iH,KAAK6iH,iBAAmB,EACxB7iH,KAAK8iH,iBAAmB,EAEpBxN,IAEAt1G,KAAK4hH,YAAYj1E,YACjB3sC,KAAK6hH,eAAel1E,YACpB3sC,KAAK8hH,eAAen1E,YACpB3sC,KAAK+hH,YAAYp1E,YACjB3sC,KAAKgiH,eAAer1E,YACpB3sC,KAAKiiH,YAAYt1E,eAkBzBg3E,cAAe,SAAUvuG,EAAML,EAAKy/D,EAAK0f,EAAY0vB,EAAWC,GAI5D,GAFkBn6G,SAAdk6G,IAA2BA,GAAY,GAE/Bl6G,SAARqL,GAA6B,KAARA,EAGrB,MADAjC,SAAQwkB,KAAK,kDAAoDliB,GAC1DpV,IAGX,IAAY0J,SAAR8qE,GAA6B,OAARA,EACzB,CACI,IAAIqvC,EAOA,MADA/wG,SAAQwkB,KAAK,8CAAgDliB,EAAO,SAAWL,GACxE/U,IALPw0E,GAAMz/D,EAAM8uG,EASpB,GAAI9oB,IACA3lF,KAAMA,EACNL,IAAKA,EACLquE,KAAMpjF,KAAKojF,KACX5O,IAAKA,EACLsvC,UAAW9jH,KAAKsiH,oBAAsB,EACtCtxG,KAAM,KACNwyG,SAAS,EACTD,QAAQ,EACRtkB,OAAO,EAGX,IAAI/K,EAEA,IAAK,GAAIx8D,KAAQw8D,GAEb6G,EAAKrjE,GAAQw8D,EAAWx8D,EAIhC,IAAIgsF,GAAY1jH,KAAKqjH,cAAcjuG,EAAML,EAEzC,IAAI6uG,GAAaF,EAAY,GAC7B,CACI,GAAIK,GAAc/jH,KAAKuiH,UAAUmB,EAE5BK,GAAYP,SAAYO,EAAYR,QAMrCvjH,KAAKuiH,UAAUx+G,KAAKg3F,GACpB/6F,KAAK4iH,mBALL5iH,KAAKuiH,UAAUmB,GAAa3oB,MAQb,KAAd2oB,IAEL1jH,KAAKuiH,UAAUx+G,KAAKg3F,GACpB/6F,KAAK4iH,kBAGT,OAAO5iH,OAcXgkH,kBAAmB,SAAU5uG,EAAML,EAAKy/D,EAAK0f,GAEzC,MAAOl0F,MAAK2jH,cAAcvuG,EAAML,EAAKy/D,EAAK0f,GAAY,IA0B1D+vB,KAAM,SAAUlvG,EAAKy/D,EAAKxjE,EAAM+6B,GAM5B,GAJYriC,SAAR8qE,IAAqBA,EAAM,MAClB9qE,SAATsH,IAAsBA,EAAO,MACTtH,SAApBqiC,IAAiCA,EAAkB,OAElDyoC,IAAQxjE,EAIT,MAFA8B,SAAQwkB,KAAK,qEAENt3B,IAGX,IAAIikH,IACA7uG,KAAM,WACNL,IAAKA,EACLy/D,IAAKA,EACL4O,KAAMpjF,KAAKojF,KACX0gC,WAAW,EACX9yG,KAAM,KACNwyG,SAAS,EACTD,QAAQ,EACRtkB,OAAO,EACPlzD,gBAAiBA,EAIjB/6B,KAEoB,gBAATA,KAEPA,EAAOuqG,KAAKv5E,MAAMhxB,IAGtBizG,EAAKjzG,KAAOA,MAGZizG,EAAKV,QAAS,EAKlB,KAAK,GAAItgH,GAAI,EAAGA,EAAIjD,KAAKuiH,UAAUr/G,OAAS,EAAGD,IAC/C,CACI,GAAI83F,GAAO/6F,KAAKuiH,UAAUt/G,EAE1B,KAAK83F,IAAUA,EAAKwoB,SAAWxoB,EAAKyoB,SAAyB,aAAdzoB,EAAK3lF,KACpD,CACIpV,KAAKuiH,UAAU15G,OAAO5F,EAAG,EAAGghH,GAC5BjkH,KAAK2iH,iBACL,QAIR,MAAO3iH,OA2BXmqB,MAAO,SAAUpV,EAAKy/D,EAAKovC,GAEvB,MAAO5jH,MAAK2jH,cAAc,QAAS5uG,EAAKy/D,EAAK9qE,OAAWk6G,EAAW,SA4BvEM,OAAQ,SAAU/pF,EAAMgqF,GAEpB,GAAIxjH,MAAM2R,QAAQ6xG,GAEd,IAAK,GAAIlhH,GAAI,EAAGA,EAAIk3B,EAAKj3B,OAAQD,IAE7BjD,KAAKmqB,MAAMgQ,EAAKl3B,GAAIkhH,EAAKlhH,QAK7B,KAAK,GAAIA,GAAI,EAAGA,EAAIk3B,EAAKj3B,OAAQD,IAE7BjD,KAAKmqB,MAAMgQ,EAAKl3B,GAIxB,OAAOjD,OAyBX0yE,KAAM,SAAU39D,EAAKy/D,EAAKovC,GAEtB,MAAO5jH,MAAK2jH,cAAc,OAAQ5uG,EAAKy/D,EAAK9qE,OAAWk6G,EAAW,SA0BtElK,KAAM,SAAU3kG,EAAKy/D,EAAKovC,GAEtB,MAAO5jH,MAAK2jH,cAAc,OAAQ5uG,EAAKy/D,EAAK9qE,OAAWk6G,EAAW,UAyBtE/3G,OAAQ,SAAUkJ,EAAKy/D,EAAKovC,GAExB,MAAO5jH,MAAK2jH,cAAc,SAAU5uG,EAAKy/D,EAAK9qE,OAAWk6G,EAAW,UAyBxEvJ,IAAK,SAAUtlG,EAAKy/D,EAAKovC,GAErB,MAAO5jH,MAAK2jH,cAAc,MAAO5uG,EAAKy/D,EAAK9qE,OAAWk6G,EAAW,SA6BrEQ,OAAQ,SAAUrvG,EAAKy/D,EAAKj7B,EAAUxN,GAMlC,MAJiBriC,UAAb6vC,IAA0BA,GAAW,GAErCA,KAAa,GAA6B7vC,SAApBqiC,IAAiCA,EAAkB/rC,MAEtEA,KAAK2jH,cAAc,SAAU5uG,EAAKy/D,GAAOsvC,WAAW,EAAMvqE,SAAUA,EAAUxN,gBAAiBA,IAAmB,EAAO,QA+BpI4uE,OAAQ,SAAU5lG,EAAKy/D,EAAKj7B,EAAUxN,GAOlC,MALiBriC,UAAb6vC,IAA0BA,GAAW,GAGrCA,KAAa,GAA6B7vC,SAApBqiC,IAAiCA,EAAkBwN,GAEtEv5C,KAAK2jH,cAAc,SAAU5uG,EAAKy/D,GAAOj7B,SAAUA,EAAUxN,gBAAiBA,IAAmB,EAAO,SAoCnHs4E,YAAa,SAAUtvG,EAAKy/D,EAAKnkD,EAAYC,EAAa8oF,EAAUC,EAAQC,GAMxE,MAJiB5vG,UAAb0vG,IAA0BA,EAAW,IAC1B1vG,SAAX2vG,IAAwBA,EAAS,GACrB3vG,SAAZ4vG,IAAyBA,EAAU,GAEhCt5G,KAAK2jH,cAAc,cAAe5uG,EAAKy/D,GAAOnkD,WAAYA,EAAYC,YAAaA,EAAa8oF,SAAUA,EAAUC,OAAQA,EAAQC,QAASA,IAAW,EAAO,SA6B1KjnC,MAAO,SAAUt9D,EAAKovG,EAAMG,GAExB,MAAItkH,MAAKE,KAAKmpC,MAAMk7E,QAETvkH,MAGQ0J,SAAf46G,IAA4BA,GAAa,GAEzB,gBAATH,KAEPA,GAAQA,IAGLnkH,KAAK2jH,cAAc,QAAS5uG,EAAKovG,GAAQzoG,OAAQ,KAAM4oG,WAAYA,MA4B9EhyC,YAAa,SAAUv9D,EAAKovG,EAAMK,EAASC,EAAUH,GAEjD,MAAItkH,MAAKE,KAAKmpC,MAAMk7E,QAETvkH,MAGK0J,SAAZ86G,IAAyBA,EAAU,MACtB96G,SAAb+6G,IAA0BA,EAAW,MACtB/6G,SAAf46G,IAA4BA,GAAa,GAE7CtkH,KAAKqyE,MAAMt9D,EAAKovG,EAAMG,GAElBE,EAEAxkH,KAAK05G,KAAK3kG,EAAM,cAAeyvG,GAE1BC,GAEmB,gBAAbA,KAEPA,EAAWlJ,KAAKv5E,MAAMyiF,IAG1BzkH,KAAKkpC,MAAM+zE,QAAQloG,EAAM,cAAe,GAAI0vG,IAI5C3xG,QAAQwkB,KAAK,8FAGVt3B,OAgBX0kH,YAAa,SAAU3vG,EAAKovG,EAAMK,EAASC,EAAUH,GAEjD,MAAOtkH,MAAKsyE,YAAYv9D,EAAKovG,EAAMK,EAASC,EAAUH,IAiC1D/vC,MAAO,SAAUx/D,EAAKovG,EAAMQ,EAAWC,GAqBnC,MAnBkBl7G,UAAdi7G,IAIIA,EAFA3kH,KAAKE,KAAKuzC,OAAOkoD,QAEL,aAIA,kBAILjyF,SAAXk7G,IAAwBA,GAAS,GAEjB,gBAATT,KAEPA,GAAQA,IAGLnkH,KAAK2jH,cAAc,QAAS5uG,EAAKovG,GAAQzoG,OAAQ,KAAMkpG,OAAQA,EAAQD,UAAWA,KAiC7F1wC,QAAS,SAAUl/D,EAAKy/D,EAAKxjE,EAAMwF,GAmB/B,GAjBY9M,SAAR8qE,IAAqBA,EAAM,MAClB9qE,SAATsH,IAAsBA,EAAO,MAClBtH,SAAX8M,IAAwBA,EAASqS,EAAOgoD,QAAQg0C,KAE/CrwC,GAAQxjE,IAILwjE,EAFAh+D,IAAWqS,EAAOgoD,QAAQg0C,IAEpB9vG,EAAM,OAINA,EAAM,SAKhB/D,EACJ,CACI,OAAQwF,GAGJ,IAAKqS,GAAOgoD,QAAQg0C,IAChB,KAGJ,KAAKh8F,GAAOgoD,QAAQi0C,WAEI,gBAAT9zG,KAEPA,EAAOuqG,KAAKv5E,MAAMhxB,IAK9BhR,KAAKkpC,MAAMqzE,WAAWxnG,EAAK,KAAM/D,EAAMwF,OAIvCxW,MAAK2jH,cAAc,UAAW5uG,EAAKy/D,GAAOh+D,OAAQA,GAGtD,OAAOxW,OAmCXypC,QAAS,SAAU10B,EAAKy/D,EAAKxjE,EAAMwF,GA0B/B,MAxBY9M,UAAR8qE,IAAqBA,EAAM,MAClB9qE,SAATsH,IAAsBA,EAAO,MAClBtH,SAAX8M,IAAwBA,EAASqS,EAAO8rB,QAAQowE,kBAE/CvwC,GAAQxjE,IAETwjE,EAAMz/D,EAAM,SAIZ/D,GAEoB,gBAATA,KAEPA,EAAOuqG,KAAKv5E,MAAMhxB,IAGtBhR,KAAKkpC,MAAMozE,eAAevnG,EAAK,KAAM/D,EAAMwF,IAI3CxW,KAAK2jH,cAAc,UAAW5uG,EAAKy/D,GAAOh+D,OAAQA,IAG/CxW,MA0CX46G,WAAY,SAAU7lG,EAAKiwG,EAAYC,EAAUrI,EAAWjpC,EAAUC,GAmBlE,IAjBmBlqE,SAAfs7G,GAA2C,OAAfA,KAE5BA,EAAajwG,EAAM,QAGNrL,SAAbu7G,IAA0BA,EAAW,MACvBv7G,SAAdkzG,IAA2BA,EAAY,MAE1B,OAAbqI,GAAmC,OAAdrI,IAErBqI,EAAWlwG,EAAM,QAGJrL,SAAbiqE,IAA0BA,EAAW,GACxBjqE,SAAbkqE,IAA0BA,EAAW,GAGrCqxC,EAEAjlH,KAAK2jH,cAAc,aAAc5uG,EAAKiwG,GAAcC,SAAUA,EAAUtxC,SAAUA,EAAUC,SAAUA,QAKtG,IAAyB,gBAAdgpC,GACX,CACI,GAAIlD,GAAMW,CAEV,KAEIX,EAAO6B,KAAKv5E,MAAM46E,GAEtB,MAAQrjF,GAEJ8gF,EAAMr6G,KAAKklH,SAAStI,GAGxB,IAAKvC,IAAQX,EAET,KAAM,IAAI5wG,OAAM,iDAGpB9I,MAAK2jH,cAAc,aAAc5uG,EAAKiwG,GAAcC,SAAU,KAAMrI,UAAWlD,GAAQW,EACnFwC,UAAcnD,EAAO,OAAS,MAAQ/lC,SAAUA,EAAUC,SAAUA,IAIhF,MAAO5zE,OA4CXmlH,eAAgB,SAAUpwG,EAAKiwG,EAAYC,EAAUrI,GAEjD,MAAO58G,MAAKwhH,MAAMzsG,EAAKiwG,EAAYC,EAAUrI,EAAW/zF,EAAO81B,OAAOokE,2BA4C1EqC,cAAe,SAAUrwG,EAAKiwG,EAAYC,EAAUrI,GAEhD,MAAO58G,MAAKwhH,MAAMzsG,EAAKiwG,EAAYC,EAAUrI,EAAW/zF,EAAO81B,OAAOqkE,0BA4C1EqC,SAAU,SAAUtwG,EAAKiwG,EAAYC,EAAUrI,GAU3C,MARiBlzG,UAAbu7G,IAA0BA,EAAW,MACvBv7G,SAAdkzG,IAA2BA,EAAY,MAEtCqI,GAAarI,IAEdqI,EAAWlwG,EAAM,QAGd/U,KAAKwhH,MAAMzsG,EAAKiwG,EAAYC,EAAUrI,EAAW/zF,EAAO81B,OAAO6+D,6BA2C1EgE,MAAO,SAAUzsG,EAAKiwG,EAAYC,EAAUrI,EAAWpmG,GAwBnD,IAtBmB9M,SAAfs7G,GAA2C,OAAfA,KAE5BA,EAAajwG,EAAM,QAGNrL,SAAbu7G,IAA0BA,EAAW,MACvBv7G,SAAdkzG,IAA2BA,EAAY,MAC5BlzG,SAAX8M,IAAwBA,EAASqS,EAAO81B,OAAOokE,0BAE9CkC,GAAarI,IAIVqI,EAFAzuG,IAAWqS,EAAO81B,OAAO6+D,2BAEdzoG,EAAM,OAINA,EAAM,SAKrBkwG,EAEAjlH,KAAK2jH,cAAc,eAAgB5uG,EAAKiwG,GAAcC,SAAUA,EAAUzuG,OAAQA,QAGtF,CACI,OAAQA,GAGJ,IAAKqS,GAAO81B,OAAOokE,yBAEU,gBAAdnG,KAEPA,EAAYrB,KAAKv5E,MAAM46E,GAE3B,MAGJ,KAAK/zF,GAAO81B,OAAO6+D,2BAEf,GAAyB,gBAAdZ,GACX,CACI,GAAIvC,GAAMr6G,KAAKklH,SAAStI,EAExB,KAAKvC,EAED,KAAM,IAAIvxG,OAAM,iDAGpB8zG,GAAYvC,GAKxBr6G,KAAK2jH,cAAc,eAAgB5uG,EAAKiwG,GAAcC,SAAU,KAAMrI,UAAWA,EAAWpmG,OAAQA,IAIxG,MAAOxW,OAiBXslH,cAAe,SAAU/rE,EAAUxN,GAE/B/rC,KAAKsiH,qBAEL,KACI/oE,EAAS7zC,KAAKqmC,GAAmB/rC,KAAMA,MACzC,QACEA,KAAKsiH,sBAGT,MAAOtiH,OAcXulH,aAAc,SAAUnwG,EAAML,GAE1B,GAAIywG,GAAQxlH,KAAKyjH,SAASruG,EAAML,EAOhC,OALIywG,KAEAA,EAAMzqB,KAAK+oB,WAAY,GAGpB9jH,MAaXylH,WAAY,SAAUrwG,EAAML,GAExB,GAAIywG,GAAQxlH,KAAKyjH,SAASruG,EAAML,EAE5BywG,KAEKA,EAAMjC,QAAWiC,EAAMhC,SAExBxjH,KAAKuiH,UAAU15G,OAAO28G,EAAM78G,MAAO,KAY/CgkC,UAAW,WAEP3sC,KAAKuiH,UAAUr/G,OAAS,EACxBlD,KAAKwiH,aAAat/G,OAAS,GAS/BmI,MAAO,WAECrL,KAAK0hH,YAKT1hH,KAAKgM,WAAY,EACjBhM,KAAK0hH,WAAY,EAEjB1hH,KAAK0lH,iBAEL1lH,KAAK2lH,qBAiBTA,iBAAkB,WAEd,IAAK3lH,KAAK0hH,UAIN,MAFA5uG,SAAQwkB,KAAK,uDACbt3B,MAAK4lH,iBAAgB,EAKzB,KAAK,GAAI3iH,GAAI,EAAGA,EAAIjD,KAAKwiH,aAAat/G,OAAQD,IAC9C,CACI,GAAI83F,GAAO/6F,KAAKwiH,aAAav/G,IAEzB83F,EAAKwoB,QAAUxoB,EAAKkE,SAEpBj/F,KAAKwiH,aAAa35G,OAAO5F,EAAG,GAC5BA,IAEA83F,EAAKyoB,SAAU,EACfzoB,EAAK8qB,WAAa,KAClB9qB,EAAK+qB,cAAgB,KAEjB/qB,EAAKkE,OAELj/F,KAAKiiH,YAAY/5E,SAAS6yD,EAAKhmF,IAAKgmF,GAGtB,aAAdA,EAAK3lF,MAELpV,KAAK8iH,mBACL9iH,KAAKgiH,eAAe95E,SAASloC,KAAK+lH,SAAUhrB,EAAKhmF,KAAMgmF,EAAKkE,MAAOj/F,KAAK8iH,iBAAkB9iH,KAAK4iH,kBAE5E,aAAd7nB,EAAK3lF,MAAuB2lF,EAAKkE,QAGtCj/F,KAAK6iH,mBACL7iH,KAAK8hH,eAAe55E,SAAS6yD,EAAKhmF,KAAMgmF,EAAKkE,MAAOj/F,KAAK6iH,iBAAkB7iH,KAAK2iH,mBAW5F,IAAK,GAJDqD,IAAY,EAEZC,EAAgBjmH,KAAKoiH,eAAiBv5F,EAAOhoB,KAAK4/B,MAAMzgC,KAAKqiH,qBAAsB,EAAG,IAAM,EAEvFp/G,EAAIjD,KAAKyiH,gBAAiBx/G,EAAIjD,KAAKuiH,UAAUr/G,OAAQD,IAC9D,CACI,GAAI83F,GAAO/6F,KAAKuiH,UAAUt/G,EAuD1B,IApDkB,aAAd83F,EAAK3lF,OAAwB2lF,EAAKkE,OAASlE,EAAKwoB,QAAUtgH,IAAMjD,KAAKyiH,kBAGrEziH,KAAKkmH,YAAYnrB,GAEjB/6F,KAAK6iH,mBACL7iH,KAAK8hH,eAAe55E,SAAS6yD,EAAKhmF,KAAMgmF,EAAKkE,MAAOj/F,KAAK6iH,iBAAkB7iH,KAAK2iH,kBAGhF5nB,EAAKwoB,QAAUxoB,EAAKkE,MAGhBh8F,IAAMjD,KAAKyiH,kBAEXziH,KAAKyiH,gBAAkBx/G,EAAI,IAGzB83F,EAAKyoB,SAAWxjH,KAAKwiH,aAAat/G,OAAS+iH,IAG/B,aAAdlrB,EAAK3lF,MAAwB2lF,EAAK/pF,KAS5Bg1G,IAEDhmH,KAAK0iH,mBAEN1iH,KAAK0iH,kBAAmB,EACxB1iH,KAAK4hH,YAAY15E,YAGrBloC,KAAKwiH,aAAaz+G,KAAKg3F,GACvBA,EAAKyoB,SAAU,EACfxjH,KAAK+hH,YAAY75E,SAASloC,KAAK+lH,SAAUhrB,EAAKhmF,IAAKgmF,EAAKvmB,KAExDx0E,KAAKmmH,SAASprB,KAjBd/6F,KAAKwiH,aAAaz+G,KAAKg3F,GACvBA,EAAKyoB,SAAU,EAEfxjH,KAAKmmH,SAASprB,MAkBjBA,EAAKwoB,QAAUxoB,EAAK+oB,YAErBkC,GAAY,GAKZhmH,KAAKwiH,aAAat/G,QAAU+iH,GAC3BD,GAAahmH,KAAK6iH,mBAAqB7iH,KAAK2iH,gBAE7C,MAQR,GAJA3iH,KAAK0lH,iBAID1lH,KAAKyiH,iBAAmBziH,KAAKuiH,UAAUr/G,OAEvClD,KAAK4lH,sBAEJ,KAAK5lH,KAAKwiH,aAAat/G,OAC5B,CAGI4P,QAAQwkB,KAAK,6EAEb,IAAI4X,GAAQlvC,IAEZw+F,YAAW,WACPtvD,EAAM02E,iBAAgB,IACvB,OAYXA,gBAAiB,SAAUQ,GAEnBpmH,KAAKgM,YAKThM,KAAKgM,WAAY,EACjBhM,KAAK0hH,WAAY,EAGZ0E,GAAapmH,KAAK0iH,mBAEnB1iH,KAAK0iH,kBAAmB,EACxB1iH,KAAK4hH,YAAY15E,YAGrBloC,KAAK6hH,eAAe35E,WAEpBloC,KAAKE,KAAKopC,MAAMoD,eAEhB1sC,KAAK8oC,UAaTu9E,cAAe,SAAUtrB,EAAMurB,GAEN58G,SAAjB48G,IAA8BA,EAAe,IAEjDvrB,EAAKwoB,QAAS,EACdxoB,EAAKkE,QAAUqnB,EAEXA,IAEAvrB,EAAKurB,aAAeA,EAEpBxzG,QAAQwkB,KAAK,mBAAqByjE,EAAK3lF,KAAO,IAAM2lF,EAAKhmF,IAAM,MAAauxG,IAIhFtmH,KAAK2lH,oBAWTO,YAAa,SAAUjC,GAEnB,GAAIsC,GAAWtC,EAAKjzG,KAAKizG,EAAKlvG,IAE9B,KAAKwxG,EAGD,WADAzzG,SAAQwkB,KAAK,mBAAqB2sF,EAAKlvG,IAAM,wCAIjD,KAAK,GAAI9R,GAAI,EAAGA,EAAIsjH,EAASrjH,OAAQD,IACrC,CACI,GAAI83F,GAAOwrB,EAAStjH,EAEpB,QAAQ83F,EAAK3lF,MAET,IAAK,QACDpV,KAAKmqB,MAAM4wE,EAAKhmF,IAAKgmF,EAAKvmB,IAAKumB,EAAK6oB,UACpC,MAEJ,KAAK,OACD5jH,KAAK0yE,KAAKqoB,EAAKhmF,IAAKgmF,EAAKvmB,IAAKumB,EAAK6oB,UACnC,MAEJ,KAAK,OACD5jH,KAAK05G,KAAK3e,EAAKhmF,IAAKgmF,EAAKvmB,IAAKumB,EAAK6oB,UACnC,MAEJ,KAAK,MACD5jH,KAAKq6G,IAAItf,EAAKhmF,IAAKgmF,EAAKvmB,IAAKumB,EAAK6oB,UAClC,MAEJ,KAAK,SACD5jH,KAAKokH,OAAOrpB,EAAKhmF,IAAKgmF,EAAKvmB,IAAKumB,EAAKxhD,SAAU0qE,EAAKl4E,iBAAmB/rC,KACvE,MAEJ,KAAK,SACDA,KAAK26G,OAAO5f,EAAKhmF,IAAKgmF,EAAKvmB,IAAKumB,EAAKxhD,SAAU0qE,EAAKl4E,iBAAmB/rC,KACvE,MAEJ,KAAK,cACDA,KAAKqkH,YAAYtpB,EAAKhmF,IAAKgmF,EAAKvmB,IAAKumB,EAAK1qE,WAAY0qE,EAAKzqE,YAAayqE,EAAKqe,SAAUre,EAAKse,OAAQte,EAAKue,QACzG,MAEJ,KAAK,QACDt5G,KAAKu0E,MAAMwmB,EAAKhmF,IAAKgmF,EAAKopB,KAC1B,MAEJ,KAAK,QACDnkH,KAAKqyE,MAAM0oB,EAAKhmF,IAAKgmF,EAAKopB,KAAMppB,EAAKupB,WACrC,MAEJ,KAAK,cACDtkH,KAAK0kH,YAAY3pB,EAAKhmF,IAAKgmF,EAAKopB,KAAMppB,EAAKypB,QAASzpB,EAAK0pB,SAAU1pB,EAAKupB,WACxE,MAEJ,KAAK,UACDtkH,KAAKi0E,QAAQ8mB,EAAKhmF,IAAKgmF,EAAKvmB,IAAKumB,EAAK/pF,KAAM6X,EAAOgoD,QAAQkqB,EAAKvkF,QAChE,MAEJ,KAAK,UACDxW,KAAKypC,QAAQsxD,EAAKhmF,IAAKgmF,EAAKvmB,IAAKumB,EAAK/pF,KAAM6X,EAAO81B,OAAOo8C,EAAKvkF,QAC/D,MAEJ,KAAK,aACDxW,KAAK46G,WAAW7f,EAAKhmF,IAAKgmF,EAAKiqB,WAAYjqB,EAAKkqB,SAAUlqB,EAAK6hB,UAAW7hB,EAAKpnB,SAAUonB,EAAKnnB,SAC9F,MAEJ,KAAK,iBACD5zE,KAAKmlH,eAAepqB,EAAKhmF,IAAKgmF,EAAKiqB,WAAYjqB,EAAKkqB,SAAUlqB,EAAK6hB,UACnE,MAEJ,KAAK,gBACD58G,KAAKolH,cAAcrqB,EAAKhmF,IAAKgmF,EAAKiqB,WAAYjqB,EAAKkqB,SAAUlqB,EAAK6hB,UAClE,MAEJ,KAAK,WACD58G,KAAKqlH,SAAStqB,EAAKhmF,IAAKgmF,EAAKiqB,WAAYjqB,EAAKkqB,SAAUlqB,EAAK6hB,UAC7D,MAEJ,KAAK,QACD58G,KAAKwhH,MAAMzmB,EAAKhmF,IAAKgmF,EAAKiqB,WAAYjqB,EAAKkqB,SAAUlqB,EAAK6hB,UAAW/zF,EAAO81B,OAAOo8C,EAAKvkF,QACxF,MAEJ,KAAK,SACDxW,KAAK6L,OAAOkvF,EAAKhmF,IAAKgmF,EAAKvmB,IAAKumB,EAAK6oB,cAkBrD4C,aAAc,SAAUhyC,EAAKumB,GAEzB,MAAKvmB,GAKDA,EAAIxK,MAAM,8CAEHwK,EAIAx0E,KAAKyhH,QAAU1mB,EAAK3X,KAAO5O,GAT3B,GAuBf2xC,SAAU,SAAUprB,GAGhB,OAAQA,EAAK3lF,MAET,IAAK,WACDpV,KAAKymH,QAAQ1rB,EAAM/6F,KAAKwmH,aAAazrB,EAAKvmB,IAAKumB,GAAO,OAAQ/6F,KAAK0mH,aACnE,MAEJ,KAAK,QACL,IAAK,cACL,IAAK,eACL,IAAK,aACD1mH,KAAK2mH,aAAa5rB,EAClB,MAEJ,KAAK,QACDA,EAAKvmB,IAAMx0E,KAAK4mH,YAAY7rB,EAAKvmB,KAE7BumB,EAAKvmB,IAGDx0E,KAAKE,KAAKmpC,MAAMw9E,cAEhB7mH,KAAKymH,QAAQ1rB,EAAM/6F,KAAKwmH,aAAazrB,EAAKvmB,IAAKumB,GAAO,cAAe/6F,KAAK0mH,cAErE1mH,KAAKE,KAAKmpC,MAAMy9E,eAErB9mH,KAAK+mH,aAAahsB,GAKtB/6F,KAAKgnH,UAAUjsB,EAAM,KAAM,kFAE/B,MAEJ,KAAK,QACDA,EAAKvmB,IAAMx0E,KAAKinH,YAAYlsB,EAAKvmB,KAE7BumB,EAAKvmB,IAEDumB,EAAK6pB,OAEL5kH,KAAKymH,QAAQ1rB,EAAM/6F,KAAKwmH,aAAazrB,EAAKvmB,IAAKumB,GAAO,OAAQ/6F,KAAK0mH,cAInE1mH,KAAKknH,aAAansB,GAKtB/6F,KAAKgnH,UAAUjsB,EAAM,KAAM,kFAE/B,MAEJ,KAAK,OAED/6F,KAAKymH,QAAQ1rB,EAAM/6F,KAAKwmH,aAAazrB,EAAKvmB,IAAKumB,GAAO,OAAQ/6F,KAAKmnH,iBACnE,MAEJ,KAAK,MAEDnnH,KAAKymH,QAAQ1rB,EAAM/6F,KAAKwmH,aAAazrB,EAAKvmB,IAAKumB,GAAO,OAAQ/6F,KAAKonH,gBACnE,MAEJ,KAAK,UAEGrsB,EAAKvkF,SAAWqS,EAAOgoD,QAAQi0C,WAE/B9kH,KAAKymH,QAAQ1rB,EAAM/6F,KAAKwmH,aAAazrB,EAAKvmB,IAAKumB,GAAO,OAAQ/6F,KAAKmnH,kBAE9DpsB,EAAKvkF,SAAWqS,EAAOgoD,QAAQg0C,IAEpC7kH,KAAKymH,QAAQ1rB,EAAM/6F,KAAKwmH,aAAazrB,EAAKvmB,IAAKumB,GAAO,OAAQ/6F,KAAKqnH,iBAInErnH,KAAKqmH,cAActrB,EAAM,2BAA6BA,EAAKvkF,OAE/D,MAEJ,KAAK,OACL,IAAK,SACL,IAAK,SACL,IAAK,UACDxW,KAAKymH,QAAQ1rB,EAAM/6F,KAAKwmH,aAAazrB,EAAKvmB,IAAKumB,GAAO,OAAQ/6F,KAAK0mH,aACnE,MAEJ,KAAK,SACD1mH,KAAKymH,QAAQ1rB,EAAM/6F,KAAKwmH,aAAazrB,EAAKvmB,IAAKumB,GAAO,cAAe/6F,KAAK0mH,gBAUtFC,aAAc,SAAU5rB,GAEpB,GAAI7rD,GAAQlvC,IAEZ+6F,GAAK/pF,KAAO,GAAIP,OAChBsqF,EAAK/pF,KAAK0oB,KAAOqhE,EAAKhmF,IAElB/U,KAAKoqB,cAEL2wE,EAAK/pF,KAAKoZ,YAAcpqB,KAAKoqB,aAGjC2wE,EAAK/pF,KAAKs2G,OAAS,WACXvsB,EAAK/pF,KAAKs2G,SAEVvsB,EAAK/pF,KAAKs2G,OAAS,KACnBvsB,EAAK/pF,KAAKu2G,QAAU,KACpBr4E,EAAMw3E,aAAa3rB,KAI3BA,EAAK/pF,KAAKu2G,QAAU,WACZxsB,EAAK/pF,KAAKs2G,SAEVvsB,EAAK/pF,KAAKs2G,OAAS,KACnBvsB,EAAK/pF,KAAKu2G,QAAU,KACpBr4E,EAAM83E,UAAUjsB,KAIxBA,EAAK/pF,KAAKN,IAAM1Q,KAAKwmH,aAAazrB,EAAKvmB,IAAKumB,GAGxCA,EAAK/pF,KAAKyY,UAAYsxE,EAAK/pF,KAAKrK,OAASo0F,EAAK/pF,KAAKpK,SAEnDm0F,EAAK/pF,KAAKs2G,OAAS,KACnBvsB,EAAK/pF,KAAKu2G,QAAU,KACpBvnH,KAAK0mH,aAAa3rB,KAS1BmsB,aAAc,SAAUnsB,GAEpB,GAAI7rD,GAAQlvC,IAEZ+6F,GAAK/pF,KAAOX,SAASoB,cAAc,SACnCspF,EAAK/pF,KAAK0oB,KAAOqhE,EAAKhmF,IACtBgmF,EAAK/pF,KAAKw2G,UAAW,EACrBzsB,EAAK/pF,KAAKy2G,UAAW,CAErB,IAAIC,GAAiB,WAEjB3sB,EAAK/pF,KAAKsjC,oBAAoBymD,EAAK4pB,UAAW+C,GAAgB,GAC9D3sB,EAAK/pF,KAAKu2G,QAAU,KACpBxsB,EAAK/pF,KAAK22G,SAAU,EACpB9+F,EAAOmJ,MAAMkd,EAAMhvC,KAAK+V,IAAImzB,KAAKs9E,aAAa3rB,GAIlDA,GAAK/pF,KAAKu2G,QAAU,WAChBxsB,EAAK/pF,KAAKsjC,oBAAoBymD,EAAK4pB,UAAW+C,GAAgB,GAC9D3sB,EAAK/pF,KAAKu2G,QAAU,KACpBxsB,EAAK/pF,KAAK22G,SAAU,EACpBz4E,EAAM83E,UAAUjsB,IAGpBA,EAAK/pF,KAAKoiC,iBAAiB2nD,EAAK4pB,UAAW+C,GAAgB,GAE3D3sB,EAAK/pF,KAAKN,IAAM1Q,KAAKwmH,aAAazrB,EAAKvmB,IAAKumB,GAC5CA,EAAK/pF,KAAKo4B,QAQd29E,aAAc,SAAUhsB,GAEpB,GAAI7rD,GAAQlvC,IAEZ,IAAIA,KAAKE,KAAKmpC,MAAM+yE,YAGhBrhB,EAAK/pF,KAAO,GAAI42G,OAChB7sB,EAAK/pF,KAAK0oB,KAAOqhE,EAAKhmF,IACtBgmF,EAAK/pF,KAAK04B,QAAU,OACpBqxD,EAAK/pF,KAAKN,IAAM1Q,KAAKwmH,aAAazrB,EAAKvmB,IAAKumB,GAE5C/6F,KAAK0mH,aAAa3rB,OAGtB,CACIA,EAAK/pF,KAAO,GAAI42G,OAChB7sB,EAAK/pF,KAAK0oB,KAAOqhE,EAAKhmF,GAEtB,IAAI8yG,GAAmB,WACnB9sB,EAAK/pF,KAAKsjC,oBAAoB,iBAAkBuzE,GAAkB,GAClE9sB,EAAK/pF,KAAKu2G,QAAU,KACpBr4E,EAAMw3E,aAAa3rB,GAGvBA,GAAK/pF,KAAKu2G,QAAU,WAChBxsB,EAAK/pF,KAAKsjC,oBAAoB,iBAAkBuzE,GAAkB,GAClE9sB,EAAK/pF,KAAKu2G,QAAU,KACpBr4E,EAAM83E,UAAUjsB,IAGpBA,EAAK/pF,KAAK04B,QAAU,OACpBqxD,EAAK/pF,KAAKN,IAAM1Q,KAAKwmH,aAAazrB,EAAKvmB,IAAKumB,GAC5CA,EAAK/pF,KAAKoiC,iBAAiB,iBAAkBy0E,GAAkB,GAC/D9sB,EAAK/pF,KAAKo4B,SAkBlBq9E,QAAS,SAAU1rB,EAAMvmB,EAAKp/D,EAAMkyG,EAAQC,GAExC,GAAIvnH,KAAKkiH,mBAAqBrvG,OAAOi1G,eAGjC,WADA9nH,MAAK+nH,eAAehtB,EAAMvmB,EAAKp/D,EAAMkyG,EAAQC,EAIjD,IAAIS,GAAM,GAAIC,eACdD,GAAIE,KAAK,MAAO1zC,GAAK,GACrBwzC,EAAIG,aAAe/yG,EAEnBmyG,EAAUA,GAAWvnH,KAAKgnH,SAE1B,IAAI93E,GAAQlvC,IAEZgoH,GAAIV,OAAS,WAET,IACI,MAAsB,IAAlBU,EAAIzpB,YAAmBypB,EAAIzW,QAAU,KAAOyW,EAAIzW,QAAU,IACnDgW,EAAQ7hH,KAAKwpC,EAAO6rD,EAAMitB,GAG1BV,EAAO5hH,KAAKwpC,EAAO6rD,EAAMitB,GAEtC,MAAOzuF,GAKA2V,EAAMljC,UAMH6G,OAAgB,SAEhBC,QAAQmsF,MAAM1lE,GANlB2V,EAAMm3E,cAActrB,EAAMxhE,EAAE6uF,SAAW,eAYnDJ,EAAIT,QAAU,WAEV,IAEI,MAAOA,GAAQ7hH,KAAKwpC,EAAO6rD,EAAMitB,GAEnC,MAAOzuF,GAEA2V,EAAMljC,UAMH6G,OAAgB,SAEhBC,QAAQmsF,MAAM1lE,GANlB2V,EAAMm3E,cAActrB,EAAMxhE,EAAE6uF,SAAW,eAanDrtB,EAAK+qB,cAAgBkC,EACrBjtB,EAAK8qB,WAAarxC,EAElBwzC,EAAIK,QAmBRN,eAAgB,SAAUhtB,EAAMvmB,EAAKp/D,EAAMkyG,EAAQC;AAG1CvnH,KAAKmiH,4BACJniH,KAAKE,KAAKuzC,OAAOooD,MAAM77F,KAAKE,KAAKuzC,OAAOqoD,WAAa,MAEvD97F,KAAKmiH,4BAA6B,EAClCrvG,QAAQwkB,KAAK,wDAIjB,IAAI0wF,GAAM,GAAIn1G,QAAOi1G,cACrBE,GAAIE,KAAK,MAAO1zC,GAAK,GACrBwzC,EAAIG,aAAe/yG,EAKnB4yG,EAAIM,QAAU,IAEdf,EAAUA,GAAWvnH,KAAKgnH,SAE1B,IAAI93E,GAAQlvC,IAEZgoH,GAAIT,QAAU,WACV,IACI,MAAOA,GAAQ7hH,KAAKwpC,EAAO6rD,EAAMitB,GACnC,MAAOzuF,GACL2V,EAAMm3E,cAActrB,EAAMxhE,EAAE6uF,SAAW,eAI/CJ,EAAIO,UAAY,WACZ,IACI,MAAOhB,GAAQ7hH,KAAKwpC,EAAO6rD,EAAMitB,GACnC,MAAOzuF,GACL2V,EAAMm3E,cAActrB,EAAMxhE,EAAE6uF,SAAW,eAI/CJ,EAAIQ,WAAa,aAEjBR,EAAIV,OAAS,WACT,IACI,MAAsB,IAAlBU,EAAIzpB,YAAmBypB,EAAIzW,QAAU,KAAOyW,EAAIzW,QAAU,IACnDgW,EAAQ7hH,KAAKwpC,EAAO6rD,EAAMitB,GAG1BV,EAAO5hH,KAAKwpC,EAAO6rD,EAAMitB,GAGtC,MAAOzuF,GACL2V,EAAMm3E,cAActrB,EAAMxhE,EAAE6uF,SAAW,eAI/CrtB,EAAK+qB,cAAgBkC,EACrBjtB,EAAK8qB,WAAarxC,EAIlBgqB,WAAW,WACPwpB,EAAIK,QACL,IAcPpB,YAAa,SAAU9C,GAEnB,IAAK,GAAIlhH,GAAI,EAAGA,EAAIkhH,EAAKjhH,OAAQD,IACjC,CACI,GACIwlH,GADAj0C,EAAM2vC,EAAKlhH,EAGf,IAAIuxE,EAAIk0C,KAKJ,GAHAD,EAAYj0C,EAAIp/D,KAChBo/D,EAAMA,EAAIk0C,IAEN1oH,KAAKE,KAAKuzC,OAAOivD,aAAa+lB,GAE9B,MAAOj0C,OAIf,CAEI,GAA6B,IAAzBA,EAAIprE,QAAQ,UAA2C,IAAzBorE,EAAIprE,QAAQ,SAE1C,MAAOorE,EAGPA,GAAIprE,QAAQ,MAAQ,IAEpBorE,EAAMA,EAAIzsD,OAAO,EAAGysD,EAAIprE,QAAQ,MAGpC,IAAIy6G,GAAYrvC,EAAIzsD,QAAQlnB,KAAK+G,IAAI,EAAG4sE,EAAIm0C,YAAY,OAASp+G,EAAAA,GAAY,EAI7E,IAFAk+G,EAAY5E,EAAU70D,cAElBhvD,KAAKE,KAAKuzC,OAAOivD,aAAa+lB,GAE9B,MAAOtE,GAAKlhH,IAKxB,MAAO,OAcX2jH,YAAa,SAAUzC,GAEnB,GAAInkH,KAAKE,KAAKmpC,MAAMk7E,QAEhB,MAAO,KAGX,KAAK,GAAIthH,GAAI,EAAGA,EAAIkhH,EAAKjhH,OAAQD,IACjC,CACI,GACI2lH,GADAp0C,EAAM2vC,EAAKlhH,EAGf,IAAIuxE,EAAIk0C,KAKJ,GAHAE,EAAYp0C,EAAIp/D,KAChBo/D,EAAMA,EAAIk0C,IAEN1oH,KAAKE,KAAKuzC,OAAOgvD,aAAammB,GAE9B,MAAOp0C,OAIf,CAEI,GAA6B,IAAzBA,EAAIprE,QAAQ,UAA2C,IAAzBorE,EAAIprE,QAAQ,SAE1C,MAAOorE,EAGPA,GAAIprE,QAAQ,MAAQ,IAEpBorE,EAAMA,EAAIzsD,OAAO,EAAGysD,EAAIprE,QAAQ,MAGpC,IAAIy6G,GAAYrvC,EAAIzsD,QAAQlnB,KAAK+G,IAAI,EAAG4sE,EAAIm0C,YAAY,OAASp+G,EAAAA,GAAY,EAI7E,IAFAq+G,EAAY/E,EAAU70D,cAElBhvD,KAAKE,KAAKuzC,OAAOgvD,aAAammB,GAE9B,MAAOzE,GAAKlhH,IAKxB,MAAO,OAaX+jH,UAAW,SAAUjsB,EAAMitB,EAAKa,GAE5B,GAAIr0C,GAAMumB,EAAK8qB,YAAc7lH,KAAKwmH,aAAazrB,EAAKvmB,IAAKumB,GACrDqtB,EAAU,gCAAkC5zC,GAE3Cq0C,GAAUb,IAEXa,EAASb,EAAIzW,QAGbsX,IAEAT,EAAUA,EAAU,KAAOS,EAAS,KAGxC7oH,KAAKqmH,cAActrB,EAAMqtB,IAY7B1B,aAAc,SAAU3rB,EAAMitB,GAE1B,GAAIc,IAAW,CAEf,QAAQ/tB,EAAK3lF,MAET,IAAK,WAGD,GAAIpE,GAAOuqG,KAAKv5E,MAAMgmF,EAAIe,aAC1BhuB,GAAK/pF,KAAOA,KACZ,MAEJ,KAAK,QAEDhR,KAAKkpC,MAAM0wC,SAASmhB,EAAKhmF,IAAKgmF,EAAKvmB,IAAKumB,EAAK/pF,KAC7C,MAEJ,KAAK,cAEDhR,KAAKkpC,MAAMo0E,eAAeviB,EAAKhmF,IAAKgmF,EAAKvmB,IAAKumB,EAAK/pF,KAAM+pF,EAAK1qE,WAAY0qE,EAAKzqE,YAAayqE,EAAKqe,SAAUre,EAAKse,OAAQte,EAAKue,QAC7H,MAEJ,KAAK,eAED,GAAqB,MAAjBve,EAAKkqB,SAELjlH,KAAKkpC,MAAMq0E,gBAAgBxiB,EAAKhmF,IAAKgmF,EAAKvmB,IAAKumB,EAAK/pF,KAAM+pF,EAAK6hB,UAAW7hB,EAAKvkF,YAO/E,IAFAsyG,GAAW,EAEP/tB,EAAKvkF,QAAUqS,EAAO81B,OAAOokE,0BAA4BhoB,EAAKvkF,QAAUqS,EAAO81B,OAAOqkE,yBAA2BjoB,EAAKvkF,QAAUqS,EAAO81B,OAAO8+D,yBAE9Iz9G,KAAKymH,QAAQ1rB,EAAM/6F,KAAKwmH,aAAazrB,EAAKkqB,SAAUlqB,GAAO,OAAQ/6F,KAAKmnH,sBAEvE,CAAA,GAAIpsB,EAAKvkF,QAAUqS,EAAO81B,OAAO6+D,2BAMlC,KAAM,IAAI10G,OAAM,gDAAkDiyF,EAAKvkF,OAJvExW,MAAKymH,QAAQ1rB,EAAM/6F,KAAKwmH,aAAazrB,EAAKkqB,SAAUlqB,GAAO,OAAQ/6F,KAAKonH,iBAOhF,KAEJ,KAAK,aAEIrsB,EAAKkqB,UAON6D,GAAW,EACX9oH,KAAKymH,QAAQ1rB,EAAM/6F,KAAKwmH,aAAazrB,EAAKkqB,SAAUlqB,GAAO,OAAQ,SAAUA,EAAMitB,GAC/E,GAAItO,EAEJ,KAGIA,EAAO6B,KAAKv5E,MAAMgmF,EAAIe,cAE1B,MAAOxvF,IAEDmgF,GAEF3e,EAAK8hB,UAAY,OACjB78G,KAAKmnH,iBAAiBpsB,EAAMitB,KAI5BjtB,EAAK8hB,UAAY,MACjB78G,KAAKonH,gBAAgBrsB,EAAMitB,OAxBnChoH,KAAKkpC,MAAMyzE,cAAc5hB,EAAKhmF,IAAKgmF,EAAKvmB,IAAKumB,EAAK/pF,KAAM+pF,EAAK6hB,UAAW7hB,EAAK8hB,UAAW9hB,EAAKpnB,SAAUonB,EAAKnnB,SA4BhH,MAEJ,KAAK,QAED,GAAImnB,EAAK6pB,OAEL,IAEI7pB,EAAK/pF,KAAOg3G,EAAIgB,SAEpB,MAAOzvF,GAEH,KAAM,IAAIzwB,OAAM,sDAAwDiyF,EAAKhmF,KAIrF/U,KAAKkpC,MAAMi0E,SAASpiB,EAAKhmF,IAAKgmF,EAAKvmB,IAAKumB,EAAK/pF,KAAM+pF,EAAK6pB,OACxD,MAEJ,KAAK,QAEG5kH,KAAKE,KAAKmpC,MAAMw9E,eAEhB9rB,EAAK/pF,KAAOg3G,EAAIgB,SAEhBhpH,KAAKkpC,MAAM8yE,SAASjhB,EAAKhmF,IAAKgmF,EAAKvmB,IAAKumB,EAAK/pF,MAAM,GAAM,GAErD+pF,EAAKupB,YAELtkH,KAAKE,KAAKmpC,MAAM4/E,OAAOluB,EAAKhmF,MAKhC/U,KAAKkpC,MAAM8yE,SAASjhB,EAAKhmF,IAAKgmF,EAAKvmB,IAAKumB,EAAK/pF,MAAM,GAAO,EAE9D,MAEJ,KAAK,OACD+pF,EAAK/pF,KAAOg3G,EAAIe,aAChB/oH,KAAKkpC,MAAMmzE,QAAQthB,EAAKhmF,IAAKgmF,EAAKvmB,IAAKumB,EAAK/pF,KAC5C,MAEJ,KAAK,SACD+pF,EAAK/pF,KAAOg3G,EAAIe,aAChB/oH,KAAKkpC,MAAMm0E,UAAUtiB,EAAKhmF,IAAKgmF,EAAKvmB,IAAKumB,EAAK/pF,KAC9C,MAEJ,KAAK,UACD,GAAIA,GAAOuqG,KAAKv5E,MAAMgmF,EAAIe,aAC1B/oH,MAAKkpC,MAAMozE,eAAevhB,EAAKhmF,IAAKgmF,EAAKvmB,IAAKxjE,EAAM+pF,EAAKvkF,OACzD,MAEJ,KAAK,SACDukF,EAAK/pF,KAAOX,SAASoB,cAAc,UACnCspF,EAAK/pF,KAAKk4G,SAAW,aACrBnuB,EAAK/pF,KAAKoE,KAAO,kBACjB2lF,EAAK/pF,KAAKm4G,OAAQ,EAClBpuB,EAAK/pF,KAAK0hE,KAAOs1C,EAAIe,aACrB14G,SAAS+4G,KAAK9lB,YAAYvI,EAAK/pF,MAC3B+pF,EAAKxhD,WAELwhD,EAAK/pF,KAAO+pF,EAAKxhD,SAAS7zC,KAAKq1F,EAAKhvD,gBAAiBgvD,EAAKhmF,IAAKizG,EAAIe,cAEvE,MAEJ,KAAK,SACGhuB,EAAKxhD,SAELwhD,EAAK/pF,KAAO+pF,EAAKxhD,SAAS7zC,KAAKq1F,EAAKhvD,gBAAiBgvD,EAAKhmF,IAAKizG,EAAIgB,UAInEjuB,EAAK/pF,KAAOg3G,EAAIgB,SAGpBhpH,KAAKkpC,MAAMuzE,UAAU1hB,EAAKhmF,IAAKgmF,EAAK/pF,MAKxC83G,GAEA9oH,KAAKqmH,cAActrB,IAa3BosB,iBAAkB,SAAUpsB,EAAMitB,GAE9B,GAAIh3G,GAAOuqG,KAAKv5E,MAAMgmF,EAAIe,aAER,aAAdhuB,EAAK3lF,KAELpV,KAAKkpC,MAAMqzE,WAAWxhB,EAAKhmF,IAAKgmF,EAAKvmB,IAAKxjE,EAAM+pF,EAAKvkF,QAElC,eAAdukF,EAAK3lF,KAEVpV,KAAKkpC,MAAMyzE,cAAc5hB,EAAKhmF,IAAKgmF,EAAKvmB,IAAKumB,EAAK/pF,KAAMA,EAAM+pF,EAAK8hB,UAAW9hB,EAAKpnB,SAAUonB,EAAKnnB,UAE/E,SAAdmnB,EAAK3lF,KAEVpV,KAAKkpC,MAAM+zE,QAAQliB,EAAKhmF,IAAKgmF,EAAKvmB,IAAKxjE,GAIvChR,KAAKkpC,MAAMq0E,gBAAgBxiB,EAAKhmF,IAAKgmF,EAAKvmB,IAAKumB,EAAK/pF,KAAMA,EAAM+pF,EAAKvkF,QAGzExW,KAAKqmH,cAActrB,IAWvBssB,gBAAiB,SAAUtsB,EAAMitB,GAE7B,GAAIh3G,GAAOg3G,EAAIe,YAEf/oH,MAAKkpC,MAAMqzE,WAAWxhB,EAAKhmF,IAAKgmF,EAAKvmB,IAAKxjE,EAAM+pF,EAAKvkF,QAErDxW,KAAKqmH,cAActrB,IAYvBqsB,gBAAiB,SAAUrsB,EAAMitB,GAG7B,GAAIh3G,GAAOg3G,EAAIe,aACX1O,EAAMr6G,KAAKklH,SAASl0G,EAExB,KAAKqpG,EACL,CACI,GAAI8N,GAAeH,EAAIG,cAAgBH,EAAIqB,WAG3C,OAFAv2G,SAAQwkB,KAAK,mBAAqByjE,EAAKhmF,IAAM,kBAAoBozG,EAAe,SAChFnoH,MAAKqmH,cAActrB,EAAM,eAIX,eAAdA,EAAK3lF,KAELpV,KAAKkpC,MAAMyzE,cAAc5hB,EAAKhmF,IAAKgmF,EAAKvmB,IAAKumB,EAAK/pF,KAAMqpG,EAAKtf,EAAK8hB,UAAW9hB,EAAKpnB,SAAUonB,EAAKnnB,UAE9E,iBAAdmnB,EAAK3lF,KAEVpV,KAAKkpC,MAAMq0E,gBAAgBxiB,EAAKhmF,IAAKgmF,EAAKvmB,IAAKumB,EAAK/pF,KAAMqpG,EAAKtf,EAAKvkF,QAEjD,QAAdukF,EAAK3lF,MAEVpV,KAAKkpC,MAAMg0E,OAAOniB,EAAKhmF,IAAKgmF,EAAKvmB,IAAK6lC,GAG1Cr6G,KAAKqmH,cAActrB,IAYvBmqB,SAAU,SAAUl0G,GAEhB,GAAIqpG,EAEJ,KAEI,GAAIxnG,OAAkB,UACtB,CACI,GAAIy2G,GAAY,GAAIC,UACpBlP,GAAMiP,EAAUE,gBAAgBx4G,EAAM,gBAItCqpG,GAAM,GAAIoP,eAAc,oBAExBpP,EAAIqP,MAAQ,QACZrP,EAAIsP,QAAQ34G,GAGpB,MAAOuoB,GAEH8gF,EAAM,KAGV,MAAKA,IAAQA,EAAIxa,kBAAmBwa,EAAIC,qBAAqB,eAAep3G,OAMjEm3G,EAJA,MAiBfqL,eAAgB,WAER1lH,KAAK2hH,gBAEgC,IAAjC3hH,KAAK2hH,cAAcr6E,UAEnBtnC,KAAK2hH,cAAcniF,KAAK74B,MAAQ9F,KAAKq1B,MAAOl2B,KAAK2hH,cAAch7G,MAAQ,IAAO3G,KAAK+lH,UAInF/lH,KAAK2hH,cAAcniF,KAAK54B,OAAS/F,KAAKq1B,MAAOl2B,KAAK2hH,cAAc/6G,OAAS,IAAO5G,KAAK+lH,UAGrF/lH,KAAK2hH,cAAcj/F,OAEnB1iB,KAAK2hH,cAAcj/F,OAAOypD,aAK1BnsE,KAAK2hH,cAAgB,OAajCiI,iBAAkB,WAEd,MAAO5pH,MAAK8iH,kBAWhBt2E,iBAAkB,WAEd,MAAOxsC,MAAK4iH,gBAAkB5iH,KAAK8iH,kBAWvC+G,iBAAkB,WAEd,MAAO7pH,MAAK2iH,iBAWhBl2E,iBAAkB,WAEd,MAAOzsC,MAAK2iH,gBAAkB3iH,KAAK6iH,mBAe3Cz/G,OAAOC,eAAewlB,EAAO81B,OAAO97C,UAAW,iBAE3CS,IAAK,WACD,GAAIyiH,GAAY/lH,KAAK8iH,iBAAmB9iH,KAAK4iH,gBAAmB,GAChE,OAAO/5F,GAAOhoB,KAAK4/B,MAAMslF,GAAY,EAAG,EAAG,QAWnD3iH,OAAOC,eAAewlB,EAAO81B,OAAO97C,UAAW,YAE3CS,IAAK,WACD,MAAOzC,MAAKw6B,MAAMr7B,KAAK8pH,kBAK/BjhG,EAAO81B,OAAO97C,UAAUC,YAAc+lB,EAAO81B,OAa7C91B,EAAOi0F,cAYHlC,WAAY,SAAUP,EAAKtuG,EAAa4nE,EAAUC,GAE9C,MAAO5zE,MAAKg9G,cAAc3C,EAAKtuG,EAAa4nE,EAAUC,IAc1DopC,cAAe,SAAU3C,EAAKtuG,EAAa4nE,EAAUC,GAEjD,GAAI5iE,MACA+4G,EAAO1P,EAAIC,qBAAqB,QAAQ,GACxC0P,EAAS3P,EAAIC,qBAAqB,UAAU,EAEhDtpG,GAAKsiE,KAAOy2C,EAAKE,aAAa,QAC9Bj5G,EAAKuQ,KAAOoX,SAASoxF,EAAKE,aAAa,QAAS,IAChDj5G,EAAKugF,WAAa54D,SAASqxF,EAAOC,aAAa,cAAe,IAAMr2C,EACpE5iE,EAAKyiE,QAIL,KAAK,GAFDy2C,GAAU7P,EAAIC,qBAAqB,QAE9Br3G,EAAI,EAAGA,EAAIinH,EAAQhnH,OAAQD,IACpC,CACI,GAAI6gE,GAAWnrC,SAASuxF,EAAQjnH,GAAGgnH,aAAa,MAAO,GAEvDj5G,GAAKyiE,MAAM3P,IACPz+D,EAAGszB,SAASuxF,EAAQjnH,GAAGgnH,aAAa,KAAM,IAC1C3kH,EAAGqzB,SAASuxF,EAAQjnH,GAAGgnH,aAAa,KAAM,IAC1CtjH,MAAOgyB,SAASuxF,EAAQjnH,GAAGgnH,aAAa,SAAU,IAClDrjH,OAAQ+xB,SAASuxF,EAAQjnH,GAAGgnH,aAAa,UAAW,IACpDp2C,QAASl7C,SAASuxF,EAAQjnH,GAAGgnH,aAAa,WAAY,IACtDn2C,QAASn7C,SAASuxF,EAAQjnH,GAAGgnH,aAAa,WAAY,IACtDl0B,SAAUp9D,SAASuxF,EAAQjnH,GAAGgnH,aAAa,YAAa,IAAMt2C,EAC9DmiB,YAIR,GAAIq0B,GAAW9P,EAAIC,qBAAqB,UAExC,KAAKr3G,EAAI,EAAGA,EAAIknH,EAASjnH,OAAQD,IACjC,CACI,GAAI+sD,GAAQr3B,SAASwxF,EAASlnH,GAAGgnH,aAAa,SAAU,IACpDG,EAASzxF,SAASwxF,EAASlnH,GAAGgnH,aAAa,UAAW,IACtDx6F,EAASkJ,SAASwxF,EAASlnH,GAAGgnH,aAAa,UAAW,GAE1Dj5G,GAAKyiE,MAAM22C,GAAQt0B,QAAQ9lC,GAASvgC,EAGxC,MAAOzvB,MAAKqqH,mBAAmBt+G,EAAaiF,IAchD+rG,eAAgB,SAAUrD,EAAM3tG,EAAa4nE,EAAUC,GAEnD,GAAI5iE,IACAsiE,KAAMomC,EAAKpmC,KAAKy2C,KAAKO,MACrB/oG,KAAMoX,SAAS+gF,EAAKpmC,KAAKy2C,KAAKjxC,MAAO,IACrCyY,WAAY54D,SAAS+gF,EAAKpmC,KAAK02C,OAAOO,YAAa,IAAM32C,EACzDH,SAqCJ,OAlCAimC,GAAKpmC,KAAKG,MAAM,QAAQz8C,QAEpB,SAAmBq7D,GAEf,GAAIvuB,GAAWnrC,SAAS05D,EAAOm4B,IAAK,GAEpCx5G,GAAKyiE,MAAM3P,IACPz+D,EAAGszB,SAAS05D,EAAOluC,GAAI,IACvB7+C,EAAGqzB,SAAS05D,EAAOjuC,GAAI,IACvBz9C,MAAOgyB,SAAS05D,EAAO/pF,OAAQ,IAC/B1B,OAAQ+xB,SAAS05D,EAAO9pF,QAAS,IACjCsrE,QAASl7C,SAAS05D,EAAOo4B,SAAU,IACnC32C,QAASn7C,SAAS05D,EAAOq4B,SAAU,IACnC30B,SAAUp9D,SAAS05D,EAAOs4B,UAAW,IAAMh3C,EAC3CmiB,cAMR4jB,EAAKpmC,KAAK62C,UAAYzQ,EAAKpmC,KAAK62C,SAASr0B,SAEzC4jB,EAAKpmC,KAAK62C,SAASr0B,QAAQ9+D,QAEvB,SAAsB8+D,GAElB9kF,EAAKyiE,MAAMqiB,EAAQ80B,SAAS90B,QAAQA,EAAQ+0B,QAAUlyF,SAASm9D,EAAQg1B,QAAS,MAQrF9qH,KAAKqqH,mBAAmBt+G,EAAaiF,IAahDq5G,mBAAoB,SAAUt+G,EAAag/G,GAcvC,MAZA3nH,QAAO+2B,KAAK4wF,EAAet3C,OAAOz8C,QAE9B,SAAoB8sC,GAEhB,GAAIuuB,GAAS04B,EAAet3C,MAAM3P,EAElCuuB,GAAOvqF,QAAU,GAAI7H,MAAKuL,QAAQO,EAAa,GAAI8c,GAAOrmB,UAAU6vF,EAAOhtF,EAAGgtF,EAAO/sF,EAAG+sF,EAAO1rF,MAAO0rF,EAAOzrF,WAM9GmkH,IAqBfliG,EAAOuuD,YAAc,SAAUl3E,EAAM6U,GAMjC/U,KAAKE,KAAOA,EAMZF,KAAK+U,IAAMA,EAMX/U,KAAKsyC,OAAStyC,KAAKE,KAAKgpC,MAAM02E,QAAQ7qG,EAAM,eAM5C/U,KAAKgrH,YAAc,KAOnBhrH,KAAKynH,UAAW,EAMhBznH,KAAKirH,SAEL,KAAK,GAAI9uD,KAAKn8D,MAAKsyC,OAAO44E,UAC1B,CACI,GAAIl0C,GAASh3E,KAAKsyC,OAAO44E,UAAU/uD,GAC/B9yB,EAAQrpC,KAAKE,KAAK49B,IAAIuL,MAAMrpC,KAAK+U,IAErCs0B,GAAM8hF,UAAUhvD,EAAG6a,EAAO3rE,MAAQ2rE,EAAOjtE,IAAMitE,EAAO3rE,MAAQ,KAAM2rE,EAAOzM,MAE3EvqE,KAAKirH,OAAO9uD,GAAK9yB,EAGjBrpC,KAAKsyC,OAAOm1E,WAEZznH,KAAKgrH,YAAchrH,KAAKsyC,OAAOm1E,SAC/BznH,KAAKqqE,KAAKrqE,KAAKgrH,aACfhrH,KAAKynH,SAAWznH,KAAKirH,OAAOjrH,KAAKgrH,eAKzCniG,EAAOuuD,YAAYv0E,WAUfwnE,KAAM,SAAU2M,EAAQzyC,GAIpB,MAFe76B,UAAX66B,IAAwBA,EAAS,GAE9BvkC,KAAKirH,OAAOj0C,GAAQ3M,KAAK2M,EAAQ,KAAMzyC,IAUlDt5B,KAAM,SAAU+rE,GAEZ,GAAKA,EASDh3E,KAAKirH,OAAOj0C,GAAQ/rE,WAPpB,KAAK,GAAI8J,KAAO/U,MAAKirH,OAEjBjrH,KAAKirH,OAAOl2G,GAAK9J,QAiB7B3H,IAAK,SAAS0zE,GAEV,MAAOh3E,MAAKirH,OAAOj0C,KAM3BnuD,EAAOuuD,YAAYv0E,UAAUC,YAAc+lB,EAAOuuD,YAkBlDvuD,EAAOsuD,MAAQ,SAAUj3E,EAAM6U,EAAKwvB,EAAQgmC,EAAMrP,GAE/BxxD,SAAX66B,IAAwBA,EAAS,GACxB76B,SAAT6gE,IAAsBA,GAAO,GACjB7gE,SAAZwxD,IAAyBA,EAAUh7D,EAAKmpC,MAAM+hF,iBAMlDprH,KAAKE,KAAOA,EAKZF,KAAK05B,KAAO3kB,EAKZ/U,KAAK+U,IAAMA,EAKX/U,KAAKuqE,KAAOA,EAKZvqE,KAAKukC,OAASA,EAKdvkC,KAAKqrH,WAKLrrH,KAAKsN,QAAU,KAKftN,KAAKynH,UAAW,EAKhBznH,KAAKsrH,cAAgB,EAMrBtrH,KAAKsxG,UAAY,EAKjBtxG,KAAKurH,YAAc,EAKnBvrH,KAAK4lC,SAAW,EAKhB5lC,KAAKwrH,WAAa,EAKlBxrH,KAAKmB,SAAW,EAKhBnB,KAAKyrH,SAAW,EAMhBzrH,KAAK8pC,QAAS,EAKd9pC,KAAK0rH,eAAiB,EAKtB1rH,KAAK2rH,WAAa,EAMlB3rH,KAAKu2G,WAAY,EAMjBv2G,KAAK4rH,cAAgB,GAKrB5rH,KAAK6rH,UAAY,KAMjB7rH,KAAK8rH,iBAAkB,EAMvB9rH,KAAK+rH,UAAW,EAMhB/rH,KAAKgsH,eAAgB,EAMrBhsH,KAAK6mH,cAAgB7mH,KAAKE,KAAKmpC,MAAMw9E,cAKrC7mH,KAAK8mH,cAAgB9mH,KAAKE,KAAKmpC,MAAMy9E,cAKrC9mH,KAAKisH,aAAe,KAKpBjsH,KAAKksH,eAAiB,KAKtBlsH,KAAKmsH,SAAW,KAMhBnsH,KAAKosH,OAAS,KAEVpsH,KAAK6mH,eAEL7mH,KAAKsN,QAAUtN,KAAKE,KAAKmpC,MAAM/7B,QAC/BtN,KAAKksH,eAAiBlsH,KAAKE,KAAKmpC,MAAMgjF,WAEN3iH,SAA5B1J,KAAKsN,QAAQg/G,WAEbtsH,KAAKmsH,SAAWnsH,KAAKsN,QAAQi/G,iBAI7BvsH,KAAKmsH,SAAWnsH,KAAKsN,QAAQg/G,aAGjCtsH,KAAKmsH,SAASK,KAAK/oH,MAAQ8gC,EAASvkC,KAAKE,KAAKmpC,MAAM9E,OAEhD22B,GAEAl7D,KAAKmsH,SAASjxD,QAAQl7D,KAAKksH,iBAG1BlsH,KAAK8mH,gBAEN9mH,KAAKE,KAAKgpC,MAAMy0E,SAAS5oG,IAAQ/U,KAAKE,KAAKgpC,MAAM80E,aAAajpG,IAE9D/U,KAAKosH,OAASpsH,KAAKE,KAAKgpC,MAAMi2E,aAAapqG,GAC3C/U,KAAKsrH,cAAgB,EAEjBtrH,KAAKosH,OAAOxmF,WAEZ5lC,KAAKsrH,cAAgBtrH,KAAKosH,OAAOxmF,WAKrC5lC,KAAKE,KAAKgpC,MAAM8xE,cAAcl9E,IAAI99B,KAAKysH,iBAAkBzsH,OAOjEA,KAAK0sH,UAAY,GAAI7jG,GAAOuc,OAK5BplC,KAAK2sH,OAAS,GAAI9jG,GAAOuc,OAKzBplC,KAAKwrC,QAAU,GAAI3iB,GAAOuc,OAK1BplC,KAAK0rC,SAAW,GAAI7iB,GAAOuc,OAK3BplC,KAAK+vG,OAAS,GAAIlnF,GAAOuc,OAKzBplC,KAAK4sH,OAAS,GAAI/jG,GAAOuc,OAKzBplC,KAAK6sH,OAAS,GAAIhkG,GAAOuc,OAKzBplC,KAAK8sH,iBAAmB,GAAIjkG,GAAOuc,OAKnCplC,KAAKslC,eAAiB,GAAIzc,GAAOuc,OAMjCplC,KAAK+sH,QAAUxoF,EAMfvkC,KAAKgtH,QAAU,KAMfhtH,KAAKitH,QAAS,EAMdjtH,KAAKktH,YAAc,EAMnBltH,KAAKmtH,cAAgB,EAMrBntH,KAAKotH,YAAc,EAMnBptH,KAAKqtH,WAAa,EAMlBrtH,KAAKstH,YAAc,EAMnBttH,KAAKutH,UAAY,EAMjBvtH,KAAKu9C,SAAU,EAMfv9C,KAAKwtH,2BAA4B,GAIrC3kG,EAAOsuD,MAAMt0E,WAQT4pH,iBAAkB,SAAU13G,GAEpBA,IAAQ/U,KAAK+U,MAEb/U,KAAKosH,OAASpsH,KAAKE,KAAKgpC,MAAMi2E,aAAan/G,KAAK+U,KAChD/U,KAAKsrH,cAAgBtrH,KAAKosH,OAAOxmF,WAgBzCulF,UAAW,SAAUzxF,EAAMruB,EAAOu6B,EAAUrB,EAAQgmC,IAE/B7gE,SAAbk8B,GAAuC,OAAbA,KAAqBA,EAAW,IAC/Cl8B,SAAX66B,GAAmC,OAAXA,KAAmBA,EAAS,GAC3C76B,SAAT6gE,IAAsBA,GAAO,GAEjCvqE,KAAKqrH,QAAQ3xF,IACTA,KAAMA,EACNruB,MAAOA,EACPJ,KAAMI,EAAQu6B,EACdrB,OAAQA,EACRqB,SAAUA,EACV4lF,WAAuB,IAAX5lF,EACZ2kC,KAAMA,IAUdkjD,aAAc,SAAU/zF,SAEb15B,MAAKqrH,QAAQ3xF,IAWxBg0F,eAAgB,WAEZ1tH,KAAKosH,OAAOuB,QAAU,KACtB3tH,KAAKu2G,WAAY,EACjBv2G,KAAKurH,YAAcvrH,KAAKwrH,WACxBxrH,KAAKiL,QAST28B,OAAQ,WAEJ,MAAK5nC,MAAKE,KAAKgpC,MAAMm1E,cAAcr+G,KAAK+U,MAMpC/U,KAAK4tH,YAAc5tH,KAAKwtH,4BAExBxtH,KAAK0sH,UAAUxkF,SAASloC,MACxBA,KAAKwtH,2BAA4B,GAGjCxtH,KAAK8rH,iBAAmB9rH,KAAKE,KAAKgpC,MAAM80E,aAAah+G,KAAK+U,OAE1D/U,KAAK8rH,iBAAkB,EACvB9rH,KAAKqqE,KAAKrqE,KAAKktH,YAAaltH,KAAKmtH,cAAentH,KAAKotH,YAAaptH,KAAKutH,iBAGvEvtH,KAAKu2G,YAELv2G,KAAKurH,YAAcvrH,KAAKE,KAAK8nC,KAAKA,KAAOhoC,KAAKsxG,UAE1CtxG,KAAKurH,aAAevrH,KAAKwrH,aAErBxrH,KAAK6mH,cAED7mH,KAAKuqE,MAGLvqE,KAAK+vG,OAAO7nE,SAASloC,MAGrBA,KAAKu2G,WAAY,EAEU,KAAvBv2G,KAAK4rH,eAEL5rH,KAAKurH,YAAc,EACnBvrH,KAAKsxG,UAAYtxG,KAAKE,KAAK8nC,KAAKA,KAChChoC,KAAKu2G,WAAY,IAIjBv2G,KAAK8sH,iBAAiB5kF,SAASloC,KAAK4rH,cAAe5rH,MACnDA,KAAKqqE,KAAKrqE,KAAK4rH,cAAe,EAAG5rH,KAAKukC,QAAQ,GAAM,KAM7B,KAAvBvkC,KAAK4rH,eAEL5rH,KAAKiL,OAMTjL,KAAKuqE,MAELvqE,KAAK+vG,OAAO7nE,SAASloC,MAEM,KAAvBA,KAAK4rH,gBAEL5rH,KAAKurH,YAAc,EACnBvrH,KAAKsxG,UAAYtxG,KAAKE,KAAK8nC,KAAKA,MAIpChoC,KAAKu2G,WAAY,EAEjBv2G,KAAKqqE,KAAKrqE,KAAK4rH,cAAe,EAAG5rH,KAAKukC,QAAQ,GAAM,IAIpDvkC,KAAKiL,eAxEjBjL,MAAK+C,WAsFb8qH,SAAU,SAAUtpF,GAEhBvkC,KAAKqqE,KAAK,KAAM,EAAG9lC,GAAQ,IAe/B8lC,KAAM,SAAU2M,EAAQ71E,EAAUojC,EAAQgmC,EAAMujD,GAK5C,IAHepkH,SAAXstE,GAAwBA,KAAW,GAAoB,OAAXA,KAAmBA,EAAS,IACvDttE,SAAjBokH,IAA8BA,GAAe,GAE7C9tH,KAAKu2G,YAAcv2G,KAAKgsH,gBAAkB8B,IAAiB9tH,KAAK+rH,SAGhE,MAAO/rH,KAGX,IAAIA,KAAKosH,QAAUpsH,KAAKu2G,YAAcv2G,KAAKgsH,gBAAkBhsH,KAAK+rH,UAAY+B,GAE1E,GAAI9tH,KAAK6mH,cACT,CACI,GAAyBn9G,SAArB1J,KAAKosH,OAAOnhH,KAEZjL,KAAKosH,OAAO2B,QAAQ,OAIpB,KACI/tH,KAAKosH,OAAOnhH,KAAK,GAErB,MAAOsuB,IAIPv5B,KAAKisH,aAELjsH,KAAKosH,OAAOhxD,WAAWp7D,KAAKisH,cAI5BjsH,KAAKosH,OAAOhxD,WAAWp7D,KAAKmsH,cAG3BnsH,MAAK8mH,gBAEV9mH,KAAKosH,OAAO3gF,QACZzrC,KAAKosH,OAAOb,YAAc,EAIlC,IAAe,KAAXv0C,GAAiB5zE,OAAO+2B,KAAKn6B,KAAKqrH,SAASnoH,OAAS,EAIpD,MAAOlD,KAGX,IAAe,KAAXg3E,EACJ,CAGI,GAFAh3E,KAAK4rH,cAAgB50C,GAEjBh3E,KAAKqrH,QAAQr0C,GA2Bb,MAAOh3E,KAxBPA,MAAKmB,SAAWnB,KAAKqrH,QAAQr0C,GAAQ3rE,MACrCrL,KAAKukC,OAASvkC,KAAKqrH,QAAQr0C,GAAQzyC,OACnCvkC,KAAKuqE,KAAOvqE,KAAKqrH,QAAQr0C,GAAQzM,KACjCvqE,KAAK4lC,SAAW5lC,KAAKqrH,QAAQr0C,GAAQpxC,SACrC5lC,KAAKwrH,WAAaxrH,KAAKqrH,QAAQr0C,GAAQw0C,WAEjB,mBAAXjnF,KAEPvkC,KAAKukC,OAASA,GAGE,mBAATgmC,KAEPvqE,KAAKuqE,KAAOA,GAGhBvqE,KAAKktH,YAAcl2C,EACnBh3E,KAAKmtH,cAAgBntH,KAAKmB,SAC1BnB,KAAKotH,YAAcptH,KAAKukC,OACxBvkC,KAAKutH,UAAYvtH,KAAKuqE,SAU1BppE,GAAWA,GAAY,EAERuI,SAAX66B,IAAwBA,EAASvkC,KAAK+sH,SAC7BrjH,SAAT6gE,IAAsBA,EAAOvqE,KAAKuqE,MAEtCvqE,KAAKmB,SAAWN,KAAK+G,IAAI,EAAGzG,GAC5BnB,KAAKukC,OAASA,EACdvkC,KAAKuqE,KAAOA,EACZvqE,KAAK4lC,SAAW,EAChB5lC,KAAKwrH,WAAa,EAElBxrH,KAAKktH,YAAcl2C,EACnBh3E,KAAKmtH,cAAgBhsH,EACrBnB,KAAKotH,YAAc7oF,EACnBvkC,KAAKutH,UAAYhjD,CAwHrB,OArHIvqE,MAAK6mH,cAGD7mH,KAAKE,KAAKgpC,MAAM60E,eAAe/9G,KAAK+U,MAEpC/U,KAAKosH,OAASpsH,KAAKsN,QAAQ0gH,qBAEvBhuH,KAAKisH,aAELjsH,KAAKosH,OAAOlxD,QAAQl7D,KAAKisH,cAIzBjsH,KAAKosH,OAAOlxD,QAAQl7D,KAAKmsH,UAG7BnsH,KAAKgtH,QAAUhtH,KAAKE,KAAKgpC,MAAMi2E,aAAan/G,KAAK+U,KACjD/U,KAAKosH,OAAO1wG,OAAS1b,KAAKgtH,QAEtBhtH,KAAKuqE,MAAmB,KAAXyM,IAEbh3E,KAAKosH,OAAO7hD,MAAO,GAGlBvqE,KAAKuqE,MAAmB,KAAXyM,IAEdh3E,KAAKosH,OAAOuB,QAAU3tH,KAAK0tH,eAAet3F,KAAKp2B,OAGnDA,KAAKsrH,cAAgBtrH,KAAKosH,OAAO1wG,OAAOkqB,SAElB,IAAlB5lC,KAAK4lC,WAEL5lC,KAAK4lC,SAAW5lC,KAAKsrH,cACrBtrH,KAAKwrH,WAAa3qH,KAAKgH,KAA0B,IAArB7H,KAAKsrH,gBAIX5hH,SAAtB1J,KAAKosH,OAAO/gH,MAEZrL,KAAKosH,OAAO6B,YAAY,EAAGjuH,KAAKmB,SAAUnB,KAAK4lC,UAI3C5lC,KAAKuqE,MAAmB,KAAXyM,EAEbh3E,KAAKosH,OAAO/gH,MAAM,EAAG,GAIrBrL,KAAKosH,OAAO/gH,MAAM,EAAGrL,KAAKmB,SAAUnB,KAAK4lC,UAIjD5lC,KAAKu2G,WAAY,EACjBv2G,KAAKsxG,UAAYtxG,KAAKE,KAAK8nC,KAAKA,KAChChoC,KAAKurH,YAAc,EACnBvrH,KAAKyrH,SAAWzrH,KAAKsxG,UAAYtxG,KAAKwrH,WACtCxrH,KAAK2sH,OAAOzkF,SAASloC,QAIrBA,KAAK8rH,iBAAkB,EAEnB9rH,KAAKE,KAAKgpC,MAAMy0E,SAAS39G,KAAK+U,MAAQ/U,KAAKE,KAAKgpC,MAAMy0E,SAAS39G,KAAK+U,KAAKonG,cAAe,GAExFn8G,KAAKE,KAAKmpC,MAAM4/E,OAAOjpH,KAAK+U,IAAK/U,OAMrCA,KAAKE,KAAKgpC,MAAMy0E,SAAS39G,KAAK+U,MAAQ/U,KAAKE,KAAKgpC,MAAMy0E,SAAS39G,KAAK+U,KAAKsyC,QAEzErnD,KAAKE,KAAKgpC,MAAMw0E,YAAY19G,KAAK+U,KACjC/U,KAAK8rH,iBAAkB,GAInB9rH,KAAKosH,SAAWpsH,KAAKE,KAAKuzC,OAAOqM,UAAuC,IAA3B9/C,KAAKosH,OAAO7tB,aAEzDv+F,KAAKosH,OAAO/hD,OAEZrqE,KAAKsrH,cAAgBtrH,KAAKosH,OAAOxmF,SAEX,IAAlB5lC,KAAK4lC,WAEL5lC,KAAK4lC,SAAW5lC,KAAKsrH,cACrBtrH,KAAKwrH,WAAkC,IAArBxrH,KAAKsrH,eAG3BtrH,KAAKosH,OAAOb,YAAcvrH,KAAKmB,SAC/BnB,KAAKosH,OAAO8B,MAAQluH,KAAKitH,OAErBjtH,KAAKitH,QAAUjtH,KAAKE,KAAKmpC,MAAM8kF,KAE/BnuH,KAAKosH,OAAO7nF,OAAS,EAIrBvkC,KAAKosH,OAAO7nF,OAASvkC,KAAK+sH,QAG9B/sH,KAAKu2G,WAAY,EACjBv2G,KAAKsxG,UAAYtxG,KAAKE,KAAK8nC,KAAKA,KAChChoC,KAAKurH,YAAc,EACnBvrH,KAAKyrH,SAAWzrH,KAAKsxG,UAAYtxG,KAAKwrH,WAEtCxrH,KAAK2sH,OAAOzkF,SAASloC,OAIrBA,KAAK8rH,iBAAkB,EAK5B9rH,MAaXmsC,QAAS,SAAU6qC,EAAQ71E,EAAUojC,EAAQgmC,GAEzCyM,EAASA,GAAU,GACnB71E,EAAWA,GAAY,EACvBojC,EAASA,GAAU,EACN76B,SAAT6gE,IAAsBA,GAAO,GAEjCvqE,KAAKqqE,KAAK2M,EAAQ71E,EAAUojC,EAAQgmC,GAAM,IAS9C9+B,MAAO,WAECzrC,KAAKu2G,WAAav2G,KAAKosH,SAEvBpsH,KAAK8pC,QAAS,EACd9pC,KAAK0rH,eAAiB1rH,KAAKurH,YAC3BvrH,KAAK2rH,WAAa3rH,KAAKE,KAAK8nC,KAAKA,KACjChoC,KAAKqtH,WAAartH,KAAKosH,OAAOb,YAC9BvrH,KAAKwrC,QAAQtD,SAASloC,MACtBA,KAAKiL,SAUb0gC,OAAQ,WAEJ,GAAI3rC,KAAK8pC,QAAU9pC,KAAKosH,OACxB,CACI,GAAIpsH,KAAK6mH,cACT,CACI,GAAIriH,GAAI3D,KAAK+G,IAAI,EAAG5H,KAAKmB,SAAYnB,KAAK0rH,eAAiB,IAE3D1rH,MAAKosH,OAASpsH,KAAKsN,QAAQ0gH,qBAC3BhuH,KAAKosH,OAAO1wG,OAAS1b,KAAKgtH,QAEtBhtH,KAAKisH,aAELjsH,KAAKosH,OAAOlxD,QAAQl7D,KAAKisH,cAIzBjsH,KAAKosH,OAAOlxD,QAAQl7D,KAAKmsH,UAGzBnsH,KAAKuqE,OAELvqE,KAAKosH,OAAO7hD,MAAO,GAGlBvqE,KAAKuqE,MAA+B,KAAvBvqE,KAAK4rH,gBAEnB5rH,KAAKosH,OAAOuB,QAAU3tH,KAAK0tH,eAAet3F,KAAKp2B,MAGnD,IAAI4lC,GAAW5lC,KAAK4lC,SAAY5lC,KAAK0rH,eAAiB,GAE5BhiH,UAAtB1J,KAAKosH,OAAO/gH,MAEZrL,KAAKosH,OAAO6B,YAAY,EAAGzpH,EAAGohC,GAK1B5lC,KAAKuqE,MAAQvqE,KAAKE,KAAKuzC,OAAOkM,OAGS,KAAnC3/C,KAAKE,KAAKuzC,OAAOgoD,cAEjBz7F,KAAKosH,OAAO/gH,MAAM,GAIlBrL,KAAKosH,OAAO/gH,MAAM,EAAG7G,GAKzBxE,KAAKosH,OAAO/gH,MAAM,EAAG7G,EAAGohC,OAMhC5lC,MAAKosH,OAAOb,YAAcvrH,KAAKqtH,WAC/BrtH,KAAKosH,OAAO/hD,MAGhBrqE,MAAKu2G,WAAY,EACjBv2G,KAAK8pC,QAAS,EACd9pC,KAAKsxG,WAActxG,KAAKE,KAAK8nC,KAAKA,KAAOhoC,KAAK2rH,WAC9C3rH,KAAK0rC,SAASxD,SAASloC,QAU/BiL,KAAM,WAEF,GAAIjL,KAAKu2G,WAAav2G,KAAKosH,OAEvB,GAAIpsH,KAAK6mH,cACT,CACI,GAAyBn9G,SAArB1J,KAAKosH,OAAOnhH,KAEZjL,KAAKosH,OAAO2B,QAAQ,OAIpB,KACI/tH,KAAKosH,OAAOnhH,KAAK,GAErB,MAAOsuB,IAMPv5B,KAAKisH,aAELjsH,KAAKosH,OAAOhxD,WAAWp7D,KAAKisH,cAI5BjsH,KAAKosH,OAAOhxD,WAAWp7D,KAAKmsH,cAG3BnsH,MAAK8mH,gBAEV9mH,KAAKosH,OAAO3gF,QACZzrC,KAAKosH,OAAOb,YAAc,EAOlC,IAHAvrH,KAAK8rH,iBAAkB,EACvB9rH,KAAKu2G,WAAY,GAEZv2G,KAAK8pC,OACV,CACI,GAAIskF,GAAapuH,KAAK4rH,aAEK,MAAvB5rH,KAAK4rH,eAEL5rH,KAAK8sH,iBAAiB5kF,SAASloC,KAAK4rH,cAAe5rH,MAGvDA,KAAK4rH,cAAgB,GAEE,OAAnB5rH,KAAK6rH,WAEL7rH,KAAK6rH,UAAU5gH,OAGnBjL,KAAK4sH,OAAO1kF,SAASloC,KAAMouH,KAiBnCC,OAAQ,SAAUzoF,EAAU2kC,EAAMyM,GAEjBttE,SAAT6gE,IAAsBA,GAAO,GAClB7gE,SAAXstE,IAAwBA,EAASh3E,KAAK4rH,eAEtC5rH,KAAK8pC,SAKT9pC,KAAKqqE,KAAK2M,EAAQ,EAAG,EAAGzM,GAExBvqE,KAAKsuH,OAAO1oF,EAAU,KAY1B2oF,QAAS,SAAU3oF,GAEf5lC,KAAKsuH,OAAO1oF,EAAU,IAa1B0oF,OAAQ,SAAU1oF,EAAUrB,GAExB,GAAKvkC,KAAKu2G,YAAav2G,KAAK8pC,QAAUvF,IAAWvkC,KAAKukC,OAAtD,CAOA,GAFiB76B,SAAbk8B,IAA0BA,EAAW,KAE1Bl8B,SAAX66B,EAGA,WADAzxB,SAAQwkB,KAAK,4CAIjBt3B,MAAK6rH,UAAY7rH,KAAKE,KAAK49B,IAAIq0C,MAAMnyE,MAAMo6B,IAAMmK,OAAQA,GAAUqB,EAAU/c,EAAOwiF,OAAOK,OAAOC,MAAM,GAExG3rG,KAAK6rH,UAAU3b,WAAWpyE,IAAI99B,KAAKwuH,aAAcxuH,QAUrDwuH,aAAc,WAEVxuH,KAAKslC,eAAe4C,SAASloC,KAAMA,KAAKukC,QAEpB,IAAhBvkC,KAAKukC,QAELvkC,KAAKiL,QAgBbwjH,mBAAoB,SAAUC,GAItB1uH,KAAK8mH,eAAiB9mH,KAAKosH,SAE3BpsH,KAAKosH,OAAO7nF,OAASmqF,EAAe1uH,KAAK+sH,UAWjDhqH,QAAS,SAAUkO,GAEAvH,SAAXuH,IAAwBA,GAAS,GAErCjR,KAAKiL,OAEDgG,EAEAjR,KAAKE,KAAKmpC,MAAMp4B,OAAOjR,OAIvBA,KAAKqrH,WACLrrH,KAAKsN,QAAU,KACftN,KAAKgtH,QAAU,KACfhtH,KAAKisH,aAAe,KAEpBjsH,KAAK0sH,UAAUz9E,UACfjvC,KAAK2sH,OAAO19E,UACZjvC,KAAKwrC,QAAQyD,UACbjvC,KAAK0rC,SAASuD,UACdjvC,KAAK+vG,OAAO9gE,UACZjvC,KAAK4sH,OAAO39E,UACZjvC,KAAK6sH,OAAO59E,UACZjvC,KAAK8sH,iBAAiB79E,aAOlCpmB,EAAOsuD,MAAMt0E,UAAUC,YAAc+lB,EAAOsuD,MAO5C/zE,OAAOC,eAAewlB,EAAOsuD,MAAMt0E,UAAW,cAE1CS,IAAK,WACD,MAAOtD,MAAKE,KAAKgpC,MAAMy0E,SAAS39G,KAAK+U,KAAKonG,cAUlD/4G,OAAOC,eAAewlB,EAAOsuD,MAAMt0E,UAAW,aAE1CS,IAAK,WACD,MAAOtD,MAAKE,KAAKgpC,MAAM60E,eAAe/9G,KAAK+U,QASnD3R,OAAOC,eAAewlB,EAAOsuD,MAAMt0E,UAAW,QAE1CS,IAAK,WAED,MAAQtD,MAAKitH,QAAUjtH,KAAKE,KAAKmpC,MAAM8kF,MAI3C3qH,IAAK,SAAUC,GAEXA,EAAQA,IAAS,EAEbA,IAAUzD,KAAKitH,SAKfxpH,GAEAzD,KAAKitH,QAAS,EACdjtH,KAAKstH,YAActtH,KAAKotH,YAEpBptH,KAAK6mH,cAEL7mH,KAAKmsH,SAASK,KAAK/oH,MAAQ,EAEtBzD,KAAK8mH,eAAiB9mH,KAAKosH,SAEhCpsH,KAAKosH,OAAO7nF,OAAS,KAKzBvkC,KAAKitH,QAAS,EAEVjtH,KAAK6mH,cAEL7mH,KAAKmsH,SAASK,KAAK/oH,MAAQzD,KAAKstH,YAE3BttH,KAAK8mH,eAAiB9mH,KAAKosH,SAEhCpsH,KAAKosH,OAAO7nF,OAASvkC,KAAKstH,cAIlCttH,KAAK6sH,OAAO3kF,SAASloC,UAW7BoD,OAAOC,eAAewlB,EAAOsuD,MAAMt0E,UAAW,UAE1CS,IAAK,WACD,MAAOtD,MAAK+sH,SAGhBvpH,IAAK,SAAUC,GAQX,MALIzD,MAAKE,KAAKuzC,OAAOkoD,SAAW37F,KAAK8mH,gBAEjCrjH,EAAQzD,KAAKE,KAAKooC,KAAK7H,MAAMh9B,EAAO,EAAG,IAGvCzD,KAAKitH,YAELjtH,KAAKstH,YAAc7pH,IAIvBzD,KAAKotH,YAAc3pH,EACnBzD,KAAK+sH,QAAUtpH,OAEXzD,KAAK6mH,cAEL7mH,KAAKmsH,SAASK,KAAK/oH,MAAQA,EAEtBzD,KAAK8mH,eAAiB9mH,KAAKosH,SAEhCpsH,KAAKosH,OAAO7nF,OAAS9gC,QA+BjColB,EAAOk2B,aAAe,SAAU7+C,GAK5BF,KAAKE,KAAOA,EAKZF,KAAK2uH,cAAgB,GAAI9lG,GAAOuc,OAMhCplC,KAAK4uH,eAAiB,GAAI/lG,GAAOuc,OAMjCplC,KAAK6sH,OAAS,GAAIhkG,GAAOuc,OAMzBplC,KAAK6uH,SAAW,GAAIhmG,GAAOuc,OAM3BplC,KAAKsN,QAAU,KAMftN,KAAK6mH,eAAgB,EAMrB7mH,KAAK8mH,eAAgB,EAMrB9mH,KAAKukH,SAAU,EAMfvkH,KAAKorH,iBAAkB,EAMvBprH,KAAKo8G,aAAc,EAMnBp8G,KAAK8uH,SAAW,GAShB9uH,KAAK+gD,aAAc,EAOnB/gD,KAAK+uH,YAAa,EAOlB/uH,KAAKitH,QAAS,EAOdjtH,KAAKgvH,cAAgB,KAOrBhvH,KAAK+sH,QAAU,EAMf/sH,KAAKivH,WAMLjvH,KAAKkvH,WAAa,GAAIrmG,GAAOoxB,SAM7Bj6C,KAAKmvH,WAAY,EAMjBnvH,KAAKovH,eAAiB,KAMtBpvH,KAAKqvH,cAAgB,MAIzBxmG,EAAOk2B,aAAal8C,WAOhB6jC,KAAM,WAQF,GANI1mC,KAAKE,KAAKuzC,OAAOyN,KAAOlhD,KAAKE,KAAKuzC,OAAOiM,YAAa,IAEtD1/C,KAAK8uH,SAAW,GAIhBj8G,OAAqB,aACzB,CAEI,GAAIA,OAAqB,aAAEy8G,gBAAiB,EAIxC,MAFAtvH,MAAKukH,SAAU,OACfvkH,KAAKo8G,aAAc,EAKvB,IAAIvpG,OAAqB,aAAE08G,mBAAoB,EAI3C,MAFAvvH,MAAK8mH,eAAgB,OACrB9mH,KAAKo8G,aAAc,GAK3B,GAAIvpG,OAAqB,cAAKA,OAAqB,aAAE28G,aAEjDxvH,KAAKsN,QAAUuF,OAAqB,aAAE28G,iBAItC,IAAM38G,OAAqB,aAEvB,IACI7S,KAAKsN,QAAU,GAAIuF,QAAqB,aAC1C,MAAOosF,GACLj/F,KAAKsN,QAAU,KACftN,KAAK6mH,eAAgB,EACrB7mH,KAAKo8G,aAAc,MAGtB,IAAMvpG,OAA2B,mBAElC,IACI7S,KAAKsN,QAAU,GAAIuF,QAA2B,mBAChD,MAAOosF,GACLj/F,KAAKsN,QAAU,KACftN,KAAK6mH,eAAgB,EACrB7mH,KAAKo8G,aAAc,EAK/B,GAAqB,OAAjBp8G,KAAKsN,QACT,CAEI,GAAwB5D,SAApBmJ,OAAc,MAGd,YADA7S,KAAKukH,SAAU,EAKfvkH,MAAK8mH,eAAgB,MAKzB9mH,MAAK6mH,eAAgB,EAEWn9G,SAA5B1J,KAAKsN,QAAQg/G,WAEbtsH,KAAKqsH,WAAarsH,KAAKsN,QAAQi/G,iBAI/BvsH,KAAKqsH,WAAarsH,KAAKsN,QAAQg/G,aAGnCtsH,KAAKqsH,WAAWG,KAAK/oH,MAAQ,EAC7BzD,KAAKqsH,WAAWnxD,QAAQl7D,KAAKsN,QAAQ6vE,YAGpCn9E,MAAKukH,WAGDvkH,KAAKE,KAAKuzC,OAAOqM,UAAY9/C,KAAKE,KAAKuzC,OAAOyN,KAAQruC,OAAqB,cAAKA,OAAqB,aAAE48G,mBAExGzvH,KAAK0vH,gBAYjBA,aAAc,WAEN1vH,KAAKukH,SAAY1xG,OAAqB,cAAKA,OAAqB,aAAEy8G,gBAAiB,IAKnFtvH,KAAKE,KAAKuzC,OAAO0mD,WAAa,EAE9Bn6F,KAAKE,KAAKipC,MAAMma,MAAMiP,qBAAqBvyD,KAAK2vH,OAAQ3vH,MAAM,GAI9DA,KAAKE,KAAKipC,MAAMma,MAAMiP,qBAAqBvyD,KAAK2vH,OAAQ3vH,MAG5DA,KAAKo8G,aAAc,IAUvBuT,OAAQ,WAEJ,GAAI3vH,KAAKukH,UAAYvkH,KAAKo8G,aAAsC,OAAvBp8G,KAAKgvH,cAE1C,OAAO,CAIX,IAAIhvH,KAAK8mH,cAEL9mH,KAAKo8G,aAAc,EACnBp8G,KAAKgvH,cAAgB,SAEpB,IAAIhvH,KAAK6mH,cACd,CAII,GAAInrG,GAAS1b,KAAKsN,QAAQgV,aAAa,EAAG,EAAG,MAC7CtiB,MAAKgvH,cAAgBhvH,KAAKsN,QAAQ0gH,qBAClChuH,KAAKgvH,cAActzG,OAASA,EAC5B1b,KAAKgvH,cAAc9zD,QAAQl7D,KAAKsN,QAAQ6vE,aAEPzzE,SAA7B1J,KAAKgvH,cAAc3jH,MAEnBrL,KAAKgvH,cAAcY,OAAO,GAI1B5vH,KAAKgvH,cAAc3jH,MAAM,GAKjC,OAAO,GASXwkH,QAAS,WAEL,IAAI7vH,KAAKukH,QAKT,IAAK,GAAIthH,GAAI,EAAGA,EAAIjD,KAAKivH,QAAQ/rH,OAAQD,IAEjCjD,KAAKivH,QAAQhsH,IAEbjD,KAAKivH,QAAQhsH,GAAGgI,QAW5BukG,SAAU,WAEN,IAAIxvG,KAAKukH,QAKT,IAAK,GAAIthH,GAAI,EAAGA,EAAIjD,KAAKivH,QAAQ/rH,OAAQD,IAEjCjD,KAAKivH,QAAQhsH,IAEbjD,KAAKivH,QAAQhsH,GAAGwoC,SAW5BgkE,UAAW,WAEP,IAAIzvG,KAAKukH,QAKT,IAAK,GAAIthH,GAAI,EAAGA,EAAIjD,KAAKivH,QAAQ/rH,OAAQD,IAEjCjD,KAAKivH,QAAQhsH,IAEbjD,KAAKivH,QAAQhsH,GAAG0oC,UAa5Bs9E,OAAQ,SAAUl0G,EAAKs0B,GAEnBA,EAAQA,GAAS,IAEjB,IAAIymF,GAAY9vH,KAAKE,KAAKgpC,MAAMi2E,aAAapqG,EAE7C,IAAI+6G,GAEI9vH,KAAKE,KAAKgpC,MAAM60E,eAAehpG,MAAS,EAC5C,CACI/U,KAAKE,KAAKgpC,MAAM20E,YAAY9oG,EAAK,cAAc,EAE/C,IAAIm6B,GAAQlvC,IAEZ,KACIA,KAAKsN,QAAQyiH,gBAAgBD,EAAW,SAAUp0G,GAE1CA,IAEAwzB,EAAMhvC,KAAKgpC,MAAM40E,aAAa/oG,EAAK2G,GACnCwzB,EAAMy/E,cAAczmF,SAASnzB,EAAKs0B,MAI9C,MAAO9P,OAiBnBy2F,mBAAoB,SAAUC,EAAO12E,EAAUxN,GAEtB,gBAAVkkF,KAEPA,GAAUA,IAGdjwH,KAAKkvH,WAAWpmF,OAEhB,KAAK,GAAI7lC,GAAI,EAAGA,EAAIgtH,EAAM/sH,OAAQD,IAE1BgtH,EAAMhtH,YAAc4lB,GAAOsuD,MAEtBn3E,KAAKE,KAAKgpC,MAAM60E,eAAekS,EAAMhtH,GAAG8R,MAEzC/U,KAAKkvH,WAAWpxF,IAAImyF,EAAMhtH,GAAG8R,KAG3B/U,KAAKE,KAAKgpC,MAAM60E,eAAekS,EAAMhtH,KAE3CjD,KAAKkvH,WAAWpxF,IAAImyF,EAAMhtH,GAKJ,KAA1BjD,KAAKkvH,WAAWx/F,OAEhB1vB,KAAKmvH,WAAY,EACjB51E,EAAS7zC,KAAKqmC,KAId/rC,KAAKmvH,WAAY,EACjBnvH,KAAKovH,eAAiB71E,EACtBv5C,KAAKqvH,cAAgBtjF,IAW7BnE,OAAQ,WAEJ,IAAI5nC,KAAKukH,QAAT,EAKIvkH,KAAKo8G,aAAsC,OAAvBp8G,KAAKgvH,eAA2BhvH,KAAKgvH,cAAckB,gBAAkBlwH,KAAKgvH,cAAcmB,eAAiBnwH,KAAKgvH,cAAckB,gBAAkBlwH,KAAKgvH,cAAcoB,iBAErLpwH,KAAKo8G,aAAc,EACnBp8G,KAAKgvH,cAAgB,KAGzB,KAAK,GAAI/rH,GAAI,EAAGA,EAAIjD,KAAKivH,QAAQ/rH,OAAQD,IAErCjD,KAAKivH,QAAQhsH,GAAG2kC,QAGpB,IAAI5nC,KAAKmvH,UACT,CAGI,IAFA,GAAIp6G,GAAM/U,KAAKkvH,WAAWl/D,MAEnBj7C,GAEC/U,KAAKE,KAAKgpC,MAAM60E,eAAehpG,IAE/B/U,KAAKkvH,WAAWj+G,OAAO8D,GAG3BA,EAAM/U,KAAKkvH,WAAWt3E,IAGI,KAA1B53C,KAAKkvH,WAAWx/F,QAEhB1vB,KAAKmvH,WAAY,EACjBnvH,KAAKovH,eAAe1pH,KAAK1F,KAAKqvH,mBAgB1CvxF,IAAK,SAAU/oB,EAAKwvB,EAAQgmC,EAAMrP,GAEfxxD,SAAX66B,IAAwBA,EAAS,GACxB76B,SAAT6gE,IAAsBA,GAAO,GACjB7gE,SAAZwxD,IAAyBA,EAAUl7D,KAAKorH,gBAE5C,IAAI/hF,GAAQ,GAAIxgB,GAAOsuD,MAAMn3E,KAAKE,KAAM6U,EAAKwvB,EAAQgmC,EAAMrP,EAI3D,OAFAl7D,MAAKivH,QAAQlrH,KAAKslC,GAEXA,GAWXkpC,UAAW,SAASx9D,GAEhB,GAAIu9D,GAAc,GAAIzpD,GAAOuuD,YAAYp3E,KAAKE,KAAM6U,EAEpD,OAAOu9D,IAWXrhE,OAAQ,SAAUo4B,GAId,IAFA,GAAIpmC,GAAIjD,KAAKivH,QAAQ/rH,OAEdD,KAEH,GAAIjD,KAAKivH,QAAQhsH,KAAOomC,EAIpB,MAFArpC,MAAKivH,QAAQhsH,GAAGF,SAAQ,GACxB/C,KAAKivH,QAAQpmH,OAAO5F,EAAG,IAChB,CAIf,QAAO,GAYXotH,YAAa,SAAUt7G,GAKnB,IAHA,GAAI9R,GAAIjD,KAAKivH,QAAQ/rH,OACjB+G,EAAU,EAEPhH,KAECjD,KAAKivH,QAAQhsH,GAAG8R,MAAQA,IAExB/U,KAAKivH,QAAQhsH,GAAGF,SAAQ,GACxB/C,KAAKivH,QAAQpmH,OAAO5F,EAAG,GACvBgH,IAIR,OAAOA,IAaXogE,KAAM,SAAUt1D,EAAKwvB,EAAQgmC,GAEzB,IAAIvqE,KAAKukH,QAAT,CAKA,GAAIl7E,GAAQrpC,KAAK89B,IAAI/oB,EAAKwvB,EAAQgmC,EAIlC,OAFAlhC,GAAMghC,OAEChhC,IAUX2X,QAAS,WAEL,IAAIhhD,KAAKitH,OAAT,CAKAjtH,KAAKitH,QAAS,EAEVjtH,KAAK6mH,gBAEL7mH,KAAKstH,YAActtH,KAAKqsH,WAAWG,KAAK/oH,MACxCzD,KAAKqsH,WAAWG,KAAK/oH,MAAQ,EAIjC,KAAK,GAAIR,GAAI,EAAGA,EAAIjD,KAAKivH,QAAQ/rH,OAAQD,IAEjCjD,KAAKivH,QAAQhsH,GAAG6jH,gBAEhB9mH,KAAKivH,QAAQhsH,GAAGkrH,MAAO,EAI/BnuH,MAAK6sH,OAAO3kF,aAUhBiZ,UAAW,WAEP,GAAKnhD,KAAKitH,SAAUjtH,KAAK+uH,WAAzB,CAKA/uH,KAAKitH,QAAS,EAEVjtH,KAAK6mH,gBAEL7mH,KAAKqsH,WAAWG,KAAK/oH,MAAQzD,KAAKstH,YAItC,KAAK,GAAIrqH,GAAI,EAAGA,EAAIjD,KAAKivH,QAAQ/rH,OAAQD,IAEjCjD,KAAKivH,QAAQhsH,GAAG6jH,gBAEhB9mH,KAAKivH,QAAQhsH,GAAGkrH,MAAO,EAI/BnuH,MAAK6uH,SAAS3mF,aASlBnlC,QAAS,WAEL/C,KAAK6vH,SAEL,KAAK,GAAI5sH,GAAI,EAAGA,EAAIjD,KAAKivH,QAAQ/rH,OAAQD,IAEjCjD,KAAKivH,QAAQhsH,IAEbjD,KAAKivH,QAAQhsH,GAAGF,SAIxB/C,MAAKivH,WAELjvH,KAAK2uH,cAAc1/E,UAEfjvC,KAAKsN,UAEDuF,OAAqB,aAGrBA,OAAqB,aAAE28G,aAAexvH,KAAKsN,QAIvCtN,KAAKsN,QAAQgjH,OAEbtwH,KAAKsN,QAAQgjH,WASjCznG,EAAOk2B,aAAal8C,UAAUC,YAAc+lB,EAAOk2B,aAMnD37C,OAAOC,eAAewlB,EAAOk2B,aAAal8C,UAAW,QAEjDS,IAAK,WAED,MAAOtD,MAAKitH,QAIhBzpH,IAAK,SAAUC,GAIX,GAFAA,EAAQA,IAAS,EAGjB,CACI,GAAIzD,KAAKitH,OAEL,MAGJjtH,MAAK+uH,YAAa,EAClB/uH,KAAKghD,cAGT,CACI,IAAKhhD,KAAKitH,OAEN,MAGJjtH,MAAK+uH,YAAa,EAClB/uH,KAAKmhD,gBAUjB/9C,OAAOC,eAAewlB,EAAOk2B,aAAal8C,UAAW,UAEjDS,IAAK,WAED,MAAOtD,MAAK+sH,SAIhBvpH,IAAK,SAAUC,GAWX,GATY,EAARA,EAEAA,EAAQ,EAEHA,EAAQ,IAEbA,EAAQ,GAGRzD,KAAK+sH,UAAYtpH,EACrB,CAGI,GAFAzD,KAAK+sH,QAAUtpH,EAEXzD,KAAK6mH,cAEL7mH,KAAKqsH,WAAWG,KAAK/oH,MAAQA,MAK7B,KAAK,GAAIR,GAAI,EAAGA,EAAIjD,KAAKivH,QAAQ/rH,OAAQD,IAEjCjD,KAAKivH,QAAQhsH,GAAG6jH,eAEhB9mH,KAAKivH,QAAQhsH,GAAGwrH,mBAAmBhrH,EAK/CzD,MAAK4uH,eAAe1mF,SAASzkC,OAoDzColB,EAAOy1B,aAAe,SAAUp+C,EAAMyG,EAAOC,GAQzC5G,KAAKE,KAAOA,EAQZF,KAAKuwH,IAAM1nG,EAAO4pB,IAOlBzyC,KAAKy4D,KAAO,KAOZz4D,KAAK2G,MAAQ,EAOb3G,KAAK4G,OAAS,EASd5G,KAAKwwH,SAAW,KAUhBxwH,KAAK01F,SAAW,KAShB11F,KAAKywH,UAAY,KAUjBzwH,KAAK0wH,UAAY,KASjB1wH,KAAK0Z,OAAS,GAAImP,GAAOznB,MAUzBpB,KAAK2wH,gBAAiB,EAUtB3wH,KAAK4wH,eAAgB,EAWrB5wH,KAAK6wH,sBAAuB,EAO5B7wH,KAAK8wH,wBAAyB,EAO9B9wH,KAAK+wH,sBAAuB,EA0B5B/wH,KAAKgxH,oBAAsB,GAAInoG,GAAOuc,OAUtCplC,KAAKixH,0BAA4B,GAAIpoG,GAAOuc,OAU5CplC,KAAKkxH,0BAA4B,GAAIroG,GAAOuc,OAe5CplC,KAAKmxH,iBAAmB,KAQxBnxH,KAAKoxH,yBAA2B,KAuBhCpxH,KAAKqxH,iBAAmB,GAAIxoG,GAAOuc,OAWnCplC,KAAKsxH,mBAAqB,GAAIzoG,GAAOuc,OAWrCplC,KAAKuxH,kBAAoB,GAAI1oG,GAAOuc,OAUpCplC,KAAKwxH,kBAAoBxxH,KAAKuwH,IAAIkB,uBAOlCzxH,KAAK2xB,YAAc,GAAI9I,GAAOznB,MAAM,EAAG,GAQvCpB,KAAK0xH,oBAAsB,GAAI7oG,GAAOznB,MAAM,EAAG,GAS/CpB,KAAKq5G,QAAUlgF,KAAM,EAAGyC,IAAK,EAAG1C,MAAO,EAAG2C,OAAQ,EAAGx2B,EAAG,EAAGC,EAAG,GAO9DtF,KAAKwG,OAAS,GAAIqiB,GAAOrmB,UAOzBxC,KAAK2xH,YAAc,EAOnB3xH,KAAK4xH,kBAAoB,EAQzB5xH,KAAKkzC,MAAQ,KAeblzC,KAAK6xH,mBACD34F,MAAO,SACP2C,OAAQ,IA6BZ77B,KAAK8xH,eACDC,oBAAoB,EACpBC,oBAAqB,KACrBC,WAAW,EACXC,SAAU,KACVC,4BAA4B,EAC5BC,iBAAiB,EACjBC,gBAAiB,IAQrBryH,KAAKsyH,WAAazpG,EAAOy1B,aAAai0E,SAOtCvyH,KAAKwyH,qBAAuB3pG,EAAOy1B,aAAai0E,SAUhDvyH,KAAKyyH,gBAAiB,EAUtBzyH,KAAKujG,WAAa,KAOlBvjG,KAAK0yH,kBAAoB,GAAI7pG,GAAOznB,MAAM,EAAG,GAW7CpB,KAAK2yH,oBAAsB,IAiB3B3yH,KAAK4yH,aAAe,GAAI/pG,GAAOuc,OAO/BplC,KAAK6yH,SAAW,KAOhB7yH,KAAK8yH,gBAAkB,KAMvB9yH,KAAK+yH,kBAAoB,KAOzB/yH,KAAKgzH,mBAAqB,KAO1BhzH,KAAKizH,UAAY,GAAIpqG,GAAOrmB,UAO5BxC,KAAKkzH,iBAAmB,GAAIrqG,GAAOznB,MAAM,EAAG,GAO5CpB,KAAKmzH,eAAiB,GAAItqG,GAAOznB,MAAM,EAAG,GAO1CpB,KAAKozH,YAAc,EASnBpzH,KAAKqzH,gBAAkB,EAOvBrzH,KAAKszH,qBAAuB,IAO5BtzH,KAAKuzH,cAAgB,GAAI1qG,GAAOrmB,UAOhCxC,KAAKwzH,YAAc,GAAI3qG,GAAOrmB,UAO9BxC,KAAKyzH,wBAA0B,GAAI5qG,GAAOrmB,UAO1CxC,KAAK0zH,sBAAwB,GAAI7qG,GAAOrmB,UAMxCxC,KAAK2zH,SAAU,EAEXzzH,EAAKoyC,QAELtyC,KAAKuyC,YAAYryC,EAAKoyC,QAG1BtyC,KAAK4zH,WAAWjtH,EAAOC,IAU3BiiB,EAAOy1B,aAAau1E,UAAY,EAQhChrG,EAAOy1B,aAAai0E,SAAW,EAQ/B1pG,EAAOy1B,aAAaw1E,SAAW,EAQ/BjrG,EAAOy1B,aAAay1E,OAAS,EAQ7BlrG,EAAOy1B,aAAa01E,WAAa,EAEjCnrG,EAAOy1B,aAAaz7C,WAQhB6jC,KAAM,WAIF,GAAIutF,GAASj0H,KAAK8xH,aAElBmC,GAAOlC,mBAAqB/xH,KAAKE,KAAKuzC,OAAOoqD,aAAe79F,KAAKE,KAAKuzC,OAAOqM,SAGxE9/C,KAAKE,KAAKuzC,OAAOgqD,MAASz9F,KAAKE,KAAKuzC,OAAO8oD,QAAWv8F,KAAKE,KAAKuzC,OAAOymD,UAEpEl6F,KAAKE,KAAKuzC,OAAO8U,UAAYvoD,KAAKE,KAAKuzC,OAAOkM,OAE9Cs0E,EAAO/B,SAAW,GAAIrpG,GAAOznB,MAAM,EAAG,GAItC6yH,EAAO/B,SAAW,GAAIrpG,GAAOznB,MAAM,EAAG,IAI1CpB,KAAKE,KAAKuzC,OAAOymD,SAEjB+5B,EAAOjC,oBAAsB,SAC7BiC,EAAO5B,gBAAkB,mBAIzB4B,EAAOjC,oBAAsB,GAC7BiC,EAAO5B,gBAAkB,GAK7B,IAAInjF,GAAQlvC,IAEZA,MAAKk0H,mBAAqB,SAAShhF,GAC/B,MAAOhE,GAAMilF,kBAAkBjhF,IAGnClzC,KAAKo0H,cAAgB,SAASlhF,GAC1B,MAAOhE,GAAMmlF,aAAanhF,IAI9BrgC,OAAOugC,iBAAiB,oBAAqBpzC,KAAKk0H,oBAAoB,GACtErhH,OAAOugC,iBAAiB,SAAUpzC,KAAKo0H,eAAe,GAElDp0H,KAAK8xH,cAAcC,qBAEnB/xH,KAAKs0H,kBAAoB,SAASphF,GAC9B,MAAOhE,GAAMqlF,iBAAiBrhF,IAGlClzC,KAAKw0H,iBAAmB,SAASthF,GAC7B,MAAOhE,GAAMulF,gBAAgBvhF,IAGjC7iC,SAAS+iC,iBAAiB,yBAA0BpzC,KAAKs0H,mBAAmB,GAC5EjkH,SAAS+iC,iBAAiB,sBAAuBpzC,KAAKs0H,mBAAmB,GACzEjkH,SAAS+iC,iBAAiB,qBAAsBpzC,KAAKs0H,mBAAmB,GACxEjkH,SAAS+iC,iBAAiB,mBAAoBpzC,KAAKs0H,mBAAmB,GAEtEjkH,SAAS+iC,iBAAiB,wBAAyBpzC,KAAKw0H,kBAAkB,GAC1EnkH,SAAS+iC,iBAAiB,qBAAsBpzC,KAAKw0H,kBAAkB,GACvEnkH,SAAS+iC,iBAAiB,oBAAqBpzC,KAAKw0H,kBAAkB,GACtEnkH,SAAS+iC,iBAAiB,kBAAmBpzC,KAAKw0H,kBAAkB,IAGxEx0H,KAAKE,KAAKwrC,SAAS5N,IAAI99B,KAAK00H,aAAc10H,MAI1CA,KAAKuwH,IAAI79E,UAAU1yC,KAAKE,KAAK0Q,OAAQ5Q,KAAK0Z,QAE1C1Z,KAAKwG,OAAOw0B,MAAMh7B,KAAK0Z,OAAOrU,EAAGrF,KAAK0Z,OAAOpU,EAAGtF,KAAK2G,MAAO3G,KAAK4G,QAEjE5G,KAAK20H,YAAY30H,KAAKE,KAAKyG,MAAO3G,KAAKE,KAAK0G,QAG5C5G,KAAKwxH,kBAAoBxxH,KAAKuwH,IAAIkB,qBAAqBzxH,KAAK8xH,cAAcE,qBAEtEnpG,EAAO+rG,WAEP50H,KAAKy4D,KAAO,GAAI5vC,GAAO+rG,SAAS50H,KAAMA,KAAK2G,MAAO3G,KAAK4G,SAG3D5G,KAAK2zH,SAAU,EAEgB,OAA3B3zH,KAAK+yH,oBAEL/yH,KAAKsG,UAAYtG,KAAK+yH,kBACtB/yH,KAAK+yH,kBAAoB,OAYjCxgF,YAAa,SAAUD,GAES5oC,SAAxB4oC,EAAkB,YAEdtyC,KAAK2zH,QAEL3zH,KAAKsG,UAAYgsC,EAAkB,UAInCtyC,KAAK+yH,kBAAoBzgF,EAAkB,WAIb5oC,SAAlC4oC,EAA4B,sBAE5BtyC,KAAK60H,oBAAsBviF,EAA4B,qBAGvDA,EAAyB,mBAEzBtyC,KAAKmxH,iBAAmB7+E,EAAyB,mBAezDshF,WAAY,SAAUjtH,EAAOC,GAEzB,GAAI3C,GACAu7B,EAAO,GAAI3W,GAAOrmB,SAEG,MAArBxC,KAAKE,KAAK0B,SAEsB,gBAArB5B,MAAKE,KAAK0B,OAGjBqC,EAASoM,SAAS+yF,eAAepjG,KAAKE,KAAK0B,QAEtC5B,KAAKE,KAAK0B,QAAwC,IAA9B5B,KAAKE,KAAK0B,OAAOy3B,WAG1Cp1B,EAASjE,KAAKE,KAAK0B,SAKtBqC,GAaDjE,KAAKujG,WAAat/F,EAClBjE,KAAKyyH,gBAAiB,EAEtBzyH,KAAK80H,gBAAgB90H,KAAKuzH,eAE1B/zF,EAAK74B,MAAQ3G,KAAKuzH,cAAc5sH,MAChC64B,EAAK54B,OAAS5G,KAAKuzH,cAAc3sH,OAEjC5G,KAAK0Z,OAAOlW,IAAIxD,KAAKuzH,cAAcluH,EAAGrF,KAAKuzH,cAAcjuH,KAlBzDtF,KAAKujG,WAAa,KAClBvjG,KAAKyyH,gBAAiB,EAEtBjzF,EAAK74B,MAAQ3G,KAAKuwH,IAAIwE,aAAapuH,MACnC64B,EAAK54B,OAAS5G,KAAKuwH,IAAIwE,aAAanuH,OAEpC5G,KAAK0Z,OAAOlW,IAAI,EAAG,GAevB,IAAIs4E,GAAW,EACXC,EAAY,CAEK,iBAAVp1E,GAEPm1E,EAAWn1E,GAKX3G,KAAK0yH,kBAAkBrtH,EAAIszB,SAAShyB,EAAO,IAAM,IACjDm1E,EAAWt8C,EAAK74B,MAAQ3G,KAAK0yH,kBAAkBrtH,GAG7B,gBAAXuB,GAEPm1E,EAAYn1E,GAKZ5G,KAAK0yH,kBAAkBptH,EAAIqzB,SAAS/xB,EAAQ,IAAM,IAClDm1E,EAAYv8C,EAAK54B,OAAS5G,KAAK0yH,kBAAkBptH,GAGrDw2E,EAAWj7E,KAAKq1B,MAAM4lD,GACtBC,EAAYl7E,KAAKq1B,MAAM6lD,GAEvB/7E,KAAKizH,UAAUj4F,MAAM,EAAG,EAAG8gD,EAAUC,GAErC/7E,KAAKg1H,iBAAiBl5C,EAAUC,GAAW,IAU/C24C,aAAc,WAEV10H,KAAKi1H,aAAY,IAmBrBN,YAAa,SAAUhuH,EAAOC,GAE1B5G,KAAKizH,UAAUj4F,MAAM,EAAG,EAAGr0B,EAAOC,GAE9B5G,KAAKk1H,mBAAqBrsG,EAAOy1B,aAAay1E,QAE9C/zH,KAAKg1H,iBAAiBruH,EAAOC,GAAQ,GAGzC5G,KAAKi1H,aAAY,IAoBrBE,aAAc,SAAUC,EAAQC,EAAQC,EAAOC,GAE3Cv1H,KAAKkzH,iBAAiBl4F,MAAMo6F,EAAQC,GACpCr1H,KAAKmzH,eAAen4F,MAAc,EAARs6F,EAAmB,EAARC,GACrCv1H,KAAKi1H,aAAY,IAwBrBO,kBAAmB,SAAUj8E,EAAUjsC,GAEnCtN,KAAK6yH,SAAWt5E,EAChBv5C,KAAK8yH,gBAAkBxlH,GAY3BmoH,iBAAkB,WAEd,IAAK5sG,EAAOrmB,UAAUgiC,eAAexkC,KAAMA,KAAKyzH,2BAC3C5qG,EAAOrmB,UAAUgiC,eAAexkC,KAAKE,KAAMF,KAAK0zH,uBACrD,CACI,GAAI/sH,GAAQ3G,KAAK2G,MACbC,EAAS5G,KAAK4G,MAElB5G,MAAKyzH,wBAAwBz4F,MAAM,EAAG,EAAGr0B,EAAOC,GAChD5G,KAAK0zH,sBAAsB14F,MAAM,EAAG,EAAGh7B,KAAKE,KAAKyG,MAAO3G,KAAKE,KAAK0G,QAE9D5G,KAAKy4D,MAELz4D,KAAKy4D,KAAKo6D,SAASlsH,EAAOC,GAG9B5G,KAAK4yH,aAAa1qF,SAASloC,KAAM2G,EAAOC,GAGpC5G,KAAKk1H,mBAAqBrsG,EAAOy1B,aAAay1E,SAE9C/zH,KAAKE,KAAKopC,MAAMvhC,OAAOpB,EAAOC,GAC9B5G,KAAKE,KAAKkpC,KAAKrhC,OAAOpB,EAAOC,MAqBzC8uH,UAAW,SAAUlF,EAAUC,EAAW/6B,EAAUg7B,GAEhD1wH,KAAKwwH,SAAWA,EAChBxwH,KAAKywH,UAAYA,EAEO,mBAAb/6B,KAEP11F,KAAK01F,SAAWA,GAGK,mBAAdg7B,KAEP1wH,KAAK0wH,UAAYA,IAWzBvqH,UAAW,WAEP,KAAInG,KAAKE,KAAK8nC,KAAKA,KAAQhoC,KAAKozH,YAAcpzH,KAAKqzH,iBAAnD,CAKA,GAAIsC,GAAe31H,KAAKqzH,eACxBrzH,MAAKszH,qBAAuBqC,GAAgB,IAAM,EAAI,IAEtD31H,KAAKuwH,IAAI79E,UAAU1yC,KAAKE,KAAK0Q,OAAQ5Q,KAAK0Z,OAE1C,IAAIk8G,GAAY51H,KAAKuzH,cAAc5sH,MAC/BkvH,EAAa71H,KAAKuzH,cAAc3sH,OAChCJ,EAASxG,KAAK80H,gBAAgB90H,KAAKuzH,eAEnCuC,EAAgBtvH,EAAOG,QAAUivH,GAAapvH,EAAOI,SAAWivH,EAGhEE,EAAqB/1H,KAAKg2H,0BAE1BF,GAAiBC,KAEb/1H,KAAK6yH,UAEL7yH,KAAK6yH,SAASntH,KAAK1F,KAAK8yH,gBAAiB9yH,KAAMwG,GAGnDxG,KAAKi2H,eAELj2H,KAAKy1H,mBAIT,IAAIS,GAAkC,EAAvBl2H,KAAKqzH,eAGhBrzH,MAAKqzH,gBAAkBsC,IAEvBO,EAAWr1H,KAAKq9B,IAAIy3F,EAAc31H,KAAKszH,uBAG3CtzH,KAAKqzH,gBAAkBxqG,EAAOhoB,KAAK4/B,MAAMy1F,EAAU,GAAIl2H,KAAK2yH,qBAC5D3yH,KAAKozH,YAAcpzH,KAAKE,KAAK8nC,KAAKA,OAUtCgC,YAAa,WAEThqC,KAAKmG,YAGLnG,KAAKqzH,gBAAkBrzH,KAAK2yH;EAahCqC,iBAAkB,SAAUruH,EAAOC,EAAQmB,GAEvC/H,KAAK2G,MAAQA,EAAQ3G,KAAK0yH,kBAAkBrtH,EAC5CrF,KAAK4G,OAASA,EAAS5G,KAAK0yH,kBAAkBptH,EAE9CtF,KAAKE,KAAKyG,MAAQ3G,KAAK2G,MACvB3G,KAAKE,KAAK0G,OAAS5G,KAAK4G,OAExB5G,KAAK4xH,kBAAoB5xH,KAAK2G,MAAQ3G,KAAK4G,OAC3C5G,KAAKm2H,yBAEDpuH,IAGA/H,KAAKE,KAAKqG,SAASwB,OAAO/H,KAAK2G,MAAO3G,KAAK4G,QAG3C5G,KAAKE,KAAKob,OAAOutB,QAAQ7oC,KAAK2G,MAAO3G,KAAK4G,QAG1C5G,KAAKE,KAAKuE,MAAMsD,OAAO/H,KAAK2G,MAAO3G,KAAK4G,UAYhDuvH,uBAAwB,WAEpBn2H,KAAK2xB,YAAYtsB,EAAIrF,KAAKE,KAAKyG,MAAQ3G,KAAK2G,MAC5C3G,KAAK2xB,YAAYrsB,EAAItF,KAAKE,KAAK0G,OAAS5G,KAAK4G,OAE7C5G,KAAK0xH,oBAAoBrsH,EAAIrF,KAAK2G,MAAQ3G,KAAKE,KAAKyG,MACpD3G,KAAK0xH,oBAAoBpsH,EAAItF,KAAK4G,OAAS5G,KAAKE,KAAK0G,OAErD5G,KAAK2xH,YAAc3xH,KAAK2G,MAAQ3G,KAAK4G,OAGjC5G,KAAKE,KAAK0Q,QAEV5Q,KAAKuwH,IAAI79E,UAAU1yC,KAAKE,KAAK0Q,OAAQ5Q,KAAK0Z,QAG9C1Z,KAAKwG,OAAOw0B,MAAMh7B,KAAK0Z,OAAOrU,EAAGrF,KAAK0Z,OAAOpU,EAAGtF,KAAK2G,MAAO3G,KAAK4G,QAG7D5G,KAAKE,KAAKipC,OAASnpC,KAAKE,KAAKipC,MAAM9nC,OAEnCrB,KAAKE,KAAKipC,MAAM9nC,MAAM25B,MAAMh7B,KAAK2xB,YAAYtsB,EAAGrF,KAAK2xB,YAAYrsB,IAmBzE8wH,iBAAkB,SAAUzF,EAAgBC,GAElBlnH,SAAlBknH,IAA+BA,GAAgB,GAEnD5wH,KAAK2wH,eAAiBA,EACtB3wH,KAAK4wH,cAAgBA,EAErB5wH,KAAKi1H,aAAY,IAYrBoB,oBAAqB,SAAUC,GAE3B,MAAoB,qBAAhBA,GAAsD,uBAAhBA,EAE/B,WAEc,sBAAhBA,GAAuD,wBAAhBA,EAErC,YAIA,MAYfN,uBAAwB,WAEpB,GAAIO,GAAsBv2H,KAAKwxH,kBAC3BgF,EAAsBx2H,KAAK6wH,oBAE/B7wH,MAAKwxH,kBAAoBxxH,KAAKuwH,IAAIkB,qBAAqBzxH,KAAK8xH,cAAcE,qBAE1EhyH,KAAK6wH,qBAAwB7wH,KAAK2wH,iBAAmB3wH,KAAKy2H,aACrDz2H,KAAK4wH,gBAAkB5wH,KAAK02H,UAEjC,IAAIC,GAAUJ,IAAwBv2H,KAAKwxH,kBACvCoF,EAAqBJ,IAAwBx2H,KAAK6wH,oBAmBtD,OAjBI+F,KAEI52H,KAAK6wH,qBAEL7wH,KAAKixH,0BAA0B/oF,WAI/BloC,KAAKkxH,0BAA0BhpF,aAInCyuF,GAAWC,IAEX52H,KAAKgxH,oBAAoB9oF,SAASloC,KAAMu2H,EAAqBC,GAG1DG,GAAWC,GAWtBzC,kBAAmB,SAAUjhF,GAEzBlzC,KAAKkzC,MAAQA,EAEblzC,KAAKi1H,aAAY,IAWrBZ,aAAc,SAAUnhF,GAEpBlzC,KAAKkzC,MAAQA,EAEblzC,KAAKi1H,aAAY,IAUrB4B,UAAW,WAEP,GAAI3E,GAAWlyH,KAAK8xH,cAAcI,QAE9BA,IAEAr/G,OAAOq/G,SAASA,EAAS7sH,EAAG6sH,EAAS5sH,IAyB7CsjB,QAAS,WAEL5oB,KAAK62H,YACL72H,KAAKi1H,aAAY,IAUrBgB,aAAc,WAEV,GAAI3vH,GAAYtG,KAAKk1H,gBAErB,IAAI5uH,IAAcuiB,EAAOy1B,aAAay1E,OAGlC,WADA/zH,MAAK82H,YAoDT,IAhDA92H,KAAK62H,YAED72H,KAAK8xH,cAAcK,6BAInB9hH,SAASwvF,gBAAgBjkF,MAAM60G,UAAY59G,OAAOgmB,YAAc,MAGhE74B,KAAK6wH,qBAEL7wH,KAAK+2H,aAIDzwH,IAAcuiB,EAAOy1B,aAAau1E,UAElC7zH,KAAKg3H,cAEA1wH,IAAcuiB,EAAOy1B,aAAaw1E,UAElC9zH,KAAKi3H,cAAgBj3H,KAAKk3H,gBAC3Bl3H,KAAK8xH,cAAcM,iBAKnBpyH,KAAKm3H,YAAW,GAChBn3H,KAAKo3H,cACLp3H,KAAKm3H,cAILn3H,KAAKm3H,aAGJ7wH,IAAcuiB,EAAOy1B,aAAai0E,UAEvCvyH,KAAK2G,MAAQ3G,KAAKE,KAAKyG,MACvB3G,KAAK4G,OAAS5G,KAAKE,KAAK0G,QAEnBN,IAAcuiB,EAAOy1B,aAAa01E,aAEvCh0H,KAAK2G,MAAS3G,KAAKE,KAAKyG,MAAQ3G,KAAKkzH,iBAAiB7tH,EAAKrF,KAAKmzH,eAAe9tH,EAC/ErF,KAAK4G,OAAU5G,KAAKE,KAAK0G,OAAS5G,KAAKkzH,iBAAiB5tH,EAAKtF,KAAKmzH,eAAe7tH,IAIpFtF,KAAK8xH,cAAcM,kBACnB9rH,IAAcuiB,EAAOy1B,aAAaw1E,UAAYxtH,IAAcuiB,EAAOy1B,aAAa01E,YACrF,CACI,GAAIxtH,GAASxG,KAAK80H,gBAAgB90H,KAAKwzH,YACvCxzH,MAAK2G,MAAQ9F,KAAKq9B,IAAIl+B,KAAK2G,MAAOH,EAAOG,OACzC3G,KAAK4G,OAAS/F,KAAKq9B,IAAIl+B,KAAK4G,OAAQJ,EAAOI,QAI/C5G,KAAK2G,MAAqB,EAAb3G,KAAK2G,MAClB3G,KAAK4G,OAAuB,EAAd5G,KAAK4G,OAEnB5G,KAAKq3H,gBAoBTvC,gBAAiB,SAAU7wH,GAEvB,GAAIuC,GAASvC,GAAU,GAAI4kB,GAAOrmB,UAC9B+gG,EAAavjG,KAAKk3H,eAClBnC,EAAe/0H,KAAKuwH,IAAIwE,aACxBuC,EAAet3H,KAAKuwH,IAAI+G,YAE5B,IAAK/zB,EAKL,CAEI,GAAIg0B,GAAah0B,EAAWi0B,wBACxBC,EAAcl0B,EAAuB,aAAIA,EAAWm0B,aAAaF,wBAA0Bj0B,EAAWi0B,uBAE1GhxH,GAAOw0B,MAAMu8F,EAAWp+F,KAAOs+F,EAAWt+F,KAAMo+F,EAAW37F,IAAM67F,EAAW77F,IAAK27F,EAAW5wH,MAAO4wH,EAAW3wH,OAE9G,IAAI+wH,GAAK33H,KAAK6xH,iBAEd,IAAI8F,EAAGz+F,MACP,CACI,GAAI0+F,GAA4B,WAAbD,EAAGz+F,MAAqBo+F,EAAevC,CAC1DvuH,GAAO0yB,MAAQr4B,KAAKq9B,IAAI13B,EAAO0yB,MAAO0+F,EAAajxH,OAGvD,GAAIgxH,EAAG97F,OACP,CACI,GAAI+7F,GAA6B,WAAdD,EAAG97F,OAAsBy7F,EAAevC,CAC3DvuH,GAAOq1B,OAASh7B,KAAKq9B,IAAI13B,EAAOq1B,OAAQ+7F,EAAahxH,aArBzDJ,GAAOw0B,MAAM,EAAG,EAAG+5F,EAAapuH,MAAOouH,EAAanuH,OA6BxD,OAJAJ,GAAOw0B,MACHn6B,KAAKw6B,MAAM70B,EAAOnB,GAAIxE,KAAKw6B,MAAM70B,EAAOlB,GACxCzE,KAAKw6B,MAAM70B,EAAOG,OAAQ9F,KAAKw6B,MAAM70B,EAAOI,SAEzCJ,GAcXqxH,YAAa,SAAUhyF,EAAYC,GAE/B,GAAIgyF,GAAe93H,KAAK80H,gBAAgB90H,KAAKwzH,aACzC5iH,EAAS5Q,KAAKE,KAAK0Q,OACnByoG,EAASr5G,KAAKq5G,MAElB,IAAIxzE,EACJ,CACIwzE,EAAOlgF,KAAOkgF,EAAOngF,MAAQ,CAE7B,IAAI6+F,GAAennH,EAAO4mH,uBAE1B,IAAIx3H,KAAK2G,MAAQmxH,EAAanxH,QAAU3G,KAAK6wH,qBAC7C,CACI,GAAImH,GAAcD,EAAa5+F,KAAO2+F,EAAazyH,EAC/C4yH,EAAcH,EAAanxH,MAAQ,EAAM3G,KAAK2G,MAAQ,CAE1DsxH,GAAap3H,KAAK+G,IAAIqwH,EAAY,EAElC,IAAIv+G,GAASu+G,EAAaD,CAE1B3e,GAAOlgF,KAAOt4B,KAAKw6B,MAAM3hB,GAG7B9I,EAAOgL,MAAMs8G,WAAa7e,EAAOlgF,KAAO,KAEpB,IAAhBkgF,EAAOlgF,OAEPkgF,EAAOngF,QAAU4+F,EAAanxH,MAAQoxH,EAAapxH,MAAQ0yG,EAAOlgF,MAClEvoB,EAAOgL,MAAMu8G,YAAc9e,EAAOngF,MAAQ,MAIlD,GAAI4M,EACJ,CACIuzE,EAAOz9E,IAAMy9E,EAAOx9E,OAAS,CAE7B,IAAIk8F,GAAennH,EAAO4mH,uBAE1B,IAAIx3H,KAAK4G,OAASkxH,EAAalxH,SAAW5G,KAAK6wH,qBAC/C,CACI,GAAImH,GAAcD,EAAan8F,IAAMk8F,EAAaxyH,EAC9C2yH,EAAcH,EAAalxH,OAAS,EAAM5G,KAAK4G,OAAS,CAE5DqxH,GAAap3H,KAAK+G,IAAIqwH,EAAY,EAElC,IAAIv+G,GAASu+G,EAAaD,CAC1B3e,GAAOz9E,IAAM/6B,KAAKw6B,MAAM3hB,GAG5B9I,EAAOgL,MAAMw8G,UAAY/e,EAAOz9E,IAAM,KAEnB,IAAfy9E,EAAOz9E,MAEPy9E,EAAOx9E,SAAWi8F,EAAalxH,OAASmxH,EAAanxH,OAASyyG,EAAOz9E,KACrEhrB,EAAOgL,MAAMy8G,aAAehf,EAAOx9E,OAAS,MAKpDw9E,EAAOh0G,EAAIg0G,EAAOlgF,KAClBkgF,EAAO/zG,EAAI+zG,EAAOz9E,KAYtBk7F,WAAY,WAER92H,KAAKo3H,YAAY,GAAI,GAErB,IAAI5wH,GAASxG,KAAK80H,gBAAgB90H,KAAKwzH,YACvCxzH,MAAKg1H,iBAAiBxuH,EAAOG,MAAOH,EAAOI,QAAQ,IAYvDywH,aAAc,WAELr3H,KAAK6wH,uBAEN7wH,KAAK2G,MAAQkiB,EAAOhoB,KAAK4/B,MAAMzgC,KAAK2G,MAAO3G,KAAKwwH,UAAY,EAAGxwH,KAAK01F,UAAY11F,KAAK2G,OACrF3G,KAAK4G,OAASiiB,EAAOhoB,KAAK4/B,MAAMzgC,KAAK4G,OAAQ5G,KAAKywH,WAAa,EAAGzwH,KAAK0wH,WAAa1wH,KAAK4G,SAG7F5G,KAAKo3H,cAEAp3H,KAAK8xH,cAAcG,YAEhBjyH,KAAKi3H,cAAgBj3H,KAAKoxH,yBAE1BpxH,KAAK63H,aAAY,GAAM,GAIvB73H,KAAK63H,YAAY73H,KAAKs4H,sBAAuBt4H,KAAKu4H,sBAI1Dv4H,KAAKm2H,0BAYTiB,YAAa,SAAUoB,EAAUC,GAEZ/uH,SAAb8uH,IAA0BA,EAAWx4H,KAAK2G,MAAQ,MACpC+C,SAAd+uH,IAA2BA,EAAYz4H,KAAK4G,OAAS,KAEzD,IAAIgK,GAAS5Q,KAAKE,KAAK0Q,MAElB5Q,MAAK8xH,cAAcG,YAEpBrhH,EAAOgL,MAAMs8G,WAAa,GAC1BtnH,EAAOgL,MAAMw8G,UAAY,GACzBxnH,EAAOgL,MAAMu8G,YAAc,GAC3BvnH,EAAOgL,MAAMy8G,aAAe,IAGhCznH,EAAOgL,MAAMjV,MAAQ6xH,EACrB5nH,EAAOgL,MAAMhV,OAAS6xH,GAW1BxD,YAAa,SAAU5tF,GAEfA,IAEArnC,KAAKuzH,cAAc5sH,MAAQ,EAC3B3G,KAAKuzH,cAAc3sH,OAAS,GAGhC5G,KAAKqzH,gBAAkBrzH,KAAKszH,sBAUhCxqF,MAAO,SAAUkD,GAETA,GAAchsC,KAAKy4D,MAEnBz4D,KAAKy4D,KAAK3vB,SAWlBiuF,WAAY,WAER/2H,KAAK2G,MAAQ3G,KAAKuwH,IAAIwE,aAAapuH,MACnC3G,KAAK4G,OAAS5G,KAAKuwH,IAAIwE,aAAanuH,QAWxCuwH,WAAY,SAAUuB,GAElB,GAIIC,GAJAnyH,EAASxG,KAAK80H,gBAAgB90H,KAAKwzH,aACnC7sH,EAAQH,EAAOG,MACfC,EAASJ,EAAOI,MAMhB+xH,GAFAD,EAEa73H,KAAK+G,IAAKhB,EAAS5G,KAAKE,KAAK0G,OAAUD,EAAQ3G,KAAKE,KAAKyG,OAIzD9F,KAAKq9B,IAAKt3B,EAAS5G,KAAKE,KAAK0G,OAAUD,EAAQ3G,KAAKE,KAAKyG,OAG1E3G,KAAK2G,MAAQ9F,KAAKw6B,MAAMr7B,KAAKE,KAAKyG,MAAQgyH,GAC1C34H,KAAK4G,OAAS/F,KAAKw6B,MAAMr7B,KAAKE,KAAK0G,OAAS+xH,IAWhD3B,YAAa,WAET,GAAIxwH,GAASxG,KAAK80H,gBAAgB90H,KAAKwzH,YAEvCxzH,MAAK2G,MAAQH,EAAOG,MACpB3G,KAAK4G,OAASJ,EAAOI,OAEjB5G,KAAKi3H,eAMLj3H,KAAK01F,WAEL11F,KAAK2G,MAAQ9F,KAAKq9B,IAAIl+B,KAAK2G,MAAO3G,KAAK01F,WAGvC11F,KAAK0wH,YAEL1wH,KAAK4G,OAAS/F,KAAKq9B,IAAIl+B,KAAK4G,OAAQ5G,KAAK0wH,cAcjDkI,uBAAwB,WAEpB,GAAIC,GAAWxoH,SAASoB,cAAc,MAMtC,OAJAonH,GAASj9G,MAAMy9F,OAAS,IACxBwf,EAASj9G,MAAMyJ,QAAU,IACzBwzG,EAASj9G,MAAMk9G,WAAa,OAErBD,GAmBXE,gBAAiB,SAAUz/G,EAAW0/G,GAElC,GAAIh5H,KAAKi3H,aAEL,OAAO,CAGX,KAAKj3H,KAAK8xH,cAAcC,mBACxB,CAEI,GAAI7iF,GAAQlvC,IAIZ,YAHAw+F,YAAW,WACPtvD,EAAMulF,mBACP,IAIP,GAA2C,mBAAvCz0H,KAAK8xH,cAAcO,gBACvB,CACI,GAAIlpF,GAAQnpC,KAAKE,KAAKipC,KAEtB,IAAIA,EAAMga,eACNha,EAAMga,gBAAkBha,EAAMia,eAC7B41E,GAAmBA,KAAoB,GAGxC,WADA7vF,GAAMga,cAAcyN,mBAAmB,kBAAmB5wD,KAAK+4H,gBAAiB/4H,MAAOsZ,GAAW,IAKjF,mBAAdA,IAA6BtZ,KAAKE,KAAKgtC,aAAerkB,EAAOqJ,SAEpElyB,KAAKE,KAAK2B,MAAMk+C,SAAWzmC,EAG/B,IAAIu/G,GAAW74H,KAAKmxH,gBAEf0H,KAED74H,KAAKi5H,uBAELj5H,KAAKoxH,yBAA2BpxH,KAAK44H,yBACrCC,EAAW74H,KAAKoxH,yBAGpB,IAAI8H,IACAC,cAAeN,EAKnB,IAFA74H,KAAKqxH,iBAAiBnpF,SAASloC,KAAMk5H,GAEjCl5H,KAAKoxH,yBACT,CAGI,GAAIxgH,GAAS5Q,KAAKE,KAAK0Q,OACnBhP,EAASgP,EAAO2yF,UACpB3hG,GAAO0gG,aAAau2B,EAAUjoH,GAC9BioH,EAASv1B,YAAY1yF,GAYzB,MATI5Q,MAAKE,KAAKuzC,OAAOuqD,mBAEjB66B,EAAS74H,KAAKE,KAAKuzC,OAAOqqD,mBAAmBsC,QAAQg5B,sBAIrDP,EAAS74H,KAAKE,KAAKuzC,OAAOqqD,sBAGvB,GAWXu7B,eAAgB,WAEZ,MAAKr5H,MAAKi3H,cAAiBj3H,KAAK8xH,cAAcC,oBAK9C1hH,SAASrQ,KAAKE,KAAKuzC,OAAOsqD,qBAEnB,IALI,GAgBfk7B,qBAAsB,WAElB,GAAIJ,GAAW74H,KAAKoxH,wBAEpB,IAAIyH,GAAYA,EAASt1B,WACzB,CAGI,GAAI3hG,GAASi3H,EAASt1B,UACtB3hG,GAAO0gG,aAAatiG,KAAKE,KAAK0Q,OAAQioH,GACtCj3H,EAAOgH,YAAYiwH,GAGvB74H,KAAKoxH,yBAA2B,MAYpCkI,eAAgB,SAAUC,GAEtB,GAAIC,KAAkBx5H,KAAKoxH,yBACvByH,EAAW74H,KAAKoxH,0BAA4BpxH,KAAKmxH,gBAEjDoI,IAEIC,GAAiBx5H,KAAK60H,sBAAwBhsG,EAAOy1B,aAAau1E,YAG9DgF,IAAa74H,KAAKE,KAAK0Q,SAEvB5Q,KAAKgzH,oBACDpiG,YAAaioG,EAASj9G,MAAMjV,MAC5BoqB,aAAc8nG,EAASj9G,MAAMhV,QAGjCiyH,EAASj9G,MAAMjV,MAAQ,OACvBkyH,EAASj9G,MAAMhV,OAAS,SAO5B5G,KAAKgzH,qBAEL6F,EAASj9G,MAAMjV,MAAQ3G,KAAKgzH,mBAAmBpiG,YAC/CioG,EAASj9G,MAAMhV,OAAS5G,KAAKgzH,mBAAmBjiG,aAEhD/wB,KAAKgzH,mBAAqB,MAI9BhzH,KAAKg1H,iBAAiBh1H,KAAKizH,UAAUtsH,MAAO3G,KAAKizH,UAAUrsH,QAAQ,GACnE5G,KAAKo3H,gBAYb7C,iBAAkB,SAAUrhF,GAExBlzC,KAAKkzC,MAAQA,EAETlzC,KAAKi3H,cAELj3H,KAAKs5H,gBAAe,GAEpBt5H,KAAKi2H,eACLj2H,KAAKi1H,aAAY,KAIjBj1H,KAAKs5H,gBAAe,GAEpBt5H,KAAKi5H,uBAELj5H,KAAKi2H,eACLj2H,KAAKi1H,aAAY,IAGrBj1H,KAAKsxH,mBAAmBppF,SAASloC,KAAMA,KAAK2G,MAAO3G,KAAK4G,SAY5D6tH,gBAAiB,SAAUvhF,GAEvBlzC,KAAKkzC,MAAQA,EAEblzC,KAAKi5H,uBAELnmH,QAAQwkB,KAAK,+FAEbt3B,KAAKuxH,kBAAkBrpF,SAASloC,OAmBpCy5H,YAAa,SAAU/2G,EAAQ/b,EAAOC,EAAQ8yH,GAM1C,GAJchwH,SAAV/C,IAAuBA,EAAQ3G,KAAK2G,OACzB+C,SAAX9C,IAAwBA,EAAS5G,KAAK4G,QACxB8C,SAAdgwH,IAA2BA,GAAY,IAEtCh3G,IAAWA,EAAc,MAE1B,MAAOA,EAMX,IAHAA,EAAOrhB,MAAMgE,EAAI,EACjBqd,EAAOrhB,MAAMiE,EAAI,EAEZod,EAAO/b,OAAS,GAAO+b,EAAO9b,QAAU,GAAgB,GAATD,GAA0B,GAAVC,EAEhE,MAAO8b,EAGX,IAAIi3G,GAAUhzH,EACVizH,EAAWl3G,EAAO9b,OAASD,EAAS+b,EAAO/b,MAE3CkzH,EAAWn3G,EAAO/b,MAAQC,EAAU8b,EAAO9b,OAC3CkzH,EAAUlzH,EAEVmzH,EAAgBF,EAAUlzH,CA0B9B,OAtBIozH,GAFAA,EAEeL,GAICA,EAGhBK,GAEAr3G,EAAO/b,MAAQ9F,KAAKq1B,MAAMyjG,GAC1Bj3G,EAAO9b,OAAS/F,KAAKq1B,MAAM0jG,KAI3Bl3G,EAAO/b,MAAQ9F,KAAKq1B,MAAM2jG,GAC1Bn3G,EAAO9b,OAAS/F,KAAKq1B,MAAM4jG,IAOxBp3G,GAWX3f,QAAS,WAEL/C,KAAKE,KAAKwrC,SAASz6B,OAAOjR,KAAK00H,aAAc10H,MAE7C6S,OAAOyhC,oBAAoB,oBAAqBt0C,KAAKk0H,oBAAoB,GACzErhH,OAAOyhC,oBAAoB,SAAUt0C,KAAKo0H,eAAe,GAErDp0H,KAAK8xH,cAAcC,qBAEnB1hH,SAASikC,oBAAoB,yBAA0Bt0C,KAAKs0H,mBAAmB,GAC/EjkH,SAASikC,oBAAoB,sBAAuBt0C,KAAKs0H,mBAAmB,GAC5EjkH,SAASikC,oBAAoB,qBAAsBt0C,KAAKs0H,mBAAmB,GAC3EjkH,SAASikC,oBAAoB,mBAAoBt0C,KAAKs0H,mBAAmB,GAEzEjkH,SAASikC,oBAAoB,wBAAyBt0C,KAAKw0H,kBAAkB,GAC7EnkH,SAASikC,oBAAoB,qBAAsBt0C,KAAKw0H,kBAAkB,GAC1EnkH,SAASikC,oBAAoB,oBAAqBt0C,KAAKw0H,kBAAkB,GACzEnkH,SAASikC,oBAAoB,kBAAmBt0C,KAAKw0H,kBAAkB,MAOnF3rG,EAAOy1B,aAAaz7C,UAAUC,YAAc+lB,EAAOy1B,aAYnDl7C,OAAOC,eAAewlB,EAAOy1B,aAAaz7C,UAAW,kBAEjDS,IAAK,WACD,GAAItD,KAAKyyH,gBACJzyH,KAAKi3H,eAAiBj3H,KAAKoxH,yBAE5B,MAAO,KAGX,IAAI7tB,GAAavjG,KAAKE,KAAK0Q,QAAU5Q,KAAKE,KAAK0Q,OAAO2yF,UACtD,OAAOA,IAAc,QA0C7BngG,OAAOC,eAAewlB,EAAOy1B,aAAaz7C,UAAW,aAEjDS,IAAK,WAED,MAAOtD,MAAKsyH,YAIhB9uH,IAAK,SAAUC,GAaX,MAXIA,KAAUzD,KAAKsyH,aAEVtyH,KAAKi3H,eAENj3H,KAAKg1H,iBAAiBh1H,KAAKizH,UAAUtsH,MAAO3G,KAAKizH,UAAUrsH,QAAQ,GACnE5G,KAAKi1H,aAAY,IAGrBj1H,KAAKsyH,WAAa7uH,GAGfzD,KAAKsyH,cAcpBlvH,OAAOC,eAAewlB,EAAOy1B,aAAaz7C,UAAW,uBAEjDS,IAAK,WAED,MAAOtD,MAAKwyH,sBAIhBhvH,IAAK,SAAUC,GAmBX,MAjBIA,KAAUzD,KAAKwyH,uBAGXxyH,KAAKi3H,cAELj3H,KAAKs5H,gBAAe,GACpBt5H,KAAKwyH,qBAAuB/uH,EAC5BzD,KAAKs5H,gBAAe,GAEpBt5H,KAAKi1H,aAAY,IAIjBj1H,KAAKwyH,qBAAuB/uH,GAI7BzD,KAAKwyH,wBAgBpBpvH,OAAOC,eAAewlB,EAAOy1B,aAAaz7C,UAAW,oBAEjDS,IAAK,WAED,MAAOtD,MAAKi3H,aAAej3H,KAAKwyH,qBAAuBxyH,KAAKsyH,cAkBpElvH,OAAOC,eAAewlB,EAAOy1B,aAAaz7C,UAAW,yBAEjDS,IAAK,WAED,MAAOtD,MAAK8wH,wBAIhBttH,IAAK,SAAUC,GAEPA,IAAUzD,KAAK8wH,yBAEf9wH,KAAK8wH,uBAAyBrtH,EAC9BzD,KAAKi1H,aAAY,OA0B7B7xH,OAAOC,eAAewlB,EAAOy1B,aAAaz7C,UAAW,uBAEjDS,IAAK,WAED,MAAOtD,MAAK+wH,sBAIhBvtH,IAAK,SAAUC,GAEPA,IAAUzD,KAAK+wH,uBAEf/wH,KAAK+wH,qBAAuBttH,EAC5BzD,KAAKi1H,aAAY,OAa7B7xH,OAAOC,eAAewlB,EAAOy1B,aAAaz7C,UAAW,gBAEjDS,IAAK,WACD,SAAU+M,SAA4B,mBAClCA,SAAkC,yBAClCA,SAA+B,sBAC/BA,SAA8B,wBAY1CjN,OAAOC,eAAewlB,EAAOy1B,aAAaz7C,UAAW,cAEjDS,IAAK,WACD,MAA4D,aAArDtD,KAAKq2H,oBAAoBr2H,KAAKwxH,sBAY7CpuH,OAAOC,eAAewlB,EAAOy1B,aAAaz7C,UAAW,eAEjDS,IAAK,WACD,MAA4D,cAArDtD,KAAKq2H,oBAAoBr2H,KAAKwxH,sBAe7CpuH,OAAOC,eAAewlB,EAAOy1B,aAAaz7C,UAAW,kBAEjDS,IAAK,WACD,MAAQtD,MAAK4G,OAAS5G,KAAK2G,SAenCvD,OAAOC,eAAewlB,EAAOy1B,aAAaz7C,UAAW,mBAEjDS,IAAK,WACD,MAAQtD,MAAK2G,MAAQ3G,KAAK4G,UAsBlCiiB,EAAO0O,MAAM4nB,MAAQ,SAAUj/C,GAK3BF,KAAKE,KAAOA,EAKZF,KAAK0iB,OAAS,KAKd1iB,KAAKg6H,IAAM,KAKXh6H,KAAK4Q,OAAS,KAKd5Q,KAAKsN,QAAU,KAMftN,KAAKszE,KAAO,eAKZtzE,KAAKi6H,YAAc,IAKnBj6H,KAAKuxF,WAAa,GAKlBvxF,KAAKk6H,cAAe,EAMpBl6H,KAAK+2F,SAAW,EAMhB/2F,KAAKg3F,SAAW,EAMhBh3F,KAAKm6H,aAAe,EAKpBn6H,KAAKiU,OAAQ,GAIjB4U,EAAO0O,MAAM4nB,MAAMt8C,WAQf6jC,KAAM,WAEE1mC,KAAKE,KAAKgtC,aAAerkB,EAAOqJ,OAEhClyB,KAAKsN,QAAUtN,KAAKE,KAAKoN,SAIzBtN,KAAKg6H,IAAMh6H,KAAKE,KAAK+oC,KAAKwrC,WAAWz0E,KAAKE,KAAKyG,MAAO3G,KAAKE,KAAK0G,QAChE5G,KAAK0iB,OAAS1iB,KAAKE,KAAK+oC,KAAK9e,MAAM,EAAG,EAAGnqB,KAAKg6H,KAC9Ch6H,KAAKE,KAAK2B,MAAM2G,SAASxI,KAAK0iB,QAE9B1iB,KAAKE,KAAKmB,MAAMuxH,aAAa90F,IAAI99B,KAAK+H,OAAQ/H,MAE9CA,KAAK4Q,OAAS3Q,KAAK4Q,WAAWxI,OAAOrI,KAAMA,KAAKE,KAAKyG,MAAO3G,KAAKE,KAAK0G,QACtE5G,KAAKsN,QAAUtN,KAAK4Q,OAAOE,WAAW,QAe9C/I,OAAQ,SAAUqyH,EAAczzH,EAAOC,GAEnC5G,KAAKg6H,IAAIjyH,OAAOpB,EAAOC,GAEvB5G,KAAK4Q,OAAOjK,MAAQA,EACpB3G,KAAK4Q,OAAOhK,OAASA,GAUzBT,UAAW,WAEHnG,KAAKiU,OAASjU,KAAK0iB,SAEnB1iB,KAAKg6H,IAAI5+G,QACTpb,KAAKg6H,IAAIrgD,KAAK35E,KAAK4Q,OAAQ,EAAG,GAE9B5Q,KAAKsN,QAAQ6Z,UAAU,EAAG,EAAGnnB,KAAKE,KAAKyG,MAAO3G,KAAKE,KAAK0G,QACxD5G,KAAKiU,OAAQ,IAUrB60B,MAAO,WAEC9oC,KAAKsN,SAELtN,KAAKsN,QAAQ6Z,UAAU,EAAG,EAAGnnB,KAAKE,KAAKyG,MAAO3G,KAAKE,KAAK0G,QAGxD5G,KAAK0iB,QAEL1iB,KAAKg6H,IAAI5+G,SAejB/P,MAAO,SAAUhG,EAAGC,EAAGsT,EAAOqhH,GAET,gBAAN50H,KAAkBA,EAAI,GAChB,gBAANC,KAAkBA,EAAI,GACjCsT,EAAQA,GAAS,mBACGlP,SAAhBuwH,IAA6BA,EAAc,GAE/Cj6H,KAAK+2F,SAAW1xF,EAChBrF,KAAKg3F,SAAW1xF,EAChBtF,KAAKq6H,aAAezhH,EACpB5Y,KAAKi6H,YAAcA,EAEnBj6H,KAAKiU,OAAQ,EAEbjU,KAAKsN,QAAQ+Z,OACbrnB,KAAKsN,QAAQa,aAAa,EAAG,EAAG,EAAG,EAAG,EAAG,GACzCnO,KAAKsN,QAAQ8jB,YAAcxY,EAC3B5Y,KAAKsN,QAAQua,UAAYjP,EACzB5Y,KAAKsN,QAAQgmE,KAAOtzE,KAAKszE,KACzBtzE,KAAKsN,QAAQG,YAAczN,KAAKm6H,cAUpClvH,KAAM,WAEFjL,KAAKsN,QAAQoa,WAUjB8V,KAAM,WAIF,IAAK,GAFDn4B,GAAIrF,KAAK+2F,SAEJ9zF,EAAI,EAAGA,EAAI0zB,UAAUzzB,OAAQD,IAE9BjD,KAAKk6H,eAELl6H,KAAKsN,QAAQua,UAAY,aACzB7nB,KAAKsN,QAAQ+vE,SAAS1mD,UAAU1zB,GAAIoC,EAAI,EAAGrF,KAAKg3F,SAAW,GAC3Dh3F,KAAKsN,QAAQua,UAAY7nB,KAAKq6H,cAGlCr6H,KAAKsN,QAAQ+vE,SAAS1mD,UAAU1zB,GAAIoC,EAAGrF,KAAKg3F,UAE5C3xF,GAAKrF,KAAKi6H,WAGdj6H,MAAKg3F,UAAYh3F,KAAKuxF,YAa1B+oC,UAAW,SAAUjxF,EAAOhkC,EAAGC,EAAGsT,GAE9B5Y,KAAKqL,MAAMhG,EAAGC,EAAGsT,GACjB5Y,KAAKw9B,KAAK,UAAY6L,EAAMt0B,IAAM,YAAcs0B,EAAMnpC,KAAKmpC,MAAM+yE,aACjEp8G,KAAKw9B,KAAK,cAAgBx9B,KAAKE,KAAKgpC,MAAM80E,aAAa30E,EAAMt0B,KAAO,sBAAwBs0B,EAAMyiF,iBAClG9rH,KAAKw9B,KAAK,YAAc6L,EAAMukF,UAAY,cAAgBvkF,EAAM8yE,YAChEn8G,KAAKw9B,KAAK,mBAAqB6L,EAAMiiF,cAAgB,aAAejiF,EAAMktE,WAC1Ev2G,KAAKw9B,KAAK,SAAW6L,EAAMkiF,aAC3BvrH,KAAKw9B,KAAK,WAAa6L,EAAM9E,OAAS,WAAa8E,EAAM8kF,MACzDnuH,KAAKw9B,KAAK,aAAe6L,EAAMw9E,cAAgB,WAAax9E,EAAMy9E,eAEtC,KAAxBz9E,EAAMuiF,gBAEN5rH,KAAKw9B,KAAK,WAAa6L,EAAMuiF,cAAgB,cAAgBviF,EAAMzD,SAAW,SAAWyD,EAAMmiF,WAAa,KAC5GxrH,KAAKw9B,KAAK,UAAY6L,EAAMgiF,QAAQhiF,EAAMuiF,eAAevgH,MAAQ,UAAYg+B,EAAMgiF,QAAQhiF,EAAMuiF,eAAe3gH,MAChHjL,KAAKw9B,KAAK,aAAe6L,EAAMloC,WAGnCnB,KAAKiL,QAaTsvH,WAAY,SAAUj/G,EAAQjW,EAAGC,EAAGsT,GAEhC5Y,KAAKqL,MAAMhG,EAAGC,EAAGsT,GACjB5Y,KAAKw9B,KAAK,WAAaliB,EAAO3U,MAAQ,MAAQ2U,EAAO1U,OAAS,KAC9D5G,KAAKw9B,KAAK,MAAQliB,EAAOjW,EAAI,OAASiW,EAAOhW,GAEzCgW,EAAO9U,QAEPxG,KAAKw9B,KAAK,aAAeliB,EAAO9U,OAAOnB,EAAI,OAASiW,EAAO9U,OAAOlB,EAAI,OAASgW,EAAO9U,OAAOG,MAAQ,OAAS2U,EAAO9U,OAAOI,QAGhI5G,KAAKw9B,KAAK,WAAaliB,EAAOlC,KAAK/T,EAAI,OAASiW,EAAOlC,KAAK9T,EAAI,OAASgW,EAAOlC,KAAKzS,MAAQ,OAAS2U,EAAOlC,KAAKxS,QAElH5G,KAAKw9B,KAAK,kBAAoBliB,EAAO2pB,aACrCjlC,KAAKiL,QAaT6oG,MAAO,SAAUA,EAAOzuG,EAAGC,EAAGsT,GAE1B5Y,KAAKqL,MAAMhG,EAAGC,EAAGsT,GACjB5Y,KAAKw9B,KAAK,mBAAqBs2E,EAAMQ,QAAU,aAAeR,EAAMS,QAAU,KAC9Ev0G,KAAKw9B,KAAK,cAAgBs2E,EAAMl8D,KAAO,cAAgBk8D,EAAMluE,UAC7D5lC,KAAKw9B,KAAK,WAAas2E,EAAMhqE,OAAS,YAAcgqE,EAAM5wG,QAC1DlD,KAAKiL,QAcT6lC,QAAS,SAAUA,EAAS0pF,EAAUC,EAAWC,EAAS9hH,GAEvC,MAAXk4B,IAKapnC,SAAb8wH,IAA0BA,GAAW,GACzCC,EAAYA,GAAa,oBACzBC,EAAUA,GAAW,qBAEjBF,KAAa,GAAQ1pF,EAAQkb,QAAS,KAK1ChsD,KAAKqL,MAAMylC,EAAQzrC,EAAGyrC,EAAQxrC,EAAI,IAAKsT,GACvC5Y,KAAKsN,QAAQ6gB,YACbnuB,KAAKsN,QAAQgwE,IAAIxsC,EAAQzrC,EAAGyrC,EAAQxrC,EAAGwrC,EAAQgR,OAAO/mB,OAAQ,EAAa,EAAVl6B,KAAKC,IAElEgwC,EAAQvD,OAERvtC,KAAKsN,QAAQua,UAAY4yG,EAIzBz6H,KAAKsN,QAAQua,UAAY6yG,EAG7B16H,KAAKsN,QAAQ0hB,OACbhvB,KAAKsN,QAAQghB,YAGbtuB,KAAKsN,QAAQ6gB,YACbnuB,KAAKsN,QAAQ8gB,OAAO0iB,EAAQwd,aAAajpD,EAAGyrC,EAAQwd,aAAahpD,GACjEtF,KAAKsN,QAAQ+gB,OAAOyiB,EAAQ3vC,SAASkE,EAAGyrC,EAAQ3vC,SAASmE,GACzDtF,KAAKsN,QAAQiwE,UAAY,EACzBv9E,KAAKsN,QAAQkwE,SACbx9E,KAAKsN,QAAQghB,YAGbtuB,KAAKw9B,KAAK,OAASsT,EAAQ76B,GAAK,YAAc66B,EAAQvD,QACtDvtC,KAAKw9B,KAAK,YAAcsT,EAAQ6pF,OAAS,aAAe7pF,EAAQ8pF,QAChE56H,KAAKw9B,KAAK,aAAesT,EAAQzrC,EAAI,cAAgByrC,EAAQxrC,EAAI,QAAUwrC,EAAQsY,YACnFppD,KAAKw9B,KAAK,aAAesT,EAAQlL,SAAW,OAC5C5lC,KAAKw9B,KAAK,YAAcsT,EAAQib,OAAS,WAAajb,EAAQkb,MAC9DhsD,KAAKiL,UAaT4vH,gBAAiB,SAAUn4G,EAAQrd,EAAGC,EAAGsT,GAErC5Y,KAAKqL,MAAMhG,EAAGC,EAAGsT,GACjB5Y,KAAKw9B,KAAK,kBAAoB9a,EAAO/b,MAAQ,MAAQ+b,EAAO9b,OAAS,KACrE5G,KAAKw9B,KAAK,MAAQ9a,EAAOymB,MAAM4sB,WAAWhlB,QAAQ,GAAK,OAASruB,EAAOymB,MAAM6sB,WAAWjlB,QAAQ,IAChG/wC,KAAKw9B,KAAK,SAAW9a,EAAOymB,MAAMktB,cAAgB,cAAgB3zC,EAAOymB,MAAM8uB,eAAelnB,QAAQ,IACtG/wC,KAAKw9B,KAAK,SAAW9a,EAAOymB,MAAM8sB,cAAgB,cAAgBvzC,EAAOymB,MAAMksB,eAAetkB,QAAQ,IACtG/wC,KAAKw9B,KAAK,cAAgB9a,EAAOymB,MAAM4uB,WAAa,cAAgBr1C,EAAOymB,MAAM+uB,WACjFl4D,KAAKiL,QAaT8J,IAAK,SAAUA,EAAK1P,EAAGC,EAAGsT,GAEtB5Y,KAAKqL,MAAMhG,EAAGC,EAAGsT,EAAO,KAExB5Y,KAAKw9B,KAAK,OAAQzoB,EAAIktD,QAAS,UAAWltD,EAAIg3C,QAC9C/rD,KAAKw9B,KAAK,YAAazoB,EAAI+lH,SAAU,UAAW/lH,EAAIgmH,QACpD/6H,KAAKw9B,KAAK,aAAczoB,EAAIk3C,SAASlb,QAAQ,GAAI,YAAah8B,EAAI6wB,SAASmL,QAAQ,IAEnF/wC,KAAKiL,QAYT+vH,UAAW,SAAU31H,EAAGC,EAAGsT,GAEvB5Y,KAAKqL,MAAMhG,EAAGC,EAAGsT,GACjB5Y,KAAKw9B,KAAK,SACVx9B,KAAKw9B,KAAK,MAAQx9B,KAAKE,KAAKipC,MAAM9jC,EAAI,OAASrF,KAAKE,KAAKipC,MAAM7jC,GAC/DtF,KAAKw9B,KAAK,YAAcx9B,KAAKE,KAAKipC,MAAMwxF,OAAS,aAAe36H,KAAKE,KAAKipC,MAAMyxF,QAChF56H,KAAKw9B,KAAK,YAAcx9B,KAAKE,KAAKipC,MAAM9nC,MAAMgE,EAAE0rC,QAAQ,GAAK,aAAe/wC,KAAKE,KAAKipC,MAAM9nC,MAAMgE,EAAE0rC,QAAQ,IAC5G/wC,KAAKw9B,KAAK,aAAex9B,KAAKE,KAAKipC,MAAMga,cAAcuK,QAAU,cAAgB1tD,KAAKE,KAAKipC,MAAMga,cAAcwK,SAC/G3tD,KAAKiL,QAYTgwH,aAAc,SAAUv4G,EAAQ9J,EAAOsiH,GAEnC,GAAI10H,GAASkc,EAAO7c,WAEpBW,GAAOnB,GAAKrF,KAAKE,KAAKob,OAAOjW,EAC7BmB,EAAOlB,GAAKtF,KAAKE,KAAKob,OAAOhW,EAE7BtF,KAAKm7H,UAAU30H,EAAQoS,EAAOsiH,IAYlCE,aAAc,SAAU3oD,EAAM75D,EAAOsiH,GAEjC,GAAIh5C,GAAWzP,EAAKyP,SAEhBm5C,EAAOr7H,IAEXkiF,GAASlrD,QAAQ,SAASskG,GACtBD,EAAKF,UAAUG,EAAS1iH,EAAOsiH,IAChCl7H,OAaPu7H,WAAY,SAAU74G,EAAQrd,EAAGC,EAAGsT,GAEhC5Y,KAAKqL,MAAMhG,EAAGC,EAAGsT,GAEjB5Y,KAAKw9B,KAAK,aAAoB9a,EAAO/b,MAAQ,MAAQ+b,EAAO9b,OAAS,aAAe8b,EAAOxa,OAAO7C,EAAI,MAAQqd,EAAOxa,OAAO5C,GAC5HtF,KAAKw9B,KAAK,MAAQ9a,EAAOrd,EAAE0rC,QAAQ,GAAK,OAASruB,EAAOpd,EAAEyrC,QAAQ,IAClE/wC,KAAKw9B,KAAK,UAAY9a,EAAO+Y,MAAMsV,QAAQ,GAAK,cAAgBruB,EAAOnhB,SAASwvC,QAAQ,IACxF/wC,KAAKw9B,KAAK,YAAc9a,EAAOjhB,QAAU,eAAiBihB,EAAOkoD,UACjE5qE,KAAKw9B,KAAK,aAAe9a,EAAOngB,QAAQ8C,EAAE0rC,QAAQ,GAAK,OAASruB,EAAOngB,QAAQ+C,EAAEyrC,QAAQ,GAAK,OAASruB,EAAOngB,QAAQoE,MAAMoqC,QAAQ,GAAK,OAASruB,EAAOngB,QAAQqE,OAAOmqC,QAAQ,IAEhL/wC,KAAKiL,QAaTuwH,aAAc,SAAU94G,EAAQrd,EAAGC,EAAGsT,GAElC5Y,KAAKqL,MAAMhG,EAAGC,EAAGsT,EAAO,KAEpB8J,EAAOgX,MAEP15B,KAAKw9B,KAAK9a,EAAOgX,MAGrB15B,KAAKw9B,KAAK,KAAM9a,EAAOrd,EAAE0rC,QAAQ,GAAI,KAAMruB,EAAOpd,EAAEyrC,QAAQ,IAC5D/wC,KAAKw9B,KAAK,SAAU9a,EAAOvhB,SAASkE,EAAE0rC,QAAQ,GAAI,SAAUruB,EAAOvhB,SAASmE,EAAEyrC,QAAQ,IACtF/wC,KAAKw9B,KAAK,WAAY9a,EAAOje,MAAMY,EAAE0rC,QAAQ,GAAI,WAAYruB,EAAOje,MAAMa,EAAEyrC,QAAQ,IAEpF/wC,KAAKiL,QAaTwwH,SAAU,SAAUj+F,EAAMn4B,EAAGC,EAAGsT,GAE5B5Y,KAAKqL,MAAMhG,EAAGC,EAAGsT,EAAO,IACxB5Y,KAAKw9B,KAAK,WAAYA,EAAKnyB,MAAMhG,EAAE0rC,QAAQ,GAAI,WAAYvT,EAAKnyB,MAAM/F,EAAEyrC,QAAQ,IAChF/wC,KAAKw9B,KAAK,SAAUA,EAAKzzB,IAAI1E,EAAE0rC,QAAQ,GAAI,SAAUvT,EAAKzzB,IAAIzE,EAAEyrC,QAAQ,IACxE/wC,KAAKw9B,KAAK,UAAWA,EAAKt6B,OAAO6tC,QAAQ,GAAI,SAAUvT,EAAK/B,OAC5Dz7B,KAAKiL,QAaT6uE,MAAO,SAAUz0E,EAAGC,EAAGsT,EAAO2I,GAE1BA,EAAOA,GAAQ,EAEfvhB,KAAKqL,QACLrL,KAAKsN,QAAQua,UAAYjP,EACzB5Y,KAAKsN,QAAQ0a,SAAS3iB,EAAGC,EAAGic,EAAMA,GAClCvhB,KAAKiL,QAaTywH,KAAM,SAAUpgF,EAAQ1iC,EAAOsiH,EAAQS,GAEpBjyH,SAAXwxH,IAAwBA,GAAS,GACnBxxH,SAAdiyH,IAA2BA,EAAY,GAE3C/iH,EAAQA,GAAS,oBAEjB5Y,KAAKqL,QAELrL,KAAKsN,QAAQua,UAAYjP,EACzB5Y,KAAKsN,QAAQ8jB,YAAcxY,EAEvB0iC,YAAkBzyB,GAAOrmB,WAA2B,IAAdm5H,EAElCT,EAEAl7H,KAAKsN,QAAQ0a,SAASszB,EAAOj2C,EAAIrF,KAAKE,KAAKob,OAAOjW,EAAGi2C,EAAOh2C,EAAItF,KAAKE,KAAKob,OAAOhW,EAAGg2C,EAAO30C,MAAO20C,EAAO10C,QAIzG5G,KAAKsN,QAAQ+jB,WAAWiqB,EAAOj2C,EAAIrF,KAAKE,KAAKob,OAAOjW,EAAGi2C,EAAOh2C,EAAItF,KAAKE,KAAKob,OAAOhW,EAAGg2C,EAAO30C,MAAO20C,EAAO10C,QAG1G00C,YAAkBzyB,GAAO2R,QAAwB,IAAdmhG,GAExC37H,KAAKsN,QAAQ6gB,YACbnuB,KAAKsN,QAAQgwE,IAAIhiC,EAAOj2C,EAAIrF,KAAKE,KAAKob,OAAOjW,EAAGi2C,EAAOh2C,EAAItF,KAAKE,KAAKob,OAAOhW,EAAGg2C,EAAOvgB,OAAQ,EAAa,EAAVl6B,KAAKC,IAAQ,GAC9Gd,KAAKsN,QAAQghB,YAET4sG,EAEAl7H,KAAKsN,QAAQ0hB,OAIbhvB,KAAKsN,QAAQkwE,UAGZliC,YAAkBzyB,GAAOznB,OAAuB,IAAdu6H,EAEvC37H,KAAKsN,QAAQ0a,SAASszB,EAAOj2C,EAAIrF,KAAKE,KAAKob,OAAOjW,EAAGi2C,EAAOh2C,EAAItF,KAAKE,KAAKob,OAAOhW,EAAG,EAAG,IAElFg2C,YAAkBzyB,GAAOkU,MAAsB,IAAd4+F,KAEtC37H,KAAKsN,QAAQiwE,UAAY,EACzBv9E,KAAKsN,QAAQ6gB,YACbnuB,KAAKsN,QAAQ8gB,OAAQktB,EAAOjwC,MAAMhG,EAAI,GAAOrF,KAAKE,KAAKob,OAAOjW,EAAIi2C,EAAOjwC,MAAM/F,EAAI,GAAOtF,KAAKE,KAAKob,OAAOhW,GAC3GtF,KAAKsN,QAAQ+gB,OAAQitB,EAAOvxC,IAAI1E,EAAI,GAAOrF,KAAKE,KAAKob,OAAOjW,EAAIi2C,EAAOvxC,IAAIzE,EAAI,GAAOtF,KAAKE,KAAKob,OAAOhW,GACvGtF,KAAKsN,QAAQghB,YACbtuB,KAAKsN,QAAQkwE,UAGjBx9E,KAAKiL,QAYTkwH,UAAW,SAAU7/E,EAAQ1iC,EAAOsiH,GAEjBxxH,SAAXwxH,IAAwBA,GAAS,GAErCtiH,EAAQA,GAAS,uBAEjB5Y,KAAKqL,QAED6vH,GAEAl7H,KAAKsN,QAAQua,UAAYjP,EACzB5Y,KAAKsN,QAAQ0a,SAASszB,EAAOj2C,EAAIrF,KAAKE,KAAKob,OAAOjW,EAAGi2C,EAAOh2C,EAAItF,KAAKE,KAAKob,OAAOhW,EAAGg2C,EAAO30C,MAAO20C,EAAO10C,UAIzG5G,KAAKsN,QAAQ8jB,YAAcxY,EAC3B5Y,KAAKsN,QAAQ+jB,WAAWiqB,EAAOj2C,EAAIrF,KAAKE,KAAKob,OAAOjW,EAAGi2C,EAAOh2C,EAAItF,KAAKE,KAAKob,OAAOhW,EAAGg2C,EAAO30C,MAAO20C,EAAO10C,SAG/G5G,KAAKiL,QAcTynE,KAAM,SAAUA,EAAMrtE,EAAGC,EAAGsT,EAAO06D,GAE/B16D,EAAQA,GAAS,mBACjB06D,EAAOA,GAAQ,eAEftzE,KAAKqL,QACLrL,KAAKsN,QAAQgmE,KAAOA,EAEhBtzE,KAAKk6H,eAELl6H,KAAKsN,QAAQua,UAAY,aACzB7nB,KAAKsN,QAAQ+vE,SAAS3K,EAAMrtE,EAAI,EAAGC,EAAI,IAG3CtF,KAAKsN,QAAQua,UAAYjP,EACzB5Y,KAAKsN,QAAQ+vE,SAAS3K,EAAMrtE,EAAGC,GAE/BtF,KAAKiL,QAWT2wH,SAAU,SAAUC,EAAUjjH,GAE1BA,EAAQA,GAAS,oBAEjB5Y,KAAKqL,OAEL,IAAI7E,GAASq1H,EAASr1H,MAEtB,IAA8B,IAA1Bq1H,EAAStyB,MAAMrmG,OACnB,CACIlD,KAAKsN,QAAQ8jB,YAAcxY,EAC3B5Y,KAAKsN,QAAQ+jB,WAAW7qB,EAAOnB,EAAGmB,EAAOlB,EAAGkB,EAAOG,MAAOH,EAAOI,QACjE5G,KAAK0yE,KAAK,SAAWmpD,EAASvyB,QAAQpmG,OAAQsD,EAAOnB,EAAI,EAAGmB,EAAOlB,EAAI,GAAI,eAAgB,gBAE3FtF,KAAKsN,QAAQ8jB,YAAc,cAE3B,KAAK,GAAInuB,GAAI,EAAGA,EAAI44H,EAASvyB,QAAQpmG,OAAQD,IAEzCjD,KAAKsN,QAAQ+jB,WAAWwqG,EAASvyB,QAAQrmG,GAAGoC,EAAGw2H,EAASvyB,QAAQrmG,GAAGqC,EAAGu2H,EAASvyB,QAAQrmG,GAAG0D,MAAOk1H,EAASvyB,QAAQrmG,GAAG2D,YAKzH,KAAK,GAAI3D,GAAI,EAAGA,EAAI44H,EAAStyB,MAAMrmG,OAAQD,IAEvCjD,KAAK47H,SAASC,EAAStyB,MAAMtmG,GAIrCjD,MAAKiL,QAcTqrC,KAAM,SAAU5zB,EAAQ9J,EAAOsiH,GAEvBx4G,EAAO4zB,OAEPt2C,KAAKqL,QAEDqX,EAAO4zB,KAAKlhC,OAASyT,EAAO8rB,QAAQC,OAEpC/rB,EAAO8rB,QAAQw+B,OAAO2oD,KAAKh1H,OAAO9G,KAAKsN,QAASoV,EAAO4zB,KAAM19B,EAAOsiH,GAE/Dx4G,EAAO4zB,KAAKlhC,OAASyT,EAAO8rB,QAAQonF,MAEzClzG,EAAO8rB,QAAQqnF,MAAMF,KAAKh1H,OAAO9G,KAAKsN,QAASoV,EAAO4zB,KAAM19B,EAAOsiH,GAE9Dx4G,EAAO4zB,KAAKlhC,OAASyT,EAAO8rB,QAAQsnF,OAEzCpzG,EAAO8rB,QAAQunF,MAAMC,WAAWn8H,KAAKsN,QAASoV,EAAO4zB,KAAM19B,GAG/D5Y,KAAKiL,SAcbmxH,SAAU,SAAU15G,EAAQrd,EAAGC,EAAGsT,GAE1B8J,EAAO4zB,OAEPt2C,KAAKqL,MAAMhG,EAAGC,EAAGsT,EAAO,KAEpB8J,EAAO4zB,KAAKlhC,OAASyT,EAAO8rB,QAAQC,OAEpC/rB,EAAO8rB,QAAQw+B,OAAO2oD,KAAKO,eAAer8H,KAAM0iB,EAAO4zB,MAElD5zB,EAAO4zB,KAAKlhC,OAASyT,EAAO8rB,QAAQsnF,OAEzCj8H,KAAKE,KAAKupC,QAAQ6yF,MAAMD,eAAer8H,KAAM0iB,EAAO4zB,MAGxDt2C,KAAKiL,SAYbsxH,WAAY,WAERv8H,KAAKqL,QAELrL,KAAKsN,QAAQme,WAAWzrB,KAAKE,KAAKob,OAAOlC,KAAK/T,GAAIrF,KAAKE,KAAKob,OAAOlC,KAAK9T,EAAG,GAC3EtF,KAAKE,KAAKupC,QAAQ6yF,MAAME,gBAAgBx8H,KAAKsN,SAE7CtN,KAAKiL,QAYTwxH,UAAW,SAAUnmF,EAAM19B,GAEvB5Y,KAAKqL,QACLwd,EAAO8rB,QAAQunF,MAAMC,WAAWn8H,KAAKsN,QAASgpC,EAAM19B,GACpD5Y,KAAKiL,QAcTyxH,YAAa,SAAUjhH,GAanB,GAXsB/R,SAAlB+R,IAA+BA,EAAgBzb,KAAKE,KAAKuE,OAEzDgX,EAAc6d,eAAe,iBAE7BxmB,QAAQC,IAAI,IAAM0I,EAAcq+B,cAAgB,IAAKr+B,GAIrD3I,QAAQC,IAAI,KAAM0I,GAGlBA,EAAczY,UAAYyY,EAAczY,SAASE,OAAS,EAE1D,IAAK,GAAID,GAAI,EAAGA,EAAIwY,EAAczY,SAASE,OAAQD,IAE/CjD,KAAKE,KAAK0sC,MAAM8vF,YAAYjhH,EAAczY,SAASC,KAW/DF,QAAS,WAEL9C,KAAK4Q,WAAWI,OAAOjR,QAM/B6oB,EAAO0O,MAAM4nB,MAAMt8C,UAAUC,YAAc+lB,EAAO0O,MAAM4nB,MAmBxDt2B,EAAO4pB,KAYHC,UAAW,SAAUgX,EAASl6B,GAE1BA,EAAQA,GAAS,GAAI3G,GAAOznB,KAE5B,IAAIu7H,GAAMjzE,EAAQ8tE,wBAEdX,EAAYhuG,EAAO4pB,IAAImqF,QACvBC,EAAah0G,EAAO4pB,IAAIqqF,QACxBC,EAAY1sH,SAASwvF,gBAAgBk9B,UACrCC,EAAa3sH,SAASwvF,gBAAgBm9B,UAK1C,OAHAxtG,GAAMnqB,EAAIs3H,EAAIxjG,KAAO0jG,EAAaG,EAClCxtG,EAAMlqB,EAAIq3H,EAAI/gG,IAAMi7F,EAAYkG,EAEzBvtG,GAiBX3pB,UAAW,SAAU6jD,EAASuzE,GAM1B,MAJgBvzH,UAAZuzH,IAAyBA,EAAU,GAEvCvzE,EAAUA,IAAYA,EAAQrwB,SAAWqwB,EAAQ,GAAKA,EAEjDA,GAAgC,IAArBA,EAAQrwB,SAMbr5B,KAAKk9H,UAAUxzE,EAAQ8tE,wBAAyByF,IAJhD,GAkBfC,UAAW,SAAUC,EAAQF,GAEzBA,GAAWA,GAAW,CAEtB,IAAI3hG,IAAW30B,MAAO,EAAGC,OAAQ,EAAGuyB,KAAM,EAAGD,MAAO,EAAG0C,IAAK,EAAGC,OAAQ,EAKvE,OAHAP,GAAO30B,OAAS20B,EAAOpC,MAAQikG,EAAOjkG,MAAQ+jG,IAAY3hG,EAAOnC,KAAOgkG,EAAOhkG,KAAO8jG,GACtF3hG,EAAO10B,QAAU00B,EAAOO,OAASshG,EAAOthG,OAASohG,IAAY3hG,EAAOM,IAAMuhG,EAAOvhG,IAAMqhG,GAEhF3hG,GAWX8hG,eAAgB,SAAU9hF,GAEtBA,EAAS,MAAQA,EAASt7C,KAAK+0H,aAAe,IAAMz5E,EAAOjiB,SAAWr5B,KAAK6F,UAAUy1C,GAAUA,CAE/F,IAAI1jC,GAAI0jC,EAAc,MAClBl4B,EAAIk4B,EAAe,MAYvB,OAViB,kBAAN1jC,KAEPA,EAAIA,EAAElS,KAAK41C,IAGE,kBAANl4B,KAEPA,EAAIA,EAAE1d,KAAK41C,IAGR1jC,EAAIwL,GAiBfi6G,iBAAkB,SAAU3zE,EAASuzE,GAEjC,GAAI/hH,GAAIlb,KAAK6F,UAAU6jD,EAASuzE,EAEhC,SAAS/hH,GAAKA,EAAE2gB,QAAU,GAAK3gB,EAAEge,OAAS,GAAKhe,EAAE0gB,KAAO57B,KAAKs3H,aAAa3wH,OAASuU,EAAEie,MAAQn5B,KAAKs3H,aAAa1wH,QA6BnH6qH,qBAAsB,SAAU6L,GAE5B,GAAIC,GAAS1qH,OAAO0qH,OAChBjH,EAAciH,EAAOjH,aAAeiH,EAAOC,gBAAkBD,EAAOE,aAExE,IAAInH,GAA2C,gBAArBA,GAAYlhH,KAGlC,MAAOkhH,GAAYlhH,IAElB,IAA2B,gBAAhBkhH,GAGZ,MAAOA,EAGX,IAAI3hG,GAAW,mBACXD,EAAY,mBAEhB,IAAwB,WAApB4oG,EAEA,MAAQC,GAAO32H,OAAS22H,EAAO52H,MAASguB,EAAWD,CAElD,IAAwB,aAApB4oG,EAEL,MAAQt9H,MAAK+0H,aAAanuH,OAAS5G,KAAK+0H,aAAapuH,MAASguB,EAAWD,CAExE,IAAwB,uBAApB4oG,GAA0E,gBAAvBzqH,QAAOyjH,YAG/D,MAA+B,KAAvBzjH,OAAOyjH,aAA4C,MAAvBzjH,OAAOyjH,YAAuB3hG,EAAWD,CAE5E,IAAI7hB,OAAO6qH,WAChB,CACI,GAAI7qH,OAAO6qH,WAAW,2BAA2B36B,QAE7C,MAAOpuE,EAEN,IAAI9hB,OAAO6qH,WAAW,4BAA4B36B,QAEnD,MAAOruE,GAIf,MAAQ10B,MAAK+0H,aAAanuH,OAAS5G,KAAK+0H,aAAapuH,MAASguB,EAAWD,GAqB7EqgG,aAAc,GAAIlsG,GAAOrmB,UAqBzB80H,aAAc,GAAIzuG,GAAOrmB,UAczBm7H,eAAgB,GAAI90G,GAAOrmB,WAI/BqmB,EAAOm0B,OAAOoB,UAAU,SAAU3K,GAG9B,GAAIqpF,GAAUjqH,QAAW,eAAiBA,QACtC,WAAc,MAAOA,QAAO+qH,aAC5B,WAAc,MAAOvtH,UAASwvF,gBAAgBg9B,YAE9CD,EAAU/pH,QAAW,eAAiBA,QACtC,WAAc,MAAOA,QAAOgrH,aAC5B,WAAc,MAAOxtH,UAASwvF,gBAAgBg3B,UAUlDzzH,QAAOC,eAAewlB,EAAO4pB,IAAK,WAC9BnvC,IAAKw5H,IAWT15H,OAAOC,eAAewlB,EAAO4pB,IAAK,WAC9BnvC,IAAKs5H,IAGTx5H,OAAOC,eAAewlB,EAAO4pB,IAAIsiF,aAAc,KAC3CzxH,IAAKw5H,IAGT15H,OAAOC,eAAewlB,EAAO4pB,IAAIsiF,aAAc,KAC3CzxH,IAAKs5H,IAGTx5H,OAAOC,eAAewlB,EAAO4pB,IAAI6kF,aAAc,KAC3C7zH,MAAO,IAGXL,OAAOC,eAAewlB,EAAO4pB,IAAI6kF,aAAc,KAC3C7zH,MAAO,GAGX,IAAIq6H,GAAiBrqF,EAAOymD,SACvB7pF,SAASwvF,gBAAgBk+B,aAAelrH,OAAO+lB,YAC/CvoB,SAASwvF,gBAAgBm+B,cAAgBnrH,OAAOgmB,WAKrD,IAAIilG,EACJ,CAII,GAAIC,GAAc,WACd,MAAOl9H,MAAK+G,IAAIiL,OAAO+lB,WAAYvoB,SAASwvF,gBAAgBk+B,cAE5DC,EAAe,WACf,MAAOn9H,MAAK+G,IAAIiL,OAAOgmB,YAAaxoB,SAASwvF,gBAAgBm+B,cAIjE56H,QAAOC,eAAewlB,EAAO4pB,IAAIsiF,aAAc,SAC3CzxH,IAAKy6H,IAGT36H,OAAOC,eAAewlB,EAAO4pB,IAAIsiF,aAAc,UAC3CzxH,IAAK06H,IAGT56H,OAAOC,eAAewlB,EAAO4pB,IAAI6kF,aAAc,SAC3Ch0H,IAAKy6H,IAGT36H,OAAOC,eAAewlB,EAAO4pB,IAAI6kF,aAAc,UAC3Ch0H,IAAK06H,QAKT56H,QAAOC,eAAewlB,EAAO4pB,IAAIsiF,aAAc,SAC3CzxH,IAAK,WACD,MAAOuP,QAAO+lB,cAItBx1B,OAAOC,eAAewlB,EAAO4pB,IAAIsiF,aAAc,UAC3CzxH,IAAK,WACD,MAAOuP,QAAOgmB,eAItBz1B,OAAOC,eAAewlB,EAAO4pB,IAAI6kF,aAAc,SAE3Ch0H,IAAK,WACD,GAAIoB,GAAI2L,SAASwvF,gBAAgBk+B,YAC7Bp5H,EAAIkO,OAAO+lB,UAEf,OAAWj0B,GAAJD,EAAQC,EAAID,KAK3BtB,OAAOC,eAAewlB,EAAO4pB,IAAI6kF,aAAc,UAE3Ch0H,IAAK,WACD,GAAIoB,GAAI2L,SAASwvF,gBAAgBm+B,aAC7Br5H,EAAIkO,OAAOgmB,WAEf,OAAWl0B,GAAJD,EAAQC,EAAID,IAU/BtB,QAAOC,eAAewlB,EAAO4pB,IAAIkrF,eAAgB,KAC7Cl6H,MAAO,IAGXL,OAAOC,eAAewlB,EAAO4pB,IAAIkrF,eAAgB,KAC7Cl6H,MAAO,IAGXL,OAAOC,eAAewlB,EAAO4pB,IAAIkrF,eAAgB,SAE7Cr6H,IAAK,WACD,GAAIuB,GAAIwL,SAASwvF,eACjB,OAAOh/F,MAAK+G,IAAI/C,EAAEk5H,YAAal5H,EAAEo5H,YAAap5H,EAAEq5H,gBAKxD96H,OAAOC,eAAewlB,EAAO4pB,IAAIkrF,eAAgB,UAE7Cr6H,IAAK,WACD,GAAIuB,GAAIwL,SAASwvF,eACjB,OAAOh/F,MAAK+G,IAAI/C,EAAEm5H,aAAcn5H,EAAEs5H,aAAct5H,EAAEu5H,kBAK3D,MAAM,GAoBTv1G,EAAOoxB,SAAW,SAAUquC,GAOxBtoF,KAAKmB,SAAW,EAMhBnB,KAAKsoF,KAAOA,OAIhBz/D,EAAOoxB,SAASp3C,WAUZi7B,IAAK,SAAUv6B,GAOX,MALKvD,MAAK8L,OAAOvI,IAEbvD,KAAKsoF,KAAKvkF,KAAKR,GAGZA,GAWX00C,SAAU,SAAU10C,GAEhB,MAAOvD,MAAKsoF,KAAKl/E,QAAQ7F,IAa7B86H,SAAU,SAAUnlF,EAAUz1C,GAI1B,IAFA,GAAIR,GAAIjD,KAAKsoF,KAAKplF,OAEXD,KAEH,GAAIjD,KAAKsoF,KAAKrlF,GAAGi2C,KAAcz1C,EAE3B,MAAOzD,MAAKsoF,KAAKrlF,EAIzB,OAAO,OAWX6I,OAAQ,SAAUvI,GAEd,MAAQvD,MAAKsoF,KAAKl/E,QAAQ7F,GAAQ,IAStCulC,MAAO,WAEH9oC,KAAKsoF,KAAKplF,OAAS,GAWvB+N,OAAQ,SAAU1N,GAEd,GAAI+N,GAAMtR,KAAKsoF,KAAKl/E,QAAQ7F,EAE5B,OAAI+N,GAAM,IAENtR,KAAKsoF,KAAKz/E,OAAOyI,EAAK,GACf/N,GAHX,QAeJu1C,OAAQ,SAAU/jC,EAAKtR,GAInB,IAFA,GAAIR,GAAIjD,KAAKsoF,KAAKplF,OAEXD,KAECjD,KAAKsoF,KAAKrlF,KAEVjD,KAAKsoF,KAAKrlF,GAAG8R,GAAOtR,IAgBhCi2C,QAAS,SAAU3kC,GAMf,IAJA,GAAIyhB,GAAO71B,MAAMkC,UAAUwzB,MAAM3wB,KAAKixB,UAAW,GAE7C1zB,EAAIjD,KAAKsoF,KAAKplF,OAEXD,KAECjD,KAAKsoF,KAAKrlF,IAAMjD,KAAKsoF,KAAKrlF,GAAG8R,IAE7B/U,KAAKsoF,KAAKrlF,GAAG8R,GAAK9N,MAAMjH,KAAKsoF,KAAKrlF,GAAIuzB,IAYlDmW,UAAW,SAAU5pC,GAED2G,SAAZ3G,IAAyBA,GAAU,EAIvC,KAFA,GAAIE,GAAIjD,KAAKsoF,KAAKplF,OAEXD,KAEH,GAAIjD,KAAKsoF,KAAKrlF,GACd,CACI,GAAIM,GAAOvD,KAAKiR,OAAOjR,KAAKsoF,KAAKrlF,GAE7BF,IAEAQ,EAAKR,UAKjB/C,KAAKmB,SAAW,EAChBnB,KAAKsoF,UAYbllF,OAAOC,eAAewlB,EAAOoxB,SAASp3C,UAAW,SAE7CS,IAAK,WACD,MAAOtD,MAAKsoF,KAAKplF,UAWzBE,OAAOC,eAAewlB,EAAOoxB,SAASp3C,UAAW,SAE7CS,IAAK,WAID,MAFAtD,MAAKmB,SAAW,EAEZnB,KAAKsoF,KAAKplF,OAAS,EAEZlD,KAAKsoF,KAAK,GAIV,QAanBllF,OAAOC,eAAewlB,EAAOoxB,SAASp3C,UAAW,QAE7CS,IAAK,WAED,MAAItD,MAAKmB,SAAWnB,KAAKsoF,KAAKplF,QAE1BlD,KAAKmB,WAEEnB,KAAKsoF,KAAKtoF,KAAKmB,WAIf,QAOnB0nB,EAAOoxB,SAASp3C,UAAUC,YAAc+lB,EAAOoxB,SAc/CpxB,EAAO+yB,YAcHC,cAAe,SAAUytD,EAAS9kF,EAAYthB,GAE1C,GAAgB,OAAZomG,EAAoB,MAAO,KACZ5/F,UAAf8a,IAA4BA,EAAa,GAC9B9a,SAAXxG,IAAwBA,EAASomG,EAAQpmG,OAE7C,IAAIo7H,GAAc95G,EAAa3jB,KAAKq1B,MAAMr1B,KAAKs3B,SAAWj1B,EAE1D,OAAgCwG,UAAzB4/F,EAAQg1B,GAA6B,KAAOh1B,EAAQg1B,IAgB/DC,iBAAkB,SAAUj1B,EAAS9kF,EAAYthB,GAE7C,GAAe,MAAXomG,EACA,MAAO,KAGQ5/F,UAAf8a,IAA4BA,EAAa,GAC9B9a,SAAXxG,IAAwBA,EAASomG,EAAQpmG,OAE7C,IAAIo7H,GAAc95G,EAAa3jB,KAAKq1B,MAAMr1B,KAAKs3B,SAAWj1B,EAC1D,IAAIo7H,EAAch1B,EAAQpmG,OAC1B,CACI,GAAI+G,GAAUq/F,EAAQzgG,OAAOy1H,EAAa,EAC1C,OAAsB50H,UAAfO,EAAQ,GAAmB,KAAOA,EAAQ,GAIjD,MAAO,OAYfu0H,QAAS,SAAUz+F,GAEf,IAAK,GAAI98B,GAAI88B,EAAM78B,OAAS,EAAGD,EAAI,EAAGA,IACtC,CACI,GAAIa,GAAIjD,KAAKq1B,MAAMr1B,KAAKs3B,UAAYl1B,EAAI,IACpC0J,EAAOozB,EAAM98B,EACjB88B,GAAM98B,GAAK88B,EAAMj8B,GACjBi8B,EAAMj8B,GAAK6I,EAGf,MAAOozB,IAWX0+F,gBAAiB,SAAU1+F,GAOvB,IAAK,GALD2+F,GAAiB3+F,EAAM78B,OACvBy7H,EAAiB5+F,EAAM,GAAG78B,OAE1BkO,EAAS,GAAIzQ,OAAMg+H,GAEd17H,EAAI,EAAO07H,EAAJ17H,EAAoBA,IACpC,CACImO,EAAOnO,GAAK,GAAItC,OAAM+9H,EAEtB,KAAK,GAAI56H,GAAI46H,EAAiB,EAAG56H,EAAI,GAAIA,IAErCsN,EAAOnO,GAAGa,GAAKi8B,EAAMj8B,GAAGb,GAIhC,MAAOmO,IAcXwtH,aAAc,SAAU94H,EAAQwhC,GAO5B,GALyB,gBAAdA,KAEPA,GAAcA,EAAY,IAAO,KAAO,KAG1B,KAAdA,GAAkC,OAAdA,GAAoC,eAAdA,EAE1CxhC,EAAS+iB,EAAO+yB,WAAW6iF,gBAAgB34H,GAC3CA,EAASA,EAAOsY,cAEf,IAAkB,MAAdkpB,GAAmC,MAAdA,GAAmC,gBAAdA,EAE/CxhC,EAASA,EAAOsY,UAChBtY,EAAS+iB,EAAO+yB,WAAW6iF,gBAAgB34H,OAE1C,IAA4B,MAAxBjF,KAAKq7B,IAAIoL,IAAoC,cAAdA,EACxC,CACI,IAAK,GAAIrkC,GAAI,EAAGA,EAAI6C,EAAO5C,OAAQD,IAE/B6C,EAAO7C,GAAGmb,SAGdtY,GAASA,EAAOsY,UAGpB,MAAOtY,IAaX+4H,YAAa,SAAUp7H,EAAOq7H,GAE1B,IAAKA,EAAI57H,OAEL,MAAO67H,IAEN,IAAmB,IAAfD,EAAI57H,QAAgBO,EAAQq7H,EAAI,GAErC,MAAOA,GAAI,EAIf,KADA,GAAI77H,GAAI,EACD67H,EAAI77H,GAAKQ,GACZR,GAGJ,IAAI+7H,GAAMF,EAAI77H,EAAI,GACdg8H,EAAQh8H,EAAI67H,EAAI57H,OAAU47H,EAAI77H,GAAK6/B,OAAO6B,iBAE9C,OAA2BlhC,GAAQu7H,GAA1BC,EAAOx7H,EAA2Bw7H,EAAOD,GAYtD1hG,OAAQ,SAAUyC,GAEd,GAAI0B,GAAI1B,EAAMqvB,OAGd,OAFArvB,GAAMh8B,KAAK09B,GAEJA,GAaXy9F,YAAa,SAAU7zH,EAAOtB,GAI1B,IAAK,GAFDqH,MAEKnO,EAAIoI,EAAYtB,GAAL9G,EAAUA,IAE1BmO,EAAOrN,KAAKd,EAGhB,OAAOmO,IAqCX+tH,gBAAiB,SAAU9zH,EAAOtB,EAAK82C,IAErBn3C,SAAV2B,GAAiC,OAAVA,KAAkBA,EAAQ,IAEzC3B,SAARK,GAA6B,OAARA,KAErBA,EAAMsB,EACNA,EAAQ,GAGC3B,SAATm3C,IAAsBA,EAAO,EAKjC,KAAK,GAHDzvC,MACAse,EAAQ7uB,KAAK+G,IAAIihB,EAAOhoB,KAAKymG,mBAAmBv9F,EAAMsB,IAAUw1C,GAAQ,IAAK,GAExE59C,EAAI,EAAOysB,EAAJzsB,EAAWA,IAEvBmO,EAAOrN,KAAKsH,GACZA,GAASw1C,CAGb,OAAOzvC,KAuBfyX,EAAOu2G,WAAa,WAOhBp/H,KAAK43C,KAAO,KAOZ53C,KAAKk5E,KAAO,KAOZl5E,KAAKgwD,MAAQ,KAObhwD,KAAK63B,KAAO,KAOZ73B,KAAK0vB,MAAQ,GAIjB7G,EAAOu2G,WAAWv8H,WASdi7B,IAAK,SAAUv6B,GAGX,MAAmB,KAAfvD,KAAK0vB,OAA8B,OAAf1vB,KAAKgwD,OAAgC,OAAdhwD,KAAK63B,MAEhD73B,KAAKgwD,MAAQzsD,EACbvD,KAAK63B,KAAOt0B,EACZvD,KAAK43C,KAAOr0C,EACZA,EAAK21E,KAAOl5E,KACZA,KAAK0vB,QACEnsB,IAIXvD,KAAK63B,KAAK+f,KAAOr0C,EAEjBA,EAAK21E,KAAOl5E,KAAK63B,KAEjB73B,KAAK63B,KAAOt0B,EAEZvD,KAAK0vB,QAEEnsB,IASXulC,MAAO,WAEH9oC,KAAKgwD,MAAQ,KACbhwD,KAAK63B,KAAO,KACZ73B,KAAK43C,KAAO,KACZ53C,KAAKk5E,KAAO,KACZl5E,KAAK0vB,MAAQ,GAUjBze,OAAQ,SAAU1N,GAEd,MAAmB,KAAfvD,KAAK0vB,OAEL1vB,KAAK8oC,aACLvlC,EAAKq0C,KAAOr0C,EAAK21E,KAAO,QAIxB31E,IAASvD,KAAKgwD,MAGdhwD,KAAKgwD,MAAQhwD,KAAKgwD,MAAMpY,KAEnBr0C,IAASvD,KAAK63B,OAGnB73B,KAAK63B,KAAO73B,KAAK63B,KAAKqhD,MAGtB31E,EAAK21E,OAGL31E,EAAK21E,KAAKthC,KAAOr0C,EAAKq0C,MAGtBr0C,EAAKq0C,OAGLr0C,EAAKq0C,KAAKshC,KAAO31E,EAAK21E,MAG1B31E,EAAKq0C,KAAOr0C,EAAK21E,KAAO,KAEL,OAAfl5E,KAAKgwD,QAELhwD,KAAK63B,KAAO,UAGhB73B,MAAK0vB,UAWTgqB,QAAS,SAAUH,GAEf,GAAKv5C,KAAKgwD,OAAUhwD,KAAK63B,KAAzB,CAKA,GAAIwnG,GAASr/H,KAAKgwD,KAElB,GAEQqvE,IAAUA,EAAO9lF,IAEjB8lF,EAAO9lF,GAAU7zC,KAAK25H,GAG1BA,EAASA,EAAOznF,WAGdynF,GAAUr/H,KAAK63B,KAAK+f,SAMlC/uB,EAAOu2G,WAAWv8H,UAAUC,YAAc+lB,EAAOu2G,WAmBjDv2G,EAAOo2B,OAAS,SAAU/+C,GAKtBF,KAAKE,KAAOA,EAKZF,KAAKg6H,IAAM,KAKXh6H,KAAK4Q,OAAS,KAKd5Q,KAAKo4E,IAAM,KAKXp4E,KAAKs/H,WACC,EAAG,OAAQC,EAAG,UAAWC,EAAG,OAAQC,EAAG,UAAWC,EAAG,UAAWC,EAAG,UAAWC,EAAG,UAAWC,EAAG,UAAWC,EAAG,UAAWC,EAAG,UAAWh8D,EAAG,UAAWE,EAAG,UAAWC,EAAG,UAAWC,EAAG,UAAWC,EAAG,UAAWvtC,EAAG,YAC/M,EAAG,OAAQ0oG,EAAG,UAAWC,EAAG,UAAWC,EAAG,UAAWC,EAAG,UAAWC,EAAG,UAAWC,EAAG,UAAWC,EAAG,UAAWC,EAAG,UAAWC,EAAG,UAAWh8D,EAAG,UAAWE,EAAG,UAAWC,EAAG,UAAWC,EAAG,UAAWC,EAAG,UAAWvtC,EAAG,YAClN,EAAG,OAAQ0oG,EAAG,UAAWC,EAAG,UAAWC,EAAG,UAAWC,EAAG,UAAWC,EAAG,UAAWC,EAAG,UAAWC,EAAG,UAAWC,EAAG,UAAWC,EAAG,UAAWh8D,EAAG,UAAWE,EAAG,UAAWC,EAAG,UAAWC,EAAG,UAAWC,EAAG,UAAWvtC,EAAG,SAClN,EAAG,OAAQ0oG,EAAG,OAAQC,EAAG,UAAWC,EAAG,UAAWC,EAAG,UAAWC,EAAG,UAAWC,EAAG,UAAWC,EAAG,UAAWC,EAAG,UAAWC,EAAG,UAAWh8D,EAAG,UAAWE,EAAG,UAAWC,EAAG,UAAWC,EAAG,UAAWC,EAAG,UAAWvtC,EAAG,YAC/M,EAAG,OAAQ0oG,EAAG,UAAWC,EAAG,UAAWC,EAAG,UAAWC,EAAG,UAAWC,EAAG,UAAWC,EAAG,UAAWC,EAAG,UAAWC,EAAG,UAAWC,EAAG,UAAWh8D,EAAG,UAAWE,EAAG,UAAWC,EAAG,UAAWC,EAAG,UAAWC,EAAG,UAAWvtC,EAAG,UAU5NhO,EAAOo2B,OAAO+gF,aAAe,EAO7Bn3G,EAAOo2B,OAAOghF,YAAc,EAO5Bp3G,EAAOo2B,OAAOihF,YAAc,EAO5Br3G,EAAOo2B,OAAOkhF,YAAc,EAO5Bt3G,EAAOo2B,OAAOmhF,yBAA2B,EAEzCv3G,EAAOo2B,OAAOp8C,WAiCViF,QAAS,SAAUiN,EAAK/D,EAAMqvH,EAAYC,EAAaC,GAEhC72H,SAAf22H,IAA4BA,EAAa,GACzB32H,SAAhB42H,IAA6BA,EAAcD,GAC/B32H,SAAZ62H,IAAyBA,EAAU,EAEvC,IAAI3oH,GAAI5G,EAAK,GAAG9N,OAASm9H,EACrBj9G,EAAIpS,EAAK9N,OAASo9H,CAGL,QAAbtgI,KAAKg6H,MAELh6H,KAAKg6H,IAAMh6H,KAAKE,KAAK+oC,KAAKwrC,aAC1Bz0E,KAAK4Q,OAAS5Q,KAAKg6H,IAAIppH,OACvB5Q,KAAKo4E,IAAMp4E,KAAKg6H,IAAI1sH,SAGxBtN,KAAKg6H,IAAIjyH,OAAO6P,EAAGwL,GACnBpjB,KAAKg6H,IAAI5+G,OAGT,KAAK,GAAI9V,GAAI,EAAGA,EAAI0L,EAAK9N,OAAQoC,IAI7B,IAAK,GAFDi0G,GAAMvoG,EAAK1L,GAEND,EAAI,EAAGA,EAAIk0G,EAAIr2G,OAAQmC,IAChC,CACI,GAAIR,GAAI00G,EAAIl0G,EAEF,OAANR,GAAmB,MAANA,IAEb7E,KAAKo4E,IAAIvwD,UAAY7nB,KAAKs/H,SAASiB,GAAS17H,GAC5C7E,KAAKo4E,IAAIpwD,SAAS3iB,EAAIg7H,EAAY/6H,EAAIg7H,EAAaD,EAAYC,IAK3E,MAAOtgI,MAAKg6H,IAAI5zH,gBAAgB2O,IAgBpC0jD,KAAM,SAAU1jD,EAAKpO,EAAOC,EAAQ4wC,EAAWC,EAAY7+B,GAGtC,OAAb5Y,KAAKg6H,MAELh6H,KAAKg6H,IAAMh6H,KAAKE,KAAK+oC,KAAKwrC,aAC1Bz0E,KAAK4Q,OAAS5Q,KAAKg6H,IAAIppH,OACvB5Q,KAAKo4E,IAAMp4E,KAAKg6H,IAAI1sH,SAGxBtN,KAAKg6H,IAAIjyH,OAAOpB,EAAOC,GAEvB5G,KAAKo4E,IAAIvwD,UAAYjP,CAErB,KAAK,GAAItT,GAAI,EAAOsB,EAAJtB,EAAYA,GAAKmyC,EAE7Bz3C,KAAKo4E,IAAIpwD,SAAS,EAAG1iB,EAAGqB,EAAO,EAGnC,KAAK,GAAItB,GAAI,EAAOsB,EAAJtB,EAAWA,GAAKmyC,EAE5Bx3C,KAAKo4E,IAAIpwD,SAAS3iB,EAAG,EAAG,EAAGuB,EAG/B,OAAO5G,MAAKg6H,IAAI5zH,gBAAgB2O,KAMxC8T,EAAOo2B,OAAOp8C,UAAUC,YAAc+lB,EAAOo2B,OAsB7Cp2B,EAAO+rG,SAAW,SAAUllB,EAAS/oG,EAAOC,GAKxC5G,KAAKE,KAAOwvG,EAAQxvG,KAKpBF,KAAK0vG,QAAUA,EAGf1vG,KAAK2G,MAAQA,EACb3G,KAAK4G,OAASA,EAEd5G,KAAKwgI,aAAe,GAAI33G,GAAOrmB,UAAU,EAAG,EAAGmE,EAAOC,GACtD5G,KAAK04D,YAAc,GAAI7vC,GAAOrmB,UAAU,EAAG,EAAGmE,EAAOC,GACrD5G,KAAKygI,WAAa,GAAI53G,GAAOrmB,UAAU,EAAG,EAAGmE,EAAOC,GACpD5G,KAAK0gI,WAAa,GAAI73G,GAAOrmB,UAAU,EAAG,EAAGmE,EAAOC,GAMpD5G,KAAK2gI,eAAiB,GAAI93G,GAAOznB,MAAM,EAAG,GAC1CpB,KAAK4gI,cAAgB,GAAI/3G,GAAOznB,MAAM,EAAG,GACzCpB,KAAK6gI,aAAe,GAAIh4G,GAAOznB,MAAM,EAAG,GACxCpB,KAAK8gI,aAAe,GAAIj4G,GAAOznB,MAAM,EAAG,GAMxCpB,KAAK+gI,YAAc,GAAIl4G,GAAOznB,MAAM,EAAG,GACvCpB,KAAKghI,WAAa,GAAIn4G,GAAOznB,MAAM,EAAG,GACtCpB,KAAK24D,mBAAqB,GAAI9vC,GAAOznB,MAAM,EAAG,GAC9CpB,KAAKihI,UAAY,GAAIp4G,GAAOznB,MAAM,EAAG,GACrCpB,KAAKkhI,UAAY,GAAIr4G,GAAOznB,MAAM,EAAG;AAErCpB,KAAKmhI,YAAc,EACnBnhI,KAAKohI,aAAe,EACpBphI,KAAKqhI,cAAgB,EACrBrhI,KAAKshI,cAAgB,EAErBthI,KAAKuhI,OAAS56H,EAAQC,EACtB5G,KAAKwhI,OAAS56H,EAASD,EAEvB3G,KAAK24H,WAAa,EAElB34H,KAAKyhI,WAIT54G,EAAO+rG,SAAS/xH,WASZgmC,QAAS,SAAUliC,EAAOC,GAGtB5G,KAAK2G,MAAQA,EACb3G,KAAK4G,OAASA,EAEd5G,KAAKuhI,OAAS56H,EAAQC,EACtB5G,KAAKwhI,OAAS56H,EAASD,EAEvB3G,KAAKkhI,UAAY,GAAIr4G,GAAOznB,MAAM,EAAG,GAErCpB,KAAK0gI,WAAW/5H,MAAQ3G,KAAK2G,MAC7B3G,KAAK0gI,WAAW95H,OAAS5G,KAAK4G,OAE9B5G,KAAK4oB,WAeT84G,kBAAmB,SAAU/6H,EAAOC,EAAQ5D,EAAUiuC,GAE/BvnC,SAAfunC,IAA4BA,GAAa,GAE7CjxC,KAAKmhI,YAAcx6H,EACnB3G,KAAKohI,aAAex6H,EAEpB5G,KAAKwgI,aAAa75H,MAAQA,EAC1B3G,KAAKwgI,aAAa55H,OAASA,CAE3B,IAAI+6H,GAAQ,GAAI94G,GAAO+4G,UAAU5hI,KAAMA,KAAK2gI,eAAgB3gI,KAAKwgI,aAAcxgI,KAAK+gI,YAcpF,OAZI9vF,IAEAjxC,KAAKE,KAAKuE,MAAMq5B,IAAI6jG,GAGxB3hI,KAAKyhI,OAAO19H,KAAK49H,GAEO,mBAAb3+H,IAAgD,aAAbA,IAE1C2+H,EAAM7qF,YAAY9zC,GAGf2+H,GAWXE,iBAAkB,SAAU7+H,EAAUiuC,GAEfvnC,SAAfunC,IAA4BA,GAAa,EAE7C,IAAI0wF,GAAQ,GAAI94G,GAAO+4G,UAAU5hI,KAAMA,KAAK4gI,cAAe5gI,KAAK04D,YAAa14D,KAAKghI,WAclF,OAZI/vF,IAEAjxC,KAAKE,KAAKuE,MAAMq5B,IAAI6jG,GAGxB3hI,KAAKyhI,OAAO19H,KAAK49H,GAEO,mBAAb3+H,IAAgD,aAAbA,IAE1C2+H,EAAM7qF,YAAY9zC,GAGf2+H,GAWXG,gBAAiB,SAAU9+H,GAEvB,GAAI2+H,GAAQ,GAAI94G,GAAO+4G,UAAU5hI,KAAMA,KAAK6gI,aAAc7gI,KAAKygI,WAAYzgI,KAAKghI,WAWhF,OATAhhI,MAAKE,KAAKuE,MAAMq5B,IAAI6jG,GAEpB3hI,KAAKyhI,OAAO19H,KAAK49H,GAEO,mBAAb3+H,IAEP2+H,EAAM7qF,YAAY9zC,GAGf2+H,GAWXI,iBAAkB,SAAU/+H,GAExB,GAAI2+H,GAAQ,GAAI94G,GAAO+4G,UAAU5hI,KAAMA,KAAK8gI,aAAc9gI,KAAK0gI,WAAY1gI,KAAKkhI,UAWhF,OATAlhI,MAAKE,KAAKuE,MAAMq5B,IAAI6jG,GAEpB3hI,KAAKyhI,OAAO19H,KAAK49H,GAEO,mBAAb3+H,IAEP2+H,EAAM7qF,YAAY9zC,GAGf2+H,GASX74F,MAAO,WAIH,IAFA,GAAI7lC,GAAIjD,KAAKyhI,OAAOv+H,OAEbD,KAEEjD,KAAKyhI,OAAOx+H,GAAG++H,UAGhBhiI,KAAKyhI,OAAOx+H,GAAG9B,SAAW,KAC1BnB,KAAKyhI,OAAOx+H,GAAG5B,MAAQ,KACvBrB,KAAKyhI,OAAOprG,MAAMpzB,EAAG,KAajC4vH,SAAU,SAAUlsH,EAAOC,GAEvB5G,KAAKuhI,OAAS56H,EAAQC,EACtB5G,KAAKwhI,OAAS56H,EAASD,EAEvB3G,KAAK4oB,QAAQjiB,EAAOC,IASxBgiB,QAAS,WAEL5oB,KAAK24H,WAAa93H,KAAKq9B,IAAKl+B,KAAK0vG,QAAQ9oG,OAAS5G,KAAK4G,OAAU5G,KAAK0vG,QAAQ/oG,MAAQ3G,KAAK2G,OAE3F3G,KAAK04D,YAAY/xD,MAAQ9F,KAAKw6B,MAAMr7B,KAAK2G,MAAQ3G,KAAK24H,YACtD34H,KAAK04D,YAAY9xD,OAAS/F,KAAKw6B,MAAMr7B,KAAK4G,OAAS5G,KAAK24H,YAExD34H,KAAKghI,WAAWx9H,IAAIxD,KAAK04D,YAAY/xD,MAAQ3G,KAAK2G,MAAO3G,KAAK04D,YAAY9xD,OAAS5G,KAAK4G,QACxF5G,KAAK24D,mBAAmBn1D,IAAIxD,KAAK2G,MAAQ3G,KAAK04D,YAAY/xD,MAAO3G,KAAK4G,OAAS5G,KAAK04D,YAAY9xD,QAEhG5G,KAAKihI,UAAUz9H,IAAIxD,KAAKygI,WAAW95H,MAAQ3G,KAAK2G,MAAO3G,KAAKygI,WAAW75H,OAAS5G,KAAK4G,QAErF5G,KAAKygI,WAAW95H,MAAQ9F,KAAKw6B,MAAMr7B,KAAK0vG,QAAQ/oG,MAAQ3G,KAAK24D,mBAAmBtzD,GAChFrF,KAAKygI,WAAW75H,OAAS/F,KAAKw6B,MAAMr7B,KAAK0vG,QAAQ9oG,OAAS5G,KAAK24D,mBAAmBrzD,GAElFtF,KAAK04D,YAAY76B,SAAS79B,KAAK0vG,QAAQlpG,OAAOsnB,QAAS9tB,KAAK0vG,QAAQlpG,OAAOunB,SAC3E/tB,KAAK0gI,WAAW7iG,SAAS79B,KAAK0vG,QAAQlpG,OAAOsnB,QAAS9tB,KAAK0vG,QAAQlpG,OAAOunB,SAE1E/tB,KAAK4gI,cAAcp9H,IAAIxD,KAAK04D,YAAYrzD,EAAGrF,KAAK04D,YAAYpzD,GAC5DtF,KAAK8gI,aAAat9H,IAAIxD,KAAK0gI,WAAWr7H,EAAGrF,KAAK0gI,WAAWp7H,IAU7D28H,UAAW,SAAUv/G,GAEjB1iB,KAAK0vG,QAAQ+pB,YAAY/2G,GAEzBA,EAAOrd,EAAIrF,KAAK0vG,QAAQlpG,OAAOsnB,QAC/BpL,EAAOpd,EAAItF,KAAK0vG,QAAQlpG,OAAOunB,SASnC6e,MAAO,WAUH5sC,KAAKE,KAAK0sC,MAAM8lC,KAAK1yE,KAAK04D,YAAY/xD,MAAQ,MAAQ3G,KAAK04D,YAAY9xD,OAAQ5G,KAAK04D,YAAYrzD,EAAI,EAAGrF,KAAK04D,YAAYpzD,EAAI,IAC5HtF,KAAKE,KAAK0sC,MAAM8uF,KAAK17H,KAAK04D,YAAa,oBAAoB,KAYnE7vC,EAAO+rG,SAAS/xH,UAAUC,YAAc+lB,EAAO+rG,SAuB/C/rG,EAAO+4G,UAAY,SAAUlyB,EAASvuG,EAAUqF,EAAQnF,GAEpDwnB,EAAO0rB,MAAM7uC,KAAK1F,KAAM0vG,EAAQxvG,KAAM,KAAM,cAAgBwvG,EAAQxvG,KAAKioC,IAAIksC,QAAQ,GAKrFr0E,KAAK0vG,QAAUA,EAAQA,QAKvB1vG,KAAKy4D,KAAOi3C,EAOZ1vG,KAAKgiI,SAAU,EAKfhiI,KAAKmB,SAAWA,EAKhBnB,KAAKwG,OAASA,EAKdxG,KAAKqB,MAAQA,EAKbrB,KAAKkiI,QAAU17H,EAAO07H,QAKtBliI,KAAKmiI,UAAY,GAAIt5G,GAAOznB,MAAMoF,EAAO21B,UAAW,GAKpDn8B,KAAKoiI,SAAW57H,EAAO47H,SAKvBpiI,KAAKqiI,WAAa77H,EAAO67H,WAKzBriI,KAAKsiI,aAAe,GAAIz5G,GAAOznB,MAAMoF,EAAO21B,UAAW31B,EAAOq1B,QAK9D77B,KAAKuiI,YAAc/7H,EAAO+7H,aAI9B15G,EAAO+4G,UAAU/+H,UAAYO,OAAOiF,OAAOwgB,EAAO0rB,MAAM1xC,WACxDgmB,EAAO+4G,UAAU/+H,UAAUC,YAAc+lB,EAAO+4G,UAOhD/4G,EAAO+4G,UAAU/+H,UAAUkF,OAAS,aAQpC8gB,EAAO+4G,UAAU/+H,UAAU+pC,MAAQ,WAE/B5sC,KAAKE,KAAK0sC,MAAM8lC,KAAK1yE,KAAKwG,OAAOG,MAAQ,MAAQ3G,KAAKwG,OAAOI,OAAQ5G,KAAKwG,OAAOnB,EAAI,EAAGrF,KAAKwG,OAAOlB,EAAI,IACxGtF,KAAKE,KAAK0sC,MAAM8uF,KAAK17H,KAAKwG,OAAQ,oBAAoB,GAEtDxG,KAAKE,KAAK0sC,MAAM8uF,KAAK17H,KAAKkiI,QAAS,wBACnCliI,KAAKE,KAAK0sC,MAAM8uF,KAAK17H,KAAKmiI,UAAW,wBACrCniI,KAAKE,KAAK0sC,MAAM8uF,KAAK17H,KAAKoiI,SAAU,yBAexCv5G,EAAOsrB,OAeHumC,UAAW,SAAUx/D,EAAGC,EAAGxW,EAAGD,GAE1B,MAAImkB,GAAOm0B,OAAOq+B,eAEJ32E,GAAK,GAAOC,GAAK,GAAOwW,GAAM,EAAKD,KAAQ,GAI3CA,GAAK,GAAOC,GAAK,GAAOxW,GAAM,EAAKD,KAAQ,GAwB7Ds1E,YAAa,SAAU7wD,EAAM0R,EAAK4gD,EAAKC,GAkCnC,OAhCYhyE,SAARmxB,GAA6B,OAARA,KAAgBA,EAAMhS,EAAOsrB,MAAM4lC,gBAChDrwE,SAAR+xE,GAA6B,OAARA,KAAgBA,GAAM,IACnC/xE,SAARgyE,GAA6B,OAARA,KAAgBA,GAAM,GAE3C7yD,EAAOm0B,OAAOq+B,eAEdxgD,EAAIn2B,GAAa,WAAPykB,KAAuB,GACjC0R,EAAIl2B,GAAa,SAAPwkB,KAAuB,GACjC0R,EAAI1f,GAAa,MAAPgO,KAAuB,EACjC0R,EAAI3f,EAAa,IAAPiO,IAIV0R,EAAI3f,GAAa,WAAPiO,KAAuB,GACjC0R,EAAI1f,GAAa,SAAPgO,KAAuB,GACjC0R,EAAIl2B,GAAa,MAAPwkB,KAAuB,EACjC0R,EAAIn2B,EAAa,IAAPykB,GAGd0R,EAAIjiB,MAAQuQ,EACZ0R,EAAI1R,KAAO,QAAU0R,EAAI3f,EAAI,IAAM2f,EAAI1f,EAAI,IAAM0f,EAAIl2B,EAAI,IAAOk2B,EAAIn2B,EAAI,IAAO,IAE3E+2E,GAEA5yD,EAAOsrB,MAAMquF,SAAS3nG,EAAI3f,EAAG2f,EAAI1f,EAAG0f,EAAIl2B,EAAGk2B,GAG3C6gD,GAEA7yD,EAAOsrB,MAAMsuF,SAAS5nG,EAAI3f,EAAG2f,EAAI1f,EAAG0f,EAAIl2B,EAAGk2B,GAGxCA,GAeX6nG,SAAU,SAAUv5G,EAAM0R,GActB,MAZKA,KAEDA,EAAMhS,EAAOsrB,MAAM4lC,eAGvBl/C,EAAI3f,GAAa,WAAPiO,KAAuB,GACjC0R,EAAI1f,GAAa,SAAPgO,KAAuB,GACjC0R,EAAIl2B,GAAa,MAAPwkB,KAAuB,EACjC0R,EAAIn2B,EAAa,IAAPykB,EAEV0R,EAAI1R,KAAO,QAAU0R,EAAI3f,EAAI,IAAM2f,EAAI1f,EAAI,IAAM0f,EAAIl2B,EAAI,IAAMk2B,EAAIn2B,EAAI,IAEhEm2B,GAgBX8nG,OAAQ,SAAUznH,EAAGC,EAAGxW,EAAGD,GAEvB,MAAQwW,IAAK,GAAOC,GAAK,GAAOxW,GAAM,EAAKD,GAkB/C89H,SAAU,SAAUtnH,EAAGC,EAAGxW,EAAGk2B,GAEpBA,IAEDA,EAAMhS,EAAOsrB,MAAM4lC,YAAY7+D,EAAGC,EAAGxW,EAAG,IAG5CuW,GAAK,IACLC,GAAK,IACLxW,GAAK,GAEL,IAAIu5B,GAAMr9B,KAAKq9B,IAAIhjB,EAAGC,EAAGxW,GACrBiD,EAAM/G,KAAK+G,IAAIsT,EAAGC,EAAGxW,EAOzB,IAJAk2B,EAAIzX,EAAI,EACRyX,EAAI4G,EAAI,EACR5G,EAAI/C,GAAKlwB,EAAMs2B,GAAO,EAElBt2B,IAAQs2B,EACZ,CACI,GAAIr5B,GAAI+C,EAAMs2B,CAEdrD,GAAI4G,EAAI5G,EAAI/C,EAAI,GAAMjzB,GAAK,EAAI+C,EAAMs2B,GAAOr5B,GAAK+C,EAAMs2B,GAEnDt2B,IAAQsT,EAER2f,EAAIzX,GAAKjI,EAAIxW,GAAKE,GAASF,EAAJwW,EAAQ,EAAI,GAE9BvT,IAAQuT,EAEb0f,EAAIzX,GAAKze,EAAIuW,GAAKrW,EAAI,EAEjB+C,IAAQjD,IAEbk2B,EAAIzX,GAAKlI,EAAIC,GAAKtW,EAAI,GAG1Bg2B,EAAIzX,GAAK,EAGb,MAAOyX,IAkBXkgD,SAAU,SAAU33D,EAAGqe,EAAG3J,EAAG+C,GAczB,GAZKA,GAODA,EAAI3f,EAAI4c,EACR+C,EAAI1f,EAAI2c,EACR+C,EAAIl2B,EAAImzB,GAPR+C,EAAMhS,EAAOsrB,MAAM4lC,YAAYjiD,EAAGA,EAAGA,GAU/B,IAAN2J,EACJ,CACI,GAAIynD,GAAQ,GAAJpxD,EAAUA,GAAK,EAAI2J,GAAK3J,EAAI2J,EAAI3J,EAAI2J,EACxCj9B,EAAI,EAAIszB,EAAIoxD,CAChBruD,GAAI3f,EAAI2N,EAAOsrB,MAAMyuF,WAAWp+H,EAAG0kF,EAAG9lE,EAAI,EAAI,GAC9CyX,EAAI1f,EAAI0N,EAAOsrB,MAAMyuF,WAAWp+H,EAAG0kF,EAAG9lE,GACtCyX,EAAIl2B,EAAIkkB,EAAOsrB,MAAMyuF,WAAWp+H,EAAG0kF,EAAG9lE,EAAI,EAAI,GAalD,MANAyX,GAAI3f,EAAIra,KAAKq1B,MAAe,IAAR2E,EAAI3f,EAAU,GAClC2f,EAAI1f,EAAIta,KAAKq1B,MAAe,IAAR2E,EAAI1f,EAAU,GAClC0f,EAAIl2B,EAAI9D,KAAKq1B,MAAe,IAAR2E,EAAIl2B,EAAU,GAElCkkB,EAAOsrB,MAAME,YAAYxZ,GAElBA,GAkBX4nG,SAAU,SAAUvnH,EAAGC,EAAGxW,EAAGk2B,GAEpBA,IAEDA,EAAMhS,EAAOsrB,MAAM4lC,YAAY7+D,EAAGC,EAAGxW,EAAG,MAG5CuW,GAAK,IACLC,GAAK,IACLxW,GAAK,GAEL,IAAIu5B,GAAMr9B,KAAKq9B,IAAIhjB,EAAGC,EAAGxW,GACrBiD,EAAM/G,KAAK+G,IAAIsT,EAAGC,EAAGxW,GACrBE,EAAI+C,EAAMs2B,CAyBd,OAtBArD,GAAIzX,EAAI,EACRyX,EAAI4G,EAAY,IAAR75B,EAAY,EAAI/C,EAAI+C,EAC5BizB,EAAI4kB,EAAI73C,EAEJA,IAAQs2B,IAEJt2B,IAAQsT,EAER2f,EAAIzX,GAAKjI,EAAIxW,GAAKE,GAASF,EAAJwW,EAAQ,EAAI,GAE9BvT,IAAQuT,EAEb0f,EAAIzX,GAAKze,EAAIuW,GAAKrW,EAAI,EAEjB+C,IAAQjD,IAEbk2B,EAAIzX,GAAKlI,EAAIC,GAAKtW,EAAI,GAG1Bg2B,EAAIzX,GAAK,GAGNyX,GAkBXgoG,SAAU,SAAUz/G,EAAGqe,EAAGge,EAAG5kB,GAEbnxB,SAARmxB,IAAqBA,EAAMhS,EAAOsrB,MAAM4lC,YAAY,EAAG,EAAG,EAAG,EAAG32D,EAAGqe,EAAG,EAAGge,GAE7E,IAAIvkC,GAAGC,EAAGxW,EACN1B,EAAIpC,KAAKq1B,MAAU,EAAJ9S,GACfqV,EAAQ,EAAJrV,EAAQngB,EACZuB,EAAIi7C,GAAK,EAAIhe,GACbynD,EAAIzpC,GAAK,EAAIhnB,EAAIgJ,GACjBvK,EAAIuoB,GAAK,GAAK,EAAIhnB,GAAKgJ,EAE3B,QAAQx+B,EAAI,GAER,IAAK,GACDiY,EAAIukC,EACJtkC,EAAI+b,EACJvyB,EAAIH,CACJ,MACJ,KAAK,GACD0W,EAAIguE,EACJ/tE,EAAIskC,EACJ96C,EAAIH,CACJ,MACJ,KAAK,GACD0W,EAAI1W,EACJ2W,EAAIskC,EACJ96C,EAAIuyB,CACJ,MACJ,KAAK,GACDhc,EAAI1W,EACJ2W,EAAI+tE,EACJvkF,EAAI86C,CACJ,MACJ,KAAK,GACDvkC,EAAIgc,EACJ/b,EAAI3W,EACJG,EAAI86C,CACJ,MACJ,KAAK,GACDvkC,EAAIukC,EACJtkC,EAAI3W,EACJG,EAAIukF,EAUZ,MANAruD,GAAI3f,EAAIra,KAAKq1B,MAAU,IAAJhb,GACnB2f,EAAI1f,EAAIta,KAAKq1B,MAAU,IAAJ/a,GACnB0f,EAAIl2B,EAAI9D,KAAKq1B,MAAU,IAAJvxB,GAEnBkkB,EAAOsrB,MAAME,YAAYxZ,GAElBA,GAeX+nG,WAAY,SAAUp+H,EAAG0kF,EAAGhyD,GAYxB,MAVQ,GAAJA,IAEAA,GAAK,GAGLA,EAAI,IAEJA,GAAK,GAGD,EAAI,EAARA,EAEO1yB,EAAc,GAAT0kF,EAAI1kF,GAAS0yB,EAGrB,GAAJA,EAEOgyD,EAGH,EAAI,EAARhyD,EAEO1yB,GAAK0kF,EAAI1kF,IAAM,EAAI,EAAI0yB,GAAK,EAGhC1yB,GAuBXu1E,YAAa,SAAU7+D,EAAGC,EAAGxW,EAAGD,EAAG0e,EAAGqe,EAAG3J,EAAG2nB,GAExC,GAAI5kB,IAAQ3f,EAAGA,GAAK,EAAGC,EAAGA,GAAK,EAAGxW,EAAGA,GAAK,EAAGD,EAAGA,GAAK,EAAG0e,EAAGA,GAAK,EAAGqe,EAAGA,GAAK,EAAG3J,EAAGA,GAAK,EAAG2nB,EAAGA,GAAK,EAAG7mC,MAAO,EAAGkqH,QAAS,EAAG35G,KAAM,GAEhI,OAAON,GAAOsrB,MAAME,YAAYxZ,IAYpCwZ,YAAa,SAAUxZ,GAMnB,MAJAA,GAAI1R,KAAO,QAAU0R,EAAI3f,EAAE4M,WAAa,IAAM+S,EAAI1f,EAAE2M,WAAa,IAAM+S,EAAIl2B,EAAEmjB,WAAa,IAAM+S,EAAIn2B,EAAEojB,WAAa,IACnH+S,EAAIjiB,MAAQiQ,EAAOsrB,MAAM4uF,SAASloG,EAAI3f,EAAG2f,EAAI1f,EAAG0f,EAAIl2B,GACpDk2B,EAAIioG,QAAUj6G,EAAOsrB,MAAM6uF,WAAmB,IAARnoG,EAAIn2B,EAASm2B,EAAI3f,EAAG2f,EAAI1f,EAAG0f,EAAIl2B,GAE9Dk2B,GAeXmoG,WAAY,SAAUt+H,EAAGwW,EAAGC,EAAGxW,GAE3B,MAAOD,IAAK,GAAKwW,GAAK,GAAKC,GAAK,EAAIxW,GAcxCo+H,SAAU,SAAU7nH,EAAGC,EAAGxW,GAEtB,MAAOuW,IAAK,GAAKC,GAAK,EAAIxW,GAiB9Bs+H,YAAa,SAAU/nH,EAAGC,EAAGxW,EAAGD,EAAG++F,GAK/B,MAHU/5F,UAANhF,IAAmBA,EAAI,KACZgF,SAAX+5F,IAAwBA,EAAS,KAEtB,MAAXA,EAEO,MAAQ,GAAK,KAAOvoF,GAAK,KAAOC,GAAK,GAAKxW,GAAGmjB,SAAS,IAAIuO,MAAM,GAIhE,KAAOxN,EAAOsrB,MAAM+uF,eAAex+H,GAAKmkB,EAAOsrB,MAAM+uF,eAAehoH,GAAK2N,EAAOsrB,MAAM+uF,eAAe/nH,GAAK0N,EAAOsrB,MAAM+uF,eAAev+H,IAarJw+H,SAAU,SAAUlzH,GAEhB,GAAIE,GAAM0Y,EAAOsrB,MAAMivF,WAAWnzH,EAElC,OAAIE,GAEO0Y,EAAOsrB,MAAM6uF,WAAW7yH,EAAIzL,EAAGyL,EAAI+K,EAAG/K,EAAIgL,EAAGhL,EAAIxL,GAF5D,QAoBJy+H,WAAY,SAAUnzH,EAAK4qB,GAGvB5qB,EAAMA,EAAIgqB,QAAQ,0CAA2C,SAASiH,EAAGhmB,EAAGC,EAAGxW,GAC3E,MAAOuW,GAAIA,EAAIC,EAAIA,EAAIxW,EAAIA,GAG/B,IAAIyM,GAAS,mDAAmDyiF,KAAK5jF,EAErE,IAAImB,EACJ,CACI,GAAI8J,GAAIyd,SAASvnB,EAAO,GAAI,IACxB+J,EAAIwd,SAASvnB,EAAO,GAAI,IACxBzM,EAAIg0B,SAASvnB,EAAO,GAAI,GAEvBypB,IAMDA,EAAI3f,EAAIA,EACR2f,EAAI1f,EAAIA,EACR0f,EAAIl2B,EAAIA,GANRk2B,EAAMhS,EAAOsrB,MAAM4lC,YAAY7+D,EAAGC,EAAGxW,GAU7C,MAAOk2B,IAeXwoG,WAAY,SAAUC,EAAKzoG,GAElBA,IAEDA,EAAMhS,EAAOsrB,MAAM4lC,cAGvB,IAAI3oE,GAAS,4EAA4EyiF,KAAKyvC,EAW9F,OATIlyH,KAEAypB,EAAI3f,EAAIyd,SAASvnB,EAAO,GAAI,IAC5BypB,EAAI1f,EAAIwd,SAASvnB,EAAO,GAAI,IAC5BypB,EAAIl2B,EAAIg0B,SAASvnB,EAAO,GAAI,IAC5BypB,EAAIn2B,EAAkBgF,SAAd0H,EAAO,GAAmBqjF,WAAWrjF,EAAO,IAAM,EAC1DyX,EAAOsrB,MAAME,YAAYxZ,IAGtBA,GAiBXuZ,aAAc,SAAU3wC,EAAOo3B,GAS3B,GALKA,IAEDA,EAAMhS,EAAOsrB,MAAM4lC,eAGF,gBAAVt2E,GAEP,MAA6B,KAAzBA,EAAM2F,QAAQ,OAEPyf,EAAOsrB,MAAMkvF,WAAW5/H,EAAOo3B,IAKtCA,EAAIn2B,EAAI,EACDmkB,EAAOsrB,MAAMivF,WAAW3/H,EAAOo3B,GAGzC,IAAqB,gBAAVp3B,GAChB,CAGI,GAAI8/H,GAAY16G,EAAOsrB,MAAMqvF,OAAO//H,EAKpC,OAJAo3B,GAAI3f,EAAIqoH,EAAUroH,EAClB2f,EAAI1f,EAAIooH,EAAUpoH,EAClB0f,EAAIl2B,EAAI4+H,EAAU5+H,EAClBk2B,EAAIn2B,EAAI6+H,EAAU7+H,EAAI,IACfm2B,EAIP,MAAOA,IAafqoG,eAAgB,SAAUtqH,GAEtB,GAAI3I,GAAM2I,EAAMkP,SAAS,GACzB,OAAqB,IAAd7X,EAAI/M,OAAc,IAAM+M,EAAMA,GAazCwzH,cAAe,SAAUhiG,EAAGge,GAEd/1C,SAAN+3B,IAAmBA,EAAI,GACjB/3B,SAAN+1C,IAAmBA,EAAI,EAI3B,KAAK,GAFD79B,MAEKhd,EAAI,EAAQ,KAALA,EAAUA,IAEtBgd,EAAO7d,KAAK8kB,EAAOsrB,MAAM0uF,SAASj+H,EAAI,IAAK68B,EAAGge,GAGlD,OAAO79B,IAaX8hH,cAAe,SAAUjiG,EAAG3J,GAEdpuB,SAAN+3B,IAAmBA,EAAI,IACjB/3B,SAANouB,IAAmBA,EAAI,GAI3B,KAAK,GAFDlW,MAEKhd,EAAI,EAAQ,KAALA,EAAUA,IAEtBgd,EAAO7d,KAAK8kB,EAAOsrB,MAAM4mC,SAASn2E,EAAI,IAAK68B,EAAG3J,GAGlD,OAAOlW,IAgBX+hH,iBAAkB,SAAUC,EAAQC,EAAQC,EAAOC,EAAaviI,GAE9CkI,SAAVlI,IAAuBA,EAAQ,IAEnC,IAAIwiI,GAAOn7G,EAAOsrB,MAAMqvF,OAAOI,GAC3BK,EAAOp7G,EAAOsrB,MAAMqvF,OAAOK,GAC3B3oH,GAAO+oH,EAAKhpD,IAAM+oD,EAAK/oD,KAAO8oD,EAAeD,EAASE,EAAK/oD,IAC3D9/D,GAAO8oH,EAAK/oD,MAAQ8oD,EAAK9oD,OAAS6oD,EAAeD,EAASE,EAAK9oD,MAC/Dv2E,GAAOs/H,EAAK9oD,KAAO6oD,EAAK7oD,MAAQ4oD,EAAeD,EAASE,EAAK7oD,IAEjE,OAAOtyD,GAAOsrB,MAAM6uF,WAAWxhI,EAAO0Z,EAAGC,EAAGxW,IAiBhDu/H,wBAAyB,SAAUtrH,EAAOsC,EAAGC,EAAGxW,EAAGm/H,EAAOC,GAEtD,GAAIrzH,GAAMmY,EAAOsrB,MAAMqvF,OAAO5qH,GAC1BurH,GAAQjpH,EAAIxK,EAAIuqE,KAAO8oD,EAAeD,EAASpzH,EAAIuqE,IACnDmpD,GAAQjpH,EAAIzK,EAAIwqE,OAAS6oD,EAAeD,EAASpzH,EAAIwqE,MACrDmpD,GAAQ1/H,EAAI+L,EAAIyqE,MAAQ4oD,EAAeD,EAASpzH,EAAIyqE,IAExD,OAAOtyD,GAAOsrB,MAAM4uF,SAASoB,EAAIC,EAAIC,IAkBzCC,eAAgB,SAAUjqD,EAAIC,EAAIt7C,EAAIu7C,EAAIC,EAAIv7C,EAAI6kG,EAAOC,GAErD,GAAI7oH,IAAOq/D,EAAKF,GAAM0pD,EAAeD,EAASzpD,EAC1Cl/D,GAAOq/D,EAAKF,GAAMypD,EAAeD,EAASxpD,EAC1C31E,GAAOs6B,EAAKD,GAAM+kG,EAAeD,EAAS9kG,CAE9C,OAAOnW,GAAOsrB,MAAM4uF,SAAS7nH,EAAGC,EAAGxW,IAgBvC4/H,eAAgB,SAAUrmG,EAAKt2B,EAAKpG,GAOhC,GALYkI,SAARw0B,IAAqBA,EAAM,GACnBx0B,SAAR9B,IAAqBA,EAAM,KACjB8B,SAAVlI,IAAuBA,EAAQ,KAG/BoG,EAAM,KAAOs2B,EAAMt2B,EAEnB,MAAOihB,GAAOsrB,MAAM4uF,SAAS,IAAK,IAAK,IAG3C,IAAI9nD,GAAM/8C,EAAMr9B,KAAKw6B,MAAMx6B,KAAKs3B,UAAYvwB,EAAMs2B,IAC9Cg9C,EAAQh9C,EAAMr9B,KAAKw6B,MAAMx6B,KAAKs3B,UAAYvwB,EAAMs2B,IAChDi9C,EAAOj9C,EAAMr9B,KAAKw6B,MAAMx6B,KAAKs3B,UAAYvwB,EAAMs2B,GAEnD,OAAOrV,GAAOsrB,MAAM6uF,WAAWxhI,EAAOy5E,EAAKC,EAAOC,IActDqoD,OAAQ,SAAU5qH,GAEd,MAAIA,GAAQ,UAIJpX,MAAOoX,IAAU,GACjBqiE,IAAKriE,GAAS,GAAK,IACnBsiE,MAAOtiE,GAAS,EAAI,IACpBuiE,KAAc,IAARviE,EACNlU,EAAGkU,IAAU,GACbsC,EAAGtC,GAAS,GAAK,IACjBuC,EAAGvC,GAAS,EAAI,IAChBjU,EAAW,IAARiU,IAMHpX,MAAO,IACPy5E,IAAKriE,GAAS,GAAK,IACnBsiE,MAAOtiE,GAAS,EAAI,IACpBuiE,KAAc,IAARviE,EACNlU,EAAG,IACHwW,EAAGtC,GAAS,GAAK,IACjBuC,EAAGvC,GAAS,EAAI,IAChBjU,EAAW,IAARiU,IAcf4rH,UAAW,SAAU5rH,GAEjB,GAAqB,gBAAVA,GAEP,MAAO,QAAUA,EAAMsC,EAAE4M,WAAa,IAAMlP,EAAMuC,EAAE2M,WAAa,IAAMlP,EAAMjU,EAAEmjB,WAAa,KAAOlP,EAAMlU,EAAI,KAAKojB,WAAa,GAI/H,IAAI3X,GAAM0Y,EAAOsrB,MAAMqvF,OAAO5qH,EAC9B,OAAO,QAAUzI,EAAI+K,EAAE4M,WAAa,IAAM3X,EAAIgL,EAAE2M,WAAa,IAAM3X,EAAIxL,EAAEmjB,WAAa,KAAO3X,EAAIzL,EAAI,KAAKojB,WAAa,KAa/H28G,SAAU,SAAU7rH,GAChB,MAAOA,KAAU,IAWrB8rH,cAAe,SAAU9rH,GACrB,OAAQA,IAAU,IAAM,KAW5B+rH,OAAQ,SAAU/rH,GACd,MAAOA,IAAS,GAAK,KAWzBgsH,SAAU,SAAUhsH,GAChB,MAAOA,IAAS,EAAI,KAWxBisH,QAAS,SAAUjsH,GACf,MAAe,KAARA,GAYXksH,YAAa,SAAUpgI,GACnB,MAAOA,IAYX65E,aAAc,SAAU75E,EAAGC,GACvB,MAAQA,GAAID,EAAKC,EAAID,GAYzB45E,YAAa,SAAU55E,EAAGC,GACtB,MAAQA,GAAID,EAAKA,EAAIC,GAezBw5E,cAAe,SAAUz5E,EAAGC,GACxB,MAAQD,GAAIC,EAAK,KAYrBogI,aAAc,SAAUrgI,EAAGC,GACvB,OAAQD,EAAIC,GAAK,GAYrBu5E,SAAU,SAAUx5E,EAAGC,GACnB,MAAO9D,MAAKq9B,IAAI,IAAKx5B,EAAIC,IAY7BqgI,cAAe,SAAUtgI,EAAGC,GACxB,MAAO9D,MAAK+G,IAAI,EAAGlD,EAAIC,EAAI,MAc/Bi6E,gBAAiB,SAAUl6E,EAAGC,GAC1B,MAAO9D,MAAKq7B,IAAIx3B,EAAIC,IAYxBsgI,cAAe,SAAUvgI,EAAGC,GACxB,MAAO,KAAM9D,KAAKq7B,IAAI,IAAMx3B,EAAIC,IAcpCy5E,YAAa,SAAU15E,EAAGC,GACtB,MAAO,OAAS,IAAMD,IAAM,IAAMC,IAAO,IAa7Ck6E,eAAgB,SAAUn6E,EAAGC,GACzB,MAAOD,GAAIC,EAAI,EAAID,EAAIC,EAAI,KAc/B05E,aAAc,SAAU35E,EAAGC,GACvB,MAAW,KAAJA,EAAW,EAAID,EAAIC,EAAI,IAAQ,IAAM,GAAK,IAAMD,IAAM,IAAMC,GAAK,KAsB5Eg6E,eAAgB,SAAUj6E,EAAGC,GACzB,MAAW,KAAJA,EAAW,IAAMD,GAAK,GAAK,KAAQC,EAAI,KAAO,IAAO,GAAK,MAAQD,GAAK,GAAK,MAAQ,IAAMC,GAAK,KAuB1G+5E,eAAgB,SAAUh6E,EAAGC,GACzB,MAAOkkB,GAAOsrB,MAAMkqC,aAAa15E,EAAGD,IAaxC85E,gBAAiB,SAAU95E,EAAGC,GAC1B,MAAa,OAANA,EAAYA,EAAI9D,KAAKq9B,IAAI,KAAOx5B,GAAK,IAAM,IAAMC,KAa5D85E,eAAgB,SAAU/5E,EAAGC,GACzB,MAAa,KAANA,EAAUA,EAAI9D,KAAK+G,IAAI,EAAI,KAAQ,IAAMlD,GAAM,GAAKC,IAY/DugI,iBAAkB,SAAUxgI,EAAGC,GAC3B,MAAOkkB,GAAOsrB,MAAM+pC,SAASx5E,EAAGC,IAYpCwgI,gBAAiB,SAAUzgI,EAAGC,GAC1B,MAAOkkB,GAAOsrB,MAAM6wF,cAActgI,EAAGC,IAczCygI,iBAAkB,SAAU1gI,EAAGC,GAC3B,MAAW,KAAJA,EAAUkkB,EAAOsrB,MAAMgxF,gBAAgBzgI,EAAG,EAAIC,GAAKkkB,EAAOsrB,MAAM+wF,iBAAiBxgI,EAAI,GAAKC,EAAI,OAezG0gI,gBAAiB,SAAU3gI,EAAGC,GAC1B,MAAW,KAAJA,EAAUkkB,EAAOsrB,MAAMsqC,eAAe/5E,EAAG,EAAIC,GAAKkkB,EAAOsrB,MAAMqqC,gBAAgB95E,EAAI,GAAKC,EAAI,OAavG2gI,cAAe,SAAU5gI,EAAGC,GACxB,MAAW,KAAJA,EAAUkkB,EAAOsrB,MAAMmqC,YAAY55E,EAAG,EAAIC,GAAKkkB,EAAOsrB,MAAMoqC,aAAa75E,EAAI,GAAKC,EAAI,OAejG4gI,aAAc,SAAU7gI,EAAGC,GACvB,MAAOkkB,GAAOsrB,MAAMkxF,gBAAgB3gI,EAAGC,GAAK,IAAM,EAAI,KAY1D6gI,aAAc,SAAU9gI,EAAGC,GACvB,MAAa,OAANA,EAAYA,EAAI9D,KAAKq9B,IAAI,IAAMx5B,EAAIA,GAAK,IAAMC,KAYzD8gI,UAAW,SAAU/gI,EAAGC,GACpB,MAAOkkB,GAAOsrB,MAAMqxF,aAAa7gI,EAAGD,IAYxCghI,aAAc,SAAUhhI,EAAGC,GACvB,MAAO9D,MAAKq9B,IAAIx5B,EAAGC,GAAK9D,KAAK+G,IAAIlD,EAAGC,GAAK,MAyBjDkkB,EAAO8rB,QAAU,SAAUz0C,EAAMoyC,GAE7BA,EAASA,MAKTtyC,KAAKE,KAAOA,EAKZF,KAAKsyC,OAASA,EAKdtyC,KAAK2lI,OAAS,KAKd3lI,KAAKkjC,GAAK,KAKVljC,KAAK4lI,MAAQ,KAKb5lI,KAAKs8H,MAAQ,KAKbt8H,KAAK6lI,SAAW,KAKhB7lI,KAAK8lI,OAAS,KAEd9lI,KAAKuyC,eAQT1pB,EAAO8rB,QAAQC,OAAS,EAMxB/rB,EAAO8rB,QAAQk3B,KAAO,EAMtBhjD,EAAO8rB,QAAQonF,MAAQ,EAMvBlzG,EAAO8rB,QAAQsnF,MAAQ,EAMvBpzG,EAAO8rB,QAAQoxF,SAAW,EAM1Bl9G,EAAO8rB,QAAQqxF,SAAW,EAE1Bn9G,EAAO8rB,QAAQ9xC,WAOX0vC,YAAa,WAEHvyC,KAAKsyC,OAAOhZ,eAAe,WAAat5B,KAAKsyC,OAAe,UAAM,IAASzpB,EAAO8rB,QAAQrb,eAAe,YAG3Gt5B,KAAK2lI,OAAS,GAAI98G,GAAO8rB,QAAQw+B,OAAOnzE,KAAKE,OAG7CF,KAAKsyC,OAAOhZ,eAAe,UAAYt5B,KAAKsyC,OAAc,SAAM,GAAQzpB,EAAO8rB,QAAQrb,eAAe,WAEtGt5B,KAAK4lI,MAAQ,GAAI/8G,GAAO8rB,QAAQqnF,MAAMh8H,KAAKE,OAG3CF,KAAKsyC,OAAOhZ,eAAe,OAASt5B,KAAKsyC,OAAW,MAAM,GAAQzpB,EAAO8rB,QAAQrb,eAAe,QAEhGt5B,KAAKkjC,GAAK,GAAIra,GAAO8rB,QAAQsxF,GAAGjmI,KAAKE,KAAMF,KAAKsyC,SAGhDtyC,KAAKsyC,OAAOhZ,eAAe,UAAYt5B,KAAKsyC,OAAc,SAAM,GAAQzpB,EAAO8rB,QAAQrb,eAAe,WAEtGt5B,KAAKs8H,MAAQ,GAAIzzG,GAAO8rB,QAAQsnF,MAAMj8H,KAAKE,KAAMF,KAAKsyC,SAGtDtyC,KAAKsyC,OAAOhZ,eAAe,WAAat5B,KAAKsyC,OAAe,UAAM,GAAQzpB,EAAO8rB,QAAQrb,eAAe,YAExGt5B,KAAK8lI,OAAS,GAAIj9G,GAAO8rB,QAAQuxF,OAAOlmI,KAAKE,KAAMF,KAAKsyC,UAyBhE6zF,YAAa,SAAUC,GAEfA,IAAWv9G,EAAO8rB,QAAQC,OAE1B50C,KAAK2lI,OAAS,GAAI98G,GAAO8rB,QAAQw+B,OAAOnzE,KAAKE,MAExCkmI,IAAWv9G,EAAO8rB,QAAQk3B,KAEf,OAAZ7rE,KAAKkjC,GAELljC,KAAKkjC,GAAK,GAAIra,GAAO8rB,QAAQsxF,GAAGjmI,KAAKE,KAAMF,KAAKsyC,QAIhDtyC,KAAKkjC,GAAG4F,QAGPs9F,IAAWv9G,EAAO8rB,QAAQonF,MAE/B/7H,KAAK4lI,MAAQ,GAAI/8G,GAAO8rB,QAAQqnF,MAAMh8H,KAAKE,MAEtCkmI,IAAWv9G,EAAO8rB,QAAQsnF,MAEZ,OAAfj8H,KAAKs8H,MAELt8H,KAAKs8H,MAAQ,GAAIzzG,GAAO8rB,QAAQunF,MAAMl8H,KAAKE,KAAMF,KAAKsyC,QAItDtyC,KAAKs8H,MAAMxzF,QAGVs9F,IAAWv9G,EAAO8rB,QAAQqxF,WAEX,OAAhBhmI,KAAK8lI,OAEL9lI,KAAK8lI,OAAS,GAAIj9G,GAAO8rB,QAAQuxF,OAAOlmI,KAAKE,KAAMF,KAAKsyC,QAIxDtyC,KAAK8lI,OAAOh9F,UA0BxBpuB,OAAQ,SAAU4gC,EAAQ8qF,EAAQx5F,GAEfljC,SAAX08H,IAAwBA,EAASv9G,EAAO8rB,QAAQC,QACtClrC,SAAVkjC,IAAuBA,GAAQ,GAE/Bw5F,IAAWv9G,EAAO8rB,QAAQC,OAE1B50C,KAAK2lI,OAAOjrH,OAAO4gC,GAEd8qF,IAAWv9G,EAAO8rB,QAAQk3B,MAAQ7rE,KAAKkjC,GAE5CljC,KAAKkjC,GAAGxoB,OAAO4gC,EAAQ1O,GAElBw5F,IAAWv9G,EAAO8rB,QAAQonF,OAAS/7H,KAAK4lI,MAE7C5lI,KAAK4lI,MAAMS,WAAW/qF,GAEjB8qF,IAAWv9G,EAAO8rB,QAAQsnF,OAASj8H,KAAKs8H,MAE7Ct8H,KAAKs8H,MAAM5hH,OAAO4gC,GAEb8qF,IAAWv9G,EAAO8rB,QAAQqxF,UAAYhmI,KAAK8lI,OAEhD9lI,KAAK8lI,OAAOprH,OAAO4gC,GAInBxoC,QAAQwkB,KAAKgkB,EAAOvmC,IAAM,6EAWlC5O,UAAW,WAIHnG,KAAKkjC,IAELljC,KAAKkjC,GAAG/8B,YAGRnG,KAAKs8H,OAELt8H,KAAKs8H,MAAMn2H,YAGXnG,KAAK8lI,QAEL9lI,KAAK8lI,OAAO3/H,aAWpByhC,OAAQ,WAIA5nC,KAAKkjC,IAELljC,KAAKkjC,GAAG0E,SAGR5nC,KAAKs8H,OAELt8H,KAAKs8H,MAAM10F,SAGX5nC,KAAK8lI,QAEL9lI,KAAK8lI,OAAOl+F,UAWpBY,iBAAkB,WAEVxoC,KAAK2lI,QAEL3lI,KAAK2lI,OAAOn9F,mBAGZxoC,KAAK4lI,OAEL5lI,KAAK4lI,MAAMp9F,mBAGXxoC,KAAKkjC,IAELljC,KAAKkjC,GAAGsF,mBAGRxoC,KAAKs8H,OAELt8H,KAAKs8H,MAAM9zF,mBAGXxoC,KAAK8lI,QAEL9lI,KAAK8lI,OAAOt9F,oBAWpBptB,MAAO,WAECpb,KAAKkjC,IAELljC,KAAKkjC,GAAG9nB,QAGRpb,KAAKs8H,OAELt8H,KAAKs8H,MAAMlhH,QAGXpb,KAAK8lI,QAEL9lI,KAAK8lI,OAAO1qH,SAWpB0tB,MAAO,WAEC9oC,KAAKkjC,IAELljC,KAAKkjC,GAAG4F,QAGR9oC,KAAKs8H,OAELt8H,KAAKs8H,MAAMxzF,QAGX9oC,KAAK8lI,QAEL9lI,KAAK8lI,OAAOh9F,SAUpB/lC,QAAS,WAED/C,KAAKkjC,IAELljC,KAAKkjC,GAAGngC,UAGR/C,KAAKs8H,OAELt8H,KAAKs8H,MAAMv5H,UAGX/C,KAAK8lI,QAEL9lI,KAAK8lI,OAAO/iI,UAGhB/C,KAAK2lI,OAAS,KACd3lI,KAAK4lI,MAAQ,KACb5lI,KAAKkjC,GAAK,KACVljC,KAAKs8H,MAAQ,KACbt8H,KAAK8lI,OAAS,OAMtBj9G,EAAO8rB,QAAQ9xC,UAAUC,YAAc+lB,EAAO8rB,QAe9C9rB,EAAOm2B,UAAY,SAAU9+C,GAKzBF,KAAKE,KAAOA,EAKZF,KAAKsmI,YAMLtmI,KAAKumI,GAAK,GAId19G,EAAOm2B,UAAUn8C,WAQbi7B,IAAK,SAAUm1C,GAIX,MAFAjzE,MAAKsmI,SAASrzD,EAAQv5C,MAAQu5C,EAEvBA,GASXhiE,OAAQ,SAAUgiE,SAEPjzE,MAAKsmI,SAASrzD,EAAQv5C,OASjCkO,OAAQ,WAEJ,IAAK,GAAI7yB,KAAO/U,MAAKsmI,SAEbtmI,KAAKsmI,SAASvxH,GAAKjJ,QAEnB9L,KAAKsmI,SAASvxH,GAAK6yB,WAQnC/e,EAAOm2B,UAAUn8C,UAAUC,YAAc+lB,EAAOm2B,UAuChDn2B,EAAO4jD,MAAQ,SAAUvsE,EAAM6U,EAAKy/D,GAyLhC,GAvLY9qE,SAARqL,IAAqBA,EAAM,MACnBrL,SAAR8qE,IAAqBA,EAAM,MAK/Bx0E,KAAKE,KAAOA,EAMZF,KAAK+U,IAAMA,EAMX/U,KAAK2G,MAAQ,EAMb3G,KAAK4G,OAAS,EAMd5G,KAAKoV,KAAOyT,EAAOyL,MAKnBt0B,KAAK04E,sBAAuB,EAM5B14E,KAAKo8G,aAAc,EAKnBp8G,KAAK2sH,OAAS,GAAI9jG,GAAOuc,OAKzBplC,KAAK0sE,eAAiB,GAAI7jD,GAAOuc,OAKjCplC,KAAKkwG,WAAa,GAAIrnF,GAAOuc,OAK7BplC,KAAKwmI,SAAW,GAAI39G,GAAOuc,OAK3BplC,KAAKymI,QAAU,GAAI59G,GAAOuc,OAO1BplC,KAAK0mI,UAAY,GAAI79G,GAAOuc,OAM5BplC,KAAKsoH,QAAU,KAMftoH,KAAKokG,WAAa,KAKlBpkG,KAAKu0E,MAAQ,KAKbv0E,KAAK2mI,YAAc,KAKnB3mI,KAAK4mI,aAAc,EASnB5mI,KAAK6mI,WAAa,GAMlB7mI,KAAK8mI,MAAQ,EAMb9mI,KAAK+mI,cAAgB,IAMrB/mI,KAAKgnI,SAAW,KAOhBhnI,KAAK+uH,YAAa,EAOlB/uH,KAAKitH,QAAS,EAOdjtH,KAAKw9C,aAAc,EAOnBx9C,KAAKu9C,SAAU,EAOfv9C,KAAKinI,UAAW,EAOhBjnI,KAAKknI,WAAY,EAMjBlnI,KAAKmnI,aAAe,KAMpBnnI,KAAKonI,cAAgB,KAEjBryH,GAAO/U,KAAKE,KAAKgpC,MAAM41E,cAAc/pG,GACzC,CACI,GAAIsyH,GAASrnI,KAAKE,KAAKgpC,MAAM42E,SAAS/qG,EAElCsyH,GAAOjqB,OAEPp9G,KAAKsnI,oBAAoBD,EAAOr2H,MAIhChR,KAAKu0E,MAAQ8yD,EAAOr2H,KAGxBhR,KAAK2G,MAAQ3G,KAAKu0E,MAAMgzD,WACxBvnI,KAAK4G,OAAS5G,KAAKu0E,MAAMizD,gBAEpBhzD,IAELx0E,KAAKynI,mBAAmBjzD,GAAK,EAO7Bx0E,MAAKu0E,QAAUC,GAEfx0E,KAAK+L,YAAc,GAAI9L,MAAKupB,YAAYxpB,KAAKu0E,OAC7Cv0E,KAAK+L,YAAY8d,YAAY7pB,KAAK2G,MAAO3G,KAAK4G,UAI9C5G,KAAK+L,YAAc,GAAI9L,MAAKupB,YAAYvpB,KAAK8O,aAAwB,UAAEhD,YAAY6C,QACnF5O,KAAK+L,YAAY8d,YAAY7pB,KAAK2G,MAAO3G,KAAK4G,SAOlD5G,KAAK8H,QAAU,GAAI7H,MAAKuL,QAAQxL,KAAK+L,aAMrC/L,KAAKu4E,aAAe,GAAI1vD,GAAO4vD,MAAM,EAAG,EAAG,EAAGz4E,KAAK2G,MAAO3G,KAAK4G,OAAQ,SAEvE5G,KAAK8H,QAAQ8iB,SAAS5qB,KAAKu4E,cAE3Bv4E,KAAK8H,QAAQwE,OAAQ,EAET,OAARyI,GAAgB/U,KAAKu0E,QAErBv0E,KAAK8H,QAAQwE,MAAQtM,KAAKu0E,MAAMozC,SAWpC3nH,KAAK0nI,SAAW,KAEZ7+G,EAAO2nD,aAEPxwE,KAAK0nI,SAAW,GAAI7+G,GAAO2nD,WAAWxwE,KAAKE,KAAM,GAAIF,KAAK2G,MAAO3G,KAAK4G,UAGrE5G,KAAKE,KAAKuzC,OAAOqM,WAAa9/C,KAAKE,KAAKuzC,OAAOyN,KAAOlhD,KAAKE,KAAKuzC,OAAO8U,UAAa11C,OAAqB,cAAKA,OAAqB,aAAE48G,iBAEtIzvH,KAAK0vH,eAID2X,IAEAA,EAAOhgF,QAAS,IAM5Bx+B,EAAO4jD,MAAM5pE,WAUT8kI,qBAAsB,SAAUpzD,EAAOqzD,GAcnC,MAZIrzD,IAASqzD,IAET5nI,KAAKu0E,MAAQA,EACbv0E,KAAK2mI,YAAciB,EAEnB5nI,KAAK4mI,aAAc,EACnB5mI,KAAK+L,YAAY6C,OAAS5O,KAAKu0E,MAC/Bv0E,KAAK+X,cAAc,KAAM/X,KAAKu0E,MAAMgzD,WAAYvnI,KAAKu0E,MAAMizD,aAE3DxnI,KAAKwmI,SAASt+F,SAASloC,OAGpBA,MAuBX6nI,iBAAkB,SAAUC,EAAcnhI,EAAOC,GAM7C,GAJqB8C,SAAjBo+H,IAA8BA,GAAe,GACnCp+H,SAAV/C,IAAuBA,EAAQ,MACpB+C,SAAX9C,IAAwBA,EAAS,OAEhC5G,KAAKE,KAAKuzC,OAAO6nD,aAGlB,MADAt7F,MAAKymI,QAAQv+F,SAASloC,KAAM,oBACrB,CAGc,QAArBA,KAAK2mI,cAED3mI,KAAK2mI,YAAoB,OAEzB3mI,KAAK2mI,YAAYp5F,QAAS,EAI1BvtC,KAAK2mI,YAAY17H,QAIzBjL,KAAK+nI,qBAEL/nI,KAAKu0E,MAAQlkE,SAASoB,cAAc,SACpCzR,KAAKu0E,MAAMyzD,aAAa,WAAY,YAEtB,OAAVrhI,IAEA3G,KAAKu0E,MAAM5tE,MAAQA,GAGR,OAAXC,IAEA5G,KAAKu0E,MAAM3tE,OAASA,GAKxB5G,KAAKokG,WAAavxF,OAAO2rF,WAAWx+F,KAAKioI,oBAAoB7xG,KAAKp2B,MAAOA,KAAKsoH,QAE9E,KACIt/F,UAAUsyE,cACJjpB,MAASy1D,EAAcvzD,OAAS,GAClCv0E,KAAKkoI,oBAAoB9xG,KAAKp2B,MAC9BA,KAAKmoI,kBAAkB/xG,KAAKp2B,OAGpC,MAAOi/F,GAEHj/F,KAAKmoI,kBAAkBlpC,GAG3B,MAAOj/F,OAQXioI,oBAAqB,WAEjBxjC,aAAazkG,KAAKokG,YAElBpkG,KAAK0mI,UAAUx+F,SAASloC,OAQ5BmoI,kBAAmB,SAAUj1F,GAEzBuxD,aAAazkG,KAAKokG,YAElBpkG,KAAKymI,QAAQv+F,SAASloC,KAAMkzC,IAQhCg1F,oBAAqB,SAAUN,GAE3BnjC,aAAazkG,KAAKokG,YAGlBpkG,KAAK2mI,YAAciB,EAGal+H,SAA5B1J,KAAKu0E,MAAM6zD,aAEXpoI,KAAKu0E,MAAM6zD,aAAeR,EAI1B5nI,KAAKu0E,MAAM7jE,IAAOmC,OAAO2sF,KAAO3sF,OAAO2sF,IAAI6oC,gBAAgBT,IAAYA,CAG3E,IAAIvM,GAAOr7H,IAEXA,MAAKu0E,MAAM+zD,aAAe,WAItB,QAASC,KAEL,GAAIzB,EAAQ,EAER,GAAIzL,EAAK9mD,MAAMgzD,WAAa,EAC5B,CAEI,GAAI5gI,GAAQ00H,EAAK9mD,MAAMgzD,WACnB3gI,EAASy0H,EAAK9mD,MAAMizD,WAEpBrmE,OAAMk6D,EAAK9mD,MAAMizD,eAEjB5gI,EAASD,GAAS,EAAE,IAGxB00H,EAAK9mD,MAAMlK,OAEXgxD,EAAKuL,aAAc,EACnBvL,EAAKtvH,YAAY6C,OAASysH,EAAK9mD,MAC/B8mD,EAAKtjH,cAAc,KAAMpR,EAAOC,GAChCy0H,EAAKmL,SAASt+F,SAASmzF,OAIvBxoH,QAAO2rF,WAAW+pC,EAAa,SAKnCz1H,SAAQwkB,KAAK,mDAGjBwvG,KAlCJ,GAAIA,GAAQ,EAqCZyB,OAcRjB,oBAAqB,SAAU70B,GAE3B,GAAIvjE,GAAQlvC,IASZ,OAPAA,MAAKu0E,MAAQlkE,SAASoB,cAAc,SACpCzR,KAAKu0E,MAAMizC,UAAW,EACtBxnH,KAAKu0E,MAAMyzD,aAAa,WAAY,YACpChoI,KAAKu0E,MAAMnhC,iBAAiB,aAAc,SAAUF,GAAShE,EAAMn3B,cAAcm7B,KAAW,GAC5FlzC,KAAKu0E,MAAM7jE,IAAMmC,OAAO2sF,IAAI6oC,gBAAgB51B,GAC5CzyG,KAAKu0E,MAAMozC,SAAU,EAEd3nH,MAYXynI,mBAAoB,SAAUjzD,EAAKizC,GA8B/B,MA5BiB/9G,UAAb+9G,IAA0BA,GAAW,GAGrCznH,KAAK8H,UAEL9H,KAAK8H,QAAQwE,OAAQ,GAGzBtM,KAAKu0E,MAAQlkE,SAASoB,cAAc,SACpCzR,KAAKu0E,MAAMizC,UAAW,EAElBC,GAEAznH,KAAKu0E,MAAMyzD,aAAa,WAAY,YAGxChoI,KAAKu0E,MAAM7jE,IAAM8jE,EAEjBx0E,KAAKu0E,MAAMozC,SAAU,EAErB3nH,KAAKu0E,MAAMnrC,OAEXppC,KAAK8mI,MAAQ9mI,KAAK6mI,WAElB7mI,KAAKgnI,SAAWn0H,OAAO2rF,WAAWx+F,KAAKwoI,mBAAmBpyG,KAAKp2B,MAAOA,KAAK+mI,eAE3E/mI,KAAK+U,IAAMy/D,EAEJx0E,MAaX+X,cAAe,SAAUm7B,EAAOvsC,EAAOC,GAEnC,GAAI6hI,IAAS,GAEC/+H,SAAV/C,GAAiC,OAAVA,KAAkBA,EAAQ3G,KAAKu0E,MAAMgzD,WAAYkB,GAAS,IACtE/+H,SAAX9C,GAAmC,OAAXA,KAAmBA,EAAS5G,KAAKu0E,MAAMizD,aAEnExnI,KAAK2G,MAAQA,EACb3G,KAAK4G,OAASA,EAEV5G,KAAK+L,YAAY6C,SAAW5O,KAAKu0E,QAEjCv0E,KAAK+L,YAAY6C,OAAS5O,KAAKu0E,OAGnCv0E,KAAK+L,YAAY8d,YAAYljB,EAAOC,GAEpC5G,KAAK8H,QAAQoE,MAAMnE,OAAOpB,EAAOC,GAEjC5G,KAAK8H,QAAQnB,MAAQA,EACrB3G,KAAK8H,QAAQlB,OAASA,EAEtB5G,KAAK8H,QAAQwE,OAAQ,EAEjBtM,KAAK0nI,UAEL1nI,KAAK0nI,SAAS3/H,OAAOpB,EAAOC,GAG5B6hI,GAAuB,OAAbzoI,KAAK+U,MAEf/U,KAAK0sE,eAAexkC,SAASloC,KAAM2G,EAAOC,GAEtC5G,KAAKknI,YAELlnI,KAAKu0E,MAAMlK,OACXrqE,KAAK2sH,OAAOzkF,SAASloC,KAAMA,KAAKuqE,KAAMvqE,KAAK0oI,iBAYvDj/G,SAAU,WAENzpB,KAAKkwG,WAAWhoE,SAASloC,OAY7BqqE,KAAM,SAAUE,EAAMm+D,GA8DlB,MA5Dah/H,UAAT6gE,IAAsBA,GAAO,GACZ7gE,SAAjBg/H,IAA8BA,EAAe,GAE7C1oI,KAAKE,KAAKmpC,MAAMwjF,SAEhB7sH,KAAKE,KAAKmpC,MAAMwjF,OAAO/uF,IAAI99B,KAAKghD,QAAShhD,MACzCA,KAAKE,KAAKmpC,MAAMwlF,SAAS/wF,IAAI99B,KAAKmhD,UAAWnhD,MAEzCA,KAAKE,KAAKmpC,MAAM8kF,MAEhBnuH,KAAKghD,WAIbhhD,KAAKE,KAAKsrC,QAAQ1N,IAAI99B,KAAK2oI,SAAU3oI,MACrCA,KAAKE,KAAKwrC,SAAS5N,IAAI99B,KAAK4oI,UAAW5oI,MAEvCA,KAAKmnI,aAAennI,KAAKypB,SAAS2M,KAAKp2B,MAEvCA,KAAKu0E,MAAMnhC,iBAAiB,QAASpzC,KAAKmnI,cAAc,GACxDnnI,KAAKu0E,MAAMnhC,iBAAiB,sBAAuBpzC,KAAKmnI,cAAc,GAElE58D,EAEAvqE,KAAKu0E,MAAMhK,KAAO,OAIlBvqE,KAAKu0E,MAAMhK,KAAO,GAGtBvqE,KAAKu0E,MAAMm0D,aAAeA,EAEtB1oI,KAAKo8G,YAELp8G,KAAKinI,UAAW,GAIhBjnI,KAAKinI,UAAW,EAEC,OAAbjnI,KAAK+U,MAEyB,IAA1B/U,KAAKu0E,MAAMgqB,YAEXv+F,KAAK8mI,MAAQ9mI,KAAK6mI,WAClB7mI,KAAKgnI,SAAWn0H,OAAO2rF,WAAWx+F,KAAKwoI,mBAAmBpyG,KAAKp2B,MAAOA,KAAK+mI,iBAI3E/mI,KAAKonI,cAAgBpnI,KAAK6oI,YAAYzyG,KAAKp2B,MAC3CA,KAAKu0E,MAAMnhC,iBAAiB,UAAWpzC,KAAKonI,eAAe,KAInEpnI,KAAKu0E,MAAMlK,OAEXrqE,KAAK2sH,OAAOzkF,SAASloC,KAAMuqE,EAAMm+D,IAG9B1oI,MAUX6oI,YAAa,WAET7oI,KAAKu0E,MAAMjgC,oBAAoB,UAAWt0C,KAAKonI,eAAe,GAE9DpnI,KAAK+X,iBAkBT9M,KAAM,WA+DF,MA7DIjL,MAAKE,KAAKmpC,MAAMwjF,SAEhB7sH,KAAKE,KAAKmpC,MAAMwjF,OAAO57G,OAAOjR,KAAKghD,QAAShhD,MAC5CA,KAAKE,KAAKmpC,MAAMwlF,SAAS59G,OAAOjR,KAAKmhD,UAAWnhD,OAGpDA,KAAKE,KAAKsrC,QAAQv6B,OAAOjR,KAAK2oI,SAAU3oI,MACxCA,KAAKE,KAAKwrC,SAASz6B,OAAOjR,KAAK4oI,UAAW5oI,MAItCA,KAAK4mI,aAED5mI,KAAKu0E,MAAM6zD,cAEXpoI,KAAKu0E,MAAM6zD,aAAan9H,OACxBjL,KAAKu0E,MAAM7jE,IAAM,OAIjB1Q,KAAKu0E,MAAM7jE,IAAM,GAEb1Q,KAAK2mI,YAAoB,OAEzB3mI,KAAK2mI,YAAYp5F,QAAS,EAItBvtC,KAAK2mI,YAAYmC,UAEjB9oI,KAAK2mI,YAAYmC,YAAY9xG,QAAQ,SAAU+xG,GAC3CA,EAAM99H,SAKVjL,KAAK2mI,YAAY17H,QAM7BjL,KAAK2mI,YAAc,KACnB3mI,KAAK4mI,aAAc,IAInB5mI,KAAKu0E,MAAMjgC,oBAAoB,QAASt0C,KAAKmnI,cAAc,GAC3DnnI,KAAKu0E,MAAMjgC,oBAAoB,sBAAuBt0C,KAAKmnI,cAAc,GACzEnnI,KAAKu0E,MAAMjgC,oBAAoB,UAAWt0C,KAAKonI,eAAe,GAE1DpnI,KAAKo8G,YAELp8G,KAAKinI,UAAW,EAIhBjnI,KAAKu0E,MAAM9oC,SAIZzrC,MAYX89B,IAAK,SAAUwd,GAEX,GAAI36C,MAAM2R,QAAQgpC,GAEd,IAAK,GAAIr4C,GAAI,EAAGA,EAAIq4C,EAAOp4C,OAAQD,IAE3Bq4C,EAAOr4C,GAAgB,aAEvBq4C,EAAOr4C,GAAGi4C,YAAYl7C,UAM9Bs7C,GAAOJ,YAAYl7C,KAGvB,OAAOA,OAgBXixC,WAAY,SAAU5rC,EAAGC,EAAG4rC,EAASC,EAAS1tB,EAAQE,GAElDF,EAASA,GAAU,EACnBE,EAASA,GAAU,CAEnB,IAAIwG,GAAQnqB,KAAKE,KAAK49B,IAAI3T,MAAM9kB,EAAGC,EAAGtF,KAKtC,OAHAmqB,GAAMjiB,OAAO1E,IAAI0tC,EAASC,GAC1BhnB,EAAM9oB,MAAMmC,IAAIigB,EAAQE,GAEjBwG,GAWXrjB,OAAQ,YAEC9G,KAAK04E,sBAAwB14E,KAAKgpI,SAEnChpI,KAAK+L,YAAYkI,SAWzB+sC,QAAS,WAEDhhD,KAAKitH,SAKTjtH,KAAKitH,QAAS,EAEdjtH,KAAKu0E,MAAM25C,OAAQ,IAUvB/sE,UAAW,WAEFnhD,KAAKitH,SAAUjtH,KAAK+uH,aAKzB/uH,KAAKitH,QAAS,EAEdjtH,KAAKu0E,MAAM25C,OAAQ,IAUvBya,SAAU,WAEF3oI,KAAKu9C,SAAWv9C,KAAKo8G,cAKzBp8G,KAAKu9C,SAAU,EAEfv9C,KAAKu0E,MAAM9oC,UAUfm9F,UAAW,YAEF5oI,KAAKu9C,SAAWv9C,KAAKw9C,aAAex9C,KAAKo8G,cAK9Cp8G,KAAKu9C,SAAU,EAEVv9C,KAAKu0E,MAAM00D,OAEZjpI,KAAKu0E,MAAMlK,SA0BnB6+D,aAAc,SAAUx4H,EAAK+2G,GAwBzB,MAtBiB/9G,UAAb+9G,IAA0BA,GAAW,GAGzCznH,KAAK8H,QAAQwE,OAAQ,EAErBtM,KAAKu0E,MAAM9oC,QAEXzrC,KAAK8mI,MAAQ9mI,KAAK6mI,WAElB7mI,KAAKgnI,SAAWn0H,OAAO2rF,WAAWx+F,KAAKwoI,mBAAmBpyG,KAAKp2B,MAAOA,KAAK+mI,eAE3E/mI,KAAKu0E,MAAM7jE,IAAMA,EAEjB1Q,KAAKu0E,MAAMnrC,OAEXppC,KAAKknI,UAAYzf,EAEZA,IAEDznH,KAAK8pC,QAAS,GAGX9pC,MAUXwoI,mBAAoB,WAGc,IAA1BxoI,KAAKu0E,MAAMgqB,WAGXv+F,KAAK+X,iBAIL/X,KAAK8mI,QAED9mI,KAAK8mI,MAAQ,EAEb9mI,KAAKgnI,SAAWn0H,OAAO2rF,WAAWx+F,KAAKwoI,mBAAmBpyG,KAAKp2B,MAAOA,KAAK+mI,eAI3Ej0H,QAAQwkB,KAAK,0DAA2Dt3B,KAAK4mI,eAYzFlX,aAAc,WAEV1vH,KAAKE,KAAKipC,MAAMma,MAAMiP,qBAAqBvyD,KAAK2vH,OAAQ3vH,MACxDA,KAAKo8G,aAAc,GAWvBuT,OAAQ,WAQJ,GANA3vH,KAAKo8G,aAAc,EAEnBp8G,KAAKu0E,MAAMlK,OAEXrqE,KAAK2sH,OAAOzkF,SAASloC,KAAMA,KAAKuqE,KAAMvqE,KAAK0oI,cAEvC1oI,KAAK+U,IACT,CACI,GAAIsyH,GAASrnI,KAAKE,KAAKgpC,MAAM42E,SAAS9/G,KAAK+U,IAEvCsyH,KAAWA,EAAOjqB,SAElBiqB,EAAOhgF,QAAS,GAIxB,OAAO,GAiBX8hF,KAAM,SAAU/tH,EAAO5Z,EAAO0C,GAM1B,MAJcwF,UAAV0R,IAAuBA,GAAQ,GACrB1R,SAAVlI,IAAuBA,EAAQ,GACjBkI,SAAdxF,IAA2BA,EAAY,MAErB,OAAlBlE,KAAK0nI,aAEL50H,SAAQwkB,KAAK,mEAIblc,GAEApb,KAAK0nI,SAAS/uD,MAGlB34E,KAAK0nI,SAAS/tG,KAAK35B,KAAKu0E,MAAO,EAAG,EAAGv0E,KAAK2G,MAAO3G,KAAK4G,OAAQ,EAAG,EAAG5G,KAAK2G,MAAO3G,KAAK4G,OAAQ,EAAG,EAAG,EAAG,EAAG,EAAGpF,EAAO0C,GAE5GlE,KAAK0nI,WAUhBK,mBAAoB,WAEhB,GAAK/nI,KAAKu0E,MAAV,CAUA,IALIv0E,KAAKu0E,MAAMgvB,YAEXvjG,KAAKu0E,MAAMgvB,WAAW36F,YAAY5I,KAAKu0E,OAGpCv0E,KAAKu0E,MAAM60D,iBAEdppI,KAAKu0E,MAAM3rE,YAAY5I,KAAKu0E,MAAM80D,WAGtCrpI,MAAKu0E,MAAM+0D,gBAAgB,YAC3BtpI,KAAKu0E,MAAM+0D,gBAAgB,OAE3BtpI,KAAKu0E,MAAQ,OAUjBxxE,QAAS,WAEL/C,KAAKiL,OAELjL,KAAK+nI,qBAED/nI,KAAKo8G,aAELp8G,KAAKE,KAAKipC,MAAMma,MAAMmP,wBAAwBzyD,KAAK2vH,OAAQ3vH,MAG3DA,KAAKgnI,UAELn0H,OAAO4xF,aAAazkG,KAAKgnI,YAWrC5jI,OAAOC,eAAewlB,EAAO4jD,MAAM5pE,UAAW,eAE1CS,IAAK,WAED,MAAQtD,MAAU,MAAIA,KAAKu0E,MAAMg3C,YAAc,GAInD/nH,IAAK,SAAUC,GAEXzD,KAAKu0E,MAAMg3C,YAAc9nH,KAWjCL,OAAOC,eAAewlB,EAAO4jD,MAAM5pE,UAAW,YAE1CS,IAAK,WAED,MAAQtD,MAAU,MAAIA,KAAKu0E,MAAM3uC,SAAW,KAWpDxiC,OAAOC,eAAewlB,EAAO4jD,MAAM5pE,UAAW,YAE1CS,IAAK,WAED,MAAQtD,MAAU,MAAKA,KAAKu0E,MAAMg3C,YAAcvrH,KAAKu0E,MAAM3uC,SAAY,KAU/ExiC,OAAOC,eAAewlB,EAAO4jD,MAAM5pE,UAAW,QAE1CS,IAAK,WAED,MAAOtD,MAAKitH,QAIhBzpH,IAAK,SAAUC,GAIX,GAFAA,EAAQA,GAAS,KAGjB,CACI,GAAIzD,KAAKitH,OAEL,MAGJjtH,MAAK+uH,YAAa,EAClB/uH,KAAKghD,cAGT,CACI,IAAKhhD,KAAKitH,OAEN,MAGJjtH,MAAK+uH,YAAa,EAClB/uH,KAAKmhD,gBAajB/9C,OAAOC,eAAewlB,EAAO4jD,MAAM5pE,UAAW,UAE1CS,IAAK,WAED,MAAOtD,MAAKu9C,SAIhB/5C,IAAK,SAAUC,GAIX,GAFAA,EAAQA,GAAS,MAEbzD,KAAKo8G,YAKT,GAAI34G,EACJ,CACI,GAAIzD,KAAKu9C,QAEL,MAGJv9C,MAAKw9C,aAAc,EACnBx9C,KAAK2oI,eAGT,CACI,IAAK3oI,KAAKu9C,QAEN,MAGJv9C,MAAKw9C,aAAc,EACnBx9C,KAAK4oI,gBAUjBxlI,OAAOC,eAAewlB,EAAO4jD,MAAM5pE,UAAW,UAE1CS,IAAK,WAED,MAAQtD,MAAU,MAAIA,KAAKu0E,MAAMhwC,OAAS,GAI9C/gC,IAAK,SAAUC,GAEC,EAARA,EAEAA,EAAQ,EAEHA,EAAQ,IAEbA,EAAQ,GAGRzD,KAAKu0E,QAELv0E,KAAKu0E,MAAMhwC,OAAS9gC,MAWhCL,OAAOC,eAAewlB,EAAO4jD,MAAM5pE,UAAW,gBAE1CS,IAAK,WAED,MAAQtD,MAAU,MAAIA,KAAKu0E,MAAMm0D,aAAe,GAIpDllI,IAAK,SAAUC,GAEPzD,KAAKu0E,QAELv0E,KAAKu0E,MAAMm0D,aAAejlI,MAetCL,OAAOC,eAAewlB,EAAO4jD,MAAM5pE,UAAW,QAE1CS,IAAK,WAED,MAAQtD,MAAU,MAAIA,KAAKu0E,MAAMhK,MAAO,GAI5C/mE,IAAK,SAAUC,GAEPA,GAASzD,KAAKu0E,MAEdv0E,KAAKu0E,MAAMhK,KAAO,OAEbvqE,KAAKu0E,QAEVv0E,KAAKu0E,MAAMhK,KAAO,OAY9BnnE,OAAOC,eAAewlB,EAAO4jD,MAAM5pE,UAAW,WAE1CS,IAAK,WAED,QAAStD,KAAKu0E,MAAMzqC,QAAU9pC,KAAKu0E,MAAM00D,UAMjDpgH,EAAO4jD,MAAM5pE,UAAUC,YAAc+lB,EAAO4jD,MAWpB/iE,SAApBzJ,KAAKkE,aAELlE,KAAKkE,WAAa0kB,EAAO1kB,YAGLuF,SAApBzJ,KAAK0N,aAEL1N,KAAK0N,WAAakb,EAAOlb,YAGKjE,SAA9BzJ,KAAKuL,QAAQC,eAEbxL,KAAKuL,QAAQC,aAAe,GAAIxL,MAAKuL,QAAQ,GAAIvL,MAAKupB,cAGnB9f,SAAnCzJ,KAAKiB,cAAc2F,cAEnB5G,KAAKiB,cAAc2F,YAAc,GAAI5G,MAAK+B,QAGR0H,SAAlCzJ,KAAKyG,cAAc4kB,aAEnBrrB,KAAKyG,cAAc4kB,WAAa,GAAIrrB,MAAK+B,QAGzC/B,KAAK0mC,UAAmCj9B,SAAvBzJ,KAAK0mC,SAASs9C,OAE/BhkF,KAAK0mC,SAASs9C,KAAOp7D,EAAOyK,QAC5BrzB,KAAK0mC,SAAS+8C,KAAO76D,EAAOmL,UAC5B/zB,KAAK0mC,SAASi9C,KAAO/6D,EAAOkL,OAC5B9zB,KAAK0mC,SAASk9C,KAAOh7D,EAAO6K,QAC5BzzB,KAAK0mC,SAASg9C,KAAO96D,EAAOuL,kBAGhCn0B,KAAKuqB,mBAAoB,EAQE,mBAAZ8G,UACe,mBAAXC,SAA0BA,OAAOD,UACxCA,QAAUC,OAAOD,QAAUzI,GAE/ByI,QAAQzI,OAASA,GACQ,mBAAX2I,SAA0BA,OAAOC,IAC/CD,OAAO,SAAU,WAAc,MAAOzxB,GAAK8oB,OAASA,MAEpD9oB,EAAK8oB,OAASA,EAGXA,GACRnjB,KAAK1F"} \ No newline at end of file +{"version":3,"sources":["phaser-no-physics.js"],"names":["root","this","PIXI","game","WEBGL_RENDERER","CANVAS_RENDERER","VERSION","_UID","Float32Array","Uint16Array","Uint32Array","ArrayBuffer","Array","PI_2","Math","PI","RAD_TO_DEG","DEG_TO_RAD","RETINA_PREFIX","DisplayObject","position","Point","scale","pivot","rotation","alpha","visible","hitArea","renderable","parent","stage","worldAlpha","worldTransform","Matrix","worldPosition","worldScale","worldRotation","filterArea","_sr","_cr","_bounds","Rectangle","_currentBounds","_mask","_cacheAsBitmap","_cacheIsDirty","prototype","constructor","destroy","children","i","length","_destroyCachedSprite","updateTransform","p","world","a","b","c","d","tx","ty","pt","wt","rotationCache","sin","cos","x","y","set","sqrt","atan2","transformCallback","call","transformCallbackContext","setStageReference","preUpdate","generateTexture","resolution","scaleMode","renderer","bounds","getLocalBounds","renderTexture","RenderTexture","width","height","_tempMatrix","render","updateCache","_generateCachedSprite","toGlobal","apply","toLocal","from","applyInverse","_renderCachedSprite","renderSession","_cachedSprite","gl","Sprite","_renderWebGL","_renderCanvas","max","ceil","texture","resize","tempFilters","_filters","filters","anchor","displayObjectUpdateTransform","Object","defineProperties","get","value","worldVisible","item","mask","isMask","isArray","passes","filterPasses","j","push","_filterBlock","target","blendMode","blendModes","MULTIPLY","NORMAL","cacheAsBitmap","DisplayObjectContainer","ignoreChildInput","create","defineProperty","_width","_height","addChild","child","addChildAt","index","removeChild","splice","Error","swapChildren","child2","index1","getChildIndex","index2","indexOf","setChildIndex","currentIndex","getChildAt","removeChildAt","removeStageReference","undefined","removeChildren","beginIndex","endIndex","begin","end","range","removed","displayObjectContainerUpdateTransform","getBounds","EmptyRectangle","childBounds","childMaxX","childMaxY","minX","Infinity","minY","maxX","maxY","childVisible","matrixCache","identityMatrix","spriteBatch","flush","filterManager","pushFilter","stop","maskManager","pushMask","start","popMask","popFilter","Texture","emptyTexture","tint","cachedTint","tintedTexture","shader","exists","baseTexture","hasLoaded","onTextureUpdate","frame","setTexture","destroyBase","skipRender","valid","matrix","w0","w1","h0","h1","temp","x1","y1","x2","y2","x3","y3","x4","y4","crop","currentBlendMode","context","globalCompositeOperation","blendModesCanvas","globalAlpha","smoothProperty","scaleModes","LINEAR","dx","trim","dy","shakeX","shakeY","roundPixels","setTransform","cw","ch","requiresReTint","CanvasTinter","getTintedTexture","drawImage","cx","cy","source","SpriteBatch","textureThing","ready","initWebGL","fastSpriteBatch","WebGLFastSpriteBatch","setContext","shaderManager","setShader","fastShader","transform","isRotated","childTransform","hex2rgb","hex","rgb2hex","rgb","canUseNewCanvasBlendModes","document","pngHead","pngEnd","magenta","Image","src","yellow","canvas","CanvasPool","getContext","getImageData","data","remove","getNextPowerOfTwo","number","result","isPowerOfTwo","idx","getFirst","container","createElement","pool","removeByCanvas","getTotal","getFree","initDefaultShaders","CompileVertexShader","shaderSrc","_CompileShader","VERTEX_SHADER","CompileFragmentShader","FRAGMENT_SHADER","shaderType","join","createShader","shaderSource","compileShader","getShaderParameter","COMPILE_STATUS","window","console","log","getShaderInfoLog","compileProgram","vertexSrc","fragmentSrc","fragmentShader","vertexShader","shaderProgram","createProgram","attachShader","linkProgram","getProgramParameter","LINK_STATUS","getProgramInfoLog","PixiShader","program","textureCount","firstRun","dirty","attributes","init","defaultVertexSrc","useProgram","uSampler","getUniformLocation","projectionVector","offsetVector","dimensions","aVertexPosition","getAttribLocation","aTextureCoord","colorAttribute","key","uniforms","uniformLocation","initUniforms","uniform","type","_init","initSampler2D","glMatrix","glValueLength","glFunc","uniformMatrix2fv","uniformMatrix3fv","uniformMatrix4fv","activeTexture","bindTexture","TEXTURE_2D","_glTextures","id","textureData","magFilter","minFilter","wrapS","CLAMP_TO_EDGE","wrapT","format","LUMINANCE","RGBA","repeat","REPEAT","pixelStorei","UNPACK_FLIP_Y_WEBGL","flipY","border","texImage2D","UNSIGNED_BYTE","texParameteri","TEXTURE_MAG_FILTER","TEXTURE_MIN_FILTER","TEXTURE_WRAP_S","TEXTURE_WRAP_T","uniform1i","syncUniforms","transpose","z","w","_dirty","instances","updateTexture","deleteProgram","PixiFastShader","uMatrix","aPositionCoord","aScale","aRotation","StripShader","translationMatrix","attribute","PrimitiveShader","tintColor","ComplexPrimitiveShader","color","glContexts","WebGLRenderer","defaultRenderer","transparent","autoResize","preserveDrawingBuffer","clearBeforeRender","view","_contextOptions","antialias","premultipliedAlpha","stencil","projection","offset","WebGLShaderManager","WebGLSpriteBatch","WebGLMaskManager","WebGLFilterManager","stencilManager","WebGLStencilManager","blendModeManager","WebGLBlendModeManager","drawCount","initContext","mapBlendModes","glContextId","disable","DEPTH_TEST","CULL_FACE","enable","BLEND","contextLost","viewport","bindFramebuffer","FRAMEBUFFER","clearColor","_bgColor","r","g","clear","COLOR_BUFFER_BIT","camera","_shake","renderDisplayObject","displayObject","buffer","setBlendMode","style","createTexture","UNPACK_PREMULTIPLY_ALPHA_WEBGL","NEAREST","mipmap","LINEAR_MIPMAP_LINEAR","NEAREST_MIPMAP_NEAREST","generateMipmap","_powerOf2","blendModesWebGL","modes","ONE","ONE_MINUS_SRC_ALPHA","ADD","SRC_ALPHA","DST_ALPHA","DST_COLOR","SCREEN","OVERLAY","DARKEN","LIGHTEN","COLOR_DODGE","COLOR_BURN","HARD_LIGHT","SOFT_LIGHT","DIFFERENCE","EXCLUSION","HUE","SATURATION","COLOR","LUMINOSITY","blendModeWebGL","blendFunc","maskData","WebGLGraphics","updateGraphics","_webGL","pushStencil","popStencil","stencilStack","reverse","count","graphics","webGLData","bindGraphics","STENCIL_TEST","STENCIL_BUFFER_BIT","level","colorMask","stencilFunc","ALWAYS","stencilOp","KEEP","INVERT","mode","drawElements","TRIANGLE_FAN","indices","UNSIGNED_SHORT","EQUAL","DECR","INCR","TRIANGLE_STRIP","_currentGraphics","complexPrimitiveShader","uniform1f","toArray","uniform2f","uniform3fv","bindBuffer","ARRAY_BUFFER","vertexAttribPointer","FLOAT","ELEMENT_ARRAY_BUFFER","indexBuffer","primitiveShader","pop","maxAttibs","attribState","tempAttribState","stack","defaultShader","stripShader","setAttribs","attribs","attribId","enableVertexAttribArray","disableVertexAttribArray","_currentId","currentShader","vertSize","size","numVerts","numIndices","vertices","positions","colors","lastIndexCount","drawing","currentBatchSize","currentBaseTexture","textures","shaders","sprites","AbstractFilter","vertexBuffer","createBuffer","bufferData","STATIC_DRAW","DYNAMIC_DRAW","sprite","uvs","_uvs","aX","aY","x0","y0","renderTilingSprite","tilingTexture","TextureUvs","h","tilePosition","tileScaleOffset","offsetX","offsetY","scaleX","tileScale","scaleY","TEXTURE0","stride","bufferSubData","subarray","nextTexture","nextBlendMode","nextShader","batchSize","blendSwap","shaderSwap","skip","renderBatch","startIndex","TRIANGLES","deleteBuffer","maxSize","renderSprite","filterStack","texturePool","initShaderBuffers","filterBlock","_filterArea","_previous_stencil_mgr","filter","FilterTexture","padding","frameBuffer","_glFilterTexture","vertexArray","uvBuffer","uvArray","inputTexture","outputTexture","filterPass","applyFilterPass","sizeX","sizeY","currentFilter","colorBuffer","colorArray","createFramebuffer","DEFAULT","framebufferTexture2D","COLOR_ATTACHMENT0","renderBuffer","createRenderbuffer","bindRenderbuffer","RENDERBUFFER","framebufferRenderbuffer","DEPTH_STENCIL_ATTACHMENT","renderbufferStorage","DEPTH_STENCIL","deleteFramebuffer","deleteTexture","CanvasBuffer","clearRect","CanvasMaskManager","save","cacheAlpha","CanvasGraphics","renderGraphicsMask","clip","restore","tintMethod","tintWithMultiply","fillStyle","toString","substr","fillRect","tintWithPerPixel","rgbValues","pixelData","pixels","canHandleAlpha","putImageData","checkInverseAlpha","s1","s2","canUseMultiply","CanvasRenderer","refresh","Phaser","Canvas","getSmoothingPrefix","navigator","isCocoonJS","screencanvas","rgba","removeView","useNew","BaseTexture","complete","naturalWidth","naturalHeight","forceLoaded","unloadFromGPU","updateSourceImage","newSrc","warn","glTexture","fromCanvas","TextureSilentFail","noFrame","isTiling","requiresUpdate","setFrame","onBaseTextureLoaded","_updateUvs","tw","th","textureBuffer","renderWebGL","renderCanvas","tempMatrix","updateBase","identity","translate","append","realResolution","getImage","image","getBase64","getCanvas","toDataURL","webGLPixels","Uint8Array","readPixels","tempCanvas","canvasData","Strip","canvasPadding","drawMode","DrawModes","_vertexBuffer","_initWebGL","_renderStrip","_indexBuffer","_uvBuffer","_colorBuffer","_renderCanvasTriangleStrip","_renderCanvasTriangles","_renderCanvasDrawTriangle","index0","textureSource","textureWidth","textureHeight","u0","u1","u2","v0","v1","v2","paddingX","paddingY","centerX","centerY","normX","normY","dist","beginPath","moveTo","lineTo","closePath","delta","deltaA","deltaB","deltaC","deltaD","deltaE","deltaF","renderStripFlat","strip","fill","updateFrame","n","rawX","rawY","Rope","points","lastPoint","point","amount","total","nextPoint","perp","ratio","perpLength","num","TilingSprite","textureDebug","canvasBuffer","tilePattern","refreshTexture","frameWidth","frameHeight","generateTilingTexture","needsUpdate","createPattern","sessionBlendMode","forcePowerOfTwo","targetWidth","_frame","sourceSizeW","targetHeight","sourceSizeH","trimmed","spriteSourceSizeX","spriteSourceSizeY","strokeStyle","strokeRect","exports","module","define","amd","WheelEventProxy","scaleFactor","deltaMode","_scaleFactor","_deltaMode","originalEvent","GAMES","AUTO","CANVAS","WEBGL","HEADLESS","NONE","LEFT","RIGHT","UP","DOWN","SPRITE","BUTTON","IMAGE","GRAPHICS","TEXT","TILESPRITE","BITMAPTEXT","GROUP","RENDERTEXTURE","TILEMAP","TILEMAPLAYER","EMITTER","POLYGON","BITMAPDATA","CANVAS_FILTER","WEBGL_FILTER","ELLIPSE","SPRITEBATCH","RETROFONT","POINTER","ROPE","CIRCLE","RECTANGLE","LINE","MATRIX","POINT","ROUNDEDRECTANGLE","CREATURE","VIDEO","PENDING_ATLAS","HORIZONTAL","VERTICAL","LANDSCAPE","PORTRAIT","ANGLE_UP","ANGLE_DOWN","ANGLE_LEFT","ANGLE_RIGHT","ANGLE_NORTH_EAST","ANGLE_NORTH_WEST","ANGLE_SOUTH_EAST","ANGLE_SOUTH_WEST","TOP_LEFT","TOP_CENTER","TOP_RIGHT","LEFT_TOP","LEFT_CENTER","LEFT_BOTTOM","CENTER","RIGHT_TOP","RIGHT_CENTER","RIGHT_BOTTOM","BOTTOM_LEFT","BOTTOM_CENTER","BOTTOM_RIGHT","trunc","floor","Function","bind","slice","thisArg","bound","args","boundArgs","concat","arguments","TypeError","F","proto","arg","forEach","fun","t","len","CheapArray","assert","Utils","reverseString","string","split","getProperty","obj","prop","parts","last","l","current","setProperty","chanceRoll","chance","random","randomChoice","choice1","choice2","parseDimension","dimension","f","px","parseInt","innerWidth","innerHeight","pad","str","dir","padlen","right","left","isPlainObject","nodeType","hasOwnProperty","e","extend","options","name","copy","copyIsArray","clone","deep","mixinPrototype","mixin","replace","mixinKeys","keys","to","o","childNodes","cloneNode","Circle","diameter","_diameter","_radius","circumference","out","u","radius","setTo","copyFrom","copyTo","dest","distance","round","output","contains","circumferencePoint","angle","asDegrees","offsetPoint","top","bottom","equals","intersects","degToRad","intersectsRectangle","abs","halfWidth","xDist","halfHeight","yDist","xCornerDist","yCornerDist","xCornerDistSq","yCornerDistSq","maxCornerDistSq","Ellipse","normx","normy","Line","fromSprite","startSprite","endSprite","useCenter","center","fromAngle","rotate","rotateAround","line","asSegment","intersectsPoints","reflect","midPoint","centerOn","add","pointOnLine","pointOnSegment","xMin","min","xMax","yMin","yMax","coordinatesOnLine","stepRate","results","sx","sy","err","e2","wrap","a1","a2","b1","b2","c1","c2","denom","uc","ua","ub","rect","bx1","by1","bx2","by2","normalAngle","fromArray","array","pos","newPos","tx1","d1","invert","subtract","multiply","divide","clampX","clamp","clampY","radToDeg","getMagnitude","getMagnitudeSq","setMagnitude","magnitude","normalize","isZero","m","dot","cross","rperp","normalRightHand","negative","multiplyAdd","s","interpolate","project","amt","projectUnit","centroid","pointslength","parse","xProp","yProp","Polygon","area","_points","closed","flattened","toNumberArray","flatten","inside","ix","iy","jx","jy","Number","MAX_VALUE","calculateArea","p1","p2","avgHeight","floorAll","ceilAll","inflate","containsRect","intersection","intersectsRaw","tolerance","union","randomX","randomY","getPoint","empty","inflatePoint","containsRaw","rx","ry","rw","rh","containsPoint","volume","sameDimensions","aabb","NEGATIVE_INFINITY","POSITIVE_INFINITY","RoundedRectangle","Camera","deadzone","roundPx","atLimit","totalInView","lerp","onShakeComplete","Signal","onFlashComplete","onFadeComplete","fx","_targetPosition","_edge","_position","intensity","duration","horizontal","vertical","shakeBounds","_fxDuration","_fxType","FOLLOW_LOCKON","FOLLOW_PLATFORMER","FOLLOW_TOPDOWN","FOLLOW_TOPDOWN_TIGHT","SHAKE_BOTH","SHAKE_HORIZONTAL","SHAKE_VERTICAL","ENABLE_FX","boot","Graphics","follow","lerpX","lerpY","helper","unfollow","focusOn","setPosition","focusOnXY","shake","force","direction","flash","beginFill","drawRect","endFill","fade","update","updateFX","updateShake","checkBounds","time","elapsedMS","dispatch","rnd","frac","updateTarget","math","linear","setBoundsToWorld","vx","vw","vy","vh","setSize","reset","resetFX","State","make","cache","input","load","sound","state","tweens","particles","physics","preload","loadUpdate","loadRender","preRender","paused","resumed","pauseUpdate","shutdown","StateManager","pendingState","states","_pendingState","_clearWorld","_clearCache","_created","_args","onStateChange","onInitCallback","onPreloadCallback","onCreateCallback","onUpdateCallback","onRenderCallback","onResizeCallback","onPreRenderCallback","onLoadUpdateCallback","onLoadRenderCallback","onPausedCallback","onResumedCallback","onPauseUpdateCallback","onShutDownCallback","onPause","pause","onResume","resume","autoStart","newState","isBooted","callbackContext","clearWorld","clearCache","checkState","restart","dummy","previousStateKey","clearCurrentState","setCurrentState","totalQueuedFiles","totalQueuedPacks","loadComplete","removeAll","debug","link","unlink","_kickstart","getCurrentState","elapsedTime","renderType","_bindings","_prevParams","memorize","_shouldPropagate","active","_boundDispatch","validateListener","listener","fnName","_registerListener","isOnce","listenerContext","priority","binding","prevIndex","_indexOfListener","SignalBinding","_addBinding","execute","_priority","cur","_listener","has","addOnce","_destroy","getNumListeners","halt","bindings","paramsArr","forget","dispose","_this","signal","_isOnce","_signal","callCount","params","handlerReturn","detach","isBound","getListener","getSignal","Filter","prevPoint","Date","mouse","date","getFullYear","getMonth","getDate","getHours","getMinutes","getSeconds","sampleRate","iChannel0","iChannel1","iChannel2","iChannel3","setResolution","pointer","toFixed","totalElapsedSeconds","addToWorld","anchorX","anchorY","Plugin","hasPreUpdate","hasUpdate","hasPostUpdate","hasRender","hasPostRender","postRender","PluginManager","plugins","_len","_i","plugin","postUpdate","Stage","disableVisibilityChange","currentRenderOrderID","_hiddenVar","_onChange","config","parseConfig","setBackgroundColor","DOM","getOffset","setUserSelect","setTouchAction","checkVisibility","webkitHidden","mozHidden","msHidden","hidden","event","visibilityChange","addEventListener","onblur","onfocus","onpagehide","onpageshow","device","cocoonJSApp","CocoonJS","App","onSuspended","onActivated","focusLoss","focusGain","gamePaused","gameResumed","Color","valueToColor","updateColor","removeEventListener","Group","addToStage","enableBody","physicsBodyType","Physics","ARCADE","physicsType","alive","ignoreDestroy","pendingDestroy","classType","cursor","inputEnableChildren","onChildInputDown","onChildInputUp","onChildInputOver","onChildInputOut","enableBodyDebug","physicsSortDirection","onDestroy","cursorIndex","fixedToCamera","cameraOffset","hash","_sortProperty","RETURN_NONE","RETURN_TOTAL","RETURN_CHILD","SORT_ASCENDING","SORT_DESCENDING","silent","body","removeFromHash","updateZ","addToHash","inputEnabled","events","onAddedToGroup$dispatch","addAt","addMultiple","moveAll","getAt","createMultiple","quantity","singleKey","singleFrame","align","rows","columns","cellWidth","cellHeight","alignIn","resetCursor","next","previous","swap","child1","bringToTop","getIndex","sendToBack","moveUp","moveDown","xy","getByName","oldChild","newChild","hasProperty","operation","checkProperty","checkAlive","checkVisible","setAll","setAllChildren","checkAll","addAll","property","subAll","multiplyAll","divideAll","callAllExists","callback","existsValue","callbackFromArray","callAll","method","methodLength","contextLength","renderOrderID","predicate","checkExists","ArraySet","forEachExists","iterate","forEachAlive","forEachDead","sort","order","ascendingSortHandler","descendingSortHandler","customSort","sortHandler","returnType","getFirstExists","createIfNull","resetChild","getFirstAlive","getFirstDead","loadTexture","getTop","getBottom","getClosestTo","object","tempDistance","getFurthestFrom","countLiving","countDead","getRandom","ArrayUtils","getRandomItem","destroyPhase","onRemovedFromGroup$dispatch","group","destroyTexture","removeBetween","destroyChildren","soft","World","_definedSize","stateChange","setBounds","useBounds","between","Game","physicsConfig","isRunning","raf","net","Device","lockRender","stepping","pendingStep","stepCount","onBlur","onFocus","_paused","_codePaused","currentUpdateID","updatesThisFrame","_deltaTime","_lastCount","_spiraling","fpsProblemNotifier","forceSingleUpdate","_nextFpsNotification","enableDebug","RandomDataGenerator","now","whenReady","seed","ScaleManager","setUpRenderer","GameObjectFactory","GameObjectCreator","Cache","Loader","Time","TweenManager","Input","SoundManager","Particles","Create","Net","Debug","showDebugHeader","RequestAnimationFrame","stopFocus","focus","hideBanner","v","webAudio","chrome","webGL","contextRestored","cocoonJS","smoothed","addToDOM","preventDefault","clearGLTextures","updateLogic","desiredFpsMult","updateRender","slowMotion","desiredFps","slowStep","elapsed","timeStep","enableStep","disableStep","step","removeFromDOM","muteOnPause","setMute","cordova","iOS","unsetMute","hitCanvas","hitContext","moveCallbacks","customCandidateHandler","customCandidateHandlerContext","pollRate","enabled","multiInputOverride","MOUSE_TOUCH_COMBINE","speed","circle","maxPointers","tapRate","doubleTapRate","holdRate","justPressedRate","justReleasedRate","recordPointerHistory","recordRate","recordLimit","pointer1","pointer2","pointer3","pointer4","pointer5","pointer6","pointer7","pointer8","pointer9","pointer10","pointers","activePointer","mousePointer","keyboard","touch","mspointer","gamepad","resetLocked","onDown","onUp","onTap","onHold","minPriorityID","interactiveItems","_localPoint","_pollCounter","_oldPosition","_x","_y","MOUSE_OVERRIDES_TOUCH","TOUCH_OVERRIDES_MOUSE","MAX_POINTERS","Pointer","PointerMode","CURSOR","addPointer","Mouse","Touch","MSPointer","Keyboard","Gamepad","_onClickTrampoline","onClickTrampoline","setInteractiveCandidateHandler","addMoveCallback","deleteMoveCallback","TOUCH","hard","resetSpeed","startPointer","countActivePointers","updatePointer","identifier","move","stopPointer","limit","getPointer","isActive","getPointerFromIdentifier","getPointerFromId","pointerId","getLocalPosition","hitTest","localPoint","TileSprite","graphicsData","shape","processClickTrampolines","mouseDownCallback","mouseUpCallback","mouseOutCallback","mouseOverCallback","mouseWheelCallback","capture","button","wheelDelta","locked","stopOnGameOut","pointerLock","_onMouseDown","_onMouseMove","_onMouseUp","_onMouseOut","_onMouseOver","_onMouseWheel","_wheelEvent","NO_BUTTON","LEFT_BUTTON","MIDDLE_BUTTON","RIGHT_BUTTON","BACK_BUTTON","FORWARD_BUTTON","WHEEL_UP","WHEEL_DOWN","android","onMouseDown","onMouseMove","onMouseUp","_onMouseUpGlobal","onMouseUpGlobal","_onMouseOutGlobal","onMouseOutGlobal","onMouseOut","onMouseOver","onMouseWheel","wheelEvent","mouseMoveCallback","withinGame","leftButton","rightButton","bindEvent","deltaY","requestPointerLock","element","mozRequestPointerLock","webkitRequestPointerLock","_pointerLockChange","pointerLockChange","pointerLockElement","mozPointerLockElement","webkitPointerLockElement","releasePointerLock","exitPointerLock","mozExitPointerLock","webkitExitPointerLock","_stubsGenerated","makeBinder","detail","deltaX","wheelDeltaX","deltaZ","pointerDownCallback","pointerMoveCallback","pointerUpCallback","_onMSPointerDown","_onMSPointerMove","_onMSPointerUp","_onMSPointerUpGlobal","_onMSPointerOut","_onMSPointerOver","onPointerDown","onPointerMove","onPointerUp","onPointerUpGlobal","onPointerOut","onPointerOver","pointerType","DeviceButton","buttonCode","isDown","isUp","timeDown","timeUp","repeats","altKey","shiftKey","ctrlKey","onFloat","padFloat","justPressed","justReleased","pointerMode","CONTACT","middleButton","backButton","forwardButton","eraserButton","ERASER_BUTTON","_holdSent","_history","_nextDrop","_stateReset","clientX","clientY","pageX","pageY","screenX","screenY","rawMovementX","rawMovementY","movementX","movementY","isMouse","previousTapTime","totalTouches","msSinceLastClick","targetObject","interactiveCandidates","positionDown","positionUp","_clickTrampolines","_trampolineTargetObject","resetButtons","processButtonsDown","buttons","processButtonsUp","updateButtons","down","toLowerCase","totalActivePointers","_touchedHandler","processInteractiveObjects","shift","fromClick","pollLocked","mozMovementX","webkitMovementX","mozMovementY","webkitMovementY","isDragged","highestRenderOrderID","highestInputPriorityID","candidateTarget","currentNode","first","checked","validForInput","checkPointerDown","checkPointerOver","priorityID","swapTarget","newTarget","_pointerOutHandler","_pointerOverHandler","leave","currentPointers","addClickTrampoline","callbackArgs","trampolines","trampoline","_releasedHandler","resetMovement","touchLockCallbacks","touchStartCallback","touchMoveCallback","touchEndCallback","touchEnterCallback","touchLeaveCallback","touchCancelCallback","_onTouchStart","_onTouchMove","_onTouchEnd","_onTouchEnter","_onTouchLeave","_onTouchCancel","onTouchStart","onTouchMove","onTouchEnd","onTouchEnter","onTouchLeave","onTouchCancel","consumeDocumentTouches","_documentTouchMove","addTouchLockCallback","onEnd","removeTouchLockCallback","cb","changedTouches","InputHandler","useHandCursor","_setHandCursor","allowHorizontalDrag","allowVerticalDrag","snapOffset","snapOnDrag","snapOnRelease","snapX","snapY","snapOffsetX","snapOffsetY","pixelPerfectOver","pixelPerfectClick","pixelPerfectAlpha","draggable","boundsRect","boundsSprite","scaleLayer","dragOffset","dragFromCenter","dragStopBlocksInputUp","dragStartPoint","dragDistanceThreshold","dragTimeThreshold","downPoint","snapPoint","_dragPoint","_dragPhase","_pendingDrag","_dragTimePass","_dragDistancePass","_wasEnabled","_tempPoint","_pointerData","camX","camY","isOver","isOut","timeOver","timeOut","downDuration","onAddedToGroup","addedToGroup","onRemovedFromGroup","removedFromGroup","flagged","highestID","highestRenderID","includePixelPerfect","isPixelPerfect","pointerX","pointerY","pointerDown","pointerUp","pointerTimeDown","pointerTimeUp","pointerOver","pointerOut","pointerTimeOver","pointerTimeOut","pointerDragged","fastTest","checkPixel","_dx","_dy","startDrag","_draggedPointerID","updateDrag","sendEvent","onInputOver$dispatch","onInputOut$dispatch","onInputDown$dispatch","dragTimeElapsed","onInputUp$dispatch","stopDrag","fromStart","globalToLocalX","py","globalToLocalY","checkBoundsRect","checkBoundsSprite","onDragUpdate","justOver","delay","overDuration","justOut","enableDrag","lockCenter","pixelPerfect","alphaThreshold","disableDrag","onDragStart$dispatch","grid","boundsFluid","scaleFluidInversed","onDragStop$dispatch","setDragLock","allowHorizontal","allowVertical","enableSnap","onDrag","onRelease","disableSnap","_gamepadIndexMap","_rawPads","_active","_gamepadSupportAvailable","webkitGetGamepads","webkitGamepads","userAgent","getGamepads","_prevRawGamepadTypes","_prevTimestamps","onConnectCallback","onDisconnectCallback","onDownCallback","onUpCallback","onAxisCallback","onFloatCallback","_ongamepadconnected","_gamepaddisconnected","_gamepads","SinglePad","addCallbacks","callbacks","onConnect","onDisconnect","onAxis","_onGamepadConnected","onGamepadConnected","_onGamepadDisconnected","onGamepadDisconnected","newPad","connect","removedPad","disconnect","_pollGamepads","pad1","pollStatus","pad2","pad3","pad4","rawGamepads","gamepadsChanged","_rawPad","singlePad","validConnections","rawIndices","padIndices","connected","k","rawPad","setDeadZones","deadZone","BUTTON_0","BUTTON_1","BUTTON_2","BUTTON_3","BUTTON_4","BUTTON_5","BUTTON_6","BUTTON_7","BUTTON_8","BUTTON_9","BUTTON_10","BUTTON_11","BUTTON_12","BUTTON_13","BUTTON_14","BUTTON_15","AXIS_0","AXIS_1","AXIS_2","AXIS_3","AXIS_4","AXIS_5","AXIS_6","AXIS_7","AXIS_8","AXIS_9","XBOX360_A","XBOX360_B","XBOX360_X","XBOX360_Y","XBOX360_LEFT_BUMPER","XBOX360_RIGHT_BUMPER","XBOX360_LEFT_TRIGGER","XBOX360_RIGHT_TRIGGER","XBOX360_BACK","XBOX360_START","XBOX360_STICK_LEFT_BUTTON","XBOX360_STICK_RIGHT_BUTTON","XBOX360_DPAD_LEFT","XBOX360_DPAD_RIGHT","XBOX360_DPAD_UP","XBOX360_DPAD_DOWN","XBOX360_STICK_LEFT_X","XBOX360_STICK_LEFT_Y","XBOX360_STICK_RIGHT_X","XBOX360_STICK_RIGHT_Y","PS3XC_X","PS3XC_CIRCLE","PS3XC_SQUARE","PS3XC_TRIANGLE","PS3XC_L1","PS3XC_R1","PS3XC_L2","PS3XC_R2","PS3XC_SELECT","PS3XC_START","PS3XC_STICK_LEFT_BUTTON","PS3XC_STICK_RIGHT_BUTTON","PS3XC_DPAD_UP","PS3XC_DPAD_DOWN","PS3XC_DPAD_LEFT","PS3XC_DPAD_RIGHT","PS3XC_STICK_LEFT_X","PS3XC_STICK_LEFT_Y","PS3XC_STICK_RIGHT_X","PS3XC_STICK_RIGHT_Y","padParent","_padParent","_prevTimestamp","_buttons","_buttonsLen","_axes","_axesLen","getButton","timestamp","rawButtonVal","isNaN","processButtonDown","processButtonUp","processButtonFloat","axes","processAxisChange","triggerCallback","disconnectingIndex","axis","axisCode","buttonValue","Key","keycode","_enabled","keyCode","onHoldCallback","onHoldContext","_justDown","_justUp","processKeyDown","processKeyUp","upDuration","pressEvent","onPressCallback","_keys","_capture","_onKeyDown","_onKeyPress","_onKeyUp","_k","onPress","addKey","addKeyCapture","addKeys","removeKey","removeKeyCapture","createCursorKeys","up","KeyCode","processKeyPress","clearCaptures","String","fromCharCode","charCode","A","charCodeAt","B","C","D","E","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z","ZERO","TWO","THREE","FOUR","FIVE","SIX","SEVEN","EIGHT","NINE","NUMPAD_0","NUMPAD_1","NUMPAD_2","NUMPAD_3","NUMPAD_4","NUMPAD_5","NUMPAD_6","NUMPAD_7","NUMPAD_8","NUMPAD_9","NUMPAD_MULTIPLY","NUMPAD_ADD","NUMPAD_ENTER","NUMPAD_SUBTRACT","NUMPAD_DECIMAL","NUMPAD_DIVIDE","F1","F2","F3","F4","F5","F6","F7","F8","F9","F10","F11","F12","F13","F14","F15","COLON","EQUALS","COMMA","UNDERSCORE","PERIOD","QUESTION_MARK","TILDE","OPEN_BRACKET","BACKWARD_SLASH","CLOSED_BRACKET","QUOTES","BACKSPACE","TAB","CLEAR","ENTER","SHIFT","CONTROL","ALT","CAPS_LOCK","ESC","SPACEBAR","PAGE_UP","PAGE_DOWN","END","HOME","PLUS","MINUS","INSERT","DELETE","HELP","NUM_LOCK","match","Component","Angle","wrapAngle","Animation","play","frameRate","loop","killOnComplete","animations","AutoCull","autoCull","inCamera","checkWorldBounds","Bounds","alignTo","BringToTop","Core","install","components","previousPosition","Events","PhysicsBody","AnimationManager","LoadTexture","FixedToCamera","previousRotation","fresh","_exists","P2JS","removeFromWorld","customRender","Crop","cropRect","_crop","updateCrop","resetFrame","Delta","Destroy","onDestroy$dispatch","removeFrom","Video","onChangeSource","resizeFrame","BitmapText","_glyphs","_parent","_onDestroy","_onAddedToGroup","_onRemovedFromGroup","_onRemovedFromWorld","_onKilled","_onRevived","_onEnterBounds","_onOutOfBounds","_onInputOver","_onInputOut","_onInputDown","_onInputUp","_onDragStart","_onDragUpdate","_onDragStop","_onAnimationStart","_onAnimationComplete","_onAnimationLoop","onRemovedFromWorld","onKilled","onRevived","onOutOfBounds","onEnterBounds","onInputOver","onInputOut","onInputDown","onInputUp","onDragStart","onDragStop","onAnimationStart","onAnimationComplete","onAnimationLoop","backing","_fixedToCamera","Health","health","maxHealth","damage","kill","setHealth","heal","InCamera","InputEnabled","InWorld","outOfCameraBoundsKill","_outOfBoundsFired","onEnterBounds$dispatch","onOutOfBounds$dispatch","outOfBoundsKill","inWorld","LifeSpan","lifespan","physicsElapsedMS","revive","onRevived$dispatch","onKilled$dispatch","stopAnimation","BitmapData","hasFrameData","loadFrameData","getFrameData","frameData","Tilemap","TilemapLayer","img","base","frameName","Overlap","overlap","_reset","Reset","ScaleMinMax","scaleMin","scaleMax","checkTransform","setScaleMinMax","Smoothed","existing","weapon","Weapon","createBullets","creature","mesh","Creature","tween","physicsGroup","audio","audioSprite","addSprite","tileSprite","rope","text","Text","overFrame","outFrame","downFrame","upFrame","Button","emitter","maxParticles","Arcade","Emitter","retroFont","font","characterWidth","characterHeight","chars","charsPerRow","xSpacing","ySpacing","xOffset","yOffset","RetroFont","bitmapText","tilemap","tileWidth","tileHeight","addToCache","uuid","addRenderTexture","video","url","bitmapData","addBitmapData","Tween","preUpdatePhysics","preUpdateLifeSpan","preUpdateInWorld","preUpdateCore","_onOverFrame","_onOutFrame","_onDownFrame","_onUpFrame","onOverSound","onOutSound","onDownSound","onUpSound","onOverSoundMarker","onOutSoundMarker","onDownSoundMarker","onUpSoundMarker","onOverMouseOnly","justReleasedPreventsOver","freezeFrames","forceOut","setFrames","onInputOverHandler","onInputOutHandler","onInputDownHandler","onInputUpHandler","removedFromWorld","STATE_OVER","STATE_OUT","STATE_DOWN","STATE_UP","clearFrames","setStateFrame","switchImmediately","frameKey","changeStateFrame","setStateSound","marker","soundKey","markerKey","Sound","AudioSprite","playStateSound","setSounds","overSound","overMarker","downSound","downMarker","outSound","outMarker","upSound","upMarker","setOverSound","setOutSound","setDownSound","setUpSound","changedUp","skipPool","ctx","imageData","FrameData","textureFrame","addFrame","Frame","disableTextureUpload","cls","_image","_pos","_size","_scale","_rotate","_alpha","prev","_anchor","_tempR","_tempG","_tempB","_circle","_swapCanvas","moveH","moveV","draw","addImage","processPixelRGB","pixel","createColor","unpackPixel","getPixel32","setPixel32","processPixel","replaceRGB","r1","g1","r2","g2","region","packPixel","setHSL","bHaveH","bHaveS","bHaveL","HSLtoRGB","shiftHSL","red","green","blue","immediate","LITTLE_ENDIAN","setPixel","getPixel","getPixelRGB","hsl","hsv","getPixels","getFirstPixel","scan","newWidth","newHeight","op","copyTransform","copyRect","drawGroup","drawGroupProxy","drawFull","renderGraphics","shadow","blur","shadowColor","shadowBlur","shadowOffsetX","shadowOffsetY","alphaMask","sourceRect","maskRect","blendSourceAtop","blendReset","extract","destination","prevFont","fillText","arc","lineWidth","stroke","textureLine","blendSourceOver","blendSourceIn","blendSourceOut","blendDestinationOver","blendDestinationIn","blendDestinationOut","blendDestinationAtop","blendXor","blendAdd","blendMultiply","blendScreen","blendOverlay","blendDarken","blendLighten","blendColorDodge","blendColorBurn","blendHardLight","blendSoftLight","blendDifference","blendExclusion","blendHue","blendSaturation","blendColor","blendLuminosity","getSmoothingEnabled","setSmoothingEnabled","getTransform","translateX","translateY","skewX","skewY","fillAlpha","lineColor","currentPath","boundsPadding","_localBounds","webGLDirty","cachedSpriteDirty","lineStyle","lineAlpha","drawShape","updateLocalBounds","quadraticCurveTo","cpX","cpY","toX","toY","xa","ya","fromX","fromY","bezierCurveTo","cpX2","cpY2","dt","dt2","dt3","t2","t3","arcTo","mm","dd","cc","tt","k1","k2","j1","j2","qx","qy","startAngle","endAngle","anticlockwise","segments","sweep","segs","startX","startY","filling","theta","theta2","cTheta","sTheta","segMinus","remainder","real","fillColor","drawRoundedRect","drawCircle","drawEllipse","drawPolygon","path","clearDirty","updateCachedSpriteTexture","_prevTint","tempPoint","RECT","RREC","CIRC","ELIP","cachedSprite","destroyCachedSprite","GraphicsData","POLY","_lineTint","_fillTint","PolyK","Triangulate","sign","tgs","avl","al","i0","i1","i2","ax","ay","bx","by","earFound","_convex","vi","_PointInTriangle","v0x","v0y","v1x","v1y","v2x","v2y","dot00","dot01","dot02","dot11","dot12","invDenom","EarCut","holeIndices","dim","hasHoles","outerLen","outerNode","linkedList","triangles","eliminateHoles","earcutLinked","clockwise","sum","insertNode","filterPoints","again","steiner","removeNode","ear","pass","indexCurve","isEarHashed","isEar","cureLocalIntersections","splitEarcut","pointInTriangle","minTX","minTY","maxTX","maxTY","minZ","zOrder","maxZ","nextZ","prevZ","locallyInside","isValidDiagonal","splitPolygon","list","queue","getLeftmost","compareX","eliminateHole","hole","findHoleBridge","hx","hy","tan","tanMin","sortLinked","q","tail","numMerges","pSize","qSize","inSize","leftmost","intersectsPolygon","middleInside","q1","q2","Node","an","bp","stencilBufferLimit","lastIndex","graphicsDataPool","switchMode","canDrawUsingSimple","buildPoly","buildComplexPoly","buildLine","buildRectangle","buildCircle","buildRoundedRectangle","upload","WebGLGraphicsData","rectData","verts","vertPos","tempPoints","rrectData","recPoints","quadraticBezierCurve","vecPos","getPt","n1","n2","perc","diff","xb","yb","circleData","totalSegs","seg","firstPoint","midPointX","midPointY","unshift","p1x","p1y","p2x","p2y","p3x","p3y","perpx","perpy","perp2x","perp2y","perp3x","perp3y","pdist","indexCount","indexStart","glPoints","glIndicies","updateGraphicsTint","kappa","ox","oy","xe","ye","xm","ym","maxRadius","tintR","tintG","tintB","drawTriangle","cull","triangle","cameraToFace","ab","faceNormal","drawTriangles","point1","point2","point3","renderXY","renderRawXY","textBounds","strokeColors","fontStyles","fontWeights","autoRound","useAdvancedWrap","_res","_text","_fontComponents","_lineSpacing","_charCount","setStyle","updateText","setShadow","shadowStroke","shadowFill","backgroundColor","boundsAlignH","boundsAlignV","strokeThickness","wordWrap","wordWrapWidth","maxLines","tabs","fontToComponents","fontStyle","fontVariant","fontWeight","fontSize","componentsToFont","outputText","runWordWrap","lines","lineWidths","maxLineWidth","fontProperties","determineFontProperties","drawnLines","measureLine","measureText","tab","section","snapToCeil","lineHeight","lineSpacing","textBaseline","lineCap","lineJoin","linePositionX","linePositionY","ascent","updateLine","updateShadow","strokeText","renderTabLine","snap","lineLength","letter","clearColors","clearFontValues","addColor","addStrokeColor","addFontStyle","addFontWeight","weight","precalculateWordWrap","wrappedLines","advancedWordWrap","basicWordWrap","linesCount","currentLineWidth","words","word","wordWithSpace","wordWidth","newWord","secondPart","spaceLeft","wordWidthWithSpace","updateFont","family","exec","fontFamily","setText","parseList","setTextBounds","properties","fontPropertiesCache","fontPropertiesCanvas","fontPropertiesContext","baseline","descent","imagedata","parseFloat","textWidth","textHeight","_prevAnchor","_maxWidth","_data","getBitmapFont","_font","_fontSize","_align","_tint","sourceWidth","sourceHeight","scanLine","lastSpace","wrappedWidth","prevCharCode","maxWidth","test","charAt","charData","kerning","xAdvance","cleanText","re","purgeGlyphs","kept","checkImageKey","characterSpacingX","characterSpacingY","characterPerRow","multiLine","autoUpperCase","customSpacingX","customSpacingY","fixedWidth","fontSet","grabData","currentX","currentY","updateFrameData","stamp","ALIGN_LEFT","ALIGN_RIGHT","ALIGN_CENTER","TEXT_SET1","TEXT_SET2","TEXT_SET3","TEXT_SET4","TEXT_SET5","TEXT_SET6","TEXT_SET7","TEXT_SET8","TEXT_SET9","TEXT_SET10","TEXT_SET11","setFixedWidth","lineAlignment","content","characterSpacing","allowLowerCase","buildRetroFontText","getLongestLine","pasteLine","longestLine","removeUnsupportedCharacters","stripCR","newString","aChar","code","updateOffset","diffX","diffY","frames","getFrames","newText","toUpperCase","_hasUpdateAnimation","_updateAnimationCallback","updateAnimation","_updateAnimation","difference","_scroll","def","physicsElapsed","autoScroll","stopScroll","deviceReadyAt","initialized","desktop","iOSVersion","node","nodeWebkit","electron","ejecta","crosswalk","chromeOS","linux","macOS","windows","windowsPhone","canvasBitBltShift","file","fileSystem","localStorage","worker","css3D","typedArray","vibration","getUserMedia","quirksMode","arora","chromeVersion","epiphany","firefox","firefoxVersion","ie","ieVersion","trident","tridentVersion","edge","mobileSafari","midori","opera","safari","safariVersion","webApp","silk","audioData","ogg","opus","mp3","wav","m4a","webm","dolby","oggVideo","h264Video","mp4Video","webmVideo","vp9Video","hlsVideo","iPhone","iPhone4","iPad","pixelRatio","littleEndian","support32bit","fullscreen","requestFullscreen","cancelFullscreen","fullscreenKeyboard","onInitialized","nonPrimer","readyCheck","_readyCheck","_monitor","_queue","readyState","setTimeout","_initialize","_checkOS","vita","kindle","RegExp","$1","_checkFeatures","getItem","error","WebGLRenderingContext","compatMode","webkitGetUserMedia","mozGetUserMedia","msGetUserMedia","oGetUserMedia","URL","webkitURL","mozURL","msURL","_checkInput","documentElement","maxTouchPoints","msPointerEnabled","pointerEnabled","_checkFullScreenSupport","fs","cfs","Element","_checkBrowser","$3","process","require","versions","_checkVideo","videoElement","canPlayType","_checkAudio","audioElement","major","minor","$2","_checkDevice","Int8Array","_checkIsLittleEndian","Uint8ClampedArray","Int32Array","_checkIsUint8ClampedImageData","vibrate","webkitVibrate","mozVibrate","msVibrate","elem","createImageData","_checkCSS3D","has3d","el","transforms","webkitTransform","OTransform","msTransform","MozTransform","insertBefore","getComputedStyle","getPropertyValue","canPlayAudio","canPlayVideo","isConsoleOpen","profile","profileEnd","isAndroidStockBrowser","matches","display","msTouchAction","overflowHidden","getElementById","overflow","appendChild","parentNode","vendor","prefix","setImageRenderingCrisp","types","msInterpolationMode","setImageRenderingBicubic","forceSetTimeOut","vendors","requestAnimationFrame","cancelAnimationFrame","_isSetTimeOut","_onLoop","_timeOutID","updateSetTimeout","updateRAF","rafTime","timeToCall","clearTimeout","isSetTimeOut","isRAF","PI2","fuzzyEqual","epsilon","fuzzyLessThan","fuzzyGreaterThan","fuzzyCeil","val","fuzzyFloor","average","shear","snapTo","gap","snapToFloor","roundTo","place","pow","floorTo","ceilTo","angleBetween","angleBetweenY","angleBetweenPoints","angleBetweenPointsY","reverseAngle","angleRad","normalizeAngle","maxAdd","minSub","wrapValue","isOdd","isEven","minProperty","maxProperty","radians","linearInterpolation","bezierInterpolation","bernstein","catmullRomInterpolation","catmullRom","p0","factorial","res","p3","roundAwayFromZero","sinCosGenerator","sinAmplitude","cosAmplitude","frequency","frq","cosTable","sinTable","distanceSq","distancePow","clampBottom","within","mapLinear","smoothstep","smootherstep","percent","degreeToRadiansFactor","radianToDegreesFactor","degrees","seeds","s0","sow","integer","integerInRange","realInRange","normal","pick","ary","weightedPick","QuadTree","maxObjects","maxLevels","objects","nodes","_empty","subWidth","subHeight","populate","populateHandler","insert","retrieve","returnObjects","getHostName","location","hostname","checkDomainName","domain","updateQueryString","redirect","href","separator","getQueryString","parameter","keyValues","search","substring","decodeURI","decodeURIComponent","frameBased","_tweens","_add","easeMap","Power0","Easing","Power1","Power2","Power3","Power4","Linear","None","Quad","Quadratic","Out","Cubic","Quart","Quartic","Quint","Quintic","Sine","Sinusoidal","Expo","Exponential","Circ","Circular","Elastic","Back","Bounce","Quad.easeIn","In","Cubic.easeIn","Quart.easeIn","Quint.easeIn","Sine.easeIn","Expo.easeIn","Circ.easeIn","Elastic.easeIn","Back.easeIn","Bounce.easeIn","Quad.easeOut","Cubic.easeOut","Quart.easeOut","Quint.easeOut","Sine.easeOut","Expo.easeOut","Circ.easeOut","Elastic.easeOut","Back.easeOut","Bounce.easeOut","Quad.easeInOut","InOut","Cubic.easeInOut","Quart.easeInOut","Quint.easeInOut","Sine.easeInOut","Expo.easeInOut","Circ.easeInOut","Elastic.easeInOut","Back.easeInOut","Bounce.easeInOut","_pauseAll","_resumeAll","getAll","pendingDelete","_manager","addTweens","numTweens","isTweening","some","_pause","_resume","pauseAll","resumeAll","manager","timeline","timeScale","repeatCounter","onStart","onLoop","onRepeat","onChildComplete","onComplete","chainedTween","isPaused","_onUpdateCallback","_onUpdateCallbackContext","_pausedTime","_hasStarted","ease","yoyo","Default","TweenData","vEnd","loadValues","updateTweenData","repeatDelay","yoyoDelay","easing","interpolation","repeatAll","chain","startTime","status","PENDING","RUNNING","LOOPED","COMPLETE","generateData","vStart","vStartCache","vEndCache","repeatTotal","inReverse","easingFunction","interpolationFunction","interpolationContext","isFrom","yoyoCounter","ms","fps","blob","reversed","asin","prevTime","_desiredFps","suggestedFps","advancedTiming","fpsMin","fpsMax","msMin","msMax","pauseDuration","timeExpected","Timer","_frameCount","_elapsedAccumulator","_started","_timeLastSecond","_pauseStarted","_justResumed","_timers","timer","autoDestroy","previousDateNow","updateAdvancedTiming","updateTimers","elapsedSince","since","elapsedSecondsSince","running","expired","nextTick","timeCap","_pauseTotal","_now","_marked","_diff","_newTick","MINUTE","SECOND","HALF","QUARTER","repeatCount","tick","TimerEvent","clearEvents","clearPendingEvents","adjustEvents","baseTime","currentFrame","currentAnim","updateIfVisible","isLoaded","_frameData","_anims","_outputFrames","anim","copyFrameData","useNumericIndex","getFrameIndexes","validateFrames","checkFrameName","isPlaying","getAnimation","refreshFrame","getFrame","getFrameByName","_frameIndex","_frames","loopCount","isFinished","_pauseStartTime","_frameDiff","_frameSkip","onUpdate","isReversed","_timeLastFrame","_timeNextFrame","updateCurrentFrame","onAnimationStart$dispatch","reverseOnce","frameId","useLocalFrameIndex","frameIndex","dispatchComplete","onAnimationComplete$dispatch","onAnimationLoop$dispatch","signalUpdate","fromPlay","generateFrameNames","suffix","zeroPad","rotated","rotationDirection","spriteSourceSizeW","spriteSourceSizeH","setTrim","actualWidth","actualHeight","destX","destY","destWidth","destHeight","getRect","_frameNames","getFrameRange","AnimationParser","spriteSheet","frameMax","margin","spacing","row","column","JSONData","json","newFrame","filename","sourceSize","spriteSourceSize","JSONDataPyxel","signature","tileheight","tilewidth","JSONDataHash","XMLData","xml","getElementsByTagName","frameX","frameY","autoResolveURL","_cache","binary","bitmapFont","_urlMap","_urlResolver","_urlTemp","onSoundUnlock","_cacheMap","TEXTURE","SOUND","PHYSICS","BINARY","BITMAPFONT","JSON","XML","SHADER","RENDER_TEXTURE","addDefaultImage","addMissingImage","MISSING","addCanvas","removeImage","_resolveURL","addSound","audioTag","decoded","isDecoding","touchLocked","addText","addPhysicsData","addTilemap","mapData","addBinary","binaryData","addBitmapFont","atlasData","atlasType","LoaderParser","jsonBitmapFont","xmlBitmapFont","addJSON","addXML","addVideo","isBlob","addShader","addSpriteSheet","addTextureAtlas","TEXTURE_ATLAS_XML_STARLING","TEXTURE_ATLAS_JSON_PYXEL","reloadSound","getSound","reloadSoundComplete","updateSound","decodedSound","isSoundDecoded","isSoundReady","checkKey","checkURL","checkCanvasKey","checkTextureKey","checkSoundKey","checkTextKey","checkPhysicsKey","checkTilemapKey","checkBinaryKey","checkBitmapDataKey","checkBitmapFontKey","checkJSONKey","checkXMLKey","checkVideoKey","checkShaderKey","checkRenderTextureKey","full","getTextureFrame","getSoundData","getText","getPhysicsData","fixtureKey","fixtures","fixture","getTilemapData","getBinary","getBitmapData","getJSON","getXML","getVideo","getShader","getRenderTexture","getBaseTexture","getFrameCount","getFrameByIndex","getURL","getKeys","removeCanvas","destroyBaseTexture","removeSound","removeText","removePhysics","removeTilemap","removeBinary","removeBitmapData","removeBitmapFont","removeJSON","removeXML","removeVideo","removeShader","removeRenderTexture","removeSpriteSheet","removeTextureAtlas","atlas","baseURL","isLoading","preloadSprite","crossOrigin","headers","onLoadStart","onLoadComplete","onPackComplete","onFileStart","onFileComplete","onFileError","useXDomainRequest","_warnedAboutXDomainRequest","enableParallel","maxParallelDownloads","_withSyncPointDepth","_fileList","_flightQueue","_processingHead","_fileLoadStarted","_totalPackCount","_totalFileCount","_loadedPackCount","_loadedFileCount","TEXTURE_ATLAS_JSON_ARRAY","TEXTURE_ATLAS_JSON_HASH","PHYSICS_LIME_CORONA_JSON","PHYSICS_PHASER_JSON","setPreloadSprite","checkKeyExists","getAssetIndex","bestFound","loaded","loading","getAsset","fileIndex","addToFileList","overwrite","extension","syncPoint","currentFile","replaceInFileList","pack","images","urls","script","spritesheet","autoDecode","noAudio","jsonURL","jsonData","audiosprite","loadEvent","asBlob","CSV","TILED_JSON","LIME_CORONA_JSON","textureURL","atlasURL","parseXml","atlasJSONArray","atlasJSONHash","atlasXML","withSyncPoint","addSyncPoint","asset","removeFile","updateProgress","processLoadQueue","finishedLoading","requestUrl","requestObject","progress","syncblock","inflightLimit","processPack","loadFile","abnormal","asyncComplete","errorMessage","packData","transformUrl","xhrLoad","fileComplete","loadImageTag","getAudioURL","usingWebAudio","usingAudioTag","loadAudioTag","fileError","getVideoURL","loadVideoTag","jsonLoadComplete","xmlLoadComplete","csvLoadComplete","onload","onerror","controls","autoplay","videoLoadEvent","canplay","Audio","playThroughEvent","XDomainRequest","xhrLoadWithXDR","xhr","XMLHttpRequest","open","responseType","setRequestHeader","message","send","timeout","ontimeout","onprogress","videoType","uri","lastIndexOf","audioType","reason","loadNext","responseText","response","decode","language","defer","head","contentType","domparser","DOMParser","parseFromString","ActiveXObject","async","loadXML","totalLoadedFiles","totalLoadedPacks","progressFloat","info","common","getAttribute","letters","kernings","second","finalizeBitmapFont","_face","_lineHeight","_id","_xoffset","_yoffset","_xadvance","_second","_first","_amount","bitmapFontData","autoplayKey","sounds","spritemap","addMarker","connectToMaster","markers","totalDuration","currentTime","durationMS","stopTime","pausedPosition","pausedTime","currentMarker","fadeTween","pendingPlayback","override","allowMultiple","externalNode","masterGainNode","gainNode","_sound","masterGain","createGain","createGainNode","gain","soundHasUnlocked","onDecoded","onPlay","onStop","onMute","onMarkerComplete","_volume","_buffer","_muted","_tempMarker","_tempPosition","_tempVolume","_tempPause","_muteVolume","_tempLoop","_onDecodedEventDispatched","removeMarker","onEndedHandler","onended","isDecoded","loopFull","forceRestart","noteOff","createBufferSource","noteGrainOn","muted","mute","prevMarker","fadeIn","fadeTo","fadeOut","fadeComplete","updateGlobalVolume","globalVolume","onSoundDecode","onVolumeChange","onUnMute","channels","_codeMuted","_unlockSource","_sounds","_watchList","_watching","_watchCallback","_watchContext","disableAudio","disableWebAudio","audioContext","fakeiOSTouchLock","setTouchLock","unlock","noteOn","stopAll","soundData","decodeAudioData","setDecodedCallback","files","playbackState","PLAYING_STATE","FINISHED_STATE","removeByKey","close","dom","minWidth","minHeight","maxHeight","forceLandscape","forcePortrait","incorrectOrientation","_pageAlignHorizontally","_pageAlignVertically","onOrientationChange","enterIncorrectOrientation","leaveIncorrectOrientation","fullScreenTarget","_createdFullScreenTarget","onFullScreenInit","onFullScreenChange","onFullScreenError","screenOrientation","getScreenOrientation","scaleFactorInversed","aspectRatio","sourceAspectRatio","windowConstraints","compatibility","supportsFullScreen","orientationFallback","noMargins","scrollTo","forceMinimumDocumentHeight","canExpandParent","clickTrampoline","_scaleMode","NO_SCALE","_fullScreenScaleMode","parentIsWindow","parentScaleFactor","trackParentInterval","onSizeChange","onResize","onResizeContext","_pendingScaleMode","_fullScreenRestore","_gameSize","_userScaleFactor","_userScaleTrim","_lastUpdate","_updateThrottle","_updateThrottleReset","_parentBounds","_tempBounds","_lastReportedCanvasSize","_lastReportedGameSize","_booted","setupScale","EXACT_FIT","SHOW_ALL","RESIZE","USER_SCALE","compat","_orientationChange","orientationChange","_windowResize","windowResize","_fullScreenChange","fullScreenChange","_fullScreenError","fullScreenError","_gameResumed","setGameSize","FlexGrid","fullScreenScaleMode","getParentBounds","visualBounds","updateDimensions","queueUpdate","currentScaleMode","setUserScale","hScale","vScale","hTrim","vTrim","setResizeCallback","signalSizeChange","setMinMax","prevThrottle","prevWidth","prevHeight","boundsChanged","orientationChanged","updateOrientationState","updateLayout","throttle","updateScalingAndBounds","forceOrientation","classifyOrientation","orientation","previousOrientation","previouslyIncorrect","isLandscape","isPortrait","changed","correctnessChanged","scrollTop","reflowGame","setMaximum","setExactFit","isFullScreen","boundingParent","setShowAll","resetCanvas","reflowCanvas","layoutBounds","clientRect","getBoundingClientRect","parentRect","offsetParent","wc","windowBounds","alignCanvas","parentBounds","canvasBounds","currentEdge","targetEdge","marginLeft","marginRight","marginTop","marginBottom","pageAlignHorizontally","pageAlignVertically","cssWidth","cssHeight","expanding","multiplier","createFullScreenTarget","fsTarget","background","startFullScreen","allowTrampoline","cleanupCreatedTarget","initData","targetElement","ALLOW_KEYBOARD_INPUT","stopFullScreen","prepScreenMode","enteringFullscreen","createdTarget","scaleSprite","letterBox","scaleX1","scaleY1","scaleX2","scaleY2","scaleOnWidth","bmd","columnWidth","renderShadow","currentAlpha","scaleManager","currentColor","soundInfo","cameraInfo","hideIfUp","downColor","upColor","worldX","worldY","spriteInputInfo","justDown","justUp","inputInfo","spriteBounds","filled","rectangle","ropeSegments","self","segment","spriteInfo","spriteCoords","lineInfo","geom","forceType","quadTree","quadtree","Body","NINJA","Ninja","BOX2D","Box2D","renderBody","bodyInfo","renderBodyInfo","box2d","box2dWorld","renderDebugDraw","box2dBody","displayList","box","scrollY","scrollLeft","scrollX","clientTop","clientLeft","cushion","calibrate","coords","getAspectRatio","inLayoutViewport","primaryFallback","screen","mozOrientation","msOrientation","matchMedia","documentBounds","pageXOffset","pageYOffset","treatAsDesktop","clientWidth","clientHeight","offsetWidth","scrollWidth","offsetHeight","scrollHeight","getByKey","randomIndex","removeRandomItem","shuffle","transposeMatrix","sourceRowCount","sourceColCount","rotateMatrix","findClosest","arr","NaN","low","high","rotateRight","rotateLeft","numberArray","numberArrayStep","LinkedList","entity","palettes","0","1","2","3","4","5","6","7","8","9","PALETTE_ARNE","PALETTE_JMP","PALETTE_CGA","PALETTE_C64","PALETTE_JAPANESE_MACHINE","pixelWidth","pixelHeight","palette","boundsCustom","boundsFull","boundsNone","positionCustom","positionFluid","positionFull","positionNone","scaleCustom","scaleFluid","scaleFull","scaleNone","customWidth","customHeight","customOffsetX","customOffsetY","ratioH","ratioV","layers","createCustomLayer","layer","FlexLayer","createFluidLayer","createFullLayer","createFixedLayer","persist","fitSprite","topLeft","topMiddle","topRight","bottomLeft","bottomMiddle","bottomRight","RGBtoHSL","RGBtoHSV","fromRGBA","toRGBA","toABGR","hueToColor","HSVtoRGB","color32","getColor","getColor32","RGBtoString","componentToHex","hexToRGB","hexToColor","webToColor","web","tempColor","getRGB","HSVColorWheel","HSLColorWheel","interpolateColor","color1","color2","steps","currentStep","src1","src2","interpolateColorWithRGB","or","og","ob","interpolateRGB","getRandomColor","getWebRGB","getAlpha","getAlphaFloat","getRed","getGreen","getBlue","blendNormal","blendAverage","blendSubtract","blendNegation","blendLinearDodge","blendLinearBurn","blendLinearLight","blendVividLight","blendPinLight","blendHardMix","blendReflect","blendGlow","blendPhoenix","arcade","ninja","chipmunk","matter","CHIPMUNK","MATTERJS","P2","Matter","startSystem","system","enableAABB","emitters","ID","onAccess","onError","onTimeout","videoStream","isStreaming","retryLimit","retry","retryInterval","_retryID","_pending","_autoplay","_endCallback","_playCallback","_video","createVideoFromBlob","videoWidth","videoHeight","createVideoFromURL","snapshot","connectToMediaStream","stream","startMediaStream","captureAudio","removeVideoElement","setAttribute","getUserMediaTimeout","getUserMediaSuccess","getUserMediaError","mozSrcObject","createObjectURL","onloadeddata","checkStream","checkVideoProgress","change","playbackRate","setPause","setResume","playHandler","getTracks","track","playing","ended","changeSource","grab","hasChildNodes","firstChild","removeAttribute"],"mappings":"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","file":"phaser-no-physics.min.js"} \ No newline at end of file diff --git a/build/custom/phaser-no-physics.min.js b/build/custom/phaser-no-physics.min.js index 8437e8743..14587cdbe 100644 --- a/build/custom/phaser-no-physics.min.js +++ b/build/custom/phaser-no-physics.min.js @@ -1,20 +1,20 @@ -/* Phaser v2.5.0 - http://phaser.io - @photonstorm - (c) 2016 Photon Storm Ltd. */ +/* Phaser v2.5.1 - http://phaser.io - @photonstorm - (c) 2016 Photon Storm Ltd. */ -(function(){var a=this,b=b||{};return b.game=null,b.WEBGL_RENDERER=0,b.CANVAS_RENDERER=1,b.VERSION="v2.2.9",b._UID=0,"undefined"!=typeof Float32Array?(b.Float32Array=Float32Array,b.Uint16Array=Uint16Array,b.Uint32Array=Uint32Array,b.ArrayBuffer=ArrayBuffer):(b.Float32Array=Array,b.Uint16Array=Array),b.PI_2=2*Math.PI,b.RAD_TO_DEG=180/Math.PI,b.DEG_TO_RAD=Math.PI/180,b.RETINA_PREFIX="@2x",b.DisplayObject=function(){this.position=new b.Point(0,0),this.scale=new b.Point(1,1),this.pivot=new b.Point(0,0),this.rotation=0,this.alpha=1,this.visible=!0,this.hitArea=null,this.renderable=!1,this.parent=null,this.stage=null,this.worldAlpha=1,this.worldTransform=new b.Matrix,this.worldPosition=new b.Point(0,0),this.worldScale=new b.Point(1,1),this.worldRotation=0,this._sr=0,this._cr=1,this.filterArea=null,this._bounds=new b.Rectangle(0,0,1,1),this._currentBounds=null,this._mask=null,this._cacheAsBitmap=!1,this._cacheIsDirty=!1},b.DisplayObject.prototype.constructor=b.DisplayObject,b.DisplayObject.prototype.destroy=function(){if(this.children){for(var a=this.children.length;a--;)this.children[a].destroy();this.children=[]}this.hitArea=null,this.parent=null,this.stage=null,this.worldTransform=null,this.filterArea=null,this._bounds=null,this._currentBounds=null,this._mask=null,this.renderable=!1,this._destroyCachedSprite()},Object.defineProperty(b.DisplayObject.prototype,"worldVisible",{get:function(){var a=this;do{if(!a.visible)return!1;a=a.parent}while(a);return!0}}),Object.defineProperty(b.DisplayObject.prototype,"mask",{get:function(){return this._mask},set:function(a){this._mask&&(this._mask.isMask=!1),this._mask=a,this._mask&&(this._mask.isMask=!0)}}),Object.defineProperty(b.DisplayObject.prototype,"filters",{get:function(){return this._filters},set:function(a){if(a){for(var c=[],d=0;d=0&&b<=this.children.length)return a.parent&&a.parent.removeChild(a),a.parent=this,this.children.splice(b,0,a),this.stage&&a.setStageReference(this.stage),a;throw new Error(a+"addChildAt: The index "+b+" supplied is out of bounds "+this.children.length)},b.DisplayObjectContainer.prototype.swapChildren=function(a,b){if(a!==b){var c=this.getChildIndex(a),d=this.getChildIndex(b);if(0>c||0>d)throw new Error("swapChildren: Both the supplied DisplayObjects must be a child of the caller.");this.children[c]=b,this.children[d]=a}},b.DisplayObjectContainer.prototype.getChildIndex=function(a){var b=this.children.indexOf(a);if(-1===b)throw new Error("The supplied DisplayObject must be a child of the caller");return b},b.DisplayObjectContainer.prototype.setChildIndex=function(a,b){if(0>b||b>=this.children.length)throw new Error("The supplied index is out of bounds");var c=this.getChildIndex(a);this.children.splice(c,1),this.children.splice(b,0,a)},b.DisplayObjectContainer.prototype.getChildAt=function(a){if(0>a||a>=this.children.length)throw new Error("getChildAt: Supplied index "+a+" does not exist in the child list, or the supplied DisplayObject must be a child of the caller");return this.children[a]},b.DisplayObjectContainer.prototype.removeChild=function(a){var b=this.children.indexOf(a);if(-1!==b)return this.removeChildAt(b)},b.DisplayObjectContainer.prototype.removeChildAt=function(a){var b=this.getChildAt(a);return this.stage&&b.removeStageReference(),b.parent=void 0,this.children.splice(a,1),b},b.DisplayObjectContainer.prototype.removeChildren=function(a,b){var c=a||0,d="number"==typeof b?b:this.children.length,e=d-c;if(e>0&&d>=e){for(var f=this.children.splice(c,e),g=0;gc?g:c,h=h>d?h:d)}if(!i)return b.EmptyRectangle;var l=this._bounds;return l.x=e,l.y=f,l.width=g-e,l.height=h-f,l},b.DisplayObjectContainer.prototype.getLocalBounds=function(){var a=this.worldTransform;this.worldTransform=b.identityMatrix;for(var c=0;ci){i*=-1;var s=d;d=-e,e=-s}if(0>l){l*=-1;var s=f;f=-g,g=-s}q=i*e+m,o=i*d+m,r=l*g+n,p=l*f+n}else{var t=i*e+k*g+m,u=l*g+j*e+n,v=i*d+k*g+m,w=l*g+j*d+n,x=i*d+k*f+m,y=l*f+j*d+n,z=i*e+k*f+m,A=l*f+j*e+n;q=q>t?t:q,q=q>v?v:q,q=q>x?x:q,q=q>z?z:q,r=r>u?u:r,r=r>w?w:r,r=r>y?y:r,r=r>A?A:r,o=t>o?t:o,o=v>o?v:o,o=x>o?x:o,o=z>o?z:o,p=u>p?u:p,p=w>p?w:p,p=y>p?y:p,p=A>p?A:p}var B=this._bounds;return B.x=q,B.width=o-q,B.y=r,B.height=p-r,this._currentBounds=B,B},b.Sprite.prototype._renderWebGL=function(a,b){if(this.visible&&!(this.alpha<=0)&&this.renderable){var c=this.worldTransform;if(b&&(c=b),this._mask||this._filters){var d=a.spriteBatch;this._filters&&(d.flush(),a.filterManager.pushFilter(this._filterBlock)),this._mask&&(d.stop(),a.maskManager.pushMask(this.mask,a),d.start()),d.render(this);for(var e=0;e>16&255)/255,(a>>8&255)/255,(255&a)/255]},b.rgb2hex=function(a){return(255*a[0]<<16)+(255*a[1]<<8)+255*a[2]},b.canUseNewCanvasBlendModes=function(){if(void 0===document)return!1;var a="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAQAAAABAQMAAADD8p2OAAAAA1BMVEX/",c="AAAACklEQVQI12NgAAAAAgAB4iG8MwAAAABJRU5ErkJggg==",d=new Image;d.src=a+"AP804Oa6"+c;var e=new Image;e.src=a+"/wCKxvRF"+c;var f=b.CanvasPool.create(this,6,1),g=f.getContext("2d");if(g.globalCompositeOperation="multiply",g.drawImage(d,0,0),g.drawImage(e,2,0),!g.getImageData(2,0,1,1))return!1;var h=g.getImageData(2,0,1,1).data;return b.CanvasPool.remove(this),255===h[0]&&0===h[1]&&0===h[2]},b.getNextPowerOfTwo=function(a){if(a>0&&0===(a&a-1))return a;for(var b=1;a>b;)b<<=1;return b},b.isPowerOfTwo=function(a,b){return a>0&&0===(a&a-1)&&b>0&&0===(b&b-1)},b.CanvasPool={create:function(a,c,d){var e,f=b.CanvasPool.getFirst();if(-1===f){var g={parent:a,canvas:document.createElement("canvas")};b.CanvasPool.pool.push(g),e=g.canvas}else b.CanvasPool.pool[f].parent=a,e=b.CanvasPool.pool[f].canvas;return void 0!==c&&(e.width=c,e.height=d),e},getFirst:function(){for(var a=b.CanvasPool.pool,c=0;cd;d+=6,e+=4)this.indices[d+0]=e+0,this.indices[d+1]=e+1,this.indices[d+2]=e+2,this.indices[d+3]=e+0,this.indices[d+4]=e+2,this.indices[d+5]=e+3;this.drawing=!1,this.currentBatchSize=0,this.currentBaseTexture=null,this.dirty=!0,this.textures=[],this.blendModes=[],this.shaders=[],this.sprites=[],this.defaultShader=new b.AbstractFilter(["precision lowp float;","varying vec2 vTextureCoord;","varying vec4 vColor;","uniform sampler2D uSampler;","void main(void) {"," gl_FragColor = texture2D(uSampler, vTextureCoord) * vColor ;","}"])},b.WebGLSpriteBatch.prototype.setContext=function(a){this.gl=a,this.vertexBuffer=a.createBuffer(),this.indexBuffer=a.createBuffer(),a.bindBuffer(a.ELEMENT_ARRAY_BUFFER,this.indexBuffer),a.bufferData(a.ELEMENT_ARRAY_BUFFER,this.indices,a.STATIC_DRAW),a.bindBuffer(a.ARRAY_BUFFER,this.vertexBuffer),a.bufferData(a.ARRAY_BUFFER,this.vertices,a.DYNAMIC_DRAW),this.currentBlendMode=99999;var c=new b.PixiShader(a);c.fragmentSrc=this.defaultShader.fragmentSrc,c.uniforms={},c.init(),this.defaultShader.shaders[a.id]=c},b.WebGLSpriteBatch.prototype.begin=function(a){this.renderSession=a,this.shader=this.renderSession.shaderManager.defaultShader,this.start()},b.WebGLSpriteBatch.prototype.end=function(){this.flush()},b.WebGLSpriteBatch.prototype.render=function(a,b){var c=a.texture,d=a.worldTransform;b&&(d=b),this.currentBatchSize>=this.size&&(this.flush(),this.currentBaseTexture=c.baseTexture);var e=c._uvs;if(e){var f,g,h,i,j=a.anchor.x,k=a.anchor.y;if(c.trim){var l=c.trim;g=l.x-j*l.width,f=g+c.crop.width,i=l.y-k*l.height,h=i+c.crop.height}else f=c.frame.width*(1-j),g=c.frame.width*-j,h=c.frame.height*(1-k),i=c.frame.height*-k;var m=4*this.currentBatchSize*this.vertSize,n=c.baseTexture.resolution,o=d.a/n,p=d.b/n,q=d.c/n,r=d.d/n,s=d.tx,t=d.ty,u=this.colors,v=this.positions;this.renderSession.roundPixels?(v[m]=o*g+q*i+s|0,v[m+1]=r*i+p*g+t|0,v[m+5]=o*f+q*i+s|0,v[m+6]=r*i+p*f+t|0,v[m+10]=o*f+q*h+s|0,v[m+11]=r*h+p*f+t|0,v[m+15]=o*g+q*h+s|0,v[m+16]=r*h+p*g+t|0):(v[m]=o*g+q*i+s,v[m+1]=r*i+p*g+t,v[m+5]=o*f+q*i+s,v[m+6]=r*i+p*f+t,v[m+10]=o*f+q*h+s,v[m+11]=r*h+p*f+t,v[m+15]=o*g+q*h+s,v[m+16]=r*h+p*g+t),v[m+2]=e.x0,v[m+3]=e.y0,v[m+7]=e.x1,v[m+8]=e.y1,v[m+12]=e.x2,v[m+13]=e.y2,v[m+17]=e.x3,v[m+18]=e.y3;var w=a.tint;u[m+4]=u[m+9]=u[m+14]=u[m+19]=(w>>16)+(65280&w)+((255&w)<<16)+(255*a.worldAlpha<<24),this.sprites[this.currentBatchSize++]=a}},b.WebGLSpriteBatch.prototype.renderTilingSprite=function(a){var c=a.tilingTexture;this.currentBatchSize>=this.size&&(this.flush(),this.currentBaseTexture=c.baseTexture),a._uvs||(a._uvs=new b.TextureUvs);var d=a._uvs,e=c.baseTexture.width,f=c.baseTexture.height;a.tilePosition.x%=e*a.tileScaleOffset.x,a.tilePosition.y%=f*a.tileScaleOffset.y;var g=a.tilePosition.x/(e*a.tileScaleOffset.x),h=a.tilePosition.y/(f*a.tileScaleOffset.y),i=a.width/e/(a.tileScale.x*a.tileScaleOffset.x),j=a.height/f/(a.tileScale.y*a.tileScaleOffset.y);d.x0=0-g,d.y0=0-h,d.x1=1*i-g,d.y1=0-h,d.x2=1*i-g,d.y2=1*j-h,d.x3=0-g,d.y3=1*j-h;var k=a.tint,l=(k>>16)+(65280&k)+((255&k)<<16)+(255*a.worldAlpha<<24),m=this.positions,n=this.colors,o=a.width,p=a.height,q=a.anchor.x,r=a.anchor.y,s=o*(1-q),t=o*-q,u=p*(1-r),v=p*-r,w=4*this.currentBatchSize*this.vertSize,x=c.baseTexture.resolution,y=a.worldTransform,z=y.a/x,A=y.b/x,B=y.c/x,C=y.d/x,D=y.tx,E=y.ty;m[w++]=z*t+B*v+D,m[w++]=C*v+A*t+E,m[w++]=d.x0,m[w++]=d.y0,n[w++]=l,m[w++]=z*s+B*v+D,m[w++]=C*v+A*s+E,m[w++]=d.x1,m[w++]=d.y1,n[w++]=l,m[w++]=z*s+B*u+D,m[w++]=C*u+A*s+E,m[w++]=d.x2,m[w++]=d.y2,n[w++]=l,m[w++]=z*t+B*u+D,m[w++]=C*u+A*t+E,m[w++]=d.x3,m[w++]=d.y3,n[w++]=l,this.sprites[this.currentBatchSize++]=a},b.WebGLSpriteBatch.prototype.flush=function(){if(0!==this.currentBatchSize){var a,c=this.gl;if(this.dirty){this.dirty=!1,c.activeTexture(c.TEXTURE0),c.bindBuffer(c.ARRAY_BUFFER,this.vertexBuffer),c.bindBuffer(c.ELEMENT_ARRAY_BUFFER,this.indexBuffer),a=this.defaultShader.shaders[c.id];var d=4*this.vertSize;c.vertexAttribPointer(a.aVertexPosition,2,c.FLOAT,!1,d,0),c.vertexAttribPointer(a.aTextureCoord,2,c.FLOAT,!1,d,8),c.vertexAttribPointer(a.colorAttribute,4,c.UNSIGNED_BYTE,!0,d,16)}if(this.currentBatchSize>.5*this.size)c.bufferSubData(c.ARRAY_BUFFER,0,this.vertices);else{var e=this.positions.subarray(0,4*this.currentBatchSize*this.vertSize);c.bufferSubData(c.ARRAY_BUFFER,0,e)}for(var f,g,h,i,j=0,k=0,l=null,m=this.renderSession.blendModeManager.currentBlendMode,n=null,o=!1,p=!1,q=0,r=this.currentBatchSize;r>q;q++){i=this.sprites[q],f=i.tilingTexture?i.tilingTexture.baseTexture:i.texture.baseTexture,g=i.blendMode,h=i.shader||this.defaultShader,o=m!==g,p=n!==h;var s=f.skipRender;if(s&&i.children.length>0&&(s=!1),(l!==f&&!s||o||p)&&(this.renderBatch(l,j,k),k=q,j=0,l=f,o&&(m=g,this.renderSession.blendModeManager.setBlendMode(m)),p)){n=h,a=n.shaders[c.id],a||(a=new b.PixiShader(c),a.fragmentSrc=n.fragmentSrc,a.uniforms=n.uniforms,a.init(),n.shaders[c.id]=a),this.renderSession.shaderManager.setShader(a),a.dirty&&a.syncUniforms();var t=this.renderSession.projection;c.uniform2f(a.projectionVector,t.x,t.y);var u=this.renderSession.offset;c.uniform2f(a.offsetVector,u.x,u.y)}j++}this.renderBatch(l,j,k),this.currentBatchSize=0}},b.WebGLSpriteBatch.prototype.renderBatch=function(a,b,c){if(0!==b){var d=this.gl;if(a._dirty[d.id]){if(!this.renderSession.renderer.updateTexture(a))return}else d.bindTexture(d.TEXTURE_2D,a._glTextures[d.id]);d.drawElements(d.TRIANGLES,6*b,d.UNSIGNED_SHORT,6*c*2),this.renderSession.drawCount++}},b.WebGLSpriteBatch.prototype.stop=function(){this.flush(),this.dirty=!0},b.WebGLSpriteBatch.prototype.start=function(){this.dirty=!0},b.WebGLSpriteBatch.prototype.destroy=function(){this.vertices=null,this.indices=null,this.gl.deleteBuffer(this.vertexBuffer),this.gl.deleteBuffer(this.indexBuffer),this.currentBaseTexture=null,this.gl=null},b.WebGLFastSpriteBatch=function(a){this.vertSize=10,this.maxSize=6e3,this.size=this.maxSize;var c=4*this.size*this.vertSize,d=6*this.maxSize;this.vertices=new b.Float32Array(c),this.indices=new b.Uint16Array(d),this.vertexBuffer=null,this.indexBuffer=null,this.lastIndexCount=0;for(var e=0,f=0;d>e;e+=6,f+=4)this.indices[e+0]=f+0,this.indices[e+1]=f+1,this.indices[e+2]=f+2,this.indices[e+3]=f+0,this.indices[e+4]=f+2,this.indices[e+5]=f+3;this.drawing=!1,this.currentBatchSize=0,this.currentBaseTexture=null,this.currentBlendMode=0,this.renderSession=null,this.shader=null,this.matrix=null,this.setContext(a)},b.WebGLFastSpriteBatch.prototype.constructor=b.WebGLFastSpriteBatch,b.WebGLFastSpriteBatch.prototype.setContext=function(a){this.gl=a,this.vertexBuffer=a.createBuffer(),this.indexBuffer=a.createBuffer(),a.bindBuffer(a.ELEMENT_ARRAY_BUFFER,this.indexBuffer),a.bufferData(a.ELEMENT_ARRAY_BUFFER,this.indices,a.STATIC_DRAW),a.bindBuffer(a.ARRAY_BUFFER,this.vertexBuffer),a.bufferData(a.ARRAY_BUFFER,this.vertices,a.DYNAMIC_DRAW)},b.WebGLFastSpriteBatch.prototype.begin=function(a,b){this.renderSession=b,this.shader=this.renderSession.shaderManager.fastShader,this.matrix=a.worldTransform.toArray(!0),this.start()},b.WebGLFastSpriteBatch.prototype.end=function(){this.flush()},b.WebGLFastSpriteBatch.prototype.render=function(a){var b=a.children,c=b[0];if(c.texture._uvs){this.currentBaseTexture=c.texture.baseTexture,c.blendMode!==this.renderSession.blendModeManager.currentBlendMode&&(this.flush(),this.renderSession.blendModeManager.setBlendMode(c.blendMode));for(var d=0,e=b.length;e>d;d++)this.renderSprite(b[d]);this.flush()}},b.WebGLFastSpriteBatch.prototype.renderSprite=function(a){if(a.visible&&(a.texture.baseTexture===this.currentBaseTexture||a.texture.baseTexture.skipRender||(this.flush(),this.currentBaseTexture=a.texture.baseTexture,a.texture._uvs))){var b,c,d,e,f,g,h,i,j=this.vertices;if(b=a.texture._uvs,c=a.texture.frame.width,d=a.texture.frame.height,a.texture.trim){var k=a.texture.trim;f=k.x-a.anchor.x*k.width,e=f+a.texture.crop.width,h=k.y-a.anchor.y*k.height,g=h+a.texture.crop.height}else e=a.texture.frame.width*(1-a.anchor.x),f=a.texture.frame.width*-a.anchor.x,g=a.texture.frame.height*(1-a.anchor.y),h=a.texture.frame.height*-a.anchor.y;i=4*this.currentBatchSize*this.vertSize,j[i++]=f,j[i++]=h,j[i++]=a.position.x,j[i++]=a.position.y,j[i++]=a.scale.x,j[i++]=a.scale.y,j[i++]=a.rotation,j[i++]=b.x0,j[i++]=b.y1,j[i++]=a.alpha,j[i++]=e,j[i++]=h,j[i++]=a.position.x,j[i++]=a.position.y,j[i++]=a.scale.x,j[i++]=a.scale.y,j[i++]=a.rotation,j[i++]=b.x1,j[i++]=b.y1,j[i++]=a.alpha,j[i++]=e,j[i++]=g,j[i++]=a.position.x,j[i++]=a.position.y,j[i++]=a.scale.x,j[i++]=a.scale.y,j[i++]=a.rotation,j[i++]=b.x2,j[i++]=b.y2,j[i++]=a.alpha,j[i++]=f,j[i++]=g,j[i++]=a.position.x,j[i++]=a.position.y,j[i++]=a.scale.x,j[i++]=a.scale.y,j[i++]=a.rotation,j[i++]=b.x3,j[i++]=b.y3,j[i++]=a.alpha,this.currentBatchSize++,this.currentBatchSize>=this.size&&this.flush()}},b.WebGLFastSpriteBatch.prototype.flush=function(){if(0!==this.currentBatchSize){var a=this.gl;if(this.currentBaseTexture._glTextures[a.id]||this.renderSession.renderer.updateTexture(this.currentBaseTexture,a),a.bindTexture(a.TEXTURE_2D,this.currentBaseTexture._glTextures[a.id]),this.currentBatchSize>.5*this.size)a.bufferSubData(a.ARRAY_BUFFER,0,this.vertices);else{var b=this.vertices.subarray(0,4*this.currentBatchSize*this.vertSize);a.bufferSubData(a.ARRAY_BUFFER,0,b)}a.drawElements(a.TRIANGLES,6*this.currentBatchSize,a.UNSIGNED_SHORT,0),this.currentBatchSize=0,this.renderSession.drawCount++}},b.WebGLFastSpriteBatch.prototype.stop=function(){this.flush()},b.WebGLFastSpriteBatch.prototype.start=function(){var a=this.gl;a.activeTexture(a.TEXTURE0),a.bindBuffer(a.ARRAY_BUFFER,this.vertexBuffer),a.bindBuffer(a.ELEMENT_ARRAY_BUFFER,this.indexBuffer);var b=this.renderSession.projection;a.uniform2f(this.shader.projectionVector,b.x,b.y),a.uniformMatrix3fv(this.shader.uMatrix,!1,this.matrix);var c=4*this.vertSize;a.vertexAttribPointer(this.shader.aVertexPosition,2,a.FLOAT,!1,c,0),a.vertexAttribPointer(this.shader.aPositionCoord,2,a.FLOAT,!1,c,8),a.vertexAttribPointer(this.shader.aScale,2,a.FLOAT,!1,c,16),a.vertexAttribPointer(this.shader.aRotation,1,a.FLOAT,!1,c,24),a.vertexAttribPointer(this.shader.aTextureCoord,2,a.FLOAT,!1,c,28),a.vertexAttribPointer(this.shader.colorAttribute,1,a.FLOAT,!1,c,36)},b.WebGLFilterManager=function(){this.filterStack=[],this.offsetX=0,this.offsetY=0},b.WebGLFilterManager.prototype.constructor=b.WebGLFilterManager,b.WebGLFilterManager.prototype.setContext=function(a){this.gl=a,this.texturePool=[],this.initShaderBuffers()},b.WebGLFilterManager.prototype.begin=function(a,b){this.renderSession=a,this.defaultShader=a.shaderManager.defaultShader;var c=this.renderSession.projection;this.width=2*c.x,this.height=2*-c.y,this.buffer=b},b.WebGLFilterManager.prototype.pushFilter=function(a){var c=this.gl,d=this.renderSession.projection,e=this.renderSession.offset;a._filterArea=a.target.filterArea||a.target.getBounds(),a._previous_stencil_mgr=this.renderSession.stencilManager,this.renderSession.stencilManager=new b.WebGLStencilManager,this.renderSession.stencilManager.setContext(c),c.disable(c.STENCIL_TEST),this.filterStack.push(a);var f=a.filterPasses[0];this.offsetX+=a._filterArea.x,this.offsetY+=a._filterArea.y;var g=this.texturePool.pop();g?g.resize(this.width*this.renderSession.resolution,this.height*this.renderSession.resolution):g=new b.FilterTexture(this.gl,this.width*this.renderSession.resolution,this.height*this.renderSession.resolution),c.bindTexture(c.TEXTURE_2D,g.texture);var h=a._filterArea,i=f.padding;h.x-=i,h.y-=i,h.width+=2*i,h.height+=2*i,h.x<0&&(h.x=0),h.width>this.width&&(h.width=this.width),h.y<0&&(h.y=0),h.height>this.height&&(h.height=this.height),c.bindFramebuffer(c.FRAMEBUFFER,g.frameBuffer),c.viewport(0,0,h.width*this.renderSession.resolution,h.height*this.renderSession.resolution),d.x=h.width/2,d.y=-h.height/2,e.x=-h.x,e.y=-h.y,c.colorMask(!0,!0,!0,!0),c.clearColor(0,0,0,0),c.clear(c.COLOR_BUFFER_BIT),a._glFilterTexture=g},b.WebGLFilterManager.prototype.popFilter=function(){var a=this.gl,c=this.filterStack.pop(),d=c._filterArea,e=c._glFilterTexture,f=this.renderSession.projection,g=this.renderSession.offset;if(c.filterPasses.length>1){a.viewport(0,0,d.width*this.renderSession.resolution,d.height*this.renderSession.resolution),a.bindBuffer(a.ARRAY_BUFFER,this.vertexBuffer),this.vertexArray[0]=0,this.vertexArray[1]=d.height,this.vertexArray[2]=d.width,this.vertexArray[3]=d.height,this.vertexArray[4]=0,this.vertexArray[5]=0,this.vertexArray[6]=d.width,this.vertexArray[7]=0,a.bufferSubData(a.ARRAY_BUFFER,0,this.vertexArray),a.bindBuffer(a.ARRAY_BUFFER,this.uvBuffer),this.uvArray[2]=d.width/this.width,this.uvArray[5]=d.height/this.height,this.uvArray[6]=d.width/this.width,this.uvArray[7]=d.height/this.height,a.bufferSubData(a.ARRAY_BUFFER,0,this.uvArray);var h=e,i=this.texturePool.pop();i||(i=new b.FilterTexture(this.gl,this.width*this.renderSession.resolution,this.height*this.renderSession.resolution)),i.resize(this.width*this.renderSession.resolution,this.height*this.renderSession.resolution),a.bindFramebuffer(a.FRAMEBUFFER,i.frameBuffer),a.clear(a.COLOR_BUFFER_BIT),a.disable(a.BLEND);for(var j=0;j0?a.enable(a.STENCIL_TEST):a.disable(a.STENCIL_TEST),this.applyFilterPass(m,d,n,o),this.texturePool.push(e),c._glFilterTexture=null},b.WebGLFilterManager.prototype.applyFilterPass=function(a,c,d,e){var f=this.gl,g=a.shaders[f.id];g||(g=new b.PixiShader(f),g.fragmentSrc=a.fragmentSrc,g.uniforms=a.uniforms,g.init(),a.shaders[f.id]=g),this.renderSession.shaderManager.setShader(g),f.uniform2f(g.projectionVector,d/2,-e/2),f.uniform2f(g.offsetVector,0,0),a.uniforms.dimensions&&(a.uniforms.dimensions.value[0]=this.width,a.uniforms.dimensions.value[1]=this.height,a.uniforms.dimensions.value[2]=this.vertexArray[0],a.uniforms.dimensions.value[3]=this.vertexArray[5]),g.syncUniforms(),f.bindBuffer(f.ARRAY_BUFFER,this.vertexBuffer),f.vertexAttribPointer(g.aVertexPosition,2,f.FLOAT,!1,0,0),f.bindBuffer(f.ARRAY_BUFFER,this.uvBuffer),f.vertexAttribPointer(g.aTextureCoord,2,f.FLOAT,!1,0,0),f.bindBuffer(f.ARRAY_BUFFER,this.colorBuffer),f.vertexAttribPointer(g.colorAttribute,2,f.FLOAT,!1,0,0),f.bindBuffer(f.ELEMENT_ARRAY_BUFFER,this.indexBuffer),f.drawElements(f.TRIANGLES,6,f.UNSIGNED_SHORT,0),this.renderSession.drawCount++},b.WebGLFilterManager.prototype.initShaderBuffers=function(){var a=this.gl;this.vertexBuffer=a.createBuffer(),this.uvBuffer=a.createBuffer(),this.colorBuffer=a.createBuffer(),this.indexBuffer=a.createBuffer(),this.vertexArray=new b.Float32Array([0,0,1,0,0,1,1,1]),a.bindBuffer(a.ARRAY_BUFFER,this.vertexBuffer),a.bufferData(a.ARRAY_BUFFER,this.vertexArray,a.STATIC_DRAW),this.uvArray=new b.Float32Array([0,0,1,0,0,1,1,1]),a.bindBuffer(a.ARRAY_BUFFER,this.uvBuffer),a.bufferData(a.ARRAY_BUFFER,this.uvArray,a.STATIC_DRAW),this.colorArray=new b.Float32Array([1,16777215,1,16777215,1,16777215,1,16777215]),a.bindBuffer(a.ARRAY_BUFFER,this.colorBuffer),a.bufferData(a.ARRAY_BUFFER,this.colorArray,a.STATIC_DRAW),a.bindBuffer(a.ELEMENT_ARRAY_BUFFER,this.indexBuffer),a.bufferData(a.ELEMENT_ARRAY_BUFFER,new Uint16Array([0,1,2,1,3,2]),a.STATIC_DRAW)},b.WebGLFilterManager.prototype.destroy=function(){var a=this.gl;this.filterStack=null,this.offsetX=0,this.offsetY=0;for(var b=0;b=0;a--){var c=this._glTextures[a],d=b.glContexts[a];d&&c&&d.deleteTexture(c)}this._glTextures.length=0,this.dirty()},b.BaseTexture.fromImage=function(a,c,d){var e=b.BaseTextureCache[a];if(void 0===c&&-1===a.indexOf("data:")&&(c=!0),!e){var f=new Image;c&&(f.crossOrigin=""),f.src=a,e=new b.BaseTexture(f,d),e.imageUrl=a,b.BaseTextureCache[a]=e,-1!==a.indexOf(b.RETINA_PREFIX+".")&&(e.resolution=2)}return e},b.BaseTexture.fromCanvas=function(a,c){a._pixiId||(a._pixiId="canvas_"+b.TextureCacheIdGenerator++),0===a.width&&(a.width=1),0===a.height&&(a.height=1);var d=b.BaseTextureCache[a._pixiId];return d||(d=new b.BaseTexture(a,c),b.BaseTextureCache[a._pixiId]=d),d},b.TextureCache={},b.FrameCache={},b.TextureSilentFail=!1,b.TextureCacheIdGenerator=0,b.Texture=function(a,c,d,e){this.noFrame=!1,c||(this.noFrame=!0,c=new b.Rectangle(0,0,1,1)),a instanceof b.Texture&&(a=a.baseTexture),this.baseTexture=a,this.frame=c,this.trim=e,this.valid=!1,this.isTiling=!1,this.requiresUpdate=!1,this.requiresReTint=!1,this._uvs=null,this.width=0,this.height=0,this.crop=d||new b.Rectangle(0,0,1,1),a.hasLoaded&&(this.noFrame&&(c=new b.Rectangle(0,0,a.width,a.height)),this.setFrame(c))},b.Texture.prototype.constructor=b.Texture,b.Texture.prototype.onBaseTextureLoaded=function(){var a=this.baseTexture;this.noFrame&&(this.frame=new b.Rectangle(0,0,a.width,a.height)),this.setFrame(this.frame)},b.Texture.prototype.destroy=function(a){a&&this.baseTexture.destroy(),this.valid=!1},b.Texture.prototype.setFrame=function(a){if(this.noFrame=!1,this.frame=a,this.width=a.width,this.height=a.height,this.crop.x=a.x,this.crop.y=a.y,this.crop.width=a.width,this.crop.height=a.height,!this.trim&&(a.x+a.width>this.baseTexture.width||a.y+a.height>this.baseTexture.height)){if(!b.TextureSilentFail)throw new Error("Texture Error: frame does not fit inside the base Texture dimensions "+this);return void(this.valid=!1)}this.valid=a&&a.width&&a.height&&this.baseTexture.source&&this.baseTexture.hasLoaded,this.trim&&(this.width=this.trim.width,this.height=this.trim.height,this.frame.width=this.trim.width,this.frame.height=this.trim.height),this.valid&&this._updateUvs()},b.Texture.prototype._updateUvs=function(){this._uvs||(this._uvs=new b.TextureUvs);var a=this.crop,c=this.baseTexture.width,d=this.baseTexture.height;this._uvs.x0=a.x/c,this._uvs.y0=a.y/d,this._uvs.x1=(a.x+a.width)/c,this._uvs.y1=a.y/d,this._uvs.x2=(a.x+a.width)/c,this._uvs.y2=(a.y+a.height)/d,this._uvs.x3=a.x/c,this._uvs.y3=(a.y+a.height)/d},b.Texture.fromImage=function(a,c,d){var e=b.TextureCache[a];return e||(e=new b.Texture(b.BaseTexture.fromImage(a,c,d)),b.TextureCache[a]=e),e},b.Texture.fromFrame=function(a){var c=b.TextureCache[a];if(!c)throw new Error('The frameId "'+a+'" does not exist in the texture cache ');return c},b.Texture.fromCanvas=function(a,c){var d=b.BaseTexture.fromCanvas(a,c);return new b.Texture(d)},b.Texture.addTextureToCache=function(a,c){b.TextureCache[c]=a},b.Texture.removeTextureFromCache=function(a){var c=b.TextureCache[a];return delete b.TextureCache[a],delete b.BaseTextureCache[a],c},b.TextureUvs=function(){this.x0=0,this.y0=0,this.x1=0,this.y1=0,this.x2=0,this.y2=0,this.x3=0,this.y3=0},b.RenderTexture=function(a,c,d,e,f){if(this.width=a||100,this.height=c||100,this.resolution=f||1,this.frame=new b.Rectangle(0,0,this.width*this.resolution,this.height*this.resolution),this.crop=new b.Rectangle(0,0,this.width*this.resolution,this.height*this.resolution),this.baseTexture=new b.BaseTexture,this.baseTexture.width=this.width*this.resolution,this.baseTexture.height=this.height*this.resolution,this.baseTexture._glTextures=[],this.baseTexture.resolution=this.resolution,this.baseTexture.scaleMode=e||b.scaleModes.DEFAULT,this.baseTexture.hasLoaded=!0,b.Texture.call(this,this.baseTexture,new b.Rectangle(0,0,this.width*this.resolution,this.height*this.resolution)),this.renderer=d||b.defaultRenderer,this.renderer.type===b.WEBGL_RENDERER){var g=this.renderer.gl;this.baseTexture._dirty[g.id]=!1,this.textureBuffer=new b.FilterTexture(g,this.width,this.height,this.baseTexture.scaleMode),this.baseTexture._glTextures[g.id]=this.textureBuffer.texture,this.render=this.renderWebGL,this.projection=new b.Point(.5*this.width,.5*-this.height)}else this.render=this.renderCanvas,this.textureBuffer=new b.CanvasBuffer(this.width*this.resolution,this.height*this.resolution),this.baseTexture.source=this.textureBuffer.canvas;this.valid=!0,this.tempMatrix=new Phaser.Matrix,this._updateUvs()},b.RenderTexture.prototype=Object.create(b.Texture.prototype),b.RenderTexture.prototype.constructor=b.RenderTexture,b.RenderTexture.prototype.resize=function(a,c,d){(a!==this.width||c!==this.height)&&(this.valid=a>0&&c>0,this.width=a,this.height=c,this.frame.width=this.crop.width=a*this.resolution,this.frame.height=this.crop.height=c*this.resolution,d&&(this.baseTexture.width=this.width*this.resolution,this.baseTexture.height=this.height*this.resolution),this.renderer.type===b.WEBGL_RENDERER&&(this.projection.x=this.width/2,this.projection.y=-this.height/2),this.valid&&this.textureBuffer.resize(this.width,this.height))},b.RenderTexture.prototype.clear=function(){this.valid&&(this.renderer.type===b.WEBGL_RENDERER&&this.renderer.gl.bindFramebuffer(this.renderer.gl.FRAMEBUFFER,this.textureBuffer.frameBuffer),this.textureBuffer.clear())},b.RenderTexture.prototype.renderWebGL=function(a,b,c){if(this.valid&&0!==a.alpha){var d=a.worldTransform;d.identity(),d.translate(0,2*this.projection.y),b&&d.append(b),d.scale(1,-1);for(var e=0;ea;a++)this.shaders[a].dirty=!0},b.Strip=function(a){b.DisplayObjectContainer.call(this),this.texture=a,this.uvs=new b.Float32Array([0,1,1,1,1,0,0,1]),this.vertices=new b.Float32Array([0,0,100,0,100,100,0,100]),this.colors=new b.Float32Array([1,1,1,1]),this.indices=new b.Uint16Array([0,1,2,3]),this.dirty=!0,this.blendMode=b.blendModes.NORMAL,this.canvasPadding=0,this.drawMode=b.Strip.DrawModes.TRIANGLE_STRIP},b.Strip.prototype=Object.create(b.DisplayObjectContainer.prototype),b.Strip.prototype.constructor=b.Strip,b.Strip.prototype._renderWebGL=function(a){!this.visible||this.alpha<=0||(a.spriteBatch.stop(),this._vertexBuffer||this._initWebGL(a),a.shaderManager.setShader(a.shaderManager.stripShader),this._renderStrip(a),a.spriteBatch.start())},b.Strip.prototype._initWebGL=function(a){var b=a.gl;this._vertexBuffer=b.createBuffer(),this._indexBuffer=b.createBuffer(),this._uvBuffer=b.createBuffer(),this._colorBuffer=b.createBuffer(),b.bindBuffer(b.ARRAY_BUFFER,this._vertexBuffer),b.bufferData(b.ARRAY_BUFFER,this.vertices,b.DYNAMIC_DRAW),b.bindBuffer(b.ARRAY_BUFFER,this._uvBuffer),b.bufferData(b.ARRAY_BUFFER,this.uvs,b.STATIC_DRAW),b.bindBuffer(b.ARRAY_BUFFER,this._colorBuffer),b.bufferData(b.ARRAY_BUFFER,this.colors,b.STATIC_DRAW),b.bindBuffer(b.ELEMENT_ARRAY_BUFFER,this._indexBuffer),b.bufferData(b.ELEMENT_ARRAY_BUFFER,this.indices,b.STATIC_DRAW)},b.Strip.prototype._renderStrip=function(a){var c=a.gl,d=a.projection,e=a.offset,f=a.shaderManager.stripShader,g=this.drawMode===b.Strip.DrawModes.TRIANGLE_STRIP?c.TRIANGLE_STRIP:c.TRIANGLES;a.blendModeManager.setBlendMode(this.blendMode),c.uniformMatrix3fv(f.translationMatrix,!1,this.worldTransform.toArray(!0)),c.uniform2f(f.projectionVector,d.x,-d.y),c.uniform2f(f.offsetVector,-e.x,-e.y),c.uniform1f(f.alpha,this.worldAlpha),this.dirty?(this.dirty=!1,c.bindBuffer(c.ARRAY_BUFFER,this._vertexBuffer),c.bufferData(c.ARRAY_BUFFER,this.vertices,c.STATIC_DRAW),c.vertexAttribPointer(f.aVertexPosition,2,c.FLOAT,!1,0,0),c.bindBuffer(c.ARRAY_BUFFER,this._uvBuffer),c.bufferData(c.ARRAY_BUFFER,this.uvs,c.STATIC_DRAW),c.vertexAttribPointer(f.aTextureCoord,2,c.FLOAT,!1,0,0),c.activeTexture(c.TEXTURE0),this.texture.baseTexture._dirty[c.id]?a.renderer.updateTexture(this.texture.baseTexture):c.bindTexture(c.TEXTURE_2D,this.texture.baseTexture._glTextures[c.id]),c.bindBuffer(c.ELEMENT_ARRAY_BUFFER,this._indexBuffer),c.bufferData(c.ELEMENT_ARRAY_BUFFER,this.indices,c.STATIC_DRAW)):(c.bindBuffer(c.ARRAY_BUFFER,this._vertexBuffer),c.bufferSubData(c.ARRAY_BUFFER,0,this.vertices),c.vertexAttribPointer(f.aVertexPosition,2,c.FLOAT,!1,0,0),c.bindBuffer(c.ARRAY_BUFFER,this._uvBuffer),c.vertexAttribPointer(f.aTextureCoord,2,c.FLOAT,!1,0,0),c.activeTexture(c.TEXTURE0),this.texture.baseTexture._dirty[c.id]?a.renderer.updateTexture(this.texture.baseTexture):c.bindTexture(c.TEXTURE_2D,this.texture.baseTexture._glTextures[c.id]),c.bindBuffer(c.ELEMENT_ARRAY_BUFFER,this._indexBuffer)),c.drawElements(g,this.indices.length,c.UNSIGNED_SHORT,0)},b.Strip.prototype._renderCanvas=function(a){var c=a.context,d=this.worldTransform,e=d.tx*a.resolution+a.shakeX,f=d.ty*a.resolution+a.shakeY;a.roundPixels?c.setTransform(d.a,d.b,d.c,d.d,0|e,0|f):c.setTransform(d.a,d.b,d.c,d.d,e,f),this.drawMode===b.Strip.DrawModes.TRIANGLE_STRIP?this._renderCanvasTriangleStrip(c):this._renderCanvasTriangles(c)},b.Strip.prototype._renderCanvasTriangleStrip=function(a){var b=this.vertices,c=this.uvs,d=b.length/2;this.count++;for(var e=0;d-2>e;e++){var f=2*e;this._renderCanvasDrawTriangle(a,b,c,f,f+2,f+4)}},b.Strip.prototype._renderCanvasTriangles=function(a){var b=this.vertices,c=this.uvs,d=this.indices,e=d.length;this.count++;for(var f=0;e>f;f+=3){var g=2*d[f],h=2*d[f+1],i=2*d[f+2];this._renderCanvasDrawTriangle(a,b,c,g,h,i)}},b.Strip.prototype._renderCanvasDrawTriangle=function(a,b,c,d,e,f){var g=this.texture.baseTexture.source,h=this.texture.width,i=this.texture.height,j=b[d],k=b[e],l=b[f],m=b[d+1],n=b[e+1],o=b[f+1],p=c[d]*h,q=c[e]*h,r=c[f]*h,s=c[d+1]*i,t=c[e+1]*i,u=c[f+1]*i;if(this.canvasPadding>0){var v=this.canvasPadding/this.worldTransform.a,w=this.canvasPadding/this.worldTransform.d,x=(j+k+l)/3,y=(m+n+o)/3,z=j-x,A=m-y,B=Math.sqrt(z*z+A*A);j=x+z/B*(B+v),m=y+A/B*(B+w),z=k-x,A=n-y,B=Math.sqrt(z*z+A*A),k=x+z/B*(B+v),n=y+A/B*(B+w),z=l-x,A=o-y,B=Math.sqrt(z*z+A*A),l=x+z/B*(B+v),o=y+A/B*(B+w)}a.save(),a.beginPath(),a.moveTo(j,m),a.lineTo(k,n),a.lineTo(l,o),a.closePath(),a.clip();var C=p*t+s*r+q*u-t*r-s*q-p*u,D=j*t+s*l+k*u-t*l-s*k-j*u,E=p*k+j*r+q*l-k*r-j*q-p*l,F=p*t*l+s*k*r+j*q*u-j*t*r-s*q*l-p*k*u,G=m*t+s*o+n*u-t*o-s*n-m*u,H=p*n+m*r+q*o-n*r-m*q-p*o,I=p*t*o+s*n*r+m*q*u-m*t*r-s*q*o-p*n*u;a.transform(D/C,G/C,E/C,H/C,F/C,I/C),a.drawImage(g,0,0),a.restore()},b.Strip.prototype.renderStripFlat=function(a){var b=this.context,c=a.vertices,d=c.length/2;this.count++,b.beginPath();for(var e=1;d-2>e;e++){var f=2*e,g=c[f],h=c[f+2],i=c[f+4],j=c[f+1],k=c[f+3],l=c[f+5];b.moveTo(g,j),b.lineTo(h,k),b.lineTo(i,l)}b.fillStyle="#FF0000",b.fill(),b.closePath()},b.Strip.prototype.onTextureUpdate=function(){this.updateFrame=!0},b.Strip.prototype.getBounds=function(a){for(var c=a||this.worldTransform,d=c.a,e=c.b,f=c.c,g=c.d,h=c.tx,i=c.ty,j=-(1/0),k=-(1/0),l=1/0,m=1/0,n=this.vertices,o=0,p=n.length;p>o;o+=2){var q=n[o],r=n[o+1],s=d*q+f*r+h,t=g*r+e*q+i;l=l>s?s:l,m=m>t?t:m,j=s>j?s:j,k=t>k?t:k}if(l===-(1/0)||k===1/0)return b.EmptyRectangle;var u=this._bounds;return u.x=l,u.width=j-l,u.y=m,u.height=k-m,this._currentBounds=u,u},b.Strip.DrawModes={TRIANGLE_STRIP:0,TRIANGLES:1},b.Rope=function(a,c){b.Strip.call(this,a),this.points=c,this.vertices=new b.Float32Array(4*c.length),this.uvs=new b.Float32Array(4*c.length),this.colors=new b.Float32Array(2*c.length),this.indices=new b.Uint16Array(2*c.length),this.refresh()},b.Rope.prototype=Object.create(b.Strip.prototype),b.Rope.prototype.constructor=b.Rope,b.Rope.prototype.refresh=function(){var a=this.points;if(!(a.length<1)){var b=this.uvs,c=a[0],d=this.indices,e=this.colors;this.count-=.2,b[0]=0,b[1]=0,b[2]=0,b[3]=1,e[0]=1,e[1]=1,d[0]=0,d[1]=1;for(var f,g,h,i=a.length,j=1;i>j;j++)f=a[j],g=4*j,h=j/(i-1),j%2?(b[g]=h,b[g+1]=0,b[g+2]=h,b[g+3]=1):(b[g]=h,b[g+1]=0,b[g+2]=h,b[g+3]=1),g=2*j,e[g]=1,e[g+1]=1,g=2*j,d[g]=g,d[g+1]=g+1,c=f}},b.Rope.prototype.updateTransform=function(){var a=this.points;if(!(a.length<1)){var c,d=a[0],e={x:0,y:0};this.count-=.2;for(var f,g,h,i,j,k=this.vertices,l=a.length,m=0;l>m;m++)f=a[m],g=4*m,c=m1&&(h=1),i=Math.sqrt(e.x*e.x+e.y*e.y),j=this.texture.height/2,e.x/=i,e.y/=i,e.x*=j,e.y*=j,k[g]=f.x+e.x,k[g+1]=f.y+e.y,k[g+2]=f.x-e.x,k[g+3]=f.y-e.y,d=f;b.DisplayObjectContainer.prototype.updateTransform.call(this)}},b.Rope.prototype.setTexture=function(a){this.texture=a},b.TilingSprite=function(a,c,d){b.Sprite.call(this,a),this._width=c||128,this._height=d||128,this.tileScale=new b.Point(1,1),this.tileScaleOffset=new b.Point(1,1),this.tilePosition=new b.Point,this.renderable=!0,this.tint=16777215,this.textureDebug=!1,this.blendMode=b.blendModes.NORMAL,this.canvasBuffer=null,this.tilingTexture=null,this.tilePattern=null,this.refreshTexture=!0,this.frameWidth=0,this.frameHeight=0},b.TilingSprite.prototype=Object.create(b.Sprite.prototype),b.TilingSprite.prototype.constructor=b.TilingSprite,b.TilingSprite.prototype.setTexture=function(a){this.texture!==a&&(this.texture=a,this.refreshTexture=!0,this.cachedTint=16777215)},b.TilingSprite.prototype._renderWebGL=function(a){if(this.visible&&this.renderable&&0!==this.alpha){if(this._mask&&(a.spriteBatch.stop(),a.maskManager.pushMask(this.mask,a),a.spriteBatch.start()),this._filters&&(a.spriteBatch.flush(),a.filterManager.pushFilter(this._filterBlock)),this.refreshTexture){if(this.generateTilingTexture(!0,a),!this.tilingTexture)return;this.tilingTexture.needsUpdate&&(a.renderer.updateTexture(this.tilingTexture.baseTexture),this.tilingTexture.needsUpdate=!1)}a.spriteBatch.renderTilingSprite(this);for(var b=0;bn?n:x,x=x>p?p:x,x=x>r?r:x,x=x>t?t:x,y=y>o?o:y,y=y>q?q:y,y=y>s?s:y,y=y>u?u:y,v=n>v?n:v,v=p>v?p:v,v=r>v?r:v,v=t>v?t:v,w=o>w?o:w,w=q>w?q:w,w=s>w?s:w,w=u>w?u:w;var z=this._bounds;return z.x=x,z.width=v-x,z.y=y,z.height=w-y,this._currentBounds=z,z},b.TilingSprite.prototype.destroy=function(){b.Sprite.prototype.destroy.call(this),this.canvasBuffer&&(this.canvasBuffer.destroy(),this.canvasBuffer=null),this.tileScale=null,this.tileScaleOffset=null,this.tilePosition=null,this.tilingTexture&&(this.tilingTexture.destroy(!0),this.tilingTexture=null)},Object.defineProperty(b.TilingSprite.prototype,"width",{get:function(){return this._width},set:function(a){this._width=a}}),Object.defineProperty(b.TilingSprite.prototype,"height",{get:function(){return this._height},set:function(a){this._height=a}}),"undefined"!=typeof exports?("undefined"!=typeof module&&module.exports&&(exports=module.exports=b),exports.PIXI=b):"undefined"!=typeof define&&define.amd?define("PIXI",function(){return a.PIXI=b}()):a.PIXI=b,b}).call(this),function(){function a(a,b){this._scaleFactor=a,this._deltaMode=b,this.originalEvent=null}var b=this,c=c||{VERSION:"2.5.0",GAMES:[],AUTO:0,CANVAS:1,WEBGL:2,HEADLESS:3,NONE:0,LEFT:1,RIGHT:2,UP:3,DOWN:4,SPRITE:0,BUTTON:1,IMAGE:2,GRAPHICS:3,TEXT:4,TILESPRITE:5,BITMAPTEXT:6,GROUP:7,RENDERTEXTURE:8,TILEMAP:9,TILEMAPLAYER:10,EMITTER:11,POLYGON:12,BITMAPDATA:13,CANVAS_FILTER:14,WEBGL_FILTER:15,ELLIPSE:16,SPRITEBATCH:17,RETROFONT:18,POINTER:19,ROPE:20,CIRCLE:21,RECTANGLE:22,LINE:23,MATRIX:24,POINT:25,ROUNDEDRECTANGLE:26,CREATURE:27,VIDEO:28,PENDING_ATLAS:-1,HORIZONTAL:0,VERTICAL:1,LANDSCAPE:0,PORTRAIT:1,ANGLE_UP:270,ANGLE_DOWN:90,ANGLE_LEFT:180,ANGLE_RIGHT:0,ANGLE_NORTH_EAST:315,ANGLE_NORTH_WEST:225,ANGLE_SOUTH_EAST:45,ANGLE_SOUTH_WEST:135,TOP_LEFT:0,TOP_CENTER:1,TOP_RIGHT:2,LEFT_TOP:3,LEFT_CENTER:4,LEFT_BOTTOM:5,CENTER:6,RIGHT_TOP:7,RIGHT_CENTER:8,RIGHT_BOTTOM:9,BOTTOM_LEFT:10,BOTTOM_CENTER:11,BOTTOM_RIGHT:12,blendModes:{NORMAL:0,ADD:1,MULTIPLY:2,SCREEN:3,OVERLAY:4,DARKEN:5,LIGHTEN:6,COLOR_DODGE:7,COLOR_BURN:8,HARD_LIGHT:9,SOFT_LIGHT:10,DIFFERENCE:11,EXCLUSION:12,HUE:13,SATURATION:14,COLOR:15,LUMINOSITY:16},scaleModes:{DEFAULT:0,LINEAR:0,NEAREST:1},PIXI:PIXI||{}};if(Math.trunc||(Math.trunc=function(a){return 0>a?Math.ceil(a):Math.floor(a)}),Function.prototype.bind||(Function.prototype.bind=function(){var a=Array.prototype.slice;return function(b){function c(){var f=e.concat(a.call(arguments));d.apply(this instanceof c?this:b,f)}var d=this,e=a.call(arguments,1);if("function"!=typeof d)throw new TypeError;return c.prototype=function f(a){return a&&(f.prototype=a),this instanceof f?void 0:new f}(d.prototype),c}}()),Array.isArray||(Array.isArray=function(a){return"[object Array]"==Object.prototype.toString.call(a)}),Array.prototype.forEach||(Array.prototype.forEach=function(a){"use strict";if(void 0===this||null===this)throw new TypeError;var b=Object(this),c=b.length>>>0;if("function"!=typeof a)throw new TypeError;for(var d=arguments.length>=2?arguments[1]:void 0,e=0;c>e;e++)e in b&&a.call(d,b[e],e,b)}),"function"!=typeof window.Uint32Array&&"object"!=typeof window.Uint32Array){var d=function(a){var b=new Array;window[a]=function(a){if("number"==typeof a){Array.call(this,a),this.length=a;for(var b=0;bf&&(a=a[g]);)g=c[f],f++;return a?a[d]:null},setProperty:function(a,b,c){for(var d=b.split("."),e=d.pop(),f=d.length,g=1,h=d[0];f>g&&(a=a[h]);)h=d[g],g++;return a&&(a[e]=c),a},chanceRoll:function(a){return void 0===a&&(a=50),a>0&&100*Math.random()<=a},randomChoice:function(a,b){return Math.random()<.5?a:b},parseDimension:function(a,b){var c=0,d=0;return"string"==typeof a?"%"===a.substr(-1)?(c=parseInt(a,10)/100,d=0===b?window.innerWidth*c:window.innerHeight*c):d=parseInt(a,10):d=a,d},pad:function(a,b,c,d){if(void 0===b)var b=0;if(void 0===c)var c=" ";if(void 0===d)var d=3;var e=0;if(b+1>=a.length)switch(d){case 1:a=new Array(b+1-a.length).join(c)+a;break;case 3:var f=Math.ceil((e=b-a.length)/2),g=e-f;a=new Array(g+1).join(c)+a+new Array(f+1).join(c);break;default:a+=new Array(b+1-a.length).join(c)}return a},isPlainObject:function(a){if("object"!=typeof a||a.nodeType||a===a.window)return!1;try{if(a.constructor&&!{}.hasOwnProperty.call(a.constructor.prototype,"isPrototypeOf"))return!1}catch(b){return!1}return!0},extend:function(){var a,b,d,e,f,g,h=arguments[0]||{},i=1,j=arguments.length,k=!1;for("boolean"==typeof h&&(k=h,h=arguments[1]||{},i=2),j===i&&(h=this,--i);j>i;i++)if(null!=(a=arguments[i]))for(b in a)d=h[b],e=a[b],h!==e&&(k&&e&&(c.Utils.isPlainObject(e)||(f=Array.isArray(e)))?(f?(f=!1,g=d&&Array.isArray(d)?d:[]):g=d&&c.Utils.isPlainObject(d)?d:{},h[b]=c.Utils.extend(k,g,e)):void 0!==e&&(h[b]=e));return h},mixinPrototype:function(a,b,c){void 0===c&&(c=!1);for(var d=Object.keys(b),e=0;e0&&(this._radius=.5*d),this.type=c.CIRCLE},c.Circle.prototype={circumference:function(){return 2*(Math.PI*this._radius)},random:function(a){void 0===a&&(a=new c.Point);var b=2*Math.PI*Math.random(),d=Math.random()+Math.random(),e=d>1?2-d:d,f=e*Math.cos(b),g=e*Math.sin(b);return a.x=this.x+f*this.radius,a.y=this.y+g*this.radius,a},getBounds:function(){return new c.Rectangle(this.x-this.radius,this.y-this.radius,this.diameter,this.diameter)},setTo:function(a,b,c){return this.x=a,this.y=b,this._diameter=c,this._radius=.5*c,this},copyFrom:function(a){return this.setTo(a.x,a.y,a.diameter)},copyTo:function(a){return a.x=this.x,a.y=this.y,a.diameter=this._diameter,a},distance:function(a,b){var d=c.Math.distance(this.x,this.y,a.x,a.y);return b?Math.round(d):d},clone:function(a){return void 0===a||null===a?a=new c.Circle(this.x,this.y,this.diameter):a.setTo(this.x,this.y,this.diameter),a},contains:function(a,b){return c.Circle.contains(this,a,b)},circumferencePoint:function(a,b,d){return c.Circle.circumferencePoint(this,a,b,d)},offset:function(a,b){return this.x+=a,this.y+=b,this},offsetPoint:function(a){return this.offset(a.x,a.y)},toString:function(){return"[{Phaser.Circle (x="+this.x+" y="+this.y+" diameter="+this.diameter+" radius="+this.radius+")}]"}},c.Circle.prototype.constructor=c.Circle,Object.defineProperty(c.Circle.prototype,"diameter",{get:function(){return this._diameter},set:function(a){a>0&&(this._diameter=a,this._radius=.5*a)}}),Object.defineProperty(c.Circle.prototype,"radius",{get:function(){return this._radius},set:function(a){a>0&&(this._radius=a,this._diameter=2*a)}}),Object.defineProperty(c.Circle.prototype,"left",{get:function(){return this.x-this._radius},set:function(a){a>this.x?(this._radius=0,this._diameter=0):this.radius=this.x-a}}),Object.defineProperty(c.Circle.prototype,"right",{get:function(){return this.x+this._radius},set:function(a){athis.y?(this._radius=0,this._diameter=0):this.radius=this.y-a}}),Object.defineProperty(c.Circle.prototype,"bottom",{get:function(){return this.y+this._radius},set:function(a){a0?Math.PI*this._radius*this._radius:0}}),Object.defineProperty(c.Circle.prototype,"empty",{get:function(){return 0===this._diameter},set:function(a){a===!0&&this.setTo(0,0,0)}}),c.Circle.contains=function(a,b,c){if(a.radius>0&&b>=a.left&&b<=a.right&&c>=a.top&&c<=a.bottom){ -var d=(a.x-b)*(a.x-b),e=(a.y-c)*(a.y-c);return d+e<=a.radius*a.radius}return!1},c.Circle.equals=function(a,b){return a.x==b.x&&a.y==b.y&&a.diameter==b.diameter},c.Circle.intersects=function(a,b){return c.Math.distance(a.x,a.y,b.x,b.y)<=a.radius+b.radius},c.Circle.circumferencePoint=function(a,b,d,e){return void 0===d&&(d=!1),void 0===e&&(e=new c.Point),d===!0&&(b=c.Math.degToRad(b)),e.x=a.x+a.radius*Math.cos(b),e.y=a.y+a.radius*Math.sin(b),e},c.Circle.intersectsRectangle=function(a,b){var c=Math.abs(a.x-b.x-b.halfWidth),d=b.halfWidth+a.radius;if(c>d)return!1;var e=Math.abs(a.y-b.y-b.halfHeight),f=b.halfHeight+a.radius;if(e>f)return!1;if(c<=b.halfWidth||e<=b.halfHeight)return!0;var g=c-b.halfWidth,h=e-b.halfHeight,i=g*g,j=h*h,k=a.radius*a.radius;return k>=i+j},PIXI.Circle=c.Circle,c.Ellipse=function(a,b,d,e){a=a||0,b=b||0,d=d||0,e=e||0,this.x=a,this.y=b,this.width=d,this.height=e,this.type=c.ELLIPSE},c.Ellipse.prototype={setTo:function(a,b,c,d){return this.x=a,this.y=b,this.width=c,this.height=d,this},getBounds:function(){return new c.Rectangle(this.x-this.width,this.y-this.height,this.width,this.height)},copyFrom:function(a){return this.setTo(a.x,a.y,a.width,a.height)},copyTo:function(a){return a.x=this.x,a.y=this.y,a.width=this.width,a.height=this.height,a},clone:function(a){return void 0===a||null===a?a=new c.Ellipse(this.x,this.y,this.width,this.height):a.setTo(this.x,this.y,this.width,this.height),a},contains:function(a,b){return c.Ellipse.contains(this,a,b)},random:function(a){void 0===a&&(a=new c.Point);var b=Math.random()*Math.PI*2,d=Math.random();return a.x=Math.sqrt(d)*Math.cos(b),a.y=Math.sqrt(d)*Math.sin(b),a.x=this.x+a.x*this.width/2,a.y=this.y+a.y*this.height/2,a},toString:function(){return"[{Phaser.Ellipse (x="+this.x+" y="+this.y+" width="+this.width+" height="+this.height+")}]"}},c.Ellipse.prototype.constructor=c.Ellipse,Object.defineProperty(c.Ellipse.prototype,"left",{get:function(){return this.x},set:function(a){this.x=a}}),Object.defineProperty(c.Ellipse.prototype,"right",{get:function(){return this.x+this.width},set:function(a){ad+e},PIXI.Ellipse=c.Ellipse,c.Line=function(a,b,d,e){a=a||0,b=b||0,d=d||0,e=e||0,this.start=new c.Point(a,b),this.end=new c.Point(d,e),this.type=c.LINE},c.Line.prototype={setTo:function(a,b,c,d){return this.start.setTo(a,b),this.end.setTo(c,d),this},fromSprite:function(a,b,c){return void 0===c&&(c=!1),c?this.setTo(a.center.x,a.center.y,b.center.x,b.center.y):this.setTo(a.x,a.y,b.x,b.y)},fromAngle:function(a,b,c,d){return this.start.setTo(a,b),this.end.setTo(a+Math.cos(c)*d,b+Math.sin(c)*d),this},rotate:function(a,b){var c=(this.start.x+this.end.x)/2,d=(this.start.y+this.end.y)/2;return this.start.rotate(c,d,a,b),this.end.rotate(c,d,a,b),this},rotateAround:function(a,b,c,d){return this.start.rotate(a,b,c,d),this.end.rotate(a,b,c,d),this},intersects:function(a,b,d){return c.Line.intersectsPoints(this.start,this.end,a.start,a.end,b,d)},reflect:function(a){return c.Line.reflect(this,a)},midPoint:function(a){return void 0===a&&(a=new c.Point),a.x=(this.start.x+this.end.x)/2,a.y=(this.start.y+this.end.y)/2,a},centerOn:function(a,b){var c=(this.start.x+this.end.x)/2,d=(this.start.y+this.end.y)/2,e=a-c,f=b-d;this.start.add(e,f),this.end.add(e,f)},pointOnLine:function(a,b){return(a-this.start.x)*(this.end.y-this.start.y)===(this.end.x-this.start.x)*(b-this.start.y)},pointOnSegment:function(a,b){var c=Math.min(this.start.x,this.end.x),d=Math.max(this.start.x,this.end.x),e=Math.min(this.start.y,this.end.y),f=Math.max(this.start.y,this.end.y);return this.pointOnLine(a,b)&&a>=c&&d>=a&&b>=e&&f>=b},random:function(a){void 0===a&&(a=new c.Point);var b=Math.random();return a.x=this.start.x+b*(this.end.x-this.start.x),a.y=this.start.y+b*(this.end.y-this.start.y),a},coordinatesOnLine:function(a,b){void 0===a&&(a=1),void 0===b&&(b=[]);var c=Math.round(this.start.x),d=Math.round(this.start.y),e=Math.round(this.end.x),f=Math.round(this.end.y),g=Math.abs(e-c),h=Math.abs(f-d),i=e>c?1:-1,j=f>d?1:-1,k=g-h;b.push([c,d]);for(var l=1;c!=e||d!=f;){var m=k<<1;m>-h&&(k-=h,c+=i),g>m&&(k+=g,d+=j),l%a===0&&b.push([c,d]),l++}return b},clone:function(a){return void 0===a||null===a?a=new c.Line(this.start.x,this.start.y,this.end.x,this.end.y):a.setTo(this.start.x,this.start.y,this.end.x,this.end.y),a}},Object.defineProperty(c.Line.prototype,"length",{get:function(){return Math.sqrt((this.end.x-this.start.x)*(this.end.x-this.start.x)+(this.end.y-this.start.y)*(this.end.y-this.start.y))}}),Object.defineProperty(c.Line.prototype,"angle",{get:function(){return Math.atan2(this.end.y-this.start.y,this.end.x-this.start.x)}}),Object.defineProperty(c.Line.prototype,"slope",{get:function(){return(this.end.y-this.start.y)/(this.end.x-this.start.x)}}),Object.defineProperty(c.Line.prototype,"perpSlope",{get:function(){return-((this.end.x-this.start.x)/(this.end.y-this.start.y))}}),Object.defineProperty(c.Line.prototype,"x",{get:function(){return Math.min(this.start.x,this.end.x)}}),Object.defineProperty(c.Line.prototype,"y",{get:function(){return Math.min(this.start.y,this.end.y)}}),Object.defineProperty(c.Line.prototype,"left",{get:function(){return Math.min(this.start.x,this.end.x)}}),Object.defineProperty(c.Line.prototype,"right",{get:function(){return Math.max(this.start.x,this.end.x)}}),Object.defineProperty(c.Line.prototype,"top",{get:function(){return Math.min(this.start.y,this.end.y)}}),Object.defineProperty(c.Line.prototype,"bottom",{get:function(){return Math.max(this.start.y,this.end.y)}}),Object.defineProperty(c.Line.prototype,"width",{get:function(){return Math.abs(this.start.x-this.end.x)}}),Object.defineProperty(c.Line.prototype,"height",{get:function(){return Math.abs(this.start.y-this.end.y)}}),Object.defineProperty(c.Line.prototype,"normalX",{get:function(){return Math.cos(this.angle-1.5707963267948966)}}),Object.defineProperty(c.Line.prototype,"normalY",{get:function(){return Math.sin(this.angle-1.5707963267948966)}}),Object.defineProperty(c.Line.prototype,"normalAngle",{get:function(){return c.Math.wrap(this.angle-1.5707963267948966,-Math.PI,Math.PI)}}),c.Line.intersectsPoints=function(a,b,d,e,f,g){void 0===f&&(f=!0),void 0===g&&(g=new c.Point);var h=b.y-a.y,i=e.y-d.y,j=a.x-b.x,k=d.x-e.x,l=b.x*a.y-a.x*b.y,m=e.x*d.y-d.x*e.y,n=h*k-i*j;if(0===n)return null;if(g.x=(j*m-k*l)/n,g.y=(i*l-h*m)/n,f){var o=(e.y-d.y)*(b.x-a.x)-(e.x-d.x)*(b.y-a.y),p=((e.x-d.x)*(a.y-d.y)-(e.y-d.y)*(a.x-d.x))/o,q=((b.x-a.x)*(a.y-d.y)-(b.y-a.y)*(a.x-d.x))/o;return p>=0&&1>=p&&q>=0&&1>=q?g:null}return g},c.Line.intersects=function(a,b,d,e){return c.Line.intersectsPoints(a.start,a.end,b.start,b.end,d,e)},c.Line.intersectsRectangle=function(a,b){if(!c.Rectangle.intersects(a,b))return!1;var d=a.start.x,e=a.start.y,f=a.end.x,g=a.end.y,h=b.x,i=b.y,j=b.right,k=b.bottom,l=0;if(d>=h&&j>=d&&e>=i&&k>=e||f>=h&&j>=f&&g>=i&&k>=g)return!0;if(h>d&&f>=h){if(l=e+(g-e)*(h-d)/(f-d),l>i&&k>=l)return!0}else if(d>j&&j>=f&&(l=e+(g-e)*(j-d)/(f-d),l>=i&&k>=l))return!0;if(i>e&&g>=i){if(l=d+(f-d)*(i-e)/(g-e),l>=h&&j>=l)return!0}else if(e>k&&k>=g&&(l=d+(f-d)*(k-e)/(g-e),l>=h&&j>=l))return!0;return!1},c.Line.reflect=function(a,b){return 2*b.normalAngle-3.141592653589793-a.angle},c.Matrix=function(a,b,d,e,f,g){(void 0===a||null===a)&&(a=1),(void 0===b||null===b)&&(b=0),(void 0===d||null===d)&&(d=0),(void 0===e||null===e)&&(e=1),(void 0===f||null===f)&&(f=0),(void 0===g||null===g)&&(g=0),this.a=a,this.b=b,this.c=d,this.d=e,this.tx=f,this.ty=g,this.type=c.MATRIX},c.Matrix.prototype={fromArray:function(a){return this.setTo(a[0],a[1],a[3],a[4],a[2],a[5])},setTo:function(a,b,c,d,e,f){return this.a=a,this.b=b,this.c=c,this.d=d,this.tx=e,this.ty=f,this},clone:function(a){return void 0===a||null===a?a=new c.Matrix(this.a,this.b,this.c,this.d,this.tx,this.ty):(a.a=this.a,a.b=this.b,a.c=this.c,a.d=this.d,a.tx=this.tx,a.ty=this.ty),a},copyTo:function(a){return a.copyFrom(this),a},copyFrom:function(a){return this.a=a.a,this.b=a.b,this.c=a.c,this.d=a.d,this.tx=a.tx,this.ty=a.ty,this},toArray:function(a,b){return void 0===b&&(b=new PIXI.Float32Array(9)),a?(b[0]=this.a,b[1]=this.b,b[2]=0,b[3]=this.c,b[4]=this.d,b[5]=0,b[6]=this.tx,b[7]=this.ty,b[8]=1):(b[0]=this.a,b[1]=this.c,b[2]=this.tx,b[3]=this.b,b[4]=this.d,b[5]=this.ty,b[6]=0,b[7]=0,b[8]=1),b},apply:function(a,b){return void 0===b&&(b=new c.Point),b.x=this.a*a.x+this.c*a.y+this.tx,b.y=this.b*a.x+this.d*a.y+this.ty,b},applyInverse:function(a,b){void 0===b&&(b=new c.Point);var d=1/(this.a*this.d+this.c*-this.b),e=a.x,f=a.y;return b.x=this.d*d*e+-this.c*d*f+(this.ty*this.c-this.tx*this.d)*d,b.y=this.a*d*f+-this.b*d*e+(-this.ty*this.a+this.tx*this.b)*d,b},translate:function(a,b){return this.tx+=a,this.ty+=b,this},scale:function(a,b){return this.a*=a,this.d*=b,this.c*=a,this.b*=b,this.tx*=a,this.ty*=b,this},rotate:function(a){var b=Math.cos(a),c=Math.sin(a),d=this.a,e=this.c,f=this.tx;return this.a=d*b-this.b*c,this.b=d*c+this.b*b,this.c=e*b-this.d*c,this.d=e*c+this.d*b,this.tx=f*b-this.ty*c,this.ty=f*c+this.ty*b,this},append:function(a){var b=this.a,c=this.b,d=this.c,e=this.d;return this.a=a.a*b+a.b*d,this.b=a.a*c+a.b*e,this.c=a.c*b+a.d*d,this.d=a.c*c+a.d*e,this.tx=a.tx*b+a.ty*d+this.tx,this.ty=a.tx*c+a.ty*e+this.ty,this},identity:function(){return this.setTo(1,0,0,1,0,0)}},c.identityMatrix=new c.Matrix,PIXI.Matrix=c.Matrix,PIXI.identityMatrix=c.identityMatrix,c.Point=function(a,b){a=a||0,b=b||0,this.x=a,this.y=b,this.type=c.POINT},c.Point.prototype={copyFrom:function(a){return this.setTo(a.x,a.y)},invert:function(){return this.setTo(this.y,this.x)},setTo:function(a,b){return this.x=a||0,this.y=b||(0!==b?this.x:0),this},set:function(a,b){return this.x=a||0,this.y=b||(0!==b?this.x:0),this},add:function(a,b){return this.x+=a,this.y+=b,this},subtract:function(a,b){return this.x-=a,this.y-=b,this},multiply:function(a,b){return this.x*=a,this.y*=b,this},divide:function(a,b){return this.x/=a,this.y/=b,this},clampX:function(a,b){return this.x=c.Math.clamp(this.x,a,b),this},clampY:function(a,b){return this.y=c.Math.clamp(this.y,a,b),this},clamp:function(a,b){return this.x=c.Math.clamp(this.x,a,b),this.y=c.Math.clamp(this.y,a,b),this},clone:function(a){return void 0===a||null===a?a=new c.Point(this.x,this.y):a.setTo(this.x,this.y),a},copyTo:function(a){return a.x=this.x,a.y=this.y,a},distance:function(a,b){return c.Point.distance(this,a,b)},equals:function(a){return a.x===this.x&&a.y===this.y},angle:function(a,b){return void 0===b&&(b=!1),b?c.Math.radToDeg(Math.atan2(a.y-this.y,a.x-this.x)):Math.atan2(a.y-this.y,a.x-this.x)},rotate:function(a,b,d,e,f){return c.Point.rotate(this,a,b,d,e,f)},getMagnitude:function(){return Math.sqrt(this.x*this.x+this.y*this.y)},getMagnitudeSq:function(){return this.x*this.x+this.y*this.y},setMagnitude:function(a){return this.normalize().multiply(a,a)},normalize:function(){if(!this.isZero()){var a=this.getMagnitude();this.x/=a,this.y/=a}return this},isZero:function(){return 0===this.x&&0===this.y},dot:function(a){return this.x*a.x+this.y*a.y},cross:function(a){return this.x*a.y-this.y*a.x},perp:function(){return this.setTo(-this.y,this.x)},rperp:function(){return this.setTo(this.y,-this.x)},normalRightHand:function(){return this.setTo(-1*this.y,this.x)},floor:function(){return this.setTo(Math.floor(this.x),Math.floor(this.y))},ceil:function(){return this.setTo(Math.ceil(this.x),Math.ceil(this.y))},toString:function(){return"[{Point (x="+this.x+" y="+this.y+")}]"}},c.Point.prototype.constructor=c.Point,c.Point.add=function(a,b,d){return void 0===d&&(d=new c.Point),d.x=a.x+b.x,d.y=a.y+b.y,d},c.Point.subtract=function(a,b,d){return void 0===d&&(d=new c.Point),d.x=a.x-b.x,d.y=a.y-b.y,d},c.Point.multiply=function(a,b,d){return void 0===d&&(d=new c.Point),d.x=a.x*b.x,d.y=a.y*b.y,d},c.Point.divide=function(a,b,d){return void 0===d&&(d=new c.Point),d.x=a.x/b.x,d.y=a.y/b.y,d},c.Point.equals=function(a,b){return a.x===b.x&&a.y===b.y},c.Point.angle=function(a,b){return Math.atan2(a.y-b.y,a.x-b.x)},c.Point.negative=function(a,b){return void 0===b&&(b=new c.Point),b.setTo(-a.x,-a.y)},c.Point.multiplyAdd=function(a,b,d,e){return void 0===e&&(e=new c.Point),e.setTo(a.x+b.x*d,a.y+b.y*d)},c.Point.interpolate=function(a,b,d,e){return void 0===e&&(e=new c.Point),e.setTo(a.x+(b.x-a.x)*d,a.y+(b.y-a.y)*d)},c.Point.perp=function(a,b){return void 0===b&&(b=new c.Point),b.setTo(-a.y,a.x)},c.Point.rperp=function(a,b){return void 0===b&&(b=new c.Point),b.setTo(a.y,-a.x)},c.Point.distance=function(a,b,d){var e=c.Math.distance(a.x,a.y,b.x,b.y);return d?Math.round(e):e},c.Point.project=function(a,b,d){void 0===d&&(d=new c.Point);var e=a.dot(b)/b.getMagnitudeSq();return 0!==e&&d.setTo(e*b.x,e*b.y),d},c.Point.projectUnit=function(a,b,d){void 0===d&&(d=new c.Point);var e=a.dot(b);return 0!==e&&d.setTo(e*b.x,e*b.y),d},c.Point.normalRightHand=function(a,b){return void 0===b&&(b=new c.Point),b.setTo(-1*a.y,a.x)},c.Point.normalize=function(a,b){void 0===b&&(b=new c.Point);var d=a.getMagnitude();return 0!==d&&b.setTo(a.x/d,a.y/d),b},c.Point.rotate=function(a,b,d,e,f,g){if(f&&(e=c.Math.degToRad(e)),void 0===g){a.subtract(b,d);var h=Math.sin(e),i=Math.cos(e),j=i*a.x-h*a.y,k=h*a.x+i*a.y;a.x=j+b,a.y=k+d}else{var l=e+Math.atan2(a.y-d,a.x-b);a.x=b+g*Math.cos(l),a.y=d+g*Math.sin(l)}return a},c.Point.centroid=function(a,b){if(void 0===b&&(b=new c.Point),"[object Array]"!==Object.prototype.toString.call(a))throw new Error("Phaser.Point. Parameter 'points' must be an array");var d=a.length;if(1>d)throw new Error("Phaser.Point. Parameter 'points' array must not be empty");if(1===d)return b.copyFrom(a[0]),b;for(var e=0;d>e;e++)c.Point.add(b,a[e],b);return b.divide(d,d),b},c.Point.parse=function(a,b,d){b=b||"x",d=d||"y";var e=new c.Point;return a[b]&&(e.x=parseInt(a[b],10)),a[d]&&(e.y=parseInt(a[d],10)),e},PIXI.Point=c.Point,c.Polygon=function(){this.area=0,this._points=[],arguments.length>0&&this.setTo.apply(this,arguments),this.closed=!0,this.type=c.POLYGON},c.Polygon.prototype={toNumberArray:function(a){void 0===a&&(a=[]);for(var b=0;b=h&&j>b||b>=j&&h>b)&&(i-g)*(b-h)/(j-h)+g>a&&(d=!d)}return d},setTo:function(a){if(this.area=0,this._points=[],arguments.length>0){Array.isArray(a)||(a=Array.prototype.slice.call(arguments));for(var b=Number.MAX_VALUE,c=0,d=a.length;d>c;c++){if("number"==typeof a[c]){var e=new PIXI.Point(a[c],a[c+1]);c++}else if(Array.isArray(a[c]))var e=new PIXI.Point(a[c][0],a[c][1]);else var e=new PIXI.Point(a[c].x,a[c].y);this._points.push(e),e.yf;f++)b=this._points[f],c=f===g-1?this._points[0]:this._points[f+1],d=(b.y-a+(c.y-a))/2,e=b.x-c.x,this.area+=d*e;return this.area}},c.Polygon.prototype.constructor=c.Polygon,Object.defineProperty(c.Polygon.prototype,"points",{get:function(){return this._points},set:function(a){null!=a?this.setTo(a):this.setTo()}}),PIXI.Polygon=c.Polygon,c.Rectangle=function(a,b,d,e){a=a||0,b=b||0,d=d||0,e=e||0,this.x=a,this.y=b,this.width=d,this.height=e,this.type=c.RECTANGLE},c.Rectangle.prototype={offset:function(a,b){return this.x+=a,this.y+=b,this},offsetPoint:function(a){return this.offset(a.x,a.y)},setTo:function(a,b,c,d){return this.x=a,this.y=b,this.width=c,this.height=d,this},scale:function(a,b){return void 0===b&&(b=a),this.width*=a,this.height*=b,this},centerOn:function(a,b){return this.centerX=a,this.centerY=b,this},floor:function(){this.x=Math.floor(this.x),this.y=Math.floor(this.y)},floorAll:function(){this.x=Math.floor(this.x),this.y=Math.floor(this.y),this.width=Math.floor(this.width),this.height=Math.floor(this.height)},ceil:function(){this.x=Math.ceil(this.x),this.y=Math.ceil(this.y)},ceilAll:function(){this.x=Math.ceil(this.x),this.y=Math.ceil(this.y),this.width=Math.ceil(this.width),this.height=Math.ceil(this.height)},copyFrom:function(a){return this.setTo(a.x,a.y,a.width,a.height)},copyTo:function(a){return a.x=this.x,a.y=this.y,a.width=this.width,a.height=this.height,a},inflate:function(a,b){return c.Rectangle.inflate(this,a,b)},size:function(a){return c.Rectangle.size(this,a)},resize:function(a,b){return this.width=a,this.height=b,this},clone:function(a){return c.Rectangle.clone(this,a)},contains:function(a,b){return c.Rectangle.contains(this,a,b)},containsRect:function(a){return c.Rectangle.containsRect(a,this)},equals:function(a){return c.Rectangle.equals(this,a)},intersection:function(a,b){return c.Rectangle.intersection(this,a,b)},intersects:function(a){return c.Rectangle.intersects(this,a)},intersectsRaw:function(a,b,d,e,f){return c.Rectangle.intersectsRaw(this,a,b,d,e,f)},union:function(a,b){return c.Rectangle.union(this,a,b)},random:function(a){return void 0===a&&(a=new c.Point),a.x=this.randomX,a.y=this.randomY,a},getPoint:function(a,b){switch(void 0===b&&(b=new c.Point),a){default:case c.TOP_LEFT:return b.set(this.x,this.y);case c.TOP_CENTER:return b.set(this.centerX,this.y);case c.TOP_RIGHT:return b.set(this.right,this.y);case c.LEFT_CENTER:return b.set(this.x,this.centerY);case c.CENTER:return b.set(this.centerX,this.centerY);case c.RIGHT_CENTER:return b.set(this.right,this.centerY);case c.BOTTOM_LEFT:return b.set(this.x,this.bottom);case c.BOTTOM_CENTER:return b.set(this.centerX,this.bottom);case c.BOTTOM_RIGHT:return b.set(this.right,this.bottom)}},toString:function(){return"[{Rectangle (x="+this.x+" y="+this.y+" width="+this.width+" height="+this.height+" empty="+this.empty+")}]"}},Object.defineProperty(c.Rectangle.prototype,"halfWidth",{get:function(){return Math.round(this.width/2)}}),Object.defineProperty(c.Rectangle.prototype,"halfHeight",{get:function(){return Math.round(this.height/2)}}),Object.defineProperty(c.Rectangle.prototype,"bottom",{get:function(){return this.y+this.height},set:function(a){a<=this.y?this.height=0:this.height=a-this.y}}),Object.defineProperty(c.Rectangle.prototype,"bottomLeft",{get:function(){return new c.Point(this.x,this.bottom)},set:function(a){this.x=a.x,this.bottom=a.y}}),Object.defineProperty(c.Rectangle.prototype,"bottomRight",{get:function(){return new c.Point(this.right,this.bottom)},set:function(a){this.right=a.x,this.bottom=a.y}}),Object.defineProperty(c.Rectangle.prototype,"left",{get:function(){return this.x},set:function(a){a>=this.right?this.width=0:this.width=this.right-a,this.x=a}}),Object.defineProperty(c.Rectangle.prototype,"right",{get:function(){return this.x+this.width},set:function(a){a<=this.x?this.width=0:this.width=a-this.x}}),Object.defineProperty(c.Rectangle.prototype,"volume",{get:function(){return this.width*this.height}}),Object.defineProperty(c.Rectangle.prototype,"perimeter",{get:function(){return 2*this.width+2*this.height}}),Object.defineProperty(c.Rectangle.prototype,"centerX",{get:function(){return this.x+this.halfWidth},set:function(a){this.x=a-this.halfWidth}}),Object.defineProperty(c.Rectangle.prototype,"centerY",{get:function(){return this.y+this.halfHeight},set:function(a){this.y=a-this.halfHeight}}),Object.defineProperty(c.Rectangle.prototype,"randomX",{get:function(){return this.x+Math.random()*this.width}}),Object.defineProperty(c.Rectangle.prototype,"randomY",{get:function(){return this.y+Math.random()*this.height}}),Object.defineProperty(c.Rectangle.prototype,"top",{get:function(){return this.y},set:function(a){a>=this.bottom?(this.height=0,this.y=a):this.height=this.bottom-a}}),Object.defineProperty(c.Rectangle.prototype,"topLeft",{get:function(){return new c.Point(this.x,this.y)},set:function(a){this.x=a.x,this.y=a.y}}),Object.defineProperty(c.Rectangle.prototype,"topRight",{get:function(){return new c.Point(this.x+this.width,this.y)},set:function(a){this.right=a.x,this.y=a.y}}),Object.defineProperty(c.Rectangle.prototype,"empty",{get:function(){return!this.width||!this.height},set:function(a){a===!0&&this.setTo(0,0,0,0)}}),c.Rectangle.prototype.constructor=c.Rectangle,c.Rectangle.inflate=function(a,b,c){return a.x-=b,a.width+=2*b,a.y-=c,a.height+=2*c,a},c.Rectangle.inflatePoint=function(a,b){return c.Rectangle.inflate(a,b.x,b.y)},c.Rectangle.size=function(a,b){return void 0===b||null===b?b=new c.Point(a.width,a.height):b.setTo(a.width,a.height),b},c.Rectangle.clone=function(a,b){return void 0===b||null===b?b=new c.Rectangle(a.x,a.y,a.width,a.height):b.setTo(a.x,a.y,a.width,a.height),b},c.Rectangle.contains=function(a,b,c){return a.width<=0||a.height<=0?!1:b>=a.x&&b=a.y&&c=a&&a+c>e&&f>=b&&b+d>f},c.Rectangle.containsPoint=function(a,b){return c.Rectangle.contains(a,b.x,b.y)},c.Rectangle.containsRect=function(a,b){return a.volume>b.volume?!1:a.x>=b.x&&a.y>=b.y&&a.rightb.right||a.y>b.bottom)},c.Rectangle.intersectsRaw=function(a,b,c,d,e,f){return void 0===f&&(f=0),!(b>a.right+f||ca.bottom+f||ed&&(d=a.x),a.xf&&(f=a.y),a.y=c&&a<=c+this.width){var d=this.y;if(b>=d&&b<=d+this.height)return!0}return!1}},c.RoundedRectangle.prototype.constructor=c.RoundedRectangle,PIXI.RoundedRectangle=c.RoundedRectangle,c.Camera=function(a,b,d,e,f,g){this.game=a,this.world=a.world,this.id=0,this.view=new c.Rectangle(d,e,f,g),this.bounds=new c.Rectangle(d,e,f,g),this.deadzone=null,this.visible=!0,this.roundPx=!0,this.atLimit={x:!1,y:!1},this.target=null,this.displayObject=null,this.scale=null,this.totalInView=0,this.lerp=new c.Point(1,1),this.onShakeComplete=new c.Signal,this.onFlashComplete=new c.Signal,this.onFadeComplete=new c.Signal,this.fx=null,this._targetPosition=new c.Point,this._edge=0,this._position=new c.Point,this._shake={intensity:0,duration:0,horizontal:!1,vertical:!1,shakeBounds:!0,x:0,y:0},this._fxDuration=0,this._fxType=0},c.Camera.FOLLOW_LOCKON=0,c.Camera.FOLLOW_PLATFORMER=1,c.Camera.FOLLOW_TOPDOWN=2,c.Camera.FOLLOW_TOPDOWN_TIGHT=3,c.Camera.SHAKE_BOTH=4,c.Camera.SHAKE_HORIZONTAL=5,c.Camera.SHAKE_VERTICAL=6,c.Camera.ENABLE_FX=!0,c.Camera.prototype={boot:function(){this.displayObject=this.game.world,this.scale=this.game.world.scale,this.game.camera=this,c.Graphics&&c.Camera.ENABLE_FX&&(this.fx=new c.Graphics(this.game),this.game.stage.addChild(this.fx))},preUpdate:function(){this.totalInView=0},follow:function(a,b,d,e){void 0===b&&(b=c.Camera.FOLLOW_LOCKON),void 0===d&&(d=1),void 0===e&&(e=1),this.target=a,this.lerp.set(d,e);var f;switch(b){case c.Camera.FOLLOW_PLATFORMER:var g=this.width/8,h=this.height/3;this.deadzone=new c.Rectangle((this.width-g)/2,(this.height-h)/2-.25*h,g,h);break;case c.Camera.FOLLOW_TOPDOWN:f=Math.max(this.width,this.height)/4,this.deadzone=new c.Rectangle((this.width-f)/2,(this.height-f)/2,f,f);break;case c.Camera.FOLLOW_TOPDOWN_TIGHT:f=Math.max(this.width,this.height)/8,this.deadzone=new c.Rectangle((this.width-f)/2,(this.height-f)/2,f,f);break;case c.Camera.FOLLOW_LOCKON:this.deadzone=null;break;default:this.deadzone=null}},unfollow:function(){this.target=null},focusOn:function(a){this.setPosition(Math.round(a.x-this.view.halfWidth),Math.round(a.y-this.view.halfHeight))},focusOnXY:function(a,b){this.setPosition(Math.round(a-this.view.halfWidth),Math.round(b-this.view.halfHeight))},shake:function(a,b,d,e,f){return void 0===a&&(a=.05),void 0===b&&(b=500),void 0===d&&(d=!0),void 0===e&&(e=c.Camera.SHAKE_BOTH),void 0===f&&(f=!0),!d&&this._shake.duration>0?!1:(this._shake.intensity=a,this._shake.duration=b,this._shake.shakeBounds=f,this._shake.x=0,this._shake.y=0,this._shake.horizontal=e===c.Camera.SHAKE_BOTH||e===c.Camera.SHAKE_HORIZONTAL,this._shake.vertical=e===c.Camera.SHAKE_BOTH||e===c.Camera.SHAKE_VERTICAL,!0)},flash:function(a,b,c){return void 0===a&&(a=16777215),void 0===b&&(b=500),void 0===c&&(c=!1),!this.fx||!c&&this._fxDuration>0?!1:(this.fx.clear(),this.fx.beginFill(a),this.fx.drawRect(0,0,this.width,this.height),this.fx.endFill(),this.fx.alpha=1,this._fxDuration=b,this._fxType=0,!0)},fade:function(a,b,c){return void 0===a&&(a=0),void 0===b&&(b=500),void 0===c&&(c=!1),!this.fx||!c&&this._fxDuration>0?!1:(this.fx.clear(),this.fx.beginFill(a),this.fx.drawRect(0,0,this.width,this.height),this.fx.endFill(),this.fx.alpha=0,this._fxDuration=b,this._fxType=1,!0)},update:function(){this._fxDuration>0&&this.updateFX(),this._shake.duration>0&&this.updateShake(),this.bounds&&this.checkBounds(),this.roundPx&&(this.view.floor(),this._shake.x=Math.floor(this._shake.x),this._shake.y=Math.floor(this._shake.y)),this.displayObject.position.x=-this.view.x,this.displayObject.position.y=-this.view.y},updateFX:function(){0===this._fxType?(this.fx.alpha-=this.game.time.elapsedMS/this._fxDuration,this.fx.alpha<=0&&(this._fxDuration=0,this.fx.alpha=0,this.onFlashComplete.dispatch())):(this.fx.alpha+=this.game.time.elapsedMS/this._fxDuration,this.fx.alpha>=1&&(this._fxDuration=0,this.fx.alpha=1,this.onFadeComplete.dispatch()))},updateShake:function(){this._shake.duration-=this.game.time.elapsedMS,this._shake.duration<=0?(this.onShakeComplete.dispatch(),this._shake.x=0,this._shake.y=0):(this._shake.horizontal&&(this._shake.x=this.game.rnd.frac()*this._shake.intensity*this.view.width*2-this._shake.intensity*this.view.width),this._shake.vertical&&(this._shake.y=this.game.rnd.frac()*this._shake.intensity*this.view.height*2-this._shake.intensity*this.view.height))},updateTarget:function(){this._targetPosition.x=this.view.x+this.target.worldPosition.x,this._targetPosition.y=this.view.y+this.target.worldPosition.y,this.deadzone?(this._edge=this._targetPosition.x-this.view.x,this._edgethis.deadzone.right&&(this.view.x=this.game.math.linear(this.view.x,this._targetPosition.x-this.deadzone.right,this.lerp.x)),this._edge=this._targetPosition.y-this.view.y,this._edgethis.deadzone.bottom&&(this.view.y=this.game.math.linear(this.view.y,this._targetPosition.y-this.deadzone.bottom,this.lerp.y))):(this.view.x=this.game.math.linear(this.view.x,this._targetPosition.x-this.view.halfWidth,this.lerp.x),this.view.y=this.game.math.linear(this.view.y,this._targetPosition.y-this.view.halfHeight,this.lerp.y)),this.bounds&&this.checkBounds(),this.roundPx&&this.view.floor(),this.displayObject.position.x=-this.view.x,this.displayObject.position.y=-this.view.y},setBoundsToWorld:function(){this.bounds&&this.bounds.copyFrom(this.game.world.bounds)},checkBounds:function(){this.atLimit.x=!1,this.atLimit.y=!1;var a=this.view.x+this._shake.x,b=this.view.right+this._shake.x,c=this.view.y+this._shake.y,d=this.view.bottom+this._shake.y;a<=this.bounds.x*this.scale.x&&(this.atLimit.x=!0,this.view.x=this.bounds.x*this.scale.x,this._shake.shakeBounds||(this._shake.x=0)),b>=this.bounds.right*this.scale.x&&(this.atLimit.x=!0,this.view.x=this.bounds.right*this.scale.x-this.width,this._shake.shakeBounds||(this._shake.x=0)),c<=this.bounds.top*this.scale.y&&(this.atLimit.y=!0,this.view.y=this.bounds.top*this.scale.y,this._shake.shakeBounds||(this._shake.y=0)),d>=this.bounds.bottom*this.scale.y&&(this.atLimit.y=!0,this.view.y=this.bounds.bottom*this.scale.y-this.height,this._shake.shakeBounds||(this._shake.y=0))},setPosition:function(a,b){this.view.x=a,this.view.y=b,this.bounds&&this.checkBounds()},setSize:function(a,b){this.view.width=a,this.view.height=b},reset:function(){this.target=null,this.view.x=0,this.view.y=0,this._shake.duration=0,this.resetFX()},resetFX:function(){this.fx.clear(),this.fx.alpha=0,this._fxDuration=0}},c.Camera.prototype.constructor=c.Camera,Object.defineProperty(c.Camera.prototype,"x",{get:function(){return this.view.x},set:function(a){this.view.x=a,this.bounds&&this.checkBounds()}}),Object.defineProperty(c.Camera.prototype,"y",{get:function(){return this.view.y},set:function(a){this.view.y=a,this.bounds&&this.checkBounds()}}),Object.defineProperty(c.Camera.prototype,"position",{get:function(){return this._position.set(this.view.x,this.view.y),this._position},set:function(a){"undefined"!=typeof a.x&&(this.view.x=a.x),"undefined"!=typeof a.y&&(this.view.y=a.y),this.bounds&&this.checkBounds()}}),Object.defineProperty(c.Camera.prototype,"width",{get:function(){return this.view.width},set:function(a){this.view.width=a}}),Object.defineProperty(c.Camera.prototype,"height",{get:function(){return this.view.height},set:function(a){this.view.height=a}}),Object.defineProperty(c.Camera.prototype,"shakeIntensity",{get:function(){return this._shake.intensity},set:function(a){this._shake.intensity=a}}),c.State=function(){this.game=null,this.key="",this.add=null,this.make=null,this.camera=null,this.cache=null,this.input=null,this.load=null,this.math=null,this.sound=null,this.scale=null,this.stage=null,this.state=null,this.time=null,this.tweens=null,this.world=null,this.particles=null,this.physics=null,this.rnd=null},c.State.prototype={init:function(){},preload:function(){},loadUpdate:function(){},loadRender:function(){},create:function(){},update:function(){},preRender:function(){},render:function(){},resize:function(){},paused:function(){},resumed:function(){},pauseUpdate:function(){},shutdown:function(){}},c.State.prototype.constructor=c.State,c.StateManager=function(a,b){this.game=a,this.states={},this._pendingState=null,"undefined"!=typeof b&&null!==b&&(this._pendingState=b),this._clearWorld=!1,this._clearCache=!1,this._created=!1,this._args=[],this.current="",this.onStateChange=new c.Signal,this.onInitCallback=null, -this.onPreloadCallback=null,this.onCreateCallback=null,this.onUpdateCallback=null,this.onRenderCallback=null,this.onResizeCallback=null,this.onPreRenderCallback=null,this.onLoadUpdateCallback=null,this.onLoadRenderCallback=null,this.onPausedCallback=null,this.onResumedCallback=null,this.onPauseUpdateCallback=null,this.onShutDownCallback=null},c.StateManager.prototype={boot:function(){this.game.onPause.add(this.pause,this),this.game.onResume.add(this.resume,this),null!==this._pendingState&&"string"!=typeof this._pendingState&&this.add("default",this._pendingState,!0)},add:function(a,b,d){void 0===d&&(d=!1);var e;return b instanceof c.State?e=b:"object"==typeof b?(e=b,e.game=this.game):"function"==typeof b&&(e=new b(this.game)),this.states[a]=e,d&&(this.game.isBooted?this.start(a):this._pendingState=a),e},remove:function(a){this.current===a&&(this.callbackContext=null,this.onInitCallback=null,this.onShutDownCallback=null,this.onPreloadCallback=null,this.onLoadRenderCallback=null,this.onLoadUpdateCallback=null,this.onCreateCallback=null,this.onUpdateCallback=null,this.onPreRenderCallback=null,this.onRenderCallback=null,this.onResizeCallback=null,this.onPausedCallback=null,this.onResumedCallback=null,this.onPauseUpdateCallback=null),delete this.states[a]},start:function(a,b,c){void 0===b&&(b=!0),void 0===c&&(c=!1),this.checkState(a)&&(this._pendingState=a,this._clearWorld=b,this._clearCache=c,arguments.length>3&&(this._args=Array.prototype.splice.call(arguments,3)))},restart:function(a,b){void 0===a&&(a=!0),void 0===b&&(b=!1),this._pendingState=this.current,this._clearWorld=a,this._clearCache=b,arguments.length>2&&(this._args=Array.prototype.slice.call(arguments,2))},dummy:function(){},preUpdate:function(){if(this._pendingState&&this.game.isBooted){var a=this.current;if(this.clearCurrentState(),this.setCurrentState(this._pendingState),this.onStateChange.dispatch(this.current,a),this.current!==this._pendingState)return;this._pendingState=null,this.onPreloadCallback?(this.game.load.reset(!0),this.onPreloadCallback.call(this.callbackContext,this.game),0===this.game.load.totalQueuedFiles()&&0===this.game.load.totalQueuedPacks()?this.loadComplete():this.game.load.start()):this.loadComplete()}},clearCurrentState:function(){this.current&&(this.onShutDownCallback&&this.onShutDownCallback.call(this.callbackContext,this.game),this.game.tweens.removeAll(),this.game.camera.reset(),this.game.input.reset(!0),this.game.physics.clear(),this.game.time.removeAll(),this.game.scale.reset(this._clearWorld),this.game.debug&&this.game.debug.reset(),this._clearWorld&&(this.game.world.shutdown(),this._clearCache&&this.game.cache.destroy()))},checkState:function(a){return this.states[a]?this.states[a].preload||this.states[a].create||this.states[a].update||this.states[a].render?!0:(console.warn("Invalid Phaser State object given. Must contain at least a one of the required functions: preload, create, update or render"),!1):(console.warn("Phaser.StateManager - No state found with the key: "+a),!1)},link:function(a){this.states[a].game=this.game,this.states[a].add=this.game.add,this.states[a].make=this.game.make,this.states[a].camera=this.game.camera,this.states[a].cache=this.game.cache,this.states[a].input=this.game.input,this.states[a].load=this.game.load,this.states[a].math=this.game.math,this.states[a].sound=this.game.sound,this.states[a].scale=this.game.scale,this.states[a].state=this,this.states[a].stage=this.game.stage,this.states[a].time=this.game.time,this.states[a].tweens=this.game.tweens,this.states[a].world=this.game.world,this.states[a].particles=this.game.particles,this.states[a].rnd=this.game.rnd,this.states[a].physics=this.game.physics,this.states[a].key=a},unlink:function(a){this.states[a]&&(this.states[a].game=null,this.states[a].add=null,this.states[a].make=null,this.states[a].camera=null,this.states[a].cache=null,this.states[a].input=null,this.states[a].load=null,this.states[a].math=null,this.states[a].sound=null,this.states[a].scale=null,this.states[a].state=null,this.states[a].stage=null,this.states[a].time=null,this.states[a].tweens=null,this.states[a].world=null,this.states[a].particles=null,this.states[a].rnd=null,this.states[a].physics=null)},setCurrentState:function(a){this.callbackContext=this.states[a],this.link(a),this.onInitCallback=this.states[a].init||this.dummy,this.onPreloadCallback=this.states[a].preload||null,this.onLoadRenderCallback=this.states[a].loadRender||null,this.onLoadUpdateCallback=this.states[a].loadUpdate||null,this.onCreateCallback=this.states[a].create||null,this.onUpdateCallback=this.states[a].update||null,this.onPreRenderCallback=this.states[a].preRender||null,this.onRenderCallback=this.states[a].render||null,this.onResizeCallback=this.states[a].resize||null,this.onPausedCallback=this.states[a].paused||null,this.onResumedCallback=this.states[a].resumed||null,this.onPauseUpdateCallback=this.states[a].pauseUpdate||null,this.onShutDownCallback=this.states[a].shutdown||this.dummy,""!==this.current&&this.game.physics.reset(),this.current=a,this._created=!1,this.onInitCallback.apply(this.callbackContext,this._args),a===this._pendingState&&(this._args=[]),this.game._kickstart=!0},getCurrentState:function(){return this.states[this.current]},loadComplete:function(){this._created===!1&&this.onLoadUpdateCallback&&this.onLoadUpdateCallback.call(this.callbackContext,this.game),this._created===!1&&this.onCreateCallback?(this._created=!0,this.onCreateCallback.call(this.callbackContext,this.game)):this._created=!0},pause:function(){this._created&&this.onPausedCallback&&this.onPausedCallback.call(this.callbackContext,this.game)},resume:function(){this._created&&this.onResumedCallback&&this.onResumedCallback.call(this.callbackContext,this.game)},update:function(){this._created?this.onUpdateCallback&&this.onUpdateCallback.call(this.callbackContext,this.game):this.onLoadUpdateCallback&&this.onLoadUpdateCallback.call(this.callbackContext,this.game)},pauseUpdate:function(){this._created?this.onPauseUpdateCallback&&this.onPauseUpdateCallback.call(this.callbackContext,this.game):this.onLoadUpdateCallback&&this.onLoadUpdateCallback.call(this.callbackContext,this.game)},preRender:function(a){this._created&&this.onPreRenderCallback&&this.onPreRenderCallback.call(this.callbackContext,this.game,a)},resize:function(a,b){this.onResizeCallback&&this.onResizeCallback.call(this.callbackContext,a,b)},render:function(){this._created?this.onRenderCallback&&(this.game.renderType===c.CANVAS?(this.game.context.save(),this.game.context.setTransform(1,0,0,1,0,0),this.onRenderCallback.call(this.callbackContext,this.game),this.game.context.restore()):this.onRenderCallback.call(this.callbackContext,this.game)):this.onLoadRenderCallback&&this.onLoadRenderCallback.call(this.callbackContext,this.game)},destroy:function(){this._clearWorld=!0,this._clearCache=!0,this.clearCurrentState(),this.callbackContext=null,this.onInitCallback=null,this.onShutDownCallback=null,this.onPreloadCallback=null,this.onLoadRenderCallback=null,this.onLoadUpdateCallback=null,this.onCreateCallback=null,this.onUpdateCallback=null,this.onRenderCallback=null,this.onPausedCallback=null,this.onResumedCallback=null,this.onPauseUpdateCallback=null,this.game=null,this.states={},this._pendingState=null,this.current=""}},c.StateManager.prototype.constructor=c.StateManager,Object.defineProperty(c.StateManager.prototype,"created",{get:function(){return this._created}}),c.Signal=function(){},c.Signal.prototype={_bindings:null,_prevParams:null,memorize:!1,_shouldPropagate:!0,active:!0,_boundDispatch:!1,validateListener:function(a,b){if("function"!=typeof a)throw new Error("Phaser.Signal: listener is a required param of {fn}() and should be a Function.".replace("{fn}",b))},_registerListener:function(a,b,d,e,f){var g,h=this._indexOfListener(a,d);if(-1!==h){if(g=this._bindings[h],g.isOnce()!==b)throw new Error("You cannot add"+(b?"":"Once")+"() then add"+(b?"Once":"")+"() the same listener without removing the relationship first.")}else g=new c.SignalBinding(this,a,b,d,e,f),this._addBinding(g);return this.memorize&&this._prevParams&&g.execute(this._prevParams),g},_addBinding:function(a){this._bindings||(this._bindings=[]);var b=this._bindings.length;do b--;while(this._bindings[b]&&a._priority<=this._bindings[b]._priority);this._bindings.splice(b+1,0,a)},_indexOfListener:function(a,b){if(!this._bindings)return-1;void 0===b&&(b=null);for(var c,d=this._bindings.length;d--;)if(c=this._bindings[d],c._listener===a&&c.context===b)return d;return-1},has:function(a,b){return-1!==this._indexOfListener(a,b)},add:function(a,b,c){this.validateListener(a,"add");var d=[];if(arguments.length>3)for(var e=3;e3)for(var e=3;ea||a>=this.children.length?-1:this.getChildAt(a)},c.Group.prototype.create=function(a,b,c,d,e,f){void 0===e&&(e=!0);var g=new this.classType(this.game,a,b,c,d);return g.exists=e,g.visible=e,g.alive=e,this.add(g,!1,f)},c.Group.prototype.createMultiple=function(a,b,c,d){void 0===c&&(c=0),void 0===d&&(d=!1),Array.isArray(b)||(b=[b]),Array.isArray(c)||(c=[c]);var e=this,f=[];return b.forEach(function(b){c.forEach(function(c){for(var g=0;a>g;g++)f.push(e.create(0,0,b,c,d))})}),f},c.Group.prototype.updateZ=function(){for(var a=this.children.length;a--;)this.children[a].z=a},c.Group.prototype.align=function(a,b,d,e,f,g){if(void 0===f&&(f=c.TOP_LEFT),void 0===g&&(g=0),!(0===this.children.length||g>this.children.length||-1===a&&-1===b))for(var h=new c.Rectangle(0,0,d,e),i=a*d,j=b*e,k=g;kthis.children.length-1&&(a=0),this.cursor?(this.cursorIndex=a,this.cursor=this.children[this.cursorIndex],this.cursor):void 0},c.Group.prototype.next=function(){return this.cursor?(this.cursorIndex>=this.children.length-1?this.cursorIndex=0:this.cursorIndex++,this.cursor=this.children[this.cursorIndex],this.cursor):void 0},c.Group.prototype.previous=function(){return this.cursor?(0===this.cursorIndex?this.cursorIndex=this.children.length-1:this.cursorIndex--,this.cursor=this.children[this.cursorIndex],this.cursor):void 0},c.Group.prototype.swap=function(a,b){this.swapChildren(a,b),this.updateZ()},c.Group.prototype.bringToTop=function(a){return a.parent===this&&this.getIndex(a)0&&(this.remove(a,!1,!0),this.addAt(a,0,!0)),a},c.Group.prototype.moveUp=function(a){if(a.parent===this&&this.getIndex(a)0){var b=this.getIndex(a),c=this.getAt(b-1);c&&this.swap(a,c)}return a},c.Group.prototype.xy=function(a,b,c){return 0>a||a>this.children.length?-1:(this.getChildAt(a).x=b,void(this.getChildAt(a).y=c))},c.Group.prototype.reverse=function(){this.children.reverse(),this.updateZ()},c.Group.prototype.getIndex=function(a){return this.children.indexOf(a)},c.Group.prototype.getByName=function(a){for(var b=0;b0))return!1;var f=b.length;return 1===f?0===d?a[b[0]]=c:1==d?a[b[0]]+=c:2==d?a[b[0]]-=c:3==d?a[b[0]]*=c:4==d&&(a[b[0]]/=c):2===f?0===d?a[b[0]][b[1]]=c:1==d?a[b[0]][b[1]]+=c:2==d?a[b[0]][b[1]]-=c:3==d?a[b[0]][b[1]]*=c:4==d&&(a[b[0]][b[1]]/=c):3===f?0===d?a[b[0]][b[1]][b[2]]=c:1==d?a[b[0]][b[1]][b[2]]+=c:2==d?a[b[0]][b[1]][b[2]]-=c:3==d?a[b[0]][b[1]][b[2]]*=c:4==d&&(a[b[0]][b[1]][b[2]]/=c):4===f&&(0===d?a[b[0]][b[1]][b[2]][b[3]]=c:1==d?a[b[0]][b[1]][b[2]][b[3]]+=c:2==d?a[b[0]][b[1]][b[2]][b[3]]-=c:3==d?a[b[0]][b[1]][b[2]][b[3]]*=c:4==d&&(a[b[0]][b[1]][b[2]][b[3]]/=c)),!0},c.Group.prototype.checkProperty=function(a,b,d,e){return void 0===e&&(e=!1),!c.Utils.getProperty(a,b)&&e?!1:c.Utils.getProperty(a,b)!==d?!1:!0},c.Group.prototype.set=function(a,b,c,d,e,f,g){return void 0===g&&(g=!1),b=b.split("."),void 0===d&&(d=!1),void 0===e&&(e=!1),(d===!1||d&&a.alive)&&(e===!1||e&&a.visible)?this.setProperty(a,b,c,f,g):void 0},c.Group.prototype.setAll=function(a,b,c,d,e,f){void 0===c&&(c=!1),void 0===d&&(d=!1),void 0===f&&(f=!1),a=a.split("."),e=e||0;for(var g=0;g2){c=[];for(var d=2;d2){e=[];for(var f=2;f2){d=[null];for(var e=2;e2){d=[null];for(var e=2;e2){d=[null];for(var e=2;eb[this._sortProperty]?1:a.zb[this._sortProperty]?-1:0},c.Group.prototype.iterate=function(a,b,d,e,f,g){if(d===c.Group.RETURN_TOTAL&&0===this.children.length)return 0;for(var h=0,i=0;i0?this.children[this.children.length-1]:void 0},c.Group.prototype.getBottom=function(){return this.children.length>0?this.children[0]:void 0},c.Group.prototype.getClosestTo=function(a){for(var b=Number.MAX_VALUE,d=0,e=null,f=0;fd&&(b=d,e=g))}return e},c.Group.prototype.getFurthestFrom=function(a){for(var b=0,d=0,e=null,f=0;fb&&(b=d,e=g))}return e; -},c.Group.prototype.countLiving=function(){return this.iterate("alive",!0,c.Group.RETURN_TOTAL)},c.Group.prototype.countDead=function(){return this.iterate("alive",!1,c.Group.RETURN_TOTAL)},c.Group.prototype.getRandom=function(a,b){return 0===this.children.length?null:(a=a||0,b=b||this.children.length,c.ArrayUtils.getRandomItem(this.children,a,b))},c.Group.prototype.remove=function(a,b,c){if(void 0===b&&(b=!1),void 0===c&&(c=!1),0===this.children.length||-1===this.children.indexOf(a))return!1;c||!a.events||a.destroyPhase||a.events.onRemovedFromGroup$dispatch(a,this);var d=this.removeChild(a);return this.removeFromHash(a),this.updateZ(),this.cursor===a&&this.next(),b&&d&&d.destroy(!0),!0},c.Group.prototype.moveAll=function(a,b){if(void 0===b&&(b=!1),this.children.length>0&&a instanceof c.Group){do a.add(this.children[0],b);while(this.children.length>0);this.hash=[],this.cursor=null}return a},c.Group.prototype.removeAll=function(a,b,c){if(void 0===a&&(a=!1),void 0===b&&(b=!1),void 0===c&&(c=!1),0!==this.children.length){do{!b&&this.children[0].events&&this.children[0].events.onRemovedFromGroup$dispatch(this.children[0],this);var d=this.removeChild(this.children[0]);this.removeFromHash(d),a&&d&&d.destroy(!0,c)}while(this.children.length>0);this.hash=[],this.cursor=null}},c.Group.prototype.removeBetween=function(a,b,c,d){if(void 0===b&&(b=this.children.length-1),void 0===c&&(c=!1),void 0===d&&(d=!1),0!==this.children.length){if(a>b||0>a||b>this.children.length)return!1;for(var e=b;e>=a;){!d&&this.children[e].events&&this.children[e].events.onRemovedFromGroup$dispatch(this.children[e],this);var f=this.removeChild(this.children[e]);this.removeFromHash(f),c&&f&&f.destroy(!0),this.cursor===this.children[e]&&(this.cursor=null),e--}this.updateZ()}},c.Group.prototype.destroy=function(a,b){null===this.game||this.ignoreDestroy||(void 0===a&&(a=!0),void 0===b&&(b=!1),this.onDestroy.dispatch(this,a,b),this.removeAll(a),this.cursor=null,this.filters=null,this.pendingDestroy=!1,b||(this.parent&&this.parent.removeChild(this),this.game=null,this.exists=!1))},Object.defineProperty(c.Group.prototype,"total",{get:function(){return this.iterate("exists",!0,c.Group.RETURN_TOTAL)}}),Object.defineProperty(c.Group.prototype,"length",{get:function(){return this.children.length}}),Object.defineProperty(c.Group.prototype,"angle",{get:function(){return c.Math.radToDeg(this.rotation)},set:function(a){this.rotation=c.Math.degToRad(a)}}),c.World=function(a){c.Group.call(this,a,null,"__world",!1),this.bounds=new c.Rectangle(0,0,a.width,a.height),this.camera=null,this._definedSize=!1,this._width=a.width,this._height=a.height,this.game.state.onStateChange.add(this.stateChange,this)},c.World.prototype=Object.create(c.Group.prototype),c.World.prototype.constructor=c.World,c.World.prototype.boot=function(){this.camera=new c.Camera(this.game,0,0,0,this.game.width,this.game.height),this.game.stage.addChild(this),this.camera.boot()},c.World.prototype.stateChange=function(){this.x=0,this.y=0,this.camera.reset()},c.World.prototype.setBounds=function(a,b,c,d){this._definedSize=!0,this._width=c,this._height=d,this.bounds.setTo(a,b,c,d),this.x=a,this.y=b,this.camera.bounds&&this.camera.bounds.setTo(a,b,Math.max(c,this.game.width),Math.max(d,this.game.height)),this.game.physics.setBoundsToWorld()},c.World.prototype.resize=function(a,b){this._definedSize&&(athis.bounds.right&&(a.x=this.bounds.left)),e&&(a.y+a._currentBounds.heightthis.bounds.bottom&&(a.y=this.bounds.top))):(d&&a.x+bthis.bounds.right&&(a.x=this.bounds.left-b),e&&a.y+bthis.bounds.bottom&&(a.y=this.bounds.top-b))},Object.defineProperty(c.World.prototype,"width",{get:function(){return this.bounds.width},set:function(a){ag;g++)e>g?f.push("color: #ff2424; background: #fff"):f.push("color: #959595; background: #fff");console.log.apply(console,f)}else window.console&&console.log("Phaser v"+a+" | Pixi.js "+PIXI.VERSION+" | "+b+" | "+d+" | http://phaser.io")}},setUpRenderer:function(){if(this.config.canvas?this.canvas=this.config.canvas:this.canvas=c.Canvas.create(this,this.width,this.height,this.config.canvasID,!0),this.config.canvasStyle?this.canvas.style=this.config.canvasStyle:this.canvas.style["-webkit-full-screen"]="width: 100%; height: 100%",this.renderType===c.HEADLESS||this.renderType===c.CANVAS||this.renderType===c.AUTO&&!this.device.webGL){if(!this.device.canvas)throw new Error("Phaser.Game - Cannot create Canvas or WebGL context, aborting.");this.renderType=c.CANVAS,this.renderer=new PIXI.CanvasRenderer(this),this.context=this.renderer.context}else this.renderType=c.WEBGL,this.renderer=new PIXI.WebGLRenderer(this),this.context=null,this.canvas.addEventListener("webglcontextlost",this.contextLost.bind(this),!1),this.canvas.addEventListener("webglcontextrestored",this.contextRestored.bind(this),!1);this.device.cocoonJS&&(this.canvas.screencanvas=this.renderType===c.CANVAS?!0:!1),this.renderType!==c.HEADLESS&&(this.stage.smoothed=this.antialias,c.Canvas.addToDOM(this.canvas,this.parent,!1),c.Canvas.setTouchAction(this.canvas))},contextLost:function(a){a.preventDefault(),this.renderer.contextLost=!0},contextRestored:function(){this.renderer.initContext(),this.cache.clearGLTextures(),this.renderer.contextLost=!1},update:function(a){if(this.time.update(a),this._kickstart)return this.updateLogic(this.time.desiredFpsMult),this.updateRender(this.time.slowMotion*this.time.desiredFps),void(this._kickstart=!1);if(this._spiraling>1&&!this.forceSingleUpdate)this.time.time>this._nextFpsNotification&&(this._nextFpsNotification=this.time.time+1e4,this.fpsProblemNotifier.dispatch()),this._deltaTime=0,this._spiraling=0,this.updateRender(this.time.slowMotion*this.time.desiredFps);else{var b=1e3*this.time.slowMotion/this.time.desiredFps;this._deltaTime+=Math.max(Math.min(3*b,this.time.elapsed),0);var c=0;for(this.updatesThisFrame=Math.floor(this._deltaTime/b),this.forceSingleUpdate&&(this.updatesThisFrame=Math.min(1,this.updatesThisFrame));this._deltaTime>=b&&(this._deltaTime-=b,this.currentUpdateID=c,this.updateLogic(this.time.desiredFpsMult),c++,!this.forceSingleUpdate||1!==c);)this.time.refresh();c>this._lastCount?this._spiraling++:c=c.Input.MAX_POINTERS)return console.warn("Phaser.Input.addPointer: Maximum limit of "+c.Input.MAX_POINTERS+" pointers reached."),null;var a=this.pointers.length+1,b=new c.Pointer(this.game,a,c.PointerMode.TOUCH);return this.pointers.push(b),this["pointer"+a]=b,b},update:function(){if(this.keyboard&&this.keyboard.update(),this.pollRate>0&&this._pollCounter=0&&this.countActivePointers(this.maxPointers)>=this.maxPointers)return null;if(!this.pointer1.active)return this.pointer1.start(a);if(!this.pointer2.active)return this.pointer2.start(a);for(var b=2;b0;c++){var d=this.pointers[c];d.active&&b--}return a-b},getPointer:function(a){void 0===a&&(a=!1);for(var b=0;b=g&&this._localPoint.x=h&&this._localPoint.y=g&&this._localPoint.x=h&&this._localPoint.y0&&this._pollCounterthis.game.time.time},justReleased:function(a){return a=a||250,this.isUp&&this.timeUp+a>this.game.time.time},reset:function(){this.isDown=!1,this.isUp=!0,this.timeDown=this.game.time.time,this.repeats=0,this.altKey=!1,this.shiftKey=!1,this.ctrlKey=!1},destroy:function(){this.onDown.dispose(),this.onUp.dispose(),this.onFloat.dispose(),this.parent=null,this.game=null}},c.DeviceButton.prototype.constructor=c.DeviceButton,Object.defineProperty(c.DeviceButton.prototype,"duration",{get:function(){return this.isUp?-1:this.game.time.time-this.timeDown}}),c.Pointer=function(a,b,d){this.game=a,this.id=b,this.type=c.POINTER,this.exists=!0,this.identifier=0,this.pointerId=null,this.pointerMode=d||c.PointerMode.CURSOR|c.PointerMode.CONTACT,this.target=null,this.button=null,this.leftButton=new c.DeviceButton(this,c.Pointer.LEFT_BUTTON),this.middleButton=new c.DeviceButton(this,c.Pointer.MIDDLE_BUTTON),this.rightButton=new c.DeviceButton(this,c.Pointer.RIGHT_BUTTON),this.backButton=new c.DeviceButton(this,c.Pointer.BACK_BUTTON),this.forwardButton=new c.DeviceButton(this,c.Pointer.FORWARD_BUTTON),this.eraserButton=new c.DeviceButton(this,c.Pointer.ERASER_BUTTON),this._holdSent=!1,this._history=[],this._nextDrop=0,this._stateReset=!1,this.withinGame=!1,this.clientX=-1,this.clientY=-1,this.pageX=-1,this.pageY=-1,this.screenX=-1,this.screenY=-1,this.rawMovementX=0,this.rawMovementY=0,this.movementX=0,this.movementY=0,this.x=-1,this.y=-1,this.isMouse=0===b,this.isDown=!1,this.isUp=!0,this.timeDown=0,this.timeUp=0,this.previousTapTime=0,this.totalTouches=0,this.msSinceLastClick=Number.MAX_VALUE,this.targetObject=null,this.interactiveCandidates=[],this.active=!1,this.dirty=!1,this.position=new c.Point,this.positionDown=new c.Point,this.positionUp=new c.Point,this.circle=new c.Circle(0,0,44),this._clickTrampolines=null,this._trampolineTargetObject=null},c.Pointer.NO_BUTTON=0,c.Pointer.LEFT_BUTTON=1,c.Pointer.RIGHT_BUTTON=2,c.Pointer.MIDDLE_BUTTON=4,c.Pointer.BACK_BUTTON=8,c.Pointer.FORWARD_BUTTON=16,c.Pointer.ERASER_BUTTON=32,c.Pointer.prototype={resetButtons:function(){this.isDown=!1,this.isUp=!0,this.isMouse&&(this.leftButton.reset(),this.middleButton.reset(),this.rightButton.reset(),this.backButton.reset(),this.forwardButton.reset(),this.eraserButton.reset())},processButtonsDown:function(a,b){c.Pointer.LEFT_BUTTON&a&&this.leftButton.start(b),c.Pointer.RIGHT_BUTTON&a&&this.rightButton.start(b),c.Pointer.MIDDLE_BUTTON&a&&this.middleButton.start(b),c.Pointer.BACK_BUTTON&a&&this.backButton.start(b),c.Pointer.FORWARD_BUTTON&a&&this.forwardButton.start(b),c.Pointer.ERASER_BUTTON&a&&this.eraserButton.start(b)},processButtonsUp:function(a,b){a===c.Mouse.LEFT_BUTTON&&this.leftButton.stop(b),a===c.Mouse.RIGHT_BUTTON&&this.rightButton.stop(b),a===c.Mouse.MIDDLE_BUTTON&&this.middleButton.stop(b),a===c.Mouse.BACK_BUTTON&&this.backButton.stop(b),a===c.Mouse.FORWARD_BUTTON&&this.forwardButton.stop(b),5===a&&this.eraserButton.stop(b)},updateButtons:function(a){this.button=a.button;var b="down"===a.type.toLowerCase().substr(-4);void 0!==a.buttons?b?this.processButtonsDown(a.buttons,a):this.processButtonsUp(a.button,a):b?this.leftButton.start(a):(this.leftButton.stop(a),this.rightButton.stop(a)),1===a.buttons&&a.ctrlKey&&this.leftButton.isDown&&(this.leftButton.stop(a),this.rightButton.start(a)),this.isUp=!0,this.isDown=!1,(this.leftButton.isDown||this.rightButton.isDown||this.middleButton.isDown||this.backButton.isDown||this.forwardButton.isDown||this.eraserButton.isDown)&&(this.isUp=!1,this.isDown=!0)},start:function(a){var b=this.game.input;return a.pointerId&&(this.pointerId=a.pointerId),this.identifier=a.identifier,this.target=a.target,this.isMouse?this.updateButtons(a):(this.isDown=!0,this.isUp=!1),this.active=!0,this.withinGame=!0,this.dirty=!1,this._history=[],this._clickTrampolines=null,this._trampolineTargetObject=null,this.msSinceLastClick=this.game.time.time-this.timeDown,this.timeDown=this.game.time.time,this._holdSent=!1,this.move(a,!0),this.positionDown.setTo(this.x,this.y),(b.multiInputOverride===c.Input.MOUSE_OVERRIDES_TOUCH||b.multiInputOverride===c.Input.MOUSE_TOUCH_COMBINE||b.multiInputOverride===c.Input.TOUCH_OVERRIDES_MOUSE&&0===b.totalActivePointers)&&(b.x=this.x,b.y=this.y,b.position.setTo(this.x,this.y),b.onDown.dispatch(this,a),b.resetSpeed(this.x,this.y)),this._stateReset=!1,this.totalTouches++,null!==this.targetObject&&this.targetObject._touchedHandler(this),this},update:function(){var a=this.game.input;this.active&&(this.dirty&&(a.interactiveItems.total>0&&this.processInteractiveObjects(!1),this.dirty=!1),this._holdSent===!1&&this.duration>=a.holdRate&&((a.multiInputOverride===c.Input.MOUSE_OVERRIDES_TOUCH||a.multiInputOverride===c.Input.MOUSE_TOUCH_COMBINE||a.multiInputOverride===c.Input.TOUCH_OVERRIDES_MOUSE&&0===a.totalActivePointers)&&a.onHold.dispatch(this),this._holdSent=!0),a.recordPointerHistory&&this.game.time.time>=this._nextDrop&&(this._nextDrop=this.game.time.time+a.recordRate,this._history.push({x:this.position.x,y:this.position.y}),this._history.length>a.recordLimit&&this._history.shift()))},move:function(a,b){var d=this.game.input;if(!d.pollLocked){if(void 0===b&&(b=!1),void 0!==a.button&&(this.button=a.button),b&&this.isMouse&&this.updateButtons(a),this.clientX=a.clientX,this.clientY=a.clientY,this.pageX=a.pageX,this.pageY=a.pageY,this.screenX=a.screenX,this.screenY=a.screenY,this.isMouse&&d.mouse.locked&&!b&&(this.rawMovementX=a.movementX||a.mozMovementX||a.webkitMovementX||0,this.rawMovementY=a.movementY||a.mozMovementY||a.webkitMovementY||0,this.movementX+=this.rawMovementX,this.movementY+=this.rawMovementY),this.x=(this.pageX-this.game.scale.offset.x)*d.scale.x,this.y=(this.pageY-this.game.scale.offset.y)*d.scale.y,this.position.setTo(this.x,this.y),this.circle.x=this.x,this.circle.y=this.y,(d.multiInputOverride===c.Input.MOUSE_OVERRIDES_TOUCH||d.multiInputOverride===c.Input.MOUSE_TOUCH_COMBINE||d.multiInputOverride===c.Input.TOUCH_OVERRIDES_MOUSE&&0===d.totalActivePointers)&&(d.activePointer=this,d.x=this.x,d.y=this.y,d.position.setTo(d.x,d.y),d.circle.x=d.x,d.circle.y=d.y),this.withinGame=this.game.scale.bounds.contains(this.pageX,this.pageY),this.game.paused)return this;for(var e=d.moveCallbacks.length;e--;)d.moveCallbacks[e].callback.call(d.moveCallbacks[e].context,this,this.x,this.y,b);return null!==this.targetObject&&this.targetObject.isDragged===!0?this.targetObject.update(this)===!1&&(this.targetObject=null):d.interactiveItems.total>0&&this.processInteractiveObjects(b),this}},processInteractiveObjects:function(a){var b=0,c=-1,d=null,e=this.game.input.interactiveItems.first;for(this.interactiveCandidates=[];e;)e.checked=!1,e.validForInput(c,b,!1)&&(e.checked=!0,(a&&e.checkPointerDown(this,!0)||!a&&e.checkPointerOver(this,!0))&&(b=e.sprite.renderOrderID,c=e.priorityID,d=e,this.interactiveCandidates.push(e))),e=this.game.input.interactiveItems.next;for(e=this.game.input.interactiveItems.first;e;)!e.checked&&e.validForInput(c,b,!0)&&(a&&e.checkPointerDown(this,!1)||!a&&e.checkPointerOver(this,!1))&&(b=e.sprite.renderOrderID,c=e.priorityID,d=e,this.interactiveCandidates.push(e)),e=this.game.input.interactiveItems.next;return this.game.input.customCandidateHandler&&(d=this.game.input.customCandidateHandler.call(this.game.input.customCandidateHandlerContext,this,this.interactiveCandidates,d)),this.swapTarget(d,!1),null!==this.targetObject},swapTarget:function(a,b){void 0===b&&(b=!1),null===a?this.targetObject&&(this.targetObject._pointerOutHandler(this,b),this.targetObject=null):null===this.targetObject?(this.targetObject=a,a._pointerOverHandler(this,b)):this.targetObject===a?a.update(this)===!1&&(this.targetObject=null):(this.targetObject._pointerOutHandler(this,b),this.targetObject=a,this.targetObject._pointerOverHandler(this,b))},leave:function(a){this.withinGame=!1,this.move(a,!1)},stop:function(a){var b=this.game.input;return this._stateReset&&this.withinGame?void a.preventDefault():(this.timeUp=this.game.time.time,(b.multiInputOverride===c.Input.MOUSE_OVERRIDES_TOUCH||b.multiInputOverride===c.Input.MOUSE_TOUCH_COMBINE||b.multiInputOverride===c.Input.TOUCH_OVERRIDES_MOUSE&&0===b.totalActivePointers)&&(b.onUp.dispatch(this,a),this.duration>=0&&this.duration<=b.tapRate&&(this.timeUp-this.previousTapTime0&&(this.active=!1),this.withinGame=this.game.scale.bounds.contains(a.pageX,a.pageY),this.pointerId=null,this.identifier=null,this.positionUp.setTo(this.x,this.y),this.isMouse===!1&&b.currentPointers--,b.interactiveItems.callAll("_releasedHandler",this),this._clickTrampolines&&(this._trampolineTargetObject=this.targetObject),this.targetObject=null,this)},justPressed:function(a){return a=a||this.game.input.justPressedRate,this.isDown===!0&&this.timeDown+a>this.game.time.time},justReleased:function(a){return a=a||this.game.input.justReleasedRate,this.isUp&&this.timeUp+a>this.game.time.time},addClickTrampoline:function(a,b,c,d){if(this.isDown){for(var e=this._clickTrampolines=this._clickTrampolines||[],f=0;fd;d++)this._pointerData[d]={id:d,x:0,y:0,isDown:!1,isUp:!1,isOver:!1,isOut:!1,timeOver:0,timeOut:0,timeDown:0,timeUp:0,downDuration:0,isDragged:!1};this.snapOffset=new c.Point,this.enabled=!0,this._wasEnabled=!0}return this.sprite.events.onAddedToGroup.add(this.addedToGroup,this),this.sprite.events.onRemovedFromGroup.add(this.removedFromGroup,this),this.flagged=!1,this.sprite},addedToGroup:function(){this._dragPhase||this._wasEnabled&&!this.enabled&&this.start()},removedFromGroup:function(){this._dragPhase||(this.enabled?(this._wasEnabled=!0,this.stop()):this._wasEnabled=!1)},reset:function(){this.enabled=!1,this.flagged=!1;for(var a=0;10>a;a++)this._pointerData[a]={id:a,x:0,y:0,isDown:!1,isUp:!1,isOver:!1,isOut:!1,timeOver:0,timeOut:0,timeDown:0,timeUp:0,downDuration:0,isDragged:!1}},stop:function(){this.enabled!==!1&&(this.enabled=!1,this.game.input.interactiveItems.remove(this))},destroy:function(){this.sprite&&(this._setHandCursor&&(this.game.canvas.style.cursor="default",this._setHandCursor=!1),this.enabled=!1,this.game.input.interactiveItems.remove(this),this._pointerData.length=0,this.boundsRect=null,this.boundsSprite=null,this.sprite=null)},validForInput:function(a,b,c){return void 0===c&&(c=!0),!this.enabled||0===this.sprite.scale.x||0===this.sprite.scale.y||this.priorityIDa||this.priorityID===a&&this.sprite.renderOrderID>b)?!0:!1},isPixelPerfect:function(){return this.pixelPerfectClick||this.pixelPerfectOver},pointerX:function(a){return a=a||0,this._pointerData[a].x},pointerY:function(a){return a=a||0,this._pointerData[a].y},pointerDown:function(a){return a=a||0,this._pointerData[a].isDown},pointerUp:function(a){return a=a||0,this._pointerData[a].isUp},pointerTimeDown:function(a){return a=a||0,this._pointerData[a].timeDown},pointerTimeUp:function(a){return a=a||0,this._pointerData[a].timeUp},pointerOver:function(a){if(!this.enabled)return!1;if(void 0===a){for(var b=0;10>b;b++)if(this._pointerData[b].isOver)return!0;return!1}return this._pointerData[a].isOver},pointerOut:function(a){if(!this.enabled)return!1;if(void 0!==a)return this._pointerData[a].isOut;for(var b=0;10>b;b++)if(this._pointerData[b].isOut)return!0},pointerTimeOver:function(a){return a=a||0,this._pointerData[a].timeOver},pointerTimeOut:function(a){return a=a||0,this._pointerData[a].timeOut},pointerDragged:function(a){return a=a||0,this._pointerData[a].isDragged},checkPointerDown:function(a,b){return a.isDown&&this.enabled&&this.sprite&&this.sprite.parent&&this.sprite.visible&&this.sprite.parent.visible&&0!==this.sprite.worldScale.x&&0!==this.sprite.worldScale.y&&this.game.input.hitTest(this.sprite,a,this._tempPoint)?(void 0===b&&(b=!1),!b&&this.pixelPerfectClick?this.checkPixel(this._tempPoint.x,this._tempPoint.y):!0):!1},checkPointerOver:function(a,b){return this.enabled&&this.sprite&&this.sprite.parent&&this.sprite.visible&&this.sprite.parent.visible&&0!==this.sprite.worldScale.x&&0!==this.sprite.worldScale.y&&this.game.input.hitTest(this.sprite,a,this._tempPoint)?(void 0===b&&(b=!1),!b&&this.pixelPerfectOver?this.checkPixel(this._tempPoint.x,this._tempPoint.y):!0):!1},checkPixel:function(a,b,c){if(this.sprite.texture.baseTexture.source){if(null===a&&null===b){this.game.input.getLocalPosition(this.sprite,c,this._tempPoint);var a=this._tempPoint.x,b=this._tempPoint.y}if(0!==this.sprite.anchor.x&&(a-=-this.sprite.texture.frame.width*this.sprite.anchor.x),0!==this.sprite.anchor.y&&(b-=-this.sprite.texture.frame.height*this.sprite.anchor.y),a+=this.sprite.texture.frame.x,b+=this.sprite.texture.frame.y,this.sprite.texture.trim&&(a-=this.sprite.texture.trim.x,b-=this.sprite.texture.trim.y,athis.sprite.texture.crop.right||bthis.sprite.texture.crop.bottom))return this._dx=a,this._dy=b,!1;this._dx=a,this._dy=b,this.game.input.hitContext.clearRect(0,0,1,1),this.game.input.hitContext.drawImage(this.sprite.texture.baseTexture.source,a,b,1,1,0,0,1,1);var d=this.game.input.hitContext.getImageData(0,0,1,1);if(d.data[3]>=this.pixelPerfectAlpha)return!0}return!1},update:function(a){return null!==this.sprite&&void 0!==this.sprite.parent?this.enabled&&this.sprite.visible&&this.sprite.parent.visible?this._pendingDrag?(this._dragDistancePass||(this._dragDistancePass=c.Math.distance(a.x,a.y,this.downPoint.x,this.downPoint.y)>=this.dragDistanceThreshold),this._dragDistancePass&&this._dragTimePass&&this.startDrag(a),!0):this.draggable&&this._draggedPointerID===a.id?this.updateDrag(a):this._pointerData[a.id].isOver?this.checkPointerOver(a)?(this._pointerData[a.id].x=a.x-this.sprite.x,this._pointerData[a.id].y=a.y-this.sprite.y,!0):(this._pointerOutHandler(a),!1):void 0:(this._pointerOutHandler(a),!1):void 0},_pointerOverHandler:function(a,b){if(null!==this.sprite){var d=this._pointerData[a.id];if(d.isOver===!1||a.dirty){var e=d.isOver===!1;d.isOver=!0,d.isOut=!1,d.timeOver=this.game.time.time,d.x=a.x-this.sprite.x,d.y=a.y-this.sprite.y,this.useHandCursor&&d.isDragged===!1&&(this.game.canvas.style.cursor="pointer",this._setHandCursor=!0),!b&&e&&this.sprite&&this.sprite.events&&this.sprite.events.onInputOver$dispatch(this.sprite,a),this.sprite.parent&&this.sprite.parent.type===c.GROUP&&this.sprite.parent.onChildInputOver.dispatch(this.sprite,a)}}},_pointerOutHandler:function(a,b){if(null!==this.sprite){var d=this._pointerData[a.id];d.isOver=!1,d.isOut=!0,d.timeOut=this.game.time.time,this.useHandCursor&&d.isDragged===!1&&(this.game.canvas.style.cursor="default",this._setHandCursor=!1),!b&&this.sprite&&this.sprite.events&&(this.sprite.events.onInputOut$dispatch(this.sprite,a),this.sprite&&this.sprite.parent&&this.sprite.parent.type===c.GROUP&&this.sprite.parent.onChildInputOut.dispatch(this.sprite,a))}},_touchedHandler:function(a){if(null!==this.sprite){var b=this._pointerData[a.id];if(!b.isDown&&b.isOver){if(this.pixelPerfectClick&&!this.checkPixel(null,null,a))return;if(b.isDown=!0,b.isUp=!1,b.timeDown=this.game.time.time,this.downPoint.set(a.x,a.y),a.dirty=!0,this.sprite&&this.sprite.events&&(this.sprite.events.onInputDown$dispatch(this.sprite,a),this.sprite&&this.sprite.parent&&this.sprite.parent.type===c.GROUP&&this.sprite.parent.onChildInputDown.dispatch(this.sprite,a),null===this.sprite))return;this.draggable&&this.isDragged===!1&&(0===this.dragTimeThreshold&&0===this.dragDistanceThreshold?this.startDrag(a):(this._pendingDrag=!0,this._dragDistancePass=0===this.dragDistanceThreshold,this.dragTimeThreshold>0?(this._dragTimePass=!1,this.game.time.events.add(this.dragTimeThreshold,this.dragTimeElapsed,this,a)):this._dragTimePass=!0)),this.bringToTop&&this.sprite.bringToTop()}}},dragTimeElapsed:function(a){this._dragTimePass=!0,this._pendingDrag&&this.sprite&&this._dragDistancePass&&this.startDrag(a)},_releasedHandler:function(a){if(null!==this.sprite){var b=this._pointerData[a.id];if(b.isDown&&a.isUp){b.isDown=!1,b.isUp=!0,b.timeUp=this.game.time.time,b.downDuration=b.timeUp-b.timeDown;var d=this.checkPointerOver(a);this.sprite&&this.sprite.events&&(this.dragStopBlocksInputUp&&(!this.dragStopBlocksInputUp||this.draggable&&this.isDragged&&this._draggedPointerID===a.id)||this.sprite.events.onInputUp$dispatch(this.sprite,a,d),this.sprite&&this.sprite.parent&&this.sprite.parent.type===c.GROUP&&this.sprite.parent.onChildInputUp.dispatch(this.sprite,a,d),d&&(d=this.checkPointerOver(a))),b.isOver=d,!d&&this.useHandCursor&&(this.game.canvas.style.cursor="default",this._setHandCursor=!1),a.dirty=!0,this._pendingDrag=!1,this.draggable&&this.isDragged&&this._draggedPointerID===a.id&&this.stopDrag(a)}}},updateDrag:function(a,b){if(a.isUp)return this.stopDrag(a),!1;void 0===b&&(b=!1);var c=this.globalToLocalX(a.x)+this._dragPoint.x+this.dragOffset.x,d=this.globalToLocalY(a.y)+this._dragPoint.y+this.dragOffset.y;if(this.sprite.fixedToCamera)this.allowHorizontalDrag&&(this.sprite.cameraOffset.x=c),this.allowVerticalDrag&&(this.sprite.cameraOffset.y=d),this.boundsRect&&this.checkBoundsRect(),this.boundsSprite&&this.checkBoundsSprite(),this.snapOnDrag&&(this.sprite.cameraOffset.x=Math.round((this.sprite.cameraOffset.x-this.snapOffsetX%this.snapX)/this.snapX)*this.snapX+this.snapOffsetX%this.snapX,this.sprite.cameraOffset.y=Math.round((this.sprite.cameraOffset.y-this.snapOffsetY%this.snapY)/this.snapY)*this.snapY+this.snapOffsetY%this.snapY,this.snapPoint.set(this.sprite.cameraOffset.x,this.sprite.cameraOffset.y));else{var e=this.game.camera.x-this._pointerData[a.id].camX,f=this.game.camera.y-this._pointerData[a.id].camY;this.allowHorizontalDrag&&(this.sprite.x=c+e),this.allowVerticalDrag&&(this.sprite.y=d+f),this.boundsRect&&this.checkBoundsRect(),this.boundsSprite&&this.checkBoundsSprite(),this.snapOnDrag&&(this.sprite.x=Math.round((this.sprite.x-this.snapOffsetX%this.snapX)/this.snapX)*this.snapX+this.snapOffsetX%this.snapX,this.sprite.y=Math.round((this.sprite.y-this.snapOffsetY%this.snapY)/this.snapY)*this.snapY+this.snapOffsetY%this.snapY,this.snapPoint.set(this.sprite.x,this.sprite.y))}return this.sprite.events.onDragUpdate.dispatch(this.sprite,a,c,d,this.snapPoint,b),!0},justOver:function(a,b){return a=a||0,b=b||500,this._pointerData[a].isOver&&this.overDuration(a)a;a++)this._pointerData[a].isDragged=!1;this.draggable=!1,this.isDragged=!1,this._draggedPointerID=-1,this._pendingDrag=!1},startDrag:function(a){var b=this.sprite.x,c=this.sprite.y;if(this.isDragged=!0,this._draggedPointerID=a.id,this._pointerData[a.id].camX=this.game.camera.x,this._pointerData[a.id].camY=this.game.camera.y,this._pointerData[a.id].isDragged=!0,this.sprite.fixedToCamera){if(this.dragFromCenter){var d=this.sprite.getBounds();this.sprite.cameraOffset.x=this.globalToLocalX(a.x)+(this.sprite.cameraOffset.x-d.centerX),this.sprite.cameraOffset.y=this.globalToLocalY(a.y)+(this.sprite.cameraOffset.y-d.centerY)}this._dragPoint.setTo(this.sprite.cameraOffset.x-a.x,this.sprite.cameraOffset.y-a.y)}else{if(this.dragFromCenter){var d=this.sprite.getBounds();this.sprite.x=this.globalToLocalX(a.x)+(this.sprite.x-d.centerX),this.sprite.y=this.globalToLocalY(a.y)+(this.sprite.y-d.centerY)}this._dragPoint.setTo(this.sprite.x-this.globalToLocalX(a.x),this.sprite.y-this.globalToLocalY(a.y))}this.updateDrag(a,!0),this.bringToTop&&(this._dragPhase=!0,this.sprite.bringToTop()),this.dragStartPoint.set(b,c),this.sprite.events.onDragStart$dispatch(this.sprite,a,b,c),this._pendingDrag=!1},globalToLocalX:function(a){return this.scaleLayer&&(a-=this.game.scale.grid.boundsFluid.x,a*=this.game.scale.grid.scaleFluidInversed.x),a},globalToLocalY:function(a){return this.scaleLayer&&(a-=this.game.scale.grid.boundsFluid.y,a*=this.game.scale.grid.scaleFluidInversed.y),a},stopDrag:function(a){this.isDragged=!1,this._draggedPointerID=-1,this._pointerData[a.id].isDragged=!1,this._dragPhase=!1,this._pendingDrag=!1,this.snapOnRelease&&(this.sprite.fixedToCamera?(this.sprite.cameraOffset.x=Math.round((this.sprite.cameraOffset.x-this.snapOffsetX%this.snapX)/this.snapX)*this.snapX+this.snapOffsetX%this.snapX,this.sprite.cameraOffset.y=Math.round((this.sprite.cameraOffset.y-this.snapOffsetY%this.snapY)/this.snapY)*this.snapY+this.snapOffsetY%this.snapY):(this.sprite.x=Math.round((this.sprite.x-this.snapOffsetX%this.snapX)/this.snapX)*this.snapX+this.snapOffsetX%this.snapX,this.sprite.y=Math.round((this.sprite.y-this.snapOffsetY%this.snapY)/this.snapY)*this.snapY+this.snapOffsetY%this.snapY)),this.sprite.events.onDragStop$dispatch(this.sprite,a),this.checkPointerOver(a)===!1&&this._pointerOutHandler(a)},setDragLock:function(a,b){void 0===a&&(a=!0),void 0===b&&(b=!0),this.allowHorizontalDrag=a,this.allowVerticalDrag=b},enableSnap:function(a,b,c,d,e,f){void 0===c&&(c=!0),void 0===d&&(d=!1),void 0===e&&(e=0),void 0===f&&(f=0),this.snapX=a,this.snapY=b,this.snapOffsetX=e,this.snapOffsetY=f,this.snapOnDrag=c,this.snapOnRelease=d},disableSnap:function(){this.snapOnDrag=!1,this.snapOnRelease=!1},checkBoundsRect:function(){this.sprite.fixedToCamera?(this.sprite.cameraOffset.xthis.boundsRect.right&&(this.sprite.cameraOffset.x=this.boundsRect.right-this.sprite.width),this.sprite.cameraOffset.ythis.boundsRect.bottom&&(this.sprite.cameraOffset.y=this.boundsRect.bottom-this.sprite.height)):(this.sprite.leftthis.boundsRect.right&&(this.sprite.x=this.boundsRect.right-(this.sprite.width-this.sprite.offsetX)), -this.sprite.topthis.boundsRect.bottom&&(this.sprite.y=this.boundsRect.bottom-(this.sprite.height-this.sprite.offsetY)))},checkBoundsSprite:function(){this.sprite.fixedToCamera&&this.boundsSprite.fixedToCamera?(this.sprite.cameraOffset.xthis.boundsSprite.cameraOffset.x+this.boundsSprite.width&&(this.sprite.cameraOffset.x=this.boundsSprite.cameraOffset.x+this.boundsSprite.width-this.sprite.width),this.sprite.cameraOffset.ythis.boundsSprite.cameraOffset.y+this.boundsSprite.height&&(this.sprite.cameraOffset.y=this.boundsSprite.cameraOffset.y+this.boundsSprite.height-this.sprite.height)):(this.sprite.leftthis.boundsSprite.right&&(this.sprite.x=this.boundsSprite.right-(this.sprite.width-this.sprite.offsetX)),this.sprite.topthis.boundsSprite.bottom&&(this.sprite.y=this.boundsSprite.bottom-(this.sprite.height-this.sprite.offsetY)))}},c.InputHandler.prototype.constructor=c.InputHandler,c.Gamepad=function(a){this.game=a,this._gamepadIndexMap={},this._rawPads=[],this._active=!1,this.enabled=!0,this._gamepadSupportAvailable=!!navigator.webkitGetGamepads||!!navigator.webkitGamepads||-1!=navigator.userAgent.indexOf("Firefox/")||!!navigator.getGamepads,this._prevRawGamepadTypes=[],this._prevTimestamps=[],this.callbackContext=this,this.onConnectCallback=null,this.onDisconnectCallback=null,this.onDownCallback=null,this.onUpCallback=null,this.onAxisCallback=null,this.onFloatCallback=null,this._ongamepadconnected=null,this._gamepaddisconnected=null,this._gamepads=[new c.SinglePad(a,this),new c.SinglePad(a,this),new c.SinglePad(a,this),new c.SinglePad(a,this)]},c.Gamepad.prototype={addCallbacks:function(a,b){"undefined"!=typeof b&&(this.onConnectCallback="function"==typeof b.onConnect?b.onConnect:this.onConnectCallback,this.onDisconnectCallback="function"==typeof b.onDisconnect?b.onDisconnect:this.onDisconnectCallback,this.onDownCallback="function"==typeof b.onDown?b.onDown:this.onDownCallback,this.onUpCallback="function"==typeof b.onUp?b.onUp:this.onUpCallback,this.onAxisCallback="function"==typeof b.onAxis?b.onAxis:this.onAxisCallback,this.onFloatCallback="function"==typeof b.onFloat?b.onFloat:this.onFloatCallback,this.callbackContext=a)},start:function(){if(!this._active){this._active=!0;var a=this;this._onGamepadConnected=function(b){return a.onGamepadConnected(b)},this._onGamepadDisconnected=function(b){return a.onGamepadDisconnected(b)},window.addEventListener("gamepadconnected",this._onGamepadConnected,!1),window.addEventListener("gamepaddisconnected",this._onGamepadDisconnected,!1)}},onGamepadConnected:function(a){var b=a.gamepad;this._rawPads.push(b),this._gamepads[b.index].connect(b)},onGamepadDisconnected:function(a){var b=a.gamepad;for(var c in this._rawPads)this._rawPads[c].index===b.index&&this._rawPads.splice(c,1);this._gamepads[b.index].disconnect()},update:function(){this._pollGamepads(),this.pad1.pollStatus(),this.pad2.pollStatus(),this.pad3.pollStatus(),this.pad4.pollStatus()},_pollGamepads:function(){if(this._active){if(navigator.getGamepads)var a=navigator.getGamepads();else if(navigator.webkitGetGamepads)var a=navigator.webkitGetGamepads();else if(navigator.webkitGamepads)var a=navigator.webkitGamepads();if(a){this._rawPads=[];for(var b=!1,c=0;c0&&d>this.deadZone||0>d&&d<-this.deadZone?this.processAxisChange(c,d):this.processAxisChange(c,0)}this._prevTimestamp=this._rawPad.timestamp}},connect:function(a){var b=!this.connected;this.connected=!0,this.index=a.index,this._rawPad=a,this._buttons=[],this._buttonsLen=a.buttons.length,this._axes=[],this._axesLen=a.axes.length;for(var d=0;dthis.maxHealth&&(this.health=this.maxHealth),this},heal:function(a){return this.alive&&(this.health+=a,this.health>this.maxHealth&&(this.health=this.maxHealth)),this}},c.Component.InCamera=function(){},c.Component.InCamera.prototype={inCamera:{get:function(){return this.game.world.camera.view.intersects(this._bounds)}}},c.Component.InputEnabled=function(){},c.Component.InputEnabled.prototype={input:null,inputEnabled:{get:function(){return this.input&&this.input.enabled},set:function(a){a?null===this.input?(this.input=new c.InputHandler(this),this.input.start()):this.input&&!this.input.enabled&&this.input.start():this.input&&this.input.enabled&&this.input.stop()}}},c.Component.InWorld=function(){},c.Component.InWorld.preUpdate=function(){if(this.autoCull||this.checkWorldBounds){if(this._bounds.copyFrom(this.getBounds()),this._bounds.x+=this.game.camera.view.x,this._bounds.y+=this.game.camera.view.y,this.autoCull)if(this.game.world.camera.view.intersects(this._bounds))this.renderable=!0,this.game.world.camera.totalInView++;else if(this.renderable=!1,this.outOfCameraBoundsKill)return this.kill(),!1;if(this.checkWorldBounds)if(this._outOfBoundsFired&&this.game.world.bounds.intersects(this._bounds))this._outOfBoundsFired=!1,this.events.onEnterBounds$dispatch(this);else if(!this._outOfBoundsFired&&!this.game.world.bounds.intersects(this._bounds)&&(this._outOfBoundsFired=!0,this.events.onOutOfBounds$dispatch(this),this.outOfBoundsKill))return this.kill(),!1}return!0},c.Component.InWorld.prototype={checkWorldBounds:!1,outOfBoundsKill:!1,outOfCameraBoundsKill:!1,_outOfBoundsFired:!1,inWorld:{get:function(){return this.game.world.bounds.intersects(this.getBounds())}}},c.Component.LifeSpan=function(){},c.Component.LifeSpan.preUpdate=function(){return this.lifespan>0&&(this.lifespan-=this.game.time.physicsElapsedMS, -this.lifespan<=0)?(this.kill(),!1):!0},c.Component.LifeSpan.prototype={alive:!0,lifespan:0,revive:function(a){return void 0===a&&(a=100),this.alive=!0,this.exists=!0,this.visible=!0,"function"==typeof this.setHealth&&this.setHealth(a),this.events&&this.events.onRevived$dispatch(this),this},kill:function(){return this.alive=!1,this.exists=!1,this.visible=!1,this.events&&this.events.onKilled$dispatch(this),this}},c.Component.LoadTexture=function(){},c.Component.LoadTexture.prototype={customRender:!1,_frame:null,loadTexture:function(a,b,d){a===c.PENDING_ATLAS?(a=b,b=0):b=b||0,(d||void 0===d)&&this.animations&&this.animations.stop(),this.key=a,this.customRender=!1;var e=this.game.cache,f=!0,g=!this.texture.baseTexture.scaleMode;if(c.RenderTexture&&a instanceof c.RenderTexture)this.key=a.key,this.setTexture(a);else if(c.BitmapData&&a instanceof c.BitmapData)this.customRender=!0,this.setTexture(a.texture),f=e.hasFrameData(a.key,c.Cache.BITMAPDATA)?!this.animations.loadFrameData(e.getFrameData(a.key,c.Cache.BITMAPDATA),b):!this.animations.loadFrameData(a.frameData,0);else if(c.Video&&a instanceof c.Video){this.customRender=!0;var h=a.texture.valid;this.setTexture(a.texture),this.setFrame(a.texture.frame.clone()),a.onChangeSource.add(this.resizeFrame,this),this.texture.valid=h}else if(c.Tilemap&&a instanceof c.TilemapLayer)this.setTexture(PIXI.Texture.fromCanvas(a.canvas));else if(a instanceof PIXI.Texture)this.setTexture(a);else{var i=e.getImage(a,!0);this.key=i.key,this.setTexture(new PIXI.Texture(i.base)),"__default"===a?this.texture.baseTexture.skipRender=!0:this.texture.baseTexture.skipRender=!1,f=!this.animations.loadFrameData(i.frameData,b)}f&&(this._frame=c.Rectangle.clone(this.texture.frame)),g||(this.texture.baseTexture.scaleMode=1)},setFrame:function(a){this._frame=a,this.texture.frame.x=a.x,this.texture.frame.y=a.y,this.texture.frame.width=a.width,this.texture.frame.height=a.height,this.texture.crop.x=a.x,this.texture.crop.y=a.y,this.texture.crop.width=a.width,this.texture.crop.height=a.height,a.trimmed?(this.texture.trim?(this.texture.trim.x=a.spriteSourceSizeX,this.texture.trim.y=a.spriteSourceSizeY,this.texture.trim.width=a.sourceSizeW,this.texture.trim.height=a.sourceSizeH):this.texture.trim={x:a.spriteSourceSizeX,y:a.spriteSourceSizeY,width:a.sourceSizeW,height:a.sourceSizeH},this.texture.width=a.sourceSizeW,this.texture.height=a.sourceSizeH,this.texture.frame.width=a.sourceSizeW,this.texture.frame.height=a.sourceSizeH):!a.trimmed&&this.texture.trim&&(this.texture.trim=null),this.cropRect&&this.updateCrop(),this.texture.requiresReTint=!0,this.texture._updateUvs(),this.tilingTexture&&(this.refreshTexture=!0)},resizeFrame:function(a,b,c){this.texture.frame.resize(b,c),this.texture.setFrame(this.texture.frame)},resetFrame:function(){this._frame&&this.setFrame(this._frame)},frame:{get:function(){return this.animations.frame},set:function(a){this.animations.frame=a}},frameName:{get:function(){return this.animations.frameName},set:function(a){this.animations.frameName=a}}},c.Component.Overlap=function(){},c.Component.Overlap.prototype={overlap:function(a){return c.Rectangle.intersects(this.getBounds(),a.getBounds())}},c.Component.PhysicsBody=function(){},c.Component.PhysicsBody.preUpdate=function(){return this.fresh&&this.exists?(this.world.setTo(this.parent.position.x+this.position.x,this.parent.position.y+this.position.y),this.worldTransform.tx=this.world.x,this.worldTransform.ty=this.world.y,this.previousPosition.set(this.world.x,this.world.y),this.previousRotation=this.rotation,this.body&&this.body.preUpdate(),this.fresh=!1,!1):(this.previousPosition.set(this.world.x,this.world.y),this.previousRotation=this.rotation,this._exists&&this.parent.exists?!0:(this.renderOrderID=-1,!1))},c.Component.PhysicsBody.postUpdate=function(){this.exists&&this.body&&this.body.postUpdate()},c.Component.PhysicsBody.prototype={body:null,x:{get:function(){return this.position.x},set:function(a){this.position.x=a,this.body&&!this.body.dirty&&(this.body._reset=!0)}},y:{get:function(){return this.position.y},set:function(a){this.position.y=a,this.body&&!this.body.dirty&&(this.body._reset=!0)}}},c.Component.Reset=function(){},c.Component.Reset.prototype.reset=function(a,b,c){return void 0===c&&(c=1),this.world.set(a,b),this.position.set(a,b),this.fresh=!0,this.exists=!0,this.visible=!0,this.renderable=!0,this.components.InWorld&&(this._outOfBoundsFired=!1),this.components.LifeSpan&&(this.alive=!0,this.health=c),this.components.PhysicsBody&&this.body&&this.body.reset(a,b,!1,!1),this},c.Component.ScaleMinMax=function(){},c.Component.ScaleMinMax.prototype={transformCallback:null,transformCallbackContext:this,scaleMin:null,scaleMax:null,checkTransform:function(a){this.scaleMin&&(a.athis.scaleMax.x&&(a.a=this.scaleMax.x),a.d>this.scaleMax.y&&(a.d=this.scaleMax.y))},setScaleMinMax:function(a,b,d,e){void 0===b?b=d=e=a:void 0===d&&(d=e=b,b=a),null===a?this.scaleMin=null:this.scaleMin?this.scaleMin.set(a,b):this.scaleMin=new c.Point(a,b),null===d?this.scaleMax=null:this.scaleMax?this.scaleMax.set(d,e):this.scaleMax=new c.Point(d,e),null===this.scaleMin?this.transformCallback=null:(this.transformCallback=this.checkTransform,this.transformCallbackContext=this)}},c.Component.Smoothed=function(){},c.Component.Smoothed.prototype={smoothed:{get:function(){return!this.texture.baseTexture.scaleMode},set:function(a){a?this.texture&&(this.texture.baseTexture.scaleMode=0):this.texture&&(this.texture.baseTexture.scaleMode=1)}}},c.GameObjectFactory=function(a){this.game=a,this.world=this.game.world},c.GameObjectFactory.prototype={existing:function(a){return this.world.add(a)},weapon:function(a,b,d,e){var f=this.game.plugins.add(c.Weapon);return f.createBullets(a,b,d,e),f},image:function(a,b,d,e,f){return void 0===f&&(f=this.world),f.add(new c.Image(this.game,a,b,d,e))},sprite:function(a,b,c,d,e){return void 0===e&&(e=this.world),e.create(a,b,c,d)},creature:function(a,b,d,e,f){void 0===f&&(f=this.world);var g=new c.Creature(this.game,a,b,d,e);return f.add(g),g},tween:function(a){return this.game.tweens.create(a)},group:function(a,b,d,e,f){return new c.Group(this.game,a,b,d,e,f)},physicsGroup:function(a,b,d,e){return new c.Group(this.game,b,d,e,!0,a)},spriteBatch:function(a,b,d){return void 0===a&&(a=null),void 0===b&&(b="group"),void 0===d&&(d=!1),new c.SpriteBatch(this.game,a,b,d)},audio:function(a,b,c,d){return this.game.sound.add(a,b,c,d)},sound:function(a,b,c,d){return this.game.sound.add(a,b,c,d)},audioSprite:function(a){return this.game.sound.addSprite(a)},tileSprite:function(a,b,d,e,f,g,h){return void 0===h&&(h=this.world),h.add(new c.TileSprite(this.game,a,b,d,e,f,g))},rope:function(a,b,d,e,f,g){return void 0===g&&(g=this.world),g.add(new c.Rope(this.game,a,b,d,e,f))},text:function(a,b,d,e,f){return void 0===f&&(f=this.world),f.add(new c.Text(this.game,a,b,d,e))},button:function(a,b,d,e,f,g,h,i,j,k){return void 0===k&&(k=this.world),k.add(new c.Button(this.game,a,b,d,e,f,g,h,i,j))},graphics:function(a,b,d){return void 0===d&&(d=this.world),d.add(new c.Graphics(this.game,a,b))},emitter:function(a,b,d){return this.game.particles.add(new c.Particles.Arcade.Emitter(this.game,a,b,d))},retroFont:function(a,b,d,e,f,g,h,i,j){return new c.RetroFont(this.game,a,b,d,e,f,g,h,i,j)},bitmapText:function(a,b,d,e,f,g){return void 0===g&&(g=this.world),g.add(new c.BitmapText(this.game,a,b,d,e,f))},tilemap:function(a,b,d,e,f){return new c.Tilemap(this.game,a,b,d,e,f)},renderTexture:function(a,b,d,e){(void 0===d||""===d)&&(d=this.game.rnd.uuid()),void 0===e&&(e=!1);var f=new c.RenderTexture(this.game,a,b,d);return e&&this.game.cache.addRenderTexture(d,f),f},video:function(a,b){return new c.Video(this.game,a,b)},bitmapData:function(a,b,d,e){void 0===e&&(e=!1),(void 0===d||""===d)&&(d=this.game.rnd.uuid());var f=new c.BitmapData(this.game,d,a,b);return e&&this.game.cache.addBitmapData(d,f),f},filter:function(a){var b=Array.prototype.slice.call(arguments,1),a=new c.Filter[a](this.game);return a.init.apply(a,b),a},plugin:function(a){return this.game.plugins.add(a)}},c.GameObjectFactory.prototype.constructor=c.GameObjectFactory,c.GameObjectCreator=function(a){this.game=a,this.world=this.game.world},c.GameObjectCreator.prototype={image:function(a,b,d,e){return new c.Image(this.game,a,b,d,e)},sprite:function(a,b,d,e){return new c.Sprite(this.game,a,b,d,e)},tween:function(a){return new c.Tween(a,this.game,this.game.tweens)},group:function(a,b,d,e,f){return new c.Group(this.game,a,b,d,e,f)},spriteBatch:function(a,b,d){return void 0===b&&(b="group"),void 0===d&&(d=!1),new c.SpriteBatch(this.game,a,b,d)},audio:function(a,b,c,d){return this.game.sound.add(a,b,c,d)},audioSprite:function(a){return this.game.sound.addSprite(a)},sound:function(a,b,c,d){return this.game.sound.add(a,b,c,d)},tileSprite:function(a,b,d,e,f,g){return new c.TileSprite(this.game,a,b,d,e,f,g)},rope:function(a,b,d,e,f){return new c.Rope(this.game,a,b,d,e,f)},text:function(a,b,d,e){return new c.Text(this.game,a,b,d,e)},button:function(a,b,d,e,f,g,h,i,j){return new c.Button(this.game,a,b,d,e,f,g,h,i,j)},graphics:function(a,b){return new c.Graphics(this.game,a,b)},emitter:function(a,b,d){return new c.Particles.Arcade.Emitter(this.game,a,b,d)},retroFont:function(a,b,d,e,f,g,h,i,j){return new c.RetroFont(this.game,a,b,d,e,f,g,h,i,j)},bitmapText:function(a,b,d,e,f,g){return new c.BitmapText(this.game,a,b,d,e,f,g)},tilemap:function(a,b,d,e,f){return new c.Tilemap(this.game,a,b,d,e,f)},renderTexture:function(a,b,d,e){(void 0===d||""===d)&&(d=this.game.rnd.uuid()),void 0===e&&(e=!1);var f=new c.RenderTexture(this.game,a,b,d);return e&&this.game.cache.addRenderTexture(d,f),f},bitmapData:function(a,b,d,e){void 0===e&&(e=!1),(void 0===d||""===d)&&(d=this.game.rnd.uuid());var f=new c.BitmapData(this.game,d,a,b);return e&&this.game.cache.addBitmapData(d,f),f},filter:function(a){var b=Array.prototype.slice.call(arguments,1),a=new c.Filter[a](this.game);return a.init.apply(a,b),a}},c.GameObjectCreator.prototype.constructor=c.GameObjectCreator,c.Sprite=function(a,b,d,e,f){b=b||0,d=d||0,e=e||null,f=f||null,this.type=c.SPRITE,this.physicsType=c.SPRITE,PIXI.Sprite.call(this,PIXI.TextureCache.__default),c.Component.Core.init.call(this,a,b,d,e,f)},c.Sprite.prototype=Object.create(PIXI.Sprite.prototype),c.Sprite.prototype.constructor=c.Sprite,c.Component.Core.install.call(c.Sprite.prototype,["Angle","Animation","AutoCull","Bounds","BringToTop","Crop","Delta","Destroy","FixedToCamera","Health","InCamera","InputEnabled","InWorld","LifeSpan","LoadTexture","Overlap","PhysicsBody","Reset","ScaleMinMax","Smoothed"]),c.Sprite.prototype.preUpdatePhysics=c.Component.PhysicsBody.preUpdate,c.Sprite.prototype.preUpdateLifeSpan=c.Component.LifeSpan.preUpdate,c.Sprite.prototype.preUpdateInWorld=c.Component.InWorld.preUpdate,c.Sprite.prototype.preUpdateCore=c.Component.Core.preUpdate,c.Sprite.prototype.preUpdate=function(){return this.preUpdatePhysics()&&this.preUpdateLifeSpan()&&this.preUpdateInWorld()?this.preUpdateCore():!1},c.Image=function(a,b,d,e,f){b=b||0,d=d||0,e=e||null,f=f||null,this.type=c.IMAGE,PIXI.Sprite.call(this,PIXI.TextureCache.__default),c.Component.Core.init.call(this,a,b,d,e,f)},c.Image.prototype=Object.create(PIXI.Sprite.prototype),c.Image.prototype.constructor=c.Image,c.Component.Core.install.call(c.Image.prototype,["Angle","Animation","AutoCull","Bounds","BringToTop","Crop","Destroy","FixedToCamera","InputEnabled","LifeSpan","LoadTexture","Overlap","Reset","Smoothed"]),c.Image.prototype.preUpdateInWorld=c.Component.InWorld.preUpdate,c.Image.prototype.preUpdateCore=c.Component.Core.preUpdate,c.Image.prototype.preUpdate=function(){return this.preUpdateInWorld()?this.preUpdateCore():!1},c.Button=function(a,b,d,e,f,g,h,i,j,k){b=b||0,d=d||0,e=e||null,f=f||null,g=g||this,c.Image.call(this,a,b,d,e,i),this.type=c.BUTTON,this.physicsType=c.SPRITE,this._onOverFrame=null,this._onOutFrame=null,this._onDownFrame=null,this._onUpFrame=null,this.onOverSound=null,this.onOutSound=null,this.onDownSound=null,this.onUpSound=null,this.onOverSoundMarker="",this.onOutSoundMarker="",this.onDownSoundMarker="",this.onUpSoundMarker="",this.onInputOver=new c.Signal,this.onInputOut=new c.Signal,this.onInputDown=new c.Signal,this.onInputUp=new c.Signal,this.onOverMouseOnly=!0,this.justReleasedPreventsOver=c.PointerMode.TOUCH,this.freezeFrames=!1,this.forceOut=!1,this.inputEnabled=!0,this.input.start(0,!0),this.input.useHandCursor=!0,this.setFrames(h,i,j,k),null!==f&&this.onInputUp.add(f,g),this.events.onInputOver.add(this.onInputOverHandler,this),this.events.onInputOut.add(this.onInputOutHandler,this),this.events.onInputDown.add(this.onInputDownHandler,this),this.events.onInputUp.add(this.onInputUpHandler,this),this.events.onRemovedFromWorld.add(this.removedFromWorld,this)},c.Button.prototype=Object.create(c.Image.prototype),c.Button.prototype.constructor=c.Button;var g="Over",h="Out",i="Down",j="Up";c.Button.prototype.clearFrames=function(){this.setFrames(null,null,null,null)},c.Button.prototype.removedFromWorld=function(){this.inputEnabled=!1},c.Button.prototype.setStateFrame=function(a,b,c){var d="_on"+a+"Frame";null!==b?(this[d]=b,c&&this.changeStateFrame(a)):this[d]=null},c.Button.prototype.changeStateFrame=function(a){if(this.freezeFrames)return!1;var b="_on"+a+"Frame",c=this[b];return"string"==typeof c?(this.frameName=c,!0):"number"==typeof c?(this.frame=c,!0):!1},c.Button.prototype.setFrames=function(a,b,c,d){this.setStateFrame(g,a,this.input.pointerOver()),this.setStateFrame(h,b,!this.input.pointerOver()),this.setStateFrame(i,c,this.input.pointerDown()),this.setStateFrame(j,d,this.input.pointerUp())},c.Button.prototype.setStateSound=function(a,b,d){var e="on"+a+"Sound",f="on"+a+"SoundMarker";b instanceof c.Sound||b instanceof c.AudioSprite?(this[e]=b,this[f]="string"==typeof d?d:""):(this[e]=null,this[f]="")},c.Button.prototype.playStateSound=function(a){var b="on"+a+"Sound",c=this[b];if(c){var d="on"+a+"SoundMarker",e=this[d];return c.play(e),!0}return!1},c.Button.prototype.setSounds=function(a,b,c,d,e,f,k,l){this.setStateSound(g,a,b),this.setStateSound(h,e,f),this.setStateSound(i,c,d),this.setStateSound(j,k,l)},c.Button.prototype.setOverSound=function(a,b){this.setStateSound(g,a,b)},c.Button.prototype.setOutSound=function(a,b){this.setStateSound(h,a,b)},c.Button.prototype.setDownSound=function(a,b){this.setStateSound(i,a,b)},c.Button.prototype.setUpSound=function(a,b){this.setStateSound(j,a,b)},c.Button.prototype.onInputOverHandler=function(a,b){b.justReleased()&&(this.justReleasedPreventsOver&b.pointerMode)===b.pointerMode||(this.changeStateFrame(g),(!this.onOverMouseOnly||b.isMouse)&&(this.playStateSound(g),this.onInputOver&&this.onInputOver.dispatch(this,b)))},c.Button.prototype.onInputOutHandler=function(a,b){this.changeStateFrame(h),this.playStateSound(h),this.onInputOut&&this.onInputOut.dispatch(this,b)},c.Button.prototype.onInputDownHandler=function(a,b){this.changeStateFrame(i),this.playStateSound(i),this.onInputDown&&this.onInputDown.dispatch(this,b)},c.Button.prototype.onInputUpHandler=function(a,b,c){if(this.playStateSound(j),this.onInputUp&&this.onInputUp.dispatch(this,b,c),!this.freezeFrames)if(this.forceOut===!0||(this.forceOut&b.pointerMode)===b.pointerMode)this.changeStateFrame(h);else{var d=this.changeStateFrame(j);d||(c?this.changeStateFrame(g):this.changeStateFrame(h))}},c.SpriteBatch=function(a,b,d,e){(void 0===b||null===b)&&(b=a.world),PIXI.SpriteBatch.call(this),c.Group.call(this,a,b,d,e),this.type=c.SPRITEBATCH},c.SpriteBatch.prototype=c.Utils.extend(!0,c.SpriteBatch.prototype,PIXI.SpriteBatch.prototype,c.Group.prototype),c.SpriteBatch.prototype.constructor=c.SpriteBatch,c.BitmapData=function(a,b,d,e){(void 0===d||0===d)&&(d=256),(void 0===e||0===e)&&(e=256),this.game=a,this.key=b,this.width=d,this.height=e,this.canvas=PIXI.CanvasPool.create(this,d,e),this.context=this.canvas.getContext("2d",{alpha:!0}),this.ctx=this.context,this.smoothProperty=a.renderType===c.CANVAS?a.renderer.renderSession.smoothProperty:c.Canvas.getSmoothingPrefix(this.context),this.imageData=this.context.getImageData(0,0,d,e),this.data=null,this.imageData&&(this.data=this.imageData.data),this.pixels=null,this.data&&(this.imageData.data.buffer?(this.buffer=this.imageData.data.buffer,this.pixels=new Uint32Array(this.buffer)):window.ArrayBuffer?(this.buffer=new ArrayBuffer(this.imageData.data.length),this.pixels=new Uint32Array(this.buffer)):this.pixels=this.imageData.data),this.baseTexture=new PIXI.BaseTexture(this.canvas),this.texture=new PIXI.Texture(this.baseTexture),this.frameData=new c.FrameData,this.textureFrame=this.frameData.addFrame(new c.Frame(0,0,0,d,e,"bitmapData")),this.texture.frame=this.textureFrame,this.type=c.BITMAPDATA,this.disableTextureUpload=!1,this.dirty=!1,this.cls=this.clear,this._image=null,this._pos=new c.Point,this._size=new c.Point,this._scale=new c.Point,this._rotate=0,this._alpha={prev:1,current:1},this._anchor=new c.Point,this._tempR=0,this._tempG=0,this._tempB=0,this._circle=new c.Circle,this._swapCanvas=void 0},c.BitmapData.prototype={move:function(a,b,c){return 0!==a&&this.moveH(a,c),0!==b&&this.moveV(b,c),this},moveH:function(a,b){void 0===b&&(b=!0),void 0===this._swapCanvas&&(this._swapCanvas=PIXI.CanvasPool.create(this,this.width,this.height));var c=this._swapCanvas,d=c.getContext("2d"),e=this.height,f=this.canvas;if(d.clearRect(0,0,this.width,this.height),0>a){a=Math.abs(a);var g=this.width-a;b&&d.drawImage(f,0,0,a,e,g,0,a,e),d.drawImage(f,a,0,g,e,0,0,g,e)}else{var g=this.width-a;b&&d.drawImage(f,g,0,a,e,0,0,a,e),d.drawImage(f,0,0,g,e,a,0,g,e)}return this.clear(),this.copy(this._swapCanvas)},moveV:function(a,b){void 0===b&&(b=!0),void 0===this._swapCanvas&&(this._swapCanvas=PIXI.CanvasPool.create(this,this.width,this.height));var c=this._swapCanvas,d=c.getContext("2d"),e=this.width,f=this.canvas;if(d.clearRect(0,0,this.width,this.height),0>a){a=Math.abs(a);var g=this.height-a;b&&d.drawImage(f,0,0,e,a,0,g,e,a),d.drawImage(f,0,a,e,g,0,0,e,g)}else{var g=this.height-a;b&&d.drawImage(f,0,g,e,a,0,0,e,a),d.drawImage(f,0,0,e,g,0,a,e,g)}return this.clear(),this.copy(this._swapCanvas)},add:function(a){if(Array.isArray(a))for(var b=0;bm;m++)for(var n=d;h>n;n++)c.Color.unpackPixel(this.getPixel32(n,m),j),k=a.call(b,j,n,m),k!==!1&&null!==k&&void 0!==k&&(this.setPixel32(n,m,k.r,k.g,k.b,k.a,!1),l=!0);return l&&(this.context.putImageData(this.imageData,0,0),this.dirty=!0),this},processPixel:function(a,b,c,d,e,f){void 0===c&&(c=0),void 0===d&&(d=0),void 0===e&&(e=this.width),void 0===f&&(f=this.height);for(var g=c+e,h=d+f,i=0,j=0,k=!1,l=d;h>l;l++)for(var m=c;g>m;m++)i=this.getPixel32(m,l),j=a.call(b,i,m,l),j!==i&&(this.pixels[l*this.width+m]=j,k=!0);return k&&(this.context.putImageData(this.imageData,0,0),this.dirty=!0),this},replaceRGB:function(a,b,d,e,f,g,h,i,j){var k=0,l=0,m=this.width,n=this.height,o=c.Color.packPixel(a,b,d,e);void 0!==j&&j instanceof c.Rectangle&&(k=j.x,l=j.y,m=j.width,n=j.height);for(var p=0;n>p;p++)for(var q=0;m>q;q++)this.getPixel32(k+q,l+p)===o&&this.setPixel32(k+q,l+p,f,g,h,i,!1);return this.context.putImageData(this.imageData,0,0),this.dirty=!0,this},setHSL:function(a,b,d,e){var f=a||0===a,g=b||0===b,h=d||0===d;if(f||g||h){void 0===e&&(e=new c.Rectangle(0,0,this.width,this.height));for(var i=c.Color.createColor(),j=e.y;j=0&&a<=this.width&&b>=0&&b<=this.height&&(c.Device.LITTLE_ENDIAN?this.pixels[b*this.width+a]=g<<24|f<<16|e<<8|d:this.pixels[b*this.width+a]=d<<24|e<<16|f<<8|g,h&&(this.context.putImageData(this.imageData,0,0),this.dirty=!0)),this},setPixel:function(a,b,c,d,e,f){return this.setPixel32(a,b,c,d,e,255,f)},getPixel:function(a,b,d){d||(d=c.Color.createColor());var e=~~(a+b*this.width);return e*=4,d.r=this.data[e],d.g=this.data[++e],d.b=this.data[++e],d.a=this.data[++e],d},getPixel32:function(a,b){return a>=0&&a<=this.width&&b>=0&&b<=this.height?this.pixels[b*this.width+a]:void 0},getPixelRGB:function(a,b,d,e,f){return c.Color.unpackPixel(this.getPixel32(a,b),d,e,f)},getPixels:function(a){return this.context.getImageData(a.x,a.y,a.width,a.height)},getFirstPixel:function(a){void 0===a&&(a=0);var b=c.Color.createColor(),d=0,e=0,f=1,g=!1;1===a?(f=-1,e=this.height):3===a&&(f=-1,d=this.width);do c.Color.unpackPixel(this.getPixel32(d,e),b),0===a||1===a?(d++,d===this.width&&(d=0,e+=f,(e>=this.height||0>=e)&&(g=!0))):(2===a||3===a)&&(e++,e===this.height&&(e=0,d+=f,(d>=this.width||0>=d)&&(g=!0)));while(0===b.a&&!g);return b.x=d,b.y=e,b},getBounds:function(a){return void 0===a&&(a=new c.Rectangle),a.x=this.getFirstPixel(2).x,a.x===this.width?a.setTo(0,0,0,0):(a.y=this.getFirstPixel(0).y,a.width=this.getFirstPixel(3).x-a.x+1,a.height=this.getFirstPixel(1).y-a.y+1,a)},addToWorld:function(a,b,c,d,e,f){e=e||1,f=f||1;var g=this.game.add.image(a,b,this);return g.anchor.set(c,d),g.scale.set(e,f),g},copy:function(a,b,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r){if((void 0===a||null===a)&&(a=this),(a instanceof c.RenderTexture||a instanceof PIXI.RenderTexture)&&(a=a.getCanvas()),this._image=a,a instanceof c.Sprite||a instanceof c.Image||a instanceof c.Text||a instanceof PIXI.Sprite)this._pos.set(a.texture.crop.x,a.texture.crop.y),this._size.set(a.texture.crop.width,a.texture.crop.height),this._scale.set(a.scale.x,a.scale.y),this._anchor.set(a.anchor.x,a.anchor.y),this._rotate=a.rotation,this._alpha.current=a.alpha,a.texture instanceof c.RenderTexture||a.texture instanceof PIXI.RenderTexture?this._image=a.texture.getCanvas():this._image=a.texture.baseTexture.source,(void 0===g||null===g)&&(g=a.x),(void 0===h||null===h)&&(h=a.y),a.texture.trim&&(g+=a.texture.trim.x-a.anchor.x*a.texture.trim.width,h+=a.texture.trim.y-a.anchor.y*a.texture.trim.height),16777215!==a.tint&&(a.cachedTint!==a.tint&&(a.cachedTint=a.tint,a.tintedTexture=PIXI.CanvasTinter.getTintedTexture(a,a.tint)),this._image=a.tintedTexture,this._pos.set(0));else{if(this._pos.set(0),this._scale.set(1),this._anchor.set(0),this._rotate=0,this._alpha.current=1,a instanceof c.BitmapData)this._image=a.canvas;else if("string"==typeof a){if(a=this.game.cache.getImage(a),null===a)return;this._image=a}this._size.set(this._image.width,this._image.height)}if((void 0===b||null===b)&&(b=0),(void 0===d||null===d)&&(d=0),e&&(this._size.x=e),f&&(this._size.y=f),(void 0===g||null===g)&&(g=b),(void 0===h||null===h)&&(h=d),(void 0===i||null===i)&&(i=this._size.x),(void 0===j||null===j)&&(j=this._size.y),"number"==typeof k&&(this._rotate=k),"number"==typeof l&&(this._anchor.x=l),"number"==typeof m&&(this._anchor.y=m),"number"==typeof n&&(this._scale.x=n),"number"==typeof o&&(this._scale.y=o),"number"==typeof p&&(this._alpha.current=p),void 0===q&&(q=null),void 0===r&&(r=!1),!(this._alpha.current<=0||0===this._scale.x||0===this._scale.y||0===this._size.x||0===this._size.y)){var s=this.context;return this._alpha.prev=s.globalAlpha,s.save(),s.globalAlpha=this._alpha.current,q&&(this.op=q),r&&(g|=0,h|=0),s.translate(g,h),s.scale(this._scale.x,this._scale.y),s.rotate(this._rotate),s.drawImage(this._image,this._pos.x+b,this._pos.y+d,this._size.x,this._size.y,-i*this._anchor.x,-j*this._anchor.y,i,j),s.restore(),s.globalAlpha=this._alpha.prev,this.dirty=!0,this}},copyTransform:function(a,b,d){if(void 0===b&&(b=null),void 0===d&&(d=!1),!a.hasOwnProperty("worldTransform")||!a.worldVisible||0===a.worldAlpha)return this;var e=a.worldTransform;if(this._pos.set(a.texture.crop.x,a.texture.crop.y),this._size.set(a.texture.crop.width,a.texture.crop.height),0===e.a||0===e.d||0===this._size.x||0===this._size.y)return this;a.texture instanceof c.RenderTexture||a.texture instanceof PIXI.RenderTexture?this._image=a.texture.getCanvas():this._image=a.texture.baseTexture.source;var f=e.tx,g=e.ty;a.texture.trim&&(f+=a.texture.trim.x-a.anchor.x*a.texture.trim.width,g+=a.texture.trim.y-a.anchor.y*a.texture.trim.height),16777215!==a.tint&&(a.cachedTint!==a.tint&&(a.cachedTint=a.tint,a.tintedTexture=PIXI.CanvasTinter.getTintedTexture(a,a.tint)),this._image=a.tintedTexture,this._pos.set(0)),d&&(f|=0,g|=0);var h=this.context;return this._alpha.prev=h.globalAlpha,h.save(),h.globalAlpha=this._alpha.current,b&&(this.op=b),h[this.smoothProperty]=a.texture.baseTexture.scaleMode===PIXI.scaleModes.LINEAR,h.setTransform(e.a,e.b,e.c,e.d,f,g),h.drawImage(this._image,this._pos.x,this._pos.y,this._size.x,this._size.y,-this._size.x*a.anchor.x,-this._size.y*a.anchor.y,this._size.x,this._size.y),h.restore(),h.globalAlpha=this._alpha.prev,this.dirty=!0,this},copyRect:function(a,b,c,d,e,f,g){return this.copy(a,b.x,b.y,b.width,b.height,c,d,b.width,b.height,0,0,0,1,1,e,f,g)},draw:function(a,b,c,d,e,f,g){return this.copy(a,null,null,null,null,b,c,d,e,null,null,null,null,null,null,f,g)},drawGroup:function(a,b,c){return a.total>0&&a.forEachExists(this.drawGroupProxy,this,b,c),this},drawGroupProxy:function(a,b,d){if(a.hasOwnProperty("texture")&&this.copyTransform(a,b,d),a.type===c.GROUP&&a.exists)this.drawGroup(a,b,d);else if(a.hasOwnProperty("children")&&a.children.length>0)for(var e=0;eb.width&&(e=b.width);var f=this.context;return f.fillStyle=f.createPattern(b,d),this._circle=new c.Circle(a.start.x,a.start.y,b.height),this._circle.circumferencePoint(a.angle-1.5707963267948966,!1,this._pos),f.save(),f.translate(this._pos.x,this._pos.y),f.rotate(a.angle),f.fillRect(0,0,e,b.height),f.restore(),this.dirty=!0,this}},render:function(){return!this.disableTextureUpload&&this.dirty&&(this.baseTexture.dirty(),this.dirty=!1),this},destroy:function(){this.frameData.destroy(),this.texture.destroy(!0),PIXI.CanvasPool.remove(this)},blendReset:function(){return this.op="source-over",this},blendSourceOver:function(){return this.op="source-over",this},blendSourceIn:function(){return this.op="source-in",this},blendSourceOut:function(){return this.op="source-out",this},blendSourceAtop:function(){return this.op="source-atop",this},blendDestinationOver:function(){return this.op="destination-over",this},blendDestinationIn:function(){return this.op="destination-in",this},blendDestinationOut:function(){return this.op="destination-out",this},blendDestinationAtop:function(){return this.op="destination-atop",this},blendXor:function(){return this.op="xor",this},blendAdd:function(){return this.op="lighter",this},blendMultiply:function(){return this.op="multiply",this},blendScreen:function(){return this.op="screen",this},blendOverlay:function(){return this.op="overlay",this},blendDarken:function(){return this.op="darken",this},blendLighten:function(){return this.op="lighten",this},blendColorDodge:function(){return this.op="color-dodge",this},blendColorBurn:function(){return this.op="color-burn",this},blendHardLight:function(){return this.op="hard-light",this},blendSoftLight:function(){return this.op="soft-light",this},blendDifference:function(){return this.op="difference",this},blendExclusion:function(){ -return this.op="exclusion",this},blendHue:function(){return this.op="hue",this},blendSaturation:function(){return this.op="saturation",this},blendColor:function(){return this.op="color",this},blendLuminosity:function(){return this.op="luminosity",this}},Object.defineProperty(c.BitmapData.prototype,"smoothed",{get:function(){c.Canvas.getSmoothingEnabled(this.context)},set:function(a){c.Canvas.setSmoothingEnabled(this.context,a)}}),Object.defineProperty(c.BitmapData.prototype,"op",{get:function(){return this.context.globalCompositeOperation},set:function(a){this.context.globalCompositeOperation=a}}),c.BitmapData.getTransform=function(a,b,c,d,e,f){return"number"!=typeof a&&(a=0),"number"!=typeof b&&(b=0),"number"!=typeof c&&(c=1),"number"!=typeof d&&(d=1),"number"!=typeof e&&(e=0),"number"!=typeof f&&(f=0),{sx:c,sy:d,scaleX:c,scaleY:d,skewX:e,skewY:f,translateX:a,translateY:b,tx:a,ty:b}},c.BitmapData.prototype.constructor=c.BitmapData,PIXI.Graphics=function(){PIXI.DisplayObjectContainer.call(this),this.renderable=!0,this.fillAlpha=1,this.lineWidth=0,this.lineColor=0,this.graphicsData=[],this.tint=16777215,this.blendMode=PIXI.blendModes.NORMAL,this.currentPath=null,this._webGL=[],this.isMask=!1,this.boundsPadding=0,this._localBounds=new PIXI.Rectangle(0,0,1,1),this.dirty=!0,this.webGLDirty=!1,this.cachedSpriteDirty=!1},PIXI.Graphics.prototype=Object.create(PIXI.DisplayObjectContainer.prototype),PIXI.Graphics.prototype.constructor=PIXI.Graphics,PIXI.Graphics.prototype.lineStyle=function(a,b,c){return this.lineWidth=a||0,this.lineColor=b||0,this.lineAlpha=void 0===c?1:c,this.currentPath&&(this.currentPath.shape.points.length?this.drawShape(new PIXI.Polygon(this.currentPath.shape.points.slice(-2))):(this.currentPath.lineWidth=this.lineWidth,this.currentPath.lineColor=this.lineColor,this.currentPath.lineAlpha=this.lineAlpha)),this},PIXI.Graphics.prototype.moveTo=function(a,b){return this.drawShape(new PIXI.Polygon([a,b])),this},PIXI.Graphics.prototype.lineTo=function(a,b){return this.currentPath||this.moveTo(0,0),this.currentPath.shape.points.push(a,b),this.dirty=!0,this},PIXI.Graphics.prototype.quadraticCurveTo=function(a,b,c,d){this.currentPath?0===this.currentPath.shape.points.length&&(this.currentPath.shape.points=[0,0]):this.moveTo(0,0);var e,f,g=20,h=this.currentPath.shape.points;0===h.length&&this.moveTo(0,0);for(var i=h[h.length-2],j=h[h.length-1],k=0,l=1;g>=l;++l)k=l/g,e=i+(a-i)*k,f=j+(b-j)*k,h.push(e+(a+(c-a)*k-e)*k,f+(b+(d-b)*k-f)*k);return this.dirty=!0,this},PIXI.Graphics.prototype.bezierCurveTo=function(a,b,c,d,e,f){this.currentPath?0===this.currentPath.shape.points.length&&(this.currentPath.shape.points=[0,0]):this.moveTo(0,0);for(var g,h,i,j,k,l=20,m=this.currentPath.shape.points,n=m[m.length-2],o=m[m.length-1],p=0,q=1;l>=q;++q)p=q/l,g=1-p,h=g*g,i=h*g,j=p*p,k=j*p,m.push(i*n+3*h*p*a+3*g*j*c+k*e,i*o+3*h*p*b+3*g*j*d+k*f);return this.dirty=!0,this},PIXI.Graphics.prototype.arcTo=function(a,b,c,d,e){this.currentPath?0===this.currentPath.shape.points.length&&this.currentPath.shape.points.push(a,b):this.moveTo(a,b);var f=this.currentPath.shape.points,g=f[f.length-2],h=f[f.length-1],i=h-b,j=g-a,k=d-b,l=c-a,m=Math.abs(i*l-j*k);if(1e-8>m||0===e)(f[f.length-2]!==a||f[f.length-1]!==b)&&f.push(a,b);else{var n=i*i+j*j,o=k*k+l*l,p=i*k+j*l,q=e*Math.sqrt(n)/m,r=e*Math.sqrt(o)/m,s=q*p/n,t=r*p/o,u=q*l+r*j,v=q*k+r*i,w=j*(r+s),x=i*(r+s),y=l*(q+t),z=k*(q+t),A=Math.atan2(x-v,w-u),B=Math.atan2(z-v,y-u);this.arc(u+a,v+b,e,A,B,j*k>l*i)}return this.dirty=!0,this},PIXI.Graphics.prototype.arc=function(a,b,c,d,e,f,g){if(d===e)return this;void 0===f&&(f=!1),void 0===g&&(g=40),!f&&d>=e?e+=2*Math.PI:f&&e>=d&&(d+=2*Math.PI);var h=f?-1*(d-e):e-d,i=Math.ceil(Math.abs(h)/(2*Math.PI))*g;if(0===h)return this;var j=a+Math.cos(d)*c,k=b+Math.sin(d)*c;f&&this.filling?this.moveTo(a,b):this.moveTo(j,k);for(var l=this.currentPath.shape.points,m=h/(2*i),n=2*m,o=Math.cos(m),p=Math.sin(m),q=i-1,r=q%1/q,s=0;q>=s;s++){var t=s+r*s,u=m+d+n*t,v=Math.cos(u),w=-Math.sin(u);l.push((o*v+p*w)*c+a,(o*-w+p*v)*c+b)}return this.dirty=!0,this},PIXI.Graphics.prototype.beginFill=function(a,b){return this.filling=!0,this.fillColor=a||0,this.fillAlpha=void 0===b?1:b,this.currentPath&&this.currentPath.shape.points.length<=2&&(this.currentPath.fill=this.filling,this.currentPath.fillColor=this.fillColor,this.currentPath.fillAlpha=this.fillAlpha),this},PIXI.Graphics.prototype.endFill=function(){return this.filling=!1,this.fillColor=null,this.fillAlpha=1,this},PIXI.Graphics.prototype.drawRect=function(a,b,c,d){return this.drawShape(new PIXI.Rectangle(a,b,c,d)),this},PIXI.Graphics.prototype.drawRoundedRect=function(a,b,c,d,e){return this.drawShape(new PIXI.RoundedRectangle(a,b,c,d,e)),this},PIXI.Graphics.prototype.drawCircle=function(a,b,c){return this.drawShape(new PIXI.Circle(a,b,c)),this},PIXI.Graphics.prototype.drawEllipse=function(a,b,c,d){return this.drawShape(new PIXI.Ellipse(a,b,c,d)),this},PIXI.Graphics.prototype.drawPolygon=function(a){(a instanceof c.Polygon||a instanceof PIXI.Polygon)&&(a=a.points);var b=a;if(!Array.isArray(b)){b=new Array(arguments.length);for(var d=0;dp?p:x,x=x>r?r:x,x=x>t?t:x,y=y>q?q:y,y=y>s?s:y,y=y>u?u:y,v=p>v?p:v,v=r>v?r:v,v=t>v?t:v,w=q>w?q:w,w=s>w?s:w,w=u>w?u:w,this._bounds.x=x,this._bounds.width=v-x,this._bounds.y=y,this._bounds.height=w-y,this._currentBounds=this._bounds}return this._currentBounds},PIXI.Graphics.prototype.containsPoint=function(a){this.worldTransform.applyInverse(a,tempPoint);for(var b=this.graphicsData,c=0;ch?h:a,b=h+j>b?h+j:b,d=d>i?i:d,e=i+k>e?i+k:e;else if(n===PIXI.Graphics.CIRC)h=f.x,i=f.y,j=f.radius+o/2,k=f.radius+o/2,a=a>h-j?h-j:a,b=h+j>b?h+j:b,d=d>i-k?i-k:d,e=i+k>e?i+k:e;else if(n===PIXI.Graphics.ELIP)h=f.x,i=f.y,j=f.width+o/2,k=f.height+o/2,a=a>h-j?h-j:a,b=h+j>b?h+j:b,d=d>i-k?i-k:d,e=i+k>e?i+k:e;else{g=f.points;for(var p=0;ph-o?h-o:a,b=h+o>b?h+o:b,d=d>i-o?i-o:d,e=i+o>e?i+o:e}}else a=0,b=0,d=0,e=0;var q=this.boundsPadding;this._localBounds.x=a-q,this._localBounds.width=b-a+2*q,this._localBounds.y=d-q,this._localBounds.height=e-d+2*q},PIXI.Graphics.prototype._generateCachedSprite=function(){var a=this.getLocalBounds();if(this._cachedSprite)this._cachedSprite.buffer.resize(a.width,a.height);else{var b=new PIXI.CanvasBuffer(a.width,a.height),c=PIXI.Texture.fromCanvas(b.canvas);this._cachedSprite=new PIXI.Sprite(c),this._cachedSprite.buffer=b,this._cachedSprite.worldTransform=this.worldTransform}this._cachedSprite.anchor.x=-(a.x/a.width),this._cachedSprite.anchor.y=-(a.y/a.height),this._cachedSprite.buffer.context.translate(-a.x,-a.y),this.worldAlpha=1,PIXI.CanvasGraphics.renderGraphics(this,this._cachedSprite.buffer.context),this._cachedSprite.alpha=this.alpha},PIXI.Graphics.prototype.updateCachedSpriteTexture=function(){var a=this._cachedSprite,b=a.texture,c=a.buffer.canvas;b.baseTexture.width=c.width,b.baseTexture.height=c.height,b.crop.width=b.frame.width=c.width,b.crop.height=b.frame.height=c.height,a._width=c.width,a._height=c.height,b.baseTexture.dirty()},PIXI.Graphics.prototype.destroyCachedSprite=function(){this._cachedSprite.texture.destroy(!0),this._cachedSprite=null},PIXI.Graphics.prototype.drawShape=function(a){this.currentPath&&this.currentPath.shape.points.length<=2&&this.graphicsData.pop(),this.currentPath=null,a instanceof c.Polygon&&(a=a.clone(),a.flatten());var b=new PIXI.GraphicsData(this.lineWidth,this.lineColor,this.lineAlpha,this.fillColor,this.fillAlpha,this.filling,a);return this.graphicsData.push(b),b.type===PIXI.Graphics.POLY&&(b.shape.closed=this.filling,this.currentPath=b),this.dirty=!0,b},Object.defineProperty(PIXI.Graphics.prototype,"cacheAsBitmap",{get:function(){return this._cacheAsBitmap},set:function(a){this._cacheAsBitmap=a,this._cacheAsBitmap?this._generateCachedSprite():this.destroyCachedSprite(),this.dirty=!0,this.webGLDirty=!0}}),PIXI.GraphicsData=function(a,b,c,d,e,f,g){this.lineWidth=a,this.lineColor=b,this.lineAlpha=c,this._lineTint=b,this.fillColor=d,this.fillAlpha=e,this._fillTint=d,this.fill=f,this.shape=g,this.type=g.type},PIXI.GraphicsData.prototype.constructor=PIXI.GraphicsData,PIXI.GraphicsData.prototype.clone=function(){return new GraphicsData(this.lineWidth,this.lineColor,this.lineAlpha,this.fillColor,this.fillAlpha,this.fill,this.shape)},PIXI.PolyK={},PIXI.PolyK.Triangulate=function(a){var b=!0,c=a.length>>1;if(3>c)return[];for(var d=[],e=[],f=0;c>f;f++)e.push(f);f=0;for(var g=c;g>3;){var h=e[(f+0)%g],i=e[(f+1)%g],j=e[(f+2)%g],k=a[2*h],l=a[2*h+1],m=a[2*i],n=a[2*i+1],o=a[2*j],p=a[2*j+1],q=!1;if(PIXI.PolyK._convex(k,l,m,n,o,p,b)){q=!0;for(var r=0;g>r;r++){var s=e[r];if(s!==h&&s!==i&&s!==j&&PIXI.PolyK._PointInTriangle(a[2*s],a[2*s+1],k,l,m,n,o,p)){q=!1;break}}}if(q)d.push(h,i,j),e.splice((f+1)%g,1),g--,f=0;else if(f++>3*g){if(!b)return null;for(d=[],e=[],f=0;c>f;f++)e.push(f);f=0,g=c,b=!1}}return d.push(e[0],e[1],e[2]),d},PIXI.PolyK._PointInTriangle=function(a,b,c,d,e,f,g,h){var i=g-c,j=h-d,k=e-c,l=f-d,m=a-c,n=b-d,o=i*i+j*j,p=i*k+j*l,q=i*m+j*n,r=k*k+l*l,s=k*m+l*n,t=1/(o*r-p*p),u=(r*q-p*s)*t,v=(o*s-p*q)*t;return u>=0&&v>=0&&1>u+v},PIXI.PolyK._convex=function(a,b,c,d,e,f,g){return(b-d)*(e-c)+(c-a)*(f-d)>=0===g},PIXI.EarCut={},PIXI.EarCut.Triangulate=function(a,b,c){c=c||2;var d=b&&b.length,e=d?b[0]*c:a.length,f=PIXI.EarCut.linkedList(a,0,e,c,!0),g=[];if(!f)return g;var h,i,j,k,l,m,n;if(d&&(f=PIXI.EarCut.eliminateHoles(a,b,f,c)),a.length>80*c){h=j=a[0],i=k=a[1];for(var o=c;e>o;o+=c)l=a[o],m=a[o+1],h>l&&(h=l),i>m&&(i=m),l>j&&(j=l),m>k&&(k=m);n=Math.max(j-h,k-i)}return PIXI.EarCut.earcutLinked(f,g,c,h,i,n),g},PIXI.EarCut.linkedList=function(a,b,c,d,e){var f,g,h,i=0;for(f=b,g=c-d;c>f;f+=d)i+=(a[g]-a[f])*(a[f+1]+a[g+1]),g=f;if(e===i>0)for(f=b;c>f;f+=d)h=PIXI.EarCut.insertNode(f,a[f],a[f+1],h);else for(f=c-d;f>=b;f-=d)h=PIXI.EarCut.insertNode(f,a[f],a[f+1],h);return h},PIXI.EarCut.filterPoints=function(a,b){if(!a)return a;b||(b=a);var c,d=a;do if(c=!1,d.steiner||!PIXI.EarCut.equals(d,d.next)&&0!==PIXI.EarCut.area(d.prev,d,d.next))d=d.next;else{if(PIXI.EarCut.removeNode(d),d=b=d.prev,d===d.next)return null;c=!0}while(c||d!==b);return b},PIXI.EarCut.earcutLinked=function(a,b,c,d,e,f,g){if(a){!g&&f&&PIXI.EarCut.indexCurve(a,d,e,f);for(var h,i,j=a;a.prev!==a.next;)if(h=a.prev,i=a.next,f?PIXI.EarCut.isEarHashed(a,d,e,f):PIXI.EarCut.isEar(a))b.push(h.i/c),b.push(a.i/c),b.push(i.i/c),PIXI.EarCut.removeNode(a),a=i.next,j=i.next;else if(a=i,a===j){g?1===g?(a=PIXI.EarCut.cureLocalIntersections(a,b,c),PIXI.EarCut.earcutLinked(a,b,c,d,e,f,2)):2===g&&PIXI.EarCut.splitEarcut(a,b,c,d,e,f):PIXI.EarCut.earcutLinked(PIXI.EarCut.filterPoints(a),b,c,d,e,f,1);break}}},PIXI.EarCut.isEar=function(a){var b=a.prev,c=a,d=a.next;if(PIXI.EarCut.area(b,c,d)>=0)return!1;for(var e=a.next.next;e!==a.prev;){if(PIXI.EarCut.pointInTriangle(b.x,b.y,c.x,c.y,d.x,d.y,e.x,e.y)&&PIXI.EarCut.area(e.prev,e,e.next)>=0)return!1;e=e.next}return!0},PIXI.EarCut.isEarHashed=function(a,b,c,d){var e=a.prev,f=a,g=a.next;if(PIXI.EarCut.area(e,f,g)>=0)return!1;for(var h=e.xf.x?e.x>g.x?e.x:g.x:f.x>g.x?f.x:g.x,k=e.y>f.y?e.y>g.y?e.y:g.y:f.y>g.y?f.y:g.y,l=PIXI.EarCut.zOrder(h,i,b,c,d),m=PIXI.EarCut.zOrder(j,k,b,c,d),n=a.nextZ;n&&n.z<=m;){if(n!==a.prev&&n!==a.next&&PIXI.EarCut.pointInTriangle(e.x,e.y,f.x,f.y,g.x,g.y,n.x,n.y)&&PIXI.EarCut.area(n.prev,n,n.next)>=0)return!1;n=n.nextZ}for(n=a.prevZ;n&&n.z>=l;){if(n!==a.prev&&n!==a.next&&PIXI.EarCut.pointInTriangle(e.x,e.y,f.x,f.y,g.x,g.y,n.x,n.y)&&PIXI.EarCut.area(n.prev,n,n.next)>=0)return!1;n=n.prevZ}return!0},PIXI.EarCut.cureLocalIntersections=function(a,b,c){var d=a;do{var e=d.prev,f=d.next.next;PIXI.EarCut.intersects(e,d,d.next,f)&&PIXI.EarCut.locallyInside(e,f)&&PIXI.EarCut.locallyInside(f,e)&&(b.push(e.i/c),b.push(d.i/c),b.push(f.i/c),PIXI.EarCut.removeNode(d),PIXI.EarCut.removeNode(d.next),d=a=f),d=d.next}while(d!==a);return d},PIXI.EarCut.splitEarcut=function(a,b,c,d,e,f){var g=a;do{for(var h=g.next.next;h!==g.prev;){if(g.i!==h.i&&PIXI.EarCut.isValidDiagonal(g,h)){var i=PIXI.EarCut.splitPolygon(g,h);return g=PIXI.EarCut.filterPoints(g,g.next),i=PIXI.EarCut.filterPoints(i,i.next),PIXI.EarCut.earcutLinked(g,b,c,d,e,f),void PIXI.EarCut.earcutLinked(i,b,c,d,e,f)}h=h.next}g=g.next}while(g!==a)},PIXI.EarCut.eliminateHoles=function(a,b,c,d){var e,f,g,h,i,j=[];for(e=0,f=b.length;f>e;e++)g=b[e]*d,h=f-1>e?b[e+1]*d:a.length,i=PIXI.EarCut.linkedList(a,g,h,d,!1),i===i.next&&(i.steiner=!0),j.push(PIXI.EarCut.getLeftmost(i));for(j.sort(compareX),e=0;e=d.next.y){var h=d.x+(f-d.y)*(d.next.x-d.x)/(d.next.y-d.y);e>=h&&h>g&&(g=h,c=d.x=d.x&&d.x>=c.x&&PIXI.EarCut.pointInTriangle(fi||i===k&&d.x>c.x)&&PIXI.EarCut.locallyInside(d,a)&&(c=d,k=i)),d=d.next;return c},PIXI.EarCut.indexCurve=function(a,b,c,d){var e=a;do null===e.z&&(e.z=PIXI.EarCut.zOrder(e.x,e.y,b,c,d)),e.prevZ=e.prev,e.nextZ=e.next,e=e.next;while(e!==a);e.prevZ.nextZ=null,e.prevZ=null,PIXI.EarCut.sortLinked(e)},PIXI.EarCut.sortLinked=function(a){var b,c,d,e,f,g,h,i,j=1;do{for(c=a,a=null,f=null,g=0;c;){for(g++,d=c,h=0,b=0;j>b&&(h++,d=d.nextZ,d);b++);for(i=j;h>0||i>0&&d;)0===h?(e=d,d=d.nextZ,i--):0!==i&&d?c.z<=d.z?(e=c,c=c.nextZ,h--):(e=d,d=d.nextZ,i--):(e=c,c=c.nextZ,h--),f?f.nextZ=e:a=e,e.prevZ=f,f=e;c=d}f.nextZ=null,j*=2}while(g>1);return a},PIXI.EarCut.zOrder=function(a,b,c,d,e){return a=32767*(a-c)/e,b=32767*(b-d)/e,a=16711935&(a|a<<8),a=252645135&(a|a<<4),a=858993459&(a|a<<2),a=1431655765&(a|a<<1),b=16711935&(b|b<<8),b=252645135&(b|b<<4),b=858993459&(b|b<<2),b=1431655765&(b|b<<1),a|b<<1},PIXI.EarCut.getLeftmost=function(a){var b=a,c=a;do b.x=0&&(a-g)*(d-h)-(c-g)*(b-h)>=0&&(c-g)*(f-h)-(e-g)*(d-h)>=0},PIXI.EarCut.isValidDiagonal=function(a,b){return PIXI.EarCut.equals(a,b)||a.next.i!==b.i&&a.prev.i!==b.i&&!PIXI.EarCut.intersectsPolygon(a,b)&&PIXI.EarCut.locallyInside(a,b)&&PIXI.EarCut.locallyInside(b,a)&&PIXI.EarCut.middleInside(a,b)},PIXI.EarCut.area=function(a,b,c){return(b.y-a.y)*(c.x-b.x)-(b.x-a.x)*(c.y-b.y)},PIXI.EarCut.equals=function(a,b){return a.x===b.x&&a.y===b.y},PIXI.EarCut.intersects=function(a,b,c,d){return PIXI.EarCut.area(a,b,c)>0!=PIXI.EarCut.area(a,b,d)>0&&PIXI.EarCut.area(c,d,a)>0!=PIXI.EarCut.area(c,d,b)>0},PIXI.EarCut.intersectsPolygon=function(a,b){var c=a;do{if(c.i!==a.i&&c.next.i!==a.i&&c.i!==b.i&&c.next.i!==b.i&&PIXI.EarCut.intersects(c,c.next,a,b))return!0;c=c.next}while(c!==a);return!1},PIXI.EarCut.locallyInside=function(a,b){return PIXI.EarCut.area(a.prev,a,a.next)<0?PIXI.EarCut.area(a,b,a.next)>=0&&PIXI.EarCut.area(a,a.prev,b)>=0:PIXI.EarCut.area(a,b,a.prev)<0||PIXI.EarCut.area(a,a.next,b)<0},PIXI.EarCut.middleInside=function(a,b){var c=a,d=!1,e=(a.x+b.x)/2,f=(a.y+b.y)/2;do c.y>f!=c.next.y>f&&e<(c.next.x-c.x)*(f-c.y)/(c.next.y-c.y)+c.x&&(d=!d),c=c.next;while(c!==a);return d},PIXI.EarCut.splitPolygon=function(a,b){var c=new PIXI.EarCut.Node(a.i,a.x,a.y),d=new PIXI.EarCut.Node(b.i,b.x,b.y),e=a.next,f=b.prev;return a.next=b,b.prev=a,c.next=e,e.prev=c,d.next=c,c.prev=d,f.next=d,d.prev=f,d},PIXI.EarCut.insertNode=function(a,b,c,d){var e=new PIXI.EarCut.Node(a,b,c);return d?(e.next=d.next,e.prev=d,d.next.prev=e,d.next=e):(e.prev=e,e.next=e),e},PIXI.EarCut.removeNode=function(a){a.next.prev=a.prev,a.prev.next=a.next,a.prevZ&&(a.prevZ.nextZ=a.nextZ),a.nextZ&&(a.nextZ.prevZ=a.prevZ)},PIXI.EarCut.Node=function(a,b,c){this.i=a,this.x=b,this.y=c,this.prev=null,this.next=null,this.z=null,this.prevZ=null,this.nextZ=null,this.steiner=!1},PIXI.WebGLGraphics=function(){},PIXI.WebGLGraphics.stencilBufferLimit=6,PIXI.WebGLGraphics.renderGraphics=function(a,b){var c,d=b.gl,e=b.projection,f=b.offset,g=b.shaderManager.primitiveShader;a.dirty&&PIXI.WebGLGraphics.updateGraphics(a,d);for(var h=a._webGL[d.id],i=0;i=PIXI.WebGLGraphics.stencilBufferLimit)if(g.points.length<2*PIXI.WebGLGraphics.stencilBufferLimit){f=PIXI.WebGLGraphics.switchMode(c,0);var h=PIXI.WebGLGraphics.buildPoly(g,f);h||(f=PIXI.WebGLGraphics.switchMode(c,1),PIXI.WebGLGraphics.buildComplexPoly(g,f))}else f=PIXI.WebGLGraphics.switchMode(c,1),PIXI.WebGLGraphics.buildComplexPoly(g,f);g.lineWidth>0&&(f=PIXI.WebGLGraphics.switchMode(c,0),PIXI.WebGLGraphics.buildLine(g,f))}else f=PIXI.WebGLGraphics.switchMode(c,0),g.type===PIXI.Graphics.RECT?PIXI.WebGLGraphics.buildRectangle(g,f):g.type===PIXI.Graphics.CIRC||g.type===PIXI.Graphics.ELIP?PIXI.WebGLGraphics.buildCircle(g,f):g.type===PIXI.Graphics.RREC&&PIXI.WebGLGraphics.buildRoundedRectangle(g,f);c.lastIndex++}for(d=0;d=q;q++)p=q/n,h=g(a,c,p),i=g(b,d,p),j=g(c,e,p),k=g(d,f,p),l=g(h,j,p),m=g(i,k,p),o.push(l,m);return o},PIXI.WebGLGraphics.buildCircle=function(a,b){var c,d,e=a.shape,f=e.x,g=e.y;a.type===PIXI.Graphics.CIRC?(c=e.radius,d=e.radius):(c=e.width,d=e.height);var h=40,i=2*Math.PI/h,j=0;if(a.fill){var k=PIXI.hex2rgb(a.fillColor),l=a.fillAlpha,m=k[0]*l,n=k[1]*l,o=k[2]*l,p=b.points,q=b.indices,r=p.length/6;for(q.push(r),j=0;h+1>j;j++)p.push(f,g,m,n,o,l),p.push(f+Math.sin(i*j)*c,g+Math.cos(i*j)*d,m,n,o,l),q.push(r++,r++);q.push(r-1)}if(a.lineWidth){var s=a.points;for(a.points=[],j=0;h+1>j;j++)a.points.push(f+Math.sin(i*j)*c,g+Math.cos(i*j)*d);PIXI.WebGLGraphics.buildLine(a,b),a.points=s}},PIXI.WebGLGraphics.buildLine=function(a,b){var c=0,d=a.points;if(0!==d.length){if(a.lineWidth%2)for(c=0;cc;c++)k=d[2*(c-1)],l=d[2*(c-1)+1],m=d[2*c],n=d[2*c+1],o=d[2*(c+1)],p=d[2*(c+1)+1],q=-(l-n),r=k-m,E=Math.sqrt(q*q+r*r),q/=E,r/=E,q*=K,r*=K,s=-(n-p),t=m-o,E=Math.sqrt(s*s+t*t),s/=E,t/=E,s*=K,t*=K,w=-r+l-(-r+n),x=-q+m-(-q+k),y=(-q+k)*(-r+n)-(-q+m)*(-r+l),z=-t+p-(-t+n),A=-s+m-(-s+o),B=(-s+o)*(-t+n)-(-s+m)*(-t+p),C=w*A-z*x,Math.abs(C)<.1?(C+=10.1,F.push(m-q,n-r,N,O,P,M),F.push(m+q,n+r,N,O,P,M)):(i=(x*B-A*y)/C,j=(z*y-w*B)/C,D=(i-m)*(i-m)+(j-n)+(j-n),D>19600?(u=q-s,v=r-t,E=Math.sqrt(u*u+v*v),u/=E,v/=E,u*=K,v*=K,F.push(m-u,n-v),F.push(N,O,P,M),F.push(m+u,n+v),F.push(N,O,P,M),F.push(m-u,n-v),F.push(N,O,P,M),I++):(F.push(i,j),F.push(N,O,P,M),F.push(m-(i-m),n-(j-n)),F.push(N,O,P,M)));for(k=d[2*(H-2)],l=d[2*(H-2)+1],m=d[2*(H-1)],n=d[2*(H-1)+1],q=-(l-n),r=k-m,E=Math.sqrt(q*q+r*r),q/=E,r/=E,q*=K,r*=K,F.push(m-q,n-r),F.push(N,O,P,M),F.push(m+q,n+r),F.push(N,O,P,M),G.push(J),c=0;I>c;c++)G.push(J++);G.push(J-1)}},PIXI.WebGLGraphics.buildComplexPoly=function(a,b){var c=a.points.slice();if(!(c.length<6)){var d=b.indices;b.points=c,b.alpha=a.fillAlpha,b.color=PIXI.hex2rgb(a.fillColor);for(var e,f,g=1/0,h=-(1/0),i=1/0,j=-(1/0),k=0;ke?e:g,h=e>h?e:h,i=i>f?f:i,j=f>j?f:j;c.push(g,i,h,i,h,j,g,j);var l=c.length/2;for(k=0;l>k;k++)d.push(k)}},PIXI.WebGLGraphics.buildPoly=function(a,b){var c=a.points;if(!(c.length<6)){var d=b.points,e=b.indices,f=c.length/2,g=PIXI.hex2rgb(a.fillColor),h=a.fillAlpha,i=g[0]*h,j=g[1]*h,k=g[2]*h,l=PIXI.EarCut.Triangulate(c,null,2);if(!l)return!1;var m=d.length/6,n=0;for(n=0;nn;n++)d.push(c[2*n],c[2*n+1],i,j,k,h);return!0}},PIXI.WebGLGraphics.graphicsDataPool=[],PIXI.WebGLGraphicsData=function(a){this.gl=a,this.color=[0,0,0],this.points=[],this.indices=[],this.buffer=a.createBuffer(),this.indexBuffer=a.createBuffer(),this.mode=1,this.alpha=1,this.dirty=!0},PIXI.WebGLGraphicsData.prototype.reset=function(){this.points=[],this.indices=[]},PIXI.WebGLGraphicsData.prototype.upload=function(){var a=this.gl;this.glPoints=new PIXI.Float32Array(this.points),a.bindBuffer(a.ARRAY_BUFFER,this.buffer),a.bufferData(a.ARRAY_BUFFER,this.glPoints,a.STATIC_DRAW),this.glIndicies=new PIXI.Uint16Array(this.indices),a.bindBuffer(a.ELEMENT_ARRAY_BUFFER,this.indexBuffer),a.bufferData(a.ELEMENT_ARRAY_BUFFER,this.glIndicies,a.STATIC_DRAW),this.dirty=!1},PIXI.CanvasGraphics=function(){},PIXI.CanvasGraphics.renderGraphics=function(a,b){var c=a.worldAlpha;a.dirty&&(this.updateGraphicsTint(a),a.dirty=!1);for(var d=0;dA?A:z,b.beginPath(),b.moveTo(v,w+z),b.lineTo(v,w+y-z),b.quadraticCurveTo(v,w+y,v+z,w+y),b.lineTo(v+x-z,w+y),b.quadraticCurveTo(v+x,w+y,v+x,w+y-z),b.lineTo(v+x,w+z),b.quadraticCurveTo(v+x,w,v+x-z,w),b.lineTo(v+z,w),b.quadraticCurveTo(v,w,v,w+z),b.closePath(),(e.fillColor||0===e.fillColor)&&(b.globalAlpha=e.fillAlpha*c,b.fillStyle="#"+("00000"+(0|g).toString(16)).substr(-6),b.fill()),e.lineWidth&&(b.globalAlpha=e.lineAlpha*c,b.strokeStyle="#"+("00000"+(0|h).toString(16)).substr(-6),b.stroke())}}},PIXI.CanvasGraphics.renderGraphicsMask=function(a,b){var c=a.graphicsData.length;if(0!==c){b.beginPath();for(var d=0;c>d;d++){var e=a.graphicsData[d],f=e.shape;if(e.type===PIXI.Graphics.POLY){var g=f.points;b.moveTo(g[0],g[1]);for(var h=1;hy?y:x,b.moveTo(t,u+x),b.lineTo(t,u+w-x),b.quadraticCurveTo(t,u+w,t+x,u+w),b.lineTo(t+v-x,u+w),b.quadraticCurveTo(t+v,u+w,t+v,u+w-x),b.lineTo(t+v,u+x),b.quadraticCurveTo(t+v,u,t+v-x,u),b.lineTo(t+x,u),b.quadraticCurveTo(t,u,t,u+x),b.closePath()}}}},PIXI.CanvasGraphics.updateGraphicsTint=function(a){if(16777215!==a.tint)for(var b=(a.tint>>16&255)/255,c=(a.tint>>8&255)/255,d=(255&a.tint)/255,e=0;e>16&255)/255*b*255<<16)+((g>>8&255)/255*c*255<<8)+(255&g)/255*d*255,f._lineTint=((h>>16&255)/255*b*255<<16)+((h>>8&255)/255*c*255<<8)+(255&h)/255*d*255}},c.Graphics=function(a,b,d){void 0===b&&(b=0),void 0===d&&(d=0), -this.type=c.GRAPHICS,this.physicsType=c.SPRITE,this.anchor=new c.Point,PIXI.Graphics.call(this),c.Component.Core.init.call(this,a,b,d,"",null)},c.Graphics.prototype=Object.create(PIXI.Graphics.prototype),c.Graphics.prototype.constructor=c.Graphics,c.Component.Core.install.call(c.Graphics.prototype,["Angle","AutoCull","Bounds","Destroy","FixedToCamera","InputEnabled","InWorld","LifeSpan","PhysicsBody","Reset"]),c.Graphics.prototype.preUpdatePhysics=c.Component.PhysicsBody.preUpdate,c.Graphics.prototype.preUpdateLifeSpan=c.Component.LifeSpan.preUpdate,c.Graphics.prototype.preUpdateInWorld=c.Component.InWorld.preUpdate,c.Graphics.prototype.preUpdateCore=c.Component.Core.preUpdate,c.Graphics.prototype.preUpdate=function(){return this.preUpdatePhysics()&&this.preUpdateLifeSpan()&&this.preUpdateInWorld()?this.preUpdateCore():!1},c.Graphics.prototype.destroy=function(a){this.clear(),c.Component.Destroy.prototype.destroy.call(this,a)},c.Graphics.prototype.drawTriangle=function(a,b){void 0===b&&(b=!1);var d=new c.Polygon(a);if(b){var e=new c.Point(this.game.camera.x-a[0].x,this.game.camera.y-a[0].y),f=new c.Point(a[1].x-a[0].x,a[1].y-a[0].y),g=new c.Point(a[1].x-a[2].x,a[1].y-a[2].y),h=g.cross(f);e.dot(h)>0&&this.drawPolygon(d)}else this.drawPolygon(d)},c.Graphics.prototype.drawTriangles=function(a,b,d){void 0===d&&(d=!1);var e,f=new c.Point,g=new c.Point,h=new c.Point,i=[];if(b)if(a[0]instanceof c.Point)for(e=0;e0&&this.style.maxLinesh;h++){if(0===c){var i=this.style.strokeThickness+this.padding.x;i+=this.colors.length>0||this.strokeColors.length>0||this.fontWeights.length>0||this.fontStyles.length>0?this.measureLine(b[h]):this.context.measureText(b[h]).width,this.style.wordWrap&&(i-=this.context.measureText(" ").width)}else{var j=b[h].split(/(?:\t)/),i=this.padding.x+this.style.strokeThickness;if(Array.isArray(c))for(var k=0,l=0;l0||this.strokeColors.length>0||this.fontWeights.length>0||this.fontStyles.length>0?this.measureLine(j[l]):Math.ceil(this.context.measureText(j[l]).width),l>0&&(k+=c[l-1]),i=k+m}else for(var l=0;l0||this.strokeColors.length>0||this.fontWeights.length>0||this.fontStyles.length>0?this.measureLine(j[l]):Math.ceil(this.context.measureText(j[l]).width);var n=this.game.math.snapToCeil(i,c)-i;i+=n}}d[h]=Math.ceil(i),e=Math.max(e,d[h])}this.canvas.width=e*this._res;var o=f.fontSize+this.style.strokeThickness+this.padding.y,p=o*g,q=this._lineSpacing;0>q&&Math.abs(q)>o&&(q=-o),0!==q&&(p+=q>0?q*b.length:q*(b.length-1)),this.canvas.height=p*this._res,this.context.scale(this._res,this._res),navigator.isCocoonJS&&this.context.clearRect(0,0,this.canvas.width,this.canvas.height),this.style.backgroundColor&&(this.context.fillStyle=this.style.backgroundColor,this.context.fillRect(0,0,this.canvas.width,this.canvas.height)),this.context.fillStyle=this.style.fill,this.context.font=this.style.font,this.context.strokeStyle=this.style.stroke,this.context.textBaseline="alphabetic",this.context.lineWidth=this.style.strokeThickness,this.context.lineCap="round",this.context.lineJoin="round";var r,s;for(this._charCount=0,h=0;g>h;h++)r=this.style.strokeThickness/2,s=this.style.strokeThickness/2+h*o+f.ascent,h>0&&(s+=q*h),"right"===this.style.align?r+=e-d[h]:"center"===this.style.align&&(r+=(e-d[h])/2),this.autoRound&&(r=Math.round(r),s=Math.round(s)),this.colors.length>0||this.strokeColors.length>0||this.fontWeights.length>0||this.fontStyles.length>0?this.updateLine(b[h],r,s):(this.style.stroke&&this.style.strokeThickness&&(this.updateShadow(this.style.shadowStroke),0===c?this.context.strokeText(b[h],r,s):this.renderTabLine(b[h],r,s,!1)),this.style.fill&&(this.updateShadow(this.style.shadowFill),0===c?this.context.fillText(b[h],r,s):this.renderTabLine(b[h],r,s,!0)));this.updateTexture()},c.Text.prototype.renderTabLine=function(a,b,c,d){var e=a.split(/(?:\t)/),f=this.style.tabs,g=0;if(Array.isArray(f))for(var h=0,i=0;i0&&(h+=f[i-1]),g=b+h,d?this.context.fillText(e[i],g,c):this.context.strokeText(e[i],g,c);else for(var i=0;i0||this.fontStyles.length>0){var e=this.fontToComponents(this.context.font);this.fontStyles[this._charCount]&&(e.fontStyle=this.fontStyles[this._charCount]),this.fontWeights[this._charCount]&&(e.fontWeight=this.fontWeights[this._charCount]),this.context.font=this.componentsToFont(e)}this.style.stroke&&this.style.strokeThickness&&(this.strokeColors[this._charCount]&&(this.context.strokeStyle=this.strokeColors[this._charCount]),this.updateShadow(this.style.shadowStroke)),this.style.fill&&(this.colors[this._charCount]&&(this.context.fillStyle=this.colors[this._charCount]),this.updateShadow(this.style.shadowFill)),b+=this.context.measureText(d).width,this._charCount++}return Math.ceil(b)},c.Text.prototype.updateLine=function(a,b,c){for(var d=0;d0||this.fontStyles.length>0){var f=this.fontToComponents(this.context.font);this.fontStyles[this._charCount]&&(f.fontStyle=this.fontStyles[this._charCount]),this.fontWeights[this._charCount]&&(f.fontWeight=this.fontWeights[this._charCount]),this.context.font=this.componentsToFont(f)}this.style.stroke&&this.style.strokeThickness&&(this.strokeColors[this._charCount]&&(this.context.strokeStyle=this.strokeColors[this._charCount]),this.updateShadow(this.style.shadowStroke),this.context.strokeText(e,b,c)),this.style.fill&&(this.colors[this._charCount]&&(this.context.fillStyle=this.colors[this._charCount]),this.updateShadow(this.style.shadowFill),this.context.fillText(e,b,c)),b+=this.context.measureText(e).width,this._charCount++}},c.Text.prototype.clearColors=function(){return this.colors=[],this.strokeColors=[],this.dirty=!0,this},c.Text.prototype.clearFontValues=function(){return this.fontStyles=[],this.fontWeights=[],this.dirty=!0,this},c.Text.prototype.addColor=function(a,b){return this.colors[b]=a,this.dirty=!0,this},c.Text.prototype.addStrokeColor=function(a,b){return this.strokeColors[b]=a,this.dirty=!0,this},c.Text.prototype.addFontStyle=function(a,b){return this.fontStyles[b]=a,this.dirty=!0,this},c.Text.prototype.addFontWeight=function(a,b){return this.fontWeights[b]=a,this.dirty=!0,this},c.Text.prototype.precalculateWordWrap=function(a){this.texture.baseTexture.resolution=this._res,this.context.font=this.style.font;var b=this.runWordWrap(a);return b.split(/(?:\r\n|\r|\n)/)},c.Text.prototype.runWordWrap=function(a){return this.useAdvancedWrap?this.advancedWordWrap(a):this.basicWordWrap(a)},c.Text.prototype.advancedWordWrap=function(a){for(var b=this.context,c=this.style.wordWrapWidth,d="",e=a.replace(/ +/gi," ").split(/\r?\n/gi),f=e.length,g=0;f>g;g++){var h=e[g],i="";h=h.replace(/^ *|\s*$/gi,"");var j=b.measureText(h).width;if(c>j)d+=h+"\n";else{for(var k=c,l=h.split(" "),m=0;mk){if(0===m){for(var q=o;q.length&&(q=q.slice(0,-1),p=b.measureText(q).width,!(k>=p)););if(!q.length)throw new Error("This text's wordWrapWidth setting is less than a single character!");var r=n.substr(q.length);l[m]=r,i+=q}var s=l[m].length?m:m+1,t=l.slice(s).join(" ").replace(/[ \n]*$/gi,"");e[g+1]=t+" "+(e[g+1]||""),f=e.length;break}i+=o,k-=p}d+=i.replace(/[ \n]*$/gi,"")+"\n"}}return d=d.replace(/[\s|\n]*$/gi,"")},c.Text.prototype.basicWordWrap=function(a){for(var b="",c=a.split("\n"),d=0;de?(g>0&&(b+="\n"),b+=f[g]+" ",e=this.style.wordWrapWidth-h):(e-=i,b+=f[g]+" ")}dd&&(this.style.wordWrapWidth=d)),this.updateTexture(),this},c.Text.prototype.updateTexture=function(){var a=this.texture.baseTexture,b=this.texture.crop,c=this.texture.frame,d=this.canvas.width,e=this.canvas.height;if(a.width=d,a.height=e,b.width=d,b.height=e,c.width=d,c.height=e,this.texture.width=d,this.texture.height=e,this._width=d,this._height=e,this.textBounds){var f=this.textBounds.x,g=this.textBounds.y;"right"===this.style.boundsAlignH?f+=this.textBounds.width-this.canvas.width:"center"===this.style.boundsAlignH&&(f+=this.textBounds.halfWidth-this.canvas.width/2),"bottom"===this.style.boundsAlignV?g+=this.textBounds.height-this.canvas.height:"middle"===this.style.boundsAlignV&&(g+=this.textBounds.halfHeight-this.canvas.height/2),this.pivot.x=-f,this.pivot.y=-g}this.renderable=0!==d&&0!==e,this.texture.requiresReTint=!0,this.texture.baseTexture.dirty()},c.Text.prototype._renderWebGL=function(a){this.dirty&&(this.updateText(),this.dirty=!1),PIXI.Sprite.prototype._renderWebGL.call(this,a)},c.Text.prototype._renderCanvas=function(a){this.dirty&&(this.updateText(),this.dirty=!1),PIXI.Sprite.prototype._renderCanvas.call(this,a)},c.Text.prototype.determineFontProperties=function(a){var b=c.Text.fontPropertiesCache[a];if(!b){b={};var d=c.Text.fontPropertiesCanvas,e=c.Text.fontPropertiesContext;e.font=a;var f=Math.ceil(e.measureText("|MÉq").width),g=Math.ceil(e.measureText("|MÉq").width),h=2*g;if(g=1.4*g|0,d.width=f,d.height=h,e.fillStyle="#f00",e.fillRect(0,0,f,h),e.font=a,e.textBaseline="alphabetic",e.fillStyle="#000",e.fillText("|MÉq",0,g),!e.getImageData(0,0,f,h))return b.ascent=g,b.descent=g+6,b.fontSize=b.ascent+b.descent,c.Text.fontPropertiesCache[a]=b,b;var i,j,k=e.getImageData(0,0,f,h).data,l=k.length,m=4*f,n=0,o=!1;for(i=0;g>i;i++){for(j=0;m>j;j+=4)if(255!==k[n+j]){o=!0;break}if(o)break;n+=m}for(b.ascent=g-i,n=l-m,o=!1,i=h;i>g;i--){for(j=0;m>j;j+=4)if(255!==k[n+j]){o=!0;break}if(o)break;n-=m}b.descent=i-g,b.descent+=6,b.fontSize=b.ascent+b.descent,c.Text.fontPropertiesCache[a]=b}return b},c.Text.prototype.getBounds=function(a){return this.dirty&&(this.updateText(),this.dirty=!1),PIXI.Sprite.prototype.getBounds.call(this,a)},Object.defineProperty(c.Text.prototype,"text",{get:function(){return this._text},set:function(a){a!==this._text&&(this._text=a.toString()||"",this.dirty=!0,this.parent&&this.updateTransform())}}),Object.defineProperty(c.Text.prototype,"cssFont",{get:function(){return this.componentsToFont(this._fontComponents)},set:function(a){a=a||"bold 20pt Arial",this._fontComponents=this.fontToComponents(a),this.updateFont(this._fontComponents)}}),Object.defineProperty(c.Text.prototype,"font",{get:function(){return this._fontComponents.fontFamily},set:function(a){a=a||"Arial",a=a.trim(),/^(?:inherit|serif|sans-serif|cursive|fantasy|monospace)$/.exec(a)||/['",]/.exec(a)||(a="'"+a+"'"),this._fontComponents.fontFamily=a,this.updateFont(this._fontComponents)}}),Object.defineProperty(c.Text.prototype,"fontSize",{get:function(){var a=this._fontComponents.fontSize;return a&&/(?:^0$|px$)/.exec(a)?parseInt(a,10):a},set:function(a){a=a||"0","number"==typeof a&&(a+="px"),this._fontComponents.fontSize=a,this.updateFont(this._fontComponents)}}),Object.defineProperty(c.Text.prototype,"fontWeight",{get:function(){return this._fontComponents.fontWeight||"normal"},set:function(a){a=a||"normal",this._fontComponents.fontWeight=a,this.updateFont(this._fontComponents)}}),Object.defineProperty(c.Text.prototype,"fontStyle",{get:function(){return this._fontComponents.fontStyle||"normal"},set:function(a){a=a||"normal",this._fontComponents.fontStyle=a,this.updateFont(this._fontComponents)}}),Object.defineProperty(c.Text.prototype,"fontVariant",{get:function(){return this._fontComponents.fontVariant||"normal"},set:function(a){a=a||"normal",this._fontComponents.fontVariant=a,this.updateFont(this._fontComponents)}}),Object.defineProperty(c.Text.prototype,"fill",{get:function(){return this.style.fill},set:function(a){a!==this.style.fill&&(this.style.fill=a,this.dirty=!0)}}),Object.defineProperty(c.Text.prototype,"align",{get:function(){return this.style.align},set:function(a){a!==this.style.align&&(this.style.align=a,this.dirty=!0)}}),Object.defineProperty(c.Text.prototype,"resolution",{get:function(){return this._res},set:function(a){a!==this._res&&(this._res=a,this.dirty=!0)}}),Object.defineProperty(c.Text.prototype,"tabs",{get:function(){return this.style.tabs},set:function(a){a!==this.style.tabs&&(this.style.tabs=a,this.dirty=!0)}}),Object.defineProperty(c.Text.prototype,"boundsAlignH",{get:function(){return this.style.boundsAlignH},set:function(a){a!==this.style.boundsAlignH&&(this.style.boundsAlignH=a,this.dirty=!0)}}),Object.defineProperty(c.Text.prototype,"boundsAlignV",{get:function(){return this.style.boundsAlignV},set:function(a){a!==this.style.boundsAlignV&&(this.style.boundsAlignV=a,this.dirty=!0)}}),Object.defineProperty(c.Text.prototype,"stroke",{get:function(){return this.style.stroke},set:function(a){a!==this.style.stroke&&(this.style.stroke=a,this.dirty=!0)}}),Object.defineProperty(c.Text.prototype,"strokeThickness",{get:function(){return this.style.strokeThickness},set:function(a){a!==this.style.strokeThickness&&(this.style.strokeThickness=a,this.dirty=!0)}}),Object.defineProperty(c.Text.prototype,"wordWrap",{get:function(){return this.style.wordWrap},set:function(a){a!==this.style.wordWrap&&(this.style.wordWrap=a,this.dirty=!0)}}),Object.defineProperty(c.Text.prototype,"wordWrapWidth",{get:function(){return this.style.wordWrapWidth},set:function(a){a!==this.style.wordWrapWidth&&(this.style.wordWrapWidth=a,this.dirty=!0)}}),Object.defineProperty(c.Text.prototype,"lineSpacing",{get:function(){return this._lineSpacing},set:function(a){a!==this._lineSpacing&&(this._lineSpacing=parseFloat(a),this.dirty=!0,this.parent&&this.updateTransform())}}),Object.defineProperty(c.Text.prototype,"shadowOffsetX",{get:function(){return this.style.shadowOffsetX},set:function(a){a!==this.style.shadowOffsetX&&(this.style.shadowOffsetX=a,this.dirty=!0)}}),Object.defineProperty(c.Text.prototype,"shadowOffsetY",{get:function(){return this.style.shadowOffsetY},set:function(a){a!==this.style.shadowOffsetY&&(this.style.shadowOffsetY=a,this.dirty=!0)}}),Object.defineProperty(c.Text.prototype,"shadowColor",{get:function(){return this.style.shadowColor},set:function(a){a!==this.style.shadowColor&&(this.style.shadowColor=a,this.dirty=!0)}}),Object.defineProperty(c.Text.prototype,"shadowBlur",{get:function(){return this.style.shadowBlur},set:function(a){a!==this.style.shadowBlur&&(this.style.shadowBlur=a,this.dirty=!0)}}),Object.defineProperty(c.Text.prototype,"shadowStroke",{get:function(){return this.style.shadowStroke},set:function(a){a!==this.style.shadowStroke&&(this.style.shadowStroke=a,this.dirty=!0)}}),Object.defineProperty(c.Text.prototype,"shadowFill",{get:function(){return this.style.shadowFill},set:function(a){a!==this.style.shadowFill&&(this.style.shadowFill=a,this.dirty=!0)}}),Object.defineProperty(c.Text.prototype,"width",{get:function(){return this.dirty&&(this.updateText(),this.dirty=!1),this.scale.x*this.texture.frame.width},set:function(a){this.scale.x=a/this.texture.frame.width,this._width=a}}),Object.defineProperty(c.Text.prototype,"height",{get:function(){return this.dirty&&(this.updateText(),this.dirty=!1),this.scale.y*this.texture.frame.height},set:function(a){this.scale.y=a/this.texture.frame.height,this._height=a}}),c.Text.fontPropertiesCache={},c.Text.fontPropertiesCanvas=PIXI.CanvasPool.create(c.Text.fontPropertiesCanvas),c.Text.fontPropertiesContext=c.Text.fontPropertiesCanvas.getContext("2d"),c.BitmapText=function(a,b,d,e,f,g,h){b=b||0,d=d||0,e=e||"",f=f||"",g=g||32,h=h||"left",PIXI.DisplayObjectContainer.call(this),this.type=c.BITMAPTEXT,this.physicsType=c.SPRITE,this.textWidth=0,this.textHeight=0,this.anchor=new c.Point,this._prevAnchor=new c.Point,this._glyphs=[],this._maxWidth=0,this._text=f.toString()||"",this._data=a.cache.getBitmapFont(e),this._font=e,this._fontSize=g,this._align=h,this._tint=16777215,this.updateText(),this.dirty=!1,c.Component.Core.init.call(this,a,b,d,"",null)},c.BitmapText.prototype=Object.create(PIXI.DisplayObjectContainer.prototype),c.BitmapText.prototype.constructor=c.BitmapText,c.Component.Core.install.call(c.BitmapText.prototype,["Angle","AutoCull","Bounds","Destroy","FixedToCamera","InputEnabled","InWorld","LifeSpan","PhysicsBody","Reset"]),c.BitmapText.prototype.preUpdatePhysics=c.Component.PhysicsBody.preUpdate,c.BitmapText.prototype.preUpdateLifeSpan=c.Component.LifeSpan.preUpdate,c.BitmapText.prototype.preUpdateInWorld=c.Component.InWorld.preUpdate,c.BitmapText.prototype.preUpdateCore=c.Component.Core.preUpdate,c.BitmapText.prototype.preUpdate=function(){return this.preUpdatePhysics()&&this.preUpdateLifeSpan()&&this.preUpdateInWorld()?this.preUpdateCore():!1},c.BitmapText.prototype.postUpdate=function(){c.Component.PhysicsBody.postUpdate.call(this),c.Component.FixedToCamera.postUpdate.call(this),this.body&&this.body.type===c.Physics.ARCADE&&(this.textWidth!==this.body.sourceWidth||this.textHeight!==this.body.sourceHeight)&&this.body.setSize(this.textWidth,this.textHeight)},c.BitmapText.prototype.setText=function(a){this.text=a},c.BitmapText.prototype.scanLine=function(a,b,c){for(var d=0,e=0,f=-1,g=0,h=null,i=this._maxWidth>0?this._maxWidth:null,j=[],k=0;k=i&&f>-1)return{width:g||e,text:c.substr(0,k-(k-f)),end:l,chars:j};e+=(n.xAdvance+p)*b,j.push(d+(n.xOffset+p)*b),d+=(n.xAdvance+p)*b,h=m}return{width:e,text:c,end:l,chars:j}},c.BitmapText.prototype.cleanText=function(a,b){void 0===b&&(b="");var c=this._data.font;if(!c)return"";for(var d=/\r\n|\n\r|\n|\r/g,e=a.replace(d,"\n").split("\n"),f=0;fthis.textWidth&&(this.textWidth=f.width),e+=a.lineHeight*c,b=b.substr(f.text.length+1)}while(f.end===!1);this.textHeight=e;for(var g=0,h=0,i=this.textWidth*this.anchor.x,j=this.textHeight*this.anchor.y,k=0;k0&&(this._fontSize=a,this.updateText())}}),Object.defineProperty(c.BitmapText.prototype,"text",{get:function(){return this._text},set:function(a){a!==this._text&&(this._text=a.toString()||"",this.updateText())}}),Object.defineProperty(c.BitmapText.prototype,"maxWidth",{get:function(){return this._maxWidth},set:function(a){a!==this._maxWidth&&(this._maxWidth=a,this.updateText())}}),Object.defineProperty(c.BitmapText.prototype,"smoothed",{get:function(){return!this._data.base.scaleMode},set:function(a){a?this._data.base.scaleMode=0:this._data.base.scaleMode=1}}),c.RetroFont=function(a,b,d,e,f,g,h,i,j,k){if(!a.cache.checkImageKey(b))return!1;(void 0===g||null===g)&&(g=a.cache.getImage(b).width/d),this.characterWidth=d,this.characterHeight=e,this.characterSpacingX=h||0,this.characterSpacingY=i||0,this.characterPerRow=g,this.offsetX=j||0,this.offsetY=k||0,this.align="left",this.multiLine=!1,this.autoUpperCase=!0,this.customSpacingX=0,this.customSpacingY=0,this.fixedWidth=0,this.fontSet=a.cache.getImage(b),this._text="",this.grabData=[],this.frameData=new c.FrameData;for(var l=this.offsetX,m=this.offsetY,n=0,o=0;o?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~",c.RetroFont.TEXT_SET2=" !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ",c.RetroFont.TEXT_SET3="ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789 ",c.RetroFont.TEXT_SET4="ABCDEFGHIJKLMNOPQRSTUVWXYZ 0123456789",c.RetroFont.TEXT_SET5="ABCDEFGHIJKLMNOPQRSTUVWXYZ.,/() '!?-*:0123456789",c.RetroFont.TEXT_SET6="ABCDEFGHIJKLMNOPQRSTUVWXYZ!?:;0123456789\"(),-.' ",c.RetroFont.TEXT_SET7="AGMSY+:4BHNTZ!;5CIOU.?06DJPV,(17EKQW\")28FLRX-'39",c.RetroFont.TEXT_SET8="0123456789 .ABCDEFGHIJKLMNOPQRSTUVWXYZ",c.RetroFont.TEXT_SET9="ABCDEFGHIJKLMNOPQRSTUVWXYZ()-0123456789.:,'\"?!",c.RetroFont.TEXT_SET10="ABCDEFGHIJKLMNOPQRSTUVWXYZ",c.RetroFont.TEXT_SET11="ABCDEFGHIJKLMNOPQRSTUVWXYZ.,\"-+!?()':;0123456789",c.RetroFont.prototype.setFixedWidth=function(a,b){void 0===b&&(b="left"),this.fixedWidth=a,this.align=b},c.RetroFont.prototype.setText=function(a,b,c,d,e,f){this.multiLine=b||!1,this.customSpacingX=c||0,this.customSpacingY=d||0,this.align=e||"left",f?this.autoUpperCase=!1:this.autoUpperCase=!0,a.length>0&&(this.text=a)},c.RetroFont.prototype.buildRetroFontText=function(){var a=0,b=0;if(this.clear(),this.multiLine){var d=this._text.split("\n");this.fixedWidth>0?this.resize(this.fixedWidth,d.length*(this.characterHeight+this.customSpacingY)-this.customSpacingY,!0):this.resize(this.getLongestLine()*(this.characterWidth+this.customSpacingX),d.length*(this.characterHeight+this.customSpacingY)-this.customSpacingY,!0);for(var e=0;ea&&(a=0),this.pasteLine(d[e],a,b,this.customSpacingX),b+=this.characterHeight+this.customSpacingY}else this.fixedWidth>0?this.resize(this.fixedWidth,this.characterHeight,!0):this.resize(this._text.length*(this.characterWidth+this.customSpacingX),this.characterHeight,!0),a=0,this.align===c.RetroFont.ALIGN_RIGHT?a=this.width-this._text.length*(this.characterWidth+this.customSpacingX):this.align===c.RetroFont.ALIGN_CENTER&&(a=this.width/2-this._text.length*(this.characterWidth+this.customSpacingX)/2,a+=this.customSpacingX/2),0>a&&(a=0),this.pasteLine(this._text,a,0,this.customSpacingX);this.requiresReTint=!0},c.RetroFont.prototype.pasteLine=function(a,b,c,d){for(var e=0;e=0&&(this.stamp.frame=this.grabData[a.charCodeAt(e)],this.renderXY(this.stamp,b,c,!1),b+=this.characterWidth+d,b>this.width))break},c.RetroFont.prototype.getLongestLine=function(){var a=0;if(this._text.length>0)for(var b=this._text.split("\n"),c=0;ca&&(a=b[c].length);return a},c.RetroFont.prototype.removeUnsupportedCharacters=function(a){for(var b="",c=0;c=0||!a&&"\n"===d)&&(b=b.concat(d))}return b},c.RetroFont.prototype.updateOffset=function(a,b){if(this.offsetX!==a||this.offsetY!==b){for(var c=a-this.offsetX,d=b-this.offsetY,e=this.game.cache.getFrameData(this.stamp.key).getFrames(),f=e.length;f--;)e[f].x+=c,e[f].y+=d;this.buildRetroFontText()}},Object.defineProperty(c.RetroFont.prototype,"text",{get:function(){return this._text},set:function(a){var b;b=this.autoUpperCase?a.toUpperCase():a, -b!==this._text&&(this._text=b,this.removeUnsupportedCharacters(this.multiLine),this.buildRetroFontText())}}),Object.defineProperty(c.RetroFont.prototype,"smoothed",{get:function(){return this.stamp.smoothed},set:function(a){this.stamp.smoothed=a,this.buildRetroFontText()}}),c.Rope=function(a,b,d,e,f,g){this.points=[],this.points=g,this._hasUpdateAnimation=!1,this._updateAnimationCallback=null,b=b||0,d=d||0,e=e||null,f=f||null,this.type=c.ROPE,PIXI.Rope.call(this,PIXI.TextureCache.__default,this.points),c.Component.Core.init.call(this,a,b,d,e,f)},c.Rope.prototype=Object.create(PIXI.Rope.prototype),c.Rope.prototype.constructor=c.Rope,c.Component.Core.install.call(c.Rope.prototype,["Angle","Animation","AutoCull","Bounds","BringToTop","Crop","Delta","Destroy","FixedToCamera","InWorld","LifeSpan","LoadTexture","Overlap","PhysicsBody","Reset","ScaleMinMax","Smoothed"]),c.Rope.prototype.preUpdatePhysics=c.Component.PhysicsBody.preUpdate,c.Rope.prototype.preUpdateLifeSpan=c.Component.LifeSpan.preUpdate,c.Rope.prototype.preUpdateInWorld=c.Component.InWorld.preUpdate,c.Rope.prototype.preUpdateCore=c.Component.Core.preUpdate,c.Rope.prototype.preUpdate=function(){return this.preUpdatePhysics()&&this.preUpdateLifeSpan()&&this.preUpdateInWorld()?this.preUpdateCore():!1},c.Rope.prototype.update=function(){this._hasUpdateAnimation&&this.updateAnimation.call(this)},c.Rope.prototype.reset=function(a,b){return c.Component.Reset.prototype.reset.call(this,a,b),this},Object.defineProperty(c.Rope.prototype,"updateAnimation",{get:function(){return this._updateAnimation},set:function(a){a&&"function"==typeof a?(this._hasUpdateAnimation=!0,this._updateAnimation=a):(this._hasUpdateAnimation=!1,this._updateAnimation=null)}}),Object.defineProperty(c.Rope.prototype,"segments",{get:function(){for(var a,b,d,e,f,g,h,i,j=[],k=0;k=1)&&(l.touch=!0),(window.navigator.msPointerEnabled||window.navigator.pointerEnabled)&&(l.mspointer=!0),l.cocoonJS||("onwheel"in window||l.ie&&"WheelEvent"in window?l.wheelEvent="wheel":"onmousewheel"in window?l.wheelEvent="mousewheel":l.firefox&&"MouseScrollEvent"in window&&(l.wheelEvent="DOMMouseScroll"))}function d(){for(var a=["requestFullscreen","requestFullScreen","webkitRequestFullscreen","webkitRequestFullScreen","msRequestFullscreen","msRequestFullScreen","mozRequestFullScreen","mozRequestFullscreen"],b=document.createElement("div"),c=0;c=9&&/Mac OS X (\d+)_(\d+)/.test(navigator.userAgent)){var c=parseInt(RegExp.$1,10),d=parseInt(RegExp.$2,10);(10===c&&d>=11||c>10)&&(l.dolby=!0)}}catch(e){}}function h(){l.pixelRatio=window.devicePixelRatio||1,l.iPhone=-1!=navigator.userAgent.toLowerCase().indexOf("iphone"),l.iPhone4=2==l.pixelRatio&&l.iPhone,l.iPad=-1!=navigator.userAgent.toLowerCase().indexOf("ipad"),"undefined"!=typeof Int8Array?l.typedArray=!0:l.typedArray=!1,"undefined"!=typeof ArrayBuffer&&"undefined"!=typeof Uint8Array&&"undefined"!=typeof Uint32Array&&(l.littleEndian=i(),l.LITTLE_ENDIAN=l.littleEndian),l.support32bit="undefined"!=typeof ArrayBuffer&&"undefined"!=typeof Uint8ClampedArray&&"undefined"!=typeof Int32Array&&null!==l.littleEndian&&j(),navigator.vibrate=navigator.vibrate||navigator.webkitVibrate||navigator.mozVibrate||navigator.msVibrate,navigator.vibrate&&(l.vibration=!0)}function i(){var a=new ArrayBuffer(4),b=new Uint8Array(a),c=new Uint32Array(a);return b[0]=161,b[1]=178,b[2]=195,b[3]=212,3569595041==c[0]?!0:2712847316==c[0]?!1:null}function j(){if(void 0===Uint8ClampedArray)return!1;var a=PIXI.CanvasPool.create(this,1,1),b=a.getContext("2d");if(!b)return!1;var c=b.createImageData(1,1);return PIXI.CanvasPool.remove(this),c.data instanceof Uint8ClampedArray}function k(){var a,b=document.createElement("p"),c={webkitTransform:"-webkit-transform",OTransform:"-o-transform",msTransform:"-ms-transform",MozTransform:"-moz-transform",transform:"transform"};document.body.insertBefore(b,null);for(var d in c)void 0!==b.style[d]&&(b.style[d]="translate3d(1px,1px,1px)",a=window.getComputedStyle(b).getPropertyValue(c[d]));document.body.removeChild(b),l.css3D=void 0!==a&&a.length>0&&"none"!==a}var l=this;a(),e(),g(),f(),k(),h(),b(),d(),c()},c.Device.canPlayAudio=function(a){return"mp3"===a&&this.mp3?!0:"ogg"===a&&(this.ogg||this.opus)?!0:"m4a"===a&&this.m4a?!0:"opus"===a&&this.opus?!0:"wav"===a&&this.wav?!0:"webm"===a&&this.webm?!0:"mp4"===a&&this.dolby?!0:!1},c.Device.canPlayVideo=function(a){return"webm"===a&&(this.webmVideo||this.vp9Video)?!0:"mp4"===a&&(this.mp4Video||this.h264Video)?!0:"ogg"!==a&&"ogv"!==a||!this.oggVideo?"mpeg"===a&&this.hlsVideo?!0:!1:!0},c.Device.isConsoleOpen=function(){return window.console&&window.console.firebug?!0:window.console&&(console.profile(),console.profileEnd(),console.clear&&console.clear(),console.profiles)?console.profiles.length>0:!1},c.Device.isAndroidStockBrowser=function(){var a=window.navigator.userAgent.match(/Android.*AppleWebKit\/([\d.]+)/);return a&&a[1]<537},c.Canvas={create:function(a,b,c,d,e){if(b=b||256,c=c||256,void 0===e)var f=PIXI.CanvasPool.create(a,b,c);else var f=document.createElement("canvas");return"string"==typeof d&&""!==d&&(f.id=d),f.width=b,f.height=c,f.style.display="block",f},setBackgroundColor:function(a,b){return b=b||"rgb(0,0,0)",a.style.backgroundColor=b,a},setTouchAction:function(a,b){return b=b||"none",a.style.msTouchAction=b,a.style["ms-touch-action"]=b,a.style["touch-action"]=b,a},setUserSelect:function(a,b){return b=b||"none",a.style["-webkit-touch-callout"]=b,a.style["-webkit-user-select"]=b,a.style["-khtml-user-select"]=b,a.style["-moz-user-select"]=b,a.style["-ms-user-select"]=b,a.style["user-select"]=b,a.style["-webkit-tap-highlight-color"]="rgba(0, 0, 0, 0)",a},addToDOM:function(a,b,c){var d;return void 0===c&&(c=!0),b&&("string"==typeof b?d=document.getElementById(b):"object"==typeof b&&1===b.nodeType&&(d=b)),d||(d=document.body),c&&d.style&&(d.style.overflow="hidden"),d.appendChild(a),a},removeFromDOM:function(a){a.parentNode&&a.parentNode.removeChild(a)},setTransform:function(a,b,c,d,e,f,g){return a.setTransform(d,f,g,e,b,c),a},setSmoothingEnabled:function(a,b){var d=c.Canvas.getSmoothingPrefix(a);return d&&(a[d]=b),a},getSmoothingPrefix:function(a){var b=["i","webkitI","msI","mozI","oI"];for(var c in b){var d=b[c]+"mageSmoothingEnabled";if(d in a)return d}return null},getSmoothingEnabled:function(a){var b=c.Canvas.getSmoothingPrefix(a);return b?a[b]:void 0},setImageRenderingCrisp:function(a){for(var b=["optimizeSpeed","crisp-edges","-moz-crisp-edges","-webkit-optimize-contrast","optimize-contrast","pixelated"],c=0;ca},fuzzyGreaterThan:function(a,b,c){return void 0===c&&(c=1e-4),a>b-c},fuzzyCeil:function(a,b){return void 0===b&&(b=1e-4),Math.ceil(a-b)},fuzzyFloor:function(a,b){return void 0===b&&(b=1e-4),Math.floor(a+b)},average:function(){for(var a=0,b=arguments.length,c=0;b>c;c++)a+=+arguments[c];return a/b},shear:function(a){return a%1},snapTo:function(a,b,c){return void 0===c&&(c=0),0===b?a:(a-=c,a=b*Math.round(a/b),c+a)},snapToFloor:function(a,b,c){return void 0===c&&(c=0),0===b?a:(a-=c,a=b*Math.floor(a/b),c+a)},snapToCeil:function(a,b,c){return void 0===c&&(c=0),0===b?a:(a-=c,a=b*Math.ceil(a/b),c+a)},roundTo:function(a,b,c){void 0===b&&(b=0),void 0===c&&(c=10);var d=Math.pow(c,-b);return Math.round(a*d)/d},floorTo:function(a,b,c){void 0===b&&(b=0),void 0===c&&(c=10);var d=Math.pow(c,-b);return Math.floor(a*d)/d},ceilTo:function(a,b,c){void 0===b&&(b=0),void 0===c&&(c=10);var d=Math.pow(c,-b);return Math.ceil(a*d)/d},angleBetween:function(a,b,c,d){return Math.atan2(d-b,c-a)},angleBetweenY:function(a,b,c,d){return Math.atan2(c-a,d-b)},angleBetweenPoints:function(a,b){return Math.atan2(b.y-a.y,b.x-a.x)},angleBetweenPointsY:function(a,b){return Math.atan2(b.x-a.x,b.y-a.y)},reverseAngle:function(a){return this.normalizeAngle(a+Math.PI,!0)},normalizeAngle:function(a){return a%=2*Math.PI,a>=0?a:a+2*Math.PI},maxAdd:function(a,b,c){return Math.min(a+b,c)},minSub:function(a,b,c){return Math.max(a-b,c)},wrap:function(a,b,c){var d=c-b;if(0>=d)return 0;var e=(a-b)%d;return 0>e&&(e+=d),e+b},wrapValue:function(a,b,c){var d;return a=Math.abs(a),b=Math.abs(b),c=Math.abs(c),d=(a+b)%c},isOdd:function(a){return!!(1&a)},isEven:function(a){return!(1&a)},min:function(){if(1===arguments.length&&"object"==typeof arguments[0])var a=arguments[0];else var a=arguments;for(var b=1,c=0,d=a.length;d>b;b++)a[b]b;b++)a[b]>a[c]&&(c=b);return a[c]},minProperty:function(a){if(2===arguments.length&&"object"==typeof arguments[1])var b=arguments[1];else var b=arguments.slice(1);for(var c=1,d=0,e=b.length;e>c;c++)b[c][a]c;c++)b[c][a]>b[d][a]&&(d=c);return b[d][a]},wrapAngle:function(a,b){return b?this.wrap(a,-Math.PI,Math.PI):this.wrap(a,-180,180)},linearInterpolation:function(a,b){var c=a.length-1,d=c*b,e=Math.floor(d);return 0>b?this.linear(a[0],a[1],d):b>1?this.linear(a[c],a[c-1],c-d):this.linear(a[e],a[e+1>c?c:e+1],d-e)},bezierInterpolation:function(a,b){for(var c=0,d=a.length-1,e=0;d>=e;e++)c+=Math.pow(1-b,d-e)*Math.pow(b,e)*a[e]*this.bernstein(d,e);return c},catmullRomInterpolation:function(a,b){var c=a.length-1,d=c*b,e=Math.floor(d);return a[0]===a[c]?(0>b&&(e=Math.floor(d=c*(1+b))),this.catmullRom(a[(e-1+c)%c],a[e],a[(e+1)%c],a[(e+2)%c],d-e)):0>b?a[0]-(this.catmullRom(a[0],a[0],a[1],a[1],-d)-a[0]):b>1?a[c]-(this.catmullRom(a[c],a[c],a[c-1],a[c-1],d-c)-a[c]):this.catmullRom(a[e?e-1:0],a[e],a[e+1>c?c:e+1],a[e+2>c?c:e+2],d-e)},linear:function(a,b,c){return(b-a)*c+a},bernstein:function(a,b){return this.factorial(a)/this.factorial(b)/this.factorial(a-b)},factorial:function(a){if(0===a)return 1;for(var b=a;--a;)b*=a;return b},catmullRom:function(a,b,c,d,e){var f=.5*(c-a),g=.5*(d-b),h=e*e,i=e*h;return(2*b-2*c+f+g)*i+(-3*b+3*c-2*f-g)*h+f*e+b},difference:function(a,b){return Math.abs(a-b)},roundAwayFromZero:function(a){return a>0?Math.ceil(a):Math.floor(a)},sinCosGenerator:function(a,b,c,d){void 0===b&&(b=1),void 0===c&&(c=1),void 0===d&&(d=1);for(var e=b,f=c,g=d*Math.PI/a,h=[],i=[],j=0;a>j;j++)f-=e*g,e+=f*g,h[j]=f,i[j]=e;return{sin:i,cos:h,length:a}},distance:function(a,b,c,d){var e=a-c,f=b-d;return Math.sqrt(e*e+f*f)},distanceSq:function(a,b,c,d){var e=a-c,f=b-d;return e*e+f*f},distancePow:function(a,b,c,d,e){return void 0===e&&(e=2),Math.sqrt(Math.pow(c-a,e)+Math.pow(d-b,e))},clamp:function(a,b,c){return b>a?b:a>c?c:a},clampBottom:function(a,b){return b>a?b:a},within:function(a,b,c){return Math.abs(a-b)<=c},mapLinear:function(a,b,c,d,e){return d+(a-b)*(e-d)/(c-b)},smoothstep:function(a,b,c){return a=Math.max(0,Math.min(1,(a-b)/(c-b))),a*a*(3-2*a)},smootherstep:function(a,b,c){return a=Math.max(0,Math.min(1,(a-b)/(c-b))),a*a*a*(a*(6*a-15)+10)},sign:function(a){return 0>a?-1:a>0?1:0},percent:function(a,b,c){return void 0===c&&(c=0),a>b||c>b?1:c>a||c>a?0:(a-c)/b}};var k=Math.PI/180,l=180/Math.PI;return c.Math.degToRad=function(a){return a*k},c.Math.radToDeg=function(a){return a*l},c.RandomDataGenerator=function(a){void 0===a&&(a=[]),this.c=1,this.s0=0,this.s1=0,this.s2=0,"string"==typeof a?this.state(a):this.sow(a)},c.RandomDataGenerator.prototype={rnd:function(){var a=2091639*this.s0+2.3283064365386963e-10*this.c;return this.c=0|a,this.s0=this.s1,this.s1=this.s2,this.s2=a-this.c,this.s2},sow:function(a){if(this.s0=this.hash(" "),this.s1=this.hash(this.s0),this.s2=this.hash(this.s1),this.c=1,a)for(var b=0;b>>0,b-=d,b*=d,d=b>>>0,b-=d,d+=4294967296*b;return 2.3283064365386963e-10*(d>>>0)},integer:function(){return 4294967296*this.rnd.apply(this)},frac:function(){return this.rnd.apply(this)+1.1102230246251565e-16*(2097152*this.rnd.apply(this)|0)},real:function(){return this.integer()+this.frac()},integerInRange:function(a,b){return Math.floor(this.realInRange(0,b-a+1)+a)},between:function(a,b){return this.integerInRange(a,b)},realInRange:function(a,b){return this.frac()*(b-a)+a},normal:function(){return 1-2*this.frac()},uuid:function(){var a="",b="";for(b=a="";a++<36;b+=~a%5|3*a&4?(15^a?8^this.frac()*(20^a?16:4):4).toString(16):"-");return b},pick:function(a){return a[this.integerInRange(0,a.length-1)]},sign:function(){return this.pick([-1,1])},weightedPick:function(a){return a[~~(Math.pow(this.frac(),2)*(a.length-1)+.5)]},timestamp:function(a,b){return this.realInRange(a||9466848e5,b||1577862e6)},angle:function(){return this.integerInRange(-180,180)},state:function(a){return"string"==typeof a&&a.match(/^!rnd/)&&(a=a.split(","),this.c=parseFloat(a[1]),this.s0=parseFloat(a[2]),this.s1=parseFloat(a[3]),this.s2=parseFloat(a[4])),["!rnd",this.c,this.s0,this.s1,this.s2].join(",")}},c.RandomDataGenerator.prototype.constructor=c.RandomDataGenerator,c.QuadTree=function(a,b,c,d,e,f,g){this.maxObjects=10,this.maxLevels=4,this.level=0,this.bounds={},this.objects=[],this.nodes=[],this._empty=[],this.reset(a,b,c,d,e,f,g)},c.QuadTree.prototype={reset:function(a,b,c,d,e,f,g){this.maxObjects=e||10,this.maxLevels=f||4,this.level=g||0,this.bounds={x:Math.round(a),y:Math.round(b),width:c,height:d,subWidth:Math.floor(c/2),subHeight:Math.floor(d/2),right:Math.round(a)+Math.floor(c/2),bottom:Math.round(b)+Math.floor(d/2)},this.objects.length=0,this.nodes.length=0},populate:function(a){a.forEach(this.populateHandler,this,!0)},populateHandler:function(a){a.body&&a.exists&&this.insert(a.body)},split:function(){this.nodes[0]=new c.QuadTree(this.bounds.right,this.bounds.y,this.bounds.subWidth,this.bounds.subHeight,this.maxObjects,this.maxLevels,this.level+1),this.nodes[1]=new c.QuadTree(this.bounds.x,this.bounds.y,this.bounds.subWidth,this.bounds.subHeight,this.maxObjects,this.maxLevels,this.level+1),this.nodes[2]=new c.QuadTree(this.bounds.x,this.bounds.bottom,this.bounds.subWidth,this.bounds.subHeight,this.maxObjects,this.maxLevels,this.level+1),this.nodes[3]=new c.QuadTree(this.bounds.right,this.bounds.bottom,this.bounds.subWidth,this.bounds.subHeight,this.maxObjects,this.maxLevels,this.level+1)},insert:function(a){var b,c=0;if(null!=this.nodes[0]&&(b=this.getIndex(a),-1!==b))return void this.nodes[b].insert(a);if(this.objects.push(a),this.objects.length>this.maxObjects&&this.levelthis.bounds.bottom&&(b=2):a.x>this.bounds.right&&(a.ythis.bounds.bottom&&(b=3)),b},retrieve:function(a){if(a instanceof c.Rectangle)var b=this.objects,d=this.getIndex(a);else{if(!a.body)return this._empty;var b=this.objects,d=this.getIndex(a.body)}return this.nodes[0]&&(-1!==d?b=b.concat(this.nodes[d].retrieve(a)):(b=b.concat(this.nodes[0].retrieve(a)),b=b.concat(this.nodes[1].retrieve(a)),b=b.concat(this.nodes[2].retrieve(a)),b=b.concat(this.nodes[3].retrieve(a)))),b},clear:function(){this.objects.length=0;for(var a=this.nodes.length;a--;)this.nodes[a].clear(),this.nodes.splice(a,1);this.nodes.length=0}},c.QuadTree.prototype.constructor=c.QuadTree,c.Net=function(a){this.game=a},c.Net.prototype={getHostName:function(){return window.location&&window.location.hostname?window.location.hostname:null},checkDomainName:function(a){return-1!==window.location.hostname.indexOf(a)},updateQueryString:function(a,b,c,d){void 0===c&&(c=!1),(void 0===d||""===d)&&(d=window.location.href);var e="",f=new RegExp("([?|&])"+a+"=.*?(&|#|$)(.*)","gi");if(f.test(d))e="undefined"!=typeof b&&null!==b?d.replace(f,"$1"+a+"="+b+"$2$3"):d.replace(f,"$1$3").replace(/(&|\?)$/,"");else if("undefined"!=typeof b&&null!==b){var g=-1!==d.indexOf("?")?"&":"?",h=d.split("#");d=h[0]+g+a+"="+b,h[1]&&(d+="#"+h[1]),e=d}else e=d;return c?void(window.location.href=e):e},getQueryString:function(a){void 0===a&&(a="");var b={},c=location.search.substring(1).split("&");for(var d in c){var e=c[d].split("=");if(e.length>1){if(a&&a==this.decodeURI(e[0]))return this.decodeURI(e[1]);b[this.decodeURI(e[0])]=this.decodeURI(e[1])}}return b},decodeURI:function(a){return decodeURIComponent(a.replace(/\+/g," "))}},c.Net.prototype.constructor=c.Net,c.TweenManager=function(a){this.game=a,this.frameBased=!1,this._tweens=[],this._add=[],this.easeMap={Power0:c.Easing.Power0,Power1:c.Easing.Power1,Power2:c.Easing.Power2,Power3:c.Easing.Power3,Power4:c.Easing.Power4,Linear:c.Easing.Linear.None,Quad:c.Easing.Quadratic.Out,Cubic:c.Easing.Cubic.Out,Quart:c.Easing.Quartic.Out,Quint:c.Easing.Quintic.Out,Sine:c.Easing.Sinusoidal.Out,Expo:c.Easing.Exponential.Out,Circ:c.Easing.Circular.Out,Elastic:c.Easing.Elastic.Out,Back:c.Easing.Back.Out,Bounce:c.Easing.Bounce.Out,"Quad.easeIn":c.Easing.Quadratic.In,"Cubic.easeIn":c.Easing.Cubic.In,"Quart.easeIn":c.Easing.Quartic.In,"Quint.easeIn":c.Easing.Quintic.In,"Sine.easeIn":c.Easing.Sinusoidal.In,"Expo.easeIn":c.Easing.Exponential.In,"Circ.easeIn":c.Easing.Circular.In,"Elastic.easeIn":c.Easing.Elastic.In,"Back.easeIn":c.Easing.Back.In,"Bounce.easeIn":c.Easing.Bounce.In,"Quad.easeOut":c.Easing.Quadratic.Out,"Cubic.easeOut":c.Easing.Cubic.Out,"Quart.easeOut":c.Easing.Quartic.Out,"Quint.easeOut":c.Easing.Quintic.Out,"Sine.easeOut":c.Easing.Sinusoidal.Out,"Expo.easeOut":c.Easing.Exponential.Out,"Circ.easeOut":c.Easing.Circular.Out,"Elastic.easeOut":c.Easing.Elastic.Out,"Back.easeOut":c.Easing.Back.Out,"Bounce.easeOut":c.Easing.Bounce.Out,"Quad.easeInOut":c.Easing.Quadratic.InOut,"Cubic.easeInOut":c.Easing.Cubic.InOut,"Quart.easeInOut":c.Easing.Quartic.InOut,"Quint.easeInOut":c.Easing.Quintic.InOut,"Sine.easeInOut":c.Easing.Sinusoidal.InOut,"Expo.easeInOut":c.Easing.Exponential.InOut,"Circ.easeInOut":c.Easing.Circular.InOut,"Elastic.easeInOut":c.Easing.Elastic.InOut,"Back.easeInOut":c.Easing.Back.InOut,"Bounce.easeInOut":c.Easing.Bounce.InOut},this.game.onPause.add(this._pauseAll,this),this.game.onResume.add(this._resumeAll,this)},c.TweenManager.prototype={getAll:function(){return this._tweens},removeAll:function(){for(var a=0;ad;d++)this.removeFrom(a[d]);else if(a.type===c.GROUP&&b)for(var d=0,e=a.children.length;e>d;d++)this.removeFrom(a.children[d]);else{for(d=0,e=this._tweens.length;e>d;d++)a===this._tweens[d].target&&this.remove(this._tweens[d]);for(d=0,e=this._add.length;e>d;d++)a===this._add[d].target&&this.remove(this._add[d])}},add:function(a){a._manager=this,this._add.push(a)},create:function(a){return new c.Tween(a,this.game,this)},remove:function(a){var b=this._tweens.indexOf(a);-1!==b?this._tweens[b].pendingDelete=!0:(b=this._add.indexOf(a),-1!==b&&(this._add[b].pendingDelete=!0))},update:function(){var a=this._add.length,b=this._tweens.length;if(0===b&&0===a)return!1;for(var c=0;b>c;)this._tweens[c].update(this.game.time.time)?c++:(this._tweens.splice(c,1),b--);return a>0&&(this._tweens=this._tweens.concat(this._add),this._add.length=0),!0},isTweening:function(a){return this._tweens.some(function(b){return b.target===a})},_pauseAll:function(){for(var a=this._tweens.length-1;a>=0;a--)this._tweens[a]._pause()},_resumeAll:function(){for(var a=this._tweens.length-1;a>=0;a--)this._tweens[a]._resume()},pauseAll:function(){for(var a=this._tweens.length-1;a>=0;a--)this._tweens[a].pause()},resumeAll:function(){for(var a=this._tweens.length-1;a>=0;a--)this._tweens[a].resume(!0)}},c.TweenManager.prototype.constructor=c.TweenManager,c.Tween=function(a,b,d){this.game=b,this.target=a,this.manager=d,this.timeline=[],this.reverse=!1,this.timeScale=1,this.repeatCounter=0,this.pendingDelete=!1,this.onStart=new c.Signal,this.onLoop=new c.Signal,this.onRepeat=new c.Signal,this.onChildComplete=new c.Signal,this.onComplete=new c.Signal,this.isRunning=!1,this.current=0,this.properties={},this.chainedTween=null,this.isPaused=!1,this.frameBased=d.frameBased,this._onUpdateCallback=null,this._onUpdateCallbackContext=null,this._pausedTime=0,this._codePaused=!1,this._hasStarted=!1},c.Tween.prototype={to:function(a,b,d,e,f,g,h){return(void 0===b||0>=b)&&(b=1e3), -(void 0===d||null===d)&&(d=c.Easing.Default),void 0===e&&(e=!1),void 0===f&&(f=0),void 0===g&&(g=0),void 0===h&&(h=!1),"string"==typeof d&&this.manager.easeMap[d]&&(d=this.manager.easeMap[d]),this.isRunning?(console.warn("Phaser.Tween.to cannot be called after Tween.start"),this):(this.timeline.push(new c.TweenData(this).to(a,b,d,f,g,h)),e&&this.start(),this)},from:function(a,b,d,e,f,g,h){return void 0===b&&(b=1e3),(void 0===d||null===d)&&(d=c.Easing.Default),void 0===e&&(e=!1),void 0===f&&(f=0),void 0===g&&(g=0),void 0===h&&(h=!1),"string"==typeof d&&this.manager.easeMap[d]&&(d=this.manager.easeMap[d]),this.isRunning?(console.warn("Phaser.Tween.from cannot be called after Tween.start"),this):(this.timeline.push(new c.TweenData(this).from(a,b,d,f,g,h)),e&&this.start(),this)},start:function(a){if(void 0===a&&(a=0),null===this.game||null===this.target||0===this.timeline.length||this.isRunning)return this;for(var b=0;ba||a>this.timeline.length-1)&&(a=0),this.current=a,this.timeline[this.current].start(),this},stop:function(a){return void 0===a&&(a=!1),this.isRunning=!1,this._onUpdateCallback=null,this._onUpdateCallbackContext=null,a&&(this.onComplete.dispatch(this.target,this),this._hasStarted=!1,this.chainedTween&&this.chainedTween.start()),this.manager.remove(this),this},updateTweenData:function(a,b,c){if(0===this.timeline.length)return this;if(void 0===c&&(c=0),-1===c)for(var d=0;d0?arguments[a-1].chainedTween=arguments[a]:this.chainedTween=arguments[a];return this},loop:function(a){return void 0===a&&(a=!0),this.repeatCounter=a?-1:0,this},onUpdateCallback:function(a,b){return this._onUpdateCallback=a,this._onUpdateCallbackContext=b,this},pause:function(){this.isPaused=!0,this._codePaused=!0,this._pausedTime=this.game.time.time},_pause:function(){this._codePaused||(this.isPaused=!0,this._pausedTime=this.game.time.time)},resume:function(){if(this.isPaused){this.isPaused=!1,this._codePaused=!1;for(var a=0;a0?(this.repeatCounter--,this.timeline[this.current].start(),this.onRepeat.dispatch(this.target,this),!0):(this.isRunning=!1,this.onComplete.dispatch(this.target,this),this._hasStarted=!1,this.chainedTween&&this.chainedTween.start(),!1):(this.onChildComplete.dispatch(this.target,this),this.timeline[this.current].start(),!0)}},generateData:function(a,b){if(null===this.game||null===this.target)return null;void 0===a&&(a=60),void 0===b&&(b=[]);for(var c=0;c0?this.isRunning=!1:this.isRunning=!0,this.isFrom)for(var a in this.vStartCache)this.vStart[a]=this.vEndCache[a],this.vEnd[a]=this.vStartCache[a],this.parent.target[a]=this.vStart[a];return this.value=0,this.yoyoCounter=0,this.repeatCounter=this.repeatTotal,this},loadValues:function(){for(var a in this.parent.properties){if(this.vStart[a]=this.parent.properties[a],Array.isArray(this.vEnd[a])){if(0===this.vEnd[a].length)continue;0===this.percent&&(this.vEnd[a]=[this.vStart[a]].concat(this.vEnd[a]))}"undefined"!=typeof this.vEnd[a]?("string"==typeof this.vEnd[a]&&(this.vEnd[a]=this.vStart[a]+parseFloat(this.vEnd[a],10)),this.parent.properties[a]=this.vEnd[a]):this.vEnd[a]=this.vStart[a],this.vStartCache[a]=this.vStart[a],this.vEndCache[a]=this.vEnd[a]}return this},update:function(a){if(this.isRunning){if(a=this.startTime))return c.TweenData.PENDING;this.isRunning=!0}var b=this.parent.frameBased?this.game.time.physicsElapsedMS:this.game.time.elapsedMS;this.parent.reverse?(this.dt-=b*this.parent.timeScale,this.dt=Math.max(this.dt,0)):(this.dt+=b*this.parent.timeScale,this.dt=Math.min(this.dt,this.duration)),this.percent=this.dt/this.duration,this.value=this.easingFunction(this.percent);for(var d in this.vEnd){var e=this.vStart[d],f=this.vEnd[d];Array.isArray(f)?this.parent.target[d]=this.interpolationFunction.call(this.interpolationContext,f,this.value):this.parent.target[d]=e+(f-e)*this.value}return!this.parent.reverse&&1===this.percent||this.parent.reverse&&0===this.percent?this.repeat():c.TweenData.RUNNING},generateData:function(a){this.parent.reverse?this.dt=this.duration:this.dt=0;var b=[],c=!1,d=1/a*1e3;do{this.parent.reverse?(this.dt-=d,this.dt=Math.max(this.dt,0)):(this.dt+=d,this.dt=Math.min(this.dt,this.duration)),this.percent=this.dt/this.duration,this.value=this.easingFunction(this.percent);var e={};for(var f in this.vEnd){var g=this.vStart[f],h=this.vEnd[f];Array.isArray(h)?e[f]=this.interpolationFunction(h,this.value):e[f]=g+(h-g)*this.value}b.push(e),(!this.parent.reverse&&1===this.percent||this.parent.reverse&&0===this.percent)&&(c=!0)}while(!c);if(this.yoyo){var i=b.slice();i.reverse(),b=b.concat(i)}return b},repeat:function(){if(this.yoyo){if(this.inReverse&&0===this.repeatCounter){for(var a in this.vStartCache)this.vStart[a]=this.vStartCache[a],this.vEnd[a]=this.vEndCache[a];return this.inReverse=!1,c.TweenData.COMPLETE}this.inReverse=!this.inReverse}else if(0===this.repeatCounter)return c.TweenData.COMPLETE;if(this.inReverse)for(var a in this.vStartCache)this.vStart[a]=this.vEndCache[a],this.vEnd[a]=this.vStartCache[a];else{for(var a in this.vStartCache)this.vStart[a]=this.vStartCache[a],this.vEnd[a]=this.vEndCache[a];this.repeatCounter>0&&this.repeatCounter--}return this.startTime=this.game.time.time,this.yoyo&&this.inReverse?this.startTime+=this.yoyoDelay:this.inReverse||(this.startTime+=this.repeatDelay),this.parent.reverse?this.dt=this.duration:this.dt=0,c.TweenData.LOOPED}},c.TweenData.prototype.constructor=c.TweenData,c.Easing={Linear:{None:function(a){return a}},Quadratic:{In:function(a){return a*a},Out:function(a){return a*(2-a)},InOut:function(a){return(a*=2)<1?.5*a*a:-.5*(--a*(a-2)-1)}},Cubic:{In:function(a){return a*a*a},Out:function(a){return--a*a*a+1},InOut:function(a){return(a*=2)<1?.5*a*a*a:.5*((a-=2)*a*a+2)}},Quartic:{In:function(a){return a*a*a*a},Out:function(a){return 1- --a*a*a*a},InOut:function(a){return(a*=2)<1?.5*a*a*a*a:-.5*((a-=2)*a*a*a-2)}},Quintic:{In:function(a){return a*a*a*a*a},Out:function(a){return--a*a*a*a*a+1},InOut:function(a){return(a*=2)<1?.5*a*a*a*a*a:.5*((a-=2)*a*a*a*a+2)}},Sinusoidal:{In:function(a){return 0===a?0:1===a?1:1-Math.cos(a*Math.PI/2)},Out:function(a){return 0===a?0:1===a?1:Math.sin(a*Math.PI/2)},InOut:function(a){return 0===a?0:1===a?1:.5*(1-Math.cos(Math.PI*a))}},Exponential:{In:function(a){return 0===a?0:Math.pow(1024,a-1)},Out:function(a){return 1===a?1:1-Math.pow(2,-10*a)},InOut:function(a){return 0===a?0:1===a?1:(a*=2)<1?.5*Math.pow(1024,a-1):.5*(-Math.pow(2,-10*(a-1))+2)}},Circular:{In:function(a){return 1-Math.sqrt(1-a*a)},Out:function(a){return Math.sqrt(1- --a*a)},InOut:function(a){return(a*=2)<1?-.5*(Math.sqrt(1-a*a)-1):.5*(Math.sqrt(1-(a-=2)*a)+1)}},Elastic:{In:function(a){var b,c=.1,d=.4;return 0===a?0:1===a?1:(!c||1>c?(c=1,b=d/4):b=d*Math.asin(1/c)/(2*Math.PI),-(c*Math.pow(2,10*(a-=1))*Math.sin((a-b)*(2*Math.PI)/d)))},Out:function(a){var b,c=.1,d=.4;return 0===a?0:1===a?1:(!c||1>c?(c=1,b=d/4):b=d*Math.asin(1/c)/(2*Math.PI),c*Math.pow(2,-10*a)*Math.sin((a-b)*(2*Math.PI)/d)+1)},InOut:function(a){var b,c=.1,d=.4;return 0===a?0:1===a?1:(!c||1>c?(c=1,b=d/4):b=d*Math.asin(1/c)/(2*Math.PI),(a*=2)<1?-.5*(c*Math.pow(2,10*(a-=1))*Math.sin((a-b)*(2*Math.PI)/d)):c*Math.pow(2,-10*(a-=1))*Math.sin((a-b)*(2*Math.PI)/d)*.5+1)}},Back:{In:function(a){var b=1.70158;return a*a*((b+1)*a-b)},Out:function(a){var b=1.70158;return--a*a*((b+1)*a+b)+1},InOut:function(a){var b=2.5949095;return(a*=2)<1?.5*(a*a*((b+1)*a-b)):.5*((a-=2)*a*((b+1)*a+b)+2)}},Bounce:{In:function(a){return 1-c.Easing.Bounce.Out(1-a)},Out:function(a){return 1/2.75>a?7.5625*a*a:2/2.75>a?7.5625*(a-=1.5/2.75)*a+.75:2.5/2.75>a?7.5625*(a-=2.25/2.75)*a+.9375:7.5625*(a-=2.625/2.75)*a+.984375},InOut:function(a){return.5>a?.5*c.Easing.Bounce.In(2*a):.5*c.Easing.Bounce.Out(2*a-1)+.5}}},c.Easing.Default=c.Easing.Linear.None,c.Easing.Power0=c.Easing.Linear.None,c.Easing.Power1=c.Easing.Quadratic.Out,c.Easing.Power2=c.Easing.Cubic.Out,c.Easing.Power3=c.Easing.Quartic.Out,c.Easing.Power4=c.Easing.Quintic.Out,c.Time=function(a){this.game=a,this.time=0,this.prevTime=0,this.now=0,this.elapsed=0,this.elapsedMS=0,this.physicsElapsed=1/60,this.physicsElapsedMS=1/60*1e3,this.desiredFpsMult=1/60,this._desiredFps=60,this.suggestedFps=this.desiredFps,this.slowMotion=1,this.advancedTiming=!1,this.frames=0,this.fps=0,this.fpsMin=1e3,this.fpsMax=0,this.msMin=1e3,this.msMax=0,this.pauseDuration=0,this.timeToCall=0,this.timeExpected=0,this.events=new c.Timer(this.game,!1),this._frameCount=0,this._elapsedAccumulator=0,this._started=0,this._timeLastSecond=0,this._pauseStarted=0,this._justResumed=!1,this._timers=[]},c.Time.prototype={boot:function(){this._started=Date.now(),this.time=Date.now(),this.events.start(),this.timeExpected=this.time},add:function(a){return this._timers.push(a),a},create:function(a){void 0===a&&(a=!0);var b=new c.Timer(this.game,a);return this._timers.push(b),b},removeAll:function(){for(var a=0;aa;)this._timers[a].update(this.time)?a++:(this._timers.splice(a,1),b--)},updateAdvancedTiming:function(){this._frameCount++,this._elapsedAccumulator+=this.elapsed,this._frameCount>=2*this._desiredFps&&(this.suggestedFps=5*Math.floor(200/(this._elapsedAccumulator/this._frameCount)),this._frameCount=0,this._elapsedAccumulator=0),this.msMin=Math.min(this.msMin,this.elapsed),this.msMax=Math.max(this.msMax,this.elapsed),this.frames++,this.now>this._timeLastSecond+1e3&&(this.fps=Math.round(1e3*this.frames/(this.now-this._timeLastSecond)),this.fpsMin=Math.min(this.fpsMin,this.fps),this.fpsMax=Math.max(this.fpsMax,this.fps),this._timeLastSecond=this.now,this.frames=0)},gamePaused:function(){this._pauseStarted=Date.now(),this.events.pause();for(var a=this._timers.length;a--;)this._timers[a]._pause()},gameResumed:function(){this.time=Date.now(),this.pauseDuration=this.time-this._pauseStarted,this.events.resume();for(var a=this._timers.length;a--;)this._timers[a]._resume()},totalElapsedSeconds:function(){return.001*(this.time-this._started)},elapsedSince:function(a){return this.time-a},elapsedSecondsSince:function(a){return.001*(this.time-a)},reset:function(){this._started=this.time,this.removeAll()}},Object.defineProperty(c.Time.prototype,"desiredFps",{get:function(){return this._desiredFps},set:function(a){this._desiredFps=a,this.physicsElapsed=1/a,this.physicsElapsedMS=1e3*this.physicsElapsed,this.desiredFpsMult=1/a}}),c.Time.prototype.constructor=c.Time,c.Timer=function(a,b){void 0===b&&(b=!0),this.game=a,this.running=!1,this.autoDestroy=b,this.expired=!1,this.elapsed=0,this.events=[],this.onComplete=new c.Signal,this.nextTick=0,this.timeCap=1e3,this.paused=!1,this._codePaused=!1,this._started=0,this._pauseStarted=0,this._pauseTotal=0,this._now=Date.now(),this._len=0,this._marked=0,this._i=0,this._diff=0,this._newTick=0},c.Timer.MINUTE=6e4,c.Timer.SECOND=1e3,c.Timer.HALF=500,c.Timer.QUARTER=250,c.Timer.prototype={create:function(a,b,d,e,f,g){a=Math.round(a);var h=a;h+=0===this._now?this.game.time.time:this._now;var i=new c.TimerEvent(this,a,h,d,b,e,f,g);return this.events.push(i),this.order(),this.expired=!1,i},add:function(a,b,c){return this.create(a,!1,0,b,c,Array.prototype.slice.call(arguments,3))},repeat:function(a,b,c,d){return this.create(a,!1,b,c,d,Array.prototype.slice.call(arguments,4))},loop:function(a,b,c){return this.create(a,!0,0,b,c,Array.prototype.slice.call(arguments,3))},start:function(a){if(!this.running){this._started=this.game.time.time+(a||0),this.running=!0;for(var b=0;b0&&(this.events.sort(this.sortHandler),this.nextTick=this.events[0].tick)},sortHandler:function(a,b){return a.tickb.tick?1:0},clearPendingEvents:function(){for(this._i=this.events.length;this._i--;)this.events[this._i].pendingDelete&&this.events.splice(this._i,1);this._len=this.events.length,this._i=0},update:function(a){if(this.paused)return!0;if(this.elapsed=a-this._now,this._now=a,this.elapsed>this.timeCap&&this.adjustEvents(a-this.elapsed),this._marked=0,this.clearPendingEvents(),this.running&&this._now>=this.nextTick&&this._len>0){for(;this._i=this.events[this._i].tick&&!this.events[this._i].pendingDelete;)this._newTick=this._now+this.events[this._i].delay-(this._now-this.events[this._i].tick),this._newTick<0&&(this._newTick=this._now+this.events[this._i].delay),this.events[this._i].loop===!0?(this.events[this._i].tick=this._newTick,this.events[this._i].callback.apply(this.events[this._i].callbackContext,this.events[this._i].args)):this.events[this._i].repeatCount>0?(this.events[this._i].repeatCount--,this.events[this._i].tick=this._newTick,this.events[this._i].callback.apply(this.events[this._i].callbackContext,this.events[this._i].args)):(this._marked++,this.events[this._i].pendingDelete=!0,this.events[this._i].callback.apply(this.events[this._i].callbackContext,this.events[this._i].args)),this._i++;this.events.length>this._marked?this.order():(this.expired=!0,this.onComplete.dispatch(this))}return this.expired&&this.autoDestroy?!1:!0},pause:function(){this.running&&(this._codePaused=!0,this.paused||(this._pauseStarted=this.game.time.time,this.paused=!0))},_pause:function(){!this.paused&&this.running&&(this._pauseStarted=this.game.time.time,this.paused=!0)},adjustEvents:function(a){for(var b=0;bc&&(c=0),this.events[b].tick=this._now+c}var d=this.nextTick-a;0>d?this.nextTick=this._now:this.nextTick=this._now+d},resume:function(){if(this.paused){var a=this.game.time.time;this._pauseTotal+=a-this._now,this._now=a,this.adjustEvents(this._pauseStarted),this.paused=!1,this._codePaused=!1}},_resume:function(){this._codePaused||this.resume()},removeAll:function(){this.onComplete.removeAll(),this.events.length=0,this._len=0,this._i=0},destroy:function(){this.onComplete.removeAll(),this.running=!1,this.events=[],this._len=0,this._i=0}},Object.defineProperty(c.Timer.prototype,"next",{get:function(){return this.nextTick}}),Object.defineProperty(c.Timer.prototype,"duration",{get:function(){return this.running&&this.nextTick>this._now?this.nextTick-this._now:0}}),Object.defineProperty(c.Timer.prototype,"length",{get:function(){return this.events.length}}),Object.defineProperty(c.Timer.prototype,"ms",{get:function(){return this.running?this._now-this._started-this._pauseTotal:0}}),Object.defineProperty(c.Timer.prototype,"seconds",{get:function(){return this.running?.001*this.ms:0}}),c.Timer.prototype.constructor=c.Timer,c.TimerEvent=function(a,b,c,d,e,f,g,h){this.timer=a,this.delay=b,this.tick=c,this.repeatCount=d-1,this.loop=e,this.callback=f,this.callbackContext=g,this.args=h,this.pendingDelete=!1},c.TimerEvent.prototype.constructor=c.TimerEvent,c.AnimationManager=function(a){this.sprite=a,this.game=a.game,this.currentFrame=null,this.currentAnim=null,this.updateIfVisible=!0,this.isLoaded=!1,this._frameData=null,this._anims={},this._outputFrames=[]},c.AnimationManager.prototype={loadFrameData:function(a,b){if(void 0===a)return!1;if(this.isLoaded)for(var c in this._anims)this._anims[c].updateFrameData(a);return this._frameData=a,void 0===b||null===b?this.frame=0:"string"==typeof b?this.frameName=b:this.frame=b,this.isLoaded=!0,!0},copyFrameData:function(a,b){if(this._frameData=a.clone(),this.isLoaded)for(var c in this._anims)this._anims[c].updateFrameData(this._frameData);return void 0===b||null===b?this.frame=0:"string"==typeof b?this.frameName=b:this.frame=b,this.isLoaded=!0,!0},add:function(a,b,d,e,f){return b=b||[],d=d||60,void 0===e&&(e=!1),void 0===f&&(f=b&&"number"==typeof b[0]?!0:!1),this._outputFrames=[],this._frameData.getFrameIndexes(b,f,this._outputFrames),this._anims[a]=new c.Animation(this.game,this.sprite,a,this._frameData,this._outputFrames,d,e),this.currentAnim=this._anims[a],this.sprite.tilingTexture&&(this.sprite.refreshTexture=!0),this._anims[a]},validateFrames:function(a,b){void 0===b&&(b=!0);for(var c=0;cthis._frameData.total)return!1}else if(this._frameData.checkFrameName(a[c])===!1)return!1;return!0},play:function(a,b,c,d){return this._anims[a]?this.currentAnim===this._anims[a]?this.currentAnim.isPlaying===!1?(this.currentAnim.paused=!1,this.currentAnim.play(b,c,d)):this.currentAnim:(this.currentAnim&&this.currentAnim.isPlaying&&this.currentAnim.stop(),this.currentAnim=this._anims[a],this.currentAnim.paused=!1,this.currentFrame=this.currentAnim.currentFrame,this.currentAnim.play(b,c,d)):void 0},stop:function(a,b){void 0===b&&(b=!1),!this.currentAnim||"string"==typeof a&&a!==this.currentAnim.name||this.currentAnim.stop(b)},update:function(){return this.updateIfVisible&&!this.sprite.visible?!1:this.currentAnim&&this.currentAnim.update()?(this.currentFrame=this.currentAnim.currentFrame,!0):!1},next:function(a){this.currentAnim&&(this.currentAnim.next(a),this.currentFrame=this.currentAnim.currentFrame)},previous:function(a){this.currentAnim&&(this.currentAnim.previous(a),this.currentFrame=this.currentAnim.currentFrame)},getAnimation:function(a){return"string"==typeof a&&this._anims[a]?this._anims[a]:null},refreshFrame:function(){this.sprite.setTexture(PIXI.TextureCache[this.currentFrame.uuid])},destroy:function(){var a=null;for(var a in this._anims)this._anims.hasOwnProperty(a)&&this._anims[a].destroy();this._anims={},this._outputFrames=[],this._frameData=null,this.currentAnim=null,this.currentFrame=null,this.sprite=null,this.game=null}},c.AnimationManager.prototype.constructor=c.AnimationManager,Object.defineProperty(c.AnimationManager.prototype,"frameData",{get:function(){return this._frameData}}),Object.defineProperty(c.AnimationManager.prototype,"frameTotal",{get:function(){return this._frameData.total}}),Object.defineProperty(c.AnimationManager.prototype,"paused",{get:function(){return this.currentAnim.isPaused},set:function(a){this.currentAnim.paused=a}}),Object.defineProperty(c.AnimationManager.prototype,"name",{get:function(){return this.currentAnim?this.currentAnim.name:void 0}}),Object.defineProperty(c.AnimationManager.prototype,"frame",{get:function(){return this.currentFrame?this.currentFrame.index:void 0},set:function(a){"number"==typeof a&&this._frameData&&null!==this._frameData.getFrame(a)&&(this.currentFrame=this._frameData.getFrame(a),this.currentFrame&&this.sprite.setFrame(this.currentFrame))}}),Object.defineProperty(c.AnimationManager.prototype,"frameName",{get:function(){return this.currentFrame?this.currentFrame.name:void 0},set:function(a){"string"==typeof a&&this._frameData&&null!==this._frameData.getFrameByName(a)?(this.currentFrame=this._frameData.getFrameByName(a),this.currentFrame&&(this._frameIndex=this.currentFrame.index,this.sprite.setFrame(this.currentFrame))):console.warn("Cannot set frameName: "+a)}}),c.Animation=function(a,b,d,e,f,g,h){void 0===h&&(h=!1),this.game=a,this._parent=b,this._frameData=e,this.name=d,this._frames=[],this._frames=this._frames.concat(f),this.delay=1e3/g,this.loop=h,this.loopCount=0,this.killOnComplete=!1,this.isFinished=!1,this.isPlaying=!1,this.isPaused=!1,this._pauseStartTime=0,this._frameIndex=0,this._frameDiff=0,this._frameSkip=1,this.currentFrame=this._frameData.getFrame(this._frames[this._frameIndex]),this.onStart=new c.Signal,this.onUpdate=null,this.onComplete=new c.Signal,this.onLoop=new c.Signal,this.isReversed=!1,this.game.onPause.add(this.onPause,this),this.game.onResume.add(this.onResume,this)},c.Animation.prototype={play:function(a,b,c){return"number"==typeof a&&(this.delay=1e3/a),"boolean"==typeof b&&(this.loop=b),"undefined"!=typeof c&&(this.killOnComplete=c),this.isPlaying=!0,this.isFinished=!1,this.paused=!1,this.loopCount=0,this._timeLastFrame=this.game.time.time,this._timeNextFrame=this.game.time.time+this.delay,this._frameIndex=this.isReversed?this._frames.length-1:0,this.updateCurrentFrame(!1,!0),this._parent.events.onAnimationStart$dispatch(this._parent,this),this.onStart.dispatch(this._parent,this),this._parent.animations.currentAnim=this,this._parent.animations.currentFrame=this.currentFrame,this},restart:function(){this.isPlaying=!0,this.isFinished=!1,this.paused=!1,this.loopCount=0,this._timeLastFrame=this.game.time.time,this._timeNextFrame=this.game.time.time+this.delay,this._frameIndex=0,this.currentFrame=this._frameData.getFrame(this._frames[this._frameIndex]),this._parent.setFrame(this.currentFrame),this._parent.animations.currentAnim=this,this._parent.animations.currentFrame=this.currentFrame,this.onStart.dispatch(this._parent,this)},reverse:function(){return this.reversed=!this.reversed,this},reverseOnce:function(){return this.onComplete.addOnce(this.reverse.bind(this)),this.reverse()},setFrame:function(a,b){var c;if(void 0===b&&(b=!1),"string"==typeof a)for(var d=0;d=this._timeNextFrame?(this._frameSkip=1,this._frameDiff=this.game.time.time-this._timeNextFrame,this._timeLastFrame=this.game.time.time,this._frameDiff>this.delay&&(this._frameSkip=Math.floor(this._frameDiff/this.delay),this._frameDiff-=this._frameSkip*this.delay),this._timeNextFrame=this.game.time.time+(this.delay-this._frameDiff),this.isReversed?this._frameIndex-=this._frameSkip:this._frameIndex+=this._frameSkip,!this.isReversed&&this._frameIndex>=this._frames.length||this.isReversed&&this._frameIndex<=-1?this.loop?(this._frameIndex=Math.abs(this._frameIndex)%this._frames.length,this.isReversed&&(this._frameIndex=this._frames.length-1-this._frameIndex),this.currentFrame=this._frameData.getFrame(this._frames[this._frameIndex]),this.currentFrame&&this._parent.setFrame(this.currentFrame),this.loopCount++,this._parent.events.onAnimationLoop$dispatch(this._parent,this),this.onLoop.dispatch(this._parent,this),this.onUpdate?(this.onUpdate.dispatch(this,this.currentFrame),!!this._frameData):!0):(this.complete(),!1):this.updateCurrentFrame(!0)):!1},updateCurrentFrame:function(a,b){if(void 0===b&&(b=!1),!this._frameData)return!1;var c=this.currentFrame.index;return this.currentFrame=this._frameData.getFrame(this._frames[this._frameIndex]),this.currentFrame&&(b||!b&&c!==this.currentFrame.index)&&this._parent.setFrame(this.currentFrame),this.onUpdate&&a?(this.onUpdate.dispatch(this,this.currentFrame),!!this._frameData):!0},next:function(a){void 0===a&&(a=1);var b=this._frameIndex+a;b>=this._frames.length&&(this.loop?b%=this._frames.length:b=this._frames.length-1),b!==this._frameIndex&&(this._frameIndex=b,this.updateCurrentFrame(!0))},previous:function(a){void 0===a&&(a=1);var b=this._frameIndex-a;0>b&&(this.loop?b=this._frames.length+b:b++),b!==this._frameIndex&&(this._frameIndex=b,this.updateCurrentFrame(!0))},updateFrameData:function(a){this._frameData=a,this.currentFrame=this._frameData?this._frameData.getFrame(this._frames[this._frameIndex%this._frames.length]):null},destroy:function(){this._frameData&&(this.game.onPause.remove(this.onPause,this),this.game.onResume.remove(this.onResume,this),this.game=null,this._parent=null,this._frames=null,this._frameData=null,this.currentFrame=null,this.isPlaying=!1,this.onStart.dispose(),this.onLoop.dispose(),this.onComplete.dispose(),this.onUpdate&&this.onUpdate.dispose())},complete:function(){this._frameIndex=this._frames.length-1,this.currentFrame=this._frameData.getFrame(this._frames[this._frameIndex]),this.isPlaying=!1,this.isFinished=!0,this.paused=!1,this._parent.events.onAnimationComplete$dispatch(this._parent,this),this.onComplete.dispatch(this._parent,this),this.killOnComplete&&this._parent.kill()}},c.Animation.prototype.constructor=c.Animation,Object.defineProperty(c.Animation.prototype,"paused",{get:function(){return this.isPaused},set:function(a){this.isPaused=a,a?this._pauseStartTime=this.game.time.time:this.isPlaying&&(this._timeNextFrame=this.game.time.time+this.delay)}}),Object.defineProperty(c.Animation.prototype,"reversed",{get:function(){return this.isReversed},set:function(a){this.isReversed=a}}),Object.defineProperty(c.Animation.prototype,"frameTotal",{get:function(){return this._frames.length}}),Object.defineProperty(c.Animation.prototype,"frame",{get:function(){return null!==this.currentFrame?this.currentFrame.index:this._frameIndex},set:function(a){this.currentFrame=this._frameData.getFrame(this._frames[a]),null!==this.currentFrame&&(this._frameIndex=a,this._parent.setFrame(this.currentFrame),this.onUpdate&&this.onUpdate.dispatch(this,this.currentFrame))}}),Object.defineProperty(c.Animation.prototype,"speed",{get:function(){return Math.round(1e3/this.delay)},set:function(a){a>=1&&(this.delay=1e3/a)}}),Object.defineProperty(c.Animation.prototype,"enableUpdate",{get:function(){return null!==this.onUpdate},set:function(a){a&&null===this.onUpdate?this.onUpdate=new c.Signal:a||null===this.onUpdate||(this.onUpdate.dispose(),this.onUpdate=null)}}),c.Animation.generateFrameNames=function(a,b,d,e,f){void 0===e&&(e="");var g=[],h="";if(d>b)for(var i=b;d>=i;i++)h="number"==typeof f?c.Utils.pad(i.toString(),f,"0",1):i.toString(),h=a+h+e,g.push(h);else for(var i=b;i>=d;i--)h="number"==typeof f?c.Utils.pad(i.toString(),f,"0",1):i.toString(),h=a+h+e,g.push(h);return g},c.Frame=function(a,b,d,e,f,g){this.index=a,this.x=b,this.y=d,this.width=e,this.height=f,this.name=g,this.centerX=Math.floor(e/2),this.centerY=Math.floor(f/2),this.distance=c.Math.distance(0,0,e,f),this.rotated=!1,this.rotationDirection="cw",this.trimmed=!1,this.sourceSizeW=e,this.sourceSizeH=f,this.spriteSourceSizeX=0,this.spriteSourceSizeY=0,this.spriteSourceSizeW=0,this.spriteSourceSizeH=0,this.right=this.x+this.width,this.bottom=this.y+this.height},c.Frame.prototype={resize:function(a,b){this.width=a,this.height=b,this.centerX=Math.floor(a/2),this.centerY=Math.floor(b/2),this.distance=c.Math.distance(0,0,a,b),this.sourceSizeW=a,this.sourceSizeH=b,this.right=this.x+a,this.bottom=this.y+b},setTrim:function(a,b,c,d,e,f,g){this.trimmed=a,a&&(this.sourceSizeW=b,this.sourceSizeH=c,this.centerX=Math.floor(b/2),this.centerY=Math.floor(c/2),this.spriteSourceSizeX=d,this.spriteSourceSizeY=e,this.spriteSourceSizeW=f,this.spriteSourceSizeH=g)},clone:function(){var a=new c.Frame(this.index,this.x,this.y,this.width,this.height,this.name);for(var b in this)this.hasOwnProperty(b)&&(a[b]=this[b]);return a},getRect:function(a){return void 0===a?a=new c.Rectangle(this.x,this.y,this.width,this.height):a.setTo(this.x,this.y,this.width,this.height),a}},c.Frame.prototype.constructor=c.Frame, -c.FrameData=function(){this._frames=[],this._frameNames=[]},c.FrameData.prototype={addFrame:function(a){return a.index=this._frames.length,this._frames.push(a),""!==a.name&&(this._frameNames[a.name]=a.index),a},getFrame:function(a){return a>=this._frames.length&&(a=0),this._frames[a]},getFrameByName:function(a){return"number"==typeof this._frameNames[a]?this._frames[this._frameNames[a]]:null},checkFrameName:function(a){return null==this._frameNames[a]?!1:!0},clone:function(){for(var a=new c.FrameData,b=0;b=d;d++)c.push(this._frames[d]);return c},getFrames:function(a,b,c){if(void 0===b&&(b=!0),void 0===c&&(c=[]),void 0===a||0===a.length)for(var d=0;d=d&&(d=Math.floor(-j/Math.min(-1,d))),0>=e&&(e=Math.floor(-k/Math.min(-1,e)));var l=Math.floor((j-g)/(d+h)),m=Math.floor((k-g)/(e+h)),n=l*m;if(-1!==f&&(n=f),0===j||0===k||d>j||e>k||0===n)return console.warn("Phaser.AnimationParser.spriteSheet: '"+b+"'s width/height zero or width/height < given frameWidth/frameHeight"),null;for(var o=new c.FrameData,p=g,q=g,r=0;n>r;r++)o.addFrame(new c.Frame(r,p,q,d,e,"")),p+=d+h,p+d>j&&(p=g,q+=e+h);return o},JSONData:function(a,b){if(!b.frames)return console.warn("Phaser.AnimationParser.JSONData: Invalid Texture Atlas JSON given, missing 'frames' array"),void console.log(b);for(var d,e=new c.FrameData,f=b.frames,g=0;g tag");for(var d,e,f,g,h,i,j,k,l,m,n,o=new c.FrameData,p=b.getElementsByTagName("SubTexture"),q=0;q-1},getAssetIndex:function(a,b){for(var c=-1,d=0;d-1?{index:c,file:this._fileList[c]}:!1},reset:function(a,b){void 0===b&&(b=!1),this.resetLocked||(a&&(this.preloadSprite=null),this.isLoading=!1,this._processingHead=0,this._fileList.length=0,this._flightQueue.length=0,this._fileLoadStarted=!1,this._totalFileCount=0,this._totalPackCount=0,this._loadedPackCount=0,this._loadedFileCount=0,b&&(this.onLoadStart.removeAll(),this.onLoadComplete.removeAll(),this.onPackComplete.removeAll(),this.onFileStart.removeAll(),this.onFileComplete.removeAll(),this.onFileError.removeAll()))},addToFileList:function(a,b,c,d,e,f){if(void 0===e&&(e=!1),void 0===b||""===b)return console.warn("Phaser.Loader: Invalid or no key given of type "+a),this;if(void 0===c||null===c){if(!f)return console.warn("Phaser.Loader: No URL given for file type: "+a+" key: "+b),this;c=b+f}var g={type:a,key:b,path:this.path,url:c,syncPoint:this._withSyncPointDepth>0,data:null,loading:!1,loaded:!1,error:!1};if(d)for(var h in d)g[h]=d[h];var i=this.getAssetIndex(a,b);if(e&&i>-1){var j=this._fileList[i];j.loading||j.loaded?(this._fileList.push(g),this._totalFileCount++):this._fileList[i]=g}else-1===i&&(this._fileList.push(g),this._totalFileCount++);return this},replaceInFileList:function(a,b,c,d){return this.addToFileList(a,b,c,d,!0)},pack:function(a,b,c,d){if(void 0===b&&(b=null),void 0===c&&(c=null),void 0===d&&(d=null),!b&&!c)return console.warn("Phaser.Loader.pack - Both url and data are null. One must be set."),this;var e={type:"packfile",key:a,url:b,path:this.path,syncPoint:!0,data:null,loading:!1,loaded:!1,error:!1,callbackContext:d};c&&("string"==typeof c&&(c=JSON.parse(c)),e.data=c||{},e.loaded=!0);for(var f=0;f=e||d&&this._loadedPackCount===this._totalPackCount)break}if(this.updateProgress(),this._processingHead>=this._fileList.length)this.finishedLoading();else if(!this._flightQueue.length){console.warn("Phaser.Loader - aborting: processing queue empty, loading may have stalled");var f=this;setTimeout(function(){f.finishedLoading(!0)},2e3)}},finishedLoading:function(a){this.hasLoaded||(this.hasLoaded=!0,this.isLoading=!1,a||this._fileLoadStarted||(this._fileLoadStarted=!0,this.onLoadStart.dispatch()),this.onLoadComplete.dispatch(),this.game.state.loadComplete(),this.reset())},asyncComplete:function(a,b){void 0===b&&(b=""),a.loaded=!0,a.error=!!b,b&&(a.errorMessage=b,console.warn("Phaser.Loader - "+a.type+"["+a.key+"]: "+b)),this.processLoadQueue()},processPack:function(a){var b=a.data[a.key];if(!b)return void console.warn("Phaser.Loader - "+a.key+": pack has data, but not for pack key");for(var d=0;d=400&&f.status<=599?e.call(g,a,f):d.call(g,a,f)}catch(b){g.hasLoaded?window.console&&console.error(b):g.asyncComplete(a,b.message||"Exception")}},f.onerror=function(){try{return e.call(g,a,f)}catch(b){g.hasLoaded?window.console&&console.error(b):g.asyncComplete(a,b.message||"Exception")}},a.requestObject=f,a.requestUrl=b,f.send()},xhrLoadWithXDR:function(a,b,c,d,e){ -this._warnedAboutXDomainRequest||this.game.device.ie&&!(this.game.device.ieVersion>=10)||(this._warnedAboutXDomainRequest=!0,console.warn("Phaser.Loader - using XDomainRequest outside of IE 9"));var f=new window.XDomainRequest;f.open("GET",b,!0),f.responseType=c,f.timeout=3e3,e=e||this.fileError;var g=this;f.onerror=function(){try{return e.call(g,a,f)}catch(b){g.asyncComplete(a,b.message||"Exception")}},f.ontimeout=function(){try{return e.call(g,a,f)}catch(b){g.asyncComplete(a,b.message||"Exception")}},f.onprogress=function(){},f.onload=function(){try{return 4==f.readyState&&f.status>=400&&f.status<=599?e.call(g,a,f):d.call(g,a,f)}catch(b){g.asyncComplete(a,b.message||"Exception")}},a.requestObject=f,a.requestUrl=b,setTimeout(function(){f.send()},0)},getVideoURL:function(a){for(var b=0;b=0&&(d=d.substr(0,d.indexOf("?")));var e=d.substr((Math.max(0,d.lastIndexOf("."))||1/0)+1);if(c=e.toLowerCase(),this.game.device.canPlayVideo(c))return a[b]}}return null},getAudioURL:function(a){if(this.game.sound.noAudio)return null;for(var b=0;b=0&&(d=d.substr(0,d.indexOf("?")));var e=d.substr((Math.max(0,d.lastIndexOf("."))||1/0)+1);if(c=e.toLowerCase(),this.game.device.canPlayAudio(c))return a[b]}}return null},fileError:function(a,b,c){var d=a.requestUrl||this.transformUrl(a.url,a),e="error loading asset from URL "+d;!c&&b&&(c=b.status),c&&(e=e+" ("+c+")"),this.asyncComplete(a,e)},fileComplete:function(a,b){var d=!0;switch(a.type){case"packfile":var e=JSON.parse(b.responseText);a.data=e||{};break;case"image":this.cache.addImage(a.key,a.url,a.data);break;case"spritesheet":this.cache.addSpriteSheet(a.key,a.url,a.data,a.frameWidth,a.frameHeight,a.frameMax,a.margin,a.spacing);break;case"textureatlas":if(null==a.atlasURL)this.cache.addTextureAtlas(a.key,a.url,a.data,a.atlasData,a.format);else if(d=!1,a.format==c.Loader.TEXTURE_ATLAS_JSON_ARRAY||a.format==c.Loader.TEXTURE_ATLAS_JSON_HASH||a.format==c.Loader.TEXTURE_ATLAS_JSON_PYXEL)this.xhrLoad(a,this.transformUrl(a.atlasURL,a),"text",this.jsonLoadComplete);else{if(a.format!=c.Loader.TEXTURE_ATLAS_XML_STARLING)throw new Error("Phaser.Loader. Invalid Texture Atlas format: "+a.format);this.xhrLoad(a,this.transformUrl(a.atlasURL,a),"text",this.xmlLoadComplete)}break;case"bitmapfont":a.atlasURL?(d=!1,this.xhrLoad(a,this.transformUrl(a.atlasURL,a),"text",function(a,b){var c;try{c=JSON.parse(b.responseText)}catch(d){}c?(a.atlasType="json",this.jsonLoadComplete(a,b)):(a.atlasType="xml",this.xmlLoadComplete(a,b))})):this.cache.addBitmapFont(a.key,a.url,a.data,a.atlasData,a.atlasType,a.xSpacing,a.ySpacing);break;case"video":if(a.asBlob)try{a.data=b.response}catch(f){throw new Error("Phaser.Loader. Unable to parse video file as Blob: "+a.key)}this.cache.addVideo(a.key,a.url,a.data,a.asBlob);break;case"audio":this.game.sound.usingWebAudio?(a.data=b.response,this.cache.addSound(a.key,a.url,a.data,!0,!1),a.autoDecode&&this.game.sound.decode(a.key)):this.cache.addSound(a.key,a.url,a.data,!1,!0);break;case"text":a.data=b.responseText,this.cache.addText(a.key,a.url,a.data);break;case"shader":a.data=b.responseText,this.cache.addShader(a.key,a.url,a.data);break;case"physics":var e=JSON.parse(b.responseText);this.cache.addPhysicsData(a.key,a.url,e,a.format);break;case"script":a.data=document.createElement("script"),a.data.language="javascript",a.data.type="text/javascript",a.data.defer=!1,a.data.text=b.responseText,document.head.appendChild(a.data),a.callback&&(a.data=a.callback.call(a.callbackContext,a.key,b.responseText));break;case"binary":a.callback?a.data=a.callback.call(a.callbackContext,a.key,b.response):a.data=b.response,this.cache.addBinary(a.key,a.data)}d&&this.asyncComplete(a)},jsonLoadComplete:function(a,b){var c=JSON.parse(b.responseText);"tilemap"===a.type?this.cache.addTilemap(a.key,a.url,c,a.format):"bitmapfont"===a.type?this.cache.addBitmapFont(a.key,a.url,a.data,c,a.atlasType,a.xSpacing,a.ySpacing):"json"===a.type?this.cache.addJSON(a.key,a.url,c):this.cache.addTextureAtlas(a.key,a.url,a.data,c,a.format),this.asyncComplete(a)},csvLoadComplete:function(a,b){var c=b.responseText;this.cache.addTilemap(a.key,a.url,c,a.format),this.asyncComplete(a)},xmlLoadComplete:function(a,b){var c=b.responseText,d=this.parseXml(c);if(!d){var e=b.responseType||b.contentType;return console.warn("Phaser.Loader - "+a.key+": invalid XML ("+e+")"),void this.asyncComplete(a,"invalid XML")}"bitmapfont"===a.type?this.cache.addBitmapFont(a.key,a.url,a.data,d,a.atlasType,a.xSpacing,a.ySpacing):"textureatlas"===a.type?this.cache.addTextureAtlas(a.key,a.url,a.data,d,a.format):"xml"===a.type&&this.cache.addXML(a.key,a.url,d),this.asyncComplete(a)},parseXml:function(a){var b;try{if(window.DOMParser){var c=new DOMParser;b=c.parseFromString(a,"text/xml")}else b=new ActiveXObject("Microsoft.XMLDOM"),b.async="false",b.loadXML(a)}catch(d){b=null}return b&&b.documentElement&&!b.getElementsByTagName("parsererror").length?b:null},updateProgress:function(){this.preloadSprite&&(0===this.preloadSprite.direction?this.preloadSprite.rect.width=Math.floor(this.preloadSprite.width/100*this.progress):this.preloadSprite.rect.height=Math.floor(this.preloadSprite.height/100*this.progress),this.preloadSprite.sprite?this.preloadSprite.sprite.updateCrop():this.preloadSprite=null)},totalLoadedFiles:function(){return this._loadedFileCount},totalQueuedFiles:function(){return this._totalFileCount-this._loadedFileCount},totalLoadedPacks:function(){return this._totalPackCount},totalQueuedPacks:function(){return this._totalPackCount-this._loadedPackCount}},Object.defineProperty(c.Loader.prototype,"progressFloat",{get:function(){var a=this._loadedFileCount/this._totalFileCount*100;return c.Math.clamp(a||0,0,100)}}),Object.defineProperty(c.Loader.prototype,"progress",{get:function(){return Math.round(this.progressFloat)}}),c.Loader.prototype.constructor=c.Loader,c.LoaderParser={bitmapFont:function(a,b,c,d){return this.xmlBitmapFont(a,b,c,d)},xmlBitmapFont:function(a,b,c,d){var e={},f=a.getElementsByTagName("info")[0],g=a.getElementsByTagName("common")[0];e.font=f.getAttribute("face"),e.size=parseInt(f.getAttribute("size"),10),e.lineHeight=parseInt(g.getAttribute("lineHeight"),10)+d,e.chars={};for(var h=a.getElementsByTagName("char"),i=0;i=this.durationMS&&(this.usingWebAudio?this.loop?(this.onLoop.dispatch(this),this.isPlaying=!1,""===this.currentMarker?(this.currentTime=0,this.startTime=this.game.time.time,this.isPlaying=!0):(this.onMarkerComplete.dispatch(this.currentMarker,this),this.play(this.currentMarker,0,this.volume,!0,!0))):""!==this.currentMarker&&this.stop():this.loop?(this.onLoop.dispatch(this),""===this.currentMarker&&(this.currentTime=0,this.startTime=this.game.time.time),this.isPlaying=!1,this.play(this.currentMarker,0,this.volume,!0,!0)):this.stop())))):void this.destroy()},loopFull:function(a){this.play(null,0,a,!0)},play:function(a,b,c,d,e){if((void 0===a||a===!1||null===a)&&(a=""),void 0===e&&(e=!0),this.isPlaying&&!this.allowMultiple&&!e&&!this.override)return this;if(this._sound&&this.isPlaying&&!this.allowMultiple&&(this.override||e))if(this.usingWebAudio){if(void 0===this._sound.stop)this._sound.noteOff(0);else try{this._sound.stop(0)}catch(f){}this.externalNode?this._sound.disconnect(this.externalNode):this._sound.disconnect(this.gainNode)}else this.usingAudioTag&&(this._sound.pause(),this._sound.currentTime=0);if(""===a&&Object.keys(this.markers).length>0)return this;if(""!==a){if(this.currentMarker=a,!this.markers[a])return this;this.position=this.markers[a].start,this.volume=this.markers[a].volume,this.loop=this.markers[a].loop,this.duration=this.markers[a].duration,this.durationMS=this.markers[a].durationMS,"undefined"!=typeof c&&(this.volume=c),"undefined"!=typeof d&&(this.loop=d),this._tempMarker=a,this._tempPosition=this.position,this._tempVolume=this.volume,this._tempLoop=this.loop}else b=b||0,void 0===c&&(c=this._volume),void 0===d&&(d=this.loop),this.position=Math.max(0,b),this.volume=c,this.loop=d,this.duration=0,this.durationMS=0,this._tempMarker=a,this._tempPosition=b,this._tempVolume=c,this._tempLoop=d;return this.usingWebAudio?this.game.cache.isSoundDecoded(this.key)?(this._sound=this.context.createBufferSource(),this.externalNode?this._sound.connect(this.externalNode):this._sound.connect(this.gainNode),this._buffer=this.game.cache.getSoundData(this.key),this._sound.buffer=this._buffer,this.loop&&""===a&&(this._sound.loop=!0),this.loop||""!==a||(this._sound.onended=this.onEndedHandler.bind(this)),this.totalDuration=this._sound.buffer.duration,0===this.duration&&(this.duration=this.totalDuration,this.durationMS=Math.ceil(1e3*this.totalDuration)),void 0===this._sound.start?this._sound.noteGrainOn(0,this.position,this.duration):this.loop&&""===a?this._sound.start(0,0):this._sound.start(0,this.position,this.duration),this.isPlaying=!0,this.startTime=this.game.time.time,this.currentTime=0,this.stopTime=this.startTime+this.durationMS,this.onPlay.dispatch(this)):(this.pendingPlayback=!0,this.game.cache.getSound(this.key)&&this.game.cache.getSound(this.key).isDecoding===!1&&this.game.sound.decode(this.key,this)):this.game.cache.getSound(this.key)&&this.game.cache.getSound(this.key).locked?(this.game.cache.reloadSound(this.key),this.pendingPlayback=!0):this._sound&&(this.game.device.cocoonJS||4===this._sound.readyState)?(this._sound.play(),this.totalDuration=this._sound.duration,0===this.duration&&(this.duration=this.totalDuration,this.durationMS=1e3*this.totalDuration),this._sound.currentTime=this.position,this._sound.muted=this._muted,this._muted||this.game.sound.mute?this._sound.volume=0:this._sound.volume=this._volume,this.isPlaying=!0,this.startTime=this.game.time.time,this.currentTime=0,this.stopTime=this.startTime+this.durationMS,this.onPlay.dispatch(this)):this.pendingPlayback=!0,this},restart:function(a,b,c,d){a=a||"",b=b||0,c=c||1,void 0===d&&(d=!1),this.play(a,b,c,d,!0)},pause:function(){this.isPlaying&&this._sound&&(this.paused=!0,this.pausedPosition=this.currentTime,this.pausedTime=this.game.time.time,this._tempPause=this._sound.currentTime,this.onPause.dispatch(this),this.stop())},resume:function(){if(this.paused&&this._sound){if(this.usingWebAudio){var a=Math.max(0,this.position+this.pausedPosition/1e3);this._sound=this.context.createBufferSource(),this._sound.buffer=this._buffer,this.externalNode?this._sound.connect(this.externalNode):this._sound.connect(this.gainNode),this.loop&&(this._sound.loop=!0),this.loop||""!==this.currentMarker||(this._sound.onended=this.onEndedHandler.bind(this));var b=this.duration-this.pausedPosition/1e3;void 0===this._sound.start?this._sound.noteGrainOn(0,a,b):this.loop&&this.game.device.chrome?42===this.game.device.chromeVersion?this._sound.start(0):this._sound.start(0,a):this._sound.start(0,a,b)}else this._sound.currentTime=this._tempPause,this._sound.play();this.isPlaying=!0,this.paused=!1,this.startTime+=this.game.time.time-this.pausedTime,this.onResume.dispatch(this)}},stop:function(){if(this.isPlaying&&this._sound)if(this.usingWebAudio){if(void 0===this._sound.stop)this._sound.noteOff(0);else try{this._sound.stop(0)}catch(a){}this.externalNode?this._sound.disconnect(this.externalNode):this._sound.disconnect(this.gainNode)}else this.usingAudioTag&&(this._sound.pause(),this._sound.currentTime=0);if(this.pendingPlayback=!1,this.isPlaying=!1,!this.paused){var b=this.currentMarker;""!==this.currentMarker&&this.onMarkerComplete.dispatch(this.currentMarker,this),this.currentMarker="",null!==this.fadeTween&&this.fadeTween.stop(),this.onStop.dispatch(this,b)}},fadeIn:function(a,b,c){void 0===b&&(b=!1),void 0===c&&(c=this.currentMarker),this.paused||(this.play(c,0,0,b),this.fadeTo(a,1))},fadeOut:function(a){this.fadeTo(a,0)},fadeTo:function(a,b){if(this.isPlaying&&!this.paused&&b!==this.volume){if(void 0===a&&(a=1e3),void 0===b)return void console.warn("Phaser.Sound.fadeTo: No Volume Specified.");this.fadeTween=this.game.add.tween(this).to({volume:b},a,c.Easing.Linear.None,!0),this.fadeTween.onComplete.add(this.fadeComplete,this)}},fadeComplete:function(){this.onFadeComplete.dispatch(this,this.volume),0===this.volume&&this.stop()},updateGlobalVolume:function(a){this.usingAudioTag&&this._sound&&(this._sound.volume=a*this._volume)},destroy:function(a){void 0===a&&(a=!0),this.stop(),a?this.game.sound.remove(this):(this.markers={},this.context=null,this._buffer=null,this.externalNode=null,this.onDecoded.dispose(),this.onPlay.dispose(),this.onPause.dispose(),this.onResume.dispose(),this.onLoop.dispose(),this.onStop.dispose(),this.onMute.dispose(),this.onMarkerComplete.dispose())}},c.Sound.prototype.constructor=c.Sound,Object.defineProperty(c.Sound.prototype,"isDecoding",{get:function(){return this.game.cache.getSound(this.key).isDecoding}}),Object.defineProperty(c.Sound.prototype,"isDecoded",{get:function(){return this.game.cache.isSoundDecoded(this.key)}}),Object.defineProperty(c.Sound.prototype,"mute",{get:function(){return this._muted||this.game.sound.mute},set:function(a){a=a||!1,a!==this._muted&&(a?(this._muted=!0,this._muteVolume=this._tempVolume,this.usingWebAudio?this.gainNode.gain.value=0:this.usingAudioTag&&this._sound&&(this._sound.volume=0)):(this._muted=!1,this.usingWebAudio?this.gainNode.gain.value=this._muteVolume:this.usingAudioTag&&this._sound&&(this._sound.volume=this._muteVolume)),this.onMute.dispatch(this))}}),Object.defineProperty(c.Sound.prototype,"volume",{get:function(){return this._volume},set:function(a){return this.game.device.firefox&&this.usingAudioTag&&(a=this.game.math.clamp(a,0,1)),this._muted?void(this._muteVolume=a):(this._tempVolume=a,this._volume=a,void(this.usingWebAudio?this.gainNode.gain.value=a:this.usingAudioTag&&this._sound&&(this._sound.volume=a)))}}),c.SoundManager=function(a){this.game=a,this.onSoundDecode=new c.Signal,this.onVolumeChange=new c.Signal,this.onMute=new c.Signal,this.onUnMute=new c.Signal,this.context=null,this.usingWebAudio=!1,this.usingAudioTag=!1,this.noAudio=!1,this.connectToMaster=!0,this.touchLocked=!1,this.channels=32,this.muteOnPause=!0,this._codeMuted=!1,this._muted=!1,this._unlockSource=null,this._volume=1,this._sounds=[],this._watchList=new c.ArraySet,this._watching=!1,this._watchCallback=null,this._watchContext=null},c.SoundManager.prototype={boot:function(){if(this.game.device.iOS&&this.game.device.webAudio===!1&&(this.channels=1),window.PhaserGlobal){if(window.PhaserGlobal.disableAudio===!0)return this.noAudio=!0,void(this.touchLocked=!1);if(window.PhaserGlobal.disableWebAudio===!0)return this.usingAudioTag=!0,void(this.touchLocked=!1)}if(window.PhaserGlobal&&window.PhaserGlobal.audioContext)this.context=window.PhaserGlobal.audioContext;else if(window.AudioContext)try{this.context=new window.AudioContext}catch(a){this.context=null,this.usingWebAudio=!1,this.touchLocked=!1}else if(window.webkitAudioContext)try{this.context=new window.webkitAudioContext}catch(a){this.context=null,this.usingWebAudio=!1,this.touchLocked=!1}if(null===this.context){if(void 0===window.Audio)return void(this.noAudio=!0);this.usingAudioTag=!0}else this.usingWebAudio=!0,void 0===this.context.createGain?this.masterGain=this.context.createGainNode():this.masterGain=this.context.createGain(),this.masterGain.gain.value=1,this.masterGain.connect(this.context.destination);this.noAudio||(!this.game.device.cocoonJS&&this.game.device.iOS||window.PhaserGlobal&&window.PhaserGlobal.fakeiOSTouchLock)&&this.setTouchLock()},setTouchLock:function(){this.noAudio||window.PhaserGlobal&&window.PhaserGlobal.disableAudio===!0||(this.game.device.iOSVersion>8?this.game.input.touch.addTouchLockCallback(this.unlock,this,!0):this.game.input.touch.addTouchLockCallback(this.unlock,this),this.touchLocked=!0)},unlock:function(){if(this.noAudio||!this.touchLocked||null!==this._unlockSource)return!0;if(this.usingAudioTag)this.touchLocked=!1,this._unlockSource=null;else if(this.usingWebAudio){var a=this.context.createBuffer(1,1,22050);this._unlockSource=this.context.createBufferSource(),this._unlockSource.buffer=a,this._unlockSource.connect(this.context.destination),void 0===this._unlockSource.start?this._unlockSource.noteOn(0):this._unlockSource.start(0)}return!0},stopAll:function(){if(!this.noAudio)for(var a=0;aa?a=0:a>1&&(a=1),this._volume!==a){if(this._volume=a,this.usingWebAudio)this.masterGain.gain.value=a;else for(var b=0;b=400?0:100,this.dom.getOffset(this.game.canvas,this.offset);var b=this._parentBounds.width,d=this._parentBounds.height,e=this.getParentBounds(this._parentBounds),f=e.width!==b||e.height!==d,g=this.updateOrientationState();(f||g)&&(this.onResize&&this.onResize.call(this.onResizeContext,this,e),this.updateLayout(),this.signalSizeChange());var h=2*this._updateThrottle;this._updateThrottle=b||0>=c)return a;var e=b,f=a.height*b/a.width,g=a.width*c/a.height,h=c,i=g>b;return i=i?d:!d,i?(a.width=Math.floor(e),a.height=Math.floor(f)):(a.width=Math.floor(g),a.height=Math.floor(h)),a},destroy:function(){this.game.onResume.remove(this._gameResumed,this),window.removeEventListener("orientationchange",this._orientationChange,!1),window.removeEventListener("resize",this._windowResize,!1),this.compatibility.supportsFullScreen&&(document.removeEventListener("webkitfullscreenchange",this._fullScreenChange,!1),document.removeEventListener("mozfullscreenchange",this._fullScreenChange,!1),document.removeEventListener("MSFullscreenChange",this._fullScreenChange,!1),document.removeEventListener("fullscreenchange",this._fullScreenChange,!1),document.removeEventListener("webkitfullscreenerror",this._fullScreenError,!1),document.removeEventListener("mozfullscreenerror",this._fullScreenError,!1),document.removeEventListener("MSFullscreenError",this._fullScreenError,!1),document.removeEventListener("fullscreenerror",this._fullScreenError,!1))}},c.ScaleManager.prototype.constructor=c.ScaleManager,Object.defineProperty(c.ScaleManager.prototype,"boundingParent",{get:function(){if(this.parentIsWindow||this.isFullScreen&&!this._createdFullScreenTarget)return null;var a=this.game.canvas&&this.game.canvas.parentNode;return a||null}}),Object.defineProperty(c.ScaleManager.prototype,"scaleMode",{get:function(){return this._scaleMode},set:function(a){return a!==this._scaleMode&&(this.isFullScreen||(this.updateDimensions(this._gameSize.width,this._gameSize.height,!0),this.queueUpdate(!0)),this._scaleMode=a),this._scaleMode}}),Object.defineProperty(c.ScaleManager.prototype,"fullScreenScaleMode",{get:function(){return this._fullScreenScaleMode},set:function(a){return a!==this._fullScreenScaleMode&&(this.isFullScreen?(this.prepScreenMode(!1),this._fullScreenScaleMode=a,this.prepScreenMode(!0),this.queueUpdate(!0)):this._fullScreenScaleMode=a),this._fullScreenScaleMode}}),Object.defineProperty(c.ScaleManager.prototype,"currentScaleMode",{get:function(){return this.isFullScreen?this._fullScreenScaleMode:this._scaleMode}}),Object.defineProperty(c.ScaleManager.prototype,"pageAlignHorizontally",{get:function(){return this._pageAlignHorizontally},set:function(a){a!==this._pageAlignHorizontally&&(this._pageAlignHorizontally=a,this.queueUpdate(!0))}}),Object.defineProperty(c.ScaleManager.prototype,"pageAlignVertically",{get:function(){return this._pageAlignVertically},set:function(a){a!==this._pageAlignVertically&&(this._pageAlignVertically=a,this.queueUpdate(!0))}}),Object.defineProperty(c.ScaleManager.prototype,"isFullScreen",{get:function(){return!!(document.fullscreenElement||document.webkitFullscreenElement||document.mozFullScreenElement||document.msFullscreenElement)}}),Object.defineProperty(c.ScaleManager.prototype,"isPortrait",{get:function(){return"portrait"===this.classifyOrientation(this.screenOrientation)}}),Object.defineProperty(c.ScaleManager.prototype,"isLandscape",{get:function(){return"landscape"===this.classifyOrientation(this.screenOrientation)}}),Object.defineProperty(c.ScaleManager.prototype,"isGamePortrait",{get:function(){return this.height>this.width}}),Object.defineProperty(c.ScaleManager.prototype,"isGameLandscape",{get:function(){return this.width>this.height}}),c.Utils.Debug=function(a){this.game=a,this.sprite=null,this.bmd=null,this.canvas=null,this.context=null,this.font="14px Courier",this.columnWidth=100,this.lineHeight=16,this.renderShadow=!0,this.currentX=0,this.currentY=0,this.currentAlpha=1,this.dirty=!1},c.Utils.Debug.prototype={boot:function(){this.game.renderType===c.CANVAS?this.context=this.game.context:(this.bmd=this.game.make.bitmapData(this.game.width,this.game.height),this.sprite=this.game.make.image(0,0,this.bmd),this.game.stage.addChild(this.sprite),this.game.scale.onSizeChange.add(this.resize,this),this.canvas=PIXI.CanvasPool.create(this,this.game.width,this.game.height),this.context=this.canvas.getContext("2d"))},resize:function(a,b,c){this.bmd.resize(b,c),this.canvas.width=b,this.canvas.height=c},preUpdate:function(){this.dirty&&this.sprite&&(this.bmd.clear(),this.bmd.draw(this.canvas,0,0),this.context.clearRect(0,0,this.game.width,this.game.height),this.dirty=!1)},reset:function(){this.context&&this.context.clearRect(0,0,this.game.width,this.game.height),this.sprite&&this.bmd.clear()},start:function(a,b,c,d){"number"!=typeof a&&(a=0),"number"!=typeof b&&(b=0),c=c||"rgb(255,255,255)",void 0===d&&(d=0),this.currentX=a,this.currentY=b,this.currentColor=c,this.columnWidth=d,this.dirty=!0,this.context.save(),this.context.setTransform(1,0,0,1,0,0),this.context.strokeStyle=c,this.context.fillStyle=c,this.context.font=this.font,this.context.globalAlpha=this.currentAlpha},stop:function(){this.context.restore()},line:function(){for(var a=this.currentX,b=0;b0)for(var b=0;b=0&&c.right>=0&&c.top<=this.layoutBounds.width&&c.left<=this.layoutBounds.height},getScreenOrientation:function(a){var b=window.screen,c=b.orientation||b.mozOrientation||b.msOrientation;if(c&&"string"==typeof c.type)return c.type;if("string"==typeof c)return c;var d="portrait-primary",e="landscape-primary";if("screen"===a)return b.height>b.width?d:e;if("viewport"===a)return this.visualBounds.height>this.visualBounds.width?d:e;if("window.orientation"===a&&"number"==typeof window.orientation)return 0===window.orientation||180===window.orientation?d:e;if(window.matchMedia){if(window.matchMedia("(orientation: portrait)").matches)return d;if(window.matchMedia("(orientation: landscape)").matches)return e}return this.visualBounds.height>this.visualBounds.width?d:e},visualBounds:new c.Rectangle,layoutBounds:new c.Rectangle,documentBounds:new c.Rectangle},c.Device.whenReady(function(a){var b=window&&"pageXOffset"in window?function(){return window.pageXOffset}:function(){return document.documentElement.scrollLeft},d=window&&"pageYOffset"in window?function(){return window.pageYOffset}:function(){return document.documentElement.scrollTop};Object.defineProperty(c.DOM,"scrollX",{get:b}),Object.defineProperty(c.DOM,"scrollY",{get:d}),Object.defineProperty(c.DOM.visualBounds,"x",{get:b}),Object.defineProperty(c.DOM.visualBounds,"y",{get:d}),Object.defineProperty(c.DOM.layoutBounds,"x",{value:0}),Object.defineProperty(c.DOM.layoutBounds,"y",{value:0});var e=a.desktop&&document.documentElement.clientWidth<=window.innerWidth&&document.documentElement.clientHeight<=window.innerHeight;if(e){var f=function(){return Math.max(window.innerWidth,document.documentElement.clientWidth)},g=function(){return Math.max(window.innerHeight,document.documentElement.clientHeight)};Object.defineProperty(c.DOM.visualBounds,"width",{get:f}),Object.defineProperty(c.DOM.visualBounds,"height",{get:g}),Object.defineProperty(c.DOM.layoutBounds,"width",{get:f}),Object.defineProperty(c.DOM.layoutBounds,"height",{get:g})}else Object.defineProperty(c.DOM.visualBounds,"width",{get:function(){return window.innerWidth}}),Object.defineProperty(c.DOM.visualBounds,"height",{get:function(){return window.innerHeight}}),Object.defineProperty(c.DOM.layoutBounds,"width",{get:function(){var a=document.documentElement.clientWidth,b=window.innerWidth;return b>a?b:a}}),Object.defineProperty(c.DOM.layoutBounds,"height",{get:function(){var a=document.documentElement.clientHeight,b=window.innerHeight;return b>a?b:a}});Object.defineProperty(c.DOM.documentBounds,"x",{value:0}),Object.defineProperty(c.DOM.documentBounds,"y",{value:0}),Object.defineProperty(c.DOM.documentBounds,"width",{get:function(){var a=document.documentElement;return Math.max(a.clientWidth,a.offsetWidth,a.scrollWidth)}}),Object.defineProperty(c.DOM.documentBounds,"height",{get:function(){var a=document.documentElement;return Math.max(a.clientHeight,a.offsetHeight,a.scrollHeight)}})},null,!0),c.ArraySet=function(a){this.position=0,this.list=a||[]},c.ArraySet.prototype={add:function(a){return this.exists(a)||this.list.push(a),a},getIndex:function(a){return this.list.indexOf(a)},getByKey:function(a,b){for(var c=this.list.length;c--;)if(this.list[c][a]===b)return this.list[c];return null},exists:function(a){return this.list.indexOf(a)>-1},reset:function(){this.list.length=0},remove:function(a){var b=this.list.indexOf(a);return b>-1?(this.list.splice(b,1),a):void 0},setAll:function(a,b){for(var c=this.list.length;c--;)this.list[c]&&(this.list[c][a]=b)},callAll:function(a){for(var b=Array.prototype.slice.call(arguments,1),c=this.list.length;c--;)this.list[c]&&this.list[c][a]&&this.list[c][a].apply(this.list[c],b)},removeAll:function(a){void 0===a&&(a=!1);for(var b=this.list.length;b--;)if(this.list[b]){var c=this.remove(this.list[b]);a&&c.destroy()}this.position=0,this.list=[]}},Object.defineProperty(c.ArraySet.prototype,"total",{get:function(){return this.list.length}}),Object.defineProperty(c.ArraySet.prototype,"first",{get:function(){return this.position=0,this.list.length>0?this.list[0]:null}}),Object.defineProperty(c.ArraySet.prototype,"next",{get:function(){return this.position0;b--){var c=Math.floor(Math.random()*(b+1)),d=a[b];a[b]=a[c],a[c]=d}return a},transposeMatrix:function(a){for(var b=a.length,c=a[0].length,d=new Array(c),e=0;c>e;e++){d[e]=new Array(b);for(var f=b-1;f>-1;f--)d[e][f]=a[f][e]}return d},rotateMatrix:function(a,b){if("string"!=typeof b&&(b=(b%360+360)%360),90===b||-270===b||"rotateLeft"===b)a=c.ArrayUtils.transposeMatrix(a),a=a.reverse();else if(-90===b||270===b||"rotateRight"===b)a=a.reverse(),a=c.ArrayUtils.transposeMatrix(a);else if(180===Math.abs(b)||"rotate180"===b){for(var d=0;d=e-a?e:d},rotate:function(a){var b=a.shift();return a.push(b),b},numberArray:function(a,b){for(var c=[],d=a;b>=d;d++)c.push(d);return c},numberArrayStep:function(a,b,d){(void 0===a||null===a)&&(a=0),(void 0===b||null===b)&&(b=a,a=0),void 0===d&&(d=1);for(var e=[],f=Math.max(c.Math.roundAwayFromZero((b-a)/(d||1)),0),g=0;f>g;g++)e.push(a),a+=d;return e}},c.LinkedList=function(){this.next=null,this.prev=null,this.first=null,this.last=null,this.total=0},c.LinkedList.prototype={add:function(a){return 0===this.total&&null===this.first&&null===this.last?(this.first=a,this.last=a,this.next=a,a.prev=this,this.total++,a):(this.last.next=a,a.prev=this.last,this.last=a,this.total++,a)},reset:function(){this.first=null,this.last=null,this.next=null,this.prev=null,this.total=0},remove:function(a){return 1===this.total?(this.reset(),void(a.next=a.prev=null)):(a===this.first?this.first=this.first.next:a===this.last&&(this.last=this.last.prev),a.prev&&(a.prev.next=a.next),a.next&&(a.next.prev=a.prev),a.next=a.prev=null,null===this.first&&(this.last=null),void this.total--)},callAll:function(a){if(this.first&&this.last){var b=this.first;do b&&b[a]&&b[a].call(b),b=b.next;while(b!=this.last.next)}}},c.LinkedList.prototype.constructor=c.LinkedList,c.Create=function(a){this.game=a,this.bmd=null,this.canvas=null,this.ctx=null,this.palettes=[{0:"#000",1:"#9D9D9D",2:"#FFF",3:"#BE2633",4:"#E06F8B",5:"#493C2B",6:"#A46422",7:"#EB8931",8:"#F7E26B",9:"#2F484E",A:"#44891A",B:"#A3CE27",C:"#1B2632",D:"#005784",E:"#31A2F2",F:"#B2DCEF"},{0:"#000",1:"#191028",2:"#46af45",3:"#a1d685",4:"#453e78",5:"#7664fe",6:"#833129",7:"#9ec2e8",8:"#dc534b",9:"#e18d79",A:"#d6b97b",B:"#e9d8a1",C:"#216c4b",D:"#d365c8",E:"#afaab9",F:"#f5f4eb"},{0:"#000",1:"#2234d1",2:"#0c7e45",3:"#44aacc",4:"#8a3622",5:"#5c2e78",6:"#aa5c3d",7:"#b5b5b5",8:"#5e606e",9:"#4c81fb",A:"#6cd947",B:"#7be2f9",C:"#eb8a60",D:"#e23d69",E:"#ffd93f",F:"#fff"},{0:"#000",1:"#fff",2:"#8b4131",3:"#7bbdc5",4:"#8b41ac",5:"#6aac41",6:"#3931a4",7:"#d5de73",8:"#945a20",9:"#5a4100",A:"#bd736a",B:"#525252",C:"#838383",D:"#acee8b",E:"#7b73de",F:"#acacac"},{0:"#000",1:"#191028",2:"#46af45",3:"#a1d685",4:"#453e78",5:"#7664fe",6:"#833129",7:"#9ec2e8",8:"#dc534b",9:"#e18d79",A:"#d6b97b",B:"#e9d8a1",C:"#216c4b",D:"#d365c8",E:"#afaab9",F:"#fff"}]},c.Create.PALETTE_ARNE=0,c.Create.PALETTE_JMP=1,c.Create.PALETTE_CGA=2,c.Create.PALETTE_C64=3,c.Create.PALETTE_JAPANESE_MACHINE=4,c.Create.prototype={texture:function(a,b,c,d,e){void 0===c&&(c=8),void 0===d&&(d=c),void 0===e&&(e=0);var f=b[0].length*c,g=b.length*d;null===this.bmd&&(this.bmd=this.game.make.bitmapData(),this.canvas=this.bmd.canvas,this.ctx=this.bmd.context),this.bmd.resize(f,g),this.bmd.clear();for(var h=0;hg;g+=e)this.ctx.fillRect(0,g,b,1);for(var h=0;b>h;h+=d)this.ctx.fillRect(h,0,1,c);return this.bmd.generateTexture(a)}},c.Create.prototype.constructor=c.Create,c.FlexGrid=function(a,b,d){this.game=a.game,this.manager=a,this.width=b,this.height=d,this.boundsCustom=new c.Rectangle(0,0,b,d),this.boundsFluid=new c.Rectangle(0,0,b,d),this.boundsFull=new c.Rectangle(0,0,b,d),this.boundsNone=new c.Rectangle(0,0,b,d),this.positionCustom=new c.Point(0,0),this.positionFluid=new c.Point(0,0),this.positionFull=new c.Point(0,0),this.positionNone=new c.Point(0,0),this.scaleCustom=new c.Point(1,1),this.scaleFluid=new c.Point(1,1),this.scaleFluidInversed=new c.Point(1,1),this.scaleFull=new c.Point(1,1),this.scaleNone=new c.Point(1,1), -this.customWidth=0,this.customHeight=0,this.customOffsetX=0,this.customOffsetY=0,this.ratioH=b/d,this.ratioV=d/b,this.multiplier=0,this.layers=[]},c.FlexGrid.prototype={setSize:function(a,b){this.width=a,this.height=b,this.ratioH=a/b,this.ratioV=b/a,this.scaleNone=new c.Point(1,1),this.boundsNone.width=this.width,this.boundsNone.height=this.height,this.refresh()},createCustomLayer:function(a,b,d,e){void 0===e&&(e=!0),this.customWidth=a,this.customHeight=b,this.boundsCustom.width=a,this.boundsCustom.height=b;var f=new c.FlexLayer(this,this.positionCustom,this.boundsCustom,this.scaleCustom);return e&&this.game.world.add(f),this.layers.push(f),"undefined"!=typeof d&&null!==typeof d&&f.addMultiple(d),f},createFluidLayer:function(a,b){void 0===b&&(b=!0);var d=new c.FlexLayer(this,this.positionFluid,this.boundsFluid,this.scaleFluid);return b&&this.game.world.add(d),this.layers.push(d),"undefined"!=typeof a&&null!==typeof a&&d.addMultiple(a),d},createFullLayer:function(a){var b=new c.FlexLayer(this,this.positionFull,this.boundsFull,this.scaleFluid);return this.game.world.add(b),this.layers.push(b),"undefined"!=typeof a&&b.addMultiple(a),b},createFixedLayer:function(a){var b=new c.FlexLayer(this,this.positionNone,this.boundsNone,this.scaleNone);return this.game.world.add(b),this.layers.push(b),"undefined"!=typeof a&&b.addMultiple(a),b},reset:function(){for(var a=this.layers.length;a--;)this.layers[a].persist||(this.layers[a].position=null,this.layers[a].scale=null,this.layers.slice(a,1))},onResize:function(a,b){this.ratioH=a/b,this.ratioV=b/a,this.refresh(a,b)},refresh:function(){this.multiplier=Math.min(this.manager.height/this.height,this.manager.width/this.width),this.boundsFluid.width=Math.round(this.width*this.multiplier),this.boundsFluid.height=Math.round(this.height*this.multiplier),this.scaleFluid.set(this.boundsFluid.width/this.width,this.boundsFluid.height/this.height),this.scaleFluidInversed.set(this.width/this.boundsFluid.width,this.height/this.boundsFluid.height),this.scaleFull.set(this.boundsFull.width/this.width,this.boundsFull.height/this.height),this.boundsFull.width=Math.round(this.manager.width*this.scaleFluidInversed.x),this.boundsFull.height=Math.round(this.manager.height*this.scaleFluidInversed.y),this.boundsFluid.centerOn(this.manager.bounds.centerX,this.manager.bounds.centerY),this.boundsNone.centerOn(this.manager.bounds.centerX,this.manager.bounds.centerY),this.positionFluid.set(this.boundsFluid.x,this.boundsFluid.y),this.positionNone.set(this.boundsNone.x,this.boundsNone.y)},fitSprite:function(a){this.manager.scaleSprite(a),a.x=this.manager.bounds.centerX,a.y=this.manager.bounds.centerY},debug:function(){this.game.debug.text(this.boundsFluid.width+" x "+this.boundsFluid.height,this.boundsFluid.x+4,this.boundsFluid.y+16),this.game.debug.geom(this.boundsFluid,"rgba(255,0,0,0.9",!1)}},c.FlexGrid.prototype.constructor=c.FlexGrid,c.FlexLayer=function(a,b,d,e){c.Group.call(this,a.game,null,"__flexLayer"+a.game.rnd.uuid(),!1),this.manager=a.manager,this.grid=a,this.persist=!1,this.position=b,this.bounds=d,this.scale=e,this.topLeft=d.topLeft,this.topMiddle=new c.Point(d.halfWidth,0),this.topRight=d.topRight,this.bottomLeft=d.bottomLeft,this.bottomMiddle=new c.Point(d.halfWidth,d.bottom),this.bottomRight=d.bottomRight},c.FlexLayer.prototype=Object.create(c.Group.prototype),c.FlexLayer.prototype.constructor=c.FlexLayer,c.FlexLayer.prototype.resize=function(){},c.FlexLayer.prototype.debug=function(){this.game.debug.text(this.bounds.width+" x "+this.bounds.height,this.bounds.x+4,this.bounds.y+16),this.game.debug.geom(this.bounds,"rgba(0,0,255,0.9",!1),this.game.debug.geom(this.topLeft,"rgba(255,255,255,0.9"),this.game.debug.geom(this.topMiddle,"rgba(255,255,255,0.9"),this.game.debug.geom(this.topRight,"rgba(255,255,255,0.9")},c.Color={packPixel:function(a,b,d,e){return c.Device.LITTLE_ENDIAN?(e<<24|d<<16|b<<8|a)>>>0:(a<<24|b<<16|d<<8|e)>>>0},unpackPixel:function(a,b,d,e){return(void 0===b||null===b)&&(b=c.Color.createColor()),(void 0===d||null===d)&&(d=!1),(void 0===e||null===e)&&(e=!1),c.Device.LITTLE_ENDIAN?(b.a=(4278190080&a)>>>24,b.b=(16711680&a)>>>16,b.g=(65280&a)>>>8,b.r=255&a):(b.r=(4278190080&a)>>>24,b.g=(16711680&a)>>>16,b.b=(65280&a)>>>8,b.a=255&a),b.color=a,b.rgba="rgba("+b.r+","+b.g+","+b.b+","+b.a/255+")",d&&c.Color.RGBtoHSL(b.r,b.g,b.b,b),e&&c.Color.RGBtoHSV(b.r,b.g,b.b,b),b},fromRGBA:function(a,b){return b||(b=c.Color.createColor()),b.r=(4278190080&a)>>>24,b.g=(16711680&a)>>>16,b.b=(65280&a)>>>8,b.a=255&a,b.rgba="rgba("+b.r+","+b.g+","+b.b+","+b.a+")",b},toRGBA:function(a,b,c,d){return a<<24|b<<16|c<<8|d},RGBtoHSL:function(a,b,d,e){e||(e=c.Color.createColor(a,b,d,1)),a/=255,b/=255,d/=255;var f=Math.min(a,b,d),g=Math.max(a,b,d);if(e.h=0,e.s=0,e.l=(g+f)/2,g!==f){var h=g-f;e.s=e.l>.5?h/(2-g-f):h/(g+f),g===a?e.h=(b-d)/h+(d>b?6:0):g===b?e.h=(d-a)/h+2:g===d&&(e.h=(a-b)/h+4),e.h/=6}return e},HSLtoRGB:function(a,b,d,e){if(e?(e.r=d,e.g=d,e.b=d):e=c.Color.createColor(d,d,d),0!==b){var f=.5>d?d*(1+b):d+b-d*b,g=2*d-f;e.r=c.Color.hueToColor(g,f,a+1/3),e.g=c.Color.hueToColor(g,f,a),e.b=c.Color.hueToColor(g,f,a-1/3)}return e.r=Math.floor(255*e.r|0),e.g=Math.floor(255*e.g|0),e.b=Math.floor(255*e.b|0),c.Color.updateColor(e),e},RGBtoHSV:function(a,b,d,e){e||(e=c.Color.createColor(a,b,d,255)),a/=255,b/=255,d/=255;var f=Math.min(a,b,d),g=Math.max(a,b,d),h=g-f;return e.h=0,e.s=0===g?0:h/g,e.v=g,g!==f&&(g===a?e.h=(b-d)/h+(d>b?6:0):g===b?e.h=(d-a)/h+2:g===d&&(e.h=(a-b)/h+4),e.h/=6),e},HSVtoRGB:function(a,b,d,e){void 0===e&&(e=c.Color.createColor(0,0,0,1,a,b,0,d));var f,g,h,i=Math.floor(6*a),j=6*a-i,k=d*(1-b),l=d*(1-j*b),m=d*(1-(1-j)*b);switch(i%6){case 0:f=d,g=m,h=k;break;case 1:f=l,g=d,h=k;break;case 2:f=k,g=d,h=m;break;case 3:f=k,g=l,h=d;break;case 4:f=m,g=k,h=d;break;case 5:f=d,g=k,h=l}return e.r=Math.floor(255*f),e.g=Math.floor(255*g),e.b=Math.floor(255*h),c.Color.updateColor(e),e},hueToColor:function(a,b,c){return 0>c&&(c+=1),c>1&&(c-=1),1/6>c?a+6*(b-a)*c:.5>c?b:2/3>c?a+(b-a)*(2/3-c)*6:a},createColor:function(a,b,d,e,f,g,h,i){var j={r:a||0,g:b||0,b:d||0,a:e||1,h:f||0,s:g||0,l:h||0,v:i||0,color:0,color32:0,rgba:""};return c.Color.updateColor(j)},updateColor:function(a){return a.rgba="rgba("+a.r.toString()+","+a.g.toString()+","+a.b.toString()+","+a.a.toString()+")",a.color=c.Color.getColor(a.r,a.g,a.b),a.color32=c.Color.getColor32(255*a.a,a.r,a.g,a.b),a},getColor32:function(a,b,c,d){return a<<24|b<<16|c<<8|d},getColor:function(a,b,c){return a<<16|b<<8|c},RGBtoString:function(a,b,d,e,f){return void 0===e&&(e=255),void 0===f&&(f="#"),"#"===f?"#"+((1<<24)+(a<<16)+(b<<8)+d).toString(16).slice(1):"0x"+c.Color.componentToHex(e)+c.Color.componentToHex(a)+c.Color.componentToHex(b)+c.Color.componentToHex(d)},hexToRGB:function(a){var b=c.Color.hexToColor(a);return b?c.Color.getColor32(b.a,b.r,b.g,b.b):void 0},hexToColor:function(a,b){a=a.replace(/^(?:#|0x)?([a-f\d])([a-f\d])([a-f\d])$/i,function(a,b,c,d){return b+b+c+c+d+d});var d=/^(?:#|0x)?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(a);if(d){var e=parseInt(d[1],16),f=parseInt(d[2],16),g=parseInt(d[3],16);b?(b.r=e,b.g=f,b.b=g):b=c.Color.createColor(e,f,g)}return b},webToColor:function(a,b){b||(b=c.Color.createColor());var d=/^rgba?\(\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*(?:,\s*(\d+(?:\.\d+)?))?\s*\)$/.exec(a);return d&&(b.r=parseInt(d[1],10),b.g=parseInt(d[2],10),b.b=parseInt(d[3],10),b.a=void 0!==d[4]?parseFloat(d[4]):1,c.Color.updateColor(b)),b},valueToColor:function(a,b){if(b||(b=c.Color.createColor()),"string"==typeof a)return 0===a.indexOf("rgb")?c.Color.webToColor(a,b):(b.a=1,c.Color.hexToColor(a,b));if("number"==typeof a){var d=c.Color.getRGB(a);return b.r=d.r,b.g=d.g,b.b=d.b,b.a=d.a/255,b}return b},componentToHex:function(a){var b=a.toString(16);return 1==b.length?"0"+b:b},HSVColorWheel:function(a,b){void 0===a&&(a=1),void 0===b&&(b=1);for(var d=[],e=0;359>=e;e++)d.push(c.Color.HSVtoRGB(e/359,a,b));return d},HSLColorWheel:function(a,b){void 0===a&&(a=.5),void 0===b&&(b=.5);for(var d=[],e=0;359>=e;e++)d.push(c.Color.HSLtoRGB(e/359,a,b));return d},interpolateColor:function(a,b,d,e,f){void 0===f&&(f=255);var g=c.Color.getRGB(a),h=c.Color.getRGB(b),i=(h.red-g.red)*e/d+g.red,j=(h.green-g.green)*e/d+g.green,k=(h.blue-g.blue)*e/d+g.blue;return c.Color.getColor32(f,i,j,k)},interpolateColorWithRGB:function(a,b,d,e,f,g){var h=c.Color.getRGB(a),i=(b-h.red)*g/f+h.red,j=(d-h.green)*g/f+h.green,k=(e-h.blue)*g/f+h.blue;return c.Color.getColor(i,j,k)},interpolateRGB:function(a,b,d,e,f,g,h,i){var j=(e-a)*i/h+a,k=(f-b)*i/h+b,l=(g-d)*i/h+d;return c.Color.getColor(j,k,l)},getRandomColor:function(a,b,d){if(void 0===a&&(a=0),void 0===b&&(b=255),void 0===d&&(d=255),b>255||a>b)return c.Color.getColor(255,255,255);var e=a+Math.round(Math.random()*(b-a)),f=a+Math.round(Math.random()*(b-a)),g=a+Math.round(Math.random()*(b-a));return c.Color.getColor32(d,e,f,g)},getRGB:function(a){return a>16777215?{alpha:a>>>24,red:a>>16&255,green:a>>8&255,blue:255&a,a:a>>>24,r:a>>16&255,g:a>>8&255,b:255&a}:{alpha:255,red:a>>16&255,green:a>>8&255,blue:255&a,a:255,r:a>>16&255,g:a>>8&255,b:255&a}},getWebRGB:function(a){if("object"==typeof a)return"rgba("+a.r.toString()+","+a.g.toString()+","+a.b.toString()+","+(a.a/255).toString()+")";var b=c.Color.getRGB(a);return"rgba("+b.r.toString()+","+b.g.toString()+","+b.b.toString()+","+(b.a/255).toString()+")"},getAlpha:function(a){return a>>>24},getAlphaFloat:function(a){return(a>>>24)/255},getRed:function(a){return a>>16&255},getGreen:function(a){return a>>8&255},getBlue:function(a){return 255&a},blendNormal:function(a){return a},blendLighten:function(a,b){return b>a?b:a},blendDarken:function(a,b){return b>a?a:b},blendMultiply:function(a,b){return a*b/255},blendAverage:function(a,b){return(a+b)/2},blendAdd:function(a,b){return Math.min(255,a+b)},blendSubtract:function(a,b){return Math.max(0,a+b-255)},blendDifference:function(a,b){return Math.abs(a-b)},blendNegation:function(a,b){return 255-Math.abs(255-a-b)},blendScreen:function(a,b){return 255-((255-a)*(255-b)>>8)},blendExclusion:function(a,b){return a+b-2*a*b/255},blendOverlay:function(a,b){return 128>b?2*a*b/255:255-2*(255-a)*(255-b)/255},blendSoftLight:function(a,b){return 128>b?2*((a>>1)+64)*(b/255):255-2*(255-((a>>1)+64))*(255-b)/255},blendHardLight:function(a,b){return c.Color.blendOverlay(b,a)},blendColorDodge:function(a,b){return 255===b?b:Math.min(255,(a<<8)/(255-b))},blendColorBurn:function(a,b){return 0===b?b:Math.max(0,255-(255-a<<8)/b)},blendLinearDodge:function(a,b){return c.Color.blendAdd(a,b)},blendLinearBurn:function(a,b){return c.Color.blendSubtract(a,b)},blendLinearLight:function(a,b){return 128>b?c.Color.blendLinearBurn(a,2*b):c.Color.blendLinearDodge(a,2*(b-128))},blendVividLight:function(a,b){return 128>b?c.Color.blendColorBurn(a,2*b):c.Color.blendColorDodge(a,2*(b-128))},blendPinLight:function(a,b){return 128>b?c.Color.blendDarken(a,2*b):c.Color.blendLighten(a,2*(b-128))},blendHardMix:function(a,b){return c.Color.blendVividLight(a,b)<128?0:255},blendReflect:function(a,b){return 255===b?b:Math.min(255,a*a/(255-b))},blendGlow:function(a,b){return c.Color.blendReflect(b,a)},blendPhoenix:function(a,b){return Math.min(a,b)-Math.max(a,b)+255}},c.Physics=function(a,b){b=b||{},this.game=a,this.config=b,this.arcade=null,this.p2=null,this.ninja=null,this.box2d=null,this.chipmunk=null,this.matter=null,this.parseConfig()},c.Physics.ARCADE=0,c.Physics.P2JS=1,c.Physics.NINJA=2,c.Physics.BOX2D=3,c.Physics.CHIPMUNK=4,c.Physics.MATTERJS=5,c.Physics.prototype={parseConfig:function(){this.config.hasOwnProperty("arcade")&&this.config.arcade!==!0||!c.Physics.hasOwnProperty("Arcade")||(this.arcade=new c.Physics.Arcade(this.game)),this.config.hasOwnProperty("ninja")&&this.config.ninja===!0&&c.Physics.hasOwnProperty("Ninja")&&(this.ninja=new c.Physics.Ninja(this.game)),this.config.hasOwnProperty("p2")&&this.config.p2===!0&&c.Physics.hasOwnProperty("P2")&&(this.p2=new c.Physics.P2(this.game,this.config)),this.config.hasOwnProperty("box2d")&&this.config.box2d===!0&&c.Physics.hasOwnProperty("BOX2D")&&(this.box2d=new c.Physics.BOX2D(this.game,this.config)),this.config.hasOwnProperty("matter")&&this.config.matter===!0&&c.Physics.hasOwnProperty("Matter")&&(this.matter=new c.Physics.Matter(this.game,this.config))},startSystem:function(a){a===c.Physics.ARCADE?this.arcade=new c.Physics.Arcade(this.game):a===c.Physics.P2JS?null===this.p2?this.p2=new c.Physics.P2(this.game,this.config):this.p2.reset():a===c.Physics.NINJA?this.ninja=new c.Physics.Ninja(this.game):a===c.Physics.BOX2D?null===this.box2d?this.box2d=new c.Physics.Box2D(this.game,this.config):this.box2d.reset():a===c.Physics.MATTERJS&&(null===this.matter?this.matter=new c.Physics.Matter(this.game,this.config):this.matter.reset())},enable:function(a,b,d){void 0===b&&(b=c.Physics.ARCADE),void 0===d&&(d=!1),b===c.Physics.ARCADE?this.arcade.enable(a):b===c.Physics.P2JS&&this.p2?this.p2.enable(a,d):b===c.Physics.NINJA&&this.ninja?this.ninja.enableAABB(a):b===c.Physics.BOX2D&&this.box2d?this.box2d.enable(a):b===c.Physics.MATTERJS&&this.matter?this.matter.enable(a):console.warn(a.key+" is attempting to enable a physics body using an unknown physics system.")},preUpdate:function(){this.p2&&this.p2.preUpdate(),this.box2d&&this.box2d.preUpdate(),this.matter&&this.matter.preUpdate()},update:function(){this.p2&&this.p2.update(),this.box2d&&this.box2d.update(),this.matter&&this.matter.update()},setBoundsToWorld:function(){this.arcade&&this.arcade.setBoundsToWorld(),this.ninja&&this.ninja.setBoundsToWorld(),this.p2&&this.p2.setBoundsToWorld(),this.box2d&&this.box2d.setBoundsToWorld(),this.matter&&this.matter.setBoundsToWorld()},clear:function(){this.p2&&this.p2.clear(),this.box2d&&this.box2d.clear(),this.matter&&this.matter.clear()},reset:function(){this.p2&&this.p2.reset(),this.box2d&&this.box2d.reset(),this.matter&&this.matter.reset()},destroy:function(){this.p2&&this.p2.destroy(),this.box2d&&this.box2d.destroy(),this.matter&&this.matter.destroy(),this.arcade=null,this.ninja=null,this.p2=null,this.box2d=null,this.matter=null}},c.Physics.prototype.constructor=c.Physics,c.Particles=function(a){this.game=a,this.emitters={},this.ID=0},c.Particles.prototype={add:function(a){return this.emitters[a.name]=a,a},remove:function(a){delete this.emitters[a.name]},update:function(){for(var a in this.emitters)this.emitters[a].exists&&this.emitters[a].update()}},c.Particles.prototype.constructor=c.Particles,c.Video=function(a,b,d){if(void 0===b&&(b=null),void 0===d&&(d=null),this.game=a,this.key=b,this.width=0,this.height=0,this.type=c.VIDEO,this.disableTextureUpload=!1,this.touchLocked=!1,this.onPlay=new c.Signal,this.onChangeSource=new c.Signal,this.onComplete=new c.Signal,this.onAccess=new c.Signal,this.onError=new c.Signal,this.onTimeout=new c.Signal,this.timeout=15e3,this._timeOutID=null,this.video=null,this.videoStream=null,this.isStreaming=!1,this.retryLimit=20,this.retry=0,this.retryInterval=500,this._retryID=null,this._codeMuted=!1,this._muted=!1,this._codePaused=!1,this._paused=!1,this._pending=!1,this._autoplay=!1,this._endCallback=null,this._playCallback=null,b&&this.game.cache.checkVideoKey(b)){var e=this.game.cache.getVideo(b);e.isBlob?this.createVideoFromBlob(e.data):this.video=e.data,this.width=this.video.videoWidth,this.height=this.video.videoHeight}else d&&this.createVideoFromURL(d,!1);this.video&&!d?(this.baseTexture=new PIXI.BaseTexture(this.video),this.baseTexture.forceLoaded(this.width,this.height)):(this.baseTexture=new PIXI.BaseTexture(PIXI.TextureCache.__default.baseTexture.source),this.baseTexture.forceLoaded(this.width,this.height)),this.texture=new PIXI.Texture(this.baseTexture),this.textureFrame=new c.Frame(0,0,0,this.width,this.height,"video"),this.texture.setFrame(this.textureFrame),this.texture.valid=!1,null!==b&&this.video&&(this.texture.valid=this.video.canplay),this.snapshot=null,c.BitmapData&&(this.snapshot=new c.BitmapData(this.game,"",this.width,this.height)),!this.game.device.cocoonJS&&(this.game.device.iOS||this.game.device.android)||window.PhaserGlobal&&window.PhaserGlobal.fakeiOSTouchLock?this.setTouchLock():e&&(e.locked=!1)},c.Video.prototype={connectToMediaStream:function(a,b){return a&&b&&(this.video=a,this.videoStream=b,this.isStreaming=!0,this.baseTexture.source=this.video,this.updateTexture(null,this.video.videoWidth,this.video.videoHeight),this.onAccess.dispatch(this)),this},startMediaStream:function(a,b,c){if(void 0===a&&(a=!1),void 0===b&&(b=null),void 0===c&&(c=null),!this.game.device.getUserMedia)return this.onError.dispatch(this,"No getUserMedia"),!1;null!==this.videoStream&&(this.videoStream.active?this.videoStream.active=!1:this.videoStream.stop()),this.removeVideoElement(),this.video=document.createElement("video"),this.video.setAttribute("autoplay","autoplay"),null!==b&&(this.video.width=b),null!==c&&(this.video.height=c),this._timeOutID=window.setTimeout(this.getUserMediaTimeout.bind(this),this.timeout);try{navigator.getUserMedia({audio:a,video:!0},this.getUserMediaSuccess.bind(this),this.getUserMediaError.bind(this))}catch(d){this.getUserMediaError(d)}return this},getUserMediaTimeout:function(){clearTimeout(this._timeOutID),this.onTimeout.dispatch(this)},getUserMediaError:function(a){clearTimeout(this._timeOutID),this.onError.dispatch(this,a)},getUserMediaSuccess:function(a){clearTimeout(this._timeOutID),this.videoStream=a,void 0!==this.video.mozSrcObject?this.video.mozSrcObject=a:this.video.src=window.URL&&window.URL.createObjectURL(a)||a;var b=this;this.video.onloadeddata=function(){function a(){if(c>0)if(b.video.videoWidth>0){var d=b.video.videoWidth,e=b.video.videoHeight;isNaN(b.video.videoHeight)&&(e=d/(4/3)),b.video.play(),b.isStreaming=!0,b.baseTexture.source=b.video,b.updateTexture(null,d,e),b.onAccess.dispatch(b)}else window.setTimeout(a,500);else console.warn("Unable to connect to video stream. Webcam error?");c--}var c=10;a()}},createVideoFromBlob:function(a){var b=this;return this.video=document.createElement("video"),this.video.controls=!1,this.video.setAttribute("autoplay","autoplay"),this.video.addEventListener("loadeddata",function(a){b.updateTexture(a)},!0),this.video.src=window.URL.createObjectURL(a),this.video.canplay=!0,this},createVideoFromURL:function(a,b){return void 0===b&&(b=!1),this.texture&&(this.texture.valid=!1),this.video=document.createElement("video"),this.video.controls=!1,b&&this.video.setAttribute("autoplay","autoplay"),this.video.src=a,this.video.canplay=!0,this.video.load(),this.retry=this.retryLimit,this._retryID=window.setTimeout(this.checkVideoProgress.bind(this),this.retryInterval),this.key=a,this},updateTexture:function(a,b,c){var d=!1;(void 0===b||null===b)&&(b=this.video.videoWidth,d=!0),(void 0===c||null===c)&&(c=this.video.videoHeight),this.width=b,this.height=c,this.baseTexture.source!==this.video&&(this.baseTexture.source=this.video),this.baseTexture.forceLoaded(b,c),this.texture.frame.resize(b,c),this.texture.width=b,this.texture.height=c,this.texture.valid=!0,this.snapshot&&this.snapshot.resize(b,c),d&&null!==this.key&&(this.onChangeSource.dispatch(this,b,c),this._autoplay&&(this.video.play(),this.onPlay.dispatch(this,this.loop,this.playbackRate)))},complete:function(){this.onComplete.dispatch(this)},play:function(a,b){return void 0===a&&(a=!1),void 0===b&&(b=1),this.game.sound.onMute&&(this.game.sound.onMute.add(this.setMute,this),this.game.sound.onUnMute.add(this.unsetMute,this),this.game.sound.mute&&this.setMute()),this.game.onPause.add(this.setPause,this),this.game.onResume.add(this.setResume,this),this._endCallback=this.complete.bind(this),this.video.addEventListener("ended",this._endCallback,!0),this.video.addEventListener("webkitendfullscreen",this._endCallback,!0),a?this.video.loop="loop":this.video.loop="",this.video.playbackRate=b,this.touchLocked?this._pending=!0:(this._pending=!1,null!==this.key&&(4!==this.video.readyState?(this.retry=this.retryLimit,this._retryID=window.setTimeout(this.checkVideoProgress.bind(this),this.retryInterval)):(this._playCallback=this.playHandler.bind(this),this.video.addEventListener("playing",this._playCallback,!0))),this.video.play(),this.onPlay.dispatch(this,a,b)),this},playHandler:function(){this.video.removeEventListener("playing",this._playCallback,!0),this.updateTexture()},stop:function(){return this.game.sound.onMute&&(this.game.sound.onMute.remove(this.setMute,this),this.game.sound.onUnMute.remove(this.unsetMute,this)),this.game.onPause.remove(this.setPause,this),this.game.onResume.remove(this.setResume,this),this.isStreaming?(this.video.mozSrcObject?(this.video.mozSrcObject.stop(),this.video.src=null):(this.video.src="",this.videoStream.active?this.videoStream.active=!1:this.videoStream.getTracks?this.videoStream.getTracks().forEach(function(a){a.stop()}):this.videoStream.stop()),this.videoStream=null,this.isStreaming=!1):(this.video.removeEventListener("ended",this._endCallback,!0),this.video.removeEventListener("webkitendfullscreen",this._endCallback,!0),this.video.removeEventListener("playing",this._playCallback,!0),this.touchLocked?this._pending=!1:this.video.pause()),this},add:function(a){if(Array.isArray(a))for(var b=0;b0?this._retryID=window.setTimeout(this.checkVideoProgress.bind(this),this.retryInterval):console.warn("Phaser.Video: Unable to start downloading video in time",this.isStreaming))},setTouchLock:function(){this.game.input.touch.addTouchLockCallback(this.unlock,this),this.touchLocked=!0},unlock:function(){if(this.touchLocked=!1,this.video.play(),this.onPlay.dispatch(this,this.loop,this.playbackRate),this.key){var a=this.game.cache.getVideo(this.key);a&&!a.isBlob&&(a.locked=!1)}return!0},grab:function(a,b,c){return void 0===a&&(a=!1),void 0===b&&(b=1),void 0===c&&(c=null),null===this.snapshot?void console.warn("Video.grab cannot run because Phaser.BitmapData is unavailable"):(a&&this.snapshot.cls(),this.snapshot.copy(this.video,0,0,this.width,this.height,0,0,this.width,this.height,0,0,0,1,1,b,c),this.snapshot)},removeVideoElement:function(){if(this.video){for(this.video.parentNode&&this.video.parentNode.removeChild(this.video);this.video.hasChildNodes();)this.video.removeChild(this.video.firstChild);this.video.removeAttribute("autoplay"),this.video.removeAttribute("src"),this.video=null}},destroy:function(){this.stop(),this.removeVideoElement(),this.touchLocked&&this.game.input.touch.removeTouchLockCallback(this.unlock,this),this._retryID&&window.clearTimeout(this._retryID)}},Object.defineProperty(c.Video.prototype,"currentTime",{get:function(){return this.video?this.video.currentTime:0},set:function(a){this.video.currentTime=a}}),Object.defineProperty(c.Video.prototype,"duration",{get:function(){return this.video?this.video.duration:0}}),Object.defineProperty(c.Video.prototype,"progress",{get:function(){return this.video?this.video.currentTime/this.video.duration:0}}),Object.defineProperty(c.Video.prototype,"mute",{get:function(){return this._muted},set:function(a){if(a=a||null){if(this._muted)return;this._codeMuted=!0,this.setMute()}else{if(!this._muted)return;this._codeMuted=!1,this.unsetMute()}}}),Object.defineProperty(c.Video.prototype,"paused",{get:function(){return this._paused},set:function(a){if(a=a||null,!this.touchLocked)if(a){if(this._paused)return;this._codePaused=!0,this.setPause()}else{if(!this._paused)return;this._codePaused=!1,this.setResume()}}}),Object.defineProperty(c.Video.prototype,"volume",{get:function(){return this.video?this.video.volume:1},set:function(a){0>a?a=0:a>1&&(a=1),this.video&&(this.video.volume=a)}}),Object.defineProperty(c.Video.prototype,"playbackRate",{get:function(){return this.video?this.video.playbackRate:1},set:function(a){this.video&&(this.video.playbackRate=a)}}),Object.defineProperty(c.Video.prototype,"loop",{get:function(){return this.video?this.video.loop:!1},set:function(a){a&&this.video?this.video.loop="loop":this.video&&(this.video.loop="")}}),Object.defineProperty(c.Video.prototype,"playing",{get:function(){return!(this.video.paused&&this.video.ended)}}),c.Video.prototype.constructor=c.Video,void 0===PIXI.blendModes&&(PIXI.blendModes=c.blendModes),void 0===PIXI.scaleModes&&(PIXI.scaleModes=c.scaleModes),void 0===PIXI.Texture.emptyTexture&&(PIXI.Texture.emptyTexture=new PIXI.Texture(new PIXI.BaseTexture)),void 0===PIXI.DisplayObject._tempMatrix&&(PIXI.DisplayObject._tempMatrix=new PIXI.Matrix),void 0===PIXI.RenderTexture.tempMatrix&&(PIXI.RenderTexture.tempMatrix=new PIXI.Matrix),PIXI.Graphics&&void 0===PIXI.Graphics.POLY&&(PIXI.Graphics.POLY=c.POLYGON,PIXI.Graphics.RECT=c.RECTANGLE,PIXI.Graphics.CIRC=c.CIRCLE,PIXI.Graphics.ELIP=c.ELLIPSE,PIXI.Graphics.RREC=c.ROUNDEDRECTANGLE),PIXI.TextureSilentFail=!0,"undefined"!=typeof exports?("undefined"!=typeof module&&module.exports&&(exports=module.exports=c),exports.Phaser=c):"undefined"!=typeof define&&define.amd?define("Phaser",function(){return b.Phaser=c}()):b.Phaser=c,c}.call(this); +(function(){var a=this,b=b||{};return b.game=null,b.WEBGL_RENDERER=0,b.CANVAS_RENDERER=1,b.VERSION="v2.2.9",b._UID=0,"undefined"!=typeof Float32Array?(b.Float32Array=Float32Array,b.Uint16Array=Uint16Array,b.Uint32Array=Uint32Array,b.ArrayBuffer=ArrayBuffer):(b.Float32Array=Array,b.Uint16Array=Array),b.PI_2=2*Math.PI,b.RAD_TO_DEG=180/Math.PI,b.DEG_TO_RAD=Math.PI/180,b.RETINA_PREFIX="@2x",b.DisplayObject=function(){this.position=new b.Point(0,0),this.scale=new b.Point(1,1),this.pivot=new b.Point(0,0),this.rotation=0,this.alpha=1,this.visible=!0,this.hitArea=null,this.renderable=!1,this.parent=null,this.stage=null,this.worldAlpha=1,this.worldTransform=new b.Matrix,this.worldPosition=new b.Point(0,0),this.worldScale=new b.Point(1,1),this.worldRotation=0,this.filterArea=null,this._sr=0,this._cr=1,this._bounds=new b.Rectangle(0,0,1,1),this._currentBounds=null,this._mask=null,this._cacheAsBitmap=!1,this._cacheIsDirty=!1},b.DisplayObject.prototype.constructor=b.DisplayObject,b.DisplayObject.prototype={destroy:function(){if(this.children){for(var a=this.children.length;a--;)this.children[a].destroy();this.children=[]}this.hitArea=null,this.parent=null,this.stage=null,this.worldTransform=null,this.filterArea=null,this.renderable=!1,this._bounds=null,this._currentBounds=null,this._mask=null,this._destroyCachedSprite()},updateTransform:function(a){if(!a&&!this.parent&&!this.game)return this;var c=this.parent;a?c=a:this.parent||(c=this.game.world);var d,e,f,g,h,i,j=c.worldTransform,k=this.worldTransform;return this.rotation%b.PI_2?(this.rotation!==this.rotationCache&&(this.rotationCache=this.rotation,this._sr=Math.sin(this.rotation),this._cr=Math.cos(this.rotation)),d=this._cr*this.scale.x,e=this._sr*this.scale.x,f=-this._sr*this.scale.y,g=this._cr*this.scale.y,h=this.position.x,i=this.position.y,(this.pivot.x||this.pivot.y)&&(h-=this.pivot.x*d+this.pivot.y*f,i-=this.pivot.x*e+this.pivot.y*g),k.a=d*j.a+e*j.c,k.b=d*j.b+e*j.d,k.c=f*j.a+g*j.c,k.d=f*j.b+g*j.d,k.tx=h*j.a+i*j.c+j.tx,k.ty=h*j.b+i*j.d+j.ty):(d=this.scale.x,g=this.scale.y,h=this.position.x-this.pivot.x*d,i=this.position.y-this.pivot.y*g,k.a=d*j.a,k.b=d*j.b,k.c=g*j.c,k.d=g*j.d,k.tx=h*j.a+i*j.c+j.tx,k.ty=h*j.b+i*j.d+j.ty),this.worldAlpha=this.alpha*c.worldAlpha,this.worldPosition.set(k.tx,k.ty),this.worldScale.set(this.scale.x*Math.sqrt(k.a*k.a+k.c*k.c),this.scale.y*Math.sqrt(k.b*k.b+k.d*k.d)),this.worldRotation=Math.atan2(-k.c,k.d),this._currentBounds=null,this.transformCallback&&this.transformCallback.call(this.transformCallbackContext,k,j),this},setStageReference:function(a){return this.stage=a,this},preUpdate:function(){},generateTexture:function(a,c,d){var e=this.getLocalBounds(),f=new b.RenderTexture(0|e.width,0|e.height,d,c,a);return b.DisplayObject._tempMatrix.tx=-e.x,b.DisplayObject._tempMatrix.ty=-e.y,f.render(this,b.DisplayObject._tempMatrix),f},updateCache:function(){return this._generateCachedSprite(),this},toGlobal:function(a){return this.updateTransform(),this.worldTransform.apply(a)},toLocal:function(a,b){return b&&(a=b.toGlobal(a)),this.updateTransform(),this.worldTransform.applyInverse(a)},_renderCachedSprite:function(a){this._cachedSprite.worldAlpha=this.worldAlpha,a.gl?b.Sprite.prototype._renderWebGL.call(this._cachedSprite,a):b.Sprite.prototype._renderCanvas.call(this._cachedSprite,a)},_generateCachedSprite:function(){this._cacheAsBitmap=!1;var a=this.getLocalBounds();if(a.width=Math.max(1,Math.ceil(a.width)),a.height=Math.max(1,Math.ceil(a.height)),this.updateTransform(),this._cachedSprite)this._cachedSprite.texture.resize(a.width,a.height);else{var c=new b.RenderTexture(a.width,a.height);this._cachedSprite=new b.Sprite(c),this._cachedSprite.worldTransform=this.worldTransform}var d=this._filters;this._filters=null,this._cachedSprite.filters=d,b.DisplayObject._tempMatrix.tx=-a.x,b.DisplayObject._tempMatrix.ty=-a.y,this._cachedSprite.texture.render(this,b.DisplayObject._tempMatrix,!0),this._cachedSprite.anchor.x=-(a.x/a.width),this._cachedSprite.anchor.y=-(a.y/a.height),this._filters=d,this._cacheAsBitmap=!0},_destroyCachedSprite:function(){this._cachedSprite&&(this._cachedSprite.texture.destroy(!0),this._cachedSprite=null)}},b.DisplayObject.prototype.displayObjectUpdateTransform=b.DisplayObject.prototype.updateTransform,Object.defineProperties(b.DisplayObject.prototype,{x:{get:function(){return this.position.x},set:function(a){this.position.x=a}},y:{get:function(){return this.position.y},set:function(a){this.position.y=a}},worldVisible:{get:function(){if(this.visible){var a=this.parent;do{if(!a.visible)return!1;a=a.parent}while(a);return!0}return!1}},mask:{get:function(){return this._mask},set:function(a){this._mask&&(this._mask.isMask=!1),this._mask=a,a&&(this._mask.isMask=!0)}},filters:{get:function(){return this._filters},set:function(a){if(Array.isArray(a)){for(var c=[],d=0;d=0&&b<=this.children.length)return a.parent&&a.parent.removeChild(a),a.parent=this,this.children.splice(b,0,a),this.stage&&a.setStageReference(this.stage),a;throw new Error(a+"addChildAt: The index "+b+" supplied is out of bounds "+this.children.length)},b.DisplayObjectContainer.prototype.swapChildren=function(a,b){if(a!==b){var c=this.getChildIndex(a),d=this.getChildIndex(b);if(0>c||0>d)throw new Error("swapChildren: Both the supplied DisplayObjects must be a child of the caller.");this.children[c]=b,this.children[d]=a}},b.DisplayObjectContainer.prototype.getChildIndex=function(a){var b=this.children.indexOf(a);if(-1===b)throw new Error("The supplied DisplayObject must be a child of the caller");return b},b.DisplayObjectContainer.prototype.setChildIndex=function(a,b){if(0>b||b>=this.children.length)throw new Error("The supplied index is out of bounds");var c=this.getChildIndex(a);this.children.splice(c,1),this.children.splice(b,0,a)},b.DisplayObjectContainer.prototype.getChildAt=function(a){if(0>a||a>=this.children.length)throw new Error("getChildAt: Supplied index "+a+" does not exist in the child list, or the supplied DisplayObject must be a child of the caller");return this.children[a]},b.DisplayObjectContainer.prototype.removeChild=function(a){var b=this.children.indexOf(a);if(-1!==b)return this.removeChildAt(b)},b.DisplayObjectContainer.prototype.removeChildAt=function(a){var b=this.getChildAt(a);return this.stage&&b.removeStageReference(),b.parent=void 0,this.children.splice(a,1),b},b.DisplayObjectContainer.prototype.removeChildren=function(a,b){var c=a||0,d="number"==typeof b?b:this.children.length,e=d-c;if(e>0&&d>=e){for(var f=this.children.splice(c,e),g=0;gc?g:c,h=h>d?h:d)}if(!i)return b.EmptyRectangle;var l=this._bounds;return l.x=e,l.y=f,l.width=g-e,l.height=h-f,l},b.DisplayObjectContainer.prototype.getLocalBounds=function(){var a=this.worldTransform;this.worldTransform=b.identityMatrix;for(var c=0;ci){i*=-1;var s=d;d=-e,e=-s}if(0>l){l*=-1;var s=f;f=-g,g=-s}q=i*e+m,o=i*d+m,r=l*g+n,p=l*f+n}else{var t=i*e+k*g+m,u=l*g+j*e+n,v=i*d+k*g+m,w=l*g+j*d+n,x=i*d+k*f+m,y=l*f+j*d+n,z=i*e+k*f+m,A=l*f+j*e+n;q=q>t?t:q,q=q>v?v:q,q=q>x?x:q,q=q>z?z:q,r=r>u?u:r,r=r>w?w:r,r=r>y?y:r,r=r>A?A:r,o=t>o?t:o,o=v>o?v:o,o=x>o?x:o,o=z>o?z:o,p=u>p?u:p,p=w>p?w:p,p=y>p?y:p,p=A>p?A:p}var B=this._bounds;return B.x=q,B.width=o-q,B.y=r,B.height=p-r,this._currentBounds=B,B},b.Sprite.prototype._renderWebGL=function(a,b){if(this.visible&&!(this.alpha<=0)&&this.renderable){var c=this.worldTransform;if(b&&(c=b),this._mask||this._filters){var d=a.spriteBatch;this._filters&&(d.flush(),a.filterManager.pushFilter(this._filterBlock)),this._mask&&(d.stop(),a.maskManager.pushMask(this.mask,a),d.start()),d.render(this);for(var e=0;e>16&255)/255,(a>>8&255)/255,(255&a)/255]},b.rgb2hex=function(a){return(255*a[0]<<16)+(255*a[1]<<8)+255*a[2]},b.canUseNewCanvasBlendModes=function(){if(void 0===document)return!1;var a="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAQAAAABAQMAAADD8p2OAAAAA1BMVEX/",c="AAAACklEQVQI12NgAAAAAgAB4iG8MwAAAABJRU5ErkJggg==",d=new Image;d.src=a+"AP804Oa6"+c;var e=new Image;e.src=a+"/wCKxvRF"+c;var f=b.CanvasPool.create(this,6,1),g=f.getContext("2d");if(g.globalCompositeOperation="multiply",g.drawImage(d,0,0),g.drawImage(e,2,0),!g.getImageData(2,0,1,1))return!1;var h=g.getImageData(2,0,1,1).data;return b.CanvasPool.remove(this),255===h[0]&&0===h[1]&&0===h[2]},b.getNextPowerOfTwo=function(a){if(a>0&&0===(a&a-1))return a;for(var b=1;a>b;)b<<=1;return b},b.isPowerOfTwo=function(a,b){return a>0&&0===(a&a-1)&&b>0&&0===(b&b-1)},b.CanvasPool={create:function(a,c,d){var e,f=b.CanvasPool.getFirst();if(-1===f){var g={parent:a,canvas:document.createElement("canvas")};b.CanvasPool.pool.push(g),e=g.canvas}else b.CanvasPool.pool[f].parent=a,e=b.CanvasPool.pool[f].canvas;return void 0!==c&&(e.width=c,e.height=d),e},getFirst:function(){for(var a=b.CanvasPool.pool,c=0;cd;d+=6,e+=4)this.indices[d+0]=e+0,this.indices[d+1]=e+1,this.indices[d+2]=e+2,this.indices[d+3]=e+0,this.indices[d+4]=e+2,this.indices[d+5]=e+3;this.drawing=!1,this.currentBatchSize=0,this.currentBaseTexture=null,this.dirty=!0,this.textures=[],this.blendModes=[],this.shaders=[],this.sprites=[],this.defaultShader=new b.AbstractFilter(["precision lowp float;","varying vec2 vTextureCoord;","varying vec4 vColor;","uniform sampler2D uSampler;","void main(void) {"," gl_FragColor = texture2D(uSampler, vTextureCoord) * vColor ;","}"])},b.WebGLSpriteBatch.prototype.setContext=function(a){this.gl=a,this.vertexBuffer=a.createBuffer(),this.indexBuffer=a.createBuffer(),a.bindBuffer(a.ELEMENT_ARRAY_BUFFER,this.indexBuffer),a.bufferData(a.ELEMENT_ARRAY_BUFFER,this.indices,a.STATIC_DRAW),a.bindBuffer(a.ARRAY_BUFFER,this.vertexBuffer),a.bufferData(a.ARRAY_BUFFER,this.vertices,a.DYNAMIC_DRAW),this.currentBlendMode=99999;var c=new b.PixiShader(a);c.fragmentSrc=this.defaultShader.fragmentSrc,c.uniforms={},c.init(),this.defaultShader.shaders[a.id]=c},b.WebGLSpriteBatch.prototype.begin=function(a){this.renderSession=a,this.shader=this.renderSession.shaderManager.defaultShader,this.start()},b.WebGLSpriteBatch.prototype.end=function(){this.flush()},b.WebGLSpriteBatch.prototype.render=function(a,b){var c=a.texture,d=a.worldTransform;b&&(d=b),this.currentBatchSize>=this.size&&(this.flush(),this.currentBaseTexture=c.baseTexture);var e=c._uvs;if(e){var f,g,h,i,j=a.anchor.x,k=a.anchor.y;if(c.trim){var l=c.trim;g=l.x-j*l.width,f=g+c.crop.width,i=l.y-k*l.height,h=i+c.crop.height}else f=c.frame.width*(1-j),g=c.frame.width*-j,h=c.frame.height*(1-k),i=c.frame.height*-k;var m=4*this.currentBatchSize*this.vertSize,n=c.baseTexture.resolution,o=d.a/n,p=d.b/n,q=d.c/n,r=d.d/n,s=d.tx,t=d.ty,u=this.colors,v=this.positions;this.renderSession.roundPixels?(v[m]=o*g+q*i+s|0,v[m+1]=r*i+p*g+t|0,v[m+5]=o*f+q*i+s|0,v[m+6]=r*i+p*f+t|0,v[m+10]=o*f+q*h+s|0,v[m+11]=r*h+p*f+t|0,v[m+15]=o*g+q*h+s|0,v[m+16]=r*h+p*g+t|0):(v[m]=o*g+q*i+s,v[m+1]=r*i+p*g+t,v[m+5]=o*f+q*i+s,v[m+6]=r*i+p*f+t,v[m+10]=o*f+q*h+s,v[m+11]=r*h+p*f+t,v[m+15]=o*g+q*h+s,v[m+16]=r*h+p*g+t),v[m+2]=e.x0,v[m+3]=e.y0,v[m+7]=e.x1,v[m+8]=e.y1,v[m+12]=e.x2,v[m+13]=e.y2,v[m+17]=e.x3,v[m+18]=e.y3;var w=a.tint;u[m+4]=u[m+9]=u[m+14]=u[m+19]=(w>>16)+(65280&w)+((255&w)<<16)+(255*a.worldAlpha<<24),this.sprites[this.currentBatchSize++]=a}},b.WebGLSpriteBatch.prototype.renderTilingSprite=function(a){var c=a.tilingTexture;this.currentBatchSize>=this.size&&(this.flush(),this.currentBaseTexture=c.baseTexture),a._uvs||(a._uvs=new b.TextureUvs);var d=a._uvs,e=c.baseTexture.width,f=c.baseTexture.height;a.tilePosition.x%=e*a.tileScaleOffset.x,a.tilePosition.y%=f*a.tileScaleOffset.y;var g=a.tilePosition.x/(e*a.tileScaleOffset.x),h=a.tilePosition.y/(f*a.tileScaleOffset.y),i=a.width/e/(a.tileScale.x*a.tileScaleOffset.x),j=a.height/f/(a.tileScale.y*a.tileScaleOffset.y);d.x0=0-g,d.y0=0-h,d.x1=1*i-g,d.y1=0-h,d.x2=1*i-g,d.y2=1*j-h,d.x3=0-g,d.y3=1*j-h;var k=a.tint,l=(k>>16)+(65280&k)+((255&k)<<16)+(255*a.worldAlpha<<24),m=this.positions,n=this.colors,o=a.width,p=a.height,q=a.anchor.x,r=a.anchor.y,s=o*(1-q),t=o*-q,u=p*(1-r),v=p*-r,w=4*this.currentBatchSize*this.vertSize,x=c.baseTexture.resolution,y=a.worldTransform,z=y.a/x,A=y.b/x,B=y.c/x,C=y.d/x,D=y.tx,E=y.ty;m[w++]=z*t+B*v+D,m[w++]=C*v+A*t+E,m[w++]=d.x0,m[w++]=d.y0,n[w++]=l,m[w++]=z*s+B*v+D,m[w++]=C*v+A*s+E,m[w++]=d.x1,m[w++]=d.y1,n[w++]=l,m[w++]=z*s+B*u+D,m[w++]=C*u+A*s+E,m[w++]=d.x2,m[w++]=d.y2,n[w++]=l,m[w++]=z*t+B*u+D,m[w++]=C*u+A*t+E,m[w++]=d.x3,m[w++]=d.y3,n[w++]=l,this.sprites[this.currentBatchSize++]=a},b.WebGLSpriteBatch.prototype.flush=function(){if(0!==this.currentBatchSize){var a,c=this.gl;if(this.dirty){this.dirty=!1,c.activeTexture(c.TEXTURE0),c.bindBuffer(c.ARRAY_BUFFER,this.vertexBuffer),c.bindBuffer(c.ELEMENT_ARRAY_BUFFER,this.indexBuffer),a=this.defaultShader.shaders[c.id];var d=4*this.vertSize;c.vertexAttribPointer(a.aVertexPosition,2,c.FLOAT,!1,d,0),c.vertexAttribPointer(a.aTextureCoord,2,c.FLOAT,!1,d,8),c.vertexAttribPointer(a.colorAttribute,4,c.UNSIGNED_BYTE,!0,d,16)}if(this.currentBatchSize>.5*this.size)c.bufferSubData(c.ARRAY_BUFFER,0,this.vertices);else{var e=this.positions.subarray(0,4*this.currentBatchSize*this.vertSize);c.bufferSubData(c.ARRAY_BUFFER,0,e)}for(var f,g,h,i,j=0,k=0,l=null,m=this.renderSession.blendModeManager.currentBlendMode,n=null,o=!1,p=!1,q=0,r=this.currentBatchSize;r>q;q++){i=this.sprites[q],f=i.tilingTexture?i.tilingTexture.baseTexture:i.texture.baseTexture,g=i.blendMode,h=i.shader||this.defaultShader,o=m!==g,p=n!==h;var s=f.skipRender;if(s&&i.children.length>0&&(s=!1),(l!==f&&!s||o||p)&&(this.renderBatch(l,j,k),k=q,j=0,l=f,o&&(m=g,this.renderSession.blendModeManager.setBlendMode(m)),p)){n=h,a=n.shaders[c.id],a||(a=new b.PixiShader(c),a.fragmentSrc=n.fragmentSrc,a.uniforms=n.uniforms,a.init(),n.shaders[c.id]=a),this.renderSession.shaderManager.setShader(a),a.dirty&&a.syncUniforms();var t=this.renderSession.projection;c.uniform2f(a.projectionVector,t.x,t.y);var u=this.renderSession.offset;c.uniform2f(a.offsetVector,u.x,u.y)}j++}this.renderBatch(l,j,k),this.currentBatchSize=0}},b.WebGLSpriteBatch.prototype.renderBatch=function(a,b,c){if(0!==b){var d=this.gl;if(a._dirty[d.id]){if(!this.renderSession.renderer.updateTexture(a))return}else d.bindTexture(d.TEXTURE_2D,a._glTextures[d.id]);d.drawElements(d.TRIANGLES,6*b,d.UNSIGNED_SHORT,6*c*2),this.renderSession.drawCount++}},b.WebGLSpriteBatch.prototype.stop=function(){this.flush(),this.dirty=!0},b.WebGLSpriteBatch.prototype.start=function(){this.dirty=!0},b.WebGLSpriteBatch.prototype.destroy=function(){this.vertices=null,this.indices=null,this.gl.deleteBuffer(this.vertexBuffer),this.gl.deleteBuffer(this.indexBuffer),this.currentBaseTexture=null,this.gl=null},b.WebGLFastSpriteBatch=function(a){this.vertSize=10,this.maxSize=6e3,this.size=this.maxSize;var c=4*this.size*this.vertSize,d=6*this.maxSize;this.vertices=new b.Float32Array(c),this.indices=new b.Uint16Array(d),this.vertexBuffer=null,this.indexBuffer=null,this.lastIndexCount=0;for(var e=0,f=0;d>e;e+=6,f+=4)this.indices[e+0]=f+0,this.indices[e+1]=f+1,this.indices[e+2]=f+2,this.indices[e+3]=f+0,this.indices[e+4]=f+2,this.indices[e+5]=f+3;this.drawing=!1,this.currentBatchSize=0,this.currentBaseTexture=null,this.currentBlendMode=0,this.renderSession=null,this.shader=null,this.matrix=null,this.setContext(a)},b.WebGLFastSpriteBatch.prototype.constructor=b.WebGLFastSpriteBatch,b.WebGLFastSpriteBatch.prototype.setContext=function(a){this.gl=a,this.vertexBuffer=a.createBuffer(),this.indexBuffer=a.createBuffer(),a.bindBuffer(a.ELEMENT_ARRAY_BUFFER,this.indexBuffer),a.bufferData(a.ELEMENT_ARRAY_BUFFER,this.indices,a.STATIC_DRAW),a.bindBuffer(a.ARRAY_BUFFER,this.vertexBuffer),a.bufferData(a.ARRAY_BUFFER,this.vertices,a.DYNAMIC_DRAW)},b.WebGLFastSpriteBatch.prototype.begin=function(a,b){this.renderSession=b,this.shader=this.renderSession.shaderManager.fastShader,this.matrix=a.worldTransform.toArray(!0),this.start()},b.WebGLFastSpriteBatch.prototype.end=function(){this.flush()},b.WebGLFastSpriteBatch.prototype.render=function(a){var b=a.children,c=b[0];if(c.texture._uvs){this.currentBaseTexture=c.texture.baseTexture,c.blendMode!==this.renderSession.blendModeManager.currentBlendMode&&(this.flush(),this.renderSession.blendModeManager.setBlendMode(c.blendMode));for(var d=0,e=b.length;e>d;d++)this.renderSprite(b[d]);this.flush()}},b.WebGLFastSpriteBatch.prototype.renderSprite=function(a){if(a.visible&&(a.texture.baseTexture===this.currentBaseTexture||a.texture.baseTexture.skipRender||(this.flush(),this.currentBaseTexture=a.texture.baseTexture,a.texture._uvs))){var b,c,d,e,f,g,h,i,j=this.vertices;if(b=a.texture._uvs,c=a.texture.frame.width,d=a.texture.frame.height,a.texture.trim){var k=a.texture.trim;f=k.x-a.anchor.x*k.width,e=f+a.texture.crop.width,h=k.y-a.anchor.y*k.height,g=h+a.texture.crop.height}else e=a.texture.frame.width*(1-a.anchor.x),f=a.texture.frame.width*-a.anchor.x,g=a.texture.frame.height*(1-a.anchor.y),h=a.texture.frame.height*-a.anchor.y;i=4*this.currentBatchSize*this.vertSize,j[i++]=f,j[i++]=h,j[i++]=a.position.x,j[i++]=a.position.y,j[i++]=a.scale.x,j[i++]=a.scale.y,j[i++]=a.rotation,j[i++]=b.x0,j[i++]=b.y1,j[i++]=a.alpha,j[i++]=e,j[i++]=h,j[i++]=a.position.x,j[i++]=a.position.y,j[i++]=a.scale.x,j[i++]=a.scale.y,j[i++]=a.rotation,j[i++]=b.x1,j[i++]=b.y1,j[i++]=a.alpha,j[i++]=e,j[i++]=g,j[i++]=a.position.x,j[i++]=a.position.y,j[i++]=a.scale.x,j[i++]=a.scale.y,j[i++]=a.rotation,j[i++]=b.x2,j[i++]=b.y2,j[i++]=a.alpha,j[i++]=f,j[i++]=g,j[i++]=a.position.x,j[i++]=a.position.y,j[i++]=a.scale.x,j[i++]=a.scale.y,j[i++]=a.rotation,j[i++]=b.x3,j[i++]=b.y3,j[i++]=a.alpha,this.currentBatchSize++,this.currentBatchSize>=this.size&&this.flush()}},b.WebGLFastSpriteBatch.prototype.flush=function(){if(0!==this.currentBatchSize){var a=this.gl;if(this.currentBaseTexture._glTextures[a.id]||this.renderSession.renderer.updateTexture(this.currentBaseTexture,a),a.bindTexture(a.TEXTURE_2D,this.currentBaseTexture._glTextures[a.id]),this.currentBatchSize>.5*this.size)a.bufferSubData(a.ARRAY_BUFFER,0,this.vertices);else{var b=this.vertices.subarray(0,4*this.currentBatchSize*this.vertSize);a.bufferSubData(a.ARRAY_BUFFER,0,b)}a.drawElements(a.TRIANGLES,6*this.currentBatchSize,a.UNSIGNED_SHORT,0),this.currentBatchSize=0,this.renderSession.drawCount++}},b.WebGLFastSpriteBatch.prototype.stop=function(){this.flush()},b.WebGLFastSpriteBatch.prototype.start=function(){var a=this.gl;a.activeTexture(a.TEXTURE0),a.bindBuffer(a.ARRAY_BUFFER,this.vertexBuffer),a.bindBuffer(a.ELEMENT_ARRAY_BUFFER,this.indexBuffer);var b=this.renderSession.projection;a.uniform2f(this.shader.projectionVector,b.x,b.y),a.uniformMatrix3fv(this.shader.uMatrix,!1,this.matrix);var c=4*this.vertSize;a.vertexAttribPointer(this.shader.aVertexPosition,2,a.FLOAT,!1,c,0),a.vertexAttribPointer(this.shader.aPositionCoord,2,a.FLOAT,!1,c,8),a.vertexAttribPointer(this.shader.aScale,2,a.FLOAT,!1,c,16),a.vertexAttribPointer(this.shader.aRotation,1,a.FLOAT,!1,c,24),a.vertexAttribPointer(this.shader.aTextureCoord,2,a.FLOAT,!1,c,28),a.vertexAttribPointer(this.shader.colorAttribute,1,a.FLOAT,!1,c,36)},b.WebGLFilterManager=function(){this.filterStack=[],this.offsetX=0,this.offsetY=0},b.WebGLFilterManager.prototype.constructor=b.WebGLFilterManager,b.WebGLFilterManager.prototype.setContext=function(a){this.gl=a,this.texturePool=[],this.initShaderBuffers()},b.WebGLFilterManager.prototype.begin=function(a,b){this.renderSession=a,this.defaultShader=a.shaderManager.defaultShader;var c=this.renderSession.projection;this.width=2*c.x,this.height=2*-c.y,this.buffer=b},b.WebGLFilterManager.prototype.pushFilter=function(a){var c=this.gl,d=this.renderSession.projection,e=this.renderSession.offset;a._filterArea=a.target.filterArea||a.target.getBounds(),a._previous_stencil_mgr=this.renderSession.stencilManager,this.renderSession.stencilManager=new b.WebGLStencilManager,this.renderSession.stencilManager.setContext(c),c.disable(c.STENCIL_TEST),this.filterStack.push(a);var f=a.filterPasses[0];this.offsetX+=a._filterArea.x,this.offsetY+=a._filterArea.y;var g=this.texturePool.pop();g?g.resize(this.width*this.renderSession.resolution,this.height*this.renderSession.resolution):g=new b.FilterTexture(this.gl,this.width*this.renderSession.resolution,this.height*this.renderSession.resolution),c.bindTexture(c.TEXTURE_2D,g.texture);var h=a._filterArea,i=f.padding;h.x-=i,h.y-=i,h.width+=2*i,h.height+=2*i,h.x<0&&(h.x=0),h.width>this.width&&(h.width=this.width),h.y<0&&(h.y=0),h.height>this.height&&(h.height=this.height),c.bindFramebuffer(c.FRAMEBUFFER,g.frameBuffer),c.viewport(0,0,h.width*this.renderSession.resolution,h.height*this.renderSession.resolution),d.x=h.width/2,d.y=-h.height/2,e.x=-h.x,e.y=-h.y,c.colorMask(!0,!0,!0,!0),c.clearColor(0,0,0,0),c.clear(c.COLOR_BUFFER_BIT),a._glFilterTexture=g},b.WebGLFilterManager.prototype.popFilter=function(){var a=this.gl,c=this.filterStack.pop(),d=c._filterArea,e=c._glFilterTexture,f=this.renderSession.projection,g=this.renderSession.offset;if(c.filterPasses.length>1){a.viewport(0,0,d.width*this.renderSession.resolution,d.height*this.renderSession.resolution),a.bindBuffer(a.ARRAY_BUFFER,this.vertexBuffer),this.vertexArray[0]=0,this.vertexArray[1]=d.height,this.vertexArray[2]=d.width,this.vertexArray[3]=d.height,this.vertexArray[4]=0,this.vertexArray[5]=0,this.vertexArray[6]=d.width,this.vertexArray[7]=0,a.bufferSubData(a.ARRAY_BUFFER,0,this.vertexArray),a.bindBuffer(a.ARRAY_BUFFER,this.uvBuffer),this.uvArray[2]=d.width/this.width,this.uvArray[5]=d.height/this.height,this.uvArray[6]=d.width/this.width,this.uvArray[7]=d.height/this.height,a.bufferSubData(a.ARRAY_BUFFER,0,this.uvArray);var h=e,i=this.texturePool.pop();i||(i=new b.FilterTexture(this.gl,this.width*this.renderSession.resolution,this.height*this.renderSession.resolution)),i.resize(this.width*this.renderSession.resolution,this.height*this.renderSession.resolution),a.bindFramebuffer(a.FRAMEBUFFER,i.frameBuffer),a.clear(a.COLOR_BUFFER_BIT),a.disable(a.BLEND);for(var j=0;j0?a.enable(a.STENCIL_TEST):a.disable(a.STENCIL_TEST),this.applyFilterPass(m,d,n,o),this.texturePool.push(e),c._glFilterTexture=null},b.WebGLFilterManager.prototype.applyFilterPass=function(a,c,d,e){var f=this.gl,g=a.shaders[f.id];g||(g=new b.PixiShader(f),g.fragmentSrc=a.fragmentSrc,g.uniforms=a.uniforms,g.init(),a.shaders[f.id]=g),this.renderSession.shaderManager.setShader(g),f.uniform2f(g.projectionVector,d/2,-e/2),f.uniform2f(g.offsetVector,0,0),a.uniforms.dimensions&&(a.uniforms.dimensions.value[0]=this.width,a.uniforms.dimensions.value[1]=this.height,a.uniforms.dimensions.value[2]=this.vertexArray[0],a.uniforms.dimensions.value[3]=this.vertexArray[5]),g.syncUniforms(),f.bindBuffer(f.ARRAY_BUFFER,this.vertexBuffer),f.vertexAttribPointer(g.aVertexPosition,2,f.FLOAT,!1,0,0),f.bindBuffer(f.ARRAY_BUFFER,this.uvBuffer),f.vertexAttribPointer(g.aTextureCoord,2,f.FLOAT,!1,0,0),f.bindBuffer(f.ARRAY_BUFFER,this.colorBuffer),f.vertexAttribPointer(g.colorAttribute,2,f.FLOAT,!1,0,0),f.bindBuffer(f.ELEMENT_ARRAY_BUFFER,this.indexBuffer),f.drawElements(f.TRIANGLES,6,f.UNSIGNED_SHORT,0),this.renderSession.drawCount++},b.WebGLFilterManager.prototype.initShaderBuffers=function(){var a=this.gl;this.vertexBuffer=a.createBuffer(),this.uvBuffer=a.createBuffer(),this.colorBuffer=a.createBuffer(),this.indexBuffer=a.createBuffer(),this.vertexArray=new b.Float32Array([0,0,1,0,0,1,1,1]),a.bindBuffer(a.ARRAY_BUFFER,this.vertexBuffer),a.bufferData(a.ARRAY_BUFFER,this.vertexArray,a.STATIC_DRAW),this.uvArray=new b.Float32Array([0,0,1,0,0,1,1,1]),a.bindBuffer(a.ARRAY_BUFFER,this.uvBuffer),a.bufferData(a.ARRAY_BUFFER,this.uvArray,a.STATIC_DRAW),this.colorArray=new b.Float32Array([1,16777215,1,16777215,1,16777215,1,16777215]),a.bindBuffer(a.ARRAY_BUFFER,this.colorBuffer),a.bufferData(a.ARRAY_BUFFER,this.colorArray,a.STATIC_DRAW),a.bindBuffer(a.ELEMENT_ARRAY_BUFFER,this.indexBuffer),a.bufferData(a.ELEMENT_ARRAY_BUFFER,new Uint16Array([0,1,2,1,3,2]),a.STATIC_DRAW)},b.WebGLFilterManager.prototype.destroy=function(){var a=this.gl;this.filterStack=null,this.offsetX=0,this.offsetY=0;for(var b=0;b=0;a--){var c=this._glTextures[a],d=b.glContexts[a];d&&c&&d.deleteTexture(c)}this._glTextures.length=0,this.dirty()},b.BaseTexture.fromCanvas=function(a,c){return 0===a.width&&(a.width=1),0===a.height&&(a.height=1),new b.BaseTexture(a,c)},b.TextureSilentFail=!1,b.Texture=function(a,c,d,e){this.noFrame=!1,c||(this.noFrame=!0,c=new b.Rectangle(0,0,1,1)),a instanceof b.Texture&&(a=a.baseTexture),this.baseTexture=a,this.frame=c,this.trim=e,this.valid=!1,this.isTiling=!1,this.requiresUpdate=!1,this.requiresReTint=!1,this._uvs=null,this.width=0,this.height=0,this.crop=d||new b.Rectangle(0,0,1,1),a.hasLoaded&&(this.noFrame&&(c=new b.Rectangle(0,0,a.width,a.height)),this.setFrame(c))},b.Texture.prototype.constructor=b.Texture,b.Texture.prototype.onBaseTextureLoaded=function(){var a=this.baseTexture;this.noFrame&&(this.frame=new b.Rectangle(0,0,a.width,a.height)),this.setFrame(this.frame)},b.Texture.prototype.destroy=function(a){a&&this.baseTexture.destroy(),this.valid=!1},b.Texture.prototype.setFrame=function(a){if(this.noFrame=!1,this.frame=a,this.width=a.width,this.height=a.height,this.crop.x=a.x,this.crop.y=a.y,this.crop.width=a.width,this.crop.height=a.height,!this.trim&&(a.x+a.width>this.baseTexture.width||a.y+a.height>this.baseTexture.height)){if(!b.TextureSilentFail)throw new Error("Texture Error: frame does not fit inside the base Texture dimensions "+this);return void(this.valid=!1)}this.valid=a&&a.width&&a.height&&this.baseTexture.source&&this.baseTexture.hasLoaded,this.trim&&(this.width=this.trim.width,this.height=this.trim.height,this.frame.width=this.trim.width,this.frame.height=this.trim.height),this.valid&&this._updateUvs()},b.Texture.prototype._updateUvs=function(){this._uvs||(this._uvs=new b.TextureUvs);var a=this.crop,c=this.baseTexture.width,d=this.baseTexture.height;this._uvs.x0=a.x/c,this._uvs.y0=a.y/d,this._uvs.x1=(a.x+a.width)/c,this._uvs.y1=a.y/d,this._uvs.x2=(a.x+a.width)/c,this._uvs.y2=(a.y+a.height)/d,this._uvs.x3=a.x/c,this._uvs.y3=(a.y+a.height)/d},b.Texture.fromCanvas=function(a,c){var d=b.BaseTexture.fromCanvas(a,c);return new b.Texture(d)},b.TextureUvs=function(){this.x0=0,this.y0=0,this.x1=0,this.y1=0,this.x2=0,this.y2=0,this.x3=0,this.y3=0},b.RenderTexture=function(a,c,d,e,f){if(this.width=a||100,this.height=c||100,this.resolution=f||1,this.frame=new b.Rectangle(0,0,this.width*this.resolution,this.height*this.resolution),this.crop=new b.Rectangle(0,0,this.width*this.resolution,this.height*this.resolution),this.baseTexture=new b.BaseTexture,this.baseTexture.width=this.width*this.resolution,this.baseTexture.height=this.height*this.resolution,this.baseTexture._glTextures=[],this.baseTexture.resolution=this.resolution,this.baseTexture.scaleMode=e||b.scaleModes.DEFAULT,this.baseTexture.hasLoaded=!0,b.Texture.call(this,this.baseTexture,new b.Rectangle(0,0,this.width*this.resolution,this.height*this.resolution)),this.renderer=d||b.defaultRenderer,this.renderer.type===b.WEBGL_RENDERER){var g=this.renderer.gl;this.baseTexture._dirty[g.id]=!1,this.textureBuffer=new b.FilterTexture(g,this.width,this.height,this.baseTexture.scaleMode),this.baseTexture._glTextures[g.id]=this.textureBuffer.texture,this.render=this.renderWebGL,this.projection=new b.Point(.5*this.width,.5*-this.height)}else this.render=this.renderCanvas,this.textureBuffer=new b.CanvasBuffer(this.width*this.resolution,this.height*this.resolution),this.baseTexture.source=this.textureBuffer.canvas;this.valid=!0,this.tempMatrix=new Phaser.Matrix,this._updateUvs()},b.RenderTexture.prototype=Object.create(b.Texture.prototype),b.RenderTexture.prototype.constructor=b.RenderTexture,b.RenderTexture.prototype.resize=function(a,c,d){a===this.width&&c===this.height||(this.valid=a>0&&c>0,this.width=a,this.height=c,this.frame.width=this.crop.width=a*this.resolution,this.frame.height=this.crop.height=c*this.resolution,d&&(this.baseTexture.width=this.width*this.resolution,this.baseTexture.height=this.height*this.resolution),this.renderer.type===b.WEBGL_RENDERER&&(this.projection.x=this.width/2,this.projection.y=-this.height/2),this.valid&&this.textureBuffer.resize(this.width,this.height))},b.RenderTexture.prototype.clear=function(){this.valid&&(this.renderer.type===b.WEBGL_RENDERER&&this.renderer.gl.bindFramebuffer(this.renderer.gl.FRAMEBUFFER,this.textureBuffer.frameBuffer),this.textureBuffer.clear())},b.RenderTexture.prototype.renderWebGL=function(a,b,c){if(this.valid&&0!==a.alpha){var d=a.worldTransform;d.identity(),d.translate(0,2*this.projection.y),b&&d.append(b),d.scale(1,-1);for(var e=0;ea;a++)this.shaders[a].dirty=!0},b.Strip=function(a){b.DisplayObjectContainer.call(this),this.texture=a,this.uvs=new b.Float32Array([0,1,1,1,1,0,0,1]),this.vertices=new b.Float32Array([0,0,100,0,100,100,0,100]),this.colors=new b.Float32Array([1,1,1,1]),this.indices=new b.Uint16Array([0,1,2,3]),this.dirty=!0,this.blendMode=b.blendModes.NORMAL,this.canvasPadding=0,this.drawMode=b.Strip.DrawModes.TRIANGLE_STRIP},b.Strip.prototype=Object.create(b.DisplayObjectContainer.prototype),b.Strip.prototype.constructor=b.Strip,b.Strip.prototype._renderWebGL=function(a){!this.visible||this.alpha<=0||(a.spriteBatch.stop(),this._vertexBuffer||this._initWebGL(a),a.shaderManager.setShader(a.shaderManager.stripShader),this._renderStrip(a),a.spriteBatch.start())},b.Strip.prototype._initWebGL=function(a){var b=a.gl;this._vertexBuffer=b.createBuffer(),this._indexBuffer=b.createBuffer(),this._uvBuffer=b.createBuffer(),this._colorBuffer=b.createBuffer(),b.bindBuffer(b.ARRAY_BUFFER,this._vertexBuffer),b.bufferData(b.ARRAY_BUFFER,this.vertices,b.DYNAMIC_DRAW),b.bindBuffer(b.ARRAY_BUFFER,this._uvBuffer),b.bufferData(b.ARRAY_BUFFER,this.uvs,b.STATIC_DRAW),b.bindBuffer(b.ARRAY_BUFFER,this._colorBuffer),b.bufferData(b.ARRAY_BUFFER,this.colors,b.STATIC_DRAW),b.bindBuffer(b.ELEMENT_ARRAY_BUFFER,this._indexBuffer),b.bufferData(b.ELEMENT_ARRAY_BUFFER,this.indices,b.STATIC_DRAW)},b.Strip.prototype._renderStrip=function(a){var c=a.gl,d=a.projection,e=a.offset,f=a.shaderManager.stripShader,g=this.drawMode===b.Strip.DrawModes.TRIANGLE_STRIP?c.TRIANGLE_STRIP:c.TRIANGLES;a.blendModeManager.setBlendMode(this.blendMode),c.uniformMatrix3fv(f.translationMatrix,!1,this.worldTransform.toArray(!0)),c.uniform2f(f.projectionVector,d.x,-d.y),c.uniform2f(f.offsetVector,-e.x,-e.y),c.uniform1f(f.alpha,this.worldAlpha),this.dirty?(this.dirty=!1,c.bindBuffer(c.ARRAY_BUFFER,this._vertexBuffer),c.bufferData(c.ARRAY_BUFFER,this.vertices,c.STATIC_DRAW),c.vertexAttribPointer(f.aVertexPosition,2,c.FLOAT,!1,0,0),c.bindBuffer(c.ARRAY_BUFFER,this._uvBuffer),c.bufferData(c.ARRAY_BUFFER,this.uvs,c.STATIC_DRAW),c.vertexAttribPointer(f.aTextureCoord,2,c.FLOAT,!1,0,0),c.activeTexture(c.TEXTURE0),this.texture.baseTexture._dirty[c.id]?a.renderer.updateTexture(this.texture.baseTexture):c.bindTexture(c.TEXTURE_2D,this.texture.baseTexture._glTextures[c.id]),c.bindBuffer(c.ELEMENT_ARRAY_BUFFER,this._indexBuffer),c.bufferData(c.ELEMENT_ARRAY_BUFFER,this.indices,c.STATIC_DRAW)):(c.bindBuffer(c.ARRAY_BUFFER,this._vertexBuffer),c.bufferSubData(c.ARRAY_BUFFER,0,this.vertices),c.vertexAttribPointer(f.aVertexPosition,2,c.FLOAT,!1,0,0),c.bindBuffer(c.ARRAY_BUFFER,this._uvBuffer),c.vertexAttribPointer(f.aTextureCoord,2,c.FLOAT,!1,0,0),c.activeTexture(c.TEXTURE0),this.texture.baseTexture._dirty[c.id]?a.renderer.updateTexture(this.texture.baseTexture):c.bindTexture(c.TEXTURE_2D,this.texture.baseTexture._glTextures[c.id]),c.bindBuffer(c.ELEMENT_ARRAY_BUFFER,this._indexBuffer)),c.drawElements(g,this.indices.length,c.UNSIGNED_SHORT,0)},b.Strip.prototype._renderCanvas=function(a){var c=a.context,d=this.worldTransform,e=d.tx*a.resolution+a.shakeX,f=d.ty*a.resolution+a.shakeY;a.roundPixels?c.setTransform(d.a,d.b,d.c,d.d,0|e,0|f):c.setTransform(d.a,d.b,d.c,d.d,e,f),this.drawMode===b.Strip.DrawModes.TRIANGLE_STRIP?this._renderCanvasTriangleStrip(c):this._renderCanvasTriangles(c)},b.Strip.prototype._renderCanvasTriangleStrip=function(a){var b=this.vertices,c=this.uvs,d=b.length/2;this.count++;for(var e=0;d-2>e;e++){var f=2*e;this._renderCanvasDrawTriangle(a,b,c,f,f+2,f+4)}},b.Strip.prototype._renderCanvasTriangles=function(a){var b=this.vertices,c=this.uvs,d=this.indices,e=d.length;this.count++;for(var f=0;e>f;f+=3){var g=2*d[f],h=2*d[f+1],i=2*d[f+2];this._renderCanvasDrawTriangle(a,b,c,g,h,i)}},b.Strip.prototype._renderCanvasDrawTriangle=function(a,b,c,d,e,f){var g=this.texture.baseTexture.source,h=this.texture.width,i=this.texture.height,j=b[d],k=b[e],l=b[f],m=b[d+1],n=b[e+1],o=b[f+1],p=c[d]*h,q=c[e]*h,r=c[f]*h,s=c[d+1]*i,t=c[e+1]*i,u=c[f+1]*i;if(this.canvasPadding>0){var v=this.canvasPadding/this.worldTransform.a,w=this.canvasPadding/this.worldTransform.d,x=(j+k+l)/3,y=(m+n+o)/3,z=j-x,A=m-y,B=Math.sqrt(z*z+A*A);j=x+z/B*(B+v),m=y+A/B*(B+w),z=k-x,A=n-y,B=Math.sqrt(z*z+A*A),k=x+z/B*(B+v),n=y+A/B*(B+w),z=l-x,A=o-y,B=Math.sqrt(z*z+A*A),l=x+z/B*(B+v),o=y+A/B*(B+w)}a.save(),a.beginPath(),a.moveTo(j,m),a.lineTo(k,n),a.lineTo(l,o),a.closePath(),a.clip();var C=p*t+s*r+q*u-t*r-s*q-p*u,D=j*t+s*l+k*u-t*l-s*k-j*u,E=p*k+j*r+q*l-k*r-j*q-p*l,F=p*t*l+s*k*r+j*q*u-j*t*r-s*q*l-p*k*u,G=m*t+s*o+n*u-t*o-s*n-m*u,H=p*n+m*r+q*o-n*r-m*q-p*o,I=p*t*o+s*n*r+m*q*u-m*t*r-s*q*o-p*n*u;a.transform(D/C,G/C,E/C,H/C,F/C,I/C),a.drawImage(g,0,0),a.restore()},b.Strip.prototype.renderStripFlat=function(a){var b=this.context,c=a.vertices,d=c.length/2;this.count++,b.beginPath();for(var e=1;d-2>e;e++){var f=2*e,g=c[f],h=c[f+2],i=c[f+4],j=c[f+1],k=c[f+3],l=c[f+5];b.moveTo(g,j),b.lineTo(h,k),b.lineTo(i,l)}b.fillStyle="#FF0000",b.fill(),b.closePath()},b.Strip.prototype.onTextureUpdate=function(){this.updateFrame=!0},b.Strip.prototype.getBounds=function(a){for(var c=a||this.worldTransform,d=c.a,e=c.b,f=c.c,g=c.d,h=c.tx,i=c.ty,j=-(1/0),k=-(1/0),l=1/0,m=1/0,n=this.vertices,o=0,p=n.length;p>o;o+=2){var q=n[o],r=n[o+1],s=d*q+f*r+h,t=g*r+e*q+i;l=l>s?s:l,m=m>t?t:m,j=s>j?s:j,k=t>k?t:k}if(l===-(1/0)||k===1/0)return b.EmptyRectangle;var u=this._bounds;return u.x=l,u.width=j-l,u.y=m,u.height=k-m,this._currentBounds=u,u},b.Strip.DrawModes={TRIANGLE_STRIP:0,TRIANGLES:1},b.Rope=function(a,c){b.Strip.call(this,a),this.points=c,this.vertices=new b.Float32Array(4*c.length),this.uvs=new b.Float32Array(4*c.length),this.colors=new b.Float32Array(2*c.length),this.indices=new b.Uint16Array(2*c.length),this.refresh()},b.Rope.prototype=Object.create(b.Strip.prototype),b.Rope.prototype.constructor=b.Rope,b.Rope.prototype.refresh=function(){var a=this.points;if(!(a.length<1)){var b=this.uvs,c=a[0],d=this.indices,e=this.colors;this.count-=.2,b[0]=0,b[1]=0,b[2]=0,b[3]=1,e[0]=1,e[1]=1,d[0]=0,d[1]=1;for(var f,g,h,i=a.length,j=1;i>j;j++)f=a[j],g=4*j,h=j/(i-1),j%2?(b[g]=h,b[g+1]=0,b[g+2]=h,b[g+3]=1):(b[g]=h,b[g+1]=0,b[g+2]=h,b[g+3]=1),g=2*j,e[g]=1,e[g+1]=1,g=2*j,d[g]=g,d[g+1]=g+1,c=f}},b.Rope.prototype.updateTransform=function(){var a=this.points;if(!(a.length<1)){var c,d=a[0],e={x:0,y:0};this.count-=.2;for(var f,g,h,i,j,k=this.vertices,l=a.length,m=0;l>m;m++)f=a[m],g=4*m,c=m1&&(h=1),i=Math.sqrt(e.x*e.x+e.y*e.y),j=this.texture.height/2,e.x/=i,e.y/=i,e.x*=j,e.y*=j,k[g]=f.x+e.x,k[g+1]=f.y+e.y,k[g+2]=f.x-e.x,k[g+3]=f.y-e.y,d=f;b.DisplayObjectContainer.prototype.updateTransform.call(this)}},b.Rope.prototype.setTexture=function(a){this.texture=a},b.TilingSprite=function(a,c,d){b.Sprite.call(this,a),this._width=c||128,this._height=d||128,this.tileScale=new b.Point(1,1),this.tileScaleOffset=new b.Point(1,1),this.tilePosition=new b.Point,this.renderable=!0,this.tint=16777215,this.textureDebug=!1,this.blendMode=b.blendModes.NORMAL,this.canvasBuffer=null,this.tilingTexture=null,this.tilePattern=null,this.refreshTexture=!0,this.frameWidth=0,this.frameHeight=0},b.TilingSprite.prototype=Object.create(b.Sprite.prototype),b.TilingSprite.prototype.constructor=b.TilingSprite,b.TilingSprite.prototype.setTexture=function(a){this.texture!==a&&(this.texture=a,this.refreshTexture=!0,this.cachedTint=16777215)},b.TilingSprite.prototype._renderWebGL=function(a){if(this.visible&&this.renderable&&0!==this.alpha){if(this._mask&&(a.spriteBatch.stop(),a.maskManager.pushMask(this.mask,a),a.spriteBatch.start()),this._filters&&(a.spriteBatch.flush(),a.filterManager.pushFilter(this._filterBlock)),this.refreshTexture){if(this.generateTilingTexture(!0,a),!this.tilingTexture)return;this.tilingTexture.needsUpdate&&(a.renderer.updateTexture(this.tilingTexture.baseTexture),this.tilingTexture.needsUpdate=!1)}a.spriteBatch.renderTilingSprite(this);for(var b=0;bn?n:x,x=x>p?p:x,x=x>r?r:x,x=x>t?t:x,y=y>o?o:y,y=y>q?q:y,y=y>s?s:y,y=y>u?u:y,v=n>v?n:v,v=p>v?p:v,v=r>v?r:v,v=t>v?t:v,w=o>w?o:w,w=q>w?q:w,w=s>w?s:w,w=u>w?u:w;var z=this._bounds;return z.x=x,z.width=v-x,z.y=y,z.height=w-y,this._currentBounds=z,z},b.TilingSprite.prototype.destroy=function(){b.Sprite.prototype.destroy.call(this),this.canvasBuffer&&(this.canvasBuffer.destroy(),this.canvasBuffer=null),this.tileScale=null,this.tileScaleOffset=null,this.tilePosition=null,this.tilingTexture&&(this.tilingTexture.destroy(!0),this.tilingTexture=null)},Object.defineProperty(b.TilingSprite.prototype,"width",{get:function(){return this._width},set:function(a){this._width=a}}),Object.defineProperty(b.TilingSprite.prototype,"height",{get:function(){return this._height},set:function(a){this._height=a}}),"undefined"!=typeof exports?("undefined"!=typeof module&&module.exports&&(exports=module.exports=b),exports.PIXI=b):"undefined"!=typeof define&&define.amd?define("PIXI",function(){return a.PIXI=b}()):a.PIXI=b,b}).call(this),function(){function a(a,b){this._scaleFactor=a,this._deltaMode=b,this.originalEvent=null}var b=this,c=c||{VERSION:"2.6.0",GAMES:[],AUTO:0,CANVAS:1,WEBGL:2,HEADLESS:3,NONE:0,LEFT:1,RIGHT:2,UP:3,DOWN:4,SPRITE:0,BUTTON:1,IMAGE:2,GRAPHICS:3,TEXT:4,TILESPRITE:5,BITMAPTEXT:6,GROUP:7,RENDERTEXTURE:8,TILEMAP:9,TILEMAPLAYER:10,EMITTER:11,POLYGON:12,BITMAPDATA:13,CANVAS_FILTER:14,WEBGL_FILTER:15,ELLIPSE:16,SPRITEBATCH:17,RETROFONT:18,POINTER:19,ROPE:20,CIRCLE:21,RECTANGLE:22,LINE:23,MATRIX:24,POINT:25,ROUNDEDRECTANGLE:26,CREATURE:27,VIDEO:28,PENDING_ATLAS:-1,HORIZONTAL:0,VERTICAL:1,LANDSCAPE:0,PORTRAIT:1,ANGLE_UP:270,ANGLE_DOWN:90,ANGLE_LEFT:180,ANGLE_RIGHT:0,ANGLE_NORTH_EAST:315,ANGLE_NORTH_WEST:225,ANGLE_SOUTH_EAST:45,ANGLE_SOUTH_WEST:135,TOP_LEFT:0,TOP_CENTER:1,TOP_RIGHT:2,LEFT_TOP:3,LEFT_CENTER:4,LEFT_BOTTOM:5,CENTER:6,RIGHT_TOP:7,RIGHT_CENTER:8,RIGHT_BOTTOM:9,BOTTOM_LEFT:10,BOTTOM_CENTER:11,BOTTOM_RIGHT:12,blendModes:{NORMAL:0,ADD:1,MULTIPLY:2,SCREEN:3,OVERLAY:4,DARKEN:5,LIGHTEN:6,COLOR_DODGE:7,COLOR_BURN:8,HARD_LIGHT:9,SOFT_LIGHT:10,DIFFERENCE:11,EXCLUSION:12,HUE:13,SATURATION:14,COLOR:15,LUMINOSITY:16},scaleModes:{DEFAULT:0,LINEAR:0,NEAREST:1},PIXI:PIXI||{}};if(Math.trunc||(Math.trunc=function(a){return 0>a?Math.ceil(a):Math.floor(a)}),Function.prototype.bind||(Function.prototype.bind=function(){var a=Array.prototype.slice;return function(b){function c(){var f=e.concat(a.call(arguments));d.apply(this instanceof c?this:b,f)}var d=this,e=a.call(arguments,1);if("function"!=typeof d)throw new TypeError;return c.prototype=function f(a){return a&&(f.prototype=a),this instanceof f?void 0:new f}(d.prototype),c}}()),Array.isArray||(Array.isArray=function(a){return"[object Array]"==Object.prototype.toString.call(a)}),Array.prototype.forEach||(Array.prototype.forEach=function(a){"use strict";if(void 0===this||null===this)throw new TypeError;var b=Object(this),c=b.length>>>0;if("function"!=typeof a)throw new TypeError;for(var d=arguments.length>=2?arguments[1]:void 0,e=0;c>e;e++)e in b&&a.call(d,b[e],e,b)}),"function"!=typeof window.Uint32Array&&"object"!=typeof window.Uint32Array){var d=function(a){var b=new Array;window[a]=function(a){if("number"==typeof a){Array.call(this,a),this.length=a;for(var b=0;bf&&(a=a[g]);)g=c[f],f++;return a?a[d]:null},setProperty:function(a,b,c){for(var d=b.split("."),e=d.pop(),f=d.length,g=1,h=d[0];f>g&&(a=a[h]);)h=d[g],g++;return a&&(a[e]=c),a},chanceRoll:function(a){return void 0===a&&(a=50),a>0&&100*Math.random()<=a},randomChoice:function(a,b){return Math.random()<.5?a:b},parseDimension:function(a,b){var c=0,d=0;return"string"==typeof a?"%"===a.substr(-1)?(c=parseInt(a,10)/100,d=0===b?window.innerWidth*c:window.innerHeight*c):d=parseInt(a,10):d=a,d},pad:function(a,b,c,d){if(void 0===b)var b=0;if(void 0===c)var c=" ";if(void 0===d)var d=3;a=a.toString();var e=0;if(b+1>=a.length)switch(d){case 1:a=new Array(b+1-a.length).join(c)+a;break;case 3:var f=Math.ceil((e=b-a.length)/2),g=e-f;a=new Array(g+1).join(c)+a+new Array(f+1).join(c);break;default:a+=new Array(b+1-a.length).join(c)}return a},isPlainObject:function(a){if("object"!=typeof a||a.nodeType||a===a.window)return!1;try{if(a.constructor&&!{}.hasOwnProperty.call(a.constructor.prototype,"isPrototypeOf"))return!1}catch(b){return!1}return!0},extend:function(){var a,b,d,e,f,g,h=arguments[0]||{},i=1,j=arguments.length,k=!1;for("boolean"==typeof h&&(k=h,h=arguments[1]||{},i=2),j===i&&(h=this,--i);j>i;i++)if(null!=(a=arguments[i]))for(b in a)d=h[b],e=a[b],h!==e&&(k&&e&&(c.Utils.isPlainObject(e)||(f=Array.isArray(e)))?(f?(f=!1,g=d&&Array.isArray(d)?d:[]):g=d&&c.Utils.isPlainObject(d)?d:{},h[b]=c.Utils.extend(k,g,e)):void 0!==e&&(h[b]=e));return h},mixinPrototype:function(a,b,c){void 0===c&&(c=!1);for(var d=Object.keys(b),e=0;e0&&(this._radius=.5*d),this.type=c.CIRCLE},c.Circle.prototype={circumference:function(){return 2*(Math.PI*this._radius)},random:function(a){void 0===a&&(a=new c.Point);var b=2*Math.PI*Math.random(),d=Math.random()+Math.random(),e=d>1?2-d:d,f=e*Math.cos(b),g=e*Math.sin(b);return a.x=this.x+f*this.radius,a.y=this.y+g*this.radius,a},getBounds:function(){return new c.Rectangle(this.x-this.radius,this.y-this.radius,this.diameter,this.diameter)},setTo:function(a,b,c){return this.x=a,this.y=b,this._diameter=c,this._radius=.5*c,this},copyFrom:function(a){return this.setTo(a.x,a.y,a.diameter)},copyTo:function(a){return a.x=this.x,a.y=this.y,a.diameter=this._diameter,a},distance:function(a,b){var d=c.Math.distance(this.x,this.y,a.x,a.y);return b?Math.round(d):d},clone:function(a){return void 0===a||null===a?a=new c.Circle(this.x,this.y,this.diameter):a.setTo(this.x,this.y,this.diameter),a},contains:function(a,b){return c.Circle.contains(this,a,b)},circumferencePoint:function(a,b,d){return c.Circle.circumferencePoint(this,a,b,d)},offset:function(a,b){return this.x+=a,this.y+=b,this},offsetPoint:function(a){return this.offset(a.x,a.y)},toString:function(){return"[{Phaser.Circle (x="+this.x+" y="+this.y+" diameter="+this.diameter+" radius="+this.radius+")}]"}},c.Circle.prototype.constructor=c.Circle,Object.defineProperty(c.Circle.prototype,"diameter",{get:function(){return this._diameter},set:function(a){a>0&&(this._diameter=a,this._radius=.5*a)}}),Object.defineProperty(c.Circle.prototype,"radius",{get:function(){return this._radius},set:function(a){a>0&&(this._radius=a,this._diameter=2*a)}}),Object.defineProperty(c.Circle.prototype,"left",{get:function(){return this.x-this._radius},set:function(a){a>this.x?(this._radius=0,this._diameter=0):this.radius=this.x-a}}),Object.defineProperty(c.Circle.prototype,"right",{get:function(){return this.x+this._radius},set:function(a){athis.y?(this._radius=0,this._diameter=0):this.radius=this.y-a}}),Object.defineProperty(c.Circle.prototype,"bottom",{get:function(){return this.y+this._radius},set:function(a){a0?Math.PI*this._radius*this._radius:0}}),Object.defineProperty(c.Circle.prototype,"empty",{get:function(){return 0===this._diameter},set:function(a){a===!0&&this.setTo(0,0,0)}}),c.Circle.contains=function(a,b,c){if(a.radius>0&&b>=a.left&&b<=a.right&&c>=a.top&&c<=a.bottom){var d=(a.x-b)*(a.x-b),e=(a.y-c)*(a.y-c);return d+e<=a.radius*a.radius}return!1},c.Circle.equals=function(a,b){return a.x==b.x&&a.y==b.y&&a.diameter==b.diameter},c.Circle.intersects=function(a,b){return c.Math.distance(a.x,a.y,b.x,b.y)<=a.radius+b.radius},c.Circle.circumferencePoint=function(a,b,d,e){return void 0===d&&(d=!1),void 0===e&&(e=new c.Point),d===!0&&(b=c.Math.degToRad(b)),e.x=a.x+a.radius*Math.cos(b),e.y=a.y+a.radius*Math.sin(b),e},c.Circle.intersectsRectangle=function(a,b){var c=Math.abs(a.x-b.x-b.halfWidth),d=b.halfWidth+a.radius;if(c>d)return!1;var e=Math.abs(a.y-b.y-b.halfHeight),f=b.halfHeight+a.radius;if(e>f)return!1;if(c<=b.halfWidth||e<=b.halfHeight)return!0;var g=c-b.halfWidth,h=e-b.halfHeight,i=g*g,j=h*h,k=a.radius*a.radius;return k>=i+j},PIXI.Circle=c.Circle,c.Ellipse=function(a,b,d,e){a=a||0,b=b||0,d=d||0,e=e||0,this.x=a,this.y=b,this.width=d,this.height=e,this.type=c.ELLIPSE},c.Ellipse.prototype={setTo:function(a,b,c,d){return this.x=a,this.y=b,this.width=c,this.height=d,this},getBounds:function(){return new c.Rectangle(this.x-this.width,this.y-this.height,this.width,this.height)},copyFrom:function(a){return this.setTo(a.x,a.y,a.width,a.height)},copyTo:function(a){return a.x=this.x,a.y=this.y,a.width=this.width,a.height=this.height,a},clone:function(a){return void 0===a||null===a?a=new c.Ellipse(this.x,this.y,this.width,this.height):a.setTo(this.x,this.y,this.width,this.height),a},contains:function(a,b){return c.Ellipse.contains(this,a,b)},random:function(a){void 0===a&&(a=new c.Point);var b=Math.random()*Math.PI*2,d=Math.random();return a.x=Math.sqrt(d)*Math.cos(b),a.y=Math.sqrt(d)*Math.sin(b),a.x=this.x+a.x*this.width/2,a.y=this.y+a.y*this.height/2,a},toString:function(){return"[{Phaser.Ellipse (x="+this.x+" y="+this.y+" width="+this.width+" height="+this.height+")}]"}},c.Ellipse.prototype.constructor=c.Ellipse,Object.defineProperty(c.Ellipse.prototype,"left",{get:function(){return this.x},set:function(a){this.x=a}}),Object.defineProperty(c.Ellipse.prototype,"right",{ +get:function(){return this.x+this.width},set:function(a){ad+e},PIXI.Ellipse=c.Ellipse,c.Line=function(a,b,d,e){a=a||0,b=b||0,d=d||0,e=e||0,this.start=new c.Point(a,b),this.end=new c.Point(d,e),this.type=c.LINE},c.Line.prototype={setTo:function(a,b,c,d){return this.start.setTo(a,b),this.end.setTo(c,d),this},fromSprite:function(a,b,c){return void 0===c&&(c=!1),c?this.setTo(a.center.x,a.center.y,b.center.x,b.center.y):this.setTo(a.x,a.y,b.x,b.y)},fromAngle:function(a,b,c,d){return this.start.setTo(a,b),this.end.setTo(a+Math.cos(c)*d,b+Math.sin(c)*d),this},rotate:function(a,b){var c=(this.start.x+this.end.x)/2,d=(this.start.y+this.end.y)/2;return this.start.rotate(c,d,a,b),this.end.rotate(c,d,a,b),this},rotateAround:function(a,b,c,d){return this.start.rotate(a,b,c,d),this.end.rotate(a,b,c,d),this},intersects:function(a,b,d){return c.Line.intersectsPoints(this.start,this.end,a.start,a.end,b,d)},reflect:function(a){return c.Line.reflect(this,a)},midPoint:function(a){return void 0===a&&(a=new c.Point),a.x=(this.start.x+this.end.x)/2,a.y=(this.start.y+this.end.y)/2,a},centerOn:function(a,b){var c=(this.start.x+this.end.x)/2,d=(this.start.y+this.end.y)/2,e=a-c,f=b-d;this.start.add(e,f),this.end.add(e,f)},pointOnLine:function(a,b){return(a-this.start.x)*(this.end.y-this.start.y)===(this.end.x-this.start.x)*(b-this.start.y)},pointOnSegment:function(a,b){var c=Math.min(this.start.x,this.end.x),d=Math.max(this.start.x,this.end.x),e=Math.min(this.start.y,this.end.y),f=Math.max(this.start.y,this.end.y);return this.pointOnLine(a,b)&&a>=c&&d>=a&&b>=e&&f>=b},random:function(a){void 0===a&&(a=new c.Point);var b=Math.random();return a.x=this.start.x+b*(this.end.x-this.start.x),a.y=this.start.y+b*(this.end.y-this.start.y),a},coordinatesOnLine:function(a,b){void 0===a&&(a=1),void 0===b&&(b=[]);var c=Math.round(this.start.x),d=Math.round(this.start.y),e=Math.round(this.end.x),f=Math.round(this.end.y),g=Math.abs(e-c),h=Math.abs(f-d),i=e>c?1:-1,j=f>d?1:-1,k=g-h;b.push([c,d]);for(var l=1;c!=e||d!=f;){var m=k<<1;m>-h&&(k-=h,c+=i),g>m&&(k+=g,d+=j),l%a===0&&b.push([c,d]),l++}return b},clone:function(a){return void 0===a||null===a?a=new c.Line(this.start.x,this.start.y,this.end.x,this.end.y):a.setTo(this.start.x,this.start.y,this.end.x,this.end.y),a}},Object.defineProperty(c.Line.prototype,"length",{get:function(){return Math.sqrt((this.end.x-this.start.x)*(this.end.x-this.start.x)+(this.end.y-this.start.y)*(this.end.y-this.start.y))}}),Object.defineProperty(c.Line.prototype,"angle",{get:function(){return Math.atan2(this.end.y-this.start.y,this.end.x-this.start.x)}}),Object.defineProperty(c.Line.prototype,"slope",{get:function(){return(this.end.y-this.start.y)/(this.end.x-this.start.x)}}),Object.defineProperty(c.Line.prototype,"perpSlope",{get:function(){return-((this.end.x-this.start.x)/(this.end.y-this.start.y))}}),Object.defineProperty(c.Line.prototype,"x",{get:function(){return Math.min(this.start.x,this.end.x)}}),Object.defineProperty(c.Line.prototype,"y",{get:function(){return Math.min(this.start.y,this.end.y)}}),Object.defineProperty(c.Line.prototype,"left",{get:function(){return Math.min(this.start.x,this.end.x)}}),Object.defineProperty(c.Line.prototype,"right",{get:function(){return Math.max(this.start.x,this.end.x)}}),Object.defineProperty(c.Line.prototype,"top",{get:function(){return Math.min(this.start.y,this.end.y)}}),Object.defineProperty(c.Line.prototype,"bottom",{get:function(){return Math.max(this.start.y,this.end.y)}}),Object.defineProperty(c.Line.prototype,"width",{get:function(){return Math.abs(this.start.x-this.end.x)}}),Object.defineProperty(c.Line.prototype,"height",{get:function(){return Math.abs(this.start.y-this.end.y)}}),Object.defineProperty(c.Line.prototype,"normalX",{get:function(){return Math.cos(this.angle-1.5707963267948966)}}),Object.defineProperty(c.Line.prototype,"normalY",{get:function(){return Math.sin(this.angle-1.5707963267948966)}}),Object.defineProperty(c.Line.prototype,"normalAngle",{get:function(){return c.Math.wrap(this.angle-1.5707963267948966,-Math.PI,Math.PI)}}),c.Line.intersectsPoints=function(a,b,d,e,f,g){void 0===f&&(f=!0),void 0===g&&(g=new c.Point);var h=b.y-a.y,i=e.y-d.y,j=a.x-b.x,k=d.x-e.x,l=b.x*a.y-a.x*b.y,m=e.x*d.y-d.x*e.y,n=h*k-i*j;if(0===n)return null;if(g.x=(j*m-k*l)/n,g.y=(i*l-h*m)/n,f){var o=(e.y-d.y)*(b.x-a.x)-(e.x-d.x)*(b.y-a.y),p=((e.x-d.x)*(a.y-d.y)-(e.y-d.y)*(a.x-d.x))/o,q=((b.x-a.x)*(a.y-d.y)-(b.y-a.y)*(a.x-d.x))/o;return p>=0&&1>=p&&q>=0&&1>=q?g:null}return g},c.Line.intersects=function(a,b,d,e){return c.Line.intersectsPoints(a.start,a.end,b.start,b.end,d,e)},c.Line.intersectsRectangle=function(a,b){if(!c.Rectangle.intersects(a,b))return!1;var d=a.start.x,e=a.start.y,f=a.end.x,g=a.end.y,h=b.x,i=b.y,j=b.right,k=b.bottom,l=0;if(d>=h&&j>=d&&e>=i&&k>=e||f>=h&&j>=f&&g>=i&&k>=g)return!0;if(h>d&&f>=h){if(l=e+(g-e)*(h-d)/(f-d),l>i&&k>=l)return!0}else if(d>j&&j>=f&&(l=e+(g-e)*(j-d)/(f-d),l>=i&&k>=l))return!0;if(i>e&&g>=i){if(l=d+(f-d)*(i-e)/(g-e),l>=h&&j>=l)return!0}else if(e>k&&k>=g&&(l=d+(f-d)*(k-e)/(g-e),l>=h&&j>=l))return!0;return!1},c.Line.reflect=function(a,b){return 2*b.normalAngle-3.141592653589793-a.angle},c.Matrix=function(a,b,d,e,f,g){void 0!==a&&null!==a||(a=1),void 0!==b&&null!==b||(b=0),void 0!==d&&null!==d||(d=0),void 0!==e&&null!==e||(e=1),void 0!==f&&null!==f||(f=0),void 0!==g&&null!==g||(g=0),this.a=a,this.b=b,this.c=d,this.d=e,this.tx=f,this.ty=g,this.type=c.MATRIX},c.Matrix.prototype={fromArray:function(a){return this.setTo(a[0],a[1],a[3],a[4],a[2],a[5])},setTo:function(a,b,c,d,e,f){return this.a=a,this.b=b,this.c=c,this.d=d,this.tx=e,this.ty=f,this},clone:function(a){return void 0===a||null===a?a=new c.Matrix(this.a,this.b,this.c,this.d,this.tx,this.ty):(a.a=this.a,a.b=this.b,a.c=this.c,a.d=this.d,a.tx=this.tx,a.ty=this.ty),a},copyTo:function(a){return a.copyFrom(this),a},copyFrom:function(a){return this.a=a.a,this.b=a.b,this.c=a.c,this.d=a.d,this.tx=a.tx,this.ty=a.ty,this},toArray:function(a,b){return void 0===b&&(b=new PIXI.Float32Array(9)),a?(b[0]=this.a,b[1]=this.b,b[2]=0,b[3]=this.c,b[4]=this.d,b[5]=0,b[6]=this.tx,b[7]=this.ty,b[8]=1):(b[0]=this.a,b[1]=this.c,b[2]=this.tx,b[3]=this.b,b[4]=this.d,b[5]=this.ty,b[6]=0,b[7]=0,b[8]=1),b},apply:function(a,b){return void 0===b&&(b=new c.Point),b.x=this.a*a.x+this.c*a.y+this.tx,b.y=this.b*a.x+this.d*a.y+this.ty,b},applyInverse:function(a,b){void 0===b&&(b=new c.Point);var d=1/(this.a*this.d+this.c*-this.b),e=a.x,f=a.y;return b.x=this.d*d*e+-this.c*d*f+(this.ty*this.c-this.tx*this.d)*d,b.y=this.a*d*f+-this.b*d*e+(-this.ty*this.a+this.tx*this.b)*d,b},translate:function(a,b){return this.tx+=a,this.ty+=b,this},scale:function(a,b){return this.a*=a,this.d*=b,this.c*=a,this.b*=b,this.tx*=a,this.ty*=b,this},rotate:function(a){var b=Math.cos(a),c=Math.sin(a),d=this.a,e=this.c,f=this.tx;return this.a=d*b-this.b*c,this.b=d*c+this.b*b,this.c=e*b-this.d*c,this.d=e*c+this.d*b,this.tx=f*b-this.ty*c,this.ty=f*c+this.ty*b,this},append:function(a){var b=this.a,c=this.b,d=this.c,e=this.d;return this.a=a.a*b+a.b*d,this.b=a.a*c+a.b*e,this.c=a.c*b+a.d*d,this.d=a.c*c+a.d*e,this.tx=a.tx*b+a.ty*d+this.tx,this.ty=a.tx*c+a.ty*e+this.ty,this},identity:function(){return this.setTo(1,0,0,1,0,0)}},c.identityMatrix=new c.Matrix,PIXI.Matrix=c.Matrix,PIXI.identityMatrix=c.identityMatrix,c.Point=function(a,b){a=a||0,b=b||0,this.x=a,this.y=b,this.type=c.POINT},c.Point.prototype={copyFrom:function(a){return this.setTo(a.x,a.y)},invert:function(){return this.setTo(this.y,this.x)},setTo:function(a,b){return this.x=a||0,this.y=b||(0!==b?this.x:0),this},set:function(a,b){return this.x=a||0,this.y=b||(0!==b?this.x:0),this},add:function(a,b){return this.x+=a,this.y+=b,this},subtract:function(a,b){return this.x-=a,this.y-=b,this},multiply:function(a,b){return this.x*=a,this.y*=b,this},divide:function(a,b){return this.x/=a,this.y/=b,this},clampX:function(a,b){return this.x=c.Math.clamp(this.x,a,b),this},clampY:function(a,b){return this.y=c.Math.clamp(this.y,a,b),this},clamp:function(a,b){return this.x=c.Math.clamp(this.x,a,b),this.y=c.Math.clamp(this.y,a,b),this},clone:function(a){return void 0===a||null===a?a=new c.Point(this.x,this.y):a.setTo(this.x,this.y),a},copyTo:function(a){return a.x=this.x,a.y=this.y,a},distance:function(a,b){return c.Point.distance(this,a,b)},equals:function(a){return a.x===this.x&&a.y===this.y},angle:function(a,b){return void 0===b&&(b=!1),b?c.Math.radToDeg(Math.atan2(a.y-this.y,a.x-this.x)):Math.atan2(a.y-this.y,a.x-this.x)},rotate:function(a,b,d,e,f){return c.Point.rotate(this,a,b,d,e,f)},getMagnitude:function(){return Math.sqrt(this.x*this.x+this.y*this.y)},getMagnitudeSq:function(){return this.x*this.x+this.y*this.y},setMagnitude:function(a){return this.normalize().multiply(a,a)},normalize:function(){if(!this.isZero()){var a=this.getMagnitude();this.x/=a,this.y/=a}return this},isZero:function(){return 0===this.x&&0===this.y},dot:function(a){return this.x*a.x+this.y*a.y},cross:function(a){return this.x*a.y-this.y*a.x},perp:function(){return this.setTo(-this.y,this.x)},rperp:function(){return this.setTo(this.y,-this.x)},normalRightHand:function(){return this.setTo(-1*this.y,this.x)},floor:function(){return this.setTo(Math.floor(this.x),Math.floor(this.y))},ceil:function(){return this.setTo(Math.ceil(this.x),Math.ceil(this.y))},toString:function(){return"[{Point (x="+this.x+" y="+this.y+")}]"}},c.Point.prototype.constructor=c.Point,c.Point.add=function(a,b,d){return void 0===d&&(d=new c.Point),d.x=a.x+b.x,d.y=a.y+b.y,d},c.Point.subtract=function(a,b,d){return void 0===d&&(d=new c.Point),d.x=a.x-b.x,d.y=a.y-b.y,d},c.Point.multiply=function(a,b,d){return void 0===d&&(d=new c.Point),d.x=a.x*b.x,d.y=a.y*b.y,d},c.Point.divide=function(a,b,d){return void 0===d&&(d=new c.Point),d.x=a.x/b.x,d.y=a.y/b.y,d},c.Point.equals=function(a,b){return a.x===b.x&&a.y===b.y},c.Point.angle=function(a,b){return Math.atan2(a.y-b.y,a.x-b.x)},c.Point.negative=function(a,b){return void 0===b&&(b=new c.Point),b.setTo(-a.x,-a.y)},c.Point.multiplyAdd=function(a,b,d,e){return void 0===e&&(e=new c.Point),e.setTo(a.x+b.x*d,a.y+b.y*d)},c.Point.interpolate=function(a,b,d,e){return void 0===e&&(e=new c.Point),e.setTo(a.x+(b.x-a.x)*d,a.y+(b.y-a.y)*d)},c.Point.perp=function(a,b){return void 0===b&&(b=new c.Point),b.setTo(-a.y,a.x)},c.Point.rperp=function(a,b){return void 0===b&&(b=new c.Point),b.setTo(a.y,-a.x)},c.Point.distance=function(a,b,d){var e=c.Math.distance(a.x,a.y,b.x,b.y);return d?Math.round(e):e},c.Point.project=function(a,b,d){void 0===d&&(d=new c.Point);var e=a.dot(b)/b.getMagnitudeSq();return 0!==e&&d.setTo(e*b.x,e*b.y),d},c.Point.projectUnit=function(a,b,d){void 0===d&&(d=new c.Point);var e=a.dot(b);return 0!==e&&d.setTo(e*b.x,e*b.y),d},c.Point.normalRightHand=function(a,b){return void 0===b&&(b=new c.Point),b.setTo(-1*a.y,a.x)},c.Point.normalize=function(a,b){void 0===b&&(b=new c.Point);var d=a.getMagnitude();return 0!==d&&b.setTo(a.x/d,a.y/d),b},c.Point.rotate=function(a,b,d,e,f,g){if(f&&(e=c.Math.degToRad(e)),void 0===g){a.subtract(b,d);var h=Math.sin(e),i=Math.cos(e),j=i*a.x-h*a.y,k=h*a.x+i*a.y;a.x=j+b,a.y=k+d}else{var l=e+Math.atan2(a.y-d,a.x-b);a.x=b+g*Math.cos(l),a.y=d+g*Math.sin(l)}return a},c.Point.centroid=function(a,b){if(void 0===b&&(b=new c.Point),"[object Array]"!==Object.prototype.toString.call(a))throw new Error("Phaser.Point. Parameter 'points' must be an array");var d=a.length;if(1>d)throw new Error("Phaser.Point. Parameter 'points' array must not be empty");if(1===d)return b.copyFrom(a[0]),b;for(var e=0;d>e;e++)c.Point.add(b,a[e],b);return b.divide(d,d),b},c.Point.parse=function(a,b,d){b=b||"x",d=d||"y";var e=new c.Point;return a[b]&&(e.x=parseInt(a[b],10)),a[d]&&(e.y=parseInt(a[d],10)),e},PIXI.Point=c.Point,c.Polygon=function(){this.area=0,this._points=[],arguments.length>0&&this.setTo.apply(this,arguments),this.closed=!0,this.flattened=!1,this.type=c.POLYGON},c.Polygon.prototype={toNumberArray:function(a){void 0===a&&(a=[]);for(var b=0;b=g&&i>b||b>=i&&g>b)&&(h-f)*(b-g)/(i-g)+f>a&&(c=!c)}else for(var d=-1,e=this._points.length-1;++d=g&&i>b||b>=i&&g>b)&&(h-f)*(b-g)/(i-g)+f>a&&(c=!c)}return c},setTo:function(a){if(this.area=0,this._points=[],arguments.length>0){Array.isArray(a)||(a=Array.prototype.slice.call(arguments));for(var b=Number.MAX_VALUE,c=0,d=a.length;d>c;c++){if("number"==typeof a[c]){var e=new PIXI.Point(a[c],a[c+1]);c++}else if(Array.isArray(a[c]))var e=new PIXI.Point(a[c][0],a[c][1]);else var e=new PIXI.Point(a[c].x,a[c].y);this._points.push(e),e.yf;f++)b=this._points[f],c=f===g-1?this._points[0]:this._points[f+1],d=(b.y-a+(c.y-a))/2,e=b.x-c.x,this.area+=d*e;return this.area}},c.Polygon.prototype.constructor=c.Polygon,Object.defineProperty(c.Polygon.prototype,"points",{get:function(){return this._points},set:function(a){null!=a?this.setTo(a):this.setTo()}}),PIXI.Polygon=c.Polygon,c.Rectangle=function(a,b,d,e){a=a||0,b=b||0,d=d||0,e=e||0,this.x=a,this.y=b,this.width=d,this.height=e,this.type=c.RECTANGLE},c.Rectangle.prototype={offset:function(a,b){return this.x+=a,this.y+=b,this},offsetPoint:function(a){return this.offset(a.x,a.y)},setTo:function(a,b,c,d){return this.x=a,this.y=b,this.width=c,this.height=d,this},scale:function(a,b){return void 0===b&&(b=a),this.width*=a,this.height*=b,this},centerOn:function(a,b){return this.centerX=a,this.centerY=b,this},floor:function(){this.x=Math.floor(this.x),this.y=Math.floor(this.y)},floorAll:function(){this.x=Math.floor(this.x),this.y=Math.floor(this.y),this.width=Math.floor(this.width),this.height=Math.floor(this.height)},ceil:function(){this.x=Math.ceil(this.x),this.y=Math.ceil(this.y)},ceilAll:function(){this.x=Math.ceil(this.x),this.y=Math.ceil(this.y),this.width=Math.ceil(this.width),this.height=Math.ceil(this.height)},copyFrom:function(a){return this.setTo(a.x,a.y,a.width,a.height)},copyTo:function(a){return a.x=this.x,a.y=this.y,a.width=this.width,a.height=this.height,a},inflate:function(a,b){return c.Rectangle.inflate(this,a,b)},size:function(a){return c.Rectangle.size(this,a)},resize:function(a,b){return this.width=a,this.height=b,this},clone:function(a){return c.Rectangle.clone(this,a)},contains:function(a,b){return c.Rectangle.contains(this,a,b)},containsRect:function(a){return c.Rectangle.containsRect(a,this)},equals:function(a){return c.Rectangle.equals(this,a)},intersection:function(a,b){return c.Rectangle.intersection(this,a,b)},intersects:function(a){return c.Rectangle.intersects(this,a)},intersectsRaw:function(a,b,d,e,f){return c.Rectangle.intersectsRaw(this,a,b,d,e,f)},union:function(a,b){return c.Rectangle.union(this,a,b)},random:function(a){return void 0===a&&(a=new c.Point),a.x=this.randomX,a.y=this.randomY,a},getPoint:function(a,b){switch(void 0===b&&(b=new c.Point),a){default:case c.TOP_LEFT:return b.set(this.x,this.y);case c.TOP_CENTER:return b.set(this.centerX,this.y);case c.TOP_RIGHT:return b.set(this.right,this.y);case c.LEFT_CENTER:return b.set(this.x,this.centerY);case c.CENTER:return b.set(this.centerX,this.centerY);case c.RIGHT_CENTER:return b.set(this.right,this.centerY);case c.BOTTOM_LEFT:return b.set(this.x,this.bottom);case c.BOTTOM_CENTER:return b.set(this.centerX,this.bottom);case c.BOTTOM_RIGHT:return b.set(this.right,this.bottom)}},toString:function(){return"[{Rectangle (x="+this.x+" y="+this.y+" width="+this.width+" height="+this.height+" empty="+this.empty+")}]"}},Object.defineProperty(c.Rectangle.prototype,"halfWidth",{get:function(){return Math.round(this.width/2)}}),Object.defineProperty(c.Rectangle.prototype,"halfHeight",{get:function(){return Math.round(this.height/2)}}),Object.defineProperty(c.Rectangle.prototype,"bottom",{get:function(){return this.y+this.height},set:function(a){a<=this.y?this.height=0:this.height=a-this.y}}),Object.defineProperty(c.Rectangle.prototype,"bottomLeft",{get:function(){return new c.Point(this.x,this.bottom)},set:function(a){this.x=a.x,this.bottom=a.y}}),Object.defineProperty(c.Rectangle.prototype,"bottomRight",{get:function(){return new c.Point(this.right,this.bottom)},set:function(a){this.right=a.x,this.bottom=a.y}}),Object.defineProperty(c.Rectangle.prototype,"left",{get:function(){return this.x},set:function(a){a>=this.right?this.width=0:this.width=this.right-a,this.x=a}}),Object.defineProperty(c.Rectangle.prototype,"right",{get:function(){return this.x+this.width},set:function(a){a<=this.x?this.width=0:this.width=a-this.x}}),Object.defineProperty(c.Rectangle.prototype,"volume",{get:function(){return this.width*this.height}}),Object.defineProperty(c.Rectangle.prototype,"perimeter",{get:function(){return 2*this.width+2*this.height}}),Object.defineProperty(c.Rectangle.prototype,"centerX",{get:function(){return this.x+this.halfWidth},set:function(a){this.x=a-this.halfWidth}}),Object.defineProperty(c.Rectangle.prototype,"centerY",{get:function(){return this.y+this.halfHeight},set:function(a){this.y=a-this.halfHeight}}),Object.defineProperty(c.Rectangle.prototype,"randomX",{get:function(){return this.x+Math.random()*this.width}}),Object.defineProperty(c.Rectangle.prototype,"randomY",{get:function(){return this.y+Math.random()*this.height}}),Object.defineProperty(c.Rectangle.prototype,"top",{get:function(){return this.y},set:function(a){a>=this.bottom?(this.height=0,this.y=a):this.height=this.bottom-a}}),Object.defineProperty(c.Rectangle.prototype,"topLeft",{get:function(){return new c.Point(this.x,this.y)},set:function(a){this.x=a.x,this.y=a.y}}),Object.defineProperty(c.Rectangle.prototype,"topRight",{get:function(){return new c.Point(this.x+this.width,this.y)},set:function(a){this.right=a.x,this.y=a.y}}),Object.defineProperty(c.Rectangle.prototype,"empty",{get:function(){return!this.width||!this.height},set:function(a){a===!0&&this.setTo(0,0,0,0)}}),c.Rectangle.prototype.constructor=c.Rectangle,c.Rectangle.inflate=function(a,b,c){return a.x-=b,a.width+=2*b,a.y-=c,a.height+=2*c,a},c.Rectangle.inflatePoint=function(a,b){return c.Rectangle.inflate(a,b.x,b.y)},c.Rectangle.size=function(a,b){return void 0===b||null===b?b=new c.Point(a.width,a.height):b.setTo(a.width,a.height),b},c.Rectangle.clone=function(a,b){return void 0===b||null===b?b=new c.Rectangle(a.x,a.y,a.width,a.height):b.setTo(a.x,a.y,a.width,a.height),b},c.Rectangle.contains=function(a,b,c){return a.width<=0||a.height<=0?!1:b>=a.x&&b=a.y&&c=a&&a+c>e&&f>=b&&b+d>f},c.Rectangle.containsPoint=function(a,b){return c.Rectangle.contains(a,b.x,b.y)},c.Rectangle.containsRect=function(a,b){return a.volume>b.volume?!1:a.x>=b.x&&a.y>=b.y&&a.rightb.right||a.y>b.bottom)},c.Rectangle.intersectsRaw=function(a,b,c,d,e,f){return void 0===f&&(f=0),!(b>a.right+f||ca.bottom+f||ed&&(d=a.x),a.xf&&(f=a.y),a.y=c&&a<=c+this.width){var d=this.y;if(b>=d&&b<=d+this.height)return!0}return!1}},c.RoundedRectangle.prototype.constructor=c.RoundedRectangle,PIXI.RoundedRectangle=c.RoundedRectangle,c.Camera=function(a,b,d,e,f,g){this.game=a,this.world=a.world,this.id=0,this.view=new c.Rectangle(d,e,f,g),this.bounds=new c.Rectangle(d,e,f,g),this.deadzone=null,this.visible=!0,this.roundPx=!0,this.atLimit={x:!1,y:!1},this.target=null,this.displayObject=null,this.scale=null,this.totalInView=0,this.lerp=new c.Point(1,1),this.onShakeComplete=new c.Signal,this.onFlashComplete=new c.Signal,this.onFadeComplete=new c.Signal,this.fx=null,this._targetPosition=new c.Point,this._edge=0,this._position=new c.Point,this._shake={intensity:0,duration:0,horizontal:!1,vertical:!1,shakeBounds:!0,x:0,y:0},this._fxDuration=0,this._fxType=0},c.Camera.FOLLOW_LOCKON=0,c.Camera.FOLLOW_PLATFORMER=1,c.Camera.FOLLOW_TOPDOWN=2,c.Camera.FOLLOW_TOPDOWN_TIGHT=3,c.Camera.SHAKE_BOTH=4,c.Camera.SHAKE_HORIZONTAL=5,c.Camera.SHAKE_VERTICAL=6,c.Camera.ENABLE_FX=!0,c.Camera.prototype={boot:function(){this.displayObject=this.game.world,this.scale=this.game.world.scale,this.game.camera=this,c.Graphics&&c.Camera.ENABLE_FX&&(this.fx=new c.Graphics(this.game),this.game.stage.addChild(this.fx))},preUpdate:function(){this.totalInView=0},follow:function(a,b,d,e){void 0===b&&(b=c.Camera.FOLLOW_LOCKON),void 0===d&&(d=1),void 0===e&&(e=1),this.target=a,this.lerp.set(d,e);var f;switch(b){case c.Camera.FOLLOW_PLATFORMER:var g=this.width/8,h=this.height/3;this.deadzone=new c.Rectangle((this.width-g)/2,(this.height-h)/2-.25*h,g,h);break;case c.Camera.FOLLOW_TOPDOWN:f=Math.max(this.width,this.height)/4,this.deadzone=new c.Rectangle((this.width-f)/2,(this.height-f)/2,f,f);break;case c.Camera.FOLLOW_TOPDOWN_TIGHT:f=Math.max(this.width,this.height)/8,this.deadzone=new c.Rectangle((this.width-f)/2,(this.height-f)/2,f,f);break;case c.Camera.FOLLOW_LOCKON:this.deadzone=null;break;default:this.deadzone=null}},unfollow:function(){this.target=null},focusOn:function(a){this.setPosition(Math.round(a.x-this.view.halfWidth),Math.round(a.y-this.view.halfHeight))},focusOnXY:function(a,b){this.setPosition(Math.round(a-this.view.halfWidth),Math.round(b-this.view.halfHeight))},shake:function(a,b,d,e,f){return void 0===a&&(a=.05),void 0===b&&(b=500),void 0===d&&(d=!0),void 0===e&&(e=c.Camera.SHAKE_BOTH),void 0===f&&(f=!0),!d&&this._shake.duration>0?!1:(this._shake.intensity=a,this._shake.duration=b,this._shake.shakeBounds=f,this._shake.x=0,this._shake.y=0,this._shake.horizontal=e===c.Camera.SHAKE_BOTH||e===c.Camera.SHAKE_HORIZONTAL,this._shake.vertical=e===c.Camera.SHAKE_BOTH||e===c.Camera.SHAKE_VERTICAL,!0)},flash:function(a,b,c){return void 0===a&&(a=16777215),void 0===b&&(b=500),void 0===c&&(c=!1),!this.fx||!c&&this._fxDuration>0?!1:(this.fx.clear(),this.fx.beginFill(a),this.fx.drawRect(0,0,this.width,this.height),this.fx.endFill(),this.fx.alpha=1,this._fxDuration=b,this._fxType=0,!0)},fade:function(a,b,c){return void 0===a&&(a=0),void 0===b&&(b=500),void 0===c&&(c=!1),!this.fx||!c&&this._fxDuration>0?!1:(this.fx.clear(),this.fx.beginFill(a),this.fx.drawRect(0,0,this.width,this.height),this.fx.endFill(),this.fx.alpha=0,this._fxDuration=b,this._fxType=1,!0)},update:function(){this._fxDuration>0&&this.updateFX(),this._shake.duration>0&&this.updateShake(),this.bounds&&this.checkBounds(),this.roundPx&&(this.view.floor(),this._shake.x=Math.floor(this._shake.x),this._shake.y=Math.floor(this._shake.y)),this.displayObject.position.x=-this.view.x,this.displayObject.position.y=-this.view.y},updateFX:function(){0===this._fxType?(this.fx.alpha-=this.game.time.elapsedMS/this._fxDuration,this.fx.alpha<=0&&(this._fxDuration=0,this.fx.alpha=0,this.onFlashComplete.dispatch())):(this.fx.alpha+=this.game.time.elapsedMS/this._fxDuration,this.fx.alpha>=1&&(this._fxDuration=0,this.fx.alpha=1,this.onFadeComplete.dispatch()))},updateShake:function(){this._shake.duration-=this.game.time.elapsedMS,this._shake.duration<=0?(this.onShakeComplete.dispatch(),this._shake.x=0,this._shake.y=0):(this._shake.horizontal&&(this._shake.x=this.game.rnd.frac()*this._shake.intensity*this.view.width*2-this._shake.intensity*this.view.width),this._shake.vertical&&(this._shake.y=this.game.rnd.frac()*this._shake.intensity*this.view.height*2-this._shake.intensity*this.view.height))},updateTarget:function(){this._targetPosition.x=this.view.x+this.target.worldPosition.x,this._targetPosition.y=this.view.y+this.target.worldPosition.y,this.deadzone?(this._edge=this._targetPosition.x-this.view.x,this._edgethis.deadzone.right&&(this.view.x=this.game.math.linear(this.view.x,this._targetPosition.x-this.deadzone.right,this.lerp.x)),this._edge=this._targetPosition.y-this.view.y,this._edgethis.deadzone.bottom&&(this.view.y=this.game.math.linear(this.view.y,this._targetPosition.y-this.deadzone.bottom,this.lerp.y))):(this.view.x=this.game.math.linear(this.view.x,this._targetPosition.x-this.view.halfWidth,this.lerp.x),this.view.y=this.game.math.linear(this.view.y,this._targetPosition.y-this.view.halfHeight,this.lerp.y)),this.bounds&&this.checkBounds(),this.roundPx&&this.view.floor(),this.displayObject.position.x=-this.view.x,this.displayObject.position.y=-this.view.y},setBoundsToWorld:function(){this.bounds&&this.bounds.copyFrom(this.game.world.bounds)},checkBounds:function(){this.atLimit.x=!1,this.atLimit.y=!1;var a=this.view.x+this._shake.x,b=this.view.right+this._shake.x,c=this.view.y+this._shake.y,d=this.view.bottom+this._shake.y;a<=this.bounds.x*this.scale.x&&(this.atLimit.x=!0,this.view.x=this.bounds.x*this.scale.x,this._shake.shakeBounds||(this._shake.x=0)),b>=this.bounds.right*this.scale.x&&(this.atLimit.x=!0,this.view.x=this.bounds.right*this.scale.x-this.width,this._shake.shakeBounds||(this._shake.x=0)),c<=this.bounds.top*this.scale.y&&(this.atLimit.y=!0,this.view.y=this.bounds.top*this.scale.y,this._shake.shakeBounds||(this._shake.y=0)),d>=this.bounds.bottom*this.scale.y&&(this.atLimit.y=!0,this.view.y=this.bounds.bottom*this.scale.y-this.height,this._shake.shakeBounds||(this._shake.y=0))},setPosition:function(a,b){this.view.x=a,this.view.y=b,this.bounds&&this.checkBounds()},setSize:function(a,b){this.view.width=a,this.view.height=b},reset:function(){this.target=null,this.view.x=0,this.view.y=0,this._shake.duration=0,this.resetFX()},resetFX:function(){this.fx.clear(),this.fx.alpha=0,this._fxDuration=0}},c.Camera.prototype.constructor=c.Camera,Object.defineProperty(c.Camera.prototype,"x",{get:function(){return this.view.x},set:function(a){this.view.x=a,this.bounds&&this.checkBounds()}}),Object.defineProperty(c.Camera.prototype,"y",{get:function(){return this.view.y},set:function(a){this.view.y=a,this.bounds&&this.checkBounds()}}),Object.defineProperty(c.Camera.prototype,"position",{get:function(){return this._position.set(this.view.x,this.view.y),this._position},set:function(a){"undefined"!=typeof a.x&&(this.view.x=a.x),"undefined"!=typeof a.y&&(this.view.y=a.y),this.bounds&&this.checkBounds()}}),Object.defineProperty(c.Camera.prototype,"width",{get:function(){return this.view.width},set:function(a){this.view.width=a}}),Object.defineProperty(c.Camera.prototype,"height",{get:function(){return this.view.height},set:function(a){this.view.height=a}}),Object.defineProperty(c.Camera.prototype,"shakeIntensity",{get:function(){return this._shake.intensity},set:function(a){this._shake.intensity=a}}),c.State=function(){this.game=null,this.key="",this.add=null,this.make=null,this.camera=null,this.cache=null,this.input=null,this.load=null,this.math=null,this.sound=null,this.scale=null,this.stage=null,this.state=null,this.time=null,this.tweens=null,this.world=null,this.particles=null,this.physics=null,this.rnd=null},c.State.prototype={init:function(){},preload:function(){},loadUpdate:function(){},loadRender:function(){},create:function(){},update:function(){},preRender:function(){},render:function(){},resize:function(){},paused:function(){},resumed:function(){},pauseUpdate:function(){},shutdown:function(){}},c.State.prototype.constructor=c.State,c.StateManager=function(a,b){this.game=a,this.states={},this._pendingState=null,"undefined"!=typeof b&&null!==b&&(this._pendingState=b),this._clearWorld=!1,this._clearCache=!1,this._created=!1,this._args=[],this.current="",this.onStateChange=new c.Signal,this.onInitCallback=null,this.onPreloadCallback=null,this.onCreateCallback=null,this.onUpdateCallback=null,this.onRenderCallback=null,this.onResizeCallback=null,this.onPreRenderCallback=null,this.onLoadUpdateCallback=null,this.onLoadRenderCallback=null,this.onPausedCallback=null,this.onResumedCallback=null,this.onPauseUpdateCallback=null,this.onShutDownCallback=null},c.StateManager.prototype={boot:function(){this.game.onPause.add(this.pause,this),this.game.onResume.add(this.resume,this),null!==this._pendingState&&"string"!=typeof this._pendingState&&this.add("default",this._pendingState,!0)},add:function(a,b,d){void 0===d&&(d=!1);var e;return b instanceof c.State?e=b:"object"==typeof b?(e=b,e.game=this.game):"function"==typeof b&&(e=new b(this.game)),this.states[a]=e,d&&(this.game.isBooted?this.start(a):this._pendingState=a),e},remove:function(a){this.current===a&&(this.callbackContext=null,this.onInitCallback=null,this.onShutDownCallback=null,this.onPreloadCallback=null,this.onLoadRenderCallback=null,this.onLoadUpdateCallback=null,this.onCreateCallback=null,this.onUpdateCallback=null,this.onPreRenderCallback=null,this.onRenderCallback=null,this.onResizeCallback=null,this.onPausedCallback=null,this.onResumedCallback=null,this.onPauseUpdateCallback=null),delete this.states[a]},start:function(a,b,c){void 0===b&&(b=!0),void 0===c&&(c=!1),this.checkState(a)&&(this._pendingState=a,this._clearWorld=b,this._clearCache=c,arguments.length>3&&(this._args=Array.prototype.splice.call(arguments,3)))},restart:function(a,b){void 0===a&&(a=!0),void 0===b&&(b=!1),this._pendingState=this.current,this._clearWorld=a,this._clearCache=b,arguments.length>2&&(this._args=Array.prototype.slice.call(arguments,2))},dummy:function(){},preUpdate:function(){if(this._pendingState&&this.game.isBooted){ +var a=this.current;if(this.clearCurrentState(),this.setCurrentState(this._pendingState),this.onStateChange.dispatch(this.current,a),this.current!==this._pendingState)return;this._pendingState=null,this.onPreloadCallback?(this.game.load.reset(!0),this.onPreloadCallback.call(this.callbackContext,this.game),0===this.game.load.totalQueuedFiles()&&0===this.game.load.totalQueuedPacks()?this.loadComplete():this.game.load.start()):this.loadComplete()}},clearCurrentState:function(){this.current&&(this.onShutDownCallback&&this.onShutDownCallback.call(this.callbackContext,this.game),this.game.tweens.removeAll(),this.game.camera.reset(),this.game.input.reset(!0),this.game.physics.clear(),this.game.time.removeAll(),this.game.scale.reset(this._clearWorld),this.game.debug&&this.game.debug.reset(),this._clearWorld&&(this.game.world.shutdown(),this._clearCache&&this.game.cache.destroy()))},checkState:function(a){return this.states[a]?this.states[a].preload||this.states[a].create||this.states[a].update||this.states[a].render?!0:(console.warn("Invalid Phaser State object given. Must contain at least a one of the required functions: preload, create, update or render"),!1):(console.warn("Phaser.StateManager - No state found with the key: "+a),!1)},link:function(a){this.states[a].game=this.game,this.states[a].add=this.game.add,this.states[a].make=this.game.make,this.states[a].camera=this.game.camera,this.states[a].cache=this.game.cache,this.states[a].input=this.game.input,this.states[a].load=this.game.load,this.states[a].math=this.game.math,this.states[a].sound=this.game.sound,this.states[a].scale=this.game.scale,this.states[a].state=this,this.states[a].stage=this.game.stage,this.states[a].time=this.game.time,this.states[a].tweens=this.game.tweens,this.states[a].world=this.game.world,this.states[a].particles=this.game.particles,this.states[a].rnd=this.game.rnd,this.states[a].physics=this.game.physics,this.states[a].key=a},unlink:function(a){this.states[a]&&(this.states[a].game=null,this.states[a].add=null,this.states[a].make=null,this.states[a].camera=null,this.states[a].cache=null,this.states[a].input=null,this.states[a].load=null,this.states[a].math=null,this.states[a].sound=null,this.states[a].scale=null,this.states[a].state=null,this.states[a].stage=null,this.states[a].time=null,this.states[a].tweens=null,this.states[a].world=null,this.states[a].particles=null,this.states[a].rnd=null,this.states[a].physics=null)},setCurrentState:function(a){this.callbackContext=this.states[a],this.link(a),this.onInitCallback=this.states[a].init||this.dummy,this.onPreloadCallback=this.states[a].preload||null,this.onLoadRenderCallback=this.states[a].loadRender||null,this.onLoadUpdateCallback=this.states[a].loadUpdate||null,this.onCreateCallback=this.states[a].create||null,this.onUpdateCallback=this.states[a].update||null,this.onPreRenderCallback=this.states[a].preRender||null,this.onRenderCallback=this.states[a].render||null,this.onResizeCallback=this.states[a].resize||null,this.onPausedCallback=this.states[a].paused||null,this.onResumedCallback=this.states[a].resumed||null,this.onPauseUpdateCallback=this.states[a].pauseUpdate||null,this.onShutDownCallback=this.states[a].shutdown||this.dummy,""!==this.current&&this.game.physics.reset(),this.current=a,this._created=!1,this.onInitCallback.apply(this.callbackContext,this._args),a===this._pendingState&&(this._args=[]),this.game._kickstart=!0},getCurrentState:function(){return this.states[this.current]},loadComplete:function(){this._created===!1&&this.onLoadUpdateCallback&&this.onLoadUpdateCallback.call(this.callbackContext,this.game),this._created===!1&&this.onCreateCallback?(this._created=!0,this.onCreateCallback.call(this.callbackContext,this.game)):this._created=!0},pause:function(){this._created&&this.onPausedCallback&&this.onPausedCallback.call(this.callbackContext,this.game)},resume:function(){this._created&&this.onResumedCallback&&this.onResumedCallback.call(this.callbackContext,this.game)},update:function(){this._created?this.onUpdateCallback&&this.onUpdateCallback.call(this.callbackContext,this.game):this.onLoadUpdateCallback&&this.onLoadUpdateCallback.call(this.callbackContext,this.game)},pauseUpdate:function(){this._created?this.onPauseUpdateCallback&&this.onPauseUpdateCallback.call(this.callbackContext,this.game):this.onLoadUpdateCallback&&this.onLoadUpdateCallback.call(this.callbackContext,this.game)},preRender:function(a){this._created&&this.onPreRenderCallback&&this.onPreRenderCallback.call(this.callbackContext,this.game,a)},resize:function(a,b){this.onResizeCallback&&this.onResizeCallback.call(this.callbackContext,a,b)},render:function(){this._created?this.onRenderCallback&&(this.game.renderType===c.CANVAS?(this.game.context.save(),this.game.context.setTransform(1,0,0,1,0,0),this.onRenderCallback.call(this.callbackContext,this.game),this.game.context.restore()):this.onRenderCallback.call(this.callbackContext,this.game)):this.onLoadRenderCallback&&this.onLoadRenderCallback.call(this.callbackContext,this.game)},destroy:function(){this._clearWorld=!0,this._clearCache=!0,this.clearCurrentState(),this.callbackContext=null,this.onInitCallback=null,this.onShutDownCallback=null,this.onPreloadCallback=null,this.onLoadRenderCallback=null,this.onLoadUpdateCallback=null,this.onCreateCallback=null,this.onUpdateCallback=null,this.onRenderCallback=null,this.onPausedCallback=null,this.onResumedCallback=null,this.onPauseUpdateCallback=null,this.game=null,this.states={},this._pendingState=null,this.current=""}},c.StateManager.prototype.constructor=c.StateManager,Object.defineProperty(c.StateManager.prototype,"created",{get:function(){return this._created}}),c.Signal=function(){},c.Signal.prototype={_bindings:null,_prevParams:null,memorize:!1,_shouldPropagate:!0,active:!0,_boundDispatch:!1,validateListener:function(a,b){if("function"!=typeof a)throw new Error("Phaser.Signal: listener is a required param of {fn}() and should be a Function.".replace("{fn}",b))},_registerListener:function(a,b,d,e,f){var g,h=this._indexOfListener(a,d);if(-1!==h){if(g=this._bindings[h],g.isOnce()!==b)throw new Error("You cannot add"+(b?"":"Once")+"() then add"+(b?"Once":"")+"() the same listener without removing the relationship first.")}else g=new c.SignalBinding(this,a,b,d,e,f),this._addBinding(g);return this.memorize&&this._prevParams&&g.execute(this._prevParams),g},_addBinding:function(a){this._bindings||(this._bindings=[]);var b=this._bindings.length;do b--;while(this._bindings[b]&&a._priority<=this._bindings[b]._priority);this._bindings.splice(b+1,0,a)},_indexOfListener:function(a,b){if(!this._bindings)return-1;void 0===b&&(b=null);for(var c,d=this._bindings.length;d--;)if(c=this._bindings[d],c._listener===a&&c.context===b)return d;return-1},has:function(a,b){return-1!==this._indexOfListener(a,b)},add:function(a,b,c){this.validateListener(a,"add");var d=[];if(arguments.length>3)for(var e=3;e3)for(var e=3;ea||a>=this.children.length?-1:this.getChildAt(a)},c.Group.prototype.create=function(a,b,c,d,e,f){void 0===e&&(e=!0);var g=new this.classType(this.game,a,b,c,d);return g.exists=e,g.visible=e,g.alive=e,this.add(g,!1,f)},c.Group.prototype.createMultiple=function(a,b,c,d){void 0===c&&(c=0),void 0===d&&(d=!1),Array.isArray(b)||(b=[b]),Array.isArray(c)||(c=[c]);var e=this,f=[];return b.forEach(function(b){c.forEach(function(c){for(var g=0;a>g;g++)f.push(e.create(0,0,b,c,d))})}),f},c.Group.prototype.updateZ=function(){for(var a=this.children.length;a--;)this.children[a].z=a},c.Group.prototype.align=function(a,b,d,e,f,g){if(void 0===f&&(f=c.TOP_LEFT),void 0===g&&(g=0),!(0===this.children.length||g>this.children.length||-1===a&&-1===b))for(var h=new c.Rectangle(0,0,d,e),i=a*d,j=b*e,k=g;kthis.children.length-1&&(a=0),this.cursor?(this.cursorIndex=a,this.cursor=this.children[this.cursorIndex],this.cursor):void 0},c.Group.prototype.next=function(){return this.cursor?(this.cursorIndex>=this.children.length-1?this.cursorIndex=0:this.cursorIndex++,this.cursor=this.children[this.cursorIndex],this.cursor):void 0},c.Group.prototype.previous=function(){return this.cursor?(0===this.cursorIndex?this.cursorIndex=this.children.length-1:this.cursorIndex--,this.cursor=this.children[this.cursorIndex],this.cursor):void 0},c.Group.prototype.swap=function(a,b){this.swapChildren(a,b),this.updateZ()},c.Group.prototype.bringToTop=function(a){return a.parent===this&&this.getIndex(a)0&&(this.remove(a,!1,!0),this.addAt(a,0,!0)),a},c.Group.prototype.moveUp=function(a){if(a.parent===this&&this.getIndex(a)0){var b=this.getIndex(a),c=this.getAt(b-1);c&&this.swap(a,c)}return a},c.Group.prototype.xy=function(a,b,c){return 0>a||a>this.children.length?-1:(this.getChildAt(a).x=b,void(this.getChildAt(a).y=c))},c.Group.prototype.reverse=function(){this.children.reverse(),this.updateZ()},c.Group.prototype.getIndex=function(a){return this.children.indexOf(a)},c.Group.prototype.getByName=function(a){for(var b=0;b0))return!1;var f=b.length;return 1===f?0===d?a[b[0]]=c:1==d?a[b[0]]+=c:2==d?a[b[0]]-=c:3==d?a[b[0]]*=c:4==d&&(a[b[0]]/=c):2===f?0===d?a[b[0]][b[1]]=c:1==d?a[b[0]][b[1]]+=c:2==d?a[b[0]][b[1]]-=c:3==d?a[b[0]][b[1]]*=c:4==d&&(a[b[0]][b[1]]/=c):3===f?0===d?a[b[0]][b[1]][b[2]]=c:1==d?a[b[0]][b[1]][b[2]]+=c:2==d?a[b[0]][b[1]][b[2]]-=c:3==d?a[b[0]][b[1]][b[2]]*=c:4==d&&(a[b[0]][b[1]][b[2]]/=c):4===f&&(0===d?a[b[0]][b[1]][b[2]][b[3]]=c:1==d?a[b[0]][b[1]][b[2]][b[3]]+=c:2==d?a[b[0]][b[1]][b[2]][b[3]]-=c:3==d?a[b[0]][b[1]][b[2]][b[3]]*=c:4==d&&(a[b[0]][b[1]][b[2]][b[3]]/=c)),!0},c.Group.prototype.checkProperty=function(a,b,d,e){return void 0===e&&(e=!1),!c.Utils.getProperty(a,b)&&e?!1:c.Utils.getProperty(a,b)===d},c.Group.prototype.set=function(a,b,c,d,e,f,g){return void 0===g&&(g=!1),b=b.split("."),void 0===d&&(d=!1),void 0===e&&(e=!1),(d===!1||d&&a.alive)&&(e===!1||e&&a.visible)?this.setProperty(a,b,c,f,g):void 0},c.Group.prototype.setAll=function(a,b,c,d,e,f){void 0===c&&(c=!1),void 0===d&&(d=!1),void 0===f&&(f=!1),a=a.split("."),e=e||0;for(var g=0;g2){c=[];for(var d=2;d2){e=[];for(var f=2;f2){d=[null];for(var e=2;e2){d=[null];for(var e=2;e2){d=[null];for(var e=2;eb[this._sortProperty]?1:a.zb[this._sortProperty]?-1:0},c.Group.prototype.iterate=function(a,b,d,e,f,g){if(d===c.Group.RETURN_TOTAL&&0===this.children.length)return 0;for(var h=0,i=0;i0?this.children[this.children.length-1]:void 0},c.Group.prototype.getBottom=function(){return this.children.length>0?this.children[0]:void 0},c.Group.prototype.getClosestTo=function(a,b,d){for(var e=Number.MAX_VALUE,f=0,g=null,h=0;hf&&(!b||b.call(d,i,f))&&(e=f,g=i))}return g},c.Group.prototype.getFurthestFrom=function(a,b,d){for(var e=0,f=0,g=null,h=0;he&&(!b||b.call(d,i,f))&&(e=f,g=i))}return g},c.Group.prototype.countLiving=function(){return this.iterate("alive",!0,c.Group.RETURN_TOTAL)},c.Group.prototype.countDead=function(){return this.iterate("alive",!1,c.Group.RETURN_TOTAL)},c.Group.prototype.getRandom=function(a,b){return 0===this.children.length?null:(a=a||0,b=b||this.children.length,c.ArrayUtils.getRandomItem(this.children,a,b))},c.Group.prototype.remove=function(a,b,c){if(void 0===b&&(b=!1),void 0===c&&(c=!1),0===this.children.length||-1===this.children.indexOf(a))return!1;c||!a.events||a.destroyPhase||a.events.onRemovedFromGroup$dispatch(a,this);var d=this.removeChild(a);return this.removeFromHash(a),this.updateZ(),this.cursor===a&&this.next(),b&&d&&d.destroy(!0),!0},c.Group.prototype.moveAll=function(a,b){if(void 0===b&&(b=!1),this.children.length>0&&a instanceof c.Group){do a.add(this.children[0],b);while(this.children.length>0);this.hash=[],this.cursor=null}return a},c.Group.prototype.removeAll=function(a,b,c){if(void 0===a&&(a=!1),void 0===b&&(b=!1),void 0===c&&(c=!1),0!==this.children.length){do{!b&&this.children[0].events&&this.children[0].events.onRemovedFromGroup$dispatch(this.children[0],this);var d=this.removeChild(this.children[0]);this.removeFromHash(d),a&&d&&d.destroy(!0,c)}while(this.children.length>0);this.hash=[],this.cursor=null}},c.Group.prototype.removeBetween=function(a,b,c,d){if(void 0===b&&(b=this.children.length-1),void 0===c&&(c=!1),void 0===d&&(d=!1),0!==this.children.length){if(a>b||0>a||b>this.children.length)return!1;for(var e=b;e>=a;){!d&&this.children[e].events&&this.children[e].events.onRemovedFromGroup$dispatch(this.children[e],this);var f=this.removeChild(this.children[e]);this.removeFromHash(f),c&&f&&f.destroy(!0),this.cursor===this.children[e]&&(this.cursor=null), +e--}this.updateZ()}},c.Group.prototype.destroy=function(a,b){null===this.game||this.ignoreDestroy||(void 0===a&&(a=!0),void 0===b&&(b=!1),this.onDestroy.dispatch(this,a,b),this.removeAll(a),this.cursor=null,this.filters=null,this.pendingDestroy=!1,b||(this.parent&&this.parent.removeChild(this),this.game=null,this.exists=!1))},Object.defineProperty(c.Group.prototype,"total",{get:function(){return this.iterate("exists",!0,c.Group.RETURN_TOTAL)}}),Object.defineProperty(c.Group.prototype,"length",{get:function(){return this.children.length}}),Object.defineProperty(c.Group.prototype,"angle",{get:function(){return c.Math.radToDeg(this.rotation)},set:function(a){this.rotation=c.Math.degToRad(a)}}),Object.defineProperty(c.Group.prototype,"centerX",{get:function(){return this.getBounds().centerX},set:function(a){var b=this.getBounds(),c=this.x-b.x;this.x=a+c-b.halfWidth}}),Object.defineProperty(c.Group.prototype,"centerY",{get:function(){return this.getBounds().centerY},set:function(a){var b=this.getBounds(),c=this.y-b.y;this.y=a+c-b.halfHeight}}),Object.defineProperty(c.Group.prototype,"left",{get:function(){return this.getBounds().left},set:function(a){var b=this.getBounds(),c=this.x-b.x;this.x=a+c}}),Object.defineProperty(c.Group.prototype,"right",{get:function(){return this.getBounds().right},set:function(a){var b=this.getBounds(),c=this.x-b.x;this.x=a+c-b.width}}),Object.defineProperty(c.Group.prototype,"top",{get:function(){return this.getBounds().top},set:function(a){var b=this.getBounds(),c=this.y-b.y;this.y=a+c}}),Object.defineProperty(c.Group.prototype,"bottom",{get:function(){return this.getBounds().bottom},set:function(a){var b=this.getBounds(),c=this.y-b.y;this.y=a+c-b.height}}),c.World=function(a){c.Group.call(this,a,null,"__world",!1),this.bounds=new c.Rectangle(0,0,a.width,a.height),this.camera=null,this._definedSize=!1,this._width=a.width,this._height=a.height,this.game.state.onStateChange.add(this.stateChange,this)},c.World.prototype=Object.create(c.Group.prototype),c.World.prototype.constructor=c.World,c.World.prototype.boot=function(){this.camera=new c.Camera(this.game,0,0,0,this.game.width,this.game.height),this.game.stage.addChild(this),this.camera.boot()},c.World.prototype.stateChange=function(){this.x=0,this.y=0,this.camera.reset()},c.World.prototype.setBounds=function(a,b,c,d){this._definedSize=!0,this._width=c,this._height=d,this.bounds.setTo(a,b,c,d),this.x=a,this.y=b,this.camera.bounds&&this.camera.bounds.setTo(a,b,Math.max(c,this.game.width),Math.max(d,this.game.height)),this.game.physics.setBoundsToWorld()},c.World.prototype.resize=function(a,b){this._definedSize&&(athis.bounds.right&&(a.x=this.bounds.left)),e&&(a.y+a._currentBounds.heightthis.bounds.bottom&&(a.y=this.bounds.top))):(d&&a.x+bthis.bounds.right&&(a.x=this.bounds.left-b),e&&a.y+bthis.bounds.bottom&&(a.y=this.bounds.top-b))},Object.defineProperty(c.World.prototype,"width",{get:function(){return this.bounds.width},set:function(a){ag;g++)e>g?f.push("color: #ff2424; background: #fff"):f.push("color: #959595; background: #fff");console.log.apply(console,f)}else window.console&&console.log("Phaser v"+a+" | Pixi.js "+PIXI.VERSION+" | "+b+" | "+d+" | http://phaser.io")}},setUpRenderer:function(){if(this.config.canvas?this.canvas=this.config.canvas:this.canvas=c.Canvas.create(this,this.width,this.height,this.config.canvasID,!0),this.config.canvasStyle?this.canvas.style=this.config.canvasStyle:this.canvas.style["-webkit-full-screen"]="width: 100%; height: 100%",this.renderType===c.HEADLESS||this.renderType===c.CANVAS||this.renderType===c.AUTO&&!this.device.webGL){if(!this.device.canvas)throw new Error("Phaser.Game - Cannot create Canvas or WebGL context, aborting.");this.renderType=c.CANVAS,this.renderer=new PIXI.CanvasRenderer(this),this.context=this.renderer.context}else this.renderType=c.WEBGL,this.renderer=new PIXI.WebGLRenderer(this),this.context=null,this.canvas.addEventListener("webglcontextlost",this.contextLost.bind(this),!1),this.canvas.addEventListener("webglcontextrestored",this.contextRestored.bind(this),!1);this.device.cocoonJS&&(this.canvas.screencanvas=this.renderType===c.CANVAS),this.renderType!==c.HEADLESS&&(this.stage.smoothed=this.antialias,c.Canvas.addToDOM(this.canvas,this.parent,!1),c.Canvas.setTouchAction(this.canvas))},contextLost:function(a){a.preventDefault(),this.renderer.contextLost=!0},contextRestored:function(){this.renderer.initContext(),this.cache.clearGLTextures(),this.renderer.contextLost=!1},update:function(a){if(this.time.update(a),this._kickstart)return this.updateLogic(this.time.desiredFpsMult),this.updateRender(this.time.slowMotion*this.time.desiredFps),void(this._kickstart=!1);if(this._spiraling>1&&!this.forceSingleUpdate)this.time.time>this._nextFpsNotification&&(this._nextFpsNotification=this.time.time+1e4,this.fpsProblemNotifier.dispatch()),this._deltaTime=0,this._spiraling=0,this.updateRender(this.time.slowMotion*this.time.desiredFps);else{var b=1e3*this.time.slowMotion/this.time.desiredFps;this._deltaTime+=Math.max(Math.min(3*b,this.time.elapsed),0);var c=0;for(this.updatesThisFrame=Math.floor(this._deltaTime/b),this.forceSingleUpdate&&(this.updatesThisFrame=Math.min(1,this.updatesThisFrame));this._deltaTime>=b&&(this._deltaTime-=b,this.currentUpdateID=c,this.updateLogic(this.time.desiredFpsMult),c++,!this.forceSingleUpdate||1!==c);)this.time.refresh();c>this._lastCount?this._spiraling++:c=c.Input.MAX_POINTERS)return console.warn("Phaser.Input.addPointer: Maximum limit of "+c.Input.MAX_POINTERS+" pointers reached."),null;var a=this.pointers.length+1,b=new c.Pointer(this.game,a,c.PointerMode.TOUCH);return this.pointers.push(b),this["pointer"+a]=b,b},update:function(){if(this.keyboard&&this.keyboard.update(),this.pollRate>0&&this._pollCounter=0&&this.countActivePointers(this.maxPointers)>=this.maxPointers)return null;if(!this.pointer1.active)return this.pointer1.start(a);if(!this.pointer2.active)return this.pointer2.start(a);for(var b=2;b0;c++){var d=this.pointers[c];d.active&&b--}return a-b},getPointer:function(a){void 0===a&&(a=!1);for(var b=0;b=g&&this._localPoint.x=h&&this._localPoint.y=g&&this._localPoint.x=h&&this._localPoint.y0&&this._pollCounterthis.game.time.time},justReleased:function(a){return a=a||250,this.isUp&&this.timeUp+a>this.game.time.time},reset:function(){this.isDown=!1,this.isUp=!0,this.timeDown=this.game.time.time,this.repeats=0,this.altKey=!1,this.shiftKey=!1,this.ctrlKey=!1},destroy:function(){this.onDown.dispose(),this.onUp.dispose(),this.onFloat.dispose(),this.parent=null,this.game=null}},c.DeviceButton.prototype.constructor=c.DeviceButton,Object.defineProperty(c.DeviceButton.prototype,"duration",{get:function(){return this.isUp?-1:this.game.time.time-this.timeDown}}),c.Pointer=function(a,b,d){this.game=a,this.id=b,this.type=c.POINTER,this.exists=!0,this.identifier=0,this.pointerId=null,this.pointerMode=d||c.PointerMode.CURSOR|c.PointerMode.CONTACT,this.target=null,this.button=null,this.leftButton=new c.DeviceButton(this,c.Pointer.LEFT_BUTTON),this.middleButton=new c.DeviceButton(this,c.Pointer.MIDDLE_BUTTON),this.rightButton=new c.DeviceButton(this,c.Pointer.RIGHT_BUTTON),this.backButton=new c.DeviceButton(this,c.Pointer.BACK_BUTTON),this.forwardButton=new c.DeviceButton(this,c.Pointer.FORWARD_BUTTON),this.eraserButton=new c.DeviceButton(this,c.Pointer.ERASER_BUTTON),this._holdSent=!1,this._history=[],this._nextDrop=0,this._stateReset=!1,this.withinGame=!1,this.clientX=-1,this.clientY=-1,this.pageX=-1,this.pageY=-1,this.screenX=-1,this.screenY=-1,this.rawMovementX=0,this.rawMovementY=0,this.movementX=0,this.movementY=0,this.x=-1,this.y=-1,this.isMouse=0===b,this.isDown=!1,this.isUp=!0,this.timeDown=0,this.timeUp=0,this.previousTapTime=0,this.totalTouches=0,this.msSinceLastClick=Number.MAX_VALUE,this.targetObject=null,this.interactiveCandidates=[],this.active=!1,this.dirty=!1,this.position=new c.Point,this.positionDown=new c.Point,this.positionUp=new c.Point,this.circle=new c.Circle(0,0,44),this._clickTrampolines=null,this._trampolineTargetObject=null},c.Pointer.NO_BUTTON=0,c.Pointer.LEFT_BUTTON=1,c.Pointer.RIGHT_BUTTON=2,c.Pointer.MIDDLE_BUTTON=4,c.Pointer.BACK_BUTTON=8,c.Pointer.FORWARD_BUTTON=16,c.Pointer.ERASER_BUTTON=32,c.Pointer.prototype={resetButtons:function(){this.isDown=!1,this.isUp=!0,this.isMouse&&(this.leftButton.reset(),this.middleButton.reset(),this.rightButton.reset(),this.backButton.reset(),this.forwardButton.reset(),this.eraserButton.reset())},processButtonsDown:function(a,b){c.Pointer.LEFT_BUTTON&a&&this.leftButton.start(b),c.Pointer.RIGHT_BUTTON&a&&this.rightButton.start(b),c.Pointer.MIDDLE_BUTTON&a&&this.middleButton.start(b),c.Pointer.BACK_BUTTON&a&&this.backButton.start(b),c.Pointer.FORWARD_BUTTON&a&&this.forwardButton.start(b),c.Pointer.ERASER_BUTTON&a&&this.eraserButton.start(b)},processButtonsUp:function(a,b){a===c.Mouse.LEFT_BUTTON&&this.leftButton.stop(b),a===c.Mouse.RIGHT_BUTTON&&this.rightButton.stop(b),a===c.Mouse.MIDDLE_BUTTON&&this.middleButton.stop(b),a===c.Mouse.BACK_BUTTON&&this.backButton.stop(b),a===c.Mouse.FORWARD_BUTTON&&this.forwardButton.stop(b),5===a&&this.eraserButton.stop(b)},updateButtons:function(a){this.button=a.button;var b="down"===a.type.toLowerCase().substr(-4);void 0!==a.buttons?b?this.processButtonsDown(a.buttons,a):this.processButtonsUp(a.button,a):b?this.leftButton.start(a):(this.leftButton.stop(a),this.rightButton.stop(a)),1===a.buttons&&a.ctrlKey&&this.leftButton.isDown&&(this.leftButton.stop(a),this.rightButton.start(a)),this.isUp=!0,this.isDown=!1,(this.leftButton.isDown||this.rightButton.isDown||this.middleButton.isDown||this.backButton.isDown||this.forwardButton.isDown||this.eraserButton.isDown)&&(this.isUp=!1,this.isDown=!0)},start:function(a){var b=this.game.input;return a.pointerId&&(this.pointerId=a.pointerId),this.identifier=a.identifier,this.target=a.target,this.isMouse?this.updateButtons(a):(this.isDown=!0,this.isUp=!1),this.active=!0,this.withinGame=!0,this.dirty=!1,this._history=[],this._clickTrampolines=null,this._trampolineTargetObject=null,this.msSinceLastClick=this.game.time.time-this.timeDown,this.timeDown=this.game.time.time,this._holdSent=!1,this.move(a,!0),this.positionDown.setTo(this.x,this.y),(b.multiInputOverride===c.Input.MOUSE_OVERRIDES_TOUCH||b.multiInputOverride===c.Input.MOUSE_TOUCH_COMBINE||b.multiInputOverride===c.Input.TOUCH_OVERRIDES_MOUSE&&0===b.totalActivePointers)&&(b.x=this.x,b.y=this.y,b.position.setTo(this.x,this.y),b.onDown.dispatch(this,a),b.resetSpeed(this.x,this.y)),this._stateReset=!1,this.totalTouches++,null!==this.targetObject&&this.targetObject._touchedHandler(this),this},update:function(){var a=this.game.input;this.active&&(this.dirty&&(a.interactiveItems.total>0&&this.processInteractiveObjects(!1),this.dirty=!1),this._holdSent===!1&&this.duration>=a.holdRate&&((a.multiInputOverride===c.Input.MOUSE_OVERRIDES_TOUCH||a.multiInputOverride===c.Input.MOUSE_TOUCH_COMBINE||a.multiInputOverride===c.Input.TOUCH_OVERRIDES_MOUSE&&0===a.totalActivePointers)&&a.onHold.dispatch(this),this._holdSent=!0),a.recordPointerHistory&&this.game.time.time>=this._nextDrop&&(this._nextDrop=this.game.time.time+a.recordRate,this._history.push({x:this.position.x,y:this.position.y}),this._history.length>a.recordLimit&&this._history.shift()))},move:function(a,b){var d=this.game.input;if(!d.pollLocked){if(void 0===b&&(b=!1),void 0!==a.button&&(this.button=a.button),b&&this.isMouse&&this.updateButtons(a),this.clientX=a.clientX,this.clientY=a.clientY,this.pageX=a.pageX,this.pageY=a.pageY,this.screenX=a.screenX,this.screenY=a.screenY,this.isMouse&&d.mouse.locked&&!b&&(this.rawMovementX=a.movementX||a.mozMovementX||a.webkitMovementX||0,this.rawMovementY=a.movementY||a.mozMovementY||a.webkitMovementY||0,this.movementX+=this.rawMovementX,this.movementY+=this.rawMovementY),this.x=(this.pageX-this.game.scale.offset.x)*d.scale.x,this.y=(this.pageY-this.game.scale.offset.y)*d.scale.y,this.position.setTo(this.x,this.y),this.circle.x=this.x,this.circle.y=this.y,(d.multiInputOverride===c.Input.MOUSE_OVERRIDES_TOUCH||d.multiInputOverride===c.Input.MOUSE_TOUCH_COMBINE||d.multiInputOverride===c.Input.TOUCH_OVERRIDES_MOUSE&&0===d.totalActivePointers)&&(d.activePointer=this,d.x=this.x,d.y=this.y,d.position.setTo(d.x,d.y),d.circle.x=d.x,d.circle.y=d.y),this.withinGame=this.game.scale.bounds.contains(this.pageX,this.pageY),this.game.paused)return this;for(var e=d.moveCallbacks.length;e--;)d.moveCallbacks[e].callback.call(d.moveCallbacks[e].context,this,this.x,this.y,b);return null!==this.targetObject&&this.targetObject.isDragged===!0?this.targetObject.update(this)===!1&&(this.targetObject=null):d.interactiveItems.total>0&&this.processInteractiveObjects(b),this}},processInteractiveObjects:function(a){var b=0,c=-1,d=null,e=this.game.input.interactiveItems.first;for(this.interactiveCandidates=[];e;)e.checked=!1,e.validForInput(c,b,!1)&&(e.checked=!0,(a&&e.checkPointerDown(this,!0)||!a&&e.checkPointerOver(this,!0))&&(b=e.sprite.renderOrderID,c=e.priorityID,d=e,this.interactiveCandidates.push(e))),e=this.game.input.interactiveItems.next;for(e=this.game.input.interactiveItems.first;e;)!e.checked&&e.validForInput(c,b,!0)&&(a&&e.checkPointerDown(this,!1)||!a&&e.checkPointerOver(this,!1))&&(b=e.sprite.renderOrderID,c=e.priorityID,d=e,this.interactiveCandidates.push(e)),e=this.game.input.interactiveItems.next;return this.game.input.customCandidateHandler&&(d=this.game.input.customCandidateHandler.call(this.game.input.customCandidateHandlerContext,this,this.interactiveCandidates,d)),this.swapTarget(d,!1),null!==this.targetObject},swapTarget:function(a,b){void 0===b&&(b=!1),null===a?this.targetObject&&(this.targetObject._pointerOutHandler(this,b),this.targetObject=null):null===this.targetObject?(this.targetObject=a,a._pointerOverHandler(this,b)):this.targetObject===a?a.update(this)===!1&&(this.targetObject=null):(this.targetObject._pointerOutHandler(this,b),this.targetObject=a,this.targetObject._pointerOverHandler(this,b))},leave:function(a){this.withinGame=!1,this.move(a,!1)},stop:function(a){var b=this.game.input;return this._stateReset&&this.withinGame?void a.preventDefault():(this.timeUp=this.game.time.time,(b.multiInputOverride===c.Input.MOUSE_OVERRIDES_TOUCH||b.multiInputOverride===c.Input.MOUSE_TOUCH_COMBINE||b.multiInputOverride===c.Input.TOUCH_OVERRIDES_MOUSE&&0===b.totalActivePointers)&&(b.onUp.dispatch(this,a),this.duration>=0&&this.duration<=b.tapRate&&(this.timeUp-this.previousTapTime0&&(this.active=!1),this.withinGame=this.game.scale.bounds.contains(a.pageX,a.pageY),this.pointerId=null,this.identifier=null,this.positionUp.setTo(this.x,this.y),this.isMouse===!1&&b.currentPointers--,b.interactiveItems.callAll("_releasedHandler",this),this._clickTrampolines&&(this._trampolineTargetObject=this.targetObject),this.targetObject=null,this)},justPressed:function(a){return a=a||this.game.input.justPressedRate,this.isDown===!0&&this.timeDown+a>this.game.time.time},justReleased:function(a){return a=a||this.game.input.justReleasedRate,this.isUp&&this.timeUp+a>this.game.time.time},addClickTrampoline:function(a,b,c,d){if(this.isDown){for(var e=this._clickTrampolines=this._clickTrampolines||[],f=0;fd;d++)this._pointerData[d]={id:d,x:0,y:0,isDown:!1,isUp:!1,isOver:!1,isOut:!1,timeOver:0,timeOut:0,timeDown:0,timeUp:0,downDuration:0,isDragged:!1};this.snapOffset=new c.Point,this.enabled=!0,this._wasEnabled=!0}return this.sprite.events.onAddedToGroup.add(this.addedToGroup,this),this.sprite.events.onRemovedFromGroup.add(this.removedFromGroup,this),this.flagged=!1,this.sprite},addedToGroup:function(){this._dragPhase||this._wasEnabled&&!this.enabled&&this.start()},removedFromGroup:function(){this._dragPhase||(this.enabled?(this._wasEnabled=!0,this.stop()):this._wasEnabled=!1)},reset:function(){this.enabled=!1,this.flagged=!1;for(var a=0;10>a;a++)this._pointerData[a]={id:a,x:0,y:0,isDown:!1,isUp:!1,isOver:!1,isOut:!1,timeOver:0,timeOut:0,timeDown:0,timeUp:0,downDuration:0,isDragged:!1}},stop:function(){this.enabled!==!1&&(this.enabled=!1,this.game.input.interactiveItems.remove(this))},destroy:function(){this.sprite&&(this._setHandCursor&&(this.game.canvas.style.cursor="default",this._setHandCursor=!1),this.enabled=!1,this.game.input.interactiveItems.remove(this),this._pointerData.length=0,this.boundsRect=null,this.boundsSprite=null,this.sprite=null)},validForInput:function(a,b,c){return void 0===c&&(c=!0),!this.enabled||0===this.sprite.scale.x||0===this.sprite.scale.y||this.priorityIDa||this.priorityID===a&&this.sprite.renderOrderID>b:!1},isPixelPerfect:function(){return this.pixelPerfectClick||this.pixelPerfectOver},pointerX:function(a){return a=a||0,this._pointerData[a].x},pointerY:function(a){return a=a||0,this._pointerData[a].y},pointerDown:function(a){return a=a||0,this._pointerData[a].isDown},pointerUp:function(a){return a=a||0,this._pointerData[a].isUp},pointerTimeDown:function(a){return a=a||0,this._pointerData[a].timeDown},pointerTimeUp:function(a){return a=a||0,this._pointerData[a].timeUp},pointerOver:function(a){if(!this.enabled)return!1;if(void 0===a){for(var b=0;10>b;b++)if(this._pointerData[b].isOver)return!0;return!1}return this._pointerData[a].isOver},pointerOut:function(a){if(!this.enabled)return!1;if(void 0!==a)return this._pointerData[a].isOut;for(var b=0;10>b;b++)if(this._pointerData[b].isOut)return!0},pointerTimeOver:function(a){return a=a||0,this._pointerData[a].timeOver},pointerTimeOut:function(a){return a=a||0,this._pointerData[a].timeOut},pointerDragged:function(a){return a=a||0,this._pointerData[a].isDragged},checkPointerDown:function(a,b){return a.isDown&&this.enabled&&this.sprite&&this.sprite.parent&&this.sprite.visible&&this.sprite.parent.visible&&0!==this.sprite.worldScale.x&&0!==this.sprite.worldScale.y&&this.game.input.hitTest(this.sprite,a,this._tempPoint)?(void 0===b&&(b=!1),!b&&this.pixelPerfectClick?this.checkPixel(this._tempPoint.x,this._tempPoint.y):!0):!1},checkPointerOver:function(a,b){return this.enabled&&this.sprite&&this.sprite.parent&&this.sprite.visible&&this.sprite.parent.visible&&0!==this.sprite.worldScale.x&&0!==this.sprite.worldScale.y&&this.game.input.hitTest(this.sprite,a,this._tempPoint)?(void 0===b&&(b=!1),!b&&this.pixelPerfectOver?this.checkPixel(this._tempPoint.x,this._tempPoint.y):!0):!1},checkPixel:function(a,b,c){if(this.sprite.texture.baseTexture.source){if(null===a&&null===b){this.game.input.getLocalPosition(this.sprite,c,this._tempPoint);var a=this._tempPoint.x,b=this._tempPoint.y}if(0!==this.sprite.anchor.x&&(a-=-this.sprite.texture.frame.width*this.sprite.anchor.x),0!==this.sprite.anchor.y&&(b-=-this.sprite.texture.frame.height*this.sprite.anchor.y),a+=this.sprite.texture.frame.x,b+=this.sprite.texture.frame.y,this.sprite.texture.trim&&(a-=this.sprite.texture.trim.x,b-=this.sprite.texture.trim.y,athis.sprite.texture.crop.right||bthis.sprite.texture.crop.bottom))return this._dx=a,this._dy=b,!1;this._dx=a,this._dy=b,this.game.input.hitContext.clearRect(0,0,1,1),this.game.input.hitContext.drawImage(this.sprite.texture.baseTexture.source,a,b,1,1,0,0,1,1);var d=this.game.input.hitContext.getImageData(0,0,1,1);if(d.data[3]>=this.pixelPerfectAlpha)return!0}return!1},update:function(a){return null!==this.sprite&&void 0!==this.sprite.parent?this.enabled&&this.sprite.visible&&this.sprite.parent.visible?this._pendingDrag?(this._dragDistancePass||(this._dragDistancePass=c.Math.distance(a.x,a.y,this.downPoint.x,this.downPoint.y)>=this.dragDistanceThreshold),this._dragDistancePass&&this._dragTimePass&&this.startDrag(a),!0):this.draggable&&this._draggedPointerID===a.id?this.updateDrag(a,!1):this._pointerData[a.id].isOver?this.checkPointerOver(a)?(this._pointerData[a.id].x=a.x-this.sprite.x,this._pointerData[a.id].y=a.y-this.sprite.y,!0):(this._pointerOutHandler(a),!1):void 0:(this._pointerOutHandler(a),!1):void 0},_pointerOverHandler:function(a,b){if(null!==this.sprite){var d=this._pointerData[a.id];if(d.isOver===!1||a.dirty){var e=d.isOver===!1;d.isOver=!0,d.isOut=!1,d.timeOver=this.game.time.time,d.x=a.x-this.sprite.x,d.y=a.y-this.sprite.y,this.useHandCursor&&d.isDragged===!1&&(this.game.canvas.style.cursor="pointer",this._setHandCursor=!0),!b&&e&&this.sprite&&this.sprite.events&&this.sprite.events.onInputOver$dispatch(this.sprite,a),this.sprite.parent&&this.sprite.parent.type===c.GROUP&&this.sprite.parent.onChildInputOver.dispatch(this.sprite,a)}}},_pointerOutHandler:function(a,b){if(null!==this.sprite){var d=this._pointerData[a.id];d.isOver=!1,d.isOut=!0,d.timeOut=this.game.time.time,this.useHandCursor&&d.isDragged===!1&&(this.game.canvas.style.cursor="default",this._setHandCursor=!1),!b&&this.sprite&&this.sprite.events&&(this.sprite.events.onInputOut$dispatch(this.sprite,a),this.sprite&&this.sprite.parent&&this.sprite.parent.type===c.GROUP&&this.sprite.parent.onChildInputOut.dispatch(this.sprite,a))}},_touchedHandler:function(a){if(null!==this.sprite){var b=this._pointerData[a.id];if(!b.isDown&&b.isOver){if(this.pixelPerfectClick&&!this.checkPixel(null,null,a))return;if(b.isDown=!0,b.isUp=!1,b.timeDown=this.game.time.time,this.downPoint.set(a.x,a.y),a.dirty=!0,this.sprite&&this.sprite.events&&(this.sprite.events.onInputDown$dispatch(this.sprite,a),this.sprite&&this.sprite.parent&&this.sprite.parent.type===c.GROUP&&this.sprite.parent.onChildInputDown.dispatch(this.sprite,a),null===this.sprite))return;this.draggable&&this.isDragged===!1&&(0===this.dragTimeThreshold&&0===this.dragDistanceThreshold?this.startDrag(a):(this._pendingDrag=!0,this._dragDistancePass=0===this.dragDistanceThreshold,this.dragTimeThreshold>0?(this._dragTimePass=!1,this.game.time.events.add(this.dragTimeThreshold,this.dragTimeElapsed,this,a)):this._dragTimePass=!0)),this.bringToTop&&this.sprite.bringToTop()}}},dragTimeElapsed:function(a){this._dragTimePass=!0,this._pendingDrag&&this.sprite&&this._dragDistancePass&&this.startDrag(a)},_releasedHandler:function(a){if(null!==this.sprite){var b=this._pointerData[a.id];if(b.isDown&&a.isUp){b.isDown=!1,b.isUp=!0,b.timeUp=this.game.time.time,b.downDuration=b.timeUp-b.timeDown;var d=this.checkPointerOver(a);this.sprite&&this.sprite.events&&(this.dragStopBlocksInputUp&&(!this.dragStopBlocksInputUp||this.draggable&&this.isDragged&&this._draggedPointerID===a.id)||this.sprite.events.onInputUp$dispatch(this.sprite,a,d),this.sprite&&this.sprite.parent&&this.sprite.parent.type===c.GROUP&&this.sprite.parent.onChildInputUp.dispatch(this.sprite,a,d),d&&(d=this.checkPointerOver(a))),b.isOver=d,!d&&this.useHandCursor&&(this.game.canvas.style.cursor="default",this._setHandCursor=!1),a.dirty=!0,this._pendingDrag=!1,this.draggable&&this.isDragged&&this._draggedPointerID===a.id&&this.stopDrag(a)}}},updateDrag:function(a,b){if(void 0===b&&(b=!1),a.isUp)return this.stopDrag(a),!1;var c=this.globalToLocalX(a.x)+this._dragPoint.x+this.dragOffset.x,d=this.globalToLocalY(a.y)+this._dragPoint.y+this.dragOffset.y;if(this.sprite.fixedToCamera)this.allowHorizontalDrag&&(this.sprite.cameraOffset.x=c),this.allowVerticalDrag&&(this.sprite.cameraOffset.y=d),this.boundsRect&&this.checkBoundsRect(),this.boundsSprite&&this.checkBoundsSprite(),this.snapOnDrag&&(this.sprite.cameraOffset.x=Math.round((this.sprite.cameraOffset.x-this.snapOffsetX%this.snapX)/this.snapX)*this.snapX+this.snapOffsetX%this.snapX,this.sprite.cameraOffset.y=Math.round((this.sprite.cameraOffset.y-this.snapOffsetY%this.snapY)/this.snapY)*this.snapY+this.snapOffsetY%this.snapY,this.snapPoint.set(this.sprite.cameraOffset.x,this.sprite.cameraOffset.y));else{var e=this.game.camera.x-this._pointerData[a.id].camX,f=this.game.camera.y-this._pointerData[a.id].camY;this.allowHorizontalDrag&&(this.sprite.x=c+e),this.allowVerticalDrag&&(this.sprite.y=d+f),this.boundsRect&&this.checkBoundsRect(),this.boundsSprite&&this.checkBoundsSprite(),this.snapOnDrag&&(this.sprite.x=Math.round((this.sprite.x-this.snapOffsetX%this.snapX)/this.snapX)*this.snapX+this.snapOffsetX%this.snapX,this.sprite.y=Math.round((this.sprite.y-this.snapOffsetY%this.snapY)/this.snapY)*this.snapY+this.snapOffsetY%this.snapY,this.snapPoint.set(this.sprite.x,this.sprite.y))}return this.sprite.events.onDragUpdate.dispatch(this.sprite,a,c,d,this.snapPoint,b),!0},justOver:function(a,b){return a=a||0,b=b||500,this._pointerData[a].isOver&&this.overDuration(a)a;a++)this._pointerData[a].isDragged=!1;this.draggable=!1,this.isDragged=!1,this._draggedPointerID=-1,this._pendingDrag=!1},startDrag:function(a){var b=this.sprite.x,c=this.sprite.y;if(this.isDragged=!0,this._draggedPointerID=a.id,this._pointerData[a.id].camX=this.game.camera.x,this._pointerData[a.id].camY=this.game.camera.y,this._pointerData[a.id].isDragged=!0,this.sprite.fixedToCamera){if(this.dragFromCenter){var d=this.sprite.getBounds();this.sprite.cameraOffset.x=this.globalToLocalX(a.x)+(this.sprite.cameraOffset.x-d.centerX),this.sprite.cameraOffset.y=this.globalToLocalY(a.y)+(this.sprite.cameraOffset.y-d.centerY)}this._dragPoint.setTo(this.sprite.cameraOffset.x-a.x,this.sprite.cameraOffset.y-a.y)}else{if(this.dragFromCenter){var d=this.sprite.getBounds();this.sprite.x=this.globalToLocalX(a.x)+(this.sprite.x-d.centerX),this.sprite.y=this.globalToLocalY(a.y)+(this.sprite.y-d.centerY)}this._dragPoint.setTo(this.sprite.x-this.globalToLocalX(a.x),this.sprite.y-this.globalToLocalY(a.y))}this.updateDrag(a,!0),this.bringToTop&&(this._dragPhase=!0,this.sprite.bringToTop()),this.dragStartPoint.set(b,c),this.sprite.events.onDragStart$dispatch(this.sprite,a,b,c),this._pendingDrag=!1},globalToLocalX:function(a){return this.scaleLayer&&(a-=this.game.scale.grid.boundsFluid.x,a*=this.game.scale.grid.scaleFluidInversed.x),a},globalToLocalY:function(a){return this.scaleLayer&&(a-=this.game.scale.grid.boundsFluid.y,a*=this.game.scale.grid.scaleFluidInversed.y),a},stopDrag:function(a){this.isDragged=!1,this._draggedPointerID=-1,this._pointerData[a.id].isDragged=!1,this._dragPhase=!1,this._pendingDrag=!1,this.snapOnRelease&&(this.sprite.fixedToCamera?(this.sprite.cameraOffset.x=Math.round((this.sprite.cameraOffset.x-this.snapOffsetX%this.snapX)/this.snapX)*this.snapX+this.snapOffsetX%this.snapX,this.sprite.cameraOffset.y=Math.round((this.sprite.cameraOffset.y-this.snapOffsetY%this.snapY)/this.snapY)*this.snapY+this.snapOffsetY%this.snapY):(this.sprite.x=Math.round((this.sprite.x-this.snapOffsetX%this.snapX)/this.snapX)*this.snapX+this.snapOffsetX%this.snapX,this.sprite.y=Math.round((this.sprite.y-this.snapOffsetY%this.snapY)/this.snapY)*this.snapY+this.snapOffsetY%this.snapY)),this.sprite.events.onDragStop$dispatch(this.sprite,a),this.checkPointerOver(a)===!1&&this._pointerOutHandler(a)},setDragLock:function(a,b){void 0===a&&(a=!0),void 0===b&&(b=!0),this.allowHorizontalDrag=a,this.allowVerticalDrag=b},enableSnap:function(a,b,c,d,e,f){void 0===c&&(c=!0),void 0===d&&(d=!1),void 0===e&&(e=0),void 0===f&&(f=0),this.snapX=a,this.snapY=b,this.snapOffsetX=e,this.snapOffsetY=f,this.snapOnDrag=c,this.snapOnRelease=d},disableSnap:function(){this.snapOnDrag=!1,this.snapOnRelease=!1},checkBoundsRect:function(){this.sprite.fixedToCamera?(this.sprite.cameraOffset.xthis.boundsRect.right&&(this.sprite.cameraOffset.x=this.boundsRect.right-this.sprite.width),this.sprite.cameraOffset.ythis.boundsRect.bottom&&(this.sprite.cameraOffset.y=this.boundsRect.bottom-this.sprite.height)):(this.sprite.leftthis.boundsRect.right&&(this.sprite.x=this.boundsRect.right-(this.sprite.width-this.sprite.offsetX)),this.sprite.topthis.boundsRect.bottom&&(this.sprite.y=this.boundsRect.bottom-(this.sprite.height-this.sprite.offsetY)))},checkBoundsSprite:function(){this.sprite.fixedToCamera&&this.boundsSprite.fixedToCamera?(this.sprite.cameraOffset.xthis.boundsSprite.cameraOffset.x+this.boundsSprite.width&&(this.sprite.cameraOffset.x=this.boundsSprite.cameraOffset.x+this.boundsSprite.width-this.sprite.width),this.sprite.cameraOffset.ythis.boundsSprite.cameraOffset.y+this.boundsSprite.height&&(this.sprite.cameraOffset.y=this.boundsSprite.cameraOffset.y+this.boundsSprite.height-this.sprite.height)):(this.sprite.leftthis.boundsSprite.right&&(this.sprite.x=this.boundsSprite.right-(this.sprite.width-this.sprite.offsetX)), +this.sprite.topthis.boundsSprite.bottom&&(this.sprite.y=this.boundsSprite.bottom-(this.sprite.height-this.sprite.offsetY)))}},c.InputHandler.prototype.constructor=c.InputHandler,c.Gamepad=function(a){this.game=a,this._gamepadIndexMap={},this._rawPads=[],this._active=!1,this.enabled=!0,this._gamepadSupportAvailable=!!navigator.webkitGetGamepads||!!navigator.webkitGamepads||-1!=navigator.userAgent.indexOf("Firefox/")||!!navigator.getGamepads,this._prevRawGamepadTypes=[],this._prevTimestamps=[],this.callbackContext=this,this.onConnectCallback=null,this.onDisconnectCallback=null,this.onDownCallback=null,this.onUpCallback=null,this.onAxisCallback=null,this.onFloatCallback=null,this._ongamepadconnected=null,this._gamepaddisconnected=null,this._gamepads=[new c.SinglePad(a,this),new c.SinglePad(a,this),new c.SinglePad(a,this),new c.SinglePad(a,this)]},c.Gamepad.prototype={addCallbacks:function(a,b){"undefined"!=typeof b&&(this.onConnectCallback="function"==typeof b.onConnect?b.onConnect:this.onConnectCallback,this.onDisconnectCallback="function"==typeof b.onDisconnect?b.onDisconnect:this.onDisconnectCallback,this.onDownCallback="function"==typeof b.onDown?b.onDown:this.onDownCallback,this.onUpCallback="function"==typeof b.onUp?b.onUp:this.onUpCallback,this.onAxisCallback="function"==typeof b.onAxis?b.onAxis:this.onAxisCallback,this.onFloatCallback="function"==typeof b.onFloat?b.onFloat:this.onFloatCallback,this.callbackContext=a)},start:function(){if(!this._active){this._active=!0;var a=this;this._onGamepadConnected=function(b){return a.onGamepadConnected(b)},this._onGamepadDisconnected=function(b){return a.onGamepadDisconnected(b)},window.addEventListener("gamepadconnected",this._onGamepadConnected,!1),window.addEventListener("gamepaddisconnected",this._onGamepadDisconnected,!1)}},onGamepadConnected:function(a){var b=a.gamepad;this._rawPads.push(b),this._gamepads[b.index].connect(b)},onGamepadDisconnected:function(a){var b=a.gamepad;for(var c in this._rawPads)this._rawPads[c].index===b.index&&this._rawPads.splice(c,1);this._gamepads[b.index].disconnect()},update:function(){this._pollGamepads(),this.pad1.pollStatus(),this.pad2.pollStatus(),this.pad3.pollStatus(),this.pad4.pollStatus()},_pollGamepads:function(){if(this._active){if(navigator.getGamepads)var a=navigator.getGamepads();else if(navigator.webkitGetGamepads)var a=navigator.webkitGetGamepads();else if(navigator.webkitGamepads)var a=navigator.webkitGamepads();if(a){this._rawPads=[];for(var b=!1,c=0;c0&&d>this.deadZone||0>d&&d<-this.deadZone?this.processAxisChange(c,d):this.processAxisChange(c,0)}this._prevTimestamp=this._rawPad.timestamp}},connect:function(a){var b=!this.connected;this.connected=!0,this.index=a.index,this._rawPad=a,this._buttons=[],this._buttonsLen=a.buttons.length,this._axes=[],this._axesLen=a.axes.length;for(var d=0;dthis.maxHealth&&(this.health=this.maxHealth),this},heal:function(a){return this.alive&&(this.health+=a,this.health>this.maxHealth&&(this.health=this.maxHealth)),this}},c.Component.InCamera=function(){},c.Component.InCamera.prototype={inCamera:{get:function(){return this.game.world.camera.view.intersects(this._bounds)}}},c.Component.InputEnabled=function(){},c.Component.InputEnabled.prototype={input:null,inputEnabled:{get:function(){return this.input&&this.input.enabled},set:function(a){a?null===this.input?(this.input=new c.InputHandler(this),this.input.start()):this.input&&!this.input.enabled&&this.input.start():this.input&&this.input.enabled&&this.input.stop()}}},c.Component.InWorld=function(){},c.Component.InWorld.preUpdate=function(){if(this.autoCull||this.checkWorldBounds){if(this._bounds.copyFrom(this.getBounds()),this._bounds.x+=this.game.camera.view.x,this._bounds.y+=this.game.camera.view.y,this.autoCull)if(this.game.world.camera.view.intersects(this._bounds))this.renderable=!0,this.game.world.camera.totalInView++;else if(this.renderable=!1,this.outOfCameraBoundsKill)return this.kill(),!1;if(this.checkWorldBounds)if(this._outOfBoundsFired&&this.game.world.bounds.intersects(this._bounds))this._outOfBoundsFired=!1,this.events.onEnterBounds$dispatch(this);else if(!this._outOfBoundsFired&&!this.game.world.bounds.intersects(this._bounds)&&(this._outOfBoundsFired=!0,this.events.onOutOfBounds$dispatch(this),this.outOfBoundsKill))return this.kill(),!1}return!0},c.Component.InWorld.prototype={checkWorldBounds:!1,outOfBoundsKill:!1,outOfCameraBoundsKill:!1,_outOfBoundsFired:!1,inWorld:{get:function(){return this.game.world.bounds.intersects(this.getBounds())}}},c.Component.LifeSpan=function(){},c.Component.LifeSpan.preUpdate=function(){return this.lifespan>0&&(this.lifespan-=this.game.time.physicsElapsedMS,this.lifespan<=0)?(this.kill(),!1):!0},c.Component.LifeSpan.prototype={alive:!0,lifespan:0,revive:function(a){return void 0===a&&(a=100),this.alive=!0,this.exists=!0,this.visible=!0,"function"==typeof this.setHealth&&this.setHealth(a),this.events&&this.events.onRevived$dispatch(this),this},kill:function(){return this.alive=!1,this.exists=!1,this.visible=!1,this.events&&this.events.onKilled$dispatch(this),this}},c.Component.LoadTexture=function(){},c.Component.LoadTexture.prototype={customRender:!1,_frame:null,loadTexture:function(a,b,d){a===c.PENDING_ATLAS?(a=b,b=0):b=b||0,(d||void 0===d)&&this.animations&&this.animations.stop(),this.key=a,this.customRender=!1;var e=this.game.cache,f=!0,g=!this.texture.baseTexture.scaleMode;if(c.RenderTexture&&a instanceof c.RenderTexture)this.key=a.key,this.setTexture(a);else if(c.BitmapData&&a instanceof c.BitmapData)this.customRender=!0,this.setTexture(a.texture),f=e.hasFrameData(a.key,c.Cache.BITMAPDATA)?!this.animations.loadFrameData(e.getFrameData(a.key,c.Cache.BITMAPDATA),b):!this.animations.loadFrameData(a.frameData,0);else if(c.Video&&a instanceof c.Video){ +this.customRender=!0;var h=a.texture.valid;this.setTexture(a.texture),this.setFrame(a.texture.frame.clone()),a.onChangeSource.add(this.resizeFrame,this),this.texture.valid=h}else if(c.Tilemap&&a instanceof c.TilemapLayer)this.setTexture(PIXI.Texture.fromCanvas(a.canvas));else if(a instanceof PIXI.Texture)this.setTexture(a);else{var i=e.getImage(a,!0);this.key=i.key,this.setTexture(new PIXI.Texture(i.base)),"__default"===a?this.texture.baseTexture.skipRender=!0:this.texture.baseTexture.skipRender=!1,f=!this.animations.loadFrameData(i.frameData,b)}f&&(this._frame=c.Rectangle.clone(this.texture.frame)),g||(this.texture.baseTexture.scaleMode=1)},setFrame:function(a){this._frame=a,this.texture.frame.x=a.x,this.texture.frame.y=a.y,this.texture.frame.width=a.width,this.texture.frame.height=a.height,this.texture.crop.x=a.x,this.texture.crop.y=a.y,this.texture.crop.width=a.width,this.texture.crop.height=a.height,a.trimmed?(this.texture.trim?(this.texture.trim.x=a.spriteSourceSizeX,this.texture.trim.y=a.spriteSourceSizeY,this.texture.trim.width=a.sourceSizeW,this.texture.trim.height=a.sourceSizeH):this.texture.trim={x:a.spriteSourceSizeX,y:a.spriteSourceSizeY,width:a.sourceSizeW,height:a.sourceSizeH},this.texture.width=a.sourceSizeW,this.texture.height=a.sourceSizeH,this.texture.frame.width=a.sourceSizeW,this.texture.frame.height=a.sourceSizeH):!a.trimmed&&this.texture.trim&&(this.texture.trim=null),this.cropRect&&this.updateCrop(),this.texture.requiresReTint=!0,this.texture._updateUvs(),this.tilingTexture&&(this.refreshTexture=!0)},resizeFrame:function(a,b,c){this.texture.frame.resize(b,c),this.texture.setFrame(this.texture.frame)},resetFrame:function(){this._frame&&this.setFrame(this._frame)},frame:{get:function(){return this.animations.frame},set:function(a){this.animations.frame=a}},frameName:{get:function(){return this.animations.frameName},set:function(a){this.animations.frameName=a}}},c.Component.Overlap=function(){},c.Component.Overlap.prototype={overlap:function(a){return c.Rectangle.intersects(this.getBounds(),a.getBounds())}},c.Component.PhysicsBody=function(){},c.Component.PhysicsBody.preUpdate=function(){return this.fresh&&this.exists?(this.world.setTo(this.parent.position.x+this.position.x,this.parent.position.y+this.position.y),this.worldTransform.tx=this.world.x,this.worldTransform.ty=this.world.y,this.previousPosition.set(this.world.x,this.world.y),this.previousRotation=this.rotation,this.body&&this.body.preUpdate(),this.fresh=!1,!1):(this.previousPosition.set(this.world.x,this.world.y),this.previousRotation=this.rotation,this._exists&&this.parent.exists?!0:(this.renderOrderID=-1,!1))},c.Component.PhysicsBody.postUpdate=function(){this.exists&&this.body&&this.body.postUpdate()},c.Component.PhysicsBody.prototype={body:null,x:{get:function(){return this.position.x},set:function(a){this.position.x=a,this.body&&!this.body.dirty&&(this.body._reset=!0)}},y:{get:function(){return this.position.y},set:function(a){this.position.y=a,this.body&&!this.body.dirty&&(this.body._reset=!0)}}},c.Component.Reset=function(){},c.Component.Reset.prototype.reset=function(a,b,c){return void 0===c&&(c=1),this.world.set(a,b),this.position.set(a,b),this.fresh=!0,this.exists=!0,this.visible=!0,this.renderable=!0,this.components.InWorld&&(this._outOfBoundsFired=!1),this.components.LifeSpan&&(this.alive=!0,this.health=c),this.components.PhysicsBody&&this.body&&this.body.reset(a,b,!1,!1),this},c.Component.ScaleMinMax=function(){},c.Component.ScaleMinMax.prototype={transformCallback:null,transformCallbackContext:this,scaleMin:null,scaleMax:null,checkTransform:function(a){this.scaleMin&&(a.athis.scaleMax.x&&(a.a=this.scaleMax.x),a.d>this.scaleMax.y&&(a.d=this.scaleMax.y))},setScaleMinMax:function(a,b,d,e){void 0===b?b=d=e=a:void 0===d&&(d=e=b,b=a),null===a?this.scaleMin=null:this.scaleMin?this.scaleMin.set(a,b):this.scaleMin=new c.Point(a,b),null===d?this.scaleMax=null:this.scaleMax?this.scaleMax.set(d,e):this.scaleMax=new c.Point(d,e),null===this.scaleMin?this.transformCallback=null:(this.transformCallback=this.checkTransform,this.transformCallbackContext=this)}},c.Component.Smoothed=function(){},c.Component.Smoothed.prototype={smoothed:{get:function(){return!this.texture.baseTexture.scaleMode},set:function(a){a?this.texture&&(this.texture.baseTexture.scaleMode=0):this.texture&&(this.texture.baseTexture.scaleMode=1)}}},c.GameObjectFactory=function(a){this.game=a,this.world=this.game.world},c.GameObjectFactory.prototype={existing:function(a){return this.world.add(a)},weapon:function(a,b,d,e){var f=this.game.plugins.add(c.Weapon);return f.createBullets(a,b,d,e),f},image:function(a,b,d,e,f){return void 0===f&&(f=this.world),f.add(new c.Image(this.game,a,b,d,e))},sprite:function(a,b,c,d,e){return void 0===e&&(e=this.world),e.create(a,b,c,d)},creature:function(a,b,d,e,f){void 0===f&&(f=this.world);var g=new c.Creature(this.game,a,b,d,e);return f.add(g),g},tween:function(a){return this.game.tweens.create(a)},group:function(a,b,d,e,f){return new c.Group(this.game,a,b,d,e,f)},physicsGroup:function(a,b,d,e){return new c.Group(this.game,b,d,e,!0,a)},spriteBatch:function(a,b,d){return void 0===a&&(a=null),void 0===b&&(b="group"),void 0===d&&(d=!1),new c.SpriteBatch(this.game,a,b,d)},audio:function(a,b,c,d){return this.game.sound.add(a,b,c,d)},sound:function(a,b,c,d){return this.game.sound.add(a,b,c,d)},audioSprite:function(a){return this.game.sound.addSprite(a)},tileSprite:function(a,b,d,e,f,g,h){return void 0===h&&(h=this.world),h.add(new c.TileSprite(this.game,a,b,d,e,f,g))},rope:function(a,b,d,e,f,g){return void 0===g&&(g=this.world),g.add(new c.Rope(this.game,a,b,d,e,f))},text:function(a,b,d,e,f){return void 0===f&&(f=this.world),f.add(new c.Text(this.game,a,b,d,e))},button:function(a,b,d,e,f,g,h,i,j,k){return void 0===k&&(k=this.world),k.add(new c.Button(this.game,a,b,d,e,f,g,h,i,j))},graphics:function(a,b,d){return void 0===d&&(d=this.world),d.add(new c.Graphics(this.game,a,b))},emitter:function(a,b,d){return this.game.particles.add(new c.Particles.Arcade.Emitter(this.game,a,b,d))},retroFont:function(a,b,d,e,f,g,h,i,j){return new c.RetroFont(this.game,a,b,d,e,f,g,h,i,j)},bitmapText:function(a,b,d,e,f,g){return void 0===g&&(g=this.world),g.add(new c.BitmapText(this.game,a,b,d,e,f))},tilemap:function(a,b,d,e,f){return new c.Tilemap(this.game,a,b,d,e,f)},renderTexture:function(a,b,d,e){void 0!==d&&""!==d||(d=this.game.rnd.uuid()),void 0===e&&(e=!1);var f=new c.RenderTexture(this.game,a,b,d);return e&&this.game.cache.addRenderTexture(d,f),f},video:function(a,b){return new c.Video(this.game,a,b)},bitmapData:function(a,b,d,e){void 0===e&&(e=!1),void 0!==d&&""!==d||(d=this.game.rnd.uuid());var f=new c.BitmapData(this.game,d,a,b);return e&&this.game.cache.addBitmapData(d,f),f},filter:function(a){var b=Array.prototype.slice.call(arguments,1),a=new c.Filter[a](this.game);return a.init.apply(a,b),a},plugin:function(a){return this.game.plugins.add(a)}},c.GameObjectFactory.prototype.constructor=c.GameObjectFactory,c.GameObjectCreator=function(a){this.game=a,this.world=this.game.world},c.GameObjectCreator.prototype={image:function(a,b,d,e){return new c.Image(this.game,a,b,d,e)},sprite:function(a,b,d,e){return new c.Sprite(this.game,a,b,d,e)},tween:function(a){return new c.Tween(a,this.game,this.game.tweens)},group:function(a,b,d,e,f){return new c.Group(this.game,a,b,d,e,f)},spriteBatch:function(a,b,d){return void 0===b&&(b="group"),void 0===d&&(d=!1),new c.SpriteBatch(this.game,a,b,d)},audio:function(a,b,c,d){return this.game.sound.add(a,b,c,d)},audioSprite:function(a){return this.game.sound.addSprite(a)},sound:function(a,b,c,d){return this.game.sound.add(a,b,c,d)},tileSprite:function(a,b,d,e,f,g){return new c.TileSprite(this.game,a,b,d,e,f,g)},rope:function(a,b,d,e,f){return new c.Rope(this.game,a,b,d,e,f)},text:function(a,b,d,e){return new c.Text(this.game,a,b,d,e)},button:function(a,b,d,e,f,g,h,i,j){return new c.Button(this.game,a,b,d,e,f,g,h,i,j)},graphics:function(a,b){return new c.Graphics(this.game,a,b)},emitter:function(a,b,d){return new c.Particles.Arcade.Emitter(this.game,a,b,d)},retroFont:function(a,b,d,e,f,g,h,i,j){return new c.RetroFont(this.game,a,b,d,e,f,g,h,i,j)},bitmapText:function(a,b,d,e,f,g){return new c.BitmapText(this.game,a,b,d,e,f,g)},tilemap:function(a,b,d,e,f){return new c.Tilemap(this.game,a,b,d,e,f)},renderTexture:function(a,b,d,e){void 0!==d&&""!==d||(d=this.game.rnd.uuid()),void 0===e&&(e=!1);var f=new c.RenderTexture(this.game,a,b,d);return e&&this.game.cache.addRenderTexture(d,f),f},bitmapData:function(a,b,d,e){void 0===e&&(e=!1),void 0!==d&&""!==d||(d=this.game.rnd.uuid());var f=new c.BitmapData(this.game,d,a,b);return e&&this.game.cache.addBitmapData(d,f),f},filter:function(a){var b=Array.prototype.slice.call(arguments,1),a=new c.Filter[a](this.game);return a.init.apply(a,b),a}},c.GameObjectCreator.prototype.constructor=c.GameObjectCreator,c.Sprite=function(a,b,d,e,f){b=b||0,d=d||0,e=e||null,f=f||null,this.type=c.SPRITE,this.physicsType=c.SPRITE,PIXI.Sprite.call(this,c.Cache.DEFAULT),c.Component.Core.init.call(this,a,b,d,e,f)},c.Sprite.prototype=Object.create(PIXI.Sprite.prototype),c.Sprite.prototype.constructor=c.Sprite,c.Component.Core.install.call(c.Sprite.prototype,["Angle","Animation","AutoCull","Bounds","BringToTop","Crop","Delta","Destroy","FixedToCamera","Health","InCamera","InputEnabled","InWorld","LifeSpan","LoadTexture","Overlap","PhysicsBody","Reset","ScaleMinMax","Smoothed"]),c.Sprite.prototype.preUpdatePhysics=c.Component.PhysicsBody.preUpdate,c.Sprite.prototype.preUpdateLifeSpan=c.Component.LifeSpan.preUpdate,c.Sprite.prototype.preUpdateInWorld=c.Component.InWorld.preUpdate,c.Sprite.prototype.preUpdateCore=c.Component.Core.preUpdate,c.Sprite.prototype.preUpdate=function(){return this.preUpdatePhysics()&&this.preUpdateLifeSpan()&&this.preUpdateInWorld()?this.preUpdateCore():!1},c.Image=function(a,b,d,e,f){b=b||0,d=d||0,e=e||null,f=f||null,this.type=c.IMAGE,PIXI.Sprite.call(this,c.Cache.DEFAULT),c.Component.Core.init.call(this,a,b,d,e,f)},c.Image.prototype=Object.create(PIXI.Sprite.prototype),c.Image.prototype.constructor=c.Image,c.Component.Core.install.call(c.Image.prototype,["Angle","Animation","AutoCull","Bounds","BringToTop","Crop","Destroy","FixedToCamera","InputEnabled","LifeSpan","LoadTexture","Overlap","Reset","Smoothed"]),c.Image.prototype.preUpdateInWorld=c.Component.InWorld.preUpdate,c.Image.prototype.preUpdateCore=c.Component.Core.preUpdate,c.Image.prototype.preUpdate=function(){return this.preUpdateInWorld()?this.preUpdateCore():!1},c.Button=function(a,b,d,e,f,g,h,i,j,k){b=b||0,d=d||0,e=e||null,f=f||null,g=g||this,c.Image.call(this,a,b,d,e,i),this.type=c.BUTTON,this.physicsType=c.SPRITE,this._onOverFrame=null,this._onOutFrame=null,this._onDownFrame=null,this._onUpFrame=null,this.onOverSound=null,this.onOutSound=null,this.onDownSound=null,this.onUpSound=null,this.onOverSoundMarker="",this.onOutSoundMarker="",this.onDownSoundMarker="",this.onUpSoundMarker="",this.onInputOver=new c.Signal,this.onInputOut=new c.Signal,this.onInputDown=new c.Signal,this.onInputUp=new c.Signal,this.onOverMouseOnly=!0,this.justReleasedPreventsOver=c.PointerMode.TOUCH,this.freezeFrames=!1,this.forceOut=!1,this.inputEnabled=!0,this.input.start(0,!0),this.input.useHandCursor=!0,this.setFrames(h,i,j,k),null!==f&&this.onInputUp.add(f,g),this.events.onInputOver.add(this.onInputOverHandler,this),this.events.onInputOut.add(this.onInputOutHandler,this),this.events.onInputDown.add(this.onInputDownHandler,this),this.events.onInputUp.add(this.onInputUpHandler,this),this.events.onRemovedFromWorld.add(this.removedFromWorld,this)},c.Button.prototype=Object.create(c.Image.prototype),c.Button.prototype.constructor=c.Button;var g="Over",h="Out",i="Down",j="Up";c.Button.prototype.clearFrames=function(){this.setFrames(null,null,null,null)},c.Button.prototype.removedFromWorld=function(){this.inputEnabled=!1},c.Button.prototype.setStateFrame=function(a,b,c){var d="_on"+a+"Frame";null!==b?(this[d]=b,c&&this.changeStateFrame(a)):this[d]=null},c.Button.prototype.changeStateFrame=function(a){if(this.freezeFrames)return!1;var b="_on"+a+"Frame",c=this[b];return"string"==typeof c?(this.frameName=c,!0):"number"==typeof c?(this.frame=c,!0):!1},c.Button.prototype.setFrames=function(a,b,c,d){this.setStateFrame(g,a,this.input.pointerOver()),this.setStateFrame(h,b,!this.input.pointerOver()),this.setStateFrame(i,c,this.input.pointerDown()),this.setStateFrame(j,d,this.input.pointerUp())},c.Button.prototype.setStateSound=function(a,b,d){var e="on"+a+"Sound",f="on"+a+"SoundMarker";b instanceof c.Sound||b instanceof c.AudioSprite?(this[e]=b,this[f]="string"==typeof d?d:""):(this[e]=null,this[f]="")},c.Button.prototype.playStateSound=function(a){var b="on"+a+"Sound",c=this[b];if(c){var d="on"+a+"SoundMarker",e=this[d];return c.play(e),!0}return!1},c.Button.prototype.setSounds=function(a,b,c,d,e,f,k,l){this.setStateSound(g,a,b),this.setStateSound(h,e,f),this.setStateSound(i,c,d),this.setStateSound(j,k,l)},c.Button.prototype.setOverSound=function(a,b){this.setStateSound(g,a,b)},c.Button.prototype.setOutSound=function(a,b){this.setStateSound(h,a,b)},c.Button.prototype.setDownSound=function(a,b){this.setStateSound(i,a,b)},c.Button.prototype.setUpSound=function(a,b){this.setStateSound(j,a,b)},c.Button.prototype.onInputOverHandler=function(a,b){b.justReleased()&&(this.justReleasedPreventsOver&b.pointerMode)===b.pointerMode||(this.changeStateFrame(g),this.onOverMouseOnly&&!b.isMouse||(this.playStateSound(g),this.onInputOver&&this.onInputOver.dispatch(this,b)))},c.Button.prototype.onInputOutHandler=function(a,b){this.changeStateFrame(h),this.playStateSound(h),this.onInputOut&&this.onInputOut.dispatch(this,b)},c.Button.prototype.onInputDownHandler=function(a,b){this.changeStateFrame(i),this.playStateSound(i),this.onInputDown&&this.onInputDown.dispatch(this,b)},c.Button.prototype.onInputUpHandler=function(a,b,c){if(this.playStateSound(j),this.onInputUp&&this.onInputUp.dispatch(this,b,c),!this.freezeFrames)if(this.forceOut===!0||(this.forceOut&b.pointerMode)===b.pointerMode)this.changeStateFrame(h);else{var d=this.changeStateFrame(j);d||(c?this.changeStateFrame(g):this.changeStateFrame(h))}},c.SpriteBatch=function(a,b,d,e){void 0!==b&&null!==b||(b=a.world),PIXI.SpriteBatch.call(this),c.Group.call(this,a,b,d,e),this.type=c.SPRITEBATCH},c.SpriteBatch.prototype=c.Utils.extend(!0,c.SpriteBatch.prototype,PIXI.SpriteBatch.prototype,c.Group.prototype),c.SpriteBatch.prototype.constructor=c.SpriteBatch,c.BitmapData=function(a,b,d,e,f){void 0!==d&&0!==d||(d=256),void 0!==e&&0!==e||(e=256),void 0===f&&(f=!1),this.game=a,this.key=b,this.width=d,this.height=e,this.canvas=c.Canvas.create(this,d,e,null,f),this.context=this.canvas.getContext("2d",{alpha:!0}),this.ctx=this.context,this.smoothProperty=a.renderType===c.CANVAS?a.renderer.renderSession.smoothProperty:c.Canvas.getSmoothingPrefix(this.context),this.imageData=this.context.getImageData(0,0,d,e),this.data=null,this.imageData&&(this.data=this.imageData.data),this.pixels=null,this.data&&(this.imageData.data.buffer?(this.buffer=this.imageData.data.buffer,this.pixels=new Uint32Array(this.buffer)):window.ArrayBuffer?(this.buffer=new ArrayBuffer(this.imageData.data.length),this.pixels=new Uint32Array(this.buffer)):this.pixels=this.imageData.data),this.baseTexture=new PIXI.BaseTexture(this.canvas),this.texture=new PIXI.Texture(this.baseTexture),this.frameData=new c.FrameData,this.textureFrame=this.frameData.addFrame(new c.Frame(0,0,0,d,e,"bitmapData")),this.texture.frame=this.textureFrame,this.type=c.BITMAPDATA,this.disableTextureUpload=!1,this.dirty=!1,this.cls=this.clear,this._image=null,this._pos=new c.Point,this._size=new c.Point,this._scale=new c.Point,this._rotate=0,this._alpha={prev:1,current:1},this._anchor=new c.Point,this._tempR=0,this._tempG=0,this._tempB=0,this._circle=new c.Circle,this._swapCanvas=void 0},c.BitmapData.prototype={move:function(a,b,c){return 0!==a&&this.moveH(a,c),0!==b&&this.moveV(b,c),this},moveH:function(a,b){void 0===b&&(b=!0),void 0===this._swapCanvas&&(this._swapCanvas=PIXI.CanvasPool.create(this,this.width,this.height));var c=this._swapCanvas,d=c.getContext("2d"),e=this.height,f=this.canvas;if(d.clearRect(0,0,this.width,this.height),0>a){a=Math.abs(a);var g=this.width-a;b&&d.drawImage(f,0,0,a,e,g,0,a,e),d.drawImage(f,a,0,g,e,0,0,g,e)}else{var g=this.width-a;b&&d.drawImage(f,g,0,a,e,0,0,a,e),d.drawImage(f,0,0,g,e,a,0,g,e)}return this.clear(),this.copy(this._swapCanvas)},moveV:function(a,b){void 0===b&&(b=!0),void 0===this._swapCanvas&&(this._swapCanvas=PIXI.CanvasPool.create(this,this.width,this.height));var c=this._swapCanvas,d=c.getContext("2d"),e=this.width,f=this.canvas;if(d.clearRect(0,0,this.width,this.height),0>a){a=Math.abs(a);var g=this.height-a;b&&d.drawImage(f,0,0,e,a,0,g,e,a),d.drawImage(f,0,a,e,g,0,0,e,g)}else{var g=this.height-a;b&&d.drawImage(f,0,g,e,a,0,0,e,a),d.drawImage(f,0,0,e,g,0,a,e,g)}return this.clear(),this.copy(this._swapCanvas)},add:function(a){if(Array.isArray(a))for(var b=0;bm;m++)for(var n=d;h>n;n++)c.Color.unpackPixel(this.getPixel32(n,m),j),k=a.call(b,j,n,m),k!==!1&&null!==k&&void 0!==k&&(this.setPixel32(n,m,k.r,k.g,k.b,k.a,!1),l=!0);return l&&(this.context.putImageData(this.imageData,0,0),this.dirty=!0),this},processPixel:function(a,b,c,d,e,f){void 0===c&&(c=0),void 0===d&&(d=0),void 0===e&&(e=this.width),void 0===f&&(f=this.height);for(var g=c+e,h=d+f,i=0,j=0,k=!1,l=d;h>l;l++)for(var m=c;g>m;m++)i=this.getPixel32(m,l),j=a.call(b,i,m,l),j!==i&&(this.pixels[l*this.width+m]=j,k=!0);return k&&(this.context.putImageData(this.imageData,0,0),this.dirty=!0),this},replaceRGB:function(a,b,d,e,f,g,h,i,j){var k=0,l=0,m=this.width,n=this.height,o=c.Color.packPixel(a,b,d,e);void 0!==j&&j instanceof c.Rectangle&&(k=j.x,l=j.y,m=j.width,n=j.height);for(var p=0;n>p;p++)for(var q=0;m>q;q++)this.getPixel32(k+q,l+p)===o&&this.setPixel32(k+q,l+p,f,g,h,i,!1);return this.context.putImageData(this.imageData,0,0),this.dirty=!0,this},setHSL:function(a,b,d,e){var f=a||0===a,g=b||0===b,h=d||0===d;if(f||g||h){void 0===e&&(e=new c.Rectangle(0,0,this.width,this.height));for(var i=c.Color.createColor(),j=e.y;j=0&&a<=this.width&&b>=0&&b<=this.height&&(c.Device.LITTLE_ENDIAN?this.pixels[b*this.width+a]=g<<24|f<<16|e<<8|d:this.pixels[b*this.width+a]=d<<24|e<<16|f<<8|g,h&&(this.context.putImageData(this.imageData,0,0),this.dirty=!0)),this},setPixel:function(a,b,c,d,e,f){return this.setPixel32(a,b,c,d,e,255,f)},getPixel:function(a,b,d){d||(d=c.Color.createColor());var e=~~(a+b*this.width);return e*=4,d.r=this.data[e],d.g=this.data[++e],d.b=this.data[++e],d.a=this.data[++e],d},getPixel32:function(a,b){return a>=0&&a<=this.width&&b>=0&&b<=this.height?this.pixels[b*this.width+a]:void 0},getPixelRGB:function(a,b,d,e,f){return c.Color.unpackPixel(this.getPixel32(a,b),d,e,f)},getPixels:function(a){return this.context.getImageData(a.x,a.y,a.width,a.height)},getFirstPixel:function(a){void 0===a&&(a=0);var b=c.Color.createColor(),d=0,e=0,f=1,g=!1;1===a?(f=-1,e=this.height):3===a&&(f=-1,d=this.width);do c.Color.unpackPixel(this.getPixel32(d,e),b),0===a||1===a?(d++,d===this.width&&(d=0,e+=f,(e>=this.height||0>=e)&&(g=!0))):2!==a&&3!==a||(e++,e===this.height&&(e=0,d+=f,(d>=this.width||0>=d)&&(g=!0)));while(0===b.a&&!g);return b.x=d,b.y=e,b},getBounds:function(a){return void 0===a&&(a=new c.Rectangle),a.x=this.getFirstPixel(2).x,a.x===this.width?a.setTo(0,0,0,0):(a.y=this.getFirstPixel(0).y,a.width=this.getFirstPixel(3).x-a.x+1,a.height=this.getFirstPixel(1).y-a.y+1,a)},addToWorld:function(a,b,c,d,e,f){e=e||1,f=f||1;var g=this.game.add.image(a,b,this);return g.anchor.set(c,d),g.scale.set(e,f),g},copy:function(a,b,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r){if(void 0!==a&&null!==a||(a=this),(a instanceof c.RenderTexture||a instanceof PIXI.RenderTexture)&&(a=a.getCanvas()),this._image=a,a instanceof c.Sprite||a instanceof c.Image||a instanceof c.Text||a instanceof PIXI.Sprite)this._pos.set(a.texture.crop.x,a.texture.crop.y),this._size.set(a.texture.crop.width,a.texture.crop.height),this._scale.set(a.scale.x,a.scale.y),this._anchor.set(a.anchor.x,a.anchor.y),this._rotate=a.rotation,this._alpha.current=a.alpha,a.texture instanceof c.RenderTexture||a.texture instanceof PIXI.RenderTexture?this._image=a.texture.getCanvas():this._image=a.texture.baseTexture.source,void 0!==g&&null!==g||(g=a.x),void 0!==h&&null!==h||(h=a.y),a.texture.trim&&(g+=a.texture.trim.x-a.anchor.x*a.texture.trim.width,h+=a.texture.trim.y-a.anchor.y*a.texture.trim.height),16777215!==a.tint&&(a.cachedTint!==a.tint&&(a.cachedTint=a.tint,a.tintedTexture=PIXI.CanvasTinter.getTintedTexture(a,a.tint)),this._image=a.tintedTexture,this._pos.set(0));else{if(this._pos.set(0),this._scale.set(1),this._anchor.set(0),this._rotate=0,this._alpha.current=1,a instanceof c.BitmapData)this._image=a.canvas;else if("string"==typeof a){if(a=this.game.cache.getImage(a),null===a)return;this._image=a}this._size.set(this._image.width,this._image.height)}if(void 0!==b&&null!==b||(b=0),void 0!==d&&null!==d||(d=0),e&&(this._size.x=e),f&&(this._size.y=f),void 0!==g&&null!==g||(g=b),void 0!==h&&null!==h||(h=d),void 0!==i&&null!==i||(i=this._size.x),void 0!==j&&null!==j||(j=this._size.y),"number"==typeof k&&(this._rotate=k),"number"==typeof l&&(this._anchor.x=l),"number"==typeof m&&(this._anchor.y=m),"number"==typeof n&&(this._scale.x=n),"number"==typeof o&&(this._scale.y=o),"number"==typeof p&&(this._alpha.current=p),void 0===q&&(q=null),void 0===r&&(r=!1),!(this._alpha.current<=0||0===this._scale.x||0===this._scale.y||0===this._size.x||0===this._size.y)){var s=this.context;return this._alpha.prev=s.globalAlpha,s.save(),s.globalAlpha=this._alpha.current,q&&(this.op=q),r&&(g|=0,h|=0),s.translate(g,h),s.scale(this._scale.x,this._scale.y),s.rotate(this._rotate),s.drawImage(this._image,this._pos.x+b,this._pos.y+d,this._size.x,this._size.y,-i*this._anchor.x,-j*this._anchor.y,i,j),s.restore(),s.globalAlpha=this._alpha.prev,this.dirty=!0,this}},copyTransform:function(a,b,d){if(void 0===b&&(b=null),void 0===d&&(d=!1),!a.hasOwnProperty("worldTransform")||!a.worldVisible||0===a.worldAlpha)return this;var e=a.worldTransform;if(this._pos.set(a.texture.crop.x,a.texture.crop.y),this._size.set(a.texture.crop.width,a.texture.crop.height),0===e.a||0===e.d||0===this._size.x||0===this._size.y)return this;a.texture instanceof c.RenderTexture||a.texture instanceof PIXI.RenderTexture?this._image=a.texture.getCanvas():this._image=a.texture.baseTexture.source;var f=e.tx,g=e.ty;a.texture.trim&&(f+=a.texture.trim.x-a.anchor.x*a.texture.trim.width,g+=a.texture.trim.y-a.anchor.y*a.texture.trim.height),16777215!==a.tint&&(a.cachedTint!==a.tint&&(a.cachedTint=a.tint,a.tintedTexture=PIXI.CanvasTinter.getTintedTexture(a,a.tint)),this._image=a.tintedTexture,this._pos.set(0)),d&&(f|=0,g|=0);var h=this.context;return this._alpha.prev=h.globalAlpha,h.save(),h.globalAlpha=this._alpha.current,b&&(this.op=b),h[this.smoothProperty]=a.texture.baseTexture.scaleMode===PIXI.scaleModes.LINEAR,h.setTransform(e.a,e.b,e.c,e.d,f,g),h.drawImage(this._image,this._pos.x,this._pos.y,this._size.x,this._size.y,-this._size.x*a.anchor.x,-this._size.y*a.anchor.y,this._size.x,this._size.y),h.restore(),h.globalAlpha=this._alpha.prev,this.dirty=!0,this},copyRect:function(a,b,c,d,e,f,g){return this.copy(a,b.x,b.y,b.width,b.height,c,d,b.width,b.height,0,0,0,1,1,e,f,g)},draw:function(a,b,c,d,e,f,g){return this.copy(a,null,null,null,null,b,c,d,e,null,null,null,null,null,null,f,g)},drawGroup:function(a,b,c){return a.total>0&&a.forEachExists(this.drawGroupProxy,this,b,c),this},drawGroupProxy:function(a,b,d){if(a.hasOwnProperty("texture")&&this.copyTransform(a,b,d),a.type===c.GROUP&&a.exists)this.drawGroup(a,b,d);else if(a.hasOwnProperty("children")&&a.children.length>0)for(var e=0;eb.width&&(e=b.width);var f=this.context;return f.fillStyle=f.createPattern(b,d),this._circle=new c.Circle(a.start.x,a.start.y,b.height),this._circle.circumferencePoint(a.angle-1.5707963267948966,!1,this._pos),f.save(),f.translate(this._pos.x,this._pos.y),f.rotate(a.angle),f.fillRect(0,0,e,b.height),f.restore(),this.dirty=!0,this}},render:function(){return!this.disableTextureUpload&&this.dirty&&(this.baseTexture.dirty(),this.dirty=!1),this},destroy:function(){this.frameData.destroy(),this.texture.destroy(!0),PIXI.CanvasPool.remove(this)},blendReset:function(){return this.op="source-over",this},blendSourceOver:function(){return this.op="source-over",this},blendSourceIn:function(){return this.op="source-in",this},blendSourceOut:function(){return this.op="source-out",this},blendSourceAtop:function(){return this.op="source-atop",this},blendDestinationOver:function(){return this.op="destination-over",this},blendDestinationIn:function(){return this.op="destination-in",this},blendDestinationOut:function(){return this.op="destination-out",this},blendDestinationAtop:function(){return this.op="destination-atop",this},blendXor:function(){return this.op="xor",this},blendAdd:function(){return this.op="lighter",this},blendMultiply:function(){return this.op="multiply",this},blendScreen:function(){return this.op="screen",this},blendOverlay:function(){return this.op="overlay",this},blendDarken:function(){return this.op="darken",this},blendLighten:function(){return this.op="lighten",this},blendColorDodge:function(){return this.op="color-dodge",this},blendColorBurn:function(){return this.op="color-burn",this},blendHardLight:function(){return this.op="hard-light",this},blendSoftLight:function(){return this.op="soft-light",this},blendDifference:function(){return this.op="difference",this},blendExclusion:function(){return this.op="exclusion",this},blendHue:function(){return this.op="hue",this},blendSaturation:function(){return this.op="saturation",this},blendColor:function(){return this.op="color",this},blendLuminosity:function(){return this.op="luminosity",this}},Object.defineProperty(c.BitmapData.prototype,"smoothed",{get:function(){c.Canvas.getSmoothingEnabled(this.context)},set:function(a){c.Canvas.setSmoothingEnabled(this.context,a)}}),Object.defineProperty(c.BitmapData.prototype,"op",{get:function(){return this.context.globalCompositeOperation},set:function(a){this.context.globalCompositeOperation=a}}),c.BitmapData.getTransform=function(a,b,c,d,e,f){return"number"!=typeof a&&(a=0),"number"!=typeof b&&(b=0),"number"!=typeof c&&(c=1),"number"!=typeof d&&(d=1),"number"!=typeof e&&(e=0),"number"!=typeof f&&(f=0),{sx:c,sy:d,scaleX:c,scaleY:d,skewX:e,skewY:f,translateX:a,translateY:b,tx:a,ty:b}},c.BitmapData.prototype.constructor=c.BitmapData,PIXI.Graphics=function(){PIXI.DisplayObjectContainer.call(this),this.renderable=!0,this.fillAlpha=1,this.lineWidth=0,this.lineColor=0,this.graphicsData=[],this.tint=16777215,this.blendMode=PIXI.blendModes.NORMAL, +this.currentPath=null,this._webGL=[],this.isMask=!1,this.boundsPadding=0,this._localBounds=new PIXI.Rectangle(0,0,1,1),this.dirty=!0,this.webGLDirty=!1,this.cachedSpriteDirty=!1},PIXI.Graphics.prototype=Object.create(PIXI.DisplayObjectContainer.prototype),PIXI.Graphics.prototype.constructor=PIXI.Graphics,PIXI.Graphics.prototype.lineStyle=function(a,b,c){return this.lineWidth=a||0,this.lineColor=b||0,this.lineAlpha=void 0===c?1:c,this.currentPath&&(this.currentPath.shape.points.length?this.drawShape(new PIXI.Polygon(this.currentPath.shape.points.slice(-2))):(this.currentPath.lineWidth=this.lineWidth,this.currentPath.lineColor=this.lineColor,this.currentPath.lineAlpha=this.lineAlpha)),this},PIXI.Graphics.prototype.moveTo=function(a,b){return this.drawShape(new PIXI.Polygon([a,b])),this},PIXI.Graphics.prototype.lineTo=function(a,b){return this.currentPath||this.moveTo(0,0),this.currentPath.shape.points.push(a,b),this.dirty=!0,this.updateLocalBounds(),this},PIXI.Graphics.prototype.quadraticCurveTo=function(a,b,c,d){this.currentPath?0===this.currentPath.shape.points.length&&(this.currentPath.shape.points=[0,0]):this.moveTo(0,0);var e,f,g=20,h=this.currentPath.shape.points;0===h.length&&this.moveTo(0,0);for(var i=h[h.length-2],j=h[h.length-1],k=0,l=1;g>=l;++l)k=l/g,e=i+(a-i)*k,f=j+(b-j)*k,h.push(e+(a+(c-a)*k-e)*k,f+(b+(d-b)*k-f)*k);return this.dirty=!0,this.updateLocalBounds(),this},PIXI.Graphics.prototype.bezierCurveTo=function(a,b,c,d,e,f){this.currentPath?0===this.currentPath.shape.points.length&&(this.currentPath.shape.points=[0,0]):this.moveTo(0,0);for(var g,h,i,j,k,l=20,m=this.currentPath.shape.points,n=m[m.length-2],o=m[m.length-1],p=0,q=1;l>=q;++q)p=q/l,g=1-p,h=g*g,i=h*g,j=p*p,k=j*p,m.push(i*n+3*h*p*a+3*g*j*c+k*e,i*o+3*h*p*b+3*g*j*d+k*f);return this.dirty=!0,this.updateLocalBounds(),this},PIXI.Graphics.prototype.arcTo=function(a,b,c,d,e){this.currentPath?0===this.currentPath.shape.points.length&&this.currentPath.shape.points.push(a,b):this.moveTo(a,b);var f=this.currentPath.shape.points,g=f[f.length-2],h=f[f.length-1],i=h-b,j=g-a,k=d-b,l=c-a,m=Math.abs(i*l-j*k);if(1e-8>m||0===e)f[f.length-2]===a&&f[f.length-1]===b||f.push(a,b);else{var n=i*i+j*j,o=k*k+l*l,p=i*k+j*l,q=e*Math.sqrt(n)/m,r=e*Math.sqrt(o)/m,s=q*p/n,t=r*p/o,u=q*l+r*j,v=q*k+r*i,w=j*(r+s),x=i*(r+s),y=l*(q+t),z=k*(q+t),A=Math.atan2(x-v,w-u),B=Math.atan2(z-v,y-u);this.arc(u+a,v+b,e,A,B,j*k>l*i)}return this.dirty=!0,this.updateLocalBounds(),this},PIXI.Graphics.prototype.arc=function(a,b,c,d,e,f,g){if(d===e)return this;void 0===f&&(f=!1),void 0===g&&(g=40),!f&&d>=e?e+=2*Math.PI:f&&e>=d&&(d+=2*Math.PI);var h=f?-1*(d-e):e-d,i=Math.ceil(Math.abs(h)/(2*Math.PI))*g;if(0===h)return this;var j=a+Math.cos(d)*c,k=b+Math.sin(d)*c;f&&this.filling?this.moveTo(a,b):this.moveTo(j,k);for(var l=this.currentPath.shape.points,m=h/(2*i),n=2*m,o=Math.cos(m),p=Math.sin(m),q=i-1,r=q%1/q,s=0;q>=s;s++){var t=s+r*s,u=m+d+n*t,v=Math.cos(u),w=-Math.sin(u);l.push((o*v+p*w)*c+a,(o*-w+p*v)*c+b)}return this.dirty=!0,this.updateLocalBounds(),this},PIXI.Graphics.prototype.beginFill=function(a,b){return this.filling=!0,this.fillColor=a||0,this.fillAlpha=void 0===b?1:b,this.currentPath&&this.currentPath.shape.points.length<=2&&(this.currentPath.fill=this.filling,this.currentPath.fillColor=this.fillColor,this.currentPath.fillAlpha=this.fillAlpha),this},PIXI.Graphics.prototype.endFill=function(){return this.filling=!1,this.fillColor=null,this.fillAlpha=1,this},PIXI.Graphics.prototype.drawRect=function(a,b,c,d){return this.drawShape(new PIXI.Rectangle(a,b,c,d)),this},PIXI.Graphics.prototype.drawRoundedRect=function(a,b,c,d,e){return this.drawShape(new PIXI.RoundedRectangle(a,b,c,d,e)),this},PIXI.Graphics.prototype.drawCircle=function(a,b,c){return this.drawShape(new PIXI.Circle(a,b,c)),this},PIXI.Graphics.prototype.drawEllipse=function(a,b,c,d){return this.drawShape(new PIXI.Ellipse(a,b,c,d)),this},PIXI.Graphics.prototype.drawPolygon=function(a){(a instanceof c.Polygon||a instanceof PIXI.Polygon)&&(a=a.points);var b=a;if(!Array.isArray(b)){b=new Array(arguments.length);for(var d=0;dp?p:x,x=x>r?r:x,x=x>t?t:x,y=y>q?q:y,y=y>s?s:y,y=y>u?u:y,v=p>v?p:v,v=r>v?r:v,v=t>v?t:v,w=q>w?q:w,w=s>w?s:w,w=u>w?u:w,this._bounds.x=x,this._bounds.width=v-x,this._bounds.y=y,this._bounds.height=w-y,this._currentBounds=this._bounds}return this._currentBounds},PIXI.Graphics.prototype.containsPoint=function(a){this.worldTransform.applyInverse(a,tempPoint);for(var b=this.graphicsData,c=0;ch?h:a,b=h+j>b?h+j:b,d=d>i?i:d,e=i+k>e?i+k:e;else if(n===PIXI.Graphics.CIRC)h=f.x,i=f.y,j=f.radius+o/2,k=f.radius+o/2,a=a>h-j?h-j:a,b=h+j>b?h+j:b,d=d>i-k?i-k:d,e=i+k>e?i+k:e;else if(n===PIXI.Graphics.ELIP)h=f.x,i=f.y,j=f.width+o/2,k=f.height+o/2,a=a>h-j?h-j:a,b=h+j>b?h+j:b,d=d>i-k?i-k:d,e=i+k>e?i+k:e;else{g=f.points;for(var p=0;ph-o?h-o:a,b=h+o>b?h+o:b,d=d>i-o?i-o:d,e=i+o>e?i+o:e}}else a=0,b=0,d=0,e=0;var q=this.boundsPadding;this._localBounds.x=a-q,this._localBounds.width=b-a+2*q,this._localBounds.y=d-q,this._localBounds.height=e-d+2*q},PIXI.Graphics.prototype._generateCachedSprite=function(){var a=this.getLocalBounds();if(this._cachedSprite)this._cachedSprite.buffer.resize(a.width,a.height);else{var b=new PIXI.CanvasBuffer(a.width,a.height),c=PIXI.Texture.fromCanvas(b.canvas);this._cachedSprite=new PIXI.Sprite(c),this._cachedSprite.buffer=b,this._cachedSprite.worldTransform=this.worldTransform}this._cachedSprite.anchor.x=-(a.x/a.width),this._cachedSprite.anchor.y=-(a.y/a.height),this._cachedSprite.buffer.context.translate(-a.x,-a.y),this.worldAlpha=1,PIXI.CanvasGraphics.renderGraphics(this,this._cachedSprite.buffer.context),this._cachedSprite.alpha=this.alpha},PIXI.Graphics.prototype.updateCachedSpriteTexture=function(){var a=this._cachedSprite,b=a.texture,c=a.buffer.canvas;b.baseTexture.width=c.width,b.baseTexture.height=c.height,b.crop.width=b.frame.width=c.width,b.crop.height=b.frame.height=c.height,a._width=c.width,a._height=c.height,b.baseTexture.dirty()},PIXI.Graphics.prototype.destroyCachedSprite=function(){this._cachedSprite.texture.destroy(!0),this._cachedSprite=null},PIXI.Graphics.prototype.drawShape=function(a){this.currentPath&&this.currentPath.shape.points.length<=2&&this.graphicsData.pop(),this.currentPath=null,a instanceof c.Polygon&&(a=a.clone(),a.flatten());var b=new PIXI.GraphicsData(this.lineWidth,this.lineColor,this.lineAlpha,this.fillColor,this.fillAlpha,this.filling,a);return this.graphicsData.push(b),b.type===PIXI.Graphics.POLY&&(b.shape.closed=this.filling,this.currentPath=b),this.dirty=!0,this.updateLocalBounds(),b},Object.defineProperty(PIXI.Graphics.prototype,"cacheAsBitmap",{get:function(){return this._cacheAsBitmap},set:function(a){this._cacheAsBitmap=a,this._cacheAsBitmap?this._generateCachedSprite():this.destroyCachedSprite(),this.dirty=!0,this.webGLDirty=!0}}),PIXI.GraphicsData=function(a,b,c,d,e,f,g){this.lineWidth=a,this.lineColor=b,this.lineAlpha=c,this._lineTint=b,this.fillColor=d,this.fillAlpha=e,this._fillTint=d,this.fill=f,this.shape=g,this.type=g.type},PIXI.GraphicsData.prototype.constructor=PIXI.GraphicsData,PIXI.GraphicsData.prototype.clone=function(){return new GraphicsData(this.lineWidth,this.lineColor,this.lineAlpha,this.fillColor,this.fillAlpha,this.fill,this.shape)},PIXI.PolyK={},PIXI.PolyK.Triangulate=function(a){var b=!0,c=a.length>>1;if(3>c)return[];for(var d=[],e=[],f=0;c>f;f++)e.push(f);f=0;for(var g=c;g>3;){var h=e[(f+0)%g],i=e[(f+1)%g],j=e[(f+2)%g],k=a[2*h],l=a[2*h+1],m=a[2*i],n=a[2*i+1],o=a[2*j],p=a[2*j+1],q=!1;if(PIXI.PolyK._convex(k,l,m,n,o,p,b)){q=!0;for(var r=0;g>r;r++){var s=e[r];if(s!==h&&s!==i&&s!==j&&PIXI.PolyK._PointInTriangle(a[2*s],a[2*s+1],k,l,m,n,o,p)){q=!1;break}}}if(q)d.push(h,i,j),e.splice((f+1)%g,1),g--,f=0;else if(f++>3*g){if(!b)return null;for(d=[],e=[],f=0;c>f;f++)e.push(f);f=0,g=c,b=!1}}return d.push(e[0],e[1],e[2]),d},PIXI.PolyK._PointInTriangle=function(a,b,c,d,e,f,g,h){var i=g-c,j=h-d,k=e-c,l=f-d,m=a-c,n=b-d,o=i*i+j*j,p=i*k+j*l,q=i*m+j*n,r=k*k+l*l,s=k*m+l*n,t=1/(o*r-p*p),u=(r*q-p*s)*t,v=(o*s-p*q)*t;return u>=0&&v>=0&&1>u+v},PIXI.PolyK._convex=function(a,b,c,d,e,f,g){return(b-d)*(e-c)+(c-a)*(f-d)>=0===g},PIXI.EarCut={},PIXI.EarCut.Triangulate=function(a,b,c){c=c||2;var d=b&&b.length,e=d?b[0]*c:a.length,f=PIXI.EarCut.linkedList(a,0,e,c,!0),g=[];if(!f)return g;var h,i,j,k,l,m,n;if(d&&(f=PIXI.EarCut.eliminateHoles(a,b,f,c)),a.length>80*c){h=j=a[0],i=k=a[1];for(var o=c;e>o;o+=c)l=a[o],m=a[o+1],h>l&&(h=l),i>m&&(i=m),l>j&&(j=l),m>k&&(k=m);n=Math.max(j-h,k-i)}return PIXI.EarCut.earcutLinked(f,g,c,h,i,n),g},PIXI.EarCut.linkedList=function(a,b,c,d,e){var f,g,h,i=0;for(f=b,g=c-d;c>f;f+=d)i+=(a[g]-a[f])*(a[f+1]+a[g+1]),g=f;if(e===i>0)for(f=b;c>f;f+=d)h=PIXI.EarCut.insertNode(f,a[f],a[f+1],h);else for(f=c-d;f>=b;f-=d)h=PIXI.EarCut.insertNode(f,a[f],a[f+1],h);return h},PIXI.EarCut.filterPoints=function(a,b){if(!a)return a;b||(b=a);var c,d=a;do if(c=!1,d.steiner||!PIXI.EarCut.equals(d,d.next)&&0!==PIXI.EarCut.area(d.prev,d,d.next))d=d.next;else{if(PIXI.EarCut.removeNode(d),d=b=d.prev,d===d.next)return null;c=!0}while(c||d!==b);return b},PIXI.EarCut.earcutLinked=function(a,b,c,d,e,f,g){if(a){!g&&f&&PIXI.EarCut.indexCurve(a,d,e,f);for(var h,i,j=a;a.prev!==a.next;)if(h=a.prev,i=a.next,f?PIXI.EarCut.isEarHashed(a,d,e,f):PIXI.EarCut.isEar(a))b.push(h.i/c),b.push(a.i/c),b.push(i.i/c),PIXI.EarCut.removeNode(a),a=i.next,j=i.next;else if(a=i,a===j){g?1===g?(a=PIXI.EarCut.cureLocalIntersections(a,b,c),PIXI.EarCut.earcutLinked(a,b,c,d,e,f,2)):2===g&&PIXI.EarCut.splitEarcut(a,b,c,d,e,f):PIXI.EarCut.earcutLinked(PIXI.EarCut.filterPoints(a),b,c,d,e,f,1);break}}},PIXI.EarCut.isEar=function(a){var b=a.prev,c=a,d=a.next;if(PIXI.EarCut.area(b,c,d)>=0)return!1;for(var e=a.next.next;e!==a.prev;){if(PIXI.EarCut.pointInTriangle(b.x,b.y,c.x,c.y,d.x,d.y,e.x,e.y)&&PIXI.EarCut.area(e.prev,e,e.next)>=0)return!1;e=e.next}return!0},PIXI.EarCut.isEarHashed=function(a,b,c,d){var e=a.prev,f=a,g=a.next;if(PIXI.EarCut.area(e,f,g)>=0)return!1;for(var h=e.xf.x?e.x>g.x?e.x:g.x:f.x>g.x?f.x:g.x,k=e.y>f.y?e.y>g.y?e.y:g.y:f.y>g.y?f.y:g.y,l=PIXI.EarCut.zOrder(h,i,b,c,d),m=PIXI.EarCut.zOrder(j,k,b,c,d),n=a.nextZ;n&&n.z<=m;){if(n!==a.prev&&n!==a.next&&PIXI.EarCut.pointInTriangle(e.x,e.y,f.x,f.y,g.x,g.y,n.x,n.y)&&PIXI.EarCut.area(n.prev,n,n.next)>=0)return!1;n=n.nextZ}for(n=a.prevZ;n&&n.z>=l;){if(n!==a.prev&&n!==a.next&&PIXI.EarCut.pointInTriangle(e.x,e.y,f.x,f.y,g.x,g.y,n.x,n.y)&&PIXI.EarCut.area(n.prev,n,n.next)>=0)return!1;n=n.prevZ}return!0},PIXI.EarCut.cureLocalIntersections=function(a,b,c){var d=a;do{var e=d.prev,f=d.next.next;PIXI.EarCut.intersects(e,d,d.next,f)&&PIXI.EarCut.locallyInside(e,f)&&PIXI.EarCut.locallyInside(f,e)&&(b.push(e.i/c),b.push(d.i/c),b.push(f.i/c),PIXI.EarCut.removeNode(d),PIXI.EarCut.removeNode(d.next),d=a=f),d=d.next}while(d!==a);return d},PIXI.EarCut.splitEarcut=function(a,b,c,d,e,f){var g=a;do{for(var h=g.next.next;h!==g.prev;){if(g.i!==h.i&&PIXI.EarCut.isValidDiagonal(g,h)){var i=PIXI.EarCut.splitPolygon(g,h);return g=PIXI.EarCut.filterPoints(g,g.next),i=PIXI.EarCut.filterPoints(i,i.next),PIXI.EarCut.earcutLinked(g,b,c,d,e,f),void PIXI.EarCut.earcutLinked(i,b,c,d,e,f)}h=h.next}g=g.next}while(g!==a)},PIXI.EarCut.eliminateHoles=function(a,b,c,d){var e,f,g,h,i,j=[];for(e=0,f=b.length;f>e;e++)g=b[e]*d,h=f-1>e?b[e+1]*d:a.length,i=PIXI.EarCut.linkedList(a,g,h,d,!1),i===i.next&&(i.steiner=!0),j.push(PIXI.EarCut.getLeftmost(i));for(j.sort(compareX),e=0;e=d.next.y){var h=d.x+(f-d.y)*(d.next.x-d.x)/(d.next.y-d.y);e>=h&&h>g&&(g=h,c=d.x=d.x&&d.x>=c.x&&PIXI.EarCut.pointInTriangle(fi||i===k&&d.x>c.x)&&PIXI.EarCut.locallyInside(d,a)&&(c=d,k=i)),d=d.next;return c},PIXI.EarCut.indexCurve=function(a,b,c,d){var e=a;do null===e.z&&(e.z=PIXI.EarCut.zOrder(e.x,e.y,b,c,d)),e.prevZ=e.prev,e.nextZ=e.next,e=e.next;while(e!==a);e.prevZ.nextZ=null,e.prevZ=null,PIXI.EarCut.sortLinked(e)},PIXI.EarCut.sortLinked=function(a){var b,c,d,e,f,g,h,i,j=1;do{for(c=a,a=null,f=null,g=0;c;){for(g++,d=c,h=0,b=0;j>b&&(h++,d=d.nextZ,d);b++);for(i=j;h>0||i>0&&d;)0===h?(e=d,d=d.nextZ,i--):0!==i&&d?c.z<=d.z?(e=c,c=c.nextZ,h--):(e=d,d=d.nextZ,i--):(e=c,c=c.nextZ,h--),f?f.nextZ=e:a=e,e.prevZ=f,f=e;c=d}f.nextZ=null,j*=2}while(g>1);return a},PIXI.EarCut.zOrder=function(a,b,c,d,e){return a=32767*(a-c)/e,b=32767*(b-d)/e,a=16711935&(a|a<<8),a=252645135&(a|a<<4),a=858993459&(a|a<<2),a=1431655765&(a|a<<1),b=16711935&(b|b<<8),b=252645135&(b|b<<4),b=858993459&(b|b<<2),b=1431655765&(b|b<<1),a|b<<1},PIXI.EarCut.getLeftmost=function(a){var b=a,c=a;do b.x=0&&(a-g)*(d-h)-(c-g)*(b-h)>=0&&(c-g)*(f-h)-(e-g)*(d-h)>=0},PIXI.EarCut.isValidDiagonal=function(a,b){return PIXI.EarCut.equals(a,b)||a.next.i!==b.i&&a.prev.i!==b.i&&!PIXI.EarCut.intersectsPolygon(a,b)&&PIXI.EarCut.locallyInside(a,b)&&PIXI.EarCut.locallyInside(b,a)&&PIXI.EarCut.middleInside(a,b)},PIXI.EarCut.area=function(a,b,c){return(b.y-a.y)*(c.x-b.x)-(b.x-a.x)*(c.y-b.y)},PIXI.EarCut.equals=function(a,b){return a.x===b.x&&a.y===b.y},PIXI.EarCut.intersects=function(a,b,c,d){return PIXI.EarCut.area(a,b,c)>0!=PIXI.EarCut.area(a,b,d)>0&&PIXI.EarCut.area(c,d,a)>0!=PIXI.EarCut.area(c,d,b)>0},PIXI.EarCut.intersectsPolygon=function(a,b){var c=a;do{if(c.i!==a.i&&c.next.i!==a.i&&c.i!==b.i&&c.next.i!==b.i&&PIXI.EarCut.intersects(c,c.next,a,b))return!0;c=c.next}while(c!==a);return!1},PIXI.EarCut.locallyInside=function(a,b){return PIXI.EarCut.area(a.prev,a,a.next)<0?PIXI.EarCut.area(a,b,a.next)>=0&&PIXI.EarCut.area(a,a.prev,b)>=0:PIXI.EarCut.area(a,b,a.prev)<0||PIXI.EarCut.area(a,a.next,b)<0},PIXI.EarCut.middleInside=function(a,b){var c=a,d=!1,e=(a.x+b.x)/2,f=(a.y+b.y)/2;do c.y>f!=c.next.y>f&&e<(c.next.x-c.x)*(f-c.y)/(c.next.y-c.y)+c.x&&(d=!d),c=c.next;while(c!==a);return d},PIXI.EarCut.splitPolygon=function(a,b){var c=new PIXI.EarCut.Node(a.i,a.x,a.y),d=new PIXI.EarCut.Node(b.i,b.x,b.y),e=a.next,f=b.prev;return a.next=b,b.prev=a,c.next=e,e.prev=c,d.next=c,c.prev=d,f.next=d,d.prev=f,d},PIXI.EarCut.insertNode=function(a,b,c,d){var e=new PIXI.EarCut.Node(a,b,c);return d?(e.next=d.next,e.prev=d,d.next.prev=e,d.next=e):(e.prev=e,e.next=e),e},PIXI.EarCut.removeNode=function(a){a.next.prev=a.prev,a.prev.next=a.next,a.prevZ&&(a.prevZ.nextZ=a.nextZ),a.nextZ&&(a.nextZ.prevZ=a.prevZ)},PIXI.EarCut.Node=function(a,b,c){this.i=a,this.x=b,this.y=c,this.prev=null,this.next=null,this.z=null,this.prevZ=null,this.nextZ=null,this.steiner=!1},PIXI.WebGLGraphics=function(){},PIXI.WebGLGraphics.stencilBufferLimit=6,PIXI.WebGLGraphics.renderGraphics=function(a,b){var c,d=b.gl,e=b.projection,f=b.offset,g=b.shaderManager.primitiveShader;a.dirty&&PIXI.WebGLGraphics.updateGraphics(a,d);for(var h=a._webGL[d.id],i=0;i=PIXI.WebGLGraphics.stencilBufferLimit)if(g.points.length<2*PIXI.WebGLGraphics.stencilBufferLimit){f=PIXI.WebGLGraphics.switchMode(c,0);var h=PIXI.WebGLGraphics.buildPoly(g,f);h||(f=PIXI.WebGLGraphics.switchMode(c,1),PIXI.WebGLGraphics.buildComplexPoly(g,f))}else f=PIXI.WebGLGraphics.switchMode(c,1),PIXI.WebGLGraphics.buildComplexPoly(g,f);g.lineWidth>0&&(f=PIXI.WebGLGraphics.switchMode(c,0),PIXI.WebGLGraphics.buildLine(g,f))}else f=PIXI.WebGLGraphics.switchMode(c,0),g.type===PIXI.Graphics.RECT?PIXI.WebGLGraphics.buildRectangle(g,f):g.type===PIXI.Graphics.CIRC||g.type===PIXI.Graphics.ELIP?PIXI.WebGLGraphics.buildCircle(g,f):g.type===PIXI.Graphics.RREC&&PIXI.WebGLGraphics.buildRoundedRectangle(g,f);c.lastIndex++}for(d=0;d=q;q++)p=q/n,h=g(a,c,p),i=g(b,d,p),j=g(c,e,p),k=g(d,f,p),l=g(h,j,p),m=g(i,k,p),o.push(l,m);return o},PIXI.WebGLGraphics.buildCircle=function(a,b){var c,d,e=a.shape,f=e.x,g=e.y;a.type===PIXI.Graphics.CIRC?(c=e.radius,d=e.radius):(c=e.width,d=e.height);var h=40,i=2*Math.PI/h,j=0;if(a.fill){var k=PIXI.hex2rgb(a.fillColor),l=a.fillAlpha,m=k[0]*l,n=k[1]*l,o=k[2]*l,p=b.points,q=b.indices,r=p.length/6;for(q.push(r),j=0;h+1>j;j++)p.push(f,g,m,n,o,l),p.push(f+Math.sin(i*j)*c,g+Math.cos(i*j)*d,m,n,o,l),q.push(r++,r++);q.push(r-1)}if(a.lineWidth){var s=a.points;for(a.points=[],j=0;h+1>j;j++)a.points.push(f+Math.sin(i*j)*c,g+Math.cos(i*j)*d);PIXI.WebGLGraphics.buildLine(a,b),a.points=s}},PIXI.WebGLGraphics.buildLine=function(a,b){var c=0,d=a.points;if(0!==d.length){if(a.lineWidth%2)for(c=0;cc;c++)k=d[2*(c-1)],l=d[2*(c-1)+1],m=d[2*c],n=d[2*c+1],o=d[2*(c+1)],p=d[2*(c+1)+1],q=-(l-n),r=k-m,E=Math.sqrt(q*q+r*r),q/=E,r/=E,q*=K,r*=K,s=-(n-p),t=m-o,E=Math.sqrt(s*s+t*t),s/=E,t/=E,s*=K,t*=K,w=-r+l-(-r+n),x=-q+m-(-q+k),y=(-q+k)*(-r+n)-(-q+m)*(-r+l),z=-t+p-(-t+n),A=-s+m-(-s+o),B=(-s+o)*(-t+n)-(-s+m)*(-t+p),C=w*A-z*x,Math.abs(C)<.1?(C+=10.1,F.push(m-q,n-r,N,O,P,M),F.push(m+q,n+r,N,O,P,M)):(i=(x*B-A*y)/C,j=(z*y-w*B)/C,D=(i-m)*(i-m)+(j-n)+(j-n),D>19600?(u=q-s,v=r-t,E=Math.sqrt(u*u+v*v),u/=E,v/=E,u*=K,v*=K,F.push(m-u,n-v),F.push(N,O,P,M),F.push(m+u,n+v),F.push(N,O,P,M),F.push(m-u,n-v),F.push(N,O,P,M),I++):(F.push(i,j),F.push(N,O,P,M),F.push(m-(i-m),n-(j-n)),F.push(N,O,P,M)));for(k=d[2*(H-2)],l=d[2*(H-2)+1],m=d[2*(H-1)],n=d[2*(H-1)+1],q=-(l-n),r=k-m,E=Math.sqrt(q*q+r*r),q/=E,r/=E,q*=K,r*=K,F.push(m-q,n-r),F.push(N,O,P,M),F.push(m+q,n+r),F.push(N,O,P,M),G.push(J),c=0;I>c;c++)G.push(J++);G.push(J-1)}},PIXI.WebGLGraphics.buildComplexPoly=function(a,b){var c=a.points.slice();if(!(c.length<6)){var d=b.indices;b.points=c,b.alpha=a.fillAlpha,b.color=PIXI.hex2rgb(a.fillColor);for(var e,f,g=1/0,h=-(1/0),i=1/0,j=-(1/0),k=0;ke?e:g,h=e>h?e:h,i=i>f?f:i,j=f>j?f:j;c.push(g,i,h,i,h,j,g,j);var l=c.length/2;for(k=0;l>k;k++)d.push(k)}},PIXI.WebGLGraphics.buildPoly=function(a,b){var c=a.points;if(!(c.length<6)){var d=b.points,e=b.indices,f=c.length/2,g=PIXI.hex2rgb(a.fillColor),h=a.fillAlpha,i=g[0]*h,j=g[1]*h,k=g[2]*h,l=PIXI.EarCut.Triangulate(c,null,2);if(!l)return!1;var m=d.length/6,n=0;for(n=0;nn;n++)d.push(c[2*n],c[2*n+1],i,j,k,h);return!0}},PIXI.WebGLGraphics.graphicsDataPool=[],PIXI.WebGLGraphicsData=function(a){this.gl=a,this.color=[0,0,0],this.points=[],this.indices=[],this.buffer=a.createBuffer(),this.indexBuffer=a.createBuffer(),this.mode=1,this.alpha=1,this.dirty=!0},PIXI.WebGLGraphicsData.prototype.reset=function(){this.points=[],this.indices=[]},PIXI.WebGLGraphicsData.prototype.upload=function(){var a=this.gl;this.glPoints=new PIXI.Float32Array(this.points),a.bindBuffer(a.ARRAY_BUFFER,this.buffer),a.bufferData(a.ARRAY_BUFFER,this.glPoints,a.STATIC_DRAW),this.glIndicies=new PIXI.Uint16Array(this.indices),a.bindBuffer(a.ELEMENT_ARRAY_BUFFER,this.indexBuffer),a.bufferData(a.ELEMENT_ARRAY_BUFFER,this.glIndicies,a.STATIC_DRAW),this.dirty=!1},PIXI.CanvasGraphics=function(){},PIXI.CanvasGraphics.renderGraphics=function(a,b){var c=a.worldAlpha;a.dirty&&(this.updateGraphicsTint(a),a.dirty=!1);for(var d=0;dA?A:z,b.beginPath(),b.moveTo(v,w+z),b.lineTo(v,w+y-z),b.quadraticCurveTo(v,w+y,v+z,w+y),b.lineTo(v+x-z,w+y),b.quadraticCurveTo(v+x,w+y,v+x,w+y-z),b.lineTo(v+x,w+z),b.quadraticCurveTo(v+x,w,v+x-z,w),b.lineTo(v+z,w),b.quadraticCurveTo(v,w,v,w+z),b.closePath(),(e.fillColor||0===e.fillColor)&&(b.globalAlpha=e.fillAlpha*c,b.fillStyle="#"+("00000"+(0|g).toString(16)).substr(-6),b.fill()),e.lineWidth&&(b.globalAlpha=e.lineAlpha*c,b.strokeStyle="#"+("00000"+(0|h).toString(16)).substr(-6),b.stroke())}}},PIXI.CanvasGraphics.renderGraphicsMask=function(a,b){var c=a.graphicsData.length;if(0!==c){b.beginPath();for(var d=0;c>d;d++){var e=a.graphicsData[d],f=e.shape;if(e.type===PIXI.Graphics.POLY){var g=f.points;b.moveTo(g[0],g[1]);for(var h=1;hy?y:x,b.moveTo(t,u+x),b.lineTo(t,u+w-x),b.quadraticCurveTo(t,u+w,t+x,u+w),b.lineTo(t+v-x,u+w),b.quadraticCurveTo(t+v,u+w,t+v,u+w-x),b.lineTo(t+v,u+x),b.quadraticCurveTo(t+v,u,t+v-x,u),b.lineTo(t+x,u),b.quadraticCurveTo(t,u,t,u+x),b.closePath()}}}},PIXI.CanvasGraphics.updateGraphicsTint=function(a){if(16777215!==a.tint)for(var b=(a.tint>>16&255)/255,c=(a.tint>>8&255)/255,d=(255&a.tint)/255,e=0;e>16&255)/255*b*255<<16)+((g>>8&255)/255*c*255<<8)+(255&g)/255*d*255,f._lineTint=((h>>16&255)/255*b*255<<16)+((h>>8&255)/255*c*255<<8)+(255&h)/255*d*255}},c.Graphics=function(a,b,d){void 0===b&&(b=0),void 0===d&&(d=0),this.type=c.GRAPHICS,this.physicsType=c.SPRITE,this.anchor=new c.Point,PIXI.Graphics.call(this),c.Component.Core.init.call(this,a,b,d,"",null)},c.Graphics.prototype=Object.create(PIXI.Graphics.prototype),c.Graphics.prototype.constructor=c.Graphics,c.Component.Core.install.call(c.Graphics.prototype,["Angle","AutoCull","Bounds","Destroy","FixedToCamera","InputEnabled","InWorld","LifeSpan","PhysicsBody","Reset"]),c.Graphics.prototype.preUpdatePhysics=c.Component.PhysicsBody.preUpdate,c.Graphics.prototype.preUpdateLifeSpan=c.Component.LifeSpan.preUpdate,c.Graphics.prototype.preUpdateInWorld=c.Component.InWorld.preUpdate,c.Graphics.prototype.preUpdateCore=c.Component.Core.preUpdate,c.Graphics.prototype.preUpdate=function(){return this.preUpdatePhysics()&&this.preUpdateLifeSpan()&&this.preUpdateInWorld()?this.preUpdateCore():!1},c.Graphics.prototype.destroy=function(a){this.clear(),c.Component.Destroy.prototype.destroy.call(this,a)},c.Graphics.prototype.drawTriangle=function(a,b){ +void 0===b&&(b=!1);var d=new c.Polygon(a);if(b){var e=new c.Point(this.game.camera.x-a[0].x,this.game.camera.y-a[0].y),f=new c.Point(a[1].x-a[0].x,a[1].y-a[0].y),g=new c.Point(a[1].x-a[2].x,a[1].y-a[2].y),h=g.cross(f);e.dot(h)>0&&this.drawPolygon(d)}else this.drawPolygon(d)},c.Graphics.prototype.drawTriangles=function(a,b,d){void 0===d&&(d=!1);var e,f=new c.Point,g=new c.Point,h=new c.Point,i=[];if(b)if(a[0]instanceof c.Point)for(e=0;e0&&this.style.maxLinesh;h++){if(0===c){var i=this.style.strokeThickness+this.padding.x;i+=this.colors.length>0||this.strokeColors.length>0||this.fontWeights.length>0||this.fontStyles.length>0?this.measureLine(b[h]):this.context.measureText(b[h]).width,this.style.wordWrap&&(i-=this.context.measureText(" ").width)}else{var j=b[h].split(/(?:\t)/),i=this.padding.x+this.style.strokeThickness;if(Array.isArray(c))for(var k=0,l=0;l0||this.strokeColors.length>0||this.fontWeights.length>0||this.fontStyles.length>0?this.measureLine(j[l]):Math.ceil(this.context.measureText(j[l]).width),l>0&&(k+=c[l-1]),i=k+m}else for(var l=0;l0||this.strokeColors.length>0||this.fontWeights.length>0||this.fontStyles.length>0?this.measureLine(j[l]):Math.ceil(this.context.measureText(j[l]).width);var n=this.game.math.snapToCeil(i,c)-i;i+=n}}d[h]=Math.ceil(i),e=Math.max(e,d[h])}this.canvas.width=e*this._res;var o=f.fontSize+this.style.strokeThickness+this.padding.y,p=o*g,q=this._lineSpacing;0>q&&Math.abs(q)>o&&(q=-o),0!==q&&(p+=q>0?q*b.length:q*(b.length-1)),this.canvas.height=p*this._res,this.context.scale(this._res,this._res),navigator.isCocoonJS&&this.context.clearRect(0,0,this.canvas.width,this.canvas.height),this.style.backgroundColor&&(this.context.fillStyle=this.style.backgroundColor,this.context.fillRect(0,0,this.canvas.width,this.canvas.height)),this.context.fillStyle=this.style.fill,this.context.font=this.style.font,this.context.strokeStyle=this.style.stroke,this.context.textBaseline="alphabetic",this.context.lineWidth=this.style.strokeThickness,this.context.lineCap="round",this.context.lineJoin="round";var r,s;for(this._charCount=0,h=0;g>h;h++)r=this.style.strokeThickness/2,s=this.style.strokeThickness/2+h*o+f.ascent,h>0&&(s+=q*h),"right"===this.style.align?r+=e-d[h]:"center"===this.style.align&&(r+=(e-d[h])/2),this.autoRound&&(r=Math.round(r),s=Math.round(s)),this.colors.length>0||this.strokeColors.length>0||this.fontWeights.length>0||this.fontStyles.length>0?this.updateLine(b[h],r,s):(this.style.stroke&&this.style.strokeThickness&&(this.updateShadow(this.style.shadowStroke),0===c?this.context.strokeText(b[h],r,s):this.renderTabLine(b[h],r,s,!1)),this.style.fill&&(this.updateShadow(this.style.shadowFill),0===c?this.context.fillText(b[h],r,s):this.renderTabLine(b[h],r,s,!0)));this.updateTexture()},c.Text.prototype.renderTabLine=function(a,b,c,d){var e=a.split(/(?:\t)/),f=this.style.tabs,g=0;if(Array.isArray(f))for(var h=0,i=0;i0&&(h+=f[i-1]),g=b+h,d?this.context.fillText(e[i],g,c):this.context.strokeText(e[i],g,c);else for(var i=0;i0||this.fontStyles.length>0){var e=this.fontToComponents(this.context.font);this.fontStyles[this._charCount]&&(e.fontStyle=this.fontStyles[this._charCount]),this.fontWeights[this._charCount]&&(e.fontWeight=this.fontWeights[this._charCount]),this.context.font=this.componentsToFont(e)}this.style.stroke&&this.style.strokeThickness&&(this.strokeColors[this._charCount]&&(this.context.strokeStyle=this.strokeColors[this._charCount]),this.updateShadow(this.style.shadowStroke)),this.style.fill&&(this.colors[this._charCount]&&(this.context.fillStyle=this.colors[this._charCount]),this.updateShadow(this.style.shadowFill)),b+=this.context.measureText(d).width,this._charCount++}return Math.ceil(b)},c.Text.prototype.updateLine=function(a,b,c){for(var d=0;d0||this.fontStyles.length>0){var f=this.fontToComponents(this.context.font);this.fontStyles[this._charCount]&&(f.fontStyle=this.fontStyles[this._charCount]),this.fontWeights[this._charCount]&&(f.fontWeight=this.fontWeights[this._charCount]),this.context.font=this.componentsToFont(f)}this.style.stroke&&this.style.strokeThickness&&(this.strokeColors[this._charCount]&&(this.context.strokeStyle=this.strokeColors[this._charCount]),this.updateShadow(this.style.shadowStroke),this.context.strokeText(e,b,c)),this.style.fill&&(this.colors[this._charCount]&&(this.context.fillStyle=this.colors[this._charCount]),this.updateShadow(this.style.shadowFill),this.context.fillText(e,b,c)),b+=this.context.measureText(e).width,this._charCount++}},c.Text.prototype.clearColors=function(){return this.colors=[],this.strokeColors=[],this.dirty=!0,this},c.Text.prototype.clearFontValues=function(){return this.fontStyles=[],this.fontWeights=[],this.dirty=!0,this},c.Text.prototype.addColor=function(a,b){return this.colors[b]=a,this.dirty=!0,this},c.Text.prototype.addStrokeColor=function(a,b){return this.strokeColors[b]=a,this.dirty=!0,this},c.Text.prototype.addFontStyle=function(a,b){return this.fontStyles[b]=a,this.dirty=!0,this},c.Text.prototype.addFontWeight=function(a,b){return this.fontWeights[b]=a,this.dirty=!0,this},c.Text.prototype.precalculateWordWrap=function(a){this.texture.baseTexture.resolution=this._res,this.context.font=this.style.font;var b=this.runWordWrap(a);return b.split(/(?:\r\n|\r|\n)/)},c.Text.prototype.runWordWrap=function(a){return this.useAdvancedWrap?this.advancedWordWrap(a):this.basicWordWrap(a)},c.Text.prototype.advancedWordWrap=function(a){for(var b=this.context,c=this.style.wordWrapWidth,d="",e=a.replace(/ +/gi," ").split(/\r?\n/gi),f=e.length,g=0;f>g;g++){var h=e[g],i="";h=h.replace(/^ *|\s*$/gi,"");var j=b.measureText(h).width;if(c>j)d+=h+"\n";else{for(var k=c,l=h.split(" "),m=0;mk){if(0===m){for(var q=o;q.length&&(q=q.slice(0,-1),p=b.measureText(q).width,!(k>=p)););if(!q.length)throw new Error("This text's wordWrapWidth setting is less than a single character!");var r=n.substr(q.length);l[m]=r,i+=q}var s=l[m].length?m:m+1,t=l.slice(s).join(" ").replace(/[ \n]*$/gi,"");e[g+1]=t+" "+(e[g+1]||""),f=e.length;break}i+=o,k-=p}d+=i.replace(/[ \n]*$/gi,"")+"\n"}}return d=d.replace(/[\s|\n]*$/gi,"")},c.Text.prototype.basicWordWrap=function(a){for(var b="",c=a.split("\n"),d=0;de?(g>0&&(b+="\n"),b+=f[g]+" ",e=this.style.wordWrapWidth-h):(e-=i,b+=f[g]+" ")}dd&&(this.style.wordWrapWidth=d)),this.updateTexture(),this},c.Text.prototype.updateTexture=function(){var a=this.texture.baseTexture,b=this.texture.crop,c=this.texture.frame,d=this.canvas.width,e=this.canvas.height;if(a.width=d,a.height=e,b.width=d,b.height=e,c.width=d,c.height=e,this.texture.width=d,this.texture.height=e,this._width=d,this._height=e,this.textBounds){var f=this.textBounds.x,g=this.textBounds.y;"right"===this.style.boundsAlignH?f+=this.textBounds.width-this.canvas.width:"center"===this.style.boundsAlignH&&(f+=this.textBounds.halfWidth-this.canvas.width/2),"bottom"===this.style.boundsAlignV?g+=this.textBounds.height-this.canvas.height:"middle"===this.style.boundsAlignV&&(g+=this.textBounds.halfHeight-this.canvas.height/2),this.pivot.x=-f,this.pivot.y=-g}this.renderable=0!==d&&0!==e,this.texture.requiresReTint=!0,this.texture.baseTexture.dirty()},c.Text.prototype._renderWebGL=function(a){this.dirty&&(this.updateText(),this.dirty=!1),PIXI.Sprite.prototype._renderWebGL.call(this,a)},c.Text.prototype._renderCanvas=function(a){this.dirty&&(this.updateText(),this.dirty=!1),PIXI.Sprite.prototype._renderCanvas.call(this,a)},c.Text.prototype.determineFontProperties=function(a){var b=c.Text.fontPropertiesCache[a];if(!b){b={};var d=c.Text.fontPropertiesCanvas,e=c.Text.fontPropertiesContext;e.font=a;var f=Math.ceil(e.measureText("|MÉq").width),g=Math.ceil(e.measureText("|MÉq").width),h=2*g;if(g=1.4*g|0,d.width=f,d.height=h,e.fillStyle="#f00",e.fillRect(0,0,f,h),e.font=a,e.textBaseline="alphabetic",e.fillStyle="#000",e.fillText("|MÉq",0,g),!e.getImageData(0,0,f,h))return b.ascent=g,b.descent=g+6,b.fontSize=b.ascent+b.descent,c.Text.fontPropertiesCache[a]=b,b;var i,j,k=e.getImageData(0,0,f,h).data,l=k.length,m=4*f,n=0,o=!1;for(i=0;g>i;i++){for(j=0;m>j;j+=4)if(255!==k[n+j]){o=!0;break}if(o)break;n+=m}for(b.ascent=g-i,n=l-m,o=!1,i=h;i>g;i--){for(j=0;m>j;j+=4)if(255!==k[n+j]){o=!0;break}if(o)break;n-=m}b.descent=i-g,b.descent+=6,b.fontSize=b.ascent+b.descent,c.Text.fontPropertiesCache[a]=b}return b},c.Text.prototype.getBounds=function(a){return this.dirty&&(this.updateText(),this.dirty=!1),PIXI.Sprite.prototype.getBounds.call(this,a)},Object.defineProperty(c.Text.prototype,"text",{get:function(){return this._text},set:function(a){a!==this._text&&(this._text=a.toString()||"",this.dirty=!0,this.parent&&this.updateTransform())}}),Object.defineProperty(c.Text.prototype,"cssFont",{get:function(){return this.componentsToFont(this._fontComponents)},set:function(a){a=a||"bold 20pt Arial",this._fontComponents=this.fontToComponents(a),this.updateFont(this._fontComponents)}}),Object.defineProperty(c.Text.prototype,"font",{get:function(){return this._fontComponents.fontFamily},set:function(a){a=a||"Arial",a=a.trim(),/^(?:inherit|serif|sans-serif|cursive|fantasy|monospace)$/.exec(a)||/['",]/.exec(a)||(a="'"+a+"'"),this._fontComponents.fontFamily=a,this.updateFont(this._fontComponents)}}),Object.defineProperty(c.Text.prototype,"fontSize",{get:function(){var a=this._fontComponents.fontSize;return a&&/(?:^0$|px$)/.exec(a)?parseInt(a,10):a},set:function(a){a=a||"0","number"==typeof a&&(a+="px"),this._fontComponents.fontSize=a,this.updateFont(this._fontComponents)}}),Object.defineProperty(c.Text.prototype,"fontWeight",{get:function(){return this._fontComponents.fontWeight||"normal"},set:function(a){a=a||"normal",this._fontComponents.fontWeight=a,this.updateFont(this._fontComponents)}}),Object.defineProperty(c.Text.prototype,"fontStyle",{get:function(){return this._fontComponents.fontStyle||"normal"},set:function(a){a=a||"normal",this._fontComponents.fontStyle=a,this.updateFont(this._fontComponents)}}),Object.defineProperty(c.Text.prototype,"fontVariant",{get:function(){return this._fontComponents.fontVariant||"normal"},set:function(a){a=a||"normal",this._fontComponents.fontVariant=a,this.updateFont(this._fontComponents)}}),Object.defineProperty(c.Text.prototype,"fill",{get:function(){return this.style.fill},set:function(a){a!==this.style.fill&&(this.style.fill=a,this.dirty=!0)}}),Object.defineProperty(c.Text.prototype,"align",{get:function(){return this.style.align},set:function(a){a!==this.style.align&&(this.style.align=a,this.dirty=!0)}}),Object.defineProperty(c.Text.prototype,"resolution",{get:function(){return this._res},set:function(a){a!==this._res&&(this._res=a,this.dirty=!0)}}),Object.defineProperty(c.Text.prototype,"tabs",{get:function(){return this.style.tabs},set:function(a){a!==this.style.tabs&&(this.style.tabs=a,this.dirty=!0)}}),Object.defineProperty(c.Text.prototype,"boundsAlignH",{get:function(){return this.style.boundsAlignH},set:function(a){a!==this.style.boundsAlignH&&(this.style.boundsAlignH=a,this.dirty=!0)}}),Object.defineProperty(c.Text.prototype,"boundsAlignV",{get:function(){return this.style.boundsAlignV},set:function(a){a!==this.style.boundsAlignV&&(this.style.boundsAlignV=a,this.dirty=!0)}}),Object.defineProperty(c.Text.prototype,"stroke",{get:function(){return this.style.stroke},set:function(a){a!==this.style.stroke&&(this.style.stroke=a,this.dirty=!0)}}),Object.defineProperty(c.Text.prototype,"strokeThickness",{get:function(){return this.style.strokeThickness},set:function(a){a!==this.style.strokeThickness&&(this.style.strokeThickness=a,this.dirty=!0)}}),Object.defineProperty(c.Text.prototype,"wordWrap",{get:function(){return this.style.wordWrap},set:function(a){a!==this.style.wordWrap&&(this.style.wordWrap=a,this.dirty=!0)}}),Object.defineProperty(c.Text.prototype,"wordWrapWidth",{get:function(){return this.style.wordWrapWidth},set:function(a){a!==this.style.wordWrapWidth&&(this.style.wordWrapWidth=a,this.dirty=!0)}}),Object.defineProperty(c.Text.prototype,"lineSpacing",{get:function(){return this._lineSpacing},set:function(a){a!==this._lineSpacing&&(this._lineSpacing=parseFloat(a),this.dirty=!0,this.parent&&this.updateTransform())}}),Object.defineProperty(c.Text.prototype,"shadowOffsetX",{get:function(){return this.style.shadowOffsetX},set:function(a){a!==this.style.shadowOffsetX&&(this.style.shadowOffsetX=a,this.dirty=!0)}}),Object.defineProperty(c.Text.prototype,"shadowOffsetY",{get:function(){return this.style.shadowOffsetY},set:function(a){a!==this.style.shadowOffsetY&&(this.style.shadowOffsetY=a,this.dirty=!0)}}),Object.defineProperty(c.Text.prototype,"shadowColor",{get:function(){return this.style.shadowColor},set:function(a){a!==this.style.shadowColor&&(this.style.shadowColor=a,this.dirty=!0)}}),Object.defineProperty(c.Text.prototype,"shadowBlur",{get:function(){return this.style.shadowBlur},set:function(a){a!==this.style.shadowBlur&&(this.style.shadowBlur=a,this.dirty=!0)}}),Object.defineProperty(c.Text.prototype,"shadowStroke",{get:function(){return this.style.shadowStroke},set:function(a){a!==this.style.shadowStroke&&(this.style.shadowStroke=a,this.dirty=!0)}}),Object.defineProperty(c.Text.prototype,"shadowFill",{get:function(){return this.style.shadowFill},set:function(a){a!==this.style.shadowFill&&(this.style.shadowFill=a,this.dirty=!0)}}),Object.defineProperty(c.Text.prototype,"width",{get:function(){return this.dirty&&(this.updateText(),this.dirty=!1),this.scale.x*this.texture.frame.width},set:function(a){this.scale.x=a/this.texture.frame.width,this._width=a}}),Object.defineProperty(c.Text.prototype,"height",{get:function(){return this.dirty&&(this.updateText(),this.dirty=!1),this.scale.y*this.texture.frame.height},set:function(a){this.scale.y=a/this.texture.frame.height,this._height=a}}),c.Text.fontPropertiesCache={},c.Text.fontPropertiesCanvas=document.createElement("canvas"),c.Text.fontPropertiesContext=c.Text.fontPropertiesCanvas.getContext("2d"),c.BitmapText=function(a,b,d,e,f,g,h){b=b||0,d=d||0,e=e||"",f=f||"",g=g||32,h=h||"left",PIXI.DisplayObjectContainer.call(this),this.type=c.BITMAPTEXT,this.physicsType=c.SPRITE,this.textWidth=0,this.textHeight=0,this.anchor=new c.Point,this._prevAnchor=new c.Point,this._glyphs=[],this._maxWidth=0,this._text=f.toString()||"",this._data=a.cache.getBitmapFont(e),this._font=e,this._fontSize=g,this._align=h,this._tint=16777215,this.updateText(),this.dirty=!1,c.Component.Core.init.call(this,a,b,d,"",null)},c.BitmapText.prototype=Object.create(PIXI.DisplayObjectContainer.prototype),c.BitmapText.prototype.constructor=c.BitmapText,c.Component.Core.install.call(c.BitmapText.prototype,["Angle","AutoCull","Bounds","Destroy","FixedToCamera","InputEnabled","InWorld","LifeSpan","PhysicsBody","Reset"]),c.BitmapText.prototype.preUpdatePhysics=c.Component.PhysicsBody.preUpdate,c.BitmapText.prototype.preUpdateLifeSpan=c.Component.LifeSpan.preUpdate,c.BitmapText.prototype.preUpdateInWorld=c.Component.InWorld.preUpdate,c.BitmapText.prototype.preUpdateCore=c.Component.Core.preUpdate,c.BitmapText.prototype.preUpdate=function(){return this.preUpdatePhysics()&&this.preUpdateLifeSpan()&&this.preUpdateInWorld()?this.preUpdateCore():!1},c.BitmapText.prototype.postUpdate=function(){c.Component.PhysicsBody.postUpdate.call(this),c.Component.FixedToCamera.postUpdate.call(this),this.body&&this.body.type===c.Physics.ARCADE&&(this.textWidth===this.body.sourceWidth&&this.textHeight===this.body.sourceHeight||this.body.setSize(this.textWidth,this.textHeight))},c.BitmapText.prototype.setText=function(a){this.text=a},c.BitmapText.prototype.scanLine=function(a,b,c){for(var d=0,e=0,f=-1,g=0,h=null,i=this._maxWidth>0?this._maxWidth:null,j=[],k=0;k=i&&f>-1)return{width:g||e,text:c.substr(0,k-(k-f)),end:l,chars:j};e+=(n.xAdvance+p)*b,j.push(d+(n.xOffset+p)*b),d+=(n.xAdvance+p)*b,h=m}return{width:e,text:c,end:l,chars:j}},c.BitmapText.prototype.cleanText=function(a,b){void 0===b&&(b="");var c=this._data.font;if(!c)return"";for(var d=/\r\n|\n\r|\n|\r/g,e=a.replace(d,"\n").split("\n"),f=0;fthis.textWidth&&(this.textWidth=f.width),e+=a.lineHeight*c,b=b.substr(f.text.length+1)}while(f.end===!1);this.textHeight=e;for(var g=0,h=0,i=this.textWidth*this.anchor.x,j=this.textHeight*this.anchor.y,k=0;k0&&(this._fontSize=a,this.updateText())}}),Object.defineProperty(c.BitmapText.prototype,"text",{get:function(){return this._text},set:function(a){a!==this._text&&(this._text=a.toString()||"",this.updateText())}}),Object.defineProperty(c.BitmapText.prototype,"maxWidth",{get:function(){return this._maxWidth},set:function(a){a!==this._maxWidth&&(this._maxWidth=a,this.updateText())}}),Object.defineProperty(c.BitmapText.prototype,"smoothed",{get:function(){return!this._data.base.scaleMode},set:function(a){a?this._data.base.scaleMode=0:this._data.base.scaleMode=1}}),c.RetroFont=function(a,b,d,e,f,g,h,i,j,k){if(!a.cache.checkImageKey(b))return!1;void 0!==g&&null!==g||(g=a.cache.getImage(b).width/d),this.characterWidth=d,this.characterHeight=e,this.characterSpacingX=h||0,this.characterSpacingY=i||0,this.characterPerRow=g,this.offsetX=j||0,this.offsetY=k||0,this.align="left",this.multiLine=!1,this.autoUpperCase=!0,this.customSpacingX=0,this.customSpacingY=0,this.fixedWidth=0,this.fontSet=a.cache.getImage(b),this._text="",this.grabData=[],this.frameData=new c.FrameData;for(var l=this.offsetX,m=this.offsetY,n=0,o=0;o?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~",c.RetroFont.TEXT_SET2=" !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ",c.RetroFont.TEXT_SET3="ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789 ",c.RetroFont.TEXT_SET4="ABCDEFGHIJKLMNOPQRSTUVWXYZ 0123456789",c.RetroFont.TEXT_SET5="ABCDEFGHIJKLMNOPQRSTUVWXYZ.,/() '!?-*:0123456789",c.RetroFont.TEXT_SET6="ABCDEFGHIJKLMNOPQRSTUVWXYZ!?:;0123456789\"(),-.' ",c.RetroFont.TEXT_SET7="AGMSY+:4BHNTZ!;5CIOU.?06DJPV,(17EKQW\")28FLRX-'39",c.RetroFont.TEXT_SET8="0123456789 .ABCDEFGHIJKLMNOPQRSTUVWXYZ",c.RetroFont.TEXT_SET9="ABCDEFGHIJKLMNOPQRSTUVWXYZ()-0123456789.:,'\"?!",c.RetroFont.TEXT_SET10="ABCDEFGHIJKLMNOPQRSTUVWXYZ",c.RetroFont.TEXT_SET11="ABCDEFGHIJKLMNOPQRSTUVWXYZ.,\"-+!?()':;0123456789",c.RetroFont.prototype.setFixedWidth=function(a,b){void 0===b&&(b="left"),this.fixedWidth=a,this.align=b},c.RetroFont.prototype.setText=function(a,b,c,d,e,f){this.multiLine=b||!1,this.customSpacingX=c||0,this.customSpacingY=d||0,this.align=e||"left",f?this.autoUpperCase=!1:this.autoUpperCase=!0,a.length>0&&(this.text=a)},c.RetroFont.prototype.buildRetroFontText=function(){var a=0,b=0;if(this.clear(),this.multiLine){var d=this._text.split("\n");this.fixedWidth>0?this.resize(this.fixedWidth,d.length*(this.characterHeight+this.customSpacingY)-this.customSpacingY,!0):this.resize(this.getLongestLine()*(this.characterWidth+this.customSpacingX),d.length*(this.characterHeight+this.customSpacingY)-this.customSpacingY,!0);for(var e=0;ea&&(a=0),this.pasteLine(d[e],a,b,this.customSpacingX),b+=this.characterHeight+this.customSpacingY}else this.fixedWidth>0?this.resize(this.fixedWidth,this.characterHeight,!0):this.resize(this._text.length*(this.characterWidth+this.customSpacingX),this.characterHeight,!0),a=0,this.align===c.RetroFont.ALIGN_RIGHT?a=this.width-this._text.length*(this.characterWidth+this.customSpacingX):this.align===c.RetroFont.ALIGN_CENTER&&(a=this.width/2-this._text.length*(this.characterWidth+this.customSpacingX)/2,a+=this.customSpacingX/2),0>a&&(a=0),this.pasteLine(this._text,a,0,this.customSpacingX);this.requiresReTint=!0},c.RetroFont.prototype.pasteLine=function(a,b,c,d){for(var e=0;e=0&&(this.stamp.frame=this.grabData[a.charCodeAt(e)],this.renderXY(this.stamp,b,c,!1),b+=this.characterWidth+d,b>this.width))break},c.RetroFont.prototype.getLongestLine=function(){var a=0;if(this._text.length>0)for(var b=this._text.split("\n"),c=0;ca&&(a=b[c].length);return a},c.RetroFont.prototype.removeUnsupportedCharacters=function(a){for(var b="",c=0;c=0||!a&&"\n"===d)&&(b=b.concat(d))}return b},c.RetroFont.prototype.updateOffset=function(a,b){if(this.offsetX!==a||this.offsetY!==b){for(var c=a-this.offsetX,d=b-this.offsetY,e=this.game.cache.getFrameData(this.stamp.key).getFrames(),f=e.length;f--;)e[f].x+=c,e[f].y+=d;this.buildRetroFontText()}},Object.defineProperty(c.RetroFont.prototype,"text",{get:function(){return this._text},set:function(a){var b;b=this.autoUpperCase?a.toUpperCase():a,b!==this._text&&(this._text=b,this.removeUnsupportedCharacters(this.multiLine),this.buildRetroFontText())}}),Object.defineProperty(c.RetroFont.prototype,"smoothed",{get:function(){return this.stamp.smoothed},set:function(a){this.stamp.smoothed=a,this.buildRetroFontText()}}),c.Rope=function(a,b,d,e,f,g){this.points=[],this.points=g,this._hasUpdateAnimation=!1,this._updateAnimationCallback=null,b=b||0,d=d||0,e=e||null,f=f||null,this.type=c.ROPE,PIXI.Rope.call(this,c.Cache.DEFAULT,this.points),c.Component.Core.init.call(this,a,b,d,e,f)},c.Rope.prototype=Object.create(PIXI.Rope.prototype),c.Rope.prototype.constructor=c.Rope,c.Component.Core.install.call(c.Rope.prototype,["Angle","Animation","AutoCull","Bounds","BringToTop","Crop","Delta","Destroy","FixedToCamera","InWorld","LifeSpan","LoadTexture","Overlap","PhysicsBody","Reset","ScaleMinMax","Smoothed"]),c.Rope.prototype.preUpdatePhysics=c.Component.PhysicsBody.preUpdate,c.Rope.prototype.preUpdateLifeSpan=c.Component.LifeSpan.preUpdate, +c.Rope.prototype.preUpdateInWorld=c.Component.InWorld.preUpdate,c.Rope.prototype.preUpdateCore=c.Component.Core.preUpdate,c.Rope.prototype.preUpdate=function(){return this.preUpdatePhysics()&&this.preUpdateLifeSpan()&&this.preUpdateInWorld()?this.preUpdateCore():!1},c.Rope.prototype.update=function(){this._hasUpdateAnimation&&this.updateAnimation.call(this)},c.Rope.prototype.reset=function(a,b){return c.Component.Reset.prototype.reset.call(this,a,b),this},Object.defineProperty(c.Rope.prototype,"updateAnimation",{get:function(){return this._updateAnimation},set:function(a){a&&"function"==typeof a?(this._hasUpdateAnimation=!0,this._updateAnimation=a):(this._hasUpdateAnimation=!1,this._updateAnimation=null)}}),Object.defineProperty(c.Rope.prototype,"segments",{get:function(){for(var a,b,d,e,f,g,h,i,j=[],k=0;k=1)&&(l.touch=!0),(window.navigator.msPointerEnabled||window.navigator.pointerEnabled)&&(l.mspointer=!0),l.cocoonJS||("onwheel"in window||l.ie&&"WheelEvent"in window?l.wheelEvent="wheel":"onmousewheel"in window?l.wheelEvent="mousewheel":l.firefox&&"MouseScrollEvent"in window&&(l.wheelEvent="DOMMouseScroll"))}function d(){for(var a=["requestFullscreen","requestFullScreen","webkitRequestFullscreen","webkitRequestFullScreen","msRequestFullscreen","msRequestFullScreen","mozRequestFullScreen","mozRequestFullscreen"],b=document.createElement("div"),c=0;c=9&&/Mac OS X (\d+)_(\d+)/.test(navigator.userAgent)){var c=parseInt(RegExp.$1,10),d=parseInt(RegExp.$2,10);(10===c&&d>=11||c>10)&&(l.dolby=!0)}}catch(e){}}function h(){l.pixelRatio=window.devicePixelRatio||1,l.iPhone=-1!=navigator.userAgent.toLowerCase().indexOf("iphone"),l.iPhone4=2==l.pixelRatio&&l.iPhone,l.iPad=-1!=navigator.userAgent.toLowerCase().indexOf("ipad"),"undefined"!=typeof Int8Array?l.typedArray=!0:l.typedArray=!1,"undefined"!=typeof ArrayBuffer&&"undefined"!=typeof Uint8Array&&"undefined"!=typeof Uint32Array&&(l.littleEndian=i(),l.LITTLE_ENDIAN=l.littleEndian),l.support32bit="undefined"!=typeof ArrayBuffer&&"undefined"!=typeof Uint8ClampedArray&&"undefined"!=typeof Int32Array&&null!==l.littleEndian&&j(),navigator.vibrate=navigator.vibrate||navigator.webkitVibrate||navigator.mozVibrate||navigator.msVibrate,navigator.vibrate&&(l.vibration=!0)}function i(){var a=new ArrayBuffer(4),b=new Uint8Array(a),c=new Uint32Array(a);return b[0]=161,b[1]=178,b[2]=195,b[3]=212,3569595041==c[0]?!0:2712847316==c[0]?!1:null}function j(){if(void 0===Uint8ClampedArray)return!1;var a=PIXI.CanvasPool.create(this,1,1),b=a.getContext("2d");if(!b)return!1;var c=b.createImageData(1,1);return PIXI.CanvasPool.remove(this),c.data instanceof Uint8ClampedArray}function k(){var a,b=document.createElement("p"),c={webkitTransform:"-webkit-transform",OTransform:"-o-transform",msTransform:"-ms-transform",MozTransform:"-moz-transform",transform:"transform"};document.body.insertBefore(b,null);for(var d in c)void 0!==b.style[d]&&(b.style[d]="translate3d(1px,1px,1px)",a=window.getComputedStyle(b).getPropertyValue(c[d]));document.body.removeChild(b),l.css3D=void 0!==a&&a.length>0&&"none"!==a}var l=this;a(),e(),g(),f(),k(),h(),b(),d(),c()},c.Device.canPlayAudio=function(a){return"mp3"===a&&this.mp3?!0:"ogg"===a&&(this.ogg||this.opus)?!0:"m4a"===a&&this.m4a?!0:"opus"===a&&this.opus?!0:"wav"===a&&this.wav?!0:"webm"===a&&this.webm?!0:!("mp4"!==a||!this.dolby)},c.Device.canPlayVideo=function(a){return"webm"===a&&(this.webmVideo||this.vp9Video)?!0:"mp4"===a&&(this.mp4Video||this.h264Video)?!0:"ogg"!==a&&"ogv"!==a||!this.oggVideo?!("mpeg"!==a||!this.hlsVideo):!0},c.Device.isConsoleOpen=function(){return window.console&&window.console.firebug?!0:window.console&&(console.profile(),console.profileEnd(),console.clear&&console.clear(),console.profiles)?console.profiles.length>0:!1},c.Device.isAndroidStockBrowser=function(){var a=window.navigator.userAgent.match(/Android.*AppleWebKit\/([\d.]+)/);return a&&a[1]<537},c.Canvas={create:function(a,b,c,d,e){b=b||256,c=c||256;var f=e?document.createElement("canvas"):PIXI.CanvasPool.create(a,b,c);return"string"==typeof d&&""!==d&&(f.id=d),f.width=b,f.height=c,f.style.display="block",f},setBackgroundColor:function(a,b){return b=b||"rgb(0,0,0)",a.style.backgroundColor=b,a},setTouchAction:function(a,b){return b=b||"none",a.style.msTouchAction=b,a.style["ms-touch-action"]=b,a.style["touch-action"]=b,a},setUserSelect:function(a,b){return b=b||"none",a.style["-webkit-touch-callout"]=b,a.style["-webkit-user-select"]=b,a.style["-khtml-user-select"]=b,a.style["-moz-user-select"]=b,a.style["-ms-user-select"]=b,a.style["user-select"]=b,a.style["-webkit-tap-highlight-color"]="rgba(0, 0, 0, 0)",a},addToDOM:function(a,b,c){var d;return void 0===c&&(c=!0),b&&("string"==typeof b?d=document.getElementById(b):"object"==typeof b&&1===b.nodeType&&(d=b)),d||(d=document.body),c&&d.style&&(d.style.overflow="hidden"),d.appendChild(a),a},removeFromDOM:function(a){a.parentNode&&a.parentNode.removeChild(a)},setTransform:function(a,b,c,d,e,f,g){return a.setTransform(d,f,g,e,b,c),a},setSmoothingEnabled:function(a,b){var d=c.Canvas.getSmoothingPrefix(a);return d&&(a[d]=b),a},getSmoothingPrefix:function(a){var b=["i","webkitI","msI","mozI","oI"];for(var c in b){var d=b[c]+"mageSmoothingEnabled";if(d in a)return d}return null},getSmoothingEnabled:function(a){var b=c.Canvas.getSmoothingPrefix(a);return b?a[b]:void 0},setImageRenderingCrisp:function(a){for(var b=["optimizeSpeed","crisp-edges","-moz-crisp-edges","-webkit-optimize-contrast","optimize-contrast","pixelated"],c=0;ca},fuzzyGreaterThan:function(a,b,c){return void 0===c&&(c=1e-4),a>b-c},fuzzyCeil:function(a,b){return void 0===b&&(b=1e-4),Math.ceil(a-b)},fuzzyFloor:function(a,b){return void 0===b&&(b=1e-4),Math.floor(a+b)},average:function(){for(var a=0,b=arguments.length,c=0;b>c;c++)a+=+arguments[c];return a/b},shear:function(a){return a%1},snapTo:function(a,b,c){return void 0===c&&(c=0),0===b?a:(a-=c,a=b*Math.round(a/b),c+a)},snapToFloor:function(a,b,c){return void 0===c&&(c=0),0===b?a:(a-=c,a=b*Math.floor(a/b),c+a)},snapToCeil:function(a,b,c){return void 0===c&&(c=0),0===b?a:(a-=c,a=b*Math.ceil(a/b),c+a)},roundTo:function(a,b,c){void 0===b&&(b=0),void 0===c&&(c=10);var d=Math.pow(c,-b);return Math.round(a*d)/d},floorTo:function(a,b,c){void 0===b&&(b=0),void 0===c&&(c=10);var d=Math.pow(c,-b);return Math.floor(a*d)/d},ceilTo:function(a,b,c){void 0===b&&(b=0),void 0===c&&(c=10);var d=Math.pow(c,-b);return Math.ceil(a*d)/d},angleBetween:function(a,b,c,d){return Math.atan2(d-b,c-a)},angleBetweenY:function(a,b,c,d){return Math.atan2(c-a,d-b)},angleBetweenPoints:function(a,b){return Math.atan2(b.y-a.y,b.x-a.x)},angleBetweenPointsY:function(a,b){return Math.atan2(b.x-a.x,b.y-a.y)},reverseAngle:function(a){return this.normalizeAngle(a+Math.PI,!0)},normalizeAngle:function(a){return a%=2*Math.PI,a>=0?a:a+2*Math.PI},maxAdd:function(a,b,c){return Math.min(a+b,c)},minSub:function(a,b,c){return Math.max(a-b,c)},wrap:function(a,b,c){var d=c-b;if(0>=d)return 0;var e=(a-b)%d;return 0>e&&(e+=d),e+b},wrapValue:function(a,b,c){var d;return a=Math.abs(a),b=Math.abs(b),c=Math.abs(c),d=(a+b)%c},isOdd:function(a){return!!(1&a)},isEven:function(a){return!(1&a)},min:function(){if(1===arguments.length&&"object"==typeof arguments[0])var a=arguments[0];else var a=arguments;for(var b=1,c=0,d=a.length;d>b;b++)a[b]b;b++)a[b]>a[c]&&(c=b);return a[c]},minProperty:function(a){if(2===arguments.length&&"object"==typeof arguments[1])var b=arguments[1];else var b=arguments.slice(1);for(var c=1,d=0,e=b.length;e>c;c++)b[c][a]c;c++)b[c][a]>b[d][a]&&(d=c);return b[d][a]},wrapAngle:function(a,b){return b?this.wrap(a,-Math.PI,Math.PI):this.wrap(a,-180,180)},linearInterpolation:function(a,b){var c=a.length-1,d=c*b,e=Math.floor(d);return 0>b?this.linear(a[0],a[1],d):b>1?this.linear(a[c],a[c-1],c-d):this.linear(a[e],a[e+1>c?c:e+1],d-e)},bezierInterpolation:function(a,b){for(var c=0,d=a.length-1,e=0;d>=e;e++)c+=Math.pow(1-b,d-e)*Math.pow(b,e)*a[e]*this.bernstein(d,e);return c},catmullRomInterpolation:function(a,b){var c=a.length-1,d=c*b,e=Math.floor(d);return a[0]===a[c]?(0>b&&(e=Math.floor(d=c*(1+b))),this.catmullRom(a[(e-1+c)%c],a[e],a[(e+1)%c],a[(e+2)%c],d-e)):0>b?a[0]-(this.catmullRom(a[0],a[0],a[1],a[1],-d)-a[0]):b>1?a[c]-(this.catmullRom(a[c],a[c],a[c-1],a[c-1],d-c)-a[c]):this.catmullRom(a[e?e-1:0],a[e],a[e+1>c?c:e+1],a[e+2>c?c:e+2],d-e)},linear:function(a,b,c){return(b-a)*c+a},bernstein:function(a,b){return this.factorial(a)/this.factorial(b)/this.factorial(a-b)},factorial:function(a){if(0===a)return 1;for(var b=a;--a;)b*=a;return b},catmullRom:function(a,b,c,d,e){var f=.5*(c-a),g=.5*(d-b),h=e*e,i=e*h;return(2*b-2*c+f+g)*i+(-3*b+3*c-2*f-g)*h+f*e+b},difference:function(a,b){return Math.abs(a-b)},roundAwayFromZero:function(a){return a>0?Math.ceil(a):Math.floor(a)},sinCosGenerator:function(a,b,c,d){void 0===b&&(b=1),void 0===c&&(c=1),void 0===d&&(d=1);for(var e=b,f=c,g=d*Math.PI/a,h=[],i=[],j=0;a>j;j++)f-=e*g,e+=f*g,h[j]=f,i[j]=e;return{sin:i,cos:h,length:a}},distance:function(a,b,c,d){var e=a-c,f=b-d;return Math.sqrt(e*e+f*f)},distanceSq:function(a,b,c,d){var e=a-c,f=b-d;return e*e+f*f},distancePow:function(a,b,c,d,e){return void 0===e&&(e=2),Math.sqrt(Math.pow(c-a,e)+Math.pow(d-b,e))},clamp:function(a,b,c){return b>a?b:a>c?c:a},clampBottom:function(a,b){return b>a?b:a},within:function(a,b,c){return Math.abs(a-b)<=c},mapLinear:function(a,b,c,d,e){return d+(a-b)*(e-d)/(c-b)},smoothstep:function(a,b,c){return a=Math.max(0,Math.min(1,(a-b)/(c-b))),a*a*(3-2*a)},smootherstep:function(a,b,c){return a=Math.max(0,Math.min(1,(a-b)/(c-b))),a*a*a*(a*(6*a-15)+10)},sign:function(a){return 0>a?-1:a>0?1:0},percent:function(a,b,c){return void 0===c&&(c=0),a>b||c>b?1:c>a||c>a?0:(a-c)/b}};var k=Math.PI/180,l=180/Math.PI;return c.Math.degToRad=function(a){return a*k},c.Math.radToDeg=function(a){return a*l},c.RandomDataGenerator=function(a){void 0===a&&(a=[]),this.c=1,this.s0=0,this.s1=0,this.s2=0,"string"==typeof a?this.state(a):this.sow(a)},c.RandomDataGenerator.prototype={rnd:function(){var a=2091639*this.s0+2.3283064365386963e-10*this.c;return this.c=0|a,this.s0=this.s1,this.s1=this.s2,this.s2=a-this.c,this.s2},sow:function(a){if(this.s0=this.hash(" "),this.s1=this.hash(this.s0),this.s2=this.hash(this.s1),this.c=1,a)for(var b=0;b>>0,b-=d,b*=d,d=b>>>0,b-=d,d+=4294967296*b;return 2.3283064365386963e-10*(d>>>0)},integer:function(){return 4294967296*this.rnd.apply(this)},frac:function(){return this.rnd.apply(this)+1.1102230246251565e-16*(2097152*this.rnd.apply(this)|0)},real:function(){return this.integer()+this.frac()},integerInRange:function(a,b){return Math.floor(this.realInRange(0,b-a+1)+a)},between:function(a,b){return this.integerInRange(a,b)},realInRange:function(a,b){return this.frac()*(b-a)+a},normal:function(){return 1-2*this.frac()},uuid:function(){var a="",b="";for(b=a="";a++<36;b+=~a%5|3*a&4?(15^a?8^this.frac()*(20^a?16:4):4).toString(16):"-");return b},pick:function(a){return a[this.integerInRange(0,a.length-1)]},sign:function(){return this.pick([-1,1])},weightedPick:function(a){return a[~~(Math.pow(this.frac(),2)*(a.length-1)+.5)]},timestamp:function(a,b){return this.realInRange(a||9466848e5,b||1577862e6)},angle:function(){return this.integerInRange(-180,180)},state:function(a){return"string"==typeof a&&a.match(/^!rnd/)&&(a=a.split(","),this.c=parseFloat(a[1]),this.s0=parseFloat(a[2]),this.s1=parseFloat(a[3]),this.s2=parseFloat(a[4])),["!rnd",this.c,this.s0,this.s1,this.s2].join(",")}},c.RandomDataGenerator.prototype.constructor=c.RandomDataGenerator,c.QuadTree=function(a,b,c,d,e,f,g){this.maxObjects=10,this.maxLevels=4,this.level=0,this.bounds={},this.objects=[],this.nodes=[],this._empty=[],this.reset(a,b,c,d,e,f,g)},c.QuadTree.prototype={reset:function(a,b,c,d,e,f,g){this.maxObjects=e||10,this.maxLevels=f||4,this.level=g||0,this.bounds={x:Math.round(a),y:Math.round(b),width:c,height:d,subWidth:Math.floor(c/2),subHeight:Math.floor(d/2),right:Math.round(a)+Math.floor(c/2),bottom:Math.round(b)+Math.floor(d/2)},this.objects.length=0,this.nodes.length=0},populate:function(a){a.forEach(this.populateHandler,this,!0)},populateHandler:function(a){a.body&&a.exists&&this.insert(a.body)},split:function(){this.nodes[0]=new c.QuadTree(this.bounds.right,this.bounds.y,this.bounds.subWidth,this.bounds.subHeight,this.maxObjects,this.maxLevels,this.level+1),this.nodes[1]=new c.QuadTree(this.bounds.x,this.bounds.y,this.bounds.subWidth,this.bounds.subHeight,this.maxObjects,this.maxLevels,this.level+1),this.nodes[2]=new c.QuadTree(this.bounds.x,this.bounds.bottom,this.bounds.subWidth,this.bounds.subHeight,this.maxObjects,this.maxLevels,this.level+1),this.nodes[3]=new c.QuadTree(this.bounds.right,this.bounds.bottom,this.bounds.subWidth,this.bounds.subHeight,this.maxObjects,this.maxLevels,this.level+1)},insert:function(a){var b,c=0;if(null!=this.nodes[0]&&(b=this.getIndex(a),-1!==b))return void this.nodes[b].insert(a);if(this.objects.push(a),this.objects.length>this.maxObjects&&this.levelthis.bounds.bottom&&(b=2):a.x>this.bounds.right&&(a.ythis.bounds.bottom&&(b=3)),b},retrieve:function(a){if(a instanceof c.Rectangle)var b=this.objects,d=this.getIndex(a);else{if(!a.body)return this._empty;var b=this.objects,d=this.getIndex(a.body)}return this.nodes[0]&&(-1!==d?b=b.concat(this.nodes[d].retrieve(a)):(b=b.concat(this.nodes[0].retrieve(a)),b=b.concat(this.nodes[1].retrieve(a)),b=b.concat(this.nodes[2].retrieve(a)),b=b.concat(this.nodes[3].retrieve(a)))),b},clear:function(){this.objects.length=0;for(var a=this.nodes.length;a--;)this.nodes[a].clear(),this.nodes.splice(a,1);this.nodes.length=0}},c.QuadTree.prototype.constructor=c.QuadTree,c.Net=function(a){this.game=a},c.Net.prototype={getHostName:function(){return window.location&&window.location.hostname?window.location.hostname:null},checkDomainName:function(a){return-1!==window.location.hostname.indexOf(a)},updateQueryString:function(a,b,c,d){void 0===c&&(c=!1),void 0!==d&&""!==d||(d=window.location.href);var e="",f=new RegExp("([?|&])"+a+"=.*?(&|#|$)(.*)","gi");if(f.test(d))e="undefined"!=typeof b&&null!==b?d.replace(f,"$1"+a+"="+b+"$2$3"):d.replace(f,"$1$3").replace(/(&|\?)$/,"");else if("undefined"!=typeof b&&null!==b){var g=-1!==d.indexOf("?")?"&":"?",h=d.split("#");d=h[0]+g+a+"="+b,h[1]&&(d+="#"+h[1]),e=d}else e=d;return c?void(window.location.href=e):e},getQueryString:function(a){void 0===a&&(a="");var b={},c=location.search.substring(1).split("&");for(var d in c){var e=c[d].split("=");if(e.length>1){if(a&&a==this.decodeURI(e[0]))return this.decodeURI(e[1]);b[this.decodeURI(e[0])]=this.decodeURI(e[1])}}return b},decodeURI:function(a){return decodeURIComponent(a.replace(/\+/g," "))}},c.Net.prototype.constructor=c.Net,c.TweenManager=function(a){this.game=a,this.frameBased=!1,this._tweens=[],this._add=[],this.easeMap={Power0:c.Easing.Power0,Power1:c.Easing.Power1,Power2:c.Easing.Power2,Power3:c.Easing.Power3,Power4:c.Easing.Power4,Linear:c.Easing.Linear.None,Quad:c.Easing.Quadratic.Out,Cubic:c.Easing.Cubic.Out,Quart:c.Easing.Quartic.Out,Quint:c.Easing.Quintic.Out,Sine:c.Easing.Sinusoidal.Out,Expo:c.Easing.Exponential.Out,Circ:c.Easing.Circular.Out,Elastic:c.Easing.Elastic.Out,Back:c.Easing.Back.Out,Bounce:c.Easing.Bounce.Out,"Quad.easeIn":c.Easing.Quadratic.In,"Cubic.easeIn":c.Easing.Cubic.In,"Quart.easeIn":c.Easing.Quartic.In,"Quint.easeIn":c.Easing.Quintic.In,"Sine.easeIn":c.Easing.Sinusoidal.In,"Expo.easeIn":c.Easing.Exponential.In,"Circ.easeIn":c.Easing.Circular.In,"Elastic.easeIn":c.Easing.Elastic.In,"Back.easeIn":c.Easing.Back.In,"Bounce.easeIn":c.Easing.Bounce.In,"Quad.easeOut":c.Easing.Quadratic.Out,"Cubic.easeOut":c.Easing.Cubic.Out,"Quart.easeOut":c.Easing.Quartic.Out,"Quint.easeOut":c.Easing.Quintic.Out,"Sine.easeOut":c.Easing.Sinusoidal.Out,"Expo.easeOut":c.Easing.Exponential.Out,"Circ.easeOut":c.Easing.Circular.Out,"Elastic.easeOut":c.Easing.Elastic.Out,"Back.easeOut":c.Easing.Back.Out,"Bounce.easeOut":c.Easing.Bounce.Out,"Quad.easeInOut":c.Easing.Quadratic.InOut,"Cubic.easeInOut":c.Easing.Cubic.InOut,"Quart.easeInOut":c.Easing.Quartic.InOut,"Quint.easeInOut":c.Easing.Quintic.InOut,"Sine.easeInOut":c.Easing.Sinusoidal.InOut,"Expo.easeInOut":c.Easing.Exponential.InOut,"Circ.easeInOut":c.Easing.Circular.InOut,"Elastic.easeInOut":c.Easing.Elastic.InOut,"Back.easeInOut":c.Easing.Back.InOut,"Bounce.easeInOut":c.Easing.Bounce.InOut},this.game.onPause.add(this._pauseAll,this),this.game.onResume.add(this._resumeAll,this)},c.TweenManager.prototype={getAll:function(){return this._tweens},removeAll:function(){for(var a=0;ad;d++)this.removeFrom(a[d]);else if(a.type===c.GROUP&&b)for(var d=0,e=a.children.length;e>d;d++)this.removeFrom(a.children[d]);else{for(d=0,e=this._tweens.length;e>d;d++)a===this._tweens[d].target&&this.remove(this._tweens[d]);for(d=0,e=this._add.length;e>d;d++)a===this._add[d].target&&this.remove(this._add[d])}},add:function(a){a._manager=this,this._add.push(a)},create:function(a){return new c.Tween(a,this.game,this)},remove:function(a){var b=this._tweens.indexOf(a);-1!==b?this._tweens[b].pendingDelete=!0:(b=this._add.indexOf(a),-1!==b&&(this._add[b].pendingDelete=!0))},update:function(){var a=this._add.length,b=this._tweens.length;if(0===b&&0===a)return!1;for(var c=0;b>c;)this._tweens[c].update(this.game.time.time)?c++:(this._tweens.splice(c,1),b--);return a>0&&(this._tweens=this._tweens.concat(this._add),this._add.length=0),!0},isTweening:function(a){return this._tweens.some(function(b){return b.target===a})},_pauseAll:function(){for(var a=this._tweens.length-1;a>=0;a--)this._tweens[a]._pause()},_resumeAll:function(){for(var a=this._tweens.length-1;a>=0;a--)this._tweens[a]._resume()},pauseAll:function(){for(var a=this._tweens.length-1;a>=0;a--)this._tweens[a].pause()},resumeAll:function(){for(var a=this._tweens.length-1;a>=0;a--)this._tweens[a].resume(!0)}},c.TweenManager.prototype.constructor=c.TweenManager,c.Tween=function(a,b,d){this.game=b,this.target=a,this.manager=d,this.timeline=[],this.reverse=!1,this.timeScale=1,this.repeatCounter=0,this.pendingDelete=!1,this.onStart=new c.Signal,this.onLoop=new c.Signal,this.onRepeat=new c.Signal,this.onChildComplete=new c.Signal,this.onComplete=new c.Signal,this.isRunning=!1,this.current=0,this.properties={},this.chainedTween=null,this.isPaused=!1,this.frameBased=d.frameBased,this._onUpdateCallback=null,this._onUpdateCallbackContext=null,this._pausedTime=0,this._codePaused=!1,this._hasStarted=!1},c.Tween.prototype={to:function(a,b,d,e,f,g,h){return(void 0===b||0>=b)&&(b=1e3),void 0!==d&&null!==d||(d=c.Easing.Default),void 0===e&&(e=!1),void 0===f&&(f=0),void 0===g&&(g=0),void 0===h&&(h=!1),"string"==typeof d&&this.manager.easeMap[d]&&(d=this.manager.easeMap[d]),this.isRunning?(console.warn("Phaser.Tween.to cannot be called after Tween.start"),this):(this.timeline.push(new c.TweenData(this).to(a,b,d,f,g,h)),e&&this.start(),this)},from:function(a,b,d,e,f,g,h){return void 0===b&&(b=1e3),void 0!==d&&null!==d||(d=c.Easing.Default),void 0===e&&(e=!1),void 0===f&&(f=0),void 0===g&&(g=0),void 0===h&&(h=!1),"string"==typeof d&&this.manager.easeMap[d]&&(d=this.manager.easeMap[d]),this.isRunning?(console.warn("Phaser.Tween.from cannot be called after Tween.start"),this):(this.timeline.push(new c.TweenData(this).from(a,b,d,f,g,h)),e&&this.start(),this)},start:function(a){if(void 0===a&&(a=0),null===this.game||null===this.target||0===this.timeline.length||this.isRunning)return this;for(var b=0;ba||a>this.timeline.length-1)&&(a=0),this.current=a,this.timeline[this.current].start(),this},stop:function(a){return void 0===a&&(a=!1),this.isRunning=!1,this._onUpdateCallback=null,this._onUpdateCallbackContext=null,a&&(this.onComplete.dispatch(this.target,this),this._hasStarted=!1,this.chainedTween&&this.chainedTween.start()),this.manager.remove(this),this},updateTweenData:function(a,b,c){if(0===this.timeline.length)return this;if(void 0===c&&(c=0),-1===c)for(var d=0;d0?arguments[a-1].chainedTween=arguments[a]:this.chainedTween=arguments[a];return this},loop:function(a){return void 0===a&&(a=!0),this.repeatCounter=a?-1:0,this},onUpdateCallback:function(a,b){return this._onUpdateCallback=a,this._onUpdateCallbackContext=b,this},pause:function(){this.isPaused=!0,this._codePaused=!0,this._pausedTime=this.game.time.time},_pause:function(){this._codePaused||(this.isPaused=!0,this._pausedTime=this.game.time.time)},resume:function(){if(this.isPaused){this.isPaused=!1,this._codePaused=!1;for(var a=0;a0?(this.repeatCounter--,this.timeline[this.current].start(),this.onRepeat.dispatch(this.target,this),!0):(this.isRunning=!1,this.onComplete.dispatch(this.target,this),this._hasStarted=!1,this.chainedTween&&this.chainedTween.start(),!1):(this.onChildComplete.dispatch(this.target,this),this.timeline[this.current].start(),!0)}},generateData:function(a,b){if(null===this.game||null===this.target)return null;void 0===a&&(a=60),void 0===b&&(b=[]);for(var c=0;c0?this.isRunning=!1:this.isRunning=!0,this.isFrom)for(var a in this.vStartCache)this.vStart[a]=this.vEndCache[a],this.vEnd[a]=this.vStartCache[a],this.parent.target[a]=this.vStart[a];return this.value=0,this.yoyoCounter=0,this.repeatCounter=this.repeatTotal,this},loadValues:function(){for(var a in this.parent.properties){if(this.vStart[a]=this.parent.properties[a],Array.isArray(this.vEnd[a])){if(0===this.vEnd[a].length)continue;0===this.percent&&(this.vEnd[a]=[this.vStart[a]].concat(this.vEnd[a]))}"undefined"!=typeof this.vEnd[a]?("string"==typeof this.vEnd[a]&&(this.vEnd[a]=this.vStart[a]+parseFloat(this.vEnd[a],10)),this.parent.properties[a]=this.vEnd[a]):this.vEnd[a]=this.vStart[a],this.vStartCache[a]=this.vStart[a],this.vEndCache[a]=this.vEnd[a]}return this},update:function(a){if(this.isRunning){if(a=this.startTime))return c.TweenData.PENDING;this.isRunning=!0}var b=this.parent.frameBased?this.game.time.physicsElapsedMS:this.game.time.elapsedMS;this.parent.reverse?(this.dt-=b*this.parent.timeScale,this.dt=Math.max(this.dt,0)):(this.dt+=b*this.parent.timeScale,this.dt=Math.min(this.dt,this.duration)),this.percent=this.dt/this.duration,this.value=this.easingFunction(this.percent);for(var d in this.vEnd){var e=this.vStart[d],f=this.vEnd[d];Array.isArray(f)?this.parent.target[d]=this.interpolationFunction.call(this.interpolationContext,f,this.value):this.parent.target[d]=e+(f-e)*this.value}return!this.parent.reverse&&1===this.percent||this.parent.reverse&&0===this.percent?this.repeat():c.TweenData.RUNNING},generateData:function(a){this.parent.reverse?this.dt=this.duration:this.dt=0;var b=[],c=!1,d=1/a*1e3;do{this.parent.reverse?(this.dt-=d,this.dt=Math.max(this.dt,0)):(this.dt+=d,this.dt=Math.min(this.dt,this.duration)),this.percent=this.dt/this.duration,this.value=this.easingFunction(this.percent);var e={};for(var f in this.vEnd){var g=this.vStart[f],h=this.vEnd[f];Array.isArray(h)?e[f]=this.interpolationFunction(h,this.value):e[f]=g+(h-g)*this.value}b.push(e),(!this.parent.reverse&&1===this.percent||this.parent.reverse&&0===this.percent)&&(c=!0)}while(!c);if(this.yoyo){var i=b.slice();i.reverse(),b=b.concat(i)}return b},repeat:function(){if(this.yoyo){if(this.inReverse&&0===this.repeatCounter){for(var a in this.vStartCache)this.vStart[a]=this.vStartCache[a],this.vEnd[a]=this.vEndCache[a];return this.inReverse=!1,c.TweenData.COMPLETE}this.inReverse=!this.inReverse}else if(0===this.repeatCounter)return c.TweenData.COMPLETE;if(this.inReverse)for(var a in this.vStartCache)this.vStart[a]=this.vEndCache[a],this.vEnd[a]=this.vStartCache[a];else{for(var a in this.vStartCache)this.vStart[a]=this.vStartCache[a],this.vEnd[a]=this.vEndCache[a];this.repeatCounter>0&&this.repeatCounter--}return this.startTime=this.game.time.time,this.yoyo&&this.inReverse?this.startTime+=this.yoyoDelay:this.inReverse||(this.startTime+=this.repeatDelay),this.parent.reverse?this.dt=this.duration:this.dt=0,c.TweenData.LOOPED}},c.TweenData.prototype.constructor=c.TweenData,c.Easing={Linear:{None:function(a){return a}},Quadratic:{In:function(a){return a*a},Out:function(a){return a*(2-a)},InOut:function(a){return(a*=2)<1?.5*a*a:-.5*(--a*(a-2)-1)}},Cubic:{In:function(a){return a*a*a},Out:function(a){return--a*a*a+1},InOut:function(a){return(a*=2)<1?.5*a*a*a:.5*((a-=2)*a*a+2)}},Quartic:{In:function(a){return a*a*a*a},Out:function(a){return 1- --a*a*a*a},InOut:function(a){return(a*=2)<1?.5*a*a*a*a:-.5*((a-=2)*a*a*a-2)}},Quintic:{In:function(a){return a*a*a*a*a},Out:function(a){return--a*a*a*a*a+1},InOut:function(a){return(a*=2)<1?.5*a*a*a*a*a:.5*((a-=2)*a*a*a*a+2)}},Sinusoidal:{In:function(a){return 0===a?0:1===a?1:1-Math.cos(a*Math.PI/2)},Out:function(a){return 0===a?0:1===a?1:Math.sin(a*Math.PI/2)},InOut:function(a){return 0===a?0:1===a?1:.5*(1-Math.cos(Math.PI*a))}},Exponential:{In:function(a){return 0===a?0:Math.pow(1024,a-1)},Out:function(a){return 1===a?1:1-Math.pow(2,-10*a)},InOut:function(a){return 0===a?0:1===a?1:(a*=2)<1?.5*Math.pow(1024,a-1):.5*(-Math.pow(2,-10*(a-1))+2)}},Circular:{In:function(a){return 1-Math.sqrt(1-a*a)},Out:function(a){return Math.sqrt(1- --a*a)},InOut:function(a){return(a*=2)<1?-.5*(Math.sqrt(1-a*a)-1):.5*(Math.sqrt(1-(a-=2)*a)+1)}},Elastic:{In:function(a){var b,c=.1,d=.4;return 0===a?0:1===a?1:(!c||1>c?(c=1,b=d/4):b=d*Math.asin(1/c)/(2*Math.PI),-(c*Math.pow(2,10*(a-=1))*Math.sin((a-b)*(2*Math.PI)/d)))},Out:function(a){var b,c=.1,d=.4;return 0===a?0:1===a?1:(!c||1>c?(c=1,b=d/4):b=d*Math.asin(1/c)/(2*Math.PI),c*Math.pow(2,-10*a)*Math.sin((a-b)*(2*Math.PI)/d)+1)},InOut:function(a){var b,c=.1,d=.4;return 0===a?0:1===a?1:(!c||1>c?(c=1,b=d/4):b=d*Math.asin(1/c)/(2*Math.PI),(a*=2)<1?-.5*(c*Math.pow(2,10*(a-=1))*Math.sin((a-b)*(2*Math.PI)/d)):c*Math.pow(2,-10*(a-=1))*Math.sin((a-b)*(2*Math.PI)/d)*.5+1)}},Back:{In:function(a){var b=1.70158;return a*a*((b+1)*a-b)},Out:function(a){var b=1.70158;return--a*a*((b+1)*a+b)+1},InOut:function(a){var b=2.5949095;return(a*=2)<1?.5*(a*a*((b+1)*a-b)):.5*((a-=2)*a*((b+1)*a+b)+2)}},Bounce:{In:function(a){return 1-c.Easing.Bounce.Out(1-a)},Out:function(a){return 1/2.75>a?7.5625*a*a:2/2.75>a?7.5625*(a-=1.5/2.75)*a+.75:2.5/2.75>a?7.5625*(a-=2.25/2.75)*a+.9375:7.5625*(a-=2.625/2.75)*a+.984375},InOut:function(a){return.5>a?.5*c.Easing.Bounce.In(2*a):.5*c.Easing.Bounce.Out(2*a-1)+.5}}},c.Easing.Default=c.Easing.Linear.None,c.Easing.Power0=c.Easing.Linear.None,c.Easing.Power1=c.Easing.Quadratic.Out,c.Easing.Power2=c.Easing.Cubic.Out,c.Easing.Power3=c.Easing.Quartic.Out,c.Easing.Power4=c.Easing.Quintic.Out,c.Time=function(a){this.game=a,this.time=0,this.prevTime=0,this.now=0,this.elapsed=0,this.elapsedMS=0,this.physicsElapsed=1/60,this.physicsElapsedMS=1/60*1e3,this.desiredFpsMult=1/60,this._desiredFps=60,this.suggestedFps=this.desiredFps,this.slowMotion=1,this.advancedTiming=!1,this.frames=0,this.fps=0,this.fpsMin=1e3,this.fpsMax=0,this.msMin=1e3,this.msMax=0,this.pauseDuration=0,this.timeToCall=0,this.timeExpected=0,this.events=new c.Timer(this.game,!1),this._frameCount=0,this._elapsedAccumulator=0,this._started=0,this._timeLastSecond=0,this._pauseStarted=0,this._justResumed=!1,this._timers=[]},c.Time.prototype={boot:function(){this._started=Date.now(),this.time=Date.now(),this.events.start(),this.timeExpected=this.time},add:function(a){return this._timers.push(a),a},create:function(a){void 0===a&&(a=!0);var b=new c.Timer(this.game,a);return this._timers.push(b),b},removeAll:function(){for(var a=0;aa;)this._timers[a].update(this.time)?a++:(this._timers.splice(a,1),b--)},updateAdvancedTiming:function(){this._frameCount++,this._elapsedAccumulator+=this.elapsed,this._frameCount>=2*this._desiredFps&&(this.suggestedFps=5*Math.floor(200/(this._elapsedAccumulator/this._frameCount)),this._frameCount=0,this._elapsedAccumulator=0),this.msMin=Math.min(this.msMin,this.elapsed),this.msMax=Math.max(this.msMax,this.elapsed),this.frames++,this.now>this._timeLastSecond+1e3&&(this.fps=Math.round(1e3*this.frames/(this.now-this._timeLastSecond)),this.fpsMin=Math.min(this.fpsMin,this.fps),this.fpsMax=Math.max(this.fpsMax,this.fps),this._timeLastSecond=this.now,this.frames=0)},gamePaused:function(){this._pauseStarted=Date.now(),this.events.pause();for(var a=this._timers.length;a--;)this._timers[a]._pause()},gameResumed:function(){this.time=Date.now(),this.pauseDuration=this.time-this._pauseStarted,this.events.resume();for(var a=this._timers.length;a--;)this._timers[a]._resume()},totalElapsedSeconds:function(){return.001*(this.time-this._started)},elapsedSince:function(a){return this.time-a},elapsedSecondsSince:function(a){return.001*(this.time-a)},reset:function(){this._started=this.time,this.removeAll()}},Object.defineProperty(c.Time.prototype,"desiredFps",{get:function(){return this._desiredFps},set:function(a){this._desiredFps=a,this.physicsElapsed=1/a,this.physicsElapsedMS=1e3*this.physicsElapsed,this.desiredFpsMult=1/a}}),c.Time.prototype.constructor=c.Time,c.Timer=function(a,b){void 0===b&&(b=!0),this.game=a,this.running=!1,this.autoDestroy=b,this.expired=!1,this.elapsed=0,this.events=[],this.onComplete=new c.Signal,this.nextTick=0,this.timeCap=1e3,this.paused=!1,this._codePaused=!1,this._started=0,this._pauseStarted=0,this._pauseTotal=0,this._now=Date.now(),this._len=0,this._marked=0,this._i=0,this._diff=0,this._newTick=0},c.Timer.MINUTE=6e4,c.Timer.SECOND=1e3,c.Timer.HALF=500,c.Timer.QUARTER=250,c.Timer.prototype={create:function(a,b,d,e,f,g){a=Math.round(a);var h=a;h+=0===this._now?this.game.time.time:this._now;var i=new c.TimerEvent(this,a,h,d,b,e,f,g);return this.events.push(i),this.order(),this.expired=!1,i},add:function(a,b,c){return this.create(a,!1,0,b,c,Array.prototype.slice.call(arguments,3))},repeat:function(a,b,c,d){return this.create(a,!1,b,c,d,Array.prototype.slice.call(arguments,4))},loop:function(a,b,c){return this.create(a,!0,0,b,c,Array.prototype.slice.call(arguments,3))},start:function(a){if(!this.running){this._started=this.game.time.time+(a||0),this.running=!0;for(var b=0;b0&&(this.events.sort(this.sortHandler),this.nextTick=this.events[0].tick)},sortHandler:function(a,b){return a.tickb.tick?1:0},clearPendingEvents:function(){for(this._i=this.events.length;this._i--;)this.events[this._i].pendingDelete&&this.events.splice(this._i,1);this._len=this.events.length,this._i=0},update:function(a){if(this.paused)return!0;if(this.elapsed=a-this._now,this._now=a,this.elapsed>this.timeCap&&this.adjustEvents(a-this.elapsed),this._marked=0,this.clearPendingEvents(),this.running&&this._now>=this.nextTick&&this._len>0){for(;this._i=this.events[this._i].tick&&!this.events[this._i].pendingDelete;)this._newTick=this._now+this.events[this._i].delay-(this._now-this.events[this._i].tick),this._newTick<0&&(this._newTick=this._now+this.events[this._i].delay),this.events[this._i].loop===!0?(this.events[this._i].tick=this._newTick,this.events[this._i].callback.apply(this.events[this._i].callbackContext,this.events[this._i].args)):this.events[this._i].repeatCount>0?(this.events[this._i].repeatCount--,this.events[this._i].tick=this._newTick,this.events[this._i].callback.apply(this.events[this._i].callbackContext,this.events[this._i].args)):(this._marked++,this.events[this._i].pendingDelete=!0,this.events[this._i].callback.apply(this.events[this._i].callbackContext,this.events[this._i].args)),this._i++;this.events.length>this._marked?this.order():(this.expired=!0,this.onComplete.dispatch(this))}return!this.expired||!this.autoDestroy},pause:function(){this.running&&(this._codePaused=!0,this.paused||(this._pauseStarted=this.game.time.time,this.paused=!0))},_pause:function(){!this.paused&&this.running&&(this._pauseStarted=this.game.time.time,this.paused=!0)},adjustEvents:function(a){for(var b=0;bc&&(c=0),this.events[b].tick=this._now+c}var d=this.nextTick-a;0>d?this.nextTick=this._now:this.nextTick=this._now+d},resume:function(){if(this.paused){var a=this.game.time.time;this._pauseTotal+=a-this._now,this._now=a,this.adjustEvents(this._pauseStarted),this.paused=!1,this._codePaused=!1}},_resume:function(){this._codePaused||this.resume()},removeAll:function(){this.onComplete.removeAll(),this.events.length=0,this._len=0,this._i=0},destroy:function(){this.onComplete.removeAll(),this.running=!1,this.events=[],this._len=0,this._i=0}},Object.defineProperty(c.Timer.prototype,"next",{get:function(){return this.nextTick}}),Object.defineProperty(c.Timer.prototype,"duration",{get:function(){return this.running&&this.nextTick>this._now?this.nextTick-this._now:0}}),Object.defineProperty(c.Timer.prototype,"length",{get:function(){return this.events.length}}),Object.defineProperty(c.Timer.prototype,"ms",{get:function(){return this.running?this._now-this._started-this._pauseTotal:0}}),Object.defineProperty(c.Timer.prototype,"seconds",{get:function(){return this.running?.001*this.ms:0}}),c.Timer.prototype.constructor=c.Timer,c.TimerEvent=function(a,b,c,d,e,f,g,h){this.timer=a,this.delay=b,this.tick=c,this.repeatCount=d-1,this.loop=e,this.callback=f,this.callbackContext=g,this.args=h,this.pendingDelete=!1},c.TimerEvent.prototype.constructor=c.TimerEvent,c.AnimationManager=function(a){this.sprite=a,this.game=a.game,this.currentFrame=null,this.currentAnim=null,this.updateIfVisible=!0,this.isLoaded=!1,this._frameData=null,this._anims={},this._outputFrames=[]},c.AnimationManager.prototype={loadFrameData:function(a,b){if(void 0===a)return!1;if(this.isLoaded)for(var c in this._anims)this._anims[c].updateFrameData(a);return this._frameData=a,void 0===b||null===b?this.frame=0:"string"==typeof b?this.frameName=b:this.frame=b,this.isLoaded=!0,!0},copyFrameData:function(a,b){if(this._frameData=a.clone(),this.isLoaded)for(var c in this._anims)this._anims[c].updateFrameData(this._frameData);return void 0===b||null===b?this.frame=0:"string"==typeof b?this.frameName=b:this.frame=b,this.isLoaded=!0,!0},add:function(a,b,d,e,f){return b=b||[],d=d||60,void 0===e&&(e=!1),void 0===f&&(f=!(!b||"number"!=typeof b[0])),this._outputFrames=[],this._frameData.getFrameIndexes(b,f,this._outputFrames),this._anims[a]=new c.Animation(this.game,this.sprite,a,this._frameData,this._outputFrames,d,e),this.currentAnim=this._anims[a],this.sprite.tilingTexture&&(this.sprite.refreshTexture=!0),this._anims[a]},validateFrames:function(a,b){void 0===b&&(b=!0);for(var c=0;cthis._frameData.total)return!1}else if(this._frameData.checkFrameName(a[c])===!1)return!1;return!0},play:function(a,b,c,d){return this._anims[a]?this.currentAnim===this._anims[a]?this.currentAnim.isPlaying===!1?(this.currentAnim.paused=!1,this.currentAnim.play(b,c,d)):this.currentAnim:(this.currentAnim&&this.currentAnim.isPlaying&&this.currentAnim.stop(),this.currentAnim=this._anims[a],this.currentAnim.paused=!1,this.currentFrame=this.currentAnim.currentFrame,this.currentAnim.play(b,c,d)):void 0},stop:function(a,b){void 0===b&&(b=!1),!this.currentAnim||"string"==typeof a&&a!==this.currentAnim.name||this.currentAnim.stop(b)},update:function(){return this.updateIfVisible&&!this.sprite.visible?!1:this.currentAnim&&this.currentAnim.update()?(this.currentFrame=this.currentAnim.currentFrame,!0):!1},next:function(a){this.currentAnim&&(this.currentAnim.next(a),this.currentFrame=this.currentAnim.currentFrame)},previous:function(a){this.currentAnim&&(this.currentAnim.previous(a),this.currentFrame=this.currentAnim.currentFrame)},getAnimation:function(a){return"string"==typeof a&&this._anims[a]?this._anims[a]:null},refreshFrame:function(){},destroy:function(){var a=null;for(var a in this._anims)this._anims.hasOwnProperty(a)&&this._anims[a].destroy();this._anims={},this._outputFrames=[],this._frameData=null,this.currentAnim=null,this.currentFrame=null,this.sprite=null,this.game=null}},c.AnimationManager.prototype.constructor=c.AnimationManager,Object.defineProperty(c.AnimationManager.prototype,"frameData",{get:function(){return this._frameData}}),Object.defineProperty(c.AnimationManager.prototype,"frameTotal",{get:function(){return this._frameData.total}}),Object.defineProperty(c.AnimationManager.prototype,"paused",{get:function(){return this.currentAnim.isPaused},set:function(a){this.currentAnim.paused=a}}),Object.defineProperty(c.AnimationManager.prototype,"name",{get:function(){return this.currentAnim?this.currentAnim.name:void 0}}),Object.defineProperty(c.AnimationManager.prototype,"frame",{get:function(){return this.currentFrame?this.currentFrame.index:void 0},set:function(a){"number"==typeof a&&this._frameData&&null!==this._frameData.getFrame(a)&&(this.currentFrame=this._frameData.getFrame(a),this.currentFrame&&this.sprite.setFrame(this.currentFrame))}}),Object.defineProperty(c.AnimationManager.prototype,"frameName",{get:function(){return this.currentFrame?this.currentFrame.name:void 0},set:function(a){"string"==typeof a&&this._frameData&&null!==this._frameData.getFrameByName(a)?(this.currentFrame=this._frameData.getFrameByName(a),this.currentFrame&&(this._frameIndex=this.currentFrame.index,this.sprite.setFrame(this.currentFrame))):console.warn("Cannot set frameName: "+a)}}),c.Animation=function(a,b,d,e,f,g,h){void 0===h&&(h=!1),this.game=a,this._parent=b,this._frameData=e,this.name=d,this._frames=[],this._frames=this._frames.concat(f),this.delay=1e3/g,this.loop=h,this.loopCount=0,this.killOnComplete=!1,this.isFinished=!1,this.isPlaying=!1,this.isPaused=!1,this._pauseStartTime=0,this._frameIndex=0,this._frameDiff=0,this._frameSkip=1,this.currentFrame=this._frameData.getFrame(this._frames[this._frameIndex]),this.onStart=new c.Signal,this.onUpdate=null,this.onComplete=new c.Signal,this.onLoop=new c.Signal,this.isReversed=!1,this.game.onPause.add(this.onPause,this),this.game.onResume.add(this.onResume,this)},c.Animation.prototype={play:function(a,b,c){return"number"==typeof a&&(this.delay=1e3/a),"boolean"==typeof b&&(this.loop=b),"undefined"!=typeof c&&(this.killOnComplete=c),this.isPlaying=!0,this.isFinished=!1,this.paused=!1,this.loopCount=0,this._timeLastFrame=this.game.time.time,this._timeNextFrame=this.game.time.time+this.delay,this._frameIndex=this.isReversed?this._frames.length-1:0,this.updateCurrentFrame(!1,!0),this._parent.events.onAnimationStart$dispatch(this._parent,this),this.onStart.dispatch(this._parent,this),this._parent.animations.currentAnim=this,this._parent.animations.currentFrame=this.currentFrame,this},restart:function(){this.isPlaying=!0,this.isFinished=!1,this.paused=!1,this.loopCount=0,this._timeLastFrame=this.game.time.time,this._timeNextFrame=this.game.time.time+this.delay,this._frameIndex=0,this.currentFrame=this._frameData.getFrame(this._frames[this._frameIndex]),this._parent.setFrame(this.currentFrame),this._parent.animations.currentAnim=this,this._parent.animations.currentFrame=this.currentFrame,this.onStart.dispatch(this._parent,this)},reverse:function(){return this.reversed=!this.reversed,this},reverseOnce:function(){return this.onComplete.addOnce(this.reverse.bind(this)),this.reverse()},setFrame:function(a,b){var c;if(void 0===b&&(b=!1),"string"==typeof a)for(var d=0;d=this._timeNextFrame?(this._frameSkip=1,this._frameDiff=this.game.time.time-this._timeNextFrame,this._timeLastFrame=this.game.time.time,this._frameDiff>this.delay&&(this._frameSkip=Math.floor(this._frameDiff/this.delay),this._frameDiff-=this._frameSkip*this.delay),this._timeNextFrame=this.game.time.time+(this.delay-this._frameDiff),this.isReversed?this._frameIndex-=this._frameSkip:this._frameIndex+=this._frameSkip,!this.isReversed&&this._frameIndex>=this._frames.length||this.isReversed&&this._frameIndex<=-1?this.loop?(this._frameIndex=Math.abs(this._frameIndex)%this._frames.length,this.isReversed&&(this._frameIndex=this._frames.length-1-this._frameIndex),this.currentFrame=this._frameData.getFrame(this._frames[this._frameIndex]),this.currentFrame&&this._parent.setFrame(this.currentFrame),this.loopCount++,this._parent.events.onAnimationLoop$dispatch(this._parent,this),this.onLoop.dispatch(this._parent,this),this.onUpdate?(this.onUpdate.dispatch(this,this.currentFrame),!!this._frameData):!0):(this.complete(),!1):this.updateCurrentFrame(!0)):!1},updateCurrentFrame:function(a,b){if(void 0===b&&(b=!1),!this._frameData)return!1;var c=this.currentFrame.index;return this.currentFrame=this._frameData.getFrame(this._frames[this._frameIndex]),this.currentFrame&&(b||!b&&c!==this.currentFrame.index)&&this._parent.setFrame(this.currentFrame),this.onUpdate&&a?(this.onUpdate.dispatch(this,this.currentFrame),!!this._frameData):!0},next:function(a){void 0===a&&(a=1);var b=this._frameIndex+a;b>=this._frames.length&&(this.loop?b%=this._frames.length:b=this._frames.length-1),b!==this._frameIndex&&(this._frameIndex=b,this.updateCurrentFrame(!0))},previous:function(a){void 0===a&&(a=1);var b=this._frameIndex-a;0>b&&(this.loop?b=this._frames.length+b:b++),b!==this._frameIndex&&(this._frameIndex=b,this.updateCurrentFrame(!0))},updateFrameData:function(a){this._frameData=a,this.currentFrame=this._frameData?this._frameData.getFrame(this._frames[this._frameIndex%this._frames.length]):null},destroy:function(){this._frameData&&(this.game.onPause.remove(this.onPause,this),this.game.onResume.remove(this.onResume,this),this.game=null,this._parent=null,this._frames=null,this._frameData=null,this.currentFrame=null,this.isPlaying=!1,this.onStart.dispose(),this.onLoop.dispose(),this.onComplete.dispose(),this.onUpdate&&this.onUpdate.dispose())},complete:function(){this._frameIndex=this._frames.length-1,this.currentFrame=this._frameData.getFrame(this._frames[this._frameIndex]),this.isPlaying=!1,this.isFinished=!0,this.paused=!1,this._parent.events.onAnimationComplete$dispatch(this._parent,this),this.onComplete.dispatch(this._parent,this),this.killOnComplete&&this._parent.kill()}},c.Animation.prototype.constructor=c.Animation,Object.defineProperty(c.Animation.prototype,"paused",{get:function(){return this.isPaused},set:function(a){this.isPaused=a,a?this._pauseStartTime=this.game.time.time:this.isPlaying&&(this._timeNextFrame=this.game.time.time+this.delay)}}),Object.defineProperty(c.Animation.prototype,"reversed",{get:function(){return this.isReversed},set:function(a){this.isReversed=a}}),Object.defineProperty(c.Animation.prototype,"frameTotal",{get:function(){return this._frames.length}}),Object.defineProperty(c.Animation.prototype,"frame",{get:function(){return null!==this.currentFrame?this.currentFrame.index:this._frameIndex},set:function(a){this.currentFrame=this._frameData.getFrame(this._frames[a]),null!==this.currentFrame&&(this._frameIndex=a,this._parent.setFrame(this.currentFrame),this.onUpdate&&this.onUpdate.dispatch(this,this.currentFrame))}}),Object.defineProperty(c.Animation.prototype,"speed",{get:function(){return Math.round(1e3/this.delay)},set:function(a){a>=1&&(this.delay=1e3/a)}}),Object.defineProperty(c.Animation.prototype,"enableUpdate",{get:function(){return null!==this.onUpdate},set:function(a){a&&null===this.onUpdate?this.onUpdate=new c.Signal:a||null===this.onUpdate||(this.onUpdate.dispose(),this.onUpdate=null)}}),c.Animation.generateFrameNames=function(a,b,d,e,f){void 0===e&&(e="");var g=[],h="";if(d>b)for(var i=b;d>=i;i++)h="number"==typeof f?c.Utils.pad(i.toString(),f,"0",1):i.toString(),h=a+h+e,g.push(h);else for(var i=b;i>=d;i--)h="number"==typeof f?c.Utils.pad(i.toString(),f,"0",1):i.toString(),h=a+h+e,g.push(h);return g},c.Frame=function(a,b,d,e,f,g){this.index=a,this.x=b,this.y=d,this.width=e,this.height=f,this.name=g,this.centerX=Math.floor(e/2),this.centerY=Math.floor(f/2),this.distance=c.Math.distance(0,0,e,f),this.rotated=!1,this.rotationDirection="cw",this.trimmed=!1,this.sourceSizeW=e,this.sourceSizeH=f,this.spriteSourceSizeX=0,this.spriteSourceSizeY=0,this.spriteSourceSizeW=0,this.spriteSourceSizeH=0,this.right=this.x+this.width,this.bottom=this.y+this.height},c.Frame.prototype={resize:function(a,b){this.width=a,this.height=b,this.centerX=Math.floor(a/2),this.centerY=Math.floor(b/2),this.distance=c.Math.distance(0,0,a,b),this.sourceSizeW=a,this.sourceSizeH=b,this.right=this.x+a,this.bottom=this.y+b},setTrim:function(a,b,c,d,e,f,g){this.trimmed=a,a&&(this.sourceSizeW=b,this.sourceSizeH=c,this.centerX=Math.floor(b/2),this.centerY=Math.floor(c/2),this.spriteSourceSizeX=d,this.spriteSourceSizeY=e,this.spriteSourceSizeW=f,this.spriteSourceSizeH=g)},clone:function(){var a=new c.Frame(this.index,this.x,this.y,this.width,this.height,this.name);for(var b in this)this.hasOwnProperty(b)&&(a[b]=this[b]);return a},getRect:function(a){return void 0===a?a=new c.Rectangle(this.x,this.y,this.width,this.height):a.setTo(this.x,this.y,this.width,this.height),a}},c.Frame.prototype.constructor=c.Frame,c.FrameData=function(){this._frames=[],this._frameNames=[]},c.FrameData.prototype={addFrame:function(a){return a.index=this._frames.length,this._frames.push(a),""!==a.name&&(this._frameNames[a.name]=a.index),a},getFrame:function(a){return a>=this._frames.length&&(a=0),this._frames[a]},getFrameByName:function(a){return"number"==typeof this._frameNames[a]?this._frames[this._frameNames[a]]:null},checkFrameName:function(a){return null!=this._frameNames[a]},clone:function(){for(var a=new c.FrameData,b=0;b=d;d++)c.push(this._frames[d]);return c},getFrames:function(a,b,c){if(void 0===b&&(b=!0),void 0===c&&(c=[]),void 0===a||0===a.length)for(var d=0;d=d&&(d=Math.floor(-j/Math.min(-1,d))),0>=e&&(e=Math.floor(-k/Math.min(-1,e)));var l=Math.floor((j-g)/(d+h)),m=Math.floor((k-g)/(e+h)),n=l*m;if(-1!==f&&(n=f),0===j||0===k||d>j||e>k||0===n)return console.warn("Phaser.AnimationParser.spriteSheet: '"+b+"'s width/height zero or width/height < given frameWidth/frameHeight"),null;for(var o=new c.FrameData,p=g,q=g,r=0;n>r;r++)o.addFrame(new c.Frame(r,p,q,d,e,"")),p+=d+h,p+d>j&&(p=g,q+=e+h);return o},JSONData:function(a,b){if(!b.frames)return console.warn("Phaser.AnimationParser.JSONData: Invalid Texture Atlas JSON given, missing 'frames' array"),void console.log(b);for(var d,e=new c.FrameData,f=b.frames,g=0;g tag");for(var d,e,f,g,h,i,j,k,l,m,n,o=new c.FrameData,p=b.getElementsByTagName("SubTexture"),q=0;q-1},getAssetIndex:function(a,b){for(var c=-1,d=0;d-1?{index:c,file:this._fileList[c]}:!1},reset:function(a,b){void 0===b&&(b=!1),this.resetLocked||(a&&(this.preloadSprite=null),this.isLoading=!1,this._processingHead=0,this._fileList.length=0,this._flightQueue.length=0,this._fileLoadStarted=!1,this._totalFileCount=0,this._totalPackCount=0,this._loadedPackCount=0,this._loadedFileCount=0,b&&(this.onLoadStart.removeAll(),this.onLoadComplete.removeAll(),this.onPackComplete.removeAll(),this.onFileStart.removeAll(),this.onFileComplete.removeAll(),this.onFileError.removeAll()))},addToFileList:function(a,b,c,d,e,f){if(void 0===e&&(e=!1),void 0===b||""===b)return console.warn("Phaser.Loader: Invalid or no key given of type "+a),this;if(void 0===c||null===c){if(!f)return console.warn("Phaser.Loader: No URL given for file type: "+a+" key: "+b),this;c=b+f}var g={type:a,key:b,path:this.path,url:c,syncPoint:this._withSyncPointDepth>0,data:null,loading:!1,loaded:!1,error:!1};if(d)for(var h in d)g[h]=d[h];var i=this.getAssetIndex(a,b);if(e&&i>-1){var j=this._fileList[i];j.loading||j.loaded?(this._fileList.push(g),this._totalFileCount++):this._fileList[i]=g}else-1===i&&(this._fileList.push(g),this._totalFileCount++);return this},replaceInFileList:function(a,b,c,d){return this.addToFileList(a,b,c,d,!0)},pack:function(a,b,c,d){if(void 0===b&&(b=null),void 0===c&&(c=null),void 0===d&&(d=null),!b&&!c)return console.warn("Phaser.Loader.pack - Both url and data are null. One must be set."),this;var e={type:"packfile",key:a,url:b,path:this.path,syncPoint:!0,data:null,loading:!1,loaded:!1,error:!1,callbackContext:d};c&&("string"==typeof c&&(c=JSON.parse(c)),e.data=c||{},e.loaded=!0);for(var f=0;f=e||d&&this._loadedPackCount===this._totalPackCount)break}if(this.updateProgress(),this._processingHead>=this._fileList.length)this.finishedLoading();else if(!this._flightQueue.length){console.warn("Phaser.Loader - aborting: processing queue empty, loading may have stalled");var f=this;setTimeout(function(){f.finishedLoading(!0)},2e3)}},finishedLoading:function(a){this.hasLoaded||(this.hasLoaded=!0,this.isLoading=!1,a||this._fileLoadStarted||(this._fileLoadStarted=!0,this.onLoadStart.dispatch()),this.onLoadComplete.dispatch(),this.game.state.loadComplete(),this.reset())},asyncComplete:function(a,b){void 0===b&&(b=""),a.loaded=!0,a.error=!!b,b&&(a.errorMessage=b,console.warn("Phaser.Loader - "+a.type+"["+a.key+"]: "+b)),this.processLoadQueue()},processPack:function(a){var b=a.data[a.key];if(!b)return void console.warn("Phaser.Loader - "+a.key+": pack has data, but not for pack key");for(var d=0;d=400&&f.status<=599?e.call(g,a,f):d.call(g,a,f)}catch(b){g.hasLoaded?window.console&&console.error(b):g.asyncComplete(a,b.message||"Exception")}},f.onerror=function(){try{return e.call(g,a,f)}catch(b){g.hasLoaded?window.console&&console.error(b):g.asyncComplete(a,b.message||"Exception")}},a.requestObject=f,a.requestUrl=b,f.send()},xhrLoadWithXDR:function(a,b,c,d,e){this._warnedAboutXDomainRequest||this.game.device.ie&&!(this.game.device.ieVersion>=10)||(this._warnedAboutXDomainRequest=!0,console.warn("Phaser.Loader - using XDomainRequest outside of IE 9"));var f=new window.XDomainRequest;f.open("GET",b,!0),f.responseType=c,f.timeout=3e3,e=e||this.fileError;var g=this;f.onerror=function(){try{return e.call(g,a,f)}catch(b){g.asyncComplete(a,b.message||"Exception")}},f.ontimeout=function(){try{return e.call(g,a,f)}catch(b){g.asyncComplete(a,b.message||"Exception")}},f.onprogress=function(){},f.onload=function(){try{return 4==f.readyState&&f.status>=400&&f.status<=599?e.call(g,a,f):d.call(g,a,f)}catch(b){g.asyncComplete(a,b.message||"Exception")}},a.requestObject=f,a.requestUrl=b,setTimeout(function(){f.send()},0)},getVideoURL:function(a){for(var b=0;b=0&&(d=d.substr(0,d.indexOf("?")));var e=d.substr((Math.max(0,d.lastIndexOf("."))||1/0)+1);if(c=e.toLowerCase(),this.game.device.canPlayVideo(c))return a[b]}}return null},getAudioURL:function(a){if(this.game.sound.noAudio)return null;for(var b=0;b=0&&(d=d.substr(0,d.indexOf("?"))); +var e=d.substr((Math.max(0,d.lastIndexOf("."))||1/0)+1);if(c=e.toLowerCase(),this.game.device.canPlayAudio(c))return a[b]}}return null},fileError:function(a,b,c){var d=a.requestUrl||this.transformUrl(a.url,a),e="error loading asset from URL "+d;!c&&b&&(c=b.status),c&&(e=e+" ("+c+")"),this.asyncComplete(a,e)},fileComplete:function(a,b){var d=!0;switch(a.type){case"packfile":var e=JSON.parse(b.responseText);a.data=e||{};break;case"image":this.cache.addImage(a.key,a.url,a.data);break;case"spritesheet":this.cache.addSpriteSheet(a.key,a.url,a.data,a.frameWidth,a.frameHeight,a.frameMax,a.margin,a.spacing);break;case"textureatlas":if(null==a.atlasURL)this.cache.addTextureAtlas(a.key,a.url,a.data,a.atlasData,a.format);else if(d=!1,a.format==c.Loader.TEXTURE_ATLAS_JSON_ARRAY||a.format==c.Loader.TEXTURE_ATLAS_JSON_HASH||a.format==c.Loader.TEXTURE_ATLAS_JSON_PYXEL)this.xhrLoad(a,this.transformUrl(a.atlasURL,a),"text",this.jsonLoadComplete);else{if(a.format!=c.Loader.TEXTURE_ATLAS_XML_STARLING)throw new Error("Phaser.Loader. Invalid Texture Atlas format: "+a.format);this.xhrLoad(a,this.transformUrl(a.atlasURL,a),"text",this.xmlLoadComplete)}break;case"bitmapfont":a.atlasURL?(d=!1,this.xhrLoad(a,this.transformUrl(a.atlasURL,a),"text",function(a,b){var c;try{c=JSON.parse(b.responseText)}catch(d){}c?(a.atlasType="json",this.jsonLoadComplete(a,b)):(a.atlasType="xml",this.xmlLoadComplete(a,b))})):this.cache.addBitmapFont(a.key,a.url,a.data,a.atlasData,a.atlasType,a.xSpacing,a.ySpacing);break;case"video":if(a.asBlob)try{a.data=b.response}catch(f){throw new Error("Phaser.Loader. Unable to parse video file as Blob: "+a.key)}this.cache.addVideo(a.key,a.url,a.data,a.asBlob);break;case"audio":this.game.sound.usingWebAudio?(a.data=b.response,this.cache.addSound(a.key,a.url,a.data,!0,!1),a.autoDecode&&this.game.sound.decode(a.key)):this.cache.addSound(a.key,a.url,a.data,!1,!0);break;case"text":a.data=b.responseText,this.cache.addText(a.key,a.url,a.data);break;case"shader":a.data=b.responseText,this.cache.addShader(a.key,a.url,a.data);break;case"physics":var e=JSON.parse(b.responseText);this.cache.addPhysicsData(a.key,a.url,e,a.format);break;case"script":a.data=document.createElement("script"),a.data.language="javascript",a.data.type="text/javascript",a.data.defer=!1,a.data.text=b.responseText,document.head.appendChild(a.data),a.callback&&(a.data=a.callback.call(a.callbackContext,a.key,b.responseText));break;case"binary":a.callback?a.data=a.callback.call(a.callbackContext,a.key,b.response):a.data=b.response,this.cache.addBinary(a.key,a.data)}d&&this.asyncComplete(a)},jsonLoadComplete:function(a,b){var c=JSON.parse(b.responseText);"tilemap"===a.type?this.cache.addTilemap(a.key,a.url,c,a.format):"bitmapfont"===a.type?this.cache.addBitmapFont(a.key,a.url,a.data,c,a.atlasType,a.xSpacing,a.ySpacing):"json"===a.type?this.cache.addJSON(a.key,a.url,c):this.cache.addTextureAtlas(a.key,a.url,a.data,c,a.format),this.asyncComplete(a)},csvLoadComplete:function(a,b){var c=b.responseText;this.cache.addTilemap(a.key,a.url,c,a.format),this.asyncComplete(a)},xmlLoadComplete:function(a,b){var c=b.responseText,d=this.parseXml(c);if(!d){var e=b.responseType||b.contentType;return console.warn("Phaser.Loader - "+a.key+": invalid XML ("+e+")"),void this.asyncComplete(a,"invalid XML")}"bitmapfont"===a.type?this.cache.addBitmapFont(a.key,a.url,a.data,d,a.atlasType,a.xSpacing,a.ySpacing):"textureatlas"===a.type?this.cache.addTextureAtlas(a.key,a.url,a.data,d,a.format):"xml"===a.type&&this.cache.addXML(a.key,a.url,d),this.asyncComplete(a)},parseXml:function(a){var b;try{if(window.DOMParser){var c=new DOMParser;b=c.parseFromString(a,"text/xml")}else b=new ActiveXObject("Microsoft.XMLDOM"),b.async="false",b.loadXML(a)}catch(d){b=null}return b&&b.documentElement&&!b.getElementsByTagName("parsererror").length?b:null},updateProgress:function(){this.preloadSprite&&(0===this.preloadSprite.direction?this.preloadSprite.rect.width=Math.floor(this.preloadSprite.width/100*this.progress):this.preloadSprite.rect.height=Math.floor(this.preloadSprite.height/100*this.progress),this.preloadSprite.sprite?this.preloadSprite.sprite.updateCrop():this.preloadSprite=null)},totalLoadedFiles:function(){return this._loadedFileCount},totalQueuedFiles:function(){return this._totalFileCount-this._loadedFileCount},totalLoadedPacks:function(){return this._totalPackCount},totalQueuedPacks:function(){return this._totalPackCount-this._loadedPackCount}},Object.defineProperty(c.Loader.prototype,"progressFloat",{get:function(){var a=this._loadedFileCount/this._totalFileCount*100;return c.Math.clamp(a||0,0,100)}}),Object.defineProperty(c.Loader.prototype,"progress",{get:function(){return Math.round(this.progressFloat)}}),c.Loader.prototype.constructor=c.Loader,c.LoaderParser={bitmapFont:function(a,b,c,d){return this.xmlBitmapFont(a,b,c,d)},xmlBitmapFont:function(a,b,c,d){var e={},f=a.getElementsByTagName("info")[0],g=a.getElementsByTagName("common")[0];e.font=f.getAttribute("face"),e.size=parseInt(f.getAttribute("size"),10),e.lineHeight=parseInt(g.getAttribute("lineHeight"),10)+d,e.chars={};for(var h=a.getElementsByTagName("char"),i=0;i=this.durationMS&&(this.usingWebAudio?this.loop?(this.onLoop.dispatch(this),this.isPlaying=!1,""===this.currentMarker?(this.currentTime=0,this.startTime=this.game.time.time,this.isPlaying=!0):(this.onMarkerComplete.dispatch(this.currentMarker,this),this.play(this.currentMarker,0,this.volume,!0,!0))):""!==this.currentMarker&&this.stop():this.loop?(this.onLoop.dispatch(this),""===this.currentMarker&&(this.currentTime=0,this.startTime=this.game.time.time),this.isPlaying=!1,this.play(this.currentMarker,0,this.volume,!0,!0)):this.stop())))):void this.destroy()},loopFull:function(a){this.play(null,0,a,!0)},play:function(a,b,c,d,e){if(void 0!==a&&a!==!1&&null!==a||(a=""),void 0===e&&(e=!0),this.isPlaying&&!this.allowMultiple&&!e&&!this.override)return this;if(this._sound&&this.isPlaying&&!this.allowMultiple&&(this.override||e))if(this.usingWebAudio){if(void 0===this._sound.stop)this._sound.noteOff(0);else try{this._sound.stop(0)}catch(f){}this.externalNode?this._sound.disconnect(this.externalNode):this.gainNode&&this._sound.disconnect(this.gainNode)}else this.usingAudioTag&&(this._sound.pause(),this._sound.currentTime=0);if(""===a&&Object.keys(this.markers).length>0)return this;if(""!==a){if(this.currentMarker=a,!this.markers[a])return this;this.position=this.markers[a].start,this.volume=this.markers[a].volume,this.loop=this.markers[a].loop,this.duration=this.markers[a].duration,this.durationMS=this.markers[a].durationMS,"undefined"!=typeof c&&(this.volume=c),"undefined"!=typeof d&&(this.loop=d),this._tempMarker=a,this._tempPosition=this.position,this._tempVolume=this.volume,this._tempLoop=this.loop}else b=b||0,void 0===c&&(c=this._volume),void 0===d&&(d=this.loop),this.position=Math.max(0,b),this.volume=c,this.loop=d,this.duration=0,this.durationMS=0,this._tempMarker=a,this._tempPosition=b,this._tempVolume=c,this._tempLoop=d;return this.usingWebAudio?this.game.cache.isSoundDecoded(this.key)?(this._sound=this.context.createBufferSource(),this.externalNode?this._sound.connect(this.externalNode):this._sound.connect(this.gainNode),this._buffer=this.game.cache.getSoundData(this.key),this._sound.buffer=this._buffer,this.loop&&""===a&&(this._sound.loop=!0),this.loop||""!==a||(this._sound.onended=this.onEndedHandler.bind(this)),this.totalDuration=this._sound.buffer.duration,0===this.duration&&(this.duration=this.totalDuration,this.durationMS=Math.ceil(1e3*this.totalDuration)),void 0===this._sound.start?this._sound.noteGrainOn(0,this.position,this.duration):this.loop&&""===a?this._sound.start(0,0):this._sound.start(0,this.position,this.duration),this.isPlaying=!0,this.startTime=this.game.time.time,this.currentTime=0,this.stopTime=this.startTime+this.durationMS,this.onPlay.dispatch(this)):(this.pendingPlayback=!0,this.game.cache.getSound(this.key)&&this.game.cache.getSound(this.key).isDecoding===!1&&this.game.sound.decode(this.key,this)):this.game.cache.getSound(this.key)&&this.game.cache.getSound(this.key).locked?(this.game.cache.reloadSound(this.key),this.pendingPlayback=!0):this._sound&&(this.game.device.cocoonJS||4===this._sound.readyState)?(this._sound.play(),this.totalDuration=this._sound.duration,0===this.duration&&(this.duration=this.totalDuration,this.durationMS=1e3*this.totalDuration),this._sound.currentTime=this.position,this._sound.muted=this._muted,this._muted||this.game.sound.mute?this._sound.volume=0:this._sound.volume=this._volume,this.isPlaying=!0,this.startTime=this.game.time.time,this.currentTime=0,this.stopTime=this.startTime+this.durationMS,this.onPlay.dispatch(this)):this.pendingPlayback=!0,this},restart:function(a,b,c,d){a=a||"",b=b||0,c=c||1,void 0===d&&(d=!1),this.play(a,b,c,d,!0)},pause:function(){this.isPlaying&&this._sound&&(this.paused=!0,this.pausedPosition=this.currentTime,this.pausedTime=this.game.time.time,this._tempPause=this._sound.currentTime,this.onPause.dispatch(this),this.stop())},resume:function(){if(this.paused&&this._sound){if(this.usingWebAudio){var a=Math.max(0,this.position+this.pausedPosition/1e3);this._sound=this.context.createBufferSource(),this._sound.buffer=this._buffer,this.externalNode?this._sound.connect(this.externalNode):this._sound.connect(this.gainNode),this.loop&&(this._sound.loop=!0),this.loop||""!==this.currentMarker||(this._sound.onended=this.onEndedHandler.bind(this));var b=this.duration-this.pausedPosition/1e3;void 0===this._sound.start?this._sound.noteGrainOn(0,a,b):this.loop&&this.game.device.chrome?42===this.game.device.chromeVersion?this._sound.start(0):this._sound.start(0,a):this._sound.start(0,a,b)}else this._sound.currentTime=this._tempPause,this._sound.play();this.isPlaying=!0,this.paused=!1,this.startTime+=this.game.time.time-this.pausedTime,this.onResume.dispatch(this)}},stop:function(){if(this.isPlaying&&this._sound)if(this.usingWebAudio){if(void 0===this._sound.stop)this._sound.noteOff(0);else try{this._sound.stop(0)}catch(a){}this.externalNode?this._sound.disconnect(this.externalNode):this.gainNode&&this._sound.disconnect(this.gainNode)}else this.usingAudioTag&&(this._sound.pause(),this._sound.currentTime=0);if(this.pendingPlayback=!1,this.isPlaying=!1,!this.paused){var b=this.currentMarker;""!==this.currentMarker&&this.onMarkerComplete.dispatch(this.currentMarker,this),this.currentMarker="",null!==this.fadeTween&&this.fadeTween.stop(),this.onStop.dispatch(this,b)}},fadeIn:function(a,b,c){void 0===b&&(b=!1),void 0===c&&(c=this.currentMarker),this.paused||(this.play(c,0,0,b),this.fadeTo(a,1))},fadeOut:function(a){this.fadeTo(a,0)},fadeTo:function(a,b){if(this.isPlaying&&!this.paused&&b!==this.volume){if(void 0===a&&(a=1e3),void 0===b)return void console.warn("Phaser.Sound.fadeTo: No Volume Specified.");this.fadeTween=this.game.add.tween(this).to({volume:b},a,c.Easing.Linear.None,!0),this.fadeTween.onComplete.add(this.fadeComplete,this)}},fadeComplete:function(){this.onFadeComplete.dispatch(this,this.volume),0===this.volume&&this.stop()},updateGlobalVolume:function(a){this.usingAudioTag&&this._sound&&(this._sound.volume=a*this._volume)},destroy:function(a){void 0===a&&(a=!0),this.stop(),a?this.game.sound.remove(this):(this.markers={},this.context=null,this._buffer=null,this.externalNode=null,this.onDecoded.dispose(),this.onPlay.dispose(),this.onPause.dispose(),this.onResume.dispose(),this.onLoop.dispose(),this.onStop.dispose(),this.onMute.dispose(),this.onMarkerComplete.dispose())}},c.Sound.prototype.constructor=c.Sound,Object.defineProperty(c.Sound.prototype,"isDecoding",{get:function(){return this.game.cache.getSound(this.key).isDecoding}}),Object.defineProperty(c.Sound.prototype,"isDecoded",{get:function(){return this.game.cache.isSoundDecoded(this.key)}}),Object.defineProperty(c.Sound.prototype,"mute",{get:function(){return this._muted||this.game.sound.mute},set:function(a){a=a||!1,a!==this._muted&&(a?(this._muted=!0,this._muteVolume=this._tempVolume,this.usingWebAudio?this.gainNode.gain.value=0:this.usingAudioTag&&this._sound&&(this._sound.volume=0)):(this._muted=!1,this.usingWebAudio?this.gainNode.gain.value=this._muteVolume:this.usingAudioTag&&this._sound&&(this._sound.volume=this._muteVolume)),this.onMute.dispatch(this))}}),Object.defineProperty(c.Sound.prototype,"volume",{get:function(){return this._volume},set:function(a){return this.game.device.firefox&&this.usingAudioTag&&(a=this.game.math.clamp(a,0,1)),this._muted?void(this._muteVolume=a):(this._tempVolume=a,this._volume=a,void(this.usingWebAudio?this.gainNode.gain.value=a:this.usingAudioTag&&this._sound&&(this._sound.volume=a)))}}),c.SoundManager=function(a){this.game=a,this.onSoundDecode=new c.Signal,this.onVolumeChange=new c.Signal,this.onMute=new c.Signal,this.onUnMute=new c.Signal,this.context=null,this.usingWebAudio=!1,this.usingAudioTag=!1,this.noAudio=!1,this.connectToMaster=!0,this.touchLocked=!1,this.channels=32,this.muteOnPause=!0,this._codeMuted=!1,this._muted=!1,this._unlockSource=null,this._volume=1,this._sounds=[],this._watchList=new c.ArraySet,this._watching=!1,this._watchCallback=null,this._watchContext=null},c.SoundManager.prototype={boot:function(){if(this.game.device.iOS&&this.game.device.webAudio===!1&&(this.channels=1),window.PhaserGlobal){if(window.PhaserGlobal.disableAudio===!0)return this.noAudio=!0,void(this.touchLocked=!1);if(window.PhaserGlobal.disableWebAudio===!0)return this.usingAudioTag=!0,void(this.touchLocked=!1)}if(window.PhaserGlobal&&window.PhaserGlobal.audioContext)this.context=window.PhaserGlobal.audioContext;else if(window.AudioContext)try{this.context=new window.AudioContext}catch(a){this.context=null,this.usingWebAudio=!1,this.touchLocked=!1}else if(window.webkitAudioContext)try{this.context=new window.webkitAudioContext}catch(a){this.context=null,this.usingWebAudio=!1,this.touchLocked=!1}if(null===this.context){if(void 0===window.Audio)return void(this.noAudio=!0);this.usingAudioTag=!0}else this.usingWebAudio=!0,void 0===this.context.createGain?this.masterGain=this.context.createGainNode():this.masterGain=this.context.createGain(),this.masterGain.gain.value=1,this.masterGain.connect(this.context.destination);this.noAudio||(!this.game.device.cocoonJS&&this.game.device.iOS||window.PhaserGlobal&&window.PhaserGlobal.fakeiOSTouchLock)&&this.setTouchLock()},setTouchLock:function(){this.noAudio||window.PhaserGlobal&&window.PhaserGlobal.disableAudio===!0||(this.game.device.iOSVersion>8?this.game.input.touch.addTouchLockCallback(this.unlock,this,!0):this.game.input.touch.addTouchLockCallback(this.unlock,this),this.touchLocked=!0)},unlock:function(){if(this.noAudio||!this.touchLocked||null!==this._unlockSource)return!0;if(this.usingAudioTag)this.touchLocked=!1,this._unlockSource=null;else if(this.usingWebAudio){var a=this.context.createBuffer(1,1,22050);this._unlockSource=this.context.createBufferSource(),this._unlockSource.buffer=a,this._unlockSource.connect(this.context.destination),void 0===this._unlockSource.start?this._unlockSource.noteOn(0):this._unlockSource.start(0)}return!0},stopAll:function(){if(!this.noAudio)for(var a=0;aa?a=0:a>1&&(a=1),this._volume!==a){if(this._volume=a,this.usingWebAudio)this.masterGain.gain.value=a;else for(var b=0;b=400?0:100,this.dom.getOffset(this.game.canvas,this.offset);var b=this._parentBounds.width,d=this._parentBounds.height,e=this.getParentBounds(this._parentBounds),f=e.width!==b||e.height!==d,g=this.updateOrientationState();(f||g)&&(this.onResize&&this.onResize.call(this.onResizeContext,this,e),this.updateLayout(),this.signalSizeChange());var h=2*this._updateThrottle;this._updateThrottle=b||0>=c)return a;var e=b,f=a.height*b/a.width,g=a.width*c/a.height,h=c,i=g>b;return i=i?d:!d,i?(a.width=Math.floor(e),a.height=Math.floor(f)):(a.width=Math.floor(g),a.height=Math.floor(h)),a},destroy:function(){this.game.onResume.remove(this._gameResumed,this),window.removeEventListener("orientationchange",this._orientationChange,!1),window.removeEventListener("resize",this._windowResize,!1),this.compatibility.supportsFullScreen&&(document.removeEventListener("webkitfullscreenchange",this._fullScreenChange,!1),document.removeEventListener("mozfullscreenchange",this._fullScreenChange,!1),document.removeEventListener("MSFullscreenChange",this._fullScreenChange,!1),document.removeEventListener("fullscreenchange",this._fullScreenChange,!1),document.removeEventListener("webkitfullscreenerror",this._fullScreenError,!1),document.removeEventListener("mozfullscreenerror",this._fullScreenError,!1),document.removeEventListener("MSFullscreenError",this._fullScreenError,!1),document.removeEventListener("fullscreenerror",this._fullScreenError,!1))}},c.ScaleManager.prototype.constructor=c.ScaleManager,Object.defineProperty(c.ScaleManager.prototype,"boundingParent",{get:function(){if(this.parentIsWindow||this.isFullScreen&&!this._createdFullScreenTarget)return null;var a=this.game.canvas&&this.game.canvas.parentNode;return a||null}}),Object.defineProperty(c.ScaleManager.prototype,"scaleMode",{get:function(){return this._scaleMode},set:function(a){return a!==this._scaleMode&&(this.isFullScreen||(this.updateDimensions(this._gameSize.width,this._gameSize.height,!0),this.queueUpdate(!0)),this._scaleMode=a),this._scaleMode}}),Object.defineProperty(c.ScaleManager.prototype,"fullScreenScaleMode",{get:function(){return this._fullScreenScaleMode},set:function(a){return a!==this._fullScreenScaleMode&&(this.isFullScreen?(this.prepScreenMode(!1),this._fullScreenScaleMode=a,this.prepScreenMode(!0),this.queueUpdate(!0)):this._fullScreenScaleMode=a),this._fullScreenScaleMode}}),Object.defineProperty(c.ScaleManager.prototype,"currentScaleMode",{get:function(){return this.isFullScreen?this._fullScreenScaleMode:this._scaleMode}}),Object.defineProperty(c.ScaleManager.prototype,"pageAlignHorizontally",{get:function(){return this._pageAlignHorizontally},set:function(a){a!==this._pageAlignHorizontally&&(this._pageAlignHorizontally=a,this.queueUpdate(!0))}}),Object.defineProperty(c.ScaleManager.prototype,"pageAlignVertically",{get:function(){return this._pageAlignVertically},set:function(a){a!==this._pageAlignVertically&&(this._pageAlignVertically=a,this.queueUpdate(!0))}}),Object.defineProperty(c.ScaleManager.prototype,"isFullScreen",{get:function(){return!!(document.fullscreenElement||document.webkitFullscreenElement||document.mozFullScreenElement||document.msFullscreenElement)}}),Object.defineProperty(c.ScaleManager.prototype,"isPortrait",{get:function(){return"portrait"===this.classifyOrientation(this.screenOrientation)}}),Object.defineProperty(c.ScaleManager.prototype,"isLandscape",{get:function(){return"landscape"===this.classifyOrientation(this.screenOrientation)}}),Object.defineProperty(c.ScaleManager.prototype,"isGamePortrait",{get:function(){return this.height>this.width}}),Object.defineProperty(c.ScaleManager.prototype,"isGameLandscape",{get:function(){return this.width>this.height}}),c.Utils.Debug=function(a){this.game=a,this.sprite=null,this.bmd=null,this.canvas=null,this.context=null,this.font="14px Courier",this.columnWidth=100,this.lineHeight=16,this.renderShadow=!0,this.currentX=0,this.currentY=0,this.currentAlpha=1,this.dirty=!1},c.Utils.Debug.prototype={boot:function(){this.game.renderType===c.CANVAS?this.context=this.game.context:(this.bmd=new c.BitmapData(this.game,"__DEBUG",this.game.width,this.game.height,!0),this.sprite=this.game.make.image(0,0,this.bmd),this.game.stage.addChild(this.sprite),this.game.scale.onSizeChange.add(this.resize,this),this.canvas=PIXI.CanvasPool.create(this,this.game.width,this.game.height),this.context=this.canvas.getContext("2d"))},resize:function(a,b,c){this.bmd.resize(b,c),this.canvas.width=b,this.canvas.height=c},preUpdate:function(){this.dirty&&this.sprite&&(this.bmd.clear(),this.bmd.draw(this.canvas,0,0),this.context.clearRect(0,0,this.game.width,this.game.height),this.dirty=!1)},reset:function(){this.context&&this.context.clearRect(0,0,this.game.width,this.game.height),this.sprite&&this.bmd.clear()},start:function(a,b,c,d){"number"!=typeof a&&(a=0),"number"!=typeof b&&(b=0),c=c||"rgb(255,255,255)",void 0===d&&(d=0),this.currentX=a,this.currentY=b,this.currentColor=c,this.columnWidth=d,this.dirty=!0,this.context.save(),this.context.setTransform(1,0,0,1,0,0),this.context.strokeStyle=c,this.context.fillStyle=c,this.context.font=this.font,this.context.globalAlpha=this.currentAlpha},stop:function(){this.context.restore()},line:function(){for(var a=this.currentX,b=0;b0)for(var b=0;b=0&&c.right>=0&&c.top<=this.layoutBounds.width&&c.left<=this.layoutBounds.height},getScreenOrientation:function(a){var b=window.screen,c=b.orientation||b.mozOrientation||b.msOrientation;if(c&&"string"==typeof c.type)return c.type;if("string"==typeof c)return c;var d="portrait-primary",e="landscape-primary";if("screen"===a)return b.height>b.width?d:e;if("viewport"===a)return this.visualBounds.height>this.visualBounds.width?d:e;if("window.orientation"===a&&"number"==typeof window.orientation)return 0===window.orientation||180===window.orientation?d:e;if(window.matchMedia){if(window.matchMedia("(orientation: portrait)").matches)return d;if(window.matchMedia("(orientation: landscape)").matches)return e}return this.visualBounds.height>this.visualBounds.width?d:e},visualBounds:new c.Rectangle,layoutBounds:new c.Rectangle,documentBounds:new c.Rectangle},c.Device.whenReady(function(a){var b=window&&"pageXOffset"in window?function(){return window.pageXOffset}:function(){return document.documentElement.scrollLeft},d=window&&"pageYOffset"in window?function(){return window.pageYOffset}:function(){return document.documentElement.scrollTop};Object.defineProperty(c.DOM,"scrollX",{get:b}),Object.defineProperty(c.DOM,"scrollY",{get:d}),Object.defineProperty(c.DOM.visualBounds,"x",{get:b}),Object.defineProperty(c.DOM.visualBounds,"y",{get:d}),Object.defineProperty(c.DOM.layoutBounds,"x",{value:0}),Object.defineProperty(c.DOM.layoutBounds,"y",{value:0});var e=a.desktop&&document.documentElement.clientWidth<=window.innerWidth&&document.documentElement.clientHeight<=window.innerHeight;if(e){var f=function(){return Math.max(window.innerWidth,document.documentElement.clientWidth)},g=function(){return Math.max(window.innerHeight,document.documentElement.clientHeight)};Object.defineProperty(c.DOM.visualBounds,"width",{get:f}),Object.defineProperty(c.DOM.visualBounds,"height",{get:g}),Object.defineProperty(c.DOM.layoutBounds,"width",{get:f}),Object.defineProperty(c.DOM.layoutBounds,"height",{get:g})}else Object.defineProperty(c.DOM.visualBounds,"width",{get:function(){return window.innerWidth}}),Object.defineProperty(c.DOM.visualBounds,"height",{get:function(){return window.innerHeight}}),Object.defineProperty(c.DOM.layoutBounds,"width",{get:function(){var a=document.documentElement.clientWidth,b=window.innerWidth;return b>a?b:a}}),Object.defineProperty(c.DOM.layoutBounds,"height",{get:function(){var a=document.documentElement.clientHeight,b=window.innerHeight;return b>a?b:a}});Object.defineProperty(c.DOM.documentBounds,"x",{value:0}),Object.defineProperty(c.DOM.documentBounds,"y",{value:0}),Object.defineProperty(c.DOM.documentBounds,"width",{get:function(){var a=document.documentElement;return Math.max(a.clientWidth,a.offsetWidth,a.scrollWidth)}}),Object.defineProperty(c.DOM.documentBounds,"height",{get:function(){var a=document.documentElement;return Math.max(a.clientHeight,a.offsetHeight,a.scrollHeight)}})},null,!0),c.ArraySet=function(a){this.position=0,this.list=a||[]},c.ArraySet.prototype={add:function(a){return this.exists(a)||this.list.push(a),a},getIndex:function(a){return this.list.indexOf(a)},getByKey:function(a,b){for(var c=this.list.length;c--;)if(this.list[c][a]===b)return this.list[c];return null},exists:function(a){return this.list.indexOf(a)>-1},reset:function(){this.list.length=0},remove:function(a){var b=this.list.indexOf(a);return b>-1?(this.list.splice(b,1),a):void 0},setAll:function(a,b){for(var c=this.list.length;c--;)this.list[c]&&(this.list[c][a]=b)},callAll:function(a){for(var b=Array.prototype.slice.call(arguments,1),c=this.list.length;c--;)this.list[c]&&this.list[c][a]&&this.list[c][a].apply(this.list[c],b)},removeAll:function(a){void 0===a&&(a=!1);for(var b=this.list.length;b--;)if(this.list[b]){var c=this.remove(this.list[b]);a&&c.destroy()}this.position=0,this.list=[]}},Object.defineProperty(c.ArraySet.prototype,"total",{get:function(){return this.list.length}}),Object.defineProperty(c.ArraySet.prototype,"first",{get:function(){return this.position=0,this.list.length>0?this.list[0]:null}}),Object.defineProperty(c.ArraySet.prototype,"next",{get:function(){return this.position0;b--){var c=Math.floor(Math.random()*(b+1)),d=a[b];a[b]=a[c],a[c]=d}return a},transposeMatrix:function(a){for(var b=a.length,c=a[0].length,d=new Array(c),e=0;c>e;e++){d[e]=new Array(b);for(var f=b-1;f>-1;f--)d[e][f]=a[f][e]}return d},rotateMatrix:function(a,b){if("string"!=typeof b&&(b=(b%360+360)%360),90===b||-270===b||"rotateLeft"===b)a=c.ArrayUtils.transposeMatrix(a),a=a.reverse();else if(-90===b||270===b||"rotateRight"===b)a=a.reverse(),a=c.ArrayUtils.transposeMatrix(a);else if(180===Math.abs(b)||"rotate180"===b){for(var d=0;d=e-a?e:d},rotateRight:function(a){var b=a.pop();return a.unshift(b),b},rotateLeft:function(a){var b=a.shift();return a.push(b),b},rotate:function(a){var b=a.shift();return a.push(b),b},numberArray:function(a,b){for(var c=[],d=a;b>=d;d++)c.push(d);return c},numberArrayStep:function(a,b,d){void 0!==a&&null!==a||(a=0),void 0!==b&&null!==b||(b=a,a=0),void 0===d&&(d=1);for(var e=[],f=Math.max(c.Math.roundAwayFromZero((b-a)/(d||1)),0),g=0;f>g;g++)e.push(a),a+=d;return e}},c.LinkedList=function(){this.next=null,this.prev=null,this.first=null,this.last=null,this.total=0},c.LinkedList.prototype={add:function(a){return 0===this.total&&null===this.first&&null===this.last?(this.first=a,this.last=a,this.next=a,a.prev=this,this.total++,a):(this.last.next=a,a.prev=this.last,this.last=a,this.total++,a)},reset:function(){this.first=null,this.last=null,this.next=null,this.prev=null,this.total=0},remove:function(a){return 1===this.total?(this.reset(),void(a.next=a.prev=null)):(a===this.first?this.first=this.first.next:a===this.last&&(this.last=this.last.prev),a.prev&&(a.prev.next=a.next),a.next&&(a.next.prev=a.prev),a.next=a.prev=null,null===this.first&&(this.last=null),void this.total--)},callAll:function(a){if(this.first&&this.last){var b=this.first;do b&&b[a]&&b[a].call(b),b=b.next;while(b!=this.last.next)}}},c.LinkedList.prototype.constructor=c.LinkedList,c.Create=function(a){this.game=a,this.bmd=null,this.canvas=null,this.ctx=null,this.palettes=[{0:"#000",1:"#9D9D9D",2:"#FFF",3:"#BE2633",4:"#E06F8B",5:"#493C2B",6:"#A46422",7:"#EB8931",8:"#F7E26B",9:"#2F484E",A:"#44891A",B:"#A3CE27",C:"#1B2632",D:"#005784",E:"#31A2F2",F:"#B2DCEF"},{0:"#000",1:"#191028",2:"#46af45",3:"#a1d685",4:"#453e78",5:"#7664fe",6:"#833129",7:"#9ec2e8",8:"#dc534b",9:"#e18d79",A:"#d6b97b",B:"#e9d8a1",C:"#216c4b",D:"#d365c8",E:"#afaab9",F:"#f5f4eb"},{0:"#000",1:"#2234d1",2:"#0c7e45",3:"#44aacc",4:"#8a3622",5:"#5c2e78",6:"#aa5c3d",7:"#b5b5b5",8:"#5e606e",9:"#4c81fb",A:"#6cd947",B:"#7be2f9",C:"#eb8a60",D:"#e23d69",E:"#ffd93f",F:"#fff"},{0:"#000",1:"#fff",2:"#8b4131",3:"#7bbdc5",4:"#8b41ac",5:"#6aac41",6:"#3931a4",7:"#d5de73",8:"#945a20",9:"#5a4100",A:"#bd736a",B:"#525252",C:"#838383",D:"#acee8b",E:"#7b73de",F:"#acacac"},{0:"#000",1:"#191028",2:"#46af45",3:"#a1d685",4:"#453e78",5:"#7664fe",6:"#833129",7:"#9ec2e8",8:"#dc534b",9:"#e18d79",A:"#d6b97b",B:"#e9d8a1",C:"#216c4b",D:"#d365c8",E:"#afaab9",F:"#fff"}]},c.Create.PALETTE_ARNE=0,c.Create.PALETTE_JMP=1,c.Create.PALETTE_CGA=2,c.Create.PALETTE_C64=3,c.Create.PALETTE_JAPANESE_MACHINE=4,c.Create.prototype={texture:function(a,b,c,d,e){void 0===c&&(c=8),void 0===d&&(d=c),void 0===e&&(e=0);var f=b[0].length*c,g=b.length*d;null===this.bmd&&(this.bmd=this.game.make.bitmapData(),this.canvas=this.bmd.canvas,this.ctx=this.bmd.context),this.bmd.resize(f,g),this.bmd.clear();for(var h=0;hg;g+=e)this.ctx.fillRect(0,g,b,1);for(var h=0;b>h;h+=d)this.ctx.fillRect(h,0,1,c);return this.bmd.generateTexture(a)}},c.Create.prototype.constructor=c.Create,c.FlexGrid=function(a,b,d){this.game=a.game,this.manager=a,this.width=b,this.height=d,this.boundsCustom=new c.Rectangle(0,0,b,d),this.boundsFluid=new c.Rectangle(0,0,b,d),this.boundsFull=new c.Rectangle(0,0,b,d),this.boundsNone=new c.Rectangle(0,0,b,d),this.positionCustom=new c.Point(0,0),this.positionFluid=new c.Point(0,0),this.positionFull=new c.Point(0,0),this.positionNone=new c.Point(0,0),this.scaleCustom=new c.Point(1,1),this.scaleFluid=new c.Point(1,1),this.scaleFluidInversed=new c.Point(1,1),this.scaleFull=new c.Point(1,1),this.scaleNone=new c.Point(1,1),this.customWidth=0,this.customHeight=0,this.customOffsetX=0,this.customOffsetY=0,this.ratioH=b/d,this.ratioV=d/b,this.multiplier=0,this.layers=[]},c.FlexGrid.prototype={setSize:function(a,b){this.width=a,this.height=b,this.ratioH=a/b,this.ratioV=b/a,this.scaleNone=new c.Point(1,1),this.boundsNone.width=this.width,this.boundsNone.height=this.height,this.refresh()},createCustomLayer:function(a,b,d,e){void 0===e&&(e=!0),this.customWidth=a,this.customHeight=b,this.boundsCustom.width=a,this.boundsCustom.height=b;var f=new c.FlexLayer(this,this.positionCustom,this.boundsCustom,this.scaleCustom);return e&&this.game.world.add(f),this.layers.push(f),"undefined"!=typeof d&&null!==typeof d&&f.addMultiple(d),f},createFluidLayer:function(a,b){void 0===b&&(b=!0);var d=new c.FlexLayer(this,this.positionFluid,this.boundsFluid,this.scaleFluid);return b&&this.game.world.add(d),this.layers.push(d),"undefined"!=typeof a&&null!==typeof a&&d.addMultiple(a),d},createFullLayer:function(a){var b=new c.FlexLayer(this,this.positionFull,this.boundsFull,this.scaleFluid);return this.game.world.add(b),this.layers.push(b),"undefined"!=typeof a&&b.addMultiple(a),b},createFixedLayer:function(a){var b=new c.FlexLayer(this,this.positionNone,this.boundsNone,this.scaleNone);return this.game.world.add(b),this.layers.push(b),"undefined"!=typeof a&&b.addMultiple(a), +b},reset:function(){for(var a=this.layers.length;a--;)this.layers[a].persist||(this.layers[a].position=null,this.layers[a].scale=null,this.layers.slice(a,1))},onResize:function(a,b){this.ratioH=a/b,this.ratioV=b/a,this.refresh(a,b)},refresh:function(){this.multiplier=Math.min(this.manager.height/this.height,this.manager.width/this.width),this.boundsFluid.width=Math.round(this.width*this.multiplier),this.boundsFluid.height=Math.round(this.height*this.multiplier),this.scaleFluid.set(this.boundsFluid.width/this.width,this.boundsFluid.height/this.height),this.scaleFluidInversed.set(this.width/this.boundsFluid.width,this.height/this.boundsFluid.height),this.scaleFull.set(this.boundsFull.width/this.width,this.boundsFull.height/this.height),this.boundsFull.width=Math.round(this.manager.width*this.scaleFluidInversed.x),this.boundsFull.height=Math.round(this.manager.height*this.scaleFluidInversed.y),this.boundsFluid.centerOn(this.manager.bounds.centerX,this.manager.bounds.centerY),this.boundsNone.centerOn(this.manager.bounds.centerX,this.manager.bounds.centerY),this.positionFluid.set(this.boundsFluid.x,this.boundsFluid.y),this.positionNone.set(this.boundsNone.x,this.boundsNone.y)},fitSprite:function(a){this.manager.scaleSprite(a),a.x=this.manager.bounds.centerX,a.y=this.manager.bounds.centerY},debug:function(){this.game.debug.text(this.boundsFluid.width+" x "+this.boundsFluid.height,this.boundsFluid.x+4,this.boundsFluid.y+16),this.game.debug.geom(this.boundsFluid,"rgba(255,0,0,0.9",!1)}},c.FlexGrid.prototype.constructor=c.FlexGrid,c.FlexLayer=function(a,b,d,e){c.Group.call(this,a.game,null,"__flexLayer"+a.game.rnd.uuid(),!1),this.manager=a.manager,this.grid=a,this.persist=!1,this.position=b,this.bounds=d,this.scale=e,this.topLeft=d.topLeft,this.topMiddle=new c.Point(d.halfWidth,0),this.topRight=d.topRight,this.bottomLeft=d.bottomLeft,this.bottomMiddle=new c.Point(d.halfWidth,d.bottom),this.bottomRight=d.bottomRight},c.FlexLayer.prototype=Object.create(c.Group.prototype),c.FlexLayer.prototype.constructor=c.FlexLayer,c.FlexLayer.prototype.resize=function(){},c.FlexLayer.prototype.debug=function(){this.game.debug.text(this.bounds.width+" x "+this.bounds.height,this.bounds.x+4,this.bounds.y+16),this.game.debug.geom(this.bounds,"rgba(0,0,255,0.9",!1),this.game.debug.geom(this.topLeft,"rgba(255,255,255,0.9"),this.game.debug.geom(this.topMiddle,"rgba(255,255,255,0.9"),this.game.debug.geom(this.topRight,"rgba(255,255,255,0.9")},c.Color={packPixel:function(a,b,d,e){return c.Device.LITTLE_ENDIAN?(e<<24|d<<16|b<<8|a)>>>0:(a<<24|b<<16|d<<8|e)>>>0},unpackPixel:function(a,b,d,e){return void 0!==b&&null!==b||(b=c.Color.createColor()),void 0!==d&&null!==d||(d=!1),void 0!==e&&null!==e||(e=!1),c.Device.LITTLE_ENDIAN?(b.a=(4278190080&a)>>>24,b.b=(16711680&a)>>>16,b.g=(65280&a)>>>8,b.r=255&a):(b.r=(4278190080&a)>>>24,b.g=(16711680&a)>>>16,b.b=(65280&a)>>>8,b.a=255&a),b.color=a,b.rgba="rgba("+b.r+","+b.g+","+b.b+","+b.a/255+")",d&&c.Color.RGBtoHSL(b.r,b.g,b.b,b),e&&c.Color.RGBtoHSV(b.r,b.g,b.b,b),b},fromRGBA:function(a,b){return b||(b=c.Color.createColor()),b.r=(4278190080&a)>>>24,b.g=(16711680&a)>>>16,b.b=(65280&a)>>>8,b.a=255&a,b.rgba="rgba("+b.r+","+b.g+","+b.b+","+b.a+")",b},toRGBA:function(a,b,c,d){return a<<24|b<<16|c<<8|d},toABGR:function(a,b,c,d){return(d<<24|c<<16|b<<8|a)>>>0},RGBtoHSL:function(a,b,d,e){e||(e=c.Color.createColor(a,b,d,1)),a/=255,b/=255,d/=255;var f=Math.min(a,b,d),g=Math.max(a,b,d);if(e.h=0,e.s=0,e.l=(g+f)/2,g!==f){var h=g-f;e.s=e.l>.5?h/(2-g-f):h/(g+f),g===a?e.h=(b-d)/h+(d>b?6:0):g===b?e.h=(d-a)/h+2:g===d&&(e.h=(a-b)/h+4),e.h/=6}return e},HSLtoRGB:function(a,b,d,e){if(e?(e.r=d,e.g=d,e.b=d):e=c.Color.createColor(d,d,d),0!==b){var f=.5>d?d*(1+b):d+b-d*b,g=2*d-f;e.r=c.Color.hueToColor(g,f,a+1/3),e.g=c.Color.hueToColor(g,f,a),e.b=c.Color.hueToColor(g,f,a-1/3)}return e.r=Math.floor(255*e.r|0),e.g=Math.floor(255*e.g|0),e.b=Math.floor(255*e.b|0),c.Color.updateColor(e),e},RGBtoHSV:function(a,b,d,e){e||(e=c.Color.createColor(a,b,d,255)),a/=255,b/=255,d/=255;var f=Math.min(a,b,d),g=Math.max(a,b,d),h=g-f;return e.h=0,e.s=0===g?0:h/g,e.v=g,g!==f&&(g===a?e.h=(b-d)/h+(d>b?6:0):g===b?e.h=(d-a)/h+2:g===d&&(e.h=(a-b)/h+4),e.h/=6),e},HSVtoRGB:function(a,b,d,e){void 0===e&&(e=c.Color.createColor(0,0,0,1,a,b,0,d));var f,g,h,i=Math.floor(6*a),j=6*a-i,k=d*(1-b),l=d*(1-j*b),m=d*(1-(1-j)*b);switch(i%6){case 0:f=d,g=m,h=k;break;case 1:f=l,g=d,h=k;break;case 2:f=k,g=d,h=m;break;case 3:f=k,g=l,h=d;break;case 4:f=m,g=k,h=d;break;case 5:f=d,g=k,h=l}return e.r=Math.floor(255*f),e.g=Math.floor(255*g),e.b=Math.floor(255*h),c.Color.updateColor(e),e},hueToColor:function(a,b,c){return 0>c&&(c+=1),c>1&&(c-=1),1/6>c?a+6*(b-a)*c:.5>c?b:2/3>c?a+(b-a)*(2/3-c)*6:a},createColor:function(a,b,d,e,f,g,h,i){var j={r:a||0,g:b||0,b:d||0,a:e||1,h:f||0,s:g||0,l:h||0,v:i||0,color:0,color32:0,rgba:""};return c.Color.updateColor(j)},updateColor:function(a){return a.rgba="rgba("+a.r.toString()+","+a.g.toString()+","+a.b.toString()+","+a.a.toString()+")",a.color=c.Color.getColor(a.r,a.g,a.b),a.color32=c.Color.getColor32(255*a.a,a.r,a.g,a.b),a},getColor32:function(a,b,c,d){return a<<24|b<<16|c<<8|d},getColor:function(a,b,c){return a<<16|b<<8|c},RGBtoString:function(a,b,d,e,f){return void 0===e&&(e=255),void 0===f&&(f="#"),"#"===f?"#"+((1<<24)+(a<<16)+(b<<8)+d).toString(16).slice(1):"0x"+c.Color.componentToHex(e)+c.Color.componentToHex(a)+c.Color.componentToHex(b)+c.Color.componentToHex(d)},hexToRGB:function(a){var b=c.Color.hexToColor(a);return b?c.Color.getColor32(b.a,b.r,b.g,b.b):void 0},hexToColor:function(a,b){a=a.replace(/^(?:#|0x)?([a-f\d])([a-f\d])([a-f\d])$/i,function(a,b,c,d){return b+b+c+c+d+d});var d=/^(?:#|0x)?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(a);if(d){var e=parseInt(d[1],16),f=parseInt(d[2],16),g=parseInt(d[3],16);b?(b.r=e,b.g=f,b.b=g):b=c.Color.createColor(e,f,g)}return b},webToColor:function(a,b){b||(b=c.Color.createColor());var d=/^rgba?\(\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*(?:,\s*(\d+(?:\.\d+)?))?\s*\)$/.exec(a);return d&&(b.r=parseInt(d[1],10),b.g=parseInt(d[2],10),b.b=parseInt(d[3],10),b.a=void 0!==d[4]?parseFloat(d[4]):1,c.Color.updateColor(b)),b},valueToColor:function(a,b){if(b||(b=c.Color.createColor()),"string"==typeof a)return 0===a.indexOf("rgb")?c.Color.webToColor(a,b):(b.a=1,c.Color.hexToColor(a,b));if("number"==typeof a){var d=c.Color.getRGB(a);return b.r=d.r,b.g=d.g,b.b=d.b,b.a=d.a/255,b}return b},componentToHex:function(a){var b=a.toString(16);return 1==b.length?"0"+b:b},HSVColorWheel:function(a,b){void 0===a&&(a=1),void 0===b&&(b=1);for(var d=[],e=0;359>=e;e++)d.push(c.Color.HSVtoRGB(e/359,a,b));return d},HSLColorWheel:function(a,b){void 0===a&&(a=.5),void 0===b&&(b=.5);for(var d=[],e=0;359>=e;e++)d.push(c.Color.HSLtoRGB(e/359,a,b));return d},interpolateColor:function(a,b,d,e,f){void 0===f&&(f=255);var g=c.Color.getRGB(a),h=c.Color.getRGB(b),i=(h.red-g.red)*e/d+g.red,j=(h.green-g.green)*e/d+g.green,k=(h.blue-g.blue)*e/d+g.blue;return c.Color.getColor32(f,i,j,k)},interpolateColorWithRGB:function(a,b,d,e,f,g){var h=c.Color.getRGB(a),i=(b-h.red)*g/f+h.red,j=(d-h.green)*g/f+h.green,k=(e-h.blue)*g/f+h.blue;return c.Color.getColor(i,j,k)},interpolateRGB:function(a,b,d,e,f,g,h,i){var j=(e-a)*i/h+a,k=(f-b)*i/h+b,l=(g-d)*i/h+d;return c.Color.getColor(j,k,l)},getRandomColor:function(a,b,d){if(void 0===a&&(a=0),void 0===b&&(b=255),void 0===d&&(d=255),b>255||a>b)return c.Color.getColor(255,255,255);var e=a+Math.round(Math.random()*(b-a)),f=a+Math.round(Math.random()*(b-a)),g=a+Math.round(Math.random()*(b-a));return c.Color.getColor32(d,e,f,g)},getRGB:function(a){return a>16777215?{alpha:a>>>24,red:a>>16&255,green:a>>8&255,blue:255&a,a:a>>>24,r:a>>16&255,g:a>>8&255,b:255&a}:{alpha:255,red:a>>16&255,green:a>>8&255,blue:255&a,a:255,r:a>>16&255,g:a>>8&255,b:255&a}},getWebRGB:function(a){if("object"==typeof a)return"rgba("+a.r.toString()+","+a.g.toString()+","+a.b.toString()+","+(a.a/255).toString()+")";var b=c.Color.getRGB(a);return"rgba("+b.r.toString()+","+b.g.toString()+","+b.b.toString()+","+(b.a/255).toString()+")"},getAlpha:function(a){return a>>>24},getAlphaFloat:function(a){return(a>>>24)/255},getRed:function(a){return a>>16&255},getGreen:function(a){return a>>8&255},getBlue:function(a){return 255&a},blendNormal:function(a){return a},blendLighten:function(a,b){return b>a?b:a},blendDarken:function(a,b){return b>a?a:b},blendMultiply:function(a,b){return a*b/255},blendAverage:function(a,b){return(a+b)/2},blendAdd:function(a,b){return Math.min(255,a+b)},blendSubtract:function(a,b){return Math.max(0,a+b-255)},blendDifference:function(a,b){return Math.abs(a-b)},blendNegation:function(a,b){return 255-Math.abs(255-a-b)},blendScreen:function(a,b){return 255-((255-a)*(255-b)>>8)},blendExclusion:function(a,b){return a+b-2*a*b/255},blendOverlay:function(a,b){return 128>b?2*a*b/255:255-2*(255-a)*(255-b)/255},blendSoftLight:function(a,b){return 128>b?2*((a>>1)+64)*(b/255):255-2*(255-((a>>1)+64))*(255-b)/255},blendHardLight:function(a,b){return c.Color.blendOverlay(b,a)},blendColorDodge:function(a,b){return 255===b?b:Math.min(255,(a<<8)/(255-b))},blendColorBurn:function(a,b){return 0===b?b:Math.max(0,255-(255-a<<8)/b)},blendLinearDodge:function(a,b){return c.Color.blendAdd(a,b)},blendLinearBurn:function(a,b){return c.Color.blendSubtract(a,b)},blendLinearLight:function(a,b){return 128>b?c.Color.blendLinearBurn(a,2*b):c.Color.blendLinearDodge(a,2*(b-128))},blendVividLight:function(a,b){return 128>b?c.Color.blendColorBurn(a,2*b):c.Color.blendColorDodge(a,2*(b-128))},blendPinLight:function(a,b){return 128>b?c.Color.blendDarken(a,2*b):c.Color.blendLighten(a,2*(b-128))},blendHardMix:function(a,b){return c.Color.blendVividLight(a,b)<128?0:255},blendReflect:function(a,b){return 255===b?b:Math.min(255,a*a/(255-b))},blendGlow:function(a,b){return c.Color.blendReflect(b,a)},blendPhoenix:function(a,b){return Math.min(a,b)-Math.max(a,b)+255}},c.Physics=function(a,b){b=b||{},this.game=a,this.config=b,this.arcade=null,this.p2=null,this.ninja=null,this.box2d=null,this.chipmunk=null,this.matter=null,this.parseConfig()},c.Physics.ARCADE=0,c.Physics.P2JS=1,c.Physics.NINJA=2,c.Physics.BOX2D=3,c.Physics.CHIPMUNK=4,c.Physics.MATTERJS=5,c.Physics.prototype={parseConfig:function(){this.config.hasOwnProperty("arcade")&&this.config.arcade!==!0||!c.Physics.hasOwnProperty("Arcade")||(this.arcade=new c.Physics.Arcade(this.game)),this.config.hasOwnProperty("ninja")&&this.config.ninja===!0&&c.Physics.hasOwnProperty("Ninja")&&(this.ninja=new c.Physics.Ninja(this.game)),this.config.hasOwnProperty("p2")&&this.config.p2===!0&&c.Physics.hasOwnProperty("P2")&&(this.p2=new c.Physics.P2(this.game,this.config)),this.config.hasOwnProperty("box2d")&&this.config.box2d===!0&&c.Physics.hasOwnProperty("BOX2D")&&(this.box2d=new c.Physics.BOX2D(this.game,this.config)),this.config.hasOwnProperty("matter")&&this.config.matter===!0&&c.Physics.hasOwnProperty("Matter")&&(this.matter=new c.Physics.Matter(this.game,this.config))},startSystem:function(a){a===c.Physics.ARCADE?this.arcade=new c.Physics.Arcade(this.game):a===c.Physics.P2JS?null===this.p2?this.p2=new c.Physics.P2(this.game,this.config):this.p2.reset():a===c.Physics.NINJA?this.ninja=new c.Physics.Ninja(this.game):a===c.Physics.BOX2D?null===this.box2d?this.box2d=new c.Physics.Box2D(this.game,this.config):this.box2d.reset():a===c.Physics.MATTERJS&&(null===this.matter?this.matter=new c.Physics.Matter(this.game,this.config):this.matter.reset())},enable:function(a,b,d){void 0===b&&(b=c.Physics.ARCADE),void 0===d&&(d=!1),b===c.Physics.ARCADE?this.arcade.enable(a):b===c.Physics.P2JS&&this.p2?this.p2.enable(a,d):b===c.Physics.NINJA&&this.ninja?this.ninja.enableAABB(a):b===c.Physics.BOX2D&&this.box2d?this.box2d.enable(a):b===c.Physics.MATTERJS&&this.matter?this.matter.enable(a):console.warn(a.key+" is attempting to enable a physics body using an unknown physics system.")},preUpdate:function(){this.p2&&this.p2.preUpdate(),this.box2d&&this.box2d.preUpdate(),this.matter&&this.matter.preUpdate()},update:function(){this.p2&&this.p2.update(),this.box2d&&this.box2d.update(),this.matter&&this.matter.update()},setBoundsToWorld:function(){this.arcade&&this.arcade.setBoundsToWorld(),this.ninja&&this.ninja.setBoundsToWorld(),this.p2&&this.p2.setBoundsToWorld(),this.box2d&&this.box2d.setBoundsToWorld(),this.matter&&this.matter.setBoundsToWorld()},clear:function(){this.p2&&this.p2.clear(),this.box2d&&this.box2d.clear(),this.matter&&this.matter.clear()},reset:function(){this.p2&&this.p2.reset(),this.box2d&&this.box2d.reset(),this.matter&&this.matter.reset()},destroy:function(){this.p2&&this.p2.destroy(),this.box2d&&this.box2d.destroy(),this.matter&&this.matter.destroy(),this.arcade=null,this.ninja=null,this.p2=null,this.box2d=null,this.matter=null}},c.Physics.prototype.constructor=c.Physics,c.Particles=function(a){this.game=a,this.emitters={},this.ID=0},c.Particles.prototype={add:function(a){return this.emitters[a.name]=a,a},remove:function(a){delete this.emitters[a.name]},update:function(){for(var a in this.emitters)this.emitters[a].exists&&this.emitters[a].update()}},c.Particles.prototype.constructor=c.Particles,c.Video=function(a,b,d){if(void 0===b&&(b=null),void 0===d&&(d=null),this.game=a,this.key=b,this.width=0,this.height=0,this.type=c.VIDEO,this.disableTextureUpload=!1,this.touchLocked=!1,this.onPlay=new c.Signal,this.onChangeSource=new c.Signal,this.onComplete=new c.Signal,this.onAccess=new c.Signal,this.onError=new c.Signal,this.onTimeout=new c.Signal,this.timeout=15e3,this._timeOutID=null,this.video=null,this.videoStream=null,this.isStreaming=!1,this.retryLimit=20,this.retry=0,this.retryInterval=500,this._retryID=null,this._codeMuted=!1,this._muted=!1,this._codePaused=!1,this._paused=!1,this._pending=!1,this._autoplay=!1,this._endCallback=null,this._playCallback=null,b&&this.game.cache.checkVideoKey(b)){var e=this.game.cache.getVideo(b);e.isBlob?this.createVideoFromBlob(e.data):this.video=e.data,this.width=this.video.videoWidth,this.height=this.video.videoHeight}else d&&this.createVideoFromURL(d,!1);this.video&&!d?(this.baseTexture=new PIXI.BaseTexture(this.video),this.baseTexture.forceLoaded(this.width,this.height)):(this.baseTexture=new PIXI.BaseTexture(c.Cache.DEFAULT.baseTexture.source),this.baseTexture.forceLoaded(this.width,this.height)),this.texture=new PIXI.Texture(this.baseTexture),this.textureFrame=new c.Frame(0,0,0,this.width,this.height,"video"),this.texture.setFrame(this.textureFrame),this.texture.valid=!1,null!==b&&this.video&&(this.texture.valid=this.video.canplay),this.snapshot=null,c.BitmapData&&(this.snapshot=new c.BitmapData(this.game,"",this.width,this.height)),!this.game.device.cocoonJS&&(this.game.device.iOS||this.game.device.android)||window.PhaserGlobal&&window.PhaserGlobal.fakeiOSTouchLock?this.setTouchLock():e&&(e.locked=!1)},c.Video.prototype={connectToMediaStream:function(a,b){return a&&b&&(this.video=a,this.videoStream=b,this.isStreaming=!0,this.baseTexture.source=this.video,this.updateTexture(null,this.video.videoWidth,this.video.videoHeight),this.onAccess.dispatch(this)),this},startMediaStream:function(a,b,c){if(void 0===a&&(a=!1),void 0===b&&(b=null),void 0===c&&(c=null),!this.game.device.getUserMedia)return this.onError.dispatch(this,"No getUserMedia"),!1;null!==this.videoStream&&(this.videoStream.active?this.videoStream.active=!1:this.videoStream.stop()),this.removeVideoElement(),this.video=document.createElement("video"),this.video.setAttribute("autoplay","autoplay"),null!==b&&(this.video.width=b),null!==c&&(this.video.height=c),this._timeOutID=window.setTimeout(this.getUserMediaTimeout.bind(this),this.timeout);try{navigator.getUserMedia({audio:a,video:!0},this.getUserMediaSuccess.bind(this),this.getUserMediaError.bind(this))}catch(d){this.getUserMediaError(d)}return this},getUserMediaTimeout:function(){clearTimeout(this._timeOutID),this.onTimeout.dispatch(this)},getUserMediaError:function(a){clearTimeout(this._timeOutID),this.onError.dispatch(this,a)},getUserMediaSuccess:function(a){clearTimeout(this._timeOutID),this.videoStream=a,void 0!==this.video.mozSrcObject?this.video.mozSrcObject=a:this.video.src=window.URL&&window.URL.createObjectURL(a)||a;var b=this;this.video.onloadeddata=function(){function a(){if(c>0)if(b.video.videoWidth>0){var d=b.video.videoWidth,e=b.video.videoHeight;isNaN(b.video.videoHeight)&&(e=d/(4/3)),b.video.play(),b.isStreaming=!0,b.baseTexture.source=b.video,b.updateTexture(null,d,e),b.onAccess.dispatch(b)}else window.setTimeout(a,500);else console.warn("Unable to connect to video stream. Webcam error?");c--}var c=10;a()}},createVideoFromBlob:function(a){var b=this;return this.video=document.createElement("video"),this.video.controls=!1,this.video.setAttribute("autoplay","autoplay"),this.video.addEventListener("loadeddata",function(a){b.updateTexture(a)},!0),this.video.src=window.URL.createObjectURL(a),this.video.canplay=!0,this},createVideoFromURL:function(a,b){return void 0===b&&(b=!1),this.texture&&(this.texture.valid=!1),this.video=document.createElement("video"),this.video.controls=!1,b&&this.video.setAttribute("autoplay","autoplay"),this.video.src=a,this.video.canplay=!0,this.video.load(),this.retry=this.retryLimit,this._retryID=window.setTimeout(this.checkVideoProgress.bind(this),this.retryInterval),this.key=a,this},updateTexture:function(a,b,c){var d=!1;void 0!==b&&null!==b||(b=this.video.videoWidth,d=!0),void 0!==c&&null!==c||(c=this.video.videoHeight),this.width=b,this.height=c,this.baseTexture.source!==this.video&&(this.baseTexture.source=this.video),this.baseTexture.forceLoaded(b,c),this.texture.frame.resize(b,c),this.texture.width=b,this.texture.height=c,this.texture.valid=!0,this.snapshot&&this.snapshot.resize(b,c),d&&null!==this.key&&(this.onChangeSource.dispatch(this,b,c),this._autoplay&&(this.video.play(),this.onPlay.dispatch(this,this.loop,this.playbackRate)))},complete:function(){this.onComplete.dispatch(this)},play:function(a,b){return void 0===a&&(a=!1),void 0===b&&(b=1),this.game.sound.onMute&&(this.game.sound.onMute.add(this.setMute,this),this.game.sound.onUnMute.add(this.unsetMute,this),this.game.sound.mute&&this.setMute()),this.game.onPause.add(this.setPause,this),this.game.onResume.add(this.setResume,this),this._endCallback=this.complete.bind(this),this.video.addEventListener("ended",this._endCallback,!0),this.video.addEventListener("webkitendfullscreen",this._endCallback,!0),a?this.video.loop="loop":this.video.loop="",this.video.playbackRate=b,this.touchLocked?this._pending=!0:(this._pending=!1,null!==this.key&&(4!==this.video.readyState?(this.retry=this.retryLimit,this._retryID=window.setTimeout(this.checkVideoProgress.bind(this),this.retryInterval)):(this._playCallback=this.playHandler.bind(this),this.video.addEventListener("playing",this._playCallback,!0))),this.video.play(),this.onPlay.dispatch(this,a,b)),this},playHandler:function(){this.video.removeEventListener("playing",this._playCallback,!0),this.updateTexture()},stop:function(){return this.game.sound.onMute&&(this.game.sound.onMute.remove(this.setMute,this),this.game.sound.onUnMute.remove(this.unsetMute,this)),this.game.onPause.remove(this.setPause,this),this.game.onResume.remove(this.setResume,this),this.isStreaming?(this.video.mozSrcObject?(this.video.mozSrcObject.stop(),this.video.src=null):(this.video.src="",this.videoStream.active?this.videoStream.active=!1:this.videoStream.getTracks?this.videoStream.getTracks().forEach(function(a){a.stop()}):this.videoStream.stop()),this.videoStream=null,this.isStreaming=!1):(this.video.removeEventListener("ended",this._endCallback,!0),this.video.removeEventListener("webkitendfullscreen",this._endCallback,!0),this.video.removeEventListener("playing",this._playCallback,!0),this.touchLocked?this._pending=!1:this.video.pause()),this},add:function(a){if(Array.isArray(a))for(var b=0;b0?this._retryID=window.setTimeout(this.checkVideoProgress.bind(this),this.retryInterval):console.warn("Phaser.Video: Unable to start downloading video in time",this.isStreaming))},setTouchLock:function(){this.game.input.touch.addTouchLockCallback(this.unlock,this),this.touchLocked=!0},unlock:function(){if(this.touchLocked=!1,this.video.play(),this.onPlay.dispatch(this,this.loop,this.playbackRate),this.key){var a=this.game.cache.getVideo(this.key);a&&!a.isBlob&&(a.locked=!1)}return!0},grab:function(a,b,c){return void 0===a&&(a=!1),void 0===b&&(b=1),void 0===c&&(c=null),null===this.snapshot?void console.warn("Video.grab cannot run because Phaser.BitmapData is unavailable"):(a&&this.snapshot.cls(),this.snapshot.copy(this.video,0,0,this.width,this.height,0,0,this.width,this.height,0,0,0,1,1,b,c),this.snapshot)},removeVideoElement:function(){if(this.video){for(this.video.parentNode&&this.video.parentNode.removeChild(this.video);this.video.hasChildNodes();)this.video.removeChild(this.video.firstChild);this.video.removeAttribute("autoplay"),this.video.removeAttribute("src"),this.video=null}},destroy:function(){this.stop(),this.removeVideoElement(),this.touchLocked&&this.game.input.touch.removeTouchLockCallback(this.unlock,this),this._retryID&&window.clearTimeout(this._retryID)}},Object.defineProperty(c.Video.prototype,"currentTime",{get:function(){return this.video?this.video.currentTime:0},set:function(a){this.video.currentTime=a}}),Object.defineProperty(c.Video.prototype,"duration",{get:function(){return this.video?this.video.duration:0}}),Object.defineProperty(c.Video.prototype,"progress",{get:function(){return this.video?this.video.currentTime/this.video.duration:0}}),Object.defineProperty(c.Video.prototype,"mute",{get:function(){return this._muted},set:function(a){if(a=a||null){if(this._muted)return;this._codeMuted=!0,this.setMute()}else{if(!this._muted)return;this._codeMuted=!1,this.unsetMute()}}}),Object.defineProperty(c.Video.prototype,"paused",{get:function(){return this._paused},set:function(a){if(a=a||null,!this.touchLocked)if(a){if(this._paused)return;this._codePaused=!0,this.setPause()}else{if(!this._paused)return;this._codePaused=!1,this.setResume()}}}),Object.defineProperty(c.Video.prototype,"volume",{get:function(){return this.video?this.video.volume:1},set:function(a){0>a?a=0:a>1&&(a=1),this.video&&(this.video.volume=a)}}),Object.defineProperty(c.Video.prototype,"playbackRate",{get:function(){return this.video?this.video.playbackRate:1},set:function(a){this.video&&(this.video.playbackRate=a)}}),Object.defineProperty(c.Video.prototype,"loop",{get:function(){return this.video?this.video.loop:!1},set:function(a){a&&this.video?this.video.loop="loop":this.video&&(this.video.loop="")}}),Object.defineProperty(c.Video.prototype,"playing",{get:function(){return!(this.video.paused&&this.video.ended)}}),c.Video.prototype.constructor=c.Video,void 0===PIXI.blendModes&&(PIXI.blendModes=c.blendModes),void 0===PIXI.scaleModes&&(PIXI.scaleModes=c.scaleModes),void 0===PIXI.Texture.emptyTexture&&(PIXI.Texture.emptyTexture=new PIXI.Texture(new PIXI.BaseTexture)),void 0===PIXI.DisplayObject._tempMatrix&&(PIXI.DisplayObject._tempMatrix=new PIXI.Matrix),void 0===PIXI.RenderTexture.tempMatrix&&(PIXI.RenderTexture.tempMatrix=new PIXI.Matrix),PIXI.Graphics&&void 0===PIXI.Graphics.POLY&&(PIXI.Graphics.POLY=c.POLYGON,PIXI.Graphics.RECT=c.RECTANGLE,PIXI.Graphics.CIRC=c.CIRCLE,PIXI.Graphics.ELIP=c.ELLIPSE,PIXI.Graphics.RREC=c.ROUNDEDRECTANGLE),PIXI.TextureSilentFail=!0,"undefined"!=typeof exports?("undefined"!=typeof module&&module.exports&&(exports=module.exports=c),exports.Phaser=c):"undefined"!=typeof define&&define.amd?define("Phaser",function(){return b.Phaser=c}()):b.Phaser=c,c}.call(this); //# sourceMappingURL=phaser-no-physics.map \ No newline at end of file diff --git a/build/custom/phaser-split.js b/build/custom/phaser-split.js index 06b5a9843..0e736ab4b 100644 --- a/build/custom/phaser-split.js +++ b/build/custom/phaser-split.js @@ -7,7 +7,7 @@ * * Phaser - http://phaser.io * -* v2.5.0 "Five Kings" - Built: Fri Jun 17 2016 12:44:52 +* v2.5.1 "Fal Moran" - Built: Fri Jul 08 2016 15:42:11 * * By Richard Davey http://www.photonstorm.com @photonstorm * @@ -54,7 +54,7 @@ var Phaser = Phaser || { * @constant * @type {string} */ - VERSION: '2.5.0', + VERSION: '2.6.0', /** * An array of Phaser game instances. @@ -745,6 +745,20 @@ if (!window.console) */ Phaser.Utils = { + /** + * Takes the given string and reverses it, returning the reversed string. + * For example if given the string `Atari 520ST` it would return `TS025 iratA`. + * + * @method Phaser.Utils.reverseString + * @param {string} string - The string to be reversed. + * @return {string} The reversed string. + */ + reverseString: function (string) { + + return string.split('').reverse().join(''); + + }, + /** * Gets an objects property by string. * @@ -880,14 +894,31 @@ Phaser.Utils = { }, /** - * JavaScript string pad http://www.webtoolkit.info/. + * Takes the given string and pads it out, to the length required, using the character + * specified. For example if you need a string to be 6 characters long, you can call: + * + * `pad('bob', 6, '-', 2)` + * + * This would return: `bob---` as it has padded it out to 6 characters, using the `-` on the right. + * + * You can also use it to pad numbers (they are always returned as strings): + * + * `pad(512, 6, '0', 1)` + * + * Would return: `000512` with the string padded to the left. + * + * If you don't specify a direction it'll pad to both sides: + * + * `pad('c64', 7, '*')` + * + * Would return: `**c64**` * * @method Phaser.Utils.pad - * @param {string} str - The target string. + * @param {string} str - The target string. `toString()` will be called on the string, which means you can also pass in common data types like numbers. * @param {integer} [len=0] - The number of characters to be added. * @param {string} [pad=" "] - The string to pad it out with (defaults to a space). - * @param {integer} [dir=3] The direction dir = 1 (left), 2 (right), 3 (both). - * @return {string} The padded string + * @param {integer} [dir=3] - The direction dir = 1 (left), 2 (right), 3 (both). + * @return {string} The padded string. */ pad: function (str, len, pad, dir) { @@ -895,6 +926,8 @@ Phaser.Utils = { if (pad === undefined) { var pad = ' '; } if (dir === undefined) { var dir = 3; } + str = str.toString(); + var padlen = 0; if (len + 1 >= str.length) @@ -4120,6 +4153,11 @@ Phaser.Polygon = function () { */ this.closed = true; + /** + * @property {boolean} flattened - Has this Polygon been flattened by a call to `Polygon.flatten` ? + */ + this.flattened = false; + /** * @property {number} type - The base object type. */ @@ -4160,7 +4198,9 @@ Phaser.Polygon.prototype = { }, /** - * Flattens this Polygon so the points are a sequence of numbers. Any Point objects found are removed and replaced with two numbers. + * Flattens this Polygon so the points are a sequence of numbers. + * Any Point objects found are removed and replaced with two numbers. + * Also sets the Polygon.flattened property to `true`. * * @method Phaser.Polygon#flatten * @return {Phaser.Polygon} This Polygon object @@ -4169,6 +4209,8 @@ Phaser.Polygon.prototype = { this._points = this.toNumberArray(); + this.flattened = true; + return this; }, @@ -4210,20 +4252,39 @@ Phaser.Polygon.prototype = { // Adapted from http://www.ecse.rpi.edu/Homepages/wrf/Research/Short_Notes/pnpoly.html by Jonas Raoni Soares Silva - var length = this._points.length; var inside = false; - for (var i = -1, j = length - 1; ++i < length; j = i) + if (this.flattened) { - var ix = this._points[i].x; - var iy = this._points[i].y; - - var jx = this._points[j].x; - var jy = this._points[j].y; - - if (((iy <= y && y < jy) || (jy <= y && y < iy)) && (x < (jx - ix) * (y - iy) / (jy - iy) + ix)) + for (var i = -2, j = this._points.length - 2; (i += 2) < this._points.length; j = i) { - inside = !inside; + var ix = this._points[i]; + var iy = this._points[i + 1]; + + var jx = this._points[j]; + var jy = this._points[j + 1]; + + if (((iy <= y && y < jy) || (jy <= y && y < iy)) && (x < (jx - ix) * (y - iy) / (jy - iy) + ix)) + { + inside = !inside; + } + } + + } + else + { + for (var i = -1, j = this._points.length - 1; ++i < this._points.length; j = i) + { + var ix = this._points[i].x; + var iy = this._points[i].y; + + var jx = this._points[j].x; + var jy = this._points[j].y; + + if (((iy <= y && y < jy) || (jy <= y && y < iy)) && (x < (jx - ix) * (y - iy) / (jy - iy) + ix)) + { + inside = !inside; + } } } @@ -10071,6 +10132,8 @@ Phaser.Group.prototype.align = function (rows, columns, cellWidth, cellHeight, p else { // We keep laying them out until we hit the column limit + r.x += cellWidth; + if (r.x === w) { r.x = 0; @@ -11501,17 +11564,24 @@ Phaser.Group.prototype.getBottom = function () { }; /** -* Get the closest child to given Object. +* Get the closest child to given Object, with optional callback to filter children. * * This can be a Sprite, Group, Image or any object with public x and y properties. * * 'close' is determined by the distance from the objects `x` and `y` properties compared to the childs `x` and `y` properties. * +* You can use the optional `callback` argument to apply your own filter to the distance checks. +* If the child is closer then the previous child, it will be sent to `callback` as the first argument, +* with the distance as the second. The callback should return `true` if it passes your +* filtering criteria, otherwise it should return `false`. +* * @method Phaser.Group#getClosestTo * @param {any} object - The object used to determine the distance. This can be a Sprite, Group, Image or any object with public x and y properties. -* @return {any} The child closest to given object, or null if no child was found. +* @param {function} [callback] - The function that each child will be evaluated against. Each child of the group will be passed to it as its first parameter, with the distance as the second. It should return `true` if the child passes the matching criteria. +* @param {object} [callbackContext] - The context in which the function should be called (usually 'this'). +* @return {any} The child closest to given object, or `null` if no child was found. */ -Phaser.Group.prototype.getClosestTo = function (object) { +Phaser.Group.prototype.getClosestTo = function (object, callback, callbackContext) { var distance = Number.MAX_VALUE; var tempDistance = 0; @@ -11525,7 +11595,7 @@ Phaser.Group.prototype.getClosestTo = function (object) { { tempDistance = Math.abs(Phaser.Point.distance(object, child)); - if (tempDistance < distance) + if (tempDistance < distance && (!callback || callback.call(callbackContext, child, tempDistance))) { distance = tempDistance; result = child; @@ -11538,17 +11608,24 @@ Phaser.Group.prototype.getClosestTo = function (object) { }; /** -* Get the child furthest away from the given Object. +* Get the child furthest away from the given Object, with optional callback to filter children. * * This can be a Sprite, Group, Image or any object with public x and y properties. * * 'furthest away' is determined by the distance from the objects `x` and `y` properties compared to the childs `x` and `y` properties. * +* You can use the optional `callback` argument to apply your own filter to the distance checks. +* If the child is closer then the previous child, it will be sent to `callback` as the first argument, +* with the distance as the second. The callback should return `true` if it passes your +* filtering criteria, otherwise it should return `false`. +* * @method Phaser.Group#getFurthestFrom * @param {any} object - The object used to determine the distance. This can be a Sprite, Group, Image or any object with public x and y properties. -* @return {any} The child furthest from the given object, or null if no child was found. +* @param {function} [callback] - The function that each child will be evaluated against. Each child of the group will be passed to it as its first parameter, with the distance as the second. It should return `true` if the child passes the matching criteria. +* @param {object} [callbackContext] - The context in which the function should be called (usually 'this'). +* @return {any} The child furthest from the given object, or `null` if no child was found. */ -Phaser.Group.prototype.getFurthestFrom = function (object) { +Phaser.Group.prototype.getFurthestFrom = function (object, callback, callbackContext) { var distance = 0; var tempDistance = 0; @@ -11562,7 +11639,7 @@ Phaser.Group.prototype.getFurthestFrom = function (object) { { tempDistance = Math.abs(Phaser.Point.distance(object, child)); - if (tempDistance > distance) + if (tempDistance > distance && (!callback || callback.call(callbackContext, child, tempDistance))) { distance = tempDistance; result = child; @@ -11894,6 +11971,289 @@ Object.defineProperty(Phaser.Group.prototype, "angle", { }); +/** +* The center x coordinate of this Group. +* +* It is derived by calling `getBounds`, calculating the Groups dimensions based on its +* visible children. +* +* Note that no ancestors are factored into the result, meaning that if this Group is +* nested within another Group, with heavy transforms on it, the result of this property +* is likely to be incorrect. It is safe to get and set this property if the Group is a +* top-level descendant of Phaser.World, or untransformed parents. +* +* @name Phaser.Group#centerX +* @property {number} centerX +*/ +Object.defineProperty(Phaser.Group.prototype, "centerX", { + + get: function () { + + return this.getBounds().centerX; + + }, + + set: function (value) { + + var r = this.getBounds(); + var offset = this.x - r.x; + + this.x = (value + offset) - r.halfWidth; + + } + +}); + +/** +* The center y coordinate of this Group. +* +* It is derived by calling `getBounds`, calculating the Groups dimensions based on its +* visible children. +* +* Note that no ancestors are factored into the result, meaning that if this Group is +* nested within another Group, with heavy transforms on it, the result of this property +* is likely to be incorrect. It is safe to get and set this property if the Group is a +* top-level descendant of Phaser.World, or untransformed parents. +* +* @name Phaser.Group#centerY +* @property {number} centerY +*/ +Object.defineProperty(Phaser.Group.prototype, "centerY", { + + get: function () { + + return this.getBounds().centerY; + + }, + + set: function (value) { + + var r = this.getBounds(); + var offset = this.y - r.y; + + this.y = (value + offset) - r.halfHeight; + + } + +}); + +/** +* The left coordinate of this Group. +* +* It is derived by calling `getBounds`, calculating the Groups dimensions based on its +* visible children. +* +* Note that no ancestors are factored into the result, meaning that if this Group is +* nested within another Group, with heavy transforms on it, the result of this property +* is likely to be incorrect. It is safe to get and set this property if the Group is a +* top-level descendant of Phaser.World, or untransformed parents. +* +* @name Phaser.Group#left +* @property {number} left +*/ +Object.defineProperty(Phaser.Group.prototype, "left", { + + get: function () { + + return this.getBounds().left; + + }, + + set: function (value) { + + var r = this.getBounds(); + var offset = this.x - r.x; + + this.x = value + offset; + + } + +}); + +/** +* The right coordinate of this Group. +* +* It is derived by calling `getBounds`, calculating the Groups dimensions based on its +* visible children. +* +* Note that no ancestors are factored into the result, meaning that if this Group is +* nested within another Group, with heavy transforms on it, the result of this property +* is likely to be incorrect. It is safe to get and set this property if the Group is a +* top-level descendant of Phaser.World, or untransformed parents. +* +* @name Phaser.Group#right +* @property {number} right +*/ +Object.defineProperty(Phaser.Group.prototype, "right", { + + get: function () { + + return this.getBounds().right; + + }, + + set: function (value) { + + var r = this.getBounds(); + var offset = this.x - r.x; + + this.x = (value + offset) - r.width; + + } + +}); + +/** +* The top coordinate of this Group. +* +* It is derived by calling `getBounds`, calculating the Groups dimensions based on its +* visible children. +* +* Note that no ancestors are factored into the result, meaning that if this Group is +* nested within another Group, with heavy transforms on it, the result of this property +* is likely to be incorrect. It is safe to get and set this property if the Group is a +* top-level descendant of Phaser.World, or untransformed parents. +* +* @name Phaser.Group#top +* @property {number} top +*/ +Object.defineProperty(Phaser.Group.prototype, "top", { + + get: function () { + + return this.getBounds().top; + + }, + + set: function (value) { + + var r = this.getBounds(); + var offset = this.y - r.y; + + this.y = (value + offset); + + } + +}); + +/** +* The bottom coordinate of this Group. +* +* It is derived by calling `getBounds`, calculating the Groups dimensions based on its +* visible children. +* +* Note that no ancestors are factored into the result, meaning that if this Group is +* nested within another Group, with heavy transforms on it, the result of this property +* is likely to be incorrect. It is safe to get and set this property if the Group is a +* top-level descendant of Phaser.World, or untransformed parents. +* +* @name Phaser.Group#bottom +* @property {number} bottom +*/ +Object.defineProperty(Phaser.Group.prototype, "bottom", { + + get: function () { + + return this.getBounds().bottom; + + }, + + set: function (value) { + + var r = this.getBounds(); + var offset = this.y - r.y; + + this.y = (value + offset) - r.height; + + } + +}); + +/** +* Aligns this Group within another Game Object, or Rectangle, known as the +* 'container', to one of 9 possible positions. +* +* The container must be a Game Object, or Phaser.Rectangle object. This can include properties +* such as `World.bounds` or `Camera.view`, for aligning Groups within the world +* and camera bounds. Or it can include other Sprites, Images, Text objects, BitmapText, +* TileSprites or Buttons. +* +* Please note that aligning a Group to another Game Object does **not** make it a child of +* the container. It simply modifies its position coordinates so it aligns with it. +* +* The position constants you can use are: +* +* `Phaser.TOP_LEFT`, `Phaser.TOP_CENTER`, `Phaser.TOP_RIGHT`, `Phaser.LEFT_CENTER`, +* `Phaser.CENTER`, `Phaser.RIGHT_CENTER`, `Phaser.BOTTOM_LEFT`, +* `Phaser.BOTTOM_CENTER` and `Phaser.BOTTOM_RIGHT`. +* +* Groups are placed in such a way that their _bounds_ align with the +* container, taking into consideration rotation and scale of its children. +* This allows you to neatly align Groups, irrespective of their position value. +* +* The optional `offsetX` and `offsetY` arguments allow you to apply extra spacing to the final +* aligned position of the Group. For example: +* +* `group.alignIn(background, Phaser.BOTTOM_RIGHT, -20, -20)` +* +* Would align the `group` to the bottom-right, but moved 20 pixels in from the corner. +* Think of the offsets as applying an adjustment to the containers bounds before the alignment takes place. +* So providing a negative offset will 'shrink' the container bounds by that amount, and providing a positive +* one expands it. +* +* @method Phaser.Group#alignIn +* @param {Phaser.Rectangle|Phaser.Sprite|Phaser.Image|Phaser.Text|Phaser.BitmapText|Phaser.Button|Phaser.Graphics|Phaser.TileSprite} container - The Game Object or Rectangle with which to align this Group to. Can also include properties such as `World.bounds` or `Camera.view`. +* @param {integer} [position] - The position constant. One of `Phaser.TOP_LEFT` (default), `Phaser.TOP_CENTER`, `Phaser.TOP_RIGHT`, `Phaser.LEFT_CENTER`, `Phaser.CENTER`, `Phaser.RIGHT_CENTER`, `Phaser.BOTTOM_LEFT`, `Phaser.BOTTOM_CENTER` or `Phaser.BOTTOM_RIGHT`. +* @param {integer} [offsetX=0] - A horizontal adjustment of the Containers bounds, applied to the aligned position of the Game Object. Use a negative value to shrink the bounds, positive to increase it. +* @param {integer} [offsetY=0] - A vertical adjustment of the Containers bounds, applied to the aligned position of the Game Object. Use a negative value to shrink the bounds, positive to increase it. +* @return {Phaser.Group} This Group. +*/ + +// This function is set at the bottom of src/gameobjects/components/Bounds.js + +/** +* Aligns this Group to the side of another Game Object, or Rectangle, known as the +* 'parent', in one of 11 possible positions. +* +* The parent must be a Game Object, or Phaser.Rectangle object. This can include properties +* such as `World.bounds` or `Camera.view`, for aligning Groups within the world +* and camera bounds. Or it can include other Sprites, Images, Text objects, BitmapText, +* TileSprites or Buttons. +* +* Please note that aligning a Group to another Game Object does **not** make it a child of +* the parent. It simply modifies its position coordinates so it aligns with it. +* +* The position constants you can use are: +* +* `Phaser.TOP_LEFT` (default), `Phaser.TOP_CENTER`, `Phaser.TOP_RIGHT`, `Phaser.LEFT_TOP`, +* `Phaser.LEFT_CENTER`, `Phaser.LEFT_BOTTOM`, `Phaser.RIGHT_TOP`, `Phaser.RIGHT_CENTER`, +* `Phaser.RIGHT_BOTTOM`, `Phaser.BOTTOM_LEFT`, `Phaser.BOTTOM_CENTER` +* and `Phaser.BOTTOM_RIGHT`. +* +* Groups are placed in such a way that their _bounds_ align with the +* parent, taking into consideration rotation and scale of the children. +* This allows you to neatly align Groups, irrespective of their position value. +* +* The optional `offsetX` and `offsetY` arguments allow you to apply extra spacing to the final +* aligned position of the Group. For example: +* +* `group.alignTo(background, Phaser.BOTTOM_RIGHT, -20, -20)` +* +* Would align the `group` to the bottom-right, but moved 20 pixels in from the corner. +* Think of the offsets as applying an adjustment to the parents bounds before the alignment takes place. +* So providing a negative offset will 'shrink' the parent bounds by that amount, and providing a positive +* one expands it. +* +* @method Phaser.Group#alignTo +* @param {Phaser.Rectangle|Phaser.Sprite|Phaser.Image|Phaser.Text|Phaser.BitmapText|Phaser.Button|Phaser.Graphics|Phaser.TileSprite} parent - The Game Object or Rectangle with which to align this Group to. Can also include properties such as `World.bounds` or `Camera.view`. +* @param {integer} [position] - The position constant. One of `Phaser.TOP_LEFT`, `Phaser.TOP_CENTER`, `Phaser.TOP_RIGHT`, `Phaser.LEFT_TOP`, `Phaser.LEFT_CENTER`, `Phaser.LEFT_BOTTOM`, `Phaser.RIGHT_TOP`, `Phaser.RIGHT_CENTER`, `Phaser.RIGHT_BOTTOM`, `Phaser.BOTTOM_LEFT`, `Phaser.BOTTOM_CENTER` or `Phaser.BOTTOM_RIGHT`. +* @param {integer} [offsetX=0] - A horizontal adjustment of the Containers bounds, applied to the aligned position of the Game Object. Use a negative value to shrink the bounds, positive to increase it. +* @param {integer} [offsetY=0] - A vertical adjustment of the Containers bounds, applied to the aligned position of the Game Object. Use a negative value to shrink the bounds, positive to increase it. +* @return {Phaser.Group} This Group. +*/ + +// This function is set at the bottom of src/gameobjects/components/Bounds.js + /** * A display object is any object that can be rendered in the Phaser/pixi.js scene graph. * @@ -18163,9 +18523,10 @@ Phaser.InputHandler.prototype = { /** * Starts the Input Handler running. This is called automatically when you enable input on a Sprite, or can be called directly if you need to set a specific priority. + * * @method Phaser.InputHandler#start - * @param {number} priority - Higher priority sprites take click priority over low-priority sprites when they are stacked on-top of each other. - * @param {boolean} useHandCursor - If true the Sprite will show the hand cursor on mouse-over (doesn't apply to mobile browsers) + * @param {number} [priority=0] - Higher priority sprites take click priority over low-priority sprites when they are stacked on-top of each other. + * @param {boolean} [useHandCursor=false] - If true the Sprite will show the hand cursor on mouse-over (doesn't apply to mobile browsers) * @return {Phaser.Sprite} The Sprite object to which the Input Handler is bound. */ start: function (priority, useHandCursor) { @@ -18786,7 +19147,7 @@ Phaser.InputHandler.prototype = { } else if (this.draggable && this._draggedPointerID === pointer.id) { - return this.updateDrag(pointer); + return this.updateDrag(pointer, false); } else if (this._pointerData[pointer.id].isOver) { @@ -19065,24 +19426,24 @@ Phaser.InputHandler.prototype = { }, /** - * Updates the Pointer drag on this Sprite. + * Called as a Pointer actively drags this Game Object. + * * @method Phaser.InputHandler#updateDrag - * @param {Phaser.Pointer} pointer + * @private + * @param {Phaser.Pointer} pointer - The Pointer causing the drag update. + * @param {boolean} fromStart - True if this is the first update, immediately after the drag has started. * @return {boolean} */ updateDrag: function (pointer, fromStart) { + if (fromStart === undefined) { fromStart = false; } + if (pointer.isUp) { this.stopDrag(pointer); return false; } - if (fromStart === undefined) - { - fromStart = false; - } - var px = this.globalToLocalX(pointer.x) + this._dragPoint.x + this.dragOffset.x; var py = this.globalToLocalY(pointer.y) + this._dragPoint.y + this.dragOffset.y; @@ -19533,7 +19894,6 @@ Phaser.InputHandler.prototype = { }, - /** * Bounds Rect check for the sprite drag * @@ -22598,6 +22958,11 @@ Phaser.Component.Bounds.prototype = { }; +// Phaser.Group extensions + +Phaser.Group.prototype.alignIn = Phaser.Component.Bounds.prototype.alignIn; +Phaser.Group.prototype.alignTo = Phaser.Component.Bounds.prototype.alignTo; + /** * @author Richard Davey * @copyright 2016 Photon Storm Ltd. @@ -23417,7 +23782,7 @@ Phaser.Component.Destroy.prototype = { */ /** -* The Events component is a collection of events fired by the parent game object. +* The Events component is a collection of events fired by the parent Game Object. * * Phaser uses what are known as 'Signals' for all event handling. All of the events in * this class are signals you can subscribe to, much in the same way you'd "listen" for @@ -23487,92 +23852,187 @@ Phaser.Events.prototype = { // The following properties are sentinels that will be replaced with getters /** - * @property {Phaser.Signal} onAddedToGroup - This signal is dispatched when the parent is added to a new Group. + * This signal is dispatched when this Game Object is added to a new Group. + * It is sent two arguments: + * {any} The Game Object that was added to the Group. + * {Phaser.Group} The Group it was added to. + * @property {Phaser.Signal} onAddedToGroup */ onAddedToGroup: null, /** - * @property {Phaser.Signal} onRemovedFromGroup - This signal is dispatched when the parent is removed from a Group. + * This signal is dispatched when the Game Object is removed from a Group. + * It is sent two arguments: + * {any} The Game Object that was removed from the Group. + * {Phaser.Group} The Group it was removed from. + * @property {Phaser.Signal} onRemovedFromGroup */ onRemovedFromGroup: null, /** - * @property {Phaser.Signal} onRemovedFromWorld - This signal is dispatched if this item or any of its parents are removed from the game world. + * This Signal is never used internally by Phaser and is now deprecated. + * @deprecated + * @property {Phaser.Signal} onRemovedFromWorld */ onRemovedFromWorld: null, /** - * @property {Phaser.Signal} onDestroy - This signal is dispatched when the parent is destroyed. + * This signal is dispatched when the Game Object is destroyed. + * This happens when `Sprite.destroy()` is called, or `Group.destroy()` with `destroyChildren` set to true. + * It is sent one argument: + * {any} The Game Object that was destroyed. + * @property {Phaser.Signal} onDestroy */ onDestroy: null, /** - * @property {Phaser.Signal} onKilled - This signal is dispatched when the parent is killed. + * This signal is dispatched when the Game Object is killed. + * This happens when `Sprite.kill()` is called. + * Please understand the difference between `kill` and `destroy` by looking at their respective methods. + * It is sent one argument: + * {any} The Game Object that was killed. + * @property {Phaser.Signal} onKilled */ onKilled: null, /** - * @property {Phaser.Signal} onRevived - This signal is dispatched when the parent is revived. + * This signal is dispatched when the Game Object is revived from a previously killed state. + * This happens when `Sprite.revive()` is called. + * It is sent one argument: + * {any} The Game Object that was revived. + * @property {Phaser.Signal} onRevived */ onRevived: null, /** - * @property {Phaser.Signal} onOutOfBounds - This signal is dispatched when the parent leaves the world bounds (only if Sprite.checkWorldBounds is true). + * This signal is dispatched when the Game Object leaves the Phaser.World bounds. + * This signal is only if `Sprite.checkWorldBounds` is set to `true`. + * It is sent one argument: + * {any} The Game Object that left the World bounds. + * @property {Phaser.Signal} onOutOfBounds */ onOutOfBounds: null, /** - * @property {Phaser.Signal} onEnterBounds - This signal is dispatched when the parent returns within the world bounds (only if Sprite.checkWorldBounds is true). + * This signal is dispatched when the Game Object returns within the Phaser.World bounds, having previously been outside of them. + * This signal is only if `Sprite.checkWorldBounds` is set to `true`. + * It is sent one argument: + * {any} The Game Object that entered the World bounds. + * @property {Phaser.Signal} onEnterBounds */ onEnterBounds: null, /** - * @property {Phaser.Signal} onInputOver - This signal is dispatched if the parent is inputEnabled and receives an over event from a Pointer. + * This signal is dispatched if the Game Object has `inputEnabled` set to `true`, + * and receives an over event from a Phaser.Pointer. + * It is sent two arguments: + * {any} The Game Object that received the event. + * {Phaser.Pointer} The Phaser.Pointer object that caused the event. + * @property {Phaser.Signal} onInputOver */ onInputOver: null, /** - * @property {Phaser.Signal} onInputOut - This signal is dispatched if the parent is inputEnabled and receives an out event from a Pointer. + * This signal is dispatched if the Game Object has `inputEnabled` set to `true`, + * and receives an out event from a Phaser.Pointer, which was previously over it. + * It is sent two arguments: + * {any} The Game Object that received the event. + * {Phaser.Pointer} The Phaser.Pointer object that caused the event. + * @property {Phaser.Signal} onInputOut */ onInputOut: null, /** - * @property {Phaser.Signal} onInputDown - This signal is dispatched if the parent is inputEnabled and receives a down event from a Pointer. + * This signal is dispatched if the Game Object has `inputEnabled` set to `true`, + * and receives a down event from a Phaser.Pointer. This effectively means the Pointer has been + * pressed down (but not yet released) on the Game Object. + * It is sent two arguments: + * {any} The Game Object that received the event. + * {Phaser.Pointer} The Phaser.Pointer object that caused the event. + * @property {Phaser.Signal} onInputDown */ onInputDown: null, /** - * @property {Phaser.Signal} onInputUp - This signal is dispatched if the parent is inputEnabled and receives an up event from a Pointer. + * This signal is dispatched if the Game Object has `inputEnabled` set to `true`, + * and receives an up event from a Phaser.Pointer. This effectively means the Pointer had been + * pressed down, and was then released on the Game Object. + * It is sent three arguments: + * {any} The Game Object that received the event. + * {Phaser.Pointer} The Phaser.Pointer object that caused the event. + * {boolean} isOver - Is the Pointer still over the Game Object? + * @property {Phaser.Signal} onInputUp */ onInputUp: null, /** - * @property {Phaser.Signal} onDragStart - This signal is dispatched if the parent is inputEnabled and receives a drag start event from a Pointer. + * This signal is dispatched if the Game Object has been `inputEnabled` and `enableDrag` has been set. + * It is sent when a Phaser.Pointer starts to drag the Game Object, taking into consideration the various + * drag limitations that may be set. + * It is sent four arguments: + * {any} The Game Object that received the event. + * {Phaser.Pointer} The Phaser.Pointer object that caused the event. + * {number} The x coordinate that the drag started from. + * {number} The y coordinate that the drag started from. + * @property {Phaser.Signal} onDragStart */ onDragStart: null, /** - * @property {Phaser.Signal} onDragUpdate - This signal is dispatched if the parent is inputEnabled and receives a drag update event from a Pointer. + * This signal is dispatched if the Game Object has been `inputEnabled` and `enableDrag` has been set. + * It is sent when a Phaser.Pointer is actively dragging the Game Object. + * Be warned: This is a high volume Signal. Be careful what you bind to it. + * It is sent six arguments: + * {any} The Game Object that received the event. + * {Phaser.Pointer} The Phaser.Pointer object that caused the event. + * {number} The new x coordinate of the Game Object. + * {number} The new y coordinate of the Game Object. + * {Phaser.Point} A Point object that contains the point the Game Object was snapped to, if `snapOnDrag` has been enabled. + * {boolean} The `fromStart` boolean, indicates if this is the first update immediately after the drag has started. + * @property {Phaser.Signal} onDragUpdate */ onDragUpdate: null, /** - * @property {Phaser.Signal} onDragStop - This signal is dispatched if the parent is inputEnabled and receives a drag stop event from a Pointer. + * This signal is dispatched if the Game Object has been `inputEnabled` and `enableDrag` has been set. + * It is sent when a Phaser.Pointer stops dragging the Game Object. + * It is sent two arguments: + * {any} The Game Object that received the event. + * {Phaser.Pointer} The Phaser.Pointer object that caused the event. + * @property {Phaser.Signal} onDragStop */ onDragStop: null, /** - * @property {Phaser.Signal} onAnimationStart - This signal is dispatched when the parent has an animation that is played. + * This signal is dispatched if the Game Object has the AnimationManager component, + * and an Animation has been played. + * You can also listen to `Animation.onStart` rather than via the Game Objects events. + * It is sent two arguments: + * {any} The Game Object that received the event. + * {Phaser.Animation} The Phaser.Animation that was started. + * @property {Phaser.Signal} onAnimationStart */ onAnimationStart: null, /** - * @property {Phaser.Signal} onAnimationComplete - This signal is dispatched when the parent has an animation that finishes playing. + * This signal is dispatched if the Game Object has the AnimationManager component, + * and an Animation has been stopped (via `animation.stop()` and the `dispatchComplete` argument has been set. + * You can also listen to `Animation.onComplete` rather than via the Game Objects events. + * It is sent two arguments: + * {any} The Game Object that received the event. + * {Phaser.Animation} The Phaser.Animation that was stopped. + * @property {Phaser.Signal} onAnimationComplete */ onAnimationComplete: null, /** - * @property {Phaser.Signal} onAnimationLoop - This signal is dispatched when the parent has an animation that loops playback. + * This signal is dispatched if the Game Object has the AnimationManager component, + * and an Animation has looped playback. + * You can also listen to `Animation.onLoop` rather than via the Game Objects events. + * It is sent two arguments: + * {any} The Game Object that received the event. + * {Phaser.Animation} The Phaser.Animation that looped. + * @property {Phaser.Signal} onAnimationLoop */ onAnimationLoop: null @@ -23878,6 +24338,10 @@ Phaser.Component.InputEnabled.prototype = { * Note that Input related events are dispatched from `this.events`, i.e.: `events.onInputDown`. * * If you set this property to false it will stop the Input Handler from processing any more input events. + * + * If you want to _temporarily_ disable input for a Game Object, then it's better to set + * `input.enabled = false`, as it won't reset any of the Input Handlers internal properties. + * You can then toggle this back on as needed. * * @property {boolean} inputEnabled */ @@ -26031,7 +26495,7 @@ Phaser.Sprite = function (game, x, y, key, frame) { */ this.physicsType = Phaser.SPRITE; - PIXI.Sprite.call(this, PIXI.TextureCache['__default']); + PIXI.Sprite.call(this, Phaser.Cache.DEFAULT); Phaser.Component.Core.init.call(this, game, x, y, key, frame); @@ -26133,7 +26597,7 @@ Phaser.Image = function (game, x, y, key, frame) { */ this.type = Phaser.IMAGE; - PIXI.Sprite.call(this, PIXI.TextureCache['__default']); + PIXI.Sprite.call(this, Phaser.Cache.DEFAULT); Phaser.Component.Core.init.call(this, game, x, y, key, frame); @@ -26838,11 +27302,13 @@ Phaser.SpriteBatch.prototype.constructor = Phaser.SpriteBatch; * @param {string} key - Internal Phaser reference key for the BitmapData. * @param {number} [width=256] - The width of the BitmapData in pixels. If undefined or zero it's set to a default value. * @param {number} [height=256] - The height of the BitmapData in pixels. If undefined or zero it's set to a default value. +* @param {boolean} [skipPool=false] - When this BitmapData generates its internal canvas to use for rendering, it will get the canvas from the CanvasPool if false, or create its own if true. */ -Phaser.BitmapData = function (game, key, width, height) { +Phaser.BitmapData = function (game, key, width, height, skipPool) { if (width === undefined || width === 0) { width = 256; } if (height === undefined || height === 0) { height = 256; } + if (skipPool === undefined) { skipPool = false; } /** * @property {Phaser.Game} game - A reference to the currently running game. @@ -26868,7 +27334,7 @@ Phaser.BitmapData = function (game, key, width, height) { * @property {HTMLCanvasElement} canvas - The canvas to which this BitmapData draws. * @default */ - this.canvas = PIXI.CanvasPool.create(this, width, height); + this.canvas = Phaser.Canvas.create(this, width, height, null, skipPool); /** * @property {CanvasRenderingContext2D} context - The 2d context of the canvas. @@ -28370,7 +28836,13 @@ Phaser.BitmapData.prototype = { /** * Draws the given Phaser.Sprite, Phaser.Image or Phaser.Text to this BitmapData at the coordinates specified. * You can use the optional width and height values to 'stretch' the sprite as it is drawn. This uses drawImage stretching, not scaling. - * When drawing it will take into account the Sprites rotation, scale and alpha values. + * + * The children will be drawn at their `x` and `y` world space coordinates. If this is outside the bounds of the BitmapData they won't be visible. + * When drawing it will take into account the rotation, scale, scaleMode, alpha and tint values. + * + * Note: You should ensure that at least 1 full update has taken place before calling this, + * otherwise the objects are likely to render incorrectly, if at all. + * You can trigger an update yourself by calling `stage.updateTransform()` before calling `draw`. * * @method Phaser.BitmapData#draw * @param {Phaser.Sprite|Phaser.Image|Phaser.Text|Phaser.RenderTexture} source - The Sprite, Image or Text object to draw onto this BitmapData. @@ -28401,7 +28873,7 @@ Phaser.BitmapData.prototype = { * * Note: You should ensure that at least 1 full update has taken place before calling this, * otherwise the objects are likely to render incorrectly, if at all. - * You can trigger an update yourself by calling `stage.updateTransform()` before calling `drawGroup`. + * You can trigger an update yourself by calling `stage.updateTransform()` before calling `drawGroup`. * * @method Phaser.BitmapData#drawGroup * @param {Phaser.Group} group - The Group to draw onto this BitmapData. Can also be Phaser.World. @@ -29455,6 +29927,7 @@ PIXI.Graphics.prototype.lineTo = function(x, y) this.currentPath.shape.points.push(x, y); this.dirty = true; + this.updateLocalBounds(); return this; }; @@ -29509,6 +29982,7 @@ PIXI.Graphics.prototype.quadraticCurveTo = function(cpX, cpY, toX, toY) } this.dirty = true; + this.updateLocalBounds(); return this; }; @@ -29567,6 +30041,7 @@ PIXI.Graphics.prototype.bezierCurveTo = function(cpX, cpY, cpX2, cpY2, toX, toY) } this.dirty = true; + this.updateLocalBounds(); return this; }; @@ -29636,6 +30111,7 @@ PIXI.Graphics.prototype.arcTo = function(x1, y1, x2, y2, radius) } this.dirty = true; + this.updateLocalBounds(); return this; }; @@ -29721,6 +30197,7 @@ PIXI.Graphics.prototype.arc = function(cx, cy, radius, startAngle, endAngle, ant } this.dirty = true; + this.updateLocalBounds(); return this; }; @@ -29882,6 +30359,8 @@ PIXI.Graphics.prototype.clear = function() this.clearDirty = true; this.graphicsData = []; + this.updateLocalBounds(); + return this; }; @@ -29916,8 +30395,6 @@ PIXI.Graphics.prototype.generateTexture = function(resolution, scaleMode, paddin canvasBuffer.context.translate(-bounds.x, -bounds.y); - // Call here - PIXI.CanvasGraphics.renderGraphics(this, canvasBuffer.context); return texture; @@ -30429,8 +30906,11 @@ PIXI.Graphics.prototype.drawShape = function(shape) } this.dirty = true; + + this.updateLocalBounds(); return data; + }; /** @@ -32616,7 +33096,29 @@ PIXI.CanvasGraphics.updateGraphicsTint = function(graphics) */ /** -* Creates a new `Graphics` object. +* A Graphics object is a way to draw primitives to your game. Primitives include forms of geometry, such as Rectangles, +* Circles and Polygons. They also include lines, arcs and curves. When you initially create a Graphics object it will +* be empty. To 'draw' to it you first specify a lineStyle or fillStyle (or both), and then draw a shape. For example: +* +* ``` +* graphics.beginFill(0xff0000); +* graphics.drawCircle(50, 50, 100); +* graphics.endFill(); +* ``` +* +* This will draw a circle shape to the Graphics object, with a diameter of 100, located at x: 50, y: 50. +* +* When a Graphics object is rendered it will render differently based on if the game is running under Canvas or +* WebGL. Under Canvas it will use the HTML Canvas context drawing operations to draw the path. Under WebGL the +* graphics data is decomposed into polygons. Both of these are expensive processes, especially with complex shapes. +* +* If your Graphics object doesn't change much (or at all) once you've drawn your shape to it, then you will help +* performance by calling `Graphics.generateTexture`. This will 'bake' the Graphics object into a Texture, and return it. +* You can then use this Texture for Sprites or other display objects. If your Graphics object updates frequently then +* you should avoid doing this, as it will constantly generate new textures, which will consume memory. +* +* As you can tell, Graphics objects are a bit of a trade-off. While they are extremely useful, you need to be careful +* in their complexity and quantity of them in your game. * * @class Phaser.Graphics * @constructor @@ -34231,18 +34733,34 @@ Phaser.Text.prototype.componentsToFont = function (components) { }; /** - * The text to be displayed by this Text object. - * Use a \n to insert a carriage return and split the text. - * The text will be rendered with any style currently set. - * - * @method Phaser.Text#setText - * @param {string} [text] - The text to be displayed. Set to an empty string to clear text that is already present. - * @return {Phaser.Text} This Text instance. - */ -Phaser.Text.prototype.setText = function (text) { +* The text to be displayed by this Text object. +* Use a \n to insert a carriage return and split the text. +* The text will be rendered with any style currently set. +* +* Use the optional `immediate` argument if you need the Text display to update immediately. +* +* If not it will re-create the texture of this Text object during the next time the render +* loop is called. +* +* @method Phaser.Text#setText +* @param {string} [text] - The text to be displayed. Set to an empty string to clear text that is already present. +* @param {boolean} [immediate=false] - Update the texture used by this Text object immediately (true) or automatically during the next render loop (false). +* @return {Phaser.Text} This Text instance. +*/ +Phaser.Text.prototype.setText = function (text, immediate) { + + if (immediate === undefined) { immediate = false; } this.text = text.toString() || ''; - this.dirty = true; + + if (immediate) + { + this.updateText(); + } + else + { + this.dirty = true; + } return this; @@ -35253,7 +35771,7 @@ Object.defineProperty(Phaser.Text.prototype, 'height', { Phaser.Text.fontPropertiesCache = {}; -Phaser.Text.fontPropertiesCanvas = PIXI.CanvasPool.create(Phaser.Text.fontPropertiesCanvas); +Phaser.Text.fontPropertiesCanvas = document.createElement('canvas'); Phaser.Text.fontPropertiesContext = Phaser.Text.fontPropertiesCanvas.getContext('2d'); /** @@ -36631,7 +37149,7 @@ Phaser.Rope = function (game, x, y, key, frame, points) { */ this.type = Phaser.ROPE; - PIXI.Rope.call(this, PIXI.TextureCache['__default'], this.points); + PIXI.Rope.call(this, Phaser.Cache.DEFAULT, this.points); Phaser.Component.Core.init.call(this, game, x, y, key, frame); @@ -38406,14 +38924,7 @@ Phaser.Canvas = { width = width || 256; height = height || 256; - if (skipPool === undefined) - { - var canvas = PIXI.CanvasPool.create(parent, width, height); - } - else - { - var canvas = document.createElement('canvas'); - } + var canvas = (skipPool) ? document.createElement('canvas') : PIXI.CanvasPool.create(parent, width, height); if (typeof id === 'string' && id !== '') { @@ -39006,7 +39517,9 @@ Phaser.Math = { * @return {number} n mod 1 */ shear: function (n) { + return n % 1; + }, /** @@ -39017,8 +39530,8 @@ Phaser.Math = { * @method Phaser.Math#snapTo * @param {number} input - The value to snap. * @param {number} gap - The interval gap of the grid. - * @param {number} [start] - Optional starting offset for gap. - * @return {number} + * @param {number} [start=0] - Optional starting offset for gap. + * @return {number} The snapped value. */ snapTo: function (input, gap, start) { @@ -39044,8 +39557,8 @@ Phaser.Math = { * @method Phaser.Math#snapToFloor * @param {number} input - The value to snap. * @param {number} gap - The interval gap of the grid. - * @param {number} [start] - Optional starting offset for gap. - * @return {number} + * @param {number} [start=0] - Optional starting offset for gap. + * @return {number} The snapped value. */ snapToFloor: function (input, gap, start) { @@ -39071,8 +39584,8 @@ Phaser.Math = { * @method Phaser.Math#snapToCeil * @param {number} input - The value to snap. * @param {number} gap - The interval gap of the grid. - * @param {number} [start] - Optional starting offset for gap. - * @return {number} + * @param {number} [start=0] - Optional starting offset for gap. + * @return {number} The snapped value. */ snapToCeil: function (input, gap, start) { @@ -39120,9 +39633,9 @@ Phaser.Math = { * * @method Phaser.Math#roundTo * @param {number} value - The value to round. - * @param {number} place - The place to round to. - * @param {number} base - The base to round in... default is 10 for decimal. - * @return {number} + * @param {number} [place=0] - The place to round to. + * @param {number} [base=10] - The base to round in. Default is 10 for decimal. + * @return {number} The rounded value. */ roundTo: function (value, place, base) { @@ -39136,11 +39649,14 @@ Phaser.Math = { }, /** + * Floors to some place comparative to a `base`, default is 10 for decimal place. + * The `place` is represented by the power applied to `base` to get that place. + * * @method Phaser.Math#floorTo * @param {number} value - The value to round. - * @param {number} place - The place to round to. - * @param {number} base - The base to round in... default is 10 for decimal. - * @return {number} + * @param {number} [place=0] - The place to round to. + * @param {number} [base=10] - The base to round in. Default is 10 for decimal. + * @return {number} The rounded value. */ floorTo: function (value, place, base) { @@ -39154,11 +39670,14 @@ Phaser.Math = { }, /** + * Ceils to some place comparative to a `base`, default is 10 for decimal place. + * The `place` is represented by the power applied to `base` to get that place. + * * @method Phaser.Math#ceilTo * @param {number} value - The value to round. - * @param {number} place - The place to round to. - * @param {number} base - The base to round in... default is 10 for decimal. - * @return {number} + * @param {number} [place=0] - The place to round to. + * @param {number} [base=10] - The base to round in. Default is 10 for decimal. + * @return {number} The rounded value. */ ceilTo: function (value, place, base) { @@ -39173,42 +39692,51 @@ Phaser.Math = { /** * Find the angle of a segment from (x1, y1) -> (x2, y2). + * * @method Phaser.Math#angleBetween - * @param {number} x1 - * @param {number} y1 - * @param {number} x2 - * @param {number} y2 + * @param {number} x1 - The x coordinate of the first value. + * @param {number} y1 - The y coordinate of the first value. + * @param {number} x2 - The x coordinate of the second value. + * @param {number} y2 - The y coordinate of the second value. * @return {number} The angle, in radians. */ angleBetween: function (x1, y1, x2, y2) { + return Math.atan2(y2 - y1, x2 - x1); + }, /** * Find the angle of a segment from (x1, y1) -> (x2, y2). - * Note that the difference between this method and Math.angleBetween is that this assumes the y coordinate travels + * + * The difference between this method and Math.angleBetween is that this assumes the y coordinate travels * down the screen. * * @method Phaser.Math#angleBetweenY - * @param {number} x1 - * @param {number} y1 - * @param {number} x2 - * @param {number} y2 + * @param {number} x1 - The x coordinate of the first value. + * @param {number} y1 - The y coordinate of the first value. + * @param {number} x2 - The x coordinate of the second value. + * @param {number} y2 - The y coordinate of the second value. * @return {number} The angle, in radians. */ angleBetweenY: function (x1, y1, x2, y2) { + return Math.atan2(x2 - x1, y2 - y1); + }, /** * Find the angle of a segment from (point1.x, point1.y) -> (point2.x, point2.y). + * * @method Phaser.Math#angleBetweenPoints - * @param {Phaser.Point} point1 - * @param {Phaser.Point} point2 - * @return {number} The angle, in radians. + * @param {Phaser.Point} point1 - The first point. + * @param {Phaser.Point} point2 - The second point. + * @return {number} The angle between the two points, in radians. */ angleBetweenPoints: function (point1, point2) { + return Math.atan2(point2.y - point1.y, point2.x - point1.x); + }, /** @@ -39219,24 +39747,28 @@ Phaser.Math = { * @return {number} The angle, in radians. */ angleBetweenPointsY: function (point1, point2) { + return Math.atan2(point2.x - point1.x, point2.y - point1.y); + }, /** * Reverses an angle. * @method Phaser.Math#reverseAngle * @param {number} angleRad - The angle to reverse, in radians. - * @return {number} Returns the reverse angle, in radians. + * @return {number} The reverse angle, in radians. */ reverseAngle: function (angleRad) { + return this.normalizeAngle(angleRad + Math.PI, true); + }, /** * Normalizes an angle to the [0,2pi) range. * @method Phaser.Math#normalizeAngle * @param {number} angleRad - The angle to normalize, in radians. - * @return {number} Returns the angle, fit within the [0,2pi] range, in radians. + * @return {number} The angle, fit within the [0,2pi] range, in radians. */ normalizeAngle: function (angleRad) { @@ -39252,10 +39784,12 @@ Phaser.Math = { * @param {number} value - The value to add the amount to. * @param {number} amount - The amount to add to the value. * @param {number} max - The maximum the value is allowed to be. - * @return {number} + * @return {number} The new value. */ maxAdd: function (value, amount, max) { + return Math.min(value + amount, max); + }, /** @@ -39268,7 +39802,9 @@ Phaser.Math = { * @return {number} The new value. */ minSub: function (value, amount, min) { + return Math.max(value - amount, min); + }, /** @@ -39333,8 +39869,10 @@ Phaser.Math = { * @return {boolean} True if the given number is odd. False if the given number is even. */ isOdd: function (n) { + // Does not work with extremely large values return !!(n & 1); + }, /** @@ -39345,8 +39883,10 @@ Phaser.Math = { * @return {boolean} True if the given number is even. False if the given number is odd. */ isEven: function (n) { + // Does not work with extremely large values return !(n & 1); + }, /** @@ -39583,11 +40123,13 @@ Phaser.Math = { * @method Phaser.Math#linear * @param {number} p0 * @param {number} p1 - * @param {number} t + * @param {number} t - A value between 0 and 1. * @return {number} */ linear: function (p0, p1, t) { + return (p1 - p0) * t + p0; + }, /** @@ -39598,7 +40140,9 @@ Phaser.Math = { * @return {number} */ bernstein: function (n, i) { + return this.factorial(n) / this.factorial(i) / this.factorial(n - i); + }, /** @@ -39606,7 +40150,7 @@ Phaser.Math = { * @param {number} value - the number you want to evaluate * @return {number} */ - factorial : function( value ){ + factorial: function (value) { if (value === 0) { @@ -39645,15 +40189,17 @@ Phaser.Math = { }, /** - * The (absolute) difference between two values. + * The absolute difference between two values. * * @method Phaser.Math#difference - * @param {number} a - * @param {number} b - * @return {number} + * @param {number} a - The first value to check. + * @param {number} b - The second value to check. + * @return {number} The absolute difference between the two values. */ difference: function (a, b) { + return Math.abs(a - b); + }, /** @@ -39804,7 +40350,9 @@ Phaser.Math = { * @return {number} */ clampBottom: function (x, a) { + return x < a ? a : x; + }, /** @@ -39818,22 +40366,26 @@ Phaser.Math = { * @see {@link Phaser.Math.fuzzyEqual} */ within: function (a, b, tolerance) { + return (Math.abs(a - b) <= tolerance); + }, /** * Linear mapping from range to range * * @method Phaser.Math#mapLinear - * @param {number} x the value to map - * @param {number} a1 first endpoint of the range - * @param {number} a2 final endpoint of the range - * @param {number} b1 first endpoint of the range - * @param {number} b2 final endpoint of the range + * @param {number} x - The value to map + * @param {number} a1 - First endpoint of the range + * @param {number} a2 - Final endpoint of the range + * @param {number} b1 - First endpoint of the range + * @param {number} b2 - Final endpoint of the range * @return {number} */ mapLinear: function (x, a1, a2, b1, b2) { + return b1 + ( x - a1 ) * ( b2 - b1 ) / ( a2 - a1 ); + }, /** @@ -39865,8 +40417,11 @@ Phaser.Math = { * @return {float} A value between 0 and 1. */ smootherstep: function (x, min, max) { + x = Math.max(0, Math.min(1, (x - min) / (max - min))); + return x * x * x * (x * (x * 6 - 15) + 10); + }, /** @@ -39879,7 +40434,9 @@ Phaser.Math = { * @return {integer} An integer in {-1, 0, 1} */ sign: function (x) { + return ( x < 0 ) ? -1 : ( ( x > 0 ) ? 1 : 0 ); + }, /** @@ -45116,7 +45673,7 @@ Phaser.AnimationManager.prototype = { refreshFrame: function () { // TODO - this.sprite.setTexture(PIXI.TextureCache[this.currentFrame.uuid]); + // this.sprite.setTexture(PIXI.TextureCache[this.currentFrame.uuid]); }, @@ -45591,7 +46148,7 @@ Phaser.Animation.prototype = { { for (var i = 0; i < this._frames.length; i++) { - if (this._frames[i] === frameIndex) + if (this._frames[i] === frameId) { frameIndex = i; } @@ -47213,6 +47770,20 @@ Phaser.Cache.SHADER = 14; */ Phaser.Cache.RENDER_TEXTURE = 15; +/** +* The default image used for a texture when no other is specified. +* @constant +* @type {PIXI.Texture} +*/ +Phaser.Cache.DEFAULT = null; + +/** +* The default image used for a texture when the source image is missing. +* @constant +* @type {PIXI.Texture} +*/ +Phaser.Cache.MISSING = null; + Phaser.Cache.prototype = { ////////////////// @@ -47267,6 +47838,15 @@ Phaser.Cache.prototype = { this._resolveURL(url, img); + if (key === '__default') + { + Phaser.Cache.DEFAULT = new PIXI.Texture(img.base); + } + else if (key === '__missing') + { + Phaser.Cache.MISSING = new PIXI.Texture(img.base); + } + return img; }, @@ -47291,7 +47871,8 @@ Phaser.Cache.prototype = { // Because we don't want to invalidate the sprite batch for an invisible texture obj.base.skipRender = true; - PIXI.TextureCache['__default'] = new PIXI.Texture(obj.base); + // Make it easily available within the rest of Phaser / Pixi + Phaser.Cache.DEFAULT = new PIXI.Texture(obj.base); }, @@ -47312,7 +47893,8 @@ Phaser.Cache.prototype = { var obj = this.addImage('__missing', null, img); - PIXI.TextureCache['__missing'] = new PIXI.Texture(obj.base); + // Make it easily available within the rest of Phaser / Pixi + Phaser.Cache.MISSING = new PIXI.Texture(obj.base); }, @@ -48562,71 +49144,6 @@ Phaser.Cache.prototype = { }, - /** - * Gets a PIXI.Texture by key from the PIXI.TextureCache. - * - * If the texture isn't found in the cache, then it searches the Phaser Image Cache and - * creates a new PIXI.Texture object which is then returned. - * - * @method Phaser.Cache#getPixiTexture - * @deprecated - * @param {string} key - Asset key of the Texture to retrieve from the Cache. - * @return {PIXI.Texture} The Texture object. - */ - getPixiTexture: function (key) { - - if (PIXI.TextureCache[key]) - { - return PIXI.TextureCache[key]; - } - else - { - var base = this.getPixiBaseTexture(key); - - if (base) - { - return new PIXI.Texture(base); - } - else - { - return null; - } - } - - }, - - /** - * Gets a PIXI.BaseTexture by key from the PIXI.BaseTextureCache. - * - * If the texture isn't found in the cache, then it searches the Phaser Image Cache. - * - * @method Phaser.Cache#getPixiBaseTexture - * @deprecated - * @param {string} key - Asset key of the BaseTexture to retrieve from the Cache. - * @return {PIXI.BaseTexture} The BaseTexture object or null if not found. - */ - getPixiBaseTexture: function (key) { - - if (PIXI.BaseTextureCache[key]) - { - return PIXI.BaseTextureCache[key]; - } - else - { - var img = this.getItem(key, Phaser.Cache.IMAGE, 'getPixiBaseTexture'); - - if (img !== null) - { - return img.base; - } - else - { - return null; - } - } - - }, - /** * Get a cached object by the URL. * This only returns a value if you set Cache.autoResolveURL to `true` *before* starting the preload of any assets. @@ -48704,20 +49221,20 @@ Phaser.Cache.prototype = { * * You can optionally elect to destroy it as well. This calls BaseTexture.destroy on it. * - * Note that this only removes it from the Phaser and PIXI Caches. If you still have references to the data elsewhere + * Note that this only removes it from the Phaser Cache. If you still have references to the data elsewhere * then it will persist in memory. * * @method Phaser.Cache#removeImage * @param {string} key - Key of the asset you want to remove. - * @param {boolean} [removeFromPixi=true] - Should this image also be destroyed? Removing it from the PIXI.BaseTextureCache? + * @param {boolean} [destroyBaseTexture=true] - Should the BaseTexture behind this image also be destroyed? */ - removeImage: function (key, removeFromPixi) { + removeImage: function (key, destroyBaseTexture) { - if (removeFromPixi === undefined) { removeFromPixi = true; } + if (destroyBaseTexture === undefined) { destroyBaseTexture = true; } var img = this.getImage(key, true); - if (removeFromPixi && img.base) + if (destroyBaseTexture && img.base) { img.base.destroy(); } @@ -49131,7 +49648,19 @@ Phaser.Loader = function (game) { this.path = ''; /** - * This event is dispatched when the loading process starts: before the first file has been requested, + * Used to map the application mime-types to to the Accept header in XHR requests. + * If you don't require these mappings, or they cause problems on your server, then + * remove them from the headers object and the XHR request will not try to use them. + * @property {object} headers + * @default + */ + this.headers = { + json: "application/json", + xml: "application/xml" + }; + + /** + * This event is dispatched when the loading process starts: before the first file has been requested, * but after all the initial packs have been loaded. * * @property {Phaser.Signal} onLoadStart @@ -51346,6 +51875,11 @@ Phaser.Loader.prototype = { xhr.open("GET", url, true); xhr.responseType = type; + if (this.headers[file.type]) + { + xhr.setRequestHeader("Accept", this.headers[file.type]); + } + onerror = onerror || this.fileError; var _this = this; @@ -52406,11 +52940,6 @@ Phaser.Sound = function (game, key, volume, loop, connect) { */ this.loop = loop; - /** - * @property {number} volume - The sound or sound marker volume. A value between 0 (silence) and 1 (full volume). - */ - this.volume = volume; - /** * @property {object} markers - The sound markers. */ @@ -52915,7 +53444,7 @@ Phaser.Sound.prototype = { { this._sound.disconnect(this.externalNode); } - else + else if (this.gainNode) { this._sound.disconnect(this.gainNode); } @@ -53253,7 +53782,7 @@ Phaser.Sound.prototype = { { this._sound.disconnect(this.externalNode); } - else + else if (this.gainNode) { this._sound.disconnect(this.gainNode); } @@ -56798,10 +57327,15 @@ Object.defineProperty(Phaser.ScaleManager.prototype, "isGameLandscape", { /** * A collection of methods for displaying debug information about game objects. +* +* If your game is running in Canvas mode, then you should invoke all of the Debug methods from +* your games `render` function. This is because they are drawn directly onto the game canvas +* itself, so if you call any debug methods outside of `render` they are likely to be overwritten +* by the game itself. +* * If your game is running in WebGL then Debug will create a Sprite that is placed at the top of the Stage display list and bind a canvas texture * to it, which must be uploaded every frame. Be advised: this is very expensive, especially in browsers like Firefox. So please only enable Debug * in WebGL mode if you really need it (or your desktop can cope with it well) and disable it for production! -* If your game is using a Canvas renderer then the debug information is literally drawn on the top of the active game canvas and no Sprite is used. * * @class Phaser.Utils.Debug * @constructor @@ -56896,7 +57430,7 @@ Phaser.Utils.Debug.prototype = { } else { - this.bmd = this.game.make.bitmapData(this.game.width, this.game.height); + this.bmd = new Phaser.BitmapData(this.game, '__DEBUG', this.game.width, this.game.height, true); this.sprite = this.game.make.image(0, 0, this.bmd); this.game.stage.addChild(this.sprite); @@ -58585,13 +59119,63 @@ Phaser.ArrayUtils = { }, + /** + * Moves the element from the end of the array to the start, shifting all items in the process. + * The "rotation" happens to the right. + * + * Before: `[ A, B, C, D, E, F ]` + * After: `[ F, A, B, C, D, E ]` + * + * See also Phaser.ArrayUtils.rotateLeft. + * + * @method Phaser.ArrayUtils.rotateRight + * @param {any[]} array - The array to rotate. The array is modified. + * @return {any} The shifted value. + */ + rotateRight: function (array) { + + var s = array.pop(); + array.unshift(s); + + return s; + + }, + /** * Moves the element from the start of the array to the end, shifting all items in the process. * The "rotation" happens to the left. * + * Before: `[ A, B, C, D, E, F ]` + * After: `[ B, C, D, E, F, A ]` + * + * See also Phaser.ArrayUtils.rotateRight + * + * @method Phaser.ArrayUtils.rotateLeft + * @param {any[]} array - The array to rotate. The array is modified. + * @return {any} The rotated value. + */ + rotateLeft: function (array) { + + var s = array.shift(); + array.push(s); + + return s; + + }, + + /** + * Moves the element from the start of the array to the end, shifting all items in the process. + * The "rotation" happens to the left. + * + * Before: `[ A, B, C, D, E, F ]` + * After: `[ B, C, D, E, F, A ]` + * + * See also Phaser.ArrayUtils.rotateRight + * * @method Phaser.ArrayUtils.rotate - * @param {any[]} array - The array to shift/rotate. The array is modified. - * @return {any} The shifted value. + * @deprecated Please use Phaser.ArrayUtils.rotate instead. + * @param {any[]} array - The array to rotate. The array is modified. + * @return {any} The rotated value. */ rotate: function (array) { @@ -59665,6 +60249,23 @@ Phaser.Color = { }, + /** + * Converts RGBA components to a 32 bit integer in AABBGGRR format. + * + * @method Phaser.Color.toABGR + * @static + * @param {number} r - The red color component, in the range 0 - 255. + * @param {number} g - The green color component, in the range 0 - 255. + * @param {number} b - The blue color component, in the range 0 - 255. + * @param {number} a - The alpha color component, in the range 0 - 255. + * @return {number} A RGBA-packed 32 bit integer + */ + toABGR: function (r, g, b, a) { + + return ((a << 24) | (b << 16) | (g << 8) | r) >>> 0; + + }, + /** * Converts an RGB color value to HSL (hue, saturation and lightness). * Conversion forumla from http://en.wikipedia.org/wiki/HSL_color_space. @@ -62000,67 +62601,70 @@ Phaser.Physics.Arcade.prototype = { return; } - var body; - if (this.skipQuadTree || sprite.body.skipQuadTree) { + var bounds; + for (var i = 0; i < group.hash.length; i++) { + var object1 = group.hash[i]; + // Skip duff entries - we can't check a non-existent sprite or one with no body - if (!group.hash[i] || !group.hash[i].exists || !group.hash[i].body) + if (!object1 || !object1.exists || !object1.body) { continue; } - body = group.hash[i].body; + // Inject the Body bounds data into the bounds object + bounds = object1.body.getBounds(bounds); // Skip items either side of the sprite if (this.sortDirection === Phaser.Physics.Arcade.LEFT_RIGHT) { - if (sprite.body.right < body.x) + if (sprite.body.right < bounds.x) { break; } - else if (body.right < sprite.body.x) + else if (bounds.right < sprite.body.x) { continue; } } else if (this.sortDirection === Phaser.Physics.Arcade.RIGHT_LEFT) { - if (sprite.body.x > body.right) + if (sprite.body.x > bounds.right) { break; } - else if (body.x > sprite.body.right) + else if (bounds.x > sprite.body.right) { continue; } } else if (this.sortDirection === Phaser.Physics.Arcade.TOP_BOTTOM) { - if (sprite.body.bottom < body.y) + if (sprite.body.bottom < bounds.y) { break; } - else if (body.bottom < sprite.body.y) + else if (bounds.bottom < sprite.body.y) { continue; } } else if (this.sortDirection === Phaser.Physics.Arcade.BOTTOM_TOP) { - if (sprite.body.y > body.bottom) + if (sprite.body.y > bounds.bottom) { break; } - else if (body.y > sprite.body.bottom) + else if (bounds.y > sprite.body.bottom) { continue; } } - this.collideSpriteVsSprite(sprite, group.hash[i], collideCallback, processCallback, callbackContext, overlapOnly); + this.collideSpriteVsSprite(sprite, object1, collideCallback, processCallback, callbackContext, overlapOnly); } } else @@ -62112,65 +62716,73 @@ Phaser.Physics.Arcade.prototype = { for (var i = 0; i < group.hash.length; i++) { + var bounds1; + var object1 = group.hash[i]; + // Skip duff entries - we can't check a non-existent sprite or one with no body - if (!group.hash[i] || !group.hash[i].exists || !group.hash[i].body) + if (!object1 || !object1.exists || !object1.body) { continue; } - var object1 = group.hash[i]; + // Inject the Body bounds data into the bounds1 object + bounds1 = object1.body.getBounds(bounds1); for (var j = i + 1; j < group.hash.length; j++) { + var bounds2; + var object2 = group.hash[j]; + // Skip duff entries - we can't check a non-existent sprite or one with no body - if (!group.hash[j] || !group.hash[j].exists || !group.hash[j].body) + if (!object2 || !object2.exists || !object2.body) { continue; } - var object2 = group.hash[j]; + // Inject the Body bounds data into the bounds2 object + bounds2 = object2.body.getBounds(bounds2); // Skip items either side of the sprite if (this.sortDirection === Phaser.Physics.Arcade.LEFT_RIGHT) { - if (object1.body.right < object2.body.x) + if (bounds1.right < bounds2.x) { break; } - else if (object2.body.right < object1.body.x) + else if (bounds2.right < bounds1.x) { continue; } } else if (this.sortDirection === Phaser.Physics.Arcade.RIGHT_LEFT) { - if (object1.body.x > object2.body.right) + if (bounds1.x > bounds2.right) { continue; } - else if (object2.body.x > object1.body.right) + else if (bounds2.x > bounds1.right) { break; } } else if (this.sortDirection === Phaser.Physics.Arcade.TOP_BOTTOM) { - if (object1.body.bottom < object2.body.y) + if (bounds1.bottom < bounds2.y) { continue; } - else if (object2.body.bottom < object1.body.y) + else if (bounds2.bottom < bounds1.y) { break; } } else if (this.sortDirection === Phaser.Physics.Arcade.BOTTOM_TOP) { - if (object1.body.y > object2.body.bottom) + if (bounds1.y > bounds2.bottom) { continue; } - else if (object2.body.y > object1.body.bottom) + else if (bounds2.y > object1.body.bottom) { break; } @@ -62243,6 +62855,42 @@ Phaser.Physics.Arcade.prototype = { return false; } + // Circle vs. Circle quick bail out + if (body1.isCircle && body2.isCircle) + { + return this.separateCircle(body1, body2, overlapOnly); + } + + // We define the behavior of bodies in a collision circle and rectangle + // If a collision occurs in the corner points of the rectangle, the body behave like circles + + // Either body1 or body2 is a circle + if (body1.isCircle !== body2.isCircle) + { + var bodyRect = (body1.isCircle) ? body2 : body1; + var bodyCircle = (body1.isCircle) ? body1 : body2; + + var rect = { + x: bodyRect.x, + y: bodyRect.y, + right: bodyRect.right, + bottom: bodyRect.bottom + }; + + var circle = { + x: bodyCircle.x + bodyCircle.radius, + y: bodyCircle.y + bodyCircle.radius + }; + + if (circle.y < rect.y || circle.y > rect.bottom) + { + if (circle.x < rect.x || circle.x > rect.right) + { + return this.separateCircle(body1, body2, overlapOnly); + } + } + } + var resultX = false; var resultY = false; @@ -62268,7 +62916,37 @@ Phaser.Physics.Arcade.prototype = { } } - return (resultX || resultY); + var result = (resultX || resultY); + + if (result) + { + if (overlapOnly) + { + if (body1.onOverlap) + { + body1.onOverlap.dispatch(body1.sprite, body2.sprite); + } + + if (body2.onOverlap) + { + body2.onOverlap.dispatch(body2.sprite, body1.sprite); + } + } + else + { + if (body1.onCollide) + { + body1.onCollide.dispatch(body1.sprite, body2.sprite); + } + + if (body2.onCollide) + { + body2.onCollide.dispatch(body2.sprite, body1.sprite); + } + } + } + + return result; }, @@ -62286,26 +62964,253 @@ Phaser.Physics.Arcade.prototype = { { return false; } - - // Rect vs. Rect - if (body1.right <= body2.position.x) + + if (body1.isCircle) { - return false; + if (body2.isCircle) + { + // Circle vs. Circle + return Phaser.Math.distance(body1.center.x, body1.center.y, body2.center.x, body2.center.y) <= (body1.radius + body2.radius); + } + else + { + // Circle vs. Rect + return this.circleBodyIntersects(body1, body2); + } + } + else + { + if (body2.isCircle) + { + // Rect vs. Circle + return this.circleBodyIntersects(body2, body1); + } + else + { + // Rect vs. Rect + if (body1.right <= body2.position.x) + { + return false; + } + + if (body1.bottom <= body2.position.y) + { + return false; + } + + if (body1.position.x >= body2.right) + { + return false; + } + + if (body1.position.y >= body2.bottom) + { + return false; + } + + return true; + } } - if (body1.bottom <= body2.position.y) + }, + + /** + * Checks to see if a circular Body intersects with a Rectangular Body. + * + * @method Phaser.Physics.Arcade#circleBodyIntersects + * @param {Phaser.Physics.Arcade.Body} circle - The Body with `isCircle` set. + * @param {Phaser.Physics.Arcade.Body} body - The Body with `isCircle` not set (i.e. uses Rectangle shape) + * @return {boolean} Returns true if the bodies intersect, otherwise false. + */ + circleBodyIntersects: function (circle, body) { + + var x = Phaser.Math.clamp(circle.center.x, body.left, body.right); + var y = Phaser.Math.clamp(circle.center.y, body.top, body.bottom); + + var dx = (circle.center.x - x) * (circle.center.x - x); + var dy = (circle.center.y - y) * (circle.center.y - y); + + return (dx + dy) <= (circle.radius * circle.radius); + + }, + + /** + * The core separation function to separate two circular physics bodies. + * + * @method Phaser.Physics.Arcade#separateCircle + * @private + * @param {Phaser.Physics.Arcade.Body} body1 - The first Body to separate. Must have `Body.isCircle` true and a positive `radius`. + * @param {Phaser.Physics.Arcade.Body} body2 - The second Body to separate. Must have `Body.isCircle` true and a positive `radius`. + * @param {boolean} overlapOnly - If true the bodies will only have their overlap data set, no separation or exchange of velocity will take place. + * @return {boolean} Returns true if the bodies were separated or overlap, otherwise false. + */ + separateCircle: function (body1, body2, overlapOnly) { + + // Set the bounding box overlap values + this.getOverlapX(body1, body2); + this.getOverlapY(body1, body2); + + var angleCollision = this.angleBetweenCenters(body1, body2); + + var overlap = 0; + + if (body1.isCircle !== body2.isCircle) { - return false; + var rect = { + x: (body2.isCircle) ? body1.position.x : body2.position.x, + y: (body2.isCircle) ? body1.position.y : body2.position.y, + right: (body2.isCircle) ? body1.right : body2.right, + bottom: (body2.isCircle) ? body1.bottom : body2.bottom + }; + + var circle = { + x: (body1.isCircle) ? (body1.position.x + body1.radius) : (body2.position.x + body2.radius), + y: (body1.isCircle) ? (body1.position.y + body1.radius) : (body2.position.y + body2.radius), + radius: (body1.isCircle) ? body1.radius : body2.radius + }; + + if (circle.y < rect.y) + { + if (circle.x < rect.x) + { + overlap = Phaser.Math.distance(circle.x, circle.y, rect.x, rect.y) - circle.radius; + } + else if (circle.x > rect.right) + { + overlap = Phaser.Math.distance(circle.x, circle.y, rect.right, rect.y) - circle.radius; + } + } + else if (circle.y > rect.bottom) + { + if (circle.x < rect.x) + { + overlap = Phaser.Math.distance(circle.x, circle.y, rect.x, rect.bottom) - circle.radius; + } + else if (circle.x > rect.right) + { + overlap = Phaser.Math.distance(circle.x, circle.y, rect.right, rect.bottom) - circle.radius; + } + } + + overlap *= -1; + } + else + { + overlap = (body1.radius + body2.radius) - Phaser.Math.distance(body1.center.x, body1.center.y, body2.center.x, body2.center.y); } - if (body1.position.x >= body2.right) + // Can't separate two immovable bodies, or a body with its own custom separation logic + if (overlapOnly || overlap === 0 || (body1.immovable && body2.immovable) || body1.customSeparateX || body2.customSeparateX) { - return false; + if (overlap !== 0) + { + if (body1.onOverlap) + { + body1.onOverlap.dispatch(body1.sprite, body2.sprite); + } + + if (body2.onOverlap) + { + body2.onOverlap.dispatch(body2.sprite, body1.sprite); + } + } + + // return true if there was some overlap, otherwise false + return (overlap !== 0); } - if (body1.position.y >= body2.bottom) + // Transform the velocity vector to the coordinate system oriented along the direction of impact. + // This is done to eliminate the vertical component of the velocity + var v1 = { + x: body1.velocity.x * Math.cos(angleCollision) + body1.velocity.y * Math.sin(angleCollision), + y: body1.velocity.x * Math.sin(angleCollision) - body1.velocity.y * Math.cos(angleCollision) + }; + + var v2 = { + x: body2.velocity.x * Math.cos(angleCollision) + body2.velocity.y * Math.sin(angleCollision), + y: body2.velocity.x * Math.sin(angleCollision) - body2.velocity.y * Math.cos(angleCollision) + }; + + // We expect the new velocity after impact + var tempVel1 = ((body1.mass - body2.mass) * v1.x + 2 * body2.mass * v2.x) / (body1.mass + body2.mass); + var tempVel2 = (2 * body1.mass * v1.x + (body2.mass - body1.mass) * v2.x) / (body1.mass + body2.mass); + + // We convert the vector to the original coordinate system and multiplied by factor of rebound + if (!body1.immovable) { - return false; + body1.velocity.x = (tempVel1 * Math.cos(angleCollision) - v1.y * Math.sin(angleCollision)) * body1.bounce.x; + body1.velocity.y = (v1.y * Math.cos(angleCollision) + tempVel1 * Math.sin(angleCollision)) * body1.bounce.y; + } + + if (!body2.immovable) + { + body2.velocity.x = (tempVel2 * Math.cos(angleCollision) - v2.y * Math.sin(angleCollision)) * body2.bounce.x; + body2.velocity.y = (v2.y * Math.cos(angleCollision) + tempVel2 * Math.sin(angleCollision)) * body2.bounce.y; + } + + // When the collision angle is almost perpendicular to the total initial velocity vector + // (collision on a tangent) vector direction can be determined incorrectly. + // This code fixes the problem + + if (Math.abs(angleCollision) < Math.PI / 2) + { + if ((body1.velocity.x > 0) && !body1.immovable && (body2.velocity.x > body1.velocity.x)) + { + body1.velocity.x *= -1; + } + else if ((body2.velocity.x < 0) && !body2.immovable && (body1.velocity.x < body2.velocity.x)) + { + body2.velocity.x *= -1; + } + else if ((body1.velocity.y > 0) && !body1.immovable && (body2.velocity.y > body1.velocity.y)) + { + body1.velocity.y *= -1; + } + else if ((body2.velocity.y < 0) && !body2.immovable && (body1.velocity.y < body2.velocity.y)) + { + body2.velocity.y *= -1; + } + } + else if (Math.abs(angleCollision) > Math.PI / 2) + { + if ((body1.velocity.x < 0) && !body1.immovable && (body2.velocity.x < body1.velocity.x)) + { + body1.velocity.x *= -1; + } + else if ((body2.velocity.x > 0) && !body2.immovable && (body1.velocity.x > body2.velocity.x)) + { + body2.velocity.x *= -1; + } + else if ((body1.velocity.y < 0) && !body1.immovable && (body2.velocity.y < body1.velocity.y)) + { + body1.velocity.y *= -1; + } + else if ((body2.velocity.y > 0) && !body2.immovable && (body1.velocity.x > body2.velocity.y)) + { + body2.velocity.y *= -1; + } + } + + if (!body1.immovable) + { + body1.x += (body1.velocity.x * this.game.time.physicsElapsed) - overlap * Math.cos(angleCollision); + body1.y += (body1.velocity.y * this.game.time.physicsElapsed) - overlap * Math.sin(angleCollision); + } + + if (!body2.immovable) + { + body2.x += (body2.velocity.x * this.game.time.physicsElapsed) + overlap * Math.cos(angleCollision); + body2.y += (body2.velocity.y * this.game.time.physicsElapsed) + overlap * Math.sin(angleCollision); + } + + if (body1.onCollide) + { + body1.onCollide.dispatch(body1.sprite, body2.sprite); + } + + if (body2.onCollide) + { + body2.onCollide.dispatch(body2.sprite, body1.sprite); } return true; @@ -63005,6 +63910,23 @@ Phaser.Physics.Arcade.prototype = { }, + /** + * Find the angle in radians between centers of two display objects (like Sprites). + * + * @method Phaser.Physics.Arcade#angleBetweenCenters + * @param {any} source - The Display Object to test from. + * @param {any} target - The Display Object to test to. + * @return {number} The angle in radians between the source and target display objects. + */ + angleBetweenCenters: function (source, target) { + + var dx = target.center.x - source.center.x; + var dy = target.center.y - source.center.y; + + return Math.atan2(dy, dx); + + }, + /** * Find the angle in radians between a display object (like a Sprite) and the given x/y coordinate. * @@ -63117,6 +64039,25 @@ Phaser.Physics.Arcade.Body = function (sprite) { */ this.enable = true; + /** + * If `true` this Body is using circular collision detection. If `false` it is using rectangular. + * Use `Body.setCircle` to control the collision shape this Body uses. + * @property {boolean} isCircle + * @default + * @readOnly + */ + this.isCircle = false; + + /** + * The radius of the circular collision shape this Body is using if Body.setCircle has been enabled. + * If you wish to change the radius then call `setCircle` again with the new value. + * If you wish to stop the Body using a circle then call `setCircle` with a radius of zero (or undefined). + * @property {number} radius + * @default + * @readOnly + */ + this.radius = 0; + /** * @property {Phaser.Point} offset - The offset of the Physics Body from the Sprite x/y position. */ @@ -63210,12 +64151,12 @@ Phaser.Physics.Arcade.Body = function (sprite) { * @property {Phaser.Point} newVelocity - The new velocity. Calculated during the Body.preUpdate and applied to its position. * @readonly */ - this.newVelocity = new Phaser.Point(0, 0); + this.newVelocity = new Phaser.Point(); /** * @property {Phaser.Point} deltaMax - The Sprite position is updated based on the delta x/y values. You can set a cap on those (both +-) using deltaMax. */ - this.deltaMax = new Phaser.Point(0, 0); + this.deltaMax = new Phaser.Point(); /** * @property {Phaser.Point} acceleration - The acceleration is the rate of change of the velocity. Measured in pixels per second squared. @@ -63236,7 +64177,7 @@ Phaser.Physics.Arcade.Body = function (sprite) { /** * @property {Phaser.Point} gravity - A local gravity applied to this Body. If non-zero this over rides any world gravity, unless Body.allowGravity is set to false. */ - this.gravity = new Phaser.Point(0, 0); + this.gravity = new Phaser.Point(); /** * @property {Phaser.Point} bounce - The elasticity of the Body when colliding. bounce.x/y = 1 means full rebound, bounce.x/y = 0.5 means 50% rebound velocity. @@ -63251,6 +64192,58 @@ Phaser.Physics.Arcade.Body = function (sprite) { */ this.worldBounce = null; + /** + * A Signal that is dispatched when this Body collides with the world bounds. + * Due to the potentially high volume of signals this could create it is disabled by default. + * To use this feature set this property to a Phaser.Signal: `sprite.body.onWorldBounds = new Phaser.Signal()` + * and it will be called when a collision happens, passing five arguments: + * `onWorldBounds(sprite, up, down, left, right)` + * where the Sprite is a reference to the Sprite that owns this Body, and the other arguments are booleans + * indicating on which side of the world the Body collided. + * @property {Phaser.Signal} onWorldBounds + */ + this.onWorldBounds = null; + + /** + * A Signal that is dispatched when this Body collides with another Body. + * + * You still need to call `game.physics.arcade.collide` in your `update` method in order + * for this signal to be dispatched. + * + * Usually you'd pass a callback to the `collide` method, but this signal provides for + * a different level of notification. + * + * Due to the potentially high volume of signals this could create it is disabled by default. + * + * To use this feature set this property to a Phaser.Signal: `sprite.body.onCollide = new Phaser.Signal()` + * and it will be called when a collision happens, passing two arguments: the sprites which collided. + * The first sprite in the argument is always the owner of this Body. + * + * If two Bodies with this Signal set collide, both will dispatch the Signal. + * @property {Phaser.Signal} onCollide + */ + this.onCollide = null; + + /** + * A Signal that is dispatched when this Body overlaps with another Body. + * + * You still need to call `game.physics.arcade.overlap` in your `update` method in order + * for this signal to be dispatched. + * + * Usually you'd pass a callback to the `overlap` method, but this signal provides for + * a different level of notification. + * + * Due to the potentially high volume of signals this could create it is disabled by default. + * + * To use this feature set this property to a Phaser.Signal: `sprite.body.onOverlap = new Phaser.Signal()` + * and it will be called when a collision happens, passing two arguments: the sprites which collided. + * The first sprite in the argument is always the owner of this Body. + * + * If two Bodies with this Signal set collide, both will dispatch the Signal. + * @property {Phaser.Signal} onOverlap + */ + this.onOverlap = null; + /** * @property {Phaser.Point} maxVelocity - The maximum velocity in pixels per second sq. that the Body can reach. * @default @@ -63353,6 +64346,12 @@ Phaser.Physics.Arcade.Body = function (sprite) { */ this.overlapY = 0; + /** + * If `Body.isCircle` is true, and this body collides with another circular body, the amount of overlap is stored here. + * @property {number} overlapR - The amount of overlap during the collision. + */ + this.overlapR = 0; + /** * If a body is overlapping with another body, but neither of them are moving (maybe they spawned on-top of each other?) this is set to true. * @property {boolean} embedded - Body embed value. @@ -63626,7 +64625,10 @@ Phaser.Physics.Arcade.Body.prototype = { if (this.collideWorldBounds) { - this.checkWorldBounds(); + if (this.checkWorldBounds() && this.onWorldBounds) + { + this.onWorldBounds.dispatch(this.sprite, this.blocked.up, this.blocked.down, this.blocked.left, this.blocked.right); + } } } @@ -63797,6 +64799,7 @@ Phaser.Physics.Arcade.Body.prototype = { * * @method Phaser.Physics.Arcade.Body#checkWorldBounds * @protected + * @return {boolean} True if the Body collided with the world bounds, otherwise false. */ checkWorldBounds: function () { @@ -63807,31 +64810,71 @@ Phaser.Physics.Arcade.Body.prototype = { var bx = (this.worldBounce) ? -this.worldBounce.x : -this.bounce.x; var by = (this.worldBounce) ? -this.worldBounce.y : -this.bounce.y; - if (pos.x < bounds.x && check.left) + if (this.isCircle) { - pos.x = bounds.x; - this.velocity.x *= bx; - this.blocked.left = true; + var bodyBounds = { + x: this.center.x - this.radius, + y: this.center.y - this.radius, + right: this.center.x + this.radius, + bottom: this.center.y + this.radius + }; + + if (bodyBounds.x < bounds.x && check.left) + { + pos.x = bounds.x - this.halfWidth + this.radius; + this.velocity.x *= bx; + this.blocked.left = true; + } + else if (bodyBounds.right > bounds.right && check.right) + { + pos.x = bounds.right - this.halfWidth - this.radius; + this.velocity.x *= bx; + this.blocked.right = true; + } + + if (bodyBounds.y < bounds.y && check.up) + { + pos.y = bounds.y - this.halfHeight + this.radius; + this.velocity.y *= by; + this.blocked.up = true; + } + else if (bodyBounds.bottom > bounds.bottom && check.down) + { + pos.y = bounds.bottom - this.halfHeight - this.radius; + this.velocity.y *= by; + this.blocked.down = true; + } } - else if (this.right > bounds.right && check.right) + else { - pos.x = bounds.right - this.width; - this.velocity.x *= bx; - this.blocked.right = true; + if (pos.x < bounds.x && check.left) + { + pos.x = bounds.x; + this.velocity.x *= bx; + this.blocked.left = true; + } + else if (this.right > bounds.right && check.right) + { + pos.x = bounds.right - this.width; + this.velocity.x *= bx; + this.blocked.right = true; + } + + if (pos.y < bounds.y && check.up) + { + pos.y = bounds.y; + this.velocity.y *= by; + this.blocked.up = true; + } + else if (this.bottom > bounds.bottom && check.down) + { + pos.y = bounds.bottom - this.height; + this.velocity.y *= by; + this.blocked.down = true; + } } - if (pos.y < bounds.y && check.up) - { - pos.y = bounds.y; - this.velocity.y *= by; - this.blocked.up = true; - } - else if (this.bottom > bounds.bottom && check.down) - { - pos.y = bounds.bottom - this.height; - this.velocity.y *= by; - this.blocked.down = true; - } + return (this.blocked.up || this.blocked.down || this.blocked.left || this.blocked.right); }, @@ -64011,6 +65054,9 @@ Phaser.Physics.Arcade.Body.prototype = { * 24 is the horizontal offset of the Body from the top-left of the Sprites texture, and 34 * is the vertical offset. * + * Calling `setSize` on a Body that has already had `setCircle` will reset all of the Circle + * properties, making this Body rectangular again. + * * @method Phaser.Physics.Arcade.Body#setSize * @param {number} width - The width of the Body. * @param {number} height - The height of the Body. @@ -64032,6 +65078,55 @@ Phaser.Physics.Arcade.Body.prototype = { this.center.setTo(this.position.x + this.halfWidth, this.position.y + this.halfHeight); + this.isCircle = false; + this.radius = 0; + + }, + + /** + * Sets this Body as using a circle, of the given radius, for all collision detection instead of a rectangle. + * The radius is given in pixels and is the distance from the center of the circle to the edge. + * + * You can also control the x and y offset, which is the position of the Body relative to the top-left of the Sprite. + * + * To change a Body back to being rectangular again call `Body.setSize`. + * + * Note: Circular collision only happens with other Arcade Physics bodies, it does not + * work against tile maps, where rectangular collision is the only method supported. + * + * @method Phaser.Physics.Arcade.Body#setCircle + * @param {number} [radius] - The radius of the Body in pixels. Pass a value of zero / undefined, to stop the Body using a circle for collision. + * @param {number} [offsetX] - The X offset of the Body from the Sprite position. + * @param {number} [offsetY] - The Y offset of the Body from the Sprite position. + */ + setCircle: function (radius, offsetX, offsetY) { + + if (offsetX === undefined) { offsetX = this.offset.x; } + if (offsetY === undefined) { offsetY = this.offset.y; } + + if (radius > 0) + { + this.isCircle = true; + this.radius = radius; + + this.sourceWidth = radius * 2; + this.sourceHeight = radius * 2; + + this.width = this.sourceWidth * this._sx; + this.height = this.sourceHeight * this._sy; + + this.halfWidth = Math.floor(this.width / 2); + this.halfHeight = Math.floor(this.height / 2); + + this.offset.setTo(offsetX, offsetY); + + this.center.setTo(this.position.x + this.halfWidth, this.position.y + this.halfHeight); + } + else + { + this.isCircle = false; + } + }, /** @@ -64069,6 +65164,36 @@ Phaser.Physics.Arcade.Body.prototype = { }, + /** + * Returns the bounds of this physics body. + * + * Only used internally by the World collision methods. + * + * @method Phaser.Physics.Arcade.Body#getBounds + * @param {object} obj - The object in which to set the bounds values. + * @return {object} The object that was given to this method. + */ + getBounds: function (obj) { + + if (this.isCircle) + { + obj.x = this.center.x - this.radius; + obj.y = this.center.y - this.radius; + obj.right = this.center.x + this.radius; + obj.bottom = this.center.y + this.radius; + } + else + { + obj.x = this.x; + obj.y = this.y; + obj.right = this.right; + obj.bottom = this.bottom; + } + + return obj; + + }, + /** * Tests if a world point lies within this Body. * @@ -64079,7 +65204,7 @@ Phaser.Physics.Arcade.Body.prototype = { */ hitTest: function (x, y) { - return Phaser.Rectangle.contains(this, x, y); + return (this.isCircle) ? Phaser.Circle.contains(this, x, y) : Phaser.Rectangle.contains(this, x, y); }, @@ -64313,15 +65438,33 @@ Phaser.Physics.Arcade.Body.render = function (context, body, color, filled) { color = color || 'rgba(0,255,0,0.4)'; - if (filled) + context.fillStyle = color; + context.strokeStyle = color; + + if (body.isCircle) { - context.fillStyle = color; - context.fillRect(body.position.x - body.game.camera.x, body.position.y - body.game.camera.y, body.width, body.height); + context.beginPath(); + context.arc(body.center.x - body.game.camera.x, body.center.y - body.game.camera.y, body.radius, 0, 2 * Math.PI); + + if (filled) + { + context.fill(); + } + else + { + context.stroke(); + } } else { - context.strokeStyle = color; - context.strokeRect(body.position.x - body.game.camera.x, body.position.y - body.game.camera.y, body.width, body.height); + if (filled) + { + context.fillRect(body.position.x - body.game.camera.x, body.position.y - body.game.camera.y, body.width, body.height); + } + else + { + context.strokeRect(body.position.x - body.game.camera.x, body.position.y - body.game.camera.y, body.width, body.height); + } } }; @@ -65477,13 +66620,13 @@ Phaser.Physics.P2.prototype = { this.walls[wall] = new p2.Body({ mass: 0, position: [ this.pxmi(x), this.pxmi(y) ], angle: angle }); this.walls[wall].addShape(new p2.Plane()); - if (setCollisionGroup) - { - this.walls[wall].shapes[0].collisionGroup = this.boundsCollisionGroup.mask; - } - this.world.addBody(this.walls[wall]); } + + if (setCollisionGroup) + { + this.walls[wall].shapes[0].collisionGroup = this.boundsCollisionGroup.mask; + } } else { @@ -65632,6 +66775,9 @@ Phaser.Physics.P2.prototype = { this._toRemove = []; this.boundsCollidesWith = []; + // Remove the world bounds + this.walls = { left: null, right: null, top: null, bottom: null }; + }, /** @@ -73519,8 +74665,6 @@ Phaser.TilemapLayer.prototype.renderRegion = function (scrollX, scrollY, left, t // xmax/ymax - remaining cells to render on column/row var tx, ty, x, y, xmax, ymax; - context.fillStyle = this.tileColor; - for (y = normStartY, ymax = bottom - top, ty = baseY; ymax >= 0; y++, ymax--, ty += th) @@ -74022,6 +75166,33 @@ Phaser.TilemapParser = { */ INSERT_NULL: false, + /** + * A tiled flag that resides within the 32 bit of the object gid and + * indicates whether the tiled/object is flipped horizontally. + * + * @constant + * @type {number} + */ + FLIPPED_HORIZONTALLY_FLAG: 0x80000000, + + /** + * A tiled flag that resides within the 31 bit of the object gid and + * indicates whether the tiled/object is flipped vertically. + * + * @constant + * @type {number} + */ + FLIPPED_VERTICALLY_FLAG: 0x40000000, + + /** + * A tiled flag that resides within the 30 bit of the object gid and + * indicates whether the tiled/object is flipped diagonally. + * + * @constant + * @type {number} + */ + FLIPPED_DIAGONALLY_FLAG: 0x20000000, + /** * Parse tilemap data from the cache and creates a Tilemap object. * @@ -74502,6 +75673,8 @@ Phaser.TilemapParser = { // Object Tiles if (curo.objects[v].gid) { + var self = this; + var object = { gid: curo.objects[v].gid, @@ -74509,9 +75682,13 @@ Phaser.TilemapParser = { type: curo.objects[v].hasOwnProperty("type") ? curo.objects[v].type : "", x: curo.objects[v].x, y: curo.objects[v].y, + width: curo.objects[v].width, + height: curo.objects[v].height, visible: curo.objects[v].visible, - properties: curo.objects[v].properties - + properties: curo.objects[v].properties, + horizontallyFlipped: curo.objects[v].gid & self.FLIPPED_HORIZONTALLY_FLAG, + verticallyFlipped: curo.objects[v].gid & self.FLIPPED_VERTICALLY_FLAG, + diagonallyFlipped: curo.objects[v].gid & self.FLIPPED_DIAGONALLY_FLAG }; if (curo.objects[v].rotation) @@ -76301,7 +77478,7 @@ Phaser.Weapon = function (game, parent) { this.fireFrom = new Phaser.Rectangle(0, 0, 1, 1); /** - * The angle at which the bullets are fired. This can be a const such as Phaser.ANGLE_UP + * The angle at which the bullets are fired. This can be a const such as Phaser.ANGLE_UP * or it can be any number from 0 to 360 inclusive, where 0 degrees is to the right. * @type {integer} */ @@ -76379,14 +77556,14 @@ Phaser.Weapon = function (game, parent) { /** * This is a variance added to the speed of Bullets when they are fired. - * If bullets have a `bulletSpeed` value of 200, and a `bulletSpeedVariance` of 50 + * If bullets have a `bulletSpeed` value of 200, and a `bulletSpeedVariance` of 50 * then the actual speed of the Bullets will be between 150 and 250 pixels per second. * @type {number} */ this.bulletSpeedVariance = 0; /** - * If you've set `bulletKillType` to `Phaser.Weapon.KILL_LIFESPAN` this controls the amount + * If you've set `bulletKillType` to `Phaser.Weapon.KILL_LIFESPAN` this controls the amount * of lifespan the Bullets have set on launch. The value is given in milliseconds. * When a Bullet hits its lifespan limit it will be automatically killed. * @type {number} @@ -76394,7 +77571,7 @@ Phaser.Weapon = function (game, parent) { this.bulletLifespan = 0; /** - * If you've set `bulletKillType` to `Phaser.Weapon.KILL_DISTANCE` this controls the distance + * If you've set `bulletKillType` to `Phaser.Weapon.KILL_DISTANCE` this controls the distance * the Bullet can travel before it is automatically killed. The distance is given in pixels. * @type {number} */ @@ -76468,7 +77645,7 @@ Phaser.Weapon = function (game, parent) { * This Rectangle defines the bounds that are used when determining if a Bullet should be killed or not. * It's used in combination with `Weapon.bulletKillType` when that is set to either `Phaser.Weapon.KILL_WEAPON_BOUNDS` * or `Phaser.Weapon.KILL_STATIC_BOUNDS`. If you are not using either of these kill types then the bounds are ignored. - * If you are tracking a Sprite or Point then the bounds are centered on that object every frame. + * If you are tracking a Sprite or Point then the bounds are centered on that object every frame. * * @type {Phaser.Rectangle} */ @@ -76507,8 +77684,8 @@ Phaser.Weapon = function (game, parent) { /** * The onFire Signal is dispatched each time `Weapon.fire` is called, and a Bullet is - * _successfully_ launched. The callback is set two arguments: a reference to the Weapon that fired the bullet, - * and a reference to the bullet sprite itself. + * _successfully_ launched. The callback is set two arguments: a reference to the bullet sprite itself, + * and a reference to the Weapon that fired the bullet. * * @type {Phaser.Signal} */ @@ -76596,7 +77773,7 @@ Phaser.Weapon.KILL_NEVER = 0; Phaser.Weapon.KILL_LIFESPAN = 1; /** -* A `bulletKillType` constant that automatically kills the bullets after they +* A `bulletKillType` constant that automatically kills the bullets after they * exceed the `bulletDistance` from their original firing position. * @constant * @type {integer} @@ -76647,7 +77824,7 @@ Phaser.Weapon.KILL_STATIC_BOUNDS = 6; * so be careful it doesn't grow too large. * * You can either set the texture key and frame here, or via the `Weapon.bulletKey` and `Weapon.bulletFrame` -* properties. You can also animate bullets, or set them to use random frames. All Bullets belonging to a +* properties. You can also animate bullets, or set them to use random frames. All Bullets belonging to a * single Weapon instance must share the same texture key however. * * @method Phaser.Weapon#createBullets @@ -76675,7 +77852,7 @@ Phaser.Weapon.prototype.createBullets = function (quantity, key, frame, group) { this.autoExpandBulletsGroup = true; quantity = 1; } - + this.bullets.createMultiple(quantity, key, frame); this.bullets.setAll('data.bulletManager', this); @@ -76893,7 +78070,7 @@ Phaser.Weapon.prototype.trackPointer = function (pointer, offsetX, offsetY) { * Attempts to fire a single Bullet. If there are no more bullets available in the pool, and the pool cannot be extended, * then this method returns `false`. It will also return false if not enough time has expired since the last time * the Weapon was fired, as defined in the `Weapon.fireRate` property. -* +* * Otherwise the first available bullet is selected and launched. * * The arguments are all optional, but allow you to control both where the bullet is launched from, and aimed at. @@ -77181,12 +78358,12 @@ Phaser.Weapon.prototype.setBulletBodyOffset = function (width, height, offsetX, /** * Sets the texture frames that the bullets can use when being launched. -* +* * This is intended for use when you've got numeric based frames, such as those loaded via a Sprite Sheet. -* +* * It works by calling `Phaser.ArrayUtils.numberArray` internally, using the min and max values * provided. Then it sets the frame index to be zero. -* +* * You can optionally set the cycle and random booleans, to allow bullets to cycle through the frames * when they're fired, or pick one at random. * @@ -77311,10 +78488,10 @@ Object.defineProperty(Phaser.Weapon.prototype, "bulletClass", { * * * `Phaser.Weapon.KILL_LIFESPAN` * The bullets are automatically killed when their `bulletLifespan` amount expires. -* +* * * `Phaser.Weapon.KILL_DISTANCE` * The bullets are automatically killed when they exceed `bulletDistance` pixels away from their original launch position. -* +* * * `Phaser.Weapon.KILL_WEAPON_BOUNDS` * The bullets are automatically killed when they no longer intersect with the `Weapon.bounds` rectangle. * @@ -77789,7 +78966,7 @@ Phaser.Video = function (game, key, url) { } else { - this.baseTexture = new PIXI.BaseTexture(PIXI.TextureCache['__default'].baseTexture.source); + this.baseTexture = new PIXI.BaseTexture(Phaser.Cache.DEFAULT.baseTexture.source); this.baseTexture.forceLoaded(this.width, this.height); } diff --git a/build/custom/phaser-split.map b/build/custom/phaser-split.map index ea23b811c..34c64d6d5 100644 --- a/build/custom/phaser-split.map +++ b/build/custom/phaser-split.map @@ -1 +1 @@ -{"version":3,"file":"phaser-split.min.js","sources":["phaser-split.js"],"names":["WheelEventProxy","scaleFactor","deltaMode","this","_scaleFactor","_deltaMode","originalEvent","root","Phaser","VERSION","GAMES","AUTO","CANVAS","WEBGL","HEADLESS","NONE","LEFT","RIGHT","UP","DOWN","SPRITE","BUTTON","IMAGE","GRAPHICS","TEXT","TILESPRITE","BITMAPTEXT","GROUP","RENDERTEXTURE","TILEMAP","TILEMAPLAYER","EMITTER","POLYGON","BITMAPDATA","CANVAS_FILTER","WEBGL_FILTER","ELLIPSE","SPRITEBATCH","RETROFONT","POINTER","ROPE","CIRCLE","RECTANGLE","LINE","MATRIX","POINT","ROUNDEDRECTANGLE","CREATURE","VIDEO","PENDING_ATLAS","HORIZONTAL","VERTICAL","LANDSCAPE","PORTRAIT","ANGLE_UP","ANGLE_DOWN","ANGLE_LEFT","ANGLE_RIGHT","ANGLE_NORTH_EAST","ANGLE_NORTH_WEST","ANGLE_SOUTH_EAST","ANGLE_SOUTH_WEST","TOP_LEFT","TOP_CENTER","TOP_RIGHT","LEFT_TOP","LEFT_CENTER","LEFT_BOTTOM","CENTER","RIGHT_TOP","RIGHT_CENTER","RIGHT_BOTTOM","BOTTOM_LEFT","BOTTOM_CENTER","BOTTOM_RIGHT","blendModes","NORMAL","ADD","MULTIPLY","SCREEN","OVERLAY","DARKEN","LIGHTEN","COLOR_DODGE","COLOR_BURN","HARD_LIGHT","SOFT_LIGHT","DIFFERENCE","EXCLUSION","HUE","SATURATION","COLOR","LUMINOSITY","scaleModes","DEFAULT","LINEAR","NEAREST","PIXI","Math","trunc","x","ceil","floor","Function","prototype","bind","slice","Array","thisArg","bound","args","boundArgs","concat","call","arguments","target","apply","TypeError","F","proto","isArray","arg","Object","toString","forEach","fun","t","len","length","i","window","Uint32Array","CheapArray","type","constructor","console","log","assert","warn","Utils","getProperty","obj","prop","parts","split","last","pop","l","current","setProperty","value","chanceRoll","chance","undefined","random","randomChoice","choice1","choice2","parseDimension","size","dimension","f","px","substr","parseInt","innerWidth","innerHeight","pad","str","dir","padlen","join","right","left","isPlainObject","nodeType","hasOwnProperty","e","extend","options","name","src","copy","copyIsArray","clone","deep","mixinPrototype","mixin","replace","mixinKeys","keys","key","get","set","defineProperty","from","to","o","childNodes","cloneNode","Circle","y","diameter","_diameter","_radius","circumference","PI","out","Point","u","r","cos","sin","radius","getBounds","Rectangle","setTo","copyFrom","source","copyTo","dest","distance","round","output","contains","circumferencePoint","angle","asDegrees","offset","dx","dy","offsetPoint","point","a","top","bottom","equals","b","intersects","degToRad","intersectsRectangle","c","cx","abs","halfWidth","xDist","cy","halfHeight","yDist","xCornerDist","yCornerDist","xCornerDistSq","yCornerDistSq","maxCornerDistSq","Ellipse","width","height","p","sqrt","normx","normy","Line","x1","y1","x2","y2","start","end","fromSprite","startSprite","endSprite","useCenter","center","fromAngle","rotate","rotateAround","line","asSegment","result","intersectsPoints","reflect","midPoint","centerOn","tx","ty","add","pointOnLine","pointOnSegment","xMin","min","xMax","max","yMin","yMax","coordinatesOnLine","stepRate","results","sx","sy","err","push","e2","atan2","wrap","a1","a2","b1","b2","c1","c2","denom","uc","ua","ub","rect","bx1","by1","bx2","by2","normalAngle","Matrix","d","fromArray","array","matrix","toArray","transpose","Float32Array","pos","newPos","applyInverse","id","translate","scale","tx1","append","d1","identity","identityMatrix","invert","subtract","multiply","divide","clampX","clamp","clampY","radToDeg","getMagnitude","getMagnitudeSq","setMagnitude","magnitude","normalize","isZero","m","dot","cross","perp","rperp","normalRightHand","negative","multiplyAdd","s","interpolate","project","amt","projectUnit","centroid","points","Error","pointslength","parse","xProp","yProp","Polygon","area","_points","closed","toNumberArray","flatten","inside","j","ix","iy","jx","jy","y0","Number","MAX_VALUE","calculateArea","p1","p2","avgHeight","centerX","centerY","floorAll","ceilAll","inflate","resize","containsRect","intersection","intersectsRaw","tolerance","union","randomX","randomY","getPoint","position","empty","inflatePoint","containsRaw","rx","ry","rw","rh","containsPoint","volume","sameDimensions","aabb","NEGATIVE_INFINITY","POSITIVE_INFINITY","EmptyRectangle","RoundedRectangle","Camera","game","world","view","bounds","deadzone","visible","roundPx","atLimit","displayObject","totalInView","lerp","onShakeComplete","Signal","onFlashComplete","onFadeComplete","fx","_targetPosition","_edge","_position","_shake","intensity","duration","horizontal","vertical","shakeBounds","_fxDuration","_fxType","FOLLOW_LOCKON","FOLLOW_PLATFORMER","FOLLOW_TOPDOWN","FOLLOW_TOPDOWN_TIGHT","SHAKE_BOTH","SHAKE_HORIZONTAL","SHAKE_VERTICAL","ENABLE_FX","boot","camera","Graphics","stage","addChild","preUpdate","follow","style","lerpX","lerpY","helper","w","h","unfollow","focusOn","setPosition","focusOnXY","shake","force","direction","flash","color","clear","beginFill","drawRect","endFill","alpha","fade","update","updateFX","updateShake","checkBounds","time","elapsedMS","dispatch","rnd","frac","updateTarget","worldPosition","math","linear","setBoundsToWorld","vx","vw","vy","vh","setSize","reset","resetFX","State","make","cache","input","load","sound","state","tweens","particles","physics","init","preload","loadUpdate","loadRender","create","preRender","render","paused","resumed","pauseUpdate","shutdown","StateManager","pendingState","states","_pendingState","_clearWorld","_clearCache","_created","_args","onStateChange","onInitCallback","onPreloadCallback","onCreateCallback","onUpdateCallback","onRenderCallback","onResizeCallback","onPreRenderCallback","onLoadUpdateCallback","onLoadRenderCallback","onPausedCallback","onResumedCallback","onPauseUpdateCallback","onShutDownCallback","onPause","pause","onResume","resume","autoStart","newState","isBooted","remove","callbackContext","clearWorld","clearCache","checkState","splice","restart","dummy","previousStateKey","clearCurrentState","setCurrentState","totalQueuedFiles","totalQueuedPacks","loadComplete","removeAll","debug","destroy","link","unlink","_kickstart","getCurrentState","elapsedTime","renderType","context","save","setTransform","restore","_bindings","_prevParams","memorize","_shouldPropagate","active","_boundDispatch","validateListener","listener","fnName","_registerListener","isOnce","listenerContext","priority","binding","prevIndex","_indexOfListener","SignalBinding","_addBinding","execute","n","_priority","cur","_listener","has","addOnce","_destroy","getNumListeners","halt","bindings","paramsArr","forget","dispose","_this","signal","_isOnce","_signal","callCount","params","handlerReturn","detach","isBound","getListener","getSignal","Filter","uniforms","fragmentSrc","passes","shaders","dirty","padding","prevPoint","Date","resolution","mouse","date","getFullYear","getMonth","getDate","getHours","getMinutes","getSeconds","sampleRate","iChannel0","textureData","repeat","iChannel1","iChannel2","iChannel3","setResolution","pointer","toFixed","totalElapsedSeconds","addToWorld","anchorX","anchorY","image","anchor","filters","Plugin","parent","hasPreUpdate","hasUpdate","hasPostUpdate","hasRender","hasPostRender","postRender","PluginManager","plugins","_len","_i","plugin","postUpdate","Stage","DisplayObjectContainer","disableVisibilityChange","exists","worldTransform","currentRenderOrderID","_hiddenVar","_onChange","_bgColor","g","rgba","transparent","config","parseConfig","setBackgroundColor","DOM","getOffset","canvas","Canvas","setUserSelect","setTouchAction","checkVisibility","children","updateTransform","worldAlpha","document","webkitHidden","mozHidden","msHidden","hidden","event","visibilityChange","addEventListener","onblur","onfocus","onpagehide","onpageshow","device","cocoonJSApp","CocoonJS","App","onSuspended","onActivated","focusLoss","focusGain","gamePaused","gameResumed","Color","valueToColor","updateColor","removeEventListener","Group","addToStage","enableBody","physicsBodyType","Physics","ARCADE","z","physicsType","alive","ignoreDestroy","pendingDestroy","classType","Sprite","cursor","inputEnableChildren","onChildInputDown","onChildInputUp","onChildInputOver","onChildInputOut","enableBodyDebug","physicsSortDirection","onDestroy","cursorIndex","fixedToCamera","cameraOffset","hash","_sortProperty","RETURN_NONE","RETURN_TOTAL","RETURN_CHILD","SORT_ASCENDING","SORT_DESCENDING","child","silent","index","body","removeFromHash","addChildAt","updateZ","enable","addToHash","inputEnabled","events","onAddedToGroup$dispatch","addAt","indexOf","addMultiple","moveAll","getAt","getChildAt","frame","createMultiple","quantity","singleKey","singleFrame","align","rows","columns","cellWidth","cellHeight","alignIn","resetCursor","next","previous","swap","child1","child2","swapChildren","bringToTop","getIndex","sendToBack","moveUp","moveDown","xy","reverse","getByName","oldChild","newChild","removeChild","hasProperty","operation","checkProperty","checkAlive","checkVisible","setAll","setAllChildren","checkAll","addAll","property","amount","subAll","multiplyAll","divideAll","callAllExists","callback","existsValue","callbackFromArray","callAll","method","methodLength","contextLength","renderOrderID","filter","predicate","checkExists","ArraySet","forEachExists","iterate","forEachAlive","forEachDead","sort","order","ascendingSortHandler","descendingSortHandler","customSort","sortHandler","returnType","total","getFirstExists","createIfNull","resetChild","getFirstAlive","getFirstDead","loadTexture","getTop","getBottom","getClosestTo","object","tempDistance","getFurthestFrom","countLiving","countDead","getRandom","startIndex","ArrayUtils","getRandomItem","destroyPhase","onRemovedFromGroup$dispatch","removed","group","destroyTexture","removeBetween","endIndex","destroyChildren","soft","rotation","World","_definedSize","_width","_height","stateChange","setBounds","sprite","useBounds","_currentBounds","between","Game","renderer","antialias","physicsConfig","preserveDrawingBuffer","clearBeforeRender","isRunning","raf","net","Device","lockRender","stepping","pendingStep","stepCount","onBlur","onFocus","_paused","_codePaused","currentUpdateID","updatesThisFrame","_deltaTime","_lastCount","_spiraling","fpsProblemNotifier","forceSingleUpdate","_nextFpsNotification","enableDebug","RandomDataGenerator","now","whenReady","seed","ScaleManager","setUpRenderer","GameObjectFactory","GameObjectCreator","Cache","Loader","Time","TweenManager","Input","SoundManager","Particles","Create","Net","Debug","showDebugHeader","RequestAnimationFrame","stopFocus","focus","hideBanner","v","webAudio","chrome","webGL","CanvasRenderer","WebGLRenderer","contextLost","contextRestored","cocoonJS","screencanvas","smoothed","addToDOM","preventDefault","initContext","clearGLTextures","updateLogic","desiredFpsMult","updateRender","slowMotion","desiredFps","slowStep","elapsed","count","refresh","timeStep","enableStep","disableStep","step","stop","removeFromDOM","defaultRenderer","muteOnPause","setMute","cordova","iOS","unsetMute","hitCanvas","hitContext","moveCallbacks","customCandidateHandler","customCandidateHandlerContext","pollRate","enabled","multiInputOverride","MOUSE_TOUCH_COMBINE","speed","circle","maxPointers","tapRate","doubleTapRate","holdRate","justPressedRate","justReleasedRate","recordPointerHistory","recordRate","recordLimit","pointer1","pointer2","pointer3","pointer4","pointer5","pointer6","pointer7","pointer8","pointer9","pointer10","pointers","activePointer","mousePointer","keyboard","touch","mspointer","gamepad","resetLocked","onDown","onUp","onTap","onHold","minPriorityID","interactiveItems","_localPoint","_pollCounter","_oldPosition","_x","_y","MOUSE_OVERRIDES_TOUCH","TOUCH_OVERRIDES_MOUSE","MAX_POINTERS","Pointer","PointerMode","CURSOR","addPointer","Mouse","Touch","MSPointer","Keyboard","Gamepad","CanvasPool","getContext","_onClickTrampoline","onClickTrampoline","setInteractiveCandidateHandler","addMoveCallback","deleteMoveCallback","TOUCH","hard","resetSpeed","startPointer","countActivePointers","updatePointer","identifier","move","stopPointer","limit","getPointer","isActive","getPointerFromIdentifier","getPointerFromId","pointerId","getLocalPosition","wt","hitTest","localPoint","worldVisible","hitArea","TileSprite","texture","graphicsData","data","fill","shape","processClickTrampolines","mouseDownCallback","mouseUpCallback","mouseOutCallback","mouseOverCallback","mouseWheelCallback","capture","button","wheelDelta","locked","stopOnGameOut","pointerLock","_onMouseDown","_onMouseMove","_onMouseUp","_onMouseOut","_onMouseOver","_onMouseWheel","_wheelEvent","NO_BUTTON","LEFT_BUTTON","MIDDLE_BUTTON","RIGHT_BUTTON","BACK_BUTTON","FORWARD_BUTTON","WHEEL_UP","WHEEL_DOWN","android","onMouseDown","onMouseMove","onMouseUp","_onMouseUpGlobal","onMouseUpGlobal","_onMouseOutGlobal","onMouseOutGlobal","onMouseOut","onMouseOver","onMouseWheel","wheelEvent","mouseMoveCallback","withinGame","leftButton","rightButton","bindEvent","deltaY","requestPointerLock","element","mozRequestPointerLock","webkitRequestPointerLock","_pointerLockChange","pointerLockChange","pointerLockElement","mozPointerLockElement","webkitPointerLockElement","releasePointerLock","exitPointerLock","mozExitPointerLock","webkitExitPointerLock","_stubsGenerated","makeBinder","defineProperties","detail","deltaX","wheelDeltaX","deltaZ","pointerDownCallback","pointerMoveCallback","pointerUpCallback","_onMSPointerDown","_onMSPointerMove","_onMSPointerUp","_onMSPointerUpGlobal","_onMSPointerOut","_onMSPointerOver","onPointerDown","onPointerMove","onPointerUp","onPointerUpGlobal","onPointerOut","onPointerOver","pointerType","DeviceButton","buttonCode","isDown","isUp","timeDown","timeUp","repeats","altKey","shiftKey","ctrlKey","onFloat","padFloat","justPressed","justReleased","pointerMode","CONTACT","middleButton","backButton","forwardButton","eraserButton","ERASER_BUTTON","_holdSent","_history","_nextDrop","_stateReset","clientX","clientY","pageX","pageY","screenX","screenY","rawMovementX","rawMovementY","movementX","movementY","isMouse","previousTapTime","totalTouches","msSinceLastClick","targetObject","interactiveCandidates","positionDown","positionUp","_clickTrampolines","_trampolineTargetObject","resetButtons","processButtonsDown","buttons","processButtonsUp","updateButtons","down","toLowerCase","totalActivePointers","_touchedHandler","processInteractiveObjects","shift","fromClick","pollLocked","mozMovementX","webkitMovementX","mozMovementY","webkitMovementY","isDragged","highestRenderOrderID","highestInputPriorityID","candidateTarget","currentNode","first","checked","validForInput","checkPointerDown","checkPointerOver","priorityID","swapTarget","newTarget","_pointerOutHandler","_pointerOverHandler","leave","currentPointers","addClickTrampoline","callbackArgs","trampolines","trampoline","_releasedHandler","resetMovement","touchLockCallbacks","touchStartCallback","touchMoveCallback","touchEndCallback","touchEnterCallback","touchLeaveCallback","touchCancelCallback","_onTouchStart","_onTouchMove","_onTouchEnd","_onTouchEnter","_onTouchLeave","_onTouchCancel","onTouchStart","onTouchMove","onTouchEnd","onTouchEnter","onTouchLeave","onTouchCancel","consumeDocumentTouches","_documentTouchMove","addTouchLockCallback","onEnd","removeTouchLockCallback","cb","changedTouches","InputHandler","useHandCursor","_setHandCursor","allowHorizontalDrag","allowVerticalDrag","snapOffset","snapOnDrag","snapOnRelease","snapX","snapY","snapOffsetX","snapOffsetY","pixelPerfectOver","pixelPerfectClick","pixelPerfectAlpha","draggable","boundsRect","boundsSprite","scaleLayer","dragOffset","dragFromCenter","dragStopBlocksInputUp","dragStartPoint","dragDistanceThreshold","dragTimeThreshold","downPoint","snapPoint","_dragPoint","_dragPhase","_pendingDrag","_dragTimePass","_dragDistancePass","_wasEnabled","_tempPoint","_pointerData","camX","camY","isOver","isOut","timeOver","timeOut","downDuration","onAddedToGroup","addedToGroup","onRemovedFromGroup","removedFromGroup","flagged","highestID","highestRenderID","includePixelPerfect","ignoreChildInput","isPixelPerfect","pointerX","pointerY","pointerDown","pointerUp","pointerTimeDown","pointerTimeUp","pointerOver","pointerOut","pointerTimeOver","pointerTimeOut","pointerDragged","fastTest","worldScale","checkPixel","baseTexture","trim","crop","_dx","_dy","clearRect","drawImage","rgb","getImageData","startDrag","_draggedPointerID","updateDrag","sendEvent","onInputOver$dispatch","onInputOut$dispatch","onInputDown$dispatch","dragTimeElapsed","onInputUp$dispatch","stopDrag","fromStart","globalToLocalX","py","globalToLocalY","checkBoundsRect","checkBoundsSprite","onDragUpdate","justOver","delay","overDuration","justOut","enableDrag","lockCenter","pixelPerfect","alphaThreshold","disableDrag","onDragStart$dispatch","grid","boundsFluid","scaleFluidInversed","onDragStop$dispatch","setDragLock","allowHorizontal","allowVertical","enableSnap","onDrag","onRelease","disableSnap","offsetX","offsetY","_gamepadIndexMap","_rawPads","_active","_gamepadSupportAvailable","navigator","webkitGetGamepads","webkitGamepads","userAgent","getGamepads","_prevRawGamepadTypes","_prevTimestamps","onConnectCallback","onDisconnectCallback","onDownCallback","onUpCallback","onAxisCallback","onFloatCallback","_ongamepadconnected","_gamepaddisconnected","_gamepads","SinglePad","addCallbacks","callbacks","onConnect","onDisconnect","onAxis","_onGamepadConnected","onGamepadConnected","_onGamepadDisconnected","onGamepadDisconnected","newPad","connect","removedPad","disconnect","_pollGamepads","pad1","pollStatus","pad2","pad3","pad4","rawGamepads","gamepadsChanged","_rawPad","singlePad","validConnections","rawIndices","padIndices","connected","k","rawPad","setDeadZones","deadZone","BUTTON_0","BUTTON_1","BUTTON_2","BUTTON_3","BUTTON_4","BUTTON_5","BUTTON_6","BUTTON_7","BUTTON_8","BUTTON_9","BUTTON_10","BUTTON_11","BUTTON_12","BUTTON_13","BUTTON_14","BUTTON_15","AXIS_0","AXIS_1","AXIS_2","AXIS_3","AXIS_4","AXIS_5","AXIS_6","AXIS_7","AXIS_8","AXIS_9","XBOX360_A","XBOX360_B","XBOX360_X","XBOX360_Y","XBOX360_LEFT_BUMPER","XBOX360_RIGHT_BUMPER","XBOX360_LEFT_TRIGGER","XBOX360_RIGHT_TRIGGER","XBOX360_BACK","XBOX360_START","XBOX360_STICK_LEFT_BUTTON","XBOX360_STICK_RIGHT_BUTTON","XBOX360_DPAD_LEFT","XBOX360_DPAD_RIGHT","XBOX360_DPAD_UP","XBOX360_DPAD_DOWN","XBOX360_STICK_LEFT_X","XBOX360_STICK_LEFT_Y","XBOX360_STICK_RIGHT_X","XBOX360_STICK_RIGHT_Y","PS3XC_X","PS3XC_CIRCLE","PS3XC_SQUARE","PS3XC_TRIANGLE","PS3XC_L1","PS3XC_R1","PS3XC_L2","PS3XC_R2","PS3XC_SELECT","PS3XC_START","PS3XC_STICK_LEFT_BUTTON","PS3XC_STICK_RIGHT_BUTTON","PS3XC_DPAD_UP","PS3XC_DPAD_DOWN","PS3XC_DPAD_LEFT","PS3XC_DPAD_RIGHT","PS3XC_STICK_LEFT_X","PS3XC_STICK_LEFT_Y","PS3XC_STICK_RIGHT_X","PS3XC_STICK_RIGHT_Y","padParent","_padParent","_prevTimestamp","_buttons","_buttonsLen","_axes","_axesLen","getButton","timestamp","rawButtonVal","isNaN","processButtonDown","processButtonUp","processButtonFloat","axes","processAxisChange","triggerCallback","disconnectingIndex","axis","axisCode","buttonValue","Key","keycode","_enabled","keyCode","onHoldCallback","onHoldContext","_justDown","_justUp","processKeyDown","processKeyUp","upDuration","pressEvent","onPressCallback","_keys","_capture","_onKeyDown","_onKeyPress","_onKeyUp","_k","onPress","addKey","addKeyCapture","addKeys","removeKey","removeKeyCapture","createCursorKeys","up","KeyCode","processKeyPress","clearCaptures","String","fromCharCode","charCode","A","charCodeAt","B","C","D","E","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z","ZERO","ONE","TWO","THREE","FOUR","FIVE","SIX","SEVEN","EIGHT","NINE","NUMPAD_0","NUMPAD_1","NUMPAD_2","NUMPAD_3","NUMPAD_4","NUMPAD_5","NUMPAD_6","NUMPAD_7","NUMPAD_8","NUMPAD_9","NUMPAD_MULTIPLY","NUMPAD_ADD","NUMPAD_ENTER","NUMPAD_SUBTRACT","NUMPAD_DECIMAL","NUMPAD_DIVIDE","F1","F2","F3","F4","F5","F6","F7","F8","F9","F10","F11","F12","F13","F14","F15","COLON","EQUALS","COMMA","UNDERSCORE","PERIOD","QUESTION_MARK","TILDE","OPEN_BRACKET","BACKWARD_SLASH","CLOSED_BRACKET","QUOTES","BACKSPACE","TAB","CLEAR","ENTER","SHIFT","CONTROL","ALT","CAPS_LOCK","ESC","SPACEBAR","PAGE_UP","PAGE_DOWN","END","HOME","PLUS","MINUS","INSERT","DELETE","HELP","NUM_LOCK","match","Component","Angle","wrapAngle","Animation","play","frameRate","loop","killOnComplete","animations","AutoCull","autoCull","inCamera","checkWorldBounds","_bounds","Bounds","container","alignTo","BringToTop","Core","install","components","previousPosition","Events","PhysicsBody","AnimationManager","LoadTexture","FixedToCamera","previousRotation","fresh","_exists","P2JS","removeFromWorld","customRender","Crop","cropRect","_crop","updateCrop","resetFrame","_frame","cw","ch","_updateUvs","Delta","Destroy","onDestroy$dispatch","removeFrom","Video","onChangeSource","resizeFrame","BitmapText","_glyphs","mask","renderable","transformCallback","transformCallbackContext","filterArea","_mask","_destroyCachedSprite","_parent","_onDestroy","_onAddedToGroup","_onRemovedFromGroup","_onRemovedFromWorld","_onKilled","_onRevived","_onEnterBounds","_onOutOfBounds","_onInputOver","_onInputOut","_onInputDown","_onInputUp","_onDragStart","_onDragUpdate","_onDragStop","_onAnimationStart","_onAnimationComplete","_onAnimationLoop","onRemovedFromWorld","onKilled","onRevived","onOutOfBounds","onEnterBounds","onInputOver","onInputOut","onInputDown","onInputUp","onDragStart","onDragStop","onAnimationStart","onAnimationComplete","onAnimationLoop","backing","_fixedToCamera","Health","health","maxHealth","damage","kill","setHealth","heal","InCamera","InputEnabled","InWorld","outOfCameraBoundsKill","_outOfBoundsFired","onEnterBounds$dispatch","onOutOfBounds$dispatch","outOfBoundsKill","inWorld","LifeSpan","lifespan","physicsElapsedMS","revive","onRevived$dispatch","onKilled$dispatch","stopAnimation","setFrame","scaleMode","RenderTexture","setTexture","BitmapData","hasFrameData","loadFrameData","getFrameData","frameData","valid","Tilemap","TilemapLayer","Texture","fromCanvas","img","getImage","base","skipRender","trimmed","spriteSourceSizeX","spriteSourceSizeY","sourceSizeW","sourceSizeH","requiresReTint","tilingTexture","refreshTexture","frameName","Overlap","overlap","_reset","Reset","ScaleMinMax","scaleMin","scaleMax","checkTransform","setScaleMinMax","minX","minY","maxX","maxY","Smoothed","existing","weapon","Weapon","createBullets","Image","creature","mesh","Creature","tween","physicsGroup","spriteBatch","SpriteBatch","audio","audioSprite","addSprite","tileSprite","rope","Rope","text","Text","overFrame","outFrame","downFrame","upFrame","Button","graphics","emitter","maxParticles","Arcade","Emitter","retroFont","font","characterWidth","characterHeight","chars","charsPerRow","xSpacing","ySpacing","xOffset","yOffset","RetroFont","bitmapText","tilemap","tileWidth","tileHeight","renderTexture","addToCache","uuid","addRenderTexture","video","url","bitmapData","addBitmapData","Tween","TextureCache","preUpdatePhysics","preUpdateLifeSpan","preUpdateInWorld","preUpdateCore","_onOverFrame","_onOutFrame","_onDownFrame","_onUpFrame","onOverSound","onOutSound","onDownSound","onUpSound","onOverSoundMarker","onOutSoundMarker","onDownSoundMarker","onUpSoundMarker","onOverMouseOnly","justReleasedPreventsOver","freezeFrames","forceOut","setFrames","onInputOverHandler","onInputOutHandler","onInputDownHandler","onInputUpHandler","removedFromWorld","STATE_OVER","STATE_OUT","STATE_DOWN","STATE_UP","clearFrames","setStateFrame","switchImmediately","frameKey","changeStateFrame","setStateSound","marker","soundKey","markerKey","Sound","AudioSprite","playStateSound","setSounds","overSound","overMarker","downSound","downMarker","outSound","outMarker","upSound","upMarker","setOverSound","setOutSound","setDownSound","setUpSound","changedUp","ctx","smoothProperty","renderSession","getSmoothingPrefix","imageData","pixels","buffer","ArrayBuffer","BaseTexture","FrameData","textureFrame","addFrame","Frame","disableTextureUpload","cls","_image","_pos","_size","_scale","_rotate","_alpha","prev","_anchor","_tempR","_tempG","_tempB","_circle","_swapCanvas","moveH","moveV","draw","fillStyle","fillRect","generateTexture","toDataURL","addImage","processPixelRGB","pixel","createColor","unpackPixel","getPixel32","setPixel32","putImageData","processPixel","replaceRGB","r1","g1","r2","g2","region","packPixel","setHSL","bHaveH","bHaveS","bHaveL","HSLtoRGB","shiftHSL","red","green","blue","immediate","LITTLE_ENDIAN","setPixel","getPixel","getPixelRGB","hsl","hsv","getPixels","getFirstPixel","scan","scaleX","scaleY","newWidth","newHeight","blendMode","getCanvas","tint","cachedTint","tintedTexture","CanvasTinter","getTintedTexture","globalAlpha","op","copyTransform","copyRect","drawGroup","drawGroupProxy","drawFull","CanvasGraphics","renderGraphics","worldRotation","shadow","blur","shadowColor","shadowBlur","shadowOffsetX","shadowOffsetY","alphaMask","sourceRect","maskRect","blendSourceAtop","blendReset","extract","destination","prevFont","fillText","beginPath","arc","closePath","moveTo","lineTo","lineWidth","strokeStyle","stroke","textureLine","createPattern","blendSourceOver","blendSourceIn","blendSourceOut","blendDestinationOver","blendDestinationIn","blendDestinationOut","blendDestinationAtop","blendXor","blendAdd","blendMultiply","blendScreen","blendOverlay","blendDarken","blendLighten","blendColorDodge","blendColorBurn","blendHardLight","blendSoftLight","blendDifference","blendExclusion","blendHue","blendSaturation","blendColor","blendLuminosity","getSmoothingEnabled","setSmoothingEnabled","globalCompositeOperation","getTransform","translateX","translateY","skewX","skewY","fillAlpha","lineColor","currentPath","_webGL","isMask","boundsPadding","_localBounds","webGLDirty","cachedSpriteDirty","lineStyle","lineAlpha","drawShape","quadraticCurveTo","cpX","cpY","toX","toY","xa","ya","fromX","fromY","bezierCurveTo","cpX2","cpY2","dt","dt2","dt3","t2","t3","arcTo","mm","dd","cc","tt","k1","k2","j1","j2","qx","qy","startAngle","endAngle","anticlockwise","segments","sweep","segs","startX","startY","filling","theta","theta2","cTheta","sTheta","segMinus","remainder","real","fillColor","drawRoundedRect","drawCircle","drawEllipse","drawPolygon","path","clearDirty","canvasBuffer","CanvasBuffer","_renderWebGL","_cacheAsBitmap","_generateCachedSprite","updateCachedSpriteTexture","_cachedSprite","blendModeManager","setBlendMode","maskManager","pushMask","_filters","filterManager","pushFilter","_filterBlock","currentBlendMode","blendModeWebGL","blendModesWebGL","gl","blendFunc","WebGLGraphics","popFilter","popMask","drawCount","_renderCanvas","_prevTint","transform","blendModesCanvas","shakeX","shakeY","updateLocalBounds","w0","w1","h0","h1","x3","y3","x4","y4","tempPoint","Infinity","RECT","RREC","CIRC","ELIP","getLocalBounds","cachedSprite","destroyCachedSprite","GraphicsData","POLY","_lineTint","_fillTint","PolyK","Triangulate","sign","tgs","avl","al","i0","i1","i2","ax","ay","bx","by","earFound","_convex","vi","_PointInTriangle","v0x","v0y","v1x","v1y","v2x","v2y","dot00","dot01","dot02","dot11","dot12","invDenom","EarCut","holeIndices","dim","hasHoles","outerLen","outerNode","linkedList","triangles","eliminateHoles","earcutLinked","clockwise","sum","insertNode","filterPoints","again","steiner","removeNode","ear","pass","indexCurve","isEarHashed","isEar","cureLocalIntersections","splitEarcut","pointInTriangle","minTX","minTY","maxTX","maxTY","minZ","zOrder","maxZ","nextZ","prevZ","locallyInside","isValidDiagonal","splitPolygon","list","queue","getLeftmost","compareX","eliminateHole","hole","findHoleBridge","hx","hy","tan","tanMin","sortLinked","q","tail","numMerges","pSize","qSize","inSize","leftmost","intersectsPolygon","middleInside","q1","q2","Node","an","bp","stencilBufferLimit","webGLData","projection","shader","shaderManager","primitiveShader","updateGraphics","mode","stencilManager","pushStencil","drawElements","TRIANGLE_FAN","UNSIGNED_SHORT","indices","popStencil","setShader","uniformMatrix3fv","translationMatrix","uniform1f","flipY","uniform2f","projectionVector","offsetVector","uniform3fv","tintColor","hex2rgb","bindBuffer","ARRAY_BUFFER","vertexAttribPointer","aVertexPosition","FLOAT","colorAttribute","ELEMENT_ARRAY_BUFFER","indexBuffer","TRIANGLE_STRIP","lastIndex","graphicsDataPool","switchMode","canDrawUsingSimple","buildPoly","buildComplexPoly","buildLine","buildRectangle","buildCircle","buildRoundedRectangle","upload","WebGLGraphicsData","rectData","verts","vertPos","tempPoints","rrectData","recPoints","quadraticBezierCurve","vecPos","getPt","n1","n2","perc","diff","xb","yb","circleData","totalSegs","seg","firstPoint","lastPoint","midPointX","midPointY","unshift","p1x","p1y","p2x","p2y","p3x","p3y","perpx","perpy","perp2x","perp2y","perp3x","perp3y","pdist","dist","indexCount","indexStart","createBuffer","glPoints","bufferData","STATIC_DRAW","glIndicies","Uint16Array","updateGraphicsTint","strokeRect","kappa","ox","oy","xe","ye","xm","ym","maxRadius","renderGraphicsMask","tintR","tintG","tintB","drawTriangle","cull","triangle","cameraToFace","ab","faceNormal","drawTriangles","vertices","point1","point2","point3","_tempMatrix","renderXY","WEBGL_RENDERER","renderWebGL","renderCanvas","renderRawXY","textBounds","colors","strokeColors","fontStyles","fontWeights","autoRound","useAdvancedWrap","_res","_text","_fontComponents","_lineSpacing","_charCount","setStyle","updateText","setShadow","shadowStroke","shadowFill","backgroundColor","boundsAlignH","boundsAlignV","strokeThickness","wordWrap","wordWrapWidth","maxLines","tabs","fontToComponents","fontStyle","fontVariant","fontWeight","fontSize","componentsToFont","outputText","runWordWrap","lines","lineWidths","maxLineWidth","fontProperties","determineFontProperties","drawnLines","measureLine","measureText","tab","section","snapToCeil","lineHeight","lineSpacing","isCocoonJS","textBaseline","lineCap","lineJoin","linePositionX","linePositionY","ascent","updateLine","updateShadow","strokeText","renderTabLine","updateTexture","snap","lineLength","letter","clearColors","clearFontValues","addColor","addStrokeColor","addFontStyle","addFontWeight","weight","precalculateWordWrap","wrappedLines","advancedWordWrap","basicWordWrap","linesCount","currentLineWidth","words","word","wordWithSpace","wordWidth","newWord","secondPart","spaceLeft","wordWidthWithSpace","updateFont","family","exec","fontFamily","setText","parseList","setTextBounds","pivot","properties","fontPropertiesCache","fontPropertiesCanvas","fontPropertiesContext","baseline","descent","imagedata","idx","parseFloat","textWidth","textHeight","_prevAnchor","_maxWidth","_data","getBitmapFont","_font","_fontSize","_align","_tint","sourceWidth","sourceHeight","scanLine","lastSpace","wrappedWidth","prevCharCode","maxWidth","test","charAt","charData","kerning","xAdvance","cleanText","re","purgeGlyphs","kept","checkImageKey","characterSpacingX","characterSpacingY","characterPerRow","multiLine","autoUpperCase","customSpacingX","customSpacingY","fixedWidth","fontSet","grabData","currentX","currentY","updateFrameData","stamp","ALIGN_LEFT","ALIGN_RIGHT","ALIGN_CENTER","TEXT_SET1","TEXT_SET2","TEXT_SET3","TEXT_SET4","TEXT_SET5","TEXT_SET6","TEXT_SET7","TEXT_SET8","TEXT_SET9","TEXT_SET10","TEXT_SET11","setFixedWidth","lineAlignment","content","characterSpacing","allowLowerCase","buildRetroFontText","getLongestLine","pasteLine","longestLine","removeUnsupportedCharacters","stripCR","newString","aChar","code","updateOffset","diffX","diffY","frames","getFrames","newText","toUpperCase","_hasUpdateAnimation","_updateAnimationCallback","updateAnimation","_updateAnimation","difference","_scroll","def","TilingSprite","tilePosition","physicsElapsed","autoScroll","stopScroll","deviceReadyAt","initialized","desktop","iOSVersion","node","nodeWebkit","electron","ejecta","crosswalk","chromeOS","linux","macOS","windows","windowsPhone","canvasBitBltShift","file","fileSystem","localStorage","worker","css3D","typedArray","vibration","getUserMedia","quirksMode","arora","chromeVersion","epiphany","firefox","firefoxVersion","ie","ieVersion","trident","tridentVersion","edge","mobileSafari","midori","opera","safari","safariVersion","webApp","silk","audioData","ogg","opus","mp3","wav","m4a","webm","dolby","oggVideo","h264Video","mp4Video","webmVideo","vp9Video","hlsVideo","iPhone","iPhone4","iPad","pixelRatio","littleEndian","support32bit","fullscreen","requestFullscreen","cancelFullscreen","fullscreenKeyboard","onInitialized","nonPrimer","readyCheck","_readyCheck","_monitor","_queue","readyState","setTimeout","_initialize","item","_checkOS","vita","kindle","RegExp","$1","_checkFeatures","getItem","error","createElement","WebGLRenderingContext","compatMode","webkitGetUserMedia","mozGetUserMedia","msGetUserMedia","oGetUserMedia","URL","webkitURL","mozURL","msURL","_checkInput","documentElement","maxTouchPoints","msPointerEnabled","pointerEnabled","_checkFullScreenSupport","fs","cfs","Element","_checkBrowser","$3","process","require","versions","_checkVideo","videoElement","canPlayType","_checkAudio","audioElement","major","minor","$2","_checkDevice","Int8Array","Uint8Array","_checkIsLittleEndian","Uint8ClampedArray","Int32Array","_checkIsUint8ClampedImageData","vibrate","webkitVibrate","mozVibrate","msVibrate","elem","createImageData","_checkCSS3D","has3d","el","transforms","webkitTransform","OTransform","msTransform","MozTransform","insertBefore","getComputedStyle","getPropertyValue","canPlayAudio","canPlayVideo","isConsoleOpen","profile","profileEnd","isAndroidStockBrowser","matches","skipPool","display","msTouchAction","overflowHidden","getElementById","overflow","appendChild","parentNode","vendor","prefix","setImageRenderingCrisp","types","msInterpolationMode","setImageRenderingBicubic","forceSetTimeOut","vendors","requestAnimationFrame","cancelAnimationFrame","_isSetTimeOut","_onLoop","_timeOutID","updateSetTimeout","updateRAF","rafTime","timeToCall","clearTimeout","isSetTimeOut","isRAF","PI2","fuzzyEqual","epsilon","fuzzyLessThan","fuzzyGreaterThan","fuzzyCeil","val","fuzzyFloor","average","shear","snapTo","gap","snapToFloor","roundTo","place","pow","floorTo","ceilTo","angleBetween","angleBetweenY","angleBetweenPoints","angleBetweenPointsY","reverseAngle","angleRad","normalizeAngle","maxAdd","minSub","range","wrapValue","isOdd","isEven","minProperty","maxProperty","radians","linearInterpolation","bezierInterpolation","bernstein","catmullRomInterpolation","catmullRom","p0","factorial","res","p3","v0","v1","roundAwayFromZero","sinCosGenerator","sinAmplitude","cosAmplitude","frequency","frq","cosTable","sinTable","distanceSq","distancePow","clampBottom","within","mapLinear","smoothstep","smootherstep","percent","degreeToRadiansFactor","radianToDegreesFactor","degrees","seeds","s0","s1","s2","sow","integer","integerInRange","realInRange","normal","pick","ary","weightedPick","QuadTree","maxObjects","maxLevels","level","objects","nodes","_empty","subWidth","subHeight","populate","populateHandler","insert","retrieve","returnObjects","getHostName","location","hostname","checkDomainName","domain","updateQueryString","redirect","href","separator","getQueryString","parameter","keyValues","search","substring","decodeURI","decodeURIComponent","frameBased","_tweens","_add","easeMap","Power0","Easing","Power1","Power2","Power3","Power4","Linear","None","Quad","Quadratic","Out","Cubic","Quart","Quartic","Quint","Quintic","Sine","Sinusoidal","Expo","Exponential","Circ","Circular","Elastic","Back","Bounce","Quad.easeIn","In","Cubic.easeIn","Quart.easeIn","Quint.easeIn","Sine.easeIn","Expo.easeIn","Circ.easeIn","Elastic.easeIn","Back.easeIn","Bounce.easeIn","Quad.easeOut","Cubic.easeOut","Quart.easeOut","Quint.easeOut","Sine.easeOut","Expo.easeOut","Circ.easeOut","Elastic.easeOut","Back.easeOut","Bounce.easeOut","Quad.easeInOut","InOut","Cubic.easeInOut","Quart.easeInOut","Quint.easeInOut","Sine.easeInOut","Expo.easeInOut","Circ.easeInOut","Elastic.easeInOut","Back.easeInOut","Bounce.easeInOut","_pauseAll","_resumeAll","getAll","pendingDelete","_manager","addTweens","numTweens","isTweening","some","_pause","_resume","pauseAll","resumeAll","manager","timeline","timeScale","repeatCounter","onStart","onLoop","onRepeat","onChildComplete","onComplete","chainedTween","isPaused","_onUpdateCallback","_onUpdateCallbackContext","_pausedTime","_hasStarted","ease","yoyo","Default","TweenData","vEnd","loadValues","complete","updateTweenData","repeatDelay","yoyoDelay","easing","interpolation","repeatAll","chain","startTime","status","PENDING","RUNNING","LOOPED","COMPLETE","generateData","vStart","vStartCache","vEndCache","repeatTotal","inReverse","easingFunction","interpolationFunction","interpolationContext","isFrom","yoyoCounter","ms","fps","blob","reversed","asin","prevTime","_desiredFps","suggestedFps","advancedTiming","fpsMin","fpsMax","msMin","msMax","pauseDuration","timeExpected","Timer","_frameCount","_elapsedAccumulator","_started","_timeLastSecond","_pauseStarted","_justResumed","_timers","timer","autoDestroy","previousDateNow","updateAdvancedTiming","updateTimers","elapsedSince","since","elapsedSecondsSince","running","expired","nextTick","timeCap","_pauseTotal","_now","_marked","_diff","_newTick","MINUTE","SECOND","HALF","QUARTER","repeatCount","tick","TimerEvent","clearEvents","clearPendingEvents","adjustEvents","baseTime","currentFrame","currentAnim","updateIfVisible","isLoaded","_frameData","_anims","_outputFrames","anim","copyFrameData","useNumericIndex","getFrameIndexes","validateFrames","checkFrameName","isPlaying","getAnimation","refreshFrame","getFrame","getFrameByName","_frameIndex","_frames","loopCount","isFinished","_pauseStartTime","_frameDiff","_frameSkip","onUpdate","isReversed","_timeLastFrame","_timeNextFrame","updateCurrentFrame","onAnimationStart$dispatch","reverseOnce","frameId","useLocalFrameIndex","frameIndex","dispatchComplete","onAnimationComplete$dispatch","onAnimationLoop$dispatch","signalUpdate","fromPlay","generateFrameNames","suffix","zeroPad","rotated","rotationDirection","spriteSourceSizeW","spriteSourceSizeH","setTrim","actualWidth","actualHeight","destX","destY","destWidth","destHeight","getRect","_frameNames","getFrameRange","AnimationParser","spriteSheet","frameWidth","frameHeight","frameMax","margin","spacing","row","column","JSONData","json","newFrame","filename","sourceSize","spriteSourceSize","JSONDataPyxel","signature","tileheight","tilewidth","JSONDataHash","XMLData","xml","getElementsByTagName","frameX","frameY","attributes","autoResolveURL","_cache","binary","bitmapFont","_urlMap","_urlResolver","_urlTemp","onSoundUnlock","_cacheMap","TEXTURE","SOUND","PHYSICS","BINARY","BITMAPFONT","JSON","XML","SHADER","RENDER_TEXTURE","addDefaultImage","addMissingImage","addCanvas","removeImage","_resolveURL","addSound","audioTag","decoded","isDecoding","touchLocked","addText","addPhysicsData","format","addTilemap","mapData","addBinary","binaryData","addBitmapFont","atlasData","atlasType","LoaderParser","jsonBitmapFont","xmlBitmapFont","addJSON","addXML","addVideo","isBlob","addShader","addSpriteSheet","addTextureAtlas","TEXTURE_ATLAS_XML_STARLING","TEXTURE_ATLAS_JSON_PYXEL","reloadSound","getSound","reloadSoundComplete","updateSound","decodedSound","isSoundDecoded","isSoundReady","checkKey","checkURL","checkCanvasKey","checkTextureKey","checkSoundKey","checkTextKey","checkPhysicsKey","checkTilemapKey","checkBinaryKey","checkBitmapDataKey","checkBitmapFontKey","checkJSONKey","checkXMLKey","checkVideoKey","checkShaderKey","checkRenderTextureKey","full","getTextureFrame","getSoundData","getText","getPhysicsData","fixtureKey","fixtures","fixture","getTilemapData","getBinary","getBitmapData","getJSON","getXML","getVideo","getShader","getRenderTexture","getBaseTexture","getFrameCount","getFrameByIndex","getPixiTexture","getPixiBaseTexture","BaseTextureCache","getURL","getKeys","removeCanvas","removeFromPixi","removeSound","removeText","removePhysics","removeTilemap","removeBinary","removeBitmapData","removeBitmapFont","removeJSON","removeXML","removeVideo","removeShader","removeRenderTexture","removeSpriteSheet","removeTextureAtlas","atlas","_glTextures","baseURL","isLoading","hasLoaded","preloadSprite","crossOrigin","onLoadStart","onLoadComplete","onPackComplete","onFileStart","onFileComplete","onFileError","useXDomainRequest","_warnedAboutXDomainRequest","enableParallel","maxParallelDownloads","_withSyncPointDepth","_fileList","_flightQueue","_processingHead","_fileLoadStarted","_totalPackCount","_totalFileCount","_loadedPackCount","_loadedFileCount","TEXTURE_ATLAS_JSON_ARRAY","TEXTURE_ATLAS_JSON_HASH","PHYSICS_LIME_CORONA_JSON","PHYSICS_PHASER_JSON","setPreloadSprite","checkKeyExists","getAssetIndex","bestFound","loaded","loading","getAsset","fileIndex","addToFileList","overwrite","extension","syncPoint","currentFile","replaceInFileList","pack","images","urls","script","spritesheet","autoDecode","noAudio","jsonURL","jsonData","audiosprite","loadEvent","asBlob","CSV","TILED_JSON","LIME_CORONA_JSON","textureURL","atlasURL","parseXml","atlasJSONArray","atlasJSONHash","atlasXML","withSyncPoint","addSyncPoint","asset","removeFile","updateProgress","processLoadQueue","finishedLoading","requestUrl","requestObject","progress","syncblock","inflightLimit","processPack","loadFile","abnormal","asyncComplete","errorMessage","packData","transformUrl","xhrLoad","fileComplete","loadImageTag","getAudioURL","usingWebAudio","usingAudioTag","loadAudioTag","fileError","getVideoURL","loadVideoTag","jsonLoadComplete","xmlLoadComplete","csvLoadComplete","onload","onerror","controls","autoplay","videoLoadEvent","canplay","Audio","playThroughEvent","XDomainRequest","xhrLoadWithXDR","xhr","XMLHttpRequest","open","responseType","message","send","timeout","ontimeout","onprogress","videoType","uri","lastIndexOf","audioType","reason","loadNext","responseText","response","decode","language","defer","head","contentType","domparser","DOMParser","parseFromString","ActiveXObject","async","loadXML","totalLoadedFiles","totalLoadedPacks","progressFloat","info","common","getAttribute","letters","kernings","second","finalizeBitmapFont","_face","_lineHeight","_id","_xoffset","_yoffset","_xadvance","_second","_first","_amount","bitmapFontData","autoplayKey","sounds","spritemap","addMarker","connectToMaster","markers","totalDuration","currentTime","durationMS","stopTime","pausedPosition","pausedTime","currentMarker","fadeTween","pendingPlayback","override","allowMultiple","externalNode","masterGainNode","gainNode","_sound","masterGain","createGain","createGainNode","gain","soundHasUnlocked","onDecoded","onPlay","onStop","onMute","onMarkerComplete","_volume","_buffer","_muted","_tempMarker","_tempPosition","_tempVolume","_tempPause","_muteVolume","_tempLoop","_onDecodedEventDispatched","removeMarker","onEndedHandler","onended","isDecoded","loopFull","forceRestart","noteOff","createBufferSource","noteGrainOn","muted","mute","prevMarker","fadeIn","fadeTo","fadeOut","fadeComplete","updateGlobalVolume","globalVolume","onSoundDecode","onVolumeChange","onUnMute","channels","_codeMuted","_unlockSource","_sounds","_watchList","_watching","_watchCallback","_watchContext","disableAudio","disableWebAudio","audioContext","fakeiOSTouchLock","setTouchLock","unlock","noteOn","stopAll","soundData","decodeAudioData","setDecodedCallback","files","playbackState","PLAYING_STATE","FINISHED_STATE","removeByKey","close","dom","minWidth","minHeight","maxHeight","forceLandscape","forcePortrait","incorrectOrientation","_pageAlignHorizontally","_pageAlignVertically","onOrientationChange","enterIncorrectOrientation","leaveIncorrectOrientation","fullScreenTarget","_createdFullScreenTarget","onFullScreenInit","onFullScreenChange","onFullScreenError","screenOrientation","getScreenOrientation","scaleFactorInversed","aspectRatio","sourceAspectRatio","windowConstraints","compatibility","supportsFullScreen","orientationFallback","noMargins","scrollTo","forceMinimumDocumentHeight","canExpandParent","clickTrampoline","_scaleMode","NO_SCALE","_fullScreenScaleMode","parentIsWindow","parentScaleFactor","trackParentInterval","onSizeChange","onResize","onResizeContext","_pendingScaleMode","_fullScreenRestore","_gameSize","_userScaleFactor","_userScaleTrim","_lastUpdate","_updateThrottle","_updateThrottleReset","_parentBounds","_tempBounds","_lastReportedCanvasSize","_lastReportedGameSize","_booted","setupScale","EXACT_FIT","SHOW_ALL","RESIZE","USER_SCALE","compat","_orientationChange","orientationChange","_windowResize","windowResize","_fullScreenChange","fullScreenChange","_fullScreenError","fullScreenError","_gameResumed","setGameSize","FlexGrid","fullScreenScaleMode","getParentBounds","visualBounds","updateDimensions","queueUpdate","currentScaleMode","setUserScale","hScale","vScale","hTrim","vTrim","setResizeCallback","signalSizeChange","setMinMax","prevThrottle","prevWidth","prevHeight","boundsChanged","orientationChanged","updateOrientationState","updateLayout","throttle","updateScalingAndBounds","forceOrientation","classifyOrientation","orientation","previousOrientation","previouslyIncorrect","isLandscape","isPortrait","changed","correctnessChanged","scrollTop","reflowGame","setMaximum","setExactFit","isFullScreen","boundingParent","setShowAll","resetCanvas","reflowCanvas","layoutBounds","clientRect","getBoundingClientRect","parentRect","offsetParent","wc","windowBounds","alignCanvas","parentBounds","canvasBounds","currentEdge","targetEdge","marginLeft","marginRight","marginTop","marginBottom","pageAlignHorizontally","pageAlignVertically","cssWidth","cssHeight","expanding","multiplier","createFullScreenTarget","fsTarget","background","startFullScreen","allowTrampoline","cleanupCreatedTarget","initData","targetElement","ALLOW_KEYBOARD_INPUT","stopFullScreen","prepScreenMode","enteringFullscreen","createdTarget","targetWidth","targetHeight","scaleSprite","letterBox","scaleX1","scaleY1","scaleX2","scaleY2","scaleOnWidth","bmd","columnWidth","renderShadow","currentAlpha","scaleManager","currentColor","soundInfo","cameraInfo","hideIfUp","downColor","upColor","worldX","worldY","spriteInputInfo","justDown","justUp","inputInfo","spriteBounds","filled","rectangle","ropeSegments","self","segment","spriteInfo","spriteCoords","lineInfo","geom","forceType","quadTree","quadtree","Body","NINJA","Ninja","BOX2D","Box2D","renderBody","bodyInfo","renderBodyInfo","box2d","box2dWorld","renderDebugDraw","box2dBody","displayList","box","scrollY","scrollLeft","scrollX","clientTop","clientLeft","cushion","calibrate","coords","getAspectRatio","inLayoutViewport","primaryFallback","screen","mozOrientation","msOrientation","matchMedia","documentBounds","pageXOffset","pageYOffset","treatAsDesktop","clientWidth","clientHeight","offsetWidth","scrollWidth","offsetHeight","scrollHeight","getByKey","randomIndex","removeRandomItem","shuffle","temp","transposeMatrix","sourceRowCount","sourceColCount","rotateMatrix","findClosest","arr","NaN","low","high","numberArray","numberArrayStep","LinkedList","entity","palettes",1,2,3,4,5,6,7,8,9,"PALETTE_ARNE","PALETTE_JMP","PALETTE_CGA","PALETTE_C64","PALETTE_JAPANESE_MACHINE","pixelWidth","pixelHeight","palette","boundsCustom","boundsFull","boundsNone","positionCustom","positionFluid","positionFull","positionNone","scaleCustom","scaleFluid","scaleFull","scaleNone","customWidth","customHeight","customOffsetX","customOffsetY","ratioH","ratioV","layers","createCustomLayer","layer","FlexLayer","createFluidLayer","createFullLayer","createFixedLayer","persist","fitSprite","topLeft","topMiddle","topRight","bottomLeft","bottomMiddle","bottomRight","RGBtoHSL","RGBtoHSV","fromRGBA","toRGBA","hueToColor","HSVtoRGB","color32","getColor","getColor32","RGBtoString","componentToHex","hexToRGB","hex","hexToColor","webToColor","web","tempColor","getRGB","HSVColorWheel","HSLColorWheel","interpolateColor","color1","color2","steps","currentStep","src1","src2","interpolateColorWithRGB","or","og","ob","interpolateRGB","getRandomColor","getWebRGB","getAlpha","getAlphaFloat","getRed","getGreen","getBlue","blendNormal","blendAverage","blendSubtract","blendNegation","blendLinearDodge","blendLinearBurn","blendLinearLight","blendVividLight","blendPinLight","blendHardMix","blendReflect","blendGlow","blendPhoenix","arcade","ninja","chipmunk","matter","CHIPMUNK","MATTERJS","P2","Matter","startSystem","system","enableAABB","gravity","checkCollision","OVERLAP_BIAS","forceX","sortDirection","LEFT_RIGHT","skipQuadTree","_total","SORT_NONE","RIGHT_LEFT","TOP_BOTTOM","BOTTOM_TOP","updateMotion","velocityDelta","computeVelocity","angularVelocity","angularAcceleration","angularDrag","maxAngular","velocity","acceleration","drag","maxVelocity","allowGravity","object1","object2","overlapCallback","processCallback","collideHandler","collide","collideCallback","sortLeftRight","sortRightLeft","sortTopBottom","sortBottomTop","overlapOnly","collideGroupVsSelf","collideSpriteVsSprite","collideSpriteVsGroup","collideSpriteVsTilemapLayer","collideGroupVsGroup","collideGroupVsTilemapLayer","sprite1","sprite2","separate","items","group1","group2","body1","body2","resultX","resultY","separateX","separateY","getOverlapX","maxOverlap","deltaAbsX","embedded","touching","none","overlapX","getOverlapY","deltaAbsY","overlapY","immovable","customSeparateX","v2","bounce","moves","friction","nv1","mass","nv2","avg","customSeparateY","getObjectsUnderPointer","getObjectsAtLocation","callbackArg","moveToObject","maxTime","distanceBetween","moveToPointer","angleToPointer","distanceToPointer","moveToXY","distanceToXY","velocityFromAngle","velocityFromRotation","accelerationFromRotation","accelerateToObject","xSpeedMax","ySpeedMax","accelerateToPointer","accelerateToXY","angleToXY","worldAngleToPointer","allowRotation","preRotation","newVelocity","deltaMax","worldBounce","facing","collideWorldBounds","any","wasTouching","blocked","tilePadding","syncBounds","isMoving","stopVelocityOnCollide","moveTimer","moveDistance","moveDuration","moveTarget","moveEnd","onMoveComplete","movementCallback","movementCallbackContext","_sx","_sy","updateBounds","asx","asy","updateMovement","collided","stopMovement","stopVelocity","check","moveFrom","onFloor","onCeiling","onWall","TilemapCollision","TILE_BIAS","tilemapLayer","getTiles","separateTile","tile","tilemapLayerOffsetX","tilemapLayerOffsetY","collisionCallback","collisionCallbackContext","faceLeft","faceRight","faceTop","faceBottom","tileCheckX","tileCheckY","collideRight","collideLeft","processTileSeparationX","collideDown","collideUp","processTileSeparationY","Spring","broadphase","SAPBroadphase","useElapsedTime","materials","InversePointProxy","walls","onBodyAdded","onBodyRemoved","onSpringAdded","onSpringRemoved","onConstraintAdded","onConstraintRemoved","onContactMaterialAdded","onContactMaterialRemoved","postBroadphaseCallback","onBeginContact","onEndContact","mpx","mpxi","pxm","pxmi","on","beginContactHandler","endContactHandler","collisionGroups","nothingCollisionGroup","CollisionGroup","boundsCollisionGroup","everythingCollisionGroup","boundsCollidesWith","_toRemove","_collisionGroupID","_boundsLeft","_boundsRight","_boundsTop","_boundsBottom","_boundsOwnGroup","removeBodyNextStep","removeBody","setImpactEvents","impactHandler","off","setPostBroadphaseCallback","postBroadphaseHandler","pairs","bodyA","bodyB","_bodyCallbacks","_bodyCallbackContext","shapeA","shapeB","_groupCallbacks","collisionGroup","_groupCallbackContext","contactEquations","setCollisionGroup","setWorldMaterial","material","shapes","updateBoundsCollisionGroup","setupWall","wall","addShape","Plane","addBody","fixedStepTime","solver","equations","removeAllEquations","cs","constraints","removeConstraint","bodies","springs","removeSpring","cms","contactMaterials","removeContactMaterial","impactCallback","addSpring","spring","RotationalSpring","createDistanceConstraint","localAnchorA","localAnchorB","maxForce","getBody","addConstraint","DistanceConstraint","createGearConstraint","ratio","GearConstraint","createRevoluteConstraint","pivotA","pivotB","worldPivot","RevoluteConstraint","createLockConstraint","LockConstraint","createPrismaticConstraint","lockRotation","anchorA","anchorB","PrismaticConstraint","constraint","addContactMaterial","getContactMaterial","materialA","materialB","setMaterial","createMaterial","Material","createContactMaterial","contact","ContactMaterial","getBodies","getSprings","getConstraints","worldPoint","precision","filterStatic","physicsPosition","query","STATIC","toJSON","createCollisionGroup","bitmask","collisionMask","createSpring","restLength","stiffness","damping","worldA","worldB","localA","localB","createRotationalSpring","restAngle","createBody","addPolygon","createParticle","convertCollisionObjects","map","collision","polyline","clearTilemapLayerBodies","getLayer","convertTilemap","optimize","collides","getTileRight","addRectangle","defaultContactMaterial","restitution","applySpringForces","applyDamping","applyGravity","solveConstraints","emitImpactEvent","sleepMode","FixtureList","rawList","namedFixtures","groupedFixtures","allFixtures","setCategory","bit","setter","getFixtures","setMask","setSensor","sensor","getFixtureByKey","getGroup","groupID","_ref","_results","callee","PointProxy","collidesWith","removeNextStep","debugBody","_collideWorldBounds","setRectangleFromSprite","createBodyCallback","createGroupCallback","getCollisionMask","updateCollisionMask","clearCollision","clearGroup","clearMask","removeCollisionGroup","clearCallback","adjustCenterOfMass","shapeChanged","getVelocityAtPoint","relativePoint","applyImpulse","impulse","applyImpulseLocal","localX","localY","applyForce","setZeroForce","setZeroRotation","setZeroVelocity","setZeroDamping","angularDamping","toLocalFrame","toWorldFrame","rotateLeft","rotateRight","moveForward","moveBackward","thrust","thrustLeft","thrustRight","moveLeft","moveRight","fixedRotation","updateSpriteTransform","resetDamping","resetMass","clearShapes","removeShape","addCircle","Box","addPlane","addParticle","Particle","addLine","addCapsule","Capsule","fromPolygon","setCircle","setRectangle","addPhaserPolygon","createdFixtures","fixtureData","shapesOfFixture","addFixture","aabbNeedsUpdate","generatedShapes","categoryBits","maskBits","isSensor","vec2","polygons","cm","Convex","sub","centerOfMass","updateTriangles","updateCenterOfMass","updateBoundingRadius","loadPolygon","DYNAMIC","KINEMATIC","allowSleep","angularForce","inertia","updateMassProperties","sleepSpeedLimit","BodyDebug","settings","defaultSettings","pixelsPerLengthUnit","debugPolygons","ppu","lw","vrot","_j","_ref1","randomPastelHex","drawCapsule","drawPlane","drawLine","drawRectangle","drawConvex","x0","drawPath","lastx","lasty","diagMargin","diagSize","maxLength","xd","yd","mix","rgbToHex","worldAnchorA","worldAnchorB","LinearSpring","localOffsetB","localAngleB","localAxisA","disableRotationalLock","localPivotA","localPivotB","ImageCollection","firstgid","imageWidth","imageHeight","imageMargin","imageSpacing","containsImageIndex","imageIndex","gid","Tile","flipped","scanned","setCollisionCallback","setCollision","resetCollision","isInteresting","faces","TilemapParser","version","widthInPixels","heightInPixels","tilesets","imagecollections","tiles","collideIndexes","currentLayer","debugMap","_tempA","NORTH","EAST","SOUTH","WEST","setTileSize","createBlankLayer","addTilesetImage","tileset","tileMargin","tileSpacing","getTilesetIndex","setImage","newSet","Tileset","countX","countY","createFromObjects","CustomClass","adjustY","found","createFromTiles","replacements","customClass","lh","createLayer","pixiTest","getLayerIndex","TilemapLayerGL","indexes","getImageIndex","setTileIndexCallback","setTileLocationCallback","recalculate","setCollisionByIndex","calculateFaces","setCollisionBetween","setCollisionByExclusion","setPreventRecalculate","preventingRecalculate","needToRecalculate","above","below","getTileAbove","getTileBelow","getTileLeft","setLayer","hasTile","removeTile","removeTileWorldXY","putTile","putTileWorldXY","searchTileIndex","skip","getTile","nonNull","getTileWorldXY","paste","tileblock","tileA","tileB","swapHandler","removeAllLayers","dump","txt","renderSettings","enableScrollDelta","overdrawRatio","copyCanvas","debugSettings","missingImageFill","debuggedTileOverfill","forceFullRedraw","debugAlpha","facingEdgeStroke","collidingTileOverfill","scrollFactorX","scrollFactorY","rayStepRate","_wrap","_mc","renderWidth","renderHeight","_scrollX","_scrollY","ensureSharedCopyCanvas","sharedCopyCanvas","requiresUpdate","resizeWorld","_fixX","_unfixX","_fixY","_unfixY","getTileX","getTileY","getTileXY","getRayCastTiles","interestingFace","coord","fetchAll","tw","th","wy","wx","resolveTileset","tileIndex","setIndex","containsTileIndex","resetTilesetCache","setScale","xScale","yScale","shiftCanvas","copyW","copyH","copyContext","renderRegion","lastAlpha","xmax","ymax","baseX","baseY","normStartX","normStartY","tileColor","renderDeltaScroll","shiftX","shiftY","renderW","renderH","trueTop","trueBottom","trueLeft","trueRight","renderFull","redrawAll","mc","renderDebug","INSERT_NULL","getEmptyData","parseCSV","parseTiledJSON","fields","sliced","curl","compression","encoding","binaryString","atob","bytes","opacity","flippedVal","curi","tileproperties","tileProperties","updateTileData","imagewidth","imageheight","newCollection","ti","curo","polygon","ellipse","sid","drawCoords","coordIndex","setSpacing","rowCount","colCount","autoScale","scaleData","_s","autoAlpha","alphaData","_a","onEmit","setAlphaData","setScaleData","emitters","ID","minParticleSpeed","maxParticleSpeed","minParticleScale","maxParticleScale","minRotation","maxRotation","minParticleAlpha","maxParticleAlpha","particleClass","particleDrag","particleAnchor","emitX","emitY","particleBringToTop","particleSendToBack","_minParticleScale","_maxParticleScale","_quantity","_timer","_counter","_flowQuantity","_flowTotal","_explode","emitParticle","makeParticles","particle","rndKey","rndFrame","explode","flow","forceQuantity","setXSpeed","setYSpeed","setRotation","setAlpha","rate","tweenData","at","bullets","autoExpandBulletsGroup","autofire","shots","fireLimit","fireRate","fireRateVariance","fireFrom","fireAngle","bulletInheritSpriteSpeed","bulletAnimation","bulletFrameRandom","bulletFrameCycle","bulletWorldWrap","bulletWorldWrapPadding","bulletAngleOffset","bulletAngleVariance","bulletSpeed","bulletSpeedVariance","bulletLifespan","bulletKillDistance","bulletGravity","bulletRotateToVelocity","bulletKey","bulletFrame","_bulletClass","Bullet","_bulletCollideWorldBounds","_bulletKillType","KILL_WORLD_BOUNDS","customBody","bulletBounds","bulletFrames","bulletFrameIndex","anims","onFire","onKill","onFireLimit","trackedSprite","trackedPointer","trackRotation","trackOffset","_nextFire","KILL_NEVER","KILL_LIFESPAN","KILL_DISTANCE","KILL_WEAPON_BOUNDS","KILL_CAMERA_BOUNDS","KILL_STATIC_BOUNDS","killAll","resetShots","newLimit","fire","trackSprite","trackPointer","moveX","moveY","bullet","bulletManager","killType","bulletKillType","killDistance","rotateToVelocity","bodyDirty","bulletCollideWorldBounds","fireAtPointer","fireAtSprite","fireAtXY","setBulletBodyOffset","setBulletFrames","cycle","addBulletAnimation","debugBodies","onAccess","onError","onTimeout","videoStream","isStreaming","retryLimit","retry","retryInterval","_retryID","_pending","_autoplay","_endCallback","_playCallback","_video","createVideoFromBlob","videoWidth","videoHeight","createVideoFromURL","forceLoaded","snapshot","connectToMediaStream","stream","startMediaStream","captureAudio","removeVideoElement","setAttribute","getUserMediaTimeout","getUserMediaSuccess","getUserMediaError","mozSrcObject","createObjectURL","onloadeddata","checkStream","checkVideoProgress","change","playbackRate","setPause","setResume","playHandler","getTracks","track","playing","ended","changeSource","grab","hasChildNodes","firstChild","removeAttribute","emptyTexture","DisplayObject","tempMatrix","TextureSilentFail","exports","module","define","amd"],"mappings":"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"} \ No newline at end of file +{"version":3,"sources":["phaser-split.js"],"names":["WheelEventProxy","scaleFactor","deltaMode","this","_scaleFactor","_deltaMode","originalEvent","root","Phaser","VERSION","GAMES","AUTO","CANVAS","WEBGL","HEADLESS","NONE","LEFT","RIGHT","UP","DOWN","SPRITE","BUTTON","IMAGE","GRAPHICS","TEXT","TILESPRITE","BITMAPTEXT","GROUP","RENDERTEXTURE","TILEMAP","TILEMAPLAYER","EMITTER","POLYGON","BITMAPDATA","CANVAS_FILTER","WEBGL_FILTER","ELLIPSE","SPRITEBATCH","RETROFONT","POINTER","ROPE","CIRCLE","RECTANGLE","LINE","MATRIX","POINT","ROUNDEDRECTANGLE","CREATURE","VIDEO","PENDING_ATLAS","HORIZONTAL","VERTICAL","LANDSCAPE","PORTRAIT","ANGLE_UP","ANGLE_DOWN","ANGLE_LEFT","ANGLE_RIGHT","ANGLE_NORTH_EAST","ANGLE_NORTH_WEST","ANGLE_SOUTH_EAST","ANGLE_SOUTH_WEST","TOP_LEFT","TOP_CENTER","TOP_RIGHT","LEFT_TOP","LEFT_CENTER","LEFT_BOTTOM","CENTER","RIGHT_TOP","RIGHT_CENTER","RIGHT_BOTTOM","BOTTOM_LEFT","BOTTOM_CENTER","BOTTOM_RIGHT","blendModes","NORMAL","ADD","MULTIPLY","SCREEN","OVERLAY","DARKEN","LIGHTEN","COLOR_DODGE","COLOR_BURN","HARD_LIGHT","SOFT_LIGHT","DIFFERENCE","EXCLUSION","HUE","SATURATION","COLOR","LUMINOSITY","scaleModes","DEFAULT","LINEAR","NEAREST","PIXI","Math","trunc","x","ceil","floor","Function","prototype","bind","slice","Array","thisArg","bound","args","boundArgs","concat","call","arguments","target","apply","TypeError","F","proto","isArray","arg","Object","toString","forEach","fun","t","len","length","i","window","Uint32Array","CheapArray","type","constructor","console","log","assert","warn","Utils","reverseString","string","split","reverse","join","getProperty","obj","prop","parts","last","pop","l","current","setProperty","value","chanceRoll","chance","undefined","random","randomChoice","choice1","choice2","parseDimension","size","dimension","f","px","substr","parseInt","innerWidth","innerHeight","pad","str","dir","padlen","right","left","isPlainObject","nodeType","hasOwnProperty","e","extend","options","name","src","copy","copyIsArray","clone","deep","mixinPrototype","mixin","replace","mixinKeys","keys","key","get","set","defineProperty","from","to","o","childNodes","cloneNode","Circle","y","diameter","_diameter","_radius","circumference","PI","out","Point","u","r","cos","sin","radius","getBounds","Rectangle","setTo","copyFrom","source","copyTo","dest","distance","round","output","contains","circumferencePoint","angle","asDegrees","offset","dx","dy","offsetPoint","point","a","top","bottom","equals","b","intersects","degToRad","intersectsRectangle","c","cx","abs","halfWidth","xDist","cy","halfHeight","yDist","xCornerDist","yCornerDist","xCornerDistSq","yCornerDistSq","maxCornerDistSq","Ellipse","width","height","p","sqrt","normx","normy","Line","x1","y1","x2","y2","start","end","fromSprite","startSprite","endSprite","useCenter","center","fromAngle","rotate","rotateAround","line","asSegment","result","intersectsPoints","reflect","midPoint","centerOn","tx","ty","add","pointOnLine","pointOnSegment","xMin","min","xMax","max","yMin","yMax","coordinatesOnLine","stepRate","results","sx","sy","err","push","e2","atan2","wrap","a1","a2","b1","b2","c1","c2","denom","uc","ua","ub","rect","bx1","by1","bx2","by2","normalAngle","Matrix","d","fromArray","array","matrix","toArray","transpose","Float32Array","pos","newPos","applyInverse","id","translate","scale","tx1","append","d1","identity","identityMatrix","invert","subtract","multiply","divide","clampX","clamp","clampY","radToDeg","getMagnitude","getMagnitudeSq","setMagnitude","magnitude","normalize","isZero","m","dot","cross","perp","rperp","normalRightHand","negative","multiplyAdd","s","interpolate","project","amt","projectUnit","centroid","points","Error","pointslength","parse","xProp","yProp","Polygon","area","_points","closed","flattened","toNumberArray","flatten","inside","j","ix","iy","jx","jy","y0","Number","MAX_VALUE","calculateArea","p1","p2","avgHeight","centerX","centerY","floorAll","ceilAll","inflate","resize","containsRect","intersection","intersectsRaw","tolerance","union","randomX","randomY","getPoint","position","empty","inflatePoint","containsRaw","rx","ry","rw","rh","containsPoint","volume","sameDimensions","aabb","NEGATIVE_INFINITY","POSITIVE_INFINITY","EmptyRectangle","RoundedRectangle","Camera","game","world","view","bounds","deadzone","visible","roundPx","atLimit","displayObject","totalInView","lerp","onShakeComplete","Signal","onFlashComplete","onFadeComplete","fx","_targetPosition","_edge","_position","_shake","intensity","duration","horizontal","vertical","shakeBounds","_fxDuration","_fxType","FOLLOW_LOCKON","FOLLOW_PLATFORMER","FOLLOW_TOPDOWN","FOLLOW_TOPDOWN_TIGHT","SHAKE_BOTH","SHAKE_HORIZONTAL","SHAKE_VERTICAL","ENABLE_FX","boot","camera","Graphics","stage","addChild","preUpdate","follow","style","lerpX","lerpY","helper","w","h","unfollow","focusOn","setPosition","focusOnXY","shake","force","direction","flash","color","clear","beginFill","drawRect","endFill","alpha","fade","update","updateFX","updateShake","checkBounds","time","elapsedMS","dispatch","rnd","frac","updateTarget","worldPosition","math","linear","setBoundsToWorld","vx","vw","vy","vh","setSize","reset","resetFX","State","make","cache","input","load","sound","state","tweens","particles","physics","init","preload","loadUpdate","loadRender","create","preRender","render","paused","resumed","pauseUpdate","shutdown","StateManager","pendingState","states","_pendingState","_clearWorld","_clearCache","_created","_args","onStateChange","onInitCallback","onPreloadCallback","onCreateCallback","onUpdateCallback","onRenderCallback","onResizeCallback","onPreRenderCallback","onLoadUpdateCallback","onLoadRenderCallback","onPausedCallback","onResumedCallback","onPauseUpdateCallback","onShutDownCallback","onPause","pause","onResume","resume","autoStart","newState","isBooted","remove","callbackContext","clearWorld","clearCache","checkState","splice","restart","dummy","previousStateKey","clearCurrentState","setCurrentState","totalQueuedFiles","totalQueuedPacks","loadComplete","removeAll","debug","destroy","link","unlink","_kickstart","getCurrentState","elapsedTime","renderType","context","save","setTransform","restore","_bindings","_prevParams","memorize","_shouldPropagate","active","_boundDispatch","validateListener","listener","fnName","_registerListener","isOnce","listenerContext","priority","binding","prevIndex","_indexOfListener","SignalBinding","_addBinding","execute","n","_priority","cur","_listener","has","addOnce","_destroy","getNumListeners","halt","bindings","paramsArr","forget","dispose","_this","signal","_isOnce","_signal","callCount","params","handlerReturn","detach","isBound","getListener","getSignal","Filter","uniforms","fragmentSrc","passes","shaders","dirty","padding","prevPoint","Date","resolution","mouse","date","getFullYear","getMonth","getDate","getHours","getMinutes","getSeconds","sampleRate","iChannel0","textureData","repeat","iChannel1","iChannel2","iChannel3","setResolution","pointer","toFixed","totalElapsedSeconds","addToWorld","anchorX","anchorY","image","anchor","filters","Plugin","parent","hasPreUpdate","hasUpdate","hasPostUpdate","hasRender","hasPostRender","postRender","PluginManager","plugins","_len","_i","plugin","postUpdate","Stage","DisplayObjectContainer","disableVisibilityChange","exists","worldTransform","currentRenderOrderID","_hiddenVar","_onChange","_bgColor","g","rgba","transparent","config","parseConfig","setBackgroundColor","DOM","getOffset","canvas","Canvas","setUserSelect","setTouchAction","checkVisibility","children","updateTransform","worldAlpha","document","webkitHidden","mozHidden","msHidden","hidden","event","visibilityChange","addEventListener","onblur","onfocus","onpagehide","onpageshow","device","cocoonJSApp","CocoonJS","App","onSuspended","onActivated","focusLoss","focusGain","gamePaused","gameResumed","Color","valueToColor","updateColor","removeEventListener","Group","addToStage","enableBody","physicsBodyType","Physics","ARCADE","z","physicsType","alive","ignoreDestroy","pendingDestroy","classType","Sprite","cursor","inputEnableChildren","onChildInputDown","onChildInputUp","onChildInputOver","onChildInputOut","enableBodyDebug","physicsSortDirection","onDestroy","cursorIndex","fixedToCamera","cameraOffset","hash","_sortProperty","RETURN_NONE","RETURN_TOTAL","RETURN_CHILD","SORT_ASCENDING","SORT_DESCENDING","child","silent","index","body","removeFromHash","addChildAt","updateZ","enable","addToHash","inputEnabled","events","onAddedToGroup$dispatch","addAt","indexOf","addMultiple","moveAll","getAt","getChildAt","frame","createMultiple","quantity","singleKey","singleFrame","align","rows","columns","cellWidth","cellHeight","alignIn","resetCursor","next","previous","swap","child1","child2","swapChildren","bringToTop","getIndex","sendToBack","moveUp","moveDown","xy","getByName","oldChild","newChild","removeChild","hasProperty","operation","checkProperty","checkAlive","checkVisible","setAll","setAllChildren","checkAll","addAll","property","amount","subAll","multiplyAll","divideAll","callAllExists","callback","existsValue","callbackFromArray","callAll","method","methodLength","contextLength","renderOrderID","filter","predicate","checkExists","ArraySet","forEachExists","iterate","forEachAlive","forEachDead","sort","order","ascendingSortHandler","descendingSortHandler","customSort","sortHandler","returnType","total","getFirstExists","createIfNull","resetChild","getFirstAlive","getFirstDead","loadTexture","getTop","getBottom","getClosestTo","object","tempDistance","getFurthestFrom","countLiving","countDead","getRandom","startIndex","ArrayUtils","getRandomItem","destroyPhase","onRemovedFromGroup$dispatch","removed","group","destroyTexture","removeBetween","endIndex","destroyChildren","soft","rotation","World","_definedSize","_width","_height","stateChange","setBounds","sprite","useBounds","_currentBounds","between","Game","renderer","antialias","physicsConfig","preserveDrawingBuffer","clearBeforeRender","isRunning","raf","net","Device","lockRender","stepping","pendingStep","stepCount","onBlur","onFocus","_paused","_codePaused","currentUpdateID","updatesThisFrame","_deltaTime","_lastCount","_spiraling","fpsProblemNotifier","forceSingleUpdate","_nextFpsNotification","enableDebug","RandomDataGenerator","now","whenReady","seed","ScaleManager","setUpRenderer","GameObjectFactory","GameObjectCreator","Cache","Loader","Time","TweenManager","Input","SoundManager","Particles","Create","Net","Debug","showDebugHeader","RequestAnimationFrame","stopFocus","focus","hideBanner","v","webAudio","chrome","webGL","CanvasRenderer","WebGLRenderer","contextLost","contextRestored","cocoonJS","screencanvas","smoothed","addToDOM","preventDefault","initContext","clearGLTextures","updateLogic","desiredFpsMult","updateRender","slowMotion","desiredFps","slowStep","elapsed","count","refresh","timeStep","enableStep","disableStep","step","stop","removeFromDOM","defaultRenderer","muteOnPause","setMute","cordova","iOS","unsetMute","hitCanvas","hitContext","moveCallbacks","customCandidateHandler","customCandidateHandlerContext","pollRate","enabled","multiInputOverride","MOUSE_TOUCH_COMBINE","speed","circle","maxPointers","tapRate","doubleTapRate","holdRate","justPressedRate","justReleasedRate","recordPointerHistory","recordRate","recordLimit","pointer1","pointer2","pointer3","pointer4","pointer5","pointer6","pointer7","pointer8","pointer9","pointer10","pointers","activePointer","mousePointer","keyboard","touch","mspointer","gamepad","resetLocked","onDown","onUp","onTap","onHold","minPriorityID","interactiveItems","_localPoint","_pollCounter","_oldPosition","_x","_y","MOUSE_OVERRIDES_TOUCH","TOUCH_OVERRIDES_MOUSE","MAX_POINTERS","Pointer","PointerMode","CURSOR","addPointer","Mouse","Touch","MSPointer","Keyboard","Gamepad","CanvasPool","getContext","_onClickTrampoline","onClickTrampoline","setInteractiveCandidateHandler","addMoveCallback","deleteMoveCallback","TOUCH","hard","resetSpeed","startPointer","countActivePointers","updatePointer","identifier","move","stopPointer","limit","getPointer","isActive","getPointerFromIdentifier","getPointerFromId","pointerId","getLocalPosition","wt","hitTest","localPoint","worldVisible","hitArea","TileSprite","texture","graphicsData","data","fill","shape","processClickTrampolines","mouseDownCallback","mouseUpCallback","mouseOutCallback","mouseOverCallback","mouseWheelCallback","capture","button","wheelDelta","locked","stopOnGameOut","pointerLock","_onMouseDown","_onMouseMove","_onMouseUp","_onMouseOut","_onMouseOver","_onMouseWheel","_wheelEvent","NO_BUTTON","LEFT_BUTTON","MIDDLE_BUTTON","RIGHT_BUTTON","BACK_BUTTON","FORWARD_BUTTON","WHEEL_UP","WHEEL_DOWN","android","onMouseDown","onMouseMove","onMouseUp","_onMouseUpGlobal","onMouseUpGlobal","_onMouseOutGlobal","onMouseOutGlobal","onMouseOut","onMouseOver","onMouseWheel","wheelEvent","mouseMoveCallback","withinGame","leftButton","rightButton","bindEvent","deltaY","requestPointerLock","element","mozRequestPointerLock","webkitRequestPointerLock","_pointerLockChange","pointerLockChange","pointerLockElement","mozPointerLockElement","webkitPointerLockElement","releasePointerLock","exitPointerLock","mozExitPointerLock","webkitExitPointerLock","_stubsGenerated","makeBinder","defineProperties","detail","deltaX","wheelDeltaX","deltaZ","pointerDownCallback","pointerMoveCallback","pointerUpCallback","_onMSPointerDown","_onMSPointerMove","_onMSPointerUp","_onMSPointerUpGlobal","_onMSPointerOut","_onMSPointerOver","onPointerDown","onPointerMove","onPointerUp","onPointerUpGlobal","onPointerOut","onPointerOver","pointerType","DeviceButton","buttonCode","isDown","isUp","timeDown","timeUp","repeats","altKey","shiftKey","ctrlKey","onFloat","padFloat","justPressed","justReleased","pointerMode","CONTACT","middleButton","backButton","forwardButton","eraserButton","ERASER_BUTTON","_holdSent","_history","_nextDrop","_stateReset","clientX","clientY","pageX","pageY","screenX","screenY","rawMovementX","rawMovementY","movementX","movementY","isMouse","previousTapTime","totalTouches","msSinceLastClick","targetObject","interactiveCandidates","positionDown","positionUp","_clickTrampolines","_trampolineTargetObject","resetButtons","processButtonsDown","buttons","processButtonsUp","updateButtons","down","toLowerCase","totalActivePointers","_touchedHandler","processInteractiveObjects","shift","fromClick","pollLocked","mozMovementX","webkitMovementX","mozMovementY","webkitMovementY","isDragged","highestRenderOrderID","highestInputPriorityID","candidateTarget","currentNode","first","checked","validForInput","checkPointerDown","checkPointerOver","priorityID","swapTarget","newTarget","_pointerOutHandler","_pointerOverHandler","leave","currentPointers","addClickTrampoline","callbackArgs","trampolines","trampoline","_releasedHandler","resetMovement","touchLockCallbacks","touchStartCallback","touchMoveCallback","touchEndCallback","touchEnterCallback","touchLeaveCallback","touchCancelCallback","_onTouchStart","_onTouchMove","_onTouchEnd","_onTouchEnter","_onTouchLeave","_onTouchCancel","onTouchStart","onTouchMove","onTouchEnd","onTouchEnter","onTouchLeave","onTouchCancel","consumeDocumentTouches","_documentTouchMove","addTouchLockCallback","onEnd","removeTouchLockCallback","cb","changedTouches","InputHandler","useHandCursor","_setHandCursor","allowHorizontalDrag","allowVerticalDrag","snapOffset","snapOnDrag","snapOnRelease","snapX","snapY","snapOffsetX","snapOffsetY","pixelPerfectOver","pixelPerfectClick","pixelPerfectAlpha","draggable","boundsRect","boundsSprite","scaleLayer","dragOffset","dragFromCenter","dragStopBlocksInputUp","dragStartPoint","dragDistanceThreshold","dragTimeThreshold","downPoint","snapPoint","_dragPoint","_dragPhase","_pendingDrag","_dragTimePass","_dragDistancePass","_wasEnabled","_tempPoint","_pointerData","camX","camY","isOver","isOut","timeOver","timeOut","downDuration","onAddedToGroup","addedToGroup","onRemovedFromGroup","removedFromGroup","flagged","highestID","highestRenderID","includePixelPerfect","ignoreChildInput","isPixelPerfect","pointerX","pointerY","pointerDown","pointerUp","pointerTimeDown","pointerTimeUp","pointerOver","pointerOut","pointerTimeOver","pointerTimeOut","pointerDragged","fastTest","worldScale","checkPixel","baseTexture","trim","crop","_dx","_dy","clearRect","drawImage","rgb","getImageData","startDrag","_draggedPointerID","updateDrag","sendEvent","onInputOver$dispatch","onInputOut$dispatch","onInputDown$dispatch","dragTimeElapsed","onInputUp$dispatch","stopDrag","fromStart","globalToLocalX","py","globalToLocalY","checkBoundsRect","checkBoundsSprite","onDragUpdate","justOver","delay","overDuration","justOut","enableDrag","lockCenter","pixelPerfect","alphaThreshold","disableDrag","onDragStart$dispatch","grid","boundsFluid","scaleFluidInversed","onDragStop$dispatch","setDragLock","allowHorizontal","allowVertical","enableSnap","onDrag","onRelease","disableSnap","offsetX","offsetY","_gamepadIndexMap","_rawPads","_active","_gamepadSupportAvailable","navigator","webkitGetGamepads","webkitGamepads","userAgent","getGamepads","_prevRawGamepadTypes","_prevTimestamps","onConnectCallback","onDisconnectCallback","onDownCallback","onUpCallback","onAxisCallback","onFloatCallback","_ongamepadconnected","_gamepaddisconnected","_gamepads","SinglePad","addCallbacks","callbacks","onConnect","onDisconnect","onAxis","_onGamepadConnected","onGamepadConnected","_onGamepadDisconnected","onGamepadDisconnected","newPad","connect","removedPad","disconnect","_pollGamepads","pad1","pollStatus","pad2","pad3","pad4","rawGamepads","gamepadsChanged","_rawPad","singlePad","validConnections","rawIndices","padIndices","connected","k","rawPad","setDeadZones","deadZone","BUTTON_0","BUTTON_1","BUTTON_2","BUTTON_3","BUTTON_4","BUTTON_5","BUTTON_6","BUTTON_7","BUTTON_8","BUTTON_9","BUTTON_10","BUTTON_11","BUTTON_12","BUTTON_13","BUTTON_14","BUTTON_15","AXIS_0","AXIS_1","AXIS_2","AXIS_3","AXIS_4","AXIS_5","AXIS_6","AXIS_7","AXIS_8","AXIS_9","XBOX360_A","XBOX360_B","XBOX360_X","XBOX360_Y","XBOX360_LEFT_BUMPER","XBOX360_RIGHT_BUMPER","XBOX360_LEFT_TRIGGER","XBOX360_RIGHT_TRIGGER","XBOX360_BACK","XBOX360_START","XBOX360_STICK_LEFT_BUTTON","XBOX360_STICK_RIGHT_BUTTON","XBOX360_DPAD_LEFT","XBOX360_DPAD_RIGHT","XBOX360_DPAD_UP","XBOX360_DPAD_DOWN","XBOX360_STICK_LEFT_X","XBOX360_STICK_LEFT_Y","XBOX360_STICK_RIGHT_X","XBOX360_STICK_RIGHT_Y","PS3XC_X","PS3XC_CIRCLE","PS3XC_SQUARE","PS3XC_TRIANGLE","PS3XC_L1","PS3XC_R1","PS3XC_L2","PS3XC_R2","PS3XC_SELECT","PS3XC_START","PS3XC_STICK_LEFT_BUTTON","PS3XC_STICK_RIGHT_BUTTON","PS3XC_DPAD_UP","PS3XC_DPAD_DOWN","PS3XC_DPAD_LEFT","PS3XC_DPAD_RIGHT","PS3XC_STICK_LEFT_X","PS3XC_STICK_LEFT_Y","PS3XC_STICK_RIGHT_X","PS3XC_STICK_RIGHT_Y","padParent","_padParent","_prevTimestamp","_buttons","_buttonsLen","_axes","_axesLen","getButton","timestamp","rawButtonVal","isNaN","processButtonDown","processButtonUp","processButtonFloat","axes","processAxisChange","triggerCallback","disconnectingIndex","axis","axisCode","buttonValue","Key","keycode","_enabled","keyCode","onHoldCallback","onHoldContext","_justDown","_justUp","processKeyDown","processKeyUp","upDuration","pressEvent","onPressCallback","_keys","_capture","_onKeyDown","_onKeyPress","_onKeyUp","_k","onPress","addKey","addKeyCapture","addKeys","removeKey","removeKeyCapture","createCursorKeys","up","KeyCode","processKeyPress","clearCaptures","String","fromCharCode","charCode","A","charCodeAt","B","C","D","E","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z","ZERO","ONE","TWO","THREE","FOUR","FIVE","SIX","SEVEN","EIGHT","NINE","NUMPAD_0","NUMPAD_1","NUMPAD_2","NUMPAD_3","NUMPAD_4","NUMPAD_5","NUMPAD_6","NUMPAD_7","NUMPAD_8","NUMPAD_9","NUMPAD_MULTIPLY","NUMPAD_ADD","NUMPAD_ENTER","NUMPAD_SUBTRACT","NUMPAD_DECIMAL","NUMPAD_DIVIDE","F1","F2","F3","F4","F5","F6","F7","F8","F9","F10","F11","F12","F13","F14","F15","COLON","EQUALS","COMMA","UNDERSCORE","PERIOD","QUESTION_MARK","TILDE","OPEN_BRACKET","BACKWARD_SLASH","CLOSED_BRACKET","QUOTES","BACKSPACE","TAB","CLEAR","ENTER","SHIFT","CONTROL","ALT","CAPS_LOCK","ESC","SPACEBAR","PAGE_UP","PAGE_DOWN","END","HOME","PLUS","MINUS","INSERT","DELETE","HELP","NUM_LOCK","match","Component","Angle","wrapAngle","Animation","play","frameRate","loop","killOnComplete","animations","AutoCull","autoCull","inCamera","checkWorldBounds","_bounds","Bounds","container","alignTo","BringToTop","Core","install","components","previousPosition","Events","PhysicsBody","AnimationManager","LoadTexture","FixedToCamera","previousRotation","fresh","_exists","P2JS","removeFromWorld","customRender","Crop","cropRect","_crop","updateCrop","resetFrame","_frame","cw","ch","_updateUvs","Delta","Destroy","onDestroy$dispatch","removeFrom","Video","onChangeSource","resizeFrame","BitmapText","_glyphs","mask","renderable","transformCallback","transformCallbackContext","filterArea","_mask","_destroyCachedSprite","_parent","_onDestroy","_onAddedToGroup","_onRemovedFromGroup","_onRemovedFromWorld","_onKilled","_onRevived","_onEnterBounds","_onOutOfBounds","_onInputOver","_onInputOut","_onInputDown","_onInputUp","_onDragStart","_onDragUpdate","_onDragStop","_onAnimationStart","_onAnimationComplete","_onAnimationLoop","onRemovedFromWorld","onKilled","onRevived","onOutOfBounds","onEnterBounds","onInputOver","onInputOut","onInputDown","onInputUp","onDragStart","onDragStop","onAnimationStart","onAnimationComplete","onAnimationLoop","backing","_fixedToCamera","Health","health","maxHealth","damage","kill","setHealth","heal","InCamera","InputEnabled","InWorld","outOfCameraBoundsKill","_outOfBoundsFired","onEnterBounds$dispatch","onOutOfBounds$dispatch","outOfBoundsKill","inWorld","LifeSpan","lifespan","physicsElapsedMS","revive","onRevived$dispatch","onKilled$dispatch","stopAnimation","setFrame","scaleMode","RenderTexture","setTexture","BitmapData","hasFrameData","loadFrameData","getFrameData","frameData","valid","Tilemap","TilemapLayer","Texture","fromCanvas","img","getImage","base","skipRender","trimmed","spriteSourceSizeX","spriteSourceSizeY","sourceSizeW","sourceSizeH","requiresReTint","tilingTexture","refreshTexture","frameName","Overlap","overlap","_reset","Reset","ScaleMinMax","scaleMin","scaleMax","checkTransform","setScaleMinMax","minX","minY","maxX","maxY","Smoothed","existing","weapon","Weapon","createBullets","Image","creature","mesh","Creature","tween","physicsGroup","spriteBatch","SpriteBatch","audio","audioSprite","addSprite","tileSprite","rope","Rope","text","Text","overFrame","outFrame","downFrame","upFrame","Button","graphics","emitter","maxParticles","Arcade","Emitter","retroFont","font","characterWidth","characterHeight","chars","charsPerRow","xSpacing","ySpacing","xOffset","yOffset","RetroFont","bitmapText","tilemap","tileWidth","tileHeight","renderTexture","addToCache","uuid","addRenderTexture","video","url","bitmapData","addBitmapData","Tween","preUpdatePhysics","preUpdateLifeSpan","preUpdateInWorld","preUpdateCore","_onOverFrame","_onOutFrame","_onDownFrame","_onUpFrame","onOverSound","onOutSound","onDownSound","onUpSound","onOverSoundMarker","onOutSoundMarker","onDownSoundMarker","onUpSoundMarker","onOverMouseOnly","justReleasedPreventsOver","freezeFrames","forceOut","setFrames","onInputOverHandler","onInputOutHandler","onInputDownHandler","onInputUpHandler","removedFromWorld","STATE_OVER","STATE_OUT","STATE_DOWN","STATE_UP","clearFrames","setStateFrame","switchImmediately","frameKey","changeStateFrame","setStateSound","marker","soundKey","markerKey","Sound","AudioSprite","playStateSound","setSounds","overSound","overMarker","downSound","downMarker","outSound","outMarker","upSound","upMarker","setOverSound","setOutSound","setDownSound","setUpSound","changedUp","skipPool","ctx","smoothProperty","renderSession","getSmoothingPrefix","imageData","pixels","buffer","ArrayBuffer","BaseTexture","FrameData","textureFrame","addFrame","Frame","disableTextureUpload","cls","_image","_pos","_size","_scale","_rotate","_alpha","prev","_anchor","_tempR","_tempG","_tempB","_circle","_swapCanvas","moveH","moveV","draw","fillStyle","fillRect","generateTexture","toDataURL","addImage","processPixelRGB","pixel","createColor","unpackPixel","getPixel32","setPixel32","putImageData","processPixel","replaceRGB","r1","g1","r2","g2","region","packPixel","setHSL","bHaveH","bHaveS","bHaveL","HSLtoRGB","shiftHSL","red","green","blue","immediate","LITTLE_ENDIAN","setPixel","getPixel","getPixelRGB","hsl","hsv","getPixels","getFirstPixel","scan","scaleX","scaleY","newWidth","newHeight","blendMode","getCanvas","tint","cachedTint","tintedTexture","CanvasTinter","getTintedTexture","globalAlpha","op","copyTransform","copyRect","drawGroup","drawGroupProxy","drawFull","CanvasGraphics","renderGraphics","worldRotation","shadow","blur","shadowColor","shadowBlur","shadowOffsetX","shadowOffsetY","alphaMask","sourceRect","maskRect","blendSourceAtop","blendReset","extract","destination","prevFont","fillText","beginPath","arc","closePath","moveTo","lineTo","lineWidth","strokeStyle","stroke","textureLine","createPattern","blendSourceOver","blendSourceIn","blendSourceOut","blendDestinationOver","blendDestinationIn","blendDestinationOut","blendDestinationAtop","blendXor","blendAdd","blendMultiply","blendScreen","blendOverlay","blendDarken","blendLighten","blendColorDodge","blendColorBurn","blendHardLight","blendSoftLight","blendDifference","blendExclusion","blendHue","blendSaturation","blendColor","blendLuminosity","getSmoothingEnabled","setSmoothingEnabled","globalCompositeOperation","getTransform","translateX","translateY","skewX","skewY","fillAlpha","lineColor","currentPath","_webGL","isMask","boundsPadding","_localBounds","webGLDirty","cachedSpriteDirty","lineStyle","lineAlpha","drawShape","updateLocalBounds","quadraticCurveTo","cpX","cpY","toX","toY","xa","ya","fromX","fromY","bezierCurveTo","cpX2","cpY2","dt","dt2","dt3","t2","t3","arcTo","mm","dd","cc","tt","k1","k2","j1","j2","qx","qy","startAngle","endAngle","anticlockwise","segments","sweep","segs","startX","startY","filling","theta","theta2","cTheta","sTheta","segMinus","remainder","real","fillColor","drawRoundedRect","drawCircle","drawEllipse","drawPolygon","path","clearDirty","canvasBuffer","CanvasBuffer","_renderWebGL","_cacheAsBitmap","_generateCachedSprite","updateCachedSpriteTexture","_cachedSprite","blendModeManager","setBlendMode","maskManager","pushMask","_filters","filterManager","pushFilter","_filterBlock","currentBlendMode","blendModeWebGL","blendModesWebGL","gl","blendFunc","WebGLGraphics","popFilter","popMask","drawCount","_renderCanvas","_prevTint","transform","blendModesCanvas","shakeX","shakeY","w0","w1","h0","h1","x3","y3","x4","y4","tempPoint","Infinity","RECT","RREC","CIRC","ELIP","getLocalBounds","cachedSprite","destroyCachedSprite","GraphicsData","POLY","_lineTint","_fillTint","PolyK","Triangulate","sign","tgs","avl","al","i0","i1","i2","ax","ay","bx","by","earFound","_convex","vi","_PointInTriangle","v0x","v0y","v1x","v1y","v2x","v2y","dot00","dot01","dot02","dot11","dot12","invDenom","EarCut","holeIndices","dim","hasHoles","outerLen","outerNode","linkedList","triangles","eliminateHoles","earcutLinked","clockwise","sum","insertNode","filterPoints","again","steiner","removeNode","ear","pass","indexCurve","isEarHashed","isEar","cureLocalIntersections","splitEarcut","pointInTriangle","minTX","minTY","maxTX","maxTY","minZ","zOrder","maxZ","nextZ","prevZ","locallyInside","isValidDiagonal","splitPolygon","list","queue","getLeftmost","compareX","eliminateHole","hole","findHoleBridge","hx","hy","tan","tanMin","sortLinked","q","tail","numMerges","pSize","qSize","inSize","leftmost","intersectsPolygon","middleInside","q1","q2","Node","an","bp","stencilBufferLimit","webGLData","projection","shader","shaderManager","primitiveShader","updateGraphics","mode","stencilManager","pushStencil","drawElements","TRIANGLE_FAN","UNSIGNED_SHORT","indices","popStencil","setShader","uniformMatrix3fv","translationMatrix","uniform1f","flipY","uniform2f","projectionVector","offsetVector","uniform3fv","tintColor","hex2rgb","bindBuffer","ARRAY_BUFFER","vertexAttribPointer","aVertexPosition","FLOAT","colorAttribute","ELEMENT_ARRAY_BUFFER","indexBuffer","TRIANGLE_STRIP","lastIndex","graphicsDataPool","switchMode","canDrawUsingSimple","buildPoly","buildComplexPoly","buildLine","buildRectangle","buildCircle","buildRoundedRectangle","upload","WebGLGraphicsData","rectData","verts","vertPos","tempPoints","rrectData","recPoints","quadraticBezierCurve","vecPos","getPt","n1","n2","perc","diff","xb","yb","circleData","totalSegs","seg","firstPoint","lastPoint","midPointX","midPointY","unshift","p1x","p1y","p2x","p2y","p3x","p3y","perpx","perpy","perp2x","perp2y","perp3x","perp3y","pdist","dist","indexCount","indexStart","createBuffer","glPoints","bufferData","STATIC_DRAW","glIndicies","Uint16Array","updateGraphicsTint","strokeRect","kappa","ox","oy","xe","ye","xm","ym","maxRadius","renderGraphicsMask","tintR","tintG","tintB","drawTriangle","cull","triangle","cameraToFace","ab","faceNormal","drawTriangles","vertices","point1","point2","point3","_tempMatrix","renderXY","WEBGL_RENDERER","renderWebGL","renderCanvas","renderRawXY","textBounds","colors","strokeColors","fontStyles","fontWeights","autoRound","useAdvancedWrap","_res","_text","_fontComponents","_lineSpacing","_charCount","setStyle","updateText","setShadow","shadowStroke","shadowFill","backgroundColor","boundsAlignH","boundsAlignV","strokeThickness","wordWrap","wordWrapWidth","maxLines","tabs","fontToComponents","fontStyle","fontVariant","fontWeight","fontSize","componentsToFont","outputText","runWordWrap","lines","lineWidths","maxLineWidth","fontProperties","determineFontProperties","drawnLines","measureLine","measureText","tab","section","snapToCeil","lineHeight","lineSpacing","isCocoonJS","textBaseline","lineCap","lineJoin","linePositionX","linePositionY","ascent","updateLine","updateShadow","strokeText","renderTabLine","updateTexture","snap","lineLength","letter","clearColors","clearFontValues","addColor","addStrokeColor","addFontStyle","addFontWeight","weight","precalculateWordWrap","wrappedLines","advancedWordWrap","basicWordWrap","linesCount","currentLineWidth","words","word","wordWithSpace","wordWidth","newWord","secondPart","spaceLeft","wordWidthWithSpace","updateFont","family","exec","fontFamily","setText","parseList","setTextBounds","pivot","properties","fontPropertiesCache","fontPropertiesCanvas","fontPropertiesContext","baseline","descent","imagedata","idx","parseFloat","createElement","textWidth","textHeight","_prevAnchor","_maxWidth","_data","getBitmapFont","_font","_fontSize","_align","_tint","sourceWidth","sourceHeight","scanLine","lastSpace","wrappedWidth","prevCharCode","maxWidth","test","charAt","charData","kerning","xAdvance","cleanText","re","purgeGlyphs","kept","checkImageKey","characterSpacingX","characterSpacingY","characterPerRow","multiLine","autoUpperCase","customSpacingX","customSpacingY","fixedWidth","fontSet","grabData","currentX","currentY","updateFrameData","stamp","ALIGN_LEFT","ALIGN_RIGHT","ALIGN_CENTER","TEXT_SET1","TEXT_SET2","TEXT_SET3","TEXT_SET4","TEXT_SET5","TEXT_SET6","TEXT_SET7","TEXT_SET8","TEXT_SET9","TEXT_SET10","TEXT_SET11","setFixedWidth","lineAlignment","content","characterSpacing","allowLowerCase","buildRetroFontText","getLongestLine","pasteLine","longestLine","removeUnsupportedCharacters","stripCR","newString","aChar","code","updateOffset","diffX","diffY","frames","getFrames","newText","toUpperCase","_hasUpdateAnimation","_updateAnimationCallback","updateAnimation","_updateAnimation","difference","_scroll","def","TilingSprite","tilePosition","physicsElapsed","autoScroll","stopScroll","deviceReadyAt","initialized","desktop","iOSVersion","node","nodeWebkit","electron","ejecta","crosswalk","chromeOS","linux","macOS","windows","windowsPhone","canvasBitBltShift","file","fileSystem","localStorage","worker","css3D","typedArray","vibration","getUserMedia","quirksMode","arora","chromeVersion","epiphany","firefox","firefoxVersion","ie","ieVersion","trident","tridentVersion","edge","mobileSafari","midori","opera","safari","safariVersion","webApp","silk","audioData","ogg","opus","mp3","wav","m4a","webm","dolby","oggVideo","h264Video","mp4Video","webmVideo","vp9Video","hlsVideo","iPhone","iPhone4","iPad","pixelRatio","littleEndian","support32bit","fullscreen","requestFullscreen","cancelFullscreen","fullscreenKeyboard","onInitialized","nonPrimer","readyCheck","_readyCheck","_monitor","_queue","readyState","setTimeout","_initialize","item","_checkOS","vita","kindle","RegExp","$1","_checkFeatures","getItem","error","WebGLRenderingContext","compatMode","webkitGetUserMedia","mozGetUserMedia","msGetUserMedia","oGetUserMedia","URL","webkitURL","mozURL","msURL","_checkInput","documentElement","maxTouchPoints","msPointerEnabled","pointerEnabled","_checkFullScreenSupport","fs","cfs","Element","_checkBrowser","$3","process","require","versions","_checkVideo","videoElement","canPlayType","_checkAudio","audioElement","major","minor","$2","_checkDevice","Int8Array","Uint8Array","_checkIsLittleEndian","Uint8ClampedArray","Int32Array","_checkIsUint8ClampedImageData","vibrate","webkitVibrate","mozVibrate","msVibrate","elem","createImageData","_checkCSS3D","has3d","el","transforms","webkitTransform","OTransform","msTransform","MozTransform","insertBefore","getComputedStyle","getPropertyValue","canPlayAudio","canPlayVideo","isConsoleOpen","profile","profileEnd","isAndroidStockBrowser","matches","display","msTouchAction","overflowHidden","getElementById","overflow","appendChild","parentNode","vendor","prefix","setImageRenderingCrisp","types","msInterpolationMode","setImageRenderingBicubic","forceSetTimeOut","vendors","requestAnimationFrame","cancelAnimationFrame","_isSetTimeOut","_onLoop","_timeOutID","updateSetTimeout","updateRAF","rafTime","timeToCall","clearTimeout","isSetTimeOut","isRAF","PI2","fuzzyEqual","epsilon","fuzzyLessThan","fuzzyGreaterThan","fuzzyCeil","val","fuzzyFloor","average","shear","snapTo","gap","snapToFloor","roundTo","place","pow","floorTo","ceilTo","angleBetween","angleBetweenY","angleBetweenPoints","angleBetweenPointsY","reverseAngle","angleRad","normalizeAngle","maxAdd","minSub","range","wrapValue","isOdd","isEven","minProperty","maxProperty","radians","linearInterpolation","bezierInterpolation","bernstein","catmullRomInterpolation","catmullRom","p0","factorial","res","p3","v0","v1","roundAwayFromZero","sinCosGenerator","sinAmplitude","cosAmplitude","frequency","frq","cosTable","sinTable","distanceSq","distancePow","clampBottom","within","mapLinear","smoothstep","smootherstep","percent","degreeToRadiansFactor","radianToDegreesFactor","degrees","seeds","s0","s1","s2","sow","integer","integerInRange","realInRange","normal","pick","ary","weightedPick","QuadTree","maxObjects","maxLevels","level","objects","nodes","_empty","subWidth","subHeight","populate","populateHandler","insert","retrieve","returnObjects","getHostName","location","hostname","checkDomainName","domain","updateQueryString","redirect","href","separator","getQueryString","parameter","keyValues","search","substring","decodeURI","decodeURIComponent","frameBased","_tweens","_add","easeMap","Power0","Easing","Power1","Power2","Power3","Power4","Linear","None","Quad","Quadratic","Out","Cubic","Quart","Quartic","Quint","Quintic","Sine","Sinusoidal","Expo","Exponential","Circ","Circular","Elastic","Back","Bounce","Quad.easeIn","In","Cubic.easeIn","Quart.easeIn","Quint.easeIn","Sine.easeIn","Expo.easeIn","Circ.easeIn","Elastic.easeIn","Back.easeIn","Bounce.easeIn","Quad.easeOut","Cubic.easeOut","Quart.easeOut","Quint.easeOut","Sine.easeOut","Expo.easeOut","Circ.easeOut","Elastic.easeOut","Back.easeOut","Bounce.easeOut","Quad.easeInOut","InOut","Cubic.easeInOut","Quart.easeInOut","Quint.easeInOut","Sine.easeInOut","Expo.easeInOut","Circ.easeInOut","Elastic.easeInOut","Back.easeInOut","Bounce.easeInOut","_pauseAll","_resumeAll","getAll","pendingDelete","_manager","addTweens","numTweens","isTweening","some","_pause","_resume","pauseAll","resumeAll","manager","timeline","timeScale","repeatCounter","onStart","onLoop","onRepeat","onChildComplete","onComplete","chainedTween","isPaused","_onUpdateCallback","_onUpdateCallbackContext","_pausedTime","_hasStarted","ease","yoyo","Default","TweenData","vEnd","loadValues","complete","updateTweenData","repeatDelay","yoyoDelay","easing","interpolation","repeatAll","chain","startTime","status","PENDING","RUNNING","LOOPED","COMPLETE","generateData","vStart","vStartCache","vEndCache","repeatTotal","inReverse","easingFunction","interpolationFunction","interpolationContext","isFrom","yoyoCounter","ms","fps","blob","reversed","asin","prevTime","_desiredFps","suggestedFps","advancedTiming","fpsMin","fpsMax","msMin","msMax","pauseDuration","timeExpected","Timer","_frameCount","_elapsedAccumulator","_started","_timeLastSecond","_pauseStarted","_justResumed","_timers","timer","autoDestroy","previousDateNow","updateAdvancedTiming","updateTimers","elapsedSince","since","elapsedSecondsSince","running","expired","nextTick","timeCap","_pauseTotal","_now","_marked","_diff","_newTick","MINUTE","SECOND","HALF","QUARTER","repeatCount","tick","TimerEvent","clearEvents","clearPendingEvents","adjustEvents","baseTime","currentFrame","currentAnim","updateIfVisible","isLoaded","_frameData","_anims","_outputFrames","anim","copyFrameData","useNumericIndex","getFrameIndexes","validateFrames","checkFrameName","isPlaying","getAnimation","refreshFrame","getFrame","getFrameByName","_frameIndex","_frames","loopCount","isFinished","_pauseStartTime","_frameDiff","_frameSkip","onUpdate","isReversed","_timeLastFrame","_timeNextFrame","updateCurrentFrame","onAnimationStart$dispatch","reverseOnce","frameId","useLocalFrameIndex","frameIndex","dispatchComplete","onAnimationComplete$dispatch","onAnimationLoop$dispatch","signalUpdate","fromPlay","generateFrameNames","suffix","zeroPad","rotated","rotationDirection","spriteSourceSizeW","spriteSourceSizeH","setTrim","actualWidth","actualHeight","destX","destY","destWidth","destHeight","getRect","_frameNames","getFrameRange","AnimationParser","spriteSheet","frameWidth","frameHeight","frameMax","margin","spacing","row","column","JSONData","json","newFrame","filename","sourceSize","spriteSourceSize","JSONDataPyxel","signature","tileheight","tilewidth","JSONDataHash","XMLData","xml","getElementsByTagName","frameX","frameY","attributes","autoResolveURL","_cache","binary","bitmapFont","_urlMap","_urlResolver","_urlTemp","onSoundUnlock","_cacheMap","TEXTURE","SOUND","PHYSICS","BINARY","BITMAPFONT","JSON","XML","SHADER","RENDER_TEXTURE","addDefaultImage","addMissingImage","MISSING","addCanvas","removeImage","_resolveURL","addSound","audioTag","decoded","isDecoding","touchLocked","addText","addPhysicsData","format","addTilemap","mapData","addBinary","binaryData","addBitmapFont","atlasData","atlasType","LoaderParser","jsonBitmapFont","xmlBitmapFont","addJSON","addXML","addVideo","isBlob","addShader","addSpriteSheet","addTextureAtlas","TEXTURE_ATLAS_XML_STARLING","TEXTURE_ATLAS_JSON_PYXEL","reloadSound","getSound","reloadSoundComplete","updateSound","decodedSound","isSoundDecoded","isSoundReady","checkKey","checkURL","checkCanvasKey","checkTextureKey","checkSoundKey","checkTextKey","checkPhysicsKey","checkTilemapKey","checkBinaryKey","checkBitmapDataKey","checkBitmapFontKey","checkJSONKey","checkXMLKey","checkVideoKey","checkShaderKey","checkRenderTextureKey","full","getTextureFrame","getSoundData","getText","getPhysicsData","fixtureKey","fixtures","fixture","getTilemapData","getBinary","getBitmapData","getJSON","getXML","getVideo","getShader","getRenderTexture","getBaseTexture","getFrameCount","getFrameByIndex","getURL","getKeys","removeCanvas","destroyBaseTexture","removeSound","removeText","removePhysics","removeTilemap","removeBinary","removeBitmapData","removeBitmapFont","removeJSON","removeXML","removeVideo","removeShader","removeRenderTexture","removeSpriteSheet","removeTextureAtlas","atlas","_glTextures","baseURL","isLoading","hasLoaded","preloadSprite","crossOrigin","headers","onLoadStart","onLoadComplete","onPackComplete","onFileStart","onFileComplete","onFileError","useXDomainRequest","_warnedAboutXDomainRequest","enableParallel","maxParallelDownloads","_withSyncPointDepth","_fileList","_flightQueue","_processingHead","_fileLoadStarted","_totalPackCount","_totalFileCount","_loadedPackCount","_loadedFileCount","TEXTURE_ATLAS_JSON_ARRAY","TEXTURE_ATLAS_JSON_HASH","PHYSICS_LIME_CORONA_JSON","PHYSICS_PHASER_JSON","setPreloadSprite","checkKeyExists","getAssetIndex","bestFound","loaded","loading","getAsset","fileIndex","addToFileList","overwrite","extension","syncPoint","currentFile","replaceInFileList","pack","images","urls","script","spritesheet","autoDecode","noAudio","jsonURL","jsonData","audiosprite","loadEvent","asBlob","CSV","TILED_JSON","LIME_CORONA_JSON","textureURL","atlasURL","parseXml","atlasJSONArray","atlasJSONHash","atlasXML","withSyncPoint","addSyncPoint","asset","removeFile","updateProgress","processLoadQueue","finishedLoading","requestUrl","requestObject","progress","syncblock","inflightLimit","processPack","loadFile","abnormal","asyncComplete","errorMessage","packData","transformUrl","xhrLoad","fileComplete","loadImageTag","getAudioURL","usingWebAudio","usingAudioTag","loadAudioTag","fileError","getVideoURL","loadVideoTag","jsonLoadComplete","xmlLoadComplete","csvLoadComplete","onload","onerror","controls","autoplay","videoLoadEvent","canplay","Audio","playThroughEvent","XDomainRequest","xhrLoadWithXDR","xhr","XMLHttpRequest","open","responseType","setRequestHeader","message","send","timeout","ontimeout","onprogress","videoType","uri","lastIndexOf","audioType","reason","loadNext","responseText","response","decode","language","defer","head","contentType","domparser","DOMParser","parseFromString","ActiveXObject","async","loadXML","totalLoadedFiles","totalLoadedPacks","progressFloat","info","common","getAttribute","letters","kernings","second","finalizeBitmapFont","_face","_lineHeight","_id","_xoffset","_yoffset","_xadvance","_second","_first","_amount","bitmapFontData","autoplayKey","sounds","spritemap","addMarker","connectToMaster","markers","totalDuration","currentTime","durationMS","stopTime","pausedPosition","pausedTime","currentMarker","fadeTween","pendingPlayback","override","allowMultiple","externalNode","masterGainNode","gainNode","_sound","masterGain","createGain","createGainNode","gain","soundHasUnlocked","onDecoded","onPlay","onStop","onMute","onMarkerComplete","_volume","_buffer","_muted","_tempMarker","_tempPosition","_tempVolume","_tempPause","_muteVolume","_tempLoop","_onDecodedEventDispatched","removeMarker","onEndedHandler","onended","isDecoded","loopFull","forceRestart","noteOff","createBufferSource","noteGrainOn","muted","mute","prevMarker","fadeIn","fadeTo","fadeOut","fadeComplete","updateGlobalVolume","globalVolume","onSoundDecode","onVolumeChange","onUnMute","channels","_codeMuted","_unlockSource","_sounds","_watchList","_watching","_watchCallback","_watchContext","disableAudio","disableWebAudio","audioContext","fakeiOSTouchLock","setTouchLock","unlock","noteOn","stopAll","soundData","decodeAudioData","setDecodedCallback","files","playbackState","PLAYING_STATE","FINISHED_STATE","removeByKey","close","dom","minWidth","minHeight","maxHeight","forceLandscape","forcePortrait","incorrectOrientation","_pageAlignHorizontally","_pageAlignVertically","onOrientationChange","enterIncorrectOrientation","leaveIncorrectOrientation","fullScreenTarget","_createdFullScreenTarget","onFullScreenInit","onFullScreenChange","onFullScreenError","screenOrientation","getScreenOrientation","scaleFactorInversed","aspectRatio","sourceAspectRatio","windowConstraints","compatibility","supportsFullScreen","orientationFallback","noMargins","scrollTo","forceMinimumDocumentHeight","canExpandParent","clickTrampoline","_scaleMode","NO_SCALE","_fullScreenScaleMode","parentIsWindow","parentScaleFactor","trackParentInterval","onSizeChange","onResize","onResizeContext","_pendingScaleMode","_fullScreenRestore","_gameSize","_userScaleFactor","_userScaleTrim","_lastUpdate","_updateThrottle","_updateThrottleReset","_parentBounds","_tempBounds","_lastReportedCanvasSize","_lastReportedGameSize","_booted","setupScale","EXACT_FIT","SHOW_ALL","RESIZE","USER_SCALE","compat","_orientationChange","orientationChange","_windowResize","windowResize","_fullScreenChange","fullScreenChange","_fullScreenError","fullScreenError","_gameResumed","setGameSize","FlexGrid","fullScreenScaleMode","getParentBounds","visualBounds","updateDimensions","queueUpdate","currentScaleMode","setUserScale","hScale","vScale","hTrim","vTrim","setResizeCallback","signalSizeChange","setMinMax","prevThrottle","prevWidth","prevHeight","boundsChanged","orientationChanged","updateOrientationState","updateLayout","throttle","updateScalingAndBounds","forceOrientation","classifyOrientation","orientation","previousOrientation","previouslyIncorrect","isLandscape","isPortrait","changed","correctnessChanged","scrollTop","reflowGame","setMaximum","setExactFit","isFullScreen","boundingParent","setShowAll","resetCanvas","reflowCanvas","layoutBounds","clientRect","getBoundingClientRect","parentRect","offsetParent","wc","windowBounds","alignCanvas","parentBounds","canvasBounds","currentEdge","targetEdge","marginLeft","marginRight","marginTop","marginBottom","pageAlignHorizontally","pageAlignVertically","cssWidth","cssHeight","expanding","multiplier","createFullScreenTarget","fsTarget","background","startFullScreen","allowTrampoline","cleanupCreatedTarget","initData","targetElement","ALLOW_KEYBOARD_INPUT","stopFullScreen","prepScreenMode","enteringFullscreen","createdTarget","targetWidth","targetHeight","scaleSprite","letterBox","scaleX1","scaleY1","scaleX2","scaleY2","scaleOnWidth","bmd","columnWidth","renderShadow","currentAlpha","scaleManager","currentColor","soundInfo","cameraInfo","hideIfUp","downColor","upColor","worldX","worldY","spriteInputInfo","justDown","justUp","inputInfo","spriteBounds","filled","rectangle","ropeSegments","self","segment","spriteInfo","spriteCoords","lineInfo","geom","forceType","quadTree","quadtree","Body","NINJA","Ninja","BOX2D","Box2D","renderBody","bodyInfo","renderBodyInfo","box2d","box2dWorld","renderDebugDraw","box2dBody","displayList","box","scrollY","scrollLeft","scrollX","clientTop","clientLeft","cushion","calibrate","coords","getAspectRatio","inLayoutViewport","primaryFallback","screen","mozOrientation","msOrientation","matchMedia","documentBounds","pageXOffset","pageYOffset","treatAsDesktop","clientWidth","clientHeight","offsetWidth","scrollWidth","offsetHeight","scrollHeight","getByKey","randomIndex","removeRandomItem","shuffle","temp","transposeMatrix","sourceRowCount","sourceColCount","rotateMatrix","findClosest","arr","NaN","low","high","rotateRight","rotateLeft","numberArray","numberArrayStep","LinkedList","entity","palettes","0","1","2","3","4","5","6","7","8","9","PALETTE_ARNE","PALETTE_JMP","PALETTE_CGA","PALETTE_C64","PALETTE_JAPANESE_MACHINE","pixelWidth","pixelHeight","palette","boundsCustom","boundsFull","boundsNone","positionCustom","positionFluid","positionFull","positionNone","scaleCustom","scaleFluid","scaleFull","scaleNone","customWidth","customHeight","customOffsetX","customOffsetY","ratioH","ratioV","layers","createCustomLayer","layer","FlexLayer","createFluidLayer","createFullLayer","createFixedLayer","persist","fitSprite","topLeft","topMiddle","topRight","bottomLeft","bottomMiddle","bottomRight","RGBtoHSL","RGBtoHSV","fromRGBA","toRGBA","toABGR","hueToColor","HSVtoRGB","color32","getColor","getColor32","RGBtoString","componentToHex","hexToRGB","hex","hexToColor","webToColor","web","tempColor","getRGB","HSVColorWheel","HSLColorWheel","interpolateColor","color1","color2","steps","currentStep","src1","src2","interpolateColorWithRGB","or","og","ob","interpolateRGB","getRandomColor","getWebRGB","getAlpha","getAlphaFloat","getRed","getGreen","getBlue","blendNormal","blendAverage","blendSubtract","blendNegation","blendLinearDodge","blendLinearBurn","blendLinearLight","blendVividLight","blendPinLight","blendHardMix","blendReflect","blendGlow","blendPhoenix","arcade","ninja","chipmunk","matter","CHIPMUNK","MATTERJS","P2","Matter","startSystem","system","enableAABB","gravity","checkCollision","OVERLAP_BIAS","forceX","sortDirection","LEFT_RIGHT","skipQuadTree","_total","SORT_NONE","RIGHT_LEFT","TOP_BOTTOM","BOTTOM_TOP","updateMotion","velocityDelta","computeVelocity","angularVelocity","angularAcceleration","angularDrag","maxAngular","velocity","acceleration","drag","maxVelocity","allowGravity","object1","object2","overlapCallback","processCallback","collideHandler","collide","collideCallback","sortLeftRight","sortRightLeft","sortTopBottom","sortBottomTop","overlapOnly","collideGroupVsSelf","collideSpriteVsSprite","collideSpriteVsGroup","collideSpriteVsTilemapLayer","collideGroupVsGroup","collideGroupVsTilemapLayer","sprite1","sprite2","separate","items","bounds1","bounds2","group1","group2","body1","body2","isCircle","separateCircle","bodyRect","bodyCircle","resultX","resultY","separateX","separateY","onOverlap","onCollide","circleBodyIntersects","getOverlapX","getOverlapY","angleCollision","angleBetweenCenters","immovable","customSeparateX","v2","tempVel1","mass","tempVel2","bounce","maxOverlap","deltaAbsX","embedded","touching","none","overlapX","deltaAbsY","overlapY","moves","friction","nv1","nv2","avg","customSeparateY","getObjectsUnderPointer","getObjectsAtLocation","callbackArg","moveToObject","maxTime","distanceBetween","moveToPointer","angleToPointer","distanceToPointer","moveToXY","distanceToXY","velocityFromAngle","velocityFromRotation","accelerationFromRotation","accelerateToObject","xSpeedMax","ySpeedMax","accelerateToPointer","accelerateToXY","angleToXY","worldAngleToPointer","allowRotation","preRotation","newVelocity","deltaMax","worldBounce","onWorldBounds","facing","overlapR","collideWorldBounds","any","wasTouching","blocked","tilePadding","syncBounds","isMoving","stopVelocityOnCollide","moveTimer","moveDistance","moveDuration","moveTarget","moveEnd","onMoveComplete","movementCallback","movementCallbackContext","_sx","_sy","updateBounds","asx","asy","updateMovement","collided","stopMovement","stopVelocity","check","bodyBounds","moveFrom","setCircle","onFloor","onCeiling","onWall","TilemapCollision","TILE_BIAS","tilemapLayer","getTiles","separateTile","tile","tilemapLayerOffsetX","tilemapLayerOffsetY","collisionCallback","collisionCallbackContext","faceLeft","faceRight","faceTop","faceBottom","tileCheckX","tileCheckY","collideRight","collideLeft","processTileSeparationX","collideDown","collideUp","processTileSeparationY","Spring","broadphase","SAPBroadphase","useElapsedTime","materials","InversePointProxy","walls","onBodyAdded","onBodyRemoved","onSpringAdded","onSpringRemoved","onConstraintAdded","onConstraintRemoved","onContactMaterialAdded","onContactMaterialRemoved","postBroadphaseCallback","onBeginContact","onEndContact","mpx","mpxi","pxm","pxmi","on","beginContactHandler","endContactHandler","collisionGroups","nothingCollisionGroup","CollisionGroup","boundsCollisionGroup","everythingCollisionGroup","boundsCollidesWith","_toRemove","_collisionGroupID","_boundsLeft","_boundsRight","_boundsTop","_boundsBottom","_boundsOwnGroup","removeBodyNextStep","removeBody","setImpactEvents","impactHandler","off","setPostBroadphaseCallback","postBroadphaseHandler","pairs","bodyA","bodyB","_bodyCallbacks","_bodyCallbackContext","shapeA","shapeB","_groupCallbacks","collisionGroup","_groupCallbackContext","contactEquations","setCollisionGroup","setWorldMaterial","material","shapes","updateBoundsCollisionGroup","setupWall","wall","addShape","Plane","addBody","fixedStepTime","solver","equations","removeAllEquations","cs","constraints","removeConstraint","bodies","springs","removeSpring","cms","contactMaterials","removeContactMaterial","impactCallback","addSpring","spring","RotationalSpring","createDistanceConstraint","localAnchorA","localAnchorB","maxForce","getBody","addConstraint","DistanceConstraint","createGearConstraint","ratio","GearConstraint","createRevoluteConstraint","pivotA","pivotB","worldPivot","RevoluteConstraint","createLockConstraint","LockConstraint","createPrismaticConstraint","lockRotation","anchorA","anchorB","PrismaticConstraint","constraint","addContactMaterial","getContactMaterial","materialA","materialB","setMaterial","createMaterial","Material","createContactMaterial","contact","ContactMaterial","getBodies","getSprings","getConstraints","worldPoint","precision","filterStatic","physicsPosition","query","STATIC","toJSON","createCollisionGroup","bitmask","collisionMask","createSpring","restLength","stiffness","damping","worldA","worldB","localA","localB","createRotationalSpring","restAngle","createBody","addPolygon","createParticle","convertCollisionObjects","map","collision","polyline","clearTilemapLayerBodies","getLayer","convertTilemap","optimize","collides","getTileRight","addRectangle","defaultContactMaterial","restitution","applySpringForces","applyDamping","applyGravity","solveConstraints","emitImpactEvent","sleepMode","FixtureList","rawList","namedFixtures","groupedFixtures","allFixtures","setCategory","bit","setter","getFixtures","setMask","setSensor","sensor","getFixtureByKey","getGroup","groupID","_ref","_results","callee","PointProxy","collidesWith","removeNextStep","debugBody","_collideWorldBounds","setRectangleFromSprite","createBodyCallback","createGroupCallback","getCollisionMask","updateCollisionMask","clearCollision","clearGroup","clearMask","removeCollisionGroup","clearCallback","adjustCenterOfMass","shapeChanged","getVelocityAtPoint","relativePoint","applyImpulse","impulse","applyImpulseLocal","localX","localY","applyForce","setZeroForce","setZeroRotation","setZeroVelocity","setZeroDamping","angularDamping","toLocalFrame","toWorldFrame","moveForward","moveBackward","thrust","thrustLeft","thrustRight","moveLeft","moveRight","fixedRotation","updateSpriteTransform","resetDamping","resetMass","clearShapes","removeShape","addCircle","Box","addPlane","addParticle","Particle","addLine","addCapsule","Capsule","fromPolygon","setRectangle","addPhaserPolygon","createdFixtures","fixtureData","shapesOfFixture","addFixture","aabbNeedsUpdate","generatedShapes","categoryBits","maskBits","isSensor","vec2","polygons","cm","Convex","sub","centerOfMass","updateTriangles","updateCenterOfMass","updateBoundingRadius","loadPolygon","DYNAMIC","KINEMATIC","allowSleep","angularForce","inertia","updateMassProperties","sleepSpeedLimit","BodyDebug","settings","defaultSettings","pixelsPerLengthUnit","debugPolygons","ppu","lw","vrot","_j","_ref1","randomPastelHex","drawCapsule","drawPlane","drawLine","drawRectangle","drawConvex","x0","drawPath","lastx","lasty","diagMargin","diagSize","maxLength","xd","yd","mix","rgbToHex","worldAnchorA","worldAnchorB","LinearSpring","localOffsetB","localAngleB","localAxisA","disableRotationalLock","localPivotA","localPivotB","ImageCollection","firstgid","imageWidth","imageHeight","imageMargin","imageSpacing","containsImageIndex","imageIndex","gid","Tile","flipped","scanned","setCollisionCallback","setCollision","resetCollision","isInteresting","faces","TilemapParser","version","widthInPixels","heightInPixels","tilesets","imagecollections","tiles","collideIndexes","currentLayer","debugMap","_tempA","NORTH","EAST","SOUTH","WEST","setTileSize","createBlankLayer","addTilesetImage","tileset","tileMargin","tileSpacing","getTilesetIndex","setImage","newSet","Tileset","countX","countY","createFromObjects","CustomClass","adjustY","found","createFromTiles","replacements","customClass","lh","createLayer","pixiTest","getLayerIndex","TilemapLayerGL","indexes","getImageIndex","setTileIndexCallback","setTileLocationCallback","recalculate","setCollisionByIndex","calculateFaces","setCollisionBetween","setCollisionByExclusion","setPreventRecalculate","preventingRecalculate","needToRecalculate","above","below","getTileAbove","getTileBelow","getTileLeft","setLayer","hasTile","removeTile","removeTileWorldXY","putTile","putTileWorldXY","searchTileIndex","skip","getTile","nonNull","getTileWorldXY","paste","tileblock","tileA","tileB","swapHandler","removeAllLayers","dump","txt","renderSettings","enableScrollDelta","overdrawRatio","copyCanvas","debugSettings","missingImageFill","debuggedTileOverfill","forceFullRedraw","debugAlpha","facingEdgeStroke","collidingTileOverfill","scrollFactorX","scrollFactorY","rayStepRate","_wrap","_mc","renderWidth","renderHeight","_scrollX","_scrollY","ensureSharedCopyCanvas","sharedCopyCanvas","requiresUpdate","resizeWorld","_fixX","_unfixX","_fixY","_unfixY","getTileX","getTileY","getTileXY","getRayCastTiles","interestingFace","coord","fetchAll","tw","th","wy","wx","resolveTileset","tileIndex","setIndex","containsTileIndex","resetTilesetCache","setScale","xScale","yScale","shiftCanvas","copyW","copyH","copyContext","renderRegion","lastAlpha","xmax","ymax","baseX","baseY","normStartX","normStartY","renderDeltaScroll","shiftX","shiftY","renderW","renderH","trueTop","trueBottom","trueLeft","trueRight","renderFull","redrawAll","mc","renderDebug","INSERT_NULL","FLIPPED_HORIZONTALLY_FLAG","FLIPPED_VERTICALLY_FLAG","FLIPPED_DIAGONALLY_FLAG","getEmptyData","parseCSV","parseTiledJSON","fields","sliced","curl","compression","encoding","binaryString","atob","bytes","opacity","flippedVal","curi","tileproperties","tileProperties","updateTileData","imagewidth","imageheight","newCollection","ti","curo","horizontallyFlipped","verticallyFlipped","diagonallyFlipped","polygon","ellipse","sid","drawCoords","coordIndex","setSpacing","rowCount","colCount","autoScale","scaleData","_s","autoAlpha","alphaData","_a","onEmit","setAlphaData","setScaleData","emitters","ID","minParticleSpeed","maxParticleSpeed","minParticleScale","maxParticleScale","minRotation","maxRotation","minParticleAlpha","maxParticleAlpha","particleClass","particleDrag","particleAnchor","emitX","emitY","particleBringToTop","particleSendToBack","_minParticleScale","_maxParticleScale","_quantity","_timer","_counter","_flowQuantity","_flowTotal","_explode","emitParticle","makeParticles","particle","rndKey","rndFrame","explode","flow","forceQuantity","setXSpeed","setYSpeed","setRotation","setAlpha","rate","tweenData","at","bullets","autoExpandBulletsGroup","autofire","shots","fireLimit","fireRate","fireRateVariance","fireFrom","fireAngle","bulletInheritSpriteSpeed","bulletAnimation","bulletFrameRandom","bulletFrameCycle","bulletWorldWrap","bulletWorldWrapPadding","bulletAngleOffset","bulletAngleVariance","bulletSpeed","bulletSpeedVariance","bulletLifespan","bulletKillDistance","bulletGravity","bulletRotateToVelocity","bulletKey","bulletFrame","_bulletClass","Bullet","_bulletCollideWorldBounds","_bulletKillType","KILL_WORLD_BOUNDS","customBody","bulletBounds","bulletFrames","bulletFrameIndex","anims","onFire","onKill","onFireLimit","trackedSprite","trackedPointer","trackRotation","trackOffset","_nextFire","KILL_NEVER","KILL_LIFESPAN","KILL_DISTANCE","KILL_WEAPON_BOUNDS","KILL_CAMERA_BOUNDS","KILL_STATIC_BOUNDS","killAll","resetShots","newLimit","fire","trackSprite","trackPointer","moveX","moveY","bullet","bulletManager","killType","bulletKillType","killDistance","rotateToVelocity","bodyDirty","bulletCollideWorldBounds","fireAtPointer","fireAtSprite","fireAtXY","setBulletBodyOffset","setBulletFrames","cycle","addBulletAnimation","debugBodies","onAccess","onError","onTimeout","videoStream","isStreaming","retryLimit","retry","retryInterval","_retryID","_pending","_autoplay","_endCallback","_playCallback","_video","createVideoFromBlob","videoWidth","videoHeight","createVideoFromURL","forceLoaded","snapshot","connectToMediaStream","stream","startMediaStream","captureAudio","removeVideoElement","setAttribute","getUserMediaTimeout","getUserMediaSuccess","getUserMediaError","mozSrcObject","createObjectURL","onloadeddata","checkStream","checkVideoProgress","change","playbackRate","setPause","setResume","playHandler","getTracks","track","playing","ended","changeSource","grab","hasChildNodes","firstChild","removeAttribute","emptyTexture","DisplayObject","tempMatrix","TextureSilentFail","exports","module","define","amd"],"mappings":"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","file":"phaser-split.min.js"} \ No newline at end of file diff --git a/build/custom/phaser-split.min.js b/build/custom/phaser-split.min.js index c8e5842fc..ac875191f 100644 --- a/build/custom/phaser-split.min.js +++ b/build/custom/phaser-split.min.js @@ -1,21 +1,22 @@ -/* Phaser v2.5.0 - http://phaser.io - @photonstorm - (c) 2016 Photon Storm Ltd. */ +/* Phaser v2.5.1 - http://phaser.io - @photonstorm - (c) 2016 Photon Storm Ltd. */ -(function(){function a(a,b){this._scaleFactor=a,this._deltaMode=b,this.originalEvent=null}var b=this,c=c||{VERSION:"2.5.0",GAMES:[],AUTO:0,CANVAS:1,WEBGL:2,HEADLESS:3,NONE:0,LEFT:1,RIGHT:2,UP:3,DOWN:4,SPRITE:0,BUTTON:1,IMAGE:2,GRAPHICS:3,TEXT:4,TILESPRITE:5,BITMAPTEXT:6,GROUP:7,RENDERTEXTURE:8,TILEMAP:9,TILEMAPLAYER:10,EMITTER:11,POLYGON:12,BITMAPDATA:13,CANVAS_FILTER:14,WEBGL_FILTER:15,ELLIPSE:16,SPRITEBATCH:17,RETROFONT:18,POINTER:19,ROPE:20,CIRCLE:21,RECTANGLE:22,LINE:23,MATRIX:24,POINT:25,ROUNDEDRECTANGLE:26,CREATURE:27,VIDEO:28,PENDING_ATLAS:-1,HORIZONTAL:0,VERTICAL:1,LANDSCAPE:0,PORTRAIT:1,ANGLE_UP:270,ANGLE_DOWN:90,ANGLE_LEFT:180,ANGLE_RIGHT:0,ANGLE_NORTH_EAST:315,ANGLE_NORTH_WEST:225,ANGLE_SOUTH_EAST:45,ANGLE_SOUTH_WEST:135,TOP_LEFT:0,TOP_CENTER:1,TOP_RIGHT:2,LEFT_TOP:3,LEFT_CENTER:4,LEFT_BOTTOM:5,CENTER:6,RIGHT_TOP:7,RIGHT_CENTER:8,RIGHT_BOTTOM:9,BOTTOM_LEFT:10,BOTTOM_CENTER:11,BOTTOM_RIGHT:12,blendModes:{NORMAL:0,ADD:1,MULTIPLY:2,SCREEN:3,OVERLAY:4,DARKEN:5,LIGHTEN:6,COLOR_DODGE:7,COLOR_BURN:8,HARD_LIGHT:9,SOFT_LIGHT:10,DIFFERENCE:11,EXCLUSION:12,HUE:13,SATURATION:14,COLOR:15,LUMINOSITY:16},scaleModes:{DEFAULT:0,LINEAR:0,NEAREST:1},PIXI:PIXI||{}};if(Math.trunc||(Math.trunc=function(a){return 0>a?Math.ceil(a):Math.floor(a)}),Function.prototype.bind||(Function.prototype.bind=function(){var a=Array.prototype.slice;return function(b){function c(){var f=e.concat(a.call(arguments));d.apply(this instanceof c?this:b,f)}var d=this,e=a.call(arguments,1);if("function"!=typeof d)throw new TypeError;return c.prototype=function f(a){return a&&(f.prototype=a),this instanceof f?void 0:new f}(d.prototype),c}}()),Array.isArray||(Array.isArray=function(a){return"[object Array]"==Object.prototype.toString.call(a)}),Array.prototype.forEach||(Array.prototype.forEach=function(a){"use strict";if(void 0===this||null===this)throw new TypeError;var b=Object(this),c=b.length>>>0;if("function"!=typeof a)throw new TypeError;for(var d=arguments.length>=2?arguments[1]:void 0,e=0;c>e;e++)e in b&&a.call(d,b[e],e,b)}),"function"!=typeof window.Uint32Array&&"object"!=typeof window.Uint32Array){var d=function(a){var b=new Array;window[a]=function(a){if("number"==typeof a){Array.call(this,a),this.length=a;for(var b=0;bf&&(a=a[g]);)g=c[f],f++;return a?a[d]:null},setProperty:function(a,b,c){for(var d=b.split("."),e=d.pop(),f=d.length,g=1,h=d[0];f>g&&(a=a[h]);)h=d[g],g++;return a&&(a[e]=c),a},chanceRoll:function(a){return void 0===a&&(a=50),a>0&&100*Math.random()<=a},randomChoice:function(a,b){return Math.random()<.5?a:b},parseDimension:function(a,b){var c=0,d=0;return"string"==typeof a?"%"===a.substr(-1)?(c=parseInt(a,10)/100,d=0===b?window.innerWidth*c:window.innerHeight*c):d=parseInt(a,10):d=a,d},pad:function(a,b,c,d){if(void 0===b)var b=0;if(void 0===c)var c=" ";if(void 0===d)var d=3;var e=0;if(b+1>=a.length)switch(d){case 1:a=new Array(b+1-a.length).join(c)+a;break;case 3:var f=Math.ceil((e=b-a.length)/2),g=e-f;a=new Array(g+1).join(c)+a+new Array(f+1).join(c);break;default:a+=new Array(b+1-a.length).join(c)}return a},isPlainObject:function(a){if("object"!=typeof a||a.nodeType||a===a.window)return!1;try{if(a.constructor&&!{}.hasOwnProperty.call(a.constructor.prototype,"isPrototypeOf"))return!1}catch(b){return!1}return!0},extend:function(){var a,b,d,e,f,g,h=arguments[0]||{},i=1,j=arguments.length,k=!1;for("boolean"==typeof h&&(k=h,h=arguments[1]||{},i=2),j===i&&(h=this,--i);j>i;i++)if(null!=(a=arguments[i]))for(b in a)d=h[b],e=a[b],h!==e&&(k&&e&&(c.Utils.isPlainObject(e)||(f=Array.isArray(e)))?(f?(f=!1,g=d&&Array.isArray(d)?d:[]):g=d&&c.Utils.isPlainObject(d)?d:{},h[b]=c.Utils.extend(k,g,e)):void 0!==e&&(h[b]=e));return h},mixinPrototype:function(a,b,c){void 0===c&&(c=!1);for(var d=Object.keys(b),e=0;e0&&(this._radius=.5*d),this.type=c.CIRCLE},c.Circle.prototype={circumference:function(){return 2*(Math.PI*this._radius)},random:function(a){void 0===a&&(a=new c.Point);var b=2*Math.PI*Math.random(),d=Math.random()+Math.random(),e=d>1?2-d:d,f=e*Math.cos(b),g=e*Math.sin(b);return a.x=this.x+f*this.radius,a.y=this.y+g*this.radius,a},getBounds:function(){return new c.Rectangle(this.x-this.radius,this.y-this.radius,this.diameter,this.diameter)},setTo:function(a,b,c){return this.x=a,this.y=b,this._diameter=c,this._radius=.5*c,this},copyFrom:function(a){return this.setTo(a.x,a.y,a.diameter)},copyTo:function(a){return a.x=this.x,a.y=this.y,a.diameter=this._diameter,a},distance:function(a,b){var d=c.Math.distance(this.x,this.y,a.x,a.y);return b?Math.round(d):d},clone:function(a){return void 0===a||null===a?a=new c.Circle(this.x,this.y,this.diameter):a.setTo(this.x,this.y,this.diameter),a},contains:function(a,b){return c.Circle.contains(this,a,b)},circumferencePoint:function(a,b,d){return c.Circle.circumferencePoint(this,a,b,d)},offset:function(a,b){return this.x+=a,this.y+=b,this},offsetPoint:function(a){return this.offset(a.x,a.y)},toString:function(){return"[{Phaser.Circle (x="+this.x+" y="+this.y+" diameter="+this.diameter+" radius="+this.radius+")}]"}},c.Circle.prototype.constructor=c.Circle,Object.defineProperty(c.Circle.prototype,"diameter",{get:function(){return this._diameter},set:function(a){a>0&&(this._diameter=a,this._radius=.5*a)}}),Object.defineProperty(c.Circle.prototype,"radius",{get:function(){return this._radius},set:function(a){a>0&&(this._radius=a,this._diameter=2*a)}}),Object.defineProperty(c.Circle.prototype,"left",{get:function(){return this.x-this._radius},set:function(a){a>this.x?(this._radius=0,this._diameter=0):this.radius=this.x-a}}),Object.defineProperty(c.Circle.prototype,"right",{get:function(){return this.x+this._radius},set:function(a){athis.y?(this._radius=0,this._diameter=0):this.radius=this.y-a}}),Object.defineProperty(c.Circle.prototype,"bottom",{get:function(){return this.y+this._radius},set:function(a){a0?Math.PI*this._radius*this._radius:0}}),Object.defineProperty(c.Circle.prototype,"empty",{get:function(){return 0===this._diameter},set:function(a){a===!0&&this.setTo(0,0,0)}}),c.Circle.contains=function(a,b,c){if(a.radius>0&&b>=a.left&&b<=a.right&&c>=a.top&&c<=a.bottom){var d=(a.x-b)*(a.x-b),e=(a.y-c)*(a.y-c);return d+e<=a.radius*a.radius}return!1},c.Circle.equals=function(a,b){return a.x==b.x&&a.y==b.y&&a.diameter==b.diameter},c.Circle.intersects=function(a,b){return c.Math.distance(a.x,a.y,b.x,b.y)<=a.radius+b.radius},c.Circle.circumferencePoint=function(a,b,d,e){return void 0===d&&(d=!1),void 0===e&&(e=new c.Point),d===!0&&(b=c.Math.degToRad(b)),e.x=a.x+a.radius*Math.cos(b),e.y=a.y+a.radius*Math.sin(b),e},c.Circle.intersectsRectangle=function(a,b){var c=Math.abs(a.x-b.x-b.halfWidth),d=b.halfWidth+a.radius;if(c>d)return!1;var e=Math.abs(a.y-b.y-b.halfHeight),f=b.halfHeight+a.radius;if(e>f)return!1;if(c<=b.halfWidth||e<=b.halfHeight)return!0;var g=c-b.halfWidth,h=e-b.halfHeight,i=g*g,j=h*h,k=a.radius*a.radius;return k>=i+j},PIXI.Circle=c.Circle,c.Ellipse=function(a,b,d,e){a=a||0,b=b||0,d=d||0,e=e||0,this.x=a,this.y=b,this.width=d,this.height=e,this.type=c.ELLIPSE},c.Ellipse.prototype={setTo:function(a,b,c,d){return this.x=a,this.y=b,this.width=c,this.height=d,this},getBounds:function(){return new c.Rectangle(this.x-this.width,this.y-this.height,this.width,this.height)},copyFrom:function(a){return this.setTo(a.x,a.y,a.width,a.height)},copyTo:function(a){return a.x=this.x,a.y=this.y,a.width=this.width,a.height=this.height,a},clone:function(a){return void 0===a||null===a?a=new c.Ellipse(this.x,this.y,this.width,this.height):a.setTo(this.x,this.y,this.width,this.height),a},contains:function(a,b){return c.Ellipse.contains(this,a,b)},random:function(a){void 0===a&&(a=new c.Point);var b=Math.random()*Math.PI*2,d=Math.random();return a.x=Math.sqrt(d)*Math.cos(b),a.y=Math.sqrt(d)*Math.sin(b),a.x=this.x+a.x*this.width/2,a.y=this.y+a.y*this.height/2,a},toString:function(){return"[{Phaser.Ellipse (x="+this.x+" y="+this.y+" width="+this.width+" height="+this.height+")}]"}},c.Ellipse.prototype.constructor=c.Ellipse,Object.defineProperty(c.Ellipse.prototype,"left",{get:function(){return this.x},set:function(a){this.x=a}}),Object.defineProperty(c.Ellipse.prototype,"right",{get:function(){return this.x+this.width},set:function(a){ad+e},PIXI.Ellipse=c.Ellipse,c.Line=function(a,b,d,e){a=a||0,b=b||0,d=d||0,e=e||0,this.start=new c.Point(a,b),this.end=new c.Point(d,e),this.type=c.LINE},c.Line.prototype={setTo:function(a,b,c,d){return this.start.setTo(a,b),this.end.setTo(c,d),this},fromSprite:function(a,b,c){return void 0===c&&(c=!1),c?this.setTo(a.center.x,a.center.y,b.center.x,b.center.y):this.setTo(a.x,a.y,b.x,b.y)},fromAngle:function(a,b,c,d){return this.start.setTo(a,b),this.end.setTo(a+Math.cos(c)*d,b+Math.sin(c)*d),this},rotate:function(a,b){var c=(this.start.x+this.end.x)/2,d=(this.start.y+this.end.y)/2;return this.start.rotate(c,d,a,b),this.end.rotate(c,d,a,b),this},rotateAround:function(a,b,c,d){return this.start.rotate(a,b,c,d),this.end.rotate(a,b,c,d),this},intersects:function(a,b,d){return c.Line.intersectsPoints(this.start,this.end,a.start,a.end,b,d)},reflect:function(a){return c.Line.reflect(this,a)},midPoint:function(a){return void 0===a&&(a=new c.Point),a.x=(this.start.x+this.end.x)/2,a.y=(this.start.y+this.end.y)/2,a},centerOn:function(a,b){var c=(this.start.x+this.end.x)/2,d=(this.start.y+this.end.y)/2,e=a-c,f=b-d;this.start.add(e,f),this.end.add(e,f)},pointOnLine:function(a,b){return(a-this.start.x)*(this.end.y-this.start.y)===(this.end.x-this.start.x)*(b-this.start.y)},pointOnSegment:function(a,b){var c=Math.min(this.start.x,this.end.x),d=Math.max(this.start.x,this.end.x),e=Math.min(this.start.y,this.end.y),f=Math.max(this.start.y,this.end.y);return this.pointOnLine(a,b)&&a>=c&&d>=a&&b>=e&&f>=b},random:function(a){void 0===a&&(a=new c.Point);var b=Math.random();return a.x=this.start.x+b*(this.end.x-this.start.x),a.y=this.start.y+b*(this.end.y-this.start.y),a},coordinatesOnLine:function(a,b){void 0===a&&(a=1),void 0===b&&(b=[]);var c=Math.round(this.start.x),d=Math.round(this.start.y),e=Math.round(this.end.x),f=Math.round(this.end.y),g=Math.abs(e-c),h=Math.abs(f-d),i=e>c?1:-1,j=f>d?1:-1,k=g-h;b.push([c,d]);for(var l=1;c!=e||d!=f;){var m=k<<1;m>-h&&(k-=h,c+=i),g>m&&(k+=g,d+=j),l%a===0&&b.push([c,d]),l++}return b},clone:function(a){return void 0===a||null===a?a=new c.Line(this.start.x,this.start.y,this.end.x,this.end.y):a.setTo(this.start.x,this.start.y,this.end.x,this.end.y),a}},Object.defineProperty(c.Line.prototype,"length",{get:function(){return Math.sqrt((this.end.x-this.start.x)*(this.end.x-this.start.x)+(this.end.y-this.start.y)*(this.end.y-this.start.y))}}),Object.defineProperty(c.Line.prototype,"angle",{get:function(){return Math.atan2(this.end.y-this.start.y,this.end.x-this.start.x)}}),Object.defineProperty(c.Line.prototype,"slope",{get:function(){return(this.end.y-this.start.y)/(this.end.x-this.start.x)}}),Object.defineProperty(c.Line.prototype,"perpSlope",{get:function(){return-((this.end.x-this.start.x)/(this.end.y-this.start.y))}}),Object.defineProperty(c.Line.prototype,"x",{get:function(){return Math.min(this.start.x,this.end.x)}}),Object.defineProperty(c.Line.prototype,"y",{get:function(){return Math.min(this.start.y,this.end.y)}}),Object.defineProperty(c.Line.prototype,"left",{get:function(){return Math.min(this.start.x,this.end.x)}}),Object.defineProperty(c.Line.prototype,"right",{get:function(){return Math.max(this.start.x,this.end.x)}}),Object.defineProperty(c.Line.prototype,"top",{get:function(){return Math.min(this.start.y,this.end.y)}}),Object.defineProperty(c.Line.prototype,"bottom",{get:function(){return Math.max(this.start.y,this.end.y)}}),Object.defineProperty(c.Line.prototype,"width",{get:function(){return Math.abs(this.start.x-this.end.x)}}),Object.defineProperty(c.Line.prototype,"height",{get:function(){return Math.abs(this.start.y-this.end.y)}}),Object.defineProperty(c.Line.prototype,"normalX",{get:function(){return Math.cos(this.angle-1.5707963267948966)}}),Object.defineProperty(c.Line.prototype,"normalY",{get:function(){return Math.sin(this.angle-1.5707963267948966)}}),Object.defineProperty(c.Line.prototype,"normalAngle",{get:function(){return c.Math.wrap(this.angle-1.5707963267948966,-Math.PI,Math.PI)}}),c.Line.intersectsPoints=function(a,b,d,e,f,g){void 0===f&&(f=!0),void 0===g&&(g=new c.Point);var h=b.y-a.y,i=e.y-d.y,j=a.x-b.x,k=d.x-e.x,l=b.x*a.y-a.x*b.y,m=e.x*d.y-d.x*e.y,n=h*k-i*j;if(0===n)return null;if(g.x=(j*m-k*l)/n,g.y=(i*l-h*m)/n,f){var o=(e.y-d.y)*(b.x-a.x)-(e.x-d.x)*(b.y-a.y),p=((e.x-d.x)*(a.y-d.y)-(e.y-d.y)*(a.x-d.x))/o,q=((b.x-a.x)*(a.y-d.y)-(b.y-a.y)*(a.x-d.x))/o;return p>=0&&1>=p&&q>=0&&1>=q?g:null}return g},c.Line.intersects=function(a,b,d,e){return c.Line.intersectsPoints(a.start,a.end,b.start,b.end,d,e)},c.Line.intersectsRectangle=function(a,b){if(!c.Rectangle.intersects(a,b))return!1;var d=a.start.x,e=a.start.y,f=a.end.x,g=a.end.y,h=b.x,i=b.y,j=b.right,k=b.bottom,l=0;if(d>=h&&j>=d&&e>=i&&k>=e||f>=h&&j>=f&&g>=i&&k>=g)return!0;if(h>d&&f>=h){if(l=e+(g-e)*(h-d)/(f-d),l>i&&k>=l)return!0}else if(d>j&&j>=f&&(l=e+(g-e)*(j-d)/(f-d),l>=i&&k>=l))return!0;if(i>e&&g>=i){if(l=d+(f-d)*(i-e)/(g-e),l>=h&&j>=l)return!0}else if(e>k&&k>=g&&(l=d+(f-d)*(k-e)/(g-e),l>=h&&j>=l))return!0;return!1},c.Line.reflect=function(a,b){return 2*b.normalAngle-3.141592653589793-a.angle},c.Matrix=function(a,b,d,e,f,g){(void 0===a||null===a)&&(a=1),(void 0===b||null===b)&&(b=0),(void 0===d||null===d)&&(d=0),(void 0===e||null===e)&&(e=1),(void 0===f||null===f)&&(f=0),(void 0===g||null===g)&&(g=0),this.a=a,this.b=b,this.c=d,this.d=e,this.tx=f,this.ty=g,this.type=c.MATRIX},c.Matrix.prototype={fromArray:function(a){return this.setTo(a[0],a[1],a[3],a[4],a[2],a[5])},setTo:function(a,b,c,d,e,f){return this.a=a,this.b=b,this.c=c,this.d=d,this.tx=e,this.ty=f,this},clone:function(a){return void 0===a||null===a?a=new c.Matrix(this.a,this.b,this.c,this.d,this.tx,this.ty):(a.a=this.a,a.b=this.b,a.c=this.c,a.d=this.d,a.tx=this.tx,a.ty=this.ty),a},copyTo:function(a){return a.copyFrom(this),a},copyFrom:function(a){return this.a=a.a,this.b=a.b,this.c=a.c,this.d=a.d,this.tx=a.tx,this.ty=a.ty,this},toArray:function(a,b){return void 0===b&&(b=new PIXI.Float32Array(9)),a?(b[0]=this.a,b[1]=this.b,b[2]=0,b[3]=this.c,b[4]=this.d,b[5]=0,b[6]=this.tx,b[7]=this.ty,b[8]=1):(b[0]=this.a,b[1]=this.c,b[2]=this.tx,b[3]=this.b,b[4]=this.d,b[5]=this.ty,b[6]=0,b[7]=0,b[8]=1),b},apply:function(a,b){return void 0===b&&(b=new c.Point),b.x=this.a*a.x+this.c*a.y+this.tx,b.y=this.b*a.x+this.d*a.y+this.ty,b},applyInverse:function(a,b){void 0===b&&(b=new c.Point);var d=1/(this.a*this.d+this.c*-this.b),e=a.x,f=a.y;return b.x=this.d*d*e+-this.c*d*f+(this.ty*this.c-this.tx*this.d)*d,b.y=this.a*d*f+-this.b*d*e+(-this.ty*this.a+this.tx*this.b)*d,b},translate:function(a,b){return this.tx+=a,this.ty+=b,this},scale:function(a,b){return this.a*=a,this.d*=b,this.c*=a,this.b*=b,this.tx*=a,this.ty*=b,this},rotate:function(a){var b=Math.cos(a),c=Math.sin(a),d=this.a,e=this.c,f=this.tx;return this.a=d*b-this.b*c,this.b=d*c+this.b*b,this.c=e*b-this.d*c,this.d=e*c+this.d*b,this.tx=f*b-this.ty*c,this.ty=f*c+this.ty*b,this},append:function(a){var b=this.a,c=this.b,d=this.c,e=this.d;return this.a=a.a*b+a.b*d,this.b=a.a*c+a.b*e,this.c=a.c*b+a.d*d,this.d=a.c*c+a.d*e,this.tx=a.tx*b+a.ty*d+this.tx,this.ty=a.tx*c+a.ty*e+this.ty,this},identity:function(){return this.setTo(1,0,0,1,0,0)}},c.identityMatrix=new c.Matrix,PIXI.Matrix=c.Matrix,PIXI.identityMatrix=c.identityMatrix,c.Point=function(a,b){a=a||0,b=b||0,this.x=a,this.y=b,this.type=c.POINT},c.Point.prototype={copyFrom:function(a){return this.setTo(a.x,a.y)},invert:function(){return this.setTo(this.y,this.x)},setTo:function(a,b){return this.x=a||0,this.y=b||(0!==b?this.x:0),this},set:function(a,b){return this.x=a||0,this.y=b||(0!==b?this.x:0),this},add:function(a,b){return this.x+=a,this.y+=b,this},subtract:function(a,b){return this.x-=a,this.y-=b,this},multiply:function(a,b){return this.x*=a,this.y*=b,this},divide:function(a,b){return this.x/=a,this.y/=b,this},clampX:function(a,b){return this.x=c.Math.clamp(this.x,a,b),this},clampY:function(a,b){return this.y=c.Math.clamp(this.y,a,b),this},clamp:function(a,b){return this.x=c.Math.clamp(this.x,a,b),this.y=c.Math.clamp(this.y,a,b),this},clone:function(a){return void 0===a||null===a?a=new c.Point(this.x,this.y):a.setTo(this.x,this.y),a},copyTo:function(a){return a.x=this.x,a.y=this.y,a},distance:function(a,b){return c.Point.distance(this,a,b)},equals:function(a){return a.x===this.x&&a.y===this.y},angle:function(a,b){return void 0===b&&(b=!1),b?c.Math.radToDeg(Math.atan2(a.y-this.y,a.x-this.x)):Math.atan2(a.y-this.y,a.x-this.x)},rotate:function(a,b,d,e,f){return c.Point.rotate(this,a,b,d,e,f)},getMagnitude:function(){return Math.sqrt(this.x*this.x+this.y*this.y)},getMagnitudeSq:function(){return this.x*this.x+this.y*this.y},setMagnitude:function(a){return this.normalize().multiply(a,a)},normalize:function(){if(!this.isZero()){var a=this.getMagnitude();this.x/=a,this.y/=a}return this},isZero:function(){return 0===this.x&&0===this.y},dot:function(a){return this.x*a.x+this.y*a.y},cross:function(a){return this.x*a.y-this.y*a.x},perp:function(){return this.setTo(-this.y,this.x)},rperp:function(){return this.setTo(this.y,-this.x)},normalRightHand:function(){return this.setTo(-1*this.y,this.x)},floor:function(){return this.setTo(Math.floor(this.x),Math.floor(this.y))},ceil:function(){return this.setTo(Math.ceil(this.x),Math.ceil(this.y))},toString:function(){return"[{Point (x="+this.x+" y="+this.y+")}]"}},c.Point.prototype.constructor=c.Point,c.Point.add=function(a,b,d){return void 0===d&&(d=new c.Point),d.x=a.x+b.x,d.y=a.y+b.y,d},c.Point.subtract=function(a,b,d){return void 0===d&&(d=new c.Point),d.x=a.x-b.x,d.y=a.y-b.y,d},c.Point.multiply=function(a,b,d){return void 0===d&&(d=new c.Point),d.x=a.x*b.x,d.y=a.y*b.y,d},c.Point.divide=function(a,b,d){return void 0===d&&(d=new c.Point),d.x=a.x/b.x,d.y=a.y/b.y,d},c.Point.equals=function(a,b){return a.x===b.x&&a.y===b.y},c.Point.angle=function(a,b){return Math.atan2(a.y-b.y,a.x-b.x)},c.Point.negative=function(a,b){return void 0===b&&(b=new c.Point),b.setTo(-a.x,-a.y)},c.Point.multiplyAdd=function(a,b,d,e){return void 0===e&&(e=new c.Point),e.setTo(a.x+b.x*d,a.y+b.y*d)},c.Point.interpolate=function(a,b,d,e){return void 0===e&&(e=new c.Point),e.setTo(a.x+(b.x-a.x)*d,a.y+(b.y-a.y)*d)},c.Point.perp=function(a,b){return void 0===b&&(b=new c.Point),b.setTo(-a.y,a.x)},c.Point.rperp=function(a,b){return void 0===b&&(b=new c.Point),b.setTo(a.y,-a.x)},c.Point.distance=function(a,b,d){var e=c.Math.distance(a.x,a.y,b.x,b.y);return d?Math.round(e):e},c.Point.project=function(a,b,d){void 0===d&&(d=new c.Point);var e=a.dot(b)/b.getMagnitudeSq();return 0!==e&&d.setTo(e*b.x,e*b.y),d},c.Point.projectUnit=function(a,b,d){void 0===d&&(d=new c.Point);var e=a.dot(b);return 0!==e&&d.setTo(e*b.x,e*b.y),d},c.Point.normalRightHand=function(a,b){return void 0===b&&(b=new c.Point),b.setTo(-1*a.y,a.x)},c.Point.normalize=function(a,b){void 0===b&&(b=new c.Point);var d=a.getMagnitude();return 0!==d&&b.setTo(a.x/d,a.y/d),b},c.Point.rotate=function(a,b,d,e,f,g){if(f&&(e=c.Math.degToRad(e)),void 0===g){a.subtract(b,d);var h=Math.sin(e),i=Math.cos(e),j=i*a.x-h*a.y,k=h*a.x+i*a.y;a.x=j+b,a.y=k+d}else{var l=e+Math.atan2(a.y-d,a.x-b);a.x=b+g*Math.cos(l),a.y=d+g*Math.sin(l)}return a},c.Point.centroid=function(a,b){if(void 0===b&&(b=new c.Point),"[object Array]"!==Object.prototype.toString.call(a))throw new Error("Phaser.Point. Parameter 'points' must be an array");var d=a.length;if(1>d)throw new Error("Phaser.Point. Parameter 'points' array must not be empty");if(1===d)return b.copyFrom(a[0]),b;for(var e=0;d>e;e++)c.Point.add(b,a[e],b);return b.divide(d,d),b},c.Point.parse=function(a,b,d){b=b||"x",d=d||"y";var e=new c.Point;return a[b]&&(e.x=parseInt(a[b],10)),a[d]&&(e.y=parseInt(a[d],10)),e},PIXI.Point=c.Point,c.Polygon=function(){this.area=0,this._points=[],arguments.length>0&&this.setTo.apply(this,arguments),this.closed=!0,this.type=c.POLYGON},c.Polygon.prototype={toNumberArray:function(a){void 0===a&&(a=[]);for(var b=0;b=h&&j>b||b>=j&&h>b)&&(i-g)*(b-h)/(j-h)+g>a&&(d=!d)}return d},setTo:function(a){if(this.area=0,this._points=[],arguments.length>0){Array.isArray(a)||(a=Array.prototype.slice.call(arguments));for(var b=Number.MAX_VALUE,c=0,d=a.length;d>c;c++){if("number"==typeof a[c]){var e=new PIXI.Point(a[c],a[c+1]);c++}else if(Array.isArray(a[c]))var e=new PIXI.Point(a[c][0],a[c][1]);else var e=new PIXI.Point(a[c].x,a[c].y);this._points.push(e),e.yf;f++)b=this._points[f],c=f===g-1?this._points[0]:this._points[f+1],d=(b.y-a+(c.y-a))/2,e=b.x-c.x,this.area+=d*e;return this.area}},c.Polygon.prototype.constructor=c.Polygon,Object.defineProperty(c.Polygon.prototype,"points",{get:function(){return this._points},set:function(a){null!=a?this.setTo(a):this.setTo()}}),PIXI.Polygon=c.Polygon,c.Rectangle=function(a,b,d,e){a=a||0,b=b||0,d=d||0,e=e||0,this.x=a,this.y=b,this.width=d,this.height=e,this.type=c.RECTANGLE},c.Rectangle.prototype={offset:function(a,b){return this.x+=a,this.y+=b,this},offsetPoint:function(a){return this.offset(a.x,a.y)},setTo:function(a,b,c,d){return this.x=a,this.y=b,this.width=c,this.height=d,this},scale:function(a,b){return void 0===b&&(b=a),this.width*=a,this.height*=b,this},centerOn:function(a,b){return this.centerX=a,this.centerY=b,this},floor:function(){this.x=Math.floor(this.x),this.y=Math.floor(this.y)},floorAll:function(){this.x=Math.floor(this.x),this.y=Math.floor(this.y),this.width=Math.floor(this.width),this.height=Math.floor(this.height)},ceil:function(){this.x=Math.ceil(this.x),this.y=Math.ceil(this.y)},ceilAll:function(){this.x=Math.ceil(this.x),this.y=Math.ceil(this.y),this.width=Math.ceil(this.width),this.height=Math.ceil(this.height)},copyFrom:function(a){return this.setTo(a.x,a.y,a.width,a.height)},copyTo:function(a){return a.x=this.x,a.y=this.y,a.width=this.width,a.height=this.height,a},inflate:function(a,b){return c.Rectangle.inflate(this,a,b)},size:function(a){return c.Rectangle.size(this,a)},resize:function(a,b){return this.width=a,this.height=b,this},clone:function(a){return c.Rectangle.clone(this,a)},contains:function(a,b){return c.Rectangle.contains(this,a,b)},containsRect:function(a){return c.Rectangle.containsRect(a,this)},equals:function(a){return c.Rectangle.equals(this,a)},intersection:function(a,b){return c.Rectangle.intersection(this,a,b)},intersects:function(a){return c.Rectangle.intersects(this,a)},intersectsRaw:function(a,b,d,e,f){return c.Rectangle.intersectsRaw(this,a,b,d,e,f)},union:function(a,b){return c.Rectangle.union(this,a,b)},random:function(a){return void 0===a&&(a=new c.Point),a.x=this.randomX,a.y=this.randomY,a},getPoint:function(a,b){switch(void 0===b&&(b=new c.Point),a){default:case c.TOP_LEFT:return b.set(this.x,this.y);case c.TOP_CENTER:return b.set(this.centerX,this.y);case c.TOP_RIGHT:return b.set(this.right,this.y);case c.LEFT_CENTER:return b.set(this.x,this.centerY);case c.CENTER:return b.set(this.centerX,this.centerY);case c.RIGHT_CENTER:return b.set(this.right,this.centerY);case c.BOTTOM_LEFT:return b.set(this.x,this.bottom);case c.BOTTOM_CENTER:return b.set(this.centerX,this.bottom);case c.BOTTOM_RIGHT:return b.set(this.right,this.bottom)}},toString:function(){return"[{Rectangle (x="+this.x+" y="+this.y+" width="+this.width+" height="+this.height+" empty="+this.empty+")}]"}},Object.defineProperty(c.Rectangle.prototype,"halfWidth",{get:function(){return Math.round(this.width/2)}}),Object.defineProperty(c.Rectangle.prototype,"halfHeight",{get:function(){return Math.round(this.height/2)}}),Object.defineProperty(c.Rectangle.prototype,"bottom",{get:function(){return this.y+this.height},set:function(a){a<=this.y?this.height=0:this.height=a-this.y}}),Object.defineProperty(c.Rectangle.prototype,"bottomLeft",{get:function(){return new c.Point(this.x,this.bottom)},set:function(a){this.x=a.x,this.bottom=a.y}}),Object.defineProperty(c.Rectangle.prototype,"bottomRight",{get:function(){return new c.Point(this.right,this.bottom)},set:function(a){this.right=a.x,this.bottom=a.y}}),Object.defineProperty(c.Rectangle.prototype,"left",{get:function(){return this.x},set:function(a){a>=this.right?this.width=0:this.width=this.right-a,this.x=a}}),Object.defineProperty(c.Rectangle.prototype,"right",{get:function(){return this.x+this.width},set:function(a){a<=this.x?this.width=0:this.width=a-this.x}}),Object.defineProperty(c.Rectangle.prototype,"volume",{get:function(){return this.width*this.height}}),Object.defineProperty(c.Rectangle.prototype,"perimeter",{get:function(){return 2*this.width+2*this.height}}),Object.defineProperty(c.Rectangle.prototype,"centerX",{get:function(){return this.x+this.halfWidth},set:function(a){this.x=a-this.halfWidth}}),Object.defineProperty(c.Rectangle.prototype,"centerY",{get:function(){return this.y+this.halfHeight},set:function(a){this.y=a-this.halfHeight}}),Object.defineProperty(c.Rectangle.prototype,"randomX",{get:function(){return this.x+Math.random()*this.width}}),Object.defineProperty(c.Rectangle.prototype,"randomY",{get:function(){return this.y+Math.random()*this.height}}),Object.defineProperty(c.Rectangle.prototype,"top",{get:function(){return this.y},set:function(a){a>=this.bottom?(this.height=0,this.y=a):this.height=this.bottom-a}}),Object.defineProperty(c.Rectangle.prototype,"topLeft",{get:function(){return new c.Point(this.x,this.y)},set:function(a){this.x=a.x,this.y=a.y}}),Object.defineProperty(c.Rectangle.prototype,"topRight",{get:function(){return new c.Point(this.x+this.width,this.y)},set:function(a){this.right=a.x,this.y=a.y}}),Object.defineProperty(c.Rectangle.prototype,"empty",{get:function(){return!this.width||!this.height},set:function(a){a===!0&&this.setTo(0,0,0,0)}}),c.Rectangle.prototype.constructor=c.Rectangle,c.Rectangle.inflate=function(a,b,c){return a.x-=b,a.width+=2*b,a.y-=c,a.height+=2*c,a},c.Rectangle.inflatePoint=function(a,b){return c.Rectangle.inflate(a,b.x,b.y)},c.Rectangle.size=function(a,b){return void 0===b||null===b?b=new c.Point(a.width,a.height):b.setTo(a.width,a.height),b},c.Rectangle.clone=function(a,b){return void 0===b||null===b?b=new c.Rectangle(a.x,a.y,a.width,a.height):b.setTo(a.x,a.y,a.width,a.height),b},c.Rectangle.contains=function(a,b,c){return a.width<=0||a.height<=0?!1:b>=a.x&&b=a.y&&c=a&&a+c>e&&f>=b&&b+d>f},c.Rectangle.containsPoint=function(a,b){return c.Rectangle.contains(a,b.x,b.y)},c.Rectangle.containsRect=function(a,b){return a.volume>b.volume?!1:a.x>=b.x&&a.y>=b.y&&a.rightb.right||a.y>b.bottom)},c.Rectangle.intersectsRaw=function(a,b,c,d,e,f){return void 0===f&&(f=0),!(b>a.right+f||ca.bottom+f||ed&&(d=a.x),a.xf&&(f=a.y),a.y=c&&a<=c+this.width){var d=this.y;if(b>=d&&b<=d+this.height)return!0}return!1}},c.RoundedRectangle.prototype.constructor=c.RoundedRectangle,PIXI.RoundedRectangle=c.RoundedRectangle,c.Camera=function(a,b,d,e,f,g){this.game=a,this.world=a.world,this.id=0,this.view=new c.Rectangle(d,e,f,g),this.bounds=new c.Rectangle(d,e,f,g),this.deadzone=null,this.visible=!0,this.roundPx=!0,this.atLimit={x:!1,y:!1},this.target=null,this.displayObject=null,this.scale=null,this.totalInView=0,this.lerp=new c.Point(1,1),this.onShakeComplete=new c.Signal,this.onFlashComplete=new c.Signal,this.onFadeComplete=new c.Signal,this.fx=null,this._targetPosition=new c.Point,this._edge=0,this._position=new c.Point,this._shake={intensity:0,duration:0,horizontal:!1,vertical:!1,shakeBounds:!0,x:0,y:0},this._fxDuration=0,this._fxType=0},c.Camera.FOLLOW_LOCKON=0,c.Camera.FOLLOW_PLATFORMER=1,c.Camera.FOLLOW_TOPDOWN=2,c.Camera.FOLLOW_TOPDOWN_TIGHT=3,c.Camera.SHAKE_BOTH=4,c.Camera.SHAKE_HORIZONTAL=5,c.Camera.SHAKE_VERTICAL=6,c.Camera.ENABLE_FX=!0,c.Camera.prototype={boot:function(){this.displayObject=this.game.world,this.scale=this.game.world.scale,this.game.camera=this,c.Graphics&&c.Camera.ENABLE_FX&&(this.fx=new c.Graphics(this.game), -this.game.stage.addChild(this.fx))},preUpdate:function(){this.totalInView=0},follow:function(a,b,d,e){void 0===b&&(b=c.Camera.FOLLOW_LOCKON),void 0===d&&(d=1),void 0===e&&(e=1),this.target=a,this.lerp.set(d,e);var f;switch(b){case c.Camera.FOLLOW_PLATFORMER:var g=this.width/8,h=this.height/3;this.deadzone=new c.Rectangle((this.width-g)/2,(this.height-h)/2-.25*h,g,h);break;case c.Camera.FOLLOW_TOPDOWN:f=Math.max(this.width,this.height)/4,this.deadzone=new c.Rectangle((this.width-f)/2,(this.height-f)/2,f,f);break;case c.Camera.FOLLOW_TOPDOWN_TIGHT:f=Math.max(this.width,this.height)/8,this.deadzone=new c.Rectangle((this.width-f)/2,(this.height-f)/2,f,f);break;case c.Camera.FOLLOW_LOCKON:this.deadzone=null;break;default:this.deadzone=null}},unfollow:function(){this.target=null},focusOn:function(a){this.setPosition(Math.round(a.x-this.view.halfWidth),Math.round(a.y-this.view.halfHeight))},focusOnXY:function(a,b){this.setPosition(Math.round(a-this.view.halfWidth),Math.round(b-this.view.halfHeight))},shake:function(a,b,d,e,f){return void 0===a&&(a=.05),void 0===b&&(b=500),void 0===d&&(d=!0),void 0===e&&(e=c.Camera.SHAKE_BOTH),void 0===f&&(f=!0),!d&&this._shake.duration>0?!1:(this._shake.intensity=a,this._shake.duration=b,this._shake.shakeBounds=f,this._shake.x=0,this._shake.y=0,this._shake.horizontal=e===c.Camera.SHAKE_BOTH||e===c.Camera.SHAKE_HORIZONTAL,this._shake.vertical=e===c.Camera.SHAKE_BOTH||e===c.Camera.SHAKE_VERTICAL,!0)},flash:function(a,b,c){return void 0===a&&(a=16777215),void 0===b&&(b=500),void 0===c&&(c=!1),!this.fx||!c&&this._fxDuration>0?!1:(this.fx.clear(),this.fx.beginFill(a),this.fx.drawRect(0,0,this.width,this.height),this.fx.endFill(),this.fx.alpha=1,this._fxDuration=b,this._fxType=0,!0)},fade:function(a,b,c){return void 0===a&&(a=0),void 0===b&&(b=500),void 0===c&&(c=!1),!this.fx||!c&&this._fxDuration>0?!1:(this.fx.clear(),this.fx.beginFill(a),this.fx.drawRect(0,0,this.width,this.height),this.fx.endFill(),this.fx.alpha=0,this._fxDuration=b,this._fxType=1,!0)},update:function(){this._fxDuration>0&&this.updateFX(),this._shake.duration>0&&this.updateShake(),this.bounds&&this.checkBounds(),this.roundPx&&(this.view.floor(),this._shake.x=Math.floor(this._shake.x),this._shake.y=Math.floor(this._shake.y)),this.displayObject.position.x=-this.view.x,this.displayObject.position.y=-this.view.y},updateFX:function(){0===this._fxType?(this.fx.alpha-=this.game.time.elapsedMS/this._fxDuration,this.fx.alpha<=0&&(this._fxDuration=0,this.fx.alpha=0,this.onFlashComplete.dispatch())):(this.fx.alpha+=this.game.time.elapsedMS/this._fxDuration,this.fx.alpha>=1&&(this._fxDuration=0,this.fx.alpha=1,this.onFadeComplete.dispatch()))},updateShake:function(){this._shake.duration-=this.game.time.elapsedMS,this._shake.duration<=0?(this.onShakeComplete.dispatch(),this._shake.x=0,this._shake.y=0):(this._shake.horizontal&&(this._shake.x=this.game.rnd.frac()*this._shake.intensity*this.view.width*2-this._shake.intensity*this.view.width),this._shake.vertical&&(this._shake.y=this.game.rnd.frac()*this._shake.intensity*this.view.height*2-this._shake.intensity*this.view.height))},updateTarget:function(){this._targetPosition.x=this.view.x+this.target.worldPosition.x,this._targetPosition.y=this.view.y+this.target.worldPosition.y,this.deadzone?(this._edge=this._targetPosition.x-this.view.x,this._edgethis.deadzone.right&&(this.view.x=this.game.math.linear(this.view.x,this._targetPosition.x-this.deadzone.right,this.lerp.x)),this._edge=this._targetPosition.y-this.view.y,this._edgethis.deadzone.bottom&&(this.view.y=this.game.math.linear(this.view.y,this._targetPosition.y-this.deadzone.bottom,this.lerp.y))):(this.view.x=this.game.math.linear(this.view.x,this._targetPosition.x-this.view.halfWidth,this.lerp.x),this.view.y=this.game.math.linear(this.view.y,this._targetPosition.y-this.view.halfHeight,this.lerp.y)),this.bounds&&this.checkBounds(),this.roundPx&&this.view.floor(),this.displayObject.position.x=-this.view.x,this.displayObject.position.y=-this.view.y},setBoundsToWorld:function(){this.bounds&&this.bounds.copyFrom(this.game.world.bounds)},checkBounds:function(){this.atLimit.x=!1,this.atLimit.y=!1;var a=this.view.x+this._shake.x,b=this.view.right+this._shake.x,c=this.view.y+this._shake.y,d=this.view.bottom+this._shake.y;a<=this.bounds.x*this.scale.x&&(this.atLimit.x=!0,this.view.x=this.bounds.x*this.scale.x,this._shake.shakeBounds||(this._shake.x=0)),b>=this.bounds.right*this.scale.x&&(this.atLimit.x=!0,this.view.x=this.bounds.right*this.scale.x-this.width,this._shake.shakeBounds||(this._shake.x=0)),c<=this.bounds.top*this.scale.y&&(this.atLimit.y=!0,this.view.y=this.bounds.top*this.scale.y,this._shake.shakeBounds||(this._shake.y=0)),d>=this.bounds.bottom*this.scale.y&&(this.atLimit.y=!0,this.view.y=this.bounds.bottom*this.scale.y-this.height,this._shake.shakeBounds||(this._shake.y=0))},setPosition:function(a,b){this.view.x=a,this.view.y=b,this.bounds&&this.checkBounds()},setSize:function(a,b){this.view.width=a,this.view.height=b},reset:function(){this.target=null,this.view.x=0,this.view.y=0,this._shake.duration=0,this.resetFX()},resetFX:function(){this.fx.clear(),this.fx.alpha=0,this._fxDuration=0}},c.Camera.prototype.constructor=c.Camera,Object.defineProperty(c.Camera.prototype,"x",{get:function(){return this.view.x},set:function(a){this.view.x=a,this.bounds&&this.checkBounds()}}),Object.defineProperty(c.Camera.prototype,"y",{get:function(){return this.view.y},set:function(a){this.view.y=a,this.bounds&&this.checkBounds()}}),Object.defineProperty(c.Camera.prototype,"position",{get:function(){return this._position.set(this.view.x,this.view.y),this._position},set:function(a){"undefined"!=typeof a.x&&(this.view.x=a.x),"undefined"!=typeof a.y&&(this.view.y=a.y),this.bounds&&this.checkBounds()}}),Object.defineProperty(c.Camera.prototype,"width",{get:function(){return this.view.width},set:function(a){this.view.width=a}}),Object.defineProperty(c.Camera.prototype,"height",{get:function(){return this.view.height},set:function(a){this.view.height=a}}),Object.defineProperty(c.Camera.prototype,"shakeIntensity",{get:function(){return this._shake.intensity},set:function(a){this._shake.intensity=a}}),c.State=function(){this.game=null,this.key="",this.add=null,this.make=null,this.camera=null,this.cache=null,this.input=null,this.load=null,this.math=null,this.sound=null,this.scale=null,this.stage=null,this.state=null,this.time=null,this.tweens=null,this.world=null,this.particles=null,this.physics=null,this.rnd=null},c.State.prototype={init:function(){},preload:function(){},loadUpdate:function(){},loadRender:function(){},create:function(){},update:function(){},preRender:function(){},render:function(){},resize:function(){},paused:function(){},resumed:function(){},pauseUpdate:function(){},shutdown:function(){}},c.State.prototype.constructor=c.State,c.StateManager=function(a,b){this.game=a,this.states={},this._pendingState=null,"undefined"!=typeof b&&null!==b&&(this._pendingState=b),this._clearWorld=!1,this._clearCache=!1,this._created=!1,this._args=[],this.current="",this.onStateChange=new c.Signal,this.onInitCallback=null,this.onPreloadCallback=null,this.onCreateCallback=null,this.onUpdateCallback=null,this.onRenderCallback=null,this.onResizeCallback=null,this.onPreRenderCallback=null,this.onLoadUpdateCallback=null,this.onLoadRenderCallback=null,this.onPausedCallback=null,this.onResumedCallback=null,this.onPauseUpdateCallback=null,this.onShutDownCallback=null},c.StateManager.prototype={boot:function(){this.game.onPause.add(this.pause,this),this.game.onResume.add(this.resume,this),null!==this._pendingState&&"string"!=typeof this._pendingState&&this.add("default",this._pendingState,!0)},add:function(a,b,d){void 0===d&&(d=!1);var e;return b instanceof c.State?e=b:"object"==typeof b?(e=b,e.game=this.game):"function"==typeof b&&(e=new b(this.game)),this.states[a]=e,d&&(this.game.isBooted?this.start(a):this._pendingState=a),e},remove:function(a){this.current===a&&(this.callbackContext=null,this.onInitCallback=null,this.onShutDownCallback=null,this.onPreloadCallback=null,this.onLoadRenderCallback=null,this.onLoadUpdateCallback=null,this.onCreateCallback=null,this.onUpdateCallback=null,this.onPreRenderCallback=null,this.onRenderCallback=null,this.onResizeCallback=null,this.onPausedCallback=null,this.onResumedCallback=null,this.onPauseUpdateCallback=null),delete this.states[a]},start:function(a,b,c){void 0===b&&(b=!0),void 0===c&&(c=!1),this.checkState(a)&&(this._pendingState=a,this._clearWorld=b,this._clearCache=c,arguments.length>3&&(this._args=Array.prototype.splice.call(arguments,3)))},restart:function(a,b){void 0===a&&(a=!0),void 0===b&&(b=!1),this._pendingState=this.current,this._clearWorld=a,this._clearCache=b,arguments.length>2&&(this._args=Array.prototype.slice.call(arguments,2))},dummy:function(){},preUpdate:function(){if(this._pendingState&&this.game.isBooted){var a=this.current;if(this.clearCurrentState(),this.setCurrentState(this._pendingState),this.onStateChange.dispatch(this.current,a),this.current!==this._pendingState)return;this._pendingState=null,this.onPreloadCallback?(this.game.load.reset(!0),this.onPreloadCallback.call(this.callbackContext,this.game),0===this.game.load.totalQueuedFiles()&&0===this.game.load.totalQueuedPacks()?this.loadComplete():this.game.load.start()):this.loadComplete()}},clearCurrentState:function(){this.current&&(this.onShutDownCallback&&this.onShutDownCallback.call(this.callbackContext,this.game),this.game.tweens.removeAll(),this.game.camera.reset(),this.game.input.reset(!0),this.game.physics.clear(),this.game.time.removeAll(),this.game.scale.reset(this._clearWorld),this.game.debug&&this.game.debug.reset(),this._clearWorld&&(this.game.world.shutdown(),this._clearCache&&this.game.cache.destroy()))},checkState:function(a){return this.states[a]?this.states[a].preload||this.states[a].create||this.states[a].update||this.states[a].render?!0:(console.warn("Invalid Phaser State object given. Must contain at least a one of the required functions: preload, create, update or render"),!1):(console.warn("Phaser.StateManager - No state found with the key: "+a),!1)},link:function(a){this.states[a].game=this.game,this.states[a].add=this.game.add,this.states[a].make=this.game.make,this.states[a].camera=this.game.camera,this.states[a].cache=this.game.cache,this.states[a].input=this.game.input,this.states[a].load=this.game.load,this.states[a].math=this.game.math,this.states[a].sound=this.game.sound,this.states[a].scale=this.game.scale,this.states[a].state=this,this.states[a].stage=this.game.stage,this.states[a].time=this.game.time,this.states[a].tweens=this.game.tweens,this.states[a].world=this.game.world,this.states[a].particles=this.game.particles,this.states[a].rnd=this.game.rnd,this.states[a].physics=this.game.physics,this.states[a].key=a},unlink:function(a){this.states[a]&&(this.states[a].game=null,this.states[a].add=null,this.states[a].make=null,this.states[a].camera=null,this.states[a].cache=null,this.states[a].input=null,this.states[a].load=null,this.states[a].math=null,this.states[a].sound=null,this.states[a].scale=null,this.states[a].state=null,this.states[a].stage=null,this.states[a].time=null,this.states[a].tweens=null,this.states[a].world=null,this.states[a].particles=null,this.states[a].rnd=null,this.states[a].physics=null)},setCurrentState:function(a){this.callbackContext=this.states[a],this.link(a),this.onInitCallback=this.states[a].init||this.dummy,this.onPreloadCallback=this.states[a].preload||null,this.onLoadRenderCallback=this.states[a].loadRender||null,this.onLoadUpdateCallback=this.states[a].loadUpdate||null,this.onCreateCallback=this.states[a].create||null,this.onUpdateCallback=this.states[a].update||null,this.onPreRenderCallback=this.states[a].preRender||null,this.onRenderCallback=this.states[a].render||null,this.onResizeCallback=this.states[a].resize||null,this.onPausedCallback=this.states[a].paused||null,this.onResumedCallback=this.states[a].resumed||null,this.onPauseUpdateCallback=this.states[a].pauseUpdate||null,this.onShutDownCallback=this.states[a].shutdown||this.dummy,""!==this.current&&this.game.physics.reset(),this.current=a,this._created=!1,this.onInitCallback.apply(this.callbackContext,this._args),a===this._pendingState&&(this._args=[]),this.game._kickstart=!0},getCurrentState:function(){return this.states[this.current]},loadComplete:function(){this._created===!1&&this.onLoadUpdateCallback&&this.onLoadUpdateCallback.call(this.callbackContext,this.game),this._created===!1&&this.onCreateCallback?(this._created=!0,this.onCreateCallback.call(this.callbackContext,this.game)):this._created=!0},pause:function(){this._created&&this.onPausedCallback&&this.onPausedCallback.call(this.callbackContext,this.game)},resume:function(){this._created&&this.onResumedCallback&&this.onResumedCallback.call(this.callbackContext,this.game)},update:function(){this._created?this.onUpdateCallback&&this.onUpdateCallback.call(this.callbackContext,this.game):this.onLoadUpdateCallback&&this.onLoadUpdateCallback.call(this.callbackContext,this.game)},pauseUpdate:function(){this._created?this.onPauseUpdateCallback&&this.onPauseUpdateCallback.call(this.callbackContext,this.game):this.onLoadUpdateCallback&&this.onLoadUpdateCallback.call(this.callbackContext,this.game)},preRender:function(a){this._created&&this.onPreRenderCallback&&this.onPreRenderCallback.call(this.callbackContext,this.game,a)},resize:function(a,b){this.onResizeCallback&&this.onResizeCallback.call(this.callbackContext,a,b)},render:function(){this._created?this.onRenderCallback&&(this.game.renderType===c.CANVAS?(this.game.context.save(),this.game.context.setTransform(1,0,0,1,0,0),this.onRenderCallback.call(this.callbackContext,this.game),this.game.context.restore()):this.onRenderCallback.call(this.callbackContext,this.game)):this.onLoadRenderCallback&&this.onLoadRenderCallback.call(this.callbackContext,this.game)},destroy:function(){this._clearWorld=!0,this._clearCache=!0,this.clearCurrentState(),this.callbackContext=null,this.onInitCallback=null,this.onShutDownCallback=null,this.onPreloadCallback=null,this.onLoadRenderCallback=null,this.onLoadUpdateCallback=null,this.onCreateCallback=null,this.onUpdateCallback=null,this.onRenderCallback=null,this.onPausedCallback=null,this.onResumedCallback=null,this.onPauseUpdateCallback=null,this.game=null,this.states={},this._pendingState=null,this.current=""}},c.StateManager.prototype.constructor=c.StateManager,Object.defineProperty(c.StateManager.prototype,"created",{get:function(){return this._created}}),c.Signal=function(){},c.Signal.prototype={_bindings:null,_prevParams:null,memorize:!1,_shouldPropagate:!0,active:!0,_boundDispatch:!1,validateListener:function(a,b){if("function"!=typeof a)throw new Error("Phaser.Signal: listener is a required param of {fn}() and should be a Function.".replace("{fn}",b))},_registerListener:function(a,b,d,e,f){var g,h=this._indexOfListener(a,d);if(-1!==h){if(g=this._bindings[h],g.isOnce()!==b)throw new Error("You cannot add"+(b?"":"Once")+"() then add"+(b?"Once":"")+"() the same listener without removing the relationship first.")}else g=new c.SignalBinding(this,a,b,d,e,f),this._addBinding(g);return this.memorize&&this._prevParams&&g.execute(this._prevParams),g},_addBinding:function(a){this._bindings||(this._bindings=[]);var b=this._bindings.length;do b--;while(this._bindings[b]&&a._priority<=this._bindings[b]._priority);this._bindings.splice(b+1,0,a)},_indexOfListener:function(a,b){if(!this._bindings)return-1;void 0===b&&(b=null);for(var c,d=this._bindings.length;d--;)if(c=this._bindings[d],c._listener===a&&c.context===b)return d;return-1},has:function(a,b){return-1!==this._indexOfListener(a,b)},add:function(a,b,c){this.validateListener(a,"add");var d=[];if(arguments.length>3)for(var e=3;e3)for(var e=3;ea||a>=this.children.length?-1:this.getChildAt(a)},c.Group.prototype.create=function(a,b,c,d,e,f){void 0===e&&(e=!0);var g=new this.classType(this.game,a,b,c,d);return g.exists=e,g.visible=e,g.alive=e,this.add(g,!1,f)},c.Group.prototype.createMultiple=function(a,b,c,d){void 0===c&&(c=0),void 0===d&&(d=!1),Array.isArray(b)||(b=[b]),Array.isArray(c)||(c=[c]);var e=this,f=[];return b.forEach(function(b){c.forEach(function(c){for(var g=0;a>g;g++)f.push(e.create(0,0,b,c,d))})}),f},c.Group.prototype.updateZ=function(){for(var a=this.children.length;a--;)this.children[a].z=a},c.Group.prototype.align=function(a,b,d,e,f,g){if(void 0===f&&(f=c.TOP_LEFT),void 0===g&&(g=0),!(0===this.children.length||g>this.children.length||-1===a&&-1===b))for(var h=new c.Rectangle(0,0,d,e),i=a*d,j=b*e,k=g;kthis.children.length-1&&(a=0),this.cursor?(this.cursorIndex=a,this.cursor=this.children[this.cursorIndex],this.cursor):void 0},c.Group.prototype.next=function(){return this.cursor?(this.cursorIndex>=this.children.length-1?this.cursorIndex=0:this.cursorIndex++,this.cursor=this.children[this.cursorIndex],this.cursor):void 0},c.Group.prototype.previous=function(){return this.cursor?(0===this.cursorIndex?this.cursorIndex=this.children.length-1:this.cursorIndex--,this.cursor=this.children[this.cursorIndex],this.cursor):void 0},c.Group.prototype.swap=function(a,b){this.swapChildren(a,b),this.updateZ()},c.Group.prototype.bringToTop=function(a){return a.parent===this&&this.getIndex(a)0&&(this.remove(a,!1,!0),this.addAt(a,0,!0)),a},c.Group.prototype.moveUp=function(a){if(a.parent===this&&this.getIndex(a)0){var b=this.getIndex(a),c=this.getAt(b-1);c&&this.swap(a,c)}return a},c.Group.prototype.xy=function(a,b,c){return 0>a||a>this.children.length?-1:(this.getChildAt(a).x=b,void(this.getChildAt(a).y=c))},c.Group.prototype.reverse=function(){this.children.reverse(),this.updateZ()},c.Group.prototype.getIndex=function(a){return this.children.indexOf(a)},c.Group.prototype.getByName=function(a){for(var b=0;b0))return!1; -var f=b.length;return 1===f?0===d?a[b[0]]=c:1==d?a[b[0]]+=c:2==d?a[b[0]]-=c:3==d?a[b[0]]*=c:4==d&&(a[b[0]]/=c):2===f?0===d?a[b[0]][b[1]]=c:1==d?a[b[0]][b[1]]+=c:2==d?a[b[0]][b[1]]-=c:3==d?a[b[0]][b[1]]*=c:4==d&&(a[b[0]][b[1]]/=c):3===f?0===d?a[b[0]][b[1]][b[2]]=c:1==d?a[b[0]][b[1]][b[2]]+=c:2==d?a[b[0]][b[1]][b[2]]-=c:3==d?a[b[0]][b[1]][b[2]]*=c:4==d&&(a[b[0]][b[1]][b[2]]/=c):4===f&&(0===d?a[b[0]][b[1]][b[2]][b[3]]=c:1==d?a[b[0]][b[1]][b[2]][b[3]]+=c:2==d?a[b[0]][b[1]][b[2]][b[3]]-=c:3==d?a[b[0]][b[1]][b[2]][b[3]]*=c:4==d&&(a[b[0]][b[1]][b[2]][b[3]]/=c)),!0},c.Group.prototype.checkProperty=function(a,b,d,e){return void 0===e&&(e=!1),!c.Utils.getProperty(a,b)&&e?!1:c.Utils.getProperty(a,b)!==d?!1:!0},c.Group.prototype.set=function(a,b,c,d,e,f,g){return void 0===g&&(g=!1),b=b.split("."),void 0===d&&(d=!1),void 0===e&&(e=!1),(d===!1||d&&a.alive)&&(e===!1||e&&a.visible)?this.setProperty(a,b,c,f,g):void 0},c.Group.prototype.setAll=function(a,b,c,d,e,f){void 0===c&&(c=!1),void 0===d&&(d=!1),void 0===f&&(f=!1),a=a.split("."),e=e||0;for(var g=0;g2){c=[];for(var d=2;d2){e=[];for(var f=2;f2){d=[null];for(var e=2;e2){d=[null];for(var e=2;e2){d=[null];for(var e=2;eb[this._sortProperty]?1:a.zb[this._sortProperty]?-1:0},c.Group.prototype.iterate=function(a,b,d,e,f,g){if(d===c.Group.RETURN_TOTAL&&0===this.children.length)return 0;for(var h=0,i=0;i0?this.children[this.children.length-1]:void 0},c.Group.prototype.getBottom=function(){return this.children.length>0?this.children[0]:void 0},c.Group.prototype.getClosestTo=function(a){for(var b=Number.MAX_VALUE,d=0,e=null,f=0;fd&&(b=d,e=g))}return e},c.Group.prototype.getFurthestFrom=function(a){for(var b=0,d=0,e=null,f=0;fb&&(b=d,e=g))}return e},c.Group.prototype.countLiving=function(){return this.iterate("alive",!0,c.Group.RETURN_TOTAL)},c.Group.prototype.countDead=function(){return this.iterate("alive",!1,c.Group.RETURN_TOTAL)},c.Group.prototype.getRandom=function(a,b){return 0===this.children.length?null:(a=a||0,b=b||this.children.length,c.ArrayUtils.getRandomItem(this.children,a,b))},c.Group.prototype.remove=function(a,b,c){if(void 0===b&&(b=!1),void 0===c&&(c=!1),0===this.children.length||-1===this.children.indexOf(a))return!1;c||!a.events||a.destroyPhase||a.events.onRemovedFromGroup$dispatch(a,this);var d=this.removeChild(a);return this.removeFromHash(a),this.updateZ(),this.cursor===a&&this.next(),b&&d&&d.destroy(!0),!0},c.Group.prototype.moveAll=function(a,b){if(void 0===b&&(b=!1),this.children.length>0&&a instanceof c.Group){do a.add(this.children[0],b);while(this.children.length>0);this.hash=[],this.cursor=null}return a},c.Group.prototype.removeAll=function(a,b,c){if(void 0===a&&(a=!1),void 0===b&&(b=!1),void 0===c&&(c=!1),0!==this.children.length){do{!b&&this.children[0].events&&this.children[0].events.onRemovedFromGroup$dispatch(this.children[0],this);var d=this.removeChild(this.children[0]);this.removeFromHash(d),a&&d&&d.destroy(!0,c)}while(this.children.length>0);this.hash=[],this.cursor=null}},c.Group.prototype.removeBetween=function(a,b,c,d){if(void 0===b&&(b=this.children.length-1),void 0===c&&(c=!1),void 0===d&&(d=!1),0!==this.children.length){if(a>b||0>a||b>this.children.length)return!1;for(var e=b;e>=a;){!d&&this.children[e].events&&this.children[e].events.onRemovedFromGroup$dispatch(this.children[e],this);var f=this.removeChild(this.children[e]);this.removeFromHash(f),c&&f&&f.destroy(!0),this.cursor===this.children[e]&&(this.cursor=null),e--}this.updateZ()}},c.Group.prototype.destroy=function(a,b){null===this.game||this.ignoreDestroy||(void 0===a&&(a=!0),void 0===b&&(b=!1),this.onDestroy.dispatch(this,a,b),this.removeAll(a),this.cursor=null,this.filters=null,this.pendingDestroy=!1,b||(this.parent&&this.parent.removeChild(this),this.game=null,this.exists=!1))},Object.defineProperty(c.Group.prototype,"total",{get:function(){return this.iterate("exists",!0,c.Group.RETURN_TOTAL)}}),Object.defineProperty(c.Group.prototype,"length",{get:function(){return this.children.length}}),Object.defineProperty(c.Group.prototype,"angle",{get:function(){return c.Math.radToDeg(this.rotation)},set:function(a){this.rotation=c.Math.degToRad(a)}}),c.World=function(a){c.Group.call(this,a,null,"__world",!1),this.bounds=new c.Rectangle(0,0,a.width,a.height),this.camera=null,this._definedSize=!1,this._width=a.width,this._height=a.height,this.game.state.onStateChange.add(this.stateChange,this)},c.World.prototype=Object.create(c.Group.prototype),c.World.prototype.constructor=c.World,c.World.prototype.boot=function(){this.camera=new c.Camera(this.game,0,0,0,this.game.width,this.game.height),this.game.stage.addChild(this),this.camera.boot()},c.World.prototype.stateChange=function(){this.x=0,this.y=0,this.camera.reset()},c.World.prototype.setBounds=function(a,b,c,d){this._definedSize=!0,this._width=c,this._height=d,this.bounds.setTo(a,b,c,d),this.x=a,this.y=b,this.camera.bounds&&this.camera.bounds.setTo(a,b,Math.max(c,this.game.width),Math.max(d,this.game.height)),this.game.physics.setBoundsToWorld()},c.World.prototype.resize=function(a,b){this._definedSize&&(athis.bounds.right&&(a.x=this.bounds.left)),e&&(a.y+a._currentBounds.heightthis.bounds.bottom&&(a.y=this.bounds.top))):(d&&a.x+bthis.bounds.right&&(a.x=this.bounds.left-b),e&&a.y+bthis.bounds.bottom&&(a.y=this.bounds.top-b))},Object.defineProperty(c.World.prototype,"width",{get:function(){return this.bounds.width},set:function(a){ag;g++)e>g?f.push("color: #ff2424; background: #fff"):f.push("color: #959595; background: #fff");console.log.apply(console,f)}else window.console&&console.log("Phaser v"+a+" | Pixi.js "+PIXI.VERSION+" | "+b+" | "+d+" | http://phaser.io")}},setUpRenderer:function(){if(this.config.canvas?this.canvas=this.config.canvas:this.canvas=c.Canvas.create(this,this.width,this.height,this.config.canvasID,!0),this.config.canvasStyle?this.canvas.style=this.config.canvasStyle:this.canvas.style["-webkit-full-screen"]="width: 100%; height: 100%",this.renderType===c.HEADLESS||this.renderType===c.CANVAS||this.renderType===c.AUTO&&!this.device.webGL){if(!this.device.canvas)throw new Error("Phaser.Game - Cannot create Canvas or WebGL context, aborting.");this.renderType=c.CANVAS,this.renderer=new PIXI.CanvasRenderer(this),this.context=this.renderer.context}else this.renderType=c.WEBGL,this.renderer=new PIXI.WebGLRenderer(this),this.context=null,this.canvas.addEventListener("webglcontextlost",this.contextLost.bind(this),!1),this.canvas.addEventListener("webglcontextrestored",this.contextRestored.bind(this),!1);this.device.cocoonJS&&(this.canvas.screencanvas=this.renderType===c.CANVAS?!0:!1),this.renderType!==c.HEADLESS&&(this.stage.smoothed=this.antialias,c.Canvas.addToDOM(this.canvas,this.parent,!1),c.Canvas.setTouchAction(this.canvas))},contextLost:function(a){a.preventDefault(),this.renderer.contextLost=!0},contextRestored:function(){this.renderer.initContext(),this.cache.clearGLTextures(),this.renderer.contextLost=!1},update:function(a){if(this.time.update(a),this._kickstart)return this.updateLogic(this.time.desiredFpsMult),this.updateRender(this.time.slowMotion*this.time.desiredFps),void(this._kickstart=!1);if(this._spiraling>1&&!this.forceSingleUpdate)this.time.time>this._nextFpsNotification&&(this._nextFpsNotification=this.time.time+1e4,this.fpsProblemNotifier.dispatch()),this._deltaTime=0,this._spiraling=0,this.updateRender(this.time.slowMotion*this.time.desiredFps);else{var b=1e3*this.time.slowMotion/this.time.desiredFps;this._deltaTime+=Math.max(Math.min(3*b,this.time.elapsed),0);var c=0;for(this.updatesThisFrame=Math.floor(this._deltaTime/b),this.forceSingleUpdate&&(this.updatesThisFrame=Math.min(1,this.updatesThisFrame));this._deltaTime>=b&&(this._deltaTime-=b,this.currentUpdateID=c,this.updateLogic(this.time.desiredFpsMult),c++,!this.forceSingleUpdate||1!==c);)this.time.refresh();c>this._lastCount?this._spiraling++:c=c.Input.MAX_POINTERS)return console.warn("Phaser.Input.addPointer: Maximum limit of "+c.Input.MAX_POINTERS+" pointers reached."),null;var a=this.pointers.length+1,b=new c.Pointer(this.game,a,c.PointerMode.TOUCH);return this.pointers.push(b),this["pointer"+a]=b,b},update:function(){if(this.keyboard&&this.keyboard.update(),this.pollRate>0&&this._pollCounter=0&&this.countActivePointers(this.maxPointers)>=this.maxPointers)return null;if(!this.pointer1.active)return this.pointer1.start(a);if(!this.pointer2.active)return this.pointer2.start(a);for(var b=2;b0;c++){var d=this.pointers[c];d.active&&b--}return a-b},getPointer:function(a){void 0===a&&(a=!1);for(var b=0;b=g&&this._localPoint.x=h&&this._localPoint.y=g&&this._localPoint.x=h&&this._localPoint.y0&&this._pollCounterthis.game.time.time},justReleased:function(a){return a=a||250,this.isUp&&this.timeUp+a>this.game.time.time},reset:function(){this.isDown=!1,this.isUp=!0,this.timeDown=this.game.time.time,this.repeats=0,this.altKey=!1,this.shiftKey=!1,this.ctrlKey=!1},destroy:function(){this.onDown.dispose(),this.onUp.dispose(),this.onFloat.dispose(),this.parent=null,this.game=null}},c.DeviceButton.prototype.constructor=c.DeviceButton,Object.defineProperty(c.DeviceButton.prototype,"duration",{get:function(){return this.isUp?-1:this.game.time.time-this.timeDown}}),c.Pointer=function(a,b,d){this.game=a,this.id=b,this.type=c.POINTER,this.exists=!0,this.identifier=0,this.pointerId=null,this.pointerMode=d||c.PointerMode.CURSOR|c.PointerMode.CONTACT,this.target=null,this.button=null,this.leftButton=new c.DeviceButton(this,c.Pointer.LEFT_BUTTON),this.middleButton=new c.DeviceButton(this,c.Pointer.MIDDLE_BUTTON),this.rightButton=new c.DeviceButton(this,c.Pointer.RIGHT_BUTTON),this.backButton=new c.DeviceButton(this,c.Pointer.BACK_BUTTON),this.forwardButton=new c.DeviceButton(this,c.Pointer.FORWARD_BUTTON),this.eraserButton=new c.DeviceButton(this,c.Pointer.ERASER_BUTTON),this._holdSent=!1,this._history=[],this._nextDrop=0,this._stateReset=!1,this.withinGame=!1,this.clientX=-1,this.clientY=-1,this.pageX=-1,this.pageY=-1,this.screenX=-1,this.screenY=-1,this.rawMovementX=0,this.rawMovementY=0,this.movementX=0,this.movementY=0,this.x=-1,this.y=-1,this.isMouse=0===b,this.isDown=!1,this.isUp=!0,this.timeDown=0,this.timeUp=0,this.previousTapTime=0,this.totalTouches=0,this.msSinceLastClick=Number.MAX_VALUE,this.targetObject=null,this.interactiveCandidates=[],this.active=!1,this.dirty=!1,this.position=new c.Point,this.positionDown=new c.Point,this.positionUp=new c.Point,this.circle=new c.Circle(0,0,44),this._clickTrampolines=null,this._trampolineTargetObject=null},c.Pointer.NO_BUTTON=0,c.Pointer.LEFT_BUTTON=1,c.Pointer.RIGHT_BUTTON=2,c.Pointer.MIDDLE_BUTTON=4,c.Pointer.BACK_BUTTON=8,c.Pointer.FORWARD_BUTTON=16,c.Pointer.ERASER_BUTTON=32,c.Pointer.prototype={resetButtons:function(){this.isDown=!1,this.isUp=!0,this.isMouse&&(this.leftButton.reset(),this.middleButton.reset(),this.rightButton.reset(),this.backButton.reset(),this.forwardButton.reset(),this.eraserButton.reset())},processButtonsDown:function(a,b){c.Pointer.LEFT_BUTTON&a&&this.leftButton.start(b),c.Pointer.RIGHT_BUTTON&a&&this.rightButton.start(b),c.Pointer.MIDDLE_BUTTON&a&&this.middleButton.start(b),c.Pointer.BACK_BUTTON&a&&this.backButton.start(b),c.Pointer.FORWARD_BUTTON&a&&this.forwardButton.start(b),c.Pointer.ERASER_BUTTON&a&&this.eraserButton.start(b)},processButtonsUp:function(a,b){a===c.Mouse.LEFT_BUTTON&&this.leftButton.stop(b),a===c.Mouse.RIGHT_BUTTON&&this.rightButton.stop(b),a===c.Mouse.MIDDLE_BUTTON&&this.middleButton.stop(b),a===c.Mouse.BACK_BUTTON&&this.backButton.stop(b),a===c.Mouse.FORWARD_BUTTON&&this.forwardButton.stop(b),5===a&&this.eraserButton.stop(b)},updateButtons:function(a){this.button=a.button;var b="down"===a.type.toLowerCase().substr(-4);void 0!==a.buttons?b?this.processButtonsDown(a.buttons,a):this.processButtonsUp(a.button,a):b?this.leftButton.start(a):(this.leftButton.stop(a),this.rightButton.stop(a)),1===a.buttons&&a.ctrlKey&&this.leftButton.isDown&&(this.leftButton.stop(a),this.rightButton.start(a)),this.isUp=!0,this.isDown=!1,(this.leftButton.isDown||this.rightButton.isDown||this.middleButton.isDown||this.backButton.isDown||this.forwardButton.isDown||this.eraserButton.isDown)&&(this.isUp=!1,this.isDown=!0)},start:function(a){var b=this.game.input;return a.pointerId&&(this.pointerId=a.pointerId),this.identifier=a.identifier,this.target=a.target,this.isMouse?this.updateButtons(a):(this.isDown=!0,this.isUp=!1),this.active=!0,this.withinGame=!0,this.dirty=!1,this._history=[],this._clickTrampolines=null,this._trampolineTargetObject=null,this.msSinceLastClick=this.game.time.time-this.timeDown,this.timeDown=this.game.time.time,this._holdSent=!1,this.move(a,!0),this.positionDown.setTo(this.x,this.y),(b.multiInputOverride===c.Input.MOUSE_OVERRIDES_TOUCH||b.multiInputOverride===c.Input.MOUSE_TOUCH_COMBINE||b.multiInputOverride===c.Input.TOUCH_OVERRIDES_MOUSE&&0===b.totalActivePointers)&&(b.x=this.x,b.y=this.y,b.position.setTo(this.x,this.y),b.onDown.dispatch(this,a),b.resetSpeed(this.x,this.y)),this._stateReset=!1,this.totalTouches++,null!==this.targetObject&&this.targetObject._touchedHandler(this),this},update:function(){var a=this.game.input;this.active&&(this.dirty&&(a.interactiveItems.total>0&&this.processInteractiveObjects(!1),this.dirty=!1),this._holdSent===!1&&this.duration>=a.holdRate&&((a.multiInputOverride===c.Input.MOUSE_OVERRIDES_TOUCH||a.multiInputOverride===c.Input.MOUSE_TOUCH_COMBINE||a.multiInputOverride===c.Input.TOUCH_OVERRIDES_MOUSE&&0===a.totalActivePointers)&&a.onHold.dispatch(this),this._holdSent=!0),a.recordPointerHistory&&this.game.time.time>=this._nextDrop&&(this._nextDrop=this.game.time.time+a.recordRate,this._history.push({x:this.position.x,y:this.position.y}),this._history.length>a.recordLimit&&this._history.shift()))},move:function(a,b){var d=this.game.input;if(!d.pollLocked){if(void 0===b&&(b=!1),void 0!==a.button&&(this.button=a.button),b&&this.isMouse&&this.updateButtons(a),this.clientX=a.clientX,this.clientY=a.clientY,this.pageX=a.pageX,this.pageY=a.pageY,this.screenX=a.screenX,this.screenY=a.screenY,this.isMouse&&d.mouse.locked&&!b&&(this.rawMovementX=a.movementX||a.mozMovementX||a.webkitMovementX||0,this.rawMovementY=a.movementY||a.mozMovementY||a.webkitMovementY||0,this.movementX+=this.rawMovementX,this.movementY+=this.rawMovementY),this.x=(this.pageX-this.game.scale.offset.x)*d.scale.x,this.y=(this.pageY-this.game.scale.offset.y)*d.scale.y,this.position.setTo(this.x,this.y),this.circle.x=this.x,this.circle.y=this.y,(d.multiInputOverride===c.Input.MOUSE_OVERRIDES_TOUCH||d.multiInputOverride===c.Input.MOUSE_TOUCH_COMBINE||d.multiInputOverride===c.Input.TOUCH_OVERRIDES_MOUSE&&0===d.totalActivePointers)&&(d.activePointer=this,d.x=this.x,d.y=this.y,d.position.setTo(d.x,d.y),d.circle.x=d.x,d.circle.y=d.y),this.withinGame=this.game.scale.bounds.contains(this.pageX,this.pageY),this.game.paused)return this;for(var e=d.moveCallbacks.length;e--;)d.moveCallbacks[e].callback.call(d.moveCallbacks[e].context,this,this.x,this.y,b);return null!==this.targetObject&&this.targetObject.isDragged===!0?this.targetObject.update(this)===!1&&(this.targetObject=null):d.interactiveItems.total>0&&this.processInteractiveObjects(b),this}},processInteractiveObjects:function(a){var b=0,c=-1,d=null,e=this.game.input.interactiveItems.first;for(this.interactiveCandidates=[];e;)e.checked=!1,e.validForInput(c,b,!1)&&(e.checked=!0,(a&&e.checkPointerDown(this,!0)||!a&&e.checkPointerOver(this,!0))&&(b=e.sprite.renderOrderID,c=e.priorityID,d=e,this.interactiveCandidates.push(e))),e=this.game.input.interactiveItems.next;for(e=this.game.input.interactiveItems.first;e;)!e.checked&&e.validForInput(c,b,!0)&&(a&&e.checkPointerDown(this,!1)||!a&&e.checkPointerOver(this,!1))&&(b=e.sprite.renderOrderID,c=e.priorityID,d=e,this.interactiveCandidates.push(e)),e=this.game.input.interactiveItems.next;return this.game.input.customCandidateHandler&&(d=this.game.input.customCandidateHandler.call(this.game.input.customCandidateHandlerContext,this,this.interactiveCandidates,d)),this.swapTarget(d,!1),null!==this.targetObject},swapTarget:function(a,b){void 0===b&&(b=!1),null===a?this.targetObject&&(this.targetObject._pointerOutHandler(this,b),this.targetObject=null):null===this.targetObject?(this.targetObject=a,a._pointerOverHandler(this,b)):this.targetObject===a?a.update(this)===!1&&(this.targetObject=null):(this.targetObject._pointerOutHandler(this,b),this.targetObject=a,this.targetObject._pointerOverHandler(this,b))},leave:function(a){this.withinGame=!1,this.move(a,!1)},stop:function(a){var b=this.game.input;return this._stateReset&&this.withinGame?void a.preventDefault():(this.timeUp=this.game.time.time,(b.multiInputOverride===c.Input.MOUSE_OVERRIDES_TOUCH||b.multiInputOverride===c.Input.MOUSE_TOUCH_COMBINE||b.multiInputOverride===c.Input.TOUCH_OVERRIDES_MOUSE&&0===b.totalActivePointers)&&(b.onUp.dispatch(this,a),this.duration>=0&&this.duration<=b.tapRate&&(this.timeUp-this.previousTapTime0&&(this.active=!1),this.withinGame=this.game.scale.bounds.contains(a.pageX,a.pageY),this.pointerId=null,this.identifier=null,this.positionUp.setTo(this.x,this.y),this.isMouse===!1&&b.currentPointers--,b.interactiveItems.callAll("_releasedHandler",this),this._clickTrampolines&&(this._trampolineTargetObject=this.targetObject),this.targetObject=null,this)},justPressed:function(a){return a=a||this.game.input.justPressedRate,this.isDown===!0&&this.timeDown+a>this.game.time.time},justReleased:function(a){return a=a||this.game.input.justReleasedRate,this.isUp&&this.timeUp+a>this.game.time.time},addClickTrampoline:function(a,b,c,d){if(this.isDown){for(var e=this._clickTrampolines=this._clickTrampolines||[],f=0;fd;d++)this._pointerData[d]={id:d,x:0,y:0,isDown:!1,isUp:!1,isOver:!1,isOut:!1,timeOver:0,timeOut:0,timeDown:0,timeUp:0,downDuration:0,isDragged:!1};this.snapOffset=new c.Point,this.enabled=!0,this._wasEnabled=!0}return this.sprite.events.onAddedToGroup.add(this.addedToGroup,this),this.sprite.events.onRemovedFromGroup.add(this.removedFromGroup,this),this.flagged=!1,this.sprite},addedToGroup:function(){this._dragPhase||this._wasEnabled&&!this.enabled&&this.start()},removedFromGroup:function(){this._dragPhase||(this.enabled?(this._wasEnabled=!0,this.stop()):this._wasEnabled=!1)},reset:function(){this.enabled=!1,this.flagged=!1;for(var a=0;10>a;a++)this._pointerData[a]={id:a,x:0,y:0,isDown:!1,isUp:!1,isOver:!1,isOut:!1,timeOver:0,timeOut:0,timeDown:0,timeUp:0,downDuration:0,isDragged:!1}},stop:function(){this.enabled!==!1&&(this.enabled=!1,this.game.input.interactiveItems.remove(this))},destroy:function(){this.sprite&&(this._setHandCursor&&(this.game.canvas.style.cursor="default",this._setHandCursor=!1),this.enabled=!1,this.game.input.interactiveItems.remove(this),this._pointerData.length=0,this.boundsRect=null,this.boundsSprite=null,this.sprite=null)},validForInput:function(a,b,c){return void 0===c&&(c=!0),!this.enabled||0===this.sprite.scale.x||0===this.sprite.scale.y||this.priorityIDa||this.priorityID===a&&this.sprite.renderOrderID>b)?!0:!1},isPixelPerfect:function(){return this.pixelPerfectClick||this.pixelPerfectOver},pointerX:function(a){return a=a||0,this._pointerData[a].x},pointerY:function(a){return a=a||0,this._pointerData[a].y},pointerDown:function(a){return a=a||0,this._pointerData[a].isDown},pointerUp:function(a){return a=a||0,this._pointerData[a].isUp},pointerTimeDown:function(a){return a=a||0,this._pointerData[a].timeDown},pointerTimeUp:function(a){return a=a||0,this._pointerData[a].timeUp},pointerOver:function(a){if(!this.enabled)return!1;if(void 0===a){for(var b=0;10>b;b++)if(this._pointerData[b].isOver)return!0;return!1}return this._pointerData[a].isOver},pointerOut:function(a){if(!this.enabled)return!1;if(void 0!==a)return this._pointerData[a].isOut;for(var b=0;10>b;b++)if(this._pointerData[b].isOut)return!0},pointerTimeOver:function(a){return a=a||0,this._pointerData[a].timeOver},pointerTimeOut:function(a){return a=a||0,this._pointerData[a].timeOut},pointerDragged:function(a){return a=a||0,this._pointerData[a].isDragged},checkPointerDown:function(a,b){return a.isDown&&this.enabled&&this.sprite&&this.sprite.parent&&this.sprite.visible&&this.sprite.parent.visible&&0!==this.sprite.worldScale.x&&0!==this.sprite.worldScale.y&&this.game.input.hitTest(this.sprite,a,this._tempPoint)?(void 0===b&&(b=!1),!b&&this.pixelPerfectClick?this.checkPixel(this._tempPoint.x,this._tempPoint.y):!0):!1},checkPointerOver:function(a,b){return this.enabled&&this.sprite&&this.sprite.parent&&this.sprite.visible&&this.sprite.parent.visible&&0!==this.sprite.worldScale.x&&0!==this.sprite.worldScale.y&&this.game.input.hitTest(this.sprite,a,this._tempPoint)?(void 0===b&&(b=!1),!b&&this.pixelPerfectOver?this.checkPixel(this._tempPoint.x,this._tempPoint.y):!0):!1},checkPixel:function(a,b,c){if(this.sprite.texture.baseTexture.source){if(null===a&&null===b){this.game.input.getLocalPosition(this.sprite,c,this._tempPoint);var a=this._tempPoint.x,b=this._tempPoint.y}if(0!==this.sprite.anchor.x&&(a-=-this.sprite.texture.frame.width*this.sprite.anchor.x),0!==this.sprite.anchor.y&&(b-=-this.sprite.texture.frame.height*this.sprite.anchor.y),a+=this.sprite.texture.frame.x,b+=this.sprite.texture.frame.y,this.sprite.texture.trim&&(a-=this.sprite.texture.trim.x,b-=this.sprite.texture.trim.y,athis.sprite.texture.crop.right||bthis.sprite.texture.crop.bottom))return this._dx=a,this._dy=b,!1;this._dx=a,this._dy=b,this.game.input.hitContext.clearRect(0,0,1,1),this.game.input.hitContext.drawImage(this.sprite.texture.baseTexture.source,a,b,1,1,0,0,1,1);var d=this.game.input.hitContext.getImageData(0,0,1,1);if(d.data[3]>=this.pixelPerfectAlpha)return!0}return!1},update:function(a){return null!==this.sprite&&void 0!==this.sprite.parent?this.enabled&&this.sprite.visible&&this.sprite.parent.visible?this._pendingDrag?(this._dragDistancePass||(this._dragDistancePass=c.Math.distance(a.x,a.y,this.downPoint.x,this.downPoint.y)>=this.dragDistanceThreshold),this._dragDistancePass&&this._dragTimePass&&this.startDrag(a),!0):this.draggable&&this._draggedPointerID===a.id?this.updateDrag(a):this._pointerData[a.id].isOver?this.checkPointerOver(a)?(this._pointerData[a.id].x=a.x-this.sprite.x,this._pointerData[a.id].y=a.y-this.sprite.y,!0):(this._pointerOutHandler(a),!1):void 0:(this._pointerOutHandler(a),!1):void 0},_pointerOverHandler:function(a,b){if(null!==this.sprite){var d=this._pointerData[a.id];if(d.isOver===!1||a.dirty){var e=d.isOver===!1;d.isOver=!0,d.isOut=!1,d.timeOver=this.game.time.time,d.x=a.x-this.sprite.x,d.y=a.y-this.sprite.y,this.useHandCursor&&d.isDragged===!1&&(this.game.canvas.style.cursor="pointer",this._setHandCursor=!0),!b&&e&&this.sprite&&this.sprite.events&&this.sprite.events.onInputOver$dispatch(this.sprite,a),this.sprite.parent&&this.sprite.parent.type===c.GROUP&&this.sprite.parent.onChildInputOver.dispatch(this.sprite,a)}}},_pointerOutHandler:function(a,b){if(null!==this.sprite){var d=this._pointerData[a.id];d.isOver=!1,d.isOut=!0,d.timeOut=this.game.time.time,this.useHandCursor&&d.isDragged===!1&&(this.game.canvas.style.cursor="default",this._setHandCursor=!1),!b&&this.sprite&&this.sprite.events&&(this.sprite.events.onInputOut$dispatch(this.sprite,a),this.sprite&&this.sprite.parent&&this.sprite.parent.type===c.GROUP&&this.sprite.parent.onChildInputOut.dispatch(this.sprite,a))}},_touchedHandler:function(a){if(null!==this.sprite){var b=this._pointerData[a.id];if(!b.isDown&&b.isOver){if(this.pixelPerfectClick&&!this.checkPixel(null,null,a))return;if(b.isDown=!0,b.isUp=!1,b.timeDown=this.game.time.time,this.downPoint.set(a.x,a.y),a.dirty=!0,this.sprite&&this.sprite.events&&(this.sprite.events.onInputDown$dispatch(this.sprite,a),this.sprite&&this.sprite.parent&&this.sprite.parent.type===c.GROUP&&this.sprite.parent.onChildInputDown.dispatch(this.sprite,a), -null===this.sprite))return;this.draggable&&this.isDragged===!1&&(0===this.dragTimeThreshold&&0===this.dragDistanceThreshold?this.startDrag(a):(this._pendingDrag=!0,this._dragDistancePass=0===this.dragDistanceThreshold,this.dragTimeThreshold>0?(this._dragTimePass=!1,this.game.time.events.add(this.dragTimeThreshold,this.dragTimeElapsed,this,a)):this._dragTimePass=!0)),this.bringToTop&&this.sprite.bringToTop()}}},dragTimeElapsed:function(a){this._dragTimePass=!0,this._pendingDrag&&this.sprite&&this._dragDistancePass&&this.startDrag(a)},_releasedHandler:function(a){if(null!==this.sprite){var b=this._pointerData[a.id];if(b.isDown&&a.isUp){b.isDown=!1,b.isUp=!0,b.timeUp=this.game.time.time,b.downDuration=b.timeUp-b.timeDown;var d=this.checkPointerOver(a);this.sprite&&this.sprite.events&&(this.dragStopBlocksInputUp&&(!this.dragStopBlocksInputUp||this.draggable&&this.isDragged&&this._draggedPointerID===a.id)||this.sprite.events.onInputUp$dispatch(this.sprite,a,d),this.sprite&&this.sprite.parent&&this.sprite.parent.type===c.GROUP&&this.sprite.parent.onChildInputUp.dispatch(this.sprite,a,d),d&&(d=this.checkPointerOver(a))),b.isOver=d,!d&&this.useHandCursor&&(this.game.canvas.style.cursor="default",this._setHandCursor=!1),a.dirty=!0,this._pendingDrag=!1,this.draggable&&this.isDragged&&this._draggedPointerID===a.id&&this.stopDrag(a)}}},updateDrag:function(a,b){if(a.isUp)return this.stopDrag(a),!1;void 0===b&&(b=!1);var c=this.globalToLocalX(a.x)+this._dragPoint.x+this.dragOffset.x,d=this.globalToLocalY(a.y)+this._dragPoint.y+this.dragOffset.y;if(this.sprite.fixedToCamera)this.allowHorizontalDrag&&(this.sprite.cameraOffset.x=c),this.allowVerticalDrag&&(this.sprite.cameraOffset.y=d),this.boundsRect&&this.checkBoundsRect(),this.boundsSprite&&this.checkBoundsSprite(),this.snapOnDrag&&(this.sprite.cameraOffset.x=Math.round((this.sprite.cameraOffset.x-this.snapOffsetX%this.snapX)/this.snapX)*this.snapX+this.snapOffsetX%this.snapX,this.sprite.cameraOffset.y=Math.round((this.sprite.cameraOffset.y-this.snapOffsetY%this.snapY)/this.snapY)*this.snapY+this.snapOffsetY%this.snapY,this.snapPoint.set(this.sprite.cameraOffset.x,this.sprite.cameraOffset.y));else{var e=this.game.camera.x-this._pointerData[a.id].camX,f=this.game.camera.y-this._pointerData[a.id].camY;this.allowHorizontalDrag&&(this.sprite.x=c+e),this.allowVerticalDrag&&(this.sprite.y=d+f),this.boundsRect&&this.checkBoundsRect(),this.boundsSprite&&this.checkBoundsSprite(),this.snapOnDrag&&(this.sprite.x=Math.round((this.sprite.x-this.snapOffsetX%this.snapX)/this.snapX)*this.snapX+this.snapOffsetX%this.snapX,this.sprite.y=Math.round((this.sprite.y-this.snapOffsetY%this.snapY)/this.snapY)*this.snapY+this.snapOffsetY%this.snapY,this.snapPoint.set(this.sprite.x,this.sprite.y))}return this.sprite.events.onDragUpdate.dispatch(this.sprite,a,c,d,this.snapPoint,b),!0},justOver:function(a,b){return a=a||0,b=b||500,this._pointerData[a].isOver&&this.overDuration(a)a;a++)this._pointerData[a].isDragged=!1;this.draggable=!1,this.isDragged=!1,this._draggedPointerID=-1,this._pendingDrag=!1},startDrag:function(a){var b=this.sprite.x,c=this.sprite.y;if(this.isDragged=!0,this._draggedPointerID=a.id,this._pointerData[a.id].camX=this.game.camera.x,this._pointerData[a.id].camY=this.game.camera.y,this._pointerData[a.id].isDragged=!0,this.sprite.fixedToCamera){if(this.dragFromCenter){var d=this.sprite.getBounds();this.sprite.cameraOffset.x=this.globalToLocalX(a.x)+(this.sprite.cameraOffset.x-d.centerX),this.sprite.cameraOffset.y=this.globalToLocalY(a.y)+(this.sprite.cameraOffset.y-d.centerY)}this._dragPoint.setTo(this.sprite.cameraOffset.x-a.x,this.sprite.cameraOffset.y-a.y)}else{if(this.dragFromCenter){var d=this.sprite.getBounds();this.sprite.x=this.globalToLocalX(a.x)+(this.sprite.x-d.centerX),this.sprite.y=this.globalToLocalY(a.y)+(this.sprite.y-d.centerY)}this._dragPoint.setTo(this.sprite.x-this.globalToLocalX(a.x),this.sprite.y-this.globalToLocalY(a.y))}this.updateDrag(a,!0),this.bringToTop&&(this._dragPhase=!0,this.sprite.bringToTop()),this.dragStartPoint.set(b,c),this.sprite.events.onDragStart$dispatch(this.sprite,a,b,c),this._pendingDrag=!1},globalToLocalX:function(a){return this.scaleLayer&&(a-=this.game.scale.grid.boundsFluid.x,a*=this.game.scale.grid.scaleFluidInversed.x),a},globalToLocalY:function(a){return this.scaleLayer&&(a-=this.game.scale.grid.boundsFluid.y,a*=this.game.scale.grid.scaleFluidInversed.y),a},stopDrag:function(a){this.isDragged=!1,this._draggedPointerID=-1,this._pointerData[a.id].isDragged=!1,this._dragPhase=!1,this._pendingDrag=!1,this.snapOnRelease&&(this.sprite.fixedToCamera?(this.sprite.cameraOffset.x=Math.round((this.sprite.cameraOffset.x-this.snapOffsetX%this.snapX)/this.snapX)*this.snapX+this.snapOffsetX%this.snapX,this.sprite.cameraOffset.y=Math.round((this.sprite.cameraOffset.y-this.snapOffsetY%this.snapY)/this.snapY)*this.snapY+this.snapOffsetY%this.snapY):(this.sprite.x=Math.round((this.sprite.x-this.snapOffsetX%this.snapX)/this.snapX)*this.snapX+this.snapOffsetX%this.snapX,this.sprite.y=Math.round((this.sprite.y-this.snapOffsetY%this.snapY)/this.snapY)*this.snapY+this.snapOffsetY%this.snapY)),this.sprite.events.onDragStop$dispatch(this.sprite,a),this.checkPointerOver(a)===!1&&this._pointerOutHandler(a)},setDragLock:function(a,b){void 0===a&&(a=!0),void 0===b&&(b=!0),this.allowHorizontalDrag=a,this.allowVerticalDrag=b},enableSnap:function(a,b,c,d,e,f){void 0===c&&(c=!0),void 0===d&&(d=!1),void 0===e&&(e=0),void 0===f&&(f=0),this.snapX=a,this.snapY=b,this.snapOffsetX=e,this.snapOffsetY=f,this.snapOnDrag=c,this.snapOnRelease=d},disableSnap:function(){this.snapOnDrag=!1,this.snapOnRelease=!1},checkBoundsRect:function(){this.sprite.fixedToCamera?(this.sprite.cameraOffset.xthis.boundsRect.right&&(this.sprite.cameraOffset.x=this.boundsRect.right-this.sprite.width),this.sprite.cameraOffset.ythis.boundsRect.bottom&&(this.sprite.cameraOffset.y=this.boundsRect.bottom-this.sprite.height)):(this.sprite.leftthis.boundsRect.right&&(this.sprite.x=this.boundsRect.right-(this.sprite.width-this.sprite.offsetX)),this.sprite.topthis.boundsRect.bottom&&(this.sprite.y=this.boundsRect.bottom-(this.sprite.height-this.sprite.offsetY)))},checkBoundsSprite:function(){this.sprite.fixedToCamera&&this.boundsSprite.fixedToCamera?(this.sprite.cameraOffset.xthis.boundsSprite.cameraOffset.x+this.boundsSprite.width&&(this.sprite.cameraOffset.x=this.boundsSprite.cameraOffset.x+this.boundsSprite.width-this.sprite.width),this.sprite.cameraOffset.ythis.boundsSprite.cameraOffset.y+this.boundsSprite.height&&(this.sprite.cameraOffset.y=this.boundsSprite.cameraOffset.y+this.boundsSprite.height-this.sprite.height)):(this.sprite.leftthis.boundsSprite.right&&(this.sprite.x=this.boundsSprite.right-(this.sprite.width-this.sprite.offsetX)),this.sprite.topthis.boundsSprite.bottom&&(this.sprite.y=this.boundsSprite.bottom-(this.sprite.height-this.sprite.offsetY)))}},c.InputHandler.prototype.constructor=c.InputHandler,c.Gamepad=function(a){this.game=a,this._gamepadIndexMap={},this._rawPads=[],this._active=!1,this.enabled=!0,this._gamepadSupportAvailable=!!navigator.webkitGetGamepads||!!navigator.webkitGamepads||-1!=navigator.userAgent.indexOf("Firefox/")||!!navigator.getGamepads,this._prevRawGamepadTypes=[],this._prevTimestamps=[],this.callbackContext=this,this.onConnectCallback=null,this.onDisconnectCallback=null,this.onDownCallback=null,this.onUpCallback=null,this.onAxisCallback=null,this.onFloatCallback=null,this._ongamepadconnected=null,this._gamepaddisconnected=null,this._gamepads=[new c.SinglePad(a,this),new c.SinglePad(a,this),new c.SinglePad(a,this),new c.SinglePad(a,this)]},c.Gamepad.prototype={addCallbacks:function(a,b){"undefined"!=typeof b&&(this.onConnectCallback="function"==typeof b.onConnect?b.onConnect:this.onConnectCallback,this.onDisconnectCallback="function"==typeof b.onDisconnect?b.onDisconnect:this.onDisconnectCallback,this.onDownCallback="function"==typeof b.onDown?b.onDown:this.onDownCallback,this.onUpCallback="function"==typeof b.onUp?b.onUp:this.onUpCallback,this.onAxisCallback="function"==typeof b.onAxis?b.onAxis:this.onAxisCallback,this.onFloatCallback="function"==typeof b.onFloat?b.onFloat:this.onFloatCallback,this.callbackContext=a)},start:function(){if(!this._active){this._active=!0;var a=this;this._onGamepadConnected=function(b){return a.onGamepadConnected(b)},this._onGamepadDisconnected=function(b){return a.onGamepadDisconnected(b)},window.addEventListener("gamepadconnected",this._onGamepadConnected,!1),window.addEventListener("gamepaddisconnected",this._onGamepadDisconnected,!1)}},onGamepadConnected:function(a){var b=a.gamepad;this._rawPads.push(b),this._gamepads[b.index].connect(b)},onGamepadDisconnected:function(a){var b=a.gamepad;for(var c in this._rawPads)this._rawPads[c].index===b.index&&this._rawPads.splice(c,1);this._gamepads[b.index].disconnect()},update:function(){this._pollGamepads(),this.pad1.pollStatus(),this.pad2.pollStatus(),this.pad3.pollStatus(),this.pad4.pollStatus()},_pollGamepads:function(){if(this._active){if(navigator.getGamepads)var a=navigator.getGamepads();else if(navigator.webkitGetGamepads)var a=navigator.webkitGetGamepads();else if(navigator.webkitGamepads)var a=navigator.webkitGamepads();if(a){this._rawPads=[];for(var b=!1,c=0;c0&&d>this.deadZone||0>d&&d<-this.deadZone?this.processAxisChange(c,d):this.processAxisChange(c,0)}this._prevTimestamp=this._rawPad.timestamp}},connect:function(a){var b=!this.connected;this.connected=!0,this.index=a.index,this._rawPad=a,this._buttons=[],this._buttonsLen=a.buttons.length,this._axes=[],this._axesLen=a.axes.length;for(var d=0;dthis.maxHealth&&(this.health=this.maxHealth),this},heal:function(a){return this.alive&&(this.health+=a,this.health>this.maxHealth&&(this.health=this.maxHealth)),this}},c.Component.InCamera=function(){},c.Component.InCamera.prototype={inCamera:{get:function(){return this.game.world.camera.view.intersects(this._bounds)}}},c.Component.InputEnabled=function(){},c.Component.InputEnabled.prototype={input:null,inputEnabled:{get:function(){return this.input&&this.input.enabled},set:function(a){a?null===this.input?(this.input=new c.InputHandler(this),this.input.start()):this.input&&!this.input.enabled&&this.input.start():this.input&&this.input.enabled&&this.input.stop()}}},c.Component.InWorld=function(){},c.Component.InWorld.preUpdate=function(){if(this.autoCull||this.checkWorldBounds){if(this._bounds.copyFrom(this.getBounds()),this._bounds.x+=this.game.camera.view.x,this._bounds.y+=this.game.camera.view.y,this.autoCull)if(this.game.world.camera.view.intersects(this._bounds))this.renderable=!0,this.game.world.camera.totalInView++;else if(this.renderable=!1,this.outOfCameraBoundsKill)return this.kill(),!1;if(this.checkWorldBounds)if(this._outOfBoundsFired&&this.game.world.bounds.intersects(this._bounds))this._outOfBoundsFired=!1,this.events.onEnterBounds$dispatch(this);else if(!this._outOfBoundsFired&&!this.game.world.bounds.intersects(this._bounds)&&(this._outOfBoundsFired=!0,this.events.onOutOfBounds$dispatch(this),this.outOfBoundsKill))return this.kill(),!1}return!0},c.Component.InWorld.prototype={checkWorldBounds:!1,outOfBoundsKill:!1,outOfCameraBoundsKill:!1,_outOfBoundsFired:!1,inWorld:{get:function(){return this.game.world.bounds.intersects(this.getBounds())}}},c.Component.LifeSpan=function(){},c.Component.LifeSpan.preUpdate=function(){return this.lifespan>0&&(this.lifespan-=this.game.time.physicsElapsedMS,this.lifespan<=0)?(this.kill(),!1):!0},c.Component.LifeSpan.prototype={alive:!0,lifespan:0,revive:function(a){return void 0===a&&(a=100),this.alive=!0,this.exists=!0,this.visible=!0,"function"==typeof this.setHealth&&this.setHealth(a),this.events&&this.events.onRevived$dispatch(this),this},kill:function(){return this.alive=!1,this.exists=!1,this.visible=!1,this.events&&this.events.onKilled$dispatch(this),this}},c.Component.LoadTexture=function(){},c.Component.LoadTexture.prototype={customRender:!1,_frame:null,loadTexture:function(a,b,d){a===c.PENDING_ATLAS?(a=b,b=0):b=b||0,(d||void 0===d)&&this.animations&&this.animations.stop(),this.key=a,this.customRender=!1;var e=this.game.cache,f=!0,g=!this.texture.baseTexture.scaleMode;if(c.RenderTexture&&a instanceof c.RenderTexture)this.key=a.key,this.setTexture(a);else if(c.BitmapData&&a instanceof c.BitmapData)this.customRender=!0,this.setTexture(a.texture),f=e.hasFrameData(a.key,c.Cache.BITMAPDATA)?!this.animations.loadFrameData(e.getFrameData(a.key,c.Cache.BITMAPDATA),b):!this.animations.loadFrameData(a.frameData,0);else if(c.Video&&a instanceof c.Video){this.customRender=!0;var h=a.texture.valid;this.setTexture(a.texture),this.setFrame(a.texture.frame.clone()),a.onChangeSource.add(this.resizeFrame,this),this.texture.valid=h}else if(c.Tilemap&&a instanceof c.TilemapLayer)this.setTexture(PIXI.Texture.fromCanvas(a.canvas));else if(a instanceof PIXI.Texture)this.setTexture(a);else{var i=e.getImage(a,!0);this.key=i.key,this.setTexture(new PIXI.Texture(i.base)),"__default"===a?this.texture.baseTexture.skipRender=!0:this.texture.baseTexture.skipRender=!1,f=!this.animations.loadFrameData(i.frameData,b)}f&&(this._frame=c.Rectangle.clone(this.texture.frame)),g||(this.texture.baseTexture.scaleMode=1)},setFrame:function(a){this._frame=a,this.texture.frame.x=a.x,this.texture.frame.y=a.y,this.texture.frame.width=a.width,this.texture.frame.height=a.height,this.texture.crop.x=a.x,this.texture.crop.y=a.y,this.texture.crop.width=a.width,this.texture.crop.height=a.height,a.trimmed?(this.texture.trim?(this.texture.trim.x=a.spriteSourceSizeX,this.texture.trim.y=a.spriteSourceSizeY,this.texture.trim.width=a.sourceSizeW,this.texture.trim.height=a.sourceSizeH):this.texture.trim={x:a.spriteSourceSizeX,y:a.spriteSourceSizeY,width:a.sourceSizeW,height:a.sourceSizeH},this.texture.width=a.sourceSizeW,this.texture.height=a.sourceSizeH,this.texture.frame.width=a.sourceSizeW,this.texture.frame.height=a.sourceSizeH):!a.trimmed&&this.texture.trim&&(this.texture.trim=null),this.cropRect&&this.updateCrop(),this.texture.requiresReTint=!0,this.texture._updateUvs(),this.tilingTexture&&(this.refreshTexture=!0)},resizeFrame:function(a,b,c){this.texture.frame.resize(b,c),this.texture.setFrame(this.texture.frame)},resetFrame:function(){this._frame&&this.setFrame(this._frame)},frame:{get:function(){return this.animations.frame},set:function(a){this.animations.frame=a}},frameName:{get:function(){return this.animations.frameName},set:function(a){this.animations.frameName=a}}},c.Component.Overlap=function(){},c.Component.Overlap.prototype={overlap:function(a){return c.Rectangle.intersects(this.getBounds(),a.getBounds())}},c.Component.PhysicsBody=function(){},c.Component.PhysicsBody.preUpdate=function(){return this.fresh&&this.exists?(this.world.setTo(this.parent.position.x+this.position.x,this.parent.position.y+this.position.y),this.worldTransform.tx=this.world.x,this.worldTransform.ty=this.world.y,this.previousPosition.set(this.world.x,this.world.y),this.previousRotation=this.rotation,this.body&&this.body.preUpdate(),this.fresh=!1,!1):(this.previousPosition.set(this.world.x,this.world.y),this.previousRotation=this.rotation,this._exists&&this.parent.exists?!0:(this.renderOrderID=-1,!1))},c.Component.PhysicsBody.postUpdate=function(){this.exists&&this.body&&this.body.postUpdate()},c.Component.PhysicsBody.prototype={body:null,x:{get:function(){return this.position.x},set:function(a){this.position.x=a,this.body&&!this.body.dirty&&(this.body._reset=!0)}},y:{get:function(){return this.position.y},set:function(a){this.position.y=a,this.body&&!this.body.dirty&&(this.body._reset=!0)}}},c.Component.Reset=function(){},c.Component.Reset.prototype.reset=function(a,b,c){return void 0===c&&(c=1),this.world.set(a,b),this.position.set(a,b),this.fresh=!0,this.exists=!0,this.visible=!0,this.renderable=!0,this.components.InWorld&&(this._outOfBoundsFired=!1),this.components.LifeSpan&&(this.alive=!0,this.health=c),this.components.PhysicsBody&&this.body&&this.body.reset(a,b,!1,!1),this},c.Component.ScaleMinMax=function(){},c.Component.ScaleMinMax.prototype={transformCallback:null,transformCallbackContext:this,scaleMin:null,scaleMax:null,checkTransform:function(a){this.scaleMin&&(a.athis.scaleMax.x&&(a.a=this.scaleMax.x),a.d>this.scaleMax.y&&(a.d=this.scaleMax.y))},setScaleMinMax:function(a,b,d,e){void 0===b?b=d=e=a:void 0===d&&(d=e=b,b=a),null===a?this.scaleMin=null:this.scaleMin?this.scaleMin.set(a,b):this.scaleMin=new c.Point(a,b),null===d?this.scaleMax=null:this.scaleMax?this.scaleMax.set(d,e):this.scaleMax=new c.Point(d,e),null===this.scaleMin?this.transformCallback=null:(this.transformCallback=this.checkTransform,this.transformCallbackContext=this)}},c.Component.Smoothed=function(){},c.Component.Smoothed.prototype={smoothed:{get:function(){return!this.texture.baseTexture.scaleMode},set:function(a){a?this.texture&&(this.texture.baseTexture.scaleMode=0):this.texture&&(this.texture.baseTexture.scaleMode=1)}}},c.GameObjectFactory=function(a){this.game=a,this.world=this.game.world},c.GameObjectFactory.prototype={existing:function(a){return this.world.add(a)},weapon:function(a,b,d,e){var f=this.game.plugins.add(c.Weapon);return f.createBullets(a,b,d,e),f},image:function(a,b,d,e,f){return void 0===f&&(f=this.world),f.add(new c.Image(this.game,a,b,d,e))},sprite:function(a,b,c,d,e){return void 0===e&&(e=this.world),e.create(a,b,c,d)},creature:function(a,b,d,e,f){void 0===f&&(f=this.world);var g=new c.Creature(this.game,a,b,d,e);return f.add(g),g},tween:function(a){return this.game.tweens.create(a)},group:function(a,b,d,e,f){return new c.Group(this.game,a,b,d,e,f)},physicsGroup:function(a,b,d,e){return new c.Group(this.game,b,d,e,!0,a)},spriteBatch:function(a,b,d){return void 0===a&&(a=null),void 0===b&&(b="group"),void 0===d&&(d=!1),new c.SpriteBatch(this.game,a,b,d)},audio:function(a,b,c,d){return this.game.sound.add(a,b,c,d)},sound:function(a,b,c,d){return this.game.sound.add(a,b,c,d)},audioSprite:function(a){return this.game.sound.addSprite(a)},tileSprite:function(a,b,d,e,f,g,h){return void 0===h&&(h=this.world),h.add(new c.TileSprite(this.game,a,b,d,e,f,g))},rope:function(a,b,d,e,f,g){return void 0===g&&(g=this.world),g.add(new c.Rope(this.game,a,b,d,e,f))},text:function(a,b,d,e,f){return void 0===f&&(f=this.world),f.add(new c.Text(this.game,a,b,d,e))},button:function(a,b,d,e,f,g,h,i,j,k){return void 0===k&&(k=this.world),k.add(new c.Button(this.game,a,b,d,e,f,g,h,i,j))},graphics:function(a,b,d){return void 0===d&&(d=this.world),d.add(new c.Graphics(this.game,a,b))},emitter:function(a,b,d){return this.game.particles.add(new c.Particles.Arcade.Emitter(this.game,a,b,d))},retroFont:function(a,b,d,e,f,g,h,i,j){return new c.RetroFont(this.game,a,b,d,e,f,g,h,i,j)},bitmapText:function(a,b,d,e,f,g){return void 0===g&&(g=this.world),g.add(new c.BitmapText(this.game,a,b,d,e,f))},tilemap:function(a,b,d,e,f){return new c.Tilemap(this.game,a,b,d,e,f)},renderTexture:function(a,b,d,e){(void 0===d||""===d)&&(d=this.game.rnd.uuid()),void 0===e&&(e=!1);var f=new c.RenderTexture(this.game,a,b,d);return e&&this.game.cache.addRenderTexture(d,f),f},video:function(a,b){return new c.Video(this.game,a,b)},bitmapData:function(a,b,d,e){void 0===e&&(e=!1),(void 0===d||""===d)&&(d=this.game.rnd.uuid());var f=new c.BitmapData(this.game,d,a,b);return e&&this.game.cache.addBitmapData(d,f),f},filter:function(a){var b=Array.prototype.slice.call(arguments,1),a=new c.Filter[a](this.game);return a.init.apply(a,b),a},plugin:function(a){return this.game.plugins.add(a)}},c.GameObjectFactory.prototype.constructor=c.GameObjectFactory,c.GameObjectCreator=function(a){this.game=a,this.world=this.game.world},c.GameObjectCreator.prototype={image:function(a,b,d,e){return new c.Image(this.game,a,b,d,e)},sprite:function(a,b,d,e){return new c.Sprite(this.game,a,b,d,e)},tween:function(a){return new c.Tween(a,this.game,this.game.tweens)},group:function(a,b,d,e,f){return new c.Group(this.game,a,b,d,e,f)},spriteBatch:function(a,b,d){return void 0===b&&(b="group"),void 0===d&&(d=!1),new c.SpriteBatch(this.game,a,b,d)},audio:function(a,b,c,d){return this.game.sound.add(a,b,c,d)},audioSprite:function(a){return this.game.sound.addSprite(a)},sound:function(a,b,c,d){return this.game.sound.add(a,b,c,d)},tileSprite:function(a,b,d,e,f,g){return new c.TileSprite(this.game,a,b,d,e,f,g)},rope:function(a,b,d,e,f){return new c.Rope(this.game,a,b,d,e,f)},text:function(a,b,d,e){return new c.Text(this.game,a,b,d,e)},button:function(a,b,d,e,f,g,h,i,j){return new c.Button(this.game,a,b,d,e,f,g,h,i,j)},graphics:function(a,b){return new c.Graphics(this.game,a,b)},emitter:function(a,b,d){return new c.Particles.Arcade.Emitter(this.game,a,b,d)},retroFont:function(a,b,d,e,f,g,h,i,j){return new c.RetroFont(this.game,a,b,d,e,f,g,h,i,j)},bitmapText:function(a,b,d,e,f,g){return new c.BitmapText(this.game,a,b,d,e,f,g)},tilemap:function(a,b,d,e,f){return new c.Tilemap(this.game,a,b,d,e,f)},renderTexture:function(a,b,d,e){(void 0===d||""===d)&&(d=this.game.rnd.uuid()),void 0===e&&(e=!1);var f=new c.RenderTexture(this.game,a,b,d);return e&&this.game.cache.addRenderTexture(d,f),f},bitmapData:function(a,b,d,e){void 0===e&&(e=!1),(void 0===d||""===d)&&(d=this.game.rnd.uuid());var f=new c.BitmapData(this.game,d,a,b);return e&&this.game.cache.addBitmapData(d,f),f},filter:function(a){var b=Array.prototype.slice.call(arguments,1),a=new c.Filter[a](this.game);return a.init.apply(a,b),a}},c.GameObjectCreator.prototype.constructor=c.GameObjectCreator,c.Sprite=function(a,b,d,e,f){b=b||0,d=d||0,e=e||null,f=f||null,this.type=c.SPRITE,this.physicsType=c.SPRITE,PIXI.Sprite.call(this,PIXI.TextureCache.__default),c.Component.Core.init.call(this,a,b,d,e,f)},c.Sprite.prototype=Object.create(PIXI.Sprite.prototype),c.Sprite.prototype.constructor=c.Sprite,c.Component.Core.install.call(c.Sprite.prototype,["Angle","Animation","AutoCull","Bounds","BringToTop","Crop","Delta","Destroy","FixedToCamera","Health","InCamera","InputEnabled","InWorld","LifeSpan","LoadTexture","Overlap","PhysicsBody","Reset","ScaleMinMax","Smoothed"]),c.Sprite.prototype.preUpdatePhysics=c.Component.PhysicsBody.preUpdate,c.Sprite.prototype.preUpdateLifeSpan=c.Component.LifeSpan.preUpdate,c.Sprite.prototype.preUpdateInWorld=c.Component.InWorld.preUpdate,c.Sprite.prototype.preUpdateCore=c.Component.Core.preUpdate,c.Sprite.prototype.preUpdate=function(){return this.preUpdatePhysics()&&this.preUpdateLifeSpan()&&this.preUpdateInWorld()?this.preUpdateCore():!1},c.Image=function(a,b,d,e,f){b=b||0,d=d||0,e=e||null,f=f||null,this.type=c.IMAGE,PIXI.Sprite.call(this,PIXI.TextureCache.__default),c.Component.Core.init.call(this,a,b,d,e,f)},c.Image.prototype=Object.create(PIXI.Sprite.prototype),c.Image.prototype.constructor=c.Image,c.Component.Core.install.call(c.Image.prototype,["Angle","Animation","AutoCull","Bounds","BringToTop","Crop","Destroy","FixedToCamera","InputEnabled","LifeSpan","LoadTexture","Overlap","Reset","Smoothed"]),c.Image.prototype.preUpdateInWorld=c.Component.InWorld.preUpdate,c.Image.prototype.preUpdateCore=c.Component.Core.preUpdate,c.Image.prototype.preUpdate=function(){return this.preUpdateInWorld()?this.preUpdateCore():!1},c.Button=function(a,b,d,e,f,g,h,i,j,k){b=b||0,d=d||0,e=e||null,f=f||null,g=g||this,c.Image.call(this,a,b,d,e,i),this.type=c.BUTTON,this.physicsType=c.SPRITE,this._onOverFrame=null,this._onOutFrame=null,this._onDownFrame=null,this._onUpFrame=null,this.onOverSound=null,this.onOutSound=null,this.onDownSound=null,this.onUpSound=null,this.onOverSoundMarker="",this.onOutSoundMarker="",this.onDownSoundMarker="",this.onUpSoundMarker="",this.onInputOver=new c.Signal,this.onInputOut=new c.Signal,this.onInputDown=new c.Signal,this.onInputUp=new c.Signal,this.onOverMouseOnly=!0,this.justReleasedPreventsOver=c.PointerMode.TOUCH,this.freezeFrames=!1,this.forceOut=!1,this.inputEnabled=!0,this.input.start(0,!0),this.input.useHandCursor=!0,this.setFrames(h,i,j,k),null!==f&&this.onInputUp.add(f,g),this.events.onInputOver.add(this.onInputOverHandler,this),this.events.onInputOut.add(this.onInputOutHandler,this),this.events.onInputDown.add(this.onInputDownHandler,this),this.events.onInputUp.add(this.onInputUpHandler,this),this.events.onRemovedFromWorld.add(this.removedFromWorld,this)},c.Button.prototype=Object.create(c.Image.prototype),c.Button.prototype.constructor=c.Button;var g="Over",h="Out",i="Down",j="Up";c.Button.prototype.clearFrames=function(){this.setFrames(null,null,null,null)},c.Button.prototype.removedFromWorld=function(){this.inputEnabled=!1},c.Button.prototype.setStateFrame=function(a,b,c){var d="_on"+a+"Frame";null!==b?(this[d]=b,c&&this.changeStateFrame(a)):this[d]=null},c.Button.prototype.changeStateFrame=function(a){if(this.freezeFrames)return!1;var b="_on"+a+"Frame",c=this[b];return"string"==typeof c?(this.frameName=c,!0):"number"==typeof c?(this.frame=c,!0):!1},c.Button.prototype.setFrames=function(a,b,c,d){this.setStateFrame(g,a,this.input.pointerOver()),this.setStateFrame(h,b,!this.input.pointerOver()),this.setStateFrame(i,c,this.input.pointerDown()),this.setStateFrame(j,d,this.input.pointerUp())},c.Button.prototype.setStateSound=function(a,b,d){var e="on"+a+"Sound",f="on"+a+"SoundMarker";b instanceof c.Sound||b instanceof c.AudioSprite?(this[e]=b,this[f]="string"==typeof d?d:""):(this[e]=null,this[f]="")},c.Button.prototype.playStateSound=function(a){var b="on"+a+"Sound",c=this[b];if(c){var d="on"+a+"SoundMarker",e=this[d];return c.play(e),!0}return!1},c.Button.prototype.setSounds=function(a,b,c,d,e,f,k,l){this.setStateSound(g,a,b),this.setStateSound(h,e,f),this.setStateSound(i,c,d),this.setStateSound(j,k,l)},c.Button.prototype.setOverSound=function(a,b){this.setStateSound(g,a,b)},c.Button.prototype.setOutSound=function(a,b){this.setStateSound(h,a,b)},c.Button.prototype.setDownSound=function(a,b){this.setStateSound(i,a,b)},c.Button.prototype.setUpSound=function(a,b){this.setStateSound(j,a,b)},c.Button.prototype.onInputOverHandler=function(a,b){b.justReleased()&&(this.justReleasedPreventsOver&b.pointerMode)===b.pointerMode||(this.changeStateFrame(g),(!this.onOverMouseOnly||b.isMouse)&&(this.playStateSound(g),this.onInputOver&&this.onInputOver.dispatch(this,b)))},c.Button.prototype.onInputOutHandler=function(a,b){this.changeStateFrame(h),this.playStateSound(h),this.onInputOut&&this.onInputOut.dispatch(this,b)},c.Button.prototype.onInputDownHandler=function(a,b){this.changeStateFrame(i),this.playStateSound(i),this.onInputDown&&this.onInputDown.dispatch(this,b)},c.Button.prototype.onInputUpHandler=function(a,b,c){if(this.playStateSound(j),this.onInputUp&&this.onInputUp.dispatch(this,b,c),!this.freezeFrames)if(this.forceOut===!0||(this.forceOut&b.pointerMode)===b.pointerMode)this.changeStateFrame(h);else{var d=this.changeStateFrame(j);d||(c?this.changeStateFrame(g):this.changeStateFrame(h))}},c.SpriteBatch=function(a,b,d,e){(void 0===b||null===b)&&(b=a.world),PIXI.SpriteBatch.call(this),c.Group.call(this,a,b,d,e),this.type=c.SPRITEBATCH},c.SpriteBatch.prototype=c.Utils.extend(!0,c.SpriteBatch.prototype,PIXI.SpriteBatch.prototype,c.Group.prototype),c.SpriteBatch.prototype.constructor=c.SpriteBatch,c.BitmapData=function(a,b,d,e){(void 0===d||0===d)&&(d=256),(void 0===e||0===e)&&(e=256),this.game=a,this.key=b,this.width=d,this.height=e,this.canvas=PIXI.CanvasPool.create(this,d,e),this.context=this.canvas.getContext("2d",{alpha:!0}),this.ctx=this.context,this.smoothProperty=a.renderType===c.CANVAS?a.renderer.renderSession.smoothProperty:c.Canvas.getSmoothingPrefix(this.context),this.imageData=this.context.getImageData(0,0,d,e),this.data=null,this.imageData&&(this.data=this.imageData.data),this.pixels=null,this.data&&(this.imageData.data.buffer?(this.buffer=this.imageData.data.buffer,this.pixels=new Uint32Array(this.buffer)):window.ArrayBuffer?(this.buffer=new ArrayBuffer(this.imageData.data.length),this.pixels=new Uint32Array(this.buffer)):this.pixels=this.imageData.data),this.baseTexture=new PIXI.BaseTexture(this.canvas),this.texture=new PIXI.Texture(this.baseTexture),this.frameData=new c.FrameData,this.textureFrame=this.frameData.addFrame(new c.Frame(0,0,0,d,e,"bitmapData")),this.texture.frame=this.textureFrame,this.type=c.BITMAPDATA,this.disableTextureUpload=!1,this.dirty=!1,this.cls=this.clear,this._image=null,this._pos=new c.Point,this._size=new c.Point,this._scale=new c.Point,this._rotate=0,this._alpha={prev:1,current:1},this._anchor=new c.Point,this._tempR=0,this._tempG=0,this._tempB=0,this._circle=new c.Circle,this._swapCanvas=void 0},c.BitmapData.prototype={move:function(a,b,c){return 0!==a&&this.moveH(a,c),0!==b&&this.moveV(b,c),this},moveH:function(a,b){void 0===b&&(b=!0),void 0===this._swapCanvas&&(this._swapCanvas=PIXI.CanvasPool.create(this,this.width,this.height));var c=this._swapCanvas,d=c.getContext("2d"),e=this.height,f=this.canvas;if(d.clearRect(0,0,this.width,this.height),0>a){a=Math.abs(a);var g=this.width-a;b&&d.drawImage(f,0,0,a,e,g,0,a,e),d.drawImage(f,a,0,g,e,0,0,g,e)}else{var g=this.width-a;b&&d.drawImage(f,g,0,a,e,0,0,a,e),d.drawImage(f,0,0,g,e,a,0,g,e)}return this.clear(),this.copy(this._swapCanvas)},moveV:function(a,b){void 0===b&&(b=!0),void 0===this._swapCanvas&&(this._swapCanvas=PIXI.CanvasPool.create(this,this.width,this.height));var c=this._swapCanvas,d=c.getContext("2d"),e=this.width,f=this.canvas;if(d.clearRect(0,0,this.width,this.height),0>a){a=Math.abs(a);var g=this.height-a;b&&d.drawImage(f,0,0,e,a,0,g,e,a),d.drawImage(f,0,a,e,g,0,0,e,g)}else{var g=this.height-a;b&&d.drawImage(f,0,g,e,a,0,0,e,a),d.drawImage(f,0,0,e,g,0,a,e,g)}return this.clear(),this.copy(this._swapCanvas)},add:function(a){if(Array.isArray(a))for(var b=0;bm;m++)for(var n=d;h>n;n++)c.Color.unpackPixel(this.getPixel32(n,m),j),k=a.call(b,j,n,m),k!==!1&&null!==k&&void 0!==k&&(this.setPixel32(n,m,k.r,k.g,k.b,k.a,!1),l=!0);return l&&(this.context.putImageData(this.imageData,0,0),this.dirty=!0),this},processPixel:function(a,b,c,d,e,f){void 0===c&&(c=0),void 0===d&&(d=0),void 0===e&&(e=this.width),void 0===f&&(f=this.height);for(var g=c+e,h=d+f,i=0,j=0,k=!1,l=d;h>l;l++)for(var m=c;g>m;m++)i=this.getPixel32(m,l),j=a.call(b,i,m,l),j!==i&&(this.pixels[l*this.width+m]=j,k=!0);return k&&(this.context.putImageData(this.imageData,0,0),this.dirty=!0),this},replaceRGB:function(a,b,d,e,f,g,h,i,j){var k=0,l=0,m=this.width,n=this.height,o=c.Color.packPixel(a,b,d,e);void 0!==j&&j instanceof c.Rectangle&&(k=j.x,l=j.y,m=j.width,n=j.height);for(var p=0;n>p;p++)for(var q=0;m>q;q++)this.getPixel32(k+q,l+p)===o&&this.setPixel32(k+q,l+p,f,g,h,i,!1);return this.context.putImageData(this.imageData,0,0),this.dirty=!0,this},setHSL:function(a,b,d,e){var f=a||0===a,g=b||0===b,h=d||0===d;if(f||g||h){void 0===e&&(e=new c.Rectangle(0,0,this.width,this.height));for(var i=c.Color.createColor(),j=e.y;j=0&&a<=this.width&&b>=0&&b<=this.height&&(c.Device.LITTLE_ENDIAN?this.pixels[b*this.width+a]=g<<24|f<<16|e<<8|d:this.pixels[b*this.width+a]=d<<24|e<<16|f<<8|g,h&&(this.context.putImageData(this.imageData,0,0),this.dirty=!0)),this},setPixel:function(a,b,c,d,e,f){return this.setPixel32(a,b,c,d,e,255,f)},getPixel:function(a,b,d){d||(d=c.Color.createColor());var e=~~(a+b*this.width);return e*=4,d.r=this.data[e],d.g=this.data[++e],d.b=this.data[++e],d.a=this.data[++e],d},getPixel32:function(a,b){return a>=0&&a<=this.width&&b>=0&&b<=this.height?this.pixels[b*this.width+a]:void 0},getPixelRGB:function(a,b,d,e,f){return c.Color.unpackPixel(this.getPixel32(a,b),d,e,f)},getPixels:function(a){return this.context.getImageData(a.x,a.y,a.width,a.height)},getFirstPixel:function(a){void 0===a&&(a=0);var b=c.Color.createColor(),d=0,e=0,f=1,g=!1;1===a?(f=-1,e=this.height):3===a&&(f=-1,d=this.width);do c.Color.unpackPixel(this.getPixel32(d,e),b),0===a||1===a?(d++,d===this.width&&(d=0,e+=f,(e>=this.height||0>=e)&&(g=!0))):(2===a||3===a)&&(e++,e===this.height&&(e=0,d+=f,(d>=this.width||0>=d)&&(g=!0)));while(0===b.a&&!g);return b.x=d,b.y=e,b},getBounds:function(a){return void 0===a&&(a=new c.Rectangle),a.x=this.getFirstPixel(2).x,a.x===this.width?a.setTo(0,0,0,0):(a.y=this.getFirstPixel(0).y,a.width=this.getFirstPixel(3).x-a.x+1,a.height=this.getFirstPixel(1).y-a.y+1,a)},addToWorld:function(a,b,c,d,e,f){e=e||1,f=f||1;var g=this.game.add.image(a,b,this);return g.anchor.set(c,d),g.scale.set(e,f),g},copy:function(a,b,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r){if((void 0===a||null===a)&&(a=this),(a instanceof c.RenderTexture||a instanceof PIXI.RenderTexture)&&(a=a.getCanvas()),this._image=a,a instanceof c.Sprite||a instanceof c.Image||a instanceof c.Text||a instanceof PIXI.Sprite)this._pos.set(a.texture.crop.x,a.texture.crop.y),this._size.set(a.texture.crop.width,a.texture.crop.height),this._scale.set(a.scale.x,a.scale.y),this._anchor.set(a.anchor.x,a.anchor.y),this._rotate=a.rotation,this._alpha.current=a.alpha,a.texture instanceof c.RenderTexture||a.texture instanceof PIXI.RenderTexture?this._image=a.texture.getCanvas():this._image=a.texture.baseTexture.source,(void 0===g||null===g)&&(g=a.x),(void 0===h||null===h)&&(h=a.y),a.texture.trim&&(g+=a.texture.trim.x-a.anchor.x*a.texture.trim.width,h+=a.texture.trim.y-a.anchor.y*a.texture.trim.height), -16777215!==a.tint&&(a.cachedTint!==a.tint&&(a.cachedTint=a.tint,a.tintedTexture=PIXI.CanvasTinter.getTintedTexture(a,a.tint)),this._image=a.tintedTexture,this._pos.set(0));else{if(this._pos.set(0),this._scale.set(1),this._anchor.set(0),this._rotate=0,this._alpha.current=1,a instanceof c.BitmapData)this._image=a.canvas;else if("string"==typeof a){if(a=this.game.cache.getImage(a),null===a)return;this._image=a}this._size.set(this._image.width,this._image.height)}if((void 0===b||null===b)&&(b=0),(void 0===d||null===d)&&(d=0),e&&(this._size.x=e),f&&(this._size.y=f),(void 0===g||null===g)&&(g=b),(void 0===h||null===h)&&(h=d),(void 0===i||null===i)&&(i=this._size.x),(void 0===j||null===j)&&(j=this._size.y),"number"==typeof k&&(this._rotate=k),"number"==typeof l&&(this._anchor.x=l),"number"==typeof m&&(this._anchor.y=m),"number"==typeof n&&(this._scale.x=n),"number"==typeof o&&(this._scale.y=o),"number"==typeof p&&(this._alpha.current=p),void 0===q&&(q=null),void 0===r&&(r=!1),!(this._alpha.current<=0||0===this._scale.x||0===this._scale.y||0===this._size.x||0===this._size.y)){var s=this.context;return this._alpha.prev=s.globalAlpha,s.save(),s.globalAlpha=this._alpha.current,q&&(this.op=q),r&&(g|=0,h|=0),s.translate(g,h),s.scale(this._scale.x,this._scale.y),s.rotate(this._rotate),s.drawImage(this._image,this._pos.x+b,this._pos.y+d,this._size.x,this._size.y,-i*this._anchor.x,-j*this._anchor.y,i,j),s.restore(),s.globalAlpha=this._alpha.prev,this.dirty=!0,this}},copyTransform:function(a,b,d){if(void 0===b&&(b=null),void 0===d&&(d=!1),!a.hasOwnProperty("worldTransform")||!a.worldVisible||0===a.worldAlpha)return this;var e=a.worldTransform;if(this._pos.set(a.texture.crop.x,a.texture.crop.y),this._size.set(a.texture.crop.width,a.texture.crop.height),0===e.a||0===e.d||0===this._size.x||0===this._size.y)return this;a.texture instanceof c.RenderTexture||a.texture instanceof PIXI.RenderTexture?this._image=a.texture.getCanvas():this._image=a.texture.baseTexture.source;var f=e.tx,g=e.ty;a.texture.trim&&(f+=a.texture.trim.x-a.anchor.x*a.texture.trim.width,g+=a.texture.trim.y-a.anchor.y*a.texture.trim.height),16777215!==a.tint&&(a.cachedTint!==a.tint&&(a.cachedTint=a.tint,a.tintedTexture=PIXI.CanvasTinter.getTintedTexture(a,a.tint)),this._image=a.tintedTexture,this._pos.set(0)),d&&(f|=0,g|=0);var h=this.context;return this._alpha.prev=h.globalAlpha,h.save(),h.globalAlpha=this._alpha.current,b&&(this.op=b),h[this.smoothProperty]=a.texture.baseTexture.scaleMode===PIXI.scaleModes.LINEAR,h.setTransform(e.a,e.b,e.c,e.d,f,g),h.drawImage(this._image,this._pos.x,this._pos.y,this._size.x,this._size.y,-this._size.x*a.anchor.x,-this._size.y*a.anchor.y,this._size.x,this._size.y),h.restore(),h.globalAlpha=this._alpha.prev,this.dirty=!0,this},copyRect:function(a,b,c,d,e,f,g){return this.copy(a,b.x,b.y,b.width,b.height,c,d,b.width,b.height,0,0,0,1,1,e,f,g)},draw:function(a,b,c,d,e,f,g){return this.copy(a,null,null,null,null,b,c,d,e,null,null,null,null,null,null,f,g)},drawGroup:function(a,b,c){return a.total>0&&a.forEachExists(this.drawGroupProxy,this,b,c),this},drawGroupProxy:function(a,b,d){if(a.hasOwnProperty("texture")&&this.copyTransform(a,b,d),a.type===c.GROUP&&a.exists)this.drawGroup(a,b,d);else if(a.hasOwnProperty("children")&&a.children.length>0)for(var e=0;eb.width&&(e=b.width);var f=this.context;return f.fillStyle=f.createPattern(b,d),this._circle=new c.Circle(a.start.x,a.start.y,b.height),this._circle.circumferencePoint(a.angle-1.5707963267948966,!1,this._pos),f.save(),f.translate(this._pos.x,this._pos.y),f.rotate(a.angle),f.fillRect(0,0,e,b.height),f.restore(),this.dirty=!0,this}},render:function(){return!this.disableTextureUpload&&this.dirty&&(this.baseTexture.dirty(),this.dirty=!1),this},destroy:function(){this.frameData.destroy(),this.texture.destroy(!0),PIXI.CanvasPool.remove(this)},blendReset:function(){return this.op="source-over",this},blendSourceOver:function(){return this.op="source-over",this},blendSourceIn:function(){return this.op="source-in",this},blendSourceOut:function(){return this.op="source-out",this},blendSourceAtop:function(){return this.op="source-atop",this},blendDestinationOver:function(){return this.op="destination-over",this},blendDestinationIn:function(){return this.op="destination-in",this},blendDestinationOut:function(){return this.op="destination-out",this},blendDestinationAtop:function(){return this.op="destination-atop",this},blendXor:function(){return this.op="xor",this},blendAdd:function(){return this.op="lighter",this},blendMultiply:function(){return this.op="multiply",this},blendScreen:function(){return this.op="screen",this},blendOverlay:function(){return this.op="overlay",this},blendDarken:function(){return this.op="darken",this},blendLighten:function(){return this.op="lighten",this},blendColorDodge:function(){return this.op="color-dodge",this},blendColorBurn:function(){return this.op="color-burn",this},blendHardLight:function(){return this.op="hard-light",this},blendSoftLight:function(){return this.op="soft-light",this},blendDifference:function(){return this.op="difference",this},blendExclusion:function(){return this.op="exclusion",this},blendHue:function(){return this.op="hue",this},blendSaturation:function(){return this.op="saturation",this},blendColor:function(){return this.op="color",this},blendLuminosity:function(){return this.op="luminosity",this}},Object.defineProperty(c.BitmapData.prototype,"smoothed",{get:function(){c.Canvas.getSmoothingEnabled(this.context)},set:function(a){c.Canvas.setSmoothingEnabled(this.context,a)}}),Object.defineProperty(c.BitmapData.prototype,"op",{get:function(){return this.context.globalCompositeOperation},set:function(a){this.context.globalCompositeOperation=a}}),c.BitmapData.getTransform=function(a,b,c,d,e,f){return"number"!=typeof a&&(a=0),"number"!=typeof b&&(b=0),"number"!=typeof c&&(c=1),"number"!=typeof d&&(d=1),"number"!=typeof e&&(e=0),"number"!=typeof f&&(f=0),{sx:c,sy:d,scaleX:c,scaleY:d,skewX:e,skewY:f,translateX:a,translateY:b,tx:a,ty:b}},c.BitmapData.prototype.constructor=c.BitmapData,PIXI.Graphics=function(){PIXI.DisplayObjectContainer.call(this),this.renderable=!0,this.fillAlpha=1,this.lineWidth=0,this.lineColor=0,this.graphicsData=[],this.tint=16777215,this.blendMode=PIXI.blendModes.NORMAL,this.currentPath=null,this._webGL=[],this.isMask=!1,this.boundsPadding=0,this._localBounds=new PIXI.Rectangle(0,0,1,1),this.dirty=!0,this.webGLDirty=!1,this.cachedSpriteDirty=!1},PIXI.Graphics.prototype=Object.create(PIXI.DisplayObjectContainer.prototype),PIXI.Graphics.prototype.constructor=PIXI.Graphics,PIXI.Graphics.prototype.lineStyle=function(a,b,c){return this.lineWidth=a||0,this.lineColor=b||0,this.lineAlpha=void 0===c?1:c,this.currentPath&&(this.currentPath.shape.points.length?this.drawShape(new PIXI.Polygon(this.currentPath.shape.points.slice(-2))):(this.currentPath.lineWidth=this.lineWidth,this.currentPath.lineColor=this.lineColor,this.currentPath.lineAlpha=this.lineAlpha)),this},PIXI.Graphics.prototype.moveTo=function(a,b){return this.drawShape(new PIXI.Polygon([a,b])),this},PIXI.Graphics.prototype.lineTo=function(a,b){return this.currentPath||this.moveTo(0,0),this.currentPath.shape.points.push(a,b),this.dirty=!0,this},PIXI.Graphics.prototype.quadraticCurveTo=function(a,b,c,d){this.currentPath?0===this.currentPath.shape.points.length&&(this.currentPath.shape.points=[0,0]):this.moveTo(0,0);var e,f,g=20,h=this.currentPath.shape.points;0===h.length&&this.moveTo(0,0);for(var i=h[h.length-2],j=h[h.length-1],k=0,l=1;g>=l;++l)k=l/g,e=i+(a-i)*k,f=j+(b-j)*k,h.push(e+(a+(c-a)*k-e)*k,f+(b+(d-b)*k-f)*k);return this.dirty=!0,this},PIXI.Graphics.prototype.bezierCurveTo=function(a,b,c,d,e,f){this.currentPath?0===this.currentPath.shape.points.length&&(this.currentPath.shape.points=[0,0]):this.moveTo(0,0);for(var g,h,i,j,k,l=20,m=this.currentPath.shape.points,n=m[m.length-2],o=m[m.length-1],p=0,q=1;l>=q;++q)p=q/l,g=1-p,h=g*g,i=h*g,j=p*p,k=j*p,m.push(i*n+3*h*p*a+3*g*j*c+k*e,i*o+3*h*p*b+3*g*j*d+k*f);return this.dirty=!0,this},PIXI.Graphics.prototype.arcTo=function(a,b,c,d,e){this.currentPath?0===this.currentPath.shape.points.length&&this.currentPath.shape.points.push(a,b):this.moveTo(a,b);var f=this.currentPath.shape.points,g=f[f.length-2],h=f[f.length-1],i=h-b,j=g-a,k=d-b,l=c-a,m=Math.abs(i*l-j*k);if(1e-8>m||0===e)(f[f.length-2]!==a||f[f.length-1]!==b)&&f.push(a,b);else{var n=i*i+j*j,o=k*k+l*l,p=i*k+j*l,q=e*Math.sqrt(n)/m,r=e*Math.sqrt(o)/m,s=q*p/n,t=r*p/o,u=q*l+r*j,v=q*k+r*i,w=j*(r+s),x=i*(r+s),y=l*(q+t),z=k*(q+t),A=Math.atan2(x-v,w-u),B=Math.atan2(z-v,y-u);this.arc(u+a,v+b,e,A,B,j*k>l*i)}return this.dirty=!0,this},PIXI.Graphics.prototype.arc=function(a,b,c,d,e,f,g){if(d===e)return this;void 0===f&&(f=!1),void 0===g&&(g=40),!f&&d>=e?e+=2*Math.PI:f&&e>=d&&(d+=2*Math.PI);var h=f?-1*(d-e):e-d,i=Math.ceil(Math.abs(h)/(2*Math.PI))*g;if(0===h)return this;var j=a+Math.cos(d)*c,k=b+Math.sin(d)*c;f&&this.filling?this.moveTo(a,b):this.moveTo(j,k);for(var l=this.currentPath.shape.points,m=h/(2*i),n=2*m,o=Math.cos(m),p=Math.sin(m),q=i-1,r=q%1/q,s=0;q>=s;s++){var t=s+r*s,u=m+d+n*t,v=Math.cos(u),w=-Math.sin(u);l.push((o*v+p*w)*c+a,(o*-w+p*v)*c+b)}return this.dirty=!0,this},PIXI.Graphics.prototype.beginFill=function(a,b){return this.filling=!0,this.fillColor=a||0,this.fillAlpha=void 0===b?1:b,this.currentPath&&this.currentPath.shape.points.length<=2&&(this.currentPath.fill=this.filling,this.currentPath.fillColor=this.fillColor,this.currentPath.fillAlpha=this.fillAlpha),this},PIXI.Graphics.prototype.endFill=function(){return this.filling=!1,this.fillColor=null,this.fillAlpha=1,this},PIXI.Graphics.prototype.drawRect=function(a,b,c,d){return this.drawShape(new PIXI.Rectangle(a,b,c,d)),this},PIXI.Graphics.prototype.drawRoundedRect=function(a,b,c,d,e){return this.drawShape(new PIXI.RoundedRectangle(a,b,c,d,e)),this},PIXI.Graphics.prototype.drawCircle=function(a,b,c){return this.drawShape(new PIXI.Circle(a,b,c)),this},PIXI.Graphics.prototype.drawEllipse=function(a,b,c,d){return this.drawShape(new PIXI.Ellipse(a,b,c,d)),this},PIXI.Graphics.prototype.drawPolygon=function(a){(a instanceof c.Polygon||a instanceof PIXI.Polygon)&&(a=a.points);var b=a;if(!Array.isArray(b)){b=new Array(arguments.length);for(var d=0;dp?p:x,x=x>r?r:x,x=x>t?t:x,y=y>q?q:y,y=y>s?s:y,y=y>u?u:y,v=p>v?p:v,v=r>v?r:v,v=t>v?t:v,w=q>w?q:w,w=s>w?s:w,w=u>w?u:w,this._bounds.x=x,this._bounds.width=v-x,this._bounds.y=y,this._bounds.height=w-y,this._currentBounds=this._bounds}return this._currentBounds},PIXI.Graphics.prototype.containsPoint=function(a){this.worldTransform.applyInverse(a,tempPoint);for(var b=this.graphicsData,c=0;ch?h:a,b=h+j>b?h+j:b,d=d>i?i:d,e=i+k>e?i+k:e;else if(n===PIXI.Graphics.CIRC)h=f.x,i=f.y,j=f.radius+o/2,k=f.radius+o/2,a=a>h-j?h-j:a,b=h+j>b?h+j:b,d=d>i-k?i-k:d,e=i+k>e?i+k:e;else if(n===PIXI.Graphics.ELIP)h=f.x,i=f.y,j=f.width+o/2,k=f.height+o/2,a=a>h-j?h-j:a,b=h+j>b?h+j:b,d=d>i-k?i-k:d,e=i+k>e?i+k:e;else{g=f.points;for(var p=0;ph-o?h-o:a,b=h+o>b?h+o:b,d=d>i-o?i-o:d,e=i+o>e?i+o:e}}else a=0,b=0,d=0,e=0;var q=this.boundsPadding;this._localBounds.x=a-q,this._localBounds.width=b-a+2*q,this._localBounds.y=d-q,this._localBounds.height=e-d+2*q},PIXI.Graphics.prototype._generateCachedSprite=function(){var a=this.getLocalBounds();if(this._cachedSprite)this._cachedSprite.buffer.resize(a.width,a.height);else{var b=new PIXI.CanvasBuffer(a.width,a.height),c=PIXI.Texture.fromCanvas(b.canvas);this._cachedSprite=new PIXI.Sprite(c),this._cachedSprite.buffer=b,this._cachedSprite.worldTransform=this.worldTransform}this._cachedSprite.anchor.x=-(a.x/a.width),this._cachedSprite.anchor.y=-(a.y/a.height),this._cachedSprite.buffer.context.translate(-a.x,-a.y),this.worldAlpha=1,PIXI.CanvasGraphics.renderGraphics(this,this._cachedSprite.buffer.context),this._cachedSprite.alpha=this.alpha},PIXI.Graphics.prototype.updateCachedSpriteTexture=function(){var a=this._cachedSprite,b=a.texture,c=a.buffer.canvas;b.baseTexture.width=c.width,b.baseTexture.height=c.height,b.crop.width=b.frame.width=c.width,b.crop.height=b.frame.height=c.height,a._width=c.width,a._height=c.height,b.baseTexture.dirty()},PIXI.Graphics.prototype.destroyCachedSprite=function(){this._cachedSprite.texture.destroy(!0),this._cachedSprite=null},PIXI.Graphics.prototype.drawShape=function(a){this.currentPath&&this.currentPath.shape.points.length<=2&&this.graphicsData.pop(),this.currentPath=null,a instanceof c.Polygon&&(a=a.clone(),a.flatten());var b=new PIXI.GraphicsData(this.lineWidth,this.lineColor,this.lineAlpha,this.fillColor,this.fillAlpha,this.filling,a);return this.graphicsData.push(b),b.type===PIXI.Graphics.POLY&&(b.shape.closed=this.filling,this.currentPath=b),this.dirty=!0,b},Object.defineProperty(PIXI.Graphics.prototype,"cacheAsBitmap",{get:function(){return this._cacheAsBitmap},set:function(a){this._cacheAsBitmap=a,this._cacheAsBitmap?this._generateCachedSprite():this.destroyCachedSprite(),this.dirty=!0,this.webGLDirty=!0}}),PIXI.GraphicsData=function(a,b,c,d,e,f,g){this.lineWidth=a,this.lineColor=b,this.lineAlpha=c,this._lineTint=b,this.fillColor=d,this.fillAlpha=e,this._fillTint=d,this.fill=f,this.shape=g,this.type=g.type},PIXI.GraphicsData.prototype.constructor=PIXI.GraphicsData,PIXI.GraphicsData.prototype.clone=function(){return new GraphicsData(this.lineWidth,this.lineColor,this.lineAlpha,this.fillColor,this.fillAlpha,this.fill,this.shape)},PIXI.PolyK={},PIXI.PolyK.Triangulate=function(a){var b=!0,c=a.length>>1;if(3>c)return[];for(var d=[],e=[],f=0;c>f;f++)e.push(f);f=0;for(var g=c;g>3;){var h=e[(f+0)%g],i=e[(f+1)%g],j=e[(f+2)%g],k=a[2*h],l=a[2*h+1],m=a[2*i],n=a[2*i+1],o=a[2*j],p=a[2*j+1],q=!1;if(PIXI.PolyK._convex(k,l,m,n,o,p,b)){q=!0;for(var r=0;g>r;r++){var s=e[r];if(s!==h&&s!==i&&s!==j&&PIXI.PolyK._PointInTriangle(a[2*s],a[2*s+1],k,l,m,n,o,p)){q=!1;break}}}if(q)d.push(h,i,j),e.splice((f+1)%g,1),g--,f=0;else if(f++>3*g){if(!b)return null;for(d=[],e=[],f=0;c>f;f++)e.push(f);f=0,g=c,b=!1}}return d.push(e[0],e[1],e[2]),d},PIXI.PolyK._PointInTriangle=function(a,b,c,d,e,f,g,h){var i=g-c,j=h-d,k=e-c,l=f-d,m=a-c,n=b-d,o=i*i+j*j,p=i*k+j*l,q=i*m+j*n,r=k*k+l*l,s=k*m+l*n,t=1/(o*r-p*p),u=(r*q-p*s)*t,v=(o*s-p*q)*t;return u>=0&&v>=0&&1>u+v},PIXI.PolyK._convex=function(a,b,c,d,e,f,g){return(b-d)*(e-c)+(c-a)*(f-d)>=0===g},PIXI.EarCut={},PIXI.EarCut.Triangulate=function(a,b,c){c=c||2;var d=b&&b.length,e=d?b[0]*c:a.length,f=PIXI.EarCut.linkedList(a,0,e,c,!0),g=[];if(!f)return g;var h,i,j,k,l,m,n;if(d&&(f=PIXI.EarCut.eliminateHoles(a,b,f,c)),a.length>80*c){h=j=a[0],i=k=a[1];for(var o=c;e>o;o+=c)l=a[o],m=a[o+1],h>l&&(h=l),i>m&&(i=m),l>j&&(j=l),m>k&&(k=m);n=Math.max(j-h,k-i)}return PIXI.EarCut.earcutLinked(f,g,c,h,i,n),g},PIXI.EarCut.linkedList=function(a,b,c,d,e){var f,g,h,i=0;for(f=b,g=c-d;c>f;f+=d)i+=(a[g]-a[f])*(a[f+1]+a[g+1]),g=f;if(e===i>0)for(f=b;c>f;f+=d)h=PIXI.EarCut.insertNode(f,a[f],a[f+1],h);else for(f=c-d;f>=b;f-=d)h=PIXI.EarCut.insertNode(f,a[f],a[f+1],h);return h},PIXI.EarCut.filterPoints=function(a,b){if(!a)return a;b||(b=a);var c,d=a;do if(c=!1,d.steiner||!PIXI.EarCut.equals(d,d.next)&&0!==PIXI.EarCut.area(d.prev,d,d.next))d=d.next;else{if(PIXI.EarCut.removeNode(d),d=b=d.prev,d===d.next)return null;c=!0}while(c||d!==b);return b},PIXI.EarCut.earcutLinked=function(a,b,c,d,e,f,g){if(a){!g&&f&&PIXI.EarCut.indexCurve(a,d,e,f);for(var h,i,j=a;a.prev!==a.next;)if(h=a.prev,i=a.next,f?PIXI.EarCut.isEarHashed(a,d,e,f):PIXI.EarCut.isEar(a))b.push(h.i/c),b.push(a.i/c),b.push(i.i/c),PIXI.EarCut.removeNode(a),a=i.next,j=i.next;else if(a=i,a===j){g?1===g?(a=PIXI.EarCut.cureLocalIntersections(a,b,c),PIXI.EarCut.earcutLinked(a,b,c,d,e,f,2)):2===g&&PIXI.EarCut.splitEarcut(a,b,c,d,e,f):PIXI.EarCut.earcutLinked(PIXI.EarCut.filterPoints(a),b,c,d,e,f,1);break}}},PIXI.EarCut.isEar=function(a){var b=a.prev,c=a,d=a.next;if(PIXI.EarCut.area(b,c,d)>=0)return!1;for(var e=a.next.next;e!==a.prev;){if(PIXI.EarCut.pointInTriangle(b.x,b.y,c.x,c.y,d.x,d.y,e.x,e.y)&&PIXI.EarCut.area(e.prev,e,e.next)>=0)return!1;e=e.next}return!0},PIXI.EarCut.isEarHashed=function(a,b,c,d){var e=a.prev,f=a,g=a.next;if(PIXI.EarCut.area(e,f,g)>=0)return!1;for(var h=e.xf.x?e.x>g.x?e.x:g.x:f.x>g.x?f.x:g.x,k=e.y>f.y?e.y>g.y?e.y:g.y:f.y>g.y?f.y:g.y,l=PIXI.EarCut.zOrder(h,i,b,c,d),m=PIXI.EarCut.zOrder(j,k,b,c,d),n=a.nextZ;n&&n.z<=m;){if(n!==a.prev&&n!==a.next&&PIXI.EarCut.pointInTriangle(e.x,e.y,f.x,f.y,g.x,g.y,n.x,n.y)&&PIXI.EarCut.area(n.prev,n,n.next)>=0)return!1;n=n.nextZ}for(n=a.prevZ;n&&n.z>=l;){if(n!==a.prev&&n!==a.next&&PIXI.EarCut.pointInTriangle(e.x,e.y,f.x,f.y,g.x,g.y,n.x,n.y)&&PIXI.EarCut.area(n.prev,n,n.next)>=0)return!1;n=n.prevZ}return!0},PIXI.EarCut.cureLocalIntersections=function(a,b,c){var d=a;do{var e=d.prev,f=d.next.next;PIXI.EarCut.intersects(e,d,d.next,f)&&PIXI.EarCut.locallyInside(e,f)&&PIXI.EarCut.locallyInside(f,e)&&(b.push(e.i/c),b.push(d.i/c),b.push(f.i/c),PIXI.EarCut.removeNode(d),PIXI.EarCut.removeNode(d.next),d=a=f),d=d.next}while(d!==a);return d},PIXI.EarCut.splitEarcut=function(a,b,c,d,e,f){var g=a;do{for(var h=g.next.next;h!==g.prev;){if(g.i!==h.i&&PIXI.EarCut.isValidDiagonal(g,h)){var i=PIXI.EarCut.splitPolygon(g,h);return g=PIXI.EarCut.filterPoints(g,g.next),i=PIXI.EarCut.filterPoints(i,i.next),PIXI.EarCut.earcutLinked(g,b,c,d,e,f),void PIXI.EarCut.earcutLinked(i,b,c,d,e,f)}h=h.next}g=g.next}while(g!==a)},PIXI.EarCut.eliminateHoles=function(a,b,c,d){var e,f,g,h,i,j=[];for(e=0,f=b.length;f>e;e++)g=b[e]*d,h=f-1>e?b[e+1]*d:a.length,i=PIXI.EarCut.linkedList(a,g,h,d,!1),i===i.next&&(i.steiner=!0),j.push(PIXI.EarCut.getLeftmost(i));for(j.sort(compareX),e=0;e=d.next.y){var h=d.x+(f-d.y)*(d.next.x-d.x)/(d.next.y-d.y);e>=h&&h>g&&(g=h,c=d.x=d.x&&d.x>=c.x&&PIXI.EarCut.pointInTriangle(fi||i===k&&d.x>c.x)&&PIXI.EarCut.locallyInside(d,a)&&(c=d,k=i)),d=d.next;return c},PIXI.EarCut.indexCurve=function(a,b,c,d){var e=a;do null===e.z&&(e.z=PIXI.EarCut.zOrder(e.x,e.y,b,c,d)),e.prevZ=e.prev,e.nextZ=e.next,e=e.next;while(e!==a);e.prevZ.nextZ=null,e.prevZ=null,PIXI.EarCut.sortLinked(e)},PIXI.EarCut.sortLinked=function(a){var b,c,d,e,f,g,h,i,j=1;do{for(c=a,a=null,f=null,g=0;c;){for(g++,d=c,h=0,b=0;j>b&&(h++,d=d.nextZ,d);b++);for(i=j;h>0||i>0&&d;)0===h?(e=d,d=d.nextZ,i--):0!==i&&d?c.z<=d.z?(e=c,c=c.nextZ,h--):(e=d,d=d.nextZ,i--):(e=c,c=c.nextZ,h--),f?f.nextZ=e:a=e,e.prevZ=f,f=e;c=d}f.nextZ=null,j*=2}while(g>1);return a},PIXI.EarCut.zOrder=function(a,b,c,d,e){return a=32767*(a-c)/e,b=32767*(b-d)/e,a=16711935&(a|a<<8),a=252645135&(a|a<<4),a=858993459&(a|a<<2),a=1431655765&(a|a<<1),b=16711935&(b|b<<8),b=252645135&(b|b<<4),b=858993459&(b|b<<2),b=1431655765&(b|b<<1),a|b<<1},PIXI.EarCut.getLeftmost=function(a){var b=a,c=a;do b.x=0&&(a-g)*(d-h)-(c-g)*(b-h)>=0&&(c-g)*(f-h)-(e-g)*(d-h)>=0},PIXI.EarCut.isValidDiagonal=function(a,b){return PIXI.EarCut.equals(a,b)||a.next.i!==b.i&&a.prev.i!==b.i&&!PIXI.EarCut.intersectsPolygon(a,b)&&PIXI.EarCut.locallyInside(a,b)&&PIXI.EarCut.locallyInside(b,a)&&PIXI.EarCut.middleInside(a,b)},PIXI.EarCut.area=function(a,b,c){return(b.y-a.y)*(c.x-b.x)-(b.x-a.x)*(c.y-b.y)},PIXI.EarCut.equals=function(a,b){return a.x===b.x&&a.y===b.y},PIXI.EarCut.intersects=function(a,b,c,d){return PIXI.EarCut.area(a,b,c)>0!=PIXI.EarCut.area(a,b,d)>0&&PIXI.EarCut.area(c,d,a)>0!=PIXI.EarCut.area(c,d,b)>0},PIXI.EarCut.intersectsPolygon=function(a,b){var c=a;do{if(c.i!==a.i&&c.next.i!==a.i&&c.i!==b.i&&c.next.i!==b.i&&PIXI.EarCut.intersects(c,c.next,a,b))return!0;c=c.next}while(c!==a);return!1},PIXI.EarCut.locallyInside=function(a,b){return PIXI.EarCut.area(a.prev,a,a.next)<0?PIXI.EarCut.area(a,b,a.next)>=0&&PIXI.EarCut.area(a,a.prev,b)>=0:PIXI.EarCut.area(a,b,a.prev)<0||PIXI.EarCut.area(a,a.next,b)<0},PIXI.EarCut.middleInside=function(a,b){var c=a,d=!1,e=(a.x+b.x)/2,f=(a.y+b.y)/2;do c.y>f!=c.next.y>f&&e<(c.next.x-c.x)*(f-c.y)/(c.next.y-c.y)+c.x&&(d=!d),c=c.next;while(c!==a);return d},PIXI.EarCut.splitPolygon=function(a,b){var c=new PIXI.EarCut.Node(a.i,a.x,a.y),d=new PIXI.EarCut.Node(b.i,b.x,b.y),e=a.next,f=b.prev;return a.next=b,b.prev=a,c.next=e,e.prev=c,d.next=c,c.prev=d,f.next=d,d.prev=f,d},PIXI.EarCut.insertNode=function(a,b,c,d){var e=new PIXI.EarCut.Node(a,b,c);return d?(e.next=d.next,e.prev=d,d.next.prev=e,d.next=e):(e.prev=e,e.next=e),e},PIXI.EarCut.removeNode=function(a){a.next.prev=a.prev,a.prev.next=a.next,a.prevZ&&(a.prevZ.nextZ=a.nextZ),a.nextZ&&(a.nextZ.prevZ=a.prevZ)},PIXI.EarCut.Node=function(a,b,c){this.i=a,this.x=b,this.y=c,this.prev=null,this.next=null,this.z=null,this.prevZ=null,this.nextZ=null,this.steiner=!1},PIXI.WebGLGraphics=function(){},PIXI.WebGLGraphics.stencilBufferLimit=6,PIXI.WebGLGraphics.renderGraphics=function(a,b){var c,d=b.gl,e=b.projection,f=b.offset,g=b.shaderManager.primitiveShader;a.dirty&&PIXI.WebGLGraphics.updateGraphics(a,d);for(var h=a._webGL[d.id],i=0;i=PIXI.WebGLGraphics.stencilBufferLimit)if(g.points.length<2*PIXI.WebGLGraphics.stencilBufferLimit){f=PIXI.WebGLGraphics.switchMode(c,0);var h=PIXI.WebGLGraphics.buildPoly(g,f);h||(f=PIXI.WebGLGraphics.switchMode(c,1),PIXI.WebGLGraphics.buildComplexPoly(g,f))}else f=PIXI.WebGLGraphics.switchMode(c,1),PIXI.WebGLGraphics.buildComplexPoly(g,f);g.lineWidth>0&&(f=PIXI.WebGLGraphics.switchMode(c,0),PIXI.WebGLGraphics.buildLine(g,f))}else f=PIXI.WebGLGraphics.switchMode(c,0),g.type===PIXI.Graphics.RECT?PIXI.WebGLGraphics.buildRectangle(g,f):g.type===PIXI.Graphics.CIRC||g.type===PIXI.Graphics.ELIP?PIXI.WebGLGraphics.buildCircle(g,f):g.type===PIXI.Graphics.RREC&&PIXI.WebGLGraphics.buildRoundedRectangle(g,f);c.lastIndex++}for(d=0;d=q;q++)p=q/n,h=g(a,c,p),i=g(b,d,p),j=g(c,e,p),k=g(d,f,p),l=g(h,j,p),m=g(i,k,p),o.push(l,m);return o},PIXI.WebGLGraphics.buildCircle=function(a,b){var c,d,e=a.shape,f=e.x,g=e.y;a.type===PIXI.Graphics.CIRC?(c=e.radius,d=e.radius):(c=e.width,d=e.height);var h=40,i=2*Math.PI/h,j=0;if(a.fill){var k=PIXI.hex2rgb(a.fillColor),l=a.fillAlpha,m=k[0]*l,n=k[1]*l,o=k[2]*l,p=b.points,q=b.indices,r=p.length/6;for(q.push(r),j=0;h+1>j;j++)p.push(f,g,m,n,o,l),p.push(f+Math.sin(i*j)*c,g+Math.cos(i*j)*d,m,n,o,l), -q.push(r++,r++);q.push(r-1)}if(a.lineWidth){var s=a.points;for(a.points=[],j=0;h+1>j;j++)a.points.push(f+Math.sin(i*j)*c,g+Math.cos(i*j)*d);PIXI.WebGLGraphics.buildLine(a,b),a.points=s}},PIXI.WebGLGraphics.buildLine=function(a,b){var c=0,d=a.points;if(0!==d.length){if(a.lineWidth%2)for(c=0;cc;c++)k=d[2*(c-1)],l=d[2*(c-1)+1],m=d[2*c],n=d[2*c+1],o=d[2*(c+1)],p=d[2*(c+1)+1],q=-(l-n),r=k-m,E=Math.sqrt(q*q+r*r),q/=E,r/=E,q*=K,r*=K,s=-(n-p),t=m-o,E=Math.sqrt(s*s+t*t),s/=E,t/=E,s*=K,t*=K,w=-r+l-(-r+n),x=-q+m-(-q+k),y=(-q+k)*(-r+n)-(-q+m)*(-r+l),z=-t+p-(-t+n),A=-s+m-(-s+o),B=(-s+o)*(-t+n)-(-s+m)*(-t+p),C=w*A-z*x,Math.abs(C)<.1?(C+=10.1,F.push(m-q,n-r,N,O,P,M),F.push(m+q,n+r,N,O,P,M)):(i=(x*B-A*y)/C,j=(z*y-w*B)/C,D=(i-m)*(i-m)+(j-n)+(j-n),D>19600?(u=q-s,v=r-t,E=Math.sqrt(u*u+v*v),u/=E,v/=E,u*=K,v*=K,F.push(m-u,n-v),F.push(N,O,P,M),F.push(m+u,n+v),F.push(N,O,P,M),F.push(m-u,n-v),F.push(N,O,P,M),I++):(F.push(i,j),F.push(N,O,P,M),F.push(m-(i-m),n-(j-n)),F.push(N,O,P,M)));for(k=d[2*(H-2)],l=d[2*(H-2)+1],m=d[2*(H-1)],n=d[2*(H-1)+1],q=-(l-n),r=k-m,E=Math.sqrt(q*q+r*r),q/=E,r/=E,q*=K,r*=K,F.push(m-q,n-r),F.push(N,O,P,M),F.push(m+q,n+r),F.push(N,O,P,M),G.push(J),c=0;I>c;c++)G.push(J++);G.push(J-1)}},PIXI.WebGLGraphics.buildComplexPoly=function(a,b){var c=a.points.slice();if(!(c.length<6)){var d=b.indices;b.points=c,b.alpha=a.fillAlpha,b.color=PIXI.hex2rgb(a.fillColor);for(var e,f,g=1/0,h=-(1/0),i=1/0,j=-(1/0),k=0;ke?e:g,h=e>h?e:h,i=i>f?f:i,j=f>j?f:j;c.push(g,i,h,i,h,j,g,j);var l=c.length/2;for(k=0;l>k;k++)d.push(k)}},PIXI.WebGLGraphics.buildPoly=function(a,b){var c=a.points;if(!(c.length<6)){var d=b.points,e=b.indices,f=c.length/2,g=PIXI.hex2rgb(a.fillColor),h=a.fillAlpha,i=g[0]*h,j=g[1]*h,k=g[2]*h,l=PIXI.EarCut.Triangulate(c,null,2);if(!l)return!1;var m=d.length/6,n=0;for(n=0;nn;n++)d.push(c[2*n],c[2*n+1],i,j,k,h);return!0}},PIXI.WebGLGraphics.graphicsDataPool=[],PIXI.WebGLGraphicsData=function(a){this.gl=a,this.color=[0,0,0],this.points=[],this.indices=[],this.buffer=a.createBuffer(),this.indexBuffer=a.createBuffer(),this.mode=1,this.alpha=1,this.dirty=!0},PIXI.WebGLGraphicsData.prototype.reset=function(){this.points=[],this.indices=[]},PIXI.WebGLGraphicsData.prototype.upload=function(){var a=this.gl;this.glPoints=new PIXI.Float32Array(this.points),a.bindBuffer(a.ARRAY_BUFFER,this.buffer),a.bufferData(a.ARRAY_BUFFER,this.glPoints,a.STATIC_DRAW),this.glIndicies=new PIXI.Uint16Array(this.indices),a.bindBuffer(a.ELEMENT_ARRAY_BUFFER,this.indexBuffer),a.bufferData(a.ELEMENT_ARRAY_BUFFER,this.glIndicies,a.STATIC_DRAW),this.dirty=!1},PIXI.CanvasGraphics=function(){},PIXI.CanvasGraphics.renderGraphics=function(a,b){var c=a.worldAlpha;a.dirty&&(this.updateGraphicsTint(a),a.dirty=!1);for(var d=0;dA?A:z,b.beginPath(),b.moveTo(v,w+z),b.lineTo(v,w+y-z),b.quadraticCurveTo(v,w+y,v+z,w+y),b.lineTo(v+x-z,w+y),b.quadraticCurveTo(v+x,w+y,v+x,w+y-z),b.lineTo(v+x,w+z),b.quadraticCurveTo(v+x,w,v+x-z,w),b.lineTo(v+z,w),b.quadraticCurveTo(v,w,v,w+z),b.closePath(),(e.fillColor||0===e.fillColor)&&(b.globalAlpha=e.fillAlpha*c,b.fillStyle="#"+("00000"+(0|g).toString(16)).substr(-6),b.fill()),e.lineWidth&&(b.globalAlpha=e.lineAlpha*c,b.strokeStyle="#"+("00000"+(0|h).toString(16)).substr(-6),b.stroke())}}},PIXI.CanvasGraphics.renderGraphicsMask=function(a,b){var c=a.graphicsData.length;if(0!==c){b.beginPath();for(var d=0;c>d;d++){var e=a.graphicsData[d],f=e.shape;if(e.type===PIXI.Graphics.POLY){var g=f.points;b.moveTo(g[0],g[1]);for(var h=1;hy?y:x,b.moveTo(t,u+x),b.lineTo(t,u+w-x),b.quadraticCurveTo(t,u+w,t+x,u+w),b.lineTo(t+v-x,u+w),b.quadraticCurveTo(t+v,u+w,t+v,u+w-x),b.lineTo(t+v,u+x),b.quadraticCurveTo(t+v,u,t+v-x,u),b.lineTo(t+x,u),b.quadraticCurveTo(t,u,t,u+x),b.closePath()}}}},PIXI.CanvasGraphics.updateGraphicsTint=function(a){if(16777215!==a.tint)for(var b=(a.tint>>16&255)/255,c=(a.tint>>8&255)/255,d=(255&a.tint)/255,e=0;e>16&255)/255*b*255<<16)+((g>>8&255)/255*c*255<<8)+(255&g)/255*d*255,f._lineTint=((h>>16&255)/255*b*255<<16)+((h>>8&255)/255*c*255<<8)+(255&h)/255*d*255}},c.Graphics=function(a,b,d){void 0===b&&(b=0),void 0===d&&(d=0),this.type=c.GRAPHICS,this.physicsType=c.SPRITE,this.anchor=new c.Point,PIXI.Graphics.call(this),c.Component.Core.init.call(this,a,b,d,"",null)},c.Graphics.prototype=Object.create(PIXI.Graphics.prototype),c.Graphics.prototype.constructor=c.Graphics,c.Component.Core.install.call(c.Graphics.prototype,["Angle","AutoCull","Bounds","Destroy","FixedToCamera","InputEnabled","InWorld","LifeSpan","PhysicsBody","Reset"]),c.Graphics.prototype.preUpdatePhysics=c.Component.PhysicsBody.preUpdate,c.Graphics.prototype.preUpdateLifeSpan=c.Component.LifeSpan.preUpdate,c.Graphics.prototype.preUpdateInWorld=c.Component.InWorld.preUpdate,c.Graphics.prototype.preUpdateCore=c.Component.Core.preUpdate,c.Graphics.prototype.preUpdate=function(){return this.preUpdatePhysics()&&this.preUpdateLifeSpan()&&this.preUpdateInWorld()?this.preUpdateCore():!1},c.Graphics.prototype.destroy=function(a){this.clear(),c.Component.Destroy.prototype.destroy.call(this,a)},c.Graphics.prototype.drawTriangle=function(a,b){void 0===b&&(b=!1);var d=new c.Polygon(a);if(b){var e=new c.Point(this.game.camera.x-a[0].x,this.game.camera.y-a[0].y),f=new c.Point(a[1].x-a[0].x,a[1].y-a[0].y),g=new c.Point(a[1].x-a[2].x,a[1].y-a[2].y),h=g.cross(f);e.dot(h)>0&&this.drawPolygon(d)}else this.drawPolygon(d)},c.Graphics.prototype.drawTriangles=function(a,b,d){void 0===d&&(d=!1);var e,f=new c.Point,g=new c.Point,h=new c.Point,i=[];if(b)if(a[0]instanceof c.Point)for(e=0;e0&&this.style.maxLinesh;h++){if(0===c){var i=this.style.strokeThickness+this.padding.x;i+=this.colors.length>0||this.strokeColors.length>0||this.fontWeights.length>0||this.fontStyles.length>0?this.measureLine(b[h]):this.context.measureText(b[h]).width,this.style.wordWrap&&(i-=this.context.measureText(" ").width)}else{var j=b[h].split(/(?:\t)/),i=this.padding.x+this.style.strokeThickness;if(Array.isArray(c))for(var k=0,l=0;l0||this.strokeColors.length>0||this.fontWeights.length>0||this.fontStyles.length>0?this.measureLine(j[l]):Math.ceil(this.context.measureText(j[l]).width),l>0&&(k+=c[l-1]),i=k+m}else for(var l=0;l0||this.strokeColors.length>0||this.fontWeights.length>0||this.fontStyles.length>0?this.measureLine(j[l]):Math.ceil(this.context.measureText(j[l]).width);var n=this.game.math.snapToCeil(i,c)-i;i+=n}}d[h]=Math.ceil(i),e=Math.max(e,d[h])}this.canvas.width=e*this._res;var o=f.fontSize+this.style.strokeThickness+this.padding.y,p=o*g,q=this._lineSpacing;0>q&&Math.abs(q)>o&&(q=-o),0!==q&&(p+=q>0?q*b.length:q*(b.length-1)),this.canvas.height=p*this._res,this.context.scale(this._res,this._res),navigator.isCocoonJS&&this.context.clearRect(0,0,this.canvas.width,this.canvas.height),this.style.backgroundColor&&(this.context.fillStyle=this.style.backgroundColor,this.context.fillRect(0,0,this.canvas.width,this.canvas.height)),this.context.fillStyle=this.style.fill,this.context.font=this.style.font,this.context.strokeStyle=this.style.stroke,this.context.textBaseline="alphabetic",this.context.lineWidth=this.style.strokeThickness,this.context.lineCap="round",this.context.lineJoin="round";var r,s;for(this._charCount=0,h=0;g>h;h++)r=this.style.strokeThickness/2,s=this.style.strokeThickness/2+h*o+f.ascent,h>0&&(s+=q*h),"right"===this.style.align?r+=e-d[h]:"center"===this.style.align&&(r+=(e-d[h])/2),this.autoRound&&(r=Math.round(r),s=Math.round(s)),this.colors.length>0||this.strokeColors.length>0||this.fontWeights.length>0||this.fontStyles.length>0?this.updateLine(b[h],r,s):(this.style.stroke&&this.style.strokeThickness&&(this.updateShadow(this.style.shadowStroke),0===c?this.context.strokeText(b[h],r,s):this.renderTabLine(b[h],r,s,!1)),this.style.fill&&(this.updateShadow(this.style.shadowFill),0===c?this.context.fillText(b[h],r,s):this.renderTabLine(b[h],r,s,!0)));this.updateTexture()},c.Text.prototype.renderTabLine=function(a,b,c,d){var e=a.split(/(?:\t)/),f=this.style.tabs,g=0;if(Array.isArray(f))for(var h=0,i=0;i0&&(h+=f[i-1]),g=b+h,d?this.context.fillText(e[i],g,c):this.context.strokeText(e[i],g,c);else for(var i=0;i0||this.fontStyles.length>0){var e=this.fontToComponents(this.context.font);this.fontStyles[this._charCount]&&(e.fontStyle=this.fontStyles[this._charCount]),this.fontWeights[this._charCount]&&(e.fontWeight=this.fontWeights[this._charCount]),this.context.font=this.componentsToFont(e)}this.style.stroke&&this.style.strokeThickness&&(this.strokeColors[this._charCount]&&(this.context.strokeStyle=this.strokeColors[this._charCount]),this.updateShadow(this.style.shadowStroke)),this.style.fill&&(this.colors[this._charCount]&&(this.context.fillStyle=this.colors[this._charCount]),this.updateShadow(this.style.shadowFill)),b+=this.context.measureText(d).width,this._charCount++}return Math.ceil(b)},c.Text.prototype.updateLine=function(a,b,c){for(var d=0;d0||this.fontStyles.length>0){var f=this.fontToComponents(this.context.font);this.fontStyles[this._charCount]&&(f.fontStyle=this.fontStyles[this._charCount]),this.fontWeights[this._charCount]&&(f.fontWeight=this.fontWeights[this._charCount]),this.context.font=this.componentsToFont(f)}this.style.stroke&&this.style.strokeThickness&&(this.strokeColors[this._charCount]&&(this.context.strokeStyle=this.strokeColors[this._charCount]),this.updateShadow(this.style.shadowStroke),this.context.strokeText(e,b,c)),this.style.fill&&(this.colors[this._charCount]&&(this.context.fillStyle=this.colors[this._charCount]),this.updateShadow(this.style.shadowFill),this.context.fillText(e,b,c)),b+=this.context.measureText(e).width,this._charCount++}},c.Text.prototype.clearColors=function(){return this.colors=[],this.strokeColors=[],this.dirty=!0,this},c.Text.prototype.clearFontValues=function(){return this.fontStyles=[],this.fontWeights=[],this.dirty=!0,this},c.Text.prototype.addColor=function(a,b){return this.colors[b]=a,this.dirty=!0,this},c.Text.prototype.addStrokeColor=function(a,b){return this.strokeColors[b]=a,this.dirty=!0,this},c.Text.prototype.addFontStyle=function(a,b){return this.fontStyles[b]=a,this.dirty=!0,this},c.Text.prototype.addFontWeight=function(a,b){return this.fontWeights[b]=a,this.dirty=!0,this},c.Text.prototype.precalculateWordWrap=function(a){this.texture.baseTexture.resolution=this._res,this.context.font=this.style.font;var b=this.runWordWrap(a);return b.split(/(?:\r\n|\r|\n)/)},c.Text.prototype.runWordWrap=function(a){return this.useAdvancedWrap?this.advancedWordWrap(a):this.basicWordWrap(a)},c.Text.prototype.advancedWordWrap=function(a){for(var b=this.context,c=this.style.wordWrapWidth,d="",e=a.replace(/ +/gi," ").split(/\r?\n/gi),f=e.length,g=0;f>g;g++){var h=e[g],i="";h=h.replace(/^ *|\s*$/gi,"");var j=b.measureText(h).width;if(c>j)d+=h+"\n";else{for(var k=c,l=h.split(" "),m=0;mk){if(0===m){for(var q=o;q.length&&(q=q.slice(0,-1),p=b.measureText(q).width,!(k>=p)););if(!q.length)throw new Error("This text's wordWrapWidth setting is less than a single character!");var r=n.substr(q.length);l[m]=r,i+=q}var s=l[m].length?m:m+1,t=l.slice(s).join(" ").replace(/[ \n]*$/gi,"");e[g+1]=t+" "+(e[g+1]||""),f=e.length;break}i+=o,k-=p}d+=i.replace(/[ \n]*$/gi,"")+"\n"}}return d=d.replace(/[\s|\n]*$/gi,"")},c.Text.prototype.basicWordWrap=function(a){for(var b="",c=a.split("\n"),d=0;de?(g>0&&(b+="\n"),b+=f[g]+" ",e=this.style.wordWrapWidth-h):(e-=i,b+=f[g]+" ")}dd&&(this.style.wordWrapWidth=d)),this.updateTexture(),this},c.Text.prototype.updateTexture=function(){var a=this.texture.baseTexture,b=this.texture.crop,c=this.texture.frame,d=this.canvas.width,e=this.canvas.height;if(a.width=d,a.height=e,b.width=d,b.height=e,c.width=d,c.height=e,this.texture.width=d,this.texture.height=e,this._width=d,this._height=e,this.textBounds){var f=this.textBounds.x,g=this.textBounds.y;"right"===this.style.boundsAlignH?f+=this.textBounds.width-this.canvas.width:"center"===this.style.boundsAlignH&&(f+=this.textBounds.halfWidth-this.canvas.width/2),"bottom"===this.style.boundsAlignV?g+=this.textBounds.height-this.canvas.height:"middle"===this.style.boundsAlignV&&(g+=this.textBounds.halfHeight-this.canvas.height/2),this.pivot.x=-f,this.pivot.y=-g}this.renderable=0!==d&&0!==e,this.texture.requiresReTint=!0,this.texture.baseTexture.dirty()},c.Text.prototype._renderWebGL=function(a){this.dirty&&(this.updateText(),this.dirty=!1),PIXI.Sprite.prototype._renderWebGL.call(this,a)},c.Text.prototype._renderCanvas=function(a){this.dirty&&(this.updateText(),this.dirty=!1),PIXI.Sprite.prototype._renderCanvas.call(this,a)},c.Text.prototype.determineFontProperties=function(a){var b=c.Text.fontPropertiesCache[a];if(!b){b={};var d=c.Text.fontPropertiesCanvas,e=c.Text.fontPropertiesContext;e.font=a;var f=Math.ceil(e.measureText("|MÉq").width),g=Math.ceil(e.measureText("|MÉq").width),h=2*g;if(g=1.4*g|0,d.width=f,d.height=h,e.fillStyle="#f00",e.fillRect(0,0,f,h),e.font=a,e.textBaseline="alphabetic",e.fillStyle="#000",e.fillText("|MÉq",0,g),!e.getImageData(0,0,f,h))return b.ascent=g,b.descent=g+6,b.fontSize=b.ascent+b.descent,c.Text.fontPropertiesCache[a]=b,b;var i,j,k=e.getImageData(0,0,f,h).data,l=k.length,m=4*f,n=0,o=!1;for(i=0;g>i;i++){for(j=0;m>j;j+=4)if(255!==k[n+j]){o=!0;break}if(o)break;n+=m}for(b.ascent=g-i,n=l-m,o=!1,i=h;i>g;i--){for(j=0;m>j;j+=4)if(255!==k[n+j]){o=!0;break}if(o)break;n-=m}b.descent=i-g,b.descent+=6,b.fontSize=b.ascent+b.descent,c.Text.fontPropertiesCache[a]=b}return b},c.Text.prototype.getBounds=function(a){return this.dirty&&(this.updateText(),this.dirty=!1),PIXI.Sprite.prototype.getBounds.call(this,a)},Object.defineProperty(c.Text.prototype,"text",{get:function(){return this._text},set:function(a){a!==this._text&&(this._text=a.toString()||"",this.dirty=!0,this.parent&&this.updateTransform())}}),Object.defineProperty(c.Text.prototype,"cssFont",{get:function(){return this.componentsToFont(this._fontComponents)},set:function(a){a=a||"bold 20pt Arial",this._fontComponents=this.fontToComponents(a),this.updateFont(this._fontComponents)}}),Object.defineProperty(c.Text.prototype,"font",{get:function(){return this._fontComponents.fontFamily},set:function(a){a=a||"Arial",a=a.trim(),/^(?:inherit|serif|sans-serif|cursive|fantasy|monospace)$/.exec(a)||/['",]/.exec(a)||(a="'"+a+"'"),this._fontComponents.fontFamily=a,this.updateFont(this._fontComponents)}}),Object.defineProperty(c.Text.prototype,"fontSize",{get:function(){var a=this._fontComponents.fontSize;return a&&/(?:^0$|px$)/.exec(a)?parseInt(a,10):a},set:function(a){a=a||"0","number"==typeof a&&(a+="px"),this._fontComponents.fontSize=a,this.updateFont(this._fontComponents)}}),Object.defineProperty(c.Text.prototype,"fontWeight",{get:function(){return this._fontComponents.fontWeight||"normal"},set:function(a){a=a||"normal",this._fontComponents.fontWeight=a,this.updateFont(this._fontComponents)}}),Object.defineProperty(c.Text.prototype,"fontStyle",{get:function(){return this._fontComponents.fontStyle||"normal"},set:function(a){a=a||"normal",this._fontComponents.fontStyle=a,this.updateFont(this._fontComponents)}}),Object.defineProperty(c.Text.prototype,"fontVariant",{get:function(){return this._fontComponents.fontVariant||"normal"},set:function(a){a=a||"normal",this._fontComponents.fontVariant=a,this.updateFont(this._fontComponents)}}),Object.defineProperty(c.Text.prototype,"fill",{get:function(){return this.style.fill},set:function(a){a!==this.style.fill&&(this.style.fill=a,this.dirty=!0)}}),Object.defineProperty(c.Text.prototype,"align",{get:function(){return this.style.align},set:function(a){a!==this.style.align&&(this.style.align=a,this.dirty=!0)}}),Object.defineProperty(c.Text.prototype,"resolution",{get:function(){return this._res},set:function(a){a!==this._res&&(this._res=a,this.dirty=!0)}}),Object.defineProperty(c.Text.prototype,"tabs",{get:function(){return this.style.tabs},set:function(a){a!==this.style.tabs&&(this.style.tabs=a,this.dirty=!0)}}),Object.defineProperty(c.Text.prototype,"boundsAlignH",{get:function(){return this.style.boundsAlignH},set:function(a){a!==this.style.boundsAlignH&&(this.style.boundsAlignH=a,this.dirty=!0)}}),Object.defineProperty(c.Text.prototype,"boundsAlignV",{get:function(){return this.style.boundsAlignV},set:function(a){a!==this.style.boundsAlignV&&(this.style.boundsAlignV=a,this.dirty=!0)}}),Object.defineProperty(c.Text.prototype,"stroke",{get:function(){return this.style.stroke},set:function(a){a!==this.style.stroke&&(this.style.stroke=a,this.dirty=!0)}}),Object.defineProperty(c.Text.prototype,"strokeThickness",{get:function(){return this.style.strokeThickness},set:function(a){a!==this.style.strokeThickness&&(this.style.strokeThickness=a,this.dirty=!0)}}),Object.defineProperty(c.Text.prototype,"wordWrap",{get:function(){return this.style.wordWrap},set:function(a){a!==this.style.wordWrap&&(this.style.wordWrap=a,this.dirty=!0)}}),Object.defineProperty(c.Text.prototype,"wordWrapWidth",{get:function(){return this.style.wordWrapWidth},set:function(a){a!==this.style.wordWrapWidth&&(this.style.wordWrapWidth=a,this.dirty=!0)}}),Object.defineProperty(c.Text.prototype,"lineSpacing",{get:function(){return this._lineSpacing},set:function(a){a!==this._lineSpacing&&(this._lineSpacing=parseFloat(a),this.dirty=!0,this.parent&&this.updateTransform())}}),Object.defineProperty(c.Text.prototype,"shadowOffsetX",{get:function(){return this.style.shadowOffsetX},set:function(a){a!==this.style.shadowOffsetX&&(this.style.shadowOffsetX=a,this.dirty=!0)}}),Object.defineProperty(c.Text.prototype,"shadowOffsetY",{get:function(){return this.style.shadowOffsetY},set:function(a){a!==this.style.shadowOffsetY&&(this.style.shadowOffsetY=a,this.dirty=!0)}}),Object.defineProperty(c.Text.prototype,"shadowColor",{get:function(){return this.style.shadowColor},set:function(a){a!==this.style.shadowColor&&(this.style.shadowColor=a,this.dirty=!0)}}),Object.defineProperty(c.Text.prototype,"shadowBlur",{get:function(){return this.style.shadowBlur},set:function(a){a!==this.style.shadowBlur&&(this.style.shadowBlur=a,this.dirty=!0)}}),Object.defineProperty(c.Text.prototype,"shadowStroke",{get:function(){return this.style.shadowStroke},set:function(a){a!==this.style.shadowStroke&&(this.style.shadowStroke=a,this.dirty=!0)}}),Object.defineProperty(c.Text.prototype,"shadowFill",{get:function(){return this.style.shadowFill},set:function(a){a!==this.style.shadowFill&&(this.style.shadowFill=a,this.dirty=!0)}}),Object.defineProperty(c.Text.prototype,"width",{get:function(){return this.dirty&&(this.updateText(),this.dirty=!1),this.scale.x*this.texture.frame.width},set:function(a){this.scale.x=a/this.texture.frame.width,this._width=a}}),Object.defineProperty(c.Text.prototype,"height",{get:function(){return this.dirty&&(this.updateText(),this.dirty=!1),this.scale.y*this.texture.frame.height},set:function(a){this.scale.y=a/this.texture.frame.height,this._height=a}}),c.Text.fontPropertiesCache={},c.Text.fontPropertiesCanvas=PIXI.CanvasPool.create(c.Text.fontPropertiesCanvas),c.Text.fontPropertiesContext=c.Text.fontPropertiesCanvas.getContext("2d"),c.BitmapText=function(a,b,d,e,f,g,h){b=b||0,d=d||0,e=e||"",f=f||"",g=g||32,h=h||"left",PIXI.DisplayObjectContainer.call(this),this.type=c.BITMAPTEXT,this.physicsType=c.SPRITE,this.textWidth=0,this.textHeight=0,this.anchor=new c.Point,this._prevAnchor=new c.Point,this._glyphs=[],this._maxWidth=0,this._text=f.toString()||"",this._data=a.cache.getBitmapFont(e),this._font=e,this._fontSize=g,this._align=h,this._tint=16777215,this.updateText(),this.dirty=!1,c.Component.Core.init.call(this,a,b,d,"",null)},c.BitmapText.prototype=Object.create(PIXI.DisplayObjectContainer.prototype),c.BitmapText.prototype.constructor=c.BitmapText,c.Component.Core.install.call(c.BitmapText.prototype,["Angle","AutoCull","Bounds","Destroy","FixedToCamera","InputEnabled","InWorld","LifeSpan","PhysicsBody","Reset"]),c.BitmapText.prototype.preUpdatePhysics=c.Component.PhysicsBody.preUpdate,c.BitmapText.prototype.preUpdateLifeSpan=c.Component.LifeSpan.preUpdate,c.BitmapText.prototype.preUpdateInWorld=c.Component.InWorld.preUpdate,c.BitmapText.prototype.preUpdateCore=c.Component.Core.preUpdate,c.BitmapText.prototype.preUpdate=function(){return this.preUpdatePhysics()&&this.preUpdateLifeSpan()&&this.preUpdateInWorld()?this.preUpdateCore():!1},c.BitmapText.prototype.postUpdate=function(){c.Component.PhysicsBody.postUpdate.call(this),c.Component.FixedToCamera.postUpdate.call(this),this.body&&this.body.type===c.Physics.ARCADE&&(this.textWidth!==this.body.sourceWidth||this.textHeight!==this.body.sourceHeight)&&this.body.setSize(this.textWidth,this.textHeight)},c.BitmapText.prototype.setText=function(a){this.text=a},c.BitmapText.prototype.scanLine=function(a,b,c){for(var d=0,e=0,f=-1,g=0,h=null,i=this._maxWidth>0?this._maxWidth:null,j=[],k=0;k=i&&f>-1)return{width:g||e,text:c.substr(0,k-(k-f)),end:l,chars:j};e+=(n.xAdvance+p)*b,j.push(d+(n.xOffset+p)*b),d+=(n.xAdvance+p)*b,h=m}return{width:e,text:c,end:l,chars:j}},c.BitmapText.prototype.cleanText=function(a,b){void 0===b&&(b="");var c=this._data.font;if(!c)return"";for(var d=/\r\n|\n\r|\n|\r/g,e=a.replace(d,"\n").split("\n"),f=0;fthis.textWidth&&(this.textWidth=f.width),e+=a.lineHeight*c,b=b.substr(f.text.length+1)}while(f.end===!1);this.textHeight=e;for(var g=0,h=0,i=this.textWidth*this.anchor.x,j=this.textHeight*this.anchor.y,k=0;k0&&(this._fontSize=a,this.updateText())}}),Object.defineProperty(c.BitmapText.prototype,"text",{get:function(){return this._text},set:function(a){a!==this._text&&(this._text=a.toString()||"",this.updateText())}}),Object.defineProperty(c.BitmapText.prototype,"maxWidth",{get:function(){return this._maxWidth},set:function(a){a!==this._maxWidth&&(this._maxWidth=a,this.updateText())}}),Object.defineProperty(c.BitmapText.prototype,"smoothed",{get:function(){return!this._data.base.scaleMode},set:function(a){a?this._data.base.scaleMode=0:this._data.base.scaleMode=1}}),c.RetroFont=function(a,b,d,e,f,g,h,i,j,k){if(!a.cache.checkImageKey(b))return!1;(void 0===g||null===g)&&(g=a.cache.getImage(b).width/d),this.characterWidth=d,this.characterHeight=e,this.characterSpacingX=h||0,this.characterSpacingY=i||0,this.characterPerRow=g,this.offsetX=j||0,this.offsetY=k||0,this.align="left",this.multiLine=!1,this.autoUpperCase=!0,this.customSpacingX=0,this.customSpacingY=0,this.fixedWidth=0,this.fontSet=a.cache.getImage(b),this._text="",this.grabData=[],this.frameData=new c.FrameData;for(var l=this.offsetX,m=this.offsetY,n=0,o=0;o?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~",c.RetroFont.TEXT_SET2=" !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ",c.RetroFont.TEXT_SET3="ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789 ",c.RetroFont.TEXT_SET4="ABCDEFGHIJKLMNOPQRSTUVWXYZ 0123456789",c.RetroFont.TEXT_SET5="ABCDEFGHIJKLMNOPQRSTUVWXYZ.,/() '!?-*:0123456789",c.RetroFont.TEXT_SET6="ABCDEFGHIJKLMNOPQRSTUVWXYZ!?:;0123456789\"(),-.' ",c.RetroFont.TEXT_SET7="AGMSY+:4BHNTZ!;5CIOU.?06DJPV,(17EKQW\")28FLRX-'39",c.RetroFont.TEXT_SET8="0123456789 .ABCDEFGHIJKLMNOPQRSTUVWXYZ",c.RetroFont.TEXT_SET9="ABCDEFGHIJKLMNOPQRSTUVWXYZ()-0123456789.:,'\"?!",c.RetroFont.TEXT_SET10="ABCDEFGHIJKLMNOPQRSTUVWXYZ",c.RetroFont.TEXT_SET11="ABCDEFGHIJKLMNOPQRSTUVWXYZ.,\"-+!?()':;0123456789",c.RetroFont.prototype.setFixedWidth=function(a,b){void 0===b&&(b="left"),this.fixedWidth=a,this.align=b},c.RetroFont.prototype.setText=function(a,b,c,d,e,f){this.multiLine=b||!1,this.customSpacingX=c||0,this.customSpacingY=d||0,this.align=e||"left",f?this.autoUpperCase=!1:this.autoUpperCase=!0,a.length>0&&(this.text=a)},c.RetroFont.prototype.buildRetroFontText=function(){var a=0,b=0;if(this.clear(),this.multiLine){var d=this._text.split("\n");this.fixedWidth>0?this.resize(this.fixedWidth,d.length*(this.characterHeight+this.customSpacingY)-this.customSpacingY,!0):this.resize(this.getLongestLine()*(this.characterWidth+this.customSpacingX),d.length*(this.characterHeight+this.customSpacingY)-this.customSpacingY,!0);for(var e=0;ea&&(a=0),this.pasteLine(d[e],a,b,this.customSpacingX),b+=this.characterHeight+this.customSpacingY}else this.fixedWidth>0?this.resize(this.fixedWidth,this.characterHeight,!0):this.resize(this._text.length*(this.characterWidth+this.customSpacingX),this.characterHeight,!0),a=0,this.align===c.RetroFont.ALIGN_RIGHT?a=this.width-this._text.length*(this.characterWidth+this.customSpacingX):this.align===c.RetroFont.ALIGN_CENTER&&(a=this.width/2-this._text.length*(this.characterWidth+this.customSpacingX)/2,a+=this.customSpacingX/2),0>a&&(a=0),this.pasteLine(this._text,a,0,this.customSpacingX);this.requiresReTint=!0},c.RetroFont.prototype.pasteLine=function(a,b,c,d){for(var e=0;e=0&&(this.stamp.frame=this.grabData[a.charCodeAt(e)],this.renderXY(this.stamp,b,c,!1),b+=this.characterWidth+d,b>this.width))break},c.RetroFont.prototype.getLongestLine=function(){var a=0;if(this._text.length>0)for(var b=this._text.split("\n"),c=0;ca&&(a=b[c].length);return a},c.RetroFont.prototype.removeUnsupportedCharacters=function(a){for(var b="",c=0;c=0||!a&&"\n"===d)&&(b=b.concat(d))}return b},c.RetroFont.prototype.updateOffset=function(a,b){if(this.offsetX!==a||this.offsetY!==b){for(var c=a-this.offsetX,d=b-this.offsetY,e=this.game.cache.getFrameData(this.stamp.key).getFrames(),f=e.length;f--;)e[f].x+=c,e[f].y+=d;this.buildRetroFontText()}},Object.defineProperty(c.RetroFont.prototype,"text",{get:function(){return this._text},set:function(a){var b;b=this.autoUpperCase?a.toUpperCase():a,b!==this._text&&(this._text=b,this.removeUnsupportedCharacters(this.multiLine),this.buildRetroFontText())}}),Object.defineProperty(c.RetroFont.prototype,"smoothed",{get:function(){return this.stamp.smoothed},set:function(a){this.stamp.smoothed=a,this.buildRetroFontText()}}),c.Rope=function(a,b,d,e,f,g){this.points=[],this.points=g,this._hasUpdateAnimation=!1,this._updateAnimationCallback=null,b=b||0,d=d||0,e=e||null,f=f||null,this.type=c.ROPE,PIXI.Rope.call(this,PIXI.TextureCache.__default,this.points),c.Component.Core.init.call(this,a,b,d,e,f)},c.Rope.prototype=Object.create(PIXI.Rope.prototype),c.Rope.prototype.constructor=c.Rope,c.Component.Core.install.call(c.Rope.prototype,["Angle","Animation","AutoCull","Bounds","BringToTop","Crop","Delta","Destroy","FixedToCamera","InWorld","LifeSpan","LoadTexture","Overlap","PhysicsBody","Reset","ScaleMinMax","Smoothed"]),c.Rope.prototype.preUpdatePhysics=c.Component.PhysicsBody.preUpdate,c.Rope.prototype.preUpdateLifeSpan=c.Component.LifeSpan.preUpdate,c.Rope.prototype.preUpdateInWorld=c.Component.InWorld.preUpdate,c.Rope.prototype.preUpdateCore=c.Component.Core.preUpdate,c.Rope.prototype.preUpdate=function(){return this.preUpdatePhysics()&&this.preUpdateLifeSpan()&&this.preUpdateInWorld()?this.preUpdateCore():!1},c.Rope.prototype.update=function(){this._hasUpdateAnimation&&this.updateAnimation.call(this)},c.Rope.prototype.reset=function(a,b){return c.Component.Reset.prototype.reset.call(this,a,b),this},Object.defineProperty(c.Rope.prototype,"updateAnimation",{get:function(){return this._updateAnimation},set:function(a){a&&"function"==typeof a?(this._hasUpdateAnimation=!0,this._updateAnimation=a):(this._hasUpdateAnimation=!1,this._updateAnimation=null)}}),Object.defineProperty(c.Rope.prototype,"segments",{get:function(){for(var a,b,d,e,f,g,h,i,j=[],k=0;k=1)&&(l.touch=!0),(window.navigator.msPointerEnabled||window.navigator.pointerEnabled)&&(l.mspointer=!0),l.cocoonJS||("onwheel"in window||l.ie&&"WheelEvent"in window?l.wheelEvent="wheel":"onmousewheel"in window?l.wheelEvent="mousewheel":l.firefox&&"MouseScrollEvent"in window&&(l.wheelEvent="DOMMouseScroll"))}function d(){for(var a=["requestFullscreen","requestFullScreen","webkitRequestFullscreen","webkitRequestFullScreen","msRequestFullscreen","msRequestFullScreen","mozRequestFullScreen","mozRequestFullscreen"],b=document.createElement("div"),c=0;c=9&&/Mac OS X (\d+)_(\d+)/.test(navigator.userAgent)){var c=parseInt(RegExp.$1,10),d=parseInt(RegExp.$2,10);(10===c&&d>=11||c>10)&&(l.dolby=!0)}}catch(e){}}function h(){l.pixelRatio=window.devicePixelRatio||1,l.iPhone=-1!=navigator.userAgent.toLowerCase().indexOf("iphone"),l.iPhone4=2==l.pixelRatio&&l.iPhone,l.iPad=-1!=navigator.userAgent.toLowerCase().indexOf("ipad"),"undefined"!=typeof Int8Array?l.typedArray=!0:l.typedArray=!1,"undefined"!=typeof ArrayBuffer&&"undefined"!=typeof Uint8Array&&"undefined"!=typeof Uint32Array&&(l.littleEndian=i(),l.LITTLE_ENDIAN=l.littleEndian),l.support32bit="undefined"!=typeof ArrayBuffer&&"undefined"!=typeof Uint8ClampedArray&&"undefined"!=typeof Int32Array&&null!==l.littleEndian&&j(),navigator.vibrate=navigator.vibrate||navigator.webkitVibrate||navigator.mozVibrate||navigator.msVibrate,navigator.vibrate&&(l.vibration=!0)}function i(){var a=new ArrayBuffer(4),b=new Uint8Array(a),c=new Uint32Array(a);return b[0]=161,b[1]=178,b[2]=195,b[3]=212,3569595041==c[0]?!0:2712847316==c[0]?!1:null}function j(){if(void 0===Uint8ClampedArray)return!1;var a=PIXI.CanvasPool.create(this,1,1),b=a.getContext("2d");if(!b)return!1;var c=b.createImageData(1,1);return PIXI.CanvasPool.remove(this),c.data instanceof Uint8ClampedArray}function k(){var a,b=document.createElement("p"),c={webkitTransform:"-webkit-transform",OTransform:"-o-transform",msTransform:"-ms-transform",MozTransform:"-moz-transform",transform:"transform"};document.body.insertBefore(b,null);for(var d in c)void 0!==b.style[d]&&(b.style[d]="translate3d(1px,1px,1px)",a=window.getComputedStyle(b).getPropertyValue(c[d]));document.body.removeChild(b),l.css3D=void 0!==a&&a.length>0&&"none"!==a}var l=this;a(),e(),g(),f(),k(),h(),b(),d(),c()},c.Device.canPlayAudio=function(a){return"mp3"===a&&this.mp3?!0:"ogg"===a&&(this.ogg||this.opus)?!0:"m4a"===a&&this.m4a?!0:"opus"===a&&this.opus?!0:"wav"===a&&this.wav?!0:"webm"===a&&this.webm?!0:"mp4"===a&&this.dolby?!0:!1},c.Device.canPlayVideo=function(a){return"webm"===a&&(this.webmVideo||this.vp9Video)?!0:"mp4"===a&&(this.mp4Video||this.h264Video)?!0:"ogg"!==a&&"ogv"!==a||!this.oggVideo?"mpeg"===a&&this.hlsVideo?!0:!1:!0},c.Device.isConsoleOpen=function(){return window.console&&window.console.firebug?!0:window.console&&(console.profile(),console.profileEnd(),console.clear&&console.clear(),console.profiles)?console.profiles.length>0:!1},c.Device.isAndroidStockBrowser=function(){var a=window.navigator.userAgent.match(/Android.*AppleWebKit\/([\d.]+)/);return a&&a[1]<537},c.Canvas={create:function(a,b,c,d,e){if(b=b||256,c=c||256,void 0===e)var f=PIXI.CanvasPool.create(a,b,c);else var f=document.createElement("canvas");return"string"==typeof d&&""!==d&&(f.id=d),f.width=b,f.height=c,f.style.display="block",f},setBackgroundColor:function(a,b){return b=b||"rgb(0,0,0)",a.style.backgroundColor=b,a},setTouchAction:function(a,b){return b=b||"none",a.style.msTouchAction=b,a.style["ms-touch-action"]=b,a.style["touch-action"]=b,a},setUserSelect:function(a,b){return b=b||"none",a.style["-webkit-touch-callout"]=b,a.style["-webkit-user-select"]=b,a.style["-khtml-user-select"]=b,a.style["-moz-user-select"]=b,a.style["-ms-user-select"]=b,a.style["user-select"]=b,a.style["-webkit-tap-highlight-color"]="rgba(0, 0, 0, 0)",a},addToDOM:function(a,b,c){var d;return void 0===c&&(c=!0),b&&("string"==typeof b?d=document.getElementById(b):"object"==typeof b&&1===b.nodeType&&(d=b)),d||(d=document.body),c&&d.style&&(d.style.overflow="hidden"),d.appendChild(a),a},removeFromDOM:function(a){a.parentNode&&a.parentNode.removeChild(a)},setTransform:function(a,b,c,d,e,f,g){return a.setTransform(d,f,g,e,b,c),a},setSmoothingEnabled:function(a,b){var d=c.Canvas.getSmoothingPrefix(a);return d&&(a[d]=b),a},getSmoothingPrefix:function(a){var b=["i","webkitI","msI","mozI","oI"];for(var c in b){var d=b[c]+"mageSmoothingEnabled";if(d in a)return d}return null},getSmoothingEnabled:function(a){var b=c.Canvas.getSmoothingPrefix(a);return b?a[b]:void 0},setImageRenderingCrisp:function(a){for(var b=["optimizeSpeed","crisp-edges","-moz-crisp-edges","-webkit-optimize-contrast","optimize-contrast","pixelated"],c=0;ca},fuzzyGreaterThan:function(a,b,c){return void 0===c&&(c=1e-4),a>b-c},fuzzyCeil:function(a,b){return void 0===b&&(b=1e-4),Math.ceil(a-b)},fuzzyFloor:function(a,b){return void 0===b&&(b=1e-4),Math.floor(a+b)},average:function(){for(var a=0,b=arguments.length,c=0;b>c;c++)a+=+arguments[c];return a/b},shear:function(a){return a%1},snapTo:function(a,b,c){return void 0===c&&(c=0),0===b?a:(a-=c,a=b*Math.round(a/b),c+a)},snapToFloor:function(a,b,c){return void 0===c&&(c=0),0===b?a:(a-=c,a=b*Math.floor(a/b),c+a)},snapToCeil:function(a,b,c){return void 0===c&&(c=0),0===b?a:(a-=c,a=b*Math.ceil(a/b),c+a)},roundTo:function(a,b,c){void 0===b&&(b=0),void 0===c&&(c=10);var d=Math.pow(c,-b);return Math.round(a*d)/d},floorTo:function(a,b,c){void 0===b&&(b=0),void 0===c&&(c=10);var d=Math.pow(c,-b);return Math.floor(a*d)/d},ceilTo:function(a,b,c){void 0===b&&(b=0),void 0===c&&(c=10);var d=Math.pow(c,-b);return Math.ceil(a*d)/d},angleBetween:function(a,b,c,d){return Math.atan2(d-b,c-a)},angleBetweenY:function(a,b,c,d){return Math.atan2(c-a,d-b)},angleBetweenPoints:function(a,b){return Math.atan2(b.y-a.y,b.x-a.x)},angleBetweenPointsY:function(a,b){return Math.atan2(b.x-a.x,b.y-a.y)},reverseAngle:function(a){return this.normalizeAngle(a+Math.PI,!0)},normalizeAngle:function(a){return a%=2*Math.PI,a>=0?a:a+2*Math.PI},maxAdd:function(a,b,c){return Math.min(a+b,c)},minSub:function(a,b,c){return Math.max(a-b,c)},wrap:function(a,b,c){var d=c-b;if(0>=d)return 0;var e=(a-b)%d;return 0>e&&(e+=d),e+b},wrapValue:function(a,b,c){var d;return a=Math.abs(a),b=Math.abs(b),c=Math.abs(c),d=(a+b)%c},isOdd:function(a){return!!(1&a)},isEven:function(a){return!(1&a)},min:function(){if(1===arguments.length&&"object"==typeof arguments[0])var a=arguments[0];else var a=arguments;for(var b=1,c=0,d=a.length;d>b;b++)a[b]b;b++)a[b]>a[c]&&(c=b);return a[c]},minProperty:function(a){if(2===arguments.length&&"object"==typeof arguments[1])var b=arguments[1];else var b=arguments.slice(1);for(var c=1,d=0,e=b.length;e>c;c++)b[c][a]c;c++)b[c][a]>b[d][a]&&(d=c);return b[d][a]},wrapAngle:function(a,b){return b?this.wrap(a,-Math.PI,Math.PI):this.wrap(a,-180,180)},linearInterpolation:function(a,b){var c=a.length-1,d=c*b,e=Math.floor(d);return 0>b?this.linear(a[0],a[1],d):b>1?this.linear(a[c],a[c-1],c-d):this.linear(a[e],a[e+1>c?c:e+1],d-e)},bezierInterpolation:function(a,b){for(var c=0,d=a.length-1,e=0;d>=e;e++)c+=Math.pow(1-b,d-e)*Math.pow(b,e)*a[e]*this.bernstein(d,e);return c},catmullRomInterpolation:function(a,b){var c=a.length-1,d=c*b,e=Math.floor(d);return a[0]===a[c]?(0>b&&(e=Math.floor(d=c*(1+b))),this.catmullRom(a[(e-1+c)%c],a[e],a[(e+1)%c],a[(e+2)%c],d-e)):0>b?a[0]-(this.catmullRom(a[0],a[0],a[1],a[1],-d)-a[0]):b>1?a[c]-(this.catmullRom(a[c],a[c],a[c-1],a[c-1],d-c)-a[c]):this.catmullRom(a[e?e-1:0],a[e],a[e+1>c?c:e+1],a[e+2>c?c:e+2],d-e)},linear:function(a,b,c){return(b-a)*c+a},bernstein:function(a,b){return this.factorial(a)/this.factorial(b)/this.factorial(a-b)},factorial:function(a){if(0===a)return 1;for(var b=a;--a;)b*=a;return b},catmullRom:function(a,b,c,d,e){var f=.5*(c-a),g=.5*(d-b),h=e*e,i=e*h;return(2*b-2*c+f+g)*i+(-3*b+3*c-2*f-g)*h+f*e+b},difference:function(a,b){return Math.abs(a-b)},roundAwayFromZero:function(a){return a>0?Math.ceil(a):Math.floor(a)},sinCosGenerator:function(a,b,c,d){void 0===b&&(b=1),void 0===c&&(c=1),void 0===d&&(d=1);for(var e=b,f=c,g=d*Math.PI/a,h=[],i=[],j=0;a>j;j++)f-=e*g,e+=f*g,h[j]=f,i[j]=e;return{sin:i,cos:h,length:a}},distance:function(a,b,c,d){var e=a-c,f=b-d;return Math.sqrt(e*e+f*f)},distanceSq:function(a,b,c,d){var e=a-c,f=b-d;return e*e+f*f},distancePow:function(a,b,c,d,e){return void 0===e&&(e=2),Math.sqrt(Math.pow(c-a,e)+Math.pow(d-b,e))},clamp:function(a,b,c){return b>a?b:a>c?c:a},clampBottom:function(a,b){return b>a?b:a},within:function(a,b,c){return Math.abs(a-b)<=c},mapLinear:function(a,b,c,d,e){return d+(a-b)*(e-d)/(c-b)},smoothstep:function(a,b,c){return a=Math.max(0,Math.min(1,(a-b)/(c-b))),a*a*(3-2*a)},smootherstep:function(a,b,c){return a=Math.max(0,Math.min(1,(a-b)/(c-b))),a*a*a*(a*(6*a-15)+10)},sign:function(a){return 0>a?-1:a>0?1:0},percent:function(a,b,c){return void 0===c&&(c=0),a>b||c>b?1:c>a||c>a?0:(a-c)/b}};var k=Math.PI/180,l=180/Math.PI;return c.Math.degToRad=function(a){return a*k},c.Math.radToDeg=function(a){return a*l},c.RandomDataGenerator=function(a){void 0===a&&(a=[]),this.c=1,this.s0=0,this.s1=0,this.s2=0,"string"==typeof a?this.state(a):this.sow(a)},c.RandomDataGenerator.prototype={rnd:function(){var a=2091639*this.s0+2.3283064365386963e-10*this.c;return this.c=0|a,this.s0=this.s1,this.s1=this.s2,this.s2=a-this.c,this.s2},sow:function(a){if(this.s0=this.hash(" "),this.s1=this.hash(this.s0),this.s2=this.hash(this.s1),this.c=1,a)for(var b=0;b>>0,b-=d,b*=d,d=b>>>0,b-=d,d+=4294967296*b;return 2.3283064365386963e-10*(d>>>0)},integer:function(){return 4294967296*this.rnd.apply(this)},frac:function(){return this.rnd.apply(this)+1.1102230246251565e-16*(2097152*this.rnd.apply(this)|0)},real:function(){return this.integer()+this.frac()},integerInRange:function(a,b){return Math.floor(this.realInRange(0,b-a+1)+a)},between:function(a,b){return this.integerInRange(a,b)},realInRange:function(a,b){return this.frac()*(b-a)+a},normal:function(){return 1-2*this.frac()},uuid:function(){var a="",b="";for(b=a="";a++<36;b+=~a%5|3*a&4?(15^a?8^this.frac()*(20^a?16:4):4).toString(16):"-");return b},pick:function(a){return a[this.integerInRange(0,a.length-1)]},sign:function(){return this.pick([-1,1])},weightedPick:function(a){return a[~~(Math.pow(this.frac(),2)*(a.length-1)+.5)]},timestamp:function(a,b){return this.realInRange(a||9466848e5,b||1577862e6)},angle:function(){return this.integerInRange(-180,180)},state:function(a){return"string"==typeof a&&a.match(/^!rnd/)&&(a=a.split(","),this.c=parseFloat(a[1]),this.s0=parseFloat(a[2]),this.s1=parseFloat(a[3]),this.s2=parseFloat(a[4])),["!rnd",this.c,this.s0,this.s1,this.s2].join(",")}},c.RandomDataGenerator.prototype.constructor=c.RandomDataGenerator,c.QuadTree=function(a,b,c,d,e,f,g){ -this.maxObjects=10,this.maxLevels=4,this.level=0,this.bounds={},this.objects=[],this.nodes=[],this._empty=[],this.reset(a,b,c,d,e,f,g)},c.QuadTree.prototype={reset:function(a,b,c,d,e,f,g){this.maxObjects=e||10,this.maxLevels=f||4,this.level=g||0,this.bounds={x:Math.round(a),y:Math.round(b),width:c,height:d,subWidth:Math.floor(c/2),subHeight:Math.floor(d/2),right:Math.round(a)+Math.floor(c/2),bottom:Math.round(b)+Math.floor(d/2)},this.objects.length=0,this.nodes.length=0},populate:function(a){a.forEach(this.populateHandler,this,!0)},populateHandler:function(a){a.body&&a.exists&&this.insert(a.body)},split:function(){this.nodes[0]=new c.QuadTree(this.bounds.right,this.bounds.y,this.bounds.subWidth,this.bounds.subHeight,this.maxObjects,this.maxLevels,this.level+1),this.nodes[1]=new c.QuadTree(this.bounds.x,this.bounds.y,this.bounds.subWidth,this.bounds.subHeight,this.maxObjects,this.maxLevels,this.level+1),this.nodes[2]=new c.QuadTree(this.bounds.x,this.bounds.bottom,this.bounds.subWidth,this.bounds.subHeight,this.maxObjects,this.maxLevels,this.level+1),this.nodes[3]=new c.QuadTree(this.bounds.right,this.bounds.bottom,this.bounds.subWidth,this.bounds.subHeight,this.maxObjects,this.maxLevels,this.level+1)},insert:function(a){var b,c=0;if(null!=this.nodes[0]&&(b=this.getIndex(a),-1!==b))return void this.nodes[b].insert(a);if(this.objects.push(a),this.objects.length>this.maxObjects&&this.levelthis.bounds.bottom&&(b=2):a.x>this.bounds.right&&(a.ythis.bounds.bottom&&(b=3)),b},retrieve:function(a){if(a instanceof c.Rectangle)var b=this.objects,d=this.getIndex(a);else{if(!a.body)return this._empty;var b=this.objects,d=this.getIndex(a.body)}return this.nodes[0]&&(-1!==d?b=b.concat(this.nodes[d].retrieve(a)):(b=b.concat(this.nodes[0].retrieve(a)),b=b.concat(this.nodes[1].retrieve(a)),b=b.concat(this.nodes[2].retrieve(a)),b=b.concat(this.nodes[3].retrieve(a)))),b},clear:function(){this.objects.length=0;for(var a=this.nodes.length;a--;)this.nodes[a].clear(),this.nodes.splice(a,1);this.nodes.length=0}},c.QuadTree.prototype.constructor=c.QuadTree,c.Net=function(a){this.game=a},c.Net.prototype={getHostName:function(){return window.location&&window.location.hostname?window.location.hostname:null},checkDomainName:function(a){return-1!==window.location.hostname.indexOf(a)},updateQueryString:function(a,b,c,d){void 0===c&&(c=!1),(void 0===d||""===d)&&(d=window.location.href);var e="",f=new RegExp("([?|&])"+a+"=.*?(&|#|$)(.*)","gi");if(f.test(d))e="undefined"!=typeof b&&null!==b?d.replace(f,"$1"+a+"="+b+"$2$3"):d.replace(f,"$1$3").replace(/(&|\?)$/,"");else if("undefined"!=typeof b&&null!==b){var g=-1!==d.indexOf("?")?"&":"?",h=d.split("#");d=h[0]+g+a+"="+b,h[1]&&(d+="#"+h[1]),e=d}else e=d;return c?void(window.location.href=e):e},getQueryString:function(a){void 0===a&&(a="");var b={},c=location.search.substring(1).split("&");for(var d in c){var e=c[d].split("=");if(e.length>1){if(a&&a==this.decodeURI(e[0]))return this.decodeURI(e[1]);b[this.decodeURI(e[0])]=this.decodeURI(e[1])}}return b},decodeURI:function(a){return decodeURIComponent(a.replace(/\+/g," "))}},c.Net.prototype.constructor=c.Net,c.TweenManager=function(a){this.game=a,this.frameBased=!1,this._tweens=[],this._add=[],this.easeMap={Power0:c.Easing.Power0,Power1:c.Easing.Power1,Power2:c.Easing.Power2,Power3:c.Easing.Power3,Power4:c.Easing.Power4,Linear:c.Easing.Linear.None,Quad:c.Easing.Quadratic.Out,Cubic:c.Easing.Cubic.Out,Quart:c.Easing.Quartic.Out,Quint:c.Easing.Quintic.Out,Sine:c.Easing.Sinusoidal.Out,Expo:c.Easing.Exponential.Out,Circ:c.Easing.Circular.Out,Elastic:c.Easing.Elastic.Out,Back:c.Easing.Back.Out,Bounce:c.Easing.Bounce.Out,"Quad.easeIn":c.Easing.Quadratic.In,"Cubic.easeIn":c.Easing.Cubic.In,"Quart.easeIn":c.Easing.Quartic.In,"Quint.easeIn":c.Easing.Quintic.In,"Sine.easeIn":c.Easing.Sinusoidal.In,"Expo.easeIn":c.Easing.Exponential.In,"Circ.easeIn":c.Easing.Circular.In,"Elastic.easeIn":c.Easing.Elastic.In,"Back.easeIn":c.Easing.Back.In,"Bounce.easeIn":c.Easing.Bounce.In,"Quad.easeOut":c.Easing.Quadratic.Out,"Cubic.easeOut":c.Easing.Cubic.Out,"Quart.easeOut":c.Easing.Quartic.Out,"Quint.easeOut":c.Easing.Quintic.Out,"Sine.easeOut":c.Easing.Sinusoidal.Out,"Expo.easeOut":c.Easing.Exponential.Out,"Circ.easeOut":c.Easing.Circular.Out,"Elastic.easeOut":c.Easing.Elastic.Out,"Back.easeOut":c.Easing.Back.Out,"Bounce.easeOut":c.Easing.Bounce.Out,"Quad.easeInOut":c.Easing.Quadratic.InOut,"Cubic.easeInOut":c.Easing.Cubic.InOut,"Quart.easeInOut":c.Easing.Quartic.InOut,"Quint.easeInOut":c.Easing.Quintic.InOut,"Sine.easeInOut":c.Easing.Sinusoidal.InOut,"Expo.easeInOut":c.Easing.Exponential.InOut,"Circ.easeInOut":c.Easing.Circular.InOut,"Elastic.easeInOut":c.Easing.Elastic.InOut,"Back.easeInOut":c.Easing.Back.InOut,"Bounce.easeInOut":c.Easing.Bounce.InOut},this.game.onPause.add(this._pauseAll,this),this.game.onResume.add(this._resumeAll,this)},c.TweenManager.prototype={getAll:function(){return this._tweens},removeAll:function(){for(var a=0;ad;d++)this.removeFrom(a[d]);else if(a.type===c.GROUP&&b)for(var d=0,e=a.children.length;e>d;d++)this.removeFrom(a.children[d]);else{for(d=0,e=this._tweens.length;e>d;d++)a===this._tweens[d].target&&this.remove(this._tweens[d]);for(d=0,e=this._add.length;e>d;d++)a===this._add[d].target&&this.remove(this._add[d])}},add:function(a){a._manager=this,this._add.push(a)},create:function(a){return new c.Tween(a,this.game,this)},remove:function(a){var b=this._tweens.indexOf(a);-1!==b?this._tweens[b].pendingDelete=!0:(b=this._add.indexOf(a),-1!==b&&(this._add[b].pendingDelete=!0))},update:function(){var a=this._add.length,b=this._tweens.length;if(0===b&&0===a)return!1;for(var c=0;b>c;)this._tweens[c].update(this.game.time.time)?c++:(this._tweens.splice(c,1),b--);return a>0&&(this._tweens=this._tweens.concat(this._add),this._add.length=0),!0},isTweening:function(a){return this._tweens.some(function(b){return b.target===a})},_pauseAll:function(){for(var a=this._tweens.length-1;a>=0;a--)this._tweens[a]._pause()},_resumeAll:function(){for(var a=this._tweens.length-1;a>=0;a--)this._tweens[a]._resume()},pauseAll:function(){for(var a=this._tweens.length-1;a>=0;a--)this._tweens[a].pause()},resumeAll:function(){for(var a=this._tweens.length-1;a>=0;a--)this._tweens[a].resume(!0)}},c.TweenManager.prototype.constructor=c.TweenManager,c.Tween=function(a,b,d){this.game=b,this.target=a,this.manager=d,this.timeline=[],this.reverse=!1,this.timeScale=1,this.repeatCounter=0,this.pendingDelete=!1,this.onStart=new c.Signal,this.onLoop=new c.Signal,this.onRepeat=new c.Signal,this.onChildComplete=new c.Signal,this.onComplete=new c.Signal,this.isRunning=!1,this.current=0,this.properties={},this.chainedTween=null,this.isPaused=!1,this.frameBased=d.frameBased,this._onUpdateCallback=null,this._onUpdateCallbackContext=null,this._pausedTime=0,this._codePaused=!1,this._hasStarted=!1},c.Tween.prototype={to:function(a,b,d,e,f,g,h){return(void 0===b||0>=b)&&(b=1e3),(void 0===d||null===d)&&(d=c.Easing.Default),void 0===e&&(e=!1),void 0===f&&(f=0),void 0===g&&(g=0),void 0===h&&(h=!1),"string"==typeof d&&this.manager.easeMap[d]&&(d=this.manager.easeMap[d]),this.isRunning?(console.warn("Phaser.Tween.to cannot be called after Tween.start"),this):(this.timeline.push(new c.TweenData(this).to(a,b,d,f,g,h)),e&&this.start(),this)},from:function(a,b,d,e,f,g,h){return void 0===b&&(b=1e3),(void 0===d||null===d)&&(d=c.Easing.Default),void 0===e&&(e=!1),void 0===f&&(f=0),void 0===g&&(g=0),void 0===h&&(h=!1),"string"==typeof d&&this.manager.easeMap[d]&&(d=this.manager.easeMap[d]),this.isRunning?(console.warn("Phaser.Tween.from cannot be called after Tween.start"),this):(this.timeline.push(new c.TweenData(this).from(a,b,d,f,g,h)),e&&this.start(),this)},start:function(a){if(void 0===a&&(a=0),null===this.game||null===this.target||0===this.timeline.length||this.isRunning)return this;for(var b=0;ba||a>this.timeline.length-1)&&(a=0),this.current=a,this.timeline[this.current].start(),this},stop:function(a){return void 0===a&&(a=!1),this.isRunning=!1,this._onUpdateCallback=null,this._onUpdateCallbackContext=null,a&&(this.onComplete.dispatch(this.target,this),this._hasStarted=!1,this.chainedTween&&this.chainedTween.start()),this.manager.remove(this),this},updateTweenData:function(a,b,c){if(0===this.timeline.length)return this;if(void 0===c&&(c=0),-1===c)for(var d=0;d0?arguments[a-1].chainedTween=arguments[a]:this.chainedTween=arguments[a];return this},loop:function(a){return void 0===a&&(a=!0),this.repeatCounter=a?-1:0,this},onUpdateCallback:function(a,b){return this._onUpdateCallback=a,this._onUpdateCallbackContext=b,this},pause:function(){this.isPaused=!0,this._codePaused=!0,this._pausedTime=this.game.time.time},_pause:function(){this._codePaused||(this.isPaused=!0,this._pausedTime=this.game.time.time)},resume:function(){if(this.isPaused){this.isPaused=!1,this._codePaused=!1;for(var a=0;a0?(this.repeatCounter--,this.timeline[this.current].start(),this.onRepeat.dispatch(this.target,this),!0):(this.isRunning=!1,this.onComplete.dispatch(this.target,this),this._hasStarted=!1,this.chainedTween&&this.chainedTween.start(),!1):(this.onChildComplete.dispatch(this.target,this),this.timeline[this.current].start(),!0)}},generateData:function(a,b){if(null===this.game||null===this.target)return null;void 0===a&&(a=60),void 0===b&&(b=[]);for(var c=0;c0?this.isRunning=!1:this.isRunning=!0,this.isFrom)for(var a in this.vStartCache)this.vStart[a]=this.vEndCache[a],this.vEnd[a]=this.vStartCache[a],this.parent.target[a]=this.vStart[a];return this.value=0,this.yoyoCounter=0,this.repeatCounter=this.repeatTotal,this},loadValues:function(){for(var a in this.parent.properties){if(this.vStart[a]=this.parent.properties[a],Array.isArray(this.vEnd[a])){if(0===this.vEnd[a].length)continue;0===this.percent&&(this.vEnd[a]=[this.vStart[a]].concat(this.vEnd[a]))}"undefined"!=typeof this.vEnd[a]?("string"==typeof this.vEnd[a]&&(this.vEnd[a]=this.vStart[a]+parseFloat(this.vEnd[a],10)),this.parent.properties[a]=this.vEnd[a]):this.vEnd[a]=this.vStart[a],this.vStartCache[a]=this.vStart[a],this.vEndCache[a]=this.vEnd[a]}return this},update:function(a){if(this.isRunning){if(a=this.startTime))return c.TweenData.PENDING;this.isRunning=!0}var b=this.parent.frameBased?this.game.time.physicsElapsedMS:this.game.time.elapsedMS;this.parent.reverse?(this.dt-=b*this.parent.timeScale,this.dt=Math.max(this.dt,0)):(this.dt+=b*this.parent.timeScale,this.dt=Math.min(this.dt,this.duration)),this.percent=this.dt/this.duration,this.value=this.easingFunction(this.percent);for(var d in this.vEnd){var e=this.vStart[d],f=this.vEnd[d];Array.isArray(f)?this.parent.target[d]=this.interpolationFunction.call(this.interpolationContext,f,this.value):this.parent.target[d]=e+(f-e)*this.value}return!this.parent.reverse&&1===this.percent||this.parent.reverse&&0===this.percent?this.repeat():c.TweenData.RUNNING},generateData:function(a){this.parent.reverse?this.dt=this.duration:this.dt=0;var b=[],c=!1,d=1/a*1e3;do{this.parent.reverse?(this.dt-=d,this.dt=Math.max(this.dt,0)):(this.dt+=d,this.dt=Math.min(this.dt,this.duration)),this.percent=this.dt/this.duration,this.value=this.easingFunction(this.percent);var e={};for(var f in this.vEnd){var g=this.vStart[f],h=this.vEnd[f];Array.isArray(h)?e[f]=this.interpolationFunction(h,this.value):e[f]=g+(h-g)*this.value}b.push(e),(!this.parent.reverse&&1===this.percent||this.parent.reverse&&0===this.percent)&&(c=!0)}while(!c);if(this.yoyo){var i=b.slice();i.reverse(),b=b.concat(i)}return b},repeat:function(){if(this.yoyo){if(this.inReverse&&0===this.repeatCounter){for(var a in this.vStartCache)this.vStart[a]=this.vStartCache[a],this.vEnd[a]=this.vEndCache[a];return this.inReverse=!1,c.TweenData.COMPLETE}this.inReverse=!this.inReverse}else if(0===this.repeatCounter)return c.TweenData.COMPLETE;if(this.inReverse)for(var a in this.vStartCache)this.vStart[a]=this.vEndCache[a],this.vEnd[a]=this.vStartCache[a];else{for(var a in this.vStartCache)this.vStart[a]=this.vStartCache[a],this.vEnd[a]=this.vEndCache[a];this.repeatCounter>0&&this.repeatCounter--}return this.startTime=this.game.time.time,this.yoyo&&this.inReverse?this.startTime+=this.yoyoDelay:this.inReverse||(this.startTime+=this.repeatDelay),this.parent.reverse?this.dt=this.duration:this.dt=0,c.TweenData.LOOPED}},c.TweenData.prototype.constructor=c.TweenData,c.Easing={Linear:{None:function(a){return a}},Quadratic:{In:function(a){return a*a},Out:function(a){return a*(2-a)},InOut:function(a){return(a*=2)<1?.5*a*a:-.5*(--a*(a-2)-1)}},Cubic:{In:function(a){return a*a*a},Out:function(a){return--a*a*a+1},InOut:function(a){return(a*=2)<1?.5*a*a*a:.5*((a-=2)*a*a+2)}},Quartic:{In:function(a){return a*a*a*a},Out:function(a){return 1- --a*a*a*a},InOut:function(a){return(a*=2)<1?.5*a*a*a*a:-.5*((a-=2)*a*a*a-2)}},Quintic:{In:function(a){return a*a*a*a*a},Out:function(a){return--a*a*a*a*a+1},InOut:function(a){return(a*=2)<1?.5*a*a*a*a*a:.5*((a-=2)*a*a*a*a+2)}},Sinusoidal:{In:function(a){return 0===a?0:1===a?1:1-Math.cos(a*Math.PI/2)},Out:function(a){return 0===a?0:1===a?1:Math.sin(a*Math.PI/2)},InOut:function(a){return 0===a?0:1===a?1:.5*(1-Math.cos(Math.PI*a))}},Exponential:{In:function(a){return 0===a?0:Math.pow(1024,a-1)},Out:function(a){return 1===a?1:1-Math.pow(2,-10*a)},InOut:function(a){return 0===a?0:1===a?1:(a*=2)<1?.5*Math.pow(1024,a-1):.5*(-Math.pow(2,-10*(a-1))+2)}},Circular:{In:function(a){return 1-Math.sqrt(1-a*a)},Out:function(a){return Math.sqrt(1- --a*a)},InOut:function(a){return(a*=2)<1?-.5*(Math.sqrt(1-a*a)-1):.5*(Math.sqrt(1-(a-=2)*a)+1)}},Elastic:{In:function(a){var b,c=.1,d=.4;return 0===a?0:1===a?1:(!c||1>c?(c=1,b=d/4):b=d*Math.asin(1/c)/(2*Math.PI),-(c*Math.pow(2,10*(a-=1))*Math.sin((a-b)*(2*Math.PI)/d)))},Out:function(a){var b,c=.1,d=.4;return 0===a?0:1===a?1:(!c||1>c?(c=1,b=d/4):b=d*Math.asin(1/c)/(2*Math.PI),c*Math.pow(2,-10*a)*Math.sin((a-b)*(2*Math.PI)/d)+1)},InOut:function(a){var b,c=.1,d=.4;return 0===a?0:1===a?1:(!c||1>c?(c=1,b=d/4):b=d*Math.asin(1/c)/(2*Math.PI),(a*=2)<1?-.5*(c*Math.pow(2,10*(a-=1))*Math.sin((a-b)*(2*Math.PI)/d)):c*Math.pow(2,-10*(a-=1))*Math.sin((a-b)*(2*Math.PI)/d)*.5+1)}},Back:{In:function(a){var b=1.70158;return a*a*((b+1)*a-b)},Out:function(a){var b=1.70158;return--a*a*((b+1)*a+b)+1},InOut:function(a){var b=2.5949095;return(a*=2)<1?.5*(a*a*((b+1)*a-b)):.5*((a-=2)*a*((b+1)*a+b)+2)}},Bounce:{In:function(a){return 1-c.Easing.Bounce.Out(1-a)},Out:function(a){return 1/2.75>a?7.5625*a*a:2/2.75>a?7.5625*(a-=1.5/2.75)*a+.75:2.5/2.75>a?7.5625*(a-=2.25/2.75)*a+.9375:7.5625*(a-=2.625/2.75)*a+.984375},InOut:function(a){return.5>a?.5*c.Easing.Bounce.In(2*a):.5*c.Easing.Bounce.Out(2*a-1)+.5}}},c.Easing.Default=c.Easing.Linear.None,c.Easing.Power0=c.Easing.Linear.None,c.Easing.Power1=c.Easing.Quadratic.Out,c.Easing.Power2=c.Easing.Cubic.Out,c.Easing.Power3=c.Easing.Quartic.Out,c.Easing.Power4=c.Easing.Quintic.Out,c.Time=function(a){this.game=a,this.time=0,this.prevTime=0,this.now=0,this.elapsed=0,this.elapsedMS=0,this.physicsElapsed=1/60,this.physicsElapsedMS=1/60*1e3,this.desiredFpsMult=1/60,this._desiredFps=60,this.suggestedFps=this.desiredFps,this.slowMotion=1,this.advancedTiming=!1,this.frames=0,this.fps=0,this.fpsMin=1e3,this.fpsMax=0,this.msMin=1e3,this.msMax=0,this.pauseDuration=0,this.timeToCall=0,this.timeExpected=0,this.events=new c.Timer(this.game,!1),this._frameCount=0,this._elapsedAccumulator=0,this._started=0,this._timeLastSecond=0,this._pauseStarted=0,this._justResumed=!1,this._timers=[]},c.Time.prototype={boot:function(){this._started=Date.now(),this.time=Date.now(),this.events.start(),this.timeExpected=this.time},add:function(a){return this._timers.push(a),a},create:function(a){void 0===a&&(a=!0);var b=new c.Timer(this.game,a);return this._timers.push(b),b},removeAll:function(){for(var a=0;aa;)this._timers[a].update(this.time)?a++:(this._timers.splice(a,1),b--)},updateAdvancedTiming:function(){this._frameCount++,this._elapsedAccumulator+=this.elapsed,this._frameCount>=2*this._desiredFps&&(this.suggestedFps=5*Math.floor(200/(this._elapsedAccumulator/this._frameCount)),this._frameCount=0,this._elapsedAccumulator=0),this.msMin=Math.min(this.msMin,this.elapsed),this.msMax=Math.max(this.msMax,this.elapsed),this.frames++,this.now>this._timeLastSecond+1e3&&(this.fps=Math.round(1e3*this.frames/(this.now-this._timeLastSecond)),this.fpsMin=Math.min(this.fpsMin,this.fps),this.fpsMax=Math.max(this.fpsMax,this.fps),this._timeLastSecond=this.now,this.frames=0)},gamePaused:function(){this._pauseStarted=Date.now(),this.events.pause();for(var a=this._timers.length;a--;)this._timers[a]._pause()},gameResumed:function(){this.time=Date.now(),this.pauseDuration=this.time-this._pauseStarted,this.events.resume();for(var a=this._timers.length;a--;)this._timers[a]._resume()},totalElapsedSeconds:function(){return.001*(this.time-this._started)},elapsedSince:function(a){return this.time-a},elapsedSecondsSince:function(a){return.001*(this.time-a)},reset:function(){this._started=this.time,this.removeAll()}},Object.defineProperty(c.Time.prototype,"desiredFps",{get:function(){return this._desiredFps},set:function(a){this._desiredFps=a,this.physicsElapsed=1/a,this.physicsElapsedMS=1e3*this.physicsElapsed,this.desiredFpsMult=1/a}}),c.Time.prototype.constructor=c.Time,c.Timer=function(a,b){void 0===b&&(b=!0),this.game=a,this.running=!1,this.autoDestroy=b,this.expired=!1,this.elapsed=0,this.events=[],this.onComplete=new c.Signal,this.nextTick=0,this.timeCap=1e3,this.paused=!1,this._codePaused=!1,this._started=0,this._pauseStarted=0,this._pauseTotal=0,this._now=Date.now(),this._len=0,this._marked=0,this._i=0,this._diff=0,this._newTick=0},c.Timer.MINUTE=6e4,c.Timer.SECOND=1e3,c.Timer.HALF=500,c.Timer.QUARTER=250,c.Timer.prototype={create:function(a,b,d,e,f,g){a=Math.round(a);var h=a;h+=0===this._now?this.game.time.time:this._now;var i=new c.TimerEvent(this,a,h,d,b,e,f,g);return this.events.push(i),this.order(),this.expired=!1,i},add:function(a,b,c){return this.create(a,!1,0,b,c,Array.prototype.slice.call(arguments,3))},repeat:function(a,b,c,d){return this.create(a,!1,b,c,d,Array.prototype.slice.call(arguments,4))},loop:function(a,b,c){return this.create(a,!0,0,b,c,Array.prototype.slice.call(arguments,3))},start:function(a){if(!this.running){this._started=this.game.time.time+(a||0),this.running=!0;for(var b=0;b0&&(this.events.sort(this.sortHandler),this.nextTick=this.events[0].tick)},sortHandler:function(a,b){return a.tickb.tick?1:0},clearPendingEvents:function(){for(this._i=this.events.length;this._i--;)this.events[this._i].pendingDelete&&this.events.splice(this._i,1);this._len=this.events.length,this._i=0},update:function(a){if(this.paused)return!0;if(this.elapsed=a-this._now,this._now=a,this.elapsed>this.timeCap&&this.adjustEvents(a-this.elapsed),this._marked=0,this.clearPendingEvents(),this.running&&this._now>=this.nextTick&&this._len>0){for(;this._i=this.events[this._i].tick&&!this.events[this._i].pendingDelete;)this._newTick=this._now+this.events[this._i].delay-(this._now-this.events[this._i].tick),this._newTick<0&&(this._newTick=this._now+this.events[this._i].delay),this.events[this._i].loop===!0?(this.events[this._i].tick=this._newTick,this.events[this._i].callback.apply(this.events[this._i].callbackContext,this.events[this._i].args)):this.events[this._i].repeatCount>0?(this.events[this._i].repeatCount--,this.events[this._i].tick=this._newTick,this.events[this._i].callback.apply(this.events[this._i].callbackContext,this.events[this._i].args)):(this._marked++,this.events[this._i].pendingDelete=!0,this.events[this._i].callback.apply(this.events[this._i].callbackContext,this.events[this._i].args)),this._i++;this.events.length>this._marked?this.order():(this.expired=!0,this.onComplete.dispatch(this))}return this.expired&&this.autoDestroy?!1:!0},pause:function(){this.running&&(this._codePaused=!0,this.paused||(this._pauseStarted=this.game.time.time,this.paused=!0))},_pause:function(){!this.paused&&this.running&&(this._pauseStarted=this.game.time.time,this.paused=!0)},adjustEvents:function(a){for(var b=0;bc&&(c=0),this.events[b].tick=this._now+c}var d=this.nextTick-a;0>d?this.nextTick=this._now:this.nextTick=this._now+d},resume:function(){if(this.paused){var a=this.game.time.time;this._pauseTotal+=a-this._now,this._now=a,this.adjustEvents(this._pauseStarted),this.paused=!1,this._codePaused=!1}},_resume:function(){this._codePaused||this.resume()},removeAll:function(){this.onComplete.removeAll(),this.events.length=0,this._len=0,this._i=0},destroy:function(){this.onComplete.removeAll(),this.running=!1,this.events=[],this._len=0,this._i=0}},Object.defineProperty(c.Timer.prototype,"next",{get:function(){return this.nextTick}}),Object.defineProperty(c.Timer.prototype,"duration",{get:function(){return this.running&&this.nextTick>this._now?this.nextTick-this._now:0}}),Object.defineProperty(c.Timer.prototype,"length",{get:function(){return this.events.length}}),Object.defineProperty(c.Timer.prototype,"ms",{get:function(){return this.running?this._now-this._started-this._pauseTotal:0}}),Object.defineProperty(c.Timer.prototype,"seconds",{get:function(){return this.running?.001*this.ms:0}}),c.Timer.prototype.constructor=c.Timer,c.TimerEvent=function(a,b,c,d,e,f,g,h){this.timer=a,this.delay=b,this.tick=c,this.repeatCount=d-1,this.loop=e,this.callback=f,this.callbackContext=g,this.args=h,this.pendingDelete=!1},c.TimerEvent.prototype.constructor=c.TimerEvent,c.AnimationManager=function(a){this.sprite=a,this.game=a.game,this.currentFrame=null,this.currentAnim=null,this.updateIfVisible=!0,this.isLoaded=!1,this._frameData=null,this._anims={},this._outputFrames=[]},c.AnimationManager.prototype={loadFrameData:function(a,b){if(void 0===a)return!1;if(this.isLoaded)for(var c in this._anims)this._anims[c].updateFrameData(a);return this._frameData=a,void 0===b||null===b?this.frame=0:"string"==typeof b?this.frameName=b:this.frame=b,this.isLoaded=!0,!0},copyFrameData:function(a,b){if(this._frameData=a.clone(),this.isLoaded)for(var c in this._anims)this._anims[c].updateFrameData(this._frameData);return void 0===b||null===b?this.frame=0:"string"==typeof b?this.frameName=b:this.frame=b,this.isLoaded=!0,!0},add:function(a,b,d,e,f){return b=b||[],d=d||60,void 0===e&&(e=!1),void 0===f&&(f=b&&"number"==typeof b[0]?!0:!1),this._outputFrames=[],this._frameData.getFrameIndexes(b,f,this._outputFrames),this._anims[a]=new c.Animation(this.game,this.sprite,a,this._frameData,this._outputFrames,d,e),this.currentAnim=this._anims[a],this.sprite.tilingTexture&&(this.sprite.refreshTexture=!0),this._anims[a]},validateFrames:function(a,b){void 0===b&&(b=!0);for(var c=0;cthis._frameData.total)return!1}else if(this._frameData.checkFrameName(a[c])===!1)return!1;return!0},play:function(a,b,c,d){return this._anims[a]?this.currentAnim===this._anims[a]?this.currentAnim.isPlaying===!1?(this.currentAnim.paused=!1,this.currentAnim.play(b,c,d)):this.currentAnim:(this.currentAnim&&this.currentAnim.isPlaying&&this.currentAnim.stop(),this.currentAnim=this._anims[a],this.currentAnim.paused=!1,this.currentFrame=this.currentAnim.currentFrame,this.currentAnim.play(b,c,d)):void 0},stop:function(a,b){void 0===b&&(b=!1),!this.currentAnim||"string"==typeof a&&a!==this.currentAnim.name||this.currentAnim.stop(b)},update:function(){return this.updateIfVisible&&!this.sprite.visible?!1:this.currentAnim&&this.currentAnim.update()?(this.currentFrame=this.currentAnim.currentFrame,!0):!1},next:function(a){this.currentAnim&&(this.currentAnim.next(a),this.currentFrame=this.currentAnim.currentFrame)},previous:function(a){this.currentAnim&&(this.currentAnim.previous(a),this.currentFrame=this.currentAnim.currentFrame)},getAnimation:function(a){return"string"==typeof a&&this._anims[a]?this._anims[a]:null},refreshFrame:function(){this.sprite.setTexture(PIXI.TextureCache[this.currentFrame.uuid])},destroy:function(){var a=null;for(var a in this._anims)this._anims.hasOwnProperty(a)&&this._anims[a].destroy();this._anims={},this._outputFrames=[],this._frameData=null,this.currentAnim=null,this.currentFrame=null,this.sprite=null,this.game=null}},c.AnimationManager.prototype.constructor=c.AnimationManager,Object.defineProperty(c.AnimationManager.prototype,"frameData",{get:function(){return this._frameData}}),Object.defineProperty(c.AnimationManager.prototype,"frameTotal",{get:function(){return this._frameData.total}}),Object.defineProperty(c.AnimationManager.prototype,"paused",{get:function(){return this.currentAnim.isPaused},set:function(a){this.currentAnim.paused=a}}),Object.defineProperty(c.AnimationManager.prototype,"name",{get:function(){return this.currentAnim?this.currentAnim.name:void 0}}),Object.defineProperty(c.AnimationManager.prototype,"frame",{get:function(){return this.currentFrame?this.currentFrame.index:void 0},set:function(a){"number"==typeof a&&this._frameData&&null!==this._frameData.getFrame(a)&&(this.currentFrame=this._frameData.getFrame(a),this.currentFrame&&this.sprite.setFrame(this.currentFrame))}}),Object.defineProperty(c.AnimationManager.prototype,"frameName",{get:function(){return this.currentFrame?this.currentFrame.name:void 0},set:function(a){"string"==typeof a&&this._frameData&&null!==this._frameData.getFrameByName(a)?(this.currentFrame=this._frameData.getFrameByName(a),this.currentFrame&&(this._frameIndex=this.currentFrame.index,this.sprite.setFrame(this.currentFrame))):console.warn("Cannot set frameName: "+a)}}),c.Animation=function(a,b,d,e,f,g,h){void 0===h&&(h=!1),this.game=a,this._parent=b,this._frameData=e,this.name=d,this._frames=[],this._frames=this._frames.concat(f),this.delay=1e3/g,this.loop=h,this.loopCount=0,this.killOnComplete=!1,this.isFinished=!1,this.isPlaying=!1,this.isPaused=!1,this._pauseStartTime=0,this._frameIndex=0,this._frameDiff=0,this._frameSkip=1,this.currentFrame=this._frameData.getFrame(this._frames[this._frameIndex]),this.onStart=new c.Signal,this.onUpdate=null,this.onComplete=new c.Signal,this.onLoop=new c.Signal,this.isReversed=!1,this.game.onPause.add(this.onPause,this),this.game.onResume.add(this.onResume,this)},c.Animation.prototype={play:function(a,b,c){return"number"==typeof a&&(this.delay=1e3/a),"boolean"==typeof b&&(this.loop=b),"undefined"!=typeof c&&(this.killOnComplete=c),this.isPlaying=!0,this.isFinished=!1,this.paused=!1,this.loopCount=0,this._timeLastFrame=this.game.time.time,this._timeNextFrame=this.game.time.time+this.delay, -this._frameIndex=this.isReversed?this._frames.length-1:0,this.updateCurrentFrame(!1,!0),this._parent.events.onAnimationStart$dispatch(this._parent,this),this.onStart.dispatch(this._parent,this),this._parent.animations.currentAnim=this,this._parent.animations.currentFrame=this.currentFrame,this},restart:function(){this.isPlaying=!0,this.isFinished=!1,this.paused=!1,this.loopCount=0,this._timeLastFrame=this.game.time.time,this._timeNextFrame=this.game.time.time+this.delay,this._frameIndex=0,this.currentFrame=this._frameData.getFrame(this._frames[this._frameIndex]),this._parent.setFrame(this.currentFrame),this._parent.animations.currentAnim=this,this._parent.animations.currentFrame=this.currentFrame,this.onStart.dispatch(this._parent,this)},reverse:function(){return this.reversed=!this.reversed,this},reverseOnce:function(){return this.onComplete.addOnce(this.reverse.bind(this)),this.reverse()},setFrame:function(a,b){var c;if(void 0===b&&(b=!1),"string"==typeof a)for(var d=0;d=this._timeNextFrame?(this._frameSkip=1,this._frameDiff=this.game.time.time-this._timeNextFrame,this._timeLastFrame=this.game.time.time,this._frameDiff>this.delay&&(this._frameSkip=Math.floor(this._frameDiff/this.delay),this._frameDiff-=this._frameSkip*this.delay),this._timeNextFrame=this.game.time.time+(this.delay-this._frameDiff),this.isReversed?this._frameIndex-=this._frameSkip:this._frameIndex+=this._frameSkip,!this.isReversed&&this._frameIndex>=this._frames.length||this.isReversed&&this._frameIndex<=-1?this.loop?(this._frameIndex=Math.abs(this._frameIndex)%this._frames.length,this.isReversed&&(this._frameIndex=this._frames.length-1-this._frameIndex),this.currentFrame=this._frameData.getFrame(this._frames[this._frameIndex]),this.currentFrame&&this._parent.setFrame(this.currentFrame),this.loopCount++,this._parent.events.onAnimationLoop$dispatch(this._parent,this),this.onLoop.dispatch(this._parent,this),this.onUpdate?(this.onUpdate.dispatch(this,this.currentFrame),!!this._frameData):!0):(this.complete(),!1):this.updateCurrentFrame(!0)):!1},updateCurrentFrame:function(a,b){if(void 0===b&&(b=!1),!this._frameData)return!1;var c=this.currentFrame.index;return this.currentFrame=this._frameData.getFrame(this._frames[this._frameIndex]),this.currentFrame&&(b||!b&&c!==this.currentFrame.index)&&this._parent.setFrame(this.currentFrame),this.onUpdate&&a?(this.onUpdate.dispatch(this,this.currentFrame),!!this._frameData):!0},next:function(a){void 0===a&&(a=1);var b=this._frameIndex+a;b>=this._frames.length&&(this.loop?b%=this._frames.length:b=this._frames.length-1),b!==this._frameIndex&&(this._frameIndex=b,this.updateCurrentFrame(!0))},previous:function(a){void 0===a&&(a=1);var b=this._frameIndex-a;0>b&&(this.loop?b=this._frames.length+b:b++),b!==this._frameIndex&&(this._frameIndex=b,this.updateCurrentFrame(!0))},updateFrameData:function(a){this._frameData=a,this.currentFrame=this._frameData?this._frameData.getFrame(this._frames[this._frameIndex%this._frames.length]):null},destroy:function(){this._frameData&&(this.game.onPause.remove(this.onPause,this),this.game.onResume.remove(this.onResume,this),this.game=null,this._parent=null,this._frames=null,this._frameData=null,this.currentFrame=null,this.isPlaying=!1,this.onStart.dispose(),this.onLoop.dispose(),this.onComplete.dispose(),this.onUpdate&&this.onUpdate.dispose())},complete:function(){this._frameIndex=this._frames.length-1,this.currentFrame=this._frameData.getFrame(this._frames[this._frameIndex]),this.isPlaying=!1,this.isFinished=!0,this.paused=!1,this._parent.events.onAnimationComplete$dispatch(this._parent,this),this.onComplete.dispatch(this._parent,this),this.killOnComplete&&this._parent.kill()}},c.Animation.prototype.constructor=c.Animation,Object.defineProperty(c.Animation.prototype,"paused",{get:function(){return this.isPaused},set:function(a){this.isPaused=a,a?this._pauseStartTime=this.game.time.time:this.isPlaying&&(this._timeNextFrame=this.game.time.time+this.delay)}}),Object.defineProperty(c.Animation.prototype,"reversed",{get:function(){return this.isReversed},set:function(a){this.isReversed=a}}),Object.defineProperty(c.Animation.prototype,"frameTotal",{get:function(){return this._frames.length}}),Object.defineProperty(c.Animation.prototype,"frame",{get:function(){return null!==this.currentFrame?this.currentFrame.index:this._frameIndex},set:function(a){this.currentFrame=this._frameData.getFrame(this._frames[a]),null!==this.currentFrame&&(this._frameIndex=a,this._parent.setFrame(this.currentFrame),this.onUpdate&&this.onUpdate.dispatch(this,this.currentFrame))}}),Object.defineProperty(c.Animation.prototype,"speed",{get:function(){return Math.round(1e3/this.delay)},set:function(a){a>=1&&(this.delay=1e3/a)}}),Object.defineProperty(c.Animation.prototype,"enableUpdate",{get:function(){return null!==this.onUpdate},set:function(a){a&&null===this.onUpdate?this.onUpdate=new c.Signal:a||null===this.onUpdate||(this.onUpdate.dispose(),this.onUpdate=null)}}),c.Animation.generateFrameNames=function(a,b,d,e,f){void 0===e&&(e="");var g=[],h="";if(d>b)for(var i=b;d>=i;i++)h="number"==typeof f?c.Utils.pad(i.toString(),f,"0",1):i.toString(),h=a+h+e,g.push(h);else for(var i=b;i>=d;i--)h="number"==typeof f?c.Utils.pad(i.toString(),f,"0",1):i.toString(),h=a+h+e,g.push(h);return g},c.Frame=function(a,b,d,e,f,g){this.index=a,this.x=b,this.y=d,this.width=e,this.height=f,this.name=g,this.centerX=Math.floor(e/2),this.centerY=Math.floor(f/2),this.distance=c.Math.distance(0,0,e,f),this.rotated=!1,this.rotationDirection="cw",this.trimmed=!1,this.sourceSizeW=e,this.sourceSizeH=f,this.spriteSourceSizeX=0,this.spriteSourceSizeY=0,this.spriteSourceSizeW=0,this.spriteSourceSizeH=0,this.right=this.x+this.width,this.bottom=this.y+this.height},c.Frame.prototype={resize:function(a,b){this.width=a,this.height=b,this.centerX=Math.floor(a/2),this.centerY=Math.floor(b/2),this.distance=c.Math.distance(0,0,a,b),this.sourceSizeW=a,this.sourceSizeH=b,this.right=this.x+a,this.bottom=this.y+b},setTrim:function(a,b,c,d,e,f,g){this.trimmed=a,a&&(this.sourceSizeW=b,this.sourceSizeH=c,this.centerX=Math.floor(b/2),this.centerY=Math.floor(c/2),this.spriteSourceSizeX=d,this.spriteSourceSizeY=e,this.spriteSourceSizeW=f,this.spriteSourceSizeH=g)},clone:function(){var a=new c.Frame(this.index,this.x,this.y,this.width,this.height,this.name);for(var b in this)this.hasOwnProperty(b)&&(a[b]=this[b]);return a},getRect:function(a){return void 0===a?a=new c.Rectangle(this.x,this.y,this.width,this.height):a.setTo(this.x,this.y,this.width,this.height),a}},c.Frame.prototype.constructor=c.Frame,c.FrameData=function(){this._frames=[],this._frameNames=[]},c.FrameData.prototype={addFrame:function(a){return a.index=this._frames.length,this._frames.push(a),""!==a.name&&(this._frameNames[a.name]=a.index),a},getFrame:function(a){return a>=this._frames.length&&(a=0),this._frames[a]},getFrameByName:function(a){return"number"==typeof this._frameNames[a]?this._frames[this._frameNames[a]]:null},checkFrameName:function(a){return null==this._frameNames[a]?!1:!0},clone:function(){for(var a=new c.FrameData,b=0;b=d;d++)c.push(this._frames[d]);return c},getFrames:function(a,b,c){if(void 0===b&&(b=!0),void 0===c&&(c=[]),void 0===a||0===a.length)for(var d=0;d=d&&(d=Math.floor(-j/Math.min(-1,d))),0>=e&&(e=Math.floor(-k/Math.min(-1,e)));var l=Math.floor((j-g)/(d+h)),m=Math.floor((k-g)/(e+h)),n=l*m;if(-1!==f&&(n=f),0===j||0===k||d>j||e>k||0===n)return console.warn("Phaser.AnimationParser.spriteSheet: '"+b+"'s width/height zero or width/height < given frameWidth/frameHeight"),null;for(var o=new c.FrameData,p=g,q=g,r=0;n>r;r++)o.addFrame(new c.Frame(r,p,q,d,e,"")),p+=d+h,p+d>j&&(p=g,q+=e+h);return o},JSONData:function(a,b){if(!b.frames)return console.warn("Phaser.AnimationParser.JSONData: Invalid Texture Atlas JSON given, missing 'frames' array"),void console.log(b);for(var d,e=new c.FrameData,f=b.frames,g=0;g tag");for(var d,e,f,g,h,i,j,k,l,m,n,o=new c.FrameData,p=b.getElementsByTagName("SubTexture"),q=0;q-1},getAssetIndex:function(a,b){for(var c=-1,d=0;d-1?{index:c,file:this._fileList[c]}:!1},reset:function(a,b){void 0===b&&(b=!1),this.resetLocked||(a&&(this.preloadSprite=null),this.isLoading=!1,this._processingHead=0,this._fileList.length=0,this._flightQueue.length=0,this._fileLoadStarted=!1,this._totalFileCount=0,this._totalPackCount=0,this._loadedPackCount=0,this._loadedFileCount=0,b&&(this.onLoadStart.removeAll(),this.onLoadComplete.removeAll(),this.onPackComplete.removeAll(),this.onFileStart.removeAll(),this.onFileComplete.removeAll(),this.onFileError.removeAll()))},addToFileList:function(a,b,c,d,e,f){if(void 0===e&&(e=!1),void 0===b||""===b)return console.warn("Phaser.Loader: Invalid or no key given of type "+a),this;if(void 0===c||null===c){if(!f)return console.warn("Phaser.Loader: No URL given for file type: "+a+" key: "+b),this;c=b+f}var g={type:a,key:b,path:this.path,url:c,syncPoint:this._withSyncPointDepth>0,data:null,loading:!1,loaded:!1,error:!1};if(d)for(var h in d)g[h]=d[h];var i=this.getAssetIndex(a,b);if(e&&i>-1){var j=this._fileList[i];j.loading||j.loaded?(this._fileList.push(g),this._totalFileCount++):this._fileList[i]=g}else-1===i&&(this._fileList.push(g),this._totalFileCount++);return this},replaceInFileList:function(a,b,c,d){return this.addToFileList(a,b,c,d,!0)},pack:function(a,b,c,d){if(void 0===b&&(b=null),void 0===c&&(c=null),void 0===d&&(d=null),!b&&!c)return console.warn("Phaser.Loader.pack - Both url and data are null. One must be set."),this;var e={type:"packfile",key:a,url:b,path:this.path,syncPoint:!0,data:null,loading:!1,loaded:!1,error:!1,callbackContext:d};c&&("string"==typeof c&&(c=JSON.parse(c)),e.data=c||{},e.loaded=!0);for(var f=0;f=e||d&&this._loadedPackCount===this._totalPackCount)break}if(this.updateProgress(),this._processingHead>=this._fileList.length)this.finishedLoading();else if(!this._flightQueue.length){console.warn("Phaser.Loader - aborting: processing queue empty, loading may have stalled");var f=this;setTimeout(function(){f.finishedLoading(!0)},2e3)}},finishedLoading:function(a){this.hasLoaded||(this.hasLoaded=!0,this.isLoading=!1,a||this._fileLoadStarted||(this._fileLoadStarted=!0,this.onLoadStart.dispatch()),this.onLoadComplete.dispatch(),this.game.state.loadComplete(),this.reset())},asyncComplete:function(a,b){void 0===b&&(b=""),a.loaded=!0,a.error=!!b,b&&(a.errorMessage=b,console.warn("Phaser.Loader - "+a.type+"["+a.key+"]: "+b)),this.processLoadQueue()},processPack:function(a){var b=a.data[a.key];if(!b)return void console.warn("Phaser.Loader - "+a.key+": pack has data, but not for pack key");for(var d=0;d=400&&f.status<=599?e.call(g,a,f):d.call(g,a,f)}catch(b){g.hasLoaded?window.console&&console.error(b):g.asyncComplete(a,b.message||"Exception")}},f.onerror=function(){try{return e.call(g,a,f)}catch(b){g.hasLoaded?window.console&&console.error(b):g.asyncComplete(a,b.message||"Exception")}},a.requestObject=f,a.requestUrl=b,f.send()},xhrLoadWithXDR:function(a,b,c,d,e){this._warnedAboutXDomainRequest||this.game.device.ie&&!(this.game.device.ieVersion>=10)||(this._warnedAboutXDomainRequest=!0,console.warn("Phaser.Loader - using XDomainRequest outside of IE 9"));var f=new window.XDomainRequest;f.open("GET",b,!0),f.responseType=c,f.timeout=3e3,e=e||this.fileError;var g=this;f.onerror=function(){try{return e.call(g,a,f)}catch(b){g.asyncComplete(a,b.message||"Exception")}},f.ontimeout=function(){try{return e.call(g,a,f)}catch(b){g.asyncComplete(a,b.message||"Exception")}},f.onprogress=function(){},f.onload=function(){try{return 4==f.readyState&&f.status>=400&&f.status<=599?e.call(g,a,f):d.call(g,a,f)}catch(b){g.asyncComplete(a,b.message||"Exception")}},a.requestObject=f,a.requestUrl=b,setTimeout(function(){f.send()},0)},getVideoURL:function(a){for(var b=0;b=0&&(d=d.substr(0,d.indexOf("?")));var e=d.substr((Math.max(0,d.lastIndexOf("."))||1/0)+1);if(c=e.toLowerCase(),this.game.device.canPlayVideo(c))return a[b]}}return null},getAudioURL:function(a){if(this.game.sound.noAudio)return null;for(var b=0;b=0&&(d=d.substr(0,d.indexOf("?")));var e=d.substr((Math.max(0,d.lastIndexOf("."))||1/0)+1);if(c=e.toLowerCase(),this.game.device.canPlayAudio(c))return a[b]}}return null},fileError:function(a,b,c){var d=a.requestUrl||this.transformUrl(a.url,a),e="error loading asset from URL "+d;!c&&b&&(c=b.status),c&&(e=e+" ("+c+")"),this.asyncComplete(a,e)},fileComplete:function(a,b){var d=!0;switch(a.type){case"packfile":var e=JSON.parse(b.responseText);a.data=e||{};break;case"image":this.cache.addImage(a.key,a.url,a.data);break;case"spritesheet":this.cache.addSpriteSheet(a.key,a.url,a.data,a.frameWidth,a.frameHeight,a.frameMax,a.margin,a.spacing);break;case"textureatlas":if(null==a.atlasURL)this.cache.addTextureAtlas(a.key,a.url,a.data,a.atlasData,a.format);else if(d=!1,a.format==c.Loader.TEXTURE_ATLAS_JSON_ARRAY||a.format==c.Loader.TEXTURE_ATLAS_JSON_HASH||a.format==c.Loader.TEXTURE_ATLAS_JSON_PYXEL)this.xhrLoad(a,this.transformUrl(a.atlasURL,a),"text",this.jsonLoadComplete);else{if(a.format!=c.Loader.TEXTURE_ATLAS_XML_STARLING)throw new Error("Phaser.Loader. Invalid Texture Atlas format: "+a.format);this.xhrLoad(a,this.transformUrl(a.atlasURL,a),"text",this.xmlLoadComplete)}break;case"bitmapfont":a.atlasURL?(d=!1,this.xhrLoad(a,this.transformUrl(a.atlasURL,a),"text",function(a,b){var c;try{c=JSON.parse(b.responseText)}catch(d){}c?(a.atlasType="json",this.jsonLoadComplete(a,b)):(a.atlasType="xml",this.xmlLoadComplete(a,b))})):this.cache.addBitmapFont(a.key,a.url,a.data,a.atlasData,a.atlasType,a.xSpacing,a.ySpacing);break;case"video":if(a.asBlob)try{a.data=b.response}catch(f){throw new Error("Phaser.Loader. Unable to parse video file as Blob: "+a.key)}this.cache.addVideo(a.key,a.url,a.data,a.asBlob);break;case"audio":this.game.sound.usingWebAudio?(a.data=b.response,this.cache.addSound(a.key,a.url,a.data,!0,!1),a.autoDecode&&this.game.sound.decode(a.key)):this.cache.addSound(a.key,a.url,a.data,!1,!0);break;case"text":a.data=b.responseText,this.cache.addText(a.key,a.url,a.data);break;case"shader":a.data=b.responseText,this.cache.addShader(a.key,a.url,a.data);break;case"physics":var e=JSON.parse(b.responseText);this.cache.addPhysicsData(a.key,a.url,e,a.format);break;case"script":a.data=document.createElement("script"),a.data.language="javascript",a.data.type="text/javascript",a.data.defer=!1,a.data.text=b.responseText,document.head.appendChild(a.data),a.callback&&(a.data=a.callback.call(a.callbackContext,a.key,b.responseText));break;case"binary":a.callback?a.data=a.callback.call(a.callbackContext,a.key,b.response):a.data=b.response,this.cache.addBinary(a.key,a.data)}d&&this.asyncComplete(a)},jsonLoadComplete:function(a,b){var c=JSON.parse(b.responseText);"tilemap"===a.type?this.cache.addTilemap(a.key,a.url,c,a.format):"bitmapfont"===a.type?this.cache.addBitmapFont(a.key,a.url,a.data,c,a.atlasType,a.xSpacing,a.ySpacing):"json"===a.type?this.cache.addJSON(a.key,a.url,c):this.cache.addTextureAtlas(a.key,a.url,a.data,c,a.format),this.asyncComplete(a)},csvLoadComplete:function(a,b){var c=b.responseText;this.cache.addTilemap(a.key,a.url,c,a.format),this.asyncComplete(a)},xmlLoadComplete:function(a,b){var c=b.responseText,d=this.parseXml(c);if(!d){var e=b.responseType||b.contentType;return console.warn("Phaser.Loader - "+a.key+": invalid XML ("+e+")"),void this.asyncComplete(a,"invalid XML")}"bitmapfont"===a.type?this.cache.addBitmapFont(a.key,a.url,a.data,d,a.atlasType,a.xSpacing,a.ySpacing):"textureatlas"===a.type?this.cache.addTextureAtlas(a.key,a.url,a.data,d,a.format):"xml"===a.type&&this.cache.addXML(a.key,a.url,d),this.asyncComplete(a)},parseXml:function(a){var b;try{if(window.DOMParser){var c=new DOMParser;b=c.parseFromString(a,"text/xml")}else b=new ActiveXObject("Microsoft.XMLDOM"),b.async="false",b.loadXML(a)}catch(d){b=null}return b&&b.documentElement&&!b.getElementsByTagName("parsererror").length?b:null},updateProgress:function(){this.preloadSprite&&(0===this.preloadSprite.direction?this.preloadSprite.rect.width=Math.floor(this.preloadSprite.width/100*this.progress):this.preloadSprite.rect.height=Math.floor(this.preloadSprite.height/100*this.progress),this.preloadSprite.sprite?this.preloadSprite.sprite.updateCrop():this.preloadSprite=null)},totalLoadedFiles:function(){return this._loadedFileCount},totalQueuedFiles:function(){return this._totalFileCount-this._loadedFileCount},totalLoadedPacks:function(){return this._totalPackCount},totalQueuedPacks:function(){return this._totalPackCount-this._loadedPackCount}},Object.defineProperty(c.Loader.prototype,"progressFloat",{get:function(){var a=this._loadedFileCount/this._totalFileCount*100;return c.Math.clamp(a||0,0,100)}}),Object.defineProperty(c.Loader.prototype,"progress",{get:function(){return Math.round(this.progressFloat)}}),c.Loader.prototype.constructor=c.Loader,c.LoaderParser={bitmapFont:function(a,b,c,d){return this.xmlBitmapFont(a,b,c,d)},xmlBitmapFont:function(a,b,c,d){var e={},f=a.getElementsByTagName("info")[0],g=a.getElementsByTagName("common")[0];e.font=f.getAttribute("face"),e.size=parseInt(f.getAttribute("size"),10),e.lineHeight=parseInt(g.getAttribute("lineHeight"),10)+d,e.chars={};for(var h=a.getElementsByTagName("char"),i=0;i=this.durationMS&&(this.usingWebAudio?this.loop?(this.onLoop.dispatch(this),this.isPlaying=!1,""===this.currentMarker?(this.currentTime=0,this.startTime=this.game.time.time,this.isPlaying=!0):(this.onMarkerComplete.dispatch(this.currentMarker,this),this.play(this.currentMarker,0,this.volume,!0,!0))):""!==this.currentMarker&&this.stop():this.loop?(this.onLoop.dispatch(this),""===this.currentMarker&&(this.currentTime=0,this.startTime=this.game.time.time),this.isPlaying=!1,this.play(this.currentMarker,0,this.volume,!0,!0)):this.stop())))):void this.destroy()},loopFull:function(a){this.play(null,0,a,!0)},play:function(a,b,c,d,e){if((void 0===a||a===!1||null===a)&&(a=""),void 0===e&&(e=!0),this.isPlaying&&!this.allowMultiple&&!e&&!this.override)return this;if(this._sound&&this.isPlaying&&!this.allowMultiple&&(this.override||e))if(this.usingWebAudio){if(void 0===this._sound.stop)this._sound.noteOff(0);else try{this._sound.stop(0)}catch(f){}this.externalNode?this._sound.disconnect(this.externalNode):this._sound.disconnect(this.gainNode)}else this.usingAudioTag&&(this._sound.pause(),this._sound.currentTime=0);if(""===a&&Object.keys(this.markers).length>0)return this;if(""!==a){if(this.currentMarker=a,!this.markers[a])return this;this.position=this.markers[a].start,this.volume=this.markers[a].volume,this.loop=this.markers[a].loop,this.duration=this.markers[a].duration,this.durationMS=this.markers[a].durationMS,"undefined"!=typeof c&&(this.volume=c),"undefined"!=typeof d&&(this.loop=d),this._tempMarker=a,this._tempPosition=this.position,this._tempVolume=this.volume,this._tempLoop=this.loop}else b=b||0,void 0===c&&(c=this._volume),void 0===d&&(d=this.loop),this.position=Math.max(0,b),this.volume=c,this.loop=d,this.duration=0,this.durationMS=0,this._tempMarker=a,this._tempPosition=b,this._tempVolume=c,this._tempLoop=d;return this.usingWebAudio?this.game.cache.isSoundDecoded(this.key)?(this._sound=this.context.createBufferSource(),this.externalNode?this._sound.connect(this.externalNode):this._sound.connect(this.gainNode),this._buffer=this.game.cache.getSoundData(this.key),this._sound.buffer=this._buffer,this.loop&&""===a&&(this._sound.loop=!0),this.loop||""!==a||(this._sound.onended=this.onEndedHandler.bind(this)),this.totalDuration=this._sound.buffer.duration,0===this.duration&&(this.duration=this.totalDuration,this.durationMS=Math.ceil(1e3*this.totalDuration)),void 0===this._sound.start?this._sound.noteGrainOn(0,this.position,this.duration):this.loop&&""===a?this._sound.start(0,0):this._sound.start(0,this.position,this.duration),this.isPlaying=!0,this.startTime=this.game.time.time,this.currentTime=0,this.stopTime=this.startTime+this.durationMS,this.onPlay.dispatch(this)):(this.pendingPlayback=!0,this.game.cache.getSound(this.key)&&this.game.cache.getSound(this.key).isDecoding===!1&&this.game.sound.decode(this.key,this)):this.game.cache.getSound(this.key)&&this.game.cache.getSound(this.key).locked?(this.game.cache.reloadSound(this.key),this.pendingPlayback=!0):this._sound&&(this.game.device.cocoonJS||4===this._sound.readyState)?(this._sound.play(),this.totalDuration=this._sound.duration,0===this.duration&&(this.duration=this.totalDuration,this.durationMS=1e3*this.totalDuration),this._sound.currentTime=this.position,this._sound.muted=this._muted,this._muted||this.game.sound.mute?this._sound.volume=0:this._sound.volume=this._volume,this.isPlaying=!0,this.startTime=this.game.time.time,this.currentTime=0,this.stopTime=this.startTime+this.durationMS,this.onPlay.dispatch(this)):this.pendingPlayback=!0,this},restart:function(a,b,c,d){a=a||"",b=b||0,c=c||1,void 0===d&&(d=!1),this.play(a,b,c,d,!0)},pause:function(){this.isPlaying&&this._sound&&(this.paused=!0,this.pausedPosition=this.currentTime,this.pausedTime=this.game.time.time,this._tempPause=this._sound.currentTime,this.onPause.dispatch(this),this.stop())},resume:function(){if(this.paused&&this._sound){if(this.usingWebAudio){var a=Math.max(0,this.position+this.pausedPosition/1e3);this._sound=this.context.createBufferSource(),this._sound.buffer=this._buffer,this.externalNode?this._sound.connect(this.externalNode):this._sound.connect(this.gainNode),this.loop&&(this._sound.loop=!0),this.loop||""!==this.currentMarker||(this._sound.onended=this.onEndedHandler.bind(this));var b=this.duration-this.pausedPosition/1e3;void 0===this._sound.start?this._sound.noteGrainOn(0,a,b):this.loop&&this.game.device.chrome?42===this.game.device.chromeVersion?this._sound.start(0):this._sound.start(0,a):this._sound.start(0,a,b)}else this._sound.currentTime=this._tempPause,this._sound.play();this.isPlaying=!0,this.paused=!1,this.startTime+=this.game.time.time-this.pausedTime,this.onResume.dispatch(this)}},stop:function(){if(this.isPlaying&&this._sound)if(this.usingWebAudio){if(void 0===this._sound.stop)this._sound.noteOff(0);else try{this._sound.stop(0)}catch(a){}this.externalNode?this._sound.disconnect(this.externalNode):this._sound.disconnect(this.gainNode)}else this.usingAudioTag&&(this._sound.pause(),this._sound.currentTime=0);if(this.pendingPlayback=!1,this.isPlaying=!1,!this.paused){var b=this.currentMarker;""!==this.currentMarker&&this.onMarkerComplete.dispatch(this.currentMarker,this),this.currentMarker="",null!==this.fadeTween&&this.fadeTween.stop(),this.onStop.dispatch(this,b)}},fadeIn:function(a,b,c){void 0===b&&(b=!1),void 0===c&&(c=this.currentMarker),this.paused||(this.play(c,0,0,b),this.fadeTo(a,1))},fadeOut:function(a){this.fadeTo(a,0)},fadeTo:function(a,b){if(this.isPlaying&&!this.paused&&b!==this.volume){if(void 0===a&&(a=1e3),void 0===b)return void console.warn("Phaser.Sound.fadeTo: No Volume Specified.");this.fadeTween=this.game.add.tween(this).to({volume:b},a,c.Easing.Linear.None,!0),this.fadeTween.onComplete.add(this.fadeComplete,this)}},fadeComplete:function(){this.onFadeComplete.dispatch(this,this.volume),0===this.volume&&this.stop()},updateGlobalVolume:function(a){this.usingAudioTag&&this._sound&&(this._sound.volume=a*this._volume)},destroy:function(a){void 0===a&&(a=!0),this.stop(),a?this.game.sound.remove(this):(this.markers={},this.context=null,this._buffer=null,this.externalNode=null,this.onDecoded.dispose(),this.onPlay.dispose(),this.onPause.dispose(),this.onResume.dispose(),this.onLoop.dispose(),this.onStop.dispose(),this.onMute.dispose(),this.onMarkerComplete.dispose())}},c.Sound.prototype.constructor=c.Sound,Object.defineProperty(c.Sound.prototype,"isDecoding",{get:function(){return this.game.cache.getSound(this.key).isDecoding}}),Object.defineProperty(c.Sound.prototype,"isDecoded",{get:function(){return this.game.cache.isSoundDecoded(this.key)}}),Object.defineProperty(c.Sound.prototype,"mute",{get:function(){return this._muted||this.game.sound.mute},set:function(a){a=a||!1,a!==this._muted&&(a?(this._muted=!0,this._muteVolume=this._tempVolume,this.usingWebAudio?this.gainNode.gain.value=0:this.usingAudioTag&&this._sound&&(this._sound.volume=0)):(this._muted=!1,this.usingWebAudio?this.gainNode.gain.value=this._muteVolume:this.usingAudioTag&&this._sound&&(this._sound.volume=this._muteVolume)),this.onMute.dispatch(this))}}),Object.defineProperty(c.Sound.prototype,"volume",{get:function(){return this._volume},set:function(a){return this.game.device.firefox&&this.usingAudioTag&&(a=this.game.math.clamp(a,0,1)),this._muted?void(this._muteVolume=a):(this._tempVolume=a,this._volume=a,void(this.usingWebAudio?this.gainNode.gain.value=a:this.usingAudioTag&&this._sound&&(this._sound.volume=a)))}}),c.SoundManager=function(a){this.game=a,this.onSoundDecode=new c.Signal,this.onVolumeChange=new c.Signal,this.onMute=new c.Signal,this.onUnMute=new c.Signal,this.context=null,this.usingWebAudio=!1,this.usingAudioTag=!1,this.noAudio=!1,this.connectToMaster=!0,this.touchLocked=!1,this.channels=32,this.muteOnPause=!0,this._codeMuted=!1,this._muted=!1,this._unlockSource=null,this._volume=1,this._sounds=[],this._watchList=new c.ArraySet,this._watching=!1,this._watchCallback=null,this._watchContext=null},c.SoundManager.prototype={boot:function(){if(this.game.device.iOS&&this.game.device.webAudio===!1&&(this.channels=1),window.PhaserGlobal){if(window.PhaserGlobal.disableAudio===!0)return this.noAudio=!0,void(this.touchLocked=!1);if(window.PhaserGlobal.disableWebAudio===!0)return this.usingAudioTag=!0,void(this.touchLocked=!1)}if(window.PhaserGlobal&&window.PhaserGlobal.audioContext)this.context=window.PhaserGlobal.audioContext;else if(window.AudioContext)try{this.context=new window.AudioContext}catch(a){this.context=null,this.usingWebAudio=!1,this.touchLocked=!1}else if(window.webkitAudioContext)try{this.context=new window.webkitAudioContext}catch(a){this.context=null,this.usingWebAudio=!1,this.touchLocked=!1}if(null===this.context){if(void 0===window.Audio)return void(this.noAudio=!0);this.usingAudioTag=!0}else this.usingWebAudio=!0,void 0===this.context.createGain?this.masterGain=this.context.createGainNode():this.masterGain=this.context.createGain(),this.masterGain.gain.value=1,this.masterGain.connect(this.context.destination);this.noAudio||(!this.game.device.cocoonJS&&this.game.device.iOS||window.PhaserGlobal&&window.PhaserGlobal.fakeiOSTouchLock)&&this.setTouchLock()},setTouchLock:function(){this.noAudio||window.PhaserGlobal&&window.PhaserGlobal.disableAudio===!0||(this.game.device.iOSVersion>8?this.game.input.touch.addTouchLockCallback(this.unlock,this,!0):this.game.input.touch.addTouchLockCallback(this.unlock,this),this.touchLocked=!0)},unlock:function(){if(this.noAudio||!this.touchLocked||null!==this._unlockSource)return!0;if(this.usingAudioTag)this.touchLocked=!1,this._unlockSource=null;else if(this.usingWebAudio){var a=this.context.createBuffer(1,1,22050);this._unlockSource=this.context.createBufferSource(),this._unlockSource.buffer=a,this._unlockSource.connect(this.context.destination),void 0===this._unlockSource.start?this._unlockSource.noteOn(0):this._unlockSource.start(0)}return!0},stopAll:function(){if(!this.noAudio)for(var a=0;aa?a=0:a>1&&(a=1),this._volume!==a){if(this._volume=a,this.usingWebAudio)this.masterGain.gain.value=a;else for(var b=0;b=400?0:100,this.dom.getOffset(this.game.canvas,this.offset);var b=this._parentBounds.width,d=this._parentBounds.height,e=this.getParentBounds(this._parentBounds),f=e.width!==b||e.height!==d,g=this.updateOrientationState();(f||g)&&(this.onResize&&this.onResize.call(this.onResizeContext,this,e),this.updateLayout(),this.signalSizeChange());var h=2*this._updateThrottle;this._updateThrottle=b||0>=c)return a;var e=b,f=a.height*b/a.width,g=a.width*c/a.height,h=c,i=g>b;return i=i?d:!d,i?(a.width=Math.floor(e),a.height=Math.floor(f)):(a.width=Math.floor(g),a.height=Math.floor(h)),a},destroy:function(){this.game.onResume.remove(this._gameResumed,this),window.removeEventListener("orientationchange",this._orientationChange,!1),window.removeEventListener("resize",this._windowResize,!1),this.compatibility.supportsFullScreen&&(document.removeEventListener("webkitfullscreenchange",this._fullScreenChange,!1),document.removeEventListener("mozfullscreenchange",this._fullScreenChange,!1),document.removeEventListener("MSFullscreenChange",this._fullScreenChange,!1),document.removeEventListener("fullscreenchange",this._fullScreenChange,!1),document.removeEventListener("webkitfullscreenerror",this._fullScreenError,!1),document.removeEventListener("mozfullscreenerror",this._fullScreenError,!1),document.removeEventListener("MSFullscreenError",this._fullScreenError,!1),document.removeEventListener("fullscreenerror",this._fullScreenError,!1))}},c.ScaleManager.prototype.constructor=c.ScaleManager,Object.defineProperty(c.ScaleManager.prototype,"boundingParent",{get:function(){if(this.parentIsWindow||this.isFullScreen&&!this._createdFullScreenTarget)return null;var a=this.game.canvas&&this.game.canvas.parentNode;return a||null}}),Object.defineProperty(c.ScaleManager.prototype,"scaleMode",{get:function(){return this._scaleMode},set:function(a){return a!==this._scaleMode&&(this.isFullScreen||(this.updateDimensions(this._gameSize.width,this._gameSize.height,!0),this.queueUpdate(!0)),this._scaleMode=a),this._scaleMode}}),Object.defineProperty(c.ScaleManager.prototype,"fullScreenScaleMode",{get:function(){return this._fullScreenScaleMode},set:function(a){return a!==this._fullScreenScaleMode&&(this.isFullScreen?(this.prepScreenMode(!1),this._fullScreenScaleMode=a,this.prepScreenMode(!0),this.queueUpdate(!0)):this._fullScreenScaleMode=a),this._fullScreenScaleMode}}),Object.defineProperty(c.ScaleManager.prototype,"currentScaleMode",{get:function(){return this.isFullScreen?this._fullScreenScaleMode:this._scaleMode}}),Object.defineProperty(c.ScaleManager.prototype,"pageAlignHorizontally",{get:function(){return this._pageAlignHorizontally},set:function(a){a!==this._pageAlignHorizontally&&(this._pageAlignHorizontally=a,this.queueUpdate(!0))}}),Object.defineProperty(c.ScaleManager.prototype,"pageAlignVertically",{get:function(){return this._pageAlignVertically},set:function(a){a!==this._pageAlignVertically&&(this._pageAlignVertically=a,this.queueUpdate(!0))}}),Object.defineProperty(c.ScaleManager.prototype,"isFullScreen",{get:function(){return!!(document.fullscreenElement||document.webkitFullscreenElement||document.mozFullScreenElement||document.msFullscreenElement)}}),Object.defineProperty(c.ScaleManager.prototype,"isPortrait",{get:function(){return"portrait"===this.classifyOrientation(this.screenOrientation)}}),Object.defineProperty(c.ScaleManager.prototype,"isLandscape",{get:function(){return"landscape"===this.classifyOrientation(this.screenOrientation)}}),Object.defineProperty(c.ScaleManager.prototype,"isGamePortrait",{get:function(){return this.height>this.width}}),Object.defineProperty(c.ScaleManager.prototype,"isGameLandscape",{get:function(){return this.width>this.height}}),c.Utils.Debug=function(a){this.game=a,this.sprite=null,this.bmd=null,this.canvas=null,this.context=null,this.font="14px Courier",this.columnWidth=100,this.lineHeight=16,this.renderShadow=!0,this.currentX=0,this.currentY=0,this.currentAlpha=1,this.dirty=!1},c.Utils.Debug.prototype={boot:function(){this.game.renderType===c.CANVAS?this.context=this.game.context:(this.bmd=this.game.make.bitmapData(this.game.width,this.game.height),this.sprite=this.game.make.image(0,0,this.bmd),this.game.stage.addChild(this.sprite),this.game.scale.onSizeChange.add(this.resize,this),this.canvas=PIXI.CanvasPool.create(this,this.game.width,this.game.height),this.context=this.canvas.getContext("2d"))},resize:function(a,b,c){this.bmd.resize(b,c),this.canvas.width=b,this.canvas.height=c},preUpdate:function(){this.dirty&&this.sprite&&(this.bmd.clear(),this.bmd.draw(this.canvas,0,0),this.context.clearRect(0,0,this.game.width,this.game.height),this.dirty=!1)},reset:function(){this.context&&this.context.clearRect(0,0,this.game.width,this.game.height),this.sprite&&this.bmd.clear()},start:function(a,b,c,d){"number"!=typeof a&&(a=0),"number"!=typeof b&&(b=0),c=c||"rgb(255,255,255)",void 0===d&&(d=0),this.currentX=a,this.currentY=b,this.currentColor=c,this.columnWidth=d,this.dirty=!0,this.context.save(),this.context.setTransform(1,0,0,1,0,0),this.context.strokeStyle=c,this.context.fillStyle=c,this.context.font=this.font,this.context.globalAlpha=this.currentAlpha},stop:function(){this.context.restore()},line:function(){for(var a=this.currentX,b=0;b0)for(var b=0;b=0&&c.right>=0&&c.top<=this.layoutBounds.width&&c.left<=this.layoutBounds.height},getScreenOrientation:function(a){var b=window.screen,c=b.orientation||b.mozOrientation||b.msOrientation;if(c&&"string"==typeof c.type)return c.type;if("string"==typeof c)return c;var d="portrait-primary",e="landscape-primary";if("screen"===a)return b.height>b.width?d:e;if("viewport"===a)return this.visualBounds.height>this.visualBounds.width?d:e;if("window.orientation"===a&&"number"==typeof window.orientation)return 0===window.orientation||180===window.orientation?d:e;if(window.matchMedia){if(window.matchMedia("(orientation: portrait)").matches)return d;if(window.matchMedia("(orientation: landscape)").matches)return e}return this.visualBounds.height>this.visualBounds.width?d:e},visualBounds:new c.Rectangle,layoutBounds:new c.Rectangle,documentBounds:new c.Rectangle},c.Device.whenReady(function(a){var b=window&&"pageXOffset"in window?function(){return window.pageXOffset}:function(){return document.documentElement.scrollLeft},d=window&&"pageYOffset"in window?function(){return window.pageYOffset}:function(){return document.documentElement.scrollTop};Object.defineProperty(c.DOM,"scrollX",{get:b}),Object.defineProperty(c.DOM,"scrollY",{get:d}),Object.defineProperty(c.DOM.visualBounds,"x",{get:b}),Object.defineProperty(c.DOM.visualBounds,"y",{get:d}),Object.defineProperty(c.DOM.layoutBounds,"x",{value:0}),Object.defineProperty(c.DOM.layoutBounds,"y",{value:0});var e=a.desktop&&document.documentElement.clientWidth<=window.innerWidth&&document.documentElement.clientHeight<=window.innerHeight;if(e){var f=function(){return Math.max(window.innerWidth,document.documentElement.clientWidth)},g=function(){return Math.max(window.innerHeight,document.documentElement.clientHeight)};Object.defineProperty(c.DOM.visualBounds,"width",{ -get:f}),Object.defineProperty(c.DOM.visualBounds,"height",{get:g}),Object.defineProperty(c.DOM.layoutBounds,"width",{get:f}),Object.defineProperty(c.DOM.layoutBounds,"height",{get:g})}else Object.defineProperty(c.DOM.visualBounds,"width",{get:function(){return window.innerWidth}}),Object.defineProperty(c.DOM.visualBounds,"height",{get:function(){return window.innerHeight}}),Object.defineProperty(c.DOM.layoutBounds,"width",{get:function(){var a=document.documentElement.clientWidth,b=window.innerWidth;return b>a?b:a}}),Object.defineProperty(c.DOM.layoutBounds,"height",{get:function(){var a=document.documentElement.clientHeight,b=window.innerHeight;return b>a?b:a}});Object.defineProperty(c.DOM.documentBounds,"x",{value:0}),Object.defineProperty(c.DOM.documentBounds,"y",{value:0}),Object.defineProperty(c.DOM.documentBounds,"width",{get:function(){var a=document.documentElement;return Math.max(a.clientWidth,a.offsetWidth,a.scrollWidth)}}),Object.defineProperty(c.DOM.documentBounds,"height",{get:function(){var a=document.documentElement;return Math.max(a.clientHeight,a.offsetHeight,a.scrollHeight)}})},null,!0),c.ArraySet=function(a){this.position=0,this.list=a||[]},c.ArraySet.prototype={add:function(a){return this.exists(a)||this.list.push(a),a},getIndex:function(a){return this.list.indexOf(a)},getByKey:function(a,b){for(var c=this.list.length;c--;)if(this.list[c][a]===b)return this.list[c];return null},exists:function(a){return this.list.indexOf(a)>-1},reset:function(){this.list.length=0},remove:function(a){var b=this.list.indexOf(a);return b>-1?(this.list.splice(b,1),a):void 0},setAll:function(a,b){for(var c=this.list.length;c--;)this.list[c]&&(this.list[c][a]=b)},callAll:function(a){for(var b=Array.prototype.slice.call(arguments,1),c=this.list.length;c--;)this.list[c]&&this.list[c][a]&&this.list[c][a].apply(this.list[c],b)},removeAll:function(a){void 0===a&&(a=!1);for(var b=this.list.length;b--;)if(this.list[b]){var c=this.remove(this.list[b]);a&&c.destroy()}this.position=0,this.list=[]}},Object.defineProperty(c.ArraySet.prototype,"total",{get:function(){return this.list.length}}),Object.defineProperty(c.ArraySet.prototype,"first",{get:function(){return this.position=0,this.list.length>0?this.list[0]:null}}),Object.defineProperty(c.ArraySet.prototype,"next",{get:function(){return this.position0;b--){var c=Math.floor(Math.random()*(b+1)),d=a[b];a[b]=a[c],a[c]=d}return a},transposeMatrix:function(a){for(var b=a.length,c=a[0].length,d=new Array(c),e=0;c>e;e++){d[e]=new Array(b);for(var f=b-1;f>-1;f--)d[e][f]=a[f][e]}return d},rotateMatrix:function(a,b){if("string"!=typeof b&&(b=(b%360+360)%360),90===b||-270===b||"rotateLeft"===b)a=c.ArrayUtils.transposeMatrix(a),a=a.reverse();else if(-90===b||270===b||"rotateRight"===b)a=a.reverse(),a=c.ArrayUtils.transposeMatrix(a);else if(180===Math.abs(b)||"rotate180"===b){for(var d=0;d=e-a?e:d},rotate:function(a){var b=a.shift();return a.push(b),b},numberArray:function(a,b){for(var c=[],d=a;b>=d;d++)c.push(d);return c},numberArrayStep:function(a,b,d){(void 0===a||null===a)&&(a=0),(void 0===b||null===b)&&(b=a,a=0),void 0===d&&(d=1);for(var e=[],f=Math.max(c.Math.roundAwayFromZero((b-a)/(d||1)),0),g=0;f>g;g++)e.push(a),a+=d;return e}},c.LinkedList=function(){this.next=null,this.prev=null,this.first=null,this.last=null,this.total=0},c.LinkedList.prototype={add:function(a){return 0===this.total&&null===this.first&&null===this.last?(this.first=a,this.last=a,this.next=a,a.prev=this,this.total++,a):(this.last.next=a,a.prev=this.last,this.last=a,this.total++,a)},reset:function(){this.first=null,this.last=null,this.next=null,this.prev=null,this.total=0},remove:function(a){return 1===this.total?(this.reset(),void(a.next=a.prev=null)):(a===this.first?this.first=this.first.next:a===this.last&&(this.last=this.last.prev),a.prev&&(a.prev.next=a.next),a.next&&(a.next.prev=a.prev),a.next=a.prev=null,null===this.first&&(this.last=null),void this.total--)},callAll:function(a){if(this.first&&this.last){var b=this.first;do b&&b[a]&&b[a].call(b),b=b.next;while(b!=this.last.next)}}},c.LinkedList.prototype.constructor=c.LinkedList,c.Create=function(a){this.game=a,this.bmd=null,this.canvas=null,this.ctx=null,this.palettes=[{0:"#000",1:"#9D9D9D",2:"#FFF",3:"#BE2633",4:"#E06F8B",5:"#493C2B",6:"#A46422",7:"#EB8931",8:"#F7E26B",9:"#2F484E",A:"#44891A",B:"#A3CE27",C:"#1B2632",D:"#005784",E:"#31A2F2",F:"#B2DCEF"},{0:"#000",1:"#191028",2:"#46af45",3:"#a1d685",4:"#453e78",5:"#7664fe",6:"#833129",7:"#9ec2e8",8:"#dc534b",9:"#e18d79",A:"#d6b97b",B:"#e9d8a1",C:"#216c4b",D:"#d365c8",E:"#afaab9",F:"#f5f4eb"},{0:"#000",1:"#2234d1",2:"#0c7e45",3:"#44aacc",4:"#8a3622",5:"#5c2e78",6:"#aa5c3d",7:"#b5b5b5",8:"#5e606e",9:"#4c81fb",A:"#6cd947",B:"#7be2f9",C:"#eb8a60",D:"#e23d69",E:"#ffd93f",F:"#fff"},{0:"#000",1:"#fff",2:"#8b4131",3:"#7bbdc5",4:"#8b41ac",5:"#6aac41",6:"#3931a4",7:"#d5de73",8:"#945a20",9:"#5a4100",A:"#bd736a",B:"#525252",C:"#838383",D:"#acee8b",E:"#7b73de",F:"#acacac"},{0:"#000",1:"#191028",2:"#46af45",3:"#a1d685",4:"#453e78",5:"#7664fe",6:"#833129",7:"#9ec2e8",8:"#dc534b",9:"#e18d79",A:"#d6b97b",B:"#e9d8a1",C:"#216c4b",D:"#d365c8",E:"#afaab9",F:"#fff"}]},c.Create.PALETTE_ARNE=0,c.Create.PALETTE_JMP=1,c.Create.PALETTE_CGA=2,c.Create.PALETTE_C64=3,c.Create.PALETTE_JAPANESE_MACHINE=4,c.Create.prototype={texture:function(a,b,c,d,e){void 0===c&&(c=8),void 0===d&&(d=c),void 0===e&&(e=0);var f=b[0].length*c,g=b.length*d;null===this.bmd&&(this.bmd=this.game.make.bitmapData(),this.canvas=this.bmd.canvas,this.ctx=this.bmd.context),this.bmd.resize(f,g),this.bmd.clear();for(var h=0;hg;g+=e)this.ctx.fillRect(0,g,b,1);for(var h=0;b>h;h+=d)this.ctx.fillRect(h,0,1,c);return this.bmd.generateTexture(a)}},c.Create.prototype.constructor=c.Create,c.FlexGrid=function(a,b,d){this.game=a.game,this.manager=a,this.width=b,this.height=d,this.boundsCustom=new c.Rectangle(0,0,b,d),this.boundsFluid=new c.Rectangle(0,0,b,d),this.boundsFull=new c.Rectangle(0,0,b,d),this.boundsNone=new c.Rectangle(0,0,b,d),this.positionCustom=new c.Point(0,0),this.positionFluid=new c.Point(0,0),this.positionFull=new c.Point(0,0),this.positionNone=new c.Point(0,0),this.scaleCustom=new c.Point(1,1),this.scaleFluid=new c.Point(1,1),this.scaleFluidInversed=new c.Point(1,1),this.scaleFull=new c.Point(1,1),this.scaleNone=new c.Point(1,1),this.customWidth=0,this.customHeight=0,this.customOffsetX=0,this.customOffsetY=0,this.ratioH=b/d,this.ratioV=d/b,this.multiplier=0,this.layers=[]},c.FlexGrid.prototype={setSize:function(a,b){this.width=a,this.height=b,this.ratioH=a/b,this.ratioV=b/a,this.scaleNone=new c.Point(1,1),this.boundsNone.width=this.width,this.boundsNone.height=this.height,this.refresh()},createCustomLayer:function(a,b,d,e){void 0===e&&(e=!0),this.customWidth=a,this.customHeight=b,this.boundsCustom.width=a,this.boundsCustom.height=b;var f=new c.FlexLayer(this,this.positionCustom,this.boundsCustom,this.scaleCustom);return e&&this.game.world.add(f),this.layers.push(f),"undefined"!=typeof d&&null!==typeof d&&f.addMultiple(d),f},createFluidLayer:function(a,b){void 0===b&&(b=!0);var d=new c.FlexLayer(this,this.positionFluid,this.boundsFluid,this.scaleFluid);return b&&this.game.world.add(d),this.layers.push(d),"undefined"!=typeof a&&null!==typeof a&&d.addMultiple(a),d},createFullLayer:function(a){var b=new c.FlexLayer(this,this.positionFull,this.boundsFull,this.scaleFluid);return this.game.world.add(b),this.layers.push(b),"undefined"!=typeof a&&b.addMultiple(a),b},createFixedLayer:function(a){var b=new c.FlexLayer(this,this.positionNone,this.boundsNone,this.scaleNone);return this.game.world.add(b),this.layers.push(b),"undefined"!=typeof a&&b.addMultiple(a),b},reset:function(){for(var a=this.layers.length;a--;)this.layers[a].persist||(this.layers[a].position=null,this.layers[a].scale=null,this.layers.slice(a,1))},onResize:function(a,b){this.ratioH=a/b,this.ratioV=b/a,this.refresh(a,b)},refresh:function(){this.multiplier=Math.min(this.manager.height/this.height,this.manager.width/this.width),this.boundsFluid.width=Math.round(this.width*this.multiplier),this.boundsFluid.height=Math.round(this.height*this.multiplier),this.scaleFluid.set(this.boundsFluid.width/this.width,this.boundsFluid.height/this.height),this.scaleFluidInversed.set(this.width/this.boundsFluid.width,this.height/this.boundsFluid.height),this.scaleFull.set(this.boundsFull.width/this.width,this.boundsFull.height/this.height),this.boundsFull.width=Math.round(this.manager.width*this.scaleFluidInversed.x),this.boundsFull.height=Math.round(this.manager.height*this.scaleFluidInversed.y),this.boundsFluid.centerOn(this.manager.bounds.centerX,this.manager.bounds.centerY),this.boundsNone.centerOn(this.manager.bounds.centerX,this.manager.bounds.centerY),this.positionFluid.set(this.boundsFluid.x,this.boundsFluid.y),this.positionNone.set(this.boundsNone.x,this.boundsNone.y)},fitSprite:function(a){this.manager.scaleSprite(a),a.x=this.manager.bounds.centerX,a.y=this.manager.bounds.centerY},debug:function(){this.game.debug.text(this.boundsFluid.width+" x "+this.boundsFluid.height,this.boundsFluid.x+4,this.boundsFluid.y+16),this.game.debug.geom(this.boundsFluid,"rgba(255,0,0,0.9",!1)}},c.FlexGrid.prototype.constructor=c.FlexGrid,c.FlexLayer=function(a,b,d,e){c.Group.call(this,a.game,null,"__flexLayer"+a.game.rnd.uuid(),!1),this.manager=a.manager,this.grid=a,this.persist=!1,this.position=b,this.bounds=d,this.scale=e,this.topLeft=d.topLeft,this.topMiddle=new c.Point(d.halfWidth,0),this.topRight=d.topRight,this.bottomLeft=d.bottomLeft,this.bottomMiddle=new c.Point(d.halfWidth,d.bottom),this.bottomRight=d.bottomRight},c.FlexLayer.prototype=Object.create(c.Group.prototype),c.FlexLayer.prototype.constructor=c.FlexLayer,c.FlexLayer.prototype.resize=function(){},c.FlexLayer.prototype.debug=function(){this.game.debug.text(this.bounds.width+" x "+this.bounds.height,this.bounds.x+4,this.bounds.y+16),this.game.debug.geom(this.bounds,"rgba(0,0,255,0.9",!1),this.game.debug.geom(this.topLeft,"rgba(255,255,255,0.9"),this.game.debug.geom(this.topMiddle,"rgba(255,255,255,0.9"),this.game.debug.geom(this.topRight,"rgba(255,255,255,0.9")},c.Color={packPixel:function(a,b,d,e){return c.Device.LITTLE_ENDIAN?(e<<24|d<<16|b<<8|a)>>>0:(a<<24|b<<16|d<<8|e)>>>0},unpackPixel:function(a,b,d,e){return(void 0===b||null===b)&&(b=c.Color.createColor()),(void 0===d||null===d)&&(d=!1),(void 0===e||null===e)&&(e=!1),c.Device.LITTLE_ENDIAN?(b.a=(4278190080&a)>>>24,b.b=(16711680&a)>>>16,b.g=(65280&a)>>>8,b.r=255&a):(b.r=(4278190080&a)>>>24,b.g=(16711680&a)>>>16,b.b=(65280&a)>>>8,b.a=255&a),b.color=a,b.rgba="rgba("+b.r+","+b.g+","+b.b+","+b.a/255+")",d&&c.Color.RGBtoHSL(b.r,b.g,b.b,b),e&&c.Color.RGBtoHSV(b.r,b.g,b.b,b),b},fromRGBA:function(a,b){return b||(b=c.Color.createColor()),b.r=(4278190080&a)>>>24,b.g=(16711680&a)>>>16,b.b=(65280&a)>>>8,b.a=255&a,b.rgba="rgba("+b.r+","+b.g+","+b.b+","+b.a+")",b},toRGBA:function(a,b,c,d){return a<<24|b<<16|c<<8|d},RGBtoHSL:function(a,b,d,e){e||(e=c.Color.createColor(a,b,d,1)),a/=255,b/=255,d/=255;var f=Math.min(a,b,d),g=Math.max(a,b,d);if(e.h=0,e.s=0,e.l=(g+f)/2,g!==f){var h=g-f;e.s=e.l>.5?h/(2-g-f):h/(g+f),g===a?e.h=(b-d)/h+(d>b?6:0):g===b?e.h=(d-a)/h+2:g===d&&(e.h=(a-b)/h+4),e.h/=6}return e},HSLtoRGB:function(a,b,d,e){if(e?(e.r=d,e.g=d,e.b=d):e=c.Color.createColor(d,d,d),0!==b){var f=.5>d?d*(1+b):d+b-d*b,g=2*d-f;e.r=c.Color.hueToColor(g,f,a+1/3),e.g=c.Color.hueToColor(g,f,a),e.b=c.Color.hueToColor(g,f,a-1/3)}return e.r=Math.floor(255*e.r|0),e.g=Math.floor(255*e.g|0),e.b=Math.floor(255*e.b|0),c.Color.updateColor(e),e},RGBtoHSV:function(a,b,d,e){e||(e=c.Color.createColor(a,b,d,255)),a/=255,b/=255,d/=255;var f=Math.min(a,b,d),g=Math.max(a,b,d),h=g-f;return e.h=0,e.s=0===g?0:h/g,e.v=g,g!==f&&(g===a?e.h=(b-d)/h+(d>b?6:0):g===b?e.h=(d-a)/h+2:g===d&&(e.h=(a-b)/h+4),e.h/=6),e},HSVtoRGB:function(a,b,d,e){void 0===e&&(e=c.Color.createColor(0,0,0,1,a,b,0,d));var f,g,h,i=Math.floor(6*a),j=6*a-i,k=d*(1-b),l=d*(1-j*b),m=d*(1-(1-j)*b);switch(i%6){case 0:f=d,g=m,h=k;break;case 1:f=l,g=d,h=k;break;case 2:f=k,g=d,h=m;break;case 3:f=k,g=l,h=d;break;case 4:f=m,g=k,h=d;break;case 5:f=d,g=k,h=l}return e.r=Math.floor(255*f),e.g=Math.floor(255*g),e.b=Math.floor(255*h),c.Color.updateColor(e),e},hueToColor:function(a,b,c){return 0>c&&(c+=1),c>1&&(c-=1),1/6>c?a+6*(b-a)*c:.5>c?b:2/3>c?a+(b-a)*(2/3-c)*6:a},createColor:function(a,b,d,e,f,g,h,i){var j={r:a||0,g:b||0,b:d||0,a:e||1,h:f||0,s:g||0,l:h||0,v:i||0,color:0,color32:0,rgba:""};return c.Color.updateColor(j)},updateColor:function(a){return a.rgba="rgba("+a.r.toString()+","+a.g.toString()+","+a.b.toString()+","+a.a.toString()+")",a.color=c.Color.getColor(a.r,a.g,a.b),a.color32=c.Color.getColor32(255*a.a,a.r,a.g,a.b),a},getColor32:function(a,b,c,d){return a<<24|b<<16|c<<8|d},getColor:function(a,b,c){return a<<16|b<<8|c},RGBtoString:function(a,b,d,e,f){return void 0===e&&(e=255),void 0===f&&(f="#"),"#"===f?"#"+((1<<24)+(a<<16)+(b<<8)+d).toString(16).slice(1):"0x"+c.Color.componentToHex(e)+c.Color.componentToHex(a)+c.Color.componentToHex(b)+c.Color.componentToHex(d)},hexToRGB:function(a){var b=c.Color.hexToColor(a);return b?c.Color.getColor32(b.a,b.r,b.g,b.b):void 0},hexToColor:function(a,b){a=a.replace(/^(?:#|0x)?([a-f\d])([a-f\d])([a-f\d])$/i,function(a,b,c,d){return b+b+c+c+d+d});var d=/^(?:#|0x)?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(a);if(d){var e=parseInt(d[1],16),f=parseInt(d[2],16),g=parseInt(d[3],16);b?(b.r=e,b.g=f,b.b=g):b=c.Color.createColor(e,f,g)}return b},webToColor:function(a,b){b||(b=c.Color.createColor());var d=/^rgba?\(\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*(?:,\s*(\d+(?:\.\d+)?))?\s*\)$/.exec(a);return d&&(b.r=parseInt(d[1],10),b.g=parseInt(d[2],10),b.b=parseInt(d[3],10),b.a=void 0!==d[4]?parseFloat(d[4]):1,c.Color.updateColor(b)),b},valueToColor:function(a,b){if(b||(b=c.Color.createColor()),"string"==typeof a)return 0===a.indexOf("rgb")?c.Color.webToColor(a,b):(b.a=1,c.Color.hexToColor(a,b));if("number"==typeof a){var d=c.Color.getRGB(a);return b.r=d.r,b.g=d.g,b.b=d.b,b.a=d.a/255,b}return b},componentToHex:function(a){var b=a.toString(16);return 1==b.length?"0"+b:b},HSVColorWheel:function(a,b){void 0===a&&(a=1),void 0===b&&(b=1);for(var d=[],e=0;359>=e;e++)d.push(c.Color.HSVtoRGB(e/359,a,b));return d},HSLColorWheel:function(a,b){void 0===a&&(a=.5),void 0===b&&(b=.5);for(var d=[],e=0;359>=e;e++)d.push(c.Color.HSLtoRGB(e/359,a,b));return d},interpolateColor:function(a,b,d,e,f){void 0===f&&(f=255);var g=c.Color.getRGB(a),h=c.Color.getRGB(b),i=(h.red-g.red)*e/d+g.red,j=(h.green-g.green)*e/d+g.green,k=(h.blue-g.blue)*e/d+g.blue;return c.Color.getColor32(f,i,j,k)},interpolateColorWithRGB:function(a,b,d,e,f,g){var h=c.Color.getRGB(a),i=(b-h.red)*g/f+h.red,j=(d-h.green)*g/f+h.green,k=(e-h.blue)*g/f+h.blue;return c.Color.getColor(i,j,k)},interpolateRGB:function(a,b,d,e,f,g,h,i){var j=(e-a)*i/h+a,k=(f-b)*i/h+b,l=(g-d)*i/h+d;return c.Color.getColor(j,k,l)},getRandomColor:function(a,b,d){if(void 0===a&&(a=0),void 0===b&&(b=255),void 0===d&&(d=255),b>255||a>b)return c.Color.getColor(255,255,255);var e=a+Math.round(Math.random()*(b-a)),f=a+Math.round(Math.random()*(b-a)),g=a+Math.round(Math.random()*(b-a));return c.Color.getColor32(d,e,f,g)},getRGB:function(a){return a>16777215?{alpha:a>>>24,red:a>>16&255,green:a>>8&255,blue:255&a,a:a>>>24,r:a>>16&255,g:a>>8&255,b:255&a}:{alpha:255,red:a>>16&255,green:a>>8&255,blue:255&a,a:255,r:a>>16&255,g:a>>8&255,b:255&a}},getWebRGB:function(a){if("object"==typeof a)return"rgba("+a.r.toString()+","+a.g.toString()+","+a.b.toString()+","+(a.a/255).toString()+")";var b=c.Color.getRGB(a);return"rgba("+b.r.toString()+","+b.g.toString()+","+b.b.toString()+","+(b.a/255).toString()+")"},getAlpha:function(a){return a>>>24},getAlphaFloat:function(a){return(a>>>24)/255},getRed:function(a){return a>>16&255},getGreen:function(a){return a>>8&255},getBlue:function(a){return 255&a},blendNormal:function(a){return a},blendLighten:function(a,b){return b>a?b:a},blendDarken:function(a,b){return b>a?a:b},blendMultiply:function(a,b){return a*b/255},blendAverage:function(a,b){return(a+b)/2},blendAdd:function(a,b){return Math.min(255,a+b)},blendSubtract:function(a,b){return Math.max(0,a+b-255)},blendDifference:function(a,b){return Math.abs(a-b)},blendNegation:function(a,b){return 255-Math.abs(255-a-b)},blendScreen:function(a,b){return 255-((255-a)*(255-b)>>8)},blendExclusion:function(a,b){return a+b-2*a*b/255},blendOverlay:function(a,b){return 128>b?2*a*b/255:255-2*(255-a)*(255-b)/255},blendSoftLight:function(a,b){return 128>b?2*((a>>1)+64)*(b/255):255-2*(255-((a>>1)+64))*(255-b)/255},blendHardLight:function(a,b){return c.Color.blendOverlay(b,a)},blendColorDodge:function(a,b){return 255===b?b:Math.min(255,(a<<8)/(255-b))},blendColorBurn:function(a,b){return 0===b?b:Math.max(0,255-(255-a<<8)/b)},blendLinearDodge:function(a,b){return c.Color.blendAdd(a,b)},blendLinearBurn:function(a,b){return c.Color.blendSubtract(a,b)},blendLinearLight:function(a,b){return 128>b?c.Color.blendLinearBurn(a,2*b):c.Color.blendLinearDodge(a,2*(b-128))},blendVividLight:function(a,b){return 128>b?c.Color.blendColorBurn(a,2*b):c.Color.blendColorDodge(a,2*(b-128))},blendPinLight:function(a,b){return 128>b?c.Color.blendDarken(a,2*b):c.Color.blendLighten(a,2*(b-128))},blendHardMix:function(a,b){return c.Color.blendVividLight(a,b)<128?0:255},blendReflect:function(a,b){return 255===b?b:Math.min(255,a*a/(255-b))},blendGlow:function(a,b){return c.Color.blendReflect(b,a)},blendPhoenix:function(a,b){return Math.min(a,b)-Math.max(a,b)+255}},c.Physics=function(a,b){b=b||{},this.game=a,this.config=b,this.arcade=null,this.p2=null,this.ninja=null,this.box2d=null,this.chipmunk=null,this.matter=null,this.parseConfig()},c.Physics.ARCADE=0,c.Physics.P2JS=1,c.Physics.NINJA=2,c.Physics.BOX2D=3,c.Physics.CHIPMUNK=4,c.Physics.MATTERJS=5,c.Physics.prototype={parseConfig:function(){this.config.hasOwnProperty("arcade")&&this.config.arcade!==!0||!c.Physics.hasOwnProperty("Arcade")||(this.arcade=new c.Physics.Arcade(this.game)),this.config.hasOwnProperty("ninja")&&this.config.ninja===!0&&c.Physics.hasOwnProperty("Ninja")&&(this.ninja=new c.Physics.Ninja(this.game)),this.config.hasOwnProperty("p2")&&this.config.p2===!0&&c.Physics.hasOwnProperty("P2")&&(this.p2=new c.Physics.P2(this.game,this.config)),this.config.hasOwnProperty("box2d")&&this.config.box2d===!0&&c.Physics.hasOwnProperty("BOX2D")&&(this.box2d=new c.Physics.BOX2D(this.game,this.config)),this.config.hasOwnProperty("matter")&&this.config.matter===!0&&c.Physics.hasOwnProperty("Matter")&&(this.matter=new c.Physics.Matter(this.game,this.config))},startSystem:function(a){a===c.Physics.ARCADE?this.arcade=new c.Physics.Arcade(this.game):a===c.Physics.P2JS?null===this.p2?this.p2=new c.Physics.P2(this.game,this.config):this.p2.reset():a===c.Physics.NINJA?this.ninja=new c.Physics.Ninja(this.game):a===c.Physics.BOX2D?null===this.box2d?this.box2d=new c.Physics.Box2D(this.game,this.config):this.box2d.reset():a===c.Physics.MATTERJS&&(null===this.matter?this.matter=new c.Physics.Matter(this.game,this.config):this.matter.reset())},enable:function(a,b,d){void 0===b&&(b=c.Physics.ARCADE),void 0===d&&(d=!1),b===c.Physics.ARCADE?this.arcade.enable(a):b===c.Physics.P2JS&&this.p2?this.p2.enable(a,d):b===c.Physics.NINJA&&this.ninja?this.ninja.enableAABB(a):b===c.Physics.BOX2D&&this.box2d?this.box2d.enable(a):b===c.Physics.MATTERJS&&this.matter?this.matter.enable(a):console.warn(a.key+" is attempting to enable a physics body using an unknown physics system.")},preUpdate:function(){this.p2&&this.p2.preUpdate(),this.box2d&&this.box2d.preUpdate(),this.matter&&this.matter.preUpdate()},update:function(){this.p2&&this.p2.update(),this.box2d&&this.box2d.update(),this.matter&&this.matter.update()},setBoundsToWorld:function(){this.arcade&&this.arcade.setBoundsToWorld(),this.ninja&&this.ninja.setBoundsToWorld(),this.p2&&this.p2.setBoundsToWorld(),this.box2d&&this.box2d.setBoundsToWorld(),this.matter&&this.matter.setBoundsToWorld()},clear:function(){this.p2&&this.p2.clear(),this.box2d&&this.box2d.clear(),this.matter&&this.matter.clear()},reset:function(){this.p2&&this.p2.reset(),this.box2d&&this.box2d.reset(),this.matter&&this.matter.reset()},destroy:function(){this.p2&&this.p2.destroy(),this.box2d&&this.box2d.destroy(),this.matter&&this.matter.destroy(),this.arcade=null,this.ninja=null,this.p2=null,this.box2d=null,this.matter=null}},c.Physics.prototype.constructor=c.Physics,c.Physics.Arcade=function(a){this.game=a,this.gravity=new c.Point,this.bounds=new c.Rectangle(0,0,a.world.width,a.world.height),this.checkCollision={up:!0,down:!0,left:!0,right:!0},this.maxObjects=10,this.maxLevels=4,this.OVERLAP_BIAS=4,this.forceX=!1,this.sortDirection=c.Physics.Arcade.LEFT_RIGHT,this.skipQuadTree=!0,this.isPaused=!1,this.quadTree=new c.QuadTree(this.game.world.bounds.x,this.game.world.bounds.y,this.game.world.bounds.width,this.game.world.bounds.height,this.maxObjects,this.maxLevels),this._total=0,this.setBoundsToWorld()},c.Physics.Arcade.prototype.constructor=c.Physics.Arcade,c.Physics.Arcade.SORT_NONE=0,c.Physics.Arcade.LEFT_RIGHT=1,c.Physics.Arcade.RIGHT_LEFT=2,c.Physics.Arcade.TOP_BOTTOM=3,c.Physics.Arcade.BOTTOM_TOP=4,c.Physics.Arcade.prototype={setBounds:function(a,b,c,d){this.bounds.setTo(a,b,c,d)},setBoundsToWorld:function(){this.bounds.copyFrom(this.game.world.bounds)},enable:function(a,b){void 0===b&&(b=!0);var d=1;if(Array.isArray(a))for(d=a.length;d--;)a[d]instanceof c.Group?this.enable(a[d].children,b):(this.enableBody(a[d]),b&&a[d].hasOwnProperty("children")&&a[d].children.length>0&&this.enable(a[d],!0));else a instanceof c.Group?this.enable(a.children,b):(this.enableBody(a),b&&a.hasOwnProperty("children")&&a.children.length>0&&this.enable(a.children,!0))},enableBody:function(a){a.hasOwnProperty("body")&&null===a.body&&(a.body=new c.Physics.Arcade.Body(a),a.parent&&a.parent instanceof c.Group&&a.parent.addToHash(a))},updateMotion:function(a){var b=this.computeVelocity(0,a,a.angularVelocity,a.angularAcceleration,a.angularDrag,a.maxAngular)-a.angularVelocity;a.angularVelocity+=b,a.rotation+=a.angularVelocity*this.game.time.physicsElapsed,a.velocity.x=this.computeVelocity(1,a,a.velocity.x,a.acceleration.x,a.drag.x,a.maxVelocity.x),a.velocity.y=this.computeVelocity(2,a,a.velocity.y,a.acceleration.y,a.drag.y,a.maxVelocity.y)},computeVelocity:function(a,b,c,d,e,f){return void 0===f&&(f=1e4),1===a&&b.allowGravity?c+=(this.gravity.x+b.gravity.x)*this.game.time.physicsElapsed:2===a&&b.allowGravity&&(c+=(this.gravity.y+b.gravity.y)*this.game.time.physicsElapsed),d?c+=d*this.game.time.physicsElapsed:e&&(e*=this.game.time.physicsElapsed,c-e>0?c-=e:0>c+e?c+=e:c=0),c>f?c=f:-f>c&&(c=-f),c},overlap:function(a,b,c,d,e){if(c=c||null,d=d||null,e=e||c,this._total=0,!Array.isArray(a)&&Array.isArray(b))for(var f=0;f0},collide:function(a,b,c,d,e){if(c=c||null,d=d||null,e=e||c,this._total=0,!Array.isArray(a)&&Array.isArray(b))for(var f=0;f0},sortLeftRight:function(a,b){return a.body&&b.body?a.body.x-b.body.x:0},sortRightLeft:function(a,b){return a.body&&b.body?b.body.x-a.body.x:0},sortTopBottom:function(a,b){return a.body&&b.body?a.body.y-b.body.y:0},sortBottomTop:function(a,b){return a.body&&b.body?b.body.y-a.body.y:0},sort:function(a,b){null!==a.physicsSortDirection?b=a.physicsSortDirection:void 0===b&&(b=this.sortDirection),b===c.Physics.Arcade.LEFT_RIGHT?a.hash.sort(this.sortLeftRight):b===c.Physics.Arcade.RIGHT_LEFT?a.hash.sort(this.sortRightLeft):b===c.Physics.Arcade.TOP_BOTTOM?a.hash.sort(this.sortTopBottom):b===c.Physics.Arcade.BOTTOM_TOP&&a.hash.sort(this.sortBottomTop)},collideHandler:function(a,b,d,e,f,g){return void 0===b&&a.physicsType===c.GROUP?(this.sort(a),void this.collideGroupVsSelf(a,d,e,f,g)):void(a&&b&&a.exists&&b.exists&&(this.sortDirection!==c.Physics.Arcade.SORT_NONE&&(a.physicsType===c.GROUP&&this.sort(a),b.physicsType===c.GROUP&&this.sort(b)),a.physicsType===c.SPRITE?b.physicsType===c.SPRITE?this.collideSpriteVsSprite(a,b,d,e,f,g):b.physicsType===c.GROUP?this.collideSpriteVsGroup(a,b,d,e,f,g):b.physicsType===c.TILEMAPLAYER&&this.collideSpriteVsTilemapLayer(a,b,d,e,f,g):a.physicsType===c.GROUP?b.physicsType===c.SPRITE?this.collideSpriteVsGroup(b,a,d,e,f,g):b.physicsType===c.GROUP?this.collideGroupVsGroup(a,b,d,e,f,g):b.physicsType===c.TILEMAPLAYER&&this.collideGroupVsTilemapLayer(a,b,d,e,f,g):a.physicsType===c.TILEMAPLAYER&&(b.physicsType===c.SPRITE?this.collideSpriteVsTilemapLayer(b,a,d,e,f,g):b.physicsType===c.GROUP&&this.collideGroupVsTilemapLayer(b,a,d,e,f,g))))},collideSpriteVsSprite:function(a,b,c,d,e,f){return a.body&&b.body?(this.separate(a.body,b.body,d,e,f)&&(c&&c.call(e,a,b),this._total++),!0):!1},collideSpriteVsGroup:function(a,b,d,e,f,g){if(0!==b.length&&a.body){var h;if(this.skipQuadTree||a.body.skipQuadTree){for(var i=0;ih.right)break;if(h.x>a.body.right)continue}else if(this.sortDirection===c.Physics.Arcade.TOP_BOTTOM){if(a.body.bottomh.bottom)break;if(h.y>a.body.bottom)continue}this.collideSpriteVsSprite(a,b.hash[i],d,e,f,g)}}else{this.quadTree.clear(),this.quadTree.reset(this.game.world.bounds.x,this.game.world.bounds.y,this.game.world.bounds.width,this.game.world.bounds.height,this.maxObjects,this.maxLevels),this.quadTree.populate(b);for(var j=this.quadTree.retrieve(a),i=0;ij.body.right)continue;if(j.body.x>h.body.right)break}else if(this.sortDirection===c.Physics.Arcade.TOP_BOTTOM){if(h.body.bottomj.body.bottom)continue;if(j.body.y>h.body.bottom)break}this.collideSpriteVsSprite(h,j,b,d,e,f)}},collideGroupVsGroup:function(a,b,d,e,f,g){if(0!==a.length&&0!==b.length)for(var h=0;h=b.right?!1:a.position.y>=b.bottom?!1:!0},getOverlapX:function(a,b,c){var d=0,e=a.deltaAbsX()+b.deltaAbsX()+this.OVERLAP_BIAS;return 0===a.deltaX()&&0===b.deltaX()?(a.embedded=!0,b.embedded=!0):a.deltaX()>b.deltaX()?(d=a.right-b.x,d>e&&!c||a.checkCollision.right===!1||b.checkCollision.left===!1?d=0:(a.touching.none=!1,a.touching.right=!0,b.touching.none=!1,b.touching.left=!0)):a.deltaX()e&&!c||a.checkCollision.left===!1||b.checkCollision.right===!1?d=0:(a.touching.none=!1,a.touching.left=!0,b.touching.none=!1,b.touching.right=!0)),a.overlapX=d,b.overlapX=d,d},getOverlapY:function(a,b,c){var d=0,e=a.deltaAbsY()+b.deltaAbsY()+this.OVERLAP_BIAS;return 0===a.deltaY()&&0===b.deltaY()?(a.embedded=!0,b.embedded=!0):a.deltaY()>b.deltaY()?(d=a.bottom-b.y,d>e&&!c||a.checkCollision.down===!1||b.checkCollision.up===!1?d=0:(a.touching.none=!1,a.touching.down=!0,b.touching.none=!1,b.touching.up=!0)):a.deltaY()e&&!c||a.checkCollision.up===!1||b.checkCollision.down===!1?d=0:(a.touching.none=!1,a.touching.up=!0,b.touching.none=!1,b.touching.down=!0)),a.overlapY=d,b.overlapY=d,d},separateX:function(a,b,c){var d=this.getOverlapX(a,b,c);if(c||0===d||a.immovable&&b.immovable||a.customSeparateX||b.customSeparateX)return 0!==d||a.embedded&&b.embedded;var e=a.velocity.x,f=b.velocity.x;if(a.immovable||b.immovable)a.immovable?(b.x+=d,b.velocity.x=e-f*b.bounce.x,a.moves&&(b.y+=(a.y-a.prev.y)*a.friction.y)):(a.x-=d,a.velocity.x=f-e*a.bounce.x,b.moves&&(a.y+=(b.y-b.prev.y)*b.friction.y));else{d*=.5,a.x-=d,b.x+=d;var g=Math.sqrt(f*f*b.mass/a.mass)*(f>0?1:-1),h=Math.sqrt(e*e*a.mass/b.mass)*(e>0?1:-1),i=.5*(g+h);g-=i,h-=i,a.velocity.x=i+g*a.bounce.x,b.velocity.x=i+h*b.bounce.x}return!0},separateY:function(a,b,c){var d=this.getOverlapY(a,b,c);if(c||0===d||a.immovable&&b.immovable||a.customSeparateY||b.customSeparateY)return 0!==d||a.embedded&&b.embedded;var e=a.velocity.y,f=b.velocity.y;if(a.immovable||b.immovable)a.immovable?(b.y+=d,b.velocity.y=e-f*b.bounce.y,a.moves&&(b.x+=(a.x-a.prev.x)*a.friction.x)):(a.y-=d,a.velocity.y=f-e*a.bounce.y,b.moves&&(a.x+=(b.x-b.prev.x)*b.friction.x));else{d*=.5,a.y-=d,b.y+=d;var g=Math.sqrt(f*f*b.mass/a.mass)*(f>0?1:-1),h=Math.sqrt(e*e*a.mass/b.mass)*(e>0?1:-1),i=.5*(g+h);g-=i,h-=i,a.velocity.y=i+g*a.bounce.y,b.velocity.y=i+h*b.bounce.y}return!0},getObjectsUnderPointer:function(a,b,c,d){return 0!==b.length&&a.exists?this.getObjectsAtLocation(a.x,a.y,b,c,d,a):void 0},getObjectsAtLocation:function(a,b,d,e,f,g){this.quadTree.clear(),this.quadTree.reset(this.game.world.bounds.x,this.game.world.bounds.y,this.game.world.bounds.width,this.game.world.bounds.height,this.maxObjects,this.maxLevels),this.quadTree.populate(d);for(var h=new c.Rectangle(a,b,1,1),i=[],j=this.quadTree.retrieve(h),k=0;k0&&(c=this.distanceBetween(a,b)/(d/1e3)),a.body.velocity.x=Math.cos(e)*c,a.body.velocity.y=Math.sin(e)*c,e},moveToPointer:function(a,b,c,d){void 0===b&&(b=60),c=c||this.game.input.activePointer,void 0===d&&(d=0);var e=this.angleToPointer(a,c);return d>0&&(b=this.distanceToPointer(a,c)/(d/1e3)),a.body.velocity.x=Math.cos(e)*b,a.body.velocity.y=Math.sin(e)*b,e},moveToXY:function(a,b,c,d,e){void 0===d&&(d=60),void 0===e&&(e=0);var f=Math.atan2(c-a.y,b-a.x);return e>0&&(d=this.distanceToXY(a,b,c)/(e/1e3)),a.body.velocity.x=Math.cos(f)*d,a.body.velocity.y=Math.sin(f)*d,f},velocityFromAngle:function(a,b,d){return void 0===b&&(b=60),d=d||new c.Point,d.setTo(Math.cos(this.game.math.degToRad(a))*b,Math.sin(this.game.math.degToRad(a))*b)},velocityFromRotation:function(a,b,d){return void 0===b&&(b=60),d=d||new c.Point,d.setTo(Math.cos(a)*b,Math.sin(a)*b)},accelerationFromRotation:function(a,b,d){return void 0===b&&(b=60),d=d||new c.Point,d.setTo(Math.cos(a)*b,Math.sin(a)*b)},accelerateToObject:function(a,b,c,d,e){void 0===c&&(c=60),void 0===d&&(d=1e3),void 0===e&&(e=1e3);var f=this.angleBetween(a,b);return a.body.acceleration.setTo(Math.cos(f)*c,Math.sin(f)*c),a.body.maxVelocity.setTo(d,e),f},accelerateToPointer:function(a,b,c,d,e){void 0===c&&(c=60),void 0===b&&(b=this.game.input.activePointer),void 0===d&&(d=1e3),void 0===e&&(e=1e3);var f=this.angleToPointer(a,b);return a.body.acceleration.setTo(Math.cos(f)*c,Math.sin(f)*c),a.body.maxVelocity.setTo(d,e),f},accelerateToXY:function(a,b,c,d,e,f){void 0===d&&(d=60),void 0===e&&(e=1e3),void 0===f&&(f=1e3);var g=this.angleToXY(a,b,c);return a.body.acceleration.setTo(Math.cos(g)*d,Math.sin(g)*d),a.body.maxVelocity.setTo(e,f),g},distanceBetween:function(a,b,c){void 0===c&&(c=!1);var d=c?a.world.x-b.world.x:a.x-b.x,e=c?a.world.y-b.world.y:a.y-b.y;return Math.sqrt(d*d+e*e)},distanceToXY:function(a,b,c,d){void 0===d&&(d=!1);var e=d?a.world.x-b:a.x-b,f=d?a.world.y-c:a.y-c;return Math.sqrt(e*e+f*f)},distanceToPointer:function(a,b,c){void 0===b&&(b=this.game.input.activePointer),void 0===c&&(c=!1);var d=c?a.world.x-b.worldX:a.x-b.worldX,e=c?a.world.y-b.worldY:a.y-b.worldY;return Math.sqrt(d*d+e*e)},angleBetween:function(a,b,c){return void 0===c&&(c=!1),c?Math.atan2(b.world.y-a.world.y,b.world.x-a.world.x):Math.atan2(b.y-a.y,b.x-a.x)},angleToXY:function(a,b,c,d){return void 0===d&&(d=!1),d?Math.atan2(c-a.world.y,b-a.world.x):Math.atan2(c-a.y,b-a.x)},angleToPointer:function(a,b,c){return void 0===b&&(b=this.game.input.activePointer),void 0===c&&(c=!1),c?Math.atan2(b.worldY-a.world.y,b.worldX-a.world.x):Math.atan2(b.worldY-a.y,b.worldX-a.x)},worldAngleToPointer:function(a,b){return this.angleToPointer(a,b,!0)}},c.Physics.Arcade.Body=function(a){this.sprite=a,this.game=a.game,this.type=c.Physics.ARCADE,this.enable=!0,this.offset=new c.Point,this.position=new c.Point(a.x,a.y),this.prev=new c.Point(this.position.x,this.position.y),this.allowRotation=!0,this.rotation=a.rotation,this.preRotation=a.rotation,this.width=a.width,this.height=a.height,this.sourceWidth=a.width,this.sourceHeight=a.height,a.texture&&(this.sourceWidth=a.texture.frame.width,this.sourceHeight=a.texture.frame.height),this.halfWidth=Math.abs(a.width/2),this.halfHeight=Math.abs(a.height/2),this.center=new c.Point(a.x+this.halfWidth,a.y+this.halfHeight),this.velocity=new c.Point,this.newVelocity=new c.Point(0,0),this.deltaMax=new c.Point(0,0),this.acceleration=new c.Point,this.drag=new c.Point,this.allowGravity=!0,this.gravity=new c.Point(0,0),this.bounce=new c.Point,this.worldBounce=null,this.maxVelocity=new c.Point(1e4,1e4),this.friction=new c.Point(1,0),this.angularVelocity=0,this.angularAcceleration=0,this.angularDrag=0,this.maxAngular=1e3,this.mass=1,this.angle=0,this.speed=0,this.facing=c.NONE,this.immovable=!1,this.moves=!0,this.customSeparateX=!1,this.customSeparateY=!1,this.overlapX=0,this.overlapY=0,this.embedded=!1,this.collideWorldBounds=!1,this.checkCollision={none:!1,any:!0,up:!0,down:!0,left:!0,right:!0},this.touching={none:!0,up:!1,down:!1,left:!1,right:!1},this.wasTouching={none:!0,up:!1,down:!1,left:!1,right:!1},this.blocked={up:!1,down:!1,left:!1,right:!1},this.tilePadding=new c.Point,this.dirty=!1,this.skipQuadTree=!1,this.syncBounds=!1,this.isMoving=!1,this.stopVelocityOnCollide=!0,this.moveTimer=0,this.moveDistance=0,this.moveDuration=0,this.moveTarget=null,this.moveEnd=null,this.onMoveComplete=new c.Signal,this.movementCallback=null,this.movementCallbackContext=null,this._reset=!0,this._sx=a.scale.x,this._sy=a.scale.y,this._dx=0,this._dy=0},c.Physics.Arcade.Body.prototype={updateBounds:function(){if(this.syncBounds){var a=this.sprite.getBounds();a.ceilAll(),(a.width!==this.width||a.height!==this.height)&&(this.width=a.width,this.height=a.height,this._reset=!0)}else{var b=Math.abs(this.sprite.scale.x),c=Math.abs(this.sprite.scale.y);(b!==this._sx||c!==this._sy)&&(this.width=this.sourceWidth*b,this.height=this.sourceHeight*c,this._sx=b,this._sy=c,this._reset=!0)}this._reset&&(this.halfWidth=Math.floor(this.width/2),this.halfHeight=Math.floor(this.height/2),this.center.setTo(this.position.x+this.halfWidth,this.position.y+this.halfHeight))},preUpdate:function(){this.enable&&!this.game.physics.arcade.isPaused&&(this.dirty=!0,this.wasTouching.none=this.touching.none,this.wasTouching.up=this.touching.up,this.wasTouching.down=this.touching.down,this.wasTouching.left=this.touching.left,this.wasTouching.right=this.touching.right,this.touching.none=!0,this.touching.up=!1,this.touching.down=!1,this.touching.left=!1,this.touching.right=!1,this.blocked.up=!1,this.blocked.down=!1,this.blocked.left=!1,this.blocked.right=!1,this.embedded=!1,this.updateBounds(),this.position.x=this.sprite.world.x-this.sprite.anchor.x*this.sprite.width+this.sprite.scale.x*this.offset.x,this.position.x-=this.sprite.scale.x<0?this.width:0,this.position.y=this.sprite.world.y-this.sprite.anchor.y*this.sprite.height+this.sprite.scale.y*this.offset.y,this.position.y-=this.sprite.scale.y<0?this.height:0,this.rotation=this.sprite.angle,this.preRotation=this.rotation,(this._reset||this.sprite.fresh)&&(this.prev.x=this.position.x,this.prev.y=this.position.y),this.moves&&(this.game.physics.arcade.updateMotion(this),this.newVelocity.set(this.velocity.x*this.game.time.physicsElapsed,this.velocity.y*this.game.time.physicsElapsed),this.position.x+=this.newVelocity.x,this.position.y+=this.newVelocity.y,(this.position.x!==this.prev.x||this.position.y!==this.prev.y)&&(this.angle=Math.atan2(this.velocity.y,this.velocity.x)),this.speed=Math.sqrt(this.velocity.x*this.velocity.x+this.velocity.y*this.velocity.y),this.collideWorldBounds&&this.checkWorldBounds()),this._dx=this.deltaX(),this._dy=this.deltaY(),this._reset=!1)},updateMovement:function(){var a=0,b=0!==this.overlapX||0!==this.overlapY;if(this.moveDuration>0?(this.moveTimer+=this.game.time.elapsedMS,a=this.moveTimer/this.moveDuration):(this.moveTarget.end.set(this.position.x,this.position.y),a=this.moveTarget.length/this.moveDistance),this.movementCallback)var c=this.movementCallback.call(this.movementCallbackContext,this,this.velocity,a);return b||a>=1||void 0!==c&&c!==!0?(this.stopMovement(a>=1||this.stopVelocityOnCollide&&b),!1):!0},stopMovement:function(a){this.isMoving&&(this.isMoving=!1,a&&this.velocity.set(0),this.onMoveComplete.dispatch(this.sprite,0!==this.overlapX||0!==this.overlapY))},postUpdate:function(){this.enable&&this.dirty&&(this.isMoving&&this.updateMovement(),this.dirty=!1,this.deltaX()<0?this.facing=c.LEFT:this.deltaX()>0&&(this.facing=c.RIGHT),this.deltaY()<0?this.facing=c.UP:this.deltaY()>0&&(this.facing=c.DOWN),this.moves&&(this._dx=this.deltaX(),this._dy=this.deltaY(),0!==this.deltaMax.x&&0!==this._dx&&(this._dx<0&&this._dx<-this.deltaMax.x?this._dx=-this.deltaMax.x:this._dx>0&&this._dx>this.deltaMax.x&&(this._dx=this.deltaMax.x)),0!==this.deltaMax.y&&0!==this._dy&&(this._dy<0&&this._dy<-this.deltaMax.y?this._dy=-this.deltaMax.y:this._dy>0&&this._dy>this.deltaMax.y&&(this._dy=this.deltaMax.y)),this.sprite.position.x+=this._dx,this.sprite.position.y+=this._dy,this._reset=!0),this.center.setTo(this.position.x+this.halfWidth,this.position.y+this.halfHeight),this.allowRotation&&(this.sprite.angle+=this.deltaZ()),this.prev.x=this.position.x,this.prev.y=this.position.y)},checkWorldBounds:function(){var a=this.position,b=this.game.physics.arcade.bounds,c=this.game.physics.arcade.checkCollision,d=this.worldBounce?-this.worldBounce.x:-this.bounce.x,e=this.worldBounce?-this.worldBounce.y:-this.bounce.y;a.xb.right&&c.right&&(a.x=b.right-this.width,this.velocity.x*=d,this.blocked.right=!0),a.yb.bottom&&c.down&&(a.y=b.bottom-this.height,this.velocity.y*=e,this.blocked.down=!0)},moveFrom:function(a,b,c){if(void 0===b&&(b=this.speed),0===b)return!1;var d;return void 0===c?(d=this.angle,c=this.game.math.radToDeg(d)):d=this.game.math.degToRad(c),this.moveTimer=0,this.moveDuration=a,0===c||180===c?this.velocity.set(Math.cos(d)*b,0):90===c||270===c?this.velocity.set(0,Math.sin(d)*b):this.velocity.set(Math.cos(d)*b,Math.sin(d)*b),this.isMoving=!0,!0},moveTo:function(a,b,d){var e=b/(a/1e3);if(0===e)return!1;var f;return void 0===d?(f=this.angle,d=this.game.math.radToDeg(f)):f=this.game.math.degToRad(d),b=Math.abs(b),this.moveDuration=0,this.moveDistance=b,null===this.moveTarget&&(this.moveTarget=new c.Line,this.moveEnd=new c.Point),this.moveTarget.fromAngle(this.x,this.y,f,b),this.moveEnd.set(this.moveTarget.end.x,this.moveTarget.end.y),this.moveTarget.setTo(this.x,this.y,this.x,this.y),0===d||180===d?this.velocity.set(Math.cos(f)*e,0):90===d||270===d?this.velocity.set(0,Math.sin(f)*e):this.velocity.set(Math.cos(f)*e,Math.sin(f)*e),this.isMoving=!0,!0},setSize:function(a,b,c,d){void 0===c&&(c=this.offset.x),void 0===d&&(d=this.offset.y),this.sourceWidth=a,this.sourceHeight=b,this.width=this.sourceWidth*this._sx,this.height=this.sourceHeight*this._sy,this.halfWidth=Math.floor(this.width/2),this.halfHeight=Math.floor(this.height/2),this.offset.setTo(c,d),this.center.setTo(this.position.x+this.halfWidth,this.position.y+this.halfHeight)},reset:function(a,b){this.velocity.set(0),this.acceleration.set(0),this.speed=0,this.angularVelocity=0,this.angularAcceleration=0,this.position.x=a-this.sprite.anchor.x*this.sprite.width+this.sprite.scale.x*this.offset.x,this.position.x-=this.sprite.scale.x<0?this.width:0,this.position.y=b-this.sprite.anchor.y*this.sprite.height+this.sprite.scale.y*this.offset.y,this.position.y-=this.sprite.scale.y<0?this.height:0,this.prev.x=this.position.x,this.prev.y=this.position.y,this.rotation=this.sprite.angle,this.preRotation=this.rotation,this._sx=this.sprite.scale.x,this._sy=this.sprite.scale.y,this.center.setTo(this.position.x+this.halfWidth,this.position.y+this.halfHeight)},hitTest:function(a,b){return c.Rectangle.contains(this,a,b)},onFloor:function(){return this.blocked.down},onCeiling:function(){return this.blocked.up},onWall:function(){return this.blocked.left||this.blocked.right},deltaAbsX:function(){return this.deltaX()>0?this.deltaX():-this.deltaX()},deltaAbsY:function(){return this.deltaY()>0?this.deltaY():-this.deltaY()},deltaX:function(){return this.position.x-this.prev.x},deltaY:function(){return this.position.y-this.prev.y},deltaZ:function(){return this.rotation-this.preRotation},destroy:function(){this.sprite.parent&&this.sprite.parent instanceof c.Group&&this.sprite.parent.removeFromHash(this.sprite),this.sprite.body=null,this.sprite=null}},Object.defineProperty(c.Physics.Arcade.Body.prototype,"left",{get:function(){return this.position.x}}),Object.defineProperty(c.Physics.Arcade.Body.prototype,"right",{get:function(){return this.position.x+this.width}}),Object.defineProperty(c.Physics.Arcade.Body.prototype,"top",{get:function(){return this.position.y}}),Object.defineProperty(c.Physics.Arcade.Body.prototype,"bottom",{get:function(){return this.position.y+this.height}}),Object.defineProperty(c.Physics.Arcade.Body.prototype,"x",{get:function(){return this.position.x},set:function(a){this.position.x=a}}),Object.defineProperty(c.Physics.Arcade.Body.prototype,"y",{get:function(){return this.position.y},set:function(a){this.position.y=a}}),c.Physics.Arcade.Body.render=function(a,b,c,d){void 0===d&&(d=!0),c=c||"rgba(0,255,0,0.4)",d?(a.fillStyle=c,a.fillRect(b.position.x-b.game.camera.x,b.position.y-b.game.camera.y,b.width,b.height)):(a.strokeStyle=c,a.strokeRect(b.position.x-b.game.camera.x,b.position.y-b.game.camera.y,b.width,b.height))},c.Physics.Arcade.Body.renderBodyInfo=function(a,b){a.line("x: "+b.x.toFixed(2),"y: "+b.y.toFixed(2),"width: "+b.width,"height: "+b.height),a.line("velocity x: "+b.velocity.x.toFixed(2),"y: "+b.velocity.y.toFixed(2),"deltaX: "+b._dx.toFixed(2),"deltaY: "+b._dy.toFixed(2)),a.line("acceleration x: "+b.acceleration.x.toFixed(2),"y: "+b.acceleration.y.toFixed(2),"speed: "+b.speed.toFixed(2),"angle: "+b.angle.toFixed(2)),a.line("gravity x: "+b.gravity.x,"y: "+b.gravity.y,"bounce x: "+b.bounce.x.toFixed(2),"y: "+b.bounce.y.toFixed(2)),a.line("touching left: "+b.touching.left,"right: "+b.touching.right,"up: "+b.touching.up,"down: "+b.touching.down),a.line("blocked left: "+b.blocked.left,"right: "+b.blocked.right,"up: "+b.blocked.up,"down: "+b.blocked.down)},c.Physics.Arcade.Body.prototype.constructor=c.Physics.Arcade.Body,c.Physics.Arcade.TilemapCollision=function(){},c.Physics.Arcade.TilemapCollision.prototype={TILE_BIAS:16,collideSpriteVsTilemapLayer:function(a,b,c,d,e,f){if(a.body){var g=b.getTiles(a.body.position.x-a.body.tilePadding.x,a.body.position.y-a.body.tilePadding.y,a.body.width+a.body.tilePadding.x,a.body.height+a.body.tilePadding.y,!1,!1);if(0!==g.length)for(var h=0;hb.deltaAbsY()?j=-1:b.deltaAbsX()j){if((c.faceLeft||c.faceRight)&&(h=this.tileCheckX(b,c,d),0!==h&&!c.intersects(b.position.x-f,b.position.y-g,b.right-f,b.bottom-g)))return!0;(c.faceTop||c.faceBottom)&&(i=this.tileCheckY(b,c,d))}else{if((c.faceTop||c.faceBottom)&&(i=this.tileCheckY(b,c,d),0!==i&&!c.intersects(b.position.x-f,b.position.y-g,b.right-f,b.bottom-g)))return!0;(c.faceLeft||c.faceRight)&&(h=this.tileCheckX(b,c,d))}return 0!==h||0!==i},tileCheckX:function(a,b,c){var d=0,e=c.fixedToCamera?0:c.position.x;return a.deltaX()<0&&!a.blocked.left&&b.collideRight&&a.checkCollision.left?b.faceRight&&a.x-e0&&!a.blocked.right&&b.collideLeft&&a.checkCollision.right&&b.faceLeft&&a.right-e>b.left&&(d=a.right-e-b.left,d>this.TILE_BIAS&&(d=0)),0!==d&&(a.customSeparateX?a.overlapX=d:this.processTileSeparationX(a,d)),d},tileCheckY:function(a,b,c){var d=0,e=c.fixedToCamera?0:c.position.y;return a.deltaY()<0&&!a.blocked.up&&b.collideDown&&a.checkCollision.up?b.faceBottom&&a.y-e0&&!a.blocked.down&&b.collideUp&&a.checkCollision.down&&b.faceTop&&a.bottom-e>b.top&&(d=a.bottom-e-b.top,d>this.TILE_BIAS&&(d=0)),0!==d&&(a.customSeparateY?a.overlapY=d:this.processTileSeparationY(a,d)),d},processTileSeparationX:function(a,b){0>b?a.blocked.left=!0:b>0&&(a.blocked.right=!0),a.position.x-=b,0===a.bounce.x?a.velocity.x=0:a.velocity.x=-a.velocity.x*a.bounce.x},processTileSeparationY:function(a,b){0>b?a.blocked.up=!0:b>0&&(a.blocked.down=!0),a.position.y-=b,0===a.bounce.y?a.velocity.y=0:a.velocity.y=-a.velocity.y*a.bounce.y}},c.Utils.mixinPrototype(c.Physics.Arcade.prototype,c.Physics.Arcade.TilemapCollision.prototype),p2.Body.prototype.parent=null,p2.Spring.prototype.parent=null,c.Physics.P2=function(a,b){this.game=a,void 0===b?b={gravity:[0,0],broadphase:new p2.SAPBroadphase}:(b.hasOwnProperty("gravity")||(b.gravity=[0,0]),b.hasOwnProperty("broadphase")||(b.broadphase=new p2.SAPBroadphase)),this.config=b,this.world=new p2.World(this.config),this.frameRate=1/60,this.useElapsedTime=!1,this.paused=!1,this.materials=[],this.gravity=new c.Physics.P2.InversePointProxy(this,this.world.gravity),this.walls={left:null,right:null,top:null,bottom:null},this.onBodyAdded=new c.Signal,this.onBodyRemoved=new c.Signal,this.onSpringAdded=new c.Signal,this.onSpringRemoved=new c.Signal,this.onConstraintAdded=new c.Signal,this.onConstraintRemoved=new c.Signal,this.onContactMaterialAdded=new c.Signal,this.onContactMaterialRemoved=new c.Signal,this.postBroadphaseCallback=null,this.callbackContext=null,this.onBeginContact=new c.Signal,this.onEndContact=new c.Signal,b.hasOwnProperty("mpx")&&b.hasOwnProperty("pxm")&&b.hasOwnProperty("mpxi")&&b.hasOwnProperty("pxmi")&&(this.mpx=b.mpx,this.mpxi=b.mpxi,this.pxm=b.pxm,this.pxmi=b.pxmi),this.world.on("beginContact",this.beginContactHandler,this),this.world.on("endContact",this.endContactHandler,this),this.collisionGroups=[],this.nothingCollisionGroup=new c.Physics.P2.CollisionGroup(1),this.boundsCollisionGroup=new c.Physics.P2.CollisionGroup(2),this.everythingCollisionGroup=new c.Physics.P2.CollisionGroup(2147483648),this.boundsCollidesWith=[],this._toRemove=[],this._collisionGroupID=2,this._boundsLeft=!0,this._boundsRight=!0,this._boundsTop=!0,this._boundsBottom=!0,this._boundsOwnGroup=!1,this.setBoundsToWorld(!0,!0,!0,!0,!1)},c.Physics.P2.prototype={removeBodyNextStep:function(a){this._toRemove.push(a)},preUpdate:function(){for(var a=this._toRemove.length;a--;)this.removeBody(this._toRemove[a]);this._toRemove.length=0},enable:function(a,b,d){void 0===b&&(b=!1),void 0===d&&(d=!0);var e=1;if(Array.isArray(a))for(e=a.length;e--;)a[e]instanceof c.Group?this.enable(a[e].children,b,d):(this.enableBody(a[e],b),d&&a[e].hasOwnProperty("children")&&a[e].children.length>0&&this.enable(a[e],b,!0));else a instanceof c.Group?this.enable(a.children,b,d):(this.enableBody(a,b),d&&a.hasOwnProperty("children")&&a.children.length>0&&this.enable(a.children,b,!0))},enableBody:function(a,b){a.hasOwnProperty("body")&&null===a.body&&(a.body=new c.Physics.P2.Body(this.game,a,a.x,a.y,1),a.body.debug=b,"undefined"!=typeof a.anchor&&a.anchor.set(.5))},setImpactEvents:function(a){a?this.world.on("impact",this.impactHandler,this):this.world.off("impact",this.impactHandler,this)},setPostBroadphaseCallback:function(a,b){this.postBroadphaseCallback=a,this.callbackContext=b,null!==a?this.world.on("postBroadphase",this.postBroadphaseHandler,this):this.world.off("postBroadphase",this.postBroadphaseHandler,this)},postBroadphaseHandler:function(a){if(this.postBroadphaseCallback&&0!==a.pairs.length)for(var b=a.pairs.length-2;b>=0;b-=2)a.pairs[b].parent&&a.pairs[b+1].parent&&!this.postBroadphaseCallback.call(this.callbackContext,a.pairs[b].parent,a.pairs[b+1].parent)&&a.pairs.splice(b,2)},impactHandler:function(a){if(a.bodyA.parent&&a.bodyB.parent){var b=a.bodyA.parent,c=a.bodyB.parent;b._bodyCallbacks[a.bodyB.id]&&b._bodyCallbacks[a.bodyB.id].call(b._bodyCallbackContext[a.bodyB.id],b,c,a.shapeA,a.shapeB),c._bodyCallbacks[a.bodyA.id]&&c._bodyCallbacks[a.bodyA.id].call(c._bodyCallbackContext[a.bodyA.id],c,b,a.shapeB,a.shapeA),b._groupCallbacks[a.shapeB.collisionGroup]&&b._groupCallbacks[a.shapeB.collisionGroup].call(b._groupCallbackContext[a.shapeB.collisionGroup],b,c,a.shapeA,a.shapeB),c._groupCallbacks[a.shapeA.collisionGroup]&&c._groupCallbacks[a.shapeA.collisionGroup].call(c._groupCallbackContext[a.shapeA.collisionGroup],c,b,a.shapeB,a.shapeA)}},beginContactHandler:function(a){a.bodyA&&a.bodyB&&(this.onBeginContact.dispatch(a.bodyA,a.bodyB,a.shapeA,a.shapeB,a.contactEquations),a.bodyA.parent&&a.bodyA.parent.onBeginContact.dispatch(a.bodyB.parent,a.bodyB,a.shapeA,a.shapeB,a.contactEquations),a.bodyB.parent&&a.bodyB.parent.onBeginContact.dispatch(a.bodyA.parent,a.bodyA,a.shapeB,a.shapeA,a.contactEquations))},endContactHandler:function(a){a.bodyA&&a.bodyB&&(this.onEndContact.dispatch(a.bodyA,a.bodyB,a.shapeA,a.shapeB),a.bodyA.parent&&a.bodyA.parent.onEndContact.dispatch(a.bodyB.parent,a.bodyB,a.shapeA,a.shapeB),a.bodyB.parent&&a.bodyB.parent.onEndContact.dispatch(a.bodyA.parent,a.bodyA,a.shapeB,a.shapeA))},setBoundsToWorld:function(a,b,c,d,e){this.setBounds(this.game.world.bounds.x,this.game.world.bounds.y,this.game.world.bounds.width,this.game.world.bounds.height,a,b,c,d,e)},setWorldMaterial:function(a,b,c,d,e){void 0===b&&(b=!0),void 0===c&&(c=!0),void 0===d&&(d=!0),void 0===e&&(e=!0),b&&this.walls.left&&(this.walls.left.shapes[0].material=a),c&&this.walls.right&&(this.walls.right.shapes[0].material=a),d&&this.walls.top&&(this.walls.top.shapes[0].material=a),e&&this.walls.bottom&&(this.walls.bottom.shapes[0].material=a)},updateBoundsCollisionGroup:function(a){void 0===a&&(a=!0);var b=a?this.boundsCollisionGroup.mask:this.everythingCollisionGroup.mask;this.walls.left&&(this.walls.left.shapes[0].collisionGroup=b),this.walls.right&&(this.walls.right.shapes[0].collisionGroup=b),this.walls.top&&(this.walls.top.shapes[0].collisionGroup=b),this.walls.bottom&&(this.walls.bottom.shapes[0].collisionGroup=b),this._boundsOwnGroup=a},setBounds:function(a,b,c,d,e,f,g,h,i){void 0===e&&(e=this._boundsLeft),void 0===f&&(f=this._boundsRight),void 0===g&&(g=this._boundsTop),void 0===h&&(h=this._boundsBottom),void 0===i&&(i=this._boundsOwnGroup),this.setupWall(e,"left",a,b,1.5707963267948966,i),this.setupWall(f,"right",a+c,b,-1.5707963267948966,i),this.setupWall(g,"top",a,b,-3.141592653589793,i),this.setupWall(h,"bottom",a,b+d,0,i),this._boundsLeft=e,this._boundsRight=f,this._boundsTop=g,this._boundsBottom=h,this._boundsOwnGroup=i},setupWall:function(a,b,c,d,e,f){a?this.walls[b]?this.walls[b].position=[this.pxmi(c),this.pxmi(d)]:(this.walls[b]=new p2.Body({mass:0,position:[this.pxmi(c),this.pxmi(d)],angle:e}),this.walls[b].addShape(new p2.Plane),f&&(this.walls[b].shapes[0].collisionGroup=this.boundsCollisionGroup.mask),this.world.addBody(this.walls[b])):this.walls[b]&&(this.world.removeBody(this.walls[b]),this.walls[b]=null)},pause:function(){this.paused=!0},resume:function(){this.paused=!1},update:function(){this.paused||(this.useElapsedTime?this.world.step(this.game.time.physicsElapsed):this.world.step(this.frameRate))},reset:function(){this.world.on("beginContact",this.beginContactHandler,this),this.world.on("endContact",this.endContactHandler,this),this.nothingCollisionGroup=new c.Physics.P2.CollisionGroup(1),this.boundsCollisionGroup=new c.Physics.P2.CollisionGroup(2),this.everythingCollisionGroup=new c.Physics.P2.CollisionGroup(2147483648),this._collisionGroupID=2,this.setBoundsToWorld(!0,!0,!0,!0,!1)},clear:function(){this.world.time=0,this.world.fixedStepTime=0,this.world.solver&&this.world.solver.equations.length&&this.world.solver.removeAllEquations();for(var a=this.world.constraints,b=a.length-1;b>=0;b--)this.world.removeConstraint(a[b]);for(var c=this.world.bodies,b=c.length-1;b>=0;b--)this.world.removeBody(c[b]);for(var d=this.world.springs,b=d.length-1;b>=0;b--)this.world.removeSpring(d[b]);for(var e=this.world.contactMaterials,b=e.length-1;b>=0;b--)this.world.removeContactMaterial(e[b]);this.world.off("beginContact",this.beginContactHandler,this),this.world.off("endContact",this.endContactHandler,this),this.postBroadphaseCallback=null,this.callbackContext=null,this.impactCallback=null,this.collisionGroups=[],this._toRemove=[],this.boundsCollidesWith=[]},destroy:function(){this.clear(),this.game=null},addBody:function(a){return a.data.world?!1:(this.world.addBody(a.data),this.onBodyAdded.dispatch(a),!0)},removeBody:function(a){return a.data.world==this.world&&(this.world.removeBody(a.data),this.onBodyRemoved.dispatch(a)),a},addSpring:function(a){return a instanceof c.Physics.P2.Spring||a instanceof c.Physics.P2.RotationalSpring?this.world.addSpring(a.data):this.world.addSpring(a),this.onSpringAdded.dispatch(a),a},removeSpring:function(a){return a instanceof c.Physics.P2.Spring||a instanceof c.Physics.P2.RotationalSpring?this.world.removeSpring(a.data):this.world.removeSpring(a),this.onSpringRemoved.dispatch(a),a},createDistanceConstraint:function(a,b,d,e,f,g){return a=this.getBody(a),b=this.getBody(b),a&&b?this.addConstraint(new c.Physics.P2.DistanceConstraint(this,a,b,d,e,f,g)):void console.warn("Cannot create Constraint, invalid body objects given")},createGearConstraint:function(a,b,d,e){return a=this.getBody(a),b=this.getBody(b),a&&b?this.addConstraint(new c.Physics.P2.GearConstraint(this,a,b,d,e)):void console.warn("Cannot create Constraint, invalid body objects given")},createRevoluteConstraint:function(a,b,d,e,f,g){return a=this.getBody(a),d=this.getBody(d),a&&d?this.addConstraint(new c.Physics.P2.RevoluteConstraint(this,a,b,d,e,f,g)):void console.warn("Cannot create Constraint, invalid body objects given")},createLockConstraint:function(a,b,d,e,f){return a=this.getBody(a),b=this.getBody(b),a&&b?this.addConstraint(new c.Physics.P2.LockConstraint(this,a,b,d,e,f)):void console.warn("Cannot create Constraint, invalid body objects given")},createPrismaticConstraint:function(a,b,d,e,f,g,h){return a=this.getBody(a),b=this.getBody(b),a&&b?this.addConstraint(new c.Physics.P2.PrismaticConstraint(this,a,b,d,e,f,g,h)):void console.warn("Cannot create Constraint, invalid body objects given")},addConstraint:function(a){return this.world.addConstraint(a),this.onConstraintAdded.dispatch(a),a},removeConstraint:function(a){return this.world.removeConstraint(a),this.onConstraintRemoved.dispatch(a),a},addContactMaterial:function(a){return this.world.addContactMaterial(a),this.onContactMaterialAdded.dispatch(a),a},removeContactMaterial:function(a){return this.world.removeContactMaterial(a),this.onContactMaterialRemoved.dispatch(a),a},getContactMaterial:function(a,b){return this.world.getContactMaterial(a,b)},setMaterial:function(a,b){for(var c=b.length;c--;)b[c].setMaterial(a)},createMaterial:function(a,b){a=a||"";var d=new c.Physics.P2.Material(a);return this.materials.push(d),"undefined"!=typeof b&&b.setMaterial(d),d},createContactMaterial:function(a,b,d){void 0===a&&(a=this.createMaterial()),void 0===b&&(b=this.createMaterial());var e=new c.Physics.P2.ContactMaterial(a,b,d);return this.addContactMaterial(e)},getBodies:function(){for(var a=[],b=this.world.bodies.length;b--;)a.push(this.world.bodies[b].parent);return a},getBody:function(a){return a instanceof p2.Body?a:a instanceof c.Physics.P2.Body?a.data:a.body&&a.body.type===c.Physics.P2JS?a.body.data:null},getSprings:function(){for(var a=[],b=this.world.springs.length;b--;)a.push(this.world.springs[b].parent);return a},getConstraints:function(){for(var a=[],b=this.world.constraints.length;b--;)a.push(this.world.constraints[b]);return a},hitTest:function(a,b,d,e){void 0===b&&(b=this.world.bodies),void 0===d&&(d=5),void 0===e&&(e=!1);for(var f=[this.pxmi(a.x),this.pxmi(a.y)],g=[],h=b.length;h--;)b[h]instanceof c.Physics.P2.Body&&(!e||b[h].data.type!==p2.Body.STATIC)?g.push(b[h].data):b[h]instanceof p2.Body&&b[h].parent&&(!e||b[h].type!==p2.Body.STATIC)?g.push(b[h]):b[h]instanceof c.Sprite&&b[h].hasOwnProperty("body")&&(!e||b[h].body.data.type!==p2.Body.STATIC)&&g.push(b[h].body.data);return this.world.hitTest(f,g,d)},toJSON:function(){return this.world.toJSON()},createCollisionGroup:function(a){var b=Math.pow(2,this._collisionGroupID);this.walls.left&&(this.walls.left.shapes[0].collisionMask=this.walls.left.shapes[0].collisionMask|b),this.walls.right&&(this.walls.right.shapes[0].collisionMask=this.walls.right.shapes[0].collisionMask|b),this.walls.top&&(this.walls.top.shapes[0].collisionMask=this.walls.top.shapes[0].collisionMask|b),this.walls.bottom&&(this.walls.bottom.shapes[0].collisionMask=this.walls.bottom.shapes[0].collisionMask|b),this._collisionGroupID++;var d=new c.Physics.P2.CollisionGroup(b);return this.collisionGroups.push(d),a&&this.setCollisionGroup(a,d),d},setCollisionGroup:function(a,b){if(a instanceof c.Group)for(var d=0;de;e++){var g=a.collision[b][e],h=this.createBody(g.x,g.y,0,c,{},g.polyline);h&&d.push(h)}return d},clearTilemapLayerBodies:function(a,b){b=a.getLayer(b);for(var c=a.layers[b].bodies.length;c--;)a.layers[b].bodies[c].destroy();a.layers[b].bodies.length=0},convertTilemap:function(a,b,c,d){b=a.getLayer(b),void 0===c&&(c=!0),void 0===d&&(d=!0),this.clearTilemapLayerBodies(a,b);for(var e=0,f=0,g=0,h=0,i=a.layers[b].height;i>h;h++){e=0;for(var j=0,k=a.layers[b].width;k>j;j++){var l=a.layers[b].data[h][j];if(l&&l.index>-1&&l.collides)if(d){var m=a.getTileRight(b,j,h);if(0===e&&(f=l.x*l.width,g=l.y*l.height,e=l.width),m&&m.collides)e+=l.width;else{var n=this.createBody(f,g,0,!1);n.addRectangle(e,l.height,e/2,l.height/2,0),c&&this.addBody(n),a.layers[b].bodies.push(n),e=0}}else{var n=this.createBody(l.x*l.width,l.y*l.height,0,!1);n.addRectangle(l.width,l.height,l.width/2,l.height/2,0),c&&this.addBody(n),a.layers[b].bodies.push(n)}}}return a.layers[b].bodies},mpx:function(a){return a*=20},pxm:function(a){return.05*a},mpxi:function(a){return a*=-20},pxmi:function(a){return a*-.05}},Object.defineProperty(c.Physics.P2.prototype,"friction",{get:function(){return this.world.defaultContactMaterial.friction},set:function(a){this.world.defaultContactMaterial.friction=a}}),Object.defineProperty(c.Physics.P2.prototype,"restitution",{get:function(){return this.world.defaultContactMaterial.restitution},set:function(a){this.world.defaultContactMaterial.restitution=a}}),Object.defineProperty(c.Physics.P2.prototype,"contactMaterial",{get:function(){return this.world.defaultContactMaterial},set:function(a){this.world.defaultContactMaterial=a}}),Object.defineProperty(c.Physics.P2.prototype,"applySpringForces",{get:function(){return this.world.applySpringForces},set:function(a){this.world.applySpringForces=a}}),Object.defineProperty(c.Physics.P2.prototype,"applyDamping",{get:function(){return this.world.applyDamping},set:function(a){ -this.world.applyDamping=a}}),Object.defineProperty(c.Physics.P2.prototype,"applyGravity",{get:function(){return this.world.applyGravity},set:function(a){this.world.applyGravity=a}}),Object.defineProperty(c.Physics.P2.prototype,"solveConstraints",{get:function(){return this.world.solveConstraints},set:function(a){this.world.solveConstraints=a}}),Object.defineProperty(c.Physics.P2.prototype,"time",{get:function(){return this.world.time}}),Object.defineProperty(c.Physics.P2.prototype,"emitImpactEvent",{get:function(){return this.world.emitImpactEvent},set:function(a){this.world.emitImpactEvent=a}}),Object.defineProperty(c.Physics.P2.prototype,"sleepMode",{get:function(){return this.world.sleepMode},set:function(a){this.world.sleepMode=a}}),Object.defineProperty(c.Physics.P2.prototype,"total",{get:function(){return this.world.bodies.length}}),c.Physics.P2.FixtureList=function(a){Array.isArray(a)||(a=[a]),this.rawList=a,this.init(),this.parse(this.rawList)},c.Physics.P2.FixtureList.prototype={init:function(){this.namedFixtures={},this.groupedFixtures=[],this.allFixtures=[]},setCategory:function(a,b){var c=function(b){b.collisionGroup=a};this.getFixtures(b).forEach(c)},setMask:function(a,b){var c=function(b){b.collisionMask=a};this.getFixtures(b).forEach(c)},setSensor:function(a,b){var c=function(b){b.sensor=a};this.getFixtures(b).forEach(c)},setMaterial:function(a,b){var c=function(b){b.material=a};this.getFixtures(b).forEach(c)},getFixtures:function(a){var b=[];if(a){a instanceof Array||(a=[a]);var c=this;return a.forEach(function(a){c.namedFixtures[a]&&b.push(c.namedFixtures[a])}),this.flatten(b)}return this.allFixtures},getFixtureByKey:function(a){return this.namedFixtures[a]},getGroup:function(a){return this.groupedFixtures[a]},parse:function(){var a,b,c,d;c=this.rawList,d=[];for(a in c)b=c[a],isNaN(a-0)?this.namedFixtures[a]=this.flatten(b):(this.groupedFixtures[a]=this.groupedFixtures[a]||[],this.groupedFixtures[a]=this.groupedFixtures[a].concat(b)),d.push(this.allFixtures=this.flatten(this.groupedFixtures))},flatten:function(a){var b,c;return b=[],c=arguments.callee,a.forEach(function(a){return Array.prototype.push.apply(b,Array.isArray(a)?c(a):[a])}),b}},c.Physics.P2.PointProxy=function(a,b){this.world=a,this.destination=b},c.Physics.P2.PointProxy.prototype.constructor=c.Physics.P2.PointProxy,Object.defineProperty(c.Physics.P2.PointProxy.prototype,"x",{get:function(){return this.world.mpx(this.destination[0])},set:function(a){this.destination[0]=this.world.pxm(a)}}),Object.defineProperty(c.Physics.P2.PointProxy.prototype,"y",{get:function(){return this.world.mpx(this.destination[1])},set:function(a){this.destination[1]=this.world.pxm(a)}}),Object.defineProperty(c.Physics.P2.PointProxy.prototype,"mx",{get:function(){return this.destination[0]},set:function(a){this.destination[0]=a}}),Object.defineProperty(c.Physics.P2.PointProxy.prototype,"my",{get:function(){return this.destination[1]},set:function(a){this.destination[1]=a}}),c.Physics.P2.InversePointProxy=function(a,b){this.world=a,this.destination=b},c.Physics.P2.InversePointProxy.prototype.constructor=c.Physics.P2.InversePointProxy,Object.defineProperty(c.Physics.P2.InversePointProxy.prototype,"x",{get:function(){return this.world.mpxi(this.destination[0])},set:function(a){this.destination[0]=this.world.pxmi(a)}}),Object.defineProperty(c.Physics.P2.InversePointProxy.prototype,"y",{get:function(){return this.world.mpxi(this.destination[1])},set:function(a){this.destination[1]=this.world.pxmi(a)}}),Object.defineProperty(c.Physics.P2.InversePointProxy.prototype,"mx",{get:function(){return this.destination[0]},set:function(a){this.destination[0]=-a}}),Object.defineProperty(c.Physics.P2.InversePointProxy.prototype,"my",{get:function(){return this.destination[1]},set:function(a){this.destination[1]=-a}}),c.Physics.P2.Body=function(a,b,d,e,f){b=b||null,d=d||0,e=e||0,void 0===f&&(f=1),this.game=a,this.world=a.physics.p2,this.sprite=b,this.type=c.Physics.P2JS,this.offset=new c.Point,this.data=new p2.Body({position:[this.world.pxmi(d),this.world.pxmi(e)],mass:f}),this.data.parent=this,this.velocity=new c.Physics.P2.InversePointProxy(this.world,this.data.velocity),this.force=new c.Physics.P2.InversePointProxy(this.world,this.data.force),this.gravity=new c.Point,this.onBeginContact=new c.Signal,this.onEndContact=new c.Signal,this.collidesWith=[],this.removeNextStep=!1,this.debugBody=null,this.dirty=!1,this._collideWorldBounds=!0,this._bodyCallbacks={},this._bodyCallbackContext={},this._groupCallbacks={},this._groupCallbackContext={},this._reset=!1,b&&(this.setRectangleFromSprite(b),b.exists&&this.game.physics.p2.addBody(this))},c.Physics.P2.Body.prototype={createBodyCallback:function(a,b,c){var d=-1;a.id?d=a.id:a.body&&(d=a.body.id),d>-1&&(null===b?(delete this._bodyCallbacks[d],delete this._bodyCallbackContext[d]):(this._bodyCallbacks[d]=b,this._bodyCallbackContext[d]=c))},createGroupCallback:function(a,b,c){null===b?(delete this._groupCallbacks[a.mask],delete this._groupCallbackContext[a.mask]):(this._groupCallbacks[a.mask]=b,this._groupCallbackContext[a.mask]=c)},getCollisionMask:function(){var a=0;this._collideWorldBounds&&(a=this.game.physics.p2.boundsCollisionGroup.mask);for(var b=0;b=0;c--)this.data.shapes[c].collisionMask=b;else a.collisionMask=b},setCollisionGroup:function(a,b){var c=this.getCollisionMask();if(void 0===b)for(var d=this.data.shapes.length-1;d>=0;d--)this.data.shapes[d].collisionGroup=a.mask,this.data.shapes[d].collisionMask=c;else b.collisionGroup=a.mask,b.collisionMask=c},clearCollision:function(a,b,c){if(void 0===a&&(a=!0),void 0===b&&(b=!0),void 0===c)for(var d=this.data.shapes.length-1;d>=0;d--)a&&(this.data.shapes[d].collisionGroup=null),b&&(this.data.shapes[d].collisionMask=null);else a&&(c.collisionGroup=null),b&&(c.collisionMask=null);a&&(this.collidesWith.length=0)},removeCollisionGroup:function(a,b,c){void 0===b&&(b=!0);var d;if(Array.isArray(a))for(var e=0;e-1&&(this.collidesWith.splice(d,1),b&&(delete this._groupCallbacks[a.mask],delete this._groupCallbackContext[a.mask]));else d=this.collidesWith.indexOf(a),d>-1&&(this.collidesWith.splice(d,1),b&&(delete this._groupCallbacks[a.mask],delete this._groupCallbackContext[a.mask]));var f=this.getCollisionMask();if(void 0===c)for(var e=this.data.shapes.length-1;e>=0;e--)this.data.shapes[e].collisionMask=f;else c.collisionMask=f},collides:function(a,b,c,d){if(Array.isArray(a))for(var e=0;e=0;e--)this.data.shapes[e].collisionMask=f;else d.collisionMask=f},adjustCenterOfMass:function(){this.data.adjustCenterOfMass(),this.shapeChanged()},getVelocityAtPoint:function(a,b){return this.data.getVelocityAtPoint(a,b)},applyDamping:function(a){this.data.applyDamping(a)},applyImpulse:function(a,b,c){this.data.applyImpulse(a,[this.world.pxmi(b),this.world.pxmi(c)])},applyImpulseLocal:function(a,b,c){this.data.applyImpulseLocal(a,[this.world.pxmi(b),this.world.pxmi(c)])},applyForce:function(a,b,c){this.data.applyForce(a,[this.world.pxmi(b),this.world.pxmi(c)])},setZeroForce:function(){this.data.setZeroForce()},setZeroRotation:function(){this.data.angularVelocity=0},setZeroVelocity:function(){this.data.velocity[0]=0,this.data.velocity[1]=0},setZeroDamping:function(){this.data.damping=0,this.data.angularDamping=0},toLocalFrame:function(a,b){return this.data.toLocalFrame(a,b)},toWorldFrame:function(a,b){return this.data.toWorldFrame(a,b)},rotateLeft:function(a){this.data.angularVelocity=this.world.pxm(-a)},rotateRight:function(a){this.data.angularVelocity=this.world.pxm(a)},moveForward:function(a){var b=this.world.pxmi(-a),c=this.data.angle+Math.PI/2;this.data.velocity[0]=b*Math.cos(c),this.data.velocity[1]=b*Math.sin(c)},moveBackward:function(a){var b=this.world.pxmi(-a),c=this.data.angle+Math.PI/2;this.data.velocity[0]=-(b*Math.cos(c)),this.data.velocity[1]=-(b*Math.sin(c))},thrust:function(a){var b=this.world.pxmi(-a),c=this.data.angle+Math.PI/2;this.data.force[0]+=b*Math.cos(c),this.data.force[1]+=b*Math.sin(c)},thrustLeft:function(a){var b=this.world.pxmi(-a),c=this.data.angle;this.data.force[0]+=b*Math.cos(c),this.data.force[1]+=b*Math.sin(c)},thrustRight:function(a){var b=this.world.pxmi(-a),c=this.data.angle;this.data.force[0]-=b*Math.cos(c),this.data.force[1]-=b*Math.sin(c)},reverse:function(a){var b=this.world.pxmi(-a),c=this.data.angle+Math.PI/2;this.data.force[0]-=b*Math.cos(c),this.data.force[1]-=b*Math.sin(c)},moveLeft:function(a){this.data.velocity[0]=this.world.pxmi(-a)},moveRight:function(a){this.data.velocity[0]=this.world.pxmi(a)},moveUp:function(a){this.data.velocity[1]=this.world.pxmi(-a)},moveDown:function(a){this.data.velocity[1]=this.world.pxmi(a)},preUpdate:function(){this.dirty=!0,this.removeNextStep&&(this.removeFromWorld(),this.removeNextStep=!1)},postUpdate:function(){this.sprite.x=this.world.mpxi(this.data.position[0])+this.offset.x,this.sprite.y=this.world.mpxi(this.data.position[1])+this.offset.y,this.fixedRotation||(this.sprite.rotation=this.data.angle),this.debugBody&&this.debugBody.updateSpriteTransform(),this.dirty=!1},reset:function(a,b,c,d){void 0===c&&(c=!1),void 0===d&&(d=!1),this.setZeroForce(),this.setZeroVelocity(),this.setZeroRotation(),c&&this.setZeroDamping(),d&&(this.mass=1),this.x=a,this.y=b},addToWorld:function(){if(this.game.physics.p2._toRemove)for(var a=0;ad;d+=2)c.push([b[d],b[d+1]]);var f=c.length-1;c[f][0]===c[0][0]&&c[f][1]===c[0][1]&&c.pop();for(var g=0;g=0;c--)this.data.shapes[c].material=a;else b.material=a},shapeChanged:function(){this.debugBody&&this.debugBody.draw()},addPhaserPolygon:function(a,b){for(var c=this.game.cache.getPhysicsData(a,b),d=[],e=0;e=0?o>n:n>o;e=o>=0?++n:--n)k=b.vertices[e],p2.vec2.rotate(m,k,a),l.push([(m[0]+i[0])*this.ppu,-(m[1]+i[1])*this.ppu]);this.drawConvex(j,l,b.triangles,f,c,g,this.settings.debugPolygons,[i[0]*this.ppu,-i[1]*this.ppu])}d++}}},drawRectangle:function(a,b,c,d,e,f,g,h,i){void 0===i&&(i=1),void 0===g&&(g=0),a.lineStyle(i,g,1),a.beginFill(h),a.drawRect(b-e/2,c-f/2,e,f)},drawCircle:function(a,b,c,d,e,f,g){void 0===g&&(g=1),void 0===f&&(f=16777215),a.lineStyle(g,0,1),a.beginFill(f,1),a.drawCircle(b,c,2*-e),a.endFill(),a.moveTo(b,c),a.lineTo(b+e*Math.cos(-d),c+e*Math.sin(-d))},drawLine:function(a,b,c,d){void 0===d&&(d=1),void 0===c&&(c=0),a.lineStyle(5*d,c,1),a.moveTo(-b/2,0),a.lineTo(b/2,0)},drawConvex:function(a,b,c,d,e,f,g,h){var i,j,k,l,m,n,o,p,q,r,s;if(void 0===f&&(f=1),void 0===d&&(d=0),g){for(i=[16711680,65280,255],j=0;j!==b.length+1;)l=b[j%b.length],m=b[(j+1)%b.length],o=l[0],r=l[1],p=m[0],s=m[1],a.lineStyle(f,i[j%i.length],1),a.moveTo(o,-r),a.lineTo(p,-s),a.drawCircle(o,-r,2*f),j++;return a.lineStyle(f,0,1),a.drawCircle(h[0],h[1],2*f)}for(a.lineStyle(f,d,1),a.beginFill(e),j=0;j!==b.length;)k=b[j],n=k[0],q=k[1],0===j?a.moveTo(n,-q):a.lineTo(n,-q),j++;return a.endFill(),b.length>2?(a.moveTo(b[b.length-1][0],-b[b.length-1][1]),a.lineTo(b[0][0],-b[0][1])):void 0},drawPath:function(a,b,c,d,e){var f,g,h,i,j,k,l,m,n,o,p,q,r;for(void 0===e&&(e=1),void 0===c&&(c=0),a.lineStyle(e,c,1),"number"==typeof d&&a.beginFill(d),h=null,i=null,g=0;g2&&"number"==typeof d&&(a.moveTo(b[b.length-1][0],b[b.length-1][1]),a.lineTo(b[0][0],b[0][1]))},drawPlane:function(a,b,c,d,e,f,g,h,i,j){var k,l,m;void 0===f&&(f=1),void 0===d&&(d=16777215),a.lineStyle(f,e,11),a.beginFill(d),k=i,a.moveTo(b,-c),l=b+Math.cos(j)*this.game.width,m=c+Math.sin(j)*this.game.height,a.lineTo(l,-m),a.moveTo(b,-c),l=b+Math.cos(j)*-this.game.width,m=c+Math.sin(j)*-this.game.height,a.lineTo(l,-m)},drawCapsule:function(a,b,c,d,e,f,g,h,i){void 0===i&&(i=1),void 0===g&&(g=0),a.lineStyle(i,g,1);var j=Math.cos(d),k=Math.sin(d);a.beginFill(h,1),a.drawCircle(-e/2*j+b,-e/2*k+c,2*-f),a.drawCircle(e/2*j+b,e/2*k+c,2*-f),a.endFill(),a.lineStyle(i,g,0),a.beginFill(h,1),a.moveTo(-e/2*j+f*k+b,-e/2*k+f*j+c),a.lineTo(e/2*j+f*k+b,e/2*k+f*j+c),a.lineTo(e/2*j-f*k+b,e/2*k-f*j+c),a.lineTo(-e/2*j-f*k+b,-e/2*k-f*j+c),a.endFill(),a.lineStyle(i,g,1),a.moveTo(-e/2*j+f*k+b,-e/2*k+f*j+c),a.lineTo(e/2*j+f*k+b,e/2*k+f*j+c),a.moveTo(-e/2*j-f*k+b,-e/2*k-f*j+c),a.lineTo(e/2*j-f*k+b,e/2*k-f*j+c)},randomPastelHex:function(){var a,b,c,d;return c=[255,255,255],d=Math.floor(256*Math.random()),b=Math.floor(256*Math.random()),a=Math.floor(256*Math.random()),d=Math.floor((d+3*c[0])/4),b=Math.floor((b+3*c[1])/4),a=Math.floor((a+3*c[2])/4),this.rgbToHex(d,b,a)},rgbToHex:function(a,b,c){return this.componentToHex(a)+this.componentToHex(b)+this.componentToHex(c)},componentToHex:function(a){var b;return b=a.toString(16),2===b.length?b:b+"0"}}),c.Physics.P2.Spring=function(a,b,c,d,e,f,g,h,i,j){this.game=a.game,this.world=a,void 0===d&&(d=1),void 0===e&&(e=100),void 0===f&&(f=1),d=a.pxm(d);var k={restLength:d,stiffness:e,damping:f};"undefined"!=typeof g&&null!==g&&(k.worldAnchorA=[a.pxm(g[0]),a.pxm(g[1])]),"undefined"!=typeof h&&null!==h&&(k.worldAnchorB=[a.pxm(h[0]),a.pxm(h[1])]),"undefined"!=typeof i&&null!==i&&(k.localAnchorA=[a.pxm(i[0]),a.pxm(i[1])]),"undefined"!=typeof j&&null!==j&&(k.localAnchorB=[a.pxm(j[0]),a.pxm(j[1])]),this.data=new p2.LinearSpring(b,c,k),this.data.parent=this},c.Physics.P2.Spring.prototype.constructor=c.Physics.P2.Spring,c.Physics.P2.RotationalSpring=function(a,b,c,d,e,f){this.game=a.game,this.world=a,void 0===d&&(d=null),void 0===e&&(e=100),void 0===f&&(f=1),d&&(d=a.pxm(d));var g={restAngle:d,stiffness:e,damping:f};this.data=new p2.RotationalSpring(b,c,g),this.data.parent=this},c.Physics.P2.Spring.prototype.constructor=c.Physics.P2.Spring,c.Physics.P2.Material=function(a){this.name=a,p2.Material.call(this)},c.Physics.P2.Material.prototype=Object.create(p2.Material.prototype),c.Physics.P2.Material.prototype.constructor=c.Physics.P2.Material,c.Physics.P2.ContactMaterial=function(a,b,c){p2.ContactMaterial.call(this,a,b,c)},c.Physics.P2.ContactMaterial.prototype=Object.create(p2.ContactMaterial.prototype),c.Physics.P2.ContactMaterial.prototype.constructor=c.Physics.P2.ContactMaterial,c.Physics.P2.CollisionGroup=function(a){this.mask=a},c.Physics.P2.DistanceConstraint=function(a,b,c,d,e,f,g){void 0===d&&(d=100),void 0===e&&(e=[0,0]),void 0===f&&(f=[0,0]),void 0===g&&(g=Number.MAX_VALUE),this.game=a.game,this.world=a,d=a.pxm(d),e=[a.pxmi(e[0]),a.pxmi(e[1])],f=[a.pxmi(f[0]),a.pxmi(f[1])];var h={distance:d,localAnchorA:e,localAnchorB:f,maxForce:g};p2.DistanceConstraint.call(this,b,c,h)},c.Physics.P2.DistanceConstraint.prototype=Object.create(p2.DistanceConstraint.prototype),c.Physics.P2.DistanceConstraint.prototype.constructor=c.Physics.P2.DistanceConstraint,c.Physics.P2.GearConstraint=function(a,b,c,d,e){void 0===d&&(d=0),void 0===e&&(e=1),this.game=a.game,this.world=a;var f={angle:d,ratio:e};p2.GearConstraint.call(this,b,c,f)},c.Physics.P2.GearConstraint.prototype=Object.create(p2.GearConstraint.prototype),c.Physics.P2.GearConstraint.prototype.constructor=c.Physics.P2.GearConstraint,c.Physics.P2.LockConstraint=function(a,b,c,d,e,f){void 0===d&&(d=[0,0]),void 0===e&&(e=0),void 0===f&&(f=Number.MAX_VALUE),this.game=a.game,this.world=a,d=[a.pxm(d[0]),a.pxm(d[1])];var g={localOffsetB:d,localAngleB:e,maxForce:f};p2.LockConstraint.call(this,b,c,g)},c.Physics.P2.LockConstraint.prototype=Object.create(p2.LockConstraint.prototype),c.Physics.P2.LockConstraint.prototype.constructor=c.Physics.P2.LockConstraint,c.Physics.P2.PrismaticConstraint=function(a,b,c,d,e,f,g,h){void 0===d&&(d=!0),void 0===e&&(e=[0,0]),void 0===f&&(f=[0,0]),void 0===g&&(g=[0,0]),void 0===h&&(h=Number.MAX_VALUE),this.game=a.game,this.world=a,e=[a.pxmi(e[0]),a.pxmi(e[1])],f=[a.pxmi(f[0]),a.pxmi(f[1])];var i={localAnchorA:e,localAnchorB:f,localAxisA:g,maxForce:h,disableRotationalLock:!d};p2.PrismaticConstraint.call(this,b,c,i)},c.Physics.P2.PrismaticConstraint.prototype=Object.create(p2.PrismaticConstraint.prototype),c.Physics.P2.PrismaticConstraint.prototype.constructor=c.Physics.P2.PrismaticConstraint,c.Physics.P2.RevoluteConstraint=function(a,b,c,d,e,f,g){void 0===f&&(f=Number.MAX_VALUE),void 0===g&&(g=null),this.game=a.game,this.world=a,c=[a.pxmi(c[0]),a.pxmi(c[1])],e=[a.pxmi(e[0]),a.pxmi(e[1])],g&&(g=[a.pxmi(g[0]),a.pxmi(g[1])]);var h={worldPivot:g,localPivotA:c,localPivotB:e,maxForce:f};p2.RevoluteConstraint.call(this,b,d,h)},c.Physics.P2.RevoluteConstraint.prototype=Object.create(p2.RevoluteConstraint.prototype),c.Physics.P2.RevoluteConstraint.prototype.constructor=c.Physics.P2.RevoluteConstraint,c.ImageCollection=function(a,b,c,d,e,f,g){(void 0===c||0>=c)&&(c=32),(void 0===d||0>=d)&&(d=32),void 0===e&&(e=0),void 0===f&&(f=0),this.name=a,this.firstgid=0|b,this.imageWidth=0|c,this.imageHeight=0|d,this.imageMargin=0|e,this.imageSpacing=0|f,this.properties=g||{},this.images=[],this.total=0},c.ImageCollection.prototype={containsImageIndex:function(a){return a>=this.firstgid&&athis.right||b>this.bottom)},intersects:function(a,b,c,d){return c<=this.worldX?!1:d<=this.worldY?!1:a>=this.worldX+this.width?!1:b>=this.worldY+this.height?!1:!0},setCollisionCallback:function(a,b){this.collisionCallback=a,this.collisionCallbackContext=b},destroy:function(){this.collisionCallback=null,this.collisionCallbackContext=null,this.properties=null},setCollision:function(a,b,c,d){this.collideLeft=a,this.collideRight=b,this.collideUp=c,this.collideDown=d,this.faceLeft=a,this.faceRight=b,this.faceTop=c,this.faceBottom=d},resetCollision:function(){this.collideLeft=!1,this.collideRight=!1,this.collideUp=!1,this.collideDown=!1,this.faceTop=!1,this.faceBottom=!1,this.faceLeft=!1,this.faceRight=!1},isInteresting:function(a,b){return a&&b?this.collideLeft||this.collideRight||this.collideUp||this.collideDown||this.faceTop||this.faceBottom||this.faceLeft||this.faceRight||this.collisionCallback:a?this.collideLeft||this.collideRight||this.collideUp||this.collideDown:b?this.faceTop||this.faceBottom||this.faceLeft||this.faceRight:!1},copy:function(a){this.index=a.index,this.alpha=a.alpha,this.properties=a.properties,this.collideUp=a.collideUp,this.collideDown=a.collideDown,this.collideLeft=a.collideLeft,this.collideRight=a.collideRight,this.collisionCallback=a.collisionCallback,this.collisionCallbackContext=a.collisionCallbackContext}},c.Tile.prototype.constructor=c.Tile,Object.defineProperty(c.Tile.prototype,"collides",{get:function(){return this.collideLeft||this.collideRight||this.collideUp||this.collideDown}}),Object.defineProperty(c.Tile.prototype,"canCollide",{get:function(){return this.collideLeft||this.collideRight||this.collideUp||this.collideDown||this.collisionCallback}}),Object.defineProperty(c.Tile.prototype,"left",{get:function(){return this.worldX}}),Object.defineProperty(c.Tile.prototype,"right",{get:function(){return this.worldX+this.width}}),Object.defineProperty(c.Tile.prototype,"top",{get:function(){return this.worldY}}),Object.defineProperty(c.Tile.prototype,"bottom",{get:function(){return this.worldY+this.height}}),c.Tilemap=function(a,b,d,e,f,g){this.game=a,this.key=b;var h=c.TilemapParser.parse(this.game,b,d,e,f,g);null!==h&&(this.width=h.width,this.height=h.height,this.tileWidth=h.tileWidth,this.tileHeight=h.tileHeight,this.orientation=h.orientation,this.format=h.format,this.version=h.version,this.properties=h.properties,this.widthInPixels=h.widthInPixels,this.heightInPixels=h.heightInPixels,this.layers=h.layers,this.tilesets=h.tilesets,this.imagecollections=h.imagecollections,this.tiles=h.tiles,this.objects=h.objects,this.collideIndexes=[],this.collision=h.collision,this.images=h.images,this.currentLayer=0,this.debugMap=[],this._results=[],this._tempA=0,this._tempB=0)},c.Tilemap.CSV=0,c.Tilemap.TILED_JSON=1,c.Tilemap.NORTH=0,c.Tilemap.EAST=1,c.Tilemap.SOUTH=2,c.Tilemap.WEST=3,c.Tilemap.prototype={create:function(a,b,c,d,e,f){return void 0===f&&(f=this.game.world),this.width=b,this.height=c,this.setTileSize(d,e),this.layers.length=0,this.createBlankLayer(a,b,c,d,e,f)},setTileSize:function(a,b){this.tileWidth=a,this.tileHeight=b,this.widthInPixels=this.width*a,this.heightInPixels=this.height*b},addTilesetImage:function(a,b,d,e,f,g,h){if(void 0===a)return null;void 0===d&&(d=this.tileWidth),void 0===e&&(e=this.tileHeight),void 0===f&&(f=0),void 0===g&&(g=0),void 0===h&&(h=0),0===d&&(d=32),0===e&&(e=32);var i=null;if((void 0===b||null===b)&&(b=a),b instanceof c.BitmapData)i=b.canvas;else{if(!this.game.cache.checkImageKey(b))return console.warn('Phaser.Tilemap.addTilesetImage: Invalid image key given: "'+b+'"'),null;i=this.game.cache.getImage(b)}var j=this.getTilesetIndex(a);if(null===j&&this.format===c.Tilemap.TILED_JSON)return console.warn('Phaser.Tilemap.addTilesetImage: No data found in the JSON matching the tileset name: "'+a+'"'), -null;if(this.tilesets[j])return this.tilesets[j].setImage(i),this.tilesets[j];var k=new c.Tileset(a,h,d,e,f,g,{});k.setImage(i),this.tilesets.push(k);for(var l=this.tilesets.length-1,m=f,n=f,o=0,p=0,q=0,r=h;rl;l++)if(-1!==a.indexOf(this._results[l].index)){j=new g.customClass(this.game,this._results[l].worldX,this._results[l].worldY,d);for(var n in g)j[n]=g[n];f.add(j),k++}if(1===b.length)for(l=0;l1)for(l=0;lthis.layers.length?void console.warn("Tilemap.createLayer: Invalid layer ID given: "+g):f?e.add(new c.TilemapLayerGL(this.game,this,g,b,d)):e.add(new c.TilemapLayer(this.game,this,g,b,d))},createBlankLayer:function(a,b,d,e,f,g){if(void 0===g&&(g=this.game.world),null!==this.getLayerIndex(a))return void console.warn("Tilemap.createBlankLayer: Layer with matching name already exists");for(var h,i={name:a,x:0,y:0,width:b,height:d,widthInPixels:b*e,heightInPixels:d*f,alpha:1,visible:!0,properties:{},indexes:[],callbacks:[],bodies:[],data:null},j=[],k=0;d>k;k++){h=[];for(var l=0;b>l;l++)h.push(new c.Tile(i,-1,l,k,e,f));j.push(h)}i.data=j,this.layers.push(i),this.currentLayer=this.layers.length-1;var m=i.widthInPixels,n=i.heightInPixels;m>this.game.width&&(m=this.game.width),n>this.game.height&&(n=this.game.height);var j=new c.TilemapLayer(this.game,this,this.layers.length-1,m,n);return j.name=a,g.add(j)},getIndex:function(a,b){for(var c=0;ce;e++)this.layers[d].callbacks[a[e]]={callback:b,callbackContext:c}},setTileLocationCallback:function(a,b,c,d,e,f,g){if(g=this.getLayer(g),this.copy(a,b,c,d,g),!(this._results.length<2))for(var h=1;hb)){for(var f=a;b>=f;f++)this.setCollisionByIndex(f,c,d,!1);e&&this.calculateFaces(d)}},setCollisionByExclusion:function(a,b,c,d){void 0===b&&(b=!0),void 0===d&&(d=!0),c=this.getLayer(c);for(var e=0,f=this.tiles.length;f>e;e++)-1===a.indexOf(e)&&this.setCollisionByIndex(e,b,c,!1);d&&this.calculateFaces(c)},setCollisionByIndex:function(a,b,c,d){if(void 0===b&&(b=!0),void 0===c&&(c=this.currentLayer),void 0===d&&(d=!0),b)this.collideIndexes.push(a);else{var e=this.collideIndexes.indexOf(a);e>-1&&this.collideIndexes.splice(e,1)}for(var f=0;ff;f++)for(var h=0,i=this.layers[a].width;i>h;h++){var j=this.layers[a].data[f][h];j&&(b=this.getTileAbove(a,h,f),c=this.getTileBelow(a,h,f),d=this.getTileLeft(a,h,f),e=this.getTileRight(a,h,f),j.collides&&(j.faceTop=!0,j.faceBottom=!0,j.faceLeft=!0,j.faceRight=!0),b&&b.collides&&(j.faceTop=!1),c&&c.collides&&(j.faceBottom=!1),d&&d.collides&&(j.faceLeft=!1),e&&e.collides&&(j.faceRight=!1))}},getTileAbove:function(a,b,c){return c>0?this.layers[a].data[c-1][b]:null},getTileBelow:function(a,b,c){return c0?this.layers[a].data[c][b-1]:null},getTileRight:function(a,b,c){return b-1},removeTile:function(a,b,d){if(d=this.getLayer(d),a>=0&&a=0&&b=0&&b=0&&d-1?this.layers[e].data[d][b].setCollision(!0,!0,!0,!0):this.layers[e].data[d][b].resetCollision(),this.layers[e].dirty=!0,this.calculateFaces(e),this.layers[e].data[d][b]}return null},putTileWorldXY:function(a,b,c,d,e,f){return f=this.getLayer(f),b=this.game.math.snapToFloor(b,d)/d,c=this.game.math.snapToFloor(c,e)/e,this.putTile(a,b,c,f)},searchTileIndex:function(a,b,c,d){void 0===b&&(b=0),void 0===c&&(c=!1),d=this.getLayer(d);var e=0;if(c){for(var f=this.layers[d].height-1;f>=0;f--)for(var g=this.layers[d].width-1;g>=0;g--)if(this.layers[d].data[f][g].index===a){if(e===b)return this.layers[d].data[f][g];e++}}else for(var f=0;f=0&&a=0&&ba&&(a=0),0>b&&(b=0),c>this.layers[e].width&&(c=this.layers[e].width),d>this.layers[e].height&&(d=this.layers[e].height),this._results.length=0,this._results.push({x:a,y:b,width:c,height:d,layer:e});for(var f=b;b+d>f;f++)for(var g=a;a+c>g;g++)this._results.push(this.layers[e].data[f][g]);return this._results},paste:function(a,b,c,d){if(void 0===a&&(a=0),void 0===b&&(b=0),d=this.getLayer(d),c&&!(c.length<2)){for(var e=a-c[1].x,f=b-c[1].y,g=1;g1?this.debugMap[this.layers[this.currentLayer].data[c][d]]?b.push("background: "+this.debugMap[this.layers[this.currentLayer].data[c][d]]):b.push("background: #ffffff"):b.push("background: rgb(0, 0, 0)");a+="\n"}b[0]=a,console.log.apply(console,b)},destroy:function(){this.removeAllLayers(),this.data=[],this.game=null}},c.Tilemap.prototype.constructor=c.Tilemap,Object.defineProperty(c.Tilemap.prototype,"layer",{get:function(){return this.layers[this.currentLayer]},set:function(a){a!==this.currentLayer&&this.setLayer(a)}}),c.TilemapLayer=function(a,b,d,e,f){e|=0,f|=0,c.Sprite.call(this,a,0,0),this.map=b,this.index=d,this.layer=b.layers[d],this.canvas=PIXI.CanvasPool.create(this,e,f),this.context=this.canvas.getContext("2d"),this.setTexture(new PIXI.Texture(new PIXI.BaseTexture(this.canvas))),this.type=c.TILEMAPLAYER,this.physicsType=c.TILEMAPLAYER,this.renderSettings={enableScrollDelta:!1,overdrawRatio:.2,copyCanvas:null},this.debug=!1,this.exists=!0,this.debugSettings={missingImageFill:"rgb(255,255,255)",debuggedTileOverfill:"rgba(0,255,0,0.4)",forceFullRedraw:!0,debugAlpha:.5,facingEdgeStroke:"rgba(0,255,0,1)",collidingTileOverfill:"rgba(0,255,0,0.2)"},this.scrollFactorX=1,this.scrollFactorY=1,this.dirty=!0,this.rayStepRate=4,this._wrap=!1,this._mc={scrollX:0,scrollY:0,renderWidth:0,renderHeight:0,tileWidth:b.tileWidth,tileHeight:b.tileHeight,cw:b.tileWidth,ch:b.tileHeight,tilesets:[]},this._scrollX=0,this._scrollY=0,this._results=[],a.device.canvasBitBltShift||(this.renderSettings.copyCanvas=c.TilemapLayer.ensureSharedCopyCanvas()),this.fixedToCamera=!0},c.TilemapLayer.prototype=Object.create(c.Sprite.prototype),c.TilemapLayer.prototype.constructor=c.TilemapLayer,c.TilemapLayer.prototype.preUpdateCore=c.Component.Core.preUpdate,c.TilemapLayer.sharedCopyCanvas=null,c.TilemapLayer.ensureSharedCopyCanvas=function(){return this.sharedCopyCanvas||(this.sharedCopyCanvas=c.Canvas.create(2,2)),this.sharedCopyCanvas},c.TilemapLayer.prototype.preUpdate=function(){return this.preUpdateCore()},c.TilemapLayer.prototype.postUpdate=function(){this.fixedToCamera&&(this.position.x=(this.game.camera.view.x+this.cameraOffset.x)/this.game.camera.scale.x,this.position.y=(this.game.camera.view.y+this.cameraOffset.y)/this.game.camera.scale.y),this._scrollX=this.game.camera.view.x*this.scrollFactorX/this.scale.x,this._scrollY=this.game.camera.view.y*this.scrollFactorY/this.scale.y},c.TilemapLayer.prototype._renderCanvas=function(a){this.fixedToCamera&&(this.position.x=(this.game.camera.view.x+this.cameraOffset.x)/this.game.camera.scale.x,this.position.y=(this.game.camera.view.y+this.cameraOffset.y)/this.game.camera.scale.y),this._scrollX=this.game.camera.view.x*this.scrollFactorX/this.scale.x,this._scrollY=this.game.camera.view.y*this.scrollFactorY/this.scale.y,this.render(),PIXI.Sprite.prototype._renderCanvas.call(this,a)},c.TilemapLayer.prototype._renderWebGL=function(a){this.fixedToCamera&&(this.position.x=(this.game.camera.view.x+this.cameraOffset.x)/this.game.camera.scale.x,this.position.y=(this.game.camera.view.y+this.cameraOffset.y)/this.game.camera.scale.y),this._scrollX=this.game.camera.view.x*this.scrollFactorX/this.scale.x,this._scrollY=this.game.camera.view.y*this.scrollFactorY/this.scale.y,this.render(),PIXI.Sprite.prototype._renderWebGL.call(this,a)},c.TilemapLayer.prototype.destroy=function(){PIXI.CanvasPool.remove(this),c.Component.Destroy.prototype.destroy.call(this)},c.TilemapLayer.prototype.resize=function(a,b){this.canvas.width=a,this.canvas.height=b,this.texture.frame.resize(a,b),this.texture.width=a,this.texture.height=b,this.texture.crop.width=a,this.texture.crop.height=b,this.texture.baseTexture.width=a,this.texture.baseTexture.height=b,this.texture.baseTexture.dirty(),this.texture.requiresUpdate=!0,this.texture._updateUvs(),this.dirty=!0},c.TilemapLayer.prototype.resizeWorld=function(){this.game.world.setBounds(0,0,this.layer.widthInPixels*this.scale.x,this.layer.heightInPixels*this.scale.y)},c.TilemapLayer.prototype._fixX=function(a){return 1===this.scrollFactorX||0===this.scrollFactorX&&0===this.position.x?a:0===this.scrollFactorX&&0!==this.position.x?a-this.position.x:this._scrollX+(a-this._scrollX/this.scrollFactorX)},c.TilemapLayer.prototype._unfixX=function(a){return 1===this.scrollFactorX?a:this._scrollX/this.scrollFactorX+(a-this._scrollX)},c.TilemapLayer.prototype._fixY=function(a){return 1===this.scrollFactorY||0===this.scrollFactorY&&0===this.position.y?a:0===this.scrollFactorY&&0!==this.position.y?a-this.position.y:this._scrollY+(a-this._scrollY/this.scrollFactorY)},c.TilemapLayer.prototype._unfixY=function(a){return 1===this.scrollFactorY?a:this._scrollY/this.scrollFactorY+(a-this._scrollY)},c.TilemapLayer.prototype.getTileX=function(a){return Math.floor(this._fixX(a)/this._mc.tileWidth)},c.TilemapLayer.prototype.getTileY=function(a){return Math.floor(this._fixY(a)/this._mc.tileHeight)},c.TilemapLayer.prototype.getTileXY=function(a,b,c){return c.x=this.getTileX(a),c.y=this.getTileY(b),c},c.TilemapLayer.prototype.getRayCastTiles=function(a,b,c,d){b||(b=this.rayStepRate),void 0===c&&(c=!1),void 0===d&&(d=!1);var e=this.getTiles(a.x,a.y,a.width,a.height,c,d);if(0===e.length)return[];for(var f=a.coordinatesOnLine(b),g=[],h=0;hl;l++)for(var m=h;h+j>m;m++){var n=this.layer.data[l];n&&n[m]&&(g||n[m].isInteresting(e,f))&&this._results.push(n[m])}return this._results.slice()},c.TilemapLayer.prototype.resolveTileset=function(a){var b=this._mc.tilesets;if(2e3>a)for(;b.lengthb&&(g=-b,i=0),0>c&&(h=-c,j=0);var k=this.renderSettings.copyCanvas;if(k){(k.width=c&&(c=Math.max(0,c),e=Math.min(h-1,e)),f>=d&&(d=Math.max(0,d),f=Math.min(i-1,f)));var n,o,p,q,r,s,t=c*j-a,u=d*k-b,v=(c+(1<<20)*h)%h,w=(d+(1<<20)*i)%i;for(g.fillStyle=this.tileColor,q=w,s=f-d,o=u;s>=0;q++,s--,o+=k){q>=i&&(q-=i);var x=this.layer.data[q];for(p=v,r=e-c,n=t;r>=0;p++,r--,n+=j){p>=h&&(p-=h);var y=x[p];if(y&&!(y.index<0)){var z=y.index,A=l[z];void 0===A&&(A=this.resolveTileset(z)),y.alpha===m||this.debug||(g.globalAlpha=y.alpha,m=y.alpha),A?y.rotation||y.flipped?(g.save(),g.translate(n+y.centerX,o+y.centerY),g.rotate(y.rotation),y.flipped&&g.scale(-1,1),A.draw(g,-y.centerX,-y.centerY,z),g.restore()):A.draw(g,n,o,z):this.debugSettings.missingImageFill&&(g.fillStyle=this.debugSettings.missingImageFill,g.fillRect(n,o,j,k)),y.debug&&this.debugSettings.debuggedTileOverfill&&(g.fillStyle=this.debugSettings.debuggedTileOverfill,g.fillRect(n,o,j,k))}}}},c.TilemapLayer.prototype.renderDeltaScroll=function(a,b){var c=this._mc.scrollX,d=this._mc.scrollY,e=this.canvas.width,f=this.canvas.height,g=this._mc.tileWidth,h=this._mc.tileHeight,i=0,j=-g,k=0,l=-h;if(0>a?(i=e+a,j=e-1):a>0&&(j=a),0>b?(k=f+b,l=f-1):b>0&&(l=b),this.shiftCanvas(this.context,a,b),i=Math.floor((i+c)/g),j=Math.floor((j+c)/g),k=Math.floor((k+d)/h),l=Math.floor((l+d)/h),j>=i){this.context.clearRect(i*g-c,0,(j-i+1)*g,f);var m=Math.floor((0+d)/h),n=Math.floor((f-1+d)/h);this.renderRegion(c,d,i,m,j,n)}if(l>=k){this.context.clearRect(0,k*h-d,e,(l-k+1)*h);var o=Math.floor((0+c)/g),p=Math.floor((e-1+c)/g);this.renderRegion(c,d,o,k,p,l)}},c.TilemapLayer.prototype.renderFull=function(){var a=this._mc.scrollX,b=this._mc.scrollY,c=this.canvas.width,d=this.canvas.height,e=this._mc.tileWidth,f=this._mc.tileHeight,g=Math.floor(a/e),h=Math.floor((c-1+a)/e),i=Math.floor(b/f),j=Math.floor((d-1+b)/f);this.context.clearRect(0,0,c,d),this.renderRegion(a,b,g,i,h,j)},c.TilemapLayer.prototype.render=function(){var a=!1;if(this.visible){(this.dirty||this.layer.dirty)&&(this.layer.dirty=!1,a=!0);var b=this.canvas.width,c=this.canvas.height,d=0|this._scrollX,e=0|this._scrollY,f=this._mc,g=f.scrollX-d,h=f.scrollY-e;if(a||0!==g||0!==h||f.renderWidth!==b||f.renderHeight!==c)return this.context.save(),f.scrollX=d,f.scrollY=e,(f.renderWidth!==b||f.renderHeight!==c)&&(f.renderWidth=b,f.renderHeight=c),this.debug&&(this.context.globalAlpha=this.debugSettings.debugAlpha,this.debugSettings.forceFullRedraw&&(a=!0)),!a&&this.renderSettings.enableScrollDelta&&Math.abs(g)+Math.abs(h)=0;d++,f--,b+=o){d>=m&&(d-=m);var x=this.layer.data[d];for(c=v,e=q-p,a=t;e>=0;c++,e--,a+=n){c>=l&&(c-=l);var y=x[c];!y||y.index<0||!y.collides||(this.debugSettings.collidingTileOverfill&&(i.fillStyle=this.debugSettings.collidingTileOverfill,i.fillRect(a,b,this._mc.cw,this._mc.ch)),this.debugSettings.facingEdgeStroke&&(i.beginPath(),y.faceTop&&(i.moveTo(a,b),i.lineTo(a+this._mc.cw,b)),y.faceBottom&&(i.moveTo(a,b+this._mc.ch),i.lineTo(a+this._mc.cw,b+this._mc.ch)),y.faceLeft&&(i.moveTo(a,b),i.lineTo(a,b+this._mc.ch)),y.faceRight&&(i.moveTo(a+this._mc.cw,b),i.lineTo(a+this._mc.cw,b+this._mc.ch)),i.stroke()))}}},Object.defineProperty(c.TilemapLayer.prototype,"wrap",{get:function(){return this._wrap},set:function(a){this._wrap=a,this.dirty=!0}}),Object.defineProperty(c.TilemapLayer.prototype,"scrollX",{get:function(){return this._scrollX},set:function(a){this._scrollX=a}}),Object.defineProperty(c.TilemapLayer.prototype,"scrollY",{get:function(){return this._scrollY},set:function(a){this._scrollY=a}}),Object.defineProperty(c.TilemapLayer.prototype,"collisionWidth",{get:function(){return this._mc.cw},set:function(a){this._mc.cw=0|a,this.dirty=!0}}),Object.defineProperty(c.TilemapLayer.prototype,"collisionHeight",{get:function(){return this._mc.ch},set:function(a){this._mc.ch=0|a,this.dirty=!0}}),c.TilemapParser={INSERT_NULL:!1,parse:function(a,b,d,e,f,g){if(void 0===d&&(d=32),void 0===e&&(e=32),void 0===f&&(f=10),void 0===g&&(g=10),void 0===b)return this.getEmptyData();if(null===b)return this.getEmptyData(d,e,f,g);var h=a.cache.getTilemapData(b);if(h){if(h.format===c.Tilemap.CSV)return this.parseCSV(b,h.data,d,e);if(!h.format||h.format===c.Tilemap.TILED_JSON)return this.parseTiledJSON(h.data)}else console.warn("Phaser.TilemapParser.parse - No map data found for key "+b)},parseCSV:function(a,b,d,e){var f=this.getEmptyData();b=b.trim();for(var g=[],h=b.split("\n"),i=h.length,j=0,k=0;kk;k+=4)j[k/4]=(h.charCodeAt(k)|h.charCodeAt(k+1)<<8|h.charCodeAt(k+2)<<16|h.charCodeAt(k+3)<<24)>>>0;g.data=j,delete g.encoding}else if(g.compression){console.warn("TilemapParser.parseTiledJSON - Layer compression is unsupported, skipping layer '"+g.name+"'");continue}var l={name:g.name,x:g.x,y:g.y,width:g.width,height:g.height,widthInPixels:g.width*a.tilewidth,heightInPixels:g.height*a.tileheight,alpha:g.opacity,visible:g.visible,properties:{},indexes:[],callbacks:[],bodies:[]};g.properties&&(l.properties=g.properties);for(var m,n,o,p,q=0,r=[],s=[],t=0,i=g.data.length;i>t;t++){if(m=0,n=!1,p=g.data[t],p>536870912)switch(o=0,p>2147483648&&(p-=2147483648,o+=4),p>1073741824&&(p-=1073741824,o+=2),p>536870912&&(p-=536870912,o+=1),o){case 5:m=Math.PI/2;break;case 6:m=Math.PI;break;case 3:m=3*Math.PI/2;break;case 4:m=0,n=!0;break;case 7:m=Math.PI/2,n=!0;break;case 2:m=Math.PI,n=!0;break;case 1:m=3*Math.PI/2,n=!0}p>0?(r.push(new c.Tile(l,p,q,s.length,a.tilewidth,a.tileheight)),r[r.length-1].rotation=m,r[r.length-1].flipped=n):c.TilemapParser.INSERT_NULL?r.push(null):r.push(new c.Tile(l,-1,q,s.length,a.tilewidth,a.tileheight)),q++,q===g.width&&(s.push(r),q=0,r=[])}l.data=s,e.push(l)}d.layers=e;for(var u=[],f=0;fG;G++)if(F.objects[G].gid){var H={gid:F.objects[G].gid,name:F.objects[G].name,type:F.objects[G].hasOwnProperty("type")?F.objects[G].type:"",x:F.objects[G].x,y:F.objects[G].y,visible:F.objects[G].visible,properties:F.objects[G].properties};F.objects[G].rotation&&(H.rotation=F.objects[G].rotation),D[F.name].push(H)}else if(F.objects[G].polyline){var H={name:F.objects[G].name,type:F.objects[G].type,x:F.objects[G].x,y:F.objects[G].y,width:F.objects[G].width,height:F.objects[G].height,visible:F.objects[G].visible,properties:F.objects[G].properties};F.objects[G].rotation&&(H.rotation=F.objects[G].rotation),H.polyline=[];for(var I=0;I=c)&&(c=32),(void 0===d||0>=d)&&(d=32),void 0===e&&(e=0),void 0===f&&(f=0),this.name=a,this.firstgid=0|b,this.tileWidth=0|c,this.tileHeight=0|d,this.tileMargin=0|e,this.tileSpacing=0|f,this.properties=g||{},this.image=null,this.rows=0,this.columns=0,this.total=0,this.drawCoords=[]},c.Tileset.prototype={draw:function(a,b,c,d){var e=d-this.firstgid<<1;e>=0&&e+1=this.firstgid&&a=this._timer)if(this._timer=this.game.time.time+this.frequency*this.game.time.slowMotion,0!==this._flowTotal)if(this._flowQuantity>0){for(var a=0;a=this._flowTotal)){this.on=!1;break}}else this.emitParticle()&&(this._counter++,-1!==this._flowTotal&&this._counter>=this._flowTotal&&(this.on=!1));else this.emitParticle()&&(this._counter++,this._quantity>0&&this._counter>=this._quantity&&(this.on=!1));for(var a=this.children.length;a--;)this.children[a].exists&&this.children[a].update()},c.Particles.Arcade.Emitter.prototype.makeParticles=function(a,b,c,d,e){void 0===b&&(b=0),void 0===c&&(c=this.maxParticles),void 0===d&&(d=!1),void 0===e&&(e=!1);var f,g=0,h=a,i=b;for(this._frames=b,c>this.maxParticles&&(this.maxParticles=c);c>g;)Array.isArray(a)&&(h=this.game.rnd.pick(a)),Array.isArray(b)&&(i=this.game.rnd.pick(b)),f=new this.particleClass(this.game,0,0,h,i),this.game.physics.arcade.enable(f,!1),d?(f.body.checkCollision.any=!0,f.body.checkCollision.none=!1):f.body.checkCollision.none=!0,f.body.collideWorldBounds=e,f.body.skipQuadTree=!0,f.exists=!1,f.visible=!1,f.anchor.copyFrom(this.particleAnchor),this.add(f),g++;return this},c.Particles.Arcade.Emitter.prototype.kill=function(){return this.on=!1,this.alive=!1,this.exists=!1,this},c.Particles.Arcade.Emitter.prototype.revive=function(){return this.alive=!0,this.exists=!0,this},c.Particles.Arcade.Emitter.prototype.explode=function(a,b){return this._flowTotal=0,this.start(!0,a,0,b,!1),this},c.Particles.Arcade.Emitter.prototype.flow=function(a,b,c,d,e){return(void 0===c||0===c)&&(c=1),void 0===d&&(d=-1),void 0===e&&(e=!0),c>this.maxParticles&&(c=this.maxParticles),this._counter=0,this._flowQuantity=c,this._flowTotal=d,e?(this.start(!0,a,b,c),this._counter+=c,this.on=!0,this._timer=this.game.time.time+b*this.game.time.slowMotion):this.start(!1,a,b,c),this},c.Particles.Arcade.Emitter.prototype.start=function(a,b,c,d,e){if(void 0===a&&(a=!0),void 0===b&&(b=0),(void 0===c||null===c)&&(c=250),void 0===d&&(d=0),void 0===e&&(e=!1),d>this.maxParticles&&(d=this.maxParticles),this.revive(),this.visible=!0,this.lifespan=b,this.frequency=c,a||e)for(var f=0;d>f;f++)this.emitParticle();else this.on=!0,this._quantity=d,this._counter=0,this._timer=this.game.time.time+c*this.game.time.slowMotion;return this},c.Particles.Arcade.Emitter.prototype.emitParticle=function(a,b,c,d){void 0===a&&(a=null),void 0===b&&(b=null);var e=this.getFirstExists(!1);if(null===e)return!1;var f=this.game.rnd;void 0!==c&&void 0!==d?e.loadTexture(c,d):void 0!==c&&e.loadTexture(c);var g=this.emitX,h=this.emitY;null!==a?g=a:this.width>1&&(g=f.between(this.left,this.right)),null!==b?h=b:this.height>1&&(h=f.between(this.top,this.bottom)),e.reset(g,h),e.angle=0,e.lifespan=this.lifespan,this.particleBringToTop?this.bringToTop(e):this.particleSendToBack&&this.sendToBack(e),this.autoScale?e.setScaleData(this.scaleData):1!==this.minParticleScale||1!==this.maxParticleScale?e.scale.set(f.realInRange(this.minParticleScale,this.maxParticleScale)):(this._minParticleScale.x!==this._maxParticleScale.x||this._minParticleScale.y!==this._maxParticleScale.y)&&e.scale.set(f.realInRange(this._minParticleScale.x,this._maxParticleScale.x),f.realInRange(this._minParticleScale.y,this._maxParticleScale.y)),void 0===d&&(Array.isArray(this._frames)?e.frame=this.game.rnd.pick(this._frames):e.frame=this._frames),this.autoAlpha?e.setAlphaData(this.alphaData):e.alpha=f.realInRange(this.minParticleAlpha,this.maxParticleAlpha),e.blendMode=this.blendMode;var i=e.body;return i.updateBounds(),i.bounce.copyFrom(this.bounce),i.drag.copyFrom(this.particleDrag),i.velocity.x=f.between(this.minParticleSpeed.x,this.maxParticleSpeed.x),i.velocity.y=f.between(this.minParticleSpeed.y,this.maxParticleSpeed.y),i.angularVelocity=f.between(this.minRotation,this.maxRotation),i.gravity.y=this.gravity,i.angularDrag=this.angularDrag,e.onEmit(),!0},c.Particles.Arcade.Emitter.prototype.destroy=function(){this.game.particles.remove(this),c.Group.prototype.destroy.call(this,!0,!1)},c.Particles.Arcade.Emitter.prototype.setSize=function(a,b){return this.area.width=a,this.area.height=b,this},c.Particles.Arcade.Emitter.prototype.setXSpeed=function(a,b){return a=a||0,b=b||0,this.minParticleSpeed.x=a,this.maxParticleSpeed.x=b,this},c.Particles.Arcade.Emitter.prototype.setYSpeed=function(a,b){return a=a||0,b=b||0,this.minParticleSpeed.y=a,this.maxParticleSpeed.y=b,this},c.Particles.Arcade.Emitter.prototype.setRotation=function(a,b){return a=a||0,b=b||0,this.minRotation=a,this.maxRotation=b,this},c.Particles.Arcade.Emitter.prototype.setAlpha=function(a,b,d,e,f){if(void 0===a&&(a=1),void 0===b&&(b=1),void 0===d&&(d=0),void 0===e&&(e=c.Easing.Linear.None),void 0===f&&(f=!1),this.minParticleAlpha=a,this.maxParticleAlpha=b,this.autoAlpha=!1,d>0&&a!==b){var g={v:a},h=this.game.make.tween(g).to({v:b},d,e);h.yoyo(f),this.alphaData=h.generateData(60),this.alphaData.reverse(),this.autoAlpha=!0}return this},c.Particles.Arcade.Emitter.prototype.setScale=function(a,b,d,e,f,g,h){if(void 0===a&&(a=1),void 0===b&&(b=1),void 0===d&&(d=1),void 0===e&&(e=1),void 0===f&&(f=0),void 0===g&&(g=c.Easing.Linear.None),void 0===h&&(h=!1),this.minParticleScale=1,this.maxParticleScale=1,this._minParticleScale.set(a,d),this._maxParticleScale.set(b,e),this.autoScale=!1,f>0&&(a!==b||d!==e)){var i={x:a,y:d},j=this.game.make.tween(i).to({x:b,y:e},f,g);j.yoyo(h),this.scaleData=j.generateData(60),this.scaleData.reverse(),this.autoScale=!0}return this},c.Particles.Arcade.Emitter.prototype.at=function(a){return a.center?(this.emitX=a.center.x,this.emitY=a.center.y):(this.emitX=a.world.x+a.anchor.x*a.width,this.emitY=a.world.y+a.anchor.y*a.height),this},Object.defineProperty(c.Particles.Arcade.Emitter.prototype,"width",{get:function(){return this.area.width},set:function(a){this.area.width=a}}),Object.defineProperty(c.Particles.Arcade.Emitter.prototype,"height",{get:function(){return this.area.height},set:function(a){this.area.height=a}}),Object.defineProperty(c.Particles.Arcade.Emitter.prototype,"x",{get:function(){return this.emitX},set:function(a){this.emitX=a}}),Object.defineProperty(c.Particles.Arcade.Emitter.prototype,"y",{get:function(){return this.emitY},set:function(a){this.emitY=a}}),Object.defineProperty(c.Particles.Arcade.Emitter.prototype,"left",{get:function(){return Math.floor(this.x-this.area.width/2)}}),Object.defineProperty(c.Particles.Arcade.Emitter.prototype,"right",{get:function(){return Math.floor(this.x+this.area.width/2)}}),Object.defineProperty(c.Particles.Arcade.Emitter.prototype,"top",{get:function(){return Math.floor(this.y-this.area.height/2)}}),Object.defineProperty(c.Particles.Arcade.Emitter.prototype,"bottom",{get:function(){return Math.floor(this.y+this.area.height/2)}}),c.Weapon=function(a,b){c.Plugin.call(this,a,b),this.bullets=null,this.autoExpandBulletsGroup=!1,this.autofire=!1,this.shots=0,this.fireLimit=0,this.fireRate=100,this.fireRateVariance=0,this.fireFrom=new c.Rectangle(0,0,1,1),this.fireAngle=c.ANGLE_UP,this.bulletInheritSpriteSpeed=!1,this.bulletAnimation="",this.bulletFrameRandom=!1,this.bulletFrameCycle=!1,this.bulletWorldWrap=!1,this.bulletWorldWrapPadding=0,this.bulletAngleOffset=0,this.bulletAngleVariance=0,this.bulletSpeed=200,this.bulletSpeedVariance=0,this.bulletLifespan=0,this.bulletKillDistance=0,this.bulletGravity=new c.Point(0,0),this.bulletRotateToVelocity=!1,this.bulletKey="",this.bulletFrame="",this._bulletClass=c.Bullet,this._bulletCollideWorldBounds=!1,this._bulletKillType=c.Weapon.KILL_WORLD_BOUNDS,this._data={customBody:!1,width:0,height:0,offsetX:0,offsetY:0},this.bounds=new c.Rectangle,this.bulletBounds=a.world.bounds,this.bulletFrames=[],this.bulletFrameIndex=0,this.anims={},this.onFire=new c.Signal,this.onKill=new c.Signal,this.onFireLimit=new c.Signal,this.trackedSprite=null,this.trackedPointer=null,this.trackRotation=!1,this.trackOffset=new c.Point,this._nextFire=0},c.Weapon.prototype=Object.create(c.Plugin.prototype),c.Weapon.prototype.constructor=c.Weapon,c.Weapon.KILL_NEVER=0,c.Weapon.KILL_LIFESPAN=1,c.Weapon.KILL_DISTANCE=2,c.Weapon.KILL_WEAPON_BOUNDS=3,c.Weapon.KILL_CAMERA_BOUNDS=4,c.Weapon.KILL_WORLD_BOUNDS=5,c.Weapon.KILL_STATIC_BOUNDS=6,c.Weapon.prototype.createBullets=function(a,b,d,e){return void 0===a&&(a=1),void 0===e&&(e=this.game.world),this.bullets||(this.bullets=this.game.add.physicsGroup(c.Physics.ARCADE,e),this.bullets.classType=this._bulletClass),0!==a&&(-1===a&&(this.autoExpandBulletsGroup=!0,a=1),this.bullets.createMultiple(a,b,d),this.bullets.setAll("data.bulletManager",this),this.bulletKey=b,this.bulletFrame=d),this},c.Weapon.prototype.forEach=function(a,b){return this.bullets.forEachExists(a,b,arguments),this},c.Weapon.prototype.pauseAll=function(){return this.bullets.setAll("body.enable",!1),this},c.Weapon.prototype.resumeAll=function(){return this.bullets.setAll("body.enable",!0),this},c.Weapon.prototype.killAll=function(){return this.bullets.callAllExists("kill",!0),this.bullets.setAll("body.enable",!0),this},c.Weapon.prototype.resetShots=function(a){return this.shots=0,void 0!==a&&(this.fireLimit=a),this},c.Weapon.prototype.destroy=function(){this.parent.remove(this,!1),this.bullets.destroy(),this.game=null,this.parent=null,this.active=!1,this.visible=!1},c.Weapon.prototype.update=function(){this._bulletKillType===c.Weapon.KILL_WEAPON_BOUNDS&&(this.trackedSprite?(this.trackedSprite.updateTransform(),this.bounds.centerOn(this.trackedSprite.worldPosition.x,this.trackedSprite.worldPosition.y)):this.trackedPointer&&this.bounds.centerOn(this.trackedPointer.worldX,this.trackedPointer.worldY)),this.autofire&&this.game.time.now0&&this.shots===this.fireLimit)return!1;var e=this.bulletSpeed;0!==this.bulletSpeedVariance&&(e+=c.Math.between(-this.bulletSpeedVariance,this.bulletSpeedVariance)),a?this.fireFrom.width>1?this.fireFrom.centerOn(a.x,a.y):(this.fireFrom.x=a.x,this.fireFrom.y=a.y):this.trackedSprite?(this.fireFrom.width>1?this.fireFrom.centerOn(this.trackedSprite.world.x+this.trackOffset.x,this.trackedSprite.world.y+this.trackOffset.y):(this.fireFrom.x=this.trackedSprite.world.x+this.trackOffset.x,this.fireFrom.y=this.trackedSprite.world.y+this.trackOffset.y),this.bulletInheritSpriteSpeed&&(e+=this.trackedSprite.body.speed)):this.trackedPointer&&(this.fireFrom.width>1?this.fireFrom.centerOn(this.trackedPointer.world.x+this.trackOffset.x,this.trackedPointer.world.y+this.trackOffset.y):(this.fireFrom.x=this.trackedPointer.world.x+this.trackOffset.x,this.fireFrom.y=this.trackedPointer.world.y+this.trackOffset.y));var f=this.fireFrom.width>1?this.fireFrom.randomX:this.fireFrom.x,g=this.fireFrom.height>1?this.fireFrom.randomY:this.fireFrom.y,h=this.trackRotation?this.trackedSprite.angle:this.fireAngle;void 0!==b&&void 0!==d&&(h=this.game.math.radToDeg(Math.atan2(d-g,b-f))),0!==this.bulletAngleVariance&&(h+=c.Math.between(-this.bulletAngleVariance,this.bulletAngleVariance));var i=0,j=0;0===h||180===h?i=Math.cos(this.game.math.degToRad(h))*e:90===h||270===h?j=Math.sin(this.game.math.degToRad(h))*e:(i=Math.cos(this.game.math.degToRad(h))*e,j=Math.sin(this.game.math.degToRad(h))*e);var k=null;if(this.autoExpandBulletsGroup?(k=this.bullets.getFirstExists(!1,!0,f,g,this.bulletKey,this.bulletFrame),k.data.bulletManager=this):k=this.bullets.getFirstExists(!1),k){if(k.reset(f,g),k.data.fromX=f,k.data.fromY=g,k.data.killType=this.bulletKillType,k.data.killDistance=this.bulletKillDistance,k.data.rotateToVelocity=this.bulletRotateToVelocity,this.bulletKillType===c.Weapon.KILL_LIFESPAN&&(k.lifespan=this.bulletLifespan),k.angle=h+this.bulletAngleOffset,""!==this.bulletAnimation){if(null===k.animations.getAnimation(this.bulletAnimation)){var l=this.anims[this.bulletAnimation];k.animations.add(l.name,l.frames,l.frameRate,l.loop,l.useNumericIndex)}k.animations.play(this.bulletAnimation)}else this.bulletFrameCycle?(k.frame=this.bulletFrames[this.bulletFrameIndex],this.bulletFrameIndex++,this.bulletFrameIndex>=this.bulletFrames.length&&(this.bulletFrameIndex=0)):this.bulletFrameRandom&&(k.frame=this.bulletFrames[Math.floor(Math.random()*this.bulletFrames.length)]);k.data.bodyDirty&&(this._data.customBody&&k.body.setSize(this._data.width,this._data.height,this._data.offsetX,this._data.offsetY),k.body.collideWorldBounds=this.bulletCollideWorldBounds,k.data.bodyDirty=!1),k.body.velocity.set(i,j),k.body.gravity.set(this.bulletGravity.x,this.bulletGravity.y),this._nextFire=this.game.time.now+this.fireRate,this.shots++,this.onFire.dispatch(k,this,e),this.fireLimit>0&&this.shots===this.fireLimit&&this.onFireLimit.dispatch(this,this.fireLimit)}},c.Weapon.prototype.fireAtPointer=function(a){return void 0===a&&(a=this.game.input.activePointer),this.fire(null,a.worldX,a.worldY)},c.Weapon.prototype.fireAtSprite=function(a){return this.fire(null,a.world.x,a.world.y)},c.Weapon.prototype.fireAtXY=function(a,b){return this.fire(null,a,b)},c.Weapon.prototype.setBulletBodyOffset=function(a,b,c,d){return void 0===c&&(c=0),void 0===d&&(d=0),this._data.customBody=!0,this._data.width=a,this._data.height=b,this._data.offsetX=c,this._data.offsetY=d,this.bullets.callAll("body.setSize","body",a,b,c,d),this.bullets.setAll("data.bodyDirty",!1),this},c.Weapon.prototype.setBulletFrames=function(a,b,d,e){return void 0===d&&(d=!0),void 0===e&&(e=!1),this.bulletFrames=c.ArrayUtils.numberArray(a,b),this.bulletFrameIndex=0,this.bulletFrameCycle=d,this.bulletFrameRandom=e,this},c.Weapon.prototype.addBulletAnimation=function(a,b,c,d,e){return this.anims[a]={name:a,frames:b,frameRate:c,loop:d,useNumericIndex:e},this.bullets.callAll("animations.add","animations",a,b,c,d,e),this.bulletAnimation=a,this},c.Weapon.prototype.debug=function(a,b,c){void 0===a&&(a=16),void 0===b&&(b=32),void 0===c&&(c=!1),this.game.debug.text("Weapon Plugin",a,b),this.game.debug.text("Bullets Alive: "+this.bullets.total+" - Total: "+this.bullets.length,a,b+24),c&&this.bullets.forEachExists(this.game.debug.body,this.game.debug,"rgba(255, 0, 255, 0.8)")},Object.defineProperty(c.Weapon.prototype,"bulletClass",{get:function(){return this._bulletClass},set:function(a){this._bulletClass=a,this.bullets.classType=this._bulletClass}}),Object.defineProperty(c.Weapon.prototype,"bulletKillType",{get:function(){return this._bulletKillType},set:function(a){switch(a){case c.Weapon.KILL_STATIC_BOUNDS:case c.Weapon.KILL_WEAPON_BOUNDS:this.bulletBounds=this.bounds;break;case c.Weapon.KILL_CAMERA_BOUNDS:this.bulletBounds=this.game.camera.view;break;case c.Weapon.KILL_WORLD_BOUNDS:this.bulletBounds=this.game.world.bounds}this._bulletKillType=a}}),Object.defineProperty(c.Weapon.prototype,"bulletCollideWorldBounds",{get:function(){return this._bulletCollideWorldBounds},set:function(a){this._bulletCollideWorldBounds=a,this.bullets.setAll("body.collideWorldBounds",a),this.bullets.setAll("data.bodyDirty",!1)}}),Object.defineProperty(c.Weapon.prototype,"x",{get:function(){return this.fireFrom.x},set:function(a){this.fireFrom.x=a}}),Object.defineProperty(c.Weapon.prototype,"y",{get:function(){return this.fireFrom.y},set:function(a){this.fireFrom.y=a}}),c.Bullet=function(a,b,d,e,f){c.Sprite.call(this,a,b,d,e,f),this.anchor.set(.5),this.data={bulletManager:null,fromX:0,fromY:0,bodyDirty:!0,rotateToVelocity:!1,killType:0,killDistance:0}},c.Bullet.prototype=Object.create(c.Sprite.prototype),c.Bullet.prototype.constructor=c.Bullet,c.Bullet.prototype.kill=function(){return this.alive=!1,this.exists=!1,this.visible=!1,this.data.bulletManager.onKill.dispatch(this),this},c.Bullet.prototype.update=function(){this.exists&&(this.data.killType>c.Weapon.KILL_LIFESPAN&&(this.data.killType===c.Weapon.KILL_DISTANCE?this.game.physics.arcade.distanceToXY(this,this.data.fromX,this.data.fromY,!0)>this.data.killDistance&&this.kill():this.data.bulletManager.bulletBounds.intersects(this)||this.kill()),this.data.rotateToVelocity&&(this.rotation=Math.atan2(this.body.velocity.y,this.body.velocity.x)),this.data.bulletManager.bulletWorldWrap&&this.game.world.wrap(this,this.data.bulletManager.bulletWorldWrapPadding))},c.Video=function(a,b,d){if(void 0===b&&(b=null),void 0===d&&(d=null),this.game=a,this.key=b,this.width=0,this.height=0,this.type=c.VIDEO,this.disableTextureUpload=!1,this.touchLocked=!1,this.onPlay=new c.Signal,this.onChangeSource=new c.Signal,this.onComplete=new c.Signal,this.onAccess=new c.Signal,this.onError=new c.Signal,this.onTimeout=new c.Signal,this.timeout=15e3,this._timeOutID=null,this.video=null,this.videoStream=null,this.isStreaming=!1,this.retryLimit=20,this.retry=0,this.retryInterval=500,this._retryID=null,this._codeMuted=!1,this._muted=!1,this._codePaused=!1,this._paused=!1,this._pending=!1,this._autoplay=!1,this._endCallback=null,this._playCallback=null,b&&this.game.cache.checkVideoKey(b)){var e=this.game.cache.getVideo(b);e.isBlob?this.createVideoFromBlob(e.data):this.video=e.data,this.width=this.video.videoWidth,this.height=this.video.videoHeight}else d&&this.createVideoFromURL(d,!1);this.video&&!d?(this.baseTexture=new PIXI.BaseTexture(this.video),this.baseTexture.forceLoaded(this.width,this.height)):(this.baseTexture=new PIXI.BaseTexture(PIXI.TextureCache.__default.baseTexture.source),this.baseTexture.forceLoaded(this.width,this.height)),this.texture=new PIXI.Texture(this.baseTexture),this.textureFrame=new c.Frame(0,0,0,this.width,this.height,"video"),this.texture.setFrame(this.textureFrame),this.texture.valid=!1,null!==b&&this.video&&(this.texture.valid=this.video.canplay),this.snapshot=null,c.BitmapData&&(this.snapshot=new c.BitmapData(this.game,"",this.width,this.height)),!this.game.device.cocoonJS&&(this.game.device.iOS||this.game.device.android)||window.PhaserGlobal&&window.PhaserGlobal.fakeiOSTouchLock?this.setTouchLock():e&&(e.locked=!1)},c.Video.prototype={connectToMediaStream:function(a,b){return a&&b&&(this.video=a,this.videoStream=b,this.isStreaming=!0,this.baseTexture.source=this.video,this.updateTexture(null,this.video.videoWidth,this.video.videoHeight),this.onAccess.dispatch(this)),this},startMediaStream:function(a,b,c){if(void 0===a&&(a=!1),void 0===b&&(b=null),void 0===c&&(c=null),!this.game.device.getUserMedia)return this.onError.dispatch(this,"No getUserMedia"),!1;null!==this.videoStream&&(this.videoStream.active?this.videoStream.active=!1:this.videoStream.stop()),this.removeVideoElement(),this.video=document.createElement("video"),this.video.setAttribute("autoplay","autoplay"),null!==b&&(this.video.width=b),null!==c&&(this.video.height=c),this._timeOutID=window.setTimeout(this.getUserMediaTimeout.bind(this),this.timeout);try{navigator.getUserMedia({audio:a,video:!0},this.getUserMediaSuccess.bind(this),this.getUserMediaError.bind(this))}catch(d){this.getUserMediaError(d)}return this},getUserMediaTimeout:function(){clearTimeout(this._timeOutID),this.onTimeout.dispatch(this)},getUserMediaError:function(a){clearTimeout(this._timeOutID),this.onError.dispatch(this,a)},getUserMediaSuccess:function(a){clearTimeout(this._timeOutID),this.videoStream=a,void 0!==this.video.mozSrcObject?this.video.mozSrcObject=a:this.video.src=window.URL&&window.URL.createObjectURL(a)||a;var b=this;this.video.onloadeddata=function(){function a(){if(c>0)if(b.video.videoWidth>0){var d=b.video.videoWidth,e=b.video.videoHeight;isNaN(b.video.videoHeight)&&(e=d/(4/3)),b.video.play(),b.isStreaming=!0,b.baseTexture.source=b.video,b.updateTexture(null,d,e),b.onAccess.dispatch(b)}else window.setTimeout(a,500);else console.warn("Unable to connect to video stream. Webcam error?");c--}var c=10;a()}},createVideoFromBlob:function(a){var b=this;return this.video=document.createElement("video"),this.video.controls=!1,this.video.setAttribute("autoplay","autoplay"),this.video.addEventListener("loadeddata",function(a){b.updateTexture(a)},!0),this.video.src=window.URL.createObjectURL(a),this.video.canplay=!0,this},createVideoFromURL:function(a,b){return void 0===b&&(b=!1),this.texture&&(this.texture.valid=!1),this.video=document.createElement("video"),this.video.controls=!1,b&&this.video.setAttribute("autoplay","autoplay"),this.video.src=a,this.video.canplay=!0,this.video.load(),this.retry=this.retryLimit,this._retryID=window.setTimeout(this.checkVideoProgress.bind(this),this.retryInterval),this.key=a,this},updateTexture:function(a,b,c){var d=!1;(void 0===b||null===b)&&(b=this.video.videoWidth,d=!0),(void 0===c||null===c)&&(c=this.video.videoHeight),this.width=b,this.height=c,this.baseTexture.source!==this.video&&(this.baseTexture.source=this.video),this.baseTexture.forceLoaded(b,c),this.texture.frame.resize(b,c),this.texture.width=b,this.texture.height=c,this.texture.valid=!0,this.snapshot&&this.snapshot.resize(b,c),d&&null!==this.key&&(this.onChangeSource.dispatch(this,b,c),this._autoplay&&(this.video.play(),this.onPlay.dispatch(this,this.loop,this.playbackRate)))},complete:function(){this.onComplete.dispatch(this)},play:function(a,b){return void 0===a&&(a=!1),void 0===b&&(b=1),this.game.sound.onMute&&(this.game.sound.onMute.add(this.setMute,this),this.game.sound.onUnMute.add(this.unsetMute,this),this.game.sound.mute&&this.setMute()),this.game.onPause.add(this.setPause,this),this.game.onResume.add(this.setResume,this),this._endCallback=this.complete.bind(this),this.video.addEventListener("ended",this._endCallback,!0),this.video.addEventListener("webkitendfullscreen",this._endCallback,!0),a?this.video.loop="loop":this.video.loop="",this.video.playbackRate=b,this.touchLocked?this._pending=!0:(this._pending=!1,null!==this.key&&(4!==this.video.readyState?(this.retry=this.retryLimit,this._retryID=window.setTimeout(this.checkVideoProgress.bind(this),this.retryInterval)):(this._playCallback=this.playHandler.bind(this),this.video.addEventListener("playing",this._playCallback,!0))),this.video.play(),this.onPlay.dispatch(this,a,b)),this},playHandler:function(){this.video.removeEventListener("playing",this._playCallback,!0),this.updateTexture()},stop:function(){return this.game.sound.onMute&&(this.game.sound.onMute.remove(this.setMute,this),this.game.sound.onUnMute.remove(this.unsetMute,this)),this.game.onPause.remove(this.setPause,this),this.game.onResume.remove(this.setResume,this),this.isStreaming?(this.video.mozSrcObject?(this.video.mozSrcObject.stop(),this.video.src=null):(this.video.src="",this.videoStream.active?this.videoStream.active=!1:this.videoStream.getTracks?this.videoStream.getTracks().forEach(function(a){a.stop()}):this.videoStream.stop()),this.videoStream=null,this.isStreaming=!1):(this.video.removeEventListener("ended",this._endCallback,!0),this.video.removeEventListener("webkitendfullscreen",this._endCallback,!0),this.video.removeEventListener("playing",this._playCallback,!0),this.touchLocked?this._pending=!1:this.video.pause()),this},add:function(a){if(Array.isArray(a))for(var b=0;b0?this._retryID=window.setTimeout(this.checkVideoProgress.bind(this),this.retryInterval):console.warn("Phaser.Video: Unable to start downloading video in time",this.isStreaming))},setTouchLock:function(){this.game.input.touch.addTouchLockCallback(this.unlock,this),this.touchLocked=!0},unlock:function(){if(this.touchLocked=!1,this.video.play(),this.onPlay.dispatch(this,this.loop,this.playbackRate),this.key){var a=this.game.cache.getVideo(this.key);a&&!a.isBlob&&(a.locked=!1)}return!0},grab:function(a,b,c){return void 0===a&&(a=!1),void 0===b&&(b=1),void 0===c&&(c=null),null===this.snapshot?void console.warn("Video.grab cannot run because Phaser.BitmapData is unavailable"):(a&&this.snapshot.cls(),this.snapshot.copy(this.video,0,0,this.width,this.height,0,0,this.width,this.height,0,0,0,1,1,b,c),this.snapshot)},removeVideoElement:function(){if(this.video){for(this.video.parentNode&&this.video.parentNode.removeChild(this.video);this.video.hasChildNodes();)this.video.removeChild(this.video.firstChild);this.video.removeAttribute("autoplay"),this.video.removeAttribute("src"),this.video=null}},destroy:function(){this.stop(),this.removeVideoElement(),this.touchLocked&&this.game.input.touch.removeTouchLockCallback(this.unlock,this),this._retryID&&window.clearTimeout(this._retryID)}},Object.defineProperty(c.Video.prototype,"currentTime",{get:function(){return this.video?this.video.currentTime:0},set:function(a){this.video.currentTime=a}}),Object.defineProperty(c.Video.prototype,"duration",{get:function(){return this.video?this.video.duration:0}}),Object.defineProperty(c.Video.prototype,"progress",{get:function(){return this.video?this.video.currentTime/this.video.duration:0}}),Object.defineProperty(c.Video.prototype,"mute",{get:function(){return this._muted},set:function(a){if(a=a||null){if(this._muted)return;this._codeMuted=!0,this.setMute()}else{if(!this._muted)return;this._codeMuted=!1,this.unsetMute()}}}),Object.defineProperty(c.Video.prototype,"paused",{get:function(){return this._paused},set:function(a){if(a=a||null,!this.touchLocked)if(a){if(this._paused)return;this._codePaused=!0,this.setPause()}else{if(!this._paused)return;this._codePaused=!1,this.setResume()}}}),Object.defineProperty(c.Video.prototype,"volume",{get:function(){return this.video?this.video.volume:1},set:function(a){0>a?a=0:a>1&&(a=1),this.video&&(this.video.volume=a)}}),Object.defineProperty(c.Video.prototype,"playbackRate",{get:function(){return this.video?this.video.playbackRate:1},set:function(a){this.video&&(this.video.playbackRate=a)}}),Object.defineProperty(c.Video.prototype,"loop",{get:function(){return this.video?this.video.loop:!1},set:function(a){a&&this.video?this.video.loop="loop":this.video&&(this.video.loop="")}}),Object.defineProperty(c.Video.prototype,"playing",{get:function(){return!(this.video.paused&&this.video.ended)}}),c.Video.prototype.constructor=c.Video,void 0===PIXI.blendModes&&(PIXI.blendModes=c.blendModes),void 0===PIXI.scaleModes&&(PIXI.scaleModes=c.scaleModes),void 0===PIXI.Texture.emptyTexture&&(PIXI.Texture.emptyTexture=new PIXI.Texture(new PIXI.BaseTexture)),void 0===PIXI.DisplayObject._tempMatrix&&(PIXI.DisplayObject._tempMatrix=new PIXI.Matrix),void 0===PIXI.RenderTexture.tempMatrix&&(PIXI.RenderTexture.tempMatrix=new PIXI.Matrix),PIXI.Graphics&&void 0===PIXI.Graphics.POLY&&(PIXI.Graphics.POLY=c.POLYGON,PIXI.Graphics.RECT=c.RECTANGLE,PIXI.Graphics.CIRC=c.CIRCLE,PIXI.Graphics.ELIP=c.ELLIPSE,PIXI.Graphics.RREC=c.ROUNDEDRECTANGLE),PIXI.TextureSilentFail=!0,"undefined"!=typeof exports?("undefined"!=typeof module&&module.exports&&(exports=module.exports=c),exports.Phaser=c):"undefined"!=typeof define&&define.amd?define("Phaser",function(){return b.Phaser=c}()):b.Phaser=c,c}).call(this); +(function(){function a(a,b){this._scaleFactor=a,this._deltaMode=b,this.originalEvent=null}var b=this,c=c||{VERSION:"2.6.0",GAMES:[],AUTO:0,CANVAS:1,WEBGL:2,HEADLESS:3,NONE:0,LEFT:1,RIGHT:2,UP:3,DOWN:4,SPRITE:0,BUTTON:1,IMAGE:2,GRAPHICS:3,TEXT:4,TILESPRITE:5,BITMAPTEXT:6,GROUP:7,RENDERTEXTURE:8,TILEMAP:9,TILEMAPLAYER:10,EMITTER:11,POLYGON:12,BITMAPDATA:13,CANVAS_FILTER:14,WEBGL_FILTER:15,ELLIPSE:16,SPRITEBATCH:17,RETROFONT:18,POINTER:19,ROPE:20,CIRCLE:21,RECTANGLE:22,LINE:23,MATRIX:24,POINT:25,ROUNDEDRECTANGLE:26,CREATURE:27,VIDEO:28,PENDING_ATLAS:-1,HORIZONTAL:0,VERTICAL:1,LANDSCAPE:0,PORTRAIT:1,ANGLE_UP:270,ANGLE_DOWN:90,ANGLE_LEFT:180,ANGLE_RIGHT:0,ANGLE_NORTH_EAST:315,ANGLE_NORTH_WEST:225,ANGLE_SOUTH_EAST:45,ANGLE_SOUTH_WEST:135,TOP_LEFT:0,TOP_CENTER:1,TOP_RIGHT:2,LEFT_TOP:3,LEFT_CENTER:4,LEFT_BOTTOM:5,CENTER:6,RIGHT_TOP:7,RIGHT_CENTER:8,RIGHT_BOTTOM:9,BOTTOM_LEFT:10,BOTTOM_CENTER:11,BOTTOM_RIGHT:12,blendModes:{NORMAL:0,ADD:1,MULTIPLY:2,SCREEN:3,OVERLAY:4,DARKEN:5,LIGHTEN:6,COLOR_DODGE:7,COLOR_BURN:8,HARD_LIGHT:9,SOFT_LIGHT:10,DIFFERENCE:11,EXCLUSION:12,HUE:13,SATURATION:14,COLOR:15,LUMINOSITY:16},scaleModes:{DEFAULT:0,LINEAR:0,NEAREST:1},PIXI:PIXI||{}};if(Math.trunc||(Math.trunc=function(a){return 0>a?Math.ceil(a):Math.floor(a)}),Function.prototype.bind||(Function.prototype.bind=function(){var a=Array.prototype.slice;return function(b){function c(){var f=e.concat(a.call(arguments));d.apply(this instanceof c?this:b,f)}var d=this,e=a.call(arguments,1);if("function"!=typeof d)throw new TypeError;return c.prototype=function f(a){return a&&(f.prototype=a),this instanceof f?void 0:new f}(d.prototype),c}}()),Array.isArray||(Array.isArray=function(a){return"[object Array]"==Object.prototype.toString.call(a)}),Array.prototype.forEach||(Array.prototype.forEach=function(a){"use strict";if(void 0===this||null===this)throw new TypeError;var b=Object(this),c=b.length>>>0;if("function"!=typeof a)throw new TypeError;for(var d=arguments.length>=2?arguments[1]:void 0,e=0;c>e;e++)e in b&&a.call(d,b[e],e,b)}),"function"!=typeof window.Uint32Array&&"object"!=typeof window.Uint32Array){var d=function(a){var b=new Array;window[a]=function(a){if("number"==typeof a){Array.call(this,a),this.length=a;for(var b=0;bf&&(a=a[g]);)g=c[f],f++;return a?a[d]:null},setProperty:function(a,b,c){for(var d=b.split("."),e=d.pop(),f=d.length,g=1,h=d[0];f>g&&(a=a[h]);)h=d[g],g++;return a&&(a[e]=c),a},chanceRoll:function(a){return void 0===a&&(a=50),a>0&&100*Math.random()<=a},randomChoice:function(a,b){return Math.random()<.5?a:b},parseDimension:function(a,b){var c=0,d=0;return"string"==typeof a?"%"===a.substr(-1)?(c=parseInt(a,10)/100,d=0===b?window.innerWidth*c:window.innerHeight*c):d=parseInt(a,10):d=a,d},pad:function(a,b,c,d){if(void 0===b)var b=0;if(void 0===c)var c=" ";if(void 0===d)var d=3;a=a.toString();var e=0;if(b+1>=a.length)switch(d){case 1:a=new Array(b+1-a.length).join(c)+a;break;case 3:var f=Math.ceil((e=b-a.length)/2),g=e-f;a=new Array(g+1).join(c)+a+new Array(f+1).join(c);break;default:a+=new Array(b+1-a.length).join(c)}return a},isPlainObject:function(a){if("object"!=typeof a||a.nodeType||a===a.window)return!1;try{if(a.constructor&&!{}.hasOwnProperty.call(a.constructor.prototype,"isPrototypeOf"))return!1}catch(b){return!1}return!0},extend:function(){var a,b,d,e,f,g,h=arguments[0]||{},i=1,j=arguments.length,k=!1;for("boolean"==typeof h&&(k=h,h=arguments[1]||{},i=2),j===i&&(h=this,--i);j>i;i++)if(null!=(a=arguments[i]))for(b in a)d=h[b],e=a[b],h!==e&&(k&&e&&(c.Utils.isPlainObject(e)||(f=Array.isArray(e)))?(f?(f=!1,g=d&&Array.isArray(d)?d:[]):g=d&&c.Utils.isPlainObject(d)?d:{},h[b]=c.Utils.extend(k,g,e)):void 0!==e&&(h[b]=e));return h},mixinPrototype:function(a,b,c){void 0===c&&(c=!1);for(var d=Object.keys(b),e=0;e0&&(this._radius=.5*d),this.type=c.CIRCLE},c.Circle.prototype={circumference:function(){return 2*(Math.PI*this._radius)},random:function(a){void 0===a&&(a=new c.Point);var b=2*Math.PI*Math.random(),d=Math.random()+Math.random(),e=d>1?2-d:d,f=e*Math.cos(b),g=e*Math.sin(b);return a.x=this.x+f*this.radius,a.y=this.y+g*this.radius,a},getBounds:function(){return new c.Rectangle(this.x-this.radius,this.y-this.radius,this.diameter,this.diameter)},setTo:function(a,b,c){return this.x=a,this.y=b,this._diameter=c,this._radius=.5*c,this},copyFrom:function(a){return this.setTo(a.x,a.y,a.diameter)},copyTo:function(a){return a.x=this.x,a.y=this.y,a.diameter=this._diameter,a},distance:function(a,b){var d=c.Math.distance(this.x,this.y,a.x,a.y);return b?Math.round(d):d},clone:function(a){return void 0===a||null===a?a=new c.Circle(this.x,this.y,this.diameter):a.setTo(this.x,this.y,this.diameter),a},contains:function(a,b){return c.Circle.contains(this,a,b)},circumferencePoint:function(a,b,d){return c.Circle.circumferencePoint(this,a,b,d)},offset:function(a,b){return this.x+=a,this.y+=b,this},offsetPoint:function(a){return this.offset(a.x,a.y)},toString:function(){return"[{Phaser.Circle (x="+this.x+" y="+this.y+" diameter="+this.diameter+" radius="+this.radius+")}]"}},c.Circle.prototype.constructor=c.Circle,Object.defineProperty(c.Circle.prototype,"diameter",{get:function(){return this._diameter},set:function(a){a>0&&(this._diameter=a,this._radius=.5*a)}}),Object.defineProperty(c.Circle.prototype,"radius",{get:function(){return this._radius},set:function(a){a>0&&(this._radius=a,this._diameter=2*a)}}),Object.defineProperty(c.Circle.prototype,"left",{get:function(){return this.x-this._radius},set:function(a){a>this.x?(this._radius=0,this._diameter=0):this.radius=this.x-a}}),Object.defineProperty(c.Circle.prototype,"right",{get:function(){return this.x+this._radius},set:function(a){athis.y?(this._radius=0,this._diameter=0):this.radius=this.y-a}}),Object.defineProperty(c.Circle.prototype,"bottom",{get:function(){return this.y+this._radius},set:function(a){a0?Math.PI*this._radius*this._radius:0}}),Object.defineProperty(c.Circle.prototype,"empty",{get:function(){return 0===this._diameter},set:function(a){a===!0&&this.setTo(0,0,0)}}),c.Circle.contains=function(a,b,c){if(a.radius>0&&b>=a.left&&b<=a.right&&c>=a.top&&c<=a.bottom){var d=(a.x-b)*(a.x-b),e=(a.y-c)*(a.y-c);return d+e<=a.radius*a.radius}return!1},c.Circle.equals=function(a,b){return a.x==b.x&&a.y==b.y&&a.diameter==b.diameter},c.Circle.intersects=function(a,b){return c.Math.distance(a.x,a.y,b.x,b.y)<=a.radius+b.radius},c.Circle.circumferencePoint=function(a,b,d,e){return void 0===d&&(d=!1),void 0===e&&(e=new c.Point),d===!0&&(b=c.Math.degToRad(b)),e.x=a.x+a.radius*Math.cos(b),e.y=a.y+a.radius*Math.sin(b),e},c.Circle.intersectsRectangle=function(a,b){var c=Math.abs(a.x-b.x-b.halfWidth),d=b.halfWidth+a.radius;if(c>d)return!1;var e=Math.abs(a.y-b.y-b.halfHeight),f=b.halfHeight+a.radius;if(e>f)return!1;if(c<=b.halfWidth||e<=b.halfHeight)return!0;var g=c-b.halfWidth,h=e-b.halfHeight,i=g*g,j=h*h,k=a.radius*a.radius;return k>=i+j},PIXI.Circle=c.Circle,c.Ellipse=function(a,b,d,e){a=a||0,b=b||0,d=d||0,e=e||0,this.x=a,this.y=b,this.width=d,this.height=e,this.type=c.ELLIPSE},c.Ellipse.prototype={setTo:function(a,b,c,d){return this.x=a,this.y=b,this.width=c,this.height=d,this},getBounds:function(){return new c.Rectangle(this.x-this.width,this.y-this.height,this.width,this.height)},copyFrom:function(a){return this.setTo(a.x,a.y,a.width,a.height)},copyTo:function(a){return a.x=this.x,a.y=this.y,a.width=this.width,a.height=this.height,a},clone:function(a){return void 0===a||null===a?a=new c.Ellipse(this.x,this.y,this.width,this.height):a.setTo(this.x,this.y,this.width,this.height),a},contains:function(a,b){return c.Ellipse.contains(this,a,b)},random:function(a){void 0===a&&(a=new c.Point);var b=Math.random()*Math.PI*2,d=Math.random();return a.x=Math.sqrt(d)*Math.cos(b),a.y=Math.sqrt(d)*Math.sin(b),a.x=this.x+a.x*this.width/2,a.y=this.y+a.y*this.height/2,a},toString:function(){return"[{Phaser.Ellipse (x="+this.x+" y="+this.y+" width="+this.width+" height="+this.height+")}]"}},c.Ellipse.prototype.constructor=c.Ellipse,Object.defineProperty(c.Ellipse.prototype,"left",{get:function(){return this.x},set:function(a){this.x=a}}),Object.defineProperty(c.Ellipse.prototype,"right",{get:function(){return this.x+this.width},set:function(a){ad+e},PIXI.Ellipse=c.Ellipse,c.Line=function(a,b,d,e){a=a||0,b=b||0,d=d||0,e=e||0,this.start=new c.Point(a,b),this.end=new c.Point(d,e),this.type=c.LINE},c.Line.prototype={setTo:function(a,b,c,d){return this.start.setTo(a,b),this.end.setTo(c,d),this},fromSprite:function(a,b,c){return void 0===c&&(c=!1),c?this.setTo(a.center.x,a.center.y,b.center.x,b.center.y):this.setTo(a.x,a.y,b.x,b.y)},fromAngle:function(a,b,c,d){return this.start.setTo(a,b),this.end.setTo(a+Math.cos(c)*d,b+Math.sin(c)*d),this},rotate:function(a,b){var c=(this.start.x+this.end.x)/2,d=(this.start.y+this.end.y)/2;return this.start.rotate(c,d,a,b),this.end.rotate(c,d,a,b),this},rotateAround:function(a,b,c,d){return this.start.rotate(a,b,c,d),this.end.rotate(a,b,c,d),this},intersects:function(a,b,d){return c.Line.intersectsPoints(this.start,this.end,a.start,a.end,b,d)},reflect:function(a){return c.Line.reflect(this,a)},midPoint:function(a){return void 0===a&&(a=new c.Point),a.x=(this.start.x+this.end.x)/2,a.y=(this.start.y+this.end.y)/2,a},centerOn:function(a,b){var c=(this.start.x+this.end.x)/2,d=(this.start.y+this.end.y)/2,e=a-c,f=b-d;this.start.add(e,f),this.end.add(e,f)},pointOnLine:function(a,b){return(a-this.start.x)*(this.end.y-this.start.y)===(this.end.x-this.start.x)*(b-this.start.y)},pointOnSegment:function(a,b){var c=Math.min(this.start.x,this.end.x),d=Math.max(this.start.x,this.end.x),e=Math.min(this.start.y,this.end.y),f=Math.max(this.start.y,this.end.y);return this.pointOnLine(a,b)&&a>=c&&d>=a&&b>=e&&f>=b},random:function(a){void 0===a&&(a=new c.Point);var b=Math.random();return a.x=this.start.x+b*(this.end.x-this.start.x),a.y=this.start.y+b*(this.end.y-this.start.y),a},coordinatesOnLine:function(a,b){void 0===a&&(a=1),void 0===b&&(b=[]);var c=Math.round(this.start.x),d=Math.round(this.start.y),e=Math.round(this.end.x),f=Math.round(this.end.y),g=Math.abs(e-c),h=Math.abs(f-d),i=e>c?1:-1,j=f>d?1:-1,k=g-h;b.push([c,d]);for(var l=1;c!=e||d!=f;){var m=k<<1;m>-h&&(k-=h,c+=i),g>m&&(k+=g,d+=j),l%a===0&&b.push([c,d]),l++}return b},clone:function(a){return void 0===a||null===a?a=new c.Line(this.start.x,this.start.y,this.end.x,this.end.y):a.setTo(this.start.x,this.start.y,this.end.x,this.end.y),a}},Object.defineProperty(c.Line.prototype,"length",{get:function(){return Math.sqrt((this.end.x-this.start.x)*(this.end.x-this.start.x)+(this.end.y-this.start.y)*(this.end.y-this.start.y))}}),Object.defineProperty(c.Line.prototype,"angle",{get:function(){return Math.atan2(this.end.y-this.start.y,this.end.x-this.start.x)}}),Object.defineProperty(c.Line.prototype,"slope",{get:function(){return(this.end.y-this.start.y)/(this.end.x-this.start.x)}}),Object.defineProperty(c.Line.prototype,"perpSlope",{get:function(){return-((this.end.x-this.start.x)/(this.end.y-this.start.y))}}),Object.defineProperty(c.Line.prototype,"x",{get:function(){return Math.min(this.start.x,this.end.x)}}),Object.defineProperty(c.Line.prototype,"y",{get:function(){return Math.min(this.start.y,this.end.y)}}),Object.defineProperty(c.Line.prototype,"left",{get:function(){return Math.min(this.start.x,this.end.x)}}),Object.defineProperty(c.Line.prototype,"right",{get:function(){return Math.max(this.start.x,this.end.x)}}),Object.defineProperty(c.Line.prototype,"top",{get:function(){return Math.min(this.start.y,this.end.y)}}),Object.defineProperty(c.Line.prototype,"bottom",{get:function(){return Math.max(this.start.y,this.end.y)}}),Object.defineProperty(c.Line.prototype,"width",{get:function(){return Math.abs(this.start.x-this.end.x)}}),Object.defineProperty(c.Line.prototype,"height",{get:function(){return Math.abs(this.start.y-this.end.y)}}),Object.defineProperty(c.Line.prototype,"normalX",{get:function(){return Math.cos(this.angle-1.5707963267948966)}}),Object.defineProperty(c.Line.prototype,"normalY",{get:function(){return Math.sin(this.angle-1.5707963267948966)}}),Object.defineProperty(c.Line.prototype,"normalAngle",{get:function(){return c.Math.wrap(this.angle-1.5707963267948966,-Math.PI,Math.PI)}}),c.Line.intersectsPoints=function(a,b,d,e,f,g){void 0===f&&(f=!0),void 0===g&&(g=new c.Point);var h=b.y-a.y,i=e.y-d.y,j=a.x-b.x,k=d.x-e.x,l=b.x*a.y-a.x*b.y,m=e.x*d.y-d.x*e.y,n=h*k-i*j;if(0===n)return null;if(g.x=(j*m-k*l)/n,g.y=(i*l-h*m)/n,f){var o=(e.y-d.y)*(b.x-a.x)-(e.x-d.x)*(b.y-a.y),p=((e.x-d.x)*(a.y-d.y)-(e.y-d.y)*(a.x-d.x))/o,q=((b.x-a.x)*(a.y-d.y)-(b.y-a.y)*(a.x-d.x))/o;return p>=0&&1>=p&&q>=0&&1>=q?g:null}return g},c.Line.intersects=function(a,b,d,e){return c.Line.intersectsPoints(a.start,a.end,b.start,b.end,d,e)},c.Line.intersectsRectangle=function(a,b){if(!c.Rectangle.intersects(a,b))return!1;var d=a.start.x,e=a.start.y,f=a.end.x,g=a.end.y,h=b.x,i=b.y,j=b.right,k=b.bottom,l=0;if(d>=h&&j>=d&&e>=i&&k>=e||f>=h&&j>=f&&g>=i&&k>=g)return!0;if(h>d&&f>=h){if(l=e+(g-e)*(h-d)/(f-d),l>i&&k>=l)return!0}else if(d>j&&j>=f&&(l=e+(g-e)*(j-d)/(f-d),l>=i&&k>=l))return!0;if(i>e&&g>=i){if(l=d+(f-d)*(i-e)/(g-e),l>=h&&j>=l)return!0}else if(e>k&&k>=g&&(l=d+(f-d)*(k-e)/(g-e),l>=h&&j>=l))return!0;return!1},c.Line.reflect=function(a,b){return 2*b.normalAngle-3.141592653589793-a.angle},c.Matrix=function(a,b,d,e,f,g){void 0!==a&&null!==a||(a=1),void 0!==b&&null!==b||(b=0),void 0!==d&&null!==d||(d=0),void 0!==e&&null!==e||(e=1),void 0!==f&&null!==f||(f=0),void 0!==g&&null!==g||(g=0),this.a=a,this.b=b,this.c=d,this.d=e,this.tx=f,this.ty=g,this.type=c.MATRIX},c.Matrix.prototype={fromArray:function(a){return this.setTo(a[0],a[1],a[3],a[4],a[2],a[5])},setTo:function(a,b,c,d,e,f){return this.a=a,this.b=b,this.c=c,this.d=d,this.tx=e,this.ty=f,this},clone:function(a){return void 0===a||null===a?a=new c.Matrix(this.a,this.b,this.c,this.d,this.tx,this.ty):(a.a=this.a,a.b=this.b,a.c=this.c,a.d=this.d,a.tx=this.tx,a.ty=this.ty),a},copyTo:function(a){return a.copyFrom(this),a},copyFrom:function(a){return this.a=a.a,this.b=a.b,this.c=a.c,this.d=a.d,this.tx=a.tx,this.ty=a.ty,this},toArray:function(a,b){return void 0===b&&(b=new PIXI.Float32Array(9)),a?(b[0]=this.a,b[1]=this.b,b[2]=0,b[3]=this.c,b[4]=this.d,b[5]=0,b[6]=this.tx,b[7]=this.ty,b[8]=1):(b[0]=this.a,b[1]=this.c,b[2]=this.tx,b[3]=this.b,b[4]=this.d,b[5]=this.ty,b[6]=0,b[7]=0,b[8]=1),b},apply:function(a,b){return void 0===b&&(b=new c.Point),b.x=this.a*a.x+this.c*a.y+this.tx,b.y=this.b*a.x+this.d*a.y+this.ty,b},applyInverse:function(a,b){void 0===b&&(b=new c.Point);var d=1/(this.a*this.d+this.c*-this.b),e=a.x,f=a.y;return b.x=this.d*d*e+-this.c*d*f+(this.ty*this.c-this.tx*this.d)*d,b.y=this.a*d*f+-this.b*d*e+(-this.ty*this.a+this.tx*this.b)*d,b},translate:function(a,b){return this.tx+=a,this.ty+=b,this},scale:function(a,b){return this.a*=a,this.d*=b,this.c*=a,this.b*=b,this.tx*=a,this.ty*=b,this},rotate:function(a){var b=Math.cos(a),c=Math.sin(a),d=this.a,e=this.c,f=this.tx;return this.a=d*b-this.b*c,this.b=d*c+this.b*b,this.c=e*b-this.d*c,this.d=e*c+this.d*b,this.tx=f*b-this.ty*c,this.ty=f*c+this.ty*b,this},append:function(a){var b=this.a,c=this.b,d=this.c,e=this.d;return this.a=a.a*b+a.b*d,this.b=a.a*c+a.b*e,this.c=a.c*b+a.d*d,this.d=a.c*c+a.d*e,this.tx=a.tx*b+a.ty*d+this.tx,this.ty=a.tx*c+a.ty*e+this.ty,this},identity:function(){return this.setTo(1,0,0,1,0,0)}},c.identityMatrix=new c.Matrix,PIXI.Matrix=c.Matrix,PIXI.identityMatrix=c.identityMatrix,c.Point=function(a,b){a=a||0,b=b||0,this.x=a,this.y=b,this.type=c.POINT},c.Point.prototype={copyFrom:function(a){return this.setTo(a.x,a.y)},invert:function(){return this.setTo(this.y,this.x)},setTo:function(a,b){return this.x=a||0,this.y=b||(0!==b?this.x:0),this},set:function(a,b){return this.x=a||0,this.y=b||(0!==b?this.x:0),this},add:function(a,b){return this.x+=a,this.y+=b,this},subtract:function(a,b){return this.x-=a,this.y-=b,this},multiply:function(a,b){return this.x*=a,this.y*=b,this},divide:function(a,b){return this.x/=a,this.y/=b,this},clampX:function(a,b){return this.x=c.Math.clamp(this.x,a,b),this},clampY:function(a,b){return this.y=c.Math.clamp(this.y,a,b),this},clamp:function(a,b){return this.x=c.Math.clamp(this.x,a,b),this.y=c.Math.clamp(this.y,a,b),this},clone:function(a){return void 0===a||null===a?a=new c.Point(this.x,this.y):a.setTo(this.x,this.y),a},copyTo:function(a){return a.x=this.x,a.y=this.y,a},distance:function(a,b){return c.Point.distance(this,a,b)},equals:function(a){return a.x===this.x&&a.y===this.y},angle:function(a,b){return void 0===b&&(b=!1),b?c.Math.radToDeg(Math.atan2(a.y-this.y,a.x-this.x)):Math.atan2(a.y-this.y,a.x-this.x)},rotate:function(a,b,d,e,f){return c.Point.rotate(this,a,b,d,e,f)},getMagnitude:function(){return Math.sqrt(this.x*this.x+this.y*this.y)},getMagnitudeSq:function(){return this.x*this.x+this.y*this.y},setMagnitude:function(a){return this.normalize().multiply(a,a)},normalize:function(){if(!this.isZero()){var a=this.getMagnitude();this.x/=a,this.y/=a}return this},isZero:function(){return 0===this.x&&0===this.y},dot:function(a){return this.x*a.x+this.y*a.y},cross:function(a){return this.x*a.y-this.y*a.x},perp:function(){return this.setTo(-this.y,this.x)},rperp:function(){return this.setTo(this.y,-this.x)},normalRightHand:function(){return this.setTo(-1*this.y,this.x)},floor:function(){return this.setTo(Math.floor(this.x),Math.floor(this.y))},ceil:function(){return this.setTo(Math.ceil(this.x),Math.ceil(this.y))},toString:function(){return"[{Point (x="+this.x+" y="+this.y+")}]"}},c.Point.prototype.constructor=c.Point,c.Point.add=function(a,b,d){return void 0===d&&(d=new c.Point),d.x=a.x+b.x,d.y=a.y+b.y,d},c.Point.subtract=function(a,b,d){return void 0===d&&(d=new c.Point),d.x=a.x-b.x,d.y=a.y-b.y,d},c.Point.multiply=function(a,b,d){return void 0===d&&(d=new c.Point),d.x=a.x*b.x,d.y=a.y*b.y,d},c.Point.divide=function(a,b,d){return void 0===d&&(d=new c.Point),d.x=a.x/b.x,d.y=a.y/b.y,d},c.Point.equals=function(a,b){return a.x===b.x&&a.y===b.y},c.Point.angle=function(a,b){return Math.atan2(a.y-b.y,a.x-b.x)},c.Point.negative=function(a,b){return void 0===b&&(b=new c.Point),b.setTo(-a.x,-a.y)},c.Point.multiplyAdd=function(a,b,d,e){return void 0===e&&(e=new c.Point),e.setTo(a.x+b.x*d,a.y+b.y*d)},c.Point.interpolate=function(a,b,d,e){return void 0===e&&(e=new c.Point),e.setTo(a.x+(b.x-a.x)*d,a.y+(b.y-a.y)*d)},c.Point.perp=function(a,b){return void 0===b&&(b=new c.Point),b.setTo(-a.y,a.x)},c.Point.rperp=function(a,b){return void 0===b&&(b=new c.Point),b.setTo(a.y,-a.x)},c.Point.distance=function(a,b,d){var e=c.Math.distance(a.x,a.y,b.x,b.y);return d?Math.round(e):e},c.Point.project=function(a,b,d){void 0===d&&(d=new c.Point);var e=a.dot(b)/b.getMagnitudeSq();return 0!==e&&d.setTo(e*b.x,e*b.y),d},c.Point.projectUnit=function(a,b,d){void 0===d&&(d=new c.Point);var e=a.dot(b);return 0!==e&&d.setTo(e*b.x,e*b.y),d},c.Point.normalRightHand=function(a,b){return void 0===b&&(b=new c.Point),b.setTo(-1*a.y,a.x)},c.Point.normalize=function(a,b){void 0===b&&(b=new c.Point);var d=a.getMagnitude();return 0!==d&&b.setTo(a.x/d,a.y/d),b},c.Point.rotate=function(a,b,d,e,f,g){if(f&&(e=c.Math.degToRad(e)),void 0===g){a.subtract(b,d);var h=Math.sin(e),i=Math.cos(e),j=i*a.x-h*a.y,k=h*a.x+i*a.y;a.x=j+b,a.y=k+d}else{var l=e+Math.atan2(a.y-d,a.x-b);a.x=b+g*Math.cos(l),a.y=d+g*Math.sin(l)}return a},c.Point.centroid=function(a,b){if(void 0===b&&(b=new c.Point),"[object Array]"!==Object.prototype.toString.call(a))throw new Error("Phaser.Point. Parameter 'points' must be an array");var d=a.length;if(1>d)throw new Error("Phaser.Point. Parameter 'points' array must not be empty");if(1===d)return b.copyFrom(a[0]),b;for(var e=0;d>e;e++)c.Point.add(b,a[e],b);return b.divide(d,d),b},c.Point.parse=function(a,b,d){b=b||"x",d=d||"y";var e=new c.Point;return a[b]&&(e.x=parseInt(a[b],10)),a[d]&&(e.y=parseInt(a[d],10)),e},PIXI.Point=c.Point,c.Polygon=function(){this.area=0,this._points=[],arguments.length>0&&this.setTo.apply(this,arguments),this.closed=!0,this.flattened=!1,this.type=c.POLYGON},c.Polygon.prototype={toNumberArray:function(a){void 0===a&&(a=[]);for(var b=0;b=g&&i>b||b>=i&&g>b)&&(h-f)*(b-g)/(i-g)+f>a&&(c=!c)}else for(var d=-1,e=this._points.length-1;++d=g&&i>b||b>=i&&g>b)&&(h-f)*(b-g)/(i-g)+f>a&&(c=!c)}return c},setTo:function(a){if(this.area=0,this._points=[],arguments.length>0){Array.isArray(a)||(a=Array.prototype.slice.call(arguments));for(var b=Number.MAX_VALUE,c=0,d=a.length;d>c;c++){if("number"==typeof a[c]){var e=new PIXI.Point(a[c],a[c+1]);c++}else if(Array.isArray(a[c]))var e=new PIXI.Point(a[c][0],a[c][1]);else var e=new PIXI.Point(a[c].x,a[c].y);this._points.push(e),e.yf;f++)b=this._points[f],c=f===g-1?this._points[0]:this._points[f+1],d=(b.y-a+(c.y-a))/2,e=b.x-c.x,this.area+=d*e;return this.area}},c.Polygon.prototype.constructor=c.Polygon,Object.defineProperty(c.Polygon.prototype,"points",{get:function(){return this._points},set:function(a){null!=a?this.setTo(a):this.setTo()}}),PIXI.Polygon=c.Polygon,c.Rectangle=function(a,b,d,e){a=a||0,b=b||0,d=d||0,e=e||0,this.x=a,this.y=b,this.width=d,this.height=e,this.type=c.RECTANGLE},c.Rectangle.prototype={offset:function(a,b){return this.x+=a,this.y+=b,this},offsetPoint:function(a){return this.offset(a.x,a.y)},setTo:function(a,b,c,d){return this.x=a,this.y=b,this.width=c,this.height=d,this},scale:function(a,b){return void 0===b&&(b=a),this.width*=a,this.height*=b,this},centerOn:function(a,b){return this.centerX=a,this.centerY=b,this},floor:function(){this.x=Math.floor(this.x),this.y=Math.floor(this.y)},floorAll:function(){this.x=Math.floor(this.x),this.y=Math.floor(this.y),this.width=Math.floor(this.width),this.height=Math.floor(this.height)},ceil:function(){this.x=Math.ceil(this.x),this.y=Math.ceil(this.y)},ceilAll:function(){this.x=Math.ceil(this.x),this.y=Math.ceil(this.y),this.width=Math.ceil(this.width),this.height=Math.ceil(this.height)},copyFrom:function(a){return this.setTo(a.x,a.y,a.width,a.height)},copyTo:function(a){return a.x=this.x,a.y=this.y,a.width=this.width,a.height=this.height,a},inflate:function(a,b){return c.Rectangle.inflate(this,a,b)},size:function(a){return c.Rectangle.size(this,a)},resize:function(a,b){return this.width=a,this.height=b,this},clone:function(a){return c.Rectangle.clone(this,a)},contains:function(a,b){return c.Rectangle.contains(this,a,b)},containsRect:function(a){return c.Rectangle.containsRect(a,this)},equals:function(a){return c.Rectangle.equals(this,a)},intersection:function(a,b){return c.Rectangle.intersection(this,a,b)},intersects:function(a){return c.Rectangle.intersects(this,a)},intersectsRaw:function(a,b,d,e,f){return c.Rectangle.intersectsRaw(this,a,b,d,e,f)},union:function(a,b){return c.Rectangle.union(this,a,b)},random:function(a){return void 0===a&&(a=new c.Point),a.x=this.randomX,a.y=this.randomY,a},getPoint:function(a,b){switch(void 0===b&&(b=new c.Point),a){default:case c.TOP_LEFT:return b.set(this.x,this.y);case c.TOP_CENTER:return b.set(this.centerX,this.y);case c.TOP_RIGHT:return b.set(this.right,this.y);case c.LEFT_CENTER:return b.set(this.x,this.centerY);case c.CENTER:return b.set(this.centerX,this.centerY);case c.RIGHT_CENTER:return b.set(this.right,this.centerY);case c.BOTTOM_LEFT:return b.set(this.x,this.bottom);case c.BOTTOM_CENTER:return b.set(this.centerX,this.bottom);case c.BOTTOM_RIGHT:return b.set(this.right,this.bottom)}},toString:function(){return"[{Rectangle (x="+this.x+" y="+this.y+" width="+this.width+" height="+this.height+" empty="+this.empty+")}]"}},Object.defineProperty(c.Rectangle.prototype,"halfWidth",{get:function(){return Math.round(this.width/2)}}),Object.defineProperty(c.Rectangle.prototype,"halfHeight",{get:function(){return Math.round(this.height/2)}}),Object.defineProperty(c.Rectangle.prototype,"bottom",{get:function(){return this.y+this.height},set:function(a){a<=this.y?this.height=0:this.height=a-this.y}}),Object.defineProperty(c.Rectangle.prototype,"bottomLeft",{get:function(){return new c.Point(this.x,this.bottom)},set:function(a){this.x=a.x,this.bottom=a.y}}),Object.defineProperty(c.Rectangle.prototype,"bottomRight",{get:function(){return new c.Point(this.right,this.bottom)},set:function(a){this.right=a.x,this.bottom=a.y}}),Object.defineProperty(c.Rectangle.prototype,"left",{get:function(){return this.x},set:function(a){a>=this.right?this.width=0:this.width=this.right-a,this.x=a}}),Object.defineProperty(c.Rectangle.prototype,"right",{get:function(){return this.x+this.width},set:function(a){a<=this.x?this.width=0:this.width=a-this.x}}),Object.defineProperty(c.Rectangle.prototype,"volume",{get:function(){return this.width*this.height}}),Object.defineProperty(c.Rectangle.prototype,"perimeter",{get:function(){return 2*this.width+2*this.height}}),Object.defineProperty(c.Rectangle.prototype,"centerX",{get:function(){return this.x+this.halfWidth},set:function(a){this.x=a-this.halfWidth}}),Object.defineProperty(c.Rectangle.prototype,"centerY",{get:function(){return this.y+this.halfHeight},set:function(a){this.y=a-this.halfHeight}}),Object.defineProperty(c.Rectangle.prototype,"randomX",{get:function(){return this.x+Math.random()*this.width}}),Object.defineProperty(c.Rectangle.prototype,"randomY",{get:function(){return this.y+Math.random()*this.height}}),Object.defineProperty(c.Rectangle.prototype,"top",{get:function(){return this.y},set:function(a){a>=this.bottom?(this.height=0,this.y=a):this.height=this.bottom-a}}),Object.defineProperty(c.Rectangle.prototype,"topLeft",{get:function(){return new c.Point(this.x,this.y)},set:function(a){this.x=a.x,this.y=a.y}}),Object.defineProperty(c.Rectangle.prototype,"topRight",{get:function(){return new c.Point(this.x+this.width,this.y)},set:function(a){this.right=a.x,this.y=a.y}}),Object.defineProperty(c.Rectangle.prototype,"empty",{get:function(){return!this.width||!this.height},set:function(a){a===!0&&this.setTo(0,0,0,0)}}),c.Rectangle.prototype.constructor=c.Rectangle,c.Rectangle.inflate=function(a,b,c){return a.x-=b,a.width+=2*b,a.y-=c,a.height+=2*c,a},c.Rectangle.inflatePoint=function(a,b){return c.Rectangle.inflate(a,b.x,b.y)},c.Rectangle.size=function(a,b){return void 0===b||null===b?b=new c.Point(a.width,a.height):b.setTo(a.width,a.height),b},c.Rectangle.clone=function(a,b){return void 0===b||null===b?b=new c.Rectangle(a.x,a.y,a.width,a.height):b.setTo(a.x,a.y,a.width,a.height),b},c.Rectangle.contains=function(a,b,c){return a.width<=0||a.height<=0?!1:b>=a.x&&b=a.y&&c=a&&a+c>e&&f>=b&&b+d>f},c.Rectangle.containsPoint=function(a,b){return c.Rectangle.contains(a,b.x,b.y)},c.Rectangle.containsRect=function(a,b){return a.volume>b.volume?!1:a.x>=b.x&&a.y>=b.y&&a.rightb.right||a.y>b.bottom)},c.Rectangle.intersectsRaw=function(a,b,c,d,e,f){return void 0===f&&(f=0),!(b>a.right+f||ca.bottom+f||ed&&(d=a.x),a.xf&&(f=a.y),a.y=c&&a<=c+this.width){var d=this.y;if(b>=d&&b<=d+this.height)return!0}return!1}},c.RoundedRectangle.prototype.constructor=c.RoundedRectangle,PIXI.RoundedRectangle=c.RoundedRectangle,c.Camera=function(a,b,d,e,f,g){this.game=a,this.world=a.world,this.id=0,this.view=new c.Rectangle(d,e,f,g),this.bounds=new c.Rectangle(d,e,f,g),this.deadzone=null,this.visible=!0,this.roundPx=!0,this.atLimit={x:!1,y:!1},this.target=null,this.displayObject=null,this.scale=null,this.totalInView=0,this.lerp=new c.Point(1,1),this.onShakeComplete=new c.Signal,this.onFlashComplete=new c.Signal,this.onFadeComplete=new c.Signal,this.fx=null,this._targetPosition=new c.Point,this._edge=0,this._position=new c.Point,this._shake={intensity:0,duration:0,horizontal:!1,vertical:!1,shakeBounds:!0,x:0,y:0},this._fxDuration=0,this._fxType=0},c.Camera.FOLLOW_LOCKON=0, +c.Camera.FOLLOW_PLATFORMER=1,c.Camera.FOLLOW_TOPDOWN=2,c.Camera.FOLLOW_TOPDOWN_TIGHT=3,c.Camera.SHAKE_BOTH=4,c.Camera.SHAKE_HORIZONTAL=5,c.Camera.SHAKE_VERTICAL=6,c.Camera.ENABLE_FX=!0,c.Camera.prototype={boot:function(){this.displayObject=this.game.world,this.scale=this.game.world.scale,this.game.camera=this,c.Graphics&&c.Camera.ENABLE_FX&&(this.fx=new c.Graphics(this.game),this.game.stage.addChild(this.fx))},preUpdate:function(){this.totalInView=0},follow:function(a,b,d,e){void 0===b&&(b=c.Camera.FOLLOW_LOCKON),void 0===d&&(d=1),void 0===e&&(e=1),this.target=a,this.lerp.set(d,e);var f;switch(b){case c.Camera.FOLLOW_PLATFORMER:var g=this.width/8,h=this.height/3;this.deadzone=new c.Rectangle((this.width-g)/2,(this.height-h)/2-.25*h,g,h);break;case c.Camera.FOLLOW_TOPDOWN:f=Math.max(this.width,this.height)/4,this.deadzone=new c.Rectangle((this.width-f)/2,(this.height-f)/2,f,f);break;case c.Camera.FOLLOW_TOPDOWN_TIGHT:f=Math.max(this.width,this.height)/8,this.deadzone=new c.Rectangle((this.width-f)/2,(this.height-f)/2,f,f);break;case c.Camera.FOLLOW_LOCKON:this.deadzone=null;break;default:this.deadzone=null}},unfollow:function(){this.target=null},focusOn:function(a){this.setPosition(Math.round(a.x-this.view.halfWidth),Math.round(a.y-this.view.halfHeight))},focusOnXY:function(a,b){this.setPosition(Math.round(a-this.view.halfWidth),Math.round(b-this.view.halfHeight))},shake:function(a,b,d,e,f){return void 0===a&&(a=.05),void 0===b&&(b=500),void 0===d&&(d=!0),void 0===e&&(e=c.Camera.SHAKE_BOTH),void 0===f&&(f=!0),!d&&this._shake.duration>0?!1:(this._shake.intensity=a,this._shake.duration=b,this._shake.shakeBounds=f,this._shake.x=0,this._shake.y=0,this._shake.horizontal=e===c.Camera.SHAKE_BOTH||e===c.Camera.SHAKE_HORIZONTAL,this._shake.vertical=e===c.Camera.SHAKE_BOTH||e===c.Camera.SHAKE_VERTICAL,!0)},flash:function(a,b,c){return void 0===a&&(a=16777215),void 0===b&&(b=500),void 0===c&&(c=!1),!this.fx||!c&&this._fxDuration>0?!1:(this.fx.clear(),this.fx.beginFill(a),this.fx.drawRect(0,0,this.width,this.height),this.fx.endFill(),this.fx.alpha=1,this._fxDuration=b,this._fxType=0,!0)},fade:function(a,b,c){return void 0===a&&(a=0),void 0===b&&(b=500),void 0===c&&(c=!1),!this.fx||!c&&this._fxDuration>0?!1:(this.fx.clear(),this.fx.beginFill(a),this.fx.drawRect(0,0,this.width,this.height),this.fx.endFill(),this.fx.alpha=0,this._fxDuration=b,this._fxType=1,!0)},update:function(){this._fxDuration>0&&this.updateFX(),this._shake.duration>0&&this.updateShake(),this.bounds&&this.checkBounds(),this.roundPx&&(this.view.floor(),this._shake.x=Math.floor(this._shake.x),this._shake.y=Math.floor(this._shake.y)),this.displayObject.position.x=-this.view.x,this.displayObject.position.y=-this.view.y},updateFX:function(){0===this._fxType?(this.fx.alpha-=this.game.time.elapsedMS/this._fxDuration,this.fx.alpha<=0&&(this._fxDuration=0,this.fx.alpha=0,this.onFlashComplete.dispatch())):(this.fx.alpha+=this.game.time.elapsedMS/this._fxDuration,this.fx.alpha>=1&&(this._fxDuration=0,this.fx.alpha=1,this.onFadeComplete.dispatch()))},updateShake:function(){this._shake.duration-=this.game.time.elapsedMS,this._shake.duration<=0?(this.onShakeComplete.dispatch(),this._shake.x=0,this._shake.y=0):(this._shake.horizontal&&(this._shake.x=this.game.rnd.frac()*this._shake.intensity*this.view.width*2-this._shake.intensity*this.view.width),this._shake.vertical&&(this._shake.y=this.game.rnd.frac()*this._shake.intensity*this.view.height*2-this._shake.intensity*this.view.height))},updateTarget:function(){this._targetPosition.x=this.view.x+this.target.worldPosition.x,this._targetPosition.y=this.view.y+this.target.worldPosition.y,this.deadzone?(this._edge=this._targetPosition.x-this.view.x,this._edgethis.deadzone.right&&(this.view.x=this.game.math.linear(this.view.x,this._targetPosition.x-this.deadzone.right,this.lerp.x)),this._edge=this._targetPosition.y-this.view.y,this._edgethis.deadzone.bottom&&(this.view.y=this.game.math.linear(this.view.y,this._targetPosition.y-this.deadzone.bottom,this.lerp.y))):(this.view.x=this.game.math.linear(this.view.x,this._targetPosition.x-this.view.halfWidth,this.lerp.x),this.view.y=this.game.math.linear(this.view.y,this._targetPosition.y-this.view.halfHeight,this.lerp.y)),this.bounds&&this.checkBounds(),this.roundPx&&this.view.floor(),this.displayObject.position.x=-this.view.x,this.displayObject.position.y=-this.view.y},setBoundsToWorld:function(){this.bounds&&this.bounds.copyFrom(this.game.world.bounds)},checkBounds:function(){this.atLimit.x=!1,this.atLimit.y=!1;var a=this.view.x+this._shake.x,b=this.view.right+this._shake.x,c=this.view.y+this._shake.y,d=this.view.bottom+this._shake.y;a<=this.bounds.x*this.scale.x&&(this.atLimit.x=!0,this.view.x=this.bounds.x*this.scale.x,this._shake.shakeBounds||(this._shake.x=0)),b>=this.bounds.right*this.scale.x&&(this.atLimit.x=!0,this.view.x=this.bounds.right*this.scale.x-this.width,this._shake.shakeBounds||(this._shake.x=0)),c<=this.bounds.top*this.scale.y&&(this.atLimit.y=!0,this.view.y=this.bounds.top*this.scale.y,this._shake.shakeBounds||(this._shake.y=0)),d>=this.bounds.bottom*this.scale.y&&(this.atLimit.y=!0,this.view.y=this.bounds.bottom*this.scale.y-this.height,this._shake.shakeBounds||(this._shake.y=0))},setPosition:function(a,b){this.view.x=a,this.view.y=b,this.bounds&&this.checkBounds()},setSize:function(a,b){this.view.width=a,this.view.height=b},reset:function(){this.target=null,this.view.x=0,this.view.y=0,this._shake.duration=0,this.resetFX()},resetFX:function(){this.fx.clear(),this.fx.alpha=0,this._fxDuration=0}},c.Camera.prototype.constructor=c.Camera,Object.defineProperty(c.Camera.prototype,"x",{get:function(){return this.view.x},set:function(a){this.view.x=a,this.bounds&&this.checkBounds()}}),Object.defineProperty(c.Camera.prototype,"y",{get:function(){return this.view.y},set:function(a){this.view.y=a,this.bounds&&this.checkBounds()}}),Object.defineProperty(c.Camera.prototype,"position",{get:function(){return this._position.set(this.view.x,this.view.y),this._position},set:function(a){"undefined"!=typeof a.x&&(this.view.x=a.x),"undefined"!=typeof a.y&&(this.view.y=a.y),this.bounds&&this.checkBounds()}}),Object.defineProperty(c.Camera.prototype,"width",{get:function(){return this.view.width},set:function(a){this.view.width=a}}),Object.defineProperty(c.Camera.prototype,"height",{get:function(){return this.view.height},set:function(a){this.view.height=a}}),Object.defineProperty(c.Camera.prototype,"shakeIntensity",{get:function(){return this._shake.intensity},set:function(a){this._shake.intensity=a}}),c.State=function(){this.game=null,this.key="",this.add=null,this.make=null,this.camera=null,this.cache=null,this.input=null,this.load=null,this.math=null,this.sound=null,this.scale=null,this.stage=null,this.state=null,this.time=null,this.tweens=null,this.world=null,this.particles=null,this.physics=null,this.rnd=null},c.State.prototype={init:function(){},preload:function(){},loadUpdate:function(){},loadRender:function(){},create:function(){},update:function(){},preRender:function(){},render:function(){},resize:function(){},paused:function(){},resumed:function(){},pauseUpdate:function(){},shutdown:function(){}},c.State.prototype.constructor=c.State,c.StateManager=function(a,b){this.game=a,this.states={},this._pendingState=null,"undefined"!=typeof b&&null!==b&&(this._pendingState=b),this._clearWorld=!1,this._clearCache=!1,this._created=!1,this._args=[],this.current="",this.onStateChange=new c.Signal,this.onInitCallback=null,this.onPreloadCallback=null,this.onCreateCallback=null,this.onUpdateCallback=null,this.onRenderCallback=null,this.onResizeCallback=null,this.onPreRenderCallback=null,this.onLoadUpdateCallback=null,this.onLoadRenderCallback=null,this.onPausedCallback=null,this.onResumedCallback=null,this.onPauseUpdateCallback=null,this.onShutDownCallback=null},c.StateManager.prototype={boot:function(){this.game.onPause.add(this.pause,this),this.game.onResume.add(this.resume,this),null!==this._pendingState&&"string"!=typeof this._pendingState&&this.add("default",this._pendingState,!0)},add:function(a,b,d){void 0===d&&(d=!1);var e;return b instanceof c.State?e=b:"object"==typeof b?(e=b,e.game=this.game):"function"==typeof b&&(e=new b(this.game)),this.states[a]=e,d&&(this.game.isBooted?this.start(a):this._pendingState=a),e},remove:function(a){this.current===a&&(this.callbackContext=null,this.onInitCallback=null,this.onShutDownCallback=null,this.onPreloadCallback=null,this.onLoadRenderCallback=null,this.onLoadUpdateCallback=null,this.onCreateCallback=null,this.onUpdateCallback=null,this.onPreRenderCallback=null,this.onRenderCallback=null,this.onResizeCallback=null,this.onPausedCallback=null,this.onResumedCallback=null,this.onPauseUpdateCallback=null),delete this.states[a]},start:function(a,b,c){void 0===b&&(b=!0),void 0===c&&(c=!1),this.checkState(a)&&(this._pendingState=a,this._clearWorld=b,this._clearCache=c,arguments.length>3&&(this._args=Array.prototype.splice.call(arguments,3)))},restart:function(a,b){void 0===a&&(a=!0),void 0===b&&(b=!1),this._pendingState=this.current,this._clearWorld=a,this._clearCache=b,arguments.length>2&&(this._args=Array.prototype.slice.call(arguments,2))},dummy:function(){},preUpdate:function(){if(this._pendingState&&this.game.isBooted){var a=this.current;if(this.clearCurrentState(),this.setCurrentState(this._pendingState),this.onStateChange.dispatch(this.current,a),this.current!==this._pendingState)return;this._pendingState=null,this.onPreloadCallback?(this.game.load.reset(!0),this.onPreloadCallback.call(this.callbackContext,this.game),0===this.game.load.totalQueuedFiles()&&0===this.game.load.totalQueuedPacks()?this.loadComplete():this.game.load.start()):this.loadComplete()}},clearCurrentState:function(){this.current&&(this.onShutDownCallback&&this.onShutDownCallback.call(this.callbackContext,this.game),this.game.tweens.removeAll(),this.game.camera.reset(),this.game.input.reset(!0),this.game.physics.clear(),this.game.time.removeAll(),this.game.scale.reset(this._clearWorld),this.game.debug&&this.game.debug.reset(),this._clearWorld&&(this.game.world.shutdown(),this._clearCache&&this.game.cache.destroy()))},checkState:function(a){return this.states[a]?this.states[a].preload||this.states[a].create||this.states[a].update||this.states[a].render?!0:(console.warn("Invalid Phaser State object given. Must contain at least a one of the required functions: preload, create, update or render"),!1):(console.warn("Phaser.StateManager - No state found with the key: "+a),!1)},link:function(a){this.states[a].game=this.game,this.states[a].add=this.game.add,this.states[a].make=this.game.make,this.states[a].camera=this.game.camera,this.states[a].cache=this.game.cache,this.states[a].input=this.game.input,this.states[a].load=this.game.load,this.states[a].math=this.game.math,this.states[a].sound=this.game.sound,this.states[a].scale=this.game.scale,this.states[a].state=this,this.states[a].stage=this.game.stage,this.states[a].time=this.game.time,this.states[a].tweens=this.game.tweens,this.states[a].world=this.game.world,this.states[a].particles=this.game.particles,this.states[a].rnd=this.game.rnd,this.states[a].physics=this.game.physics,this.states[a].key=a},unlink:function(a){this.states[a]&&(this.states[a].game=null,this.states[a].add=null,this.states[a].make=null,this.states[a].camera=null,this.states[a].cache=null,this.states[a].input=null,this.states[a].load=null,this.states[a].math=null,this.states[a].sound=null,this.states[a].scale=null,this.states[a].state=null,this.states[a].stage=null,this.states[a].time=null,this.states[a].tweens=null,this.states[a].world=null,this.states[a].particles=null,this.states[a].rnd=null,this.states[a].physics=null)},setCurrentState:function(a){this.callbackContext=this.states[a],this.link(a),this.onInitCallback=this.states[a].init||this.dummy,this.onPreloadCallback=this.states[a].preload||null,this.onLoadRenderCallback=this.states[a].loadRender||null,this.onLoadUpdateCallback=this.states[a].loadUpdate||null,this.onCreateCallback=this.states[a].create||null,this.onUpdateCallback=this.states[a].update||null,this.onPreRenderCallback=this.states[a].preRender||null,this.onRenderCallback=this.states[a].render||null,this.onResizeCallback=this.states[a].resize||null,this.onPausedCallback=this.states[a].paused||null,this.onResumedCallback=this.states[a].resumed||null,this.onPauseUpdateCallback=this.states[a].pauseUpdate||null,this.onShutDownCallback=this.states[a].shutdown||this.dummy,""!==this.current&&this.game.physics.reset(),this.current=a,this._created=!1,this.onInitCallback.apply(this.callbackContext,this._args),a===this._pendingState&&(this._args=[]),this.game._kickstart=!0},getCurrentState:function(){return this.states[this.current]},loadComplete:function(){this._created===!1&&this.onLoadUpdateCallback&&this.onLoadUpdateCallback.call(this.callbackContext,this.game),this._created===!1&&this.onCreateCallback?(this._created=!0,this.onCreateCallback.call(this.callbackContext,this.game)):this._created=!0},pause:function(){this._created&&this.onPausedCallback&&this.onPausedCallback.call(this.callbackContext,this.game)},resume:function(){this._created&&this.onResumedCallback&&this.onResumedCallback.call(this.callbackContext,this.game)},update:function(){this._created?this.onUpdateCallback&&this.onUpdateCallback.call(this.callbackContext,this.game):this.onLoadUpdateCallback&&this.onLoadUpdateCallback.call(this.callbackContext,this.game)},pauseUpdate:function(){this._created?this.onPauseUpdateCallback&&this.onPauseUpdateCallback.call(this.callbackContext,this.game):this.onLoadUpdateCallback&&this.onLoadUpdateCallback.call(this.callbackContext,this.game)},preRender:function(a){this._created&&this.onPreRenderCallback&&this.onPreRenderCallback.call(this.callbackContext,this.game,a)},resize:function(a,b){this.onResizeCallback&&this.onResizeCallback.call(this.callbackContext,a,b)},render:function(){this._created?this.onRenderCallback&&(this.game.renderType===c.CANVAS?(this.game.context.save(),this.game.context.setTransform(1,0,0,1,0,0),this.onRenderCallback.call(this.callbackContext,this.game),this.game.context.restore()):this.onRenderCallback.call(this.callbackContext,this.game)):this.onLoadRenderCallback&&this.onLoadRenderCallback.call(this.callbackContext,this.game)},destroy:function(){this._clearWorld=!0,this._clearCache=!0,this.clearCurrentState(),this.callbackContext=null,this.onInitCallback=null,this.onShutDownCallback=null,this.onPreloadCallback=null,this.onLoadRenderCallback=null,this.onLoadUpdateCallback=null,this.onCreateCallback=null,this.onUpdateCallback=null,this.onRenderCallback=null,this.onPausedCallback=null,this.onResumedCallback=null,this.onPauseUpdateCallback=null,this.game=null,this.states={},this._pendingState=null,this.current=""}},c.StateManager.prototype.constructor=c.StateManager,Object.defineProperty(c.StateManager.prototype,"created",{get:function(){return this._created}}),c.Signal=function(){},c.Signal.prototype={_bindings:null,_prevParams:null,memorize:!1,_shouldPropagate:!0,active:!0,_boundDispatch:!1,validateListener:function(a,b){if("function"!=typeof a)throw new Error("Phaser.Signal: listener is a required param of {fn}() and should be a Function.".replace("{fn}",b))},_registerListener:function(a,b,d,e,f){var g,h=this._indexOfListener(a,d);if(-1!==h){if(g=this._bindings[h],g.isOnce()!==b)throw new Error("You cannot add"+(b?"":"Once")+"() then add"+(b?"Once":"")+"() the same listener without removing the relationship first.")}else g=new c.SignalBinding(this,a,b,d,e,f),this._addBinding(g);return this.memorize&&this._prevParams&&g.execute(this._prevParams),g},_addBinding:function(a){this._bindings||(this._bindings=[]);var b=this._bindings.length;do b--;while(this._bindings[b]&&a._priority<=this._bindings[b]._priority);this._bindings.splice(b+1,0,a)},_indexOfListener:function(a,b){if(!this._bindings)return-1;void 0===b&&(b=null);for(var c,d=this._bindings.length;d--;)if(c=this._bindings[d],c._listener===a&&c.context===b)return d;return-1},has:function(a,b){return-1!==this._indexOfListener(a,b)},add:function(a,b,c){this.validateListener(a,"add");var d=[];if(arguments.length>3)for(var e=3;e3)for(var e=3;ea||a>=this.children.length?-1:this.getChildAt(a)},c.Group.prototype.create=function(a,b,c,d,e,f){void 0===e&&(e=!0);var g=new this.classType(this.game,a,b,c,d);return g.exists=e,g.visible=e,g.alive=e,this.add(g,!1,f)},c.Group.prototype.createMultiple=function(a,b,c,d){void 0===c&&(c=0),void 0===d&&(d=!1),Array.isArray(b)||(b=[b]),Array.isArray(c)||(c=[c]);var e=this,f=[];return b.forEach(function(b){c.forEach(function(c){for(var g=0;a>g;g++)f.push(e.create(0,0,b,c,d))})}),f},c.Group.prototype.updateZ=function(){for(var a=this.children.length;a--;)this.children[a].z=a},c.Group.prototype.align=function(a,b,d,e,f,g){if(void 0===f&&(f=c.TOP_LEFT),void 0===g&&(g=0),!(0===this.children.length||g>this.children.length||-1===a&&-1===b))for(var h=new c.Rectangle(0,0,d,e),i=a*d,j=b*e,k=g;kthis.children.length-1&&(a=0),this.cursor?(this.cursorIndex=a,this.cursor=this.children[this.cursorIndex],this.cursor):void 0},c.Group.prototype.next=function(){return this.cursor?(this.cursorIndex>=this.children.length-1?this.cursorIndex=0:this.cursorIndex++,this.cursor=this.children[this.cursorIndex],this.cursor):void 0},c.Group.prototype.previous=function(){return this.cursor?(0===this.cursorIndex?this.cursorIndex=this.children.length-1:this.cursorIndex--,this.cursor=this.children[this.cursorIndex],this.cursor):void 0},c.Group.prototype.swap=function(a,b){this.swapChildren(a,b),this.updateZ()},c.Group.prototype.bringToTop=function(a){return a.parent===this&&this.getIndex(a)0&&(this.remove(a,!1,!0),this.addAt(a,0,!0)),a},c.Group.prototype.moveUp=function(a){if(a.parent===this&&this.getIndex(a)0){var b=this.getIndex(a),c=this.getAt(b-1);c&&this.swap(a,c)}return a},c.Group.prototype.xy=function(a,b,c){return 0>a||a>this.children.length?-1:(this.getChildAt(a).x=b,void(this.getChildAt(a).y=c))},c.Group.prototype.reverse=function(){this.children.reverse(),this.updateZ()},c.Group.prototype.getIndex=function(a){return this.children.indexOf(a)},c.Group.prototype.getByName=function(a){for(var b=0;b0))return!1;var f=b.length;return 1===f?0===d?a[b[0]]=c:1==d?a[b[0]]+=c:2==d?a[b[0]]-=c:3==d?a[b[0]]*=c:4==d&&(a[b[0]]/=c):2===f?0===d?a[b[0]][b[1]]=c:1==d?a[b[0]][b[1]]+=c:2==d?a[b[0]][b[1]]-=c:3==d?a[b[0]][b[1]]*=c:4==d&&(a[b[0]][b[1]]/=c):3===f?0===d?a[b[0]][b[1]][b[2]]=c:1==d?a[b[0]][b[1]][b[2]]+=c:2==d?a[b[0]][b[1]][b[2]]-=c:3==d?a[b[0]][b[1]][b[2]]*=c:4==d&&(a[b[0]][b[1]][b[2]]/=c):4===f&&(0===d?a[b[0]][b[1]][b[2]][b[3]]=c:1==d?a[b[0]][b[1]][b[2]][b[3]]+=c:2==d?a[b[0]][b[1]][b[2]][b[3]]-=c:3==d?a[b[0]][b[1]][b[2]][b[3]]*=c:4==d&&(a[b[0]][b[1]][b[2]][b[3]]/=c)),!0},c.Group.prototype.checkProperty=function(a,b,d,e){return void 0===e&&(e=!1),!c.Utils.getProperty(a,b)&&e?!1:c.Utils.getProperty(a,b)===d},c.Group.prototype.set=function(a,b,c,d,e,f,g){return void 0===g&&(g=!1),b=b.split("."),void 0===d&&(d=!1),void 0===e&&(e=!1),(d===!1||d&&a.alive)&&(e===!1||e&&a.visible)?this.setProperty(a,b,c,f,g):void 0},c.Group.prototype.setAll=function(a,b,c,d,e,f){void 0===c&&(c=!1),void 0===d&&(d=!1),void 0===f&&(f=!1),a=a.split("."),e=e||0;for(var g=0;g2){c=[];for(var d=2;d2){e=[];for(var f=2;f2){d=[null];for(var e=2;e2){d=[null];for(var e=2;e2){d=[null];for(var e=2;eb[this._sortProperty]?1:a.zb[this._sortProperty]?-1:0},c.Group.prototype.iterate=function(a,b,d,e,f,g){if(d===c.Group.RETURN_TOTAL&&0===this.children.length)return 0;for(var h=0,i=0;i0?this.children[this.children.length-1]:void 0},c.Group.prototype.getBottom=function(){return this.children.length>0?this.children[0]:void 0},c.Group.prototype.getClosestTo=function(a,b,d){for(var e=Number.MAX_VALUE,f=0,g=null,h=0;hf&&(!b||b.call(d,i,f))&&(e=f,g=i))}return g},c.Group.prototype.getFurthestFrom=function(a,b,d){for(var e=0,f=0,g=null,h=0;he&&(!b||b.call(d,i,f))&&(e=f,g=i))}return g},c.Group.prototype.countLiving=function(){return this.iterate("alive",!0,c.Group.RETURN_TOTAL)},c.Group.prototype.countDead=function(){return this.iterate("alive",!1,c.Group.RETURN_TOTAL)},c.Group.prototype.getRandom=function(a,b){return 0===this.children.length?null:(a=a||0,b=b||this.children.length,c.ArrayUtils.getRandomItem(this.children,a,b))},c.Group.prototype.remove=function(a,b,c){if(void 0===b&&(b=!1),void 0===c&&(c=!1),0===this.children.length||-1===this.children.indexOf(a))return!1;c||!a.events||a.destroyPhase||a.events.onRemovedFromGroup$dispatch(a,this);var d=this.removeChild(a);return this.removeFromHash(a),this.updateZ(),this.cursor===a&&this.next(),b&&d&&d.destroy(!0),!0},c.Group.prototype.moveAll=function(a,b){if(void 0===b&&(b=!1),this.children.length>0&&a instanceof c.Group){do a.add(this.children[0],b);while(this.children.length>0);this.hash=[],this.cursor=null}return a},c.Group.prototype.removeAll=function(a,b,c){if(void 0===a&&(a=!1),void 0===b&&(b=!1),void 0===c&&(c=!1),0!==this.children.length){do{!b&&this.children[0].events&&this.children[0].events.onRemovedFromGroup$dispatch(this.children[0],this);var d=this.removeChild(this.children[0]);this.removeFromHash(d),a&&d&&d.destroy(!0,c)}while(this.children.length>0);this.hash=[],this.cursor=null}},c.Group.prototype.removeBetween=function(a,b,c,d){if(void 0===b&&(b=this.children.length-1),void 0===c&&(c=!1),void 0===d&&(d=!1),0!==this.children.length){if(a>b||0>a||b>this.children.length)return!1;for(var e=b;e>=a;){!d&&this.children[e].events&&this.children[e].events.onRemovedFromGroup$dispatch(this.children[e],this);var f=this.removeChild(this.children[e]);this.removeFromHash(f),c&&f&&f.destroy(!0),this.cursor===this.children[e]&&(this.cursor=null),e--}this.updateZ()}},c.Group.prototype.destroy=function(a,b){null===this.game||this.ignoreDestroy||(void 0===a&&(a=!0),void 0===b&&(b=!1),this.onDestroy.dispatch(this,a,b),this.removeAll(a),this.cursor=null,this.filters=null,this.pendingDestroy=!1,b||(this.parent&&this.parent.removeChild(this),this.game=null,this.exists=!1))},Object.defineProperty(c.Group.prototype,"total",{get:function(){return this.iterate("exists",!0,c.Group.RETURN_TOTAL)}}),Object.defineProperty(c.Group.prototype,"length",{get:function(){return this.children.length}}),Object.defineProperty(c.Group.prototype,"angle",{get:function(){return c.Math.radToDeg(this.rotation)},set:function(a){this.rotation=c.Math.degToRad(a)}}),Object.defineProperty(c.Group.prototype,"centerX",{get:function(){return this.getBounds().centerX},set:function(a){var b=this.getBounds(),c=this.x-b.x;this.x=a+c-b.halfWidth}}),Object.defineProperty(c.Group.prototype,"centerY",{get:function(){return this.getBounds().centerY},set:function(a){var b=this.getBounds(),c=this.y-b.y;this.y=a+c-b.halfHeight}}),Object.defineProperty(c.Group.prototype,"left",{get:function(){return this.getBounds().left},set:function(a){var b=this.getBounds(),c=this.x-b.x;this.x=a+c}}),Object.defineProperty(c.Group.prototype,"right",{get:function(){return this.getBounds().right},set:function(a){var b=this.getBounds(),c=this.x-b.x;this.x=a+c-b.width}}),Object.defineProperty(c.Group.prototype,"top",{get:function(){return this.getBounds().top},set:function(a){var b=this.getBounds(),c=this.y-b.y;this.y=a+c}}),Object.defineProperty(c.Group.prototype,"bottom",{get:function(){return this.getBounds().bottom},set:function(a){var b=this.getBounds(),c=this.y-b.y;this.y=a+c-b.height}}),c.World=function(a){c.Group.call(this,a,null,"__world",!1),this.bounds=new c.Rectangle(0,0,a.width,a.height),this.camera=null,this._definedSize=!1,this._width=a.width,this._height=a.height,this.game.state.onStateChange.add(this.stateChange,this)},c.World.prototype=Object.create(c.Group.prototype),c.World.prototype.constructor=c.World,c.World.prototype.boot=function(){this.camera=new c.Camera(this.game,0,0,0,this.game.width,this.game.height),this.game.stage.addChild(this),this.camera.boot()},c.World.prototype.stateChange=function(){this.x=0,this.y=0,this.camera.reset()},c.World.prototype.setBounds=function(a,b,c,d){this._definedSize=!0,this._width=c,this._height=d,this.bounds.setTo(a,b,c,d),this.x=a,this.y=b,this.camera.bounds&&this.camera.bounds.setTo(a,b,Math.max(c,this.game.width),Math.max(d,this.game.height)),this.game.physics.setBoundsToWorld()},c.World.prototype.resize=function(a,b){this._definedSize&&(athis.bounds.right&&(a.x=this.bounds.left)),e&&(a.y+a._currentBounds.heightthis.bounds.bottom&&(a.y=this.bounds.top))):(d&&a.x+bthis.bounds.right&&(a.x=this.bounds.left-b),e&&a.y+bthis.bounds.bottom&&(a.y=this.bounds.top-b))},Object.defineProperty(c.World.prototype,"width",{get:function(){return this.bounds.width},set:function(a){ag;g++)e>g?f.push("color: #ff2424; background: #fff"):f.push("color: #959595; background: #fff");console.log.apply(console,f)}else window.console&&console.log("Phaser v"+a+" | Pixi.js "+PIXI.VERSION+" | "+b+" | "+d+" | http://phaser.io")}},setUpRenderer:function(){if(this.config.canvas?this.canvas=this.config.canvas:this.canvas=c.Canvas.create(this,this.width,this.height,this.config.canvasID,!0),this.config.canvasStyle?this.canvas.style=this.config.canvasStyle:this.canvas.style["-webkit-full-screen"]="width: 100%; height: 100%",this.renderType===c.HEADLESS||this.renderType===c.CANVAS||this.renderType===c.AUTO&&!this.device.webGL){if(!this.device.canvas)throw new Error("Phaser.Game - Cannot create Canvas or WebGL context, aborting.");this.renderType=c.CANVAS,this.renderer=new PIXI.CanvasRenderer(this),this.context=this.renderer.context}else this.renderType=c.WEBGL,this.renderer=new PIXI.WebGLRenderer(this),this.context=null,this.canvas.addEventListener("webglcontextlost",this.contextLost.bind(this),!1),this.canvas.addEventListener("webglcontextrestored",this.contextRestored.bind(this),!1);this.device.cocoonJS&&(this.canvas.screencanvas=this.renderType===c.CANVAS),this.renderType!==c.HEADLESS&&(this.stage.smoothed=this.antialias,c.Canvas.addToDOM(this.canvas,this.parent,!1),c.Canvas.setTouchAction(this.canvas))},contextLost:function(a){a.preventDefault(),this.renderer.contextLost=!0},contextRestored:function(){this.renderer.initContext(),this.cache.clearGLTextures(),this.renderer.contextLost=!1},update:function(a){if(this.time.update(a),this._kickstart)return this.updateLogic(this.time.desiredFpsMult),this.updateRender(this.time.slowMotion*this.time.desiredFps),void(this._kickstart=!1);if(this._spiraling>1&&!this.forceSingleUpdate)this.time.time>this._nextFpsNotification&&(this._nextFpsNotification=this.time.time+1e4,this.fpsProblemNotifier.dispatch()),this._deltaTime=0,this._spiraling=0,this.updateRender(this.time.slowMotion*this.time.desiredFps);else{var b=1e3*this.time.slowMotion/this.time.desiredFps;this._deltaTime+=Math.max(Math.min(3*b,this.time.elapsed),0);var c=0;for(this.updatesThisFrame=Math.floor(this._deltaTime/b),this.forceSingleUpdate&&(this.updatesThisFrame=Math.min(1,this.updatesThisFrame));this._deltaTime>=b&&(this._deltaTime-=b,this.currentUpdateID=c,this.updateLogic(this.time.desiredFpsMult),c++,!this.forceSingleUpdate||1!==c);)this.time.refresh();c>this._lastCount?this._spiraling++:c=c.Input.MAX_POINTERS)return console.warn("Phaser.Input.addPointer: Maximum limit of "+c.Input.MAX_POINTERS+" pointers reached."),null;var a=this.pointers.length+1,b=new c.Pointer(this.game,a,c.PointerMode.TOUCH);return this.pointers.push(b),this["pointer"+a]=b,b},update:function(){if(this.keyboard&&this.keyboard.update(),this.pollRate>0&&this._pollCounter=0&&this.countActivePointers(this.maxPointers)>=this.maxPointers)return null;if(!this.pointer1.active)return this.pointer1.start(a);if(!this.pointer2.active)return this.pointer2.start(a);for(var b=2;b0;c++){var d=this.pointers[c];d.active&&b--}return a-b},getPointer:function(a){void 0===a&&(a=!1);for(var b=0;b=g&&this._localPoint.x=h&&this._localPoint.y=g&&this._localPoint.x=h&&this._localPoint.y0&&this._pollCounterthis.game.time.time},justReleased:function(a){return a=a||250,this.isUp&&this.timeUp+a>this.game.time.time},reset:function(){this.isDown=!1,this.isUp=!0,this.timeDown=this.game.time.time,this.repeats=0,this.altKey=!1,this.shiftKey=!1,this.ctrlKey=!1},destroy:function(){this.onDown.dispose(),this.onUp.dispose(),this.onFloat.dispose(),this.parent=null,this.game=null}},c.DeviceButton.prototype.constructor=c.DeviceButton,Object.defineProperty(c.DeviceButton.prototype,"duration",{get:function(){return this.isUp?-1:this.game.time.time-this.timeDown}}),c.Pointer=function(a,b,d){this.game=a,this.id=b,this.type=c.POINTER,this.exists=!0,this.identifier=0,this.pointerId=null,this.pointerMode=d||c.PointerMode.CURSOR|c.PointerMode.CONTACT,this.target=null,this.button=null,this.leftButton=new c.DeviceButton(this,c.Pointer.LEFT_BUTTON),this.middleButton=new c.DeviceButton(this,c.Pointer.MIDDLE_BUTTON),this.rightButton=new c.DeviceButton(this,c.Pointer.RIGHT_BUTTON),this.backButton=new c.DeviceButton(this,c.Pointer.BACK_BUTTON),this.forwardButton=new c.DeviceButton(this,c.Pointer.FORWARD_BUTTON),this.eraserButton=new c.DeviceButton(this,c.Pointer.ERASER_BUTTON),this._holdSent=!1,this._history=[],this._nextDrop=0,this._stateReset=!1,this.withinGame=!1,this.clientX=-1,this.clientY=-1,this.pageX=-1,this.pageY=-1,this.screenX=-1,this.screenY=-1,this.rawMovementX=0,this.rawMovementY=0,this.movementX=0,this.movementY=0,this.x=-1,this.y=-1,this.isMouse=0===b,this.isDown=!1,this.isUp=!0,this.timeDown=0,this.timeUp=0,this.previousTapTime=0,this.totalTouches=0,this.msSinceLastClick=Number.MAX_VALUE,this.targetObject=null,this.interactiveCandidates=[],this.active=!1,this.dirty=!1,this.position=new c.Point,this.positionDown=new c.Point,this.positionUp=new c.Point,this.circle=new c.Circle(0,0,44),this._clickTrampolines=null,this._trampolineTargetObject=null},c.Pointer.NO_BUTTON=0,c.Pointer.LEFT_BUTTON=1,c.Pointer.RIGHT_BUTTON=2,c.Pointer.MIDDLE_BUTTON=4,c.Pointer.BACK_BUTTON=8,c.Pointer.FORWARD_BUTTON=16,c.Pointer.ERASER_BUTTON=32,c.Pointer.prototype={resetButtons:function(){this.isDown=!1,this.isUp=!0,this.isMouse&&(this.leftButton.reset(),this.middleButton.reset(),this.rightButton.reset(),this.backButton.reset(),this.forwardButton.reset(),this.eraserButton.reset())},processButtonsDown:function(a,b){c.Pointer.LEFT_BUTTON&a&&this.leftButton.start(b),c.Pointer.RIGHT_BUTTON&a&&this.rightButton.start(b),c.Pointer.MIDDLE_BUTTON&a&&this.middleButton.start(b),c.Pointer.BACK_BUTTON&a&&this.backButton.start(b),c.Pointer.FORWARD_BUTTON&a&&this.forwardButton.start(b),c.Pointer.ERASER_BUTTON&a&&this.eraserButton.start(b)},processButtonsUp:function(a,b){a===c.Mouse.LEFT_BUTTON&&this.leftButton.stop(b),a===c.Mouse.RIGHT_BUTTON&&this.rightButton.stop(b),a===c.Mouse.MIDDLE_BUTTON&&this.middleButton.stop(b),a===c.Mouse.BACK_BUTTON&&this.backButton.stop(b),a===c.Mouse.FORWARD_BUTTON&&this.forwardButton.stop(b),5===a&&this.eraserButton.stop(b)},updateButtons:function(a){this.button=a.button;var b="down"===a.type.toLowerCase().substr(-4);void 0!==a.buttons?b?this.processButtonsDown(a.buttons,a):this.processButtonsUp(a.button,a):b?this.leftButton.start(a):(this.leftButton.stop(a),this.rightButton.stop(a)),1===a.buttons&&a.ctrlKey&&this.leftButton.isDown&&(this.leftButton.stop(a),this.rightButton.start(a)),this.isUp=!0,this.isDown=!1,(this.leftButton.isDown||this.rightButton.isDown||this.middleButton.isDown||this.backButton.isDown||this.forwardButton.isDown||this.eraserButton.isDown)&&(this.isUp=!1,this.isDown=!0)},start:function(a){var b=this.game.input;return a.pointerId&&(this.pointerId=a.pointerId),this.identifier=a.identifier,this.target=a.target,this.isMouse?this.updateButtons(a):(this.isDown=!0,this.isUp=!1),this.active=!0,this.withinGame=!0,this.dirty=!1,this._history=[],this._clickTrampolines=null,this._trampolineTargetObject=null,this.msSinceLastClick=this.game.time.time-this.timeDown,this.timeDown=this.game.time.time,this._holdSent=!1,this.move(a,!0),this.positionDown.setTo(this.x,this.y),(b.multiInputOverride===c.Input.MOUSE_OVERRIDES_TOUCH||b.multiInputOverride===c.Input.MOUSE_TOUCH_COMBINE||b.multiInputOverride===c.Input.TOUCH_OVERRIDES_MOUSE&&0===b.totalActivePointers)&&(b.x=this.x,b.y=this.y,b.position.setTo(this.x,this.y),b.onDown.dispatch(this,a),b.resetSpeed(this.x,this.y)),this._stateReset=!1,this.totalTouches++,null!==this.targetObject&&this.targetObject._touchedHandler(this),this},update:function(){var a=this.game.input;this.active&&(this.dirty&&(a.interactiveItems.total>0&&this.processInteractiveObjects(!1),this.dirty=!1),this._holdSent===!1&&this.duration>=a.holdRate&&((a.multiInputOverride===c.Input.MOUSE_OVERRIDES_TOUCH||a.multiInputOverride===c.Input.MOUSE_TOUCH_COMBINE||a.multiInputOverride===c.Input.TOUCH_OVERRIDES_MOUSE&&0===a.totalActivePointers)&&a.onHold.dispatch(this),this._holdSent=!0),a.recordPointerHistory&&this.game.time.time>=this._nextDrop&&(this._nextDrop=this.game.time.time+a.recordRate,this._history.push({x:this.position.x,y:this.position.y}),this._history.length>a.recordLimit&&this._history.shift()))},move:function(a,b){var d=this.game.input;if(!d.pollLocked){if(void 0===b&&(b=!1),void 0!==a.button&&(this.button=a.button),b&&this.isMouse&&this.updateButtons(a),this.clientX=a.clientX,this.clientY=a.clientY,this.pageX=a.pageX,this.pageY=a.pageY,this.screenX=a.screenX,this.screenY=a.screenY,this.isMouse&&d.mouse.locked&&!b&&(this.rawMovementX=a.movementX||a.mozMovementX||a.webkitMovementX||0,this.rawMovementY=a.movementY||a.mozMovementY||a.webkitMovementY||0,this.movementX+=this.rawMovementX,this.movementY+=this.rawMovementY),this.x=(this.pageX-this.game.scale.offset.x)*d.scale.x,this.y=(this.pageY-this.game.scale.offset.y)*d.scale.y,this.position.setTo(this.x,this.y),this.circle.x=this.x,this.circle.y=this.y,(d.multiInputOverride===c.Input.MOUSE_OVERRIDES_TOUCH||d.multiInputOverride===c.Input.MOUSE_TOUCH_COMBINE||d.multiInputOverride===c.Input.TOUCH_OVERRIDES_MOUSE&&0===d.totalActivePointers)&&(d.activePointer=this,d.x=this.x,d.y=this.y,d.position.setTo(d.x,d.y),d.circle.x=d.x,d.circle.y=d.y),this.withinGame=this.game.scale.bounds.contains(this.pageX,this.pageY),this.game.paused)return this;for(var e=d.moveCallbacks.length;e--;)d.moveCallbacks[e].callback.call(d.moveCallbacks[e].context,this,this.x,this.y,b);return null!==this.targetObject&&this.targetObject.isDragged===!0?this.targetObject.update(this)===!1&&(this.targetObject=null):d.interactiveItems.total>0&&this.processInteractiveObjects(b),this}},processInteractiveObjects:function(a){var b=0,c=-1,d=null,e=this.game.input.interactiveItems.first;for(this.interactiveCandidates=[];e;)e.checked=!1,e.validForInput(c,b,!1)&&(e.checked=!0,(a&&e.checkPointerDown(this,!0)||!a&&e.checkPointerOver(this,!0))&&(b=e.sprite.renderOrderID,c=e.priorityID,d=e,this.interactiveCandidates.push(e))),e=this.game.input.interactiveItems.next;for(e=this.game.input.interactiveItems.first;e;)!e.checked&&e.validForInput(c,b,!0)&&(a&&e.checkPointerDown(this,!1)||!a&&e.checkPointerOver(this,!1))&&(b=e.sprite.renderOrderID,c=e.priorityID,d=e,this.interactiveCandidates.push(e)),e=this.game.input.interactiveItems.next;return this.game.input.customCandidateHandler&&(d=this.game.input.customCandidateHandler.call(this.game.input.customCandidateHandlerContext,this,this.interactiveCandidates,d)),this.swapTarget(d,!1),null!==this.targetObject},swapTarget:function(a,b){void 0===b&&(b=!1),null===a?this.targetObject&&(this.targetObject._pointerOutHandler(this,b),this.targetObject=null):null===this.targetObject?(this.targetObject=a,a._pointerOverHandler(this,b)):this.targetObject===a?a.update(this)===!1&&(this.targetObject=null):(this.targetObject._pointerOutHandler(this,b),this.targetObject=a,this.targetObject._pointerOverHandler(this,b))},leave:function(a){this.withinGame=!1,this.move(a,!1)},stop:function(a){var b=this.game.input;return this._stateReset&&this.withinGame?void a.preventDefault():(this.timeUp=this.game.time.time,(b.multiInputOverride===c.Input.MOUSE_OVERRIDES_TOUCH||b.multiInputOverride===c.Input.MOUSE_TOUCH_COMBINE||b.multiInputOverride===c.Input.TOUCH_OVERRIDES_MOUSE&&0===b.totalActivePointers)&&(b.onUp.dispatch(this,a),this.duration>=0&&this.duration<=b.tapRate&&(this.timeUp-this.previousTapTime0&&(this.active=!1),this.withinGame=this.game.scale.bounds.contains(a.pageX,a.pageY),this.pointerId=null,this.identifier=null,this.positionUp.setTo(this.x,this.y),this.isMouse===!1&&b.currentPointers--,b.interactiveItems.callAll("_releasedHandler",this),this._clickTrampolines&&(this._trampolineTargetObject=this.targetObject),this.targetObject=null,this)},justPressed:function(a){return a=a||this.game.input.justPressedRate,this.isDown===!0&&this.timeDown+a>this.game.time.time},justReleased:function(a){return a=a||this.game.input.justReleasedRate,this.isUp&&this.timeUp+a>this.game.time.time},addClickTrampoline:function(a,b,c,d){if(this.isDown){for(var e=this._clickTrampolines=this._clickTrampolines||[],f=0;fd;d++)this._pointerData[d]={id:d,x:0,y:0,isDown:!1,isUp:!1,isOver:!1,isOut:!1,timeOver:0,timeOut:0,timeDown:0,timeUp:0,downDuration:0,isDragged:!1};this.snapOffset=new c.Point,this.enabled=!0,this._wasEnabled=!0}return this.sprite.events.onAddedToGroup.add(this.addedToGroup,this),this.sprite.events.onRemovedFromGroup.add(this.removedFromGroup,this),this.flagged=!1,this.sprite},addedToGroup:function(){this._dragPhase||this._wasEnabled&&!this.enabled&&this.start()},removedFromGroup:function(){this._dragPhase||(this.enabled?(this._wasEnabled=!0,this.stop()):this._wasEnabled=!1)},reset:function(){this.enabled=!1,this.flagged=!1;for(var a=0;10>a;a++)this._pointerData[a]={id:a,x:0,y:0,isDown:!1,isUp:!1,isOver:!1,isOut:!1,timeOver:0,timeOut:0,timeDown:0,timeUp:0,downDuration:0,isDragged:!1}},stop:function(){this.enabled!==!1&&(this.enabled=!1,this.game.input.interactiveItems.remove(this))},destroy:function(){this.sprite&&(this._setHandCursor&&(this.game.canvas.style.cursor="default",this._setHandCursor=!1),this.enabled=!1,this.game.input.interactiveItems.remove(this),this._pointerData.length=0,this.boundsRect=null,this.boundsSprite=null,this.sprite=null)},validForInput:function(a,b,c){return void 0===c&&(c=!0),!this.enabled||0===this.sprite.scale.x||0===this.sprite.scale.y||this.priorityIDa||this.priorityID===a&&this.sprite.renderOrderID>b:!1},isPixelPerfect:function(){return this.pixelPerfectClick||this.pixelPerfectOver},pointerX:function(a){return a=a||0,this._pointerData[a].x},pointerY:function(a){return a=a||0,this._pointerData[a].y},pointerDown:function(a){return a=a||0,this._pointerData[a].isDown},pointerUp:function(a){return a=a||0,this._pointerData[a].isUp},pointerTimeDown:function(a){return a=a||0,this._pointerData[a].timeDown},pointerTimeUp:function(a){return a=a||0,this._pointerData[a].timeUp},pointerOver:function(a){if(!this.enabled)return!1;if(void 0===a){for(var b=0;10>b;b++)if(this._pointerData[b].isOver)return!0;return!1}return this._pointerData[a].isOver},pointerOut:function(a){if(!this.enabled)return!1;if(void 0!==a)return this._pointerData[a].isOut;for(var b=0;10>b;b++)if(this._pointerData[b].isOut)return!0},pointerTimeOver:function(a){return a=a||0,this._pointerData[a].timeOver},pointerTimeOut:function(a){return a=a||0,this._pointerData[a].timeOut},pointerDragged:function(a){return a=a||0,this._pointerData[a].isDragged},checkPointerDown:function(a,b){return a.isDown&&this.enabled&&this.sprite&&this.sprite.parent&&this.sprite.visible&&this.sprite.parent.visible&&0!==this.sprite.worldScale.x&&0!==this.sprite.worldScale.y&&this.game.input.hitTest(this.sprite,a,this._tempPoint)?(void 0===b&&(b=!1),!b&&this.pixelPerfectClick?this.checkPixel(this._tempPoint.x,this._tempPoint.y):!0):!1},checkPointerOver:function(a,b){return this.enabled&&this.sprite&&this.sprite.parent&&this.sprite.visible&&this.sprite.parent.visible&&0!==this.sprite.worldScale.x&&0!==this.sprite.worldScale.y&&this.game.input.hitTest(this.sprite,a,this._tempPoint)?(void 0===b&&(b=!1),!b&&this.pixelPerfectOver?this.checkPixel(this._tempPoint.x,this._tempPoint.y):!0):!1},checkPixel:function(a,b,c){if(this.sprite.texture.baseTexture.source){if(null===a&&null===b){this.game.input.getLocalPosition(this.sprite,c,this._tempPoint);var a=this._tempPoint.x,b=this._tempPoint.y}if(0!==this.sprite.anchor.x&&(a-=-this.sprite.texture.frame.width*this.sprite.anchor.x),0!==this.sprite.anchor.y&&(b-=-this.sprite.texture.frame.height*this.sprite.anchor.y),a+=this.sprite.texture.frame.x,b+=this.sprite.texture.frame.y,this.sprite.texture.trim&&(a-=this.sprite.texture.trim.x,b-=this.sprite.texture.trim.y,athis.sprite.texture.crop.right||bthis.sprite.texture.crop.bottom))return this._dx=a,this._dy=b,!1;this._dx=a,this._dy=b,this.game.input.hitContext.clearRect(0,0,1,1),this.game.input.hitContext.drawImage(this.sprite.texture.baseTexture.source,a,b,1,1,0,0,1,1);var d=this.game.input.hitContext.getImageData(0,0,1,1);if(d.data[3]>=this.pixelPerfectAlpha)return!0}return!1},update:function(a){return null!==this.sprite&&void 0!==this.sprite.parent?this.enabled&&this.sprite.visible&&this.sprite.parent.visible?this._pendingDrag?(this._dragDistancePass||(this._dragDistancePass=c.Math.distance(a.x,a.y,this.downPoint.x,this.downPoint.y)>=this.dragDistanceThreshold),this._dragDistancePass&&this._dragTimePass&&this.startDrag(a),!0):this.draggable&&this._draggedPointerID===a.id?this.updateDrag(a,!1):this._pointerData[a.id].isOver?this.checkPointerOver(a)?(this._pointerData[a.id].x=a.x-this.sprite.x,this._pointerData[a.id].y=a.y-this.sprite.y,!0):(this._pointerOutHandler(a),!1):void 0:(this._pointerOutHandler(a), +!1):void 0},_pointerOverHandler:function(a,b){if(null!==this.sprite){var d=this._pointerData[a.id];if(d.isOver===!1||a.dirty){var e=d.isOver===!1;d.isOver=!0,d.isOut=!1,d.timeOver=this.game.time.time,d.x=a.x-this.sprite.x,d.y=a.y-this.sprite.y,this.useHandCursor&&d.isDragged===!1&&(this.game.canvas.style.cursor="pointer",this._setHandCursor=!0),!b&&e&&this.sprite&&this.sprite.events&&this.sprite.events.onInputOver$dispatch(this.sprite,a),this.sprite.parent&&this.sprite.parent.type===c.GROUP&&this.sprite.parent.onChildInputOver.dispatch(this.sprite,a)}}},_pointerOutHandler:function(a,b){if(null!==this.sprite){var d=this._pointerData[a.id];d.isOver=!1,d.isOut=!0,d.timeOut=this.game.time.time,this.useHandCursor&&d.isDragged===!1&&(this.game.canvas.style.cursor="default",this._setHandCursor=!1),!b&&this.sprite&&this.sprite.events&&(this.sprite.events.onInputOut$dispatch(this.sprite,a),this.sprite&&this.sprite.parent&&this.sprite.parent.type===c.GROUP&&this.sprite.parent.onChildInputOut.dispatch(this.sprite,a))}},_touchedHandler:function(a){if(null!==this.sprite){var b=this._pointerData[a.id];if(!b.isDown&&b.isOver){if(this.pixelPerfectClick&&!this.checkPixel(null,null,a))return;if(b.isDown=!0,b.isUp=!1,b.timeDown=this.game.time.time,this.downPoint.set(a.x,a.y),a.dirty=!0,this.sprite&&this.sprite.events&&(this.sprite.events.onInputDown$dispatch(this.sprite,a),this.sprite&&this.sprite.parent&&this.sprite.parent.type===c.GROUP&&this.sprite.parent.onChildInputDown.dispatch(this.sprite,a),null===this.sprite))return;this.draggable&&this.isDragged===!1&&(0===this.dragTimeThreshold&&0===this.dragDistanceThreshold?this.startDrag(a):(this._pendingDrag=!0,this._dragDistancePass=0===this.dragDistanceThreshold,this.dragTimeThreshold>0?(this._dragTimePass=!1,this.game.time.events.add(this.dragTimeThreshold,this.dragTimeElapsed,this,a)):this._dragTimePass=!0)),this.bringToTop&&this.sprite.bringToTop()}}},dragTimeElapsed:function(a){this._dragTimePass=!0,this._pendingDrag&&this.sprite&&this._dragDistancePass&&this.startDrag(a)},_releasedHandler:function(a){if(null!==this.sprite){var b=this._pointerData[a.id];if(b.isDown&&a.isUp){b.isDown=!1,b.isUp=!0,b.timeUp=this.game.time.time,b.downDuration=b.timeUp-b.timeDown;var d=this.checkPointerOver(a);this.sprite&&this.sprite.events&&(this.dragStopBlocksInputUp&&(!this.dragStopBlocksInputUp||this.draggable&&this.isDragged&&this._draggedPointerID===a.id)||this.sprite.events.onInputUp$dispatch(this.sprite,a,d),this.sprite&&this.sprite.parent&&this.sprite.parent.type===c.GROUP&&this.sprite.parent.onChildInputUp.dispatch(this.sprite,a,d),d&&(d=this.checkPointerOver(a))),b.isOver=d,!d&&this.useHandCursor&&(this.game.canvas.style.cursor="default",this._setHandCursor=!1),a.dirty=!0,this._pendingDrag=!1,this.draggable&&this.isDragged&&this._draggedPointerID===a.id&&this.stopDrag(a)}}},updateDrag:function(a,b){if(void 0===b&&(b=!1),a.isUp)return this.stopDrag(a),!1;var c=this.globalToLocalX(a.x)+this._dragPoint.x+this.dragOffset.x,d=this.globalToLocalY(a.y)+this._dragPoint.y+this.dragOffset.y;if(this.sprite.fixedToCamera)this.allowHorizontalDrag&&(this.sprite.cameraOffset.x=c),this.allowVerticalDrag&&(this.sprite.cameraOffset.y=d),this.boundsRect&&this.checkBoundsRect(),this.boundsSprite&&this.checkBoundsSprite(),this.snapOnDrag&&(this.sprite.cameraOffset.x=Math.round((this.sprite.cameraOffset.x-this.snapOffsetX%this.snapX)/this.snapX)*this.snapX+this.snapOffsetX%this.snapX,this.sprite.cameraOffset.y=Math.round((this.sprite.cameraOffset.y-this.snapOffsetY%this.snapY)/this.snapY)*this.snapY+this.snapOffsetY%this.snapY,this.snapPoint.set(this.sprite.cameraOffset.x,this.sprite.cameraOffset.y));else{var e=this.game.camera.x-this._pointerData[a.id].camX,f=this.game.camera.y-this._pointerData[a.id].camY;this.allowHorizontalDrag&&(this.sprite.x=c+e),this.allowVerticalDrag&&(this.sprite.y=d+f),this.boundsRect&&this.checkBoundsRect(),this.boundsSprite&&this.checkBoundsSprite(),this.snapOnDrag&&(this.sprite.x=Math.round((this.sprite.x-this.snapOffsetX%this.snapX)/this.snapX)*this.snapX+this.snapOffsetX%this.snapX,this.sprite.y=Math.round((this.sprite.y-this.snapOffsetY%this.snapY)/this.snapY)*this.snapY+this.snapOffsetY%this.snapY,this.snapPoint.set(this.sprite.x,this.sprite.y))}return this.sprite.events.onDragUpdate.dispatch(this.sprite,a,c,d,this.snapPoint,b),!0},justOver:function(a,b){return a=a||0,b=b||500,this._pointerData[a].isOver&&this.overDuration(a)a;a++)this._pointerData[a].isDragged=!1;this.draggable=!1,this.isDragged=!1,this._draggedPointerID=-1,this._pendingDrag=!1},startDrag:function(a){var b=this.sprite.x,c=this.sprite.y;if(this.isDragged=!0,this._draggedPointerID=a.id,this._pointerData[a.id].camX=this.game.camera.x,this._pointerData[a.id].camY=this.game.camera.y,this._pointerData[a.id].isDragged=!0,this.sprite.fixedToCamera){if(this.dragFromCenter){var d=this.sprite.getBounds();this.sprite.cameraOffset.x=this.globalToLocalX(a.x)+(this.sprite.cameraOffset.x-d.centerX),this.sprite.cameraOffset.y=this.globalToLocalY(a.y)+(this.sprite.cameraOffset.y-d.centerY)}this._dragPoint.setTo(this.sprite.cameraOffset.x-a.x,this.sprite.cameraOffset.y-a.y)}else{if(this.dragFromCenter){var d=this.sprite.getBounds();this.sprite.x=this.globalToLocalX(a.x)+(this.sprite.x-d.centerX),this.sprite.y=this.globalToLocalY(a.y)+(this.sprite.y-d.centerY)}this._dragPoint.setTo(this.sprite.x-this.globalToLocalX(a.x),this.sprite.y-this.globalToLocalY(a.y))}this.updateDrag(a,!0),this.bringToTop&&(this._dragPhase=!0,this.sprite.bringToTop()),this.dragStartPoint.set(b,c),this.sprite.events.onDragStart$dispatch(this.sprite,a,b,c),this._pendingDrag=!1},globalToLocalX:function(a){return this.scaleLayer&&(a-=this.game.scale.grid.boundsFluid.x,a*=this.game.scale.grid.scaleFluidInversed.x),a},globalToLocalY:function(a){return this.scaleLayer&&(a-=this.game.scale.grid.boundsFluid.y,a*=this.game.scale.grid.scaleFluidInversed.y),a},stopDrag:function(a){this.isDragged=!1,this._draggedPointerID=-1,this._pointerData[a.id].isDragged=!1,this._dragPhase=!1,this._pendingDrag=!1,this.snapOnRelease&&(this.sprite.fixedToCamera?(this.sprite.cameraOffset.x=Math.round((this.sprite.cameraOffset.x-this.snapOffsetX%this.snapX)/this.snapX)*this.snapX+this.snapOffsetX%this.snapX,this.sprite.cameraOffset.y=Math.round((this.sprite.cameraOffset.y-this.snapOffsetY%this.snapY)/this.snapY)*this.snapY+this.snapOffsetY%this.snapY):(this.sprite.x=Math.round((this.sprite.x-this.snapOffsetX%this.snapX)/this.snapX)*this.snapX+this.snapOffsetX%this.snapX,this.sprite.y=Math.round((this.sprite.y-this.snapOffsetY%this.snapY)/this.snapY)*this.snapY+this.snapOffsetY%this.snapY)),this.sprite.events.onDragStop$dispatch(this.sprite,a),this.checkPointerOver(a)===!1&&this._pointerOutHandler(a)},setDragLock:function(a,b){void 0===a&&(a=!0),void 0===b&&(b=!0),this.allowHorizontalDrag=a,this.allowVerticalDrag=b},enableSnap:function(a,b,c,d,e,f){void 0===c&&(c=!0),void 0===d&&(d=!1),void 0===e&&(e=0),void 0===f&&(f=0),this.snapX=a,this.snapY=b,this.snapOffsetX=e,this.snapOffsetY=f,this.snapOnDrag=c,this.snapOnRelease=d},disableSnap:function(){this.snapOnDrag=!1,this.snapOnRelease=!1},checkBoundsRect:function(){this.sprite.fixedToCamera?(this.sprite.cameraOffset.xthis.boundsRect.right&&(this.sprite.cameraOffset.x=this.boundsRect.right-this.sprite.width),this.sprite.cameraOffset.ythis.boundsRect.bottom&&(this.sprite.cameraOffset.y=this.boundsRect.bottom-this.sprite.height)):(this.sprite.leftthis.boundsRect.right&&(this.sprite.x=this.boundsRect.right-(this.sprite.width-this.sprite.offsetX)),this.sprite.topthis.boundsRect.bottom&&(this.sprite.y=this.boundsRect.bottom-(this.sprite.height-this.sprite.offsetY)))},checkBoundsSprite:function(){this.sprite.fixedToCamera&&this.boundsSprite.fixedToCamera?(this.sprite.cameraOffset.xthis.boundsSprite.cameraOffset.x+this.boundsSprite.width&&(this.sprite.cameraOffset.x=this.boundsSprite.cameraOffset.x+this.boundsSprite.width-this.sprite.width),this.sprite.cameraOffset.ythis.boundsSprite.cameraOffset.y+this.boundsSprite.height&&(this.sprite.cameraOffset.y=this.boundsSprite.cameraOffset.y+this.boundsSprite.height-this.sprite.height)):(this.sprite.leftthis.boundsSprite.right&&(this.sprite.x=this.boundsSprite.right-(this.sprite.width-this.sprite.offsetX)),this.sprite.topthis.boundsSprite.bottom&&(this.sprite.y=this.boundsSprite.bottom-(this.sprite.height-this.sprite.offsetY)))}},c.InputHandler.prototype.constructor=c.InputHandler,c.Gamepad=function(a){this.game=a,this._gamepadIndexMap={},this._rawPads=[],this._active=!1,this.enabled=!0,this._gamepadSupportAvailable=!!navigator.webkitGetGamepads||!!navigator.webkitGamepads||-1!=navigator.userAgent.indexOf("Firefox/")||!!navigator.getGamepads,this._prevRawGamepadTypes=[],this._prevTimestamps=[],this.callbackContext=this,this.onConnectCallback=null,this.onDisconnectCallback=null,this.onDownCallback=null,this.onUpCallback=null,this.onAxisCallback=null,this.onFloatCallback=null,this._ongamepadconnected=null,this._gamepaddisconnected=null,this._gamepads=[new c.SinglePad(a,this),new c.SinglePad(a,this),new c.SinglePad(a,this),new c.SinglePad(a,this)]},c.Gamepad.prototype={addCallbacks:function(a,b){"undefined"!=typeof b&&(this.onConnectCallback="function"==typeof b.onConnect?b.onConnect:this.onConnectCallback,this.onDisconnectCallback="function"==typeof b.onDisconnect?b.onDisconnect:this.onDisconnectCallback,this.onDownCallback="function"==typeof b.onDown?b.onDown:this.onDownCallback,this.onUpCallback="function"==typeof b.onUp?b.onUp:this.onUpCallback,this.onAxisCallback="function"==typeof b.onAxis?b.onAxis:this.onAxisCallback,this.onFloatCallback="function"==typeof b.onFloat?b.onFloat:this.onFloatCallback,this.callbackContext=a)},start:function(){if(!this._active){this._active=!0;var a=this;this._onGamepadConnected=function(b){return a.onGamepadConnected(b)},this._onGamepadDisconnected=function(b){return a.onGamepadDisconnected(b)},window.addEventListener("gamepadconnected",this._onGamepadConnected,!1),window.addEventListener("gamepaddisconnected",this._onGamepadDisconnected,!1)}},onGamepadConnected:function(a){var b=a.gamepad;this._rawPads.push(b),this._gamepads[b.index].connect(b)},onGamepadDisconnected:function(a){var b=a.gamepad;for(var c in this._rawPads)this._rawPads[c].index===b.index&&this._rawPads.splice(c,1);this._gamepads[b.index].disconnect()},update:function(){this._pollGamepads(),this.pad1.pollStatus(),this.pad2.pollStatus(),this.pad3.pollStatus(),this.pad4.pollStatus()},_pollGamepads:function(){if(this._active){if(navigator.getGamepads)var a=navigator.getGamepads();else if(navigator.webkitGetGamepads)var a=navigator.webkitGetGamepads();else if(navigator.webkitGamepads)var a=navigator.webkitGamepads();if(a){this._rawPads=[];for(var b=!1,c=0;c0&&d>this.deadZone||0>d&&d<-this.deadZone?this.processAxisChange(c,d):this.processAxisChange(c,0)}this._prevTimestamp=this._rawPad.timestamp}},connect:function(a){var b=!this.connected;this.connected=!0,this.index=a.index,this._rawPad=a,this._buttons=[],this._buttonsLen=a.buttons.length,this._axes=[],this._axesLen=a.axes.length;for(var d=0;dthis.maxHealth&&(this.health=this.maxHealth),this},heal:function(a){return this.alive&&(this.health+=a,this.health>this.maxHealth&&(this.health=this.maxHealth)),this}},c.Component.InCamera=function(){},c.Component.InCamera.prototype={inCamera:{get:function(){return this.game.world.camera.view.intersects(this._bounds)}}},c.Component.InputEnabled=function(){},c.Component.InputEnabled.prototype={input:null,inputEnabled:{get:function(){return this.input&&this.input.enabled},set:function(a){a?null===this.input?(this.input=new c.InputHandler(this),this.input.start()):this.input&&!this.input.enabled&&this.input.start():this.input&&this.input.enabled&&this.input.stop()}}},c.Component.InWorld=function(){},c.Component.InWorld.preUpdate=function(){if(this.autoCull||this.checkWorldBounds){if(this._bounds.copyFrom(this.getBounds()),this._bounds.x+=this.game.camera.view.x,this._bounds.y+=this.game.camera.view.y,this.autoCull)if(this.game.world.camera.view.intersects(this._bounds))this.renderable=!0,this.game.world.camera.totalInView++;else if(this.renderable=!1,this.outOfCameraBoundsKill)return this.kill(),!1;if(this.checkWorldBounds)if(this._outOfBoundsFired&&this.game.world.bounds.intersects(this._bounds))this._outOfBoundsFired=!1,this.events.onEnterBounds$dispatch(this);else if(!this._outOfBoundsFired&&!this.game.world.bounds.intersects(this._bounds)&&(this._outOfBoundsFired=!0,this.events.onOutOfBounds$dispatch(this),this.outOfBoundsKill))return this.kill(),!1}return!0},c.Component.InWorld.prototype={checkWorldBounds:!1,outOfBoundsKill:!1,outOfCameraBoundsKill:!1,_outOfBoundsFired:!1,inWorld:{get:function(){return this.game.world.bounds.intersects(this.getBounds())}}},c.Component.LifeSpan=function(){},c.Component.LifeSpan.preUpdate=function(){return this.lifespan>0&&(this.lifespan-=this.game.time.physicsElapsedMS,this.lifespan<=0)?(this.kill(),!1):!0},c.Component.LifeSpan.prototype={alive:!0,lifespan:0,revive:function(a){return void 0===a&&(a=100),this.alive=!0,this.exists=!0,this.visible=!0,"function"==typeof this.setHealth&&this.setHealth(a),this.events&&this.events.onRevived$dispatch(this),this},kill:function(){return this.alive=!1,this.exists=!1,this.visible=!1,this.events&&this.events.onKilled$dispatch(this),this}},c.Component.LoadTexture=function(){},c.Component.LoadTexture.prototype={customRender:!1,_frame:null,loadTexture:function(a,b,d){a===c.PENDING_ATLAS?(a=b,b=0):b=b||0,(d||void 0===d)&&this.animations&&this.animations.stop(),this.key=a,this.customRender=!1;var e=this.game.cache,f=!0,g=!this.texture.baseTexture.scaleMode;if(c.RenderTexture&&a instanceof c.RenderTexture)this.key=a.key,this.setTexture(a);else if(c.BitmapData&&a instanceof c.BitmapData)this.customRender=!0,this.setTexture(a.texture),f=e.hasFrameData(a.key,c.Cache.BITMAPDATA)?!this.animations.loadFrameData(e.getFrameData(a.key,c.Cache.BITMAPDATA),b):!this.animations.loadFrameData(a.frameData,0);else if(c.Video&&a instanceof c.Video){this.customRender=!0;var h=a.texture.valid;this.setTexture(a.texture),this.setFrame(a.texture.frame.clone()),a.onChangeSource.add(this.resizeFrame,this),this.texture.valid=h}else if(c.Tilemap&&a instanceof c.TilemapLayer)this.setTexture(PIXI.Texture.fromCanvas(a.canvas));else if(a instanceof PIXI.Texture)this.setTexture(a);else{var i=e.getImage(a,!0);this.key=i.key,this.setTexture(new PIXI.Texture(i.base)),"__default"===a?this.texture.baseTexture.skipRender=!0:this.texture.baseTexture.skipRender=!1,f=!this.animations.loadFrameData(i.frameData,b)}f&&(this._frame=c.Rectangle.clone(this.texture.frame)),g||(this.texture.baseTexture.scaleMode=1)},setFrame:function(a){this._frame=a,this.texture.frame.x=a.x,this.texture.frame.y=a.y,this.texture.frame.width=a.width,this.texture.frame.height=a.height,this.texture.crop.x=a.x,this.texture.crop.y=a.y,this.texture.crop.width=a.width,this.texture.crop.height=a.height,a.trimmed?(this.texture.trim?(this.texture.trim.x=a.spriteSourceSizeX,this.texture.trim.y=a.spriteSourceSizeY,this.texture.trim.width=a.sourceSizeW,this.texture.trim.height=a.sourceSizeH):this.texture.trim={x:a.spriteSourceSizeX,y:a.spriteSourceSizeY,width:a.sourceSizeW,height:a.sourceSizeH},this.texture.width=a.sourceSizeW,this.texture.height=a.sourceSizeH,this.texture.frame.width=a.sourceSizeW,this.texture.frame.height=a.sourceSizeH):!a.trimmed&&this.texture.trim&&(this.texture.trim=null),this.cropRect&&this.updateCrop(),this.texture.requiresReTint=!0,this.texture._updateUvs(),this.tilingTexture&&(this.refreshTexture=!0)},resizeFrame:function(a,b,c){this.texture.frame.resize(b,c),this.texture.setFrame(this.texture.frame)},resetFrame:function(){this._frame&&this.setFrame(this._frame)},frame:{get:function(){return this.animations.frame},set:function(a){this.animations.frame=a}},frameName:{get:function(){return this.animations.frameName},set:function(a){this.animations.frameName=a}}},c.Component.Overlap=function(){},c.Component.Overlap.prototype={overlap:function(a){return c.Rectangle.intersects(this.getBounds(),a.getBounds())}},c.Component.PhysicsBody=function(){},c.Component.PhysicsBody.preUpdate=function(){return this.fresh&&this.exists?(this.world.setTo(this.parent.position.x+this.position.x,this.parent.position.y+this.position.y),this.worldTransform.tx=this.world.x,this.worldTransform.ty=this.world.y,this.previousPosition.set(this.world.x,this.world.y),this.previousRotation=this.rotation,this.body&&this.body.preUpdate(),this.fresh=!1,!1):(this.previousPosition.set(this.world.x,this.world.y),this.previousRotation=this.rotation,this._exists&&this.parent.exists?!0:(this.renderOrderID=-1,!1))},c.Component.PhysicsBody.postUpdate=function(){this.exists&&this.body&&this.body.postUpdate()},c.Component.PhysicsBody.prototype={body:null,x:{get:function(){return this.position.x},set:function(a){this.position.x=a,this.body&&!this.body.dirty&&(this.body._reset=!0)}},y:{get:function(){return this.position.y},set:function(a){this.position.y=a,this.body&&!this.body.dirty&&(this.body._reset=!0)}}},c.Component.Reset=function(){},c.Component.Reset.prototype.reset=function(a,b,c){return void 0===c&&(c=1),this.world.set(a,b),this.position.set(a,b),this.fresh=!0,this.exists=!0,this.visible=!0,this.renderable=!0,this.components.InWorld&&(this._outOfBoundsFired=!1),this.components.LifeSpan&&(this.alive=!0,this.health=c),this.components.PhysicsBody&&this.body&&this.body.reset(a,b,!1,!1),this},c.Component.ScaleMinMax=function(){},c.Component.ScaleMinMax.prototype={transformCallback:null,transformCallbackContext:this,scaleMin:null,scaleMax:null,checkTransform:function(a){this.scaleMin&&(a.athis.scaleMax.x&&(a.a=this.scaleMax.x),a.d>this.scaleMax.y&&(a.d=this.scaleMax.y))},setScaleMinMax:function(a,b,d,e){void 0===b?b=d=e=a:void 0===d&&(d=e=b,b=a),null===a?this.scaleMin=null:this.scaleMin?this.scaleMin.set(a,b):this.scaleMin=new c.Point(a,b),null===d?this.scaleMax=null:this.scaleMax?this.scaleMax.set(d,e):this.scaleMax=new c.Point(d,e),null===this.scaleMin?this.transformCallback=null:(this.transformCallback=this.checkTransform,this.transformCallbackContext=this)}},c.Component.Smoothed=function(){},c.Component.Smoothed.prototype={smoothed:{get:function(){return!this.texture.baseTexture.scaleMode},set:function(a){a?this.texture&&(this.texture.baseTexture.scaleMode=0):this.texture&&(this.texture.baseTexture.scaleMode=1)}}},c.GameObjectFactory=function(a){this.game=a,this.world=this.game.world},c.GameObjectFactory.prototype={existing:function(a){return this.world.add(a)},weapon:function(a,b,d,e){var f=this.game.plugins.add(c.Weapon);return f.createBullets(a,b,d,e),f},image:function(a,b,d,e,f){return void 0===f&&(f=this.world),f.add(new c.Image(this.game,a,b,d,e))},sprite:function(a,b,c,d,e){return void 0===e&&(e=this.world),e.create(a,b,c,d)},creature:function(a,b,d,e,f){void 0===f&&(f=this.world);var g=new c.Creature(this.game,a,b,d,e);return f.add(g),g},tween:function(a){return this.game.tweens.create(a)},group:function(a,b,d,e,f){return new c.Group(this.game,a,b,d,e,f)},physicsGroup:function(a,b,d,e){return new c.Group(this.game,b,d,e,!0,a)},spriteBatch:function(a,b,d){return void 0===a&&(a=null),void 0===b&&(b="group"),void 0===d&&(d=!1),new c.SpriteBatch(this.game,a,b,d)},audio:function(a,b,c,d){return this.game.sound.add(a,b,c,d)},sound:function(a,b,c,d){return this.game.sound.add(a,b,c,d)},audioSprite:function(a){return this.game.sound.addSprite(a)},tileSprite:function(a,b,d,e,f,g,h){return void 0===h&&(h=this.world),h.add(new c.TileSprite(this.game,a,b,d,e,f,g))},rope:function(a,b,d,e,f,g){return void 0===g&&(g=this.world),g.add(new c.Rope(this.game,a,b,d,e,f))},text:function(a,b,d,e,f){return void 0===f&&(f=this.world),f.add(new c.Text(this.game,a,b,d,e))},button:function(a,b,d,e,f,g,h,i,j,k){return void 0===k&&(k=this.world),k.add(new c.Button(this.game,a,b,d,e,f,g,h,i,j))},graphics:function(a,b,d){return void 0===d&&(d=this.world),d.add(new c.Graphics(this.game,a,b))},emitter:function(a,b,d){return this.game.particles.add(new c.Particles.Arcade.Emitter(this.game,a,b,d))},retroFont:function(a,b,d,e,f,g,h,i,j){return new c.RetroFont(this.game,a,b,d,e,f,g,h,i,j)},bitmapText:function(a,b,d,e,f,g){return void 0===g&&(g=this.world),g.add(new c.BitmapText(this.game,a,b,d,e,f))},tilemap:function(a,b,d,e,f){return new c.Tilemap(this.game,a,b,d,e,f)},renderTexture:function(a,b,d,e){void 0!==d&&""!==d||(d=this.game.rnd.uuid()),void 0===e&&(e=!1);var f=new c.RenderTexture(this.game,a,b,d);return e&&this.game.cache.addRenderTexture(d,f),f},video:function(a,b){return new c.Video(this.game,a,b)},bitmapData:function(a,b,d,e){void 0===e&&(e=!1),void 0!==d&&""!==d||(d=this.game.rnd.uuid());var f=new c.BitmapData(this.game,d,a,b);return e&&this.game.cache.addBitmapData(d,f),f},filter:function(a){var b=Array.prototype.slice.call(arguments,1),a=new c.Filter[a](this.game);return a.init.apply(a,b),a},plugin:function(a){return this.game.plugins.add(a)}},c.GameObjectFactory.prototype.constructor=c.GameObjectFactory,c.GameObjectCreator=function(a){this.game=a,this.world=this.game.world},c.GameObjectCreator.prototype={image:function(a,b,d,e){return new c.Image(this.game,a,b,d,e)},sprite:function(a,b,d,e){return new c.Sprite(this.game,a,b,d,e)},tween:function(a){return new c.Tween(a,this.game,this.game.tweens)},group:function(a,b,d,e,f){return new c.Group(this.game,a,b,d,e,f)},spriteBatch:function(a,b,d){return void 0===b&&(b="group"),void 0===d&&(d=!1),new c.SpriteBatch(this.game,a,b,d)},audio:function(a,b,c,d){return this.game.sound.add(a,b,c,d)},audioSprite:function(a){return this.game.sound.addSprite(a)},sound:function(a,b,c,d){return this.game.sound.add(a,b,c,d)},tileSprite:function(a,b,d,e,f,g){return new c.TileSprite(this.game,a,b,d,e,f,g)},rope:function(a,b,d,e,f){return new c.Rope(this.game,a,b,d,e,f)},text:function(a,b,d,e){return new c.Text(this.game,a,b,d,e)},button:function(a,b,d,e,f,g,h,i,j){return new c.Button(this.game,a,b,d,e,f,g,h,i,j)},graphics:function(a,b){return new c.Graphics(this.game,a,b)},emitter:function(a,b,d){return new c.Particles.Arcade.Emitter(this.game,a,b,d)},retroFont:function(a,b,d,e,f,g,h,i,j){return new c.RetroFont(this.game,a,b,d,e,f,g,h,i,j)},bitmapText:function(a,b,d,e,f,g){return new c.BitmapText(this.game,a,b,d,e,f,g)},tilemap:function(a,b,d,e,f){return new c.Tilemap(this.game,a,b,d,e,f)},renderTexture:function(a,b,d,e){void 0!==d&&""!==d||(d=this.game.rnd.uuid()),void 0===e&&(e=!1);var f=new c.RenderTexture(this.game,a,b,d);return e&&this.game.cache.addRenderTexture(d,f),f},bitmapData:function(a,b,d,e){void 0===e&&(e=!1),void 0!==d&&""!==d||(d=this.game.rnd.uuid());var f=new c.BitmapData(this.game,d,a,b);return e&&this.game.cache.addBitmapData(d,f),f},filter:function(a){var b=Array.prototype.slice.call(arguments,1),a=new c.Filter[a](this.game);return a.init.apply(a,b),a}},c.GameObjectCreator.prototype.constructor=c.GameObjectCreator,c.Sprite=function(a,b,d,e,f){b=b||0,d=d||0,e=e||null,f=f||null,this.type=c.SPRITE,this.physicsType=c.SPRITE,PIXI.Sprite.call(this,c.Cache.DEFAULT),c.Component.Core.init.call(this,a,b,d,e,f)},c.Sprite.prototype=Object.create(PIXI.Sprite.prototype),c.Sprite.prototype.constructor=c.Sprite,c.Component.Core.install.call(c.Sprite.prototype,["Angle","Animation","AutoCull","Bounds","BringToTop","Crop","Delta","Destroy","FixedToCamera","Health","InCamera","InputEnabled","InWorld","LifeSpan","LoadTexture","Overlap","PhysicsBody","Reset","ScaleMinMax","Smoothed"]),c.Sprite.prototype.preUpdatePhysics=c.Component.PhysicsBody.preUpdate,c.Sprite.prototype.preUpdateLifeSpan=c.Component.LifeSpan.preUpdate,c.Sprite.prototype.preUpdateInWorld=c.Component.InWorld.preUpdate,c.Sprite.prototype.preUpdateCore=c.Component.Core.preUpdate,c.Sprite.prototype.preUpdate=function(){return this.preUpdatePhysics()&&this.preUpdateLifeSpan()&&this.preUpdateInWorld()?this.preUpdateCore():!1},c.Image=function(a,b,d,e,f){b=b||0,d=d||0,e=e||null,f=f||null,this.type=c.IMAGE,PIXI.Sprite.call(this,c.Cache.DEFAULT),c.Component.Core.init.call(this,a,b,d,e,f)},c.Image.prototype=Object.create(PIXI.Sprite.prototype),c.Image.prototype.constructor=c.Image,c.Component.Core.install.call(c.Image.prototype,["Angle","Animation","AutoCull","Bounds","BringToTop","Crop","Destroy","FixedToCamera","InputEnabled","LifeSpan","LoadTexture","Overlap","Reset","Smoothed"]),c.Image.prototype.preUpdateInWorld=c.Component.InWorld.preUpdate,c.Image.prototype.preUpdateCore=c.Component.Core.preUpdate,c.Image.prototype.preUpdate=function(){return this.preUpdateInWorld()?this.preUpdateCore():!1},c.Button=function(a,b,d,e,f,g,h,i,j,k){b=b||0,d=d||0,e=e||null,f=f||null,g=g||this,c.Image.call(this,a,b,d,e,i),this.type=c.BUTTON,this.physicsType=c.SPRITE,this._onOverFrame=null,this._onOutFrame=null,this._onDownFrame=null,this._onUpFrame=null,this.onOverSound=null,this.onOutSound=null,this.onDownSound=null,this.onUpSound=null,this.onOverSoundMarker="",this.onOutSoundMarker="",this.onDownSoundMarker="",this.onUpSoundMarker="",this.onInputOver=new c.Signal,this.onInputOut=new c.Signal,this.onInputDown=new c.Signal,this.onInputUp=new c.Signal,this.onOverMouseOnly=!0,this.justReleasedPreventsOver=c.PointerMode.TOUCH,this.freezeFrames=!1,this.forceOut=!1,this.inputEnabled=!0,this.input.start(0,!0),this.input.useHandCursor=!0,this.setFrames(h,i,j,k),null!==f&&this.onInputUp.add(f,g),this.events.onInputOver.add(this.onInputOverHandler,this),this.events.onInputOut.add(this.onInputOutHandler,this),this.events.onInputDown.add(this.onInputDownHandler,this),this.events.onInputUp.add(this.onInputUpHandler,this),this.events.onRemovedFromWorld.add(this.removedFromWorld,this)},c.Button.prototype=Object.create(c.Image.prototype),c.Button.prototype.constructor=c.Button;var g="Over",h="Out",i="Down",j="Up";c.Button.prototype.clearFrames=function(){this.setFrames(null,null,null,null)},c.Button.prototype.removedFromWorld=function(){this.inputEnabled=!1},c.Button.prototype.setStateFrame=function(a,b,c){var d="_on"+a+"Frame";null!==b?(this[d]=b,c&&this.changeStateFrame(a)):this[d]=null},c.Button.prototype.changeStateFrame=function(a){if(this.freezeFrames)return!1;var b="_on"+a+"Frame",c=this[b];return"string"==typeof c?(this.frameName=c,!0):"number"==typeof c?(this.frame=c,!0):!1},c.Button.prototype.setFrames=function(a,b,c,d){this.setStateFrame(g,a,this.input.pointerOver()),this.setStateFrame(h,b,!this.input.pointerOver()),this.setStateFrame(i,c,this.input.pointerDown()),this.setStateFrame(j,d,this.input.pointerUp())},c.Button.prototype.setStateSound=function(a,b,d){var e="on"+a+"Sound",f="on"+a+"SoundMarker";b instanceof c.Sound||b instanceof c.AudioSprite?(this[e]=b,this[f]="string"==typeof d?d:""):(this[e]=null,this[f]="")},c.Button.prototype.playStateSound=function(a){var b="on"+a+"Sound",c=this[b];if(c){var d="on"+a+"SoundMarker",e=this[d];return c.play(e),!0}return!1},c.Button.prototype.setSounds=function(a,b,c,d,e,f,k,l){this.setStateSound(g,a,b),this.setStateSound(h,e,f),this.setStateSound(i,c,d),this.setStateSound(j,k,l)},c.Button.prototype.setOverSound=function(a,b){this.setStateSound(g,a,b)},c.Button.prototype.setOutSound=function(a,b){this.setStateSound(h,a,b)},c.Button.prototype.setDownSound=function(a,b){this.setStateSound(i,a,b)},c.Button.prototype.setUpSound=function(a,b){this.setStateSound(j,a,b)},c.Button.prototype.onInputOverHandler=function(a,b){b.justReleased()&&(this.justReleasedPreventsOver&b.pointerMode)===b.pointerMode||(this.changeStateFrame(g),this.onOverMouseOnly&&!b.isMouse||(this.playStateSound(g),this.onInputOver&&this.onInputOver.dispatch(this,b)))},c.Button.prototype.onInputOutHandler=function(a,b){this.changeStateFrame(h),this.playStateSound(h),this.onInputOut&&this.onInputOut.dispatch(this,b)},c.Button.prototype.onInputDownHandler=function(a,b){this.changeStateFrame(i),this.playStateSound(i),this.onInputDown&&this.onInputDown.dispatch(this,b)},c.Button.prototype.onInputUpHandler=function(a,b,c){if(this.playStateSound(j),this.onInputUp&&this.onInputUp.dispatch(this,b,c),!this.freezeFrames)if(this.forceOut===!0||(this.forceOut&b.pointerMode)===b.pointerMode)this.changeStateFrame(h);else{var d=this.changeStateFrame(j);d||(c?this.changeStateFrame(g):this.changeStateFrame(h))}},c.SpriteBatch=function(a,b,d,e){void 0!==b&&null!==b||(b=a.world),PIXI.SpriteBatch.call(this),c.Group.call(this,a,b,d,e),this.type=c.SPRITEBATCH},c.SpriteBatch.prototype=c.Utils.extend(!0,c.SpriteBatch.prototype,PIXI.SpriteBatch.prototype,c.Group.prototype),c.SpriteBatch.prototype.constructor=c.SpriteBatch,c.BitmapData=function(a,b,d,e,f){void 0!==d&&0!==d||(d=256),void 0!==e&&0!==e||(e=256),void 0===f&&(f=!1),this.game=a,this.key=b,this.width=d,this.height=e,this.canvas=c.Canvas.create(this,d,e,null,f),this.context=this.canvas.getContext("2d",{alpha:!0}),this.ctx=this.context,this.smoothProperty=a.renderType===c.CANVAS?a.renderer.renderSession.smoothProperty:c.Canvas.getSmoothingPrefix(this.context),this.imageData=this.context.getImageData(0,0,d,e),this.data=null,this.imageData&&(this.data=this.imageData.data),this.pixels=null,this.data&&(this.imageData.data.buffer?(this.buffer=this.imageData.data.buffer,this.pixels=new Uint32Array(this.buffer)):window.ArrayBuffer?(this.buffer=new ArrayBuffer(this.imageData.data.length),this.pixels=new Uint32Array(this.buffer)):this.pixels=this.imageData.data),this.baseTexture=new PIXI.BaseTexture(this.canvas),this.texture=new PIXI.Texture(this.baseTexture),this.frameData=new c.FrameData,this.textureFrame=this.frameData.addFrame(new c.Frame(0,0,0,d,e,"bitmapData")),this.texture.frame=this.textureFrame,this.type=c.BITMAPDATA,this.disableTextureUpload=!1,this.dirty=!1,this.cls=this.clear,this._image=null,this._pos=new c.Point,this._size=new c.Point,this._scale=new c.Point,this._rotate=0,this._alpha={prev:1,current:1},this._anchor=new c.Point,this._tempR=0,this._tempG=0,this._tempB=0,this._circle=new c.Circle,this._swapCanvas=void 0},c.BitmapData.prototype={move:function(a,b,c){return 0!==a&&this.moveH(a,c),0!==b&&this.moveV(b,c),this},moveH:function(a,b){void 0===b&&(b=!0),void 0===this._swapCanvas&&(this._swapCanvas=PIXI.CanvasPool.create(this,this.width,this.height));var c=this._swapCanvas,d=c.getContext("2d"),e=this.height,f=this.canvas;if(d.clearRect(0,0,this.width,this.height),0>a){a=Math.abs(a);var g=this.width-a;b&&d.drawImage(f,0,0,a,e,g,0,a,e),d.drawImage(f,a,0,g,e,0,0,g,e)}else{var g=this.width-a;b&&d.drawImage(f,g,0,a,e,0,0,a,e),d.drawImage(f,0,0,g,e,a,0,g,e)}return this.clear(),this.copy(this._swapCanvas)},moveV:function(a,b){void 0===b&&(b=!0),void 0===this._swapCanvas&&(this._swapCanvas=PIXI.CanvasPool.create(this,this.width,this.height));var c=this._swapCanvas,d=c.getContext("2d"),e=this.width,f=this.canvas;if(d.clearRect(0,0,this.width,this.height),0>a){a=Math.abs(a);var g=this.height-a;b&&d.drawImage(f,0,0,e,a,0,g,e,a),d.drawImage(f,0,a,e,g,0,0,e,g)}else{var g=this.height-a;b&&d.drawImage(f,0,g,e,a,0,0,e,a),d.drawImage(f,0,0,e,g,0,a,e,g)}return this.clear(),this.copy(this._swapCanvas)},add:function(a){if(Array.isArray(a))for(var b=0;bm;m++)for(var n=d;h>n;n++)c.Color.unpackPixel(this.getPixel32(n,m),j),k=a.call(b,j,n,m),k!==!1&&null!==k&&void 0!==k&&(this.setPixel32(n,m,k.r,k.g,k.b,k.a,!1),l=!0);return l&&(this.context.putImageData(this.imageData,0,0),this.dirty=!0),this},processPixel:function(a,b,c,d,e,f){void 0===c&&(c=0),void 0===d&&(d=0),void 0===e&&(e=this.width),void 0===f&&(f=this.height);for(var g=c+e,h=d+f,i=0,j=0,k=!1,l=d;h>l;l++)for(var m=c;g>m;m++)i=this.getPixel32(m,l),j=a.call(b,i,m,l),j!==i&&(this.pixels[l*this.width+m]=j,k=!0);return k&&(this.context.putImageData(this.imageData,0,0),this.dirty=!0),this},replaceRGB:function(a,b,d,e,f,g,h,i,j){var k=0,l=0,m=this.width,n=this.height,o=c.Color.packPixel(a,b,d,e);void 0!==j&&j instanceof c.Rectangle&&(k=j.x,l=j.y,m=j.width,n=j.height);for(var p=0;n>p;p++)for(var q=0;m>q;q++)this.getPixel32(k+q,l+p)===o&&this.setPixel32(k+q,l+p,f,g,h,i,!1);return this.context.putImageData(this.imageData,0,0),this.dirty=!0,this},setHSL:function(a,b,d,e){var f=a||0===a,g=b||0===b,h=d||0===d;if(f||g||h){void 0===e&&(e=new c.Rectangle(0,0,this.width,this.height));for(var i=c.Color.createColor(),j=e.y;j=0&&a<=this.width&&b>=0&&b<=this.height&&(c.Device.LITTLE_ENDIAN?this.pixels[b*this.width+a]=g<<24|f<<16|e<<8|d:this.pixels[b*this.width+a]=d<<24|e<<16|f<<8|g,h&&(this.context.putImageData(this.imageData,0,0),this.dirty=!0)),this},setPixel:function(a,b,c,d,e,f){return this.setPixel32(a,b,c,d,e,255,f)},getPixel:function(a,b,d){d||(d=c.Color.createColor());var e=~~(a+b*this.width);return e*=4,d.r=this.data[e],d.g=this.data[++e],d.b=this.data[++e],d.a=this.data[++e],d},getPixel32:function(a,b){return a>=0&&a<=this.width&&b>=0&&b<=this.height?this.pixels[b*this.width+a]:void 0},getPixelRGB:function(a,b,d,e,f){return c.Color.unpackPixel(this.getPixel32(a,b),d,e,f)},getPixels:function(a){return this.context.getImageData(a.x,a.y,a.width,a.height); +},getFirstPixel:function(a){void 0===a&&(a=0);var b=c.Color.createColor(),d=0,e=0,f=1,g=!1;1===a?(f=-1,e=this.height):3===a&&(f=-1,d=this.width);do c.Color.unpackPixel(this.getPixel32(d,e),b),0===a||1===a?(d++,d===this.width&&(d=0,e+=f,(e>=this.height||0>=e)&&(g=!0))):2!==a&&3!==a||(e++,e===this.height&&(e=0,d+=f,(d>=this.width||0>=d)&&(g=!0)));while(0===b.a&&!g);return b.x=d,b.y=e,b},getBounds:function(a){return void 0===a&&(a=new c.Rectangle),a.x=this.getFirstPixel(2).x,a.x===this.width?a.setTo(0,0,0,0):(a.y=this.getFirstPixel(0).y,a.width=this.getFirstPixel(3).x-a.x+1,a.height=this.getFirstPixel(1).y-a.y+1,a)},addToWorld:function(a,b,c,d,e,f){e=e||1,f=f||1;var g=this.game.add.image(a,b,this);return g.anchor.set(c,d),g.scale.set(e,f),g},copy:function(a,b,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r){if(void 0!==a&&null!==a||(a=this),(a instanceof c.RenderTexture||a instanceof PIXI.RenderTexture)&&(a=a.getCanvas()),this._image=a,a instanceof c.Sprite||a instanceof c.Image||a instanceof c.Text||a instanceof PIXI.Sprite)this._pos.set(a.texture.crop.x,a.texture.crop.y),this._size.set(a.texture.crop.width,a.texture.crop.height),this._scale.set(a.scale.x,a.scale.y),this._anchor.set(a.anchor.x,a.anchor.y),this._rotate=a.rotation,this._alpha.current=a.alpha,a.texture instanceof c.RenderTexture||a.texture instanceof PIXI.RenderTexture?this._image=a.texture.getCanvas():this._image=a.texture.baseTexture.source,void 0!==g&&null!==g||(g=a.x),void 0!==h&&null!==h||(h=a.y),a.texture.trim&&(g+=a.texture.trim.x-a.anchor.x*a.texture.trim.width,h+=a.texture.trim.y-a.anchor.y*a.texture.trim.height),16777215!==a.tint&&(a.cachedTint!==a.tint&&(a.cachedTint=a.tint,a.tintedTexture=PIXI.CanvasTinter.getTintedTexture(a,a.tint)),this._image=a.tintedTexture,this._pos.set(0));else{if(this._pos.set(0),this._scale.set(1),this._anchor.set(0),this._rotate=0,this._alpha.current=1,a instanceof c.BitmapData)this._image=a.canvas;else if("string"==typeof a){if(a=this.game.cache.getImage(a),null===a)return;this._image=a}this._size.set(this._image.width,this._image.height)}if(void 0!==b&&null!==b||(b=0),void 0!==d&&null!==d||(d=0),e&&(this._size.x=e),f&&(this._size.y=f),void 0!==g&&null!==g||(g=b),void 0!==h&&null!==h||(h=d),void 0!==i&&null!==i||(i=this._size.x),void 0!==j&&null!==j||(j=this._size.y),"number"==typeof k&&(this._rotate=k),"number"==typeof l&&(this._anchor.x=l),"number"==typeof m&&(this._anchor.y=m),"number"==typeof n&&(this._scale.x=n),"number"==typeof o&&(this._scale.y=o),"number"==typeof p&&(this._alpha.current=p),void 0===q&&(q=null),void 0===r&&(r=!1),!(this._alpha.current<=0||0===this._scale.x||0===this._scale.y||0===this._size.x||0===this._size.y)){var s=this.context;return this._alpha.prev=s.globalAlpha,s.save(),s.globalAlpha=this._alpha.current,q&&(this.op=q),r&&(g|=0,h|=0),s.translate(g,h),s.scale(this._scale.x,this._scale.y),s.rotate(this._rotate),s.drawImage(this._image,this._pos.x+b,this._pos.y+d,this._size.x,this._size.y,-i*this._anchor.x,-j*this._anchor.y,i,j),s.restore(),s.globalAlpha=this._alpha.prev,this.dirty=!0,this}},copyTransform:function(a,b,d){if(void 0===b&&(b=null),void 0===d&&(d=!1),!a.hasOwnProperty("worldTransform")||!a.worldVisible||0===a.worldAlpha)return this;var e=a.worldTransform;if(this._pos.set(a.texture.crop.x,a.texture.crop.y),this._size.set(a.texture.crop.width,a.texture.crop.height),0===e.a||0===e.d||0===this._size.x||0===this._size.y)return this;a.texture instanceof c.RenderTexture||a.texture instanceof PIXI.RenderTexture?this._image=a.texture.getCanvas():this._image=a.texture.baseTexture.source;var f=e.tx,g=e.ty;a.texture.trim&&(f+=a.texture.trim.x-a.anchor.x*a.texture.trim.width,g+=a.texture.trim.y-a.anchor.y*a.texture.trim.height),16777215!==a.tint&&(a.cachedTint!==a.tint&&(a.cachedTint=a.tint,a.tintedTexture=PIXI.CanvasTinter.getTintedTexture(a,a.tint)),this._image=a.tintedTexture,this._pos.set(0)),d&&(f|=0,g|=0);var h=this.context;return this._alpha.prev=h.globalAlpha,h.save(),h.globalAlpha=this._alpha.current,b&&(this.op=b),h[this.smoothProperty]=a.texture.baseTexture.scaleMode===PIXI.scaleModes.LINEAR,h.setTransform(e.a,e.b,e.c,e.d,f,g),h.drawImage(this._image,this._pos.x,this._pos.y,this._size.x,this._size.y,-this._size.x*a.anchor.x,-this._size.y*a.anchor.y,this._size.x,this._size.y),h.restore(),h.globalAlpha=this._alpha.prev,this.dirty=!0,this},copyRect:function(a,b,c,d,e,f,g){return this.copy(a,b.x,b.y,b.width,b.height,c,d,b.width,b.height,0,0,0,1,1,e,f,g)},draw:function(a,b,c,d,e,f,g){return this.copy(a,null,null,null,null,b,c,d,e,null,null,null,null,null,null,f,g)},drawGroup:function(a,b,c){return a.total>0&&a.forEachExists(this.drawGroupProxy,this,b,c),this},drawGroupProxy:function(a,b,d){if(a.hasOwnProperty("texture")&&this.copyTransform(a,b,d),a.type===c.GROUP&&a.exists)this.drawGroup(a,b,d);else if(a.hasOwnProperty("children")&&a.children.length>0)for(var e=0;eb.width&&(e=b.width);var f=this.context;return f.fillStyle=f.createPattern(b,d),this._circle=new c.Circle(a.start.x,a.start.y,b.height),this._circle.circumferencePoint(a.angle-1.5707963267948966,!1,this._pos),f.save(),f.translate(this._pos.x,this._pos.y),f.rotate(a.angle),f.fillRect(0,0,e,b.height),f.restore(),this.dirty=!0,this}},render:function(){return!this.disableTextureUpload&&this.dirty&&(this.baseTexture.dirty(),this.dirty=!1),this},destroy:function(){this.frameData.destroy(),this.texture.destroy(!0),PIXI.CanvasPool.remove(this)},blendReset:function(){return this.op="source-over",this},blendSourceOver:function(){return this.op="source-over",this},blendSourceIn:function(){return this.op="source-in",this},blendSourceOut:function(){return this.op="source-out",this},blendSourceAtop:function(){return this.op="source-atop",this},blendDestinationOver:function(){return this.op="destination-over",this},blendDestinationIn:function(){return this.op="destination-in",this},blendDestinationOut:function(){return this.op="destination-out",this},blendDestinationAtop:function(){return this.op="destination-atop",this},blendXor:function(){return this.op="xor",this},blendAdd:function(){return this.op="lighter",this},blendMultiply:function(){return this.op="multiply",this},blendScreen:function(){return this.op="screen",this},blendOverlay:function(){return this.op="overlay",this},blendDarken:function(){return this.op="darken",this},blendLighten:function(){return this.op="lighten",this},blendColorDodge:function(){return this.op="color-dodge",this},blendColorBurn:function(){return this.op="color-burn",this},blendHardLight:function(){return this.op="hard-light",this},blendSoftLight:function(){return this.op="soft-light",this},blendDifference:function(){return this.op="difference",this},blendExclusion:function(){return this.op="exclusion",this},blendHue:function(){return this.op="hue",this},blendSaturation:function(){return this.op="saturation",this},blendColor:function(){return this.op="color",this},blendLuminosity:function(){return this.op="luminosity",this}},Object.defineProperty(c.BitmapData.prototype,"smoothed",{get:function(){c.Canvas.getSmoothingEnabled(this.context)},set:function(a){c.Canvas.setSmoothingEnabled(this.context,a)}}),Object.defineProperty(c.BitmapData.prototype,"op",{get:function(){return this.context.globalCompositeOperation},set:function(a){this.context.globalCompositeOperation=a}}),c.BitmapData.getTransform=function(a,b,c,d,e,f){return"number"!=typeof a&&(a=0),"number"!=typeof b&&(b=0),"number"!=typeof c&&(c=1),"number"!=typeof d&&(d=1),"number"!=typeof e&&(e=0),"number"!=typeof f&&(f=0),{sx:c,sy:d,scaleX:c,scaleY:d,skewX:e,skewY:f,translateX:a,translateY:b,tx:a,ty:b}},c.BitmapData.prototype.constructor=c.BitmapData,PIXI.Graphics=function(){PIXI.DisplayObjectContainer.call(this),this.renderable=!0,this.fillAlpha=1,this.lineWidth=0,this.lineColor=0,this.graphicsData=[],this.tint=16777215,this.blendMode=PIXI.blendModes.NORMAL,this.currentPath=null,this._webGL=[],this.isMask=!1,this.boundsPadding=0,this._localBounds=new PIXI.Rectangle(0,0,1,1),this.dirty=!0,this.webGLDirty=!1,this.cachedSpriteDirty=!1},PIXI.Graphics.prototype=Object.create(PIXI.DisplayObjectContainer.prototype),PIXI.Graphics.prototype.constructor=PIXI.Graphics,PIXI.Graphics.prototype.lineStyle=function(a,b,c){return this.lineWidth=a||0,this.lineColor=b||0,this.lineAlpha=void 0===c?1:c,this.currentPath&&(this.currentPath.shape.points.length?this.drawShape(new PIXI.Polygon(this.currentPath.shape.points.slice(-2))):(this.currentPath.lineWidth=this.lineWidth,this.currentPath.lineColor=this.lineColor,this.currentPath.lineAlpha=this.lineAlpha)),this},PIXI.Graphics.prototype.moveTo=function(a,b){return this.drawShape(new PIXI.Polygon([a,b])),this},PIXI.Graphics.prototype.lineTo=function(a,b){return this.currentPath||this.moveTo(0,0),this.currentPath.shape.points.push(a,b),this.dirty=!0,this.updateLocalBounds(),this},PIXI.Graphics.prototype.quadraticCurveTo=function(a,b,c,d){this.currentPath?0===this.currentPath.shape.points.length&&(this.currentPath.shape.points=[0,0]):this.moveTo(0,0);var e,f,g=20,h=this.currentPath.shape.points;0===h.length&&this.moveTo(0,0);for(var i=h[h.length-2],j=h[h.length-1],k=0,l=1;g>=l;++l)k=l/g,e=i+(a-i)*k,f=j+(b-j)*k,h.push(e+(a+(c-a)*k-e)*k,f+(b+(d-b)*k-f)*k);return this.dirty=!0,this.updateLocalBounds(),this},PIXI.Graphics.prototype.bezierCurveTo=function(a,b,c,d,e,f){this.currentPath?0===this.currentPath.shape.points.length&&(this.currentPath.shape.points=[0,0]):this.moveTo(0,0);for(var g,h,i,j,k,l=20,m=this.currentPath.shape.points,n=m[m.length-2],o=m[m.length-1],p=0,q=1;l>=q;++q)p=q/l,g=1-p,h=g*g,i=h*g,j=p*p,k=j*p,m.push(i*n+3*h*p*a+3*g*j*c+k*e,i*o+3*h*p*b+3*g*j*d+k*f);return this.dirty=!0,this.updateLocalBounds(),this},PIXI.Graphics.prototype.arcTo=function(a,b,c,d,e){this.currentPath?0===this.currentPath.shape.points.length&&this.currentPath.shape.points.push(a,b):this.moveTo(a,b);var f=this.currentPath.shape.points,g=f[f.length-2],h=f[f.length-1],i=h-b,j=g-a,k=d-b,l=c-a,m=Math.abs(i*l-j*k);if(1e-8>m||0===e)f[f.length-2]===a&&f[f.length-1]===b||f.push(a,b);else{var n=i*i+j*j,o=k*k+l*l,p=i*k+j*l,q=e*Math.sqrt(n)/m,r=e*Math.sqrt(o)/m,s=q*p/n,t=r*p/o,u=q*l+r*j,v=q*k+r*i,w=j*(r+s),x=i*(r+s),y=l*(q+t),z=k*(q+t),A=Math.atan2(x-v,w-u),B=Math.atan2(z-v,y-u);this.arc(u+a,v+b,e,A,B,j*k>l*i)}return this.dirty=!0,this.updateLocalBounds(),this},PIXI.Graphics.prototype.arc=function(a,b,c,d,e,f,g){if(d===e)return this;void 0===f&&(f=!1),void 0===g&&(g=40),!f&&d>=e?e+=2*Math.PI:f&&e>=d&&(d+=2*Math.PI);var h=f?-1*(d-e):e-d,i=Math.ceil(Math.abs(h)/(2*Math.PI))*g;if(0===h)return this;var j=a+Math.cos(d)*c,k=b+Math.sin(d)*c;f&&this.filling?this.moveTo(a,b):this.moveTo(j,k);for(var l=this.currentPath.shape.points,m=h/(2*i),n=2*m,o=Math.cos(m),p=Math.sin(m),q=i-1,r=q%1/q,s=0;q>=s;s++){var t=s+r*s,u=m+d+n*t,v=Math.cos(u),w=-Math.sin(u);l.push((o*v+p*w)*c+a,(o*-w+p*v)*c+b)}return this.dirty=!0,this.updateLocalBounds(),this},PIXI.Graphics.prototype.beginFill=function(a,b){return this.filling=!0,this.fillColor=a||0,this.fillAlpha=void 0===b?1:b,this.currentPath&&this.currentPath.shape.points.length<=2&&(this.currentPath.fill=this.filling,this.currentPath.fillColor=this.fillColor,this.currentPath.fillAlpha=this.fillAlpha),this},PIXI.Graphics.prototype.endFill=function(){return this.filling=!1,this.fillColor=null,this.fillAlpha=1,this},PIXI.Graphics.prototype.drawRect=function(a,b,c,d){return this.drawShape(new PIXI.Rectangle(a,b,c,d)),this},PIXI.Graphics.prototype.drawRoundedRect=function(a,b,c,d,e){return this.drawShape(new PIXI.RoundedRectangle(a,b,c,d,e)),this},PIXI.Graphics.prototype.drawCircle=function(a,b,c){return this.drawShape(new PIXI.Circle(a,b,c)),this},PIXI.Graphics.prototype.drawEllipse=function(a,b,c,d){return this.drawShape(new PIXI.Ellipse(a,b,c,d)),this},PIXI.Graphics.prototype.drawPolygon=function(a){(a instanceof c.Polygon||a instanceof PIXI.Polygon)&&(a=a.points);var b=a;if(!Array.isArray(b)){b=new Array(arguments.length);for(var d=0;dp?p:x,x=x>r?r:x,x=x>t?t:x,y=y>q?q:y,y=y>s?s:y,y=y>u?u:y,v=p>v?p:v,v=r>v?r:v,v=t>v?t:v,w=q>w?q:w,w=s>w?s:w,w=u>w?u:w,this._bounds.x=x,this._bounds.width=v-x,this._bounds.y=y,this._bounds.height=w-y,this._currentBounds=this._bounds}return this._currentBounds},PIXI.Graphics.prototype.containsPoint=function(a){this.worldTransform.applyInverse(a,tempPoint);for(var b=this.graphicsData,c=0;ch?h:a,b=h+j>b?h+j:b,d=d>i?i:d,e=i+k>e?i+k:e;else if(n===PIXI.Graphics.CIRC)h=f.x,i=f.y,j=f.radius+o/2,k=f.radius+o/2,a=a>h-j?h-j:a,b=h+j>b?h+j:b,d=d>i-k?i-k:d,e=i+k>e?i+k:e;else if(n===PIXI.Graphics.ELIP)h=f.x,i=f.y,j=f.width+o/2,k=f.height+o/2,a=a>h-j?h-j:a,b=h+j>b?h+j:b,d=d>i-k?i-k:d,e=i+k>e?i+k:e;else{g=f.points;for(var p=0;ph-o?h-o:a,b=h+o>b?h+o:b,d=d>i-o?i-o:d,e=i+o>e?i+o:e}}else a=0,b=0,d=0,e=0;var q=this.boundsPadding;this._localBounds.x=a-q,this._localBounds.width=b-a+2*q,this._localBounds.y=d-q,this._localBounds.height=e-d+2*q},PIXI.Graphics.prototype._generateCachedSprite=function(){var a=this.getLocalBounds();if(this._cachedSprite)this._cachedSprite.buffer.resize(a.width,a.height);else{var b=new PIXI.CanvasBuffer(a.width,a.height),c=PIXI.Texture.fromCanvas(b.canvas);this._cachedSprite=new PIXI.Sprite(c),this._cachedSprite.buffer=b,this._cachedSprite.worldTransform=this.worldTransform}this._cachedSprite.anchor.x=-(a.x/a.width),this._cachedSprite.anchor.y=-(a.y/a.height),this._cachedSprite.buffer.context.translate(-a.x,-a.y),this.worldAlpha=1,PIXI.CanvasGraphics.renderGraphics(this,this._cachedSprite.buffer.context),this._cachedSprite.alpha=this.alpha},PIXI.Graphics.prototype.updateCachedSpriteTexture=function(){var a=this._cachedSprite,b=a.texture,c=a.buffer.canvas;b.baseTexture.width=c.width,b.baseTexture.height=c.height,b.crop.width=b.frame.width=c.width,b.crop.height=b.frame.height=c.height,a._width=c.width,a._height=c.height,b.baseTexture.dirty()},PIXI.Graphics.prototype.destroyCachedSprite=function(){this._cachedSprite.texture.destroy(!0),this._cachedSprite=null},PIXI.Graphics.prototype.drawShape=function(a){this.currentPath&&this.currentPath.shape.points.length<=2&&this.graphicsData.pop(),this.currentPath=null,a instanceof c.Polygon&&(a=a.clone(),a.flatten());var b=new PIXI.GraphicsData(this.lineWidth,this.lineColor,this.lineAlpha,this.fillColor,this.fillAlpha,this.filling,a);return this.graphicsData.push(b),b.type===PIXI.Graphics.POLY&&(b.shape.closed=this.filling,this.currentPath=b),this.dirty=!0,this.updateLocalBounds(),b},Object.defineProperty(PIXI.Graphics.prototype,"cacheAsBitmap",{get:function(){return this._cacheAsBitmap},set:function(a){this._cacheAsBitmap=a,this._cacheAsBitmap?this._generateCachedSprite():this.destroyCachedSprite(),this.dirty=!0,this.webGLDirty=!0}}),PIXI.GraphicsData=function(a,b,c,d,e,f,g){this.lineWidth=a,this.lineColor=b,this.lineAlpha=c,this._lineTint=b,this.fillColor=d,this.fillAlpha=e,this._fillTint=d,this.fill=f,this.shape=g,this.type=g.type},PIXI.GraphicsData.prototype.constructor=PIXI.GraphicsData,PIXI.GraphicsData.prototype.clone=function(){return new GraphicsData(this.lineWidth,this.lineColor,this.lineAlpha,this.fillColor,this.fillAlpha,this.fill,this.shape)},PIXI.PolyK={},PIXI.PolyK.Triangulate=function(a){var b=!0,c=a.length>>1;if(3>c)return[];for(var d=[],e=[],f=0;c>f;f++)e.push(f);f=0;for(var g=c;g>3;){var h=e[(f+0)%g],i=e[(f+1)%g],j=e[(f+2)%g],k=a[2*h],l=a[2*h+1],m=a[2*i],n=a[2*i+1],o=a[2*j],p=a[2*j+1],q=!1;if(PIXI.PolyK._convex(k,l,m,n,o,p,b)){q=!0;for(var r=0;g>r;r++){var s=e[r];if(s!==h&&s!==i&&s!==j&&PIXI.PolyK._PointInTriangle(a[2*s],a[2*s+1],k,l,m,n,o,p)){q=!1;break}}}if(q)d.push(h,i,j),e.splice((f+1)%g,1),g--,f=0;else if(f++>3*g){if(!b)return null;for(d=[],e=[],f=0;c>f;f++)e.push(f);f=0,g=c,b=!1}}return d.push(e[0],e[1],e[2]),d},PIXI.PolyK._PointInTriangle=function(a,b,c,d,e,f,g,h){var i=g-c,j=h-d,k=e-c,l=f-d,m=a-c,n=b-d,o=i*i+j*j,p=i*k+j*l,q=i*m+j*n,r=k*k+l*l,s=k*m+l*n,t=1/(o*r-p*p),u=(r*q-p*s)*t,v=(o*s-p*q)*t;return u>=0&&v>=0&&1>u+v},PIXI.PolyK._convex=function(a,b,c,d,e,f,g){return(b-d)*(e-c)+(c-a)*(f-d)>=0===g},PIXI.EarCut={},PIXI.EarCut.Triangulate=function(a,b,c){c=c||2;var d=b&&b.length,e=d?b[0]*c:a.length,f=PIXI.EarCut.linkedList(a,0,e,c,!0),g=[];if(!f)return g;var h,i,j,k,l,m,n;if(d&&(f=PIXI.EarCut.eliminateHoles(a,b,f,c)),a.length>80*c){h=j=a[0],i=k=a[1];for(var o=c;e>o;o+=c)l=a[o],m=a[o+1],h>l&&(h=l),i>m&&(i=m),l>j&&(j=l),m>k&&(k=m);n=Math.max(j-h,k-i)}return PIXI.EarCut.earcutLinked(f,g,c,h,i,n),g},PIXI.EarCut.linkedList=function(a,b,c,d,e){var f,g,h,i=0;for(f=b,g=c-d;c>f;f+=d)i+=(a[g]-a[f])*(a[f+1]+a[g+1]),g=f;if(e===i>0)for(f=b;c>f;f+=d)h=PIXI.EarCut.insertNode(f,a[f],a[f+1],h);else for(f=c-d;f>=b;f-=d)h=PIXI.EarCut.insertNode(f,a[f],a[f+1],h);return h},PIXI.EarCut.filterPoints=function(a,b){if(!a)return a;b||(b=a);var c,d=a;do if(c=!1,d.steiner||!PIXI.EarCut.equals(d,d.next)&&0!==PIXI.EarCut.area(d.prev,d,d.next))d=d.next;else{if(PIXI.EarCut.removeNode(d),d=b=d.prev,d===d.next)return null;c=!0}while(c||d!==b);return b},PIXI.EarCut.earcutLinked=function(a,b,c,d,e,f,g){if(a){!g&&f&&PIXI.EarCut.indexCurve(a,d,e,f);for(var h,i,j=a;a.prev!==a.next;)if(h=a.prev,i=a.next,f?PIXI.EarCut.isEarHashed(a,d,e,f):PIXI.EarCut.isEar(a))b.push(h.i/c),b.push(a.i/c),b.push(i.i/c),PIXI.EarCut.removeNode(a),a=i.next,j=i.next;else if(a=i,a===j){g?1===g?(a=PIXI.EarCut.cureLocalIntersections(a,b,c),PIXI.EarCut.earcutLinked(a,b,c,d,e,f,2)):2===g&&PIXI.EarCut.splitEarcut(a,b,c,d,e,f):PIXI.EarCut.earcutLinked(PIXI.EarCut.filterPoints(a),b,c,d,e,f,1);break}}},PIXI.EarCut.isEar=function(a){var b=a.prev,c=a,d=a.next;if(PIXI.EarCut.area(b,c,d)>=0)return!1;for(var e=a.next.next;e!==a.prev;){if(PIXI.EarCut.pointInTriangle(b.x,b.y,c.x,c.y,d.x,d.y,e.x,e.y)&&PIXI.EarCut.area(e.prev,e,e.next)>=0)return!1;e=e.next}return!0},PIXI.EarCut.isEarHashed=function(a,b,c,d){var e=a.prev,f=a,g=a.next;if(PIXI.EarCut.area(e,f,g)>=0)return!1;for(var h=e.xf.x?e.x>g.x?e.x:g.x:f.x>g.x?f.x:g.x,k=e.y>f.y?e.y>g.y?e.y:g.y:f.y>g.y?f.y:g.y,l=PIXI.EarCut.zOrder(h,i,b,c,d),m=PIXI.EarCut.zOrder(j,k,b,c,d),n=a.nextZ;n&&n.z<=m;){if(n!==a.prev&&n!==a.next&&PIXI.EarCut.pointInTriangle(e.x,e.y,f.x,f.y,g.x,g.y,n.x,n.y)&&PIXI.EarCut.area(n.prev,n,n.next)>=0)return!1;n=n.nextZ}for(n=a.prevZ;n&&n.z>=l;){if(n!==a.prev&&n!==a.next&&PIXI.EarCut.pointInTriangle(e.x,e.y,f.x,f.y,g.x,g.y,n.x,n.y)&&PIXI.EarCut.area(n.prev,n,n.next)>=0)return!1;n=n.prevZ}return!0},PIXI.EarCut.cureLocalIntersections=function(a,b,c){var d=a;do{var e=d.prev,f=d.next.next;PIXI.EarCut.intersects(e,d,d.next,f)&&PIXI.EarCut.locallyInside(e,f)&&PIXI.EarCut.locallyInside(f,e)&&(b.push(e.i/c),b.push(d.i/c),b.push(f.i/c),PIXI.EarCut.removeNode(d),PIXI.EarCut.removeNode(d.next),d=a=f),d=d.next}while(d!==a);return d},PIXI.EarCut.splitEarcut=function(a,b,c,d,e,f){var g=a;do{for(var h=g.next.next;h!==g.prev;){if(g.i!==h.i&&PIXI.EarCut.isValidDiagonal(g,h)){var i=PIXI.EarCut.splitPolygon(g,h);return g=PIXI.EarCut.filterPoints(g,g.next),i=PIXI.EarCut.filterPoints(i,i.next),PIXI.EarCut.earcutLinked(g,b,c,d,e,f),void PIXI.EarCut.earcutLinked(i,b,c,d,e,f)}h=h.next}g=g.next}while(g!==a)},PIXI.EarCut.eliminateHoles=function(a,b,c,d){var e,f,g,h,i,j=[];for(e=0,f=b.length;f>e;e++)g=b[e]*d,h=f-1>e?b[e+1]*d:a.length,i=PIXI.EarCut.linkedList(a,g,h,d,!1),i===i.next&&(i.steiner=!0),j.push(PIXI.EarCut.getLeftmost(i));for(j.sort(compareX),e=0;e=d.next.y){var h=d.x+(f-d.y)*(d.next.x-d.x)/(d.next.y-d.y);e>=h&&h>g&&(g=h,c=d.x=d.x&&d.x>=c.x&&PIXI.EarCut.pointInTriangle(fi||i===k&&d.x>c.x)&&PIXI.EarCut.locallyInside(d,a)&&(c=d,k=i)),d=d.next;return c},PIXI.EarCut.indexCurve=function(a,b,c,d){var e=a;do null===e.z&&(e.z=PIXI.EarCut.zOrder(e.x,e.y,b,c,d)),e.prevZ=e.prev,e.nextZ=e.next,e=e.next;while(e!==a);e.prevZ.nextZ=null,e.prevZ=null,PIXI.EarCut.sortLinked(e)},PIXI.EarCut.sortLinked=function(a){var b,c,d,e,f,g,h,i,j=1;do{for(c=a,a=null,f=null,g=0;c;){for(g++,d=c,h=0,b=0;j>b&&(h++,d=d.nextZ,d);b++);for(i=j;h>0||i>0&&d;)0===h?(e=d,d=d.nextZ,i--):0!==i&&d?c.z<=d.z?(e=c,c=c.nextZ,h--):(e=d,d=d.nextZ,i--):(e=c,c=c.nextZ,h--),f?f.nextZ=e:a=e,e.prevZ=f,f=e;c=d}f.nextZ=null,j*=2}while(g>1);return a},PIXI.EarCut.zOrder=function(a,b,c,d,e){return a=32767*(a-c)/e,b=32767*(b-d)/e,a=16711935&(a|a<<8),a=252645135&(a|a<<4),a=858993459&(a|a<<2),a=1431655765&(a|a<<1),b=16711935&(b|b<<8),b=252645135&(b|b<<4),b=858993459&(b|b<<2),b=1431655765&(b|b<<1),a|b<<1},PIXI.EarCut.getLeftmost=function(a){var b=a,c=a;do b.x=0&&(a-g)*(d-h)-(c-g)*(b-h)>=0&&(c-g)*(f-h)-(e-g)*(d-h)>=0},PIXI.EarCut.isValidDiagonal=function(a,b){return PIXI.EarCut.equals(a,b)||a.next.i!==b.i&&a.prev.i!==b.i&&!PIXI.EarCut.intersectsPolygon(a,b)&&PIXI.EarCut.locallyInside(a,b)&&PIXI.EarCut.locallyInside(b,a)&&PIXI.EarCut.middleInside(a,b)},PIXI.EarCut.area=function(a,b,c){return(b.y-a.y)*(c.x-b.x)-(b.x-a.x)*(c.y-b.y)},PIXI.EarCut.equals=function(a,b){return a.x===b.x&&a.y===b.y},PIXI.EarCut.intersects=function(a,b,c,d){return PIXI.EarCut.area(a,b,c)>0!=PIXI.EarCut.area(a,b,d)>0&&PIXI.EarCut.area(c,d,a)>0!=PIXI.EarCut.area(c,d,b)>0},PIXI.EarCut.intersectsPolygon=function(a,b){var c=a;do{if(c.i!==a.i&&c.next.i!==a.i&&c.i!==b.i&&c.next.i!==b.i&&PIXI.EarCut.intersects(c,c.next,a,b))return!0;c=c.next}while(c!==a);return!1},PIXI.EarCut.locallyInside=function(a,b){return PIXI.EarCut.area(a.prev,a,a.next)<0?PIXI.EarCut.area(a,b,a.next)>=0&&PIXI.EarCut.area(a,a.prev,b)>=0:PIXI.EarCut.area(a,b,a.prev)<0||PIXI.EarCut.area(a,a.next,b)<0},PIXI.EarCut.middleInside=function(a,b){var c=a,d=!1,e=(a.x+b.x)/2,f=(a.y+b.y)/2;do c.y>f!=c.next.y>f&&e<(c.next.x-c.x)*(f-c.y)/(c.next.y-c.y)+c.x&&(d=!d),c=c.next;while(c!==a);return d},PIXI.EarCut.splitPolygon=function(a,b){var c=new PIXI.EarCut.Node(a.i,a.x,a.y),d=new PIXI.EarCut.Node(b.i,b.x,b.y),e=a.next,f=b.prev;return a.next=b,b.prev=a,c.next=e,e.prev=c,d.next=c,c.prev=d,f.next=d,d.prev=f,d},PIXI.EarCut.insertNode=function(a,b,c,d){var e=new PIXI.EarCut.Node(a,b,c);return d?(e.next=d.next,e.prev=d,d.next.prev=e,d.next=e):(e.prev=e,e.next=e),e},PIXI.EarCut.removeNode=function(a){a.next.prev=a.prev,a.prev.next=a.next,a.prevZ&&(a.prevZ.nextZ=a.nextZ),a.nextZ&&(a.nextZ.prevZ=a.prevZ)},PIXI.EarCut.Node=function(a,b,c){this.i=a,this.x=b,this.y=c,this.prev=null,this.next=null,this.z=null,this.prevZ=null,this.nextZ=null,this.steiner=!1},PIXI.WebGLGraphics=function(){},PIXI.WebGLGraphics.stencilBufferLimit=6,PIXI.WebGLGraphics.renderGraphics=function(a,b){var c,d=b.gl,e=b.projection,f=b.offset,g=b.shaderManager.primitiveShader;a.dirty&&PIXI.WebGLGraphics.updateGraphics(a,d);for(var h=a._webGL[d.id],i=0;i=PIXI.WebGLGraphics.stencilBufferLimit)if(g.points.length<2*PIXI.WebGLGraphics.stencilBufferLimit){f=PIXI.WebGLGraphics.switchMode(c,0);var h=PIXI.WebGLGraphics.buildPoly(g,f);h||(f=PIXI.WebGLGraphics.switchMode(c,1),PIXI.WebGLGraphics.buildComplexPoly(g,f))}else f=PIXI.WebGLGraphics.switchMode(c,1),PIXI.WebGLGraphics.buildComplexPoly(g,f);g.lineWidth>0&&(f=PIXI.WebGLGraphics.switchMode(c,0),PIXI.WebGLGraphics.buildLine(g,f))}else f=PIXI.WebGLGraphics.switchMode(c,0),g.type===PIXI.Graphics.RECT?PIXI.WebGLGraphics.buildRectangle(g,f):g.type===PIXI.Graphics.CIRC||g.type===PIXI.Graphics.ELIP?PIXI.WebGLGraphics.buildCircle(g,f):g.type===PIXI.Graphics.RREC&&PIXI.WebGLGraphics.buildRoundedRectangle(g,f);c.lastIndex++}for(d=0;d=q;q++)p=q/n,h=g(a,c,p),i=g(b,d,p),j=g(c,e,p),k=g(d,f,p),l=g(h,j,p),m=g(i,k,p),o.push(l,m);return o},PIXI.WebGLGraphics.buildCircle=function(a,b){var c,d,e=a.shape,f=e.x,g=e.y;a.type===PIXI.Graphics.CIRC?(c=e.radius,d=e.radius):(c=e.width,d=e.height);var h=40,i=2*Math.PI/h,j=0;if(a.fill){var k=PIXI.hex2rgb(a.fillColor),l=a.fillAlpha,m=k[0]*l,n=k[1]*l,o=k[2]*l,p=b.points,q=b.indices,r=p.length/6;for(q.push(r),j=0;h+1>j;j++)p.push(f,g,m,n,o,l),p.push(f+Math.sin(i*j)*c,g+Math.cos(i*j)*d,m,n,o,l),q.push(r++,r++);q.push(r-1)}if(a.lineWidth){var s=a.points;for(a.points=[],j=0;h+1>j;j++)a.points.push(f+Math.sin(i*j)*c,g+Math.cos(i*j)*d);PIXI.WebGLGraphics.buildLine(a,b),a.points=s}},PIXI.WebGLGraphics.buildLine=function(a,b){var c=0,d=a.points;if(0!==d.length){if(a.lineWidth%2)for(c=0;cc;c++)k=d[2*(c-1)],l=d[2*(c-1)+1],m=d[2*c],n=d[2*c+1],o=d[2*(c+1)],p=d[2*(c+1)+1],q=-(l-n),r=k-m,E=Math.sqrt(q*q+r*r),q/=E,r/=E,q*=K,r*=K,s=-(n-p),t=m-o,E=Math.sqrt(s*s+t*t),s/=E,t/=E,s*=K,t*=K,w=-r+l-(-r+n),x=-q+m-(-q+k),y=(-q+k)*(-r+n)-(-q+m)*(-r+l),z=-t+p-(-t+n),A=-s+m-(-s+o),B=(-s+o)*(-t+n)-(-s+m)*(-t+p),C=w*A-z*x,Math.abs(C)<.1?(C+=10.1,F.push(m-q,n-r,N,O,P,M),F.push(m+q,n+r,N,O,P,M)):(i=(x*B-A*y)/C,j=(z*y-w*B)/C,D=(i-m)*(i-m)+(j-n)+(j-n),D>19600?(u=q-s,v=r-t,E=Math.sqrt(u*u+v*v),u/=E,v/=E,u*=K,v*=K,F.push(m-u,n-v),F.push(N,O,P,M),F.push(m+u,n+v),F.push(N,O,P,M),F.push(m-u,n-v),F.push(N,O,P,M),I++):(F.push(i,j),F.push(N,O,P,M),F.push(m-(i-m),n-(j-n)),F.push(N,O,P,M)));for(k=d[2*(H-2)],l=d[2*(H-2)+1],m=d[2*(H-1)],n=d[2*(H-1)+1],q=-(l-n),r=k-m,E=Math.sqrt(q*q+r*r),q/=E,r/=E,q*=K,r*=K,F.push(m-q,n-r),F.push(N,O,P,M),F.push(m+q,n+r),F.push(N,O,P,M),G.push(J),c=0;I>c;c++)G.push(J++);G.push(J-1)}},PIXI.WebGLGraphics.buildComplexPoly=function(a,b){var c=a.points.slice();if(!(c.length<6)){var d=b.indices;b.points=c,b.alpha=a.fillAlpha,b.color=PIXI.hex2rgb(a.fillColor);for(var e,f,g=1/0,h=-(1/0),i=1/0,j=-(1/0),k=0;ke?e:g,h=e>h?e:h,i=i>f?f:i,j=f>j?f:j;c.push(g,i,h,i,h,j,g,j);var l=c.length/2;for(k=0;l>k;k++)d.push(k)}},PIXI.WebGLGraphics.buildPoly=function(a,b){var c=a.points;if(!(c.length<6)){var d=b.points,e=b.indices,f=c.length/2,g=PIXI.hex2rgb(a.fillColor),h=a.fillAlpha,i=g[0]*h,j=g[1]*h,k=g[2]*h,l=PIXI.EarCut.Triangulate(c,null,2);if(!l)return!1;var m=d.length/6,n=0;for(n=0;nn;n++)d.push(c[2*n],c[2*n+1],i,j,k,h);return!0}},PIXI.WebGLGraphics.graphicsDataPool=[],PIXI.WebGLGraphicsData=function(a){this.gl=a,this.color=[0,0,0],this.points=[],this.indices=[],this.buffer=a.createBuffer(),this.indexBuffer=a.createBuffer(),this.mode=1,this.alpha=1,this.dirty=!0},PIXI.WebGLGraphicsData.prototype.reset=function(){this.points=[],this.indices=[]},PIXI.WebGLGraphicsData.prototype.upload=function(){var a=this.gl;this.glPoints=new PIXI.Float32Array(this.points),a.bindBuffer(a.ARRAY_BUFFER,this.buffer),a.bufferData(a.ARRAY_BUFFER,this.glPoints,a.STATIC_DRAW),this.glIndicies=new PIXI.Uint16Array(this.indices),a.bindBuffer(a.ELEMENT_ARRAY_BUFFER,this.indexBuffer),a.bufferData(a.ELEMENT_ARRAY_BUFFER,this.glIndicies,a.STATIC_DRAW),this.dirty=!1},PIXI.CanvasGraphics=function(){},PIXI.CanvasGraphics.renderGraphics=function(a,b){var c=a.worldAlpha;a.dirty&&(this.updateGraphicsTint(a),a.dirty=!1);for(var d=0;dA?A:z,b.beginPath(),b.moveTo(v,w+z),b.lineTo(v,w+y-z),b.quadraticCurveTo(v,w+y,v+z,w+y),b.lineTo(v+x-z,w+y),b.quadraticCurveTo(v+x,w+y,v+x,w+y-z),b.lineTo(v+x,w+z),b.quadraticCurveTo(v+x,w,v+x-z,w),b.lineTo(v+z,w),b.quadraticCurveTo(v,w,v,w+z),b.closePath(),(e.fillColor||0===e.fillColor)&&(b.globalAlpha=e.fillAlpha*c,b.fillStyle="#"+("00000"+(0|g).toString(16)).substr(-6),b.fill()),e.lineWidth&&(b.globalAlpha=e.lineAlpha*c,b.strokeStyle="#"+("00000"+(0|h).toString(16)).substr(-6),b.stroke())}}},PIXI.CanvasGraphics.renderGraphicsMask=function(a,b){var c=a.graphicsData.length;if(0!==c){b.beginPath();for(var d=0;c>d;d++){var e=a.graphicsData[d],f=e.shape;if(e.type===PIXI.Graphics.POLY){var g=f.points;b.moveTo(g[0],g[1]);for(var h=1;hy?y:x,b.moveTo(t,u+x),b.lineTo(t,u+w-x),b.quadraticCurveTo(t,u+w,t+x,u+w),b.lineTo(t+v-x,u+w),b.quadraticCurveTo(t+v,u+w,t+v,u+w-x),b.lineTo(t+v,u+x),b.quadraticCurveTo(t+v,u,t+v-x,u),b.lineTo(t+x,u),b.quadraticCurveTo(t,u,t,u+x),b.closePath()}}}},PIXI.CanvasGraphics.updateGraphicsTint=function(a){if(16777215!==a.tint)for(var b=(a.tint>>16&255)/255,c=(a.tint>>8&255)/255,d=(255&a.tint)/255,e=0;e>16&255)/255*b*255<<16)+((g>>8&255)/255*c*255<<8)+(255&g)/255*d*255,f._lineTint=((h>>16&255)/255*b*255<<16)+((h>>8&255)/255*c*255<<8)+(255&h)/255*d*255}},c.Graphics=function(a,b,d){void 0===b&&(b=0),void 0===d&&(d=0),this.type=c.GRAPHICS,this.physicsType=c.SPRITE,this.anchor=new c.Point,PIXI.Graphics.call(this),c.Component.Core.init.call(this,a,b,d,"",null)},c.Graphics.prototype=Object.create(PIXI.Graphics.prototype),c.Graphics.prototype.constructor=c.Graphics,c.Component.Core.install.call(c.Graphics.prototype,["Angle","AutoCull","Bounds","Destroy","FixedToCamera","InputEnabled","InWorld","LifeSpan","PhysicsBody","Reset"]),c.Graphics.prototype.preUpdatePhysics=c.Component.PhysicsBody.preUpdate,c.Graphics.prototype.preUpdateLifeSpan=c.Component.LifeSpan.preUpdate,c.Graphics.prototype.preUpdateInWorld=c.Component.InWorld.preUpdate,c.Graphics.prototype.preUpdateCore=c.Component.Core.preUpdate,c.Graphics.prototype.preUpdate=function(){return this.preUpdatePhysics()&&this.preUpdateLifeSpan()&&this.preUpdateInWorld()?this.preUpdateCore():!1},c.Graphics.prototype.destroy=function(a){this.clear(),c.Component.Destroy.prototype.destroy.call(this,a)},c.Graphics.prototype.drawTriangle=function(a,b){void 0===b&&(b=!1);var d=new c.Polygon(a);if(b){var e=new c.Point(this.game.camera.x-a[0].x,this.game.camera.y-a[0].y),f=new c.Point(a[1].x-a[0].x,a[1].y-a[0].y),g=new c.Point(a[1].x-a[2].x,a[1].y-a[2].y),h=g.cross(f);e.dot(h)>0&&this.drawPolygon(d)}else this.drawPolygon(d)},c.Graphics.prototype.drawTriangles=function(a,b,d){void 0===d&&(d=!1);var e,f=new c.Point,g=new c.Point,h=new c.Point,i=[];if(b)if(a[0]instanceof c.Point)for(e=0;e0&&this.style.maxLinesh;h++){if(0===c){var i=this.style.strokeThickness+this.padding.x;i+=this.colors.length>0||this.strokeColors.length>0||this.fontWeights.length>0||this.fontStyles.length>0?this.measureLine(b[h]):this.context.measureText(b[h]).width,this.style.wordWrap&&(i-=this.context.measureText(" ").width)}else{var j=b[h].split(/(?:\t)/),i=this.padding.x+this.style.strokeThickness;if(Array.isArray(c))for(var k=0,l=0;l0||this.strokeColors.length>0||this.fontWeights.length>0||this.fontStyles.length>0?this.measureLine(j[l]):Math.ceil(this.context.measureText(j[l]).width),l>0&&(k+=c[l-1]),i=k+m}else for(var l=0;l0||this.strokeColors.length>0||this.fontWeights.length>0||this.fontStyles.length>0?this.measureLine(j[l]):Math.ceil(this.context.measureText(j[l]).width);var n=this.game.math.snapToCeil(i,c)-i;i+=n}}d[h]=Math.ceil(i),e=Math.max(e,d[h])}this.canvas.width=e*this._res;var o=f.fontSize+this.style.strokeThickness+this.padding.y,p=o*g,q=this._lineSpacing;0>q&&Math.abs(q)>o&&(q=-o),0!==q&&(p+=q>0?q*b.length:q*(b.length-1)),this.canvas.height=p*this._res,this.context.scale(this._res,this._res),navigator.isCocoonJS&&this.context.clearRect(0,0,this.canvas.width,this.canvas.height),this.style.backgroundColor&&(this.context.fillStyle=this.style.backgroundColor,this.context.fillRect(0,0,this.canvas.width,this.canvas.height)),this.context.fillStyle=this.style.fill,this.context.font=this.style.font,this.context.strokeStyle=this.style.stroke,this.context.textBaseline="alphabetic",this.context.lineWidth=this.style.strokeThickness,this.context.lineCap="round",this.context.lineJoin="round";var r,s;for(this._charCount=0,h=0;g>h;h++)r=this.style.strokeThickness/2,s=this.style.strokeThickness/2+h*o+f.ascent,h>0&&(s+=q*h),"right"===this.style.align?r+=e-d[h]:"center"===this.style.align&&(r+=(e-d[h])/2),this.autoRound&&(r=Math.round(r),s=Math.round(s)),this.colors.length>0||this.strokeColors.length>0||this.fontWeights.length>0||this.fontStyles.length>0?this.updateLine(b[h],r,s):(this.style.stroke&&this.style.strokeThickness&&(this.updateShadow(this.style.shadowStroke),0===c?this.context.strokeText(b[h],r,s):this.renderTabLine(b[h],r,s,!1)),this.style.fill&&(this.updateShadow(this.style.shadowFill),0===c?this.context.fillText(b[h],r,s):this.renderTabLine(b[h],r,s,!0)));this.updateTexture()},c.Text.prototype.renderTabLine=function(a,b,c,d){var e=a.split(/(?:\t)/),f=this.style.tabs,g=0;if(Array.isArray(f))for(var h=0,i=0;i0&&(h+=f[i-1]),g=b+h,d?this.context.fillText(e[i],g,c):this.context.strokeText(e[i],g,c);else for(var i=0;i0||this.fontStyles.length>0){var e=this.fontToComponents(this.context.font);this.fontStyles[this._charCount]&&(e.fontStyle=this.fontStyles[this._charCount]),this.fontWeights[this._charCount]&&(e.fontWeight=this.fontWeights[this._charCount]),this.context.font=this.componentsToFont(e)}this.style.stroke&&this.style.strokeThickness&&(this.strokeColors[this._charCount]&&(this.context.strokeStyle=this.strokeColors[this._charCount]),this.updateShadow(this.style.shadowStroke)),this.style.fill&&(this.colors[this._charCount]&&(this.context.fillStyle=this.colors[this._charCount]),this.updateShadow(this.style.shadowFill)),b+=this.context.measureText(d).width,this._charCount++}return Math.ceil(b)},c.Text.prototype.updateLine=function(a,b,c){for(var d=0;d0||this.fontStyles.length>0){var f=this.fontToComponents(this.context.font);this.fontStyles[this._charCount]&&(f.fontStyle=this.fontStyles[this._charCount]),this.fontWeights[this._charCount]&&(f.fontWeight=this.fontWeights[this._charCount]),this.context.font=this.componentsToFont(f)}this.style.stroke&&this.style.strokeThickness&&(this.strokeColors[this._charCount]&&(this.context.strokeStyle=this.strokeColors[this._charCount]),this.updateShadow(this.style.shadowStroke),this.context.strokeText(e,b,c)),this.style.fill&&(this.colors[this._charCount]&&(this.context.fillStyle=this.colors[this._charCount]),this.updateShadow(this.style.shadowFill),this.context.fillText(e,b,c)),b+=this.context.measureText(e).width,this._charCount++}},c.Text.prototype.clearColors=function(){return this.colors=[],this.strokeColors=[],this.dirty=!0,this},c.Text.prototype.clearFontValues=function(){return this.fontStyles=[],this.fontWeights=[],this.dirty=!0,this},c.Text.prototype.addColor=function(a,b){return this.colors[b]=a,this.dirty=!0,this},c.Text.prototype.addStrokeColor=function(a,b){return this.strokeColors[b]=a,this.dirty=!0,this},c.Text.prototype.addFontStyle=function(a,b){return this.fontStyles[b]=a,this.dirty=!0,this},c.Text.prototype.addFontWeight=function(a,b){return this.fontWeights[b]=a,this.dirty=!0,this},c.Text.prototype.precalculateWordWrap=function(a){this.texture.baseTexture.resolution=this._res,this.context.font=this.style.font;var b=this.runWordWrap(a);return b.split(/(?:\r\n|\r|\n)/)},c.Text.prototype.runWordWrap=function(a){return this.useAdvancedWrap?this.advancedWordWrap(a):this.basicWordWrap(a)},c.Text.prototype.advancedWordWrap=function(a){for(var b=this.context,c=this.style.wordWrapWidth,d="",e=a.replace(/ +/gi," ").split(/\r?\n/gi),f=e.length,g=0;f>g;g++){var h=e[g],i="";h=h.replace(/^ *|\s*$/gi,"");var j=b.measureText(h).width;if(c>j)d+=h+"\n";else{for(var k=c,l=h.split(" "),m=0;mk){if(0===m){for(var q=o;q.length&&(q=q.slice(0,-1),p=b.measureText(q).width,!(k>=p)););if(!q.length)throw new Error("This text's wordWrapWidth setting is less than a single character!");var r=n.substr(q.length);l[m]=r,i+=q}var s=l[m].length?m:m+1,t=l.slice(s).join(" ").replace(/[ \n]*$/gi,"");e[g+1]=t+" "+(e[g+1]||""),f=e.length;break}i+=o,k-=p}d+=i.replace(/[ \n]*$/gi,"")+"\n"}}return d=d.replace(/[\s|\n]*$/gi,"")},c.Text.prototype.basicWordWrap=function(a){for(var b="",c=a.split("\n"),d=0;de?(g>0&&(b+="\n"),b+=f[g]+" ",e=this.style.wordWrapWidth-h):(e-=i,b+=f[g]+" ")}dd&&(this.style.wordWrapWidth=d)),this.updateTexture(),this},c.Text.prototype.updateTexture=function(){var a=this.texture.baseTexture,b=this.texture.crop,c=this.texture.frame,d=this.canvas.width,e=this.canvas.height;if(a.width=d,a.height=e,b.width=d,b.height=e,c.width=d,c.height=e,this.texture.width=d,this.texture.height=e,this._width=d,this._height=e,this.textBounds){var f=this.textBounds.x,g=this.textBounds.y;"right"===this.style.boundsAlignH?f+=this.textBounds.width-this.canvas.width:"center"===this.style.boundsAlignH&&(f+=this.textBounds.halfWidth-this.canvas.width/2),"bottom"===this.style.boundsAlignV?g+=this.textBounds.height-this.canvas.height:"middle"===this.style.boundsAlignV&&(g+=this.textBounds.halfHeight-this.canvas.height/2),this.pivot.x=-f,this.pivot.y=-g}this.renderable=0!==d&&0!==e,this.texture.requiresReTint=!0,this.texture.baseTexture.dirty()},c.Text.prototype._renderWebGL=function(a){this.dirty&&(this.updateText(),this.dirty=!1),PIXI.Sprite.prototype._renderWebGL.call(this,a)},c.Text.prototype._renderCanvas=function(a){this.dirty&&(this.updateText(),this.dirty=!1),PIXI.Sprite.prototype._renderCanvas.call(this,a)},c.Text.prototype.determineFontProperties=function(a){var b=c.Text.fontPropertiesCache[a];if(!b){b={};var d=c.Text.fontPropertiesCanvas,e=c.Text.fontPropertiesContext;e.font=a;var f=Math.ceil(e.measureText("|MÉq").width),g=Math.ceil(e.measureText("|MÉq").width),h=2*g;if(g=1.4*g|0,d.width=f,d.height=h,e.fillStyle="#f00",e.fillRect(0,0,f,h),e.font=a,e.textBaseline="alphabetic",e.fillStyle="#000",e.fillText("|MÉq",0,g),!e.getImageData(0,0,f,h))return b.ascent=g,b.descent=g+6,b.fontSize=b.ascent+b.descent,c.Text.fontPropertiesCache[a]=b,b;var i,j,k=e.getImageData(0,0,f,h).data,l=k.length,m=4*f,n=0,o=!1;for(i=0;g>i;i++){for(j=0;m>j;j+=4)if(255!==k[n+j]){o=!0;break}if(o)break;n+=m}for(b.ascent=g-i,n=l-m,o=!1,i=h;i>g;i--){for(j=0;m>j;j+=4)if(255!==k[n+j]){o=!0;break}if(o)break;n-=m}b.descent=i-g,b.descent+=6,b.fontSize=b.ascent+b.descent,c.Text.fontPropertiesCache[a]=b}return b},c.Text.prototype.getBounds=function(a){return this.dirty&&(this.updateText(),this.dirty=!1),PIXI.Sprite.prototype.getBounds.call(this,a)},Object.defineProperty(c.Text.prototype,"text",{get:function(){return this._text},set:function(a){a!==this._text&&(this._text=a.toString()||"",this.dirty=!0,this.parent&&this.updateTransform())}}),Object.defineProperty(c.Text.prototype,"cssFont",{get:function(){return this.componentsToFont(this._fontComponents)},set:function(a){a=a||"bold 20pt Arial",this._fontComponents=this.fontToComponents(a),this.updateFont(this._fontComponents)}}),Object.defineProperty(c.Text.prototype,"font",{get:function(){return this._fontComponents.fontFamily},set:function(a){a=a||"Arial",a=a.trim(),/^(?:inherit|serif|sans-serif|cursive|fantasy|monospace)$/.exec(a)||/['",]/.exec(a)||(a="'"+a+"'"),this._fontComponents.fontFamily=a,this.updateFont(this._fontComponents)}}),Object.defineProperty(c.Text.prototype,"fontSize",{get:function(){var a=this._fontComponents.fontSize;return a&&/(?:^0$|px$)/.exec(a)?parseInt(a,10):a},set:function(a){a=a||"0","number"==typeof a&&(a+="px"),this._fontComponents.fontSize=a,this.updateFont(this._fontComponents)}}),Object.defineProperty(c.Text.prototype,"fontWeight",{get:function(){return this._fontComponents.fontWeight||"normal"},set:function(a){a=a||"normal",this._fontComponents.fontWeight=a,this.updateFont(this._fontComponents)}}),Object.defineProperty(c.Text.prototype,"fontStyle",{get:function(){return this._fontComponents.fontStyle||"normal"},set:function(a){a=a||"normal",this._fontComponents.fontStyle=a,this.updateFont(this._fontComponents)}}),Object.defineProperty(c.Text.prototype,"fontVariant",{get:function(){return this._fontComponents.fontVariant||"normal"},set:function(a){a=a||"normal",this._fontComponents.fontVariant=a,this.updateFont(this._fontComponents)}}),Object.defineProperty(c.Text.prototype,"fill",{get:function(){return this.style.fill},set:function(a){a!==this.style.fill&&(this.style.fill=a,this.dirty=!0)}}),Object.defineProperty(c.Text.prototype,"align",{get:function(){return this.style.align},set:function(a){a!==this.style.align&&(this.style.align=a,this.dirty=!0)}}),Object.defineProperty(c.Text.prototype,"resolution",{get:function(){return this._res},set:function(a){a!==this._res&&(this._res=a,this.dirty=!0)}}),Object.defineProperty(c.Text.prototype,"tabs",{get:function(){return this.style.tabs},set:function(a){a!==this.style.tabs&&(this.style.tabs=a,this.dirty=!0)}}),Object.defineProperty(c.Text.prototype,"boundsAlignH",{get:function(){return this.style.boundsAlignH},set:function(a){a!==this.style.boundsAlignH&&(this.style.boundsAlignH=a,this.dirty=!0)}}),Object.defineProperty(c.Text.prototype,"boundsAlignV",{get:function(){return this.style.boundsAlignV},set:function(a){a!==this.style.boundsAlignV&&(this.style.boundsAlignV=a,this.dirty=!0)}}),Object.defineProperty(c.Text.prototype,"stroke",{get:function(){return this.style.stroke},set:function(a){a!==this.style.stroke&&(this.style.stroke=a,this.dirty=!0)}}),Object.defineProperty(c.Text.prototype,"strokeThickness",{get:function(){return this.style.strokeThickness},set:function(a){a!==this.style.strokeThickness&&(this.style.strokeThickness=a,this.dirty=!0)}}),Object.defineProperty(c.Text.prototype,"wordWrap",{get:function(){return this.style.wordWrap},set:function(a){a!==this.style.wordWrap&&(this.style.wordWrap=a,this.dirty=!0)}}),Object.defineProperty(c.Text.prototype,"wordWrapWidth",{get:function(){return this.style.wordWrapWidth},set:function(a){a!==this.style.wordWrapWidth&&(this.style.wordWrapWidth=a,this.dirty=!0)}}),Object.defineProperty(c.Text.prototype,"lineSpacing",{get:function(){return this._lineSpacing},set:function(a){a!==this._lineSpacing&&(this._lineSpacing=parseFloat(a),this.dirty=!0,this.parent&&this.updateTransform())}}),Object.defineProperty(c.Text.prototype,"shadowOffsetX",{get:function(){return this.style.shadowOffsetX},set:function(a){a!==this.style.shadowOffsetX&&(this.style.shadowOffsetX=a,this.dirty=!0)}}),Object.defineProperty(c.Text.prototype,"shadowOffsetY",{get:function(){return this.style.shadowOffsetY},set:function(a){a!==this.style.shadowOffsetY&&(this.style.shadowOffsetY=a,this.dirty=!0)}}),Object.defineProperty(c.Text.prototype,"shadowColor",{get:function(){return this.style.shadowColor},set:function(a){a!==this.style.shadowColor&&(this.style.shadowColor=a,this.dirty=!0)}}),Object.defineProperty(c.Text.prototype,"shadowBlur",{get:function(){return this.style.shadowBlur},set:function(a){a!==this.style.shadowBlur&&(this.style.shadowBlur=a,this.dirty=!0)}}),Object.defineProperty(c.Text.prototype,"shadowStroke",{get:function(){return this.style.shadowStroke},set:function(a){a!==this.style.shadowStroke&&(this.style.shadowStroke=a,this.dirty=!0)}}),Object.defineProperty(c.Text.prototype,"shadowFill",{get:function(){return this.style.shadowFill},set:function(a){a!==this.style.shadowFill&&(this.style.shadowFill=a,this.dirty=!0)}}),Object.defineProperty(c.Text.prototype,"width",{get:function(){return this.dirty&&(this.updateText(),this.dirty=!1),this.scale.x*this.texture.frame.width},set:function(a){this.scale.x=a/this.texture.frame.width,this._width=a}}),Object.defineProperty(c.Text.prototype,"height",{get:function(){return this.dirty&&(this.updateText(),this.dirty=!1),this.scale.y*this.texture.frame.height},set:function(a){this.scale.y=a/this.texture.frame.height,this._height=a}}),c.Text.fontPropertiesCache={},c.Text.fontPropertiesCanvas=document.createElement("canvas"),c.Text.fontPropertiesContext=c.Text.fontPropertiesCanvas.getContext("2d"),c.BitmapText=function(a,b,d,e,f,g,h){b=b||0,d=d||0,e=e||"",f=f||"",g=g||32,h=h||"left",PIXI.DisplayObjectContainer.call(this),this.type=c.BITMAPTEXT,this.physicsType=c.SPRITE,this.textWidth=0,this.textHeight=0,this.anchor=new c.Point,this._prevAnchor=new c.Point,this._glyphs=[],this._maxWidth=0,this._text=f.toString()||"",this._data=a.cache.getBitmapFont(e),this._font=e,this._fontSize=g,this._align=h,this._tint=16777215,this.updateText(),this.dirty=!1,c.Component.Core.init.call(this,a,b,d,"",null)},c.BitmapText.prototype=Object.create(PIXI.DisplayObjectContainer.prototype),c.BitmapText.prototype.constructor=c.BitmapText,c.Component.Core.install.call(c.BitmapText.prototype,["Angle","AutoCull","Bounds","Destroy","FixedToCamera","InputEnabled","InWorld","LifeSpan","PhysicsBody","Reset"]), +c.BitmapText.prototype.preUpdatePhysics=c.Component.PhysicsBody.preUpdate,c.BitmapText.prototype.preUpdateLifeSpan=c.Component.LifeSpan.preUpdate,c.BitmapText.prototype.preUpdateInWorld=c.Component.InWorld.preUpdate,c.BitmapText.prototype.preUpdateCore=c.Component.Core.preUpdate,c.BitmapText.prototype.preUpdate=function(){return this.preUpdatePhysics()&&this.preUpdateLifeSpan()&&this.preUpdateInWorld()?this.preUpdateCore():!1},c.BitmapText.prototype.postUpdate=function(){c.Component.PhysicsBody.postUpdate.call(this),c.Component.FixedToCamera.postUpdate.call(this),this.body&&this.body.type===c.Physics.ARCADE&&(this.textWidth===this.body.sourceWidth&&this.textHeight===this.body.sourceHeight||this.body.setSize(this.textWidth,this.textHeight))},c.BitmapText.prototype.setText=function(a){this.text=a},c.BitmapText.prototype.scanLine=function(a,b,c){for(var d=0,e=0,f=-1,g=0,h=null,i=this._maxWidth>0?this._maxWidth:null,j=[],k=0;k=i&&f>-1)return{width:g||e,text:c.substr(0,k-(k-f)),end:l,chars:j};e+=(n.xAdvance+p)*b,j.push(d+(n.xOffset+p)*b),d+=(n.xAdvance+p)*b,h=m}return{width:e,text:c,end:l,chars:j}},c.BitmapText.prototype.cleanText=function(a,b){void 0===b&&(b="");var c=this._data.font;if(!c)return"";for(var d=/\r\n|\n\r|\n|\r/g,e=a.replace(d,"\n").split("\n"),f=0;fthis.textWidth&&(this.textWidth=f.width),e+=a.lineHeight*c,b=b.substr(f.text.length+1)}while(f.end===!1);this.textHeight=e;for(var g=0,h=0,i=this.textWidth*this.anchor.x,j=this.textHeight*this.anchor.y,k=0;k0&&(this._fontSize=a,this.updateText())}}),Object.defineProperty(c.BitmapText.prototype,"text",{get:function(){return this._text},set:function(a){a!==this._text&&(this._text=a.toString()||"",this.updateText())}}),Object.defineProperty(c.BitmapText.prototype,"maxWidth",{get:function(){return this._maxWidth},set:function(a){a!==this._maxWidth&&(this._maxWidth=a,this.updateText())}}),Object.defineProperty(c.BitmapText.prototype,"smoothed",{get:function(){return!this._data.base.scaleMode},set:function(a){a?this._data.base.scaleMode=0:this._data.base.scaleMode=1}}),c.RetroFont=function(a,b,d,e,f,g,h,i,j,k){if(!a.cache.checkImageKey(b))return!1;void 0!==g&&null!==g||(g=a.cache.getImage(b).width/d),this.characterWidth=d,this.characterHeight=e,this.characterSpacingX=h||0,this.characterSpacingY=i||0,this.characterPerRow=g,this.offsetX=j||0,this.offsetY=k||0,this.align="left",this.multiLine=!1,this.autoUpperCase=!0,this.customSpacingX=0,this.customSpacingY=0,this.fixedWidth=0,this.fontSet=a.cache.getImage(b),this._text="",this.grabData=[],this.frameData=new c.FrameData;for(var l=this.offsetX,m=this.offsetY,n=0,o=0;o?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~",c.RetroFont.TEXT_SET2=" !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ",c.RetroFont.TEXT_SET3="ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789 ",c.RetroFont.TEXT_SET4="ABCDEFGHIJKLMNOPQRSTUVWXYZ 0123456789",c.RetroFont.TEXT_SET5="ABCDEFGHIJKLMNOPQRSTUVWXYZ.,/() '!?-*:0123456789",c.RetroFont.TEXT_SET6="ABCDEFGHIJKLMNOPQRSTUVWXYZ!?:;0123456789\"(),-.' ",c.RetroFont.TEXT_SET7="AGMSY+:4BHNTZ!;5CIOU.?06DJPV,(17EKQW\")28FLRX-'39",c.RetroFont.TEXT_SET8="0123456789 .ABCDEFGHIJKLMNOPQRSTUVWXYZ",c.RetroFont.TEXT_SET9="ABCDEFGHIJKLMNOPQRSTUVWXYZ()-0123456789.:,'\"?!",c.RetroFont.TEXT_SET10="ABCDEFGHIJKLMNOPQRSTUVWXYZ",c.RetroFont.TEXT_SET11="ABCDEFGHIJKLMNOPQRSTUVWXYZ.,\"-+!?()':;0123456789",c.RetroFont.prototype.setFixedWidth=function(a,b){void 0===b&&(b="left"),this.fixedWidth=a,this.align=b},c.RetroFont.prototype.setText=function(a,b,c,d,e,f){this.multiLine=b||!1,this.customSpacingX=c||0,this.customSpacingY=d||0,this.align=e||"left",f?this.autoUpperCase=!1:this.autoUpperCase=!0,a.length>0&&(this.text=a)},c.RetroFont.prototype.buildRetroFontText=function(){var a=0,b=0;if(this.clear(),this.multiLine){var d=this._text.split("\n");this.fixedWidth>0?this.resize(this.fixedWidth,d.length*(this.characterHeight+this.customSpacingY)-this.customSpacingY,!0):this.resize(this.getLongestLine()*(this.characterWidth+this.customSpacingX),d.length*(this.characterHeight+this.customSpacingY)-this.customSpacingY,!0);for(var e=0;ea&&(a=0),this.pasteLine(d[e],a,b,this.customSpacingX),b+=this.characterHeight+this.customSpacingY}else this.fixedWidth>0?this.resize(this.fixedWidth,this.characterHeight,!0):this.resize(this._text.length*(this.characterWidth+this.customSpacingX),this.characterHeight,!0),a=0,this.align===c.RetroFont.ALIGN_RIGHT?a=this.width-this._text.length*(this.characterWidth+this.customSpacingX):this.align===c.RetroFont.ALIGN_CENTER&&(a=this.width/2-this._text.length*(this.characterWidth+this.customSpacingX)/2,a+=this.customSpacingX/2),0>a&&(a=0),this.pasteLine(this._text,a,0,this.customSpacingX);this.requiresReTint=!0},c.RetroFont.prototype.pasteLine=function(a,b,c,d){for(var e=0;e=0&&(this.stamp.frame=this.grabData[a.charCodeAt(e)],this.renderXY(this.stamp,b,c,!1),b+=this.characterWidth+d,b>this.width))break},c.RetroFont.prototype.getLongestLine=function(){var a=0;if(this._text.length>0)for(var b=this._text.split("\n"),c=0;ca&&(a=b[c].length);return a},c.RetroFont.prototype.removeUnsupportedCharacters=function(a){for(var b="",c=0;c=0||!a&&"\n"===d)&&(b=b.concat(d))}return b},c.RetroFont.prototype.updateOffset=function(a,b){if(this.offsetX!==a||this.offsetY!==b){for(var c=a-this.offsetX,d=b-this.offsetY,e=this.game.cache.getFrameData(this.stamp.key).getFrames(),f=e.length;f--;)e[f].x+=c,e[f].y+=d;this.buildRetroFontText()}},Object.defineProperty(c.RetroFont.prototype,"text",{get:function(){return this._text},set:function(a){var b;b=this.autoUpperCase?a.toUpperCase():a,b!==this._text&&(this._text=b,this.removeUnsupportedCharacters(this.multiLine),this.buildRetroFontText())}}),Object.defineProperty(c.RetroFont.prototype,"smoothed",{get:function(){return this.stamp.smoothed},set:function(a){this.stamp.smoothed=a,this.buildRetroFontText()}}),c.Rope=function(a,b,d,e,f,g){this.points=[],this.points=g,this._hasUpdateAnimation=!1,this._updateAnimationCallback=null,b=b||0,d=d||0,e=e||null,f=f||null,this.type=c.ROPE,PIXI.Rope.call(this,c.Cache.DEFAULT,this.points),c.Component.Core.init.call(this,a,b,d,e,f)},c.Rope.prototype=Object.create(PIXI.Rope.prototype),c.Rope.prototype.constructor=c.Rope,c.Component.Core.install.call(c.Rope.prototype,["Angle","Animation","AutoCull","Bounds","BringToTop","Crop","Delta","Destroy","FixedToCamera","InWorld","LifeSpan","LoadTexture","Overlap","PhysicsBody","Reset","ScaleMinMax","Smoothed"]),c.Rope.prototype.preUpdatePhysics=c.Component.PhysicsBody.preUpdate,c.Rope.prototype.preUpdateLifeSpan=c.Component.LifeSpan.preUpdate,c.Rope.prototype.preUpdateInWorld=c.Component.InWorld.preUpdate,c.Rope.prototype.preUpdateCore=c.Component.Core.preUpdate,c.Rope.prototype.preUpdate=function(){return this.preUpdatePhysics()&&this.preUpdateLifeSpan()&&this.preUpdateInWorld()?this.preUpdateCore():!1},c.Rope.prototype.update=function(){this._hasUpdateAnimation&&this.updateAnimation.call(this)},c.Rope.prototype.reset=function(a,b){return c.Component.Reset.prototype.reset.call(this,a,b),this},Object.defineProperty(c.Rope.prototype,"updateAnimation",{get:function(){return this._updateAnimation},set:function(a){a&&"function"==typeof a?(this._hasUpdateAnimation=!0,this._updateAnimation=a):(this._hasUpdateAnimation=!1,this._updateAnimation=null)}}),Object.defineProperty(c.Rope.prototype,"segments",{get:function(){for(var a,b,d,e,f,g,h,i,j=[],k=0;k=1)&&(l.touch=!0),(window.navigator.msPointerEnabled||window.navigator.pointerEnabled)&&(l.mspointer=!0),l.cocoonJS||("onwheel"in window||l.ie&&"WheelEvent"in window?l.wheelEvent="wheel":"onmousewheel"in window?l.wheelEvent="mousewheel":l.firefox&&"MouseScrollEvent"in window&&(l.wheelEvent="DOMMouseScroll"))}function d(){for(var a=["requestFullscreen","requestFullScreen","webkitRequestFullscreen","webkitRequestFullScreen","msRequestFullscreen","msRequestFullScreen","mozRequestFullScreen","mozRequestFullscreen"],b=document.createElement("div"),c=0;c=9&&/Mac OS X (\d+)_(\d+)/.test(navigator.userAgent)){var c=parseInt(RegExp.$1,10),d=parseInt(RegExp.$2,10);(10===c&&d>=11||c>10)&&(l.dolby=!0)}}catch(e){}}function h(){l.pixelRatio=window.devicePixelRatio||1,l.iPhone=-1!=navigator.userAgent.toLowerCase().indexOf("iphone"),l.iPhone4=2==l.pixelRatio&&l.iPhone,l.iPad=-1!=navigator.userAgent.toLowerCase().indexOf("ipad"),"undefined"!=typeof Int8Array?l.typedArray=!0:l.typedArray=!1,"undefined"!=typeof ArrayBuffer&&"undefined"!=typeof Uint8Array&&"undefined"!=typeof Uint32Array&&(l.littleEndian=i(),l.LITTLE_ENDIAN=l.littleEndian),l.support32bit="undefined"!=typeof ArrayBuffer&&"undefined"!=typeof Uint8ClampedArray&&"undefined"!=typeof Int32Array&&null!==l.littleEndian&&j(),navigator.vibrate=navigator.vibrate||navigator.webkitVibrate||navigator.mozVibrate||navigator.msVibrate,navigator.vibrate&&(l.vibration=!0)}function i(){var a=new ArrayBuffer(4),b=new Uint8Array(a),c=new Uint32Array(a);return b[0]=161,b[1]=178,b[2]=195,b[3]=212,3569595041==c[0]?!0:2712847316==c[0]?!1:null}function j(){if(void 0===Uint8ClampedArray)return!1;var a=PIXI.CanvasPool.create(this,1,1),b=a.getContext("2d");if(!b)return!1;var c=b.createImageData(1,1);return PIXI.CanvasPool.remove(this),c.data instanceof Uint8ClampedArray}function k(){var a,b=document.createElement("p"),c={webkitTransform:"-webkit-transform",OTransform:"-o-transform",msTransform:"-ms-transform",MozTransform:"-moz-transform",transform:"transform"};document.body.insertBefore(b,null);for(var d in c)void 0!==b.style[d]&&(b.style[d]="translate3d(1px,1px,1px)",a=window.getComputedStyle(b).getPropertyValue(c[d]));document.body.removeChild(b),l.css3D=void 0!==a&&a.length>0&&"none"!==a}var l=this;a(),e(),g(),f(),k(),h(),b(),d(),c()},c.Device.canPlayAudio=function(a){return"mp3"===a&&this.mp3?!0:"ogg"===a&&(this.ogg||this.opus)?!0:"m4a"===a&&this.m4a?!0:"opus"===a&&this.opus?!0:"wav"===a&&this.wav?!0:"webm"===a&&this.webm?!0:!("mp4"!==a||!this.dolby)},c.Device.canPlayVideo=function(a){return"webm"===a&&(this.webmVideo||this.vp9Video)?!0:"mp4"===a&&(this.mp4Video||this.h264Video)?!0:"ogg"!==a&&"ogv"!==a||!this.oggVideo?!("mpeg"!==a||!this.hlsVideo):!0},c.Device.isConsoleOpen=function(){return window.console&&window.console.firebug?!0:window.console&&(console.profile(),console.profileEnd(),console.clear&&console.clear(),console.profiles)?console.profiles.length>0:!1},c.Device.isAndroidStockBrowser=function(){var a=window.navigator.userAgent.match(/Android.*AppleWebKit\/([\d.]+)/);return a&&a[1]<537},c.Canvas={create:function(a,b,c,d,e){b=b||256,c=c||256;var f=e?document.createElement("canvas"):PIXI.CanvasPool.create(a,b,c);return"string"==typeof d&&""!==d&&(f.id=d),f.width=b,f.height=c,f.style.display="block",f},setBackgroundColor:function(a,b){return b=b||"rgb(0,0,0)",a.style.backgroundColor=b,a},setTouchAction:function(a,b){return b=b||"none",a.style.msTouchAction=b,a.style["ms-touch-action"]=b,a.style["touch-action"]=b,a},setUserSelect:function(a,b){return b=b||"none",a.style["-webkit-touch-callout"]=b,a.style["-webkit-user-select"]=b,a.style["-khtml-user-select"]=b,a.style["-moz-user-select"]=b,a.style["-ms-user-select"]=b,a.style["user-select"]=b,a.style["-webkit-tap-highlight-color"]="rgba(0, 0, 0, 0)",a},addToDOM:function(a,b,c){var d;return void 0===c&&(c=!0),b&&("string"==typeof b?d=document.getElementById(b):"object"==typeof b&&1===b.nodeType&&(d=b)),d||(d=document.body),c&&d.style&&(d.style.overflow="hidden"),d.appendChild(a),a},removeFromDOM:function(a){a.parentNode&&a.parentNode.removeChild(a)},setTransform:function(a,b,c,d,e,f,g){return a.setTransform(d,f,g,e,b,c),a},setSmoothingEnabled:function(a,b){var d=c.Canvas.getSmoothingPrefix(a);return d&&(a[d]=b),a},getSmoothingPrefix:function(a){var b=["i","webkitI","msI","mozI","oI"];for(var c in b){var d=b[c]+"mageSmoothingEnabled";if(d in a)return d}return null},getSmoothingEnabled:function(a){var b=c.Canvas.getSmoothingPrefix(a);return b?a[b]:void 0},setImageRenderingCrisp:function(a){for(var b=["optimizeSpeed","crisp-edges","-moz-crisp-edges","-webkit-optimize-contrast","optimize-contrast","pixelated"],c=0;ca},fuzzyGreaterThan:function(a,b,c){return void 0===c&&(c=1e-4),a>b-c},fuzzyCeil:function(a,b){return void 0===b&&(b=1e-4),Math.ceil(a-b)},fuzzyFloor:function(a,b){return void 0===b&&(b=1e-4),Math.floor(a+b)},average:function(){for(var a=0,b=arguments.length,c=0;b>c;c++)a+=+arguments[c];return a/b},shear:function(a){return a%1},snapTo:function(a,b,c){return void 0===c&&(c=0),0===b?a:(a-=c,a=b*Math.round(a/b),c+a)},snapToFloor:function(a,b,c){return void 0===c&&(c=0),0===b?a:(a-=c,a=b*Math.floor(a/b),c+a)},snapToCeil:function(a,b,c){return void 0===c&&(c=0),0===b?a:(a-=c,a=b*Math.ceil(a/b),c+a)},roundTo:function(a,b,c){void 0===b&&(b=0),void 0===c&&(c=10);var d=Math.pow(c,-b);return Math.round(a*d)/d},floorTo:function(a,b,c){void 0===b&&(b=0),void 0===c&&(c=10);var d=Math.pow(c,-b);return Math.floor(a*d)/d},ceilTo:function(a,b,c){void 0===b&&(b=0),void 0===c&&(c=10);var d=Math.pow(c,-b);return Math.ceil(a*d)/d},angleBetween:function(a,b,c,d){return Math.atan2(d-b,c-a)},angleBetweenY:function(a,b,c,d){return Math.atan2(c-a,d-b)},angleBetweenPoints:function(a,b){return Math.atan2(b.y-a.y,b.x-a.x)},angleBetweenPointsY:function(a,b){return Math.atan2(b.x-a.x,b.y-a.y)},reverseAngle:function(a){return this.normalizeAngle(a+Math.PI,!0)},normalizeAngle:function(a){return a%=2*Math.PI,a>=0?a:a+2*Math.PI},maxAdd:function(a,b,c){return Math.min(a+b,c)},minSub:function(a,b,c){return Math.max(a-b,c)},wrap:function(a,b,c){var d=c-b;if(0>=d)return 0;var e=(a-b)%d;return 0>e&&(e+=d),e+b},wrapValue:function(a,b,c){var d;return a=Math.abs(a),b=Math.abs(b),c=Math.abs(c),d=(a+b)%c},isOdd:function(a){return!!(1&a)},isEven:function(a){return!(1&a)},min:function(){if(1===arguments.length&&"object"==typeof arguments[0])var a=arguments[0];else var a=arguments;for(var b=1,c=0,d=a.length;d>b;b++)a[b]b;b++)a[b]>a[c]&&(c=b);return a[c]},minProperty:function(a){if(2===arguments.length&&"object"==typeof arguments[1])var b=arguments[1];else var b=arguments.slice(1);for(var c=1,d=0,e=b.length;e>c;c++)b[c][a]c;c++)b[c][a]>b[d][a]&&(d=c);return b[d][a]},wrapAngle:function(a,b){return b?this.wrap(a,-Math.PI,Math.PI):this.wrap(a,-180,180)},linearInterpolation:function(a,b){var c=a.length-1,d=c*b,e=Math.floor(d);return 0>b?this.linear(a[0],a[1],d):b>1?this.linear(a[c],a[c-1],c-d):this.linear(a[e],a[e+1>c?c:e+1],d-e)},bezierInterpolation:function(a,b){for(var c=0,d=a.length-1,e=0;d>=e;e++)c+=Math.pow(1-b,d-e)*Math.pow(b,e)*a[e]*this.bernstein(d,e);return c},catmullRomInterpolation:function(a,b){var c=a.length-1,d=c*b,e=Math.floor(d);return a[0]===a[c]?(0>b&&(e=Math.floor(d=c*(1+b))),this.catmullRom(a[(e-1+c)%c],a[e],a[(e+1)%c],a[(e+2)%c],d-e)):0>b?a[0]-(this.catmullRom(a[0],a[0],a[1],a[1],-d)-a[0]):b>1?a[c]-(this.catmullRom(a[c],a[c],a[c-1],a[c-1],d-c)-a[c]):this.catmullRom(a[e?e-1:0],a[e],a[e+1>c?c:e+1],a[e+2>c?c:e+2],d-e)},linear:function(a,b,c){return(b-a)*c+a},bernstein:function(a,b){return this.factorial(a)/this.factorial(b)/this.factorial(a-b)},factorial:function(a){if(0===a)return 1;for(var b=a;--a;)b*=a;return b},catmullRom:function(a,b,c,d,e){var f=.5*(c-a),g=.5*(d-b),h=e*e,i=e*h;return(2*b-2*c+f+g)*i+(-3*b+3*c-2*f-g)*h+f*e+b},difference:function(a,b){return Math.abs(a-b)},roundAwayFromZero:function(a){return a>0?Math.ceil(a):Math.floor(a)},sinCosGenerator:function(a,b,c,d){void 0===b&&(b=1),void 0===c&&(c=1),void 0===d&&(d=1);for(var e=b,f=c,g=d*Math.PI/a,h=[],i=[],j=0;a>j;j++)f-=e*g,e+=f*g,h[j]=f,i[j]=e;return{sin:i,cos:h,length:a}},distance:function(a,b,c,d){var e=a-c,f=b-d;return Math.sqrt(e*e+f*f)},distanceSq:function(a,b,c,d){var e=a-c,f=b-d;return e*e+f*f},distancePow:function(a,b,c,d,e){return void 0===e&&(e=2),Math.sqrt(Math.pow(c-a,e)+Math.pow(d-b,e))},clamp:function(a,b,c){return b>a?b:a>c?c:a},clampBottom:function(a,b){return b>a?b:a},within:function(a,b,c){return Math.abs(a-b)<=c},mapLinear:function(a,b,c,d,e){return d+(a-b)*(e-d)/(c-b)},smoothstep:function(a,b,c){return a=Math.max(0,Math.min(1,(a-b)/(c-b))),a*a*(3-2*a)},smootherstep:function(a,b,c){return a=Math.max(0,Math.min(1,(a-b)/(c-b))),a*a*a*(a*(6*a-15)+10)},sign:function(a){return 0>a?-1:a>0?1:0},percent:function(a,b,c){return void 0===c&&(c=0),a>b||c>b?1:c>a||c>a?0:(a-c)/b}};var k=Math.PI/180,l=180/Math.PI;return c.Math.degToRad=function(a){return a*k},c.Math.radToDeg=function(a){return a*l},c.RandomDataGenerator=function(a){void 0===a&&(a=[]),this.c=1,this.s0=0,this.s1=0,this.s2=0,"string"==typeof a?this.state(a):this.sow(a)},c.RandomDataGenerator.prototype={rnd:function(){var a=2091639*this.s0+2.3283064365386963e-10*this.c;return this.c=0|a,this.s0=this.s1,this.s1=this.s2,this.s2=a-this.c,this.s2},sow:function(a){if(this.s0=this.hash(" "), +this.s1=this.hash(this.s0),this.s2=this.hash(this.s1),this.c=1,a)for(var b=0;b>>0,b-=d,b*=d,d=b>>>0,b-=d,d+=4294967296*b;return 2.3283064365386963e-10*(d>>>0)},integer:function(){return 4294967296*this.rnd.apply(this)},frac:function(){return this.rnd.apply(this)+1.1102230246251565e-16*(2097152*this.rnd.apply(this)|0)},real:function(){return this.integer()+this.frac()},integerInRange:function(a,b){return Math.floor(this.realInRange(0,b-a+1)+a)},between:function(a,b){return this.integerInRange(a,b)},realInRange:function(a,b){return this.frac()*(b-a)+a},normal:function(){return 1-2*this.frac()},uuid:function(){var a="",b="";for(b=a="";a++<36;b+=~a%5|3*a&4?(15^a?8^this.frac()*(20^a?16:4):4).toString(16):"-");return b},pick:function(a){return a[this.integerInRange(0,a.length-1)]},sign:function(){return this.pick([-1,1])},weightedPick:function(a){return a[~~(Math.pow(this.frac(),2)*(a.length-1)+.5)]},timestamp:function(a,b){return this.realInRange(a||9466848e5,b||1577862e6)},angle:function(){return this.integerInRange(-180,180)},state:function(a){return"string"==typeof a&&a.match(/^!rnd/)&&(a=a.split(","),this.c=parseFloat(a[1]),this.s0=parseFloat(a[2]),this.s1=parseFloat(a[3]),this.s2=parseFloat(a[4])),["!rnd",this.c,this.s0,this.s1,this.s2].join(",")}},c.RandomDataGenerator.prototype.constructor=c.RandomDataGenerator,c.QuadTree=function(a,b,c,d,e,f,g){this.maxObjects=10,this.maxLevels=4,this.level=0,this.bounds={},this.objects=[],this.nodes=[],this._empty=[],this.reset(a,b,c,d,e,f,g)},c.QuadTree.prototype={reset:function(a,b,c,d,e,f,g){this.maxObjects=e||10,this.maxLevels=f||4,this.level=g||0,this.bounds={x:Math.round(a),y:Math.round(b),width:c,height:d,subWidth:Math.floor(c/2),subHeight:Math.floor(d/2),right:Math.round(a)+Math.floor(c/2),bottom:Math.round(b)+Math.floor(d/2)},this.objects.length=0,this.nodes.length=0},populate:function(a){a.forEach(this.populateHandler,this,!0)},populateHandler:function(a){a.body&&a.exists&&this.insert(a.body)},split:function(){this.nodes[0]=new c.QuadTree(this.bounds.right,this.bounds.y,this.bounds.subWidth,this.bounds.subHeight,this.maxObjects,this.maxLevels,this.level+1),this.nodes[1]=new c.QuadTree(this.bounds.x,this.bounds.y,this.bounds.subWidth,this.bounds.subHeight,this.maxObjects,this.maxLevels,this.level+1),this.nodes[2]=new c.QuadTree(this.bounds.x,this.bounds.bottom,this.bounds.subWidth,this.bounds.subHeight,this.maxObjects,this.maxLevels,this.level+1),this.nodes[3]=new c.QuadTree(this.bounds.right,this.bounds.bottom,this.bounds.subWidth,this.bounds.subHeight,this.maxObjects,this.maxLevels,this.level+1)},insert:function(a){var b,c=0;if(null!=this.nodes[0]&&(b=this.getIndex(a),-1!==b))return void this.nodes[b].insert(a);if(this.objects.push(a),this.objects.length>this.maxObjects&&this.levelthis.bounds.bottom&&(b=2):a.x>this.bounds.right&&(a.ythis.bounds.bottom&&(b=3)),b},retrieve:function(a){if(a instanceof c.Rectangle)var b=this.objects,d=this.getIndex(a);else{if(!a.body)return this._empty;var b=this.objects,d=this.getIndex(a.body)}return this.nodes[0]&&(-1!==d?b=b.concat(this.nodes[d].retrieve(a)):(b=b.concat(this.nodes[0].retrieve(a)),b=b.concat(this.nodes[1].retrieve(a)),b=b.concat(this.nodes[2].retrieve(a)),b=b.concat(this.nodes[3].retrieve(a)))),b},clear:function(){this.objects.length=0;for(var a=this.nodes.length;a--;)this.nodes[a].clear(),this.nodes.splice(a,1);this.nodes.length=0}},c.QuadTree.prototype.constructor=c.QuadTree,c.Net=function(a){this.game=a},c.Net.prototype={getHostName:function(){return window.location&&window.location.hostname?window.location.hostname:null},checkDomainName:function(a){return-1!==window.location.hostname.indexOf(a)},updateQueryString:function(a,b,c,d){void 0===c&&(c=!1),void 0!==d&&""!==d||(d=window.location.href);var e="",f=new RegExp("([?|&])"+a+"=.*?(&|#|$)(.*)","gi");if(f.test(d))e="undefined"!=typeof b&&null!==b?d.replace(f,"$1"+a+"="+b+"$2$3"):d.replace(f,"$1$3").replace(/(&|\?)$/,"");else if("undefined"!=typeof b&&null!==b){var g=-1!==d.indexOf("?")?"&":"?",h=d.split("#");d=h[0]+g+a+"="+b,h[1]&&(d+="#"+h[1]),e=d}else e=d;return c?void(window.location.href=e):e},getQueryString:function(a){void 0===a&&(a="");var b={},c=location.search.substring(1).split("&");for(var d in c){var e=c[d].split("=");if(e.length>1){if(a&&a==this.decodeURI(e[0]))return this.decodeURI(e[1]);b[this.decodeURI(e[0])]=this.decodeURI(e[1])}}return b},decodeURI:function(a){return decodeURIComponent(a.replace(/\+/g," "))}},c.Net.prototype.constructor=c.Net,c.TweenManager=function(a){this.game=a,this.frameBased=!1,this._tweens=[],this._add=[],this.easeMap={Power0:c.Easing.Power0,Power1:c.Easing.Power1,Power2:c.Easing.Power2,Power3:c.Easing.Power3,Power4:c.Easing.Power4,Linear:c.Easing.Linear.None,Quad:c.Easing.Quadratic.Out,Cubic:c.Easing.Cubic.Out,Quart:c.Easing.Quartic.Out,Quint:c.Easing.Quintic.Out,Sine:c.Easing.Sinusoidal.Out,Expo:c.Easing.Exponential.Out,Circ:c.Easing.Circular.Out,Elastic:c.Easing.Elastic.Out,Back:c.Easing.Back.Out,Bounce:c.Easing.Bounce.Out,"Quad.easeIn":c.Easing.Quadratic.In,"Cubic.easeIn":c.Easing.Cubic.In,"Quart.easeIn":c.Easing.Quartic.In,"Quint.easeIn":c.Easing.Quintic.In,"Sine.easeIn":c.Easing.Sinusoidal.In,"Expo.easeIn":c.Easing.Exponential.In,"Circ.easeIn":c.Easing.Circular.In,"Elastic.easeIn":c.Easing.Elastic.In,"Back.easeIn":c.Easing.Back.In,"Bounce.easeIn":c.Easing.Bounce.In,"Quad.easeOut":c.Easing.Quadratic.Out,"Cubic.easeOut":c.Easing.Cubic.Out,"Quart.easeOut":c.Easing.Quartic.Out,"Quint.easeOut":c.Easing.Quintic.Out,"Sine.easeOut":c.Easing.Sinusoidal.Out,"Expo.easeOut":c.Easing.Exponential.Out,"Circ.easeOut":c.Easing.Circular.Out,"Elastic.easeOut":c.Easing.Elastic.Out,"Back.easeOut":c.Easing.Back.Out,"Bounce.easeOut":c.Easing.Bounce.Out,"Quad.easeInOut":c.Easing.Quadratic.InOut,"Cubic.easeInOut":c.Easing.Cubic.InOut,"Quart.easeInOut":c.Easing.Quartic.InOut,"Quint.easeInOut":c.Easing.Quintic.InOut,"Sine.easeInOut":c.Easing.Sinusoidal.InOut,"Expo.easeInOut":c.Easing.Exponential.InOut,"Circ.easeInOut":c.Easing.Circular.InOut,"Elastic.easeInOut":c.Easing.Elastic.InOut,"Back.easeInOut":c.Easing.Back.InOut,"Bounce.easeInOut":c.Easing.Bounce.InOut},this.game.onPause.add(this._pauseAll,this),this.game.onResume.add(this._resumeAll,this)},c.TweenManager.prototype={getAll:function(){return this._tweens},removeAll:function(){for(var a=0;ad;d++)this.removeFrom(a[d]);else if(a.type===c.GROUP&&b)for(var d=0,e=a.children.length;e>d;d++)this.removeFrom(a.children[d]);else{for(d=0,e=this._tweens.length;e>d;d++)a===this._tweens[d].target&&this.remove(this._tweens[d]);for(d=0,e=this._add.length;e>d;d++)a===this._add[d].target&&this.remove(this._add[d])}},add:function(a){a._manager=this,this._add.push(a)},create:function(a){return new c.Tween(a,this.game,this)},remove:function(a){var b=this._tweens.indexOf(a);-1!==b?this._tweens[b].pendingDelete=!0:(b=this._add.indexOf(a),-1!==b&&(this._add[b].pendingDelete=!0))},update:function(){var a=this._add.length,b=this._tweens.length;if(0===b&&0===a)return!1;for(var c=0;b>c;)this._tweens[c].update(this.game.time.time)?c++:(this._tweens.splice(c,1),b--);return a>0&&(this._tweens=this._tweens.concat(this._add),this._add.length=0),!0},isTweening:function(a){return this._tweens.some(function(b){return b.target===a})},_pauseAll:function(){for(var a=this._tweens.length-1;a>=0;a--)this._tweens[a]._pause()},_resumeAll:function(){for(var a=this._tweens.length-1;a>=0;a--)this._tweens[a]._resume()},pauseAll:function(){for(var a=this._tweens.length-1;a>=0;a--)this._tweens[a].pause()},resumeAll:function(){for(var a=this._tweens.length-1;a>=0;a--)this._tweens[a].resume(!0)}},c.TweenManager.prototype.constructor=c.TweenManager,c.Tween=function(a,b,d){this.game=b,this.target=a,this.manager=d,this.timeline=[],this.reverse=!1,this.timeScale=1,this.repeatCounter=0,this.pendingDelete=!1,this.onStart=new c.Signal,this.onLoop=new c.Signal,this.onRepeat=new c.Signal,this.onChildComplete=new c.Signal,this.onComplete=new c.Signal,this.isRunning=!1,this.current=0,this.properties={},this.chainedTween=null,this.isPaused=!1,this.frameBased=d.frameBased,this._onUpdateCallback=null,this._onUpdateCallbackContext=null,this._pausedTime=0,this._codePaused=!1,this._hasStarted=!1},c.Tween.prototype={to:function(a,b,d,e,f,g,h){return(void 0===b||0>=b)&&(b=1e3),void 0!==d&&null!==d||(d=c.Easing.Default),void 0===e&&(e=!1),void 0===f&&(f=0),void 0===g&&(g=0),void 0===h&&(h=!1),"string"==typeof d&&this.manager.easeMap[d]&&(d=this.manager.easeMap[d]),this.isRunning?(console.warn("Phaser.Tween.to cannot be called after Tween.start"),this):(this.timeline.push(new c.TweenData(this).to(a,b,d,f,g,h)),e&&this.start(),this)},from:function(a,b,d,e,f,g,h){return void 0===b&&(b=1e3),void 0!==d&&null!==d||(d=c.Easing.Default),void 0===e&&(e=!1),void 0===f&&(f=0),void 0===g&&(g=0),void 0===h&&(h=!1),"string"==typeof d&&this.manager.easeMap[d]&&(d=this.manager.easeMap[d]),this.isRunning?(console.warn("Phaser.Tween.from cannot be called after Tween.start"),this):(this.timeline.push(new c.TweenData(this).from(a,b,d,f,g,h)),e&&this.start(),this)},start:function(a){if(void 0===a&&(a=0),null===this.game||null===this.target||0===this.timeline.length||this.isRunning)return this;for(var b=0;ba||a>this.timeline.length-1)&&(a=0),this.current=a,this.timeline[this.current].start(),this},stop:function(a){return void 0===a&&(a=!1),this.isRunning=!1,this._onUpdateCallback=null,this._onUpdateCallbackContext=null,a&&(this.onComplete.dispatch(this.target,this),this._hasStarted=!1,this.chainedTween&&this.chainedTween.start()),this.manager.remove(this),this},updateTweenData:function(a,b,c){if(0===this.timeline.length)return this;if(void 0===c&&(c=0),-1===c)for(var d=0;d0?arguments[a-1].chainedTween=arguments[a]:this.chainedTween=arguments[a];return this},loop:function(a){return void 0===a&&(a=!0),this.repeatCounter=a?-1:0,this},onUpdateCallback:function(a,b){return this._onUpdateCallback=a,this._onUpdateCallbackContext=b,this},pause:function(){this.isPaused=!0,this._codePaused=!0,this._pausedTime=this.game.time.time},_pause:function(){this._codePaused||(this.isPaused=!0,this._pausedTime=this.game.time.time)},resume:function(){if(this.isPaused){this.isPaused=!1,this._codePaused=!1;for(var a=0;a0?(this.repeatCounter--,this.timeline[this.current].start(),this.onRepeat.dispatch(this.target,this),!0):(this.isRunning=!1,this.onComplete.dispatch(this.target,this),this._hasStarted=!1,this.chainedTween&&this.chainedTween.start(),!1):(this.onChildComplete.dispatch(this.target,this),this.timeline[this.current].start(),!0)}},generateData:function(a,b){if(null===this.game||null===this.target)return null;void 0===a&&(a=60),void 0===b&&(b=[]);for(var c=0;c0?this.isRunning=!1:this.isRunning=!0,this.isFrom)for(var a in this.vStartCache)this.vStart[a]=this.vEndCache[a],this.vEnd[a]=this.vStartCache[a],this.parent.target[a]=this.vStart[a];return this.value=0,this.yoyoCounter=0,this.repeatCounter=this.repeatTotal,this},loadValues:function(){for(var a in this.parent.properties){if(this.vStart[a]=this.parent.properties[a],Array.isArray(this.vEnd[a])){if(0===this.vEnd[a].length)continue;0===this.percent&&(this.vEnd[a]=[this.vStart[a]].concat(this.vEnd[a]))}"undefined"!=typeof this.vEnd[a]?("string"==typeof this.vEnd[a]&&(this.vEnd[a]=this.vStart[a]+parseFloat(this.vEnd[a],10)),this.parent.properties[a]=this.vEnd[a]):this.vEnd[a]=this.vStart[a],this.vStartCache[a]=this.vStart[a],this.vEndCache[a]=this.vEnd[a]}return this},update:function(a){if(this.isRunning){if(a=this.startTime))return c.TweenData.PENDING;this.isRunning=!0}var b=this.parent.frameBased?this.game.time.physicsElapsedMS:this.game.time.elapsedMS;this.parent.reverse?(this.dt-=b*this.parent.timeScale,this.dt=Math.max(this.dt,0)):(this.dt+=b*this.parent.timeScale,this.dt=Math.min(this.dt,this.duration)),this.percent=this.dt/this.duration,this.value=this.easingFunction(this.percent);for(var d in this.vEnd){var e=this.vStart[d],f=this.vEnd[d];Array.isArray(f)?this.parent.target[d]=this.interpolationFunction.call(this.interpolationContext,f,this.value):this.parent.target[d]=e+(f-e)*this.value}return!this.parent.reverse&&1===this.percent||this.parent.reverse&&0===this.percent?this.repeat():c.TweenData.RUNNING},generateData:function(a){this.parent.reverse?this.dt=this.duration:this.dt=0;var b=[],c=!1,d=1/a*1e3;do{this.parent.reverse?(this.dt-=d,this.dt=Math.max(this.dt,0)):(this.dt+=d,this.dt=Math.min(this.dt,this.duration)),this.percent=this.dt/this.duration,this.value=this.easingFunction(this.percent);var e={};for(var f in this.vEnd){var g=this.vStart[f],h=this.vEnd[f];Array.isArray(h)?e[f]=this.interpolationFunction(h,this.value):e[f]=g+(h-g)*this.value}b.push(e),(!this.parent.reverse&&1===this.percent||this.parent.reverse&&0===this.percent)&&(c=!0)}while(!c);if(this.yoyo){var i=b.slice();i.reverse(),b=b.concat(i)}return b},repeat:function(){if(this.yoyo){if(this.inReverse&&0===this.repeatCounter){for(var a in this.vStartCache)this.vStart[a]=this.vStartCache[a],this.vEnd[a]=this.vEndCache[a];return this.inReverse=!1,c.TweenData.COMPLETE}this.inReverse=!this.inReverse}else if(0===this.repeatCounter)return c.TweenData.COMPLETE;if(this.inReverse)for(var a in this.vStartCache)this.vStart[a]=this.vEndCache[a],this.vEnd[a]=this.vStartCache[a];else{for(var a in this.vStartCache)this.vStart[a]=this.vStartCache[a],this.vEnd[a]=this.vEndCache[a];this.repeatCounter>0&&this.repeatCounter--}return this.startTime=this.game.time.time,this.yoyo&&this.inReverse?this.startTime+=this.yoyoDelay:this.inReverse||(this.startTime+=this.repeatDelay),this.parent.reverse?this.dt=this.duration:this.dt=0,c.TweenData.LOOPED}},c.TweenData.prototype.constructor=c.TweenData,c.Easing={Linear:{None:function(a){return a}},Quadratic:{In:function(a){return a*a},Out:function(a){return a*(2-a)},InOut:function(a){return(a*=2)<1?.5*a*a:-.5*(--a*(a-2)-1)}},Cubic:{In:function(a){return a*a*a},Out:function(a){return--a*a*a+1},InOut:function(a){return(a*=2)<1?.5*a*a*a:.5*((a-=2)*a*a+2)}},Quartic:{In:function(a){return a*a*a*a},Out:function(a){return 1- --a*a*a*a},InOut:function(a){return(a*=2)<1?.5*a*a*a*a:-.5*((a-=2)*a*a*a-2)}},Quintic:{In:function(a){return a*a*a*a*a},Out:function(a){return--a*a*a*a*a+1},InOut:function(a){return(a*=2)<1?.5*a*a*a*a*a:.5*((a-=2)*a*a*a*a+2)}},Sinusoidal:{In:function(a){return 0===a?0:1===a?1:1-Math.cos(a*Math.PI/2)},Out:function(a){return 0===a?0:1===a?1:Math.sin(a*Math.PI/2)},InOut:function(a){return 0===a?0:1===a?1:.5*(1-Math.cos(Math.PI*a))}},Exponential:{In:function(a){return 0===a?0:Math.pow(1024,a-1)},Out:function(a){return 1===a?1:1-Math.pow(2,-10*a)},InOut:function(a){return 0===a?0:1===a?1:(a*=2)<1?.5*Math.pow(1024,a-1):.5*(-Math.pow(2,-10*(a-1))+2)}},Circular:{In:function(a){return 1-Math.sqrt(1-a*a)},Out:function(a){return Math.sqrt(1- --a*a)},InOut:function(a){return(a*=2)<1?-.5*(Math.sqrt(1-a*a)-1):.5*(Math.sqrt(1-(a-=2)*a)+1)}},Elastic:{In:function(a){var b,c=.1,d=.4;return 0===a?0:1===a?1:(!c||1>c?(c=1,b=d/4):b=d*Math.asin(1/c)/(2*Math.PI),-(c*Math.pow(2,10*(a-=1))*Math.sin((a-b)*(2*Math.PI)/d)))},Out:function(a){var b,c=.1,d=.4;return 0===a?0:1===a?1:(!c||1>c?(c=1,b=d/4):b=d*Math.asin(1/c)/(2*Math.PI),c*Math.pow(2,-10*a)*Math.sin((a-b)*(2*Math.PI)/d)+1)},InOut:function(a){var b,c=.1,d=.4;return 0===a?0:1===a?1:(!c||1>c?(c=1,b=d/4):b=d*Math.asin(1/c)/(2*Math.PI),(a*=2)<1?-.5*(c*Math.pow(2,10*(a-=1))*Math.sin((a-b)*(2*Math.PI)/d)):c*Math.pow(2,-10*(a-=1))*Math.sin((a-b)*(2*Math.PI)/d)*.5+1)}},Back:{In:function(a){var b=1.70158;return a*a*((b+1)*a-b)},Out:function(a){var b=1.70158;return--a*a*((b+1)*a+b)+1},InOut:function(a){var b=2.5949095;return(a*=2)<1?.5*(a*a*((b+1)*a-b)):.5*((a-=2)*a*((b+1)*a+b)+2)}},Bounce:{In:function(a){return 1-c.Easing.Bounce.Out(1-a)},Out:function(a){return 1/2.75>a?7.5625*a*a:2/2.75>a?7.5625*(a-=1.5/2.75)*a+.75:2.5/2.75>a?7.5625*(a-=2.25/2.75)*a+.9375:7.5625*(a-=2.625/2.75)*a+.984375},InOut:function(a){return.5>a?.5*c.Easing.Bounce.In(2*a):.5*c.Easing.Bounce.Out(2*a-1)+.5}}},c.Easing.Default=c.Easing.Linear.None,c.Easing.Power0=c.Easing.Linear.None,c.Easing.Power1=c.Easing.Quadratic.Out,c.Easing.Power2=c.Easing.Cubic.Out,c.Easing.Power3=c.Easing.Quartic.Out,c.Easing.Power4=c.Easing.Quintic.Out,c.Time=function(a){this.game=a,this.time=0,this.prevTime=0,this.now=0,this.elapsed=0,this.elapsedMS=0,this.physicsElapsed=1/60,this.physicsElapsedMS=1/60*1e3,this.desiredFpsMult=1/60,this._desiredFps=60,this.suggestedFps=this.desiredFps,this.slowMotion=1,this.advancedTiming=!1,this.frames=0,this.fps=0,this.fpsMin=1e3,this.fpsMax=0,this.msMin=1e3,this.msMax=0,this.pauseDuration=0,this.timeToCall=0,this.timeExpected=0,this.events=new c.Timer(this.game,!1),this._frameCount=0,this._elapsedAccumulator=0,this._started=0,this._timeLastSecond=0,this._pauseStarted=0,this._justResumed=!1,this._timers=[]},c.Time.prototype={boot:function(){this._started=Date.now(),this.time=Date.now(),this.events.start(),this.timeExpected=this.time},add:function(a){return this._timers.push(a),a},create:function(a){void 0===a&&(a=!0);var b=new c.Timer(this.game,a);return this._timers.push(b),b},removeAll:function(){for(var a=0;aa;)this._timers[a].update(this.time)?a++:(this._timers.splice(a,1),b--)},updateAdvancedTiming:function(){this._frameCount++,this._elapsedAccumulator+=this.elapsed,this._frameCount>=2*this._desiredFps&&(this.suggestedFps=5*Math.floor(200/(this._elapsedAccumulator/this._frameCount)),this._frameCount=0,this._elapsedAccumulator=0),this.msMin=Math.min(this.msMin,this.elapsed),this.msMax=Math.max(this.msMax,this.elapsed),this.frames++,this.now>this._timeLastSecond+1e3&&(this.fps=Math.round(1e3*this.frames/(this.now-this._timeLastSecond)),this.fpsMin=Math.min(this.fpsMin,this.fps),this.fpsMax=Math.max(this.fpsMax,this.fps),this._timeLastSecond=this.now,this.frames=0)},gamePaused:function(){this._pauseStarted=Date.now(),this.events.pause();for(var a=this._timers.length;a--;)this._timers[a]._pause()},gameResumed:function(){this.time=Date.now(),this.pauseDuration=this.time-this._pauseStarted,this.events.resume();for(var a=this._timers.length;a--;)this._timers[a]._resume()},totalElapsedSeconds:function(){return.001*(this.time-this._started)},elapsedSince:function(a){return this.time-a},elapsedSecondsSince:function(a){return.001*(this.time-a)},reset:function(){this._started=this.time,this.removeAll()}},Object.defineProperty(c.Time.prototype,"desiredFps",{get:function(){return this._desiredFps},set:function(a){this._desiredFps=a,this.physicsElapsed=1/a,this.physicsElapsedMS=1e3*this.physicsElapsed,this.desiredFpsMult=1/a}}),c.Time.prototype.constructor=c.Time,c.Timer=function(a,b){void 0===b&&(b=!0),this.game=a,this.running=!1,this.autoDestroy=b,this.expired=!1,this.elapsed=0,this.events=[],this.onComplete=new c.Signal,this.nextTick=0,this.timeCap=1e3,this.paused=!1,this._codePaused=!1,this._started=0,this._pauseStarted=0,this._pauseTotal=0,this._now=Date.now(),this._len=0,this._marked=0,this._i=0,this._diff=0,this._newTick=0},c.Timer.MINUTE=6e4,c.Timer.SECOND=1e3,c.Timer.HALF=500,c.Timer.QUARTER=250,c.Timer.prototype={create:function(a,b,d,e,f,g){a=Math.round(a);var h=a;h+=0===this._now?this.game.time.time:this._now;var i=new c.TimerEvent(this,a,h,d,b,e,f,g);return this.events.push(i),this.order(),this.expired=!1,i},add:function(a,b,c){return this.create(a,!1,0,b,c,Array.prototype.slice.call(arguments,3))},repeat:function(a,b,c,d){return this.create(a,!1,b,c,d,Array.prototype.slice.call(arguments,4))},loop:function(a,b,c){return this.create(a,!0,0,b,c,Array.prototype.slice.call(arguments,3))},start:function(a){if(!this.running){this._started=this.game.time.time+(a||0),this.running=!0;for(var b=0;b0&&(this.events.sort(this.sortHandler),this.nextTick=this.events[0].tick)},sortHandler:function(a,b){return a.tickb.tick?1:0},clearPendingEvents:function(){for(this._i=this.events.length;this._i--;)this.events[this._i].pendingDelete&&this.events.splice(this._i,1);this._len=this.events.length,this._i=0},update:function(a){if(this.paused)return!0;if(this.elapsed=a-this._now,this._now=a,this.elapsed>this.timeCap&&this.adjustEvents(a-this.elapsed),this._marked=0,this.clearPendingEvents(),this.running&&this._now>=this.nextTick&&this._len>0){for(;this._i=this.events[this._i].tick&&!this.events[this._i].pendingDelete;)this._newTick=this._now+this.events[this._i].delay-(this._now-this.events[this._i].tick),this._newTick<0&&(this._newTick=this._now+this.events[this._i].delay),this.events[this._i].loop===!0?(this.events[this._i].tick=this._newTick,this.events[this._i].callback.apply(this.events[this._i].callbackContext,this.events[this._i].args)):this.events[this._i].repeatCount>0?(this.events[this._i].repeatCount--,this.events[this._i].tick=this._newTick,this.events[this._i].callback.apply(this.events[this._i].callbackContext,this.events[this._i].args)):(this._marked++,this.events[this._i].pendingDelete=!0,this.events[this._i].callback.apply(this.events[this._i].callbackContext,this.events[this._i].args)),this._i++;this.events.length>this._marked?this.order():(this.expired=!0,this.onComplete.dispatch(this))}return!this.expired||!this.autoDestroy},pause:function(){this.running&&(this._codePaused=!0,this.paused||(this._pauseStarted=this.game.time.time,this.paused=!0))},_pause:function(){!this.paused&&this.running&&(this._pauseStarted=this.game.time.time,this.paused=!0)},adjustEvents:function(a){for(var b=0;bc&&(c=0),this.events[b].tick=this._now+c}var d=this.nextTick-a;0>d?this.nextTick=this._now:this.nextTick=this._now+d},resume:function(){if(this.paused){var a=this.game.time.time;this._pauseTotal+=a-this._now,this._now=a,this.adjustEvents(this._pauseStarted),this.paused=!1,this._codePaused=!1}},_resume:function(){this._codePaused||this.resume()},removeAll:function(){this.onComplete.removeAll(),this.events.length=0,this._len=0,this._i=0},destroy:function(){this.onComplete.removeAll(),this.running=!1,this.events=[],this._len=0,this._i=0}},Object.defineProperty(c.Timer.prototype,"next",{get:function(){return this.nextTick}}),Object.defineProperty(c.Timer.prototype,"duration",{get:function(){return this.running&&this.nextTick>this._now?this.nextTick-this._now:0}}),Object.defineProperty(c.Timer.prototype,"length",{get:function(){return this.events.length}}),Object.defineProperty(c.Timer.prototype,"ms",{get:function(){return this.running?this._now-this._started-this._pauseTotal:0}}),Object.defineProperty(c.Timer.prototype,"seconds",{get:function(){return this.running?.001*this.ms:0}}),c.Timer.prototype.constructor=c.Timer,c.TimerEvent=function(a,b,c,d,e,f,g,h){this.timer=a,this.delay=b,this.tick=c,this.repeatCount=d-1,this.loop=e,this.callback=f,this.callbackContext=g,this.args=h,this.pendingDelete=!1},c.TimerEvent.prototype.constructor=c.TimerEvent,c.AnimationManager=function(a){this.sprite=a,this.game=a.game,this.currentFrame=null,this.currentAnim=null,this.updateIfVisible=!0,this.isLoaded=!1,this._frameData=null,this._anims={},this._outputFrames=[]},c.AnimationManager.prototype={loadFrameData:function(a,b){if(void 0===a)return!1;if(this.isLoaded)for(var c in this._anims)this._anims[c].updateFrameData(a);return this._frameData=a,void 0===b||null===b?this.frame=0:"string"==typeof b?this.frameName=b:this.frame=b,this.isLoaded=!0,!0},copyFrameData:function(a,b){if(this._frameData=a.clone(),this.isLoaded)for(var c in this._anims)this._anims[c].updateFrameData(this._frameData);return void 0===b||null===b?this.frame=0:"string"==typeof b?this.frameName=b:this.frame=b,this.isLoaded=!0,!0},add:function(a,b,d,e,f){return b=b||[],d=d||60,void 0===e&&(e=!1),void 0===f&&(f=!(!b||"number"!=typeof b[0])),this._outputFrames=[],this._frameData.getFrameIndexes(b,f,this._outputFrames),this._anims[a]=new c.Animation(this.game,this.sprite,a,this._frameData,this._outputFrames,d,e),this.currentAnim=this._anims[a],this.sprite.tilingTexture&&(this.sprite.refreshTexture=!0),this._anims[a]},validateFrames:function(a,b){void 0===b&&(b=!0);for(var c=0;cthis._frameData.total)return!1}else if(this._frameData.checkFrameName(a[c])===!1)return!1;return!0},play:function(a,b,c,d){return this._anims[a]?this.currentAnim===this._anims[a]?this.currentAnim.isPlaying===!1?(this.currentAnim.paused=!1,this.currentAnim.play(b,c,d)):this.currentAnim:(this.currentAnim&&this.currentAnim.isPlaying&&this.currentAnim.stop(),this.currentAnim=this._anims[a],this.currentAnim.paused=!1,this.currentFrame=this.currentAnim.currentFrame,this.currentAnim.play(b,c,d)):void 0},stop:function(a,b){void 0===b&&(b=!1),!this.currentAnim||"string"==typeof a&&a!==this.currentAnim.name||this.currentAnim.stop(b)},update:function(){return this.updateIfVisible&&!this.sprite.visible?!1:this.currentAnim&&this.currentAnim.update()?(this.currentFrame=this.currentAnim.currentFrame,!0):!1},next:function(a){this.currentAnim&&(this.currentAnim.next(a),this.currentFrame=this.currentAnim.currentFrame)},previous:function(a){this.currentAnim&&(this.currentAnim.previous(a),this.currentFrame=this.currentAnim.currentFrame)},getAnimation:function(a){return"string"==typeof a&&this._anims[a]?this._anims[a]:null},refreshFrame:function(){},destroy:function(){var a=null;for(var a in this._anims)this._anims.hasOwnProperty(a)&&this._anims[a].destroy();this._anims={},this._outputFrames=[],this._frameData=null,this.currentAnim=null,this.currentFrame=null,this.sprite=null,this.game=null}},c.AnimationManager.prototype.constructor=c.AnimationManager,Object.defineProperty(c.AnimationManager.prototype,"frameData",{get:function(){return this._frameData}}),Object.defineProperty(c.AnimationManager.prototype,"frameTotal",{get:function(){return this._frameData.total}}),Object.defineProperty(c.AnimationManager.prototype,"paused",{get:function(){return this.currentAnim.isPaused},set:function(a){this.currentAnim.paused=a}}),Object.defineProperty(c.AnimationManager.prototype,"name",{get:function(){return this.currentAnim?this.currentAnim.name:void 0}}),Object.defineProperty(c.AnimationManager.prototype,"frame",{get:function(){return this.currentFrame?this.currentFrame.index:void 0; +},set:function(a){"number"==typeof a&&this._frameData&&null!==this._frameData.getFrame(a)&&(this.currentFrame=this._frameData.getFrame(a),this.currentFrame&&this.sprite.setFrame(this.currentFrame))}}),Object.defineProperty(c.AnimationManager.prototype,"frameName",{get:function(){return this.currentFrame?this.currentFrame.name:void 0},set:function(a){"string"==typeof a&&this._frameData&&null!==this._frameData.getFrameByName(a)?(this.currentFrame=this._frameData.getFrameByName(a),this.currentFrame&&(this._frameIndex=this.currentFrame.index,this.sprite.setFrame(this.currentFrame))):console.warn("Cannot set frameName: "+a)}}),c.Animation=function(a,b,d,e,f,g,h){void 0===h&&(h=!1),this.game=a,this._parent=b,this._frameData=e,this.name=d,this._frames=[],this._frames=this._frames.concat(f),this.delay=1e3/g,this.loop=h,this.loopCount=0,this.killOnComplete=!1,this.isFinished=!1,this.isPlaying=!1,this.isPaused=!1,this._pauseStartTime=0,this._frameIndex=0,this._frameDiff=0,this._frameSkip=1,this.currentFrame=this._frameData.getFrame(this._frames[this._frameIndex]),this.onStart=new c.Signal,this.onUpdate=null,this.onComplete=new c.Signal,this.onLoop=new c.Signal,this.isReversed=!1,this.game.onPause.add(this.onPause,this),this.game.onResume.add(this.onResume,this)},c.Animation.prototype={play:function(a,b,c){return"number"==typeof a&&(this.delay=1e3/a),"boolean"==typeof b&&(this.loop=b),"undefined"!=typeof c&&(this.killOnComplete=c),this.isPlaying=!0,this.isFinished=!1,this.paused=!1,this.loopCount=0,this._timeLastFrame=this.game.time.time,this._timeNextFrame=this.game.time.time+this.delay,this._frameIndex=this.isReversed?this._frames.length-1:0,this.updateCurrentFrame(!1,!0),this._parent.events.onAnimationStart$dispatch(this._parent,this),this.onStart.dispatch(this._parent,this),this._parent.animations.currentAnim=this,this._parent.animations.currentFrame=this.currentFrame,this},restart:function(){this.isPlaying=!0,this.isFinished=!1,this.paused=!1,this.loopCount=0,this._timeLastFrame=this.game.time.time,this._timeNextFrame=this.game.time.time+this.delay,this._frameIndex=0,this.currentFrame=this._frameData.getFrame(this._frames[this._frameIndex]),this._parent.setFrame(this.currentFrame),this._parent.animations.currentAnim=this,this._parent.animations.currentFrame=this.currentFrame,this.onStart.dispatch(this._parent,this)},reverse:function(){return this.reversed=!this.reversed,this},reverseOnce:function(){return this.onComplete.addOnce(this.reverse.bind(this)),this.reverse()},setFrame:function(a,b){var c;if(void 0===b&&(b=!1),"string"==typeof a)for(var d=0;d=this._timeNextFrame?(this._frameSkip=1,this._frameDiff=this.game.time.time-this._timeNextFrame,this._timeLastFrame=this.game.time.time,this._frameDiff>this.delay&&(this._frameSkip=Math.floor(this._frameDiff/this.delay),this._frameDiff-=this._frameSkip*this.delay),this._timeNextFrame=this.game.time.time+(this.delay-this._frameDiff),this.isReversed?this._frameIndex-=this._frameSkip:this._frameIndex+=this._frameSkip,!this.isReversed&&this._frameIndex>=this._frames.length||this.isReversed&&this._frameIndex<=-1?this.loop?(this._frameIndex=Math.abs(this._frameIndex)%this._frames.length,this.isReversed&&(this._frameIndex=this._frames.length-1-this._frameIndex),this.currentFrame=this._frameData.getFrame(this._frames[this._frameIndex]),this.currentFrame&&this._parent.setFrame(this.currentFrame),this.loopCount++,this._parent.events.onAnimationLoop$dispatch(this._parent,this),this.onLoop.dispatch(this._parent,this),this.onUpdate?(this.onUpdate.dispatch(this,this.currentFrame),!!this._frameData):!0):(this.complete(),!1):this.updateCurrentFrame(!0)):!1},updateCurrentFrame:function(a,b){if(void 0===b&&(b=!1),!this._frameData)return!1;var c=this.currentFrame.index;return this.currentFrame=this._frameData.getFrame(this._frames[this._frameIndex]),this.currentFrame&&(b||!b&&c!==this.currentFrame.index)&&this._parent.setFrame(this.currentFrame),this.onUpdate&&a?(this.onUpdate.dispatch(this,this.currentFrame),!!this._frameData):!0},next:function(a){void 0===a&&(a=1);var b=this._frameIndex+a;b>=this._frames.length&&(this.loop?b%=this._frames.length:b=this._frames.length-1),b!==this._frameIndex&&(this._frameIndex=b,this.updateCurrentFrame(!0))},previous:function(a){void 0===a&&(a=1);var b=this._frameIndex-a;0>b&&(this.loop?b=this._frames.length+b:b++),b!==this._frameIndex&&(this._frameIndex=b,this.updateCurrentFrame(!0))},updateFrameData:function(a){this._frameData=a,this.currentFrame=this._frameData?this._frameData.getFrame(this._frames[this._frameIndex%this._frames.length]):null},destroy:function(){this._frameData&&(this.game.onPause.remove(this.onPause,this),this.game.onResume.remove(this.onResume,this),this.game=null,this._parent=null,this._frames=null,this._frameData=null,this.currentFrame=null,this.isPlaying=!1,this.onStart.dispose(),this.onLoop.dispose(),this.onComplete.dispose(),this.onUpdate&&this.onUpdate.dispose())},complete:function(){this._frameIndex=this._frames.length-1,this.currentFrame=this._frameData.getFrame(this._frames[this._frameIndex]),this.isPlaying=!1,this.isFinished=!0,this.paused=!1,this._parent.events.onAnimationComplete$dispatch(this._parent,this),this.onComplete.dispatch(this._parent,this),this.killOnComplete&&this._parent.kill()}},c.Animation.prototype.constructor=c.Animation,Object.defineProperty(c.Animation.prototype,"paused",{get:function(){return this.isPaused},set:function(a){this.isPaused=a,a?this._pauseStartTime=this.game.time.time:this.isPlaying&&(this._timeNextFrame=this.game.time.time+this.delay)}}),Object.defineProperty(c.Animation.prototype,"reversed",{get:function(){return this.isReversed},set:function(a){this.isReversed=a}}),Object.defineProperty(c.Animation.prototype,"frameTotal",{get:function(){return this._frames.length}}),Object.defineProperty(c.Animation.prototype,"frame",{get:function(){return null!==this.currentFrame?this.currentFrame.index:this._frameIndex},set:function(a){this.currentFrame=this._frameData.getFrame(this._frames[a]),null!==this.currentFrame&&(this._frameIndex=a,this._parent.setFrame(this.currentFrame),this.onUpdate&&this.onUpdate.dispatch(this,this.currentFrame))}}),Object.defineProperty(c.Animation.prototype,"speed",{get:function(){return Math.round(1e3/this.delay)},set:function(a){a>=1&&(this.delay=1e3/a)}}),Object.defineProperty(c.Animation.prototype,"enableUpdate",{get:function(){return null!==this.onUpdate},set:function(a){a&&null===this.onUpdate?this.onUpdate=new c.Signal:a||null===this.onUpdate||(this.onUpdate.dispose(),this.onUpdate=null)}}),c.Animation.generateFrameNames=function(a,b,d,e,f){void 0===e&&(e="");var g=[],h="";if(d>b)for(var i=b;d>=i;i++)h="number"==typeof f?c.Utils.pad(i.toString(),f,"0",1):i.toString(),h=a+h+e,g.push(h);else for(var i=b;i>=d;i--)h="number"==typeof f?c.Utils.pad(i.toString(),f,"0",1):i.toString(),h=a+h+e,g.push(h);return g},c.Frame=function(a,b,d,e,f,g){this.index=a,this.x=b,this.y=d,this.width=e,this.height=f,this.name=g,this.centerX=Math.floor(e/2),this.centerY=Math.floor(f/2),this.distance=c.Math.distance(0,0,e,f),this.rotated=!1,this.rotationDirection="cw",this.trimmed=!1,this.sourceSizeW=e,this.sourceSizeH=f,this.spriteSourceSizeX=0,this.spriteSourceSizeY=0,this.spriteSourceSizeW=0,this.spriteSourceSizeH=0,this.right=this.x+this.width,this.bottom=this.y+this.height},c.Frame.prototype={resize:function(a,b){this.width=a,this.height=b,this.centerX=Math.floor(a/2),this.centerY=Math.floor(b/2),this.distance=c.Math.distance(0,0,a,b),this.sourceSizeW=a,this.sourceSizeH=b,this.right=this.x+a,this.bottom=this.y+b},setTrim:function(a,b,c,d,e,f,g){this.trimmed=a,a&&(this.sourceSizeW=b,this.sourceSizeH=c,this.centerX=Math.floor(b/2),this.centerY=Math.floor(c/2),this.spriteSourceSizeX=d,this.spriteSourceSizeY=e,this.spriteSourceSizeW=f,this.spriteSourceSizeH=g)},clone:function(){var a=new c.Frame(this.index,this.x,this.y,this.width,this.height,this.name);for(var b in this)this.hasOwnProperty(b)&&(a[b]=this[b]);return a},getRect:function(a){return void 0===a?a=new c.Rectangle(this.x,this.y,this.width,this.height):a.setTo(this.x,this.y,this.width,this.height),a}},c.Frame.prototype.constructor=c.Frame,c.FrameData=function(){this._frames=[],this._frameNames=[]},c.FrameData.prototype={addFrame:function(a){return a.index=this._frames.length,this._frames.push(a),""!==a.name&&(this._frameNames[a.name]=a.index),a},getFrame:function(a){return a>=this._frames.length&&(a=0),this._frames[a]},getFrameByName:function(a){return"number"==typeof this._frameNames[a]?this._frames[this._frameNames[a]]:null},checkFrameName:function(a){return null!=this._frameNames[a]},clone:function(){for(var a=new c.FrameData,b=0;b=d;d++)c.push(this._frames[d]);return c},getFrames:function(a,b,c){if(void 0===b&&(b=!0),void 0===c&&(c=[]),void 0===a||0===a.length)for(var d=0;d=d&&(d=Math.floor(-j/Math.min(-1,d))),0>=e&&(e=Math.floor(-k/Math.min(-1,e)));var l=Math.floor((j-g)/(d+h)),m=Math.floor((k-g)/(e+h)),n=l*m;if(-1!==f&&(n=f),0===j||0===k||d>j||e>k||0===n)return console.warn("Phaser.AnimationParser.spriteSheet: '"+b+"'s width/height zero or width/height < given frameWidth/frameHeight"),null;for(var o=new c.FrameData,p=g,q=g,r=0;n>r;r++)o.addFrame(new c.Frame(r,p,q,d,e,"")),p+=d+h,p+d>j&&(p=g,q+=e+h);return o},JSONData:function(a,b){if(!b.frames)return console.warn("Phaser.AnimationParser.JSONData: Invalid Texture Atlas JSON given, missing 'frames' array"),void console.log(b);for(var d,e=new c.FrameData,f=b.frames,g=0;g tag");for(var d,e,f,g,h,i,j,k,l,m,n,o=new c.FrameData,p=b.getElementsByTagName("SubTexture"),q=0;q-1},getAssetIndex:function(a,b){for(var c=-1,d=0;d-1?{index:c,file:this._fileList[c]}:!1},reset:function(a,b){void 0===b&&(b=!1),this.resetLocked||(a&&(this.preloadSprite=null),this.isLoading=!1,this._processingHead=0,this._fileList.length=0,this._flightQueue.length=0,this._fileLoadStarted=!1,this._totalFileCount=0,this._totalPackCount=0,this._loadedPackCount=0,this._loadedFileCount=0,b&&(this.onLoadStart.removeAll(),this.onLoadComplete.removeAll(),this.onPackComplete.removeAll(),this.onFileStart.removeAll(),this.onFileComplete.removeAll(),this.onFileError.removeAll()))},addToFileList:function(a,b,c,d,e,f){if(void 0===e&&(e=!1),void 0===b||""===b)return console.warn("Phaser.Loader: Invalid or no key given of type "+a),this;if(void 0===c||null===c){if(!f)return console.warn("Phaser.Loader: No URL given for file type: "+a+" key: "+b),this;c=b+f}var g={type:a,key:b,path:this.path,url:c,syncPoint:this._withSyncPointDepth>0,data:null,loading:!1,loaded:!1,error:!1};if(d)for(var h in d)g[h]=d[h];var i=this.getAssetIndex(a,b);if(e&&i>-1){var j=this._fileList[i];j.loading||j.loaded?(this._fileList.push(g),this._totalFileCount++):this._fileList[i]=g}else-1===i&&(this._fileList.push(g),this._totalFileCount++);return this},replaceInFileList:function(a,b,c,d){return this.addToFileList(a,b,c,d,!0)},pack:function(a,b,c,d){if(void 0===b&&(b=null),void 0===c&&(c=null),void 0===d&&(d=null),!b&&!c)return console.warn("Phaser.Loader.pack - Both url and data are null. One must be set."),this;var e={type:"packfile",key:a,url:b,path:this.path,syncPoint:!0,data:null,loading:!1,loaded:!1,error:!1,callbackContext:d};c&&("string"==typeof c&&(c=JSON.parse(c)),e.data=c||{},e.loaded=!0);for(var f=0;f=e||d&&this._loadedPackCount===this._totalPackCount)break}if(this.updateProgress(),this._processingHead>=this._fileList.length)this.finishedLoading();else if(!this._flightQueue.length){console.warn("Phaser.Loader - aborting: processing queue empty, loading may have stalled");var f=this;setTimeout(function(){f.finishedLoading(!0)},2e3)}},finishedLoading:function(a){this.hasLoaded||(this.hasLoaded=!0,this.isLoading=!1,a||this._fileLoadStarted||(this._fileLoadStarted=!0,this.onLoadStart.dispatch()),this.onLoadComplete.dispatch(),this.game.state.loadComplete(),this.reset())},asyncComplete:function(a,b){void 0===b&&(b=""),a.loaded=!0,a.error=!!b,b&&(a.errorMessage=b,console.warn("Phaser.Loader - "+a.type+"["+a.key+"]: "+b)),this.processLoadQueue()},processPack:function(a){var b=a.data[a.key];if(!b)return void console.warn("Phaser.Loader - "+a.key+": pack has data, but not for pack key");for(var d=0;d=400&&f.status<=599?e.call(g,a,f):d.call(g,a,f)}catch(b){g.hasLoaded?window.console&&console.error(b):g.asyncComplete(a,b.message||"Exception")}},f.onerror=function(){try{return e.call(g,a,f)}catch(b){g.hasLoaded?window.console&&console.error(b):g.asyncComplete(a,b.message||"Exception")}},a.requestObject=f,a.requestUrl=b,f.send()},xhrLoadWithXDR:function(a,b,c,d,e){this._warnedAboutXDomainRequest||this.game.device.ie&&!(this.game.device.ieVersion>=10)||(this._warnedAboutXDomainRequest=!0,console.warn("Phaser.Loader - using XDomainRequest outside of IE 9"));var f=new window.XDomainRequest;f.open("GET",b,!0),f.responseType=c,f.timeout=3e3,e=e||this.fileError;var g=this;f.onerror=function(){try{return e.call(g,a,f)}catch(b){g.asyncComplete(a,b.message||"Exception")}},f.ontimeout=function(){try{return e.call(g,a,f)}catch(b){g.asyncComplete(a,b.message||"Exception")}},f.onprogress=function(){},f.onload=function(){try{return 4==f.readyState&&f.status>=400&&f.status<=599?e.call(g,a,f):d.call(g,a,f)}catch(b){g.asyncComplete(a,b.message||"Exception")}},a.requestObject=f,a.requestUrl=b,setTimeout(function(){f.send()},0)},getVideoURL:function(a){for(var b=0;b=0&&(d=d.substr(0,d.indexOf("?")));var e=d.substr((Math.max(0,d.lastIndexOf("."))||1/0)+1);if(c=e.toLowerCase(),this.game.device.canPlayVideo(c))return a[b]}}return null},getAudioURL:function(a){if(this.game.sound.noAudio)return null;for(var b=0;b=0&&(d=d.substr(0,d.indexOf("?")));var e=d.substr((Math.max(0,d.lastIndexOf("."))||1/0)+1);if(c=e.toLowerCase(),this.game.device.canPlayAudio(c))return a[b]}}return null},fileError:function(a,b,c){var d=a.requestUrl||this.transformUrl(a.url,a),e="error loading asset from URL "+d;!c&&b&&(c=b.status),c&&(e=e+" ("+c+")"),this.asyncComplete(a,e)},fileComplete:function(a,b){var d=!0;switch(a.type){case"packfile":var e=JSON.parse(b.responseText);a.data=e||{};break;case"image":this.cache.addImage(a.key,a.url,a.data);break;case"spritesheet":this.cache.addSpriteSheet(a.key,a.url,a.data,a.frameWidth,a.frameHeight,a.frameMax,a.margin,a.spacing);break;case"textureatlas":if(null==a.atlasURL)this.cache.addTextureAtlas(a.key,a.url,a.data,a.atlasData,a.format);else if(d=!1,a.format==c.Loader.TEXTURE_ATLAS_JSON_ARRAY||a.format==c.Loader.TEXTURE_ATLAS_JSON_HASH||a.format==c.Loader.TEXTURE_ATLAS_JSON_PYXEL)this.xhrLoad(a,this.transformUrl(a.atlasURL,a),"text",this.jsonLoadComplete);else{if(a.format!=c.Loader.TEXTURE_ATLAS_XML_STARLING)throw new Error("Phaser.Loader. Invalid Texture Atlas format: "+a.format);this.xhrLoad(a,this.transformUrl(a.atlasURL,a),"text",this.xmlLoadComplete)}break;case"bitmapfont":a.atlasURL?(d=!1,this.xhrLoad(a,this.transformUrl(a.atlasURL,a),"text",function(a,b){var c;try{c=JSON.parse(b.responseText)}catch(d){}c?(a.atlasType="json",this.jsonLoadComplete(a,b)):(a.atlasType="xml",this.xmlLoadComplete(a,b))})):this.cache.addBitmapFont(a.key,a.url,a.data,a.atlasData,a.atlasType,a.xSpacing,a.ySpacing);break;case"video":if(a.asBlob)try{a.data=b.response}catch(f){throw new Error("Phaser.Loader. Unable to parse video file as Blob: "+a.key)}this.cache.addVideo(a.key,a.url,a.data,a.asBlob);break;case"audio":this.game.sound.usingWebAudio?(a.data=b.response,this.cache.addSound(a.key,a.url,a.data,!0,!1),a.autoDecode&&this.game.sound.decode(a.key)):this.cache.addSound(a.key,a.url,a.data,!1,!0);break;case"text":a.data=b.responseText,this.cache.addText(a.key,a.url,a.data);break;case"shader":a.data=b.responseText,this.cache.addShader(a.key,a.url,a.data);break;case"physics":var e=JSON.parse(b.responseText);this.cache.addPhysicsData(a.key,a.url,e,a.format);break;case"script":a.data=document.createElement("script"),a.data.language="javascript",a.data.type="text/javascript",a.data.defer=!1,a.data.text=b.responseText,document.head.appendChild(a.data),a.callback&&(a.data=a.callback.call(a.callbackContext,a.key,b.responseText));break;case"binary":a.callback?a.data=a.callback.call(a.callbackContext,a.key,b.response):a.data=b.response,this.cache.addBinary(a.key,a.data)}d&&this.asyncComplete(a)},jsonLoadComplete:function(a,b){var c=JSON.parse(b.responseText);"tilemap"===a.type?this.cache.addTilemap(a.key,a.url,c,a.format):"bitmapfont"===a.type?this.cache.addBitmapFont(a.key,a.url,a.data,c,a.atlasType,a.xSpacing,a.ySpacing):"json"===a.type?this.cache.addJSON(a.key,a.url,c):this.cache.addTextureAtlas(a.key,a.url,a.data,c,a.format),this.asyncComplete(a)},csvLoadComplete:function(a,b){var c=b.responseText;this.cache.addTilemap(a.key,a.url,c,a.format),this.asyncComplete(a)},xmlLoadComplete:function(a,b){var c=b.responseText,d=this.parseXml(c);if(!d){var e=b.responseType||b.contentType;return console.warn("Phaser.Loader - "+a.key+": invalid XML ("+e+")"),void this.asyncComplete(a,"invalid XML")}"bitmapfont"===a.type?this.cache.addBitmapFont(a.key,a.url,a.data,d,a.atlasType,a.xSpacing,a.ySpacing):"textureatlas"===a.type?this.cache.addTextureAtlas(a.key,a.url,a.data,d,a.format):"xml"===a.type&&this.cache.addXML(a.key,a.url,d),this.asyncComplete(a)},parseXml:function(a){var b;try{if(window.DOMParser){var c=new DOMParser;b=c.parseFromString(a,"text/xml")}else b=new ActiveXObject("Microsoft.XMLDOM"),b.async="false",b.loadXML(a)}catch(d){b=null}return b&&b.documentElement&&!b.getElementsByTagName("parsererror").length?b:null},updateProgress:function(){this.preloadSprite&&(0===this.preloadSprite.direction?this.preloadSprite.rect.width=Math.floor(this.preloadSprite.width/100*this.progress):this.preloadSprite.rect.height=Math.floor(this.preloadSprite.height/100*this.progress),this.preloadSprite.sprite?this.preloadSprite.sprite.updateCrop():this.preloadSprite=null)},totalLoadedFiles:function(){return this._loadedFileCount},totalQueuedFiles:function(){return this._totalFileCount-this._loadedFileCount},totalLoadedPacks:function(){return this._totalPackCount},totalQueuedPacks:function(){return this._totalPackCount-this._loadedPackCount}},Object.defineProperty(c.Loader.prototype,"progressFloat",{get:function(){var a=this._loadedFileCount/this._totalFileCount*100;return c.Math.clamp(a||0,0,100)}}),Object.defineProperty(c.Loader.prototype,"progress",{get:function(){return Math.round(this.progressFloat)}}),c.Loader.prototype.constructor=c.Loader,c.LoaderParser={bitmapFont:function(a,b,c,d){return this.xmlBitmapFont(a,b,c,d)},xmlBitmapFont:function(a,b,c,d){var e={},f=a.getElementsByTagName("info")[0],g=a.getElementsByTagName("common")[0];e.font=f.getAttribute("face"),e.size=parseInt(f.getAttribute("size"),10),e.lineHeight=parseInt(g.getAttribute("lineHeight"),10)+d,e.chars={};for(var h=a.getElementsByTagName("char"),i=0;i=this.durationMS&&(this.usingWebAudio?this.loop?(this.onLoop.dispatch(this),this.isPlaying=!1,""===this.currentMarker?(this.currentTime=0,this.startTime=this.game.time.time,this.isPlaying=!0):(this.onMarkerComplete.dispatch(this.currentMarker,this),this.play(this.currentMarker,0,this.volume,!0,!0))):""!==this.currentMarker&&this.stop():this.loop?(this.onLoop.dispatch(this),""===this.currentMarker&&(this.currentTime=0,this.startTime=this.game.time.time),this.isPlaying=!1,this.play(this.currentMarker,0,this.volume,!0,!0)):this.stop())))):void this.destroy()},loopFull:function(a){this.play(null,0,a,!0)},play:function(a,b,c,d,e){if(void 0!==a&&a!==!1&&null!==a||(a=""),void 0===e&&(e=!0),this.isPlaying&&!this.allowMultiple&&!e&&!this.override)return this;if(this._sound&&this.isPlaying&&!this.allowMultiple&&(this.override||e))if(this.usingWebAudio){if(void 0===this._sound.stop)this._sound.noteOff(0);else try{this._sound.stop(0)}catch(f){}this.externalNode?this._sound.disconnect(this.externalNode):this.gainNode&&this._sound.disconnect(this.gainNode)}else this.usingAudioTag&&(this._sound.pause(),this._sound.currentTime=0);if(""===a&&Object.keys(this.markers).length>0)return this;if(""!==a){if(this.currentMarker=a,!this.markers[a])return this;this.position=this.markers[a].start,this.volume=this.markers[a].volume,this.loop=this.markers[a].loop,this.duration=this.markers[a].duration,this.durationMS=this.markers[a].durationMS,"undefined"!=typeof c&&(this.volume=c),"undefined"!=typeof d&&(this.loop=d),this._tempMarker=a,this._tempPosition=this.position,this._tempVolume=this.volume,this._tempLoop=this.loop}else b=b||0,void 0===c&&(c=this._volume),void 0===d&&(d=this.loop),this.position=Math.max(0,b),this.volume=c,this.loop=d,this.duration=0,this.durationMS=0,this._tempMarker=a,this._tempPosition=b,this._tempVolume=c,this._tempLoop=d;return this.usingWebAudio?this.game.cache.isSoundDecoded(this.key)?(this._sound=this.context.createBufferSource(),this.externalNode?this._sound.connect(this.externalNode):this._sound.connect(this.gainNode),this._buffer=this.game.cache.getSoundData(this.key),this._sound.buffer=this._buffer,this.loop&&""===a&&(this._sound.loop=!0),this.loop||""!==a||(this._sound.onended=this.onEndedHandler.bind(this)),this.totalDuration=this._sound.buffer.duration,0===this.duration&&(this.duration=this.totalDuration,this.durationMS=Math.ceil(1e3*this.totalDuration)),void 0===this._sound.start?this._sound.noteGrainOn(0,this.position,this.duration):this.loop&&""===a?this._sound.start(0,0):this._sound.start(0,this.position,this.duration),this.isPlaying=!0,this.startTime=this.game.time.time,this.currentTime=0,this.stopTime=this.startTime+this.durationMS,this.onPlay.dispatch(this)):(this.pendingPlayback=!0,this.game.cache.getSound(this.key)&&this.game.cache.getSound(this.key).isDecoding===!1&&this.game.sound.decode(this.key,this)):this.game.cache.getSound(this.key)&&this.game.cache.getSound(this.key).locked?(this.game.cache.reloadSound(this.key),this.pendingPlayback=!0):this._sound&&(this.game.device.cocoonJS||4===this._sound.readyState)?(this._sound.play(),this.totalDuration=this._sound.duration,0===this.duration&&(this.duration=this.totalDuration,this.durationMS=1e3*this.totalDuration),this._sound.currentTime=this.position,this._sound.muted=this._muted,this._muted||this.game.sound.mute?this._sound.volume=0:this._sound.volume=this._volume,this.isPlaying=!0,this.startTime=this.game.time.time,this.currentTime=0,this.stopTime=this.startTime+this.durationMS,this.onPlay.dispatch(this)):this.pendingPlayback=!0,this},restart:function(a,b,c,d){a=a||"",b=b||0,c=c||1,void 0===d&&(d=!1),this.play(a,b,c,d,!0)},pause:function(){this.isPlaying&&this._sound&&(this.paused=!0,this.pausedPosition=this.currentTime,this.pausedTime=this.game.time.time,this._tempPause=this._sound.currentTime,this.onPause.dispatch(this),this.stop())},resume:function(){if(this.paused&&this._sound){if(this.usingWebAudio){var a=Math.max(0,this.position+this.pausedPosition/1e3);this._sound=this.context.createBufferSource(),this._sound.buffer=this._buffer,this.externalNode?this._sound.connect(this.externalNode):this._sound.connect(this.gainNode),this.loop&&(this._sound.loop=!0),this.loop||""!==this.currentMarker||(this._sound.onended=this.onEndedHandler.bind(this));var b=this.duration-this.pausedPosition/1e3;void 0===this._sound.start?this._sound.noteGrainOn(0,a,b):this.loop&&this.game.device.chrome?42===this.game.device.chromeVersion?this._sound.start(0):this._sound.start(0,a):this._sound.start(0,a,b)}else this._sound.currentTime=this._tempPause,this._sound.play();this.isPlaying=!0,this.paused=!1,this.startTime+=this.game.time.time-this.pausedTime,this.onResume.dispatch(this)}},stop:function(){if(this.isPlaying&&this._sound)if(this.usingWebAudio){if(void 0===this._sound.stop)this._sound.noteOff(0);else try{this._sound.stop(0)}catch(a){}this.externalNode?this._sound.disconnect(this.externalNode):this.gainNode&&this._sound.disconnect(this.gainNode)}else this.usingAudioTag&&(this._sound.pause(),this._sound.currentTime=0);if(this.pendingPlayback=!1,this.isPlaying=!1,!this.paused){var b=this.currentMarker;""!==this.currentMarker&&this.onMarkerComplete.dispatch(this.currentMarker,this),this.currentMarker="",null!==this.fadeTween&&this.fadeTween.stop(),this.onStop.dispatch(this,b)}},fadeIn:function(a,b,c){void 0===b&&(b=!1),void 0===c&&(c=this.currentMarker),this.paused||(this.play(c,0,0,b),this.fadeTo(a,1))},fadeOut:function(a){this.fadeTo(a,0)},fadeTo:function(a,b){if(this.isPlaying&&!this.paused&&b!==this.volume){if(void 0===a&&(a=1e3),void 0===b)return void console.warn("Phaser.Sound.fadeTo: No Volume Specified.");this.fadeTween=this.game.add.tween(this).to({volume:b},a,c.Easing.Linear.None,!0),this.fadeTween.onComplete.add(this.fadeComplete,this)}},fadeComplete:function(){this.onFadeComplete.dispatch(this,this.volume),0===this.volume&&this.stop()},updateGlobalVolume:function(a){this.usingAudioTag&&this._sound&&(this._sound.volume=a*this._volume)},destroy:function(a){void 0===a&&(a=!0),this.stop(),a?this.game.sound.remove(this):(this.markers={},this.context=null,this._buffer=null,this.externalNode=null,this.onDecoded.dispose(),this.onPlay.dispose(),this.onPause.dispose(),this.onResume.dispose(),this.onLoop.dispose(),this.onStop.dispose(),this.onMute.dispose(),this.onMarkerComplete.dispose())}},c.Sound.prototype.constructor=c.Sound,Object.defineProperty(c.Sound.prototype,"isDecoding",{get:function(){return this.game.cache.getSound(this.key).isDecoding}}),Object.defineProperty(c.Sound.prototype,"isDecoded",{get:function(){return this.game.cache.isSoundDecoded(this.key)}}),Object.defineProperty(c.Sound.prototype,"mute",{get:function(){return this._muted||this.game.sound.mute},set:function(a){a=a||!1,a!==this._muted&&(a?(this._muted=!0,this._muteVolume=this._tempVolume,this.usingWebAudio?this.gainNode.gain.value=0:this.usingAudioTag&&this._sound&&(this._sound.volume=0)):(this._muted=!1,this.usingWebAudio?this.gainNode.gain.value=this._muteVolume:this.usingAudioTag&&this._sound&&(this._sound.volume=this._muteVolume)),this.onMute.dispatch(this))}}),Object.defineProperty(c.Sound.prototype,"volume",{get:function(){return this._volume},set:function(a){return this.game.device.firefox&&this.usingAudioTag&&(a=this.game.math.clamp(a,0,1)),this._muted?void(this._muteVolume=a):(this._tempVolume=a,this._volume=a,void(this.usingWebAudio?this.gainNode.gain.value=a:this.usingAudioTag&&this._sound&&(this._sound.volume=a)))}}),c.SoundManager=function(a){this.game=a,this.onSoundDecode=new c.Signal,this.onVolumeChange=new c.Signal,this.onMute=new c.Signal,this.onUnMute=new c.Signal,this.context=null,this.usingWebAudio=!1,this.usingAudioTag=!1,this.noAudio=!1,this.connectToMaster=!0,this.touchLocked=!1,this.channels=32,this.muteOnPause=!0,this._codeMuted=!1,this._muted=!1,this._unlockSource=null,this._volume=1,this._sounds=[],this._watchList=new c.ArraySet,this._watching=!1,this._watchCallback=null,this._watchContext=null},c.SoundManager.prototype={boot:function(){if(this.game.device.iOS&&this.game.device.webAudio===!1&&(this.channels=1),window.PhaserGlobal){if(window.PhaserGlobal.disableAudio===!0)return this.noAudio=!0,void(this.touchLocked=!1);if(window.PhaserGlobal.disableWebAudio===!0)return this.usingAudioTag=!0,void(this.touchLocked=!1)}if(window.PhaserGlobal&&window.PhaserGlobal.audioContext)this.context=window.PhaserGlobal.audioContext;else if(window.AudioContext)try{this.context=new window.AudioContext}catch(a){this.context=null,this.usingWebAudio=!1,this.touchLocked=!1}else if(window.webkitAudioContext)try{this.context=new window.webkitAudioContext}catch(a){this.context=null,this.usingWebAudio=!1,this.touchLocked=!1}if(null===this.context){if(void 0===window.Audio)return void(this.noAudio=!0);this.usingAudioTag=!0}else this.usingWebAudio=!0,void 0===this.context.createGain?this.masterGain=this.context.createGainNode():this.masterGain=this.context.createGain(),this.masterGain.gain.value=1,this.masterGain.connect(this.context.destination);this.noAudio||(!this.game.device.cocoonJS&&this.game.device.iOS||window.PhaserGlobal&&window.PhaserGlobal.fakeiOSTouchLock)&&this.setTouchLock()},setTouchLock:function(){this.noAudio||window.PhaserGlobal&&window.PhaserGlobal.disableAudio===!0||(this.game.device.iOSVersion>8?this.game.input.touch.addTouchLockCallback(this.unlock,this,!0):this.game.input.touch.addTouchLockCallback(this.unlock,this),this.touchLocked=!0)},unlock:function(){if(this.noAudio||!this.touchLocked||null!==this._unlockSource)return!0;if(this.usingAudioTag)this.touchLocked=!1,this._unlockSource=null;else if(this.usingWebAudio){var a=this.context.createBuffer(1,1,22050);this._unlockSource=this.context.createBufferSource(),this._unlockSource.buffer=a,this._unlockSource.connect(this.context.destination),void 0===this._unlockSource.start?this._unlockSource.noteOn(0):this._unlockSource.start(0)}return!0},stopAll:function(){if(!this.noAudio)for(var a=0;aa?a=0:a>1&&(a=1),this._volume!==a){if(this._volume=a,this.usingWebAudio)this.masterGain.gain.value=a;else for(var b=0;b=400?0:100,this.dom.getOffset(this.game.canvas,this.offset);var b=this._parentBounds.width,d=this._parentBounds.height,e=this.getParentBounds(this._parentBounds),f=e.width!==b||e.height!==d,g=this.updateOrientationState();(f||g)&&(this.onResize&&this.onResize.call(this.onResizeContext,this,e),this.updateLayout(),this.signalSizeChange());var h=2*this._updateThrottle;this._updateThrottle=b||0>=c)return a;var e=b,f=a.height*b/a.width,g=a.width*c/a.height,h=c,i=g>b;return i=i?d:!d,i?(a.width=Math.floor(e),a.height=Math.floor(f)):(a.width=Math.floor(g),a.height=Math.floor(h)),a},destroy:function(){this.game.onResume.remove(this._gameResumed,this),window.removeEventListener("orientationchange",this._orientationChange,!1),window.removeEventListener("resize",this._windowResize,!1),this.compatibility.supportsFullScreen&&(document.removeEventListener("webkitfullscreenchange",this._fullScreenChange,!1),document.removeEventListener("mozfullscreenchange",this._fullScreenChange,!1),document.removeEventListener("MSFullscreenChange",this._fullScreenChange,!1),document.removeEventListener("fullscreenchange",this._fullScreenChange,!1),document.removeEventListener("webkitfullscreenerror",this._fullScreenError,!1),document.removeEventListener("mozfullscreenerror",this._fullScreenError,!1),document.removeEventListener("MSFullscreenError",this._fullScreenError,!1),document.removeEventListener("fullscreenerror",this._fullScreenError,!1))}},c.ScaleManager.prototype.constructor=c.ScaleManager,Object.defineProperty(c.ScaleManager.prototype,"boundingParent",{get:function(){if(this.parentIsWindow||this.isFullScreen&&!this._createdFullScreenTarget)return null;var a=this.game.canvas&&this.game.canvas.parentNode;return a||null}}),Object.defineProperty(c.ScaleManager.prototype,"scaleMode",{get:function(){return this._scaleMode},set:function(a){return a!==this._scaleMode&&(this.isFullScreen||(this.updateDimensions(this._gameSize.width,this._gameSize.height,!0),this.queueUpdate(!0)),this._scaleMode=a),this._scaleMode}}),Object.defineProperty(c.ScaleManager.prototype,"fullScreenScaleMode",{get:function(){return this._fullScreenScaleMode},set:function(a){return a!==this._fullScreenScaleMode&&(this.isFullScreen?(this.prepScreenMode(!1),this._fullScreenScaleMode=a,this.prepScreenMode(!0),this.queueUpdate(!0)):this._fullScreenScaleMode=a),this._fullScreenScaleMode}}),Object.defineProperty(c.ScaleManager.prototype,"currentScaleMode",{get:function(){return this.isFullScreen?this._fullScreenScaleMode:this._scaleMode}}),Object.defineProperty(c.ScaleManager.prototype,"pageAlignHorizontally",{get:function(){return this._pageAlignHorizontally},set:function(a){a!==this._pageAlignHorizontally&&(this._pageAlignHorizontally=a,this.queueUpdate(!0))}}),Object.defineProperty(c.ScaleManager.prototype,"pageAlignVertically",{get:function(){return this._pageAlignVertically},set:function(a){a!==this._pageAlignVertically&&(this._pageAlignVertically=a,this.queueUpdate(!0))}}),Object.defineProperty(c.ScaleManager.prototype,"isFullScreen",{get:function(){return!!(document.fullscreenElement||document.webkitFullscreenElement||document.mozFullScreenElement||document.msFullscreenElement)}}),Object.defineProperty(c.ScaleManager.prototype,"isPortrait",{get:function(){return"portrait"===this.classifyOrientation(this.screenOrientation)}}),Object.defineProperty(c.ScaleManager.prototype,"isLandscape",{get:function(){return"landscape"===this.classifyOrientation(this.screenOrientation)}}),Object.defineProperty(c.ScaleManager.prototype,"isGamePortrait",{get:function(){return this.height>this.width}}),Object.defineProperty(c.ScaleManager.prototype,"isGameLandscape",{get:function(){return this.width>this.height}}),c.Utils.Debug=function(a){this.game=a,this.sprite=null,this.bmd=null,this.canvas=null,this.context=null,this.font="14px Courier",this.columnWidth=100,this.lineHeight=16,this.renderShadow=!0,this.currentX=0,this.currentY=0,this.currentAlpha=1,this.dirty=!1},c.Utils.Debug.prototype={boot:function(){this.game.renderType===c.CANVAS?this.context=this.game.context:(this.bmd=new c.BitmapData(this.game,"__DEBUG",this.game.width,this.game.height,!0),this.sprite=this.game.make.image(0,0,this.bmd),this.game.stage.addChild(this.sprite),this.game.scale.onSizeChange.add(this.resize,this),this.canvas=PIXI.CanvasPool.create(this,this.game.width,this.game.height),this.context=this.canvas.getContext("2d"))},resize:function(a,b,c){this.bmd.resize(b,c),this.canvas.width=b,this.canvas.height=c},preUpdate:function(){this.dirty&&this.sprite&&(this.bmd.clear(),this.bmd.draw(this.canvas,0,0),this.context.clearRect(0,0,this.game.width,this.game.height),this.dirty=!1)},reset:function(){this.context&&this.context.clearRect(0,0,this.game.width,this.game.height),this.sprite&&this.bmd.clear()},start:function(a,b,c,d){"number"!=typeof a&&(a=0),"number"!=typeof b&&(b=0),c=c||"rgb(255,255,255)",void 0===d&&(d=0),this.currentX=a,this.currentY=b,this.currentColor=c,this.columnWidth=d,this.dirty=!0,this.context.save(),this.context.setTransform(1,0,0,1,0,0),this.context.strokeStyle=c,this.context.fillStyle=c,this.context.font=this.font,this.context.globalAlpha=this.currentAlpha},stop:function(){this.context.restore()},line:function(){for(var a=this.currentX,b=0;b0)for(var b=0;b=0&&c.right>=0&&c.top<=this.layoutBounds.width&&c.left<=this.layoutBounds.height},getScreenOrientation:function(a){var b=window.screen,c=b.orientation||b.mozOrientation||b.msOrientation;if(c&&"string"==typeof c.type)return c.type;if("string"==typeof c)return c;var d="portrait-primary",e="landscape-primary"; +if("screen"===a)return b.height>b.width?d:e;if("viewport"===a)return this.visualBounds.height>this.visualBounds.width?d:e;if("window.orientation"===a&&"number"==typeof window.orientation)return 0===window.orientation||180===window.orientation?d:e;if(window.matchMedia){if(window.matchMedia("(orientation: portrait)").matches)return d;if(window.matchMedia("(orientation: landscape)").matches)return e}return this.visualBounds.height>this.visualBounds.width?d:e},visualBounds:new c.Rectangle,layoutBounds:new c.Rectangle,documentBounds:new c.Rectangle},c.Device.whenReady(function(a){var b=window&&"pageXOffset"in window?function(){return window.pageXOffset}:function(){return document.documentElement.scrollLeft},d=window&&"pageYOffset"in window?function(){return window.pageYOffset}:function(){return document.documentElement.scrollTop};Object.defineProperty(c.DOM,"scrollX",{get:b}),Object.defineProperty(c.DOM,"scrollY",{get:d}),Object.defineProperty(c.DOM.visualBounds,"x",{get:b}),Object.defineProperty(c.DOM.visualBounds,"y",{get:d}),Object.defineProperty(c.DOM.layoutBounds,"x",{value:0}),Object.defineProperty(c.DOM.layoutBounds,"y",{value:0});var e=a.desktop&&document.documentElement.clientWidth<=window.innerWidth&&document.documentElement.clientHeight<=window.innerHeight;if(e){var f=function(){return Math.max(window.innerWidth,document.documentElement.clientWidth)},g=function(){return Math.max(window.innerHeight,document.documentElement.clientHeight)};Object.defineProperty(c.DOM.visualBounds,"width",{get:f}),Object.defineProperty(c.DOM.visualBounds,"height",{get:g}),Object.defineProperty(c.DOM.layoutBounds,"width",{get:f}),Object.defineProperty(c.DOM.layoutBounds,"height",{get:g})}else Object.defineProperty(c.DOM.visualBounds,"width",{get:function(){return window.innerWidth}}),Object.defineProperty(c.DOM.visualBounds,"height",{get:function(){return window.innerHeight}}),Object.defineProperty(c.DOM.layoutBounds,"width",{get:function(){var a=document.documentElement.clientWidth,b=window.innerWidth;return b>a?b:a}}),Object.defineProperty(c.DOM.layoutBounds,"height",{get:function(){var a=document.documentElement.clientHeight,b=window.innerHeight;return b>a?b:a}});Object.defineProperty(c.DOM.documentBounds,"x",{value:0}),Object.defineProperty(c.DOM.documentBounds,"y",{value:0}),Object.defineProperty(c.DOM.documentBounds,"width",{get:function(){var a=document.documentElement;return Math.max(a.clientWidth,a.offsetWidth,a.scrollWidth)}}),Object.defineProperty(c.DOM.documentBounds,"height",{get:function(){var a=document.documentElement;return Math.max(a.clientHeight,a.offsetHeight,a.scrollHeight)}})},null,!0),c.ArraySet=function(a){this.position=0,this.list=a||[]},c.ArraySet.prototype={add:function(a){return this.exists(a)||this.list.push(a),a},getIndex:function(a){return this.list.indexOf(a)},getByKey:function(a,b){for(var c=this.list.length;c--;)if(this.list[c][a]===b)return this.list[c];return null},exists:function(a){return this.list.indexOf(a)>-1},reset:function(){this.list.length=0},remove:function(a){var b=this.list.indexOf(a);return b>-1?(this.list.splice(b,1),a):void 0},setAll:function(a,b){for(var c=this.list.length;c--;)this.list[c]&&(this.list[c][a]=b)},callAll:function(a){for(var b=Array.prototype.slice.call(arguments,1),c=this.list.length;c--;)this.list[c]&&this.list[c][a]&&this.list[c][a].apply(this.list[c],b)},removeAll:function(a){void 0===a&&(a=!1);for(var b=this.list.length;b--;)if(this.list[b]){var c=this.remove(this.list[b]);a&&c.destroy()}this.position=0,this.list=[]}},Object.defineProperty(c.ArraySet.prototype,"total",{get:function(){return this.list.length}}),Object.defineProperty(c.ArraySet.prototype,"first",{get:function(){return this.position=0,this.list.length>0?this.list[0]:null}}),Object.defineProperty(c.ArraySet.prototype,"next",{get:function(){return this.position0;b--){var c=Math.floor(Math.random()*(b+1)),d=a[b];a[b]=a[c],a[c]=d}return a},transposeMatrix:function(a){for(var b=a.length,c=a[0].length,d=new Array(c),e=0;c>e;e++){d[e]=new Array(b);for(var f=b-1;f>-1;f--)d[e][f]=a[f][e]}return d},rotateMatrix:function(a,b){if("string"!=typeof b&&(b=(b%360+360)%360),90===b||-270===b||"rotateLeft"===b)a=c.ArrayUtils.transposeMatrix(a),a=a.reverse();else if(-90===b||270===b||"rotateRight"===b)a=a.reverse(),a=c.ArrayUtils.transposeMatrix(a);else if(180===Math.abs(b)||"rotate180"===b){for(var d=0;d=e-a?e:d},rotateRight:function(a){var b=a.pop();return a.unshift(b),b},rotateLeft:function(a){var b=a.shift();return a.push(b),b},rotate:function(a){var b=a.shift();return a.push(b),b},numberArray:function(a,b){for(var c=[],d=a;b>=d;d++)c.push(d);return c},numberArrayStep:function(a,b,d){void 0!==a&&null!==a||(a=0),void 0!==b&&null!==b||(b=a,a=0),void 0===d&&(d=1);for(var e=[],f=Math.max(c.Math.roundAwayFromZero((b-a)/(d||1)),0),g=0;f>g;g++)e.push(a),a+=d;return e}},c.LinkedList=function(){this.next=null,this.prev=null,this.first=null,this.last=null,this.total=0},c.LinkedList.prototype={add:function(a){return 0===this.total&&null===this.first&&null===this.last?(this.first=a,this.last=a,this.next=a,a.prev=this,this.total++,a):(this.last.next=a,a.prev=this.last,this.last=a,this.total++,a)},reset:function(){this.first=null,this.last=null,this.next=null,this.prev=null,this.total=0},remove:function(a){return 1===this.total?(this.reset(),void(a.next=a.prev=null)):(a===this.first?this.first=this.first.next:a===this.last&&(this.last=this.last.prev),a.prev&&(a.prev.next=a.next),a.next&&(a.next.prev=a.prev),a.next=a.prev=null,null===this.first&&(this.last=null),void this.total--)},callAll:function(a){if(this.first&&this.last){var b=this.first;do b&&b[a]&&b[a].call(b),b=b.next;while(b!=this.last.next)}}},c.LinkedList.prototype.constructor=c.LinkedList,c.Create=function(a){this.game=a,this.bmd=null,this.canvas=null,this.ctx=null,this.palettes=[{0:"#000",1:"#9D9D9D",2:"#FFF",3:"#BE2633",4:"#E06F8B",5:"#493C2B",6:"#A46422",7:"#EB8931",8:"#F7E26B",9:"#2F484E",A:"#44891A",B:"#A3CE27",C:"#1B2632",D:"#005784",E:"#31A2F2",F:"#B2DCEF"},{0:"#000",1:"#191028",2:"#46af45",3:"#a1d685",4:"#453e78",5:"#7664fe",6:"#833129",7:"#9ec2e8",8:"#dc534b",9:"#e18d79",A:"#d6b97b",B:"#e9d8a1",C:"#216c4b",D:"#d365c8",E:"#afaab9",F:"#f5f4eb"},{0:"#000",1:"#2234d1",2:"#0c7e45",3:"#44aacc",4:"#8a3622",5:"#5c2e78",6:"#aa5c3d",7:"#b5b5b5",8:"#5e606e",9:"#4c81fb",A:"#6cd947",B:"#7be2f9",C:"#eb8a60",D:"#e23d69",E:"#ffd93f",F:"#fff"},{0:"#000",1:"#fff",2:"#8b4131",3:"#7bbdc5",4:"#8b41ac",5:"#6aac41",6:"#3931a4",7:"#d5de73",8:"#945a20",9:"#5a4100",A:"#bd736a",B:"#525252",C:"#838383",D:"#acee8b",E:"#7b73de",F:"#acacac"},{0:"#000",1:"#191028",2:"#46af45",3:"#a1d685",4:"#453e78",5:"#7664fe",6:"#833129",7:"#9ec2e8",8:"#dc534b",9:"#e18d79",A:"#d6b97b",B:"#e9d8a1",C:"#216c4b",D:"#d365c8",E:"#afaab9",F:"#fff"}]},c.Create.PALETTE_ARNE=0,c.Create.PALETTE_JMP=1,c.Create.PALETTE_CGA=2,c.Create.PALETTE_C64=3,c.Create.PALETTE_JAPANESE_MACHINE=4,c.Create.prototype={texture:function(a,b,c,d,e){void 0===c&&(c=8),void 0===d&&(d=c),void 0===e&&(e=0);var f=b[0].length*c,g=b.length*d;null===this.bmd&&(this.bmd=this.game.make.bitmapData(),this.canvas=this.bmd.canvas,this.ctx=this.bmd.context),this.bmd.resize(f,g),this.bmd.clear();for(var h=0;hg;g+=e)this.ctx.fillRect(0,g,b,1);for(var h=0;b>h;h+=d)this.ctx.fillRect(h,0,1,c);return this.bmd.generateTexture(a)}},c.Create.prototype.constructor=c.Create,c.FlexGrid=function(a,b,d){this.game=a.game,this.manager=a,this.width=b,this.height=d,this.boundsCustom=new c.Rectangle(0,0,b,d),this.boundsFluid=new c.Rectangle(0,0,b,d),this.boundsFull=new c.Rectangle(0,0,b,d),this.boundsNone=new c.Rectangle(0,0,b,d),this.positionCustom=new c.Point(0,0),this.positionFluid=new c.Point(0,0),this.positionFull=new c.Point(0,0),this.positionNone=new c.Point(0,0),this.scaleCustom=new c.Point(1,1),this.scaleFluid=new c.Point(1,1),this.scaleFluidInversed=new c.Point(1,1),this.scaleFull=new c.Point(1,1),this.scaleNone=new c.Point(1,1),this.customWidth=0,this.customHeight=0,this.customOffsetX=0,this.customOffsetY=0,this.ratioH=b/d,this.ratioV=d/b,this.multiplier=0,this.layers=[]},c.FlexGrid.prototype={setSize:function(a,b){this.width=a,this.height=b,this.ratioH=a/b,this.ratioV=b/a,this.scaleNone=new c.Point(1,1),this.boundsNone.width=this.width,this.boundsNone.height=this.height,this.refresh()},createCustomLayer:function(a,b,d,e){void 0===e&&(e=!0),this.customWidth=a,this.customHeight=b,this.boundsCustom.width=a,this.boundsCustom.height=b;var f=new c.FlexLayer(this,this.positionCustom,this.boundsCustom,this.scaleCustom);return e&&this.game.world.add(f),this.layers.push(f),"undefined"!=typeof d&&null!==typeof d&&f.addMultiple(d),f},createFluidLayer:function(a,b){void 0===b&&(b=!0);var d=new c.FlexLayer(this,this.positionFluid,this.boundsFluid,this.scaleFluid);return b&&this.game.world.add(d),this.layers.push(d),"undefined"!=typeof a&&null!==typeof a&&d.addMultiple(a),d},createFullLayer:function(a){var b=new c.FlexLayer(this,this.positionFull,this.boundsFull,this.scaleFluid);return this.game.world.add(b),this.layers.push(b),"undefined"!=typeof a&&b.addMultiple(a),b},createFixedLayer:function(a){var b=new c.FlexLayer(this,this.positionNone,this.boundsNone,this.scaleNone);return this.game.world.add(b),this.layers.push(b),"undefined"!=typeof a&&b.addMultiple(a),b},reset:function(){for(var a=this.layers.length;a--;)this.layers[a].persist||(this.layers[a].position=null,this.layers[a].scale=null,this.layers.slice(a,1))},onResize:function(a,b){this.ratioH=a/b,this.ratioV=b/a,this.refresh(a,b)},refresh:function(){this.multiplier=Math.min(this.manager.height/this.height,this.manager.width/this.width),this.boundsFluid.width=Math.round(this.width*this.multiplier),this.boundsFluid.height=Math.round(this.height*this.multiplier),this.scaleFluid.set(this.boundsFluid.width/this.width,this.boundsFluid.height/this.height),this.scaleFluidInversed.set(this.width/this.boundsFluid.width,this.height/this.boundsFluid.height),this.scaleFull.set(this.boundsFull.width/this.width,this.boundsFull.height/this.height),this.boundsFull.width=Math.round(this.manager.width*this.scaleFluidInversed.x),this.boundsFull.height=Math.round(this.manager.height*this.scaleFluidInversed.y),this.boundsFluid.centerOn(this.manager.bounds.centerX,this.manager.bounds.centerY),this.boundsNone.centerOn(this.manager.bounds.centerX,this.manager.bounds.centerY),this.positionFluid.set(this.boundsFluid.x,this.boundsFluid.y),this.positionNone.set(this.boundsNone.x,this.boundsNone.y)},fitSprite:function(a){this.manager.scaleSprite(a),a.x=this.manager.bounds.centerX,a.y=this.manager.bounds.centerY},debug:function(){this.game.debug.text(this.boundsFluid.width+" x "+this.boundsFluid.height,this.boundsFluid.x+4,this.boundsFluid.y+16),this.game.debug.geom(this.boundsFluid,"rgba(255,0,0,0.9",!1)}},c.FlexGrid.prototype.constructor=c.FlexGrid,c.FlexLayer=function(a,b,d,e){c.Group.call(this,a.game,null,"__flexLayer"+a.game.rnd.uuid(),!1),this.manager=a.manager,this.grid=a,this.persist=!1,this.position=b,this.bounds=d,this.scale=e,this.topLeft=d.topLeft,this.topMiddle=new c.Point(d.halfWidth,0),this.topRight=d.topRight,this.bottomLeft=d.bottomLeft,this.bottomMiddle=new c.Point(d.halfWidth,d.bottom),this.bottomRight=d.bottomRight},c.FlexLayer.prototype=Object.create(c.Group.prototype),c.FlexLayer.prototype.constructor=c.FlexLayer,c.FlexLayer.prototype.resize=function(){},c.FlexLayer.prototype.debug=function(){this.game.debug.text(this.bounds.width+" x "+this.bounds.height,this.bounds.x+4,this.bounds.y+16),this.game.debug.geom(this.bounds,"rgba(0,0,255,0.9",!1),this.game.debug.geom(this.topLeft,"rgba(255,255,255,0.9"),this.game.debug.geom(this.topMiddle,"rgba(255,255,255,0.9"),this.game.debug.geom(this.topRight,"rgba(255,255,255,0.9")},c.Color={packPixel:function(a,b,d,e){return c.Device.LITTLE_ENDIAN?(e<<24|d<<16|b<<8|a)>>>0:(a<<24|b<<16|d<<8|e)>>>0},unpackPixel:function(a,b,d,e){return void 0!==b&&null!==b||(b=c.Color.createColor()),void 0!==d&&null!==d||(d=!1),void 0!==e&&null!==e||(e=!1),c.Device.LITTLE_ENDIAN?(b.a=(4278190080&a)>>>24,b.b=(16711680&a)>>>16,b.g=(65280&a)>>>8,b.r=255&a):(b.r=(4278190080&a)>>>24,b.g=(16711680&a)>>>16,b.b=(65280&a)>>>8,b.a=255&a),b.color=a,b.rgba="rgba("+b.r+","+b.g+","+b.b+","+b.a/255+")",d&&c.Color.RGBtoHSL(b.r,b.g,b.b,b),e&&c.Color.RGBtoHSV(b.r,b.g,b.b,b),b},fromRGBA:function(a,b){return b||(b=c.Color.createColor()),b.r=(4278190080&a)>>>24,b.g=(16711680&a)>>>16,b.b=(65280&a)>>>8,b.a=255&a,b.rgba="rgba("+b.r+","+b.g+","+b.b+","+b.a+")",b},toRGBA:function(a,b,c,d){return a<<24|b<<16|c<<8|d},toABGR:function(a,b,c,d){return(d<<24|c<<16|b<<8|a)>>>0},RGBtoHSL:function(a,b,d,e){e||(e=c.Color.createColor(a,b,d,1)),a/=255,b/=255,d/=255;var f=Math.min(a,b,d),g=Math.max(a,b,d);if(e.h=0,e.s=0,e.l=(g+f)/2,g!==f){var h=g-f;e.s=e.l>.5?h/(2-g-f):h/(g+f),g===a?e.h=(b-d)/h+(d>b?6:0):g===b?e.h=(d-a)/h+2:g===d&&(e.h=(a-b)/h+4),e.h/=6}return e},HSLtoRGB:function(a,b,d,e){if(e?(e.r=d,e.g=d,e.b=d):e=c.Color.createColor(d,d,d),0!==b){var f=.5>d?d*(1+b):d+b-d*b,g=2*d-f;e.r=c.Color.hueToColor(g,f,a+1/3),e.g=c.Color.hueToColor(g,f,a),e.b=c.Color.hueToColor(g,f,a-1/3)}return e.r=Math.floor(255*e.r|0),e.g=Math.floor(255*e.g|0),e.b=Math.floor(255*e.b|0),c.Color.updateColor(e),e},RGBtoHSV:function(a,b,d,e){e||(e=c.Color.createColor(a,b,d,255)),a/=255,b/=255,d/=255;var f=Math.min(a,b,d),g=Math.max(a,b,d),h=g-f;return e.h=0,e.s=0===g?0:h/g,e.v=g,g!==f&&(g===a?e.h=(b-d)/h+(d>b?6:0):g===b?e.h=(d-a)/h+2:g===d&&(e.h=(a-b)/h+4),e.h/=6),e},HSVtoRGB:function(a,b,d,e){void 0===e&&(e=c.Color.createColor(0,0,0,1,a,b,0,d));var f,g,h,i=Math.floor(6*a),j=6*a-i,k=d*(1-b),l=d*(1-j*b),m=d*(1-(1-j)*b);switch(i%6){case 0:f=d,g=m,h=k;break;case 1:f=l,g=d,h=k;break;case 2:f=k,g=d,h=m;break;case 3:f=k,g=l,h=d;break;case 4:f=m,g=k,h=d;break;case 5:f=d,g=k,h=l}return e.r=Math.floor(255*f),e.g=Math.floor(255*g),e.b=Math.floor(255*h),c.Color.updateColor(e),e},hueToColor:function(a,b,c){return 0>c&&(c+=1),c>1&&(c-=1),1/6>c?a+6*(b-a)*c:.5>c?b:2/3>c?a+(b-a)*(2/3-c)*6:a},createColor:function(a,b,d,e,f,g,h,i){var j={r:a||0,g:b||0,b:d||0,a:e||1,h:f||0,s:g||0,l:h||0,v:i||0,color:0,color32:0,rgba:""};return c.Color.updateColor(j)},updateColor:function(a){return a.rgba="rgba("+a.r.toString()+","+a.g.toString()+","+a.b.toString()+","+a.a.toString()+")",a.color=c.Color.getColor(a.r,a.g,a.b),a.color32=c.Color.getColor32(255*a.a,a.r,a.g,a.b),a},getColor32:function(a,b,c,d){return a<<24|b<<16|c<<8|d},getColor:function(a,b,c){return a<<16|b<<8|c},RGBtoString:function(a,b,d,e,f){return void 0===e&&(e=255),void 0===f&&(f="#"),"#"===f?"#"+((1<<24)+(a<<16)+(b<<8)+d).toString(16).slice(1):"0x"+c.Color.componentToHex(e)+c.Color.componentToHex(a)+c.Color.componentToHex(b)+c.Color.componentToHex(d)},hexToRGB:function(a){var b=c.Color.hexToColor(a);return b?c.Color.getColor32(b.a,b.r,b.g,b.b):void 0},hexToColor:function(a,b){a=a.replace(/^(?:#|0x)?([a-f\d])([a-f\d])([a-f\d])$/i,function(a,b,c,d){return b+b+c+c+d+d});var d=/^(?:#|0x)?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(a);if(d){var e=parseInt(d[1],16),f=parseInt(d[2],16),g=parseInt(d[3],16);b?(b.r=e,b.g=f,b.b=g):b=c.Color.createColor(e,f,g)}return b},webToColor:function(a,b){b||(b=c.Color.createColor());var d=/^rgba?\(\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*(?:,\s*(\d+(?:\.\d+)?))?\s*\)$/.exec(a);return d&&(b.r=parseInt(d[1],10),b.g=parseInt(d[2],10),b.b=parseInt(d[3],10),b.a=void 0!==d[4]?parseFloat(d[4]):1,c.Color.updateColor(b)),b},valueToColor:function(a,b){if(b||(b=c.Color.createColor()),"string"==typeof a)return 0===a.indexOf("rgb")?c.Color.webToColor(a,b):(b.a=1,c.Color.hexToColor(a,b));if("number"==typeof a){var d=c.Color.getRGB(a);return b.r=d.r,b.g=d.g,b.b=d.b,b.a=d.a/255,b}return b},componentToHex:function(a){var b=a.toString(16);return 1==b.length?"0"+b:b},HSVColorWheel:function(a,b){void 0===a&&(a=1),void 0===b&&(b=1);for(var d=[],e=0;359>=e;e++)d.push(c.Color.HSVtoRGB(e/359,a,b));return d},HSLColorWheel:function(a,b){void 0===a&&(a=.5),void 0===b&&(b=.5);for(var d=[],e=0;359>=e;e++)d.push(c.Color.HSLtoRGB(e/359,a,b));return d},interpolateColor:function(a,b,d,e,f){void 0===f&&(f=255);var g=c.Color.getRGB(a),h=c.Color.getRGB(b),i=(h.red-g.red)*e/d+g.red,j=(h.green-g.green)*e/d+g.green,k=(h.blue-g.blue)*e/d+g.blue;return c.Color.getColor32(f,i,j,k)},interpolateColorWithRGB:function(a,b,d,e,f,g){var h=c.Color.getRGB(a),i=(b-h.red)*g/f+h.red,j=(d-h.green)*g/f+h.green,k=(e-h.blue)*g/f+h.blue;return c.Color.getColor(i,j,k)},interpolateRGB:function(a,b,d,e,f,g,h,i){var j=(e-a)*i/h+a,k=(f-b)*i/h+b,l=(g-d)*i/h+d;return c.Color.getColor(j,k,l)},getRandomColor:function(a,b,d){if(void 0===a&&(a=0),void 0===b&&(b=255),void 0===d&&(d=255),b>255||a>b)return c.Color.getColor(255,255,255);var e=a+Math.round(Math.random()*(b-a)),f=a+Math.round(Math.random()*(b-a)),g=a+Math.round(Math.random()*(b-a));return c.Color.getColor32(d,e,f,g)},getRGB:function(a){return a>16777215?{alpha:a>>>24,red:a>>16&255,green:a>>8&255,blue:255&a,a:a>>>24,r:a>>16&255,g:a>>8&255,b:255&a}:{alpha:255,red:a>>16&255,green:a>>8&255,blue:255&a,a:255,r:a>>16&255,g:a>>8&255,b:255&a}},getWebRGB:function(a){if("object"==typeof a)return"rgba("+a.r.toString()+","+a.g.toString()+","+a.b.toString()+","+(a.a/255).toString()+")";var b=c.Color.getRGB(a);return"rgba("+b.r.toString()+","+b.g.toString()+","+b.b.toString()+","+(b.a/255).toString()+")"},getAlpha:function(a){return a>>>24},getAlphaFloat:function(a){return(a>>>24)/255},getRed:function(a){return a>>16&255},getGreen:function(a){return a>>8&255},getBlue:function(a){return 255&a},blendNormal:function(a){return a},blendLighten:function(a,b){return b>a?b:a},blendDarken:function(a,b){return b>a?a:b},blendMultiply:function(a,b){return a*b/255},blendAverage:function(a,b){return(a+b)/2},blendAdd:function(a,b){return Math.min(255,a+b)},blendSubtract:function(a,b){return Math.max(0,a+b-255)},blendDifference:function(a,b){return Math.abs(a-b)},blendNegation:function(a,b){return 255-Math.abs(255-a-b)},blendScreen:function(a,b){return 255-((255-a)*(255-b)>>8)},blendExclusion:function(a,b){return a+b-2*a*b/255},blendOverlay:function(a,b){return 128>b?2*a*b/255:255-2*(255-a)*(255-b)/255},blendSoftLight:function(a,b){return 128>b?2*((a>>1)+64)*(b/255):255-2*(255-((a>>1)+64))*(255-b)/255},blendHardLight:function(a,b){return c.Color.blendOverlay(b,a)},blendColorDodge:function(a,b){return 255===b?b:Math.min(255,(a<<8)/(255-b))},blendColorBurn:function(a,b){return 0===b?b:Math.max(0,255-(255-a<<8)/b)},blendLinearDodge:function(a,b){return c.Color.blendAdd(a,b)},blendLinearBurn:function(a,b){return c.Color.blendSubtract(a,b)},blendLinearLight:function(a,b){return 128>b?c.Color.blendLinearBurn(a,2*b):c.Color.blendLinearDodge(a,2*(b-128))},blendVividLight:function(a,b){return 128>b?c.Color.blendColorBurn(a,2*b):c.Color.blendColorDodge(a,2*(b-128))},blendPinLight:function(a,b){return 128>b?c.Color.blendDarken(a,2*b):c.Color.blendLighten(a,2*(b-128))},blendHardMix:function(a,b){return c.Color.blendVividLight(a,b)<128?0:255},blendReflect:function(a,b){return 255===b?b:Math.min(255,a*a/(255-b))},blendGlow:function(a,b){return c.Color.blendReflect(b,a)},blendPhoenix:function(a,b){return Math.min(a,b)-Math.max(a,b)+255}},c.Physics=function(a,b){b=b||{},this.game=a,this.config=b,this.arcade=null,this.p2=null,this.ninja=null,this.box2d=null,this.chipmunk=null,this.matter=null,this.parseConfig()},c.Physics.ARCADE=0,c.Physics.P2JS=1,c.Physics.NINJA=2,c.Physics.BOX2D=3,c.Physics.CHIPMUNK=4,c.Physics.MATTERJS=5,c.Physics.prototype={parseConfig:function(){this.config.hasOwnProperty("arcade")&&this.config.arcade!==!0||!c.Physics.hasOwnProperty("Arcade")||(this.arcade=new c.Physics.Arcade(this.game)),this.config.hasOwnProperty("ninja")&&this.config.ninja===!0&&c.Physics.hasOwnProperty("Ninja")&&(this.ninja=new c.Physics.Ninja(this.game)),this.config.hasOwnProperty("p2")&&this.config.p2===!0&&c.Physics.hasOwnProperty("P2")&&(this.p2=new c.Physics.P2(this.game,this.config)),this.config.hasOwnProperty("box2d")&&this.config.box2d===!0&&c.Physics.hasOwnProperty("BOX2D")&&(this.box2d=new c.Physics.BOX2D(this.game,this.config)),this.config.hasOwnProperty("matter")&&this.config.matter===!0&&c.Physics.hasOwnProperty("Matter")&&(this.matter=new c.Physics.Matter(this.game,this.config))},startSystem:function(a){a===c.Physics.ARCADE?this.arcade=new c.Physics.Arcade(this.game):a===c.Physics.P2JS?null===this.p2?this.p2=new c.Physics.P2(this.game,this.config):this.p2.reset():a===c.Physics.NINJA?this.ninja=new c.Physics.Ninja(this.game):a===c.Physics.BOX2D?null===this.box2d?this.box2d=new c.Physics.Box2D(this.game,this.config):this.box2d.reset():a===c.Physics.MATTERJS&&(null===this.matter?this.matter=new c.Physics.Matter(this.game,this.config):this.matter.reset())},enable:function(a,b,d){void 0===b&&(b=c.Physics.ARCADE),void 0===d&&(d=!1),b===c.Physics.ARCADE?this.arcade.enable(a):b===c.Physics.P2JS&&this.p2?this.p2.enable(a,d):b===c.Physics.NINJA&&this.ninja?this.ninja.enableAABB(a):b===c.Physics.BOX2D&&this.box2d?this.box2d.enable(a):b===c.Physics.MATTERJS&&this.matter?this.matter.enable(a):console.warn(a.key+" is attempting to enable a physics body using an unknown physics system.")},preUpdate:function(){this.p2&&this.p2.preUpdate(),this.box2d&&this.box2d.preUpdate(),this.matter&&this.matter.preUpdate()},update:function(){this.p2&&this.p2.update(),this.box2d&&this.box2d.update(),this.matter&&this.matter.update()},setBoundsToWorld:function(){this.arcade&&this.arcade.setBoundsToWorld(),this.ninja&&this.ninja.setBoundsToWorld(),this.p2&&this.p2.setBoundsToWorld(),this.box2d&&this.box2d.setBoundsToWorld(),this.matter&&this.matter.setBoundsToWorld()},clear:function(){this.p2&&this.p2.clear(),this.box2d&&this.box2d.clear(),this.matter&&this.matter.clear()},reset:function(){this.p2&&this.p2.reset(),this.box2d&&this.box2d.reset(),this.matter&&this.matter.reset()},destroy:function(){this.p2&&this.p2.destroy(),this.box2d&&this.box2d.destroy(),this.matter&&this.matter.destroy(),this.arcade=null,this.ninja=null,this.p2=null,this.box2d=null,this.matter=null}},c.Physics.prototype.constructor=c.Physics,c.Physics.Arcade=function(a){this.game=a,this.gravity=new c.Point,this.bounds=new c.Rectangle(0,0,a.world.width,a.world.height),this.checkCollision={up:!0,down:!0,left:!0,right:!0},this.maxObjects=10,this.maxLevels=4,this.OVERLAP_BIAS=4,this.forceX=!1,this.sortDirection=c.Physics.Arcade.LEFT_RIGHT,this.skipQuadTree=!0,this.isPaused=!1,this.quadTree=new c.QuadTree(this.game.world.bounds.x,this.game.world.bounds.y,this.game.world.bounds.width,this.game.world.bounds.height,this.maxObjects,this.maxLevels),this._total=0,this.setBoundsToWorld()},c.Physics.Arcade.prototype.constructor=c.Physics.Arcade,c.Physics.Arcade.SORT_NONE=0,c.Physics.Arcade.LEFT_RIGHT=1,c.Physics.Arcade.RIGHT_LEFT=2,c.Physics.Arcade.TOP_BOTTOM=3,c.Physics.Arcade.BOTTOM_TOP=4,c.Physics.Arcade.prototype={setBounds:function(a,b,c,d){this.bounds.setTo(a,b,c,d)},setBoundsToWorld:function(){this.bounds.copyFrom(this.game.world.bounds)},enable:function(a,b){void 0===b&&(b=!0);var d=1;if(Array.isArray(a))for(d=a.length;d--;)a[d]instanceof c.Group?this.enable(a[d].children,b):(this.enableBody(a[d]),b&&a[d].hasOwnProperty("children")&&a[d].children.length>0&&this.enable(a[d],!0));else a instanceof c.Group?this.enable(a.children,b):(this.enableBody(a),b&&a.hasOwnProperty("children")&&a.children.length>0&&this.enable(a.children,!0))},enableBody:function(a){a.hasOwnProperty("body")&&null===a.body&&(a.body=new c.Physics.Arcade.Body(a),a.parent&&a.parent instanceof c.Group&&a.parent.addToHash(a))},updateMotion:function(a){var b=this.computeVelocity(0,a,a.angularVelocity,a.angularAcceleration,a.angularDrag,a.maxAngular)-a.angularVelocity;a.angularVelocity+=b,a.rotation+=a.angularVelocity*this.game.time.physicsElapsed,a.velocity.x=this.computeVelocity(1,a,a.velocity.x,a.acceleration.x,a.drag.x,a.maxVelocity.x),a.velocity.y=this.computeVelocity(2,a,a.velocity.y,a.acceleration.y,a.drag.y,a.maxVelocity.y)},computeVelocity:function(a,b,c,d,e,f){return void 0===f&&(f=1e4),1===a&&b.allowGravity?c+=(this.gravity.x+b.gravity.x)*this.game.time.physicsElapsed:2===a&&b.allowGravity&&(c+=(this.gravity.y+b.gravity.y)*this.game.time.physicsElapsed),d?c+=d*this.game.time.physicsElapsed:e&&(e*=this.game.time.physicsElapsed,c-e>0?c-=e:0>c+e?c+=e:c=0),c>f?c=f:-f>c&&(c=-f),c},overlap:function(a,b,c,d,e){if(c=c||null,d=d||null,e=e||c,this._total=0,!Array.isArray(a)&&Array.isArray(b))for(var f=0;f0},collide:function(a,b,c,d,e){if(c=c||null,d=d||null,e=e||c,this._total=0,!Array.isArray(a)&&Array.isArray(b))for(var f=0;f0},sortLeftRight:function(a,b){return a.body&&b.body?a.body.x-b.body.x:0},sortRightLeft:function(a,b){return a.body&&b.body?b.body.x-a.body.x:0},sortTopBottom:function(a,b){return a.body&&b.body?a.body.y-b.body.y:0},sortBottomTop:function(a,b){return a.body&&b.body?b.body.y-a.body.y:0},sort:function(a,b){null!==a.physicsSortDirection?b=a.physicsSortDirection:void 0===b&&(b=this.sortDirection),b===c.Physics.Arcade.LEFT_RIGHT?a.hash.sort(this.sortLeftRight):b===c.Physics.Arcade.RIGHT_LEFT?a.hash.sort(this.sortRightLeft):b===c.Physics.Arcade.TOP_BOTTOM?a.hash.sort(this.sortTopBottom):b===c.Physics.Arcade.BOTTOM_TOP&&a.hash.sort(this.sortBottomTop)},collideHandler:function(a,b,d,e,f,g){return void 0===b&&a.physicsType===c.GROUP?(this.sort(a),void this.collideGroupVsSelf(a,d,e,f,g)):void(a&&b&&a.exists&&b.exists&&(this.sortDirection!==c.Physics.Arcade.SORT_NONE&&(a.physicsType===c.GROUP&&this.sort(a),b.physicsType===c.GROUP&&this.sort(b)),a.physicsType===c.SPRITE?b.physicsType===c.SPRITE?this.collideSpriteVsSprite(a,b,d,e,f,g):b.physicsType===c.GROUP?this.collideSpriteVsGroup(a,b,d,e,f,g):b.physicsType===c.TILEMAPLAYER&&this.collideSpriteVsTilemapLayer(a,b,d,e,f,g):a.physicsType===c.GROUP?b.physicsType===c.SPRITE?this.collideSpriteVsGroup(b,a,d,e,f,g):b.physicsType===c.GROUP?this.collideGroupVsGroup(a,b,d,e,f,g):b.physicsType===c.TILEMAPLAYER&&this.collideGroupVsTilemapLayer(a,b,d,e,f,g):a.physicsType===c.TILEMAPLAYER&&(b.physicsType===c.SPRITE?this.collideSpriteVsTilemapLayer(b,a,d,e,f,g):b.physicsType===c.GROUP&&this.collideGroupVsTilemapLayer(b,a,d,e,f,g))))},collideSpriteVsSprite:function(a,b,c,d,e,f){return a.body&&b.body?(this.separate(a.body,b.body,d,e,f)&&(c&&c.call(e,a,b),this._total++),!0):!1},collideSpriteVsGroup:function(a,b,d,e,f,g){if(0!==b.length&&a.body)if(this.skipQuadTree||a.body.skipQuadTree)for(var h,i=0;ih.right)break;if(h.x>a.body.right)continue}else if(this.sortDirection===c.Physics.Arcade.TOP_BOTTOM){if(a.body.bottomh.bottom)break;if(h.y>a.body.bottom)continue}this.collideSpriteVsSprite(a,j,d,e,f,g)}}else{this.quadTree.clear(),this.quadTree.reset(this.game.world.bounds.x,this.game.world.bounds.y,this.game.world.bounds.width,this.game.world.bounds.height,this.maxObjects,this.maxLevels),this.quadTree.populate(b);for(var k=this.quadTree.retrieve(a),i=0;ik.right)continue;if(k.x>h.right)break}else if(this.sortDirection===c.Physics.Arcade.TOP_BOTTOM){if(h.bottomk.bottom)continue;if(k.y>i.body.bottom)break}this.collideSpriteVsSprite(i,l,b,d,e,f)}}}}},collideGroupVsGroup:function(a,b,d,e,f,g){if(0!==a.length&&0!==b.length)for(var h=0;hh.bottom)&&(i.xh.right))return this.separateCircle(a,b,e)}var j=!1,k=!1;this.forceX||Math.abs(this.gravity.y+a.gravity.y)=b.right?!1:!(a.position.y>=b.bottom)},circleBodyIntersects:function(a,b){var d=c.Math.clamp(a.center.x,b.left,b.right),e=c.Math.clamp(a.center.y,b.top,b.bottom),f=(a.center.x-d)*(a.center.x-d),g=(a.center.y-e)*(a.center.y-e);return f+g<=a.radius*a.radius},separateCircle:function(a,b,d){this.getOverlapX(a,b),this.getOverlapY(a,b);var e=this.angleBetweenCenters(a,b),f=0;if(a.isCircle!==b.isCircle){var g={x:b.isCircle?a.position.x:b.position.x,y:b.isCircle?a.position.y:b.position.y,right:b.isCircle?a.right:b.right,bottom:b.isCircle?a.bottom:b.bottom},h={x:a.isCircle?a.position.x+a.radius:b.position.x+b.radius,y:a.isCircle?a.position.y+a.radius:b.position.y+b.radius, +radius:a.isCircle?a.radius:b.radius};h.yg.right&&(f=c.Math.distance(h.x,h.y,g.right,g.y)-h.radius):h.y>g.bottom&&(h.xg.right&&(f=c.Math.distance(h.x,h.y,g.right,g.bottom)-h.radius)),f*=-1}else f=a.radius+b.radius-c.Math.distance(a.center.x,a.center.y,b.center.x,b.center.y);if(d||0===f||a.immovable&&b.immovable||a.customSeparateX||b.customSeparateX)return 0!==f&&(a.onOverlap&&a.onOverlap.dispatch(a.sprite,b.sprite),b.onOverlap&&b.onOverlap.dispatch(b.sprite,a.sprite)),0!==f;var i={x:a.velocity.x*Math.cos(e)+a.velocity.y*Math.sin(e),y:a.velocity.x*Math.sin(e)-a.velocity.y*Math.cos(e)},j={x:b.velocity.x*Math.cos(e)+b.velocity.y*Math.sin(e),y:b.velocity.x*Math.sin(e)-b.velocity.y*Math.cos(e)},k=((a.mass-b.mass)*i.x+2*b.mass*j.x)/(a.mass+b.mass),l=(2*a.mass*i.x+(b.mass-a.mass)*j.x)/(a.mass+b.mass);return a.immovable||(a.velocity.x=(k*Math.cos(e)-i.y*Math.sin(e))*a.bounce.x,a.velocity.y=(i.y*Math.cos(e)+k*Math.sin(e))*a.bounce.y),b.immovable||(b.velocity.x=(l*Math.cos(e)-j.y*Math.sin(e))*b.bounce.x,b.velocity.y=(j.y*Math.cos(e)+l*Math.sin(e))*b.bounce.y),Math.abs(e)0&&!a.immovable&&b.velocity.x>a.velocity.x?a.velocity.x*=-1:b.velocity.x<0&&!b.immovable&&a.velocity.x0&&!a.immovable&&b.velocity.y>a.velocity.y?a.velocity.y*=-1:b.velocity.y<0&&!b.immovable&&a.velocity.yMath.PI/2&&(a.velocity.x<0&&!a.immovable&&b.velocity.x0&&!b.immovable&&a.velocity.x>b.velocity.x?b.velocity.x*=-1:a.velocity.y<0&&!a.immovable&&b.velocity.y0&&!b.immovable&&a.velocity.x>b.velocity.y&&(b.velocity.y*=-1)),a.immovable||(a.x+=a.velocity.x*this.game.time.physicsElapsed-f*Math.cos(e),a.y+=a.velocity.y*this.game.time.physicsElapsed-f*Math.sin(e)),b.immovable||(b.x+=b.velocity.x*this.game.time.physicsElapsed+f*Math.cos(e),b.y+=b.velocity.y*this.game.time.physicsElapsed+f*Math.sin(e)),a.onCollide&&a.onCollide.dispatch(a.sprite,b.sprite),b.onCollide&&b.onCollide.dispatch(b.sprite,a.sprite),!0},getOverlapX:function(a,b,c){var d=0,e=a.deltaAbsX()+b.deltaAbsX()+this.OVERLAP_BIAS;return 0===a.deltaX()&&0===b.deltaX()?(a.embedded=!0,b.embedded=!0):a.deltaX()>b.deltaX()?(d=a.right-b.x,d>e&&!c||a.checkCollision.right===!1||b.checkCollision.left===!1?d=0:(a.touching.none=!1,a.touching.right=!0,b.touching.none=!1,b.touching.left=!0)):a.deltaX()e&&!c||a.checkCollision.left===!1||b.checkCollision.right===!1?d=0:(a.touching.none=!1,a.touching.left=!0,b.touching.none=!1,b.touching.right=!0)),a.overlapX=d,b.overlapX=d,d},getOverlapY:function(a,b,c){var d=0,e=a.deltaAbsY()+b.deltaAbsY()+this.OVERLAP_BIAS;return 0===a.deltaY()&&0===b.deltaY()?(a.embedded=!0,b.embedded=!0):a.deltaY()>b.deltaY()?(d=a.bottom-b.y,d>e&&!c||a.checkCollision.down===!1||b.checkCollision.up===!1?d=0:(a.touching.none=!1,a.touching.down=!0,b.touching.none=!1,b.touching.up=!0)):a.deltaY()e&&!c||a.checkCollision.up===!1||b.checkCollision.down===!1?d=0:(a.touching.none=!1,a.touching.up=!0,b.touching.none=!1,b.touching.down=!0)),a.overlapY=d,b.overlapY=d,d},separateX:function(a,b,c){var d=this.getOverlapX(a,b,c);if(c||0===d||a.immovable&&b.immovable||a.customSeparateX||b.customSeparateX)return 0!==d||a.embedded&&b.embedded;var e=a.velocity.x,f=b.velocity.x;if(a.immovable||b.immovable)a.immovable?(b.x+=d,b.velocity.x=e-f*b.bounce.x,a.moves&&(b.y+=(a.y-a.prev.y)*a.friction.y)):(a.x-=d,a.velocity.x=f-e*a.bounce.x,b.moves&&(a.y+=(b.y-b.prev.y)*b.friction.y));else{d*=.5,a.x-=d,b.x+=d;var g=Math.sqrt(f*f*b.mass/a.mass)*(f>0?1:-1),h=Math.sqrt(e*e*a.mass/b.mass)*(e>0?1:-1),i=.5*(g+h);g-=i,h-=i,a.velocity.x=i+g*a.bounce.x,b.velocity.x=i+h*b.bounce.x}return!0},separateY:function(a,b,c){var d=this.getOverlapY(a,b,c);if(c||0===d||a.immovable&&b.immovable||a.customSeparateY||b.customSeparateY)return 0!==d||a.embedded&&b.embedded;var e=a.velocity.y,f=b.velocity.y;if(a.immovable||b.immovable)a.immovable?(b.y+=d,b.velocity.y=e-f*b.bounce.y,a.moves&&(b.x+=(a.x-a.prev.x)*a.friction.x)):(a.y-=d,a.velocity.y=f-e*a.bounce.y,b.moves&&(a.x+=(b.x-b.prev.x)*b.friction.x));else{d*=.5,a.y-=d,b.y+=d;var g=Math.sqrt(f*f*b.mass/a.mass)*(f>0?1:-1),h=Math.sqrt(e*e*a.mass/b.mass)*(e>0?1:-1),i=.5*(g+h);g-=i,h-=i,a.velocity.y=i+g*a.bounce.y,b.velocity.y=i+h*b.bounce.y}return!0},getObjectsUnderPointer:function(a,b,c,d){return 0!==b.length&&a.exists?this.getObjectsAtLocation(a.x,a.y,b,c,d,a):void 0},getObjectsAtLocation:function(a,b,d,e,f,g){this.quadTree.clear(),this.quadTree.reset(this.game.world.bounds.x,this.game.world.bounds.y,this.game.world.bounds.width,this.game.world.bounds.height,this.maxObjects,this.maxLevels),this.quadTree.populate(d);for(var h=new c.Rectangle(a,b,1,1),i=[],j=this.quadTree.retrieve(h),k=0;k0&&(c=this.distanceBetween(a,b)/(d/1e3)),a.body.velocity.x=Math.cos(e)*c,a.body.velocity.y=Math.sin(e)*c,e},moveToPointer:function(a,b,c,d){void 0===b&&(b=60),c=c||this.game.input.activePointer,void 0===d&&(d=0);var e=this.angleToPointer(a,c);return d>0&&(b=this.distanceToPointer(a,c)/(d/1e3)),a.body.velocity.x=Math.cos(e)*b,a.body.velocity.y=Math.sin(e)*b,e},moveToXY:function(a,b,c,d,e){void 0===d&&(d=60),void 0===e&&(e=0);var f=Math.atan2(c-a.y,b-a.x);return e>0&&(d=this.distanceToXY(a,b,c)/(e/1e3)),a.body.velocity.x=Math.cos(f)*d,a.body.velocity.y=Math.sin(f)*d,f},velocityFromAngle:function(a,b,d){return void 0===b&&(b=60),d=d||new c.Point,d.setTo(Math.cos(this.game.math.degToRad(a))*b,Math.sin(this.game.math.degToRad(a))*b)},velocityFromRotation:function(a,b,d){return void 0===b&&(b=60),d=d||new c.Point,d.setTo(Math.cos(a)*b,Math.sin(a)*b)},accelerationFromRotation:function(a,b,d){return void 0===b&&(b=60),d=d||new c.Point,d.setTo(Math.cos(a)*b,Math.sin(a)*b)},accelerateToObject:function(a,b,c,d,e){void 0===c&&(c=60),void 0===d&&(d=1e3),void 0===e&&(e=1e3);var f=this.angleBetween(a,b);return a.body.acceleration.setTo(Math.cos(f)*c,Math.sin(f)*c),a.body.maxVelocity.setTo(d,e),f},accelerateToPointer:function(a,b,c,d,e){void 0===c&&(c=60),void 0===b&&(b=this.game.input.activePointer),void 0===d&&(d=1e3),void 0===e&&(e=1e3);var f=this.angleToPointer(a,b);return a.body.acceleration.setTo(Math.cos(f)*c,Math.sin(f)*c),a.body.maxVelocity.setTo(d,e),f},accelerateToXY:function(a,b,c,d,e,f){void 0===d&&(d=60),void 0===e&&(e=1e3),void 0===f&&(f=1e3);var g=this.angleToXY(a,b,c);return a.body.acceleration.setTo(Math.cos(g)*d,Math.sin(g)*d),a.body.maxVelocity.setTo(e,f),g},distanceBetween:function(a,b,c){void 0===c&&(c=!1);var d=c?a.world.x-b.world.x:a.x-b.x,e=c?a.world.y-b.world.y:a.y-b.y;return Math.sqrt(d*d+e*e)},distanceToXY:function(a,b,c,d){void 0===d&&(d=!1);var e=d?a.world.x-b:a.x-b,f=d?a.world.y-c:a.y-c;return Math.sqrt(e*e+f*f)},distanceToPointer:function(a,b,c){void 0===b&&(b=this.game.input.activePointer),void 0===c&&(c=!1);var d=c?a.world.x-b.worldX:a.x-b.worldX,e=c?a.world.y-b.worldY:a.y-b.worldY;return Math.sqrt(d*d+e*e)},angleBetween:function(a,b,c){return void 0===c&&(c=!1),c?Math.atan2(b.world.y-a.world.y,b.world.x-a.world.x):Math.atan2(b.y-a.y,b.x-a.x)},angleBetweenCenters:function(a,b){var c=b.center.x-a.center.x,d=b.center.y-a.center.y;return Math.atan2(d,c)},angleToXY:function(a,b,c,d){return void 0===d&&(d=!1),d?Math.atan2(c-a.world.y,b-a.world.x):Math.atan2(c-a.y,b-a.x)},angleToPointer:function(a,b,c){return void 0===b&&(b=this.game.input.activePointer),void 0===c&&(c=!1),c?Math.atan2(b.worldY-a.world.y,b.worldX-a.world.x):Math.atan2(b.worldY-a.y,b.worldX-a.x)},worldAngleToPointer:function(a,b){return this.angleToPointer(a,b,!0)}},c.Physics.Arcade.Body=function(a){this.sprite=a,this.game=a.game,this.type=c.Physics.ARCADE,this.enable=!0,this.isCircle=!1,this.radius=0,this.offset=new c.Point,this.position=new c.Point(a.x,a.y),this.prev=new c.Point(this.position.x,this.position.y),this.allowRotation=!0,this.rotation=a.rotation,this.preRotation=a.rotation,this.width=a.width,this.height=a.height,this.sourceWidth=a.width,this.sourceHeight=a.height,a.texture&&(this.sourceWidth=a.texture.frame.width,this.sourceHeight=a.texture.frame.height),this.halfWidth=Math.abs(a.width/2),this.halfHeight=Math.abs(a.height/2),this.center=new c.Point(a.x+this.halfWidth,a.y+this.halfHeight),this.velocity=new c.Point,this.newVelocity=new c.Point,this.deltaMax=new c.Point,this.acceleration=new c.Point,this.drag=new c.Point,this.allowGravity=!0,this.gravity=new c.Point,this.bounce=new c.Point,this.worldBounce=null,this.onWorldBounds=null,this.onCollide=null,this.onOverlap=null,this.maxVelocity=new c.Point(1e4,1e4),this.friction=new c.Point(1,0),this.angularVelocity=0,this.angularAcceleration=0,this.angularDrag=0,this.maxAngular=1e3,this.mass=1,this.angle=0,this.speed=0,this.facing=c.NONE,this.immovable=!1,this.moves=!0,this.customSeparateX=!1,this.customSeparateY=!1,this.overlapX=0,this.overlapY=0,this.overlapR=0,this.embedded=!1,this.collideWorldBounds=!1,this.checkCollision={none:!1,any:!0,up:!0,down:!0,left:!0,right:!0},this.touching={none:!0,up:!1,down:!1,left:!1,right:!1},this.wasTouching={none:!0,up:!1,down:!1,left:!1,right:!1},this.blocked={up:!1,down:!1,left:!1,right:!1},this.tilePadding=new c.Point,this.dirty=!1,this.skipQuadTree=!1,this.syncBounds=!1,this.isMoving=!1,this.stopVelocityOnCollide=!0,this.moveTimer=0,this.moveDistance=0,this.moveDuration=0,this.moveTarget=null,this.moveEnd=null,this.onMoveComplete=new c.Signal,this.movementCallback=null,this.movementCallbackContext=null,this._reset=!0,this._sx=a.scale.x,this._sy=a.scale.y,this._dx=0,this._dy=0},c.Physics.Arcade.Body.prototype={updateBounds:function(){if(this.syncBounds){var a=this.sprite.getBounds();a.ceilAll(),a.width===this.width&&a.height===this.height||(this.width=a.width,this.height=a.height,this._reset=!0)}else{var b=Math.abs(this.sprite.scale.x),c=Math.abs(this.sprite.scale.y);b===this._sx&&c===this._sy||(this.width=this.sourceWidth*b,this.height=this.sourceHeight*c,this._sx=b,this._sy=c,this._reset=!0)}this._reset&&(this.halfWidth=Math.floor(this.width/2),this.halfHeight=Math.floor(this.height/2),this.center.setTo(this.position.x+this.halfWidth,this.position.y+this.halfHeight))},preUpdate:function(){this.enable&&!this.game.physics.arcade.isPaused&&(this.dirty=!0,this.wasTouching.none=this.touching.none,this.wasTouching.up=this.touching.up,this.wasTouching.down=this.touching.down,this.wasTouching.left=this.touching.left,this.wasTouching.right=this.touching.right,this.touching.none=!0,this.touching.up=!1,this.touching.down=!1,this.touching.left=!1,this.touching.right=!1,this.blocked.up=!1,this.blocked.down=!1,this.blocked.left=!1,this.blocked.right=!1,this.embedded=!1,this.updateBounds(),this.position.x=this.sprite.world.x-this.sprite.anchor.x*this.sprite.width+this.sprite.scale.x*this.offset.x,this.position.x-=this.sprite.scale.x<0?this.width:0,this.position.y=this.sprite.world.y-this.sprite.anchor.y*this.sprite.height+this.sprite.scale.y*this.offset.y,this.position.y-=this.sprite.scale.y<0?this.height:0,this.rotation=this.sprite.angle,this.preRotation=this.rotation,(this._reset||this.sprite.fresh)&&(this.prev.x=this.position.x,this.prev.y=this.position.y),this.moves&&(this.game.physics.arcade.updateMotion(this),this.newVelocity.set(this.velocity.x*this.game.time.physicsElapsed,this.velocity.y*this.game.time.physicsElapsed),this.position.x+=this.newVelocity.x,this.position.y+=this.newVelocity.y,this.position.x===this.prev.x&&this.position.y===this.prev.y||(this.angle=Math.atan2(this.velocity.y,this.velocity.x)),this.speed=Math.sqrt(this.velocity.x*this.velocity.x+this.velocity.y*this.velocity.y),this.collideWorldBounds&&this.checkWorldBounds()&&this.onWorldBounds&&this.onWorldBounds.dispatch(this.sprite,this.blocked.up,this.blocked.down,this.blocked.left,this.blocked.right)),this._dx=this.deltaX(),this._dy=this.deltaY(),this._reset=!1)},updateMovement:function(){var a=0,b=0!==this.overlapX||0!==this.overlapY;if(this.moveDuration>0?(this.moveTimer+=this.game.time.elapsedMS,a=this.moveTimer/this.moveDuration):(this.moveTarget.end.set(this.position.x,this.position.y),a=this.moveTarget.length/this.moveDistance),this.movementCallback)var c=this.movementCallback.call(this.movementCallbackContext,this,this.velocity,a);return b||a>=1||void 0!==c&&c!==!0?(this.stopMovement(a>=1||this.stopVelocityOnCollide&&b),!1):!0},stopMovement:function(a){this.isMoving&&(this.isMoving=!1,a&&this.velocity.set(0),this.onMoveComplete.dispatch(this.sprite,0!==this.overlapX||0!==this.overlapY))},postUpdate:function(){this.enable&&this.dirty&&(this.isMoving&&this.updateMovement(),this.dirty=!1,this.deltaX()<0?this.facing=c.LEFT:this.deltaX()>0&&(this.facing=c.RIGHT),this.deltaY()<0?this.facing=c.UP:this.deltaY()>0&&(this.facing=c.DOWN),this.moves&&(this._dx=this.deltaX(),this._dy=this.deltaY(),0!==this.deltaMax.x&&0!==this._dx&&(this._dx<0&&this._dx<-this.deltaMax.x?this._dx=-this.deltaMax.x:this._dx>0&&this._dx>this.deltaMax.x&&(this._dx=this.deltaMax.x)),0!==this.deltaMax.y&&0!==this._dy&&(this._dy<0&&this._dy<-this.deltaMax.y?this._dy=-this.deltaMax.y:this._dy>0&&this._dy>this.deltaMax.y&&(this._dy=this.deltaMax.y)),this.sprite.position.x+=this._dx,this.sprite.position.y+=this._dy,this._reset=!0),this.center.setTo(this.position.x+this.halfWidth,this.position.y+this.halfHeight),this.allowRotation&&(this.sprite.angle+=this.deltaZ()),this.prev.x=this.position.x,this.prev.y=this.position.y)},checkWorldBounds:function(){var a=this.position,b=this.game.physics.arcade.bounds,c=this.game.physics.arcade.checkCollision,d=this.worldBounce?-this.worldBounce.x:-this.bounce.x,e=this.worldBounce?-this.worldBounce.y:-this.bounce.y;if(this.isCircle){var f={x:this.center.x-this.radius,y:this.center.y-this.radius,right:this.center.x+this.radius,bottom:this.center.y+this.radius};f.xb.right&&c.right&&(a.x=b.right-this.halfWidth-this.radius,this.velocity.x*=d,this.blocked.right=!0),f.yb.bottom&&c.down&&(a.y=b.bottom-this.halfHeight-this.radius,this.velocity.y*=e,this.blocked.down=!0)}else a.xb.right&&c.right&&(a.x=b.right-this.width,this.velocity.x*=d,this.blocked.right=!0),a.yb.bottom&&c.down&&(a.y=b.bottom-this.height,this.velocity.y*=e,this.blocked.down=!0);return this.blocked.up||this.blocked.down||this.blocked.left||this.blocked.right},moveFrom:function(a,b,c){if(void 0===b&&(b=this.speed),0===b)return!1;var d;return void 0===c?(d=this.angle,c=this.game.math.radToDeg(d)):d=this.game.math.degToRad(c),this.moveTimer=0,this.moveDuration=a,0===c||180===c?this.velocity.set(Math.cos(d)*b,0):90===c||270===c?this.velocity.set(0,Math.sin(d)*b):this.velocity.set(Math.cos(d)*b,Math.sin(d)*b),this.isMoving=!0,!0},moveTo:function(a,b,d){var e=b/(a/1e3);if(0===e)return!1;var f;return void 0===d?(f=this.angle,d=this.game.math.radToDeg(f)):f=this.game.math.degToRad(d),b=Math.abs(b),this.moveDuration=0,this.moveDistance=b,null===this.moveTarget&&(this.moveTarget=new c.Line,this.moveEnd=new c.Point),this.moveTarget.fromAngle(this.x,this.y,f,b),this.moveEnd.set(this.moveTarget.end.x,this.moveTarget.end.y),this.moveTarget.setTo(this.x,this.y,this.x,this.y),0===d||180===d?this.velocity.set(Math.cos(f)*e,0):90===d||270===d?this.velocity.set(0,Math.sin(f)*e):this.velocity.set(Math.cos(f)*e,Math.sin(f)*e),this.isMoving=!0,!0},setSize:function(a,b,c,d){void 0===c&&(c=this.offset.x),void 0===d&&(d=this.offset.y),this.sourceWidth=a,this.sourceHeight=b,this.width=this.sourceWidth*this._sx,this.height=this.sourceHeight*this._sy,this.halfWidth=Math.floor(this.width/2),this.halfHeight=Math.floor(this.height/2),this.offset.setTo(c,d),this.center.setTo(this.position.x+this.halfWidth,this.position.y+this.halfHeight),this.isCircle=!1,this.radius=0},setCircle:function(a,b,c){void 0===b&&(b=this.offset.x),void 0===c&&(c=this.offset.y),a>0?(this.isCircle=!0,this.radius=a,this.sourceWidth=2*a,this.sourceHeight=2*a,this.width=this.sourceWidth*this._sx,this.height=this.sourceHeight*this._sy,this.halfWidth=Math.floor(this.width/2),this.halfHeight=Math.floor(this.height/2),this.offset.setTo(b,c),this.center.setTo(this.position.x+this.halfWidth,this.position.y+this.halfHeight)):this.isCircle=!1},reset:function(a,b){this.velocity.set(0),this.acceleration.set(0),this.speed=0,this.angularVelocity=0,this.angularAcceleration=0,this.position.x=a-this.sprite.anchor.x*this.sprite.width+this.sprite.scale.x*this.offset.x,this.position.x-=this.sprite.scale.x<0?this.width:0,this.position.y=b-this.sprite.anchor.y*this.sprite.height+this.sprite.scale.y*this.offset.y,this.position.y-=this.sprite.scale.y<0?this.height:0,this.prev.x=this.position.x,this.prev.y=this.position.y,this.rotation=this.sprite.angle,this.preRotation=this.rotation,this._sx=this.sprite.scale.x,this._sy=this.sprite.scale.y,this.center.setTo(this.position.x+this.halfWidth,this.position.y+this.halfHeight)},getBounds:function(a){return this.isCircle?(a.x=this.center.x-this.radius,a.y=this.center.y-this.radius,a.right=this.center.x+this.radius,a.bottom=this.center.y+this.radius):(a.x=this.x,a.y=this.y,a.right=this.right,a.bottom=this.bottom),a},hitTest:function(a,b){return this.isCircle?c.Circle.contains(this,a,b):c.Rectangle.contains(this,a,b)},onFloor:function(){return this.blocked.down},onCeiling:function(){return this.blocked.up},onWall:function(){return this.blocked.left||this.blocked.right},deltaAbsX:function(){return this.deltaX()>0?this.deltaX():-this.deltaX()},deltaAbsY:function(){return this.deltaY()>0?this.deltaY():-this.deltaY()},deltaX:function(){return this.position.x-this.prev.x},deltaY:function(){return this.position.y-this.prev.y},deltaZ:function(){return this.rotation-this.preRotation},destroy:function(){this.sprite.parent&&this.sprite.parent instanceof c.Group&&this.sprite.parent.removeFromHash(this.sprite),this.sprite.body=null,this.sprite=null}},Object.defineProperty(c.Physics.Arcade.Body.prototype,"left",{get:function(){return this.position.x}}),Object.defineProperty(c.Physics.Arcade.Body.prototype,"right",{get:function(){return this.position.x+this.width}}),Object.defineProperty(c.Physics.Arcade.Body.prototype,"top",{get:function(){return this.position.y}}),Object.defineProperty(c.Physics.Arcade.Body.prototype,"bottom",{get:function(){return this.position.y+this.height}}),Object.defineProperty(c.Physics.Arcade.Body.prototype,"x",{get:function(){return this.position.x},set:function(a){this.position.x=a}}),Object.defineProperty(c.Physics.Arcade.Body.prototype,"y",{get:function(){return this.position.y},set:function(a){this.position.y=a}}),c.Physics.Arcade.Body.render=function(a,b,c,d){void 0===d&&(d=!0),c=c||"rgba(0,255,0,0.4)",a.fillStyle=c,a.strokeStyle=c,b.isCircle?(a.beginPath(),a.arc(b.center.x-b.game.camera.x,b.center.y-b.game.camera.y,b.radius,0,2*Math.PI),d?a.fill():a.stroke()):d?a.fillRect(b.position.x-b.game.camera.x,b.position.y-b.game.camera.y,b.width,b.height):a.strokeRect(b.position.x-b.game.camera.x,b.position.y-b.game.camera.y,b.width,b.height)},c.Physics.Arcade.Body.renderBodyInfo=function(a,b){a.line("x: "+b.x.toFixed(2),"y: "+b.y.toFixed(2),"width: "+b.width,"height: "+b.height),a.line("velocity x: "+b.velocity.x.toFixed(2),"y: "+b.velocity.y.toFixed(2),"deltaX: "+b._dx.toFixed(2),"deltaY: "+b._dy.toFixed(2)),a.line("acceleration x: "+b.acceleration.x.toFixed(2),"y: "+b.acceleration.y.toFixed(2),"speed: "+b.speed.toFixed(2),"angle: "+b.angle.toFixed(2)),a.line("gravity x: "+b.gravity.x,"y: "+b.gravity.y,"bounce x: "+b.bounce.x.toFixed(2),"y: "+b.bounce.y.toFixed(2)),a.line("touching left: "+b.touching.left,"right: "+b.touching.right,"up: "+b.touching.up,"down: "+b.touching.down),a.line("blocked left: "+b.blocked.left,"right: "+b.blocked.right,"up: "+b.blocked.up,"down: "+b.blocked.down)},c.Physics.Arcade.Body.prototype.constructor=c.Physics.Arcade.Body,c.Physics.Arcade.TilemapCollision=function(){},c.Physics.Arcade.TilemapCollision.prototype={TILE_BIAS:16,collideSpriteVsTilemapLayer:function(a,b,c,d,e,f){if(a.body){var g=b.getTiles(a.body.position.x-a.body.tilePadding.x,a.body.position.y-a.body.tilePadding.y,a.body.width+a.body.tilePadding.x,a.body.height+a.body.tilePadding.y,!1,!1);if(0!==g.length)for(var h=0;hb.deltaAbsY()?j=-1:b.deltaAbsX()j){if((c.faceLeft||c.faceRight)&&(h=this.tileCheckX(b,c,d),0!==h&&!c.intersects(b.position.x-f,b.position.y-g,b.right-f,b.bottom-g)))return!0;(c.faceTop||c.faceBottom)&&(i=this.tileCheckY(b,c,d))}else{if((c.faceTop||c.faceBottom)&&(i=this.tileCheckY(b,c,d),0!==i&&!c.intersects(b.position.x-f,b.position.y-g,b.right-f,b.bottom-g)))return!0;(c.faceLeft||c.faceRight)&&(h=this.tileCheckX(b,c,d))}return 0!==h||0!==i},tileCheckX:function(a,b,c){var d=0,e=c.fixedToCamera?0:c.position.x;return a.deltaX()<0&&!a.blocked.left&&b.collideRight&&a.checkCollision.left?b.faceRight&&a.x-e0&&!a.blocked.right&&b.collideLeft&&a.checkCollision.right&&b.faceLeft&&a.right-e>b.left&&(d=a.right-e-b.left,d>this.TILE_BIAS&&(d=0)),0!==d&&(a.customSeparateX?a.overlapX=d:this.processTileSeparationX(a,d)),d},tileCheckY:function(a,b,c){var d=0,e=c.fixedToCamera?0:c.position.y;return a.deltaY()<0&&!a.blocked.up&&b.collideDown&&a.checkCollision.up?b.faceBottom&&a.y-e0&&!a.blocked.down&&b.collideUp&&a.checkCollision.down&&b.faceTop&&a.bottom-e>b.top&&(d=a.bottom-e-b.top,d>this.TILE_BIAS&&(d=0)),0!==d&&(a.customSeparateY?a.overlapY=d:this.processTileSeparationY(a,d)),d},processTileSeparationX:function(a,b){0>b?a.blocked.left=!0:b>0&&(a.blocked.right=!0),a.position.x-=b,0===a.bounce.x?a.velocity.x=0:a.velocity.x=-a.velocity.x*a.bounce.x},processTileSeparationY:function(a,b){0>b?a.blocked.up=!0:b>0&&(a.blocked.down=!0),a.position.y-=b,0===a.bounce.y?a.velocity.y=0:a.velocity.y=-a.velocity.y*a.bounce.y}},c.Utils.mixinPrototype(c.Physics.Arcade.prototype,c.Physics.Arcade.TilemapCollision.prototype),p2.Body.prototype.parent=null,p2.Spring.prototype.parent=null,c.Physics.P2=function(a,b){this.game=a,void 0===b?b={gravity:[0,0],broadphase:new p2.SAPBroadphase}:(b.hasOwnProperty("gravity")||(b.gravity=[0,0]),b.hasOwnProperty("broadphase")||(b.broadphase=new p2.SAPBroadphase)),this.config=b,this.world=new p2.World(this.config),this.frameRate=1/60,this.useElapsedTime=!1,this.paused=!1,this.materials=[],this.gravity=new c.Physics.P2.InversePointProxy(this,this.world.gravity),this.walls={left:null,right:null,top:null,bottom:null},this.onBodyAdded=new c.Signal,this.onBodyRemoved=new c.Signal,this.onSpringAdded=new c.Signal,this.onSpringRemoved=new c.Signal,this.onConstraintAdded=new c.Signal,this.onConstraintRemoved=new c.Signal,this.onContactMaterialAdded=new c.Signal,this.onContactMaterialRemoved=new c.Signal,this.postBroadphaseCallback=null,this.callbackContext=null,this.onBeginContact=new c.Signal,this.onEndContact=new c.Signal,b.hasOwnProperty("mpx")&&b.hasOwnProperty("pxm")&&b.hasOwnProperty("mpxi")&&b.hasOwnProperty("pxmi")&&(this.mpx=b.mpx,this.mpxi=b.mpxi,this.pxm=b.pxm,this.pxmi=b.pxmi),this.world.on("beginContact",this.beginContactHandler,this),this.world.on("endContact",this.endContactHandler,this),this.collisionGroups=[],this.nothingCollisionGroup=new c.Physics.P2.CollisionGroup(1),this.boundsCollisionGroup=new c.Physics.P2.CollisionGroup(2),this.everythingCollisionGroup=new c.Physics.P2.CollisionGroup(2147483648),this.boundsCollidesWith=[],this._toRemove=[],this._collisionGroupID=2,this._boundsLeft=!0,this._boundsRight=!0,this._boundsTop=!0,this._boundsBottom=!0,this._boundsOwnGroup=!1,this.setBoundsToWorld(!0,!0,!0,!0,!1)},c.Physics.P2.prototype={removeBodyNextStep:function(a){this._toRemove.push(a)},preUpdate:function(){for(var a=this._toRemove.length;a--;)this.removeBody(this._toRemove[a]);this._toRemove.length=0},enable:function(a,b,d){void 0===b&&(b=!1),void 0===d&&(d=!0);var e=1;if(Array.isArray(a))for(e=a.length;e--;)a[e]instanceof c.Group?this.enable(a[e].children,b,d):(this.enableBody(a[e],b),d&&a[e].hasOwnProperty("children")&&a[e].children.length>0&&this.enable(a[e],b,!0));else a instanceof c.Group?this.enable(a.children,b,d):(this.enableBody(a,b),d&&a.hasOwnProperty("children")&&a.children.length>0&&this.enable(a.children,b,!0))},enableBody:function(a,b){a.hasOwnProperty("body")&&null===a.body&&(a.body=new c.Physics.P2.Body(this.game,a,a.x,a.y,1),a.body.debug=b,"undefined"!=typeof a.anchor&&a.anchor.set(.5))},setImpactEvents:function(a){a?this.world.on("impact",this.impactHandler,this):this.world.off("impact",this.impactHandler,this)},setPostBroadphaseCallback:function(a,b){this.postBroadphaseCallback=a,this.callbackContext=b,null!==a?this.world.on("postBroadphase",this.postBroadphaseHandler,this):this.world.off("postBroadphase",this.postBroadphaseHandler,this)},postBroadphaseHandler:function(a){if(this.postBroadphaseCallback&&0!==a.pairs.length)for(var b=a.pairs.length-2;b>=0;b-=2)a.pairs[b].parent&&a.pairs[b+1].parent&&!this.postBroadphaseCallback.call(this.callbackContext,a.pairs[b].parent,a.pairs[b+1].parent)&&a.pairs.splice(b,2)},impactHandler:function(a){if(a.bodyA.parent&&a.bodyB.parent){var b=a.bodyA.parent,c=a.bodyB.parent;b._bodyCallbacks[a.bodyB.id]&&b._bodyCallbacks[a.bodyB.id].call(b._bodyCallbackContext[a.bodyB.id],b,c,a.shapeA,a.shapeB),c._bodyCallbacks[a.bodyA.id]&&c._bodyCallbacks[a.bodyA.id].call(c._bodyCallbackContext[a.bodyA.id],c,b,a.shapeB,a.shapeA),b._groupCallbacks[a.shapeB.collisionGroup]&&b._groupCallbacks[a.shapeB.collisionGroup].call(b._groupCallbackContext[a.shapeB.collisionGroup],b,c,a.shapeA,a.shapeB),c._groupCallbacks[a.shapeA.collisionGroup]&&c._groupCallbacks[a.shapeA.collisionGroup].call(c._groupCallbackContext[a.shapeA.collisionGroup],c,b,a.shapeB,a.shapeA)}},beginContactHandler:function(a){a.bodyA&&a.bodyB&&(this.onBeginContact.dispatch(a.bodyA,a.bodyB,a.shapeA,a.shapeB,a.contactEquations),a.bodyA.parent&&a.bodyA.parent.onBeginContact.dispatch(a.bodyB.parent,a.bodyB,a.shapeA,a.shapeB,a.contactEquations),a.bodyB.parent&&a.bodyB.parent.onBeginContact.dispatch(a.bodyA.parent,a.bodyA,a.shapeB,a.shapeA,a.contactEquations))},endContactHandler:function(a){a.bodyA&&a.bodyB&&(this.onEndContact.dispatch(a.bodyA,a.bodyB,a.shapeA,a.shapeB),a.bodyA.parent&&a.bodyA.parent.onEndContact.dispatch(a.bodyB.parent,a.bodyB,a.shapeA,a.shapeB),a.bodyB.parent&&a.bodyB.parent.onEndContact.dispatch(a.bodyA.parent,a.bodyA,a.shapeB,a.shapeA))},setBoundsToWorld:function(a,b,c,d,e){this.setBounds(this.game.world.bounds.x,this.game.world.bounds.y,this.game.world.bounds.width,this.game.world.bounds.height,a,b,c,d,e)},setWorldMaterial:function(a,b,c,d,e){void 0===b&&(b=!0),void 0===c&&(c=!0),void 0===d&&(d=!0),void 0===e&&(e=!0),b&&this.walls.left&&(this.walls.left.shapes[0].material=a),c&&this.walls.right&&(this.walls.right.shapes[0].material=a),d&&this.walls.top&&(this.walls.top.shapes[0].material=a),e&&this.walls.bottom&&(this.walls.bottom.shapes[0].material=a)},updateBoundsCollisionGroup:function(a){void 0===a&&(a=!0);var b=a?this.boundsCollisionGroup.mask:this.everythingCollisionGroup.mask;this.walls.left&&(this.walls.left.shapes[0].collisionGroup=b),this.walls.right&&(this.walls.right.shapes[0].collisionGroup=b),this.walls.top&&(this.walls.top.shapes[0].collisionGroup=b),this.walls.bottom&&(this.walls.bottom.shapes[0].collisionGroup=b),this._boundsOwnGroup=a},setBounds:function(a,b,c,d,e,f,g,h,i){void 0===e&&(e=this._boundsLeft),void 0===f&&(f=this._boundsRight),void 0===g&&(g=this._boundsTop),void 0===h&&(h=this._boundsBottom),void 0===i&&(i=this._boundsOwnGroup),this.setupWall(e,"left",a,b,1.5707963267948966,i),this.setupWall(f,"right",a+c,b,-1.5707963267948966,i),this.setupWall(g,"top",a,b,-3.141592653589793,i),this.setupWall(h,"bottom",a,b+d,0,i),this._boundsLeft=e,this._boundsRight=f,this._boundsTop=g,this._boundsBottom=h,this._boundsOwnGroup=i},setupWall:function(a,b,c,d,e,f){a?(this.walls[b]?this.walls[b].position=[this.pxmi(c),this.pxmi(d)]:(this.walls[b]=new p2.Body({mass:0,position:[this.pxmi(c),this.pxmi(d)],angle:e}),this.walls[b].addShape(new p2.Plane),this.world.addBody(this.walls[b])),f&&(this.walls[b].shapes[0].collisionGroup=this.boundsCollisionGroup.mask)):this.walls[b]&&(this.world.removeBody(this.walls[b]),this.walls[b]=null)},pause:function(){this.paused=!0},resume:function(){this.paused=!1},update:function(){this.paused||(this.useElapsedTime?this.world.step(this.game.time.physicsElapsed):this.world.step(this.frameRate))},reset:function(){this.world.on("beginContact",this.beginContactHandler,this),this.world.on("endContact",this.endContactHandler,this),this.nothingCollisionGroup=new c.Physics.P2.CollisionGroup(1),this.boundsCollisionGroup=new c.Physics.P2.CollisionGroup(2),this.everythingCollisionGroup=new c.Physics.P2.CollisionGroup(2147483648),this._collisionGroupID=2,this.setBoundsToWorld(!0,!0,!0,!0,!1)},clear:function(){this.world.time=0,this.world.fixedStepTime=0,this.world.solver&&this.world.solver.equations.length&&this.world.solver.removeAllEquations();for(var a=this.world.constraints,b=a.length-1;b>=0;b--)this.world.removeConstraint(a[b]);for(var c=this.world.bodies,b=c.length-1;b>=0;b--)this.world.removeBody(c[b]);for(var d=this.world.springs,b=d.length-1;b>=0;b--)this.world.removeSpring(d[b]);for(var e=this.world.contactMaterials,b=e.length-1;b>=0;b--)this.world.removeContactMaterial(e[b]);this.world.off("beginContact",this.beginContactHandler,this),this.world.off("endContact",this.endContactHandler,this),this.postBroadphaseCallback=null,this.callbackContext=null,this.impactCallback=null,this.collisionGroups=[],this._toRemove=[],this.boundsCollidesWith=[],this.walls={left:null,right:null,top:null,bottom:null}},destroy:function(){this.clear(),this.game=null},addBody:function(a){return a.data.world?!1:(this.world.addBody(a.data),this.onBodyAdded.dispatch(a),!0)},removeBody:function(a){return a.data.world==this.world&&(this.world.removeBody(a.data),this.onBodyRemoved.dispatch(a)),a},addSpring:function(a){return a instanceof c.Physics.P2.Spring||a instanceof c.Physics.P2.RotationalSpring?this.world.addSpring(a.data):this.world.addSpring(a),this.onSpringAdded.dispatch(a),a},removeSpring:function(a){return a instanceof c.Physics.P2.Spring||a instanceof c.Physics.P2.RotationalSpring?this.world.removeSpring(a.data):this.world.removeSpring(a), +this.onSpringRemoved.dispatch(a),a},createDistanceConstraint:function(a,b,d,e,f,g){return a=this.getBody(a),b=this.getBody(b),a&&b?this.addConstraint(new c.Physics.P2.DistanceConstraint(this,a,b,d,e,f,g)):void console.warn("Cannot create Constraint, invalid body objects given")},createGearConstraint:function(a,b,d,e){return a=this.getBody(a),b=this.getBody(b),a&&b?this.addConstraint(new c.Physics.P2.GearConstraint(this,a,b,d,e)):void console.warn("Cannot create Constraint, invalid body objects given")},createRevoluteConstraint:function(a,b,d,e,f,g){return a=this.getBody(a),d=this.getBody(d),a&&d?this.addConstraint(new c.Physics.P2.RevoluteConstraint(this,a,b,d,e,f,g)):void console.warn("Cannot create Constraint, invalid body objects given")},createLockConstraint:function(a,b,d,e,f){return a=this.getBody(a),b=this.getBody(b),a&&b?this.addConstraint(new c.Physics.P2.LockConstraint(this,a,b,d,e,f)):void console.warn("Cannot create Constraint, invalid body objects given")},createPrismaticConstraint:function(a,b,d,e,f,g,h){return a=this.getBody(a),b=this.getBody(b),a&&b?this.addConstraint(new c.Physics.P2.PrismaticConstraint(this,a,b,d,e,f,g,h)):void console.warn("Cannot create Constraint, invalid body objects given")},addConstraint:function(a){return this.world.addConstraint(a),this.onConstraintAdded.dispatch(a),a},removeConstraint:function(a){return this.world.removeConstraint(a),this.onConstraintRemoved.dispatch(a),a},addContactMaterial:function(a){return this.world.addContactMaterial(a),this.onContactMaterialAdded.dispatch(a),a},removeContactMaterial:function(a){return this.world.removeContactMaterial(a),this.onContactMaterialRemoved.dispatch(a),a},getContactMaterial:function(a,b){return this.world.getContactMaterial(a,b)},setMaterial:function(a,b){for(var c=b.length;c--;)b[c].setMaterial(a)},createMaterial:function(a,b){a=a||"";var d=new c.Physics.P2.Material(a);return this.materials.push(d),"undefined"!=typeof b&&b.setMaterial(d),d},createContactMaterial:function(a,b,d){void 0===a&&(a=this.createMaterial()),void 0===b&&(b=this.createMaterial());var e=new c.Physics.P2.ContactMaterial(a,b,d);return this.addContactMaterial(e)},getBodies:function(){for(var a=[],b=this.world.bodies.length;b--;)a.push(this.world.bodies[b].parent);return a},getBody:function(a){return a instanceof p2.Body?a:a instanceof c.Physics.P2.Body?a.data:a.body&&a.body.type===c.Physics.P2JS?a.body.data:null},getSprings:function(){for(var a=[],b=this.world.springs.length;b--;)a.push(this.world.springs[b].parent);return a},getConstraints:function(){for(var a=[],b=this.world.constraints.length;b--;)a.push(this.world.constraints[b]);return a},hitTest:function(a,b,d,e){void 0===b&&(b=this.world.bodies),void 0===d&&(d=5),void 0===e&&(e=!1);for(var f=[this.pxmi(a.x),this.pxmi(a.y)],g=[],h=b.length;h--;)b[h]instanceof c.Physics.P2.Body&&(!e||b[h].data.type!==p2.Body.STATIC)?g.push(b[h].data):b[h]instanceof p2.Body&&b[h].parent&&(!e||b[h].type!==p2.Body.STATIC)?g.push(b[h]):b[h]instanceof c.Sprite&&b[h].hasOwnProperty("body")&&(!e||b[h].body.data.type!==p2.Body.STATIC)&&g.push(b[h].body.data);return this.world.hitTest(f,g,d)},toJSON:function(){return this.world.toJSON()},createCollisionGroup:function(a){var b=Math.pow(2,this._collisionGroupID);this.walls.left&&(this.walls.left.shapes[0].collisionMask=this.walls.left.shapes[0].collisionMask|b),this.walls.right&&(this.walls.right.shapes[0].collisionMask=this.walls.right.shapes[0].collisionMask|b),this.walls.top&&(this.walls.top.shapes[0].collisionMask=this.walls.top.shapes[0].collisionMask|b),this.walls.bottom&&(this.walls.bottom.shapes[0].collisionMask=this.walls.bottom.shapes[0].collisionMask|b),this._collisionGroupID++;var d=new c.Physics.P2.CollisionGroup(b);return this.collisionGroups.push(d),a&&this.setCollisionGroup(a,d),d},setCollisionGroup:function(a,b){if(a instanceof c.Group)for(var d=0;de;e++){var g=a.collision[b][e],h=this.createBody(g.x,g.y,0,c,{},g.polyline);h&&d.push(h)}return d},clearTilemapLayerBodies:function(a,b){b=a.getLayer(b);for(var c=a.layers[b].bodies.length;c--;)a.layers[b].bodies[c].destroy();a.layers[b].bodies.length=0},convertTilemap:function(a,b,c,d){b=a.getLayer(b),void 0===c&&(c=!0),void 0===d&&(d=!0),this.clearTilemapLayerBodies(a,b);for(var e=0,f=0,g=0,h=0,i=a.layers[b].height;i>h;h++){e=0;for(var j=0,k=a.layers[b].width;k>j;j++){var l=a.layers[b].data[h][j];if(l&&l.index>-1&&l.collides)if(d){var m=a.getTileRight(b,j,h);if(0===e&&(f=l.x*l.width,g=l.y*l.height,e=l.width),m&&m.collides)e+=l.width;else{var n=this.createBody(f,g,0,!1);n.addRectangle(e,l.height,e/2,l.height/2,0),c&&this.addBody(n),a.layers[b].bodies.push(n),e=0}}else{var n=this.createBody(l.x*l.width,l.y*l.height,0,!1);n.addRectangle(l.width,l.height,l.width/2,l.height/2,0),c&&this.addBody(n),a.layers[b].bodies.push(n)}}}return a.layers[b].bodies},mpx:function(a){return a*=20},pxm:function(a){return.05*a},mpxi:function(a){return a*=-20},pxmi:function(a){return a*-.05}},Object.defineProperty(c.Physics.P2.prototype,"friction",{get:function(){return this.world.defaultContactMaterial.friction},set:function(a){this.world.defaultContactMaterial.friction=a}}),Object.defineProperty(c.Physics.P2.prototype,"restitution",{get:function(){return this.world.defaultContactMaterial.restitution},set:function(a){this.world.defaultContactMaterial.restitution=a}}),Object.defineProperty(c.Physics.P2.prototype,"contactMaterial",{get:function(){return this.world.defaultContactMaterial},set:function(a){this.world.defaultContactMaterial=a}}),Object.defineProperty(c.Physics.P2.prototype,"applySpringForces",{get:function(){return this.world.applySpringForces},set:function(a){this.world.applySpringForces=a}}),Object.defineProperty(c.Physics.P2.prototype,"applyDamping",{get:function(){return this.world.applyDamping},set:function(a){this.world.applyDamping=a}}),Object.defineProperty(c.Physics.P2.prototype,"applyGravity",{get:function(){return this.world.applyGravity},set:function(a){this.world.applyGravity=a}}),Object.defineProperty(c.Physics.P2.prototype,"solveConstraints",{get:function(){return this.world.solveConstraints},set:function(a){this.world.solveConstraints=a}}),Object.defineProperty(c.Physics.P2.prototype,"time",{get:function(){return this.world.time}}),Object.defineProperty(c.Physics.P2.prototype,"emitImpactEvent",{get:function(){return this.world.emitImpactEvent},set:function(a){this.world.emitImpactEvent=a}}),Object.defineProperty(c.Physics.P2.prototype,"sleepMode",{get:function(){return this.world.sleepMode},set:function(a){this.world.sleepMode=a}}),Object.defineProperty(c.Physics.P2.prototype,"total",{get:function(){return this.world.bodies.length}}),c.Physics.P2.FixtureList=function(a){Array.isArray(a)||(a=[a]),this.rawList=a,this.init(),this.parse(this.rawList)},c.Physics.P2.FixtureList.prototype={init:function(){this.namedFixtures={},this.groupedFixtures=[],this.allFixtures=[]},setCategory:function(a,b){var c=function(b){b.collisionGroup=a};this.getFixtures(b).forEach(c)},setMask:function(a,b){var c=function(b){b.collisionMask=a};this.getFixtures(b).forEach(c)},setSensor:function(a,b){var c=function(b){b.sensor=a};this.getFixtures(b).forEach(c)},setMaterial:function(a,b){var c=function(b){b.material=a};this.getFixtures(b).forEach(c)},getFixtures:function(a){var b=[];if(a){a instanceof Array||(a=[a]);var c=this;return a.forEach(function(a){c.namedFixtures[a]&&b.push(c.namedFixtures[a])}),this.flatten(b)}return this.allFixtures},getFixtureByKey:function(a){return this.namedFixtures[a]},getGroup:function(a){return this.groupedFixtures[a]},parse:function(){var a,b,c,d;c=this.rawList,d=[];for(a in c)b=c[a],isNaN(a-0)?this.namedFixtures[a]=this.flatten(b):(this.groupedFixtures[a]=this.groupedFixtures[a]||[],this.groupedFixtures[a]=this.groupedFixtures[a].concat(b)),d.push(this.allFixtures=this.flatten(this.groupedFixtures))},flatten:function(a){var b,c;return b=[],c=arguments.callee,a.forEach(function(a){return Array.prototype.push.apply(b,Array.isArray(a)?c(a):[a])}),b}},c.Physics.P2.PointProxy=function(a,b){this.world=a,this.destination=b},c.Physics.P2.PointProxy.prototype.constructor=c.Physics.P2.PointProxy,Object.defineProperty(c.Physics.P2.PointProxy.prototype,"x",{get:function(){return this.world.mpx(this.destination[0])},set:function(a){this.destination[0]=this.world.pxm(a)}}),Object.defineProperty(c.Physics.P2.PointProxy.prototype,"y",{get:function(){return this.world.mpx(this.destination[1])},set:function(a){this.destination[1]=this.world.pxm(a)}}),Object.defineProperty(c.Physics.P2.PointProxy.prototype,"mx",{get:function(){return this.destination[0]},set:function(a){this.destination[0]=a}}),Object.defineProperty(c.Physics.P2.PointProxy.prototype,"my",{get:function(){return this.destination[1]},set:function(a){this.destination[1]=a}}),c.Physics.P2.InversePointProxy=function(a,b){this.world=a,this.destination=b},c.Physics.P2.InversePointProxy.prototype.constructor=c.Physics.P2.InversePointProxy,Object.defineProperty(c.Physics.P2.InversePointProxy.prototype,"x",{get:function(){return this.world.mpxi(this.destination[0])},set:function(a){this.destination[0]=this.world.pxmi(a)}}),Object.defineProperty(c.Physics.P2.InversePointProxy.prototype,"y",{get:function(){return this.world.mpxi(this.destination[1])},set:function(a){this.destination[1]=this.world.pxmi(a)}}),Object.defineProperty(c.Physics.P2.InversePointProxy.prototype,"mx",{get:function(){return this.destination[0]},set:function(a){this.destination[0]=-a}}),Object.defineProperty(c.Physics.P2.InversePointProxy.prototype,"my",{get:function(){return this.destination[1]},set:function(a){this.destination[1]=-a}}),c.Physics.P2.Body=function(a,b,d,e,f){b=b||null,d=d||0,e=e||0,void 0===f&&(f=1),this.game=a,this.world=a.physics.p2,this.sprite=b,this.type=c.Physics.P2JS,this.offset=new c.Point,this.data=new p2.Body({position:[this.world.pxmi(d),this.world.pxmi(e)],mass:f}),this.data.parent=this,this.velocity=new c.Physics.P2.InversePointProxy(this.world,this.data.velocity),this.force=new c.Physics.P2.InversePointProxy(this.world,this.data.force),this.gravity=new c.Point,this.onBeginContact=new c.Signal,this.onEndContact=new c.Signal,this.collidesWith=[],this.removeNextStep=!1,this.debugBody=null,this.dirty=!1,this._collideWorldBounds=!0,this._bodyCallbacks={},this._bodyCallbackContext={},this._groupCallbacks={},this._groupCallbackContext={},this._reset=!1,b&&(this.setRectangleFromSprite(b),b.exists&&this.game.physics.p2.addBody(this))},c.Physics.P2.Body.prototype={createBodyCallback:function(a,b,c){var d=-1;a.id?d=a.id:a.body&&(d=a.body.id),d>-1&&(null===b?(delete this._bodyCallbacks[d],delete this._bodyCallbackContext[d]):(this._bodyCallbacks[d]=b,this._bodyCallbackContext[d]=c))},createGroupCallback:function(a,b,c){null===b?(delete this._groupCallbacks[a.mask],delete this._groupCallbackContext[a.mask]):(this._groupCallbacks[a.mask]=b,this._groupCallbackContext[a.mask]=c)},getCollisionMask:function(){var a=0;this._collideWorldBounds&&(a=this.game.physics.p2.boundsCollisionGroup.mask);for(var b=0;b=0;c--)this.data.shapes[c].collisionMask=b;else a.collisionMask=b},setCollisionGroup:function(a,b){var c=this.getCollisionMask();if(void 0===b)for(var d=this.data.shapes.length-1;d>=0;d--)this.data.shapes[d].collisionGroup=a.mask,this.data.shapes[d].collisionMask=c;else b.collisionGroup=a.mask,b.collisionMask=c},clearCollision:function(a,b,c){if(void 0===a&&(a=!0),void 0===b&&(b=!0),void 0===c)for(var d=this.data.shapes.length-1;d>=0;d--)a&&(this.data.shapes[d].collisionGroup=null),b&&(this.data.shapes[d].collisionMask=null);else a&&(c.collisionGroup=null),b&&(c.collisionMask=null);a&&(this.collidesWith.length=0)},removeCollisionGroup:function(a,b,c){void 0===b&&(b=!0);var d;if(Array.isArray(a))for(var e=0;e-1&&(this.collidesWith.splice(d,1),b&&(delete this._groupCallbacks[a.mask],delete this._groupCallbackContext[a.mask]));else d=this.collidesWith.indexOf(a),d>-1&&(this.collidesWith.splice(d,1),b&&(delete this._groupCallbacks[a.mask],delete this._groupCallbackContext[a.mask]));var f=this.getCollisionMask();if(void 0===c)for(var e=this.data.shapes.length-1;e>=0;e--)this.data.shapes[e].collisionMask=f;else c.collisionMask=f},collides:function(a,b,c,d){if(Array.isArray(a))for(var e=0;e=0;e--)this.data.shapes[e].collisionMask=f;else d.collisionMask=f},adjustCenterOfMass:function(){this.data.adjustCenterOfMass(),this.shapeChanged()},getVelocityAtPoint:function(a,b){return this.data.getVelocityAtPoint(a,b)},applyDamping:function(a){this.data.applyDamping(a)},applyImpulse:function(a,b,c){this.data.applyImpulse(a,[this.world.pxmi(b),this.world.pxmi(c)])},applyImpulseLocal:function(a,b,c){this.data.applyImpulseLocal(a,[this.world.pxmi(b),this.world.pxmi(c)])},applyForce:function(a,b,c){this.data.applyForce(a,[this.world.pxmi(b),this.world.pxmi(c)])},setZeroForce:function(){this.data.setZeroForce()},setZeroRotation:function(){this.data.angularVelocity=0},setZeroVelocity:function(){this.data.velocity[0]=0,this.data.velocity[1]=0},setZeroDamping:function(){this.data.damping=0,this.data.angularDamping=0},toLocalFrame:function(a,b){return this.data.toLocalFrame(a,b)},toWorldFrame:function(a,b){return this.data.toWorldFrame(a,b)},rotateLeft:function(a){this.data.angularVelocity=this.world.pxm(-a)},rotateRight:function(a){this.data.angularVelocity=this.world.pxm(a)},moveForward:function(a){var b=this.world.pxmi(-a),c=this.data.angle+Math.PI/2;this.data.velocity[0]=b*Math.cos(c),this.data.velocity[1]=b*Math.sin(c)},moveBackward:function(a){var b=this.world.pxmi(-a),c=this.data.angle+Math.PI/2;this.data.velocity[0]=-(b*Math.cos(c)),this.data.velocity[1]=-(b*Math.sin(c))},thrust:function(a){var b=this.world.pxmi(-a),c=this.data.angle+Math.PI/2;this.data.force[0]+=b*Math.cos(c),this.data.force[1]+=b*Math.sin(c)},thrustLeft:function(a){var b=this.world.pxmi(-a),c=this.data.angle;this.data.force[0]+=b*Math.cos(c),this.data.force[1]+=b*Math.sin(c)},thrustRight:function(a){var b=this.world.pxmi(-a),c=this.data.angle;this.data.force[0]-=b*Math.cos(c),this.data.force[1]-=b*Math.sin(c)},reverse:function(a){var b=this.world.pxmi(-a),c=this.data.angle+Math.PI/2;this.data.force[0]-=b*Math.cos(c),this.data.force[1]-=b*Math.sin(c)},moveLeft:function(a){this.data.velocity[0]=this.world.pxmi(-a)},moveRight:function(a){this.data.velocity[0]=this.world.pxmi(a)},moveUp:function(a){this.data.velocity[1]=this.world.pxmi(-a)},moveDown:function(a){this.data.velocity[1]=this.world.pxmi(a)},preUpdate:function(){this.dirty=!0,this.removeNextStep&&(this.removeFromWorld(),this.removeNextStep=!1)},postUpdate:function(){this.sprite.x=this.world.mpxi(this.data.position[0])+this.offset.x,this.sprite.y=this.world.mpxi(this.data.position[1])+this.offset.y,this.fixedRotation||(this.sprite.rotation=this.data.angle),this.debugBody&&this.debugBody.updateSpriteTransform(),this.dirty=!1},reset:function(a,b,c,d){void 0===c&&(c=!1),void 0===d&&(d=!1),this.setZeroForce(),this.setZeroVelocity(),this.setZeroRotation(),c&&this.setZeroDamping(),d&&(this.mass=1),this.x=a,this.y=b},addToWorld:function(){if(this.game.physics.p2._toRemove)for(var a=0;ad;d+=2)c.push([b[d],b[d+1]]);var f=c.length-1;c[f][0]===c[0][0]&&c[f][1]===c[0][1]&&c.pop();for(var g=0;g=0;c--)this.data.shapes[c].material=a;else b.material=a},shapeChanged:function(){this.debugBody&&this.debugBody.draw()},addPhaserPolygon:function(a,b){for(var c=this.game.cache.getPhysicsData(a,b),d=[],e=0;e=0?o>n:n>o;e=o>=0?++n:--n)k=b.vertices[e],p2.vec2.rotate(m,k,a),l.push([(m[0]+i[0])*this.ppu,-(m[1]+i[1])*this.ppu]);this.drawConvex(j,l,b.triangles,f,c,g,this.settings.debugPolygons,[i[0]*this.ppu,-i[1]*this.ppu])}d++}}},drawRectangle:function(a,b,c,d,e,f,g,h,i){void 0===i&&(i=1),void 0===g&&(g=0),a.lineStyle(i,g,1),a.beginFill(h),a.drawRect(b-e/2,c-f/2,e,f)},drawCircle:function(a,b,c,d,e,f,g){void 0===g&&(g=1),void 0===f&&(f=16777215),a.lineStyle(g,0,1),a.beginFill(f,1),a.drawCircle(b,c,2*-e),a.endFill(),a.moveTo(b,c),a.lineTo(b+e*Math.cos(-d),c+e*Math.sin(-d))},drawLine:function(a,b,c,d){void 0===d&&(d=1),void 0===c&&(c=0),a.lineStyle(5*d,c,1),a.moveTo(-b/2,0),a.lineTo(b/2,0)},drawConvex:function(a,b,c,d,e,f,g,h){var i,j,k,l,m,n,o,p,q,r,s;if(void 0===f&&(f=1),void 0===d&&(d=0),g){for(i=[16711680,65280,255],j=0;j!==b.length+1;)l=b[j%b.length],m=b[(j+1)%b.length],o=l[0],r=l[1],p=m[0],s=m[1],a.lineStyle(f,i[j%i.length],1),a.moveTo(o,-r),a.lineTo(p,-s),a.drawCircle(o,-r,2*f),j++;return a.lineStyle(f,0,1),a.drawCircle(h[0],h[1],2*f)}for(a.lineStyle(f,d,1),a.beginFill(e),j=0;j!==b.length;)k=b[j],n=k[0],q=k[1],0===j?a.moveTo(n,-q):a.lineTo(n,-q),j++;return a.endFill(),b.length>2?(a.moveTo(b[b.length-1][0],-b[b.length-1][1]),a.lineTo(b[0][0],-b[0][1])):void 0},drawPath:function(a,b,c,d,e){var f,g,h,i,j,k,l,m,n,o,p,q,r;for(void 0===e&&(e=1),void 0===c&&(c=0),a.lineStyle(e,c,1),"number"==typeof d&&a.beginFill(d),h=null,i=null,g=0;g2&&"number"==typeof d&&(a.moveTo(b[b.length-1][0],b[b.length-1][1]),a.lineTo(b[0][0],b[0][1]))},drawPlane:function(a,b,c,d,e,f,g,h,i,j){var k,l,m;void 0===f&&(f=1),void 0===d&&(d=16777215),a.lineStyle(f,e,11),a.beginFill(d),k=i,a.moveTo(b,-c),l=b+Math.cos(j)*this.game.width,m=c+Math.sin(j)*this.game.height,a.lineTo(l,-m),a.moveTo(b,-c),l=b+Math.cos(j)*-this.game.width,m=c+Math.sin(j)*-this.game.height,a.lineTo(l,-m)},drawCapsule:function(a,b,c,d,e,f,g,h,i){void 0===i&&(i=1),void 0===g&&(g=0),a.lineStyle(i,g,1);var j=Math.cos(d),k=Math.sin(d);a.beginFill(h,1),a.drawCircle(-e/2*j+b,-e/2*k+c,2*-f),a.drawCircle(e/2*j+b,e/2*k+c,2*-f),a.endFill(),a.lineStyle(i,g,0),a.beginFill(h,1),a.moveTo(-e/2*j+f*k+b,-e/2*k+f*j+c),a.lineTo(e/2*j+f*k+b,e/2*k+f*j+c),a.lineTo(e/2*j-f*k+b,e/2*k-f*j+c),a.lineTo(-e/2*j-f*k+b,-e/2*k-f*j+c),a.endFill(),a.lineStyle(i,g,1),a.moveTo(-e/2*j+f*k+b,-e/2*k+f*j+c),a.lineTo(e/2*j+f*k+b,e/2*k+f*j+c),a.moveTo(-e/2*j-f*k+b,-e/2*k-f*j+c),a.lineTo(e/2*j-f*k+b,e/2*k-f*j+c)},randomPastelHex:function(){var a,b,c,d;return c=[255,255,255],d=Math.floor(256*Math.random()),b=Math.floor(256*Math.random()),a=Math.floor(256*Math.random()),d=Math.floor((d+3*c[0])/4),b=Math.floor((b+3*c[1])/4),a=Math.floor((a+3*c[2])/4),this.rgbToHex(d,b,a)},rgbToHex:function(a,b,c){return this.componentToHex(a)+this.componentToHex(b)+this.componentToHex(c)},componentToHex:function(a){var b;return b=a.toString(16),2===b.length?b:b+"0"}}),c.Physics.P2.Spring=function(a,b,c,d,e,f,g,h,i,j){this.game=a.game,this.world=a,void 0===d&&(d=1),void 0===e&&(e=100),void 0===f&&(f=1),d=a.pxm(d);var k={restLength:d,stiffness:e,damping:f};"undefined"!=typeof g&&null!==g&&(k.worldAnchorA=[a.pxm(g[0]),a.pxm(g[1])]),"undefined"!=typeof h&&null!==h&&(k.worldAnchorB=[a.pxm(h[0]),a.pxm(h[1])]),"undefined"!=typeof i&&null!==i&&(k.localAnchorA=[a.pxm(i[0]),a.pxm(i[1])]),"undefined"!=typeof j&&null!==j&&(k.localAnchorB=[a.pxm(j[0]),a.pxm(j[1])]),this.data=new p2.LinearSpring(b,c,k),this.data.parent=this},c.Physics.P2.Spring.prototype.constructor=c.Physics.P2.Spring,c.Physics.P2.RotationalSpring=function(a,b,c,d,e,f){this.game=a.game,this.world=a,void 0===d&&(d=null),void 0===e&&(e=100),void 0===f&&(f=1),d&&(d=a.pxm(d));var g={restAngle:d,stiffness:e,damping:f};this.data=new p2.RotationalSpring(b,c,g),this.data.parent=this},c.Physics.P2.Spring.prototype.constructor=c.Physics.P2.Spring,c.Physics.P2.Material=function(a){this.name=a,p2.Material.call(this)},c.Physics.P2.Material.prototype=Object.create(p2.Material.prototype),c.Physics.P2.Material.prototype.constructor=c.Physics.P2.Material,c.Physics.P2.ContactMaterial=function(a,b,c){p2.ContactMaterial.call(this,a,b,c)},c.Physics.P2.ContactMaterial.prototype=Object.create(p2.ContactMaterial.prototype),c.Physics.P2.ContactMaterial.prototype.constructor=c.Physics.P2.ContactMaterial,c.Physics.P2.CollisionGroup=function(a){this.mask=a},c.Physics.P2.DistanceConstraint=function(a,b,c,d,e,f,g){void 0===d&&(d=100),void 0===e&&(e=[0,0]),void 0===f&&(f=[0,0]),void 0===g&&(g=Number.MAX_VALUE),this.game=a.game,this.world=a,d=a.pxm(d),e=[a.pxmi(e[0]),a.pxmi(e[1])],f=[a.pxmi(f[0]),a.pxmi(f[1])]; +var h={distance:d,localAnchorA:e,localAnchorB:f,maxForce:g};p2.DistanceConstraint.call(this,b,c,h)},c.Physics.P2.DistanceConstraint.prototype=Object.create(p2.DistanceConstraint.prototype),c.Physics.P2.DistanceConstraint.prototype.constructor=c.Physics.P2.DistanceConstraint,c.Physics.P2.GearConstraint=function(a,b,c,d,e){void 0===d&&(d=0),void 0===e&&(e=1),this.game=a.game,this.world=a;var f={angle:d,ratio:e};p2.GearConstraint.call(this,b,c,f)},c.Physics.P2.GearConstraint.prototype=Object.create(p2.GearConstraint.prototype),c.Physics.P2.GearConstraint.prototype.constructor=c.Physics.P2.GearConstraint,c.Physics.P2.LockConstraint=function(a,b,c,d,e,f){void 0===d&&(d=[0,0]),void 0===e&&(e=0),void 0===f&&(f=Number.MAX_VALUE),this.game=a.game,this.world=a,d=[a.pxm(d[0]),a.pxm(d[1])];var g={localOffsetB:d,localAngleB:e,maxForce:f};p2.LockConstraint.call(this,b,c,g)},c.Physics.P2.LockConstraint.prototype=Object.create(p2.LockConstraint.prototype),c.Physics.P2.LockConstraint.prototype.constructor=c.Physics.P2.LockConstraint,c.Physics.P2.PrismaticConstraint=function(a,b,c,d,e,f,g,h){void 0===d&&(d=!0),void 0===e&&(e=[0,0]),void 0===f&&(f=[0,0]),void 0===g&&(g=[0,0]),void 0===h&&(h=Number.MAX_VALUE),this.game=a.game,this.world=a,e=[a.pxmi(e[0]),a.pxmi(e[1])],f=[a.pxmi(f[0]),a.pxmi(f[1])];var i={localAnchorA:e,localAnchorB:f,localAxisA:g,maxForce:h,disableRotationalLock:!d};p2.PrismaticConstraint.call(this,b,c,i)},c.Physics.P2.PrismaticConstraint.prototype=Object.create(p2.PrismaticConstraint.prototype),c.Physics.P2.PrismaticConstraint.prototype.constructor=c.Physics.P2.PrismaticConstraint,c.Physics.P2.RevoluteConstraint=function(a,b,c,d,e,f,g){void 0===f&&(f=Number.MAX_VALUE),void 0===g&&(g=null),this.game=a.game,this.world=a,c=[a.pxmi(c[0]),a.pxmi(c[1])],e=[a.pxmi(e[0]),a.pxmi(e[1])],g&&(g=[a.pxmi(g[0]),a.pxmi(g[1])]);var h={worldPivot:g,localPivotA:c,localPivotB:e,maxForce:f};p2.RevoluteConstraint.call(this,b,d,h)},c.Physics.P2.RevoluteConstraint.prototype=Object.create(p2.RevoluteConstraint.prototype),c.Physics.P2.RevoluteConstraint.prototype.constructor=c.Physics.P2.RevoluteConstraint,c.ImageCollection=function(a,b,c,d,e,f,g){(void 0===c||0>=c)&&(c=32),(void 0===d||0>=d)&&(d=32),void 0===e&&(e=0),void 0===f&&(f=0),this.name=a,this.firstgid=0|b,this.imageWidth=0|c,this.imageHeight=0|d,this.imageMargin=0|e,this.imageSpacing=0|f,this.properties=g||{},this.images=[],this.total=0},c.ImageCollection.prototype={containsImageIndex:function(a){return a>=this.firstgid&&athis.right||b>this.bottom)},intersects:function(a,b,c,d){return c<=this.worldX?!1:d<=this.worldY?!1:a>=this.worldX+this.width?!1:!(b>=this.worldY+this.height)},setCollisionCallback:function(a,b){this.collisionCallback=a,this.collisionCallbackContext=b},destroy:function(){this.collisionCallback=null,this.collisionCallbackContext=null,this.properties=null},setCollision:function(a,b,c,d){this.collideLeft=a,this.collideRight=b,this.collideUp=c,this.collideDown=d,this.faceLeft=a,this.faceRight=b,this.faceTop=c,this.faceBottom=d},resetCollision:function(){this.collideLeft=!1,this.collideRight=!1,this.collideUp=!1,this.collideDown=!1,this.faceTop=!1,this.faceBottom=!1,this.faceLeft=!1,this.faceRight=!1},isInteresting:function(a,b){return a&&b?this.collideLeft||this.collideRight||this.collideUp||this.collideDown||this.faceTop||this.faceBottom||this.faceLeft||this.faceRight||this.collisionCallback:a?this.collideLeft||this.collideRight||this.collideUp||this.collideDown:b?this.faceTop||this.faceBottom||this.faceLeft||this.faceRight:!1},copy:function(a){this.index=a.index,this.alpha=a.alpha,this.properties=a.properties,this.collideUp=a.collideUp,this.collideDown=a.collideDown,this.collideLeft=a.collideLeft,this.collideRight=a.collideRight,this.collisionCallback=a.collisionCallback,this.collisionCallbackContext=a.collisionCallbackContext}},c.Tile.prototype.constructor=c.Tile,Object.defineProperty(c.Tile.prototype,"collides",{get:function(){return this.collideLeft||this.collideRight||this.collideUp||this.collideDown}}),Object.defineProperty(c.Tile.prototype,"canCollide",{get:function(){return this.collideLeft||this.collideRight||this.collideUp||this.collideDown||this.collisionCallback}}),Object.defineProperty(c.Tile.prototype,"left",{get:function(){return this.worldX}}),Object.defineProperty(c.Tile.prototype,"right",{get:function(){return this.worldX+this.width}}),Object.defineProperty(c.Tile.prototype,"top",{get:function(){return this.worldY}}),Object.defineProperty(c.Tile.prototype,"bottom",{get:function(){return this.worldY+this.height}}),c.Tilemap=function(a,b,d,e,f,g){this.game=a,this.key=b;var h=c.TilemapParser.parse(this.game,b,d,e,f,g);null!==h&&(this.width=h.width,this.height=h.height,this.tileWidth=h.tileWidth,this.tileHeight=h.tileHeight,this.orientation=h.orientation,this.format=h.format,this.version=h.version,this.properties=h.properties,this.widthInPixels=h.widthInPixels,this.heightInPixels=h.heightInPixels,this.layers=h.layers,this.tilesets=h.tilesets,this.imagecollections=h.imagecollections,this.tiles=h.tiles,this.objects=h.objects,this.collideIndexes=[],this.collision=h.collision,this.images=h.images,this.currentLayer=0,this.debugMap=[],this._results=[],this._tempA=0,this._tempB=0)},c.Tilemap.CSV=0,c.Tilemap.TILED_JSON=1,c.Tilemap.NORTH=0,c.Tilemap.EAST=1,c.Tilemap.SOUTH=2,c.Tilemap.WEST=3,c.Tilemap.prototype={create:function(a,b,c,d,e,f){return void 0===f&&(f=this.game.world),this.width=b,this.height=c,this.setTileSize(d,e),this.layers.length=0,this.createBlankLayer(a,b,c,d,e,f)},setTileSize:function(a,b){this.tileWidth=a,this.tileHeight=b,this.widthInPixels=this.width*a,this.heightInPixels=this.height*b},addTilesetImage:function(a,b,d,e,f,g,h){if(void 0===a)return null;void 0===d&&(d=this.tileWidth),void 0===e&&(e=this.tileHeight),void 0===f&&(f=0),void 0===g&&(g=0),void 0===h&&(h=0),0===d&&(d=32),0===e&&(e=32);var i=null;if(void 0!==b&&null!==b||(b=a),b instanceof c.BitmapData)i=b.canvas;else{if(!this.game.cache.checkImageKey(b))return console.warn('Phaser.Tilemap.addTilesetImage: Invalid image key given: "'+b+'"'),null;i=this.game.cache.getImage(b)}var j=this.getTilesetIndex(a);if(null===j&&this.format===c.Tilemap.TILED_JSON)return console.warn('Phaser.Tilemap.addTilesetImage: No data found in the JSON matching the tileset name: "'+a+'"'),null;if(this.tilesets[j])return this.tilesets[j].setImage(i),this.tilesets[j];var k=new c.Tileset(a,h,d,e,f,g,{});k.setImage(i),this.tilesets.push(k);for(var l=this.tilesets.length-1,m=f,n=f,o=0,p=0,q=0,r=h;rl;l++)if(-1!==a.indexOf(this._results[l].index)){j=new g.customClass(this.game,this._results[l].worldX,this._results[l].worldY,d);for(var n in g)j[n]=g[n];f.add(j),k++}if(1===b.length)for(l=0;l1)for(l=0;lthis.layers.length?void console.warn("Tilemap.createLayer: Invalid layer ID given: "+g):f?e.add(new c.TilemapLayerGL(this.game,this,g,b,d)):e.add(new c.TilemapLayer(this.game,this,g,b,d))},createBlankLayer:function(a,b,d,e,f,g){if(void 0===g&&(g=this.game.world),null!==this.getLayerIndex(a))return void console.warn("Tilemap.createBlankLayer: Layer with matching name already exists");for(var h,i={name:a,x:0,y:0,width:b,height:d,widthInPixels:b*e,heightInPixels:d*f,alpha:1,visible:!0,properties:{},indexes:[],callbacks:[],bodies:[],data:null},j=[],k=0;d>k;k++){h=[];for(var l=0;b>l;l++)h.push(new c.Tile(i,-1,l,k,e,f));j.push(h)}i.data=j,this.layers.push(i),this.currentLayer=this.layers.length-1;var m=i.widthInPixels,n=i.heightInPixels;m>this.game.width&&(m=this.game.width),n>this.game.height&&(n=this.game.height);var j=new c.TilemapLayer(this.game,this,this.layers.length-1,m,n);return j.name=a,g.add(j)},getIndex:function(a,b){for(var c=0;ce;e++)this.layers[d].callbacks[a[e]]={callback:b,callbackContext:c}},setTileLocationCallback:function(a,b,c,d,e,f,g){if(g=this.getLayer(g),this.copy(a,b,c,d,g),!(this._results.length<2))for(var h=1;hb)){for(var f=a;b>=f;f++)this.setCollisionByIndex(f,c,d,!1);e&&this.calculateFaces(d)}},setCollisionByExclusion:function(a,b,c,d){void 0===b&&(b=!0),void 0===d&&(d=!0),c=this.getLayer(c);for(var e=0,f=this.tiles.length;f>e;e++)-1===a.indexOf(e)&&this.setCollisionByIndex(e,b,c,!1);d&&this.calculateFaces(c)},setCollisionByIndex:function(a,b,c,d){if(void 0===b&&(b=!0),void 0===c&&(c=this.currentLayer),void 0===d&&(d=!0),b)this.collideIndexes.push(a);else{var e=this.collideIndexes.indexOf(a);e>-1&&this.collideIndexes.splice(e,1)}for(var f=0;ff;f++)for(var h=0,i=this.layers[a].width;i>h;h++){var j=this.layers[a].data[f][h];j&&(b=this.getTileAbove(a,h,f),c=this.getTileBelow(a,h,f),d=this.getTileLeft(a,h,f),e=this.getTileRight(a,h,f),j.collides&&(j.faceTop=!0,j.faceBottom=!0,j.faceLeft=!0,j.faceRight=!0),b&&b.collides&&(j.faceTop=!1),c&&c.collides&&(j.faceBottom=!1),d&&d.collides&&(j.faceLeft=!1),e&&e.collides&&(j.faceRight=!1))}},getTileAbove:function(a,b,c){return c>0?this.layers[a].data[c-1][b]:null},getTileBelow:function(a,b,c){return c0?this.layers[a].data[c][b-1]:null},getTileRight:function(a,b,c){return b-1},removeTile:function(a,b,d){if(d=this.getLayer(d),a>=0&&a=0&&b=0&&b=0&&d-1?this.layers[e].data[d][b].setCollision(!0,!0,!0,!0):this.layers[e].data[d][b].resetCollision(),this.layers[e].dirty=!0,this.calculateFaces(e),this.layers[e].data[d][b]}return null},putTileWorldXY:function(a,b,c,d,e,f){return f=this.getLayer(f),b=this.game.math.snapToFloor(b,d)/d,c=this.game.math.snapToFloor(c,e)/e,this.putTile(a,b,c,f)},searchTileIndex:function(a,b,c,d){void 0===b&&(b=0),void 0===c&&(c=!1),d=this.getLayer(d);var e=0;if(c){for(var f=this.layers[d].height-1;f>=0;f--)for(var g=this.layers[d].width-1;g>=0;g--)if(this.layers[d].data[f][g].index===a){if(e===b)return this.layers[d].data[f][g];e++}}else for(var f=0;f=0&&a=0&&ba&&(a=0),0>b&&(b=0),c>this.layers[e].width&&(c=this.layers[e].width),d>this.layers[e].height&&(d=this.layers[e].height),this._results.length=0,this._results.push({x:a,y:b,width:c,height:d,layer:e});for(var f=b;b+d>f;f++)for(var g=a;a+c>g;g++)this._results.push(this.layers[e].data[f][g]);return this._results},paste:function(a,b,c,d){if(void 0===a&&(a=0),void 0===b&&(b=0),d=this.getLayer(d),c&&!(c.length<2)){for(var e=a-c[1].x,f=b-c[1].y,g=1;g1?this.debugMap[this.layers[this.currentLayer].data[c][d]]?b.push("background: "+this.debugMap[this.layers[this.currentLayer].data[c][d]]):b.push("background: #ffffff"):b.push("background: rgb(0, 0, 0)");a+="\n"}b[0]=a,console.log.apply(console,b)},destroy:function(){this.removeAllLayers(),this.data=[],this.game=null}},c.Tilemap.prototype.constructor=c.Tilemap,Object.defineProperty(c.Tilemap.prototype,"layer",{get:function(){return this.layers[this.currentLayer]},set:function(a){a!==this.currentLayer&&this.setLayer(a)}}),c.TilemapLayer=function(a,b,d,e,f){e|=0,f|=0,c.Sprite.call(this,a,0,0),this.map=b,this.index=d,this.layer=b.layers[d],this.canvas=PIXI.CanvasPool.create(this,e,f),this.context=this.canvas.getContext("2d"),this.setTexture(new PIXI.Texture(new PIXI.BaseTexture(this.canvas))),this.type=c.TILEMAPLAYER,this.physicsType=c.TILEMAPLAYER,this.renderSettings={enableScrollDelta:!1,overdrawRatio:.2,copyCanvas:null},this.debug=!1,this.exists=!0,this.debugSettings={missingImageFill:"rgb(255,255,255)",debuggedTileOverfill:"rgba(0,255,0,0.4)",forceFullRedraw:!0,debugAlpha:.5,facingEdgeStroke:"rgba(0,255,0,1)",collidingTileOverfill:"rgba(0,255,0,0.2)"},this.scrollFactorX=1,this.scrollFactorY=1,this.dirty=!0,this.rayStepRate=4,this._wrap=!1,this._mc={scrollX:0,scrollY:0,renderWidth:0,renderHeight:0,tileWidth:b.tileWidth,tileHeight:b.tileHeight,cw:b.tileWidth,ch:b.tileHeight,tilesets:[]},this._scrollX=0,this._scrollY=0,this._results=[],a.device.canvasBitBltShift||(this.renderSettings.copyCanvas=c.TilemapLayer.ensureSharedCopyCanvas()),this.fixedToCamera=!0},c.TilemapLayer.prototype=Object.create(c.Sprite.prototype),c.TilemapLayer.prototype.constructor=c.TilemapLayer,c.TilemapLayer.prototype.preUpdateCore=c.Component.Core.preUpdate,c.TilemapLayer.sharedCopyCanvas=null,c.TilemapLayer.ensureSharedCopyCanvas=function(){return this.sharedCopyCanvas||(this.sharedCopyCanvas=c.Canvas.create(2,2)),this.sharedCopyCanvas},c.TilemapLayer.prototype.preUpdate=function(){return this.preUpdateCore()},c.TilemapLayer.prototype.postUpdate=function(){this.fixedToCamera&&(this.position.x=(this.game.camera.view.x+this.cameraOffset.x)/this.game.camera.scale.x,this.position.y=(this.game.camera.view.y+this.cameraOffset.y)/this.game.camera.scale.y),this._scrollX=this.game.camera.view.x*this.scrollFactorX/this.scale.x,this._scrollY=this.game.camera.view.y*this.scrollFactorY/this.scale.y},c.TilemapLayer.prototype._renderCanvas=function(a){this.fixedToCamera&&(this.position.x=(this.game.camera.view.x+this.cameraOffset.x)/this.game.camera.scale.x,this.position.y=(this.game.camera.view.y+this.cameraOffset.y)/this.game.camera.scale.y),this._scrollX=this.game.camera.view.x*this.scrollFactorX/this.scale.x,this._scrollY=this.game.camera.view.y*this.scrollFactorY/this.scale.y,this.render(),PIXI.Sprite.prototype._renderCanvas.call(this,a)},c.TilemapLayer.prototype._renderWebGL=function(a){this.fixedToCamera&&(this.position.x=(this.game.camera.view.x+this.cameraOffset.x)/this.game.camera.scale.x,this.position.y=(this.game.camera.view.y+this.cameraOffset.y)/this.game.camera.scale.y),this._scrollX=this.game.camera.view.x*this.scrollFactorX/this.scale.x,this._scrollY=this.game.camera.view.y*this.scrollFactorY/this.scale.y,this.render(),PIXI.Sprite.prototype._renderWebGL.call(this,a)},c.TilemapLayer.prototype.destroy=function(){PIXI.CanvasPool.remove(this),c.Component.Destroy.prototype.destroy.call(this)},c.TilemapLayer.prototype.resize=function(a,b){this.canvas.width=a,this.canvas.height=b,this.texture.frame.resize(a,b),this.texture.width=a,this.texture.height=b,this.texture.crop.width=a,this.texture.crop.height=b,this.texture.baseTexture.width=a,this.texture.baseTexture.height=b,this.texture.baseTexture.dirty(),this.texture.requiresUpdate=!0,this.texture._updateUvs(),this.dirty=!0},c.TilemapLayer.prototype.resizeWorld=function(){this.game.world.setBounds(0,0,this.layer.widthInPixels*this.scale.x,this.layer.heightInPixels*this.scale.y)},c.TilemapLayer.prototype._fixX=function(a){return 1===this.scrollFactorX||0===this.scrollFactorX&&0===this.position.x?a:0===this.scrollFactorX&&0!==this.position.x?a-this.position.x:this._scrollX+(a-this._scrollX/this.scrollFactorX)},c.TilemapLayer.prototype._unfixX=function(a){return 1===this.scrollFactorX?a:this._scrollX/this.scrollFactorX+(a-this._scrollX)},c.TilemapLayer.prototype._fixY=function(a){return 1===this.scrollFactorY||0===this.scrollFactorY&&0===this.position.y?a:0===this.scrollFactorY&&0!==this.position.y?a-this.position.y:this._scrollY+(a-this._scrollY/this.scrollFactorY)},c.TilemapLayer.prototype._unfixY=function(a){return 1===this.scrollFactorY?a:this._scrollY/this.scrollFactorY+(a-this._scrollY)},c.TilemapLayer.prototype.getTileX=function(a){return Math.floor(this._fixX(a)/this._mc.tileWidth)},c.TilemapLayer.prototype.getTileY=function(a){return Math.floor(this._fixY(a)/this._mc.tileHeight)},c.TilemapLayer.prototype.getTileXY=function(a,b,c){return c.x=this.getTileX(a),c.y=this.getTileY(b),c},c.TilemapLayer.prototype.getRayCastTiles=function(a,b,c,d){b||(b=this.rayStepRate),void 0===c&&(c=!1),void 0===d&&(d=!1);var e=this.getTiles(a.x,a.y,a.width,a.height,c,d);if(0===e.length)return[];for(var f=a.coordinatesOnLine(b),g=[],h=0;hl;l++)for(var m=h;h+j>m;m++){var n=this.layer.data[l];n&&n[m]&&(g||n[m].isInteresting(e,f))&&this._results.push(n[m])}return this._results.slice()},c.TilemapLayer.prototype.resolveTileset=function(a){var b=this._mc.tilesets;if(2e3>a)for(;b.lengthb&&(g=-b,i=0),0>c&&(h=-c,j=0);var k=this.renderSettings.copyCanvas;if(k){(k.width=c&&(c=Math.max(0,c),e=Math.min(h-1,e)),f>=d&&(d=Math.max(0,d),f=Math.min(i-1,f)));var n,o,p,q,r,s,t=c*j-a,u=d*k-b,v=(c+(1<<20)*h)%h,w=(d+(1<<20)*i)%i;for(q=w,s=f-d,o=u;s>=0;q++,s--,o+=k){q>=i&&(q-=i);var x=this.layer.data[q];for(p=v,r=e-c,n=t;r>=0;p++,r--,n+=j){p>=h&&(p-=h);var y=x[p];if(y&&!(y.index<0)){var z=y.index,A=l[z];void 0===A&&(A=this.resolveTileset(z)),y.alpha===m||this.debug||(g.globalAlpha=y.alpha,m=y.alpha),A?y.rotation||y.flipped?(g.save(),g.translate(n+y.centerX,o+y.centerY),g.rotate(y.rotation),y.flipped&&g.scale(-1,1),A.draw(g,-y.centerX,-y.centerY,z),g.restore()):A.draw(g,n,o,z):this.debugSettings.missingImageFill&&(g.fillStyle=this.debugSettings.missingImageFill,g.fillRect(n,o,j,k)),y.debug&&this.debugSettings.debuggedTileOverfill&&(g.fillStyle=this.debugSettings.debuggedTileOverfill,g.fillRect(n,o,j,k))}}}},c.TilemapLayer.prototype.renderDeltaScroll=function(a,b){var c=this._mc.scrollX,d=this._mc.scrollY,e=this.canvas.width,f=this.canvas.height,g=this._mc.tileWidth,h=this._mc.tileHeight,i=0,j=-g,k=0,l=-h;if(0>a?(i=e+a,j=e-1):a>0&&(j=a),0>b?(k=f+b,l=f-1):b>0&&(l=b),this.shiftCanvas(this.context,a,b),i=Math.floor((i+c)/g),j=Math.floor((j+c)/g),k=Math.floor((k+d)/h),l=Math.floor((l+d)/h),j>=i){this.context.clearRect(i*g-c,0,(j-i+1)*g,f);var m=Math.floor((0+d)/h),n=Math.floor((f-1+d)/h);this.renderRegion(c,d,i,m,j,n)}if(l>=k){this.context.clearRect(0,k*h-d,e,(l-k+1)*h);var o=Math.floor((0+c)/g),p=Math.floor((e-1+c)/g);this.renderRegion(c,d,o,k,p,l)}},c.TilemapLayer.prototype.renderFull=function(){var a=this._mc.scrollX,b=this._mc.scrollY,c=this.canvas.width,d=this.canvas.height,e=this._mc.tileWidth,f=this._mc.tileHeight,g=Math.floor(a/e),h=Math.floor((c-1+a)/e),i=Math.floor(b/f),j=Math.floor((d-1+b)/f);this.context.clearRect(0,0,c,d),this.renderRegion(a,b,g,i,h,j)},c.TilemapLayer.prototype.render=function(){var a=!1;if(this.visible){(this.dirty||this.layer.dirty)&&(this.layer.dirty=!1,a=!0);var b=this.canvas.width,c=this.canvas.height,d=0|this._scrollX,e=0|this._scrollY,f=this._mc,g=f.scrollX-d,h=f.scrollY-e;if(a||0!==g||0!==h||f.renderWidth!==b||f.renderHeight!==c)return this.context.save(),f.scrollX=d,f.scrollY=e,f.renderWidth===b&&f.renderHeight===c||(f.renderWidth=b,f.renderHeight=c),this.debug&&(this.context.globalAlpha=this.debugSettings.debugAlpha,this.debugSettings.forceFullRedraw&&(a=!0)),!a&&this.renderSettings.enableScrollDelta&&Math.abs(g)+Math.abs(h)=0;d++,f--,b+=o){d>=m&&(d-=m);var x=this.layer.data[d];for(c=v,e=q-p,a=t;e>=0;c++,e--,a+=n){c>=l&&(c-=l);var y=x[c];!y||y.index<0||!y.collides||(this.debugSettings.collidingTileOverfill&&(i.fillStyle=this.debugSettings.collidingTileOverfill,i.fillRect(a,b,this._mc.cw,this._mc.ch)),this.debugSettings.facingEdgeStroke&&(i.beginPath(),y.faceTop&&(i.moveTo(a,b),i.lineTo(a+this._mc.cw,b)),y.faceBottom&&(i.moveTo(a,b+this._mc.ch),i.lineTo(a+this._mc.cw,b+this._mc.ch)),y.faceLeft&&(i.moveTo(a,b),i.lineTo(a,b+this._mc.ch)),y.faceRight&&(i.moveTo(a+this._mc.cw,b),i.lineTo(a+this._mc.cw,b+this._mc.ch)),i.stroke()))}}},Object.defineProperty(c.TilemapLayer.prototype,"wrap",{get:function(){return this._wrap},set:function(a){this._wrap=a,this.dirty=!0}}),Object.defineProperty(c.TilemapLayer.prototype,"scrollX",{get:function(){return this._scrollX},set:function(a){this._scrollX=a}}),Object.defineProperty(c.TilemapLayer.prototype,"scrollY",{get:function(){return this._scrollY},set:function(a){this._scrollY=a}}),Object.defineProperty(c.TilemapLayer.prototype,"collisionWidth",{get:function(){return this._mc.cw},set:function(a){this._mc.cw=0|a,this.dirty=!0}}),Object.defineProperty(c.TilemapLayer.prototype,"collisionHeight",{get:function(){return this._mc.ch},set:function(a){this._mc.ch=0|a,this.dirty=!0}}),c.TilemapParser={INSERT_NULL:!1,FLIPPED_HORIZONTALLY_FLAG:2147483648,FLIPPED_VERTICALLY_FLAG:1073741824,FLIPPED_DIAGONALLY_FLAG:536870912,parse:function(a,b,d,e,f,g){if(void 0===d&&(d=32),void 0===e&&(e=32),void 0===f&&(f=10),void 0===g&&(g=10),void 0===b)return this.getEmptyData();if(null===b)return this.getEmptyData(d,e,f,g);var h=a.cache.getTilemapData(b);if(h){if(h.format===c.Tilemap.CSV)return this.parseCSV(b,h.data,d,e);if(!h.format||h.format===c.Tilemap.TILED_JSON)return this.parseTiledJSON(h.data)}else console.warn("Phaser.TilemapParser.parse - No map data found for key "+b)},parseCSV:function(a,b,d,e){var f=this.getEmptyData();b=b.trim();for(var g=[],h=b.split("\n"),i=h.length,j=0,k=0;kk;k+=4)j[k/4]=(h.charCodeAt(k)|h.charCodeAt(k+1)<<8|h.charCodeAt(k+2)<<16|h.charCodeAt(k+3)<<24)>>>0;g.data=j,delete g.encoding}else if(g.compression){console.warn("TilemapParser.parseTiledJSON - Layer compression is unsupported, skipping layer '"+g.name+"'");continue}var l={name:g.name,x:g.x,y:g.y,width:g.width,height:g.height,widthInPixels:g.width*a.tilewidth,heightInPixels:g.height*a.tileheight,alpha:g.opacity,visible:g.visible,properties:{},indexes:[],callbacks:[],bodies:[]};g.properties&&(l.properties=g.properties);for(var m,n,o,p,q=0,r=[],s=[],t=0,i=g.data.length;i>t;t++){if(m=0,n=!1,p=g.data[t],p>536870912)switch(o=0,p>2147483648&&(p-=2147483648,o+=4),p>1073741824&&(p-=1073741824,o+=2),p>536870912&&(p-=536870912,o+=1),o){case 5:m=Math.PI/2;break;case 6:m=Math.PI;break;case 3:m=3*Math.PI/2;break;case 4:m=0,n=!0;break;case 7:m=Math.PI/2,n=!0;break;case 2:m=Math.PI,n=!0;break;case 1:m=3*Math.PI/2,n=!0}p>0?(r.push(new c.Tile(l,p,q,s.length,a.tilewidth,a.tileheight)),r[r.length-1].rotation=m,r[r.length-1].flipped=n):c.TilemapParser.INSERT_NULL?r.push(null):r.push(new c.Tile(l,-1,q,s.length,a.tilewidth,a.tileheight)),q++,q===g.width&&(s.push(r),q=0,r=[])}l.data=s,e.push(l)}d.layers=e;for(var u=[],f=0;fG;G++)if(F.objects[G].gid){var H=this,I={gid:F.objects[G].gid,name:F.objects[G].name,type:F.objects[G].hasOwnProperty("type")?F.objects[G].type:"",x:F.objects[G].x,y:F.objects[G].y,width:F.objects[G].width,height:F.objects[G].height,visible:F.objects[G].visible,properties:F.objects[G].properties,horizontallyFlipped:F.objects[G].gid&H.FLIPPED_HORIZONTALLY_FLAG,verticallyFlipped:F.objects[G].gid&H.FLIPPED_VERTICALLY_FLAG,diagonallyFlipped:F.objects[G].gid&H.FLIPPED_DIAGONALLY_FLAG};F.objects[G].rotation&&(I.rotation=F.objects[G].rotation),D[F.name].push(I)}else if(F.objects[G].polyline){var I={name:F.objects[G].name,type:F.objects[G].type,x:F.objects[G].x,y:F.objects[G].y,width:F.objects[G].width,height:F.objects[G].height,visible:F.objects[G].visible,properties:F.objects[G].properties};F.objects[G].rotation&&(I.rotation=F.objects[G].rotation),I.polyline=[];for(var J=0;J=c)&&(c=32),(void 0===d||0>=d)&&(d=32),void 0===e&&(e=0),void 0===f&&(f=0),this.name=a,this.firstgid=0|b,this.tileWidth=0|c,this.tileHeight=0|d,this.tileMargin=0|e,this.tileSpacing=0|f,this.properties=g||{},this.image=null,this.rows=0,this.columns=0,this.total=0,this.drawCoords=[]},c.Tileset.prototype={draw:function(a,b,c,d){var e=d-this.firstgid<<1;e>=0&&e+1=this.firstgid&&a=this._timer)if(this._timer=this.game.time.time+this.frequency*this.game.time.slowMotion,0!==this._flowTotal)if(this._flowQuantity>0){for(var a=0;a=this._flowTotal)){this.on=!1;break}}else this.emitParticle()&&(this._counter++,-1!==this._flowTotal&&this._counter>=this._flowTotal&&(this.on=!1));else this.emitParticle()&&(this._counter++,this._quantity>0&&this._counter>=this._quantity&&(this.on=!1));for(var a=this.children.length;a--;)this.children[a].exists&&this.children[a].update()},c.Particles.Arcade.Emitter.prototype.makeParticles=function(a,b,c,d,e){void 0===b&&(b=0),void 0===c&&(c=this.maxParticles),void 0===d&&(d=!1),void 0===e&&(e=!1);var f,g=0,h=a,i=b;for(this._frames=b,c>this.maxParticles&&(this.maxParticles=c);c>g;)Array.isArray(a)&&(h=this.game.rnd.pick(a)),Array.isArray(b)&&(i=this.game.rnd.pick(b)),f=new this.particleClass(this.game,0,0,h,i),this.game.physics.arcade.enable(f,!1),d?(f.body.checkCollision.any=!0,f.body.checkCollision.none=!1):f.body.checkCollision.none=!0,f.body.collideWorldBounds=e,f.body.skipQuadTree=!0,f.exists=!1,f.visible=!1,f.anchor.copyFrom(this.particleAnchor),this.add(f),g++;return this},c.Particles.Arcade.Emitter.prototype.kill=function(){return this.on=!1,this.alive=!1,this.exists=!1,this},c.Particles.Arcade.Emitter.prototype.revive=function(){return this.alive=!0,this.exists=!0,this},c.Particles.Arcade.Emitter.prototype.explode=function(a,b){return this._flowTotal=0,this.start(!0,a,0,b,!1),this},c.Particles.Arcade.Emitter.prototype.flow=function(a,b,c,d,e){return void 0!==c&&0!==c||(c=1),void 0===d&&(d=-1),void 0===e&&(e=!0),c>this.maxParticles&&(c=this.maxParticles),this._counter=0,this._flowQuantity=c,this._flowTotal=d,e?(this.start(!0,a,b,c),this._counter+=c,this.on=!0,this._timer=this.game.time.time+b*this.game.time.slowMotion):this.start(!1,a,b,c),this},c.Particles.Arcade.Emitter.prototype.start=function(a,b,c,d,e){if(void 0===a&&(a=!0),void 0===b&&(b=0),void 0!==c&&null!==c||(c=250),void 0===d&&(d=0),void 0===e&&(e=!1),d>this.maxParticles&&(d=this.maxParticles),this.revive(),this.visible=!0,this.lifespan=b,this.frequency=c,a||e)for(var f=0;d>f;f++)this.emitParticle();else this.on=!0,this._quantity=d,this._counter=0,this._timer=this.game.time.time+c*this.game.time.slowMotion;return this},c.Particles.Arcade.Emitter.prototype.emitParticle=function(a,b,c,d){void 0===a&&(a=null),void 0===b&&(b=null);var e=this.getFirstExists(!1);if(null===e)return!1;var f=this.game.rnd;void 0!==c&&void 0!==d?e.loadTexture(c,d):void 0!==c&&e.loadTexture(c);var g=this.emitX,h=this.emitY;null!==a?g=a:this.width>1&&(g=f.between(this.left,this.right)),null!==b?h=b:this.height>1&&(h=f.between(this.top,this.bottom)),e.reset(g,h),e.angle=0,e.lifespan=this.lifespan,this.particleBringToTop?this.bringToTop(e):this.particleSendToBack&&this.sendToBack(e),this.autoScale?e.setScaleData(this.scaleData):1!==this.minParticleScale||1!==this.maxParticleScale?e.scale.set(f.realInRange(this.minParticleScale,this.maxParticleScale)):this._minParticleScale.x===this._maxParticleScale.x&&this._minParticleScale.y===this._maxParticleScale.y||e.scale.set(f.realInRange(this._minParticleScale.x,this._maxParticleScale.x),f.realInRange(this._minParticleScale.y,this._maxParticleScale.y)),void 0===d&&(Array.isArray(this._frames)?e.frame=this.game.rnd.pick(this._frames):e.frame=this._frames),this.autoAlpha?e.setAlphaData(this.alphaData):e.alpha=f.realInRange(this.minParticleAlpha,this.maxParticleAlpha),e.blendMode=this.blendMode;var i=e.body;return i.updateBounds(),i.bounce.copyFrom(this.bounce),i.drag.copyFrom(this.particleDrag),i.velocity.x=f.between(this.minParticleSpeed.x,this.maxParticleSpeed.x),i.velocity.y=f.between(this.minParticleSpeed.y,this.maxParticleSpeed.y),i.angularVelocity=f.between(this.minRotation,this.maxRotation),i.gravity.y=this.gravity,i.angularDrag=this.angularDrag,e.onEmit(),!0},c.Particles.Arcade.Emitter.prototype.destroy=function(){this.game.particles.remove(this),c.Group.prototype.destroy.call(this,!0,!1)},c.Particles.Arcade.Emitter.prototype.setSize=function(a,b){return this.area.width=a,this.area.height=b,this},c.Particles.Arcade.Emitter.prototype.setXSpeed=function(a,b){return a=a||0,b=b||0,this.minParticleSpeed.x=a,this.maxParticleSpeed.x=b,this},c.Particles.Arcade.Emitter.prototype.setYSpeed=function(a,b){return a=a||0,b=b||0,this.minParticleSpeed.y=a,this.maxParticleSpeed.y=b,this},c.Particles.Arcade.Emitter.prototype.setRotation=function(a,b){return a=a||0,b=b||0,this.minRotation=a,this.maxRotation=b,this},c.Particles.Arcade.Emitter.prototype.setAlpha=function(a,b,d,e,f){if(void 0===a&&(a=1),void 0===b&&(b=1),void 0===d&&(d=0),void 0===e&&(e=c.Easing.Linear.None),void 0===f&&(f=!1),this.minParticleAlpha=a,this.maxParticleAlpha=b,this.autoAlpha=!1,d>0&&a!==b){var g={v:a},h=this.game.make.tween(g).to({v:b},d,e);h.yoyo(f),this.alphaData=h.generateData(60),this.alphaData.reverse(),this.autoAlpha=!0}return this},c.Particles.Arcade.Emitter.prototype.setScale=function(a,b,d,e,f,g,h){if(void 0===a&&(a=1),void 0===b&&(b=1),void 0===d&&(d=1),void 0===e&&(e=1),void 0===f&&(f=0),void 0===g&&(g=c.Easing.Linear.None),void 0===h&&(h=!1),this.minParticleScale=1,this.maxParticleScale=1,this._minParticleScale.set(a,d),this._maxParticleScale.set(b,e),this.autoScale=!1,f>0&&(a!==b||d!==e)){var i={x:a,y:d},j=this.game.make.tween(i).to({x:b,y:e},f,g);j.yoyo(h),this.scaleData=j.generateData(60),this.scaleData.reverse(),this.autoScale=!0}return this},c.Particles.Arcade.Emitter.prototype.at=function(a){return a.center?(this.emitX=a.center.x,this.emitY=a.center.y):(this.emitX=a.world.x+a.anchor.x*a.width,this.emitY=a.world.y+a.anchor.y*a.height),this},Object.defineProperty(c.Particles.Arcade.Emitter.prototype,"width",{get:function(){return this.area.width},set:function(a){this.area.width=a}}),Object.defineProperty(c.Particles.Arcade.Emitter.prototype,"height",{get:function(){return this.area.height},set:function(a){this.area.height=a}}),Object.defineProperty(c.Particles.Arcade.Emitter.prototype,"x",{get:function(){return this.emitX},set:function(a){this.emitX=a}}),Object.defineProperty(c.Particles.Arcade.Emitter.prototype,"y",{get:function(){return this.emitY},set:function(a){this.emitY=a}}),Object.defineProperty(c.Particles.Arcade.Emitter.prototype,"left",{get:function(){return Math.floor(this.x-this.area.width/2)}}),Object.defineProperty(c.Particles.Arcade.Emitter.prototype,"right",{get:function(){return Math.floor(this.x+this.area.width/2)}}),Object.defineProperty(c.Particles.Arcade.Emitter.prototype,"top",{get:function(){return Math.floor(this.y-this.area.height/2)}}),Object.defineProperty(c.Particles.Arcade.Emitter.prototype,"bottom",{get:function(){return Math.floor(this.y+this.area.height/2)}}),c.Weapon=function(a,b){c.Plugin.call(this,a,b),this.bullets=null,this.autoExpandBulletsGroup=!1,this.autofire=!1,this.shots=0,this.fireLimit=0,this.fireRate=100,this.fireRateVariance=0,this.fireFrom=new c.Rectangle(0,0,1,1),this.fireAngle=c.ANGLE_UP,this.bulletInheritSpriteSpeed=!1,this.bulletAnimation="",this.bulletFrameRandom=!1,this.bulletFrameCycle=!1,this.bulletWorldWrap=!1,this.bulletWorldWrapPadding=0,this.bulletAngleOffset=0,this.bulletAngleVariance=0,this.bulletSpeed=200,this.bulletSpeedVariance=0,this.bulletLifespan=0,this.bulletKillDistance=0,this.bulletGravity=new c.Point(0,0),this.bulletRotateToVelocity=!1,this.bulletKey="",this.bulletFrame="",this._bulletClass=c.Bullet,this._bulletCollideWorldBounds=!1,this._bulletKillType=c.Weapon.KILL_WORLD_BOUNDS,this._data={customBody:!1,width:0,height:0,offsetX:0,offsetY:0},this.bounds=new c.Rectangle,this.bulletBounds=a.world.bounds,this.bulletFrames=[],this.bulletFrameIndex=0,this.anims={},this.onFire=new c.Signal,this.onKill=new c.Signal,this.onFireLimit=new c.Signal,this.trackedSprite=null,this.trackedPointer=null,this.trackRotation=!1,this.trackOffset=new c.Point,this._nextFire=0},c.Weapon.prototype=Object.create(c.Plugin.prototype),c.Weapon.prototype.constructor=c.Weapon,c.Weapon.KILL_NEVER=0,c.Weapon.KILL_LIFESPAN=1,c.Weapon.KILL_DISTANCE=2,c.Weapon.KILL_WEAPON_BOUNDS=3,c.Weapon.KILL_CAMERA_BOUNDS=4,c.Weapon.KILL_WORLD_BOUNDS=5,c.Weapon.KILL_STATIC_BOUNDS=6,c.Weapon.prototype.createBullets=function(a,b,d,e){return void 0===a&&(a=1),void 0===e&&(e=this.game.world),this.bullets||(this.bullets=this.game.add.physicsGroup(c.Physics.ARCADE,e),this.bullets.classType=this._bulletClass),0!==a&&(-1===a&&(this.autoExpandBulletsGroup=!0,a=1),this.bullets.createMultiple(a,b,d),this.bullets.setAll("data.bulletManager",this),this.bulletKey=b,this.bulletFrame=d),this},c.Weapon.prototype.forEach=function(a,b){return this.bullets.forEachExists(a,b,arguments),this},c.Weapon.prototype.pauseAll=function(){return this.bullets.setAll("body.enable",!1),this},c.Weapon.prototype.resumeAll=function(){return this.bullets.setAll("body.enable",!0),this},c.Weapon.prototype.killAll=function(){return this.bullets.callAllExists("kill",!0),this.bullets.setAll("body.enable",!0),this},c.Weapon.prototype.resetShots=function(a){return this.shots=0,void 0!==a&&(this.fireLimit=a),this},c.Weapon.prototype.destroy=function(){this.parent.remove(this,!1),this.bullets.destroy(),this.game=null,this.parent=null,this.active=!1,this.visible=!1},c.Weapon.prototype.update=function(){this._bulletKillType===c.Weapon.KILL_WEAPON_BOUNDS&&(this.trackedSprite?(this.trackedSprite.updateTransform(),this.bounds.centerOn(this.trackedSprite.worldPosition.x,this.trackedSprite.worldPosition.y)):this.trackedPointer&&this.bounds.centerOn(this.trackedPointer.worldX,this.trackedPointer.worldY)),this.autofire&&this.game.time.now0&&this.shots===this.fireLimit)return!1;var e=this.bulletSpeed;0!==this.bulletSpeedVariance&&(e+=c.Math.between(-this.bulletSpeedVariance,this.bulletSpeedVariance)),a?this.fireFrom.width>1?this.fireFrom.centerOn(a.x,a.y):(this.fireFrom.x=a.x,this.fireFrom.y=a.y):this.trackedSprite?(this.fireFrom.width>1?this.fireFrom.centerOn(this.trackedSprite.world.x+this.trackOffset.x,this.trackedSprite.world.y+this.trackOffset.y):(this.fireFrom.x=this.trackedSprite.world.x+this.trackOffset.x,this.fireFrom.y=this.trackedSprite.world.y+this.trackOffset.y),this.bulletInheritSpriteSpeed&&(e+=this.trackedSprite.body.speed)):this.trackedPointer&&(this.fireFrom.width>1?this.fireFrom.centerOn(this.trackedPointer.world.x+this.trackOffset.x,this.trackedPointer.world.y+this.trackOffset.y):(this.fireFrom.x=this.trackedPointer.world.x+this.trackOffset.x,this.fireFrom.y=this.trackedPointer.world.y+this.trackOffset.y));var f=this.fireFrom.width>1?this.fireFrom.randomX:this.fireFrom.x,g=this.fireFrom.height>1?this.fireFrom.randomY:this.fireFrom.y,h=this.trackRotation?this.trackedSprite.angle:this.fireAngle;void 0!==b&&void 0!==d&&(h=this.game.math.radToDeg(Math.atan2(d-g,b-f))),0!==this.bulletAngleVariance&&(h+=c.Math.between(-this.bulletAngleVariance,this.bulletAngleVariance));var i=0,j=0;0===h||180===h?i=Math.cos(this.game.math.degToRad(h))*e:90===h||270===h?j=Math.sin(this.game.math.degToRad(h))*e:(i=Math.cos(this.game.math.degToRad(h))*e,j=Math.sin(this.game.math.degToRad(h))*e);var k=null;if(this.autoExpandBulletsGroup?(k=this.bullets.getFirstExists(!1,!0,f,g,this.bulletKey,this.bulletFrame),k.data.bulletManager=this):k=this.bullets.getFirstExists(!1),k){if(k.reset(f,g),k.data.fromX=f,k.data.fromY=g,k.data.killType=this.bulletKillType,k.data.killDistance=this.bulletKillDistance,k.data.rotateToVelocity=this.bulletRotateToVelocity,this.bulletKillType===c.Weapon.KILL_LIFESPAN&&(k.lifespan=this.bulletLifespan),k.angle=h+this.bulletAngleOffset,""!==this.bulletAnimation){if(null===k.animations.getAnimation(this.bulletAnimation)){var l=this.anims[this.bulletAnimation];k.animations.add(l.name,l.frames,l.frameRate,l.loop,l.useNumericIndex)}k.animations.play(this.bulletAnimation)}else this.bulletFrameCycle?(k.frame=this.bulletFrames[this.bulletFrameIndex],this.bulletFrameIndex++,this.bulletFrameIndex>=this.bulletFrames.length&&(this.bulletFrameIndex=0)):this.bulletFrameRandom&&(k.frame=this.bulletFrames[Math.floor(Math.random()*this.bulletFrames.length)]);k.data.bodyDirty&&(this._data.customBody&&k.body.setSize(this._data.width,this._data.height,this._data.offsetX,this._data.offsetY),k.body.collideWorldBounds=this.bulletCollideWorldBounds,k.data.bodyDirty=!1),k.body.velocity.set(i,j),k.body.gravity.set(this.bulletGravity.x,this.bulletGravity.y),this._nextFire=this.game.time.now+this.fireRate,this.shots++,this.onFire.dispatch(k,this,e),this.fireLimit>0&&this.shots===this.fireLimit&&this.onFireLimit.dispatch(this,this.fireLimit)}},c.Weapon.prototype.fireAtPointer=function(a){return void 0===a&&(a=this.game.input.activePointer),this.fire(null,a.worldX,a.worldY)},c.Weapon.prototype.fireAtSprite=function(a){return this.fire(null,a.world.x,a.world.y)},c.Weapon.prototype.fireAtXY=function(a,b){return this.fire(null,a,b)},c.Weapon.prototype.setBulletBodyOffset=function(a,b,c,d){return void 0===c&&(c=0),void 0===d&&(d=0),this._data.customBody=!0,this._data.width=a,this._data.height=b,this._data.offsetX=c,this._data.offsetY=d,this.bullets.callAll("body.setSize","body",a,b,c,d),this.bullets.setAll("data.bodyDirty",!1),this},c.Weapon.prototype.setBulletFrames=function(a,b,d,e){return void 0===d&&(d=!0),void 0===e&&(e=!1),this.bulletFrames=c.ArrayUtils.numberArray(a,b),this.bulletFrameIndex=0,this.bulletFrameCycle=d,this.bulletFrameRandom=e,this},c.Weapon.prototype.addBulletAnimation=function(a,b,c,d,e){return this.anims[a]={name:a,frames:b,frameRate:c,loop:d,useNumericIndex:e},this.bullets.callAll("animations.add","animations",a,b,c,d,e),this.bulletAnimation=a,this},c.Weapon.prototype.debug=function(a,b,c){void 0===a&&(a=16),void 0===b&&(b=32),void 0===c&&(c=!1),this.game.debug.text("Weapon Plugin",a,b),this.game.debug.text("Bullets Alive: "+this.bullets.total+" - Total: "+this.bullets.length,a,b+24),c&&this.bullets.forEachExists(this.game.debug.body,this.game.debug,"rgba(255, 0, 255, 0.8)")},Object.defineProperty(c.Weapon.prototype,"bulletClass",{get:function(){return this._bulletClass},set:function(a){this._bulletClass=a,this.bullets.classType=this._bulletClass}}),Object.defineProperty(c.Weapon.prototype,"bulletKillType",{get:function(){return this._bulletKillType},set:function(a){switch(a){case c.Weapon.KILL_STATIC_BOUNDS:case c.Weapon.KILL_WEAPON_BOUNDS:this.bulletBounds=this.bounds;break;case c.Weapon.KILL_CAMERA_BOUNDS:this.bulletBounds=this.game.camera.view;break;case c.Weapon.KILL_WORLD_BOUNDS:this.bulletBounds=this.game.world.bounds}this._bulletKillType=a}}),Object.defineProperty(c.Weapon.prototype,"bulletCollideWorldBounds",{get:function(){return this._bulletCollideWorldBounds},set:function(a){this._bulletCollideWorldBounds=a,this.bullets.setAll("body.collideWorldBounds",a),this.bullets.setAll("data.bodyDirty",!1)}}),Object.defineProperty(c.Weapon.prototype,"x",{get:function(){return this.fireFrom.x},set:function(a){this.fireFrom.x=a}}),Object.defineProperty(c.Weapon.prototype,"y",{get:function(){return this.fireFrom.y},set:function(a){this.fireFrom.y=a}}),c.Bullet=function(a,b,d,e,f){c.Sprite.call(this,a,b,d,e,f),this.anchor.set(.5),this.data={bulletManager:null,fromX:0,fromY:0,bodyDirty:!0,rotateToVelocity:!1,killType:0,killDistance:0}},c.Bullet.prototype=Object.create(c.Sprite.prototype),c.Bullet.prototype.constructor=c.Bullet,c.Bullet.prototype.kill=function(){return this.alive=!1,this.exists=!1,this.visible=!1,this.data.bulletManager.onKill.dispatch(this),this},c.Bullet.prototype.update=function(){this.exists&&(this.data.killType>c.Weapon.KILL_LIFESPAN&&(this.data.killType===c.Weapon.KILL_DISTANCE?this.game.physics.arcade.distanceToXY(this,this.data.fromX,this.data.fromY,!0)>this.data.killDistance&&this.kill():this.data.bulletManager.bulletBounds.intersects(this)||this.kill()),this.data.rotateToVelocity&&(this.rotation=Math.atan2(this.body.velocity.y,this.body.velocity.x)),this.data.bulletManager.bulletWorldWrap&&this.game.world.wrap(this,this.data.bulletManager.bulletWorldWrapPadding))},c.Video=function(a,b,d){if(void 0===b&&(b=null),void 0===d&&(d=null),this.game=a,this.key=b,this.width=0,this.height=0,this.type=c.VIDEO,this.disableTextureUpload=!1,this.touchLocked=!1,this.onPlay=new c.Signal,this.onChangeSource=new c.Signal,this.onComplete=new c.Signal,this.onAccess=new c.Signal,this.onError=new c.Signal,this.onTimeout=new c.Signal,this.timeout=15e3,this._timeOutID=null,this.video=null,this.videoStream=null,this.isStreaming=!1,this.retryLimit=20,this.retry=0,this.retryInterval=500,this._retryID=null,this._codeMuted=!1,this._muted=!1,this._codePaused=!1,this._paused=!1,this._pending=!1,this._autoplay=!1,this._endCallback=null,this._playCallback=null,b&&this.game.cache.checkVideoKey(b)){var e=this.game.cache.getVideo(b);e.isBlob?this.createVideoFromBlob(e.data):this.video=e.data,this.width=this.video.videoWidth,this.height=this.video.videoHeight}else d&&this.createVideoFromURL(d,!1);this.video&&!d?(this.baseTexture=new PIXI.BaseTexture(this.video),this.baseTexture.forceLoaded(this.width,this.height)):(this.baseTexture=new PIXI.BaseTexture(c.Cache.DEFAULT.baseTexture.source),this.baseTexture.forceLoaded(this.width,this.height)),this.texture=new PIXI.Texture(this.baseTexture),this.textureFrame=new c.Frame(0,0,0,this.width,this.height,"video"),this.texture.setFrame(this.textureFrame),this.texture.valid=!1,null!==b&&this.video&&(this.texture.valid=this.video.canplay),this.snapshot=null,c.BitmapData&&(this.snapshot=new c.BitmapData(this.game,"",this.width,this.height)),!this.game.device.cocoonJS&&(this.game.device.iOS||this.game.device.android)||window.PhaserGlobal&&window.PhaserGlobal.fakeiOSTouchLock?this.setTouchLock():e&&(e.locked=!1)},c.Video.prototype={connectToMediaStream:function(a,b){return a&&b&&(this.video=a,this.videoStream=b,this.isStreaming=!0,this.baseTexture.source=this.video,this.updateTexture(null,this.video.videoWidth,this.video.videoHeight),this.onAccess.dispatch(this)),this},startMediaStream:function(a,b,c){if(void 0===a&&(a=!1),void 0===b&&(b=null),void 0===c&&(c=null),!this.game.device.getUserMedia)return this.onError.dispatch(this,"No getUserMedia"),!1;null!==this.videoStream&&(this.videoStream.active?this.videoStream.active=!1:this.videoStream.stop()),this.removeVideoElement(),this.video=document.createElement("video"),this.video.setAttribute("autoplay","autoplay"),null!==b&&(this.video.width=b),null!==c&&(this.video.height=c),this._timeOutID=window.setTimeout(this.getUserMediaTimeout.bind(this),this.timeout);try{navigator.getUserMedia({audio:a,video:!0},this.getUserMediaSuccess.bind(this),this.getUserMediaError.bind(this))}catch(d){this.getUserMediaError(d)}return this},getUserMediaTimeout:function(){clearTimeout(this._timeOutID),this.onTimeout.dispatch(this)},getUserMediaError:function(a){clearTimeout(this._timeOutID),this.onError.dispatch(this,a)},getUserMediaSuccess:function(a){clearTimeout(this._timeOutID),this.videoStream=a,void 0!==this.video.mozSrcObject?this.video.mozSrcObject=a:this.video.src=window.URL&&window.URL.createObjectURL(a)||a;var b=this;this.video.onloadeddata=function(){function a(){if(c>0)if(b.video.videoWidth>0){var d=b.video.videoWidth,e=b.video.videoHeight;isNaN(b.video.videoHeight)&&(e=d/(4/3)),b.video.play(),b.isStreaming=!0,b.baseTexture.source=b.video,b.updateTexture(null,d,e),b.onAccess.dispatch(b)}else window.setTimeout(a,500);else console.warn("Unable to connect to video stream. Webcam error?");c--}var c=10;a()}},createVideoFromBlob:function(a){var b=this;return this.video=document.createElement("video"),this.video.controls=!1,this.video.setAttribute("autoplay","autoplay"),this.video.addEventListener("loadeddata",function(a){b.updateTexture(a)},!0),this.video.src=window.URL.createObjectURL(a),this.video.canplay=!0,this},createVideoFromURL:function(a,b){return void 0===b&&(b=!1),this.texture&&(this.texture.valid=!1),this.video=document.createElement("video"),this.video.controls=!1,b&&this.video.setAttribute("autoplay","autoplay"),this.video.src=a,this.video.canplay=!0,this.video.load(),this.retry=this.retryLimit,this._retryID=window.setTimeout(this.checkVideoProgress.bind(this),this.retryInterval),this.key=a,this},updateTexture:function(a,b,c){var d=!1;void 0!==b&&null!==b||(b=this.video.videoWidth,d=!0),void 0!==c&&null!==c||(c=this.video.videoHeight),this.width=b,this.height=c,this.baseTexture.source!==this.video&&(this.baseTexture.source=this.video),this.baseTexture.forceLoaded(b,c),this.texture.frame.resize(b,c),this.texture.width=b,this.texture.height=c,this.texture.valid=!0,this.snapshot&&this.snapshot.resize(b,c),d&&null!==this.key&&(this.onChangeSource.dispatch(this,b,c),this._autoplay&&(this.video.play(),this.onPlay.dispatch(this,this.loop,this.playbackRate)))},complete:function(){this.onComplete.dispatch(this)},play:function(a,b){return void 0===a&&(a=!1),void 0===b&&(b=1),this.game.sound.onMute&&(this.game.sound.onMute.add(this.setMute,this),this.game.sound.onUnMute.add(this.unsetMute,this),this.game.sound.mute&&this.setMute()),this.game.onPause.add(this.setPause,this),this.game.onResume.add(this.setResume,this),this._endCallback=this.complete.bind(this),this.video.addEventListener("ended",this._endCallback,!0),this.video.addEventListener("webkitendfullscreen",this._endCallback,!0),a?this.video.loop="loop":this.video.loop="",this.video.playbackRate=b,this.touchLocked?this._pending=!0:(this._pending=!1,null!==this.key&&(4!==this.video.readyState?(this.retry=this.retryLimit,this._retryID=window.setTimeout(this.checkVideoProgress.bind(this),this.retryInterval)):(this._playCallback=this.playHandler.bind(this),this.video.addEventListener("playing",this._playCallback,!0))),this.video.play(),this.onPlay.dispatch(this,a,b)),this},playHandler:function(){this.video.removeEventListener("playing",this._playCallback,!0),this.updateTexture()},stop:function(){return this.game.sound.onMute&&(this.game.sound.onMute.remove(this.setMute,this),this.game.sound.onUnMute.remove(this.unsetMute,this)),this.game.onPause.remove(this.setPause,this),this.game.onResume.remove(this.setResume,this),this.isStreaming?(this.video.mozSrcObject?(this.video.mozSrcObject.stop(),this.video.src=null):(this.video.src="",this.videoStream.active?this.videoStream.active=!1:this.videoStream.getTracks?this.videoStream.getTracks().forEach(function(a){ +a.stop()}):this.videoStream.stop()),this.videoStream=null,this.isStreaming=!1):(this.video.removeEventListener("ended",this._endCallback,!0),this.video.removeEventListener("webkitendfullscreen",this._endCallback,!0),this.video.removeEventListener("playing",this._playCallback,!0),this.touchLocked?this._pending=!1:this.video.pause()),this},add:function(a){if(Array.isArray(a))for(var b=0;b0?this._retryID=window.setTimeout(this.checkVideoProgress.bind(this),this.retryInterval):console.warn("Phaser.Video: Unable to start downloading video in time",this.isStreaming))},setTouchLock:function(){this.game.input.touch.addTouchLockCallback(this.unlock,this),this.touchLocked=!0},unlock:function(){if(this.touchLocked=!1,this.video.play(),this.onPlay.dispatch(this,this.loop,this.playbackRate),this.key){var a=this.game.cache.getVideo(this.key);a&&!a.isBlob&&(a.locked=!1)}return!0},grab:function(a,b,c){return void 0===a&&(a=!1),void 0===b&&(b=1),void 0===c&&(c=null),null===this.snapshot?void console.warn("Video.grab cannot run because Phaser.BitmapData is unavailable"):(a&&this.snapshot.cls(),this.snapshot.copy(this.video,0,0,this.width,this.height,0,0,this.width,this.height,0,0,0,1,1,b,c),this.snapshot)},removeVideoElement:function(){if(this.video){for(this.video.parentNode&&this.video.parentNode.removeChild(this.video);this.video.hasChildNodes();)this.video.removeChild(this.video.firstChild);this.video.removeAttribute("autoplay"),this.video.removeAttribute("src"),this.video=null}},destroy:function(){this.stop(),this.removeVideoElement(),this.touchLocked&&this.game.input.touch.removeTouchLockCallback(this.unlock,this),this._retryID&&window.clearTimeout(this._retryID)}},Object.defineProperty(c.Video.prototype,"currentTime",{get:function(){return this.video?this.video.currentTime:0},set:function(a){this.video.currentTime=a}}),Object.defineProperty(c.Video.prototype,"duration",{get:function(){return this.video?this.video.duration:0}}),Object.defineProperty(c.Video.prototype,"progress",{get:function(){return this.video?this.video.currentTime/this.video.duration:0}}),Object.defineProperty(c.Video.prototype,"mute",{get:function(){return this._muted},set:function(a){if(a=a||null){if(this._muted)return;this._codeMuted=!0,this.setMute()}else{if(!this._muted)return;this._codeMuted=!1,this.unsetMute()}}}),Object.defineProperty(c.Video.prototype,"paused",{get:function(){return this._paused},set:function(a){if(a=a||null,!this.touchLocked)if(a){if(this._paused)return;this._codePaused=!0,this.setPause()}else{if(!this._paused)return;this._codePaused=!1,this.setResume()}}}),Object.defineProperty(c.Video.prototype,"volume",{get:function(){return this.video?this.video.volume:1},set:function(a){0>a?a=0:a>1&&(a=1),this.video&&(this.video.volume=a)}}),Object.defineProperty(c.Video.prototype,"playbackRate",{get:function(){return this.video?this.video.playbackRate:1},set:function(a){this.video&&(this.video.playbackRate=a)}}),Object.defineProperty(c.Video.prototype,"loop",{get:function(){return this.video?this.video.loop:!1},set:function(a){a&&this.video?this.video.loop="loop":this.video&&(this.video.loop="")}}),Object.defineProperty(c.Video.prototype,"playing",{get:function(){return!(this.video.paused&&this.video.ended)}}),c.Video.prototype.constructor=c.Video,void 0===PIXI.blendModes&&(PIXI.blendModes=c.blendModes),void 0===PIXI.scaleModes&&(PIXI.scaleModes=c.scaleModes),void 0===PIXI.Texture.emptyTexture&&(PIXI.Texture.emptyTexture=new PIXI.Texture(new PIXI.BaseTexture)),void 0===PIXI.DisplayObject._tempMatrix&&(PIXI.DisplayObject._tempMatrix=new PIXI.Matrix),void 0===PIXI.RenderTexture.tempMatrix&&(PIXI.RenderTexture.tempMatrix=new PIXI.Matrix),PIXI.Graphics&&void 0===PIXI.Graphics.POLY&&(PIXI.Graphics.POLY=c.POLYGON,PIXI.Graphics.RECT=c.RECTANGLE,PIXI.Graphics.CIRC=c.CIRCLE,PIXI.Graphics.ELIP=c.ELLIPSE,PIXI.Graphics.RREC=c.ROUNDEDRECTANGLE),PIXI.TextureSilentFail=!0,"undefined"!=typeof exports?("undefined"!=typeof module&&module.exports&&(exports=module.exports=c),exports.Phaser=c):"undefined"!=typeof define&&define.amd?define("Phaser",function(){return b.Phaser=c}()):b.Phaser=c,c}).call(this); //# sourceMappingURL=phaser-split.map \ No newline at end of file diff --git a/build/custom/pixi.js b/build/custom/pixi.js index ec8bcc4d7..0c9dd4053 100644 --- a/build/custom/pixi.js +++ b/build/custom/pixi.js @@ -7,7 +7,7 @@ * * Phaser - http://phaser.io * -* v2.5.0 "Five Kings" - Built: Fri Jun 17 2016 12:44:51 +* v2.5.1 "Fal Moran" - Built: Fri Jul 08 2016 15:42:10 * * By Richard Davey http://www.photonstorm.com @photonstorm * @@ -155,64 +155,91 @@ PIXI.defaultRenderOptions = { */ /** - * @author Mat Groves http://matgroves.com/ @Doormat23 - */ +* @author Mat Groves http://matgroves.com @Doormat23 +* @author Richard Davey +* @license {@link https://github.com/photonstorm/phaser/blob/master/license.txt|MIT License} +*/ /** - * The base class for all objects that are rendered on the screen. - * This is an abstract class and should not be used on its own rather it should be extended. - * - * @class DisplayObject - * @constructor - */ -PIXI.DisplayObject = function() -{ +* The base class for all objects that are rendered. Contains properties for position, scaling, +* rotation, masks and cache handling. +* +* This is an abstract class and should not be used on its own, rather it should be extended. +* +* It is used internally by the likes of PIXI.Sprite. +* +* @class PIXI.DisplayObject +* @constructor +*/ +PIXI.DisplayObject = function() { + /** - * The coordinate of the object relative to the local coordinates of the parent. - * - * @property position - * @type Point - */ + * The coordinates, in pixels, of this DisplayObject, relative to its parent container. + * + * The value of this property does not reflect any positioning happening further up the display list. + * To obtain that value please see the `worldPosition` property. + * + * @property {PIXI.Point} position + * @default + */ this.position = new PIXI.Point(0, 0); /** - * The scale factor of the object. - * - * @property scale - * @type Point - */ + * The scale of this DisplayObject. A scale of 1:1 represents the DisplayObject + * at its default size. A value of 0.5 would scale this DisplayObject by half, and so on. + * + * The value of this property does not reflect any scaling happening further up the display list. + * To obtain that value please see the `worldScale` property. + * + * @property {PIXI.Point} scale + * @default + */ this.scale = new PIXI.Point(1, 1); /** - * The pivot point of the displayObject that it rotates around - * - * @property pivot - * @type Point - */ + * The pivot point of this DisplayObject that it rotates around. The values are expressed + * in pixel values. + * @property {PIXI.Point} pivot + * @default + */ this.pivot = new PIXI.Point(0, 0); /** - * The rotation of the object in radians. - * - * @property rotation - * @type Number - */ + * The rotation of this DisplayObject. The value is given, and expressed, in radians, and is based on + * a right-handed orientation. + * + * The value of this property does not reflect any rotation happening further up the display list. + * To obtain that value please see the `worldRotation` property. + * + * @property {number} rotation + * @default + */ this.rotation = 0; /** - * The opacity of the object. - * - * @property alpha - * @type Number - */ + * The alpha value of this DisplayObject. A value of 1 is fully opaque. A value of 0 is transparent. + * Please note that an object with an alpha value of 0 is skipped during the render pass. + * + * The value of this property does not reflect any alpha values set further up the display list. + * To obtain that value please see the `worldAlpha` property. + * + * @property {number} alpha + * @default + */ this.alpha = 1; /** - * The visibility of the object. - * - * @property visible - * @type Boolean - */ + * The visibility of this DisplayObject. A value of `false` makes the object invisible. + * A value of `true` makes it visible. Please note that an object with a visible value of + * `false` is skipped during the render pass. Equally a DisplayObject with visible false will + * not render any of its children. + * + * The value of this property does not reflect any visible values set further up the display list. + * To obtain that value please see the `worldVisible` property. + * + * @property {boolean} visible + * @default + */ this.visible = true; /** @@ -225,688 +252,729 @@ PIXI.DisplayObject = function() this.hitArea = null; /** - * Can this object be rendered - * - * @property renderable - * @type Boolean - */ + * Should this DisplayObject be rendered by the renderer? An object with a renderable value of + * `false` is skipped during the render pass. + * + * @property {boolean} renderable + * @default + */ this.renderable = false; /** - * [read-only] The display object container that contains this display object. - * - * @property parent - * @type DisplayObjectContainer - * @readOnly - */ + * The parent DisplayObjectContainer that this DisplayObject is a child of. + * All DisplayObjects must belong to a parent in order to be rendered. + * The root parent is the Stage object. This property is set automatically when the + * DisplayObject is added to, or removed from, a DisplayObjectContainer. + * + * @property {PIXI.DisplayObjectContainer} parent + * @default + * @readOnly + */ this.parent = null; /** - * [read-only] The stage the display object is connected to, or undefined if it is not connected to the stage. - * - * @property stage - * @type Stage - * @readOnly - */ + * The stage that this DisplayObject is connected to. + * + * @property {PIXI.Stage} stage + * @default + * @readOnly + */ this.stage = null; /** - * [read-only] The multiplied alpha of the displayObject - * - * @property worldAlpha - * @type Number - * @readOnly - */ + * The multiplied alpha value of this DisplayObject. A value of 1 is fully opaque. A value of 0 is transparent. + * This value is the calculated total, based on the alpha values of all parents of this DisplayObjects + * in the display list. + * + * To obtain, and set, the local alpha value, see the `alpha` property. + * + * Note: This property is only updated at the end of the `updateTransform` call, once per render. Until + * that happens this property will contain values based on the previous frame. Be mindful of this if + * accessing this property outside of the normal game flow, i.e. from an asynchronous event callback. + * + * @property {number} worldAlpha + * @readOnly + */ this.worldAlpha = 1; /** - * [read-only] Current transform of the object based on world (parent) factors - * - * @property worldTransform - * @type Matrix - * @readOnly - * @private - */ + * The current transform of this DisplayObject. + * + * This property contains the calculated total, based on the transforms of all parents of this + * DisplayObject in the display list. + * + * Note: This property is only updated at the end of the `updateTransform` call, once per render. Until + * that happens this property will contain values based on the previous frame. Be mindful of this if + * accessing this property outside of the normal game flow, i.e. from an asynchronous event callback. + * + * @property {PIXI.Matrix} worldTransform + * @readOnly + */ this.worldTransform = new PIXI.Matrix(); /** - * The position of the Display Object based on the world transform. - * This value is updated at the end of updateTransform and takes all parent transforms into account. - * - * @property worldPosition - * @type Point - * @readOnly - */ + * The coordinates, in pixels, of this DisplayObject within the world. + * + * This property contains the calculated total, based on the positions of all parents of this + * DisplayObject in the display list. + * + * Note: This property is only updated at the end of the `updateTransform` call, once per render. Until + * that happens this property will contain values based on the previous frame. Be mindful of this if + * accessing this property outside of the normal game flow, i.e. from an asynchronous event callback. + * + * @property {PIXI.Point} worldPosition + * @readOnly + */ this.worldPosition = new PIXI.Point(0, 0); /** - * The scale of the Display Object based on the world transform. - * This value is updated at the end of updateTransform and takes all parent transforms into account. - * - * @property worldScale - * @type Point - * @readOnly - */ + * The global scale of this DisplayObject. + * + * This property contains the calculated total, based on the scales of all parents of this + * DisplayObject in the display list. + * + * Note: This property is only updated at the end of the `updateTransform` call, once per render. Until + * that happens this property will contain values based on the previous frame. Be mindful of this if + * accessing this property outside of the normal game flow, i.e. from an asynchronous event callback. + * + * @property {PIXI.Point} worldScale + * @readOnly + */ this.worldScale = new PIXI.Point(1, 1); /** - * The rotation of the Display Object, in radians, based on the world transform. - * This value is updated at the end of updateTransform and takes all parent transforms into account. - * - * @property worldRotation - * @type Number - * @readOnly - */ + * The rotation, in radians, of this DisplayObject. + * + * This property contains the calculated total, based on the rotations of all parents of this + * DisplayObject in the display list. + * + * Note: This property is only updated at the end of the `updateTransform` call, once per render. Until + * that happens this property will contain values based on the previous frame. Be mindful of this if + * accessing this property outside of the normal game flow, i.e. from an asynchronous event callback. + * + * @property {number} worldRotation + * @readOnly + */ this.worldRotation = 0; /** - * cached sin rotation and cos rotation - * - * @property _sr - * @type Number - * @private - */ - this._sr = 0; - - /** - * cached sin rotation and cos rotation - * - * @property _cr - * @type Number - * @private - */ - this._cr = 1; - - /** - * The area the filter is applied to like the hitArea this is used as more of an optimisation - * rather than figuring out the dimensions of the displayObject each frame you can set this rectangle - * - * @property filterArea - * @type Rectangle - */ + * The rectangular area used by filters when rendering a shader for this DisplayObject. + * + * @property {PIXI.Rectangle} filterArea + * @type Rectangle + * @default + */ this.filterArea = null; /** - * The original, cached bounds of the object - * - * @property _bounds - * @type Rectangle - * @private - */ + * @property {number} _sr - Cached rotation value. + * @private + */ + this._sr = 0; + + /** + * @property {number} _cr - Cached rotation value. + * @private + */ + this._cr = 1; + + /** + * @property {PIXI.Rectangle} _bounds - The cached bounds of this object. + * @private + */ this._bounds = new PIXI.Rectangle(0, 0, 1, 1); /** - * The most up-to-date bounds of the object - * - * @property _currentBounds - * @type Rectangle - * @private - */ + * @property {PIXI.Rectangle} _currentBounds - The most recently calculated bounds of this object. + * @private + */ this._currentBounds = null; /** - * The original, cached mask of the object - * - * @property _mask - * @type Rectangle - * @private - */ + * @property {PIXI.Rectangle} _mask - The cached mask of this object. + * @private + */ this._mask = null; /** - * Cached internal flag. - * - * @property _cacheAsBitmap - * @type Boolean - * @private - */ + * @property {boolean} _cacheAsBitmap - Internal cache as bitmap flag. + * @private + */ this._cacheAsBitmap = false; /** - * Cached internal flag. - * - * @property _cacheIsDirty - * @type Boolean - * @private - */ + * @property {boolean} _cacheIsDirty - Internal dirty cache flag. + * @private + */ this._cacheIsDirty = false; }; -// constructor PIXI.DisplayObject.prototype.constructor = PIXI.DisplayObject; -/** - * Destroy this DisplayObject. - * Removes all references to transformCallbacks, its parent, the stage, filters, bounds, mask and cached Sprites. - * - * @method destroy - */ -PIXI.DisplayObject.prototype.destroy = function() -{ - if (this.children) - { - var i = this.children.length; +PIXI.DisplayObject.prototype = { - while (i--) + /** + * Destroy this DisplayObject. + * + * Removes any cached sprites, sets renderable flag to false, and nulls references to the Stage, filters, + * bounds and mask. + * + * Also iteratively calls `destroy` on any children. + * + * @method PIXI.DisplayObject#destroy + */ + destroy: function () { + + if (this.children) { - this.children[i].destroy(); - } + var i = this.children.length; - this.children = []; - } - - this.hitArea = null; - this.parent = null; - this.stage = null; - this.worldTransform = null; - this.filterArea = null; - this._bounds = null; - this._currentBounds = null; - this._mask = null; - - // In case Pixi is still going to try and render it even though destroyed - this.renderable = false; - - this._destroyCachedSprite(); -}; - -/** - * [read-only] Indicates if the sprite is globally visible. - * - * @property worldVisible - * @type Boolean - */ -Object.defineProperty(PIXI.DisplayObject.prototype, 'worldVisible', { - - get: function() { - - var item = this; - - do - { - if (!item.visible) return false; - item = item.parent; - } - while(item); - - return true; - } - -}); - -/** - * Sets a mask for the displayObject. A mask is an object that limits the visibility of an object to the shape of the mask applied to it. - * In PIXI a regular mask must be a PIXI.Graphics object. This allows for much faster masking in canvas as it utilises shape clipping. - * To remove a mask, set this property to null. - * - * @property mask - * @type Graphics - */ -Object.defineProperty(PIXI.DisplayObject.prototype, 'mask', { - - get: function() { - return this._mask; - }, - - set: function(value) { - - if (this._mask) this._mask.isMask = false; - - this._mask = value; - - if (this._mask) this._mask.isMask = true; - } - -}); - -/** - * Sets the filters for the displayObject. - * IMPORTANT: This is a webGL only feature and will be ignored by the Canvas renderer. - * - * To remove filters simply set this property to 'null'. - * - * You cannot have a filter and a multiply blend mode active at the same time. Setting a filter will reset - * this objects blend mode to NORMAL. - * - * @property filters - * @type Array(Filter) - */ -Object.defineProperty(PIXI.DisplayObject.prototype, 'filters', { - - get: function() { - return this._filters; - }, - - set: function(value) { - - if (value) - { - // now put all the passes in one place.. - var passes = []; - - for (var i = 0; i < value.length; i++) + while (i--) { - var filterPasses = value[i].passes; - - for (var j = 0; j < filterPasses.length; j++) - { - passes.push(filterPasses[j]); - } + this.children[i].destroy(); } - // TODO change this as it is legacy - this._filterBlock = { target: this, filterPasses: passes }; + this.children = []; } - this._filters = value; + this.hitArea = null; + this.parent = null; + this.stage = null; + this.worldTransform = null; + this.filterArea = null; + this.renderable = false; - if (this.blendMode && this.blendMode === PIXI.blendModes.MULTIPLY) - { - this.blendMode = PIXI.blendModes.NORMAL; - } - } -}); + this._bounds = null; + this._currentBounds = null; + this._mask = null; -/** - * Set if this display object is cached as a bitmap. - * This basically takes a snap shot of the display object as it is at that moment. It can provide a performance benefit for complex static displayObjects. - * To remove simply set this property to 'null' - * @property cacheAsBitmap - * @type Boolean - */ -Object.defineProperty(PIXI.DisplayObject.prototype, 'cacheAsBitmap', { + this._destroyCachedSprite(); - get: function() { - return this._cacheAsBitmap; }, - set: function(value) { + /* + * Updates the transform matrix this DisplayObject uses for rendering. + * + * If the object has no parent, and no parent parameter is provided, it will default to + * Phaser.Game.World as the parent transform to use. If that is unavailable the transform fails to take place. + * + * The `parent` parameter has priority over the actual parent. Use it as a parent override. + * Setting it does **not** change the actual parent of this DisplayObject. + * + * Calling this method updates the `worldTransform`, `worldAlpha`, `worldPosition`, `worldScale` + * and `worldRotation` properties. + * + * If a `transformCallback` has been specified, it is called at the end of this method, and is passed + * the new, updated, worldTransform property, along with the parent transform used. + * + * @method PIXI.DisplayObject#updateTransform + * @param {PIXI.DisplayObject} [parent] - Optional parent to calculate this DisplayObjects transform from. + * @return {PIXI.DisplayObject} - A reference to this DisplayObject. + */ + updateTransform: function (parent) { - if (this._cacheAsBitmap === value) + if (!parent && !this.parent && !this.game) + { + return this; + } + + var p = this.parent; + + if (parent) + { + p = parent; + } + else if (!this.parent) + { + p = this.game.world; + } + + // create some matrix refs for easy access + var pt = p.worldTransform; + var wt = this.worldTransform; + + // temporary matrix variables + var a, b, c, d, tx, ty; + + // so if rotation is between 0 then we can simplify the multiplication process.. + if (this.rotation % PIXI.PI_2) + { + // check to see if the rotation is the same as the previous render. This means we only need to use sin and cos when rotation actually changes + if (this.rotation !== this.rotationCache) + { + this.rotationCache = this.rotation; + this._sr = Math.sin(this.rotation); + this._cr = Math.cos(this.rotation); + } + + // get the matrix values of the displayobject based on its transform properties.. + a = this._cr * this.scale.x; + b = this._sr * this.scale.x; + c = -this._sr * this.scale.y; + d = this._cr * this.scale.y; + tx = this.position.x; + ty = this.position.y; + + // check for pivot.. not often used so geared towards that fact! + if (this.pivot.x || this.pivot.y) + { + tx -= this.pivot.x * a + this.pivot.y * c; + ty -= this.pivot.x * b + this.pivot.y * d; + } + + // concat the parent matrix with the objects transform. + wt.a = a * pt.a + b * pt.c; + wt.b = a * pt.b + b * pt.d; + wt.c = c * pt.a + d * pt.c; + wt.d = c * pt.b + d * pt.d; + wt.tx = tx * pt.a + ty * pt.c + pt.tx; + wt.ty = tx * pt.b + ty * pt.d + pt.ty; + } + else + { + // lets do the fast version as we know there is no rotation.. + a = this.scale.x; + d = this.scale.y; + + tx = this.position.x - this.pivot.x * a; + ty = this.position.y - this.pivot.y * d; + + wt.a = a * pt.a; + wt.b = a * pt.b; + wt.c = d * pt.c; + wt.d = d * pt.d; + wt.tx = tx * pt.a + ty * pt.c + pt.tx; + wt.ty = tx * pt.b + ty * pt.d + pt.ty; + } + + // Set the World values + this.worldAlpha = this.alpha * p.worldAlpha; + this.worldPosition.set(wt.tx, wt.ty); + this.worldScale.set(this.scale.x * Math.sqrt(wt.a * wt.a + wt.c * wt.c), this.scale.y * Math.sqrt(wt.b * wt.b + wt.d * wt.d)); + this.worldRotation = Math.atan2(-wt.c, wt.d); + + // reset the bounds each time this is called! + this._currentBounds = null; + + // Custom callback? + if (this.transformCallback) + { + this.transformCallback.call(this.transformCallbackContext, wt, pt); + } + + return this; + + }, + + /** + * Sets the root Stage object that this DisplayObject is connected to. + * + * @method PIXI.DisplayObject#setStageReference + * @param {Phaser.Stage} stage - The stage that the object will have as its current stage reference + * @return {PIXI.DisplayObject} - A reference to this DisplayObject. + */ + setStageReference: function (stage) + { + this.stage = stage; + + return this; + + }, + + /** + * To be overridden by classes that require it. + * + * @method PIXI.DisplayObject#preUpdate + */ + preUpdate: function () { + + }, + + /** + * Generates a RenderTexture based on this DisplayObject, which can they be used to texture other Sprites. + * This can be useful if your DisplayObject is static, or complicated, and needs to be reused multiple times. + * + * Please note that no garbage collection takes place on old textures. It is up to you to destroy old textures, + * and references to them, so they don't linger in memory. + * + * @method PIXI.DisplayObject#generateTexture + * @param {number} [resolution=1] - The resolution of the texture being generated. + * @param {number} [scaleMode=PIXI.scaleModes.DEFAULT] - See {{#crossLink "PIXI/scaleModes:property"}}PIXI.scaleModes{{/crossLink}} for possible values. + * @param {PIXI.CanvasRenderer|PIXI.WebGLRenderer} renderer - The renderer used to generate the texture. + * @return {PIXI.RenderTexture} - A RenderTexture containing an image of this DisplayObject at the time it was invoked. + */ + generateTexture: function (resolution, scaleMode, renderer) { + + var bounds = this.getLocalBounds(); + + var renderTexture = new PIXI.RenderTexture(bounds.width | 0, bounds.height | 0, renderer, scaleMode, resolution); + + PIXI.DisplayObject._tempMatrix.tx = -bounds.x; + PIXI.DisplayObject._tempMatrix.ty = -bounds.y; + + renderTexture.render(this, PIXI.DisplayObject._tempMatrix); + + return renderTexture; + + }, + + /** + * If this DisplayObject has a cached Sprite, this method generates and updates it. + * + * @method PIXI.DisplayObject#updateCache + * @return {PIXI.DisplayObject} - A reference to this DisplayObject. + */ + updateCache: function () { + + this._generateCachedSprite(); + + return this; + + }, + + /** + * Calculates the global position of this DisplayObject, based on the position given. + * + * @method PIXI.DisplayObject#toGlobal + * @param {PIXI.Point} position - The global position to calculate from. + * @return {PIXI.Point} - A point object representing the position of this DisplayObject based on the global position given. + */ + toGlobal: function (position) { + + this.updateTransform(); + + return this.worldTransform.apply(position); + + }, + + /** + * Calculates the local position of this DisplayObject, relative to another point. + * + * @method PIXI.DisplayObject#toLocal + * @param {PIXI.Point} position - The world origin to calculate from. + * @param {PIXI.DisplayObject} [from] - An optional DisplayObject to calculate the global position from. + * @return {PIXI.Point} - A point object representing the position of this DisplayObject based on the global position given. + */ + toLocal: function (position, from) { + + if (from) + { + position = from.toGlobal(position); + } + + this.updateTransform(); + + return this.worldTransform.applyInverse(position); + + }, + + /** + * Internal method. + * + * @method PIXI.DisplayObject#_renderCachedSprite + * @private + * @param {Object} renderSession - The render session + */ + _renderCachedSprite: function (renderSession) { + + this._cachedSprite.worldAlpha = this.worldAlpha; + + if (renderSession.gl) + { + PIXI.Sprite.prototype._renderWebGL.call(this._cachedSprite, renderSession); + } + else + { + PIXI.Sprite.prototype._renderCanvas.call(this._cachedSprite, renderSession); + } + + }, + + /** + * Internal method. + * + * @method PIXI.DisplayObject#_generateCachedSprite + * @private + */ + _generateCachedSprite: function () { + + this._cacheAsBitmap = false; + + var bounds = this.getLocalBounds(); + + // Round it off and force non-zero dimensions + bounds.width = Math.max(1, Math.ceil(bounds.width)); + bounds.height = Math.max(1, Math.ceil(bounds.height)); + + this.updateTransform(); + + if (!this._cachedSprite) + { + var renderTexture = new PIXI.RenderTexture(bounds.width, bounds.height); + this._cachedSprite = new PIXI.Sprite(renderTexture); + this._cachedSprite.worldTransform = this.worldTransform; + } + else + { + this._cachedSprite.texture.resize(bounds.width, bounds.height); + } + + // Remove filters + var tempFilters = this._filters; + + this._filters = null; + this._cachedSprite.filters = tempFilters; + + PIXI.DisplayObject._tempMatrix.tx = -bounds.x; + PIXI.DisplayObject._tempMatrix.ty = -bounds.y; + + this._cachedSprite.texture.render(this, PIXI.DisplayObject._tempMatrix, true); + this._cachedSprite.anchor.x = -(bounds.x / bounds.width); + this._cachedSprite.anchor.y = -(bounds.y / bounds.height); + + this._filters = tempFilters; + + this._cacheAsBitmap = true; + + }, + + /** + * Destroys a cached Sprite. + * + * @method PIXI.DisplayObject#_destroyCachedSprite + * @private + */ + _destroyCachedSprite: function () { + + if (!this._cachedSprite) { return; } - if (value) - { - this._generateCachedSprite(); - } - else - { - this._destroyCachedSprite(); - } + this._cachedSprite.texture.destroy(true); - this._cacheAsBitmap = value; - } + this._cachedSprite = null; -}); - -/* - * Updates the object transform for rendering. - * - * If the object has no parent, and no parent parameter is provided, it will default to Phaser.Game.World as the parent. - * If that is unavailable the transform fails to take place. - * - * The `parent` parameter has priority over the actual parent. Use it as a parent override. - * Setting it does **not** change the actual parent of this DisplayObject, it just uses the parent for the transform update. - * - * @method updateTransform - * @param {DisplayObject} [parent] - Optional parent to parent this DisplayObject transform from. - */ -PIXI.DisplayObject.prototype.updateTransform = function(parent) -{ - if (!parent && !this.parent && !this.game) - { - return; - } - - var p = this.parent; - - if (parent) - { - p = parent; - } - else if (!this.parent) - { - p = this.game.world; - } - - // create some matrix refs for easy access - var pt = p.worldTransform; - var wt = this.worldTransform; - - // temporary matrix variables - var a, b, c, d, tx, ty; - - // so if rotation is between 0 then we can simplify the multiplication process.. - if (this.rotation % PIXI.PI_2) - { - // check to see if the rotation is the same as the previous render. This means we only need to use sin and cos when rotation actually changes - if (this.rotation !== this.rotationCache) - { - this.rotationCache = this.rotation; - this._sr = Math.sin(this.rotation); - this._cr = Math.cos(this.rotation); - } - - // get the matrix values of the displayobject based on its transform properties.. - a = this._cr * this.scale.x; - b = this._sr * this.scale.x; - c = -this._sr * this.scale.y; - d = this._cr * this.scale.y; - tx = this.position.x; - ty = this.position.y; - - // check for pivot.. not often used so geared towards that fact! - if (this.pivot.x || this.pivot.y) - { - tx -= this.pivot.x * a + this.pivot.y * c; - ty -= this.pivot.x * b + this.pivot.y * d; - } - - // concat the parent matrix with the objects transform. - wt.a = a * pt.a + b * pt.c; - wt.b = a * pt.b + b * pt.d; - wt.c = c * pt.a + d * pt.c; - wt.d = c * pt.b + d * pt.d; - wt.tx = tx * pt.a + ty * pt.c + pt.tx; - wt.ty = tx * pt.b + ty * pt.d + pt.ty; - } - else - { - // lets do the fast version as we know there is no rotation.. - a = this.scale.x; - d = this.scale.y; - - tx = this.position.x - this.pivot.x * a; - ty = this.position.y - this.pivot.y * d; - - wt.a = a * pt.a; - wt.b = a * pt.b; - wt.c = d * pt.c; - wt.d = d * pt.d; - wt.tx = tx * pt.a + ty * pt.c + pt.tx; - wt.ty = tx * pt.b + ty * pt.d + pt.ty; - } - - // Set the World values - this.worldAlpha = this.alpha * p.worldAlpha; - this.worldPosition.set(wt.tx, wt.ty); - this.worldScale.set(this.scale.x * Math.sqrt(wt.a * wt.a + wt.c * wt.c), this.scale.y * Math.sqrt(wt.b * wt.b + wt.d * wt.d)); - this.worldRotation = Math.atan2(-wt.c, wt.d); - - // reset the bounds each time this is called! - this._currentBounds = null; - - // Custom callback? - if (this.transformCallback) - { - this.transformCallback.call(this.transformCallbackContext, wt, pt); } }; -// performance increase to avoid using call.. (10x faster) +// Alias for updateTransform. As used in DisplayObject container, etc. PIXI.DisplayObject.prototype.displayObjectUpdateTransform = PIXI.DisplayObject.prototype.updateTransform; -/** - * Retrieves the bounds of the displayObject as a rectangle object - * - * @method getBounds - * @param matrix {Matrix} - * @return {Rectangle} the rectangular bounding area - */ -PIXI.DisplayObject.prototype.getBounds = function(matrix) -{ - matrix = matrix;//just to get passed js hinting (and preserve inheritance) - return PIXI.EmptyRectangle; -}; +Object.defineProperties(PIXI.DisplayObject.prototype, { -/** - * Retrieves the local bounds of the displayObject as a rectangle object - * - * @method getLocalBounds - * @return {Rectangle} the rectangular bounding area - */ -PIXI.DisplayObject.prototype.getLocalBounds = function() -{ - return this.getBounds(PIXI.identityMatrix);///PIXI.EmptyRectangle(); -}; + /** + * The horizontal position of the DisplayObject, in pixels, relative to its parent. + * If you need the world position of the DisplayObject, use `DisplayObject.worldPosition` instead. + * @name PIXI.DisplayObject#x + * @property {number} x - The horizontal position of the DisplayObject, in pixels, relative to its parent. + */ + 'x': { -/** - * Sets the object's stage reference, the stage this object is connected to - * - * @method setStageReference - * @param stage {Stage} the stage that the object will have as its current stage reference - */ -PIXI.DisplayObject.prototype.setStageReference = function(stage) -{ - this.stage = stage; -}; + get: function () { -/** - * Empty, to be overridden by classes that require it. - * - * @method preUpdate - */ -PIXI.DisplayObject.prototype.preUpdate = function() -{ -}; + return this.position.x; -/** - * Useful function that returns a texture of the displayObject object that can then be used to create sprites - * This can be quite useful if your displayObject is static / complicated and needs to be reused multiple times. - * - * @method generateTexture - * @param resolution {Number} The resolution of the texture being generated - * @param scaleMode {Number} See {{#crossLink "PIXI/scaleModes:property"}}PIXI.scaleModes{{/crossLink}} for possible values - * @param renderer {CanvasRenderer|WebGLRenderer} The renderer used to generate the texture. - * @return {RenderTexture} a texture of the graphics object - */ -PIXI.DisplayObject.prototype.generateTexture = function(resolution, scaleMode, renderer) -{ - var bounds = this.getLocalBounds(); + }, - var renderTexture = new PIXI.RenderTexture(bounds.width | 0, bounds.height | 0, renderer, scaleMode, resolution); - - PIXI.DisplayObject._tempMatrix.tx = -bounds.x; - PIXI.DisplayObject._tempMatrix.ty = -bounds.y; - - renderTexture.render(this, PIXI.DisplayObject._tempMatrix); + set: function (value) { - return renderTexture; -}; + this.position.x = value; -/** - * Generates and updates the cached sprite for this object. - * - * @method updateCache - */ -PIXI.DisplayObject.prototype.updateCache = function() -{ - this._generateCachedSprite(); -}; + } -/** - * Calculates the global position of the display object - * - * @method toGlobal - * @param position {Point} The world origin to calculate from - * @return {Point} A point object representing the position of this object - */ -PIXI.DisplayObject.prototype.toGlobal = function(position) -{ - // don't need to u[date the lot - this.displayObjectUpdateTransform(); - return this.worldTransform.apply(position); -}; - -/** - * Calculates the local position of the display object relative to another point - * - * @method toLocal - * @param position {Point} The world origin to calculate from - * @param [from] {DisplayObject} The DisplayObject to calculate the global position from - * @return {Point} A point object representing the position of this object - */ -PIXI.DisplayObject.prototype.toLocal = function(position, from) -{ - if (from) - { - position = from.toGlobal(position); - } - - // don't need to u[date the lot - this.displayObjectUpdateTransform(); - - return this.worldTransform.applyInverse(position); -}; - -/** - * Internal method. - * - * @method _renderCachedSprite - * @param renderSession {Object} The render session - * @private - */ -PIXI.DisplayObject.prototype._renderCachedSprite = function(renderSession) -{ - this._cachedSprite.worldAlpha = this.worldAlpha; - - if (renderSession.gl) - { - PIXI.Sprite.prototype._renderWebGL.call(this._cachedSprite, renderSession); - } - else - { - PIXI.Sprite.prototype._renderCanvas.call(this._cachedSprite, renderSession); - } -}; - -/** - * Internal method. - * - * @method _generateCachedSprite - * @private - */ -PIXI.DisplayObject.prototype._generateCachedSprite = function() -{ - this._cacheAsBitmap = false; - - var bounds = this.getLocalBounds(); - - // Round it off and force non-zero dimensions - bounds.width = Math.max(1, Math.ceil(bounds.width)); - bounds.height = Math.max(1, Math.ceil(bounds.height)); - - this.updateTransform(); - - if (!this._cachedSprite) - { - var renderTexture = new PIXI.RenderTexture(bounds.width, bounds.height); - this._cachedSprite = new PIXI.Sprite(renderTexture); - this._cachedSprite.worldTransform = this.worldTransform; - } - else - { - this._cachedSprite.texture.resize(bounds.width, bounds.height); - } - - // Remove filters - var tempFilters = this._filters; - this._filters = null; - this._cachedSprite.filters = tempFilters; - - // PIXI.DisplayObject._tempMatrix.identity(); - PIXI.DisplayObject._tempMatrix.tx = -bounds.x; - PIXI.DisplayObject._tempMatrix.ty = -bounds.y; - - this._cachedSprite.texture.render(this, PIXI.DisplayObject._tempMatrix, true); - this._cachedSprite.anchor.x = -(bounds.x / bounds.width); - this._cachedSprite.anchor.y = -(bounds.y / bounds.height); - - this._filters = tempFilters; - - this._cacheAsBitmap = true; -}; - -/** -* Destroys the cached sprite. -* -* @method _destroyCachedSprite -* @private -*/ -PIXI.DisplayObject.prototype._destroyCachedSprite = function() -{ - if (!this._cachedSprite) return; - - this._cachedSprite.texture.destroy(true); - - // TODO could be object pooled! - this._cachedSprite = null; -}; - -/** -* Renders the object using the WebGL renderer -* -* @method _renderWebGL -* @param renderSession {RenderSession} -* @private -*/ -PIXI.DisplayObject.prototype._renderWebGL = function(renderSession) -{ - // OVERWRITE; - // this line is just here to pass jshinting :) - renderSession = renderSession; -}; - -/** -* Renders the object using the Canvas renderer -* -* @method _renderCanvas -* @param renderSession {RenderSession} -* @private -*/ -PIXI.DisplayObject.prototype._renderCanvas = function(renderSession) -{ - // OVERWRITE; - // this line is just here to pass jshinting :) - renderSession = renderSession; -}; - -/** - * The position of the displayObject on the x axis relative to the local coordinates of the parent. - * - * @property x - * @type Number - */ -Object.defineProperty(PIXI.DisplayObject.prototype, 'x', { - - get: function() { - return this.position.x; }, - set: function(value) { - this.position.x = value; - } + /** + * The vertical position of the DisplayObject, in pixels, relative to its parent. + * If you need the world position of the DisplayObject, use `DisplayObject.worldPosition` instead. + * @name PIXI.DisplayObject#y + * @property {number} y - The vertical position of the DisplayObject, in pixels, relative to its parent. + */ + 'y': { -}); + get: function () { -/** - * The position of the displayObject on the y axis relative to the local coordinates of the parent. - * - * @property y - * @type Number - */ -Object.defineProperty(PIXI.DisplayObject.prototype, 'y', { + return this.position.y; + + }, + + set: function (value) { + + this.position.y = value; + + } - get: function() { - return this.position.y; }, - set: function(value) { - this.position.y = value; + /** + * Indicates if this DisplayObject is visible, based on it, and all of its parents, `visible` property values. + * @name PIXI.DisplayObject#worldVisible + * @property {boolean} worldVisible - Indicates if this DisplayObject is visible, based on it, and all of its parents, `visible` property values. + */ + 'worldVisible': { + + get: function () { + + if (!this.visible) + { + return false; + } + else + { + var item = this.parent; + + do + { + if (!item.visible) + { + return false; + } + + item = item.parent; + } + while (item); + + return true; + } + + } + + }, + + /** + * Sets a mask for this DisplayObject. A mask is an instance of a Graphics object. + * When applied it limits the visible area of this DisplayObject to the shape of the mask. + * Under a Canvas renderer it uses shape clipping. Under a WebGL renderer it uses a Stencil Buffer. + * To remove a mask, set this property to `null`. + * + * @name PIXI.DisplayObject#mask + * @property {PIXI.Graphics} mask - The mask applied to this DisplayObject. Set to `null` to remove an existing mask. + */ + 'mask': { + + get: function () { + + return this._mask; + + }, + + set: function (value) { + + if (this._mask) + { + this._mask.isMask = false; + } + + this._mask = value; + + if (value) + { + this._mask.isMask = true; + } + + } + + }, + + /** + * Sets the filters for this DisplayObject. This is a WebGL only feature, and is ignored by the Canvas + * Renderer. A filter is a shader applied to this DisplayObject. You can modify the placement of the filter + * using `DisplayObject.filterArea`. + * + * To remove filters, set this property to `null`. + * + * Note: You cannot have a filter set, and a MULTIPLY Blend Mode active, at the same time. Setting a + * filter will reset this DisplayObjects blend mode to NORMAL. + * + * @name PIXI.DisplayObject#filters + * @property {Array} filters - An Array of PIXI.AbstractFilter objects, or objects that extend them. + */ + 'filters': { + + get: function () { + + return this._filters; + + }, + + set: function (value) { + + if (Array.isArray(value)) + { + // Put all the passes in one place. + var passes = []; + + for (var i = 0; i < value.length; i++) + { + var filterPasses = value[i].passes; + + for (var j = 0; j < filterPasses.length; j++) + { + passes.push(filterPasses[j]); + } + } + + // Needed any more? + this._filterBlock = { target: this, filterPasses: passes }; + } + + this._filters = value; + + if (this.blendMode && this.blendMode === PIXI.blendModes.MULTIPLY) + { + this.blendMode = PIXI.blendModes.NORMAL; + } + + } + + }, + + /** + * Sets if this DisplayObject should be cached as a bitmap. + * + * When invoked it will take a snapshot of the DisplayObject, as it is at that moment, and store it + * in a RenderTexture. This is then used whenever this DisplayObject is rendered. It can provide a + * performance benefit for complex, but static, DisplayObjects. I.e. those with lots of children. + * + * Cached Bitmaps do not track their parents. If you update a property of this DisplayObject, it will not + * re-generate the cached bitmap automatically. To do that you need to call `DisplayObject.updateCache`. + * + * To remove a cached bitmap, set this property to `null`. + * + * @name PIXI.DisplayObject#cacheAsBitmap + * @property {boolean} cacheAsBitmap - Cache this DisplayObject as a Bitmap. Set to `null` to remove an existing cached bitmap. + */ + 'cacheAsBitmap': { + + get: function () { + + return this._cacheAsBitmap; + + }, + + set: function (value) { + + if (this._cacheAsBitmap === value) + { + return; + } + + if (value) + { + this._generateCachedSprite(); + } + else + { + this._destroyCachedSprite(); + } + + this._cacheAsBitmap = value; + + } + } }); @@ -1241,6 +1309,8 @@ PIXI.DisplayObjectContainer.prototype.getBounds = function() return PIXI.EmptyRectangle; } + this.updateTransform(); + var minX = Infinity; var minY = Infinity; @@ -1937,44 +2007,6 @@ PIXI.Sprite.prototype._renderCanvas = function(renderSession, matrix) }; -// some helper functions.. - -/** - * - * Helper function that creates a sprite that will contain a texture from the TextureCache based on the frameId - * The frame ids are created when a Texture packer file has been loaded - * - * @method fromFrame - * @static - * @param frameId {String} The frame Id of the texture in the cache - * @return {Sprite} A new Sprite using a texture from the texture cache matching the frameId - */ -PIXI.Sprite.fromFrame = function(frameId) -{ - var texture = PIXI.TextureCache[frameId]; - - if (!texture) throw new Error('The frameId "' + frameId + '" does not exist in the texture cache' + this); - - return new PIXI.Sprite(texture); -}; - -/** - * - * Helper function that creates a sprite that will contain a texture based on an image url - * If the image is not in the texture cache it will be loaded - * - * @method fromImage - * @static - * @param imageId {String} The image url of the texture - * @return {Sprite} A new Sprite using a texture from the texture cache matching the image id - */ -PIXI.Sprite.fromImage = function(imageId, crossorigin, scaleMode) -{ - var texture = PIXI.Texture.fromImage(imageId, crossorigin, scaleMode); - - return new PIXI.Sprite(texture); -}; - /** * @author Mat Groves http://matgroves.com/ */ @@ -2321,7 +2353,7 @@ PIXI.CanvasPool = { for (var i = 0; i < pool.length; i++) { - if (pool[i].parent === null) + if (!pool[i].parent) { return i; } @@ -2347,6 +2379,8 @@ PIXI.CanvasPool = { if (pool[i].parent === parent) { pool[i].parent = null; + pool[i].canvas.width = 1; + pool[i].canvas.height = 1; } } @@ -2368,6 +2402,8 @@ PIXI.CanvasPool = { if (pool[i].canvas === canvas) { pool[i].parent = null; + pool[i].canvas.width = 1; + pool[i].canvas.height = 1; } } @@ -2387,7 +2423,7 @@ PIXI.CanvasPool = { for (var i = 0; i < pool.length; i++) { - if (pool[i].parent !== null) + if (pool[i].parent) { c++; } @@ -2411,7 +2447,7 @@ PIXI.CanvasPool = { for (var i = 0; i < pool.length; i++) { - if (pool[i].parent === null) + if (!pool[i].parent) { c++; } @@ -6815,17 +6851,13 @@ PIXI.CanvasRenderer.prototype.mapBlendModes = function () { * @author Mat Groves http://matgroves.com/ @Doormat23 */ -PIXI.BaseTextureCache = {}; - -PIXI.BaseTextureCacheIdGenerator = 0; - /** * A texture stores the information that represents an image. All textures have a base texture. * * @class BaseTexture * @uses EventTarget * @constructor - * @param source {String} the source object (image or canvas) + * @param source {String|Canvas} the source object (image or canvas) * @param scaleMode {Number} See {{#crossLink "PIXI/scaleModes:property"}}PIXI.scaleModes{{/crossLink}} for possible values */ PIXI.BaseTexture = function(source, scaleMode) @@ -6882,8 +6914,6 @@ PIXI.BaseTexture = function(source, scaleMode) */ this.source = source; - this._UID = PIXI._UID++; - /** * Controls if RGB channels should be pre-multiplied by Alpha (WebGL only) * @@ -6942,12 +6972,6 @@ PIXI.BaseTexture = function(source, scaleMode) */ this.skipRender = false; - /** - * @property imageUrl - * @type String - */ - this.imageUrl = null; - /** * @property _powerOf2 * @type Boolean @@ -6974,7 +6998,6 @@ PIXI.BaseTexture.prototype.forceLoaded = function(width, height) this.width = width; this.height = height; this.dirty(); - }; /** @@ -6984,23 +7007,9 @@ PIXI.BaseTexture.prototype.forceLoaded = function(width, height) */ PIXI.BaseTexture.prototype.destroy = function() { - if (this.imageUrl) - { - delete PIXI.BaseTextureCache[this.imageUrl]; - delete PIXI.TextureCache[this.imageUrl]; - - this.imageUrl = null; - - if (!navigator.isCocoonJS) this.source.src = ''; - } - else if (this.source) + if (this.source) { PIXI.CanvasPool.removeByCanvas(this.source); - - if (this.source._pixiId) - { - delete PIXI.BaseTextureCache[this.source._pixiId]; - } } this.source = null; @@ -7013,12 +7022,11 @@ PIXI.BaseTexture.prototype.destroy = function() * * @method updateSourceImage * @param newSrc {String} the path of the image + * @deprecated This method is deprecated. Please use Phaser.Sprite.loadTexture instead. */ PIXI.BaseTexture.prototype.updateSourceImage = function(newSrc) { - this.hasLoaded = false; - this.source.src = null; - this.source.src = newSrc; + console.warn("PIXI.BaseTexture.updateSourceImage is deprecated. Use Phaser.Sprite.loadTexture instead."); }; /** @@ -7062,49 +7070,6 @@ PIXI.BaseTexture.prototype.unloadFromGPU = function() this.dirty(); }; -/** - * Helper function that creates a base texture from the given image url. - * If the image is not in the base texture cache it will be created and loaded. - * - * @static - * @method fromImage - * @param imageUrl {String} The image url of the texture - * @param crossorigin {Boolean} - * @param scaleMode {Number} See {{#crossLink "PIXI/scaleModes:property"}}PIXI.scaleModes{{/crossLink}} for possible values - * @return {BaseTexture} - */ -PIXI.BaseTexture.fromImage = function(imageUrl, crossorigin, scaleMode) -{ - var baseTexture = PIXI.BaseTextureCache[imageUrl]; - - if(crossorigin === undefined && imageUrl.indexOf('data:') === -1) crossorigin = true; - - if(!baseTexture) - { - // new Image() breaks tex loading in some versions of Chrome. - // See https://code.google.com/p/chromium/issues/detail?id=238071 - var image = new Image(); - - if (crossorigin) - { - image.crossOrigin = ''; - } - - image.src = imageUrl; - baseTexture = new PIXI.BaseTexture(image, scaleMode); - baseTexture.imageUrl = imageUrl; - PIXI.BaseTextureCache[imageUrl] = baseTexture; - - // if there is an @2x at the end of the url we are going to assume its a highres image - if( imageUrl.indexOf(PIXI.RETINA_PREFIX + '.') !== -1) - { - baseTexture.resolution = 2; - } - } - - return baseTexture; -}; - /** * Helper function that creates a base texture from the given canvas element. * @@ -7116,11 +7081,6 @@ PIXI.BaseTexture.fromImage = function(imageUrl, crossorigin, scaleMode) */ PIXI.BaseTexture.fromCanvas = function(canvas, scaleMode) { - if (!canvas._pixiId) - { - canvas._pixiId = 'canvas_' + PIXI.TextureCacheIdGenerator++; - } - if (canvas.width === 0) { canvas.width = 1; @@ -7131,24 +7091,13 @@ PIXI.BaseTexture.fromCanvas = function(canvas, scaleMode) canvas.height = 1; } - var baseTexture = PIXI.BaseTextureCache[canvas._pixiId]; - - if (!baseTexture) - { - baseTexture = new PIXI.BaseTexture(canvas, scaleMode); - PIXI.BaseTextureCache[canvas._pixiId] = baseTexture; - } - - return baseTexture; + return new PIXI.BaseTexture(canvas, scaleMode); }; /** * @author Mat Groves http://matgroves.com/ @Doormat23 */ -PIXI.TextureCache = {}; -PIXI.FrameCache = {}; - /** * TextureSilentFail is a boolean that defaults to `false`. * If `true` then `PIXI.Texture.setFrame` will no longer throw an error if the texture dimensions are incorrect. @@ -7158,8 +7107,6 @@ PIXI.FrameCache = {}; */ PIXI.TextureSilentFail = false; -PIXI.TextureCacheIdGenerator = 0; - /** * A texture stores the information that represents an image or part of an image. It cannot be added * to the display list directly. Instead use it as the texture for a PIXI.Sprite. If no frame is provided then the whole image is used. @@ -7395,46 +7342,6 @@ PIXI.Texture.prototype._updateUvs = function() this._uvs.y3 = (frame.y + frame.height) / th; }; -/** - * Helper function that creates a Texture object from the given image url. - * If the image is not in the texture cache it will be created and loaded. - * - * @static - * @method fromImage - * @param imageUrl {String} The image url of the texture - * @param crossorigin {Boolean} Whether requests should be treated as crossorigin - * @param scaleMode {Number} See {{#crossLink "PIXI/scaleModes:property"}}PIXI.scaleModes{{/crossLink}} for possible values - * @return {Texture} - */ -PIXI.Texture.fromImage = function(imageUrl, crossorigin, scaleMode) -{ - var texture = PIXI.TextureCache[imageUrl]; - - if(!texture) - { - texture = new PIXI.Texture(PIXI.BaseTexture.fromImage(imageUrl, crossorigin, scaleMode)); - PIXI.TextureCache[imageUrl] = texture; - } - - return texture; -}; - -/** - * Helper function that returns a Texture objected based on the given frame id. - * If the frame id is not in the texture cache an error will be thrown. - * - * @static - * @method fromFrame - * @param frameId {String} The frame id of the texture - * @return {Texture} - */ -PIXI.Texture.fromFrame = function(frameId) -{ - var texture = PIXI.TextureCache[frameId]; - if(!texture) throw new Error('The frameId "' + frameId + '" does not exist in the texture cache '); - return texture; -}; - /** * Helper function that creates a new a Texture based on the given canvas element. * @@ -7451,35 +7358,6 @@ PIXI.Texture.fromCanvas = function(canvas, scaleMode) return new PIXI.Texture(baseTexture); }; -/** - * Adds a texture to the global PIXI.TextureCache. This cache is shared across the whole PIXI object. - * - * @static - * @method addTextureToCache - * @param texture {Texture} The Texture to add to the cache. - * @param id {String} The id that the texture will be stored against. - */ -PIXI.Texture.addTextureToCache = function(texture, id) -{ - PIXI.TextureCache[id] = texture; -}; - -/** - * Remove a texture from the global PIXI.TextureCache. - * - * @static - * @method removeTextureFromCache - * @param id {String} The id of the texture to be removed - * @return {Texture} The texture that was removed - */ -PIXI.Texture.removeTextureFromCache = function(id) -{ - var texture = PIXI.TextureCache[id]; - delete PIXI.TextureCache[id]; - delete PIXI.BaseTextureCache[id]; - return texture; -}; - PIXI.TextureUvs = function() { this.x0 = 0; diff --git a/build/custom/pixi.map b/build/custom/pixi.map index b8978b981..cd78f61b8 100644 --- a/build/custom/pixi.map +++ b/build/custom/pixi.map @@ -1 +1 @@ -{"version":3,"file":"pixi.min.js","sources":["pixi.js"],"names":["root","this","PIXI","game","WEBGL_RENDERER","CANVAS_RENDERER","VERSION","_UID","Float32Array","Uint16Array","Uint32Array","ArrayBuffer","Array","PI_2","Math","PI","RAD_TO_DEG","DEG_TO_RAD","RETINA_PREFIX","DisplayObject","position","Point","scale","pivot","rotation","alpha","visible","hitArea","renderable","parent","stage","worldAlpha","worldTransform","Matrix","worldPosition","worldScale","worldRotation","_sr","_cr","filterArea","_bounds","Rectangle","_currentBounds","_mask","_cacheAsBitmap","_cacheIsDirty","prototype","constructor","destroy","children","i","length","_destroyCachedSprite","Object","defineProperty","get","item","set","value","isMask","_filters","passes","filterPasses","j","push","_filterBlock","target","blendMode","blendModes","MULTIPLY","NORMAL","_generateCachedSprite","updateTransform","p","world","a","b","c","d","tx","ty","pt","wt","rotationCache","sin","cos","x","y","sqrt","atan2","transformCallback","call","transformCallbackContext","displayObjectUpdateTransform","getBounds","matrix","EmptyRectangle","getLocalBounds","identityMatrix","setStageReference","preUpdate","generateTexture","resolution","scaleMode","renderer","bounds","renderTexture","RenderTexture","width","height","_tempMatrix","render","updateCache","toGlobal","apply","toLocal","from","applyInverse","_renderCachedSprite","renderSession","_cachedSprite","gl","Sprite","_renderWebGL","_renderCanvas","max","ceil","texture","resize","tempFilters","filters","anchor","DisplayObjectContainer","ignoreChildInput","create","_width","_height","addChild","child","addChildAt","index","removeChild","splice","Error","swapChildren","child2","index1","getChildIndex","index2","indexOf","setChildIndex","currentIndex","getChildAt","removeChildAt","removeStageReference","undefined","removeChildren","beginIndex","endIndex","begin","end","range","removed","displayObjectContainerUpdateTransform","childBounds","childMaxX","childMaxY","minX","Infinity","minY","maxX","maxY","childVisible","matrixCache","spriteBatch","flush","filterManager","pushFilter","stop","maskManager","pushMask","mask","start","popMask","popFilter","Texture","emptyTexture","tint","cachedTint","tintedTexture","shader","exists","baseTexture","hasLoaded","onTextureUpdate","frame","setTexture","destroyBase","skipRender","valid","w0","w1","h0","h1","temp","x1","y1","x2","y2","x3","y3","x4","y4","crop","currentBlendMode","context","globalCompositeOperation","blendModesCanvas","globalAlpha","smoothProperty","scaleModes","LINEAR","dx","trim","dy","shakeX","shakeY","roundPixels","setTransform","cw","ch","requiresReTint","CanvasTinter","getTintedTexture","drawImage","cx","cy","source","fromFrame","frameId","TextureCache","fromImage","imageId","crossorigin","SpriteBatch","textureThing","ready","initWebGL","fastSpriteBatch","WebGLFastSpriteBatch","setContext","shaderManager","setShader","fastShader","transform","isRotated","childTransform","hex2rgb","hex","rgb2hex","rgb","canUseNewCanvasBlendModes","document","pngHead","pngEnd","magenta","Image","src","yellow","canvas","CanvasPool","getContext","getImageData","data","remove","getNextPowerOfTwo","number","result","isPowerOfTwo","idx","getFirst","container","createElement","pool","removeByCanvas","getTotal","getFree","initDefaultShaders","CompileVertexShader","shaderSrc","_CompileShader","VERTEX_SHADER","CompileFragmentShader","FRAGMENT_SHADER","shaderType","isArray","join","createShader","shaderSource","compileShader","getShaderParameter","COMPILE_STATUS","window","console","log","getShaderInfoLog","compileProgram","vertexSrc","fragmentSrc","fragmentShader","vertexShader","shaderProgram","createProgram","attachShader","linkProgram","getProgramParameter","LINK_STATUS","getProgramInfoLog","PixiShader","program","textureCount","firstRun","dirty","attributes","init","defaultVertexSrc","useProgram","uSampler","getUniformLocation","projectionVector","offsetVector","dimensions","aVertexPosition","getAttribLocation","aTextureCoord","colorAttribute","key","uniforms","uniformLocation","initUniforms","uniform","type","_init","initSampler2D","glMatrix","glValueLength","glFunc","uniformMatrix2fv","uniformMatrix3fv","uniformMatrix4fv","activeTexture","bindTexture","TEXTURE_2D","_glTextures","id","textureData","magFilter","minFilter","wrapS","CLAMP_TO_EDGE","wrapT","format","LUMINANCE","RGBA","repeat","REPEAT","pixelStorei","UNPACK_FLIP_Y_WEBGL","flipY","border","texImage2D","UNSIGNED_BYTE","texParameteri","TEXTURE_MAG_FILTER","TEXTURE_MIN_FILTER","TEXTURE_WRAP_S","TEXTURE_WRAP_T","uniform1i","syncUniforms","transpose","z","w","_dirty","instances","updateTexture","deleteProgram","PixiFastShader","uMatrix","aPositionCoord","aScale","aRotation","StripShader","translationMatrix","attribute","PrimitiveShader","tintColor","ComplexPrimitiveShader","color","glContexts","WebGLRenderer","defaultRenderer","transparent","autoResize","preserveDrawingBuffer","clearBeforeRender","view","_contextOptions","antialias","premultipliedAlpha","stencil","projection","offset","WebGLShaderManager","WebGLSpriteBatch","WebGLMaskManager","WebGLFilterManager","stencilManager","WebGLStencilManager","blendModeManager","WebGLBlendModeManager","drawCount","initContext","mapBlendModes","glContextId","disable","DEPTH_TEST","CULL_FACE","enable","BLEND","contextLost","viewport","bindFramebuffer","FRAMEBUFFER","clearColor","_bgColor","r","g","clear","COLOR_BUFFER_BIT","camera","_shake","renderDisplayObject","displayObject","buffer","setBlendMode","style","createTexture","UNPACK_PREMULTIPLY_ALPHA_WEBGL","NEAREST","mipmap","LINEAR_MIPMAP_LINEAR","NEAREST_MIPMAP_NEAREST","generateMipmap","_powerOf2","blendModesWebGL","modes","ONE","ONE_MINUS_SRC_ALPHA","ADD","SRC_ALPHA","DST_ALPHA","DST_COLOR","SCREEN","OVERLAY","DARKEN","LIGHTEN","COLOR_DODGE","COLOR_BURN","HARD_LIGHT","SOFT_LIGHT","DIFFERENCE","EXCLUSION","HUE","SATURATION","COLOR","LUMINOSITY","blendModeWebGL","blendFunc","maskData","WebGLGraphics","updateGraphics","_webGL","pushStencil","popStencil","stencilStack","reverse","count","graphics","webGLData","bindGraphics","STENCIL_TEST","STENCIL_BUFFER_BIT","level","colorMask","stencilFunc","ALWAYS","stencilOp","KEEP","INVERT","mode","drawElements","TRIANGLE_FAN","indices","UNSIGNED_SHORT","EQUAL","DECR","INCR","TRIANGLE_STRIP","_currentGraphics","complexPrimitiveShader","uniform1f","toArray","uniform2f","uniform3fv","bindBuffer","ARRAY_BUFFER","vertexAttribPointer","FLOAT","ELEMENT_ARRAY_BUFFER","indexBuffer","primitiveShader","pop","maxAttibs","attribState","tempAttribState","stack","defaultShader","stripShader","setAttribs","attribs","attribId","enableVertexAttribArray","disableVertexAttribArray","_currentId","currentShader","vertSize","size","numVerts","numIndices","vertices","positions","colors","lastIndexCount","drawing","currentBatchSize","currentBaseTexture","textures","shaders","sprites","AbstractFilter","vertexBuffer","createBuffer","bufferData","STATIC_DRAW","DYNAMIC_DRAW","sprite","uvs","_uvs","aX","aY","x0","y0","renderTilingSprite","tilingTexture","TextureUvs","h","tilePosition","tileScaleOffset","offsetX","offsetY","scaleX","tileScale","scaleY","TEXTURE0","stride","bufferSubData","subarray","nextTexture","nextBlendMode","nextShader","batchSize","blendSwap","shaderSwap","skip","renderBatch","startIndex","TRIANGLES","deleteBuffer","maxSize","renderSprite","filterStack","texturePool","initShaderBuffers","filterBlock","_filterArea","_previous_stencil_mgr","filter","FilterTexture","padding","frameBuffer","_glFilterTexture","vertexArray","uvBuffer","uvArray","inputTexture","outputTexture","filterPass","applyFilterPass","sizeX","sizeY","currentFilter","colorBuffer","colorArray","createFramebuffer","DEFAULT","framebufferTexture2D","COLOR_ATTACHMENT0","renderBuffer","createRenderbuffer","bindRenderbuffer","RENDERBUFFER","framebufferRenderbuffer","DEPTH_STENCIL_ATTACHMENT","renderbufferStorage","DEPTH_STENCIL","deleteFramebuffer","deleteTexture","CanvasBuffer","clearRect","CanvasMaskManager","save","cacheAlpha","CanvasGraphics","renderGraphicsMask","clip","restore","tintMethod","tintWithMultiply","fillStyle","toString","substr","fillRect","tintWithPerPixel","rgbValues","pixelData","pixels","canHandleAlpha","putImageData","checkInverseAlpha","s1","s2","canUseMultiply","CanvasRenderer","refresh","Phaser","Canvas","getSmoothingPrefix","navigator","isCocoonJS","screencanvas","rgba","removeView","useNew","BaseTextureCache","BaseTextureCacheIdGenerator","BaseTexture","complete","naturalWidth","naturalHeight","imageUrl","forceLoaded","_pixiId","unloadFromGPU","updateSourceImage","newSrc","glTexture","image","crossOrigin","fromCanvas","TextureCacheIdGenerator","FrameCache","TextureSilentFail","noFrame","isTiling","requiresUpdate","setFrame","onBaseTextureLoaded","_updateUvs","tw","th","addTextureToCache","removeTextureFromCache","textureBuffer","renderWebGL","renderCanvas","tempMatrix","updateBase","identity","translate","append","realResolution","getImage","getBase64","getCanvas","toDataURL","webGLPixels","Uint8Array","readPixels","tempCanvas","canvasData","Strip","canvasPadding","drawMode","DrawModes","_vertexBuffer","_initWebGL","_renderStrip","_indexBuffer","_uvBuffer","_colorBuffer","_renderCanvasTriangleStrip","_renderCanvasTriangles","_renderCanvasDrawTriangle","index0","textureSource","textureWidth","textureHeight","u0","u1","u2","v0","v1","v2","paddingX","paddingY","centerX","centerY","normX","normY","dist","beginPath","moveTo","lineTo","closePath","delta","deltaA","deltaB","deltaC","deltaD","deltaE","deltaF","renderStripFlat","strip","fill","updateFrame","n","rawX","rawY","Rope","points","lastPoint","point","amount","total","nextPoint","perp","ratio","perpLength","num","TilingSprite","textureDebug","canvasBuffer","tilePattern","refreshTexture","frameWidth","frameHeight","generateTilingTexture","needsUpdate","createPattern","sessionBlendMode","forcePowerOfTwo","targetWidth","_frame","sourceSizeW","targetHeight","sourceSizeH","trimmed","spriteSourceSizeX","spriteSourceSizeY","strokeStyle","strokeRect","exports","module","define","amd"],"mappings":"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"} \ No newline at end of file +{"version":3,"sources":["pixi.js"],"names":["root","this","PIXI","game","WEBGL_RENDERER","CANVAS_RENDERER","VERSION","_UID","Float32Array","Uint16Array","Uint32Array","ArrayBuffer","Array","PI_2","Math","PI","RAD_TO_DEG","DEG_TO_RAD","RETINA_PREFIX","DisplayObject","position","Point","scale","pivot","rotation","alpha","visible","hitArea","renderable","parent","stage","worldAlpha","worldTransform","Matrix","worldPosition","worldScale","worldRotation","filterArea","_sr","_cr","_bounds","Rectangle","_currentBounds","_mask","_cacheAsBitmap","_cacheIsDirty","prototype","constructor","destroy","children","i","length","_destroyCachedSprite","updateTransform","p","world","a","b","c","d","tx","ty","pt","wt","rotationCache","sin","cos","x","y","set","sqrt","atan2","transformCallback","call","transformCallbackContext","setStageReference","preUpdate","generateTexture","resolution","scaleMode","renderer","bounds","getLocalBounds","renderTexture","RenderTexture","width","height","_tempMatrix","render","updateCache","_generateCachedSprite","toGlobal","apply","toLocal","from","applyInverse","_renderCachedSprite","renderSession","_cachedSprite","gl","Sprite","_renderWebGL","_renderCanvas","max","ceil","texture","resize","tempFilters","_filters","filters","anchor","displayObjectUpdateTransform","Object","defineProperties","get","value","worldVisible","item","mask","isMask","isArray","passes","filterPasses","j","push","_filterBlock","target","blendMode","blendModes","MULTIPLY","NORMAL","cacheAsBitmap","DisplayObjectContainer","ignoreChildInput","create","defineProperty","_width","_height","addChild","child","addChildAt","index","removeChild","splice","Error","swapChildren","child2","index1","getChildIndex","index2","indexOf","setChildIndex","currentIndex","getChildAt","removeChildAt","removeStageReference","undefined","removeChildren","beginIndex","endIndex","begin","end","range","removed","displayObjectContainerUpdateTransform","getBounds","EmptyRectangle","childBounds","childMaxX","childMaxY","minX","Infinity","minY","maxX","maxY","childVisible","matrixCache","identityMatrix","spriteBatch","flush","filterManager","pushFilter","stop","maskManager","pushMask","start","popMask","popFilter","Texture","emptyTexture","tint","cachedTint","tintedTexture","shader","exists","baseTexture","hasLoaded","onTextureUpdate","frame","setTexture","destroyBase","skipRender","valid","matrix","w0","w1","h0","h1","temp","x1","y1","x2","y2","x3","y3","x4","y4","crop","currentBlendMode","context","globalCompositeOperation","blendModesCanvas","globalAlpha","smoothProperty","scaleModes","LINEAR","dx","trim","dy","shakeX","shakeY","roundPixels","setTransform","cw","ch","requiresReTint","CanvasTinter","getTintedTexture","drawImage","cx","cy","source","SpriteBatch","textureThing","ready","initWebGL","fastSpriteBatch","WebGLFastSpriteBatch","setContext","shaderManager","setShader","fastShader","transform","isRotated","childTransform","hex2rgb","hex","rgb2hex","rgb","canUseNewCanvasBlendModes","document","pngHead","pngEnd","magenta","Image","src","yellow","canvas","CanvasPool","getContext","getImageData","data","remove","getNextPowerOfTwo","number","result","isPowerOfTwo","idx","getFirst","container","createElement","pool","removeByCanvas","getTotal","getFree","initDefaultShaders","CompileVertexShader","shaderSrc","_CompileShader","VERTEX_SHADER","CompileFragmentShader","FRAGMENT_SHADER","shaderType","join","createShader","shaderSource","compileShader","getShaderParameter","COMPILE_STATUS","window","console","log","getShaderInfoLog","compileProgram","vertexSrc","fragmentSrc","fragmentShader","vertexShader","shaderProgram","createProgram","attachShader","linkProgram","getProgramParameter","LINK_STATUS","getProgramInfoLog","PixiShader","program","textureCount","firstRun","dirty","attributes","init","defaultVertexSrc","useProgram","uSampler","getUniformLocation","projectionVector","offsetVector","dimensions","aVertexPosition","getAttribLocation","aTextureCoord","colorAttribute","key","uniforms","uniformLocation","initUniforms","uniform","type","_init","initSampler2D","glMatrix","glValueLength","glFunc","uniformMatrix2fv","uniformMatrix3fv","uniformMatrix4fv","activeTexture","bindTexture","TEXTURE_2D","_glTextures","id","textureData","magFilter","minFilter","wrapS","CLAMP_TO_EDGE","wrapT","format","LUMINANCE","RGBA","repeat","REPEAT","pixelStorei","UNPACK_FLIP_Y_WEBGL","flipY","border","texImage2D","UNSIGNED_BYTE","texParameteri","TEXTURE_MAG_FILTER","TEXTURE_MIN_FILTER","TEXTURE_WRAP_S","TEXTURE_WRAP_T","uniform1i","syncUniforms","transpose","z","w","_dirty","instances","updateTexture","deleteProgram","PixiFastShader","uMatrix","aPositionCoord","aScale","aRotation","StripShader","translationMatrix","attribute","PrimitiveShader","tintColor","ComplexPrimitiveShader","color","glContexts","WebGLRenderer","defaultRenderer","transparent","autoResize","preserveDrawingBuffer","clearBeforeRender","view","_contextOptions","antialias","premultipliedAlpha","stencil","projection","offset","WebGLShaderManager","WebGLSpriteBatch","WebGLMaskManager","WebGLFilterManager","stencilManager","WebGLStencilManager","blendModeManager","WebGLBlendModeManager","drawCount","initContext","mapBlendModes","glContextId","disable","DEPTH_TEST","CULL_FACE","enable","BLEND","contextLost","viewport","bindFramebuffer","FRAMEBUFFER","clearColor","_bgColor","r","g","clear","COLOR_BUFFER_BIT","camera","_shake","renderDisplayObject","displayObject","buffer","setBlendMode","style","createTexture","UNPACK_PREMULTIPLY_ALPHA_WEBGL","NEAREST","mipmap","LINEAR_MIPMAP_LINEAR","NEAREST_MIPMAP_NEAREST","generateMipmap","_powerOf2","blendModesWebGL","modes","ONE","ONE_MINUS_SRC_ALPHA","ADD","SRC_ALPHA","DST_ALPHA","DST_COLOR","SCREEN","OVERLAY","DARKEN","LIGHTEN","COLOR_DODGE","COLOR_BURN","HARD_LIGHT","SOFT_LIGHT","DIFFERENCE","EXCLUSION","HUE","SATURATION","COLOR","LUMINOSITY","blendModeWebGL","blendFunc","maskData","WebGLGraphics","updateGraphics","_webGL","pushStencil","popStencil","stencilStack","reverse","count","graphics","webGLData","bindGraphics","STENCIL_TEST","STENCIL_BUFFER_BIT","level","colorMask","stencilFunc","ALWAYS","stencilOp","KEEP","INVERT","mode","drawElements","TRIANGLE_FAN","indices","UNSIGNED_SHORT","EQUAL","DECR","INCR","TRIANGLE_STRIP","_currentGraphics","complexPrimitiveShader","uniform1f","toArray","uniform2f","uniform3fv","bindBuffer","ARRAY_BUFFER","vertexAttribPointer","FLOAT","ELEMENT_ARRAY_BUFFER","indexBuffer","primitiveShader","pop","maxAttibs","attribState","tempAttribState","stack","defaultShader","stripShader","setAttribs","attribs","attribId","enableVertexAttribArray","disableVertexAttribArray","_currentId","currentShader","vertSize","size","numVerts","numIndices","vertices","positions","colors","lastIndexCount","drawing","currentBatchSize","currentBaseTexture","textures","shaders","sprites","AbstractFilter","vertexBuffer","createBuffer","bufferData","STATIC_DRAW","DYNAMIC_DRAW","sprite","uvs","_uvs","aX","aY","x0","y0","renderTilingSprite","tilingTexture","TextureUvs","h","tilePosition","tileScaleOffset","offsetX","offsetY","scaleX","tileScale","scaleY","TEXTURE0","stride","bufferSubData","subarray","nextTexture","nextBlendMode","nextShader","batchSize","blendSwap","shaderSwap","skip","renderBatch","startIndex","TRIANGLES","deleteBuffer","maxSize","renderSprite","filterStack","texturePool","initShaderBuffers","filterBlock","_filterArea","_previous_stencil_mgr","filter","FilterTexture","padding","frameBuffer","_glFilterTexture","vertexArray","uvBuffer","uvArray","inputTexture","outputTexture","filterPass","applyFilterPass","sizeX","sizeY","currentFilter","colorBuffer","colorArray","createFramebuffer","DEFAULT","framebufferTexture2D","COLOR_ATTACHMENT0","renderBuffer","createRenderbuffer","bindRenderbuffer","RENDERBUFFER","framebufferRenderbuffer","DEPTH_STENCIL_ATTACHMENT","renderbufferStorage","DEPTH_STENCIL","deleteFramebuffer","deleteTexture","CanvasBuffer","clearRect","CanvasMaskManager","save","cacheAlpha","CanvasGraphics","renderGraphicsMask","clip","restore","tintMethod","tintWithMultiply","fillStyle","toString","substr","fillRect","tintWithPerPixel","rgbValues","pixelData","pixels","canHandleAlpha","putImageData","checkInverseAlpha","s1","s2","canUseMultiply","CanvasRenderer","refresh","Phaser","Canvas","getSmoothingPrefix","navigator","isCocoonJS","screencanvas","rgba","removeView","useNew","BaseTexture","complete","naturalWidth","naturalHeight","forceLoaded","unloadFromGPU","updateSourceImage","newSrc","warn","glTexture","fromCanvas","TextureSilentFail","noFrame","isTiling","requiresUpdate","setFrame","onBaseTextureLoaded","_updateUvs","tw","th","textureBuffer","renderWebGL","renderCanvas","tempMatrix","updateBase","identity","translate","append","realResolution","getImage","image","getBase64","getCanvas","toDataURL","webGLPixels","Uint8Array","readPixels","tempCanvas","canvasData","Strip","canvasPadding","drawMode","DrawModes","_vertexBuffer","_initWebGL","_renderStrip","_indexBuffer","_uvBuffer","_colorBuffer","_renderCanvasTriangleStrip","_renderCanvasTriangles","_renderCanvasDrawTriangle","index0","textureSource","textureWidth","textureHeight","u0","u1","u2","v0","v1","v2","paddingX","paddingY","centerX","centerY","normX","normY","dist","beginPath","moveTo","lineTo","closePath","delta","deltaA","deltaB","deltaC","deltaD","deltaE","deltaF","renderStripFlat","strip","fill","updateFrame","n","rawX","rawY","Rope","points","lastPoint","point","amount","total","nextPoint","perp","ratio","perpLength","num","TilingSprite","textureDebug","canvasBuffer","tilePattern","refreshTexture","frameWidth","frameHeight","generateTilingTexture","needsUpdate","createPattern","sessionBlendMode","forcePowerOfTwo","targetWidth","_frame","sourceSizeW","targetHeight","sourceSizeH","trimmed","spriteSourceSizeX","spriteSourceSizeY","strokeStyle","strokeRect","exports","module","define","amd"],"mappings":"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","file":"pixi.min.js"} \ No newline at end of file diff --git a/build/custom/pixi.min.js b/build/custom/pixi.min.js index b0f1edf91..52b75c763 100644 --- a/build/custom/pixi.min.js +++ b/build/custom/pixi.min.js @@ -1,6 +1,6 @@ -/* Phaser v2.5.0 PIXI Build - http://phaser.io - @photonstorm - (c) 2016 Photon Storm Ltd. */ +/* Phaser v2.5.1 PIXI Build - http://phaser.io - @photonstorm - (c) 2016 Photon Storm Ltd. */ -(function(){var a=this,b=b||{};return b.game=null,b.WEBGL_RENDERER=0,b.CANVAS_RENDERER=1,b.VERSION="v2.2.9",b._UID=0,"undefined"!=typeof Float32Array?(b.Float32Array=Float32Array,b.Uint16Array=Uint16Array,b.Uint32Array=Uint32Array,b.ArrayBuffer=ArrayBuffer):(b.Float32Array=Array,b.Uint16Array=Array),b.PI_2=2*Math.PI,b.RAD_TO_DEG=180/Math.PI,b.DEG_TO_RAD=Math.PI/180,b.RETINA_PREFIX="@2x",b.DisplayObject=function(){this.position=new b.Point(0,0),this.scale=new b.Point(1,1),this.pivot=new b.Point(0,0),this.rotation=0,this.alpha=1,this.visible=!0,this.hitArea=null,this.renderable=!1,this.parent=null,this.stage=null,this.worldAlpha=1,this.worldTransform=new b.Matrix,this.worldPosition=new b.Point(0,0),this.worldScale=new b.Point(1,1),this.worldRotation=0,this._sr=0,this._cr=1,this.filterArea=null,this._bounds=new b.Rectangle(0,0,1,1),this._currentBounds=null,this._mask=null,this._cacheAsBitmap=!1,this._cacheIsDirty=!1},b.DisplayObject.prototype.constructor=b.DisplayObject,b.DisplayObject.prototype.destroy=function(){if(this.children){for(var a=this.children.length;a--;)this.children[a].destroy();this.children=[]}this.hitArea=null,this.parent=null,this.stage=null,this.worldTransform=null,this.filterArea=null,this._bounds=null,this._currentBounds=null,this._mask=null,this.renderable=!1,this._destroyCachedSprite()},Object.defineProperty(b.DisplayObject.prototype,"worldVisible",{get:function(){var a=this;do{if(!a.visible)return!1;a=a.parent}while(a);return!0}}),Object.defineProperty(b.DisplayObject.prototype,"mask",{get:function(){return this._mask},set:function(a){this._mask&&(this._mask.isMask=!1),this._mask=a,this._mask&&(this._mask.isMask=!0)}}),Object.defineProperty(b.DisplayObject.prototype,"filters",{get:function(){return this._filters},set:function(a){if(a){for(var c=[],d=0;d=0&&b<=this.children.length)return a.parent&&a.parent.removeChild(a),a.parent=this,this.children.splice(b,0,a),this.stage&&a.setStageReference(this.stage),a;throw new Error(a+"addChildAt: The index "+b+" supplied is out of bounds "+this.children.length)},b.DisplayObjectContainer.prototype.swapChildren=function(a,b){if(a!==b){var c=this.getChildIndex(a),d=this.getChildIndex(b);if(0>c||0>d)throw new Error("swapChildren: Both the supplied DisplayObjects must be a child of the caller.");this.children[c]=b,this.children[d]=a}},b.DisplayObjectContainer.prototype.getChildIndex=function(a){var b=this.children.indexOf(a);if(-1===b)throw new Error("The supplied DisplayObject must be a child of the caller");return b},b.DisplayObjectContainer.prototype.setChildIndex=function(a,b){if(0>b||b>=this.children.length)throw new Error("The supplied index is out of bounds");var c=this.getChildIndex(a);this.children.splice(c,1),this.children.splice(b,0,a)},b.DisplayObjectContainer.prototype.getChildAt=function(a){if(0>a||a>=this.children.length)throw new Error("getChildAt: Supplied index "+a+" does not exist in the child list, or the supplied DisplayObject must be a child of the caller");return this.children[a]},b.DisplayObjectContainer.prototype.removeChild=function(a){var b=this.children.indexOf(a);if(-1!==b)return this.removeChildAt(b)},b.DisplayObjectContainer.prototype.removeChildAt=function(a){var b=this.getChildAt(a);return this.stage&&b.removeStageReference(),b.parent=void 0,this.children.splice(a,1),b},b.DisplayObjectContainer.prototype.removeChildren=function(a,b){var c=a||0,d="number"==typeof b?b:this.children.length,e=d-c;if(e>0&&d>=e){for(var f=this.children.splice(c,e),g=0;gc?g:c,h=h>d?h:d)}if(!i)return b.EmptyRectangle;var l=this._bounds;return l.x=e,l.y=f,l.width=g-e,l.height=h-f,l},b.DisplayObjectContainer.prototype.getLocalBounds=function(){var a=this.worldTransform;this.worldTransform=b.identityMatrix;for(var c=0;ci){i*=-1;var s=d;d=-e,e=-s}if(0>l){l*=-1;var s=f;f=-g,g=-s}q=i*e+m,o=i*d+m,r=l*g+n,p=l*f+n}else{var t=i*e+k*g+m,u=l*g+j*e+n,v=i*d+k*g+m,w=l*g+j*d+n,x=i*d+k*f+m,y=l*f+j*d+n,z=i*e+k*f+m,A=l*f+j*e+n;q=q>t?t:q,q=q>v?v:q,q=q>x?x:q,q=q>z?z:q,r=r>u?u:r,r=r>w?w:r,r=r>y?y:r,r=r>A?A:r,o=t>o?t:o,o=v>o?v:o,o=x>o?x:o,o=z>o?z:o,p=u>p?u:p,p=w>p?w:p,p=y>p?y:p,p=A>p?A:p}var B=this._bounds;return B.x=q,B.width=o-q,B.y=r,B.height=p-r,this._currentBounds=B,B},b.Sprite.prototype._renderWebGL=function(a,b){if(this.visible&&!(this.alpha<=0)&&this.renderable){var c=this.worldTransform;if(b&&(c=b),this._mask||this._filters){var d=a.spriteBatch;this._filters&&(d.flush(),a.filterManager.pushFilter(this._filterBlock)),this._mask&&(d.stop(),a.maskManager.pushMask(this.mask,a),d.start()),d.render(this);for(var e=0;e>16&255)/255,(a>>8&255)/255,(255&a)/255]},b.rgb2hex=function(a){return(255*a[0]<<16)+(255*a[1]<<8)+255*a[2]},b.canUseNewCanvasBlendModes=function(){if(void 0===document)return!1;var a="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAQAAAABAQMAAADD8p2OAAAAA1BMVEX/",c="AAAACklEQVQI12NgAAAAAgAB4iG8MwAAAABJRU5ErkJggg==",d=new Image;d.src=a+"AP804Oa6"+c;var e=new Image;e.src=a+"/wCKxvRF"+c;var f=b.CanvasPool.create(this,6,1),g=f.getContext("2d");if(g.globalCompositeOperation="multiply",g.drawImage(d,0,0),g.drawImage(e,2,0),!g.getImageData(2,0,1,1))return!1;var h=g.getImageData(2,0,1,1).data;return b.CanvasPool.remove(this),255===h[0]&&0===h[1]&&0===h[2]},b.getNextPowerOfTwo=function(a){if(a>0&&0===(a&a-1))return a;for(var b=1;a>b;)b<<=1;return b},b.isPowerOfTwo=function(a,b){return a>0&&0===(a&a-1)&&b>0&&0===(b&b-1)},b.CanvasPool={create:function(a,c,d){var e,f=b.CanvasPool.getFirst();if(-1===f){var g={parent:a,canvas:document.createElement("canvas")};b.CanvasPool.pool.push(g),e=g.canvas}else b.CanvasPool.pool[f].parent=a,e=b.CanvasPool.pool[f].canvas;return void 0!==c&&(e.width=c,e.height=d),e},getFirst:function(){for(var a=b.CanvasPool.pool,c=0;cd;d+=6,e+=4)this.indices[d+0]=e+0,this.indices[d+1]=e+1,this.indices[d+2]=e+2,this.indices[d+3]=e+0,this.indices[d+4]=e+2,this.indices[d+5]=e+3;this.drawing=!1,this.currentBatchSize=0,this.currentBaseTexture=null,this.dirty=!0,this.textures=[],this.blendModes=[],this.shaders=[],this.sprites=[],this.defaultShader=new b.AbstractFilter(["precision lowp float;","varying vec2 vTextureCoord;","varying vec4 vColor;","uniform sampler2D uSampler;","void main(void) {"," gl_FragColor = texture2D(uSampler, vTextureCoord) * vColor ;","}"])},b.WebGLSpriteBatch.prototype.setContext=function(a){this.gl=a,this.vertexBuffer=a.createBuffer(),this.indexBuffer=a.createBuffer(),a.bindBuffer(a.ELEMENT_ARRAY_BUFFER,this.indexBuffer),a.bufferData(a.ELEMENT_ARRAY_BUFFER,this.indices,a.STATIC_DRAW),a.bindBuffer(a.ARRAY_BUFFER,this.vertexBuffer),a.bufferData(a.ARRAY_BUFFER,this.vertices,a.DYNAMIC_DRAW),this.currentBlendMode=99999;var c=new b.PixiShader(a);c.fragmentSrc=this.defaultShader.fragmentSrc,c.uniforms={},c.init(),this.defaultShader.shaders[a.id]=c},b.WebGLSpriteBatch.prototype.begin=function(a){this.renderSession=a,this.shader=this.renderSession.shaderManager.defaultShader,this.start()},b.WebGLSpriteBatch.prototype.end=function(){this.flush()},b.WebGLSpriteBatch.prototype.render=function(a,b){var c=a.texture,d=a.worldTransform;b&&(d=b),this.currentBatchSize>=this.size&&(this.flush(),this.currentBaseTexture=c.baseTexture);var e=c._uvs;if(e){var f,g,h,i,j=a.anchor.x,k=a.anchor.y;if(c.trim){var l=c.trim;g=l.x-j*l.width,f=g+c.crop.width,i=l.y-k*l.height,h=i+c.crop.height}else f=c.frame.width*(1-j),g=c.frame.width*-j,h=c.frame.height*(1-k),i=c.frame.height*-k;var m=4*this.currentBatchSize*this.vertSize,n=c.baseTexture.resolution,o=d.a/n,p=d.b/n,q=d.c/n,r=d.d/n,s=d.tx,t=d.ty,u=this.colors,v=this.positions;this.renderSession.roundPixels?(v[m]=o*g+q*i+s|0,v[m+1]=r*i+p*g+t|0,v[m+5]=o*f+q*i+s|0,v[m+6]=r*i+p*f+t|0,v[m+10]=o*f+q*h+s|0,v[m+11]=r*h+p*f+t|0,v[m+15]=o*g+q*h+s|0,v[m+16]=r*h+p*g+t|0):(v[m]=o*g+q*i+s,v[m+1]=r*i+p*g+t,v[m+5]=o*f+q*i+s,v[m+6]=r*i+p*f+t,v[m+10]=o*f+q*h+s,v[m+11]=r*h+p*f+t,v[m+15]=o*g+q*h+s,v[m+16]=r*h+p*g+t),v[m+2]=e.x0,v[m+3]=e.y0,v[m+7]=e.x1,v[m+8]=e.y1,v[m+12]=e.x2,v[m+13]=e.y2,v[m+17]=e.x3,v[m+18]=e.y3;var w=a.tint;u[m+4]=u[m+9]=u[m+14]=u[m+19]=(w>>16)+(65280&w)+((255&w)<<16)+(255*a.worldAlpha<<24),this.sprites[this.currentBatchSize++]=a}},b.WebGLSpriteBatch.prototype.renderTilingSprite=function(a){var c=a.tilingTexture;this.currentBatchSize>=this.size&&(this.flush(),this.currentBaseTexture=c.baseTexture),a._uvs||(a._uvs=new b.TextureUvs);var d=a._uvs,e=c.baseTexture.width,f=c.baseTexture.height;a.tilePosition.x%=e*a.tileScaleOffset.x,a.tilePosition.y%=f*a.tileScaleOffset.y;var g=a.tilePosition.x/(e*a.tileScaleOffset.x),h=a.tilePosition.y/(f*a.tileScaleOffset.y),i=a.width/e/(a.tileScale.x*a.tileScaleOffset.x),j=a.height/f/(a.tileScale.y*a.tileScaleOffset.y);d.x0=0-g,d.y0=0-h,d.x1=1*i-g,d.y1=0-h,d.x2=1*i-g,d.y2=1*j-h,d.x3=0-g,d.y3=1*j-h;var k=a.tint,l=(k>>16)+(65280&k)+((255&k)<<16)+(255*a.worldAlpha<<24),m=this.positions,n=this.colors,o=a.width,p=a.height,q=a.anchor.x,r=a.anchor.y,s=o*(1-q),t=o*-q,u=p*(1-r),v=p*-r,w=4*this.currentBatchSize*this.vertSize,x=c.baseTexture.resolution,y=a.worldTransform,z=y.a/x,A=y.b/x,B=y.c/x,C=y.d/x,D=y.tx,E=y.ty;m[w++]=z*t+B*v+D,m[w++]=C*v+A*t+E,m[w++]=d.x0,m[w++]=d.y0,n[w++]=l,m[w++]=z*s+B*v+D,m[w++]=C*v+A*s+E,m[w++]=d.x1,m[w++]=d.y1,n[w++]=l,m[w++]=z*s+B*u+D,m[w++]=C*u+A*s+E,m[w++]=d.x2,m[w++]=d.y2,n[w++]=l,m[w++]=z*t+B*u+D,m[w++]=C*u+A*t+E,m[w++]=d.x3,m[w++]=d.y3,n[w++]=l,this.sprites[this.currentBatchSize++]=a},b.WebGLSpriteBatch.prototype.flush=function(){if(0!==this.currentBatchSize){var a,c=this.gl;if(this.dirty){this.dirty=!1,c.activeTexture(c.TEXTURE0),c.bindBuffer(c.ARRAY_BUFFER,this.vertexBuffer),c.bindBuffer(c.ELEMENT_ARRAY_BUFFER,this.indexBuffer),a=this.defaultShader.shaders[c.id];var d=4*this.vertSize;c.vertexAttribPointer(a.aVertexPosition,2,c.FLOAT,!1,d,0),c.vertexAttribPointer(a.aTextureCoord,2,c.FLOAT,!1,d,8),c.vertexAttribPointer(a.colorAttribute,4,c.UNSIGNED_BYTE,!0,d,16)}if(this.currentBatchSize>.5*this.size)c.bufferSubData(c.ARRAY_BUFFER,0,this.vertices);else{var e=this.positions.subarray(0,4*this.currentBatchSize*this.vertSize);c.bufferSubData(c.ARRAY_BUFFER,0,e)}for(var f,g,h,i,j=0,k=0,l=null,m=this.renderSession.blendModeManager.currentBlendMode,n=null,o=!1,p=!1,q=0,r=this.currentBatchSize;r>q;q++){i=this.sprites[q],f=i.tilingTexture?i.tilingTexture.baseTexture:i.texture.baseTexture,g=i.blendMode,h=i.shader||this.defaultShader,o=m!==g,p=n!==h;var s=f.skipRender;if(s&&i.children.length>0&&(s=!1),(l!==f&&!s||o||p)&&(this.renderBatch(l,j,k),k=q,j=0,l=f,o&&(m=g,this.renderSession.blendModeManager.setBlendMode(m)),p)){n=h,a=n.shaders[c.id],a||(a=new b.PixiShader(c),a.fragmentSrc=n.fragmentSrc,a.uniforms=n.uniforms,a.init(),n.shaders[c.id]=a),this.renderSession.shaderManager.setShader(a),a.dirty&&a.syncUniforms();var t=this.renderSession.projection;c.uniform2f(a.projectionVector,t.x,t.y);var u=this.renderSession.offset;c.uniform2f(a.offsetVector,u.x,u.y)}j++}this.renderBatch(l,j,k),this.currentBatchSize=0}},b.WebGLSpriteBatch.prototype.renderBatch=function(a,b,c){if(0!==b){var d=this.gl;if(a._dirty[d.id]){if(!this.renderSession.renderer.updateTexture(a))return}else d.bindTexture(d.TEXTURE_2D,a._glTextures[d.id]);d.drawElements(d.TRIANGLES,6*b,d.UNSIGNED_SHORT,6*c*2),this.renderSession.drawCount++}},b.WebGLSpriteBatch.prototype.stop=function(){this.flush(),this.dirty=!0},b.WebGLSpriteBatch.prototype.start=function(){this.dirty=!0},b.WebGLSpriteBatch.prototype.destroy=function(){this.vertices=null,this.indices=null,this.gl.deleteBuffer(this.vertexBuffer),this.gl.deleteBuffer(this.indexBuffer),this.currentBaseTexture=null,this.gl=null},b.WebGLFastSpriteBatch=function(a){this.vertSize=10,this.maxSize=6e3,this.size=this.maxSize;var c=4*this.size*this.vertSize,d=6*this.maxSize;this.vertices=new b.Float32Array(c),this.indices=new b.Uint16Array(d),this.vertexBuffer=null,this.indexBuffer=null,this.lastIndexCount=0;for(var e=0,f=0;d>e;e+=6,f+=4)this.indices[e+0]=f+0,this.indices[e+1]=f+1,this.indices[e+2]=f+2,this.indices[e+3]=f+0,this.indices[e+4]=f+2,this.indices[e+5]=f+3;this.drawing=!1,this.currentBatchSize=0,this.currentBaseTexture=null,this.currentBlendMode=0,this.renderSession=null,this.shader=null,this.matrix=null,this.setContext(a)},b.WebGLFastSpriteBatch.prototype.constructor=b.WebGLFastSpriteBatch,b.WebGLFastSpriteBatch.prototype.setContext=function(a){this.gl=a,this.vertexBuffer=a.createBuffer(),this.indexBuffer=a.createBuffer(),a.bindBuffer(a.ELEMENT_ARRAY_BUFFER,this.indexBuffer),a.bufferData(a.ELEMENT_ARRAY_BUFFER,this.indices,a.STATIC_DRAW),a.bindBuffer(a.ARRAY_BUFFER,this.vertexBuffer),a.bufferData(a.ARRAY_BUFFER,this.vertices,a.DYNAMIC_DRAW)},b.WebGLFastSpriteBatch.prototype.begin=function(a,b){this.renderSession=b,this.shader=this.renderSession.shaderManager.fastShader,this.matrix=a.worldTransform.toArray(!0),this.start()},b.WebGLFastSpriteBatch.prototype.end=function(){this.flush()},b.WebGLFastSpriteBatch.prototype.render=function(a){var b=a.children,c=b[0];if(c.texture._uvs){this.currentBaseTexture=c.texture.baseTexture,c.blendMode!==this.renderSession.blendModeManager.currentBlendMode&&(this.flush(),this.renderSession.blendModeManager.setBlendMode(c.blendMode));for(var d=0,e=b.length;e>d;d++)this.renderSprite(b[d]);this.flush()}},b.WebGLFastSpriteBatch.prototype.renderSprite=function(a){if(a.visible&&(a.texture.baseTexture===this.currentBaseTexture||a.texture.baseTexture.skipRender||(this.flush(),this.currentBaseTexture=a.texture.baseTexture,a.texture._uvs))){var b,c,d,e,f,g,h,i,j=this.vertices;if(b=a.texture._uvs,c=a.texture.frame.width,d=a.texture.frame.height,a.texture.trim){var k=a.texture.trim;f=k.x-a.anchor.x*k.width,e=f+a.texture.crop.width,h=k.y-a.anchor.y*k.height,g=h+a.texture.crop.height}else e=a.texture.frame.width*(1-a.anchor.x),f=a.texture.frame.width*-a.anchor.x,g=a.texture.frame.height*(1-a.anchor.y),h=a.texture.frame.height*-a.anchor.y;i=4*this.currentBatchSize*this.vertSize,j[i++]=f,j[i++]=h,j[i++]=a.position.x,j[i++]=a.position.y,j[i++]=a.scale.x,j[i++]=a.scale.y,j[i++]=a.rotation,j[i++]=b.x0,j[i++]=b.y1,j[i++]=a.alpha,j[i++]=e,j[i++]=h,j[i++]=a.position.x,j[i++]=a.position.y,j[i++]=a.scale.x,j[i++]=a.scale.y,j[i++]=a.rotation,j[i++]=b.x1,j[i++]=b.y1,j[i++]=a.alpha,j[i++]=e,j[i++]=g,j[i++]=a.position.x,j[i++]=a.position.y,j[i++]=a.scale.x,j[i++]=a.scale.y,j[i++]=a.rotation,j[i++]=b.x2,j[i++]=b.y2,j[i++]=a.alpha,j[i++]=f,j[i++]=g,j[i++]=a.position.x,j[i++]=a.position.y,j[i++]=a.scale.x,j[i++]=a.scale.y,j[i++]=a.rotation,j[i++]=b.x3,j[i++]=b.y3,j[i++]=a.alpha,this.currentBatchSize++,this.currentBatchSize>=this.size&&this.flush()}},b.WebGLFastSpriteBatch.prototype.flush=function(){if(0!==this.currentBatchSize){var a=this.gl;if(this.currentBaseTexture._glTextures[a.id]||this.renderSession.renderer.updateTexture(this.currentBaseTexture,a),a.bindTexture(a.TEXTURE_2D,this.currentBaseTexture._glTextures[a.id]),this.currentBatchSize>.5*this.size)a.bufferSubData(a.ARRAY_BUFFER,0,this.vertices);else{var b=this.vertices.subarray(0,4*this.currentBatchSize*this.vertSize);a.bufferSubData(a.ARRAY_BUFFER,0,b)}a.drawElements(a.TRIANGLES,6*this.currentBatchSize,a.UNSIGNED_SHORT,0),this.currentBatchSize=0,this.renderSession.drawCount++}},b.WebGLFastSpriteBatch.prototype.stop=function(){this.flush()},b.WebGLFastSpriteBatch.prototype.start=function(){var a=this.gl;a.activeTexture(a.TEXTURE0),a.bindBuffer(a.ARRAY_BUFFER,this.vertexBuffer),a.bindBuffer(a.ELEMENT_ARRAY_BUFFER,this.indexBuffer);var b=this.renderSession.projection;a.uniform2f(this.shader.projectionVector,b.x,b.y),a.uniformMatrix3fv(this.shader.uMatrix,!1,this.matrix);var c=4*this.vertSize;a.vertexAttribPointer(this.shader.aVertexPosition,2,a.FLOAT,!1,c,0),a.vertexAttribPointer(this.shader.aPositionCoord,2,a.FLOAT,!1,c,8),a.vertexAttribPointer(this.shader.aScale,2,a.FLOAT,!1,c,16),a.vertexAttribPointer(this.shader.aRotation,1,a.FLOAT,!1,c,24),a.vertexAttribPointer(this.shader.aTextureCoord,2,a.FLOAT,!1,c,28),a.vertexAttribPointer(this.shader.colorAttribute,1,a.FLOAT,!1,c,36)},b.WebGLFilterManager=function(){this.filterStack=[],this.offsetX=0,this.offsetY=0},b.WebGLFilterManager.prototype.constructor=b.WebGLFilterManager,b.WebGLFilterManager.prototype.setContext=function(a){this.gl=a,this.texturePool=[],this.initShaderBuffers()},b.WebGLFilterManager.prototype.begin=function(a,b){this.renderSession=a,this.defaultShader=a.shaderManager.defaultShader;var c=this.renderSession.projection;this.width=2*c.x,this.height=2*-c.y,this.buffer=b},b.WebGLFilterManager.prototype.pushFilter=function(a){var c=this.gl,d=this.renderSession.projection,e=this.renderSession.offset;a._filterArea=a.target.filterArea||a.target.getBounds(),a._previous_stencil_mgr=this.renderSession.stencilManager,this.renderSession.stencilManager=new b.WebGLStencilManager,this.renderSession.stencilManager.setContext(c),c.disable(c.STENCIL_TEST),this.filterStack.push(a);var f=a.filterPasses[0];this.offsetX+=a._filterArea.x,this.offsetY+=a._filterArea.y;var g=this.texturePool.pop();g?g.resize(this.width*this.renderSession.resolution,this.height*this.renderSession.resolution):g=new b.FilterTexture(this.gl,this.width*this.renderSession.resolution,this.height*this.renderSession.resolution),c.bindTexture(c.TEXTURE_2D,g.texture);var h=a._filterArea,i=f.padding;h.x-=i,h.y-=i,h.width+=2*i,h.height+=2*i,h.x<0&&(h.x=0),h.width>this.width&&(h.width=this.width),h.y<0&&(h.y=0),h.height>this.height&&(h.height=this.height),c.bindFramebuffer(c.FRAMEBUFFER,g.frameBuffer),c.viewport(0,0,h.width*this.renderSession.resolution,h.height*this.renderSession.resolution),d.x=h.width/2,d.y=-h.height/2,e.x=-h.x,e.y=-h.y,c.colorMask(!0,!0,!0,!0),c.clearColor(0,0,0,0),c.clear(c.COLOR_BUFFER_BIT),a._glFilterTexture=g},b.WebGLFilterManager.prototype.popFilter=function(){var a=this.gl,c=this.filterStack.pop(),d=c._filterArea,e=c._glFilterTexture,f=this.renderSession.projection,g=this.renderSession.offset;if(c.filterPasses.length>1){a.viewport(0,0,d.width*this.renderSession.resolution,d.height*this.renderSession.resolution),a.bindBuffer(a.ARRAY_BUFFER,this.vertexBuffer),this.vertexArray[0]=0,this.vertexArray[1]=d.height,this.vertexArray[2]=d.width,this.vertexArray[3]=d.height,this.vertexArray[4]=0,this.vertexArray[5]=0,this.vertexArray[6]=d.width,this.vertexArray[7]=0,a.bufferSubData(a.ARRAY_BUFFER,0,this.vertexArray),a.bindBuffer(a.ARRAY_BUFFER,this.uvBuffer),this.uvArray[2]=d.width/this.width,this.uvArray[5]=d.height/this.height,this.uvArray[6]=d.width/this.width,this.uvArray[7]=d.height/this.height,a.bufferSubData(a.ARRAY_BUFFER,0,this.uvArray);var h=e,i=this.texturePool.pop();i||(i=new b.FilterTexture(this.gl,this.width*this.renderSession.resolution,this.height*this.renderSession.resolution)),i.resize(this.width*this.renderSession.resolution,this.height*this.renderSession.resolution),a.bindFramebuffer(a.FRAMEBUFFER,i.frameBuffer),a.clear(a.COLOR_BUFFER_BIT),a.disable(a.BLEND);for(var j=0;j0?a.enable(a.STENCIL_TEST):a.disable(a.STENCIL_TEST),this.applyFilterPass(m,d,n,o),this.texturePool.push(e),c._glFilterTexture=null},b.WebGLFilterManager.prototype.applyFilterPass=function(a,c,d,e){var f=this.gl,g=a.shaders[f.id];g||(g=new b.PixiShader(f),g.fragmentSrc=a.fragmentSrc,g.uniforms=a.uniforms,g.init(),a.shaders[f.id]=g),this.renderSession.shaderManager.setShader(g),f.uniform2f(g.projectionVector,d/2,-e/2),f.uniform2f(g.offsetVector,0,0),a.uniforms.dimensions&&(a.uniforms.dimensions.value[0]=this.width,a.uniforms.dimensions.value[1]=this.height,a.uniforms.dimensions.value[2]=this.vertexArray[0],a.uniforms.dimensions.value[3]=this.vertexArray[5]),g.syncUniforms(),f.bindBuffer(f.ARRAY_BUFFER,this.vertexBuffer),f.vertexAttribPointer(g.aVertexPosition,2,f.FLOAT,!1,0,0),f.bindBuffer(f.ARRAY_BUFFER,this.uvBuffer),f.vertexAttribPointer(g.aTextureCoord,2,f.FLOAT,!1,0,0),f.bindBuffer(f.ARRAY_BUFFER,this.colorBuffer),f.vertexAttribPointer(g.colorAttribute,2,f.FLOAT,!1,0,0),f.bindBuffer(f.ELEMENT_ARRAY_BUFFER,this.indexBuffer),f.drawElements(f.TRIANGLES,6,f.UNSIGNED_SHORT,0),this.renderSession.drawCount++},b.WebGLFilterManager.prototype.initShaderBuffers=function(){var a=this.gl;this.vertexBuffer=a.createBuffer(),this.uvBuffer=a.createBuffer(),this.colorBuffer=a.createBuffer(),this.indexBuffer=a.createBuffer(),this.vertexArray=new b.Float32Array([0,0,1,0,0,1,1,1]),a.bindBuffer(a.ARRAY_BUFFER,this.vertexBuffer),a.bufferData(a.ARRAY_BUFFER,this.vertexArray,a.STATIC_DRAW),this.uvArray=new b.Float32Array([0,0,1,0,0,1,1,1]),a.bindBuffer(a.ARRAY_BUFFER,this.uvBuffer),a.bufferData(a.ARRAY_BUFFER,this.uvArray,a.STATIC_DRAW),this.colorArray=new b.Float32Array([1,16777215,1,16777215,1,16777215,1,16777215]),a.bindBuffer(a.ARRAY_BUFFER,this.colorBuffer),a.bufferData(a.ARRAY_BUFFER,this.colorArray,a.STATIC_DRAW),a.bindBuffer(a.ELEMENT_ARRAY_BUFFER,this.indexBuffer),a.bufferData(a.ELEMENT_ARRAY_BUFFER,new Uint16Array([0,1,2,1,3,2]),a.STATIC_DRAW)},b.WebGLFilterManager.prototype.destroy=function(){var a=this.gl;this.filterStack=null,this.offsetX=0,this.offsetY=0;for(var b=0;b=0;a--){var c=this._glTextures[a],d=b.glContexts[a];d&&c&&d.deleteTexture(c)}this._glTextures.length=0,this.dirty()},b.BaseTexture.fromImage=function(a,c,d){var e=b.BaseTextureCache[a];if(void 0===c&&-1===a.indexOf("data:")&&(c=!0),!e){var f=new Image;c&&(f.crossOrigin=""),f.src=a,e=new b.BaseTexture(f,d),e.imageUrl=a,b.BaseTextureCache[a]=e,-1!==a.indexOf(b.RETINA_PREFIX+".")&&(e.resolution=2)}return e},b.BaseTexture.fromCanvas=function(a,c){a._pixiId||(a._pixiId="canvas_"+b.TextureCacheIdGenerator++),0===a.width&&(a.width=1),0===a.height&&(a.height=1);var d=b.BaseTextureCache[a._pixiId];return d||(d=new b.BaseTexture(a,c),b.BaseTextureCache[a._pixiId]=d),d},b.TextureCache={},b.FrameCache={},b.TextureSilentFail=!1,b.TextureCacheIdGenerator=0,b.Texture=function(a,c,d,e){this.noFrame=!1,c||(this.noFrame=!0,c=new b.Rectangle(0,0,1,1)),a instanceof b.Texture&&(a=a.baseTexture),this.baseTexture=a,this.frame=c,this.trim=e,this.valid=!1,this.isTiling=!1,this.requiresUpdate=!1,this.requiresReTint=!1,this._uvs=null,this.width=0,this.height=0,this.crop=d||new b.Rectangle(0,0,1,1),a.hasLoaded&&(this.noFrame&&(c=new b.Rectangle(0,0,a.width,a.height)),this.setFrame(c))},b.Texture.prototype.constructor=b.Texture,b.Texture.prototype.onBaseTextureLoaded=function(){var a=this.baseTexture;this.noFrame&&(this.frame=new b.Rectangle(0,0,a.width,a.height)),this.setFrame(this.frame)},b.Texture.prototype.destroy=function(a){a&&this.baseTexture.destroy(),this.valid=!1},b.Texture.prototype.setFrame=function(a){if(this.noFrame=!1,this.frame=a,this.width=a.width,this.height=a.height,this.crop.x=a.x,this.crop.y=a.y,this.crop.width=a.width,this.crop.height=a.height,!this.trim&&(a.x+a.width>this.baseTexture.width||a.y+a.height>this.baseTexture.height)){if(!b.TextureSilentFail)throw new Error("Texture Error: frame does not fit inside the base Texture dimensions "+this);return void(this.valid=!1)}this.valid=a&&a.width&&a.height&&this.baseTexture.source&&this.baseTexture.hasLoaded,this.trim&&(this.width=this.trim.width,this.height=this.trim.height,this.frame.width=this.trim.width,this.frame.height=this.trim.height),this.valid&&this._updateUvs()},b.Texture.prototype._updateUvs=function(){this._uvs||(this._uvs=new b.TextureUvs);var a=this.crop,c=this.baseTexture.width,d=this.baseTexture.height;this._uvs.x0=a.x/c,this._uvs.y0=a.y/d,this._uvs.x1=(a.x+a.width)/c,this._uvs.y1=a.y/d,this._uvs.x2=(a.x+a.width)/c,this._uvs.y2=(a.y+a.height)/d,this._uvs.x3=a.x/c,this._uvs.y3=(a.y+a.height)/d},b.Texture.fromImage=function(a,c,d){var e=b.TextureCache[a];return e||(e=new b.Texture(b.BaseTexture.fromImage(a,c,d)),b.TextureCache[a]=e),e},b.Texture.fromFrame=function(a){var c=b.TextureCache[a];if(!c)throw new Error('The frameId "'+a+'" does not exist in the texture cache ');return c},b.Texture.fromCanvas=function(a,c){var d=b.BaseTexture.fromCanvas(a,c);return new b.Texture(d)},b.Texture.addTextureToCache=function(a,c){b.TextureCache[c]=a},b.Texture.removeTextureFromCache=function(a){var c=b.TextureCache[a];return delete b.TextureCache[a],delete b.BaseTextureCache[a],c},b.TextureUvs=function(){this.x0=0,this.y0=0,this.x1=0,this.y1=0,this.x2=0,this.y2=0,this.x3=0,this.y3=0},b.RenderTexture=function(a,c,d,e,f){if(this.width=a||100,this.height=c||100,this.resolution=f||1,this.frame=new b.Rectangle(0,0,this.width*this.resolution,this.height*this.resolution),this.crop=new b.Rectangle(0,0,this.width*this.resolution,this.height*this.resolution),this.baseTexture=new b.BaseTexture,this.baseTexture.width=this.width*this.resolution,this.baseTexture.height=this.height*this.resolution,this.baseTexture._glTextures=[],this.baseTexture.resolution=this.resolution,this.baseTexture.scaleMode=e||b.scaleModes.DEFAULT,this.baseTexture.hasLoaded=!0,b.Texture.call(this,this.baseTexture,new b.Rectangle(0,0,this.width*this.resolution,this.height*this.resolution)),this.renderer=d||b.defaultRenderer,this.renderer.type===b.WEBGL_RENDERER){var g=this.renderer.gl;this.baseTexture._dirty[g.id]=!1,this.textureBuffer=new b.FilterTexture(g,this.width,this.height,this.baseTexture.scaleMode),this.baseTexture._glTextures[g.id]=this.textureBuffer.texture,this.render=this.renderWebGL,this.projection=new b.Point(.5*this.width,.5*-this.height)}else this.render=this.renderCanvas,this.textureBuffer=new b.CanvasBuffer(this.width*this.resolution,this.height*this.resolution),this.baseTexture.source=this.textureBuffer.canvas;this.valid=!0,this.tempMatrix=new Phaser.Matrix,this._updateUvs()},b.RenderTexture.prototype=Object.create(b.Texture.prototype),b.RenderTexture.prototype.constructor=b.RenderTexture,b.RenderTexture.prototype.resize=function(a,c,d){(a!==this.width||c!==this.height)&&(this.valid=a>0&&c>0,this.width=a,this.height=c,this.frame.width=this.crop.width=a*this.resolution,this.frame.height=this.crop.height=c*this.resolution,d&&(this.baseTexture.width=this.width*this.resolution,this.baseTexture.height=this.height*this.resolution),this.renderer.type===b.WEBGL_RENDERER&&(this.projection.x=this.width/2,this.projection.y=-this.height/2),this.valid&&this.textureBuffer.resize(this.width,this.height))},b.RenderTexture.prototype.clear=function(){this.valid&&(this.renderer.type===b.WEBGL_RENDERER&&this.renderer.gl.bindFramebuffer(this.renderer.gl.FRAMEBUFFER,this.textureBuffer.frameBuffer),this.textureBuffer.clear())},b.RenderTexture.prototype.renderWebGL=function(a,b,c){if(this.valid&&0!==a.alpha){var d=a.worldTransform;d.identity(),d.translate(0,2*this.projection.y),b&&d.append(b),d.scale(1,-1);for(var e=0;ea;a++)this.shaders[a].dirty=!0},b.Strip=function(a){b.DisplayObjectContainer.call(this),this.texture=a,this.uvs=new b.Float32Array([0,1,1,1,1,0,0,1]),this.vertices=new b.Float32Array([0,0,100,0,100,100,0,100]),this.colors=new b.Float32Array([1,1,1,1]),this.indices=new b.Uint16Array([0,1,2,3]),this.dirty=!0,this.blendMode=b.blendModes.NORMAL,this.canvasPadding=0,this.drawMode=b.Strip.DrawModes.TRIANGLE_STRIP},b.Strip.prototype=Object.create(b.DisplayObjectContainer.prototype),b.Strip.prototype.constructor=b.Strip,b.Strip.prototype._renderWebGL=function(a){!this.visible||this.alpha<=0||(a.spriteBatch.stop(),this._vertexBuffer||this._initWebGL(a),a.shaderManager.setShader(a.shaderManager.stripShader),this._renderStrip(a),a.spriteBatch.start())},b.Strip.prototype._initWebGL=function(a){var b=a.gl;this._vertexBuffer=b.createBuffer(),this._indexBuffer=b.createBuffer(),this._uvBuffer=b.createBuffer(),this._colorBuffer=b.createBuffer(),b.bindBuffer(b.ARRAY_BUFFER,this._vertexBuffer),b.bufferData(b.ARRAY_BUFFER,this.vertices,b.DYNAMIC_DRAW),b.bindBuffer(b.ARRAY_BUFFER,this._uvBuffer),b.bufferData(b.ARRAY_BUFFER,this.uvs,b.STATIC_DRAW),b.bindBuffer(b.ARRAY_BUFFER,this._colorBuffer),b.bufferData(b.ARRAY_BUFFER,this.colors,b.STATIC_DRAW),b.bindBuffer(b.ELEMENT_ARRAY_BUFFER,this._indexBuffer),b.bufferData(b.ELEMENT_ARRAY_BUFFER,this.indices,b.STATIC_DRAW)},b.Strip.prototype._renderStrip=function(a){var c=a.gl,d=a.projection,e=a.offset,f=a.shaderManager.stripShader,g=this.drawMode===b.Strip.DrawModes.TRIANGLE_STRIP?c.TRIANGLE_STRIP:c.TRIANGLES;a.blendModeManager.setBlendMode(this.blendMode),c.uniformMatrix3fv(f.translationMatrix,!1,this.worldTransform.toArray(!0)),c.uniform2f(f.projectionVector,d.x,-d.y),c.uniform2f(f.offsetVector,-e.x,-e.y),c.uniform1f(f.alpha,this.worldAlpha),this.dirty?(this.dirty=!1,c.bindBuffer(c.ARRAY_BUFFER,this._vertexBuffer),c.bufferData(c.ARRAY_BUFFER,this.vertices,c.STATIC_DRAW),c.vertexAttribPointer(f.aVertexPosition,2,c.FLOAT,!1,0,0),c.bindBuffer(c.ARRAY_BUFFER,this._uvBuffer),c.bufferData(c.ARRAY_BUFFER,this.uvs,c.STATIC_DRAW),c.vertexAttribPointer(f.aTextureCoord,2,c.FLOAT,!1,0,0),c.activeTexture(c.TEXTURE0),this.texture.baseTexture._dirty[c.id]?a.renderer.updateTexture(this.texture.baseTexture):c.bindTexture(c.TEXTURE_2D,this.texture.baseTexture._glTextures[c.id]),c.bindBuffer(c.ELEMENT_ARRAY_BUFFER,this._indexBuffer),c.bufferData(c.ELEMENT_ARRAY_BUFFER,this.indices,c.STATIC_DRAW)):(c.bindBuffer(c.ARRAY_BUFFER,this._vertexBuffer),c.bufferSubData(c.ARRAY_BUFFER,0,this.vertices),c.vertexAttribPointer(f.aVertexPosition,2,c.FLOAT,!1,0,0),c.bindBuffer(c.ARRAY_BUFFER,this._uvBuffer),c.vertexAttribPointer(f.aTextureCoord,2,c.FLOAT,!1,0,0),c.activeTexture(c.TEXTURE0),this.texture.baseTexture._dirty[c.id]?a.renderer.updateTexture(this.texture.baseTexture):c.bindTexture(c.TEXTURE_2D,this.texture.baseTexture._glTextures[c.id]),c.bindBuffer(c.ELEMENT_ARRAY_BUFFER,this._indexBuffer)),c.drawElements(g,this.indices.length,c.UNSIGNED_SHORT,0)},b.Strip.prototype._renderCanvas=function(a){var c=a.context,d=this.worldTransform,e=d.tx*a.resolution+a.shakeX,f=d.ty*a.resolution+a.shakeY;a.roundPixels?c.setTransform(d.a,d.b,d.c,d.d,0|e,0|f):c.setTransform(d.a,d.b,d.c,d.d,e,f),this.drawMode===b.Strip.DrawModes.TRIANGLE_STRIP?this._renderCanvasTriangleStrip(c):this._renderCanvasTriangles(c)},b.Strip.prototype._renderCanvasTriangleStrip=function(a){var b=this.vertices,c=this.uvs,d=b.length/2;this.count++;for(var e=0;d-2>e;e++){var f=2*e;this._renderCanvasDrawTriangle(a,b,c,f,f+2,f+4)}},b.Strip.prototype._renderCanvasTriangles=function(a){var b=this.vertices,c=this.uvs,d=this.indices,e=d.length;this.count++;for(var f=0;e>f;f+=3){var g=2*d[f],h=2*d[f+1],i=2*d[f+2];this._renderCanvasDrawTriangle(a,b,c,g,h,i)}},b.Strip.prototype._renderCanvasDrawTriangle=function(a,b,c,d,e,f){var g=this.texture.baseTexture.source,h=this.texture.width,i=this.texture.height,j=b[d],k=b[e],l=b[f],m=b[d+1],n=b[e+1],o=b[f+1],p=c[d]*h,q=c[e]*h,r=c[f]*h,s=c[d+1]*i,t=c[e+1]*i,u=c[f+1]*i;if(this.canvasPadding>0){var v=this.canvasPadding/this.worldTransform.a,w=this.canvasPadding/this.worldTransform.d,x=(j+k+l)/3,y=(m+n+o)/3,z=j-x,A=m-y,B=Math.sqrt(z*z+A*A);j=x+z/B*(B+v),m=y+A/B*(B+w),z=k-x,A=n-y,B=Math.sqrt(z*z+A*A),k=x+z/B*(B+v),n=y+A/B*(B+w),z=l-x,A=o-y,B=Math.sqrt(z*z+A*A),l=x+z/B*(B+v),o=y+A/B*(B+w)}a.save(),a.beginPath(),a.moveTo(j,m),a.lineTo(k,n),a.lineTo(l,o),a.closePath(),a.clip();var C=p*t+s*r+q*u-t*r-s*q-p*u,D=j*t+s*l+k*u-t*l-s*k-j*u,E=p*k+j*r+q*l-k*r-j*q-p*l,F=p*t*l+s*k*r+j*q*u-j*t*r-s*q*l-p*k*u,G=m*t+s*o+n*u-t*o-s*n-m*u,H=p*n+m*r+q*o-n*r-m*q-p*o,I=p*t*o+s*n*r+m*q*u-m*t*r-s*q*o-p*n*u;a.transform(D/C,G/C,E/C,H/C,F/C,I/C),a.drawImage(g,0,0),a.restore()},b.Strip.prototype.renderStripFlat=function(a){var b=this.context,c=a.vertices,d=c.length/2;this.count++,b.beginPath();for(var e=1;d-2>e;e++){var f=2*e,g=c[f],h=c[f+2],i=c[f+4],j=c[f+1],k=c[f+3],l=c[f+5];b.moveTo(g,j),b.lineTo(h,k),b.lineTo(i,l)}b.fillStyle="#FF0000",b.fill(),b.closePath()},b.Strip.prototype.onTextureUpdate=function(){this.updateFrame=!0},b.Strip.prototype.getBounds=function(a){for(var c=a||this.worldTransform,d=c.a,e=c.b,f=c.c,g=c.d,h=c.tx,i=c.ty,j=-(1/0),k=-(1/0),l=1/0,m=1/0,n=this.vertices,o=0,p=n.length;p>o;o+=2){var q=n[o],r=n[o+1],s=d*q+f*r+h,t=g*r+e*q+i;l=l>s?s:l,m=m>t?t:m,j=s>j?s:j,k=t>k?t:k}if(l===-(1/0)||k===1/0)return b.EmptyRectangle;var u=this._bounds;return u.x=l,u.width=j-l,u.y=m,u.height=k-m,this._currentBounds=u,u},b.Strip.DrawModes={TRIANGLE_STRIP:0,TRIANGLES:1},b.Rope=function(a,c){b.Strip.call(this,a),this.points=c,this.vertices=new b.Float32Array(4*c.length),this.uvs=new b.Float32Array(4*c.length),this.colors=new b.Float32Array(2*c.length),this.indices=new b.Uint16Array(2*c.length),this.refresh()},b.Rope.prototype=Object.create(b.Strip.prototype),b.Rope.prototype.constructor=b.Rope,b.Rope.prototype.refresh=function(){var a=this.points;if(!(a.length<1)){var b=this.uvs,c=a[0],d=this.indices,e=this.colors;this.count-=.2,b[0]=0,b[1]=0,b[2]=0,b[3]=1,e[0]=1,e[1]=1,d[0]=0,d[1]=1;for(var f,g,h,i=a.length,j=1;i>j;j++)f=a[j],g=4*j,h=j/(i-1),j%2?(b[g]=h,b[g+1]=0,b[g+2]=h,b[g+3]=1):(b[g]=h,b[g+1]=0,b[g+2]=h,b[g+3]=1),g=2*j,e[g]=1,e[g+1]=1,g=2*j,d[g]=g,d[g+1]=g+1,c=f}},b.Rope.prototype.updateTransform=function(){var a=this.points;if(!(a.length<1)){var c,d=a[0],e={x:0,y:0};this.count-=.2;for(var f,g,h,i,j,k=this.vertices,l=a.length,m=0;l>m;m++)f=a[m],g=4*m,c=m1&&(h=1),i=Math.sqrt(e.x*e.x+e.y*e.y),j=this.texture.height/2,e.x/=i,e.y/=i,e.x*=j,e.y*=j,k[g]=f.x+e.x,k[g+1]=f.y+e.y,k[g+2]=f.x-e.x,k[g+3]=f.y-e.y,d=f;b.DisplayObjectContainer.prototype.updateTransform.call(this)}},b.Rope.prototype.setTexture=function(a){this.texture=a},b.TilingSprite=function(a,c,d){b.Sprite.call(this,a),this._width=c||128,this._height=d||128,this.tileScale=new b.Point(1,1),this.tileScaleOffset=new b.Point(1,1),this.tilePosition=new b.Point,this.renderable=!0,this.tint=16777215,this.textureDebug=!1,this.blendMode=b.blendModes.NORMAL,this.canvasBuffer=null,this.tilingTexture=null,this.tilePattern=null,this.refreshTexture=!0,this.frameWidth=0,this.frameHeight=0},b.TilingSprite.prototype=Object.create(b.Sprite.prototype),b.TilingSprite.prototype.constructor=b.TilingSprite,b.TilingSprite.prototype.setTexture=function(a){this.texture!==a&&(this.texture=a,this.refreshTexture=!0,this.cachedTint=16777215)},b.TilingSprite.prototype._renderWebGL=function(a){if(this.visible&&this.renderable&&0!==this.alpha){if(this._mask&&(a.spriteBatch.stop(),a.maskManager.pushMask(this.mask,a),a.spriteBatch.start()),this._filters&&(a.spriteBatch.flush(),a.filterManager.pushFilter(this._filterBlock)),this.refreshTexture){if(this.generateTilingTexture(!0,a),!this.tilingTexture)return;this.tilingTexture.needsUpdate&&(a.renderer.updateTexture(this.tilingTexture.baseTexture),this.tilingTexture.needsUpdate=!1)}a.spriteBatch.renderTilingSprite(this);for(var b=0;bn?n:x,x=x>p?p:x,x=x>r?r:x,x=x>t?t:x,y=y>o?o:y,y=y>q?q:y,y=y>s?s:y,y=y>u?u:y,v=n>v?n:v,v=p>v?p:v,v=r>v?r:v,v=t>v?t:v,w=o>w?o:w,w=q>w?q:w,w=s>w?s:w,w=u>w?u:w;var z=this._bounds;return z.x=x,z.width=v-x,z.y=y,z.height=w-y,this._currentBounds=z,z},b.TilingSprite.prototype.destroy=function(){b.Sprite.prototype.destroy.call(this),this.canvasBuffer&&(this.canvasBuffer.destroy(),this.canvasBuffer=null),this.tileScale=null,this.tileScaleOffset=null,this.tilePosition=null,this.tilingTexture&&(this.tilingTexture.destroy(!0),this.tilingTexture=null)},Object.defineProperty(b.TilingSprite.prototype,"width",{get:function(){return this._width},set:function(a){this._width=a}}),Object.defineProperty(b.TilingSprite.prototype,"height",{get:function(){return this._height},set:function(a){this._height=a}}),"undefined"!=typeof exports?("undefined"!=typeof module&&module.exports&&(exports=module.exports=b),exports.PIXI=b):"undefined"!=typeof define&&define.amd?define("PIXI",function(){return a.PIXI=b}()):a.PIXI=b,b}).call(this); +(function(){var a=this,b=b||{};return b.game=null,b.WEBGL_RENDERER=0,b.CANVAS_RENDERER=1,b.VERSION="v2.2.9",b._UID=0,"undefined"!=typeof Float32Array?(b.Float32Array=Float32Array,b.Uint16Array=Uint16Array,b.Uint32Array=Uint32Array,b.ArrayBuffer=ArrayBuffer):(b.Float32Array=Array,b.Uint16Array=Array),b.PI_2=2*Math.PI,b.RAD_TO_DEG=180/Math.PI,b.DEG_TO_RAD=Math.PI/180,b.RETINA_PREFIX="@2x",b.DisplayObject=function(){this.position=new b.Point(0,0),this.scale=new b.Point(1,1),this.pivot=new b.Point(0,0),this.rotation=0,this.alpha=1,this.visible=!0,this.hitArea=null,this.renderable=!1,this.parent=null,this.stage=null,this.worldAlpha=1,this.worldTransform=new b.Matrix,this.worldPosition=new b.Point(0,0),this.worldScale=new b.Point(1,1),this.worldRotation=0,this.filterArea=null,this._sr=0,this._cr=1,this._bounds=new b.Rectangle(0,0,1,1),this._currentBounds=null,this._mask=null,this._cacheAsBitmap=!1,this._cacheIsDirty=!1},b.DisplayObject.prototype.constructor=b.DisplayObject,b.DisplayObject.prototype={destroy:function(){if(this.children){for(var a=this.children.length;a--;)this.children[a].destroy();this.children=[]}this.hitArea=null,this.parent=null,this.stage=null,this.worldTransform=null,this.filterArea=null,this.renderable=!1,this._bounds=null,this._currentBounds=null,this._mask=null,this._destroyCachedSprite()},updateTransform:function(a){if(!a&&!this.parent&&!this.game)return this;var c=this.parent;a?c=a:this.parent||(c=this.game.world);var d,e,f,g,h,i,j=c.worldTransform,k=this.worldTransform;return this.rotation%b.PI_2?(this.rotation!==this.rotationCache&&(this.rotationCache=this.rotation,this._sr=Math.sin(this.rotation),this._cr=Math.cos(this.rotation)),d=this._cr*this.scale.x,e=this._sr*this.scale.x,f=-this._sr*this.scale.y,g=this._cr*this.scale.y,h=this.position.x,i=this.position.y,(this.pivot.x||this.pivot.y)&&(h-=this.pivot.x*d+this.pivot.y*f,i-=this.pivot.x*e+this.pivot.y*g),k.a=d*j.a+e*j.c,k.b=d*j.b+e*j.d,k.c=f*j.a+g*j.c,k.d=f*j.b+g*j.d,k.tx=h*j.a+i*j.c+j.tx,k.ty=h*j.b+i*j.d+j.ty):(d=this.scale.x,g=this.scale.y,h=this.position.x-this.pivot.x*d,i=this.position.y-this.pivot.y*g,k.a=d*j.a,k.b=d*j.b,k.c=g*j.c,k.d=g*j.d,k.tx=h*j.a+i*j.c+j.tx,k.ty=h*j.b+i*j.d+j.ty),this.worldAlpha=this.alpha*c.worldAlpha,this.worldPosition.set(k.tx,k.ty),this.worldScale.set(this.scale.x*Math.sqrt(k.a*k.a+k.c*k.c),this.scale.y*Math.sqrt(k.b*k.b+k.d*k.d)),this.worldRotation=Math.atan2(-k.c,k.d),this._currentBounds=null,this.transformCallback&&this.transformCallback.call(this.transformCallbackContext,k,j),this},setStageReference:function(a){return this.stage=a,this},preUpdate:function(){},generateTexture:function(a,c,d){var e=this.getLocalBounds(),f=new b.RenderTexture(0|e.width,0|e.height,d,c,a);return b.DisplayObject._tempMatrix.tx=-e.x,b.DisplayObject._tempMatrix.ty=-e.y,f.render(this,b.DisplayObject._tempMatrix),f},updateCache:function(){return this._generateCachedSprite(),this},toGlobal:function(a){return this.updateTransform(),this.worldTransform.apply(a)},toLocal:function(a,b){return b&&(a=b.toGlobal(a)),this.updateTransform(),this.worldTransform.applyInverse(a)},_renderCachedSprite:function(a){this._cachedSprite.worldAlpha=this.worldAlpha,a.gl?b.Sprite.prototype._renderWebGL.call(this._cachedSprite,a):b.Sprite.prototype._renderCanvas.call(this._cachedSprite,a)},_generateCachedSprite:function(){this._cacheAsBitmap=!1;var a=this.getLocalBounds();if(a.width=Math.max(1,Math.ceil(a.width)),a.height=Math.max(1,Math.ceil(a.height)),this.updateTransform(),this._cachedSprite)this._cachedSprite.texture.resize(a.width,a.height);else{var c=new b.RenderTexture(a.width,a.height);this._cachedSprite=new b.Sprite(c),this._cachedSprite.worldTransform=this.worldTransform}var d=this._filters;this._filters=null,this._cachedSprite.filters=d,b.DisplayObject._tempMatrix.tx=-a.x,b.DisplayObject._tempMatrix.ty=-a.y,this._cachedSprite.texture.render(this,b.DisplayObject._tempMatrix,!0),this._cachedSprite.anchor.x=-(a.x/a.width),this._cachedSprite.anchor.y=-(a.y/a.height),this._filters=d,this._cacheAsBitmap=!0},_destroyCachedSprite:function(){this._cachedSprite&&(this._cachedSprite.texture.destroy(!0),this._cachedSprite=null)}},b.DisplayObject.prototype.displayObjectUpdateTransform=b.DisplayObject.prototype.updateTransform,Object.defineProperties(b.DisplayObject.prototype,{x:{get:function(){return this.position.x},set:function(a){this.position.x=a}},y:{get:function(){return this.position.y},set:function(a){this.position.y=a}},worldVisible:{get:function(){if(this.visible){var a=this.parent;do{if(!a.visible)return!1;a=a.parent}while(a);return!0}return!1}},mask:{get:function(){return this._mask},set:function(a){this._mask&&(this._mask.isMask=!1),this._mask=a,a&&(this._mask.isMask=!0)}},filters:{get:function(){return this._filters},set:function(a){if(Array.isArray(a)){for(var c=[],d=0;d=0&&b<=this.children.length)return a.parent&&a.parent.removeChild(a),a.parent=this,this.children.splice(b,0,a),this.stage&&a.setStageReference(this.stage),a;throw new Error(a+"addChildAt: The index "+b+" supplied is out of bounds "+this.children.length)},b.DisplayObjectContainer.prototype.swapChildren=function(a,b){if(a!==b){var c=this.getChildIndex(a),d=this.getChildIndex(b);if(0>c||0>d)throw new Error("swapChildren: Both the supplied DisplayObjects must be a child of the caller.");this.children[c]=b,this.children[d]=a}},b.DisplayObjectContainer.prototype.getChildIndex=function(a){var b=this.children.indexOf(a);if(-1===b)throw new Error("The supplied DisplayObject must be a child of the caller");return b},b.DisplayObjectContainer.prototype.setChildIndex=function(a,b){if(0>b||b>=this.children.length)throw new Error("The supplied index is out of bounds");var c=this.getChildIndex(a);this.children.splice(c,1),this.children.splice(b,0,a)},b.DisplayObjectContainer.prototype.getChildAt=function(a){if(0>a||a>=this.children.length)throw new Error("getChildAt: Supplied index "+a+" does not exist in the child list, or the supplied DisplayObject must be a child of the caller");return this.children[a]},b.DisplayObjectContainer.prototype.removeChild=function(a){var b=this.children.indexOf(a);if(-1!==b)return this.removeChildAt(b)},b.DisplayObjectContainer.prototype.removeChildAt=function(a){var b=this.getChildAt(a);return this.stage&&b.removeStageReference(),b.parent=void 0,this.children.splice(a,1),b},b.DisplayObjectContainer.prototype.removeChildren=function(a,b){var c=a||0,d="number"==typeof b?b:this.children.length,e=d-c;if(e>0&&d>=e){for(var f=this.children.splice(c,e),g=0;gc?g:c,h=h>d?h:d)}if(!i)return b.EmptyRectangle;var l=this._bounds;return l.x=e,l.y=f,l.width=g-e,l.height=h-f,l},b.DisplayObjectContainer.prototype.getLocalBounds=function(){var a=this.worldTransform;this.worldTransform=b.identityMatrix;for(var c=0;ci){i*=-1;var s=d;d=-e,e=-s}if(0>l){l*=-1;var s=f;f=-g,g=-s}q=i*e+m,o=i*d+m,r=l*g+n,p=l*f+n}else{var t=i*e+k*g+m,u=l*g+j*e+n,v=i*d+k*g+m,w=l*g+j*d+n,x=i*d+k*f+m,y=l*f+j*d+n,z=i*e+k*f+m,A=l*f+j*e+n;q=q>t?t:q,q=q>v?v:q,q=q>x?x:q,q=q>z?z:q,r=r>u?u:r,r=r>w?w:r,r=r>y?y:r,r=r>A?A:r,o=t>o?t:o,o=v>o?v:o,o=x>o?x:o,o=z>o?z:o,p=u>p?u:p,p=w>p?w:p,p=y>p?y:p,p=A>p?A:p}var B=this._bounds;return B.x=q,B.width=o-q,B.y=r,B.height=p-r,this._currentBounds=B,B},b.Sprite.prototype._renderWebGL=function(a,b){if(this.visible&&!(this.alpha<=0)&&this.renderable){var c=this.worldTransform;if(b&&(c=b),this._mask||this._filters){var d=a.spriteBatch;this._filters&&(d.flush(),a.filterManager.pushFilter(this._filterBlock)),this._mask&&(d.stop(),a.maskManager.pushMask(this.mask,a),d.start()),d.render(this);for(var e=0;e>16&255)/255,(a>>8&255)/255,(255&a)/255]},b.rgb2hex=function(a){return(255*a[0]<<16)+(255*a[1]<<8)+255*a[2]},b.canUseNewCanvasBlendModes=function(){if(void 0===document)return!1;var a="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAQAAAABAQMAAADD8p2OAAAAA1BMVEX/",c="AAAACklEQVQI12NgAAAAAgAB4iG8MwAAAABJRU5ErkJggg==",d=new Image;d.src=a+"AP804Oa6"+c;var e=new Image;e.src=a+"/wCKxvRF"+c;var f=b.CanvasPool.create(this,6,1),g=f.getContext("2d");if(g.globalCompositeOperation="multiply",g.drawImage(d,0,0),g.drawImage(e,2,0),!g.getImageData(2,0,1,1))return!1;var h=g.getImageData(2,0,1,1).data;return b.CanvasPool.remove(this),255===h[0]&&0===h[1]&&0===h[2]},b.getNextPowerOfTwo=function(a){if(a>0&&0===(a&a-1))return a;for(var b=1;a>b;)b<<=1;return b},b.isPowerOfTwo=function(a,b){return a>0&&0===(a&a-1)&&b>0&&0===(b&b-1)},b.CanvasPool={create:function(a,c,d){var e,f=b.CanvasPool.getFirst();if(-1===f){var g={parent:a,canvas:document.createElement("canvas")};b.CanvasPool.pool.push(g),e=g.canvas}else b.CanvasPool.pool[f].parent=a,e=b.CanvasPool.pool[f].canvas;return void 0!==c&&(e.width=c,e.height=d),e},getFirst:function(){for(var a=b.CanvasPool.pool,c=0;cd;d+=6,e+=4)this.indices[d+0]=e+0,this.indices[d+1]=e+1,this.indices[d+2]=e+2,this.indices[d+3]=e+0,this.indices[d+4]=e+2,this.indices[d+5]=e+3;this.drawing=!1,this.currentBatchSize=0,this.currentBaseTexture=null,this.dirty=!0,this.textures=[],this.blendModes=[],this.shaders=[],this.sprites=[],this.defaultShader=new b.AbstractFilter(["precision lowp float;","varying vec2 vTextureCoord;","varying vec4 vColor;","uniform sampler2D uSampler;","void main(void) {"," gl_FragColor = texture2D(uSampler, vTextureCoord) * vColor ;","}"])},b.WebGLSpriteBatch.prototype.setContext=function(a){this.gl=a,this.vertexBuffer=a.createBuffer(),this.indexBuffer=a.createBuffer(),a.bindBuffer(a.ELEMENT_ARRAY_BUFFER,this.indexBuffer),a.bufferData(a.ELEMENT_ARRAY_BUFFER,this.indices,a.STATIC_DRAW),a.bindBuffer(a.ARRAY_BUFFER,this.vertexBuffer),a.bufferData(a.ARRAY_BUFFER,this.vertices,a.DYNAMIC_DRAW),this.currentBlendMode=99999;var c=new b.PixiShader(a);c.fragmentSrc=this.defaultShader.fragmentSrc,c.uniforms={},c.init(),this.defaultShader.shaders[a.id]=c},b.WebGLSpriteBatch.prototype.begin=function(a){this.renderSession=a,this.shader=this.renderSession.shaderManager.defaultShader,this.start()},b.WebGLSpriteBatch.prototype.end=function(){this.flush()},b.WebGLSpriteBatch.prototype.render=function(a,b){var c=a.texture,d=a.worldTransform;b&&(d=b),this.currentBatchSize>=this.size&&(this.flush(),this.currentBaseTexture=c.baseTexture);var e=c._uvs;if(e){var f,g,h,i,j=a.anchor.x,k=a.anchor.y;if(c.trim){var l=c.trim;g=l.x-j*l.width,f=g+c.crop.width,i=l.y-k*l.height,h=i+c.crop.height}else f=c.frame.width*(1-j),g=c.frame.width*-j,h=c.frame.height*(1-k),i=c.frame.height*-k;var m=4*this.currentBatchSize*this.vertSize,n=c.baseTexture.resolution,o=d.a/n,p=d.b/n,q=d.c/n,r=d.d/n,s=d.tx,t=d.ty,u=this.colors,v=this.positions;this.renderSession.roundPixels?(v[m]=o*g+q*i+s|0,v[m+1]=r*i+p*g+t|0,v[m+5]=o*f+q*i+s|0,v[m+6]=r*i+p*f+t|0,v[m+10]=o*f+q*h+s|0,v[m+11]=r*h+p*f+t|0,v[m+15]=o*g+q*h+s|0,v[m+16]=r*h+p*g+t|0):(v[m]=o*g+q*i+s,v[m+1]=r*i+p*g+t,v[m+5]=o*f+q*i+s,v[m+6]=r*i+p*f+t,v[m+10]=o*f+q*h+s,v[m+11]=r*h+p*f+t,v[m+15]=o*g+q*h+s,v[m+16]=r*h+p*g+t),v[m+2]=e.x0,v[m+3]=e.y0,v[m+7]=e.x1,v[m+8]=e.y1,v[m+12]=e.x2,v[m+13]=e.y2,v[m+17]=e.x3,v[m+18]=e.y3;var w=a.tint;u[m+4]=u[m+9]=u[m+14]=u[m+19]=(w>>16)+(65280&w)+((255&w)<<16)+(255*a.worldAlpha<<24),this.sprites[this.currentBatchSize++]=a}},b.WebGLSpriteBatch.prototype.renderTilingSprite=function(a){var c=a.tilingTexture;this.currentBatchSize>=this.size&&(this.flush(),this.currentBaseTexture=c.baseTexture),a._uvs||(a._uvs=new b.TextureUvs);var d=a._uvs,e=c.baseTexture.width,f=c.baseTexture.height;a.tilePosition.x%=e*a.tileScaleOffset.x,a.tilePosition.y%=f*a.tileScaleOffset.y;var g=a.tilePosition.x/(e*a.tileScaleOffset.x),h=a.tilePosition.y/(f*a.tileScaleOffset.y),i=a.width/e/(a.tileScale.x*a.tileScaleOffset.x),j=a.height/f/(a.tileScale.y*a.tileScaleOffset.y);d.x0=0-g,d.y0=0-h,d.x1=1*i-g,d.y1=0-h,d.x2=1*i-g,d.y2=1*j-h,d.x3=0-g,d.y3=1*j-h;var k=a.tint,l=(k>>16)+(65280&k)+((255&k)<<16)+(255*a.worldAlpha<<24),m=this.positions,n=this.colors,o=a.width,p=a.height,q=a.anchor.x,r=a.anchor.y,s=o*(1-q),t=o*-q,u=p*(1-r),v=p*-r,w=4*this.currentBatchSize*this.vertSize,x=c.baseTexture.resolution,y=a.worldTransform,z=y.a/x,A=y.b/x,B=y.c/x,C=y.d/x,D=y.tx,E=y.ty;m[w++]=z*t+B*v+D,m[w++]=C*v+A*t+E,m[w++]=d.x0,m[w++]=d.y0,n[w++]=l,m[w++]=z*s+B*v+D,m[w++]=C*v+A*s+E,m[w++]=d.x1,m[w++]=d.y1,n[w++]=l,m[w++]=z*s+B*u+D,m[w++]=C*u+A*s+E,m[w++]=d.x2,m[w++]=d.y2,n[w++]=l,m[w++]=z*t+B*u+D,m[w++]=C*u+A*t+E,m[w++]=d.x3,m[w++]=d.y3,n[w++]=l,this.sprites[this.currentBatchSize++]=a},b.WebGLSpriteBatch.prototype.flush=function(){if(0!==this.currentBatchSize){var a,c=this.gl;if(this.dirty){this.dirty=!1,c.activeTexture(c.TEXTURE0),c.bindBuffer(c.ARRAY_BUFFER,this.vertexBuffer),c.bindBuffer(c.ELEMENT_ARRAY_BUFFER,this.indexBuffer),a=this.defaultShader.shaders[c.id];var d=4*this.vertSize;c.vertexAttribPointer(a.aVertexPosition,2,c.FLOAT,!1,d,0),c.vertexAttribPointer(a.aTextureCoord,2,c.FLOAT,!1,d,8),c.vertexAttribPointer(a.colorAttribute,4,c.UNSIGNED_BYTE,!0,d,16)}if(this.currentBatchSize>.5*this.size)c.bufferSubData(c.ARRAY_BUFFER,0,this.vertices);else{var e=this.positions.subarray(0,4*this.currentBatchSize*this.vertSize);c.bufferSubData(c.ARRAY_BUFFER,0,e)}for(var f,g,h,i,j=0,k=0,l=null,m=this.renderSession.blendModeManager.currentBlendMode,n=null,o=!1,p=!1,q=0,r=this.currentBatchSize;r>q;q++){i=this.sprites[q],f=i.tilingTexture?i.tilingTexture.baseTexture:i.texture.baseTexture,g=i.blendMode,h=i.shader||this.defaultShader,o=m!==g,p=n!==h;var s=f.skipRender;if(s&&i.children.length>0&&(s=!1),(l!==f&&!s||o||p)&&(this.renderBatch(l,j,k),k=q,j=0,l=f,o&&(m=g,this.renderSession.blendModeManager.setBlendMode(m)),p)){n=h,a=n.shaders[c.id],a||(a=new b.PixiShader(c),a.fragmentSrc=n.fragmentSrc,a.uniforms=n.uniforms,a.init(),n.shaders[c.id]=a),this.renderSession.shaderManager.setShader(a),a.dirty&&a.syncUniforms();var t=this.renderSession.projection;c.uniform2f(a.projectionVector,t.x,t.y);var u=this.renderSession.offset;c.uniform2f(a.offsetVector,u.x,u.y)}j++}this.renderBatch(l,j,k),this.currentBatchSize=0}},b.WebGLSpriteBatch.prototype.renderBatch=function(a,b,c){if(0!==b){var d=this.gl;if(a._dirty[d.id]){if(!this.renderSession.renderer.updateTexture(a))return}else d.bindTexture(d.TEXTURE_2D,a._glTextures[d.id]);d.drawElements(d.TRIANGLES,6*b,d.UNSIGNED_SHORT,6*c*2),this.renderSession.drawCount++}},b.WebGLSpriteBatch.prototype.stop=function(){this.flush(),this.dirty=!0},b.WebGLSpriteBatch.prototype.start=function(){this.dirty=!0},b.WebGLSpriteBatch.prototype.destroy=function(){this.vertices=null,this.indices=null,this.gl.deleteBuffer(this.vertexBuffer),this.gl.deleteBuffer(this.indexBuffer),this.currentBaseTexture=null,this.gl=null},b.WebGLFastSpriteBatch=function(a){this.vertSize=10,this.maxSize=6e3,this.size=this.maxSize;var c=4*this.size*this.vertSize,d=6*this.maxSize;this.vertices=new b.Float32Array(c),this.indices=new b.Uint16Array(d),this.vertexBuffer=null,this.indexBuffer=null,this.lastIndexCount=0;for(var e=0,f=0;d>e;e+=6,f+=4)this.indices[e+0]=f+0,this.indices[e+1]=f+1,this.indices[e+2]=f+2,this.indices[e+3]=f+0,this.indices[e+4]=f+2,this.indices[e+5]=f+3;this.drawing=!1,this.currentBatchSize=0,this.currentBaseTexture=null,this.currentBlendMode=0,this.renderSession=null,this.shader=null,this.matrix=null,this.setContext(a)},b.WebGLFastSpriteBatch.prototype.constructor=b.WebGLFastSpriteBatch,b.WebGLFastSpriteBatch.prototype.setContext=function(a){this.gl=a,this.vertexBuffer=a.createBuffer(),this.indexBuffer=a.createBuffer(),a.bindBuffer(a.ELEMENT_ARRAY_BUFFER,this.indexBuffer),a.bufferData(a.ELEMENT_ARRAY_BUFFER,this.indices,a.STATIC_DRAW),a.bindBuffer(a.ARRAY_BUFFER,this.vertexBuffer),a.bufferData(a.ARRAY_BUFFER,this.vertices,a.DYNAMIC_DRAW)},b.WebGLFastSpriteBatch.prototype.begin=function(a,b){this.renderSession=b,this.shader=this.renderSession.shaderManager.fastShader,this.matrix=a.worldTransform.toArray(!0),this.start()},b.WebGLFastSpriteBatch.prototype.end=function(){this.flush()},b.WebGLFastSpriteBatch.prototype.render=function(a){var b=a.children,c=b[0];if(c.texture._uvs){this.currentBaseTexture=c.texture.baseTexture,c.blendMode!==this.renderSession.blendModeManager.currentBlendMode&&(this.flush(),this.renderSession.blendModeManager.setBlendMode(c.blendMode));for(var d=0,e=b.length;e>d;d++)this.renderSprite(b[d]);this.flush()}},b.WebGLFastSpriteBatch.prototype.renderSprite=function(a){if(a.visible&&(a.texture.baseTexture===this.currentBaseTexture||a.texture.baseTexture.skipRender||(this.flush(),this.currentBaseTexture=a.texture.baseTexture,a.texture._uvs))){var b,c,d,e,f,g,h,i,j=this.vertices;if(b=a.texture._uvs,c=a.texture.frame.width,d=a.texture.frame.height,a.texture.trim){var k=a.texture.trim;f=k.x-a.anchor.x*k.width,e=f+a.texture.crop.width,h=k.y-a.anchor.y*k.height,g=h+a.texture.crop.height}else e=a.texture.frame.width*(1-a.anchor.x),f=a.texture.frame.width*-a.anchor.x,g=a.texture.frame.height*(1-a.anchor.y),h=a.texture.frame.height*-a.anchor.y;i=4*this.currentBatchSize*this.vertSize,j[i++]=f,j[i++]=h,j[i++]=a.position.x,j[i++]=a.position.y,j[i++]=a.scale.x,j[i++]=a.scale.y,j[i++]=a.rotation,j[i++]=b.x0,j[i++]=b.y1,j[i++]=a.alpha,j[i++]=e,j[i++]=h,j[i++]=a.position.x,j[i++]=a.position.y,j[i++]=a.scale.x,j[i++]=a.scale.y,j[i++]=a.rotation,j[i++]=b.x1,j[i++]=b.y1,j[i++]=a.alpha,j[i++]=e,j[i++]=g,j[i++]=a.position.x,j[i++]=a.position.y,j[i++]=a.scale.x,j[i++]=a.scale.y,j[i++]=a.rotation,j[i++]=b.x2,j[i++]=b.y2,j[i++]=a.alpha,j[i++]=f,j[i++]=g,j[i++]=a.position.x,j[i++]=a.position.y,j[i++]=a.scale.x,j[i++]=a.scale.y,j[i++]=a.rotation,j[i++]=b.x3,j[i++]=b.y3,j[i++]=a.alpha,this.currentBatchSize++,this.currentBatchSize>=this.size&&this.flush()}},b.WebGLFastSpriteBatch.prototype.flush=function(){if(0!==this.currentBatchSize){var a=this.gl;if(this.currentBaseTexture._glTextures[a.id]||this.renderSession.renderer.updateTexture(this.currentBaseTexture,a),a.bindTexture(a.TEXTURE_2D,this.currentBaseTexture._glTextures[a.id]),this.currentBatchSize>.5*this.size)a.bufferSubData(a.ARRAY_BUFFER,0,this.vertices);else{var b=this.vertices.subarray(0,4*this.currentBatchSize*this.vertSize);a.bufferSubData(a.ARRAY_BUFFER,0,b)}a.drawElements(a.TRIANGLES,6*this.currentBatchSize,a.UNSIGNED_SHORT,0),this.currentBatchSize=0,this.renderSession.drawCount++}},b.WebGLFastSpriteBatch.prototype.stop=function(){this.flush()},b.WebGLFastSpriteBatch.prototype.start=function(){var a=this.gl;a.activeTexture(a.TEXTURE0),a.bindBuffer(a.ARRAY_BUFFER,this.vertexBuffer),a.bindBuffer(a.ELEMENT_ARRAY_BUFFER,this.indexBuffer);var b=this.renderSession.projection;a.uniform2f(this.shader.projectionVector,b.x,b.y),a.uniformMatrix3fv(this.shader.uMatrix,!1,this.matrix);var c=4*this.vertSize;a.vertexAttribPointer(this.shader.aVertexPosition,2,a.FLOAT,!1,c,0),a.vertexAttribPointer(this.shader.aPositionCoord,2,a.FLOAT,!1,c,8),a.vertexAttribPointer(this.shader.aScale,2,a.FLOAT,!1,c,16),a.vertexAttribPointer(this.shader.aRotation,1,a.FLOAT,!1,c,24),a.vertexAttribPointer(this.shader.aTextureCoord,2,a.FLOAT,!1,c,28),a.vertexAttribPointer(this.shader.colorAttribute,1,a.FLOAT,!1,c,36)},b.WebGLFilterManager=function(){this.filterStack=[],this.offsetX=0,this.offsetY=0},b.WebGLFilterManager.prototype.constructor=b.WebGLFilterManager,b.WebGLFilterManager.prototype.setContext=function(a){this.gl=a,this.texturePool=[],this.initShaderBuffers()},b.WebGLFilterManager.prototype.begin=function(a,b){this.renderSession=a,this.defaultShader=a.shaderManager.defaultShader;var c=this.renderSession.projection;this.width=2*c.x,this.height=2*-c.y,this.buffer=b},b.WebGLFilterManager.prototype.pushFilter=function(a){var c=this.gl,d=this.renderSession.projection,e=this.renderSession.offset;a._filterArea=a.target.filterArea||a.target.getBounds(),a._previous_stencil_mgr=this.renderSession.stencilManager,this.renderSession.stencilManager=new b.WebGLStencilManager,this.renderSession.stencilManager.setContext(c),c.disable(c.STENCIL_TEST),this.filterStack.push(a);var f=a.filterPasses[0];this.offsetX+=a._filterArea.x,this.offsetY+=a._filterArea.y;var g=this.texturePool.pop();g?g.resize(this.width*this.renderSession.resolution,this.height*this.renderSession.resolution):g=new b.FilterTexture(this.gl,this.width*this.renderSession.resolution,this.height*this.renderSession.resolution),c.bindTexture(c.TEXTURE_2D,g.texture);var h=a._filterArea,i=f.padding;h.x-=i,h.y-=i,h.width+=2*i,h.height+=2*i,h.x<0&&(h.x=0),h.width>this.width&&(h.width=this.width),h.y<0&&(h.y=0),h.height>this.height&&(h.height=this.height),c.bindFramebuffer(c.FRAMEBUFFER,g.frameBuffer),c.viewport(0,0,h.width*this.renderSession.resolution,h.height*this.renderSession.resolution),d.x=h.width/2,d.y=-h.height/2,e.x=-h.x,e.y=-h.y,c.colorMask(!0,!0,!0,!0),c.clearColor(0,0,0,0),c.clear(c.COLOR_BUFFER_BIT),a._glFilterTexture=g},b.WebGLFilterManager.prototype.popFilter=function(){var a=this.gl,c=this.filterStack.pop(),d=c._filterArea,e=c._glFilterTexture,f=this.renderSession.projection,g=this.renderSession.offset;if(c.filterPasses.length>1){a.viewport(0,0,d.width*this.renderSession.resolution,d.height*this.renderSession.resolution),a.bindBuffer(a.ARRAY_BUFFER,this.vertexBuffer),this.vertexArray[0]=0,this.vertexArray[1]=d.height,this.vertexArray[2]=d.width,this.vertexArray[3]=d.height,this.vertexArray[4]=0,this.vertexArray[5]=0,this.vertexArray[6]=d.width,this.vertexArray[7]=0,a.bufferSubData(a.ARRAY_BUFFER,0,this.vertexArray),a.bindBuffer(a.ARRAY_BUFFER,this.uvBuffer),this.uvArray[2]=d.width/this.width,this.uvArray[5]=d.height/this.height,this.uvArray[6]=d.width/this.width,this.uvArray[7]=d.height/this.height,a.bufferSubData(a.ARRAY_BUFFER,0,this.uvArray);var h=e,i=this.texturePool.pop();i||(i=new b.FilterTexture(this.gl,this.width*this.renderSession.resolution,this.height*this.renderSession.resolution)),i.resize(this.width*this.renderSession.resolution,this.height*this.renderSession.resolution),a.bindFramebuffer(a.FRAMEBUFFER,i.frameBuffer),a.clear(a.COLOR_BUFFER_BIT),a.disable(a.BLEND);for(var j=0;j0?a.enable(a.STENCIL_TEST):a.disable(a.STENCIL_TEST),this.applyFilterPass(m,d,n,o),this.texturePool.push(e),c._glFilterTexture=null},b.WebGLFilterManager.prototype.applyFilterPass=function(a,c,d,e){var f=this.gl,g=a.shaders[f.id];g||(g=new b.PixiShader(f),g.fragmentSrc=a.fragmentSrc,g.uniforms=a.uniforms,g.init(),a.shaders[f.id]=g),this.renderSession.shaderManager.setShader(g),f.uniform2f(g.projectionVector,d/2,-e/2),f.uniform2f(g.offsetVector,0,0),a.uniforms.dimensions&&(a.uniforms.dimensions.value[0]=this.width,a.uniforms.dimensions.value[1]=this.height,a.uniforms.dimensions.value[2]=this.vertexArray[0],a.uniforms.dimensions.value[3]=this.vertexArray[5]),g.syncUniforms(),f.bindBuffer(f.ARRAY_BUFFER,this.vertexBuffer),f.vertexAttribPointer(g.aVertexPosition,2,f.FLOAT,!1,0,0),f.bindBuffer(f.ARRAY_BUFFER,this.uvBuffer),f.vertexAttribPointer(g.aTextureCoord,2,f.FLOAT,!1,0,0),f.bindBuffer(f.ARRAY_BUFFER,this.colorBuffer),f.vertexAttribPointer(g.colorAttribute,2,f.FLOAT,!1,0,0),f.bindBuffer(f.ELEMENT_ARRAY_BUFFER,this.indexBuffer),f.drawElements(f.TRIANGLES,6,f.UNSIGNED_SHORT,0),this.renderSession.drawCount++},b.WebGLFilterManager.prototype.initShaderBuffers=function(){var a=this.gl;this.vertexBuffer=a.createBuffer(),this.uvBuffer=a.createBuffer(),this.colorBuffer=a.createBuffer(),this.indexBuffer=a.createBuffer(),this.vertexArray=new b.Float32Array([0,0,1,0,0,1,1,1]),a.bindBuffer(a.ARRAY_BUFFER,this.vertexBuffer),a.bufferData(a.ARRAY_BUFFER,this.vertexArray,a.STATIC_DRAW),this.uvArray=new b.Float32Array([0,0,1,0,0,1,1,1]),a.bindBuffer(a.ARRAY_BUFFER,this.uvBuffer),a.bufferData(a.ARRAY_BUFFER,this.uvArray,a.STATIC_DRAW),this.colorArray=new b.Float32Array([1,16777215,1,16777215,1,16777215,1,16777215]),a.bindBuffer(a.ARRAY_BUFFER,this.colorBuffer),a.bufferData(a.ARRAY_BUFFER,this.colorArray,a.STATIC_DRAW),a.bindBuffer(a.ELEMENT_ARRAY_BUFFER,this.indexBuffer),a.bufferData(a.ELEMENT_ARRAY_BUFFER,new Uint16Array([0,1,2,1,3,2]),a.STATIC_DRAW)},b.WebGLFilterManager.prototype.destroy=function(){var a=this.gl;this.filterStack=null,this.offsetX=0,this.offsetY=0;for(var b=0;b=0;a--){var c=this._glTextures[a],d=b.glContexts[a];d&&c&&d.deleteTexture(c)}this._glTextures.length=0,this.dirty()},b.BaseTexture.fromCanvas=function(a,c){return 0===a.width&&(a.width=1),0===a.height&&(a.height=1),new b.BaseTexture(a,c)},b.TextureSilentFail=!1,b.Texture=function(a,c,d,e){this.noFrame=!1,c||(this.noFrame=!0,c=new b.Rectangle(0,0,1,1)),a instanceof b.Texture&&(a=a.baseTexture),this.baseTexture=a,this.frame=c,this.trim=e,this.valid=!1,this.isTiling=!1,this.requiresUpdate=!1,this.requiresReTint=!1,this._uvs=null,this.width=0,this.height=0,this.crop=d||new b.Rectangle(0,0,1,1),a.hasLoaded&&(this.noFrame&&(c=new b.Rectangle(0,0,a.width,a.height)),this.setFrame(c))},b.Texture.prototype.constructor=b.Texture,b.Texture.prototype.onBaseTextureLoaded=function(){var a=this.baseTexture;this.noFrame&&(this.frame=new b.Rectangle(0,0,a.width,a.height)),this.setFrame(this.frame)},b.Texture.prototype.destroy=function(a){a&&this.baseTexture.destroy(),this.valid=!1},b.Texture.prototype.setFrame=function(a){if(this.noFrame=!1,this.frame=a,this.width=a.width,this.height=a.height,this.crop.x=a.x,this.crop.y=a.y,this.crop.width=a.width,this.crop.height=a.height,!this.trim&&(a.x+a.width>this.baseTexture.width||a.y+a.height>this.baseTexture.height)){if(!b.TextureSilentFail)throw new Error("Texture Error: frame does not fit inside the base Texture dimensions "+this);return void(this.valid=!1)}this.valid=a&&a.width&&a.height&&this.baseTexture.source&&this.baseTexture.hasLoaded,this.trim&&(this.width=this.trim.width,this.height=this.trim.height,this.frame.width=this.trim.width,this.frame.height=this.trim.height),this.valid&&this._updateUvs()},b.Texture.prototype._updateUvs=function(){this._uvs||(this._uvs=new b.TextureUvs);var a=this.crop,c=this.baseTexture.width,d=this.baseTexture.height;this._uvs.x0=a.x/c,this._uvs.y0=a.y/d,this._uvs.x1=(a.x+a.width)/c,this._uvs.y1=a.y/d,this._uvs.x2=(a.x+a.width)/c,this._uvs.y2=(a.y+a.height)/d,this._uvs.x3=a.x/c,this._uvs.y3=(a.y+a.height)/d},b.Texture.fromCanvas=function(a,c){var d=b.BaseTexture.fromCanvas(a,c);return new b.Texture(d)},b.TextureUvs=function(){this.x0=0,this.y0=0,this.x1=0,this.y1=0,this.x2=0,this.y2=0,this.x3=0,this.y3=0},b.RenderTexture=function(a,c,d,e,f){if(this.width=a||100,this.height=c||100,this.resolution=f||1,this.frame=new b.Rectangle(0,0,this.width*this.resolution,this.height*this.resolution),this.crop=new b.Rectangle(0,0,this.width*this.resolution,this.height*this.resolution),this.baseTexture=new b.BaseTexture,this.baseTexture.width=this.width*this.resolution,this.baseTexture.height=this.height*this.resolution,this.baseTexture._glTextures=[],this.baseTexture.resolution=this.resolution,this.baseTexture.scaleMode=e||b.scaleModes.DEFAULT,this.baseTexture.hasLoaded=!0,b.Texture.call(this,this.baseTexture,new b.Rectangle(0,0,this.width*this.resolution,this.height*this.resolution)),this.renderer=d||b.defaultRenderer,this.renderer.type===b.WEBGL_RENDERER){var g=this.renderer.gl;this.baseTexture._dirty[g.id]=!1,this.textureBuffer=new b.FilterTexture(g,this.width,this.height,this.baseTexture.scaleMode),this.baseTexture._glTextures[g.id]=this.textureBuffer.texture,this.render=this.renderWebGL,this.projection=new b.Point(.5*this.width,.5*-this.height)}else this.render=this.renderCanvas,this.textureBuffer=new b.CanvasBuffer(this.width*this.resolution,this.height*this.resolution),this.baseTexture.source=this.textureBuffer.canvas;this.valid=!0,this.tempMatrix=new Phaser.Matrix,this._updateUvs()},b.RenderTexture.prototype=Object.create(b.Texture.prototype),b.RenderTexture.prototype.constructor=b.RenderTexture,b.RenderTexture.prototype.resize=function(a,c,d){a===this.width&&c===this.height||(this.valid=a>0&&c>0,this.width=a,this.height=c,this.frame.width=this.crop.width=a*this.resolution,this.frame.height=this.crop.height=c*this.resolution,d&&(this.baseTexture.width=this.width*this.resolution,this.baseTexture.height=this.height*this.resolution),this.renderer.type===b.WEBGL_RENDERER&&(this.projection.x=this.width/2,this.projection.y=-this.height/2),this.valid&&this.textureBuffer.resize(this.width,this.height))},b.RenderTexture.prototype.clear=function(){this.valid&&(this.renderer.type===b.WEBGL_RENDERER&&this.renderer.gl.bindFramebuffer(this.renderer.gl.FRAMEBUFFER,this.textureBuffer.frameBuffer),this.textureBuffer.clear())},b.RenderTexture.prototype.renderWebGL=function(a,b,c){if(this.valid&&0!==a.alpha){var d=a.worldTransform;d.identity(),d.translate(0,2*this.projection.y),b&&d.append(b),d.scale(1,-1);for(var e=0;ea;a++)this.shaders[a].dirty=!0},b.Strip=function(a){b.DisplayObjectContainer.call(this),this.texture=a,this.uvs=new b.Float32Array([0,1,1,1,1,0,0,1]),this.vertices=new b.Float32Array([0,0,100,0,100,100,0,100]),this.colors=new b.Float32Array([1,1,1,1]),this.indices=new b.Uint16Array([0,1,2,3]),this.dirty=!0,this.blendMode=b.blendModes.NORMAL,this.canvasPadding=0,this.drawMode=b.Strip.DrawModes.TRIANGLE_STRIP},b.Strip.prototype=Object.create(b.DisplayObjectContainer.prototype),b.Strip.prototype.constructor=b.Strip,b.Strip.prototype._renderWebGL=function(a){!this.visible||this.alpha<=0||(a.spriteBatch.stop(),this._vertexBuffer||this._initWebGL(a),a.shaderManager.setShader(a.shaderManager.stripShader),this._renderStrip(a),a.spriteBatch.start())},b.Strip.prototype._initWebGL=function(a){var b=a.gl;this._vertexBuffer=b.createBuffer(),this._indexBuffer=b.createBuffer(),this._uvBuffer=b.createBuffer(),this._colorBuffer=b.createBuffer(),b.bindBuffer(b.ARRAY_BUFFER,this._vertexBuffer),b.bufferData(b.ARRAY_BUFFER,this.vertices,b.DYNAMIC_DRAW),b.bindBuffer(b.ARRAY_BUFFER,this._uvBuffer),b.bufferData(b.ARRAY_BUFFER,this.uvs,b.STATIC_DRAW),b.bindBuffer(b.ARRAY_BUFFER,this._colorBuffer),b.bufferData(b.ARRAY_BUFFER,this.colors,b.STATIC_DRAW),b.bindBuffer(b.ELEMENT_ARRAY_BUFFER,this._indexBuffer),b.bufferData(b.ELEMENT_ARRAY_BUFFER,this.indices,b.STATIC_DRAW)},b.Strip.prototype._renderStrip=function(a){var c=a.gl,d=a.projection,e=a.offset,f=a.shaderManager.stripShader,g=this.drawMode===b.Strip.DrawModes.TRIANGLE_STRIP?c.TRIANGLE_STRIP:c.TRIANGLES;a.blendModeManager.setBlendMode(this.blendMode),c.uniformMatrix3fv(f.translationMatrix,!1,this.worldTransform.toArray(!0)),c.uniform2f(f.projectionVector,d.x,-d.y),c.uniform2f(f.offsetVector,-e.x,-e.y),c.uniform1f(f.alpha,this.worldAlpha),this.dirty?(this.dirty=!1,c.bindBuffer(c.ARRAY_BUFFER,this._vertexBuffer),c.bufferData(c.ARRAY_BUFFER,this.vertices,c.STATIC_DRAW),c.vertexAttribPointer(f.aVertexPosition,2,c.FLOAT,!1,0,0),c.bindBuffer(c.ARRAY_BUFFER,this._uvBuffer),c.bufferData(c.ARRAY_BUFFER,this.uvs,c.STATIC_DRAW),c.vertexAttribPointer(f.aTextureCoord,2,c.FLOAT,!1,0,0),c.activeTexture(c.TEXTURE0),this.texture.baseTexture._dirty[c.id]?a.renderer.updateTexture(this.texture.baseTexture):c.bindTexture(c.TEXTURE_2D,this.texture.baseTexture._glTextures[c.id]),c.bindBuffer(c.ELEMENT_ARRAY_BUFFER,this._indexBuffer),c.bufferData(c.ELEMENT_ARRAY_BUFFER,this.indices,c.STATIC_DRAW)):(c.bindBuffer(c.ARRAY_BUFFER,this._vertexBuffer),c.bufferSubData(c.ARRAY_BUFFER,0,this.vertices),c.vertexAttribPointer(f.aVertexPosition,2,c.FLOAT,!1,0,0),c.bindBuffer(c.ARRAY_BUFFER,this._uvBuffer),c.vertexAttribPointer(f.aTextureCoord,2,c.FLOAT,!1,0,0),c.activeTexture(c.TEXTURE0),this.texture.baseTexture._dirty[c.id]?a.renderer.updateTexture(this.texture.baseTexture):c.bindTexture(c.TEXTURE_2D,this.texture.baseTexture._glTextures[c.id]),c.bindBuffer(c.ELEMENT_ARRAY_BUFFER,this._indexBuffer)),c.drawElements(g,this.indices.length,c.UNSIGNED_SHORT,0)},b.Strip.prototype._renderCanvas=function(a){var c=a.context,d=this.worldTransform,e=d.tx*a.resolution+a.shakeX,f=d.ty*a.resolution+a.shakeY;a.roundPixels?c.setTransform(d.a,d.b,d.c,d.d,0|e,0|f):c.setTransform(d.a,d.b,d.c,d.d,e,f),this.drawMode===b.Strip.DrawModes.TRIANGLE_STRIP?this._renderCanvasTriangleStrip(c):this._renderCanvasTriangles(c)},b.Strip.prototype._renderCanvasTriangleStrip=function(a){var b=this.vertices,c=this.uvs,d=b.length/2;this.count++;for(var e=0;d-2>e;e++){var f=2*e;this._renderCanvasDrawTriangle(a,b,c,f,f+2,f+4)}},b.Strip.prototype._renderCanvasTriangles=function(a){var b=this.vertices,c=this.uvs,d=this.indices,e=d.length;this.count++;for(var f=0;e>f;f+=3){var g=2*d[f],h=2*d[f+1],i=2*d[f+2];this._renderCanvasDrawTriangle(a,b,c,g,h,i)}},b.Strip.prototype._renderCanvasDrawTriangle=function(a,b,c,d,e,f){var g=this.texture.baseTexture.source,h=this.texture.width,i=this.texture.height,j=b[d],k=b[e],l=b[f],m=b[d+1],n=b[e+1],o=b[f+1],p=c[d]*h,q=c[e]*h,r=c[f]*h,s=c[d+1]*i,t=c[e+1]*i,u=c[f+1]*i;if(this.canvasPadding>0){var v=this.canvasPadding/this.worldTransform.a,w=this.canvasPadding/this.worldTransform.d,x=(j+k+l)/3,y=(m+n+o)/3,z=j-x,A=m-y,B=Math.sqrt(z*z+A*A);j=x+z/B*(B+v),m=y+A/B*(B+w),z=k-x,A=n-y,B=Math.sqrt(z*z+A*A),k=x+z/B*(B+v),n=y+A/B*(B+w),z=l-x,A=o-y,B=Math.sqrt(z*z+A*A),l=x+z/B*(B+v),o=y+A/B*(B+w)}a.save(),a.beginPath(),a.moveTo(j,m),a.lineTo(k,n),a.lineTo(l,o),a.closePath(),a.clip();var C=p*t+s*r+q*u-t*r-s*q-p*u,D=j*t+s*l+k*u-t*l-s*k-j*u,E=p*k+j*r+q*l-k*r-j*q-p*l,F=p*t*l+s*k*r+j*q*u-j*t*r-s*q*l-p*k*u,G=m*t+s*o+n*u-t*o-s*n-m*u,H=p*n+m*r+q*o-n*r-m*q-p*o,I=p*t*o+s*n*r+m*q*u-m*t*r-s*q*o-p*n*u;a.transform(D/C,G/C,E/C,H/C,F/C,I/C),a.drawImage(g,0,0),a.restore()},b.Strip.prototype.renderStripFlat=function(a){var b=this.context,c=a.vertices,d=c.length/2;this.count++,b.beginPath();for(var e=1;d-2>e;e++){var f=2*e,g=c[f],h=c[f+2],i=c[f+4],j=c[f+1],k=c[f+3],l=c[f+5];b.moveTo(g,j),b.lineTo(h,k),b.lineTo(i,l)}b.fillStyle="#FF0000",b.fill(),b.closePath()},b.Strip.prototype.onTextureUpdate=function(){this.updateFrame=!0},b.Strip.prototype.getBounds=function(a){for(var c=a||this.worldTransform,d=c.a,e=c.b,f=c.c,g=c.d,h=c.tx,i=c.ty,j=-(1/0),k=-(1/0),l=1/0,m=1/0,n=this.vertices,o=0,p=n.length;p>o;o+=2){var q=n[o],r=n[o+1],s=d*q+f*r+h,t=g*r+e*q+i;l=l>s?s:l,m=m>t?t:m,j=s>j?s:j,k=t>k?t:k}if(l===-(1/0)||k===1/0)return b.EmptyRectangle;var u=this._bounds;return u.x=l,u.width=j-l,u.y=m,u.height=k-m,this._currentBounds=u,u},b.Strip.DrawModes={TRIANGLE_STRIP:0,TRIANGLES:1},b.Rope=function(a,c){b.Strip.call(this,a),this.points=c,this.vertices=new b.Float32Array(4*c.length),this.uvs=new b.Float32Array(4*c.length),this.colors=new b.Float32Array(2*c.length),this.indices=new b.Uint16Array(2*c.length),this.refresh()},b.Rope.prototype=Object.create(b.Strip.prototype),b.Rope.prototype.constructor=b.Rope,b.Rope.prototype.refresh=function(){var a=this.points;if(!(a.length<1)){var b=this.uvs,c=a[0],d=this.indices,e=this.colors;this.count-=.2,b[0]=0,b[1]=0,b[2]=0,b[3]=1,e[0]=1,e[1]=1,d[0]=0,d[1]=1;for(var f,g,h,i=a.length,j=1;i>j;j++)f=a[j],g=4*j,h=j/(i-1),j%2?(b[g]=h,b[g+1]=0,b[g+2]=h,b[g+3]=1):(b[g]=h,b[g+1]=0,b[g+2]=h,b[g+3]=1),g=2*j,e[g]=1,e[g+1]=1,g=2*j,d[g]=g,d[g+1]=g+1,c=f}},b.Rope.prototype.updateTransform=function(){var a=this.points;if(!(a.length<1)){var c,d=a[0],e={x:0,y:0};this.count-=.2;for(var f,g,h,i,j,k=this.vertices,l=a.length,m=0;l>m;m++)f=a[m],g=4*m,c=m1&&(h=1),i=Math.sqrt(e.x*e.x+e.y*e.y),j=this.texture.height/2,e.x/=i,e.y/=i,e.x*=j,e.y*=j,k[g]=f.x+e.x,k[g+1]=f.y+e.y,k[g+2]=f.x-e.x,k[g+3]=f.y-e.y,d=f;b.DisplayObjectContainer.prototype.updateTransform.call(this)}},b.Rope.prototype.setTexture=function(a){this.texture=a},b.TilingSprite=function(a,c,d){b.Sprite.call(this,a),this._width=c||128,this._height=d||128,this.tileScale=new b.Point(1,1),this.tileScaleOffset=new b.Point(1,1),this.tilePosition=new b.Point,this.renderable=!0,this.tint=16777215,this.textureDebug=!1,this.blendMode=b.blendModes.NORMAL,this.canvasBuffer=null,this.tilingTexture=null,this.tilePattern=null,this.refreshTexture=!0,this.frameWidth=0,this.frameHeight=0},b.TilingSprite.prototype=Object.create(b.Sprite.prototype),b.TilingSprite.prototype.constructor=b.TilingSprite,b.TilingSprite.prototype.setTexture=function(a){this.texture!==a&&(this.texture=a,this.refreshTexture=!0,this.cachedTint=16777215)},b.TilingSprite.prototype._renderWebGL=function(a){if(this.visible&&this.renderable&&0!==this.alpha){if(this._mask&&(a.spriteBatch.stop(),a.maskManager.pushMask(this.mask,a),a.spriteBatch.start()),this._filters&&(a.spriteBatch.flush(),a.filterManager.pushFilter(this._filterBlock)),this.refreshTexture){if(this.generateTilingTexture(!0,a),!this.tilingTexture)return;this.tilingTexture.needsUpdate&&(a.renderer.updateTexture(this.tilingTexture.baseTexture),this.tilingTexture.needsUpdate=!1)}a.spriteBatch.renderTilingSprite(this);for(var b=0;bn?n:x,x=x>p?p:x,x=x>r?r:x,x=x>t?t:x,y=y>o?o:y,y=y>q?q:y,y=y>s?s:y,y=y>u?u:y,v=n>v?n:v,v=p>v?p:v,v=r>v?r:v,v=t>v?t:v,w=o>w?o:w,w=q>w?q:w,w=s>w?s:w,w=u>w?u:w;var z=this._bounds;return z.x=x,z.width=v-x,z.y=y,z.height=w-y,this._currentBounds=z,z},b.TilingSprite.prototype.destroy=function(){b.Sprite.prototype.destroy.call(this),this.canvasBuffer&&(this.canvasBuffer.destroy(),this.canvasBuffer=null),this.tileScale=null,this.tileScaleOffset=null,this.tilePosition=null,this.tilingTexture&&(this.tilingTexture.destroy(!0),this.tilingTexture=null)},Object.defineProperty(b.TilingSprite.prototype,"width",{get:function(){return this._width},set:function(a){this._width=a}}),Object.defineProperty(b.TilingSprite.prototype,"height",{get:function(){return this._height},set:function(a){this._height=a}}),"undefined"!=typeof exports?("undefined"!=typeof module&&module.exports&&(exports=module.exports=b),exports.PIXI=b):"undefined"!=typeof define&&define.amd?define("PIXI",function(){return a.PIXI=b}()):a.PIXI=b,b}).call(this); //# sourceMappingURL=pixi.map \ No newline at end of file diff --git a/build/p2.map b/build/p2.map index 183c1bdb9..703f1d345 100644 --- a/build/p2.map +++ b/build/p2.map @@ -1 +1 @@ -{"version":3,"file":"p2.min.js","sources":["p2.js"],"names":["e","exports","module","define","f","window","global","self","p2","t","n","r","s","o","u","a","require","i","Error","call","length",1,"_dereq_","Line","Scalar","lineInt","l1","l2","precision","a1","b1","c1","a2","b2","c2","det","eq","segmentsIntersect","p1","q1","q2","dx","dy","da","db","./Scalar",2,"Point","area","b","c","left","leftOn","right","rightOn","tmpPoint1","tmpPoint2","collinear","thresholdAngle","ab","bc","dot","magA","Math","sqrt","magB","angle","acos","sqdist",3,"Polygon","this","vertices","getIntersectionPoint","delta","prototype","at","v","first","last","clear","append","poly","from","to","push","makeCCW","br","reverse","tmp","N","pop","isReflex","tmpLine1","tmpLine2","canSee","p","dist","copy","j","targetPoly","k","getCutEdges","min","tmp1","tmp2","tmpPoly","nDiags","Number","MAX_VALUE","decomp","edges","slice","cutEdges","Array","polys","cutEdge","result","splice","indexOf","isSimple","path","quickDecomp","reflexVertices","steinerPoints","maxlevel","level","upperInt","lowerInt","upperDist","lowerDist","d","closestDist","upperIndex","lowerIndex","closestIndex","lowerPoly","upperPoly","console","warn","removeCollinearPoints","num","./Line","./Point",4,"abs",5,"./Polygon",6,"name","version","description","author","keywords","main","engines","node","repository","type","url","bugs","licenses","devDependencies","grunt","grunt-contrib-jshint","grunt-contrib-nodeunit","grunt-contrib-uglify","grunt-contrib-watch","grunt-browserify","grunt-contrib-concat","dependencies","poly-decomp",7,"AABB","options","lowerBound","vec2","create","upperBound","setFromPoints","points","position","skinSize","l","rotate","cosAngle","cos","sinAngle","sin","x","y","add","aabb","extend","overlaps","u1","u2","containsPoint","point","overlapsRay","ray","dirFracX","direction","dirFracY","t1","t2","t3","t4","tmin","max","tmax","../math/vec2","../utils/Utils",8,"Broadphase","world","boundingVolumeType","Body","BOUNDING_CIRCLE","setWorld","getCollisionPairs","boundingRadiusCheck","bodyA","bodyB","sub","d2","squaredLength","boundingRadius","aabbCheck","getAABB","boundingVolumeCheck","canCollide","KINEMATIC","STATIC","sleepState","SLEEPING","NAIVE","SAP","../objects/Body",9,"NaiveBroadphase","constructor","bodies","Ncolliding","bi","bj","aabbQuery","aabbNeedsUpdate","updateAABB","../collision/Broadphase","../shapes/Circle","../shapes/Particle","../shapes/Plane","../shapes/Shape",10,"Narrowphase","contactEquations","frictionEquations","enableFriction","enabledEquations","slipForce","frictionCoefficient","surfaceVelocity","contactEquationPool","ContactEquationPool","size","frictionEquationPool","FrictionEquationPool","restitution","stiffness","Equation","DEFAULT_STIFFNESS","relaxation","DEFAULT_RELAXATION","frictionStiffness","frictionRelaxation","enableFrictionReduction","collidingBodiesLastStep","TupleDictionary","contactSkinSize","setConvexToCapsuleShapeMiddle","convexShape","capsuleShape","set","radius","pointInConvex","worldPoint","convexOffset","convexAngle","worldVertex0","pic_worldVertex0","worldVertex1","pic_worldVertex1","r0","pic_r0","r1","pic_r1","verts","lastCross","v0","v1","cross","crossLength","Circle","Convex","Shape","Box","yAxis","fromValues","tmp3","tmp4","tmp5","tmp6","tmp7","tmp8","tmp9","tmp10","tmp11","tmp12","tmp13","tmp14","tmp15","tmp16","tmp17","tmp18","tmpArray","bodiesOverlap_shapePositionA","bodiesOverlap_shapePositionB","bodiesOverlap","shapePositionA","shapePositionB","Nshapesi","shapes","shapeA","toWorldFrame","Nshapesj","shapeB","collidedLastStep","id1","id","id2","get","reset","eqs","ce","fe","release","createContactEquation","firstImpact","needsUpdate","enabled","offset","createFrictionEquation","setSlipForce","relativeVelocity","createFrictionFromContact","contactPointA","contactPointB","rotate90cw","normalA","createFrictionFromAverage","numContacts","invNumContacts","scale","normalize","LINE","CONVEX","convexLine","convexBody","lineBody","lineShape","lineOffset","lineAngle","justTest","BOX","lineBox","boxBody","boxShape","boxOffset","boxAngle","convexCapsule_tempRect","width","height","convexCapsule_tempVec","CAPSULE","convexCapsule","convexPosition","capsuleBody","capsulePosition","capsuleAngle","circlePos","result1","circleConvex","result2","convexConvex","lineCapsule","linePosition","capsuleCapsule_tempVec1","capsuleCapsule_tempVec2","capsuleCapsule_tempRect1","capsuleCapsule","si","xi","ai","sj","xj","aj","enableFrictionBefore","circlePosi","circlePosj","circleCircle","rect","lineLine","positionA","angleA","positionB","angleB","PLANE","planeLine","planeBody","planeShape","planeOffset","planeAngle","worldVertex01","worldVertex11","worldEdge","worldEdgeUnit","worldNormal","worldTangent","PARTICLE","particleCapsule","particleBody","particleShape","particlePosition","particleAngle","circleLine","CIRCLE","circleBody","circleShape","circleOffset","circleAngle","lineRadius","circleRadius","orthoDist","lineToCircleOrthoUnit","projectedPoint","centerDist","lineToCircle","lineEndToLineRadius","radiusSum","pos","pos0","pos1","pow","circleCapsule","worldVertex","closestEdgeProjectedPoint","candidate","candidateDist","minCandidate","found","minCandidateDistance","candidateDistance","localVertex","particleConvex","particleOffset","convexToparticle","minEdgeNormal","offsetA","offsetB","radiusA","radiusB","planeConvex","numReported","particlePlane","circleParticle","planeCapsule_tmpCircle","planeCapsule_tmp1","planeCapsule_tmp2","planeCapsule","capsuleOffset","end1","end2","circle","numContacts1","circlePlane","numContacts2","numTotal","planeToCircle","temp","contact","sepAxis","worldPoint0","worldPoint1","penetrationVec","findSeparatingAxis","closestEdge1","getClosestEdge","closestEdge2","closestEdgeA","closestEdgeB","insideNumEdges","pcoa_tmp1","projectConvexOntoAxis","worldAxis","value","localAxis","fsa_tmp1","fsa_tmp2","fsa_tmp3","fsa_tmp4","fsa_tmp5","fsa_tmp6","offset1","angle1","offset2","angle2","maxDist","overlap","edge","normal","span1","span2","swapped","gce_tmp1","gce_tmp2","gce_tmp3","axis","flip","closestEdge","maxDot","circleHeightfield_candidate","circleHeightfield_dist","circleHeightfield_v0","circleHeightfield_v1","circleHeightfield_minCandidate","circleHeightfield_worldNormal","circleHeightfield_minCandidateNormal","HEIGHTFIELD","circleHeightfield","hfBody","hfShape","hfPos","hfAngle","data","heights","w","elementWidth","minCandidateNormal","idxA","floor","idxB","ceil","PI","convexHeightfield_v0","convexHeightfield_v1","convexHeightfield_tilePos","convexHeightfield_tempConvexShape","convexHeightfield","convexPos","tilePos","tileConvex","tileHeight","../equations/ContactEquation","../equations/Equation","../equations/FrictionEquation","../shapes/Box","../shapes/Convex","../utils/ContactEquationPool","../utils/FrictionEquationPool","../utils/TupleDictionary",11,"Ray","checkCollisionResponse","undefined","skipBackfaces","collisionMask","collisionGroup","mode","ANY","callback","update","distanceFromIntersectionSquared","intersect","squaredDistance","CLOSEST","ALL","intersectBodies","shouldStop","body","intersectBody","intersectBody_worldPosition","collisionResponse","worldPosition","shape","worldAngle","intersectShape","distance","_currentBody","_currentShape","raycast","reportIntersection","fraction","faceIndex","hasHit","../collision/AABB","../collision/RaycastResult",12,"RaycastResult","isStopped","getHitDistance","getHitPoint","out","lerp","stop","../collision/Ray",13,"SAPBroadphase","axisList","axisIndex","that","_addBodyHandler","_removeBodyHandler","idx","Utils","appendArray","off","on","sortAxisList","sortList",14,"Constraint","defaults","collideConnected","wakeUpBodies","equations","wakeUp","DISTANCE","GEAR","LOCK","PRISMATIC","REVOLUTE","setStiffness","setRelaxation",15,"DistanceConstraint","localAnchorA","localAnchorB","worldAnchorA","worldAnchorB","maxForce","ri","rj","computeGq","setMaxForce","upperLimitEnabled","upperLimit","lowerLimitEnabled","lowerLimit","normalEquation","G","violating","minForce","rixn","rjxn","getMaxForce","./Constraint",16,"GearConstraint","ratio","AngleLockEquation","maxTorque","setMaxTorque","setRatio","torque","getMaxTorque","../equations/AngleLockEquation",17,"LockConstraint","localAngleB","rot","g","localOffsetB","force","xAxis",18,"PrismaticConstraint","localAxisA","trans","gg","updateJacobian","disableRotationalLock","RotationalLockEquation","velocity","upperLimitEquation","ContactEquation","lowerLimitEquation","motorEquation","motorEnabled","motorSpeed","computeGW","vi","vj","wi","angularVelocity","wj","gmult","worldAxisA","orientedAnchorA","orientedAnchorB","relPosition","enableMotor","disableMotor","setLimits","lower","upper","../equations/RotationalLockEquation",19,"RevoluteConstraint","pivotA","pivotB","worldPivot","localPivotA","localPivotB","worldPivotA","worldPivotB","RotationalVelocityEquation","relAngle","motorIsEnabled","setMotorSpeed","speed","getMotorSpeed","../equations/RotationalVelocityEquation",20,"./Equation",21,"computeB","h","GW","Gq","GiMf","computeGiMf","B",22,"ARRAY_TYPE","epsilon","timeStep","multiplier","qi","qj","computeGWlambda","vlambda","wlambda","iMfi","iMfj","fi","ti","angularForce","fj","tj","invMassi","invMassSolve","invMassj","invIi","invInertiaSolve","invIj","multiply","massMultiplier","computeGiMGt","addToWlambda_temp","addToWlambda_Gi","addToWlambda_Gj","addToWlambda","deltalambda","Gi","Gj","computeInvC","eps",23,"FrictionEquation","getSlipForce",24,"worldVectorA","worldVectorB",25,26,"EventEmitter","listener","context","_listeners","listeners","has","index","emit","event","listenerArray","target",27,"ContactMaterial","materialA","materialB","Material","idCounter","friction","./Material",28,29,"PolyK","GetArea","sum","Triangulate","tgs","avl","al","i0","i1","i2","ax","ay","bx","by","cx","cy","earFound","_convex","_PointInTriangle","px","py","v0x","v0y","v1x","v1y","v2x","v2y","dot00","dot01","dot02","dot11","dot12","invDenom",30,"crossVZ","vec","zcomp","crossZV","toLocalFrame","framePosition","frameAngle","toGlobalFrame","localPoint","vectorToLocalFrame","worldVector","vectorToGlobalFrame","localVector","centroid","clone","subtract","mul","divide","div","sqrDist","len","sqrLen","negate","str","reflect","vector","getLineSegmentsIntersection","p0","p3","getLineSegmentsIntersectionFraction","s1_x","s1_y","s2_x","s2_y",31,"_idCounter","mass","invMass","inertia","invInertia","fixedRotation","fixedX","fixedY","interpolatedPosition","interpolatedAngle","previousPosition","previousAngle","damping","angularDamping","DYNAMIC","allowSleep","wantsToSleep","AWAKE","sleepSpeedLimit","sleepTimeLimit","gravityScale","idleTime","timeLastSleepy","ccdSpeedThreshold","ccdIterations","concavePath","_wakeUpAfterNarrowphase","updateMassProperties","updateSolveMassProperties","setDensity","density","totalArea","getArea","shapeAABB","bodyAngle","computeAABB","updateBoundingRadius","addShape","removeShape","m","I","r2","Icm","computeMomentOfInertia","applyForce","relativePoint","rotForce","Body_applyForce_forceWorld","Body_applyForce_pointWorld","Body_applyForce_pointLocal","applyForceLocal","localForce","worldForce","vectorToWorldFrame","Body_applyImpulse_velo","applyImpulse","impulseVector","velo","rotVelo","Body_applyImpulse_impulseWorld","Body_applyImpulse_pointWorld","Body_applyImpulse_pointLocal","applyImpulseLocal","localImpulse","worldImpulse","fromPolygon","convexes","optimalDecomp","cm","centerOfMass","updateTriangles","updateCenterOfMass","adjustCenterOfMass","adjustCenterOfMass_tmp2","adjustCenterOfMass_tmp3","adjustCenterOfMass_tmp4","offset_times_area","setZeroForce","resetConstraintVelocity","addConstraintVelocity","applyDamping","dt","wakeUpEvent","sleep","sleepEvent","sleepTick","time","dontSleep","speedSquared","speedLimitSquared","SLEEPY","overlapKeeper","bodiesAreOverlapping","integrate_fhMinv","integrate_velodt","integrate","minv","integrateToTimeOfImpact","end","startToEnd","rememberPosition","hit","startToEndAngle","timeOfImpact","rememberAngle","iter","tmid","narrowphase","getVelocityAtPoint","sleepyEvent","../events/EventEmitter",32,"LinearSpring","Spring","setWorldAnchorA","setWorldAnchorB","getWorldAnchorA","getWorldAnchorB","worldDistance","restLength","applyForce_r","applyForce_r_unit","applyForce_u","applyForce_f","applyForce_worldAnchorA","applyForce_worldAnchorB","applyForce_ri","applyForce_rj","applyForce_tmp","r_unit","rlen","ri_x_f","rj_x_f","./Spring",33,"RotationalSpring","restAngle",34,35,"TopDownVehicle","chassisBody","wheels","groundBody","preStepCallback","WheelConstraint","vehicle","forwardEquation","sideEquation","steerValue","engineForce","setSideFriction","sideFriction","localForwardVector","localPosition","apply","setBrakeForce","addToWorld","addBody","wheel","addConstraint","removeFromWorld","removeBody","removeConstraint","addWheel","wheelOptions","worldVelocity","getSpeed","tmpVec","../constraints/Constraint",36,"Capsule","GSSolver","Heightfield","Particle","Plane","Pool","Solver","World","Object","defineProperty","../package.json","./collision/AABB","./collision/Broadphase","./collision/NaiveBroadphase","./collision/Narrowphase","./collision/Ray","./collision/RaycastResult","./collision/SAPBroadphase","./constraints/Constraint","./constraints/DistanceConstraint","./constraints/GearConstraint","./constraints/LockConstraint","./constraints/PrismaticConstraint","./constraints/RevoluteConstraint","./equations/AngleLockEquation","./equations/ContactEquation","./equations/Equation","./equations/FrictionEquation","./equations/RotationalVelocityEquation","./events/EventEmitter","./material/ContactMaterial","./material/Material","./math/vec2","./objects/Body","./objects/LinearSpring","./objects/RotationalSpring","./objects/Spring","./objects/TopDownVehicle","./shapes/Box","./shapes/Capsule","./shapes/Circle","./shapes/Convex","./shapes/Heightfield","./shapes/Line","./shapes/Particle","./shapes/Plane","./shapes/Shape","./solver/GSSolver","./solver/Solver","./utils/ContactEquationPool","./utils/FrictionEquationPool","./utils/Pool","./utils/Utils","./world/World",37,"arguments","axes","updateArea","./Convex","./Shape",38,"intersectCapsule_hitPointWorld","intersectCapsule_normal","intersectCapsule_l0","intersectCapsule_l1","intersectCapsule_unit_y","hitPointWorld","l0","halfLen","diagonalLengthSquared","sqrtDelta","inv2a","d1",39,"Ray_intersectSphere_intersectionPoint","Ray_intersectSphere_normal","intersectionPoint",40,"isArray","triangles","polyk","tmpVec1","tmpVec2","projectOntoLocalAxis","projectOntoWorldAxis","shapeOffset","shapeAngle","polykVerts","id3","updateCenterOfMass_centroid","updateCenterOfMass_centroid_times_mass","updateCenterOfMass_a","updateCenterOfMass_b","updateCenterOfMass_c","centroid_times_mass","triangleArea","denom","numer","intersectConvex_rayStart","intersectConvex_rayEnd","intersectConvex_normal","rayStart","rayEnd","../math/polyk",41,"key","maxValue","minValue","updateMaxMinValues","getLineSegment","start","getSegmentIndex","getClampedSegmentIndex","intersectHeightfield_worldNormal","intersectHeightfield_l0","intersectHeightfield_l1","intersectHeightfield_localFrom","intersectHeightfield_localTo","localFrom","localTo",42,"raycast_normal","raycast_l0","raycast_l1","raycast_unit_y",43,44,"intersectPlane_planePointToFrom","intersectPlane_normal","intersectPlane_len","planePointToFrom","planeToFrom","planeToTo","n_dot_dir",45,"material","sensor",46,"GS","iterations","tolerance","arrayStep","lambda","Bs","invCs","useZeroRHS","frictionIterations","usedIterations","setArrayZero","array","solve","sortEquations","maxIter","maxFrictionIter","Neq","tolSquared","Nbodies","deltalambdaTot","iterateEquation","updateMultipliers","invDt","invC","lambdaj","GWlambda","lambdaj_plus_deltalambda","./Solver",47,"equationSortFunction","mockWorld","solveIsland","island","removeAllEquations","addEquations","getBodies","sort","addEquation","removeEquation","ISLAND",48,"destroy","equation","./Pool",49,50,"IslandNodePool","IslandNode","../world/IslandNode",51,"IslandPool","Island","../world/Island",52,"OverlapKeeper","overlappingShapesLastState","overlappingShapesCurrentState","recordPool","OverlapKeeperRecordPool","tmpDict","tmpArray1","tick","current","keys","lastObject","getByKey","setOverlapping","getNewOverlaps","getDiff","getEndOverlaps","dictA","dictB","lastData","isNewOverlap","idA","idB","getNewBodyOverlaps","getBodyDiff","getEndBodyOverlaps","accumulator","./OverlapKeeperRecord","./OverlapKeeperRecordPool","./TupleDictionary","./Utils",53,"OverlapKeeperRecord",54,"record",55,"objects","resize","object",56,"getKey","dict",57,"howmany","P2_ARRAY_TYPE","Float32Array",58,"bodyIds",59,"IslandManager","nodePool","islandPool","islands","nodes","queue","getUnvisitedNode","Nnodes","visited","visit","bds","Neqs","bfs","root","child","neighbors","split","ni","nj","./../utils/IslandNodePool","./../utils/IslandPool","./Island","./IslandNode",60,61,"springs","disabledBodyCollisionPairs","solver","islandManager","gravity","frictionGravity","useWorldGravityAsFrictionGravity","useFrictionGravityOnZeroGravity","broadphase","constraints","defaultMaterial","defaultContactMaterial","lastTimeStep","applySpringForces","applyGravity","solveConstraints","contactMaterials","stepping","bodiesToBeRemoved","islandSplit","emitImpactEvent","_constraintIdCounter","_bodyIdCounter","postStepEvent","addBodyEvent","removeBodyEvent","addSpringEvent","spring","impactEvent","contactEquation","postBroadphaseEvent","pairs","sleepMode","NO_SLEEPING","beginContactEvent","endContactEvent","preSolveEvent","BODY_SLEEPING","ISLAND_SLEEPING","constraint","addContactMaterial","contactMaterial","removeContactMaterial","getContactMaterial","cmats","step_mg","xiw","xjw","step","timeSinceLastCalled","maxSubSteps","internalStep","substeps","endOverlaps","Nsprings","np","mg","gravityLen","ignoredPairs","Nconstraints","Nresults","runNarrowphase","ev","glen","aiw","ajw","reducedMass","resolver","numFrictionBefore","numFrictionEquations","speedSquaredB","speedLimitSquaredB","speedSquaredA","speedLimitSquaredA","addSpring","evt","removeSpring","getBodyById","disableBodyCollision","enableBodyCollision","cs","cms","hitTest_tmp1","hitTest_tmp2","hitTest","pb","ps","pa","NS","setGlobalStiffness","setGlobalRelaxation","tmpAABB","../../package.json","../collision/Narrowphase","../collision/SAPBroadphase","../constraints/DistanceConstraint","../constraints/GearConstraint","../constraints/LockConstraint","../constraints/PrismaticConstraint","../constraints/RevoluteConstraint","../material/ContactMaterial","../material/Material","../objects/LinearSpring","../objects/RotationalSpring","../shapes/Capsule","../shapes/Line","../solver/GSSolver","../solver/Solver","../utils/OverlapKeeper","./IslandManager"],"mappings":"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"} \ No newline at end of file +{"version":3,"sources":["p2.js"],"names":["e","exports","module","define","f","window","global","self","p2","t","n","r","s","o","u","a","require","i","Error","call","length","1","_dereq_","Line","Scalar","lineInt","l1","l2","precision","a1","b1","c1","a2","b2","c2","det","eq","segmentsIntersect","p1","q1","q2","dx","dy","da","db","./Scalar","2","Point","area","b","c","left","leftOn","right","rightOn","tmpPoint1","tmpPoint2","collinear","thresholdAngle","ab","bc","dot","magA","Math","sqrt","magB","angle","acos","sqdist","3","Polygon","this","vertices","getIntersectionPoint","delta","prototype","at","v","first","last","clear","append","poly","from","to","push","makeCCW","br","reverse","tmp","N","pop","isReflex","tmpLine1","tmpLine2","canSee","p","dist","copy","j","targetPoly","k","getCutEdges","min","tmp1","tmp2","tmpPoly","nDiags","Number","MAX_VALUE","decomp","edges","slice","cutEdges","Array","polys","cutEdge","result","splice","indexOf","isSimple","path","quickDecomp","reflexVertices","steinerPoints","maxlevel","level","upperInt","lowerInt","upperDist","lowerDist","d","closestDist","upperIndex","lowerIndex","closestIndex","lowerPoly","upperPoly","console","warn","removeCollinearPoints","num","./Line","./Point","4","abs","5","./Polygon","6","name","version","description","author","keywords","main","engines","node","repository","type","url","bugs","licenses","devDependencies","grunt","grunt-contrib-jshint","grunt-contrib-nodeunit","grunt-contrib-uglify","grunt-contrib-watch","grunt-browserify","grunt-contrib-concat","dependencies","poly-decomp","7","AABB","options","lowerBound","vec2","create","upperBound","setFromPoints","points","position","skinSize","l","rotate","cosAngle","cos","sinAngle","sin","x","y","add","aabb","extend","overlaps","u1","u2","containsPoint","point","overlapsRay","ray","dirFracX","direction","dirFracY","t1","t2","t3","t4","tmin","max","tmax","../math/vec2","../utils/Utils","8","Broadphase","world","boundingVolumeType","Body","BOUNDING_CIRCLE","setWorld","getCollisionPairs","boundingRadiusCheck","bodyA","bodyB","sub","d2","squaredLength","boundingRadius","aabbCheck","getAABB","boundingVolumeCheck","canCollide","KINEMATIC","STATIC","sleepState","SLEEPING","NAIVE","SAP","../objects/Body","9","NaiveBroadphase","constructor","bodies","Ncolliding","bi","bj","aabbQuery","aabbNeedsUpdate","updateAABB","../collision/Broadphase","../shapes/Circle","../shapes/Particle","../shapes/Plane","../shapes/Shape","10","Narrowphase","contactEquations","frictionEquations","enableFriction","enabledEquations","slipForce","frictionCoefficient","surfaceVelocity","contactEquationPool","ContactEquationPool","size","frictionEquationPool","FrictionEquationPool","restitution","stiffness","Equation","DEFAULT_STIFFNESS","relaxation","DEFAULT_RELAXATION","frictionStiffness","frictionRelaxation","enableFrictionReduction","collidingBodiesLastStep","TupleDictionary","contactSkinSize","setConvexToCapsuleShapeMiddle","convexShape","capsuleShape","set","radius","pointInConvex","worldPoint","convexOffset","convexAngle","worldVertex0","pic_worldVertex0","worldVertex1","pic_worldVertex1","r0","pic_r0","r1","pic_r1","verts","lastCross","v0","v1","cross","crossLength","Circle","Convex","Shape","Box","yAxis","fromValues","tmp3","tmp4","tmp5","tmp6","tmp7","tmp8","tmp9","tmp10","tmp11","tmp12","tmp13","tmp14","tmp15","tmp16","tmp17","tmp18","tmpArray","bodiesOverlap_shapePositionA","bodiesOverlap_shapePositionB","bodiesOverlap","shapePositionA","shapePositionB","Nshapesi","shapes","shapeA","toWorldFrame","Nshapesj","shapeB","collidedLastStep","id1","id","id2","get","reset","eqs","ce","fe","release","createContactEquation","firstImpact","needsUpdate","enabled","offset","createFrictionEquation","setSlipForce","relativeVelocity","createFrictionFromContact","contactPointA","contactPointB","rotate90cw","normalA","createFrictionFromAverage","numContacts","invNumContacts","scale","normalize","LINE","CONVEX","convexLine","convexBody","lineBody","lineShape","lineOffset","lineAngle","justTest","BOX","lineBox","boxBody","boxShape","boxOffset","boxAngle","convexCapsule_tempRect","width","height","convexCapsule_tempVec","CAPSULE","convexCapsule","convexPosition","capsuleBody","capsulePosition","capsuleAngle","circlePos","result1","circleConvex","result2","convexConvex","lineCapsule","linePosition","capsuleCapsule_tempVec1","capsuleCapsule_tempVec2","capsuleCapsule_tempRect1","capsuleCapsule","si","xi","ai","sj","xj","aj","enableFrictionBefore","circlePosi","circlePosj","circleCircle","rect","lineLine","positionA","angleA","positionB","angleB","PLANE","planeLine","planeBody","planeShape","planeOffset","planeAngle","worldVertex01","worldVertex11","worldEdge","worldEdgeUnit","worldNormal","worldTangent","PARTICLE","particleCapsule","particleBody","particleShape","particlePosition","particleAngle","circleLine","CIRCLE","circleBody","circleShape","circleOffset","circleAngle","lineRadius","circleRadius","orthoDist","lineToCircleOrthoUnit","projectedPoint","centerDist","lineToCircle","lineEndToLineRadius","radiusSum","pos","pos0","pos1","pow","circleCapsule","worldVertex","closestEdgeProjectedPoint","candidate","candidateDist","minCandidate","found","minCandidateDistance","candidateDistance","localVertex","particleConvex","particleOffset","convexToparticle","minEdgeNormal","offsetA","offsetB","radiusA","radiusB","planeConvex","numReported","particlePlane","circleParticle","planeCapsule_tmpCircle","planeCapsule_tmp1","planeCapsule_tmp2","planeCapsule","capsuleOffset","end1","end2","circle","numContacts1","circlePlane","numContacts2","numTotal","planeToCircle","temp","contact","sepAxis","worldPoint0","worldPoint1","penetrationVec","findSeparatingAxis","closestEdge1","getClosestEdge","closestEdge2","closestEdgeA","closestEdgeB","insideNumEdges","pcoa_tmp1","projectConvexOntoAxis","worldAxis","value","localAxis","fsa_tmp1","fsa_tmp2","fsa_tmp3","fsa_tmp4","fsa_tmp5","fsa_tmp6","offset1","angle1","offset2","angle2","maxDist","overlap","edge","normal","span1","span2","swapped","gce_tmp1","gce_tmp2","gce_tmp3","axis","flip","closestEdge","maxDot","circleHeightfield_candidate","circleHeightfield_dist","circleHeightfield_v0","circleHeightfield_v1","circleHeightfield_minCandidate","circleHeightfield_worldNormal","circleHeightfield_minCandidateNormal","HEIGHTFIELD","circleHeightfield","hfBody","hfShape","hfPos","hfAngle","data","heights","w","elementWidth","minCandidateNormal","idxA","floor","idxB","ceil","PI","convexHeightfield_v0","convexHeightfield_v1","convexHeightfield_tilePos","convexHeightfield_tempConvexShape","convexHeightfield","convexPos","tilePos","tileConvex","tileHeight","../equations/ContactEquation","../equations/Equation","../equations/FrictionEquation","../shapes/Box","../shapes/Convex","../utils/ContactEquationPool","../utils/FrictionEquationPool","../utils/TupleDictionary","11","Ray","checkCollisionResponse","undefined","skipBackfaces","collisionMask","collisionGroup","mode","ANY","callback","update","distanceFromIntersectionSquared","intersect","squaredDistance","CLOSEST","ALL","intersectBodies","shouldStop","body","intersectBody","intersectBody_worldPosition","collisionResponse","worldPosition","shape","worldAngle","intersectShape","distance","_currentBody","_currentShape","raycast","reportIntersection","fraction","faceIndex","hasHit","../collision/AABB","../collision/RaycastResult","12","RaycastResult","isStopped","getHitDistance","getHitPoint","out","lerp","stop","../collision/Ray","13","SAPBroadphase","axisList","axisIndex","that","_addBodyHandler","_removeBodyHandler","idx","Utils","appendArray","off","on","sortAxisList","sortList","14","Constraint","defaults","collideConnected","wakeUpBodies","equations","wakeUp","DISTANCE","GEAR","LOCK","PRISMATIC","REVOLUTE","setStiffness","setRelaxation","15","DistanceConstraint","localAnchorA","localAnchorB","worldAnchorA","worldAnchorB","maxForce","ri","rj","computeGq","setMaxForce","upperLimitEnabled","upperLimit","lowerLimitEnabled","lowerLimit","normalEquation","G","violating","minForce","rixn","rjxn","getMaxForce","./Constraint","16","GearConstraint","ratio","AngleLockEquation","maxTorque","setMaxTorque","setRatio","torque","getMaxTorque","../equations/AngleLockEquation","17","LockConstraint","localAngleB","rot","g","localOffsetB","force","xAxis","18","PrismaticConstraint","localAxisA","trans","gg","updateJacobian","disableRotationalLock","RotationalLockEquation","velocity","upperLimitEquation","ContactEquation","lowerLimitEquation","motorEquation","motorEnabled","motorSpeed","computeGW","vi","vj","wi","angularVelocity","wj","gmult","worldAxisA","orientedAnchorA","orientedAnchorB","relPosition","enableMotor","disableMotor","setLimits","lower","upper","../equations/RotationalLockEquation","19","RevoluteConstraint","pivotA","pivotB","worldPivot","localPivotA","localPivotB","worldPivotA","worldPivotB","RotationalVelocityEquation","relAngle","motorIsEnabled","setMotorSpeed","speed","getMotorSpeed","../equations/RotationalVelocityEquation","20","./Equation","21","computeB","h","GW","Gq","GiMf","computeGiMf","B","22","ARRAY_TYPE","epsilon","timeStep","multiplier","qi","qj","computeGWlambda","vlambda","wlambda","iMfi","iMfj","fi","ti","angularForce","fj","tj","invMassi","invMassSolve","invMassj","invIi","invInertiaSolve","invIj","multiply","massMultiplier","computeGiMGt","addToWlambda_temp","addToWlambda_Gi","addToWlambda_Gj","addToWlambda","deltalambda","Gi","Gj","computeInvC","eps","23","FrictionEquation","getSlipForce","24","worldVectorA","worldVectorB","25","26","EventEmitter","listener","context","_listeners","listeners","has","index","emit","event","listenerArray","target","27","ContactMaterial","materialA","materialB","Material","idCounter","friction","./Material","28","29","PolyK","GetArea","sum","Triangulate","tgs","avl","al","i0","i1","i2","ax","ay","bx","by","cx","cy","earFound","_convex","_PointInTriangle","px","py","v0x","v0y","v1x","v1y","v2x","v2y","dot00","dot01","dot02","dot11","dot12","invDenom","30","crossVZ","vec","zcomp","crossZV","toLocalFrame","framePosition","frameAngle","toGlobalFrame","localPoint","vectorToLocalFrame","worldVector","vectorToGlobalFrame","localVector","centroid","clone","subtract","mul","divide","div","sqrDist","len","sqrLen","negate","str","reflect","vector","getLineSegmentsIntersection","p0","p3","getLineSegmentsIntersectionFraction","s1_x","s1_y","s2_x","s2_y","31","_idCounter","mass","invMass","inertia","invInertia","fixedRotation","fixedX","fixedY","interpolatedPosition","interpolatedAngle","previousPosition","previousAngle","damping","angularDamping","DYNAMIC","allowSleep","wantsToSleep","AWAKE","sleepSpeedLimit","sleepTimeLimit","gravityScale","idleTime","timeLastSleepy","ccdSpeedThreshold","ccdIterations","concavePath","_wakeUpAfterNarrowphase","updateMassProperties","updateSolveMassProperties","setDensity","density","totalArea","getArea","shapeAABB","bodyAngle","computeAABB","updateBoundingRadius","addShape","removeShape","m","I","r2","Icm","computeMomentOfInertia","applyForce","relativePoint","rotForce","Body_applyForce_forceWorld","Body_applyForce_pointWorld","Body_applyForce_pointLocal","applyForceLocal","localForce","worldForce","vectorToWorldFrame","Body_applyImpulse_velo","applyImpulse","impulseVector","velo","rotVelo","Body_applyImpulse_impulseWorld","Body_applyImpulse_pointWorld","Body_applyImpulse_pointLocal","applyImpulseLocal","localImpulse","worldImpulse","fromPolygon","convexes","optimalDecomp","cm","centerOfMass","updateTriangles","updateCenterOfMass","adjustCenterOfMass","adjustCenterOfMass_tmp2","adjustCenterOfMass_tmp3","adjustCenterOfMass_tmp4","offset_times_area","setZeroForce","resetConstraintVelocity","addConstraintVelocity","applyDamping","dt","wakeUpEvent","sleep","sleepEvent","sleepTick","time","dontSleep","speedSquared","speedLimitSquared","SLEEPY","overlapKeeper","bodiesAreOverlapping","integrate_fhMinv","integrate_velodt","integrate","minv","integrateToTimeOfImpact","end","startToEnd","rememberPosition","hit","startToEndAngle","timeOfImpact","rememberAngle","iter","tmid","narrowphase","getVelocityAtPoint","sleepyEvent","../events/EventEmitter","32","LinearSpring","Spring","setWorldAnchorA","setWorldAnchorB","getWorldAnchorA","getWorldAnchorB","worldDistance","restLength","applyForce_r","applyForce_r_unit","applyForce_u","applyForce_f","applyForce_worldAnchorA","applyForce_worldAnchorB","applyForce_ri","applyForce_rj","applyForce_tmp","r_unit","rlen","ri_x_f","rj_x_f","./Spring","33","RotationalSpring","restAngle","34","35","TopDownVehicle","chassisBody","wheels","groundBody","preStepCallback","WheelConstraint","vehicle","forwardEquation","sideEquation","steerValue","engineForce","setSideFriction","sideFriction","localForwardVector","localPosition","apply","setBrakeForce","addToWorld","addBody","wheel","addConstraint","removeFromWorld","removeBody","removeConstraint","addWheel","wheelOptions","worldVelocity","getSpeed","tmpVec","../constraints/Constraint","36","Capsule","GSSolver","Heightfield","Particle","Plane","Pool","Solver","World","Object","defineProperty","../package.json","./collision/AABB","./collision/Broadphase","./collision/NaiveBroadphase","./collision/Narrowphase","./collision/Ray","./collision/RaycastResult","./collision/SAPBroadphase","./constraints/Constraint","./constraints/DistanceConstraint","./constraints/GearConstraint","./constraints/LockConstraint","./constraints/PrismaticConstraint","./constraints/RevoluteConstraint","./equations/AngleLockEquation","./equations/ContactEquation","./equations/Equation","./equations/FrictionEquation","./equations/RotationalVelocityEquation","./events/EventEmitter","./material/ContactMaterial","./material/Material","./math/vec2","./objects/Body","./objects/LinearSpring","./objects/RotationalSpring","./objects/Spring","./objects/TopDownVehicle","./shapes/Box","./shapes/Capsule","./shapes/Circle","./shapes/Convex","./shapes/Heightfield","./shapes/Line","./shapes/Particle","./shapes/Plane","./shapes/Shape","./solver/GSSolver","./solver/Solver","./utils/ContactEquationPool","./utils/FrictionEquationPool","./utils/Pool","./utils/Utils","./world/World","37","arguments","axes","updateArea","./Convex","./Shape","38","intersectCapsule_hitPointWorld","intersectCapsule_normal","intersectCapsule_l0","intersectCapsule_l1","intersectCapsule_unit_y","hitPointWorld","l0","halfLen","diagonalLengthSquared","sqrtDelta","inv2a","d1","39","Ray_intersectSphere_intersectionPoint","Ray_intersectSphere_normal","intersectionPoint","40","isArray","triangles","polyk","tmpVec1","tmpVec2","projectOntoLocalAxis","projectOntoWorldAxis","shapeOffset","shapeAngle","polykVerts","id3","updateCenterOfMass_centroid","updateCenterOfMass_centroid_times_mass","updateCenterOfMass_a","updateCenterOfMass_b","updateCenterOfMass_c","centroid_times_mass","triangleArea","denom","numer","intersectConvex_rayStart","intersectConvex_rayEnd","intersectConvex_normal","rayStart","rayEnd","../math/polyk","41","key","maxValue","minValue","updateMaxMinValues","getLineSegment","start","getSegmentIndex","getClampedSegmentIndex","intersectHeightfield_worldNormal","intersectHeightfield_l0","intersectHeightfield_l1","intersectHeightfield_localFrom","intersectHeightfield_localTo","localFrom","localTo","42","raycast_normal","raycast_l0","raycast_l1","raycast_unit_y","43","44","intersectPlane_planePointToFrom","intersectPlane_normal","intersectPlane_len","planePointToFrom","planeToFrom","planeToTo","n_dot_dir","45","material","sensor","46","GS","iterations","tolerance","arrayStep","lambda","Bs","invCs","useZeroRHS","frictionIterations","usedIterations","setArrayZero","array","solve","sortEquations","maxIter","maxFrictionIter","Neq","tolSquared","Nbodies","deltalambdaTot","iterateEquation","updateMultipliers","invDt","invC","lambdaj","GWlambda","lambdaj_plus_deltalambda","./Solver","47","equationSortFunction","mockWorld","solveIsland","island","removeAllEquations","addEquations","getBodies","sort","addEquation","removeEquation","ISLAND","48","destroy","equation","./Pool","49","50","IslandNodePool","IslandNode","../world/IslandNode","51","IslandPool","Island","../world/Island","52","OverlapKeeper","overlappingShapesLastState","overlappingShapesCurrentState","recordPool","OverlapKeeperRecordPool","tmpDict","tmpArray1","tick","current","keys","lastObject","getByKey","setOverlapping","getNewOverlaps","getDiff","getEndOverlaps","dictA","dictB","lastData","isNewOverlap","idA","idB","getNewBodyOverlaps","getBodyDiff","getEndBodyOverlaps","accumulator","./OverlapKeeperRecord","./OverlapKeeperRecordPool","./TupleDictionary","./Utils","53","OverlapKeeperRecord","54","record","55","objects","resize","object","56","getKey","dict","57","howmany","P2_ARRAY_TYPE","Float32Array","58","bodyIds","59","IslandManager","nodePool","islandPool","islands","nodes","queue","getUnvisitedNode","Nnodes","visited","visit","bds","Neqs","bfs","root","child","neighbors","split","ni","nj","./../utils/IslandNodePool","./../utils/IslandPool","./Island","./IslandNode","60","61","springs","disabledBodyCollisionPairs","solver","islandManager","gravity","frictionGravity","useWorldGravityAsFrictionGravity","useFrictionGravityOnZeroGravity","broadphase","constraints","defaultMaterial","defaultContactMaterial","lastTimeStep","applySpringForces","applyGravity","solveConstraints","contactMaterials","stepping","bodiesToBeRemoved","islandSplit","emitImpactEvent","_constraintIdCounter","_bodyIdCounter","postStepEvent","addBodyEvent","removeBodyEvent","addSpringEvent","spring","impactEvent","contactEquation","postBroadphaseEvent","pairs","sleepMode","NO_SLEEPING","beginContactEvent","endContactEvent","preSolveEvent","BODY_SLEEPING","ISLAND_SLEEPING","constraint","addContactMaterial","contactMaterial","removeContactMaterial","getContactMaterial","cmats","step_mg","xiw","xjw","step","timeSinceLastCalled","maxSubSteps","internalStep","substeps","endOverlaps","Nsprings","np","mg","gravityLen","ignoredPairs","Nconstraints","Nresults","runNarrowphase","ev","glen","aiw","ajw","reducedMass","resolver","numFrictionBefore","numFrictionEquations","speedSquaredB","speedLimitSquaredB","speedSquaredA","speedLimitSquaredA","addSpring","evt","removeSpring","getBodyById","disableBodyCollision","enableBodyCollision","cs","cms","hitTest_tmp1","hitTest_tmp2","hitTest","pb","ps","pa","NS","setGlobalStiffness","setGlobalRelaxation","tmpAABB","../../package.json","../collision/Narrowphase","../collision/SAPBroadphase","../constraints/DistanceConstraint","../constraints/GearConstraint","../constraints/LockConstraint","../constraints/PrismaticConstraint","../constraints/RevoluteConstraint","../material/ContactMaterial","../material/Material","../objects/LinearSpring","../objects/RotationalSpring","../shapes/Capsule","../shapes/Line","../solver/GSSolver","../solver/Solver","../utils/OverlapKeeper","./IslandManager"],"mappings":"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","file":"p2.min.js"} \ No newline at end of file diff --git a/build/p2.min.js b/build/p2.min.js index 7cd6367aa..943bf09ad 100644 --- a/build/p2.min.js +++ b/build/p2.min.js @@ -1,7 +1,7 @@ -/* Phaser v2.5.0 P2.JS Build - http://phaser.io - @photonstorm - (c) 2016 Photon Storm Ltd. */ +/* Phaser v2.5.1 P2.JS Build - http://phaser.io - @photonstorm - (c) 2016 Photon Storm Ltd. */ -!function(a){if("object"==typeof exports)module.exports=a();else if("function"==typeof define,1){var b;"undefined"!=typeof window?b=window:"undefined"!=typeof global?b=global:"undefined"!=typeof self&&(b=self),b.p2=a()}else define(a)}(function(){return function a(b,c,d){function e(g,h){if(!c[g]){if(!b[g]){var i="function"==typeof require&&require;if(!h&&i)return i(g,!0);if(f)return f(g,!0);throw new Error("Cannot find module '"+g+"'")}var j=c[g]={exports:{}};b[g][0].call(j.exports,function(a){var c=b[g][1][a];return e(c?c:a)},j,j.exports,a,b,c,d)}return c[g].exports}for(var f="function"==typeof require&&require,g=0;g=0&&1>=i&&j>=0&&1>=j}},{"./Scalar":4}],2:[function(a,b,c){function d(){}b.exports=d,d.area=function(a,b,c){return(b[0]-a[0])*(c[1]-a[1])-(c[0]-a[0])*(b[1]-a[1])},d.left=function(a,b,c){return d.area(a,b,c)>0},d.leftOn=function(a,b,c){return d.area(a,b,c)>=0},d.right=function(a,b,c){return d.area(a,b,c)<0},d.rightOn=function(a,b,c){return d.area(a,b,c)<=0};var e=[],f=[];d.collinear=function(a,b,c,g){if(g){var h=e,i=f;h[0]=b[0]-a[0],h[1]=b[1]-a[1],i[0]=c[0]-b[0],i[1]=c[1]-b[1];var j=h[0]*i[0]+h[1]*i[1],k=Math.sqrt(h[0]*h[0]+h[1]*h[1]),l=Math.sqrt(i[0]*i[0]+i[1]*i[1]),m=Math.acos(j/(k*l));return g>m}return 0==d.area(a,b,c)},d.sqdist=function(a,b){var c=b[0]-a[0],d=b[1]-a[1];return c*c+d*d}},{}],3:[function(a,b,c){function d(){this.vertices=[]}function e(a,b,c,d,e){e=e||0;var f=b[1]-a[1],g=a[0]-b[0],i=f*a[0]+g*a[1],j=d[1]-c[1],k=c[0]-d[0],l=j*c[0]+k*c[1],m=f*k-j*g;return h.eq(m,0,e)?[0,0]:[(k*i-g*l)/m,(f*l-j*i)/m]}var f=a("./Line"),g=a("./Point"),h=a("./Scalar");b.exports=d,d.prototype.at=function(a){var b=this.vertices,c=b.length;return b[0>a?a%c+c:a%c]},d.prototype.first=function(){return this.vertices[0]},d.prototype.last=function(){return this.vertices[this.vertices.length-1]},d.prototype.clear=function(){this.vertices.length=0},d.prototype.append=function(a,b,c){if("undefined"==typeof b)throw new Error("From is not given!");if("undefined"==typeof c)throw new Error("To is not given!");if(b>c-1)throw new Error("lol1");if(c>a.vertices.length)throw new Error("lol2");if(0>b)throw new Error("lol3");for(var d=b;c>d;d++)this.vertices.push(a.vertices[d])},d.prototype.makeCCW=function(){for(var a=0,b=this.vertices,c=1;cb[a][0])&&(a=c);g.left(this.at(a-1),this.at(a),this.at(a+1))||this.reverse()},d.prototype.reverse=function(){for(var a=[],b=0,c=this.vertices.length;b!==c;b++)a.push(this.vertices.pop());this.vertices=a},d.prototype.isReflex=function(a){return g.right(this.at(a-1),this.at(a),this.at(a+1))};var i=[],j=[];d.prototype.canSee=function(a,b){var c,d,e=i,h=j;if(g.leftOn(this.at(a+1),this.at(a),this.at(b))&&g.rightOn(this.at(a-1),this.at(a),this.at(b)))return!1;d=g.sqdist(this.at(a),this.at(b));for(var k=0;k!==this.vertices.length;++k)if((k+1)%this.vertices.length!==a&&k!==a&&g.leftOn(this.at(a),this.at(b),this.at(k+1))&&g.rightOn(this.at(a),this.at(b),this.at(k))&&(e[0]=this.at(a),e[1]=this.at(b),h[0]=this.at(k),h[1]=this.at(k+1),c=f.lineInt(e,h),g.sqdist(this.at(a),c)a)for(var f=a;b>=f;f++)e.vertices.push(this.vertices[f]);else{for(var f=0;b>=f;f++)e.vertices.push(this.vertices[f]);for(var f=a;f0?this.slice(a):[this]},d.prototype.slice=function(a){if(0==a.length)return[this];if(a instanceof Array&&a.length&&a[0]instanceof Array&&2==a[0].length&&a[0][0]instanceof Array){for(var b=[this],c=0;cc;c++)if(f.segmentsIntersect(a[b],a[b+1],a[c],a[c+1]))return!1;for(var b=1;bh)return console.warn("quickDecomp: max level ("+h+") reached."),a;for(var x=0;xo&&(n=o,k=l,r=y))),g.left(v.at(x+1),v.at(x),v.at(y+1))&&g.rightOn(v.at(x+1),v.at(x),v.at(y))&&(l=e(v.at(x+1),v.at(x),v.at(y),v.at(y+1)),g.left(v.at(x-1),v.at(x),l)&&(o=g.sqdist(v.vertices[x],l),m>o&&(m=o,j=l,q=y)));if(r==(q+1)%this.vertices.length)l[0]=(k[0]+j[0])/2,l[1]=(k[1]+j[1])/2,c.push(l),q>x?(t.append(v,x,q+1),t.vertices.push(l),u.vertices.push(l),0!=r&&u.append(v,r,v.vertices.length),u.append(v,0,x+1)):(0!=x&&t.append(v,x,v.vertices.length),t.append(v,0,q+1),t.vertices.push(l),u.vertices.push(l),u.append(v,r,x+1));else{if(r>q&&(q+=this.vertices.length),p=Number.MAX_VALUE,r>q)return a;for(var y=r;q>=y;++y)g.leftOn(v.at(x-1),v.at(x),v.at(y))&&g.rightOn(v.at(x+1),v.at(x),v.at(y))&&(o=g.sqdist(v.at(x),v.at(y)),p>o&&(p=o,s=y%this.vertices.length));s>x?(t.append(v,x,s+1),0!=s&&u.append(v,s,w.length),u.append(v,0,x+1)):(0!=x&&t.append(v,x,w.length),t.append(v,0,s+1),u.append(v,s,x+1))}return t.vertices.length3&&c>=0;--c)g.collinear(this.at(c-1),this.at(c),this.at(c+1),a)&&(this.vertices.splice(c%this.vertices.length,1),c--,b++);return b}},{"./Line":1,"./Point":2,"./Scalar":4}],4:[function(a,b,c){function d(){}b.exports=d,d.eq=function(a,b,c){return c=c||0,Math.abs(a-b) (http://steffe.se)",keywords:["p2.js","p2","physics","engine","2d"],main:"./src/p2.js",engines:{node:"*"},repository:{type:"git",url:"https://github.com/schteppe/p2.js.git"},bugs:{url:"https://github.com/schteppe/p2.js/issues"},licenses:[{type:"MIT"}],devDependencies:{grunt:"^0.4.5","grunt-contrib-jshint":"^0.11.2","grunt-contrib-nodeunit":"^0.4.1","grunt-contrib-uglify":"~0.4.0","grunt-contrib-watch":"~0.5.0","grunt-browserify":"~2.0.1","grunt-contrib-concat":"^0.4.0"},dependencies:{"poly-decomp":"0.1.0"}}},{}],7:[function(a,b,c){function d(a){this.lowerBound=e.create(),a&&a.lowerBound&&e.copy(this.lowerBound,a.lowerBound),this.upperBound=e.create(),a&&a.upperBound&&e.copy(this.upperBound,a.upperBound)}var e=a("../math/vec2");a("../utils/Utils");b.exports=d;var f=e.create();d.prototype.setFromPoints=function(a,b,c,d){var g=this.lowerBound,h=this.upperBound;"number"!=typeof c&&(c=0),0!==c?e.rotate(g,a[0],c):e.copy(g,a[0]),e.copy(h,g);for(var i=Math.cos(c),j=Math.sin(c),k=1;ko;o++)l[o]>h[o]&&(h[o]=l[o]),l[o]c&&(this.lowerBound[b]=c);var d=a.upperBound[b];this.upperBound[b]i?-1:h>i?-1:h}},{"../math/vec2":30,"../utils/Utils":57}],8:[function(a,b,c){function d(a){this.type=a,this.result=[],this.world=null,this.boundingVolumeType=d.AABB}var e=a("../math/vec2"),f=a("../objects/Body");b.exports=d,d.AABB=1,d.BOUNDING_CIRCLE=2,d.prototype.setWorld=function(a){this.world=a},d.prototype.getCollisionPairs=function(a){};var g=e.create();d.boundingRadiusCheck=function(a,b){e.sub(g,a.position,b.position);var c=e.squaredLength(g),d=a.boundingRadius+b.boundingRadius;return d*d>=c},d.aabbCheck=function(a,b){return a.getAABB().overlaps(b.getAABB())},d.prototype.boundingVolumeCheck=function(a,b){var c;switch(this.boundingVolumeType){case d.BOUNDING_CIRCLE:c=d.boundingRadiusCheck(a,b);break;case d.AABB:c=d.aabbCheck(a,b);break;default:throw new Error("Bounding volume type not recognized: "+this.boundingVolumeType)}return c},d.canCollide=function(a,b){var c=f.KINEMATIC,d=f.STATIC;return a.type===d&&b.type===d?!1:a.type===c&&b.type===d||a.type===d&&b.type===c?!1:a.type===c&&b.type===c?!1:a.sleepState===f.SLEEPING&&b.sleepState===f.SLEEPING?!1:a.sleepState===f.SLEEPING&&b.type===d||b.sleepState===f.SLEEPING&&a.type===d?!1:!0},d.NAIVE=1,d.SAP=2},{"../math/vec2":30,"../objects/Body":31}],9:[function(a,b,c){function d(){e.call(this,e.NAIVE)}var e=(a("../shapes/Circle"),a("../shapes/Plane"),a("../shapes/Shape"),a("../shapes/Particle"),a("../collision/Broadphase"));a("../math/vec2");b.exports=d,d.prototype=new e,d.prototype.constructor=d,d.prototype.getCollisionPairs=function(a){var b=a.bodies,c=this.result;c.length=0;for(var d=0,f=b.length;d!==f;d++)for(var g=b[d],h=0;d>h;h++){var i=b[h];e.canCollide(g,i)&&this.boundingVolumeCheck(g,i)&&c.push(g,i)}return c},d.prototype.aabbQuery=function(a,b,c){c=c||[];for(var d=a.bodies,e=0;e=r*n)return!1;n=r}return!0}var g=a("../math/vec2"),h=g.sub,i=g.add,j=g.dot,k=(a("../utils/Utils"),a("../utils/ContactEquationPool")),l=a("../utils/FrictionEquationPool"),m=a("../utils/TupleDictionary"),n=a("../equations/Equation"),o=(a("../equations/ContactEquation"),a("../equations/FrictionEquation"),a("../shapes/Circle")),p=a("../shapes/Convex"),q=a("../shapes/Shape"),r=(a("../objects/Body"),a("../shapes/Box"));b.exports=d;var s=g.fromValues(0,1),t=g.fromValues(0,0),u=g.fromValues(0,0),v=g.fromValues(0,0),w=g.fromValues(0,0),x=g.fromValues(0,0),y=g.fromValues(0,0),z=g.fromValues(0,0),A=g.fromValues(0,0),B=g.fromValues(0,0),C=g.fromValues(0,0),D=g.fromValues(0,0),E=g.fromValues(0,0),F=g.fromValues(0,0),G=g.fromValues(0,0),H=g.fromValues(0,0),I=g.fromValues(0,0),J=g.fromValues(0,0),K=g.fromValues(0,0),L=[],M=g.create(),N=g.create();d.prototype.bodiesOverlap=function(a,b){for(var c=M,d=N,e=0,f=a.shapes.length;e!==f;e++){var g=a.shapes[e];a.toWorldFrame(c,g.position);for(var h=0,i=b.shapes.length;h!==i;h++){var j=b.shapes[h];if(b.toWorldFrame(d,j.position),this[g.type|j.type](a,g,c,g.angle+a.angle,b,j,d,j.angle+b.angle,!0))return!0}}return!1},d.prototype.collidedLastStep=function(a,b){var c=0|a.id,d=0|b.id;return!!this.collidingBodiesLastStep.get(c,d)},d.prototype.reset=function(){this.collidingBodiesLastStep.reset();for(var a=this.contactEquations,b=a.length;b--;){var c=a[b],d=c.bodyA.id,e=c.bodyB.id;this.collidingBodiesLastStep.set(d,e,!0)}for(var f=this.contactEquations,g=this.frictionEquations,h=0;hp;p++){g.set(m,(0===p?-1:1)*b.length/2,0),g.rotate(m,m,d),g.add(m,m,c);for(var q=0;2>q;q++){g.set(n,(0===q?-1:1)*h.length/2,0),g.rotate(n,n,j),g.add(n,n,i),this.enableFrictionReduction&&(l=this.enableFriction,this.enableFriction=!1);var r=this.circleCircle(a,b,m,d,f,h,n,j,k,b.radius,h.radius);if(this.enableFrictionReduction&&(this.enableFriction=l),k&&r)return!0;o+=r}}this.enableFrictionReduction&&(l=this.enableFriction,this.enableFriction=!1);var s=S;e(s,b);var t=this.convexCapsule(a,s,c,d,f,h,i,j,k);if(this.enableFrictionReduction&&(this.enableFriction=l),k&&t)return!0;if(o+=t,this.enableFrictionReduction){var l=this.enableFriction;this.enableFriction=!1}e(s,h);var u=this.convexCapsule(f,s,i,j,a,b,c,d,k);return this.enableFrictionReduction&&(this.enableFriction=l),k&&u?!0:(o+=u,this.enableFrictionReduction&&o&&this.enableFriction&&this.frictionEquations.push(this.createFrictionFromAverage(o)),o)},d.prototype[q.LINE|q.LINE]=d.prototype.lineLine=function(a,b,c,d,e,f,g,h,i){return i?!1:0},d.prototype[q.PLANE|q.LINE]=d.prototype.planeLine=function(a,b,c,d,e,f,k,l,m){var n=t,o=u,p=v,q=w,r=x,C=y,D=z,E=A,F=B,G=L,H=0;g.set(n,-f.length/2,0),g.set(o,f.length/2,0),g.rotate(p,n,l),g.rotate(q,o,l),i(p,p,k),i(q,q,k),g.copy(n,p),g.copy(o,q),h(r,o,n),g.normalize(C,r),g.rotate90cw(F,C),g.rotate(E,s,d),G[0]=n,G[1]=o;for(var I=0;IK){if(m)return!0;var M=this.createContactEquation(a,e,b,f);H++,g.copy(M.normalA,E),g.normalize(M.normalA,M.normalA),g.scale(D,E,K),h(M.contactPointA,J,D),h(M.contactPointA,M.contactPointA,a.position),h(M.contactPointB,J,k),i(M.contactPointB,M.contactPointB,k),h(M.contactPointB,M.contactPointB,e.position),this.contactEquations.push(M),this.enableFrictionReduction||this.enableFriction&&this.frictionEquations.push(this.createFrictionFromContact(M))}}return m?!1:(this.enableFrictionReduction||H&&this.enableFriction&&this.frictionEquations.push(this.createFrictionFromAverage(H)),H)},d.prototype[q.PARTICLE|q.CAPSULE]=d.prototype.particleCapsule=function(a,b,c,d,e,f,g,h,i){return this.circleLine(a,b,c,d,e,f,g,h,i,f.radius,0)},d.prototype[q.CIRCLE|q.LINE]=d.prototype.circleLine=function(a,b,c,d,e,f,k,l,m,n,o){var n=n||0,o="undefined"!=typeof o?o:b.radius,p=t,q=u,r=v,s=w,H=x,I=y,J=z,K=A,M=B,N=C,O=D,P=E,Q=F,R=G,S=L;g.set(K,-f.length/2,0),g.set(M,f.length/2,0),g.rotate(N,K,l),g.rotate(O,M,l),i(N,N,k),i(O,O,k),g.copy(K,N),g.copy(M,O),h(I,M,K),g.normalize(J,I),g.rotate90cw(H,J),h(P,c,K);var T=j(P,H);h(s,K,k),h(Q,c,k);var U=o+n;if(Math.abs(T)W&&X>V){if(m)return!0;var Y=this.createContactEquation(a,e,b,f);return g.scale(Y.normalA,p,-1),g.normalize(Y.normalA,Y.normalA),g.scale(Y.contactPointA,Y.normalA,o),i(Y.contactPointA,Y.contactPointA,c),h(Y.contactPointA,Y.contactPointA,a.position),h(Y.contactPointB,r,k),i(Y.contactPointB,Y.contactPointB,k),h(Y.contactPointB,Y.contactPointB,e.position),this.contactEquations.push(Y),this.enableFriction&&this.frictionEquations.push(this.createFrictionFromContact(Y)),1}}S[0]=K,S[1]=M;for(var Z=0;ZQ&&(g.copy(J,B),L=Q,g.scale(A,s,Q),g.add(A,A,B),K=!0)}}if(K){if(m)return!0;var R=this.createContactEquation(a,e,b,j);return g.sub(R.normalA,J,c),g.normalize(R.normalA,R.normalA),g.scale(R.contactPointA,R.normalA,n),i(R.contactPointA,R.contactPointA,c),h(R.contactPointA,R.contactPointA,a.position),h(R.contactPointB,A,k),i(R.contactPointB,R.contactPointB,k),h(R.contactPointB,R.contactPointB,e.position),this.contactEquations.push(R),this.enableFriction&&this.frictionEquations.push(this.createFrictionFromContact(R)),1}if(n>0)for(var N=0;NQ&&(I=Q,g.scale(E,s,Q),g.add(E,E,c),g.copy(H,s),L=!0)}if(L){var R=this.createContactEquation(a,e,b,k);return g.scale(R.normalA,H,-1),g.normalize(R.normalA,R.normalA),g.set(R.contactPointA,0,0),i(R.contactPointA,R.contactPointA,c),h(R.contactPointA,R.contactPointA,a.position),h(R.contactPointB,E,l),i(R.contactPointB,R.contactPointB,l),h(R.contactPointB,R.contactPointB,e.position),this.contactEquations.push(R),this.enableFriction&&this.frictionEquations.push(this.createFrictionFromContact(R)),1}return 0},d.prototype[q.CIRCLE]=d.prototype.circleCircle=function(a,b,c,d,e,f,j,k,l,m,n){var o=t,m=m||b.radius,n=n||f.radius;h(o,c,j);var p=m+n;if(g.squaredLength(o)>Math.pow(p,2))return 0;if(l)return!0;var q=this.createContactEquation(a,e,b,f);return h(q.normalA,j,c),g.normalize(q.normalA,q.normalA),g.scale(q.contactPointA,q.normalA,m),g.scale(q.contactPointB,q.normalA,-n),i(q.contactPointA,q.contactPointA,c),h(q.contactPointA,q.contactPointA,a.position),i(q.contactPointB,q.contactPointB,j),h(q.contactPointB,q.contactPointB,e.position),this.contactEquations.push(q),this.enableFriction&&this.frictionEquations.push(this.createFrictionFromContact(q)),1},d.prototype[q.PLANE|q.CONVEX]=d.prototype[q.PLANE|q.BOX]=d.prototype.planeConvex=function(a,b,c,d,e,f,k,l,m){var n=t,o=u,p=v,q=0;g.rotate(o,s,d);for(var r=0;r!==f.vertices.length;r++){var w=f.vertices[r];if(g.rotate(n,w,l),i(n,n,k),h(p,n,c),j(p,o)<=0){if(m)return!0;q++;var x=this.createContactEquation(a,e,b,f);h(p,n,c),g.copy(x.normalA,o);var y=j(p,x.normalA);g.scale(p,x.normalA,y),h(x.contactPointB,n,e.position),h(x.contactPointA,n,p),h(x.contactPointA,x.contactPointA,a.position),this.contactEquations.push(x),this.enableFrictionReduction||this.enableFriction&&this.frictionEquations.push(this.createFrictionFromContact(x))}}return this.enableFrictionReduction&&this.enableFriction&&q&&this.frictionEquations.push(this.createFrictionFromAverage(q)),q},d.prototype[q.PARTICLE|q.PLANE]=d.prototype.particlePlane=function(a,b,c,d,e,f,i,k,l){var m=t,n=u;k=k||0,h(m,c,i),g.rotate(n,s,k);var o=j(m,n);if(o>0)return 0;if(l)return!0;var p=this.createContactEquation(e,a,f,b);return g.copy(p.normalA,n),g.scale(m,p.normalA,o),h(p.contactPointA,c,m),h(p.contactPointA,p.contactPointA,e.position),h(p.contactPointB,c,a.position),this.contactEquations.push(p),this.enableFriction&&this.frictionEquations.push(this.createFrictionFromContact(p)),1},d.prototype[q.CIRCLE|q.PARTICLE]=d.prototype.circleParticle=function(a,b,c,d,e,f,j,k,l){var m=t;if(h(m,j,c),g.squaredLength(m)>Math.pow(b.radius,2))return 0;if(l)return!0;var n=this.createContactEquation(a,e,b,f);return g.copy(n.normalA,m),g.normalize(n.normalA,n.normalA),g.scale(n.contactPointA,n.normalA,b.radius),i(n.contactPointA,n.contactPointA,c),h(n.contactPointA,n.contactPointA,a.position),h(n.contactPointB,j,e.position),this.contactEquations.push(n),this.enableFriction&&this.frictionEquations.push(this.createFrictionFromContact(n)),1};var X=new o({radius:1}),Y=g.create(),Z=g.create();g.create();d.prototype[q.PLANE|q.CAPSULE]=d.prototype.planeCapsule=function(a,b,c,d,e,f,h,j,k){var l=Y,m=Z,n=X;g.set(l,-f.length/2,0),g.rotate(l,l,j),i(l,l,h),g.set(m,f.length/2,0),g.rotate(m,m,j),i(m,m,h),n.radius=f.radius;var o;this.enableFrictionReduction&&(o=this.enableFriction,this.enableFriction=!1);var p=this.circlePlane(e,n,l,0,a,b,c,d,k),q=this.circlePlane(e,n,m,0,a,b,c,d,k);if(this.enableFrictionReduction&&(this.enableFriction=o),k)return p||q;var r=p+q;return this.enableFrictionReduction&&r&&this.frictionEquations.push(this.createFrictionFromAverage(r)),r},d.prototype[q.CIRCLE|q.PLANE]=d.prototype.circlePlane=function(a,b,c,d,e,f,k,l,m){var n=a,o=b,p=c,q=e,r=k,w=l;w=w||0;var x=t,y=u,z=v;h(x,p,r),g.rotate(y,s,w);var A=j(y,x);if(A>o.radius)return 0;if(m)return!0;var B=this.createContactEquation(q,n,f,b);return g.copy(B.normalA,y),g.scale(B.contactPointB,B.normalA,-o.radius),i(B.contactPointB,B.contactPointB,p),h(B.contactPointB,B.contactPointB,n.position),g.scale(z,B.normalA,A),h(B.contactPointA,x,z),i(B.contactPointA,B.contactPointA,r),h(B.contactPointA,B.contactPointA,q.position),this.contactEquations.push(B),this.enableFriction&&this.frictionEquations.push(this.createFrictionFromContact(B)),1},d.prototype[q.CONVEX]=d.prototype[q.CONVEX|q.BOX]=d.prototype[q.BOX]=d.prototype.convexConvex=function(a,b,c,e,f,k,l,m,n,o){var p=t,q=u,r=v,s=w,y=x,C=z,D=A,E=B,F=0,o="number"==typeof o?o:0,G=d.findSeparatingAxis(b,c,e,k,l,m,p);if(!G)return 0;h(D,l,c),j(p,D)>0&&g.scale(p,p,-1);var H=d.getClosestEdge(b,e,p,!0),I=d.getClosestEdge(k,m,p);if(-1===H||-1===I)return 0;for(var J=0;2>J;J++){var K=H,L=I,M=b,N=k,O=c,P=l,Q=e,R=m,S=a,T=f;if(0===J){var U;U=K,K=L,L=U,U=M,M=N,N=U,U=O,O=P,P=U,U=Q,Q=R,R=U,U=S,S=T,T=U}for(var V=L;L+2>V;V++){var W=N.vertices[(V+N.vertices.length)%N.vertices.length];g.rotate(q,W,R),i(q,q,P);for(var X=0,Y=K-1;K+2>Y;Y++){var Z=M.vertices[(Y+M.vertices.length)%M.vertices.length],$=M.vertices[(Y+1+M.vertices.length)%M.vertices.length];g.rotate(r,Z,Q),g.rotate(s,$,Q),i(r,r,O),i(s,s,O),h(y,s,r),g.rotate90cw(E,y),g.normalize(E,E),h(D,q,r);var _=j(E,D);(Y===K&&o>=_||Y!==K&&0>=_)&&X++}if(X>=3){if(n)return!0;var aa=this.createContactEquation(S,T,M,N);F++;var Z=M.vertices[K%M.vertices.length],$=M.vertices[(K+1)%M.vertices.length];g.rotate(r,Z,Q),g.rotate(s,$,Q),i(r,r,O),i(s,s,O),h(y,s,r),g.rotate90cw(aa.normalA,y),g.normalize(aa.normalA,aa.normalA),h(D,q,r);var _=j(aa.normalA,D);g.scale(C,aa.normalA,_),h(aa.contactPointA,q,O),h(aa.contactPointA,aa.contactPointA,C),i(aa.contactPointA,aa.contactPointA,O),h(aa.contactPointA,aa.contactPointA,S.position),h(aa.contactPointB,q,P),i(aa.contactPointB,aa.contactPointB,P),h(aa.contactPointB,aa.contactPointB,T.position),this.contactEquations.push(aa),this.enableFrictionReduction||this.enableFriction&&this.frictionEquations.push(this.createFrictionFromContact(aa))}}}return this.enableFrictionReduction&&this.enableFriction&&F&&this.frictionEquations.push(this.createFrictionFromAverage(F)),F};var $=g.fromValues(0,0);d.projectConvexOntoAxis=function(a,b,c,d,e){var f,h,i=null,k=null,l=$;g.rotate(l,d,-c);for(var m=0;mi)&&(i=h),(null===k||k>h)&&(k=h);if(k>i){var n=k;k=i,i=n}var o=j(b,d);g.set(e,k+o,i+o)};var _=g.fromValues(0,0),aa=g.fromValues(0,0),ba=g.fromValues(0,0),ca=g.fromValues(0,0),da=g.fromValues(0,0),ea=g.fromValues(0,0);d.findSeparatingAxis=function(a,b,c,e,f,i,j){var k=null,l=!1,m=!1,n=_,o=aa,p=ba,q=ca,s=da,t=ea;if(a instanceof r&&e instanceof r)for(var u=0;2!==u;u++){var v=a,w=c;1===u&&(v=e,w=i);for(var x=0;2!==x;x++){0===x?g.set(q,0,1):1===x&&g.set(q,1,0),0!==w&&g.rotate(q,q,w),d.projectConvexOntoAxis(a,b,c,q,s),d.projectConvexOntoAxis(e,f,i,q,t);var y=s,z=t,A=!1;s[0]>t[0]&&(z=s,y=t,A=!0);var B=z[0]-y[1];l=0>=B,(null===k||B>k)&&(g.copy(j,q),k=B,m=l)}}else for(var u=0;2!==u;u++){var v=a,w=c;1===u&&(v=e,w=i);for(var x=0;x!==v.vertices.length;x++){g.rotate(o,v.vertices[x],w),g.rotate(p,v.vertices[(x+1)%v.vertices.length],w),h(n,p,o),g.rotate90cw(q,n),g.normalize(q,q),d.projectConvexOntoAxis(a,b,c,q,s),d.projectConvexOntoAxis(e,f,i,q,t);var y=s,z=t,A=!1;s[0]>t[0]&&(z=s,y=t,A=!0);var B=z[0]-y[1];l=0>=B,(null===k||B>k)&&(g.copy(j,q),k=B,m=l)}}return m};var fa=g.fromValues(0,0),ga=g.fromValues(0,0),ha=g.fromValues(0,0);d.getClosestEdge=function(a,b,c,d){var e=fa,f=ga,i=ha;g.rotate(e,c,-b),d&&g.scale(e,e,-1);for(var k=-1,l=a.vertices.length,m=-1,n=0;n!==l;n++){h(f,a.vertices[(n+1)%l],a.vertices[n%l]),g.rotate90cw(i,f),g.normalize(i,i);var o=j(i,e);(-1===k||o>m)&&(k=n%l,m=o)}return k};var ia=g.create(),ja=g.create(),ka=g.create(),la=g.create(),ma=g.create(),na=g.create(),oa=g.create();d.prototype[q.CIRCLE|q.HEIGHTFIELD]=d.prototype.circleHeightfield=function(a,b,c,d,e,f,j,k,l,m){var n=f.heights,m=m||b.radius,o=f.elementWidth,p=ja,q=ia,r=ma,s=oa,t=na,u=ka,v=la,w=Math.floor((c[0]-m-j[0])/o),x=Math.ceil((c[0]+m-j[0])/o);0>w&&(w=0),x>=n.length&&(x=n.length-1);for(var y=n[w],z=n[x],A=w;x>A;A++)n[A]y&&(y=n[A]);if(c[1]-m>y)return l?!1:0;for(var B=!1,A=w;x>A;A++){g.set(u,A*o,n[A]),g.set(v,(A+1)*o,n[A+1]),g.add(u,u,j),g.add(v,v,j),g.sub(t,v,u),g.rotate(t,t,Math.PI/2),g.normalize(t,t),g.scale(q,t,-m),g.add(q,q,c),g.sub(p,q,u);var C=g.dot(p,t);if(q[0]>=u[0]&&q[0]=C){if(l)return!0;B=!0,g.scale(p,t,-C),g.add(r,q,p),g.copy(s,t);var D=this.createContactEquation(e,a,f,b);g.copy(D.normalA,s),g.scale(D.contactPointB,D.normalA,-m),i(D.contactPointB,D.contactPointB,c),h(D.contactPointB,D.contactPointB,a.position),g.copy(D.contactPointA,r),g.sub(D.contactPointA,D.contactPointA,e.position),this.contactEquations.push(D),this.enableFriction&&this.frictionEquations.push(this.createFrictionFromContact(D))}}if(B=!1,m>0)for(var A=w;x>=A;A++)if(g.set(u,A*o,n[A]),g.add(u,u,j),g.sub(p,c,u),g.squaredLength(p)q&&(q=0),r>=k.length&&(r=k.length-1);for(var s=k[q],t=k[r],u=q;r>u;u++)k[u]s&&(s=k[u]);if(a.aabb.lowerBound[1]>s)return j?!1:0;for(var v=0,u=q;r>u;u++){g.set(m,u*l,k[u]),g.set(n,(u+1)*l,k[u+1]),g.add(m,m,h),g.add(n,n,h);var w=100;g.set(o,.5*(n[0]+m[0]),.5*(n[1]+m[1]-w)),g.sub(p.vertices[0],n,o),g.sub(p.vertices[1],m,o),g.copy(p.vertices[2],p.vertices[1]),g.copy(p.vertices[3],p.vertices[0]),p.vertices[2][1]-=w,p.vertices[3][1]-=w,v+=this.convexConvex(a,b,c,d,e,p,o,0,j)}return v}},{"../equations/ContactEquation":21,"../equations/Equation":22,"../equations/FrictionEquation":23,"../math/vec2":30,"../objects/Body":31,"../shapes/Box":37,"../shapes/Circle":39,"../shapes/Convex":40,"../shapes/Shape":45,"../utils/ContactEquationPool":48,"../utils/FrictionEquationPool":49,"../utils/TupleDictionary":56,"../utils/Utils":57}],11:[function(a,b,c){function d(a){a=a||{},this.from=a.from?f.fromValues(a.from[0],a.from[1]):f.create(),this.to=a.to?f.fromValues(a.to[0],a.to[1]):f.create(),this.checkCollisionResponse=void 0!==a.checkCollisionResponse?a.checkCollisionResponse:!0,this.skipBackfaces=!!a.skipBackfaces,this.collisionMask=void 0!==a.collisionMask?a.collisionMask:-1,this.collisionGroup=void 0!==a.collisionGroup?a.collisionGroup:-1,this.mode=void 0!==a.mode?a.mode:d.ANY,this.callback=a.callback||function(a){},this.direction=f.create(),this.length=1,this.update()}function e(a,b,c){f.sub(h,c,a);var d=f.dot(h,b);return f.scale(i,b,d),f.add(i,i,a),f.squaredDistance(c,i)}b.exports=d;var f=a("../math/vec2");a("../collision/RaycastResult"),a("../shapes/Shape"),a("../collision/AABB");d.prototype.constructor=d,d.CLOSEST=1,d.ANY=2,d.ALL=4,d.prototype.update=function(){var a=this.direction;f.sub(a,this.to,this.from),this.length=f.length(a),f.normalize(a,a)},d.prototype.intersectBodies=function(a,b){for(var c=0,d=b.length;!a.shouldStop(this)&&d>c;c++){var e=b[c],f=e.getAABB();(f.overlapsRay(this)>=0||f.containsPoint(this.from))&&this.intersectBody(a,e)}};var g=f.create();d.prototype.intersectBody=function(a,b){var c=this.checkCollisionResponse;if(!c||b.collisionResponse)for(var d=g,e=0,h=b.shapes.length;h>e;e++){var i=b.shapes[e];if((!c||i.collisionResponse)&&0!==(this.collisionGroup&i.collisionMask)&&0!==(i.collisionGroup&this.collisionMask)){f.rotate(d,i.position,b.angle),f.add(d,d,b.position);var j=i.angle+b.angle;if(this.intersectShape(a,i,j,d,b),a.shouldStop(this))break}}},d.prototype.intersectShape=function(a,b,c,d,f){var g=this.from,h=e(g,this.direction,d);h>b.boundingRadius*b.boundingRadius||(this._currentBody=f,this._currentShape=b,b.raycast(a,this,d,c),this._currentBody=this._currentShape=null)},d.prototype.getAABB=function(a){var b=this.to,c=this.from;f.set(a.lowerBound,Math.min(b[0],c[0]),Math.min(b[1],c[1])),f.set(a.upperBound,Math.max(b[0],c[0]),Math.max(b[1],c[1]))};f.create();d.prototype.reportIntersection=function(a,b,c,e){var g=(this.from,this.to,this._currentShape),h=this._currentBody;if(!(this.skipBackfaces&&f.dot(c,this.direction)>0))switch(this.mode){case d.ALL:a.set(c,g,h,b,e),this.callback(a);break;case d.CLOSEST:(bc;c++){for(var e=a[c],f=c-1;f>=0&&!(a[f].aabb.lowerBound[b]<=e.aabb.lowerBound[b]);f--)a[f+1]=a[f];a[f+1]=e}return a},d.prototype.sortList=function(){var a=this.axisList,b=this.axisIndex;d.sortAxisList(a,b)},d.prototype.getCollisionPairs=function(a){var b=this.axisList,c=this.result,d=this.axisIndex;c.length=0;for(var e=b.length;e--;){var g=b[e];g.aabbNeedsUpdate&&g.updateAABB()}this.sortList();for(var h=0,i=0|b.length;h!==i;h++)for(var j=b[h],k=h+1;i>k;k++){var l=b[k],m=l.aabb.lowerBound[d]<=j.aabb.upperBound[d];if(!m)break;f.canCollide(j,l)&&this.boundingVolumeCheck(j,l)&&c.push(j,l)}return c},d.prototype.aabbQuery=function(a,b,c){c=c||[],this.sortList();var d=this.axisIndex,e="x";1===d&&(e="y"),2===d&&(e="z");for(var f=this.axisList,g=(b.lowerBound[e],b.upperBound[e],0);gthis.upperLimit&&(f.maxForce=0,f.minForce=-this.maxForce,this.distance=this.upperLimit,l=!0),this.lowerLimitEnabled&&this.positionc)h.scale(e.normalA,j,-1),h.sub(e.contactPointA,k,g.position),h.sub(e.contactPointB,l,i.position),h.scale(o,j,c),h.add(e.contactPointA,e.contactPointA,o),-1===a.indexOf(e)&&a.push(e);else{var u=a.indexOf(e);-1!==u&&a.splice(u,1)}if(this.lowerLimitEnabled&&d>s)h.scale(f.normalA,j,1),h.sub(f.contactPointA,k,g.position),h.sub(f.contactPointB,l,i.position),h.scale(o,j,d),h.sub(f.contactPointB,f.contactPointB,o),-1===a.indexOf(f)&&a.push(f);else{var u=a.indexOf(f);-1!==u&&a.splice(u,1)}},d.prototype.enableMotor=function(){this.motorEnabled||(this.equations.push(this.motorEquation),this.motorEnabled=!0)},d.prototype.disableMotor=function(){if(this.motorEnabled){var a=this.equations.indexOf(this.motorEquation);this.equations.splice(a,1),this.motorEnabled=!1}},d.prototype.setLimits=function(a,b){"number"==typeof a?(this.lowerLimit=a,this.lowerLimitEnabled=!0):(this.lowerLimit=a,this.lowerLimitEnabled=!1),"number"==typeof b?(this.upperLimit=b,this.upperLimitEnabled=!0):(this.upperLimit=b,this.upperLimitEnabled=!1)}},{"../equations/ContactEquation":21,"../equations/Equation":22,"../equations/RotationalLockEquation":24,"../math/vec2":30,"./Constraint":14}],19:[function(a,b,c){function d(a,b,c){c=c||{},e.call(this,a,b,e.REVOLUTE,c);var d=this.maxForce="undefined"!=typeof c.maxForce?c.maxForce:Number.MAX_VALUE;this.pivotA=i.create(),this.pivotB=i.create(),c.worldPivot?(i.sub(this.pivotA,c.worldPivot,a.position),i.sub(this.pivotB,c.worldPivot,b.position),i.rotate(this.pivotA,this.pivotA,-a.angle),i.rotate(this.pivotB,this.pivotB,-b.angle)):(i.copy(this.pivotA,c.localPivotA),i.copy(this.pivotB,c.localPivotB));var o=this.equations=[new f(a,b,-d,d),new f(a,b,-d,d)],p=o[0],q=o[1],r=this;p.computeGq=function(){return i.rotate(j,r.pivotA,a.angle),i.rotate(k,r.pivotB,b.angle),i.add(n,b.position,k),i.sub(n,n,a.position),i.sub(n,n,j),i.dot(n,l)},q.computeGq=function(){return i.rotate(j,r.pivotA,a.angle),i.rotate(k,r.pivotB,b.angle),i.add(n,b.position,k),i.sub(n,n,a.position),i.sub(n,n,j),i.dot(n,m)},q.minForce=p.minForce=-d,q.maxForce=p.maxForce=d,this.motorEquation=new g(a,b),this.motorEnabled=!1,this.angle=0,this.lowerLimitEnabled=!1,this.upperLimitEnabled=!1,this.lowerLimit=0,this.upperLimit=0,this.upperLimitEquation=new h(a,b),this.lowerLimitEquation=new h(a,b),this.upperLimitEquation.minForce=0,this.lowerLimitEquation.maxForce=0}var e=a("./Constraint"),f=a("../equations/Equation"),g=a("../equations/RotationalVelocityEquation"),h=a("../equations/RotationalLockEquation"),i=a("../math/vec2");b.exports=d;var j=i.create(),k=i.create(),l=i.fromValues(1,0),m=i.fromValues(0,1),n=i.create();d.prototype=new e,d.prototype.constructor=d,d.prototype.setLimits=function(a,b){"number"==typeof a?(this.lowerLimit=a,this.lowerLimitEnabled=!0):(this.lowerLimit=a,this.lowerLimitEnabled=!1),"number"==typeof b?(this.upperLimit=b,this.upperLimitEnabled=!0):(this.upperLimit=b,this.upperLimitEnabled=!1)},d.prototype.update=function(){var a=this.bodyA,b=this.bodyB,c=this.pivotA,d=this.pivotB,e=this.equations,f=(e[0],e[1],e[0]),g=e[1],h=this.upperLimit,n=this.lowerLimit,o=this.upperLimitEquation,p=this.lowerLimitEquation,q=this.angle=b.angle-a.angle;if(this.upperLimitEnabled&&q>h)o.angle=h,-1===e.indexOf(o)&&e.push(o);else{var r=e.indexOf(o);-1!==r&&e.splice(r,1)}if(this.lowerLimitEnabled&&n>q)p.angle=n,-1===e.indexOf(p)&&e.push(p);else{var r=e.indexOf(p);-1!==r&&e.splice(r,1)}i.rotate(j,c,a.angle),i.rotate(k,d,b.angle),f.G[0]=-1,f.G[1]=0,f.G[2]=-i.crossLength(j,l),f.G[3]=1,f.G[4]=0,f.G[5]=i.crossLength(k,l),g.G[0]=0,g.G[1]=-1,g.G[2]=-i.crossLength(j,m),g.G[3]=0,g.G[4]=1,g.G[5]=i.crossLength(k,m)},d.prototype.enableMotor=function(){this.motorEnabled||(this.equations.push(this.motorEquation),this.motorEnabled=!0)},d.prototype.disableMotor=function(){if(this.motorEnabled){var a=this.equations.indexOf(this.motorEquation);this.equations.splice(a,1),this.motorEnabled=!1}},d.prototype.motorIsEnabled=function(){return!!this.motorEnabled},d.prototype.setMotorSpeed=function(a){if(this.motorEnabled){var b=this.equations.indexOf(this.motorEquation);this.equations[b].relativeVelocity=a}},d.prototype.getMotorSpeed=function(){return this.motorEnabled?this.motorEquation.relativeVelocity:!1}},{"../equations/Equation":22,"../equations/RotationalLockEquation":24,"../equations/RotationalVelocityEquation":25,"../math/vec2":30,"./Constraint":14}],20:[function(a,b,c){function d(a,b,c){c=c||{},e.call(this,a,b,-Number.MAX_VALUE,Number.MAX_VALUE),this.angle=c.angle||0,this.ratio="number"==typeof c.ratio?c.ratio:1,this.setRatio(this.ratio)}var e=a("./Equation");a("../math/vec2");b.exports=d,d.prototype=new e,d.prototype.constructor=d,d.prototype.computeGq=function(){return this.ratio*this.bodyA.angle-this.bodyB.angle+this.angle},d.prototype.setRatio=function(a){var b=this.G;b[2]=a,b[5]=-1,this.ratio=a},d.prototype.setMaxTorque=function(a){this.maxForce=a,this.minForce=-a}},{"../math/vec2":30,"./Equation":22}],21:[function(a,b,c){function d(a,b){e.call(this,a,b,0,Number.MAX_VALUE),this.contactPointA=f.create(),this.penetrationVec=f.create(),this.contactPointB=f.create(),this.normalA=f.create(),this.restitution=0,this.firstImpact=!1,this.shapeA=null,this.shapeB=null}var e=a("./Equation"),f=a("../math/vec2");b.exports=d,d.prototype=new e,d.prototype.constructor=d,d.prototype.computeB=function(a,b,c){var d=this.bodyA,e=this.bodyB,g=this.contactPointA,h=this.contactPointB,i=d.position,j=e.position,k=this.penetrationVec,l=this.normalA,m=this.G,n=f.crossLength(g,l),o=f.crossLength(h,l);m[0]=-l[0],m[1]=-l[1],m[2]=-n,m[3]=l[0],m[4]=l[1],m[5]=o,f.add(k,j,h),f.sub(k,k,i),f.sub(k,k,g);var p,q;this.firstImpact&&0!==this.restitution?(q=0,p=1/b*(1+this.restitution)*this.computeGW()):(q=f.dot(l,k)+this.offset,p=this.computeGW());var r=this.computeGiMf(),s=-q*a-p*b-c*r;return s}},{"../math/vec2":30,"./Equation":22}],22:[function(a,b,c){function d(a,b,c,e){this.minForce="undefined"==typeof c?-Number.MAX_VALUE:c,this.maxForce="undefined"==typeof e?Number.MAX_VALUE:e,this.bodyA=a,this.bodyB=b,this.stiffness=d.DEFAULT_STIFFNESS,this.relaxation=d.DEFAULT_RELAXATION,this.G=new f.ARRAY_TYPE(6);for(var g=0;6>g;g++)this.G[g]=0;this.offset=0,this.a=0,this.b=0,this.epsilon=0,this.timeStep=1/60,this.needsUpdate=!0,this.multiplier=0,this.relativeVelocity=0,this.enabled=!0}b.exports=d;var e=a("../math/vec2"),f=a("../utils/Utils");a("../objects/Body");d.prototype.constructor=d,d.DEFAULT_STIFFNESS=1e6,d.DEFAULT_RELAXATION=4,d.prototype.update=function(){var a=this.stiffness,b=this.relaxation,c=this.timeStep;this.a=4/(c*(1+4*b)),this.b=4*b/(1+4*b),this.epsilon=4/(c*c*a*(1+4*b)),this.needsUpdate=!1},d.prototype.gmult=function(a,b,c,d,e){return a[0]*b[0]+a[1]*b[1]+a[2]*c+a[3]*d[0]+a[4]*d[1]+a[5]*e},d.prototype.computeB=function(a,b,c){var d=this.computeGW(),e=this.computeGq(),f=this.computeGiMf();return-e*a-d*b-f*c};var g=e.create(),h=e.create();d.prototype.computeGq=function(){var a=this.G,b=this.bodyA,c=this.bodyB,d=(b.position,c.position,b.angle),e=c.angle;return this.gmult(a,g,d,h,e)+this.offset},d.prototype.computeGW=function(){var a=this.G,b=this.bodyA,c=this.bodyB,d=b.velocity,e=c.velocity,f=b.angularVelocity,g=c.angularVelocity;return this.gmult(a,d,f,e,g)+this.relativeVelocity},d.prototype.computeGWlambda=function(){var a=this.G,b=this.bodyA,c=this.bodyB,d=b.vlambda,e=c.vlambda,f=b.wlambda,g=c.wlambda;return this.gmult(a,d,f,e,g)};var i=e.create(),j=e.create();d.prototype.computeGiMf=function(){var a=this.bodyA,b=this.bodyB,c=a.force,d=a.angularForce,f=b.force,g=b.angularForce,h=a.invMassSolve,k=b.invMassSolve,l=a.invInertiaSolve,m=b.invInertiaSolve,n=this.G;return e.scale(i,c,h),e.multiply(i,a.massMultiplier,i),e.scale(j,f,k),e.multiply(j,b.massMultiplier,j),this.gmult(n,i,d*l,j,g*m)},d.prototype.computeGiMGt=function(){var a=this.bodyA,b=this.bodyB,c=a.invMassSolve,d=b.invMassSolve,e=a.invInertiaSolve,f=b.invInertiaSolve,g=this.G;return g[0]*g[0]*c*a.massMultiplier[0]+g[1]*g[1]*c*a.massMultiplier[1]+g[2]*g[2]*e+g[3]*g[3]*d*b.massMultiplier[0]+g[4]*g[4]*d*b.massMultiplier[1]+g[5]*g[5]*f};var k=e.create(),l=e.create(),m=e.create();e.create(),e.create(),e.create();d.prototype.addToWlambda=function(a){var b=this.bodyA,c=this.bodyB,d=k,f=l,g=m,h=b.invMassSolve,i=c.invMassSolve,j=b.invInertiaSolve,n=c.invInertiaSolve,o=this.G;f[0]=o[0],f[1]=o[1],g[0]=o[3],g[1]=o[4],e.scale(d,f,h*a),e.multiply(d,d,b.massMultiplier),e.add(b.vlambda,b.vlambda,d),b.wlambda+=j*o[2]*a,e.scale(d,g,i*a),e.multiply(d,d,c.massMultiplier),e.add(c.vlambda,c.vlambda,d),c.wlambda+=n*o[5]*a},d.prototype.computeInvC=function(a){return 1/(this.computeGiMGt()+a)}},{"../math/vec2":30,"../objects/Body":31,"../utils/Utils":57}],23:[function(a,b,c){function d(a,b,c){f.call(this,a,b,-c,c),this.contactPointA=e.create(),this.contactPointB=e.create(),this.t=e.create(),this.contactEquations=[],this.shapeA=null,this.shapeB=null,this.frictionCoefficient=.3}var e=a("../math/vec2"),f=a("./Equation");a("../utils/Utils");b.exports=d,d.prototype=new f,d.prototype.constructor=d,d.prototype.setSlipForce=function(a){this.maxForce=a,this.minForce=-a},d.prototype.getSlipForce=function(){return this.maxForce},d.prototype.computeB=function(a,b,c){var d=(this.bodyA,this.bodyB,this.contactPointA),f=this.contactPointB,g=this.t,h=this.G;h[0]=-g[0],h[1]=-g[1],h[2]=-e.crossLength(d,g),h[3]=g[0],h[4]=g[1],h[5]=e.crossLength(f,g);var i=this.computeGW(),j=this.computeGiMf(),k=-i*b-c*j;return k}},{"../math/vec2":30,"../utils/Utils":57,"./Equation":22}],24:[function(a,b,c){function d(a,b,c){c=c||{},e.call(this,a,b,-Number.MAX_VALUE,Number.MAX_VALUE),this.angle=c.angle||0;var d=this.G;d[2]=1,d[5]=-1}var e=a("./Equation"),f=a("../math/vec2");b.exports=d,d.prototype=new e,d.prototype.constructor=d;var g=f.create(),h=f.create(),i=f.fromValues(1,0),j=f.fromValues(0,1);d.prototype.computeGq=function(){return f.rotate(g,i,this.bodyA.angle+this.angle),f.rotate(h,j,this.bodyB.angle),f.dot(g,h)}},{"../math/vec2":30,"./Equation":22}],25:[function(a,b,c){function d(a,b){e.call(this,a,b,-Number.MAX_VALUE,Number.MAX_VALUE),this.relativeVelocity=1,this.ratio=1}var e=a("./Equation");a("../math/vec2");b.exports=d,d.prototype=new e,d.prototype.constructor=d,d.prototype.computeB=function(a,b,c){var d=this.G;d[2]=-1,d[5]=this.ratio;var e=this.computeGiMf(),f=this.computeGW(),g=-f*b-c*e;return g}},{"../math/vec2":30,"./Equation":22}],26:[function(a,b,c){var d=function(){};b.exports=d,d.prototype={constructor:d,on:function(a,b,c){b.context=c||this,void 0===this._listeners&&(this._listeners={});var d=this._listeners;return void 0===d[a]&&(d[a]=[]),-1===d[a].indexOf(b)&&d[a].push(b),this},has:function(a,b){if(void 0===this._listeners)return!1;var c=this._listeners;if(b){if(void 0!==c[a]&&-1!==c[a].indexOf(b))return!0}else if(void 0!==c[a])return!0;return!1},off:function(a,b){if(void 0===this._listeners)return this;var c=this._listeners,d=c[a].indexOf(b);return-1!==d&&c[a].splice(d,1),this},emit:function(a){if(void 0===this._listeners)return this;var b=this._listeners,c=b[a.type];if(void 0!==c){a.target=this;for(var d=0,e=c.length;e>d;d++){var f=c[d];f.call(f.context,a)}}return this}}},{}],27:[function(a,b,c){function d(a,b,c){if(c=c||{},!(a instanceof e&&b instanceof e))throw new Error("First two arguments must be Material instances.");this.id=d.idCounter++,this.materialA=a,this.materialB=b,this.friction="undefined"!=typeof c.friction?Number(c.friction):.3,this.restitution="undefined"!=typeof c.restitution?Number(c.restitution):0,this.stiffness="undefined"!=typeof c.stiffness?Number(c.stiffness):f.DEFAULT_STIFFNESS,this.relaxation="undefined"!=typeof c.relaxation?Number(c.relaxation):f.DEFAULT_RELAXATION,this.frictionStiffness="undefined"!=typeof c.frictionStiffness?Number(c.frictionStiffness):f.DEFAULT_STIFFNESS,this.frictionRelaxation="undefined"!=typeof c.frictionRelaxation?Number(c.frictionRelaxation):f.DEFAULT_RELAXATION,this.surfaceVelocity="undefined"!=typeof c.surfaceVelocity?Number(c.surfaceVelocity):0,this.contactSkinSize=.005}var e=a("./Material"),f=a("../equations/Equation");b.exports=d,d.idCounter=0},{"../equations/Equation":22,"./Material":28}],28:[function(a,b,c){function d(a){this.id=a||d.idCounter++}b.exports=d,d.idCounter=0},{}],29:[function(a,b,c){var d={};d.GetArea=function(a){if(a.length<6)return 0;for(var b=a.length-2,c=0,d=0;b>d;d+=2)c+=(a[d+2]-a[d])*(a[d+1]+a[d+3]);return c+=(a[0]-a[b])*(a[b+1]+a[1]),.5*-c},d.Triangulate=function(a){var b=a.length>>1;if(3>b)return[];for(var c=[],e=[],f=0;b>f;f++)e.push(f);for(var f=0,g=b;g>3;){var h=e[(f+0)%g],i=e[(f+1)%g],j=e[(f+2)%g],k=a[2*h],l=a[2*h+1],m=a[2*i],n=a[2*i+1],o=a[2*j],p=a[2*j+1],q=!1;if(d._convex(k,l,m,n,o,p)){q=!0;for(var r=0;g>r;r++){var s=e[r];if(s!=h&&s!=i&&s!=j&&d._PointInTriangle(a[2*s],a[2*s+1],k,l,m,n,o,p)){q=!1;break}}}if(q)c.push(h,i,j),e.splice((f+1)%g,1),g--,f=0;else if(f++>3*g)break}return c.push(e[0],e[1],e[2]),c},d._PointInTriangle=function(a,b,c,d,e,f,g,h){var i=g-c,j=h-d,k=e-c,l=f-d,m=a-c,n=b-d,o=i*i+j*j,p=i*k+j*l,q=i*m+j*n,r=k*k+l*l,s=k*m+l*n,t=1/(o*r-p*p),u=(r*q-p*s)*t,v=(o*s-p*q)*t;return u>=0&&v>=0&&1>u+v},d._convex=function(a,b,c,d,e,f){return(b-d)*(e-c)+(c-a)*(f-d)>=0},b.exports=d},{}],30:[function(a,b,c){var d=b.exports={},e=a("../utils/Utils");d.crossLength=function(a,b){return a[0]*b[1]-a[1]*b[0]},d.crossVZ=function(a,b,c){return d.rotate(a,b,-Math.PI/2),d.scale(a,a,c),a},d.crossZV=function(a,b,c){return d.rotate(a,c,Math.PI/2),d.scale(a,a,b),a},d.rotate=function(a,b,c){if(0!==c){var d=Math.cos(c),e=Math.sin(c),f=b[0],g=b[1];a[0]=d*f-e*g,a[1]=e*f+d*g}else a[0]=b[0],a[1]=b[1]},d.rotate90cw=function(a,b){var c=b[0],d=b[1];a[0]=d,a[1]=-c},d.toLocalFrame=function(a,b,c,e){d.copy(a,b),d.sub(a,a,c),d.rotate(a,a,-e)},d.toGlobalFrame=function(a,b,c,e){d.copy(a,b),d.rotate(a,a,e),d.add(a,a,c)},d.vectorToLocalFrame=function(a,b,c){d.rotate(a,b,-c)},d.vectorToGlobalFrame=function(a,b,c){d.rotate(a,b,c)},d.centroid=function(a,b,c,e){return d.add(a,b,c),d.add(a,a,e),d.scale(a,a,1/3),a},d.create=function(){var a=new e.ARRAY_TYPE(2);return a[0]=0,a[1]=0,a},d.clone=function(a){var b=new e.ARRAY_TYPE(2);return b[0]=a[0],b[1]=a[1],b},d.fromValues=function(a,b){var c=new e.ARRAY_TYPE(2);return c[0]=a,c[1]=b,c},d.copy=function(a,b){return a[0]=b[0],a[1]=b[1],a},d.set=function(a,b,c){return a[0]=b,a[1]=c,a},d.add=function(a,b,c){return a[0]=b[0]+c[0],a[1]=b[1]+c[1],a},d.subtract=function(a,b,c){return a[0]=b[0]-c[0],a[1]=b[1]-c[1],a},d.sub=d.subtract,d.multiply=function(a,b,c){return a[0]=b[0]*c[0],a[1]=b[1]*c[1],a},d.mul=d.multiply,d.divide=function(a,b,c){return a[0]=b[0]/c[0],a[1]=b[1]/c[1],a},d.div=d.divide,d.scale=function(a,b,c){return a[0]=b[0]*c,a[1]=b[1]*c,a},d.distance=function(a,b){var c=b[0]-a[0],d=b[1]-a[1];return Math.sqrt(c*c+d*d)},d.dist=d.distance,d.squaredDistance=function(a,b){var c=b[0]-a[0],d=b[1]-a[1];return c*c+d*d},d.sqrDist=d.squaredDistance,d.length=function(a){var b=a[0],c=a[1];return Math.sqrt(b*b+c*c)},d.len=d.length,d.squaredLength=function(a){var b=a[0],c=a[1];return b*b+c*c},d.sqrLen=d.squaredLength,d.negate=function(a,b){return a[0]=-b[0],a[1]=-b[1],a},d.normalize=function(a,b){var c=b[0],d=b[1],e=c*c+d*d;return e>0&&(e=1/Math.sqrt(e),a[0]=b[0]*e,a[1]=b[1]*e),a},d.dot=function(a,b){return a[0]*b[0]+a[1]*b[1]},d.str=function(a){return"vec2("+a[0]+", "+a[1]+")"},d.lerp=function(a,b,c,d){var e=b[0],f=b[1];return a[0]=e+d*(c[0]-e),a[1]=f+d*(c[1]-f),a},d.reflect=function(a,b,c){var d=b[0]*c[0]+b[1]*c[1];a[0]=b[0]-2*c[0]*d,a[1]=b[1]-2*c[1]*d},d.getLineSegmentsIntersection=function(a,b,c,e,f){var g=d.getLineSegmentsIntersectionFraction(b,c,e,f);return 0>g?!1:(a[0]=b[0]+g*(c[0]-b[0]),a[1]=b[1]+g*(c[1]-b[1]),!0)},d.getLineSegmentsIntersectionFraction=function(a,b,c,d){var e,f,g=b[0]-a[0],h=b[1]-a[1],i=d[0]-c[0],j=d[1]-c[1];return e=(-h*(a[0]-c[0])+g*(a[1]-c[1]))/(-i*h+g*j),f=(i*(a[1]-c[1])-j*(a[0]-c[0]))/(-i*h+g*j),e>=0&&1>=e&&f>=0&&1>=f?f:-1}},{"../utils/Utils":57}],31:[function(a,b,c){function d(a){a=a||{},k.call(this),this.id=a.id||++d._idCounter,this.world=null,this.shapes=[],this.mass=a.mass||0,this.invMass=0,this.inertia=0,this.invInertia=0,this.invMassSolve=0,this.invInertiaSolve=0,this.fixedRotation=!!a.fixedRotation,this.fixedX=!!a.fixedX,this.fixedY=!!a.fixedY,this.massMultiplier=e.create(),this.position=e.fromValues(0,0),a.position&&e.copy(this.position,a.position),this.interpolatedPosition=e.fromValues(0,0),this.interpolatedAngle=0,this.previousPosition=e.fromValues(0,0),this.previousAngle=0,this.velocity=e.fromValues(0,0),a.velocity&&e.copy(this.velocity,a.velocity),this.vlambda=e.fromValues(0,0),this.wlambda=0,this.angle=a.angle||0,this.angularVelocity=a.angularVelocity||0,this.force=e.create(),a.force&&e.copy(this.force,a.force),this.angularForce=a.angularForce||0,this.damping="number"==typeof a.damping?a.damping:.1,this.angularDamping="number"==typeof a.angularDamping?a.angularDamping:.1,this.type=d.STATIC,"undefined"!=typeof a.type?this.type=a.type:a.mass?this.type=d.DYNAMIC:this.type=d.STATIC,this.boundingRadius=0,this.aabb=new j,this.aabbNeedsUpdate=!0, -this.allowSleep=void 0!==a.allowSleep?a.allowSleep:!0,this.wantsToSleep=!1,this.sleepState=d.AWAKE,this.sleepSpeedLimit=void 0!==a.sleepSpeedLimit?a.sleepSpeedLimit:.2,this.sleepTimeLimit=void 0!==a.sleepTimeLimit?a.sleepTimeLimit:1,this.gravityScale=void 0!==a.gravityScale?a.gravityScale:1,this.collisionResponse=void 0!==a.collisionResponse?a.collisionResponse:!0,this.idleTime=0,this.timeLastSleepy=0,this.ccdSpeedThreshold=void 0!==a.ccdSpeedThreshold?a.ccdSpeedThreshold:-1,this.ccdIterations=void 0!==a.ccdIterations?a.ccdIterations:10,this.concavePath=null,this._wakeUpAfterNarrowphase=!1,this.updateMassProperties()}var e=a("../math/vec2"),f=a("poly-decomp"),g=a("../shapes/Convex"),h=a("../collision/RaycastResult"),i=a("../collision/Ray"),j=a("../collision/AABB"),k=a("../events/EventEmitter");b.exports=d,d.prototype=new k,d.prototype.constructor=d,d._idCounter=0,d.prototype.updateSolveMassProperties=function(){this.sleepState===d.SLEEPING||this.type===d.KINEMATIC?(this.invMassSolve=0,this.invInertiaSolve=0):(this.invMassSolve=this.invMass,this.invInertiaSolve=this.invInertia)},d.prototype.setDensity=function(a){var b=this.getArea();this.mass=b*a,this.updateMassProperties()},d.prototype.getArea=function(){for(var a=0,b=0;bc&&(c=g+h)}this.boundingRadius=c},d.prototype.addShape=function(a,b,c){if(a.body)throw new Error("A shape can only be added to one body.");a.body=this,b?e.copy(a.position,b):e.set(a.position,0,0),a.angle=c||0,this.shapes.push(a),this.updateMassProperties(),this.updateBoundingRadius(),this.aabbNeedsUpdate=!0},d.prototype.removeShape=function(a){var b=this.shapes.indexOf(a);return-1!==b?(this.shapes.splice(b,1),this.aabbNeedsUpdate=!0,a.body=null,!0):!1},d.prototype.updateMassProperties=function(){if(this.type===d.STATIC||this.type===d.KINEMATIC)this.mass=Number.MAX_VALUE,this.invMass=0,this.inertia=Number.MAX_VALUE,this.invInertia=0;else{var a=this.shapes,b=a.length,c=this.mass/b,f=0;if(this.fixedRotation)this.inertia=Number.MAX_VALUE,this.invInertia=0;else{for(var g=0;b>g;g++){var h=a[g],i=e.squaredLength(h.position),j=h.computeMomentOfInertia(c);f+=j+c*i}this.inertia=f,this.invInertia=f>0?1/f:0}this.invMass=1/this.mass,e.set(this.massMultiplier,this.fixedX?0:1,this.fixedY?0:1)}};e.create();d.prototype.applyForce=function(a,b){if(e.add(this.force,this.force,a),b){var c=e.crossLength(b,a);this.angularForce+=c}};var n=e.create(),o=e.create(),p=e.create();d.prototype.applyForceLocal=function(a,b){b=b||p;var c=n,d=o;this.vectorToWorldFrame(c,a),this.vectorToWorldFrame(d,b),this.applyForce(c,d)};var q=e.create();d.prototype.applyImpulse=function(a,b){if(this.type===d.DYNAMIC){var c=q;if(e.scale(c,a,this.invMass),e.multiply(c,this.massMultiplier,c),e.add(this.velocity,c,this.velocity),b){var f=e.crossLength(b,a);f*=this.invInertia,this.angularVelocity+=f}}};var r=e.create(),s=e.create(),t=e.create();d.prototype.applyImpulseLocal=function(a,b){b=b||t;var c=r,d=s;this.vectorToWorldFrame(c,a),this.vectorToWorldFrame(d,b),this.applyImpulse(c,d)},d.prototype.toLocalFrame=function(a,b){e.toLocalFrame(a,b,this.position,this.angle)},d.prototype.toWorldFrame=function(a,b){e.toGlobalFrame(a,b,this.position,this.angle)},d.prototype.vectorToLocalFrame=function(a,b){e.vectorToLocalFrame(a,b,this.angle)},d.prototype.vectorToWorldFrame=function(a,b){e.vectorToGlobalFrame(a,b,this.angle)},d.prototype.fromPolygon=function(a,b){b=b||{};for(var c=this.shapes.length;c>=0;--c)this.removeShape(this.shapes[c]);var d=new f.Polygon;if(d.vertices=a,d.makeCCW(),"number"==typeof b.removeCollinearPoints&&d.removeCollinearPoints(b.removeCollinearPoints),"undefined"==typeof b.skipSimpleCheck&&!d.isSimple())return!1;this.concavePath=d.vertices.slice(0);for(var c=0;c=g?(this.idleTime=0,this.sleepState=d.AWAKE):(this.idleTime+=c,this.sleepState=d.SLEEPY),this.idleTime>this.sleepTimeLimit&&(b?this.wantsToSleep=!0:this.sleep())}},d.prototype.overlaps=function(a){return this.world.overlapKeeper.bodiesAreOverlapping(this,a)};var x=e.create(),y=e.create();d.prototype.integrate=function(a){var b=this.invMass,c=this.force,d=this.position,f=this.velocity;e.copy(this.previousPosition,this.position),this.previousAngle=this.angle,this.fixedRotation||(this.angularVelocity+=this.angularForce*this.invInertia*a),e.scale(x,c,a*b),e.multiply(x,this.massMultiplier,x),e.add(f,x,f),this.integrateToTimeOfImpact(a)||(e.scale(y,f,a),e.add(d,d,y),this.fixedRotation||(this.angle+=this.angularVelocity*a)),this.aabbNeedsUpdate=!0};var z=new h,A=new i({mode:i.ALL}),B=e.create(),C=e.create(),D=e.create(),E=e.create();d.prototype.integrateToTimeOfImpact=function(a){if(this.ccdSpeedThreshold<0||e.squaredLength(this.velocity)=j&&ir;r++){var s=this.radius*(2*r-1);f.set(o,-q,s),f.set(p,q,s),f.toGlobalFrame(o,o,c,d),f.toGlobalFrame(p,p,c,d);var t=f.getLineSegmentsIntersectionFraction(e,g,o,p);if(t>=0&&(f.rotate(n,l,d),f.scale(n,n,2*r-1),b.reportIntersection(a,t,n,-1),a.shouldStop(b)))return}for(var u=Math.pow(this.radius,2)+Math.pow(q,2),r=0;2>r;r++){f.set(o,q*(2*r-1),0),f.toGlobalFrame(o,o,c,d);var v=Math.pow(g[0]-e[0],2)+Math.pow(g[1]-e[1],2),w=2*((g[0]-e[0])*(e[0]-o[0])+(g[1]-e[1])*(e[1]-o[1])),x=Math.pow(e[0]-o[0],2)+Math.pow(e[1]-o[1],2)-Math.pow(this.radius,2),t=Math.pow(w,2)-4*v*x;if(!(0>t))if(0===t){if(f.lerp(m,e,g,t),f.squaredDistance(m,c)>u&&(f.sub(n,m,o),f.normalize(n,n),b.reportIntersection(a,t,n,-1),a.shouldStop(b)))return}else{var y=Math.sqrt(t),z=1/(2*v),A=(-w-y)*z,B=(-w+y)*z;if(A>=0&&1>=A&&(f.lerp(m,e,g,A),f.squaredDistance(m,c)>u&&(f.sub(n,m,o),f.normalize(n,n),b.reportIntersection(a,A,n,-1),a.shouldStop(b))))return;if(B>=0&&1>=B&&(f.lerp(m,e,g,B),f.squaredDistance(m,c)>u&&(f.sub(n,m,o),f.normalize(n,n),b.reportIntersection(a,B,n,-1),a.shouldStop(b))))return}}}},{"../math/vec2":30,"./Shape":45}],39:[function(a,b,c){function d(a){"number"==typeof arguments[0]&&(a={radius:arguments[0]},console.warn("The Circle constructor signature has changed. Please use the following format: new Circle({ radius: 1 })")),a=a||{},this.radius=a.radius||1,a.type=e.CIRCLE,e.call(this,a)}var e=a("./Shape"),f=a("../math/vec2");b.exports=d,d.prototype=new e,d.prototype.constructor=d,d.prototype.computeMomentOfInertia=function(a){var b=this.radius;return a*b*b/2},d.prototype.updateBoundingRadius=function(){this.boundingRadius=this.radius},d.prototype.updateArea=function(){this.area=Math.PI*this.radius*this.radius},d.prototype.computeAABB=function(a,b,c){var d=this.radius;f.set(a.upperBound,d,d),f.set(a.lowerBound,-d,-d),b&&(f.add(a.lowerBound,a.lowerBound,b),f.add(a.upperBound,a.upperBound,b))};var g=f.create(),h=f.create();d.prototype.raycast=function(a,b,c,d){var e=b.from,i=b.to,j=this.radius,k=Math.pow(i[0]-e[0],2)+Math.pow(i[1]-e[1],2),l=2*((i[0]-e[0])*(e[0]-c[0])+(i[1]-e[1])*(e[1]-c[1])),m=Math.pow(e[0]-c[0],2)+Math.pow(e[1]-c[1],2)-Math.pow(j,2),n=Math.pow(l,2)-4*k*m,o=g,p=h;if(!(0>n))if(0===n)f.lerp(o,e,i,n),f.sub(p,o,c),f.normalize(p,p),b.reportIntersection(a,n,p,-1);else{var q=Math.sqrt(n),r=1/(2*k),s=(-l-q)*r,t=(-l+q)*r;if(s>=0&&1>=s&&(f.lerp(o,e,i,s),f.sub(p,o,c),f.normalize(p,p),b.reportIntersection(a,s,p,-1),a.shouldStop(b)))return;t>=0&&1>=t&&(f.lerp(o,e,i,t),f.sub(p,o,c),f.normalize(p,p),b.reportIntersection(a,t,p,-1))}}},{"../math/vec2":30,"./Shape":45}],40:[function(a,b,c){function d(a){Array.isArray(arguments[0])&&(a={vertices:arguments[0],axes:arguments[1]},console.warn("The Convex constructor signature has changed. Please use the following format: new Convex({ vertices: [...], ... })")),a=a||{},this.vertices=[];for(var b=void 0!==a.vertices?a.vertices:[],c=0;ce)&&(e=d),(null===g||g>d)&&(g=d);if(g>e){var j=g;g=e,e=j}f.set(b,g,e)},d.prototype.projectOntoWorldAxis=function(a,b,c,d){var e=i;this.projectOntoLocalAxis(a,d),0!==c?f.rotate(e,a,c):e=a;var g=f.dot(b,e);f.set(d,d[0]+g,d[1]+g)},d.prototype.updateTriangles=function(){this.triangles.length=0;for(var a=[],b=0;bg;e=g,g++){var h=this.vertices[e],i=this.vertices[g],j=Math.abs(f.crossLength(h,i)),k=f.dot(i,i)+f.dot(i,h)+f.dot(h,h);b+=j*k,c+=j}return a/6*(b/c)},d.prototype.updateBoundingRadius=function(){for(var a=this.vertices,b=0,c=0;c!==a.length;c++){var d=f.squaredLength(a[c]);d>b&&(b=d)}this.boundingRadius=Math.sqrt(b)},d.triangleArea=function(a,b,c){return.5*((b[0]-a[0])*(c[1]-a[1])-(c[0]-a[0])*(b[1]-a[1]))},d.prototype.updateArea=function(){this.updateTriangles(),this.area=0;for(var a=this.triangles,b=this.vertices,c=0;c!==a.length;c++){var e=a[c],f=b[e[0]],g=b[e[1]],h=b[e[2]],i=d.triangleArea(f,g,h);this.area+=i}},d.prototype.computeAABB=function(a,b,c){a.setFromPoints(this.vertices,b,c,0)};var o=f.create(),p=f.create(),q=f.create();d.prototype.raycast=function(a,b,c,d){var e=o,g=p,h=q,i=this.vertices;f.toLocalFrame(e,b.from,c,d),f.toLocalFrame(g,b.to,c,d);for(var j=i.length,k=0;j>k&&!a.shouldStop(b);k++){var l=i[k],m=i[(k+1)%j],n=f.getLineSegmentsIntersectionFraction(e,g,l,m);n>=0&&(f.sub(h,m,l),f.rotate(h,h,-Math.PI/2+d),f.normalize(h,h),b.reportIntersection(a,n,h,k))}}},{"../math/polyk":29,"../math/vec2":30,"./Shape":45,"poly-decomp":5}],41:[function(a,b,c){function d(a){if(Array.isArray(arguments[0])){if(a={heights:arguments[0]},"object"==typeof arguments[1])for(var b in arguments[1])a[b]=arguments[1][b];console.warn("The Heightfield constructor signature has changed. Please use the following format: new Heightfield({ heights: [...], ... })")}a=a||{},this.heights=a.heights?a.heights.slice(0):[],this.maxValue=a.maxValue||null,this.minValue=a.minValue||null,this.elementWidth=a.elementWidth||.1,(void 0===a.maxValue||void 0===a.minValue)&&this.updateMaxMinValues(),a.type=e.HEIGHTFIELD,e.call(this,a)}var e=a("./Shape"),f=a("../math/vec2");a("../utils/Utils");b.exports=d,d.prototype=new e,d.prototype.constructor=d,d.prototype.updateMaxMinValues=function(){for(var a=this.heights,b=a[0],c=a[0],d=0;d!==a.length;d++){var e=a[d];e>b&&(b=e),c>e&&(c=e)}this.maxValue=b,this.minValue=c},d.prototype.computeMomentOfInertia=function(a){return Number.MAX_VALUE},d.prototype.updateBoundingRadius=function(){this.boundingRadius=Number.MAX_VALUE},d.prototype.updateArea=function(){for(var a=this.heights,b=0,c=0;cs){var t=r;r=s,s=t}for(var u=0;u=0&&(f.sub(m,o,n),f.rotate(m,m,d+Math.PI/2),f.normalize(m,m),b.reportIntersection(a,v,m,-1),a.shouldStop(b)))return}}},{"../math/vec2":30,"../utils/Utils":57,"./Shape":45}],42:[function(a,b,c){function d(a){"number"==typeof arguments[0]&&(a={length:arguments[0]},console.warn("The Line constructor signature has changed. Please use the following format: new Line({ length: 1, ... })")),a=a||{},this.length=a.length||1,a.type=e.LINE,e.call(this,a)}var e=a("./Shape"),f=a("../math/vec2");b.exports=d,d.prototype=new e,d.prototype.constructor=d,d.prototype.computeMomentOfInertia=function(a){return a*Math.pow(this.length,2)/12},d.prototype.updateBoundingRadius=function(){this.boundingRadius=this.length/2};var g=[f.create(),f.create()];d.prototype.computeAABB=function(a,b,c){var d=this.length/2;f.set(g[0],-d,0),f.set(g[1],d,0),a.setFromPoints(g,b,c,0)};var h=(f.create(),f.create()),i=f.create(),j=f.create(),k=f.fromValues(0,1);d.prototype.raycast=function(a,b,c,d){var e=b.from,g=b.to,l=i,m=j,n=this.length/2;f.set(l,-n,0),f.set(m,n,0),f.toGlobalFrame(l,l,c,d),f.toGlobalFrame(m,m,c,d);var o=f.getLineSegmentsIntersectionFraction(l,m,e,g);if(o>=0){var p=h;f.rotate(p,k,d),b.reportIntersection(a,o,p,-1)}}},{"../math/vec2":30,"./Shape":45}],43:[function(a,b,c){function d(a){a=a||{},a.type=e.PARTICLE,e.call(this,a)}var e=a("./Shape"),f=a("../math/vec2");b.exports=d,d.prototype=new e,d.prototype.constructor=d,d.prototype.computeMomentOfInertia=function(a){return 0},d.prototype.updateBoundingRadius=function(){this.boundingRadius=0},d.prototype.computeAABB=function(a,b,c){f.copy(a.lowerBound,b),f.copy(a.upperBound,b)}},{"../math/vec2":30,"./Shape":45}],44:[function(a,b,c){function d(a){a=a||{},a.type=e.PLANE,e.call(this,a)}var e=a("./Shape"),f=a("../math/vec2");a("../utils/Utils");b.exports=d,d.prototype=new e,d.prototype.constructor=d,d.prototype.computeMomentOfInertia=function(a){return 0},d.prototype.updateBoundingRadius=function(){this.boundingRadius=Number.MAX_VALUE},d.prototype.computeAABB=function(a,b,c){var d=c%(2*Math.PI),e=f.set,g=Number.MAX_VALUE,h=a.lowerBound,i=a.upperBound;0===d?(e(h,-g,-g),e(i,g,0)):d===Math.PI/2?(e(h,0,-g),e(i,g,g)):d===Math.PI?(e(h,-g,0),e(i,g,g)):d===3*Math.PI/2?(e(h,-g,-g),e(i,0,g)):(e(h,-g,-g),e(i,g,g)),f.add(h,h,b),f.add(i,i,b)},d.prototype.updateArea=function(){this.area=Number.MAX_VALUE};var g=f.create(),h=(f.create(),f.create(),f.create()),i=f.create();d.prototype.raycast=function(a,b,c,d){var e=b.from,j=b.to,k=b.direction,l=g,m=h,n=i;f.set(m,0,1),f.rotate(m,m,d),f.sub(n,e,c);var o=f.dot(n,m);f.sub(n,j,c);var p=f.dot(n,m);if(!(o*p>0||f.squaredDistance(e,j)=w*w)break}for(d.updateMultipliers(k,q,1/a),x=0;x!==l;x++){var z=k[x];if(z instanceof i){for(var A=0,B=0;B!==z.contactEquations.length;B++)A+=z.contactEquations[B].multiplier;A*=z.frictionCoefficient/z.contactEquations.length,z.maxForce=A,z.minForce=-A}}}for(c=0;c!==g;c++){for(w=0,x=0;x!==l;x++){v=k[x];var y=d.iterateEquation(x,v,v.epsilon,u,t,q,p,a,c);w+=Math.abs(y)}if(this.usedIterations++,m>=w*w)break}for(r=0;r!==o;r++)n[r].addConstraintVelocity();d.updateMultipliers(k,q,1/a)}},d.updateMultipliers=function(a,b,c){for(var d=a.length;d--;)a[d].multiplier=b[d]*c},d.iterateEquation=function(a,b,c,d,e,f,g,h,i){var j=d[a],k=e[a],l=f[a],m=b.computeGWlambda(),n=b.maxForce,o=b.minForce;g&&(j=0);var p=k*(j-m-c*l),q=l+p;return o*h>q?p=o*h-l:q>n*h&&(p=n*h-l),f[a]+=p,b.addToWlambda(p),p}},{"../equations/FrictionEquation":23,"../math/vec2":30,"../utils/Utils":57,"./Solver":47}],47:[function(a,b,c){function d(a,b){a=a||{},e.call(this),this.type=b,this.equations=[],this.equationSortFunction=a.equationSortFunction||!1}var e=(a("../utils/Utils"),a("../events/EventEmitter"));b.exports=d,d.prototype=new e,d.prototype.constructor=d,d.prototype.solve=function(a,b){throw new Error("Solver.solve should be implemented by subclasses!")};var f={bodies:[]};d.prototype.solveIsland=function(a,b){this.removeAllEquations(),b.equations.length&&(this.addEquations(b.equations),f.bodies.length=0,b.getBodies(f.bodies),f.bodies.length&&this.solve(a,f))},d.prototype.sortEquations=function(){this.equationSortFunction&&this.equations.sort(this.equationSortFunction)},d.prototype.addEquation=function(a){a.enabled&&this.equations.push(a)},d.prototype.addEquations=function(a){for(var b=0,c=a.length;b!==c;b++){var d=a[b];d.enabled&&this.equations.push(d)}},d.prototype.removeEquation=function(a){var b=this.equations.indexOf(a);-1!==b&&this.equations.splice(b,1)},d.prototype.removeAllEquations=function(){this.equations.length=0},d.GS=1,d.ISLAND=2},{"../events/EventEmitter":26,"../utils/Utils":57}],48:[function(a,b,c){function d(){f.apply(this,arguments)}var e=a("../equations/ContactEquation"),f=a("./Pool");b.exports=d,d.prototype=new f,d.prototype.constructor=d,d.prototype.create=function(){return new e},d.prototype.destroy=function(a){return a.bodyA=a.bodyB=null,this}},{"../equations/ContactEquation":21,"./Pool":55}],49:[function(a,b,c){function d(){f.apply(this,arguments)}var e=a("../equations/FrictionEquation"),f=a("./Pool");b.exports=d,d.prototype=new f,d.prototype.constructor=d,d.prototype.create=function(){return new e},d.prototype.destroy=function(a){return a.bodyA=a.bodyB=null,this}},{"../equations/FrictionEquation":23,"./Pool":55}],50:[function(a,b,c){function d(){f.apply(this,arguments)}var e=a("../world/IslandNode"),f=a("./Pool");b.exports=d,d.prototype=new f,d.prototype.constructor=d,d.prototype.create=function(){return new e},d.prototype.destroy=function(a){return a.reset(),this}},{"../world/IslandNode":60,"./Pool":55}],51:[function(a,b,c){function d(){f.apply(this,arguments)}var e=a("../world/Island"),f=a("./Pool");b.exports=d,d.prototype=new f,d.prototype.constructor=d,d.prototype.create=function(){return new e},d.prototype.destroy=function(a){return a.reset(),this}},{"../world/Island":58,"./Pool":55}],52:[function(a,b,c){function d(){this.overlappingShapesLastState=new e,this.overlappingShapesCurrentState=new e,this.recordPool=new f({size:16}),this.tmpDict=new e,this.tmpArray1=[]}var e=a("./TupleDictionary"),f=(a("./OverlapKeeperRecord"),a("./OverlapKeeperRecordPool"));a("./Utils");b.exports=d,d.prototype.tick=function(){for(var a=this.overlappingShapesLastState,b=this.overlappingShapesCurrentState,c=a.keys.length;c--;){var d=a.keys[c],e=a.getByKey(d);b.getByKey(d);e&&this.recordPool.release(e)}a.reset(),a.copy(b),b.reset()},d.prototype.setOverlapping=function(a,b,c,d){var e=(this.overlappingShapesLastState,this.overlappingShapesCurrentState);if(!e.get(b.id,d.id)){var f=this.recordPool.get();f.set(a,b,c,d),e.set(b.id,d.id,f)}},d.prototype.getNewOverlaps=function(a){return this.getDiff(this.overlappingShapesLastState,this.overlappingShapesCurrentState,a)},d.prototype.getEndOverlaps=function(a){return this.getDiff(this.overlappingShapesCurrentState,this.overlappingShapesLastState,a)},d.prototype.bodiesAreOverlapping=function(a,b){for(var c=this.overlappingShapesCurrentState,d=c.keys.length;d--;){var e=c.keys[d],f=c.data[e];if(f.bodyA===a&&f.bodyB===b||f.bodyA===b&&f.bodyB===a)return!0}return!1},d.prototype.getDiff=function(a,b,c){var c=c||[],d=a,e=b;c.length=0;for(var f=e.keys.length;f--;){var g=e.keys[f],h=e.data[g];if(!h)throw new Error("Key "+g+" had no data!");var i=d.data[g];i||c.push(h)}return c},d.prototype.isNewOverlap=function(a,b){var c=0|a.id,d=0|b.id,e=this.overlappingShapesLastState,f=this.overlappingShapesCurrentState;return!e.get(c,d)&&!!f.get(c,d)},d.prototype.getNewBodyOverlaps=function(a){this.tmpArray1.length=0;var b=this.getNewOverlaps(this.tmpArray1);return this.getBodyDiff(b,a)},d.prototype.getEndBodyOverlaps=function(a){this.tmpArray1.length=0;var b=this.getEndOverlaps(this.tmpArray1);return this.getBodyDiff(b,a)},d.prototype.getBodyDiff=function(a,b){b=b||[];for(var c=this.tmpDict,d=a.length;d--;){var e=a[d];c.set(0|e.bodyA.id,0|e.bodyB.id,e)}for(d=c.keys.length;d--;){var e=c.getByKey(c.keys[d]);e&&b.push(e.bodyA,e.bodyB)}return c.reset(),b}},{"./OverlapKeeperRecord":53,"./OverlapKeeperRecordPool":54,"./TupleDictionary":56,"./Utils":57}],53:[function(a,b,c){function d(a,b,c,d){this.shapeA=b,this.shapeB=d,this.bodyA=a,this.bodyB=c}b.exports=d,d.prototype.set=function(a,b,c,e){d.call(this,a,b,c,e)}},{}],54:[function(a,b,c){function d(){f.apply(this,arguments)}var e=a("./OverlapKeeperRecord"),f=a("./Pool");b.exports=d,d.prototype=new f,d.prototype.constructor=d,d.prototype.create=function(){return new e},d.prototype.destroy=function(a){return a.bodyA=a.bodyB=a.shapeA=a.shapeB=null,this}},{"./OverlapKeeperRecord":53,"./Pool":55}],55:[function(a,b,c){function d(a){a=a||{},this.objects=[],void 0!==a.size&&this.resize(a.size)}b.exports=d,d.prototype.resize=function(a){for(var b=this.objects;b.length>a;)b.pop();for(;b.length(0|b)?a<<16|65535&b:b<<16|65535&a)},d.prototype.getByKey=function(a){return a=0|a,this.data[a]},d.prototype.get=function(a,b){return this.data[this.getKey(a,b)]},d.prototype.set=function(a,b,c){if(!c)throw new Error("No data!");var d=this.getKey(a,b);return this.data[d]||this.keys.push(d),this.data[d]=c,d},d.prototype.reset=function(){for(var a=this.data,b=this.keys,c=b.length;c--;)delete a[b[c]];b.length=0},d.prototype.copy=function(a){this.reset(),e.appendArray(this.keys,a.keys);for(var b=a.keys.length;b--;){var c=a.keys[b];this.data[c]=a.data[c]}}},{"./Utils":57}],57:[function(a,b,c){function d(){}b.exports=d,d.appendArray=function(a,b){if(b.length<15e4)a.push.apply(a,b);else for(var c=0,d=b.length;c!==d;++c)a.push(b[c])},d.splice=function(a,b,c){c=c||1;for(var d=b,e=a.length-c;e>d;d++)a[d]=a[d+c];a.length=e},"undefined"!=typeof P2_ARRAY_TYPE?d.ARRAY_TYPE=P2_ARRAY_TYPE:"undefined"!=typeof Float32Array?d.ARRAY_TYPE=Float32Array:d.ARRAY_TYPE=Array,d.extend=function(a,b){for(var c in b)a[c]=b[c]},d.defaults=function(a,b){a=a||{};for(var c in b)c in a||(a[c]=b[c]);return a}},{}],58:[function(a,b,c){function d(){this.equations=[],this.bodies=[]}var e=a("../objects/Body");b.exports=d,d.prototype.reset=function(){this.equations.length=this.bodies.length=0};var f=[];d.prototype.getBodies=function(a){var b=a||[],c=this.equations;f.length=0;for(var d=0;d!==c.length;d++){var e=c[d];-1===f.indexOf(e.bodyA.id)&&(b.push(e.bodyA),f.push(e.bodyA.id)),-1===f.indexOf(e.bodyB.id)&&(b.push(e.bodyB),f.push(e.bodyB.id))}return b},d.prototype.wantsToSleep=function(){for(var a=0;a=a&&c>d;)this.internalStep(a),this.time+=a,this.accumulator-=a,d++;for(var e=this.accumulator%a/a,g=0;g!==this.bodies.length;g++){var h=this.bodies[g];f.lerp(h.interpolatedPosition,h.previousPosition,h.position,e),h.interpolatedAngle=h.previousAngle+e*(h.angle-h.previousAngle)}}};var y=[];d.prototype.internalStep=function(a){this.stepping=!0;var b=this.springs.length,c=this.springs,e=this.bodies,g=this.gravity,h=this.solver,i=this.bodies.length,j=this.broadphase,k=this.narrowphase,l=this.constraints,n=v,o=(f.scale,f.add),p=(f.rotate,this.islandManager);if(this.overlapKeeper.tick(),this.lastTimeStep=a,this.useWorldGravityAsFrictionGravity){var q=f.length(this.gravity);0===q&&this.useFrictionGravityOnZeroGravity||(this.frictionGravity=q)}if(this.applyGravity)for(var r=0;r!==i;r++){var t=e[r],u=t.force;t.type===m.DYNAMIC&&t.sleepState!==m.SLEEPING&&(f.scale(n,g,t.mass*t.gravityScale),o(u,u,n))}if(this.applySpringForces)for(var r=0;r!==b;r++){var w=c[r];w.applyForce()}if(this.applyDamping)for(var r=0;r!==i;r++){var t=e[r];t.type===m.DYNAMIC&&t.applyDamping(a)}for(var x=j.getCollisionPairs(this),z=this.disabledBodyCollisionPairs,r=z.length-2;r>=0;r-=2)for(var A=x.length-2;A>=0;A-=2)(z[r]===x[A]&&z[r+1]===x[A+1]||z[r+1]===x[A]&&z[r]===x[A+1])&&x.splice(A,2);var B=l.length;for(r=0;r!==B;r++){var C=l[r];if(!C.collideConnected)for(var A=x.length-2;A>=0;A-=2)(C.bodyA===x[A]&&C.bodyB===x[A+1]||C.bodyB===x[A]&&C.bodyA===x[A+1])&&x.splice(A,2)}this.postBroadphaseEvent.pairs=x,this.emit(this.postBroadphaseEvent),this.postBroadphaseEvent.pairs=null,k.reset(this);for(var r=0,D=x.length;r!==D;r+=2)for(var E=x[r],F=x[r+1],G=0,H=E.shapes.length;G!==H;G++)for(var I=E.shapes[G],J=I.position,K=I.angle,L=0,M=F.shapes.length;L!==M;L++){var N=F.shapes[L],O=N.position,P=N.angle,Q=this.defaultContactMaterial;if(I.material&&N.material){var R=this.getContactMaterial(I.material,N.material);R&&(Q=R)}this.runNarrowphase(k,E,I,J,K,F,N,O,P,Q,this.frictionGravity)}for(var r=0;r!==i;r++){var S=e[r];S._wakeUpAfterNarrowphase&&(S.wakeUp(),S._wakeUpAfterNarrowphase=!1)}if(this.has("endContact")){this.overlapKeeper.getEndOverlaps(y);for(var T=this.endContactEvent,L=y.length;L--;){var U=y[L];T.shapeA=U.shapeA,T.shapeB=U.shapeB,T.bodyA=U.bodyA,T.bodyB=U.bodyB,this.emit(T)}y.length=0}var V=this.preSolveEvent;V.contactEquations=k.contactEquations,V.frictionEquations=k.frictionEquations,this.emit(V),V.contactEquations=V.frictionEquations=null;var B=l.length;for(r=0;r!==B;r++)l[r].update();if(k.contactEquations.length||k.frictionEquations.length||B)if(this.islandSplit){for(p.equations.length=0,s.appendArray(p.equations,k.contactEquations),s.appendArray(p.equations,k.frictionEquations),r=0;r!==B;r++)s.appendArray(p.equations,l[r].equations);p.split(this);for(var r=0;r!==p.islands.length;r++){var W=p.islands[r];W.equations.length&&h.solveIsland(a,W)}}else{for(h.addEquations(k.contactEquations),h.addEquations(k.frictionEquations),r=0;r!==B;r++)h.addEquations(l[r].equations);this.solveConstraints&&h.solve(a,this),h.removeAllEquations()}for(var r=0;r!==i;r++){var S=e[r];S.integrate(a)}for(var r=0;r!==i;r++)e[r].setZeroForce();if(this.emitImpactEvent&&this.has("impact"))for(var X=this.impactEvent,r=0;r!==k.contactEquations.length;r++){var Y=k.contactEquations[r];Y.firstImpact&&(X.bodyA=Y.bodyA,X.bodyB=Y.bodyB,X.shapeA=Y.shapeA,X.shapeB=Y.shapeB,X.contactEquation=Y,this.emit(X))}if(this.sleepMode===d.BODY_SLEEPING)for(r=0;r!==i;r++)e[r].sleepTick(this.time,!1,a);else if(this.sleepMode===d.ISLAND_SLEEPING&&this.islandSplit){for(r=0;r!==i;r++)e[r].sleepTick(this.time,!0,a);for(var r=0;r0,a.frictionCoefficient=k.friction;var p;p=b.type===m.STATIC||b.type===m.KINEMATIC?g.mass:g.type===m.STATIC||g.type===m.KINEMATIC?b.mass:b.mass*g.mass/(b.mass+g.mass),a.slipForce=k.friction*l*p,a.restitution=k.restitution,a.surfaceVelocity=k.surfaceVelocity,a.frictionStiffness=k.frictionStiffness,a.frictionRelaxation=k.frictionRelaxation,a.stiffness=k.stiffness,a.relaxation=k.relaxation,a.contactSkinSize=k.contactSkinSize,a.enabledEquations=b.collisionResponse&&g.collisionResponse&&c.collisionResponse&&h.collisionResponse;var q=a[c.type|h.type],r=0;if(q){var s=c.sensor||h.sensor,t=a.frictionEquations.length;r=c.type=2*y&&(b._wakeUpAfterNarrowphase=!0)}if(g.allowSleep&&g.type===m.DYNAMIC&&g.sleepState===m.SLEEPING&&b.sleepState===m.AWAKE&&b.type!==m.STATIC){var z=f.squaredLength(b.velocity)+Math.pow(b.angularVelocity,2),A=Math.pow(b.sleepSpeedLimit,2);z>=2*A&&(g._wakeUpAfterNarrowphase=!0)}if(this.overlapKeeper.setOverlapping(b,c,g,h),this.has("beginContact")&&this.overlapKeeper.isNewOverlap(c,h)){var B=this.beginContactEvent;if(B.shapeA=c,B.shapeB=h,B.bodyA=b,B.bodyB=g,B.contactEquations.length=0,"number"==typeof r)for(var C=a.contactEquations.length-r;C1)for(var C=a.frictionEquations.length-u;C=0;b--)this.removeConstraint(a[b]);for(var c=this.bodies,b=c.length-1;b>=0;b--)this.removeBody(c[b]);for(var e=this.springs,b=e.length-1;b>=0;b--)this.removeSpring(e[b]);for(var f=this.contactMaterials,b=f.length-1;b>=0;b--)this.removeContactMaterial(f[b]);d.apply(this)};var z=f.create(),A=(f.fromValues(0,0),f.fromValues(0,0));d.prototype.hitTest=function(a,b,c){c=c||0;var d=new m({position:a}),e=new k,l=a,n=0,o=z,p=A;d.addShape(e);for(var q=this.narrowphase,r=[],s=0,t=b.length;s!==t;s++)for(var u=b[s],v=0,w=u.shapes.length;v!==w;v++){var x=u.shapes[v];f.rotate(o,x.position,u.angle),f.add(o,o,u.position);var y=x.angle+u.angle;(x instanceof g&&q.circleParticle(u,x,o,y,d,e,l,n,!0)||x instanceof h&&q.particleConvex(d,e,l,n,u,x,o,y,!0)||x instanceof i&&q.particlePlane(d,e,l,n,u,x,o,y,!0)||x instanceof j&&q.particleCapsule(d,e,l,n,u,x,o,y,!0)||x instanceof k&&f.squaredLength(f.sub(p,o,a))=0&&1>=i&&j>=0&&1>=j}},{"./Scalar":4}],2:[function(a,b,c){function d(){}b.exports=d,d.area=function(a,b,c){return(b[0]-a[0])*(c[1]-a[1])-(c[0]-a[0])*(b[1]-a[1])},d.left=function(a,b,c){return d.area(a,b,c)>0},d.leftOn=function(a,b,c){return d.area(a,b,c)>=0},d.right=function(a,b,c){return d.area(a,b,c)<0},d.rightOn=function(a,b,c){return d.area(a,b,c)<=0};var e=[],f=[];d.collinear=function(a,b,c,g){if(g){var h=e,i=f;h[0]=b[0]-a[0],h[1]=b[1]-a[1],i[0]=c[0]-b[0],i[1]=c[1]-b[1];var j=h[0]*i[0]+h[1]*i[1],k=Math.sqrt(h[0]*h[0]+h[1]*h[1]),l=Math.sqrt(i[0]*i[0]+i[1]*i[1]),m=Math.acos(j/(k*l));return g>m}return 0==d.area(a,b,c)},d.sqdist=function(a,b){var c=b[0]-a[0],d=b[1]-a[1];return c*c+d*d}},{}],3:[function(a,b,c){function d(){this.vertices=[]}function e(a,b,c,d,e){e=e||0;var f=b[1]-a[1],g=a[0]-b[0],i=f*a[0]+g*a[1],j=d[1]-c[1],k=c[0]-d[0],l=j*c[0]+k*c[1],m=f*k-j*g;return h.eq(m,0,e)?[0,0]:[(k*i-g*l)/m,(f*l-j*i)/m]}var f=a("./Line"),g=a("./Point"),h=a("./Scalar");b.exports=d,d.prototype.at=function(a){var b=this.vertices,c=b.length;return b[0>a?a%c+c:a%c]},d.prototype.first=function(){return this.vertices[0]},d.prototype.last=function(){return this.vertices[this.vertices.length-1]},d.prototype.clear=function(){this.vertices.length=0},d.prototype.append=function(a,b,c){if("undefined"==typeof b)throw new Error("From is not given!");if("undefined"==typeof c)throw new Error("To is not given!");if(b>c-1)throw new Error("lol1");if(c>a.vertices.length)throw new Error("lol2");if(0>b)throw new Error("lol3");for(var d=b;c>d;d++)this.vertices.push(a.vertices[d])},d.prototype.makeCCW=function(){for(var a=0,b=this.vertices,c=1;cb[a][0])&&(a=c);g.left(this.at(a-1),this.at(a),this.at(a+1))||this.reverse()},d.prototype.reverse=function(){for(var a=[],b=0,c=this.vertices.length;b!==c;b++)a.push(this.vertices.pop());this.vertices=a},d.prototype.isReflex=function(a){return g.right(this.at(a-1),this.at(a),this.at(a+1))};var i=[],j=[];d.prototype.canSee=function(a,b){var c,d,e=i,h=j;if(g.leftOn(this.at(a+1),this.at(a),this.at(b))&&g.rightOn(this.at(a-1),this.at(a),this.at(b)))return!1;d=g.sqdist(this.at(a),this.at(b));for(var k=0;k!==this.vertices.length;++k)if((k+1)%this.vertices.length!==a&&k!==a&&g.leftOn(this.at(a),this.at(b),this.at(k+1))&&g.rightOn(this.at(a),this.at(b),this.at(k))&&(e[0]=this.at(a),e[1]=this.at(b),h[0]=this.at(k),h[1]=this.at(k+1),c=f.lineInt(e,h),g.sqdist(this.at(a),c)a)for(var f=a;b>=f;f++)e.vertices.push(this.vertices[f]);else{for(var f=0;b>=f;f++)e.vertices.push(this.vertices[f]);for(var f=a;f0?this.slice(a):[this]},d.prototype.slice=function(a){if(0==a.length)return[this];if(a instanceof Array&&a.length&&a[0]instanceof Array&&2==a[0].length&&a[0][0]instanceof Array){for(var b=[this],c=0;cc;c++)if(f.segmentsIntersect(a[b],a[b+1],a[c],a[c+1]))return!1;for(var b=1;bh)return console.warn("quickDecomp: max level ("+h+") reached."),a;for(var x=0;xo&&(n=o,k=l,r=y))),g.left(v.at(x+1),v.at(x),v.at(y+1))&&g.rightOn(v.at(x+1),v.at(x),v.at(y))&&(l=e(v.at(x+1),v.at(x),v.at(y),v.at(y+1)),g.left(v.at(x-1),v.at(x),l)&&(o=g.sqdist(v.vertices[x],l),m>o&&(m=o,j=l,q=y)));if(r==(q+1)%this.vertices.length)l[0]=(k[0]+j[0])/2,l[1]=(k[1]+j[1])/2,c.push(l),q>x?(t.append(v,x,q+1),t.vertices.push(l),u.vertices.push(l),0!=r&&u.append(v,r,v.vertices.length),u.append(v,0,x+1)):(0!=x&&t.append(v,x,v.vertices.length),t.append(v,0,q+1),t.vertices.push(l),u.vertices.push(l),u.append(v,r,x+1));else{if(r>q&&(q+=this.vertices.length),p=Number.MAX_VALUE,r>q)return a;for(var y=r;q>=y;++y)g.leftOn(v.at(x-1),v.at(x),v.at(y))&&g.rightOn(v.at(x+1),v.at(x),v.at(y))&&(o=g.sqdist(v.at(x),v.at(y)),p>o&&(p=o,s=y%this.vertices.length));s>x?(t.append(v,x,s+1),0!=s&&u.append(v,s,w.length),u.append(v,0,x+1)):(0!=x&&t.append(v,x,w.length),t.append(v,0,s+1),u.append(v,s,x+1))}return t.vertices.length3&&c>=0;--c)g.collinear(this.at(c-1),this.at(c),this.at(c+1),a)&&(this.vertices.splice(c%this.vertices.length,1),c--,b++);return b}},{"./Line":1,"./Point":2,"./Scalar":4}],4:[function(a,b,c){function d(){}b.exports=d,d.eq=function(a,b,c){return c=c||0,Math.abs(a-b) (http://steffe.se)",keywords:["p2.js","p2","physics","engine","2d"],main:"./src/p2.js",engines:{node:"*"},repository:{type:"git",url:"https://github.com/schteppe/p2.js.git"},bugs:{url:"https://github.com/schteppe/p2.js/issues"},licenses:[{type:"MIT"}],devDependencies:{grunt:"^0.4.5","grunt-contrib-jshint":"^0.11.2","grunt-contrib-nodeunit":"^0.4.1","grunt-contrib-uglify":"~0.4.0","grunt-contrib-watch":"~0.5.0","grunt-browserify":"~2.0.1","grunt-contrib-concat":"^0.4.0"},dependencies:{"poly-decomp":"0.1.0"}}},{}],7:[function(a,b,c){function d(a){this.lowerBound=e.create(),a&&a.lowerBound&&e.copy(this.lowerBound,a.lowerBound),this.upperBound=e.create(),a&&a.upperBound&&e.copy(this.upperBound,a.upperBound)}var e=a("../math/vec2");a("../utils/Utils");b.exports=d;var f=e.create();d.prototype.setFromPoints=function(a,b,c,d){var g=this.lowerBound,h=this.upperBound;"number"!=typeof c&&(c=0),0!==c?e.rotate(g,a[0],c):e.copy(g,a[0]),e.copy(h,g);for(var i=Math.cos(c),j=Math.sin(c),k=1;ko;o++)l[o]>h[o]&&(h[o]=l[o]),l[o]c&&(this.lowerBound[b]=c);var d=a.upperBound[b];this.upperBound[b]i?-1:h>i?-1:h}},{"../math/vec2":30,"../utils/Utils":57}],8:[function(a,b,c){function d(a){this.type=a,this.result=[],this.world=null,this.boundingVolumeType=d.AABB}var e=a("../math/vec2"),f=a("../objects/Body");b.exports=d,d.AABB=1,d.BOUNDING_CIRCLE=2,d.prototype.setWorld=function(a){this.world=a},d.prototype.getCollisionPairs=function(a){};var g=e.create();d.boundingRadiusCheck=function(a,b){e.sub(g,a.position,b.position);var c=e.squaredLength(g),d=a.boundingRadius+b.boundingRadius;return d*d>=c},d.aabbCheck=function(a,b){return a.getAABB().overlaps(b.getAABB())},d.prototype.boundingVolumeCheck=function(a,b){var c;switch(this.boundingVolumeType){case d.BOUNDING_CIRCLE:c=d.boundingRadiusCheck(a,b);break;case d.AABB:c=d.aabbCheck(a,b);break;default:throw new Error("Bounding volume type not recognized: "+this.boundingVolumeType)}return c},d.canCollide=function(a,b){var c=f.KINEMATIC,d=f.STATIC;return a.type===d&&b.type===d?!1:a.type===c&&b.type===d||a.type===d&&b.type===c?!1:a.type===c&&b.type===c?!1:a.sleepState===f.SLEEPING&&b.sleepState===f.SLEEPING?!1:!(a.sleepState===f.SLEEPING&&b.type===d||b.sleepState===f.SLEEPING&&a.type===d)},d.NAIVE=1,d.SAP=2},{"../math/vec2":30,"../objects/Body":31}],9:[function(a,b,c){function d(){e.call(this,e.NAIVE)}var e=(a("../shapes/Circle"),a("../shapes/Plane"),a("../shapes/Shape"),a("../shapes/Particle"),a("../collision/Broadphase"));a("../math/vec2");b.exports=d,d.prototype=new e,d.prototype.constructor=d,d.prototype.getCollisionPairs=function(a){var b=a.bodies,c=this.result;c.length=0;for(var d=0,f=b.length;d!==f;d++)for(var g=b[d],h=0;d>h;h++){var i=b[h];e.canCollide(g,i)&&this.boundingVolumeCheck(g,i)&&c.push(g,i)}return c},d.prototype.aabbQuery=function(a,b,c){c=c||[];for(var d=a.bodies,e=0;e=r*n)return!1;n=r}return!0}var g=a("../math/vec2"),h=g.sub,i=g.add,j=g.dot,k=(a("../utils/Utils"),a("../utils/ContactEquationPool")),l=a("../utils/FrictionEquationPool"),m=a("../utils/TupleDictionary"),n=a("../equations/Equation"),o=(a("../equations/ContactEquation"),a("../equations/FrictionEquation"),a("../shapes/Circle")),p=a("../shapes/Convex"),q=a("../shapes/Shape"),r=(a("../objects/Body"),a("../shapes/Box"));b.exports=d;var s=g.fromValues(0,1),t=g.fromValues(0,0),u=g.fromValues(0,0),v=g.fromValues(0,0),w=g.fromValues(0,0),x=g.fromValues(0,0),y=g.fromValues(0,0),z=g.fromValues(0,0),A=g.fromValues(0,0),B=g.fromValues(0,0),C=g.fromValues(0,0),D=g.fromValues(0,0),E=g.fromValues(0,0),F=g.fromValues(0,0),G=g.fromValues(0,0),H=g.fromValues(0,0),I=g.fromValues(0,0),J=g.fromValues(0,0),K=g.fromValues(0,0),L=[],M=g.create(),N=g.create();d.prototype.bodiesOverlap=function(a,b){for(var c=M,d=N,e=0,f=a.shapes.length;e!==f;e++){var g=a.shapes[e];a.toWorldFrame(c,g.position);for(var h=0,i=b.shapes.length;h!==i;h++){var j=b.shapes[h];if(b.toWorldFrame(d,j.position),this[g.type|j.type](a,g,c,g.angle+a.angle,b,j,d,j.angle+b.angle,!0))return!0}}return!1},d.prototype.collidedLastStep=function(a,b){var c=0|a.id,d=0|b.id;return!!this.collidingBodiesLastStep.get(c,d)},d.prototype.reset=function(){this.collidingBodiesLastStep.reset();for(var a=this.contactEquations,b=a.length;b--;){var c=a[b],d=c.bodyA.id,e=c.bodyB.id;this.collidingBodiesLastStep.set(d,e,!0)}for(var f=this.contactEquations,g=this.frictionEquations,h=0;hp;p++){g.set(m,(0===p?-1:1)*b.length/2,0),g.rotate(m,m,d),g.add(m,m,c);for(var q=0;2>q;q++){g.set(n,(0===q?-1:1)*h.length/2,0),g.rotate(n,n,j),g.add(n,n,i),this.enableFrictionReduction&&(l=this.enableFriction,this.enableFriction=!1);var r=this.circleCircle(a,b,m,d,f,h,n,j,k,b.radius,h.radius);if(this.enableFrictionReduction&&(this.enableFriction=l),k&&r)return!0;o+=r}}this.enableFrictionReduction&&(l=this.enableFriction,this.enableFriction=!1);var s=S;e(s,b);var t=this.convexCapsule(a,s,c,d,f,h,i,j,k);if(this.enableFrictionReduction&&(this.enableFriction=l),k&&t)return!0;if(o+=t,this.enableFrictionReduction){var l=this.enableFriction;this.enableFriction=!1}e(s,h);var u=this.convexCapsule(f,s,i,j,a,b,c,d,k);return this.enableFrictionReduction&&(this.enableFriction=l),k&&u?!0:(o+=u,this.enableFrictionReduction&&o&&this.enableFriction&&this.frictionEquations.push(this.createFrictionFromAverage(o)),o)},d.prototype[q.LINE|q.LINE]=d.prototype.lineLine=function(a,b,c,d,e,f,g,h,i){return i?!1:0},d.prototype[q.PLANE|q.LINE]=d.prototype.planeLine=function(a,b,c,d,e,f,k,l,m){var n=t,o=u,p=v,q=w,r=x,C=y,D=z,E=A,F=B,G=L,H=0;g.set(n,-f.length/2,0),g.set(o,f.length/2,0),g.rotate(p,n,l),g.rotate(q,o,l),i(p,p,k),i(q,q,k),g.copy(n,p),g.copy(o,q),h(r,o,n),g.normalize(C,r),g.rotate90cw(F,C),g.rotate(E,s,d),G[0]=n,G[1]=o;for(var I=0;IK){if(m)return!0;var M=this.createContactEquation(a,e,b,f);H++,g.copy(M.normalA,E),g.normalize(M.normalA,M.normalA),g.scale(D,E,K),h(M.contactPointA,J,D),h(M.contactPointA,M.contactPointA,a.position),h(M.contactPointB,J,k),i(M.contactPointB,M.contactPointB,k),h(M.contactPointB,M.contactPointB,e.position),this.contactEquations.push(M),this.enableFrictionReduction||this.enableFriction&&this.frictionEquations.push(this.createFrictionFromContact(M))}}return m?!1:(this.enableFrictionReduction||H&&this.enableFriction&&this.frictionEquations.push(this.createFrictionFromAverage(H)),H)},d.prototype[q.PARTICLE|q.CAPSULE]=d.prototype.particleCapsule=function(a,b,c,d,e,f,g,h,i){return this.circleLine(a,b,c,d,e,f,g,h,i,f.radius,0)},d.prototype[q.CIRCLE|q.LINE]=d.prototype.circleLine=function(a,b,c,d,e,f,k,l,m,n,o){var n=n||0,o="undefined"!=typeof o?o:b.radius,p=t,q=u,r=v,s=w,H=x,I=y,J=z,K=A,M=B,N=C,O=D,P=E,Q=F,R=G,S=L;g.set(K,-f.length/2,0),g.set(M,f.length/2,0),g.rotate(N,K,l),g.rotate(O,M,l),i(N,N,k),i(O,O,k),g.copy(K,N),g.copy(M,O),h(I,M,K),g.normalize(J,I),g.rotate90cw(H,J),h(P,c,K);var T=j(P,H);h(s,K,k),h(Q,c,k);var U=o+n;if(Math.abs(T)W&&X>V){if(m)return!0;var Y=this.createContactEquation(a,e,b,f);return g.scale(Y.normalA,p,-1),g.normalize(Y.normalA,Y.normalA),g.scale(Y.contactPointA,Y.normalA,o),i(Y.contactPointA,Y.contactPointA,c),h(Y.contactPointA,Y.contactPointA,a.position),h(Y.contactPointB,r,k),i(Y.contactPointB,Y.contactPointB,k),h(Y.contactPointB,Y.contactPointB,e.position),this.contactEquations.push(Y),this.enableFriction&&this.frictionEquations.push(this.createFrictionFromContact(Y)),1}}S[0]=K,S[1]=M;for(var Z=0;ZQ&&(g.copy(J,B),L=Q,g.scale(A,s,Q),g.add(A,A,B),K=!0)}}if(K){if(m)return!0;var R=this.createContactEquation(a,e,b,j);return g.sub(R.normalA,J,c),g.normalize(R.normalA,R.normalA),g.scale(R.contactPointA,R.normalA,n),i(R.contactPointA,R.contactPointA,c),h(R.contactPointA,R.contactPointA,a.position),h(R.contactPointB,A,k),i(R.contactPointB,R.contactPointB,k),h(R.contactPointB,R.contactPointB,e.position),this.contactEquations.push(R),this.enableFriction&&this.frictionEquations.push(this.createFrictionFromContact(R)),1}if(n>0)for(var N=0;NQ&&(I=Q,g.scale(E,s,Q),g.add(E,E,c),g.copy(H,s),L=!0)}if(L){var R=this.createContactEquation(a,e,b,k);return g.scale(R.normalA,H,-1),g.normalize(R.normalA,R.normalA),g.set(R.contactPointA,0,0),i(R.contactPointA,R.contactPointA,c),h(R.contactPointA,R.contactPointA,a.position),h(R.contactPointB,E,l),i(R.contactPointB,R.contactPointB,l),h(R.contactPointB,R.contactPointB,e.position),this.contactEquations.push(R),this.enableFriction&&this.frictionEquations.push(this.createFrictionFromContact(R)),1}return 0},d.prototype[q.CIRCLE]=d.prototype.circleCircle=function(a,b,c,d,e,f,j,k,l,m,n){var o=t,m=m||b.radius,n=n||f.radius;h(o,c,j);var p=m+n;if(g.squaredLength(o)>Math.pow(p,2))return 0;if(l)return!0;var q=this.createContactEquation(a,e,b,f);return h(q.normalA,j,c),g.normalize(q.normalA,q.normalA),g.scale(q.contactPointA,q.normalA,m),g.scale(q.contactPointB,q.normalA,-n),i(q.contactPointA,q.contactPointA,c),h(q.contactPointA,q.contactPointA,a.position),i(q.contactPointB,q.contactPointB,j),h(q.contactPointB,q.contactPointB,e.position),this.contactEquations.push(q),this.enableFriction&&this.frictionEquations.push(this.createFrictionFromContact(q)),1},d.prototype[q.PLANE|q.CONVEX]=d.prototype[q.PLANE|q.BOX]=d.prototype.planeConvex=function(a,b,c,d,e,f,k,l,m){var n=t,o=u,p=v,q=0;g.rotate(o,s,d);for(var r=0;r!==f.vertices.length;r++){var w=f.vertices[r];if(g.rotate(n,w,l),i(n,n,k),h(p,n,c),j(p,o)<=0){if(m)return!0;q++;var x=this.createContactEquation(a,e,b,f);h(p,n,c),g.copy(x.normalA,o);var y=j(p,x.normalA);g.scale(p,x.normalA,y),h(x.contactPointB,n,e.position),h(x.contactPointA,n,p),h(x.contactPointA,x.contactPointA,a.position),this.contactEquations.push(x),this.enableFrictionReduction||this.enableFriction&&this.frictionEquations.push(this.createFrictionFromContact(x))}}return this.enableFrictionReduction&&this.enableFriction&&q&&this.frictionEquations.push(this.createFrictionFromAverage(q)),q},d.prototype[q.PARTICLE|q.PLANE]=d.prototype.particlePlane=function(a,b,c,d,e,f,i,k,l){var m=t,n=u;k=k||0,h(m,c,i),g.rotate(n,s,k);var o=j(m,n);if(o>0)return 0;if(l)return!0;var p=this.createContactEquation(e,a,f,b);return g.copy(p.normalA,n),g.scale(m,p.normalA,o),h(p.contactPointA,c,m),h(p.contactPointA,p.contactPointA,e.position),h(p.contactPointB,c,a.position),this.contactEquations.push(p),this.enableFriction&&this.frictionEquations.push(this.createFrictionFromContact(p)),1},d.prototype[q.CIRCLE|q.PARTICLE]=d.prototype.circleParticle=function(a,b,c,d,e,f,j,k,l){var m=t;if(h(m,j,c),g.squaredLength(m)>Math.pow(b.radius,2))return 0;if(l)return!0;var n=this.createContactEquation(a,e,b,f);return g.copy(n.normalA,m),g.normalize(n.normalA,n.normalA),g.scale(n.contactPointA,n.normalA,b.radius),i(n.contactPointA,n.contactPointA,c),h(n.contactPointA,n.contactPointA,a.position),h(n.contactPointB,j,e.position),this.contactEquations.push(n),this.enableFriction&&this.frictionEquations.push(this.createFrictionFromContact(n)),1};var X=new o({radius:1}),Y=g.create(),Z=g.create();g.create();d.prototype[q.PLANE|q.CAPSULE]=d.prototype.planeCapsule=function(a,b,c,d,e,f,h,j,k){var l=Y,m=Z,n=X;g.set(l,-f.length/2,0),g.rotate(l,l,j),i(l,l,h),g.set(m,f.length/2,0),g.rotate(m,m,j),i(m,m,h),n.radius=f.radius;var o;this.enableFrictionReduction&&(o=this.enableFriction,this.enableFriction=!1);var p=this.circlePlane(e,n,l,0,a,b,c,d,k),q=this.circlePlane(e,n,m,0,a,b,c,d,k);if(this.enableFrictionReduction&&(this.enableFriction=o),k)return p||q;var r=p+q;return this.enableFrictionReduction&&r&&this.frictionEquations.push(this.createFrictionFromAverage(r)),r},d.prototype[q.CIRCLE|q.PLANE]=d.prototype.circlePlane=function(a,b,c,d,e,f,k,l,m){var n=a,o=b,p=c,q=e,r=k,w=l;w=w||0;var x=t,y=u,z=v;h(x,p,r),g.rotate(y,s,w);var A=j(y,x);if(A>o.radius)return 0;if(m)return!0;var B=this.createContactEquation(q,n,f,b);return g.copy(B.normalA,y),g.scale(B.contactPointB,B.normalA,-o.radius),i(B.contactPointB,B.contactPointB,p),h(B.contactPointB,B.contactPointB,n.position),g.scale(z,B.normalA,A),h(B.contactPointA,x,z),i(B.contactPointA,B.contactPointA,r),h(B.contactPointA,B.contactPointA,q.position),this.contactEquations.push(B),this.enableFriction&&this.frictionEquations.push(this.createFrictionFromContact(B)),1},d.prototype[q.CONVEX]=d.prototype[q.CONVEX|q.BOX]=d.prototype[q.BOX]=d.prototype.convexConvex=function(a,b,c,e,f,k,l,m,n,o){var p=t,q=u,r=v,s=w,y=x,C=z,D=A,E=B,F=0,o="number"==typeof o?o:0,G=d.findSeparatingAxis(b,c,e,k,l,m,p);if(!G)return 0;h(D,l,c),j(p,D)>0&&g.scale(p,p,-1);var H=d.getClosestEdge(b,e,p,!0),I=d.getClosestEdge(k,m,p);if(-1===H||-1===I)return 0;for(var J=0;2>J;J++){var K=H,L=I,M=b,N=k,O=c,P=l,Q=e,R=m,S=a,T=f;if(0===J){var U;U=K,K=L,L=U,U=M,M=N,N=U,U=O,O=P,P=U,U=Q,Q=R,R=U,U=S,S=T,T=U}for(var V=L;L+2>V;V++){var W=N.vertices[(V+N.vertices.length)%N.vertices.length];g.rotate(q,W,R),i(q,q,P);for(var X=0,Y=K-1;K+2>Y;Y++){var Z=M.vertices[(Y+M.vertices.length)%M.vertices.length],$=M.vertices[(Y+1+M.vertices.length)%M.vertices.length];g.rotate(r,Z,Q),g.rotate(s,$,Q),i(r,r,O),i(s,s,O),h(y,s,r),g.rotate90cw(E,y),g.normalize(E,E),h(D,q,r);var _=j(E,D);(Y===K&&o>=_||Y!==K&&0>=_)&&X++}if(X>=3){if(n)return!0;var aa=this.createContactEquation(S,T,M,N);F++;var Z=M.vertices[K%M.vertices.length],$=M.vertices[(K+1)%M.vertices.length];g.rotate(r,Z,Q),g.rotate(s,$,Q),i(r,r,O),i(s,s,O),h(y,s,r),g.rotate90cw(aa.normalA,y),g.normalize(aa.normalA,aa.normalA),h(D,q,r);var _=j(aa.normalA,D);g.scale(C,aa.normalA,_),h(aa.contactPointA,q,O),h(aa.contactPointA,aa.contactPointA,C),i(aa.contactPointA,aa.contactPointA,O),h(aa.contactPointA,aa.contactPointA,S.position),h(aa.contactPointB,q,P),i(aa.contactPointB,aa.contactPointB,P),h(aa.contactPointB,aa.contactPointB,T.position),this.contactEquations.push(aa),this.enableFrictionReduction||this.enableFriction&&this.frictionEquations.push(this.createFrictionFromContact(aa))}}}return this.enableFrictionReduction&&this.enableFriction&&F&&this.frictionEquations.push(this.createFrictionFromAverage(F)),F};var $=g.fromValues(0,0);d.projectConvexOntoAxis=function(a,b,c,d,e){var f,h,i=null,k=null,l=$;g.rotate(l,d,-c);for(var m=0;mi)&&(i=h),(null===k||k>h)&&(k=h);if(k>i){var n=k;k=i,i=n}var o=j(b,d);g.set(e,k+o,i+o)};var _=g.fromValues(0,0),aa=g.fromValues(0,0),ba=g.fromValues(0,0),ca=g.fromValues(0,0),da=g.fromValues(0,0),ea=g.fromValues(0,0);d.findSeparatingAxis=function(a,b,c,e,f,i,j){var k=null,l=!1,m=!1,n=_,o=aa,p=ba,q=ca,s=da,t=ea;if(a instanceof r&&e instanceof r)for(var u=0;2!==u;u++){var v=a,w=c;1===u&&(v=e,w=i);for(var x=0;2!==x;x++){0===x?g.set(q,0,1):1===x&&g.set(q,1,0),0!==w&&g.rotate(q,q,w),d.projectConvexOntoAxis(a,b,c,q,s),d.projectConvexOntoAxis(e,f,i,q,t);var y=s,z=t,A=!1;s[0]>t[0]&&(z=s,y=t,A=!0);var B=z[0]-y[1];l=0>=B,(null===k||B>k)&&(g.copy(j,q),k=B,m=l)}}else for(var u=0;2!==u;u++){var v=a,w=c;1===u&&(v=e,w=i);for(var x=0;x!==v.vertices.length;x++){g.rotate(o,v.vertices[x],w),g.rotate(p,v.vertices[(x+1)%v.vertices.length],w),h(n,p,o),g.rotate90cw(q,n),g.normalize(q,q),d.projectConvexOntoAxis(a,b,c,q,s),d.projectConvexOntoAxis(e,f,i,q,t);var y=s,z=t,A=!1;s[0]>t[0]&&(z=s,y=t,A=!0);var B=z[0]-y[1];l=0>=B,(null===k||B>k)&&(g.copy(j,q),k=B,m=l)}}return m};var fa=g.fromValues(0,0),ga=g.fromValues(0,0),ha=g.fromValues(0,0);d.getClosestEdge=function(a,b,c,d){var e=fa,f=ga,i=ha;g.rotate(e,c,-b),d&&g.scale(e,e,-1);for(var k=-1,l=a.vertices.length,m=-1,n=0;n!==l;n++){h(f,a.vertices[(n+1)%l],a.vertices[n%l]),g.rotate90cw(i,f),g.normalize(i,i);var o=j(i,e);(-1===k||o>m)&&(k=n%l,m=o)}return k};var ia=g.create(),ja=g.create(),ka=g.create(),la=g.create(),ma=g.create(),na=g.create(),oa=g.create();d.prototype[q.CIRCLE|q.HEIGHTFIELD]=d.prototype.circleHeightfield=function(a,b,c,d,e,f,j,k,l,m){var n=f.heights,m=m||b.radius,o=f.elementWidth,p=ja,q=ia,r=ma,s=oa,t=na,u=ka,v=la,w=Math.floor((c[0]-m-j[0])/o),x=Math.ceil((c[0]+m-j[0])/o);0>w&&(w=0),x>=n.length&&(x=n.length-1);for(var y=n[w],z=n[x],A=w;x>A;A++)n[A]y&&(y=n[A]);if(c[1]-m>y)return l?!1:0;for(var B=!1,A=w;x>A;A++){g.set(u,A*o,n[A]),g.set(v,(A+1)*o,n[A+1]),g.add(u,u,j),g.add(v,v,j),g.sub(t,v,u),g.rotate(t,t,Math.PI/2),g.normalize(t,t),g.scale(q,t,-m),g.add(q,q,c),g.sub(p,q,u);var C=g.dot(p,t);if(q[0]>=u[0]&&q[0]=C){if(l)return!0;B=!0,g.scale(p,t,-C),g.add(r,q,p),g.copy(s,t);var D=this.createContactEquation(e,a,f,b);g.copy(D.normalA,s),g.scale(D.contactPointB,D.normalA,-m),i(D.contactPointB,D.contactPointB,c),h(D.contactPointB,D.contactPointB,a.position),g.copy(D.contactPointA,r),g.sub(D.contactPointA,D.contactPointA,e.position),this.contactEquations.push(D),this.enableFriction&&this.frictionEquations.push(this.createFrictionFromContact(D))}}if(B=!1,m>0)for(var A=w;x>=A;A++)if(g.set(u,A*o,n[A]),g.add(u,u,j),g.sub(p,c,u),g.squaredLength(p)q&&(q=0),r>=k.length&&(r=k.length-1);for(var s=k[q],t=k[r],u=q;r>u;u++)k[u]s&&(s=k[u]);if(a.aabb.lowerBound[1]>s)return j?!1:0;for(var v=0,u=q;r>u;u++){g.set(m,u*l,k[u]),g.set(n,(u+1)*l,k[u+1]),g.add(m,m,h),g.add(n,n,h);var w=100;g.set(o,.5*(n[0]+m[0]),.5*(n[1]+m[1]-w)),g.sub(p.vertices[0],n,o),g.sub(p.vertices[1],m,o),g.copy(p.vertices[2],p.vertices[1]),g.copy(p.vertices[3],p.vertices[0]),p.vertices[2][1]-=w,p.vertices[3][1]-=w,v+=this.convexConvex(a,b,c,d,e,p,o,0,j)}return v}},{"../equations/ContactEquation":21,"../equations/Equation":22,"../equations/FrictionEquation":23,"../math/vec2":30,"../objects/Body":31,"../shapes/Box":37,"../shapes/Circle":39,"../shapes/Convex":40,"../shapes/Shape":45,"../utils/ContactEquationPool":48,"../utils/FrictionEquationPool":49,"../utils/TupleDictionary":56,"../utils/Utils":57}],11:[function(a,b,c){function d(a){a=a||{},this.from=a.from?f.fromValues(a.from[0],a.from[1]):f.create(),this.to=a.to?f.fromValues(a.to[0],a.to[1]):f.create(),this.checkCollisionResponse=void 0!==a.checkCollisionResponse?a.checkCollisionResponse:!0,this.skipBackfaces=!!a.skipBackfaces,this.collisionMask=void 0!==a.collisionMask?a.collisionMask:-1,this.collisionGroup=void 0!==a.collisionGroup?a.collisionGroup:-1,this.mode=void 0!==a.mode?a.mode:d.ANY,this.callback=a.callback||function(a){},this.direction=f.create(),this.length=1,this.update()}function e(a,b,c){f.sub(h,c,a);var d=f.dot(h,b);return f.scale(i,b,d),f.add(i,i,a),f.squaredDistance(c,i)}b.exports=d;var f=a("../math/vec2");a("../collision/RaycastResult"),a("../shapes/Shape"),a("../collision/AABB");d.prototype.constructor=d,d.CLOSEST=1,d.ANY=2,d.ALL=4,d.prototype.update=function(){var a=this.direction;f.sub(a,this.to,this.from),this.length=f.length(a),f.normalize(a,a)},d.prototype.intersectBodies=function(a,b){for(var c=0,d=b.length;!a.shouldStop(this)&&d>c;c++){var e=b[c],f=e.getAABB();(f.overlapsRay(this)>=0||f.containsPoint(this.from))&&this.intersectBody(a,e)}};var g=f.create();d.prototype.intersectBody=function(a,b){var c=this.checkCollisionResponse;if(!c||b.collisionResponse)for(var d=g,e=0,h=b.shapes.length;h>e;e++){var i=b.shapes[e];if((!c||i.collisionResponse)&&0!==(this.collisionGroup&i.collisionMask)&&0!==(i.collisionGroup&this.collisionMask)){f.rotate(d,i.position,b.angle),f.add(d,d,b.position);var j=i.angle+b.angle;if(this.intersectShape(a,i,j,d,b),a.shouldStop(this))break}}},d.prototype.intersectShape=function(a,b,c,d,f){var g=this.from,h=e(g,this.direction,d);h>b.boundingRadius*b.boundingRadius||(this._currentBody=f,this._currentShape=b,b.raycast(a,this,d,c),this._currentBody=this._currentShape=null)},d.prototype.getAABB=function(a){var b=this.to,c=this.from;f.set(a.lowerBound,Math.min(b[0],c[0]),Math.min(b[1],c[1])),f.set(a.upperBound,Math.max(b[0],c[0]),Math.max(b[1],c[1]))};f.create();d.prototype.reportIntersection=function(a,b,c,e){var g=(this.from,this.to,this._currentShape),h=this._currentBody;if(!(this.skipBackfaces&&f.dot(c,this.direction)>0))switch(this.mode){case d.ALL:a.set(c,g,h,b,e),this.callback(a);break;case d.CLOSEST:(bc;c++){for(var e=a[c],f=c-1;f>=0&&!(a[f].aabb.lowerBound[b]<=e.aabb.lowerBound[b]);f--)a[f+1]=a[f];a[f+1]=e}return a},d.prototype.sortList=function(){var a=this.axisList,b=this.axisIndex;d.sortAxisList(a,b)},d.prototype.getCollisionPairs=function(a){var b=this.axisList,c=this.result,d=this.axisIndex;c.length=0;for(var e=b.length;e--;){var g=b[e];g.aabbNeedsUpdate&&g.updateAABB()}this.sortList();for(var h=0,i=0|b.length;h!==i;h++)for(var j=b[h],k=h+1;i>k;k++){var l=b[k],m=l.aabb.lowerBound[d]<=j.aabb.upperBound[d];if(!m)break;f.canCollide(j,l)&&this.boundingVolumeCheck(j,l)&&c.push(j,l)}return c},d.prototype.aabbQuery=function(a,b,c){c=c||[],this.sortList();var d=this.axisIndex,e="x";1===d&&(e="y"),2===d&&(e="z");for(var f=this.axisList,g=(b.lowerBound[e],b.upperBound[e],0);gthis.upperLimit&&(f.maxForce=0,f.minForce=-this.maxForce,this.distance=this.upperLimit,l=!0),this.lowerLimitEnabled&&this.positionc)h.scale(e.normalA,j,-1),h.sub(e.contactPointA,k,g.position),h.sub(e.contactPointB,l,i.position),h.scale(o,j,c),h.add(e.contactPointA,e.contactPointA,o),-1===a.indexOf(e)&&a.push(e);else{var u=a.indexOf(e);-1!==u&&a.splice(u,1)}if(this.lowerLimitEnabled&&d>s)h.scale(f.normalA,j,1),h.sub(f.contactPointA,k,g.position),h.sub(f.contactPointB,l,i.position),h.scale(o,j,d),h.sub(f.contactPointB,f.contactPointB,o),-1===a.indexOf(f)&&a.push(f);else{var u=a.indexOf(f);-1!==u&&a.splice(u,1)}},d.prototype.enableMotor=function(){this.motorEnabled||(this.equations.push(this.motorEquation),this.motorEnabled=!0)},d.prototype.disableMotor=function(){if(this.motorEnabled){var a=this.equations.indexOf(this.motorEquation);this.equations.splice(a,1),this.motorEnabled=!1}},d.prototype.setLimits=function(a,b){"number"==typeof a?(this.lowerLimit=a,this.lowerLimitEnabled=!0):(this.lowerLimit=a,this.lowerLimitEnabled=!1),"number"==typeof b?(this.upperLimit=b,this.upperLimitEnabled=!0):(this.upperLimit=b,this.upperLimitEnabled=!1)}},{"../equations/ContactEquation":21,"../equations/Equation":22,"../equations/RotationalLockEquation":24,"../math/vec2":30,"./Constraint":14}],19:[function(a,b,c){function d(a,b,c){c=c||{},e.call(this,a,b,e.REVOLUTE,c);var d=this.maxForce="undefined"!=typeof c.maxForce?c.maxForce:Number.MAX_VALUE;this.pivotA=i.create(),this.pivotB=i.create(),c.worldPivot?(i.sub(this.pivotA,c.worldPivot,a.position),i.sub(this.pivotB,c.worldPivot,b.position),i.rotate(this.pivotA,this.pivotA,-a.angle),i.rotate(this.pivotB,this.pivotB,-b.angle)):(i.copy(this.pivotA,c.localPivotA),i.copy(this.pivotB,c.localPivotB));var o=this.equations=[new f(a,b,-d,d),new f(a,b,-d,d)],p=o[0],q=o[1],r=this;p.computeGq=function(){return i.rotate(j,r.pivotA,a.angle),i.rotate(k,r.pivotB,b.angle),i.add(n,b.position,k),i.sub(n,n,a.position),i.sub(n,n,j),i.dot(n,l)},q.computeGq=function(){return i.rotate(j,r.pivotA,a.angle),i.rotate(k,r.pivotB,b.angle),i.add(n,b.position,k),i.sub(n,n,a.position),i.sub(n,n,j),i.dot(n,m)},q.minForce=p.minForce=-d,q.maxForce=p.maxForce=d,this.motorEquation=new g(a,b),this.motorEnabled=!1,this.angle=0,this.lowerLimitEnabled=!1,this.upperLimitEnabled=!1,this.lowerLimit=0,this.upperLimit=0,this.upperLimitEquation=new h(a,b),this.lowerLimitEquation=new h(a,b),this.upperLimitEquation.minForce=0,this.lowerLimitEquation.maxForce=0}var e=a("./Constraint"),f=a("../equations/Equation"),g=a("../equations/RotationalVelocityEquation"),h=a("../equations/RotationalLockEquation"),i=a("../math/vec2");b.exports=d;var j=i.create(),k=i.create(),l=i.fromValues(1,0),m=i.fromValues(0,1),n=i.create();d.prototype=new e,d.prototype.constructor=d,d.prototype.setLimits=function(a,b){"number"==typeof a?(this.lowerLimit=a,this.lowerLimitEnabled=!0):(this.lowerLimit=a,this.lowerLimitEnabled=!1),"number"==typeof b?(this.upperLimit=b,this.upperLimitEnabled=!0):(this.upperLimit=b,this.upperLimitEnabled=!1)},d.prototype.update=function(){var a=this.bodyA,b=this.bodyB,c=this.pivotA,d=this.pivotB,e=this.equations,f=(e[0],e[1],e[0]),g=e[1],h=this.upperLimit,n=this.lowerLimit,o=this.upperLimitEquation,p=this.lowerLimitEquation,q=this.angle=b.angle-a.angle;if(this.upperLimitEnabled&&q>h)o.angle=h,-1===e.indexOf(o)&&e.push(o);else{var r=e.indexOf(o);-1!==r&&e.splice(r,1)}if(this.lowerLimitEnabled&&n>q)p.angle=n,-1===e.indexOf(p)&&e.push(p);else{var r=e.indexOf(p);-1!==r&&e.splice(r,1)}i.rotate(j,c,a.angle),i.rotate(k,d,b.angle),f.G[0]=-1,f.G[1]=0,f.G[2]=-i.crossLength(j,l),f.G[3]=1,f.G[4]=0,f.G[5]=i.crossLength(k,l),g.G[0]=0,g.G[1]=-1,g.G[2]=-i.crossLength(j,m),g.G[3]=0,g.G[4]=1,g.G[5]=i.crossLength(k,m)},d.prototype.enableMotor=function(){this.motorEnabled||(this.equations.push(this.motorEquation),this.motorEnabled=!0)},d.prototype.disableMotor=function(){if(this.motorEnabled){var a=this.equations.indexOf(this.motorEquation);this.equations.splice(a,1),this.motorEnabled=!1}},d.prototype.motorIsEnabled=function(){return!!this.motorEnabled},d.prototype.setMotorSpeed=function(a){if(this.motorEnabled){var b=this.equations.indexOf(this.motorEquation);this.equations[b].relativeVelocity=a}},d.prototype.getMotorSpeed=function(){return this.motorEnabled?this.motorEquation.relativeVelocity:!1}},{"../equations/Equation":22,"../equations/RotationalLockEquation":24,"../equations/RotationalVelocityEquation":25,"../math/vec2":30,"./Constraint":14}],20:[function(a,b,c){function d(a,b,c){c=c||{},e.call(this,a,b,-Number.MAX_VALUE,Number.MAX_VALUE),this.angle=c.angle||0,this.ratio="number"==typeof c.ratio?c.ratio:1,this.setRatio(this.ratio)}var e=a("./Equation");a("../math/vec2");b.exports=d,d.prototype=new e,d.prototype.constructor=d,d.prototype.computeGq=function(){return this.ratio*this.bodyA.angle-this.bodyB.angle+this.angle},d.prototype.setRatio=function(a){var b=this.G;b[2]=a,b[5]=-1,this.ratio=a},d.prototype.setMaxTorque=function(a){this.maxForce=a,this.minForce=-a}},{"../math/vec2":30,"./Equation":22}],21:[function(a,b,c){function d(a,b){e.call(this,a,b,0,Number.MAX_VALUE),this.contactPointA=f.create(),this.penetrationVec=f.create(),this.contactPointB=f.create(),this.normalA=f.create(),this.restitution=0,this.firstImpact=!1,this.shapeA=null,this.shapeB=null}var e=a("./Equation"),f=a("../math/vec2");b.exports=d,d.prototype=new e,d.prototype.constructor=d,d.prototype.computeB=function(a,b,c){var d=this.bodyA,e=this.bodyB,g=this.contactPointA,h=this.contactPointB,i=d.position,j=e.position,k=this.penetrationVec,l=this.normalA,m=this.G,n=f.crossLength(g,l),o=f.crossLength(h,l);m[0]=-l[0],m[1]=-l[1],m[2]=-n,m[3]=l[0],m[4]=l[1],m[5]=o,f.add(k,j,h),f.sub(k,k,i),f.sub(k,k,g);var p,q;this.firstImpact&&0!==this.restitution?(q=0,p=1/b*(1+this.restitution)*this.computeGW()):(q=f.dot(l,k)+this.offset,p=this.computeGW());var r=this.computeGiMf(),s=-q*a-p*b-c*r;return s}},{"../math/vec2":30,"./Equation":22}],22:[function(a,b,c){function d(a,b,c,e){this.minForce="undefined"==typeof c?-Number.MAX_VALUE:c,this.maxForce="undefined"==typeof e?Number.MAX_VALUE:e,this.bodyA=a,this.bodyB=b,this.stiffness=d.DEFAULT_STIFFNESS,this.relaxation=d.DEFAULT_RELAXATION,this.G=new f.ARRAY_TYPE(6);for(var g=0;6>g;g++)this.G[g]=0;this.offset=0,this.a=0,this.b=0,this.epsilon=0,this.timeStep=1/60,this.needsUpdate=!0,this.multiplier=0,this.relativeVelocity=0,this.enabled=!0}b.exports=d;var e=a("../math/vec2"),f=a("../utils/Utils");a("../objects/Body");d.prototype.constructor=d,d.DEFAULT_STIFFNESS=1e6,d.DEFAULT_RELAXATION=4,d.prototype.update=function(){var a=this.stiffness,b=this.relaxation,c=this.timeStep;this.a=4/(c*(1+4*b)),this.b=4*b/(1+4*b),this.epsilon=4/(c*c*a*(1+4*b)),this.needsUpdate=!1},d.prototype.gmult=function(a,b,c,d,e){return a[0]*b[0]+a[1]*b[1]+a[2]*c+a[3]*d[0]+a[4]*d[1]+a[5]*e},d.prototype.computeB=function(a,b,c){var d=this.computeGW(),e=this.computeGq(),f=this.computeGiMf();return-e*a-d*b-f*c};var g=e.create(),h=e.create();d.prototype.computeGq=function(){var a=this.G,b=this.bodyA,c=this.bodyB,d=(b.position,c.position,b.angle),e=c.angle;return this.gmult(a,g,d,h,e)+this.offset},d.prototype.computeGW=function(){var a=this.G,b=this.bodyA,c=this.bodyB,d=b.velocity,e=c.velocity,f=b.angularVelocity,g=c.angularVelocity;return this.gmult(a,d,f,e,g)+this.relativeVelocity},d.prototype.computeGWlambda=function(){var a=this.G,b=this.bodyA,c=this.bodyB,d=b.vlambda,e=c.vlambda,f=b.wlambda,g=c.wlambda;return this.gmult(a,d,f,e,g)};var i=e.create(),j=e.create();d.prototype.computeGiMf=function(){var a=this.bodyA,b=this.bodyB,c=a.force,d=a.angularForce,f=b.force,g=b.angularForce,h=a.invMassSolve,k=b.invMassSolve,l=a.invInertiaSolve,m=b.invInertiaSolve,n=this.G;return e.scale(i,c,h),e.multiply(i,a.massMultiplier,i),e.scale(j,f,k),e.multiply(j,b.massMultiplier,j),this.gmult(n,i,d*l,j,g*m)},d.prototype.computeGiMGt=function(){var a=this.bodyA,b=this.bodyB,c=a.invMassSolve,d=b.invMassSolve,e=a.invInertiaSolve,f=b.invInertiaSolve,g=this.G;return g[0]*g[0]*c*a.massMultiplier[0]+g[1]*g[1]*c*a.massMultiplier[1]+g[2]*g[2]*e+g[3]*g[3]*d*b.massMultiplier[0]+g[4]*g[4]*d*b.massMultiplier[1]+g[5]*g[5]*f};var k=e.create(),l=e.create(),m=e.create();e.create(),e.create(),e.create();d.prototype.addToWlambda=function(a){var b=this.bodyA,c=this.bodyB,d=k,f=l,g=m,h=b.invMassSolve,i=c.invMassSolve,j=b.invInertiaSolve,n=c.invInertiaSolve,o=this.G;f[0]=o[0],f[1]=o[1],g[0]=o[3],g[1]=o[4],e.scale(d,f,h*a),e.multiply(d,d,b.massMultiplier),e.add(b.vlambda,b.vlambda,d),b.wlambda+=j*o[2]*a,e.scale(d,g,i*a),e.multiply(d,d,c.massMultiplier),e.add(c.vlambda,c.vlambda,d),c.wlambda+=n*o[5]*a},d.prototype.computeInvC=function(a){return 1/(this.computeGiMGt()+a)}},{"../math/vec2":30,"../objects/Body":31,"../utils/Utils":57}],23:[function(a,b,c){function d(a,b,c){f.call(this,a,b,-c,c),this.contactPointA=e.create(),this.contactPointB=e.create(),this.t=e.create(),this.contactEquations=[],this.shapeA=null,this.shapeB=null,this.frictionCoefficient=.3}var e=a("../math/vec2"),f=a("./Equation");a("../utils/Utils");b.exports=d,d.prototype=new f,d.prototype.constructor=d,d.prototype.setSlipForce=function(a){this.maxForce=a,this.minForce=-a},d.prototype.getSlipForce=function(){return this.maxForce},d.prototype.computeB=function(a,b,c){var d=(this.bodyA,this.bodyB,this.contactPointA),f=this.contactPointB,g=this.t,h=this.G;h[0]=-g[0],h[1]=-g[1],h[2]=-e.crossLength(d,g),h[3]=g[0],h[4]=g[1],h[5]=e.crossLength(f,g);var i=this.computeGW(),j=this.computeGiMf(),k=-i*b-c*j;return k}},{"../math/vec2":30,"../utils/Utils":57,"./Equation":22}],24:[function(a,b,c){function d(a,b,c){c=c||{},e.call(this,a,b,-Number.MAX_VALUE,Number.MAX_VALUE),this.angle=c.angle||0;var d=this.G;d[2]=1,d[5]=-1}var e=a("./Equation"),f=a("../math/vec2");b.exports=d,d.prototype=new e,d.prototype.constructor=d;var g=f.create(),h=f.create(),i=f.fromValues(1,0),j=f.fromValues(0,1);d.prototype.computeGq=function(){return f.rotate(g,i,this.bodyA.angle+this.angle),f.rotate(h,j,this.bodyB.angle),f.dot(g,h)}},{"../math/vec2":30,"./Equation":22}],25:[function(a,b,c){function d(a,b){e.call(this,a,b,-Number.MAX_VALUE,Number.MAX_VALUE),this.relativeVelocity=1,this.ratio=1}var e=a("./Equation");a("../math/vec2");b.exports=d,d.prototype=new e,d.prototype.constructor=d,d.prototype.computeB=function(a,b,c){var d=this.G;d[2]=-1,d[5]=this.ratio;var e=this.computeGiMf(),f=this.computeGW(),g=-f*b-c*e;return g}},{"../math/vec2":30,"./Equation":22}],26:[function(a,b,c){var d=function(){};b.exports=d,d.prototype={constructor:d,on:function(a,b,c){b.context=c||this,void 0===this._listeners&&(this._listeners={});var d=this._listeners;return void 0===d[a]&&(d[a]=[]),-1===d[a].indexOf(b)&&d[a].push(b),this},has:function(a,b){if(void 0===this._listeners)return!1;var c=this._listeners;if(b){if(void 0!==c[a]&&-1!==c[a].indexOf(b))return!0}else if(void 0!==c[a])return!0;return!1},off:function(a,b){if(void 0===this._listeners)return this;var c=this._listeners,d=c[a].indexOf(b);return-1!==d&&c[a].splice(d,1),this},emit:function(a){if(void 0===this._listeners)return this;var b=this._listeners,c=b[a.type];if(void 0!==c){a.target=this;for(var d=0,e=c.length;e>d;d++){var f=c[d];f.call(f.context,a)}}return this}}},{}],27:[function(a,b,c){function d(a,b,c){if(c=c||{},!(a instanceof e&&b instanceof e))throw new Error("First two arguments must be Material instances.");this.id=d.idCounter++,this.materialA=a,this.materialB=b,this.friction="undefined"!=typeof c.friction?Number(c.friction):.3,this.restitution="undefined"!=typeof c.restitution?Number(c.restitution):0,this.stiffness="undefined"!=typeof c.stiffness?Number(c.stiffness):f.DEFAULT_STIFFNESS,this.relaxation="undefined"!=typeof c.relaxation?Number(c.relaxation):f.DEFAULT_RELAXATION,this.frictionStiffness="undefined"!=typeof c.frictionStiffness?Number(c.frictionStiffness):f.DEFAULT_STIFFNESS,this.frictionRelaxation="undefined"!=typeof c.frictionRelaxation?Number(c.frictionRelaxation):f.DEFAULT_RELAXATION,this.surfaceVelocity="undefined"!=typeof c.surfaceVelocity?Number(c.surfaceVelocity):0,this.contactSkinSize=.005}var e=a("./Material"),f=a("../equations/Equation");b.exports=d,d.idCounter=0},{"../equations/Equation":22,"./Material":28}],28:[function(a,b,c){function d(a){this.id=a||d.idCounter++}b.exports=d,d.idCounter=0},{}],29:[function(a,b,c){var d={};d.GetArea=function(a){if(a.length<6)return 0;for(var b=a.length-2,c=0,d=0;b>d;d+=2)c+=(a[d+2]-a[d])*(a[d+1]+a[d+3]);return c+=(a[0]-a[b])*(a[b+1]+a[1]),.5*-c},d.Triangulate=function(a){var b=a.length>>1;if(3>b)return[];for(var c=[],e=[],f=0;b>f;f++)e.push(f);for(var f=0,g=b;g>3;){var h=e[(f+0)%g],i=e[(f+1)%g],j=e[(f+2)%g],k=a[2*h],l=a[2*h+1],m=a[2*i],n=a[2*i+1],o=a[2*j],p=a[2*j+1],q=!1;if(d._convex(k,l,m,n,o,p)){q=!0;for(var r=0;g>r;r++){var s=e[r];if(s!=h&&s!=i&&s!=j&&d._PointInTriangle(a[2*s],a[2*s+1],k,l,m,n,o,p)){q=!1;break}}}if(q)c.push(h,i,j),e.splice((f+1)%g,1),g--,f=0;else if(f++>3*g)break}return c.push(e[0],e[1],e[2]),c},d._PointInTriangle=function(a,b,c,d,e,f,g,h){var i=g-c,j=h-d,k=e-c,l=f-d,m=a-c,n=b-d,o=i*i+j*j,p=i*k+j*l,q=i*m+j*n,r=k*k+l*l,s=k*m+l*n,t=1/(o*r-p*p),u=(r*q-p*s)*t,v=(o*s-p*q)*t;return u>=0&&v>=0&&1>u+v},d._convex=function(a,b,c,d,e,f){return(b-d)*(e-c)+(c-a)*(f-d)>=0},b.exports=d},{}],30:[function(a,b,c){var d=b.exports={},e=a("../utils/Utils");d.crossLength=function(a,b){return a[0]*b[1]-a[1]*b[0]},d.crossVZ=function(a,b,c){return d.rotate(a,b,-Math.PI/2),d.scale(a,a,c),a},d.crossZV=function(a,b,c){return d.rotate(a,c,Math.PI/2),d.scale(a,a,b),a},d.rotate=function(a,b,c){if(0!==c){var d=Math.cos(c),e=Math.sin(c),f=b[0],g=b[1];a[0]=d*f-e*g,a[1]=e*f+d*g}else a[0]=b[0],a[1]=b[1]},d.rotate90cw=function(a,b){var c=b[0],d=b[1];a[0]=d,a[1]=-c},d.toLocalFrame=function(a,b,c,e){d.copy(a,b),d.sub(a,a,c),d.rotate(a,a,-e)},d.toGlobalFrame=function(a,b,c,e){d.copy(a,b),d.rotate(a,a,e),d.add(a,a,c)},d.vectorToLocalFrame=function(a,b,c){d.rotate(a,b,-c)},d.vectorToGlobalFrame=function(a,b,c){d.rotate(a,b,c)},d.centroid=function(a,b,c,e){return d.add(a,b,c),d.add(a,a,e),d.scale(a,a,1/3),a},d.create=function(){var a=new e.ARRAY_TYPE(2);return a[0]=0,a[1]=0,a},d.clone=function(a){var b=new e.ARRAY_TYPE(2);return b[0]=a[0],b[1]=a[1],b},d.fromValues=function(a,b){var c=new e.ARRAY_TYPE(2);return c[0]=a,c[1]=b,c},d.copy=function(a,b){return a[0]=b[0],a[1]=b[1],a},d.set=function(a,b,c){return a[0]=b,a[1]=c,a},d.add=function(a,b,c){return a[0]=b[0]+c[0],a[1]=b[1]+c[1],a},d.subtract=function(a,b,c){return a[0]=b[0]-c[0],a[1]=b[1]-c[1],a},d.sub=d.subtract,d.multiply=function(a,b,c){return a[0]=b[0]*c[0],a[1]=b[1]*c[1],a},d.mul=d.multiply,d.divide=function(a,b,c){return a[0]=b[0]/c[0],a[1]=b[1]/c[1],a},d.div=d.divide,d.scale=function(a,b,c){return a[0]=b[0]*c,a[1]=b[1]*c,a},d.distance=function(a,b){var c=b[0]-a[0],d=b[1]-a[1];return Math.sqrt(c*c+d*d)},d.dist=d.distance,d.squaredDistance=function(a,b){var c=b[0]-a[0],d=b[1]-a[1];return c*c+d*d},d.sqrDist=d.squaredDistance,d.length=function(a){var b=a[0],c=a[1];return Math.sqrt(b*b+c*c)},d.len=d.length,d.squaredLength=function(a){var b=a[0],c=a[1];return b*b+c*c},d.sqrLen=d.squaredLength,d.negate=function(a,b){return a[0]=-b[0],a[1]=-b[1],a},d.normalize=function(a,b){var c=b[0],d=b[1],e=c*c+d*d;return e>0&&(e=1/Math.sqrt(e),a[0]=b[0]*e,a[1]=b[1]*e),a},d.dot=function(a,b){return a[0]*b[0]+a[1]*b[1]},d.str=function(a){return"vec2("+a[0]+", "+a[1]+")"},d.lerp=function(a,b,c,d){var e=b[0],f=b[1];return a[0]=e+d*(c[0]-e),a[1]=f+d*(c[1]-f),a},d.reflect=function(a,b,c){var d=b[0]*c[0]+b[1]*c[1];a[0]=b[0]-2*c[0]*d,a[1]=b[1]-2*c[1]*d},d.getLineSegmentsIntersection=function(a,b,c,e,f){var g=d.getLineSegmentsIntersectionFraction(b,c,e,f);return 0>g?!1:(a[0]=b[0]+g*(c[0]-b[0]),a[1]=b[1]+g*(c[1]-b[1]),!0)},d.getLineSegmentsIntersectionFraction=function(a,b,c,d){var e,f,g=b[0]-a[0],h=b[1]-a[1],i=d[0]-c[0],j=d[1]-c[1];return e=(-h*(a[0]-c[0])+g*(a[1]-c[1]))/(-i*h+g*j),f=(i*(a[1]-c[1])-j*(a[0]-c[0]))/(-i*h+g*j),e>=0&&1>=e&&f>=0&&1>=f?f:-1}},{"../utils/Utils":57}],31:[function(a,b,c){function d(a){a=a||{},k.call(this),this.id=a.id||++d._idCounter,this.world=null,this.shapes=[],this.mass=a.mass||0,this.invMass=0,this.inertia=0,this.invInertia=0,this.invMassSolve=0,this.invInertiaSolve=0,this.fixedRotation=!!a.fixedRotation,this.fixedX=!!a.fixedX,this.fixedY=!!a.fixedY,this.massMultiplier=e.create(),this.position=e.fromValues(0,0),a.position&&e.copy(this.position,a.position),this.interpolatedPosition=e.fromValues(0,0),this.interpolatedAngle=0,this.previousPosition=e.fromValues(0,0),this.previousAngle=0,this.velocity=e.fromValues(0,0),a.velocity&&e.copy(this.velocity,a.velocity),this.vlambda=e.fromValues(0,0),this.wlambda=0,this.angle=a.angle||0,this.angularVelocity=a.angularVelocity||0,this.force=e.create(),a.force&&e.copy(this.force,a.force),this.angularForce=a.angularForce||0,this.damping="number"==typeof a.damping?a.damping:.1,this.angularDamping="number"==typeof a.angularDamping?a.angularDamping:.1,this.type=d.STATIC,"undefined"!=typeof a.type?this.type=a.type:a.mass?this.type=d.DYNAMIC:this.type=d.STATIC,this.boundingRadius=0,this.aabb=new j,this.aabbNeedsUpdate=!0,this.allowSleep=void 0!==a.allowSleep?a.allowSleep:!0, +this.wantsToSleep=!1,this.sleepState=d.AWAKE,this.sleepSpeedLimit=void 0!==a.sleepSpeedLimit?a.sleepSpeedLimit:.2,this.sleepTimeLimit=void 0!==a.sleepTimeLimit?a.sleepTimeLimit:1,this.gravityScale=void 0!==a.gravityScale?a.gravityScale:1,this.collisionResponse=void 0!==a.collisionResponse?a.collisionResponse:!0,this.idleTime=0,this.timeLastSleepy=0,this.ccdSpeedThreshold=void 0!==a.ccdSpeedThreshold?a.ccdSpeedThreshold:-1,this.ccdIterations=void 0!==a.ccdIterations?a.ccdIterations:10,this.concavePath=null,this._wakeUpAfterNarrowphase=!1,this.updateMassProperties()}var e=a("../math/vec2"),f=a("poly-decomp"),g=a("../shapes/Convex"),h=a("../collision/RaycastResult"),i=a("../collision/Ray"),j=a("../collision/AABB"),k=a("../events/EventEmitter");b.exports=d,d.prototype=new k,d.prototype.constructor=d,d._idCounter=0,d.prototype.updateSolveMassProperties=function(){this.sleepState===d.SLEEPING||this.type===d.KINEMATIC?(this.invMassSolve=0,this.invInertiaSolve=0):(this.invMassSolve=this.invMass,this.invInertiaSolve=this.invInertia)},d.prototype.setDensity=function(a){var b=this.getArea();this.mass=b*a,this.updateMassProperties()},d.prototype.getArea=function(){for(var a=0,b=0;bc&&(c=g+h)}this.boundingRadius=c},d.prototype.addShape=function(a,b,c){if(a.body)throw new Error("A shape can only be added to one body.");a.body=this,b?e.copy(a.position,b):e.set(a.position,0,0),a.angle=c||0,this.shapes.push(a),this.updateMassProperties(),this.updateBoundingRadius(),this.aabbNeedsUpdate=!0},d.prototype.removeShape=function(a){var b=this.shapes.indexOf(a);return-1!==b?(this.shapes.splice(b,1),this.aabbNeedsUpdate=!0,a.body=null,!0):!1},d.prototype.updateMassProperties=function(){if(this.type===d.STATIC||this.type===d.KINEMATIC)this.mass=Number.MAX_VALUE,this.invMass=0,this.inertia=Number.MAX_VALUE,this.invInertia=0;else{var a=this.shapes,b=a.length,c=this.mass/b,f=0;if(this.fixedRotation)this.inertia=Number.MAX_VALUE,this.invInertia=0;else{for(var g=0;b>g;g++){var h=a[g],i=e.squaredLength(h.position),j=h.computeMomentOfInertia(c);f+=j+c*i}this.inertia=f,this.invInertia=f>0?1/f:0}this.invMass=1/this.mass,e.set(this.massMultiplier,this.fixedX?0:1,this.fixedY?0:1)}};e.create();d.prototype.applyForce=function(a,b){if(e.add(this.force,this.force,a),b){var c=e.crossLength(b,a);this.angularForce+=c}};var n=e.create(),o=e.create(),p=e.create();d.prototype.applyForceLocal=function(a,b){b=b||p;var c=n,d=o;this.vectorToWorldFrame(c,a),this.vectorToWorldFrame(d,b),this.applyForce(c,d)};var q=e.create();d.prototype.applyImpulse=function(a,b){if(this.type===d.DYNAMIC){var c=q;if(e.scale(c,a,this.invMass),e.multiply(c,this.massMultiplier,c),e.add(this.velocity,c,this.velocity),b){var f=e.crossLength(b,a);f*=this.invInertia,this.angularVelocity+=f}}};var r=e.create(),s=e.create(),t=e.create();d.prototype.applyImpulseLocal=function(a,b){b=b||t;var c=r,d=s;this.vectorToWorldFrame(c,a),this.vectorToWorldFrame(d,b),this.applyImpulse(c,d)},d.prototype.toLocalFrame=function(a,b){e.toLocalFrame(a,b,this.position,this.angle)},d.prototype.toWorldFrame=function(a,b){e.toGlobalFrame(a,b,this.position,this.angle)},d.prototype.vectorToLocalFrame=function(a,b){e.vectorToLocalFrame(a,b,this.angle)},d.prototype.vectorToWorldFrame=function(a,b){e.vectorToGlobalFrame(a,b,this.angle)},d.prototype.fromPolygon=function(a,b){b=b||{};for(var c=this.shapes.length;c>=0;--c)this.removeShape(this.shapes[c]);var d=new f.Polygon;if(d.vertices=a,d.makeCCW(),"number"==typeof b.removeCollinearPoints&&d.removeCollinearPoints(b.removeCollinearPoints),"undefined"==typeof b.skipSimpleCheck&&!d.isSimple())return!1;this.concavePath=d.vertices.slice(0);for(var c=0;c=g?(this.idleTime=0,this.sleepState=d.AWAKE):(this.idleTime+=c,this.sleepState=d.SLEEPY),this.idleTime>this.sleepTimeLimit&&(b?this.wantsToSleep=!0:this.sleep())}},d.prototype.overlaps=function(a){return this.world.overlapKeeper.bodiesAreOverlapping(this,a)};var x=e.create(),y=e.create();d.prototype.integrate=function(a){var b=this.invMass,c=this.force,d=this.position,f=this.velocity;e.copy(this.previousPosition,this.position),this.previousAngle=this.angle,this.fixedRotation||(this.angularVelocity+=this.angularForce*this.invInertia*a),e.scale(x,c,a*b),e.multiply(x,this.massMultiplier,x),e.add(f,x,f),this.integrateToTimeOfImpact(a)||(e.scale(y,f,a),e.add(d,d,y),this.fixedRotation||(this.angle+=this.angularVelocity*a)),this.aabbNeedsUpdate=!0};var z=new h,A=new i({mode:i.ALL}),B=e.create(),C=e.create(),D=e.create(),E=e.create();d.prototype.integrateToTimeOfImpact=function(a){if(this.ccdSpeedThreshold<0||e.squaredLength(this.velocity)=j&&ir;r++){var s=this.radius*(2*r-1);f.set(o,-q,s),f.set(p,q,s),f.toGlobalFrame(o,o,c,d),f.toGlobalFrame(p,p,c,d);var t=f.getLineSegmentsIntersectionFraction(e,g,o,p);if(t>=0&&(f.rotate(n,l,d),f.scale(n,n,2*r-1),b.reportIntersection(a,t,n,-1),a.shouldStop(b)))return}for(var u=Math.pow(this.radius,2)+Math.pow(q,2),r=0;2>r;r++){f.set(o,q*(2*r-1),0),f.toGlobalFrame(o,o,c,d);var v=Math.pow(g[0]-e[0],2)+Math.pow(g[1]-e[1],2),w=2*((g[0]-e[0])*(e[0]-o[0])+(g[1]-e[1])*(e[1]-o[1])),x=Math.pow(e[0]-o[0],2)+Math.pow(e[1]-o[1],2)-Math.pow(this.radius,2),t=Math.pow(w,2)-4*v*x;if(!(0>t))if(0===t){if(f.lerp(m,e,g,t),f.squaredDistance(m,c)>u&&(f.sub(n,m,o),f.normalize(n,n),b.reportIntersection(a,t,n,-1),a.shouldStop(b)))return}else{var y=Math.sqrt(t),z=1/(2*v),A=(-w-y)*z,B=(-w+y)*z;if(A>=0&&1>=A&&(f.lerp(m,e,g,A),f.squaredDistance(m,c)>u&&(f.sub(n,m,o),f.normalize(n,n),b.reportIntersection(a,A,n,-1),a.shouldStop(b))))return;if(B>=0&&1>=B&&(f.lerp(m,e,g,B),f.squaredDistance(m,c)>u&&(f.sub(n,m,o),f.normalize(n,n),b.reportIntersection(a,B,n,-1),a.shouldStop(b))))return}}}},{"../math/vec2":30,"./Shape":45}],39:[function(a,b,c){function d(a){"number"==typeof arguments[0]&&(a={radius:arguments[0]},console.warn("The Circle constructor signature has changed. Please use the following format: new Circle({ radius: 1 })")),a=a||{},this.radius=a.radius||1,a.type=e.CIRCLE,e.call(this,a)}var e=a("./Shape"),f=a("../math/vec2");b.exports=d,d.prototype=new e,d.prototype.constructor=d,d.prototype.computeMomentOfInertia=function(a){var b=this.radius;return a*b*b/2},d.prototype.updateBoundingRadius=function(){this.boundingRadius=this.radius},d.prototype.updateArea=function(){this.area=Math.PI*this.radius*this.radius},d.prototype.computeAABB=function(a,b,c){var d=this.radius;f.set(a.upperBound,d,d),f.set(a.lowerBound,-d,-d),b&&(f.add(a.lowerBound,a.lowerBound,b),f.add(a.upperBound,a.upperBound,b))};var g=f.create(),h=f.create();d.prototype.raycast=function(a,b,c,d){var e=b.from,i=b.to,j=this.radius,k=Math.pow(i[0]-e[0],2)+Math.pow(i[1]-e[1],2),l=2*((i[0]-e[0])*(e[0]-c[0])+(i[1]-e[1])*(e[1]-c[1])),m=Math.pow(e[0]-c[0],2)+Math.pow(e[1]-c[1],2)-Math.pow(j,2),n=Math.pow(l,2)-4*k*m,o=g,p=h;if(!(0>n))if(0===n)f.lerp(o,e,i,n),f.sub(p,o,c),f.normalize(p,p),b.reportIntersection(a,n,p,-1);else{var q=Math.sqrt(n),r=1/(2*k),s=(-l-q)*r,t=(-l+q)*r;if(s>=0&&1>=s&&(f.lerp(o,e,i,s),f.sub(p,o,c),f.normalize(p,p),b.reportIntersection(a,s,p,-1),a.shouldStop(b)))return;t>=0&&1>=t&&(f.lerp(o,e,i,t),f.sub(p,o,c),f.normalize(p,p),b.reportIntersection(a,t,p,-1))}}},{"../math/vec2":30,"./Shape":45}],40:[function(a,b,c){function d(a){Array.isArray(arguments[0])&&(a={vertices:arguments[0],axes:arguments[1]},console.warn("The Convex constructor signature has changed. Please use the following format: new Convex({ vertices: [...], ... })")),a=a||{},this.vertices=[];for(var b=void 0!==a.vertices?a.vertices:[],c=0;ce)&&(e=d),(null===g||g>d)&&(g=d);if(g>e){var j=g;g=e,e=j}f.set(b,g,e)},d.prototype.projectOntoWorldAxis=function(a,b,c,d){var e=i;this.projectOntoLocalAxis(a,d),0!==c?f.rotate(e,a,c):e=a;var g=f.dot(b,e);f.set(d,d[0]+g,d[1]+g)},d.prototype.updateTriangles=function(){this.triangles.length=0;for(var a=[],b=0;bg;e=g,g++){var h=this.vertices[e],i=this.vertices[g],j=Math.abs(f.crossLength(h,i)),k=f.dot(i,i)+f.dot(i,h)+f.dot(h,h);b+=j*k,c+=j}return a/6*(b/c)},d.prototype.updateBoundingRadius=function(){for(var a=this.vertices,b=0,c=0;c!==a.length;c++){var d=f.squaredLength(a[c]);d>b&&(b=d)}this.boundingRadius=Math.sqrt(b)},d.triangleArea=function(a,b,c){return.5*((b[0]-a[0])*(c[1]-a[1])-(c[0]-a[0])*(b[1]-a[1]))},d.prototype.updateArea=function(){this.updateTriangles(),this.area=0;for(var a=this.triangles,b=this.vertices,c=0;c!==a.length;c++){var e=a[c],f=b[e[0]],g=b[e[1]],h=b[e[2]],i=d.triangleArea(f,g,h);this.area+=i}},d.prototype.computeAABB=function(a,b,c){a.setFromPoints(this.vertices,b,c,0)};var o=f.create(),p=f.create(),q=f.create();d.prototype.raycast=function(a,b,c,d){var e=o,g=p,h=q,i=this.vertices;f.toLocalFrame(e,b.from,c,d),f.toLocalFrame(g,b.to,c,d);for(var j=i.length,k=0;j>k&&!a.shouldStop(b);k++){var l=i[k],m=i[(k+1)%j],n=f.getLineSegmentsIntersectionFraction(e,g,l,m);n>=0&&(f.sub(h,m,l),f.rotate(h,h,-Math.PI/2+d),f.normalize(h,h),b.reportIntersection(a,n,h,k))}}},{"../math/polyk":29,"../math/vec2":30,"./Shape":45,"poly-decomp":5}],41:[function(a,b,c){function d(a){if(Array.isArray(arguments[0])){if(a={heights:arguments[0]},"object"==typeof arguments[1])for(var b in arguments[1])a[b]=arguments[1][b];console.warn("The Heightfield constructor signature has changed. Please use the following format: new Heightfield({ heights: [...], ... })")}a=a||{},this.heights=a.heights?a.heights.slice(0):[],this.maxValue=a.maxValue||null,this.minValue=a.minValue||null,this.elementWidth=a.elementWidth||.1,void 0!==a.maxValue&&void 0!==a.minValue||this.updateMaxMinValues(),a.type=e.HEIGHTFIELD,e.call(this,a)}var e=a("./Shape"),f=a("../math/vec2");a("../utils/Utils");b.exports=d,d.prototype=new e,d.prototype.constructor=d,d.prototype.updateMaxMinValues=function(){for(var a=this.heights,b=a[0],c=a[0],d=0;d!==a.length;d++){var e=a[d];e>b&&(b=e),c>e&&(c=e)}this.maxValue=b,this.minValue=c},d.prototype.computeMomentOfInertia=function(a){return Number.MAX_VALUE},d.prototype.updateBoundingRadius=function(){this.boundingRadius=Number.MAX_VALUE},d.prototype.updateArea=function(){for(var a=this.heights,b=0,c=0;cs){var t=r;r=s,s=t}for(var u=0;u=0&&(f.sub(m,o,n),f.rotate(m,m,d+Math.PI/2),f.normalize(m,m),b.reportIntersection(a,v,m,-1),a.shouldStop(b)))return}}},{"../math/vec2":30,"../utils/Utils":57,"./Shape":45}],42:[function(a,b,c){function d(a){"number"==typeof arguments[0]&&(a={length:arguments[0]},console.warn("The Line constructor signature has changed. Please use the following format: new Line({ length: 1, ... })")),a=a||{},this.length=a.length||1,a.type=e.LINE,e.call(this,a)}var e=a("./Shape"),f=a("../math/vec2");b.exports=d,d.prototype=new e,d.prototype.constructor=d,d.prototype.computeMomentOfInertia=function(a){return a*Math.pow(this.length,2)/12},d.prototype.updateBoundingRadius=function(){this.boundingRadius=this.length/2};var g=[f.create(),f.create()];d.prototype.computeAABB=function(a,b,c){var d=this.length/2;f.set(g[0],-d,0),f.set(g[1],d,0),a.setFromPoints(g,b,c,0)};var h=(f.create(),f.create()),i=f.create(),j=f.create(),k=f.fromValues(0,1);d.prototype.raycast=function(a,b,c,d){var e=b.from,g=b.to,l=i,m=j,n=this.length/2;f.set(l,-n,0),f.set(m,n,0),f.toGlobalFrame(l,l,c,d),f.toGlobalFrame(m,m,c,d);var o=f.getLineSegmentsIntersectionFraction(l,m,e,g);if(o>=0){var p=h;f.rotate(p,k,d),b.reportIntersection(a,o,p,-1)}}},{"../math/vec2":30,"./Shape":45}],43:[function(a,b,c){function d(a){a=a||{},a.type=e.PARTICLE,e.call(this,a)}var e=a("./Shape"),f=a("../math/vec2");b.exports=d,d.prototype=new e,d.prototype.constructor=d,d.prototype.computeMomentOfInertia=function(a){return 0},d.prototype.updateBoundingRadius=function(){this.boundingRadius=0},d.prototype.computeAABB=function(a,b,c){f.copy(a.lowerBound,b),f.copy(a.upperBound,b)}},{"../math/vec2":30,"./Shape":45}],44:[function(a,b,c){function d(a){a=a||{},a.type=e.PLANE,e.call(this,a)}var e=a("./Shape"),f=a("../math/vec2");a("../utils/Utils");b.exports=d,d.prototype=new e,d.prototype.constructor=d,d.prototype.computeMomentOfInertia=function(a){return 0},d.prototype.updateBoundingRadius=function(){this.boundingRadius=Number.MAX_VALUE},d.prototype.computeAABB=function(a,b,c){var d=c%(2*Math.PI),e=f.set,g=Number.MAX_VALUE,h=a.lowerBound,i=a.upperBound;0===d?(e(h,-g,-g),e(i,g,0)):d===Math.PI/2?(e(h,0,-g),e(i,g,g)):d===Math.PI?(e(h,-g,0),e(i,g,g)):d===3*Math.PI/2?(e(h,-g,-g),e(i,0,g)):(e(h,-g,-g),e(i,g,g)),f.add(h,h,b),f.add(i,i,b)},d.prototype.updateArea=function(){this.area=Number.MAX_VALUE};var g=f.create(),h=(f.create(),f.create(),f.create()),i=f.create();d.prototype.raycast=function(a,b,c,d){var e=b.from,j=b.to,k=b.direction,l=g,m=h,n=i;f.set(m,0,1),f.rotate(m,m,d),f.sub(n,e,c);var o=f.dot(n,m);f.sub(n,j,c);var p=f.dot(n,m);if(!(o*p>0||f.squaredDistance(e,j)=w*w)break}for(d.updateMultipliers(k,q,1/a),x=0;x!==l;x++){var z=k[x];if(z instanceof i){for(var A=0,B=0;B!==z.contactEquations.length;B++)A+=z.contactEquations[B].multiplier;A*=z.frictionCoefficient/z.contactEquations.length,z.maxForce=A,z.minForce=-A}}}for(c=0;c!==g;c++){for(w=0,x=0;x!==l;x++){v=k[x];var y=d.iterateEquation(x,v,v.epsilon,u,t,q,p,a,c);w+=Math.abs(y)}if(this.usedIterations++,m>=w*w)break}for(r=0;r!==o;r++)n[r].addConstraintVelocity();d.updateMultipliers(k,q,1/a)}},d.updateMultipliers=function(a,b,c){for(var d=a.length;d--;)a[d].multiplier=b[d]*c},d.iterateEquation=function(a,b,c,d,e,f,g,h,i){var j=d[a],k=e[a],l=f[a],m=b.computeGWlambda(),n=b.maxForce,o=b.minForce;g&&(j=0);var p=k*(j-m-c*l),q=l+p;return o*h>q?p=o*h-l:q>n*h&&(p=n*h-l),f[a]+=p,b.addToWlambda(p),p}},{"../equations/FrictionEquation":23,"../math/vec2":30,"../utils/Utils":57,"./Solver":47}],47:[function(a,b,c){function d(a,b){a=a||{},e.call(this),this.type=b,this.equations=[],this.equationSortFunction=a.equationSortFunction||!1}var e=(a("../utils/Utils"),a("../events/EventEmitter"));b.exports=d,d.prototype=new e,d.prototype.constructor=d,d.prototype.solve=function(a,b){throw new Error("Solver.solve should be implemented by subclasses!")};var f={bodies:[]};d.prototype.solveIsland=function(a,b){this.removeAllEquations(),b.equations.length&&(this.addEquations(b.equations),f.bodies.length=0,b.getBodies(f.bodies),f.bodies.length&&this.solve(a,f))},d.prototype.sortEquations=function(){this.equationSortFunction&&this.equations.sort(this.equationSortFunction)},d.prototype.addEquation=function(a){a.enabled&&this.equations.push(a)},d.prototype.addEquations=function(a){for(var b=0,c=a.length;b!==c;b++){var d=a[b];d.enabled&&this.equations.push(d)}},d.prototype.removeEquation=function(a){var b=this.equations.indexOf(a);-1!==b&&this.equations.splice(b,1)},d.prototype.removeAllEquations=function(){this.equations.length=0},d.GS=1,d.ISLAND=2},{"../events/EventEmitter":26,"../utils/Utils":57}],48:[function(a,b,c){function d(){f.apply(this,arguments)}var e=a("../equations/ContactEquation"),f=a("./Pool");b.exports=d,d.prototype=new f,d.prototype.constructor=d,d.prototype.create=function(){return new e},d.prototype.destroy=function(a){return a.bodyA=a.bodyB=null,this}},{"../equations/ContactEquation":21,"./Pool":55}],49:[function(a,b,c){function d(){f.apply(this,arguments)}var e=a("../equations/FrictionEquation"),f=a("./Pool");b.exports=d,d.prototype=new f,d.prototype.constructor=d,d.prototype.create=function(){return new e},d.prototype.destroy=function(a){return a.bodyA=a.bodyB=null,this}},{"../equations/FrictionEquation":23,"./Pool":55}],50:[function(a,b,c){function d(){f.apply(this,arguments)}var e=a("../world/IslandNode"),f=a("./Pool");b.exports=d,d.prototype=new f,d.prototype.constructor=d,d.prototype.create=function(){return new e},d.prototype.destroy=function(a){return a.reset(),this}},{"../world/IslandNode":60,"./Pool":55}],51:[function(a,b,c){function d(){f.apply(this,arguments)}var e=a("../world/Island"),f=a("./Pool");b.exports=d,d.prototype=new f,d.prototype.constructor=d,d.prototype.create=function(){return new e},d.prototype.destroy=function(a){return a.reset(),this}},{"../world/Island":58,"./Pool":55}],52:[function(a,b,c){function d(){this.overlappingShapesLastState=new e,this.overlappingShapesCurrentState=new e,this.recordPool=new f({size:16}),this.tmpDict=new e,this.tmpArray1=[]}var e=a("./TupleDictionary"),f=(a("./OverlapKeeperRecord"),a("./OverlapKeeperRecordPool"));a("./Utils");b.exports=d,d.prototype.tick=function(){for(var a=this.overlappingShapesLastState,b=this.overlappingShapesCurrentState,c=a.keys.length;c--;){var d=a.keys[c],e=a.getByKey(d);b.getByKey(d);e&&this.recordPool.release(e)}a.reset(),a.copy(b),b.reset()},d.prototype.setOverlapping=function(a,b,c,d){var e=(this.overlappingShapesLastState,this.overlappingShapesCurrentState);if(!e.get(b.id,d.id)){var f=this.recordPool.get();f.set(a,b,c,d),e.set(b.id,d.id,f)}},d.prototype.getNewOverlaps=function(a){return this.getDiff(this.overlappingShapesLastState,this.overlappingShapesCurrentState,a)},d.prototype.getEndOverlaps=function(a){return this.getDiff(this.overlappingShapesCurrentState,this.overlappingShapesLastState,a)},d.prototype.bodiesAreOverlapping=function(a,b){for(var c=this.overlappingShapesCurrentState,d=c.keys.length;d--;){var e=c.keys[d],f=c.data[e];if(f.bodyA===a&&f.bodyB===b||f.bodyA===b&&f.bodyB===a)return!0}return!1},d.prototype.getDiff=function(a,b,c){var c=c||[],d=a,e=b;c.length=0;for(var f=e.keys.length;f--;){var g=e.keys[f],h=e.data[g];if(!h)throw new Error("Key "+g+" had no data!");var i=d.data[g];i||c.push(h)}return c},d.prototype.isNewOverlap=function(a,b){var c=0|a.id,d=0|b.id,e=this.overlappingShapesLastState,f=this.overlappingShapesCurrentState;return!e.get(c,d)&&!!f.get(c,d)},d.prototype.getNewBodyOverlaps=function(a){this.tmpArray1.length=0;var b=this.getNewOverlaps(this.tmpArray1);return this.getBodyDiff(b,a)},d.prototype.getEndBodyOverlaps=function(a){this.tmpArray1.length=0;var b=this.getEndOverlaps(this.tmpArray1);return this.getBodyDiff(b,a)},d.prototype.getBodyDiff=function(a,b){b=b||[];for(var c=this.tmpDict,d=a.length;d--;){var e=a[d];c.set(0|e.bodyA.id,0|e.bodyB.id,e)}for(d=c.keys.length;d--;){var e=c.getByKey(c.keys[d]);e&&b.push(e.bodyA,e.bodyB)}return c.reset(),b}},{"./OverlapKeeperRecord":53,"./OverlapKeeperRecordPool":54,"./TupleDictionary":56,"./Utils":57}],53:[function(a,b,c){function d(a,b,c,d){this.shapeA=b,this.shapeB=d,this.bodyA=a,this.bodyB=c}b.exports=d,d.prototype.set=function(a,b,c,e){d.call(this,a,b,c,e)}},{}],54:[function(a,b,c){function d(){f.apply(this,arguments)}var e=a("./OverlapKeeperRecord"),f=a("./Pool");b.exports=d,d.prototype=new f,d.prototype.constructor=d,d.prototype.create=function(){return new e},d.prototype.destroy=function(a){return a.bodyA=a.bodyB=a.shapeA=a.shapeB=null,this}},{"./OverlapKeeperRecord":53,"./Pool":55}],55:[function(a,b,c){function d(a){a=a||{},this.objects=[],void 0!==a.size&&this.resize(a.size)}b.exports=d,d.prototype.resize=function(a){for(var b=this.objects;b.length>a;)b.pop();for(;b.length(0|b)?a<<16|65535&b:b<<16|65535&a)},d.prototype.getByKey=function(a){return a=0|a,this.data[a]},d.prototype.get=function(a,b){return this.data[this.getKey(a,b)]},d.prototype.set=function(a,b,c){if(!c)throw new Error("No data!");var d=this.getKey(a,b);return this.data[d]||this.keys.push(d),this.data[d]=c,d},d.prototype.reset=function(){for(var a=this.data,b=this.keys,c=b.length;c--;)delete a[b[c]];b.length=0},d.prototype.copy=function(a){this.reset(),e.appendArray(this.keys,a.keys);for(var b=a.keys.length;b--;){var c=a.keys[b];this.data[c]=a.data[c]}}},{"./Utils":57}],57:[function(a,b,c){function d(){}b.exports=d,d.appendArray=function(a,b){if(b.length<15e4)a.push.apply(a,b);else for(var c=0,d=b.length;c!==d;++c)a.push(b[c])},d.splice=function(a,b,c){c=c||1;for(var d=b,e=a.length-c;e>d;d++)a[d]=a[d+c];a.length=e},"undefined"!=typeof P2_ARRAY_TYPE?d.ARRAY_TYPE=P2_ARRAY_TYPE:"undefined"!=typeof Float32Array?d.ARRAY_TYPE=Float32Array:d.ARRAY_TYPE=Array,d.extend=function(a,b){for(var c in b)a[c]=b[c]},d.defaults=function(a,b){a=a||{};for(var c in b)c in a||(a[c]=b[c]);return a}},{}],58:[function(a,b,c){function d(){this.equations=[],this.bodies=[]}var e=a("../objects/Body");b.exports=d,d.prototype.reset=function(){this.equations.length=this.bodies.length=0};var f=[];d.prototype.getBodies=function(a){var b=a||[],c=this.equations;f.length=0;for(var d=0;d!==c.length;d++){var e=c[d];-1===f.indexOf(e.bodyA.id)&&(b.push(e.bodyA),f.push(e.bodyA.id)),-1===f.indexOf(e.bodyB.id)&&(b.push(e.bodyB),f.push(e.bodyB.id))}return b},d.prototype.wantsToSleep=function(){for(var a=0;a=a&&c>d;)this.internalStep(a),this.time+=a,this.accumulator-=a,d++;for(var e=this.accumulator%a/a,g=0;g!==this.bodies.length;g++){var h=this.bodies[g];f.lerp(h.interpolatedPosition,h.previousPosition,h.position,e),h.interpolatedAngle=h.previousAngle+e*(h.angle-h.previousAngle)}}};var y=[];d.prototype.internalStep=function(a){this.stepping=!0;var b=this.springs.length,c=this.springs,e=this.bodies,g=this.gravity,h=this.solver,i=this.bodies.length,j=this.broadphase,k=this.narrowphase,l=this.constraints,n=v,o=(f.scale,f.add),p=(f.rotate,this.islandManager);if(this.overlapKeeper.tick(),this.lastTimeStep=a,this.useWorldGravityAsFrictionGravity){var q=f.length(this.gravity);0===q&&this.useFrictionGravityOnZeroGravity||(this.frictionGravity=q)}if(this.applyGravity)for(var r=0;r!==i;r++){var t=e[r],u=t.force;t.type===m.DYNAMIC&&t.sleepState!==m.SLEEPING&&(f.scale(n,g,t.mass*t.gravityScale),o(u,u,n))}if(this.applySpringForces)for(var r=0;r!==b;r++){var w=c[r];w.applyForce()}if(this.applyDamping)for(var r=0;r!==i;r++){var t=e[r];t.type===m.DYNAMIC&&t.applyDamping(a)}for(var x=j.getCollisionPairs(this),z=this.disabledBodyCollisionPairs,r=z.length-2;r>=0;r-=2)for(var A=x.length-2;A>=0;A-=2)(z[r]===x[A]&&z[r+1]===x[A+1]||z[r+1]===x[A]&&z[r]===x[A+1])&&x.splice(A,2);var B=l.length;for(r=0;r!==B;r++){var C=l[r];if(!C.collideConnected)for(var A=x.length-2;A>=0;A-=2)(C.bodyA===x[A]&&C.bodyB===x[A+1]||C.bodyB===x[A]&&C.bodyA===x[A+1])&&x.splice(A,2)}this.postBroadphaseEvent.pairs=x,this.emit(this.postBroadphaseEvent),this.postBroadphaseEvent.pairs=null,k.reset(this);for(var r=0,D=x.length;r!==D;r+=2)for(var E=x[r],F=x[r+1],G=0,H=E.shapes.length;G!==H;G++)for(var I=E.shapes[G],J=I.position,K=I.angle,L=0,M=F.shapes.length;L!==M;L++){var N=F.shapes[L],O=N.position,P=N.angle,Q=this.defaultContactMaterial;if(I.material&&N.material){var R=this.getContactMaterial(I.material,N.material);R&&(Q=R)}this.runNarrowphase(k,E,I,J,K,F,N,O,P,Q,this.frictionGravity)}for(var r=0;r!==i;r++){var S=e[r];S._wakeUpAfterNarrowphase&&(S.wakeUp(),S._wakeUpAfterNarrowphase=!1)}if(this.has("endContact")){this.overlapKeeper.getEndOverlaps(y);for(var T=this.endContactEvent,L=y.length;L--;){var U=y[L];T.shapeA=U.shapeA,T.shapeB=U.shapeB,T.bodyA=U.bodyA,T.bodyB=U.bodyB,this.emit(T)}y.length=0}var V=this.preSolveEvent;V.contactEquations=k.contactEquations,V.frictionEquations=k.frictionEquations,this.emit(V),V.contactEquations=V.frictionEquations=null;var B=l.length;for(r=0;r!==B;r++)l[r].update();if(k.contactEquations.length||k.frictionEquations.length||B)if(this.islandSplit){for(p.equations.length=0,s.appendArray(p.equations,k.contactEquations),s.appendArray(p.equations,k.frictionEquations),r=0;r!==B;r++)s.appendArray(p.equations,l[r].equations);p.split(this);for(var r=0;r!==p.islands.length;r++){var W=p.islands[r];W.equations.length&&h.solveIsland(a,W)}}else{for(h.addEquations(k.contactEquations),h.addEquations(k.frictionEquations),r=0;r!==B;r++)h.addEquations(l[r].equations);this.solveConstraints&&h.solve(a,this),h.removeAllEquations()}for(var r=0;r!==i;r++){var S=e[r];S.integrate(a)}for(var r=0;r!==i;r++)e[r].setZeroForce();if(this.emitImpactEvent&&this.has("impact"))for(var X=this.impactEvent,r=0;r!==k.contactEquations.length;r++){var Y=k.contactEquations[r];Y.firstImpact&&(X.bodyA=Y.bodyA,X.bodyB=Y.bodyB,X.shapeA=Y.shapeA,X.shapeB=Y.shapeB,X.contactEquation=Y,this.emit(X))}if(this.sleepMode===d.BODY_SLEEPING)for(r=0;r!==i;r++)e[r].sleepTick(this.time,!1,a);else if(this.sleepMode===d.ISLAND_SLEEPING&&this.islandSplit){for(r=0;r!==i;r++)e[r].sleepTick(this.time,!0,a);for(var r=0;r0,a.frictionCoefficient=k.friction;var p;p=b.type===m.STATIC||b.type===m.KINEMATIC?g.mass:g.type===m.STATIC||g.type===m.KINEMATIC?b.mass:b.mass*g.mass/(b.mass+g.mass),a.slipForce=k.friction*l*p,a.restitution=k.restitution,a.surfaceVelocity=k.surfaceVelocity,a.frictionStiffness=k.frictionStiffness,a.frictionRelaxation=k.frictionRelaxation,a.stiffness=k.stiffness,a.relaxation=k.relaxation,a.contactSkinSize=k.contactSkinSize,a.enabledEquations=b.collisionResponse&&g.collisionResponse&&c.collisionResponse&&h.collisionResponse;var q=a[c.type|h.type],r=0;if(q){var s=c.sensor||h.sensor,t=a.frictionEquations.length;r=c.type=2*y&&(b._wakeUpAfterNarrowphase=!0)}if(g.allowSleep&&g.type===m.DYNAMIC&&g.sleepState===m.SLEEPING&&b.sleepState===m.AWAKE&&b.type!==m.STATIC){var z=f.squaredLength(b.velocity)+Math.pow(b.angularVelocity,2),A=Math.pow(b.sleepSpeedLimit,2);z>=2*A&&(g._wakeUpAfterNarrowphase=!0)}if(this.overlapKeeper.setOverlapping(b,c,g,h),this.has("beginContact")&&this.overlapKeeper.isNewOverlap(c,h)){var B=this.beginContactEvent;if(B.shapeA=c,B.shapeB=h,B.bodyA=b,B.bodyB=g,B.contactEquations.length=0,"number"==typeof r)for(var C=a.contactEquations.length-r;C1)for(var C=a.frictionEquations.length-u;C=0;b--)this.removeConstraint(a[b]);for(var c=this.bodies,b=c.length-1;b>=0;b--)this.removeBody(c[b]);for(var e=this.springs,b=e.length-1;b>=0;b--)this.removeSpring(e[b]);for(var f=this.contactMaterials,b=f.length-1;b>=0;b--)this.removeContactMaterial(f[b]);d.apply(this)};var z=f.create(),A=(f.fromValues(0,0),f.fromValues(0,0));d.prototype.hitTest=function(a,b,c){c=c||0;var d=new m({position:a}),e=new k,l=a,n=0,o=z,p=A;d.addShape(e);for(var q=this.narrowphase,r=[],s=0,t=b.length;s!==t;s++)for(var u=b[s],v=0,w=u.shapes.length;v!==w;v++){var x=u.shapes[v];f.rotate(o,x.position,u.angle),f.add(o,o,u.position);var y=x.angle+u.angle;(x instanceof g&&q.circleParticle(u,x,o,y,d,e,l,n,!0)||x instanceof h&&q.particleConvex(d,e,l,n,u,x,o,y,!0)||x instanceof i&&q.particlePlane(d,e,l,n,u,x,o,y,!0)||x instanceof j&&q.particleCapsule(d,e,l,n,u,x,o,y,!0)||x instanceof k&&f.squaredLength(f.sub(p,o,a))= str.length) @@ -4120,6 +4153,11 @@ Phaser.Polygon = function () { */ this.closed = true; + /** + * @property {boolean} flattened - Has this Polygon been flattened by a call to `Polygon.flatten` ? + */ + this.flattened = false; + /** * @property {number} type - The base object type. */ @@ -4160,7 +4198,9 @@ Phaser.Polygon.prototype = { }, /** - * Flattens this Polygon so the points are a sequence of numbers. Any Point objects found are removed and replaced with two numbers. + * Flattens this Polygon so the points are a sequence of numbers. + * Any Point objects found are removed and replaced with two numbers. + * Also sets the Polygon.flattened property to `true`. * * @method Phaser.Polygon#flatten * @return {Phaser.Polygon} This Polygon object @@ -4169,6 +4209,8 @@ Phaser.Polygon.prototype = { this._points = this.toNumberArray(); + this.flattened = true; + return this; }, @@ -4210,20 +4252,39 @@ Phaser.Polygon.prototype = { // Adapted from http://www.ecse.rpi.edu/Homepages/wrf/Research/Short_Notes/pnpoly.html by Jonas Raoni Soares Silva - var length = this._points.length; var inside = false; - for (var i = -1, j = length - 1; ++i < length; j = i) + if (this.flattened) { - var ix = this._points[i].x; - var iy = this._points[i].y; - - var jx = this._points[j].x; - var jy = this._points[j].y; - - if (((iy <= y && y < jy) || (jy <= y && y < iy)) && (x < (jx - ix) * (y - iy) / (jy - iy) + ix)) + for (var i = -2, j = this._points.length - 2; (i += 2) < this._points.length; j = i) { - inside = !inside; + var ix = this._points[i]; + var iy = this._points[i + 1]; + + var jx = this._points[j]; + var jy = this._points[j + 1]; + + if (((iy <= y && y < jy) || (jy <= y && y < iy)) && (x < (jx - ix) * (y - iy) / (jy - iy) + ix)) + { + inside = !inside; + } + } + + } + else + { + for (var i = -1, j = this._points.length - 1; ++i < this._points.length; j = i) + { + var ix = this._points[i].x; + var iy = this._points[i].y; + + var jx = this._points[j].x; + var jy = this._points[j].y; + + if (((iy <= y && y < jy) || (jy <= y && y < iy)) && (x < (jx - ix) * (y - iy) / (jy - iy) + ix)) + { + inside = !inside; + } } } @@ -10071,6 +10132,8 @@ Phaser.Group.prototype.align = function (rows, columns, cellWidth, cellHeight, p else { // We keep laying them out until we hit the column limit + r.x += cellWidth; + if (r.x === w) { r.x = 0; @@ -11501,17 +11564,24 @@ Phaser.Group.prototype.getBottom = function () { }; /** -* Get the closest child to given Object. +* Get the closest child to given Object, with optional callback to filter children. * * This can be a Sprite, Group, Image or any object with public x and y properties. * * 'close' is determined by the distance from the objects `x` and `y` properties compared to the childs `x` and `y` properties. * +* You can use the optional `callback` argument to apply your own filter to the distance checks. +* If the child is closer then the previous child, it will be sent to `callback` as the first argument, +* with the distance as the second. The callback should return `true` if it passes your +* filtering criteria, otherwise it should return `false`. +* * @method Phaser.Group#getClosestTo * @param {any} object - The object used to determine the distance. This can be a Sprite, Group, Image or any object with public x and y properties. -* @return {any} The child closest to given object, or null if no child was found. +* @param {function} [callback] - The function that each child will be evaluated against. Each child of the group will be passed to it as its first parameter, with the distance as the second. It should return `true` if the child passes the matching criteria. +* @param {object} [callbackContext] - The context in which the function should be called (usually 'this'). +* @return {any} The child closest to given object, or `null` if no child was found. */ -Phaser.Group.prototype.getClosestTo = function (object) { +Phaser.Group.prototype.getClosestTo = function (object, callback, callbackContext) { var distance = Number.MAX_VALUE; var tempDistance = 0; @@ -11525,7 +11595,7 @@ Phaser.Group.prototype.getClosestTo = function (object) { { tempDistance = Math.abs(Phaser.Point.distance(object, child)); - if (tempDistance < distance) + if (tempDistance < distance && (!callback || callback.call(callbackContext, child, tempDistance))) { distance = tempDistance; result = child; @@ -11538,17 +11608,24 @@ Phaser.Group.prototype.getClosestTo = function (object) { }; /** -* Get the child furthest away from the given Object. +* Get the child furthest away from the given Object, with optional callback to filter children. * * This can be a Sprite, Group, Image or any object with public x and y properties. * * 'furthest away' is determined by the distance from the objects `x` and `y` properties compared to the childs `x` and `y` properties. * +* You can use the optional `callback` argument to apply your own filter to the distance checks. +* If the child is closer then the previous child, it will be sent to `callback` as the first argument, +* with the distance as the second. The callback should return `true` if it passes your +* filtering criteria, otherwise it should return `false`. +* * @method Phaser.Group#getFurthestFrom * @param {any} object - The object used to determine the distance. This can be a Sprite, Group, Image or any object with public x and y properties. -* @return {any} The child furthest from the given object, or null if no child was found. +* @param {function} [callback] - The function that each child will be evaluated against. Each child of the group will be passed to it as its first parameter, with the distance as the second. It should return `true` if the child passes the matching criteria. +* @param {object} [callbackContext] - The context in which the function should be called (usually 'this'). +* @return {any} The child furthest from the given object, or `null` if no child was found. */ -Phaser.Group.prototype.getFurthestFrom = function (object) { +Phaser.Group.prototype.getFurthestFrom = function (object, callback, callbackContext) { var distance = 0; var tempDistance = 0; @@ -11562,7 +11639,7 @@ Phaser.Group.prototype.getFurthestFrom = function (object) { { tempDistance = Math.abs(Phaser.Point.distance(object, child)); - if (tempDistance > distance) + if (tempDistance > distance && (!callback || callback.call(callbackContext, child, tempDistance))) { distance = tempDistance; result = child; @@ -11894,6 +11971,289 @@ Object.defineProperty(Phaser.Group.prototype, "angle", { }); +/** +* The center x coordinate of this Group. +* +* It is derived by calling `getBounds`, calculating the Groups dimensions based on its +* visible children. +* +* Note that no ancestors are factored into the result, meaning that if this Group is +* nested within another Group, with heavy transforms on it, the result of this property +* is likely to be incorrect. It is safe to get and set this property if the Group is a +* top-level descendant of Phaser.World, or untransformed parents. +* +* @name Phaser.Group#centerX +* @property {number} centerX +*/ +Object.defineProperty(Phaser.Group.prototype, "centerX", { + + get: function () { + + return this.getBounds().centerX; + + }, + + set: function (value) { + + var r = this.getBounds(); + var offset = this.x - r.x; + + this.x = (value + offset) - r.halfWidth; + + } + +}); + +/** +* The center y coordinate of this Group. +* +* It is derived by calling `getBounds`, calculating the Groups dimensions based on its +* visible children. +* +* Note that no ancestors are factored into the result, meaning that if this Group is +* nested within another Group, with heavy transforms on it, the result of this property +* is likely to be incorrect. It is safe to get and set this property if the Group is a +* top-level descendant of Phaser.World, or untransformed parents. +* +* @name Phaser.Group#centerY +* @property {number} centerY +*/ +Object.defineProperty(Phaser.Group.prototype, "centerY", { + + get: function () { + + return this.getBounds().centerY; + + }, + + set: function (value) { + + var r = this.getBounds(); + var offset = this.y - r.y; + + this.y = (value + offset) - r.halfHeight; + + } + +}); + +/** +* The left coordinate of this Group. +* +* It is derived by calling `getBounds`, calculating the Groups dimensions based on its +* visible children. +* +* Note that no ancestors are factored into the result, meaning that if this Group is +* nested within another Group, with heavy transforms on it, the result of this property +* is likely to be incorrect. It is safe to get and set this property if the Group is a +* top-level descendant of Phaser.World, or untransformed parents. +* +* @name Phaser.Group#left +* @property {number} left +*/ +Object.defineProperty(Phaser.Group.prototype, "left", { + + get: function () { + + return this.getBounds().left; + + }, + + set: function (value) { + + var r = this.getBounds(); + var offset = this.x - r.x; + + this.x = value + offset; + + } + +}); + +/** +* The right coordinate of this Group. +* +* It is derived by calling `getBounds`, calculating the Groups dimensions based on its +* visible children. +* +* Note that no ancestors are factored into the result, meaning that if this Group is +* nested within another Group, with heavy transforms on it, the result of this property +* is likely to be incorrect. It is safe to get and set this property if the Group is a +* top-level descendant of Phaser.World, or untransformed parents. +* +* @name Phaser.Group#right +* @property {number} right +*/ +Object.defineProperty(Phaser.Group.prototype, "right", { + + get: function () { + + return this.getBounds().right; + + }, + + set: function (value) { + + var r = this.getBounds(); + var offset = this.x - r.x; + + this.x = (value + offset) - r.width; + + } + +}); + +/** +* The top coordinate of this Group. +* +* It is derived by calling `getBounds`, calculating the Groups dimensions based on its +* visible children. +* +* Note that no ancestors are factored into the result, meaning that if this Group is +* nested within another Group, with heavy transforms on it, the result of this property +* is likely to be incorrect. It is safe to get and set this property if the Group is a +* top-level descendant of Phaser.World, or untransformed parents. +* +* @name Phaser.Group#top +* @property {number} top +*/ +Object.defineProperty(Phaser.Group.prototype, "top", { + + get: function () { + + return this.getBounds().top; + + }, + + set: function (value) { + + var r = this.getBounds(); + var offset = this.y - r.y; + + this.y = (value + offset); + + } + +}); + +/** +* The bottom coordinate of this Group. +* +* It is derived by calling `getBounds`, calculating the Groups dimensions based on its +* visible children. +* +* Note that no ancestors are factored into the result, meaning that if this Group is +* nested within another Group, with heavy transforms on it, the result of this property +* is likely to be incorrect. It is safe to get and set this property if the Group is a +* top-level descendant of Phaser.World, or untransformed parents. +* +* @name Phaser.Group#bottom +* @property {number} bottom +*/ +Object.defineProperty(Phaser.Group.prototype, "bottom", { + + get: function () { + + return this.getBounds().bottom; + + }, + + set: function (value) { + + var r = this.getBounds(); + var offset = this.y - r.y; + + this.y = (value + offset) - r.height; + + } + +}); + +/** +* Aligns this Group within another Game Object, or Rectangle, known as the +* 'container', to one of 9 possible positions. +* +* The container must be a Game Object, or Phaser.Rectangle object. This can include properties +* such as `World.bounds` or `Camera.view`, for aligning Groups within the world +* and camera bounds. Or it can include other Sprites, Images, Text objects, BitmapText, +* TileSprites or Buttons. +* +* Please note that aligning a Group to another Game Object does **not** make it a child of +* the container. It simply modifies its position coordinates so it aligns with it. +* +* The position constants you can use are: +* +* `Phaser.TOP_LEFT`, `Phaser.TOP_CENTER`, `Phaser.TOP_RIGHT`, `Phaser.LEFT_CENTER`, +* `Phaser.CENTER`, `Phaser.RIGHT_CENTER`, `Phaser.BOTTOM_LEFT`, +* `Phaser.BOTTOM_CENTER` and `Phaser.BOTTOM_RIGHT`. +* +* Groups are placed in such a way that their _bounds_ align with the +* container, taking into consideration rotation and scale of its children. +* This allows you to neatly align Groups, irrespective of their position value. +* +* The optional `offsetX` and `offsetY` arguments allow you to apply extra spacing to the final +* aligned position of the Group. For example: +* +* `group.alignIn(background, Phaser.BOTTOM_RIGHT, -20, -20)` +* +* Would align the `group` to the bottom-right, but moved 20 pixels in from the corner. +* Think of the offsets as applying an adjustment to the containers bounds before the alignment takes place. +* So providing a negative offset will 'shrink' the container bounds by that amount, and providing a positive +* one expands it. +* +* @method Phaser.Group#alignIn +* @param {Phaser.Rectangle|Phaser.Sprite|Phaser.Image|Phaser.Text|Phaser.BitmapText|Phaser.Button|Phaser.Graphics|Phaser.TileSprite} container - The Game Object or Rectangle with which to align this Group to. Can also include properties such as `World.bounds` or `Camera.view`. +* @param {integer} [position] - The position constant. One of `Phaser.TOP_LEFT` (default), `Phaser.TOP_CENTER`, `Phaser.TOP_RIGHT`, `Phaser.LEFT_CENTER`, `Phaser.CENTER`, `Phaser.RIGHT_CENTER`, `Phaser.BOTTOM_LEFT`, `Phaser.BOTTOM_CENTER` or `Phaser.BOTTOM_RIGHT`. +* @param {integer} [offsetX=0] - A horizontal adjustment of the Containers bounds, applied to the aligned position of the Game Object. Use a negative value to shrink the bounds, positive to increase it. +* @param {integer} [offsetY=0] - A vertical adjustment of the Containers bounds, applied to the aligned position of the Game Object. Use a negative value to shrink the bounds, positive to increase it. +* @return {Phaser.Group} This Group. +*/ + +// This function is set at the bottom of src/gameobjects/components/Bounds.js + +/** +* Aligns this Group to the side of another Game Object, or Rectangle, known as the +* 'parent', in one of 11 possible positions. +* +* The parent must be a Game Object, or Phaser.Rectangle object. This can include properties +* such as `World.bounds` or `Camera.view`, for aligning Groups within the world +* and camera bounds. Or it can include other Sprites, Images, Text objects, BitmapText, +* TileSprites or Buttons. +* +* Please note that aligning a Group to another Game Object does **not** make it a child of +* the parent. It simply modifies its position coordinates so it aligns with it. +* +* The position constants you can use are: +* +* `Phaser.TOP_LEFT` (default), `Phaser.TOP_CENTER`, `Phaser.TOP_RIGHT`, `Phaser.LEFT_TOP`, +* `Phaser.LEFT_CENTER`, `Phaser.LEFT_BOTTOM`, `Phaser.RIGHT_TOP`, `Phaser.RIGHT_CENTER`, +* `Phaser.RIGHT_BOTTOM`, `Phaser.BOTTOM_LEFT`, `Phaser.BOTTOM_CENTER` +* and `Phaser.BOTTOM_RIGHT`. +* +* Groups are placed in such a way that their _bounds_ align with the +* parent, taking into consideration rotation and scale of the children. +* This allows you to neatly align Groups, irrespective of their position value. +* +* The optional `offsetX` and `offsetY` arguments allow you to apply extra spacing to the final +* aligned position of the Group. For example: +* +* `group.alignTo(background, Phaser.BOTTOM_RIGHT, -20, -20)` +* +* Would align the `group` to the bottom-right, but moved 20 pixels in from the corner. +* Think of the offsets as applying an adjustment to the parents bounds before the alignment takes place. +* So providing a negative offset will 'shrink' the parent bounds by that amount, and providing a positive +* one expands it. +* +* @method Phaser.Group#alignTo +* @param {Phaser.Rectangle|Phaser.Sprite|Phaser.Image|Phaser.Text|Phaser.BitmapText|Phaser.Button|Phaser.Graphics|Phaser.TileSprite} parent - The Game Object or Rectangle with which to align this Group to. Can also include properties such as `World.bounds` or `Camera.view`. +* @param {integer} [position] - The position constant. One of `Phaser.TOP_LEFT`, `Phaser.TOP_CENTER`, `Phaser.TOP_RIGHT`, `Phaser.LEFT_TOP`, `Phaser.LEFT_CENTER`, `Phaser.LEFT_BOTTOM`, `Phaser.RIGHT_TOP`, `Phaser.RIGHT_CENTER`, `Phaser.RIGHT_BOTTOM`, `Phaser.BOTTOM_LEFT`, `Phaser.BOTTOM_CENTER` or `Phaser.BOTTOM_RIGHT`. +* @param {integer} [offsetX=0] - A horizontal adjustment of the Containers bounds, applied to the aligned position of the Game Object. Use a negative value to shrink the bounds, positive to increase it. +* @param {integer} [offsetY=0] - A vertical adjustment of the Containers bounds, applied to the aligned position of the Game Object. Use a negative value to shrink the bounds, positive to increase it. +* @return {Phaser.Group} This Group. +*/ + +// This function is set at the bottom of src/gameobjects/components/Bounds.js + /** * A display object is any object that can be rendered in the Phaser/pixi.js scene graph. * @@ -18163,9 +18523,10 @@ Phaser.InputHandler.prototype = { /** * Starts the Input Handler running. This is called automatically when you enable input on a Sprite, or can be called directly if you need to set a specific priority. + * * @method Phaser.InputHandler#start - * @param {number} priority - Higher priority sprites take click priority over low-priority sprites when they are stacked on-top of each other. - * @param {boolean} useHandCursor - If true the Sprite will show the hand cursor on mouse-over (doesn't apply to mobile browsers) + * @param {number} [priority=0] - Higher priority sprites take click priority over low-priority sprites when they are stacked on-top of each other. + * @param {boolean} [useHandCursor=false] - If true the Sprite will show the hand cursor on mouse-over (doesn't apply to mobile browsers) * @return {Phaser.Sprite} The Sprite object to which the Input Handler is bound. */ start: function (priority, useHandCursor) { @@ -18786,7 +19147,7 @@ Phaser.InputHandler.prototype = { } else if (this.draggable && this._draggedPointerID === pointer.id) { - return this.updateDrag(pointer); + return this.updateDrag(pointer, false); } else if (this._pointerData[pointer.id].isOver) { @@ -19065,24 +19426,24 @@ Phaser.InputHandler.prototype = { }, /** - * Updates the Pointer drag on this Sprite. + * Called as a Pointer actively drags this Game Object. + * * @method Phaser.InputHandler#updateDrag - * @param {Phaser.Pointer} pointer + * @private + * @param {Phaser.Pointer} pointer - The Pointer causing the drag update. + * @param {boolean} fromStart - True if this is the first update, immediately after the drag has started. * @return {boolean} */ updateDrag: function (pointer, fromStart) { + if (fromStart === undefined) { fromStart = false; } + if (pointer.isUp) { this.stopDrag(pointer); return false; } - if (fromStart === undefined) - { - fromStart = false; - } - var px = this.globalToLocalX(pointer.x) + this._dragPoint.x + this.dragOffset.x; var py = this.globalToLocalY(pointer.y) + this._dragPoint.y + this.dragOffset.y; @@ -19533,7 +19894,6 @@ Phaser.InputHandler.prototype = { }, - /** * Bounds Rect check for the sprite drag * @@ -22598,6 +22958,11 @@ Phaser.Component.Bounds.prototype = { }; +// Phaser.Group extensions + +Phaser.Group.prototype.alignIn = Phaser.Component.Bounds.prototype.alignIn; +Phaser.Group.prototype.alignTo = Phaser.Component.Bounds.prototype.alignTo; + /** * @author Richard Davey * @copyright 2016 Photon Storm Ltd. @@ -23417,7 +23782,7 @@ Phaser.Component.Destroy.prototype = { */ /** -* The Events component is a collection of events fired by the parent game object. +* The Events component is a collection of events fired by the parent Game Object. * * Phaser uses what are known as 'Signals' for all event handling. All of the events in * this class are signals you can subscribe to, much in the same way you'd "listen" for @@ -23487,92 +23852,187 @@ Phaser.Events.prototype = { // The following properties are sentinels that will be replaced with getters /** - * @property {Phaser.Signal} onAddedToGroup - This signal is dispatched when the parent is added to a new Group. + * This signal is dispatched when this Game Object is added to a new Group. + * It is sent two arguments: + * {any} The Game Object that was added to the Group. + * {Phaser.Group} The Group it was added to. + * @property {Phaser.Signal} onAddedToGroup */ onAddedToGroup: null, /** - * @property {Phaser.Signal} onRemovedFromGroup - This signal is dispatched when the parent is removed from a Group. + * This signal is dispatched when the Game Object is removed from a Group. + * It is sent two arguments: + * {any} The Game Object that was removed from the Group. + * {Phaser.Group} The Group it was removed from. + * @property {Phaser.Signal} onRemovedFromGroup */ onRemovedFromGroup: null, /** - * @property {Phaser.Signal} onRemovedFromWorld - This signal is dispatched if this item or any of its parents are removed from the game world. + * This Signal is never used internally by Phaser and is now deprecated. + * @deprecated + * @property {Phaser.Signal} onRemovedFromWorld */ onRemovedFromWorld: null, /** - * @property {Phaser.Signal} onDestroy - This signal is dispatched when the parent is destroyed. + * This signal is dispatched when the Game Object is destroyed. + * This happens when `Sprite.destroy()` is called, or `Group.destroy()` with `destroyChildren` set to true. + * It is sent one argument: + * {any} The Game Object that was destroyed. + * @property {Phaser.Signal} onDestroy */ onDestroy: null, /** - * @property {Phaser.Signal} onKilled - This signal is dispatched when the parent is killed. + * This signal is dispatched when the Game Object is killed. + * This happens when `Sprite.kill()` is called. + * Please understand the difference between `kill` and `destroy` by looking at their respective methods. + * It is sent one argument: + * {any} The Game Object that was killed. + * @property {Phaser.Signal} onKilled */ onKilled: null, /** - * @property {Phaser.Signal} onRevived - This signal is dispatched when the parent is revived. + * This signal is dispatched when the Game Object is revived from a previously killed state. + * This happens when `Sprite.revive()` is called. + * It is sent one argument: + * {any} The Game Object that was revived. + * @property {Phaser.Signal} onRevived */ onRevived: null, /** - * @property {Phaser.Signal} onOutOfBounds - This signal is dispatched when the parent leaves the world bounds (only if Sprite.checkWorldBounds is true). + * This signal is dispatched when the Game Object leaves the Phaser.World bounds. + * This signal is only if `Sprite.checkWorldBounds` is set to `true`. + * It is sent one argument: + * {any} The Game Object that left the World bounds. + * @property {Phaser.Signal} onOutOfBounds */ onOutOfBounds: null, /** - * @property {Phaser.Signal} onEnterBounds - This signal is dispatched when the parent returns within the world bounds (only if Sprite.checkWorldBounds is true). + * This signal is dispatched when the Game Object returns within the Phaser.World bounds, having previously been outside of them. + * This signal is only if `Sprite.checkWorldBounds` is set to `true`. + * It is sent one argument: + * {any} The Game Object that entered the World bounds. + * @property {Phaser.Signal} onEnterBounds */ onEnterBounds: null, /** - * @property {Phaser.Signal} onInputOver - This signal is dispatched if the parent is inputEnabled and receives an over event from a Pointer. + * This signal is dispatched if the Game Object has `inputEnabled` set to `true`, + * and receives an over event from a Phaser.Pointer. + * It is sent two arguments: + * {any} The Game Object that received the event. + * {Phaser.Pointer} The Phaser.Pointer object that caused the event. + * @property {Phaser.Signal} onInputOver */ onInputOver: null, /** - * @property {Phaser.Signal} onInputOut - This signal is dispatched if the parent is inputEnabled and receives an out event from a Pointer. + * This signal is dispatched if the Game Object has `inputEnabled` set to `true`, + * and receives an out event from a Phaser.Pointer, which was previously over it. + * It is sent two arguments: + * {any} The Game Object that received the event. + * {Phaser.Pointer} The Phaser.Pointer object that caused the event. + * @property {Phaser.Signal} onInputOut */ onInputOut: null, /** - * @property {Phaser.Signal} onInputDown - This signal is dispatched if the parent is inputEnabled and receives a down event from a Pointer. + * This signal is dispatched if the Game Object has `inputEnabled` set to `true`, + * and receives a down event from a Phaser.Pointer. This effectively means the Pointer has been + * pressed down (but not yet released) on the Game Object. + * It is sent two arguments: + * {any} The Game Object that received the event. + * {Phaser.Pointer} The Phaser.Pointer object that caused the event. + * @property {Phaser.Signal} onInputDown */ onInputDown: null, /** - * @property {Phaser.Signal} onInputUp - This signal is dispatched if the parent is inputEnabled and receives an up event from a Pointer. + * This signal is dispatched if the Game Object has `inputEnabled` set to `true`, + * and receives an up event from a Phaser.Pointer. This effectively means the Pointer had been + * pressed down, and was then released on the Game Object. + * It is sent three arguments: + * {any} The Game Object that received the event. + * {Phaser.Pointer} The Phaser.Pointer object that caused the event. + * {boolean} isOver - Is the Pointer still over the Game Object? + * @property {Phaser.Signal} onInputUp */ onInputUp: null, /** - * @property {Phaser.Signal} onDragStart - This signal is dispatched if the parent is inputEnabled and receives a drag start event from a Pointer. + * This signal is dispatched if the Game Object has been `inputEnabled` and `enableDrag` has been set. + * It is sent when a Phaser.Pointer starts to drag the Game Object, taking into consideration the various + * drag limitations that may be set. + * It is sent four arguments: + * {any} The Game Object that received the event. + * {Phaser.Pointer} The Phaser.Pointer object that caused the event. + * {number} The x coordinate that the drag started from. + * {number} The y coordinate that the drag started from. + * @property {Phaser.Signal} onDragStart */ onDragStart: null, /** - * @property {Phaser.Signal} onDragUpdate - This signal is dispatched if the parent is inputEnabled and receives a drag update event from a Pointer. + * This signal is dispatched if the Game Object has been `inputEnabled` and `enableDrag` has been set. + * It is sent when a Phaser.Pointer is actively dragging the Game Object. + * Be warned: This is a high volume Signal. Be careful what you bind to it. + * It is sent six arguments: + * {any} The Game Object that received the event. + * {Phaser.Pointer} The Phaser.Pointer object that caused the event. + * {number} The new x coordinate of the Game Object. + * {number} The new y coordinate of the Game Object. + * {Phaser.Point} A Point object that contains the point the Game Object was snapped to, if `snapOnDrag` has been enabled. + * {boolean} The `fromStart` boolean, indicates if this is the first update immediately after the drag has started. + * @property {Phaser.Signal} onDragUpdate */ onDragUpdate: null, /** - * @property {Phaser.Signal} onDragStop - This signal is dispatched if the parent is inputEnabled and receives a drag stop event from a Pointer. + * This signal is dispatched if the Game Object has been `inputEnabled` and `enableDrag` has been set. + * It is sent when a Phaser.Pointer stops dragging the Game Object. + * It is sent two arguments: + * {any} The Game Object that received the event. + * {Phaser.Pointer} The Phaser.Pointer object that caused the event. + * @property {Phaser.Signal} onDragStop */ onDragStop: null, /** - * @property {Phaser.Signal} onAnimationStart - This signal is dispatched when the parent has an animation that is played. + * This signal is dispatched if the Game Object has the AnimationManager component, + * and an Animation has been played. + * You can also listen to `Animation.onStart` rather than via the Game Objects events. + * It is sent two arguments: + * {any} The Game Object that received the event. + * {Phaser.Animation} The Phaser.Animation that was started. + * @property {Phaser.Signal} onAnimationStart */ onAnimationStart: null, /** - * @property {Phaser.Signal} onAnimationComplete - This signal is dispatched when the parent has an animation that finishes playing. + * This signal is dispatched if the Game Object has the AnimationManager component, + * and an Animation has been stopped (via `animation.stop()` and the `dispatchComplete` argument has been set. + * You can also listen to `Animation.onComplete` rather than via the Game Objects events. + * It is sent two arguments: + * {any} The Game Object that received the event. + * {Phaser.Animation} The Phaser.Animation that was stopped. + * @property {Phaser.Signal} onAnimationComplete */ onAnimationComplete: null, /** - * @property {Phaser.Signal} onAnimationLoop - This signal is dispatched when the parent has an animation that loops playback. + * This signal is dispatched if the Game Object has the AnimationManager component, + * and an Animation has looped playback. + * You can also listen to `Animation.onLoop` rather than via the Game Objects events. + * It is sent two arguments: + * {any} The Game Object that received the event. + * {Phaser.Animation} The Phaser.Animation that looped. + * @property {Phaser.Signal} onAnimationLoop */ onAnimationLoop: null @@ -23878,6 +24338,10 @@ Phaser.Component.InputEnabled.prototype = { * Note that Input related events are dispatched from `this.events`, i.e.: `events.onInputDown`. * * If you set this property to false it will stop the Input Handler from processing any more input events. + * + * If you want to _temporarily_ disable input for a Game Object, then it's better to set + * `input.enabled = false`, as it won't reset any of the Input Handlers internal properties. + * You can then toggle this back on as needed. * * @property {boolean} inputEnabled */ @@ -26031,7 +26495,7 @@ Phaser.Sprite = function (game, x, y, key, frame) { */ this.physicsType = Phaser.SPRITE; - PIXI.Sprite.call(this, PIXI.TextureCache['__default']); + PIXI.Sprite.call(this, Phaser.Cache.DEFAULT); Phaser.Component.Core.init.call(this, game, x, y, key, frame); @@ -26133,7 +26597,7 @@ Phaser.Image = function (game, x, y, key, frame) { */ this.type = Phaser.IMAGE; - PIXI.Sprite.call(this, PIXI.TextureCache['__default']); + PIXI.Sprite.call(this, Phaser.Cache.DEFAULT); Phaser.Component.Core.init.call(this, game, x, y, key, frame); @@ -26838,11 +27302,13 @@ Phaser.SpriteBatch.prototype.constructor = Phaser.SpriteBatch; * @param {string} key - Internal Phaser reference key for the BitmapData. * @param {number} [width=256] - The width of the BitmapData in pixels. If undefined or zero it's set to a default value. * @param {number} [height=256] - The height of the BitmapData in pixels. If undefined or zero it's set to a default value. +* @param {boolean} [skipPool=false] - When this BitmapData generates its internal canvas to use for rendering, it will get the canvas from the CanvasPool if false, or create its own if true. */ -Phaser.BitmapData = function (game, key, width, height) { +Phaser.BitmapData = function (game, key, width, height, skipPool) { if (width === undefined || width === 0) { width = 256; } if (height === undefined || height === 0) { height = 256; } + if (skipPool === undefined) { skipPool = false; } /** * @property {Phaser.Game} game - A reference to the currently running game. @@ -26868,7 +27334,7 @@ Phaser.BitmapData = function (game, key, width, height) { * @property {HTMLCanvasElement} canvas - The canvas to which this BitmapData draws. * @default */ - this.canvas = PIXI.CanvasPool.create(this, width, height); + this.canvas = Phaser.Canvas.create(this, width, height, null, skipPool); /** * @property {CanvasRenderingContext2D} context - The 2d context of the canvas. @@ -28370,7 +28836,13 @@ Phaser.BitmapData.prototype = { /** * Draws the given Phaser.Sprite, Phaser.Image or Phaser.Text to this BitmapData at the coordinates specified. * You can use the optional width and height values to 'stretch' the sprite as it is drawn. This uses drawImage stretching, not scaling. - * When drawing it will take into account the Sprites rotation, scale and alpha values. + * + * The children will be drawn at their `x` and `y` world space coordinates. If this is outside the bounds of the BitmapData they won't be visible. + * When drawing it will take into account the rotation, scale, scaleMode, alpha and tint values. + * + * Note: You should ensure that at least 1 full update has taken place before calling this, + * otherwise the objects are likely to render incorrectly, if at all. + * You can trigger an update yourself by calling `stage.updateTransform()` before calling `draw`. * * @method Phaser.BitmapData#draw * @param {Phaser.Sprite|Phaser.Image|Phaser.Text|Phaser.RenderTexture} source - The Sprite, Image or Text object to draw onto this BitmapData. @@ -28401,7 +28873,7 @@ Phaser.BitmapData.prototype = { * * Note: You should ensure that at least 1 full update has taken place before calling this, * otherwise the objects are likely to render incorrectly, if at all. - * You can trigger an update yourself by calling `stage.updateTransform()` before calling `drawGroup`. + * You can trigger an update yourself by calling `stage.updateTransform()` before calling `drawGroup`. * * @method Phaser.BitmapData#drawGroup * @param {Phaser.Group} group - The Group to draw onto this BitmapData. Can also be Phaser.World. @@ -29455,6 +29927,7 @@ PIXI.Graphics.prototype.lineTo = function(x, y) this.currentPath.shape.points.push(x, y); this.dirty = true; + this.updateLocalBounds(); return this; }; @@ -29509,6 +29982,7 @@ PIXI.Graphics.prototype.quadraticCurveTo = function(cpX, cpY, toX, toY) } this.dirty = true; + this.updateLocalBounds(); return this; }; @@ -29567,6 +30041,7 @@ PIXI.Graphics.prototype.bezierCurveTo = function(cpX, cpY, cpX2, cpY2, toX, toY) } this.dirty = true; + this.updateLocalBounds(); return this; }; @@ -29636,6 +30111,7 @@ PIXI.Graphics.prototype.arcTo = function(x1, y1, x2, y2, radius) } this.dirty = true; + this.updateLocalBounds(); return this; }; @@ -29721,6 +30197,7 @@ PIXI.Graphics.prototype.arc = function(cx, cy, radius, startAngle, endAngle, ant } this.dirty = true; + this.updateLocalBounds(); return this; }; @@ -29882,6 +30359,8 @@ PIXI.Graphics.prototype.clear = function() this.clearDirty = true; this.graphicsData = []; + this.updateLocalBounds(); + return this; }; @@ -29916,8 +30395,6 @@ PIXI.Graphics.prototype.generateTexture = function(resolution, scaleMode, paddin canvasBuffer.context.translate(-bounds.x, -bounds.y); - // Call here - PIXI.CanvasGraphics.renderGraphics(this, canvasBuffer.context); return texture; @@ -30429,8 +30906,11 @@ PIXI.Graphics.prototype.drawShape = function(shape) } this.dirty = true; + + this.updateLocalBounds(); return data; + }; /** @@ -32616,7 +33096,29 @@ PIXI.CanvasGraphics.updateGraphicsTint = function(graphics) */ /** -* Creates a new `Graphics` object. +* A Graphics object is a way to draw primitives to your game. Primitives include forms of geometry, such as Rectangles, +* Circles and Polygons. They also include lines, arcs and curves. When you initially create a Graphics object it will +* be empty. To 'draw' to it you first specify a lineStyle or fillStyle (or both), and then draw a shape. For example: +* +* ``` +* graphics.beginFill(0xff0000); +* graphics.drawCircle(50, 50, 100); +* graphics.endFill(); +* ``` +* +* This will draw a circle shape to the Graphics object, with a diameter of 100, located at x: 50, y: 50. +* +* When a Graphics object is rendered it will render differently based on if the game is running under Canvas or +* WebGL. Under Canvas it will use the HTML Canvas context drawing operations to draw the path. Under WebGL the +* graphics data is decomposed into polygons. Both of these are expensive processes, especially with complex shapes. +* +* If your Graphics object doesn't change much (or at all) once you've drawn your shape to it, then you will help +* performance by calling `Graphics.generateTexture`. This will 'bake' the Graphics object into a Texture, and return it. +* You can then use this Texture for Sprites or other display objects. If your Graphics object updates frequently then +* you should avoid doing this, as it will constantly generate new textures, which will consume memory. +* +* As you can tell, Graphics objects are a bit of a trade-off. While they are extremely useful, you need to be careful +* in their complexity and quantity of them in your game. * * @class Phaser.Graphics * @constructor @@ -34231,18 +34733,34 @@ Phaser.Text.prototype.componentsToFont = function (components) { }; /** - * The text to be displayed by this Text object. - * Use a \n to insert a carriage return and split the text. - * The text will be rendered with any style currently set. - * - * @method Phaser.Text#setText - * @param {string} [text] - The text to be displayed. Set to an empty string to clear text that is already present. - * @return {Phaser.Text} This Text instance. - */ -Phaser.Text.prototype.setText = function (text) { +* The text to be displayed by this Text object. +* Use a \n to insert a carriage return and split the text. +* The text will be rendered with any style currently set. +* +* Use the optional `immediate` argument if you need the Text display to update immediately. +* +* If not it will re-create the texture of this Text object during the next time the render +* loop is called. +* +* @method Phaser.Text#setText +* @param {string} [text] - The text to be displayed. Set to an empty string to clear text that is already present. +* @param {boolean} [immediate=false] - Update the texture used by this Text object immediately (true) or automatically during the next render loop (false). +* @return {Phaser.Text} This Text instance. +*/ +Phaser.Text.prototype.setText = function (text, immediate) { + + if (immediate === undefined) { immediate = false; } this.text = text.toString() || ''; - this.dirty = true; + + if (immediate) + { + this.updateText(); + } + else + { + this.dirty = true; + } return this; @@ -35253,7 +35771,7 @@ Object.defineProperty(Phaser.Text.prototype, 'height', { Phaser.Text.fontPropertiesCache = {}; -Phaser.Text.fontPropertiesCanvas = PIXI.CanvasPool.create(Phaser.Text.fontPropertiesCanvas); +Phaser.Text.fontPropertiesCanvas = document.createElement('canvas'); Phaser.Text.fontPropertiesContext = Phaser.Text.fontPropertiesCanvas.getContext('2d'); /** @@ -36631,7 +37149,7 @@ Phaser.Rope = function (game, x, y, key, frame, points) { */ this.type = Phaser.ROPE; - PIXI.Rope.call(this, PIXI.TextureCache['__default'], this.points); + PIXI.Rope.call(this, Phaser.Cache.DEFAULT, this.points); Phaser.Component.Core.init.call(this, game, x, y, key, frame); @@ -38406,14 +38924,7 @@ Phaser.Canvas = { width = width || 256; height = height || 256; - if (skipPool === undefined) - { - var canvas = PIXI.CanvasPool.create(parent, width, height); - } - else - { - var canvas = document.createElement('canvas'); - } + var canvas = (skipPool) ? document.createElement('canvas') : PIXI.CanvasPool.create(parent, width, height); if (typeof id === 'string' && id !== '') { @@ -39006,7 +39517,9 @@ Phaser.Math = { * @return {number} n mod 1 */ shear: function (n) { + return n % 1; + }, /** @@ -39017,8 +39530,8 @@ Phaser.Math = { * @method Phaser.Math#snapTo * @param {number} input - The value to snap. * @param {number} gap - The interval gap of the grid. - * @param {number} [start] - Optional starting offset for gap. - * @return {number} + * @param {number} [start=0] - Optional starting offset for gap. + * @return {number} The snapped value. */ snapTo: function (input, gap, start) { @@ -39044,8 +39557,8 @@ Phaser.Math = { * @method Phaser.Math#snapToFloor * @param {number} input - The value to snap. * @param {number} gap - The interval gap of the grid. - * @param {number} [start] - Optional starting offset for gap. - * @return {number} + * @param {number} [start=0] - Optional starting offset for gap. + * @return {number} The snapped value. */ snapToFloor: function (input, gap, start) { @@ -39071,8 +39584,8 @@ Phaser.Math = { * @method Phaser.Math#snapToCeil * @param {number} input - The value to snap. * @param {number} gap - The interval gap of the grid. - * @param {number} [start] - Optional starting offset for gap. - * @return {number} + * @param {number} [start=0] - Optional starting offset for gap. + * @return {number} The snapped value. */ snapToCeil: function (input, gap, start) { @@ -39120,9 +39633,9 @@ Phaser.Math = { * * @method Phaser.Math#roundTo * @param {number} value - The value to round. - * @param {number} place - The place to round to. - * @param {number} base - The base to round in... default is 10 for decimal. - * @return {number} + * @param {number} [place=0] - The place to round to. + * @param {number} [base=10] - The base to round in. Default is 10 for decimal. + * @return {number} The rounded value. */ roundTo: function (value, place, base) { @@ -39136,11 +39649,14 @@ Phaser.Math = { }, /** + * Floors to some place comparative to a `base`, default is 10 for decimal place. + * The `place` is represented by the power applied to `base` to get that place. + * * @method Phaser.Math#floorTo * @param {number} value - The value to round. - * @param {number} place - The place to round to. - * @param {number} base - The base to round in... default is 10 for decimal. - * @return {number} + * @param {number} [place=0] - The place to round to. + * @param {number} [base=10] - The base to round in. Default is 10 for decimal. + * @return {number} The rounded value. */ floorTo: function (value, place, base) { @@ -39154,11 +39670,14 @@ Phaser.Math = { }, /** + * Ceils to some place comparative to a `base`, default is 10 for decimal place. + * The `place` is represented by the power applied to `base` to get that place. + * * @method Phaser.Math#ceilTo * @param {number} value - The value to round. - * @param {number} place - The place to round to. - * @param {number} base - The base to round in... default is 10 for decimal. - * @return {number} + * @param {number} [place=0] - The place to round to. + * @param {number} [base=10] - The base to round in. Default is 10 for decimal. + * @return {number} The rounded value. */ ceilTo: function (value, place, base) { @@ -39173,42 +39692,51 @@ Phaser.Math = { /** * Find the angle of a segment from (x1, y1) -> (x2, y2). + * * @method Phaser.Math#angleBetween - * @param {number} x1 - * @param {number} y1 - * @param {number} x2 - * @param {number} y2 + * @param {number} x1 - The x coordinate of the first value. + * @param {number} y1 - The y coordinate of the first value. + * @param {number} x2 - The x coordinate of the second value. + * @param {number} y2 - The y coordinate of the second value. * @return {number} The angle, in radians. */ angleBetween: function (x1, y1, x2, y2) { + return Math.atan2(y2 - y1, x2 - x1); + }, /** * Find the angle of a segment from (x1, y1) -> (x2, y2). - * Note that the difference between this method and Math.angleBetween is that this assumes the y coordinate travels + * + * The difference between this method and Math.angleBetween is that this assumes the y coordinate travels * down the screen. * * @method Phaser.Math#angleBetweenY - * @param {number} x1 - * @param {number} y1 - * @param {number} x2 - * @param {number} y2 + * @param {number} x1 - The x coordinate of the first value. + * @param {number} y1 - The y coordinate of the first value. + * @param {number} x2 - The x coordinate of the second value. + * @param {number} y2 - The y coordinate of the second value. * @return {number} The angle, in radians. */ angleBetweenY: function (x1, y1, x2, y2) { + return Math.atan2(x2 - x1, y2 - y1); + }, /** * Find the angle of a segment from (point1.x, point1.y) -> (point2.x, point2.y). + * * @method Phaser.Math#angleBetweenPoints - * @param {Phaser.Point} point1 - * @param {Phaser.Point} point2 - * @return {number} The angle, in radians. + * @param {Phaser.Point} point1 - The first point. + * @param {Phaser.Point} point2 - The second point. + * @return {number} The angle between the two points, in radians. */ angleBetweenPoints: function (point1, point2) { + return Math.atan2(point2.y - point1.y, point2.x - point1.x); + }, /** @@ -39219,24 +39747,28 @@ Phaser.Math = { * @return {number} The angle, in radians. */ angleBetweenPointsY: function (point1, point2) { + return Math.atan2(point2.x - point1.x, point2.y - point1.y); + }, /** * Reverses an angle. * @method Phaser.Math#reverseAngle * @param {number} angleRad - The angle to reverse, in radians. - * @return {number} Returns the reverse angle, in radians. + * @return {number} The reverse angle, in radians. */ reverseAngle: function (angleRad) { + return this.normalizeAngle(angleRad + Math.PI, true); + }, /** * Normalizes an angle to the [0,2pi) range. * @method Phaser.Math#normalizeAngle * @param {number} angleRad - The angle to normalize, in radians. - * @return {number} Returns the angle, fit within the [0,2pi] range, in radians. + * @return {number} The angle, fit within the [0,2pi] range, in radians. */ normalizeAngle: function (angleRad) { @@ -39252,10 +39784,12 @@ Phaser.Math = { * @param {number} value - The value to add the amount to. * @param {number} amount - The amount to add to the value. * @param {number} max - The maximum the value is allowed to be. - * @return {number} + * @return {number} The new value. */ maxAdd: function (value, amount, max) { + return Math.min(value + amount, max); + }, /** @@ -39268,7 +39802,9 @@ Phaser.Math = { * @return {number} The new value. */ minSub: function (value, amount, min) { + return Math.max(value - amount, min); + }, /** @@ -39333,8 +39869,10 @@ Phaser.Math = { * @return {boolean} True if the given number is odd. False if the given number is even. */ isOdd: function (n) { + // Does not work with extremely large values return !!(n & 1); + }, /** @@ -39345,8 +39883,10 @@ Phaser.Math = { * @return {boolean} True if the given number is even. False if the given number is odd. */ isEven: function (n) { + // Does not work with extremely large values return !(n & 1); + }, /** @@ -39583,11 +40123,13 @@ Phaser.Math = { * @method Phaser.Math#linear * @param {number} p0 * @param {number} p1 - * @param {number} t + * @param {number} t - A value between 0 and 1. * @return {number} */ linear: function (p0, p1, t) { + return (p1 - p0) * t + p0; + }, /** @@ -39598,7 +40140,9 @@ Phaser.Math = { * @return {number} */ bernstein: function (n, i) { + return this.factorial(n) / this.factorial(i) / this.factorial(n - i); + }, /** @@ -39606,7 +40150,7 @@ Phaser.Math = { * @param {number} value - the number you want to evaluate * @return {number} */ - factorial : function( value ){ + factorial: function (value) { if (value === 0) { @@ -39645,15 +40189,17 @@ Phaser.Math = { }, /** - * The (absolute) difference between two values. + * The absolute difference between two values. * * @method Phaser.Math#difference - * @param {number} a - * @param {number} b - * @return {number} + * @param {number} a - The first value to check. + * @param {number} b - The second value to check. + * @return {number} The absolute difference between the two values. */ difference: function (a, b) { + return Math.abs(a - b); + }, /** @@ -39804,7 +40350,9 @@ Phaser.Math = { * @return {number} */ clampBottom: function (x, a) { + return x < a ? a : x; + }, /** @@ -39818,22 +40366,26 @@ Phaser.Math = { * @see {@link Phaser.Math.fuzzyEqual} */ within: function (a, b, tolerance) { + return (Math.abs(a - b) <= tolerance); + }, /** * Linear mapping from range to range * * @method Phaser.Math#mapLinear - * @param {number} x the value to map - * @param {number} a1 first endpoint of the range - * @param {number} a2 final endpoint of the range - * @param {number} b1 first endpoint of the range - * @param {number} b2 final endpoint of the range + * @param {number} x - The value to map + * @param {number} a1 - First endpoint of the range + * @param {number} a2 - Final endpoint of the range + * @param {number} b1 - First endpoint of the range + * @param {number} b2 - Final endpoint of the range * @return {number} */ mapLinear: function (x, a1, a2, b1, b2) { + return b1 + ( x - a1 ) * ( b2 - b1 ) / ( a2 - a1 ); + }, /** @@ -39865,8 +40417,11 @@ Phaser.Math = { * @return {float} A value between 0 and 1. */ smootherstep: function (x, min, max) { + x = Math.max(0, Math.min(1, (x - min) / (max - min))); + return x * x * x * (x * (x * 6 - 15) + 10); + }, /** @@ -39879,7 +40434,9 @@ Phaser.Math = { * @return {integer} An integer in {-1, 0, 1} */ sign: function (x) { + return ( x < 0 ) ? -1 : ( ( x > 0 ) ? 1 : 0 ); + }, /** @@ -45116,7 +45673,7 @@ Phaser.AnimationManager.prototype = { refreshFrame: function () { // TODO - this.sprite.setTexture(PIXI.TextureCache[this.currentFrame.uuid]); + // this.sprite.setTexture(PIXI.TextureCache[this.currentFrame.uuid]); }, @@ -45591,7 +46148,7 @@ Phaser.Animation.prototype = { { for (var i = 0; i < this._frames.length; i++) { - if (this._frames[i] === frameIndex) + if (this._frames[i] === frameId) { frameIndex = i; } @@ -47213,6 +47770,20 @@ Phaser.Cache.SHADER = 14; */ Phaser.Cache.RENDER_TEXTURE = 15; +/** +* The default image used for a texture when no other is specified. +* @constant +* @type {PIXI.Texture} +*/ +Phaser.Cache.DEFAULT = null; + +/** +* The default image used for a texture when the source image is missing. +* @constant +* @type {PIXI.Texture} +*/ +Phaser.Cache.MISSING = null; + Phaser.Cache.prototype = { ////////////////// @@ -47267,6 +47838,15 @@ Phaser.Cache.prototype = { this._resolveURL(url, img); + if (key === '__default') + { + Phaser.Cache.DEFAULT = new PIXI.Texture(img.base); + } + else if (key === '__missing') + { + Phaser.Cache.MISSING = new PIXI.Texture(img.base); + } + return img; }, @@ -47291,7 +47871,8 @@ Phaser.Cache.prototype = { // Because we don't want to invalidate the sprite batch for an invisible texture obj.base.skipRender = true; - PIXI.TextureCache['__default'] = new PIXI.Texture(obj.base); + // Make it easily available within the rest of Phaser / Pixi + Phaser.Cache.DEFAULT = new PIXI.Texture(obj.base); }, @@ -47312,7 +47893,8 @@ Phaser.Cache.prototype = { var obj = this.addImage('__missing', null, img); - PIXI.TextureCache['__missing'] = new PIXI.Texture(obj.base); + // Make it easily available within the rest of Phaser / Pixi + Phaser.Cache.MISSING = new PIXI.Texture(obj.base); }, @@ -48562,71 +49144,6 @@ Phaser.Cache.prototype = { }, - /** - * Gets a PIXI.Texture by key from the PIXI.TextureCache. - * - * If the texture isn't found in the cache, then it searches the Phaser Image Cache and - * creates a new PIXI.Texture object which is then returned. - * - * @method Phaser.Cache#getPixiTexture - * @deprecated - * @param {string} key - Asset key of the Texture to retrieve from the Cache. - * @return {PIXI.Texture} The Texture object. - */ - getPixiTexture: function (key) { - - if (PIXI.TextureCache[key]) - { - return PIXI.TextureCache[key]; - } - else - { - var base = this.getPixiBaseTexture(key); - - if (base) - { - return new PIXI.Texture(base); - } - else - { - return null; - } - } - - }, - - /** - * Gets a PIXI.BaseTexture by key from the PIXI.BaseTextureCache. - * - * If the texture isn't found in the cache, then it searches the Phaser Image Cache. - * - * @method Phaser.Cache#getPixiBaseTexture - * @deprecated - * @param {string} key - Asset key of the BaseTexture to retrieve from the Cache. - * @return {PIXI.BaseTexture} The BaseTexture object or null if not found. - */ - getPixiBaseTexture: function (key) { - - if (PIXI.BaseTextureCache[key]) - { - return PIXI.BaseTextureCache[key]; - } - else - { - var img = this.getItem(key, Phaser.Cache.IMAGE, 'getPixiBaseTexture'); - - if (img !== null) - { - return img.base; - } - else - { - return null; - } - } - - }, - /** * Get a cached object by the URL. * This only returns a value if you set Cache.autoResolveURL to `true` *before* starting the preload of any assets. @@ -48704,20 +49221,20 @@ Phaser.Cache.prototype = { * * You can optionally elect to destroy it as well. This calls BaseTexture.destroy on it. * - * Note that this only removes it from the Phaser and PIXI Caches. If you still have references to the data elsewhere + * Note that this only removes it from the Phaser Cache. If you still have references to the data elsewhere * then it will persist in memory. * * @method Phaser.Cache#removeImage * @param {string} key - Key of the asset you want to remove. - * @param {boolean} [removeFromPixi=true] - Should this image also be destroyed? Removing it from the PIXI.BaseTextureCache? + * @param {boolean} [destroyBaseTexture=true] - Should the BaseTexture behind this image also be destroyed? */ - removeImage: function (key, removeFromPixi) { + removeImage: function (key, destroyBaseTexture) { - if (removeFromPixi === undefined) { removeFromPixi = true; } + if (destroyBaseTexture === undefined) { destroyBaseTexture = true; } var img = this.getImage(key, true); - if (removeFromPixi && img.base) + if (destroyBaseTexture && img.base) { img.base.destroy(); } @@ -49131,7 +49648,19 @@ Phaser.Loader = function (game) { this.path = ''; /** - * This event is dispatched when the loading process starts: before the first file has been requested, + * Used to map the application mime-types to to the Accept header in XHR requests. + * If you don't require these mappings, or they cause problems on your server, then + * remove them from the headers object and the XHR request will not try to use them. + * @property {object} headers + * @default + */ + this.headers = { + json: "application/json", + xml: "application/xml" + }; + + /** + * This event is dispatched when the loading process starts: before the first file has been requested, * but after all the initial packs have been loaded. * * @property {Phaser.Signal} onLoadStart @@ -51346,6 +51875,11 @@ Phaser.Loader.prototype = { xhr.open("GET", url, true); xhr.responseType = type; + if (this.headers[file.type]) + { + xhr.setRequestHeader("Accept", this.headers[file.type]); + } + onerror = onerror || this.fileError; var _this = this; @@ -52406,11 +52940,6 @@ Phaser.Sound = function (game, key, volume, loop, connect) { */ this.loop = loop; - /** - * @property {number} volume - The sound or sound marker volume. A value between 0 (silence) and 1 (full volume). - */ - this.volume = volume; - /** * @property {object} markers - The sound markers. */ @@ -52915,7 +53444,7 @@ Phaser.Sound.prototype = { { this._sound.disconnect(this.externalNode); } - else + else if (this.gainNode) { this._sound.disconnect(this.gainNode); } @@ -53253,7 +53782,7 @@ Phaser.Sound.prototype = { { this._sound.disconnect(this.externalNode); } - else + else if (this.gainNode) { this._sound.disconnect(this.gainNode); } @@ -56798,10 +57327,15 @@ Object.defineProperty(Phaser.ScaleManager.prototype, "isGameLandscape", { /** * A collection of methods for displaying debug information about game objects. +* +* If your game is running in Canvas mode, then you should invoke all of the Debug methods from +* your games `render` function. This is because they are drawn directly onto the game canvas +* itself, so if you call any debug methods outside of `render` they are likely to be overwritten +* by the game itself. +* * If your game is running in WebGL then Debug will create a Sprite that is placed at the top of the Stage display list and bind a canvas texture * to it, which must be uploaded every frame. Be advised: this is very expensive, especially in browsers like Firefox. So please only enable Debug * in WebGL mode if you really need it (or your desktop can cope with it well) and disable it for production! -* If your game is using a Canvas renderer then the debug information is literally drawn on the top of the active game canvas and no Sprite is used. * * @class Phaser.Utils.Debug * @constructor @@ -56896,7 +57430,7 @@ Phaser.Utils.Debug.prototype = { } else { - this.bmd = this.game.make.bitmapData(this.game.width, this.game.height); + this.bmd = new Phaser.BitmapData(this.game, '__DEBUG', this.game.width, this.game.height, true); this.sprite = this.game.make.image(0, 0, this.bmd); this.game.stage.addChild(this.sprite); @@ -58585,13 +59119,63 @@ Phaser.ArrayUtils = { }, + /** + * Moves the element from the end of the array to the start, shifting all items in the process. + * The "rotation" happens to the right. + * + * Before: `[ A, B, C, D, E, F ]` + * After: `[ F, A, B, C, D, E ]` + * + * See also Phaser.ArrayUtils.rotateLeft. + * + * @method Phaser.ArrayUtils.rotateRight + * @param {any[]} array - The array to rotate. The array is modified. + * @return {any} The shifted value. + */ + rotateRight: function (array) { + + var s = array.pop(); + array.unshift(s); + + return s; + + }, + /** * Moves the element from the start of the array to the end, shifting all items in the process. * The "rotation" happens to the left. * + * Before: `[ A, B, C, D, E, F ]` + * After: `[ B, C, D, E, F, A ]` + * + * See also Phaser.ArrayUtils.rotateRight + * + * @method Phaser.ArrayUtils.rotateLeft + * @param {any[]} array - The array to rotate. The array is modified. + * @return {any} The rotated value. + */ + rotateLeft: function (array) { + + var s = array.shift(); + array.push(s); + + return s; + + }, + + /** + * Moves the element from the start of the array to the end, shifting all items in the process. + * The "rotation" happens to the left. + * + * Before: `[ A, B, C, D, E, F ]` + * After: `[ B, C, D, E, F, A ]` + * + * See also Phaser.ArrayUtils.rotateRight + * * @method Phaser.ArrayUtils.rotate - * @param {any[]} array - The array to shift/rotate. The array is modified. - * @return {any} The shifted value. + * @deprecated Please use Phaser.ArrayUtils.rotate instead. + * @param {any[]} array - The array to rotate. The array is modified. + * @return {any} The rotated value. */ rotate: function (array) { @@ -59665,6 +60249,23 @@ Phaser.Color = { }, + /** + * Converts RGBA components to a 32 bit integer in AABBGGRR format. + * + * @method Phaser.Color.toABGR + * @static + * @param {number} r - The red color component, in the range 0 - 255. + * @param {number} g - The green color component, in the range 0 - 255. + * @param {number} b - The blue color component, in the range 0 - 255. + * @param {number} a - The alpha color component, in the range 0 - 255. + * @return {number} A RGBA-packed 32 bit integer + */ + toABGR: function (r, g, b, a) { + + return ((a << 24) | (b << 16) | (g << 8) | r) >>> 0; + + }, + /** * Converts an RGB color value to HSL (hue, saturation and lightness). * Conversion forumla from http://en.wikipedia.org/wiki/HSL_color_space. @@ -62000,67 +62601,70 @@ Phaser.Physics.Arcade.prototype = { return; } - var body; - if (this.skipQuadTree || sprite.body.skipQuadTree) { + var bounds; + for (var i = 0; i < group.hash.length; i++) { + var object1 = group.hash[i]; + // Skip duff entries - we can't check a non-existent sprite or one with no body - if (!group.hash[i] || !group.hash[i].exists || !group.hash[i].body) + if (!object1 || !object1.exists || !object1.body) { continue; } - body = group.hash[i].body; + // Inject the Body bounds data into the bounds object + bounds = object1.body.getBounds(bounds); // Skip items either side of the sprite if (this.sortDirection === Phaser.Physics.Arcade.LEFT_RIGHT) { - if (sprite.body.right < body.x) + if (sprite.body.right < bounds.x) { break; } - else if (body.right < sprite.body.x) + else if (bounds.right < sprite.body.x) { continue; } } else if (this.sortDirection === Phaser.Physics.Arcade.RIGHT_LEFT) { - if (sprite.body.x > body.right) + if (sprite.body.x > bounds.right) { break; } - else if (body.x > sprite.body.right) + else if (bounds.x > sprite.body.right) { continue; } } else if (this.sortDirection === Phaser.Physics.Arcade.TOP_BOTTOM) { - if (sprite.body.bottom < body.y) + if (sprite.body.bottom < bounds.y) { break; } - else if (body.bottom < sprite.body.y) + else if (bounds.bottom < sprite.body.y) { continue; } } else if (this.sortDirection === Phaser.Physics.Arcade.BOTTOM_TOP) { - if (sprite.body.y > body.bottom) + if (sprite.body.y > bounds.bottom) { break; } - else if (body.y > sprite.body.bottom) + else if (bounds.y > sprite.body.bottom) { continue; } } - this.collideSpriteVsSprite(sprite, group.hash[i], collideCallback, processCallback, callbackContext, overlapOnly); + this.collideSpriteVsSprite(sprite, object1, collideCallback, processCallback, callbackContext, overlapOnly); } } else @@ -62112,65 +62716,73 @@ Phaser.Physics.Arcade.prototype = { for (var i = 0; i < group.hash.length; i++) { + var bounds1; + var object1 = group.hash[i]; + // Skip duff entries - we can't check a non-existent sprite or one with no body - if (!group.hash[i] || !group.hash[i].exists || !group.hash[i].body) + if (!object1 || !object1.exists || !object1.body) { continue; } - var object1 = group.hash[i]; + // Inject the Body bounds data into the bounds1 object + bounds1 = object1.body.getBounds(bounds1); for (var j = i + 1; j < group.hash.length; j++) { + var bounds2; + var object2 = group.hash[j]; + // Skip duff entries - we can't check a non-existent sprite or one with no body - if (!group.hash[j] || !group.hash[j].exists || !group.hash[j].body) + if (!object2 || !object2.exists || !object2.body) { continue; } - var object2 = group.hash[j]; + // Inject the Body bounds data into the bounds2 object + bounds2 = object2.body.getBounds(bounds2); // Skip items either side of the sprite if (this.sortDirection === Phaser.Physics.Arcade.LEFT_RIGHT) { - if (object1.body.right < object2.body.x) + if (bounds1.right < bounds2.x) { break; } - else if (object2.body.right < object1.body.x) + else if (bounds2.right < bounds1.x) { continue; } } else if (this.sortDirection === Phaser.Physics.Arcade.RIGHT_LEFT) { - if (object1.body.x > object2.body.right) + if (bounds1.x > bounds2.right) { continue; } - else if (object2.body.x > object1.body.right) + else if (bounds2.x > bounds1.right) { break; } } else if (this.sortDirection === Phaser.Physics.Arcade.TOP_BOTTOM) { - if (object1.body.bottom < object2.body.y) + if (bounds1.bottom < bounds2.y) { continue; } - else if (object2.body.bottom < object1.body.y) + else if (bounds2.bottom < bounds1.y) { break; } } else if (this.sortDirection === Phaser.Physics.Arcade.BOTTOM_TOP) { - if (object1.body.y > object2.body.bottom) + if (bounds1.y > bounds2.bottom) { continue; } - else if (object2.body.y > object1.body.bottom) + else if (bounds2.y > object1.body.bottom) { break; } @@ -62243,6 +62855,42 @@ Phaser.Physics.Arcade.prototype = { return false; } + // Circle vs. Circle quick bail out + if (body1.isCircle && body2.isCircle) + { + return this.separateCircle(body1, body2, overlapOnly); + } + + // We define the behavior of bodies in a collision circle and rectangle + // If a collision occurs in the corner points of the rectangle, the body behave like circles + + // Either body1 or body2 is a circle + if (body1.isCircle !== body2.isCircle) + { + var bodyRect = (body1.isCircle) ? body2 : body1; + var bodyCircle = (body1.isCircle) ? body1 : body2; + + var rect = { + x: bodyRect.x, + y: bodyRect.y, + right: bodyRect.right, + bottom: bodyRect.bottom + }; + + var circle = { + x: bodyCircle.x + bodyCircle.radius, + y: bodyCircle.y + bodyCircle.radius + }; + + if (circle.y < rect.y || circle.y > rect.bottom) + { + if (circle.x < rect.x || circle.x > rect.right) + { + return this.separateCircle(body1, body2, overlapOnly); + } + } + } + var resultX = false; var resultY = false; @@ -62268,7 +62916,37 @@ Phaser.Physics.Arcade.prototype = { } } - return (resultX || resultY); + var result = (resultX || resultY); + + if (result) + { + if (overlapOnly) + { + if (body1.onOverlap) + { + body1.onOverlap.dispatch(body1.sprite, body2.sprite); + } + + if (body2.onOverlap) + { + body2.onOverlap.dispatch(body2.sprite, body1.sprite); + } + } + else + { + if (body1.onCollide) + { + body1.onCollide.dispatch(body1.sprite, body2.sprite); + } + + if (body2.onCollide) + { + body2.onCollide.dispatch(body2.sprite, body1.sprite); + } + } + } + + return result; }, @@ -62286,26 +62964,253 @@ Phaser.Physics.Arcade.prototype = { { return false; } - - // Rect vs. Rect - if (body1.right <= body2.position.x) + + if (body1.isCircle) { - return false; + if (body2.isCircle) + { + // Circle vs. Circle + return Phaser.Math.distance(body1.center.x, body1.center.y, body2.center.x, body2.center.y) <= (body1.radius + body2.radius); + } + else + { + // Circle vs. Rect + return this.circleBodyIntersects(body1, body2); + } + } + else + { + if (body2.isCircle) + { + // Rect vs. Circle + return this.circleBodyIntersects(body2, body1); + } + else + { + // Rect vs. Rect + if (body1.right <= body2.position.x) + { + return false; + } + + if (body1.bottom <= body2.position.y) + { + return false; + } + + if (body1.position.x >= body2.right) + { + return false; + } + + if (body1.position.y >= body2.bottom) + { + return false; + } + + return true; + } } - if (body1.bottom <= body2.position.y) + }, + + /** + * Checks to see if a circular Body intersects with a Rectangular Body. + * + * @method Phaser.Physics.Arcade#circleBodyIntersects + * @param {Phaser.Physics.Arcade.Body} circle - The Body with `isCircle` set. + * @param {Phaser.Physics.Arcade.Body} body - The Body with `isCircle` not set (i.e. uses Rectangle shape) + * @return {boolean} Returns true if the bodies intersect, otherwise false. + */ + circleBodyIntersects: function (circle, body) { + + var x = Phaser.Math.clamp(circle.center.x, body.left, body.right); + var y = Phaser.Math.clamp(circle.center.y, body.top, body.bottom); + + var dx = (circle.center.x - x) * (circle.center.x - x); + var dy = (circle.center.y - y) * (circle.center.y - y); + + return (dx + dy) <= (circle.radius * circle.radius); + + }, + + /** + * The core separation function to separate two circular physics bodies. + * + * @method Phaser.Physics.Arcade#separateCircle + * @private + * @param {Phaser.Physics.Arcade.Body} body1 - The first Body to separate. Must have `Body.isCircle` true and a positive `radius`. + * @param {Phaser.Physics.Arcade.Body} body2 - The second Body to separate. Must have `Body.isCircle` true and a positive `radius`. + * @param {boolean} overlapOnly - If true the bodies will only have their overlap data set, no separation or exchange of velocity will take place. + * @return {boolean} Returns true if the bodies were separated or overlap, otherwise false. + */ + separateCircle: function (body1, body2, overlapOnly) { + + // Set the bounding box overlap values + this.getOverlapX(body1, body2); + this.getOverlapY(body1, body2); + + var angleCollision = this.angleBetweenCenters(body1, body2); + + var overlap = 0; + + if (body1.isCircle !== body2.isCircle) { - return false; + var rect = { + x: (body2.isCircle) ? body1.position.x : body2.position.x, + y: (body2.isCircle) ? body1.position.y : body2.position.y, + right: (body2.isCircle) ? body1.right : body2.right, + bottom: (body2.isCircle) ? body1.bottom : body2.bottom + }; + + var circle = { + x: (body1.isCircle) ? (body1.position.x + body1.radius) : (body2.position.x + body2.radius), + y: (body1.isCircle) ? (body1.position.y + body1.radius) : (body2.position.y + body2.radius), + radius: (body1.isCircle) ? body1.radius : body2.radius + }; + + if (circle.y < rect.y) + { + if (circle.x < rect.x) + { + overlap = Phaser.Math.distance(circle.x, circle.y, rect.x, rect.y) - circle.radius; + } + else if (circle.x > rect.right) + { + overlap = Phaser.Math.distance(circle.x, circle.y, rect.right, rect.y) - circle.radius; + } + } + else if (circle.y > rect.bottom) + { + if (circle.x < rect.x) + { + overlap = Phaser.Math.distance(circle.x, circle.y, rect.x, rect.bottom) - circle.radius; + } + else if (circle.x > rect.right) + { + overlap = Phaser.Math.distance(circle.x, circle.y, rect.right, rect.bottom) - circle.radius; + } + } + + overlap *= -1; + } + else + { + overlap = (body1.radius + body2.radius) - Phaser.Math.distance(body1.center.x, body1.center.y, body2.center.x, body2.center.y); } - if (body1.position.x >= body2.right) + // Can't separate two immovable bodies, or a body with its own custom separation logic + if (overlapOnly || overlap === 0 || (body1.immovable && body2.immovable) || body1.customSeparateX || body2.customSeparateX) { - return false; + if (overlap !== 0) + { + if (body1.onOverlap) + { + body1.onOverlap.dispatch(body1.sprite, body2.sprite); + } + + if (body2.onOverlap) + { + body2.onOverlap.dispatch(body2.sprite, body1.sprite); + } + } + + // return true if there was some overlap, otherwise false + return (overlap !== 0); } - if (body1.position.y >= body2.bottom) + // Transform the velocity vector to the coordinate system oriented along the direction of impact. + // This is done to eliminate the vertical component of the velocity + var v1 = { + x: body1.velocity.x * Math.cos(angleCollision) + body1.velocity.y * Math.sin(angleCollision), + y: body1.velocity.x * Math.sin(angleCollision) - body1.velocity.y * Math.cos(angleCollision) + }; + + var v2 = { + x: body2.velocity.x * Math.cos(angleCollision) + body2.velocity.y * Math.sin(angleCollision), + y: body2.velocity.x * Math.sin(angleCollision) - body2.velocity.y * Math.cos(angleCollision) + }; + + // We expect the new velocity after impact + var tempVel1 = ((body1.mass - body2.mass) * v1.x + 2 * body2.mass * v2.x) / (body1.mass + body2.mass); + var tempVel2 = (2 * body1.mass * v1.x + (body2.mass - body1.mass) * v2.x) / (body1.mass + body2.mass); + + // We convert the vector to the original coordinate system and multiplied by factor of rebound + if (!body1.immovable) { - return false; + body1.velocity.x = (tempVel1 * Math.cos(angleCollision) - v1.y * Math.sin(angleCollision)) * body1.bounce.x; + body1.velocity.y = (v1.y * Math.cos(angleCollision) + tempVel1 * Math.sin(angleCollision)) * body1.bounce.y; + } + + if (!body2.immovable) + { + body2.velocity.x = (tempVel2 * Math.cos(angleCollision) - v2.y * Math.sin(angleCollision)) * body2.bounce.x; + body2.velocity.y = (v2.y * Math.cos(angleCollision) + tempVel2 * Math.sin(angleCollision)) * body2.bounce.y; + } + + // When the collision angle is almost perpendicular to the total initial velocity vector + // (collision on a tangent) vector direction can be determined incorrectly. + // This code fixes the problem + + if (Math.abs(angleCollision) < Math.PI / 2) + { + if ((body1.velocity.x > 0) && !body1.immovable && (body2.velocity.x > body1.velocity.x)) + { + body1.velocity.x *= -1; + } + else if ((body2.velocity.x < 0) && !body2.immovable && (body1.velocity.x < body2.velocity.x)) + { + body2.velocity.x *= -1; + } + else if ((body1.velocity.y > 0) && !body1.immovable && (body2.velocity.y > body1.velocity.y)) + { + body1.velocity.y *= -1; + } + else if ((body2.velocity.y < 0) && !body2.immovable && (body1.velocity.y < body2.velocity.y)) + { + body2.velocity.y *= -1; + } + } + else if (Math.abs(angleCollision) > Math.PI / 2) + { + if ((body1.velocity.x < 0) && !body1.immovable && (body2.velocity.x < body1.velocity.x)) + { + body1.velocity.x *= -1; + } + else if ((body2.velocity.x > 0) && !body2.immovable && (body1.velocity.x > body2.velocity.x)) + { + body2.velocity.x *= -1; + } + else if ((body1.velocity.y < 0) && !body1.immovable && (body2.velocity.y < body1.velocity.y)) + { + body1.velocity.y *= -1; + } + else if ((body2.velocity.y > 0) && !body2.immovable && (body1.velocity.x > body2.velocity.y)) + { + body2.velocity.y *= -1; + } + } + + if (!body1.immovable) + { + body1.x += (body1.velocity.x * this.game.time.physicsElapsed) - overlap * Math.cos(angleCollision); + body1.y += (body1.velocity.y * this.game.time.physicsElapsed) - overlap * Math.sin(angleCollision); + } + + if (!body2.immovable) + { + body2.x += (body2.velocity.x * this.game.time.physicsElapsed) + overlap * Math.cos(angleCollision); + body2.y += (body2.velocity.y * this.game.time.physicsElapsed) + overlap * Math.sin(angleCollision); + } + + if (body1.onCollide) + { + body1.onCollide.dispatch(body1.sprite, body2.sprite); + } + + if (body2.onCollide) + { + body2.onCollide.dispatch(body2.sprite, body1.sprite); } return true; @@ -63005,6 +63910,23 @@ Phaser.Physics.Arcade.prototype = { }, + /** + * Find the angle in radians between centers of two display objects (like Sprites). + * + * @method Phaser.Physics.Arcade#angleBetweenCenters + * @param {any} source - The Display Object to test from. + * @param {any} target - The Display Object to test to. + * @return {number} The angle in radians between the source and target display objects. + */ + angleBetweenCenters: function (source, target) { + + var dx = target.center.x - source.center.x; + var dy = target.center.y - source.center.y; + + return Math.atan2(dy, dx); + + }, + /** * Find the angle in radians between a display object (like a Sprite) and the given x/y coordinate. * @@ -63117,6 +64039,25 @@ Phaser.Physics.Arcade.Body = function (sprite) { */ this.enable = true; + /** + * If `true` this Body is using circular collision detection. If `false` it is using rectangular. + * Use `Body.setCircle` to control the collision shape this Body uses. + * @property {boolean} isCircle + * @default + * @readOnly + */ + this.isCircle = false; + + /** + * The radius of the circular collision shape this Body is using if Body.setCircle has been enabled. + * If you wish to change the radius then call `setCircle` again with the new value. + * If you wish to stop the Body using a circle then call `setCircle` with a radius of zero (or undefined). + * @property {number} radius + * @default + * @readOnly + */ + this.radius = 0; + /** * @property {Phaser.Point} offset - The offset of the Physics Body from the Sprite x/y position. */ @@ -63210,12 +64151,12 @@ Phaser.Physics.Arcade.Body = function (sprite) { * @property {Phaser.Point} newVelocity - The new velocity. Calculated during the Body.preUpdate and applied to its position. * @readonly */ - this.newVelocity = new Phaser.Point(0, 0); + this.newVelocity = new Phaser.Point(); /** * @property {Phaser.Point} deltaMax - The Sprite position is updated based on the delta x/y values. You can set a cap on those (both +-) using deltaMax. */ - this.deltaMax = new Phaser.Point(0, 0); + this.deltaMax = new Phaser.Point(); /** * @property {Phaser.Point} acceleration - The acceleration is the rate of change of the velocity. Measured in pixels per second squared. @@ -63236,7 +64177,7 @@ Phaser.Physics.Arcade.Body = function (sprite) { /** * @property {Phaser.Point} gravity - A local gravity applied to this Body. If non-zero this over rides any world gravity, unless Body.allowGravity is set to false. */ - this.gravity = new Phaser.Point(0, 0); + this.gravity = new Phaser.Point(); /** * @property {Phaser.Point} bounce - The elasticity of the Body when colliding. bounce.x/y = 1 means full rebound, bounce.x/y = 0.5 means 50% rebound velocity. @@ -63251,6 +64192,58 @@ Phaser.Physics.Arcade.Body = function (sprite) { */ this.worldBounce = null; + /** + * A Signal that is dispatched when this Body collides with the world bounds. + * Due to the potentially high volume of signals this could create it is disabled by default. + * To use this feature set this property to a Phaser.Signal: `sprite.body.onWorldBounds = new Phaser.Signal()` + * and it will be called when a collision happens, passing five arguments: + * `onWorldBounds(sprite, up, down, left, right)` + * where the Sprite is a reference to the Sprite that owns this Body, and the other arguments are booleans + * indicating on which side of the world the Body collided. + * @property {Phaser.Signal} onWorldBounds + */ + this.onWorldBounds = null; + + /** + * A Signal that is dispatched when this Body collides with another Body. + * + * You still need to call `game.physics.arcade.collide` in your `update` method in order + * for this signal to be dispatched. + * + * Usually you'd pass a callback to the `collide` method, but this signal provides for + * a different level of notification. + * + * Due to the potentially high volume of signals this could create it is disabled by default. + * + * To use this feature set this property to a Phaser.Signal: `sprite.body.onCollide = new Phaser.Signal()` + * and it will be called when a collision happens, passing two arguments: the sprites which collided. + * The first sprite in the argument is always the owner of this Body. + * + * If two Bodies with this Signal set collide, both will dispatch the Signal. + * @property {Phaser.Signal} onCollide + */ + this.onCollide = null; + + /** + * A Signal that is dispatched when this Body overlaps with another Body. + * + * You still need to call `game.physics.arcade.overlap` in your `update` method in order + * for this signal to be dispatched. + * + * Usually you'd pass a callback to the `overlap` method, but this signal provides for + * a different level of notification. + * + * Due to the potentially high volume of signals this could create it is disabled by default. + * + * To use this feature set this property to a Phaser.Signal: `sprite.body.onOverlap = new Phaser.Signal()` + * and it will be called when a collision happens, passing two arguments: the sprites which collided. + * The first sprite in the argument is always the owner of this Body. + * + * If two Bodies with this Signal set collide, both will dispatch the Signal. + * @property {Phaser.Signal} onOverlap + */ + this.onOverlap = null; + /** * @property {Phaser.Point} maxVelocity - The maximum velocity in pixels per second sq. that the Body can reach. * @default @@ -63353,6 +64346,12 @@ Phaser.Physics.Arcade.Body = function (sprite) { */ this.overlapY = 0; + /** + * If `Body.isCircle` is true, and this body collides with another circular body, the amount of overlap is stored here. + * @property {number} overlapR - The amount of overlap during the collision. + */ + this.overlapR = 0; + /** * If a body is overlapping with another body, but neither of them are moving (maybe they spawned on-top of each other?) this is set to true. * @property {boolean} embedded - Body embed value. @@ -63626,7 +64625,10 @@ Phaser.Physics.Arcade.Body.prototype = { if (this.collideWorldBounds) { - this.checkWorldBounds(); + if (this.checkWorldBounds() && this.onWorldBounds) + { + this.onWorldBounds.dispatch(this.sprite, this.blocked.up, this.blocked.down, this.blocked.left, this.blocked.right); + } } } @@ -63797,6 +64799,7 @@ Phaser.Physics.Arcade.Body.prototype = { * * @method Phaser.Physics.Arcade.Body#checkWorldBounds * @protected + * @return {boolean} True if the Body collided with the world bounds, otherwise false. */ checkWorldBounds: function () { @@ -63807,31 +64810,71 @@ Phaser.Physics.Arcade.Body.prototype = { var bx = (this.worldBounce) ? -this.worldBounce.x : -this.bounce.x; var by = (this.worldBounce) ? -this.worldBounce.y : -this.bounce.y; - if (pos.x < bounds.x && check.left) + if (this.isCircle) { - pos.x = bounds.x; - this.velocity.x *= bx; - this.blocked.left = true; + var bodyBounds = { + x: this.center.x - this.radius, + y: this.center.y - this.radius, + right: this.center.x + this.radius, + bottom: this.center.y + this.radius + }; + + if (bodyBounds.x < bounds.x && check.left) + { + pos.x = bounds.x - this.halfWidth + this.radius; + this.velocity.x *= bx; + this.blocked.left = true; + } + else if (bodyBounds.right > bounds.right && check.right) + { + pos.x = bounds.right - this.halfWidth - this.radius; + this.velocity.x *= bx; + this.blocked.right = true; + } + + if (bodyBounds.y < bounds.y && check.up) + { + pos.y = bounds.y - this.halfHeight + this.radius; + this.velocity.y *= by; + this.blocked.up = true; + } + else if (bodyBounds.bottom > bounds.bottom && check.down) + { + pos.y = bounds.bottom - this.halfHeight - this.radius; + this.velocity.y *= by; + this.blocked.down = true; + } } - else if (this.right > bounds.right && check.right) + else { - pos.x = bounds.right - this.width; - this.velocity.x *= bx; - this.blocked.right = true; + if (pos.x < bounds.x && check.left) + { + pos.x = bounds.x; + this.velocity.x *= bx; + this.blocked.left = true; + } + else if (this.right > bounds.right && check.right) + { + pos.x = bounds.right - this.width; + this.velocity.x *= bx; + this.blocked.right = true; + } + + if (pos.y < bounds.y && check.up) + { + pos.y = bounds.y; + this.velocity.y *= by; + this.blocked.up = true; + } + else if (this.bottom > bounds.bottom && check.down) + { + pos.y = bounds.bottom - this.height; + this.velocity.y *= by; + this.blocked.down = true; + } } - if (pos.y < bounds.y && check.up) - { - pos.y = bounds.y; - this.velocity.y *= by; - this.blocked.up = true; - } - else if (this.bottom > bounds.bottom && check.down) - { - pos.y = bounds.bottom - this.height; - this.velocity.y *= by; - this.blocked.down = true; - } + return (this.blocked.up || this.blocked.down || this.blocked.left || this.blocked.right); }, @@ -64011,6 +65054,9 @@ Phaser.Physics.Arcade.Body.prototype = { * 24 is the horizontal offset of the Body from the top-left of the Sprites texture, and 34 * is the vertical offset. * + * Calling `setSize` on a Body that has already had `setCircle` will reset all of the Circle + * properties, making this Body rectangular again. + * * @method Phaser.Physics.Arcade.Body#setSize * @param {number} width - The width of the Body. * @param {number} height - The height of the Body. @@ -64032,6 +65078,55 @@ Phaser.Physics.Arcade.Body.prototype = { this.center.setTo(this.position.x + this.halfWidth, this.position.y + this.halfHeight); + this.isCircle = false; + this.radius = 0; + + }, + + /** + * Sets this Body as using a circle, of the given radius, for all collision detection instead of a rectangle. + * The radius is given in pixels and is the distance from the center of the circle to the edge. + * + * You can also control the x and y offset, which is the position of the Body relative to the top-left of the Sprite. + * + * To change a Body back to being rectangular again call `Body.setSize`. + * + * Note: Circular collision only happens with other Arcade Physics bodies, it does not + * work against tile maps, where rectangular collision is the only method supported. + * + * @method Phaser.Physics.Arcade.Body#setCircle + * @param {number} [radius] - The radius of the Body in pixels. Pass a value of zero / undefined, to stop the Body using a circle for collision. + * @param {number} [offsetX] - The X offset of the Body from the Sprite position. + * @param {number} [offsetY] - The Y offset of the Body from the Sprite position. + */ + setCircle: function (radius, offsetX, offsetY) { + + if (offsetX === undefined) { offsetX = this.offset.x; } + if (offsetY === undefined) { offsetY = this.offset.y; } + + if (radius > 0) + { + this.isCircle = true; + this.radius = radius; + + this.sourceWidth = radius * 2; + this.sourceHeight = radius * 2; + + this.width = this.sourceWidth * this._sx; + this.height = this.sourceHeight * this._sy; + + this.halfWidth = Math.floor(this.width / 2); + this.halfHeight = Math.floor(this.height / 2); + + this.offset.setTo(offsetX, offsetY); + + this.center.setTo(this.position.x + this.halfWidth, this.position.y + this.halfHeight); + } + else + { + this.isCircle = false; + } + }, /** @@ -64069,6 +65164,36 @@ Phaser.Physics.Arcade.Body.prototype = { }, + /** + * Returns the bounds of this physics body. + * + * Only used internally by the World collision methods. + * + * @method Phaser.Physics.Arcade.Body#getBounds + * @param {object} obj - The object in which to set the bounds values. + * @return {object} The object that was given to this method. + */ + getBounds: function (obj) { + + if (this.isCircle) + { + obj.x = this.center.x - this.radius; + obj.y = this.center.y - this.radius; + obj.right = this.center.x + this.radius; + obj.bottom = this.center.y + this.radius; + } + else + { + obj.x = this.x; + obj.y = this.y; + obj.right = this.right; + obj.bottom = this.bottom; + } + + return obj; + + }, + /** * Tests if a world point lies within this Body. * @@ -64079,7 +65204,7 @@ Phaser.Physics.Arcade.Body.prototype = { */ hitTest: function (x, y) { - return Phaser.Rectangle.contains(this, x, y); + return (this.isCircle) ? Phaser.Circle.contains(this, x, y) : Phaser.Rectangle.contains(this, x, y); }, @@ -64313,15 +65438,33 @@ Phaser.Physics.Arcade.Body.render = function (context, body, color, filled) { color = color || 'rgba(0,255,0,0.4)'; - if (filled) + context.fillStyle = color; + context.strokeStyle = color; + + if (body.isCircle) { - context.fillStyle = color; - context.fillRect(body.position.x - body.game.camera.x, body.position.y - body.game.camera.y, body.width, body.height); + context.beginPath(); + context.arc(body.center.x - body.game.camera.x, body.center.y - body.game.camera.y, body.radius, 0, 2 * Math.PI); + + if (filled) + { + context.fill(); + } + else + { + context.stroke(); + } } else { - context.strokeStyle = color; - context.strokeRect(body.position.x - body.game.camera.x, body.position.y - body.game.camera.y, body.width, body.height); + if (filled) + { + context.fillRect(body.position.x - body.game.camera.x, body.position.y - body.game.camera.y, body.width, body.height); + } + else + { + context.strokeRect(body.position.x - body.game.camera.x, body.position.y - body.game.camera.y, body.width, body.height); + } } }; @@ -65477,13 +66620,13 @@ Phaser.Physics.P2.prototype = { this.walls[wall] = new p2.Body({ mass: 0, position: [ this.pxmi(x), this.pxmi(y) ], angle: angle }); this.walls[wall].addShape(new p2.Plane()); - if (setCollisionGroup) - { - this.walls[wall].shapes[0].collisionGroup = this.boundsCollisionGroup.mask; - } - this.world.addBody(this.walls[wall]); } + + if (setCollisionGroup) + { + this.walls[wall].shapes[0].collisionGroup = this.boundsCollisionGroup.mask; + } } else { @@ -65632,6 +66775,9 @@ Phaser.Physics.P2.prototype = { this._toRemove = []; this.boundsCollidesWith = []; + // Remove the world bounds + this.walls = { left: null, right: null, top: null, bottom: null }; + }, /** @@ -73519,8 +74665,6 @@ Phaser.TilemapLayer.prototype.renderRegion = function (scrollX, scrollY, left, t // xmax/ymax - remaining cells to render on column/row var tx, ty, x, y, xmax, ymax; - context.fillStyle = this.tileColor; - for (y = normStartY, ymax = bottom - top, ty = baseY; ymax >= 0; y++, ymax--, ty += th) @@ -74022,6 +75166,33 @@ Phaser.TilemapParser = { */ INSERT_NULL: false, + /** + * A tiled flag that resides within the 32 bit of the object gid and + * indicates whether the tiled/object is flipped horizontally. + * + * @constant + * @type {number} + */ + FLIPPED_HORIZONTALLY_FLAG: 0x80000000, + + /** + * A tiled flag that resides within the 31 bit of the object gid and + * indicates whether the tiled/object is flipped vertically. + * + * @constant + * @type {number} + */ + FLIPPED_VERTICALLY_FLAG: 0x40000000, + + /** + * A tiled flag that resides within the 30 bit of the object gid and + * indicates whether the tiled/object is flipped diagonally. + * + * @constant + * @type {number} + */ + FLIPPED_DIAGONALLY_FLAG: 0x20000000, + /** * Parse tilemap data from the cache and creates a Tilemap object. * @@ -74502,6 +75673,8 @@ Phaser.TilemapParser = { // Object Tiles if (curo.objects[v].gid) { + var self = this; + var object = { gid: curo.objects[v].gid, @@ -74509,9 +75682,13 @@ Phaser.TilemapParser = { type: curo.objects[v].hasOwnProperty("type") ? curo.objects[v].type : "", x: curo.objects[v].x, y: curo.objects[v].y, + width: curo.objects[v].width, + height: curo.objects[v].height, visible: curo.objects[v].visible, - properties: curo.objects[v].properties - + properties: curo.objects[v].properties, + horizontallyFlipped: curo.objects[v].gid & self.FLIPPED_HORIZONTALLY_FLAG, + verticallyFlipped: curo.objects[v].gid & self.FLIPPED_VERTICALLY_FLAG, + diagonallyFlipped: curo.objects[v].gid & self.FLIPPED_DIAGONALLY_FLAG }; if (curo.objects[v].rotation) @@ -76301,7 +77478,7 @@ Phaser.Weapon = function (game, parent) { this.fireFrom = new Phaser.Rectangle(0, 0, 1, 1); /** - * The angle at which the bullets are fired. This can be a const such as Phaser.ANGLE_UP + * The angle at which the bullets are fired. This can be a const such as Phaser.ANGLE_UP * or it can be any number from 0 to 360 inclusive, where 0 degrees is to the right. * @type {integer} */ @@ -76379,14 +77556,14 @@ Phaser.Weapon = function (game, parent) { /** * This is a variance added to the speed of Bullets when they are fired. - * If bullets have a `bulletSpeed` value of 200, and a `bulletSpeedVariance` of 50 + * If bullets have a `bulletSpeed` value of 200, and a `bulletSpeedVariance` of 50 * then the actual speed of the Bullets will be between 150 and 250 pixels per second. * @type {number} */ this.bulletSpeedVariance = 0; /** - * If you've set `bulletKillType` to `Phaser.Weapon.KILL_LIFESPAN` this controls the amount + * If you've set `bulletKillType` to `Phaser.Weapon.KILL_LIFESPAN` this controls the amount * of lifespan the Bullets have set on launch. The value is given in milliseconds. * When a Bullet hits its lifespan limit it will be automatically killed. * @type {number} @@ -76394,7 +77571,7 @@ Phaser.Weapon = function (game, parent) { this.bulletLifespan = 0; /** - * If you've set `bulletKillType` to `Phaser.Weapon.KILL_DISTANCE` this controls the distance + * If you've set `bulletKillType` to `Phaser.Weapon.KILL_DISTANCE` this controls the distance * the Bullet can travel before it is automatically killed. The distance is given in pixels. * @type {number} */ @@ -76468,7 +77645,7 @@ Phaser.Weapon = function (game, parent) { * This Rectangle defines the bounds that are used when determining if a Bullet should be killed or not. * It's used in combination with `Weapon.bulletKillType` when that is set to either `Phaser.Weapon.KILL_WEAPON_BOUNDS` * or `Phaser.Weapon.KILL_STATIC_BOUNDS`. If you are not using either of these kill types then the bounds are ignored. - * If you are tracking a Sprite or Point then the bounds are centered on that object every frame. + * If you are tracking a Sprite or Point then the bounds are centered on that object every frame. * * @type {Phaser.Rectangle} */ @@ -76507,8 +77684,8 @@ Phaser.Weapon = function (game, parent) { /** * The onFire Signal is dispatched each time `Weapon.fire` is called, and a Bullet is - * _successfully_ launched. The callback is set two arguments: a reference to the Weapon that fired the bullet, - * and a reference to the bullet sprite itself. + * _successfully_ launched. The callback is set two arguments: a reference to the bullet sprite itself, + * and a reference to the Weapon that fired the bullet. * * @type {Phaser.Signal} */ @@ -76596,7 +77773,7 @@ Phaser.Weapon.KILL_NEVER = 0; Phaser.Weapon.KILL_LIFESPAN = 1; /** -* A `bulletKillType` constant that automatically kills the bullets after they +* A `bulletKillType` constant that automatically kills the bullets after they * exceed the `bulletDistance` from their original firing position. * @constant * @type {integer} @@ -76647,7 +77824,7 @@ Phaser.Weapon.KILL_STATIC_BOUNDS = 6; * so be careful it doesn't grow too large. * * You can either set the texture key and frame here, or via the `Weapon.bulletKey` and `Weapon.bulletFrame` -* properties. You can also animate bullets, or set them to use random frames. All Bullets belonging to a +* properties. You can also animate bullets, or set them to use random frames. All Bullets belonging to a * single Weapon instance must share the same texture key however. * * @method Phaser.Weapon#createBullets @@ -76675,7 +77852,7 @@ Phaser.Weapon.prototype.createBullets = function (quantity, key, frame, group) { this.autoExpandBulletsGroup = true; quantity = 1; } - + this.bullets.createMultiple(quantity, key, frame); this.bullets.setAll('data.bulletManager', this); @@ -76893,7 +78070,7 @@ Phaser.Weapon.prototype.trackPointer = function (pointer, offsetX, offsetY) { * Attempts to fire a single Bullet. If there are no more bullets available in the pool, and the pool cannot be extended, * then this method returns `false`. It will also return false if not enough time has expired since the last time * the Weapon was fired, as defined in the `Weapon.fireRate` property. -* +* * Otherwise the first available bullet is selected and launched. * * The arguments are all optional, but allow you to control both where the bullet is launched from, and aimed at. @@ -77181,12 +78358,12 @@ Phaser.Weapon.prototype.setBulletBodyOffset = function (width, height, offsetX, /** * Sets the texture frames that the bullets can use when being launched. -* +* * This is intended for use when you've got numeric based frames, such as those loaded via a Sprite Sheet. -* +* * It works by calling `Phaser.ArrayUtils.numberArray` internally, using the min and max values * provided. Then it sets the frame index to be zero. -* +* * You can optionally set the cycle and random booleans, to allow bullets to cycle through the frames * when they're fired, or pick one at random. * @@ -77311,10 +78488,10 @@ Object.defineProperty(Phaser.Weapon.prototype, "bulletClass", { * * * `Phaser.Weapon.KILL_LIFESPAN` * The bullets are automatically killed when their `bulletLifespan` amount expires. -* +* * * `Phaser.Weapon.KILL_DISTANCE` * The bullets are automatically killed when they exceed `bulletDistance` pixels away from their original launch position. -* +* * * `Phaser.Weapon.KILL_WEAPON_BOUNDS` * The bullets are automatically killed when they no longer intersect with the `Weapon.bounds` rectangle. * @@ -77618,7 +78795,7 @@ Phaser.Creature = function (game, x, y, key, mesh, animation) { if (typeof key === 'string') { - var texture = game.cache.getPixiTexture(key); + var texture = new PIXI.Texture(game.cache.getBaseTexture(key)); } else { @@ -78271,7 +79448,7 @@ Phaser.Video = function (game, key, url) { } else { - this.baseTexture = new PIXI.BaseTexture(PIXI.TextureCache['__default'].baseTexture.source); + this.baseTexture = new PIXI.BaseTexture(Phaser.Cache.DEFAULT.baseTexture.source); this.baseTexture.forceLoaded(this.width, this.height); } diff --git a/build/phaser-creature.map b/build/phaser-creature.map index 06ed4bb6c..5685d09da 100644 --- a/build/phaser-creature.map +++ b/build/phaser-creature.map @@ -1 +1 @@ -{"version":3,"file":"phaser-creature.min.js","sources":["phaser-creature.js"],"names":["WheelEventProxy","scaleFactor","deltaMode","this","_scaleFactor","_deltaMode","originalEvent","root","Phaser","VERSION","GAMES","AUTO","CANVAS","WEBGL","HEADLESS","NONE","LEFT","RIGHT","UP","DOWN","SPRITE","BUTTON","IMAGE","GRAPHICS","TEXT","TILESPRITE","BITMAPTEXT","GROUP","RENDERTEXTURE","TILEMAP","TILEMAPLAYER","EMITTER","POLYGON","BITMAPDATA","CANVAS_FILTER","WEBGL_FILTER","ELLIPSE","SPRITEBATCH","RETROFONT","POINTER","ROPE","CIRCLE","RECTANGLE","LINE","MATRIX","POINT","ROUNDEDRECTANGLE","CREATURE","VIDEO","PENDING_ATLAS","HORIZONTAL","VERTICAL","LANDSCAPE","PORTRAIT","ANGLE_UP","ANGLE_DOWN","ANGLE_LEFT","ANGLE_RIGHT","ANGLE_NORTH_EAST","ANGLE_NORTH_WEST","ANGLE_SOUTH_EAST","ANGLE_SOUTH_WEST","TOP_LEFT","TOP_CENTER","TOP_RIGHT","LEFT_TOP","LEFT_CENTER","LEFT_BOTTOM","CENTER","RIGHT_TOP","RIGHT_CENTER","RIGHT_BOTTOM","BOTTOM_LEFT","BOTTOM_CENTER","BOTTOM_RIGHT","blendModes","NORMAL","ADD","MULTIPLY","SCREEN","OVERLAY","DARKEN","LIGHTEN","COLOR_DODGE","COLOR_BURN","HARD_LIGHT","SOFT_LIGHT","DIFFERENCE","EXCLUSION","HUE","SATURATION","COLOR","LUMINOSITY","scaleModes","DEFAULT","LINEAR","NEAREST","PIXI","Math","trunc","x","ceil","floor","Function","prototype","bind","slice","Array","thisArg","bound","args","boundArgs","concat","call","arguments","target","apply","TypeError","F","proto","isArray","arg","Object","toString","forEach","fun","t","len","length","i","window","Uint32Array","CheapArray","type","constructor","console","log","assert","warn","Utils","getProperty","obj","prop","parts","split","last","pop","l","current","setProperty","value","chanceRoll","chance","undefined","random","randomChoice","choice1","choice2","parseDimension","size","dimension","f","px","substr","parseInt","innerWidth","innerHeight","pad","str","dir","padlen","join","right","left","isPlainObject","nodeType","hasOwnProperty","e","extend","options","name","src","copy","copyIsArray","clone","deep","mixinPrototype","mixin","replace","mixinKeys","keys","key","get","set","defineProperty","from","to","o","childNodes","cloneNode","Circle","y","diameter","_diameter","_radius","circumference","PI","out","Point","u","r","cos","sin","radius","getBounds","Rectangle","setTo","copyFrom","source","copyTo","dest","distance","round","output","contains","circumferencePoint","angle","asDegrees","offset","dx","dy","offsetPoint","point","a","top","bottom","equals","b","intersects","degToRad","intersectsRectangle","c","cx","abs","halfWidth","xDist","cy","halfHeight","yDist","xCornerDist","yCornerDist","xCornerDistSq","yCornerDistSq","maxCornerDistSq","Ellipse","width","height","p","sqrt","normx","normy","Line","x1","y1","x2","y2","start","end","fromSprite","startSprite","endSprite","useCenter","center","fromAngle","rotate","rotateAround","line","asSegment","result","intersectsPoints","reflect","midPoint","centerOn","tx","ty","add","pointOnLine","pointOnSegment","xMin","min","xMax","max","yMin","yMax","coordinatesOnLine","stepRate","results","sx","sy","err","push","e2","atan2","wrap","a1","a2","b1","b2","c1","c2","denom","uc","ua","ub","rect","bx1","by1","bx2","by2","normalAngle","Matrix","d","fromArray","array","matrix","toArray","transpose","Float32Array","pos","newPos","applyInverse","id","translate","scale","tx1","append","d1","identity","identityMatrix","invert","subtract","multiply","divide","clampX","clamp","clampY","radToDeg","getMagnitude","getMagnitudeSq","setMagnitude","magnitude","normalize","isZero","m","dot","cross","perp","rperp","normalRightHand","negative","multiplyAdd","s","interpolate","project","amt","projectUnit","centroid","points","Error","pointslength","parse","xProp","yProp","Polygon","area","_points","closed","toNumberArray","flatten","inside","j","ix","iy","jx","jy","y0","Number","MAX_VALUE","calculateArea","p1","p2","avgHeight","centerX","centerY","floorAll","ceilAll","inflate","resize","containsRect","intersection","intersectsRaw","tolerance","union","randomX","randomY","getPoint","position","empty","inflatePoint","containsRaw","rx","ry","rw","rh","containsPoint","volume","sameDimensions","aabb","NEGATIVE_INFINITY","POSITIVE_INFINITY","EmptyRectangle","RoundedRectangle","Camera","game","world","view","bounds","deadzone","visible","roundPx","atLimit","displayObject","totalInView","lerp","onShakeComplete","Signal","onFlashComplete","onFadeComplete","fx","_targetPosition","_edge","_position","_shake","intensity","duration","horizontal","vertical","shakeBounds","_fxDuration","_fxType","FOLLOW_LOCKON","FOLLOW_PLATFORMER","FOLLOW_TOPDOWN","FOLLOW_TOPDOWN_TIGHT","SHAKE_BOTH","SHAKE_HORIZONTAL","SHAKE_VERTICAL","ENABLE_FX","boot","camera","Graphics","stage","addChild","preUpdate","follow","style","lerpX","lerpY","helper","w","h","unfollow","focusOn","setPosition","focusOnXY","shake","force","direction","flash","color","clear","beginFill","drawRect","endFill","alpha","fade","update","updateFX","updateShake","checkBounds","time","elapsedMS","dispatch","rnd","frac","updateTarget","worldPosition","math","linear","setBoundsToWorld","vx","vw","vy","vh","setSize","reset","resetFX","State","make","cache","input","load","sound","state","tweens","particles","physics","init","preload","loadUpdate","loadRender","create","preRender","render","paused","resumed","pauseUpdate","shutdown","StateManager","pendingState","states","_pendingState","_clearWorld","_clearCache","_created","_args","onStateChange","onInitCallback","onPreloadCallback","onCreateCallback","onUpdateCallback","onRenderCallback","onResizeCallback","onPreRenderCallback","onLoadUpdateCallback","onLoadRenderCallback","onPausedCallback","onResumedCallback","onPauseUpdateCallback","onShutDownCallback","onPause","pause","onResume","resume","autoStart","newState","isBooted","remove","callbackContext","clearWorld","clearCache","checkState","splice","restart","dummy","previousStateKey","clearCurrentState","setCurrentState","totalQueuedFiles","totalQueuedPacks","loadComplete","removeAll","debug","destroy","link","unlink","_kickstart","getCurrentState","elapsedTime","renderType","context","save","setTransform","restore","_bindings","_prevParams","memorize","_shouldPropagate","active","_boundDispatch","validateListener","listener","fnName","_registerListener","isOnce","listenerContext","priority","binding","prevIndex","_indexOfListener","SignalBinding","_addBinding","execute","n","_priority","cur","_listener","has","addOnce","_destroy","getNumListeners","halt","bindings","paramsArr","forget","dispose","_this","signal","_isOnce","_signal","callCount","params","handlerReturn","detach","isBound","getListener","getSignal","Filter","uniforms","fragmentSrc","passes","shaders","dirty","padding","prevPoint","Date","resolution","mouse","date","getFullYear","getMonth","getDate","getHours","getMinutes","getSeconds","sampleRate","iChannel0","textureData","repeat","iChannel1","iChannel2","iChannel3","setResolution","pointer","toFixed","totalElapsedSeconds","addToWorld","anchorX","anchorY","image","anchor","filters","Plugin","parent","hasPreUpdate","hasUpdate","hasPostUpdate","hasRender","hasPostRender","postRender","PluginManager","plugins","_len","_i","plugin","postUpdate","Stage","DisplayObjectContainer","disableVisibilityChange","exists","worldTransform","currentRenderOrderID","_hiddenVar","_onChange","_bgColor","g","rgba","transparent","config","parseConfig","setBackgroundColor","DOM","getOffset","canvas","Canvas","setUserSelect","setTouchAction","checkVisibility","children","updateTransform","worldAlpha","document","webkitHidden","mozHidden","msHidden","hidden","event","visibilityChange","addEventListener","onblur","onfocus","onpagehide","onpageshow","device","cocoonJSApp","CocoonJS","App","onSuspended","onActivated","focusLoss","focusGain","gamePaused","gameResumed","Color","valueToColor","updateColor","removeEventListener","Group","addToStage","enableBody","physicsBodyType","Physics","ARCADE","z","physicsType","alive","ignoreDestroy","pendingDestroy","classType","Sprite","cursor","inputEnableChildren","onChildInputDown","onChildInputUp","onChildInputOver","onChildInputOut","enableBodyDebug","physicsSortDirection","onDestroy","cursorIndex","fixedToCamera","cameraOffset","hash","_sortProperty","RETURN_NONE","RETURN_TOTAL","RETURN_CHILD","SORT_ASCENDING","SORT_DESCENDING","child","silent","index","body","removeFromHash","addChildAt","updateZ","enable","addToHash","inputEnabled","events","onAddedToGroup$dispatch","addAt","indexOf","addMultiple","moveAll","getAt","getChildAt","frame","createMultiple","quantity","singleKey","singleFrame","align","rows","columns","cellWidth","cellHeight","alignIn","resetCursor","next","previous","swap","child1","child2","swapChildren","bringToTop","getIndex","sendToBack","moveUp","moveDown","xy","reverse","getByName","oldChild","newChild","removeChild","hasProperty","operation","checkProperty","checkAlive","checkVisible","setAll","setAllChildren","checkAll","addAll","property","amount","subAll","multiplyAll","divideAll","callAllExists","callback","existsValue","callbackFromArray","callAll","method","methodLength","contextLength","renderOrderID","filter","predicate","checkExists","ArraySet","forEachExists","iterate","forEachAlive","forEachDead","sort","order","ascendingSortHandler","descendingSortHandler","customSort","sortHandler","returnType","total","getFirstExists","createIfNull","resetChild","getFirstAlive","getFirstDead","loadTexture","getTop","getBottom","getClosestTo","object","tempDistance","getFurthestFrom","countLiving","countDead","getRandom","startIndex","ArrayUtils","getRandomItem","destroyPhase","onRemovedFromGroup$dispatch","removed","group","destroyTexture","removeBetween","endIndex","destroyChildren","soft","rotation","World","_definedSize","_width","_height","stateChange","setBounds","sprite","useBounds","_currentBounds","between","Game","renderer","antialias","physicsConfig","preserveDrawingBuffer","clearBeforeRender","isRunning","raf","net","Device","lockRender","stepping","pendingStep","stepCount","onBlur","onFocus","_paused","_codePaused","currentUpdateID","updatesThisFrame","_deltaTime","_lastCount","_spiraling","fpsProblemNotifier","forceSingleUpdate","_nextFpsNotification","enableDebug","RandomDataGenerator","now","whenReady","seed","ScaleManager","setUpRenderer","GameObjectFactory","GameObjectCreator","Cache","Loader","Time","TweenManager","Input","SoundManager","Particles","Create","Net","Debug","showDebugHeader","RequestAnimationFrame","stopFocus","focus","hideBanner","v","webAudio","chrome","webGL","CanvasRenderer","WebGLRenderer","contextLost","contextRestored","cocoonJS","screencanvas","smoothed","addToDOM","preventDefault","initContext","clearGLTextures","updateLogic","desiredFpsMult","updateRender","slowMotion","desiredFps","slowStep","elapsed","count","refresh","timeStep","enableStep","disableStep","step","stop","removeFromDOM","defaultRenderer","muteOnPause","setMute","cordova","iOS","unsetMute","hitCanvas","hitContext","moveCallbacks","customCandidateHandler","customCandidateHandlerContext","pollRate","enabled","multiInputOverride","MOUSE_TOUCH_COMBINE","speed","circle","maxPointers","tapRate","doubleTapRate","holdRate","justPressedRate","justReleasedRate","recordPointerHistory","recordRate","recordLimit","pointer1","pointer2","pointer3","pointer4","pointer5","pointer6","pointer7","pointer8","pointer9","pointer10","pointers","activePointer","mousePointer","keyboard","touch","mspointer","gamepad","resetLocked","onDown","onUp","onTap","onHold","minPriorityID","interactiveItems","_localPoint","_pollCounter","_oldPosition","_x","_y","MOUSE_OVERRIDES_TOUCH","TOUCH_OVERRIDES_MOUSE","MAX_POINTERS","Pointer","PointerMode","CURSOR","addPointer","Mouse","Touch","MSPointer","Keyboard","Gamepad","CanvasPool","getContext","_onClickTrampoline","onClickTrampoline","setInteractiveCandidateHandler","addMoveCallback","deleteMoveCallback","TOUCH","hard","resetSpeed","startPointer","countActivePointers","updatePointer","identifier","move","stopPointer","limit","getPointer","isActive","getPointerFromIdentifier","getPointerFromId","pointerId","getLocalPosition","wt","hitTest","localPoint","worldVisible","hitArea","TileSprite","texture","graphicsData","data","fill","shape","processClickTrampolines","mouseDownCallback","mouseUpCallback","mouseOutCallback","mouseOverCallback","mouseWheelCallback","capture","button","wheelDelta","locked","stopOnGameOut","pointerLock","_onMouseDown","_onMouseMove","_onMouseUp","_onMouseOut","_onMouseOver","_onMouseWheel","_wheelEvent","NO_BUTTON","LEFT_BUTTON","MIDDLE_BUTTON","RIGHT_BUTTON","BACK_BUTTON","FORWARD_BUTTON","WHEEL_UP","WHEEL_DOWN","android","onMouseDown","onMouseMove","onMouseUp","_onMouseUpGlobal","onMouseUpGlobal","_onMouseOutGlobal","onMouseOutGlobal","onMouseOut","onMouseOver","onMouseWheel","wheelEvent","mouseMoveCallback","withinGame","leftButton","rightButton","bindEvent","deltaY","requestPointerLock","element","mozRequestPointerLock","webkitRequestPointerLock","_pointerLockChange","pointerLockChange","pointerLockElement","mozPointerLockElement","webkitPointerLockElement","releasePointerLock","exitPointerLock","mozExitPointerLock","webkitExitPointerLock","_stubsGenerated","makeBinder","defineProperties","detail","deltaX","wheelDeltaX","deltaZ","pointerDownCallback","pointerMoveCallback","pointerUpCallback","_onMSPointerDown","_onMSPointerMove","_onMSPointerUp","_onMSPointerUpGlobal","_onMSPointerOut","_onMSPointerOver","onPointerDown","onPointerMove","onPointerUp","onPointerUpGlobal","onPointerOut","onPointerOver","pointerType","DeviceButton","buttonCode","isDown","isUp","timeDown","timeUp","repeats","altKey","shiftKey","ctrlKey","onFloat","padFloat","justPressed","justReleased","pointerMode","CONTACT","middleButton","backButton","forwardButton","eraserButton","ERASER_BUTTON","_holdSent","_history","_nextDrop","_stateReset","clientX","clientY","pageX","pageY","screenX","screenY","rawMovementX","rawMovementY","movementX","movementY","isMouse","previousTapTime","totalTouches","msSinceLastClick","targetObject","interactiveCandidates","positionDown","positionUp","_clickTrampolines","_trampolineTargetObject","resetButtons","processButtonsDown","buttons","processButtonsUp","updateButtons","down","toLowerCase","totalActivePointers","_touchedHandler","processInteractiveObjects","shift","fromClick","pollLocked","mozMovementX","webkitMovementX","mozMovementY","webkitMovementY","isDragged","highestRenderOrderID","highestInputPriorityID","candidateTarget","currentNode","first","checked","validForInput","checkPointerDown","checkPointerOver","priorityID","swapTarget","newTarget","_pointerOutHandler","_pointerOverHandler","leave","currentPointers","addClickTrampoline","callbackArgs","trampolines","trampoline","_releasedHandler","resetMovement","touchLockCallbacks","touchStartCallback","touchMoveCallback","touchEndCallback","touchEnterCallback","touchLeaveCallback","touchCancelCallback","_onTouchStart","_onTouchMove","_onTouchEnd","_onTouchEnter","_onTouchLeave","_onTouchCancel","onTouchStart","onTouchMove","onTouchEnd","onTouchEnter","onTouchLeave","onTouchCancel","consumeDocumentTouches","_documentTouchMove","addTouchLockCallback","onEnd","removeTouchLockCallback","cb","changedTouches","InputHandler","useHandCursor","_setHandCursor","allowHorizontalDrag","allowVerticalDrag","snapOffset","snapOnDrag","snapOnRelease","snapX","snapY","snapOffsetX","snapOffsetY","pixelPerfectOver","pixelPerfectClick","pixelPerfectAlpha","draggable","boundsRect","boundsSprite","scaleLayer","dragOffset","dragFromCenter","dragStopBlocksInputUp","dragStartPoint","dragDistanceThreshold","dragTimeThreshold","downPoint","snapPoint","_dragPoint","_dragPhase","_pendingDrag","_dragTimePass","_dragDistancePass","_wasEnabled","_tempPoint","_pointerData","camX","camY","isOver","isOut","timeOver","timeOut","downDuration","onAddedToGroup","addedToGroup","onRemovedFromGroup","removedFromGroup","flagged","highestID","highestRenderID","includePixelPerfect","ignoreChildInput","isPixelPerfect","pointerX","pointerY","pointerDown","pointerUp","pointerTimeDown","pointerTimeUp","pointerOver","pointerOut","pointerTimeOver","pointerTimeOut","pointerDragged","fastTest","worldScale","checkPixel","baseTexture","trim","crop","_dx","_dy","clearRect","drawImage","rgb","getImageData","startDrag","_draggedPointerID","updateDrag","sendEvent","onInputOver$dispatch","onInputOut$dispatch","onInputDown$dispatch","dragTimeElapsed","onInputUp$dispatch","stopDrag","fromStart","globalToLocalX","py","globalToLocalY","checkBoundsRect","checkBoundsSprite","onDragUpdate","justOver","delay","overDuration","justOut","enableDrag","lockCenter","pixelPerfect","alphaThreshold","disableDrag","onDragStart$dispatch","grid","boundsFluid","scaleFluidInversed","onDragStop$dispatch","setDragLock","allowHorizontal","allowVertical","enableSnap","onDrag","onRelease","disableSnap","offsetX","offsetY","_gamepadIndexMap","_rawPads","_active","_gamepadSupportAvailable","navigator","webkitGetGamepads","webkitGamepads","userAgent","getGamepads","_prevRawGamepadTypes","_prevTimestamps","onConnectCallback","onDisconnectCallback","onDownCallback","onUpCallback","onAxisCallback","onFloatCallback","_ongamepadconnected","_gamepaddisconnected","_gamepads","SinglePad","addCallbacks","callbacks","onConnect","onDisconnect","onAxis","_onGamepadConnected","onGamepadConnected","_onGamepadDisconnected","onGamepadDisconnected","newPad","connect","removedPad","disconnect","_pollGamepads","pad1","pollStatus","pad2","pad3","pad4","rawGamepads","gamepadsChanged","_rawPad","singlePad","validConnections","rawIndices","padIndices","connected","k","rawPad","setDeadZones","deadZone","BUTTON_0","BUTTON_1","BUTTON_2","BUTTON_3","BUTTON_4","BUTTON_5","BUTTON_6","BUTTON_7","BUTTON_8","BUTTON_9","BUTTON_10","BUTTON_11","BUTTON_12","BUTTON_13","BUTTON_14","BUTTON_15","AXIS_0","AXIS_1","AXIS_2","AXIS_3","AXIS_4","AXIS_5","AXIS_6","AXIS_7","AXIS_8","AXIS_9","XBOX360_A","XBOX360_B","XBOX360_X","XBOX360_Y","XBOX360_LEFT_BUMPER","XBOX360_RIGHT_BUMPER","XBOX360_LEFT_TRIGGER","XBOX360_RIGHT_TRIGGER","XBOX360_BACK","XBOX360_START","XBOX360_STICK_LEFT_BUTTON","XBOX360_STICK_RIGHT_BUTTON","XBOX360_DPAD_LEFT","XBOX360_DPAD_RIGHT","XBOX360_DPAD_UP","XBOX360_DPAD_DOWN","XBOX360_STICK_LEFT_X","XBOX360_STICK_LEFT_Y","XBOX360_STICK_RIGHT_X","XBOX360_STICK_RIGHT_Y","PS3XC_X","PS3XC_CIRCLE","PS3XC_SQUARE","PS3XC_TRIANGLE","PS3XC_L1","PS3XC_R1","PS3XC_L2","PS3XC_R2","PS3XC_SELECT","PS3XC_START","PS3XC_STICK_LEFT_BUTTON","PS3XC_STICK_RIGHT_BUTTON","PS3XC_DPAD_UP","PS3XC_DPAD_DOWN","PS3XC_DPAD_LEFT","PS3XC_DPAD_RIGHT","PS3XC_STICK_LEFT_X","PS3XC_STICK_LEFT_Y","PS3XC_STICK_RIGHT_X","PS3XC_STICK_RIGHT_Y","padParent","_padParent","_prevTimestamp","_buttons","_buttonsLen","_axes","_axesLen","getButton","timestamp","rawButtonVal","isNaN","processButtonDown","processButtonUp","processButtonFloat","axes","processAxisChange","triggerCallback","disconnectingIndex","axis","axisCode","buttonValue","Key","keycode","_enabled","keyCode","onHoldCallback","onHoldContext","_justDown","_justUp","processKeyDown","processKeyUp","upDuration","pressEvent","onPressCallback","_keys","_capture","_onKeyDown","_onKeyPress","_onKeyUp","_k","onPress","addKey","addKeyCapture","addKeys","removeKey","removeKeyCapture","createCursorKeys","up","KeyCode","processKeyPress","clearCaptures","String","fromCharCode","charCode","A","charCodeAt","B","C","D","E","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z","ZERO","ONE","TWO","THREE","FOUR","FIVE","SIX","SEVEN","EIGHT","NINE","NUMPAD_0","NUMPAD_1","NUMPAD_2","NUMPAD_3","NUMPAD_4","NUMPAD_5","NUMPAD_6","NUMPAD_7","NUMPAD_8","NUMPAD_9","NUMPAD_MULTIPLY","NUMPAD_ADD","NUMPAD_ENTER","NUMPAD_SUBTRACT","NUMPAD_DECIMAL","NUMPAD_DIVIDE","F1","F2","F3","F4","F5","F6","F7","F8","F9","F10","F11","F12","F13","F14","F15","COLON","EQUALS","COMMA","UNDERSCORE","PERIOD","QUESTION_MARK","TILDE","OPEN_BRACKET","BACKWARD_SLASH","CLOSED_BRACKET","QUOTES","BACKSPACE","TAB","CLEAR","ENTER","SHIFT","CONTROL","ALT","CAPS_LOCK","ESC","SPACEBAR","PAGE_UP","PAGE_DOWN","END","HOME","PLUS","MINUS","INSERT","DELETE","HELP","NUM_LOCK","match","Component","Angle","wrapAngle","Animation","play","frameRate","loop","killOnComplete","animations","AutoCull","autoCull","inCamera","checkWorldBounds","_bounds","Bounds","container","alignTo","BringToTop","Core","install","components","previousPosition","Events","PhysicsBody","AnimationManager","LoadTexture","FixedToCamera","previousRotation","fresh","_exists","P2JS","removeFromWorld","customRender","Crop","cropRect","_crop","updateCrop","resetFrame","_frame","cw","ch","_updateUvs","Delta","Destroy","onDestroy$dispatch","removeFrom","Video","onChangeSource","resizeFrame","BitmapText","_glyphs","mask","renderable","transformCallback","transformCallbackContext","filterArea","_mask","_destroyCachedSprite","_parent","_onDestroy","_onAddedToGroup","_onRemovedFromGroup","_onRemovedFromWorld","_onKilled","_onRevived","_onEnterBounds","_onOutOfBounds","_onInputOver","_onInputOut","_onInputDown","_onInputUp","_onDragStart","_onDragUpdate","_onDragStop","_onAnimationStart","_onAnimationComplete","_onAnimationLoop","onRemovedFromWorld","onKilled","onRevived","onOutOfBounds","onEnterBounds","onInputOver","onInputOut","onInputDown","onInputUp","onDragStart","onDragStop","onAnimationStart","onAnimationComplete","onAnimationLoop","backing","_fixedToCamera","Health","health","maxHealth","damage","kill","setHealth","heal","InCamera","InputEnabled","InWorld","outOfCameraBoundsKill","_outOfBoundsFired","onEnterBounds$dispatch","onOutOfBounds$dispatch","outOfBoundsKill","inWorld","LifeSpan","lifespan","physicsElapsedMS","revive","onRevived$dispatch","onKilled$dispatch","stopAnimation","setFrame","scaleMode","RenderTexture","setTexture","BitmapData","hasFrameData","loadFrameData","getFrameData","frameData","valid","Tilemap","TilemapLayer","Texture","fromCanvas","img","getImage","base","skipRender","trimmed","spriteSourceSizeX","spriteSourceSizeY","sourceSizeW","sourceSizeH","requiresReTint","tilingTexture","refreshTexture","frameName","Overlap","overlap","_reset","Reset","ScaleMinMax","scaleMin","scaleMax","checkTransform","setScaleMinMax","minX","minY","maxX","maxY","Smoothed","existing","weapon","Weapon","createBullets","Image","creature","mesh","Creature","tween","physicsGroup","spriteBatch","SpriteBatch","audio","audioSprite","addSprite","tileSprite","rope","Rope","text","Text","overFrame","outFrame","downFrame","upFrame","Button","graphics","emitter","maxParticles","Arcade","Emitter","retroFont","font","characterWidth","characterHeight","chars","charsPerRow","xSpacing","ySpacing","xOffset","yOffset","RetroFont","bitmapText","tilemap","tileWidth","tileHeight","renderTexture","addToCache","uuid","addRenderTexture","video","url","bitmapData","addBitmapData","Tween","TextureCache","preUpdatePhysics","preUpdateLifeSpan","preUpdateInWorld","preUpdateCore","_onOverFrame","_onOutFrame","_onDownFrame","_onUpFrame","onOverSound","onOutSound","onDownSound","onUpSound","onOverSoundMarker","onOutSoundMarker","onDownSoundMarker","onUpSoundMarker","onOverMouseOnly","justReleasedPreventsOver","freezeFrames","forceOut","setFrames","onInputOverHandler","onInputOutHandler","onInputDownHandler","onInputUpHandler","removedFromWorld","STATE_OVER","STATE_OUT","STATE_DOWN","STATE_UP","clearFrames","setStateFrame","switchImmediately","frameKey","changeStateFrame","setStateSound","marker","soundKey","markerKey","Sound","AudioSprite","playStateSound","setSounds","overSound","overMarker","downSound","downMarker","outSound","outMarker","upSound","upMarker","setOverSound","setOutSound","setDownSound","setUpSound","changedUp","ctx","smoothProperty","renderSession","getSmoothingPrefix","imageData","pixels","buffer","ArrayBuffer","BaseTexture","FrameData","textureFrame","addFrame","Frame","disableTextureUpload","cls","_image","_pos","_size","_scale","_rotate","_alpha","prev","_anchor","_tempR","_tempG","_tempB","_circle","_swapCanvas","moveH","moveV","draw","fillStyle","fillRect","generateTexture","toDataURL","addImage","processPixelRGB","pixel","createColor","unpackPixel","getPixel32","setPixel32","putImageData","processPixel","replaceRGB","r1","g1","r2","g2","region","packPixel","setHSL","bHaveH","bHaveS","bHaveL","HSLtoRGB","shiftHSL","red","green","blue","immediate","LITTLE_ENDIAN","setPixel","getPixel","getPixelRGB","hsl","hsv","getPixels","getFirstPixel","scan","scaleX","scaleY","newWidth","newHeight","blendMode","getCanvas","tint","cachedTint","tintedTexture","CanvasTinter","getTintedTexture","globalAlpha","op","copyTransform","copyRect","drawGroup","drawGroupProxy","drawFull","CanvasGraphics","renderGraphics","worldRotation","shadow","blur","shadowColor","shadowBlur","shadowOffsetX","shadowOffsetY","alphaMask","sourceRect","maskRect","blendSourceAtop","blendReset","extract","destination","prevFont","fillText","beginPath","arc","closePath","moveTo","lineTo","lineWidth","strokeStyle","stroke","textureLine","createPattern","blendSourceOver","blendSourceIn","blendSourceOut","blendDestinationOver","blendDestinationIn","blendDestinationOut","blendDestinationAtop","blendXor","blendAdd","blendMultiply","blendScreen","blendOverlay","blendDarken","blendLighten","blendColorDodge","blendColorBurn","blendHardLight","blendSoftLight","blendDifference","blendExclusion","blendHue","blendSaturation","blendColor","blendLuminosity","getSmoothingEnabled","setSmoothingEnabled","globalCompositeOperation","getTransform","translateX","translateY","skewX","skewY","fillAlpha","lineColor","currentPath","_webGL","isMask","boundsPadding","_localBounds","webGLDirty","cachedSpriteDirty","lineStyle","lineAlpha","drawShape","quadraticCurveTo","cpX","cpY","toX","toY","xa","ya","fromX","fromY","bezierCurveTo","cpX2","cpY2","dt","dt2","dt3","t2","t3","arcTo","mm","dd","cc","tt","k1","k2","j1","j2","qx","qy","startAngle","endAngle","anticlockwise","segments","sweep","segs","startX","startY","filling","theta","theta2","cTheta","sTheta","segMinus","remainder","real","fillColor","drawRoundedRect","drawCircle","drawEllipse","drawPolygon","path","clearDirty","canvasBuffer","CanvasBuffer","_renderWebGL","_cacheAsBitmap","_generateCachedSprite","updateCachedSpriteTexture","_cachedSprite","blendModeManager","setBlendMode","maskManager","pushMask","_filters","filterManager","pushFilter","_filterBlock","currentBlendMode","blendModeWebGL","blendModesWebGL","gl","blendFunc","WebGLGraphics","popFilter","popMask","drawCount","_renderCanvas","_prevTint","transform","blendModesCanvas","shakeX","shakeY","updateLocalBounds","w0","w1","h0","h1","x3","y3","x4","y4","tempPoint","Infinity","RECT","RREC","CIRC","ELIP","getLocalBounds","cachedSprite","destroyCachedSprite","GraphicsData","POLY","_lineTint","_fillTint","PolyK","Triangulate","sign","tgs","avl","al","i0","i1","i2","ax","ay","bx","by","earFound","_convex","vi","_PointInTriangle","v0x","v0y","v1x","v1y","v2x","v2y","dot00","dot01","dot02","dot11","dot12","invDenom","EarCut","holeIndices","dim","hasHoles","outerLen","outerNode","linkedList","triangles","eliminateHoles","earcutLinked","clockwise","sum","insertNode","filterPoints","again","steiner","removeNode","ear","pass","indexCurve","isEarHashed","isEar","cureLocalIntersections","splitEarcut","pointInTriangle","minTX","minTY","maxTX","maxTY","minZ","zOrder","maxZ","nextZ","prevZ","locallyInside","isValidDiagonal","splitPolygon","list","queue","getLeftmost","compareX","eliminateHole","hole","findHoleBridge","hx","hy","tan","tanMin","sortLinked","q","tail","numMerges","pSize","qSize","inSize","leftmost","intersectsPolygon","middleInside","q1","q2","Node","an","bp","stencilBufferLimit","webGLData","projection","shader","shaderManager","primitiveShader","updateGraphics","mode","stencilManager","pushStencil","drawElements","TRIANGLE_FAN","UNSIGNED_SHORT","indices","popStencil","setShader","uniformMatrix3fv","translationMatrix","uniform1f","flipY","uniform2f","projectionVector","offsetVector","uniform3fv","tintColor","hex2rgb","bindBuffer","ARRAY_BUFFER","vertexAttribPointer","aVertexPosition","FLOAT","colorAttribute","ELEMENT_ARRAY_BUFFER","indexBuffer","TRIANGLE_STRIP","lastIndex","graphicsDataPool","switchMode","canDrawUsingSimple","buildPoly","buildComplexPoly","buildLine","buildRectangle","buildCircle","buildRoundedRectangle","upload","WebGLGraphicsData","rectData","verts","vertPos","tempPoints","rrectData","recPoints","quadraticBezierCurve","vecPos","getPt","n1","n2","perc","diff","xb","yb","circleData","totalSegs","seg","firstPoint","lastPoint","midPointX","midPointY","unshift","p1x","p1y","p2x","p2y","p3x","p3y","perpx","perpy","perp2x","perp2y","perp3x","perp3y","pdist","dist","indexCount","indexStart","createBuffer","glPoints","bufferData","STATIC_DRAW","glIndicies","Uint16Array","updateGraphicsTint","strokeRect","kappa","ox","oy","xe","ye","xm","ym","maxRadius","renderGraphicsMask","tintR","tintG","tintB","drawTriangle","cull","triangle","cameraToFace","ab","faceNormal","drawTriangles","vertices","point1","point2","point3","_tempMatrix","renderXY","WEBGL_RENDERER","renderWebGL","renderCanvas","renderRawXY","textBounds","colors","strokeColors","fontStyles","fontWeights","autoRound","useAdvancedWrap","_res","_text","_fontComponents","_lineSpacing","_charCount","setStyle","updateText","setShadow","shadowStroke","shadowFill","backgroundColor","boundsAlignH","boundsAlignV","strokeThickness","wordWrap","wordWrapWidth","maxLines","tabs","fontToComponents","fontStyle","fontVariant","fontWeight","fontSize","componentsToFont","outputText","runWordWrap","lines","lineWidths","maxLineWidth","fontProperties","determineFontProperties","drawnLines","measureLine","measureText","tab","section","snapToCeil","lineHeight","lineSpacing","isCocoonJS","textBaseline","lineCap","lineJoin","linePositionX","linePositionY","ascent","updateLine","updateShadow","strokeText","renderTabLine","updateTexture","snap","lineLength","letter","clearColors","clearFontValues","addColor","addStrokeColor","addFontStyle","addFontWeight","weight","precalculateWordWrap","wrappedLines","advancedWordWrap","basicWordWrap","linesCount","currentLineWidth","words","word","wordWithSpace","wordWidth","newWord","secondPart","spaceLeft","wordWidthWithSpace","updateFont","family","exec","fontFamily","setText","parseList","setTextBounds","pivot","properties","fontPropertiesCache","fontPropertiesCanvas","fontPropertiesContext","baseline","descent","imagedata","idx","parseFloat","textWidth","textHeight","_prevAnchor","_maxWidth","_data","getBitmapFont","_font","_fontSize","_align","_tint","sourceWidth","sourceHeight","scanLine","lastSpace","wrappedWidth","prevCharCode","maxWidth","test","charAt","charData","kerning","xAdvance","cleanText","re","purgeGlyphs","kept","checkImageKey","characterSpacingX","characterSpacingY","characterPerRow","multiLine","autoUpperCase","customSpacingX","customSpacingY","fixedWidth","fontSet","grabData","currentX","currentY","updateFrameData","stamp","ALIGN_LEFT","ALIGN_RIGHT","ALIGN_CENTER","TEXT_SET1","TEXT_SET2","TEXT_SET3","TEXT_SET4","TEXT_SET5","TEXT_SET6","TEXT_SET7","TEXT_SET8","TEXT_SET9","TEXT_SET10","TEXT_SET11","setFixedWidth","lineAlignment","content","characterSpacing","allowLowerCase","buildRetroFontText","getLongestLine","pasteLine","longestLine","removeUnsupportedCharacters","stripCR","newString","aChar","code","updateOffset","diffX","diffY","frames","getFrames","newText","toUpperCase","_hasUpdateAnimation","_updateAnimationCallback","updateAnimation","_updateAnimation","difference","_scroll","def","TilingSprite","tilePosition","physicsElapsed","autoScroll","stopScroll","deviceReadyAt","initialized","desktop","iOSVersion","node","nodeWebkit","electron","ejecta","crosswalk","chromeOS","linux","macOS","windows","windowsPhone","canvasBitBltShift","file","fileSystem","localStorage","worker","css3D","typedArray","vibration","getUserMedia","quirksMode","arora","chromeVersion","epiphany","firefox","firefoxVersion","ie","ieVersion","trident","tridentVersion","edge","mobileSafari","midori","opera","safari","safariVersion","webApp","silk","audioData","ogg","opus","mp3","wav","m4a","webm","dolby","oggVideo","h264Video","mp4Video","webmVideo","vp9Video","hlsVideo","iPhone","iPhone4","iPad","pixelRatio","littleEndian","support32bit","fullscreen","requestFullscreen","cancelFullscreen","fullscreenKeyboard","onInitialized","nonPrimer","readyCheck","_readyCheck","_monitor","_queue","readyState","setTimeout","_initialize","item","_checkOS","vita","kindle","RegExp","$1","_checkFeatures","getItem","error","createElement","WebGLRenderingContext","compatMode","webkitGetUserMedia","mozGetUserMedia","msGetUserMedia","oGetUserMedia","URL","webkitURL","mozURL","msURL","_checkInput","documentElement","maxTouchPoints","msPointerEnabled","pointerEnabled","_checkFullScreenSupport","fs","cfs","Element","_checkBrowser","$3","process","require","versions","_checkVideo","videoElement","canPlayType","_checkAudio","audioElement","major","minor","$2","_checkDevice","Int8Array","Uint8Array","_checkIsLittleEndian","Uint8ClampedArray","Int32Array","_checkIsUint8ClampedImageData","vibrate","webkitVibrate","mozVibrate","msVibrate","elem","createImageData","_checkCSS3D","has3d","el","transforms","webkitTransform","OTransform","msTransform","MozTransform","insertBefore","getComputedStyle","getPropertyValue","canPlayAudio","canPlayVideo","isConsoleOpen","profile","profileEnd","isAndroidStockBrowser","matches","skipPool","display","msTouchAction","overflowHidden","getElementById","overflow","appendChild","parentNode","vendor","prefix","setImageRenderingCrisp","types","msInterpolationMode","setImageRenderingBicubic","forceSetTimeOut","vendors","requestAnimationFrame","cancelAnimationFrame","_isSetTimeOut","_onLoop","_timeOutID","updateSetTimeout","updateRAF","rafTime","timeToCall","clearTimeout","isSetTimeOut","isRAF","PI2","fuzzyEqual","epsilon","fuzzyLessThan","fuzzyGreaterThan","fuzzyCeil","val","fuzzyFloor","average","shear","snapTo","gap","snapToFloor","roundTo","place","pow","floorTo","ceilTo","angleBetween","angleBetweenY","angleBetweenPoints","angleBetweenPointsY","reverseAngle","angleRad","normalizeAngle","maxAdd","minSub","range","wrapValue","isOdd","isEven","minProperty","maxProperty","radians","linearInterpolation","bezierInterpolation","bernstein","catmullRomInterpolation","catmullRom","p0","factorial","res","p3","v0","v1","roundAwayFromZero","sinCosGenerator","sinAmplitude","cosAmplitude","frequency","frq","cosTable","sinTable","distanceSq","distancePow","clampBottom","within","mapLinear","smoothstep","smootherstep","percent","degreeToRadiansFactor","radianToDegreesFactor","degrees","seeds","s0","s1","s2","sow","integer","integerInRange","realInRange","normal","pick","ary","weightedPick","QuadTree","maxObjects","maxLevels","level","objects","nodes","_empty","subWidth","subHeight","populate","populateHandler","insert","retrieve","returnObjects","getHostName","location","hostname","checkDomainName","domain","updateQueryString","redirect","href","separator","getQueryString","parameter","keyValues","search","substring","decodeURI","decodeURIComponent","frameBased","_tweens","_add","easeMap","Power0","Easing","Power1","Power2","Power3","Power4","Linear","None","Quad","Quadratic","Out","Cubic","Quart","Quartic","Quint","Quintic","Sine","Sinusoidal","Expo","Exponential","Circ","Circular","Elastic","Back","Bounce","Quad.easeIn","In","Cubic.easeIn","Quart.easeIn","Quint.easeIn","Sine.easeIn","Expo.easeIn","Circ.easeIn","Elastic.easeIn","Back.easeIn","Bounce.easeIn","Quad.easeOut","Cubic.easeOut","Quart.easeOut","Quint.easeOut","Sine.easeOut","Expo.easeOut","Circ.easeOut","Elastic.easeOut","Back.easeOut","Bounce.easeOut","Quad.easeInOut","InOut","Cubic.easeInOut","Quart.easeInOut","Quint.easeInOut","Sine.easeInOut","Expo.easeInOut","Circ.easeInOut","Elastic.easeInOut","Back.easeInOut","Bounce.easeInOut","_pauseAll","_resumeAll","getAll","pendingDelete","_manager","addTweens","numTweens","isTweening","some","_pause","_resume","pauseAll","resumeAll","manager","timeline","timeScale","repeatCounter","onStart","onLoop","onRepeat","onChildComplete","onComplete","chainedTween","isPaused","_onUpdateCallback","_onUpdateCallbackContext","_pausedTime","_hasStarted","ease","yoyo","Default","TweenData","vEnd","loadValues","complete","updateTweenData","repeatDelay","yoyoDelay","easing","interpolation","repeatAll","chain","startTime","status","PENDING","RUNNING","LOOPED","COMPLETE","generateData","vStart","vStartCache","vEndCache","repeatTotal","inReverse","easingFunction","interpolationFunction","interpolationContext","isFrom","yoyoCounter","ms","fps","blob","reversed","asin","prevTime","_desiredFps","suggestedFps","advancedTiming","fpsMin","fpsMax","msMin","msMax","pauseDuration","timeExpected","Timer","_frameCount","_elapsedAccumulator","_started","_timeLastSecond","_pauseStarted","_justResumed","_timers","timer","autoDestroy","previousDateNow","updateAdvancedTiming","updateTimers","elapsedSince","since","elapsedSecondsSince","running","expired","nextTick","timeCap","_pauseTotal","_now","_marked","_diff","_newTick","MINUTE","SECOND","HALF","QUARTER","repeatCount","tick","TimerEvent","clearEvents","clearPendingEvents","adjustEvents","baseTime","currentFrame","currentAnim","updateIfVisible","isLoaded","_frameData","_anims","_outputFrames","anim","copyFrameData","useNumericIndex","getFrameIndexes","validateFrames","checkFrameName","isPlaying","getAnimation","refreshFrame","getFrame","getFrameByName","_frameIndex","_frames","loopCount","isFinished","_pauseStartTime","_frameDiff","_frameSkip","onUpdate","isReversed","_timeLastFrame","_timeNextFrame","updateCurrentFrame","onAnimationStart$dispatch","reverseOnce","frameId","useLocalFrameIndex","frameIndex","dispatchComplete","onAnimationComplete$dispatch","onAnimationLoop$dispatch","signalUpdate","fromPlay","generateFrameNames","suffix","zeroPad","rotated","rotationDirection","spriteSourceSizeW","spriteSourceSizeH","setTrim","actualWidth","actualHeight","destX","destY","destWidth","destHeight","getRect","_frameNames","getFrameRange","AnimationParser","spriteSheet","frameWidth","frameHeight","frameMax","margin","spacing","row","column","JSONData","json","newFrame","filename","sourceSize","spriteSourceSize","JSONDataPyxel","signature","tileheight","tilewidth","JSONDataHash","XMLData","xml","getElementsByTagName","frameX","frameY","attributes","autoResolveURL","_cache","binary","bitmapFont","_urlMap","_urlResolver","_urlTemp","onSoundUnlock","_cacheMap","TEXTURE","SOUND","PHYSICS","BINARY","BITMAPFONT","JSON","XML","SHADER","RENDER_TEXTURE","addDefaultImage","addMissingImage","addCanvas","removeImage","_resolveURL","addSound","audioTag","decoded","isDecoding","touchLocked","addText","addPhysicsData","format","addTilemap","mapData","addBinary","binaryData","addBitmapFont","atlasData","atlasType","LoaderParser","jsonBitmapFont","xmlBitmapFont","addJSON","addXML","addVideo","isBlob","addShader","addSpriteSheet","addTextureAtlas","TEXTURE_ATLAS_XML_STARLING","TEXTURE_ATLAS_JSON_PYXEL","reloadSound","getSound","reloadSoundComplete","updateSound","decodedSound","isSoundDecoded","isSoundReady","checkKey","checkURL","checkCanvasKey","checkTextureKey","checkSoundKey","checkTextKey","checkPhysicsKey","checkTilemapKey","checkBinaryKey","checkBitmapDataKey","checkBitmapFontKey","checkJSONKey","checkXMLKey","checkVideoKey","checkShaderKey","checkRenderTextureKey","full","getTextureFrame","getSoundData","getText","getPhysicsData","fixtureKey","fixtures","fixture","getTilemapData","getBinary","getBitmapData","getJSON","getXML","getVideo","getShader","getRenderTexture","getBaseTexture","getFrameCount","getFrameByIndex","getPixiTexture","getPixiBaseTexture","BaseTextureCache","getURL","getKeys","removeCanvas","removeFromPixi","removeSound","removeText","removePhysics","removeTilemap","removeBinary","removeBitmapData","removeBitmapFont","removeJSON","removeXML","removeVideo","removeShader","removeRenderTexture","removeSpriteSheet","removeTextureAtlas","atlas","_glTextures","baseURL","isLoading","hasLoaded","preloadSprite","crossOrigin","onLoadStart","onLoadComplete","onPackComplete","onFileStart","onFileComplete","onFileError","useXDomainRequest","_warnedAboutXDomainRequest","enableParallel","maxParallelDownloads","_withSyncPointDepth","_fileList","_flightQueue","_processingHead","_fileLoadStarted","_totalPackCount","_totalFileCount","_loadedPackCount","_loadedFileCount","TEXTURE_ATLAS_JSON_ARRAY","TEXTURE_ATLAS_JSON_HASH","PHYSICS_LIME_CORONA_JSON","PHYSICS_PHASER_JSON","setPreloadSprite","checkKeyExists","getAssetIndex","bestFound","loaded","loading","getAsset","fileIndex","addToFileList","overwrite","extension","syncPoint","currentFile","replaceInFileList","pack","images","urls","script","spritesheet","autoDecode","noAudio","jsonURL","jsonData","audiosprite","loadEvent","asBlob","CSV","TILED_JSON","LIME_CORONA_JSON","textureURL","atlasURL","parseXml","atlasJSONArray","atlasJSONHash","atlasXML","withSyncPoint","addSyncPoint","asset","removeFile","updateProgress","processLoadQueue","finishedLoading","requestUrl","requestObject","progress","syncblock","inflightLimit","processPack","loadFile","abnormal","asyncComplete","errorMessage","packData","transformUrl","xhrLoad","fileComplete","loadImageTag","getAudioURL","usingWebAudio","usingAudioTag","loadAudioTag","fileError","getVideoURL","loadVideoTag","jsonLoadComplete","xmlLoadComplete","csvLoadComplete","onload","onerror","controls","autoplay","videoLoadEvent","canplay","Audio","playThroughEvent","XDomainRequest","xhrLoadWithXDR","xhr","XMLHttpRequest","open","responseType","message","send","timeout","ontimeout","onprogress","videoType","uri","lastIndexOf","audioType","reason","loadNext","responseText","response","decode","language","defer","head","contentType","domparser","DOMParser","parseFromString","ActiveXObject","async","loadXML","totalLoadedFiles","totalLoadedPacks","progressFloat","info","common","getAttribute","letters","kernings","second","finalizeBitmapFont","_face","_lineHeight","_id","_xoffset","_yoffset","_xadvance","_second","_first","_amount","bitmapFontData","autoplayKey","sounds","spritemap","addMarker","connectToMaster","markers","totalDuration","currentTime","durationMS","stopTime","pausedPosition","pausedTime","currentMarker","fadeTween","pendingPlayback","override","allowMultiple","externalNode","masterGainNode","gainNode","_sound","masterGain","createGain","createGainNode","gain","soundHasUnlocked","onDecoded","onPlay","onStop","onMute","onMarkerComplete","_volume","_buffer","_muted","_tempMarker","_tempPosition","_tempVolume","_tempPause","_muteVolume","_tempLoop","_onDecodedEventDispatched","removeMarker","onEndedHandler","onended","isDecoded","loopFull","forceRestart","noteOff","createBufferSource","noteGrainOn","muted","mute","prevMarker","fadeIn","fadeTo","fadeOut","fadeComplete","updateGlobalVolume","globalVolume","onSoundDecode","onVolumeChange","onUnMute","channels","_codeMuted","_unlockSource","_sounds","_watchList","_watching","_watchCallback","_watchContext","disableAudio","disableWebAudio","audioContext","fakeiOSTouchLock","setTouchLock","unlock","noteOn","stopAll","soundData","decodeAudioData","setDecodedCallback","files","playbackState","PLAYING_STATE","FINISHED_STATE","removeByKey","close","dom","minWidth","minHeight","maxHeight","forceLandscape","forcePortrait","incorrectOrientation","_pageAlignHorizontally","_pageAlignVertically","onOrientationChange","enterIncorrectOrientation","leaveIncorrectOrientation","fullScreenTarget","_createdFullScreenTarget","onFullScreenInit","onFullScreenChange","onFullScreenError","screenOrientation","getScreenOrientation","scaleFactorInversed","aspectRatio","sourceAspectRatio","windowConstraints","compatibility","supportsFullScreen","orientationFallback","noMargins","scrollTo","forceMinimumDocumentHeight","canExpandParent","clickTrampoline","_scaleMode","NO_SCALE","_fullScreenScaleMode","parentIsWindow","parentScaleFactor","trackParentInterval","onSizeChange","onResize","onResizeContext","_pendingScaleMode","_fullScreenRestore","_gameSize","_userScaleFactor","_userScaleTrim","_lastUpdate","_updateThrottle","_updateThrottleReset","_parentBounds","_tempBounds","_lastReportedCanvasSize","_lastReportedGameSize","_booted","setupScale","EXACT_FIT","SHOW_ALL","RESIZE","USER_SCALE","compat","_orientationChange","orientationChange","_windowResize","windowResize","_fullScreenChange","fullScreenChange","_fullScreenError","fullScreenError","_gameResumed","setGameSize","FlexGrid","fullScreenScaleMode","getParentBounds","visualBounds","updateDimensions","queueUpdate","currentScaleMode","setUserScale","hScale","vScale","hTrim","vTrim","setResizeCallback","signalSizeChange","setMinMax","prevThrottle","prevWidth","prevHeight","boundsChanged","orientationChanged","updateOrientationState","updateLayout","throttle","updateScalingAndBounds","forceOrientation","classifyOrientation","orientation","previousOrientation","previouslyIncorrect","isLandscape","isPortrait","changed","correctnessChanged","scrollTop","reflowGame","setMaximum","setExactFit","isFullScreen","boundingParent","setShowAll","resetCanvas","reflowCanvas","layoutBounds","clientRect","getBoundingClientRect","parentRect","offsetParent","wc","windowBounds","alignCanvas","parentBounds","canvasBounds","currentEdge","targetEdge","marginLeft","marginRight","marginTop","marginBottom","pageAlignHorizontally","pageAlignVertically","cssWidth","cssHeight","expanding","multiplier","createFullScreenTarget","fsTarget","background","startFullScreen","allowTrampoline","cleanupCreatedTarget","initData","targetElement","ALLOW_KEYBOARD_INPUT","stopFullScreen","prepScreenMode","enteringFullscreen","createdTarget","targetWidth","targetHeight","scaleSprite","letterBox","scaleX1","scaleY1","scaleX2","scaleY2","scaleOnWidth","bmd","columnWidth","renderShadow","currentAlpha","scaleManager","currentColor","soundInfo","cameraInfo","hideIfUp","downColor","upColor","worldX","worldY","spriteInputInfo","justDown","justUp","inputInfo","spriteBounds","filled","rectangle","ropeSegments","self","segment","spriteInfo","spriteCoords","lineInfo","geom","forceType","quadTree","quadtree","Body","NINJA","Ninja","BOX2D","Box2D","renderBody","bodyInfo","renderBodyInfo","box2d","box2dWorld","renderDebugDraw","box2dBody","displayList","box","scrollY","scrollLeft","scrollX","clientTop","clientLeft","cushion","calibrate","coords","getAspectRatio","inLayoutViewport","primaryFallback","screen","mozOrientation","msOrientation","matchMedia","documentBounds","pageXOffset","pageYOffset","treatAsDesktop","clientWidth","clientHeight","offsetWidth","scrollWidth","offsetHeight","scrollHeight","getByKey","randomIndex","removeRandomItem","shuffle","temp","transposeMatrix","sourceRowCount","sourceColCount","rotateMatrix","findClosest","arr","NaN","low","high","numberArray","numberArrayStep","LinkedList","entity","palettes",1,2,3,4,5,6,7,8,9,"PALETTE_ARNE","PALETTE_JMP","PALETTE_CGA","PALETTE_C64","PALETTE_JAPANESE_MACHINE","pixelWidth","pixelHeight","palette","boundsCustom","boundsFull","boundsNone","positionCustom","positionFluid","positionFull","positionNone","scaleCustom","scaleFluid","scaleFull","scaleNone","customWidth","customHeight","customOffsetX","customOffsetY","ratioH","ratioV","layers","createCustomLayer","layer","FlexLayer","createFluidLayer","createFullLayer","createFixedLayer","persist","fitSprite","topLeft","topMiddle","topRight","bottomLeft","bottomMiddle","bottomRight","RGBtoHSL","RGBtoHSV","fromRGBA","toRGBA","hueToColor","HSVtoRGB","color32","getColor","getColor32","RGBtoString","componentToHex","hexToRGB","hex","hexToColor","webToColor","web","tempColor","getRGB","HSVColorWheel","HSLColorWheel","interpolateColor","color1","color2","steps","currentStep","src1","src2","interpolateColorWithRGB","or","og","ob","interpolateRGB","getRandomColor","getWebRGB","getAlpha","getAlphaFloat","getRed","getGreen","getBlue","blendNormal","blendAverage","blendSubtract","blendNegation","blendLinearDodge","blendLinearBurn","blendLinearLight","blendVividLight","blendPinLight","blendHardMix","blendReflect","blendGlow","blendPhoenix","arcade","ninja","chipmunk","matter","CHIPMUNK","MATTERJS","P2","Matter","startSystem","system","enableAABB","gravity","checkCollision","OVERLAP_BIAS","forceX","sortDirection","LEFT_RIGHT","skipQuadTree","_total","SORT_NONE","RIGHT_LEFT","TOP_BOTTOM","BOTTOM_TOP","updateMotion","velocityDelta","computeVelocity","angularVelocity","angularAcceleration","angularDrag","maxAngular","velocity","acceleration","drag","maxVelocity","allowGravity","object1","object2","overlapCallback","processCallback","collideHandler","collide","collideCallback","sortLeftRight","sortRightLeft","sortTopBottom","sortBottomTop","overlapOnly","collideGroupVsSelf","collideSpriteVsSprite","collideSpriteVsGroup","collideSpriteVsTilemapLayer","collideGroupVsGroup","collideGroupVsTilemapLayer","sprite1","sprite2","separate","items","group1","group2","body1","body2","resultX","resultY","separateX","separateY","getOverlapX","maxOverlap","deltaAbsX","embedded","touching","none","overlapX","getOverlapY","deltaAbsY","overlapY","immovable","customSeparateX","v2","bounce","moves","friction","nv1","mass","nv2","avg","customSeparateY","getObjectsUnderPointer","getObjectsAtLocation","callbackArg","moveToObject","maxTime","distanceBetween","moveToPointer","angleToPointer","distanceToPointer","moveToXY","distanceToXY","velocityFromAngle","velocityFromRotation","accelerationFromRotation","accelerateToObject","xSpeedMax","ySpeedMax","accelerateToPointer","accelerateToXY","angleToXY","worldAngleToPointer","allowRotation","preRotation","newVelocity","deltaMax","worldBounce","facing","collideWorldBounds","any","wasTouching","blocked","tilePadding","syncBounds","isMoving","stopVelocityOnCollide","moveTimer","moveDistance","moveDuration","moveTarget","moveEnd","onMoveComplete","movementCallback","movementCallbackContext","_sx","_sy","updateBounds","asx","asy","updateMovement","collided","stopMovement","stopVelocity","check","moveFrom","onFloor","onCeiling","onWall","TilemapCollision","TILE_BIAS","tilemapLayer","getTiles","separateTile","tile","tilemapLayerOffsetX","tilemapLayerOffsetY","collisionCallback","collisionCallbackContext","faceLeft","faceRight","faceTop","faceBottom","tileCheckX","tileCheckY","collideRight","collideLeft","processTileSeparationX","collideDown","collideUp","processTileSeparationY","Spring","broadphase","SAPBroadphase","useElapsedTime","materials","InversePointProxy","walls","onBodyAdded","onBodyRemoved","onSpringAdded","onSpringRemoved","onConstraintAdded","onConstraintRemoved","onContactMaterialAdded","onContactMaterialRemoved","postBroadphaseCallback","onBeginContact","onEndContact","mpx","mpxi","pxm","pxmi","on","beginContactHandler","endContactHandler","collisionGroups","nothingCollisionGroup","CollisionGroup","boundsCollisionGroup","everythingCollisionGroup","boundsCollidesWith","_toRemove","_collisionGroupID","_boundsLeft","_boundsRight","_boundsTop","_boundsBottom","_boundsOwnGroup","removeBodyNextStep","removeBody","setImpactEvents","impactHandler","off","setPostBroadphaseCallback","postBroadphaseHandler","pairs","bodyA","bodyB","_bodyCallbacks","_bodyCallbackContext","shapeA","shapeB","_groupCallbacks","collisionGroup","_groupCallbackContext","contactEquations","setCollisionGroup","setWorldMaterial","material","shapes","updateBoundsCollisionGroup","setupWall","wall","addShape","Plane","addBody","fixedStepTime","solver","equations","removeAllEquations","cs","constraints","removeConstraint","bodies","springs","removeSpring","cms","contactMaterials","removeContactMaterial","impactCallback","addSpring","spring","RotationalSpring","createDistanceConstraint","localAnchorA","localAnchorB","maxForce","getBody","addConstraint","DistanceConstraint","createGearConstraint","ratio","GearConstraint","createRevoluteConstraint","pivotA","pivotB","worldPivot","RevoluteConstraint","createLockConstraint","LockConstraint","createPrismaticConstraint","lockRotation","anchorA","anchorB","PrismaticConstraint","constraint","addContactMaterial","getContactMaterial","materialA","materialB","setMaterial","createMaterial","Material","createContactMaterial","contact","ContactMaterial","getBodies","getSprings","getConstraints","worldPoint","precision","filterStatic","physicsPosition","query","STATIC","toJSON","createCollisionGroup","bitmask","collisionMask","createSpring","restLength","stiffness","damping","worldA","worldB","localA","localB","createRotationalSpring","restAngle","createBody","addPolygon","createParticle","convertCollisionObjects","map","collision","polyline","clearTilemapLayerBodies","getLayer","convertTilemap","optimize","collides","getTileRight","addRectangle","defaultContactMaterial","restitution","applySpringForces","applyDamping","applyGravity","solveConstraints","emitImpactEvent","sleepMode","FixtureList","rawList","namedFixtures","groupedFixtures","allFixtures","setCategory","bit","setter","getFixtures","setMask","setSensor","sensor","getFixtureByKey","getGroup","groupID","_ref","_results","callee","PointProxy","collidesWith","removeNextStep","debugBody","_collideWorldBounds","setRectangleFromSprite","createBodyCallback","createGroupCallback","getCollisionMask","updateCollisionMask","clearCollision","clearGroup","clearMask","removeCollisionGroup","clearCallback","adjustCenterOfMass","shapeChanged","getVelocityAtPoint","relativePoint","applyImpulse","impulse","applyImpulseLocal","localX","localY","applyForce","setZeroForce","setZeroRotation","setZeroVelocity","setZeroDamping","angularDamping","toLocalFrame","toWorldFrame","rotateLeft","rotateRight","moveForward","moveBackward","thrust","thrustLeft","thrustRight","moveLeft","moveRight","fixedRotation","updateSpriteTransform","resetDamping","resetMass","clearShapes","removeShape","addCircle","Box","addPlane","addParticle","Particle","addLine","addCapsule","Capsule","fromPolygon","setCircle","setRectangle","addPhaserPolygon","createdFixtures","fixtureData","shapesOfFixture","addFixture","aabbNeedsUpdate","generatedShapes","categoryBits","maskBits","isSensor","vec2","polygons","cm","Convex","sub","centerOfMass","updateTriangles","updateCenterOfMass","updateBoundingRadius","loadPolygon","DYNAMIC","KINEMATIC","allowSleep","angularForce","inertia","updateMassProperties","sleepSpeedLimit","BodyDebug","settings","defaultSettings","pixelsPerLengthUnit","debugPolygons","ppu","lw","vrot","_j","_ref1","randomPastelHex","drawCapsule","drawPlane","drawLine","drawRectangle","drawConvex","x0","drawPath","lastx","lasty","diagMargin","diagSize","maxLength","xd","yd","mix","rgbToHex","worldAnchorA","worldAnchorB","LinearSpring","localOffsetB","localAngleB","localAxisA","disableRotationalLock","localPivotA","localPivotB","ImageCollection","firstgid","imageWidth","imageHeight","imageMargin","imageSpacing","containsImageIndex","imageIndex","gid","Tile","flipped","scanned","setCollisionCallback","setCollision","resetCollision","isInteresting","faces","TilemapParser","version","widthInPixels","heightInPixels","tilesets","imagecollections","tiles","collideIndexes","currentLayer","debugMap","_tempA","NORTH","EAST","SOUTH","WEST","setTileSize","createBlankLayer","addTilesetImage","tileset","tileMargin","tileSpacing","getTilesetIndex","setImage","newSet","Tileset","countX","countY","createFromObjects","CustomClass","adjustY","found","createFromTiles","replacements","customClass","lh","createLayer","pixiTest","getLayerIndex","TilemapLayerGL","indexes","getImageIndex","setTileIndexCallback","setTileLocationCallback","recalculate","setCollisionByIndex","calculateFaces","setCollisionBetween","setCollisionByExclusion","setPreventRecalculate","preventingRecalculate","needToRecalculate","above","below","getTileAbove","getTileBelow","getTileLeft","setLayer","hasTile","removeTile","removeTileWorldXY","putTile","putTileWorldXY","searchTileIndex","skip","getTile","nonNull","getTileWorldXY","paste","tileblock","tileA","tileB","swapHandler","removeAllLayers","dump","txt","renderSettings","enableScrollDelta","overdrawRatio","copyCanvas","debugSettings","missingImageFill","debuggedTileOverfill","forceFullRedraw","debugAlpha","facingEdgeStroke","collidingTileOverfill","scrollFactorX","scrollFactorY","rayStepRate","_wrap","_mc","renderWidth","renderHeight","_scrollX","_scrollY","ensureSharedCopyCanvas","sharedCopyCanvas","requiresUpdate","resizeWorld","_fixX","_unfixX","_fixY","_unfixY","getTileX","getTileY","getTileXY","getRayCastTiles","interestingFace","coord","fetchAll","tw","th","wy","wx","resolveTileset","tileIndex","setIndex","containsTileIndex","resetTilesetCache","setScale","xScale","yScale","shiftCanvas","copyW","copyH","copyContext","renderRegion","lastAlpha","xmax","ymax","baseX","baseY","normStartX","normStartY","tileColor","renderDeltaScroll","shiftX","shiftY","renderW","renderH","trueTop","trueBottom","trueLeft","trueRight","renderFull","redrawAll","mc","renderDebug","INSERT_NULL","getEmptyData","parseCSV","parseTiledJSON","fields","sliced","curl","compression","encoding","binaryString","atob","bytes","opacity","flippedVal","curi","tileproperties","tileProperties","updateTileData","imagewidth","imageheight","newCollection","ti","curo","polygon","ellipse","sid","drawCoords","coordIndex","setSpacing","rowCount","colCount","autoScale","scaleData","_s","autoAlpha","alphaData","_a","onEmit","setAlphaData","setScaleData","emitters","ID","minParticleSpeed","maxParticleSpeed","minParticleScale","maxParticleScale","minRotation","maxRotation","minParticleAlpha","maxParticleAlpha","particleClass","particleDrag","particleAnchor","emitX","emitY","particleBringToTop","particleSendToBack","_minParticleScale","_maxParticleScale","_quantity","_timer","_counter","_flowQuantity","_flowTotal","_explode","emitParticle","makeParticles","particle","rndKey","rndFrame","explode","flow","forceQuantity","setXSpeed","setYSpeed","setRotation","setAlpha","rate","tweenData","at","bullets","autoExpandBulletsGroup","autofire","shots","fireLimit","fireRate","fireRateVariance","fireFrom","fireAngle","bulletInheritSpriteSpeed","bulletAnimation","bulletFrameRandom","bulletFrameCycle","bulletWorldWrap","bulletWorldWrapPadding","bulletAngleOffset","bulletAngleVariance","bulletSpeed","bulletSpeedVariance","bulletLifespan","bulletKillDistance","bulletGravity","bulletRotateToVelocity","bulletKey","bulletFrame","_bulletClass","Bullet","_bulletCollideWorldBounds","_bulletKillType","KILL_WORLD_BOUNDS","customBody","bulletBounds","bulletFrames","bulletFrameIndex","anims","onFire","onKill","onFireLimit","trackedSprite","trackedPointer","trackRotation","trackOffset","_nextFire","KILL_NEVER","KILL_LIFESPAN","KILL_DISTANCE","KILL_WEAPON_BOUNDS","KILL_CAMERA_BOUNDS","KILL_STATIC_BOUNDS","killAll","resetShots","newLimit","fire","trackSprite","trackPointer","moveX","moveY","bullet","bulletManager","killType","bulletKillType","killDistance","rotateToVelocity","bodyDirty","bulletCollideWorldBounds","fireAtPointer","fireAtSprite","fireAtXY","setBulletBodyOffset","setBulletFrames","cycle","addBulletAnimation","debugBodies","animation","meshData","_creature","CreatureAnimation","CreatureManager","timeDelta","creatureBoundsMin","creatureBoundsMax","target_creature","total_num_pts","uvs","global_indices","updateRenderData","global_pts","global_uvs","AddAnimation","SetActiveAnimationName","Update","updateData","_initWebGL","_vertexBuffer","_indexBuffer","_uvBuffer","_colorBuffer","DYNAMIC_DRAW","stripShader","_renderCreature","aTextureCoord","activeTexture","TEXTURE0","_dirty","bindTexture","TEXTURE_2D","bufferSubData","TRIANGLES","updateCreatureBounds","ComputeBoundaryMinMax","boundary_min","boundary_max","read_pts","render_pts","read_uvs","pt_index","uv_index","write_pt_index","setAnimation","SetIsPlaying","RunAtTime","GetIsPlaying","should_loop","SetShouldLoop","onAccess","onError","onTimeout","videoStream","isStreaming","retryLimit","retry","retryInterval","_retryID","_pending","_autoplay","_endCallback","_playCallback","_video","createVideoFromBlob","videoWidth","videoHeight","createVideoFromURL","forceLoaded","snapshot","connectToMediaStream","stream","startMediaStream","captureAudio","removeVideoElement","setAttribute","getUserMediaTimeout","getUserMediaSuccess","getUserMediaError","mozSrcObject","createObjectURL","onloadeddata","checkStream","checkVideoProgress","change","playbackRate","setPause","setResume","playHandler","getTracks","track","playing","ended","changeSource","grab","hasChildNodes","firstChild","removeAttribute","emptyTexture","DisplayObject","tempMatrix","TextureSilentFail","exports","module","define","amd"],"mappings":"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"} \ No newline at end of file +{"version":3,"sources":["phaser-creature.js"],"names":["WheelEventProxy","scaleFactor","deltaMode","this","_scaleFactor","_deltaMode","originalEvent","root","Phaser","VERSION","GAMES","AUTO","CANVAS","WEBGL","HEADLESS","NONE","LEFT","RIGHT","UP","DOWN","SPRITE","BUTTON","IMAGE","GRAPHICS","TEXT","TILESPRITE","BITMAPTEXT","GROUP","RENDERTEXTURE","TILEMAP","TILEMAPLAYER","EMITTER","POLYGON","BITMAPDATA","CANVAS_FILTER","WEBGL_FILTER","ELLIPSE","SPRITEBATCH","RETROFONT","POINTER","ROPE","CIRCLE","RECTANGLE","LINE","MATRIX","POINT","ROUNDEDRECTANGLE","CREATURE","VIDEO","PENDING_ATLAS","HORIZONTAL","VERTICAL","LANDSCAPE","PORTRAIT","ANGLE_UP","ANGLE_DOWN","ANGLE_LEFT","ANGLE_RIGHT","ANGLE_NORTH_EAST","ANGLE_NORTH_WEST","ANGLE_SOUTH_EAST","ANGLE_SOUTH_WEST","TOP_LEFT","TOP_CENTER","TOP_RIGHT","LEFT_TOP","LEFT_CENTER","LEFT_BOTTOM","CENTER","RIGHT_TOP","RIGHT_CENTER","RIGHT_BOTTOM","BOTTOM_LEFT","BOTTOM_CENTER","BOTTOM_RIGHT","blendModes","NORMAL","ADD","MULTIPLY","SCREEN","OVERLAY","DARKEN","LIGHTEN","COLOR_DODGE","COLOR_BURN","HARD_LIGHT","SOFT_LIGHT","DIFFERENCE","EXCLUSION","HUE","SATURATION","COLOR","LUMINOSITY","scaleModes","DEFAULT","LINEAR","NEAREST","PIXI","Math","trunc","x","ceil","floor","Function","prototype","bind","slice","Array","thisArg","bound","args","boundArgs","concat","call","arguments","target","apply","TypeError","F","proto","isArray","arg","Object","toString","forEach","fun","t","len","length","i","window","Uint32Array","CheapArray","type","constructor","console","log","assert","warn","Utils","reverseString","string","split","reverse","join","getProperty","obj","prop","parts","last","pop","l","current","setProperty","value","chanceRoll","chance","undefined","random","randomChoice","choice1","choice2","parseDimension","size","dimension","f","px","substr","parseInt","innerWidth","innerHeight","pad","str","dir","padlen","right","left","isPlainObject","nodeType","hasOwnProperty","e","extend","options","name","src","copy","copyIsArray","clone","deep","mixinPrototype","mixin","replace","mixinKeys","keys","key","get","set","defineProperty","from","to","o","childNodes","cloneNode","Circle","y","diameter","_diameter","_radius","circumference","PI","out","Point","u","r","cos","sin","radius","getBounds","Rectangle","setTo","copyFrom","source","copyTo","dest","distance","round","output","contains","circumferencePoint","angle","asDegrees","offset","dx","dy","offsetPoint","point","a","top","bottom","equals","b","intersects","degToRad","intersectsRectangle","c","cx","abs","halfWidth","xDist","cy","halfHeight","yDist","xCornerDist","yCornerDist","xCornerDistSq","yCornerDistSq","maxCornerDistSq","Ellipse","width","height","p","sqrt","normx","normy","Line","x1","y1","x2","y2","start","end","fromSprite","startSprite","endSprite","useCenter","center","fromAngle","rotate","rotateAround","line","asSegment","result","intersectsPoints","reflect","midPoint","centerOn","tx","ty","add","pointOnLine","pointOnSegment","xMin","min","xMax","max","yMin","yMax","coordinatesOnLine","stepRate","results","sx","sy","err","push","e2","atan2","wrap","a1","a2","b1","b2","c1","c2","denom","uc","ua","ub","rect","bx1","by1","bx2","by2","normalAngle","Matrix","d","fromArray","array","matrix","toArray","transpose","Float32Array","pos","newPos","applyInverse","id","translate","scale","tx1","append","d1","identity","identityMatrix","invert","subtract","multiply","divide","clampX","clamp","clampY","radToDeg","getMagnitude","getMagnitudeSq","setMagnitude","magnitude","normalize","isZero","m","dot","cross","perp","rperp","normalRightHand","negative","multiplyAdd","s","interpolate","project","amt","projectUnit","centroid","points","Error","pointslength","parse","xProp","yProp","Polygon","area","_points","closed","flattened","toNumberArray","flatten","inside","j","ix","iy","jx","jy","y0","Number","MAX_VALUE","calculateArea","p1","p2","avgHeight","centerX","centerY","floorAll","ceilAll","inflate","resize","containsRect","intersection","intersectsRaw","tolerance","union","randomX","randomY","getPoint","position","empty","inflatePoint","containsRaw","rx","ry","rw","rh","containsPoint","volume","sameDimensions","aabb","NEGATIVE_INFINITY","POSITIVE_INFINITY","EmptyRectangle","RoundedRectangle","Camera","game","world","view","bounds","deadzone","visible","roundPx","atLimit","displayObject","totalInView","lerp","onShakeComplete","Signal","onFlashComplete","onFadeComplete","fx","_targetPosition","_edge","_position","_shake","intensity","duration","horizontal","vertical","shakeBounds","_fxDuration","_fxType","FOLLOW_LOCKON","FOLLOW_PLATFORMER","FOLLOW_TOPDOWN","FOLLOW_TOPDOWN_TIGHT","SHAKE_BOTH","SHAKE_HORIZONTAL","SHAKE_VERTICAL","ENABLE_FX","boot","camera","Graphics","stage","addChild","preUpdate","follow","style","lerpX","lerpY","helper","w","h","unfollow","focusOn","setPosition","focusOnXY","shake","force","direction","flash","color","clear","beginFill","drawRect","endFill","alpha","fade","update","updateFX","updateShake","checkBounds","time","elapsedMS","dispatch","rnd","frac","updateTarget","worldPosition","math","linear","setBoundsToWorld","vx","vw","vy","vh","setSize","reset","resetFX","State","make","cache","input","load","sound","state","tweens","particles","physics","init","preload","loadUpdate","loadRender","create","preRender","render","paused","resumed","pauseUpdate","shutdown","StateManager","pendingState","states","_pendingState","_clearWorld","_clearCache","_created","_args","onStateChange","onInitCallback","onPreloadCallback","onCreateCallback","onUpdateCallback","onRenderCallback","onResizeCallback","onPreRenderCallback","onLoadUpdateCallback","onLoadRenderCallback","onPausedCallback","onResumedCallback","onPauseUpdateCallback","onShutDownCallback","onPause","pause","onResume","resume","autoStart","newState","isBooted","remove","callbackContext","clearWorld","clearCache","checkState","splice","restart","dummy","previousStateKey","clearCurrentState","setCurrentState","totalQueuedFiles","totalQueuedPacks","loadComplete","removeAll","debug","destroy","link","unlink","_kickstart","getCurrentState","elapsedTime","renderType","context","save","setTransform","restore","_bindings","_prevParams","memorize","_shouldPropagate","active","_boundDispatch","validateListener","listener","fnName","_registerListener","isOnce","listenerContext","priority","binding","prevIndex","_indexOfListener","SignalBinding","_addBinding","execute","n","_priority","cur","_listener","has","addOnce","_destroy","getNumListeners","halt","bindings","paramsArr","forget","dispose","_this","signal","_isOnce","_signal","callCount","params","handlerReturn","detach","isBound","getListener","getSignal","Filter","uniforms","fragmentSrc","passes","shaders","dirty","padding","prevPoint","Date","resolution","mouse","date","getFullYear","getMonth","getDate","getHours","getMinutes","getSeconds","sampleRate","iChannel0","textureData","repeat","iChannel1","iChannel2","iChannel3","setResolution","pointer","toFixed","totalElapsedSeconds","addToWorld","anchorX","anchorY","image","anchor","filters","Plugin","parent","hasPreUpdate","hasUpdate","hasPostUpdate","hasRender","hasPostRender","postRender","PluginManager","plugins","_len","_i","plugin","postUpdate","Stage","DisplayObjectContainer","disableVisibilityChange","exists","worldTransform","currentRenderOrderID","_hiddenVar","_onChange","_bgColor","g","rgba","transparent","config","parseConfig","setBackgroundColor","DOM","getOffset","canvas","Canvas","setUserSelect","setTouchAction","checkVisibility","children","updateTransform","worldAlpha","document","webkitHidden","mozHidden","msHidden","hidden","event","visibilityChange","addEventListener","onblur","onfocus","onpagehide","onpageshow","device","cocoonJSApp","CocoonJS","App","onSuspended","onActivated","focusLoss","focusGain","gamePaused","gameResumed","Color","valueToColor","updateColor","removeEventListener","Group","addToStage","enableBody","physicsBodyType","Physics","ARCADE","z","physicsType","alive","ignoreDestroy","pendingDestroy","classType","Sprite","cursor","inputEnableChildren","onChildInputDown","onChildInputUp","onChildInputOver","onChildInputOut","enableBodyDebug","physicsSortDirection","onDestroy","cursorIndex","fixedToCamera","cameraOffset","hash","_sortProperty","RETURN_NONE","RETURN_TOTAL","RETURN_CHILD","SORT_ASCENDING","SORT_DESCENDING","child","silent","index","body","removeFromHash","addChildAt","updateZ","enable","addToHash","inputEnabled","events","onAddedToGroup$dispatch","addAt","indexOf","addMultiple","moveAll","getAt","getChildAt","frame","createMultiple","quantity","singleKey","singleFrame","align","rows","columns","cellWidth","cellHeight","alignIn","resetCursor","next","previous","swap","child1","child2","swapChildren","bringToTop","getIndex","sendToBack","moveUp","moveDown","xy","getByName","oldChild","newChild","removeChild","hasProperty","operation","checkProperty","checkAlive","checkVisible","setAll","setAllChildren","checkAll","addAll","property","amount","subAll","multiplyAll","divideAll","callAllExists","callback","existsValue","callbackFromArray","callAll","method","methodLength","contextLength","renderOrderID","filter","predicate","checkExists","ArraySet","forEachExists","iterate","forEachAlive","forEachDead","sort","order","ascendingSortHandler","descendingSortHandler","customSort","sortHandler","returnType","total","getFirstExists","createIfNull","resetChild","getFirstAlive","getFirstDead","loadTexture","getTop","getBottom","getClosestTo","object","tempDistance","getFurthestFrom","countLiving","countDead","getRandom","startIndex","ArrayUtils","getRandomItem","destroyPhase","onRemovedFromGroup$dispatch","removed","group","destroyTexture","removeBetween","endIndex","destroyChildren","soft","rotation","World","_definedSize","_width","_height","stateChange","setBounds","sprite","useBounds","_currentBounds","between","Game","renderer","antialias","physicsConfig","preserveDrawingBuffer","clearBeforeRender","isRunning","raf","net","Device","lockRender","stepping","pendingStep","stepCount","onBlur","onFocus","_paused","_codePaused","currentUpdateID","updatesThisFrame","_deltaTime","_lastCount","_spiraling","fpsProblemNotifier","forceSingleUpdate","_nextFpsNotification","enableDebug","RandomDataGenerator","now","whenReady","seed","ScaleManager","setUpRenderer","GameObjectFactory","GameObjectCreator","Cache","Loader","Time","TweenManager","Input","SoundManager","Particles","Create","Net","Debug","showDebugHeader","RequestAnimationFrame","stopFocus","focus","hideBanner","v","webAudio","chrome","webGL","CanvasRenderer","WebGLRenderer","contextLost","contextRestored","cocoonJS","screencanvas","smoothed","addToDOM","preventDefault","initContext","clearGLTextures","updateLogic","desiredFpsMult","updateRender","slowMotion","desiredFps","slowStep","elapsed","count","refresh","timeStep","enableStep","disableStep","step","stop","removeFromDOM","defaultRenderer","muteOnPause","setMute","cordova","iOS","unsetMute","hitCanvas","hitContext","moveCallbacks","customCandidateHandler","customCandidateHandlerContext","pollRate","enabled","multiInputOverride","MOUSE_TOUCH_COMBINE","speed","circle","maxPointers","tapRate","doubleTapRate","holdRate","justPressedRate","justReleasedRate","recordPointerHistory","recordRate","recordLimit","pointer1","pointer2","pointer3","pointer4","pointer5","pointer6","pointer7","pointer8","pointer9","pointer10","pointers","activePointer","mousePointer","keyboard","touch","mspointer","gamepad","resetLocked","onDown","onUp","onTap","onHold","minPriorityID","interactiveItems","_localPoint","_pollCounter","_oldPosition","_x","_y","MOUSE_OVERRIDES_TOUCH","TOUCH_OVERRIDES_MOUSE","MAX_POINTERS","Pointer","PointerMode","CURSOR","addPointer","Mouse","Touch","MSPointer","Keyboard","Gamepad","CanvasPool","getContext","_onClickTrampoline","onClickTrampoline","setInteractiveCandidateHandler","addMoveCallback","deleteMoveCallback","TOUCH","hard","resetSpeed","startPointer","countActivePointers","updatePointer","identifier","move","stopPointer","limit","getPointer","isActive","getPointerFromIdentifier","getPointerFromId","pointerId","getLocalPosition","wt","hitTest","localPoint","worldVisible","hitArea","TileSprite","texture","graphicsData","data","fill","shape","processClickTrampolines","mouseDownCallback","mouseUpCallback","mouseOutCallback","mouseOverCallback","mouseWheelCallback","capture","button","wheelDelta","locked","stopOnGameOut","pointerLock","_onMouseDown","_onMouseMove","_onMouseUp","_onMouseOut","_onMouseOver","_onMouseWheel","_wheelEvent","NO_BUTTON","LEFT_BUTTON","MIDDLE_BUTTON","RIGHT_BUTTON","BACK_BUTTON","FORWARD_BUTTON","WHEEL_UP","WHEEL_DOWN","android","onMouseDown","onMouseMove","onMouseUp","_onMouseUpGlobal","onMouseUpGlobal","_onMouseOutGlobal","onMouseOutGlobal","onMouseOut","onMouseOver","onMouseWheel","wheelEvent","mouseMoveCallback","withinGame","leftButton","rightButton","bindEvent","deltaY","requestPointerLock","element","mozRequestPointerLock","webkitRequestPointerLock","_pointerLockChange","pointerLockChange","pointerLockElement","mozPointerLockElement","webkitPointerLockElement","releasePointerLock","exitPointerLock","mozExitPointerLock","webkitExitPointerLock","_stubsGenerated","makeBinder","defineProperties","detail","deltaX","wheelDeltaX","deltaZ","pointerDownCallback","pointerMoveCallback","pointerUpCallback","_onMSPointerDown","_onMSPointerMove","_onMSPointerUp","_onMSPointerUpGlobal","_onMSPointerOut","_onMSPointerOver","onPointerDown","onPointerMove","onPointerUp","onPointerUpGlobal","onPointerOut","onPointerOver","pointerType","DeviceButton","buttonCode","isDown","isUp","timeDown","timeUp","repeats","altKey","shiftKey","ctrlKey","onFloat","padFloat","justPressed","justReleased","pointerMode","CONTACT","middleButton","backButton","forwardButton","eraserButton","ERASER_BUTTON","_holdSent","_history","_nextDrop","_stateReset","clientX","clientY","pageX","pageY","screenX","screenY","rawMovementX","rawMovementY","movementX","movementY","isMouse","previousTapTime","totalTouches","msSinceLastClick","targetObject","interactiveCandidates","positionDown","positionUp","_clickTrampolines","_trampolineTargetObject","resetButtons","processButtonsDown","buttons","processButtonsUp","updateButtons","down","toLowerCase","totalActivePointers","_touchedHandler","processInteractiveObjects","shift","fromClick","pollLocked","mozMovementX","webkitMovementX","mozMovementY","webkitMovementY","isDragged","highestRenderOrderID","highestInputPriorityID","candidateTarget","currentNode","first","checked","validForInput","checkPointerDown","checkPointerOver","priorityID","swapTarget","newTarget","_pointerOutHandler","_pointerOverHandler","leave","currentPointers","addClickTrampoline","callbackArgs","trampolines","trampoline","_releasedHandler","resetMovement","touchLockCallbacks","touchStartCallback","touchMoveCallback","touchEndCallback","touchEnterCallback","touchLeaveCallback","touchCancelCallback","_onTouchStart","_onTouchMove","_onTouchEnd","_onTouchEnter","_onTouchLeave","_onTouchCancel","onTouchStart","onTouchMove","onTouchEnd","onTouchEnter","onTouchLeave","onTouchCancel","consumeDocumentTouches","_documentTouchMove","addTouchLockCallback","onEnd","removeTouchLockCallback","cb","changedTouches","InputHandler","useHandCursor","_setHandCursor","allowHorizontalDrag","allowVerticalDrag","snapOffset","snapOnDrag","snapOnRelease","snapX","snapY","snapOffsetX","snapOffsetY","pixelPerfectOver","pixelPerfectClick","pixelPerfectAlpha","draggable","boundsRect","boundsSprite","scaleLayer","dragOffset","dragFromCenter","dragStopBlocksInputUp","dragStartPoint","dragDistanceThreshold","dragTimeThreshold","downPoint","snapPoint","_dragPoint","_dragPhase","_pendingDrag","_dragTimePass","_dragDistancePass","_wasEnabled","_tempPoint","_pointerData","camX","camY","isOver","isOut","timeOver","timeOut","downDuration","onAddedToGroup","addedToGroup","onRemovedFromGroup","removedFromGroup","flagged","highestID","highestRenderID","includePixelPerfect","ignoreChildInput","isPixelPerfect","pointerX","pointerY","pointerDown","pointerUp","pointerTimeDown","pointerTimeUp","pointerOver","pointerOut","pointerTimeOver","pointerTimeOut","pointerDragged","fastTest","worldScale","checkPixel","baseTexture","trim","crop","_dx","_dy","clearRect","drawImage","rgb","getImageData","startDrag","_draggedPointerID","updateDrag","sendEvent","onInputOver$dispatch","onInputOut$dispatch","onInputDown$dispatch","dragTimeElapsed","onInputUp$dispatch","stopDrag","fromStart","globalToLocalX","py","globalToLocalY","checkBoundsRect","checkBoundsSprite","onDragUpdate","justOver","delay","overDuration","justOut","enableDrag","lockCenter","pixelPerfect","alphaThreshold","disableDrag","onDragStart$dispatch","grid","boundsFluid","scaleFluidInversed","onDragStop$dispatch","setDragLock","allowHorizontal","allowVertical","enableSnap","onDrag","onRelease","disableSnap","offsetX","offsetY","_gamepadIndexMap","_rawPads","_active","_gamepadSupportAvailable","navigator","webkitGetGamepads","webkitGamepads","userAgent","getGamepads","_prevRawGamepadTypes","_prevTimestamps","onConnectCallback","onDisconnectCallback","onDownCallback","onUpCallback","onAxisCallback","onFloatCallback","_ongamepadconnected","_gamepaddisconnected","_gamepads","SinglePad","addCallbacks","callbacks","onConnect","onDisconnect","onAxis","_onGamepadConnected","onGamepadConnected","_onGamepadDisconnected","onGamepadDisconnected","newPad","connect","removedPad","disconnect","_pollGamepads","pad1","pollStatus","pad2","pad3","pad4","rawGamepads","gamepadsChanged","_rawPad","singlePad","validConnections","rawIndices","padIndices","connected","k","rawPad","setDeadZones","deadZone","BUTTON_0","BUTTON_1","BUTTON_2","BUTTON_3","BUTTON_4","BUTTON_5","BUTTON_6","BUTTON_7","BUTTON_8","BUTTON_9","BUTTON_10","BUTTON_11","BUTTON_12","BUTTON_13","BUTTON_14","BUTTON_15","AXIS_0","AXIS_1","AXIS_2","AXIS_3","AXIS_4","AXIS_5","AXIS_6","AXIS_7","AXIS_8","AXIS_9","XBOX360_A","XBOX360_B","XBOX360_X","XBOX360_Y","XBOX360_LEFT_BUMPER","XBOX360_RIGHT_BUMPER","XBOX360_LEFT_TRIGGER","XBOX360_RIGHT_TRIGGER","XBOX360_BACK","XBOX360_START","XBOX360_STICK_LEFT_BUTTON","XBOX360_STICK_RIGHT_BUTTON","XBOX360_DPAD_LEFT","XBOX360_DPAD_RIGHT","XBOX360_DPAD_UP","XBOX360_DPAD_DOWN","XBOX360_STICK_LEFT_X","XBOX360_STICK_LEFT_Y","XBOX360_STICK_RIGHT_X","XBOX360_STICK_RIGHT_Y","PS3XC_X","PS3XC_CIRCLE","PS3XC_SQUARE","PS3XC_TRIANGLE","PS3XC_L1","PS3XC_R1","PS3XC_L2","PS3XC_R2","PS3XC_SELECT","PS3XC_START","PS3XC_STICK_LEFT_BUTTON","PS3XC_STICK_RIGHT_BUTTON","PS3XC_DPAD_UP","PS3XC_DPAD_DOWN","PS3XC_DPAD_LEFT","PS3XC_DPAD_RIGHT","PS3XC_STICK_LEFT_X","PS3XC_STICK_LEFT_Y","PS3XC_STICK_RIGHT_X","PS3XC_STICK_RIGHT_Y","padParent","_padParent","_prevTimestamp","_buttons","_buttonsLen","_axes","_axesLen","getButton","timestamp","rawButtonVal","isNaN","processButtonDown","processButtonUp","processButtonFloat","axes","processAxisChange","triggerCallback","disconnectingIndex","axis","axisCode","buttonValue","Key","keycode","_enabled","keyCode","onHoldCallback","onHoldContext","_justDown","_justUp","processKeyDown","processKeyUp","upDuration","pressEvent","onPressCallback","_keys","_capture","_onKeyDown","_onKeyPress","_onKeyUp","_k","onPress","addKey","addKeyCapture","addKeys","removeKey","removeKeyCapture","createCursorKeys","up","KeyCode","processKeyPress","clearCaptures","String","fromCharCode","charCode","A","charCodeAt","B","C","D","E","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z","ZERO","ONE","TWO","THREE","FOUR","FIVE","SIX","SEVEN","EIGHT","NINE","NUMPAD_0","NUMPAD_1","NUMPAD_2","NUMPAD_3","NUMPAD_4","NUMPAD_5","NUMPAD_6","NUMPAD_7","NUMPAD_8","NUMPAD_9","NUMPAD_MULTIPLY","NUMPAD_ADD","NUMPAD_ENTER","NUMPAD_SUBTRACT","NUMPAD_DECIMAL","NUMPAD_DIVIDE","F1","F2","F3","F4","F5","F6","F7","F8","F9","F10","F11","F12","F13","F14","F15","COLON","EQUALS","COMMA","UNDERSCORE","PERIOD","QUESTION_MARK","TILDE","OPEN_BRACKET","BACKWARD_SLASH","CLOSED_BRACKET","QUOTES","BACKSPACE","TAB","CLEAR","ENTER","SHIFT","CONTROL","ALT","CAPS_LOCK","ESC","SPACEBAR","PAGE_UP","PAGE_DOWN","END","HOME","PLUS","MINUS","INSERT","DELETE","HELP","NUM_LOCK","match","Component","Angle","wrapAngle","Animation","play","frameRate","loop","killOnComplete","animations","AutoCull","autoCull","inCamera","checkWorldBounds","_bounds","Bounds","container","alignTo","BringToTop","Core","install","components","previousPosition","Events","PhysicsBody","AnimationManager","LoadTexture","FixedToCamera","previousRotation","fresh","_exists","P2JS","removeFromWorld","customRender","Crop","cropRect","_crop","updateCrop","resetFrame","_frame","cw","ch","_updateUvs","Delta","Destroy","onDestroy$dispatch","removeFrom","Video","onChangeSource","resizeFrame","BitmapText","_glyphs","mask","renderable","transformCallback","transformCallbackContext","filterArea","_mask","_destroyCachedSprite","_parent","_onDestroy","_onAddedToGroup","_onRemovedFromGroup","_onRemovedFromWorld","_onKilled","_onRevived","_onEnterBounds","_onOutOfBounds","_onInputOver","_onInputOut","_onInputDown","_onInputUp","_onDragStart","_onDragUpdate","_onDragStop","_onAnimationStart","_onAnimationComplete","_onAnimationLoop","onRemovedFromWorld","onKilled","onRevived","onOutOfBounds","onEnterBounds","onInputOver","onInputOut","onInputDown","onInputUp","onDragStart","onDragStop","onAnimationStart","onAnimationComplete","onAnimationLoop","backing","_fixedToCamera","Health","health","maxHealth","damage","kill","setHealth","heal","InCamera","InputEnabled","InWorld","outOfCameraBoundsKill","_outOfBoundsFired","onEnterBounds$dispatch","onOutOfBounds$dispatch","outOfBoundsKill","inWorld","LifeSpan","lifespan","physicsElapsedMS","revive","onRevived$dispatch","onKilled$dispatch","stopAnimation","setFrame","scaleMode","RenderTexture","setTexture","BitmapData","hasFrameData","loadFrameData","getFrameData","frameData","valid","Tilemap","TilemapLayer","Texture","fromCanvas","img","getImage","base","skipRender","trimmed","spriteSourceSizeX","spriteSourceSizeY","sourceSizeW","sourceSizeH","requiresReTint","tilingTexture","refreshTexture","frameName","Overlap","overlap","_reset","Reset","ScaleMinMax","scaleMin","scaleMax","checkTransform","setScaleMinMax","minX","minY","maxX","maxY","Smoothed","existing","weapon","Weapon","createBullets","Image","creature","mesh","Creature","tween","physicsGroup","spriteBatch","SpriteBatch","audio","audioSprite","addSprite","tileSprite","rope","Rope","text","Text","overFrame","outFrame","downFrame","upFrame","Button","graphics","emitter","maxParticles","Arcade","Emitter","retroFont","font","characterWidth","characterHeight","chars","charsPerRow","xSpacing","ySpacing","xOffset","yOffset","RetroFont","bitmapText","tilemap","tileWidth","tileHeight","renderTexture","addToCache","uuid","addRenderTexture","video","url","bitmapData","addBitmapData","Tween","preUpdatePhysics","preUpdateLifeSpan","preUpdateInWorld","preUpdateCore","_onOverFrame","_onOutFrame","_onDownFrame","_onUpFrame","onOverSound","onOutSound","onDownSound","onUpSound","onOverSoundMarker","onOutSoundMarker","onDownSoundMarker","onUpSoundMarker","onOverMouseOnly","justReleasedPreventsOver","freezeFrames","forceOut","setFrames","onInputOverHandler","onInputOutHandler","onInputDownHandler","onInputUpHandler","removedFromWorld","STATE_OVER","STATE_OUT","STATE_DOWN","STATE_UP","clearFrames","setStateFrame","switchImmediately","frameKey","changeStateFrame","setStateSound","marker","soundKey","markerKey","Sound","AudioSprite","playStateSound","setSounds","overSound","overMarker","downSound","downMarker","outSound","outMarker","upSound","upMarker","setOverSound","setOutSound","setDownSound","setUpSound","changedUp","skipPool","ctx","smoothProperty","renderSession","getSmoothingPrefix","imageData","pixels","buffer","ArrayBuffer","BaseTexture","FrameData","textureFrame","addFrame","Frame","disableTextureUpload","cls","_image","_pos","_size","_scale","_rotate","_alpha","prev","_anchor","_tempR","_tempG","_tempB","_circle","_swapCanvas","moveH","moveV","draw","fillStyle","fillRect","generateTexture","toDataURL","addImage","processPixelRGB","pixel","createColor","unpackPixel","getPixel32","setPixel32","putImageData","processPixel","replaceRGB","r1","g1","r2","g2","region","packPixel","setHSL","bHaveH","bHaveS","bHaveL","HSLtoRGB","shiftHSL","red","green","blue","immediate","LITTLE_ENDIAN","setPixel","getPixel","getPixelRGB","hsl","hsv","getPixels","getFirstPixel","scan","scaleX","scaleY","newWidth","newHeight","blendMode","getCanvas","tint","cachedTint","tintedTexture","CanvasTinter","getTintedTexture","globalAlpha","op","copyTransform","copyRect","drawGroup","drawGroupProxy","drawFull","CanvasGraphics","renderGraphics","worldRotation","shadow","blur","shadowColor","shadowBlur","shadowOffsetX","shadowOffsetY","alphaMask","sourceRect","maskRect","blendSourceAtop","blendReset","extract","destination","prevFont","fillText","beginPath","arc","closePath","moveTo","lineTo","lineWidth","strokeStyle","stroke","textureLine","createPattern","blendSourceOver","blendSourceIn","blendSourceOut","blendDestinationOver","blendDestinationIn","blendDestinationOut","blendDestinationAtop","blendXor","blendAdd","blendMultiply","blendScreen","blendOverlay","blendDarken","blendLighten","blendColorDodge","blendColorBurn","blendHardLight","blendSoftLight","blendDifference","blendExclusion","blendHue","blendSaturation","blendColor","blendLuminosity","getSmoothingEnabled","setSmoothingEnabled","globalCompositeOperation","getTransform","translateX","translateY","skewX","skewY","fillAlpha","lineColor","currentPath","_webGL","isMask","boundsPadding","_localBounds","webGLDirty","cachedSpriteDirty","lineStyle","lineAlpha","drawShape","updateLocalBounds","quadraticCurveTo","cpX","cpY","toX","toY","xa","ya","fromX","fromY","bezierCurveTo","cpX2","cpY2","dt","dt2","dt3","t2","t3","arcTo","mm","dd","cc","tt","k1","k2","j1","j2","qx","qy","startAngle","endAngle","anticlockwise","segments","sweep","segs","startX","startY","filling","theta","theta2","cTheta","sTheta","segMinus","remainder","real","fillColor","drawRoundedRect","drawCircle","drawEllipse","drawPolygon","path","clearDirty","canvasBuffer","CanvasBuffer","_renderWebGL","_cacheAsBitmap","_generateCachedSprite","updateCachedSpriteTexture","_cachedSprite","blendModeManager","setBlendMode","maskManager","pushMask","_filters","filterManager","pushFilter","_filterBlock","currentBlendMode","blendModeWebGL","blendModesWebGL","gl","blendFunc","WebGLGraphics","popFilter","popMask","drawCount","_renderCanvas","_prevTint","transform","blendModesCanvas","shakeX","shakeY","w0","w1","h0","h1","x3","y3","x4","y4","tempPoint","Infinity","RECT","RREC","CIRC","ELIP","getLocalBounds","cachedSprite","destroyCachedSprite","GraphicsData","POLY","_lineTint","_fillTint","PolyK","Triangulate","sign","tgs","avl","al","i0","i1","i2","ax","ay","bx","by","earFound","_convex","vi","_PointInTriangle","v0x","v0y","v1x","v1y","v2x","v2y","dot00","dot01","dot02","dot11","dot12","invDenom","EarCut","holeIndices","dim","hasHoles","outerLen","outerNode","linkedList","triangles","eliminateHoles","earcutLinked","clockwise","sum","insertNode","filterPoints","again","steiner","removeNode","ear","pass","indexCurve","isEarHashed","isEar","cureLocalIntersections","splitEarcut","pointInTriangle","minTX","minTY","maxTX","maxTY","minZ","zOrder","maxZ","nextZ","prevZ","locallyInside","isValidDiagonal","splitPolygon","list","queue","getLeftmost","compareX","eliminateHole","hole","findHoleBridge","hx","hy","tan","tanMin","sortLinked","q","tail","numMerges","pSize","qSize","inSize","leftmost","intersectsPolygon","middleInside","q1","q2","Node","an","bp","stencilBufferLimit","webGLData","projection","shader","shaderManager","primitiveShader","updateGraphics","mode","stencilManager","pushStencil","drawElements","TRIANGLE_FAN","UNSIGNED_SHORT","indices","popStencil","setShader","uniformMatrix3fv","translationMatrix","uniform1f","flipY","uniform2f","projectionVector","offsetVector","uniform3fv","tintColor","hex2rgb","bindBuffer","ARRAY_BUFFER","vertexAttribPointer","aVertexPosition","FLOAT","colorAttribute","ELEMENT_ARRAY_BUFFER","indexBuffer","TRIANGLE_STRIP","lastIndex","graphicsDataPool","switchMode","canDrawUsingSimple","buildPoly","buildComplexPoly","buildLine","buildRectangle","buildCircle","buildRoundedRectangle","upload","WebGLGraphicsData","rectData","verts","vertPos","tempPoints","rrectData","recPoints","quadraticBezierCurve","vecPos","getPt","n1","n2","perc","diff","xb","yb","circleData","totalSegs","seg","firstPoint","lastPoint","midPointX","midPointY","unshift","p1x","p1y","p2x","p2y","p3x","p3y","perpx","perpy","perp2x","perp2y","perp3x","perp3y","pdist","dist","indexCount","indexStart","createBuffer","glPoints","bufferData","STATIC_DRAW","glIndicies","Uint16Array","updateGraphicsTint","strokeRect","kappa","ox","oy","xe","ye","xm","ym","maxRadius","renderGraphicsMask","tintR","tintG","tintB","drawTriangle","cull","triangle","cameraToFace","ab","faceNormal","drawTriangles","vertices","point1","point2","point3","_tempMatrix","renderXY","WEBGL_RENDERER","renderWebGL","renderCanvas","renderRawXY","textBounds","colors","strokeColors","fontStyles","fontWeights","autoRound","useAdvancedWrap","_res","_text","_fontComponents","_lineSpacing","_charCount","setStyle","updateText","setShadow","shadowStroke","shadowFill","backgroundColor","boundsAlignH","boundsAlignV","strokeThickness","wordWrap","wordWrapWidth","maxLines","tabs","fontToComponents","fontStyle","fontVariant","fontWeight","fontSize","componentsToFont","outputText","runWordWrap","lines","lineWidths","maxLineWidth","fontProperties","determineFontProperties","drawnLines","measureLine","measureText","tab","section","snapToCeil","lineHeight","lineSpacing","isCocoonJS","textBaseline","lineCap","lineJoin","linePositionX","linePositionY","ascent","updateLine","updateShadow","strokeText","renderTabLine","updateTexture","snap","lineLength","letter","clearColors","clearFontValues","addColor","addStrokeColor","addFontStyle","addFontWeight","weight","precalculateWordWrap","wrappedLines","advancedWordWrap","basicWordWrap","linesCount","currentLineWidth","words","word","wordWithSpace","wordWidth","newWord","secondPart","spaceLeft","wordWidthWithSpace","updateFont","family","exec","fontFamily","setText","parseList","setTextBounds","pivot","properties","fontPropertiesCache","fontPropertiesCanvas","fontPropertiesContext","baseline","descent","imagedata","idx","parseFloat","createElement","textWidth","textHeight","_prevAnchor","_maxWidth","_data","getBitmapFont","_font","_fontSize","_align","_tint","sourceWidth","sourceHeight","scanLine","lastSpace","wrappedWidth","prevCharCode","maxWidth","test","charAt","charData","kerning","xAdvance","cleanText","re","purgeGlyphs","kept","checkImageKey","characterSpacingX","characterSpacingY","characterPerRow","multiLine","autoUpperCase","customSpacingX","customSpacingY","fixedWidth","fontSet","grabData","currentX","currentY","updateFrameData","stamp","ALIGN_LEFT","ALIGN_RIGHT","ALIGN_CENTER","TEXT_SET1","TEXT_SET2","TEXT_SET3","TEXT_SET4","TEXT_SET5","TEXT_SET6","TEXT_SET7","TEXT_SET8","TEXT_SET9","TEXT_SET10","TEXT_SET11","setFixedWidth","lineAlignment","content","characterSpacing","allowLowerCase","buildRetroFontText","getLongestLine","pasteLine","longestLine","removeUnsupportedCharacters","stripCR","newString","aChar","code","updateOffset","diffX","diffY","frames","getFrames","newText","toUpperCase","_hasUpdateAnimation","_updateAnimationCallback","updateAnimation","_updateAnimation","difference","_scroll","def","TilingSprite","tilePosition","physicsElapsed","autoScroll","stopScroll","deviceReadyAt","initialized","desktop","iOSVersion","node","nodeWebkit","electron","ejecta","crosswalk","chromeOS","linux","macOS","windows","windowsPhone","canvasBitBltShift","file","fileSystem","localStorage","worker","css3D","typedArray","vibration","getUserMedia","quirksMode","arora","chromeVersion","epiphany","firefox","firefoxVersion","ie","ieVersion","trident","tridentVersion","edge","mobileSafari","midori","opera","safari","safariVersion","webApp","silk","audioData","ogg","opus","mp3","wav","m4a","webm","dolby","oggVideo","h264Video","mp4Video","webmVideo","vp9Video","hlsVideo","iPhone","iPhone4","iPad","pixelRatio","littleEndian","support32bit","fullscreen","requestFullscreen","cancelFullscreen","fullscreenKeyboard","onInitialized","nonPrimer","readyCheck","_readyCheck","_monitor","_queue","readyState","setTimeout","_initialize","item","_checkOS","vita","kindle","RegExp","$1","_checkFeatures","getItem","error","WebGLRenderingContext","compatMode","webkitGetUserMedia","mozGetUserMedia","msGetUserMedia","oGetUserMedia","URL","webkitURL","mozURL","msURL","_checkInput","documentElement","maxTouchPoints","msPointerEnabled","pointerEnabled","_checkFullScreenSupport","fs","cfs","Element","_checkBrowser","$3","process","require","versions","_checkVideo","videoElement","canPlayType","_checkAudio","audioElement","major","minor","$2","_checkDevice","Int8Array","Uint8Array","_checkIsLittleEndian","Uint8ClampedArray","Int32Array","_checkIsUint8ClampedImageData","vibrate","webkitVibrate","mozVibrate","msVibrate","elem","createImageData","_checkCSS3D","has3d","el","transforms","webkitTransform","OTransform","msTransform","MozTransform","insertBefore","getComputedStyle","getPropertyValue","canPlayAudio","canPlayVideo","isConsoleOpen","profile","profileEnd","isAndroidStockBrowser","matches","display","msTouchAction","overflowHidden","getElementById","overflow","appendChild","parentNode","vendor","prefix","setImageRenderingCrisp","types","msInterpolationMode","setImageRenderingBicubic","forceSetTimeOut","vendors","requestAnimationFrame","cancelAnimationFrame","_isSetTimeOut","_onLoop","_timeOutID","updateSetTimeout","updateRAF","rafTime","timeToCall","clearTimeout","isSetTimeOut","isRAF","PI2","fuzzyEqual","epsilon","fuzzyLessThan","fuzzyGreaterThan","fuzzyCeil","val","fuzzyFloor","average","shear","snapTo","gap","snapToFloor","roundTo","place","pow","floorTo","ceilTo","angleBetween","angleBetweenY","angleBetweenPoints","angleBetweenPointsY","reverseAngle","angleRad","normalizeAngle","maxAdd","minSub","range","wrapValue","isOdd","isEven","minProperty","maxProperty","radians","linearInterpolation","bezierInterpolation","bernstein","catmullRomInterpolation","catmullRom","p0","factorial","res","p3","v0","v1","roundAwayFromZero","sinCosGenerator","sinAmplitude","cosAmplitude","frequency","frq","cosTable","sinTable","distanceSq","distancePow","clampBottom","within","mapLinear","smoothstep","smootherstep","percent","degreeToRadiansFactor","radianToDegreesFactor","degrees","seeds","s0","s1","s2","sow","integer","integerInRange","realInRange","normal","pick","ary","weightedPick","QuadTree","maxObjects","maxLevels","level","objects","nodes","_empty","subWidth","subHeight","populate","populateHandler","insert","retrieve","returnObjects","getHostName","location","hostname","checkDomainName","domain","updateQueryString","redirect","href","separator","getQueryString","parameter","keyValues","search","substring","decodeURI","decodeURIComponent","frameBased","_tweens","_add","easeMap","Power0","Easing","Power1","Power2","Power3","Power4","Linear","None","Quad","Quadratic","Out","Cubic","Quart","Quartic","Quint","Quintic","Sine","Sinusoidal","Expo","Exponential","Circ","Circular","Elastic","Back","Bounce","Quad.easeIn","In","Cubic.easeIn","Quart.easeIn","Quint.easeIn","Sine.easeIn","Expo.easeIn","Circ.easeIn","Elastic.easeIn","Back.easeIn","Bounce.easeIn","Quad.easeOut","Cubic.easeOut","Quart.easeOut","Quint.easeOut","Sine.easeOut","Expo.easeOut","Circ.easeOut","Elastic.easeOut","Back.easeOut","Bounce.easeOut","Quad.easeInOut","InOut","Cubic.easeInOut","Quart.easeInOut","Quint.easeInOut","Sine.easeInOut","Expo.easeInOut","Circ.easeInOut","Elastic.easeInOut","Back.easeInOut","Bounce.easeInOut","_pauseAll","_resumeAll","getAll","pendingDelete","_manager","addTweens","numTweens","isTweening","some","_pause","_resume","pauseAll","resumeAll","manager","timeline","timeScale","repeatCounter","onStart","onLoop","onRepeat","onChildComplete","onComplete","chainedTween","isPaused","_onUpdateCallback","_onUpdateCallbackContext","_pausedTime","_hasStarted","ease","yoyo","Default","TweenData","vEnd","loadValues","complete","updateTweenData","repeatDelay","yoyoDelay","easing","interpolation","repeatAll","chain","startTime","status","PENDING","RUNNING","LOOPED","COMPLETE","generateData","vStart","vStartCache","vEndCache","repeatTotal","inReverse","easingFunction","interpolationFunction","interpolationContext","isFrom","yoyoCounter","ms","fps","blob","reversed","asin","prevTime","_desiredFps","suggestedFps","advancedTiming","fpsMin","fpsMax","msMin","msMax","pauseDuration","timeExpected","Timer","_frameCount","_elapsedAccumulator","_started","_timeLastSecond","_pauseStarted","_justResumed","_timers","timer","autoDestroy","previousDateNow","updateAdvancedTiming","updateTimers","elapsedSince","since","elapsedSecondsSince","running","expired","nextTick","timeCap","_pauseTotal","_now","_marked","_diff","_newTick","MINUTE","SECOND","HALF","QUARTER","repeatCount","tick","TimerEvent","clearEvents","clearPendingEvents","adjustEvents","baseTime","currentFrame","currentAnim","updateIfVisible","isLoaded","_frameData","_anims","_outputFrames","anim","copyFrameData","useNumericIndex","getFrameIndexes","validateFrames","checkFrameName","isPlaying","getAnimation","refreshFrame","getFrame","getFrameByName","_frameIndex","_frames","loopCount","isFinished","_pauseStartTime","_frameDiff","_frameSkip","onUpdate","isReversed","_timeLastFrame","_timeNextFrame","updateCurrentFrame","onAnimationStart$dispatch","reverseOnce","frameId","useLocalFrameIndex","frameIndex","dispatchComplete","onAnimationComplete$dispatch","onAnimationLoop$dispatch","signalUpdate","fromPlay","generateFrameNames","suffix","zeroPad","rotated","rotationDirection","spriteSourceSizeW","spriteSourceSizeH","setTrim","actualWidth","actualHeight","destX","destY","destWidth","destHeight","getRect","_frameNames","getFrameRange","AnimationParser","spriteSheet","frameWidth","frameHeight","frameMax","margin","spacing","row","column","JSONData","json","newFrame","filename","sourceSize","spriteSourceSize","JSONDataPyxel","signature","tileheight","tilewidth","JSONDataHash","XMLData","xml","getElementsByTagName","frameX","frameY","attributes","autoResolveURL","_cache","binary","bitmapFont","_urlMap","_urlResolver","_urlTemp","onSoundUnlock","_cacheMap","TEXTURE","SOUND","PHYSICS","BINARY","BITMAPFONT","JSON","XML","SHADER","RENDER_TEXTURE","addDefaultImage","addMissingImage","MISSING","addCanvas","removeImage","_resolveURL","addSound","audioTag","decoded","isDecoding","touchLocked","addText","addPhysicsData","format","addTilemap","mapData","addBinary","binaryData","addBitmapFont","atlasData","atlasType","LoaderParser","jsonBitmapFont","xmlBitmapFont","addJSON","addXML","addVideo","isBlob","addShader","addSpriteSheet","addTextureAtlas","TEXTURE_ATLAS_XML_STARLING","TEXTURE_ATLAS_JSON_PYXEL","reloadSound","getSound","reloadSoundComplete","updateSound","decodedSound","isSoundDecoded","isSoundReady","checkKey","checkURL","checkCanvasKey","checkTextureKey","checkSoundKey","checkTextKey","checkPhysicsKey","checkTilemapKey","checkBinaryKey","checkBitmapDataKey","checkBitmapFontKey","checkJSONKey","checkXMLKey","checkVideoKey","checkShaderKey","checkRenderTextureKey","full","getTextureFrame","getSoundData","getText","getPhysicsData","fixtureKey","fixtures","fixture","getTilemapData","getBinary","getBitmapData","getJSON","getXML","getVideo","getShader","getRenderTexture","getBaseTexture","getFrameCount","getFrameByIndex","getURL","getKeys","removeCanvas","destroyBaseTexture","removeSound","removeText","removePhysics","removeTilemap","removeBinary","removeBitmapData","removeBitmapFont","removeJSON","removeXML","removeVideo","removeShader","removeRenderTexture","removeSpriteSheet","removeTextureAtlas","atlas","_glTextures","baseURL","isLoading","hasLoaded","preloadSprite","crossOrigin","headers","onLoadStart","onLoadComplete","onPackComplete","onFileStart","onFileComplete","onFileError","useXDomainRequest","_warnedAboutXDomainRequest","enableParallel","maxParallelDownloads","_withSyncPointDepth","_fileList","_flightQueue","_processingHead","_fileLoadStarted","_totalPackCount","_totalFileCount","_loadedPackCount","_loadedFileCount","TEXTURE_ATLAS_JSON_ARRAY","TEXTURE_ATLAS_JSON_HASH","PHYSICS_LIME_CORONA_JSON","PHYSICS_PHASER_JSON","setPreloadSprite","checkKeyExists","getAssetIndex","bestFound","loaded","loading","getAsset","fileIndex","addToFileList","overwrite","extension","syncPoint","currentFile","replaceInFileList","pack","images","urls","script","spritesheet","autoDecode","noAudio","jsonURL","jsonData","audiosprite","loadEvent","asBlob","CSV","TILED_JSON","LIME_CORONA_JSON","textureURL","atlasURL","parseXml","atlasJSONArray","atlasJSONHash","atlasXML","withSyncPoint","addSyncPoint","asset","removeFile","updateProgress","processLoadQueue","finishedLoading","requestUrl","requestObject","progress","syncblock","inflightLimit","processPack","loadFile","abnormal","asyncComplete","errorMessage","packData","transformUrl","xhrLoad","fileComplete","loadImageTag","getAudioURL","usingWebAudio","usingAudioTag","loadAudioTag","fileError","getVideoURL","loadVideoTag","jsonLoadComplete","xmlLoadComplete","csvLoadComplete","onload","onerror","controls","autoplay","videoLoadEvent","canplay","Audio","playThroughEvent","XDomainRequest","xhrLoadWithXDR","xhr","XMLHttpRequest","open","responseType","setRequestHeader","message","send","timeout","ontimeout","onprogress","videoType","uri","lastIndexOf","audioType","reason","loadNext","responseText","response","decode","language","defer","head","contentType","domparser","DOMParser","parseFromString","ActiveXObject","async","loadXML","totalLoadedFiles","totalLoadedPacks","progressFloat","info","common","getAttribute","letters","kernings","second","finalizeBitmapFont","_face","_lineHeight","_id","_xoffset","_yoffset","_xadvance","_second","_first","_amount","bitmapFontData","autoplayKey","sounds","spritemap","addMarker","connectToMaster","markers","totalDuration","currentTime","durationMS","stopTime","pausedPosition","pausedTime","currentMarker","fadeTween","pendingPlayback","override","allowMultiple","externalNode","masterGainNode","gainNode","_sound","masterGain","createGain","createGainNode","gain","soundHasUnlocked","onDecoded","onPlay","onStop","onMute","onMarkerComplete","_volume","_buffer","_muted","_tempMarker","_tempPosition","_tempVolume","_tempPause","_muteVolume","_tempLoop","_onDecodedEventDispatched","removeMarker","onEndedHandler","onended","isDecoded","loopFull","forceRestart","noteOff","createBufferSource","noteGrainOn","muted","mute","prevMarker","fadeIn","fadeTo","fadeOut","fadeComplete","updateGlobalVolume","globalVolume","onSoundDecode","onVolumeChange","onUnMute","channels","_codeMuted","_unlockSource","_sounds","_watchList","_watching","_watchCallback","_watchContext","disableAudio","disableWebAudio","audioContext","fakeiOSTouchLock","setTouchLock","unlock","noteOn","stopAll","soundData","decodeAudioData","setDecodedCallback","files","playbackState","PLAYING_STATE","FINISHED_STATE","removeByKey","close","dom","minWidth","minHeight","maxHeight","forceLandscape","forcePortrait","incorrectOrientation","_pageAlignHorizontally","_pageAlignVertically","onOrientationChange","enterIncorrectOrientation","leaveIncorrectOrientation","fullScreenTarget","_createdFullScreenTarget","onFullScreenInit","onFullScreenChange","onFullScreenError","screenOrientation","getScreenOrientation","scaleFactorInversed","aspectRatio","sourceAspectRatio","windowConstraints","compatibility","supportsFullScreen","orientationFallback","noMargins","scrollTo","forceMinimumDocumentHeight","canExpandParent","clickTrampoline","_scaleMode","NO_SCALE","_fullScreenScaleMode","parentIsWindow","parentScaleFactor","trackParentInterval","onSizeChange","onResize","onResizeContext","_pendingScaleMode","_fullScreenRestore","_gameSize","_userScaleFactor","_userScaleTrim","_lastUpdate","_updateThrottle","_updateThrottleReset","_parentBounds","_tempBounds","_lastReportedCanvasSize","_lastReportedGameSize","_booted","setupScale","EXACT_FIT","SHOW_ALL","RESIZE","USER_SCALE","compat","_orientationChange","orientationChange","_windowResize","windowResize","_fullScreenChange","fullScreenChange","_fullScreenError","fullScreenError","_gameResumed","setGameSize","FlexGrid","fullScreenScaleMode","getParentBounds","visualBounds","updateDimensions","queueUpdate","currentScaleMode","setUserScale","hScale","vScale","hTrim","vTrim","setResizeCallback","signalSizeChange","setMinMax","prevThrottle","prevWidth","prevHeight","boundsChanged","orientationChanged","updateOrientationState","updateLayout","throttle","updateScalingAndBounds","forceOrientation","classifyOrientation","orientation","previousOrientation","previouslyIncorrect","isLandscape","isPortrait","changed","correctnessChanged","scrollTop","reflowGame","setMaximum","setExactFit","isFullScreen","boundingParent","setShowAll","resetCanvas","reflowCanvas","layoutBounds","clientRect","getBoundingClientRect","parentRect","offsetParent","wc","windowBounds","alignCanvas","parentBounds","canvasBounds","currentEdge","targetEdge","marginLeft","marginRight","marginTop","marginBottom","pageAlignHorizontally","pageAlignVertically","cssWidth","cssHeight","expanding","multiplier","createFullScreenTarget","fsTarget","background","startFullScreen","allowTrampoline","cleanupCreatedTarget","initData","targetElement","ALLOW_KEYBOARD_INPUT","stopFullScreen","prepScreenMode","enteringFullscreen","createdTarget","targetWidth","targetHeight","scaleSprite","letterBox","scaleX1","scaleY1","scaleX2","scaleY2","scaleOnWidth","bmd","columnWidth","renderShadow","currentAlpha","scaleManager","currentColor","soundInfo","cameraInfo","hideIfUp","downColor","upColor","worldX","worldY","spriteInputInfo","justDown","justUp","inputInfo","spriteBounds","filled","rectangle","ropeSegments","self","segment","spriteInfo","spriteCoords","lineInfo","geom","forceType","quadTree","quadtree","Body","NINJA","Ninja","BOX2D","Box2D","renderBody","bodyInfo","renderBodyInfo","box2d","box2dWorld","renderDebugDraw","box2dBody","displayList","box","scrollY","scrollLeft","scrollX","clientTop","clientLeft","cushion","calibrate","coords","getAspectRatio","inLayoutViewport","primaryFallback","screen","mozOrientation","msOrientation","matchMedia","documentBounds","pageXOffset","pageYOffset","treatAsDesktop","clientWidth","clientHeight","offsetWidth","scrollWidth","offsetHeight","scrollHeight","getByKey","randomIndex","removeRandomItem","shuffle","temp","transposeMatrix","sourceRowCount","sourceColCount","rotateMatrix","findClosest","arr","NaN","low","high","rotateRight","rotateLeft","numberArray","numberArrayStep","LinkedList","entity","palettes","0","1","2","3","4","5","6","7","8","9","PALETTE_ARNE","PALETTE_JMP","PALETTE_CGA","PALETTE_C64","PALETTE_JAPANESE_MACHINE","pixelWidth","pixelHeight","palette","boundsCustom","boundsFull","boundsNone","positionCustom","positionFluid","positionFull","positionNone","scaleCustom","scaleFluid","scaleFull","scaleNone","customWidth","customHeight","customOffsetX","customOffsetY","ratioH","ratioV","layers","createCustomLayer","layer","FlexLayer","createFluidLayer","createFullLayer","createFixedLayer","persist","fitSprite","topLeft","topMiddle","topRight","bottomLeft","bottomMiddle","bottomRight","RGBtoHSL","RGBtoHSV","fromRGBA","toRGBA","toABGR","hueToColor","HSVtoRGB","color32","getColor","getColor32","RGBtoString","componentToHex","hexToRGB","hex","hexToColor","webToColor","web","tempColor","getRGB","HSVColorWheel","HSLColorWheel","interpolateColor","color1","color2","steps","currentStep","src1","src2","interpolateColorWithRGB","or","og","ob","interpolateRGB","getRandomColor","getWebRGB","getAlpha","getAlphaFloat","getRed","getGreen","getBlue","blendNormal","blendAverage","blendSubtract","blendNegation","blendLinearDodge","blendLinearBurn","blendLinearLight","blendVividLight","blendPinLight","blendHardMix","blendReflect","blendGlow","blendPhoenix","arcade","ninja","chipmunk","matter","CHIPMUNK","MATTERJS","P2","Matter","startSystem","system","enableAABB","gravity","checkCollision","OVERLAP_BIAS","forceX","sortDirection","LEFT_RIGHT","skipQuadTree","_total","SORT_NONE","RIGHT_LEFT","TOP_BOTTOM","BOTTOM_TOP","updateMotion","velocityDelta","computeVelocity","angularVelocity","angularAcceleration","angularDrag","maxAngular","velocity","acceleration","drag","maxVelocity","allowGravity","object1","object2","overlapCallback","processCallback","collideHandler","collide","collideCallback","sortLeftRight","sortRightLeft","sortTopBottom","sortBottomTop","overlapOnly","collideGroupVsSelf","collideSpriteVsSprite","collideSpriteVsGroup","collideSpriteVsTilemapLayer","collideGroupVsGroup","collideGroupVsTilemapLayer","sprite1","sprite2","separate","items","bounds1","bounds2","group1","group2","body1","body2","isCircle","separateCircle","bodyRect","bodyCircle","resultX","resultY","separateX","separateY","onOverlap","onCollide","circleBodyIntersects","getOverlapX","getOverlapY","angleCollision","angleBetweenCenters","immovable","customSeparateX","v2","tempVel1","mass","tempVel2","bounce","maxOverlap","deltaAbsX","embedded","touching","none","overlapX","deltaAbsY","overlapY","moves","friction","nv1","nv2","avg","customSeparateY","getObjectsUnderPointer","getObjectsAtLocation","callbackArg","moveToObject","maxTime","distanceBetween","moveToPointer","angleToPointer","distanceToPointer","moveToXY","distanceToXY","velocityFromAngle","velocityFromRotation","accelerationFromRotation","accelerateToObject","xSpeedMax","ySpeedMax","accelerateToPointer","accelerateToXY","angleToXY","worldAngleToPointer","allowRotation","preRotation","newVelocity","deltaMax","worldBounce","onWorldBounds","facing","overlapR","collideWorldBounds","any","wasTouching","blocked","tilePadding","syncBounds","isMoving","stopVelocityOnCollide","moveTimer","moveDistance","moveDuration","moveTarget","moveEnd","onMoveComplete","movementCallback","movementCallbackContext","_sx","_sy","updateBounds","asx","asy","updateMovement","collided","stopMovement","stopVelocity","check","bodyBounds","moveFrom","setCircle","onFloor","onCeiling","onWall","TilemapCollision","TILE_BIAS","tilemapLayer","getTiles","separateTile","tile","tilemapLayerOffsetX","tilemapLayerOffsetY","collisionCallback","collisionCallbackContext","faceLeft","faceRight","faceTop","faceBottom","tileCheckX","tileCheckY","collideRight","collideLeft","processTileSeparationX","collideDown","collideUp","processTileSeparationY","Spring","broadphase","SAPBroadphase","useElapsedTime","materials","InversePointProxy","walls","onBodyAdded","onBodyRemoved","onSpringAdded","onSpringRemoved","onConstraintAdded","onConstraintRemoved","onContactMaterialAdded","onContactMaterialRemoved","postBroadphaseCallback","onBeginContact","onEndContact","mpx","mpxi","pxm","pxmi","on","beginContactHandler","endContactHandler","collisionGroups","nothingCollisionGroup","CollisionGroup","boundsCollisionGroup","everythingCollisionGroup","boundsCollidesWith","_toRemove","_collisionGroupID","_boundsLeft","_boundsRight","_boundsTop","_boundsBottom","_boundsOwnGroup","removeBodyNextStep","removeBody","setImpactEvents","impactHandler","off","setPostBroadphaseCallback","postBroadphaseHandler","pairs","bodyA","bodyB","_bodyCallbacks","_bodyCallbackContext","shapeA","shapeB","_groupCallbacks","collisionGroup","_groupCallbackContext","contactEquations","setCollisionGroup","setWorldMaterial","material","shapes","updateBoundsCollisionGroup","setupWall","wall","addShape","Plane","addBody","fixedStepTime","solver","equations","removeAllEquations","cs","constraints","removeConstraint","bodies","springs","removeSpring","cms","contactMaterials","removeContactMaterial","impactCallback","addSpring","spring","RotationalSpring","createDistanceConstraint","localAnchorA","localAnchorB","maxForce","getBody","addConstraint","DistanceConstraint","createGearConstraint","ratio","GearConstraint","createRevoluteConstraint","pivotA","pivotB","worldPivot","RevoluteConstraint","createLockConstraint","LockConstraint","createPrismaticConstraint","lockRotation","anchorA","anchorB","PrismaticConstraint","constraint","addContactMaterial","getContactMaterial","materialA","materialB","setMaterial","createMaterial","Material","createContactMaterial","contact","ContactMaterial","getBodies","getSprings","getConstraints","worldPoint","precision","filterStatic","physicsPosition","query","STATIC","toJSON","createCollisionGroup","bitmask","collisionMask","createSpring","restLength","stiffness","damping","worldA","worldB","localA","localB","createRotationalSpring","restAngle","createBody","addPolygon","createParticle","convertCollisionObjects","map","collision","polyline","clearTilemapLayerBodies","getLayer","convertTilemap","optimize","collides","getTileRight","addRectangle","defaultContactMaterial","restitution","applySpringForces","applyDamping","applyGravity","solveConstraints","emitImpactEvent","sleepMode","FixtureList","rawList","namedFixtures","groupedFixtures","allFixtures","setCategory","bit","setter","getFixtures","setMask","setSensor","sensor","getFixtureByKey","getGroup","groupID","_ref","_results","callee","PointProxy","collidesWith","removeNextStep","debugBody","_collideWorldBounds","setRectangleFromSprite","createBodyCallback","createGroupCallback","getCollisionMask","updateCollisionMask","clearCollision","clearGroup","clearMask","removeCollisionGroup","clearCallback","adjustCenterOfMass","shapeChanged","getVelocityAtPoint","relativePoint","applyImpulse","impulse","applyImpulseLocal","localX","localY","applyForce","setZeroForce","setZeroRotation","setZeroVelocity","setZeroDamping","angularDamping","toLocalFrame","toWorldFrame","moveForward","moveBackward","thrust","thrustLeft","thrustRight","moveLeft","moveRight","fixedRotation","updateSpriteTransform","resetDamping","resetMass","clearShapes","removeShape","addCircle","Box","addPlane","addParticle","Particle","addLine","addCapsule","Capsule","fromPolygon","setRectangle","addPhaserPolygon","createdFixtures","fixtureData","shapesOfFixture","addFixture","aabbNeedsUpdate","generatedShapes","categoryBits","maskBits","isSensor","vec2","polygons","cm","Convex","sub","centerOfMass","updateTriangles","updateCenterOfMass","updateBoundingRadius","loadPolygon","DYNAMIC","KINEMATIC","allowSleep","angularForce","inertia","updateMassProperties","sleepSpeedLimit","BodyDebug","settings","defaultSettings","pixelsPerLengthUnit","debugPolygons","ppu","lw","vrot","_j","_ref1","randomPastelHex","drawCapsule","drawPlane","drawLine","drawRectangle","drawConvex","x0","drawPath","lastx","lasty","diagMargin","diagSize","maxLength","xd","yd","mix","rgbToHex","worldAnchorA","worldAnchorB","LinearSpring","localOffsetB","localAngleB","localAxisA","disableRotationalLock","localPivotA","localPivotB","ImageCollection","firstgid","imageWidth","imageHeight","imageMargin","imageSpacing","containsImageIndex","imageIndex","gid","Tile","flipped","scanned","setCollisionCallback","setCollision","resetCollision","isInteresting","faces","TilemapParser","version","widthInPixels","heightInPixels","tilesets","imagecollections","tiles","collideIndexes","currentLayer","debugMap","_tempA","NORTH","EAST","SOUTH","WEST","setTileSize","createBlankLayer","addTilesetImage","tileset","tileMargin","tileSpacing","getTilesetIndex","setImage","newSet","Tileset","countX","countY","createFromObjects","CustomClass","adjustY","found","createFromTiles","replacements","customClass","lh","createLayer","pixiTest","getLayerIndex","TilemapLayerGL","indexes","getImageIndex","setTileIndexCallback","setTileLocationCallback","recalculate","setCollisionByIndex","calculateFaces","setCollisionBetween","setCollisionByExclusion","setPreventRecalculate","preventingRecalculate","needToRecalculate","above","below","getTileAbove","getTileBelow","getTileLeft","setLayer","hasTile","removeTile","removeTileWorldXY","putTile","putTileWorldXY","searchTileIndex","skip","getTile","nonNull","getTileWorldXY","paste","tileblock","tileA","tileB","swapHandler","removeAllLayers","dump","txt","renderSettings","enableScrollDelta","overdrawRatio","copyCanvas","debugSettings","missingImageFill","debuggedTileOverfill","forceFullRedraw","debugAlpha","facingEdgeStroke","collidingTileOverfill","scrollFactorX","scrollFactorY","rayStepRate","_wrap","_mc","renderWidth","renderHeight","_scrollX","_scrollY","ensureSharedCopyCanvas","sharedCopyCanvas","requiresUpdate","resizeWorld","_fixX","_unfixX","_fixY","_unfixY","getTileX","getTileY","getTileXY","getRayCastTiles","interestingFace","coord","fetchAll","tw","th","wy","wx","resolveTileset","tileIndex","setIndex","containsTileIndex","resetTilesetCache","setScale","xScale","yScale","shiftCanvas","copyW","copyH","copyContext","renderRegion","lastAlpha","xmax","ymax","baseX","baseY","normStartX","normStartY","renderDeltaScroll","shiftX","shiftY","renderW","renderH","trueTop","trueBottom","trueLeft","trueRight","renderFull","redrawAll","mc","renderDebug","INSERT_NULL","FLIPPED_HORIZONTALLY_FLAG","FLIPPED_VERTICALLY_FLAG","FLIPPED_DIAGONALLY_FLAG","getEmptyData","parseCSV","parseTiledJSON","fields","sliced","curl","compression","encoding","binaryString","atob","bytes","opacity","flippedVal","curi","tileproperties","tileProperties","updateTileData","imagewidth","imageheight","newCollection","ti","curo","horizontallyFlipped","verticallyFlipped","diagonallyFlipped","polygon","ellipse","sid","drawCoords","coordIndex","setSpacing","rowCount","colCount","autoScale","scaleData","_s","autoAlpha","alphaData","_a","onEmit","setAlphaData","setScaleData","emitters","ID","minParticleSpeed","maxParticleSpeed","minParticleScale","maxParticleScale","minRotation","maxRotation","minParticleAlpha","maxParticleAlpha","particleClass","particleDrag","particleAnchor","emitX","emitY","particleBringToTop","particleSendToBack","_minParticleScale","_maxParticleScale","_quantity","_timer","_counter","_flowQuantity","_flowTotal","_explode","emitParticle","makeParticles","particle","rndKey","rndFrame","explode","flow","forceQuantity","setXSpeed","setYSpeed","setRotation","setAlpha","rate","tweenData","at","bullets","autoExpandBulletsGroup","autofire","shots","fireLimit","fireRate","fireRateVariance","fireFrom","fireAngle","bulletInheritSpriteSpeed","bulletAnimation","bulletFrameRandom","bulletFrameCycle","bulletWorldWrap","bulletWorldWrapPadding","bulletAngleOffset","bulletAngleVariance","bulletSpeed","bulletSpeedVariance","bulletLifespan","bulletKillDistance","bulletGravity","bulletRotateToVelocity","bulletKey","bulletFrame","_bulletClass","Bullet","_bulletCollideWorldBounds","_bulletKillType","KILL_WORLD_BOUNDS","customBody","bulletBounds","bulletFrames","bulletFrameIndex","anims","onFire","onKill","onFireLimit","trackedSprite","trackedPointer","trackRotation","trackOffset","_nextFire","KILL_NEVER","KILL_LIFESPAN","KILL_DISTANCE","KILL_WEAPON_BOUNDS","KILL_CAMERA_BOUNDS","KILL_STATIC_BOUNDS","killAll","resetShots","newLimit","fire","trackSprite","trackPointer","moveX","moveY","bullet","bulletManager","killType","bulletKillType","killDistance","rotateToVelocity","bodyDirty","bulletCollideWorldBounds","fireAtPointer","fireAtSprite","fireAtXY","setBulletBodyOffset","setBulletFrames","cycle","addBulletAnimation","debugBodies","animation","meshData","_creature","CreatureAnimation","CreatureManager","timeDelta","creatureBoundsMin","creatureBoundsMax","target_creature","total_num_pts","uvs","global_indices","updateRenderData","global_pts","global_uvs","AddAnimation","SetActiveAnimationName","Update","updateData","_initWebGL","_vertexBuffer","_indexBuffer","_uvBuffer","_colorBuffer","DYNAMIC_DRAW","stripShader","_renderCreature","aTextureCoord","activeTexture","TEXTURE0","_dirty","bindTexture","TEXTURE_2D","bufferSubData","TRIANGLES","updateCreatureBounds","ComputeBoundaryMinMax","boundary_min","boundary_max","read_pts","render_pts","read_uvs","pt_index","uv_index","write_pt_index","setAnimation","SetIsPlaying","RunAtTime","GetIsPlaying","should_loop","SetShouldLoop","onAccess","onError","onTimeout","videoStream","isStreaming","retryLimit","retry","retryInterval","_retryID","_pending","_autoplay","_endCallback","_playCallback","_video","createVideoFromBlob","videoWidth","videoHeight","createVideoFromURL","forceLoaded","snapshot","connectToMediaStream","stream","startMediaStream","captureAudio","removeVideoElement","setAttribute","getUserMediaTimeout","getUserMediaSuccess","getUserMediaError","mozSrcObject","createObjectURL","onloadeddata","checkStream","checkVideoProgress","change","playbackRate","setPause","setResume","playHandler","getTracks","track","playing","ended","changeSource","grab","hasChildNodes","firstChild","removeAttribute","emptyTexture","DisplayObject","tempMatrix","TextureSilentFail","exports","module","define","amd"],"mappings":"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","file":"phaser-creature.min.js"} \ No newline at end of file diff --git a/build/phaser-creature.min.js b/build/phaser-creature.min.js index 7a08d920c..22dbbe65c 100644 --- a/build/phaser-creature.min.js +++ b/build/phaser-creature.min.js @@ -1,22 +1,22 @@ -/* Phaser v2.5.0 - http://phaser.io - @photonstorm - (c) 2016 Photon Storm Ltd. */ +/* Phaser v2.5.1 - http://phaser.io - @photonstorm - (c) 2016 Photon Storm Ltd. */ -(function(){function a(a,b){this._scaleFactor=a,this._deltaMode=b,this.originalEvent=null}var b=this,c=c||{VERSION:"2.5.0",GAMES:[],AUTO:0,CANVAS:1,WEBGL:2,HEADLESS:3,NONE:0,LEFT:1,RIGHT:2,UP:3,DOWN:4,SPRITE:0,BUTTON:1,IMAGE:2,GRAPHICS:3,TEXT:4,TILESPRITE:5,BITMAPTEXT:6,GROUP:7,RENDERTEXTURE:8,TILEMAP:9,TILEMAPLAYER:10,EMITTER:11,POLYGON:12,BITMAPDATA:13,CANVAS_FILTER:14,WEBGL_FILTER:15,ELLIPSE:16,SPRITEBATCH:17,RETROFONT:18,POINTER:19,ROPE:20,CIRCLE:21,RECTANGLE:22,LINE:23,MATRIX:24,POINT:25,ROUNDEDRECTANGLE:26,CREATURE:27,VIDEO:28,PENDING_ATLAS:-1,HORIZONTAL:0,VERTICAL:1,LANDSCAPE:0,PORTRAIT:1,ANGLE_UP:270,ANGLE_DOWN:90,ANGLE_LEFT:180,ANGLE_RIGHT:0,ANGLE_NORTH_EAST:315,ANGLE_NORTH_WEST:225,ANGLE_SOUTH_EAST:45,ANGLE_SOUTH_WEST:135,TOP_LEFT:0,TOP_CENTER:1,TOP_RIGHT:2,LEFT_TOP:3,LEFT_CENTER:4,LEFT_BOTTOM:5,CENTER:6,RIGHT_TOP:7,RIGHT_CENTER:8,RIGHT_BOTTOM:9,BOTTOM_LEFT:10,BOTTOM_CENTER:11,BOTTOM_RIGHT:12,blendModes:{NORMAL:0,ADD:1,MULTIPLY:2,SCREEN:3,OVERLAY:4,DARKEN:5,LIGHTEN:6,COLOR_DODGE:7,COLOR_BURN:8,HARD_LIGHT:9,SOFT_LIGHT:10,DIFFERENCE:11,EXCLUSION:12,HUE:13,SATURATION:14,COLOR:15,LUMINOSITY:16},scaleModes:{DEFAULT:0,LINEAR:0,NEAREST:1},PIXI:PIXI||{}};if(Math.trunc||(Math.trunc=function(a){return 0>a?Math.ceil(a):Math.floor(a)}),Function.prototype.bind||(Function.prototype.bind=function(){var a=Array.prototype.slice;return function(b){function c(){var f=e.concat(a.call(arguments));d.apply(this instanceof c?this:b,f)}var d=this,e=a.call(arguments,1);if("function"!=typeof d)throw new TypeError;return c.prototype=function f(a){return a&&(f.prototype=a),this instanceof f?void 0:new f}(d.prototype),c}}()),Array.isArray||(Array.isArray=function(a){return"[object Array]"==Object.prototype.toString.call(a)}),Array.prototype.forEach||(Array.prototype.forEach=function(a){"use strict";if(void 0===this||null===this)throw new TypeError;var b=Object(this),c=b.length>>>0;if("function"!=typeof a)throw new TypeError;for(var d=arguments.length>=2?arguments[1]:void 0,e=0;c>e;e++)e in b&&a.call(d,b[e],e,b)}),"function"!=typeof window.Uint32Array&&"object"!=typeof window.Uint32Array){var d=function(a){var b=new Array;window[a]=function(a){if("number"==typeof a){Array.call(this,a),this.length=a;for(var b=0;bf&&(a=a[g]);)g=c[f],f++;return a?a[d]:null},setProperty:function(a,b,c){for(var d=b.split("."),e=d.pop(),f=d.length,g=1,h=d[0];f>g&&(a=a[h]);)h=d[g],g++;return a&&(a[e]=c),a},chanceRoll:function(a){return void 0===a&&(a=50),a>0&&100*Math.random()<=a},randomChoice:function(a,b){return Math.random()<.5?a:b},parseDimension:function(a,b){var c=0,d=0;return"string"==typeof a?"%"===a.substr(-1)?(c=parseInt(a,10)/100,d=0===b?window.innerWidth*c:window.innerHeight*c):d=parseInt(a,10):d=a,d},pad:function(a,b,c,d){if(void 0===b)var b=0;if(void 0===c)var c=" ";if(void 0===d)var d=3;var e=0;if(b+1>=a.length)switch(d){case 1:a=new Array(b+1-a.length).join(c)+a;break;case 3:var f=Math.ceil((e=b-a.length)/2),g=e-f;a=new Array(g+1).join(c)+a+new Array(f+1).join(c);break;default:a+=new Array(b+1-a.length).join(c)}return a},isPlainObject:function(a){if("object"!=typeof a||a.nodeType||a===a.window)return!1;try{if(a.constructor&&!{}.hasOwnProperty.call(a.constructor.prototype,"isPrototypeOf"))return!1}catch(b){return!1}return!0},extend:function(){var a,b,d,e,f,g,h=arguments[0]||{},i=1,j=arguments.length,k=!1;for("boolean"==typeof h&&(k=h,h=arguments[1]||{},i=2),j===i&&(h=this,--i);j>i;i++)if(null!=(a=arguments[i]))for(b in a)d=h[b],e=a[b],h!==e&&(k&&e&&(c.Utils.isPlainObject(e)||(f=Array.isArray(e)))?(f?(f=!1,g=d&&Array.isArray(d)?d:[]):g=d&&c.Utils.isPlainObject(d)?d:{},h[b]=c.Utils.extend(k,g,e)):void 0!==e&&(h[b]=e));return h},mixinPrototype:function(a,b,c){void 0===c&&(c=!1);for(var d=Object.keys(b),e=0;e0&&(this._radius=.5*d),this.type=c.CIRCLE},c.Circle.prototype={circumference:function(){return 2*(Math.PI*this._radius)},random:function(a){void 0===a&&(a=new c.Point);var b=2*Math.PI*Math.random(),d=Math.random()+Math.random(),e=d>1?2-d:d,f=e*Math.cos(b),g=e*Math.sin(b);return a.x=this.x+f*this.radius,a.y=this.y+g*this.radius,a},getBounds:function(){return new c.Rectangle(this.x-this.radius,this.y-this.radius,this.diameter,this.diameter)},setTo:function(a,b,c){return this.x=a,this.y=b,this._diameter=c,this._radius=.5*c,this},copyFrom:function(a){return this.setTo(a.x,a.y,a.diameter)},copyTo:function(a){return a.x=this.x,a.y=this.y,a.diameter=this._diameter,a},distance:function(a,b){var d=c.Math.distance(this.x,this.y,a.x,a.y);return b?Math.round(d):d},clone:function(a){return void 0===a||null===a?a=new c.Circle(this.x,this.y,this.diameter):a.setTo(this.x,this.y,this.diameter),a},contains:function(a,b){return c.Circle.contains(this,a,b)},circumferencePoint:function(a,b,d){return c.Circle.circumferencePoint(this,a,b,d)},offset:function(a,b){return this.x+=a,this.y+=b,this},offsetPoint:function(a){return this.offset(a.x,a.y)},toString:function(){return"[{Phaser.Circle (x="+this.x+" y="+this.y+" diameter="+this.diameter+" radius="+this.radius+")}]"}},c.Circle.prototype.constructor=c.Circle,Object.defineProperty(c.Circle.prototype,"diameter",{get:function(){return this._diameter},set:function(a){a>0&&(this._diameter=a,this._radius=.5*a)}}),Object.defineProperty(c.Circle.prototype,"radius",{get:function(){return this._radius},set:function(a){a>0&&(this._radius=a,this._diameter=2*a)}}),Object.defineProperty(c.Circle.prototype,"left",{get:function(){return this.x-this._radius},set:function(a){a>this.x?(this._radius=0,this._diameter=0):this.radius=this.x-a}}),Object.defineProperty(c.Circle.prototype,"right",{get:function(){return this.x+this._radius},set:function(a){athis.y?(this._radius=0,this._diameter=0):this.radius=this.y-a}}),Object.defineProperty(c.Circle.prototype,"bottom",{get:function(){return this.y+this._radius},set:function(a){a0?Math.PI*this._radius*this._radius:0}}),Object.defineProperty(c.Circle.prototype,"empty",{get:function(){return 0===this._diameter},set:function(a){a===!0&&this.setTo(0,0,0)}}),c.Circle.contains=function(a,b,c){if(a.radius>0&&b>=a.left&&b<=a.right&&c>=a.top&&c<=a.bottom){var d=(a.x-b)*(a.x-b),e=(a.y-c)*(a.y-c);return d+e<=a.radius*a.radius}return!1},c.Circle.equals=function(a,b){return a.x==b.x&&a.y==b.y&&a.diameter==b.diameter},c.Circle.intersects=function(a,b){return c.Math.distance(a.x,a.y,b.x,b.y)<=a.radius+b.radius},c.Circle.circumferencePoint=function(a,b,d,e){return void 0===d&&(d=!1),void 0===e&&(e=new c.Point),d===!0&&(b=c.Math.degToRad(b)),e.x=a.x+a.radius*Math.cos(b),e.y=a.y+a.radius*Math.sin(b),e},c.Circle.intersectsRectangle=function(a,b){var c=Math.abs(a.x-b.x-b.halfWidth),d=b.halfWidth+a.radius;if(c>d)return!1;var e=Math.abs(a.y-b.y-b.halfHeight),f=b.halfHeight+a.radius;if(e>f)return!1;if(c<=b.halfWidth||e<=b.halfHeight)return!0;var g=c-b.halfWidth,h=e-b.halfHeight,i=g*g,j=h*h,k=a.radius*a.radius;return k>=i+j},PIXI.Circle=c.Circle,c.Ellipse=function(a,b,d,e){a=a||0,b=b||0,d=d||0,e=e||0,this.x=a,this.y=b,this.width=d,this.height=e,this.type=c.ELLIPSE},c.Ellipse.prototype={setTo:function(a,b,c,d){return this.x=a,this.y=b,this.width=c,this.height=d,this},getBounds:function(){return new c.Rectangle(this.x-this.width,this.y-this.height,this.width,this.height)},copyFrom:function(a){return this.setTo(a.x,a.y,a.width,a.height)},copyTo:function(a){return a.x=this.x,a.y=this.y,a.width=this.width,a.height=this.height,a},clone:function(a){return void 0===a||null===a?a=new c.Ellipse(this.x,this.y,this.width,this.height):a.setTo(this.x,this.y,this.width,this.height),a},contains:function(a,b){return c.Ellipse.contains(this,a,b)},random:function(a){void 0===a&&(a=new c.Point);var b=Math.random()*Math.PI*2,d=Math.random();return a.x=Math.sqrt(d)*Math.cos(b),a.y=Math.sqrt(d)*Math.sin(b),a.x=this.x+a.x*this.width/2,a.y=this.y+a.y*this.height/2,a},toString:function(){return"[{Phaser.Ellipse (x="+this.x+" y="+this.y+" width="+this.width+" height="+this.height+")}]"}},c.Ellipse.prototype.constructor=c.Ellipse,Object.defineProperty(c.Ellipse.prototype,"left",{get:function(){return this.x},set:function(a){this.x=a}}),Object.defineProperty(c.Ellipse.prototype,"right",{get:function(){return this.x+this.width},set:function(a){ad+e},PIXI.Ellipse=c.Ellipse,c.Line=function(a,b,d,e){a=a||0,b=b||0,d=d||0,e=e||0,this.start=new c.Point(a,b),this.end=new c.Point(d,e),this.type=c.LINE},c.Line.prototype={setTo:function(a,b,c,d){return this.start.setTo(a,b),this.end.setTo(c,d),this},fromSprite:function(a,b,c){return void 0===c&&(c=!1),c?this.setTo(a.center.x,a.center.y,b.center.x,b.center.y):this.setTo(a.x,a.y,b.x,b.y)},fromAngle:function(a,b,c,d){return this.start.setTo(a,b),this.end.setTo(a+Math.cos(c)*d,b+Math.sin(c)*d),this},rotate:function(a,b){var c=(this.start.x+this.end.x)/2,d=(this.start.y+this.end.y)/2;return this.start.rotate(c,d,a,b),this.end.rotate(c,d,a,b),this},rotateAround:function(a,b,c,d){return this.start.rotate(a,b,c,d),this.end.rotate(a,b,c,d),this},intersects:function(a,b,d){return c.Line.intersectsPoints(this.start,this.end,a.start,a.end,b,d)},reflect:function(a){return c.Line.reflect(this,a)},midPoint:function(a){return void 0===a&&(a=new c.Point),a.x=(this.start.x+this.end.x)/2,a.y=(this.start.y+this.end.y)/2,a},centerOn:function(a,b){var c=(this.start.x+this.end.x)/2,d=(this.start.y+this.end.y)/2,e=a-c,f=b-d;this.start.add(e,f),this.end.add(e,f)},pointOnLine:function(a,b){return(a-this.start.x)*(this.end.y-this.start.y)===(this.end.x-this.start.x)*(b-this.start.y)},pointOnSegment:function(a,b){var c=Math.min(this.start.x,this.end.x),d=Math.max(this.start.x,this.end.x),e=Math.min(this.start.y,this.end.y),f=Math.max(this.start.y,this.end.y);return this.pointOnLine(a,b)&&a>=c&&d>=a&&b>=e&&f>=b},random:function(a){void 0===a&&(a=new c.Point);var b=Math.random();return a.x=this.start.x+b*(this.end.x-this.start.x),a.y=this.start.y+b*(this.end.y-this.start.y),a},coordinatesOnLine:function(a,b){void 0===a&&(a=1),void 0===b&&(b=[]);var c=Math.round(this.start.x),d=Math.round(this.start.y),e=Math.round(this.end.x),f=Math.round(this.end.y),g=Math.abs(e-c),h=Math.abs(f-d),i=e>c?1:-1,j=f>d?1:-1,k=g-h;b.push([c,d]);for(var l=1;c!=e||d!=f;){var m=k<<1;m>-h&&(k-=h,c+=i),g>m&&(k+=g,d+=j),l%a===0&&b.push([c,d]),l++}return b},clone:function(a){return void 0===a||null===a?a=new c.Line(this.start.x,this.start.y,this.end.x,this.end.y):a.setTo(this.start.x,this.start.y,this.end.x,this.end.y),a}},Object.defineProperty(c.Line.prototype,"length",{get:function(){return Math.sqrt((this.end.x-this.start.x)*(this.end.x-this.start.x)+(this.end.y-this.start.y)*(this.end.y-this.start.y))}}),Object.defineProperty(c.Line.prototype,"angle",{get:function(){return Math.atan2(this.end.y-this.start.y,this.end.x-this.start.x)}}),Object.defineProperty(c.Line.prototype,"slope",{get:function(){return(this.end.y-this.start.y)/(this.end.x-this.start.x)}}),Object.defineProperty(c.Line.prototype,"perpSlope",{get:function(){return-((this.end.x-this.start.x)/(this.end.y-this.start.y))}}),Object.defineProperty(c.Line.prototype,"x",{get:function(){return Math.min(this.start.x,this.end.x)}}),Object.defineProperty(c.Line.prototype,"y",{get:function(){return Math.min(this.start.y,this.end.y)}}),Object.defineProperty(c.Line.prototype,"left",{get:function(){return Math.min(this.start.x,this.end.x)}}),Object.defineProperty(c.Line.prototype,"right",{get:function(){return Math.max(this.start.x,this.end.x)}}),Object.defineProperty(c.Line.prototype,"top",{get:function(){return Math.min(this.start.y,this.end.y)}}),Object.defineProperty(c.Line.prototype,"bottom",{get:function(){return Math.max(this.start.y,this.end.y)}}),Object.defineProperty(c.Line.prototype,"width",{get:function(){return Math.abs(this.start.x-this.end.x)}}),Object.defineProperty(c.Line.prototype,"height",{get:function(){return Math.abs(this.start.y-this.end.y)}}),Object.defineProperty(c.Line.prototype,"normalX",{get:function(){return Math.cos(this.angle-1.5707963267948966)}}),Object.defineProperty(c.Line.prototype,"normalY",{get:function(){return Math.sin(this.angle-1.5707963267948966)}}),Object.defineProperty(c.Line.prototype,"normalAngle",{get:function(){return c.Math.wrap(this.angle-1.5707963267948966,-Math.PI,Math.PI)}}),c.Line.intersectsPoints=function(a,b,d,e,f,g){void 0===f&&(f=!0),void 0===g&&(g=new c.Point);var h=b.y-a.y,i=e.y-d.y,j=a.x-b.x,k=d.x-e.x,l=b.x*a.y-a.x*b.y,m=e.x*d.y-d.x*e.y,n=h*k-i*j;if(0===n)return null;if(g.x=(j*m-k*l)/n,g.y=(i*l-h*m)/n,f){var o=(e.y-d.y)*(b.x-a.x)-(e.x-d.x)*(b.y-a.y),p=((e.x-d.x)*(a.y-d.y)-(e.y-d.y)*(a.x-d.x))/o,q=((b.x-a.x)*(a.y-d.y)-(b.y-a.y)*(a.x-d.x))/o;return p>=0&&1>=p&&q>=0&&1>=q?g:null}return g},c.Line.intersects=function(a,b,d,e){return c.Line.intersectsPoints(a.start,a.end,b.start,b.end,d,e)},c.Line.intersectsRectangle=function(a,b){if(!c.Rectangle.intersects(a,b))return!1;var d=a.start.x,e=a.start.y,f=a.end.x,g=a.end.y,h=b.x,i=b.y,j=b.right,k=b.bottom,l=0;if(d>=h&&j>=d&&e>=i&&k>=e||f>=h&&j>=f&&g>=i&&k>=g)return!0;if(h>d&&f>=h){if(l=e+(g-e)*(h-d)/(f-d),l>i&&k>=l)return!0}else if(d>j&&j>=f&&(l=e+(g-e)*(j-d)/(f-d),l>=i&&k>=l))return!0;if(i>e&&g>=i){if(l=d+(f-d)*(i-e)/(g-e),l>=h&&j>=l)return!0}else if(e>k&&k>=g&&(l=d+(f-d)*(k-e)/(g-e),l>=h&&j>=l))return!0;return!1},c.Line.reflect=function(a,b){return 2*b.normalAngle-3.141592653589793-a.angle},c.Matrix=function(a,b,d,e,f,g){(void 0===a||null===a)&&(a=1),(void 0===b||null===b)&&(b=0),(void 0===d||null===d)&&(d=0),(void 0===e||null===e)&&(e=1),(void 0===f||null===f)&&(f=0),(void 0===g||null===g)&&(g=0),this.a=a,this.b=b,this.c=d,this.d=e,this.tx=f,this.ty=g,this.type=c.MATRIX},c.Matrix.prototype={fromArray:function(a){return this.setTo(a[0],a[1],a[3],a[4],a[2],a[5])},setTo:function(a,b,c,d,e,f){return this.a=a,this.b=b,this.c=c,this.d=d,this.tx=e,this.ty=f,this},clone:function(a){return void 0===a||null===a?a=new c.Matrix(this.a,this.b,this.c,this.d,this.tx,this.ty):(a.a=this.a,a.b=this.b,a.c=this.c,a.d=this.d,a.tx=this.tx,a.ty=this.ty),a},copyTo:function(a){return a.copyFrom(this),a},copyFrom:function(a){return this.a=a.a,this.b=a.b,this.c=a.c,this.d=a.d,this.tx=a.tx,this.ty=a.ty,this},toArray:function(a,b){return void 0===b&&(b=new PIXI.Float32Array(9)),a?(b[0]=this.a,b[1]=this.b,b[2]=0,b[3]=this.c,b[4]=this.d,b[5]=0,b[6]=this.tx,b[7]=this.ty,b[8]=1):(b[0]=this.a,b[1]=this.c,b[2]=this.tx,b[3]=this.b,b[4]=this.d,b[5]=this.ty,b[6]=0,b[7]=0,b[8]=1),b},apply:function(a,b){return void 0===b&&(b=new c.Point),b.x=this.a*a.x+this.c*a.y+this.tx,b.y=this.b*a.x+this.d*a.y+this.ty,b},applyInverse:function(a,b){void 0===b&&(b=new c.Point);var d=1/(this.a*this.d+this.c*-this.b),e=a.x,f=a.y;return b.x=this.d*d*e+-this.c*d*f+(this.ty*this.c-this.tx*this.d)*d,b.y=this.a*d*f+-this.b*d*e+(-this.ty*this.a+this.tx*this.b)*d,b},translate:function(a,b){return this.tx+=a,this.ty+=b,this},scale:function(a,b){return this.a*=a,this.d*=b,this.c*=a,this.b*=b,this.tx*=a,this.ty*=b,this},rotate:function(a){var b=Math.cos(a),c=Math.sin(a),d=this.a,e=this.c,f=this.tx;return this.a=d*b-this.b*c,this.b=d*c+this.b*b,this.c=e*b-this.d*c,this.d=e*c+this.d*b,this.tx=f*b-this.ty*c,this.ty=f*c+this.ty*b,this},append:function(a){var b=this.a,c=this.b,d=this.c,e=this.d;return this.a=a.a*b+a.b*d,this.b=a.a*c+a.b*e,this.c=a.c*b+a.d*d,this.d=a.c*c+a.d*e,this.tx=a.tx*b+a.ty*d+this.tx,this.ty=a.tx*c+a.ty*e+this.ty,this},identity:function(){return this.setTo(1,0,0,1,0,0)}},c.identityMatrix=new c.Matrix,PIXI.Matrix=c.Matrix,PIXI.identityMatrix=c.identityMatrix,c.Point=function(a,b){a=a||0,b=b||0,this.x=a,this.y=b,this.type=c.POINT},c.Point.prototype={copyFrom:function(a){return this.setTo(a.x,a.y)},invert:function(){return this.setTo(this.y,this.x)},setTo:function(a,b){return this.x=a||0,this.y=b||(0!==b?this.x:0),this},set:function(a,b){return this.x=a||0,this.y=b||(0!==b?this.x:0),this},add:function(a,b){return this.x+=a,this.y+=b,this},subtract:function(a,b){return this.x-=a,this.y-=b,this},multiply:function(a,b){return this.x*=a,this.y*=b,this},divide:function(a,b){return this.x/=a,this.y/=b,this},clampX:function(a,b){return this.x=c.Math.clamp(this.x,a,b),this},clampY:function(a,b){return this.y=c.Math.clamp(this.y,a,b),this},clamp:function(a,b){return this.x=c.Math.clamp(this.x,a,b),this.y=c.Math.clamp(this.y,a,b),this},clone:function(a){return void 0===a||null===a?a=new c.Point(this.x,this.y):a.setTo(this.x,this.y),a},copyTo:function(a){return a.x=this.x,a.y=this.y,a},distance:function(a,b){return c.Point.distance(this,a,b)},equals:function(a){return a.x===this.x&&a.y===this.y},angle:function(a,b){return void 0===b&&(b=!1),b?c.Math.radToDeg(Math.atan2(a.y-this.y,a.x-this.x)):Math.atan2(a.y-this.y,a.x-this.x)},rotate:function(a,b,d,e,f){return c.Point.rotate(this,a,b,d,e,f)},getMagnitude:function(){return Math.sqrt(this.x*this.x+this.y*this.y)},getMagnitudeSq:function(){return this.x*this.x+this.y*this.y},setMagnitude:function(a){return this.normalize().multiply(a,a)},normalize:function(){if(!this.isZero()){var a=this.getMagnitude();this.x/=a,this.y/=a}return this},isZero:function(){return 0===this.x&&0===this.y},dot:function(a){return this.x*a.x+this.y*a.y},cross:function(a){return this.x*a.y-this.y*a.x},perp:function(){return this.setTo(-this.y,this.x)},rperp:function(){return this.setTo(this.y,-this.x)},normalRightHand:function(){return this.setTo(-1*this.y,this.x)},floor:function(){return this.setTo(Math.floor(this.x),Math.floor(this.y))},ceil:function(){return this.setTo(Math.ceil(this.x),Math.ceil(this.y))},toString:function(){return"[{Point (x="+this.x+" y="+this.y+")}]"}},c.Point.prototype.constructor=c.Point,c.Point.add=function(a,b,d){return void 0===d&&(d=new c.Point),d.x=a.x+b.x,d.y=a.y+b.y,d},c.Point.subtract=function(a,b,d){return void 0===d&&(d=new c.Point),d.x=a.x-b.x,d.y=a.y-b.y,d},c.Point.multiply=function(a,b,d){return void 0===d&&(d=new c.Point),d.x=a.x*b.x,d.y=a.y*b.y,d},c.Point.divide=function(a,b,d){return void 0===d&&(d=new c.Point),d.x=a.x/b.x,d.y=a.y/b.y,d},c.Point.equals=function(a,b){return a.x===b.x&&a.y===b.y},c.Point.angle=function(a,b){return Math.atan2(a.y-b.y,a.x-b.x)},c.Point.negative=function(a,b){return void 0===b&&(b=new c.Point),b.setTo(-a.x,-a.y)},c.Point.multiplyAdd=function(a,b,d,e){return void 0===e&&(e=new c.Point),e.setTo(a.x+b.x*d,a.y+b.y*d)},c.Point.interpolate=function(a,b,d,e){return void 0===e&&(e=new c.Point),e.setTo(a.x+(b.x-a.x)*d,a.y+(b.y-a.y)*d)},c.Point.perp=function(a,b){return void 0===b&&(b=new c.Point),b.setTo(-a.y,a.x)},c.Point.rperp=function(a,b){return void 0===b&&(b=new c.Point),b.setTo(a.y,-a.x)},c.Point.distance=function(a,b,d){var e=c.Math.distance(a.x,a.y,b.x,b.y);return d?Math.round(e):e},c.Point.project=function(a,b,d){void 0===d&&(d=new c.Point);var e=a.dot(b)/b.getMagnitudeSq();return 0!==e&&d.setTo(e*b.x,e*b.y),d},c.Point.projectUnit=function(a,b,d){void 0===d&&(d=new c.Point);var e=a.dot(b);return 0!==e&&d.setTo(e*b.x,e*b.y),d},c.Point.normalRightHand=function(a,b){return void 0===b&&(b=new c.Point),b.setTo(-1*a.y,a.x)},c.Point.normalize=function(a,b){void 0===b&&(b=new c.Point);var d=a.getMagnitude();return 0!==d&&b.setTo(a.x/d,a.y/d),b},c.Point.rotate=function(a,b,d,e,f,g){if(f&&(e=c.Math.degToRad(e)),void 0===g){a.subtract(b,d);var h=Math.sin(e),i=Math.cos(e),j=i*a.x-h*a.y,k=h*a.x+i*a.y;a.x=j+b,a.y=k+d}else{var l=e+Math.atan2(a.y-d,a.x-b);a.x=b+g*Math.cos(l),a.y=d+g*Math.sin(l)}return a},c.Point.centroid=function(a,b){if(void 0===b&&(b=new c.Point),"[object Array]"!==Object.prototype.toString.call(a))throw new Error("Phaser.Point. Parameter 'points' must be an array");var d=a.length;if(1>d)throw new Error("Phaser.Point. Parameter 'points' array must not be empty");if(1===d)return b.copyFrom(a[0]),b;for(var e=0;d>e;e++)c.Point.add(b,a[e],b);return b.divide(d,d),b},c.Point.parse=function(a,b,d){b=b||"x",d=d||"y";var e=new c.Point;return a[b]&&(e.x=parseInt(a[b],10)),a[d]&&(e.y=parseInt(a[d],10)),e},PIXI.Point=c.Point,c.Polygon=function(){this.area=0,this._points=[],arguments.length>0&&this.setTo.apply(this,arguments),this.closed=!0,this.type=c.POLYGON},c.Polygon.prototype={toNumberArray:function(a){void 0===a&&(a=[]);for(var b=0;b=h&&j>b||b>=j&&h>b)&&(i-g)*(b-h)/(j-h)+g>a&&(d=!d)}return d},setTo:function(a){if(this.area=0,this._points=[],arguments.length>0){Array.isArray(a)||(a=Array.prototype.slice.call(arguments));for(var b=Number.MAX_VALUE,c=0,d=a.length;d>c;c++){if("number"==typeof a[c]){var e=new PIXI.Point(a[c],a[c+1]);c++}else if(Array.isArray(a[c]))var e=new PIXI.Point(a[c][0],a[c][1]);else var e=new PIXI.Point(a[c].x,a[c].y);this._points.push(e),e.yf;f++)b=this._points[f],c=f===g-1?this._points[0]:this._points[f+1],d=(b.y-a+(c.y-a))/2,e=b.x-c.x,this.area+=d*e;return this.area}},c.Polygon.prototype.constructor=c.Polygon,Object.defineProperty(c.Polygon.prototype,"points",{get:function(){return this._points},set:function(a){null!=a?this.setTo(a):this.setTo()}}),PIXI.Polygon=c.Polygon,c.Rectangle=function(a,b,d,e){a=a||0,b=b||0,d=d||0,e=e||0,this.x=a,this.y=b,this.width=d,this.height=e,this.type=c.RECTANGLE},c.Rectangle.prototype={offset:function(a,b){return this.x+=a,this.y+=b,this},offsetPoint:function(a){return this.offset(a.x,a.y)},setTo:function(a,b,c,d){return this.x=a,this.y=b,this.width=c,this.height=d,this},scale:function(a,b){return void 0===b&&(b=a),this.width*=a,this.height*=b,this},centerOn:function(a,b){return this.centerX=a,this.centerY=b,this},floor:function(){this.x=Math.floor(this.x),this.y=Math.floor(this.y)},floorAll:function(){this.x=Math.floor(this.x),this.y=Math.floor(this.y),this.width=Math.floor(this.width),this.height=Math.floor(this.height)},ceil:function(){this.x=Math.ceil(this.x),this.y=Math.ceil(this.y)},ceilAll:function(){this.x=Math.ceil(this.x),this.y=Math.ceil(this.y),this.width=Math.ceil(this.width),this.height=Math.ceil(this.height)},copyFrom:function(a){return this.setTo(a.x,a.y,a.width,a.height)},copyTo:function(a){return a.x=this.x,a.y=this.y,a.width=this.width,a.height=this.height,a},inflate:function(a,b){return c.Rectangle.inflate(this,a,b)},size:function(a){return c.Rectangle.size(this,a)},resize:function(a,b){return this.width=a,this.height=b,this},clone:function(a){return c.Rectangle.clone(this,a)},contains:function(a,b){return c.Rectangle.contains(this,a,b)},containsRect:function(a){return c.Rectangle.containsRect(a,this)},equals:function(a){return c.Rectangle.equals(this,a)},intersection:function(a,b){return c.Rectangle.intersection(this,a,b)},intersects:function(a){return c.Rectangle.intersects(this,a)},intersectsRaw:function(a,b,d,e,f){return c.Rectangle.intersectsRaw(this,a,b,d,e,f)},union:function(a,b){return c.Rectangle.union(this,a,b)},random:function(a){return void 0===a&&(a=new c.Point),a.x=this.randomX,a.y=this.randomY,a},getPoint:function(a,b){switch(void 0===b&&(b=new c.Point),a){default:case c.TOP_LEFT:return b.set(this.x,this.y);case c.TOP_CENTER:return b.set(this.centerX,this.y);case c.TOP_RIGHT:return b.set(this.right,this.y);case c.LEFT_CENTER:return b.set(this.x,this.centerY);case c.CENTER:return b.set(this.centerX,this.centerY);case c.RIGHT_CENTER:return b.set(this.right,this.centerY);case c.BOTTOM_LEFT:return b.set(this.x,this.bottom);case c.BOTTOM_CENTER:return b.set(this.centerX,this.bottom);case c.BOTTOM_RIGHT:return b.set(this.right,this.bottom)}},toString:function(){return"[{Rectangle (x="+this.x+" y="+this.y+" width="+this.width+" height="+this.height+" empty="+this.empty+")}]"}},Object.defineProperty(c.Rectangle.prototype,"halfWidth",{get:function(){return Math.round(this.width/2)}}),Object.defineProperty(c.Rectangle.prototype,"halfHeight",{get:function(){return Math.round(this.height/2)}}),Object.defineProperty(c.Rectangle.prototype,"bottom",{get:function(){return this.y+this.height},set:function(a){a<=this.y?this.height=0:this.height=a-this.y}}),Object.defineProperty(c.Rectangle.prototype,"bottomLeft",{get:function(){return new c.Point(this.x,this.bottom)},set:function(a){this.x=a.x,this.bottom=a.y}}),Object.defineProperty(c.Rectangle.prototype,"bottomRight",{get:function(){return new c.Point(this.right,this.bottom)},set:function(a){this.right=a.x,this.bottom=a.y}}),Object.defineProperty(c.Rectangle.prototype,"left",{get:function(){return this.x},set:function(a){a>=this.right?this.width=0:this.width=this.right-a,this.x=a}}),Object.defineProperty(c.Rectangle.prototype,"right",{get:function(){return this.x+this.width},set:function(a){a<=this.x?this.width=0:this.width=a-this.x}}),Object.defineProperty(c.Rectangle.prototype,"volume",{get:function(){return this.width*this.height}}),Object.defineProperty(c.Rectangle.prototype,"perimeter",{get:function(){return 2*this.width+2*this.height}}),Object.defineProperty(c.Rectangle.prototype,"centerX",{get:function(){return this.x+this.halfWidth},set:function(a){this.x=a-this.halfWidth}}),Object.defineProperty(c.Rectangle.prototype,"centerY",{get:function(){return this.y+this.halfHeight},set:function(a){this.y=a-this.halfHeight}}),Object.defineProperty(c.Rectangle.prototype,"randomX",{get:function(){return this.x+Math.random()*this.width}}),Object.defineProperty(c.Rectangle.prototype,"randomY",{get:function(){return this.y+Math.random()*this.height}}),Object.defineProperty(c.Rectangle.prototype,"top",{get:function(){return this.y},set:function(a){a>=this.bottom?(this.height=0,this.y=a):this.height=this.bottom-a}}),Object.defineProperty(c.Rectangle.prototype,"topLeft",{get:function(){return new c.Point(this.x,this.y)},set:function(a){this.x=a.x,this.y=a.y}}),Object.defineProperty(c.Rectangle.prototype,"topRight",{get:function(){return new c.Point(this.x+this.width,this.y)},set:function(a){this.right=a.x,this.y=a.y}}),Object.defineProperty(c.Rectangle.prototype,"empty",{get:function(){return!this.width||!this.height},set:function(a){a===!0&&this.setTo(0,0,0,0)}}),c.Rectangle.prototype.constructor=c.Rectangle,c.Rectangle.inflate=function(a,b,c){return a.x-=b,a.width+=2*b,a.y-=c,a.height+=2*c,a},c.Rectangle.inflatePoint=function(a,b){return c.Rectangle.inflate(a,b.x,b.y)},c.Rectangle.size=function(a,b){return void 0===b||null===b?b=new c.Point(a.width,a.height):b.setTo(a.width,a.height),b},c.Rectangle.clone=function(a,b){return void 0===b||null===b?b=new c.Rectangle(a.x,a.y,a.width,a.height):b.setTo(a.x,a.y,a.width,a.height),b},c.Rectangle.contains=function(a,b,c){return a.width<=0||a.height<=0?!1:b>=a.x&&b=a.y&&c=a&&a+c>e&&f>=b&&b+d>f},c.Rectangle.containsPoint=function(a,b){return c.Rectangle.contains(a,b.x,b.y)},c.Rectangle.containsRect=function(a,b){return a.volume>b.volume?!1:a.x>=b.x&&a.y>=b.y&&a.rightb.right||a.y>b.bottom)},c.Rectangle.intersectsRaw=function(a,b,c,d,e,f){return void 0===f&&(f=0),!(b>a.right+f||ca.bottom+f||ed&&(d=a.x),a.xf&&(f=a.y),a.y=c&&a<=c+this.width){var d=this.y;if(b>=d&&b<=d+this.height)return!0}return!1}},c.RoundedRectangle.prototype.constructor=c.RoundedRectangle,PIXI.RoundedRectangle=c.RoundedRectangle,c.Camera=function(a,b,d,e,f,g){this.game=a,this.world=a.world,this.id=0,this.view=new c.Rectangle(d,e,f,g),this.bounds=new c.Rectangle(d,e,f,g),this.deadzone=null,this.visible=!0,this.roundPx=!0,this.atLimit={x:!1,y:!1},this.target=null,this.displayObject=null,this.scale=null,this.totalInView=0,this.lerp=new c.Point(1,1),this.onShakeComplete=new c.Signal,this.onFlashComplete=new c.Signal,this.onFadeComplete=new c.Signal,this.fx=null,this._targetPosition=new c.Point,this._edge=0,this._position=new c.Point,this._shake={intensity:0,duration:0,horizontal:!1,vertical:!1,shakeBounds:!0,x:0,y:0},this._fxDuration=0,this._fxType=0},c.Camera.FOLLOW_LOCKON=0,c.Camera.FOLLOW_PLATFORMER=1,c.Camera.FOLLOW_TOPDOWN=2,c.Camera.FOLLOW_TOPDOWN_TIGHT=3,c.Camera.SHAKE_BOTH=4,c.Camera.SHAKE_HORIZONTAL=5,c.Camera.SHAKE_VERTICAL=6,c.Camera.ENABLE_FX=!0,c.Camera.prototype={boot:function(){this.displayObject=this.game.world,this.scale=this.game.world.scale,this.game.camera=this,c.Graphics&&c.Camera.ENABLE_FX&&(this.fx=new c.Graphics(this.game), -this.game.stage.addChild(this.fx))},preUpdate:function(){this.totalInView=0},follow:function(a,b,d,e){void 0===b&&(b=c.Camera.FOLLOW_LOCKON),void 0===d&&(d=1),void 0===e&&(e=1),this.target=a,this.lerp.set(d,e);var f;switch(b){case c.Camera.FOLLOW_PLATFORMER:var g=this.width/8,h=this.height/3;this.deadzone=new c.Rectangle((this.width-g)/2,(this.height-h)/2-.25*h,g,h);break;case c.Camera.FOLLOW_TOPDOWN:f=Math.max(this.width,this.height)/4,this.deadzone=new c.Rectangle((this.width-f)/2,(this.height-f)/2,f,f);break;case c.Camera.FOLLOW_TOPDOWN_TIGHT:f=Math.max(this.width,this.height)/8,this.deadzone=new c.Rectangle((this.width-f)/2,(this.height-f)/2,f,f);break;case c.Camera.FOLLOW_LOCKON:this.deadzone=null;break;default:this.deadzone=null}},unfollow:function(){this.target=null},focusOn:function(a){this.setPosition(Math.round(a.x-this.view.halfWidth),Math.round(a.y-this.view.halfHeight))},focusOnXY:function(a,b){this.setPosition(Math.round(a-this.view.halfWidth),Math.round(b-this.view.halfHeight))},shake:function(a,b,d,e,f){return void 0===a&&(a=.05),void 0===b&&(b=500),void 0===d&&(d=!0),void 0===e&&(e=c.Camera.SHAKE_BOTH),void 0===f&&(f=!0),!d&&this._shake.duration>0?!1:(this._shake.intensity=a,this._shake.duration=b,this._shake.shakeBounds=f,this._shake.x=0,this._shake.y=0,this._shake.horizontal=e===c.Camera.SHAKE_BOTH||e===c.Camera.SHAKE_HORIZONTAL,this._shake.vertical=e===c.Camera.SHAKE_BOTH||e===c.Camera.SHAKE_VERTICAL,!0)},flash:function(a,b,c){return void 0===a&&(a=16777215),void 0===b&&(b=500),void 0===c&&(c=!1),!this.fx||!c&&this._fxDuration>0?!1:(this.fx.clear(),this.fx.beginFill(a),this.fx.drawRect(0,0,this.width,this.height),this.fx.endFill(),this.fx.alpha=1,this._fxDuration=b,this._fxType=0,!0)},fade:function(a,b,c){return void 0===a&&(a=0),void 0===b&&(b=500),void 0===c&&(c=!1),!this.fx||!c&&this._fxDuration>0?!1:(this.fx.clear(),this.fx.beginFill(a),this.fx.drawRect(0,0,this.width,this.height),this.fx.endFill(),this.fx.alpha=0,this._fxDuration=b,this._fxType=1,!0)},update:function(){this._fxDuration>0&&this.updateFX(),this._shake.duration>0&&this.updateShake(),this.bounds&&this.checkBounds(),this.roundPx&&(this.view.floor(),this._shake.x=Math.floor(this._shake.x),this._shake.y=Math.floor(this._shake.y)),this.displayObject.position.x=-this.view.x,this.displayObject.position.y=-this.view.y},updateFX:function(){0===this._fxType?(this.fx.alpha-=this.game.time.elapsedMS/this._fxDuration,this.fx.alpha<=0&&(this._fxDuration=0,this.fx.alpha=0,this.onFlashComplete.dispatch())):(this.fx.alpha+=this.game.time.elapsedMS/this._fxDuration,this.fx.alpha>=1&&(this._fxDuration=0,this.fx.alpha=1,this.onFadeComplete.dispatch()))},updateShake:function(){this._shake.duration-=this.game.time.elapsedMS,this._shake.duration<=0?(this.onShakeComplete.dispatch(),this._shake.x=0,this._shake.y=0):(this._shake.horizontal&&(this._shake.x=this.game.rnd.frac()*this._shake.intensity*this.view.width*2-this._shake.intensity*this.view.width),this._shake.vertical&&(this._shake.y=this.game.rnd.frac()*this._shake.intensity*this.view.height*2-this._shake.intensity*this.view.height))},updateTarget:function(){this._targetPosition.x=this.view.x+this.target.worldPosition.x,this._targetPosition.y=this.view.y+this.target.worldPosition.y,this.deadzone?(this._edge=this._targetPosition.x-this.view.x,this._edgethis.deadzone.right&&(this.view.x=this.game.math.linear(this.view.x,this._targetPosition.x-this.deadzone.right,this.lerp.x)),this._edge=this._targetPosition.y-this.view.y,this._edgethis.deadzone.bottom&&(this.view.y=this.game.math.linear(this.view.y,this._targetPosition.y-this.deadzone.bottom,this.lerp.y))):(this.view.x=this.game.math.linear(this.view.x,this._targetPosition.x-this.view.halfWidth,this.lerp.x),this.view.y=this.game.math.linear(this.view.y,this._targetPosition.y-this.view.halfHeight,this.lerp.y)),this.bounds&&this.checkBounds(),this.roundPx&&this.view.floor(),this.displayObject.position.x=-this.view.x,this.displayObject.position.y=-this.view.y},setBoundsToWorld:function(){this.bounds&&this.bounds.copyFrom(this.game.world.bounds)},checkBounds:function(){this.atLimit.x=!1,this.atLimit.y=!1;var a=this.view.x+this._shake.x,b=this.view.right+this._shake.x,c=this.view.y+this._shake.y,d=this.view.bottom+this._shake.y;a<=this.bounds.x*this.scale.x&&(this.atLimit.x=!0,this.view.x=this.bounds.x*this.scale.x,this._shake.shakeBounds||(this._shake.x=0)),b>=this.bounds.right*this.scale.x&&(this.atLimit.x=!0,this.view.x=this.bounds.right*this.scale.x-this.width,this._shake.shakeBounds||(this._shake.x=0)),c<=this.bounds.top*this.scale.y&&(this.atLimit.y=!0,this.view.y=this.bounds.top*this.scale.y,this._shake.shakeBounds||(this._shake.y=0)),d>=this.bounds.bottom*this.scale.y&&(this.atLimit.y=!0,this.view.y=this.bounds.bottom*this.scale.y-this.height,this._shake.shakeBounds||(this._shake.y=0))},setPosition:function(a,b){this.view.x=a,this.view.y=b,this.bounds&&this.checkBounds()},setSize:function(a,b){this.view.width=a,this.view.height=b},reset:function(){this.target=null,this.view.x=0,this.view.y=0,this._shake.duration=0,this.resetFX()},resetFX:function(){this.fx.clear(),this.fx.alpha=0,this._fxDuration=0}},c.Camera.prototype.constructor=c.Camera,Object.defineProperty(c.Camera.prototype,"x",{get:function(){return this.view.x},set:function(a){this.view.x=a,this.bounds&&this.checkBounds()}}),Object.defineProperty(c.Camera.prototype,"y",{get:function(){return this.view.y},set:function(a){this.view.y=a,this.bounds&&this.checkBounds()}}),Object.defineProperty(c.Camera.prototype,"position",{get:function(){return this._position.set(this.view.x,this.view.y),this._position},set:function(a){"undefined"!=typeof a.x&&(this.view.x=a.x),"undefined"!=typeof a.y&&(this.view.y=a.y),this.bounds&&this.checkBounds()}}),Object.defineProperty(c.Camera.prototype,"width",{get:function(){return this.view.width},set:function(a){this.view.width=a}}),Object.defineProperty(c.Camera.prototype,"height",{get:function(){return this.view.height},set:function(a){this.view.height=a}}),Object.defineProperty(c.Camera.prototype,"shakeIntensity",{get:function(){return this._shake.intensity},set:function(a){this._shake.intensity=a}}),c.State=function(){this.game=null,this.key="",this.add=null,this.make=null,this.camera=null,this.cache=null,this.input=null,this.load=null,this.math=null,this.sound=null,this.scale=null,this.stage=null,this.state=null,this.time=null,this.tweens=null,this.world=null,this.particles=null,this.physics=null,this.rnd=null},c.State.prototype={init:function(){},preload:function(){},loadUpdate:function(){},loadRender:function(){},create:function(){},update:function(){},preRender:function(){},render:function(){},resize:function(){},paused:function(){},resumed:function(){},pauseUpdate:function(){},shutdown:function(){}},c.State.prototype.constructor=c.State,c.StateManager=function(a,b){this.game=a,this.states={},this._pendingState=null,"undefined"!=typeof b&&null!==b&&(this._pendingState=b),this._clearWorld=!1,this._clearCache=!1,this._created=!1,this._args=[],this.current="",this.onStateChange=new c.Signal,this.onInitCallback=null,this.onPreloadCallback=null,this.onCreateCallback=null,this.onUpdateCallback=null,this.onRenderCallback=null,this.onResizeCallback=null,this.onPreRenderCallback=null,this.onLoadUpdateCallback=null,this.onLoadRenderCallback=null,this.onPausedCallback=null,this.onResumedCallback=null,this.onPauseUpdateCallback=null,this.onShutDownCallback=null},c.StateManager.prototype={boot:function(){this.game.onPause.add(this.pause,this),this.game.onResume.add(this.resume,this),null!==this._pendingState&&"string"!=typeof this._pendingState&&this.add("default",this._pendingState,!0)},add:function(a,b,d){void 0===d&&(d=!1);var e;return b instanceof c.State?e=b:"object"==typeof b?(e=b,e.game=this.game):"function"==typeof b&&(e=new b(this.game)),this.states[a]=e,d&&(this.game.isBooted?this.start(a):this._pendingState=a),e},remove:function(a){this.current===a&&(this.callbackContext=null,this.onInitCallback=null,this.onShutDownCallback=null,this.onPreloadCallback=null,this.onLoadRenderCallback=null,this.onLoadUpdateCallback=null,this.onCreateCallback=null,this.onUpdateCallback=null,this.onPreRenderCallback=null,this.onRenderCallback=null,this.onResizeCallback=null,this.onPausedCallback=null,this.onResumedCallback=null,this.onPauseUpdateCallback=null),delete this.states[a]},start:function(a,b,c){void 0===b&&(b=!0),void 0===c&&(c=!1),this.checkState(a)&&(this._pendingState=a,this._clearWorld=b,this._clearCache=c,arguments.length>3&&(this._args=Array.prototype.splice.call(arguments,3)))},restart:function(a,b){void 0===a&&(a=!0),void 0===b&&(b=!1),this._pendingState=this.current,this._clearWorld=a,this._clearCache=b,arguments.length>2&&(this._args=Array.prototype.slice.call(arguments,2))},dummy:function(){},preUpdate:function(){if(this._pendingState&&this.game.isBooted){var a=this.current;if(this.clearCurrentState(),this.setCurrentState(this._pendingState),this.onStateChange.dispatch(this.current,a),this.current!==this._pendingState)return;this._pendingState=null,this.onPreloadCallback?(this.game.load.reset(!0),this.onPreloadCallback.call(this.callbackContext,this.game),0===this.game.load.totalQueuedFiles()&&0===this.game.load.totalQueuedPacks()?this.loadComplete():this.game.load.start()):this.loadComplete()}},clearCurrentState:function(){this.current&&(this.onShutDownCallback&&this.onShutDownCallback.call(this.callbackContext,this.game),this.game.tweens.removeAll(),this.game.camera.reset(),this.game.input.reset(!0),this.game.physics.clear(),this.game.time.removeAll(),this.game.scale.reset(this._clearWorld),this.game.debug&&this.game.debug.reset(),this._clearWorld&&(this.game.world.shutdown(),this._clearCache&&this.game.cache.destroy()))},checkState:function(a){return this.states[a]?this.states[a].preload||this.states[a].create||this.states[a].update||this.states[a].render?!0:(console.warn("Invalid Phaser State object given. Must contain at least a one of the required functions: preload, create, update or render"),!1):(console.warn("Phaser.StateManager - No state found with the key: "+a),!1)},link:function(a){this.states[a].game=this.game,this.states[a].add=this.game.add,this.states[a].make=this.game.make,this.states[a].camera=this.game.camera,this.states[a].cache=this.game.cache,this.states[a].input=this.game.input,this.states[a].load=this.game.load,this.states[a].math=this.game.math,this.states[a].sound=this.game.sound,this.states[a].scale=this.game.scale,this.states[a].state=this,this.states[a].stage=this.game.stage,this.states[a].time=this.game.time,this.states[a].tweens=this.game.tweens,this.states[a].world=this.game.world,this.states[a].particles=this.game.particles,this.states[a].rnd=this.game.rnd,this.states[a].physics=this.game.physics,this.states[a].key=a},unlink:function(a){this.states[a]&&(this.states[a].game=null,this.states[a].add=null,this.states[a].make=null,this.states[a].camera=null,this.states[a].cache=null,this.states[a].input=null,this.states[a].load=null,this.states[a].math=null,this.states[a].sound=null,this.states[a].scale=null,this.states[a].state=null,this.states[a].stage=null,this.states[a].time=null,this.states[a].tweens=null,this.states[a].world=null,this.states[a].particles=null,this.states[a].rnd=null,this.states[a].physics=null)},setCurrentState:function(a){this.callbackContext=this.states[a],this.link(a),this.onInitCallback=this.states[a].init||this.dummy,this.onPreloadCallback=this.states[a].preload||null,this.onLoadRenderCallback=this.states[a].loadRender||null,this.onLoadUpdateCallback=this.states[a].loadUpdate||null,this.onCreateCallback=this.states[a].create||null,this.onUpdateCallback=this.states[a].update||null,this.onPreRenderCallback=this.states[a].preRender||null,this.onRenderCallback=this.states[a].render||null,this.onResizeCallback=this.states[a].resize||null,this.onPausedCallback=this.states[a].paused||null,this.onResumedCallback=this.states[a].resumed||null,this.onPauseUpdateCallback=this.states[a].pauseUpdate||null,this.onShutDownCallback=this.states[a].shutdown||this.dummy,""!==this.current&&this.game.physics.reset(),this.current=a,this._created=!1,this.onInitCallback.apply(this.callbackContext,this._args),a===this._pendingState&&(this._args=[]),this.game._kickstart=!0},getCurrentState:function(){return this.states[this.current]},loadComplete:function(){this._created===!1&&this.onLoadUpdateCallback&&this.onLoadUpdateCallback.call(this.callbackContext,this.game),this._created===!1&&this.onCreateCallback?(this._created=!0,this.onCreateCallback.call(this.callbackContext,this.game)):this._created=!0},pause:function(){this._created&&this.onPausedCallback&&this.onPausedCallback.call(this.callbackContext,this.game)},resume:function(){this._created&&this.onResumedCallback&&this.onResumedCallback.call(this.callbackContext,this.game)},update:function(){this._created?this.onUpdateCallback&&this.onUpdateCallback.call(this.callbackContext,this.game):this.onLoadUpdateCallback&&this.onLoadUpdateCallback.call(this.callbackContext,this.game)},pauseUpdate:function(){this._created?this.onPauseUpdateCallback&&this.onPauseUpdateCallback.call(this.callbackContext,this.game):this.onLoadUpdateCallback&&this.onLoadUpdateCallback.call(this.callbackContext,this.game)},preRender:function(a){this._created&&this.onPreRenderCallback&&this.onPreRenderCallback.call(this.callbackContext,this.game,a)},resize:function(a,b){this.onResizeCallback&&this.onResizeCallback.call(this.callbackContext,a,b)},render:function(){this._created?this.onRenderCallback&&(this.game.renderType===c.CANVAS?(this.game.context.save(),this.game.context.setTransform(1,0,0,1,0,0),this.onRenderCallback.call(this.callbackContext,this.game),this.game.context.restore()):this.onRenderCallback.call(this.callbackContext,this.game)):this.onLoadRenderCallback&&this.onLoadRenderCallback.call(this.callbackContext,this.game)},destroy:function(){this._clearWorld=!0,this._clearCache=!0,this.clearCurrentState(),this.callbackContext=null,this.onInitCallback=null,this.onShutDownCallback=null,this.onPreloadCallback=null,this.onLoadRenderCallback=null,this.onLoadUpdateCallback=null,this.onCreateCallback=null,this.onUpdateCallback=null,this.onRenderCallback=null,this.onPausedCallback=null,this.onResumedCallback=null,this.onPauseUpdateCallback=null,this.game=null,this.states={},this._pendingState=null,this.current=""}},c.StateManager.prototype.constructor=c.StateManager,Object.defineProperty(c.StateManager.prototype,"created",{get:function(){return this._created}}),c.Signal=function(){},c.Signal.prototype={_bindings:null,_prevParams:null,memorize:!1,_shouldPropagate:!0,active:!0,_boundDispatch:!1,validateListener:function(a,b){if("function"!=typeof a)throw new Error("Phaser.Signal: listener is a required param of {fn}() and should be a Function.".replace("{fn}",b))},_registerListener:function(a,b,d,e,f){var g,h=this._indexOfListener(a,d);if(-1!==h){if(g=this._bindings[h],g.isOnce()!==b)throw new Error("You cannot add"+(b?"":"Once")+"() then add"+(b?"Once":"")+"() the same listener without removing the relationship first.")}else g=new c.SignalBinding(this,a,b,d,e,f),this._addBinding(g);return this.memorize&&this._prevParams&&g.execute(this._prevParams),g},_addBinding:function(a){this._bindings||(this._bindings=[]);var b=this._bindings.length;do b--;while(this._bindings[b]&&a._priority<=this._bindings[b]._priority);this._bindings.splice(b+1,0,a)},_indexOfListener:function(a,b){if(!this._bindings)return-1;void 0===b&&(b=null);for(var c,d=this._bindings.length;d--;)if(c=this._bindings[d],c._listener===a&&c.context===b)return d;return-1},has:function(a,b){return-1!==this._indexOfListener(a,b)},add:function(a,b,c){this.validateListener(a,"add");var d=[];if(arguments.length>3)for(var e=3;e3)for(var e=3;ea||a>=this.children.length?-1:this.getChildAt(a)},c.Group.prototype.create=function(a,b,c,d,e,f){void 0===e&&(e=!0);var g=new this.classType(this.game,a,b,c,d);return g.exists=e,g.visible=e,g.alive=e,this.add(g,!1,f)},c.Group.prototype.createMultiple=function(a,b,c,d){void 0===c&&(c=0),void 0===d&&(d=!1),Array.isArray(b)||(b=[b]),Array.isArray(c)||(c=[c]);var e=this,f=[];return b.forEach(function(b){c.forEach(function(c){for(var g=0;a>g;g++)f.push(e.create(0,0,b,c,d))})}),f},c.Group.prototype.updateZ=function(){for(var a=this.children.length;a--;)this.children[a].z=a},c.Group.prototype.align=function(a,b,d,e,f,g){if(void 0===f&&(f=c.TOP_LEFT),void 0===g&&(g=0),!(0===this.children.length||g>this.children.length||-1===a&&-1===b))for(var h=new c.Rectangle(0,0,d,e),i=a*d,j=b*e,k=g;kthis.children.length-1&&(a=0),this.cursor?(this.cursorIndex=a,this.cursor=this.children[this.cursorIndex],this.cursor):void 0},c.Group.prototype.next=function(){return this.cursor?(this.cursorIndex>=this.children.length-1?this.cursorIndex=0:this.cursorIndex++,this.cursor=this.children[this.cursorIndex],this.cursor):void 0},c.Group.prototype.previous=function(){return this.cursor?(0===this.cursorIndex?this.cursorIndex=this.children.length-1:this.cursorIndex--,this.cursor=this.children[this.cursorIndex],this.cursor):void 0},c.Group.prototype.swap=function(a,b){this.swapChildren(a,b),this.updateZ()},c.Group.prototype.bringToTop=function(a){return a.parent===this&&this.getIndex(a)0&&(this.remove(a,!1,!0),this.addAt(a,0,!0)),a},c.Group.prototype.moveUp=function(a){if(a.parent===this&&this.getIndex(a)0){var b=this.getIndex(a),c=this.getAt(b-1);c&&this.swap(a,c)}return a},c.Group.prototype.xy=function(a,b,c){return 0>a||a>this.children.length?-1:(this.getChildAt(a).x=b,void(this.getChildAt(a).y=c))},c.Group.prototype.reverse=function(){this.children.reverse(),this.updateZ()},c.Group.prototype.getIndex=function(a){return this.children.indexOf(a)},c.Group.prototype.getByName=function(a){for(var b=0;b0))return!1; -var f=b.length;return 1===f?0===d?a[b[0]]=c:1==d?a[b[0]]+=c:2==d?a[b[0]]-=c:3==d?a[b[0]]*=c:4==d&&(a[b[0]]/=c):2===f?0===d?a[b[0]][b[1]]=c:1==d?a[b[0]][b[1]]+=c:2==d?a[b[0]][b[1]]-=c:3==d?a[b[0]][b[1]]*=c:4==d&&(a[b[0]][b[1]]/=c):3===f?0===d?a[b[0]][b[1]][b[2]]=c:1==d?a[b[0]][b[1]][b[2]]+=c:2==d?a[b[0]][b[1]][b[2]]-=c:3==d?a[b[0]][b[1]][b[2]]*=c:4==d&&(a[b[0]][b[1]][b[2]]/=c):4===f&&(0===d?a[b[0]][b[1]][b[2]][b[3]]=c:1==d?a[b[0]][b[1]][b[2]][b[3]]+=c:2==d?a[b[0]][b[1]][b[2]][b[3]]-=c:3==d?a[b[0]][b[1]][b[2]][b[3]]*=c:4==d&&(a[b[0]][b[1]][b[2]][b[3]]/=c)),!0},c.Group.prototype.checkProperty=function(a,b,d,e){return void 0===e&&(e=!1),!c.Utils.getProperty(a,b)&&e?!1:c.Utils.getProperty(a,b)!==d?!1:!0},c.Group.prototype.set=function(a,b,c,d,e,f,g){return void 0===g&&(g=!1),b=b.split("."),void 0===d&&(d=!1),void 0===e&&(e=!1),(d===!1||d&&a.alive)&&(e===!1||e&&a.visible)?this.setProperty(a,b,c,f,g):void 0},c.Group.prototype.setAll=function(a,b,c,d,e,f){void 0===c&&(c=!1),void 0===d&&(d=!1),void 0===f&&(f=!1),a=a.split("."),e=e||0;for(var g=0;g2){c=[];for(var d=2;d2){e=[];for(var f=2;f2){d=[null];for(var e=2;e2){d=[null];for(var e=2;e2){d=[null];for(var e=2;eb[this._sortProperty]?1:a.zb[this._sortProperty]?-1:0},c.Group.prototype.iterate=function(a,b,d,e,f,g){if(d===c.Group.RETURN_TOTAL&&0===this.children.length)return 0;for(var h=0,i=0;i0?this.children[this.children.length-1]:void 0},c.Group.prototype.getBottom=function(){return this.children.length>0?this.children[0]:void 0},c.Group.prototype.getClosestTo=function(a){for(var b=Number.MAX_VALUE,d=0,e=null,f=0;fd&&(b=d,e=g))}return e},c.Group.prototype.getFurthestFrom=function(a){for(var b=0,d=0,e=null,f=0;fb&&(b=d,e=g))}return e},c.Group.prototype.countLiving=function(){return this.iterate("alive",!0,c.Group.RETURN_TOTAL)},c.Group.prototype.countDead=function(){return this.iterate("alive",!1,c.Group.RETURN_TOTAL)},c.Group.prototype.getRandom=function(a,b){return 0===this.children.length?null:(a=a||0,b=b||this.children.length,c.ArrayUtils.getRandomItem(this.children,a,b))},c.Group.prototype.remove=function(a,b,c){if(void 0===b&&(b=!1),void 0===c&&(c=!1),0===this.children.length||-1===this.children.indexOf(a))return!1;c||!a.events||a.destroyPhase||a.events.onRemovedFromGroup$dispatch(a,this);var d=this.removeChild(a);return this.removeFromHash(a),this.updateZ(),this.cursor===a&&this.next(),b&&d&&d.destroy(!0),!0},c.Group.prototype.moveAll=function(a,b){if(void 0===b&&(b=!1),this.children.length>0&&a instanceof c.Group){do a.add(this.children[0],b);while(this.children.length>0);this.hash=[],this.cursor=null}return a},c.Group.prototype.removeAll=function(a,b,c){if(void 0===a&&(a=!1),void 0===b&&(b=!1),void 0===c&&(c=!1),0!==this.children.length){do{!b&&this.children[0].events&&this.children[0].events.onRemovedFromGroup$dispatch(this.children[0],this);var d=this.removeChild(this.children[0]);this.removeFromHash(d),a&&d&&d.destroy(!0,c)}while(this.children.length>0);this.hash=[],this.cursor=null}},c.Group.prototype.removeBetween=function(a,b,c,d){if(void 0===b&&(b=this.children.length-1),void 0===c&&(c=!1),void 0===d&&(d=!1),0!==this.children.length){if(a>b||0>a||b>this.children.length)return!1;for(var e=b;e>=a;){!d&&this.children[e].events&&this.children[e].events.onRemovedFromGroup$dispatch(this.children[e],this);var f=this.removeChild(this.children[e]);this.removeFromHash(f),c&&f&&f.destroy(!0),this.cursor===this.children[e]&&(this.cursor=null),e--}this.updateZ()}},c.Group.prototype.destroy=function(a,b){null===this.game||this.ignoreDestroy||(void 0===a&&(a=!0),void 0===b&&(b=!1),this.onDestroy.dispatch(this,a,b),this.removeAll(a),this.cursor=null,this.filters=null,this.pendingDestroy=!1,b||(this.parent&&this.parent.removeChild(this),this.game=null,this.exists=!1))},Object.defineProperty(c.Group.prototype,"total",{get:function(){return this.iterate("exists",!0,c.Group.RETURN_TOTAL)}}),Object.defineProperty(c.Group.prototype,"length",{get:function(){return this.children.length}}),Object.defineProperty(c.Group.prototype,"angle",{get:function(){return c.Math.radToDeg(this.rotation)},set:function(a){this.rotation=c.Math.degToRad(a)}}),c.World=function(a){c.Group.call(this,a,null,"__world",!1),this.bounds=new c.Rectangle(0,0,a.width,a.height),this.camera=null,this._definedSize=!1,this._width=a.width,this._height=a.height,this.game.state.onStateChange.add(this.stateChange,this)},c.World.prototype=Object.create(c.Group.prototype),c.World.prototype.constructor=c.World,c.World.prototype.boot=function(){this.camera=new c.Camera(this.game,0,0,0,this.game.width,this.game.height),this.game.stage.addChild(this),this.camera.boot()},c.World.prototype.stateChange=function(){this.x=0,this.y=0,this.camera.reset()},c.World.prototype.setBounds=function(a,b,c,d){this._definedSize=!0,this._width=c,this._height=d,this.bounds.setTo(a,b,c,d),this.x=a,this.y=b,this.camera.bounds&&this.camera.bounds.setTo(a,b,Math.max(c,this.game.width),Math.max(d,this.game.height)),this.game.physics.setBoundsToWorld()},c.World.prototype.resize=function(a,b){this._definedSize&&(athis.bounds.right&&(a.x=this.bounds.left)),e&&(a.y+a._currentBounds.heightthis.bounds.bottom&&(a.y=this.bounds.top))):(d&&a.x+bthis.bounds.right&&(a.x=this.bounds.left-b),e&&a.y+bthis.bounds.bottom&&(a.y=this.bounds.top-b))},Object.defineProperty(c.World.prototype,"width",{get:function(){return this.bounds.width},set:function(a){ag;g++)e>g?f.push("color: #ff2424; background: #fff"):f.push("color: #959595; background: #fff");console.log.apply(console,f)}else window.console&&console.log("Phaser v"+a+" | Pixi.js "+PIXI.VERSION+" | "+b+" | "+d+" | http://phaser.io")}},setUpRenderer:function(){if(this.config.canvas?this.canvas=this.config.canvas:this.canvas=c.Canvas.create(this,this.width,this.height,this.config.canvasID,!0),this.config.canvasStyle?this.canvas.style=this.config.canvasStyle:this.canvas.style["-webkit-full-screen"]="width: 100%; height: 100%",this.renderType===c.HEADLESS||this.renderType===c.CANVAS||this.renderType===c.AUTO&&!this.device.webGL){if(!this.device.canvas)throw new Error("Phaser.Game - Cannot create Canvas or WebGL context, aborting.");this.renderType=c.CANVAS,this.renderer=new PIXI.CanvasRenderer(this),this.context=this.renderer.context}else this.renderType=c.WEBGL,this.renderer=new PIXI.WebGLRenderer(this),this.context=null,this.canvas.addEventListener("webglcontextlost",this.contextLost.bind(this),!1),this.canvas.addEventListener("webglcontextrestored",this.contextRestored.bind(this),!1);this.device.cocoonJS&&(this.canvas.screencanvas=this.renderType===c.CANVAS?!0:!1),this.renderType!==c.HEADLESS&&(this.stage.smoothed=this.antialias,c.Canvas.addToDOM(this.canvas,this.parent,!1),c.Canvas.setTouchAction(this.canvas))},contextLost:function(a){a.preventDefault(),this.renderer.contextLost=!0},contextRestored:function(){this.renderer.initContext(),this.cache.clearGLTextures(),this.renderer.contextLost=!1},update:function(a){if(this.time.update(a),this._kickstart)return this.updateLogic(this.time.desiredFpsMult),this.updateRender(this.time.slowMotion*this.time.desiredFps),void(this._kickstart=!1);if(this._spiraling>1&&!this.forceSingleUpdate)this.time.time>this._nextFpsNotification&&(this._nextFpsNotification=this.time.time+1e4,this.fpsProblemNotifier.dispatch()),this._deltaTime=0,this._spiraling=0,this.updateRender(this.time.slowMotion*this.time.desiredFps);else{var b=1e3*this.time.slowMotion/this.time.desiredFps;this._deltaTime+=Math.max(Math.min(3*b,this.time.elapsed),0);var c=0;for(this.updatesThisFrame=Math.floor(this._deltaTime/b),this.forceSingleUpdate&&(this.updatesThisFrame=Math.min(1,this.updatesThisFrame));this._deltaTime>=b&&(this._deltaTime-=b,this.currentUpdateID=c,this.updateLogic(this.time.desiredFpsMult),c++,!this.forceSingleUpdate||1!==c);)this.time.refresh();c>this._lastCount?this._spiraling++:c=c.Input.MAX_POINTERS)return console.warn("Phaser.Input.addPointer: Maximum limit of "+c.Input.MAX_POINTERS+" pointers reached."),null;var a=this.pointers.length+1,b=new c.Pointer(this.game,a,c.PointerMode.TOUCH);return this.pointers.push(b),this["pointer"+a]=b,b},update:function(){if(this.keyboard&&this.keyboard.update(),this.pollRate>0&&this._pollCounter=0&&this.countActivePointers(this.maxPointers)>=this.maxPointers)return null;if(!this.pointer1.active)return this.pointer1.start(a);if(!this.pointer2.active)return this.pointer2.start(a);for(var b=2;b0;c++){var d=this.pointers[c];d.active&&b--}return a-b},getPointer:function(a){void 0===a&&(a=!1);for(var b=0;b=g&&this._localPoint.x=h&&this._localPoint.y=g&&this._localPoint.x=h&&this._localPoint.y0&&this._pollCounterthis.game.time.time},justReleased:function(a){return a=a||250,this.isUp&&this.timeUp+a>this.game.time.time},reset:function(){this.isDown=!1,this.isUp=!0,this.timeDown=this.game.time.time,this.repeats=0,this.altKey=!1,this.shiftKey=!1,this.ctrlKey=!1},destroy:function(){this.onDown.dispose(),this.onUp.dispose(),this.onFloat.dispose(),this.parent=null,this.game=null}},c.DeviceButton.prototype.constructor=c.DeviceButton,Object.defineProperty(c.DeviceButton.prototype,"duration",{get:function(){return this.isUp?-1:this.game.time.time-this.timeDown}}),c.Pointer=function(a,b,d){this.game=a,this.id=b,this.type=c.POINTER,this.exists=!0,this.identifier=0,this.pointerId=null,this.pointerMode=d||c.PointerMode.CURSOR|c.PointerMode.CONTACT,this.target=null,this.button=null,this.leftButton=new c.DeviceButton(this,c.Pointer.LEFT_BUTTON),this.middleButton=new c.DeviceButton(this,c.Pointer.MIDDLE_BUTTON),this.rightButton=new c.DeviceButton(this,c.Pointer.RIGHT_BUTTON),this.backButton=new c.DeviceButton(this,c.Pointer.BACK_BUTTON),this.forwardButton=new c.DeviceButton(this,c.Pointer.FORWARD_BUTTON),this.eraserButton=new c.DeviceButton(this,c.Pointer.ERASER_BUTTON),this._holdSent=!1,this._history=[],this._nextDrop=0,this._stateReset=!1,this.withinGame=!1,this.clientX=-1,this.clientY=-1,this.pageX=-1,this.pageY=-1,this.screenX=-1,this.screenY=-1,this.rawMovementX=0,this.rawMovementY=0,this.movementX=0,this.movementY=0,this.x=-1,this.y=-1,this.isMouse=0===b,this.isDown=!1,this.isUp=!0,this.timeDown=0,this.timeUp=0,this.previousTapTime=0,this.totalTouches=0,this.msSinceLastClick=Number.MAX_VALUE,this.targetObject=null,this.interactiveCandidates=[],this.active=!1,this.dirty=!1,this.position=new c.Point,this.positionDown=new c.Point,this.positionUp=new c.Point,this.circle=new c.Circle(0,0,44),this._clickTrampolines=null,this._trampolineTargetObject=null},c.Pointer.NO_BUTTON=0,c.Pointer.LEFT_BUTTON=1,c.Pointer.RIGHT_BUTTON=2,c.Pointer.MIDDLE_BUTTON=4,c.Pointer.BACK_BUTTON=8,c.Pointer.FORWARD_BUTTON=16,c.Pointer.ERASER_BUTTON=32,c.Pointer.prototype={resetButtons:function(){this.isDown=!1,this.isUp=!0,this.isMouse&&(this.leftButton.reset(),this.middleButton.reset(),this.rightButton.reset(),this.backButton.reset(),this.forwardButton.reset(),this.eraserButton.reset())},processButtonsDown:function(a,b){c.Pointer.LEFT_BUTTON&a&&this.leftButton.start(b),c.Pointer.RIGHT_BUTTON&a&&this.rightButton.start(b),c.Pointer.MIDDLE_BUTTON&a&&this.middleButton.start(b),c.Pointer.BACK_BUTTON&a&&this.backButton.start(b),c.Pointer.FORWARD_BUTTON&a&&this.forwardButton.start(b),c.Pointer.ERASER_BUTTON&a&&this.eraserButton.start(b)},processButtonsUp:function(a,b){a===c.Mouse.LEFT_BUTTON&&this.leftButton.stop(b),a===c.Mouse.RIGHT_BUTTON&&this.rightButton.stop(b),a===c.Mouse.MIDDLE_BUTTON&&this.middleButton.stop(b),a===c.Mouse.BACK_BUTTON&&this.backButton.stop(b),a===c.Mouse.FORWARD_BUTTON&&this.forwardButton.stop(b),5===a&&this.eraserButton.stop(b)},updateButtons:function(a){this.button=a.button;var b="down"===a.type.toLowerCase().substr(-4);void 0!==a.buttons?b?this.processButtonsDown(a.buttons,a):this.processButtonsUp(a.button,a):b?this.leftButton.start(a):(this.leftButton.stop(a),this.rightButton.stop(a)),1===a.buttons&&a.ctrlKey&&this.leftButton.isDown&&(this.leftButton.stop(a),this.rightButton.start(a)),this.isUp=!0,this.isDown=!1,(this.leftButton.isDown||this.rightButton.isDown||this.middleButton.isDown||this.backButton.isDown||this.forwardButton.isDown||this.eraserButton.isDown)&&(this.isUp=!1,this.isDown=!0)},start:function(a){var b=this.game.input;return a.pointerId&&(this.pointerId=a.pointerId),this.identifier=a.identifier,this.target=a.target,this.isMouse?this.updateButtons(a):(this.isDown=!0,this.isUp=!1),this.active=!0,this.withinGame=!0,this.dirty=!1,this._history=[],this._clickTrampolines=null,this._trampolineTargetObject=null,this.msSinceLastClick=this.game.time.time-this.timeDown,this.timeDown=this.game.time.time,this._holdSent=!1,this.move(a,!0),this.positionDown.setTo(this.x,this.y),(b.multiInputOverride===c.Input.MOUSE_OVERRIDES_TOUCH||b.multiInputOverride===c.Input.MOUSE_TOUCH_COMBINE||b.multiInputOverride===c.Input.TOUCH_OVERRIDES_MOUSE&&0===b.totalActivePointers)&&(b.x=this.x,b.y=this.y,b.position.setTo(this.x,this.y),b.onDown.dispatch(this,a),b.resetSpeed(this.x,this.y)),this._stateReset=!1,this.totalTouches++,null!==this.targetObject&&this.targetObject._touchedHandler(this),this},update:function(){var a=this.game.input;this.active&&(this.dirty&&(a.interactiveItems.total>0&&this.processInteractiveObjects(!1),this.dirty=!1),this._holdSent===!1&&this.duration>=a.holdRate&&((a.multiInputOverride===c.Input.MOUSE_OVERRIDES_TOUCH||a.multiInputOverride===c.Input.MOUSE_TOUCH_COMBINE||a.multiInputOverride===c.Input.TOUCH_OVERRIDES_MOUSE&&0===a.totalActivePointers)&&a.onHold.dispatch(this),this._holdSent=!0),a.recordPointerHistory&&this.game.time.time>=this._nextDrop&&(this._nextDrop=this.game.time.time+a.recordRate,this._history.push({x:this.position.x,y:this.position.y}),this._history.length>a.recordLimit&&this._history.shift()))},move:function(a,b){var d=this.game.input;if(!d.pollLocked){if(void 0===b&&(b=!1),void 0!==a.button&&(this.button=a.button),b&&this.isMouse&&this.updateButtons(a),this.clientX=a.clientX,this.clientY=a.clientY,this.pageX=a.pageX,this.pageY=a.pageY,this.screenX=a.screenX,this.screenY=a.screenY,this.isMouse&&d.mouse.locked&&!b&&(this.rawMovementX=a.movementX||a.mozMovementX||a.webkitMovementX||0,this.rawMovementY=a.movementY||a.mozMovementY||a.webkitMovementY||0,this.movementX+=this.rawMovementX,this.movementY+=this.rawMovementY),this.x=(this.pageX-this.game.scale.offset.x)*d.scale.x,this.y=(this.pageY-this.game.scale.offset.y)*d.scale.y,this.position.setTo(this.x,this.y),this.circle.x=this.x,this.circle.y=this.y,(d.multiInputOverride===c.Input.MOUSE_OVERRIDES_TOUCH||d.multiInputOverride===c.Input.MOUSE_TOUCH_COMBINE||d.multiInputOverride===c.Input.TOUCH_OVERRIDES_MOUSE&&0===d.totalActivePointers)&&(d.activePointer=this,d.x=this.x,d.y=this.y,d.position.setTo(d.x,d.y),d.circle.x=d.x,d.circle.y=d.y),this.withinGame=this.game.scale.bounds.contains(this.pageX,this.pageY),this.game.paused)return this;for(var e=d.moveCallbacks.length;e--;)d.moveCallbacks[e].callback.call(d.moveCallbacks[e].context,this,this.x,this.y,b);return null!==this.targetObject&&this.targetObject.isDragged===!0?this.targetObject.update(this)===!1&&(this.targetObject=null):d.interactiveItems.total>0&&this.processInteractiveObjects(b),this}},processInteractiveObjects:function(a){var b=0,c=-1,d=null,e=this.game.input.interactiveItems.first;for(this.interactiveCandidates=[];e;)e.checked=!1,e.validForInput(c,b,!1)&&(e.checked=!0,(a&&e.checkPointerDown(this,!0)||!a&&e.checkPointerOver(this,!0))&&(b=e.sprite.renderOrderID,c=e.priorityID,d=e,this.interactiveCandidates.push(e))),e=this.game.input.interactiveItems.next;for(e=this.game.input.interactiveItems.first;e;)!e.checked&&e.validForInput(c,b,!0)&&(a&&e.checkPointerDown(this,!1)||!a&&e.checkPointerOver(this,!1))&&(b=e.sprite.renderOrderID,c=e.priorityID,d=e,this.interactiveCandidates.push(e)),e=this.game.input.interactiveItems.next;return this.game.input.customCandidateHandler&&(d=this.game.input.customCandidateHandler.call(this.game.input.customCandidateHandlerContext,this,this.interactiveCandidates,d)),this.swapTarget(d,!1),null!==this.targetObject},swapTarget:function(a,b){void 0===b&&(b=!1),null===a?this.targetObject&&(this.targetObject._pointerOutHandler(this,b),this.targetObject=null):null===this.targetObject?(this.targetObject=a,a._pointerOverHandler(this,b)):this.targetObject===a?a.update(this)===!1&&(this.targetObject=null):(this.targetObject._pointerOutHandler(this,b),this.targetObject=a,this.targetObject._pointerOverHandler(this,b))},leave:function(a){this.withinGame=!1,this.move(a,!1)},stop:function(a){var b=this.game.input;return this._stateReset&&this.withinGame?void a.preventDefault():(this.timeUp=this.game.time.time,(b.multiInputOverride===c.Input.MOUSE_OVERRIDES_TOUCH||b.multiInputOverride===c.Input.MOUSE_TOUCH_COMBINE||b.multiInputOverride===c.Input.TOUCH_OVERRIDES_MOUSE&&0===b.totalActivePointers)&&(b.onUp.dispatch(this,a),this.duration>=0&&this.duration<=b.tapRate&&(this.timeUp-this.previousTapTime0&&(this.active=!1),this.withinGame=this.game.scale.bounds.contains(a.pageX,a.pageY),this.pointerId=null,this.identifier=null,this.positionUp.setTo(this.x,this.y),this.isMouse===!1&&b.currentPointers--,b.interactiveItems.callAll("_releasedHandler",this),this._clickTrampolines&&(this._trampolineTargetObject=this.targetObject),this.targetObject=null,this)},justPressed:function(a){return a=a||this.game.input.justPressedRate,this.isDown===!0&&this.timeDown+a>this.game.time.time},justReleased:function(a){return a=a||this.game.input.justReleasedRate,this.isUp&&this.timeUp+a>this.game.time.time},addClickTrampoline:function(a,b,c,d){if(this.isDown){for(var e=this._clickTrampolines=this._clickTrampolines||[],f=0;fd;d++)this._pointerData[d]={id:d,x:0,y:0,isDown:!1,isUp:!1,isOver:!1,isOut:!1,timeOver:0,timeOut:0,timeDown:0,timeUp:0,downDuration:0,isDragged:!1};this.snapOffset=new c.Point,this.enabled=!0,this._wasEnabled=!0}return this.sprite.events.onAddedToGroup.add(this.addedToGroup,this),this.sprite.events.onRemovedFromGroup.add(this.removedFromGroup,this),this.flagged=!1,this.sprite},addedToGroup:function(){this._dragPhase||this._wasEnabled&&!this.enabled&&this.start()},removedFromGroup:function(){this._dragPhase||(this.enabled?(this._wasEnabled=!0,this.stop()):this._wasEnabled=!1)},reset:function(){this.enabled=!1,this.flagged=!1;for(var a=0;10>a;a++)this._pointerData[a]={id:a,x:0,y:0,isDown:!1,isUp:!1,isOver:!1,isOut:!1,timeOver:0,timeOut:0,timeDown:0,timeUp:0,downDuration:0,isDragged:!1}},stop:function(){this.enabled!==!1&&(this.enabled=!1,this.game.input.interactiveItems.remove(this))},destroy:function(){this.sprite&&(this._setHandCursor&&(this.game.canvas.style.cursor="default",this._setHandCursor=!1),this.enabled=!1,this.game.input.interactiveItems.remove(this),this._pointerData.length=0,this.boundsRect=null,this.boundsSprite=null,this.sprite=null)},validForInput:function(a,b,c){return void 0===c&&(c=!0),!this.enabled||0===this.sprite.scale.x||0===this.sprite.scale.y||this.priorityIDa||this.priorityID===a&&this.sprite.renderOrderID>b)?!0:!1},isPixelPerfect:function(){return this.pixelPerfectClick||this.pixelPerfectOver},pointerX:function(a){return a=a||0,this._pointerData[a].x},pointerY:function(a){return a=a||0,this._pointerData[a].y},pointerDown:function(a){return a=a||0,this._pointerData[a].isDown},pointerUp:function(a){return a=a||0,this._pointerData[a].isUp},pointerTimeDown:function(a){return a=a||0,this._pointerData[a].timeDown},pointerTimeUp:function(a){return a=a||0,this._pointerData[a].timeUp},pointerOver:function(a){if(!this.enabled)return!1;if(void 0===a){for(var b=0;10>b;b++)if(this._pointerData[b].isOver)return!0;return!1}return this._pointerData[a].isOver},pointerOut:function(a){if(!this.enabled)return!1;if(void 0!==a)return this._pointerData[a].isOut;for(var b=0;10>b;b++)if(this._pointerData[b].isOut)return!0},pointerTimeOver:function(a){return a=a||0,this._pointerData[a].timeOver},pointerTimeOut:function(a){return a=a||0,this._pointerData[a].timeOut},pointerDragged:function(a){return a=a||0,this._pointerData[a].isDragged},checkPointerDown:function(a,b){return a.isDown&&this.enabled&&this.sprite&&this.sprite.parent&&this.sprite.visible&&this.sprite.parent.visible&&0!==this.sprite.worldScale.x&&0!==this.sprite.worldScale.y&&this.game.input.hitTest(this.sprite,a,this._tempPoint)?(void 0===b&&(b=!1),!b&&this.pixelPerfectClick?this.checkPixel(this._tempPoint.x,this._tempPoint.y):!0):!1},checkPointerOver:function(a,b){return this.enabled&&this.sprite&&this.sprite.parent&&this.sprite.visible&&this.sprite.parent.visible&&0!==this.sprite.worldScale.x&&0!==this.sprite.worldScale.y&&this.game.input.hitTest(this.sprite,a,this._tempPoint)?(void 0===b&&(b=!1),!b&&this.pixelPerfectOver?this.checkPixel(this._tempPoint.x,this._tempPoint.y):!0):!1},checkPixel:function(a,b,c){if(this.sprite.texture.baseTexture.source){if(null===a&&null===b){this.game.input.getLocalPosition(this.sprite,c,this._tempPoint);var a=this._tempPoint.x,b=this._tempPoint.y}if(0!==this.sprite.anchor.x&&(a-=-this.sprite.texture.frame.width*this.sprite.anchor.x),0!==this.sprite.anchor.y&&(b-=-this.sprite.texture.frame.height*this.sprite.anchor.y),a+=this.sprite.texture.frame.x,b+=this.sprite.texture.frame.y,this.sprite.texture.trim&&(a-=this.sprite.texture.trim.x,b-=this.sprite.texture.trim.y,athis.sprite.texture.crop.right||bthis.sprite.texture.crop.bottom))return this._dx=a,this._dy=b,!1;this._dx=a,this._dy=b,this.game.input.hitContext.clearRect(0,0,1,1),this.game.input.hitContext.drawImage(this.sprite.texture.baseTexture.source,a,b,1,1,0,0,1,1);var d=this.game.input.hitContext.getImageData(0,0,1,1);if(d.data[3]>=this.pixelPerfectAlpha)return!0}return!1},update:function(a){return null!==this.sprite&&void 0!==this.sprite.parent?this.enabled&&this.sprite.visible&&this.sprite.parent.visible?this._pendingDrag?(this._dragDistancePass||(this._dragDistancePass=c.Math.distance(a.x,a.y,this.downPoint.x,this.downPoint.y)>=this.dragDistanceThreshold),this._dragDistancePass&&this._dragTimePass&&this.startDrag(a),!0):this.draggable&&this._draggedPointerID===a.id?this.updateDrag(a):this._pointerData[a.id].isOver?this.checkPointerOver(a)?(this._pointerData[a.id].x=a.x-this.sprite.x,this._pointerData[a.id].y=a.y-this.sprite.y,!0):(this._pointerOutHandler(a),!1):void 0:(this._pointerOutHandler(a),!1):void 0},_pointerOverHandler:function(a,b){if(null!==this.sprite){var d=this._pointerData[a.id];if(d.isOver===!1||a.dirty){var e=d.isOver===!1;d.isOver=!0,d.isOut=!1,d.timeOver=this.game.time.time,d.x=a.x-this.sprite.x,d.y=a.y-this.sprite.y,this.useHandCursor&&d.isDragged===!1&&(this.game.canvas.style.cursor="pointer",this._setHandCursor=!0),!b&&e&&this.sprite&&this.sprite.events&&this.sprite.events.onInputOver$dispatch(this.sprite,a),this.sprite.parent&&this.sprite.parent.type===c.GROUP&&this.sprite.parent.onChildInputOver.dispatch(this.sprite,a)}}},_pointerOutHandler:function(a,b){if(null!==this.sprite){var d=this._pointerData[a.id];d.isOver=!1,d.isOut=!0,d.timeOut=this.game.time.time,this.useHandCursor&&d.isDragged===!1&&(this.game.canvas.style.cursor="default",this._setHandCursor=!1),!b&&this.sprite&&this.sprite.events&&(this.sprite.events.onInputOut$dispatch(this.sprite,a),this.sprite&&this.sprite.parent&&this.sprite.parent.type===c.GROUP&&this.sprite.parent.onChildInputOut.dispatch(this.sprite,a))}},_touchedHandler:function(a){if(null!==this.sprite){var b=this._pointerData[a.id];if(!b.isDown&&b.isOver){if(this.pixelPerfectClick&&!this.checkPixel(null,null,a))return;if(b.isDown=!0,b.isUp=!1,b.timeDown=this.game.time.time,this.downPoint.set(a.x,a.y),a.dirty=!0,this.sprite&&this.sprite.events&&(this.sprite.events.onInputDown$dispatch(this.sprite,a),this.sprite&&this.sprite.parent&&this.sprite.parent.type===c.GROUP&&this.sprite.parent.onChildInputDown.dispatch(this.sprite,a), -null===this.sprite))return;this.draggable&&this.isDragged===!1&&(0===this.dragTimeThreshold&&0===this.dragDistanceThreshold?this.startDrag(a):(this._pendingDrag=!0,this._dragDistancePass=0===this.dragDistanceThreshold,this.dragTimeThreshold>0?(this._dragTimePass=!1,this.game.time.events.add(this.dragTimeThreshold,this.dragTimeElapsed,this,a)):this._dragTimePass=!0)),this.bringToTop&&this.sprite.bringToTop()}}},dragTimeElapsed:function(a){this._dragTimePass=!0,this._pendingDrag&&this.sprite&&this._dragDistancePass&&this.startDrag(a)},_releasedHandler:function(a){if(null!==this.sprite){var b=this._pointerData[a.id];if(b.isDown&&a.isUp){b.isDown=!1,b.isUp=!0,b.timeUp=this.game.time.time,b.downDuration=b.timeUp-b.timeDown;var d=this.checkPointerOver(a);this.sprite&&this.sprite.events&&(this.dragStopBlocksInputUp&&(!this.dragStopBlocksInputUp||this.draggable&&this.isDragged&&this._draggedPointerID===a.id)||this.sprite.events.onInputUp$dispatch(this.sprite,a,d),this.sprite&&this.sprite.parent&&this.sprite.parent.type===c.GROUP&&this.sprite.parent.onChildInputUp.dispatch(this.sprite,a,d),d&&(d=this.checkPointerOver(a))),b.isOver=d,!d&&this.useHandCursor&&(this.game.canvas.style.cursor="default",this._setHandCursor=!1),a.dirty=!0,this._pendingDrag=!1,this.draggable&&this.isDragged&&this._draggedPointerID===a.id&&this.stopDrag(a)}}},updateDrag:function(a,b){if(a.isUp)return this.stopDrag(a),!1;void 0===b&&(b=!1);var c=this.globalToLocalX(a.x)+this._dragPoint.x+this.dragOffset.x,d=this.globalToLocalY(a.y)+this._dragPoint.y+this.dragOffset.y;if(this.sprite.fixedToCamera)this.allowHorizontalDrag&&(this.sprite.cameraOffset.x=c),this.allowVerticalDrag&&(this.sprite.cameraOffset.y=d),this.boundsRect&&this.checkBoundsRect(),this.boundsSprite&&this.checkBoundsSprite(),this.snapOnDrag&&(this.sprite.cameraOffset.x=Math.round((this.sprite.cameraOffset.x-this.snapOffsetX%this.snapX)/this.snapX)*this.snapX+this.snapOffsetX%this.snapX,this.sprite.cameraOffset.y=Math.round((this.sprite.cameraOffset.y-this.snapOffsetY%this.snapY)/this.snapY)*this.snapY+this.snapOffsetY%this.snapY,this.snapPoint.set(this.sprite.cameraOffset.x,this.sprite.cameraOffset.y));else{var e=this.game.camera.x-this._pointerData[a.id].camX,f=this.game.camera.y-this._pointerData[a.id].camY;this.allowHorizontalDrag&&(this.sprite.x=c+e),this.allowVerticalDrag&&(this.sprite.y=d+f),this.boundsRect&&this.checkBoundsRect(),this.boundsSprite&&this.checkBoundsSprite(),this.snapOnDrag&&(this.sprite.x=Math.round((this.sprite.x-this.snapOffsetX%this.snapX)/this.snapX)*this.snapX+this.snapOffsetX%this.snapX,this.sprite.y=Math.round((this.sprite.y-this.snapOffsetY%this.snapY)/this.snapY)*this.snapY+this.snapOffsetY%this.snapY,this.snapPoint.set(this.sprite.x,this.sprite.y))}return this.sprite.events.onDragUpdate.dispatch(this.sprite,a,c,d,this.snapPoint,b),!0},justOver:function(a,b){return a=a||0,b=b||500,this._pointerData[a].isOver&&this.overDuration(a)a;a++)this._pointerData[a].isDragged=!1;this.draggable=!1,this.isDragged=!1,this._draggedPointerID=-1,this._pendingDrag=!1},startDrag:function(a){var b=this.sprite.x,c=this.sprite.y;if(this.isDragged=!0,this._draggedPointerID=a.id,this._pointerData[a.id].camX=this.game.camera.x,this._pointerData[a.id].camY=this.game.camera.y,this._pointerData[a.id].isDragged=!0,this.sprite.fixedToCamera){if(this.dragFromCenter){var d=this.sprite.getBounds();this.sprite.cameraOffset.x=this.globalToLocalX(a.x)+(this.sprite.cameraOffset.x-d.centerX),this.sprite.cameraOffset.y=this.globalToLocalY(a.y)+(this.sprite.cameraOffset.y-d.centerY)}this._dragPoint.setTo(this.sprite.cameraOffset.x-a.x,this.sprite.cameraOffset.y-a.y)}else{if(this.dragFromCenter){var d=this.sprite.getBounds();this.sprite.x=this.globalToLocalX(a.x)+(this.sprite.x-d.centerX),this.sprite.y=this.globalToLocalY(a.y)+(this.sprite.y-d.centerY)}this._dragPoint.setTo(this.sprite.x-this.globalToLocalX(a.x),this.sprite.y-this.globalToLocalY(a.y))}this.updateDrag(a,!0),this.bringToTop&&(this._dragPhase=!0,this.sprite.bringToTop()),this.dragStartPoint.set(b,c),this.sprite.events.onDragStart$dispatch(this.sprite,a,b,c),this._pendingDrag=!1},globalToLocalX:function(a){return this.scaleLayer&&(a-=this.game.scale.grid.boundsFluid.x,a*=this.game.scale.grid.scaleFluidInversed.x),a},globalToLocalY:function(a){return this.scaleLayer&&(a-=this.game.scale.grid.boundsFluid.y,a*=this.game.scale.grid.scaleFluidInversed.y),a},stopDrag:function(a){this.isDragged=!1,this._draggedPointerID=-1,this._pointerData[a.id].isDragged=!1,this._dragPhase=!1,this._pendingDrag=!1,this.snapOnRelease&&(this.sprite.fixedToCamera?(this.sprite.cameraOffset.x=Math.round((this.sprite.cameraOffset.x-this.snapOffsetX%this.snapX)/this.snapX)*this.snapX+this.snapOffsetX%this.snapX,this.sprite.cameraOffset.y=Math.round((this.sprite.cameraOffset.y-this.snapOffsetY%this.snapY)/this.snapY)*this.snapY+this.snapOffsetY%this.snapY):(this.sprite.x=Math.round((this.sprite.x-this.snapOffsetX%this.snapX)/this.snapX)*this.snapX+this.snapOffsetX%this.snapX,this.sprite.y=Math.round((this.sprite.y-this.snapOffsetY%this.snapY)/this.snapY)*this.snapY+this.snapOffsetY%this.snapY)),this.sprite.events.onDragStop$dispatch(this.sprite,a),this.checkPointerOver(a)===!1&&this._pointerOutHandler(a)},setDragLock:function(a,b){void 0===a&&(a=!0),void 0===b&&(b=!0),this.allowHorizontalDrag=a,this.allowVerticalDrag=b},enableSnap:function(a,b,c,d,e,f){void 0===c&&(c=!0),void 0===d&&(d=!1),void 0===e&&(e=0),void 0===f&&(f=0),this.snapX=a,this.snapY=b,this.snapOffsetX=e,this.snapOffsetY=f,this.snapOnDrag=c,this.snapOnRelease=d},disableSnap:function(){this.snapOnDrag=!1,this.snapOnRelease=!1},checkBoundsRect:function(){this.sprite.fixedToCamera?(this.sprite.cameraOffset.xthis.boundsRect.right&&(this.sprite.cameraOffset.x=this.boundsRect.right-this.sprite.width),this.sprite.cameraOffset.ythis.boundsRect.bottom&&(this.sprite.cameraOffset.y=this.boundsRect.bottom-this.sprite.height)):(this.sprite.leftthis.boundsRect.right&&(this.sprite.x=this.boundsRect.right-(this.sprite.width-this.sprite.offsetX)),this.sprite.topthis.boundsRect.bottom&&(this.sprite.y=this.boundsRect.bottom-(this.sprite.height-this.sprite.offsetY)))},checkBoundsSprite:function(){this.sprite.fixedToCamera&&this.boundsSprite.fixedToCamera?(this.sprite.cameraOffset.xthis.boundsSprite.cameraOffset.x+this.boundsSprite.width&&(this.sprite.cameraOffset.x=this.boundsSprite.cameraOffset.x+this.boundsSprite.width-this.sprite.width),this.sprite.cameraOffset.ythis.boundsSprite.cameraOffset.y+this.boundsSprite.height&&(this.sprite.cameraOffset.y=this.boundsSprite.cameraOffset.y+this.boundsSprite.height-this.sprite.height)):(this.sprite.leftthis.boundsSprite.right&&(this.sprite.x=this.boundsSprite.right-(this.sprite.width-this.sprite.offsetX)),this.sprite.topthis.boundsSprite.bottom&&(this.sprite.y=this.boundsSprite.bottom-(this.sprite.height-this.sprite.offsetY)))}},c.InputHandler.prototype.constructor=c.InputHandler,c.Gamepad=function(a){this.game=a,this._gamepadIndexMap={},this._rawPads=[],this._active=!1,this.enabled=!0,this._gamepadSupportAvailable=!!navigator.webkitGetGamepads||!!navigator.webkitGamepads||-1!=navigator.userAgent.indexOf("Firefox/")||!!navigator.getGamepads,this._prevRawGamepadTypes=[],this._prevTimestamps=[],this.callbackContext=this,this.onConnectCallback=null,this.onDisconnectCallback=null,this.onDownCallback=null,this.onUpCallback=null,this.onAxisCallback=null,this.onFloatCallback=null,this._ongamepadconnected=null,this._gamepaddisconnected=null,this._gamepads=[new c.SinglePad(a,this),new c.SinglePad(a,this),new c.SinglePad(a,this),new c.SinglePad(a,this)]},c.Gamepad.prototype={addCallbacks:function(a,b){"undefined"!=typeof b&&(this.onConnectCallback="function"==typeof b.onConnect?b.onConnect:this.onConnectCallback,this.onDisconnectCallback="function"==typeof b.onDisconnect?b.onDisconnect:this.onDisconnectCallback,this.onDownCallback="function"==typeof b.onDown?b.onDown:this.onDownCallback,this.onUpCallback="function"==typeof b.onUp?b.onUp:this.onUpCallback,this.onAxisCallback="function"==typeof b.onAxis?b.onAxis:this.onAxisCallback,this.onFloatCallback="function"==typeof b.onFloat?b.onFloat:this.onFloatCallback,this.callbackContext=a)},start:function(){if(!this._active){this._active=!0;var a=this;this._onGamepadConnected=function(b){return a.onGamepadConnected(b)},this._onGamepadDisconnected=function(b){return a.onGamepadDisconnected(b)},window.addEventListener("gamepadconnected",this._onGamepadConnected,!1),window.addEventListener("gamepaddisconnected",this._onGamepadDisconnected,!1)}},onGamepadConnected:function(a){var b=a.gamepad;this._rawPads.push(b),this._gamepads[b.index].connect(b)},onGamepadDisconnected:function(a){var b=a.gamepad;for(var c in this._rawPads)this._rawPads[c].index===b.index&&this._rawPads.splice(c,1);this._gamepads[b.index].disconnect()},update:function(){this._pollGamepads(),this.pad1.pollStatus(),this.pad2.pollStatus(),this.pad3.pollStatus(),this.pad4.pollStatus()},_pollGamepads:function(){if(this._active){if(navigator.getGamepads)var a=navigator.getGamepads();else if(navigator.webkitGetGamepads)var a=navigator.webkitGetGamepads();else if(navigator.webkitGamepads)var a=navigator.webkitGamepads();if(a){this._rawPads=[];for(var b=!1,c=0;c0&&d>this.deadZone||0>d&&d<-this.deadZone?this.processAxisChange(c,d):this.processAxisChange(c,0)}this._prevTimestamp=this._rawPad.timestamp}},connect:function(a){var b=!this.connected;this.connected=!0,this.index=a.index,this._rawPad=a,this._buttons=[],this._buttonsLen=a.buttons.length,this._axes=[],this._axesLen=a.axes.length;for(var d=0;dthis.maxHealth&&(this.health=this.maxHealth),this},heal:function(a){return this.alive&&(this.health+=a,this.health>this.maxHealth&&(this.health=this.maxHealth)),this}},c.Component.InCamera=function(){},c.Component.InCamera.prototype={inCamera:{get:function(){return this.game.world.camera.view.intersects(this._bounds)}}},c.Component.InputEnabled=function(){},c.Component.InputEnabled.prototype={input:null,inputEnabled:{get:function(){return this.input&&this.input.enabled},set:function(a){a?null===this.input?(this.input=new c.InputHandler(this),this.input.start()):this.input&&!this.input.enabled&&this.input.start():this.input&&this.input.enabled&&this.input.stop()}}},c.Component.InWorld=function(){},c.Component.InWorld.preUpdate=function(){if(this.autoCull||this.checkWorldBounds){if(this._bounds.copyFrom(this.getBounds()),this._bounds.x+=this.game.camera.view.x,this._bounds.y+=this.game.camera.view.y,this.autoCull)if(this.game.world.camera.view.intersects(this._bounds))this.renderable=!0,this.game.world.camera.totalInView++;else if(this.renderable=!1,this.outOfCameraBoundsKill)return this.kill(),!1;if(this.checkWorldBounds)if(this._outOfBoundsFired&&this.game.world.bounds.intersects(this._bounds))this._outOfBoundsFired=!1,this.events.onEnterBounds$dispatch(this);else if(!this._outOfBoundsFired&&!this.game.world.bounds.intersects(this._bounds)&&(this._outOfBoundsFired=!0,this.events.onOutOfBounds$dispatch(this),this.outOfBoundsKill))return this.kill(),!1}return!0},c.Component.InWorld.prototype={checkWorldBounds:!1,outOfBoundsKill:!1,outOfCameraBoundsKill:!1,_outOfBoundsFired:!1,inWorld:{get:function(){return this.game.world.bounds.intersects(this.getBounds())}}},c.Component.LifeSpan=function(){},c.Component.LifeSpan.preUpdate=function(){return this.lifespan>0&&(this.lifespan-=this.game.time.physicsElapsedMS,this.lifespan<=0)?(this.kill(),!1):!0},c.Component.LifeSpan.prototype={alive:!0,lifespan:0,revive:function(a){return void 0===a&&(a=100),this.alive=!0,this.exists=!0,this.visible=!0,"function"==typeof this.setHealth&&this.setHealth(a),this.events&&this.events.onRevived$dispatch(this),this},kill:function(){return this.alive=!1,this.exists=!1,this.visible=!1,this.events&&this.events.onKilled$dispatch(this),this}},c.Component.LoadTexture=function(){},c.Component.LoadTexture.prototype={customRender:!1,_frame:null,loadTexture:function(a,b,d){a===c.PENDING_ATLAS?(a=b,b=0):b=b||0,(d||void 0===d)&&this.animations&&this.animations.stop(),this.key=a,this.customRender=!1;var e=this.game.cache,f=!0,g=!this.texture.baseTexture.scaleMode;if(c.RenderTexture&&a instanceof c.RenderTexture)this.key=a.key,this.setTexture(a);else if(c.BitmapData&&a instanceof c.BitmapData)this.customRender=!0,this.setTexture(a.texture),f=e.hasFrameData(a.key,c.Cache.BITMAPDATA)?!this.animations.loadFrameData(e.getFrameData(a.key,c.Cache.BITMAPDATA),b):!this.animations.loadFrameData(a.frameData,0);else if(c.Video&&a instanceof c.Video){this.customRender=!0;var h=a.texture.valid;this.setTexture(a.texture),this.setFrame(a.texture.frame.clone()),a.onChangeSource.add(this.resizeFrame,this),this.texture.valid=h}else if(c.Tilemap&&a instanceof c.TilemapLayer)this.setTexture(PIXI.Texture.fromCanvas(a.canvas));else if(a instanceof PIXI.Texture)this.setTexture(a);else{var i=e.getImage(a,!0);this.key=i.key,this.setTexture(new PIXI.Texture(i.base)),"__default"===a?this.texture.baseTexture.skipRender=!0:this.texture.baseTexture.skipRender=!1,f=!this.animations.loadFrameData(i.frameData,b)}f&&(this._frame=c.Rectangle.clone(this.texture.frame)),g||(this.texture.baseTexture.scaleMode=1)},setFrame:function(a){this._frame=a,this.texture.frame.x=a.x,this.texture.frame.y=a.y,this.texture.frame.width=a.width,this.texture.frame.height=a.height,this.texture.crop.x=a.x,this.texture.crop.y=a.y,this.texture.crop.width=a.width,this.texture.crop.height=a.height,a.trimmed?(this.texture.trim?(this.texture.trim.x=a.spriteSourceSizeX,this.texture.trim.y=a.spriteSourceSizeY,this.texture.trim.width=a.sourceSizeW,this.texture.trim.height=a.sourceSizeH):this.texture.trim={x:a.spriteSourceSizeX,y:a.spriteSourceSizeY,width:a.sourceSizeW,height:a.sourceSizeH},this.texture.width=a.sourceSizeW,this.texture.height=a.sourceSizeH,this.texture.frame.width=a.sourceSizeW,this.texture.frame.height=a.sourceSizeH):!a.trimmed&&this.texture.trim&&(this.texture.trim=null),this.cropRect&&this.updateCrop(),this.texture.requiresReTint=!0,this.texture._updateUvs(),this.tilingTexture&&(this.refreshTexture=!0)},resizeFrame:function(a,b,c){this.texture.frame.resize(b,c),this.texture.setFrame(this.texture.frame)},resetFrame:function(){this._frame&&this.setFrame(this._frame)},frame:{get:function(){return this.animations.frame},set:function(a){this.animations.frame=a}},frameName:{get:function(){return this.animations.frameName},set:function(a){this.animations.frameName=a}}},c.Component.Overlap=function(){},c.Component.Overlap.prototype={overlap:function(a){return c.Rectangle.intersects(this.getBounds(),a.getBounds())}},c.Component.PhysicsBody=function(){},c.Component.PhysicsBody.preUpdate=function(){return this.fresh&&this.exists?(this.world.setTo(this.parent.position.x+this.position.x,this.parent.position.y+this.position.y),this.worldTransform.tx=this.world.x,this.worldTransform.ty=this.world.y,this.previousPosition.set(this.world.x,this.world.y),this.previousRotation=this.rotation,this.body&&this.body.preUpdate(),this.fresh=!1,!1):(this.previousPosition.set(this.world.x,this.world.y),this.previousRotation=this.rotation,this._exists&&this.parent.exists?!0:(this.renderOrderID=-1,!1))},c.Component.PhysicsBody.postUpdate=function(){this.exists&&this.body&&this.body.postUpdate()},c.Component.PhysicsBody.prototype={body:null,x:{get:function(){return this.position.x},set:function(a){this.position.x=a,this.body&&!this.body.dirty&&(this.body._reset=!0)}},y:{get:function(){return this.position.y},set:function(a){this.position.y=a,this.body&&!this.body.dirty&&(this.body._reset=!0)}}},c.Component.Reset=function(){},c.Component.Reset.prototype.reset=function(a,b,c){return void 0===c&&(c=1),this.world.set(a,b),this.position.set(a,b),this.fresh=!0,this.exists=!0,this.visible=!0,this.renderable=!0,this.components.InWorld&&(this._outOfBoundsFired=!1),this.components.LifeSpan&&(this.alive=!0,this.health=c),this.components.PhysicsBody&&this.body&&this.body.reset(a,b,!1,!1),this},c.Component.ScaleMinMax=function(){},c.Component.ScaleMinMax.prototype={transformCallback:null,transformCallbackContext:this,scaleMin:null,scaleMax:null,checkTransform:function(a){this.scaleMin&&(a.athis.scaleMax.x&&(a.a=this.scaleMax.x),a.d>this.scaleMax.y&&(a.d=this.scaleMax.y))},setScaleMinMax:function(a,b,d,e){void 0===b?b=d=e=a:void 0===d&&(d=e=b,b=a),null===a?this.scaleMin=null:this.scaleMin?this.scaleMin.set(a,b):this.scaleMin=new c.Point(a,b),null===d?this.scaleMax=null:this.scaleMax?this.scaleMax.set(d,e):this.scaleMax=new c.Point(d,e),null===this.scaleMin?this.transformCallback=null:(this.transformCallback=this.checkTransform,this.transformCallbackContext=this)}},c.Component.Smoothed=function(){},c.Component.Smoothed.prototype={smoothed:{get:function(){return!this.texture.baseTexture.scaleMode},set:function(a){a?this.texture&&(this.texture.baseTexture.scaleMode=0):this.texture&&(this.texture.baseTexture.scaleMode=1)}}},c.GameObjectFactory=function(a){this.game=a,this.world=this.game.world},c.GameObjectFactory.prototype={existing:function(a){return this.world.add(a)},weapon:function(a,b,d,e){var f=this.game.plugins.add(c.Weapon);return f.createBullets(a,b,d,e),f},image:function(a,b,d,e,f){return void 0===f&&(f=this.world),f.add(new c.Image(this.game,a,b,d,e))},sprite:function(a,b,c,d,e){return void 0===e&&(e=this.world),e.create(a,b,c,d)},creature:function(a,b,d,e,f){void 0===f&&(f=this.world);var g=new c.Creature(this.game,a,b,d,e);return f.add(g),g},tween:function(a){return this.game.tweens.create(a)},group:function(a,b,d,e,f){return new c.Group(this.game,a,b,d,e,f)},physicsGroup:function(a,b,d,e){return new c.Group(this.game,b,d,e,!0,a)},spriteBatch:function(a,b,d){return void 0===a&&(a=null),void 0===b&&(b="group"),void 0===d&&(d=!1),new c.SpriteBatch(this.game,a,b,d)},audio:function(a,b,c,d){return this.game.sound.add(a,b,c,d)},sound:function(a,b,c,d){return this.game.sound.add(a,b,c,d)},audioSprite:function(a){return this.game.sound.addSprite(a)},tileSprite:function(a,b,d,e,f,g,h){return void 0===h&&(h=this.world),h.add(new c.TileSprite(this.game,a,b,d,e,f,g))},rope:function(a,b,d,e,f,g){return void 0===g&&(g=this.world),g.add(new c.Rope(this.game,a,b,d,e,f))},text:function(a,b,d,e,f){return void 0===f&&(f=this.world),f.add(new c.Text(this.game,a,b,d,e))},button:function(a,b,d,e,f,g,h,i,j,k){return void 0===k&&(k=this.world),k.add(new c.Button(this.game,a,b,d,e,f,g,h,i,j))},graphics:function(a,b,d){return void 0===d&&(d=this.world),d.add(new c.Graphics(this.game,a,b))},emitter:function(a,b,d){return this.game.particles.add(new c.Particles.Arcade.Emitter(this.game,a,b,d))},retroFont:function(a,b,d,e,f,g,h,i,j){return new c.RetroFont(this.game,a,b,d,e,f,g,h,i,j)},bitmapText:function(a,b,d,e,f,g){return void 0===g&&(g=this.world),g.add(new c.BitmapText(this.game,a,b,d,e,f))},tilemap:function(a,b,d,e,f){return new c.Tilemap(this.game,a,b,d,e,f)},renderTexture:function(a,b,d,e){(void 0===d||""===d)&&(d=this.game.rnd.uuid()),void 0===e&&(e=!1);var f=new c.RenderTexture(this.game,a,b,d);return e&&this.game.cache.addRenderTexture(d,f),f},video:function(a,b){return new c.Video(this.game,a,b)},bitmapData:function(a,b,d,e){void 0===e&&(e=!1),(void 0===d||""===d)&&(d=this.game.rnd.uuid());var f=new c.BitmapData(this.game,d,a,b);return e&&this.game.cache.addBitmapData(d,f),f},filter:function(a){var b=Array.prototype.slice.call(arguments,1),a=new c.Filter[a](this.game);return a.init.apply(a,b),a},plugin:function(a){return this.game.plugins.add(a)}},c.GameObjectFactory.prototype.constructor=c.GameObjectFactory,c.GameObjectCreator=function(a){this.game=a,this.world=this.game.world},c.GameObjectCreator.prototype={image:function(a,b,d,e){return new c.Image(this.game,a,b,d,e)},sprite:function(a,b,d,e){return new c.Sprite(this.game,a,b,d,e)},tween:function(a){return new c.Tween(a,this.game,this.game.tweens)},group:function(a,b,d,e,f){return new c.Group(this.game,a,b,d,e,f)},spriteBatch:function(a,b,d){return void 0===b&&(b="group"),void 0===d&&(d=!1),new c.SpriteBatch(this.game,a,b,d)},audio:function(a,b,c,d){return this.game.sound.add(a,b,c,d)},audioSprite:function(a){return this.game.sound.addSprite(a)},sound:function(a,b,c,d){return this.game.sound.add(a,b,c,d)},tileSprite:function(a,b,d,e,f,g){return new c.TileSprite(this.game,a,b,d,e,f,g)},rope:function(a,b,d,e,f){return new c.Rope(this.game,a,b,d,e,f)},text:function(a,b,d,e){return new c.Text(this.game,a,b,d,e)},button:function(a,b,d,e,f,g,h,i,j){return new c.Button(this.game,a,b,d,e,f,g,h,i,j)},graphics:function(a,b){return new c.Graphics(this.game,a,b)},emitter:function(a,b,d){return new c.Particles.Arcade.Emitter(this.game,a,b,d)},retroFont:function(a,b,d,e,f,g,h,i,j){return new c.RetroFont(this.game,a,b,d,e,f,g,h,i,j)},bitmapText:function(a,b,d,e,f,g){return new c.BitmapText(this.game,a,b,d,e,f,g)},tilemap:function(a,b,d,e,f){return new c.Tilemap(this.game,a,b,d,e,f)},renderTexture:function(a,b,d,e){(void 0===d||""===d)&&(d=this.game.rnd.uuid()),void 0===e&&(e=!1);var f=new c.RenderTexture(this.game,a,b,d);return e&&this.game.cache.addRenderTexture(d,f),f},bitmapData:function(a,b,d,e){void 0===e&&(e=!1),(void 0===d||""===d)&&(d=this.game.rnd.uuid());var f=new c.BitmapData(this.game,d,a,b);return e&&this.game.cache.addBitmapData(d,f),f},filter:function(a){var b=Array.prototype.slice.call(arguments,1),a=new c.Filter[a](this.game);return a.init.apply(a,b),a}},c.GameObjectCreator.prototype.constructor=c.GameObjectCreator,c.Sprite=function(a,b,d,e,f){b=b||0,d=d||0,e=e||null,f=f||null,this.type=c.SPRITE,this.physicsType=c.SPRITE,PIXI.Sprite.call(this,PIXI.TextureCache.__default),c.Component.Core.init.call(this,a,b,d,e,f)},c.Sprite.prototype=Object.create(PIXI.Sprite.prototype),c.Sprite.prototype.constructor=c.Sprite,c.Component.Core.install.call(c.Sprite.prototype,["Angle","Animation","AutoCull","Bounds","BringToTop","Crop","Delta","Destroy","FixedToCamera","Health","InCamera","InputEnabled","InWorld","LifeSpan","LoadTexture","Overlap","PhysicsBody","Reset","ScaleMinMax","Smoothed"]),c.Sprite.prototype.preUpdatePhysics=c.Component.PhysicsBody.preUpdate,c.Sprite.prototype.preUpdateLifeSpan=c.Component.LifeSpan.preUpdate,c.Sprite.prototype.preUpdateInWorld=c.Component.InWorld.preUpdate,c.Sprite.prototype.preUpdateCore=c.Component.Core.preUpdate,c.Sprite.prototype.preUpdate=function(){return this.preUpdatePhysics()&&this.preUpdateLifeSpan()&&this.preUpdateInWorld()?this.preUpdateCore():!1},c.Image=function(a,b,d,e,f){b=b||0,d=d||0,e=e||null,f=f||null,this.type=c.IMAGE,PIXI.Sprite.call(this,PIXI.TextureCache.__default),c.Component.Core.init.call(this,a,b,d,e,f)},c.Image.prototype=Object.create(PIXI.Sprite.prototype),c.Image.prototype.constructor=c.Image,c.Component.Core.install.call(c.Image.prototype,["Angle","Animation","AutoCull","Bounds","BringToTop","Crop","Destroy","FixedToCamera","InputEnabled","LifeSpan","LoadTexture","Overlap","Reset","Smoothed"]),c.Image.prototype.preUpdateInWorld=c.Component.InWorld.preUpdate,c.Image.prototype.preUpdateCore=c.Component.Core.preUpdate,c.Image.prototype.preUpdate=function(){return this.preUpdateInWorld()?this.preUpdateCore():!1},c.Button=function(a,b,d,e,f,g,h,i,j,k){b=b||0,d=d||0,e=e||null,f=f||null,g=g||this,c.Image.call(this,a,b,d,e,i),this.type=c.BUTTON,this.physicsType=c.SPRITE,this._onOverFrame=null,this._onOutFrame=null,this._onDownFrame=null,this._onUpFrame=null,this.onOverSound=null,this.onOutSound=null,this.onDownSound=null,this.onUpSound=null,this.onOverSoundMarker="",this.onOutSoundMarker="",this.onDownSoundMarker="",this.onUpSoundMarker="",this.onInputOver=new c.Signal,this.onInputOut=new c.Signal,this.onInputDown=new c.Signal,this.onInputUp=new c.Signal,this.onOverMouseOnly=!0,this.justReleasedPreventsOver=c.PointerMode.TOUCH,this.freezeFrames=!1,this.forceOut=!1,this.inputEnabled=!0,this.input.start(0,!0),this.input.useHandCursor=!0,this.setFrames(h,i,j,k),null!==f&&this.onInputUp.add(f,g),this.events.onInputOver.add(this.onInputOverHandler,this),this.events.onInputOut.add(this.onInputOutHandler,this),this.events.onInputDown.add(this.onInputDownHandler,this),this.events.onInputUp.add(this.onInputUpHandler,this),this.events.onRemovedFromWorld.add(this.removedFromWorld,this)},c.Button.prototype=Object.create(c.Image.prototype),c.Button.prototype.constructor=c.Button;var g="Over",h="Out",i="Down",j="Up";c.Button.prototype.clearFrames=function(){this.setFrames(null,null,null,null)},c.Button.prototype.removedFromWorld=function(){this.inputEnabled=!1},c.Button.prototype.setStateFrame=function(a,b,c){var d="_on"+a+"Frame";null!==b?(this[d]=b,c&&this.changeStateFrame(a)):this[d]=null},c.Button.prototype.changeStateFrame=function(a){if(this.freezeFrames)return!1;var b="_on"+a+"Frame",c=this[b];return"string"==typeof c?(this.frameName=c,!0):"number"==typeof c?(this.frame=c,!0):!1},c.Button.prototype.setFrames=function(a,b,c,d){this.setStateFrame(g,a,this.input.pointerOver()),this.setStateFrame(h,b,!this.input.pointerOver()),this.setStateFrame(i,c,this.input.pointerDown()),this.setStateFrame(j,d,this.input.pointerUp())},c.Button.prototype.setStateSound=function(a,b,d){var e="on"+a+"Sound",f="on"+a+"SoundMarker";b instanceof c.Sound||b instanceof c.AudioSprite?(this[e]=b,this[f]="string"==typeof d?d:""):(this[e]=null,this[f]="")},c.Button.prototype.playStateSound=function(a){var b="on"+a+"Sound",c=this[b];if(c){var d="on"+a+"SoundMarker",e=this[d];return c.play(e),!0}return!1},c.Button.prototype.setSounds=function(a,b,c,d,e,f,k,l){this.setStateSound(g,a,b),this.setStateSound(h,e,f),this.setStateSound(i,c,d),this.setStateSound(j,k,l)},c.Button.prototype.setOverSound=function(a,b){this.setStateSound(g,a,b)},c.Button.prototype.setOutSound=function(a,b){this.setStateSound(h,a,b)},c.Button.prototype.setDownSound=function(a,b){this.setStateSound(i,a,b)},c.Button.prototype.setUpSound=function(a,b){this.setStateSound(j,a,b)},c.Button.prototype.onInputOverHandler=function(a,b){b.justReleased()&&(this.justReleasedPreventsOver&b.pointerMode)===b.pointerMode||(this.changeStateFrame(g),(!this.onOverMouseOnly||b.isMouse)&&(this.playStateSound(g),this.onInputOver&&this.onInputOver.dispatch(this,b)))},c.Button.prototype.onInputOutHandler=function(a,b){this.changeStateFrame(h),this.playStateSound(h),this.onInputOut&&this.onInputOut.dispatch(this,b)},c.Button.prototype.onInputDownHandler=function(a,b){this.changeStateFrame(i),this.playStateSound(i),this.onInputDown&&this.onInputDown.dispatch(this,b)},c.Button.prototype.onInputUpHandler=function(a,b,c){if(this.playStateSound(j),this.onInputUp&&this.onInputUp.dispatch(this,b,c),!this.freezeFrames)if(this.forceOut===!0||(this.forceOut&b.pointerMode)===b.pointerMode)this.changeStateFrame(h);else{var d=this.changeStateFrame(j);d||(c?this.changeStateFrame(g):this.changeStateFrame(h))}},c.SpriteBatch=function(a,b,d,e){(void 0===b||null===b)&&(b=a.world),PIXI.SpriteBatch.call(this),c.Group.call(this,a,b,d,e),this.type=c.SPRITEBATCH},c.SpriteBatch.prototype=c.Utils.extend(!0,c.SpriteBatch.prototype,PIXI.SpriteBatch.prototype,c.Group.prototype),c.SpriteBatch.prototype.constructor=c.SpriteBatch,c.BitmapData=function(a,b,d,e){(void 0===d||0===d)&&(d=256),(void 0===e||0===e)&&(e=256),this.game=a,this.key=b,this.width=d,this.height=e,this.canvas=PIXI.CanvasPool.create(this,d,e),this.context=this.canvas.getContext("2d",{alpha:!0}),this.ctx=this.context,this.smoothProperty=a.renderType===c.CANVAS?a.renderer.renderSession.smoothProperty:c.Canvas.getSmoothingPrefix(this.context),this.imageData=this.context.getImageData(0,0,d,e),this.data=null,this.imageData&&(this.data=this.imageData.data),this.pixels=null,this.data&&(this.imageData.data.buffer?(this.buffer=this.imageData.data.buffer,this.pixels=new Uint32Array(this.buffer)):window.ArrayBuffer?(this.buffer=new ArrayBuffer(this.imageData.data.length),this.pixels=new Uint32Array(this.buffer)):this.pixels=this.imageData.data),this.baseTexture=new PIXI.BaseTexture(this.canvas),this.texture=new PIXI.Texture(this.baseTexture),this.frameData=new c.FrameData,this.textureFrame=this.frameData.addFrame(new c.Frame(0,0,0,d,e,"bitmapData")),this.texture.frame=this.textureFrame,this.type=c.BITMAPDATA,this.disableTextureUpload=!1,this.dirty=!1,this.cls=this.clear,this._image=null,this._pos=new c.Point,this._size=new c.Point,this._scale=new c.Point,this._rotate=0,this._alpha={prev:1,current:1},this._anchor=new c.Point,this._tempR=0,this._tempG=0,this._tempB=0,this._circle=new c.Circle,this._swapCanvas=void 0},c.BitmapData.prototype={move:function(a,b,c){return 0!==a&&this.moveH(a,c),0!==b&&this.moveV(b,c),this},moveH:function(a,b){void 0===b&&(b=!0),void 0===this._swapCanvas&&(this._swapCanvas=PIXI.CanvasPool.create(this,this.width,this.height));var c=this._swapCanvas,d=c.getContext("2d"),e=this.height,f=this.canvas;if(d.clearRect(0,0,this.width,this.height),0>a){a=Math.abs(a);var g=this.width-a;b&&d.drawImage(f,0,0,a,e,g,0,a,e),d.drawImage(f,a,0,g,e,0,0,g,e)}else{var g=this.width-a;b&&d.drawImage(f,g,0,a,e,0,0,a,e),d.drawImage(f,0,0,g,e,a,0,g,e)}return this.clear(),this.copy(this._swapCanvas)},moveV:function(a,b){void 0===b&&(b=!0),void 0===this._swapCanvas&&(this._swapCanvas=PIXI.CanvasPool.create(this,this.width,this.height));var c=this._swapCanvas,d=c.getContext("2d"),e=this.width,f=this.canvas;if(d.clearRect(0,0,this.width,this.height),0>a){a=Math.abs(a);var g=this.height-a;b&&d.drawImage(f,0,0,e,a,0,g,e,a),d.drawImage(f,0,a,e,g,0,0,e,g)}else{var g=this.height-a;b&&d.drawImage(f,0,g,e,a,0,0,e,a),d.drawImage(f,0,0,e,g,0,a,e,g)}return this.clear(),this.copy(this._swapCanvas)},add:function(a){if(Array.isArray(a))for(var b=0;bm;m++)for(var n=d;h>n;n++)c.Color.unpackPixel(this.getPixel32(n,m),j),k=a.call(b,j,n,m),k!==!1&&null!==k&&void 0!==k&&(this.setPixel32(n,m,k.r,k.g,k.b,k.a,!1),l=!0);return l&&(this.context.putImageData(this.imageData,0,0),this.dirty=!0),this},processPixel:function(a,b,c,d,e,f){void 0===c&&(c=0),void 0===d&&(d=0),void 0===e&&(e=this.width),void 0===f&&(f=this.height);for(var g=c+e,h=d+f,i=0,j=0,k=!1,l=d;h>l;l++)for(var m=c;g>m;m++)i=this.getPixel32(m,l),j=a.call(b,i,m,l),j!==i&&(this.pixels[l*this.width+m]=j,k=!0);return k&&(this.context.putImageData(this.imageData,0,0),this.dirty=!0),this},replaceRGB:function(a,b,d,e,f,g,h,i,j){var k=0,l=0,m=this.width,n=this.height,o=c.Color.packPixel(a,b,d,e);void 0!==j&&j instanceof c.Rectangle&&(k=j.x,l=j.y,m=j.width,n=j.height);for(var p=0;n>p;p++)for(var q=0;m>q;q++)this.getPixel32(k+q,l+p)===o&&this.setPixel32(k+q,l+p,f,g,h,i,!1);return this.context.putImageData(this.imageData,0,0),this.dirty=!0,this},setHSL:function(a,b,d,e){var f=a||0===a,g=b||0===b,h=d||0===d;if(f||g||h){void 0===e&&(e=new c.Rectangle(0,0,this.width,this.height));for(var i=c.Color.createColor(),j=e.y;j=0&&a<=this.width&&b>=0&&b<=this.height&&(c.Device.LITTLE_ENDIAN?this.pixels[b*this.width+a]=g<<24|f<<16|e<<8|d:this.pixels[b*this.width+a]=d<<24|e<<16|f<<8|g,h&&(this.context.putImageData(this.imageData,0,0),this.dirty=!0)),this},setPixel:function(a,b,c,d,e,f){return this.setPixel32(a,b,c,d,e,255,f)},getPixel:function(a,b,d){d||(d=c.Color.createColor());var e=~~(a+b*this.width);return e*=4,d.r=this.data[e],d.g=this.data[++e],d.b=this.data[++e],d.a=this.data[++e],d},getPixel32:function(a,b){return a>=0&&a<=this.width&&b>=0&&b<=this.height?this.pixels[b*this.width+a]:void 0},getPixelRGB:function(a,b,d,e,f){return c.Color.unpackPixel(this.getPixel32(a,b),d,e,f)},getPixels:function(a){return this.context.getImageData(a.x,a.y,a.width,a.height)},getFirstPixel:function(a){void 0===a&&(a=0);var b=c.Color.createColor(),d=0,e=0,f=1,g=!1;1===a?(f=-1,e=this.height):3===a&&(f=-1,d=this.width);do c.Color.unpackPixel(this.getPixel32(d,e),b),0===a||1===a?(d++,d===this.width&&(d=0,e+=f,(e>=this.height||0>=e)&&(g=!0))):(2===a||3===a)&&(e++,e===this.height&&(e=0,d+=f,(d>=this.width||0>=d)&&(g=!0)));while(0===b.a&&!g);return b.x=d,b.y=e,b},getBounds:function(a){return void 0===a&&(a=new c.Rectangle),a.x=this.getFirstPixel(2).x,a.x===this.width?a.setTo(0,0,0,0):(a.y=this.getFirstPixel(0).y,a.width=this.getFirstPixel(3).x-a.x+1,a.height=this.getFirstPixel(1).y-a.y+1,a)},addToWorld:function(a,b,c,d,e,f){e=e||1,f=f||1;var g=this.game.add.image(a,b,this);return g.anchor.set(c,d),g.scale.set(e,f),g},copy:function(a,b,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r){if((void 0===a||null===a)&&(a=this),(a instanceof c.RenderTexture||a instanceof PIXI.RenderTexture)&&(a=a.getCanvas()),this._image=a,a instanceof c.Sprite||a instanceof c.Image||a instanceof c.Text||a instanceof PIXI.Sprite)this._pos.set(a.texture.crop.x,a.texture.crop.y),this._size.set(a.texture.crop.width,a.texture.crop.height),this._scale.set(a.scale.x,a.scale.y),this._anchor.set(a.anchor.x,a.anchor.y),this._rotate=a.rotation,this._alpha.current=a.alpha,a.texture instanceof c.RenderTexture||a.texture instanceof PIXI.RenderTexture?this._image=a.texture.getCanvas():this._image=a.texture.baseTexture.source,(void 0===g||null===g)&&(g=a.x),(void 0===h||null===h)&&(h=a.y),a.texture.trim&&(g+=a.texture.trim.x-a.anchor.x*a.texture.trim.width,h+=a.texture.trim.y-a.anchor.y*a.texture.trim.height), -16777215!==a.tint&&(a.cachedTint!==a.tint&&(a.cachedTint=a.tint,a.tintedTexture=PIXI.CanvasTinter.getTintedTexture(a,a.tint)),this._image=a.tintedTexture,this._pos.set(0));else{if(this._pos.set(0),this._scale.set(1),this._anchor.set(0),this._rotate=0,this._alpha.current=1,a instanceof c.BitmapData)this._image=a.canvas;else if("string"==typeof a){if(a=this.game.cache.getImage(a),null===a)return;this._image=a}this._size.set(this._image.width,this._image.height)}if((void 0===b||null===b)&&(b=0),(void 0===d||null===d)&&(d=0),e&&(this._size.x=e),f&&(this._size.y=f),(void 0===g||null===g)&&(g=b),(void 0===h||null===h)&&(h=d),(void 0===i||null===i)&&(i=this._size.x),(void 0===j||null===j)&&(j=this._size.y),"number"==typeof k&&(this._rotate=k),"number"==typeof l&&(this._anchor.x=l),"number"==typeof m&&(this._anchor.y=m),"number"==typeof n&&(this._scale.x=n),"number"==typeof o&&(this._scale.y=o),"number"==typeof p&&(this._alpha.current=p),void 0===q&&(q=null),void 0===r&&(r=!1),!(this._alpha.current<=0||0===this._scale.x||0===this._scale.y||0===this._size.x||0===this._size.y)){var s=this.context;return this._alpha.prev=s.globalAlpha,s.save(),s.globalAlpha=this._alpha.current,q&&(this.op=q),r&&(g|=0,h|=0),s.translate(g,h),s.scale(this._scale.x,this._scale.y),s.rotate(this._rotate),s.drawImage(this._image,this._pos.x+b,this._pos.y+d,this._size.x,this._size.y,-i*this._anchor.x,-j*this._anchor.y,i,j),s.restore(),s.globalAlpha=this._alpha.prev,this.dirty=!0,this}},copyTransform:function(a,b,d){if(void 0===b&&(b=null),void 0===d&&(d=!1),!a.hasOwnProperty("worldTransform")||!a.worldVisible||0===a.worldAlpha)return this;var e=a.worldTransform;if(this._pos.set(a.texture.crop.x,a.texture.crop.y),this._size.set(a.texture.crop.width,a.texture.crop.height),0===e.a||0===e.d||0===this._size.x||0===this._size.y)return this;a.texture instanceof c.RenderTexture||a.texture instanceof PIXI.RenderTexture?this._image=a.texture.getCanvas():this._image=a.texture.baseTexture.source;var f=e.tx,g=e.ty;a.texture.trim&&(f+=a.texture.trim.x-a.anchor.x*a.texture.trim.width,g+=a.texture.trim.y-a.anchor.y*a.texture.trim.height),16777215!==a.tint&&(a.cachedTint!==a.tint&&(a.cachedTint=a.tint,a.tintedTexture=PIXI.CanvasTinter.getTintedTexture(a,a.tint)),this._image=a.tintedTexture,this._pos.set(0)),d&&(f|=0,g|=0);var h=this.context;return this._alpha.prev=h.globalAlpha,h.save(),h.globalAlpha=this._alpha.current,b&&(this.op=b),h[this.smoothProperty]=a.texture.baseTexture.scaleMode===PIXI.scaleModes.LINEAR,h.setTransform(e.a,e.b,e.c,e.d,f,g),h.drawImage(this._image,this._pos.x,this._pos.y,this._size.x,this._size.y,-this._size.x*a.anchor.x,-this._size.y*a.anchor.y,this._size.x,this._size.y),h.restore(),h.globalAlpha=this._alpha.prev,this.dirty=!0,this},copyRect:function(a,b,c,d,e,f,g){return this.copy(a,b.x,b.y,b.width,b.height,c,d,b.width,b.height,0,0,0,1,1,e,f,g)},draw:function(a,b,c,d,e,f,g){return this.copy(a,null,null,null,null,b,c,d,e,null,null,null,null,null,null,f,g)},drawGroup:function(a,b,c){return a.total>0&&a.forEachExists(this.drawGroupProxy,this,b,c),this},drawGroupProxy:function(a,b,d){if(a.hasOwnProperty("texture")&&this.copyTransform(a,b,d),a.type===c.GROUP&&a.exists)this.drawGroup(a,b,d);else if(a.hasOwnProperty("children")&&a.children.length>0)for(var e=0;eb.width&&(e=b.width);var f=this.context;return f.fillStyle=f.createPattern(b,d),this._circle=new c.Circle(a.start.x,a.start.y,b.height),this._circle.circumferencePoint(a.angle-1.5707963267948966,!1,this._pos),f.save(),f.translate(this._pos.x,this._pos.y),f.rotate(a.angle),f.fillRect(0,0,e,b.height),f.restore(),this.dirty=!0,this}},render:function(){return!this.disableTextureUpload&&this.dirty&&(this.baseTexture.dirty(),this.dirty=!1),this},destroy:function(){this.frameData.destroy(),this.texture.destroy(!0),PIXI.CanvasPool.remove(this)},blendReset:function(){return this.op="source-over",this},blendSourceOver:function(){return this.op="source-over",this},blendSourceIn:function(){return this.op="source-in",this},blendSourceOut:function(){return this.op="source-out",this},blendSourceAtop:function(){return this.op="source-atop",this},blendDestinationOver:function(){return this.op="destination-over",this},blendDestinationIn:function(){return this.op="destination-in",this},blendDestinationOut:function(){return this.op="destination-out",this},blendDestinationAtop:function(){return this.op="destination-atop",this},blendXor:function(){return this.op="xor",this},blendAdd:function(){return this.op="lighter",this},blendMultiply:function(){return this.op="multiply",this},blendScreen:function(){return this.op="screen",this},blendOverlay:function(){return this.op="overlay",this},blendDarken:function(){return this.op="darken",this},blendLighten:function(){return this.op="lighten",this},blendColorDodge:function(){return this.op="color-dodge",this},blendColorBurn:function(){return this.op="color-burn",this},blendHardLight:function(){return this.op="hard-light",this},blendSoftLight:function(){return this.op="soft-light",this},blendDifference:function(){return this.op="difference",this},blendExclusion:function(){return this.op="exclusion",this},blendHue:function(){return this.op="hue",this},blendSaturation:function(){return this.op="saturation",this},blendColor:function(){return this.op="color",this},blendLuminosity:function(){return this.op="luminosity",this}},Object.defineProperty(c.BitmapData.prototype,"smoothed",{get:function(){c.Canvas.getSmoothingEnabled(this.context)},set:function(a){c.Canvas.setSmoothingEnabled(this.context,a)}}),Object.defineProperty(c.BitmapData.prototype,"op",{get:function(){return this.context.globalCompositeOperation},set:function(a){this.context.globalCompositeOperation=a}}),c.BitmapData.getTransform=function(a,b,c,d,e,f){return"number"!=typeof a&&(a=0),"number"!=typeof b&&(b=0),"number"!=typeof c&&(c=1),"number"!=typeof d&&(d=1),"number"!=typeof e&&(e=0),"number"!=typeof f&&(f=0),{sx:c,sy:d,scaleX:c,scaleY:d,skewX:e,skewY:f,translateX:a,translateY:b,tx:a,ty:b}},c.BitmapData.prototype.constructor=c.BitmapData,PIXI.Graphics=function(){PIXI.DisplayObjectContainer.call(this),this.renderable=!0,this.fillAlpha=1,this.lineWidth=0,this.lineColor=0,this.graphicsData=[],this.tint=16777215,this.blendMode=PIXI.blendModes.NORMAL,this.currentPath=null,this._webGL=[],this.isMask=!1,this.boundsPadding=0,this._localBounds=new PIXI.Rectangle(0,0,1,1),this.dirty=!0,this.webGLDirty=!1,this.cachedSpriteDirty=!1},PIXI.Graphics.prototype=Object.create(PIXI.DisplayObjectContainer.prototype),PIXI.Graphics.prototype.constructor=PIXI.Graphics,PIXI.Graphics.prototype.lineStyle=function(a,b,c){return this.lineWidth=a||0,this.lineColor=b||0,this.lineAlpha=void 0===c?1:c,this.currentPath&&(this.currentPath.shape.points.length?this.drawShape(new PIXI.Polygon(this.currentPath.shape.points.slice(-2))):(this.currentPath.lineWidth=this.lineWidth,this.currentPath.lineColor=this.lineColor,this.currentPath.lineAlpha=this.lineAlpha)),this},PIXI.Graphics.prototype.moveTo=function(a,b){return this.drawShape(new PIXI.Polygon([a,b])),this},PIXI.Graphics.prototype.lineTo=function(a,b){return this.currentPath||this.moveTo(0,0),this.currentPath.shape.points.push(a,b),this.dirty=!0,this},PIXI.Graphics.prototype.quadraticCurveTo=function(a,b,c,d){this.currentPath?0===this.currentPath.shape.points.length&&(this.currentPath.shape.points=[0,0]):this.moveTo(0,0);var e,f,g=20,h=this.currentPath.shape.points;0===h.length&&this.moveTo(0,0);for(var i=h[h.length-2],j=h[h.length-1],k=0,l=1;g>=l;++l)k=l/g,e=i+(a-i)*k,f=j+(b-j)*k,h.push(e+(a+(c-a)*k-e)*k,f+(b+(d-b)*k-f)*k);return this.dirty=!0,this},PIXI.Graphics.prototype.bezierCurveTo=function(a,b,c,d,e,f){this.currentPath?0===this.currentPath.shape.points.length&&(this.currentPath.shape.points=[0,0]):this.moveTo(0,0);for(var g,h,i,j,k,l=20,m=this.currentPath.shape.points,n=m[m.length-2],o=m[m.length-1],p=0,q=1;l>=q;++q)p=q/l,g=1-p,h=g*g,i=h*g,j=p*p,k=j*p,m.push(i*n+3*h*p*a+3*g*j*c+k*e,i*o+3*h*p*b+3*g*j*d+k*f);return this.dirty=!0,this},PIXI.Graphics.prototype.arcTo=function(a,b,c,d,e){this.currentPath?0===this.currentPath.shape.points.length&&this.currentPath.shape.points.push(a,b):this.moveTo(a,b);var f=this.currentPath.shape.points,g=f[f.length-2],h=f[f.length-1],i=h-b,j=g-a,k=d-b,l=c-a,m=Math.abs(i*l-j*k);if(1e-8>m||0===e)(f[f.length-2]!==a||f[f.length-1]!==b)&&f.push(a,b);else{var n=i*i+j*j,o=k*k+l*l,p=i*k+j*l,q=e*Math.sqrt(n)/m,r=e*Math.sqrt(o)/m,s=q*p/n,t=r*p/o,u=q*l+r*j,v=q*k+r*i,w=j*(r+s),x=i*(r+s),y=l*(q+t),z=k*(q+t),A=Math.atan2(x-v,w-u),B=Math.atan2(z-v,y-u);this.arc(u+a,v+b,e,A,B,j*k>l*i)}return this.dirty=!0,this},PIXI.Graphics.prototype.arc=function(a,b,c,d,e,f,g){if(d===e)return this;void 0===f&&(f=!1),void 0===g&&(g=40),!f&&d>=e?e+=2*Math.PI:f&&e>=d&&(d+=2*Math.PI);var h=f?-1*(d-e):e-d,i=Math.ceil(Math.abs(h)/(2*Math.PI))*g;if(0===h)return this;var j=a+Math.cos(d)*c,k=b+Math.sin(d)*c;f&&this.filling?this.moveTo(a,b):this.moveTo(j,k);for(var l=this.currentPath.shape.points,m=h/(2*i),n=2*m,o=Math.cos(m),p=Math.sin(m),q=i-1,r=q%1/q,s=0;q>=s;s++){var t=s+r*s,u=m+d+n*t,v=Math.cos(u),w=-Math.sin(u);l.push((o*v+p*w)*c+a,(o*-w+p*v)*c+b)}return this.dirty=!0,this},PIXI.Graphics.prototype.beginFill=function(a,b){return this.filling=!0,this.fillColor=a||0,this.fillAlpha=void 0===b?1:b,this.currentPath&&this.currentPath.shape.points.length<=2&&(this.currentPath.fill=this.filling,this.currentPath.fillColor=this.fillColor,this.currentPath.fillAlpha=this.fillAlpha),this},PIXI.Graphics.prototype.endFill=function(){return this.filling=!1,this.fillColor=null,this.fillAlpha=1,this},PIXI.Graphics.prototype.drawRect=function(a,b,c,d){return this.drawShape(new PIXI.Rectangle(a,b,c,d)),this},PIXI.Graphics.prototype.drawRoundedRect=function(a,b,c,d,e){return this.drawShape(new PIXI.RoundedRectangle(a,b,c,d,e)),this},PIXI.Graphics.prototype.drawCircle=function(a,b,c){return this.drawShape(new PIXI.Circle(a,b,c)),this},PIXI.Graphics.prototype.drawEllipse=function(a,b,c,d){return this.drawShape(new PIXI.Ellipse(a,b,c,d)),this},PIXI.Graphics.prototype.drawPolygon=function(a){(a instanceof c.Polygon||a instanceof PIXI.Polygon)&&(a=a.points);var b=a;if(!Array.isArray(b)){b=new Array(arguments.length);for(var d=0;dp?p:x,x=x>r?r:x,x=x>t?t:x,y=y>q?q:y,y=y>s?s:y,y=y>u?u:y,v=p>v?p:v,v=r>v?r:v,v=t>v?t:v,w=q>w?q:w,w=s>w?s:w,w=u>w?u:w,this._bounds.x=x,this._bounds.width=v-x,this._bounds.y=y,this._bounds.height=w-y,this._currentBounds=this._bounds}return this._currentBounds},PIXI.Graphics.prototype.containsPoint=function(a){this.worldTransform.applyInverse(a,tempPoint);for(var b=this.graphicsData,c=0;ch?h:a,b=h+j>b?h+j:b,d=d>i?i:d,e=i+k>e?i+k:e;else if(n===PIXI.Graphics.CIRC)h=f.x,i=f.y,j=f.radius+o/2,k=f.radius+o/2,a=a>h-j?h-j:a,b=h+j>b?h+j:b,d=d>i-k?i-k:d,e=i+k>e?i+k:e;else if(n===PIXI.Graphics.ELIP)h=f.x,i=f.y,j=f.width+o/2,k=f.height+o/2,a=a>h-j?h-j:a,b=h+j>b?h+j:b,d=d>i-k?i-k:d,e=i+k>e?i+k:e;else{g=f.points;for(var p=0;ph-o?h-o:a,b=h+o>b?h+o:b,d=d>i-o?i-o:d,e=i+o>e?i+o:e}}else a=0,b=0,d=0,e=0;var q=this.boundsPadding;this._localBounds.x=a-q,this._localBounds.width=b-a+2*q,this._localBounds.y=d-q,this._localBounds.height=e-d+2*q},PIXI.Graphics.prototype._generateCachedSprite=function(){var a=this.getLocalBounds();if(this._cachedSprite)this._cachedSprite.buffer.resize(a.width,a.height);else{var b=new PIXI.CanvasBuffer(a.width,a.height),c=PIXI.Texture.fromCanvas(b.canvas);this._cachedSprite=new PIXI.Sprite(c),this._cachedSprite.buffer=b,this._cachedSprite.worldTransform=this.worldTransform}this._cachedSprite.anchor.x=-(a.x/a.width),this._cachedSprite.anchor.y=-(a.y/a.height),this._cachedSprite.buffer.context.translate(-a.x,-a.y),this.worldAlpha=1,PIXI.CanvasGraphics.renderGraphics(this,this._cachedSprite.buffer.context),this._cachedSprite.alpha=this.alpha},PIXI.Graphics.prototype.updateCachedSpriteTexture=function(){var a=this._cachedSprite,b=a.texture,c=a.buffer.canvas;b.baseTexture.width=c.width,b.baseTexture.height=c.height,b.crop.width=b.frame.width=c.width,b.crop.height=b.frame.height=c.height,a._width=c.width,a._height=c.height,b.baseTexture.dirty()},PIXI.Graphics.prototype.destroyCachedSprite=function(){this._cachedSprite.texture.destroy(!0),this._cachedSprite=null},PIXI.Graphics.prototype.drawShape=function(a){this.currentPath&&this.currentPath.shape.points.length<=2&&this.graphicsData.pop(),this.currentPath=null,a instanceof c.Polygon&&(a=a.clone(),a.flatten());var b=new PIXI.GraphicsData(this.lineWidth,this.lineColor,this.lineAlpha,this.fillColor,this.fillAlpha,this.filling,a);return this.graphicsData.push(b),b.type===PIXI.Graphics.POLY&&(b.shape.closed=this.filling,this.currentPath=b),this.dirty=!0,b},Object.defineProperty(PIXI.Graphics.prototype,"cacheAsBitmap",{get:function(){return this._cacheAsBitmap},set:function(a){this._cacheAsBitmap=a,this._cacheAsBitmap?this._generateCachedSprite():this.destroyCachedSprite(),this.dirty=!0,this.webGLDirty=!0}}),PIXI.GraphicsData=function(a,b,c,d,e,f,g){this.lineWidth=a,this.lineColor=b,this.lineAlpha=c,this._lineTint=b,this.fillColor=d,this.fillAlpha=e,this._fillTint=d,this.fill=f,this.shape=g,this.type=g.type},PIXI.GraphicsData.prototype.constructor=PIXI.GraphicsData,PIXI.GraphicsData.prototype.clone=function(){return new GraphicsData(this.lineWidth,this.lineColor,this.lineAlpha,this.fillColor,this.fillAlpha,this.fill,this.shape)},PIXI.PolyK={},PIXI.PolyK.Triangulate=function(a){var b=!0,c=a.length>>1;if(3>c)return[];for(var d=[],e=[],f=0;c>f;f++)e.push(f);f=0;for(var g=c;g>3;){var h=e[(f+0)%g],i=e[(f+1)%g],j=e[(f+2)%g],k=a[2*h],l=a[2*h+1],m=a[2*i],n=a[2*i+1],o=a[2*j],p=a[2*j+1],q=!1;if(PIXI.PolyK._convex(k,l,m,n,o,p,b)){q=!0;for(var r=0;g>r;r++){var s=e[r];if(s!==h&&s!==i&&s!==j&&PIXI.PolyK._PointInTriangle(a[2*s],a[2*s+1],k,l,m,n,o,p)){q=!1;break}}}if(q)d.push(h,i,j),e.splice((f+1)%g,1),g--,f=0;else if(f++>3*g){if(!b)return null;for(d=[],e=[],f=0;c>f;f++)e.push(f);f=0,g=c,b=!1}}return d.push(e[0],e[1],e[2]),d},PIXI.PolyK._PointInTriangle=function(a,b,c,d,e,f,g,h){var i=g-c,j=h-d,k=e-c,l=f-d,m=a-c,n=b-d,o=i*i+j*j,p=i*k+j*l,q=i*m+j*n,r=k*k+l*l,s=k*m+l*n,t=1/(o*r-p*p),u=(r*q-p*s)*t,v=(o*s-p*q)*t;return u>=0&&v>=0&&1>u+v},PIXI.PolyK._convex=function(a,b,c,d,e,f,g){return(b-d)*(e-c)+(c-a)*(f-d)>=0===g},PIXI.EarCut={},PIXI.EarCut.Triangulate=function(a,b,c){c=c||2;var d=b&&b.length,e=d?b[0]*c:a.length,f=PIXI.EarCut.linkedList(a,0,e,c,!0),g=[];if(!f)return g;var h,i,j,k,l,m,n;if(d&&(f=PIXI.EarCut.eliminateHoles(a,b,f,c)),a.length>80*c){h=j=a[0],i=k=a[1];for(var o=c;e>o;o+=c)l=a[o],m=a[o+1],h>l&&(h=l),i>m&&(i=m),l>j&&(j=l),m>k&&(k=m);n=Math.max(j-h,k-i)}return PIXI.EarCut.earcutLinked(f,g,c,h,i,n),g},PIXI.EarCut.linkedList=function(a,b,c,d,e){var f,g,h,i=0;for(f=b,g=c-d;c>f;f+=d)i+=(a[g]-a[f])*(a[f+1]+a[g+1]),g=f;if(e===i>0)for(f=b;c>f;f+=d)h=PIXI.EarCut.insertNode(f,a[f],a[f+1],h);else for(f=c-d;f>=b;f-=d)h=PIXI.EarCut.insertNode(f,a[f],a[f+1],h);return h},PIXI.EarCut.filterPoints=function(a,b){if(!a)return a;b||(b=a);var c,d=a;do if(c=!1,d.steiner||!PIXI.EarCut.equals(d,d.next)&&0!==PIXI.EarCut.area(d.prev,d,d.next))d=d.next;else{if(PIXI.EarCut.removeNode(d),d=b=d.prev,d===d.next)return null;c=!0}while(c||d!==b);return b},PIXI.EarCut.earcutLinked=function(a,b,c,d,e,f,g){if(a){!g&&f&&PIXI.EarCut.indexCurve(a,d,e,f);for(var h,i,j=a;a.prev!==a.next;)if(h=a.prev,i=a.next,f?PIXI.EarCut.isEarHashed(a,d,e,f):PIXI.EarCut.isEar(a))b.push(h.i/c),b.push(a.i/c),b.push(i.i/c),PIXI.EarCut.removeNode(a),a=i.next,j=i.next;else if(a=i,a===j){g?1===g?(a=PIXI.EarCut.cureLocalIntersections(a,b,c),PIXI.EarCut.earcutLinked(a,b,c,d,e,f,2)):2===g&&PIXI.EarCut.splitEarcut(a,b,c,d,e,f):PIXI.EarCut.earcutLinked(PIXI.EarCut.filterPoints(a),b,c,d,e,f,1);break}}},PIXI.EarCut.isEar=function(a){var b=a.prev,c=a,d=a.next;if(PIXI.EarCut.area(b,c,d)>=0)return!1;for(var e=a.next.next;e!==a.prev;){if(PIXI.EarCut.pointInTriangle(b.x,b.y,c.x,c.y,d.x,d.y,e.x,e.y)&&PIXI.EarCut.area(e.prev,e,e.next)>=0)return!1;e=e.next}return!0},PIXI.EarCut.isEarHashed=function(a,b,c,d){var e=a.prev,f=a,g=a.next;if(PIXI.EarCut.area(e,f,g)>=0)return!1;for(var h=e.xf.x?e.x>g.x?e.x:g.x:f.x>g.x?f.x:g.x,k=e.y>f.y?e.y>g.y?e.y:g.y:f.y>g.y?f.y:g.y,l=PIXI.EarCut.zOrder(h,i,b,c,d),m=PIXI.EarCut.zOrder(j,k,b,c,d),n=a.nextZ;n&&n.z<=m;){if(n!==a.prev&&n!==a.next&&PIXI.EarCut.pointInTriangle(e.x,e.y,f.x,f.y,g.x,g.y,n.x,n.y)&&PIXI.EarCut.area(n.prev,n,n.next)>=0)return!1;n=n.nextZ}for(n=a.prevZ;n&&n.z>=l;){if(n!==a.prev&&n!==a.next&&PIXI.EarCut.pointInTriangle(e.x,e.y,f.x,f.y,g.x,g.y,n.x,n.y)&&PIXI.EarCut.area(n.prev,n,n.next)>=0)return!1;n=n.prevZ}return!0},PIXI.EarCut.cureLocalIntersections=function(a,b,c){var d=a;do{var e=d.prev,f=d.next.next;PIXI.EarCut.intersects(e,d,d.next,f)&&PIXI.EarCut.locallyInside(e,f)&&PIXI.EarCut.locallyInside(f,e)&&(b.push(e.i/c),b.push(d.i/c),b.push(f.i/c),PIXI.EarCut.removeNode(d),PIXI.EarCut.removeNode(d.next),d=a=f),d=d.next}while(d!==a);return d},PIXI.EarCut.splitEarcut=function(a,b,c,d,e,f){var g=a;do{for(var h=g.next.next;h!==g.prev;){if(g.i!==h.i&&PIXI.EarCut.isValidDiagonal(g,h)){var i=PIXI.EarCut.splitPolygon(g,h);return g=PIXI.EarCut.filterPoints(g,g.next),i=PIXI.EarCut.filterPoints(i,i.next),PIXI.EarCut.earcutLinked(g,b,c,d,e,f),void PIXI.EarCut.earcutLinked(i,b,c,d,e,f)}h=h.next}g=g.next}while(g!==a)},PIXI.EarCut.eliminateHoles=function(a,b,c,d){var e,f,g,h,i,j=[];for(e=0,f=b.length;f>e;e++)g=b[e]*d,h=f-1>e?b[e+1]*d:a.length,i=PIXI.EarCut.linkedList(a,g,h,d,!1),i===i.next&&(i.steiner=!0),j.push(PIXI.EarCut.getLeftmost(i));for(j.sort(compareX),e=0;e=d.next.y){var h=d.x+(f-d.y)*(d.next.x-d.x)/(d.next.y-d.y);e>=h&&h>g&&(g=h,c=d.x=d.x&&d.x>=c.x&&PIXI.EarCut.pointInTriangle(fi||i===k&&d.x>c.x)&&PIXI.EarCut.locallyInside(d,a)&&(c=d,k=i)),d=d.next;return c},PIXI.EarCut.indexCurve=function(a,b,c,d){var e=a;do null===e.z&&(e.z=PIXI.EarCut.zOrder(e.x,e.y,b,c,d)),e.prevZ=e.prev,e.nextZ=e.next,e=e.next;while(e!==a);e.prevZ.nextZ=null,e.prevZ=null,PIXI.EarCut.sortLinked(e)},PIXI.EarCut.sortLinked=function(a){var b,c,d,e,f,g,h,i,j=1;do{for(c=a,a=null,f=null,g=0;c;){for(g++,d=c,h=0,b=0;j>b&&(h++,d=d.nextZ,d);b++);for(i=j;h>0||i>0&&d;)0===h?(e=d,d=d.nextZ,i--):0!==i&&d?c.z<=d.z?(e=c,c=c.nextZ,h--):(e=d,d=d.nextZ,i--):(e=c,c=c.nextZ,h--),f?f.nextZ=e:a=e,e.prevZ=f,f=e;c=d}f.nextZ=null,j*=2}while(g>1);return a},PIXI.EarCut.zOrder=function(a,b,c,d,e){return a=32767*(a-c)/e,b=32767*(b-d)/e,a=16711935&(a|a<<8),a=252645135&(a|a<<4),a=858993459&(a|a<<2),a=1431655765&(a|a<<1),b=16711935&(b|b<<8),b=252645135&(b|b<<4),b=858993459&(b|b<<2),b=1431655765&(b|b<<1),a|b<<1},PIXI.EarCut.getLeftmost=function(a){var b=a,c=a;do b.x=0&&(a-g)*(d-h)-(c-g)*(b-h)>=0&&(c-g)*(f-h)-(e-g)*(d-h)>=0},PIXI.EarCut.isValidDiagonal=function(a,b){return PIXI.EarCut.equals(a,b)||a.next.i!==b.i&&a.prev.i!==b.i&&!PIXI.EarCut.intersectsPolygon(a,b)&&PIXI.EarCut.locallyInside(a,b)&&PIXI.EarCut.locallyInside(b,a)&&PIXI.EarCut.middleInside(a,b)},PIXI.EarCut.area=function(a,b,c){return(b.y-a.y)*(c.x-b.x)-(b.x-a.x)*(c.y-b.y)},PIXI.EarCut.equals=function(a,b){return a.x===b.x&&a.y===b.y},PIXI.EarCut.intersects=function(a,b,c,d){return PIXI.EarCut.area(a,b,c)>0!=PIXI.EarCut.area(a,b,d)>0&&PIXI.EarCut.area(c,d,a)>0!=PIXI.EarCut.area(c,d,b)>0},PIXI.EarCut.intersectsPolygon=function(a,b){var c=a;do{if(c.i!==a.i&&c.next.i!==a.i&&c.i!==b.i&&c.next.i!==b.i&&PIXI.EarCut.intersects(c,c.next,a,b))return!0;c=c.next}while(c!==a);return!1},PIXI.EarCut.locallyInside=function(a,b){return PIXI.EarCut.area(a.prev,a,a.next)<0?PIXI.EarCut.area(a,b,a.next)>=0&&PIXI.EarCut.area(a,a.prev,b)>=0:PIXI.EarCut.area(a,b,a.prev)<0||PIXI.EarCut.area(a,a.next,b)<0},PIXI.EarCut.middleInside=function(a,b){var c=a,d=!1,e=(a.x+b.x)/2,f=(a.y+b.y)/2;do c.y>f!=c.next.y>f&&e<(c.next.x-c.x)*(f-c.y)/(c.next.y-c.y)+c.x&&(d=!d),c=c.next;while(c!==a);return d},PIXI.EarCut.splitPolygon=function(a,b){var c=new PIXI.EarCut.Node(a.i,a.x,a.y),d=new PIXI.EarCut.Node(b.i,b.x,b.y),e=a.next,f=b.prev;return a.next=b,b.prev=a,c.next=e,e.prev=c,d.next=c,c.prev=d,f.next=d,d.prev=f,d},PIXI.EarCut.insertNode=function(a,b,c,d){var e=new PIXI.EarCut.Node(a,b,c);return d?(e.next=d.next,e.prev=d,d.next.prev=e,d.next=e):(e.prev=e,e.next=e),e},PIXI.EarCut.removeNode=function(a){a.next.prev=a.prev,a.prev.next=a.next,a.prevZ&&(a.prevZ.nextZ=a.nextZ),a.nextZ&&(a.nextZ.prevZ=a.prevZ)},PIXI.EarCut.Node=function(a,b,c){this.i=a,this.x=b,this.y=c,this.prev=null,this.next=null,this.z=null,this.prevZ=null,this.nextZ=null,this.steiner=!1},PIXI.WebGLGraphics=function(){},PIXI.WebGLGraphics.stencilBufferLimit=6,PIXI.WebGLGraphics.renderGraphics=function(a,b){var c,d=b.gl,e=b.projection,f=b.offset,g=b.shaderManager.primitiveShader;a.dirty&&PIXI.WebGLGraphics.updateGraphics(a,d);for(var h=a._webGL[d.id],i=0;i=PIXI.WebGLGraphics.stencilBufferLimit)if(g.points.length<2*PIXI.WebGLGraphics.stencilBufferLimit){f=PIXI.WebGLGraphics.switchMode(c,0);var h=PIXI.WebGLGraphics.buildPoly(g,f);h||(f=PIXI.WebGLGraphics.switchMode(c,1),PIXI.WebGLGraphics.buildComplexPoly(g,f))}else f=PIXI.WebGLGraphics.switchMode(c,1),PIXI.WebGLGraphics.buildComplexPoly(g,f);g.lineWidth>0&&(f=PIXI.WebGLGraphics.switchMode(c,0),PIXI.WebGLGraphics.buildLine(g,f))}else f=PIXI.WebGLGraphics.switchMode(c,0),g.type===PIXI.Graphics.RECT?PIXI.WebGLGraphics.buildRectangle(g,f):g.type===PIXI.Graphics.CIRC||g.type===PIXI.Graphics.ELIP?PIXI.WebGLGraphics.buildCircle(g,f):g.type===PIXI.Graphics.RREC&&PIXI.WebGLGraphics.buildRoundedRectangle(g,f);c.lastIndex++}for(d=0;d=q;q++)p=q/n,h=g(a,c,p),i=g(b,d,p),j=g(c,e,p),k=g(d,f,p),l=g(h,j,p),m=g(i,k,p),o.push(l,m);return o},PIXI.WebGLGraphics.buildCircle=function(a,b){var c,d,e=a.shape,f=e.x,g=e.y;a.type===PIXI.Graphics.CIRC?(c=e.radius,d=e.radius):(c=e.width,d=e.height);var h=40,i=2*Math.PI/h,j=0;if(a.fill){var k=PIXI.hex2rgb(a.fillColor),l=a.fillAlpha,m=k[0]*l,n=k[1]*l,o=k[2]*l,p=b.points,q=b.indices,r=p.length/6;for(q.push(r),j=0;h+1>j;j++)p.push(f,g,m,n,o,l),p.push(f+Math.sin(i*j)*c,g+Math.cos(i*j)*d,m,n,o,l), -q.push(r++,r++);q.push(r-1)}if(a.lineWidth){var s=a.points;for(a.points=[],j=0;h+1>j;j++)a.points.push(f+Math.sin(i*j)*c,g+Math.cos(i*j)*d);PIXI.WebGLGraphics.buildLine(a,b),a.points=s}},PIXI.WebGLGraphics.buildLine=function(a,b){var c=0,d=a.points;if(0!==d.length){if(a.lineWidth%2)for(c=0;cc;c++)k=d[2*(c-1)],l=d[2*(c-1)+1],m=d[2*c],n=d[2*c+1],o=d[2*(c+1)],p=d[2*(c+1)+1],q=-(l-n),r=k-m,E=Math.sqrt(q*q+r*r),q/=E,r/=E,q*=K,r*=K,s=-(n-p),t=m-o,E=Math.sqrt(s*s+t*t),s/=E,t/=E,s*=K,t*=K,w=-r+l-(-r+n),x=-q+m-(-q+k),y=(-q+k)*(-r+n)-(-q+m)*(-r+l),z=-t+p-(-t+n),A=-s+m-(-s+o),B=(-s+o)*(-t+n)-(-s+m)*(-t+p),C=w*A-z*x,Math.abs(C)<.1?(C+=10.1,F.push(m-q,n-r,N,O,P,M),F.push(m+q,n+r,N,O,P,M)):(i=(x*B-A*y)/C,j=(z*y-w*B)/C,D=(i-m)*(i-m)+(j-n)+(j-n),D>19600?(u=q-s,v=r-t,E=Math.sqrt(u*u+v*v),u/=E,v/=E,u*=K,v*=K,F.push(m-u,n-v),F.push(N,O,P,M),F.push(m+u,n+v),F.push(N,O,P,M),F.push(m-u,n-v),F.push(N,O,P,M),I++):(F.push(i,j),F.push(N,O,P,M),F.push(m-(i-m),n-(j-n)),F.push(N,O,P,M)));for(k=d[2*(H-2)],l=d[2*(H-2)+1],m=d[2*(H-1)],n=d[2*(H-1)+1],q=-(l-n),r=k-m,E=Math.sqrt(q*q+r*r),q/=E,r/=E,q*=K,r*=K,F.push(m-q,n-r),F.push(N,O,P,M),F.push(m+q,n+r),F.push(N,O,P,M),G.push(J),c=0;I>c;c++)G.push(J++);G.push(J-1)}},PIXI.WebGLGraphics.buildComplexPoly=function(a,b){var c=a.points.slice();if(!(c.length<6)){var d=b.indices;b.points=c,b.alpha=a.fillAlpha,b.color=PIXI.hex2rgb(a.fillColor);for(var e,f,g=1/0,h=-(1/0),i=1/0,j=-(1/0),k=0;ke?e:g,h=e>h?e:h,i=i>f?f:i,j=f>j?f:j;c.push(g,i,h,i,h,j,g,j);var l=c.length/2;for(k=0;l>k;k++)d.push(k)}},PIXI.WebGLGraphics.buildPoly=function(a,b){var c=a.points;if(!(c.length<6)){var d=b.points,e=b.indices,f=c.length/2,g=PIXI.hex2rgb(a.fillColor),h=a.fillAlpha,i=g[0]*h,j=g[1]*h,k=g[2]*h,l=PIXI.EarCut.Triangulate(c,null,2);if(!l)return!1;var m=d.length/6,n=0;for(n=0;nn;n++)d.push(c[2*n],c[2*n+1],i,j,k,h);return!0}},PIXI.WebGLGraphics.graphicsDataPool=[],PIXI.WebGLGraphicsData=function(a){this.gl=a,this.color=[0,0,0],this.points=[],this.indices=[],this.buffer=a.createBuffer(),this.indexBuffer=a.createBuffer(),this.mode=1,this.alpha=1,this.dirty=!0},PIXI.WebGLGraphicsData.prototype.reset=function(){this.points=[],this.indices=[]},PIXI.WebGLGraphicsData.prototype.upload=function(){var a=this.gl;this.glPoints=new PIXI.Float32Array(this.points),a.bindBuffer(a.ARRAY_BUFFER,this.buffer),a.bufferData(a.ARRAY_BUFFER,this.glPoints,a.STATIC_DRAW),this.glIndicies=new PIXI.Uint16Array(this.indices),a.bindBuffer(a.ELEMENT_ARRAY_BUFFER,this.indexBuffer),a.bufferData(a.ELEMENT_ARRAY_BUFFER,this.glIndicies,a.STATIC_DRAW),this.dirty=!1},PIXI.CanvasGraphics=function(){},PIXI.CanvasGraphics.renderGraphics=function(a,b){var c=a.worldAlpha;a.dirty&&(this.updateGraphicsTint(a),a.dirty=!1);for(var d=0;dA?A:z,b.beginPath(),b.moveTo(v,w+z),b.lineTo(v,w+y-z),b.quadraticCurveTo(v,w+y,v+z,w+y),b.lineTo(v+x-z,w+y),b.quadraticCurveTo(v+x,w+y,v+x,w+y-z),b.lineTo(v+x,w+z),b.quadraticCurveTo(v+x,w,v+x-z,w),b.lineTo(v+z,w),b.quadraticCurveTo(v,w,v,w+z),b.closePath(),(e.fillColor||0===e.fillColor)&&(b.globalAlpha=e.fillAlpha*c,b.fillStyle="#"+("00000"+(0|g).toString(16)).substr(-6),b.fill()),e.lineWidth&&(b.globalAlpha=e.lineAlpha*c,b.strokeStyle="#"+("00000"+(0|h).toString(16)).substr(-6),b.stroke())}}},PIXI.CanvasGraphics.renderGraphicsMask=function(a,b){var c=a.graphicsData.length;if(0!==c){b.beginPath();for(var d=0;c>d;d++){var e=a.graphicsData[d],f=e.shape;if(e.type===PIXI.Graphics.POLY){var g=f.points;b.moveTo(g[0],g[1]);for(var h=1;hy?y:x,b.moveTo(t,u+x),b.lineTo(t,u+w-x),b.quadraticCurveTo(t,u+w,t+x,u+w),b.lineTo(t+v-x,u+w),b.quadraticCurveTo(t+v,u+w,t+v,u+w-x),b.lineTo(t+v,u+x),b.quadraticCurveTo(t+v,u,t+v-x,u),b.lineTo(t+x,u),b.quadraticCurveTo(t,u,t,u+x),b.closePath()}}}},PIXI.CanvasGraphics.updateGraphicsTint=function(a){if(16777215!==a.tint)for(var b=(a.tint>>16&255)/255,c=(a.tint>>8&255)/255,d=(255&a.tint)/255,e=0;e>16&255)/255*b*255<<16)+((g>>8&255)/255*c*255<<8)+(255&g)/255*d*255,f._lineTint=((h>>16&255)/255*b*255<<16)+((h>>8&255)/255*c*255<<8)+(255&h)/255*d*255}},c.Graphics=function(a,b,d){void 0===b&&(b=0),void 0===d&&(d=0),this.type=c.GRAPHICS,this.physicsType=c.SPRITE,this.anchor=new c.Point,PIXI.Graphics.call(this),c.Component.Core.init.call(this,a,b,d,"",null)},c.Graphics.prototype=Object.create(PIXI.Graphics.prototype),c.Graphics.prototype.constructor=c.Graphics,c.Component.Core.install.call(c.Graphics.prototype,["Angle","AutoCull","Bounds","Destroy","FixedToCamera","InputEnabled","InWorld","LifeSpan","PhysicsBody","Reset"]),c.Graphics.prototype.preUpdatePhysics=c.Component.PhysicsBody.preUpdate,c.Graphics.prototype.preUpdateLifeSpan=c.Component.LifeSpan.preUpdate,c.Graphics.prototype.preUpdateInWorld=c.Component.InWorld.preUpdate,c.Graphics.prototype.preUpdateCore=c.Component.Core.preUpdate,c.Graphics.prototype.preUpdate=function(){return this.preUpdatePhysics()&&this.preUpdateLifeSpan()&&this.preUpdateInWorld()?this.preUpdateCore():!1},c.Graphics.prototype.destroy=function(a){this.clear(),c.Component.Destroy.prototype.destroy.call(this,a)},c.Graphics.prototype.drawTriangle=function(a,b){void 0===b&&(b=!1);var d=new c.Polygon(a);if(b){var e=new c.Point(this.game.camera.x-a[0].x,this.game.camera.y-a[0].y),f=new c.Point(a[1].x-a[0].x,a[1].y-a[0].y),g=new c.Point(a[1].x-a[2].x,a[1].y-a[2].y),h=g.cross(f);e.dot(h)>0&&this.drawPolygon(d)}else this.drawPolygon(d)},c.Graphics.prototype.drawTriangles=function(a,b,d){void 0===d&&(d=!1);var e,f=new c.Point,g=new c.Point,h=new c.Point,i=[];if(b)if(a[0]instanceof c.Point)for(e=0;e0&&this.style.maxLinesh;h++){if(0===c){var i=this.style.strokeThickness+this.padding.x;i+=this.colors.length>0||this.strokeColors.length>0||this.fontWeights.length>0||this.fontStyles.length>0?this.measureLine(b[h]):this.context.measureText(b[h]).width,this.style.wordWrap&&(i-=this.context.measureText(" ").width)}else{var j=b[h].split(/(?:\t)/),i=this.padding.x+this.style.strokeThickness;if(Array.isArray(c))for(var k=0,l=0;l0||this.strokeColors.length>0||this.fontWeights.length>0||this.fontStyles.length>0?this.measureLine(j[l]):Math.ceil(this.context.measureText(j[l]).width),l>0&&(k+=c[l-1]),i=k+m}else for(var l=0;l0||this.strokeColors.length>0||this.fontWeights.length>0||this.fontStyles.length>0?this.measureLine(j[l]):Math.ceil(this.context.measureText(j[l]).width);var n=this.game.math.snapToCeil(i,c)-i;i+=n}}d[h]=Math.ceil(i),e=Math.max(e,d[h])}this.canvas.width=e*this._res;var o=f.fontSize+this.style.strokeThickness+this.padding.y,p=o*g,q=this._lineSpacing;0>q&&Math.abs(q)>o&&(q=-o),0!==q&&(p+=q>0?q*b.length:q*(b.length-1)),this.canvas.height=p*this._res,this.context.scale(this._res,this._res),navigator.isCocoonJS&&this.context.clearRect(0,0,this.canvas.width,this.canvas.height),this.style.backgroundColor&&(this.context.fillStyle=this.style.backgroundColor,this.context.fillRect(0,0,this.canvas.width,this.canvas.height)),this.context.fillStyle=this.style.fill,this.context.font=this.style.font,this.context.strokeStyle=this.style.stroke,this.context.textBaseline="alphabetic",this.context.lineWidth=this.style.strokeThickness,this.context.lineCap="round",this.context.lineJoin="round";var r,s;for(this._charCount=0,h=0;g>h;h++)r=this.style.strokeThickness/2,s=this.style.strokeThickness/2+h*o+f.ascent,h>0&&(s+=q*h),"right"===this.style.align?r+=e-d[h]:"center"===this.style.align&&(r+=(e-d[h])/2),this.autoRound&&(r=Math.round(r),s=Math.round(s)),this.colors.length>0||this.strokeColors.length>0||this.fontWeights.length>0||this.fontStyles.length>0?this.updateLine(b[h],r,s):(this.style.stroke&&this.style.strokeThickness&&(this.updateShadow(this.style.shadowStroke),0===c?this.context.strokeText(b[h],r,s):this.renderTabLine(b[h],r,s,!1)),this.style.fill&&(this.updateShadow(this.style.shadowFill),0===c?this.context.fillText(b[h],r,s):this.renderTabLine(b[h],r,s,!0)));this.updateTexture()},c.Text.prototype.renderTabLine=function(a,b,c,d){var e=a.split(/(?:\t)/),f=this.style.tabs,g=0;if(Array.isArray(f))for(var h=0,i=0;i0&&(h+=f[i-1]),g=b+h,d?this.context.fillText(e[i],g,c):this.context.strokeText(e[i],g,c);else for(var i=0;i0||this.fontStyles.length>0){var e=this.fontToComponents(this.context.font);this.fontStyles[this._charCount]&&(e.fontStyle=this.fontStyles[this._charCount]),this.fontWeights[this._charCount]&&(e.fontWeight=this.fontWeights[this._charCount]),this.context.font=this.componentsToFont(e)}this.style.stroke&&this.style.strokeThickness&&(this.strokeColors[this._charCount]&&(this.context.strokeStyle=this.strokeColors[this._charCount]),this.updateShadow(this.style.shadowStroke)),this.style.fill&&(this.colors[this._charCount]&&(this.context.fillStyle=this.colors[this._charCount]),this.updateShadow(this.style.shadowFill)),b+=this.context.measureText(d).width,this._charCount++}return Math.ceil(b)},c.Text.prototype.updateLine=function(a,b,c){for(var d=0;d0||this.fontStyles.length>0){var f=this.fontToComponents(this.context.font);this.fontStyles[this._charCount]&&(f.fontStyle=this.fontStyles[this._charCount]),this.fontWeights[this._charCount]&&(f.fontWeight=this.fontWeights[this._charCount]),this.context.font=this.componentsToFont(f)}this.style.stroke&&this.style.strokeThickness&&(this.strokeColors[this._charCount]&&(this.context.strokeStyle=this.strokeColors[this._charCount]),this.updateShadow(this.style.shadowStroke),this.context.strokeText(e,b,c)),this.style.fill&&(this.colors[this._charCount]&&(this.context.fillStyle=this.colors[this._charCount]),this.updateShadow(this.style.shadowFill),this.context.fillText(e,b,c)),b+=this.context.measureText(e).width,this._charCount++}},c.Text.prototype.clearColors=function(){return this.colors=[],this.strokeColors=[],this.dirty=!0,this},c.Text.prototype.clearFontValues=function(){return this.fontStyles=[],this.fontWeights=[],this.dirty=!0,this},c.Text.prototype.addColor=function(a,b){return this.colors[b]=a,this.dirty=!0,this},c.Text.prototype.addStrokeColor=function(a,b){return this.strokeColors[b]=a,this.dirty=!0,this},c.Text.prototype.addFontStyle=function(a,b){return this.fontStyles[b]=a,this.dirty=!0,this},c.Text.prototype.addFontWeight=function(a,b){return this.fontWeights[b]=a,this.dirty=!0,this},c.Text.prototype.precalculateWordWrap=function(a){this.texture.baseTexture.resolution=this._res,this.context.font=this.style.font;var b=this.runWordWrap(a);return b.split(/(?:\r\n|\r|\n)/)},c.Text.prototype.runWordWrap=function(a){return this.useAdvancedWrap?this.advancedWordWrap(a):this.basicWordWrap(a)},c.Text.prototype.advancedWordWrap=function(a){for(var b=this.context,c=this.style.wordWrapWidth,d="",e=a.replace(/ +/gi," ").split(/\r?\n/gi),f=e.length,g=0;f>g;g++){var h=e[g],i="";h=h.replace(/^ *|\s*$/gi,"");var j=b.measureText(h).width;if(c>j)d+=h+"\n";else{for(var k=c,l=h.split(" "),m=0;mk){if(0===m){for(var q=o;q.length&&(q=q.slice(0,-1),p=b.measureText(q).width,!(k>=p)););if(!q.length)throw new Error("This text's wordWrapWidth setting is less than a single character!");var r=n.substr(q.length);l[m]=r,i+=q}var s=l[m].length?m:m+1,t=l.slice(s).join(" ").replace(/[ \n]*$/gi,"");e[g+1]=t+" "+(e[g+1]||""),f=e.length;break}i+=o,k-=p}d+=i.replace(/[ \n]*$/gi,"")+"\n"}}return d=d.replace(/[\s|\n]*$/gi,"")},c.Text.prototype.basicWordWrap=function(a){for(var b="",c=a.split("\n"),d=0;de?(g>0&&(b+="\n"),b+=f[g]+" ",e=this.style.wordWrapWidth-h):(e-=i,b+=f[g]+" ")}dd&&(this.style.wordWrapWidth=d)),this.updateTexture(),this},c.Text.prototype.updateTexture=function(){var a=this.texture.baseTexture,b=this.texture.crop,c=this.texture.frame,d=this.canvas.width,e=this.canvas.height;if(a.width=d,a.height=e,b.width=d,b.height=e,c.width=d,c.height=e,this.texture.width=d,this.texture.height=e,this._width=d,this._height=e,this.textBounds){var f=this.textBounds.x,g=this.textBounds.y;"right"===this.style.boundsAlignH?f+=this.textBounds.width-this.canvas.width:"center"===this.style.boundsAlignH&&(f+=this.textBounds.halfWidth-this.canvas.width/2),"bottom"===this.style.boundsAlignV?g+=this.textBounds.height-this.canvas.height:"middle"===this.style.boundsAlignV&&(g+=this.textBounds.halfHeight-this.canvas.height/2),this.pivot.x=-f,this.pivot.y=-g}this.renderable=0!==d&&0!==e,this.texture.requiresReTint=!0,this.texture.baseTexture.dirty()},c.Text.prototype._renderWebGL=function(a){this.dirty&&(this.updateText(),this.dirty=!1),PIXI.Sprite.prototype._renderWebGL.call(this,a)},c.Text.prototype._renderCanvas=function(a){this.dirty&&(this.updateText(),this.dirty=!1),PIXI.Sprite.prototype._renderCanvas.call(this,a)},c.Text.prototype.determineFontProperties=function(a){var b=c.Text.fontPropertiesCache[a];if(!b){b={};var d=c.Text.fontPropertiesCanvas,e=c.Text.fontPropertiesContext;e.font=a;var f=Math.ceil(e.measureText("|MÉq").width),g=Math.ceil(e.measureText("|MÉq").width),h=2*g;if(g=1.4*g|0,d.width=f,d.height=h,e.fillStyle="#f00",e.fillRect(0,0,f,h),e.font=a,e.textBaseline="alphabetic",e.fillStyle="#000",e.fillText("|MÉq",0,g),!e.getImageData(0,0,f,h))return b.ascent=g,b.descent=g+6,b.fontSize=b.ascent+b.descent,c.Text.fontPropertiesCache[a]=b,b;var i,j,k=e.getImageData(0,0,f,h).data,l=k.length,m=4*f,n=0,o=!1;for(i=0;g>i;i++){for(j=0;m>j;j+=4)if(255!==k[n+j]){o=!0;break}if(o)break;n+=m}for(b.ascent=g-i,n=l-m,o=!1,i=h;i>g;i--){for(j=0;m>j;j+=4)if(255!==k[n+j]){o=!0;break}if(o)break;n-=m}b.descent=i-g,b.descent+=6,b.fontSize=b.ascent+b.descent,c.Text.fontPropertiesCache[a]=b}return b},c.Text.prototype.getBounds=function(a){return this.dirty&&(this.updateText(),this.dirty=!1),PIXI.Sprite.prototype.getBounds.call(this,a)},Object.defineProperty(c.Text.prototype,"text",{get:function(){return this._text},set:function(a){a!==this._text&&(this._text=a.toString()||"",this.dirty=!0,this.parent&&this.updateTransform())}}),Object.defineProperty(c.Text.prototype,"cssFont",{get:function(){return this.componentsToFont(this._fontComponents)},set:function(a){a=a||"bold 20pt Arial",this._fontComponents=this.fontToComponents(a),this.updateFont(this._fontComponents)}}),Object.defineProperty(c.Text.prototype,"font",{get:function(){return this._fontComponents.fontFamily},set:function(a){a=a||"Arial",a=a.trim(),/^(?:inherit|serif|sans-serif|cursive|fantasy|monospace)$/.exec(a)||/['",]/.exec(a)||(a="'"+a+"'"),this._fontComponents.fontFamily=a,this.updateFont(this._fontComponents)}}),Object.defineProperty(c.Text.prototype,"fontSize",{get:function(){var a=this._fontComponents.fontSize;return a&&/(?:^0$|px$)/.exec(a)?parseInt(a,10):a},set:function(a){a=a||"0","number"==typeof a&&(a+="px"),this._fontComponents.fontSize=a,this.updateFont(this._fontComponents)}}),Object.defineProperty(c.Text.prototype,"fontWeight",{get:function(){return this._fontComponents.fontWeight||"normal"},set:function(a){a=a||"normal",this._fontComponents.fontWeight=a,this.updateFont(this._fontComponents)}}),Object.defineProperty(c.Text.prototype,"fontStyle",{get:function(){return this._fontComponents.fontStyle||"normal"},set:function(a){a=a||"normal",this._fontComponents.fontStyle=a,this.updateFont(this._fontComponents)}}),Object.defineProperty(c.Text.prototype,"fontVariant",{get:function(){return this._fontComponents.fontVariant||"normal"},set:function(a){a=a||"normal",this._fontComponents.fontVariant=a,this.updateFont(this._fontComponents)}}),Object.defineProperty(c.Text.prototype,"fill",{get:function(){return this.style.fill},set:function(a){a!==this.style.fill&&(this.style.fill=a,this.dirty=!0)}}),Object.defineProperty(c.Text.prototype,"align",{get:function(){return this.style.align},set:function(a){a!==this.style.align&&(this.style.align=a,this.dirty=!0)}}),Object.defineProperty(c.Text.prototype,"resolution",{get:function(){return this._res},set:function(a){a!==this._res&&(this._res=a,this.dirty=!0)}}),Object.defineProperty(c.Text.prototype,"tabs",{get:function(){return this.style.tabs},set:function(a){a!==this.style.tabs&&(this.style.tabs=a,this.dirty=!0)}}),Object.defineProperty(c.Text.prototype,"boundsAlignH",{get:function(){return this.style.boundsAlignH},set:function(a){a!==this.style.boundsAlignH&&(this.style.boundsAlignH=a,this.dirty=!0)}}),Object.defineProperty(c.Text.prototype,"boundsAlignV",{get:function(){return this.style.boundsAlignV},set:function(a){a!==this.style.boundsAlignV&&(this.style.boundsAlignV=a,this.dirty=!0)}}),Object.defineProperty(c.Text.prototype,"stroke",{get:function(){return this.style.stroke},set:function(a){a!==this.style.stroke&&(this.style.stroke=a,this.dirty=!0)}}),Object.defineProperty(c.Text.prototype,"strokeThickness",{get:function(){return this.style.strokeThickness},set:function(a){a!==this.style.strokeThickness&&(this.style.strokeThickness=a,this.dirty=!0)}}),Object.defineProperty(c.Text.prototype,"wordWrap",{get:function(){return this.style.wordWrap},set:function(a){a!==this.style.wordWrap&&(this.style.wordWrap=a,this.dirty=!0)}}),Object.defineProperty(c.Text.prototype,"wordWrapWidth",{get:function(){return this.style.wordWrapWidth},set:function(a){a!==this.style.wordWrapWidth&&(this.style.wordWrapWidth=a,this.dirty=!0)}}),Object.defineProperty(c.Text.prototype,"lineSpacing",{get:function(){return this._lineSpacing},set:function(a){a!==this._lineSpacing&&(this._lineSpacing=parseFloat(a),this.dirty=!0,this.parent&&this.updateTransform())}}),Object.defineProperty(c.Text.prototype,"shadowOffsetX",{get:function(){return this.style.shadowOffsetX},set:function(a){a!==this.style.shadowOffsetX&&(this.style.shadowOffsetX=a,this.dirty=!0)}}),Object.defineProperty(c.Text.prototype,"shadowOffsetY",{get:function(){return this.style.shadowOffsetY},set:function(a){a!==this.style.shadowOffsetY&&(this.style.shadowOffsetY=a,this.dirty=!0)}}),Object.defineProperty(c.Text.prototype,"shadowColor",{get:function(){return this.style.shadowColor},set:function(a){a!==this.style.shadowColor&&(this.style.shadowColor=a,this.dirty=!0)}}),Object.defineProperty(c.Text.prototype,"shadowBlur",{get:function(){return this.style.shadowBlur},set:function(a){a!==this.style.shadowBlur&&(this.style.shadowBlur=a,this.dirty=!0)}}),Object.defineProperty(c.Text.prototype,"shadowStroke",{get:function(){return this.style.shadowStroke},set:function(a){a!==this.style.shadowStroke&&(this.style.shadowStroke=a,this.dirty=!0)}}),Object.defineProperty(c.Text.prototype,"shadowFill",{get:function(){return this.style.shadowFill},set:function(a){a!==this.style.shadowFill&&(this.style.shadowFill=a,this.dirty=!0)}}),Object.defineProperty(c.Text.prototype,"width",{get:function(){return this.dirty&&(this.updateText(),this.dirty=!1),this.scale.x*this.texture.frame.width},set:function(a){this.scale.x=a/this.texture.frame.width,this._width=a}}),Object.defineProperty(c.Text.prototype,"height",{get:function(){return this.dirty&&(this.updateText(),this.dirty=!1),this.scale.y*this.texture.frame.height},set:function(a){this.scale.y=a/this.texture.frame.height,this._height=a}}),c.Text.fontPropertiesCache={},c.Text.fontPropertiesCanvas=PIXI.CanvasPool.create(c.Text.fontPropertiesCanvas),c.Text.fontPropertiesContext=c.Text.fontPropertiesCanvas.getContext("2d"),c.BitmapText=function(a,b,d,e,f,g,h){b=b||0,d=d||0,e=e||"",f=f||"",g=g||32,h=h||"left",PIXI.DisplayObjectContainer.call(this),this.type=c.BITMAPTEXT,this.physicsType=c.SPRITE,this.textWidth=0,this.textHeight=0,this.anchor=new c.Point,this._prevAnchor=new c.Point,this._glyphs=[],this._maxWidth=0,this._text=f.toString()||"",this._data=a.cache.getBitmapFont(e),this._font=e,this._fontSize=g,this._align=h,this._tint=16777215,this.updateText(),this.dirty=!1,c.Component.Core.init.call(this,a,b,d,"",null)},c.BitmapText.prototype=Object.create(PIXI.DisplayObjectContainer.prototype),c.BitmapText.prototype.constructor=c.BitmapText,c.Component.Core.install.call(c.BitmapText.prototype,["Angle","AutoCull","Bounds","Destroy","FixedToCamera","InputEnabled","InWorld","LifeSpan","PhysicsBody","Reset"]),c.BitmapText.prototype.preUpdatePhysics=c.Component.PhysicsBody.preUpdate,c.BitmapText.prototype.preUpdateLifeSpan=c.Component.LifeSpan.preUpdate,c.BitmapText.prototype.preUpdateInWorld=c.Component.InWorld.preUpdate,c.BitmapText.prototype.preUpdateCore=c.Component.Core.preUpdate,c.BitmapText.prototype.preUpdate=function(){return this.preUpdatePhysics()&&this.preUpdateLifeSpan()&&this.preUpdateInWorld()?this.preUpdateCore():!1},c.BitmapText.prototype.postUpdate=function(){c.Component.PhysicsBody.postUpdate.call(this),c.Component.FixedToCamera.postUpdate.call(this),this.body&&this.body.type===c.Physics.ARCADE&&(this.textWidth!==this.body.sourceWidth||this.textHeight!==this.body.sourceHeight)&&this.body.setSize(this.textWidth,this.textHeight)},c.BitmapText.prototype.setText=function(a){this.text=a},c.BitmapText.prototype.scanLine=function(a,b,c){for(var d=0,e=0,f=-1,g=0,h=null,i=this._maxWidth>0?this._maxWidth:null,j=[],k=0;k=i&&f>-1)return{width:g||e,text:c.substr(0,k-(k-f)),end:l,chars:j};e+=(n.xAdvance+p)*b,j.push(d+(n.xOffset+p)*b),d+=(n.xAdvance+p)*b,h=m}return{width:e,text:c,end:l,chars:j}},c.BitmapText.prototype.cleanText=function(a,b){void 0===b&&(b="");var c=this._data.font;if(!c)return"";for(var d=/\r\n|\n\r|\n|\r/g,e=a.replace(d,"\n").split("\n"),f=0;fthis.textWidth&&(this.textWidth=f.width),e+=a.lineHeight*c,b=b.substr(f.text.length+1)}while(f.end===!1);this.textHeight=e;for(var g=0,h=0,i=this.textWidth*this.anchor.x,j=this.textHeight*this.anchor.y,k=0;k0&&(this._fontSize=a,this.updateText())}}),Object.defineProperty(c.BitmapText.prototype,"text",{get:function(){return this._text},set:function(a){a!==this._text&&(this._text=a.toString()||"",this.updateText())}}),Object.defineProperty(c.BitmapText.prototype,"maxWidth",{get:function(){return this._maxWidth},set:function(a){a!==this._maxWidth&&(this._maxWidth=a,this.updateText())}}),Object.defineProperty(c.BitmapText.prototype,"smoothed",{get:function(){return!this._data.base.scaleMode},set:function(a){a?this._data.base.scaleMode=0:this._data.base.scaleMode=1}}),c.RetroFont=function(a,b,d,e,f,g,h,i,j,k){if(!a.cache.checkImageKey(b))return!1;(void 0===g||null===g)&&(g=a.cache.getImage(b).width/d),this.characterWidth=d,this.characterHeight=e,this.characterSpacingX=h||0,this.characterSpacingY=i||0,this.characterPerRow=g,this.offsetX=j||0,this.offsetY=k||0,this.align="left",this.multiLine=!1,this.autoUpperCase=!0,this.customSpacingX=0,this.customSpacingY=0,this.fixedWidth=0,this.fontSet=a.cache.getImage(b),this._text="",this.grabData=[],this.frameData=new c.FrameData;for(var l=this.offsetX,m=this.offsetY,n=0,o=0;o?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~",c.RetroFont.TEXT_SET2=" !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ",c.RetroFont.TEXT_SET3="ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789 ",c.RetroFont.TEXT_SET4="ABCDEFGHIJKLMNOPQRSTUVWXYZ 0123456789",c.RetroFont.TEXT_SET5="ABCDEFGHIJKLMNOPQRSTUVWXYZ.,/() '!?-*:0123456789",c.RetroFont.TEXT_SET6="ABCDEFGHIJKLMNOPQRSTUVWXYZ!?:;0123456789\"(),-.' ",c.RetroFont.TEXT_SET7="AGMSY+:4BHNTZ!;5CIOU.?06DJPV,(17EKQW\")28FLRX-'39",c.RetroFont.TEXT_SET8="0123456789 .ABCDEFGHIJKLMNOPQRSTUVWXYZ",c.RetroFont.TEXT_SET9="ABCDEFGHIJKLMNOPQRSTUVWXYZ()-0123456789.:,'\"?!",c.RetroFont.TEXT_SET10="ABCDEFGHIJKLMNOPQRSTUVWXYZ",c.RetroFont.TEXT_SET11="ABCDEFGHIJKLMNOPQRSTUVWXYZ.,\"-+!?()':;0123456789",c.RetroFont.prototype.setFixedWidth=function(a,b){void 0===b&&(b="left"),this.fixedWidth=a,this.align=b},c.RetroFont.prototype.setText=function(a,b,c,d,e,f){this.multiLine=b||!1,this.customSpacingX=c||0,this.customSpacingY=d||0,this.align=e||"left",f?this.autoUpperCase=!1:this.autoUpperCase=!0,a.length>0&&(this.text=a)},c.RetroFont.prototype.buildRetroFontText=function(){var a=0,b=0;if(this.clear(),this.multiLine){var d=this._text.split("\n");this.fixedWidth>0?this.resize(this.fixedWidth,d.length*(this.characterHeight+this.customSpacingY)-this.customSpacingY,!0):this.resize(this.getLongestLine()*(this.characterWidth+this.customSpacingX),d.length*(this.characterHeight+this.customSpacingY)-this.customSpacingY,!0);for(var e=0;ea&&(a=0),this.pasteLine(d[e],a,b,this.customSpacingX),b+=this.characterHeight+this.customSpacingY}else this.fixedWidth>0?this.resize(this.fixedWidth,this.characterHeight,!0):this.resize(this._text.length*(this.characterWidth+this.customSpacingX),this.characterHeight,!0),a=0,this.align===c.RetroFont.ALIGN_RIGHT?a=this.width-this._text.length*(this.characterWidth+this.customSpacingX):this.align===c.RetroFont.ALIGN_CENTER&&(a=this.width/2-this._text.length*(this.characterWidth+this.customSpacingX)/2,a+=this.customSpacingX/2),0>a&&(a=0),this.pasteLine(this._text,a,0,this.customSpacingX);this.requiresReTint=!0},c.RetroFont.prototype.pasteLine=function(a,b,c,d){for(var e=0;e=0&&(this.stamp.frame=this.grabData[a.charCodeAt(e)],this.renderXY(this.stamp,b,c,!1),b+=this.characterWidth+d,b>this.width))break},c.RetroFont.prototype.getLongestLine=function(){var a=0;if(this._text.length>0)for(var b=this._text.split("\n"),c=0;ca&&(a=b[c].length);return a},c.RetroFont.prototype.removeUnsupportedCharacters=function(a){for(var b="",c=0;c=0||!a&&"\n"===d)&&(b=b.concat(d))}return b},c.RetroFont.prototype.updateOffset=function(a,b){if(this.offsetX!==a||this.offsetY!==b){for(var c=a-this.offsetX,d=b-this.offsetY,e=this.game.cache.getFrameData(this.stamp.key).getFrames(),f=e.length;f--;)e[f].x+=c,e[f].y+=d;this.buildRetroFontText()}},Object.defineProperty(c.RetroFont.prototype,"text",{get:function(){return this._text},set:function(a){var b;b=this.autoUpperCase?a.toUpperCase():a,b!==this._text&&(this._text=b,this.removeUnsupportedCharacters(this.multiLine),this.buildRetroFontText())}}),Object.defineProperty(c.RetroFont.prototype,"smoothed",{get:function(){return this.stamp.smoothed},set:function(a){this.stamp.smoothed=a,this.buildRetroFontText()}}),c.Rope=function(a,b,d,e,f,g){this.points=[],this.points=g,this._hasUpdateAnimation=!1,this._updateAnimationCallback=null,b=b||0,d=d||0,e=e||null,f=f||null,this.type=c.ROPE,PIXI.Rope.call(this,PIXI.TextureCache.__default,this.points),c.Component.Core.init.call(this,a,b,d,e,f)},c.Rope.prototype=Object.create(PIXI.Rope.prototype),c.Rope.prototype.constructor=c.Rope,c.Component.Core.install.call(c.Rope.prototype,["Angle","Animation","AutoCull","Bounds","BringToTop","Crop","Delta","Destroy","FixedToCamera","InWorld","LifeSpan","LoadTexture","Overlap","PhysicsBody","Reset","ScaleMinMax","Smoothed"]),c.Rope.prototype.preUpdatePhysics=c.Component.PhysicsBody.preUpdate,c.Rope.prototype.preUpdateLifeSpan=c.Component.LifeSpan.preUpdate,c.Rope.prototype.preUpdateInWorld=c.Component.InWorld.preUpdate,c.Rope.prototype.preUpdateCore=c.Component.Core.preUpdate,c.Rope.prototype.preUpdate=function(){return this.preUpdatePhysics()&&this.preUpdateLifeSpan()&&this.preUpdateInWorld()?this.preUpdateCore():!1},c.Rope.prototype.update=function(){this._hasUpdateAnimation&&this.updateAnimation.call(this)},c.Rope.prototype.reset=function(a,b){return c.Component.Reset.prototype.reset.call(this,a,b),this},Object.defineProperty(c.Rope.prototype,"updateAnimation",{get:function(){return this._updateAnimation},set:function(a){a&&"function"==typeof a?(this._hasUpdateAnimation=!0,this._updateAnimation=a):(this._hasUpdateAnimation=!1,this._updateAnimation=null)}}),Object.defineProperty(c.Rope.prototype,"segments",{get:function(){for(var a,b,d,e,f,g,h,i,j=[],k=0;k=1)&&(l.touch=!0),(window.navigator.msPointerEnabled||window.navigator.pointerEnabled)&&(l.mspointer=!0),l.cocoonJS||("onwheel"in window||l.ie&&"WheelEvent"in window?l.wheelEvent="wheel":"onmousewheel"in window?l.wheelEvent="mousewheel":l.firefox&&"MouseScrollEvent"in window&&(l.wheelEvent="DOMMouseScroll"))}function d(){for(var a=["requestFullscreen","requestFullScreen","webkitRequestFullscreen","webkitRequestFullScreen","msRequestFullscreen","msRequestFullScreen","mozRequestFullScreen","mozRequestFullscreen"],b=document.createElement("div"),c=0;c=9&&/Mac OS X (\d+)_(\d+)/.test(navigator.userAgent)){var c=parseInt(RegExp.$1,10),d=parseInt(RegExp.$2,10);(10===c&&d>=11||c>10)&&(l.dolby=!0)}}catch(e){}}function h(){l.pixelRatio=window.devicePixelRatio||1,l.iPhone=-1!=navigator.userAgent.toLowerCase().indexOf("iphone"),l.iPhone4=2==l.pixelRatio&&l.iPhone,l.iPad=-1!=navigator.userAgent.toLowerCase().indexOf("ipad"),"undefined"!=typeof Int8Array?l.typedArray=!0:l.typedArray=!1,"undefined"!=typeof ArrayBuffer&&"undefined"!=typeof Uint8Array&&"undefined"!=typeof Uint32Array&&(l.littleEndian=i(),l.LITTLE_ENDIAN=l.littleEndian),l.support32bit="undefined"!=typeof ArrayBuffer&&"undefined"!=typeof Uint8ClampedArray&&"undefined"!=typeof Int32Array&&null!==l.littleEndian&&j(),navigator.vibrate=navigator.vibrate||navigator.webkitVibrate||navigator.mozVibrate||navigator.msVibrate,navigator.vibrate&&(l.vibration=!0)}function i(){var a=new ArrayBuffer(4),b=new Uint8Array(a),c=new Uint32Array(a);return b[0]=161,b[1]=178,b[2]=195,b[3]=212,3569595041==c[0]?!0:2712847316==c[0]?!1:null}function j(){if(void 0===Uint8ClampedArray)return!1;var a=PIXI.CanvasPool.create(this,1,1),b=a.getContext("2d");if(!b)return!1;var c=b.createImageData(1,1);return PIXI.CanvasPool.remove(this),c.data instanceof Uint8ClampedArray}function k(){var a,b=document.createElement("p"),c={webkitTransform:"-webkit-transform",OTransform:"-o-transform",msTransform:"-ms-transform",MozTransform:"-moz-transform",transform:"transform"};document.body.insertBefore(b,null);for(var d in c)void 0!==b.style[d]&&(b.style[d]="translate3d(1px,1px,1px)",a=window.getComputedStyle(b).getPropertyValue(c[d]));document.body.removeChild(b),l.css3D=void 0!==a&&a.length>0&&"none"!==a}var l=this;a(),e(),g(),f(),k(),h(),b(),d(),c()},c.Device.canPlayAudio=function(a){return"mp3"===a&&this.mp3?!0:"ogg"===a&&(this.ogg||this.opus)?!0:"m4a"===a&&this.m4a?!0:"opus"===a&&this.opus?!0:"wav"===a&&this.wav?!0:"webm"===a&&this.webm?!0:"mp4"===a&&this.dolby?!0:!1},c.Device.canPlayVideo=function(a){return"webm"===a&&(this.webmVideo||this.vp9Video)?!0:"mp4"===a&&(this.mp4Video||this.h264Video)?!0:"ogg"!==a&&"ogv"!==a||!this.oggVideo?"mpeg"===a&&this.hlsVideo?!0:!1:!0},c.Device.isConsoleOpen=function(){return window.console&&window.console.firebug?!0:window.console&&(console.profile(),console.profileEnd(),console.clear&&console.clear(),console.profiles)?console.profiles.length>0:!1},c.Device.isAndroidStockBrowser=function(){var a=window.navigator.userAgent.match(/Android.*AppleWebKit\/([\d.]+)/);return a&&a[1]<537},c.Canvas={create:function(a,b,c,d,e){if(b=b||256,c=c||256,void 0===e)var f=PIXI.CanvasPool.create(a,b,c);else var f=document.createElement("canvas");return"string"==typeof d&&""!==d&&(f.id=d),f.width=b,f.height=c,f.style.display="block",f},setBackgroundColor:function(a,b){return b=b||"rgb(0,0,0)",a.style.backgroundColor=b,a},setTouchAction:function(a,b){return b=b||"none",a.style.msTouchAction=b,a.style["ms-touch-action"]=b,a.style["touch-action"]=b,a},setUserSelect:function(a,b){return b=b||"none",a.style["-webkit-touch-callout"]=b,a.style["-webkit-user-select"]=b,a.style["-khtml-user-select"]=b,a.style["-moz-user-select"]=b,a.style["-ms-user-select"]=b,a.style["user-select"]=b,a.style["-webkit-tap-highlight-color"]="rgba(0, 0, 0, 0)",a},addToDOM:function(a,b,c){var d;return void 0===c&&(c=!0),b&&("string"==typeof b?d=document.getElementById(b):"object"==typeof b&&1===b.nodeType&&(d=b)),d||(d=document.body),c&&d.style&&(d.style.overflow="hidden"),d.appendChild(a),a},removeFromDOM:function(a){a.parentNode&&a.parentNode.removeChild(a)},setTransform:function(a,b,c,d,e,f,g){return a.setTransform(d,f,g,e,b,c),a},setSmoothingEnabled:function(a,b){var d=c.Canvas.getSmoothingPrefix(a);return d&&(a[d]=b),a},getSmoothingPrefix:function(a){var b=["i","webkitI","msI","mozI","oI"];for(var c in b){var d=b[c]+"mageSmoothingEnabled";if(d in a)return d}return null},getSmoothingEnabled:function(a){var b=c.Canvas.getSmoothingPrefix(a);return b?a[b]:void 0},setImageRenderingCrisp:function(a){for(var b=["optimizeSpeed","crisp-edges","-moz-crisp-edges","-webkit-optimize-contrast","optimize-contrast","pixelated"],c=0;ca},fuzzyGreaterThan:function(a,b,c){return void 0===c&&(c=1e-4),a>b-c},fuzzyCeil:function(a,b){return void 0===b&&(b=1e-4),Math.ceil(a-b)},fuzzyFloor:function(a,b){return void 0===b&&(b=1e-4),Math.floor(a+b)},average:function(){for(var a=0,b=arguments.length,c=0;b>c;c++)a+=+arguments[c];return a/b},shear:function(a){return a%1},snapTo:function(a,b,c){return void 0===c&&(c=0),0===b?a:(a-=c,a=b*Math.round(a/b),c+a)},snapToFloor:function(a,b,c){return void 0===c&&(c=0),0===b?a:(a-=c,a=b*Math.floor(a/b),c+a)},snapToCeil:function(a,b,c){return void 0===c&&(c=0),0===b?a:(a-=c,a=b*Math.ceil(a/b),c+a)},roundTo:function(a,b,c){void 0===b&&(b=0),void 0===c&&(c=10);var d=Math.pow(c,-b);return Math.round(a*d)/d},floorTo:function(a,b,c){void 0===b&&(b=0),void 0===c&&(c=10);var d=Math.pow(c,-b);return Math.floor(a*d)/d},ceilTo:function(a,b,c){void 0===b&&(b=0),void 0===c&&(c=10);var d=Math.pow(c,-b);return Math.ceil(a*d)/d},angleBetween:function(a,b,c,d){return Math.atan2(d-b,c-a)},angleBetweenY:function(a,b,c,d){return Math.atan2(c-a,d-b)},angleBetweenPoints:function(a,b){return Math.atan2(b.y-a.y,b.x-a.x)},angleBetweenPointsY:function(a,b){return Math.atan2(b.x-a.x,b.y-a.y)},reverseAngle:function(a){return this.normalizeAngle(a+Math.PI,!0)},normalizeAngle:function(a){return a%=2*Math.PI,a>=0?a:a+2*Math.PI},maxAdd:function(a,b,c){return Math.min(a+b,c)},minSub:function(a,b,c){return Math.max(a-b,c)},wrap:function(a,b,c){var d=c-b;if(0>=d)return 0;var e=(a-b)%d;return 0>e&&(e+=d),e+b},wrapValue:function(a,b,c){var d;return a=Math.abs(a),b=Math.abs(b),c=Math.abs(c),d=(a+b)%c},isOdd:function(a){return!!(1&a)},isEven:function(a){return!(1&a)},min:function(){if(1===arguments.length&&"object"==typeof arguments[0])var a=arguments[0];else var a=arguments;for(var b=1,c=0,d=a.length;d>b;b++)a[b]b;b++)a[b]>a[c]&&(c=b);return a[c]},minProperty:function(a){if(2===arguments.length&&"object"==typeof arguments[1])var b=arguments[1];else var b=arguments.slice(1);for(var c=1,d=0,e=b.length;e>c;c++)b[c][a]c;c++)b[c][a]>b[d][a]&&(d=c);return b[d][a]},wrapAngle:function(a,b){return b?this.wrap(a,-Math.PI,Math.PI):this.wrap(a,-180,180)},linearInterpolation:function(a,b){var c=a.length-1,d=c*b,e=Math.floor(d);return 0>b?this.linear(a[0],a[1],d):b>1?this.linear(a[c],a[c-1],c-d):this.linear(a[e],a[e+1>c?c:e+1],d-e)},bezierInterpolation:function(a,b){for(var c=0,d=a.length-1,e=0;d>=e;e++)c+=Math.pow(1-b,d-e)*Math.pow(b,e)*a[e]*this.bernstein(d,e);return c},catmullRomInterpolation:function(a,b){var c=a.length-1,d=c*b,e=Math.floor(d);return a[0]===a[c]?(0>b&&(e=Math.floor(d=c*(1+b))),this.catmullRom(a[(e-1+c)%c],a[e],a[(e+1)%c],a[(e+2)%c],d-e)):0>b?a[0]-(this.catmullRom(a[0],a[0],a[1],a[1],-d)-a[0]):b>1?a[c]-(this.catmullRom(a[c],a[c],a[c-1],a[c-1],d-c)-a[c]):this.catmullRom(a[e?e-1:0],a[e],a[e+1>c?c:e+1],a[e+2>c?c:e+2],d-e)},linear:function(a,b,c){return(b-a)*c+a},bernstein:function(a,b){return this.factorial(a)/this.factorial(b)/this.factorial(a-b)},factorial:function(a){if(0===a)return 1;for(var b=a;--a;)b*=a;return b},catmullRom:function(a,b,c,d,e){var f=.5*(c-a),g=.5*(d-b),h=e*e,i=e*h;return(2*b-2*c+f+g)*i+(-3*b+3*c-2*f-g)*h+f*e+b},difference:function(a,b){return Math.abs(a-b)},roundAwayFromZero:function(a){return a>0?Math.ceil(a):Math.floor(a)},sinCosGenerator:function(a,b,c,d){void 0===b&&(b=1),void 0===c&&(c=1),void 0===d&&(d=1);for(var e=b,f=c,g=d*Math.PI/a,h=[],i=[],j=0;a>j;j++)f-=e*g,e+=f*g,h[j]=f,i[j]=e;return{sin:i,cos:h,length:a}},distance:function(a,b,c,d){var e=a-c,f=b-d;return Math.sqrt(e*e+f*f)},distanceSq:function(a,b,c,d){var e=a-c,f=b-d;return e*e+f*f},distancePow:function(a,b,c,d,e){return void 0===e&&(e=2),Math.sqrt(Math.pow(c-a,e)+Math.pow(d-b,e))},clamp:function(a,b,c){return b>a?b:a>c?c:a},clampBottom:function(a,b){return b>a?b:a},within:function(a,b,c){return Math.abs(a-b)<=c},mapLinear:function(a,b,c,d,e){return d+(a-b)*(e-d)/(c-b)},smoothstep:function(a,b,c){return a=Math.max(0,Math.min(1,(a-b)/(c-b))),a*a*(3-2*a)},smootherstep:function(a,b,c){return a=Math.max(0,Math.min(1,(a-b)/(c-b))),a*a*a*(a*(6*a-15)+10)},sign:function(a){return 0>a?-1:a>0?1:0},percent:function(a,b,c){return void 0===c&&(c=0),a>b||c>b?1:c>a||c>a?0:(a-c)/b}};var k=Math.PI/180,l=180/Math.PI;return c.Math.degToRad=function(a){return a*k},c.Math.radToDeg=function(a){return a*l},c.RandomDataGenerator=function(a){void 0===a&&(a=[]),this.c=1,this.s0=0,this.s1=0,this.s2=0,"string"==typeof a?this.state(a):this.sow(a)},c.RandomDataGenerator.prototype={rnd:function(){var a=2091639*this.s0+2.3283064365386963e-10*this.c;return this.c=0|a,this.s0=this.s1,this.s1=this.s2,this.s2=a-this.c,this.s2},sow:function(a){if(this.s0=this.hash(" "),this.s1=this.hash(this.s0),this.s2=this.hash(this.s1),this.c=1,a)for(var b=0;b>>0,b-=d,b*=d,d=b>>>0,b-=d,d+=4294967296*b;return 2.3283064365386963e-10*(d>>>0)},integer:function(){return 4294967296*this.rnd.apply(this)},frac:function(){return this.rnd.apply(this)+1.1102230246251565e-16*(2097152*this.rnd.apply(this)|0)},real:function(){return this.integer()+this.frac()},integerInRange:function(a,b){return Math.floor(this.realInRange(0,b-a+1)+a)},between:function(a,b){return this.integerInRange(a,b)},realInRange:function(a,b){return this.frac()*(b-a)+a},normal:function(){return 1-2*this.frac()},uuid:function(){var a="",b="";for(b=a="";a++<36;b+=~a%5|3*a&4?(15^a?8^this.frac()*(20^a?16:4):4).toString(16):"-");return b},pick:function(a){return a[this.integerInRange(0,a.length-1)]},sign:function(){return this.pick([-1,1])},weightedPick:function(a){return a[~~(Math.pow(this.frac(),2)*(a.length-1)+.5)]},timestamp:function(a,b){return this.realInRange(a||9466848e5,b||1577862e6)},angle:function(){return this.integerInRange(-180,180)},state:function(a){return"string"==typeof a&&a.match(/^!rnd/)&&(a=a.split(","),this.c=parseFloat(a[1]),this.s0=parseFloat(a[2]),this.s1=parseFloat(a[3]),this.s2=parseFloat(a[4])),["!rnd",this.c,this.s0,this.s1,this.s2].join(",")}},c.RandomDataGenerator.prototype.constructor=c.RandomDataGenerator,c.QuadTree=function(a,b,c,d,e,f,g){ -this.maxObjects=10,this.maxLevels=4,this.level=0,this.bounds={},this.objects=[],this.nodes=[],this._empty=[],this.reset(a,b,c,d,e,f,g)},c.QuadTree.prototype={reset:function(a,b,c,d,e,f,g){this.maxObjects=e||10,this.maxLevels=f||4,this.level=g||0,this.bounds={x:Math.round(a),y:Math.round(b),width:c,height:d,subWidth:Math.floor(c/2),subHeight:Math.floor(d/2),right:Math.round(a)+Math.floor(c/2),bottom:Math.round(b)+Math.floor(d/2)},this.objects.length=0,this.nodes.length=0},populate:function(a){a.forEach(this.populateHandler,this,!0)},populateHandler:function(a){a.body&&a.exists&&this.insert(a.body)},split:function(){this.nodes[0]=new c.QuadTree(this.bounds.right,this.bounds.y,this.bounds.subWidth,this.bounds.subHeight,this.maxObjects,this.maxLevels,this.level+1),this.nodes[1]=new c.QuadTree(this.bounds.x,this.bounds.y,this.bounds.subWidth,this.bounds.subHeight,this.maxObjects,this.maxLevels,this.level+1),this.nodes[2]=new c.QuadTree(this.bounds.x,this.bounds.bottom,this.bounds.subWidth,this.bounds.subHeight,this.maxObjects,this.maxLevels,this.level+1),this.nodes[3]=new c.QuadTree(this.bounds.right,this.bounds.bottom,this.bounds.subWidth,this.bounds.subHeight,this.maxObjects,this.maxLevels,this.level+1)},insert:function(a){var b,c=0;if(null!=this.nodes[0]&&(b=this.getIndex(a),-1!==b))return void this.nodes[b].insert(a);if(this.objects.push(a),this.objects.length>this.maxObjects&&this.levelthis.bounds.bottom&&(b=2):a.x>this.bounds.right&&(a.ythis.bounds.bottom&&(b=3)),b},retrieve:function(a){if(a instanceof c.Rectangle)var b=this.objects,d=this.getIndex(a);else{if(!a.body)return this._empty;var b=this.objects,d=this.getIndex(a.body)}return this.nodes[0]&&(-1!==d?b=b.concat(this.nodes[d].retrieve(a)):(b=b.concat(this.nodes[0].retrieve(a)),b=b.concat(this.nodes[1].retrieve(a)),b=b.concat(this.nodes[2].retrieve(a)),b=b.concat(this.nodes[3].retrieve(a)))),b},clear:function(){this.objects.length=0;for(var a=this.nodes.length;a--;)this.nodes[a].clear(),this.nodes.splice(a,1);this.nodes.length=0}},c.QuadTree.prototype.constructor=c.QuadTree,c.Net=function(a){this.game=a},c.Net.prototype={getHostName:function(){return window.location&&window.location.hostname?window.location.hostname:null},checkDomainName:function(a){return-1!==window.location.hostname.indexOf(a)},updateQueryString:function(a,b,c,d){void 0===c&&(c=!1),(void 0===d||""===d)&&(d=window.location.href);var e="",f=new RegExp("([?|&])"+a+"=.*?(&|#|$)(.*)","gi");if(f.test(d))e="undefined"!=typeof b&&null!==b?d.replace(f,"$1"+a+"="+b+"$2$3"):d.replace(f,"$1$3").replace(/(&|\?)$/,"");else if("undefined"!=typeof b&&null!==b){var g=-1!==d.indexOf("?")?"&":"?",h=d.split("#");d=h[0]+g+a+"="+b,h[1]&&(d+="#"+h[1]),e=d}else e=d;return c?void(window.location.href=e):e},getQueryString:function(a){void 0===a&&(a="");var b={},c=location.search.substring(1).split("&");for(var d in c){var e=c[d].split("=");if(e.length>1){if(a&&a==this.decodeURI(e[0]))return this.decodeURI(e[1]);b[this.decodeURI(e[0])]=this.decodeURI(e[1])}}return b},decodeURI:function(a){return decodeURIComponent(a.replace(/\+/g," "))}},c.Net.prototype.constructor=c.Net,c.TweenManager=function(a){this.game=a,this.frameBased=!1,this._tweens=[],this._add=[],this.easeMap={Power0:c.Easing.Power0,Power1:c.Easing.Power1,Power2:c.Easing.Power2,Power3:c.Easing.Power3,Power4:c.Easing.Power4,Linear:c.Easing.Linear.None,Quad:c.Easing.Quadratic.Out,Cubic:c.Easing.Cubic.Out,Quart:c.Easing.Quartic.Out,Quint:c.Easing.Quintic.Out,Sine:c.Easing.Sinusoidal.Out,Expo:c.Easing.Exponential.Out,Circ:c.Easing.Circular.Out,Elastic:c.Easing.Elastic.Out,Back:c.Easing.Back.Out,Bounce:c.Easing.Bounce.Out,"Quad.easeIn":c.Easing.Quadratic.In,"Cubic.easeIn":c.Easing.Cubic.In,"Quart.easeIn":c.Easing.Quartic.In,"Quint.easeIn":c.Easing.Quintic.In,"Sine.easeIn":c.Easing.Sinusoidal.In,"Expo.easeIn":c.Easing.Exponential.In,"Circ.easeIn":c.Easing.Circular.In,"Elastic.easeIn":c.Easing.Elastic.In,"Back.easeIn":c.Easing.Back.In,"Bounce.easeIn":c.Easing.Bounce.In,"Quad.easeOut":c.Easing.Quadratic.Out,"Cubic.easeOut":c.Easing.Cubic.Out,"Quart.easeOut":c.Easing.Quartic.Out,"Quint.easeOut":c.Easing.Quintic.Out,"Sine.easeOut":c.Easing.Sinusoidal.Out,"Expo.easeOut":c.Easing.Exponential.Out,"Circ.easeOut":c.Easing.Circular.Out,"Elastic.easeOut":c.Easing.Elastic.Out,"Back.easeOut":c.Easing.Back.Out,"Bounce.easeOut":c.Easing.Bounce.Out,"Quad.easeInOut":c.Easing.Quadratic.InOut,"Cubic.easeInOut":c.Easing.Cubic.InOut,"Quart.easeInOut":c.Easing.Quartic.InOut,"Quint.easeInOut":c.Easing.Quintic.InOut,"Sine.easeInOut":c.Easing.Sinusoidal.InOut,"Expo.easeInOut":c.Easing.Exponential.InOut,"Circ.easeInOut":c.Easing.Circular.InOut,"Elastic.easeInOut":c.Easing.Elastic.InOut,"Back.easeInOut":c.Easing.Back.InOut,"Bounce.easeInOut":c.Easing.Bounce.InOut},this.game.onPause.add(this._pauseAll,this),this.game.onResume.add(this._resumeAll,this)},c.TweenManager.prototype={getAll:function(){return this._tweens},removeAll:function(){for(var a=0;ad;d++)this.removeFrom(a[d]);else if(a.type===c.GROUP&&b)for(var d=0,e=a.children.length;e>d;d++)this.removeFrom(a.children[d]);else{for(d=0,e=this._tweens.length;e>d;d++)a===this._tweens[d].target&&this.remove(this._tweens[d]);for(d=0,e=this._add.length;e>d;d++)a===this._add[d].target&&this.remove(this._add[d])}},add:function(a){a._manager=this,this._add.push(a)},create:function(a){return new c.Tween(a,this.game,this)},remove:function(a){var b=this._tweens.indexOf(a);-1!==b?this._tweens[b].pendingDelete=!0:(b=this._add.indexOf(a),-1!==b&&(this._add[b].pendingDelete=!0))},update:function(){var a=this._add.length,b=this._tweens.length;if(0===b&&0===a)return!1;for(var c=0;b>c;)this._tweens[c].update(this.game.time.time)?c++:(this._tweens.splice(c,1),b--);return a>0&&(this._tweens=this._tweens.concat(this._add),this._add.length=0),!0},isTweening:function(a){return this._tweens.some(function(b){return b.target===a})},_pauseAll:function(){for(var a=this._tweens.length-1;a>=0;a--)this._tweens[a]._pause()},_resumeAll:function(){for(var a=this._tweens.length-1;a>=0;a--)this._tweens[a]._resume()},pauseAll:function(){for(var a=this._tweens.length-1;a>=0;a--)this._tweens[a].pause()},resumeAll:function(){for(var a=this._tweens.length-1;a>=0;a--)this._tweens[a].resume(!0)}},c.TweenManager.prototype.constructor=c.TweenManager,c.Tween=function(a,b,d){this.game=b,this.target=a,this.manager=d,this.timeline=[],this.reverse=!1,this.timeScale=1,this.repeatCounter=0,this.pendingDelete=!1,this.onStart=new c.Signal,this.onLoop=new c.Signal,this.onRepeat=new c.Signal,this.onChildComplete=new c.Signal,this.onComplete=new c.Signal,this.isRunning=!1,this.current=0,this.properties={},this.chainedTween=null,this.isPaused=!1,this.frameBased=d.frameBased,this._onUpdateCallback=null,this._onUpdateCallbackContext=null,this._pausedTime=0,this._codePaused=!1,this._hasStarted=!1},c.Tween.prototype={to:function(a,b,d,e,f,g,h){return(void 0===b||0>=b)&&(b=1e3),(void 0===d||null===d)&&(d=c.Easing.Default),void 0===e&&(e=!1),void 0===f&&(f=0),void 0===g&&(g=0),void 0===h&&(h=!1),"string"==typeof d&&this.manager.easeMap[d]&&(d=this.manager.easeMap[d]),this.isRunning?(console.warn("Phaser.Tween.to cannot be called after Tween.start"),this):(this.timeline.push(new c.TweenData(this).to(a,b,d,f,g,h)),e&&this.start(),this)},from:function(a,b,d,e,f,g,h){return void 0===b&&(b=1e3),(void 0===d||null===d)&&(d=c.Easing.Default),void 0===e&&(e=!1),void 0===f&&(f=0),void 0===g&&(g=0),void 0===h&&(h=!1),"string"==typeof d&&this.manager.easeMap[d]&&(d=this.manager.easeMap[d]),this.isRunning?(console.warn("Phaser.Tween.from cannot be called after Tween.start"),this):(this.timeline.push(new c.TweenData(this).from(a,b,d,f,g,h)),e&&this.start(),this)},start:function(a){if(void 0===a&&(a=0),null===this.game||null===this.target||0===this.timeline.length||this.isRunning)return this;for(var b=0;ba||a>this.timeline.length-1)&&(a=0),this.current=a,this.timeline[this.current].start(),this},stop:function(a){return void 0===a&&(a=!1),this.isRunning=!1,this._onUpdateCallback=null,this._onUpdateCallbackContext=null,a&&(this.onComplete.dispatch(this.target,this),this._hasStarted=!1,this.chainedTween&&this.chainedTween.start()),this.manager.remove(this),this},updateTweenData:function(a,b,c){if(0===this.timeline.length)return this;if(void 0===c&&(c=0),-1===c)for(var d=0;d0?arguments[a-1].chainedTween=arguments[a]:this.chainedTween=arguments[a];return this},loop:function(a){return void 0===a&&(a=!0),this.repeatCounter=a?-1:0,this},onUpdateCallback:function(a,b){return this._onUpdateCallback=a,this._onUpdateCallbackContext=b,this},pause:function(){this.isPaused=!0,this._codePaused=!0,this._pausedTime=this.game.time.time},_pause:function(){this._codePaused||(this.isPaused=!0,this._pausedTime=this.game.time.time)},resume:function(){if(this.isPaused){this.isPaused=!1,this._codePaused=!1;for(var a=0;a0?(this.repeatCounter--,this.timeline[this.current].start(),this.onRepeat.dispatch(this.target,this),!0):(this.isRunning=!1,this.onComplete.dispatch(this.target,this),this._hasStarted=!1,this.chainedTween&&this.chainedTween.start(),!1):(this.onChildComplete.dispatch(this.target,this),this.timeline[this.current].start(),!0)}},generateData:function(a,b){if(null===this.game||null===this.target)return null;void 0===a&&(a=60),void 0===b&&(b=[]);for(var c=0;c0?this.isRunning=!1:this.isRunning=!0,this.isFrom)for(var a in this.vStartCache)this.vStart[a]=this.vEndCache[a],this.vEnd[a]=this.vStartCache[a],this.parent.target[a]=this.vStart[a];return this.value=0,this.yoyoCounter=0,this.repeatCounter=this.repeatTotal,this},loadValues:function(){for(var a in this.parent.properties){if(this.vStart[a]=this.parent.properties[a],Array.isArray(this.vEnd[a])){if(0===this.vEnd[a].length)continue;0===this.percent&&(this.vEnd[a]=[this.vStart[a]].concat(this.vEnd[a]))}"undefined"!=typeof this.vEnd[a]?("string"==typeof this.vEnd[a]&&(this.vEnd[a]=this.vStart[a]+parseFloat(this.vEnd[a],10)),this.parent.properties[a]=this.vEnd[a]):this.vEnd[a]=this.vStart[a],this.vStartCache[a]=this.vStart[a],this.vEndCache[a]=this.vEnd[a]}return this},update:function(a){if(this.isRunning){if(a=this.startTime))return c.TweenData.PENDING;this.isRunning=!0}var b=this.parent.frameBased?this.game.time.physicsElapsedMS:this.game.time.elapsedMS;this.parent.reverse?(this.dt-=b*this.parent.timeScale,this.dt=Math.max(this.dt,0)):(this.dt+=b*this.parent.timeScale,this.dt=Math.min(this.dt,this.duration)),this.percent=this.dt/this.duration,this.value=this.easingFunction(this.percent);for(var d in this.vEnd){var e=this.vStart[d],f=this.vEnd[d];Array.isArray(f)?this.parent.target[d]=this.interpolationFunction.call(this.interpolationContext,f,this.value):this.parent.target[d]=e+(f-e)*this.value}return!this.parent.reverse&&1===this.percent||this.parent.reverse&&0===this.percent?this.repeat():c.TweenData.RUNNING},generateData:function(a){this.parent.reverse?this.dt=this.duration:this.dt=0;var b=[],c=!1,d=1/a*1e3;do{this.parent.reverse?(this.dt-=d,this.dt=Math.max(this.dt,0)):(this.dt+=d,this.dt=Math.min(this.dt,this.duration)),this.percent=this.dt/this.duration,this.value=this.easingFunction(this.percent);var e={};for(var f in this.vEnd){var g=this.vStart[f],h=this.vEnd[f];Array.isArray(h)?e[f]=this.interpolationFunction(h,this.value):e[f]=g+(h-g)*this.value}b.push(e),(!this.parent.reverse&&1===this.percent||this.parent.reverse&&0===this.percent)&&(c=!0)}while(!c);if(this.yoyo){var i=b.slice();i.reverse(),b=b.concat(i)}return b},repeat:function(){if(this.yoyo){if(this.inReverse&&0===this.repeatCounter){for(var a in this.vStartCache)this.vStart[a]=this.vStartCache[a],this.vEnd[a]=this.vEndCache[a];return this.inReverse=!1,c.TweenData.COMPLETE}this.inReverse=!this.inReverse}else if(0===this.repeatCounter)return c.TweenData.COMPLETE;if(this.inReverse)for(var a in this.vStartCache)this.vStart[a]=this.vEndCache[a],this.vEnd[a]=this.vStartCache[a];else{for(var a in this.vStartCache)this.vStart[a]=this.vStartCache[a],this.vEnd[a]=this.vEndCache[a];this.repeatCounter>0&&this.repeatCounter--}return this.startTime=this.game.time.time,this.yoyo&&this.inReverse?this.startTime+=this.yoyoDelay:this.inReverse||(this.startTime+=this.repeatDelay),this.parent.reverse?this.dt=this.duration:this.dt=0,c.TweenData.LOOPED}},c.TweenData.prototype.constructor=c.TweenData,c.Easing={Linear:{None:function(a){return a}},Quadratic:{In:function(a){return a*a},Out:function(a){return a*(2-a)},InOut:function(a){return(a*=2)<1?.5*a*a:-.5*(--a*(a-2)-1)}},Cubic:{In:function(a){return a*a*a},Out:function(a){return--a*a*a+1},InOut:function(a){return(a*=2)<1?.5*a*a*a:.5*((a-=2)*a*a+2)}},Quartic:{In:function(a){return a*a*a*a},Out:function(a){return 1- --a*a*a*a},InOut:function(a){return(a*=2)<1?.5*a*a*a*a:-.5*((a-=2)*a*a*a-2)}},Quintic:{In:function(a){return a*a*a*a*a},Out:function(a){return--a*a*a*a*a+1},InOut:function(a){return(a*=2)<1?.5*a*a*a*a*a:.5*((a-=2)*a*a*a*a+2)}},Sinusoidal:{In:function(a){return 0===a?0:1===a?1:1-Math.cos(a*Math.PI/2)},Out:function(a){return 0===a?0:1===a?1:Math.sin(a*Math.PI/2)},InOut:function(a){return 0===a?0:1===a?1:.5*(1-Math.cos(Math.PI*a))}},Exponential:{In:function(a){return 0===a?0:Math.pow(1024,a-1)},Out:function(a){return 1===a?1:1-Math.pow(2,-10*a)},InOut:function(a){return 0===a?0:1===a?1:(a*=2)<1?.5*Math.pow(1024,a-1):.5*(-Math.pow(2,-10*(a-1))+2)}},Circular:{In:function(a){return 1-Math.sqrt(1-a*a)},Out:function(a){return Math.sqrt(1- --a*a)},InOut:function(a){return(a*=2)<1?-.5*(Math.sqrt(1-a*a)-1):.5*(Math.sqrt(1-(a-=2)*a)+1)}},Elastic:{In:function(a){var b,c=.1,d=.4;return 0===a?0:1===a?1:(!c||1>c?(c=1,b=d/4):b=d*Math.asin(1/c)/(2*Math.PI),-(c*Math.pow(2,10*(a-=1))*Math.sin((a-b)*(2*Math.PI)/d)))},Out:function(a){var b,c=.1,d=.4;return 0===a?0:1===a?1:(!c||1>c?(c=1,b=d/4):b=d*Math.asin(1/c)/(2*Math.PI),c*Math.pow(2,-10*a)*Math.sin((a-b)*(2*Math.PI)/d)+1)},InOut:function(a){var b,c=.1,d=.4;return 0===a?0:1===a?1:(!c||1>c?(c=1,b=d/4):b=d*Math.asin(1/c)/(2*Math.PI),(a*=2)<1?-.5*(c*Math.pow(2,10*(a-=1))*Math.sin((a-b)*(2*Math.PI)/d)):c*Math.pow(2,-10*(a-=1))*Math.sin((a-b)*(2*Math.PI)/d)*.5+1)}},Back:{In:function(a){var b=1.70158;return a*a*((b+1)*a-b)},Out:function(a){var b=1.70158;return--a*a*((b+1)*a+b)+1},InOut:function(a){var b=2.5949095;return(a*=2)<1?.5*(a*a*((b+1)*a-b)):.5*((a-=2)*a*((b+1)*a+b)+2)}},Bounce:{In:function(a){return 1-c.Easing.Bounce.Out(1-a)},Out:function(a){return 1/2.75>a?7.5625*a*a:2/2.75>a?7.5625*(a-=1.5/2.75)*a+.75:2.5/2.75>a?7.5625*(a-=2.25/2.75)*a+.9375:7.5625*(a-=2.625/2.75)*a+.984375},InOut:function(a){return.5>a?.5*c.Easing.Bounce.In(2*a):.5*c.Easing.Bounce.Out(2*a-1)+.5}}},c.Easing.Default=c.Easing.Linear.None,c.Easing.Power0=c.Easing.Linear.None,c.Easing.Power1=c.Easing.Quadratic.Out,c.Easing.Power2=c.Easing.Cubic.Out,c.Easing.Power3=c.Easing.Quartic.Out,c.Easing.Power4=c.Easing.Quintic.Out,c.Time=function(a){this.game=a,this.time=0,this.prevTime=0,this.now=0,this.elapsed=0,this.elapsedMS=0,this.physicsElapsed=1/60,this.physicsElapsedMS=1/60*1e3,this.desiredFpsMult=1/60,this._desiredFps=60,this.suggestedFps=this.desiredFps,this.slowMotion=1,this.advancedTiming=!1,this.frames=0,this.fps=0,this.fpsMin=1e3,this.fpsMax=0,this.msMin=1e3,this.msMax=0,this.pauseDuration=0,this.timeToCall=0,this.timeExpected=0,this.events=new c.Timer(this.game,!1),this._frameCount=0,this._elapsedAccumulator=0,this._started=0,this._timeLastSecond=0,this._pauseStarted=0,this._justResumed=!1,this._timers=[]},c.Time.prototype={boot:function(){this._started=Date.now(),this.time=Date.now(),this.events.start(),this.timeExpected=this.time},add:function(a){return this._timers.push(a),a},create:function(a){void 0===a&&(a=!0);var b=new c.Timer(this.game,a);return this._timers.push(b),b},removeAll:function(){for(var a=0;aa;)this._timers[a].update(this.time)?a++:(this._timers.splice(a,1),b--)},updateAdvancedTiming:function(){this._frameCount++,this._elapsedAccumulator+=this.elapsed,this._frameCount>=2*this._desiredFps&&(this.suggestedFps=5*Math.floor(200/(this._elapsedAccumulator/this._frameCount)),this._frameCount=0,this._elapsedAccumulator=0),this.msMin=Math.min(this.msMin,this.elapsed),this.msMax=Math.max(this.msMax,this.elapsed),this.frames++,this.now>this._timeLastSecond+1e3&&(this.fps=Math.round(1e3*this.frames/(this.now-this._timeLastSecond)),this.fpsMin=Math.min(this.fpsMin,this.fps),this.fpsMax=Math.max(this.fpsMax,this.fps),this._timeLastSecond=this.now,this.frames=0)},gamePaused:function(){this._pauseStarted=Date.now(),this.events.pause();for(var a=this._timers.length;a--;)this._timers[a]._pause()},gameResumed:function(){this.time=Date.now(),this.pauseDuration=this.time-this._pauseStarted,this.events.resume();for(var a=this._timers.length;a--;)this._timers[a]._resume()},totalElapsedSeconds:function(){return.001*(this.time-this._started)},elapsedSince:function(a){return this.time-a},elapsedSecondsSince:function(a){return.001*(this.time-a)},reset:function(){this._started=this.time,this.removeAll()}},Object.defineProperty(c.Time.prototype,"desiredFps",{get:function(){return this._desiredFps},set:function(a){this._desiredFps=a,this.physicsElapsed=1/a,this.physicsElapsedMS=1e3*this.physicsElapsed,this.desiredFpsMult=1/a}}),c.Time.prototype.constructor=c.Time,c.Timer=function(a,b){void 0===b&&(b=!0),this.game=a,this.running=!1,this.autoDestroy=b,this.expired=!1,this.elapsed=0,this.events=[],this.onComplete=new c.Signal,this.nextTick=0,this.timeCap=1e3,this.paused=!1,this._codePaused=!1,this._started=0,this._pauseStarted=0,this._pauseTotal=0,this._now=Date.now(),this._len=0,this._marked=0,this._i=0,this._diff=0,this._newTick=0},c.Timer.MINUTE=6e4,c.Timer.SECOND=1e3,c.Timer.HALF=500,c.Timer.QUARTER=250,c.Timer.prototype={create:function(a,b,d,e,f,g){a=Math.round(a);var h=a;h+=0===this._now?this.game.time.time:this._now;var i=new c.TimerEvent(this,a,h,d,b,e,f,g);return this.events.push(i),this.order(),this.expired=!1,i},add:function(a,b,c){return this.create(a,!1,0,b,c,Array.prototype.slice.call(arguments,3))},repeat:function(a,b,c,d){return this.create(a,!1,b,c,d,Array.prototype.slice.call(arguments,4))},loop:function(a,b,c){return this.create(a,!0,0,b,c,Array.prototype.slice.call(arguments,3))},start:function(a){if(!this.running){this._started=this.game.time.time+(a||0),this.running=!0;for(var b=0;b0&&(this.events.sort(this.sortHandler),this.nextTick=this.events[0].tick)},sortHandler:function(a,b){return a.tickb.tick?1:0},clearPendingEvents:function(){for(this._i=this.events.length;this._i--;)this.events[this._i].pendingDelete&&this.events.splice(this._i,1);this._len=this.events.length,this._i=0},update:function(a){if(this.paused)return!0;if(this.elapsed=a-this._now,this._now=a,this.elapsed>this.timeCap&&this.adjustEvents(a-this.elapsed),this._marked=0,this.clearPendingEvents(),this.running&&this._now>=this.nextTick&&this._len>0){for(;this._i=this.events[this._i].tick&&!this.events[this._i].pendingDelete;)this._newTick=this._now+this.events[this._i].delay-(this._now-this.events[this._i].tick),this._newTick<0&&(this._newTick=this._now+this.events[this._i].delay),this.events[this._i].loop===!0?(this.events[this._i].tick=this._newTick,this.events[this._i].callback.apply(this.events[this._i].callbackContext,this.events[this._i].args)):this.events[this._i].repeatCount>0?(this.events[this._i].repeatCount--,this.events[this._i].tick=this._newTick,this.events[this._i].callback.apply(this.events[this._i].callbackContext,this.events[this._i].args)):(this._marked++,this.events[this._i].pendingDelete=!0,this.events[this._i].callback.apply(this.events[this._i].callbackContext,this.events[this._i].args)),this._i++;this.events.length>this._marked?this.order():(this.expired=!0,this.onComplete.dispatch(this))}return this.expired&&this.autoDestroy?!1:!0},pause:function(){this.running&&(this._codePaused=!0,this.paused||(this._pauseStarted=this.game.time.time,this.paused=!0))},_pause:function(){!this.paused&&this.running&&(this._pauseStarted=this.game.time.time,this.paused=!0)},adjustEvents:function(a){for(var b=0;bc&&(c=0),this.events[b].tick=this._now+c}var d=this.nextTick-a;0>d?this.nextTick=this._now:this.nextTick=this._now+d},resume:function(){if(this.paused){var a=this.game.time.time;this._pauseTotal+=a-this._now,this._now=a,this.adjustEvents(this._pauseStarted),this.paused=!1,this._codePaused=!1}},_resume:function(){this._codePaused||this.resume()},removeAll:function(){this.onComplete.removeAll(),this.events.length=0,this._len=0,this._i=0},destroy:function(){this.onComplete.removeAll(),this.running=!1,this.events=[],this._len=0,this._i=0}},Object.defineProperty(c.Timer.prototype,"next",{get:function(){return this.nextTick}}),Object.defineProperty(c.Timer.prototype,"duration",{get:function(){return this.running&&this.nextTick>this._now?this.nextTick-this._now:0}}),Object.defineProperty(c.Timer.prototype,"length",{get:function(){return this.events.length}}),Object.defineProperty(c.Timer.prototype,"ms",{get:function(){return this.running?this._now-this._started-this._pauseTotal:0}}),Object.defineProperty(c.Timer.prototype,"seconds",{get:function(){return this.running?.001*this.ms:0}}),c.Timer.prototype.constructor=c.Timer,c.TimerEvent=function(a,b,c,d,e,f,g,h){this.timer=a,this.delay=b,this.tick=c,this.repeatCount=d-1,this.loop=e,this.callback=f,this.callbackContext=g,this.args=h,this.pendingDelete=!1},c.TimerEvent.prototype.constructor=c.TimerEvent,c.AnimationManager=function(a){this.sprite=a,this.game=a.game,this.currentFrame=null,this.currentAnim=null,this.updateIfVisible=!0,this.isLoaded=!1,this._frameData=null,this._anims={},this._outputFrames=[]},c.AnimationManager.prototype={loadFrameData:function(a,b){if(void 0===a)return!1;if(this.isLoaded)for(var c in this._anims)this._anims[c].updateFrameData(a);return this._frameData=a,void 0===b||null===b?this.frame=0:"string"==typeof b?this.frameName=b:this.frame=b,this.isLoaded=!0,!0},copyFrameData:function(a,b){if(this._frameData=a.clone(),this.isLoaded)for(var c in this._anims)this._anims[c].updateFrameData(this._frameData);return void 0===b||null===b?this.frame=0:"string"==typeof b?this.frameName=b:this.frame=b,this.isLoaded=!0,!0},add:function(a,b,d,e,f){return b=b||[],d=d||60,void 0===e&&(e=!1),void 0===f&&(f=b&&"number"==typeof b[0]?!0:!1),this._outputFrames=[],this._frameData.getFrameIndexes(b,f,this._outputFrames),this._anims[a]=new c.Animation(this.game,this.sprite,a,this._frameData,this._outputFrames,d,e),this.currentAnim=this._anims[a],this.sprite.tilingTexture&&(this.sprite.refreshTexture=!0),this._anims[a]},validateFrames:function(a,b){void 0===b&&(b=!0);for(var c=0;cthis._frameData.total)return!1}else if(this._frameData.checkFrameName(a[c])===!1)return!1;return!0},play:function(a,b,c,d){return this._anims[a]?this.currentAnim===this._anims[a]?this.currentAnim.isPlaying===!1?(this.currentAnim.paused=!1,this.currentAnim.play(b,c,d)):this.currentAnim:(this.currentAnim&&this.currentAnim.isPlaying&&this.currentAnim.stop(),this.currentAnim=this._anims[a],this.currentAnim.paused=!1,this.currentFrame=this.currentAnim.currentFrame,this.currentAnim.play(b,c,d)):void 0},stop:function(a,b){void 0===b&&(b=!1),!this.currentAnim||"string"==typeof a&&a!==this.currentAnim.name||this.currentAnim.stop(b)},update:function(){return this.updateIfVisible&&!this.sprite.visible?!1:this.currentAnim&&this.currentAnim.update()?(this.currentFrame=this.currentAnim.currentFrame,!0):!1},next:function(a){this.currentAnim&&(this.currentAnim.next(a),this.currentFrame=this.currentAnim.currentFrame)},previous:function(a){this.currentAnim&&(this.currentAnim.previous(a),this.currentFrame=this.currentAnim.currentFrame)},getAnimation:function(a){return"string"==typeof a&&this._anims[a]?this._anims[a]:null},refreshFrame:function(){this.sprite.setTexture(PIXI.TextureCache[this.currentFrame.uuid])},destroy:function(){var a=null;for(var a in this._anims)this._anims.hasOwnProperty(a)&&this._anims[a].destroy();this._anims={},this._outputFrames=[],this._frameData=null,this.currentAnim=null,this.currentFrame=null,this.sprite=null,this.game=null}},c.AnimationManager.prototype.constructor=c.AnimationManager,Object.defineProperty(c.AnimationManager.prototype,"frameData",{get:function(){return this._frameData}}),Object.defineProperty(c.AnimationManager.prototype,"frameTotal",{get:function(){return this._frameData.total}}),Object.defineProperty(c.AnimationManager.prototype,"paused",{get:function(){return this.currentAnim.isPaused},set:function(a){this.currentAnim.paused=a}}),Object.defineProperty(c.AnimationManager.prototype,"name",{get:function(){return this.currentAnim?this.currentAnim.name:void 0}}),Object.defineProperty(c.AnimationManager.prototype,"frame",{get:function(){return this.currentFrame?this.currentFrame.index:void 0},set:function(a){"number"==typeof a&&this._frameData&&null!==this._frameData.getFrame(a)&&(this.currentFrame=this._frameData.getFrame(a),this.currentFrame&&this.sprite.setFrame(this.currentFrame))}}),Object.defineProperty(c.AnimationManager.prototype,"frameName",{get:function(){return this.currentFrame?this.currentFrame.name:void 0},set:function(a){"string"==typeof a&&this._frameData&&null!==this._frameData.getFrameByName(a)?(this.currentFrame=this._frameData.getFrameByName(a),this.currentFrame&&(this._frameIndex=this.currentFrame.index,this.sprite.setFrame(this.currentFrame))):console.warn("Cannot set frameName: "+a)}}),c.Animation=function(a,b,d,e,f,g,h){void 0===h&&(h=!1),this.game=a,this._parent=b,this._frameData=e,this.name=d,this._frames=[],this._frames=this._frames.concat(f),this.delay=1e3/g,this.loop=h,this.loopCount=0,this.killOnComplete=!1,this.isFinished=!1,this.isPlaying=!1,this.isPaused=!1,this._pauseStartTime=0,this._frameIndex=0,this._frameDiff=0,this._frameSkip=1,this.currentFrame=this._frameData.getFrame(this._frames[this._frameIndex]),this.onStart=new c.Signal,this.onUpdate=null,this.onComplete=new c.Signal,this.onLoop=new c.Signal,this.isReversed=!1,this.game.onPause.add(this.onPause,this),this.game.onResume.add(this.onResume,this)},c.Animation.prototype={play:function(a,b,c){return"number"==typeof a&&(this.delay=1e3/a),"boolean"==typeof b&&(this.loop=b),"undefined"!=typeof c&&(this.killOnComplete=c),this.isPlaying=!0,this.isFinished=!1,this.paused=!1,this.loopCount=0,this._timeLastFrame=this.game.time.time,this._timeNextFrame=this.game.time.time+this.delay, -this._frameIndex=this.isReversed?this._frames.length-1:0,this.updateCurrentFrame(!1,!0),this._parent.events.onAnimationStart$dispatch(this._parent,this),this.onStart.dispatch(this._parent,this),this._parent.animations.currentAnim=this,this._parent.animations.currentFrame=this.currentFrame,this},restart:function(){this.isPlaying=!0,this.isFinished=!1,this.paused=!1,this.loopCount=0,this._timeLastFrame=this.game.time.time,this._timeNextFrame=this.game.time.time+this.delay,this._frameIndex=0,this.currentFrame=this._frameData.getFrame(this._frames[this._frameIndex]),this._parent.setFrame(this.currentFrame),this._parent.animations.currentAnim=this,this._parent.animations.currentFrame=this.currentFrame,this.onStart.dispatch(this._parent,this)},reverse:function(){return this.reversed=!this.reversed,this},reverseOnce:function(){return this.onComplete.addOnce(this.reverse.bind(this)),this.reverse()},setFrame:function(a,b){var c;if(void 0===b&&(b=!1),"string"==typeof a)for(var d=0;d=this._timeNextFrame?(this._frameSkip=1,this._frameDiff=this.game.time.time-this._timeNextFrame,this._timeLastFrame=this.game.time.time,this._frameDiff>this.delay&&(this._frameSkip=Math.floor(this._frameDiff/this.delay),this._frameDiff-=this._frameSkip*this.delay),this._timeNextFrame=this.game.time.time+(this.delay-this._frameDiff),this.isReversed?this._frameIndex-=this._frameSkip:this._frameIndex+=this._frameSkip,!this.isReversed&&this._frameIndex>=this._frames.length||this.isReversed&&this._frameIndex<=-1?this.loop?(this._frameIndex=Math.abs(this._frameIndex)%this._frames.length,this.isReversed&&(this._frameIndex=this._frames.length-1-this._frameIndex),this.currentFrame=this._frameData.getFrame(this._frames[this._frameIndex]),this.currentFrame&&this._parent.setFrame(this.currentFrame),this.loopCount++,this._parent.events.onAnimationLoop$dispatch(this._parent,this),this.onLoop.dispatch(this._parent,this),this.onUpdate?(this.onUpdate.dispatch(this,this.currentFrame),!!this._frameData):!0):(this.complete(),!1):this.updateCurrentFrame(!0)):!1},updateCurrentFrame:function(a,b){if(void 0===b&&(b=!1),!this._frameData)return!1;var c=this.currentFrame.index;return this.currentFrame=this._frameData.getFrame(this._frames[this._frameIndex]),this.currentFrame&&(b||!b&&c!==this.currentFrame.index)&&this._parent.setFrame(this.currentFrame),this.onUpdate&&a?(this.onUpdate.dispatch(this,this.currentFrame),!!this._frameData):!0},next:function(a){void 0===a&&(a=1);var b=this._frameIndex+a;b>=this._frames.length&&(this.loop?b%=this._frames.length:b=this._frames.length-1),b!==this._frameIndex&&(this._frameIndex=b,this.updateCurrentFrame(!0))},previous:function(a){void 0===a&&(a=1);var b=this._frameIndex-a;0>b&&(this.loop?b=this._frames.length+b:b++),b!==this._frameIndex&&(this._frameIndex=b,this.updateCurrentFrame(!0))},updateFrameData:function(a){this._frameData=a,this.currentFrame=this._frameData?this._frameData.getFrame(this._frames[this._frameIndex%this._frames.length]):null},destroy:function(){this._frameData&&(this.game.onPause.remove(this.onPause,this),this.game.onResume.remove(this.onResume,this),this.game=null,this._parent=null,this._frames=null,this._frameData=null,this.currentFrame=null,this.isPlaying=!1,this.onStart.dispose(),this.onLoop.dispose(),this.onComplete.dispose(),this.onUpdate&&this.onUpdate.dispose())},complete:function(){this._frameIndex=this._frames.length-1,this.currentFrame=this._frameData.getFrame(this._frames[this._frameIndex]),this.isPlaying=!1,this.isFinished=!0,this.paused=!1,this._parent.events.onAnimationComplete$dispatch(this._parent,this),this.onComplete.dispatch(this._parent,this),this.killOnComplete&&this._parent.kill()}},c.Animation.prototype.constructor=c.Animation,Object.defineProperty(c.Animation.prototype,"paused",{get:function(){return this.isPaused},set:function(a){this.isPaused=a,a?this._pauseStartTime=this.game.time.time:this.isPlaying&&(this._timeNextFrame=this.game.time.time+this.delay)}}),Object.defineProperty(c.Animation.prototype,"reversed",{get:function(){return this.isReversed},set:function(a){this.isReversed=a}}),Object.defineProperty(c.Animation.prototype,"frameTotal",{get:function(){return this._frames.length}}),Object.defineProperty(c.Animation.prototype,"frame",{get:function(){return null!==this.currentFrame?this.currentFrame.index:this._frameIndex},set:function(a){this.currentFrame=this._frameData.getFrame(this._frames[a]),null!==this.currentFrame&&(this._frameIndex=a,this._parent.setFrame(this.currentFrame),this.onUpdate&&this.onUpdate.dispatch(this,this.currentFrame))}}),Object.defineProperty(c.Animation.prototype,"speed",{get:function(){return Math.round(1e3/this.delay)},set:function(a){a>=1&&(this.delay=1e3/a)}}),Object.defineProperty(c.Animation.prototype,"enableUpdate",{get:function(){return null!==this.onUpdate},set:function(a){a&&null===this.onUpdate?this.onUpdate=new c.Signal:a||null===this.onUpdate||(this.onUpdate.dispose(),this.onUpdate=null)}}),c.Animation.generateFrameNames=function(a,b,d,e,f){void 0===e&&(e="");var g=[],h="";if(d>b)for(var i=b;d>=i;i++)h="number"==typeof f?c.Utils.pad(i.toString(),f,"0",1):i.toString(),h=a+h+e,g.push(h);else for(var i=b;i>=d;i--)h="number"==typeof f?c.Utils.pad(i.toString(),f,"0",1):i.toString(),h=a+h+e,g.push(h);return g},c.Frame=function(a,b,d,e,f,g){this.index=a,this.x=b,this.y=d,this.width=e,this.height=f,this.name=g,this.centerX=Math.floor(e/2),this.centerY=Math.floor(f/2),this.distance=c.Math.distance(0,0,e,f),this.rotated=!1,this.rotationDirection="cw",this.trimmed=!1,this.sourceSizeW=e,this.sourceSizeH=f,this.spriteSourceSizeX=0,this.spriteSourceSizeY=0,this.spriteSourceSizeW=0,this.spriteSourceSizeH=0,this.right=this.x+this.width,this.bottom=this.y+this.height},c.Frame.prototype={resize:function(a,b){this.width=a,this.height=b,this.centerX=Math.floor(a/2),this.centerY=Math.floor(b/2),this.distance=c.Math.distance(0,0,a,b),this.sourceSizeW=a,this.sourceSizeH=b,this.right=this.x+a,this.bottom=this.y+b},setTrim:function(a,b,c,d,e,f,g){this.trimmed=a,a&&(this.sourceSizeW=b,this.sourceSizeH=c,this.centerX=Math.floor(b/2),this.centerY=Math.floor(c/2),this.spriteSourceSizeX=d,this.spriteSourceSizeY=e,this.spriteSourceSizeW=f,this.spriteSourceSizeH=g)},clone:function(){var a=new c.Frame(this.index,this.x,this.y,this.width,this.height,this.name);for(var b in this)this.hasOwnProperty(b)&&(a[b]=this[b]);return a},getRect:function(a){return void 0===a?a=new c.Rectangle(this.x,this.y,this.width,this.height):a.setTo(this.x,this.y,this.width,this.height),a}},c.Frame.prototype.constructor=c.Frame,c.FrameData=function(){this._frames=[],this._frameNames=[]},c.FrameData.prototype={addFrame:function(a){return a.index=this._frames.length,this._frames.push(a),""!==a.name&&(this._frameNames[a.name]=a.index),a},getFrame:function(a){return a>=this._frames.length&&(a=0),this._frames[a]},getFrameByName:function(a){return"number"==typeof this._frameNames[a]?this._frames[this._frameNames[a]]:null},checkFrameName:function(a){return null==this._frameNames[a]?!1:!0},clone:function(){for(var a=new c.FrameData,b=0;b=d;d++)c.push(this._frames[d]);return c},getFrames:function(a,b,c){if(void 0===b&&(b=!0),void 0===c&&(c=[]),void 0===a||0===a.length)for(var d=0;d=d&&(d=Math.floor(-j/Math.min(-1,d))),0>=e&&(e=Math.floor(-k/Math.min(-1,e)));var l=Math.floor((j-g)/(d+h)),m=Math.floor((k-g)/(e+h)),n=l*m;if(-1!==f&&(n=f),0===j||0===k||d>j||e>k||0===n)return console.warn("Phaser.AnimationParser.spriteSheet: '"+b+"'s width/height zero or width/height < given frameWidth/frameHeight"),null;for(var o=new c.FrameData,p=g,q=g,r=0;n>r;r++)o.addFrame(new c.Frame(r,p,q,d,e,"")),p+=d+h,p+d>j&&(p=g,q+=e+h);return o},JSONData:function(a,b){if(!b.frames)return console.warn("Phaser.AnimationParser.JSONData: Invalid Texture Atlas JSON given, missing 'frames' array"),void console.log(b);for(var d,e=new c.FrameData,f=b.frames,g=0;g tag");for(var d,e,f,g,h,i,j,k,l,m,n,o=new c.FrameData,p=b.getElementsByTagName("SubTexture"),q=0;q-1},getAssetIndex:function(a,b){for(var c=-1,d=0;d-1?{index:c,file:this._fileList[c]}:!1},reset:function(a,b){void 0===b&&(b=!1),this.resetLocked||(a&&(this.preloadSprite=null),this.isLoading=!1,this._processingHead=0,this._fileList.length=0,this._flightQueue.length=0,this._fileLoadStarted=!1,this._totalFileCount=0,this._totalPackCount=0,this._loadedPackCount=0,this._loadedFileCount=0,b&&(this.onLoadStart.removeAll(),this.onLoadComplete.removeAll(),this.onPackComplete.removeAll(),this.onFileStart.removeAll(),this.onFileComplete.removeAll(),this.onFileError.removeAll()))},addToFileList:function(a,b,c,d,e,f){if(void 0===e&&(e=!1),void 0===b||""===b)return console.warn("Phaser.Loader: Invalid or no key given of type "+a),this;if(void 0===c||null===c){if(!f)return console.warn("Phaser.Loader: No URL given for file type: "+a+" key: "+b),this;c=b+f}var g={type:a,key:b,path:this.path,url:c,syncPoint:this._withSyncPointDepth>0,data:null,loading:!1,loaded:!1,error:!1};if(d)for(var h in d)g[h]=d[h];var i=this.getAssetIndex(a,b);if(e&&i>-1){var j=this._fileList[i];j.loading||j.loaded?(this._fileList.push(g),this._totalFileCount++):this._fileList[i]=g}else-1===i&&(this._fileList.push(g),this._totalFileCount++);return this},replaceInFileList:function(a,b,c,d){return this.addToFileList(a,b,c,d,!0)},pack:function(a,b,c,d){if(void 0===b&&(b=null),void 0===c&&(c=null),void 0===d&&(d=null),!b&&!c)return console.warn("Phaser.Loader.pack - Both url and data are null. One must be set."),this;var e={type:"packfile",key:a,url:b,path:this.path,syncPoint:!0,data:null,loading:!1,loaded:!1,error:!1,callbackContext:d};c&&("string"==typeof c&&(c=JSON.parse(c)),e.data=c||{},e.loaded=!0);for(var f=0;f=e||d&&this._loadedPackCount===this._totalPackCount)break}if(this.updateProgress(),this._processingHead>=this._fileList.length)this.finishedLoading();else if(!this._flightQueue.length){console.warn("Phaser.Loader - aborting: processing queue empty, loading may have stalled");var f=this;setTimeout(function(){f.finishedLoading(!0)},2e3)}},finishedLoading:function(a){this.hasLoaded||(this.hasLoaded=!0,this.isLoading=!1,a||this._fileLoadStarted||(this._fileLoadStarted=!0,this.onLoadStart.dispatch()),this.onLoadComplete.dispatch(),this.game.state.loadComplete(),this.reset())},asyncComplete:function(a,b){void 0===b&&(b=""),a.loaded=!0,a.error=!!b,b&&(a.errorMessage=b,console.warn("Phaser.Loader - "+a.type+"["+a.key+"]: "+b)),this.processLoadQueue()},processPack:function(a){var b=a.data[a.key];if(!b)return void console.warn("Phaser.Loader - "+a.key+": pack has data, but not for pack key");for(var d=0;d=400&&f.status<=599?e.call(g,a,f):d.call(g,a,f)}catch(b){g.hasLoaded?window.console&&console.error(b):g.asyncComplete(a,b.message||"Exception")}},f.onerror=function(){try{return e.call(g,a,f)}catch(b){g.hasLoaded?window.console&&console.error(b):g.asyncComplete(a,b.message||"Exception")}},a.requestObject=f,a.requestUrl=b,f.send()},xhrLoadWithXDR:function(a,b,c,d,e){this._warnedAboutXDomainRequest||this.game.device.ie&&!(this.game.device.ieVersion>=10)||(this._warnedAboutXDomainRequest=!0,console.warn("Phaser.Loader - using XDomainRequest outside of IE 9"));var f=new window.XDomainRequest;f.open("GET",b,!0),f.responseType=c,f.timeout=3e3,e=e||this.fileError;var g=this;f.onerror=function(){try{return e.call(g,a,f)}catch(b){g.asyncComplete(a,b.message||"Exception")}},f.ontimeout=function(){try{return e.call(g,a,f)}catch(b){g.asyncComplete(a,b.message||"Exception")}},f.onprogress=function(){},f.onload=function(){try{return 4==f.readyState&&f.status>=400&&f.status<=599?e.call(g,a,f):d.call(g,a,f)}catch(b){g.asyncComplete(a,b.message||"Exception")}},a.requestObject=f,a.requestUrl=b,setTimeout(function(){f.send()},0)},getVideoURL:function(a){for(var b=0;b=0&&(d=d.substr(0,d.indexOf("?")));var e=d.substr((Math.max(0,d.lastIndexOf("."))||1/0)+1);if(c=e.toLowerCase(),this.game.device.canPlayVideo(c))return a[b]}}return null},getAudioURL:function(a){if(this.game.sound.noAudio)return null;for(var b=0;b=0&&(d=d.substr(0,d.indexOf("?")));var e=d.substr((Math.max(0,d.lastIndexOf("."))||1/0)+1);if(c=e.toLowerCase(),this.game.device.canPlayAudio(c))return a[b]}}return null},fileError:function(a,b,c){var d=a.requestUrl||this.transformUrl(a.url,a),e="error loading asset from URL "+d;!c&&b&&(c=b.status),c&&(e=e+" ("+c+")"),this.asyncComplete(a,e)},fileComplete:function(a,b){var d=!0;switch(a.type){case"packfile":var e=JSON.parse(b.responseText);a.data=e||{};break;case"image":this.cache.addImage(a.key,a.url,a.data);break;case"spritesheet":this.cache.addSpriteSheet(a.key,a.url,a.data,a.frameWidth,a.frameHeight,a.frameMax,a.margin,a.spacing);break;case"textureatlas":if(null==a.atlasURL)this.cache.addTextureAtlas(a.key,a.url,a.data,a.atlasData,a.format);else if(d=!1,a.format==c.Loader.TEXTURE_ATLAS_JSON_ARRAY||a.format==c.Loader.TEXTURE_ATLAS_JSON_HASH||a.format==c.Loader.TEXTURE_ATLAS_JSON_PYXEL)this.xhrLoad(a,this.transformUrl(a.atlasURL,a),"text",this.jsonLoadComplete);else{if(a.format!=c.Loader.TEXTURE_ATLAS_XML_STARLING)throw new Error("Phaser.Loader. Invalid Texture Atlas format: "+a.format);this.xhrLoad(a,this.transformUrl(a.atlasURL,a),"text",this.xmlLoadComplete)}break;case"bitmapfont":a.atlasURL?(d=!1,this.xhrLoad(a,this.transformUrl(a.atlasURL,a),"text",function(a,b){var c;try{c=JSON.parse(b.responseText)}catch(d){}c?(a.atlasType="json",this.jsonLoadComplete(a,b)):(a.atlasType="xml",this.xmlLoadComplete(a,b))})):this.cache.addBitmapFont(a.key,a.url,a.data,a.atlasData,a.atlasType,a.xSpacing,a.ySpacing);break;case"video":if(a.asBlob)try{a.data=b.response}catch(f){throw new Error("Phaser.Loader. Unable to parse video file as Blob: "+a.key)}this.cache.addVideo(a.key,a.url,a.data,a.asBlob);break;case"audio":this.game.sound.usingWebAudio?(a.data=b.response,this.cache.addSound(a.key,a.url,a.data,!0,!1),a.autoDecode&&this.game.sound.decode(a.key)):this.cache.addSound(a.key,a.url,a.data,!1,!0);break;case"text":a.data=b.responseText,this.cache.addText(a.key,a.url,a.data);break;case"shader":a.data=b.responseText,this.cache.addShader(a.key,a.url,a.data);break;case"physics":var e=JSON.parse(b.responseText);this.cache.addPhysicsData(a.key,a.url,e,a.format);break;case"script":a.data=document.createElement("script"),a.data.language="javascript",a.data.type="text/javascript",a.data.defer=!1,a.data.text=b.responseText,document.head.appendChild(a.data),a.callback&&(a.data=a.callback.call(a.callbackContext,a.key,b.responseText));break;case"binary":a.callback?a.data=a.callback.call(a.callbackContext,a.key,b.response):a.data=b.response,this.cache.addBinary(a.key,a.data)}d&&this.asyncComplete(a)},jsonLoadComplete:function(a,b){var c=JSON.parse(b.responseText);"tilemap"===a.type?this.cache.addTilemap(a.key,a.url,c,a.format):"bitmapfont"===a.type?this.cache.addBitmapFont(a.key,a.url,a.data,c,a.atlasType,a.xSpacing,a.ySpacing):"json"===a.type?this.cache.addJSON(a.key,a.url,c):this.cache.addTextureAtlas(a.key,a.url,a.data,c,a.format),this.asyncComplete(a)},csvLoadComplete:function(a,b){var c=b.responseText;this.cache.addTilemap(a.key,a.url,c,a.format),this.asyncComplete(a)},xmlLoadComplete:function(a,b){var c=b.responseText,d=this.parseXml(c);if(!d){var e=b.responseType||b.contentType;return console.warn("Phaser.Loader - "+a.key+": invalid XML ("+e+")"),void this.asyncComplete(a,"invalid XML")}"bitmapfont"===a.type?this.cache.addBitmapFont(a.key,a.url,a.data,d,a.atlasType,a.xSpacing,a.ySpacing):"textureatlas"===a.type?this.cache.addTextureAtlas(a.key,a.url,a.data,d,a.format):"xml"===a.type&&this.cache.addXML(a.key,a.url,d),this.asyncComplete(a)},parseXml:function(a){var b;try{if(window.DOMParser){var c=new DOMParser;b=c.parseFromString(a,"text/xml")}else b=new ActiveXObject("Microsoft.XMLDOM"),b.async="false",b.loadXML(a)}catch(d){b=null}return b&&b.documentElement&&!b.getElementsByTagName("parsererror").length?b:null},updateProgress:function(){this.preloadSprite&&(0===this.preloadSprite.direction?this.preloadSprite.rect.width=Math.floor(this.preloadSprite.width/100*this.progress):this.preloadSprite.rect.height=Math.floor(this.preloadSprite.height/100*this.progress),this.preloadSprite.sprite?this.preloadSprite.sprite.updateCrop():this.preloadSprite=null)},totalLoadedFiles:function(){return this._loadedFileCount},totalQueuedFiles:function(){return this._totalFileCount-this._loadedFileCount},totalLoadedPacks:function(){return this._totalPackCount},totalQueuedPacks:function(){return this._totalPackCount-this._loadedPackCount}},Object.defineProperty(c.Loader.prototype,"progressFloat",{get:function(){var a=this._loadedFileCount/this._totalFileCount*100;return c.Math.clamp(a||0,0,100)}}),Object.defineProperty(c.Loader.prototype,"progress",{get:function(){return Math.round(this.progressFloat)}}),c.Loader.prototype.constructor=c.Loader,c.LoaderParser={bitmapFont:function(a,b,c,d){return this.xmlBitmapFont(a,b,c,d)},xmlBitmapFont:function(a,b,c,d){var e={},f=a.getElementsByTagName("info")[0],g=a.getElementsByTagName("common")[0];e.font=f.getAttribute("face"),e.size=parseInt(f.getAttribute("size"),10),e.lineHeight=parseInt(g.getAttribute("lineHeight"),10)+d,e.chars={};for(var h=a.getElementsByTagName("char"),i=0;i=this.durationMS&&(this.usingWebAudio?this.loop?(this.onLoop.dispatch(this),this.isPlaying=!1,""===this.currentMarker?(this.currentTime=0,this.startTime=this.game.time.time,this.isPlaying=!0):(this.onMarkerComplete.dispatch(this.currentMarker,this),this.play(this.currentMarker,0,this.volume,!0,!0))):""!==this.currentMarker&&this.stop():this.loop?(this.onLoop.dispatch(this),""===this.currentMarker&&(this.currentTime=0,this.startTime=this.game.time.time),this.isPlaying=!1,this.play(this.currentMarker,0,this.volume,!0,!0)):this.stop())))):void this.destroy()},loopFull:function(a){this.play(null,0,a,!0)},play:function(a,b,c,d,e){if((void 0===a||a===!1||null===a)&&(a=""),void 0===e&&(e=!0),this.isPlaying&&!this.allowMultiple&&!e&&!this.override)return this;if(this._sound&&this.isPlaying&&!this.allowMultiple&&(this.override||e))if(this.usingWebAudio){if(void 0===this._sound.stop)this._sound.noteOff(0);else try{this._sound.stop(0)}catch(f){}this.externalNode?this._sound.disconnect(this.externalNode):this._sound.disconnect(this.gainNode)}else this.usingAudioTag&&(this._sound.pause(),this._sound.currentTime=0);if(""===a&&Object.keys(this.markers).length>0)return this;if(""!==a){if(this.currentMarker=a,!this.markers[a])return this;this.position=this.markers[a].start,this.volume=this.markers[a].volume,this.loop=this.markers[a].loop,this.duration=this.markers[a].duration,this.durationMS=this.markers[a].durationMS,"undefined"!=typeof c&&(this.volume=c),"undefined"!=typeof d&&(this.loop=d),this._tempMarker=a,this._tempPosition=this.position,this._tempVolume=this.volume,this._tempLoop=this.loop}else b=b||0,void 0===c&&(c=this._volume),void 0===d&&(d=this.loop),this.position=Math.max(0,b),this.volume=c,this.loop=d,this.duration=0,this.durationMS=0,this._tempMarker=a,this._tempPosition=b,this._tempVolume=c,this._tempLoop=d;return this.usingWebAudio?this.game.cache.isSoundDecoded(this.key)?(this._sound=this.context.createBufferSource(),this.externalNode?this._sound.connect(this.externalNode):this._sound.connect(this.gainNode),this._buffer=this.game.cache.getSoundData(this.key),this._sound.buffer=this._buffer,this.loop&&""===a&&(this._sound.loop=!0),this.loop||""!==a||(this._sound.onended=this.onEndedHandler.bind(this)),this.totalDuration=this._sound.buffer.duration,0===this.duration&&(this.duration=this.totalDuration,this.durationMS=Math.ceil(1e3*this.totalDuration)),void 0===this._sound.start?this._sound.noteGrainOn(0,this.position,this.duration):this.loop&&""===a?this._sound.start(0,0):this._sound.start(0,this.position,this.duration),this.isPlaying=!0,this.startTime=this.game.time.time,this.currentTime=0,this.stopTime=this.startTime+this.durationMS,this.onPlay.dispatch(this)):(this.pendingPlayback=!0,this.game.cache.getSound(this.key)&&this.game.cache.getSound(this.key).isDecoding===!1&&this.game.sound.decode(this.key,this)):this.game.cache.getSound(this.key)&&this.game.cache.getSound(this.key).locked?(this.game.cache.reloadSound(this.key),this.pendingPlayback=!0):this._sound&&(this.game.device.cocoonJS||4===this._sound.readyState)?(this._sound.play(),this.totalDuration=this._sound.duration,0===this.duration&&(this.duration=this.totalDuration,this.durationMS=1e3*this.totalDuration),this._sound.currentTime=this.position,this._sound.muted=this._muted,this._muted||this.game.sound.mute?this._sound.volume=0:this._sound.volume=this._volume,this.isPlaying=!0,this.startTime=this.game.time.time,this.currentTime=0,this.stopTime=this.startTime+this.durationMS,this.onPlay.dispatch(this)):this.pendingPlayback=!0,this},restart:function(a,b,c,d){a=a||"",b=b||0,c=c||1,void 0===d&&(d=!1),this.play(a,b,c,d,!0)},pause:function(){this.isPlaying&&this._sound&&(this.paused=!0,this.pausedPosition=this.currentTime,this.pausedTime=this.game.time.time,this._tempPause=this._sound.currentTime,this.onPause.dispatch(this),this.stop())},resume:function(){if(this.paused&&this._sound){if(this.usingWebAudio){var a=Math.max(0,this.position+this.pausedPosition/1e3);this._sound=this.context.createBufferSource(),this._sound.buffer=this._buffer,this.externalNode?this._sound.connect(this.externalNode):this._sound.connect(this.gainNode),this.loop&&(this._sound.loop=!0),this.loop||""!==this.currentMarker||(this._sound.onended=this.onEndedHandler.bind(this));var b=this.duration-this.pausedPosition/1e3;void 0===this._sound.start?this._sound.noteGrainOn(0,a,b):this.loop&&this.game.device.chrome?42===this.game.device.chromeVersion?this._sound.start(0):this._sound.start(0,a):this._sound.start(0,a,b)}else this._sound.currentTime=this._tempPause,this._sound.play();this.isPlaying=!0,this.paused=!1,this.startTime+=this.game.time.time-this.pausedTime,this.onResume.dispatch(this)}},stop:function(){if(this.isPlaying&&this._sound)if(this.usingWebAudio){if(void 0===this._sound.stop)this._sound.noteOff(0);else try{this._sound.stop(0)}catch(a){}this.externalNode?this._sound.disconnect(this.externalNode):this._sound.disconnect(this.gainNode)}else this.usingAudioTag&&(this._sound.pause(),this._sound.currentTime=0);if(this.pendingPlayback=!1,this.isPlaying=!1,!this.paused){var b=this.currentMarker;""!==this.currentMarker&&this.onMarkerComplete.dispatch(this.currentMarker,this),this.currentMarker="",null!==this.fadeTween&&this.fadeTween.stop(),this.onStop.dispatch(this,b)}},fadeIn:function(a,b,c){void 0===b&&(b=!1),void 0===c&&(c=this.currentMarker),this.paused||(this.play(c,0,0,b),this.fadeTo(a,1))},fadeOut:function(a){this.fadeTo(a,0)},fadeTo:function(a,b){if(this.isPlaying&&!this.paused&&b!==this.volume){if(void 0===a&&(a=1e3),void 0===b)return void console.warn("Phaser.Sound.fadeTo: No Volume Specified.");this.fadeTween=this.game.add.tween(this).to({volume:b},a,c.Easing.Linear.None,!0),this.fadeTween.onComplete.add(this.fadeComplete,this)}},fadeComplete:function(){this.onFadeComplete.dispatch(this,this.volume),0===this.volume&&this.stop()},updateGlobalVolume:function(a){this.usingAudioTag&&this._sound&&(this._sound.volume=a*this._volume)},destroy:function(a){void 0===a&&(a=!0),this.stop(),a?this.game.sound.remove(this):(this.markers={},this.context=null,this._buffer=null,this.externalNode=null,this.onDecoded.dispose(),this.onPlay.dispose(),this.onPause.dispose(),this.onResume.dispose(),this.onLoop.dispose(),this.onStop.dispose(),this.onMute.dispose(),this.onMarkerComplete.dispose())}},c.Sound.prototype.constructor=c.Sound,Object.defineProperty(c.Sound.prototype,"isDecoding",{get:function(){return this.game.cache.getSound(this.key).isDecoding}}),Object.defineProperty(c.Sound.prototype,"isDecoded",{get:function(){return this.game.cache.isSoundDecoded(this.key)}}),Object.defineProperty(c.Sound.prototype,"mute",{get:function(){return this._muted||this.game.sound.mute},set:function(a){a=a||!1,a!==this._muted&&(a?(this._muted=!0,this._muteVolume=this._tempVolume,this.usingWebAudio?this.gainNode.gain.value=0:this.usingAudioTag&&this._sound&&(this._sound.volume=0)):(this._muted=!1,this.usingWebAudio?this.gainNode.gain.value=this._muteVolume:this.usingAudioTag&&this._sound&&(this._sound.volume=this._muteVolume)),this.onMute.dispatch(this))}}),Object.defineProperty(c.Sound.prototype,"volume",{get:function(){return this._volume},set:function(a){return this.game.device.firefox&&this.usingAudioTag&&(a=this.game.math.clamp(a,0,1)),this._muted?void(this._muteVolume=a):(this._tempVolume=a,this._volume=a,void(this.usingWebAudio?this.gainNode.gain.value=a:this.usingAudioTag&&this._sound&&(this._sound.volume=a)))}}),c.SoundManager=function(a){this.game=a,this.onSoundDecode=new c.Signal,this.onVolumeChange=new c.Signal,this.onMute=new c.Signal,this.onUnMute=new c.Signal,this.context=null,this.usingWebAudio=!1,this.usingAudioTag=!1,this.noAudio=!1,this.connectToMaster=!0,this.touchLocked=!1,this.channels=32,this.muteOnPause=!0,this._codeMuted=!1,this._muted=!1,this._unlockSource=null,this._volume=1,this._sounds=[],this._watchList=new c.ArraySet,this._watching=!1,this._watchCallback=null,this._watchContext=null},c.SoundManager.prototype={boot:function(){if(this.game.device.iOS&&this.game.device.webAudio===!1&&(this.channels=1),window.PhaserGlobal){if(window.PhaserGlobal.disableAudio===!0)return this.noAudio=!0,void(this.touchLocked=!1);if(window.PhaserGlobal.disableWebAudio===!0)return this.usingAudioTag=!0,void(this.touchLocked=!1)}if(window.PhaserGlobal&&window.PhaserGlobal.audioContext)this.context=window.PhaserGlobal.audioContext;else if(window.AudioContext)try{this.context=new window.AudioContext}catch(a){this.context=null,this.usingWebAudio=!1,this.touchLocked=!1}else if(window.webkitAudioContext)try{this.context=new window.webkitAudioContext}catch(a){this.context=null,this.usingWebAudio=!1,this.touchLocked=!1}if(null===this.context){if(void 0===window.Audio)return void(this.noAudio=!0);this.usingAudioTag=!0}else this.usingWebAudio=!0,void 0===this.context.createGain?this.masterGain=this.context.createGainNode():this.masterGain=this.context.createGain(),this.masterGain.gain.value=1,this.masterGain.connect(this.context.destination);this.noAudio||(!this.game.device.cocoonJS&&this.game.device.iOS||window.PhaserGlobal&&window.PhaserGlobal.fakeiOSTouchLock)&&this.setTouchLock()},setTouchLock:function(){this.noAudio||window.PhaserGlobal&&window.PhaserGlobal.disableAudio===!0||(this.game.device.iOSVersion>8?this.game.input.touch.addTouchLockCallback(this.unlock,this,!0):this.game.input.touch.addTouchLockCallback(this.unlock,this),this.touchLocked=!0)},unlock:function(){if(this.noAudio||!this.touchLocked||null!==this._unlockSource)return!0;if(this.usingAudioTag)this.touchLocked=!1,this._unlockSource=null;else if(this.usingWebAudio){var a=this.context.createBuffer(1,1,22050);this._unlockSource=this.context.createBufferSource(),this._unlockSource.buffer=a,this._unlockSource.connect(this.context.destination),void 0===this._unlockSource.start?this._unlockSource.noteOn(0):this._unlockSource.start(0)}return!0},stopAll:function(){if(!this.noAudio)for(var a=0;aa?a=0:a>1&&(a=1),this._volume!==a){if(this._volume=a,this.usingWebAudio)this.masterGain.gain.value=a;else for(var b=0;b=400?0:100,this.dom.getOffset(this.game.canvas,this.offset);var b=this._parentBounds.width,d=this._parentBounds.height,e=this.getParentBounds(this._parentBounds),f=e.width!==b||e.height!==d,g=this.updateOrientationState();(f||g)&&(this.onResize&&this.onResize.call(this.onResizeContext,this,e),this.updateLayout(),this.signalSizeChange());var h=2*this._updateThrottle;this._updateThrottle=b||0>=c)return a;var e=b,f=a.height*b/a.width,g=a.width*c/a.height,h=c,i=g>b;return i=i?d:!d,i?(a.width=Math.floor(e),a.height=Math.floor(f)):(a.width=Math.floor(g),a.height=Math.floor(h)),a},destroy:function(){this.game.onResume.remove(this._gameResumed,this),window.removeEventListener("orientationchange",this._orientationChange,!1),window.removeEventListener("resize",this._windowResize,!1),this.compatibility.supportsFullScreen&&(document.removeEventListener("webkitfullscreenchange",this._fullScreenChange,!1),document.removeEventListener("mozfullscreenchange",this._fullScreenChange,!1),document.removeEventListener("MSFullscreenChange",this._fullScreenChange,!1),document.removeEventListener("fullscreenchange",this._fullScreenChange,!1),document.removeEventListener("webkitfullscreenerror",this._fullScreenError,!1),document.removeEventListener("mozfullscreenerror",this._fullScreenError,!1),document.removeEventListener("MSFullscreenError",this._fullScreenError,!1),document.removeEventListener("fullscreenerror",this._fullScreenError,!1))}},c.ScaleManager.prototype.constructor=c.ScaleManager,Object.defineProperty(c.ScaleManager.prototype,"boundingParent",{get:function(){if(this.parentIsWindow||this.isFullScreen&&!this._createdFullScreenTarget)return null;var a=this.game.canvas&&this.game.canvas.parentNode;return a||null}}),Object.defineProperty(c.ScaleManager.prototype,"scaleMode",{get:function(){return this._scaleMode},set:function(a){return a!==this._scaleMode&&(this.isFullScreen||(this.updateDimensions(this._gameSize.width,this._gameSize.height,!0),this.queueUpdate(!0)),this._scaleMode=a),this._scaleMode}}),Object.defineProperty(c.ScaleManager.prototype,"fullScreenScaleMode",{get:function(){return this._fullScreenScaleMode},set:function(a){return a!==this._fullScreenScaleMode&&(this.isFullScreen?(this.prepScreenMode(!1),this._fullScreenScaleMode=a,this.prepScreenMode(!0),this.queueUpdate(!0)):this._fullScreenScaleMode=a),this._fullScreenScaleMode}}),Object.defineProperty(c.ScaleManager.prototype,"currentScaleMode",{get:function(){return this.isFullScreen?this._fullScreenScaleMode:this._scaleMode}}),Object.defineProperty(c.ScaleManager.prototype,"pageAlignHorizontally",{get:function(){return this._pageAlignHorizontally},set:function(a){a!==this._pageAlignHorizontally&&(this._pageAlignHorizontally=a,this.queueUpdate(!0))}}),Object.defineProperty(c.ScaleManager.prototype,"pageAlignVertically",{get:function(){return this._pageAlignVertically},set:function(a){a!==this._pageAlignVertically&&(this._pageAlignVertically=a,this.queueUpdate(!0))}}),Object.defineProperty(c.ScaleManager.prototype,"isFullScreen",{get:function(){return!!(document.fullscreenElement||document.webkitFullscreenElement||document.mozFullScreenElement||document.msFullscreenElement)}}),Object.defineProperty(c.ScaleManager.prototype,"isPortrait",{get:function(){return"portrait"===this.classifyOrientation(this.screenOrientation)}}),Object.defineProperty(c.ScaleManager.prototype,"isLandscape",{get:function(){return"landscape"===this.classifyOrientation(this.screenOrientation)}}),Object.defineProperty(c.ScaleManager.prototype,"isGamePortrait",{get:function(){return this.height>this.width}}),Object.defineProperty(c.ScaleManager.prototype,"isGameLandscape",{get:function(){return this.width>this.height}}),c.Utils.Debug=function(a){this.game=a,this.sprite=null,this.bmd=null,this.canvas=null,this.context=null,this.font="14px Courier",this.columnWidth=100,this.lineHeight=16,this.renderShadow=!0,this.currentX=0,this.currentY=0,this.currentAlpha=1,this.dirty=!1},c.Utils.Debug.prototype={boot:function(){this.game.renderType===c.CANVAS?this.context=this.game.context:(this.bmd=this.game.make.bitmapData(this.game.width,this.game.height),this.sprite=this.game.make.image(0,0,this.bmd),this.game.stage.addChild(this.sprite),this.game.scale.onSizeChange.add(this.resize,this),this.canvas=PIXI.CanvasPool.create(this,this.game.width,this.game.height),this.context=this.canvas.getContext("2d"))},resize:function(a,b,c){this.bmd.resize(b,c),this.canvas.width=b,this.canvas.height=c},preUpdate:function(){this.dirty&&this.sprite&&(this.bmd.clear(),this.bmd.draw(this.canvas,0,0),this.context.clearRect(0,0,this.game.width,this.game.height),this.dirty=!1)},reset:function(){this.context&&this.context.clearRect(0,0,this.game.width,this.game.height),this.sprite&&this.bmd.clear()},start:function(a,b,c,d){"number"!=typeof a&&(a=0),"number"!=typeof b&&(b=0),c=c||"rgb(255,255,255)",void 0===d&&(d=0),this.currentX=a,this.currentY=b,this.currentColor=c,this.columnWidth=d,this.dirty=!0,this.context.save(),this.context.setTransform(1,0,0,1,0,0),this.context.strokeStyle=c,this.context.fillStyle=c,this.context.font=this.font,this.context.globalAlpha=this.currentAlpha},stop:function(){this.context.restore()},line:function(){for(var a=this.currentX,b=0;b0)for(var b=0;b=0&&c.right>=0&&c.top<=this.layoutBounds.width&&c.left<=this.layoutBounds.height},getScreenOrientation:function(a){var b=window.screen,c=b.orientation||b.mozOrientation||b.msOrientation;if(c&&"string"==typeof c.type)return c.type;if("string"==typeof c)return c;var d="portrait-primary",e="landscape-primary";if("screen"===a)return b.height>b.width?d:e;if("viewport"===a)return this.visualBounds.height>this.visualBounds.width?d:e;if("window.orientation"===a&&"number"==typeof window.orientation)return 0===window.orientation||180===window.orientation?d:e;if(window.matchMedia){if(window.matchMedia("(orientation: portrait)").matches)return d;if(window.matchMedia("(orientation: landscape)").matches)return e}return this.visualBounds.height>this.visualBounds.width?d:e},visualBounds:new c.Rectangle,layoutBounds:new c.Rectangle,documentBounds:new c.Rectangle},c.Device.whenReady(function(a){var b=window&&"pageXOffset"in window?function(){return window.pageXOffset}:function(){return document.documentElement.scrollLeft},d=window&&"pageYOffset"in window?function(){return window.pageYOffset}:function(){return document.documentElement.scrollTop};Object.defineProperty(c.DOM,"scrollX",{get:b}),Object.defineProperty(c.DOM,"scrollY",{get:d}),Object.defineProperty(c.DOM.visualBounds,"x",{get:b}),Object.defineProperty(c.DOM.visualBounds,"y",{get:d}),Object.defineProperty(c.DOM.layoutBounds,"x",{value:0}),Object.defineProperty(c.DOM.layoutBounds,"y",{value:0});var e=a.desktop&&document.documentElement.clientWidth<=window.innerWidth&&document.documentElement.clientHeight<=window.innerHeight;if(e){var f=function(){return Math.max(window.innerWidth,document.documentElement.clientWidth)},g=function(){return Math.max(window.innerHeight,document.documentElement.clientHeight)};Object.defineProperty(c.DOM.visualBounds,"width",{ -get:f}),Object.defineProperty(c.DOM.visualBounds,"height",{get:g}),Object.defineProperty(c.DOM.layoutBounds,"width",{get:f}),Object.defineProperty(c.DOM.layoutBounds,"height",{get:g})}else Object.defineProperty(c.DOM.visualBounds,"width",{get:function(){return window.innerWidth}}),Object.defineProperty(c.DOM.visualBounds,"height",{get:function(){return window.innerHeight}}),Object.defineProperty(c.DOM.layoutBounds,"width",{get:function(){var a=document.documentElement.clientWidth,b=window.innerWidth;return b>a?b:a}}),Object.defineProperty(c.DOM.layoutBounds,"height",{get:function(){var a=document.documentElement.clientHeight,b=window.innerHeight;return b>a?b:a}});Object.defineProperty(c.DOM.documentBounds,"x",{value:0}),Object.defineProperty(c.DOM.documentBounds,"y",{value:0}),Object.defineProperty(c.DOM.documentBounds,"width",{get:function(){var a=document.documentElement;return Math.max(a.clientWidth,a.offsetWidth,a.scrollWidth)}}),Object.defineProperty(c.DOM.documentBounds,"height",{get:function(){var a=document.documentElement;return Math.max(a.clientHeight,a.offsetHeight,a.scrollHeight)}})},null,!0),c.ArraySet=function(a){this.position=0,this.list=a||[]},c.ArraySet.prototype={add:function(a){return this.exists(a)||this.list.push(a),a},getIndex:function(a){return this.list.indexOf(a)},getByKey:function(a,b){for(var c=this.list.length;c--;)if(this.list[c][a]===b)return this.list[c];return null},exists:function(a){return this.list.indexOf(a)>-1},reset:function(){this.list.length=0},remove:function(a){var b=this.list.indexOf(a);return b>-1?(this.list.splice(b,1),a):void 0},setAll:function(a,b){for(var c=this.list.length;c--;)this.list[c]&&(this.list[c][a]=b)},callAll:function(a){for(var b=Array.prototype.slice.call(arguments,1),c=this.list.length;c--;)this.list[c]&&this.list[c][a]&&this.list[c][a].apply(this.list[c],b)},removeAll:function(a){void 0===a&&(a=!1);for(var b=this.list.length;b--;)if(this.list[b]){var c=this.remove(this.list[b]);a&&c.destroy()}this.position=0,this.list=[]}},Object.defineProperty(c.ArraySet.prototype,"total",{get:function(){return this.list.length}}),Object.defineProperty(c.ArraySet.prototype,"first",{get:function(){return this.position=0,this.list.length>0?this.list[0]:null}}),Object.defineProperty(c.ArraySet.prototype,"next",{get:function(){return this.position0;b--){var c=Math.floor(Math.random()*(b+1)),d=a[b];a[b]=a[c],a[c]=d}return a},transposeMatrix:function(a){for(var b=a.length,c=a[0].length,d=new Array(c),e=0;c>e;e++){d[e]=new Array(b);for(var f=b-1;f>-1;f--)d[e][f]=a[f][e]}return d},rotateMatrix:function(a,b){if("string"!=typeof b&&(b=(b%360+360)%360),90===b||-270===b||"rotateLeft"===b)a=c.ArrayUtils.transposeMatrix(a),a=a.reverse();else if(-90===b||270===b||"rotateRight"===b)a=a.reverse(),a=c.ArrayUtils.transposeMatrix(a);else if(180===Math.abs(b)||"rotate180"===b){for(var d=0;d=e-a?e:d},rotate:function(a){var b=a.shift();return a.push(b),b},numberArray:function(a,b){for(var c=[],d=a;b>=d;d++)c.push(d);return c},numberArrayStep:function(a,b,d){(void 0===a||null===a)&&(a=0),(void 0===b||null===b)&&(b=a,a=0),void 0===d&&(d=1);for(var e=[],f=Math.max(c.Math.roundAwayFromZero((b-a)/(d||1)),0),g=0;f>g;g++)e.push(a),a+=d;return e}},c.LinkedList=function(){this.next=null,this.prev=null,this.first=null,this.last=null,this.total=0},c.LinkedList.prototype={add:function(a){return 0===this.total&&null===this.first&&null===this.last?(this.first=a,this.last=a,this.next=a,a.prev=this,this.total++,a):(this.last.next=a,a.prev=this.last,this.last=a,this.total++,a)},reset:function(){this.first=null,this.last=null,this.next=null,this.prev=null,this.total=0},remove:function(a){return 1===this.total?(this.reset(),void(a.next=a.prev=null)):(a===this.first?this.first=this.first.next:a===this.last&&(this.last=this.last.prev),a.prev&&(a.prev.next=a.next),a.next&&(a.next.prev=a.prev),a.next=a.prev=null,null===this.first&&(this.last=null),void this.total--)},callAll:function(a){if(this.first&&this.last){var b=this.first;do b&&b[a]&&b[a].call(b),b=b.next;while(b!=this.last.next)}}},c.LinkedList.prototype.constructor=c.LinkedList,c.Create=function(a){this.game=a,this.bmd=null,this.canvas=null,this.ctx=null,this.palettes=[{0:"#000",1:"#9D9D9D",2:"#FFF",3:"#BE2633",4:"#E06F8B",5:"#493C2B",6:"#A46422",7:"#EB8931",8:"#F7E26B",9:"#2F484E",A:"#44891A",B:"#A3CE27",C:"#1B2632",D:"#005784",E:"#31A2F2",F:"#B2DCEF"},{0:"#000",1:"#191028",2:"#46af45",3:"#a1d685",4:"#453e78",5:"#7664fe",6:"#833129",7:"#9ec2e8",8:"#dc534b",9:"#e18d79",A:"#d6b97b",B:"#e9d8a1",C:"#216c4b",D:"#d365c8",E:"#afaab9",F:"#f5f4eb"},{0:"#000",1:"#2234d1",2:"#0c7e45",3:"#44aacc",4:"#8a3622",5:"#5c2e78",6:"#aa5c3d",7:"#b5b5b5",8:"#5e606e",9:"#4c81fb",A:"#6cd947",B:"#7be2f9",C:"#eb8a60",D:"#e23d69",E:"#ffd93f",F:"#fff"},{0:"#000",1:"#fff",2:"#8b4131",3:"#7bbdc5",4:"#8b41ac",5:"#6aac41",6:"#3931a4",7:"#d5de73",8:"#945a20",9:"#5a4100",A:"#bd736a",B:"#525252",C:"#838383",D:"#acee8b",E:"#7b73de",F:"#acacac"},{0:"#000",1:"#191028",2:"#46af45",3:"#a1d685",4:"#453e78",5:"#7664fe",6:"#833129",7:"#9ec2e8",8:"#dc534b",9:"#e18d79",A:"#d6b97b",B:"#e9d8a1",C:"#216c4b",D:"#d365c8",E:"#afaab9",F:"#fff"}]},c.Create.PALETTE_ARNE=0,c.Create.PALETTE_JMP=1,c.Create.PALETTE_CGA=2,c.Create.PALETTE_C64=3,c.Create.PALETTE_JAPANESE_MACHINE=4,c.Create.prototype={texture:function(a,b,c,d,e){void 0===c&&(c=8),void 0===d&&(d=c),void 0===e&&(e=0);var f=b[0].length*c,g=b.length*d;null===this.bmd&&(this.bmd=this.game.make.bitmapData(),this.canvas=this.bmd.canvas,this.ctx=this.bmd.context),this.bmd.resize(f,g),this.bmd.clear();for(var h=0;hg;g+=e)this.ctx.fillRect(0,g,b,1);for(var h=0;b>h;h+=d)this.ctx.fillRect(h,0,1,c);return this.bmd.generateTexture(a)}},c.Create.prototype.constructor=c.Create,c.FlexGrid=function(a,b,d){this.game=a.game,this.manager=a,this.width=b,this.height=d,this.boundsCustom=new c.Rectangle(0,0,b,d),this.boundsFluid=new c.Rectangle(0,0,b,d),this.boundsFull=new c.Rectangle(0,0,b,d),this.boundsNone=new c.Rectangle(0,0,b,d),this.positionCustom=new c.Point(0,0),this.positionFluid=new c.Point(0,0),this.positionFull=new c.Point(0,0),this.positionNone=new c.Point(0,0),this.scaleCustom=new c.Point(1,1),this.scaleFluid=new c.Point(1,1),this.scaleFluidInversed=new c.Point(1,1),this.scaleFull=new c.Point(1,1),this.scaleNone=new c.Point(1,1),this.customWidth=0,this.customHeight=0,this.customOffsetX=0,this.customOffsetY=0,this.ratioH=b/d,this.ratioV=d/b,this.multiplier=0,this.layers=[]},c.FlexGrid.prototype={setSize:function(a,b){this.width=a,this.height=b,this.ratioH=a/b,this.ratioV=b/a,this.scaleNone=new c.Point(1,1),this.boundsNone.width=this.width,this.boundsNone.height=this.height,this.refresh()},createCustomLayer:function(a,b,d,e){void 0===e&&(e=!0),this.customWidth=a,this.customHeight=b,this.boundsCustom.width=a,this.boundsCustom.height=b;var f=new c.FlexLayer(this,this.positionCustom,this.boundsCustom,this.scaleCustom);return e&&this.game.world.add(f),this.layers.push(f),"undefined"!=typeof d&&null!==typeof d&&f.addMultiple(d),f},createFluidLayer:function(a,b){void 0===b&&(b=!0);var d=new c.FlexLayer(this,this.positionFluid,this.boundsFluid,this.scaleFluid);return b&&this.game.world.add(d),this.layers.push(d),"undefined"!=typeof a&&null!==typeof a&&d.addMultiple(a),d},createFullLayer:function(a){var b=new c.FlexLayer(this,this.positionFull,this.boundsFull,this.scaleFluid);return this.game.world.add(b),this.layers.push(b),"undefined"!=typeof a&&b.addMultiple(a),b},createFixedLayer:function(a){var b=new c.FlexLayer(this,this.positionNone,this.boundsNone,this.scaleNone);return this.game.world.add(b),this.layers.push(b),"undefined"!=typeof a&&b.addMultiple(a),b},reset:function(){for(var a=this.layers.length;a--;)this.layers[a].persist||(this.layers[a].position=null,this.layers[a].scale=null,this.layers.slice(a,1))},onResize:function(a,b){this.ratioH=a/b,this.ratioV=b/a,this.refresh(a,b)},refresh:function(){this.multiplier=Math.min(this.manager.height/this.height,this.manager.width/this.width),this.boundsFluid.width=Math.round(this.width*this.multiplier),this.boundsFluid.height=Math.round(this.height*this.multiplier),this.scaleFluid.set(this.boundsFluid.width/this.width,this.boundsFluid.height/this.height),this.scaleFluidInversed.set(this.width/this.boundsFluid.width,this.height/this.boundsFluid.height),this.scaleFull.set(this.boundsFull.width/this.width,this.boundsFull.height/this.height),this.boundsFull.width=Math.round(this.manager.width*this.scaleFluidInversed.x),this.boundsFull.height=Math.round(this.manager.height*this.scaleFluidInversed.y),this.boundsFluid.centerOn(this.manager.bounds.centerX,this.manager.bounds.centerY),this.boundsNone.centerOn(this.manager.bounds.centerX,this.manager.bounds.centerY),this.positionFluid.set(this.boundsFluid.x,this.boundsFluid.y),this.positionNone.set(this.boundsNone.x,this.boundsNone.y)},fitSprite:function(a){this.manager.scaleSprite(a),a.x=this.manager.bounds.centerX,a.y=this.manager.bounds.centerY},debug:function(){this.game.debug.text(this.boundsFluid.width+" x "+this.boundsFluid.height,this.boundsFluid.x+4,this.boundsFluid.y+16),this.game.debug.geom(this.boundsFluid,"rgba(255,0,0,0.9",!1)}},c.FlexGrid.prototype.constructor=c.FlexGrid,c.FlexLayer=function(a,b,d,e){c.Group.call(this,a.game,null,"__flexLayer"+a.game.rnd.uuid(),!1),this.manager=a.manager,this.grid=a,this.persist=!1,this.position=b,this.bounds=d,this.scale=e,this.topLeft=d.topLeft,this.topMiddle=new c.Point(d.halfWidth,0),this.topRight=d.topRight,this.bottomLeft=d.bottomLeft,this.bottomMiddle=new c.Point(d.halfWidth,d.bottom),this.bottomRight=d.bottomRight},c.FlexLayer.prototype=Object.create(c.Group.prototype),c.FlexLayer.prototype.constructor=c.FlexLayer,c.FlexLayer.prototype.resize=function(){},c.FlexLayer.prototype.debug=function(){this.game.debug.text(this.bounds.width+" x "+this.bounds.height,this.bounds.x+4,this.bounds.y+16),this.game.debug.geom(this.bounds,"rgba(0,0,255,0.9",!1),this.game.debug.geom(this.topLeft,"rgba(255,255,255,0.9"),this.game.debug.geom(this.topMiddle,"rgba(255,255,255,0.9"),this.game.debug.geom(this.topRight,"rgba(255,255,255,0.9")},c.Color={packPixel:function(a,b,d,e){return c.Device.LITTLE_ENDIAN?(e<<24|d<<16|b<<8|a)>>>0:(a<<24|b<<16|d<<8|e)>>>0},unpackPixel:function(a,b,d,e){return(void 0===b||null===b)&&(b=c.Color.createColor()),(void 0===d||null===d)&&(d=!1),(void 0===e||null===e)&&(e=!1),c.Device.LITTLE_ENDIAN?(b.a=(4278190080&a)>>>24,b.b=(16711680&a)>>>16,b.g=(65280&a)>>>8,b.r=255&a):(b.r=(4278190080&a)>>>24,b.g=(16711680&a)>>>16,b.b=(65280&a)>>>8,b.a=255&a),b.color=a,b.rgba="rgba("+b.r+","+b.g+","+b.b+","+b.a/255+")",d&&c.Color.RGBtoHSL(b.r,b.g,b.b,b),e&&c.Color.RGBtoHSV(b.r,b.g,b.b,b),b},fromRGBA:function(a,b){return b||(b=c.Color.createColor()),b.r=(4278190080&a)>>>24,b.g=(16711680&a)>>>16,b.b=(65280&a)>>>8,b.a=255&a,b.rgba="rgba("+b.r+","+b.g+","+b.b+","+b.a+")",b},toRGBA:function(a,b,c,d){return a<<24|b<<16|c<<8|d},RGBtoHSL:function(a,b,d,e){e||(e=c.Color.createColor(a,b,d,1)),a/=255,b/=255,d/=255;var f=Math.min(a,b,d),g=Math.max(a,b,d);if(e.h=0,e.s=0,e.l=(g+f)/2,g!==f){var h=g-f;e.s=e.l>.5?h/(2-g-f):h/(g+f),g===a?e.h=(b-d)/h+(d>b?6:0):g===b?e.h=(d-a)/h+2:g===d&&(e.h=(a-b)/h+4),e.h/=6}return e},HSLtoRGB:function(a,b,d,e){if(e?(e.r=d,e.g=d,e.b=d):e=c.Color.createColor(d,d,d),0!==b){var f=.5>d?d*(1+b):d+b-d*b,g=2*d-f;e.r=c.Color.hueToColor(g,f,a+1/3),e.g=c.Color.hueToColor(g,f,a),e.b=c.Color.hueToColor(g,f,a-1/3)}return e.r=Math.floor(255*e.r|0),e.g=Math.floor(255*e.g|0),e.b=Math.floor(255*e.b|0),c.Color.updateColor(e),e},RGBtoHSV:function(a,b,d,e){e||(e=c.Color.createColor(a,b,d,255)),a/=255,b/=255,d/=255;var f=Math.min(a,b,d),g=Math.max(a,b,d),h=g-f;return e.h=0,e.s=0===g?0:h/g,e.v=g,g!==f&&(g===a?e.h=(b-d)/h+(d>b?6:0):g===b?e.h=(d-a)/h+2:g===d&&(e.h=(a-b)/h+4),e.h/=6),e},HSVtoRGB:function(a,b,d,e){void 0===e&&(e=c.Color.createColor(0,0,0,1,a,b,0,d));var f,g,h,i=Math.floor(6*a),j=6*a-i,k=d*(1-b),l=d*(1-j*b),m=d*(1-(1-j)*b);switch(i%6){case 0:f=d,g=m,h=k;break;case 1:f=l,g=d,h=k;break;case 2:f=k,g=d,h=m;break;case 3:f=k,g=l,h=d;break;case 4:f=m,g=k,h=d;break;case 5:f=d,g=k,h=l}return e.r=Math.floor(255*f),e.g=Math.floor(255*g),e.b=Math.floor(255*h),c.Color.updateColor(e),e},hueToColor:function(a,b,c){return 0>c&&(c+=1),c>1&&(c-=1),1/6>c?a+6*(b-a)*c:.5>c?b:2/3>c?a+(b-a)*(2/3-c)*6:a},createColor:function(a,b,d,e,f,g,h,i){var j={r:a||0,g:b||0,b:d||0,a:e||1,h:f||0,s:g||0,l:h||0,v:i||0,color:0,color32:0,rgba:""};return c.Color.updateColor(j)},updateColor:function(a){return a.rgba="rgba("+a.r.toString()+","+a.g.toString()+","+a.b.toString()+","+a.a.toString()+")",a.color=c.Color.getColor(a.r,a.g,a.b),a.color32=c.Color.getColor32(255*a.a,a.r,a.g,a.b),a},getColor32:function(a,b,c,d){return a<<24|b<<16|c<<8|d},getColor:function(a,b,c){return a<<16|b<<8|c},RGBtoString:function(a,b,d,e,f){return void 0===e&&(e=255),void 0===f&&(f="#"),"#"===f?"#"+((1<<24)+(a<<16)+(b<<8)+d).toString(16).slice(1):"0x"+c.Color.componentToHex(e)+c.Color.componentToHex(a)+c.Color.componentToHex(b)+c.Color.componentToHex(d)},hexToRGB:function(a){var b=c.Color.hexToColor(a);return b?c.Color.getColor32(b.a,b.r,b.g,b.b):void 0},hexToColor:function(a,b){a=a.replace(/^(?:#|0x)?([a-f\d])([a-f\d])([a-f\d])$/i,function(a,b,c,d){return b+b+c+c+d+d});var d=/^(?:#|0x)?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(a);if(d){var e=parseInt(d[1],16),f=parseInt(d[2],16),g=parseInt(d[3],16);b?(b.r=e,b.g=f,b.b=g):b=c.Color.createColor(e,f,g)}return b},webToColor:function(a,b){b||(b=c.Color.createColor());var d=/^rgba?\(\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*(?:,\s*(\d+(?:\.\d+)?))?\s*\)$/.exec(a);return d&&(b.r=parseInt(d[1],10),b.g=parseInt(d[2],10),b.b=parseInt(d[3],10),b.a=void 0!==d[4]?parseFloat(d[4]):1,c.Color.updateColor(b)),b},valueToColor:function(a,b){if(b||(b=c.Color.createColor()),"string"==typeof a)return 0===a.indexOf("rgb")?c.Color.webToColor(a,b):(b.a=1,c.Color.hexToColor(a,b));if("number"==typeof a){var d=c.Color.getRGB(a);return b.r=d.r,b.g=d.g,b.b=d.b,b.a=d.a/255,b}return b},componentToHex:function(a){var b=a.toString(16);return 1==b.length?"0"+b:b},HSVColorWheel:function(a,b){void 0===a&&(a=1),void 0===b&&(b=1);for(var d=[],e=0;359>=e;e++)d.push(c.Color.HSVtoRGB(e/359,a,b));return d},HSLColorWheel:function(a,b){void 0===a&&(a=.5),void 0===b&&(b=.5);for(var d=[],e=0;359>=e;e++)d.push(c.Color.HSLtoRGB(e/359,a,b));return d},interpolateColor:function(a,b,d,e,f){void 0===f&&(f=255);var g=c.Color.getRGB(a),h=c.Color.getRGB(b),i=(h.red-g.red)*e/d+g.red,j=(h.green-g.green)*e/d+g.green,k=(h.blue-g.blue)*e/d+g.blue;return c.Color.getColor32(f,i,j,k)},interpolateColorWithRGB:function(a,b,d,e,f,g){var h=c.Color.getRGB(a),i=(b-h.red)*g/f+h.red,j=(d-h.green)*g/f+h.green,k=(e-h.blue)*g/f+h.blue;return c.Color.getColor(i,j,k)},interpolateRGB:function(a,b,d,e,f,g,h,i){var j=(e-a)*i/h+a,k=(f-b)*i/h+b,l=(g-d)*i/h+d;return c.Color.getColor(j,k,l)},getRandomColor:function(a,b,d){if(void 0===a&&(a=0),void 0===b&&(b=255),void 0===d&&(d=255),b>255||a>b)return c.Color.getColor(255,255,255);var e=a+Math.round(Math.random()*(b-a)),f=a+Math.round(Math.random()*(b-a)),g=a+Math.round(Math.random()*(b-a));return c.Color.getColor32(d,e,f,g)},getRGB:function(a){return a>16777215?{alpha:a>>>24,red:a>>16&255,green:a>>8&255,blue:255&a,a:a>>>24,r:a>>16&255,g:a>>8&255,b:255&a}:{alpha:255,red:a>>16&255,green:a>>8&255,blue:255&a,a:255,r:a>>16&255,g:a>>8&255,b:255&a}},getWebRGB:function(a){if("object"==typeof a)return"rgba("+a.r.toString()+","+a.g.toString()+","+a.b.toString()+","+(a.a/255).toString()+")";var b=c.Color.getRGB(a);return"rgba("+b.r.toString()+","+b.g.toString()+","+b.b.toString()+","+(b.a/255).toString()+")"},getAlpha:function(a){return a>>>24},getAlphaFloat:function(a){return(a>>>24)/255},getRed:function(a){return a>>16&255},getGreen:function(a){return a>>8&255},getBlue:function(a){return 255&a},blendNormal:function(a){return a},blendLighten:function(a,b){return b>a?b:a},blendDarken:function(a,b){return b>a?a:b},blendMultiply:function(a,b){return a*b/255},blendAverage:function(a,b){return(a+b)/2},blendAdd:function(a,b){return Math.min(255,a+b)},blendSubtract:function(a,b){return Math.max(0,a+b-255)},blendDifference:function(a,b){return Math.abs(a-b)},blendNegation:function(a,b){return 255-Math.abs(255-a-b)},blendScreen:function(a,b){return 255-((255-a)*(255-b)>>8)},blendExclusion:function(a,b){return a+b-2*a*b/255},blendOverlay:function(a,b){return 128>b?2*a*b/255:255-2*(255-a)*(255-b)/255},blendSoftLight:function(a,b){return 128>b?2*((a>>1)+64)*(b/255):255-2*(255-((a>>1)+64))*(255-b)/255},blendHardLight:function(a,b){return c.Color.blendOverlay(b,a)},blendColorDodge:function(a,b){return 255===b?b:Math.min(255,(a<<8)/(255-b))},blendColorBurn:function(a,b){return 0===b?b:Math.max(0,255-(255-a<<8)/b)},blendLinearDodge:function(a,b){return c.Color.blendAdd(a,b)},blendLinearBurn:function(a,b){return c.Color.blendSubtract(a,b)},blendLinearLight:function(a,b){return 128>b?c.Color.blendLinearBurn(a,2*b):c.Color.blendLinearDodge(a,2*(b-128))},blendVividLight:function(a,b){return 128>b?c.Color.blendColorBurn(a,2*b):c.Color.blendColorDodge(a,2*(b-128))},blendPinLight:function(a,b){return 128>b?c.Color.blendDarken(a,2*b):c.Color.blendLighten(a,2*(b-128))},blendHardMix:function(a,b){return c.Color.blendVividLight(a,b)<128?0:255},blendReflect:function(a,b){return 255===b?b:Math.min(255,a*a/(255-b))},blendGlow:function(a,b){return c.Color.blendReflect(b,a)},blendPhoenix:function(a,b){return Math.min(a,b)-Math.max(a,b)+255}},c.Physics=function(a,b){b=b||{},this.game=a,this.config=b,this.arcade=null,this.p2=null,this.ninja=null,this.box2d=null,this.chipmunk=null,this.matter=null,this.parseConfig()},c.Physics.ARCADE=0,c.Physics.P2JS=1,c.Physics.NINJA=2,c.Physics.BOX2D=3,c.Physics.CHIPMUNK=4,c.Physics.MATTERJS=5,c.Physics.prototype={parseConfig:function(){this.config.hasOwnProperty("arcade")&&this.config.arcade!==!0||!c.Physics.hasOwnProperty("Arcade")||(this.arcade=new c.Physics.Arcade(this.game)),this.config.hasOwnProperty("ninja")&&this.config.ninja===!0&&c.Physics.hasOwnProperty("Ninja")&&(this.ninja=new c.Physics.Ninja(this.game)),this.config.hasOwnProperty("p2")&&this.config.p2===!0&&c.Physics.hasOwnProperty("P2")&&(this.p2=new c.Physics.P2(this.game,this.config)),this.config.hasOwnProperty("box2d")&&this.config.box2d===!0&&c.Physics.hasOwnProperty("BOX2D")&&(this.box2d=new c.Physics.BOX2D(this.game,this.config)),this.config.hasOwnProperty("matter")&&this.config.matter===!0&&c.Physics.hasOwnProperty("Matter")&&(this.matter=new c.Physics.Matter(this.game,this.config))},startSystem:function(a){a===c.Physics.ARCADE?this.arcade=new c.Physics.Arcade(this.game):a===c.Physics.P2JS?null===this.p2?this.p2=new c.Physics.P2(this.game,this.config):this.p2.reset():a===c.Physics.NINJA?this.ninja=new c.Physics.Ninja(this.game):a===c.Physics.BOX2D?null===this.box2d?this.box2d=new c.Physics.Box2D(this.game,this.config):this.box2d.reset():a===c.Physics.MATTERJS&&(null===this.matter?this.matter=new c.Physics.Matter(this.game,this.config):this.matter.reset())},enable:function(a,b,d){void 0===b&&(b=c.Physics.ARCADE),void 0===d&&(d=!1),b===c.Physics.ARCADE?this.arcade.enable(a):b===c.Physics.P2JS&&this.p2?this.p2.enable(a,d):b===c.Physics.NINJA&&this.ninja?this.ninja.enableAABB(a):b===c.Physics.BOX2D&&this.box2d?this.box2d.enable(a):b===c.Physics.MATTERJS&&this.matter?this.matter.enable(a):console.warn(a.key+" is attempting to enable a physics body using an unknown physics system.")},preUpdate:function(){this.p2&&this.p2.preUpdate(),this.box2d&&this.box2d.preUpdate(),this.matter&&this.matter.preUpdate()},update:function(){this.p2&&this.p2.update(),this.box2d&&this.box2d.update(),this.matter&&this.matter.update()},setBoundsToWorld:function(){this.arcade&&this.arcade.setBoundsToWorld(),this.ninja&&this.ninja.setBoundsToWorld(),this.p2&&this.p2.setBoundsToWorld(),this.box2d&&this.box2d.setBoundsToWorld(),this.matter&&this.matter.setBoundsToWorld()},clear:function(){this.p2&&this.p2.clear(),this.box2d&&this.box2d.clear(),this.matter&&this.matter.clear()},reset:function(){this.p2&&this.p2.reset(),this.box2d&&this.box2d.reset(),this.matter&&this.matter.reset()},destroy:function(){this.p2&&this.p2.destroy(),this.box2d&&this.box2d.destroy(),this.matter&&this.matter.destroy(),this.arcade=null,this.ninja=null,this.p2=null,this.box2d=null,this.matter=null}},c.Physics.prototype.constructor=c.Physics,c.Physics.Arcade=function(a){this.game=a,this.gravity=new c.Point,this.bounds=new c.Rectangle(0,0,a.world.width,a.world.height),this.checkCollision={up:!0,down:!0,left:!0,right:!0},this.maxObjects=10,this.maxLevels=4,this.OVERLAP_BIAS=4,this.forceX=!1,this.sortDirection=c.Physics.Arcade.LEFT_RIGHT,this.skipQuadTree=!0,this.isPaused=!1,this.quadTree=new c.QuadTree(this.game.world.bounds.x,this.game.world.bounds.y,this.game.world.bounds.width,this.game.world.bounds.height,this.maxObjects,this.maxLevels),this._total=0,this.setBoundsToWorld()},c.Physics.Arcade.prototype.constructor=c.Physics.Arcade,c.Physics.Arcade.SORT_NONE=0,c.Physics.Arcade.LEFT_RIGHT=1,c.Physics.Arcade.RIGHT_LEFT=2,c.Physics.Arcade.TOP_BOTTOM=3,c.Physics.Arcade.BOTTOM_TOP=4,c.Physics.Arcade.prototype={setBounds:function(a,b,c,d){this.bounds.setTo(a,b,c,d)},setBoundsToWorld:function(){this.bounds.copyFrom(this.game.world.bounds)},enable:function(a,b){void 0===b&&(b=!0);var d=1;if(Array.isArray(a))for(d=a.length;d--;)a[d]instanceof c.Group?this.enable(a[d].children,b):(this.enableBody(a[d]),b&&a[d].hasOwnProperty("children")&&a[d].children.length>0&&this.enable(a[d],!0));else a instanceof c.Group?this.enable(a.children,b):(this.enableBody(a),b&&a.hasOwnProperty("children")&&a.children.length>0&&this.enable(a.children,!0))},enableBody:function(a){a.hasOwnProperty("body")&&null===a.body&&(a.body=new c.Physics.Arcade.Body(a),a.parent&&a.parent instanceof c.Group&&a.parent.addToHash(a))},updateMotion:function(a){var b=this.computeVelocity(0,a,a.angularVelocity,a.angularAcceleration,a.angularDrag,a.maxAngular)-a.angularVelocity;a.angularVelocity+=b,a.rotation+=a.angularVelocity*this.game.time.physicsElapsed,a.velocity.x=this.computeVelocity(1,a,a.velocity.x,a.acceleration.x,a.drag.x,a.maxVelocity.x),a.velocity.y=this.computeVelocity(2,a,a.velocity.y,a.acceleration.y,a.drag.y,a.maxVelocity.y)},computeVelocity:function(a,b,c,d,e,f){return void 0===f&&(f=1e4),1===a&&b.allowGravity?c+=(this.gravity.x+b.gravity.x)*this.game.time.physicsElapsed:2===a&&b.allowGravity&&(c+=(this.gravity.y+b.gravity.y)*this.game.time.physicsElapsed),d?c+=d*this.game.time.physicsElapsed:e&&(e*=this.game.time.physicsElapsed,c-e>0?c-=e:0>c+e?c+=e:c=0),c>f?c=f:-f>c&&(c=-f),c},overlap:function(a,b,c,d,e){if(c=c||null,d=d||null,e=e||c,this._total=0,!Array.isArray(a)&&Array.isArray(b))for(var f=0;f0},collide:function(a,b,c,d,e){if(c=c||null,d=d||null,e=e||c,this._total=0,!Array.isArray(a)&&Array.isArray(b))for(var f=0;f0},sortLeftRight:function(a,b){return a.body&&b.body?a.body.x-b.body.x:0},sortRightLeft:function(a,b){return a.body&&b.body?b.body.x-a.body.x:0},sortTopBottom:function(a,b){return a.body&&b.body?a.body.y-b.body.y:0},sortBottomTop:function(a,b){return a.body&&b.body?b.body.y-a.body.y:0},sort:function(a,b){null!==a.physicsSortDirection?b=a.physicsSortDirection:void 0===b&&(b=this.sortDirection),b===c.Physics.Arcade.LEFT_RIGHT?a.hash.sort(this.sortLeftRight):b===c.Physics.Arcade.RIGHT_LEFT?a.hash.sort(this.sortRightLeft):b===c.Physics.Arcade.TOP_BOTTOM?a.hash.sort(this.sortTopBottom):b===c.Physics.Arcade.BOTTOM_TOP&&a.hash.sort(this.sortBottomTop)},collideHandler:function(a,b,d,e,f,g){return void 0===b&&a.physicsType===c.GROUP?(this.sort(a),void this.collideGroupVsSelf(a,d,e,f,g)):void(a&&b&&a.exists&&b.exists&&(this.sortDirection!==c.Physics.Arcade.SORT_NONE&&(a.physicsType===c.GROUP&&this.sort(a),b.physicsType===c.GROUP&&this.sort(b)),a.physicsType===c.SPRITE?b.physicsType===c.SPRITE?this.collideSpriteVsSprite(a,b,d,e,f,g):b.physicsType===c.GROUP?this.collideSpriteVsGroup(a,b,d,e,f,g):b.physicsType===c.TILEMAPLAYER&&this.collideSpriteVsTilemapLayer(a,b,d,e,f,g):a.physicsType===c.GROUP?b.physicsType===c.SPRITE?this.collideSpriteVsGroup(b,a,d,e,f,g):b.physicsType===c.GROUP?this.collideGroupVsGroup(a,b,d,e,f,g):b.physicsType===c.TILEMAPLAYER&&this.collideGroupVsTilemapLayer(a,b,d,e,f,g):a.physicsType===c.TILEMAPLAYER&&(b.physicsType===c.SPRITE?this.collideSpriteVsTilemapLayer(b,a,d,e,f,g):b.physicsType===c.GROUP&&this.collideGroupVsTilemapLayer(b,a,d,e,f,g))))},collideSpriteVsSprite:function(a,b,c,d,e,f){return a.body&&b.body?(this.separate(a.body,b.body,d,e,f)&&(c&&c.call(e,a,b),this._total++),!0):!1},collideSpriteVsGroup:function(a,b,d,e,f,g){if(0!==b.length&&a.body){var h;if(this.skipQuadTree||a.body.skipQuadTree){for(var i=0;ih.right)break;if(h.x>a.body.right)continue}else if(this.sortDirection===c.Physics.Arcade.TOP_BOTTOM){if(a.body.bottomh.bottom)break;if(h.y>a.body.bottom)continue}this.collideSpriteVsSprite(a,b.hash[i],d,e,f,g)}}else{this.quadTree.clear(),this.quadTree.reset(this.game.world.bounds.x,this.game.world.bounds.y,this.game.world.bounds.width,this.game.world.bounds.height,this.maxObjects,this.maxLevels),this.quadTree.populate(b);for(var j=this.quadTree.retrieve(a),i=0;ij.body.right)continue;if(j.body.x>h.body.right)break}else if(this.sortDirection===c.Physics.Arcade.TOP_BOTTOM){if(h.body.bottomj.body.bottom)continue;if(j.body.y>h.body.bottom)break}this.collideSpriteVsSprite(h,j,b,d,e,f)}},collideGroupVsGroup:function(a,b,d,e,f,g){if(0!==a.length&&0!==b.length)for(var h=0;h=b.right?!1:a.position.y>=b.bottom?!1:!0},getOverlapX:function(a,b,c){var d=0,e=a.deltaAbsX()+b.deltaAbsX()+this.OVERLAP_BIAS;return 0===a.deltaX()&&0===b.deltaX()?(a.embedded=!0,b.embedded=!0):a.deltaX()>b.deltaX()?(d=a.right-b.x,d>e&&!c||a.checkCollision.right===!1||b.checkCollision.left===!1?d=0:(a.touching.none=!1,a.touching.right=!0,b.touching.none=!1,b.touching.left=!0)):a.deltaX()e&&!c||a.checkCollision.left===!1||b.checkCollision.right===!1?d=0:(a.touching.none=!1,a.touching.left=!0,b.touching.none=!1,b.touching.right=!0)),a.overlapX=d,b.overlapX=d,d},getOverlapY:function(a,b,c){var d=0,e=a.deltaAbsY()+b.deltaAbsY()+this.OVERLAP_BIAS;return 0===a.deltaY()&&0===b.deltaY()?(a.embedded=!0,b.embedded=!0):a.deltaY()>b.deltaY()?(d=a.bottom-b.y,d>e&&!c||a.checkCollision.down===!1||b.checkCollision.up===!1?d=0:(a.touching.none=!1,a.touching.down=!0,b.touching.none=!1,b.touching.up=!0)):a.deltaY()e&&!c||a.checkCollision.up===!1||b.checkCollision.down===!1?d=0:(a.touching.none=!1,a.touching.up=!0,b.touching.none=!1,b.touching.down=!0)),a.overlapY=d,b.overlapY=d,d},separateX:function(a,b,c){var d=this.getOverlapX(a,b,c);if(c||0===d||a.immovable&&b.immovable||a.customSeparateX||b.customSeparateX)return 0!==d||a.embedded&&b.embedded;var e=a.velocity.x,f=b.velocity.x;if(a.immovable||b.immovable)a.immovable?(b.x+=d,b.velocity.x=e-f*b.bounce.x,a.moves&&(b.y+=(a.y-a.prev.y)*a.friction.y)):(a.x-=d,a.velocity.x=f-e*a.bounce.x,b.moves&&(a.y+=(b.y-b.prev.y)*b.friction.y));else{d*=.5,a.x-=d,b.x+=d;var g=Math.sqrt(f*f*b.mass/a.mass)*(f>0?1:-1),h=Math.sqrt(e*e*a.mass/b.mass)*(e>0?1:-1),i=.5*(g+h);g-=i,h-=i,a.velocity.x=i+g*a.bounce.x,b.velocity.x=i+h*b.bounce.x}return!0},separateY:function(a,b,c){var d=this.getOverlapY(a,b,c);if(c||0===d||a.immovable&&b.immovable||a.customSeparateY||b.customSeparateY)return 0!==d||a.embedded&&b.embedded;var e=a.velocity.y,f=b.velocity.y;if(a.immovable||b.immovable)a.immovable?(b.y+=d,b.velocity.y=e-f*b.bounce.y,a.moves&&(b.x+=(a.x-a.prev.x)*a.friction.x)):(a.y-=d,a.velocity.y=f-e*a.bounce.y,b.moves&&(a.x+=(b.x-b.prev.x)*b.friction.x));else{d*=.5,a.y-=d,b.y+=d;var g=Math.sqrt(f*f*b.mass/a.mass)*(f>0?1:-1),h=Math.sqrt(e*e*a.mass/b.mass)*(e>0?1:-1),i=.5*(g+h);g-=i,h-=i,a.velocity.y=i+g*a.bounce.y,b.velocity.y=i+h*b.bounce.y}return!0},getObjectsUnderPointer:function(a,b,c,d){return 0!==b.length&&a.exists?this.getObjectsAtLocation(a.x,a.y,b,c,d,a):void 0},getObjectsAtLocation:function(a,b,d,e,f,g){this.quadTree.clear(),this.quadTree.reset(this.game.world.bounds.x,this.game.world.bounds.y,this.game.world.bounds.width,this.game.world.bounds.height,this.maxObjects,this.maxLevels),this.quadTree.populate(d);for(var h=new c.Rectangle(a,b,1,1),i=[],j=this.quadTree.retrieve(h),k=0;k0&&(c=this.distanceBetween(a,b)/(d/1e3)),a.body.velocity.x=Math.cos(e)*c,a.body.velocity.y=Math.sin(e)*c,e},moveToPointer:function(a,b,c,d){void 0===b&&(b=60),c=c||this.game.input.activePointer,void 0===d&&(d=0);var e=this.angleToPointer(a,c);return d>0&&(b=this.distanceToPointer(a,c)/(d/1e3)),a.body.velocity.x=Math.cos(e)*b,a.body.velocity.y=Math.sin(e)*b,e},moveToXY:function(a,b,c,d,e){void 0===d&&(d=60),void 0===e&&(e=0);var f=Math.atan2(c-a.y,b-a.x);return e>0&&(d=this.distanceToXY(a,b,c)/(e/1e3)),a.body.velocity.x=Math.cos(f)*d,a.body.velocity.y=Math.sin(f)*d,f},velocityFromAngle:function(a,b,d){return void 0===b&&(b=60),d=d||new c.Point,d.setTo(Math.cos(this.game.math.degToRad(a))*b,Math.sin(this.game.math.degToRad(a))*b)},velocityFromRotation:function(a,b,d){return void 0===b&&(b=60),d=d||new c.Point,d.setTo(Math.cos(a)*b,Math.sin(a)*b)},accelerationFromRotation:function(a,b,d){return void 0===b&&(b=60),d=d||new c.Point,d.setTo(Math.cos(a)*b,Math.sin(a)*b)},accelerateToObject:function(a,b,c,d,e){void 0===c&&(c=60),void 0===d&&(d=1e3),void 0===e&&(e=1e3);var f=this.angleBetween(a,b);return a.body.acceleration.setTo(Math.cos(f)*c,Math.sin(f)*c),a.body.maxVelocity.setTo(d,e),f},accelerateToPointer:function(a,b,c,d,e){void 0===c&&(c=60),void 0===b&&(b=this.game.input.activePointer),void 0===d&&(d=1e3),void 0===e&&(e=1e3);var f=this.angleToPointer(a,b);return a.body.acceleration.setTo(Math.cos(f)*c,Math.sin(f)*c),a.body.maxVelocity.setTo(d,e),f},accelerateToXY:function(a,b,c,d,e,f){void 0===d&&(d=60),void 0===e&&(e=1e3),void 0===f&&(f=1e3);var g=this.angleToXY(a,b,c);return a.body.acceleration.setTo(Math.cos(g)*d,Math.sin(g)*d),a.body.maxVelocity.setTo(e,f),g},distanceBetween:function(a,b,c){void 0===c&&(c=!1);var d=c?a.world.x-b.world.x:a.x-b.x,e=c?a.world.y-b.world.y:a.y-b.y;return Math.sqrt(d*d+e*e)},distanceToXY:function(a,b,c,d){void 0===d&&(d=!1);var e=d?a.world.x-b:a.x-b,f=d?a.world.y-c:a.y-c;return Math.sqrt(e*e+f*f)},distanceToPointer:function(a,b,c){void 0===b&&(b=this.game.input.activePointer),void 0===c&&(c=!1);var d=c?a.world.x-b.worldX:a.x-b.worldX,e=c?a.world.y-b.worldY:a.y-b.worldY;return Math.sqrt(d*d+e*e)},angleBetween:function(a,b,c){return void 0===c&&(c=!1),c?Math.atan2(b.world.y-a.world.y,b.world.x-a.world.x):Math.atan2(b.y-a.y,b.x-a.x)},angleToXY:function(a,b,c,d){return void 0===d&&(d=!1),d?Math.atan2(c-a.world.y,b-a.world.x):Math.atan2(c-a.y,b-a.x)},angleToPointer:function(a,b,c){return void 0===b&&(b=this.game.input.activePointer),void 0===c&&(c=!1),c?Math.atan2(b.worldY-a.world.y,b.worldX-a.world.x):Math.atan2(b.worldY-a.y,b.worldX-a.x)},worldAngleToPointer:function(a,b){return this.angleToPointer(a,b,!0)}},c.Physics.Arcade.Body=function(a){this.sprite=a,this.game=a.game,this.type=c.Physics.ARCADE,this.enable=!0,this.offset=new c.Point,this.position=new c.Point(a.x,a.y),this.prev=new c.Point(this.position.x,this.position.y),this.allowRotation=!0,this.rotation=a.rotation,this.preRotation=a.rotation,this.width=a.width,this.height=a.height,this.sourceWidth=a.width,this.sourceHeight=a.height,a.texture&&(this.sourceWidth=a.texture.frame.width,this.sourceHeight=a.texture.frame.height),this.halfWidth=Math.abs(a.width/2),this.halfHeight=Math.abs(a.height/2),this.center=new c.Point(a.x+this.halfWidth,a.y+this.halfHeight),this.velocity=new c.Point,this.newVelocity=new c.Point(0,0),this.deltaMax=new c.Point(0,0),this.acceleration=new c.Point,this.drag=new c.Point,this.allowGravity=!0,this.gravity=new c.Point(0,0),this.bounce=new c.Point,this.worldBounce=null,this.maxVelocity=new c.Point(1e4,1e4),this.friction=new c.Point(1,0),this.angularVelocity=0,this.angularAcceleration=0,this.angularDrag=0,this.maxAngular=1e3,this.mass=1,this.angle=0,this.speed=0,this.facing=c.NONE,this.immovable=!1,this.moves=!0,this.customSeparateX=!1,this.customSeparateY=!1,this.overlapX=0,this.overlapY=0,this.embedded=!1,this.collideWorldBounds=!1,this.checkCollision={none:!1,any:!0,up:!0,down:!0,left:!0,right:!0},this.touching={none:!0,up:!1,down:!1,left:!1,right:!1},this.wasTouching={none:!0,up:!1,down:!1,left:!1,right:!1},this.blocked={up:!1,down:!1,left:!1,right:!1},this.tilePadding=new c.Point,this.dirty=!1,this.skipQuadTree=!1,this.syncBounds=!1,this.isMoving=!1,this.stopVelocityOnCollide=!0,this.moveTimer=0,this.moveDistance=0,this.moveDuration=0,this.moveTarget=null,this.moveEnd=null,this.onMoveComplete=new c.Signal,this.movementCallback=null,this.movementCallbackContext=null,this._reset=!0,this._sx=a.scale.x,this._sy=a.scale.y,this._dx=0,this._dy=0},c.Physics.Arcade.Body.prototype={updateBounds:function(){if(this.syncBounds){var a=this.sprite.getBounds();a.ceilAll(),(a.width!==this.width||a.height!==this.height)&&(this.width=a.width,this.height=a.height,this._reset=!0)}else{var b=Math.abs(this.sprite.scale.x),c=Math.abs(this.sprite.scale.y);(b!==this._sx||c!==this._sy)&&(this.width=this.sourceWidth*b,this.height=this.sourceHeight*c,this._sx=b,this._sy=c,this._reset=!0)}this._reset&&(this.halfWidth=Math.floor(this.width/2),this.halfHeight=Math.floor(this.height/2),this.center.setTo(this.position.x+this.halfWidth,this.position.y+this.halfHeight))},preUpdate:function(){this.enable&&!this.game.physics.arcade.isPaused&&(this.dirty=!0,this.wasTouching.none=this.touching.none,this.wasTouching.up=this.touching.up,this.wasTouching.down=this.touching.down,this.wasTouching.left=this.touching.left,this.wasTouching.right=this.touching.right,this.touching.none=!0,this.touching.up=!1,this.touching.down=!1,this.touching.left=!1,this.touching.right=!1,this.blocked.up=!1,this.blocked.down=!1,this.blocked.left=!1,this.blocked.right=!1,this.embedded=!1,this.updateBounds(),this.position.x=this.sprite.world.x-this.sprite.anchor.x*this.sprite.width+this.sprite.scale.x*this.offset.x,this.position.x-=this.sprite.scale.x<0?this.width:0,this.position.y=this.sprite.world.y-this.sprite.anchor.y*this.sprite.height+this.sprite.scale.y*this.offset.y,this.position.y-=this.sprite.scale.y<0?this.height:0,this.rotation=this.sprite.angle,this.preRotation=this.rotation,(this._reset||this.sprite.fresh)&&(this.prev.x=this.position.x,this.prev.y=this.position.y),this.moves&&(this.game.physics.arcade.updateMotion(this),this.newVelocity.set(this.velocity.x*this.game.time.physicsElapsed,this.velocity.y*this.game.time.physicsElapsed),this.position.x+=this.newVelocity.x,this.position.y+=this.newVelocity.y,(this.position.x!==this.prev.x||this.position.y!==this.prev.y)&&(this.angle=Math.atan2(this.velocity.y,this.velocity.x)),this.speed=Math.sqrt(this.velocity.x*this.velocity.x+this.velocity.y*this.velocity.y),this.collideWorldBounds&&this.checkWorldBounds()),this._dx=this.deltaX(),this._dy=this.deltaY(),this._reset=!1)},updateMovement:function(){var a=0,b=0!==this.overlapX||0!==this.overlapY;if(this.moveDuration>0?(this.moveTimer+=this.game.time.elapsedMS,a=this.moveTimer/this.moveDuration):(this.moveTarget.end.set(this.position.x,this.position.y),a=this.moveTarget.length/this.moveDistance),this.movementCallback)var c=this.movementCallback.call(this.movementCallbackContext,this,this.velocity,a);return b||a>=1||void 0!==c&&c!==!0?(this.stopMovement(a>=1||this.stopVelocityOnCollide&&b),!1):!0},stopMovement:function(a){this.isMoving&&(this.isMoving=!1,a&&this.velocity.set(0),this.onMoveComplete.dispatch(this.sprite,0!==this.overlapX||0!==this.overlapY))},postUpdate:function(){this.enable&&this.dirty&&(this.isMoving&&this.updateMovement(),this.dirty=!1,this.deltaX()<0?this.facing=c.LEFT:this.deltaX()>0&&(this.facing=c.RIGHT),this.deltaY()<0?this.facing=c.UP:this.deltaY()>0&&(this.facing=c.DOWN),this.moves&&(this._dx=this.deltaX(),this._dy=this.deltaY(),0!==this.deltaMax.x&&0!==this._dx&&(this._dx<0&&this._dx<-this.deltaMax.x?this._dx=-this.deltaMax.x:this._dx>0&&this._dx>this.deltaMax.x&&(this._dx=this.deltaMax.x)),0!==this.deltaMax.y&&0!==this._dy&&(this._dy<0&&this._dy<-this.deltaMax.y?this._dy=-this.deltaMax.y:this._dy>0&&this._dy>this.deltaMax.y&&(this._dy=this.deltaMax.y)),this.sprite.position.x+=this._dx,this.sprite.position.y+=this._dy,this._reset=!0),this.center.setTo(this.position.x+this.halfWidth,this.position.y+this.halfHeight),this.allowRotation&&(this.sprite.angle+=this.deltaZ()),this.prev.x=this.position.x,this.prev.y=this.position.y)},checkWorldBounds:function(){var a=this.position,b=this.game.physics.arcade.bounds,c=this.game.physics.arcade.checkCollision,d=this.worldBounce?-this.worldBounce.x:-this.bounce.x,e=this.worldBounce?-this.worldBounce.y:-this.bounce.y;a.xb.right&&c.right&&(a.x=b.right-this.width,this.velocity.x*=d,this.blocked.right=!0),a.yb.bottom&&c.down&&(a.y=b.bottom-this.height,this.velocity.y*=e,this.blocked.down=!0)},moveFrom:function(a,b,c){if(void 0===b&&(b=this.speed),0===b)return!1;var d;return void 0===c?(d=this.angle,c=this.game.math.radToDeg(d)):d=this.game.math.degToRad(c),this.moveTimer=0,this.moveDuration=a,0===c||180===c?this.velocity.set(Math.cos(d)*b,0):90===c||270===c?this.velocity.set(0,Math.sin(d)*b):this.velocity.set(Math.cos(d)*b,Math.sin(d)*b),this.isMoving=!0,!0},moveTo:function(a,b,d){var e=b/(a/1e3);if(0===e)return!1;var f;return void 0===d?(f=this.angle,d=this.game.math.radToDeg(f)):f=this.game.math.degToRad(d),b=Math.abs(b),this.moveDuration=0,this.moveDistance=b,null===this.moveTarget&&(this.moveTarget=new c.Line,this.moveEnd=new c.Point),this.moveTarget.fromAngle(this.x,this.y,f,b),this.moveEnd.set(this.moveTarget.end.x,this.moveTarget.end.y),this.moveTarget.setTo(this.x,this.y,this.x,this.y),0===d||180===d?this.velocity.set(Math.cos(f)*e,0):90===d||270===d?this.velocity.set(0,Math.sin(f)*e):this.velocity.set(Math.cos(f)*e,Math.sin(f)*e),this.isMoving=!0,!0},setSize:function(a,b,c,d){void 0===c&&(c=this.offset.x),void 0===d&&(d=this.offset.y),this.sourceWidth=a,this.sourceHeight=b,this.width=this.sourceWidth*this._sx,this.height=this.sourceHeight*this._sy,this.halfWidth=Math.floor(this.width/2),this.halfHeight=Math.floor(this.height/2),this.offset.setTo(c,d),this.center.setTo(this.position.x+this.halfWidth,this.position.y+this.halfHeight)},reset:function(a,b){this.velocity.set(0),this.acceleration.set(0),this.speed=0,this.angularVelocity=0,this.angularAcceleration=0,this.position.x=a-this.sprite.anchor.x*this.sprite.width+this.sprite.scale.x*this.offset.x,this.position.x-=this.sprite.scale.x<0?this.width:0,this.position.y=b-this.sprite.anchor.y*this.sprite.height+this.sprite.scale.y*this.offset.y,this.position.y-=this.sprite.scale.y<0?this.height:0,this.prev.x=this.position.x,this.prev.y=this.position.y,this.rotation=this.sprite.angle,this.preRotation=this.rotation,this._sx=this.sprite.scale.x,this._sy=this.sprite.scale.y,this.center.setTo(this.position.x+this.halfWidth,this.position.y+this.halfHeight)},hitTest:function(a,b){return c.Rectangle.contains(this,a,b)},onFloor:function(){return this.blocked.down},onCeiling:function(){return this.blocked.up},onWall:function(){return this.blocked.left||this.blocked.right},deltaAbsX:function(){return this.deltaX()>0?this.deltaX():-this.deltaX()},deltaAbsY:function(){return this.deltaY()>0?this.deltaY():-this.deltaY()},deltaX:function(){return this.position.x-this.prev.x},deltaY:function(){return this.position.y-this.prev.y},deltaZ:function(){return this.rotation-this.preRotation},destroy:function(){this.sprite.parent&&this.sprite.parent instanceof c.Group&&this.sprite.parent.removeFromHash(this.sprite),this.sprite.body=null,this.sprite=null}},Object.defineProperty(c.Physics.Arcade.Body.prototype,"left",{get:function(){return this.position.x}}),Object.defineProperty(c.Physics.Arcade.Body.prototype,"right",{get:function(){return this.position.x+this.width}}),Object.defineProperty(c.Physics.Arcade.Body.prototype,"top",{get:function(){return this.position.y}}),Object.defineProperty(c.Physics.Arcade.Body.prototype,"bottom",{get:function(){return this.position.y+this.height}}),Object.defineProperty(c.Physics.Arcade.Body.prototype,"x",{get:function(){return this.position.x},set:function(a){this.position.x=a}}),Object.defineProperty(c.Physics.Arcade.Body.prototype,"y",{get:function(){return this.position.y},set:function(a){this.position.y=a}}),c.Physics.Arcade.Body.render=function(a,b,c,d){void 0===d&&(d=!0),c=c||"rgba(0,255,0,0.4)",d?(a.fillStyle=c,a.fillRect(b.position.x-b.game.camera.x,b.position.y-b.game.camera.y,b.width,b.height)):(a.strokeStyle=c,a.strokeRect(b.position.x-b.game.camera.x,b.position.y-b.game.camera.y,b.width,b.height))},c.Physics.Arcade.Body.renderBodyInfo=function(a,b){a.line("x: "+b.x.toFixed(2),"y: "+b.y.toFixed(2),"width: "+b.width,"height: "+b.height),a.line("velocity x: "+b.velocity.x.toFixed(2),"y: "+b.velocity.y.toFixed(2),"deltaX: "+b._dx.toFixed(2),"deltaY: "+b._dy.toFixed(2)),a.line("acceleration x: "+b.acceleration.x.toFixed(2),"y: "+b.acceleration.y.toFixed(2),"speed: "+b.speed.toFixed(2),"angle: "+b.angle.toFixed(2)),a.line("gravity x: "+b.gravity.x,"y: "+b.gravity.y,"bounce x: "+b.bounce.x.toFixed(2),"y: "+b.bounce.y.toFixed(2)),a.line("touching left: "+b.touching.left,"right: "+b.touching.right,"up: "+b.touching.up,"down: "+b.touching.down),a.line("blocked left: "+b.blocked.left,"right: "+b.blocked.right,"up: "+b.blocked.up,"down: "+b.blocked.down)},c.Physics.Arcade.Body.prototype.constructor=c.Physics.Arcade.Body,c.Physics.Arcade.TilemapCollision=function(){},c.Physics.Arcade.TilemapCollision.prototype={TILE_BIAS:16,collideSpriteVsTilemapLayer:function(a,b,c,d,e,f){if(a.body){var g=b.getTiles(a.body.position.x-a.body.tilePadding.x,a.body.position.y-a.body.tilePadding.y,a.body.width+a.body.tilePadding.x,a.body.height+a.body.tilePadding.y,!1,!1);if(0!==g.length)for(var h=0;hb.deltaAbsY()?j=-1:b.deltaAbsX()j){if((c.faceLeft||c.faceRight)&&(h=this.tileCheckX(b,c,d),0!==h&&!c.intersects(b.position.x-f,b.position.y-g,b.right-f,b.bottom-g)))return!0;(c.faceTop||c.faceBottom)&&(i=this.tileCheckY(b,c,d))}else{if((c.faceTop||c.faceBottom)&&(i=this.tileCheckY(b,c,d),0!==i&&!c.intersects(b.position.x-f,b.position.y-g,b.right-f,b.bottom-g)))return!0;(c.faceLeft||c.faceRight)&&(h=this.tileCheckX(b,c,d))}return 0!==h||0!==i},tileCheckX:function(a,b,c){var d=0,e=c.fixedToCamera?0:c.position.x;return a.deltaX()<0&&!a.blocked.left&&b.collideRight&&a.checkCollision.left?b.faceRight&&a.x-e0&&!a.blocked.right&&b.collideLeft&&a.checkCollision.right&&b.faceLeft&&a.right-e>b.left&&(d=a.right-e-b.left,d>this.TILE_BIAS&&(d=0)),0!==d&&(a.customSeparateX?a.overlapX=d:this.processTileSeparationX(a,d)),d},tileCheckY:function(a,b,c){var d=0,e=c.fixedToCamera?0:c.position.y;return a.deltaY()<0&&!a.blocked.up&&b.collideDown&&a.checkCollision.up?b.faceBottom&&a.y-e0&&!a.blocked.down&&b.collideUp&&a.checkCollision.down&&b.faceTop&&a.bottom-e>b.top&&(d=a.bottom-e-b.top,d>this.TILE_BIAS&&(d=0)),0!==d&&(a.customSeparateY?a.overlapY=d:this.processTileSeparationY(a,d)),d},processTileSeparationX:function(a,b){0>b?a.blocked.left=!0:b>0&&(a.blocked.right=!0),a.position.x-=b,0===a.bounce.x?a.velocity.x=0:a.velocity.x=-a.velocity.x*a.bounce.x},processTileSeparationY:function(a,b){0>b?a.blocked.up=!0:b>0&&(a.blocked.down=!0),a.position.y-=b,0===a.bounce.y?a.velocity.y=0:a.velocity.y=-a.velocity.y*a.bounce.y}},c.Utils.mixinPrototype(c.Physics.Arcade.prototype,c.Physics.Arcade.TilemapCollision.prototype),p2.Body.prototype.parent=null,p2.Spring.prototype.parent=null,c.Physics.P2=function(a,b){this.game=a,void 0===b?b={gravity:[0,0],broadphase:new p2.SAPBroadphase}:(b.hasOwnProperty("gravity")||(b.gravity=[0,0]),b.hasOwnProperty("broadphase")||(b.broadphase=new p2.SAPBroadphase)),this.config=b,this.world=new p2.World(this.config),this.frameRate=1/60,this.useElapsedTime=!1,this.paused=!1,this.materials=[],this.gravity=new c.Physics.P2.InversePointProxy(this,this.world.gravity),this.walls={left:null,right:null,top:null,bottom:null},this.onBodyAdded=new c.Signal,this.onBodyRemoved=new c.Signal,this.onSpringAdded=new c.Signal,this.onSpringRemoved=new c.Signal,this.onConstraintAdded=new c.Signal,this.onConstraintRemoved=new c.Signal,this.onContactMaterialAdded=new c.Signal,this.onContactMaterialRemoved=new c.Signal,this.postBroadphaseCallback=null,this.callbackContext=null,this.onBeginContact=new c.Signal,this.onEndContact=new c.Signal,b.hasOwnProperty("mpx")&&b.hasOwnProperty("pxm")&&b.hasOwnProperty("mpxi")&&b.hasOwnProperty("pxmi")&&(this.mpx=b.mpx,this.mpxi=b.mpxi,this.pxm=b.pxm,this.pxmi=b.pxmi),this.world.on("beginContact",this.beginContactHandler,this),this.world.on("endContact",this.endContactHandler,this),this.collisionGroups=[],this.nothingCollisionGroup=new c.Physics.P2.CollisionGroup(1),this.boundsCollisionGroup=new c.Physics.P2.CollisionGroup(2),this.everythingCollisionGroup=new c.Physics.P2.CollisionGroup(2147483648),this.boundsCollidesWith=[],this._toRemove=[],this._collisionGroupID=2,this._boundsLeft=!0,this._boundsRight=!0,this._boundsTop=!0,this._boundsBottom=!0,this._boundsOwnGroup=!1,this.setBoundsToWorld(!0,!0,!0,!0,!1)},c.Physics.P2.prototype={removeBodyNextStep:function(a){this._toRemove.push(a)},preUpdate:function(){for(var a=this._toRemove.length;a--;)this.removeBody(this._toRemove[a]);this._toRemove.length=0},enable:function(a,b,d){void 0===b&&(b=!1),void 0===d&&(d=!0);var e=1;if(Array.isArray(a))for(e=a.length;e--;)a[e]instanceof c.Group?this.enable(a[e].children,b,d):(this.enableBody(a[e],b),d&&a[e].hasOwnProperty("children")&&a[e].children.length>0&&this.enable(a[e],b,!0));else a instanceof c.Group?this.enable(a.children,b,d):(this.enableBody(a,b),d&&a.hasOwnProperty("children")&&a.children.length>0&&this.enable(a.children,b,!0))},enableBody:function(a,b){a.hasOwnProperty("body")&&null===a.body&&(a.body=new c.Physics.P2.Body(this.game,a,a.x,a.y,1),a.body.debug=b,"undefined"!=typeof a.anchor&&a.anchor.set(.5))},setImpactEvents:function(a){a?this.world.on("impact",this.impactHandler,this):this.world.off("impact",this.impactHandler,this)},setPostBroadphaseCallback:function(a,b){this.postBroadphaseCallback=a,this.callbackContext=b,null!==a?this.world.on("postBroadphase",this.postBroadphaseHandler,this):this.world.off("postBroadphase",this.postBroadphaseHandler,this)},postBroadphaseHandler:function(a){if(this.postBroadphaseCallback&&0!==a.pairs.length)for(var b=a.pairs.length-2;b>=0;b-=2)a.pairs[b].parent&&a.pairs[b+1].parent&&!this.postBroadphaseCallback.call(this.callbackContext,a.pairs[b].parent,a.pairs[b+1].parent)&&a.pairs.splice(b,2)},impactHandler:function(a){if(a.bodyA.parent&&a.bodyB.parent){var b=a.bodyA.parent,c=a.bodyB.parent;b._bodyCallbacks[a.bodyB.id]&&b._bodyCallbacks[a.bodyB.id].call(b._bodyCallbackContext[a.bodyB.id],b,c,a.shapeA,a.shapeB),c._bodyCallbacks[a.bodyA.id]&&c._bodyCallbacks[a.bodyA.id].call(c._bodyCallbackContext[a.bodyA.id],c,b,a.shapeB,a.shapeA),b._groupCallbacks[a.shapeB.collisionGroup]&&b._groupCallbacks[a.shapeB.collisionGroup].call(b._groupCallbackContext[a.shapeB.collisionGroup],b,c,a.shapeA,a.shapeB),c._groupCallbacks[a.shapeA.collisionGroup]&&c._groupCallbacks[a.shapeA.collisionGroup].call(c._groupCallbackContext[a.shapeA.collisionGroup],c,b,a.shapeB,a.shapeA)}},beginContactHandler:function(a){a.bodyA&&a.bodyB&&(this.onBeginContact.dispatch(a.bodyA,a.bodyB,a.shapeA,a.shapeB,a.contactEquations),a.bodyA.parent&&a.bodyA.parent.onBeginContact.dispatch(a.bodyB.parent,a.bodyB,a.shapeA,a.shapeB,a.contactEquations),a.bodyB.parent&&a.bodyB.parent.onBeginContact.dispatch(a.bodyA.parent,a.bodyA,a.shapeB,a.shapeA,a.contactEquations))},endContactHandler:function(a){a.bodyA&&a.bodyB&&(this.onEndContact.dispatch(a.bodyA,a.bodyB,a.shapeA,a.shapeB),a.bodyA.parent&&a.bodyA.parent.onEndContact.dispatch(a.bodyB.parent,a.bodyB,a.shapeA,a.shapeB),a.bodyB.parent&&a.bodyB.parent.onEndContact.dispatch(a.bodyA.parent,a.bodyA,a.shapeB,a.shapeA))},setBoundsToWorld:function(a,b,c,d,e){this.setBounds(this.game.world.bounds.x,this.game.world.bounds.y,this.game.world.bounds.width,this.game.world.bounds.height,a,b,c,d,e)},setWorldMaterial:function(a,b,c,d,e){void 0===b&&(b=!0),void 0===c&&(c=!0),void 0===d&&(d=!0),void 0===e&&(e=!0),b&&this.walls.left&&(this.walls.left.shapes[0].material=a),c&&this.walls.right&&(this.walls.right.shapes[0].material=a),d&&this.walls.top&&(this.walls.top.shapes[0].material=a),e&&this.walls.bottom&&(this.walls.bottom.shapes[0].material=a)},updateBoundsCollisionGroup:function(a){void 0===a&&(a=!0);var b=a?this.boundsCollisionGroup.mask:this.everythingCollisionGroup.mask;this.walls.left&&(this.walls.left.shapes[0].collisionGroup=b),this.walls.right&&(this.walls.right.shapes[0].collisionGroup=b),this.walls.top&&(this.walls.top.shapes[0].collisionGroup=b),this.walls.bottom&&(this.walls.bottom.shapes[0].collisionGroup=b),this._boundsOwnGroup=a},setBounds:function(a,b,c,d,e,f,g,h,i){void 0===e&&(e=this._boundsLeft),void 0===f&&(f=this._boundsRight),void 0===g&&(g=this._boundsTop),void 0===h&&(h=this._boundsBottom),void 0===i&&(i=this._boundsOwnGroup),this.setupWall(e,"left",a,b,1.5707963267948966,i),this.setupWall(f,"right",a+c,b,-1.5707963267948966,i),this.setupWall(g,"top",a,b,-3.141592653589793,i),this.setupWall(h,"bottom",a,b+d,0,i),this._boundsLeft=e,this._boundsRight=f,this._boundsTop=g,this._boundsBottom=h,this._boundsOwnGroup=i},setupWall:function(a,b,c,d,e,f){a?this.walls[b]?this.walls[b].position=[this.pxmi(c),this.pxmi(d)]:(this.walls[b]=new p2.Body({mass:0,position:[this.pxmi(c),this.pxmi(d)],angle:e}),this.walls[b].addShape(new p2.Plane),f&&(this.walls[b].shapes[0].collisionGroup=this.boundsCollisionGroup.mask),this.world.addBody(this.walls[b])):this.walls[b]&&(this.world.removeBody(this.walls[b]),this.walls[b]=null)},pause:function(){this.paused=!0},resume:function(){this.paused=!1},update:function(){this.paused||(this.useElapsedTime?this.world.step(this.game.time.physicsElapsed):this.world.step(this.frameRate))},reset:function(){this.world.on("beginContact",this.beginContactHandler,this),this.world.on("endContact",this.endContactHandler,this),this.nothingCollisionGroup=new c.Physics.P2.CollisionGroup(1),this.boundsCollisionGroup=new c.Physics.P2.CollisionGroup(2),this.everythingCollisionGroup=new c.Physics.P2.CollisionGroup(2147483648),this._collisionGroupID=2,this.setBoundsToWorld(!0,!0,!0,!0,!1)},clear:function(){this.world.time=0,this.world.fixedStepTime=0,this.world.solver&&this.world.solver.equations.length&&this.world.solver.removeAllEquations();for(var a=this.world.constraints,b=a.length-1;b>=0;b--)this.world.removeConstraint(a[b]);for(var c=this.world.bodies,b=c.length-1;b>=0;b--)this.world.removeBody(c[b]);for(var d=this.world.springs,b=d.length-1;b>=0;b--)this.world.removeSpring(d[b]);for(var e=this.world.contactMaterials,b=e.length-1;b>=0;b--)this.world.removeContactMaterial(e[b]);this.world.off("beginContact",this.beginContactHandler,this),this.world.off("endContact",this.endContactHandler,this),this.postBroadphaseCallback=null,this.callbackContext=null,this.impactCallback=null,this.collisionGroups=[],this._toRemove=[],this.boundsCollidesWith=[]},destroy:function(){this.clear(),this.game=null},addBody:function(a){return a.data.world?!1:(this.world.addBody(a.data),this.onBodyAdded.dispatch(a),!0)},removeBody:function(a){return a.data.world==this.world&&(this.world.removeBody(a.data),this.onBodyRemoved.dispatch(a)),a},addSpring:function(a){return a instanceof c.Physics.P2.Spring||a instanceof c.Physics.P2.RotationalSpring?this.world.addSpring(a.data):this.world.addSpring(a),this.onSpringAdded.dispatch(a),a},removeSpring:function(a){return a instanceof c.Physics.P2.Spring||a instanceof c.Physics.P2.RotationalSpring?this.world.removeSpring(a.data):this.world.removeSpring(a),this.onSpringRemoved.dispatch(a),a},createDistanceConstraint:function(a,b,d,e,f,g){return a=this.getBody(a),b=this.getBody(b),a&&b?this.addConstraint(new c.Physics.P2.DistanceConstraint(this,a,b,d,e,f,g)):void console.warn("Cannot create Constraint, invalid body objects given")},createGearConstraint:function(a,b,d,e){return a=this.getBody(a),b=this.getBody(b),a&&b?this.addConstraint(new c.Physics.P2.GearConstraint(this,a,b,d,e)):void console.warn("Cannot create Constraint, invalid body objects given")},createRevoluteConstraint:function(a,b,d,e,f,g){return a=this.getBody(a),d=this.getBody(d),a&&d?this.addConstraint(new c.Physics.P2.RevoluteConstraint(this,a,b,d,e,f,g)):void console.warn("Cannot create Constraint, invalid body objects given")},createLockConstraint:function(a,b,d,e,f){return a=this.getBody(a),b=this.getBody(b),a&&b?this.addConstraint(new c.Physics.P2.LockConstraint(this,a,b,d,e,f)):void console.warn("Cannot create Constraint, invalid body objects given")},createPrismaticConstraint:function(a,b,d,e,f,g,h){return a=this.getBody(a),b=this.getBody(b),a&&b?this.addConstraint(new c.Physics.P2.PrismaticConstraint(this,a,b,d,e,f,g,h)):void console.warn("Cannot create Constraint, invalid body objects given")},addConstraint:function(a){return this.world.addConstraint(a),this.onConstraintAdded.dispatch(a),a},removeConstraint:function(a){return this.world.removeConstraint(a),this.onConstraintRemoved.dispatch(a),a},addContactMaterial:function(a){return this.world.addContactMaterial(a),this.onContactMaterialAdded.dispatch(a),a},removeContactMaterial:function(a){return this.world.removeContactMaterial(a),this.onContactMaterialRemoved.dispatch(a),a},getContactMaterial:function(a,b){return this.world.getContactMaterial(a,b)},setMaterial:function(a,b){for(var c=b.length;c--;)b[c].setMaterial(a)},createMaterial:function(a,b){a=a||"";var d=new c.Physics.P2.Material(a);return this.materials.push(d),"undefined"!=typeof b&&b.setMaterial(d),d},createContactMaterial:function(a,b,d){void 0===a&&(a=this.createMaterial()),void 0===b&&(b=this.createMaterial());var e=new c.Physics.P2.ContactMaterial(a,b,d);return this.addContactMaterial(e)},getBodies:function(){for(var a=[],b=this.world.bodies.length;b--;)a.push(this.world.bodies[b].parent);return a},getBody:function(a){return a instanceof p2.Body?a:a instanceof c.Physics.P2.Body?a.data:a.body&&a.body.type===c.Physics.P2JS?a.body.data:null},getSprings:function(){for(var a=[],b=this.world.springs.length;b--;)a.push(this.world.springs[b].parent);return a},getConstraints:function(){for(var a=[],b=this.world.constraints.length;b--;)a.push(this.world.constraints[b]);return a},hitTest:function(a,b,d,e){void 0===b&&(b=this.world.bodies),void 0===d&&(d=5),void 0===e&&(e=!1);for(var f=[this.pxmi(a.x),this.pxmi(a.y)],g=[],h=b.length;h--;)b[h]instanceof c.Physics.P2.Body&&(!e||b[h].data.type!==p2.Body.STATIC)?g.push(b[h].data):b[h]instanceof p2.Body&&b[h].parent&&(!e||b[h].type!==p2.Body.STATIC)?g.push(b[h]):b[h]instanceof c.Sprite&&b[h].hasOwnProperty("body")&&(!e||b[h].body.data.type!==p2.Body.STATIC)&&g.push(b[h].body.data);return this.world.hitTest(f,g,d)},toJSON:function(){return this.world.toJSON()},createCollisionGroup:function(a){var b=Math.pow(2,this._collisionGroupID);this.walls.left&&(this.walls.left.shapes[0].collisionMask=this.walls.left.shapes[0].collisionMask|b),this.walls.right&&(this.walls.right.shapes[0].collisionMask=this.walls.right.shapes[0].collisionMask|b),this.walls.top&&(this.walls.top.shapes[0].collisionMask=this.walls.top.shapes[0].collisionMask|b),this.walls.bottom&&(this.walls.bottom.shapes[0].collisionMask=this.walls.bottom.shapes[0].collisionMask|b),this._collisionGroupID++;var d=new c.Physics.P2.CollisionGroup(b);return this.collisionGroups.push(d),a&&this.setCollisionGroup(a,d),d},setCollisionGroup:function(a,b){if(a instanceof c.Group)for(var d=0;de;e++){var g=a.collision[b][e],h=this.createBody(g.x,g.y,0,c,{},g.polyline);h&&d.push(h)}return d},clearTilemapLayerBodies:function(a,b){b=a.getLayer(b);for(var c=a.layers[b].bodies.length;c--;)a.layers[b].bodies[c].destroy();a.layers[b].bodies.length=0},convertTilemap:function(a,b,c,d){b=a.getLayer(b),void 0===c&&(c=!0),void 0===d&&(d=!0),this.clearTilemapLayerBodies(a,b);for(var e=0,f=0,g=0,h=0,i=a.layers[b].height;i>h;h++){e=0;for(var j=0,k=a.layers[b].width;k>j;j++){var l=a.layers[b].data[h][j];if(l&&l.index>-1&&l.collides)if(d){var m=a.getTileRight(b,j,h);if(0===e&&(f=l.x*l.width,g=l.y*l.height,e=l.width),m&&m.collides)e+=l.width;else{var n=this.createBody(f,g,0,!1);n.addRectangle(e,l.height,e/2,l.height/2,0),c&&this.addBody(n),a.layers[b].bodies.push(n),e=0}}else{var n=this.createBody(l.x*l.width,l.y*l.height,0,!1);n.addRectangle(l.width,l.height,l.width/2,l.height/2,0),c&&this.addBody(n),a.layers[b].bodies.push(n)}}}return a.layers[b].bodies},mpx:function(a){return a*=20},pxm:function(a){return.05*a},mpxi:function(a){return a*=-20},pxmi:function(a){return a*-.05}},Object.defineProperty(c.Physics.P2.prototype,"friction",{get:function(){return this.world.defaultContactMaterial.friction},set:function(a){this.world.defaultContactMaterial.friction=a}}),Object.defineProperty(c.Physics.P2.prototype,"restitution",{get:function(){return this.world.defaultContactMaterial.restitution},set:function(a){this.world.defaultContactMaterial.restitution=a}}),Object.defineProperty(c.Physics.P2.prototype,"contactMaterial",{get:function(){return this.world.defaultContactMaterial},set:function(a){this.world.defaultContactMaterial=a}}),Object.defineProperty(c.Physics.P2.prototype,"applySpringForces",{get:function(){return this.world.applySpringForces},set:function(a){this.world.applySpringForces=a}}),Object.defineProperty(c.Physics.P2.prototype,"applyDamping",{get:function(){return this.world.applyDamping},set:function(a){ -this.world.applyDamping=a}}),Object.defineProperty(c.Physics.P2.prototype,"applyGravity",{get:function(){return this.world.applyGravity},set:function(a){this.world.applyGravity=a}}),Object.defineProperty(c.Physics.P2.prototype,"solveConstraints",{get:function(){return this.world.solveConstraints},set:function(a){this.world.solveConstraints=a}}),Object.defineProperty(c.Physics.P2.prototype,"time",{get:function(){return this.world.time}}),Object.defineProperty(c.Physics.P2.prototype,"emitImpactEvent",{get:function(){return this.world.emitImpactEvent},set:function(a){this.world.emitImpactEvent=a}}),Object.defineProperty(c.Physics.P2.prototype,"sleepMode",{get:function(){return this.world.sleepMode},set:function(a){this.world.sleepMode=a}}),Object.defineProperty(c.Physics.P2.prototype,"total",{get:function(){return this.world.bodies.length}}),c.Physics.P2.FixtureList=function(a){Array.isArray(a)||(a=[a]),this.rawList=a,this.init(),this.parse(this.rawList)},c.Physics.P2.FixtureList.prototype={init:function(){this.namedFixtures={},this.groupedFixtures=[],this.allFixtures=[]},setCategory:function(a,b){var c=function(b){b.collisionGroup=a};this.getFixtures(b).forEach(c)},setMask:function(a,b){var c=function(b){b.collisionMask=a};this.getFixtures(b).forEach(c)},setSensor:function(a,b){var c=function(b){b.sensor=a};this.getFixtures(b).forEach(c)},setMaterial:function(a,b){var c=function(b){b.material=a};this.getFixtures(b).forEach(c)},getFixtures:function(a){var b=[];if(a){a instanceof Array||(a=[a]);var c=this;return a.forEach(function(a){c.namedFixtures[a]&&b.push(c.namedFixtures[a])}),this.flatten(b)}return this.allFixtures},getFixtureByKey:function(a){return this.namedFixtures[a]},getGroup:function(a){return this.groupedFixtures[a]},parse:function(){var a,b,c,d;c=this.rawList,d=[];for(a in c)b=c[a],isNaN(a-0)?this.namedFixtures[a]=this.flatten(b):(this.groupedFixtures[a]=this.groupedFixtures[a]||[],this.groupedFixtures[a]=this.groupedFixtures[a].concat(b)),d.push(this.allFixtures=this.flatten(this.groupedFixtures))},flatten:function(a){var b,c;return b=[],c=arguments.callee,a.forEach(function(a){return Array.prototype.push.apply(b,Array.isArray(a)?c(a):[a])}),b}},c.Physics.P2.PointProxy=function(a,b){this.world=a,this.destination=b},c.Physics.P2.PointProxy.prototype.constructor=c.Physics.P2.PointProxy,Object.defineProperty(c.Physics.P2.PointProxy.prototype,"x",{get:function(){return this.world.mpx(this.destination[0])},set:function(a){this.destination[0]=this.world.pxm(a)}}),Object.defineProperty(c.Physics.P2.PointProxy.prototype,"y",{get:function(){return this.world.mpx(this.destination[1])},set:function(a){this.destination[1]=this.world.pxm(a)}}),Object.defineProperty(c.Physics.P2.PointProxy.prototype,"mx",{get:function(){return this.destination[0]},set:function(a){this.destination[0]=a}}),Object.defineProperty(c.Physics.P2.PointProxy.prototype,"my",{get:function(){return this.destination[1]},set:function(a){this.destination[1]=a}}),c.Physics.P2.InversePointProxy=function(a,b){this.world=a,this.destination=b},c.Physics.P2.InversePointProxy.prototype.constructor=c.Physics.P2.InversePointProxy,Object.defineProperty(c.Physics.P2.InversePointProxy.prototype,"x",{get:function(){return this.world.mpxi(this.destination[0])},set:function(a){this.destination[0]=this.world.pxmi(a)}}),Object.defineProperty(c.Physics.P2.InversePointProxy.prototype,"y",{get:function(){return this.world.mpxi(this.destination[1])},set:function(a){this.destination[1]=this.world.pxmi(a)}}),Object.defineProperty(c.Physics.P2.InversePointProxy.prototype,"mx",{get:function(){return this.destination[0]},set:function(a){this.destination[0]=-a}}),Object.defineProperty(c.Physics.P2.InversePointProxy.prototype,"my",{get:function(){return this.destination[1]},set:function(a){this.destination[1]=-a}}),c.Physics.P2.Body=function(a,b,d,e,f){b=b||null,d=d||0,e=e||0,void 0===f&&(f=1),this.game=a,this.world=a.physics.p2,this.sprite=b,this.type=c.Physics.P2JS,this.offset=new c.Point,this.data=new p2.Body({position:[this.world.pxmi(d),this.world.pxmi(e)],mass:f}),this.data.parent=this,this.velocity=new c.Physics.P2.InversePointProxy(this.world,this.data.velocity),this.force=new c.Physics.P2.InversePointProxy(this.world,this.data.force),this.gravity=new c.Point,this.onBeginContact=new c.Signal,this.onEndContact=new c.Signal,this.collidesWith=[],this.removeNextStep=!1,this.debugBody=null,this.dirty=!1,this._collideWorldBounds=!0,this._bodyCallbacks={},this._bodyCallbackContext={},this._groupCallbacks={},this._groupCallbackContext={},this._reset=!1,b&&(this.setRectangleFromSprite(b),b.exists&&this.game.physics.p2.addBody(this))},c.Physics.P2.Body.prototype={createBodyCallback:function(a,b,c){var d=-1;a.id?d=a.id:a.body&&(d=a.body.id),d>-1&&(null===b?(delete this._bodyCallbacks[d],delete this._bodyCallbackContext[d]):(this._bodyCallbacks[d]=b,this._bodyCallbackContext[d]=c))},createGroupCallback:function(a,b,c){null===b?(delete this._groupCallbacks[a.mask],delete this._groupCallbackContext[a.mask]):(this._groupCallbacks[a.mask]=b,this._groupCallbackContext[a.mask]=c)},getCollisionMask:function(){var a=0;this._collideWorldBounds&&(a=this.game.physics.p2.boundsCollisionGroup.mask);for(var b=0;b=0;c--)this.data.shapes[c].collisionMask=b;else a.collisionMask=b},setCollisionGroup:function(a,b){var c=this.getCollisionMask();if(void 0===b)for(var d=this.data.shapes.length-1;d>=0;d--)this.data.shapes[d].collisionGroup=a.mask,this.data.shapes[d].collisionMask=c;else b.collisionGroup=a.mask,b.collisionMask=c},clearCollision:function(a,b,c){if(void 0===a&&(a=!0),void 0===b&&(b=!0),void 0===c)for(var d=this.data.shapes.length-1;d>=0;d--)a&&(this.data.shapes[d].collisionGroup=null),b&&(this.data.shapes[d].collisionMask=null);else a&&(c.collisionGroup=null),b&&(c.collisionMask=null);a&&(this.collidesWith.length=0)},removeCollisionGroup:function(a,b,c){void 0===b&&(b=!0);var d;if(Array.isArray(a))for(var e=0;e-1&&(this.collidesWith.splice(d,1),b&&(delete this._groupCallbacks[a.mask],delete this._groupCallbackContext[a.mask]));else d=this.collidesWith.indexOf(a),d>-1&&(this.collidesWith.splice(d,1),b&&(delete this._groupCallbacks[a.mask],delete this._groupCallbackContext[a.mask]));var f=this.getCollisionMask();if(void 0===c)for(var e=this.data.shapes.length-1;e>=0;e--)this.data.shapes[e].collisionMask=f;else c.collisionMask=f},collides:function(a,b,c,d){if(Array.isArray(a))for(var e=0;e=0;e--)this.data.shapes[e].collisionMask=f;else d.collisionMask=f},adjustCenterOfMass:function(){this.data.adjustCenterOfMass(),this.shapeChanged()},getVelocityAtPoint:function(a,b){return this.data.getVelocityAtPoint(a,b)},applyDamping:function(a){this.data.applyDamping(a)},applyImpulse:function(a,b,c){this.data.applyImpulse(a,[this.world.pxmi(b),this.world.pxmi(c)])},applyImpulseLocal:function(a,b,c){this.data.applyImpulseLocal(a,[this.world.pxmi(b),this.world.pxmi(c)])},applyForce:function(a,b,c){this.data.applyForce(a,[this.world.pxmi(b),this.world.pxmi(c)])},setZeroForce:function(){this.data.setZeroForce()},setZeroRotation:function(){this.data.angularVelocity=0},setZeroVelocity:function(){this.data.velocity[0]=0,this.data.velocity[1]=0},setZeroDamping:function(){this.data.damping=0,this.data.angularDamping=0},toLocalFrame:function(a,b){return this.data.toLocalFrame(a,b)},toWorldFrame:function(a,b){return this.data.toWorldFrame(a,b)},rotateLeft:function(a){this.data.angularVelocity=this.world.pxm(-a)},rotateRight:function(a){this.data.angularVelocity=this.world.pxm(a)},moveForward:function(a){var b=this.world.pxmi(-a),c=this.data.angle+Math.PI/2;this.data.velocity[0]=b*Math.cos(c),this.data.velocity[1]=b*Math.sin(c)},moveBackward:function(a){var b=this.world.pxmi(-a),c=this.data.angle+Math.PI/2;this.data.velocity[0]=-(b*Math.cos(c)),this.data.velocity[1]=-(b*Math.sin(c))},thrust:function(a){var b=this.world.pxmi(-a),c=this.data.angle+Math.PI/2;this.data.force[0]+=b*Math.cos(c),this.data.force[1]+=b*Math.sin(c)},thrustLeft:function(a){var b=this.world.pxmi(-a),c=this.data.angle;this.data.force[0]+=b*Math.cos(c),this.data.force[1]+=b*Math.sin(c)},thrustRight:function(a){var b=this.world.pxmi(-a),c=this.data.angle;this.data.force[0]-=b*Math.cos(c),this.data.force[1]-=b*Math.sin(c)},reverse:function(a){var b=this.world.pxmi(-a),c=this.data.angle+Math.PI/2;this.data.force[0]-=b*Math.cos(c),this.data.force[1]-=b*Math.sin(c)},moveLeft:function(a){this.data.velocity[0]=this.world.pxmi(-a)},moveRight:function(a){this.data.velocity[0]=this.world.pxmi(a)},moveUp:function(a){this.data.velocity[1]=this.world.pxmi(-a)},moveDown:function(a){this.data.velocity[1]=this.world.pxmi(a)},preUpdate:function(){this.dirty=!0,this.removeNextStep&&(this.removeFromWorld(),this.removeNextStep=!1)},postUpdate:function(){this.sprite.x=this.world.mpxi(this.data.position[0])+this.offset.x,this.sprite.y=this.world.mpxi(this.data.position[1])+this.offset.y,this.fixedRotation||(this.sprite.rotation=this.data.angle),this.debugBody&&this.debugBody.updateSpriteTransform(),this.dirty=!1},reset:function(a,b,c,d){void 0===c&&(c=!1),void 0===d&&(d=!1),this.setZeroForce(),this.setZeroVelocity(),this.setZeroRotation(),c&&this.setZeroDamping(),d&&(this.mass=1),this.x=a,this.y=b},addToWorld:function(){if(this.game.physics.p2._toRemove)for(var a=0;ad;d+=2)c.push([b[d],b[d+1]]);var f=c.length-1;c[f][0]===c[0][0]&&c[f][1]===c[0][1]&&c.pop();for(var g=0;g=0;c--)this.data.shapes[c].material=a;else b.material=a},shapeChanged:function(){this.debugBody&&this.debugBody.draw()},addPhaserPolygon:function(a,b){for(var c=this.game.cache.getPhysicsData(a,b),d=[],e=0;e=0?o>n:n>o;e=o>=0?++n:--n)k=b.vertices[e],p2.vec2.rotate(m,k,a),l.push([(m[0]+i[0])*this.ppu,-(m[1]+i[1])*this.ppu]);this.drawConvex(j,l,b.triangles,f,c,g,this.settings.debugPolygons,[i[0]*this.ppu,-i[1]*this.ppu])}d++}}},drawRectangle:function(a,b,c,d,e,f,g,h,i){void 0===i&&(i=1),void 0===g&&(g=0),a.lineStyle(i,g,1),a.beginFill(h),a.drawRect(b-e/2,c-f/2,e,f)},drawCircle:function(a,b,c,d,e,f,g){void 0===g&&(g=1),void 0===f&&(f=16777215),a.lineStyle(g,0,1),a.beginFill(f,1),a.drawCircle(b,c,2*-e),a.endFill(),a.moveTo(b,c),a.lineTo(b+e*Math.cos(-d),c+e*Math.sin(-d))},drawLine:function(a,b,c,d){void 0===d&&(d=1),void 0===c&&(c=0),a.lineStyle(5*d,c,1),a.moveTo(-b/2,0),a.lineTo(b/2,0)},drawConvex:function(a,b,c,d,e,f,g,h){var i,j,k,l,m,n,o,p,q,r,s;if(void 0===f&&(f=1),void 0===d&&(d=0),g){for(i=[16711680,65280,255],j=0;j!==b.length+1;)l=b[j%b.length],m=b[(j+1)%b.length],o=l[0],r=l[1],p=m[0],s=m[1],a.lineStyle(f,i[j%i.length],1),a.moveTo(o,-r),a.lineTo(p,-s),a.drawCircle(o,-r,2*f),j++;return a.lineStyle(f,0,1),a.drawCircle(h[0],h[1],2*f)}for(a.lineStyle(f,d,1),a.beginFill(e),j=0;j!==b.length;)k=b[j],n=k[0],q=k[1],0===j?a.moveTo(n,-q):a.lineTo(n,-q),j++;return a.endFill(),b.length>2?(a.moveTo(b[b.length-1][0],-b[b.length-1][1]),a.lineTo(b[0][0],-b[0][1])):void 0},drawPath:function(a,b,c,d,e){var f,g,h,i,j,k,l,m,n,o,p,q,r;for(void 0===e&&(e=1),void 0===c&&(c=0),a.lineStyle(e,c,1),"number"==typeof d&&a.beginFill(d),h=null,i=null,g=0;g2&&"number"==typeof d&&(a.moveTo(b[b.length-1][0],b[b.length-1][1]),a.lineTo(b[0][0],b[0][1]))},drawPlane:function(a,b,c,d,e,f,g,h,i,j){var k,l,m;void 0===f&&(f=1),void 0===d&&(d=16777215),a.lineStyle(f,e,11),a.beginFill(d),k=i,a.moveTo(b,-c),l=b+Math.cos(j)*this.game.width,m=c+Math.sin(j)*this.game.height,a.lineTo(l,-m),a.moveTo(b,-c),l=b+Math.cos(j)*-this.game.width,m=c+Math.sin(j)*-this.game.height,a.lineTo(l,-m)},drawCapsule:function(a,b,c,d,e,f,g,h,i){void 0===i&&(i=1),void 0===g&&(g=0),a.lineStyle(i,g,1);var j=Math.cos(d),k=Math.sin(d);a.beginFill(h,1),a.drawCircle(-e/2*j+b,-e/2*k+c,2*-f),a.drawCircle(e/2*j+b,e/2*k+c,2*-f),a.endFill(),a.lineStyle(i,g,0),a.beginFill(h,1),a.moveTo(-e/2*j+f*k+b,-e/2*k+f*j+c),a.lineTo(e/2*j+f*k+b,e/2*k+f*j+c),a.lineTo(e/2*j-f*k+b,e/2*k-f*j+c),a.lineTo(-e/2*j-f*k+b,-e/2*k-f*j+c),a.endFill(),a.lineStyle(i,g,1),a.moveTo(-e/2*j+f*k+b,-e/2*k+f*j+c),a.lineTo(e/2*j+f*k+b,e/2*k+f*j+c),a.moveTo(-e/2*j-f*k+b,-e/2*k-f*j+c),a.lineTo(e/2*j-f*k+b,e/2*k-f*j+c)},randomPastelHex:function(){var a,b,c,d;return c=[255,255,255],d=Math.floor(256*Math.random()),b=Math.floor(256*Math.random()),a=Math.floor(256*Math.random()),d=Math.floor((d+3*c[0])/4),b=Math.floor((b+3*c[1])/4),a=Math.floor((a+3*c[2])/4),this.rgbToHex(d,b,a)},rgbToHex:function(a,b,c){return this.componentToHex(a)+this.componentToHex(b)+this.componentToHex(c)},componentToHex:function(a){var b;return b=a.toString(16),2===b.length?b:b+"0"}}),c.Physics.P2.Spring=function(a,b,c,d,e,f,g,h,i,j){this.game=a.game,this.world=a,void 0===d&&(d=1),void 0===e&&(e=100),void 0===f&&(f=1),d=a.pxm(d);var k={restLength:d,stiffness:e,damping:f};"undefined"!=typeof g&&null!==g&&(k.worldAnchorA=[a.pxm(g[0]),a.pxm(g[1])]),"undefined"!=typeof h&&null!==h&&(k.worldAnchorB=[a.pxm(h[0]),a.pxm(h[1])]),"undefined"!=typeof i&&null!==i&&(k.localAnchorA=[a.pxm(i[0]),a.pxm(i[1])]),"undefined"!=typeof j&&null!==j&&(k.localAnchorB=[a.pxm(j[0]),a.pxm(j[1])]),this.data=new p2.LinearSpring(b,c,k),this.data.parent=this},c.Physics.P2.Spring.prototype.constructor=c.Physics.P2.Spring,c.Physics.P2.RotationalSpring=function(a,b,c,d,e,f){this.game=a.game,this.world=a,void 0===d&&(d=null),void 0===e&&(e=100),void 0===f&&(f=1),d&&(d=a.pxm(d));var g={restAngle:d,stiffness:e,damping:f};this.data=new p2.RotationalSpring(b,c,g),this.data.parent=this},c.Physics.P2.Spring.prototype.constructor=c.Physics.P2.Spring,c.Physics.P2.Material=function(a){this.name=a,p2.Material.call(this)},c.Physics.P2.Material.prototype=Object.create(p2.Material.prototype),c.Physics.P2.Material.prototype.constructor=c.Physics.P2.Material,c.Physics.P2.ContactMaterial=function(a,b,c){p2.ContactMaterial.call(this,a,b,c)},c.Physics.P2.ContactMaterial.prototype=Object.create(p2.ContactMaterial.prototype),c.Physics.P2.ContactMaterial.prototype.constructor=c.Physics.P2.ContactMaterial,c.Physics.P2.CollisionGroup=function(a){this.mask=a},c.Physics.P2.DistanceConstraint=function(a,b,c,d,e,f,g){void 0===d&&(d=100),void 0===e&&(e=[0,0]),void 0===f&&(f=[0,0]),void 0===g&&(g=Number.MAX_VALUE),this.game=a.game,this.world=a,d=a.pxm(d),e=[a.pxmi(e[0]),a.pxmi(e[1])],f=[a.pxmi(f[0]),a.pxmi(f[1])];var h={distance:d,localAnchorA:e,localAnchorB:f,maxForce:g};p2.DistanceConstraint.call(this,b,c,h)},c.Physics.P2.DistanceConstraint.prototype=Object.create(p2.DistanceConstraint.prototype),c.Physics.P2.DistanceConstraint.prototype.constructor=c.Physics.P2.DistanceConstraint,c.Physics.P2.GearConstraint=function(a,b,c,d,e){void 0===d&&(d=0),void 0===e&&(e=1),this.game=a.game,this.world=a;var f={angle:d,ratio:e};p2.GearConstraint.call(this,b,c,f)},c.Physics.P2.GearConstraint.prototype=Object.create(p2.GearConstraint.prototype),c.Physics.P2.GearConstraint.prototype.constructor=c.Physics.P2.GearConstraint,c.Physics.P2.LockConstraint=function(a,b,c,d,e,f){void 0===d&&(d=[0,0]),void 0===e&&(e=0),void 0===f&&(f=Number.MAX_VALUE),this.game=a.game,this.world=a,d=[a.pxm(d[0]),a.pxm(d[1])];var g={localOffsetB:d,localAngleB:e,maxForce:f};p2.LockConstraint.call(this,b,c,g)},c.Physics.P2.LockConstraint.prototype=Object.create(p2.LockConstraint.prototype),c.Physics.P2.LockConstraint.prototype.constructor=c.Physics.P2.LockConstraint,c.Physics.P2.PrismaticConstraint=function(a,b,c,d,e,f,g,h){void 0===d&&(d=!0),void 0===e&&(e=[0,0]),void 0===f&&(f=[0,0]),void 0===g&&(g=[0,0]),void 0===h&&(h=Number.MAX_VALUE),this.game=a.game,this.world=a,e=[a.pxmi(e[0]),a.pxmi(e[1])],f=[a.pxmi(f[0]),a.pxmi(f[1])];var i={localAnchorA:e,localAnchorB:f,localAxisA:g,maxForce:h,disableRotationalLock:!d};p2.PrismaticConstraint.call(this,b,c,i)},c.Physics.P2.PrismaticConstraint.prototype=Object.create(p2.PrismaticConstraint.prototype),c.Physics.P2.PrismaticConstraint.prototype.constructor=c.Physics.P2.PrismaticConstraint,c.Physics.P2.RevoluteConstraint=function(a,b,c,d,e,f,g){void 0===f&&(f=Number.MAX_VALUE),void 0===g&&(g=null),this.game=a.game,this.world=a,c=[a.pxmi(c[0]),a.pxmi(c[1])],e=[a.pxmi(e[0]),a.pxmi(e[1])],g&&(g=[a.pxmi(g[0]),a.pxmi(g[1])]);var h={worldPivot:g,localPivotA:c,localPivotB:e,maxForce:f};p2.RevoluteConstraint.call(this,b,d,h)},c.Physics.P2.RevoluteConstraint.prototype=Object.create(p2.RevoluteConstraint.prototype),c.Physics.P2.RevoluteConstraint.prototype.constructor=c.Physics.P2.RevoluteConstraint,c.ImageCollection=function(a,b,c,d,e,f,g){(void 0===c||0>=c)&&(c=32),(void 0===d||0>=d)&&(d=32),void 0===e&&(e=0),void 0===f&&(f=0),this.name=a,this.firstgid=0|b,this.imageWidth=0|c,this.imageHeight=0|d,this.imageMargin=0|e,this.imageSpacing=0|f,this.properties=g||{},this.images=[],this.total=0},c.ImageCollection.prototype={containsImageIndex:function(a){return a>=this.firstgid&&athis.right||b>this.bottom)},intersects:function(a,b,c,d){return c<=this.worldX?!1:d<=this.worldY?!1:a>=this.worldX+this.width?!1:b>=this.worldY+this.height?!1:!0},setCollisionCallback:function(a,b){this.collisionCallback=a,this.collisionCallbackContext=b},destroy:function(){this.collisionCallback=null,this.collisionCallbackContext=null,this.properties=null},setCollision:function(a,b,c,d){this.collideLeft=a,this.collideRight=b,this.collideUp=c,this.collideDown=d,this.faceLeft=a,this.faceRight=b,this.faceTop=c,this.faceBottom=d},resetCollision:function(){this.collideLeft=!1,this.collideRight=!1,this.collideUp=!1,this.collideDown=!1,this.faceTop=!1,this.faceBottom=!1,this.faceLeft=!1,this.faceRight=!1},isInteresting:function(a,b){return a&&b?this.collideLeft||this.collideRight||this.collideUp||this.collideDown||this.faceTop||this.faceBottom||this.faceLeft||this.faceRight||this.collisionCallback:a?this.collideLeft||this.collideRight||this.collideUp||this.collideDown:b?this.faceTop||this.faceBottom||this.faceLeft||this.faceRight:!1},copy:function(a){this.index=a.index,this.alpha=a.alpha,this.properties=a.properties,this.collideUp=a.collideUp,this.collideDown=a.collideDown,this.collideLeft=a.collideLeft,this.collideRight=a.collideRight,this.collisionCallback=a.collisionCallback,this.collisionCallbackContext=a.collisionCallbackContext}},c.Tile.prototype.constructor=c.Tile,Object.defineProperty(c.Tile.prototype,"collides",{get:function(){return this.collideLeft||this.collideRight||this.collideUp||this.collideDown}}),Object.defineProperty(c.Tile.prototype,"canCollide",{get:function(){return this.collideLeft||this.collideRight||this.collideUp||this.collideDown||this.collisionCallback}}),Object.defineProperty(c.Tile.prototype,"left",{get:function(){return this.worldX}}),Object.defineProperty(c.Tile.prototype,"right",{get:function(){return this.worldX+this.width}}),Object.defineProperty(c.Tile.prototype,"top",{get:function(){return this.worldY}}),Object.defineProperty(c.Tile.prototype,"bottom",{get:function(){return this.worldY+this.height}}),c.Tilemap=function(a,b,d,e,f,g){this.game=a,this.key=b;var h=c.TilemapParser.parse(this.game,b,d,e,f,g);null!==h&&(this.width=h.width,this.height=h.height,this.tileWidth=h.tileWidth,this.tileHeight=h.tileHeight,this.orientation=h.orientation,this.format=h.format,this.version=h.version,this.properties=h.properties,this.widthInPixels=h.widthInPixels,this.heightInPixels=h.heightInPixels,this.layers=h.layers,this.tilesets=h.tilesets,this.imagecollections=h.imagecollections,this.tiles=h.tiles,this.objects=h.objects,this.collideIndexes=[],this.collision=h.collision,this.images=h.images,this.currentLayer=0,this.debugMap=[],this._results=[],this._tempA=0,this._tempB=0)},c.Tilemap.CSV=0,c.Tilemap.TILED_JSON=1,c.Tilemap.NORTH=0,c.Tilemap.EAST=1,c.Tilemap.SOUTH=2,c.Tilemap.WEST=3,c.Tilemap.prototype={create:function(a,b,c,d,e,f){return void 0===f&&(f=this.game.world),this.width=b,this.height=c,this.setTileSize(d,e),this.layers.length=0,this.createBlankLayer(a,b,c,d,e,f)},setTileSize:function(a,b){this.tileWidth=a,this.tileHeight=b,this.widthInPixels=this.width*a,this.heightInPixels=this.height*b},addTilesetImage:function(a,b,d,e,f,g,h){if(void 0===a)return null;void 0===d&&(d=this.tileWidth),void 0===e&&(e=this.tileHeight),void 0===f&&(f=0),void 0===g&&(g=0),void 0===h&&(h=0),0===d&&(d=32),0===e&&(e=32);var i=null;if((void 0===b||null===b)&&(b=a),b instanceof c.BitmapData)i=b.canvas;else{if(!this.game.cache.checkImageKey(b))return console.warn('Phaser.Tilemap.addTilesetImage: Invalid image key given: "'+b+'"'),null;i=this.game.cache.getImage(b)}var j=this.getTilesetIndex(a);if(null===j&&this.format===c.Tilemap.TILED_JSON)return console.warn('Phaser.Tilemap.addTilesetImage: No data found in the JSON matching the tileset name: "'+a+'"'), -null;if(this.tilesets[j])return this.tilesets[j].setImage(i),this.tilesets[j];var k=new c.Tileset(a,h,d,e,f,g,{});k.setImage(i),this.tilesets.push(k);for(var l=this.tilesets.length-1,m=f,n=f,o=0,p=0,q=0,r=h;rl;l++)if(-1!==a.indexOf(this._results[l].index)){j=new g.customClass(this.game,this._results[l].worldX,this._results[l].worldY,d);for(var n in g)j[n]=g[n];f.add(j),k++}if(1===b.length)for(l=0;l1)for(l=0;lthis.layers.length?void console.warn("Tilemap.createLayer: Invalid layer ID given: "+g):f?e.add(new c.TilemapLayerGL(this.game,this,g,b,d)):e.add(new c.TilemapLayer(this.game,this,g,b,d))},createBlankLayer:function(a,b,d,e,f,g){if(void 0===g&&(g=this.game.world),null!==this.getLayerIndex(a))return void console.warn("Tilemap.createBlankLayer: Layer with matching name already exists");for(var h,i={name:a,x:0,y:0,width:b,height:d,widthInPixels:b*e,heightInPixels:d*f,alpha:1,visible:!0,properties:{},indexes:[],callbacks:[],bodies:[],data:null},j=[],k=0;d>k;k++){h=[];for(var l=0;b>l;l++)h.push(new c.Tile(i,-1,l,k,e,f));j.push(h)}i.data=j,this.layers.push(i),this.currentLayer=this.layers.length-1;var m=i.widthInPixels,n=i.heightInPixels;m>this.game.width&&(m=this.game.width),n>this.game.height&&(n=this.game.height);var j=new c.TilemapLayer(this.game,this,this.layers.length-1,m,n);return j.name=a,g.add(j)},getIndex:function(a,b){for(var c=0;ce;e++)this.layers[d].callbacks[a[e]]={callback:b,callbackContext:c}},setTileLocationCallback:function(a,b,c,d,e,f,g){if(g=this.getLayer(g),this.copy(a,b,c,d,g),!(this._results.length<2))for(var h=1;hb)){for(var f=a;b>=f;f++)this.setCollisionByIndex(f,c,d,!1);e&&this.calculateFaces(d)}},setCollisionByExclusion:function(a,b,c,d){void 0===b&&(b=!0),void 0===d&&(d=!0),c=this.getLayer(c);for(var e=0,f=this.tiles.length;f>e;e++)-1===a.indexOf(e)&&this.setCollisionByIndex(e,b,c,!1);d&&this.calculateFaces(c)},setCollisionByIndex:function(a,b,c,d){if(void 0===b&&(b=!0),void 0===c&&(c=this.currentLayer),void 0===d&&(d=!0),b)this.collideIndexes.push(a);else{var e=this.collideIndexes.indexOf(a);e>-1&&this.collideIndexes.splice(e,1)}for(var f=0;ff;f++)for(var h=0,i=this.layers[a].width;i>h;h++){var j=this.layers[a].data[f][h];j&&(b=this.getTileAbove(a,h,f),c=this.getTileBelow(a,h,f),d=this.getTileLeft(a,h,f),e=this.getTileRight(a,h,f),j.collides&&(j.faceTop=!0,j.faceBottom=!0,j.faceLeft=!0,j.faceRight=!0),b&&b.collides&&(j.faceTop=!1),c&&c.collides&&(j.faceBottom=!1),d&&d.collides&&(j.faceLeft=!1),e&&e.collides&&(j.faceRight=!1))}},getTileAbove:function(a,b,c){return c>0?this.layers[a].data[c-1][b]:null},getTileBelow:function(a,b,c){return c0?this.layers[a].data[c][b-1]:null},getTileRight:function(a,b,c){return b-1},removeTile:function(a,b,d){if(d=this.getLayer(d),a>=0&&a=0&&b=0&&b=0&&d-1?this.layers[e].data[d][b].setCollision(!0,!0,!0,!0):this.layers[e].data[d][b].resetCollision(),this.layers[e].dirty=!0,this.calculateFaces(e),this.layers[e].data[d][b]}return null},putTileWorldXY:function(a,b,c,d,e,f){return f=this.getLayer(f),b=this.game.math.snapToFloor(b,d)/d,c=this.game.math.snapToFloor(c,e)/e,this.putTile(a,b,c,f)},searchTileIndex:function(a,b,c,d){void 0===b&&(b=0),void 0===c&&(c=!1),d=this.getLayer(d);var e=0;if(c){for(var f=this.layers[d].height-1;f>=0;f--)for(var g=this.layers[d].width-1;g>=0;g--)if(this.layers[d].data[f][g].index===a){if(e===b)return this.layers[d].data[f][g];e++}}else for(var f=0;f=0&&a=0&&ba&&(a=0),0>b&&(b=0),c>this.layers[e].width&&(c=this.layers[e].width),d>this.layers[e].height&&(d=this.layers[e].height),this._results.length=0,this._results.push({x:a,y:b,width:c,height:d,layer:e});for(var f=b;b+d>f;f++)for(var g=a;a+c>g;g++)this._results.push(this.layers[e].data[f][g]);return this._results},paste:function(a,b,c,d){if(void 0===a&&(a=0),void 0===b&&(b=0),d=this.getLayer(d),c&&!(c.length<2)){for(var e=a-c[1].x,f=b-c[1].y,g=1;g1?this.debugMap[this.layers[this.currentLayer].data[c][d]]?b.push("background: "+this.debugMap[this.layers[this.currentLayer].data[c][d]]):b.push("background: #ffffff"):b.push("background: rgb(0, 0, 0)");a+="\n"}b[0]=a,console.log.apply(console,b)},destroy:function(){this.removeAllLayers(),this.data=[],this.game=null}},c.Tilemap.prototype.constructor=c.Tilemap,Object.defineProperty(c.Tilemap.prototype,"layer",{get:function(){return this.layers[this.currentLayer]},set:function(a){a!==this.currentLayer&&this.setLayer(a)}}),c.TilemapLayer=function(a,b,d,e,f){e|=0,f|=0,c.Sprite.call(this,a,0,0),this.map=b,this.index=d,this.layer=b.layers[d],this.canvas=PIXI.CanvasPool.create(this,e,f),this.context=this.canvas.getContext("2d"),this.setTexture(new PIXI.Texture(new PIXI.BaseTexture(this.canvas))),this.type=c.TILEMAPLAYER,this.physicsType=c.TILEMAPLAYER,this.renderSettings={enableScrollDelta:!1,overdrawRatio:.2,copyCanvas:null},this.debug=!1,this.exists=!0,this.debugSettings={missingImageFill:"rgb(255,255,255)",debuggedTileOverfill:"rgba(0,255,0,0.4)",forceFullRedraw:!0,debugAlpha:.5,facingEdgeStroke:"rgba(0,255,0,1)",collidingTileOverfill:"rgba(0,255,0,0.2)"},this.scrollFactorX=1,this.scrollFactorY=1,this.dirty=!0,this.rayStepRate=4,this._wrap=!1,this._mc={scrollX:0,scrollY:0,renderWidth:0,renderHeight:0,tileWidth:b.tileWidth,tileHeight:b.tileHeight,cw:b.tileWidth,ch:b.tileHeight,tilesets:[]},this._scrollX=0,this._scrollY=0,this._results=[],a.device.canvasBitBltShift||(this.renderSettings.copyCanvas=c.TilemapLayer.ensureSharedCopyCanvas()),this.fixedToCamera=!0},c.TilemapLayer.prototype=Object.create(c.Sprite.prototype),c.TilemapLayer.prototype.constructor=c.TilemapLayer,c.TilemapLayer.prototype.preUpdateCore=c.Component.Core.preUpdate,c.TilemapLayer.sharedCopyCanvas=null,c.TilemapLayer.ensureSharedCopyCanvas=function(){return this.sharedCopyCanvas||(this.sharedCopyCanvas=c.Canvas.create(2,2)),this.sharedCopyCanvas},c.TilemapLayer.prototype.preUpdate=function(){return this.preUpdateCore()},c.TilemapLayer.prototype.postUpdate=function(){this.fixedToCamera&&(this.position.x=(this.game.camera.view.x+this.cameraOffset.x)/this.game.camera.scale.x,this.position.y=(this.game.camera.view.y+this.cameraOffset.y)/this.game.camera.scale.y),this._scrollX=this.game.camera.view.x*this.scrollFactorX/this.scale.x,this._scrollY=this.game.camera.view.y*this.scrollFactorY/this.scale.y},c.TilemapLayer.prototype._renderCanvas=function(a){this.fixedToCamera&&(this.position.x=(this.game.camera.view.x+this.cameraOffset.x)/this.game.camera.scale.x,this.position.y=(this.game.camera.view.y+this.cameraOffset.y)/this.game.camera.scale.y),this._scrollX=this.game.camera.view.x*this.scrollFactorX/this.scale.x,this._scrollY=this.game.camera.view.y*this.scrollFactorY/this.scale.y,this.render(),PIXI.Sprite.prototype._renderCanvas.call(this,a)},c.TilemapLayer.prototype._renderWebGL=function(a){this.fixedToCamera&&(this.position.x=(this.game.camera.view.x+this.cameraOffset.x)/this.game.camera.scale.x,this.position.y=(this.game.camera.view.y+this.cameraOffset.y)/this.game.camera.scale.y),this._scrollX=this.game.camera.view.x*this.scrollFactorX/this.scale.x,this._scrollY=this.game.camera.view.y*this.scrollFactorY/this.scale.y,this.render(),PIXI.Sprite.prototype._renderWebGL.call(this,a)},c.TilemapLayer.prototype.destroy=function(){PIXI.CanvasPool.remove(this),c.Component.Destroy.prototype.destroy.call(this)},c.TilemapLayer.prototype.resize=function(a,b){this.canvas.width=a,this.canvas.height=b,this.texture.frame.resize(a,b),this.texture.width=a,this.texture.height=b,this.texture.crop.width=a,this.texture.crop.height=b,this.texture.baseTexture.width=a,this.texture.baseTexture.height=b,this.texture.baseTexture.dirty(),this.texture.requiresUpdate=!0,this.texture._updateUvs(),this.dirty=!0},c.TilemapLayer.prototype.resizeWorld=function(){this.game.world.setBounds(0,0,this.layer.widthInPixels*this.scale.x,this.layer.heightInPixels*this.scale.y)},c.TilemapLayer.prototype._fixX=function(a){return 1===this.scrollFactorX||0===this.scrollFactorX&&0===this.position.x?a:0===this.scrollFactorX&&0!==this.position.x?a-this.position.x:this._scrollX+(a-this._scrollX/this.scrollFactorX)},c.TilemapLayer.prototype._unfixX=function(a){return 1===this.scrollFactorX?a:this._scrollX/this.scrollFactorX+(a-this._scrollX)},c.TilemapLayer.prototype._fixY=function(a){return 1===this.scrollFactorY||0===this.scrollFactorY&&0===this.position.y?a:0===this.scrollFactorY&&0!==this.position.y?a-this.position.y:this._scrollY+(a-this._scrollY/this.scrollFactorY)},c.TilemapLayer.prototype._unfixY=function(a){return 1===this.scrollFactorY?a:this._scrollY/this.scrollFactorY+(a-this._scrollY)},c.TilemapLayer.prototype.getTileX=function(a){return Math.floor(this._fixX(a)/this._mc.tileWidth)},c.TilemapLayer.prototype.getTileY=function(a){return Math.floor(this._fixY(a)/this._mc.tileHeight)},c.TilemapLayer.prototype.getTileXY=function(a,b,c){return c.x=this.getTileX(a),c.y=this.getTileY(b),c},c.TilemapLayer.prototype.getRayCastTiles=function(a,b,c,d){b||(b=this.rayStepRate),void 0===c&&(c=!1),void 0===d&&(d=!1);var e=this.getTiles(a.x,a.y,a.width,a.height,c,d);if(0===e.length)return[];for(var f=a.coordinatesOnLine(b),g=[],h=0;hl;l++)for(var m=h;h+j>m;m++){var n=this.layer.data[l];n&&n[m]&&(g||n[m].isInteresting(e,f))&&this._results.push(n[m])}return this._results.slice()},c.TilemapLayer.prototype.resolveTileset=function(a){var b=this._mc.tilesets;if(2e3>a)for(;b.lengthb&&(g=-b,i=0),0>c&&(h=-c,j=0);var k=this.renderSettings.copyCanvas;if(k){(k.width=c&&(c=Math.max(0,c),e=Math.min(h-1,e)),f>=d&&(d=Math.max(0,d),f=Math.min(i-1,f)));var n,o,p,q,r,s,t=c*j-a,u=d*k-b,v=(c+(1<<20)*h)%h,w=(d+(1<<20)*i)%i;for(g.fillStyle=this.tileColor,q=w,s=f-d,o=u;s>=0;q++,s--,o+=k){q>=i&&(q-=i);var x=this.layer.data[q];for(p=v,r=e-c,n=t;r>=0;p++,r--,n+=j){p>=h&&(p-=h);var y=x[p];if(y&&!(y.index<0)){var z=y.index,A=l[z];void 0===A&&(A=this.resolveTileset(z)),y.alpha===m||this.debug||(g.globalAlpha=y.alpha,m=y.alpha),A?y.rotation||y.flipped?(g.save(),g.translate(n+y.centerX,o+y.centerY),g.rotate(y.rotation),y.flipped&&g.scale(-1,1),A.draw(g,-y.centerX,-y.centerY,z),g.restore()):A.draw(g,n,o,z):this.debugSettings.missingImageFill&&(g.fillStyle=this.debugSettings.missingImageFill,g.fillRect(n,o,j,k)),y.debug&&this.debugSettings.debuggedTileOverfill&&(g.fillStyle=this.debugSettings.debuggedTileOverfill,g.fillRect(n,o,j,k))}}}},c.TilemapLayer.prototype.renderDeltaScroll=function(a,b){var c=this._mc.scrollX,d=this._mc.scrollY,e=this.canvas.width,f=this.canvas.height,g=this._mc.tileWidth,h=this._mc.tileHeight,i=0,j=-g,k=0,l=-h;if(0>a?(i=e+a,j=e-1):a>0&&(j=a),0>b?(k=f+b,l=f-1):b>0&&(l=b),this.shiftCanvas(this.context,a,b),i=Math.floor((i+c)/g),j=Math.floor((j+c)/g),k=Math.floor((k+d)/h),l=Math.floor((l+d)/h),j>=i){this.context.clearRect(i*g-c,0,(j-i+1)*g,f);var m=Math.floor((0+d)/h),n=Math.floor((f-1+d)/h);this.renderRegion(c,d,i,m,j,n)}if(l>=k){this.context.clearRect(0,k*h-d,e,(l-k+1)*h);var o=Math.floor((0+c)/g),p=Math.floor((e-1+c)/g);this.renderRegion(c,d,o,k,p,l)}},c.TilemapLayer.prototype.renderFull=function(){var a=this._mc.scrollX,b=this._mc.scrollY,c=this.canvas.width,d=this.canvas.height,e=this._mc.tileWidth,f=this._mc.tileHeight,g=Math.floor(a/e),h=Math.floor((c-1+a)/e),i=Math.floor(b/f),j=Math.floor((d-1+b)/f);this.context.clearRect(0,0,c,d),this.renderRegion(a,b,g,i,h,j)},c.TilemapLayer.prototype.render=function(){var a=!1;if(this.visible){(this.dirty||this.layer.dirty)&&(this.layer.dirty=!1,a=!0);var b=this.canvas.width,c=this.canvas.height,d=0|this._scrollX,e=0|this._scrollY,f=this._mc,g=f.scrollX-d,h=f.scrollY-e;if(a||0!==g||0!==h||f.renderWidth!==b||f.renderHeight!==c)return this.context.save(),f.scrollX=d,f.scrollY=e,(f.renderWidth!==b||f.renderHeight!==c)&&(f.renderWidth=b,f.renderHeight=c),this.debug&&(this.context.globalAlpha=this.debugSettings.debugAlpha,this.debugSettings.forceFullRedraw&&(a=!0)),!a&&this.renderSettings.enableScrollDelta&&Math.abs(g)+Math.abs(h)=0;d++,f--,b+=o){d>=m&&(d-=m);var x=this.layer.data[d];for(c=v,e=q-p,a=t;e>=0;c++,e--,a+=n){c>=l&&(c-=l);var y=x[c];!y||y.index<0||!y.collides||(this.debugSettings.collidingTileOverfill&&(i.fillStyle=this.debugSettings.collidingTileOverfill,i.fillRect(a,b,this._mc.cw,this._mc.ch)),this.debugSettings.facingEdgeStroke&&(i.beginPath(),y.faceTop&&(i.moveTo(a,b),i.lineTo(a+this._mc.cw,b)),y.faceBottom&&(i.moveTo(a,b+this._mc.ch),i.lineTo(a+this._mc.cw,b+this._mc.ch)),y.faceLeft&&(i.moveTo(a,b),i.lineTo(a,b+this._mc.ch)),y.faceRight&&(i.moveTo(a+this._mc.cw,b),i.lineTo(a+this._mc.cw,b+this._mc.ch)),i.stroke()))}}},Object.defineProperty(c.TilemapLayer.prototype,"wrap",{get:function(){return this._wrap},set:function(a){this._wrap=a,this.dirty=!0}}),Object.defineProperty(c.TilemapLayer.prototype,"scrollX",{get:function(){return this._scrollX},set:function(a){this._scrollX=a}}),Object.defineProperty(c.TilemapLayer.prototype,"scrollY",{get:function(){return this._scrollY},set:function(a){this._scrollY=a}}),Object.defineProperty(c.TilemapLayer.prototype,"collisionWidth",{get:function(){return this._mc.cw},set:function(a){this._mc.cw=0|a,this.dirty=!0}}),Object.defineProperty(c.TilemapLayer.prototype,"collisionHeight",{get:function(){return this._mc.ch},set:function(a){this._mc.ch=0|a,this.dirty=!0}}),c.TilemapParser={INSERT_NULL:!1,parse:function(a,b,d,e,f,g){if(void 0===d&&(d=32),void 0===e&&(e=32),void 0===f&&(f=10),void 0===g&&(g=10),void 0===b)return this.getEmptyData();if(null===b)return this.getEmptyData(d,e,f,g);var h=a.cache.getTilemapData(b);if(h){if(h.format===c.Tilemap.CSV)return this.parseCSV(b,h.data,d,e);if(!h.format||h.format===c.Tilemap.TILED_JSON)return this.parseTiledJSON(h.data)}else console.warn("Phaser.TilemapParser.parse - No map data found for key "+b)},parseCSV:function(a,b,d,e){var f=this.getEmptyData();b=b.trim();for(var g=[],h=b.split("\n"),i=h.length,j=0,k=0;kk;k+=4)j[k/4]=(h.charCodeAt(k)|h.charCodeAt(k+1)<<8|h.charCodeAt(k+2)<<16|h.charCodeAt(k+3)<<24)>>>0;g.data=j,delete g.encoding}else if(g.compression){console.warn("TilemapParser.parseTiledJSON - Layer compression is unsupported, skipping layer '"+g.name+"'");continue}var l={name:g.name,x:g.x,y:g.y,width:g.width,height:g.height,widthInPixels:g.width*a.tilewidth,heightInPixels:g.height*a.tileheight,alpha:g.opacity,visible:g.visible,properties:{},indexes:[],callbacks:[],bodies:[]};g.properties&&(l.properties=g.properties);for(var m,n,o,p,q=0,r=[],s=[],t=0,i=g.data.length;i>t;t++){if(m=0,n=!1,p=g.data[t],p>536870912)switch(o=0,p>2147483648&&(p-=2147483648,o+=4),p>1073741824&&(p-=1073741824,o+=2),p>536870912&&(p-=536870912,o+=1),o){case 5:m=Math.PI/2;break;case 6:m=Math.PI;break;case 3:m=3*Math.PI/2;break;case 4:m=0,n=!0;break;case 7:m=Math.PI/2,n=!0;break;case 2:m=Math.PI,n=!0;break;case 1:m=3*Math.PI/2,n=!0}p>0?(r.push(new c.Tile(l,p,q,s.length,a.tilewidth,a.tileheight)),r[r.length-1].rotation=m,r[r.length-1].flipped=n):c.TilemapParser.INSERT_NULL?r.push(null):r.push(new c.Tile(l,-1,q,s.length,a.tilewidth,a.tileheight)),q++,q===g.width&&(s.push(r),q=0,r=[])}l.data=s,e.push(l)}d.layers=e;for(var u=[],f=0;fG;G++)if(F.objects[G].gid){var H={gid:F.objects[G].gid,name:F.objects[G].name,type:F.objects[G].hasOwnProperty("type")?F.objects[G].type:"",x:F.objects[G].x,y:F.objects[G].y,visible:F.objects[G].visible,properties:F.objects[G].properties};F.objects[G].rotation&&(H.rotation=F.objects[G].rotation),D[F.name].push(H)}else if(F.objects[G].polyline){var H={name:F.objects[G].name,type:F.objects[G].type,x:F.objects[G].x,y:F.objects[G].y,width:F.objects[G].width,height:F.objects[G].height,visible:F.objects[G].visible,properties:F.objects[G].properties};F.objects[G].rotation&&(H.rotation=F.objects[G].rotation),H.polyline=[];for(var I=0;I=c)&&(c=32),(void 0===d||0>=d)&&(d=32),void 0===e&&(e=0),void 0===f&&(f=0),this.name=a,this.firstgid=0|b,this.tileWidth=0|c,this.tileHeight=0|d,this.tileMargin=0|e,this.tileSpacing=0|f,this.properties=g||{},this.image=null,this.rows=0,this.columns=0,this.total=0,this.drawCoords=[]},c.Tileset.prototype={draw:function(a,b,c,d){var e=d-this.firstgid<<1;e>=0&&e+1=this.firstgid&&a=this._timer)if(this._timer=this.game.time.time+this.frequency*this.game.time.slowMotion,0!==this._flowTotal)if(this._flowQuantity>0){for(var a=0;a=this._flowTotal)){this.on=!1;break}}else this.emitParticle()&&(this._counter++,-1!==this._flowTotal&&this._counter>=this._flowTotal&&(this.on=!1));else this.emitParticle()&&(this._counter++,this._quantity>0&&this._counter>=this._quantity&&(this.on=!1));for(var a=this.children.length;a--;)this.children[a].exists&&this.children[a].update()},c.Particles.Arcade.Emitter.prototype.makeParticles=function(a,b,c,d,e){void 0===b&&(b=0),void 0===c&&(c=this.maxParticles),void 0===d&&(d=!1),void 0===e&&(e=!1);var f,g=0,h=a,i=b;for(this._frames=b,c>this.maxParticles&&(this.maxParticles=c);c>g;)Array.isArray(a)&&(h=this.game.rnd.pick(a)),Array.isArray(b)&&(i=this.game.rnd.pick(b)),f=new this.particleClass(this.game,0,0,h,i),this.game.physics.arcade.enable(f,!1),d?(f.body.checkCollision.any=!0,f.body.checkCollision.none=!1):f.body.checkCollision.none=!0,f.body.collideWorldBounds=e,f.body.skipQuadTree=!0,f.exists=!1,f.visible=!1,f.anchor.copyFrom(this.particleAnchor),this.add(f),g++;return this},c.Particles.Arcade.Emitter.prototype.kill=function(){return this.on=!1,this.alive=!1,this.exists=!1,this},c.Particles.Arcade.Emitter.prototype.revive=function(){return this.alive=!0,this.exists=!0,this},c.Particles.Arcade.Emitter.prototype.explode=function(a,b){return this._flowTotal=0,this.start(!0,a,0,b,!1),this},c.Particles.Arcade.Emitter.prototype.flow=function(a,b,c,d,e){return(void 0===c||0===c)&&(c=1),void 0===d&&(d=-1),void 0===e&&(e=!0),c>this.maxParticles&&(c=this.maxParticles),this._counter=0,this._flowQuantity=c,this._flowTotal=d,e?(this.start(!0,a,b,c),this._counter+=c,this.on=!0,this._timer=this.game.time.time+b*this.game.time.slowMotion):this.start(!1,a,b,c),this},c.Particles.Arcade.Emitter.prototype.start=function(a,b,c,d,e){if(void 0===a&&(a=!0),void 0===b&&(b=0),(void 0===c||null===c)&&(c=250),void 0===d&&(d=0),void 0===e&&(e=!1),d>this.maxParticles&&(d=this.maxParticles),this.revive(),this.visible=!0,this.lifespan=b,this.frequency=c,a||e)for(var f=0;d>f;f++)this.emitParticle();else this.on=!0,this._quantity=d,this._counter=0,this._timer=this.game.time.time+c*this.game.time.slowMotion;return this},c.Particles.Arcade.Emitter.prototype.emitParticle=function(a,b,c,d){void 0===a&&(a=null),void 0===b&&(b=null);var e=this.getFirstExists(!1);if(null===e)return!1;var f=this.game.rnd;void 0!==c&&void 0!==d?e.loadTexture(c,d):void 0!==c&&e.loadTexture(c);var g=this.emitX,h=this.emitY;null!==a?g=a:this.width>1&&(g=f.between(this.left,this.right)),null!==b?h=b:this.height>1&&(h=f.between(this.top,this.bottom)),e.reset(g,h),e.angle=0,e.lifespan=this.lifespan,this.particleBringToTop?this.bringToTop(e):this.particleSendToBack&&this.sendToBack(e),this.autoScale?e.setScaleData(this.scaleData):1!==this.minParticleScale||1!==this.maxParticleScale?e.scale.set(f.realInRange(this.minParticleScale,this.maxParticleScale)):(this._minParticleScale.x!==this._maxParticleScale.x||this._minParticleScale.y!==this._maxParticleScale.y)&&e.scale.set(f.realInRange(this._minParticleScale.x,this._maxParticleScale.x),f.realInRange(this._minParticleScale.y,this._maxParticleScale.y)),void 0===d&&(Array.isArray(this._frames)?e.frame=this.game.rnd.pick(this._frames):e.frame=this._frames),this.autoAlpha?e.setAlphaData(this.alphaData):e.alpha=f.realInRange(this.minParticleAlpha,this.maxParticleAlpha),e.blendMode=this.blendMode;var i=e.body;return i.updateBounds(),i.bounce.copyFrom(this.bounce),i.drag.copyFrom(this.particleDrag),i.velocity.x=f.between(this.minParticleSpeed.x,this.maxParticleSpeed.x),i.velocity.y=f.between(this.minParticleSpeed.y,this.maxParticleSpeed.y),i.angularVelocity=f.between(this.minRotation,this.maxRotation),i.gravity.y=this.gravity,i.angularDrag=this.angularDrag,e.onEmit(),!0},c.Particles.Arcade.Emitter.prototype.destroy=function(){this.game.particles.remove(this),c.Group.prototype.destroy.call(this,!0,!1)},c.Particles.Arcade.Emitter.prototype.setSize=function(a,b){return this.area.width=a,this.area.height=b,this},c.Particles.Arcade.Emitter.prototype.setXSpeed=function(a,b){return a=a||0,b=b||0,this.minParticleSpeed.x=a,this.maxParticleSpeed.x=b,this},c.Particles.Arcade.Emitter.prototype.setYSpeed=function(a,b){return a=a||0,b=b||0,this.minParticleSpeed.y=a,this.maxParticleSpeed.y=b,this},c.Particles.Arcade.Emitter.prototype.setRotation=function(a,b){return a=a||0,b=b||0,this.minRotation=a,this.maxRotation=b,this},c.Particles.Arcade.Emitter.prototype.setAlpha=function(a,b,d,e,f){if(void 0===a&&(a=1),void 0===b&&(b=1),void 0===d&&(d=0),void 0===e&&(e=c.Easing.Linear.None),void 0===f&&(f=!1),this.minParticleAlpha=a,this.maxParticleAlpha=b,this.autoAlpha=!1,d>0&&a!==b){var g={v:a},h=this.game.make.tween(g).to({v:b},d,e);h.yoyo(f),this.alphaData=h.generateData(60),this.alphaData.reverse(),this.autoAlpha=!0}return this},c.Particles.Arcade.Emitter.prototype.setScale=function(a,b,d,e,f,g,h){if(void 0===a&&(a=1),void 0===b&&(b=1),void 0===d&&(d=1),void 0===e&&(e=1),void 0===f&&(f=0),void 0===g&&(g=c.Easing.Linear.None),void 0===h&&(h=!1),this.minParticleScale=1,this.maxParticleScale=1,this._minParticleScale.set(a,d),this._maxParticleScale.set(b,e),this.autoScale=!1,f>0&&(a!==b||d!==e)){var i={x:a,y:d},j=this.game.make.tween(i).to({x:b,y:e},f,g);j.yoyo(h),this.scaleData=j.generateData(60),this.scaleData.reverse(),this.autoScale=!0}return this},c.Particles.Arcade.Emitter.prototype.at=function(a){return a.center?(this.emitX=a.center.x,this.emitY=a.center.y):(this.emitX=a.world.x+a.anchor.x*a.width,this.emitY=a.world.y+a.anchor.y*a.height),this},Object.defineProperty(c.Particles.Arcade.Emitter.prototype,"width",{get:function(){return this.area.width},set:function(a){this.area.width=a}}),Object.defineProperty(c.Particles.Arcade.Emitter.prototype,"height",{get:function(){return this.area.height},set:function(a){this.area.height=a}}),Object.defineProperty(c.Particles.Arcade.Emitter.prototype,"x",{get:function(){return this.emitX},set:function(a){this.emitX=a}}),Object.defineProperty(c.Particles.Arcade.Emitter.prototype,"y",{get:function(){return this.emitY},set:function(a){this.emitY=a}}),Object.defineProperty(c.Particles.Arcade.Emitter.prototype,"left",{get:function(){return Math.floor(this.x-this.area.width/2)}}),Object.defineProperty(c.Particles.Arcade.Emitter.prototype,"right",{get:function(){return Math.floor(this.x+this.area.width/2)}}),Object.defineProperty(c.Particles.Arcade.Emitter.prototype,"top",{get:function(){return Math.floor(this.y-this.area.height/2)}}),Object.defineProperty(c.Particles.Arcade.Emitter.prototype,"bottom",{get:function(){return Math.floor(this.y+this.area.height/2)}}),c.Weapon=function(a,b){c.Plugin.call(this,a,b),this.bullets=null,this.autoExpandBulletsGroup=!1,this.autofire=!1,this.shots=0,this.fireLimit=0,this.fireRate=100,this.fireRateVariance=0,this.fireFrom=new c.Rectangle(0,0,1,1),this.fireAngle=c.ANGLE_UP,this.bulletInheritSpriteSpeed=!1,this.bulletAnimation="",this.bulletFrameRandom=!1,this.bulletFrameCycle=!1,this.bulletWorldWrap=!1,this.bulletWorldWrapPadding=0,this.bulletAngleOffset=0,this.bulletAngleVariance=0,this.bulletSpeed=200,this.bulletSpeedVariance=0,this.bulletLifespan=0,this.bulletKillDistance=0,this.bulletGravity=new c.Point(0,0),this.bulletRotateToVelocity=!1,this.bulletKey="",this.bulletFrame="",this._bulletClass=c.Bullet,this._bulletCollideWorldBounds=!1,this._bulletKillType=c.Weapon.KILL_WORLD_BOUNDS,this._data={customBody:!1,width:0,height:0,offsetX:0,offsetY:0},this.bounds=new c.Rectangle,this.bulletBounds=a.world.bounds,this.bulletFrames=[],this.bulletFrameIndex=0,this.anims={},this.onFire=new c.Signal,this.onKill=new c.Signal,this.onFireLimit=new c.Signal,this.trackedSprite=null,this.trackedPointer=null,this.trackRotation=!1,this.trackOffset=new c.Point,this._nextFire=0},c.Weapon.prototype=Object.create(c.Plugin.prototype),c.Weapon.prototype.constructor=c.Weapon,c.Weapon.KILL_NEVER=0,c.Weapon.KILL_LIFESPAN=1,c.Weapon.KILL_DISTANCE=2,c.Weapon.KILL_WEAPON_BOUNDS=3,c.Weapon.KILL_CAMERA_BOUNDS=4,c.Weapon.KILL_WORLD_BOUNDS=5,c.Weapon.KILL_STATIC_BOUNDS=6,c.Weapon.prototype.createBullets=function(a,b,d,e){return void 0===a&&(a=1),void 0===e&&(e=this.game.world),this.bullets||(this.bullets=this.game.add.physicsGroup(c.Physics.ARCADE,e),this.bullets.classType=this._bulletClass),0!==a&&(-1===a&&(this.autoExpandBulletsGroup=!0,a=1),this.bullets.createMultiple(a,b,d),this.bullets.setAll("data.bulletManager",this),this.bulletKey=b,this.bulletFrame=d),this},c.Weapon.prototype.forEach=function(a,b){return this.bullets.forEachExists(a,b,arguments),this},c.Weapon.prototype.pauseAll=function(){return this.bullets.setAll("body.enable",!1),this},c.Weapon.prototype.resumeAll=function(){return this.bullets.setAll("body.enable",!0),this},c.Weapon.prototype.killAll=function(){return this.bullets.callAllExists("kill",!0),this.bullets.setAll("body.enable",!0),this},c.Weapon.prototype.resetShots=function(a){return this.shots=0,void 0!==a&&(this.fireLimit=a),this},c.Weapon.prototype.destroy=function(){this.parent.remove(this,!1),this.bullets.destroy(),this.game=null,this.parent=null,this.active=!1,this.visible=!1},c.Weapon.prototype.update=function(){this._bulletKillType===c.Weapon.KILL_WEAPON_BOUNDS&&(this.trackedSprite?(this.trackedSprite.updateTransform(),this.bounds.centerOn(this.trackedSprite.worldPosition.x,this.trackedSprite.worldPosition.y)):this.trackedPointer&&this.bounds.centerOn(this.trackedPointer.worldX,this.trackedPointer.worldY)),this.autofire&&this.game.time.now0&&this.shots===this.fireLimit)return!1;var e=this.bulletSpeed;0!==this.bulletSpeedVariance&&(e+=c.Math.between(-this.bulletSpeedVariance,this.bulletSpeedVariance)),a?this.fireFrom.width>1?this.fireFrom.centerOn(a.x,a.y):(this.fireFrom.x=a.x,this.fireFrom.y=a.y):this.trackedSprite?(this.fireFrom.width>1?this.fireFrom.centerOn(this.trackedSprite.world.x+this.trackOffset.x,this.trackedSprite.world.y+this.trackOffset.y):(this.fireFrom.x=this.trackedSprite.world.x+this.trackOffset.x,this.fireFrom.y=this.trackedSprite.world.y+this.trackOffset.y),this.bulletInheritSpriteSpeed&&(e+=this.trackedSprite.body.speed)):this.trackedPointer&&(this.fireFrom.width>1?this.fireFrom.centerOn(this.trackedPointer.world.x+this.trackOffset.x,this.trackedPointer.world.y+this.trackOffset.y):(this.fireFrom.x=this.trackedPointer.world.x+this.trackOffset.x,this.fireFrom.y=this.trackedPointer.world.y+this.trackOffset.y));var f=this.fireFrom.width>1?this.fireFrom.randomX:this.fireFrom.x,g=this.fireFrom.height>1?this.fireFrom.randomY:this.fireFrom.y,h=this.trackRotation?this.trackedSprite.angle:this.fireAngle;void 0!==b&&void 0!==d&&(h=this.game.math.radToDeg(Math.atan2(d-g,b-f))),0!==this.bulletAngleVariance&&(h+=c.Math.between(-this.bulletAngleVariance,this.bulletAngleVariance));var i=0,j=0;0===h||180===h?i=Math.cos(this.game.math.degToRad(h))*e:90===h||270===h?j=Math.sin(this.game.math.degToRad(h))*e:(i=Math.cos(this.game.math.degToRad(h))*e,j=Math.sin(this.game.math.degToRad(h))*e);var k=null;if(this.autoExpandBulletsGroup?(k=this.bullets.getFirstExists(!1,!0,f,g,this.bulletKey,this.bulletFrame),k.data.bulletManager=this):k=this.bullets.getFirstExists(!1),k){if(k.reset(f,g),k.data.fromX=f,k.data.fromY=g,k.data.killType=this.bulletKillType,k.data.killDistance=this.bulletKillDistance,k.data.rotateToVelocity=this.bulletRotateToVelocity,this.bulletKillType===c.Weapon.KILL_LIFESPAN&&(k.lifespan=this.bulletLifespan),k.angle=h+this.bulletAngleOffset,""!==this.bulletAnimation){if(null===k.animations.getAnimation(this.bulletAnimation)){var l=this.anims[this.bulletAnimation];k.animations.add(l.name,l.frames,l.frameRate,l.loop,l.useNumericIndex)}k.animations.play(this.bulletAnimation)}else this.bulletFrameCycle?(k.frame=this.bulletFrames[this.bulletFrameIndex],this.bulletFrameIndex++,this.bulletFrameIndex>=this.bulletFrames.length&&(this.bulletFrameIndex=0)):this.bulletFrameRandom&&(k.frame=this.bulletFrames[Math.floor(Math.random()*this.bulletFrames.length)]);k.data.bodyDirty&&(this._data.customBody&&k.body.setSize(this._data.width,this._data.height,this._data.offsetX,this._data.offsetY),k.body.collideWorldBounds=this.bulletCollideWorldBounds,k.data.bodyDirty=!1),k.body.velocity.set(i,j),k.body.gravity.set(this.bulletGravity.x,this.bulletGravity.y),this._nextFire=this.game.time.now+this.fireRate,this.shots++,this.onFire.dispatch(k,this,e),this.fireLimit>0&&this.shots===this.fireLimit&&this.onFireLimit.dispatch(this,this.fireLimit)}},c.Weapon.prototype.fireAtPointer=function(a){return void 0===a&&(a=this.game.input.activePointer),this.fire(null,a.worldX,a.worldY)},c.Weapon.prototype.fireAtSprite=function(a){return this.fire(null,a.world.x,a.world.y)},c.Weapon.prototype.fireAtXY=function(a,b){return this.fire(null,a,b)},c.Weapon.prototype.setBulletBodyOffset=function(a,b,c,d){return void 0===c&&(c=0),void 0===d&&(d=0),this._data.customBody=!0,this._data.width=a,this._data.height=b,this._data.offsetX=c,this._data.offsetY=d,this.bullets.callAll("body.setSize","body",a,b,c,d),this.bullets.setAll("data.bodyDirty",!1),this},c.Weapon.prototype.setBulletFrames=function(a,b,d,e){return void 0===d&&(d=!0),void 0===e&&(e=!1),this.bulletFrames=c.ArrayUtils.numberArray(a,b),this.bulletFrameIndex=0,this.bulletFrameCycle=d,this.bulletFrameRandom=e,this},c.Weapon.prototype.addBulletAnimation=function(a,b,c,d,e){return this.anims[a]={name:a,frames:b,frameRate:c,loop:d,useNumericIndex:e},this.bullets.callAll("animations.add","animations",a,b,c,d,e),this.bulletAnimation=a,this},c.Weapon.prototype.debug=function(a,b,c){void 0===a&&(a=16),void 0===b&&(b=32),void 0===c&&(c=!1),this.game.debug.text("Weapon Plugin",a,b),this.game.debug.text("Bullets Alive: "+this.bullets.total+" - Total: "+this.bullets.length,a,b+24),c&&this.bullets.forEachExists(this.game.debug.body,this.game.debug,"rgba(255, 0, 255, 0.8)")},Object.defineProperty(c.Weapon.prototype,"bulletClass",{get:function(){return this._bulletClass},set:function(a){this._bulletClass=a,this.bullets.classType=this._bulletClass}}),Object.defineProperty(c.Weapon.prototype,"bulletKillType",{get:function(){return this._bulletKillType},set:function(a){switch(a){case c.Weapon.KILL_STATIC_BOUNDS:case c.Weapon.KILL_WEAPON_BOUNDS:this.bulletBounds=this.bounds;break;case c.Weapon.KILL_CAMERA_BOUNDS:this.bulletBounds=this.game.camera.view;break;case c.Weapon.KILL_WORLD_BOUNDS:this.bulletBounds=this.game.world.bounds}this._bulletKillType=a}}),Object.defineProperty(c.Weapon.prototype,"bulletCollideWorldBounds",{get:function(){return this._bulletCollideWorldBounds},set:function(a){this._bulletCollideWorldBounds=a,this.bullets.setAll("body.collideWorldBounds",a),this.bullets.setAll("data.bodyDirty",!1)}}),Object.defineProperty(c.Weapon.prototype,"x",{get:function(){return this.fireFrom.x},set:function(a){this.fireFrom.x=a}}),Object.defineProperty(c.Weapon.prototype,"y",{get:function(){return this.fireFrom.y},set:function(a){this.fireFrom.y=a}}),c.Bullet=function(a,b,d,e,f){c.Sprite.call(this,a,b,d,e,f),this.anchor.set(.5),this.data={bulletManager:null,fromX:0,fromY:0,bodyDirty:!0,rotateToVelocity:!1,killType:0,killDistance:0}},c.Bullet.prototype=Object.create(c.Sprite.prototype),c.Bullet.prototype.constructor=c.Bullet,c.Bullet.prototype.kill=function(){return this.alive=!1,this.exists=!1,this.visible=!1,this.data.bulletManager.onKill.dispatch(this),this},c.Bullet.prototype.update=function(){this.exists&&(this.data.killType>c.Weapon.KILL_LIFESPAN&&(this.data.killType===c.Weapon.KILL_DISTANCE?this.game.physics.arcade.distanceToXY(this,this.data.fromX,this.data.fromY,!0)>this.data.killDistance&&this.kill():this.data.bulletManager.bulletBounds.intersects(this)||this.kill()),this.data.rotateToVelocity&&(this.rotation=Math.atan2(this.body.velocity.y,this.body.velocity.x)),this.data.bulletManager.bulletWorldWrap&&this.game.world.wrap(this,this.data.bulletManager.bulletWorldWrapPadding))},c.Creature=function(a,b,d,e,f,g){if(void 0===g&&(g="default"),this.type=c.CREATURE,!a.cache.checkJSONKey(f))return void console.warn("Phaser.Creature: Invalid mesh key given. Not found in Phaser.Cache");var h=a.cache.getJSON(f);if(this._creature=new Creature(h),this.animation=new CreatureAnimation(h,g,this._creature),this.manager=new CreatureManager(this._creature),this.timeDelta=.05,"string"==typeof e)var i=a.cache.getPixiTexture(e);else var i=e;this.texture=i,PIXI.DisplayObjectContainer.call(this),this.dirty=!0,this.blendMode=PIXI.blendModes.NORMAL,this.creatureBoundsMin=new c.Point,this.creatureBoundsMax=new c.Point;var j=this.manager.target_creature;this.vertices=new PIXI.Float32Array(2*j.total_num_pts),this.uvs=new PIXI.Float32Array(2*j.total_num_pts),this.indices=new PIXI.Uint16Array(j.global_indices.length);for(var k=0;k0)if(b.video.videoWidth>0){var d=b.video.videoWidth,e=b.video.videoHeight;isNaN(b.video.videoHeight)&&(e=d/(4/3)),b.video.play(),b.isStreaming=!0,b.baseTexture.source=b.video,b.updateTexture(null,d,e),b.onAccess.dispatch(b)}else window.setTimeout(a,500);else console.warn("Unable to connect to video stream. Webcam error?");c--}var c=10;a()}},createVideoFromBlob:function(a){var b=this;return this.video=document.createElement("video"),this.video.controls=!1,this.video.setAttribute("autoplay","autoplay"),this.video.addEventListener("loadeddata",function(a){b.updateTexture(a)},!0),this.video.src=window.URL.createObjectURL(a),this.video.canplay=!0,this},createVideoFromURL:function(a,b){return void 0===b&&(b=!1),this.texture&&(this.texture.valid=!1),this.video=document.createElement("video"),this.video.controls=!1,b&&this.video.setAttribute("autoplay","autoplay"),this.video.src=a,this.video.canplay=!0,this.video.load(),this.retry=this.retryLimit,this._retryID=window.setTimeout(this.checkVideoProgress.bind(this),this.retryInterval),this.key=a,this},updateTexture:function(a,b,c){var d=!1;(void 0===b||null===b)&&(b=this.video.videoWidth,d=!0),(void 0===c||null===c)&&(c=this.video.videoHeight),this.width=b,this.height=c,this.baseTexture.source!==this.video&&(this.baseTexture.source=this.video),this.baseTexture.forceLoaded(b,c),this.texture.frame.resize(b,c),this.texture.width=b,this.texture.height=c,this.texture.valid=!0,this.snapshot&&this.snapshot.resize(b,c),d&&null!==this.key&&(this.onChangeSource.dispatch(this,b,c),this._autoplay&&(this.video.play(),this.onPlay.dispatch(this,this.loop,this.playbackRate)))},complete:function(){this.onComplete.dispatch(this)},play:function(a,b){return void 0===a&&(a=!1),void 0===b&&(b=1),this.game.sound.onMute&&(this.game.sound.onMute.add(this.setMute,this),this.game.sound.onUnMute.add(this.unsetMute,this),this.game.sound.mute&&this.setMute()),this.game.onPause.add(this.setPause,this),this.game.onResume.add(this.setResume,this),this._endCallback=this.complete.bind(this),this.video.addEventListener("ended",this._endCallback,!0),this.video.addEventListener("webkitendfullscreen",this._endCallback,!0),a?this.video.loop="loop":this.video.loop="",this.video.playbackRate=b,this.touchLocked?this._pending=!0:(this._pending=!1,null!==this.key&&(4!==this.video.readyState?(this.retry=this.retryLimit,this._retryID=window.setTimeout(this.checkVideoProgress.bind(this),this.retryInterval)):(this._playCallback=this.playHandler.bind(this),this.video.addEventListener("playing",this._playCallback,!0))),this.video.play(),this.onPlay.dispatch(this,a,b)),this},playHandler:function(){this.video.removeEventListener("playing",this._playCallback,!0),this.updateTexture()},stop:function(){return this.game.sound.onMute&&(this.game.sound.onMute.remove(this.setMute,this),this.game.sound.onUnMute.remove(this.unsetMute,this)),this.game.onPause.remove(this.setPause,this),this.game.onResume.remove(this.setResume,this),this.isStreaming?(this.video.mozSrcObject?(this.video.mozSrcObject.stop(),this.video.src=null):(this.video.src="",this.videoStream.active?this.videoStream.active=!1:this.videoStream.getTracks?this.videoStream.getTracks().forEach(function(a){a.stop()}):this.videoStream.stop()),this.videoStream=null,this.isStreaming=!1):(this.video.removeEventListener("ended",this._endCallback,!0),this.video.removeEventListener("webkitendfullscreen",this._endCallback,!0),this.video.removeEventListener("playing",this._playCallback,!0),this.touchLocked?this._pending=!1:this.video.pause()),this},add:function(a){if(Array.isArray(a))for(var b=0;b0?this._retryID=window.setTimeout(this.checkVideoProgress.bind(this),this.retryInterval):console.warn("Phaser.Video: Unable to start downloading video in time",this.isStreaming))},setTouchLock:function(){this.game.input.touch.addTouchLockCallback(this.unlock,this),this.touchLocked=!0},unlock:function(){ -if(this.touchLocked=!1,this.video.play(),this.onPlay.dispatch(this,this.loop,this.playbackRate),this.key){var a=this.game.cache.getVideo(this.key);a&&!a.isBlob&&(a.locked=!1)}return!0},grab:function(a,b,c){return void 0===a&&(a=!1),void 0===b&&(b=1),void 0===c&&(c=null),null===this.snapshot?void console.warn("Video.grab cannot run because Phaser.BitmapData is unavailable"):(a&&this.snapshot.cls(),this.snapshot.copy(this.video,0,0,this.width,this.height,0,0,this.width,this.height,0,0,0,1,1,b,c),this.snapshot)},removeVideoElement:function(){if(this.video){for(this.video.parentNode&&this.video.parentNode.removeChild(this.video);this.video.hasChildNodes();)this.video.removeChild(this.video.firstChild);this.video.removeAttribute("autoplay"),this.video.removeAttribute("src"),this.video=null}},destroy:function(){this.stop(),this.removeVideoElement(),this.touchLocked&&this.game.input.touch.removeTouchLockCallback(this.unlock,this),this._retryID&&window.clearTimeout(this._retryID)}},Object.defineProperty(c.Video.prototype,"currentTime",{get:function(){return this.video?this.video.currentTime:0},set:function(a){this.video.currentTime=a}}),Object.defineProperty(c.Video.prototype,"duration",{get:function(){return this.video?this.video.duration:0}}),Object.defineProperty(c.Video.prototype,"progress",{get:function(){return this.video?this.video.currentTime/this.video.duration:0}}),Object.defineProperty(c.Video.prototype,"mute",{get:function(){return this._muted},set:function(a){if(a=a||null){if(this._muted)return;this._codeMuted=!0,this.setMute()}else{if(!this._muted)return;this._codeMuted=!1,this.unsetMute()}}}),Object.defineProperty(c.Video.prototype,"paused",{get:function(){return this._paused},set:function(a){if(a=a||null,!this.touchLocked)if(a){if(this._paused)return;this._codePaused=!0,this.setPause()}else{if(!this._paused)return;this._codePaused=!1,this.setResume()}}}),Object.defineProperty(c.Video.prototype,"volume",{get:function(){return this.video?this.video.volume:1},set:function(a){0>a?a=0:a>1&&(a=1),this.video&&(this.video.volume=a)}}),Object.defineProperty(c.Video.prototype,"playbackRate",{get:function(){return this.video?this.video.playbackRate:1},set:function(a){this.video&&(this.video.playbackRate=a)}}),Object.defineProperty(c.Video.prototype,"loop",{get:function(){return this.video?this.video.loop:!1},set:function(a){a&&this.video?this.video.loop="loop":this.video&&(this.video.loop="")}}),Object.defineProperty(c.Video.prototype,"playing",{get:function(){return!(this.video.paused&&this.video.ended)}}),c.Video.prototype.constructor=c.Video,void 0===PIXI.blendModes&&(PIXI.blendModes=c.blendModes),void 0===PIXI.scaleModes&&(PIXI.scaleModes=c.scaleModes),void 0===PIXI.Texture.emptyTexture&&(PIXI.Texture.emptyTexture=new PIXI.Texture(new PIXI.BaseTexture)),void 0===PIXI.DisplayObject._tempMatrix&&(PIXI.DisplayObject._tempMatrix=new PIXI.Matrix),void 0===PIXI.RenderTexture.tempMatrix&&(PIXI.RenderTexture.tempMatrix=new PIXI.Matrix),PIXI.Graphics&&void 0===PIXI.Graphics.POLY&&(PIXI.Graphics.POLY=c.POLYGON,PIXI.Graphics.RECT=c.RECTANGLE,PIXI.Graphics.CIRC=c.CIRCLE,PIXI.Graphics.ELIP=c.ELLIPSE,PIXI.Graphics.RREC=c.ROUNDEDRECTANGLE),PIXI.TextureSilentFail=!0,"undefined"!=typeof exports?("undefined"!=typeof module&&module.exports&&(exports=module.exports=c),exports.Phaser=c):"undefined"!=typeof define&&define.amd?define("Phaser",function(){return b.Phaser=c}()):b.Phaser=c,c}).call(this); +(function(){function a(a,b){this._scaleFactor=a,this._deltaMode=b,this.originalEvent=null}var b=this,c=c||{VERSION:"2.6.0",GAMES:[],AUTO:0,CANVAS:1,WEBGL:2,HEADLESS:3,NONE:0,LEFT:1,RIGHT:2,UP:3,DOWN:4,SPRITE:0,BUTTON:1,IMAGE:2,GRAPHICS:3,TEXT:4,TILESPRITE:5,BITMAPTEXT:6,GROUP:7,RENDERTEXTURE:8,TILEMAP:9,TILEMAPLAYER:10,EMITTER:11,POLYGON:12,BITMAPDATA:13,CANVAS_FILTER:14,WEBGL_FILTER:15,ELLIPSE:16,SPRITEBATCH:17,RETROFONT:18,POINTER:19,ROPE:20,CIRCLE:21,RECTANGLE:22,LINE:23,MATRIX:24,POINT:25,ROUNDEDRECTANGLE:26,CREATURE:27,VIDEO:28,PENDING_ATLAS:-1,HORIZONTAL:0,VERTICAL:1,LANDSCAPE:0,PORTRAIT:1,ANGLE_UP:270,ANGLE_DOWN:90,ANGLE_LEFT:180,ANGLE_RIGHT:0,ANGLE_NORTH_EAST:315,ANGLE_NORTH_WEST:225,ANGLE_SOUTH_EAST:45,ANGLE_SOUTH_WEST:135,TOP_LEFT:0,TOP_CENTER:1,TOP_RIGHT:2,LEFT_TOP:3,LEFT_CENTER:4,LEFT_BOTTOM:5,CENTER:6,RIGHT_TOP:7,RIGHT_CENTER:8,RIGHT_BOTTOM:9,BOTTOM_LEFT:10,BOTTOM_CENTER:11,BOTTOM_RIGHT:12,blendModes:{NORMAL:0,ADD:1,MULTIPLY:2,SCREEN:3,OVERLAY:4,DARKEN:5,LIGHTEN:6,COLOR_DODGE:7,COLOR_BURN:8,HARD_LIGHT:9,SOFT_LIGHT:10,DIFFERENCE:11,EXCLUSION:12,HUE:13,SATURATION:14,COLOR:15,LUMINOSITY:16},scaleModes:{DEFAULT:0,LINEAR:0,NEAREST:1},PIXI:PIXI||{}};if(Math.trunc||(Math.trunc=function(a){return 0>a?Math.ceil(a):Math.floor(a)}),Function.prototype.bind||(Function.prototype.bind=function(){var a=Array.prototype.slice;return function(b){function c(){var f=e.concat(a.call(arguments));d.apply(this instanceof c?this:b,f)}var d=this,e=a.call(arguments,1);if("function"!=typeof d)throw new TypeError;return c.prototype=function f(a){return a&&(f.prototype=a),this instanceof f?void 0:new f}(d.prototype),c}}()),Array.isArray||(Array.isArray=function(a){return"[object Array]"==Object.prototype.toString.call(a)}),Array.prototype.forEach||(Array.prototype.forEach=function(a){"use strict";if(void 0===this||null===this)throw new TypeError;var b=Object(this),c=b.length>>>0;if("function"!=typeof a)throw new TypeError;for(var d=arguments.length>=2?arguments[1]:void 0,e=0;c>e;e++)e in b&&a.call(d,b[e],e,b)}),"function"!=typeof window.Uint32Array&&"object"!=typeof window.Uint32Array){var d=function(a){var b=new Array;window[a]=function(a){if("number"==typeof a){Array.call(this,a),this.length=a;for(var b=0;bf&&(a=a[g]);)g=c[f],f++;return a?a[d]:null},setProperty:function(a,b,c){for(var d=b.split("."),e=d.pop(),f=d.length,g=1,h=d[0];f>g&&(a=a[h]);)h=d[g],g++;return a&&(a[e]=c),a},chanceRoll:function(a){return void 0===a&&(a=50),a>0&&100*Math.random()<=a},randomChoice:function(a,b){return Math.random()<.5?a:b},parseDimension:function(a,b){var c=0,d=0;return"string"==typeof a?"%"===a.substr(-1)?(c=parseInt(a,10)/100,d=0===b?window.innerWidth*c:window.innerHeight*c):d=parseInt(a,10):d=a,d},pad:function(a,b,c,d){if(void 0===b)var b=0;if(void 0===c)var c=" ";if(void 0===d)var d=3;a=a.toString();var e=0;if(b+1>=a.length)switch(d){case 1:a=new Array(b+1-a.length).join(c)+a;break;case 3:var f=Math.ceil((e=b-a.length)/2),g=e-f;a=new Array(g+1).join(c)+a+new Array(f+1).join(c);break;default:a+=new Array(b+1-a.length).join(c)}return a},isPlainObject:function(a){if("object"!=typeof a||a.nodeType||a===a.window)return!1;try{if(a.constructor&&!{}.hasOwnProperty.call(a.constructor.prototype,"isPrototypeOf"))return!1}catch(b){return!1}return!0},extend:function(){var a,b,d,e,f,g,h=arguments[0]||{},i=1,j=arguments.length,k=!1;for("boolean"==typeof h&&(k=h,h=arguments[1]||{},i=2),j===i&&(h=this,--i);j>i;i++)if(null!=(a=arguments[i]))for(b in a)d=h[b],e=a[b],h!==e&&(k&&e&&(c.Utils.isPlainObject(e)||(f=Array.isArray(e)))?(f?(f=!1,g=d&&Array.isArray(d)?d:[]):g=d&&c.Utils.isPlainObject(d)?d:{},h[b]=c.Utils.extend(k,g,e)):void 0!==e&&(h[b]=e));return h},mixinPrototype:function(a,b,c){void 0===c&&(c=!1);for(var d=Object.keys(b),e=0;e0&&(this._radius=.5*d),this.type=c.CIRCLE},c.Circle.prototype={circumference:function(){return 2*(Math.PI*this._radius)},random:function(a){void 0===a&&(a=new c.Point);var b=2*Math.PI*Math.random(),d=Math.random()+Math.random(),e=d>1?2-d:d,f=e*Math.cos(b),g=e*Math.sin(b);return a.x=this.x+f*this.radius,a.y=this.y+g*this.radius,a},getBounds:function(){return new c.Rectangle(this.x-this.radius,this.y-this.radius,this.diameter,this.diameter)},setTo:function(a,b,c){return this.x=a,this.y=b,this._diameter=c,this._radius=.5*c,this},copyFrom:function(a){return this.setTo(a.x,a.y,a.diameter)},copyTo:function(a){return a.x=this.x,a.y=this.y,a.diameter=this._diameter,a},distance:function(a,b){var d=c.Math.distance(this.x,this.y,a.x,a.y);return b?Math.round(d):d},clone:function(a){return void 0===a||null===a?a=new c.Circle(this.x,this.y,this.diameter):a.setTo(this.x,this.y,this.diameter),a},contains:function(a,b){return c.Circle.contains(this,a,b)},circumferencePoint:function(a,b,d){return c.Circle.circumferencePoint(this,a,b,d)},offset:function(a,b){return this.x+=a,this.y+=b,this},offsetPoint:function(a){return this.offset(a.x,a.y)},toString:function(){return"[{Phaser.Circle (x="+this.x+" y="+this.y+" diameter="+this.diameter+" radius="+this.radius+")}]"}},c.Circle.prototype.constructor=c.Circle,Object.defineProperty(c.Circle.prototype,"diameter",{get:function(){return this._diameter},set:function(a){a>0&&(this._diameter=a,this._radius=.5*a)}}),Object.defineProperty(c.Circle.prototype,"radius",{get:function(){return this._radius},set:function(a){a>0&&(this._radius=a,this._diameter=2*a)}}),Object.defineProperty(c.Circle.prototype,"left",{get:function(){return this.x-this._radius},set:function(a){a>this.x?(this._radius=0,this._diameter=0):this.radius=this.x-a}}),Object.defineProperty(c.Circle.prototype,"right",{get:function(){return this.x+this._radius},set:function(a){athis.y?(this._radius=0,this._diameter=0):this.radius=this.y-a}}),Object.defineProperty(c.Circle.prototype,"bottom",{get:function(){return this.y+this._radius},set:function(a){a0?Math.PI*this._radius*this._radius:0}}),Object.defineProperty(c.Circle.prototype,"empty",{get:function(){return 0===this._diameter},set:function(a){a===!0&&this.setTo(0,0,0)}}),c.Circle.contains=function(a,b,c){if(a.radius>0&&b>=a.left&&b<=a.right&&c>=a.top&&c<=a.bottom){var d=(a.x-b)*(a.x-b),e=(a.y-c)*(a.y-c);return d+e<=a.radius*a.radius}return!1},c.Circle.equals=function(a,b){return a.x==b.x&&a.y==b.y&&a.diameter==b.diameter},c.Circle.intersects=function(a,b){return c.Math.distance(a.x,a.y,b.x,b.y)<=a.radius+b.radius},c.Circle.circumferencePoint=function(a,b,d,e){return void 0===d&&(d=!1),void 0===e&&(e=new c.Point),d===!0&&(b=c.Math.degToRad(b)),e.x=a.x+a.radius*Math.cos(b),e.y=a.y+a.radius*Math.sin(b),e},c.Circle.intersectsRectangle=function(a,b){var c=Math.abs(a.x-b.x-b.halfWidth),d=b.halfWidth+a.radius;if(c>d)return!1;var e=Math.abs(a.y-b.y-b.halfHeight),f=b.halfHeight+a.radius;if(e>f)return!1;if(c<=b.halfWidth||e<=b.halfHeight)return!0;var g=c-b.halfWidth,h=e-b.halfHeight,i=g*g,j=h*h,k=a.radius*a.radius;return k>=i+j},PIXI.Circle=c.Circle,c.Ellipse=function(a,b,d,e){a=a||0,b=b||0,d=d||0,e=e||0,this.x=a,this.y=b,this.width=d,this.height=e,this.type=c.ELLIPSE},c.Ellipse.prototype={setTo:function(a,b,c,d){return this.x=a,this.y=b,this.width=c,this.height=d,this},getBounds:function(){return new c.Rectangle(this.x-this.width,this.y-this.height,this.width,this.height)},copyFrom:function(a){return this.setTo(a.x,a.y,a.width,a.height)},copyTo:function(a){return a.x=this.x,a.y=this.y,a.width=this.width,a.height=this.height,a},clone:function(a){return void 0===a||null===a?a=new c.Ellipse(this.x,this.y,this.width,this.height):a.setTo(this.x,this.y,this.width,this.height),a},contains:function(a,b){return c.Ellipse.contains(this,a,b)},random:function(a){void 0===a&&(a=new c.Point);var b=Math.random()*Math.PI*2,d=Math.random();return a.x=Math.sqrt(d)*Math.cos(b),a.y=Math.sqrt(d)*Math.sin(b),a.x=this.x+a.x*this.width/2,a.y=this.y+a.y*this.height/2,a},toString:function(){return"[{Phaser.Ellipse (x="+this.x+" y="+this.y+" width="+this.width+" height="+this.height+")}]"}},c.Ellipse.prototype.constructor=c.Ellipse,Object.defineProperty(c.Ellipse.prototype,"left",{get:function(){return this.x},set:function(a){this.x=a}}),Object.defineProperty(c.Ellipse.prototype,"right",{get:function(){return this.x+this.width},set:function(a){ad+e},PIXI.Ellipse=c.Ellipse,c.Line=function(a,b,d,e){a=a||0,b=b||0,d=d||0,e=e||0,this.start=new c.Point(a,b),this.end=new c.Point(d,e),this.type=c.LINE},c.Line.prototype={setTo:function(a,b,c,d){return this.start.setTo(a,b),this.end.setTo(c,d),this},fromSprite:function(a,b,c){return void 0===c&&(c=!1),c?this.setTo(a.center.x,a.center.y,b.center.x,b.center.y):this.setTo(a.x,a.y,b.x,b.y)},fromAngle:function(a,b,c,d){return this.start.setTo(a,b),this.end.setTo(a+Math.cos(c)*d,b+Math.sin(c)*d),this},rotate:function(a,b){var c=(this.start.x+this.end.x)/2,d=(this.start.y+this.end.y)/2;return this.start.rotate(c,d,a,b),this.end.rotate(c,d,a,b),this},rotateAround:function(a,b,c,d){return this.start.rotate(a,b,c,d),this.end.rotate(a,b,c,d),this},intersects:function(a,b,d){return c.Line.intersectsPoints(this.start,this.end,a.start,a.end,b,d)},reflect:function(a){return c.Line.reflect(this,a)},midPoint:function(a){return void 0===a&&(a=new c.Point),a.x=(this.start.x+this.end.x)/2,a.y=(this.start.y+this.end.y)/2,a},centerOn:function(a,b){var c=(this.start.x+this.end.x)/2,d=(this.start.y+this.end.y)/2,e=a-c,f=b-d;this.start.add(e,f),this.end.add(e,f)},pointOnLine:function(a,b){return(a-this.start.x)*(this.end.y-this.start.y)===(this.end.x-this.start.x)*(b-this.start.y)},pointOnSegment:function(a,b){var c=Math.min(this.start.x,this.end.x),d=Math.max(this.start.x,this.end.x),e=Math.min(this.start.y,this.end.y),f=Math.max(this.start.y,this.end.y);return this.pointOnLine(a,b)&&a>=c&&d>=a&&b>=e&&f>=b},random:function(a){void 0===a&&(a=new c.Point);var b=Math.random();return a.x=this.start.x+b*(this.end.x-this.start.x),a.y=this.start.y+b*(this.end.y-this.start.y),a},coordinatesOnLine:function(a,b){void 0===a&&(a=1),void 0===b&&(b=[]);var c=Math.round(this.start.x),d=Math.round(this.start.y),e=Math.round(this.end.x),f=Math.round(this.end.y),g=Math.abs(e-c),h=Math.abs(f-d),i=e>c?1:-1,j=f>d?1:-1,k=g-h;b.push([c,d]);for(var l=1;c!=e||d!=f;){var m=k<<1;m>-h&&(k-=h,c+=i),g>m&&(k+=g,d+=j),l%a===0&&b.push([c,d]),l++}return b},clone:function(a){return void 0===a||null===a?a=new c.Line(this.start.x,this.start.y,this.end.x,this.end.y):a.setTo(this.start.x,this.start.y,this.end.x,this.end.y),a}},Object.defineProperty(c.Line.prototype,"length",{get:function(){return Math.sqrt((this.end.x-this.start.x)*(this.end.x-this.start.x)+(this.end.y-this.start.y)*(this.end.y-this.start.y))}}),Object.defineProperty(c.Line.prototype,"angle",{get:function(){return Math.atan2(this.end.y-this.start.y,this.end.x-this.start.x)}}),Object.defineProperty(c.Line.prototype,"slope",{get:function(){return(this.end.y-this.start.y)/(this.end.x-this.start.x)}}),Object.defineProperty(c.Line.prototype,"perpSlope",{get:function(){return-((this.end.x-this.start.x)/(this.end.y-this.start.y))}}),Object.defineProperty(c.Line.prototype,"x",{get:function(){return Math.min(this.start.x,this.end.x)}}),Object.defineProperty(c.Line.prototype,"y",{get:function(){return Math.min(this.start.y,this.end.y)}}),Object.defineProperty(c.Line.prototype,"left",{get:function(){return Math.min(this.start.x,this.end.x)}}),Object.defineProperty(c.Line.prototype,"right",{get:function(){return Math.max(this.start.x,this.end.x)}}),Object.defineProperty(c.Line.prototype,"top",{get:function(){return Math.min(this.start.y,this.end.y)}}),Object.defineProperty(c.Line.prototype,"bottom",{get:function(){return Math.max(this.start.y,this.end.y)}}),Object.defineProperty(c.Line.prototype,"width",{get:function(){return Math.abs(this.start.x-this.end.x)}}),Object.defineProperty(c.Line.prototype,"height",{get:function(){return Math.abs(this.start.y-this.end.y)}}),Object.defineProperty(c.Line.prototype,"normalX",{get:function(){return Math.cos(this.angle-1.5707963267948966)}}),Object.defineProperty(c.Line.prototype,"normalY",{get:function(){return Math.sin(this.angle-1.5707963267948966)}}),Object.defineProperty(c.Line.prototype,"normalAngle",{get:function(){return c.Math.wrap(this.angle-1.5707963267948966,-Math.PI,Math.PI)}}),c.Line.intersectsPoints=function(a,b,d,e,f,g){void 0===f&&(f=!0),void 0===g&&(g=new c.Point);var h=b.y-a.y,i=e.y-d.y,j=a.x-b.x,k=d.x-e.x,l=b.x*a.y-a.x*b.y,m=e.x*d.y-d.x*e.y,n=h*k-i*j;if(0===n)return null;if(g.x=(j*m-k*l)/n,g.y=(i*l-h*m)/n,f){var o=(e.y-d.y)*(b.x-a.x)-(e.x-d.x)*(b.y-a.y),p=((e.x-d.x)*(a.y-d.y)-(e.y-d.y)*(a.x-d.x))/o,q=((b.x-a.x)*(a.y-d.y)-(b.y-a.y)*(a.x-d.x))/o;return p>=0&&1>=p&&q>=0&&1>=q?g:null}return g},c.Line.intersects=function(a,b,d,e){return c.Line.intersectsPoints(a.start,a.end,b.start,b.end,d,e)},c.Line.intersectsRectangle=function(a,b){if(!c.Rectangle.intersects(a,b))return!1;var d=a.start.x,e=a.start.y,f=a.end.x,g=a.end.y,h=b.x,i=b.y,j=b.right,k=b.bottom,l=0;if(d>=h&&j>=d&&e>=i&&k>=e||f>=h&&j>=f&&g>=i&&k>=g)return!0;if(h>d&&f>=h){if(l=e+(g-e)*(h-d)/(f-d),l>i&&k>=l)return!0}else if(d>j&&j>=f&&(l=e+(g-e)*(j-d)/(f-d),l>=i&&k>=l))return!0;if(i>e&&g>=i){if(l=d+(f-d)*(i-e)/(g-e),l>=h&&j>=l)return!0}else if(e>k&&k>=g&&(l=d+(f-d)*(k-e)/(g-e),l>=h&&j>=l))return!0;return!1},c.Line.reflect=function(a,b){return 2*b.normalAngle-3.141592653589793-a.angle},c.Matrix=function(a,b,d,e,f,g){void 0!==a&&null!==a||(a=1),void 0!==b&&null!==b||(b=0),void 0!==d&&null!==d||(d=0),void 0!==e&&null!==e||(e=1),void 0!==f&&null!==f||(f=0),void 0!==g&&null!==g||(g=0),this.a=a,this.b=b,this.c=d,this.d=e,this.tx=f,this.ty=g,this.type=c.MATRIX},c.Matrix.prototype={fromArray:function(a){return this.setTo(a[0],a[1],a[3],a[4],a[2],a[5])},setTo:function(a,b,c,d,e,f){return this.a=a,this.b=b,this.c=c,this.d=d,this.tx=e,this.ty=f,this},clone:function(a){return void 0===a||null===a?a=new c.Matrix(this.a,this.b,this.c,this.d,this.tx,this.ty):(a.a=this.a,a.b=this.b,a.c=this.c,a.d=this.d,a.tx=this.tx,a.ty=this.ty),a},copyTo:function(a){return a.copyFrom(this),a},copyFrom:function(a){return this.a=a.a,this.b=a.b,this.c=a.c,this.d=a.d,this.tx=a.tx,this.ty=a.ty,this},toArray:function(a,b){return void 0===b&&(b=new PIXI.Float32Array(9)),a?(b[0]=this.a,b[1]=this.b,b[2]=0,b[3]=this.c,b[4]=this.d,b[5]=0,b[6]=this.tx,b[7]=this.ty,b[8]=1):(b[0]=this.a,b[1]=this.c,b[2]=this.tx,b[3]=this.b,b[4]=this.d,b[5]=this.ty,b[6]=0,b[7]=0,b[8]=1),b},apply:function(a,b){return void 0===b&&(b=new c.Point),b.x=this.a*a.x+this.c*a.y+this.tx,b.y=this.b*a.x+this.d*a.y+this.ty,b},applyInverse:function(a,b){void 0===b&&(b=new c.Point);var d=1/(this.a*this.d+this.c*-this.b),e=a.x,f=a.y;return b.x=this.d*d*e+-this.c*d*f+(this.ty*this.c-this.tx*this.d)*d,b.y=this.a*d*f+-this.b*d*e+(-this.ty*this.a+this.tx*this.b)*d,b},translate:function(a,b){return this.tx+=a,this.ty+=b,this},scale:function(a,b){return this.a*=a,this.d*=b,this.c*=a,this.b*=b,this.tx*=a,this.ty*=b,this},rotate:function(a){var b=Math.cos(a),c=Math.sin(a),d=this.a,e=this.c,f=this.tx;return this.a=d*b-this.b*c,this.b=d*c+this.b*b,this.c=e*b-this.d*c,this.d=e*c+this.d*b,this.tx=f*b-this.ty*c,this.ty=f*c+this.ty*b,this},append:function(a){var b=this.a,c=this.b,d=this.c,e=this.d;return this.a=a.a*b+a.b*d,this.b=a.a*c+a.b*e,this.c=a.c*b+a.d*d,this.d=a.c*c+a.d*e,this.tx=a.tx*b+a.ty*d+this.tx,this.ty=a.tx*c+a.ty*e+this.ty,this},identity:function(){return this.setTo(1,0,0,1,0,0)}},c.identityMatrix=new c.Matrix,PIXI.Matrix=c.Matrix,PIXI.identityMatrix=c.identityMatrix,c.Point=function(a,b){a=a||0,b=b||0,this.x=a,this.y=b,this.type=c.POINT},c.Point.prototype={copyFrom:function(a){return this.setTo(a.x,a.y)},invert:function(){return this.setTo(this.y,this.x)},setTo:function(a,b){return this.x=a||0,this.y=b||(0!==b?this.x:0),this},set:function(a,b){return this.x=a||0,this.y=b||(0!==b?this.x:0),this},add:function(a,b){return this.x+=a,this.y+=b,this},subtract:function(a,b){return this.x-=a,this.y-=b,this},multiply:function(a,b){return this.x*=a,this.y*=b,this},divide:function(a,b){return this.x/=a,this.y/=b,this},clampX:function(a,b){return this.x=c.Math.clamp(this.x,a,b),this},clampY:function(a,b){return this.y=c.Math.clamp(this.y,a,b),this},clamp:function(a,b){return this.x=c.Math.clamp(this.x,a,b),this.y=c.Math.clamp(this.y,a,b),this},clone:function(a){return void 0===a||null===a?a=new c.Point(this.x,this.y):a.setTo(this.x,this.y),a},copyTo:function(a){return a.x=this.x,a.y=this.y,a},distance:function(a,b){return c.Point.distance(this,a,b)},equals:function(a){return a.x===this.x&&a.y===this.y},angle:function(a,b){return void 0===b&&(b=!1),b?c.Math.radToDeg(Math.atan2(a.y-this.y,a.x-this.x)):Math.atan2(a.y-this.y,a.x-this.x)},rotate:function(a,b,d,e,f){return c.Point.rotate(this,a,b,d,e,f)},getMagnitude:function(){return Math.sqrt(this.x*this.x+this.y*this.y)},getMagnitudeSq:function(){return this.x*this.x+this.y*this.y},setMagnitude:function(a){return this.normalize().multiply(a,a)},normalize:function(){if(!this.isZero()){var a=this.getMagnitude();this.x/=a,this.y/=a}return this},isZero:function(){return 0===this.x&&0===this.y},dot:function(a){return this.x*a.x+this.y*a.y},cross:function(a){return this.x*a.y-this.y*a.x},perp:function(){return this.setTo(-this.y,this.x)},rperp:function(){return this.setTo(this.y,-this.x)},normalRightHand:function(){return this.setTo(-1*this.y,this.x)},floor:function(){return this.setTo(Math.floor(this.x),Math.floor(this.y))},ceil:function(){return this.setTo(Math.ceil(this.x),Math.ceil(this.y))},toString:function(){return"[{Point (x="+this.x+" y="+this.y+")}]"}},c.Point.prototype.constructor=c.Point,c.Point.add=function(a,b,d){return void 0===d&&(d=new c.Point),d.x=a.x+b.x,d.y=a.y+b.y,d},c.Point.subtract=function(a,b,d){return void 0===d&&(d=new c.Point),d.x=a.x-b.x,d.y=a.y-b.y,d},c.Point.multiply=function(a,b,d){return void 0===d&&(d=new c.Point),d.x=a.x*b.x,d.y=a.y*b.y,d},c.Point.divide=function(a,b,d){return void 0===d&&(d=new c.Point),d.x=a.x/b.x,d.y=a.y/b.y,d},c.Point.equals=function(a,b){return a.x===b.x&&a.y===b.y},c.Point.angle=function(a,b){return Math.atan2(a.y-b.y,a.x-b.x)},c.Point.negative=function(a,b){return void 0===b&&(b=new c.Point),b.setTo(-a.x,-a.y)},c.Point.multiplyAdd=function(a,b,d,e){return void 0===e&&(e=new c.Point),e.setTo(a.x+b.x*d,a.y+b.y*d)},c.Point.interpolate=function(a,b,d,e){return void 0===e&&(e=new c.Point),e.setTo(a.x+(b.x-a.x)*d,a.y+(b.y-a.y)*d)},c.Point.perp=function(a,b){return void 0===b&&(b=new c.Point),b.setTo(-a.y,a.x)},c.Point.rperp=function(a,b){return void 0===b&&(b=new c.Point),b.setTo(a.y,-a.x)},c.Point.distance=function(a,b,d){var e=c.Math.distance(a.x,a.y,b.x,b.y);return d?Math.round(e):e},c.Point.project=function(a,b,d){void 0===d&&(d=new c.Point);var e=a.dot(b)/b.getMagnitudeSq();return 0!==e&&d.setTo(e*b.x,e*b.y),d},c.Point.projectUnit=function(a,b,d){void 0===d&&(d=new c.Point);var e=a.dot(b);return 0!==e&&d.setTo(e*b.x,e*b.y),d},c.Point.normalRightHand=function(a,b){return void 0===b&&(b=new c.Point),b.setTo(-1*a.y,a.x)},c.Point.normalize=function(a,b){void 0===b&&(b=new c.Point);var d=a.getMagnitude();return 0!==d&&b.setTo(a.x/d,a.y/d),b},c.Point.rotate=function(a,b,d,e,f,g){if(f&&(e=c.Math.degToRad(e)),void 0===g){a.subtract(b,d);var h=Math.sin(e),i=Math.cos(e),j=i*a.x-h*a.y,k=h*a.x+i*a.y;a.x=j+b,a.y=k+d}else{var l=e+Math.atan2(a.y-d,a.x-b);a.x=b+g*Math.cos(l),a.y=d+g*Math.sin(l)}return a},c.Point.centroid=function(a,b){if(void 0===b&&(b=new c.Point),"[object Array]"!==Object.prototype.toString.call(a))throw new Error("Phaser.Point. Parameter 'points' must be an array");var d=a.length;if(1>d)throw new Error("Phaser.Point. Parameter 'points' array must not be empty");if(1===d)return b.copyFrom(a[0]),b;for(var e=0;d>e;e++)c.Point.add(b,a[e],b);return b.divide(d,d),b},c.Point.parse=function(a,b,d){b=b||"x",d=d||"y";var e=new c.Point;return a[b]&&(e.x=parseInt(a[b],10)),a[d]&&(e.y=parseInt(a[d],10)),e},PIXI.Point=c.Point,c.Polygon=function(){this.area=0,this._points=[],arguments.length>0&&this.setTo.apply(this,arguments),this.closed=!0,this.flattened=!1,this.type=c.POLYGON},c.Polygon.prototype={toNumberArray:function(a){void 0===a&&(a=[]);for(var b=0;b=g&&i>b||b>=i&&g>b)&&(h-f)*(b-g)/(i-g)+f>a&&(c=!c)}else for(var d=-1,e=this._points.length-1;++d=g&&i>b||b>=i&&g>b)&&(h-f)*(b-g)/(i-g)+f>a&&(c=!c)}return c},setTo:function(a){if(this.area=0,this._points=[],arguments.length>0){Array.isArray(a)||(a=Array.prototype.slice.call(arguments));for(var b=Number.MAX_VALUE,c=0,d=a.length;d>c;c++){if("number"==typeof a[c]){var e=new PIXI.Point(a[c],a[c+1]);c++}else if(Array.isArray(a[c]))var e=new PIXI.Point(a[c][0],a[c][1]);else var e=new PIXI.Point(a[c].x,a[c].y);this._points.push(e),e.yf;f++)b=this._points[f],c=f===g-1?this._points[0]:this._points[f+1],d=(b.y-a+(c.y-a))/2,e=b.x-c.x,this.area+=d*e;return this.area}},c.Polygon.prototype.constructor=c.Polygon,Object.defineProperty(c.Polygon.prototype,"points",{get:function(){return this._points},set:function(a){null!=a?this.setTo(a):this.setTo()}}),PIXI.Polygon=c.Polygon,c.Rectangle=function(a,b,d,e){a=a||0,b=b||0,d=d||0,e=e||0,this.x=a,this.y=b,this.width=d,this.height=e,this.type=c.RECTANGLE},c.Rectangle.prototype={offset:function(a,b){return this.x+=a,this.y+=b,this},offsetPoint:function(a){return this.offset(a.x,a.y)},setTo:function(a,b,c,d){return this.x=a,this.y=b,this.width=c,this.height=d,this},scale:function(a,b){return void 0===b&&(b=a),this.width*=a,this.height*=b,this},centerOn:function(a,b){return this.centerX=a,this.centerY=b,this},floor:function(){this.x=Math.floor(this.x),this.y=Math.floor(this.y)},floorAll:function(){this.x=Math.floor(this.x),this.y=Math.floor(this.y),this.width=Math.floor(this.width),this.height=Math.floor(this.height)},ceil:function(){this.x=Math.ceil(this.x),this.y=Math.ceil(this.y)},ceilAll:function(){this.x=Math.ceil(this.x),this.y=Math.ceil(this.y),this.width=Math.ceil(this.width),this.height=Math.ceil(this.height)},copyFrom:function(a){return this.setTo(a.x,a.y,a.width,a.height)},copyTo:function(a){return a.x=this.x,a.y=this.y,a.width=this.width,a.height=this.height,a},inflate:function(a,b){return c.Rectangle.inflate(this,a,b)},size:function(a){return c.Rectangle.size(this,a)},resize:function(a,b){return this.width=a,this.height=b,this},clone:function(a){return c.Rectangle.clone(this,a)},contains:function(a,b){return c.Rectangle.contains(this,a,b)},containsRect:function(a){return c.Rectangle.containsRect(a,this)},equals:function(a){return c.Rectangle.equals(this,a)},intersection:function(a,b){return c.Rectangle.intersection(this,a,b)},intersects:function(a){return c.Rectangle.intersects(this,a)},intersectsRaw:function(a,b,d,e,f){return c.Rectangle.intersectsRaw(this,a,b,d,e,f)},union:function(a,b){return c.Rectangle.union(this,a,b)},random:function(a){return void 0===a&&(a=new c.Point),a.x=this.randomX,a.y=this.randomY,a},getPoint:function(a,b){switch(void 0===b&&(b=new c.Point),a){default:case c.TOP_LEFT:return b.set(this.x,this.y);case c.TOP_CENTER:return b.set(this.centerX,this.y);case c.TOP_RIGHT:return b.set(this.right,this.y);case c.LEFT_CENTER:return b.set(this.x,this.centerY);case c.CENTER:return b.set(this.centerX,this.centerY);case c.RIGHT_CENTER:return b.set(this.right,this.centerY);case c.BOTTOM_LEFT:return b.set(this.x,this.bottom);case c.BOTTOM_CENTER:return b.set(this.centerX,this.bottom);case c.BOTTOM_RIGHT:return b.set(this.right,this.bottom)}},toString:function(){return"[{Rectangle (x="+this.x+" y="+this.y+" width="+this.width+" height="+this.height+" empty="+this.empty+")}]"}},Object.defineProperty(c.Rectangle.prototype,"halfWidth",{get:function(){return Math.round(this.width/2)}}),Object.defineProperty(c.Rectangle.prototype,"halfHeight",{get:function(){return Math.round(this.height/2)}}),Object.defineProperty(c.Rectangle.prototype,"bottom",{get:function(){return this.y+this.height},set:function(a){a<=this.y?this.height=0:this.height=a-this.y}}),Object.defineProperty(c.Rectangle.prototype,"bottomLeft",{get:function(){return new c.Point(this.x,this.bottom)},set:function(a){this.x=a.x,this.bottom=a.y}}),Object.defineProperty(c.Rectangle.prototype,"bottomRight",{get:function(){return new c.Point(this.right,this.bottom)},set:function(a){this.right=a.x,this.bottom=a.y}}),Object.defineProperty(c.Rectangle.prototype,"left",{get:function(){return this.x},set:function(a){a>=this.right?this.width=0:this.width=this.right-a,this.x=a}}),Object.defineProperty(c.Rectangle.prototype,"right",{get:function(){return this.x+this.width},set:function(a){a<=this.x?this.width=0:this.width=a-this.x}}),Object.defineProperty(c.Rectangle.prototype,"volume",{get:function(){return this.width*this.height}}),Object.defineProperty(c.Rectangle.prototype,"perimeter",{get:function(){return 2*this.width+2*this.height}}),Object.defineProperty(c.Rectangle.prototype,"centerX",{get:function(){return this.x+this.halfWidth},set:function(a){this.x=a-this.halfWidth}}),Object.defineProperty(c.Rectangle.prototype,"centerY",{get:function(){return this.y+this.halfHeight},set:function(a){this.y=a-this.halfHeight}}),Object.defineProperty(c.Rectangle.prototype,"randomX",{get:function(){return this.x+Math.random()*this.width}}),Object.defineProperty(c.Rectangle.prototype,"randomY",{get:function(){return this.y+Math.random()*this.height}}),Object.defineProperty(c.Rectangle.prototype,"top",{get:function(){return this.y},set:function(a){a>=this.bottom?(this.height=0,this.y=a):this.height=this.bottom-a}}),Object.defineProperty(c.Rectangle.prototype,"topLeft",{get:function(){return new c.Point(this.x,this.y)},set:function(a){this.x=a.x,this.y=a.y}}),Object.defineProperty(c.Rectangle.prototype,"topRight",{get:function(){return new c.Point(this.x+this.width,this.y)},set:function(a){this.right=a.x,this.y=a.y}}),Object.defineProperty(c.Rectangle.prototype,"empty",{get:function(){return!this.width||!this.height},set:function(a){a===!0&&this.setTo(0,0,0,0)}}),c.Rectangle.prototype.constructor=c.Rectangle,c.Rectangle.inflate=function(a,b,c){return a.x-=b,a.width+=2*b,a.y-=c,a.height+=2*c,a},c.Rectangle.inflatePoint=function(a,b){return c.Rectangle.inflate(a,b.x,b.y)},c.Rectangle.size=function(a,b){return void 0===b||null===b?b=new c.Point(a.width,a.height):b.setTo(a.width,a.height),b},c.Rectangle.clone=function(a,b){return void 0===b||null===b?b=new c.Rectangle(a.x,a.y,a.width,a.height):b.setTo(a.x,a.y,a.width,a.height),b},c.Rectangle.contains=function(a,b,c){return a.width<=0||a.height<=0?!1:b>=a.x&&b=a.y&&c=a&&a+c>e&&f>=b&&b+d>f},c.Rectangle.containsPoint=function(a,b){return c.Rectangle.contains(a,b.x,b.y)},c.Rectangle.containsRect=function(a,b){return a.volume>b.volume?!1:a.x>=b.x&&a.y>=b.y&&a.rightb.right||a.y>b.bottom)},c.Rectangle.intersectsRaw=function(a,b,c,d,e,f){return void 0===f&&(f=0),!(b>a.right+f||ca.bottom+f||ed&&(d=a.x),a.xf&&(f=a.y),a.y=c&&a<=c+this.width){var d=this.y;if(b>=d&&b<=d+this.height)return!0}return!1}},c.RoundedRectangle.prototype.constructor=c.RoundedRectangle,PIXI.RoundedRectangle=c.RoundedRectangle,c.Camera=function(a,b,d,e,f,g){this.game=a,this.world=a.world,this.id=0,this.view=new c.Rectangle(d,e,f,g),this.bounds=new c.Rectangle(d,e,f,g),this.deadzone=null,this.visible=!0,this.roundPx=!0,this.atLimit={x:!1,y:!1},this.target=null,this.displayObject=null,this.scale=null,this.totalInView=0,this.lerp=new c.Point(1,1),this.onShakeComplete=new c.Signal,this.onFlashComplete=new c.Signal,this.onFadeComplete=new c.Signal,this.fx=null,this._targetPosition=new c.Point,this._edge=0,this._position=new c.Point,this._shake={intensity:0,duration:0,horizontal:!1,vertical:!1,shakeBounds:!0,x:0,y:0},this._fxDuration=0,this._fxType=0},c.Camera.FOLLOW_LOCKON=0, +c.Camera.FOLLOW_PLATFORMER=1,c.Camera.FOLLOW_TOPDOWN=2,c.Camera.FOLLOW_TOPDOWN_TIGHT=3,c.Camera.SHAKE_BOTH=4,c.Camera.SHAKE_HORIZONTAL=5,c.Camera.SHAKE_VERTICAL=6,c.Camera.ENABLE_FX=!0,c.Camera.prototype={boot:function(){this.displayObject=this.game.world,this.scale=this.game.world.scale,this.game.camera=this,c.Graphics&&c.Camera.ENABLE_FX&&(this.fx=new c.Graphics(this.game),this.game.stage.addChild(this.fx))},preUpdate:function(){this.totalInView=0},follow:function(a,b,d,e){void 0===b&&(b=c.Camera.FOLLOW_LOCKON),void 0===d&&(d=1),void 0===e&&(e=1),this.target=a,this.lerp.set(d,e);var f;switch(b){case c.Camera.FOLLOW_PLATFORMER:var g=this.width/8,h=this.height/3;this.deadzone=new c.Rectangle((this.width-g)/2,(this.height-h)/2-.25*h,g,h);break;case c.Camera.FOLLOW_TOPDOWN:f=Math.max(this.width,this.height)/4,this.deadzone=new c.Rectangle((this.width-f)/2,(this.height-f)/2,f,f);break;case c.Camera.FOLLOW_TOPDOWN_TIGHT:f=Math.max(this.width,this.height)/8,this.deadzone=new c.Rectangle((this.width-f)/2,(this.height-f)/2,f,f);break;case c.Camera.FOLLOW_LOCKON:this.deadzone=null;break;default:this.deadzone=null}},unfollow:function(){this.target=null},focusOn:function(a){this.setPosition(Math.round(a.x-this.view.halfWidth),Math.round(a.y-this.view.halfHeight))},focusOnXY:function(a,b){this.setPosition(Math.round(a-this.view.halfWidth),Math.round(b-this.view.halfHeight))},shake:function(a,b,d,e,f){return void 0===a&&(a=.05),void 0===b&&(b=500),void 0===d&&(d=!0),void 0===e&&(e=c.Camera.SHAKE_BOTH),void 0===f&&(f=!0),!d&&this._shake.duration>0?!1:(this._shake.intensity=a,this._shake.duration=b,this._shake.shakeBounds=f,this._shake.x=0,this._shake.y=0,this._shake.horizontal=e===c.Camera.SHAKE_BOTH||e===c.Camera.SHAKE_HORIZONTAL,this._shake.vertical=e===c.Camera.SHAKE_BOTH||e===c.Camera.SHAKE_VERTICAL,!0)},flash:function(a,b,c){return void 0===a&&(a=16777215),void 0===b&&(b=500),void 0===c&&(c=!1),!this.fx||!c&&this._fxDuration>0?!1:(this.fx.clear(),this.fx.beginFill(a),this.fx.drawRect(0,0,this.width,this.height),this.fx.endFill(),this.fx.alpha=1,this._fxDuration=b,this._fxType=0,!0)},fade:function(a,b,c){return void 0===a&&(a=0),void 0===b&&(b=500),void 0===c&&(c=!1),!this.fx||!c&&this._fxDuration>0?!1:(this.fx.clear(),this.fx.beginFill(a),this.fx.drawRect(0,0,this.width,this.height),this.fx.endFill(),this.fx.alpha=0,this._fxDuration=b,this._fxType=1,!0)},update:function(){this._fxDuration>0&&this.updateFX(),this._shake.duration>0&&this.updateShake(),this.bounds&&this.checkBounds(),this.roundPx&&(this.view.floor(),this._shake.x=Math.floor(this._shake.x),this._shake.y=Math.floor(this._shake.y)),this.displayObject.position.x=-this.view.x,this.displayObject.position.y=-this.view.y},updateFX:function(){0===this._fxType?(this.fx.alpha-=this.game.time.elapsedMS/this._fxDuration,this.fx.alpha<=0&&(this._fxDuration=0,this.fx.alpha=0,this.onFlashComplete.dispatch())):(this.fx.alpha+=this.game.time.elapsedMS/this._fxDuration,this.fx.alpha>=1&&(this._fxDuration=0,this.fx.alpha=1,this.onFadeComplete.dispatch()))},updateShake:function(){this._shake.duration-=this.game.time.elapsedMS,this._shake.duration<=0?(this.onShakeComplete.dispatch(),this._shake.x=0,this._shake.y=0):(this._shake.horizontal&&(this._shake.x=this.game.rnd.frac()*this._shake.intensity*this.view.width*2-this._shake.intensity*this.view.width),this._shake.vertical&&(this._shake.y=this.game.rnd.frac()*this._shake.intensity*this.view.height*2-this._shake.intensity*this.view.height))},updateTarget:function(){this._targetPosition.x=this.view.x+this.target.worldPosition.x,this._targetPosition.y=this.view.y+this.target.worldPosition.y,this.deadzone?(this._edge=this._targetPosition.x-this.view.x,this._edgethis.deadzone.right&&(this.view.x=this.game.math.linear(this.view.x,this._targetPosition.x-this.deadzone.right,this.lerp.x)),this._edge=this._targetPosition.y-this.view.y,this._edgethis.deadzone.bottom&&(this.view.y=this.game.math.linear(this.view.y,this._targetPosition.y-this.deadzone.bottom,this.lerp.y))):(this.view.x=this.game.math.linear(this.view.x,this._targetPosition.x-this.view.halfWidth,this.lerp.x),this.view.y=this.game.math.linear(this.view.y,this._targetPosition.y-this.view.halfHeight,this.lerp.y)),this.bounds&&this.checkBounds(),this.roundPx&&this.view.floor(),this.displayObject.position.x=-this.view.x,this.displayObject.position.y=-this.view.y},setBoundsToWorld:function(){this.bounds&&this.bounds.copyFrom(this.game.world.bounds)},checkBounds:function(){this.atLimit.x=!1,this.atLimit.y=!1;var a=this.view.x+this._shake.x,b=this.view.right+this._shake.x,c=this.view.y+this._shake.y,d=this.view.bottom+this._shake.y;a<=this.bounds.x*this.scale.x&&(this.atLimit.x=!0,this.view.x=this.bounds.x*this.scale.x,this._shake.shakeBounds||(this._shake.x=0)),b>=this.bounds.right*this.scale.x&&(this.atLimit.x=!0,this.view.x=this.bounds.right*this.scale.x-this.width,this._shake.shakeBounds||(this._shake.x=0)),c<=this.bounds.top*this.scale.y&&(this.atLimit.y=!0,this.view.y=this.bounds.top*this.scale.y,this._shake.shakeBounds||(this._shake.y=0)),d>=this.bounds.bottom*this.scale.y&&(this.atLimit.y=!0,this.view.y=this.bounds.bottom*this.scale.y-this.height,this._shake.shakeBounds||(this._shake.y=0))},setPosition:function(a,b){this.view.x=a,this.view.y=b,this.bounds&&this.checkBounds()},setSize:function(a,b){this.view.width=a,this.view.height=b},reset:function(){this.target=null,this.view.x=0,this.view.y=0,this._shake.duration=0,this.resetFX()},resetFX:function(){this.fx.clear(),this.fx.alpha=0,this._fxDuration=0}},c.Camera.prototype.constructor=c.Camera,Object.defineProperty(c.Camera.prototype,"x",{get:function(){return this.view.x},set:function(a){this.view.x=a,this.bounds&&this.checkBounds()}}),Object.defineProperty(c.Camera.prototype,"y",{get:function(){return this.view.y},set:function(a){this.view.y=a,this.bounds&&this.checkBounds()}}),Object.defineProperty(c.Camera.prototype,"position",{get:function(){return this._position.set(this.view.x,this.view.y),this._position},set:function(a){"undefined"!=typeof a.x&&(this.view.x=a.x),"undefined"!=typeof a.y&&(this.view.y=a.y),this.bounds&&this.checkBounds()}}),Object.defineProperty(c.Camera.prototype,"width",{get:function(){return this.view.width},set:function(a){this.view.width=a}}),Object.defineProperty(c.Camera.prototype,"height",{get:function(){return this.view.height},set:function(a){this.view.height=a}}),Object.defineProperty(c.Camera.prototype,"shakeIntensity",{get:function(){return this._shake.intensity},set:function(a){this._shake.intensity=a}}),c.State=function(){this.game=null,this.key="",this.add=null,this.make=null,this.camera=null,this.cache=null,this.input=null,this.load=null,this.math=null,this.sound=null,this.scale=null,this.stage=null,this.state=null,this.time=null,this.tweens=null,this.world=null,this.particles=null,this.physics=null,this.rnd=null},c.State.prototype={init:function(){},preload:function(){},loadUpdate:function(){},loadRender:function(){},create:function(){},update:function(){},preRender:function(){},render:function(){},resize:function(){},paused:function(){},resumed:function(){},pauseUpdate:function(){},shutdown:function(){}},c.State.prototype.constructor=c.State,c.StateManager=function(a,b){this.game=a,this.states={},this._pendingState=null,"undefined"!=typeof b&&null!==b&&(this._pendingState=b),this._clearWorld=!1,this._clearCache=!1,this._created=!1,this._args=[],this.current="",this.onStateChange=new c.Signal,this.onInitCallback=null,this.onPreloadCallback=null,this.onCreateCallback=null,this.onUpdateCallback=null,this.onRenderCallback=null,this.onResizeCallback=null,this.onPreRenderCallback=null,this.onLoadUpdateCallback=null,this.onLoadRenderCallback=null,this.onPausedCallback=null,this.onResumedCallback=null,this.onPauseUpdateCallback=null,this.onShutDownCallback=null},c.StateManager.prototype={boot:function(){this.game.onPause.add(this.pause,this),this.game.onResume.add(this.resume,this),null!==this._pendingState&&"string"!=typeof this._pendingState&&this.add("default",this._pendingState,!0)},add:function(a,b,d){void 0===d&&(d=!1);var e;return b instanceof c.State?e=b:"object"==typeof b?(e=b,e.game=this.game):"function"==typeof b&&(e=new b(this.game)),this.states[a]=e,d&&(this.game.isBooted?this.start(a):this._pendingState=a),e},remove:function(a){this.current===a&&(this.callbackContext=null,this.onInitCallback=null,this.onShutDownCallback=null,this.onPreloadCallback=null,this.onLoadRenderCallback=null,this.onLoadUpdateCallback=null,this.onCreateCallback=null,this.onUpdateCallback=null,this.onPreRenderCallback=null,this.onRenderCallback=null,this.onResizeCallback=null,this.onPausedCallback=null,this.onResumedCallback=null,this.onPauseUpdateCallback=null),delete this.states[a]},start:function(a,b,c){void 0===b&&(b=!0),void 0===c&&(c=!1),this.checkState(a)&&(this._pendingState=a,this._clearWorld=b,this._clearCache=c,arguments.length>3&&(this._args=Array.prototype.splice.call(arguments,3)))},restart:function(a,b){void 0===a&&(a=!0),void 0===b&&(b=!1),this._pendingState=this.current,this._clearWorld=a,this._clearCache=b,arguments.length>2&&(this._args=Array.prototype.slice.call(arguments,2))},dummy:function(){},preUpdate:function(){if(this._pendingState&&this.game.isBooted){var a=this.current;if(this.clearCurrentState(),this.setCurrentState(this._pendingState),this.onStateChange.dispatch(this.current,a),this.current!==this._pendingState)return;this._pendingState=null,this.onPreloadCallback?(this.game.load.reset(!0),this.onPreloadCallback.call(this.callbackContext,this.game),0===this.game.load.totalQueuedFiles()&&0===this.game.load.totalQueuedPacks()?this.loadComplete():this.game.load.start()):this.loadComplete()}},clearCurrentState:function(){this.current&&(this.onShutDownCallback&&this.onShutDownCallback.call(this.callbackContext,this.game),this.game.tweens.removeAll(),this.game.camera.reset(),this.game.input.reset(!0),this.game.physics.clear(),this.game.time.removeAll(),this.game.scale.reset(this._clearWorld),this.game.debug&&this.game.debug.reset(),this._clearWorld&&(this.game.world.shutdown(),this._clearCache&&this.game.cache.destroy()))},checkState:function(a){return this.states[a]?this.states[a].preload||this.states[a].create||this.states[a].update||this.states[a].render?!0:(console.warn("Invalid Phaser State object given. Must contain at least a one of the required functions: preload, create, update or render"),!1):(console.warn("Phaser.StateManager - No state found with the key: "+a),!1)},link:function(a){this.states[a].game=this.game,this.states[a].add=this.game.add,this.states[a].make=this.game.make,this.states[a].camera=this.game.camera,this.states[a].cache=this.game.cache,this.states[a].input=this.game.input,this.states[a].load=this.game.load,this.states[a].math=this.game.math,this.states[a].sound=this.game.sound,this.states[a].scale=this.game.scale,this.states[a].state=this,this.states[a].stage=this.game.stage,this.states[a].time=this.game.time,this.states[a].tweens=this.game.tweens,this.states[a].world=this.game.world,this.states[a].particles=this.game.particles,this.states[a].rnd=this.game.rnd,this.states[a].physics=this.game.physics,this.states[a].key=a},unlink:function(a){this.states[a]&&(this.states[a].game=null,this.states[a].add=null,this.states[a].make=null,this.states[a].camera=null,this.states[a].cache=null,this.states[a].input=null,this.states[a].load=null,this.states[a].math=null,this.states[a].sound=null,this.states[a].scale=null,this.states[a].state=null,this.states[a].stage=null,this.states[a].time=null,this.states[a].tweens=null,this.states[a].world=null,this.states[a].particles=null,this.states[a].rnd=null,this.states[a].physics=null)},setCurrentState:function(a){this.callbackContext=this.states[a],this.link(a),this.onInitCallback=this.states[a].init||this.dummy,this.onPreloadCallback=this.states[a].preload||null,this.onLoadRenderCallback=this.states[a].loadRender||null,this.onLoadUpdateCallback=this.states[a].loadUpdate||null,this.onCreateCallback=this.states[a].create||null,this.onUpdateCallback=this.states[a].update||null,this.onPreRenderCallback=this.states[a].preRender||null,this.onRenderCallback=this.states[a].render||null,this.onResizeCallback=this.states[a].resize||null,this.onPausedCallback=this.states[a].paused||null,this.onResumedCallback=this.states[a].resumed||null,this.onPauseUpdateCallback=this.states[a].pauseUpdate||null,this.onShutDownCallback=this.states[a].shutdown||this.dummy,""!==this.current&&this.game.physics.reset(),this.current=a,this._created=!1,this.onInitCallback.apply(this.callbackContext,this._args),a===this._pendingState&&(this._args=[]),this.game._kickstart=!0},getCurrentState:function(){return this.states[this.current]},loadComplete:function(){this._created===!1&&this.onLoadUpdateCallback&&this.onLoadUpdateCallback.call(this.callbackContext,this.game),this._created===!1&&this.onCreateCallback?(this._created=!0,this.onCreateCallback.call(this.callbackContext,this.game)):this._created=!0},pause:function(){this._created&&this.onPausedCallback&&this.onPausedCallback.call(this.callbackContext,this.game)},resume:function(){this._created&&this.onResumedCallback&&this.onResumedCallback.call(this.callbackContext,this.game)},update:function(){this._created?this.onUpdateCallback&&this.onUpdateCallback.call(this.callbackContext,this.game):this.onLoadUpdateCallback&&this.onLoadUpdateCallback.call(this.callbackContext,this.game)},pauseUpdate:function(){this._created?this.onPauseUpdateCallback&&this.onPauseUpdateCallback.call(this.callbackContext,this.game):this.onLoadUpdateCallback&&this.onLoadUpdateCallback.call(this.callbackContext,this.game)},preRender:function(a){this._created&&this.onPreRenderCallback&&this.onPreRenderCallback.call(this.callbackContext,this.game,a)},resize:function(a,b){this.onResizeCallback&&this.onResizeCallback.call(this.callbackContext,a,b)},render:function(){this._created?this.onRenderCallback&&(this.game.renderType===c.CANVAS?(this.game.context.save(),this.game.context.setTransform(1,0,0,1,0,0),this.onRenderCallback.call(this.callbackContext,this.game),this.game.context.restore()):this.onRenderCallback.call(this.callbackContext,this.game)):this.onLoadRenderCallback&&this.onLoadRenderCallback.call(this.callbackContext,this.game)},destroy:function(){this._clearWorld=!0,this._clearCache=!0,this.clearCurrentState(),this.callbackContext=null,this.onInitCallback=null,this.onShutDownCallback=null,this.onPreloadCallback=null,this.onLoadRenderCallback=null,this.onLoadUpdateCallback=null,this.onCreateCallback=null,this.onUpdateCallback=null,this.onRenderCallback=null,this.onPausedCallback=null,this.onResumedCallback=null,this.onPauseUpdateCallback=null,this.game=null,this.states={},this._pendingState=null,this.current=""}},c.StateManager.prototype.constructor=c.StateManager,Object.defineProperty(c.StateManager.prototype,"created",{get:function(){return this._created}}),c.Signal=function(){},c.Signal.prototype={_bindings:null,_prevParams:null,memorize:!1,_shouldPropagate:!0,active:!0,_boundDispatch:!1,validateListener:function(a,b){if("function"!=typeof a)throw new Error("Phaser.Signal: listener is a required param of {fn}() and should be a Function.".replace("{fn}",b))},_registerListener:function(a,b,d,e,f){var g,h=this._indexOfListener(a,d);if(-1!==h){if(g=this._bindings[h],g.isOnce()!==b)throw new Error("You cannot add"+(b?"":"Once")+"() then add"+(b?"Once":"")+"() the same listener without removing the relationship first.")}else g=new c.SignalBinding(this,a,b,d,e,f),this._addBinding(g);return this.memorize&&this._prevParams&&g.execute(this._prevParams),g},_addBinding:function(a){this._bindings||(this._bindings=[]);var b=this._bindings.length;do b--;while(this._bindings[b]&&a._priority<=this._bindings[b]._priority);this._bindings.splice(b+1,0,a)},_indexOfListener:function(a,b){if(!this._bindings)return-1;void 0===b&&(b=null);for(var c,d=this._bindings.length;d--;)if(c=this._bindings[d],c._listener===a&&c.context===b)return d;return-1},has:function(a,b){return-1!==this._indexOfListener(a,b)},add:function(a,b,c){this.validateListener(a,"add");var d=[];if(arguments.length>3)for(var e=3;e3)for(var e=3;ea||a>=this.children.length?-1:this.getChildAt(a)},c.Group.prototype.create=function(a,b,c,d,e,f){void 0===e&&(e=!0);var g=new this.classType(this.game,a,b,c,d);return g.exists=e,g.visible=e,g.alive=e,this.add(g,!1,f)},c.Group.prototype.createMultiple=function(a,b,c,d){void 0===c&&(c=0),void 0===d&&(d=!1),Array.isArray(b)||(b=[b]),Array.isArray(c)||(c=[c]);var e=this,f=[];return b.forEach(function(b){c.forEach(function(c){for(var g=0;a>g;g++)f.push(e.create(0,0,b,c,d))})}),f},c.Group.prototype.updateZ=function(){for(var a=this.children.length;a--;)this.children[a].z=a},c.Group.prototype.align=function(a,b,d,e,f,g){if(void 0===f&&(f=c.TOP_LEFT),void 0===g&&(g=0),!(0===this.children.length||g>this.children.length||-1===a&&-1===b))for(var h=new c.Rectangle(0,0,d,e),i=a*d,j=b*e,k=g;kthis.children.length-1&&(a=0),this.cursor?(this.cursorIndex=a,this.cursor=this.children[this.cursorIndex],this.cursor):void 0},c.Group.prototype.next=function(){return this.cursor?(this.cursorIndex>=this.children.length-1?this.cursorIndex=0:this.cursorIndex++,this.cursor=this.children[this.cursorIndex],this.cursor):void 0},c.Group.prototype.previous=function(){return this.cursor?(0===this.cursorIndex?this.cursorIndex=this.children.length-1:this.cursorIndex--,this.cursor=this.children[this.cursorIndex],this.cursor):void 0},c.Group.prototype.swap=function(a,b){this.swapChildren(a,b),this.updateZ()},c.Group.prototype.bringToTop=function(a){return a.parent===this&&this.getIndex(a)0&&(this.remove(a,!1,!0),this.addAt(a,0,!0)),a},c.Group.prototype.moveUp=function(a){if(a.parent===this&&this.getIndex(a)0){var b=this.getIndex(a),c=this.getAt(b-1);c&&this.swap(a,c)}return a},c.Group.prototype.xy=function(a,b,c){return 0>a||a>this.children.length?-1:(this.getChildAt(a).x=b,void(this.getChildAt(a).y=c))},c.Group.prototype.reverse=function(){this.children.reverse(),this.updateZ()},c.Group.prototype.getIndex=function(a){return this.children.indexOf(a)},c.Group.prototype.getByName=function(a){for(var b=0;b0))return!1;var f=b.length;return 1===f?0===d?a[b[0]]=c:1==d?a[b[0]]+=c:2==d?a[b[0]]-=c:3==d?a[b[0]]*=c:4==d&&(a[b[0]]/=c):2===f?0===d?a[b[0]][b[1]]=c:1==d?a[b[0]][b[1]]+=c:2==d?a[b[0]][b[1]]-=c:3==d?a[b[0]][b[1]]*=c:4==d&&(a[b[0]][b[1]]/=c):3===f?0===d?a[b[0]][b[1]][b[2]]=c:1==d?a[b[0]][b[1]][b[2]]+=c:2==d?a[b[0]][b[1]][b[2]]-=c:3==d?a[b[0]][b[1]][b[2]]*=c:4==d&&(a[b[0]][b[1]][b[2]]/=c):4===f&&(0===d?a[b[0]][b[1]][b[2]][b[3]]=c:1==d?a[b[0]][b[1]][b[2]][b[3]]+=c:2==d?a[b[0]][b[1]][b[2]][b[3]]-=c:3==d?a[b[0]][b[1]][b[2]][b[3]]*=c:4==d&&(a[b[0]][b[1]][b[2]][b[3]]/=c)),!0},c.Group.prototype.checkProperty=function(a,b,d,e){return void 0===e&&(e=!1),!c.Utils.getProperty(a,b)&&e?!1:c.Utils.getProperty(a,b)===d},c.Group.prototype.set=function(a,b,c,d,e,f,g){return void 0===g&&(g=!1),b=b.split("."),void 0===d&&(d=!1),void 0===e&&(e=!1),(d===!1||d&&a.alive)&&(e===!1||e&&a.visible)?this.setProperty(a,b,c,f,g):void 0},c.Group.prototype.setAll=function(a,b,c,d,e,f){void 0===c&&(c=!1),void 0===d&&(d=!1),void 0===f&&(f=!1),a=a.split("."),e=e||0;for(var g=0;g2){c=[];for(var d=2;d2){e=[];for(var f=2;f2){d=[null];for(var e=2;e2){d=[null];for(var e=2;e2){d=[null];for(var e=2;eb[this._sortProperty]?1:a.zb[this._sortProperty]?-1:0},c.Group.prototype.iterate=function(a,b,d,e,f,g){if(d===c.Group.RETURN_TOTAL&&0===this.children.length)return 0;for(var h=0,i=0;i0?this.children[this.children.length-1]:void 0},c.Group.prototype.getBottom=function(){return this.children.length>0?this.children[0]:void 0},c.Group.prototype.getClosestTo=function(a,b,d){for(var e=Number.MAX_VALUE,f=0,g=null,h=0;hf&&(!b||b.call(d,i,f))&&(e=f,g=i))}return g},c.Group.prototype.getFurthestFrom=function(a,b,d){for(var e=0,f=0,g=null,h=0;he&&(!b||b.call(d,i,f))&&(e=f,g=i))}return g},c.Group.prototype.countLiving=function(){return this.iterate("alive",!0,c.Group.RETURN_TOTAL)},c.Group.prototype.countDead=function(){return this.iterate("alive",!1,c.Group.RETURN_TOTAL)},c.Group.prototype.getRandom=function(a,b){return 0===this.children.length?null:(a=a||0,b=b||this.children.length,c.ArrayUtils.getRandomItem(this.children,a,b))},c.Group.prototype.remove=function(a,b,c){if(void 0===b&&(b=!1),void 0===c&&(c=!1),0===this.children.length||-1===this.children.indexOf(a))return!1;c||!a.events||a.destroyPhase||a.events.onRemovedFromGroup$dispatch(a,this);var d=this.removeChild(a);return this.removeFromHash(a),this.updateZ(),this.cursor===a&&this.next(),b&&d&&d.destroy(!0),!0},c.Group.prototype.moveAll=function(a,b){if(void 0===b&&(b=!1),this.children.length>0&&a instanceof c.Group){do a.add(this.children[0],b);while(this.children.length>0);this.hash=[],this.cursor=null}return a},c.Group.prototype.removeAll=function(a,b,c){if(void 0===a&&(a=!1),void 0===b&&(b=!1),void 0===c&&(c=!1),0!==this.children.length){do{!b&&this.children[0].events&&this.children[0].events.onRemovedFromGroup$dispatch(this.children[0],this);var d=this.removeChild(this.children[0]);this.removeFromHash(d),a&&d&&d.destroy(!0,c)}while(this.children.length>0);this.hash=[],this.cursor=null}},c.Group.prototype.removeBetween=function(a,b,c,d){if(void 0===b&&(b=this.children.length-1),void 0===c&&(c=!1),void 0===d&&(d=!1),0!==this.children.length){if(a>b||0>a||b>this.children.length)return!1;for(var e=b;e>=a;){!d&&this.children[e].events&&this.children[e].events.onRemovedFromGroup$dispatch(this.children[e],this);var f=this.removeChild(this.children[e]);this.removeFromHash(f),c&&f&&f.destroy(!0),this.cursor===this.children[e]&&(this.cursor=null),e--}this.updateZ()}},c.Group.prototype.destroy=function(a,b){null===this.game||this.ignoreDestroy||(void 0===a&&(a=!0),void 0===b&&(b=!1),this.onDestroy.dispatch(this,a,b),this.removeAll(a),this.cursor=null,this.filters=null,this.pendingDestroy=!1,b||(this.parent&&this.parent.removeChild(this),this.game=null,this.exists=!1))},Object.defineProperty(c.Group.prototype,"total",{get:function(){return this.iterate("exists",!0,c.Group.RETURN_TOTAL)}}),Object.defineProperty(c.Group.prototype,"length",{get:function(){return this.children.length}}),Object.defineProperty(c.Group.prototype,"angle",{get:function(){return c.Math.radToDeg(this.rotation)},set:function(a){this.rotation=c.Math.degToRad(a)}}),Object.defineProperty(c.Group.prototype,"centerX",{get:function(){return this.getBounds().centerX},set:function(a){var b=this.getBounds(),c=this.x-b.x;this.x=a+c-b.halfWidth}}),Object.defineProperty(c.Group.prototype,"centerY",{get:function(){return this.getBounds().centerY},set:function(a){var b=this.getBounds(),c=this.y-b.y;this.y=a+c-b.halfHeight}}),Object.defineProperty(c.Group.prototype,"left",{get:function(){return this.getBounds().left},set:function(a){var b=this.getBounds(),c=this.x-b.x;this.x=a+c}}),Object.defineProperty(c.Group.prototype,"right",{get:function(){return this.getBounds().right},set:function(a){var b=this.getBounds(),c=this.x-b.x;this.x=a+c-b.width}}),Object.defineProperty(c.Group.prototype,"top",{get:function(){return this.getBounds().top},set:function(a){var b=this.getBounds(),c=this.y-b.y;this.y=a+c}}),Object.defineProperty(c.Group.prototype,"bottom",{get:function(){return this.getBounds().bottom},set:function(a){var b=this.getBounds(),c=this.y-b.y;this.y=a+c-b.height}}),c.World=function(a){c.Group.call(this,a,null,"__world",!1),this.bounds=new c.Rectangle(0,0,a.width,a.height),this.camera=null,this._definedSize=!1,this._width=a.width,this._height=a.height,this.game.state.onStateChange.add(this.stateChange,this)},c.World.prototype=Object.create(c.Group.prototype),c.World.prototype.constructor=c.World,c.World.prototype.boot=function(){this.camera=new c.Camera(this.game,0,0,0,this.game.width,this.game.height),this.game.stage.addChild(this),this.camera.boot()},c.World.prototype.stateChange=function(){this.x=0,this.y=0,this.camera.reset()},c.World.prototype.setBounds=function(a,b,c,d){this._definedSize=!0,this._width=c,this._height=d,this.bounds.setTo(a,b,c,d),this.x=a,this.y=b,this.camera.bounds&&this.camera.bounds.setTo(a,b,Math.max(c,this.game.width),Math.max(d,this.game.height)),this.game.physics.setBoundsToWorld()},c.World.prototype.resize=function(a,b){this._definedSize&&(athis.bounds.right&&(a.x=this.bounds.left)),e&&(a.y+a._currentBounds.heightthis.bounds.bottom&&(a.y=this.bounds.top))):(d&&a.x+bthis.bounds.right&&(a.x=this.bounds.left-b),e&&a.y+bthis.bounds.bottom&&(a.y=this.bounds.top-b))},Object.defineProperty(c.World.prototype,"width",{get:function(){return this.bounds.width},set:function(a){ag;g++)e>g?f.push("color: #ff2424; background: #fff"):f.push("color: #959595; background: #fff");console.log.apply(console,f)}else window.console&&console.log("Phaser v"+a+" | Pixi.js "+PIXI.VERSION+" | "+b+" | "+d+" | http://phaser.io")}},setUpRenderer:function(){if(this.config.canvas?this.canvas=this.config.canvas:this.canvas=c.Canvas.create(this,this.width,this.height,this.config.canvasID,!0),this.config.canvasStyle?this.canvas.style=this.config.canvasStyle:this.canvas.style["-webkit-full-screen"]="width: 100%; height: 100%",this.renderType===c.HEADLESS||this.renderType===c.CANVAS||this.renderType===c.AUTO&&!this.device.webGL){if(!this.device.canvas)throw new Error("Phaser.Game - Cannot create Canvas or WebGL context, aborting.");this.renderType=c.CANVAS,this.renderer=new PIXI.CanvasRenderer(this),this.context=this.renderer.context}else this.renderType=c.WEBGL,this.renderer=new PIXI.WebGLRenderer(this),this.context=null,this.canvas.addEventListener("webglcontextlost",this.contextLost.bind(this),!1),this.canvas.addEventListener("webglcontextrestored",this.contextRestored.bind(this),!1);this.device.cocoonJS&&(this.canvas.screencanvas=this.renderType===c.CANVAS),this.renderType!==c.HEADLESS&&(this.stage.smoothed=this.antialias,c.Canvas.addToDOM(this.canvas,this.parent,!1),c.Canvas.setTouchAction(this.canvas))},contextLost:function(a){a.preventDefault(),this.renderer.contextLost=!0},contextRestored:function(){this.renderer.initContext(),this.cache.clearGLTextures(),this.renderer.contextLost=!1},update:function(a){if(this.time.update(a),this._kickstart)return this.updateLogic(this.time.desiredFpsMult),this.updateRender(this.time.slowMotion*this.time.desiredFps),void(this._kickstart=!1);if(this._spiraling>1&&!this.forceSingleUpdate)this.time.time>this._nextFpsNotification&&(this._nextFpsNotification=this.time.time+1e4,this.fpsProblemNotifier.dispatch()),this._deltaTime=0,this._spiraling=0,this.updateRender(this.time.slowMotion*this.time.desiredFps);else{var b=1e3*this.time.slowMotion/this.time.desiredFps;this._deltaTime+=Math.max(Math.min(3*b,this.time.elapsed),0);var c=0;for(this.updatesThisFrame=Math.floor(this._deltaTime/b),this.forceSingleUpdate&&(this.updatesThisFrame=Math.min(1,this.updatesThisFrame));this._deltaTime>=b&&(this._deltaTime-=b,this.currentUpdateID=c,this.updateLogic(this.time.desiredFpsMult),c++,!this.forceSingleUpdate||1!==c);)this.time.refresh();c>this._lastCount?this._spiraling++:c=c.Input.MAX_POINTERS)return console.warn("Phaser.Input.addPointer: Maximum limit of "+c.Input.MAX_POINTERS+" pointers reached."),null;var a=this.pointers.length+1,b=new c.Pointer(this.game,a,c.PointerMode.TOUCH);return this.pointers.push(b),this["pointer"+a]=b,b},update:function(){if(this.keyboard&&this.keyboard.update(),this.pollRate>0&&this._pollCounter=0&&this.countActivePointers(this.maxPointers)>=this.maxPointers)return null;if(!this.pointer1.active)return this.pointer1.start(a);if(!this.pointer2.active)return this.pointer2.start(a);for(var b=2;b0;c++){var d=this.pointers[c];d.active&&b--}return a-b},getPointer:function(a){void 0===a&&(a=!1);for(var b=0;b=g&&this._localPoint.x=h&&this._localPoint.y=g&&this._localPoint.x=h&&this._localPoint.y0&&this._pollCounterthis.game.time.time},justReleased:function(a){return a=a||250,this.isUp&&this.timeUp+a>this.game.time.time},reset:function(){this.isDown=!1,this.isUp=!0,this.timeDown=this.game.time.time,this.repeats=0,this.altKey=!1,this.shiftKey=!1,this.ctrlKey=!1},destroy:function(){this.onDown.dispose(),this.onUp.dispose(),this.onFloat.dispose(),this.parent=null,this.game=null}},c.DeviceButton.prototype.constructor=c.DeviceButton,Object.defineProperty(c.DeviceButton.prototype,"duration",{get:function(){return this.isUp?-1:this.game.time.time-this.timeDown}}),c.Pointer=function(a,b,d){this.game=a,this.id=b,this.type=c.POINTER,this.exists=!0,this.identifier=0,this.pointerId=null,this.pointerMode=d||c.PointerMode.CURSOR|c.PointerMode.CONTACT,this.target=null,this.button=null,this.leftButton=new c.DeviceButton(this,c.Pointer.LEFT_BUTTON),this.middleButton=new c.DeviceButton(this,c.Pointer.MIDDLE_BUTTON),this.rightButton=new c.DeviceButton(this,c.Pointer.RIGHT_BUTTON),this.backButton=new c.DeviceButton(this,c.Pointer.BACK_BUTTON),this.forwardButton=new c.DeviceButton(this,c.Pointer.FORWARD_BUTTON),this.eraserButton=new c.DeviceButton(this,c.Pointer.ERASER_BUTTON),this._holdSent=!1,this._history=[],this._nextDrop=0,this._stateReset=!1,this.withinGame=!1,this.clientX=-1,this.clientY=-1,this.pageX=-1,this.pageY=-1,this.screenX=-1,this.screenY=-1,this.rawMovementX=0,this.rawMovementY=0,this.movementX=0,this.movementY=0,this.x=-1,this.y=-1,this.isMouse=0===b,this.isDown=!1,this.isUp=!0,this.timeDown=0,this.timeUp=0,this.previousTapTime=0,this.totalTouches=0,this.msSinceLastClick=Number.MAX_VALUE,this.targetObject=null,this.interactiveCandidates=[],this.active=!1,this.dirty=!1,this.position=new c.Point,this.positionDown=new c.Point,this.positionUp=new c.Point,this.circle=new c.Circle(0,0,44),this._clickTrampolines=null,this._trampolineTargetObject=null},c.Pointer.NO_BUTTON=0,c.Pointer.LEFT_BUTTON=1,c.Pointer.RIGHT_BUTTON=2,c.Pointer.MIDDLE_BUTTON=4,c.Pointer.BACK_BUTTON=8,c.Pointer.FORWARD_BUTTON=16,c.Pointer.ERASER_BUTTON=32,c.Pointer.prototype={resetButtons:function(){this.isDown=!1,this.isUp=!0,this.isMouse&&(this.leftButton.reset(),this.middleButton.reset(),this.rightButton.reset(),this.backButton.reset(),this.forwardButton.reset(),this.eraserButton.reset())},processButtonsDown:function(a,b){c.Pointer.LEFT_BUTTON&a&&this.leftButton.start(b),c.Pointer.RIGHT_BUTTON&a&&this.rightButton.start(b),c.Pointer.MIDDLE_BUTTON&a&&this.middleButton.start(b),c.Pointer.BACK_BUTTON&a&&this.backButton.start(b),c.Pointer.FORWARD_BUTTON&a&&this.forwardButton.start(b),c.Pointer.ERASER_BUTTON&a&&this.eraserButton.start(b)},processButtonsUp:function(a,b){a===c.Mouse.LEFT_BUTTON&&this.leftButton.stop(b),a===c.Mouse.RIGHT_BUTTON&&this.rightButton.stop(b),a===c.Mouse.MIDDLE_BUTTON&&this.middleButton.stop(b),a===c.Mouse.BACK_BUTTON&&this.backButton.stop(b),a===c.Mouse.FORWARD_BUTTON&&this.forwardButton.stop(b),5===a&&this.eraserButton.stop(b)},updateButtons:function(a){this.button=a.button;var b="down"===a.type.toLowerCase().substr(-4);void 0!==a.buttons?b?this.processButtonsDown(a.buttons,a):this.processButtonsUp(a.button,a):b?this.leftButton.start(a):(this.leftButton.stop(a),this.rightButton.stop(a)),1===a.buttons&&a.ctrlKey&&this.leftButton.isDown&&(this.leftButton.stop(a),this.rightButton.start(a)),this.isUp=!0,this.isDown=!1,(this.leftButton.isDown||this.rightButton.isDown||this.middleButton.isDown||this.backButton.isDown||this.forwardButton.isDown||this.eraserButton.isDown)&&(this.isUp=!1,this.isDown=!0)},start:function(a){var b=this.game.input;return a.pointerId&&(this.pointerId=a.pointerId),this.identifier=a.identifier,this.target=a.target,this.isMouse?this.updateButtons(a):(this.isDown=!0,this.isUp=!1),this.active=!0,this.withinGame=!0,this.dirty=!1,this._history=[],this._clickTrampolines=null,this._trampolineTargetObject=null,this.msSinceLastClick=this.game.time.time-this.timeDown,this.timeDown=this.game.time.time,this._holdSent=!1,this.move(a,!0),this.positionDown.setTo(this.x,this.y),(b.multiInputOverride===c.Input.MOUSE_OVERRIDES_TOUCH||b.multiInputOverride===c.Input.MOUSE_TOUCH_COMBINE||b.multiInputOverride===c.Input.TOUCH_OVERRIDES_MOUSE&&0===b.totalActivePointers)&&(b.x=this.x,b.y=this.y,b.position.setTo(this.x,this.y),b.onDown.dispatch(this,a),b.resetSpeed(this.x,this.y)),this._stateReset=!1,this.totalTouches++,null!==this.targetObject&&this.targetObject._touchedHandler(this),this},update:function(){var a=this.game.input;this.active&&(this.dirty&&(a.interactiveItems.total>0&&this.processInteractiveObjects(!1),this.dirty=!1),this._holdSent===!1&&this.duration>=a.holdRate&&((a.multiInputOverride===c.Input.MOUSE_OVERRIDES_TOUCH||a.multiInputOverride===c.Input.MOUSE_TOUCH_COMBINE||a.multiInputOverride===c.Input.TOUCH_OVERRIDES_MOUSE&&0===a.totalActivePointers)&&a.onHold.dispatch(this),this._holdSent=!0),a.recordPointerHistory&&this.game.time.time>=this._nextDrop&&(this._nextDrop=this.game.time.time+a.recordRate,this._history.push({x:this.position.x,y:this.position.y}),this._history.length>a.recordLimit&&this._history.shift()))},move:function(a,b){var d=this.game.input;if(!d.pollLocked){if(void 0===b&&(b=!1),void 0!==a.button&&(this.button=a.button),b&&this.isMouse&&this.updateButtons(a),this.clientX=a.clientX,this.clientY=a.clientY,this.pageX=a.pageX,this.pageY=a.pageY,this.screenX=a.screenX,this.screenY=a.screenY,this.isMouse&&d.mouse.locked&&!b&&(this.rawMovementX=a.movementX||a.mozMovementX||a.webkitMovementX||0,this.rawMovementY=a.movementY||a.mozMovementY||a.webkitMovementY||0,this.movementX+=this.rawMovementX,this.movementY+=this.rawMovementY),this.x=(this.pageX-this.game.scale.offset.x)*d.scale.x,this.y=(this.pageY-this.game.scale.offset.y)*d.scale.y,this.position.setTo(this.x,this.y),this.circle.x=this.x,this.circle.y=this.y,(d.multiInputOverride===c.Input.MOUSE_OVERRIDES_TOUCH||d.multiInputOverride===c.Input.MOUSE_TOUCH_COMBINE||d.multiInputOverride===c.Input.TOUCH_OVERRIDES_MOUSE&&0===d.totalActivePointers)&&(d.activePointer=this,d.x=this.x,d.y=this.y,d.position.setTo(d.x,d.y),d.circle.x=d.x,d.circle.y=d.y),this.withinGame=this.game.scale.bounds.contains(this.pageX,this.pageY),this.game.paused)return this;for(var e=d.moveCallbacks.length;e--;)d.moveCallbacks[e].callback.call(d.moveCallbacks[e].context,this,this.x,this.y,b);return null!==this.targetObject&&this.targetObject.isDragged===!0?this.targetObject.update(this)===!1&&(this.targetObject=null):d.interactiveItems.total>0&&this.processInteractiveObjects(b),this}},processInteractiveObjects:function(a){var b=0,c=-1,d=null,e=this.game.input.interactiveItems.first;for(this.interactiveCandidates=[];e;)e.checked=!1,e.validForInput(c,b,!1)&&(e.checked=!0,(a&&e.checkPointerDown(this,!0)||!a&&e.checkPointerOver(this,!0))&&(b=e.sprite.renderOrderID,c=e.priorityID,d=e,this.interactiveCandidates.push(e))),e=this.game.input.interactiveItems.next;for(e=this.game.input.interactiveItems.first;e;)!e.checked&&e.validForInput(c,b,!0)&&(a&&e.checkPointerDown(this,!1)||!a&&e.checkPointerOver(this,!1))&&(b=e.sprite.renderOrderID,c=e.priorityID,d=e,this.interactiveCandidates.push(e)),e=this.game.input.interactiveItems.next;return this.game.input.customCandidateHandler&&(d=this.game.input.customCandidateHandler.call(this.game.input.customCandidateHandlerContext,this,this.interactiveCandidates,d)),this.swapTarget(d,!1),null!==this.targetObject},swapTarget:function(a,b){void 0===b&&(b=!1),null===a?this.targetObject&&(this.targetObject._pointerOutHandler(this,b),this.targetObject=null):null===this.targetObject?(this.targetObject=a,a._pointerOverHandler(this,b)):this.targetObject===a?a.update(this)===!1&&(this.targetObject=null):(this.targetObject._pointerOutHandler(this,b),this.targetObject=a,this.targetObject._pointerOverHandler(this,b))},leave:function(a){this.withinGame=!1,this.move(a,!1)},stop:function(a){var b=this.game.input;return this._stateReset&&this.withinGame?void a.preventDefault():(this.timeUp=this.game.time.time,(b.multiInputOverride===c.Input.MOUSE_OVERRIDES_TOUCH||b.multiInputOverride===c.Input.MOUSE_TOUCH_COMBINE||b.multiInputOverride===c.Input.TOUCH_OVERRIDES_MOUSE&&0===b.totalActivePointers)&&(b.onUp.dispatch(this,a),this.duration>=0&&this.duration<=b.tapRate&&(this.timeUp-this.previousTapTime0&&(this.active=!1),this.withinGame=this.game.scale.bounds.contains(a.pageX,a.pageY),this.pointerId=null,this.identifier=null,this.positionUp.setTo(this.x,this.y),this.isMouse===!1&&b.currentPointers--,b.interactiveItems.callAll("_releasedHandler",this),this._clickTrampolines&&(this._trampolineTargetObject=this.targetObject),this.targetObject=null,this)},justPressed:function(a){return a=a||this.game.input.justPressedRate,this.isDown===!0&&this.timeDown+a>this.game.time.time},justReleased:function(a){return a=a||this.game.input.justReleasedRate,this.isUp&&this.timeUp+a>this.game.time.time},addClickTrampoline:function(a,b,c,d){if(this.isDown){for(var e=this._clickTrampolines=this._clickTrampolines||[],f=0;fd;d++)this._pointerData[d]={id:d,x:0,y:0,isDown:!1,isUp:!1,isOver:!1,isOut:!1,timeOver:0,timeOut:0,timeDown:0,timeUp:0,downDuration:0,isDragged:!1};this.snapOffset=new c.Point,this.enabled=!0,this._wasEnabled=!0}return this.sprite.events.onAddedToGroup.add(this.addedToGroup,this),this.sprite.events.onRemovedFromGroup.add(this.removedFromGroup,this),this.flagged=!1,this.sprite},addedToGroup:function(){this._dragPhase||this._wasEnabled&&!this.enabled&&this.start()},removedFromGroup:function(){this._dragPhase||(this.enabled?(this._wasEnabled=!0,this.stop()):this._wasEnabled=!1)},reset:function(){this.enabled=!1,this.flagged=!1;for(var a=0;10>a;a++)this._pointerData[a]={id:a,x:0,y:0,isDown:!1,isUp:!1,isOver:!1,isOut:!1,timeOver:0,timeOut:0,timeDown:0,timeUp:0,downDuration:0,isDragged:!1}},stop:function(){this.enabled!==!1&&(this.enabled=!1,this.game.input.interactiveItems.remove(this))},destroy:function(){this.sprite&&(this._setHandCursor&&(this.game.canvas.style.cursor="default",this._setHandCursor=!1),this.enabled=!1,this.game.input.interactiveItems.remove(this),this._pointerData.length=0,this.boundsRect=null,this.boundsSprite=null,this.sprite=null)},validForInput:function(a,b,c){return void 0===c&&(c=!0),!this.enabled||0===this.sprite.scale.x||0===this.sprite.scale.y||this.priorityIDa||this.priorityID===a&&this.sprite.renderOrderID>b:!1},isPixelPerfect:function(){return this.pixelPerfectClick||this.pixelPerfectOver},pointerX:function(a){return a=a||0,this._pointerData[a].x},pointerY:function(a){return a=a||0,this._pointerData[a].y},pointerDown:function(a){return a=a||0,this._pointerData[a].isDown},pointerUp:function(a){return a=a||0,this._pointerData[a].isUp},pointerTimeDown:function(a){return a=a||0,this._pointerData[a].timeDown},pointerTimeUp:function(a){return a=a||0,this._pointerData[a].timeUp},pointerOver:function(a){if(!this.enabled)return!1;if(void 0===a){for(var b=0;10>b;b++)if(this._pointerData[b].isOver)return!0;return!1}return this._pointerData[a].isOver},pointerOut:function(a){if(!this.enabled)return!1;if(void 0!==a)return this._pointerData[a].isOut;for(var b=0;10>b;b++)if(this._pointerData[b].isOut)return!0},pointerTimeOver:function(a){return a=a||0,this._pointerData[a].timeOver},pointerTimeOut:function(a){return a=a||0,this._pointerData[a].timeOut},pointerDragged:function(a){return a=a||0,this._pointerData[a].isDragged},checkPointerDown:function(a,b){return a.isDown&&this.enabled&&this.sprite&&this.sprite.parent&&this.sprite.visible&&this.sprite.parent.visible&&0!==this.sprite.worldScale.x&&0!==this.sprite.worldScale.y&&this.game.input.hitTest(this.sprite,a,this._tempPoint)?(void 0===b&&(b=!1),!b&&this.pixelPerfectClick?this.checkPixel(this._tempPoint.x,this._tempPoint.y):!0):!1},checkPointerOver:function(a,b){return this.enabled&&this.sprite&&this.sprite.parent&&this.sprite.visible&&this.sprite.parent.visible&&0!==this.sprite.worldScale.x&&0!==this.sprite.worldScale.y&&this.game.input.hitTest(this.sprite,a,this._tempPoint)?(void 0===b&&(b=!1),!b&&this.pixelPerfectOver?this.checkPixel(this._tempPoint.x,this._tempPoint.y):!0):!1},checkPixel:function(a,b,c){if(this.sprite.texture.baseTexture.source){if(null===a&&null===b){this.game.input.getLocalPosition(this.sprite,c,this._tempPoint);var a=this._tempPoint.x,b=this._tempPoint.y}if(0!==this.sprite.anchor.x&&(a-=-this.sprite.texture.frame.width*this.sprite.anchor.x),0!==this.sprite.anchor.y&&(b-=-this.sprite.texture.frame.height*this.sprite.anchor.y),a+=this.sprite.texture.frame.x,b+=this.sprite.texture.frame.y,this.sprite.texture.trim&&(a-=this.sprite.texture.trim.x,b-=this.sprite.texture.trim.y,athis.sprite.texture.crop.right||bthis.sprite.texture.crop.bottom))return this._dx=a,this._dy=b,!1;this._dx=a,this._dy=b,this.game.input.hitContext.clearRect(0,0,1,1),this.game.input.hitContext.drawImage(this.sprite.texture.baseTexture.source,a,b,1,1,0,0,1,1);var d=this.game.input.hitContext.getImageData(0,0,1,1);if(d.data[3]>=this.pixelPerfectAlpha)return!0}return!1},update:function(a){return null!==this.sprite&&void 0!==this.sprite.parent?this.enabled&&this.sprite.visible&&this.sprite.parent.visible?this._pendingDrag?(this._dragDistancePass||(this._dragDistancePass=c.Math.distance(a.x,a.y,this.downPoint.x,this.downPoint.y)>=this.dragDistanceThreshold),this._dragDistancePass&&this._dragTimePass&&this.startDrag(a),!0):this.draggable&&this._draggedPointerID===a.id?this.updateDrag(a,!1):this._pointerData[a.id].isOver?this.checkPointerOver(a)?(this._pointerData[a.id].x=a.x-this.sprite.x,this._pointerData[a.id].y=a.y-this.sprite.y,!0):(this._pointerOutHandler(a),!1):void 0:(this._pointerOutHandler(a), +!1):void 0},_pointerOverHandler:function(a,b){if(null!==this.sprite){var d=this._pointerData[a.id];if(d.isOver===!1||a.dirty){var e=d.isOver===!1;d.isOver=!0,d.isOut=!1,d.timeOver=this.game.time.time,d.x=a.x-this.sprite.x,d.y=a.y-this.sprite.y,this.useHandCursor&&d.isDragged===!1&&(this.game.canvas.style.cursor="pointer",this._setHandCursor=!0),!b&&e&&this.sprite&&this.sprite.events&&this.sprite.events.onInputOver$dispatch(this.sprite,a),this.sprite.parent&&this.sprite.parent.type===c.GROUP&&this.sprite.parent.onChildInputOver.dispatch(this.sprite,a)}}},_pointerOutHandler:function(a,b){if(null!==this.sprite){var d=this._pointerData[a.id];d.isOver=!1,d.isOut=!0,d.timeOut=this.game.time.time,this.useHandCursor&&d.isDragged===!1&&(this.game.canvas.style.cursor="default",this._setHandCursor=!1),!b&&this.sprite&&this.sprite.events&&(this.sprite.events.onInputOut$dispatch(this.sprite,a),this.sprite&&this.sprite.parent&&this.sprite.parent.type===c.GROUP&&this.sprite.parent.onChildInputOut.dispatch(this.sprite,a))}},_touchedHandler:function(a){if(null!==this.sprite){var b=this._pointerData[a.id];if(!b.isDown&&b.isOver){if(this.pixelPerfectClick&&!this.checkPixel(null,null,a))return;if(b.isDown=!0,b.isUp=!1,b.timeDown=this.game.time.time,this.downPoint.set(a.x,a.y),a.dirty=!0,this.sprite&&this.sprite.events&&(this.sprite.events.onInputDown$dispatch(this.sprite,a),this.sprite&&this.sprite.parent&&this.sprite.parent.type===c.GROUP&&this.sprite.parent.onChildInputDown.dispatch(this.sprite,a),null===this.sprite))return;this.draggable&&this.isDragged===!1&&(0===this.dragTimeThreshold&&0===this.dragDistanceThreshold?this.startDrag(a):(this._pendingDrag=!0,this._dragDistancePass=0===this.dragDistanceThreshold,this.dragTimeThreshold>0?(this._dragTimePass=!1,this.game.time.events.add(this.dragTimeThreshold,this.dragTimeElapsed,this,a)):this._dragTimePass=!0)),this.bringToTop&&this.sprite.bringToTop()}}},dragTimeElapsed:function(a){this._dragTimePass=!0,this._pendingDrag&&this.sprite&&this._dragDistancePass&&this.startDrag(a)},_releasedHandler:function(a){if(null!==this.sprite){var b=this._pointerData[a.id];if(b.isDown&&a.isUp){b.isDown=!1,b.isUp=!0,b.timeUp=this.game.time.time,b.downDuration=b.timeUp-b.timeDown;var d=this.checkPointerOver(a);this.sprite&&this.sprite.events&&(this.dragStopBlocksInputUp&&(!this.dragStopBlocksInputUp||this.draggable&&this.isDragged&&this._draggedPointerID===a.id)||this.sprite.events.onInputUp$dispatch(this.sprite,a,d),this.sprite&&this.sprite.parent&&this.sprite.parent.type===c.GROUP&&this.sprite.parent.onChildInputUp.dispatch(this.sprite,a,d),d&&(d=this.checkPointerOver(a))),b.isOver=d,!d&&this.useHandCursor&&(this.game.canvas.style.cursor="default",this._setHandCursor=!1),a.dirty=!0,this._pendingDrag=!1,this.draggable&&this.isDragged&&this._draggedPointerID===a.id&&this.stopDrag(a)}}},updateDrag:function(a,b){if(void 0===b&&(b=!1),a.isUp)return this.stopDrag(a),!1;var c=this.globalToLocalX(a.x)+this._dragPoint.x+this.dragOffset.x,d=this.globalToLocalY(a.y)+this._dragPoint.y+this.dragOffset.y;if(this.sprite.fixedToCamera)this.allowHorizontalDrag&&(this.sprite.cameraOffset.x=c),this.allowVerticalDrag&&(this.sprite.cameraOffset.y=d),this.boundsRect&&this.checkBoundsRect(),this.boundsSprite&&this.checkBoundsSprite(),this.snapOnDrag&&(this.sprite.cameraOffset.x=Math.round((this.sprite.cameraOffset.x-this.snapOffsetX%this.snapX)/this.snapX)*this.snapX+this.snapOffsetX%this.snapX,this.sprite.cameraOffset.y=Math.round((this.sprite.cameraOffset.y-this.snapOffsetY%this.snapY)/this.snapY)*this.snapY+this.snapOffsetY%this.snapY,this.snapPoint.set(this.sprite.cameraOffset.x,this.sprite.cameraOffset.y));else{var e=this.game.camera.x-this._pointerData[a.id].camX,f=this.game.camera.y-this._pointerData[a.id].camY;this.allowHorizontalDrag&&(this.sprite.x=c+e),this.allowVerticalDrag&&(this.sprite.y=d+f),this.boundsRect&&this.checkBoundsRect(),this.boundsSprite&&this.checkBoundsSprite(),this.snapOnDrag&&(this.sprite.x=Math.round((this.sprite.x-this.snapOffsetX%this.snapX)/this.snapX)*this.snapX+this.snapOffsetX%this.snapX,this.sprite.y=Math.round((this.sprite.y-this.snapOffsetY%this.snapY)/this.snapY)*this.snapY+this.snapOffsetY%this.snapY,this.snapPoint.set(this.sprite.x,this.sprite.y))}return this.sprite.events.onDragUpdate.dispatch(this.sprite,a,c,d,this.snapPoint,b),!0},justOver:function(a,b){return a=a||0,b=b||500,this._pointerData[a].isOver&&this.overDuration(a)a;a++)this._pointerData[a].isDragged=!1;this.draggable=!1,this.isDragged=!1,this._draggedPointerID=-1,this._pendingDrag=!1},startDrag:function(a){var b=this.sprite.x,c=this.sprite.y;if(this.isDragged=!0,this._draggedPointerID=a.id,this._pointerData[a.id].camX=this.game.camera.x,this._pointerData[a.id].camY=this.game.camera.y,this._pointerData[a.id].isDragged=!0,this.sprite.fixedToCamera){if(this.dragFromCenter){var d=this.sprite.getBounds();this.sprite.cameraOffset.x=this.globalToLocalX(a.x)+(this.sprite.cameraOffset.x-d.centerX),this.sprite.cameraOffset.y=this.globalToLocalY(a.y)+(this.sprite.cameraOffset.y-d.centerY)}this._dragPoint.setTo(this.sprite.cameraOffset.x-a.x,this.sprite.cameraOffset.y-a.y)}else{if(this.dragFromCenter){var d=this.sprite.getBounds();this.sprite.x=this.globalToLocalX(a.x)+(this.sprite.x-d.centerX),this.sprite.y=this.globalToLocalY(a.y)+(this.sprite.y-d.centerY)}this._dragPoint.setTo(this.sprite.x-this.globalToLocalX(a.x),this.sprite.y-this.globalToLocalY(a.y))}this.updateDrag(a,!0),this.bringToTop&&(this._dragPhase=!0,this.sprite.bringToTop()),this.dragStartPoint.set(b,c),this.sprite.events.onDragStart$dispatch(this.sprite,a,b,c),this._pendingDrag=!1},globalToLocalX:function(a){return this.scaleLayer&&(a-=this.game.scale.grid.boundsFluid.x,a*=this.game.scale.grid.scaleFluidInversed.x),a},globalToLocalY:function(a){return this.scaleLayer&&(a-=this.game.scale.grid.boundsFluid.y,a*=this.game.scale.grid.scaleFluidInversed.y),a},stopDrag:function(a){this.isDragged=!1,this._draggedPointerID=-1,this._pointerData[a.id].isDragged=!1,this._dragPhase=!1,this._pendingDrag=!1,this.snapOnRelease&&(this.sprite.fixedToCamera?(this.sprite.cameraOffset.x=Math.round((this.sprite.cameraOffset.x-this.snapOffsetX%this.snapX)/this.snapX)*this.snapX+this.snapOffsetX%this.snapX,this.sprite.cameraOffset.y=Math.round((this.sprite.cameraOffset.y-this.snapOffsetY%this.snapY)/this.snapY)*this.snapY+this.snapOffsetY%this.snapY):(this.sprite.x=Math.round((this.sprite.x-this.snapOffsetX%this.snapX)/this.snapX)*this.snapX+this.snapOffsetX%this.snapX,this.sprite.y=Math.round((this.sprite.y-this.snapOffsetY%this.snapY)/this.snapY)*this.snapY+this.snapOffsetY%this.snapY)),this.sprite.events.onDragStop$dispatch(this.sprite,a),this.checkPointerOver(a)===!1&&this._pointerOutHandler(a)},setDragLock:function(a,b){void 0===a&&(a=!0),void 0===b&&(b=!0),this.allowHorizontalDrag=a,this.allowVerticalDrag=b},enableSnap:function(a,b,c,d,e,f){void 0===c&&(c=!0),void 0===d&&(d=!1),void 0===e&&(e=0),void 0===f&&(f=0),this.snapX=a,this.snapY=b,this.snapOffsetX=e,this.snapOffsetY=f,this.snapOnDrag=c,this.snapOnRelease=d},disableSnap:function(){this.snapOnDrag=!1,this.snapOnRelease=!1},checkBoundsRect:function(){this.sprite.fixedToCamera?(this.sprite.cameraOffset.xthis.boundsRect.right&&(this.sprite.cameraOffset.x=this.boundsRect.right-this.sprite.width),this.sprite.cameraOffset.ythis.boundsRect.bottom&&(this.sprite.cameraOffset.y=this.boundsRect.bottom-this.sprite.height)):(this.sprite.leftthis.boundsRect.right&&(this.sprite.x=this.boundsRect.right-(this.sprite.width-this.sprite.offsetX)),this.sprite.topthis.boundsRect.bottom&&(this.sprite.y=this.boundsRect.bottom-(this.sprite.height-this.sprite.offsetY)))},checkBoundsSprite:function(){this.sprite.fixedToCamera&&this.boundsSprite.fixedToCamera?(this.sprite.cameraOffset.xthis.boundsSprite.cameraOffset.x+this.boundsSprite.width&&(this.sprite.cameraOffset.x=this.boundsSprite.cameraOffset.x+this.boundsSprite.width-this.sprite.width),this.sprite.cameraOffset.ythis.boundsSprite.cameraOffset.y+this.boundsSprite.height&&(this.sprite.cameraOffset.y=this.boundsSprite.cameraOffset.y+this.boundsSprite.height-this.sprite.height)):(this.sprite.leftthis.boundsSprite.right&&(this.sprite.x=this.boundsSprite.right-(this.sprite.width-this.sprite.offsetX)),this.sprite.topthis.boundsSprite.bottom&&(this.sprite.y=this.boundsSprite.bottom-(this.sprite.height-this.sprite.offsetY)))}},c.InputHandler.prototype.constructor=c.InputHandler,c.Gamepad=function(a){this.game=a,this._gamepadIndexMap={},this._rawPads=[],this._active=!1,this.enabled=!0,this._gamepadSupportAvailable=!!navigator.webkitGetGamepads||!!navigator.webkitGamepads||-1!=navigator.userAgent.indexOf("Firefox/")||!!navigator.getGamepads,this._prevRawGamepadTypes=[],this._prevTimestamps=[],this.callbackContext=this,this.onConnectCallback=null,this.onDisconnectCallback=null,this.onDownCallback=null,this.onUpCallback=null,this.onAxisCallback=null,this.onFloatCallback=null,this._ongamepadconnected=null,this._gamepaddisconnected=null,this._gamepads=[new c.SinglePad(a,this),new c.SinglePad(a,this),new c.SinglePad(a,this),new c.SinglePad(a,this)]},c.Gamepad.prototype={addCallbacks:function(a,b){"undefined"!=typeof b&&(this.onConnectCallback="function"==typeof b.onConnect?b.onConnect:this.onConnectCallback,this.onDisconnectCallback="function"==typeof b.onDisconnect?b.onDisconnect:this.onDisconnectCallback,this.onDownCallback="function"==typeof b.onDown?b.onDown:this.onDownCallback,this.onUpCallback="function"==typeof b.onUp?b.onUp:this.onUpCallback,this.onAxisCallback="function"==typeof b.onAxis?b.onAxis:this.onAxisCallback,this.onFloatCallback="function"==typeof b.onFloat?b.onFloat:this.onFloatCallback,this.callbackContext=a)},start:function(){if(!this._active){this._active=!0;var a=this;this._onGamepadConnected=function(b){return a.onGamepadConnected(b)},this._onGamepadDisconnected=function(b){return a.onGamepadDisconnected(b)},window.addEventListener("gamepadconnected",this._onGamepadConnected,!1),window.addEventListener("gamepaddisconnected",this._onGamepadDisconnected,!1)}},onGamepadConnected:function(a){var b=a.gamepad;this._rawPads.push(b),this._gamepads[b.index].connect(b)},onGamepadDisconnected:function(a){var b=a.gamepad;for(var c in this._rawPads)this._rawPads[c].index===b.index&&this._rawPads.splice(c,1);this._gamepads[b.index].disconnect()},update:function(){this._pollGamepads(),this.pad1.pollStatus(),this.pad2.pollStatus(),this.pad3.pollStatus(),this.pad4.pollStatus()},_pollGamepads:function(){if(this._active){if(navigator.getGamepads)var a=navigator.getGamepads();else if(navigator.webkitGetGamepads)var a=navigator.webkitGetGamepads();else if(navigator.webkitGamepads)var a=navigator.webkitGamepads();if(a){this._rawPads=[];for(var b=!1,c=0;c0&&d>this.deadZone||0>d&&d<-this.deadZone?this.processAxisChange(c,d):this.processAxisChange(c,0)}this._prevTimestamp=this._rawPad.timestamp}},connect:function(a){var b=!this.connected;this.connected=!0,this.index=a.index,this._rawPad=a,this._buttons=[],this._buttonsLen=a.buttons.length,this._axes=[],this._axesLen=a.axes.length;for(var d=0;dthis.maxHealth&&(this.health=this.maxHealth),this},heal:function(a){return this.alive&&(this.health+=a,this.health>this.maxHealth&&(this.health=this.maxHealth)),this}},c.Component.InCamera=function(){},c.Component.InCamera.prototype={inCamera:{get:function(){return this.game.world.camera.view.intersects(this._bounds)}}},c.Component.InputEnabled=function(){},c.Component.InputEnabled.prototype={input:null,inputEnabled:{get:function(){return this.input&&this.input.enabled},set:function(a){a?null===this.input?(this.input=new c.InputHandler(this),this.input.start()):this.input&&!this.input.enabled&&this.input.start():this.input&&this.input.enabled&&this.input.stop()}}},c.Component.InWorld=function(){},c.Component.InWorld.preUpdate=function(){if(this.autoCull||this.checkWorldBounds){if(this._bounds.copyFrom(this.getBounds()),this._bounds.x+=this.game.camera.view.x,this._bounds.y+=this.game.camera.view.y,this.autoCull)if(this.game.world.camera.view.intersects(this._bounds))this.renderable=!0,this.game.world.camera.totalInView++;else if(this.renderable=!1,this.outOfCameraBoundsKill)return this.kill(),!1;if(this.checkWorldBounds)if(this._outOfBoundsFired&&this.game.world.bounds.intersects(this._bounds))this._outOfBoundsFired=!1,this.events.onEnterBounds$dispatch(this);else if(!this._outOfBoundsFired&&!this.game.world.bounds.intersects(this._bounds)&&(this._outOfBoundsFired=!0,this.events.onOutOfBounds$dispatch(this),this.outOfBoundsKill))return this.kill(),!1}return!0},c.Component.InWorld.prototype={checkWorldBounds:!1,outOfBoundsKill:!1,outOfCameraBoundsKill:!1,_outOfBoundsFired:!1,inWorld:{get:function(){return this.game.world.bounds.intersects(this.getBounds())}}},c.Component.LifeSpan=function(){},c.Component.LifeSpan.preUpdate=function(){return this.lifespan>0&&(this.lifespan-=this.game.time.physicsElapsedMS,this.lifespan<=0)?(this.kill(),!1):!0},c.Component.LifeSpan.prototype={alive:!0,lifespan:0,revive:function(a){return void 0===a&&(a=100),this.alive=!0,this.exists=!0,this.visible=!0,"function"==typeof this.setHealth&&this.setHealth(a),this.events&&this.events.onRevived$dispatch(this),this},kill:function(){return this.alive=!1,this.exists=!1,this.visible=!1,this.events&&this.events.onKilled$dispatch(this),this}},c.Component.LoadTexture=function(){},c.Component.LoadTexture.prototype={customRender:!1,_frame:null,loadTexture:function(a,b,d){a===c.PENDING_ATLAS?(a=b,b=0):b=b||0,(d||void 0===d)&&this.animations&&this.animations.stop(),this.key=a,this.customRender=!1;var e=this.game.cache,f=!0,g=!this.texture.baseTexture.scaleMode;if(c.RenderTexture&&a instanceof c.RenderTexture)this.key=a.key,this.setTexture(a);else if(c.BitmapData&&a instanceof c.BitmapData)this.customRender=!0,this.setTexture(a.texture),f=e.hasFrameData(a.key,c.Cache.BITMAPDATA)?!this.animations.loadFrameData(e.getFrameData(a.key,c.Cache.BITMAPDATA),b):!this.animations.loadFrameData(a.frameData,0);else if(c.Video&&a instanceof c.Video){this.customRender=!0;var h=a.texture.valid;this.setTexture(a.texture),this.setFrame(a.texture.frame.clone()),a.onChangeSource.add(this.resizeFrame,this),this.texture.valid=h}else if(c.Tilemap&&a instanceof c.TilemapLayer)this.setTexture(PIXI.Texture.fromCanvas(a.canvas));else if(a instanceof PIXI.Texture)this.setTexture(a);else{var i=e.getImage(a,!0);this.key=i.key,this.setTexture(new PIXI.Texture(i.base)),"__default"===a?this.texture.baseTexture.skipRender=!0:this.texture.baseTexture.skipRender=!1,f=!this.animations.loadFrameData(i.frameData,b)}f&&(this._frame=c.Rectangle.clone(this.texture.frame)),g||(this.texture.baseTexture.scaleMode=1)},setFrame:function(a){this._frame=a,this.texture.frame.x=a.x,this.texture.frame.y=a.y,this.texture.frame.width=a.width,this.texture.frame.height=a.height,this.texture.crop.x=a.x,this.texture.crop.y=a.y,this.texture.crop.width=a.width,this.texture.crop.height=a.height,a.trimmed?(this.texture.trim?(this.texture.trim.x=a.spriteSourceSizeX,this.texture.trim.y=a.spriteSourceSizeY,this.texture.trim.width=a.sourceSizeW,this.texture.trim.height=a.sourceSizeH):this.texture.trim={x:a.spriteSourceSizeX,y:a.spriteSourceSizeY,width:a.sourceSizeW,height:a.sourceSizeH},this.texture.width=a.sourceSizeW,this.texture.height=a.sourceSizeH,this.texture.frame.width=a.sourceSizeW,this.texture.frame.height=a.sourceSizeH):!a.trimmed&&this.texture.trim&&(this.texture.trim=null),this.cropRect&&this.updateCrop(),this.texture.requiresReTint=!0,this.texture._updateUvs(),this.tilingTexture&&(this.refreshTexture=!0)},resizeFrame:function(a,b,c){this.texture.frame.resize(b,c),this.texture.setFrame(this.texture.frame)},resetFrame:function(){this._frame&&this.setFrame(this._frame)},frame:{get:function(){return this.animations.frame},set:function(a){this.animations.frame=a}},frameName:{get:function(){return this.animations.frameName},set:function(a){this.animations.frameName=a}}},c.Component.Overlap=function(){},c.Component.Overlap.prototype={overlap:function(a){return c.Rectangle.intersects(this.getBounds(),a.getBounds())}},c.Component.PhysicsBody=function(){},c.Component.PhysicsBody.preUpdate=function(){return this.fresh&&this.exists?(this.world.setTo(this.parent.position.x+this.position.x,this.parent.position.y+this.position.y),this.worldTransform.tx=this.world.x,this.worldTransform.ty=this.world.y,this.previousPosition.set(this.world.x,this.world.y),this.previousRotation=this.rotation,this.body&&this.body.preUpdate(),this.fresh=!1,!1):(this.previousPosition.set(this.world.x,this.world.y),this.previousRotation=this.rotation,this._exists&&this.parent.exists?!0:(this.renderOrderID=-1,!1))},c.Component.PhysicsBody.postUpdate=function(){this.exists&&this.body&&this.body.postUpdate()},c.Component.PhysicsBody.prototype={body:null,x:{get:function(){return this.position.x},set:function(a){this.position.x=a,this.body&&!this.body.dirty&&(this.body._reset=!0)}},y:{get:function(){return this.position.y},set:function(a){this.position.y=a,this.body&&!this.body.dirty&&(this.body._reset=!0)}}},c.Component.Reset=function(){},c.Component.Reset.prototype.reset=function(a,b,c){return void 0===c&&(c=1),this.world.set(a,b),this.position.set(a,b),this.fresh=!0,this.exists=!0,this.visible=!0,this.renderable=!0,this.components.InWorld&&(this._outOfBoundsFired=!1),this.components.LifeSpan&&(this.alive=!0,this.health=c),this.components.PhysicsBody&&this.body&&this.body.reset(a,b,!1,!1),this},c.Component.ScaleMinMax=function(){},c.Component.ScaleMinMax.prototype={transformCallback:null,transformCallbackContext:this,scaleMin:null,scaleMax:null,checkTransform:function(a){this.scaleMin&&(a.athis.scaleMax.x&&(a.a=this.scaleMax.x),a.d>this.scaleMax.y&&(a.d=this.scaleMax.y))},setScaleMinMax:function(a,b,d,e){void 0===b?b=d=e=a:void 0===d&&(d=e=b,b=a),null===a?this.scaleMin=null:this.scaleMin?this.scaleMin.set(a,b):this.scaleMin=new c.Point(a,b),null===d?this.scaleMax=null:this.scaleMax?this.scaleMax.set(d,e):this.scaleMax=new c.Point(d,e),null===this.scaleMin?this.transformCallback=null:(this.transformCallback=this.checkTransform,this.transformCallbackContext=this)}},c.Component.Smoothed=function(){},c.Component.Smoothed.prototype={smoothed:{get:function(){return!this.texture.baseTexture.scaleMode},set:function(a){a?this.texture&&(this.texture.baseTexture.scaleMode=0):this.texture&&(this.texture.baseTexture.scaleMode=1)}}},c.GameObjectFactory=function(a){this.game=a,this.world=this.game.world},c.GameObjectFactory.prototype={existing:function(a){return this.world.add(a)},weapon:function(a,b,d,e){var f=this.game.plugins.add(c.Weapon);return f.createBullets(a,b,d,e),f},image:function(a,b,d,e,f){return void 0===f&&(f=this.world),f.add(new c.Image(this.game,a,b,d,e))},sprite:function(a,b,c,d,e){return void 0===e&&(e=this.world),e.create(a,b,c,d)},creature:function(a,b,d,e,f){void 0===f&&(f=this.world);var g=new c.Creature(this.game,a,b,d,e);return f.add(g),g},tween:function(a){return this.game.tweens.create(a)},group:function(a,b,d,e,f){return new c.Group(this.game,a,b,d,e,f)},physicsGroup:function(a,b,d,e){return new c.Group(this.game,b,d,e,!0,a)},spriteBatch:function(a,b,d){return void 0===a&&(a=null),void 0===b&&(b="group"),void 0===d&&(d=!1),new c.SpriteBatch(this.game,a,b,d)},audio:function(a,b,c,d){return this.game.sound.add(a,b,c,d)},sound:function(a,b,c,d){return this.game.sound.add(a,b,c,d)},audioSprite:function(a){return this.game.sound.addSprite(a)},tileSprite:function(a,b,d,e,f,g,h){return void 0===h&&(h=this.world),h.add(new c.TileSprite(this.game,a,b,d,e,f,g))},rope:function(a,b,d,e,f,g){return void 0===g&&(g=this.world),g.add(new c.Rope(this.game,a,b,d,e,f))},text:function(a,b,d,e,f){return void 0===f&&(f=this.world),f.add(new c.Text(this.game,a,b,d,e))},button:function(a,b,d,e,f,g,h,i,j,k){return void 0===k&&(k=this.world),k.add(new c.Button(this.game,a,b,d,e,f,g,h,i,j))},graphics:function(a,b,d){return void 0===d&&(d=this.world),d.add(new c.Graphics(this.game,a,b))},emitter:function(a,b,d){return this.game.particles.add(new c.Particles.Arcade.Emitter(this.game,a,b,d))},retroFont:function(a,b,d,e,f,g,h,i,j){return new c.RetroFont(this.game,a,b,d,e,f,g,h,i,j)},bitmapText:function(a,b,d,e,f,g){return void 0===g&&(g=this.world),g.add(new c.BitmapText(this.game,a,b,d,e,f))},tilemap:function(a,b,d,e,f){return new c.Tilemap(this.game,a,b,d,e,f)},renderTexture:function(a,b,d,e){void 0!==d&&""!==d||(d=this.game.rnd.uuid()),void 0===e&&(e=!1);var f=new c.RenderTexture(this.game,a,b,d);return e&&this.game.cache.addRenderTexture(d,f),f},video:function(a,b){return new c.Video(this.game,a,b)},bitmapData:function(a,b,d,e){void 0===e&&(e=!1),void 0!==d&&""!==d||(d=this.game.rnd.uuid());var f=new c.BitmapData(this.game,d,a,b);return e&&this.game.cache.addBitmapData(d,f),f},filter:function(a){var b=Array.prototype.slice.call(arguments,1),a=new c.Filter[a](this.game);return a.init.apply(a,b),a},plugin:function(a){return this.game.plugins.add(a)}},c.GameObjectFactory.prototype.constructor=c.GameObjectFactory,c.GameObjectCreator=function(a){this.game=a,this.world=this.game.world},c.GameObjectCreator.prototype={image:function(a,b,d,e){return new c.Image(this.game,a,b,d,e)},sprite:function(a,b,d,e){return new c.Sprite(this.game,a,b,d,e)},tween:function(a){return new c.Tween(a,this.game,this.game.tweens)},group:function(a,b,d,e,f){return new c.Group(this.game,a,b,d,e,f)},spriteBatch:function(a,b,d){return void 0===b&&(b="group"),void 0===d&&(d=!1),new c.SpriteBatch(this.game,a,b,d)},audio:function(a,b,c,d){return this.game.sound.add(a,b,c,d)},audioSprite:function(a){return this.game.sound.addSprite(a)},sound:function(a,b,c,d){return this.game.sound.add(a,b,c,d)},tileSprite:function(a,b,d,e,f,g){return new c.TileSprite(this.game,a,b,d,e,f,g)},rope:function(a,b,d,e,f){return new c.Rope(this.game,a,b,d,e,f)},text:function(a,b,d,e){return new c.Text(this.game,a,b,d,e)},button:function(a,b,d,e,f,g,h,i,j){return new c.Button(this.game,a,b,d,e,f,g,h,i,j)},graphics:function(a,b){return new c.Graphics(this.game,a,b)},emitter:function(a,b,d){return new c.Particles.Arcade.Emitter(this.game,a,b,d)},retroFont:function(a,b,d,e,f,g,h,i,j){return new c.RetroFont(this.game,a,b,d,e,f,g,h,i,j)},bitmapText:function(a,b,d,e,f,g){return new c.BitmapText(this.game,a,b,d,e,f,g)},tilemap:function(a,b,d,e,f){return new c.Tilemap(this.game,a,b,d,e,f)},renderTexture:function(a,b,d,e){void 0!==d&&""!==d||(d=this.game.rnd.uuid()),void 0===e&&(e=!1);var f=new c.RenderTexture(this.game,a,b,d);return e&&this.game.cache.addRenderTexture(d,f),f},bitmapData:function(a,b,d,e){void 0===e&&(e=!1),void 0!==d&&""!==d||(d=this.game.rnd.uuid());var f=new c.BitmapData(this.game,d,a,b);return e&&this.game.cache.addBitmapData(d,f),f},filter:function(a){var b=Array.prototype.slice.call(arguments,1),a=new c.Filter[a](this.game);return a.init.apply(a,b),a}},c.GameObjectCreator.prototype.constructor=c.GameObjectCreator,c.Sprite=function(a,b,d,e,f){b=b||0,d=d||0,e=e||null,f=f||null,this.type=c.SPRITE,this.physicsType=c.SPRITE,PIXI.Sprite.call(this,c.Cache.DEFAULT),c.Component.Core.init.call(this,a,b,d,e,f)},c.Sprite.prototype=Object.create(PIXI.Sprite.prototype),c.Sprite.prototype.constructor=c.Sprite,c.Component.Core.install.call(c.Sprite.prototype,["Angle","Animation","AutoCull","Bounds","BringToTop","Crop","Delta","Destroy","FixedToCamera","Health","InCamera","InputEnabled","InWorld","LifeSpan","LoadTexture","Overlap","PhysicsBody","Reset","ScaleMinMax","Smoothed"]),c.Sprite.prototype.preUpdatePhysics=c.Component.PhysicsBody.preUpdate,c.Sprite.prototype.preUpdateLifeSpan=c.Component.LifeSpan.preUpdate,c.Sprite.prototype.preUpdateInWorld=c.Component.InWorld.preUpdate,c.Sprite.prototype.preUpdateCore=c.Component.Core.preUpdate,c.Sprite.prototype.preUpdate=function(){return this.preUpdatePhysics()&&this.preUpdateLifeSpan()&&this.preUpdateInWorld()?this.preUpdateCore():!1},c.Image=function(a,b,d,e,f){b=b||0,d=d||0,e=e||null,f=f||null,this.type=c.IMAGE,PIXI.Sprite.call(this,c.Cache.DEFAULT),c.Component.Core.init.call(this,a,b,d,e,f)},c.Image.prototype=Object.create(PIXI.Sprite.prototype),c.Image.prototype.constructor=c.Image,c.Component.Core.install.call(c.Image.prototype,["Angle","Animation","AutoCull","Bounds","BringToTop","Crop","Destroy","FixedToCamera","InputEnabled","LifeSpan","LoadTexture","Overlap","Reset","Smoothed"]),c.Image.prototype.preUpdateInWorld=c.Component.InWorld.preUpdate,c.Image.prototype.preUpdateCore=c.Component.Core.preUpdate,c.Image.prototype.preUpdate=function(){return this.preUpdateInWorld()?this.preUpdateCore():!1},c.Button=function(a,b,d,e,f,g,h,i,j,k){b=b||0,d=d||0,e=e||null,f=f||null,g=g||this,c.Image.call(this,a,b,d,e,i),this.type=c.BUTTON,this.physicsType=c.SPRITE,this._onOverFrame=null,this._onOutFrame=null,this._onDownFrame=null,this._onUpFrame=null,this.onOverSound=null,this.onOutSound=null,this.onDownSound=null,this.onUpSound=null,this.onOverSoundMarker="",this.onOutSoundMarker="",this.onDownSoundMarker="",this.onUpSoundMarker="",this.onInputOver=new c.Signal,this.onInputOut=new c.Signal,this.onInputDown=new c.Signal,this.onInputUp=new c.Signal,this.onOverMouseOnly=!0,this.justReleasedPreventsOver=c.PointerMode.TOUCH,this.freezeFrames=!1,this.forceOut=!1,this.inputEnabled=!0,this.input.start(0,!0),this.input.useHandCursor=!0,this.setFrames(h,i,j,k),null!==f&&this.onInputUp.add(f,g),this.events.onInputOver.add(this.onInputOverHandler,this),this.events.onInputOut.add(this.onInputOutHandler,this),this.events.onInputDown.add(this.onInputDownHandler,this),this.events.onInputUp.add(this.onInputUpHandler,this),this.events.onRemovedFromWorld.add(this.removedFromWorld,this)},c.Button.prototype=Object.create(c.Image.prototype),c.Button.prototype.constructor=c.Button;var g="Over",h="Out",i="Down",j="Up";c.Button.prototype.clearFrames=function(){this.setFrames(null,null,null,null)},c.Button.prototype.removedFromWorld=function(){this.inputEnabled=!1},c.Button.prototype.setStateFrame=function(a,b,c){var d="_on"+a+"Frame";null!==b?(this[d]=b,c&&this.changeStateFrame(a)):this[d]=null},c.Button.prototype.changeStateFrame=function(a){if(this.freezeFrames)return!1;var b="_on"+a+"Frame",c=this[b];return"string"==typeof c?(this.frameName=c,!0):"number"==typeof c?(this.frame=c,!0):!1},c.Button.prototype.setFrames=function(a,b,c,d){this.setStateFrame(g,a,this.input.pointerOver()),this.setStateFrame(h,b,!this.input.pointerOver()),this.setStateFrame(i,c,this.input.pointerDown()),this.setStateFrame(j,d,this.input.pointerUp())},c.Button.prototype.setStateSound=function(a,b,d){var e="on"+a+"Sound",f="on"+a+"SoundMarker";b instanceof c.Sound||b instanceof c.AudioSprite?(this[e]=b,this[f]="string"==typeof d?d:""):(this[e]=null,this[f]="")},c.Button.prototype.playStateSound=function(a){var b="on"+a+"Sound",c=this[b];if(c){var d="on"+a+"SoundMarker",e=this[d];return c.play(e),!0}return!1},c.Button.prototype.setSounds=function(a,b,c,d,e,f,k,l){this.setStateSound(g,a,b),this.setStateSound(h,e,f),this.setStateSound(i,c,d),this.setStateSound(j,k,l)},c.Button.prototype.setOverSound=function(a,b){this.setStateSound(g,a,b)},c.Button.prototype.setOutSound=function(a,b){this.setStateSound(h,a,b)},c.Button.prototype.setDownSound=function(a,b){this.setStateSound(i,a,b)},c.Button.prototype.setUpSound=function(a,b){this.setStateSound(j,a,b)},c.Button.prototype.onInputOverHandler=function(a,b){b.justReleased()&&(this.justReleasedPreventsOver&b.pointerMode)===b.pointerMode||(this.changeStateFrame(g),this.onOverMouseOnly&&!b.isMouse||(this.playStateSound(g),this.onInputOver&&this.onInputOver.dispatch(this,b)))},c.Button.prototype.onInputOutHandler=function(a,b){this.changeStateFrame(h),this.playStateSound(h),this.onInputOut&&this.onInputOut.dispatch(this,b)},c.Button.prototype.onInputDownHandler=function(a,b){this.changeStateFrame(i),this.playStateSound(i),this.onInputDown&&this.onInputDown.dispatch(this,b)},c.Button.prototype.onInputUpHandler=function(a,b,c){if(this.playStateSound(j),this.onInputUp&&this.onInputUp.dispatch(this,b,c),!this.freezeFrames)if(this.forceOut===!0||(this.forceOut&b.pointerMode)===b.pointerMode)this.changeStateFrame(h);else{var d=this.changeStateFrame(j);d||(c?this.changeStateFrame(g):this.changeStateFrame(h))}},c.SpriteBatch=function(a,b,d,e){void 0!==b&&null!==b||(b=a.world),PIXI.SpriteBatch.call(this),c.Group.call(this,a,b,d,e),this.type=c.SPRITEBATCH},c.SpriteBatch.prototype=c.Utils.extend(!0,c.SpriteBatch.prototype,PIXI.SpriteBatch.prototype,c.Group.prototype),c.SpriteBatch.prototype.constructor=c.SpriteBatch,c.BitmapData=function(a,b,d,e,f){void 0!==d&&0!==d||(d=256),void 0!==e&&0!==e||(e=256),void 0===f&&(f=!1),this.game=a,this.key=b,this.width=d,this.height=e,this.canvas=c.Canvas.create(this,d,e,null,f),this.context=this.canvas.getContext("2d",{alpha:!0}),this.ctx=this.context,this.smoothProperty=a.renderType===c.CANVAS?a.renderer.renderSession.smoothProperty:c.Canvas.getSmoothingPrefix(this.context),this.imageData=this.context.getImageData(0,0,d,e),this.data=null,this.imageData&&(this.data=this.imageData.data),this.pixels=null,this.data&&(this.imageData.data.buffer?(this.buffer=this.imageData.data.buffer,this.pixels=new Uint32Array(this.buffer)):window.ArrayBuffer?(this.buffer=new ArrayBuffer(this.imageData.data.length),this.pixels=new Uint32Array(this.buffer)):this.pixels=this.imageData.data),this.baseTexture=new PIXI.BaseTexture(this.canvas),this.texture=new PIXI.Texture(this.baseTexture),this.frameData=new c.FrameData,this.textureFrame=this.frameData.addFrame(new c.Frame(0,0,0,d,e,"bitmapData")),this.texture.frame=this.textureFrame,this.type=c.BITMAPDATA,this.disableTextureUpload=!1,this.dirty=!1,this.cls=this.clear,this._image=null,this._pos=new c.Point,this._size=new c.Point,this._scale=new c.Point,this._rotate=0,this._alpha={prev:1,current:1},this._anchor=new c.Point,this._tempR=0,this._tempG=0,this._tempB=0,this._circle=new c.Circle,this._swapCanvas=void 0},c.BitmapData.prototype={move:function(a,b,c){return 0!==a&&this.moveH(a,c),0!==b&&this.moveV(b,c),this},moveH:function(a,b){void 0===b&&(b=!0),void 0===this._swapCanvas&&(this._swapCanvas=PIXI.CanvasPool.create(this,this.width,this.height));var c=this._swapCanvas,d=c.getContext("2d"),e=this.height,f=this.canvas;if(d.clearRect(0,0,this.width,this.height),0>a){a=Math.abs(a);var g=this.width-a;b&&d.drawImage(f,0,0,a,e,g,0,a,e),d.drawImage(f,a,0,g,e,0,0,g,e)}else{var g=this.width-a;b&&d.drawImage(f,g,0,a,e,0,0,a,e),d.drawImage(f,0,0,g,e,a,0,g,e)}return this.clear(),this.copy(this._swapCanvas)},moveV:function(a,b){void 0===b&&(b=!0),void 0===this._swapCanvas&&(this._swapCanvas=PIXI.CanvasPool.create(this,this.width,this.height));var c=this._swapCanvas,d=c.getContext("2d"),e=this.width,f=this.canvas;if(d.clearRect(0,0,this.width,this.height),0>a){a=Math.abs(a);var g=this.height-a;b&&d.drawImage(f,0,0,e,a,0,g,e,a),d.drawImage(f,0,a,e,g,0,0,e,g)}else{var g=this.height-a;b&&d.drawImage(f,0,g,e,a,0,0,e,a),d.drawImage(f,0,0,e,g,0,a,e,g)}return this.clear(),this.copy(this._swapCanvas)},add:function(a){if(Array.isArray(a))for(var b=0;bm;m++)for(var n=d;h>n;n++)c.Color.unpackPixel(this.getPixel32(n,m),j),k=a.call(b,j,n,m),k!==!1&&null!==k&&void 0!==k&&(this.setPixel32(n,m,k.r,k.g,k.b,k.a,!1),l=!0);return l&&(this.context.putImageData(this.imageData,0,0),this.dirty=!0),this},processPixel:function(a,b,c,d,e,f){void 0===c&&(c=0),void 0===d&&(d=0),void 0===e&&(e=this.width),void 0===f&&(f=this.height);for(var g=c+e,h=d+f,i=0,j=0,k=!1,l=d;h>l;l++)for(var m=c;g>m;m++)i=this.getPixel32(m,l),j=a.call(b,i,m,l),j!==i&&(this.pixels[l*this.width+m]=j,k=!0);return k&&(this.context.putImageData(this.imageData,0,0),this.dirty=!0),this},replaceRGB:function(a,b,d,e,f,g,h,i,j){var k=0,l=0,m=this.width,n=this.height,o=c.Color.packPixel(a,b,d,e);void 0!==j&&j instanceof c.Rectangle&&(k=j.x,l=j.y,m=j.width,n=j.height);for(var p=0;n>p;p++)for(var q=0;m>q;q++)this.getPixel32(k+q,l+p)===o&&this.setPixel32(k+q,l+p,f,g,h,i,!1);return this.context.putImageData(this.imageData,0,0),this.dirty=!0,this},setHSL:function(a,b,d,e){var f=a||0===a,g=b||0===b,h=d||0===d;if(f||g||h){void 0===e&&(e=new c.Rectangle(0,0,this.width,this.height));for(var i=c.Color.createColor(),j=e.y;j=0&&a<=this.width&&b>=0&&b<=this.height&&(c.Device.LITTLE_ENDIAN?this.pixels[b*this.width+a]=g<<24|f<<16|e<<8|d:this.pixels[b*this.width+a]=d<<24|e<<16|f<<8|g,h&&(this.context.putImageData(this.imageData,0,0),this.dirty=!0)),this},setPixel:function(a,b,c,d,e,f){return this.setPixel32(a,b,c,d,e,255,f)},getPixel:function(a,b,d){d||(d=c.Color.createColor());var e=~~(a+b*this.width);return e*=4,d.r=this.data[e],d.g=this.data[++e],d.b=this.data[++e],d.a=this.data[++e],d},getPixel32:function(a,b){return a>=0&&a<=this.width&&b>=0&&b<=this.height?this.pixels[b*this.width+a]:void 0},getPixelRGB:function(a,b,d,e,f){return c.Color.unpackPixel(this.getPixel32(a,b),d,e,f)},getPixels:function(a){return this.context.getImageData(a.x,a.y,a.width,a.height); +},getFirstPixel:function(a){void 0===a&&(a=0);var b=c.Color.createColor(),d=0,e=0,f=1,g=!1;1===a?(f=-1,e=this.height):3===a&&(f=-1,d=this.width);do c.Color.unpackPixel(this.getPixel32(d,e),b),0===a||1===a?(d++,d===this.width&&(d=0,e+=f,(e>=this.height||0>=e)&&(g=!0))):2!==a&&3!==a||(e++,e===this.height&&(e=0,d+=f,(d>=this.width||0>=d)&&(g=!0)));while(0===b.a&&!g);return b.x=d,b.y=e,b},getBounds:function(a){return void 0===a&&(a=new c.Rectangle),a.x=this.getFirstPixel(2).x,a.x===this.width?a.setTo(0,0,0,0):(a.y=this.getFirstPixel(0).y,a.width=this.getFirstPixel(3).x-a.x+1,a.height=this.getFirstPixel(1).y-a.y+1,a)},addToWorld:function(a,b,c,d,e,f){e=e||1,f=f||1;var g=this.game.add.image(a,b,this);return g.anchor.set(c,d),g.scale.set(e,f),g},copy:function(a,b,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r){if(void 0!==a&&null!==a||(a=this),(a instanceof c.RenderTexture||a instanceof PIXI.RenderTexture)&&(a=a.getCanvas()),this._image=a,a instanceof c.Sprite||a instanceof c.Image||a instanceof c.Text||a instanceof PIXI.Sprite)this._pos.set(a.texture.crop.x,a.texture.crop.y),this._size.set(a.texture.crop.width,a.texture.crop.height),this._scale.set(a.scale.x,a.scale.y),this._anchor.set(a.anchor.x,a.anchor.y),this._rotate=a.rotation,this._alpha.current=a.alpha,a.texture instanceof c.RenderTexture||a.texture instanceof PIXI.RenderTexture?this._image=a.texture.getCanvas():this._image=a.texture.baseTexture.source,void 0!==g&&null!==g||(g=a.x),void 0!==h&&null!==h||(h=a.y),a.texture.trim&&(g+=a.texture.trim.x-a.anchor.x*a.texture.trim.width,h+=a.texture.trim.y-a.anchor.y*a.texture.trim.height),16777215!==a.tint&&(a.cachedTint!==a.tint&&(a.cachedTint=a.tint,a.tintedTexture=PIXI.CanvasTinter.getTintedTexture(a,a.tint)),this._image=a.tintedTexture,this._pos.set(0));else{if(this._pos.set(0),this._scale.set(1),this._anchor.set(0),this._rotate=0,this._alpha.current=1,a instanceof c.BitmapData)this._image=a.canvas;else if("string"==typeof a){if(a=this.game.cache.getImage(a),null===a)return;this._image=a}this._size.set(this._image.width,this._image.height)}if(void 0!==b&&null!==b||(b=0),void 0!==d&&null!==d||(d=0),e&&(this._size.x=e),f&&(this._size.y=f),void 0!==g&&null!==g||(g=b),void 0!==h&&null!==h||(h=d),void 0!==i&&null!==i||(i=this._size.x),void 0!==j&&null!==j||(j=this._size.y),"number"==typeof k&&(this._rotate=k),"number"==typeof l&&(this._anchor.x=l),"number"==typeof m&&(this._anchor.y=m),"number"==typeof n&&(this._scale.x=n),"number"==typeof o&&(this._scale.y=o),"number"==typeof p&&(this._alpha.current=p),void 0===q&&(q=null),void 0===r&&(r=!1),!(this._alpha.current<=0||0===this._scale.x||0===this._scale.y||0===this._size.x||0===this._size.y)){var s=this.context;return this._alpha.prev=s.globalAlpha,s.save(),s.globalAlpha=this._alpha.current,q&&(this.op=q),r&&(g|=0,h|=0),s.translate(g,h),s.scale(this._scale.x,this._scale.y),s.rotate(this._rotate),s.drawImage(this._image,this._pos.x+b,this._pos.y+d,this._size.x,this._size.y,-i*this._anchor.x,-j*this._anchor.y,i,j),s.restore(),s.globalAlpha=this._alpha.prev,this.dirty=!0,this}},copyTransform:function(a,b,d){if(void 0===b&&(b=null),void 0===d&&(d=!1),!a.hasOwnProperty("worldTransform")||!a.worldVisible||0===a.worldAlpha)return this;var e=a.worldTransform;if(this._pos.set(a.texture.crop.x,a.texture.crop.y),this._size.set(a.texture.crop.width,a.texture.crop.height),0===e.a||0===e.d||0===this._size.x||0===this._size.y)return this;a.texture instanceof c.RenderTexture||a.texture instanceof PIXI.RenderTexture?this._image=a.texture.getCanvas():this._image=a.texture.baseTexture.source;var f=e.tx,g=e.ty;a.texture.trim&&(f+=a.texture.trim.x-a.anchor.x*a.texture.trim.width,g+=a.texture.trim.y-a.anchor.y*a.texture.trim.height),16777215!==a.tint&&(a.cachedTint!==a.tint&&(a.cachedTint=a.tint,a.tintedTexture=PIXI.CanvasTinter.getTintedTexture(a,a.tint)),this._image=a.tintedTexture,this._pos.set(0)),d&&(f|=0,g|=0);var h=this.context;return this._alpha.prev=h.globalAlpha,h.save(),h.globalAlpha=this._alpha.current,b&&(this.op=b),h[this.smoothProperty]=a.texture.baseTexture.scaleMode===PIXI.scaleModes.LINEAR,h.setTransform(e.a,e.b,e.c,e.d,f,g),h.drawImage(this._image,this._pos.x,this._pos.y,this._size.x,this._size.y,-this._size.x*a.anchor.x,-this._size.y*a.anchor.y,this._size.x,this._size.y),h.restore(),h.globalAlpha=this._alpha.prev,this.dirty=!0,this},copyRect:function(a,b,c,d,e,f,g){return this.copy(a,b.x,b.y,b.width,b.height,c,d,b.width,b.height,0,0,0,1,1,e,f,g)},draw:function(a,b,c,d,e,f,g){return this.copy(a,null,null,null,null,b,c,d,e,null,null,null,null,null,null,f,g)},drawGroup:function(a,b,c){return a.total>0&&a.forEachExists(this.drawGroupProxy,this,b,c),this},drawGroupProxy:function(a,b,d){if(a.hasOwnProperty("texture")&&this.copyTransform(a,b,d),a.type===c.GROUP&&a.exists)this.drawGroup(a,b,d);else if(a.hasOwnProperty("children")&&a.children.length>0)for(var e=0;eb.width&&(e=b.width);var f=this.context;return f.fillStyle=f.createPattern(b,d),this._circle=new c.Circle(a.start.x,a.start.y,b.height),this._circle.circumferencePoint(a.angle-1.5707963267948966,!1,this._pos),f.save(),f.translate(this._pos.x,this._pos.y),f.rotate(a.angle),f.fillRect(0,0,e,b.height),f.restore(),this.dirty=!0,this}},render:function(){return!this.disableTextureUpload&&this.dirty&&(this.baseTexture.dirty(),this.dirty=!1),this},destroy:function(){this.frameData.destroy(),this.texture.destroy(!0),PIXI.CanvasPool.remove(this)},blendReset:function(){return this.op="source-over",this},blendSourceOver:function(){return this.op="source-over",this},blendSourceIn:function(){return this.op="source-in",this},blendSourceOut:function(){return this.op="source-out",this},blendSourceAtop:function(){return this.op="source-atop",this},blendDestinationOver:function(){return this.op="destination-over",this},blendDestinationIn:function(){return this.op="destination-in",this},blendDestinationOut:function(){return this.op="destination-out",this},blendDestinationAtop:function(){return this.op="destination-atop",this},blendXor:function(){return this.op="xor",this},blendAdd:function(){return this.op="lighter",this},blendMultiply:function(){return this.op="multiply",this},blendScreen:function(){return this.op="screen",this},blendOverlay:function(){return this.op="overlay",this},blendDarken:function(){return this.op="darken",this},blendLighten:function(){return this.op="lighten",this},blendColorDodge:function(){return this.op="color-dodge",this},blendColorBurn:function(){return this.op="color-burn",this},blendHardLight:function(){return this.op="hard-light",this},blendSoftLight:function(){return this.op="soft-light",this},blendDifference:function(){return this.op="difference",this},blendExclusion:function(){return this.op="exclusion",this},blendHue:function(){return this.op="hue",this},blendSaturation:function(){return this.op="saturation",this},blendColor:function(){return this.op="color",this},blendLuminosity:function(){return this.op="luminosity",this}},Object.defineProperty(c.BitmapData.prototype,"smoothed",{get:function(){c.Canvas.getSmoothingEnabled(this.context)},set:function(a){c.Canvas.setSmoothingEnabled(this.context,a)}}),Object.defineProperty(c.BitmapData.prototype,"op",{get:function(){return this.context.globalCompositeOperation},set:function(a){this.context.globalCompositeOperation=a}}),c.BitmapData.getTransform=function(a,b,c,d,e,f){return"number"!=typeof a&&(a=0),"number"!=typeof b&&(b=0),"number"!=typeof c&&(c=1),"number"!=typeof d&&(d=1),"number"!=typeof e&&(e=0),"number"!=typeof f&&(f=0),{sx:c,sy:d,scaleX:c,scaleY:d,skewX:e,skewY:f,translateX:a,translateY:b,tx:a,ty:b}},c.BitmapData.prototype.constructor=c.BitmapData,PIXI.Graphics=function(){PIXI.DisplayObjectContainer.call(this),this.renderable=!0,this.fillAlpha=1,this.lineWidth=0,this.lineColor=0,this.graphicsData=[],this.tint=16777215,this.blendMode=PIXI.blendModes.NORMAL,this.currentPath=null,this._webGL=[],this.isMask=!1,this.boundsPadding=0,this._localBounds=new PIXI.Rectangle(0,0,1,1),this.dirty=!0,this.webGLDirty=!1,this.cachedSpriteDirty=!1},PIXI.Graphics.prototype=Object.create(PIXI.DisplayObjectContainer.prototype),PIXI.Graphics.prototype.constructor=PIXI.Graphics,PIXI.Graphics.prototype.lineStyle=function(a,b,c){return this.lineWidth=a||0,this.lineColor=b||0,this.lineAlpha=void 0===c?1:c,this.currentPath&&(this.currentPath.shape.points.length?this.drawShape(new PIXI.Polygon(this.currentPath.shape.points.slice(-2))):(this.currentPath.lineWidth=this.lineWidth,this.currentPath.lineColor=this.lineColor,this.currentPath.lineAlpha=this.lineAlpha)),this},PIXI.Graphics.prototype.moveTo=function(a,b){return this.drawShape(new PIXI.Polygon([a,b])),this},PIXI.Graphics.prototype.lineTo=function(a,b){return this.currentPath||this.moveTo(0,0),this.currentPath.shape.points.push(a,b),this.dirty=!0,this.updateLocalBounds(),this},PIXI.Graphics.prototype.quadraticCurveTo=function(a,b,c,d){this.currentPath?0===this.currentPath.shape.points.length&&(this.currentPath.shape.points=[0,0]):this.moveTo(0,0);var e,f,g=20,h=this.currentPath.shape.points;0===h.length&&this.moveTo(0,0);for(var i=h[h.length-2],j=h[h.length-1],k=0,l=1;g>=l;++l)k=l/g,e=i+(a-i)*k,f=j+(b-j)*k,h.push(e+(a+(c-a)*k-e)*k,f+(b+(d-b)*k-f)*k);return this.dirty=!0,this.updateLocalBounds(),this},PIXI.Graphics.prototype.bezierCurveTo=function(a,b,c,d,e,f){this.currentPath?0===this.currentPath.shape.points.length&&(this.currentPath.shape.points=[0,0]):this.moveTo(0,0);for(var g,h,i,j,k,l=20,m=this.currentPath.shape.points,n=m[m.length-2],o=m[m.length-1],p=0,q=1;l>=q;++q)p=q/l,g=1-p,h=g*g,i=h*g,j=p*p,k=j*p,m.push(i*n+3*h*p*a+3*g*j*c+k*e,i*o+3*h*p*b+3*g*j*d+k*f);return this.dirty=!0,this.updateLocalBounds(),this},PIXI.Graphics.prototype.arcTo=function(a,b,c,d,e){this.currentPath?0===this.currentPath.shape.points.length&&this.currentPath.shape.points.push(a,b):this.moveTo(a,b);var f=this.currentPath.shape.points,g=f[f.length-2],h=f[f.length-1],i=h-b,j=g-a,k=d-b,l=c-a,m=Math.abs(i*l-j*k);if(1e-8>m||0===e)f[f.length-2]===a&&f[f.length-1]===b||f.push(a,b);else{var n=i*i+j*j,o=k*k+l*l,p=i*k+j*l,q=e*Math.sqrt(n)/m,r=e*Math.sqrt(o)/m,s=q*p/n,t=r*p/o,u=q*l+r*j,v=q*k+r*i,w=j*(r+s),x=i*(r+s),y=l*(q+t),z=k*(q+t),A=Math.atan2(x-v,w-u),B=Math.atan2(z-v,y-u);this.arc(u+a,v+b,e,A,B,j*k>l*i)}return this.dirty=!0,this.updateLocalBounds(),this},PIXI.Graphics.prototype.arc=function(a,b,c,d,e,f,g){if(d===e)return this;void 0===f&&(f=!1),void 0===g&&(g=40),!f&&d>=e?e+=2*Math.PI:f&&e>=d&&(d+=2*Math.PI);var h=f?-1*(d-e):e-d,i=Math.ceil(Math.abs(h)/(2*Math.PI))*g;if(0===h)return this;var j=a+Math.cos(d)*c,k=b+Math.sin(d)*c;f&&this.filling?this.moveTo(a,b):this.moveTo(j,k);for(var l=this.currentPath.shape.points,m=h/(2*i),n=2*m,o=Math.cos(m),p=Math.sin(m),q=i-1,r=q%1/q,s=0;q>=s;s++){var t=s+r*s,u=m+d+n*t,v=Math.cos(u),w=-Math.sin(u);l.push((o*v+p*w)*c+a,(o*-w+p*v)*c+b)}return this.dirty=!0,this.updateLocalBounds(),this},PIXI.Graphics.prototype.beginFill=function(a,b){return this.filling=!0,this.fillColor=a||0,this.fillAlpha=void 0===b?1:b,this.currentPath&&this.currentPath.shape.points.length<=2&&(this.currentPath.fill=this.filling,this.currentPath.fillColor=this.fillColor,this.currentPath.fillAlpha=this.fillAlpha),this},PIXI.Graphics.prototype.endFill=function(){return this.filling=!1,this.fillColor=null,this.fillAlpha=1,this},PIXI.Graphics.prototype.drawRect=function(a,b,c,d){return this.drawShape(new PIXI.Rectangle(a,b,c,d)),this},PIXI.Graphics.prototype.drawRoundedRect=function(a,b,c,d,e){return this.drawShape(new PIXI.RoundedRectangle(a,b,c,d,e)),this},PIXI.Graphics.prototype.drawCircle=function(a,b,c){return this.drawShape(new PIXI.Circle(a,b,c)),this},PIXI.Graphics.prototype.drawEllipse=function(a,b,c,d){return this.drawShape(new PIXI.Ellipse(a,b,c,d)),this},PIXI.Graphics.prototype.drawPolygon=function(a){(a instanceof c.Polygon||a instanceof PIXI.Polygon)&&(a=a.points);var b=a;if(!Array.isArray(b)){b=new Array(arguments.length);for(var d=0;dp?p:x,x=x>r?r:x,x=x>t?t:x,y=y>q?q:y,y=y>s?s:y,y=y>u?u:y,v=p>v?p:v,v=r>v?r:v,v=t>v?t:v,w=q>w?q:w,w=s>w?s:w,w=u>w?u:w,this._bounds.x=x,this._bounds.width=v-x,this._bounds.y=y,this._bounds.height=w-y,this._currentBounds=this._bounds}return this._currentBounds},PIXI.Graphics.prototype.containsPoint=function(a){this.worldTransform.applyInverse(a,tempPoint);for(var b=this.graphicsData,c=0;ch?h:a,b=h+j>b?h+j:b,d=d>i?i:d,e=i+k>e?i+k:e;else if(n===PIXI.Graphics.CIRC)h=f.x,i=f.y,j=f.radius+o/2,k=f.radius+o/2,a=a>h-j?h-j:a,b=h+j>b?h+j:b,d=d>i-k?i-k:d,e=i+k>e?i+k:e;else if(n===PIXI.Graphics.ELIP)h=f.x,i=f.y,j=f.width+o/2,k=f.height+o/2,a=a>h-j?h-j:a,b=h+j>b?h+j:b,d=d>i-k?i-k:d,e=i+k>e?i+k:e;else{g=f.points;for(var p=0;ph-o?h-o:a,b=h+o>b?h+o:b,d=d>i-o?i-o:d,e=i+o>e?i+o:e}}else a=0,b=0,d=0,e=0;var q=this.boundsPadding;this._localBounds.x=a-q,this._localBounds.width=b-a+2*q,this._localBounds.y=d-q,this._localBounds.height=e-d+2*q},PIXI.Graphics.prototype._generateCachedSprite=function(){var a=this.getLocalBounds();if(this._cachedSprite)this._cachedSprite.buffer.resize(a.width,a.height);else{var b=new PIXI.CanvasBuffer(a.width,a.height),c=PIXI.Texture.fromCanvas(b.canvas);this._cachedSprite=new PIXI.Sprite(c),this._cachedSprite.buffer=b,this._cachedSprite.worldTransform=this.worldTransform}this._cachedSprite.anchor.x=-(a.x/a.width),this._cachedSprite.anchor.y=-(a.y/a.height),this._cachedSprite.buffer.context.translate(-a.x,-a.y),this.worldAlpha=1,PIXI.CanvasGraphics.renderGraphics(this,this._cachedSprite.buffer.context),this._cachedSprite.alpha=this.alpha},PIXI.Graphics.prototype.updateCachedSpriteTexture=function(){var a=this._cachedSprite,b=a.texture,c=a.buffer.canvas;b.baseTexture.width=c.width,b.baseTexture.height=c.height,b.crop.width=b.frame.width=c.width,b.crop.height=b.frame.height=c.height,a._width=c.width,a._height=c.height,b.baseTexture.dirty()},PIXI.Graphics.prototype.destroyCachedSprite=function(){this._cachedSprite.texture.destroy(!0),this._cachedSprite=null},PIXI.Graphics.prototype.drawShape=function(a){this.currentPath&&this.currentPath.shape.points.length<=2&&this.graphicsData.pop(),this.currentPath=null,a instanceof c.Polygon&&(a=a.clone(),a.flatten());var b=new PIXI.GraphicsData(this.lineWidth,this.lineColor,this.lineAlpha,this.fillColor,this.fillAlpha,this.filling,a);return this.graphicsData.push(b),b.type===PIXI.Graphics.POLY&&(b.shape.closed=this.filling,this.currentPath=b),this.dirty=!0,this.updateLocalBounds(),b},Object.defineProperty(PIXI.Graphics.prototype,"cacheAsBitmap",{get:function(){return this._cacheAsBitmap},set:function(a){this._cacheAsBitmap=a,this._cacheAsBitmap?this._generateCachedSprite():this.destroyCachedSprite(),this.dirty=!0,this.webGLDirty=!0}}),PIXI.GraphicsData=function(a,b,c,d,e,f,g){this.lineWidth=a,this.lineColor=b,this.lineAlpha=c,this._lineTint=b,this.fillColor=d,this.fillAlpha=e,this._fillTint=d,this.fill=f,this.shape=g,this.type=g.type},PIXI.GraphicsData.prototype.constructor=PIXI.GraphicsData,PIXI.GraphicsData.prototype.clone=function(){return new GraphicsData(this.lineWidth,this.lineColor,this.lineAlpha,this.fillColor,this.fillAlpha,this.fill,this.shape)},PIXI.PolyK={},PIXI.PolyK.Triangulate=function(a){var b=!0,c=a.length>>1;if(3>c)return[];for(var d=[],e=[],f=0;c>f;f++)e.push(f);f=0;for(var g=c;g>3;){var h=e[(f+0)%g],i=e[(f+1)%g],j=e[(f+2)%g],k=a[2*h],l=a[2*h+1],m=a[2*i],n=a[2*i+1],o=a[2*j],p=a[2*j+1],q=!1;if(PIXI.PolyK._convex(k,l,m,n,o,p,b)){q=!0;for(var r=0;g>r;r++){var s=e[r];if(s!==h&&s!==i&&s!==j&&PIXI.PolyK._PointInTriangle(a[2*s],a[2*s+1],k,l,m,n,o,p)){q=!1;break}}}if(q)d.push(h,i,j),e.splice((f+1)%g,1),g--,f=0;else if(f++>3*g){if(!b)return null;for(d=[],e=[],f=0;c>f;f++)e.push(f);f=0,g=c,b=!1}}return d.push(e[0],e[1],e[2]),d},PIXI.PolyK._PointInTriangle=function(a,b,c,d,e,f,g,h){var i=g-c,j=h-d,k=e-c,l=f-d,m=a-c,n=b-d,o=i*i+j*j,p=i*k+j*l,q=i*m+j*n,r=k*k+l*l,s=k*m+l*n,t=1/(o*r-p*p),u=(r*q-p*s)*t,v=(o*s-p*q)*t;return u>=0&&v>=0&&1>u+v},PIXI.PolyK._convex=function(a,b,c,d,e,f,g){return(b-d)*(e-c)+(c-a)*(f-d)>=0===g},PIXI.EarCut={},PIXI.EarCut.Triangulate=function(a,b,c){c=c||2;var d=b&&b.length,e=d?b[0]*c:a.length,f=PIXI.EarCut.linkedList(a,0,e,c,!0),g=[];if(!f)return g;var h,i,j,k,l,m,n;if(d&&(f=PIXI.EarCut.eliminateHoles(a,b,f,c)),a.length>80*c){h=j=a[0],i=k=a[1];for(var o=c;e>o;o+=c)l=a[o],m=a[o+1],h>l&&(h=l),i>m&&(i=m),l>j&&(j=l),m>k&&(k=m);n=Math.max(j-h,k-i)}return PIXI.EarCut.earcutLinked(f,g,c,h,i,n),g},PIXI.EarCut.linkedList=function(a,b,c,d,e){var f,g,h,i=0;for(f=b,g=c-d;c>f;f+=d)i+=(a[g]-a[f])*(a[f+1]+a[g+1]),g=f;if(e===i>0)for(f=b;c>f;f+=d)h=PIXI.EarCut.insertNode(f,a[f],a[f+1],h);else for(f=c-d;f>=b;f-=d)h=PIXI.EarCut.insertNode(f,a[f],a[f+1],h);return h},PIXI.EarCut.filterPoints=function(a,b){if(!a)return a;b||(b=a);var c,d=a;do if(c=!1,d.steiner||!PIXI.EarCut.equals(d,d.next)&&0!==PIXI.EarCut.area(d.prev,d,d.next))d=d.next;else{if(PIXI.EarCut.removeNode(d),d=b=d.prev,d===d.next)return null;c=!0}while(c||d!==b);return b},PIXI.EarCut.earcutLinked=function(a,b,c,d,e,f,g){if(a){!g&&f&&PIXI.EarCut.indexCurve(a,d,e,f);for(var h,i,j=a;a.prev!==a.next;)if(h=a.prev,i=a.next,f?PIXI.EarCut.isEarHashed(a,d,e,f):PIXI.EarCut.isEar(a))b.push(h.i/c),b.push(a.i/c),b.push(i.i/c),PIXI.EarCut.removeNode(a),a=i.next,j=i.next;else if(a=i,a===j){g?1===g?(a=PIXI.EarCut.cureLocalIntersections(a,b,c),PIXI.EarCut.earcutLinked(a,b,c,d,e,f,2)):2===g&&PIXI.EarCut.splitEarcut(a,b,c,d,e,f):PIXI.EarCut.earcutLinked(PIXI.EarCut.filterPoints(a),b,c,d,e,f,1);break}}},PIXI.EarCut.isEar=function(a){var b=a.prev,c=a,d=a.next;if(PIXI.EarCut.area(b,c,d)>=0)return!1;for(var e=a.next.next;e!==a.prev;){if(PIXI.EarCut.pointInTriangle(b.x,b.y,c.x,c.y,d.x,d.y,e.x,e.y)&&PIXI.EarCut.area(e.prev,e,e.next)>=0)return!1;e=e.next}return!0},PIXI.EarCut.isEarHashed=function(a,b,c,d){var e=a.prev,f=a,g=a.next;if(PIXI.EarCut.area(e,f,g)>=0)return!1;for(var h=e.xf.x?e.x>g.x?e.x:g.x:f.x>g.x?f.x:g.x,k=e.y>f.y?e.y>g.y?e.y:g.y:f.y>g.y?f.y:g.y,l=PIXI.EarCut.zOrder(h,i,b,c,d),m=PIXI.EarCut.zOrder(j,k,b,c,d),n=a.nextZ;n&&n.z<=m;){if(n!==a.prev&&n!==a.next&&PIXI.EarCut.pointInTriangle(e.x,e.y,f.x,f.y,g.x,g.y,n.x,n.y)&&PIXI.EarCut.area(n.prev,n,n.next)>=0)return!1;n=n.nextZ}for(n=a.prevZ;n&&n.z>=l;){if(n!==a.prev&&n!==a.next&&PIXI.EarCut.pointInTriangle(e.x,e.y,f.x,f.y,g.x,g.y,n.x,n.y)&&PIXI.EarCut.area(n.prev,n,n.next)>=0)return!1;n=n.prevZ}return!0},PIXI.EarCut.cureLocalIntersections=function(a,b,c){var d=a;do{var e=d.prev,f=d.next.next;PIXI.EarCut.intersects(e,d,d.next,f)&&PIXI.EarCut.locallyInside(e,f)&&PIXI.EarCut.locallyInside(f,e)&&(b.push(e.i/c),b.push(d.i/c),b.push(f.i/c),PIXI.EarCut.removeNode(d),PIXI.EarCut.removeNode(d.next),d=a=f),d=d.next}while(d!==a);return d},PIXI.EarCut.splitEarcut=function(a,b,c,d,e,f){var g=a;do{for(var h=g.next.next;h!==g.prev;){if(g.i!==h.i&&PIXI.EarCut.isValidDiagonal(g,h)){var i=PIXI.EarCut.splitPolygon(g,h);return g=PIXI.EarCut.filterPoints(g,g.next),i=PIXI.EarCut.filterPoints(i,i.next),PIXI.EarCut.earcutLinked(g,b,c,d,e,f),void PIXI.EarCut.earcutLinked(i,b,c,d,e,f)}h=h.next}g=g.next}while(g!==a)},PIXI.EarCut.eliminateHoles=function(a,b,c,d){var e,f,g,h,i,j=[];for(e=0,f=b.length;f>e;e++)g=b[e]*d,h=f-1>e?b[e+1]*d:a.length,i=PIXI.EarCut.linkedList(a,g,h,d,!1),i===i.next&&(i.steiner=!0),j.push(PIXI.EarCut.getLeftmost(i));for(j.sort(compareX),e=0;e=d.next.y){var h=d.x+(f-d.y)*(d.next.x-d.x)/(d.next.y-d.y);e>=h&&h>g&&(g=h,c=d.x=d.x&&d.x>=c.x&&PIXI.EarCut.pointInTriangle(fi||i===k&&d.x>c.x)&&PIXI.EarCut.locallyInside(d,a)&&(c=d,k=i)),d=d.next;return c},PIXI.EarCut.indexCurve=function(a,b,c,d){var e=a;do null===e.z&&(e.z=PIXI.EarCut.zOrder(e.x,e.y,b,c,d)),e.prevZ=e.prev,e.nextZ=e.next,e=e.next;while(e!==a);e.prevZ.nextZ=null,e.prevZ=null,PIXI.EarCut.sortLinked(e)},PIXI.EarCut.sortLinked=function(a){var b,c,d,e,f,g,h,i,j=1;do{for(c=a,a=null,f=null,g=0;c;){for(g++,d=c,h=0,b=0;j>b&&(h++,d=d.nextZ,d);b++);for(i=j;h>0||i>0&&d;)0===h?(e=d,d=d.nextZ,i--):0!==i&&d?c.z<=d.z?(e=c,c=c.nextZ,h--):(e=d,d=d.nextZ,i--):(e=c,c=c.nextZ,h--),f?f.nextZ=e:a=e,e.prevZ=f,f=e;c=d}f.nextZ=null,j*=2}while(g>1);return a},PIXI.EarCut.zOrder=function(a,b,c,d,e){return a=32767*(a-c)/e,b=32767*(b-d)/e,a=16711935&(a|a<<8),a=252645135&(a|a<<4),a=858993459&(a|a<<2),a=1431655765&(a|a<<1),b=16711935&(b|b<<8),b=252645135&(b|b<<4),b=858993459&(b|b<<2),b=1431655765&(b|b<<1),a|b<<1},PIXI.EarCut.getLeftmost=function(a){var b=a,c=a;do b.x=0&&(a-g)*(d-h)-(c-g)*(b-h)>=0&&(c-g)*(f-h)-(e-g)*(d-h)>=0},PIXI.EarCut.isValidDiagonal=function(a,b){return PIXI.EarCut.equals(a,b)||a.next.i!==b.i&&a.prev.i!==b.i&&!PIXI.EarCut.intersectsPolygon(a,b)&&PIXI.EarCut.locallyInside(a,b)&&PIXI.EarCut.locallyInside(b,a)&&PIXI.EarCut.middleInside(a,b)},PIXI.EarCut.area=function(a,b,c){return(b.y-a.y)*(c.x-b.x)-(b.x-a.x)*(c.y-b.y)},PIXI.EarCut.equals=function(a,b){return a.x===b.x&&a.y===b.y},PIXI.EarCut.intersects=function(a,b,c,d){return PIXI.EarCut.area(a,b,c)>0!=PIXI.EarCut.area(a,b,d)>0&&PIXI.EarCut.area(c,d,a)>0!=PIXI.EarCut.area(c,d,b)>0},PIXI.EarCut.intersectsPolygon=function(a,b){var c=a;do{if(c.i!==a.i&&c.next.i!==a.i&&c.i!==b.i&&c.next.i!==b.i&&PIXI.EarCut.intersects(c,c.next,a,b))return!0;c=c.next}while(c!==a);return!1},PIXI.EarCut.locallyInside=function(a,b){return PIXI.EarCut.area(a.prev,a,a.next)<0?PIXI.EarCut.area(a,b,a.next)>=0&&PIXI.EarCut.area(a,a.prev,b)>=0:PIXI.EarCut.area(a,b,a.prev)<0||PIXI.EarCut.area(a,a.next,b)<0},PIXI.EarCut.middleInside=function(a,b){var c=a,d=!1,e=(a.x+b.x)/2,f=(a.y+b.y)/2;do c.y>f!=c.next.y>f&&e<(c.next.x-c.x)*(f-c.y)/(c.next.y-c.y)+c.x&&(d=!d),c=c.next;while(c!==a);return d},PIXI.EarCut.splitPolygon=function(a,b){var c=new PIXI.EarCut.Node(a.i,a.x,a.y),d=new PIXI.EarCut.Node(b.i,b.x,b.y),e=a.next,f=b.prev;return a.next=b,b.prev=a,c.next=e,e.prev=c,d.next=c,c.prev=d,f.next=d,d.prev=f,d},PIXI.EarCut.insertNode=function(a,b,c,d){var e=new PIXI.EarCut.Node(a,b,c);return d?(e.next=d.next,e.prev=d,d.next.prev=e,d.next=e):(e.prev=e,e.next=e),e},PIXI.EarCut.removeNode=function(a){a.next.prev=a.prev,a.prev.next=a.next,a.prevZ&&(a.prevZ.nextZ=a.nextZ),a.nextZ&&(a.nextZ.prevZ=a.prevZ)},PIXI.EarCut.Node=function(a,b,c){this.i=a,this.x=b,this.y=c,this.prev=null,this.next=null,this.z=null,this.prevZ=null,this.nextZ=null,this.steiner=!1},PIXI.WebGLGraphics=function(){},PIXI.WebGLGraphics.stencilBufferLimit=6,PIXI.WebGLGraphics.renderGraphics=function(a,b){var c,d=b.gl,e=b.projection,f=b.offset,g=b.shaderManager.primitiveShader;a.dirty&&PIXI.WebGLGraphics.updateGraphics(a,d);for(var h=a._webGL[d.id],i=0;i=PIXI.WebGLGraphics.stencilBufferLimit)if(g.points.length<2*PIXI.WebGLGraphics.stencilBufferLimit){f=PIXI.WebGLGraphics.switchMode(c,0);var h=PIXI.WebGLGraphics.buildPoly(g,f);h||(f=PIXI.WebGLGraphics.switchMode(c,1),PIXI.WebGLGraphics.buildComplexPoly(g,f))}else f=PIXI.WebGLGraphics.switchMode(c,1),PIXI.WebGLGraphics.buildComplexPoly(g,f);g.lineWidth>0&&(f=PIXI.WebGLGraphics.switchMode(c,0),PIXI.WebGLGraphics.buildLine(g,f))}else f=PIXI.WebGLGraphics.switchMode(c,0),g.type===PIXI.Graphics.RECT?PIXI.WebGLGraphics.buildRectangle(g,f):g.type===PIXI.Graphics.CIRC||g.type===PIXI.Graphics.ELIP?PIXI.WebGLGraphics.buildCircle(g,f):g.type===PIXI.Graphics.RREC&&PIXI.WebGLGraphics.buildRoundedRectangle(g,f);c.lastIndex++}for(d=0;d=q;q++)p=q/n,h=g(a,c,p),i=g(b,d,p),j=g(c,e,p),k=g(d,f,p),l=g(h,j,p),m=g(i,k,p),o.push(l,m);return o},PIXI.WebGLGraphics.buildCircle=function(a,b){var c,d,e=a.shape,f=e.x,g=e.y;a.type===PIXI.Graphics.CIRC?(c=e.radius,d=e.radius):(c=e.width,d=e.height);var h=40,i=2*Math.PI/h,j=0;if(a.fill){var k=PIXI.hex2rgb(a.fillColor),l=a.fillAlpha,m=k[0]*l,n=k[1]*l,o=k[2]*l,p=b.points,q=b.indices,r=p.length/6;for(q.push(r),j=0;h+1>j;j++)p.push(f,g,m,n,o,l),p.push(f+Math.sin(i*j)*c,g+Math.cos(i*j)*d,m,n,o,l),q.push(r++,r++);q.push(r-1)}if(a.lineWidth){var s=a.points;for(a.points=[],j=0;h+1>j;j++)a.points.push(f+Math.sin(i*j)*c,g+Math.cos(i*j)*d);PIXI.WebGLGraphics.buildLine(a,b),a.points=s}},PIXI.WebGLGraphics.buildLine=function(a,b){var c=0,d=a.points;if(0!==d.length){if(a.lineWidth%2)for(c=0;cc;c++)k=d[2*(c-1)],l=d[2*(c-1)+1],m=d[2*c],n=d[2*c+1],o=d[2*(c+1)],p=d[2*(c+1)+1],q=-(l-n),r=k-m,E=Math.sqrt(q*q+r*r),q/=E,r/=E,q*=K,r*=K,s=-(n-p),t=m-o,E=Math.sqrt(s*s+t*t),s/=E,t/=E,s*=K,t*=K,w=-r+l-(-r+n),x=-q+m-(-q+k),y=(-q+k)*(-r+n)-(-q+m)*(-r+l),z=-t+p-(-t+n),A=-s+m-(-s+o),B=(-s+o)*(-t+n)-(-s+m)*(-t+p),C=w*A-z*x,Math.abs(C)<.1?(C+=10.1,F.push(m-q,n-r,N,O,P,M),F.push(m+q,n+r,N,O,P,M)):(i=(x*B-A*y)/C,j=(z*y-w*B)/C,D=(i-m)*(i-m)+(j-n)+(j-n),D>19600?(u=q-s,v=r-t,E=Math.sqrt(u*u+v*v),u/=E,v/=E,u*=K,v*=K,F.push(m-u,n-v),F.push(N,O,P,M),F.push(m+u,n+v),F.push(N,O,P,M),F.push(m-u,n-v),F.push(N,O,P,M),I++):(F.push(i,j),F.push(N,O,P,M),F.push(m-(i-m),n-(j-n)),F.push(N,O,P,M)));for(k=d[2*(H-2)],l=d[2*(H-2)+1],m=d[2*(H-1)],n=d[2*(H-1)+1],q=-(l-n),r=k-m,E=Math.sqrt(q*q+r*r),q/=E,r/=E,q*=K,r*=K,F.push(m-q,n-r),F.push(N,O,P,M),F.push(m+q,n+r),F.push(N,O,P,M),G.push(J),c=0;I>c;c++)G.push(J++);G.push(J-1)}},PIXI.WebGLGraphics.buildComplexPoly=function(a,b){var c=a.points.slice();if(!(c.length<6)){var d=b.indices;b.points=c,b.alpha=a.fillAlpha,b.color=PIXI.hex2rgb(a.fillColor);for(var e,f,g=1/0,h=-(1/0),i=1/0,j=-(1/0),k=0;ke?e:g,h=e>h?e:h,i=i>f?f:i,j=f>j?f:j;c.push(g,i,h,i,h,j,g,j);var l=c.length/2;for(k=0;l>k;k++)d.push(k)}},PIXI.WebGLGraphics.buildPoly=function(a,b){var c=a.points;if(!(c.length<6)){var d=b.points,e=b.indices,f=c.length/2,g=PIXI.hex2rgb(a.fillColor),h=a.fillAlpha,i=g[0]*h,j=g[1]*h,k=g[2]*h,l=PIXI.EarCut.Triangulate(c,null,2);if(!l)return!1;var m=d.length/6,n=0;for(n=0;nn;n++)d.push(c[2*n],c[2*n+1],i,j,k,h);return!0}},PIXI.WebGLGraphics.graphicsDataPool=[],PIXI.WebGLGraphicsData=function(a){this.gl=a,this.color=[0,0,0],this.points=[],this.indices=[],this.buffer=a.createBuffer(),this.indexBuffer=a.createBuffer(),this.mode=1,this.alpha=1,this.dirty=!0},PIXI.WebGLGraphicsData.prototype.reset=function(){this.points=[],this.indices=[]},PIXI.WebGLGraphicsData.prototype.upload=function(){var a=this.gl;this.glPoints=new PIXI.Float32Array(this.points),a.bindBuffer(a.ARRAY_BUFFER,this.buffer),a.bufferData(a.ARRAY_BUFFER,this.glPoints,a.STATIC_DRAW),this.glIndicies=new PIXI.Uint16Array(this.indices),a.bindBuffer(a.ELEMENT_ARRAY_BUFFER,this.indexBuffer),a.bufferData(a.ELEMENT_ARRAY_BUFFER,this.glIndicies,a.STATIC_DRAW),this.dirty=!1},PIXI.CanvasGraphics=function(){},PIXI.CanvasGraphics.renderGraphics=function(a,b){var c=a.worldAlpha;a.dirty&&(this.updateGraphicsTint(a),a.dirty=!1);for(var d=0;dA?A:z,b.beginPath(),b.moveTo(v,w+z),b.lineTo(v,w+y-z),b.quadraticCurveTo(v,w+y,v+z,w+y),b.lineTo(v+x-z,w+y),b.quadraticCurveTo(v+x,w+y,v+x,w+y-z),b.lineTo(v+x,w+z),b.quadraticCurveTo(v+x,w,v+x-z,w),b.lineTo(v+z,w),b.quadraticCurveTo(v,w,v,w+z),b.closePath(),(e.fillColor||0===e.fillColor)&&(b.globalAlpha=e.fillAlpha*c,b.fillStyle="#"+("00000"+(0|g).toString(16)).substr(-6),b.fill()),e.lineWidth&&(b.globalAlpha=e.lineAlpha*c,b.strokeStyle="#"+("00000"+(0|h).toString(16)).substr(-6),b.stroke())}}},PIXI.CanvasGraphics.renderGraphicsMask=function(a,b){var c=a.graphicsData.length;if(0!==c){b.beginPath();for(var d=0;c>d;d++){var e=a.graphicsData[d],f=e.shape;if(e.type===PIXI.Graphics.POLY){var g=f.points;b.moveTo(g[0],g[1]);for(var h=1;hy?y:x,b.moveTo(t,u+x),b.lineTo(t,u+w-x),b.quadraticCurveTo(t,u+w,t+x,u+w),b.lineTo(t+v-x,u+w),b.quadraticCurveTo(t+v,u+w,t+v,u+w-x),b.lineTo(t+v,u+x),b.quadraticCurveTo(t+v,u,t+v-x,u),b.lineTo(t+x,u),b.quadraticCurveTo(t,u,t,u+x),b.closePath()}}}},PIXI.CanvasGraphics.updateGraphicsTint=function(a){if(16777215!==a.tint)for(var b=(a.tint>>16&255)/255,c=(a.tint>>8&255)/255,d=(255&a.tint)/255,e=0;e>16&255)/255*b*255<<16)+((g>>8&255)/255*c*255<<8)+(255&g)/255*d*255,f._lineTint=((h>>16&255)/255*b*255<<16)+((h>>8&255)/255*c*255<<8)+(255&h)/255*d*255}},c.Graphics=function(a,b,d){void 0===b&&(b=0),void 0===d&&(d=0),this.type=c.GRAPHICS,this.physicsType=c.SPRITE,this.anchor=new c.Point,PIXI.Graphics.call(this),c.Component.Core.init.call(this,a,b,d,"",null)},c.Graphics.prototype=Object.create(PIXI.Graphics.prototype),c.Graphics.prototype.constructor=c.Graphics,c.Component.Core.install.call(c.Graphics.prototype,["Angle","AutoCull","Bounds","Destroy","FixedToCamera","InputEnabled","InWorld","LifeSpan","PhysicsBody","Reset"]),c.Graphics.prototype.preUpdatePhysics=c.Component.PhysicsBody.preUpdate,c.Graphics.prototype.preUpdateLifeSpan=c.Component.LifeSpan.preUpdate,c.Graphics.prototype.preUpdateInWorld=c.Component.InWorld.preUpdate,c.Graphics.prototype.preUpdateCore=c.Component.Core.preUpdate,c.Graphics.prototype.preUpdate=function(){return this.preUpdatePhysics()&&this.preUpdateLifeSpan()&&this.preUpdateInWorld()?this.preUpdateCore():!1},c.Graphics.prototype.destroy=function(a){this.clear(),c.Component.Destroy.prototype.destroy.call(this,a)},c.Graphics.prototype.drawTriangle=function(a,b){void 0===b&&(b=!1);var d=new c.Polygon(a);if(b){var e=new c.Point(this.game.camera.x-a[0].x,this.game.camera.y-a[0].y),f=new c.Point(a[1].x-a[0].x,a[1].y-a[0].y),g=new c.Point(a[1].x-a[2].x,a[1].y-a[2].y),h=g.cross(f);e.dot(h)>0&&this.drawPolygon(d)}else this.drawPolygon(d)},c.Graphics.prototype.drawTriangles=function(a,b,d){void 0===d&&(d=!1);var e,f=new c.Point,g=new c.Point,h=new c.Point,i=[];if(b)if(a[0]instanceof c.Point)for(e=0;e0&&this.style.maxLinesh;h++){if(0===c){var i=this.style.strokeThickness+this.padding.x;i+=this.colors.length>0||this.strokeColors.length>0||this.fontWeights.length>0||this.fontStyles.length>0?this.measureLine(b[h]):this.context.measureText(b[h]).width,this.style.wordWrap&&(i-=this.context.measureText(" ").width)}else{var j=b[h].split(/(?:\t)/),i=this.padding.x+this.style.strokeThickness;if(Array.isArray(c))for(var k=0,l=0;l0||this.strokeColors.length>0||this.fontWeights.length>0||this.fontStyles.length>0?this.measureLine(j[l]):Math.ceil(this.context.measureText(j[l]).width),l>0&&(k+=c[l-1]),i=k+m}else for(var l=0;l0||this.strokeColors.length>0||this.fontWeights.length>0||this.fontStyles.length>0?this.measureLine(j[l]):Math.ceil(this.context.measureText(j[l]).width);var n=this.game.math.snapToCeil(i,c)-i;i+=n}}d[h]=Math.ceil(i),e=Math.max(e,d[h])}this.canvas.width=e*this._res;var o=f.fontSize+this.style.strokeThickness+this.padding.y,p=o*g,q=this._lineSpacing;0>q&&Math.abs(q)>o&&(q=-o),0!==q&&(p+=q>0?q*b.length:q*(b.length-1)),this.canvas.height=p*this._res,this.context.scale(this._res,this._res),navigator.isCocoonJS&&this.context.clearRect(0,0,this.canvas.width,this.canvas.height),this.style.backgroundColor&&(this.context.fillStyle=this.style.backgroundColor,this.context.fillRect(0,0,this.canvas.width,this.canvas.height)),this.context.fillStyle=this.style.fill,this.context.font=this.style.font,this.context.strokeStyle=this.style.stroke,this.context.textBaseline="alphabetic",this.context.lineWidth=this.style.strokeThickness,this.context.lineCap="round",this.context.lineJoin="round";var r,s;for(this._charCount=0,h=0;g>h;h++)r=this.style.strokeThickness/2,s=this.style.strokeThickness/2+h*o+f.ascent,h>0&&(s+=q*h),"right"===this.style.align?r+=e-d[h]:"center"===this.style.align&&(r+=(e-d[h])/2),this.autoRound&&(r=Math.round(r),s=Math.round(s)),this.colors.length>0||this.strokeColors.length>0||this.fontWeights.length>0||this.fontStyles.length>0?this.updateLine(b[h],r,s):(this.style.stroke&&this.style.strokeThickness&&(this.updateShadow(this.style.shadowStroke),0===c?this.context.strokeText(b[h],r,s):this.renderTabLine(b[h],r,s,!1)),this.style.fill&&(this.updateShadow(this.style.shadowFill),0===c?this.context.fillText(b[h],r,s):this.renderTabLine(b[h],r,s,!0)));this.updateTexture()},c.Text.prototype.renderTabLine=function(a,b,c,d){var e=a.split(/(?:\t)/),f=this.style.tabs,g=0;if(Array.isArray(f))for(var h=0,i=0;i0&&(h+=f[i-1]),g=b+h,d?this.context.fillText(e[i],g,c):this.context.strokeText(e[i],g,c);else for(var i=0;i0||this.fontStyles.length>0){var e=this.fontToComponents(this.context.font);this.fontStyles[this._charCount]&&(e.fontStyle=this.fontStyles[this._charCount]),this.fontWeights[this._charCount]&&(e.fontWeight=this.fontWeights[this._charCount]),this.context.font=this.componentsToFont(e)}this.style.stroke&&this.style.strokeThickness&&(this.strokeColors[this._charCount]&&(this.context.strokeStyle=this.strokeColors[this._charCount]),this.updateShadow(this.style.shadowStroke)),this.style.fill&&(this.colors[this._charCount]&&(this.context.fillStyle=this.colors[this._charCount]),this.updateShadow(this.style.shadowFill)),b+=this.context.measureText(d).width,this._charCount++}return Math.ceil(b)},c.Text.prototype.updateLine=function(a,b,c){for(var d=0;d0||this.fontStyles.length>0){var f=this.fontToComponents(this.context.font);this.fontStyles[this._charCount]&&(f.fontStyle=this.fontStyles[this._charCount]),this.fontWeights[this._charCount]&&(f.fontWeight=this.fontWeights[this._charCount]),this.context.font=this.componentsToFont(f)}this.style.stroke&&this.style.strokeThickness&&(this.strokeColors[this._charCount]&&(this.context.strokeStyle=this.strokeColors[this._charCount]),this.updateShadow(this.style.shadowStroke),this.context.strokeText(e,b,c)),this.style.fill&&(this.colors[this._charCount]&&(this.context.fillStyle=this.colors[this._charCount]),this.updateShadow(this.style.shadowFill),this.context.fillText(e,b,c)),b+=this.context.measureText(e).width,this._charCount++}},c.Text.prototype.clearColors=function(){return this.colors=[],this.strokeColors=[],this.dirty=!0,this},c.Text.prototype.clearFontValues=function(){return this.fontStyles=[],this.fontWeights=[],this.dirty=!0,this},c.Text.prototype.addColor=function(a,b){return this.colors[b]=a,this.dirty=!0,this},c.Text.prototype.addStrokeColor=function(a,b){return this.strokeColors[b]=a,this.dirty=!0,this},c.Text.prototype.addFontStyle=function(a,b){return this.fontStyles[b]=a,this.dirty=!0,this},c.Text.prototype.addFontWeight=function(a,b){return this.fontWeights[b]=a,this.dirty=!0,this},c.Text.prototype.precalculateWordWrap=function(a){this.texture.baseTexture.resolution=this._res,this.context.font=this.style.font;var b=this.runWordWrap(a);return b.split(/(?:\r\n|\r|\n)/)},c.Text.prototype.runWordWrap=function(a){return this.useAdvancedWrap?this.advancedWordWrap(a):this.basicWordWrap(a)},c.Text.prototype.advancedWordWrap=function(a){for(var b=this.context,c=this.style.wordWrapWidth,d="",e=a.replace(/ +/gi," ").split(/\r?\n/gi),f=e.length,g=0;f>g;g++){var h=e[g],i="";h=h.replace(/^ *|\s*$/gi,"");var j=b.measureText(h).width;if(c>j)d+=h+"\n";else{for(var k=c,l=h.split(" "),m=0;mk){if(0===m){for(var q=o;q.length&&(q=q.slice(0,-1),p=b.measureText(q).width,!(k>=p)););if(!q.length)throw new Error("This text's wordWrapWidth setting is less than a single character!");var r=n.substr(q.length);l[m]=r,i+=q}var s=l[m].length?m:m+1,t=l.slice(s).join(" ").replace(/[ \n]*$/gi,"");e[g+1]=t+" "+(e[g+1]||""),f=e.length;break}i+=o,k-=p}d+=i.replace(/[ \n]*$/gi,"")+"\n"}}return d=d.replace(/[\s|\n]*$/gi,"")},c.Text.prototype.basicWordWrap=function(a){for(var b="",c=a.split("\n"),d=0;de?(g>0&&(b+="\n"),b+=f[g]+" ",e=this.style.wordWrapWidth-h):(e-=i,b+=f[g]+" ")}dd&&(this.style.wordWrapWidth=d)),this.updateTexture(),this},c.Text.prototype.updateTexture=function(){var a=this.texture.baseTexture,b=this.texture.crop,c=this.texture.frame,d=this.canvas.width,e=this.canvas.height;if(a.width=d,a.height=e,b.width=d,b.height=e,c.width=d,c.height=e,this.texture.width=d,this.texture.height=e,this._width=d,this._height=e,this.textBounds){var f=this.textBounds.x,g=this.textBounds.y;"right"===this.style.boundsAlignH?f+=this.textBounds.width-this.canvas.width:"center"===this.style.boundsAlignH&&(f+=this.textBounds.halfWidth-this.canvas.width/2),"bottom"===this.style.boundsAlignV?g+=this.textBounds.height-this.canvas.height:"middle"===this.style.boundsAlignV&&(g+=this.textBounds.halfHeight-this.canvas.height/2),this.pivot.x=-f,this.pivot.y=-g}this.renderable=0!==d&&0!==e,this.texture.requiresReTint=!0,this.texture.baseTexture.dirty()},c.Text.prototype._renderWebGL=function(a){this.dirty&&(this.updateText(),this.dirty=!1),PIXI.Sprite.prototype._renderWebGL.call(this,a)},c.Text.prototype._renderCanvas=function(a){this.dirty&&(this.updateText(),this.dirty=!1),PIXI.Sprite.prototype._renderCanvas.call(this,a)},c.Text.prototype.determineFontProperties=function(a){var b=c.Text.fontPropertiesCache[a];if(!b){b={};var d=c.Text.fontPropertiesCanvas,e=c.Text.fontPropertiesContext;e.font=a;var f=Math.ceil(e.measureText("|MÉq").width),g=Math.ceil(e.measureText("|MÉq").width),h=2*g;if(g=1.4*g|0,d.width=f,d.height=h,e.fillStyle="#f00",e.fillRect(0,0,f,h),e.font=a,e.textBaseline="alphabetic",e.fillStyle="#000",e.fillText("|MÉq",0,g),!e.getImageData(0,0,f,h))return b.ascent=g,b.descent=g+6,b.fontSize=b.ascent+b.descent,c.Text.fontPropertiesCache[a]=b,b;var i,j,k=e.getImageData(0,0,f,h).data,l=k.length,m=4*f,n=0,o=!1;for(i=0;g>i;i++){for(j=0;m>j;j+=4)if(255!==k[n+j]){o=!0;break}if(o)break;n+=m}for(b.ascent=g-i,n=l-m,o=!1,i=h;i>g;i--){for(j=0;m>j;j+=4)if(255!==k[n+j]){o=!0;break}if(o)break;n-=m}b.descent=i-g,b.descent+=6,b.fontSize=b.ascent+b.descent,c.Text.fontPropertiesCache[a]=b}return b},c.Text.prototype.getBounds=function(a){return this.dirty&&(this.updateText(),this.dirty=!1),PIXI.Sprite.prototype.getBounds.call(this,a)},Object.defineProperty(c.Text.prototype,"text",{get:function(){return this._text},set:function(a){a!==this._text&&(this._text=a.toString()||"",this.dirty=!0,this.parent&&this.updateTransform())}}),Object.defineProperty(c.Text.prototype,"cssFont",{get:function(){return this.componentsToFont(this._fontComponents)},set:function(a){a=a||"bold 20pt Arial",this._fontComponents=this.fontToComponents(a),this.updateFont(this._fontComponents)}}),Object.defineProperty(c.Text.prototype,"font",{get:function(){return this._fontComponents.fontFamily},set:function(a){a=a||"Arial",a=a.trim(),/^(?:inherit|serif|sans-serif|cursive|fantasy|monospace)$/.exec(a)||/['",]/.exec(a)||(a="'"+a+"'"),this._fontComponents.fontFamily=a,this.updateFont(this._fontComponents)}}),Object.defineProperty(c.Text.prototype,"fontSize",{get:function(){var a=this._fontComponents.fontSize;return a&&/(?:^0$|px$)/.exec(a)?parseInt(a,10):a},set:function(a){a=a||"0","number"==typeof a&&(a+="px"),this._fontComponents.fontSize=a,this.updateFont(this._fontComponents)}}),Object.defineProperty(c.Text.prototype,"fontWeight",{get:function(){return this._fontComponents.fontWeight||"normal"},set:function(a){a=a||"normal",this._fontComponents.fontWeight=a,this.updateFont(this._fontComponents)}}),Object.defineProperty(c.Text.prototype,"fontStyle",{get:function(){return this._fontComponents.fontStyle||"normal"},set:function(a){a=a||"normal",this._fontComponents.fontStyle=a,this.updateFont(this._fontComponents)}}),Object.defineProperty(c.Text.prototype,"fontVariant",{get:function(){return this._fontComponents.fontVariant||"normal"},set:function(a){a=a||"normal",this._fontComponents.fontVariant=a,this.updateFont(this._fontComponents)}}),Object.defineProperty(c.Text.prototype,"fill",{get:function(){return this.style.fill},set:function(a){a!==this.style.fill&&(this.style.fill=a,this.dirty=!0)}}),Object.defineProperty(c.Text.prototype,"align",{get:function(){return this.style.align},set:function(a){a!==this.style.align&&(this.style.align=a,this.dirty=!0)}}),Object.defineProperty(c.Text.prototype,"resolution",{get:function(){return this._res},set:function(a){a!==this._res&&(this._res=a,this.dirty=!0)}}),Object.defineProperty(c.Text.prototype,"tabs",{get:function(){return this.style.tabs},set:function(a){a!==this.style.tabs&&(this.style.tabs=a,this.dirty=!0)}}),Object.defineProperty(c.Text.prototype,"boundsAlignH",{get:function(){return this.style.boundsAlignH},set:function(a){a!==this.style.boundsAlignH&&(this.style.boundsAlignH=a,this.dirty=!0)}}),Object.defineProperty(c.Text.prototype,"boundsAlignV",{get:function(){return this.style.boundsAlignV},set:function(a){a!==this.style.boundsAlignV&&(this.style.boundsAlignV=a,this.dirty=!0)}}),Object.defineProperty(c.Text.prototype,"stroke",{get:function(){return this.style.stroke},set:function(a){a!==this.style.stroke&&(this.style.stroke=a,this.dirty=!0)}}),Object.defineProperty(c.Text.prototype,"strokeThickness",{get:function(){return this.style.strokeThickness},set:function(a){a!==this.style.strokeThickness&&(this.style.strokeThickness=a,this.dirty=!0)}}),Object.defineProperty(c.Text.prototype,"wordWrap",{get:function(){return this.style.wordWrap},set:function(a){a!==this.style.wordWrap&&(this.style.wordWrap=a,this.dirty=!0)}}),Object.defineProperty(c.Text.prototype,"wordWrapWidth",{get:function(){return this.style.wordWrapWidth},set:function(a){a!==this.style.wordWrapWidth&&(this.style.wordWrapWidth=a,this.dirty=!0)}}),Object.defineProperty(c.Text.prototype,"lineSpacing",{get:function(){return this._lineSpacing},set:function(a){a!==this._lineSpacing&&(this._lineSpacing=parseFloat(a),this.dirty=!0,this.parent&&this.updateTransform())}}),Object.defineProperty(c.Text.prototype,"shadowOffsetX",{get:function(){return this.style.shadowOffsetX},set:function(a){a!==this.style.shadowOffsetX&&(this.style.shadowOffsetX=a,this.dirty=!0)}}),Object.defineProperty(c.Text.prototype,"shadowOffsetY",{get:function(){return this.style.shadowOffsetY},set:function(a){a!==this.style.shadowOffsetY&&(this.style.shadowOffsetY=a,this.dirty=!0)}}),Object.defineProperty(c.Text.prototype,"shadowColor",{get:function(){return this.style.shadowColor},set:function(a){a!==this.style.shadowColor&&(this.style.shadowColor=a,this.dirty=!0)}}),Object.defineProperty(c.Text.prototype,"shadowBlur",{get:function(){return this.style.shadowBlur},set:function(a){a!==this.style.shadowBlur&&(this.style.shadowBlur=a,this.dirty=!0)}}),Object.defineProperty(c.Text.prototype,"shadowStroke",{get:function(){return this.style.shadowStroke},set:function(a){a!==this.style.shadowStroke&&(this.style.shadowStroke=a,this.dirty=!0)}}),Object.defineProperty(c.Text.prototype,"shadowFill",{get:function(){return this.style.shadowFill},set:function(a){a!==this.style.shadowFill&&(this.style.shadowFill=a,this.dirty=!0)}}),Object.defineProperty(c.Text.prototype,"width",{get:function(){return this.dirty&&(this.updateText(),this.dirty=!1),this.scale.x*this.texture.frame.width},set:function(a){this.scale.x=a/this.texture.frame.width,this._width=a}}),Object.defineProperty(c.Text.prototype,"height",{get:function(){return this.dirty&&(this.updateText(),this.dirty=!1),this.scale.y*this.texture.frame.height},set:function(a){this.scale.y=a/this.texture.frame.height,this._height=a}}),c.Text.fontPropertiesCache={},c.Text.fontPropertiesCanvas=document.createElement("canvas"),c.Text.fontPropertiesContext=c.Text.fontPropertiesCanvas.getContext("2d"),c.BitmapText=function(a,b,d,e,f,g,h){b=b||0,d=d||0,e=e||"",f=f||"",g=g||32,h=h||"left",PIXI.DisplayObjectContainer.call(this),this.type=c.BITMAPTEXT,this.physicsType=c.SPRITE,this.textWidth=0,this.textHeight=0,this.anchor=new c.Point,this._prevAnchor=new c.Point,this._glyphs=[],this._maxWidth=0,this._text=f.toString()||"",this._data=a.cache.getBitmapFont(e),this._font=e,this._fontSize=g,this._align=h,this._tint=16777215,this.updateText(),this.dirty=!1,c.Component.Core.init.call(this,a,b,d,"",null)},c.BitmapText.prototype=Object.create(PIXI.DisplayObjectContainer.prototype),c.BitmapText.prototype.constructor=c.BitmapText,c.Component.Core.install.call(c.BitmapText.prototype,["Angle","AutoCull","Bounds","Destroy","FixedToCamera","InputEnabled","InWorld","LifeSpan","PhysicsBody","Reset"]), +c.BitmapText.prototype.preUpdatePhysics=c.Component.PhysicsBody.preUpdate,c.BitmapText.prototype.preUpdateLifeSpan=c.Component.LifeSpan.preUpdate,c.BitmapText.prototype.preUpdateInWorld=c.Component.InWorld.preUpdate,c.BitmapText.prototype.preUpdateCore=c.Component.Core.preUpdate,c.BitmapText.prototype.preUpdate=function(){return this.preUpdatePhysics()&&this.preUpdateLifeSpan()&&this.preUpdateInWorld()?this.preUpdateCore():!1},c.BitmapText.prototype.postUpdate=function(){c.Component.PhysicsBody.postUpdate.call(this),c.Component.FixedToCamera.postUpdate.call(this),this.body&&this.body.type===c.Physics.ARCADE&&(this.textWidth===this.body.sourceWidth&&this.textHeight===this.body.sourceHeight||this.body.setSize(this.textWidth,this.textHeight))},c.BitmapText.prototype.setText=function(a){this.text=a},c.BitmapText.prototype.scanLine=function(a,b,c){for(var d=0,e=0,f=-1,g=0,h=null,i=this._maxWidth>0?this._maxWidth:null,j=[],k=0;k=i&&f>-1)return{width:g||e,text:c.substr(0,k-(k-f)),end:l,chars:j};e+=(n.xAdvance+p)*b,j.push(d+(n.xOffset+p)*b),d+=(n.xAdvance+p)*b,h=m}return{width:e,text:c,end:l,chars:j}},c.BitmapText.prototype.cleanText=function(a,b){void 0===b&&(b="");var c=this._data.font;if(!c)return"";for(var d=/\r\n|\n\r|\n|\r/g,e=a.replace(d,"\n").split("\n"),f=0;fthis.textWidth&&(this.textWidth=f.width),e+=a.lineHeight*c,b=b.substr(f.text.length+1)}while(f.end===!1);this.textHeight=e;for(var g=0,h=0,i=this.textWidth*this.anchor.x,j=this.textHeight*this.anchor.y,k=0;k0&&(this._fontSize=a,this.updateText())}}),Object.defineProperty(c.BitmapText.prototype,"text",{get:function(){return this._text},set:function(a){a!==this._text&&(this._text=a.toString()||"",this.updateText())}}),Object.defineProperty(c.BitmapText.prototype,"maxWidth",{get:function(){return this._maxWidth},set:function(a){a!==this._maxWidth&&(this._maxWidth=a,this.updateText())}}),Object.defineProperty(c.BitmapText.prototype,"smoothed",{get:function(){return!this._data.base.scaleMode},set:function(a){a?this._data.base.scaleMode=0:this._data.base.scaleMode=1}}),c.RetroFont=function(a,b,d,e,f,g,h,i,j,k){if(!a.cache.checkImageKey(b))return!1;void 0!==g&&null!==g||(g=a.cache.getImage(b).width/d),this.characterWidth=d,this.characterHeight=e,this.characterSpacingX=h||0,this.characterSpacingY=i||0,this.characterPerRow=g,this.offsetX=j||0,this.offsetY=k||0,this.align="left",this.multiLine=!1,this.autoUpperCase=!0,this.customSpacingX=0,this.customSpacingY=0,this.fixedWidth=0,this.fontSet=a.cache.getImage(b),this._text="",this.grabData=[],this.frameData=new c.FrameData;for(var l=this.offsetX,m=this.offsetY,n=0,o=0;o?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~",c.RetroFont.TEXT_SET2=" !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ",c.RetroFont.TEXT_SET3="ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789 ",c.RetroFont.TEXT_SET4="ABCDEFGHIJKLMNOPQRSTUVWXYZ 0123456789",c.RetroFont.TEXT_SET5="ABCDEFGHIJKLMNOPQRSTUVWXYZ.,/() '!?-*:0123456789",c.RetroFont.TEXT_SET6="ABCDEFGHIJKLMNOPQRSTUVWXYZ!?:;0123456789\"(),-.' ",c.RetroFont.TEXT_SET7="AGMSY+:4BHNTZ!;5CIOU.?06DJPV,(17EKQW\")28FLRX-'39",c.RetroFont.TEXT_SET8="0123456789 .ABCDEFGHIJKLMNOPQRSTUVWXYZ",c.RetroFont.TEXT_SET9="ABCDEFGHIJKLMNOPQRSTUVWXYZ()-0123456789.:,'\"?!",c.RetroFont.TEXT_SET10="ABCDEFGHIJKLMNOPQRSTUVWXYZ",c.RetroFont.TEXT_SET11="ABCDEFGHIJKLMNOPQRSTUVWXYZ.,\"-+!?()':;0123456789",c.RetroFont.prototype.setFixedWidth=function(a,b){void 0===b&&(b="left"),this.fixedWidth=a,this.align=b},c.RetroFont.prototype.setText=function(a,b,c,d,e,f){this.multiLine=b||!1,this.customSpacingX=c||0,this.customSpacingY=d||0,this.align=e||"left",f?this.autoUpperCase=!1:this.autoUpperCase=!0,a.length>0&&(this.text=a)},c.RetroFont.prototype.buildRetroFontText=function(){var a=0,b=0;if(this.clear(),this.multiLine){var d=this._text.split("\n");this.fixedWidth>0?this.resize(this.fixedWidth,d.length*(this.characterHeight+this.customSpacingY)-this.customSpacingY,!0):this.resize(this.getLongestLine()*(this.characterWidth+this.customSpacingX),d.length*(this.characterHeight+this.customSpacingY)-this.customSpacingY,!0);for(var e=0;ea&&(a=0),this.pasteLine(d[e],a,b,this.customSpacingX),b+=this.characterHeight+this.customSpacingY}else this.fixedWidth>0?this.resize(this.fixedWidth,this.characterHeight,!0):this.resize(this._text.length*(this.characterWidth+this.customSpacingX),this.characterHeight,!0),a=0,this.align===c.RetroFont.ALIGN_RIGHT?a=this.width-this._text.length*(this.characterWidth+this.customSpacingX):this.align===c.RetroFont.ALIGN_CENTER&&(a=this.width/2-this._text.length*(this.characterWidth+this.customSpacingX)/2,a+=this.customSpacingX/2),0>a&&(a=0),this.pasteLine(this._text,a,0,this.customSpacingX);this.requiresReTint=!0},c.RetroFont.prototype.pasteLine=function(a,b,c,d){for(var e=0;e=0&&(this.stamp.frame=this.grabData[a.charCodeAt(e)],this.renderXY(this.stamp,b,c,!1),b+=this.characterWidth+d,b>this.width))break},c.RetroFont.prototype.getLongestLine=function(){var a=0;if(this._text.length>0)for(var b=this._text.split("\n"),c=0;ca&&(a=b[c].length);return a},c.RetroFont.prototype.removeUnsupportedCharacters=function(a){for(var b="",c=0;c=0||!a&&"\n"===d)&&(b=b.concat(d))}return b},c.RetroFont.prototype.updateOffset=function(a,b){if(this.offsetX!==a||this.offsetY!==b){for(var c=a-this.offsetX,d=b-this.offsetY,e=this.game.cache.getFrameData(this.stamp.key).getFrames(),f=e.length;f--;)e[f].x+=c,e[f].y+=d;this.buildRetroFontText()}},Object.defineProperty(c.RetroFont.prototype,"text",{get:function(){return this._text},set:function(a){var b;b=this.autoUpperCase?a.toUpperCase():a,b!==this._text&&(this._text=b,this.removeUnsupportedCharacters(this.multiLine),this.buildRetroFontText())}}),Object.defineProperty(c.RetroFont.prototype,"smoothed",{get:function(){return this.stamp.smoothed},set:function(a){this.stamp.smoothed=a,this.buildRetroFontText()}}),c.Rope=function(a,b,d,e,f,g){this.points=[],this.points=g,this._hasUpdateAnimation=!1,this._updateAnimationCallback=null,b=b||0,d=d||0,e=e||null,f=f||null,this.type=c.ROPE,PIXI.Rope.call(this,c.Cache.DEFAULT,this.points),c.Component.Core.init.call(this,a,b,d,e,f)},c.Rope.prototype=Object.create(PIXI.Rope.prototype),c.Rope.prototype.constructor=c.Rope,c.Component.Core.install.call(c.Rope.prototype,["Angle","Animation","AutoCull","Bounds","BringToTop","Crop","Delta","Destroy","FixedToCamera","InWorld","LifeSpan","LoadTexture","Overlap","PhysicsBody","Reset","ScaleMinMax","Smoothed"]),c.Rope.prototype.preUpdatePhysics=c.Component.PhysicsBody.preUpdate,c.Rope.prototype.preUpdateLifeSpan=c.Component.LifeSpan.preUpdate,c.Rope.prototype.preUpdateInWorld=c.Component.InWorld.preUpdate,c.Rope.prototype.preUpdateCore=c.Component.Core.preUpdate,c.Rope.prototype.preUpdate=function(){return this.preUpdatePhysics()&&this.preUpdateLifeSpan()&&this.preUpdateInWorld()?this.preUpdateCore():!1},c.Rope.prototype.update=function(){this._hasUpdateAnimation&&this.updateAnimation.call(this)},c.Rope.prototype.reset=function(a,b){return c.Component.Reset.prototype.reset.call(this,a,b),this},Object.defineProperty(c.Rope.prototype,"updateAnimation",{get:function(){return this._updateAnimation},set:function(a){a&&"function"==typeof a?(this._hasUpdateAnimation=!0,this._updateAnimation=a):(this._hasUpdateAnimation=!1,this._updateAnimation=null)}}),Object.defineProperty(c.Rope.prototype,"segments",{get:function(){for(var a,b,d,e,f,g,h,i,j=[],k=0;k=1)&&(l.touch=!0),(window.navigator.msPointerEnabled||window.navigator.pointerEnabled)&&(l.mspointer=!0),l.cocoonJS||("onwheel"in window||l.ie&&"WheelEvent"in window?l.wheelEvent="wheel":"onmousewheel"in window?l.wheelEvent="mousewheel":l.firefox&&"MouseScrollEvent"in window&&(l.wheelEvent="DOMMouseScroll"))}function d(){for(var a=["requestFullscreen","requestFullScreen","webkitRequestFullscreen","webkitRequestFullScreen","msRequestFullscreen","msRequestFullScreen","mozRequestFullScreen","mozRequestFullscreen"],b=document.createElement("div"),c=0;c=9&&/Mac OS X (\d+)_(\d+)/.test(navigator.userAgent)){var c=parseInt(RegExp.$1,10),d=parseInt(RegExp.$2,10);(10===c&&d>=11||c>10)&&(l.dolby=!0)}}catch(e){}}function h(){l.pixelRatio=window.devicePixelRatio||1,l.iPhone=-1!=navigator.userAgent.toLowerCase().indexOf("iphone"),l.iPhone4=2==l.pixelRatio&&l.iPhone,l.iPad=-1!=navigator.userAgent.toLowerCase().indexOf("ipad"),"undefined"!=typeof Int8Array?l.typedArray=!0:l.typedArray=!1,"undefined"!=typeof ArrayBuffer&&"undefined"!=typeof Uint8Array&&"undefined"!=typeof Uint32Array&&(l.littleEndian=i(),l.LITTLE_ENDIAN=l.littleEndian),l.support32bit="undefined"!=typeof ArrayBuffer&&"undefined"!=typeof Uint8ClampedArray&&"undefined"!=typeof Int32Array&&null!==l.littleEndian&&j(),navigator.vibrate=navigator.vibrate||navigator.webkitVibrate||navigator.mozVibrate||navigator.msVibrate,navigator.vibrate&&(l.vibration=!0)}function i(){var a=new ArrayBuffer(4),b=new Uint8Array(a),c=new Uint32Array(a);return b[0]=161,b[1]=178,b[2]=195,b[3]=212,3569595041==c[0]?!0:2712847316==c[0]?!1:null}function j(){if(void 0===Uint8ClampedArray)return!1;var a=PIXI.CanvasPool.create(this,1,1),b=a.getContext("2d");if(!b)return!1;var c=b.createImageData(1,1);return PIXI.CanvasPool.remove(this),c.data instanceof Uint8ClampedArray}function k(){var a,b=document.createElement("p"),c={webkitTransform:"-webkit-transform",OTransform:"-o-transform",msTransform:"-ms-transform",MozTransform:"-moz-transform",transform:"transform"};document.body.insertBefore(b,null);for(var d in c)void 0!==b.style[d]&&(b.style[d]="translate3d(1px,1px,1px)",a=window.getComputedStyle(b).getPropertyValue(c[d]));document.body.removeChild(b),l.css3D=void 0!==a&&a.length>0&&"none"!==a}var l=this;a(),e(),g(),f(),k(),h(),b(),d(),c()},c.Device.canPlayAudio=function(a){return"mp3"===a&&this.mp3?!0:"ogg"===a&&(this.ogg||this.opus)?!0:"m4a"===a&&this.m4a?!0:"opus"===a&&this.opus?!0:"wav"===a&&this.wav?!0:"webm"===a&&this.webm?!0:!("mp4"!==a||!this.dolby)},c.Device.canPlayVideo=function(a){return"webm"===a&&(this.webmVideo||this.vp9Video)?!0:"mp4"===a&&(this.mp4Video||this.h264Video)?!0:"ogg"!==a&&"ogv"!==a||!this.oggVideo?!("mpeg"!==a||!this.hlsVideo):!0},c.Device.isConsoleOpen=function(){return window.console&&window.console.firebug?!0:window.console&&(console.profile(),console.profileEnd(),console.clear&&console.clear(),console.profiles)?console.profiles.length>0:!1},c.Device.isAndroidStockBrowser=function(){var a=window.navigator.userAgent.match(/Android.*AppleWebKit\/([\d.]+)/);return a&&a[1]<537},c.Canvas={create:function(a,b,c,d,e){b=b||256,c=c||256;var f=e?document.createElement("canvas"):PIXI.CanvasPool.create(a,b,c);return"string"==typeof d&&""!==d&&(f.id=d),f.width=b,f.height=c,f.style.display="block",f},setBackgroundColor:function(a,b){return b=b||"rgb(0,0,0)",a.style.backgroundColor=b,a},setTouchAction:function(a,b){return b=b||"none",a.style.msTouchAction=b,a.style["ms-touch-action"]=b,a.style["touch-action"]=b,a},setUserSelect:function(a,b){return b=b||"none",a.style["-webkit-touch-callout"]=b,a.style["-webkit-user-select"]=b,a.style["-khtml-user-select"]=b,a.style["-moz-user-select"]=b,a.style["-ms-user-select"]=b,a.style["user-select"]=b,a.style["-webkit-tap-highlight-color"]="rgba(0, 0, 0, 0)",a},addToDOM:function(a,b,c){var d;return void 0===c&&(c=!0),b&&("string"==typeof b?d=document.getElementById(b):"object"==typeof b&&1===b.nodeType&&(d=b)),d||(d=document.body),c&&d.style&&(d.style.overflow="hidden"),d.appendChild(a),a},removeFromDOM:function(a){a.parentNode&&a.parentNode.removeChild(a)},setTransform:function(a,b,c,d,e,f,g){return a.setTransform(d,f,g,e,b,c),a},setSmoothingEnabled:function(a,b){var d=c.Canvas.getSmoothingPrefix(a);return d&&(a[d]=b),a},getSmoothingPrefix:function(a){var b=["i","webkitI","msI","mozI","oI"];for(var c in b){var d=b[c]+"mageSmoothingEnabled";if(d in a)return d}return null},getSmoothingEnabled:function(a){var b=c.Canvas.getSmoothingPrefix(a);return b?a[b]:void 0},setImageRenderingCrisp:function(a){for(var b=["optimizeSpeed","crisp-edges","-moz-crisp-edges","-webkit-optimize-contrast","optimize-contrast","pixelated"],c=0;ca},fuzzyGreaterThan:function(a,b,c){return void 0===c&&(c=1e-4),a>b-c},fuzzyCeil:function(a,b){return void 0===b&&(b=1e-4),Math.ceil(a-b)},fuzzyFloor:function(a,b){return void 0===b&&(b=1e-4),Math.floor(a+b)},average:function(){for(var a=0,b=arguments.length,c=0;b>c;c++)a+=+arguments[c];return a/b},shear:function(a){return a%1},snapTo:function(a,b,c){return void 0===c&&(c=0),0===b?a:(a-=c,a=b*Math.round(a/b),c+a)},snapToFloor:function(a,b,c){return void 0===c&&(c=0),0===b?a:(a-=c,a=b*Math.floor(a/b),c+a)},snapToCeil:function(a,b,c){return void 0===c&&(c=0),0===b?a:(a-=c,a=b*Math.ceil(a/b),c+a)},roundTo:function(a,b,c){void 0===b&&(b=0),void 0===c&&(c=10);var d=Math.pow(c,-b);return Math.round(a*d)/d},floorTo:function(a,b,c){void 0===b&&(b=0),void 0===c&&(c=10);var d=Math.pow(c,-b);return Math.floor(a*d)/d},ceilTo:function(a,b,c){void 0===b&&(b=0),void 0===c&&(c=10);var d=Math.pow(c,-b);return Math.ceil(a*d)/d},angleBetween:function(a,b,c,d){return Math.atan2(d-b,c-a)},angleBetweenY:function(a,b,c,d){return Math.atan2(c-a,d-b)},angleBetweenPoints:function(a,b){return Math.atan2(b.y-a.y,b.x-a.x)},angleBetweenPointsY:function(a,b){return Math.atan2(b.x-a.x,b.y-a.y)},reverseAngle:function(a){return this.normalizeAngle(a+Math.PI,!0)},normalizeAngle:function(a){return a%=2*Math.PI,a>=0?a:a+2*Math.PI},maxAdd:function(a,b,c){return Math.min(a+b,c)},minSub:function(a,b,c){return Math.max(a-b,c)},wrap:function(a,b,c){var d=c-b;if(0>=d)return 0;var e=(a-b)%d;return 0>e&&(e+=d),e+b},wrapValue:function(a,b,c){var d;return a=Math.abs(a),b=Math.abs(b),c=Math.abs(c),d=(a+b)%c},isOdd:function(a){return!!(1&a)},isEven:function(a){return!(1&a)},min:function(){if(1===arguments.length&&"object"==typeof arguments[0])var a=arguments[0];else var a=arguments;for(var b=1,c=0,d=a.length;d>b;b++)a[b]b;b++)a[b]>a[c]&&(c=b);return a[c]},minProperty:function(a){if(2===arguments.length&&"object"==typeof arguments[1])var b=arguments[1];else var b=arguments.slice(1);for(var c=1,d=0,e=b.length;e>c;c++)b[c][a]c;c++)b[c][a]>b[d][a]&&(d=c);return b[d][a]},wrapAngle:function(a,b){return b?this.wrap(a,-Math.PI,Math.PI):this.wrap(a,-180,180)},linearInterpolation:function(a,b){var c=a.length-1,d=c*b,e=Math.floor(d);return 0>b?this.linear(a[0],a[1],d):b>1?this.linear(a[c],a[c-1],c-d):this.linear(a[e],a[e+1>c?c:e+1],d-e)},bezierInterpolation:function(a,b){for(var c=0,d=a.length-1,e=0;d>=e;e++)c+=Math.pow(1-b,d-e)*Math.pow(b,e)*a[e]*this.bernstein(d,e);return c},catmullRomInterpolation:function(a,b){var c=a.length-1,d=c*b,e=Math.floor(d);return a[0]===a[c]?(0>b&&(e=Math.floor(d=c*(1+b))),this.catmullRom(a[(e-1+c)%c],a[e],a[(e+1)%c],a[(e+2)%c],d-e)):0>b?a[0]-(this.catmullRom(a[0],a[0],a[1],a[1],-d)-a[0]):b>1?a[c]-(this.catmullRom(a[c],a[c],a[c-1],a[c-1],d-c)-a[c]):this.catmullRom(a[e?e-1:0],a[e],a[e+1>c?c:e+1],a[e+2>c?c:e+2],d-e)},linear:function(a,b,c){return(b-a)*c+a},bernstein:function(a,b){return this.factorial(a)/this.factorial(b)/this.factorial(a-b)},factorial:function(a){if(0===a)return 1;for(var b=a;--a;)b*=a;return b},catmullRom:function(a,b,c,d,e){var f=.5*(c-a),g=.5*(d-b),h=e*e,i=e*h;return(2*b-2*c+f+g)*i+(-3*b+3*c-2*f-g)*h+f*e+b},difference:function(a,b){return Math.abs(a-b)},roundAwayFromZero:function(a){return a>0?Math.ceil(a):Math.floor(a)},sinCosGenerator:function(a,b,c,d){void 0===b&&(b=1),void 0===c&&(c=1),void 0===d&&(d=1);for(var e=b,f=c,g=d*Math.PI/a,h=[],i=[],j=0;a>j;j++)f-=e*g,e+=f*g,h[j]=f,i[j]=e;return{sin:i,cos:h,length:a}},distance:function(a,b,c,d){var e=a-c,f=b-d;return Math.sqrt(e*e+f*f)},distanceSq:function(a,b,c,d){var e=a-c,f=b-d;return e*e+f*f},distancePow:function(a,b,c,d,e){return void 0===e&&(e=2),Math.sqrt(Math.pow(c-a,e)+Math.pow(d-b,e))},clamp:function(a,b,c){return b>a?b:a>c?c:a},clampBottom:function(a,b){return b>a?b:a},within:function(a,b,c){return Math.abs(a-b)<=c},mapLinear:function(a,b,c,d,e){return d+(a-b)*(e-d)/(c-b)},smoothstep:function(a,b,c){return a=Math.max(0,Math.min(1,(a-b)/(c-b))),a*a*(3-2*a)},smootherstep:function(a,b,c){return a=Math.max(0,Math.min(1,(a-b)/(c-b))),a*a*a*(a*(6*a-15)+10)},sign:function(a){return 0>a?-1:a>0?1:0},percent:function(a,b,c){return void 0===c&&(c=0),a>b||c>b?1:c>a||c>a?0:(a-c)/b}};var k=Math.PI/180,l=180/Math.PI;return c.Math.degToRad=function(a){return a*k},c.Math.radToDeg=function(a){return a*l},c.RandomDataGenerator=function(a){void 0===a&&(a=[]),this.c=1,this.s0=0,this.s1=0,this.s2=0,"string"==typeof a?this.state(a):this.sow(a)},c.RandomDataGenerator.prototype={rnd:function(){var a=2091639*this.s0+2.3283064365386963e-10*this.c;return this.c=0|a,this.s0=this.s1,this.s1=this.s2,this.s2=a-this.c,this.s2},sow:function(a){if(this.s0=this.hash(" "), +this.s1=this.hash(this.s0),this.s2=this.hash(this.s1),this.c=1,a)for(var b=0;b>>0,b-=d,b*=d,d=b>>>0,b-=d,d+=4294967296*b;return 2.3283064365386963e-10*(d>>>0)},integer:function(){return 4294967296*this.rnd.apply(this)},frac:function(){return this.rnd.apply(this)+1.1102230246251565e-16*(2097152*this.rnd.apply(this)|0)},real:function(){return this.integer()+this.frac()},integerInRange:function(a,b){return Math.floor(this.realInRange(0,b-a+1)+a)},between:function(a,b){return this.integerInRange(a,b)},realInRange:function(a,b){return this.frac()*(b-a)+a},normal:function(){return 1-2*this.frac()},uuid:function(){var a="",b="";for(b=a="";a++<36;b+=~a%5|3*a&4?(15^a?8^this.frac()*(20^a?16:4):4).toString(16):"-");return b},pick:function(a){return a[this.integerInRange(0,a.length-1)]},sign:function(){return this.pick([-1,1])},weightedPick:function(a){return a[~~(Math.pow(this.frac(),2)*(a.length-1)+.5)]},timestamp:function(a,b){return this.realInRange(a||9466848e5,b||1577862e6)},angle:function(){return this.integerInRange(-180,180)},state:function(a){return"string"==typeof a&&a.match(/^!rnd/)&&(a=a.split(","),this.c=parseFloat(a[1]),this.s0=parseFloat(a[2]),this.s1=parseFloat(a[3]),this.s2=parseFloat(a[4])),["!rnd",this.c,this.s0,this.s1,this.s2].join(",")}},c.RandomDataGenerator.prototype.constructor=c.RandomDataGenerator,c.QuadTree=function(a,b,c,d,e,f,g){this.maxObjects=10,this.maxLevels=4,this.level=0,this.bounds={},this.objects=[],this.nodes=[],this._empty=[],this.reset(a,b,c,d,e,f,g)},c.QuadTree.prototype={reset:function(a,b,c,d,e,f,g){this.maxObjects=e||10,this.maxLevels=f||4,this.level=g||0,this.bounds={x:Math.round(a),y:Math.round(b),width:c,height:d,subWidth:Math.floor(c/2),subHeight:Math.floor(d/2),right:Math.round(a)+Math.floor(c/2),bottom:Math.round(b)+Math.floor(d/2)},this.objects.length=0,this.nodes.length=0},populate:function(a){a.forEach(this.populateHandler,this,!0)},populateHandler:function(a){a.body&&a.exists&&this.insert(a.body)},split:function(){this.nodes[0]=new c.QuadTree(this.bounds.right,this.bounds.y,this.bounds.subWidth,this.bounds.subHeight,this.maxObjects,this.maxLevels,this.level+1),this.nodes[1]=new c.QuadTree(this.bounds.x,this.bounds.y,this.bounds.subWidth,this.bounds.subHeight,this.maxObjects,this.maxLevels,this.level+1),this.nodes[2]=new c.QuadTree(this.bounds.x,this.bounds.bottom,this.bounds.subWidth,this.bounds.subHeight,this.maxObjects,this.maxLevels,this.level+1),this.nodes[3]=new c.QuadTree(this.bounds.right,this.bounds.bottom,this.bounds.subWidth,this.bounds.subHeight,this.maxObjects,this.maxLevels,this.level+1)},insert:function(a){var b,c=0;if(null!=this.nodes[0]&&(b=this.getIndex(a),-1!==b))return void this.nodes[b].insert(a);if(this.objects.push(a),this.objects.length>this.maxObjects&&this.levelthis.bounds.bottom&&(b=2):a.x>this.bounds.right&&(a.ythis.bounds.bottom&&(b=3)),b},retrieve:function(a){if(a instanceof c.Rectangle)var b=this.objects,d=this.getIndex(a);else{if(!a.body)return this._empty;var b=this.objects,d=this.getIndex(a.body)}return this.nodes[0]&&(-1!==d?b=b.concat(this.nodes[d].retrieve(a)):(b=b.concat(this.nodes[0].retrieve(a)),b=b.concat(this.nodes[1].retrieve(a)),b=b.concat(this.nodes[2].retrieve(a)),b=b.concat(this.nodes[3].retrieve(a)))),b},clear:function(){this.objects.length=0;for(var a=this.nodes.length;a--;)this.nodes[a].clear(),this.nodes.splice(a,1);this.nodes.length=0}},c.QuadTree.prototype.constructor=c.QuadTree,c.Net=function(a){this.game=a},c.Net.prototype={getHostName:function(){return window.location&&window.location.hostname?window.location.hostname:null},checkDomainName:function(a){return-1!==window.location.hostname.indexOf(a)},updateQueryString:function(a,b,c,d){void 0===c&&(c=!1),void 0!==d&&""!==d||(d=window.location.href);var e="",f=new RegExp("([?|&])"+a+"=.*?(&|#|$)(.*)","gi");if(f.test(d))e="undefined"!=typeof b&&null!==b?d.replace(f,"$1"+a+"="+b+"$2$3"):d.replace(f,"$1$3").replace(/(&|\?)$/,"");else if("undefined"!=typeof b&&null!==b){var g=-1!==d.indexOf("?")?"&":"?",h=d.split("#");d=h[0]+g+a+"="+b,h[1]&&(d+="#"+h[1]),e=d}else e=d;return c?void(window.location.href=e):e},getQueryString:function(a){void 0===a&&(a="");var b={},c=location.search.substring(1).split("&");for(var d in c){var e=c[d].split("=");if(e.length>1){if(a&&a==this.decodeURI(e[0]))return this.decodeURI(e[1]);b[this.decodeURI(e[0])]=this.decodeURI(e[1])}}return b},decodeURI:function(a){return decodeURIComponent(a.replace(/\+/g," "))}},c.Net.prototype.constructor=c.Net,c.TweenManager=function(a){this.game=a,this.frameBased=!1,this._tweens=[],this._add=[],this.easeMap={Power0:c.Easing.Power0,Power1:c.Easing.Power1,Power2:c.Easing.Power2,Power3:c.Easing.Power3,Power4:c.Easing.Power4,Linear:c.Easing.Linear.None,Quad:c.Easing.Quadratic.Out,Cubic:c.Easing.Cubic.Out,Quart:c.Easing.Quartic.Out,Quint:c.Easing.Quintic.Out,Sine:c.Easing.Sinusoidal.Out,Expo:c.Easing.Exponential.Out,Circ:c.Easing.Circular.Out,Elastic:c.Easing.Elastic.Out,Back:c.Easing.Back.Out,Bounce:c.Easing.Bounce.Out,"Quad.easeIn":c.Easing.Quadratic.In,"Cubic.easeIn":c.Easing.Cubic.In,"Quart.easeIn":c.Easing.Quartic.In,"Quint.easeIn":c.Easing.Quintic.In,"Sine.easeIn":c.Easing.Sinusoidal.In,"Expo.easeIn":c.Easing.Exponential.In,"Circ.easeIn":c.Easing.Circular.In,"Elastic.easeIn":c.Easing.Elastic.In,"Back.easeIn":c.Easing.Back.In,"Bounce.easeIn":c.Easing.Bounce.In,"Quad.easeOut":c.Easing.Quadratic.Out,"Cubic.easeOut":c.Easing.Cubic.Out,"Quart.easeOut":c.Easing.Quartic.Out,"Quint.easeOut":c.Easing.Quintic.Out,"Sine.easeOut":c.Easing.Sinusoidal.Out,"Expo.easeOut":c.Easing.Exponential.Out,"Circ.easeOut":c.Easing.Circular.Out,"Elastic.easeOut":c.Easing.Elastic.Out,"Back.easeOut":c.Easing.Back.Out,"Bounce.easeOut":c.Easing.Bounce.Out,"Quad.easeInOut":c.Easing.Quadratic.InOut,"Cubic.easeInOut":c.Easing.Cubic.InOut,"Quart.easeInOut":c.Easing.Quartic.InOut,"Quint.easeInOut":c.Easing.Quintic.InOut,"Sine.easeInOut":c.Easing.Sinusoidal.InOut,"Expo.easeInOut":c.Easing.Exponential.InOut,"Circ.easeInOut":c.Easing.Circular.InOut,"Elastic.easeInOut":c.Easing.Elastic.InOut,"Back.easeInOut":c.Easing.Back.InOut,"Bounce.easeInOut":c.Easing.Bounce.InOut},this.game.onPause.add(this._pauseAll,this),this.game.onResume.add(this._resumeAll,this)},c.TweenManager.prototype={getAll:function(){return this._tweens},removeAll:function(){for(var a=0;ad;d++)this.removeFrom(a[d]);else if(a.type===c.GROUP&&b)for(var d=0,e=a.children.length;e>d;d++)this.removeFrom(a.children[d]);else{for(d=0,e=this._tweens.length;e>d;d++)a===this._tweens[d].target&&this.remove(this._tweens[d]);for(d=0,e=this._add.length;e>d;d++)a===this._add[d].target&&this.remove(this._add[d])}},add:function(a){a._manager=this,this._add.push(a)},create:function(a){return new c.Tween(a,this.game,this)},remove:function(a){var b=this._tweens.indexOf(a);-1!==b?this._tweens[b].pendingDelete=!0:(b=this._add.indexOf(a),-1!==b&&(this._add[b].pendingDelete=!0))},update:function(){var a=this._add.length,b=this._tweens.length;if(0===b&&0===a)return!1;for(var c=0;b>c;)this._tweens[c].update(this.game.time.time)?c++:(this._tweens.splice(c,1),b--);return a>0&&(this._tweens=this._tweens.concat(this._add),this._add.length=0),!0},isTweening:function(a){return this._tweens.some(function(b){return b.target===a})},_pauseAll:function(){for(var a=this._tweens.length-1;a>=0;a--)this._tweens[a]._pause()},_resumeAll:function(){for(var a=this._tweens.length-1;a>=0;a--)this._tweens[a]._resume()},pauseAll:function(){for(var a=this._tweens.length-1;a>=0;a--)this._tweens[a].pause()},resumeAll:function(){for(var a=this._tweens.length-1;a>=0;a--)this._tweens[a].resume(!0)}},c.TweenManager.prototype.constructor=c.TweenManager,c.Tween=function(a,b,d){this.game=b,this.target=a,this.manager=d,this.timeline=[],this.reverse=!1,this.timeScale=1,this.repeatCounter=0,this.pendingDelete=!1,this.onStart=new c.Signal,this.onLoop=new c.Signal,this.onRepeat=new c.Signal,this.onChildComplete=new c.Signal,this.onComplete=new c.Signal,this.isRunning=!1,this.current=0,this.properties={},this.chainedTween=null,this.isPaused=!1,this.frameBased=d.frameBased,this._onUpdateCallback=null,this._onUpdateCallbackContext=null,this._pausedTime=0,this._codePaused=!1,this._hasStarted=!1},c.Tween.prototype={to:function(a,b,d,e,f,g,h){return(void 0===b||0>=b)&&(b=1e3),void 0!==d&&null!==d||(d=c.Easing.Default),void 0===e&&(e=!1),void 0===f&&(f=0),void 0===g&&(g=0),void 0===h&&(h=!1),"string"==typeof d&&this.manager.easeMap[d]&&(d=this.manager.easeMap[d]),this.isRunning?(console.warn("Phaser.Tween.to cannot be called after Tween.start"),this):(this.timeline.push(new c.TweenData(this).to(a,b,d,f,g,h)),e&&this.start(),this)},from:function(a,b,d,e,f,g,h){return void 0===b&&(b=1e3),void 0!==d&&null!==d||(d=c.Easing.Default),void 0===e&&(e=!1),void 0===f&&(f=0),void 0===g&&(g=0),void 0===h&&(h=!1),"string"==typeof d&&this.manager.easeMap[d]&&(d=this.manager.easeMap[d]),this.isRunning?(console.warn("Phaser.Tween.from cannot be called after Tween.start"),this):(this.timeline.push(new c.TweenData(this).from(a,b,d,f,g,h)),e&&this.start(),this)},start:function(a){if(void 0===a&&(a=0),null===this.game||null===this.target||0===this.timeline.length||this.isRunning)return this;for(var b=0;ba||a>this.timeline.length-1)&&(a=0),this.current=a,this.timeline[this.current].start(),this},stop:function(a){return void 0===a&&(a=!1),this.isRunning=!1,this._onUpdateCallback=null,this._onUpdateCallbackContext=null,a&&(this.onComplete.dispatch(this.target,this),this._hasStarted=!1,this.chainedTween&&this.chainedTween.start()),this.manager.remove(this),this},updateTweenData:function(a,b,c){if(0===this.timeline.length)return this;if(void 0===c&&(c=0),-1===c)for(var d=0;d0?arguments[a-1].chainedTween=arguments[a]:this.chainedTween=arguments[a];return this},loop:function(a){return void 0===a&&(a=!0),this.repeatCounter=a?-1:0,this},onUpdateCallback:function(a,b){return this._onUpdateCallback=a,this._onUpdateCallbackContext=b,this},pause:function(){this.isPaused=!0,this._codePaused=!0,this._pausedTime=this.game.time.time},_pause:function(){this._codePaused||(this.isPaused=!0,this._pausedTime=this.game.time.time)},resume:function(){if(this.isPaused){this.isPaused=!1,this._codePaused=!1;for(var a=0;a0?(this.repeatCounter--,this.timeline[this.current].start(),this.onRepeat.dispatch(this.target,this),!0):(this.isRunning=!1,this.onComplete.dispatch(this.target,this),this._hasStarted=!1,this.chainedTween&&this.chainedTween.start(),!1):(this.onChildComplete.dispatch(this.target,this),this.timeline[this.current].start(),!0)}},generateData:function(a,b){if(null===this.game||null===this.target)return null;void 0===a&&(a=60),void 0===b&&(b=[]);for(var c=0;c0?this.isRunning=!1:this.isRunning=!0,this.isFrom)for(var a in this.vStartCache)this.vStart[a]=this.vEndCache[a],this.vEnd[a]=this.vStartCache[a],this.parent.target[a]=this.vStart[a];return this.value=0,this.yoyoCounter=0,this.repeatCounter=this.repeatTotal,this},loadValues:function(){for(var a in this.parent.properties){if(this.vStart[a]=this.parent.properties[a],Array.isArray(this.vEnd[a])){if(0===this.vEnd[a].length)continue;0===this.percent&&(this.vEnd[a]=[this.vStart[a]].concat(this.vEnd[a]))}"undefined"!=typeof this.vEnd[a]?("string"==typeof this.vEnd[a]&&(this.vEnd[a]=this.vStart[a]+parseFloat(this.vEnd[a],10)),this.parent.properties[a]=this.vEnd[a]):this.vEnd[a]=this.vStart[a],this.vStartCache[a]=this.vStart[a],this.vEndCache[a]=this.vEnd[a]}return this},update:function(a){if(this.isRunning){if(a=this.startTime))return c.TweenData.PENDING;this.isRunning=!0}var b=this.parent.frameBased?this.game.time.physicsElapsedMS:this.game.time.elapsedMS;this.parent.reverse?(this.dt-=b*this.parent.timeScale,this.dt=Math.max(this.dt,0)):(this.dt+=b*this.parent.timeScale,this.dt=Math.min(this.dt,this.duration)),this.percent=this.dt/this.duration,this.value=this.easingFunction(this.percent);for(var d in this.vEnd){var e=this.vStart[d],f=this.vEnd[d];Array.isArray(f)?this.parent.target[d]=this.interpolationFunction.call(this.interpolationContext,f,this.value):this.parent.target[d]=e+(f-e)*this.value}return!this.parent.reverse&&1===this.percent||this.parent.reverse&&0===this.percent?this.repeat():c.TweenData.RUNNING},generateData:function(a){this.parent.reverse?this.dt=this.duration:this.dt=0;var b=[],c=!1,d=1/a*1e3;do{this.parent.reverse?(this.dt-=d,this.dt=Math.max(this.dt,0)):(this.dt+=d,this.dt=Math.min(this.dt,this.duration)),this.percent=this.dt/this.duration,this.value=this.easingFunction(this.percent);var e={};for(var f in this.vEnd){var g=this.vStart[f],h=this.vEnd[f];Array.isArray(h)?e[f]=this.interpolationFunction(h,this.value):e[f]=g+(h-g)*this.value}b.push(e),(!this.parent.reverse&&1===this.percent||this.parent.reverse&&0===this.percent)&&(c=!0)}while(!c);if(this.yoyo){var i=b.slice();i.reverse(),b=b.concat(i)}return b},repeat:function(){if(this.yoyo){if(this.inReverse&&0===this.repeatCounter){for(var a in this.vStartCache)this.vStart[a]=this.vStartCache[a],this.vEnd[a]=this.vEndCache[a];return this.inReverse=!1,c.TweenData.COMPLETE}this.inReverse=!this.inReverse}else if(0===this.repeatCounter)return c.TweenData.COMPLETE;if(this.inReverse)for(var a in this.vStartCache)this.vStart[a]=this.vEndCache[a],this.vEnd[a]=this.vStartCache[a];else{for(var a in this.vStartCache)this.vStart[a]=this.vStartCache[a],this.vEnd[a]=this.vEndCache[a];this.repeatCounter>0&&this.repeatCounter--}return this.startTime=this.game.time.time,this.yoyo&&this.inReverse?this.startTime+=this.yoyoDelay:this.inReverse||(this.startTime+=this.repeatDelay),this.parent.reverse?this.dt=this.duration:this.dt=0,c.TweenData.LOOPED}},c.TweenData.prototype.constructor=c.TweenData,c.Easing={Linear:{None:function(a){return a}},Quadratic:{In:function(a){return a*a},Out:function(a){return a*(2-a)},InOut:function(a){return(a*=2)<1?.5*a*a:-.5*(--a*(a-2)-1)}},Cubic:{In:function(a){return a*a*a},Out:function(a){return--a*a*a+1},InOut:function(a){return(a*=2)<1?.5*a*a*a:.5*((a-=2)*a*a+2)}},Quartic:{In:function(a){return a*a*a*a},Out:function(a){return 1- --a*a*a*a},InOut:function(a){return(a*=2)<1?.5*a*a*a*a:-.5*((a-=2)*a*a*a-2)}},Quintic:{In:function(a){return a*a*a*a*a},Out:function(a){return--a*a*a*a*a+1},InOut:function(a){return(a*=2)<1?.5*a*a*a*a*a:.5*((a-=2)*a*a*a*a+2)}},Sinusoidal:{In:function(a){return 0===a?0:1===a?1:1-Math.cos(a*Math.PI/2)},Out:function(a){return 0===a?0:1===a?1:Math.sin(a*Math.PI/2)},InOut:function(a){return 0===a?0:1===a?1:.5*(1-Math.cos(Math.PI*a))}},Exponential:{In:function(a){return 0===a?0:Math.pow(1024,a-1)},Out:function(a){return 1===a?1:1-Math.pow(2,-10*a)},InOut:function(a){return 0===a?0:1===a?1:(a*=2)<1?.5*Math.pow(1024,a-1):.5*(-Math.pow(2,-10*(a-1))+2)}},Circular:{In:function(a){return 1-Math.sqrt(1-a*a)},Out:function(a){return Math.sqrt(1- --a*a)},InOut:function(a){return(a*=2)<1?-.5*(Math.sqrt(1-a*a)-1):.5*(Math.sqrt(1-(a-=2)*a)+1)}},Elastic:{In:function(a){var b,c=.1,d=.4;return 0===a?0:1===a?1:(!c||1>c?(c=1,b=d/4):b=d*Math.asin(1/c)/(2*Math.PI),-(c*Math.pow(2,10*(a-=1))*Math.sin((a-b)*(2*Math.PI)/d)))},Out:function(a){var b,c=.1,d=.4;return 0===a?0:1===a?1:(!c||1>c?(c=1,b=d/4):b=d*Math.asin(1/c)/(2*Math.PI),c*Math.pow(2,-10*a)*Math.sin((a-b)*(2*Math.PI)/d)+1)},InOut:function(a){var b,c=.1,d=.4;return 0===a?0:1===a?1:(!c||1>c?(c=1,b=d/4):b=d*Math.asin(1/c)/(2*Math.PI),(a*=2)<1?-.5*(c*Math.pow(2,10*(a-=1))*Math.sin((a-b)*(2*Math.PI)/d)):c*Math.pow(2,-10*(a-=1))*Math.sin((a-b)*(2*Math.PI)/d)*.5+1)}},Back:{In:function(a){var b=1.70158;return a*a*((b+1)*a-b)},Out:function(a){var b=1.70158;return--a*a*((b+1)*a+b)+1},InOut:function(a){var b=2.5949095;return(a*=2)<1?.5*(a*a*((b+1)*a-b)):.5*((a-=2)*a*((b+1)*a+b)+2)}},Bounce:{In:function(a){return 1-c.Easing.Bounce.Out(1-a)},Out:function(a){return 1/2.75>a?7.5625*a*a:2/2.75>a?7.5625*(a-=1.5/2.75)*a+.75:2.5/2.75>a?7.5625*(a-=2.25/2.75)*a+.9375:7.5625*(a-=2.625/2.75)*a+.984375},InOut:function(a){return.5>a?.5*c.Easing.Bounce.In(2*a):.5*c.Easing.Bounce.Out(2*a-1)+.5}}},c.Easing.Default=c.Easing.Linear.None,c.Easing.Power0=c.Easing.Linear.None,c.Easing.Power1=c.Easing.Quadratic.Out,c.Easing.Power2=c.Easing.Cubic.Out,c.Easing.Power3=c.Easing.Quartic.Out,c.Easing.Power4=c.Easing.Quintic.Out,c.Time=function(a){this.game=a,this.time=0,this.prevTime=0,this.now=0,this.elapsed=0,this.elapsedMS=0,this.physicsElapsed=1/60,this.physicsElapsedMS=1/60*1e3,this.desiredFpsMult=1/60,this._desiredFps=60,this.suggestedFps=this.desiredFps,this.slowMotion=1,this.advancedTiming=!1,this.frames=0,this.fps=0,this.fpsMin=1e3,this.fpsMax=0,this.msMin=1e3,this.msMax=0,this.pauseDuration=0,this.timeToCall=0,this.timeExpected=0,this.events=new c.Timer(this.game,!1),this._frameCount=0,this._elapsedAccumulator=0,this._started=0,this._timeLastSecond=0,this._pauseStarted=0,this._justResumed=!1,this._timers=[]},c.Time.prototype={boot:function(){this._started=Date.now(),this.time=Date.now(),this.events.start(),this.timeExpected=this.time},add:function(a){return this._timers.push(a),a},create:function(a){void 0===a&&(a=!0);var b=new c.Timer(this.game,a);return this._timers.push(b),b},removeAll:function(){for(var a=0;aa;)this._timers[a].update(this.time)?a++:(this._timers.splice(a,1),b--)},updateAdvancedTiming:function(){this._frameCount++,this._elapsedAccumulator+=this.elapsed,this._frameCount>=2*this._desiredFps&&(this.suggestedFps=5*Math.floor(200/(this._elapsedAccumulator/this._frameCount)),this._frameCount=0,this._elapsedAccumulator=0),this.msMin=Math.min(this.msMin,this.elapsed),this.msMax=Math.max(this.msMax,this.elapsed),this.frames++,this.now>this._timeLastSecond+1e3&&(this.fps=Math.round(1e3*this.frames/(this.now-this._timeLastSecond)),this.fpsMin=Math.min(this.fpsMin,this.fps),this.fpsMax=Math.max(this.fpsMax,this.fps),this._timeLastSecond=this.now,this.frames=0)},gamePaused:function(){this._pauseStarted=Date.now(),this.events.pause();for(var a=this._timers.length;a--;)this._timers[a]._pause()},gameResumed:function(){this.time=Date.now(),this.pauseDuration=this.time-this._pauseStarted,this.events.resume();for(var a=this._timers.length;a--;)this._timers[a]._resume()},totalElapsedSeconds:function(){return.001*(this.time-this._started)},elapsedSince:function(a){return this.time-a},elapsedSecondsSince:function(a){return.001*(this.time-a)},reset:function(){this._started=this.time,this.removeAll()}},Object.defineProperty(c.Time.prototype,"desiredFps",{get:function(){return this._desiredFps},set:function(a){this._desiredFps=a,this.physicsElapsed=1/a,this.physicsElapsedMS=1e3*this.physicsElapsed,this.desiredFpsMult=1/a}}),c.Time.prototype.constructor=c.Time,c.Timer=function(a,b){void 0===b&&(b=!0),this.game=a,this.running=!1,this.autoDestroy=b,this.expired=!1,this.elapsed=0,this.events=[],this.onComplete=new c.Signal,this.nextTick=0,this.timeCap=1e3,this.paused=!1,this._codePaused=!1,this._started=0,this._pauseStarted=0,this._pauseTotal=0,this._now=Date.now(),this._len=0,this._marked=0,this._i=0,this._diff=0,this._newTick=0},c.Timer.MINUTE=6e4,c.Timer.SECOND=1e3,c.Timer.HALF=500,c.Timer.QUARTER=250,c.Timer.prototype={create:function(a,b,d,e,f,g){a=Math.round(a);var h=a;h+=0===this._now?this.game.time.time:this._now;var i=new c.TimerEvent(this,a,h,d,b,e,f,g);return this.events.push(i),this.order(),this.expired=!1,i},add:function(a,b,c){return this.create(a,!1,0,b,c,Array.prototype.slice.call(arguments,3))},repeat:function(a,b,c,d){return this.create(a,!1,b,c,d,Array.prototype.slice.call(arguments,4))},loop:function(a,b,c){return this.create(a,!0,0,b,c,Array.prototype.slice.call(arguments,3))},start:function(a){if(!this.running){this._started=this.game.time.time+(a||0),this.running=!0;for(var b=0;b0&&(this.events.sort(this.sortHandler),this.nextTick=this.events[0].tick)},sortHandler:function(a,b){return a.tickb.tick?1:0},clearPendingEvents:function(){for(this._i=this.events.length;this._i--;)this.events[this._i].pendingDelete&&this.events.splice(this._i,1);this._len=this.events.length,this._i=0},update:function(a){if(this.paused)return!0;if(this.elapsed=a-this._now,this._now=a,this.elapsed>this.timeCap&&this.adjustEvents(a-this.elapsed),this._marked=0,this.clearPendingEvents(),this.running&&this._now>=this.nextTick&&this._len>0){for(;this._i=this.events[this._i].tick&&!this.events[this._i].pendingDelete;)this._newTick=this._now+this.events[this._i].delay-(this._now-this.events[this._i].tick),this._newTick<0&&(this._newTick=this._now+this.events[this._i].delay),this.events[this._i].loop===!0?(this.events[this._i].tick=this._newTick,this.events[this._i].callback.apply(this.events[this._i].callbackContext,this.events[this._i].args)):this.events[this._i].repeatCount>0?(this.events[this._i].repeatCount--,this.events[this._i].tick=this._newTick,this.events[this._i].callback.apply(this.events[this._i].callbackContext,this.events[this._i].args)):(this._marked++,this.events[this._i].pendingDelete=!0,this.events[this._i].callback.apply(this.events[this._i].callbackContext,this.events[this._i].args)),this._i++;this.events.length>this._marked?this.order():(this.expired=!0,this.onComplete.dispatch(this))}return!this.expired||!this.autoDestroy},pause:function(){this.running&&(this._codePaused=!0,this.paused||(this._pauseStarted=this.game.time.time,this.paused=!0))},_pause:function(){!this.paused&&this.running&&(this._pauseStarted=this.game.time.time,this.paused=!0)},adjustEvents:function(a){for(var b=0;bc&&(c=0),this.events[b].tick=this._now+c}var d=this.nextTick-a;0>d?this.nextTick=this._now:this.nextTick=this._now+d},resume:function(){if(this.paused){var a=this.game.time.time;this._pauseTotal+=a-this._now,this._now=a,this.adjustEvents(this._pauseStarted),this.paused=!1,this._codePaused=!1}},_resume:function(){this._codePaused||this.resume()},removeAll:function(){this.onComplete.removeAll(),this.events.length=0,this._len=0,this._i=0},destroy:function(){this.onComplete.removeAll(),this.running=!1,this.events=[],this._len=0,this._i=0}},Object.defineProperty(c.Timer.prototype,"next",{get:function(){return this.nextTick}}),Object.defineProperty(c.Timer.prototype,"duration",{get:function(){return this.running&&this.nextTick>this._now?this.nextTick-this._now:0}}),Object.defineProperty(c.Timer.prototype,"length",{get:function(){return this.events.length}}),Object.defineProperty(c.Timer.prototype,"ms",{get:function(){return this.running?this._now-this._started-this._pauseTotal:0}}),Object.defineProperty(c.Timer.prototype,"seconds",{get:function(){return this.running?.001*this.ms:0}}),c.Timer.prototype.constructor=c.Timer,c.TimerEvent=function(a,b,c,d,e,f,g,h){this.timer=a,this.delay=b,this.tick=c,this.repeatCount=d-1,this.loop=e,this.callback=f,this.callbackContext=g,this.args=h,this.pendingDelete=!1},c.TimerEvent.prototype.constructor=c.TimerEvent,c.AnimationManager=function(a){this.sprite=a,this.game=a.game,this.currentFrame=null,this.currentAnim=null,this.updateIfVisible=!0,this.isLoaded=!1,this._frameData=null,this._anims={},this._outputFrames=[]},c.AnimationManager.prototype={loadFrameData:function(a,b){if(void 0===a)return!1;if(this.isLoaded)for(var c in this._anims)this._anims[c].updateFrameData(a);return this._frameData=a,void 0===b||null===b?this.frame=0:"string"==typeof b?this.frameName=b:this.frame=b,this.isLoaded=!0,!0},copyFrameData:function(a,b){if(this._frameData=a.clone(),this.isLoaded)for(var c in this._anims)this._anims[c].updateFrameData(this._frameData);return void 0===b||null===b?this.frame=0:"string"==typeof b?this.frameName=b:this.frame=b,this.isLoaded=!0,!0},add:function(a,b,d,e,f){return b=b||[],d=d||60,void 0===e&&(e=!1),void 0===f&&(f=!(!b||"number"!=typeof b[0])),this._outputFrames=[],this._frameData.getFrameIndexes(b,f,this._outputFrames),this._anims[a]=new c.Animation(this.game,this.sprite,a,this._frameData,this._outputFrames,d,e),this.currentAnim=this._anims[a],this.sprite.tilingTexture&&(this.sprite.refreshTexture=!0),this._anims[a]},validateFrames:function(a,b){void 0===b&&(b=!0);for(var c=0;cthis._frameData.total)return!1}else if(this._frameData.checkFrameName(a[c])===!1)return!1;return!0},play:function(a,b,c,d){return this._anims[a]?this.currentAnim===this._anims[a]?this.currentAnim.isPlaying===!1?(this.currentAnim.paused=!1,this.currentAnim.play(b,c,d)):this.currentAnim:(this.currentAnim&&this.currentAnim.isPlaying&&this.currentAnim.stop(),this.currentAnim=this._anims[a],this.currentAnim.paused=!1,this.currentFrame=this.currentAnim.currentFrame,this.currentAnim.play(b,c,d)):void 0},stop:function(a,b){void 0===b&&(b=!1),!this.currentAnim||"string"==typeof a&&a!==this.currentAnim.name||this.currentAnim.stop(b)},update:function(){return this.updateIfVisible&&!this.sprite.visible?!1:this.currentAnim&&this.currentAnim.update()?(this.currentFrame=this.currentAnim.currentFrame,!0):!1},next:function(a){this.currentAnim&&(this.currentAnim.next(a),this.currentFrame=this.currentAnim.currentFrame)},previous:function(a){this.currentAnim&&(this.currentAnim.previous(a),this.currentFrame=this.currentAnim.currentFrame)},getAnimation:function(a){return"string"==typeof a&&this._anims[a]?this._anims[a]:null},refreshFrame:function(){},destroy:function(){var a=null;for(var a in this._anims)this._anims.hasOwnProperty(a)&&this._anims[a].destroy();this._anims={},this._outputFrames=[],this._frameData=null,this.currentAnim=null,this.currentFrame=null,this.sprite=null,this.game=null}},c.AnimationManager.prototype.constructor=c.AnimationManager,Object.defineProperty(c.AnimationManager.prototype,"frameData",{get:function(){return this._frameData}}),Object.defineProperty(c.AnimationManager.prototype,"frameTotal",{get:function(){return this._frameData.total}}),Object.defineProperty(c.AnimationManager.prototype,"paused",{get:function(){return this.currentAnim.isPaused},set:function(a){this.currentAnim.paused=a}}),Object.defineProperty(c.AnimationManager.prototype,"name",{get:function(){return this.currentAnim?this.currentAnim.name:void 0}}),Object.defineProperty(c.AnimationManager.prototype,"frame",{get:function(){return this.currentFrame?this.currentFrame.index:void 0; +},set:function(a){"number"==typeof a&&this._frameData&&null!==this._frameData.getFrame(a)&&(this.currentFrame=this._frameData.getFrame(a),this.currentFrame&&this.sprite.setFrame(this.currentFrame))}}),Object.defineProperty(c.AnimationManager.prototype,"frameName",{get:function(){return this.currentFrame?this.currentFrame.name:void 0},set:function(a){"string"==typeof a&&this._frameData&&null!==this._frameData.getFrameByName(a)?(this.currentFrame=this._frameData.getFrameByName(a),this.currentFrame&&(this._frameIndex=this.currentFrame.index,this.sprite.setFrame(this.currentFrame))):console.warn("Cannot set frameName: "+a)}}),c.Animation=function(a,b,d,e,f,g,h){void 0===h&&(h=!1),this.game=a,this._parent=b,this._frameData=e,this.name=d,this._frames=[],this._frames=this._frames.concat(f),this.delay=1e3/g,this.loop=h,this.loopCount=0,this.killOnComplete=!1,this.isFinished=!1,this.isPlaying=!1,this.isPaused=!1,this._pauseStartTime=0,this._frameIndex=0,this._frameDiff=0,this._frameSkip=1,this.currentFrame=this._frameData.getFrame(this._frames[this._frameIndex]),this.onStart=new c.Signal,this.onUpdate=null,this.onComplete=new c.Signal,this.onLoop=new c.Signal,this.isReversed=!1,this.game.onPause.add(this.onPause,this),this.game.onResume.add(this.onResume,this)},c.Animation.prototype={play:function(a,b,c){return"number"==typeof a&&(this.delay=1e3/a),"boolean"==typeof b&&(this.loop=b),"undefined"!=typeof c&&(this.killOnComplete=c),this.isPlaying=!0,this.isFinished=!1,this.paused=!1,this.loopCount=0,this._timeLastFrame=this.game.time.time,this._timeNextFrame=this.game.time.time+this.delay,this._frameIndex=this.isReversed?this._frames.length-1:0,this.updateCurrentFrame(!1,!0),this._parent.events.onAnimationStart$dispatch(this._parent,this),this.onStart.dispatch(this._parent,this),this._parent.animations.currentAnim=this,this._parent.animations.currentFrame=this.currentFrame,this},restart:function(){this.isPlaying=!0,this.isFinished=!1,this.paused=!1,this.loopCount=0,this._timeLastFrame=this.game.time.time,this._timeNextFrame=this.game.time.time+this.delay,this._frameIndex=0,this.currentFrame=this._frameData.getFrame(this._frames[this._frameIndex]),this._parent.setFrame(this.currentFrame),this._parent.animations.currentAnim=this,this._parent.animations.currentFrame=this.currentFrame,this.onStart.dispatch(this._parent,this)},reverse:function(){return this.reversed=!this.reversed,this},reverseOnce:function(){return this.onComplete.addOnce(this.reverse.bind(this)),this.reverse()},setFrame:function(a,b){var c;if(void 0===b&&(b=!1),"string"==typeof a)for(var d=0;d=this._timeNextFrame?(this._frameSkip=1,this._frameDiff=this.game.time.time-this._timeNextFrame,this._timeLastFrame=this.game.time.time,this._frameDiff>this.delay&&(this._frameSkip=Math.floor(this._frameDiff/this.delay),this._frameDiff-=this._frameSkip*this.delay),this._timeNextFrame=this.game.time.time+(this.delay-this._frameDiff),this.isReversed?this._frameIndex-=this._frameSkip:this._frameIndex+=this._frameSkip,!this.isReversed&&this._frameIndex>=this._frames.length||this.isReversed&&this._frameIndex<=-1?this.loop?(this._frameIndex=Math.abs(this._frameIndex)%this._frames.length,this.isReversed&&(this._frameIndex=this._frames.length-1-this._frameIndex),this.currentFrame=this._frameData.getFrame(this._frames[this._frameIndex]),this.currentFrame&&this._parent.setFrame(this.currentFrame),this.loopCount++,this._parent.events.onAnimationLoop$dispatch(this._parent,this),this.onLoop.dispatch(this._parent,this),this.onUpdate?(this.onUpdate.dispatch(this,this.currentFrame),!!this._frameData):!0):(this.complete(),!1):this.updateCurrentFrame(!0)):!1},updateCurrentFrame:function(a,b){if(void 0===b&&(b=!1),!this._frameData)return!1;var c=this.currentFrame.index;return this.currentFrame=this._frameData.getFrame(this._frames[this._frameIndex]),this.currentFrame&&(b||!b&&c!==this.currentFrame.index)&&this._parent.setFrame(this.currentFrame),this.onUpdate&&a?(this.onUpdate.dispatch(this,this.currentFrame),!!this._frameData):!0},next:function(a){void 0===a&&(a=1);var b=this._frameIndex+a;b>=this._frames.length&&(this.loop?b%=this._frames.length:b=this._frames.length-1),b!==this._frameIndex&&(this._frameIndex=b,this.updateCurrentFrame(!0))},previous:function(a){void 0===a&&(a=1);var b=this._frameIndex-a;0>b&&(this.loop?b=this._frames.length+b:b++),b!==this._frameIndex&&(this._frameIndex=b,this.updateCurrentFrame(!0))},updateFrameData:function(a){this._frameData=a,this.currentFrame=this._frameData?this._frameData.getFrame(this._frames[this._frameIndex%this._frames.length]):null},destroy:function(){this._frameData&&(this.game.onPause.remove(this.onPause,this),this.game.onResume.remove(this.onResume,this),this.game=null,this._parent=null,this._frames=null,this._frameData=null,this.currentFrame=null,this.isPlaying=!1,this.onStart.dispose(),this.onLoop.dispose(),this.onComplete.dispose(),this.onUpdate&&this.onUpdate.dispose())},complete:function(){this._frameIndex=this._frames.length-1,this.currentFrame=this._frameData.getFrame(this._frames[this._frameIndex]),this.isPlaying=!1,this.isFinished=!0,this.paused=!1,this._parent.events.onAnimationComplete$dispatch(this._parent,this),this.onComplete.dispatch(this._parent,this),this.killOnComplete&&this._parent.kill()}},c.Animation.prototype.constructor=c.Animation,Object.defineProperty(c.Animation.prototype,"paused",{get:function(){return this.isPaused},set:function(a){this.isPaused=a,a?this._pauseStartTime=this.game.time.time:this.isPlaying&&(this._timeNextFrame=this.game.time.time+this.delay)}}),Object.defineProperty(c.Animation.prototype,"reversed",{get:function(){return this.isReversed},set:function(a){this.isReversed=a}}),Object.defineProperty(c.Animation.prototype,"frameTotal",{get:function(){return this._frames.length}}),Object.defineProperty(c.Animation.prototype,"frame",{get:function(){return null!==this.currentFrame?this.currentFrame.index:this._frameIndex},set:function(a){this.currentFrame=this._frameData.getFrame(this._frames[a]),null!==this.currentFrame&&(this._frameIndex=a,this._parent.setFrame(this.currentFrame),this.onUpdate&&this.onUpdate.dispatch(this,this.currentFrame))}}),Object.defineProperty(c.Animation.prototype,"speed",{get:function(){return Math.round(1e3/this.delay)},set:function(a){a>=1&&(this.delay=1e3/a)}}),Object.defineProperty(c.Animation.prototype,"enableUpdate",{get:function(){return null!==this.onUpdate},set:function(a){a&&null===this.onUpdate?this.onUpdate=new c.Signal:a||null===this.onUpdate||(this.onUpdate.dispose(),this.onUpdate=null)}}),c.Animation.generateFrameNames=function(a,b,d,e,f){void 0===e&&(e="");var g=[],h="";if(d>b)for(var i=b;d>=i;i++)h="number"==typeof f?c.Utils.pad(i.toString(),f,"0",1):i.toString(),h=a+h+e,g.push(h);else for(var i=b;i>=d;i--)h="number"==typeof f?c.Utils.pad(i.toString(),f,"0",1):i.toString(),h=a+h+e,g.push(h);return g},c.Frame=function(a,b,d,e,f,g){this.index=a,this.x=b,this.y=d,this.width=e,this.height=f,this.name=g,this.centerX=Math.floor(e/2),this.centerY=Math.floor(f/2),this.distance=c.Math.distance(0,0,e,f),this.rotated=!1,this.rotationDirection="cw",this.trimmed=!1,this.sourceSizeW=e,this.sourceSizeH=f,this.spriteSourceSizeX=0,this.spriteSourceSizeY=0,this.spriteSourceSizeW=0,this.spriteSourceSizeH=0,this.right=this.x+this.width,this.bottom=this.y+this.height},c.Frame.prototype={resize:function(a,b){this.width=a,this.height=b,this.centerX=Math.floor(a/2),this.centerY=Math.floor(b/2),this.distance=c.Math.distance(0,0,a,b),this.sourceSizeW=a,this.sourceSizeH=b,this.right=this.x+a,this.bottom=this.y+b},setTrim:function(a,b,c,d,e,f,g){this.trimmed=a,a&&(this.sourceSizeW=b,this.sourceSizeH=c,this.centerX=Math.floor(b/2),this.centerY=Math.floor(c/2),this.spriteSourceSizeX=d,this.spriteSourceSizeY=e,this.spriteSourceSizeW=f,this.spriteSourceSizeH=g)},clone:function(){var a=new c.Frame(this.index,this.x,this.y,this.width,this.height,this.name);for(var b in this)this.hasOwnProperty(b)&&(a[b]=this[b]);return a},getRect:function(a){return void 0===a?a=new c.Rectangle(this.x,this.y,this.width,this.height):a.setTo(this.x,this.y,this.width,this.height),a}},c.Frame.prototype.constructor=c.Frame,c.FrameData=function(){this._frames=[],this._frameNames=[]},c.FrameData.prototype={addFrame:function(a){return a.index=this._frames.length,this._frames.push(a),""!==a.name&&(this._frameNames[a.name]=a.index),a},getFrame:function(a){return a>=this._frames.length&&(a=0),this._frames[a]},getFrameByName:function(a){return"number"==typeof this._frameNames[a]?this._frames[this._frameNames[a]]:null},checkFrameName:function(a){return null!=this._frameNames[a]},clone:function(){for(var a=new c.FrameData,b=0;b=d;d++)c.push(this._frames[d]);return c},getFrames:function(a,b,c){if(void 0===b&&(b=!0),void 0===c&&(c=[]),void 0===a||0===a.length)for(var d=0;d=d&&(d=Math.floor(-j/Math.min(-1,d))),0>=e&&(e=Math.floor(-k/Math.min(-1,e)));var l=Math.floor((j-g)/(d+h)),m=Math.floor((k-g)/(e+h)),n=l*m;if(-1!==f&&(n=f),0===j||0===k||d>j||e>k||0===n)return console.warn("Phaser.AnimationParser.spriteSheet: '"+b+"'s width/height zero or width/height < given frameWidth/frameHeight"),null;for(var o=new c.FrameData,p=g,q=g,r=0;n>r;r++)o.addFrame(new c.Frame(r,p,q,d,e,"")),p+=d+h,p+d>j&&(p=g,q+=e+h);return o},JSONData:function(a,b){if(!b.frames)return console.warn("Phaser.AnimationParser.JSONData: Invalid Texture Atlas JSON given, missing 'frames' array"),void console.log(b);for(var d,e=new c.FrameData,f=b.frames,g=0;g tag");for(var d,e,f,g,h,i,j,k,l,m,n,o=new c.FrameData,p=b.getElementsByTagName("SubTexture"),q=0;q-1},getAssetIndex:function(a,b){for(var c=-1,d=0;d-1?{index:c,file:this._fileList[c]}:!1},reset:function(a,b){void 0===b&&(b=!1),this.resetLocked||(a&&(this.preloadSprite=null),this.isLoading=!1,this._processingHead=0,this._fileList.length=0,this._flightQueue.length=0,this._fileLoadStarted=!1,this._totalFileCount=0,this._totalPackCount=0,this._loadedPackCount=0,this._loadedFileCount=0,b&&(this.onLoadStart.removeAll(),this.onLoadComplete.removeAll(),this.onPackComplete.removeAll(),this.onFileStart.removeAll(),this.onFileComplete.removeAll(),this.onFileError.removeAll()))},addToFileList:function(a,b,c,d,e,f){if(void 0===e&&(e=!1),void 0===b||""===b)return console.warn("Phaser.Loader: Invalid or no key given of type "+a),this;if(void 0===c||null===c){if(!f)return console.warn("Phaser.Loader: No URL given for file type: "+a+" key: "+b),this;c=b+f}var g={type:a,key:b,path:this.path,url:c,syncPoint:this._withSyncPointDepth>0,data:null,loading:!1,loaded:!1,error:!1};if(d)for(var h in d)g[h]=d[h];var i=this.getAssetIndex(a,b);if(e&&i>-1){var j=this._fileList[i];j.loading||j.loaded?(this._fileList.push(g),this._totalFileCount++):this._fileList[i]=g}else-1===i&&(this._fileList.push(g),this._totalFileCount++);return this},replaceInFileList:function(a,b,c,d){return this.addToFileList(a,b,c,d,!0)},pack:function(a,b,c,d){if(void 0===b&&(b=null),void 0===c&&(c=null),void 0===d&&(d=null),!b&&!c)return console.warn("Phaser.Loader.pack - Both url and data are null. One must be set."),this;var e={type:"packfile",key:a,url:b,path:this.path,syncPoint:!0,data:null,loading:!1,loaded:!1,error:!1,callbackContext:d};c&&("string"==typeof c&&(c=JSON.parse(c)),e.data=c||{},e.loaded=!0);for(var f=0;f=e||d&&this._loadedPackCount===this._totalPackCount)break}if(this.updateProgress(),this._processingHead>=this._fileList.length)this.finishedLoading();else if(!this._flightQueue.length){console.warn("Phaser.Loader - aborting: processing queue empty, loading may have stalled");var f=this;setTimeout(function(){f.finishedLoading(!0)},2e3)}},finishedLoading:function(a){this.hasLoaded||(this.hasLoaded=!0,this.isLoading=!1,a||this._fileLoadStarted||(this._fileLoadStarted=!0,this.onLoadStart.dispatch()),this.onLoadComplete.dispatch(),this.game.state.loadComplete(),this.reset())},asyncComplete:function(a,b){void 0===b&&(b=""),a.loaded=!0,a.error=!!b,b&&(a.errorMessage=b,console.warn("Phaser.Loader - "+a.type+"["+a.key+"]: "+b)),this.processLoadQueue()},processPack:function(a){var b=a.data[a.key];if(!b)return void console.warn("Phaser.Loader - "+a.key+": pack has data, but not for pack key");for(var d=0;d=400&&f.status<=599?e.call(g,a,f):d.call(g,a,f)}catch(b){g.hasLoaded?window.console&&console.error(b):g.asyncComplete(a,b.message||"Exception")}},f.onerror=function(){try{return e.call(g,a,f)}catch(b){g.hasLoaded?window.console&&console.error(b):g.asyncComplete(a,b.message||"Exception")}},a.requestObject=f,a.requestUrl=b,f.send()},xhrLoadWithXDR:function(a,b,c,d,e){this._warnedAboutXDomainRequest||this.game.device.ie&&!(this.game.device.ieVersion>=10)||(this._warnedAboutXDomainRequest=!0,console.warn("Phaser.Loader - using XDomainRequest outside of IE 9"));var f=new window.XDomainRequest;f.open("GET",b,!0),f.responseType=c,f.timeout=3e3,e=e||this.fileError;var g=this;f.onerror=function(){try{return e.call(g,a,f)}catch(b){g.asyncComplete(a,b.message||"Exception")}},f.ontimeout=function(){try{return e.call(g,a,f)}catch(b){g.asyncComplete(a,b.message||"Exception")}},f.onprogress=function(){},f.onload=function(){try{return 4==f.readyState&&f.status>=400&&f.status<=599?e.call(g,a,f):d.call(g,a,f)}catch(b){g.asyncComplete(a,b.message||"Exception")}},a.requestObject=f,a.requestUrl=b,setTimeout(function(){f.send()},0)},getVideoURL:function(a){for(var b=0;b=0&&(d=d.substr(0,d.indexOf("?")));var e=d.substr((Math.max(0,d.lastIndexOf("."))||1/0)+1);if(c=e.toLowerCase(),this.game.device.canPlayVideo(c))return a[b]}}return null},getAudioURL:function(a){if(this.game.sound.noAudio)return null;for(var b=0;b=0&&(d=d.substr(0,d.indexOf("?")));var e=d.substr((Math.max(0,d.lastIndexOf("."))||1/0)+1);if(c=e.toLowerCase(),this.game.device.canPlayAudio(c))return a[b]}}return null},fileError:function(a,b,c){var d=a.requestUrl||this.transformUrl(a.url,a),e="error loading asset from URL "+d;!c&&b&&(c=b.status),c&&(e=e+" ("+c+")"),this.asyncComplete(a,e)},fileComplete:function(a,b){var d=!0;switch(a.type){case"packfile":var e=JSON.parse(b.responseText);a.data=e||{};break;case"image":this.cache.addImage(a.key,a.url,a.data);break;case"spritesheet":this.cache.addSpriteSheet(a.key,a.url,a.data,a.frameWidth,a.frameHeight,a.frameMax,a.margin,a.spacing);break;case"textureatlas":if(null==a.atlasURL)this.cache.addTextureAtlas(a.key,a.url,a.data,a.atlasData,a.format);else if(d=!1,a.format==c.Loader.TEXTURE_ATLAS_JSON_ARRAY||a.format==c.Loader.TEXTURE_ATLAS_JSON_HASH||a.format==c.Loader.TEXTURE_ATLAS_JSON_PYXEL)this.xhrLoad(a,this.transformUrl(a.atlasURL,a),"text",this.jsonLoadComplete);else{if(a.format!=c.Loader.TEXTURE_ATLAS_XML_STARLING)throw new Error("Phaser.Loader. Invalid Texture Atlas format: "+a.format);this.xhrLoad(a,this.transformUrl(a.atlasURL,a),"text",this.xmlLoadComplete)}break;case"bitmapfont":a.atlasURL?(d=!1,this.xhrLoad(a,this.transformUrl(a.atlasURL,a),"text",function(a,b){var c;try{c=JSON.parse(b.responseText)}catch(d){}c?(a.atlasType="json",this.jsonLoadComplete(a,b)):(a.atlasType="xml",this.xmlLoadComplete(a,b))})):this.cache.addBitmapFont(a.key,a.url,a.data,a.atlasData,a.atlasType,a.xSpacing,a.ySpacing);break;case"video":if(a.asBlob)try{a.data=b.response}catch(f){throw new Error("Phaser.Loader. Unable to parse video file as Blob: "+a.key)}this.cache.addVideo(a.key,a.url,a.data,a.asBlob);break;case"audio":this.game.sound.usingWebAudio?(a.data=b.response,this.cache.addSound(a.key,a.url,a.data,!0,!1),a.autoDecode&&this.game.sound.decode(a.key)):this.cache.addSound(a.key,a.url,a.data,!1,!0);break;case"text":a.data=b.responseText,this.cache.addText(a.key,a.url,a.data);break;case"shader":a.data=b.responseText,this.cache.addShader(a.key,a.url,a.data);break;case"physics":var e=JSON.parse(b.responseText);this.cache.addPhysicsData(a.key,a.url,e,a.format);break;case"script":a.data=document.createElement("script"),a.data.language="javascript",a.data.type="text/javascript",a.data.defer=!1,a.data.text=b.responseText,document.head.appendChild(a.data),a.callback&&(a.data=a.callback.call(a.callbackContext,a.key,b.responseText));break;case"binary":a.callback?a.data=a.callback.call(a.callbackContext,a.key,b.response):a.data=b.response,this.cache.addBinary(a.key,a.data)}d&&this.asyncComplete(a)},jsonLoadComplete:function(a,b){var c=JSON.parse(b.responseText);"tilemap"===a.type?this.cache.addTilemap(a.key,a.url,c,a.format):"bitmapfont"===a.type?this.cache.addBitmapFont(a.key,a.url,a.data,c,a.atlasType,a.xSpacing,a.ySpacing):"json"===a.type?this.cache.addJSON(a.key,a.url,c):this.cache.addTextureAtlas(a.key,a.url,a.data,c,a.format),this.asyncComplete(a)},csvLoadComplete:function(a,b){var c=b.responseText;this.cache.addTilemap(a.key,a.url,c,a.format),this.asyncComplete(a)},xmlLoadComplete:function(a,b){var c=b.responseText,d=this.parseXml(c);if(!d){var e=b.responseType||b.contentType;return console.warn("Phaser.Loader - "+a.key+": invalid XML ("+e+")"),void this.asyncComplete(a,"invalid XML")}"bitmapfont"===a.type?this.cache.addBitmapFont(a.key,a.url,a.data,d,a.atlasType,a.xSpacing,a.ySpacing):"textureatlas"===a.type?this.cache.addTextureAtlas(a.key,a.url,a.data,d,a.format):"xml"===a.type&&this.cache.addXML(a.key,a.url,d),this.asyncComplete(a)},parseXml:function(a){var b;try{if(window.DOMParser){var c=new DOMParser;b=c.parseFromString(a,"text/xml")}else b=new ActiveXObject("Microsoft.XMLDOM"),b.async="false",b.loadXML(a)}catch(d){b=null}return b&&b.documentElement&&!b.getElementsByTagName("parsererror").length?b:null},updateProgress:function(){this.preloadSprite&&(0===this.preloadSprite.direction?this.preloadSprite.rect.width=Math.floor(this.preloadSprite.width/100*this.progress):this.preloadSprite.rect.height=Math.floor(this.preloadSprite.height/100*this.progress),this.preloadSprite.sprite?this.preloadSprite.sprite.updateCrop():this.preloadSprite=null)},totalLoadedFiles:function(){return this._loadedFileCount},totalQueuedFiles:function(){return this._totalFileCount-this._loadedFileCount},totalLoadedPacks:function(){return this._totalPackCount},totalQueuedPacks:function(){return this._totalPackCount-this._loadedPackCount}},Object.defineProperty(c.Loader.prototype,"progressFloat",{get:function(){var a=this._loadedFileCount/this._totalFileCount*100;return c.Math.clamp(a||0,0,100)}}),Object.defineProperty(c.Loader.prototype,"progress",{get:function(){return Math.round(this.progressFloat)}}),c.Loader.prototype.constructor=c.Loader,c.LoaderParser={bitmapFont:function(a,b,c,d){return this.xmlBitmapFont(a,b,c,d)},xmlBitmapFont:function(a,b,c,d){var e={},f=a.getElementsByTagName("info")[0],g=a.getElementsByTagName("common")[0];e.font=f.getAttribute("face"),e.size=parseInt(f.getAttribute("size"),10),e.lineHeight=parseInt(g.getAttribute("lineHeight"),10)+d,e.chars={};for(var h=a.getElementsByTagName("char"),i=0;i=this.durationMS&&(this.usingWebAudio?this.loop?(this.onLoop.dispatch(this),this.isPlaying=!1,""===this.currentMarker?(this.currentTime=0,this.startTime=this.game.time.time,this.isPlaying=!0):(this.onMarkerComplete.dispatch(this.currentMarker,this),this.play(this.currentMarker,0,this.volume,!0,!0))):""!==this.currentMarker&&this.stop():this.loop?(this.onLoop.dispatch(this),""===this.currentMarker&&(this.currentTime=0,this.startTime=this.game.time.time),this.isPlaying=!1,this.play(this.currentMarker,0,this.volume,!0,!0)):this.stop())))):void this.destroy()},loopFull:function(a){this.play(null,0,a,!0)},play:function(a,b,c,d,e){if(void 0!==a&&a!==!1&&null!==a||(a=""),void 0===e&&(e=!0),this.isPlaying&&!this.allowMultiple&&!e&&!this.override)return this;if(this._sound&&this.isPlaying&&!this.allowMultiple&&(this.override||e))if(this.usingWebAudio){if(void 0===this._sound.stop)this._sound.noteOff(0);else try{this._sound.stop(0)}catch(f){}this.externalNode?this._sound.disconnect(this.externalNode):this.gainNode&&this._sound.disconnect(this.gainNode)}else this.usingAudioTag&&(this._sound.pause(),this._sound.currentTime=0);if(""===a&&Object.keys(this.markers).length>0)return this;if(""!==a){if(this.currentMarker=a,!this.markers[a])return this;this.position=this.markers[a].start,this.volume=this.markers[a].volume,this.loop=this.markers[a].loop,this.duration=this.markers[a].duration,this.durationMS=this.markers[a].durationMS,"undefined"!=typeof c&&(this.volume=c),"undefined"!=typeof d&&(this.loop=d),this._tempMarker=a,this._tempPosition=this.position,this._tempVolume=this.volume,this._tempLoop=this.loop}else b=b||0,void 0===c&&(c=this._volume),void 0===d&&(d=this.loop),this.position=Math.max(0,b),this.volume=c,this.loop=d,this.duration=0,this.durationMS=0,this._tempMarker=a,this._tempPosition=b,this._tempVolume=c,this._tempLoop=d;return this.usingWebAudio?this.game.cache.isSoundDecoded(this.key)?(this._sound=this.context.createBufferSource(),this.externalNode?this._sound.connect(this.externalNode):this._sound.connect(this.gainNode),this._buffer=this.game.cache.getSoundData(this.key),this._sound.buffer=this._buffer,this.loop&&""===a&&(this._sound.loop=!0),this.loop||""!==a||(this._sound.onended=this.onEndedHandler.bind(this)),this.totalDuration=this._sound.buffer.duration,0===this.duration&&(this.duration=this.totalDuration,this.durationMS=Math.ceil(1e3*this.totalDuration)),void 0===this._sound.start?this._sound.noteGrainOn(0,this.position,this.duration):this.loop&&""===a?this._sound.start(0,0):this._sound.start(0,this.position,this.duration),this.isPlaying=!0,this.startTime=this.game.time.time,this.currentTime=0,this.stopTime=this.startTime+this.durationMS,this.onPlay.dispatch(this)):(this.pendingPlayback=!0,this.game.cache.getSound(this.key)&&this.game.cache.getSound(this.key).isDecoding===!1&&this.game.sound.decode(this.key,this)):this.game.cache.getSound(this.key)&&this.game.cache.getSound(this.key).locked?(this.game.cache.reloadSound(this.key),this.pendingPlayback=!0):this._sound&&(this.game.device.cocoonJS||4===this._sound.readyState)?(this._sound.play(),this.totalDuration=this._sound.duration,0===this.duration&&(this.duration=this.totalDuration,this.durationMS=1e3*this.totalDuration),this._sound.currentTime=this.position,this._sound.muted=this._muted,this._muted||this.game.sound.mute?this._sound.volume=0:this._sound.volume=this._volume,this.isPlaying=!0,this.startTime=this.game.time.time,this.currentTime=0,this.stopTime=this.startTime+this.durationMS,this.onPlay.dispatch(this)):this.pendingPlayback=!0,this},restart:function(a,b,c,d){a=a||"",b=b||0,c=c||1,void 0===d&&(d=!1),this.play(a,b,c,d,!0)},pause:function(){this.isPlaying&&this._sound&&(this.paused=!0,this.pausedPosition=this.currentTime,this.pausedTime=this.game.time.time,this._tempPause=this._sound.currentTime,this.onPause.dispatch(this),this.stop())},resume:function(){if(this.paused&&this._sound){if(this.usingWebAudio){var a=Math.max(0,this.position+this.pausedPosition/1e3);this._sound=this.context.createBufferSource(),this._sound.buffer=this._buffer,this.externalNode?this._sound.connect(this.externalNode):this._sound.connect(this.gainNode),this.loop&&(this._sound.loop=!0),this.loop||""!==this.currentMarker||(this._sound.onended=this.onEndedHandler.bind(this));var b=this.duration-this.pausedPosition/1e3;void 0===this._sound.start?this._sound.noteGrainOn(0,a,b):this.loop&&this.game.device.chrome?42===this.game.device.chromeVersion?this._sound.start(0):this._sound.start(0,a):this._sound.start(0,a,b)}else this._sound.currentTime=this._tempPause,this._sound.play();this.isPlaying=!0,this.paused=!1,this.startTime+=this.game.time.time-this.pausedTime,this.onResume.dispatch(this)}},stop:function(){if(this.isPlaying&&this._sound)if(this.usingWebAudio){if(void 0===this._sound.stop)this._sound.noteOff(0);else try{this._sound.stop(0)}catch(a){}this.externalNode?this._sound.disconnect(this.externalNode):this.gainNode&&this._sound.disconnect(this.gainNode)}else this.usingAudioTag&&(this._sound.pause(),this._sound.currentTime=0);if(this.pendingPlayback=!1,this.isPlaying=!1,!this.paused){var b=this.currentMarker;""!==this.currentMarker&&this.onMarkerComplete.dispatch(this.currentMarker,this),this.currentMarker="",null!==this.fadeTween&&this.fadeTween.stop(),this.onStop.dispatch(this,b)}},fadeIn:function(a,b,c){void 0===b&&(b=!1),void 0===c&&(c=this.currentMarker),this.paused||(this.play(c,0,0,b),this.fadeTo(a,1))},fadeOut:function(a){this.fadeTo(a,0)},fadeTo:function(a,b){if(this.isPlaying&&!this.paused&&b!==this.volume){if(void 0===a&&(a=1e3),void 0===b)return void console.warn("Phaser.Sound.fadeTo: No Volume Specified.");this.fadeTween=this.game.add.tween(this).to({volume:b},a,c.Easing.Linear.None,!0),this.fadeTween.onComplete.add(this.fadeComplete,this)}},fadeComplete:function(){this.onFadeComplete.dispatch(this,this.volume),0===this.volume&&this.stop()},updateGlobalVolume:function(a){this.usingAudioTag&&this._sound&&(this._sound.volume=a*this._volume)},destroy:function(a){void 0===a&&(a=!0),this.stop(),a?this.game.sound.remove(this):(this.markers={},this.context=null,this._buffer=null,this.externalNode=null,this.onDecoded.dispose(),this.onPlay.dispose(),this.onPause.dispose(),this.onResume.dispose(),this.onLoop.dispose(),this.onStop.dispose(),this.onMute.dispose(),this.onMarkerComplete.dispose())}},c.Sound.prototype.constructor=c.Sound,Object.defineProperty(c.Sound.prototype,"isDecoding",{get:function(){return this.game.cache.getSound(this.key).isDecoding}}),Object.defineProperty(c.Sound.prototype,"isDecoded",{get:function(){return this.game.cache.isSoundDecoded(this.key)}}),Object.defineProperty(c.Sound.prototype,"mute",{get:function(){return this._muted||this.game.sound.mute},set:function(a){a=a||!1,a!==this._muted&&(a?(this._muted=!0,this._muteVolume=this._tempVolume,this.usingWebAudio?this.gainNode.gain.value=0:this.usingAudioTag&&this._sound&&(this._sound.volume=0)):(this._muted=!1,this.usingWebAudio?this.gainNode.gain.value=this._muteVolume:this.usingAudioTag&&this._sound&&(this._sound.volume=this._muteVolume)),this.onMute.dispatch(this))}}),Object.defineProperty(c.Sound.prototype,"volume",{get:function(){return this._volume},set:function(a){return this.game.device.firefox&&this.usingAudioTag&&(a=this.game.math.clamp(a,0,1)),this._muted?void(this._muteVolume=a):(this._tempVolume=a,this._volume=a,void(this.usingWebAudio?this.gainNode.gain.value=a:this.usingAudioTag&&this._sound&&(this._sound.volume=a)))}}),c.SoundManager=function(a){this.game=a,this.onSoundDecode=new c.Signal,this.onVolumeChange=new c.Signal,this.onMute=new c.Signal,this.onUnMute=new c.Signal,this.context=null,this.usingWebAudio=!1,this.usingAudioTag=!1,this.noAudio=!1,this.connectToMaster=!0,this.touchLocked=!1,this.channels=32,this.muteOnPause=!0,this._codeMuted=!1,this._muted=!1,this._unlockSource=null,this._volume=1,this._sounds=[],this._watchList=new c.ArraySet,this._watching=!1,this._watchCallback=null,this._watchContext=null},c.SoundManager.prototype={boot:function(){if(this.game.device.iOS&&this.game.device.webAudio===!1&&(this.channels=1),window.PhaserGlobal){if(window.PhaserGlobal.disableAudio===!0)return this.noAudio=!0,void(this.touchLocked=!1);if(window.PhaserGlobal.disableWebAudio===!0)return this.usingAudioTag=!0,void(this.touchLocked=!1)}if(window.PhaserGlobal&&window.PhaserGlobal.audioContext)this.context=window.PhaserGlobal.audioContext;else if(window.AudioContext)try{this.context=new window.AudioContext}catch(a){this.context=null,this.usingWebAudio=!1,this.touchLocked=!1}else if(window.webkitAudioContext)try{this.context=new window.webkitAudioContext}catch(a){this.context=null,this.usingWebAudio=!1,this.touchLocked=!1}if(null===this.context){if(void 0===window.Audio)return void(this.noAudio=!0);this.usingAudioTag=!0}else this.usingWebAudio=!0,void 0===this.context.createGain?this.masterGain=this.context.createGainNode():this.masterGain=this.context.createGain(),this.masterGain.gain.value=1,this.masterGain.connect(this.context.destination);this.noAudio||(!this.game.device.cocoonJS&&this.game.device.iOS||window.PhaserGlobal&&window.PhaserGlobal.fakeiOSTouchLock)&&this.setTouchLock()},setTouchLock:function(){this.noAudio||window.PhaserGlobal&&window.PhaserGlobal.disableAudio===!0||(this.game.device.iOSVersion>8?this.game.input.touch.addTouchLockCallback(this.unlock,this,!0):this.game.input.touch.addTouchLockCallback(this.unlock,this),this.touchLocked=!0)},unlock:function(){if(this.noAudio||!this.touchLocked||null!==this._unlockSource)return!0;if(this.usingAudioTag)this.touchLocked=!1,this._unlockSource=null;else if(this.usingWebAudio){var a=this.context.createBuffer(1,1,22050);this._unlockSource=this.context.createBufferSource(),this._unlockSource.buffer=a,this._unlockSource.connect(this.context.destination),void 0===this._unlockSource.start?this._unlockSource.noteOn(0):this._unlockSource.start(0)}return!0},stopAll:function(){if(!this.noAudio)for(var a=0;aa?a=0:a>1&&(a=1),this._volume!==a){if(this._volume=a,this.usingWebAudio)this.masterGain.gain.value=a;else for(var b=0;b=400?0:100,this.dom.getOffset(this.game.canvas,this.offset);var b=this._parentBounds.width,d=this._parentBounds.height,e=this.getParentBounds(this._parentBounds),f=e.width!==b||e.height!==d,g=this.updateOrientationState();(f||g)&&(this.onResize&&this.onResize.call(this.onResizeContext,this,e),this.updateLayout(),this.signalSizeChange());var h=2*this._updateThrottle;this._updateThrottle=b||0>=c)return a;var e=b,f=a.height*b/a.width,g=a.width*c/a.height,h=c,i=g>b;return i=i?d:!d,i?(a.width=Math.floor(e),a.height=Math.floor(f)):(a.width=Math.floor(g),a.height=Math.floor(h)),a},destroy:function(){this.game.onResume.remove(this._gameResumed,this),window.removeEventListener("orientationchange",this._orientationChange,!1),window.removeEventListener("resize",this._windowResize,!1),this.compatibility.supportsFullScreen&&(document.removeEventListener("webkitfullscreenchange",this._fullScreenChange,!1),document.removeEventListener("mozfullscreenchange",this._fullScreenChange,!1),document.removeEventListener("MSFullscreenChange",this._fullScreenChange,!1),document.removeEventListener("fullscreenchange",this._fullScreenChange,!1),document.removeEventListener("webkitfullscreenerror",this._fullScreenError,!1),document.removeEventListener("mozfullscreenerror",this._fullScreenError,!1),document.removeEventListener("MSFullscreenError",this._fullScreenError,!1),document.removeEventListener("fullscreenerror",this._fullScreenError,!1))}},c.ScaleManager.prototype.constructor=c.ScaleManager,Object.defineProperty(c.ScaleManager.prototype,"boundingParent",{get:function(){if(this.parentIsWindow||this.isFullScreen&&!this._createdFullScreenTarget)return null;var a=this.game.canvas&&this.game.canvas.parentNode;return a||null}}),Object.defineProperty(c.ScaleManager.prototype,"scaleMode",{get:function(){return this._scaleMode},set:function(a){return a!==this._scaleMode&&(this.isFullScreen||(this.updateDimensions(this._gameSize.width,this._gameSize.height,!0),this.queueUpdate(!0)),this._scaleMode=a),this._scaleMode}}),Object.defineProperty(c.ScaleManager.prototype,"fullScreenScaleMode",{get:function(){return this._fullScreenScaleMode},set:function(a){return a!==this._fullScreenScaleMode&&(this.isFullScreen?(this.prepScreenMode(!1),this._fullScreenScaleMode=a,this.prepScreenMode(!0),this.queueUpdate(!0)):this._fullScreenScaleMode=a),this._fullScreenScaleMode}}),Object.defineProperty(c.ScaleManager.prototype,"currentScaleMode",{get:function(){return this.isFullScreen?this._fullScreenScaleMode:this._scaleMode}}),Object.defineProperty(c.ScaleManager.prototype,"pageAlignHorizontally",{get:function(){return this._pageAlignHorizontally},set:function(a){a!==this._pageAlignHorizontally&&(this._pageAlignHorizontally=a,this.queueUpdate(!0))}}),Object.defineProperty(c.ScaleManager.prototype,"pageAlignVertically",{get:function(){return this._pageAlignVertically},set:function(a){a!==this._pageAlignVertically&&(this._pageAlignVertically=a,this.queueUpdate(!0))}}),Object.defineProperty(c.ScaleManager.prototype,"isFullScreen",{get:function(){return!!(document.fullscreenElement||document.webkitFullscreenElement||document.mozFullScreenElement||document.msFullscreenElement)}}),Object.defineProperty(c.ScaleManager.prototype,"isPortrait",{get:function(){return"portrait"===this.classifyOrientation(this.screenOrientation)}}),Object.defineProperty(c.ScaleManager.prototype,"isLandscape",{get:function(){return"landscape"===this.classifyOrientation(this.screenOrientation)}}),Object.defineProperty(c.ScaleManager.prototype,"isGamePortrait",{get:function(){return this.height>this.width}}),Object.defineProperty(c.ScaleManager.prototype,"isGameLandscape",{get:function(){return this.width>this.height}}),c.Utils.Debug=function(a){this.game=a,this.sprite=null,this.bmd=null,this.canvas=null,this.context=null,this.font="14px Courier",this.columnWidth=100,this.lineHeight=16,this.renderShadow=!0,this.currentX=0,this.currentY=0,this.currentAlpha=1,this.dirty=!1},c.Utils.Debug.prototype={boot:function(){this.game.renderType===c.CANVAS?this.context=this.game.context:(this.bmd=new c.BitmapData(this.game,"__DEBUG",this.game.width,this.game.height,!0),this.sprite=this.game.make.image(0,0,this.bmd),this.game.stage.addChild(this.sprite),this.game.scale.onSizeChange.add(this.resize,this),this.canvas=PIXI.CanvasPool.create(this,this.game.width,this.game.height),this.context=this.canvas.getContext("2d"))},resize:function(a,b,c){this.bmd.resize(b,c),this.canvas.width=b,this.canvas.height=c},preUpdate:function(){this.dirty&&this.sprite&&(this.bmd.clear(),this.bmd.draw(this.canvas,0,0),this.context.clearRect(0,0,this.game.width,this.game.height),this.dirty=!1)},reset:function(){this.context&&this.context.clearRect(0,0,this.game.width,this.game.height),this.sprite&&this.bmd.clear()},start:function(a,b,c,d){"number"!=typeof a&&(a=0),"number"!=typeof b&&(b=0),c=c||"rgb(255,255,255)",void 0===d&&(d=0),this.currentX=a,this.currentY=b,this.currentColor=c,this.columnWidth=d,this.dirty=!0,this.context.save(),this.context.setTransform(1,0,0,1,0,0),this.context.strokeStyle=c,this.context.fillStyle=c,this.context.font=this.font,this.context.globalAlpha=this.currentAlpha},stop:function(){this.context.restore()},line:function(){for(var a=this.currentX,b=0;b0)for(var b=0;b=0&&c.right>=0&&c.top<=this.layoutBounds.width&&c.left<=this.layoutBounds.height},getScreenOrientation:function(a){var b=window.screen,c=b.orientation||b.mozOrientation||b.msOrientation;if(c&&"string"==typeof c.type)return c.type;if("string"==typeof c)return c;var d="portrait-primary",e="landscape-primary"; +if("screen"===a)return b.height>b.width?d:e;if("viewport"===a)return this.visualBounds.height>this.visualBounds.width?d:e;if("window.orientation"===a&&"number"==typeof window.orientation)return 0===window.orientation||180===window.orientation?d:e;if(window.matchMedia){if(window.matchMedia("(orientation: portrait)").matches)return d;if(window.matchMedia("(orientation: landscape)").matches)return e}return this.visualBounds.height>this.visualBounds.width?d:e},visualBounds:new c.Rectangle,layoutBounds:new c.Rectangle,documentBounds:new c.Rectangle},c.Device.whenReady(function(a){var b=window&&"pageXOffset"in window?function(){return window.pageXOffset}:function(){return document.documentElement.scrollLeft},d=window&&"pageYOffset"in window?function(){return window.pageYOffset}:function(){return document.documentElement.scrollTop};Object.defineProperty(c.DOM,"scrollX",{get:b}),Object.defineProperty(c.DOM,"scrollY",{get:d}),Object.defineProperty(c.DOM.visualBounds,"x",{get:b}),Object.defineProperty(c.DOM.visualBounds,"y",{get:d}),Object.defineProperty(c.DOM.layoutBounds,"x",{value:0}),Object.defineProperty(c.DOM.layoutBounds,"y",{value:0});var e=a.desktop&&document.documentElement.clientWidth<=window.innerWidth&&document.documentElement.clientHeight<=window.innerHeight;if(e){var f=function(){return Math.max(window.innerWidth,document.documentElement.clientWidth)},g=function(){return Math.max(window.innerHeight,document.documentElement.clientHeight)};Object.defineProperty(c.DOM.visualBounds,"width",{get:f}),Object.defineProperty(c.DOM.visualBounds,"height",{get:g}),Object.defineProperty(c.DOM.layoutBounds,"width",{get:f}),Object.defineProperty(c.DOM.layoutBounds,"height",{get:g})}else Object.defineProperty(c.DOM.visualBounds,"width",{get:function(){return window.innerWidth}}),Object.defineProperty(c.DOM.visualBounds,"height",{get:function(){return window.innerHeight}}),Object.defineProperty(c.DOM.layoutBounds,"width",{get:function(){var a=document.documentElement.clientWidth,b=window.innerWidth;return b>a?b:a}}),Object.defineProperty(c.DOM.layoutBounds,"height",{get:function(){var a=document.documentElement.clientHeight,b=window.innerHeight;return b>a?b:a}});Object.defineProperty(c.DOM.documentBounds,"x",{value:0}),Object.defineProperty(c.DOM.documentBounds,"y",{value:0}),Object.defineProperty(c.DOM.documentBounds,"width",{get:function(){var a=document.documentElement;return Math.max(a.clientWidth,a.offsetWidth,a.scrollWidth)}}),Object.defineProperty(c.DOM.documentBounds,"height",{get:function(){var a=document.documentElement;return Math.max(a.clientHeight,a.offsetHeight,a.scrollHeight)}})},null,!0),c.ArraySet=function(a){this.position=0,this.list=a||[]},c.ArraySet.prototype={add:function(a){return this.exists(a)||this.list.push(a),a},getIndex:function(a){return this.list.indexOf(a)},getByKey:function(a,b){for(var c=this.list.length;c--;)if(this.list[c][a]===b)return this.list[c];return null},exists:function(a){return this.list.indexOf(a)>-1},reset:function(){this.list.length=0},remove:function(a){var b=this.list.indexOf(a);return b>-1?(this.list.splice(b,1),a):void 0},setAll:function(a,b){for(var c=this.list.length;c--;)this.list[c]&&(this.list[c][a]=b)},callAll:function(a){for(var b=Array.prototype.slice.call(arguments,1),c=this.list.length;c--;)this.list[c]&&this.list[c][a]&&this.list[c][a].apply(this.list[c],b)},removeAll:function(a){void 0===a&&(a=!1);for(var b=this.list.length;b--;)if(this.list[b]){var c=this.remove(this.list[b]);a&&c.destroy()}this.position=0,this.list=[]}},Object.defineProperty(c.ArraySet.prototype,"total",{get:function(){return this.list.length}}),Object.defineProperty(c.ArraySet.prototype,"first",{get:function(){return this.position=0,this.list.length>0?this.list[0]:null}}),Object.defineProperty(c.ArraySet.prototype,"next",{get:function(){return this.position0;b--){var c=Math.floor(Math.random()*(b+1)),d=a[b];a[b]=a[c],a[c]=d}return a},transposeMatrix:function(a){for(var b=a.length,c=a[0].length,d=new Array(c),e=0;c>e;e++){d[e]=new Array(b);for(var f=b-1;f>-1;f--)d[e][f]=a[f][e]}return d},rotateMatrix:function(a,b){if("string"!=typeof b&&(b=(b%360+360)%360),90===b||-270===b||"rotateLeft"===b)a=c.ArrayUtils.transposeMatrix(a),a=a.reverse();else if(-90===b||270===b||"rotateRight"===b)a=a.reverse(),a=c.ArrayUtils.transposeMatrix(a);else if(180===Math.abs(b)||"rotate180"===b){for(var d=0;d=e-a?e:d},rotateRight:function(a){var b=a.pop();return a.unshift(b),b},rotateLeft:function(a){var b=a.shift();return a.push(b),b},rotate:function(a){var b=a.shift();return a.push(b),b},numberArray:function(a,b){for(var c=[],d=a;b>=d;d++)c.push(d);return c},numberArrayStep:function(a,b,d){void 0!==a&&null!==a||(a=0),void 0!==b&&null!==b||(b=a,a=0),void 0===d&&(d=1);for(var e=[],f=Math.max(c.Math.roundAwayFromZero((b-a)/(d||1)),0),g=0;f>g;g++)e.push(a),a+=d;return e}},c.LinkedList=function(){this.next=null,this.prev=null,this.first=null,this.last=null,this.total=0},c.LinkedList.prototype={add:function(a){return 0===this.total&&null===this.first&&null===this.last?(this.first=a,this.last=a,this.next=a,a.prev=this,this.total++,a):(this.last.next=a,a.prev=this.last,this.last=a,this.total++,a)},reset:function(){this.first=null,this.last=null,this.next=null,this.prev=null,this.total=0},remove:function(a){return 1===this.total?(this.reset(),void(a.next=a.prev=null)):(a===this.first?this.first=this.first.next:a===this.last&&(this.last=this.last.prev),a.prev&&(a.prev.next=a.next),a.next&&(a.next.prev=a.prev),a.next=a.prev=null,null===this.first&&(this.last=null),void this.total--)},callAll:function(a){if(this.first&&this.last){var b=this.first;do b&&b[a]&&b[a].call(b),b=b.next;while(b!=this.last.next)}}},c.LinkedList.prototype.constructor=c.LinkedList,c.Create=function(a){this.game=a,this.bmd=null,this.canvas=null,this.ctx=null,this.palettes=[{0:"#000",1:"#9D9D9D",2:"#FFF",3:"#BE2633",4:"#E06F8B",5:"#493C2B",6:"#A46422",7:"#EB8931",8:"#F7E26B",9:"#2F484E",A:"#44891A",B:"#A3CE27",C:"#1B2632",D:"#005784",E:"#31A2F2",F:"#B2DCEF"},{0:"#000",1:"#191028",2:"#46af45",3:"#a1d685",4:"#453e78",5:"#7664fe",6:"#833129",7:"#9ec2e8",8:"#dc534b",9:"#e18d79",A:"#d6b97b",B:"#e9d8a1",C:"#216c4b",D:"#d365c8",E:"#afaab9",F:"#f5f4eb"},{0:"#000",1:"#2234d1",2:"#0c7e45",3:"#44aacc",4:"#8a3622",5:"#5c2e78",6:"#aa5c3d",7:"#b5b5b5",8:"#5e606e",9:"#4c81fb",A:"#6cd947",B:"#7be2f9",C:"#eb8a60",D:"#e23d69",E:"#ffd93f",F:"#fff"},{0:"#000",1:"#fff",2:"#8b4131",3:"#7bbdc5",4:"#8b41ac",5:"#6aac41",6:"#3931a4",7:"#d5de73",8:"#945a20",9:"#5a4100",A:"#bd736a",B:"#525252",C:"#838383",D:"#acee8b",E:"#7b73de",F:"#acacac"},{0:"#000",1:"#191028",2:"#46af45",3:"#a1d685",4:"#453e78",5:"#7664fe",6:"#833129",7:"#9ec2e8",8:"#dc534b",9:"#e18d79",A:"#d6b97b",B:"#e9d8a1",C:"#216c4b",D:"#d365c8",E:"#afaab9",F:"#fff"}]},c.Create.PALETTE_ARNE=0,c.Create.PALETTE_JMP=1,c.Create.PALETTE_CGA=2,c.Create.PALETTE_C64=3,c.Create.PALETTE_JAPANESE_MACHINE=4,c.Create.prototype={texture:function(a,b,c,d,e){void 0===c&&(c=8),void 0===d&&(d=c),void 0===e&&(e=0);var f=b[0].length*c,g=b.length*d;null===this.bmd&&(this.bmd=this.game.make.bitmapData(),this.canvas=this.bmd.canvas,this.ctx=this.bmd.context),this.bmd.resize(f,g),this.bmd.clear();for(var h=0;hg;g+=e)this.ctx.fillRect(0,g,b,1);for(var h=0;b>h;h+=d)this.ctx.fillRect(h,0,1,c);return this.bmd.generateTexture(a)}},c.Create.prototype.constructor=c.Create,c.FlexGrid=function(a,b,d){this.game=a.game,this.manager=a,this.width=b,this.height=d,this.boundsCustom=new c.Rectangle(0,0,b,d),this.boundsFluid=new c.Rectangle(0,0,b,d),this.boundsFull=new c.Rectangle(0,0,b,d),this.boundsNone=new c.Rectangle(0,0,b,d),this.positionCustom=new c.Point(0,0),this.positionFluid=new c.Point(0,0),this.positionFull=new c.Point(0,0),this.positionNone=new c.Point(0,0),this.scaleCustom=new c.Point(1,1),this.scaleFluid=new c.Point(1,1),this.scaleFluidInversed=new c.Point(1,1),this.scaleFull=new c.Point(1,1),this.scaleNone=new c.Point(1,1),this.customWidth=0,this.customHeight=0,this.customOffsetX=0,this.customOffsetY=0,this.ratioH=b/d,this.ratioV=d/b,this.multiplier=0,this.layers=[]},c.FlexGrid.prototype={setSize:function(a,b){this.width=a,this.height=b,this.ratioH=a/b,this.ratioV=b/a,this.scaleNone=new c.Point(1,1),this.boundsNone.width=this.width,this.boundsNone.height=this.height,this.refresh()},createCustomLayer:function(a,b,d,e){void 0===e&&(e=!0),this.customWidth=a,this.customHeight=b,this.boundsCustom.width=a,this.boundsCustom.height=b;var f=new c.FlexLayer(this,this.positionCustom,this.boundsCustom,this.scaleCustom);return e&&this.game.world.add(f),this.layers.push(f),"undefined"!=typeof d&&null!==typeof d&&f.addMultiple(d),f},createFluidLayer:function(a,b){void 0===b&&(b=!0);var d=new c.FlexLayer(this,this.positionFluid,this.boundsFluid,this.scaleFluid);return b&&this.game.world.add(d),this.layers.push(d),"undefined"!=typeof a&&null!==typeof a&&d.addMultiple(a),d},createFullLayer:function(a){var b=new c.FlexLayer(this,this.positionFull,this.boundsFull,this.scaleFluid);return this.game.world.add(b),this.layers.push(b),"undefined"!=typeof a&&b.addMultiple(a),b},createFixedLayer:function(a){var b=new c.FlexLayer(this,this.positionNone,this.boundsNone,this.scaleNone);return this.game.world.add(b),this.layers.push(b),"undefined"!=typeof a&&b.addMultiple(a),b},reset:function(){for(var a=this.layers.length;a--;)this.layers[a].persist||(this.layers[a].position=null,this.layers[a].scale=null,this.layers.slice(a,1))},onResize:function(a,b){this.ratioH=a/b,this.ratioV=b/a,this.refresh(a,b)},refresh:function(){this.multiplier=Math.min(this.manager.height/this.height,this.manager.width/this.width),this.boundsFluid.width=Math.round(this.width*this.multiplier),this.boundsFluid.height=Math.round(this.height*this.multiplier),this.scaleFluid.set(this.boundsFluid.width/this.width,this.boundsFluid.height/this.height),this.scaleFluidInversed.set(this.width/this.boundsFluid.width,this.height/this.boundsFluid.height),this.scaleFull.set(this.boundsFull.width/this.width,this.boundsFull.height/this.height),this.boundsFull.width=Math.round(this.manager.width*this.scaleFluidInversed.x),this.boundsFull.height=Math.round(this.manager.height*this.scaleFluidInversed.y),this.boundsFluid.centerOn(this.manager.bounds.centerX,this.manager.bounds.centerY),this.boundsNone.centerOn(this.manager.bounds.centerX,this.manager.bounds.centerY),this.positionFluid.set(this.boundsFluid.x,this.boundsFluid.y),this.positionNone.set(this.boundsNone.x,this.boundsNone.y)},fitSprite:function(a){this.manager.scaleSprite(a),a.x=this.manager.bounds.centerX,a.y=this.manager.bounds.centerY},debug:function(){this.game.debug.text(this.boundsFluid.width+" x "+this.boundsFluid.height,this.boundsFluid.x+4,this.boundsFluid.y+16),this.game.debug.geom(this.boundsFluid,"rgba(255,0,0,0.9",!1)}},c.FlexGrid.prototype.constructor=c.FlexGrid,c.FlexLayer=function(a,b,d,e){c.Group.call(this,a.game,null,"__flexLayer"+a.game.rnd.uuid(),!1),this.manager=a.manager,this.grid=a,this.persist=!1,this.position=b,this.bounds=d,this.scale=e,this.topLeft=d.topLeft,this.topMiddle=new c.Point(d.halfWidth,0),this.topRight=d.topRight,this.bottomLeft=d.bottomLeft,this.bottomMiddle=new c.Point(d.halfWidth,d.bottom),this.bottomRight=d.bottomRight},c.FlexLayer.prototype=Object.create(c.Group.prototype),c.FlexLayer.prototype.constructor=c.FlexLayer,c.FlexLayer.prototype.resize=function(){},c.FlexLayer.prototype.debug=function(){this.game.debug.text(this.bounds.width+" x "+this.bounds.height,this.bounds.x+4,this.bounds.y+16),this.game.debug.geom(this.bounds,"rgba(0,0,255,0.9",!1),this.game.debug.geom(this.topLeft,"rgba(255,255,255,0.9"),this.game.debug.geom(this.topMiddle,"rgba(255,255,255,0.9"),this.game.debug.geom(this.topRight,"rgba(255,255,255,0.9")},c.Color={packPixel:function(a,b,d,e){return c.Device.LITTLE_ENDIAN?(e<<24|d<<16|b<<8|a)>>>0:(a<<24|b<<16|d<<8|e)>>>0},unpackPixel:function(a,b,d,e){return void 0!==b&&null!==b||(b=c.Color.createColor()),void 0!==d&&null!==d||(d=!1),void 0!==e&&null!==e||(e=!1),c.Device.LITTLE_ENDIAN?(b.a=(4278190080&a)>>>24,b.b=(16711680&a)>>>16,b.g=(65280&a)>>>8,b.r=255&a):(b.r=(4278190080&a)>>>24,b.g=(16711680&a)>>>16,b.b=(65280&a)>>>8,b.a=255&a),b.color=a,b.rgba="rgba("+b.r+","+b.g+","+b.b+","+b.a/255+")",d&&c.Color.RGBtoHSL(b.r,b.g,b.b,b),e&&c.Color.RGBtoHSV(b.r,b.g,b.b,b),b},fromRGBA:function(a,b){return b||(b=c.Color.createColor()),b.r=(4278190080&a)>>>24,b.g=(16711680&a)>>>16,b.b=(65280&a)>>>8,b.a=255&a,b.rgba="rgba("+b.r+","+b.g+","+b.b+","+b.a+")",b},toRGBA:function(a,b,c,d){return a<<24|b<<16|c<<8|d},toABGR:function(a,b,c,d){return(d<<24|c<<16|b<<8|a)>>>0},RGBtoHSL:function(a,b,d,e){e||(e=c.Color.createColor(a,b,d,1)),a/=255,b/=255,d/=255;var f=Math.min(a,b,d),g=Math.max(a,b,d);if(e.h=0,e.s=0,e.l=(g+f)/2,g!==f){var h=g-f;e.s=e.l>.5?h/(2-g-f):h/(g+f),g===a?e.h=(b-d)/h+(d>b?6:0):g===b?e.h=(d-a)/h+2:g===d&&(e.h=(a-b)/h+4),e.h/=6}return e},HSLtoRGB:function(a,b,d,e){if(e?(e.r=d,e.g=d,e.b=d):e=c.Color.createColor(d,d,d),0!==b){var f=.5>d?d*(1+b):d+b-d*b,g=2*d-f;e.r=c.Color.hueToColor(g,f,a+1/3),e.g=c.Color.hueToColor(g,f,a),e.b=c.Color.hueToColor(g,f,a-1/3)}return e.r=Math.floor(255*e.r|0),e.g=Math.floor(255*e.g|0),e.b=Math.floor(255*e.b|0),c.Color.updateColor(e),e},RGBtoHSV:function(a,b,d,e){e||(e=c.Color.createColor(a,b,d,255)),a/=255,b/=255,d/=255;var f=Math.min(a,b,d),g=Math.max(a,b,d),h=g-f;return e.h=0,e.s=0===g?0:h/g,e.v=g,g!==f&&(g===a?e.h=(b-d)/h+(d>b?6:0):g===b?e.h=(d-a)/h+2:g===d&&(e.h=(a-b)/h+4),e.h/=6),e},HSVtoRGB:function(a,b,d,e){void 0===e&&(e=c.Color.createColor(0,0,0,1,a,b,0,d));var f,g,h,i=Math.floor(6*a),j=6*a-i,k=d*(1-b),l=d*(1-j*b),m=d*(1-(1-j)*b);switch(i%6){case 0:f=d,g=m,h=k;break;case 1:f=l,g=d,h=k;break;case 2:f=k,g=d,h=m;break;case 3:f=k,g=l,h=d;break;case 4:f=m,g=k,h=d;break;case 5:f=d,g=k,h=l}return e.r=Math.floor(255*f),e.g=Math.floor(255*g),e.b=Math.floor(255*h),c.Color.updateColor(e),e},hueToColor:function(a,b,c){return 0>c&&(c+=1),c>1&&(c-=1),1/6>c?a+6*(b-a)*c:.5>c?b:2/3>c?a+(b-a)*(2/3-c)*6:a},createColor:function(a,b,d,e,f,g,h,i){var j={r:a||0,g:b||0,b:d||0,a:e||1,h:f||0,s:g||0,l:h||0,v:i||0,color:0,color32:0,rgba:""};return c.Color.updateColor(j)},updateColor:function(a){return a.rgba="rgba("+a.r.toString()+","+a.g.toString()+","+a.b.toString()+","+a.a.toString()+")",a.color=c.Color.getColor(a.r,a.g,a.b),a.color32=c.Color.getColor32(255*a.a,a.r,a.g,a.b),a},getColor32:function(a,b,c,d){return a<<24|b<<16|c<<8|d},getColor:function(a,b,c){return a<<16|b<<8|c},RGBtoString:function(a,b,d,e,f){return void 0===e&&(e=255),void 0===f&&(f="#"),"#"===f?"#"+((1<<24)+(a<<16)+(b<<8)+d).toString(16).slice(1):"0x"+c.Color.componentToHex(e)+c.Color.componentToHex(a)+c.Color.componentToHex(b)+c.Color.componentToHex(d)},hexToRGB:function(a){var b=c.Color.hexToColor(a);return b?c.Color.getColor32(b.a,b.r,b.g,b.b):void 0},hexToColor:function(a,b){a=a.replace(/^(?:#|0x)?([a-f\d])([a-f\d])([a-f\d])$/i,function(a,b,c,d){return b+b+c+c+d+d});var d=/^(?:#|0x)?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(a);if(d){var e=parseInt(d[1],16),f=parseInt(d[2],16),g=parseInt(d[3],16);b?(b.r=e,b.g=f,b.b=g):b=c.Color.createColor(e,f,g)}return b},webToColor:function(a,b){b||(b=c.Color.createColor());var d=/^rgba?\(\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*(?:,\s*(\d+(?:\.\d+)?))?\s*\)$/.exec(a);return d&&(b.r=parseInt(d[1],10),b.g=parseInt(d[2],10),b.b=parseInt(d[3],10),b.a=void 0!==d[4]?parseFloat(d[4]):1,c.Color.updateColor(b)),b},valueToColor:function(a,b){if(b||(b=c.Color.createColor()),"string"==typeof a)return 0===a.indexOf("rgb")?c.Color.webToColor(a,b):(b.a=1,c.Color.hexToColor(a,b));if("number"==typeof a){var d=c.Color.getRGB(a);return b.r=d.r,b.g=d.g,b.b=d.b,b.a=d.a/255,b}return b},componentToHex:function(a){var b=a.toString(16);return 1==b.length?"0"+b:b},HSVColorWheel:function(a,b){void 0===a&&(a=1),void 0===b&&(b=1);for(var d=[],e=0;359>=e;e++)d.push(c.Color.HSVtoRGB(e/359,a,b));return d},HSLColorWheel:function(a,b){void 0===a&&(a=.5),void 0===b&&(b=.5);for(var d=[],e=0;359>=e;e++)d.push(c.Color.HSLtoRGB(e/359,a,b));return d},interpolateColor:function(a,b,d,e,f){void 0===f&&(f=255);var g=c.Color.getRGB(a),h=c.Color.getRGB(b),i=(h.red-g.red)*e/d+g.red,j=(h.green-g.green)*e/d+g.green,k=(h.blue-g.blue)*e/d+g.blue;return c.Color.getColor32(f,i,j,k)},interpolateColorWithRGB:function(a,b,d,e,f,g){var h=c.Color.getRGB(a),i=(b-h.red)*g/f+h.red,j=(d-h.green)*g/f+h.green,k=(e-h.blue)*g/f+h.blue;return c.Color.getColor(i,j,k)},interpolateRGB:function(a,b,d,e,f,g,h,i){var j=(e-a)*i/h+a,k=(f-b)*i/h+b,l=(g-d)*i/h+d;return c.Color.getColor(j,k,l)},getRandomColor:function(a,b,d){if(void 0===a&&(a=0),void 0===b&&(b=255),void 0===d&&(d=255),b>255||a>b)return c.Color.getColor(255,255,255);var e=a+Math.round(Math.random()*(b-a)),f=a+Math.round(Math.random()*(b-a)),g=a+Math.round(Math.random()*(b-a));return c.Color.getColor32(d,e,f,g)},getRGB:function(a){return a>16777215?{alpha:a>>>24,red:a>>16&255,green:a>>8&255,blue:255&a,a:a>>>24,r:a>>16&255,g:a>>8&255,b:255&a}:{alpha:255,red:a>>16&255,green:a>>8&255,blue:255&a,a:255,r:a>>16&255,g:a>>8&255,b:255&a}},getWebRGB:function(a){if("object"==typeof a)return"rgba("+a.r.toString()+","+a.g.toString()+","+a.b.toString()+","+(a.a/255).toString()+")";var b=c.Color.getRGB(a);return"rgba("+b.r.toString()+","+b.g.toString()+","+b.b.toString()+","+(b.a/255).toString()+")"},getAlpha:function(a){return a>>>24},getAlphaFloat:function(a){return(a>>>24)/255},getRed:function(a){return a>>16&255},getGreen:function(a){return a>>8&255},getBlue:function(a){return 255&a},blendNormal:function(a){return a},blendLighten:function(a,b){return b>a?b:a},blendDarken:function(a,b){return b>a?a:b},blendMultiply:function(a,b){return a*b/255},blendAverage:function(a,b){return(a+b)/2},blendAdd:function(a,b){return Math.min(255,a+b)},blendSubtract:function(a,b){return Math.max(0,a+b-255)},blendDifference:function(a,b){return Math.abs(a-b)},blendNegation:function(a,b){return 255-Math.abs(255-a-b)},blendScreen:function(a,b){return 255-((255-a)*(255-b)>>8)},blendExclusion:function(a,b){return a+b-2*a*b/255},blendOverlay:function(a,b){return 128>b?2*a*b/255:255-2*(255-a)*(255-b)/255},blendSoftLight:function(a,b){return 128>b?2*((a>>1)+64)*(b/255):255-2*(255-((a>>1)+64))*(255-b)/255},blendHardLight:function(a,b){return c.Color.blendOverlay(b,a)},blendColorDodge:function(a,b){return 255===b?b:Math.min(255,(a<<8)/(255-b))},blendColorBurn:function(a,b){return 0===b?b:Math.max(0,255-(255-a<<8)/b)},blendLinearDodge:function(a,b){return c.Color.blendAdd(a,b)},blendLinearBurn:function(a,b){return c.Color.blendSubtract(a,b)},blendLinearLight:function(a,b){return 128>b?c.Color.blendLinearBurn(a,2*b):c.Color.blendLinearDodge(a,2*(b-128))},blendVividLight:function(a,b){return 128>b?c.Color.blendColorBurn(a,2*b):c.Color.blendColorDodge(a,2*(b-128))},blendPinLight:function(a,b){return 128>b?c.Color.blendDarken(a,2*b):c.Color.blendLighten(a,2*(b-128))},blendHardMix:function(a,b){return c.Color.blendVividLight(a,b)<128?0:255},blendReflect:function(a,b){return 255===b?b:Math.min(255,a*a/(255-b))},blendGlow:function(a,b){return c.Color.blendReflect(b,a)},blendPhoenix:function(a,b){return Math.min(a,b)-Math.max(a,b)+255}},c.Physics=function(a,b){b=b||{},this.game=a,this.config=b,this.arcade=null,this.p2=null,this.ninja=null,this.box2d=null,this.chipmunk=null,this.matter=null,this.parseConfig()},c.Physics.ARCADE=0,c.Physics.P2JS=1,c.Physics.NINJA=2,c.Physics.BOX2D=3,c.Physics.CHIPMUNK=4,c.Physics.MATTERJS=5,c.Physics.prototype={parseConfig:function(){this.config.hasOwnProperty("arcade")&&this.config.arcade!==!0||!c.Physics.hasOwnProperty("Arcade")||(this.arcade=new c.Physics.Arcade(this.game)),this.config.hasOwnProperty("ninja")&&this.config.ninja===!0&&c.Physics.hasOwnProperty("Ninja")&&(this.ninja=new c.Physics.Ninja(this.game)),this.config.hasOwnProperty("p2")&&this.config.p2===!0&&c.Physics.hasOwnProperty("P2")&&(this.p2=new c.Physics.P2(this.game,this.config)),this.config.hasOwnProperty("box2d")&&this.config.box2d===!0&&c.Physics.hasOwnProperty("BOX2D")&&(this.box2d=new c.Physics.BOX2D(this.game,this.config)),this.config.hasOwnProperty("matter")&&this.config.matter===!0&&c.Physics.hasOwnProperty("Matter")&&(this.matter=new c.Physics.Matter(this.game,this.config))},startSystem:function(a){a===c.Physics.ARCADE?this.arcade=new c.Physics.Arcade(this.game):a===c.Physics.P2JS?null===this.p2?this.p2=new c.Physics.P2(this.game,this.config):this.p2.reset():a===c.Physics.NINJA?this.ninja=new c.Physics.Ninja(this.game):a===c.Physics.BOX2D?null===this.box2d?this.box2d=new c.Physics.Box2D(this.game,this.config):this.box2d.reset():a===c.Physics.MATTERJS&&(null===this.matter?this.matter=new c.Physics.Matter(this.game,this.config):this.matter.reset())},enable:function(a,b,d){void 0===b&&(b=c.Physics.ARCADE),void 0===d&&(d=!1),b===c.Physics.ARCADE?this.arcade.enable(a):b===c.Physics.P2JS&&this.p2?this.p2.enable(a,d):b===c.Physics.NINJA&&this.ninja?this.ninja.enableAABB(a):b===c.Physics.BOX2D&&this.box2d?this.box2d.enable(a):b===c.Physics.MATTERJS&&this.matter?this.matter.enable(a):console.warn(a.key+" is attempting to enable a physics body using an unknown physics system.")},preUpdate:function(){this.p2&&this.p2.preUpdate(),this.box2d&&this.box2d.preUpdate(),this.matter&&this.matter.preUpdate()},update:function(){this.p2&&this.p2.update(),this.box2d&&this.box2d.update(),this.matter&&this.matter.update()},setBoundsToWorld:function(){this.arcade&&this.arcade.setBoundsToWorld(),this.ninja&&this.ninja.setBoundsToWorld(),this.p2&&this.p2.setBoundsToWorld(),this.box2d&&this.box2d.setBoundsToWorld(),this.matter&&this.matter.setBoundsToWorld()},clear:function(){this.p2&&this.p2.clear(),this.box2d&&this.box2d.clear(),this.matter&&this.matter.clear()},reset:function(){this.p2&&this.p2.reset(),this.box2d&&this.box2d.reset(),this.matter&&this.matter.reset()},destroy:function(){this.p2&&this.p2.destroy(),this.box2d&&this.box2d.destroy(),this.matter&&this.matter.destroy(),this.arcade=null,this.ninja=null,this.p2=null,this.box2d=null,this.matter=null}},c.Physics.prototype.constructor=c.Physics,c.Physics.Arcade=function(a){this.game=a,this.gravity=new c.Point,this.bounds=new c.Rectangle(0,0,a.world.width,a.world.height),this.checkCollision={up:!0,down:!0,left:!0,right:!0},this.maxObjects=10,this.maxLevels=4,this.OVERLAP_BIAS=4,this.forceX=!1,this.sortDirection=c.Physics.Arcade.LEFT_RIGHT,this.skipQuadTree=!0,this.isPaused=!1,this.quadTree=new c.QuadTree(this.game.world.bounds.x,this.game.world.bounds.y,this.game.world.bounds.width,this.game.world.bounds.height,this.maxObjects,this.maxLevels),this._total=0,this.setBoundsToWorld()},c.Physics.Arcade.prototype.constructor=c.Physics.Arcade,c.Physics.Arcade.SORT_NONE=0,c.Physics.Arcade.LEFT_RIGHT=1,c.Physics.Arcade.RIGHT_LEFT=2,c.Physics.Arcade.TOP_BOTTOM=3,c.Physics.Arcade.BOTTOM_TOP=4,c.Physics.Arcade.prototype={setBounds:function(a,b,c,d){this.bounds.setTo(a,b,c,d)},setBoundsToWorld:function(){this.bounds.copyFrom(this.game.world.bounds)},enable:function(a,b){void 0===b&&(b=!0);var d=1;if(Array.isArray(a))for(d=a.length;d--;)a[d]instanceof c.Group?this.enable(a[d].children,b):(this.enableBody(a[d]),b&&a[d].hasOwnProperty("children")&&a[d].children.length>0&&this.enable(a[d],!0));else a instanceof c.Group?this.enable(a.children,b):(this.enableBody(a),b&&a.hasOwnProperty("children")&&a.children.length>0&&this.enable(a.children,!0))},enableBody:function(a){a.hasOwnProperty("body")&&null===a.body&&(a.body=new c.Physics.Arcade.Body(a),a.parent&&a.parent instanceof c.Group&&a.parent.addToHash(a))},updateMotion:function(a){var b=this.computeVelocity(0,a,a.angularVelocity,a.angularAcceleration,a.angularDrag,a.maxAngular)-a.angularVelocity;a.angularVelocity+=b,a.rotation+=a.angularVelocity*this.game.time.physicsElapsed,a.velocity.x=this.computeVelocity(1,a,a.velocity.x,a.acceleration.x,a.drag.x,a.maxVelocity.x),a.velocity.y=this.computeVelocity(2,a,a.velocity.y,a.acceleration.y,a.drag.y,a.maxVelocity.y)},computeVelocity:function(a,b,c,d,e,f){return void 0===f&&(f=1e4),1===a&&b.allowGravity?c+=(this.gravity.x+b.gravity.x)*this.game.time.physicsElapsed:2===a&&b.allowGravity&&(c+=(this.gravity.y+b.gravity.y)*this.game.time.physicsElapsed),d?c+=d*this.game.time.physicsElapsed:e&&(e*=this.game.time.physicsElapsed,c-e>0?c-=e:0>c+e?c+=e:c=0),c>f?c=f:-f>c&&(c=-f),c},overlap:function(a,b,c,d,e){if(c=c||null,d=d||null,e=e||c,this._total=0,!Array.isArray(a)&&Array.isArray(b))for(var f=0;f0},collide:function(a,b,c,d,e){if(c=c||null,d=d||null,e=e||c,this._total=0,!Array.isArray(a)&&Array.isArray(b))for(var f=0;f0},sortLeftRight:function(a,b){return a.body&&b.body?a.body.x-b.body.x:0},sortRightLeft:function(a,b){return a.body&&b.body?b.body.x-a.body.x:0},sortTopBottom:function(a,b){return a.body&&b.body?a.body.y-b.body.y:0},sortBottomTop:function(a,b){return a.body&&b.body?b.body.y-a.body.y:0},sort:function(a,b){null!==a.physicsSortDirection?b=a.physicsSortDirection:void 0===b&&(b=this.sortDirection),b===c.Physics.Arcade.LEFT_RIGHT?a.hash.sort(this.sortLeftRight):b===c.Physics.Arcade.RIGHT_LEFT?a.hash.sort(this.sortRightLeft):b===c.Physics.Arcade.TOP_BOTTOM?a.hash.sort(this.sortTopBottom):b===c.Physics.Arcade.BOTTOM_TOP&&a.hash.sort(this.sortBottomTop)},collideHandler:function(a,b,d,e,f,g){return void 0===b&&a.physicsType===c.GROUP?(this.sort(a),void this.collideGroupVsSelf(a,d,e,f,g)):void(a&&b&&a.exists&&b.exists&&(this.sortDirection!==c.Physics.Arcade.SORT_NONE&&(a.physicsType===c.GROUP&&this.sort(a),b.physicsType===c.GROUP&&this.sort(b)),a.physicsType===c.SPRITE?b.physicsType===c.SPRITE?this.collideSpriteVsSprite(a,b,d,e,f,g):b.physicsType===c.GROUP?this.collideSpriteVsGroup(a,b,d,e,f,g):b.physicsType===c.TILEMAPLAYER&&this.collideSpriteVsTilemapLayer(a,b,d,e,f,g):a.physicsType===c.GROUP?b.physicsType===c.SPRITE?this.collideSpriteVsGroup(b,a,d,e,f,g):b.physicsType===c.GROUP?this.collideGroupVsGroup(a,b,d,e,f,g):b.physicsType===c.TILEMAPLAYER&&this.collideGroupVsTilemapLayer(a,b,d,e,f,g):a.physicsType===c.TILEMAPLAYER&&(b.physicsType===c.SPRITE?this.collideSpriteVsTilemapLayer(b,a,d,e,f,g):b.physicsType===c.GROUP&&this.collideGroupVsTilemapLayer(b,a,d,e,f,g))))},collideSpriteVsSprite:function(a,b,c,d,e,f){return a.body&&b.body?(this.separate(a.body,b.body,d,e,f)&&(c&&c.call(e,a,b),this._total++),!0):!1},collideSpriteVsGroup:function(a,b,d,e,f,g){if(0!==b.length&&a.body)if(this.skipQuadTree||a.body.skipQuadTree)for(var h,i=0;ih.right)break;if(h.x>a.body.right)continue}else if(this.sortDirection===c.Physics.Arcade.TOP_BOTTOM){if(a.body.bottomh.bottom)break;if(h.y>a.body.bottom)continue}this.collideSpriteVsSprite(a,j,d,e,f,g)}}else{this.quadTree.clear(),this.quadTree.reset(this.game.world.bounds.x,this.game.world.bounds.y,this.game.world.bounds.width,this.game.world.bounds.height,this.maxObjects,this.maxLevels),this.quadTree.populate(b);for(var k=this.quadTree.retrieve(a),i=0;ik.right)continue;if(k.x>h.right)break}else if(this.sortDirection===c.Physics.Arcade.TOP_BOTTOM){if(h.bottomk.bottom)continue;if(k.y>i.body.bottom)break}this.collideSpriteVsSprite(i,l,b,d,e,f)}}}}},collideGroupVsGroup:function(a,b,d,e,f,g){if(0!==a.length&&0!==b.length)for(var h=0;hh.bottom)&&(i.xh.right))return this.separateCircle(a,b,e)}var j=!1,k=!1;this.forceX||Math.abs(this.gravity.y+a.gravity.y)=b.right?!1:!(a.position.y>=b.bottom)},circleBodyIntersects:function(a,b){var d=c.Math.clamp(a.center.x,b.left,b.right),e=c.Math.clamp(a.center.y,b.top,b.bottom),f=(a.center.x-d)*(a.center.x-d),g=(a.center.y-e)*(a.center.y-e);return f+g<=a.radius*a.radius},separateCircle:function(a,b,d){this.getOverlapX(a,b),this.getOverlapY(a,b);var e=this.angleBetweenCenters(a,b),f=0;if(a.isCircle!==b.isCircle){var g={x:b.isCircle?a.position.x:b.position.x,y:b.isCircle?a.position.y:b.position.y,right:b.isCircle?a.right:b.right,bottom:b.isCircle?a.bottom:b.bottom},h={x:a.isCircle?a.position.x+a.radius:b.position.x+b.radius,y:a.isCircle?a.position.y+a.radius:b.position.y+b.radius, +radius:a.isCircle?a.radius:b.radius};h.yg.right&&(f=c.Math.distance(h.x,h.y,g.right,g.y)-h.radius):h.y>g.bottom&&(h.xg.right&&(f=c.Math.distance(h.x,h.y,g.right,g.bottom)-h.radius)),f*=-1}else f=a.radius+b.radius-c.Math.distance(a.center.x,a.center.y,b.center.x,b.center.y);if(d||0===f||a.immovable&&b.immovable||a.customSeparateX||b.customSeparateX)return 0!==f&&(a.onOverlap&&a.onOverlap.dispatch(a.sprite,b.sprite),b.onOverlap&&b.onOverlap.dispatch(b.sprite,a.sprite)),0!==f;var i={x:a.velocity.x*Math.cos(e)+a.velocity.y*Math.sin(e),y:a.velocity.x*Math.sin(e)-a.velocity.y*Math.cos(e)},j={x:b.velocity.x*Math.cos(e)+b.velocity.y*Math.sin(e),y:b.velocity.x*Math.sin(e)-b.velocity.y*Math.cos(e)},k=((a.mass-b.mass)*i.x+2*b.mass*j.x)/(a.mass+b.mass),l=(2*a.mass*i.x+(b.mass-a.mass)*j.x)/(a.mass+b.mass);return a.immovable||(a.velocity.x=(k*Math.cos(e)-i.y*Math.sin(e))*a.bounce.x,a.velocity.y=(i.y*Math.cos(e)+k*Math.sin(e))*a.bounce.y),b.immovable||(b.velocity.x=(l*Math.cos(e)-j.y*Math.sin(e))*b.bounce.x,b.velocity.y=(j.y*Math.cos(e)+l*Math.sin(e))*b.bounce.y),Math.abs(e)0&&!a.immovable&&b.velocity.x>a.velocity.x?a.velocity.x*=-1:b.velocity.x<0&&!b.immovable&&a.velocity.x0&&!a.immovable&&b.velocity.y>a.velocity.y?a.velocity.y*=-1:b.velocity.y<0&&!b.immovable&&a.velocity.yMath.PI/2&&(a.velocity.x<0&&!a.immovable&&b.velocity.x0&&!b.immovable&&a.velocity.x>b.velocity.x?b.velocity.x*=-1:a.velocity.y<0&&!a.immovable&&b.velocity.y0&&!b.immovable&&a.velocity.x>b.velocity.y&&(b.velocity.y*=-1)),a.immovable||(a.x+=a.velocity.x*this.game.time.physicsElapsed-f*Math.cos(e),a.y+=a.velocity.y*this.game.time.physicsElapsed-f*Math.sin(e)),b.immovable||(b.x+=b.velocity.x*this.game.time.physicsElapsed+f*Math.cos(e),b.y+=b.velocity.y*this.game.time.physicsElapsed+f*Math.sin(e)),a.onCollide&&a.onCollide.dispatch(a.sprite,b.sprite),b.onCollide&&b.onCollide.dispatch(b.sprite,a.sprite),!0},getOverlapX:function(a,b,c){var d=0,e=a.deltaAbsX()+b.deltaAbsX()+this.OVERLAP_BIAS;return 0===a.deltaX()&&0===b.deltaX()?(a.embedded=!0,b.embedded=!0):a.deltaX()>b.deltaX()?(d=a.right-b.x,d>e&&!c||a.checkCollision.right===!1||b.checkCollision.left===!1?d=0:(a.touching.none=!1,a.touching.right=!0,b.touching.none=!1,b.touching.left=!0)):a.deltaX()e&&!c||a.checkCollision.left===!1||b.checkCollision.right===!1?d=0:(a.touching.none=!1,a.touching.left=!0,b.touching.none=!1,b.touching.right=!0)),a.overlapX=d,b.overlapX=d,d},getOverlapY:function(a,b,c){var d=0,e=a.deltaAbsY()+b.deltaAbsY()+this.OVERLAP_BIAS;return 0===a.deltaY()&&0===b.deltaY()?(a.embedded=!0,b.embedded=!0):a.deltaY()>b.deltaY()?(d=a.bottom-b.y,d>e&&!c||a.checkCollision.down===!1||b.checkCollision.up===!1?d=0:(a.touching.none=!1,a.touching.down=!0,b.touching.none=!1,b.touching.up=!0)):a.deltaY()e&&!c||a.checkCollision.up===!1||b.checkCollision.down===!1?d=0:(a.touching.none=!1,a.touching.up=!0,b.touching.none=!1,b.touching.down=!0)),a.overlapY=d,b.overlapY=d,d},separateX:function(a,b,c){var d=this.getOverlapX(a,b,c);if(c||0===d||a.immovable&&b.immovable||a.customSeparateX||b.customSeparateX)return 0!==d||a.embedded&&b.embedded;var e=a.velocity.x,f=b.velocity.x;if(a.immovable||b.immovable)a.immovable?(b.x+=d,b.velocity.x=e-f*b.bounce.x,a.moves&&(b.y+=(a.y-a.prev.y)*a.friction.y)):(a.x-=d,a.velocity.x=f-e*a.bounce.x,b.moves&&(a.y+=(b.y-b.prev.y)*b.friction.y));else{d*=.5,a.x-=d,b.x+=d;var g=Math.sqrt(f*f*b.mass/a.mass)*(f>0?1:-1),h=Math.sqrt(e*e*a.mass/b.mass)*(e>0?1:-1),i=.5*(g+h);g-=i,h-=i,a.velocity.x=i+g*a.bounce.x,b.velocity.x=i+h*b.bounce.x}return!0},separateY:function(a,b,c){var d=this.getOverlapY(a,b,c);if(c||0===d||a.immovable&&b.immovable||a.customSeparateY||b.customSeparateY)return 0!==d||a.embedded&&b.embedded;var e=a.velocity.y,f=b.velocity.y;if(a.immovable||b.immovable)a.immovable?(b.y+=d,b.velocity.y=e-f*b.bounce.y,a.moves&&(b.x+=(a.x-a.prev.x)*a.friction.x)):(a.y-=d,a.velocity.y=f-e*a.bounce.y,b.moves&&(a.x+=(b.x-b.prev.x)*b.friction.x));else{d*=.5,a.y-=d,b.y+=d;var g=Math.sqrt(f*f*b.mass/a.mass)*(f>0?1:-1),h=Math.sqrt(e*e*a.mass/b.mass)*(e>0?1:-1),i=.5*(g+h);g-=i,h-=i,a.velocity.y=i+g*a.bounce.y,b.velocity.y=i+h*b.bounce.y}return!0},getObjectsUnderPointer:function(a,b,c,d){return 0!==b.length&&a.exists?this.getObjectsAtLocation(a.x,a.y,b,c,d,a):void 0},getObjectsAtLocation:function(a,b,d,e,f,g){this.quadTree.clear(),this.quadTree.reset(this.game.world.bounds.x,this.game.world.bounds.y,this.game.world.bounds.width,this.game.world.bounds.height,this.maxObjects,this.maxLevels),this.quadTree.populate(d);for(var h=new c.Rectangle(a,b,1,1),i=[],j=this.quadTree.retrieve(h),k=0;k0&&(c=this.distanceBetween(a,b)/(d/1e3)),a.body.velocity.x=Math.cos(e)*c,a.body.velocity.y=Math.sin(e)*c,e},moveToPointer:function(a,b,c,d){void 0===b&&(b=60),c=c||this.game.input.activePointer,void 0===d&&(d=0);var e=this.angleToPointer(a,c);return d>0&&(b=this.distanceToPointer(a,c)/(d/1e3)),a.body.velocity.x=Math.cos(e)*b,a.body.velocity.y=Math.sin(e)*b,e},moveToXY:function(a,b,c,d,e){void 0===d&&(d=60),void 0===e&&(e=0);var f=Math.atan2(c-a.y,b-a.x);return e>0&&(d=this.distanceToXY(a,b,c)/(e/1e3)),a.body.velocity.x=Math.cos(f)*d,a.body.velocity.y=Math.sin(f)*d,f},velocityFromAngle:function(a,b,d){return void 0===b&&(b=60),d=d||new c.Point,d.setTo(Math.cos(this.game.math.degToRad(a))*b,Math.sin(this.game.math.degToRad(a))*b)},velocityFromRotation:function(a,b,d){return void 0===b&&(b=60),d=d||new c.Point,d.setTo(Math.cos(a)*b,Math.sin(a)*b)},accelerationFromRotation:function(a,b,d){return void 0===b&&(b=60),d=d||new c.Point,d.setTo(Math.cos(a)*b,Math.sin(a)*b)},accelerateToObject:function(a,b,c,d,e){void 0===c&&(c=60),void 0===d&&(d=1e3),void 0===e&&(e=1e3);var f=this.angleBetween(a,b);return a.body.acceleration.setTo(Math.cos(f)*c,Math.sin(f)*c),a.body.maxVelocity.setTo(d,e),f},accelerateToPointer:function(a,b,c,d,e){void 0===c&&(c=60),void 0===b&&(b=this.game.input.activePointer),void 0===d&&(d=1e3),void 0===e&&(e=1e3);var f=this.angleToPointer(a,b);return a.body.acceleration.setTo(Math.cos(f)*c,Math.sin(f)*c),a.body.maxVelocity.setTo(d,e),f},accelerateToXY:function(a,b,c,d,e,f){void 0===d&&(d=60),void 0===e&&(e=1e3),void 0===f&&(f=1e3);var g=this.angleToXY(a,b,c);return a.body.acceleration.setTo(Math.cos(g)*d,Math.sin(g)*d),a.body.maxVelocity.setTo(e,f),g},distanceBetween:function(a,b,c){void 0===c&&(c=!1);var d=c?a.world.x-b.world.x:a.x-b.x,e=c?a.world.y-b.world.y:a.y-b.y;return Math.sqrt(d*d+e*e)},distanceToXY:function(a,b,c,d){void 0===d&&(d=!1);var e=d?a.world.x-b:a.x-b,f=d?a.world.y-c:a.y-c;return Math.sqrt(e*e+f*f)},distanceToPointer:function(a,b,c){void 0===b&&(b=this.game.input.activePointer),void 0===c&&(c=!1);var d=c?a.world.x-b.worldX:a.x-b.worldX,e=c?a.world.y-b.worldY:a.y-b.worldY;return Math.sqrt(d*d+e*e)},angleBetween:function(a,b,c){return void 0===c&&(c=!1),c?Math.atan2(b.world.y-a.world.y,b.world.x-a.world.x):Math.atan2(b.y-a.y,b.x-a.x)},angleBetweenCenters:function(a,b){var c=b.center.x-a.center.x,d=b.center.y-a.center.y;return Math.atan2(d,c)},angleToXY:function(a,b,c,d){return void 0===d&&(d=!1),d?Math.atan2(c-a.world.y,b-a.world.x):Math.atan2(c-a.y,b-a.x)},angleToPointer:function(a,b,c){return void 0===b&&(b=this.game.input.activePointer),void 0===c&&(c=!1),c?Math.atan2(b.worldY-a.world.y,b.worldX-a.world.x):Math.atan2(b.worldY-a.y,b.worldX-a.x)},worldAngleToPointer:function(a,b){return this.angleToPointer(a,b,!0)}},c.Physics.Arcade.Body=function(a){this.sprite=a,this.game=a.game,this.type=c.Physics.ARCADE,this.enable=!0,this.isCircle=!1,this.radius=0,this.offset=new c.Point,this.position=new c.Point(a.x,a.y),this.prev=new c.Point(this.position.x,this.position.y),this.allowRotation=!0,this.rotation=a.rotation,this.preRotation=a.rotation,this.width=a.width,this.height=a.height,this.sourceWidth=a.width,this.sourceHeight=a.height,a.texture&&(this.sourceWidth=a.texture.frame.width,this.sourceHeight=a.texture.frame.height),this.halfWidth=Math.abs(a.width/2),this.halfHeight=Math.abs(a.height/2),this.center=new c.Point(a.x+this.halfWidth,a.y+this.halfHeight),this.velocity=new c.Point,this.newVelocity=new c.Point,this.deltaMax=new c.Point,this.acceleration=new c.Point,this.drag=new c.Point,this.allowGravity=!0,this.gravity=new c.Point,this.bounce=new c.Point,this.worldBounce=null,this.onWorldBounds=null,this.onCollide=null,this.onOverlap=null,this.maxVelocity=new c.Point(1e4,1e4),this.friction=new c.Point(1,0),this.angularVelocity=0,this.angularAcceleration=0,this.angularDrag=0,this.maxAngular=1e3,this.mass=1,this.angle=0,this.speed=0,this.facing=c.NONE,this.immovable=!1,this.moves=!0,this.customSeparateX=!1,this.customSeparateY=!1,this.overlapX=0,this.overlapY=0,this.overlapR=0,this.embedded=!1,this.collideWorldBounds=!1,this.checkCollision={none:!1,any:!0,up:!0,down:!0,left:!0,right:!0},this.touching={none:!0,up:!1,down:!1,left:!1,right:!1},this.wasTouching={none:!0,up:!1,down:!1,left:!1,right:!1},this.blocked={up:!1,down:!1,left:!1,right:!1},this.tilePadding=new c.Point,this.dirty=!1,this.skipQuadTree=!1,this.syncBounds=!1,this.isMoving=!1,this.stopVelocityOnCollide=!0,this.moveTimer=0,this.moveDistance=0,this.moveDuration=0,this.moveTarget=null,this.moveEnd=null,this.onMoveComplete=new c.Signal,this.movementCallback=null,this.movementCallbackContext=null,this._reset=!0,this._sx=a.scale.x,this._sy=a.scale.y,this._dx=0,this._dy=0},c.Physics.Arcade.Body.prototype={updateBounds:function(){if(this.syncBounds){var a=this.sprite.getBounds();a.ceilAll(),a.width===this.width&&a.height===this.height||(this.width=a.width,this.height=a.height,this._reset=!0)}else{var b=Math.abs(this.sprite.scale.x),c=Math.abs(this.sprite.scale.y);b===this._sx&&c===this._sy||(this.width=this.sourceWidth*b,this.height=this.sourceHeight*c,this._sx=b,this._sy=c,this._reset=!0)}this._reset&&(this.halfWidth=Math.floor(this.width/2),this.halfHeight=Math.floor(this.height/2),this.center.setTo(this.position.x+this.halfWidth,this.position.y+this.halfHeight))},preUpdate:function(){this.enable&&!this.game.physics.arcade.isPaused&&(this.dirty=!0,this.wasTouching.none=this.touching.none,this.wasTouching.up=this.touching.up,this.wasTouching.down=this.touching.down,this.wasTouching.left=this.touching.left,this.wasTouching.right=this.touching.right,this.touching.none=!0,this.touching.up=!1,this.touching.down=!1,this.touching.left=!1,this.touching.right=!1,this.blocked.up=!1,this.blocked.down=!1,this.blocked.left=!1,this.blocked.right=!1,this.embedded=!1,this.updateBounds(),this.position.x=this.sprite.world.x-this.sprite.anchor.x*this.sprite.width+this.sprite.scale.x*this.offset.x,this.position.x-=this.sprite.scale.x<0?this.width:0,this.position.y=this.sprite.world.y-this.sprite.anchor.y*this.sprite.height+this.sprite.scale.y*this.offset.y,this.position.y-=this.sprite.scale.y<0?this.height:0,this.rotation=this.sprite.angle,this.preRotation=this.rotation,(this._reset||this.sprite.fresh)&&(this.prev.x=this.position.x,this.prev.y=this.position.y),this.moves&&(this.game.physics.arcade.updateMotion(this),this.newVelocity.set(this.velocity.x*this.game.time.physicsElapsed,this.velocity.y*this.game.time.physicsElapsed),this.position.x+=this.newVelocity.x,this.position.y+=this.newVelocity.y,this.position.x===this.prev.x&&this.position.y===this.prev.y||(this.angle=Math.atan2(this.velocity.y,this.velocity.x)),this.speed=Math.sqrt(this.velocity.x*this.velocity.x+this.velocity.y*this.velocity.y),this.collideWorldBounds&&this.checkWorldBounds()&&this.onWorldBounds&&this.onWorldBounds.dispatch(this.sprite,this.blocked.up,this.blocked.down,this.blocked.left,this.blocked.right)),this._dx=this.deltaX(),this._dy=this.deltaY(),this._reset=!1)},updateMovement:function(){var a=0,b=0!==this.overlapX||0!==this.overlapY;if(this.moveDuration>0?(this.moveTimer+=this.game.time.elapsedMS,a=this.moveTimer/this.moveDuration):(this.moveTarget.end.set(this.position.x,this.position.y),a=this.moveTarget.length/this.moveDistance),this.movementCallback)var c=this.movementCallback.call(this.movementCallbackContext,this,this.velocity,a);return b||a>=1||void 0!==c&&c!==!0?(this.stopMovement(a>=1||this.stopVelocityOnCollide&&b),!1):!0},stopMovement:function(a){this.isMoving&&(this.isMoving=!1,a&&this.velocity.set(0),this.onMoveComplete.dispatch(this.sprite,0!==this.overlapX||0!==this.overlapY))},postUpdate:function(){this.enable&&this.dirty&&(this.isMoving&&this.updateMovement(),this.dirty=!1,this.deltaX()<0?this.facing=c.LEFT:this.deltaX()>0&&(this.facing=c.RIGHT),this.deltaY()<0?this.facing=c.UP:this.deltaY()>0&&(this.facing=c.DOWN),this.moves&&(this._dx=this.deltaX(),this._dy=this.deltaY(),0!==this.deltaMax.x&&0!==this._dx&&(this._dx<0&&this._dx<-this.deltaMax.x?this._dx=-this.deltaMax.x:this._dx>0&&this._dx>this.deltaMax.x&&(this._dx=this.deltaMax.x)),0!==this.deltaMax.y&&0!==this._dy&&(this._dy<0&&this._dy<-this.deltaMax.y?this._dy=-this.deltaMax.y:this._dy>0&&this._dy>this.deltaMax.y&&(this._dy=this.deltaMax.y)),this.sprite.position.x+=this._dx,this.sprite.position.y+=this._dy,this._reset=!0),this.center.setTo(this.position.x+this.halfWidth,this.position.y+this.halfHeight),this.allowRotation&&(this.sprite.angle+=this.deltaZ()),this.prev.x=this.position.x,this.prev.y=this.position.y)},checkWorldBounds:function(){var a=this.position,b=this.game.physics.arcade.bounds,c=this.game.physics.arcade.checkCollision,d=this.worldBounce?-this.worldBounce.x:-this.bounce.x,e=this.worldBounce?-this.worldBounce.y:-this.bounce.y;if(this.isCircle){var f={x:this.center.x-this.radius,y:this.center.y-this.radius,right:this.center.x+this.radius,bottom:this.center.y+this.radius};f.xb.right&&c.right&&(a.x=b.right-this.halfWidth-this.radius,this.velocity.x*=d,this.blocked.right=!0),f.yb.bottom&&c.down&&(a.y=b.bottom-this.halfHeight-this.radius,this.velocity.y*=e,this.blocked.down=!0)}else a.xb.right&&c.right&&(a.x=b.right-this.width,this.velocity.x*=d,this.blocked.right=!0),a.yb.bottom&&c.down&&(a.y=b.bottom-this.height,this.velocity.y*=e,this.blocked.down=!0);return this.blocked.up||this.blocked.down||this.blocked.left||this.blocked.right},moveFrom:function(a,b,c){if(void 0===b&&(b=this.speed),0===b)return!1;var d;return void 0===c?(d=this.angle,c=this.game.math.radToDeg(d)):d=this.game.math.degToRad(c),this.moveTimer=0,this.moveDuration=a,0===c||180===c?this.velocity.set(Math.cos(d)*b,0):90===c||270===c?this.velocity.set(0,Math.sin(d)*b):this.velocity.set(Math.cos(d)*b,Math.sin(d)*b),this.isMoving=!0,!0},moveTo:function(a,b,d){var e=b/(a/1e3);if(0===e)return!1;var f;return void 0===d?(f=this.angle,d=this.game.math.radToDeg(f)):f=this.game.math.degToRad(d),b=Math.abs(b),this.moveDuration=0,this.moveDistance=b,null===this.moveTarget&&(this.moveTarget=new c.Line,this.moveEnd=new c.Point),this.moveTarget.fromAngle(this.x,this.y,f,b),this.moveEnd.set(this.moveTarget.end.x,this.moveTarget.end.y),this.moveTarget.setTo(this.x,this.y,this.x,this.y),0===d||180===d?this.velocity.set(Math.cos(f)*e,0):90===d||270===d?this.velocity.set(0,Math.sin(f)*e):this.velocity.set(Math.cos(f)*e,Math.sin(f)*e),this.isMoving=!0,!0},setSize:function(a,b,c,d){void 0===c&&(c=this.offset.x),void 0===d&&(d=this.offset.y),this.sourceWidth=a,this.sourceHeight=b,this.width=this.sourceWidth*this._sx,this.height=this.sourceHeight*this._sy,this.halfWidth=Math.floor(this.width/2),this.halfHeight=Math.floor(this.height/2),this.offset.setTo(c,d),this.center.setTo(this.position.x+this.halfWidth,this.position.y+this.halfHeight),this.isCircle=!1,this.radius=0},setCircle:function(a,b,c){void 0===b&&(b=this.offset.x),void 0===c&&(c=this.offset.y),a>0?(this.isCircle=!0,this.radius=a,this.sourceWidth=2*a,this.sourceHeight=2*a,this.width=this.sourceWidth*this._sx,this.height=this.sourceHeight*this._sy,this.halfWidth=Math.floor(this.width/2),this.halfHeight=Math.floor(this.height/2),this.offset.setTo(b,c),this.center.setTo(this.position.x+this.halfWidth,this.position.y+this.halfHeight)):this.isCircle=!1},reset:function(a,b){this.velocity.set(0),this.acceleration.set(0),this.speed=0,this.angularVelocity=0,this.angularAcceleration=0,this.position.x=a-this.sprite.anchor.x*this.sprite.width+this.sprite.scale.x*this.offset.x,this.position.x-=this.sprite.scale.x<0?this.width:0,this.position.y=b-this.sprite.anchor.y*this.sprite.height+this.sprite.scale.y*this.offset.y,this.position.y-=this.sprite.scale.y<0?this.height:0,this.prev.x=this.position.x,this.prev.y=this.position.y,this.rotation=this.sprite.angle,this.preRotation=this.rotation,this._sx=this.sprite.scale.x,this._sy=this.sprite.scale.y,this.center.setTo(this.position.x+this.halfWidth,this.position.y+this.halfHeight)},getBounds:function(a){return this.isCircle?(a.x=this.center.x-this.radius,a.y=this.center.y-this.radius,a.right=this.center.x+this.radius,a.bottom=this.center.y+this.radius):(a.x=this.x,a.y=this.y,a.right=this.right,a.bottom=this.bottom),a},hitTest:function(a,b){return this.isCircle?c.Circle.contains(this,a,b):c.Rectangle.contains(this,a,b)},onFloor:function(){return this.blocked.down},onCeiling:function(){return this.blocked.up},onWall:function(){return this.blocked.left||this.blocked.right},deltaAbsX:function(){return this.deltaX()>0?this.deltaX():-this.deltaX()},deltaAbsY:function(){return this.deltaY()>0?this.deltaY():-this.deltaY()},deltaX:function(){return this.position.x-this.prev.x},deltaY:function(){return this.position.y-this.prev.y},deltaZ:function(){return this.rotation-this.preRotation},destroy:function(){this.sprite.parent&&this.sprite.parent instanceof c.Group&&this.sprite.parent.removeFromHash(this.sprite),this.sprite.body=null,this.sprite=null}},Object.defineProperty(c.Physics.Arcade.Body.prototype,"left",{get:function(){return this.position.x}}),Object.defineProperty(c.Physics.Arcade.Body.prototype,"right",{get:function(){return this.position.x+this.width}}),Object.defineProperty(c.Physics.Arcade.Body.prototype,"top",{get:function(){return this.position.y}}),Object.defineProperty(c.Physics.Arcade.Body.prototype,"bottom",{get:function(){return this.position.y+this.height}}),Object.defineProperty(c.Physics.Arcade.Body.prototype,"x",{get:function(){return this.position.x},set:function(a){this.position.x=a}}),Object.defineProperty(c.Physics.Arcade.Body.prototype,"y",{get:function(){return this.position.y},set:function(a){this.position.y=a}}),c.Physics.Arcade.Body.render=function(a,b,c,d){void 0===d&&(d=!0),c=c||"rgba(0,255,0,0.4)",a.fillStyle=c,a.strokeStyle=c,b.isCircle?(a.beginPath(),a.arc(b.center.x-b.game.camera.x,b.center.y-b.game.camera.y,b.radius,0,2*Math.PI),d?a.fill():a.stroke()):d?a.fillRect(b.position.x-b.game.camera.x,b.position.y-b.game.camera.y,b.width,b.height):a.strokeRect(b.position.x-b.game.camera.x,b.position.y-b.game.camera.y,b.width,b.height)},c.Physics.Arcade.Body.renderBodyInfo=function(a,b){a.line("x: "+b.x.toFixed(2),"y: "+b.y.toFixed(2),"width: "+b.width,"height: "+b.height),a.line("velocity x: "+b.velocity.x.toFixed(2),"y: "+b.velocity.y.toFixed(2),"deltaX: "+b._dx.toFixed(2),"deltaY: "+b._dy.toFixed(2)),a.line("acceleration x: "+b.acceleration.x.toFixed(2),"y: "+b.acceleration.y.toFixed(2),"speed: "+b.speed.toFixed(2),"angle: "+b.angle.toFixed(2)),a.line("gravity x: "+b.gravity.x,"y: "+b.gravity.y,"bounce x: "+b.bounce.x.toFixed(2),"y: "+b.bounce.y.toFixed(2)),a.line("touching left: "+b.touching.left,"right: "+b.touching.right,"up: "+b.touching.up,"down: "+b.touching.down),a.line("blocked left: "+b.blocked.left,"right: "+b.blocked.right,"up: "+b.blocked.up,"down: "+b.blocked.down)},c.Physics.Arcade.Body.prototype.constructor=c.Physics.Arcade.Body,c.Physics.Arcade.TilemapCollision=function(){},c.Physics.Arcade.TilemapCollision.prototype={TILE_BIAS:16,collideSpriteVsTilemapLayer:function(a,b,c,d,e,f){if(a.body){var g=b.getTiles(a.body.position.x-a.body.tilePadding.x,a.body.position.y-a.body.tilePadding.y,a.body.width+a.body.tilePadding.x,a.body.height+a.body.tilePadding.y,!1,!1);if(0!==g.length)for(var h=0;hb.deltaAbsY()?j=-1:b.deltaAbsX()j){if((c.faceLeft||c.faceRight)&&(h=this.tileCheckX(b,c,d),0!==h&&!c.intersects(b.position.x-f,b.position.y-g,b.right-f,b.bottom-g)))return!0;(c.faceTop||c.faceBottom)&&(i=this.tileCheckY(b,c,d))}else{if((c.faceTop||c.faceBottom)&&(i=this.tileCheckY(b,c,d),0!==i&&!c.intersects(b.position.x-f,b.position.y-g,b.right-f,b.bottom-g)))return!0;(c.faceLeft||c.faceRight)&&(h=this.tileCheckX(b,c,d))}return 0!==h||0!==i},tileCheckX:function(a,b,c){var d=0,e=c.fixedToCamera?0:c.position.x;return a.deltaX()<0&&!a.blocked.left&&b.collideRight&&a.checkCollision.left?b.faceRight&&a.x-e0&&!a.blocked.right&&b.collideLeft&&a.checkCollision.right&&b.faceLeft&&a.right-e>b.left&&(d=a.right-e-b.left,d>this.TILE_BIAS&&(d=0)),0!==d&&(a.customSeparateX?a.overlapX=d:this.processTileSeparationX(a,d)),d},tileCheckY:function(a,b,c){var d=0,e=c.fixedToCamera?0:c.position.y;return a.deltaY()<0&&!a.blocked.up&&b.collideDown&&a.checkCollision.up?b.faceBottom&&a.y-e0&&!a.blocked.down&&b.collideUp&&a.checkCollision.down&&b.faceTop&&a.bottom-e>b.top&&(d=a.bottom-e-b.top,d>this.TILE_BIAS&&(d=0)),0!==d&&(a.customSeparateY?a.overlapY=d:this.processTileSeparationY(a,d)),d},processTileSeparationX:function(a,b){0>b?a.blocked.left=!0:b>0&&(a.blocked.right=!0),a.position.x-=b,0===a.bounce.x?a.velocity.x=0:a.velocity.x=-a.velocity.x*a.bounce.x},processTileSeparationY:function(a,b){0>b?a.blocked.up=!0:b>0&&(a.blocked.down=!0),a.position.y-=b,0===a.bounce.y?a.velocity.y=0:a.velocity.y=-a.velocity.y*a.bounce.y}},c.Utils.mixinPrototype(c.Physics.Arcade.prototype,c.Physics.Arcade.TilemapCollision.prototype),p2.Body.prototype.parent=null,p2.Spring.prototype.parent=null,c.Physics.P2=function(a,b){this.game=a,void 0===b?b={gravity:[0,0],broadphase:new p2.SAPBroadphase}:(b.hasOwnProperty("gravity")||(b.gravity=[0,0]),b.hasOwnProperty("broadphase")||(b.broadphase=new p2.SAPBroadphase)),this.config=b,this.world=new p2.World(this.config),this.frameRate=1/60,this.useElapsedTime=!1,this.paused=!1,this.materials=[],this.gravity=new c.Physics.P2.InversePointProxy(this,this.world.gravity),this.walls={left:null,right:null,top:null,bottom:null},this.onBodyAdded=new c.Signal,this.onBodyRemoved=new c.Signal,this.onSpringAdded=new c.Signal,this.onSpringRemoved=new c.Signal,this.onConstraintAdded=new c.Signal,this.onConstraintRemoved=new c.Signal,this.onContactMaterialAdded=new c.Signal,this.onContactMaterialRemoved=new c.Signal,this.postBroadphaseCallback=null,this.callbackContext=null,this.onBeginContact=new c.Signal,this.onEndContact=new c.Signal,b.hasOwnProperty("mpx")&&b.hasOwnProperty("pxm")&&b.hasOwnProperty("mpxi")&&b.hasOwnProperty("pxmi")&&(this.mpx=b.mpx,this.mpxi=b.mpxi,this.pxm=b.pxm,this.pxmi=b.pxmi),this.world.on("beginContact",this.beginContactHandler,this),this.world.on("endContact",this.endContactHandler,this),this.collisionGroups=[],this.nothingCollisionGroup=new c.Physics.P2.CollisionGroup(1),this.boundsCollisionGroup=new c.Physics.P2.CollisionGroup(2),this.everythingCollisionGroup=new c.Physics.P2.CollisionGroup(2147483648),this.boundsCollidesWith=[],this._toRemove=[],this._collisionGroupID=2,this._boundsLeft=!0,this._boundsRight=!0,this._boundsTop=!0,this._boundsBottom=!0,this._boundsOwnGroup=!1,this.setBoundsToWorld(!0,!0,!0,!0,!1)},c.Physics.P2.prototype={removeBodyNextStep:function(a){this._toRemove.push(a)},preUpdate:function(){for(var a=this._toRemove.length;a--;)this.removeBody(this._toRemove[a]);this._toRemove.length=0},enable:function(a,b,d){void 0===b&&(b=!1),void 0===d&&(d=!0);var e=1;if(Array.isArray(a))for(e=a.length;e--;)a[e]instanceof c.Group?this.enable(a[e].children,b,d):(this.enableBody(a[e],b),d&&a[e].hasOwnProperty("children")&&a[e].children.length>0&&this.enable(a[e],b,!0));else a instanceof c.Group?this.enable(a.children,b,d):(this.enableBody(a,b),d&&a.hasOwnProperty("children")&&a.children.length>0&&this.enable(a.children,b,!0))},enableBody:function(a,b){a.hasOwnProperty("body")&&null===a.body&&(a.body=new c.Physics.P2.Body(this.game,a,a.x,a.y,1),a.body.debug=b,"undefined"!=typeof a.anchor&&a.anchor.set(.5))},setImpactEvents:function(a){a?this.world.on("impact",this.impactHandler,this):this.world.off("impact",this.impactHandler,this)},setPostBroadphaseCallback:function(a,b){this.postBroadphaseCallback=a,this.callbackContext=b,null!==a?this.world.on("postBroadphase",this.postBroadphaseHandler,this):this.world.off("postBroadphase",this.postBroadphaseHandler,this)},postBroadphaseHandler:function(a){if(this.postBroadphaseCallback&&0!==a.pairs.length)for(var b=a.pairs.length-2;b>=0;b-=2)a.pairs[b].parent&&a.pairs[b+1].parent&&!this.postBroadphaseCallback.call(this.callbackContext,a.pairs[b].parent,a.pairs[b+1].parent)&&a.pairs.splice(b,2)},impactHandler:function(a){if(a.bodyA.parent&&a.bodyB.parent){var b=a.bodyA.parent,c=a.bodyB.parent;b._bodyCallbacks[a.bodyB.id]&&b._bodyCallbacks[a.bodyB.id].call(b._bodyCallbackContext[a.bodyB.id],b,c,a.shapeA,a.shapeB),c._bodyCallbacks[a.bodyA.id]&&c._bodyCallbacks[a.bodyA.id].call(c._bodyCallbackContext[a.bodyA.id],c,b,a.shapeB,a.shapeA),b._groupCallbacks[a.shapeB.collisionGroup]&&b._groupCallbacks[a.shapeB.collisionGroup].call(b._groupCallbackContext[a.shapeB.collisionGroup],b,c,a.shapeA,a.shapeB),c._groupCallbacks[a.shapeA.collisionGroup]&&c._groupCallbacks[a.shapeA.collisionGroup].call(c._groupCallbackContext[a.shapeA.collisionGroup],c,b,a.shapeB,a.shapeA)}},beginContactHandler:function(a){a.bodyA&&a.bodyB&&(this.onBeginContact.dispatch(a.bodyA,a.bodyB,a.shapeA,a.shapeB,a.contactEquations),a.bodyA.parent&&a.bodyA.parent.onBeginContact.dispatch(a.bodyB.parent,a.bodyB,a.shapeA,a.shapeB,a.contactEquations),a.bodyB.parent&&a.bodyB.parent.onBeginContact.dispatch(a.bodyA.parent,a.bodyA,a.shapeB,a.shapeA,a.contactEquations))},endContactHandler:function(a){a.bodyA&&a.bodyB&&(this.onEndContact.dispatch(a.bodyA,a.bodyB,a.shapeA,a.shapeB),a.bodyA.parent&&a.bodyA.parent.onEndContact.dispatch(a.bodyB.parent,a.bodyB,a.shapeA,a.shapeB),a.bodyB.parent&&a.bodyB.parent.onEndContact.dispatch(a.bodyA.parent,a.bodyA,a.shapeB,a.shapeA))},setBoundsToWorld:function(a,b,c,d,e){this.setBounds(this.game.world.bounds.x,this.game.world.bounds.y,this.game.world.bounds.width,this.game.world.bounds.height,a,b,c,d,e)},setWorldMaterial:function(a,b,c,d,e){void 0===b&&(b=!0),void 0===c&&(c=!0),void 0===d&&(d=!0),void 0===e&&(e=!0),b&&this.walls.left&&(this.walls.left.shapes[0].material=a),c&&this.walls.right&&(this.walls.right.shapes[0].material=a),d&&this.walls.top&&(this.walls.top.shapes[0].material=a),e&&this.walls.bottom&&(this.walls.bottom.shapes[0].material=a)},updateBoundsCollisionGroup:function(a){void 0===a&&(a=!0);var b=a?this.boundsCollisionGroup.mask:this.everythingCollisionGroup.mask;this.walls.left&&(this.walls.left.shapes[0].collisionGroup=b),this.walls.right&&(this.walls.right.shapes[0].collisionGroup=b),this.walls.top&&(this.walls.top.shapes[0].collisionGroup=b),this.walls.bottom&&(this.walls.bottom.shapes[0].collisionGroup=b),this._boundsOwnGroup=a},setBounds:function(a,b,c,d,e,f,g,h,i){void 0===e&&(e=this._boundsLeft),void 0===f&&(f=this._boundsRight),void 0===g&&(g=this._boundsTop),void 0===h&&(h=this._boundsBottom),void 0===i&&(i=this._boundsOwnGroup),this.setupWall(e,"left",a,b,1.5707963267948966,i),this.setupWall(f,"right",a+c,b,-1.5707963267948966,i),this.setupWall(g,"top",a,b,-3.141592653589793,i),this.setupWall(h,"bottom",a,b+d,0,i),this._boundsLeft=e,this._boundsRight=f,this._boundsTop=g,this._boundsBottom=h,this._boundsOwnGroup=i},setupWall:function(a,b,c,d,e,f){a?(this.walls[b]?this.walls[b].position=[this.pxmi(c),this.pxmi(d)]:(this.walls[b]=new p2.Body({mass:0,position:[this.pxmi(c),this.pxmi(d)],angle:e}),this.walls[b].addShape(new p2.Plane),this.world.addBody(this.walls[b])),f&&(this.walls[b].shapes[0].collisionGroup=this.boundsCollisionGroup.mask)):this.walls[b]&&(this.world.removeBody(this.walls[b]),this.walls[b]=null)},pause:function(){this.paused=!0},resume:function(){this.paused=!1},update:function(){this.paused||(this.useElapsedTime?this.world.step(this.game.time.physicsElapsed):this.world.step(this.frameRate))},reset:function(){this.world.on("beginContact",this.beginContactHandler,this),this.world.on("endContact",this.endContactHandler,this),this.nothingCollisionGroup=new c.Physics.P2.CollisionGroup(1),this.boundsCollisionGroup=new c.Physics.P2.CollisionGroup(2),this.everythingCollisionGroup=new c.Physics.P2.CollisionGroup(2147483648),this._collisionGroupID=2,this.setBoundsToWorld(!0,!0,!0,!0,!1)},clear:function(){this.world.time=0,this.world.fixedStepTime=0,this.world.solver&&this.world.solver.equations.length&&this.world.solver.removeAllEquations();for(var a=this.world.constraints,b=a.length-1;b>=0;b--)this.world.removeConstraint(a[b]);for(var c=this.world.bodies,b=c.length-1;b>=0;b--)this.world.removeBody(c[b]);for(var d=this.world.springs,b=d.length-1;b>=0;b--)this.world.removeSpring(d[b]);for(var e=this.world.contactMaterials,b=e.length-1;b>=0;b--)this.world.removeContactMaterial(e[b]);this.world.off("beginContact",this.beginContactHandler,this),this.world.off("endContact",this.endContactHandler,this),this.postBroadphaseCallback=null,this.callbackContext=null,this.impactCallback=null,this.collisionGroups=[],this._toRemove=[],this.boundsCollidesWith=[],this.walls={left:null,right:null,top:null,bottom:null}},destroy:function(){this.clear(),this.game=null},addBody:function(a){return a.data.world?!1:(this.world.addBody(a.data),this.onBodyAdded.dispatch(a),!0)},removeBody:function(a){return a.data.world==this.world&&(this.world.removeBody(a.data),this.onBodyRemoved.dispatch(a)),a},addSpring:function(a){return a instanceof c.Physics.P2.Spring||a instanceof c.Physics.P2.RotationalSpring?this.world.addSpring(a.data):this.world.addSpring(a),this.onSpringAdded.dispatch(a),a},removeSpring:function(a){return a instanceof c.Physics.P2.Spring||a instanceof c.Physics.P2.RotationalSpring?this.world.removeSpring(a.data):this.world.removeSpring(a), +this.onSpringRemoved.dispatch(a),a},createDistanceConstraint:function(a,b,d,e,f,g){return a=this.getBody(a),b=this.getBody(b),a&&b?this.addConstraint(new c.Physics.P2.DistanceConstraint(this,a,b,d,e,f,g)):void console.warn("Cannot create Constraint, invalid body objects given")},createGearConstraint:function(a,b,d,e){return a=this.getBody(a),b=this.getBody(b),a&&b?this.addConstraint(new c.Physics.P2.GearConstraint(this,a,b,d,e)):void console.warn("Cannot create Constraint, invalid body objects given")},createRevoluteConstraint:function(a,b,d,e,f,g){return a=this.getBody(a),d=this.getBody(d),a&&d?this.addConstraint(new c.Physics.P2.RevoluteConstraint(this,a,b,d,e,f,g)):void console.warn("Cannot create Constraint, invalid body objects given")},createLockConstraint:function(a,b,d,e,f){return a=this.getBody(a),b=this.getBody(b),a&&b?this.addConstraint(new c.Physics.P2.LockConstraint(this,a,b,d,e,f)):void console.warn("Cannot create Constraint, invalid body objects given")},createPrismaticConstraint:function(a,b,d,e,f,g,h){return a=this.getBody(a),b=this.getBody(b),a&&b?this.addConstraint(new c.Physics.P2.PrismaticConstraint(this,a,b,d,e,f,g,h)):void console.warn("Cannot create Constraint, invalid body objects given")},addConstraint:function(a){return this.world.addConstraint(a),this.onConstraintAdded.dispatch(a),a},removeConstraint:function(a){return this.world.removeConstraint(a),this.onConstraintRemoved.dispatch(a),a},addContactMaterial:function(a){return this.world.addContactMaterial(a),this.onContactMaterialAdded.dispatch(a),a},removeContactMaterial:function(a){return this.world.removeContactMaterial(a),this.onContactMaterialRemoved.dispatch(a),a},getContactMaterial:function(a,b){return this.world.getContactMaterial(a,b)},setMaterial:function(a,b){for(var c=b.length;c--;)b[c].setMaterial(a)},createMaterial:function(a,b){a=a||"";var d=new c.Physics.P2.Material(a);return this.materials.push(d),"undefined"!=typeof b&&b.setMaterial(d),d},createContactMaterial:function(a,b,d){void 0===a&&(a=this.createMaterial()),void 0===b&&(b=this.createMaterial());var e=new c.Physics.P2.ContactMaterial(a,b,d);return this.addContactMaterial(e)},getBodies:function(){for(var a=[],b=this.world.bodies.length;b--;)a.push(this.world.bodies[b].parent);return a},getBody:function(a){return a instanceof p2.Body?a:a instanceof c.Physics.P2.Body?a.data:a.body&&a.body.type===c.Physics.P2JS?a.body.data:null},getSprings:function(){for(var a=[],b=this.world.springs.length;b--;)a.push(this.world.springs[b].parent);return a},getConstraints:function(){for(var a=[],b=this.world.constraints.length;b--;)a.push(this.world.constraints[b]);return a},hitTest:function(a,b,d,e){void 0===b&&(b=this.world.bodies),void 0===d&&(d=5),void 0===e&&(e=!1);for(var f=[this.pxmi(a.x),this.pxmi(a.y)],g=[],h=b.length;h--;)b[h]instanceof c.Physics.P2.Body&&(!e||b[h].data.type!==p2.Body.STATIC)?g.push(b[h].data):b[h]instanceof p2.Body&&b[h].parent&&(!e||b[h].type!==p2.Body.STATIC)?g.push(b[h]):b[h]instanceof c.Sprite&&b[h].hasOwnProperty("body")&&(!e||b[h].body.data.type!==p2.Body.STATIC)&&g.push(b[h].body.data);return this.world.hitTest(f,g,d)},toJSON:function(){return this.world.toJSON()},createCollisionGroup:function(a){var b=Math.pow(2,this._collisionGroupID);this.walls.left&&(this.walls.left.shapes[0].collisionMask=this.walls.left.shapes[0].collisionMask|b),this.walls.right&&(this.walls.right.shapes[0].collisionMask=this.walls.right.shapes[0].collisionMask|b),this.walls.top&&(this.walls.top.shapes[0].collisionMask=this.walls.top.shapes[0].collisionMask|b),this.walls.bottom&&(this.walls.bottom.shapes[0].collisionMask=this.walls.bottom.shapes[0].collisionMask|b),this._collisionGroupID++;var d=new c.Physics.P2.CollisionGroup(b);return this.collisionGroups.push(d),a&&this.setCollisionGroup(a,d),d},setCollisionGroup:function(a,b){if(a instanceof c.Group)for(var d=0;de;e++){var g=a.collision[b][e],h=this.createBody(g.x,g.y,0,c,{},g.polyline);h&&d.push(h)}return d},clearTilemapLayerBodies:function(a,b){b=a.getLayer(b);for(var c=a.layers[b].bodies.length;c--;)a.layers[b].bodies[c].destroy();a.layers[b].bodies.length=0},convertTilemap:function(a,b,c,d){b=a.getLayer(b),void 0===c&&(c=!0),void 0===d&&(d=!0),this.clearTilemapLayerBodies(a,b);for(var e=0,f=0,g=0,h=0,i=a.layers[b].height;i>h;h++){e=0;for(var j=0,k=a.layers[b].width;k>j;j++){var l=a.layers[b].data[h][j];if(l&&l.index>-1&&l.collides)if(d){var m=a.getTileRight(b,j,h);if(0===e&&(f=l.x*l.width,g=l.y*l.height,e=l.width),m&&m.collides)e+=l.width;else{var n=this.createBody(f,g,0,!1);n.addRectangle(e,l.height,e/2,l.height/2,0),c&&this.addBody(n),a.layers[b].bodies.push(n),e=0}}else{var n=this.createBody(l.x*l.width,l.y*l.height,0,!1);n.addRectangle(l.width,l.height,l.width/2,l.height/2,0),c&&this.addBody(n),a.layers[b].bodies.push(n)}}}return a.layers[b].bodies},mpx:function(a){return a*=20},pxm:function(a){return.05*a},mpxi:function(a){return a*=-20},pxmi:function(a){return a*-.05}},Object.defineProperty(c.Physics.P2.prototype,"friction",{get:function(){return this.world.defaultContactMaterial.friction},set:function(a){this.world.defaultContactMaterial.friction=a}}),Object.defineProperty(c.Physics.P2.prototype,"restitution",{get:function(){return this.world.defaultContactMaterial.restitution},set:function(a){this.world.defaultContactMaterial.restitution=a}}),Object.defineProperty(c.Physics.P2.prototype,"contactMaterial",{get:function(){return this.world.defaultContactMaterial},set:function(a){this.world.defaultContactMaterial=a}}),Object.defineProperty(c.Physics.P2.prototype,"applySpringForces",{get:function(){return this.world.applySpringForces},set:function(a){this.world.applySpringForces=a}}),Object.defineProperty(c.Physics.P2.prototype,"applyDamping",{get:function(){return this.world.applyDamping},set:function(a){this.world.applyDamping=a}}),Object.defineProperty(c.Physics.P2.prototype,"applyGravity",{get:function(){return this.world.applyGravity},set:function(a){this.world.applyGravity=a}}),Object.defineProperty(c.Physics.P2.prototype,"solveConstraints",{get:function(){return this.world.solveConstraints},set:function(a){this.world.solveConstraints=a}}),Object.defineProperty(c.Physics.P2.prototype,"time",{get:function(){return this.world.time}}),Object.defineProperty(c.Physics.P2.prototype,"emitImpactEvent",{get:function(){return this.world.emitImpactEvent},set:function(a){this.world.emitImpactEvent=a}}),Object.defineProperty(c.Physics.P2.prototype,"sleepMode",{get:function(){return this.world.sleepMode},set:function(a){this.world.sleepMode=a}}),Object.defineProperty(c.Physics.P2.prototype,"total",{get:function(){return this.world.bodies.length}}),c.Physics.P2.FixtureList=function(a){Array.isArray(a)||(a=[a]),this.rawList=a,this.init(),this.parse(this.rawList)},c.Physics.P2.FixtureList.prototype={init:function(){this.namedFixtures={},this.groupedFixtures=[],this.allFixtures=[]},setCategory:function(a,b){var c=function(b){b.collisionGroup=a};this.getFixtures(b).forEach(c)},setMask:function(a,b){var c=function(b){b.collisionMask=a};this.getFixtures(b).forEach(c)},setSensor:function(a,b){var c=function(b){b.sensor=a};this.getFixtures(b).forEach(c)},setMaterial:function(a,b){var c=function(b){b.material=a};this.getFixtures(b).forEach(c)},getFixtures:function(a){var b=[];if(a){a instanceof Array||(a=[a]);var c=this;return a.forEach(function(a){c.namedFixtures[a]&&b.push(c.namedFixtures[a])}),this.flatten(b)}return this.allFixtures},getFixtureByKey:function(a){return this.namedFixtures[a]},getGroup:function(a){return this.groupedFixtures[a]},parse:function(){var a,b,c,d;c=this.rawList,d=[];for(a in c)b=c[a],isNaN(a-0)?this.namedFixtures[a]=this.flatten(b):(this.groupedFixtures[a]=this.groupedFixtures[a]||[],this.groupedFixtures[a]=this.groupedFixtures[a].concat(b)),d.push(this.allFixtures=this.flatten(this.groupedFixtures))},flatten:function(a){var b,c;return b=[],c=arguments.callee,a.forEach(function(a){return Array.prototype.push.apply(b,Array.isArray(a)?c(a):[a])}),b}},c.Physics.P2.PointProxy=function(a,b){this.world=a,this.destination=b},c.Physics.P2.PointProxy.prototype.constructor=c.Physics.P2.PointProxy,Object.defineProperty(c.Physics.P2.PointProxy.prototype,"x",{get:function(){return this.world.mpx(this.destination[0])},set:function(a){this.destination[0]=this.world.pxm(a)}}),Object.defineProperty(c.Physics.P2.PointProxy.prototype,"y",{get:function(){return this.world.mpx(this.destination[1])},set:function(a){this.destination[1]=this.world.pxm(a)}}),Object.defineProperty(c.Physics.P2.PointProxy.prototype,"mx",{get:function(){return this.destination[0]},set:function(a){this.destination[0]=a}}),Object.defineProperty(c.Physics.P2.PointProxy.prototype,"my",{get:function(){return this.destination[1]},set:function(a){this.destination[1]=a}}),c.Physics.P2.InversePointProxy=function(a,b){this.world=a,this.destination=b},c.Physics.P2.InversePointProxy.prototype.constructor=c.Physics.P2.InversePointProxy,Object.defineProperty(c.Physics.P2.InversePointProxy.prototype,"x",{get:function(){return this.world.mpxi(this.destination[0])},set:function(a){this.destination[0]=this.world.pxmi(a)}}),Object.defineProperty(c.Physics.P2.InversePointProxy.prototype,"y",{get:function(){return this.world.mpxi(this.destination[1])},set:function(a){this.destination[1]=this.world.pxmi(a)}}),Object.defineProperty(c.Physics.P2.InversePointProxy.prototype,"mx",{get:function(){return this.destination[0]},set:function(a){this.destination[0]=-a}}),Object.defineProperty(c.Physics.P2.InversePointProxy.prototype,"my",{get:function(){return this.destination[1]},set:function(a){this.destination[1]=-a}}),c.Physics.P2.Body=function(a,b,d,e,f){b=b||null,d=d||0,e=e||0,void 0===f&&(f=1),this.game=a,this.world=a.physics.p2,this.sprite=b,this.type=c.Physics.P2JS,this.offset=new c.Point,this.data=new p2.Body({position:[this.world.pxmi(d),this.world.pxmi(e)],mass:f}),this.data.parent=this,this.velocity=new c.Physics.P2.InversePointProxy(this.world,this.data.velocity),this.force=new c.Physics.P2.InversePointProxy(this.world,this.data.force),this.gravity=new c.Point,this.onBeginContact=new c.Signal,this.onEndContact=new c.Signal,this.collidesWith=[],this.removeNextStep=!1,this.debugBody=null,this.dirty=!1,this._collideWorldBounds=!0,this._bodyCallbacks={},this._bodyCallbackContext={},this._groupCallbacks={},this._groupCallbackContext={},this._reset=!1,b&&(this.setRectangleFromSprite(b),b.exists&&this.game.physics.p2.addBody(this))},c.Physics.P2.Body.prototype={createBodyCallback:function(a,b,c){var d=-1;a.id?d=a.id:a.body&&(d=a.body.id),d>-1&&(null===b?(delete this._bodyCallbacks[d],delete this._bodyCallbackContext[d]):(this._bodyCallbacks[d]=b,this._bodyCallbackContext[d]=c))},createGroupCallback:function(a,b,c){null===b?(delete this._groupCallbacks[a.mask],delete this._groupCallbackContext[a.mask]):(this._groupCallbacks[a.mask]=b,this._groupCallbackContext[a.mask]=c)},getCollisionMask:function(){var a=0;this._collideWorldBounds&&(a=this.game.physics.p2.boundsCollisionGroup.mask);for(var b=0;b=0;c--)this.data.shapes[c].collisionMask=b;else a.collisionMask=b},setCollisionGroup:function(a,b){var c=this.getCollisionMask();if(void 0===b)for(var d=this.data.shapes.length-1;d>=0;d--)this.data.shapes[d].collisionGroup=a.mask,this.data.shapes[d].collisionMask=c;else b.collisionGroup=a.mask,b.collisionMask=c},clearCollision:function(a,b,c){if(void 0===a&&(a=!0),void 0===b&&(b=!0),void 0===c)for(var d=this.data.shapes.length-1;d>=0;d--)a&&(this.data.shapes[d].collisionGroup=null),b&&(this.data.shapes[d].collisionMask=null);else a&&(c.collisionGroup=null),b&&(c.collisionMask=null);a&&(this.collidesWith.length=0)},removeCollisionGroup:function(a,b,c){void 0===b&&(b=!0);var d;if(Array.isArray(a))for(var e=0;e-1&&(this.collidesWith.splice(d,1),b&&(delete this._groupCallbacks[a.mask],delete this._groupCallbackContext[a.mask]));else d=this.collidesWith.indexOf(a),d>-1&&(this.collidesWith.splice(d,1),b&&(delete this._groupCallbacks[a.mask],delete this._groupCallbackContext[a.mask]));var f=this.getCollisionMask();if(void 0===c)for(var e=this.data.shapes.length-1;e>=0;e--)this.data.shapes[e].collisionMask=f;else c.collisionMask=f},collides:function(a,b,c,d){if(Array.isArray(a))for(var e=0;e=0;e--)this.data.shapes[e].collisionMask=f;else d.collisionMask=f},adjustCenterOfMass:function(){this.data.adjustCenterOfMass(),this.shapeChanged()},getVelocityAtPoint:function(a,b){return this.data.getVelocityAtPoint(a,b)},applyDamping:function(a){this.data.applyDamping(a)},applyImpulse:function(a,b,c){this.data.applyImpulse(a,[this.world.pxmi(b),this.world.pxmi(c)])},applyImpulseLocal:function(a,b,c){this.data.applyImpulseLocal(a,[this.world.pxmi(b),this.world.pxmi(c)])},applyForce:function(a,b,c){this.data.applyForce(a,[this.world.pxmi(b),this.world.pxmi(c)])},setZeroForce:function(){this.data.setZeroForce()},setZeroRotation:function(){this.data.angularVelocity=0},setZeroVelocity:function(){this.data.velocity[0]=0,this.data.velocity[1]=0},setZeroDamping:function(){this.data.damping=0,this.data.angularDamping=0},toLocalFrame:function(a,b){return this.data.toLocalFrame(a,b)},toWorldFrame:function(a,b){return this.data.toWorldFrame(a,b)},rotateLeft:function(a){this.data.angularVelocity=this.world.pxm(-a)},rotateRight:function(a){this.data.angularVelocity=this.world.pxm(a)},moveForward:function(a){var b=this.world.pxmi(-a),c=this.data.angle+Math.PI/2;this.data.velocity[0]=b*Math.cos(c),this.data.velocity[1]=b*Math.sin(c)},moveBackward:function(a){var b=this.world.pxmi(-a),c=this.data.angle+Math.PI/2;this.data.velocity[0]=-(b*Math.cos(c)),this.data.velocity[1]=-(b*Math.sin(c))},thrust:function(a){var b=this.world.pxmi(-a),c=this.data.angle+Math.PI/2;this.data.force[0]+=b*Math.cos(c),this.data.force[1]+=b*Math.sin(c)},thrustLeft:function(a){var b=this.world.pxmi(-a),c=this.data.angle;this.data.force[0]+=b*Math.cos(c),this.data.force[1]+=b*Math.sin(c)},thrustRight:function(a){var b=this.world.pxmi(-a),c=this.data.angle;this.data.force[0]-=b*Math.cos(c),this.data.force[1]-=b*Math.sin(c)},reverse:function(a){var b=this.world.pxmi(-a),c=this.data.angle+Math.PI/2;this.data.force[0]-=b*Math.cos(c),this.data.force[1]-=b*Math.sin(c)},moveLeft:function(a){this.data.velocity[0]=this.world.pxmi(-a)},moveRight:function(a){this.data.velocity[0]=this.world.pxmi(a)},moveUp:function(a){this.data.velocity[1]=this.world.pxmi(-a)},moveDown:function(a){this.data.velocity[1]=this.world.pxmi(a)},preUpdate:function(){this.dirty=!0,this.removeNextStep&&(this.removeFromWorld(),this.removeNextStep=!1)},postUpdate:function(){this.sprite.x=this.world.mpxi(this.data.position[0])+this.offset.x,this.sprite.y=this.world.mpxi(this.data.position[1])+this.offset.y,this.fixedRotation||(this.sprite.rotation=this.data.angle),this.debugBody&&this.debugBody.updateSpriteTransform(),this.dirty=!1},reset:function(a,b,c,d){void 0===c&&(c=!1),void 0===d&&(d=!1),this.setZeroForce(),this.setZeroVelocity(),this.setZeroRotation(),c&&this.setZeroDamping(),d&&(this.mass=1),this.x=a,this.y=b},addToWorld:function(){if(this.game.physics.p2._toRemove)for(var a=0;ad;d+=2)c.push([b[d],b[d+1]]);var f=c.length-1;c[f][0]===c[0][0]&&c[f][1]===c[0][1]&&c.pop();for(var g=0;g=0;c--)this.data.shapes[c].material=a;else b.material=a},shapeChanged:function(){this.debugBody&&this.debugBody.draw()},addPhaserPolygon:function(a,b){for(var c=this.game.cache.getPhysicsData(a,b),d=[],e=0;e=0?o>n:n>o;e=o>=0?++n:--n)k=b.vertices[e],p2.vec2.rotate(m,k,a),l.push([(m[0]+i[0])*this.ppu,-(m[1]+i[1])*this.ppu]);this.drawConvex(j,l,b.triangles,f,c,g,this.settings.debugPolygons,[i[0]*this.ppu,-i[1]*this.ppu])}d++}}},drawRectangle:function(a,b,c,d,e,f,g,h,i){void 0===i&&(i=1),void 0===g&&(g=0),a.lineStyle(i,g,1),a.beginFill(h),a.drawRect(b-e/2,c-f/2,e,f)},drawCircle:function(a,b,c,d,e,f,g){void 0===g&&(g=1),void 0===f&&(f=16777215),a.lineStyle(g,0,1),a.beginFill(f,1),a.drawCircle(b,c,2*-e),a.endFill(),a.moveTo(b,c),a.lineTo(b+e*Math.cos(-d),c+e*Math.sin(-d))},drawLine:function(a,b,c,d){void 0===d&&(d=1),void 0===c&&(c=0),a.lineStyle(5*d,c,1),a.moveTo(-b/2,0),a.lineTo(b/2,0)},drawConvex:function(a,b,c,d,e,f,g,h){var i,j,k,l,m,n,o,p,q,r,s;if(void 0===f&&(f=1),void 0===d&&(d=0),g){for(i=[16711680,65280,255],j=0;j!==b.length+1;)l=b[j%b.length],m=b[(j+1)%b.length],o=l[0],r=l[1],p=m[0],s=m[1],a.lineStyle(f,i[j%i.length],1),a.moveTo(o,-r),a.lineTo(p,-s),a.drawCircle(o,-r,2*f),j++;return a.lineStyle(f,0,1),a.drawCircle(h[0],h[1],2*f)}for(a.lineStyle(f,d,1),a.beginFill(e),j=0;j!==b.length;)k=b[j],n=k[0],q=k[1],0===j?a.moveTo(n,-q):a.lineTo(n,-q),j++;return a.endFill(),b.length>2?(a.moveTo(b[b.length-1][0],-b[b.length-1][1]),a.lineTo(b[0][0],-b[0][1])):void 0},drawPath:function(a,b,c,d,e){var f,g,h,i,j,k,l,m,n,o,p,q,r;for(void 0===e&&(e=1),void 0===c&&(c=0),a.lineStyle(e,c,1),"number"==typeof d&&a.beginFill(d),h=null,i=null,g=0;g2&&"number"==typeof d&&(a.moveTo(b[b.length-1][0],b[b.length-1][1]),a.lineTo(b[0][0],b[0][1]))},drawPlane:function(a,b,c,d,e,f,g,h,i,j){var k,l,m;void 0===f&&(f=1),void 0===d&&(d=16777215),a.lineStyle(f,e,11),a.beginFill(d),k=i,a.moveTo(b,-c),l=b+Math.cos(j)*this.game.width,m=c+Math.sin(j)*this.game.height,a.lineTo(l,-m),a.moveTo(b,-c),l=b+Math.cos(j)*-this.game.width,m=c+Math.sin(j)*-this.game.height,a.lineTo(l,-m)},drawCapsule:function(a,b,c,d,e,f,g,h,i){void 0===i&&(i=1),void 0===g&&(g=0),a.lineStyle(i,g,1);var j=Math.cos(d),k=Math.sin(d);a.beginFill(h,1),a.drawCircle(-e/2*j+b,-e/2*k+c,2*-f),a.drawCircle(e/2*j+b,e/2*k+c,2*-f),a.endFill(),a.lineStyle(i,g,0),a.beginFill(h,1),a.moveTo(-e/2*j+f*k+b,-e/2*k+f*j+c),a.lineTo(e/2*j+f*k+b,e/2*k+f*j+c),a.lineTo(e/2*j-f*k+b,e/2*k-f*j+c),a.lineTo(-e/2*j-f*k+b,-e/2*k-f*j+c),a.endFill(),a.lineStyle(i,g,1),a.moveTo(-e/2*j+f*k+b,-e/2*k+f*j+c),a.lineTo(e/2*j+f*k+b,e/2*k+f*j+c),a.moveTo(-e/2*j-f*k+b,-e/2*k-f*j+c),a.lineTo(e/2*j-f*k+b,e/2*k-f*j+c)},randomPastelHex:function(){var a,b,c,d;return c=[255,255,255],d=Math.floor(256*Math.random()),b=Math.floor(256*Math.random()),a=Math.floor(256*Math.random()),d=Math.floor((d+3*c[0])/4),b=Math.floor((b+3*c[1])/4),a=Math.floor((a+3*c[2])/4),this.rgbToHex(d,b,a)},rgbToHex:function(a,b,c){return this.componentToHex(a)+this.componentToHex(b)+this.componentToHex(c)},componentToHex:function(a){var b;return b=a.toString(16),2===b.length?b:b+"0"}}),c.Physics.P2.Spring=function(a,b,c,d,e,f,g,h,i,j){this.game=a.game,this.world=a,void 0===d&&(d=1),void 0===e&&(e=100),void 0===f&&(f=1),d=a.pxm(d);var k={restLength:d,stiffness:e,damping:f};"undefined"!=typeof g&&null!==g&&(k.worldAnchorA=[a.pxm(g[0]),a.pxm(g[1])]),"undefined"!=typeof h&&null!==h&&(k.worldAnchorB=[a.pxm(h[0]),a.pxm(h[1])]),"undefined"!=typeof i&&null!==i&&(k.localAnchorA=[a.pxm(i[0]),a.pxm(i[1])]),"undefined"!=typeof j&&null!==j&&(k.localAnchorB=[a.pxm(j[0]),a.pxm(j[1])]),this.data=new p2.LinearSpring(b,c,k),this.data.parent=this},c.Physics.P2.Spring.prototype.constructor=c.Physics.P2.Spring,c.Physics.P2.RotationalSpring=function(a,b,c,d,e,f){this.game=a.game,this.world=a,void 0===d&&(d=null),void 0===e&&(e=100),void 0===f&&(f=1),d&&(d=a.pxm(d));var g={restAngle:d,stiffness:e,damping:f};this.data=new p2.RotationalSpring(b,c,g),this.data.parent=this},c.Physics.P2.Spring.prototype.constructor=c.Physics.P2.Spring,c.Physics.P2.Material=function(a){this.name=a,p2.Material.call(this)},c.Physics.P2.Material.prototype=Object.create(p2.Material.prototype),c.Physics.P2.Material.prototype.constructor=c.Physics.P2.Material,c.Physics.P2.ContactMaterial=function(a,b,c){p2.ContactMaterial.call(this,a,b,c)},c.Physics.P2.ContactMaterial.prototype=Object.create(p2.ContactMaterial.prototype),c.Physics.P2.ContactMaterial.prototype.constructor=c.Physics.P2.ContactMaterial,c.Physics.P2.CollisionGroup=function(a){this.mask=a},c.Physics.P2.DistanceConstraint=function(a,b,c,d,e,f,g){void 0===d&&(d=100),void 0===e&&(e=[0,0]),void 0===f&&(f=[0,0]),void 0===g&&(g=Number.MAX_VALUE),this.game=a.game,this.world=a,d=a.pxm(d),e=[a.pxmi(e[0]),a.pxmi(e[1])],f=[a.pxmi(f[0]),a.pxmi(f[1])]; +var h={distance:d,localAnchorA:e,localAnchorB:f,maxForce:g};p2.DistanceConstraint.call(this,b,c,h)},c.Physics.P2.DistanceConstraint.prototype=Object.create(p2.DistanceConstraint.prototype),c.Physics.P2.DistanceConstraint.prototype.constructor=c.Physics.P2.DistanceConstraint,c.Physics.P2.GearConstraint=function(a,b,c,d,e){void 0===d&&(d=0),void 0===e&&(e=1),this.game=a.game,this.world=a;var f={angle:d,ratio:e};p2.GearConstraint.call(this,b,c,f)},c.Physics.P2.GearConstraint.prototype=Object.create(p2.GearConstraint.prototype),c.Physics.P2.GearConstraint.prototype.constructor=c.Physics.P2.GearConstraint,c.Physics.P2.LockConstraint=function(a,b,c,d,e,f){void 0===d&&(d=[0,0]),void 0===e&&(e=0),void 0===f&&(f=Number.MAX_VALUE),this.game=a.game,this.world=a,d=[a.pxm(d[0]),a.pxm(d[1])];var g={localOffsetB:d,localAngleB:e,maxForce:f};p2.LockConstraint.call(this,b,c,g)},c.Physics.P2.LockConstraint.prototype=Object.create(p2.LockConstraint.prototype),c.Physics.P2.LockConstraint.prototype.constructor=c.Physics.P2.LockConstraint,c.Physics.P2.PrismaticConstraint=function(a,b,c,d,e,f,g,h){void 0===d&&(d=!0),void 0===e&&(e=[0,0]),void 0===f&&(f=[0,0]),void 0===g&&(g=[0,0]),void 0===h&&(h=Number.MAX_VALUE),this.game=a.game,this.world=a,e=[a.pxmi(e[0]),a.pxmi(e[1])],f=[a.pxmi(f[0]),a.pxmi(f[1])];var i={localAnchorA:e,localAnchorB:f,localAxisA:g,maxForce:h,disableRotationalLock:!d};p2.PrismaticConstraint.call(this,b,c,i)},c.Physics.P2.PrismaticConstraint.prototype=Object.create(p2.PrismaticConstraint.prototype),c.Physics.P2.PrismaticConstraint.prototype.constructor=c.Physics.P2.PrismaticConstraint,c.Physics.P2.RevoluteConstraint=function(a,b,c,d,e,f,g){void 0===f&&(f=Number.MAX_VALUE),void 0===g&&(g=null),this.game=a.game,this.world=a,c=[a.pxmi(c[0]),a.pxmi(c[1])],e=[a.pxmi(e[0]),a.pxmi(e[1])],g&&(g=[a.pxmi(g[0]),a.pxmi(g[1])]);var h={worldPivot:g,localPivotA:c,localPivotB:e,maxForce:f};p2.RevoluteConstraint.call(this,b,d,h)},c.Physics.P2.RevoluteConstraint.prototype=Object.create(p2.RevoluteConstraint.prototype),c.Physics.P2.RevoluteConstraint.prototype.constructor=c.Physics.P2.RevoluteConstraint,c.ImageCollection=function(a,b,c,d,e,f,g){(void 0===c||0>=c)&&(c=32),(void 0===d||0>=d)&&(d=32),void 0===e&&(e=0),void 0===f&&(f=0),this.name=a,this.firstgid=0|b,this.imageWidth=0|c,this.imageHeight=0|d,this.imageMargin=0|e,this.imageSpacing=0|f,this.properties=g||{},this.images=[],this.total=0},c.ImageCollection.prototype={containsImageIndex:function(a){return a>=this.firstgid&&athis.right||b>this.bottom)},intersects:function(a,b,c,d){return c<=this.worldX?!1:d<=this.worldY?!1:a>=this.worldX+this.width?!1:!(b>=this.worldY+this.height)},setCollisionCallback:function(a,b){this.collisionCallback=a,this.collisionCallbackContext=b},destroy:function(){this.collisionCallback=null,this.collisionCallbackContext=null,this.properties=null},setCollision:function(a,b,c,d){this.collideLeft=a,this.collideRight=b,this.collideUp=c,this.collideDown=d,this.faceLeft=a,this.faceRight=b,this.faceTop=c,this.faceBottom=d},resetCollision:function(){this.collideLeft=!1,this.collideRight=!1,this.collideUp=!1,this.collideDown=!1,this.faceTop=!1,this.faceBottom=!1,this.faceLeft=!1,this.faceRight=!1},isInteresting:function(a,b){return a&&b?this.collideLeft||this.collideRight||this.collideUp||this.collideDown||this.faceTop||this.faceBottom||this.faceLeft||this.faceRight||this.collisionCallback:a?this.collideLeft||this.collideRight||this.collideUp||this.collideDown:b?this.faceTop||this.faceBottom||this.faceLeft||this.faceRight:!1},copy:function(a){this.index=a.index,this.alpha=a.alpha,this.properties=a.properties,this.collideUp=a.collideUp,this.collideDown=a.collideDown,this.collideLeft=a.collideLeft,this.collideRight=a.collideRight,this.collisionCallback=a.collisionCallback,this.collisionCallbackContext=a.collisionCallbackContext}},c.Tile.prototype.constructor=c.Tile,Object.defineProperty(c.Tile.prototype,"collides",{get:function(){return this.collideLeft||this.collideRight||this.collideUp||this.collideDown}}),Object.defineProperty(c.Tile.prototype,"canCollide",{get:function(){return this.collideLeft||this.collideRight||this.collideUp||this.collideDown||this.collisionCallback}}),Object.defineProperty(c.Tile.prototype,"left",{get:function(){return this.worldX}}),Object.defineProperty(c.Tile.prototype,"right",{get:function(){return this.worldX+this.width}}),Object.defineProperty(c.Tile.prototype,"top",{get:function(){return this.worldY}}),Object.defineProperty(c.Tile.prototype,"bottom",{get:function(){return this.worldY+this.height}}),c.Tilemap=function(a,b,d,e,f,g){this.game=a,this.key=b;var h=c.TilemapParser.parse(this.game,b,d,e,f,g);null!==h&&(this.width=h.width,this.height=h.height,this.tileWidth=h.tileWidth,this.tileHeight=h.tileHeight,this.orientation=h.orientation,this.format=h.format,this.version=h.version,this.properties=h.properties,this.widthInPixels=h.widthInPixels,this.heightInPixels=h.heightInPixels,this.layers=h.layers,this.tilesets=h.tilesets,this.imagecollections=h.imagecollections,this.tiles=h.tiles,this.objects=h.objects,this.collideIndexes=[],this.collision=h.collision,this.images=h.images,this.currentLayer=0,this.debugMap=[],this._results=[],this._tempA=0,this._tempB=0)},c.Tilemap.CSV=0,c.Tilemap.TILED_JSON=1,c.Tilemap.NORTH=0,c.Tilemap.EAST=1,c.Tilemap.SOUTH=2,c.Tilemap.WEST=3,c.Tilemap.prototype={create:function(a,b,c,d,e,f){return void 0===f&&(f=this.game.world),this.width=b,this.height=c,this.setTileSize(d,e),this.layers.length=0,this.createBlankLayer(a,b,c,d,e,f)},setTileSize:function(a,b){this.tileWidth=a,this.tileHeight=b,this.widthInPixels=this.width*a,this.heightInPixels=this.height*b},addTilesetImage:function(a,b,d,e,f,g,h){if(void 0===a)return null;void 0===d&&(d=this.tileWidth),void 0===e&&(e=this.tileHeight),void 0===f&&(f=0),void 0===g&&(g=0),void 0===h&&(h=0),0===d&&(d=32),0===e&&(e=32);var i=null;if(void 0!==b&&null!==b||(b=a),b instanceof c.BitmapData)i=b.canvas;else{if(!this.game.cache.checkImageKey(b))return console.warn('Phaser.Tilemap.addTilesetImage: Invalid image key given: "'+b+'"'),null;i=this.game.cache.getImage(b)}var j=this.getTilesetIndex(a);if(null===j&&this.format===c.Tilemap.TILED_JSON)return console.warn('Phaser.Tilemap.addTilesetImage: No data found in the JSON matching the tileset name: "'+a+'"'),null;if(this.tilesets[j])return this.tilesets[j].setImage(i),this.tilesets[j];var k=new c.Tileset(a,h,d,e,f,g,{});k.setImage(i),this.tilesets.push(k);for(var l=this.tilesets.length-1,m=f,n=f,o=0,p=0,q=0,r=h;rl;l++)if(-1!==a.indexOf(this._results[l].index)){j=new g.customClass(this.game,this._results[l].worldX,this._results[l].worldY,d);for(var n in g)j[n]=g[n];f.add(j),k++}if(1===b.length)for(l=0;l1)for(l=0;lthis.layers.length?void console.warn("Tilemap.createLayer: Invalid layer ID given: "+g):f?e.add(new c.TilemapLayerGL(this.game,this,g,b,d)):e.add(new c.TilemapLayer(this.game,this,g,b,d))},createBlankLayer:function(a,b,d,e,f,g){if(void 0===g&&(g=this.game.world),null!==this.getLayerIndex(a))return void console.warn("Tilemap.createBlankLayer: Layer with matching name already exists");for(var h,i={name:a,x:0,y:0,width:b,height:d,widthInPixels:b*e,heightInPixels:d*f,alpha:1,visible:!0,properties:{},indexes:[],callbacks:[],bodies:[],data:null},j=[],k=0;d>k;k++){h=[];for(var l=0;b>l;l++)h.push(new c.Tile(i,-1,l,k,e,f));j.push(h)}i.data=j,this.layers.push(i),this.currentLayer=this.layers.length-1;var m=i.widthInPixels,n=i.heightInPixels;m>this.game.width&&(m=this.game.width),n>this.game.height&&(n=this.game.height);var j=new c.TilemapLayer(this.game,this,this.layers.length-1,m,n);return j.name=a,g.add(j)},getIndex:function(a,b){for(var c=0;ce;e++)this.layers[d].callbacks[a[e]]={callback:b,callbackContext:c}},setTileLocationCallback:function(a,b,c,d,e,f,g){if(g=this.getLayer(g),this.copy(a,b,c,d,g),!(this._results.length<2))for(var h=1;hb)){for(var f=a;b>=f;f++)this.setCollisionByIndex(f,c,d,!1);e&&this.calculateFaces(d)}},setCollisionByExclusion:function(a,b,c,d){void 0===b&&(b=!0),void 0===d&&(d=!0),c=this.getLayer(c);for(var e=0,f=this.tiles.length;f>e;e++)-1===a.indexOf(e)&&this.setCollisionByIndex(e,b,c,!1);d&&this.calculateFaces(c)},setCollisionByIndex:function(a,b,c,d){if(void 0===b&&(b=!0),void 0===c&&(c=this.currentLayer),void 0===d&&(d=!0),b)this.collideIndexes.push(a);else{var e=this.collideIndexes.indexOf(a);e>-1&&this.collideIndexes.splice(e,1)}for(var f=0;ff;f++)for(var h=0,i=this.layers[a].width;i>h;h++){var j=this.layers[a].data[f][h];j&&(b=this.getTileAbove(a,h,f),c=this.getTileBelow(a,h,f),d=this.getTileLeft(a,h,f),e=this.getTileRight(a,h,f),j.collides&&(j.faceTop=!0,j.faceBottom=!0,j.faceLeft=!0,j.faceRight=!0),b&&b.collides&&(j.faceTop=!1),c&&c.collides&&(j.faceBottom=!1),d&&d.collides&&(j.faceLeft=!1),e&&e.collides&&(j.faceRight=!1))}},getTileAbove:function(a,b,c){return c>0?this.layers[a].data[c-1][b]:null},getTileBelow:function(a,b,c){return c0?this.layers[a].data[c][b-1]:null},getTileRight:function(a,b,c){return b-1},removeTile:function(a,b,d){if(d=this.getLayer(d),a>=0&&a=0&&b=0&&b=0&&d-1?this.layers[e].data[d][b].setCollision(!0,!0,!0,!0):this.layers[e].data[d][b].resetCollision(),this.layers[e].dirty=!0,this.calculateFaces(e),this.layers[e].data[d][b]}return null},putTileWorldXY:function(a,b,c,d,e,f){return f=this.getLayer(f),b=this.game.math.snapToFloor(b,d)/d,c=this.game.math.snapToFloor(c,e)/e,this.putTile(a,b,c,f)},searchTileIndex:function(a,b,c,d){void 0===b&&(b=0),void 0===c&&(c=!1),d=this.getLayer(d);var e=0;if(c){for(var f=this.layers[d].height-1;f>=0;f--)for(var g=this.layers[d].width-1;g>=0;g--)if(this.layers[d].data[f][g].index===a){if(e===b)return this.layers[d].data[f][g];e++}}else for(var f=0;f=0&&a=0&&ba&&(a=0),0>b&&(b=0),c>this.layers[e].width&&(c=this.layers[e].width),d>this.layers[e].height&&(d=this.layers[e].height),this._results.length=0,this._results.push({x:a,y:b,width:c,height:d,layer:e});for(var f=b;b+d>f;f++)for(var g=a;a+c>g;g++)this._results.push(this.layers[e].data[f][g]);return this._results},paste:function(a,b,c,d){if(void 0===a&&(a=0),void 0===b&&(b=0),d=this.getLayer(d),c&&!(c.length<2)){for(var e=a-c[1].x,f=b-c[1].y,g=1;g1?this.debugMap[this.layers[this.currentLayer].data[c][d]]?b.push("background: "+this.debugMap[this.layers[this.currentLayer].data[c][d]]):b.push("background: #ffffff"):b.push("background: rgb(0, 0, 0)");a+="\n"}b[0]=a,console.log.apply(console,b)},destroy:function(){this.removeAllLayers(),this.data=[],this.game=null}},c.Tilemap.prototype.constructor=c.Tilemap,Object.defineProperty(c.Tilemap.prototype,"layer",{get:function(){return this.layers[this.currentLayer]},set:function(a){a!==this.currentLayer&&this.setLayer(a)}}),c.TilemapLayer=function(a,b,d,e,f){e|=0,f|=0,c.Sprite.call(this,a,0,0),this.map=b,this.index=d,this.layer=b.layers[d],this.canvas=PIXI.CanvasPool.create(this,e,f),this.context=this.canvas.getContext("2d"),this.setTexture(new PIXI.Texture(new PIXI.BaseTexture(this.canvas))),this.type=c.TILEMAPLAYER,this.physicsType=c.TILEMAPLAYER,this.renderSettings={enableScrollDelta:!1,overdrawRatio:.2,copyCanvas:null},this.debug=!1,this.exists=!0,this.debugSettings={missingImageFill:"rgb(255,255,255)",debuggedTileOverfill:"rgba(0,255,0,0.4)",forceFullRedraw:!0,debugAlpha:.5,facingEdgeStroke:"rgba(0,255,0,1)",collidingTileOverfill:"rgba(0,255,0,0.2)"},this.scrollFactorX=1,this.scrollFactorY=1,this.dirty=!0,this.rayStepRate=4,this._wrap=!1,this._mc={scrollX:0,scrollY:0,renderWidth:0,renderHeight:0,tileWidth:b.tileWidth,tileHeight:b.tileHeight,cw:b.tileWidth,ch:b.tileHeight,tilesets:[]},this._scrollX=0,this._scrollY=0,this._results=[],a.device.canvasBitBltShift||(this.renderSettings.copyCanvas=c.TilemapLayer.ensureSharedCopyCanvas()),this.fixedToCamera=!0},c.TilemapLayer.prototype=Object.create(c.Sprite.prototype),c.TilemapLayer.prototype.constructor=c.TilemapLayer,c.TilemapLayer.prototype.preUpdateCore=c.Component.Core.preUpdate,c.TilemapLayer.sharedCopyCanvas=null,c.TilemapLayer.ensureSharedCopyCanvas=function(){return this.sharedCopyCanvas||(this.sharedCopyCanvas=c.Canvas.create(2,2)),this.sharedCopyCanvas},c.TilemapLayer.prototype.preUpdate=function(){return this.preUpdateCore()},c.TilemapLayer.prototype.postUpdate=function(){this.fixedToCamera&&(this.position.x=(this.game.camera.view.x+this.cameraOffset.x)/this.game.camera.scale.x,this.position.y=(this.game.camera.view.y+this.cameraOffset.y)/this.game.camera.scale.y),this._scrollX=this.game.camera.view.x*this.scrollFactorX/this.scale.x,this._scrollY=this.game.camera.view.y*this.scrollFactorY/this.scale.y},c.TilemapLayer.prototype._renderCanvas=function(a){this.fixedToCamera&&(this.position.x=(this.game.camera.view.x+this.cameraOffset.x)/this.game.camera.scale.x,this.position.y=(this.game.camera.view.y+this.cameraOffset.y)/this.game.camera.scale.y),this._scrollX=this.game.camera.view.x*this.scrollFactorX/this.scale.x,this._scrollY=this.game.camera.view.y*this.scrollFactorY/this.scale.y,this.render(),PIXI.Sprite.prototype._renderCanvas.call(this,a)},c.TilemapLayer.prototype._renderWebGL=function(a){this.fixedToCamera&&(this.position.x=(this.game.camera.view.x+this.cameraOffset.x)/this.game.camera.scale.x,this.position.y=(this.game.camera.view.y+this.cameraOffset.y)/this.game.camera.scale.y),this._scrollX=this.game.camera.view.x*this.scrollFactorX/this.scale.x,this._scrollY=this.game.camera.view.y*this.scrollFactorY/this.scale.y,this.render(),PIXI.Sprite.prototype._renderWebGL.call(this,a)},c.TilemapLayer.prototype.destroy=function(){PIXI.CanvasPool.remove(this),c.Component.Destroy.prototype.destroy.call(this)},c.TilemapLayer.prototype.resize=function(a,b){this.canvas.width=a,this.canvas.height=b,this.texture.frame.resize(a,b),this.texture.width=a,this.texture.height=b,this.texture.crop.width=a,this.texture.crop.height=b,this.texture.baseTexture.width=a,this.texture.baseTexture.height=b,this.texture.baseTexture.dirty(),this.texture.requiresUpdate=!0,this.texture._updateUvs(),this.dirty=!0},c.TilemapLayer.prototype.resizeWorld=function(){this.game.world.setBounds(0,0,this.layer.widthInPixels*this.scale.x,this.layer.heightInPixels*this.scale.y)},c.TilemapLayer.prototype._fixX=function(a){return 1===this.scrollFactorX||0===this.scrollFactorX&&0===this.position.x?a:0===this.scrollFactorX&&0!==this.position.x?a-this.position.x:this._scrollX+(a-this._scrollX/this.scrollFactorX)},c.TilemapLayer.prototype._unfixX=function(a){return 1===this.scrollFactorX?a:this._scrollX/this.scrollFactorX+(a-this._scrollX)},c.TilemapLayer.prototype._fixY=function(a){return 1===this.scrollFactorY||0===this.scrollFactorY&&0===this.position.y?a:0===this.scrollFactorY&&0!==this.position.y?a-this.position.y:this._scrollY+(a-this._scrollY/this.scrollFactorY)},c.TilemapLayer.prototype._unfixY=function(a){return 1===this.scrollFactorY?a:this._scrollY/this.scrollFactorY+(a-this._scrollY)},c.TilemapLayer.prototype.getTileX=function(a){return Math.floor(this._fixX(a)/this._mc.tileWidth)},c.TilemapLayer.prototype.getTileY=function(a){return Math.floor(this._fixY(a)/this._mc.tileHeight)},c.TilemapLayer.prototype.getTileXY=function(a,b,c){return c.x=this.getTileX(a),c.y=this.getTileY(b),c},c.TilemapLayer.prototype.getRayCastTiles=function(a,b,c,d){b||(b=this.rayStepRate),void 0===c&&(c=!1),void 0===d&&(d=!1);var e=this.getTiles(a.x,a.y,a.width,a.height,c,d);if(0===e.length)return[];for(var f=a.coordinatesOnLine(b),g=[],h=0;hl;l++)for(var m=h;h+j>m;m++){var n=this.layer.data[l];n&&n[m]&&(g||n[m].isInteresting(e,f))&&this._results.push(n[m])}return this._results.slice()},c.TilemapLayer.prototype.resolveTileset=function(a){var b=this._mc.tilesets;if(2e3>a)for(;b.lengthb&&(g=-b,i=0),0>c&&(h=-c,j=0);var k=this.renderSettings.copyCanvas;if(k){(k.width=c&&(c=Math.max(0,c),e=Math.min(h-1,e)),f>=d&&(d=Math.max(0,d),f=Math.min(i-1,f)));var n,o,p,q,r,s,t=c*j-a,u=d*k-b,v=(c+(1<<20)*h)%h,w=(d+(1<<20)*i)%i;for(q=w,s=f-d,o=u;s>=0;q++,s--,o+=k){q>=i&&(q-=i);var x=this.layer.data[q];for(p=v,r=e-c,n=t;r>=0;p++,r--,n+=j){p>=h&&(p-=h);var y=x[p];if(y&&!(y.index<0)){var z=y.index,A=l[z];void 0===A&&(A=this.resolveTileset(z)),y.alpha===m||this.debug||(g.globalAlpha=y.alpha,m=y.alpha),A?y.rotation||y.flipped?(g.save(),g.translate(n+y.centerX,o+y.centerY),g.rotate(y.rotation),y.flipped&&g.scale(-1,1),A.draw(g,-y.centerX,-y.centerY,z),g.restore()):A.draw(g,n,o,z):this.debugSettings.missingImageFill&&(g.fillStyle=this.debugSettings.missingImageFill,g.fillRect(n,o,j,k)),y.debug&&this.debugSettings.debuggedTileOverfill&&(g.fillStyle=this.debugSettings.debuggedTileOverfill,g.fillRect(n,o,j,k))}}}},c.TilemapLayer.prototype.renderDeltaScroll=function(a,b){var c=this._mc.scrollX,d=this._mc.scrollY,e=this.canvas.width,f=this.canvas.height,g=this._mc.tileWidth,h=this._mc.tileHeight,i=0,j=-g,k=0,l=-h;if(0>a?(i=e+a,j=e-1):a>0&&(j=a),0>b?(k=f+b,l=f-1):b>0&&(l=b),this.shiftCanvas(this.context,a,b),i=Math.floor((i+c)/g),j=Math.floor((j+c)/g),k=Math.floor((k+d)/h),l=Math.floor((l+d)/h),j>=i){this.context.clearRect(i*g-c,0,(j-i+1)*g,f);var m=Math.floor((0+d)/h),n=Math.floor((f-1+d)/h);this.renderRegion(c,d,i,m,j,n)}if(l>=k){this.context.clearRect(0,k*h-d,e,(l-k+1)*h);var o=Math.floor((0+c)/g),p=Math.floor((e-1+c)/g);this.renderRegion(c,d,o,k,p,l)}},c.TilemapLayer.prototype.renderFull=function(){var a=this._mc.scrollX,b=this._mc.scrollY,c=this.canvas.width,d=this.canvas.height,e=this._mc.tileWidth,f=this._mc.tileHeight,g=Math.floor(a/e),h=Math.floor((c-1+a)/e),i=Math.floor(b/f),j=Math.floor((d-1+b)/f);this.context.clearRect(0,0,c,d),this.renderRegion(a,b,g,i,h,j)},c.TilemapLayer.prototype.render=function(){var a=!1;if(this.visible){(this.dirty||this.layer.dirty)&&(this.layer.dirty=!1,a=!0);var b=this.canvas.width,c=this.canvas.height,d=0|this._scrollX,e=0|this._scrollY,f=this._mc,g=f.scrollX-d,h=f.scrollY-e;if(a||0!==g||0!==h||f.renderWidth!==b||f.renderHeight!==c)return this.context.save(),f.scrollX=d,f.scrollY=e,f.renderWidth===b&&f.renderHeight===c||(f.renderWidth=b,f.renderHeight=c),this.debug&&(this.context.globalAlpha=this.debugSettings.debugAlpha,this.debugSettings.forceFullRedraw&&(a=!0)),!a&&this.renderSettings.enableScrollDelta&&Math.abs(g)+Math.abs(h)=0;d++,f--,b+=o){d>=m&&(d-=m);var x=this.layer.data[d];for(c=v,e=q-p,a=t;e>=0;c++,e--,a+=n){c>=l&&(c-=l);var y=x[c];!y||y.index<0||!y.collides||(this.debugSettings.collidingTileOverfill&&(i.fillStyle=this.debugSettings.collidingTileOverfill,i.fillRect(a,b,this._mc.cw,this._mc.ch)),this.debugSettings.facingEdgeStroke&&(i.beginPath(),y.faceTop&&(i.moveTo(a,b),i.lineTo(a+this._mc.cw,b)),y.faceBottom&&(i.moveTo(a,b+this._mc.ch),i.lineTo(a+this._mc.cw,b+this._mc.ch)),y.faceLeft&&(i.moveTo(a,b),i.lineTo(a,b+this._mc.ch)),y.faceRight&&(i.moveTo(a+this._mc.cw,b),i.lineTo(a+this._mc.cw,b+this._mc.ch)),i.stroke()))}}},Object.defineProperty(c.TilemapLayer.prototype,"wrap",{get:function(){return this._wrap},set:function(a){this._wrap=a,this.dirty=!0}}),Object.defineProperty(c.TilemapLayer.prototype,"scrollX",{get:function(){return this._scrollX},set:function(a){this._scrollX=a}}),Object.defineProperty(c.TilemapLayer.prototype,"scrollY",{get:function(){return this._scrollY},set:function(a){this._scrollY=a}}),Object.defineProperty(c.TilemapLayer.prototype,"collisionWidth",{get:function(){return this._mc.cw},set:function(a){this._mc.cw=0|a,this.dirty=!0}}),Object.defineProperty(c.TilemapLayer.prototype,"collisionHeight",{get:function(){return this._mc.ch},set:function(a){this._mc.ch=0|a,this.dirty=!0}}),c.TilemapParser={INSERT_NULL:!1,FLIPPED_HORIZONTALLY_FLAG:2147483648,FLIPPED_VERTICALLY_FLAG:1073741824,FLIPPED_DIAGONALLY_FLAG:536870912,parse:function(a,b,d,e,f,g){if(void 0===d&&(d=32),void 0===e&&(e=32),void 0===f&&(f=10),void 0===g&&(g=10),void 0===b)return this.getEmptyData();if(null===b)return this.getEmptyData(d,e,f,g);var h=a.cache.getTilemapData(b);if(h){if(h.format===c.Tilemap.CSV)return this.parseCSV(b,h.data,d,e);if(!h.format||h.format===c.Tilemap.TILED_JSON)return this.parseTiledJSON(h.data)}else console.warn("Phaser.TilemapParser.parse - No map data found for key "+b)},parseCSV:function(a,b,d,e){var f=this.getEmptyData();b=b.trim();for(var g=[],h=b.split("\n"),i=h.length,j=0,k=0;kk;k+=4)j[k/4]=(h.charCodeAt(k)|h.charCodeAt(k+1)<<8|h.charCodeAt(k+2)<<16|h.charCodeAt(k+3)<<24)>>>0;g.data=j,delete g.encoding}else if(g.compression){console.warn("TilemapParser.parseTiledJSON - Layer compression is unsupported, skipping layer '"+g.name+"'");continue}var l={name:g.name,x:g.x,y:g.y,width:g.width,height:g.height,widthInPixels:g.width*a.tilewidth,heightInPixels:g.height*a.tileheight,alpha:g.opacity,visible:g.visible,properties:{},indexes:[],callbacks:[],bodies:[]};g.properties&&(l.properties=g.properties);for(var m,n,o,p,q=0,r=[],s=[],t=0,i=g.data.length;i>t;t++){if(m=0,n=!1,p=g.data[t],p>536870912)switch(o=0,p>2147483648&&(p-=2147483648,o+=4),p>1073741824&&(p-=1073741824,o+=2),p>536870912&&(p-=536870912,o+=1),o){case 5:m=Math.PI/2;break;case 6:m=Math.PI;break;case 3:m=3*Math.PI/2;break;case 4:m=0,n=!0;break;case 7:m=Math.PI/2,n=!0;break;case 2:m=Math.PI,n=!0;break;case 1:m=3*Math.PI/2,n=!0}p>0?(r.push(new c.Tile(l,p,q,s.length,a.tilewidth,a.tileheight)),r[r.length-1].rotation=m,r[r.length-1].flipped=n):c.TilemapParser.INSERT_NULL?r.push(null):r.push(new c.Tile(l,-1,q,s.length,a.tilewidth,a.tileheight)),q++,q===g.width&&(s.push(r),q=0,r=[])}l.data=s,e.push(l)}d.layers=e;for(var u=[],f=0;fG;G++)if(F.objects[G].gid){var H=this,I={gid:F.objects[G].gid,name:F.objects[G].name,type:F.objects[G].hasOwnProperty("type")?F.objects[G].type:"",x:F.objects[G].x,y:F.objects[G].y,width:F.objects[G].width,height:F.objects[G].height,visible:F.objects[G].visible,properties:F.objects[G].properties,horizontallyFlipped:F.objects[G].gid&H.FLIPPED_HORIZONTALLY_FLAG,verticallyFlipped:F.objects[G].gid&H.FLIPPED_VERTICALLY_FLAG,diagonallyFlipped:F.objects[G].gid&H.FLIPPED_DIAGONALLY_FLAG};F.objects[G].rotation&&(I.rotation=F.objects[G].rotation),D[F.name].push(I)}else if(F.objects[G].polyline){var I={name:F.objects[G].name,type:F.objects[G].type,x:F.objects[G].x,y:F.objects[G].y,width:F.objects[G].width,height:F.objects[G].height,visible:F.objects[G].visible,properties:F.objects[G].properties};F.objects[G].rotation&&(I.rotation=F.objects[G].rotation),I.polyline=[];for(var J=0;J=c)&&(c=32),(void 0===d||0>=d)&&(d=32),void 0===e&&(e=0),void 0===f&&(f=0),this.name=a,this.firstgid=0|b,this.tileWidth=0|c,this.tileHeight=0|d,this.tileMargin=0|e,this.tileSpacing=0|f,this.properties=g||{},this.image=null,this.rows=0,this.columns=0,this.total=0,this.drawCoords=[]},c.Tileset.prototype={draw:function(a,b,c,d){var e=d-this.firstgid<<1;e>=0&&e+1=this.firstgid&&a=this._timer)if(this._timer=this.game.time.time+this.frequency*this.game.time.slowMotion,0!==this._flowTotal)if(this._flowQuantity>0){for(var a=0;a=this._flowTotal)){this.on=!1;break}}else this.emitParticle()&&(this._counter++,-1!==this._flowTotal&&this._counter>=this._flowTotal&&(this.on=!1));else this.emitParticle()&&(this._counter++,this._quantity>0&&this._counter>=this._quantity&&(this.on=!1));for(var a=this.children.length;a--;)this.children[a].exists&&this.children[a].update()},c.Particles.Arcade.Emitter.prototype.makeParticles=function(a,b,c,d,e){void 0===b&&(b=0),void 0===c&&(c=this.maxParticles),void 0===d&&(d=!1),void 0===e&&(e=!1);var f,g=0,h=a,i=b;for(this._frames=b,c>this.maxParticles&&(this.maxParticles=c);c>g;)Array.isArray(a)&&(h=this.game.rnd.pick(a)),Array.isArray(b)&&(i=this.game.rnd.pick(b)),f=new this.particleClass(this.game,0,0,h,i),this.game.physics.arcade.enable(f,!1),d?(f.body.checkCollision.any=!0,f.body.checkCollision.none=!1):f.body.checkCollision.none=!0,f.body.collideWorldBounds=e,f.body.skipQuadTree=!0,f.exists=!1,f.visible=!1,f.anchor.copyFrom(this.particleAnchor),this.add(f),g++;return this},c.Particles.Arcade.Emitter.prototype.kill=function(){return this.on=!1,this.alive=!1,this.exists=!1,this},c.Particles.Arcade.Emitter.prototype.revive=function(){return this.alive=!0,this.exists=!0,this},c.Particles.Arcade.Emitter.prototype.explode=function(a,b){return this._flowTotal=0,this.start(!0,a,0,b,!1),this},c.Particles.Arcade.Emitter.prototype.flow=function(a,b,c,d,e){return void 0!==c&&0!==c||(c=1),void 0===d&&(d=-1),void 0===e&&(e=!0),c>this.maxParticles&&(c=this.maxParticles),this._counter=0,this._flowQuantity=c,this._flowTotal=d,e?(this.start(!0,a,b,c),this._counter+=c,this.on=!0,this._timer=this.game.time.time+b*this.game.time.slowMotion):this.start(!1,a,b,c),this},c.Particles.Arcade.Emitter.prototype.start=function(a,b,c,d,e){if(void 0===a&&(a=!0),void 0===b&&(b=0),void 0!==c&&null!==c||(c=250),void 0===d&&(d=0),void 0===e&&(e=!1),d>this.maxParticles&&(d=this.maxParticles),this.revive(),this.visible=!0,this.lifespan=b,this.frequency=c,a||e)for(var f=0;d>f;f++)this.emitParticle();else this.on=!0,this._quantity=d,this._counter=0,this._timer=this.game.time.time+c*this.game.time.slowMotion;return this},c.Particles.Arcade.Emitter.prototype.emitParticle=function(a,b,c,d){void 0===a&&(a=null),void 0===b&&(b=null);var e=this.getFirstExists(!1);if(null===e)return!1;var f=this.game.rnd;void 0!==c&&void 0!==d?e.loadTexture(c,d):void 0!==c&&e.loadTexture(c);var g=this.emitX,h=this.emitY;null!==a?g=a:this.width>1&&(g=f.between(this.left,this.right)),null!==b?h=b:this.height>1&&(h=f.between(this.top,this.bottom)),e.reset(g,h),e.angle=0,e.lifespan=this.lifespan,this.particleBringToTop?this.bringToTop(e):this.particleSendToBack&&this.sendToBack(e),this.autoScale?e.setScaleData(this.scaleData):1!==this.minParticleScale||1!==this.maxParticleScale?e.scale.set(f.realInRange(this.minParticleScale,this.maxParticleScale)):this._minParticleScale.x===this._maxParticleScale.x&&this._minParticleScale.y===this._maxParticleScale.y||e.scale.set(f.realInRange(this._minParticleScale.x,this._maxParticleScale.x),f.realInRange(this._minParticleScale.y,this._maxParticleScale.y)),void 0===d&&(Array.isArray(this._frames)?e.frame=this.game.rnd.pick(this._frames):e.frame=this._frames),this.autoAlpha?e.setAlphaData(this.alphaData):e.alpha=f.realInRange(this.minParticleAlpha,this.maxParticleAlpha),e.blendMode=this.blendMode;var i=e.body;return i.updateBounds(),i.bounce.copyFrom(this.bounce),i.drag.copyFrom(this.particleDrag),i.velocity.x=f.between(this.minParticleSpeed.x,this.maxParticleSpeed.x),i.velocity.y=f.between(this.minParticleSpeed.y,this.maxParticleSpeed.y),i.angularVelocity=f.between(this.minRotation,this.maxRotation),i.gravity.y=this.gravity,i.angularDrag=this.angularDrag,e.onEmit(),!0},c.Particles.Arcade.Emitter.prototype.destroy=function(){this.game.particles.remove(this),c.Group.prototype.destroy.call(this,!0,!1)},c.Particles.Arcade.Emitter.prototype.setSize=function(a,b){return this.area.width=a,this.area.height=b,this},c.Particles.Arcade.Emitter.prototype.setXSpeed=function(a,b){return a=a||0,b=b||0,this.minParticleSpeed.x=a,this.maxParticleSpeed.x=b,this},c.Particles.Arcade.Emitter.prototype.setYSpeed=function(a,b){return a=a||0,b=b||0,this.minParticleSpeed.y=a,this.maxParticleSpeed.y=b,this},c.Particles.Arcade.Emitter.prototype.setRotation=function(a,b){return a=a||0,b=b||0,this.minRotation=a,this.maxRotation=b,this},c.Particles.Arcade.Emitter.prototype.setAlpha=function(a,b,d,e,f){if(void 0===a&&(a=1),void 0===b&&(b=1),void 0===d&&(d=0),void 0===e&&(e=c.Easing.Linear.None),void 0===f&&(f=!1),this.minParticleAlpha=a,this.maxParticleAlpha=b,this.autoAlpha=!1,d>0&&a!==b){var g={v:a},h=this.game.make.tween(g).to({v:b},d,e);h.yoyo(f),this.alphaData=h.generateData(60),this.alphaData.reverse(),this.autoAlpha=!0}return this},c.Particles.Arcade.Emitter.prototype.setScale=function(a,b,d,e,f,g,h){if(void 0===a&&(a=1),void 0===b&&(b=1),void 0===d&&(d=1),void 0===e&&(e=1),void 0===f&&(f=0),void 0===g&&(g=c.Easing.Linear.None),void 0===h&&(h=!1),this.minParticleScale=1,this.maxParticleScale=1,this._minParticleScale.set(a,d),this._maxParticleScale.set(b,e),this.autoScale=!1,f>0&&(a!==b||d!==e)){var i={x:a,y:d},j=this.game.make.tween(i).to({x:b,y:e},f,g);j.yoyo(h),this.scaleData=j.generateData(60),this.scaleData.reverse(),this.autoScale=!0}return this},c.Particles.Arcade.Emitter.prototype.at=function(a){return a.center?(this.emitX=a.center.x,this.emitY=a.center.y):(this.emitX=a.world.x+a.anchor.x*a.width,this.emitY=a.world.y+a.anchor.y*a.height),this},Object.defineProperty(c.Particles.Arcade.Emitter.prototype,"width",{get:function(){return this.area.width},set:function(a){this.area.width=a}}),Object.defineProperty(c.Particles.Arcade.Emitter.prototype,"height",{get:function(){return this.area.height},set:function(a){this.area.height=a}}),Object.defineProperty(c.Particles.Arcade.Emitter.prototype,"x",{get:function(){return this.emitX},set:function(a){this.emitX=a}}),Object.defineProperty(c.Particles.Arcade.Emitter.prototype,"y",{get:function(){return this.emitY},set:function(a){this.emitY=a}}),Object.defineProperty(c.Particles.Arcade.Emitter.prototype,"left",{get:function(){return Math.floor(this.x-this.area.width/2)}}),Object.defineProperty(c.Particles.Arcade.Emitter.prototype,"right",{get:function(){return Math.floor(this.x+this.area.width/2)}}),Object.defineProperty(c.Particles.Arcade.Emitter.prototype,"top",{get:function(){return Math.floor(this.y-this.area.height/2)}}),Object.defineProperty(c.Particles.Arcade.Emitter.prototype,"bottom",{get:function(){return Math.floor(this.y+this.area.height/2)}}),c.Weapon=function(a,b){c.Plugin.call(this,a,b),this.bullets=null,this.autoExpandBulletsGroup=!1,this.autofire=!1,this.shots=0,this.fireLimit=0,this.fireRate=100,this.fireRateVariance=0,this.fireFrom=new c.Rectangle(0,0,1,1),this.fireAngle=c.ANGLE_UP,this.bulletInheritSpriteSpeed=!1,this.bulletAnimation="",this.bulletFrameRandom=!1,this.bulletFrameCycle=!1,this.bulletWorldWrap=!1,this.bulletWorldWrapPadding=0,this.bulletAngleOffset=0,this.bulletAngleVariance=0,this.bulletSpeed=200,this.bulletSpeedVariance=0,this.bulletLifespan=0,this.bulletKillDistance=0,this.bulletGravity=new c.Point(0,0),this.bulletRotateToVelocity=!1,this.bulletKey="",this.bulletFrame="",this._bulletClass=c.Bullet,this._bulletCollideWorldBounds=!1,this._bulletKillType=c.Weapon.KILL_WORLD_BOUNDS,this._data={customBody:!1,width:0,height:0,offsetX:0,offsetY:0},this.bounds=new c.Rectangle,this.bulletBounds=a.world.bounds,this.bulletFrames=[],this.bulletFrameIndex=0,this.anims={},this.onFire=new c.Signal,this.onKill=new c.Signal,this.onFireLimit=new c.Signal,this.trackedSprite=null,this.trackedPointer=null,this.trackRotation=!1,this.trackOffset=new c.Point,this._nextFire=0},c.Weapon.prototype=Object.create(c.Plugin.prototype),c.Weapon.prototype.constructor=c.Weapon,c.Weapon.KILL_NEVER=0,c.Weapon.KILL_LIFESPAN=1,c.Weapon.KILL_DISTANCE=2,c.Weapon.KILL_WEAPON_BOUNDS=3,c.Weapon.KILL_CAMERA_BOUNDS=4,c.Weapon.KILL_WORLD_BOUNDS=5,c.Weapon.KILL_STATIC_BOUNDS=6,c.Weapon.prototype.createBullets=function(a,b,d,e){return void 0===a&&(a=1),void 0===e&&(e=this.game.world),this.bullets||(this.bullets=this.game.add.physicsGroup(c.Physics.ARCADE,e),this.bullets.classType=this._bulletClass),0!==a&&(-1===a&&(this.autoExpandBulletsGroup=!0,a=1),this.bullets.createMultiple(a,b,d),this.bullets.setAll("data.bulletManager",this),this.bulletKey=b,this.bulletFrame=d),this},c.Weapon.prototype.forEach=function(a,b){return this.bullets.forEachExists(a,b,arguments),this},c.Weapon.prototype.pauseAll=function(){return this.bullets.setAll("body.enable",!1),this},c.Weapon.prototype.resumeAll=function(){return this.bullets.setAll("body.enable",!0),this},c.Weapon.prototype.killAll=function(){return this.bullets.callAllExists("kill",!0),this.bullets.setAll("body.enable",!0),this},c.Weapon.prototype.resetShots=function(a){return this.shots=0,void 0!==a&&(this.fireLimit=a),this},c.Weapon.prototype.destroy=function(){this.parent.remove(this,!1),this.bullets.destroy(),this.game=null,this.parent=null,this.active=!1,this.visible=!1},c.Weapon.prototype.update=function(){this._bulletKillType===c.Weapon.KILL_WEAPON_BOUNDS&&(this.trackedSprite?(this.trackedSprite.updateTransform(),this.bounds.centerOn(this.trackedSprite.worldPosition.x,this.trackedSprite.worldPosition.y)):this.trackedPointer&&this.bounds.centerOn(this.trackedPointer.worldX,this.trackedPointer.worldY)),this.autofire&&this.game.time.now0&&this.shots===this.fireLimit)return!1;var e=this.bulletSpeed;0!==this.bulletSpeedVariance&&(e+=c.Math.between(-this.bulletSpeedVariance,this.bulletSpeedVariance)),a?this.fireFrom.width>1?this.fireFrom.centerOn(a.x,a.y):(this.fireFrom.x=a.x,this.fireFrom.y=a.y):this.trackedSprite?(this.fireFrom.width>1?this.fireFrom.centerOn(this.trackedSprite.world.x+this.trackOffset.x,this.trackedSprite.world.y+this.trackOffset.y):(this.fireFrom.x=this.trackedSprite.world.x+this.trackOffset.x,this.fireFrom.y=this.trackedSprite.world.y+this.trackOffset.y),this.bulletInheritSpriteSpeed&&(e+=this.trackedSprite.body.speed)):this.trackedPointer&&(this.fireFrom.width>1?this.fireFrom.centerOn(this.trackedPointer.world.x+this.trackOffset.x,this.trackedPointer.world.y+this.trackOffset.y):(this.fireFrom.x=this.trackedPointer.world.x+this.trackOffset.x,this.fireFrom.y=this.trackedPointer.world.y+this.trackOffset.y));var f=this.fireFrom.width>1?this.fireFrom.randomX:this.fireFrom.x,g=this.fireFrom.height>1?this.fireFrom.randomY:this.fireFrom.y,h=this.trackRotation?this.trackedSprite.angle:this.fireAngle;void 0!==b&&void 0!==d&&(h=this.game.math.radToDeg(Math.atan2(d-g,b-f))),0!==this.bulletAngleVariance&&(h+=c.Math.between(-this.bulletAngleVariance,this.bulletAngleVariance));var i=0,j=0;0===h||180===h?i=Math.cos(this.game.math.degToRad(h))*e:90===h||270===h?j=Math.sin(this.game.math.degToRad(h))*e:(i=Math.cos(this.game.math.degToRad(h))*e,j=Math.sin(this.game.math.degToRad(h))*e);var k=null;if(this.autoExpandBulletsGroup?(k=this.bullets.getFirstExists(!1,!0,f,g,this.bulletKey,this.bulletFrame),k.data.bulletManager=this):k=this.bullets.getFirstExists(!1),k){if(k.reset(f,g),k.data.fromX=f,k.data.fromY=g,k.data.killType=this.bulletKillType,k.data.killDistance=this.bulletKillDistance,k.data.rotateToVelocity=this.bulletRotateToVelocity,this.bulletKillType===c.Weapon.KILL_LIFESPAN&&(k.lifespan=this.bulletLifespan),k.angle=h+this.bulletAngleOffset,""!==this.bulletAnimation){if(null===k.animations.getAnimation(this.bulletAnimation)){var l=this.anims[this.bulletAnimation];k.animations.add(l.name,l.frames,l.frameRate,l.loop,l.useNumericIndex)}k.animations.play(this.bulletAnimation)}else this.bulletFrameCycle?(k.frame=this.bulletFrames[this.bulletFrameIndex],this.bulletFrameIndex++,this.bulletFrameIndex>=this.bulletFrames.length&&(this.bulletFrameIndex=0)):this.bulletFrameRandom&&(k.frame=this.bulletFrames[Math.floor(Math.random()*this.bulletFrames.length)]);k.data.bodyDirty&&(this._data.customBody&&k.body.setSize(this._data.width,this._data.height,this._data.offsetX,this._data.offsetY),k.body.collideWorldBounds=this.bulletCollideWorldBounds,k.data.bodyDirty=!1),k.body.velocity.set(i,j),k.body.gravity.set(this.bulletGravity.x,this.bulletGravity.y),this._nextFire=this.game.time.now+this.fireRate,this.shots++,this.onFire.dispatch(k,this,e),this.fireLimit>0&&this.shots===this.fireLimit&&this.onFireLimit.dispatch(this,this.fireLimit)}},c.Weapon.prototype.fireAtPointer=function(a){return void 0===a&&(a=this.game.input.activePointer),this.fire(null,a.worldX,a.worldY)},c.Weapon.prototype.fireAtSprite=function(a){return this.fire(null,a.world.x,a.world.y)},c.Weapon.prototype.fireAtXY=function(a,b){return this.fire(null,a,b)},c.Weapon.prototype.setBulletBodyOffset=function(a,b,c,d){return void 0===c&&(c=0),void 0===d&&(d=0),this._data.customBody=!0,this._data.width=a,this._data.height=b,this._data.offsetX=c,this._data.offsetY=d,this.bullets.callAll("body.setSize","body",a,b,c,d),this.bullets.setAll("data.bodyDirty",!1),this},c.Weapon.prototype.setBulletFrames=function(a,b,d,e){return void 0===d&&(d=!0),void 0===e&&(e=!1),this.bulletFrames=c.ArrayUtils.numberArray(a,b),this.bulletFrameIndex=0,this.bulletFrameCycle=d,this.bulletFrameRandom=e,this},c.Weapon.prototype.addBulletAnimation=function(a,b,c,d,e){return this.anims[a]={name:a,frames:b,frameRate:c,loop:d,useNumericIndex:e},this.bullets.callAll("animations.add","animations",a,b,c,d,e),this.bulletAnimation=a,this},c.Weapon.prototype.debug=function(a,b,c){void 0===a&&(a=16),void 0===b&&(b=32),void 0===c&&(c=!1),this.game.debug.text("Weapon Plugin",a,b),this.game.debug.text("Bullets Alive: "+this.bullets.total+" - Total: "+this.bullets.length,a,b+24),c&&this.bullets.forEachExists(this.game.debug.body,this.game.debug,"rgba(255, 0, 255, 0.8)")},Object.defineProperty(c.Weapon.prototype,"bulletClass",{get:function(){return this._bulletClass},set:function(a){this._bulletClass=a,this.bullets.classType=this._bulletClass}}),Object.defineProperty(c.Weapon.prototype,"bulletKillType",{get:function(){return this._bulletKillType},set:function(a){switch(a){case c.Weapon.KILL_STATIC_BOUNDS:case c.Weapon.KILL_WEAPON_BOUNDS:this.bulletBounds=this.bounds;break;case c.Weapon.KILL_CAMERA_BOUNDS:this.bulletBounds=this.game.camera.view;break;case c.Weapon.KILL_WORLD_BOUNDS:this.bulletBounds=this.game.world.bounds}this._bulletKillType=a}}),Object.defineProperty(c.Weapon.prototype,"bulletCollideWorldBounds",{get:function(){return this._bulletCollideWorldBounds},set:function(a){this._bulletCollideWorldBounds=a,this.bullets.setAll("body.collideWorldBounds",a),this.bullets.setAll("data.bodyDirty",!1)}}),Object.defineProperty(c.Weapon.prototype,"x",{get:function(){return this.fireFrom.x},set:function(a){this.fireFrom.x=a}}),Object.defineProperty(c.Weapon.prototype,"y",{get:function(){return this.fireFrom.y},set:function(a){this.fireFrom.y=a}}),c.Bullet=function(a,b,d,e,f){c.Sprite.call(this,a,b,d,e,f),this.anchor.set(.5),this.data={bulletManager:null,fromX:0,fromY:0,bodyDirty:!0,rotateToVelocity:!1,killType:0,killDistance:0}},c.Bullet.prototype=Object.create(c.Sprite.prototype),c.Bullet.prototype.constructor=c.Bullet,c.Bullet.prototype.kill=function(){return this.alive=!1,this.exists=!1,this.visible=!1,this.data.bulletManager.onKill.dispatch(this),this},c.Bullet.prototype.update=function(){this.exists&&(this.data.killType>c.Weapon.KILL_LIFESPAN&&(this.data.killType===c.Weapon.KILL_DISTANCE?this.game.physics.arcade.distanceToXY(this,this.data.fromX,this.data.fromY,!0)>this.data.killDistance&&this.kill():this.data.bulletManager.bulletBounds.intersects(this)||this.kill()),this.data.rotateToVelocity&&(this.rotation=Math.atan2(this.body.velocity.y,this.body.velocity.x)),this.data.bulletManager.bulletWorldWrap&&this.game.world.wrap(this,this.data.bulletManager.bulletWorldWrapPadding))},c.Creature=function(a,b,d,e,f,g){if(void 0===g&&(g="default"),this.type=c.CREATURE,!a.cache.checkJSONKey(f))return void console.warn("Phaser.Creature: Invalid mesh key given. Not found in Phaser.Cache");var h=a.cache.getJSON(f);if(this._creature=new Creature(h),this.animation=new CreatureAnimation(h,g,this._creature),this.manager=new CreatureManager(this._creature),this.timeDelta=.05,"string"==typeof e)var i=new PIXI.Texture(a.cache.getBaseTexture(e));else var i=e;this.texture=i,PIXI.DisplayObjectContainer.call(this),this.dirty=!0,this.blendMode=PIXI.blendModes.NORMAL,this.creatureBoundsMin=new c.Point,this.creatureBoundsMax=new c.Point;var j=this.manager.target_creature;this.vertices=new PIXI.Float32Array(2*j.total_num_pts),this.uvs=new PIXI.Float32Array(2*j.total_num_pts),this.indices=new PIXI.Uint16Array(j.global_indices.length);for(var k=0;k0)if(b.video.videoWidth>0){var d=b.video.videoWidth,e=b.video.videoHeight;isNaN(b.video.videoHeight)&&(e=d/(4/3)),b.video.play(),b.isStreaming=!0,b.baseTexture.source=b.video,b.updateTexture(null,d,e),b.onAccess.dispatch(b)}else window.setTimeout(a,500);else console.warn("Unable to connect to video stream. Webcam error?");c--}var c=10;a()}},createVideoFromBlob:function(a){var b=this;return this.video=document.createElement("video"),this.video.controls=!1,this.video.setAttribute("autoplay","autoplay"),this.video.addEventListener("loadeddata",function(a){b.updateTexture(a)},!0),this.video.src=window.URL.createObjectURL(a),this.video.canplay=!0,this},createVideoFromURL:function(a,b){return void 0===b&&(b=!1),this.texture&&(this.texture.valid=!1),this.video=document.createElement("video"),this.video.controls=!1,b&&this.video.setAttribute("autoplay","autoplay"),this.video.src=a,this.video.canplay=!0,this.video.load(),this.retry=this.retryLimit,this._retryID=window.setTimeout(this.checkVideoProgress.bind(this),this.retryInterval),this.key=a,this},updateTexture:function(a,b,c){var d=!1;void 0!==b&&null!==b||(b=this.video.videoWidth,d=!0),void 0!==c&&null!==c||(c=this.video.videoHeight),this.width=b,this.height=c,this.baseTexture.source!==this.video&&(this.baseTexture.source=this.video),this.baseTexture.forceLoaded(b,c),this.texture.frame.resize(b,c),this.texture.width=b,this.texture.height=c,this.texture.valid=!0,this.snapshot&&this.snapshot.resize(b,c),d&&null!==this.key&&(this.onChangeSource.dispatch(this,b,c),this._autoplay&&(this.video.play(),this.onPlay.dispatch(this,this.loop,this.playbackRate)))},complete:function(){this.onComplete.dispatch(this)},play:function(a,b){return void 0===a&&(a=!1),void 0===b&&(b=1),this.game.sound.onMute&&(this.game.sound.onMute.add(this.setMute,this),this.game.sound.onUnMute.add(this.unsetMute,this),this.game.sound.mute&&this.setMute()),this.game.onPause.add(this.setPause,this),this.game.onResume.add(this.setResume,this),this._endCallback=this.complete.bind(this),this.video.addEventListener("ended",this._endCallback,!0),this.video.addEventListener("webkitendfullscreen",this._endCallback,!0),a?this.video.loop="loop":this.video.loop="",this.video.playbackRate=b,this.touchLocked?this._pending=!0:(this._pending=!1,null!==this.key&&(4!==this.video.readyState?(this.retry=this.retryLimit,this._retryID=window.setTimeout(this.checkVideoProgress.bind(this),this.retryInterval)):(this._playCallback=this.playHandler.bind(this),this.video.addEventListener("playing",this._playCallback,!0))),this.video.play(),this.onPlay.dispatch(this,a,b)),this},playHandler:function(){this.video.removeEventListener("playing",this._playCallback,!0),this.updateTexture()},stop:function(){return this.game.sound.onMute&&(this.game.sound.onMute.remove(this.setMute,this),this.game.sound.onUnMute.remove(this.unsetMute,this)),this.game.onPause.remove(this.setPause,this),this.game.onResume.remove(this.setResume,this),this.isStreaming?(this.video.mozSrcObject?(this.video.mozSrcObject.stop(),this.video.src=null):(this.video.src="",this.videoStream.active?this.videoStream.active=!1:this.videoStream.getTracks?this.videoStream.getTracks().forEach(function(a){a.stop()}):this.videoStream.stop()),this.videoStream=null,this.isStreaming=!1):(this.video.removeEventListener("ended",this._endCallback,!0),this.video.removeEventListener("webkitendfullscreen",this._endCallback,!0),this.video.removeEventListener("playing",this._playCallback,!0),this.touchLocked?this._pending=!1:this.video.pause()),this},add:function(a){if(Array.isArray(a))for(var b=0;b0?this._retryID=window.setTimeout(this.checkVideoProgress.bind(this),this.retryInterval):console.warn("Phaser.Video: Unable to start downloading video in time",this.isStreaming))},setTouchLock:function(){this.game.input.touch.addTouchLockCallback(this.unlock,this),this.touchLocked=!0},unlock:function(){if(this.touchLocked=!1,this.video.play(),this.onPlay.dispatch(this,this.loop,this.playbackRate),this.key){var a=this.game.cache.getVideo(this.key);a&&!a.isBlob&&(a.locked=!1)}return!0},grab:function(a,b,c){return void 0===a&&(a=!1),void 0===b&&(b=1),void 0===c&&(c=null),null===this.snapshot?void console.warn("Video.grab cannot run because Phaser.BitmapData is unavailable"):(a&&this.snapshot.cls(),this.snapshot.copy(this.video,0,0,this.width,this.height,0,0,this.width,this.height,0,0,0,1,1,b,c),this.snapshot)},removeVideoElement:function(){if(this.video){for(this.video.parentNode&&this.video.parentNode.removeChild(this.video);this.video.hasChildNodes();)this.video.removeChild(this.video.firstChild);this.video.removeAttribute("autoplay"),this.video.removeAttribute("src"),this.video=null}},destroy:function(){this.stop(),this.removeVideoElement(),this.touchLocked&&this.game.input.touch.removeTouchLockCallback(this.unlock,this),this._retryID&&window.clearTimeout(this._retryID)}},Object.defineProperty(c.Video.prototype,"currentTime",{get:function(){return this.video?this.video.currentTime:0},set:function(a){this.video.currentTime=a}}),Object.defineProperty(c.Video.prototype,"duration",{get:function(){return this.video?this.video.duration:0}}),Object.defineProperty(c.Video.prototype,"progress",{get:function(){return this.video?this.video.currentTime/this.video.duration:0}}),Object.defineProperty(c.Video.prototype,"mute",{get:function(){return this._muted},set:function(a){if(a=a||null){if(this._muted)return;this._codeMuted=!0,this.setMute()}else{if(!this._muted)return;this._codeMuted=!1,this.unsetMute()}}}),Object.defineProperty(c.Video.prototype,"paused",{get:function(){return this._paused},set:function(a){if(a=a||null,!this.touchLocked)if(a){if(this._paused)return;this._codePaused=!0,this.setPause()}else{if(!this._paused)return;this._codePaused=!1,this.setResume()}}}),Object.defineProperty(c.Video.prototype,"volume",{get:function(){return this.video?this.video.volume:1},set:function(a){0>a?a=0:a>1&&(a=1),this.video&&(this.video.volume=a)}}),Object.defineProperty(c.Video.prototype,"playbackRate",{get:function(){return this.video?this.video.playbackRate:1},set:function(a){this.video&&(this.video.playbackRate=a)}}),Object.defineProperty(c.Video.prototype,"loop",{get:function(){return this.video?this.video.loop:!1},set:function(a){a&&this.video?this.video.loop="loop":this.video&&(this.video.loop="")}}),Object.defineProperty(c.Video.prototype,"playing",{get:function(){return!(this.video.paused&&this.video.ended)}}),c.Video.prototype.constructor=c.Video,void 0===PIXI.blendModes&&(PIXI.blendModes=c.blendModes),void 0===PIXI.scaleModes&&(PIXI.scaleModes=c.scaleModes),void 0===PIXI.Texture.emptyTexture&&(PIXI.Texture.emptyTexture=new PIXI.Texture(new PIXI.BaseTexture)),void 0===PIXI.DisplayObject._tempMatrix&&(PIXI.DisplayObject._tempMatrix=new PIXI.Matrix),void 0===PIXI.RenderTexture.tempMatrix&&(PIXI.RenderTexture.tempMatrix=new PIXI.Matrix),PIXI.Graphics&&void 0===PIXI.Graphics.POLY&&(PIXI.Graphics.POLY=c.POLYGON,PIXI.Graphics.RECT=c.RECTANGLE,PIXI.Graphics.CIRC=c.CIRCLE,PIXI.Graphics.ELIP=c.ELLIPSE,PIXI.Graphics.RREC=c.ROUNDEDRECTANGLE),PIXI.TextureSilentFail=!0,"undefined"!=typeof exports?("undefined"!=typeof module&&module.exports&&(exports=module.exports=c),exports.Phaser=c):"undefined"!=typeof define&&define.amd?define("Phaser",function(){return b.Phaser=c}()):b.Phaser=c,c}).call(this); //# sourceMappingURL=phaser-creature.map \ No newline at end of file diff --git a/build/phaser.js b/build/phaser.js index 49b6cffb3..b6a86fb84 100644 --- a/build/phaser.js +++ b/build/phaser.js @@ -7,7 +7,7 @@ * * Phaser - http://phaser.io * -* v2.5.0 "Five Kings" - Built: Fri Jun 17 2016 12:44:07 +* v2.5.1 "Fal Moran" - Built: Fri Jul 08 2016 15:41:51 * * By Richard Davey http://www.photonstorm.com @photonstorm * @@ -13768,64 +13768,91 @@ PIXI.defaultRenderOptions = { */ /** - * @author Mat Groves http://matgroves.com/ @Doormat23 - */ +* @author Mat Groves http://matgroves.com @Doormat23 +* @author Richard Davey +* @license {@link https://github.com/photonstorm/phaser/blob/master/license.txt|MIT License} +*/ /** - * The base class for all objects that are rendered on the screen. - * This is an abstract class and should not be used on its own rather it should be extended. - * - * @class DisplayObject - * @constructor - */ -PIXI.DisplayObject = function() -{ +* The base class for all objects that are rendered. Contains properties for position, scaling, +* rotation, masks and cache handling. +* +* This is an abstract class and should not be used on its own, rather it should be extended. +* +* It is used internally by the likes of PIXI.Sprite. +* +* @class PIXI.DisplayObject +* @constructor +*/ +PIXI.DisplayObject = function() { + /** - * The coordinate of the object relative to the local coordinates of the parent. - * - * @property position - * @type Point - */ + * The coordinates, in pixels, of this DisplayObject, relative to its parent container. + * + * The value of this property does not reflect any positioning happening further up the display list. + * To obtain that value please see the `worldPosition` property. + * + * @property {PIXI.Point} position + * @default + */ this.position = new PIXI.Point(0, 0); /** - * The scale factor of the object. - * - * @property scale - * @type Point - */ + * The scale of this DisplayObject. A scale of 1:1 represents the DisplayObject + * at its default size. A value of 0.5 would scale this DisplayObject by half, and so on. + * + * The value of this property does not reflect any scaling happening further up the display list. + * To obtain that value please see the `worldScale` property. + * + * @property {PIXI.Point} scale + * @default + */ this.scale = new PIXI.Point(1, 1); /** - * The pivot point of the displayObject that it rotates around - * - * @property pivot - * @type Point - */ + * The pivot point of this DisplayObject that it rotates around. The values are expressed + * in pixel values. + * @property {PIXI.Point} pivot + * @default + */ this.pivot = new PIXI.Point(0, 0); /** - * The rotation of the object in radians. - * - * @property rotation - * @type Number - */ + * The rotation of this DisplayObject. The value is given, and expressed, in radians, and is based on + * a right-handed orientation. + * + * The value of this property does not reflect any rotation happening further up the display list. + * To obtain that value please see the `worldRotation` property. + * + * @property {number} rotation + * @default + */ this.rotation = 0; /** - * The opacity of the object. - * - * @property alpha - * @type Number - */ + * The alpha value of this DisplayObject. A value of 1 is fully opaque. A value of 0 is transparent. + * Please note that an object with an alpha value of 0 is skipped during the render pass. + * + * The value of this property does not reflect any alpha values set further up the display list. + * To obtain that value please see the `worldAlpha` property. + * + * @property {number} alpha + * @default + */ this.alpha = 1; /** - * The visibility of the object. - * - * @property visible - * @type Boolean - */ + * The visibility of this DisplayObject. A value of `false` makes the object invisible. + * A value of `true` makes it visible. Please note that an object with a visible value of + * `false` is skipped during the render pass. Equally a DisplayObject with visible false will + * not render any of its children. + * + * The value of this property does not reflect any visible values set further up the display list. + * To obtain that value please see the `worldVisible` property. + * + * @property {boolean} visible + * @default + */ this.visible = true; /** @@ -13838,688 +13865,729 @@ PIXI.DisplayObject = function() this.hitArea = null; /** - * Can this object be rendered - * - * @property renderable - * @type Boolean - */ + * Should this DisplayObject be rendered by the renderer? An object with a renderable value of + * `false` is skipped during the render pass. + * + * @property {boolean} renderable + * @default + */ this.renderable = false; /** - * [read-only] The display object container that contains this display object. - * - * @property parent - * @type DisplayObjectContainer - * @readOnly - */ + * The parent DisplayObjectContainer that this DisplayObject is a child of. + * All DisplayObjects must belong to a parent in order to be rendered. + * The root parent is the Stage object. This property is set automatically when the + * DisplayObject is added to, or removed from, a DisplayObjectContainer. + * + * @property {PIXI.DisplayObjectContainer} parent + * @default + * @readOnly + */ this.parent = null; /** - * [read-only] The stage the display object is connected to, or undefined if it is not connected to the stage. - * - * @property stage - * @type Stage - * @readOnly - */ + * The stage that this DisplayObject is connected to. + * + * @property {PIXI.Stage} stage + * @default + * @readOnly + */ this.stage = null; /** - * [read-only] The multiplied alpha of the displayObject - * - * @property worldAlpha - * @type Number - * @readOnly - */ + * The multiplied alpha value of this DisplayObject. A value of 1 is fully opaque. A value of 0 is transparent. + * This value is the calculated total, based on the alpha values of all parents of this DisplayObjects + * in the display list. + * + * To obtain, and set, the local alpha value, see the `alpha` property. + * + * Note: This property is only updated at the end of the `updateTransform` call, once per render. Until + * that happens this property will contain values based on the previous frame. Be mindful of this if + * accessing this property outside of the normal game flow, i.e. from an asynchronous event callback. + * + * @property {number} worldAlpha + * @readOnly + */ this.worldAlpha = 1; /** - * [read-only] Current transform of the object based on world (parent) factors - * - * @property worldTransform - * @type Matrix - * @readOnly - * @private - */ + * The current transform of this DisplayObject. + * + * This property contains the calculated total, based on the transforms of all parents of this + * DisplayObject in the display list. + * + * Note: This property is only updated at the end of the `updateTransform` call, once per render. Until + * that happens this property will contain values based on the previous frame. Be mindful of this if + * accessing this property outside of the normal game flow, i.e. from an asynchronous event callback. + * + * @property {PIXI.Matrix} worldTransform + * @readOnly + */ this.worldTransform = new PIXI.Matrix(); /** - * The position of the Display Object based on the world transform. - * This value is updated at the end of updateTransform and takes all parent transforms into account. - * - * @property worldPosition - * @type Point - * @readOnly - */ + * The coordinates, in pixels, of this DisplayObject within the world. + * + * This property contains the calculated total, based on the positions of all parents of this + * DisplayObject in the display list. + * + * Note: This property is only updated at the end of the `updateTransform` call, once per render. Until + * that happens this property will contain values based on the previous frame. Be mindful of this if + * accessing this property outside of the normal game flow, i.e. from an asynchronous event callback. + * + * @property {PIXI.Point} worldPosition + * @readOnly + */ this.worldPosition = new PIXI.Point(0, 0); /** - * The scale of the Display Object based on the world transform. - * This value is updated at the end of updateTransform and takes all parent transforms into account. - * - * @property worldScale - * @type Point - * @readOnly - */ + * The global scale of this DisplayObject. + * + * This property contains the calculated total, based on the scales of all parents of this + * DisplayObject in the display list. + * + * Note: This property is only updated at the end of the `updateTransform` call, once per render. Until + * that happens this property will contain values based on the previous frame. Be mindful of this if + * accessing this property outside of the normal game flow, i.e. from an asynchronous event callback. + * + * @property {PIXI.Point} worldScale + * @readOnly + */ this.worldScale = new PIXI.Point(1, 1); /** - * The rotation of the Display Object, in radians, based on the world transform. - * This value is updated at the end of updateTransform and takes all parent transforms into account. - * - * @property worldRotation - * @type Number - * @readOnly - */ + * The rotation, in radians, of this DisplayObject. + * + * This property contains the calculated total, based on the rotations of all parents of this + * DisplayObject in the display list. + * + * Note: This property is only updated at the end of the `updateTransform` call, once per render. Until + * that happens this property will contain values based on the previous frame. Be mindful of this if + * accessing this property outside of the normal game flow, i.e. from an asynchronous event callback. + * + * @property {number} worldRotation + * @readOnly + */ this.worldRotation = 0; /** - * cached sin rotation and cos rotation - * - * @property _sr - * @type Number - * @private - */ - this._sr = 0; - - /** - * cached sin rotation and cos rotation - * - * @property _cr - * @type Number - * @private - */ - this._cr = 1; - - /** - * The area the filter is applied to like the hitArea this is used as more of an optimisation - * rather than figuring out the dimensions of the displayObject each frame you can set this rectangle - * - * @property filterArea - * @type Rectangle - */ + * The rectangular area used by filters when rendering a shader for this DisplayObject. + * + * @property {PIXI.Rectangle} filterArea + * @type Rectangle + * @default + */ this.filterArea = null; /** - * The original, cached bounds of the object - * - * @property _bounds - * @type Rectangle - * @private - */ + * @property {number} _sr - Cached rotation value. + * @private + */ + this._sr = 0; + + /** + * @property {number} _cr - Cached rotation value. + * @private + */ + this._cr = 1; + + /** + * @property {PIXI.Rectangle} _bounds - The cached bounds of this object. + * @private + */ this._bounds = new PIXI.Rectangle(0, 0, 1, 1); /** - * The most up-to-date bounds of the object - * - * @property _currentBounds - * @type Rectangle - * @private - */ + * @property {PIXI.Rectangle} _currentBounds - The most recently calculated bounds of this object. + * @private + */ this._currentBounds = null; /** - * The original, cached mask of the object - * - * @property _mask - * @type Rectangle - * @private - */ + * @property {PIXI.Rectangle} _mask - The cached mask of this object. + * @private + */ this._mask = null; /** - * Cached internal flag. - * - * @property _cacheAsBitmap - * @type Boolean - * @private - */ + * @property {boolean} _cacheAsBitmap - Internal cache as bitmap flag. + * @private + */ this._cacheAsBitmap = false; /** - * Cached internal flag. - * - * @property _cacheIsDirty - * @type Boolean - * @private - */ + * @property {boolean} _cacheIsDirty - Internal dirty cache flag. + * @private + */ this._cacheIsDirty = false; }; -// constructor PIXI.DisplayObject.prototype.constructor = PIXI.DisplayObject; -/** - * Destroy this DisplayObject. - * Removes all references to transformCallbacks, its parent, the stage, filters, bounds, mask and cached Sprites. - * - * @method destroy - */ -PIXI.DisplayObject.prototype.destroy = function() -{ - if (this.children) - { - var i = this.children.length; +PIXI.DisplayObject.prototype = { - while (i--) + /** + * Destroy this DisplayObject. + * + * Removes any cached sprites, sets renderable flag to false, and nulls references to the Stage, filters, + * bounds and mask. + * + * Also iteratively calls `destroy` on any children. + * + * @method PIXI.DisplayObject#destroy + */ + destroy: function () { + + if (this.children) { - this.children[i].destroy(); - } + var i = this.children.length; - this.children = []; - } - - this.hitArea = null; - this.parent = null; - this.stage = null; - this.worldTransform = null; - this.filterArea = null; - this._bounds = null; - this._currentBounds = null; - this._mask = null; - - // In case Pixi is still going to try and render it even though destroyed - this.renderable = false; - - this._destroyCachedSprite(); -}; - -/** - * [read-only] Indicates if the sprite is globally visible. - * - * @property worldVisible - * @type Boolean - */ -Object.defineProperty(PIXI.DisplayObject.prototype, 'worldVisible', { - - get: function() { - - var item = this; - - do - { - if (!item.visible) return false; - item = item.parent; - } - while(item); - - return true; - } - -}); - -/** - * Sets a mask for the displayObject. A mask is an object that limits the visibility of an object to the shape of the mask applied to it. - * In PIXI a regular mask must be a PIXI.Graphics object. This allows for much faster masking in canvas as it utilises shape clipping. - * To remove a mask, set this property to null. - * - * @property mask - * @type Graphics - */ -Object.defineProperty(PIXI.DisplayObject.prototype, 'mask', { - - get: function() { - return this._mask; - }, - - set: function(value) { - - if (this._mask) this._mask.isMask = false; - - this._mask = value; - - if (this._mask) this._mask.isMask = true; - } - -}); - -/** - * Sets the filters for the displayObject. - * IMPORTANT: This is a webGL only feature and will be ignored by the Canvas renderer. - * - * To remove filters simply set this property to 'null'. - * - * You cannot have a filter and a multiply blend mode active at the same time. Setting a filter will reset - * this objects blend mode to NORMAL. - * - * @property filters - * @type Array(Filter) - */ -Object.defineProperty(PIXI.DisplayObject.prototype, 'filters', { - - get: function() { - return this._filters; - }, - - set: function(value) { - - if (value) - { - // now put all the passes in one place.. - var passes = []; - - for (var i = 0; i < value.length; i++) + while (i--) { - var filterPasses = value[i].passes; - - for (var j = 0; j < filterPasses.length; j++) - { - passes.push(filterPasses[j]); - } + this.children[i].destroy(); } - // TODO change this as it is legacy - this._filterBlock = { target: this, filterPasses: passes }; + this.children = []; } - this._filters = value; + this.hitArea = null; + this.parent = null; + this.stage = null; + this.worldTransform = null; + this.filterArea = null; + this.renderable = false; - if (this.blendMode && this.blendMode === PIXI.blendModes.MULTIPLY) - { - this.blendMode = PIXI.blendModes.NORMAL; - } - } -}); + this._bounds = null; + this._currentBounds = null; + this._mask = null; -/** - * Set if this display object is cached as a bitmap. - * This basically takes a snap shot of the display object as it is at that moment. It can provide a performance benefit for complex static displayObjects. - * To remove simply set this property to 'null' - * @property cacheAsBitmap - * @type Boolean - */ -Object.defineProperty(PIXI.DisplayObject.prototype, 'cacheAsBitmap', { + this._destroyCachedSprite(); - get: function() { - return this._cacheAsBitmap; }, - set: function(value) { + /* + * Updates the transform matrix this DisplayObject uses for rendering. + * + * If the object has no parent, and no parent parameter is provided, it will default to + * Phaser.Game.World as the parent transform to use. If that is unavailable the transform fails to take place. + * + * The `parent` parameter has priority over the actual parent. Use it as a parent override. + * Setting it does **not** change the actual parent of this DisplayObject. + * + * Calling this method updates the `worldTransform`, `worldAlpha`, `worldPosition`, `worldScale` + * and `worldRotation` properties. + * + * If a `transformCallback` has been specified, it is called at the end of this method, and is passed + * the new, updated, worldTransform property, along with the parent transform used. + * + * @method PIXI.DisplayObject#updateTransform + * @param {PIXI.DisplayObject} [parent] - Optional parent to calculate this DisplayObjects transform from. + * @return {PIXI.DisplayObject} - A reference to this DisplayObject. + */ + updateTransform: function (parent) { - if (this._cacheAsBitmap === value) + if (!parent && !this.parent && !this.game) + { + return this; + } + + var p = this.parent; + + if (parent) + { + p = parent; + } + else if (!this.parent) + { + p = this.game.world; + } + + // create some matrix refs for easy access + var pt = p.worldTransform; + var wt = this.worldTransform; + + // temporary matrix variables + var a, b, c, d, tx, ty; + + // so if rotation is between 0 then we can simplify the multiplication process.. + if (this.rotation % PIXI.PI_2) + { + // check to see if the rotation is the same as the previous render. This means we only need to use sin and cos when rotation actually changes + if (this.rotation !== this.rotationCache) + { + this.rotationCache = this.rotation; + this._sr = Math.sin(this.rotation); + this._cr = Math.cos(this.rotation); + } + + // get the matrix values of the displayobject based on its transform properties.. + a = this._cr * this.scale.x; + b = this._sr * this.scale.x; + c = -this._sr * this.scale.y; + d = this._cr * this.scale.y; + tx = this.position.x; + ty = this.position.y; + + // check for pivot.. not often used so geared towards that fact! + if (this.pivot.x || this.pivot.y) + { + tx -= this.pivot.x * a + this.pivot.y * c; + ty -= this.pivot.x * b + this.pivot.y * d; + } + + // concat the parent matrix with the objects transform. + wt.a = a * pt.a + b * pt.c; + wt.b = a * pt.b + b * pt.d; + wt.c = c * pt.a + d * pt.c; + wt.d = c * pt.b + d * pt.d; + wt.tx = tx * pt.a + ty * pt.c + pt.tx; + wt.ty = tx * pt.b + ty * pt.d + pt.ty; + } + else + { + // lets do the fast version as we know there is no rotation.. + a = this.scale.x; + d = this.scale.y; + + tx = this.position.x - this.pivot.x * a; + ty = this.position.y - this.pivot.y * d; + + wt.a = a * pt.a; + wt.b = a * pt.b; + wt.c = d * pt.c; + wt.d = d * pt.d; + wt.tx = tx * pt.a + ty * pt.c + pt.tx; + wt.ty = tx * pt.b + ty * pt.d + pt.ty; + } + + // Set the World values + this.worldAlpha = this.alpha * p.worldAlpha; + this.worldPosition.set(wt.tx, wt.ty); + this.worldScale.set(this.scale.x * Math.sqrt(wt.a * wt.a + wt.c * wt.c), this.scale.y * Math.sqrt(wt.b * wt.b + wt.d * wt.d)); + this.worldRotation = Math.atan2(-wt.c, wt.d); + + // reset the bounds each time this is called! + this._currentBounds = null; + + // Custom callback? + if (this.transformCallback) + { + this.transformCallback.call(this.transformCallbackContext, wt, pt); + } + + return this; + + }, + + /** + * Sets the root Stage object that this DisplayObject is connected to. + * + * @method PIXI.DisplayObject#setStageReference + * @param {Phaser.Stage} stage - The stage that the object will have as its current stage reference + * @return {PIXI.DisplayObject} - A reference to this DisplayObject. + */ + setStageReference: function (stage) + { + this.stage = stage; + + return this; + + }, + + /** + * To be overridden by classes that require it. + * + * @method PIXI.DisplayObject#preUpdate + */ + preUpdate: function () { + + }, + + /** + * Generates a RenderTexture based on this DisplayObject, which can they be used to texture other Sprites. + * This can be useful if your DisplayObject is static, or complicated, and needs to be reused multiple times. + * + * Please note that no garbage collection takes place on old textures. It is up to you to destroy old textures, + * and references to them, so they don't linger in memory. + * + * @method PIXI.DisplayObject#generateTexture + * @param {number} [resolution=1] - The resolution of the texture being generated. + * @param {number} [scaleMode=PIXI.scaleModes.DEFAULT] - See {{#crossLink "PIXI/scaleModes:property"}}PIXI.scaleModes{{/crossLink}} for possible values. + * @param {PIXI.CanvasRenderer|PIXI.WebGLRenderer} renderer - The renderer used to generate the texture. + * @return {PIXI.RenderTexture} - A RenderTexture containing an image of this DisplayObject at the time it was invoked. + */ + generateTexture: function (resolution, scaleMode, renderer) { + + var bounds = this.getLocalBounds(); + + var renderTexture = new PIXI.RenderTexture(bounds.width | 0, bounds.height | 0, renderer, scaleMode, resolution); + + PIXI.DisplayObject._tempMatrix.tx = -bounds.x; + PIXI.DisplayObject._tempMatrix.ty = -bounds.y; + + renderTexture.render(this, PIXI.DisplayObject._tempMatrix); + + return renderTexture; + + }, + + /** + * If this DisplayObject has a cached Sprite, this method generates and updates it. + * + * @method PIXI.DisplayObject#updateCache + * @return {PIXI.DisplayObject} - A reference to this DisplayObject. + */ + updateCache: function () { + + this._generateCachedSprite(); + + return this; + + }, + + /** + * Calculates the global position of this DisplayObject, based on the position given. + * + * @method PIXI.DisplayObject#toGlobal + * @param {PIXI.Point} position - The global position to calculate from. + * @return {PIXI.Point} - A point object representing the position of this DisplayObject based on the global position given. + */ + toGlobal: function (position) { + + this.updateTransform(); + + return this.worldTransform.apply(position); + + }, + + /** + * Calculates the local position of this DisplayObject, relative to another point. + * + * @method PIXI.DisplayObject#toLocal + * @param {PIXI.Point} position - The world origin to calculate from. + * @param {PIXI.DisplayObject} [from] - An optional DisplayObject to calculate the global position from. + * @return {PIXI.Point} - A point object representing the position of this DisplayObject based on the global position given. + */ + toLocal: function (position, from) { + + if (from) + { + position = from.toGlobal(position); + } + + this.updateTransform(); + + return this.worldTransform.applyInverse(position); + + }, + + /** + * Internal method. + * + * @method PIXI.DisplayObject#_renderCachedSprite + * @private + * @param {Object} renderSession - The render session + */ + _renderCachedSprite: function (renderSession) { + + this._cachedSprite.worldAlpha = this.worldAlpha; + + if (renderSession.gl) + { + PIXI.Sprite.prototype._renderWebGL.call(this._cachedSprite, renderSession); + } + else + { + PIXI.Sprite.prototype._renderCanvas.call(this._cachedSprite, renderSession); + } + + }, + + /** + * Internal method. + * + * @method PIXI.DisplayObject#_generateCachedSprite + * @private + */ + _generateCachedSprite: function () { + + this._cacheAsBitmap = false; + + var bounds = this.getLocalBounds(); + + // Round it off and force non-zero dimensions + bounds.width = Math.max(1, Math.ceil(bounds.width)); + bounds.height = Math.max(1, Math.ceil(bounds.height)); + + this.updateTransform(); + + if (!this._cachedSprite) + { + var renderTexture = new PIXI.RenderTexture(bounds.width, bounds.height); + this._cachedSprite = new PIXI.Sprite(renderTexture); + this._cachedSprite.worldTransform = this.worldTransform; + } + else + { + this._cachedSprite.texture.resize(bounds.width, bounds.height); + } + + // Remove filters + var tempFilters = this._filters; + + this._filters = null; + this._cachedSprite.filters = tempFilters; + + PIXI.DisplayObject._tempMatrix.tx = -bounds.x; + PIXI.DisplayObject._tempMatrix.ty = -bounds.y; + + this._cachedSprite.texture.render(this, PIXI.DisplayObject._tempMatrix, true); + this._cachedSprite.anchor.x = -(bounds.x / bounds.width); + this._cachedSprite.anchor.y = -(bounds.y / bounds.height); + + this._filters = tempFilters; + + this._cacheAsBitmap = true; + + }, + + /** + * Destroys a cached Sprite. + * + * @method PIXI.DisplayObject#_destroyCachedSprite + * @private + */ + _destroyCachedSprite: function () { + + if (!this._cachedSprite) { return; } - if (value) - { - this._generateCachedSprite(); - } - else - { - this._destroyCachedSprite(); - } + this._cachedSprite.texture.destroy(true); - this._cacheAsBitmap = value; - } + this._cachedSprite = null; -}); - -/* - * Updates the object transform for rendering. - * - * If the object has no parent, and no parent parameter is provided, it will default to Phaser.Game.World as the parent. - * If that is unavailable the transform fails to take place. - * - * The `parent` parameter has priority over the actual parent. Use it as a parent override. - * Setting it does **not** change the actual parent of this DisplayObject, it just uses the parent for the transform update. - * - * @method updateTransform - * @param {DisplayObject} [parent] - Optional parent to parent this DisplayObject transform from. - */ -PIXI.DisplayObject.prototype.updateTransform = function(parent) -{ - if (!parent && !this.parent && !this.game) - { - return; - } - - var p = this.parent; - - if (parent) - { - p = parent; - } - else if (!this.parent) - { - p = this.game.world; - } - - // create some matrix refs for easy access - var pt = p.worldTransform; - var wt = this.worldTransform; - - // temporary matrix variables - var a, b, c, d, tx, ty; - - // so if rotation is between 0 then we can simplify the multiplication process.. - if (this.rotation % PIXI.PI_2) - { - // check to see if the rotation is the same as the previous render. This means we only need to use sin and cos when rotation actually changes - if (this.rotation !== this.rotationCache) - { - this.rotationCache = this.rotation; - this._sr = Math.sin(this.rotation); - this._cr = Math.cos(this.rotation); - } - - // get the matrix values of the displayobject based on its transform properties.. - a = this._cr * this.scale.x; - b = this._sr * this.scale.x; - c = -this._sr * this.scale.y; - d = this._cr * this.scale.y; - tx = this.position.x; - ty = this.position.y; - - // check for pivot.. not often used so geared towards that fact! - if (this.pivot.x || this.pivot.y) - { - tx -= this.pivot.x * a + this.pivot.y * c; - ty -= this.pivot.x * b + this.pivot.y * d; - } - - // concat the parent matrix with the objects transform. - wt.a = a * pt.a + b * pt.c; - wt.b = a * pt.b + b * pt.d; - wt.c = c * pt.a + d * pt.c; - wt.d = c * pt.b + d * pt.d; - wt.tx = tx * pt.a + ty * pt.c + pt.tx; - wt.ty = tx * pt.b + ty * pt.d + pt.ty; - } - else - { - // lets do the fast version as we know there is no rotation.. - a = this.scale.x; - d = this.scale.y; - - tx = this.position.x - this.pivot.x * a; - ty = this.position.y - this.pivot.y * d; - - wt.a = a * pt.a; - wt.b = a * pt.b; - wt.c = d * pt.c; - wt.d = d * pt.d; - wt.tx = tx * pt.a + ty * pt.c + pt.tx; - wt.ty = tx * pt.b + ty * pt.d + pt.ty; - } - - // Set the World values - this.worldAlpha = this.alpha * p.worldAlpha; - this.worldPosition.set(wt.tx, wt.ty); - this.worldScale.set(this.scale.x * Math.sqrt(wt.a * wt.a + wt.c * wt.c), this.scale.y * Math.sqrt(wt.b * wt.b + wt.d * wt.d)); - this.worldRotation = Math.atan2(-wt.c, wt.d); - - // reset the bounds each time this is called! - this._currentBounds = null; - - // Custom callback? - if (this.transformCallback) - { - this.transformCallback.call(this.transformCallbackContext, wt, pt); } }; -// performance increase to avoid using call.. (10x faster) +// Alias for updateTransform. As used in DisplayObject container, etc. PIXI.DisplayObject.prototype.displayObjectUpdateTransform = PIXI.DisplayObject.prototype.updateTransform; -/** - * Retrieves the bounds of the displayObject as a rectangle object - * - * @method getBounds - * @param matrix {Matrix} - * @return {Rectangle} the rectangular bounding area - */ -PIXI.DisplayObject.prototype.getBounds = function(matrix) -{ - matrix = matrix;//just to get passed js hinting (and preserve inheritance) - return PIXI.EmptyRectangle; -}; +Object.defineProperties(PIXI.DisplayObject.prototype, { -/** - * Retrieves the local bounds of the displayObject as a rectangle object - * - * @method getLocalBounds - * @return {Rectangle} the rectangular bounding area - */ -PIXI.DisplayObject.prototype.getLocalBounds = function() -{ - return this.getBounds(PIXI.identityMatrix);///PIXI.EmptyRectangle(); -}; + /** + * The horizontal position of the DisplayObject, in pixels, relative to its parent. + * If you need the world position of the DisplayObject, use `DisplayObject.worldPosition` instead. + * @name PIXI.DisplayObject#x + * @property {number} x - The horizontal position of the DisplayObject, in pixels, relative to its parent. + */ + 'x': { -/** - * Sets the object's stage reference, the stage this object is connected to - * - * @method setStageReference - * @param stage {Stage} the stage that the object will have as its current stage reference - */ -PIXI.DisplayObject.prototype.setStageReference = function(stage) -{ - this.stage = stage; -}; + get: function () { -/** - * Empty, to be overridden by classes that require it. - * - * @method preUpdate - */ -PIXI.DisplayObject.prototype.preUpdate = function() -{ -}; + return this.position.x; -/** - * Useful function that returns a texture of the displayObject object that can then be used to create sprites - * This can be quite useful if your displayObject is static / complicated and needs to be reused multiple times. - * - * @method generateTexture - * @param resolution {Number} The resolution of the texture being generated - * @param scaleMode {Number} See {{#crossLink "PIXI/scaleModes:property"}}PIXI.scaleModes{{/crossLink}} for possible values - * @param renderer {CanvasRenderer|WebGLRenderer} The renderer used to generate the texture. - * @return {RenderTexture} a texture of the graphics object - */ -PIXI.DisplayObject.prototype.generateTexture = function(resolution, scaleMode, renderer) -{ - var bounds = this.getLocalBounds(); + }, - var renderTexture = new PIXI.RenderTexture(bounds.width | 0, bounds.height | 0, renderer, scaleMode, resolution); - - PIXI.DisplayObject._tempMatrix.tx = -bounds.x; - PIXI.DisplayObject._tempMatrix.ty = -bounds.y; - - renderTexture.render(this, PIXI.DisplayObject._tempMatrix); + set: function (value) { - return renderTexture; -}; + this.position.x = value; -/** - * Generates and updates the cached sprite for this object. - * - * @method updateCache - */ -PIXI.DisplayObject.prototype.updateCache = function() -{ - this._generateCachedSprite(); -}; + } -/** - * Calculates the global position of the display object - * - * @method toGlobal - * @param position {Point} The world origin to calculate from - * @return {Point} A point object representing the position of this object - */ -PIXI.DisplayObject.prototype.toGlobal = function(position) -{ - // don't need to u[date the lot - this.displayObjectUpdateTransform(); - return this.worldTransform.apply(position); -}; - -/** - * Calculates the local position of the display object relative to another point - * - * @method toLocal - * @param position {Point} The world origin to calculate from - * @param [from] {DisplayObject} The DisplayObject to calculate the global position from - * @return {Point} A point object representing the position of this object - */ -PIXI.DisplayObject.prototype.toLocal = function(position, from) -{ - if (from) - { - position = from.toGlobal(position); - } - - // don't need to u[date the lot - this.displayObjectUpdateTransform(); - - return this.worldTransform.applyInverse(position); -}; - -/** - * Internal method. - * - * @method _renderCachedSprite - * @param renderSession {Object} The render session - * @private - */ -PIXI.DisplayObject.prototype._renderCachedSprite = function(renderSession) -{ - this._cachedSprite.worldAlpha = this.worldAlpha; - - if (renderSession.gl) - { - PIXI.Sprite.prototype._renderWebGL.call(this._cachedSprite, renderSession); - } - else - { - PIXI.Sprite.prototype._renderCanvas.call(this._cachedSprite, renderSession); - } -}; - -/** - * Internal method. - * - * @method _generateCachedSprite - * @private - */ -PIXI.DisplayObject.prototype._generateCachedSprite = function() -{ - this._cacheAsBitmap = false; - - var bounds = this.getLocalBounds(); - - // Round it off and force non-zero dimensions - bounds.width = Math.max(1, Math.ceil(bounds.width)); - bounds.height = Math.max(1, Math.ceil(bounds.height)); - - this.updateTransform(); - - if (!this._cachedSprite) - { - var renderTexture = new PIXI.RenderTexture(bounds.width, bounds.height); - this._cachedSprite = new PIXI.Sprite(renderTexture); - this._cachedSprite.worldTransform = this.worldTransform; - } - else - { - this._cachedSprite.texture.resize(bounds.width, bounds.height); - } - - // Remove filters - var tempFilters = this._filters; - this._filters = null; - this._cachedSprite.filters = tempFilters; - - // PIXI.DisplayObject._tempMatrix.identity(); - PIXI.DisplayObject._tempMatrix.tx = -bounds.x; - PIXI.DisplayObject._tempMatrix.ty = -bounds.y; - - this._cachedSprite.texture.render(this, PIXI.DisplayObject._tempMatrix, true); - this._cachedSprite.anchor.x = -(bounds.x / bounds.width); - this._cachedSprite.anchor.y = -(bounds.y / bounds.height); - - this._filters = tempFilters; - - this._cacheAsBitmap = true; -}; - -/** -* Destroys the cached sprite. -* -* @method _destroyCachedSprite -* @private -*/ -PIXI.DisplayObject.prototype._destroyCachedSprite = function() -{ - if (!this._cachedSprite) return; - - this._cachedSprite.texture.destroy(true); - - // TODO could be object pooled! - this._cachedSprite = null; -}; - -/** -* Renders the object using the WebGL renderer -* -* @method _renderWebGL -* @param renderSession {RenderSession} -* @private -*/ -PIXI.DisplayObject.prototype._renderWebGL = function(renderSession) -{ - // OVERWRITE; - // this line is just here to pass jshinting :) - renderSession = renderSession; -}; - -/** -* Renders the object using the Canvas renderer -* -* @method _renderCanvas -* @param renderSession {RenderSession} -* @private -*/ -PIXI.DisplayObject.prototype._renderCanvas = function(renderSession) -{ - // OVERWRITE; - // this line is just here to pass jshinting :) - renderSession = renderSession; -}; - -/** - * The position of the displayObject on the x axis relative to the local coordinates of the parent. - * - * @property x - * @type Number - */ -Object.defineProperty(PIXI.DisplayObject.prototype, 'x', { - - get: function() { - return this.position.x; }, - set: function(value) { - this.position.x = value; - } + /** + * The vertical position of the DisplayObject, in pixels, relative to its parent. + * If you need the world position of the DisplayObject, use `DisplayObject.worldPosition` instead. + * @name PIXI.DisplayObject#y + * @property {number} y - The vertical position of the DisplayObject, in pixels, relative to its parent. + */ + 'y': { -}); + get: function () { -/** - * The position of the displayObject on the y axis relative to the local coordinates of the parent. - * - * @property y - * @type Number - */ -Object.defineProperty(PIXI.DisplayObject.prototype, 'y', { + return this.position.y; + + }, + + set: function (value) { + + this.position.y = value; + + } - get: function() { - return this.position.y; }, - set: function(value) { - this.position.y = value; + /** + * Indicates if this DisplayObject is visible, based on it, and all of its parents, `visible` property values. + * @name PIXI.DisplayObject#worldVisible + * @property {boolean} worldVisible - Indicates if this DisplayObject is visible, based on it, and all of its parents, `visible` property values. + */ + 'worldVisible': { + + get: function () { + + if (!this.visible) + { + return false; + } + else + { + var item = this.parent; + + do + { + if (!item.visible) + { + return false; + } + + item = item.parent; + } + while (item); + + return true; + } + + } + + }, + + /** + * Sets a mask for this DisplayObject. A mask is an instance of a Graphics object. + * When applied it limits the visible area of this DisplayObject to the shape of the mask. + * Under a Canvas renderer it uses shape clipping. Under a WebGL renderer it uses a Stencil Buffer. + * To remove a mask, set this property to `null`. + * + * @name PIXI.DisplayObject#mask + * @property {PIXI.Graphics} mask - The mask applied to this DisplayObject. Set to `null` to remove an existing mask. + */ + 'mask': { + + get: function () { + + return this._mask; + + }, + + set: function (value) { + + if (this._mask) + { + this._mask.isMask = false; + } + + this._mask = value; + + if (value) + { + this._mask.isMask = true; + } + + } + + }, + + /** + * Sets the filters for this DisplayObject. This is a WebGL only feature, and is ignored by the Canvas + * Renderer. A filter is a shader applied to this DisplayObject. You can modify the placement of the filter + * using `DisplayObject.filterArea`. + * + * To remove filters, set this property to `null`. + * + * Note: You cannot have a filter set, and a MULTIPLY Blend Mode active, at the same time. Setting a + * filter will reset this DisplayObjects blend mode to NORMAL. + * + * @name PIXI.DisplayObject#filters + * @property {Array} filters - An Array of PIXI.AbstractFilter objects, or objects that extend them. + */ + 'filters': { + + get: function () { + + return this._filters; + + }, + + set: function (value) { + + if (Array.isArray(value)) + { + // Put all the passes in one place. + var passes = []; + + for (var i = 0; i < value.length; i++) + { + var filterPasses = value[i].passes; + + for (var j = 0; j < filterPasses.length; j++) + { + passes.push(filterPasses[j]); + } + } + + // Needed any more? + this._filterBlock = { target: this, filterPasses: passes }; + } + + this._filters = value; + + if (this.blendMode && this.blendMode === PIXI.blendModes.MULTIPLY) + { + this.blendMode = PIXI.blendModes.NORMAL; + } + + } + + }, + + /** + * Sets if this DisplayObject should be cached as a bitmap. + * + * When invoked it will take a snapshot of the DisplayObject, as it is at that moment, and store it + * in a RenderTexture. This is then used whenever this DisplayObject is rendered. It can provide a + * performance benefit for complex, but static, DisplayObjects. I.e. those with lots of children. + * + * Cached Bitmaps do not track their parents. If you update a property of this DisplayObject, it will not + * re-generate the cached bitmap automatically. To do that you need to call `DisplayObject.updateCache`. + * + * To remove a cached bitmap, set this property to `null`. + * + * @name PIXI.DisplayObject#cacheAsBitmap + * @property {boolean} cacheAsBitmap - Cache this DisplayObject as a Bitmap. Set to `null` to remove an existing cached bitmap. + */ + 'cacheAsBitmap': { + + get: function () { + + return this._cacheAsBitmap; + + }, + + set: function (value) { + + if (this._cacheAsBitmap === value) + { + return; + } + + if (value) + { + this._generateCachedSprite(); + } + else + { + this._destroyCachedSprite(); + } + + this._cacheAsBitmap = value; + + } + } }); @@ -14854,6 +14922,8 @@ PIXI.DisplayObjectContainer.prototype.getBounds = function() return PIXI.EmptyRectangle; } + this.updateTransform(); + var minX = Infinity; var minY = Infinity; @@ -15550,44 +15620,6 @@ PIXI.Sprite.prototype._renderCanvas = function(renderSession, matrix) }; -// some helper functions.. - -/** - * - * Helper function that creates a sprite that will contain a texture from the TextureCache based on the frameId - * The frame ids are created when a Texture packer file has been loaded - * - * @method fromFrame - * @static - * @param frameId {String} The frame Id of the texture in the cache - * @return {Sprite} A new Sprite using a texture from the texture cache matching the frameId - */ -PIXI.Sprite.fromFrame = function(frameId) -{ - var texture = PIXI.TextureCache[frameId]; - - if (!texture) throw new Error('The frameId "' + frameId + '" does not exist in the texture cache' + this); - - return new PIXI.Sprite(texture); -}; - -/** - * - * Helper function that creates a sprite that will contain a texture based on an image url - * If the image is not in the texture cache it will be loaded - * - * @method fromImage - * @static - * @param imageId {String} The image url of the texture - * @return {Sprite} A new Sprite using a texture from the texture cache matching the image id - */ -PIXI.Sprite.fromImage = function(imageId, crossorigin, scaleMode) -{ - var texture = PIXI.Texture.fromImage(imageId, crossorigin, scaleMode); - - return new PIXI.Sprite(texture); -}; - /** * @author Mat Groves http://matgroves.com/ */ @@ -15934,7 +15966,7 @@ PIXI.CanvasPool = { for (var i = 0; i < pool.length; i++) { - if (pool[i].parent === null) + if (!pool[i].parent) { return i; } @@ -15960,6 +15992,8 @@ PIXI.CanvasPool = { if (pool[i].parent === parent) { pool[i].parent = null; + pool[i].canvas.width = 1; + pool[i].canvas.height = 1; } } @@ -15981,6 +16015,8 @@ PIXI.CanvasPool = { if (pool[i].canvas === canvas) { pool[i].parent = null; + pool[i].canvas.width = 1; + pool[i].canvas.height = 1; } } @@ -16000,7 +16036,7 @@ PIXI.CanvasPool = { for (var i = 0; i < pool.length; i++) { - if (pool[i].parent !== null) + if (pool[i].parent) { c++; } @@ -16024,7 +16060,7 @@ PIXI.CanvasPool = { for (var i = 0; i < pool.length; i++) { - if (pool[i].parent === null) + if (!pool[i].parent) { c++; } @@ -20428,17 +20464,13 @@ PIXI.CanvasRenderer.prototype.mapBlendModes = function () { * @author Mat Groves http://matgroves.com/ @Doormat23 */ -PIXI.BaseTextureCache = {}; - -PIXI.BaseTextureCacheIdGenerator = 0; - /** * A texture stores the information that represents an image. All textures have a base texture. * * @class BaseTexture * @uses EventTarget * @constructor - * @param source {String} the source object (image or canvas) + * @param source {String|Canvas} the source object (image or canvas) * @param scaleMode {Number} See {{#crossLink "PIXI/scaleModes:property"}}PIXI.scaleModes{{/crossLink}} for possible values */ PIXI.BaseTexture = function(source, scaleMode) @@ -20495,8 +20527,6 @@ PIXI.BaseTexture = function(source, scaleMode) */ this.source = source; - this._UID = PIXI._UID++; - /** * Controls if RGB channels should be pre-multiplied by Alpha (WebGL only) * @@ -20555,12 +20585,6 @@ PIXI.BaseTexture = function(source, scaleMode) */ this.skipRender = false; - /** - * @property imageUrl - * @type String - */ - this.imageUrl = null; - /** * @property _powerOf2 * @type Boolean @@ -20587,7 +20611,6 @@ PIXI.BaseTexture.prototype.forceLoaded = function(width, height) this.width = width; this.height = height; this.dirty(); - }; /** @@ -20597,23 +20620,9 @@ PIXI.BaseTexture.prototype.forceLoaded = function(width, height) */ PIXI.BaseTexture.prototype.destroy = function() { - if (this.imageUrl) - { - delete PIXI.BaseTextureCache[this.imageUrl]; - delete PIXI.TextureCache[this.imageUrl]; - - this.imageUrl = null; - - if (!navigator.isCocoonJS) this.source.src = ''; - } - else if (this.source) + if (this.source) { PIXI.CanvasPool.removeByCanvas(this.source); - - if (this.source._pixiId) - { - delete PIXI.BaseTextureCache[this.source._pixiId]; - } } this.source = null; @@ -20626,12 +20635,11 @@ PIXI.BaseTexture.prototype.destroy = function() * * @method updateSourceImage * @param newSrc {String} the path of the image + * @deprecated This method is deprecated. Please use Phaser.Sprite.loadTexture instead. */ PIXI.BaseTexture.prototype.updateSourceImage = function(newSrc) { - this.hasLoaded = false; - this.source.src = null; - this.source.src = newSrc; + console.warn("PIXI.BaseTexture.updateSourceImage is deprecated. Use Phaser.Sprite.loadTexture instead."); }; /** @@ -20675,49 +20683,6 @@ PIXI.BaseTexture.prototype.unloadFromGPU = function() this.dirty(); }; -/** - * Helper function that creates a base texture from the given image url. - * If the image is not in the base texture cache it will be created and loaded. - * - * @static - * @method fromImage - * @param imageUrl {String} The image url of the texture - * @param crossorigin {Boolean} - * @param scaleMode {Number} See {{#crossLink "PIXI/scaleModes:property"}}PIXI.scaleModes{{/crossLink}} for possible values - * @return {BaseTexture} - */ -PIXI.BaseTexture.fromImage = function(imageUrl, crossorigin, scaleMode) -{ - var baseTexture = PIXI.BaseTextureCache[imageUrl]; - - if(crossorigin === undefined && imageUrl.indexOf('data:') === -1) crossorigin = true; - - if(!baseTexture) - { - // new Image() breaks tex loading in some versions of Chrome. - // See https://code.google.com/p/chromium/issues/detail?id=238071 - var image = new Image(); - - if (crossorigin) - { - image.crossOrigin = ''; - } - - image.src = imageUrl; - baseTexture = new PIXI.BaseTexture(image, scaleMode); - baseTexture.imageUrl = imageUrl; - PIXI.BaseTextureCache[imageUrl] = baseTexture; - - // if there is an @2x at the end of the url we are going to assume its a highres image - if( imageUrl.indexOf(PIXI.RETINA_PREFIX + '.') !== -1) - { - baseTexture.resolution = 2; - } - } - - return baseTexture; -}; - /** * Helper function that creates a base texture from the given canvas element. * @@ -20729,11 +20694,6 @@ PIXI.BaseTexture.fromImage = function(imageUrl, crossorigin, scaleMode) */ PIXI.BaseTexture.fromCanvas = function(canvas, scaleMode) { - if (!canvas._pixiId) - { - canvas._pixiId = 'canvas_' + PIXI.TextureCacheIdGenerator++; - } - if (canvas.width === 0) { canvas.width = 1; @@ -20744,24 +20704,13 @@ PIXI.BaseTexture.fromCanvas = function(canvas, scaleMode) canvas.height = 1; } - var baseTexture = PIXI.BaseTextureCache[canvas._pixiId]; - - if (!baseTexture) - { - baseTexture = new PIXI.BaseTexture(canvas, scaleMode); - PIXI.BaseTextureCache[canvas._pixiId] = baseTexture; - } - - return baseTexture; + return new PIXI.BaseTexture(canvas, scaleMode); }; /** * @author Mat Groves http://matgroves.com/ @Doormat23 */ -PIXI.TextureCache = {}; -PIXI.FrameCache = {}; - /** * TextureSilentFail is a boolean that defaults to `false`. * If `true` then `PIXI.Texture.setFrame` will no longer throw an error if the texture dimensions are incorrect. @@ -20771,8 +20720,6 @@ PIXI.FrameCache = {}; */ PIXI.TextureSilentFail = false; -PIXI.TextureCacheIdGenerator = 0; - /** * A texture stores the information that represents an image or part of an image. It cannot be added * to the display list directly. Instead use it as the texture for a PIXI.Sprite. If no frame is provided then the whole image is used. @@ -21008,46 +20955,6 @@ PIXI.Texture.prototype._updateUvs = function() this._uvs.y3 = (frame.y + frame.height) / th; }; -/** - * Helper function that creates a Texture object from the given image url. - * If the image is not in the texture cache it will be created and loaded. - * - * @static - * @method fromImage - * @param imageUrl {String} The image url of the texture - * @param crossorigin {Boolean} Whether requests should be treated as crossorigin - * @param scaleMode {Number} See {{#crossLink "PIXI/scaleModes:property"}}PIXI.scaleModes{{/crossLink}} for possible values - * @return {Texture} - */ -PIXI.Texture.fromImage = function(imageUrl, crossorigin, scaleMode) -{ - var texture = PIXI.TextureCache[imageUrl]; - - if(!texture) - { - texture = new PIXI.Texture(PIXI.BaseTexture.fromImage(imageUrl, crossorigin, scaleMode)); - PIXI.TextureCache[imageUrl] = texture; - } - - return texture; -}; - -/** - * Helper function that returns a Texture objected based on the given frame id. - * If the frame id is not in the texture cache an error will be thrown. - * - * @static - * @method fromFrame - * @param frameId {String} The frame id of the texture - * @return {Texture} - */ -PIXI.Texture.fromFrame = function(frameId) -{ - var texture = PIXI.TextureCache[frameId]; - if(!texture) throw new Error('The frameId "' + frameId + '" does not exist in the texture cache '); - return texture; -}; - /** * Helper function that creates a new a Texture based on the given canvas element. * @@ -21064,35 +20971,6 @@ PIXI.Texture.fromCanvas = function(canvas, scaleMode) return new PIXI.Texture(baseTexture); }; -/** - * Adds a texture to the global PIXI.TextureCache. This cache is shared across the whole PIXI object. - * - * @static - * @method addTextureToCache - * @param texture {Texture} The Texture to add to the cache. - * @param id {String} The id that the texture will be stored against. - */ -PIXI.Texture.addTextureToCache = function(texture, id) -{ - PIXI.TextureCache[id] = texture; -}; - -/** - * Remove a texture from the global PIXI.TextureCache. - * - * @static - * @method removeTextureFromCache - * @param id {String} The id of the texture to be removed - * @return {Texture} The texture that was removed - */ -PIXI.Texture.removeTextureFromCache = function(id) -{ - var texture = PIXI.TextureCache[id]; - delete PIXI.TextureCache[id]; - delete PIXI.BaseTextureCache[id]; - return texture; -}; - PIXI.TextureUvs = function() { this.x0 = 0; @@ -22778,7 +22656,7 @@ var Phaser = Phaser || { * @constant * @type {string} */ - VERSION: '2.5.0', + VERSION: '2.6.0', /** * An array of Phaser game instances. @@ -23469,6 +23347,20 @@ if (!window.console) */ Phaser.Utils = { + /** + * Takes the given string and reverses it, returning the reversed string. + * For example if given the string `Atari 520ST` it would return `TS025 iratA`. + * + * @method Phaser.Utils.reverseString + * @param {string} string - The string to be reversed. + * @return {string} The reversed string. + */ + reverseString: function (string) { + + return string.split('').reverse().join(''); + + }, + /** * Gets an objects property by string. * @@ -23604,14 +23496,31 @@ Phaser.Utils = { }, /** - * JavaScript string pad http://www.webtoolkit.info/. + * Takes the given string and pads it out, to the length required, using the character + * specified. For example if you need a string to be 6 characters long, you can call: + * + * `pad('bob', 6, '-', 2)` + * + * This would return: `bob---` as it has padded it out to 6 characters, using the `-` on the right. + * + * You can also use it to pad numbers (they are always returned as strings): + * + * `pad(512, 6, '0', 1)` + * + * Would return: `000512` with the string padded to the left. + * + * If you don't specify a direction it'll pad to both sides: + * + * `pad('c64', 7, '*')` + * + * Would return: `**c64**` * * @method Phaser.Utils.pad - * @param {string} str - The target string. + * @param {string} str - The target string. `toString()` will be called on the string, which means you can also pass in common data types like numbers. * @param {integer} [len=0] - The number of characters to be added. * @param {string} [pad=" "] - The string to pad it out with (defaults to a space). - * @param {integer} [dir=3] The direction dir = 1 (left), 2 (right), 3 (both). - * @return {string} The padded string + * @param {integer} [dir=3] - The direction dir = 1 (left), 2 (right), 3 (both). + * @return {string} The padded string. */ pad: function (str, len, pad, dir) { @@ -23619,6 +23528,8 @@ Phaser.Utils = { if (pad === undefined) { var pad = ' '; } if (dir === undefined) { var dir = 3; } + str = str.toString(); + var padlen = 0; if (len + 1 >= str.length) @@ -26844,6 +26755,11 @@ Phaser.Polygon = function () { */ this.closed = true; + /** + * @property {boolean} flattened - Has this Polygon been flattened by a call to `Polygon.flatten` ? + */ + this.flattened = false; + /** * @property {number} type - The base object type. */ @@ -26884,7 +26800,9 @@ Phaser.Polygon.prototype = { }, /** - * Flattens this Polygon so the points are a sequence of numbers. Any Point objects found are removed and replaced with two numbers. + * Flattens this Polygon so the points are a sequence of numbers. + * Any Point objects found are removed and replaced with two numbers. + * Also sets the Polygon.flattened property to `true`. * * @method Phaser.Polygon#flatten * @return {Phaser.Polygon} This Polygon object @@ -26893,6 +26811,8 @@ Phaser.Polygon.prototype = { this._points = this.toNumberArray(); + this.flattened = true; + return this; }, @@ -26934,20 +26854,39 @@ Phaser.Polygon.prototype = { // Adapted from http://www.ecse.rpi.edu/Homepages/wrf/Research/Short_Notes/pnpoly.html by Jonas Raoni Soares Silva - var length = this._points.length; var inside = false; - for (var i = -1, j = length - 1; ++i < length; j = i) + if (this.flattened) { - var ix = this._points[i].x; - var iy = this._points[i].y; - - var jx = this._points[j].x; - var jy = this._points[j].y; - - if (((iy <= y && y < jy) || (jy <= y && y < iy)) && (x < (jx - ix) * (y - iy) / (jy - iy) + ix)) + for (var i = -2, j = this._points.length - 2; (i += 2) < this._points.length; j = i) { - inside = !inside; + var ix = this._points[i]; + var iy = this._points[i + 1]; + + var jx = this._points[j]; + var jy = this._points[j + 1]; + + if (((iy <= y && y < jy) || (jy <= y && y < iy)) && (x < (jx - ix) * (y - iy) / (jy - iy) + ix)) + { + inside = !inside; + } + } + + } + else + { + for (var i = -1, j = this._points.length - 1; ++i < this._points.length; j = i) + { + var ix = this._points[i].x; + var iy = this._points[i].y; + + var jx = this._points[j].x; + var jy = this._points[j].y; + + if (((iy <= y && y < jy) || (jy <= y && y < iy)) && (x < (jx - ix) * (y - iy) / (jy - iy) + ix)) + { + inside = !inside; + } } } @@ -32795,6 +32734,8 @@ Phaser.Group.prototype.align = function (rows, columns, cellWidth, cellHeight, p else { // We keep laying them out until we hit the column limit + r.x += cellWidth; + if (r.x === w) { r.x = 0; @@ -34225,17 +34166,24 @@ Phaser.Group.prototype.getBottom = function () { }; /** -* Get the closest child to given Object. +* Get the closest child to given Object, with optional callback to filter children. * * This can be a Sprite, Group, Image or any object with public x and y properties. * * 'close' is determined by the distance from the objects `x` and `y` properties compared to the childs `x` and `y` properties. * +* You can use the optional `callback` argument to apply your own filter to the distance checks. +* If the child is closer then the previous child, it will be sent to `callback` as the first argument, +* with the distance as the second. The callback should return `true` if it passes your +* filtering criteria, otherwise it should return `false`. +* * @method Phaser.Group#getClosestTo * @param {any} object - The object used to determine the distance. This can be a Sprite, Group, Image or any object with public x and y properties. -* @return {any} The child closest to given object, or null if no child was found. +* @param {function} [callback] - The function that each child will be evaluated against. Each child of the group will be passed to it as its first parameter, with the distance as the second. It should return `true` if the child passes the matching criteria. +* @param {object} [callbackContext] - The context in which the function should be called (usually 'this'). +* @return {any} The child closest to given object, or `null` if no child was found. */ -Phaser.Group.prototype.getClosestTo = function (object) { +Phaser.Group.prototype.getClosestTo = function (object, callback, callbackContext) { var distance = Number.MAX_VALUE; var tempDistance = 0; @@ -34249,7 +34197,7 @@ Phaser.Group.prototype.getClosestTo = function (object) { { tempDistance = Math.abs(Phaser.Point.distance(object, child)); - if (tempDistance < distance) + if (tempDistance < distance && (!callback || callback.call(callbackContext, child, tempDistance))) { distance = tempDistance; result = child; @@ -34262,17 +34210,24 @@ Phaser.Group.prototype.getClosestTo = function (object) { }; /** -* Get the child furthest away from the given Object. +* Get the child furthest away from the given Object, with optional callback to filter children. * * This can be a Sprite, Group, Image or any object with public x and y properties. * * 'furthest away' is determined by the distance from the objects `x` and `y` properties compared to the childs `x` and `y` properties. * +* You can use the optional `callback` argument to apply your own filter to the distance checks. +* If the child is closer then the previous child, it will be sent to `callback` as the first argument, +* with the distance as the second. The callback should return `true` if it passes your +* filtering criteria, otherwise it should return `false`. +* * @method Phaser.Group#getFurthestFrom * @param {any} object - The object used to determine the distance. This can be a Sprite, Group, Image or any object with public x and y properties. -* @return {any} The child furthest from the given object, or null if no child was found. +* @param {function} [callback] - The function that each child will be evaluated against. Each child of the group will be passed to it as its first parameter, with the distance as the second. It should return `true` if the child passes the matching criteria. +* @param {object} [callbackContext] - The context in which the function should be called (usually 'this'). +* @return {any} The child furthest from the given object, or `null` if no child was found. */ -Phaser.Group.prototype.getFurthestFrom = function (object) { +Phaser.Group.prototype.getFurthestFrom = function (object, callback, callbackContext) { var distance = 0; var tempDistance = 0; @@ -34286,7 +34241,7 @@ Phaser.Group.prototype.getFurthestFrom = function (object) { { tempDistance = Math.abs(Phaser.Point.distance(object, child)); - if (tempDistance > distance) + if (tempDistance > distance && (!callback || callback.call(callbackContext, child, tempDistance))) { distance = tempDistance; result = child; @@ -34618,6 +34573,289 @@ Object.defineProperty(Phaser.Group.prototype, "angle", { }); +/** +* The center x coordinate of this Group. +* +* It is derived by calling `getBounds`, calculating the Groups dimensions based on its +* visible children. +* +* Note that no ancestors are factored into the result, meaning that if this Group is +* nested within another Group, with heavy transforms on it, the result of this property +* is likely to be incorrect. It is safe to get and set this property if the Group is a +* top-level descendant of Phaser.World, or untransformed parents. +* +* @name Phaser.Group#centerX +* @property {number} centerX +*/ +Object.defineProperty(Phaser.Group.prototype, "centerX", { + + get: function () { + + return this.getBounds().centerX; + + }, + + set: function (value) { + + var r = this.getBounds(); + var offset = this.x - r.x; + + this.x = (value + offset) - r.halfWidth; + + } + +}); + +/** +* The center y coordinate of this Group. +* +* It is derived by calling `getBounds`, calculating the Groups dimensions based on its +* visible children. +* +* Note that no ancestors are factored into the result, meaning that if this Group is +* nested within another Group, with heavy transforms on it, the result of this property +* is likely to be incorrect. It is safe to get and set this property if the Group is a +* top-level descendant of Phaser.World, or untransformed parents. +* +* @name Phaser.Group#centerY +* @property {number} centerY +*/ +Object.defineProperty(Phaser.Group.prototype, "centerY", { + + get: function () { + + return this.getBounds().centerY; + + }, + + set: function (value) { + + var r = this.getBounds(); + var offset = this.y - r.y; + + this.y = (value + offset) - r.halfHeight; + + } + +}); + +/** +* The left coordinate of this Group. +* +* It is derived by calling `getBounds`, calculating the Groups dimensions based on its +* visible children. +* +* Note that no ancestors are factored into the result, meaning that if this Group is +* nested within another Group, with heavy transforms on it, the result of this property +* is likely to be incorrect. It is safe to get and set this property if the Group is a +* top-level descendant of Phaser.World, or untransformed parents. +* +* @name Phaser.Group#left +* @property {number} left +*/ +Object.defineProperty(Phaser.Group.prototype, "left", { + + get: function () { + + return this.getBounds().left; + + }, + + set: function (value) { + + var r = this.getBounds(); + var offset = this.x - r.x; + + this.x = value + offset; + + } + +}); + +/** +* The right coordinate of this Group. +* +* It is derived by calling `getBounds`, calculating the Groups dimensions based on its +* visible children. +* +* Note that no ancestors are factored into the result, meaning that if this Group is +* nested within another Group, with heavy transforms on it, the result of this property +* is likely to be incorrect. It is safe to get and set this property if the Group is a +* top-level descendant of Phaser.World, or untransformed parents. +* +* @name Phaser.Group#right +* @property {number} right +*/ +Object.defineProperty(Phaser.Group.prototype, "right", { + + get: function () { + + return this.getBounds().right; + + }, + + set: function (value) { + + var r = this.getBounds(); + var offset = this.x - r.x; + + this.x = (value + offset) - r.width; + + } + +}); + +/** +* The top coordinate of this Group. +* +* It is derived by calling `getBounds`, calculating the Groups dimensions based on its +* visible children. +* +* Note that no ancestors are factored into the result, meaning that if this Group is +* nested within another Group, with heavy transforms on it, the result of this property +* is likely to be incorrect. It is safe to get and set this property if the Group is a +* top-level descendant of Phaser.World, or untransformed parents. +* +* @name Phaser.Group#top +* @property {number} top +*/ +Object.defineProperty(Phaser.Group.prototype, "top", { + + get: function () { + + return this.getBounds().top; + + }, + + set: function (value) { + + var r = this.getBounds(); + var offset = this.y - r.y; + + this.y = (value + offset); + + } + +}); + +/** +* The bottom coordinate of this Group. +* +* It is derived by calling `getBounds`, calculating the Groups dimensions based on its +* visible children. +* +* Note that no ancestors are factored into the result, meaning that if this Group is +* nested within another Group, with heavy transforms on it, the result of this property +* is likely to be incorrect. It is safe to get and set this property if the Group is a +* top-level descendant of Phaser.World, or untransformed parents. +* +* @name Phaser.Group#bottom +* @property {number} bottom +*/ +Object.defineProperty(Phaser.Group.prototype, "bottom", { + + get: function () { + + return this.getBounds().bottom; + + }, + + set: function (value) { + + var r = this.getBounds(); + var offset = this.y - r.y; + + this.y = (value + offset) - r.height; + + } + +}); + +/** +* Aligns this Group within another Game Object, or Rectangle, known as the +* 'container', to one of 9 possible positions. +* +* The container must be a Game Object, or Phaser.Rectangle object. This can include properties +* such as `World.bounds` or `Camera.view`, for aligning Groups within the world +* and camera bounds. Or it can include other Sprites, Images, Text objects, BitmapText, +* TileSprites or Buttons. +* +* Please note that aligning a Group to another Game Object does **not** make it a child of +* the container. It simply modifies its position coordinates so it aligns with it. +* +* The position constants you can use are: +* +* `Phaser.TOP_LEFT`, `Phaser.TOP_CENTER`, `Phaser.TOP_RIGHT`, `Phaser.LEFT_CENTER`, +* `Phaser.CENTER`, `Phaser.RIGHT_CENTER`, `Phaser.BOTTOM_LEFT`, +* `Phaser.BOTTOM_CENTER` and `Phaser.BOTTOM_RIGHT`. +* +* Groups are placed in such a way that their _bounds_ align with the +* container, taking into consideration rotation and scale of its children. +* This allows you to neatly align Groups, irrespective of their position value. +* +* The optional `offsetX` and `offsetY` arguments allow you to apply extra spacing to the final +* aligned position of the Group. For example: +* +* `group.alignIn(background, Phaser.BOTTOM_RIGHT, -20, -20)` +* +* Would align the `group` to the bottom-right, but moved 20 pixels in from the corner. +* Think of the offsets as applying an adjustment to the containers bounds before the alignment takes place. +* So providing a negative offset will 'shrink' the container bounds by that amount, and providing a positive +* one expands it. +* +* @method Phaser.Group#alignIn +* @param {Phaser.Rectangle|Phaser.Sprite|Phaser.Image|Phaser.Text|Phaser.BitmapText|Phaser.Button|Phaser.Graphics|Phaser.TileSprite} container - The Game Object or Rectangle with which to align this Group to. Can also include properties such as `World.bounds` or `Camera.view`. +* @param {integer} [position] - The position constant. One of `Phaser.TOP_LEFT` (default), `Phaser.TOP_CENTER`, `Phaser.TOP_RIGHT`, `Phaser.LEFT_CENTER`, `Phaser.CENTER`, `Phaser.RIGHT_CENTER`, `Phaser.BOTTOM_LEFT`, `Phaser.BOTTOM_CENTER` or `Phaser.BOTTOM_RIGHT`. +* @param {integer} [offsetX=0] - A horizontal adjustment of the Containers bounds, applied to the aligned position of the Game Object. Use a negative value to shrink the bounds, positive to increase it. +* @param {integer} [offsetY=0] - A vertical adjustment of the Containers bounds, applied to the aligned position of the Game Object. Use a negative value to shrink the bounds, positive to increase it. +* @return {Phaser.Group} This Group. +*/ + +// This function is set at the bottom of src/gameobjects/components/Bounds.js + +/** +* Aligns this Group to the side of another Game Object, or Rectangle, known as the +* 'parent', in one of 11 possible positions. +* +* The parent must be a Game Object, or Phaser.Rectangle object. This can include properties +* such as `World.bounds` or `Camera.view`, for aligning Groups within the world +* and camera bounds. Or it can include other Sprites, Images, Text objects, BitmapText, +* TileSprites or Buttons. +* +* Please note that aligning a Group to another Game Object does **not** make it a child of +* the parent. It simply modifies its position coordinates so it aligns with it. +* +* The position constants you can use are: +* +* `Phaser.TOP_LEFT` (default), `Phaser.TOP_CENTER`, `Phaser.TOP_RIGHT`, `Phaser.LEFT_TOP`, +* `Phaser.LEFT_CENTER`, `Phaser.LEFT_BOTTOM`, `Phaser.RIGHT_TOP`, `Phaser.RIGHT_CENTER`, +* `Phaser.RIGHT_BOTTOM`, `Phaser.BOTTOM_LEFT`, `Phaser.BOTTOM_CENTER` +* and `Phaser.BOTTOM_RIGHT`. +* +* Groups are placed in such a way that their _bounds_ align with the +* parent, taking into consideration rotation and scale of the children. +* This allows you to neatly align Groups, irrespective of their position value. +* +* The optional `offsetX` and `offsetY` arguments allow you to apply extra spacing to the final +* aligned position of the Group. For example: +* +* `group.alignTo(background, Phaser.BOTTOM_RIGHT, -20, -20)` +* +* Would align the `group` to the bottom-right, but moved 20 pixels in from the corner. +* Think of the offsets as applying an adjustment to the parents bounds before the alignment takes place. +* So providing a negative offset will 'shrink' the parent bounds by that amount, and providing a positive +* one expands it. +* +* @method Phaser.Group#alignTo +* @param {Phaser.Rectangle|Phaser.Sprite|Phaser.Image|Phaser.Text|Phaser.BitmapText|Phaser.Button|Phaser.Graphics|Phaser.TileSprite} parent - The Game Object or Rectangle with which to align this Group to. Can also include properties such as `World.bounds` or `Camera.view`. +* @param {integer} [position] - The position constant. One of `Phaser.TOP_LEFT`, `Phaser.TOP_CENTER`, `Phaser.TOP_RIGHT`, `Phaser.LEFT_TOP`, `Phaser.LEFT_CENTER`, `Phaser.LEFT_BOTTOM`, `Phaser.RIGHT_TOP`, `Phaser.RIGHT_CENTER`, `Phaser.RIGHT_BOTTOM`, `Phaser.BOTTOM_LEFT`, `Phaser.BOTTOM_CENTER` or `Phaser.BOTTOM_RIGHT`. +* @param {integer} [offsetX=0] - A horizontal adjustment of the Containers bounds, applied to the aligned position of the Game Object. Use a negative value to shrink the bounds, positive to increase it. +* @param {integer} [offsetY=0] - A vertical adjustment of the Containers bounds, applied to the aligned position of the Game Object. Use a negative value to shrink the bounds, positive to increase it. +* @return {Phaser.Group} This Group. +*/ + +// This function is set at the bottom of src/gameobjects/components/Bounds.js + /** * A display object is any object that can be rendered in the Phaser/pixi.js scene graph. * @@ -40887,9 +41125,10 @@ Phaser.InputHandler.prototype = { /** * Starts the Input Handler running. This is called automatically when you enable input on a Sprite, or can be called directly if you need to set a specific priority. + * * @method Phaser.InputHandler#start - * @param {number} priority - Higher priority sprites take click priority over low-priority sprites when they are stacked on-top of each other. - * @param {boolean} useHandCursor - If true the Sprite will show the hand cursor on mouse-over (doesn't apply to mobile browsers) + * @param {number} [priority=0] - Higher priority sprites take click priority over low-priority sprites when they are stacked on-top of each other. + * @param {boolean} [useHandCursor=false] - If true the Sprite will show the hand cursor on mouse-over (doesn't apply to mobile browsers) * @return {Phaser.Sprite} The Sprite object to which the Input Handler is bound. */ start: function (priority, useHandCursor) { @@ -41510,7 +41749,7 @@ Phaser.InputHandler.prototype = { } else if (this.draggable && this._draggedPointerID === pointer.id) { - return this.updateDrag(pointer); + return this.updateDrag(pointer, false); } else if (this._pointerData[pointer.id].isOver) { @@ -41789,24 +42028,24 @@ Phaser.InputHandler.prototype = { }, /** - * Updates the Pointer drag on this Sprite. + * Called as a Pointer actively drags this Game Object. + * * @method Phaser.InputHandler#updateDrag - * @param {Phaser.Pointer} pointer + * @private + * @param {Phaser.Pointer} pointer - The Pointer causing the drag update. + * @param {boolean} fromStart - True if this is the first update, immediately after the drag has started. * @return {boolean} */ updateDrag: function (pointer, fromStart) { + if (fromStart === undefined) { fromStart = false; } + if (pointer.isUp) { this.stopDrag(pointer); return false; } - if (fromStart === undefined) - { - fromStart = false; - } - var px = this.globalToLocalX(pointer.x) + this._dragPoint.x + this.dragOffset.x; var py = this.globalToLocalY(pointer.y) + this._dragPoint.y + this.dragOffset.y; @@ -42257,7 +42496,6 @@ Phaser.InputHandler.prototype = { }, - /** * Bounds Rect check for the sprite drag * @@ -45322,6 +45560,11 @@ Phaser.Component.Bounds.prototype = { }; +// Phaser.Group extensions + +Phaser.Group.prototype.alignIn = Phaser.Component.Bounds.prototype.alignIn; +Phaser.Group.prototype.alignTo = Phaser.Component.Bounds.prototype.alignTo; + /** * @author Richard Davey * @copyright 2016 Photon Storm Ltd. @@ -46141,7 +46384,7 @@ Phaser.Component.Destroy.prototype = { */ /** -* The Events component is a collection of events fired by the parent game object. +* The Events component is a collection of events fired by the parent Game Object. * * Phaser uses what are known as 'Signals' for all event handling. All of the events in * this class are signals you can subscribe to, much in the same way you'd "listen" for @@ -46211,92 +46454,187 @@ Phaser.Events.prototype = { // The following properties are sentinels that will be replaced with getters /** - * @property {Phaser.Signal} onAddedToGroup - This signal is dispatched when the parent is added to a new Group. + * This signal is dispatched when this Game Object is added to a new Group. + * It is sent two arguments: + * {any} The Game Object that was added to the Group. + * {Phaser.Group} The Group it was added to. + * @property {Phaser.Signal} onAddedToGroup */ onAddedToGroup: null, /** - * @property {Phaser.Signal} onRemovedFromGroup - This signal is dispatched when the parent is removed from a Group. + * This signal is dispatched when the Game Object is removed from a Group. + * It is sent two arguments: + * {any} The Game Object that was removed from the Group. + * {Phaser.Group} The Group it was removed from. + * @property {Phaser.Signal} onRemovedFromGroup */ onRemovedFromGroup: null, /** - * @property {Phaser.Signal} onRemovedFromWorld - This signal is dispatched if this item or any of its parents are removed from the game world. + * This Signal is never used internally by Phaser and is now deprecated. + * @deprecated + * @property {Phaser.Signal} onRemovedFromWorld */ onRemovedFromWorld: null, /** - * @property {Phaser.Signal} onDestroy - This signal is dispatched when the parent is destroyed. + * This signal is dispatched when the Game Object is destroyed. + * This happens when `Sprite.destroy()` is called, or `Group.destroy()` with `destroyChildren` set to true. + * It is sent one argument: + * {any} The Game Object that was destroyed. + * @property {Phaser.Signal} onDestroy */ onDestroy: null, /** - * @property {Phaser.Signal} onKilled - This signal is dispatched when the parent is killed. + * This signal is dispatched when the Game Object is killed. + * This happens when `Sprite.kill()` is called. + * Please understand the difference between `kill` and `destroy` by looking at their respective methods. + * It is sent one argument: + * {any} The Game Object that was killed. + * @property {Phaser.Signal} onKilled */ onKilled: null, /** - * @property {Phaser.Signal} onRevived - This signal is dispatched when the parent is revived. + * This signal is dispatched when the Game Object is revived from a previously killed state. + * This happens when `Sprite.revive()` is called. + * It is sent one argument: + * {any} The Game Object that was revived. + * @property {Phaser.Signal} onRevived */ onRevived: null, /** - * @property {Phaser.Signal} onOutOfBounds - This signal is dispatched when the parent leaves the world bounds (only if Sprite.checkWorldBounds is true). + * This signal is dispatched when the Game Object leaves the Phaser.World bounds. + * This signal is only if `Sprite.checkWorldBounds` is set to `true`. + * It is sent one argument: + * {any} The Game Object that left the World bounds. + * @property {Phaser.Signal} onOutOfBounds */ onOutOfBounds: null, /** - * @property {Phaser.Signal} onEnterBounds - This signal is dispatched when the parent returns within the world bounds (only if Sprite.checkWorldBounds is true). + * This signal is dispatched when the Game Object returns within the Phaser.World bounds, having previously been outside of them. + * This signal is only if `Sprite.checkWorldBounds` is set to `true`. + * It is sent one argument: + * {any} The Game Object that entered the World bounds. + * @property {Phaser.Signal} onEnterBounds */ onEnterBounds: null, /** - * @property {Phaser.Signal} onInputOver - This signal is dispatched if the parent is inputEnabled and receives an over event from a Pointer. + * This signal is dispatched if the Game Object has `inputEnabled` set to `true`, + * and receives an over event from a Phaser.Pointer. + * It is sent two arguments: + * {any} The Game Object that received the event. + * {Phaser.Pointer} The Phaser.Pointer object that caused the event. + * @property {Phaser.Signal} onInputOver */ onInputOver: null, /** - * @property {Phaser.Signal} onInputOut - This signal is dispatched if the parent is inputEnabled and receives an out event from a Pointer. + * This signal is dispatched if the Game Object has `inputEnabled` set to `true`, + * and receives an out event from a Phaser.Pointer, which was previously over it. + * It is sent two arguments: + * {any} The Game Object that received the event. + * {Phaser.Pointer} The Phaser.Pointer object that caused the event. + * @property {Phaser.Signal} onInputOut */ onInputOut: null, /** - * @property {Phaser.Signal} onInputDown - This signal is dispatched if the parent is inputEnabled and receives a down event from a Pointer. + * This signal is dispatched if the Game Object has `inputEnabled` set to `true`, + * and receives a down event from a Phaser.Pointer. This effectively means the Pointer has been + * pressed down (but not yet released) on the Game Object. + * It is sent two arguments: + * {any} The Game Object that received the event. + * {Phaser.Pointer} The Phaser.Pointer object that caused the event. + * @property {Phaser.Signal} onInputDown */ onInputDown: null, /** - * @property {Phaser.Signal} onInputUp - This signal is dispatched if the parent is inputEnabled and receives an up event from a Pointer. + * This signal is dispatched if the Game Object has `inputEnabled` set to `true`, + * and receives an up event from a Phaser.Pointer. This effectively means the Pointer had been + * pressed down, and was then released on the Game Object. + * It is sent three arguments: + * {any} The Game Object that received the event. + * {Phaser.Pointer} The Phaser.Pointer object that caused the event. + * {boolean} isOver - Is the Pointer still over the Game Object? + * @property {Phaser.Signal} onInputUp */ onInputUp: null, /** - * @property {Phaser.Signal} onDragStart - This signal is dispatched if the parent is inputEnabled and receives a drag start event from a Pointer. + * This signal is dispatched if the Game Object has been `inputEnabled` and `enableDrag` has been set. + * It is sent when a Phaser.Pointer starts to drag the Game Object, taking into consideration the various + * drag limitations that may be set. + * It is sent four arguments: + * {any} The Game Object that received the event. + * {Phaser.Pointer} The Phaser.Pointer object that caused the event. + * {number} The x coordinate that the drag started from. + * {number} The y coordinate that the drag started from. + * @property {Phaser.Signal} onDragStart */ onDragStart: null, /** - * @property {Phaser.Signal} onDragUpdate - This signal is dispatched if the parent is inputEnabled and receives a drag update event from a Pointer. + * This signal is dispatched if the Game Object has been `inputEnabled` and `enableDrag` has been set. + * It is sent when a Phaser.Pointer is actively dragging the Game Object. + * Be warned: This is a high volume Signal. Be careful what you bind to it. + * It is sent six arguments: + * {any} The Game Object that received the event. + * {Phaser.Pointer} The Phaser.Pointer object that caused the event. + * {number} The new x coordinate of the Game Object. + * {number} The new y coordinate of the Game Object. + * {Phaser.Point} A Point object that contains the point the Game Object was snapped to, if `snapOnDrag` has been enabled. + * {boolean} The `fromStart` boolean, indicates if this is the first update immediately after the drag has started. + * @property {Phaser.Signal} onDragUpdate */ onDragUpdate: null, /** - * @property {Phaser.Signal} onDragStop - This signal is dispatched if the parent is inputEnabled and receives a drag stop event from a Pointer. + * This signal is dispatched if the Game Object has been `inputEnabled` and `enableDrag` has been set. + * It is sent when a Phaser.Pointer stops dragging the Game Object. + * It is sent two arguments: + * {any} The Game Object that received the event. + * {Phaser.Pointer} The Phaser.Pointer object that caused the event. + * @property {Phaser.Signal} onDragStop */ onDragStop: null, /** - * @property {Phaser.Signal} onAnimationStart - This signal is dispatched when the parent has an animation that is played. + * This signal is dispatched if the Game Object has the AnimationManager component, + * and an Animation has been played. + * You can also listen to `Animation.onStart` rather than via the Game Objects events. + * It is sent two arguments: + * {any} The Game Object that received the event. + * {Phaser.Animation} The Phaser.Animation that was started. + * @property {Phaser.Signal} onAnimationStart */ onAnimationStart: null, /** - * @property {Phaser.Signal} onAnimationComplete - This signal is dispatched when the parent has an animation that finishes playing. + * This signal is dispatched if the Game Object has the AnimationManager component, + * and an Animation has been stopped (via `animation.stop()` and the `dispatchComplete` argument has been set. + * You can also listen to `Animation.onComplete` rather than via the Game Objects events. + * It is sent two arguments: + * {any} The Game Object that received the event. + * {Phaser.Animation} The Phaser.Animation that was stopped. + * @property {Phaser.Signal} onAnimationComplete */ onAnimationComplete: null, /** - * @property {Phaser.Signal} onAnimationLoop - This signal is dispatched when the parent has an animation that loops playback. + * This signal is dispatched if the Game Object has the AnimationManager component, + * and an Animation has looped playback. + * You can also listen to `Animation.onLoop` rather than via the Game Objects events. + * It is sent two arguments: + * {any} The Game Object that received the event. + * {Phaser.Animation} The Phaser.Animation that looped. + * @property {Phaser.Signal} onAnimationLoop */ onAnimationLoop: null @@ -46602,6 +46940,10 @@ Phaser.Component.InputEnabled.prototype = { * Note that Input related events are dispatched from `this.events`, i.e.: `events.onInputDown`. * * If you set this property to false it will stop the Input Handler from processing any more input events. + * + * If you want to _temporarily_ disable input for a Game Object, then it's better to set + * `input.enabled = false`, as it won't reset any of the Input Handlers internal properties. + * You can then toggle this back on as needed. * * @property {boolean} inputEnabled */ @@ -48755,7 +49097,7 @@ Phaser.Sprite = function (game, x, y, key, frame) { */ this.physicsType = Phaser.SPRITE; - PIXI.Sprite.call(this, PIXI.TextureCache['__default']); + PIXI.Sprite.call(this, Phaser.Cache.DEFAULT); Phaser.Component.Core.init.call(this, game, x, y, key, frame); @@ -48857,7 +49199,7 @@ Phaser.Image = function (game, x, y, key, frame) { */ this.type = Phaser.IMAGE; - PIXI.Sprite.call(this, PIXI.TextureCache['__default']); + PIXI.Sprite.call(this, Phaser.Cache.DEFAULT); Phaser.Component.Core.init.call(this, game, x, y, key, frame); @@ -49562,11 +49904,13 @@ Phaser.SpriteBatch.prototype.constructor = Phaser.SpriteBatch; * @param {string} key - Internal Phaser reference key for the BitmapData. * @param {number} [width=256] - The width of the BitmapData in pixels. If undefined or zero it's set to a default value. * @param {number} [height=256] - The height of the BitmapData in pixels. If undefined or zero it's set to a default value. +* @param {boolean} [skipPool=false] - When this BitmapData generates its internal canvas to use for rendering, it will get the canvas from the CanvasPool if false, or create its own if true. */ -Phaser.BitmapData = function (game, key, width, height) { +Phaser.BitmapData = function (game, key, width, height, skipPool) { if (width === undefined || width === 0) { width = 256; } if (height === undefined || height === 0) { height = 256; } + if (skipPool === undefined) { skipPool = false; } /** * @property {Phaser.Game} game - A reference to the currently running game. @@ -49592,7 +49936,7 @@ Phaser.BitmapData = function (game, key, width, height) { * @property {HTMLCanvasElement} canvas - The canvas to which this BitmapData draws. * @default */ - this.canvas = PIXI.CanvasPool.create(this, width, height); + this.canvas = Phaser.Canvas.create(this, width, height, null, skipPool); /** * @property {CanvasRenderingContext2D} context - The 2d context of the canvas. @@ -51094,7 +51438,13 @@ Phaser.BitmapData.prototype = { /** * Draws the given Phaser.Sprite, Phaser.Image or Phaser.Text to this BitmapData at the coordinates specified. * You can use the optional width and height values to 'stretch' the sprite as it is drawn. This uses drawImage stretching, not scaling. - * When drawing it will take into account the Sprites rotation, scale and alpha values. + * + * The children will be drawn at their `x` and `y` world space coordinates. If this is outside the bounds of the BitmapData they won't be visible. + * When drawing it will take into account the rotation, scale, scaleMode, alpha and tint values. + * + * Note: You should ensure that at least 1 full update has taken place before calling this, + * otherwise the objects are likely to render incorrectly, if at all. + * You can trigger an update yourself by calling `stage.updateTransform()` before calling `draw`. * * @method Phaser.BitmapData#draw * @param {Phaser.Sprite|Phaser.Image|Phaser.Text|Phaser.RenderTexture} source - The Sprite, Image or Text object to draw onto this BitmapData. @@ -51125,7 +51475,7 @@ Phaser.BitmapData.prototype = { * * Note: You should ensure that at least 1 full update has taken place before calling this, * otherwise the objects are likely to render incorrectly, if at all. - * You can trigger an update yourself by calling `stage.updateTransform()` before calling `drawGroup`. + * You can trigger an update yourself by calling `stage.updateTransform()` before calling `drawGroup`. * * @method Phaser.BitmapData#drawGroup * @param {Phaser.Group} group - The Group to draw onto this BitmapData. Can also be Phaser.World. @@ -52179,6 +52529,7 @@ PIXI.Graphics.prototype.lineTo = function(x, y) this.currentPath.shape.points.push(x, y); this.dirty = true; + this.updateLocalBounds(); return this; }; @@ -52233,6 +52584,7 @@ PIXI.Graphics.prototype.quadraticCurveTo = function(cpX, cpY, toX, toY) } this.dirty = true; + this.updateLocalBounds(); return this; }; @@ -52291,6 +52643,7 @@ PIXI.Graphics.prototype.bezierCurveTo = function(cpX, cpY, cpX2, cpY2, toX, toY) } this.dirty = true; + this.updateLocalBounds(); return this; }; @@ -52360,6 +52713,7 @@ PIXI.Graphics.prototype.arcTo = function(x1, y1, x2, y2, radius) } this.dirty = true; + this.updateLocalBounds(); return this; }; @@ -52445,6 +52799,7 @@ PIXI.Graphics.prototype.arc = function(cx, cy, radius, startAngle, endAngle, ant } this.dirty = true; + this.updateLocalBounds(); return this; }; @@ -52606,6 +52961,8 @@ PIXI.Graphics.prototype.clear = function() this.clearDirty = true; this.graphicsData = []; + this.updateLocalBounds(); + return this; }; @@ -52640,8 +52997,6 @@ PIXI.Graphics.prototype.generateTexture = function(resolution, scaleMode, paddin canvasBuffer.context.translate(-bounds.x, -bounds.y); - // Call here - PIXI.CanvasGraphics.renderGraphics(this, canvasBuffer.context); return texture; @@ -53153,8 +53508,11 @@ PIXI.Graphics.prototype.drawShape = function(shape) } this.dirty = true; + + this.updateLocalBounds(); return data; + }; /** @@ -55340,7 +55698,29 @@ PIXI.CanvasGraphics.updateGraphicsTint = function(graphics) */ /** -* Creates a new `Graphics` object. +* A Graphics object is a way to draw primitives to your game. Primitives include forms of geometry, such as Rectangles, +* Circles and Polygons. They also include lines, arcs and curves. When you initially create a Graphics object it will +* be empty. To 'draw' to it you first specify a lineStyle or fillStyle (or both), and then draw a shape. For example: +* +* ``` +* graphics.beginFill(0xff0000); +* graphics.drawCircle(50, 50, 100); +* graphics.endFill(); +* ``` +* +* This will draw a circle shape to the Graphics object, with a diameter of 100, located at x: 50, y: 50. +* +* When a Graphics object is rendered it will render differently based on if the game is running under Canvas or +* WebGL. Under Canvas it will use the HTML Canvas context drawing operations to draw the path. Under WebGL the +* graphics data is decomposed into polygons. Both of these are expensive processes, especially with complex shapes. +* +* If your Graphics object doesn't change much (or at all) once you've drawn your shape to it, then you will help +* performance by calling `Graphics.generateTexture`. This will 'bake' the Graphics object into a Texture, and return it. +* You can then use this Texture for Sprites or other display objects. If your Graphics object updates frequently then +* you should avoid doing this, as it will constantly generate new textures, which will consume memory. +* +* As you can tell, Graphics objects are a bit of a trade-off. While they are extremely useful, you need to be careful +* in their complexity and quantity of them in your game. * * @class Phaser.Graphics * @constructor @@ -56955,18 +57335,34 @@ Phaser.Text.prototype.componentsToFont = function (components) { }; /** - * The text to be displayed by this Text object. - * Use a \n to insert a carriage return and split the text. - * The text will be rendered with any style currently set. - * - * @method Phaser.Text#setText - * @param {string} [text] - The text to be displayed. Set to an empty string to clear text that is already present. - * @return {Phaser.Text} This Text instance. - */ -Phaser.Text.prototype.setText = function (text) { +* The text to be displayed by this Text object. +* Use a \n to insert a carriage return and split the text. +* The text will be rendered with any style currently set. +* +* Use the optional `immediate` argument if you need the Text display to update immediately. +* +* If not it will re-create the texture of this Text object during the next time the render +* loop is called. +* +* @method Phaser.Text#setText +* @param {string} [text] - The text to be displayed. Set to an empty string to clear text that is already present. +* @param {boolean} [immediate=false] - Update the texture used by this Text object immediately (true) or automatically during the next render loop (false). +* @return {Phaser.Text} This Text instance. +*/ +Phaser.Text.prototype.setText = function (text, immediate) { + + if (immediate === undefined) { immediate = false; } this.text = text.toString() || ''; - this.dirty = true; + + if (immediate) + { + this.updateText(); + } + else + { + this.dirty = true; + } return this; @@ -57977,7 +58373,7 @@ Object.defineProperty(Phaser.Text.prototype, 'height', { Phaser.Text.fontPropertiesCache = {}; -Phaser.Text.fontPropertiesCanvas = PIXI.CanvasPool.create(Phaser.Text.fontPropertiesCanvas); +Phaser.Text.fontPropertiesCanvas = document.createElement('canvas'); Phaser.Text.fontPropertiesContext = Phaser.Text.fontPropertiesCanvas.getContext('2d'); /** @@ -59355,7 +59751,7 @@ Phaser.Rope = function (game, x, y, key, frame, points) { */ this.type = Phaser.ROPE; - PIXI.Rope.call(this, PIXI.TextureCache['__default'], this.points); + PIXI.Rope.call(this, Phaser.Cache.DEFAULT, this.points); Phaser.Component.Core.init.call(this, game, x, y, key, frame); @@ -61130,14 +61526,7 @@ Phaser.Canvas = { width = width || 256; height = height || 256; - if (skipPool === undefined) - { - var canvas = PIXI.CanvasPool.create(parent, width, height); - } - else - { - var canvas = document.createElement('canvas'); - } + var canvas = (skipPool) ? document.createElement('canvas') : PIXI.CanvasPool.create(parent, width, height); if (typeof id === 'string' && id !== '') { @@ -61730,7 +62119,9 @@ Phaser.Math = { * @return {number} n mod 1 */ shear: function (n) { + return n % 1; + }, /** @@ -61741,8 +62132,8 @@ Phaser.Math = { * @method Phaser.Math#snapTo * @param {number} input - The value to snap. * @param {number} gap - The interval gap of the grid. - * @param {number} [start] - Optional starting offset for gap. - * @return {number} + * @param {number} [start=0] - Optional starting offset for gap. + * @return {number} The snapped value. */ snapTo: function (input, gap, start) { @@ -61768,8 +62159,8 @@ Phaser.Math = { * @method Phaser.Math#snapToFloor * @param {number} input - The value to snap. * @param {number} gap - The interval gap of the grid. - * @param {number} [start] - Optional starting offset for gap. - * @return {number} + * @param {number} [start=0] - Optional starting offset for gap. + * @return {number} The snapped value. */ snapToFloor: function (input, gap, start) { @@ -61795,8 +62186,8 @@ Phaser.Math = { * @method Phaser.Math#snapToCeil * @param {number} input - The value to snap. * @param {number} gap - The interval gap of the grid. - * @param {number} [start] - Optional starting offset for gap. - * @return {number} + * @param {number} [start=0] - Optional starting offset for gap. + * @return {number} The snapped value. */ snapToCeil: function (input, gap, start) { @@ -61844,9 +62235,9 @@ Phaser.Math = { * * @method Phaser.Math#roundTo * @param {number} value - The value to round. - * @param {number} place - The place to round to. - * @param {number} base - The base to round in... default is 10 for decimal. - * @return {number} + * @param {number} [place=0] - The place to round to. + * @param {number} [base=10] - The base to round in. Default is 10 for decimal. + * @return {number} The rounded value. */ roundTo: function (value, place, base) { @@ -61860,11 +62251,14 @@ Phaser.Math = { }, /** + * Floors to some place comparative to a `base`, default is 10 for decimal place. + * The `place` is represented by the power applied to `base` to get that place. + * * @method Phaser.Math#floorTo * @param {number} value - The value to round. - * @param {number} place - The place to round to. - * @param {number} base - The base to round in... default is 10 for decimal. - * @return {number} + * @param {number} [place=0] - The place to round to. + * @param {number} [base=10] - The base to round in. Default is 10 for decimal. + * @return {number} The rounded value. */ floorTo: function (value, place, base) { @@ -61878,11 +62272,14 @@ Phaser.Math = { }, /** + * Ceils to some place comparative to a `base`, default is 10 for decimal place. + * The `place` is represented by the power applied to `base` to get that place. + * * @method Phaser.Math#ceilTo * @param {number} value - The value to round. - * @param {number} place - The place to round to. - * @param {number} base - The base to round in... default is 10 for decimal. - * @return {number} + * @param {number} [place=0] - The place to round to. + * @param {number} [base=10] - The base to round in. Default is 10 for decimal. + * @return {number} The rounded value. */ ceilTo: function (value, place, base) { @@ -61897,42 +62294,51 @@ Phaser.Math = { /** * Find the angle of a segment from (x1, y1) -> (x2, y2). + * * @method Phaser.Math#angleBetween - * @param {number} x1 - * @param {number} y1 - * @param {number} x2 - * @param {number} y2 + * @param {number} x1 - The x coordinate of the first value. + * @param {number} y1 - The y coordinate of the first value. + * @param {number} x2 - The x coordinate of the second value. + * @param {number} y2 - The y coordinate of the second value. * @return {number} The angle, in radians. */ angleBetween: function (x1, y1, x2, y2) { + return Math.atan2(y2 - y1, x2 - x1); + }, /** * Find the angle of a segment from (x1, y1) -> (x2, y2). - * Note that the difference between this method and Math.angleBetween is that this assumes the y coordinate travels + * + * The difference between this method and Math.angleBetween is that this assumes the y coordinate travels * down the screen. * * @method Phaser.Math#angleBetweenY - * @param {number} x1 - * @param {number} y1 - * @param {number} x2 - * @param {number} y2 + * @param {number} x1 - The x coordinate of the first value. + * @param {number} y1 - The y coordinate of the first value. + * @param {number} x2 - The x coordinate of the second value. + * @param {number} y2 - The y coordinate of the second value. * @return {number} The angle, in radians. */ angleBetweenY: function (x1, y1, x2, y2) { + return Math.atan2(x2 - x1, y2 - y1); + }, /** * Find the angle of a segment from (point1.x, point1.y) -> (point2.x, point2.y). + * * @method Phaser.Math#angleBetweenPoints - * @param {Phaser.Point} point1 - * @param {Phaser.Point} point2 - * @return {number} The angle, in radians. + * @param {Phaser.Point} point1 - The first point. + * @param {Phaser.Point} point2 - The second point. + * @return {number} The angle between the two points, in radians. */ angleBetweenPoints: function (point1, point2) { + return Math.atan2(point2.y - point1.y, point2.x - point1.x); + }, /** @@ -61943,24 +62349,28 @@ Phaser.Math = { * @return {number} The angle, in radians. */ angleBetweenPointsY: function (point1, point2) { + return Math.atan2(point2.x - point1.x, point2.y - point1.y); + }, /** * Reverses an angle. * @method Phaser.Math#reverseAngle * @param {number} angleRad - The angle to reverse, in radians. - * @return {number} Returns the reverse angle, in radians. + * @return {number} The reverse angle, in radians. */ reverseAngle: function (angleRad) { + return this.normalizeAngle(angleRad + Math.PI, true); + }, /** * Normalizes an angle to the [0,2pi) range. * @method Phaser.Math#normalizeAngle * @param {number} angleRad - The angle to normalize, in radians. - * @return {number} Returns the angle, fit within the [0,2pi] range, in radians. + * @return {number} The angle, fit within the [0,2pi] range, in radians. */ normalizeAngle: function (angleRad) { @@ -61976,10 +62386,12 @@ Phaser.Math = { * @param {number} value - The value to add the amount to. * @param {number} amount - The amount to add to the value. * @param {number} max - The maximum the value is allowed to be. - * @return {number} + * @return {number} The new value. */ maxAdd: function (value, amount, max) { + return Math.min(value + amount, max); + }, /** @@ -61992,7 +62404,9 @@ Phaser.Math = { * @return {number} The new value. */ minSub: function (value, amount, min) { + return Math.max(value - amount, min); + }, /** @@ -62057,8 +62471,10 @@ Phaser.Math = { * @return {boolean} True if the given number is odd. False if the given number is even. */ isOdd: function (n) { + // Does not work with extremely large values return !!(n & 1); + }, /** @@ -62069,8 +62485,10 @@ Phaser.Math = { * @return {boolean} True if the given number is even. False if the given number is odd. */ isEven: function (n) { + // Does not work with extremely large values return !(n & 1); + }, /** @@ -62307,11 +62725,13 @@ Phaser.Math = { * @method Phaser.Math#linear * @param {number} p0 * @param {number} p1 - * @param {number} t + * @param {number} t - A value between 0 and 1. * @return {number} */ linear: function (p0, p1, t) { + return (p1 - p0) * t + p0; + }, /** @@ -62322,7 +62742,9 @@ Phaser.Math = { * @return {number} */ bernstein: function (n, i) { + return this.factorial(n) / this.factorial(i) / this.factorial(n - i); + }, /** @@ -62330,7 +62752,7 @@ Phaser.Math = { * @param {number} value - the number you want to evaluate * @return {number} */ - factorial : function( value ){ + factorial: function (value) { if (value === 0) { @@ -62369,15 +62791,17 @@ Phaser.Math = { }, /** - * The (absolute) difference between two values. + * The absolute difference between two values. * * @method Phaser.Math#difference - * @param {number} a - * @param {number} b - * @return {number} + * @param {number} a - The first value to check. + * @param {number} b - The second value to check. + * @return {number} The absolute difference between the two values. */ difference: function (a, b) { + return Math.abs(a - b); + }, /** @@ -62528,7 +62952,9 @@ Phaser.Math = { * @return {number} */ clampBottom: function (x, a) { + return x < a ? a : x; + }, /** @@ -62542,22 +62968,26 @@ Phaser.Math = { * @see {@link Phaser.Math.fuzzyEqual} */ within: function (a, b, tolerance) { + return (Math.abs(a - b) <= tolerance); + }, /** * Linear mapping from range to range * * @method Phaser.Math#mapLinear - * @param {number} x the value to map - * @param {number} a1 first endpoint of the range - * @param {number} a2 final endpoint of the range - * @param {number} b1 first endpoint of the range - * @param {number} b2 final endpoint of the range + * @param {number} x - The value to map + * @param {number} a1 - First endpoint of the range + * @param {number} a2 - Final endpoint of the range + * @param {number} b1 - First endpoint of the range + * @param {number} b2 - Final endpoint of the range * @return {number} */ mapLinear: function (x, a1, a2, b1, b2) { + return b1 + ( x - a1 ) * ( b2 - b1 ) / ( a2 - a1 ); + }, /** @@ -62589,8 +63019,11 @@ Phaser.Math = { * @return {float} A value between 0 and 1. */ smootherstep: function (x, min, max) { + x = Math.max(0, Math.min(1, (x - min) / (max - min))); + return x * x * x * (x * (x * 6 - 15) + 10); + }, /** @@ -62603,7 +63036,9 @@ Phaser.Math = { * @return {integer} An integer in {-1, 0, 1} */ sign: function (x) { + return ( x < 0 ) ? -1 : ( ( x > 0 ) ? 1 : 0 ); + }, /** @@ -67840,7 +68275,7 @@ Phaser.AnimationManager.prototype = { refreshFrame: function () { // TODO - this.sprite.setTexture(PIXI.TextureCache[this.currentFrame.uuid]); + // this.sprite.setTexture(PIXI.TextureCache[this.currentFrame.uuid]); }, @@ -68315,7 +68750,7 @@ Phaser.Animation.prototype = { { for (var i = 0; i < this._frames.length; i++) { - if (this._frames[i] === frameIndex) + if (this._frames[i] === frameId) { frameIndex = i; } @@ -69937,6 +70372,20 @@ Phaser.Cache.SHADER = 14; */ Phaser.Cache.RENDER_TEXTURE = 15; +/** +* The default image used for a texture when no other is specified. +* @constant +* @type {PIXI.Texture} +*/ +Phaser.Cache.DEFAULT = null; + +/** +* The default image used for a texture when the source image is missing. +* @constant +* @type {PIXI.Texture} +*/ +Phaser.Cache.MISSING = null; + Phaser.Cache.prototype = { ////////////////// @@ -69991,6 +70440,15 @@ Phaser.Cache.prototype = { this._resolveURL(url, img); + if (key === '__default') + { + Phaser.Cache.DEFAULT = new PIXI.Texture(img.base); + } + else if (key === '__missing') + { + Phaser.Cache.MISSING = new PIXI.Texture(img.base); + } + return img; }, @@ -70015,7 +70473,8 @@ Phaser.Cache.prototype = { // Because we don't want to invalidate the sprite batch for an invisible texture obj.base.skipRender = true; - PIXI.TextureCache['__default'] = new PIXI.Texture(obj.base); + // Make it easily available within the rest of Phaser / Pixi + Phaser.Cache.DEFAULT = new PIXI.Texture(obj.base); }, @@ -70036,7 +70495,8 @@ Phaser.Cache.prototype = { var obj = this.addImage('__missing', null, img); - PIXI.TextureCache['__missing'] = new PIXI.Texture(obj.base); + // Make it easily available within the rest of Phaser / Pixi + Phaser.Cache.MISSING = new PIXI.Texture(obj.base); }, @@ -71286,71 +71746,6 @@ Phaser.Cache.prototype = { }, - /** - * Gets a PIXI.Texture by key from the PIXI.TextureCache. - * - * If the texture isn't found in the cache, then it searches the Phaser Image Cache and - * creates a new PIXI.Texture object which is then returned. - * - * @method Phaser.Cache#getPixiTexture - * @deprecated - * @param {string} key - Asset key of the Texture to retrieve from the Cache. - * @return {PIXI.Texture} The Texture object. - */ - getPixiTexture: function (key) { - - if (PIXI.TextureCache[key]) - { - return PIXI.TextureCache[key]; - } - else - { - var base = this.getPixiBaseTexture(key); - - if (base) - { - return new PIXI.Texture(base); - } - else - { - return null; - } - } - - }, - - /** - * Gets a PIXI.BaseTexture by key from the PIXI.BaseTextureCache. - * - * If the texture isn't found in the cache, then it searches the Phaser Image Cache. - * - * @method Phaser.Cache#getPixiBaseTexture - * @deprecated - * @param {string} key - Asset key of the BaseTexture to retrieve from the Cache. - * @return {PIXI.BaseTexture} The BaseTexture object or null if not found. - */ - getPixiBaseTexture: function (key) { - - if (PIXI.BaseTextureCache[key]) - { - return PIXI.BaseTextureCache[key]; - } - else - { - var img = this.getItem(key, Phaser.Cache.IMAGE, 'getPixiBaseTexture'); - - if (img !== null) - { - return img.base; - } - else - { - return null; - } - } - - }, - /** * Get a cached object by the URL. * This only returns a value if you set Cache.autoResolveURL to `true` *before* starting the preload of any assets. @@ -71428,20 +71823,20 @@ Phaser.Cache.prototype = { * * You can optionally elect to destroy it as well. This calls BaseTexture.destroy on it. * - * Note that this only removes it from the Phaser and PIXI Caches. If you still have references to the data elsewhere + * Note that this only removes it from the Phaser Cache. If you still have references to the data elsewhere * then it will persist in memory. * * @method Phaser.Cache#removeImage * @param {string} key - Key of the asset you want to remove. - * @param {boolean} [removeFromPixi=true] - Should this image also be destroyed? Removing it from the PIXI.BaseTextureCache? + * @param {boolean} [destroyBaseTexture=true] - Should the BaseTexture behind this image also be destroyed? */ - removeImage: function (key, removeFromPixi) { + removeImage: function (key, destroyBaseTexture) { - if (removeFromPixi === undefined) { removeFromPixi = true; } + if (destroyBaseTexture === undefined) { destroyBaseTexture = true; } var img = this.getImage(key, true); - if (removeFromPixi && img.base) + if (destroyBaseTexture && img.base) { img.base.destroy(); } @@ -71855,7 +72250,19 @@ Phaser.Loader = function (game) { this.path = ''; /** - * This event is dispatched when the loading process starts: before the first file has been requested, + * Used to map the application mime-types to to the Accept header in XHR requests. + * If you don't require these mappings, or they cause problems on your server, then + * remove them from the headers object and the XHR request will not try to use them. + * @property {object} headers + * @default + */ + this.headers = { + json: "application/json", + xml: "application/xml" + }; + + /** + * This event is dispatched when the loading process starts: before the first file has been requested, * but after all the initial packs have been loaded. * * @property {Phaser.Signal} onLoadStart @@ -74070,6 +74477,11 @@ Phaser.Loader.prototype = { xhr.open("GET", url, true); xhr.responseType = type; + if (this.headers[file.type]) + { + xhr.setRequestHeader("Accept", this.headers[file.type]); + } + onerror = onerror || this.fileError; var _this = this; @@ -75130,11 +75542,6 @@ Phaser.Sound = function (game, key, volume, loop, connect) { */ this.loop = loop; - /** - * @property {number} volume - The sound or sound marker volume. A value between 0 (silence) and 1 (full volume). - */ - this.volume = volume; - /** * @property {object} markers - The sound markers. */ @@ -75639,7 +76046,7 @@ Phaser.Sound.prototype = { { this._sound.disconnect(this.externalNode); } - else + else if (this.gainNode) { this._sound.disconnect(this.gainNode); } @@ -75977,7 +76384,7 @@ Phaser.Sound.prototype = { { this._sound.disconnect(this.externalNode); } - else + else if (this.gainNode) { this._sound.disconnect(this.gainNode); } @@ -79522,10 +79929,15 @@ Object.defineProperty(Phaser.ScaleManager.prototype, "isGameLandscape", { /** * A collection of methods for displaying debug information about game objects. +* +* If your game is running in Canvas mode, then you should invoke all of the Debug methods from +* your games `render` function. This is because they are drawn directly onto the game canvas +* itself, so if you call any debug methods outside of `render` they are likely to be overwritten +* by the game itself. +* * If your game is running in WebGL then Debug will create a Sprite that is placed at the top of the Stage display list and bind a canvas texture * to it, which must be uploaded every frame. Be advised: this is very expensive, especially in browsers like Firefox. So please only enable Debug * in WebGL mode if you really need it (or your desktop can cope with it well) and disable it for production! -* If your game is using a Canvas renderer then the debug information is literally drawn on the top of the active game canvas and no Sprite is used. * * @class Phaser.Utils.Debug * @constructor @@ -79620,7 +80032,7 @@ Phaser.Utils.Debug.prototype = { } else { - this.bmd = this.game.make.bitmapData(this.game.width, this.game.height); + this.bmd = new Phaser.BitmapData(this.game, '__DEBUG', this.game.width, this.game.height, true); this.sprite = this.game.make.image(0, 0, this.bmd); this.game.stage.addChild(this.sprite); @@ -81309,13 +81721,63 @@ Phaser.ArrayUtils = { }, + /** + * Moves the element from the end of the array to the start, shifting all items in the process. + * The "rotation" happens to the right. + * + * Before: `[ A, B, C, D, E, F ]` + * After: `[ F, A, B, C, D, E ]` + * + * See also Phaser.ArrayUtils.rotateLeft. + * + * @method Phaser.ArrayUtils.rotateRight + * @param {any[]} array - The array to rotate. The array is modified. + * @return {any} The shifted value. + */ + rotateRight: function (array) { + + var s = array.pop(); + array.unshift(s); + + return s; + + }, + /** * Moves the element from the start of the array to the end, shifting all items in the process. * The "rotation" happens to the left. * + * Before: `[ A, B, C, D, E, F ]` + * After: `[ B, C, D, E, F, A ]` + * + * See also Phaser.ArrayUtils.rotateRight + * + * @method Phaser.ArrayUtils.rotateLeft + * @param {any[]} array - The array to rotate. The array is modified. + * @return {any} The rotated value. + */ + rotateLeft: function (array) { + + var s = array.shift(); + array.push(s); + + return s; + + }, + + /** + * Moves the element from the start of the array to the end, shifting all items in the process. + * The "rotation" happens to the left. + * + * Before: `[ A, B, C, D, E, F ]` + * After: `[ B, C, D, E, F, A ]` + * + * See also Phaser.ArrayUtils.rotateRight + * * @method Phaser.ArrayUtils.rotate - * @param {any[]} array - The array to shift/rotate. The array is modified. - * @return {any} The shifted value. + * @deprecated Please use Phaser.ArrayUtils.rotate instead. + * @param {any[]} array - The array to rotate. The array is modified. + * @return {any} The rotated value. */ rotate: function (array) { @@ -82389,6 +82851,23 @@ Phaser.Color = { }, + /** + * Converts RGBA components to a 32 bit integer in AABBGGRR format. + * + * @method Phaser.Color.toABGR + * @static + * @param {number} r - The red color component, in the range 0 - 255. + * @param {number} g - The green color component, in the range 0 - 255. + * @param {number} b - The blue color component, in the range 0 - 255. + * @param {number} a - The alpha color component, in the range 0 - 255. + * @return {number} A RGBA-packed 32 bit integer + */ + toABGR: function (r, g, b, a) { + + return ((a << 24) | (b << 16) | (g << 8) | r) >>> 0; + + }, + /** * Converts an RGB color value to HSL (hue, saturation and lightness). * Conversion forumla from http://en.wikipedia.org/wiki/HSL_color_space. @@ -84724,67 +85203,70 @@ Phaser.Physics.Arcade.prototype = { return; } - var body; - if (this.skipQuadTree || sprite.body.skipQuadTree) { + var bounds; + for (var i = 0; i < group.hash.length; i++) { + var object1 = group.hash[i]; + // Skip duff entries - we can't check a non-existent sprite or one with no body - if (!group.hash[i] || !group.hash[i].exists || !group.hash[i].body) + if (!object1 || !object1.exists || !object1.body) { continue; } - body = group.hash[i].body; + // Inject the Body bounds data into the bounds object + bounds = object1.body.getBounds(bounds); // Skip items either side of the sprite if (this.sortDirection === Phaser.Physics.Arcade.LEFT_RIGHT) { - if (sprite.body.right < body.x) + if (sprite.body.right < bounds.x) { break; } - else if (body.right < sprite.body.x) + else if (bounds.right < sprite.body.x) { continue; } } else if (this.sortDirection === Phaser.Physics.Arcade.RIGHT_LEFT) { - if (sprite.body.x > body.right) + if (sprite.body.x > bounds.right) { break; } - else if (body.x > sprite.body.right) + else if (bounds.x > sprite.body.right) { continue; } } else if (this.sortDirection === Phaser.Physics.Arcade.TOP_BOTTOM) { - if (sprite.body.bottom < body.y) + if (sprite.body.bottom < bounds.y) { break; } - else if (body.bottom < sprite.body.y) + else if (bounds.bottom < sprite.body.y) { continue; } } else if (this.sortDirection === Phaser.Physics.Arcade.BOTTOM_TOP) { - if (sprite.body.y > body.bottom) + if (sprite.body.y > bounds.bottom) { break; } - else if (body.y > sprite.body.bottom) + else if (bounds.y > sprite.body.bottom) { continue; } } - this.collideSpriteVsSprite(sprite, group.hash[i], collideCallback, processCallback, callbackContext, overlapOnly); + this.collideSpriteVsSprite(sprite, object1, collideCallback, processCallback, callbackContext, overlapOnly); } } else @@ -84836,65 +85318,73 @@ Phaser.Physics.Arcade.prototype = { for (var i = 0; i < group.hash.length; i++) { + var bounds1; + var object1 = group.hash[i]; + // Skip duff entries - we can't check a non-existent sprite or one with no body - if (!group.hash[i] || !group.hash[i].exists || !group.hash[i].body) + if (!object1 || !object1.exists || !object1.body) { continue; } - var object1 = group.hash[i]; + // Inject the Body bounds data into the bounds1 object + bounds1 = object1.body.getBounds(bounds1); for (var j = i + 1; j < group.hash.length; j++) { + var bounds2; + var object2 = group.hash[j]; + // Skip duff entries - we can't check a non-existent sprite or one with no body - if (!group.hash[j] || !group.hash[j].exists || !group.hash[j].body) + if (!object2 || !object2.exists || !object2.body) { continue; } - var object2 = group.hash[j]; + // Inject the Body bounds data into the bounds2 object + bounds2 = object2.body.getBounds(bounds2); // Skip items either side of the sprite if (this.sortDirection === Phaser.Physics.Arcade.LEFT_RIGHT) { - if (object1.body.right < object2.body.x) + if (bounds1.right < bounds2.x) { break; } - else if (object2.body.right < object1.body.x) + else if (bounds2.right < bounds1.x) { continue; } } else if (this.sortDirection === Phaser.Physics.Arcade.RIGHT_LEFT) { - if (object1.body.x > object2.body.right) + if (bounds1.x > bounds2.right) { continue; } - else if (object2.body.x > object1.body.right) + else if (bounds2.x > bounds1.right) { break; } } else if (this.sortDirection === Phaser.Physics.Arcade.TOP_BOTTOM) { - if (object1.body.bottom < object2.body.y) + if (bounds1.bottom < bounds2.y) { continue; } - else if (object2.body.bottom < object1.body.y) + else if (bounds2.bottom < bounds1.y) { break; } } else if (this.sortDirection === Phaser.Physics.Arcade.BOTTOM_TOP) { - if (object1.body.y > object2.body.bottom) + if (bounds1.y > bounds2.bottom) { continue; } - else if (object2.body.y > object1.body.bottom) + else if (bounds2.y > object1.body.bottom) { break; } @@ -84967,6 +85457,42 @@ Phaser.Physics.Arcade.prototype = { return false; } + // Circle vs. Circle quick bail out + if (body1.isCircle && body2.isCircle) + { + return this.separateCircle(body1, body2, overlapOnly); + } + + // We define the behavior of bodies in a collision circle and rectangle + // If a collision occurs in the corner points of the rectangle, the body behave like circles + + // Either body1 or body2 is a circle + if (body1.isCircle !== body2.isCircle) + { + var bodyRect = (body1.isCircle) ? body2 : body1; + var bodyCircle = (body1.isCircle) ? body1 : body2; + + var rect = { + x: bodyRect.x, + y: bodyRect.y, + right: bodyRect.right, + bottom: bodyRect.bottom + }; + + var circle = { + x: bodyCircle.x + bodyCircle.radius, + y: bodyCircle.y + bodyCircle.radius + }; + + if (circle.y < rect.y || circle.y > rect.bottom) + { + if (circle.x < rect.x || circle.x > rect.right) + { + return this.separateCircle(body1, body2, overlapOnly); + } + } + } + var resultX = false; var resultY = false; @@ -84992,7 +85518,37 @@ Phaser.Physics.Arcade.prototype = { } } - return (resultX || resultY); + var result = (resultX || resultY); + + if (result) + { + if (overlapOnly) + { + if (body1.onOverlap) + { + body1.onOverlap.dispatch(body1.sprite, body2.sprite); + } + + if (body2.onOverlap) + { + body2.onOverlap.dispatch(body2.sprite, body1.sprite); + } + } + else + { + if (body1.onCollide) + { + body1.onCollide.dispatch(body1.sprite, body2.sprite); + } + + if (body2.onCollide) + { + body2.onCollide.dispatch(body2.sprite, body1.sprite); + } + } + } + + return result; }, @@ -85010,26 +85566,253 @@ Phaser.Physics.Arcade.prototype = { { return false; } - - // Rect vs. Rect - if (body1.right <= body2.position.x) + + if (body1.isCircle) { - return false; + if (body2.isCircle) + { + // Circle vs. Circle + return Phaser.Math.distance(body1.center.x, body1.center.y, body2.center.x, body2.center.y) <= (body1.radius + body2.radius); + } + else + { + // Circle vs. Rect + return this.circleBodyIntersects(body1, body2); + } + } + else + { + if (body2.isCircle) + { + // Rect vs. Circle + return this.circleBodyIntersects(body2, body1); + } + else + { + // Rect vs. Rect + if (body1.right <= body2.position.x) + { + return false; + } + + if (body1.bottom <= body2.position.y) + { + return false; + } + + if (body1.position.x >= body2.right) + { + return false; + } + + if (body1.position.y >= body2.bottom) + { + return false; + } + + return true; + } } - if (body1.bottom <= body2.position.y) + }, + + /** + * Checks to see if a circular Body intersects with a Rectangular Body. + * + * @method Phaser.Physics.Arcade#circleBodyIntersects + * @param {Phaser.Physics.Arcade.Body} circle - The Body with `isCircle` set. + * @param {Phaser.Physics.Arcade.Body} body - The Body with `isCircle` not set (i.e. uses Rectangle shape) + * @return {boolean} Returns true if the bodies intersect, otherwise false. + */ + circleBodyIntersects: function (circle, body) { + + var x = Phaser.Math.clamp(circle.center.x, body.left, body.right); + var y = Phaser.Math.clamp(circle.center.y, body.top, body.bottom); + + var dx = (circle.center.x - x) * (circle.center.x - x); + var dy = (circle.center.y - y) * (circle.center.y - y); + + return (dx + dy) <= (circle.radius * circle.radius); + + }, + + /** + * The core separation function to separate two circular physics bodies. + * + * @method Phaser.Physics.Arcade#separateCircle + * @private + * @param {Phaser.Physics.Arcade.Body} body1 - The first Body to separate. Must have `Body.isCircle` true and a positive `radius`. + * @param {Phaser.Physics.Arcade.Body} body2 - The second Body to separate. Must have `Body.isCircle` true and a positive `radius`. + * @param {boolean} overlapOnly - If true the bodies will only have their overlap data set, no separation or exchange of velocity will take place. + * @return {boolean} Returns true if the bodies were separated or overlap, otherwise false. + */ + separateCircle: function (body1, body2, overlapOnly) { + + // Set the bounding box overlap values + this.getOverlapX(body1, body2); + this.getOverlapY(body1, body2); + + var angleCollision = this.angleBetweenCenters(body1, body2); + + var overlap = 0; + + if (body1.isCircle !== body2.isCircle) { - return false; + var rect = { + x: (body2.isCircle) ? body1.position.x : body2.position.x, + y: (body2.isCircle) ? body1.position.y : body2.position.y, + right: (body2.isCircle) ? body1.right : body2.right, + bottom: (body2.isCircle) ? body1.bottom : body2.bottom + }; + + var circle = { + x: (body1.isCircle) ? (body1.position.x + body1.radius) : (body2.position.x + body2.radius), + y: (body1.isCircle) ? (body1.position.y + body1.radius) : (body2.position.y + body2.radius), + radius: (body1.isCircle) ? body1.radius : body2.radius + }; + + if (circle.y < rect.y) + { + if (circle.x < rect.x) + { + overlap = Phaser.Math.distance(circle.x, circle.y, rect.x, rect.y) - circle.radius; + } + else if (circle.x > rect.right) + { + overlap = Phaser.Math.distance(circle.x, circle.y, rect.right, rect.y) - circle.radius; + } + } + else if (circle.y > rect.bottom) + { + if (circle.x < rect.x) + { + overlap = Phaser.Math.distance(circle.x, circle.y, rect.x, rect.bottom) - circle.radius; + } + else if (circle.x > rect.right) + { + overlap = Phaser.Math.distance(circle.x, circle.y, rect.right, rect.bottom) - circle.radius; + } + } + + overlap *= -1; + } + else + { + overlap = (body1.radius + body2.radius) - Phaser.Math.distance(body1.center.x, body1.center.y, body2.center.x, body2.center.y); } - if (body1.position.x >= body2.right) + // Can't separate two immovable bodies, or a body with its own custom separation logic + if (overlapOnly || overlap === 0 || (body1.immovable && body2.immovable) || body1.customSeparateX || body2.customSeparateX) { - return false; + if (overlap !== 0) + { + if (body1.onOverlap) + { + body1.onOverlap.dispatch(body1.sprite, body2.sprite); + } + + if (body2.onOverlap) + { + body2.onOverlap.dispatch(body2.sprite, body1.sprite); + } + } + + // return true if there was some overlap, otherwise false + return (overlap !== 0); } - if (body1.position.y >= body2.bottom) + // Transform the velocity vector to the coordinate system oriented along the direction of impact. + // This is done to eliminate the vertical component of the velocity + var v1 = { + x: body1.velocity.x * Math.cos(angleCollision) + body1.velocity.y * Math.sin(angleCollision), + y: body1.velocity.x * Math.sin(angleCollision) - body1.velocity.y * Math.cos(angleCollision) + }; + + var v2 = { + x: body2.velocity.x * Math.cos(angleCollision) + body2.velocity.y * Math.sin(angleCollision), + y: body2.velocity.x * Math.sin(angleCollision) - body2.velocity.y * Math.cos(angleCollision) + }; + + // We expect the new velocity after impact + var tempVel1 = ((body1.mass - body2.mass) * v1.x + 2 * body2.mass * v2.x) / (body1.mass + body2.mass); + var tempVel2 = (2 * body1.mass * v1.x + (body2.mass - body1.mass) * v2.x) / (body1.mass + body2.mass); + + // We convert the vector to the original coordinate system and multiplied by factor of rebound + if (!body1.immovable) { - return false; + body1.velocity.x = (tempVel1 * Math.cos(angleCollision) - v1.y * Math.sin(angleCollision)) * body1.bounce.x; + body1.velocity.y = (v1.y * Math.cos(angleCollision) + tempVel1 * Math.sin(angleCollision)) * body1.bounce.y; + } + + if (!body2.immovable) + { + body2.velocity.x = (tempVel2 * Math.cos(angleCollision) - v2.y * Math.sin(angleCollision)) * body2.bounce.x; + body2.velocity.y = (v2.y * Math.cos(angleCollision) + tempVel2 * Math.sin(angleCollision)) * body2.bounce.y; + } + + // When the collision angle is almost perpendicular to the total initial velocity vector + // (collision on a tangent) vector direction can be determined incorrectly. + // This code fixes the problem + + if (Math.abs(angleCollision) < Math.PI / 2) + { + if ((body1.velocity.x > 0) && !body1.immovable && (body2.velocity.x > body1.velocity.x)) + { + body1.velocity.x *= -1; + } + else if ((body2.velocity.x < 0) && !body2.immovable && (body1.velocity.x < body2.velocity.x)) + { + body2.velocity.x *= -1; + } + else if ((body1.velocity.y > 0) && !body1.immovable && (body2.velocity.y > body1.velocity.y)) + { + body1.velocity.y *= -1; + } + else if ((body2.velocity.y < 0) && !body2.immovable && (body1.velocity.y < body2.velocity.y)) + { + body2.velocity.y *= -1; + } + } + else if (Math.abs(angleCollision) > Math.PI / 2) + { + if ((body1.velocity.x < 0) && !body1.immovable && (body2.velocity.x < body1.velocity.x)) + { + body1.velocity.x *= -1; + } + else if ((body2.velocity.x > 0) && !body2.immovable && (body1.velocity.x > body2.velocity.x)) + { + body2.velocity.x *= -1; + } + else if ((body1.velocity.y < 0) && !body1.immovable && (body2.velocity.y < body1.velocity.y)) + { + body1.velocity.y *= -1; + } + else if ((body2.velocity.y > 0) && !body2.immovable && (body1.velocity.x > body2.velocity.y)) + { + body2.velocity.y *= -1; + } + } + + if (!body1.immovable) + { + body1.x += (body1.velocity.x * this.game.time.physicsElapsed) - overlap * Math.cos(angleCollision); + body1.y += (body1.velocity.y * this.game.time.physicsElapsed) - overlap * Math.sin(angleCollision); + } + + if (!body2.immovable) + { + body2.x += (body2.velocity.x * this.game.time.physicsElapsed) + overlap * Math.cos(angleCollision); + body2.y += (body2.velocity.y * this.game.time.physicsElapsed) + overlap * Math.sin(angleCollision); + } + + if (body1.onCollide) + { + body1.onCollide.dispatch(body1.sprite, body2.sprite); + } + + if (body2.onCollide) + { + body2.onCollide.dispatch(body2.sprite, body1.sprite); } return true; @@ -85729,6 +86512,23 @@ Phaser.Physics.Arcade.prototype = { }, + /** + * Find the angle in radians between centers of two display objects (like Sprites). + * + * @method Phaser.Physics.Arcade#angleBetweenCenters + * @param {any} source - The Display Object to test from. + * @param {any} target - The Display Object to test to. + * @return {number} The angle in radians between the source and target display objects. + */ + angleBetweenCenters: function (source, target) { + + var dx = target.center.x - source.center.x; + var dy = target.center.y - source.center.y; + + return Math.atan2(dy, dx); + + }, + /** * Find the angle in radians between a display object (like a Sprite) and the given x/y coordinate. * @@ -85841,6 +86641,25 @@ Phaser.Physics.Arcade.Body = function (sprite) { */ this.enable = true; + /** + * If `true` this Body is using circular collision detection. If `false` it is using rectangular. + * Use `Body.setCircle` to control the collision shape this Body uses. + * @property {boolean} isCircle + * @default + * @readOnly + */ + this.isCircle = false; + + /** + * The radius of the circular collision shape this Body is using if Body.setCircle has been enabled. + * If you wish to change the radius then call `setCircle` again with the new value. + * If you wish to stop the Body using a circle then call `setCircle` with a radius of zero (or undefined). + * @property {number} radius + * @default + * @readOnly + */ + this.radius = 0; + /** * @property {Phaser.Point} offset - The offset of the Physics Body from the Sprite x/y position. */ @@ -85934,12 +86753,12 @@ Phaser.Physics.Arcade.Body = function (sprite) { * @property {Phaser.Point} newVelocity - The new velocity. Calculated during the Body.preUpdate and applied to its position. * @readonly */ - this.newVelocity = new Phaser.Point(0, 0); + this.newVelocity = new Phaser.Point(); /** * @property {Phaser.Point} deltaMax - The Sprite position is updated based on the delta x/y values. You can set a cap on those (both +-) using deltaMax. */ - this.deltaMax = new Phaser.Point(0, 0); + this.deltaMax = new Phaser.Point(); /** * @property {Phaser.Point} acceleration - The acceleration is the rate of change of the velocity. Measured in pixels per second squared. @@ -85960,7 +86779,7 @@ Phaser.Physics.Arcade.Body = function (sprite) { /** * @property {Phaser.Point} gravity - A local gravity applied to this Body. If non-zero this over rides any world gravity, unless Body.allowGravity is set to false. */ - this.gravity = new Phaser.Point(0, 0); + this.gravity = new Phaser.Point(); /** * @property {Phaser.Point} bounce - The elasticity of the Body when colliding. bounce.x/y = 1 means full rebound, bounce.x/y = 0.5 means 50% rebound velocity. @@ -85975,6 +86794,58 @@ Phaser.Physics.Arcade.Body = function (sprite) { */ this.worldBounce = null; + /** + * A Signal that is dispatched when this Body collides with the world bounds. + * Due to the potentially high volume of signals this could create it is disabled by default. + * To use this feature set this property to a Phaser.Signal: `sprite.body.onWorldBounds = new Phaser.Signal()` + * and it will be called when a collision happens, passing five arguments: + * `onWorldBounds(sprite, up, down, left, right)` + * where the Sprite is a reference to the Sprite that owns this Body, and the other arguments are booleans + * indicating on which side of the world the Body collided. + * @property {Phaser.Signal} onWorldBounds + */ + this.onWorldBounds = null; + + /** + * A Signal that is dispatched when this Body collides with another Body. + * + * You still need to call `game.physics.arcade.collide` in your `update` method in order + * for this signal to be dispatched. + * + * Usually you'd pass a callback to the `collide` method, but this signal provides for + * a different level of notification. + * + * Due to the potentially high volume of signals this could create it is disabled by default. + * + * To use this feature set this property to a Phaser.Signal: `sprite.body.onCollide = new Phaser.Signal()` + * and it will be called when a collision happens, passing two arguments: the sprites which collided. + * The first sprite in the argument is always the owner of this Body. + * + * If two Bodies with this Signal set collide, both will dispatch the Signal. + * @property {Phaser.Signal} onCollide + */ + this.onCollide = null; + + /** + * A Signal that is dispatched when this Body overlaps with another Body. + * + * You still need to call `game.physics.arcade.overlap` in your `update` method in order + * for this signal to be dispatched. + * + * Usually you'd pass a callback to the `overlap` method, but this signal provides for + * a different level of notification. + * + * Due to the potentially high volume of signals this could create it is disabled by default. + * + * To use this feature set this property to a Phaser.Signal: `sprite.body.onOverlap = new Phaser.Signal()` + * and it will be called when a collision happens, passing two arguments: the sprites which collided. + * The first sprite in the argument is always the owner of this Body. + * + * If two Bodies with this Signal set collide, both will dispatch the Signal. + * @property {Phaser.Signal} onOverlap + */ + this.onOverlap = null; + /** * @property {Phaser.Point} maxVelocity - The maximum velocity in pixels per second sq. that the Body can reach. * @default @@ -86077,6 +86948,12 @@ Phaser.Physics.Arcade.Body = function (sprite) { */ this.overlapY = 0; + /** + * If `Body.isCircle` is true, and this body collides with another circular body, the amount of overlap is stored here. + * @property {number} overlapR - The amount of overlap during the collision. + */ + this.overlapR = 0; + /** * If a body is overlapping with another body, but neither of them are moving (maybe they spawned on-top of each other?) this is set to true. * @property {boolean} embedded - Body embed value. @@ -86350,7 +87227,10 @@ Phaser.Physics.Arcade.Body.prototype = { if (this.collideWorldBounds) { - this.checkWorldBounds(); + if (this.checkWorldBounds() && this.onWorldBounds) + { + this.onWorldBounds.dispatch(this.sprite, this.blocked.up, this.blocked.down, this.blocked.left, this.blocked.right); + } } } @@ -86521,6 +87401,7 @@ Phaser.Physics.Arcade.Body.prototype = { * * @method Phaser.Physics.Arcade.Body#checkWorldBounds * @protected + * @return {boolean} True if the Body collided with the world bounds, otherwise false. */ checkWorldBounds: function () { @@ -86531,31 +87412,71 @@ Phaser.Physics.Arcade.Body.prototype = { var bx = (this.worldBounce) ? -this.worldBounce.x : -this.bounce.x; var by = (this.worldBounce) ? -this.worldBounce.y : -this.bounce.y; - if (pos.x < bounds.x && check.left) + if (this.isCircle) { - pos.x = bounds.x; - this.velocity.x *= bx; - this.blocked.left = true; + var bodyBounds = { + x: this.center.x - this.radius, + y: this.center.y - this.radius, + right: this.center.x + this.radius, + bottom: this.center.y + this.radius + }; + + if (bodyBounds.x < bounds.x && check.left) + { + pos.x = bounds.x - this.halfWidth + this.radius; + this.velocity.x *= bx; + this.blocked.left = true; + } + else if (bodyBounds.right > bounds.right && check.right) + { + pos.x = bounds.right - this.halfWidth - this.radius; + this.velocity.x *= bx; + this.blocked.right = true; + } + + if (bodyBounds.y < bounds.y && check.up) + { + pos.y = bounds.y - this.halfHeight + this.radius; + this.velocity.y *= by; + this.blocked.up = true; + } + else if (bodyBounds.bottom > bounds.bottom && check.down) + { + pos.y = bounds.bottom - this.halfHeight - this.radius; + this.velocity.y *= by; + this.blocked.down = true; + } } - else if (this.right > bounds.right && check.right) + else { - pos.x = bounds.right - this.width; - this.velocity.x *= bx; - this.blocked.right = true; + if (pos.x < bounds.x && check.left) + { + pos.x = bounds.x; + this.velocity.x *= bx; + this.blocked.left = true; + } + else if (this.right > bounds.right && check.right) + { + pos.x = bounds.right - this.width; + this.velocity.x *= bx; + this.blocked.right = true; + } + + if (pos.y < bounds.y && check.up) + { + pos.y = bounds.y; + this.velocity.y *= by; + this.blocked.up = true; + } + else if (this.bottom > bounds.bottom && check.down) + { + pos.y = bounds.bottom - this.height; + this.velocity.y *= by; + this.blocked.down = true; + } } - if (pos.y < bounds.y && check.up) - { - pos.y = bounds.y; - this.velocity.y *= by; - this.blocked.up = true; - } - else if (this.bottom > bounds.bottom && check.down) - { - pos.y = bounds.bottom - this.height; - this.velocity.y *= by; - this.blocked.down = true; - } + return (this.blocked.up || this.blocked.down || this.blocked.left || this.blocked.right); }, @@ -86735,6 +87656,9 @@ Phaser.Physics.Arcade.Body.prototype = { * 24 is the horizontal offset of the Body from the top-left of the Sprites texture, and 34 * is the vertical offset. * + * Calling `setSize` on a Body that has already had `setCircle` will reset all of the Circle + * properties, making this Body rectangular again. + * * @method Phaser.Physics.Arcade.Body#setSize * @param {number} width - The width of the Body. * @param {number} height - The height of the Body. @@ -86756,6 +87680,55 @@ Phaser.Physics.Arcade.Body.prototype = { this.center.setTo(this.position.x + this.halfWidth, this.position.y + this.halfHeight); + this.isCircle = false; + this.radius = 0; + + }, + + /** + * Sets this Body as using a circle, of the given radius, for all collision detection instead of a rectangle. + * The radius is given in pixels and is the distance from the center of the circle to the edge. + * + * You can also control the x and y offset, which is the position of the Body relative to the top-left of the Sprite. + * + * To change a Body back to being rectangular again call `Body.setSize`. + * + * Note: Circular collision only happens with other Arcade Physics bodies, it does not + * work against tile maps, where rectangular collision is the only method supported. + * + * @method Phaser.Physics.Arcade.Body#setCircle + * @param {number} [radius] - The radius of the Body in pixels. Pass a value of zero / undefined, to stop the Body using a circle for collision. + * @param {number} [offsetX] - The X offset of the Body from the Sprite position. + * @param {number} [offsetY] - The Y offset of the Body from the Sprite position. + */ + setCircle: function (radius, offsetX, offsetY) { + + if (offsetX === undefined) { offsetX = this.offset.x; } + if (offsetY === undefined) { offsetY = this.offset.y; } + + if (radius > 0) + { + this.isCircle = true; + this.radius = radius; + + this.sourceWidth = radius * 2; + this.sourceHeight = radius * 2; + + this.width = this.sourceWidth * this._sx; + this.height = this.sourceHeight * this._sy; + + this.halfWidth = Math.floor(this.width / 2); + this.halfHeight = Math.floor(this.height / 2); + + this.offset.setTo(offsetX, offsetY); + + this.center.setTo(this.position.x + this.halfWidth, this.position.y + this.halfHeight); + } + else + { + this.isCircle = false; + } + }, /** @@ -86793,6 +87766,36 @@ Phaser.Physics.Arcade.Body.prototype = { }, + /** + * Returns the bounds of this physics body. + * + * Only used internally by the World collision methods. + * + * @method Phaser.Physics.Arcade.Body#getBounds + * @param {object} obj - The object in which to set the bounds values. + * @return {object} The object that was given to this method. + */ + getBounds: function (obj) { + + if (this.isCircle) + { + obj.x = this.center.x - this.radius; + obj.y = this.center.y - this.radius; + obj.right = this.center.x + this.radius; + obj.bottom = this.center.y + this.radius; + } + else + { + obj.x = this.x; + obj.y = this.y; + obj.right = this.right; + obj.bottom = this.bottom; + } + + return obj; + + }, + /** * Tests if a world point lies within this Body. * @@ -86803,7 +87806,7 @@ Phaser.Physics.Arcade.Body.prototype = { */ hitTest: function (x, y) { - return Phaser.Rectangle.contains(this, x, y); + return (this.isCircle) ? Phaser.Circle.contains(this, x, y) : Phaser.Rectangle.contains(this, x, y); }, @@ -87037,15 +88040,33 @@ Phaser.Physics.Arcade.Body.render = function (context, body, color, filled) { color = color || 'rgba(0,255,0,0.4)'; - if (filled) + context.fillStyle = color; + context.strokeStyle = color; + + if (body.isCircle) { - context.fillStyle = color; - context.fillRect(body.position.x - body.game.camera.x, body.position.y - body.game.camera.y, body.width, body.height); + context.beginPath(); + context.arc(body.center.x - body.game.camera.x, body.center.y - body.game.camera.y, body.radius, 0, 2 * Math.PI); + + if (filled) + { + context.fill(); + } + else + { + context.stroke(); + } } else { - context.strokeStyle = color; - context.strokeRect(body.position.x - body.game.camera.x, body.position.y - body.game.camera.y, body.width, body.height); + if (filled) + { + context.fillRect(body.position.x - body.game.camera.x, body.position.y - body.game.camera.y, body.width, body.height); + } + else + { + context.strokeRect(body.position.x - body.game.camera.x, body.position.y - body.game.camera.y, body.width, body.height); + } } }; @@ -88201,13 +89222,13 @@ Phaser.Physics.P2.prototype = { this.walls[wall] = new p2.Body({ mass: 0, position: [ this.pxmi(x), this.pxmi(y) ], angle: angle }); this.walls[wall].addShape(new p2.Plane()); - if (setCollisionGroup) - { - this.walls[wall].shapes[0].collisionGroup = this.boundsCollisionGroup.mask; - } - this.world.addBody(this.walls[wall]); } + + if (setCollisionGroup) + { + this.walls[wall].shapes[0].collisionGroup = this.boundsCollisionGroup.mask; + } } else { @@ -88356,6 +89377,9 @@ Phaser.Physics.P2.prototype = { this._toRemove = []; this.boundsCollidesWith = []; + // Remove the world bounds + this.walls = { left: null, right: null, top: null, bottom: null }; + }, /** @@ -96243,8 +97267,6 @@ Phaser.TilemapLayer.prototype.renderRegion = function (scrollX, scrollY, left, t // xmax/ymax - remaining cells to render on column/row var tx, ty, x, y, xmax, ymax; - context.fillStyle = this.tileColor; - for (y = normStartY, ymax = bottom - top, ty = baseY; ymax >= 0; y++, ymax--, ty += th) @@ -96746,6 +97768,33 @@ Phaser.TilemapParser = { */ INSERT_NULL: false, + /** + * A tiled flag that resides within the 32 bit of the object gid and + * indicates whether the tiled/object is flipped horizontally. + * + * @constant + * @type {number} + */ + FLIPPED_HORIZONTALLY_FLAG: 0x80000000, + + /** + * A tiled flag that resides within the 31 bit of the object gid and + * indicates whether the tiled/object is flipped vertically. + * + * @constant + * @type {number} + */ + FLIPPED_VERTICALLY_FLAG: 0x40000000, + + /** + * A tiled flag that resides within the 30 bit of the object gid and + * indicates whether the tiled/object is flipped diagonally. + * + * @constant + * @type {number} + */ + FLIPPED_DIAGONALLY_FLAG: 0x20000000, + /** * Parse tilemap data from the cache and creates a Tilemap object. * @@ -97226,6 +98275,8 @@ Phaser.TilemapParser = { // Object Tiles if (curo.objects[v].gid) { + var self = this; + var object = { gid: curo.objects[v].gid, @@ -97233,9 +98284,13 @@ Phaser.TilemapParser = { type: curo.objects[v].hasOwnProperty("type") ? curo.objects[v].type : "", x: curo.objects[v].x, y: curo.objects[v].y, + width: curo.objects[v].width, + height: curo.objects[v].height, visible: curo.objects[v].visible, - properties: curo.objects[v].properties - + properties: curo.objects[v].properties, + horizontallyFlipped: curo.objects[v].gid & self.FLIPPED_HORIZONTALLY_FLAG, + verticallyFlipped: curo.objects[v].gid & self.FLIPPED_VERTICALLY_FLAG, + diagonallyFlipped: curo.objects[v].gid & self.FLIPPED_DIAGONALLY_FLAG }; if (curo.objects[v].rotation) @@ -99025,7 +100080,7 @@ Phaser.Weapon = function (game, parent) { this.fireFrom = new Phaser.Rectangle(0, 0, 1, 1); /** - * The angle at which the bullets are fired. This can be a const such as Phaser.ANGLE_UP + * The angle at which the bullets are fired. This can be a const such as Phaser.ANGLE_UP * or it can be any number from 0 to 360 inclusive, where 0 degrees is to the right. * @type {integer} */ @@ -99103,14 +100158,14 @@ Phaser.Weapon = function (game, parent) { /** * This is a variance added to the speed of Bullets when they are fired. - * If bullets have a `bulletSpeed` value of 200, and a `bulletSpeedVariance` of 50 + * If bullets have a `bulletSpeed` value of 200, and a `bulletSpeedVariance` of 50 * then the actual speed of the Bullets will be between 150 and 250 pixels per second. * @type {number} */ this.bulletSpeedVariance = 0; /** - * If you've set `bulletKillType` to `Phaser.Weapon.KILL_LIFESPAN` this controls the amount + * If you've set `bulletKillType` to `Phaser.Weapon.KILL_LIFESPAN` this controls the amount * of lifespan the Bullets have set on launch. The value is given in milliseconds. * When a Bullet hits its lifespan limit it will be automatically killed. * @type {number} @@ -99118,7 +100173,7 @@ Phaser.Weapon = function (game, parent) { this.bulletLifespan = 0; /** - * If you've set `bulletKillType` to `Phaser.Weapon.KILL_DISTANCE` this controls the distance + * If you've set `bulletKillType` to `Phaser.Weapon.KILL_DISTANCE` this controls the distance * the Bullet can travel before it is automatically killed. The distance is given in pixels. * @type {number} */ @@ -99192,7 +100247,7 @@ Phaser.Weapon = function (game, parent) { * This Rectangle defines the bounds that are used when determining if a Bullet should be killed or not. * It's used in combination with `Weapon.bulletKillType` when that is set to either `Phaser.Weapon.KILL_WEAPON_BOUNDS` * or `Phaser.Weapon.KILL_STATIC_BOUNDS`. If you are not using either of these kill types then the bounds are ignored. - * If you are tracking a Sprite or Point then the bounds are centered on that object every frame. + * If you are tracking a Sprite or Point then the bounds are centered on that object every frame. * * @type {Phaser.Rectangle} */ @@ -99231,8 +100286,8 @@ Phaser.Weapon = function (game, parent) { /** * The onFire Signal is dispatched each time `Weapon.fire` is called, and a Bullet is - * _successfully_ launched. The callback is set two arguments: a reference to the Weapon that fired the bullet, - * and a reference to the bullet sprite itself. + * _successfully_ launched. The callback is set two arguments: a reference to the bullet sprite itself, + * and a reference to the Weapon that fired the bullet. * * @type {Phaser.Signal} */ @@ -99320,7 +100375,7 @@ Phaser.Weapon.KILL_NEVER = 0; Phaser.Weapon.KILL_LIFESPAN = 1; /** -* A `bulletKillType` constant that automatically kills the bullets after they +* A `bulletKillType` constant that automatically kills the bullets after they * exceed the `bulletDistance` from their original firing position. * @constant * @type {integer} @@ -99371,7 +100426,7 @@ Phaser.Weapon.KILL_STATIC_BOUNDS = 6; * so be careful it doesn't grow too large. * * You can either set the texture key and frame here, or via the `Weapon.bulletKey` and `Weapon.bulletFrame` -* properties. You can also animate bullets, or set them to use random frames. All Bullets belonging to a +* properties. You can also animate bullets, or set them to use random frames. All Bullets belonging to a * single Weapon instance must share the same texture key however. * * @method Phaser.Weapon#createBullets @@ -99399,7 +100454,7 @@ Phaser.Weapon.prototype.createBullets = function (quantity, key, frame, group) { this.autoExpandBulletsGroup = true; quantity = 1; } - + this.bullets.createMultiple(quantity, key, frame); this.bullets.setAll('data.bulletManager', this); @@ -99617,7 +100672,7 @@ Phaser.Weapon.prototype.trackPointer = function (pointer, offsetX, offsetY) { * Attempts to fire a single Bullet. If there are no more bullets available in the pool, and the pool cannot be extended, * then this method returns `false`. It will also return false if not enough time has expired since the last time * the Weapon was fired, as defined in the `Weapon.fireRate` property. -* +* * Otherwise the first available bullet is selected and launched. * * The arguments are all optional, but allow you to control both where the bullet is launched from, and aimed at. @@ -99905,12 +100960,12 @@ Phaser.Weapon.prototype.setBulletBodyOffset = function (width, height, offsetX, /** * Sets the texture frames that the bullets can use when being launched. -* +* * This is intended for use when you've got numeric based frames, such as those loaded via a Sprite Sheet. -* +* * It works by calling `Phaser.ArrayUtils.numberArray` internally, using the min and max values * provided. Then it sets the frame index to be zero. -* +* * You can optionally set the cycle and random booleans, to allow bullets to cycle through the frames * when they're fired, or pick one at random. * @@ -100035,10 +101090,10 @@ Object.defineProperty(Phaser.Weapon.prototype, "bulletClass", { * * * `Phaser.Weapon.KILL_LIFESPAN` * The bullets are automatically killed when their `bulletLifespan` amount expires. -* +* * * `Phaser.Weapon.KILL_DISTANCE` * The bullets are automatically killed when they exceed `bulletDistance` pixels away from their original launch position. -* +* * * `Phaser.Weapon.KILL_WEAPON_BOUNDS` * The bullets are automatically killed when they no longer intersect with the `Weapon.bounds` rectangle. * @@ -100513,7 +101568,7 @@ Phaser.Video = function (game, key, url) { } else { - this.baseTexture = new PIXI.BaseTexture(PIXI.TextureCache['__default'].baseTexture.source); + this.baseTexture = new PIXI.BaseTexture(Phaser.Cache.DEFAULT.baseTexture.source); this.baseTexture.forceLoaded(this.width, this.height); } diff --git a/build/phaser.map b/build/phaser.map index a6e68d58e..2c333498d 100644 --- a/build/phaser.map +++ b/build/phaser.map @@ -1 +1 @@ -{"version":3,"file":"phaser.min.js","sources":["phaser.js"],"names":["e","exports","module","define","f","window","global","self","p2","t","n","r","s","o","u","a","require","i","Error","call","length",1,"_dereq_","Line","Scalar","lineInt","l1","l2","precision","a1","b1","c1","a2","b2","c2","det","eq","segmentsIntersect","p1","q1","q2","dx","dy","da","db","./Scalar",2,"Point","area","b","c","left","leftOn","right","rightOn","tmpPoint1","tmpPoint2","collinear","thresholdAngle","ab","bc","dot","magA","Math","sqrt","magB","angle","acos","sqdist",3,"Polygon","this","vertices","getIntersectionPoint","delta","prototype","at","v","first","last","clear","append","poly","from","to","push","makeCCW","br","reverse","tmp","N","pop","isReflex","tmpLine1","tmpLine2","canSee","p","dist","copy","j","targetPoly","k","getCutEdges","min","tmp1","tmp2","tmpPoly","nDiags","Number","MAX_VALUE","decomp","edges","slice","cutEdges","Array","polys","cutEdge","result","splice","indexOf","isSimple","path","quickDecomp","reflexVertices","steinerPoints","maxlevel","level","upperInt","lowerInt","upperDist","lowerDist","d","closestDist","upperIndex","lowerIndex","closestIndex","lowerPoly","upperPoly","console","warn","removeCollinearPoints","num","./Line","./Point",4,"abs",5,"./Polygon",6,"name","version","description","author","keywords","main","engines","node","repository","type","url","bugs","licenses","devDependencies","grunt","grunt-contrib-jshint","grunt-contrib-nodeunit","grunt-contrib-uglify","grunt-contrib-watch","grunt-browserify","grunt-contrib-concat","dependencies","poly-decomp",7,"AABB","options","lowerBound","vec2","create","upperBound","setFromPoints","points","position","skinSize","l","rotate","cosAngle","cos","sinAngle","sin","x","y","add","aabb","extend","overlaps","u1","u2","containsPoint","point","overlapsRay","ray","dirFracX","direction","dirFracY","t1","t2","t3","t4","tmin","max","tmax","../math/vec2","../utils/Utils",8,"Broadphase","world","boundingVolumeType","Body","BOUNDING_CIRCLE","setWorld","getCollisionPairs","boundingRadiusCheck","bodyA","bodyB","sub","d2","squaredLength","boundingRadius","aabbCheck","getAABB","boundingVolumeCheck","canCollide","KINEMATIC","STATIC","sleepState","SLEEPING","NAIVE","SAP","../objects/Body",9,"NaiveBroadphase","constructor","bodies","Ncolliding","bi","bj","aabbQuery","aabbNeedsUpdate","updateAABB","../collision/Broadphase","../shapes/Circle","../shapes/Particle","../shapes/Plane","../shapes/Shape",10,"Narrowphase","contactEquations","frictionEquations","enableFriction","enabledEquations","slipForce","frictionCoefficient","surfaceVelocity","contactEquationPool","ContactEquationPool","size","frictionEquationPool","FrictionEquationPool","restitution","stiffness","Equation","DEFAULT_STIFFNESS","relaxation","DEFAULT_RELAXATION","frictionStiffness","frictionRelaxation","enableFrictionReduction","collidingBodiesLastStep","TupleDictionary","contactSkinSize","setConvexToCapsuleShapeMiddle","convexShape","capsuleShape","set","radius","pointInConvex","worldPoint","convexOffset","convexAngle","worldVertex0","pic_worldVertex0","worldVertex1","pic_worldVertex1","r0","pic_r0","r1","pic_r1","verts","lastCross","v0","v1","cross","crossLength","Circle","Convex","Shape","Box","yAxis","fromValues","tmp3","tmp4","tmp5","tmp6","tmp7","tmp8","tmp9","tmp10","tmp11","tmp12","tmp13","tmp14","tmp15","tmp16","tmp17","tmp18","tmpArray","bodiesOverlap_shapePositionA","bodiesOverlap_shapePositionB","bodiesOverlap","shapePositionA","shapePositionB","Nshapesi","shapes","shapeA","toWorldFrame","Nshapesj","shapeB","collidedLastStep","id1","id","id2","get","reset","eqs","ce","fe","release","createContactEquation","firstImpact","needsUpdate","enabled","offset","createFrictionEquation","setSlipForce","relativeVelocity","createFrictionFromContact","contactPointA","contactPointB","rotate90cw","normalA","createFrictionFromAverage","numContacts","invNumContacts","scale","normalize","LINE","CONVEX","convexLine","convexBody","lineBody","lineShape","lineOffset","lineAngle","justTest","BOX","lineBox","boxBody","boxShape","boxOffset","boxAngle","convexCapsule_tempRect","width","height","convexCapsule_tempVec","CAPSULE","convexCapsule","convexPosition","capsuleBody","capsulePosition","capsuleAngle","circlePos","result1","circleConvex","result2","convexConvex","lineCapsule","linePosition","capsuleCapsule_tempVec1","capsuleCapsule_tempVec2","capsuleCapsule_tempRect1","capsuleCapsule","si","xi","ai","sj","xj","aj","enableFrictionBefore","circlePosi","circlePosj","circleCircle","rect","lineLine","positionA","angleA","positionB","angleB","PLANE","planeLine","planeBody","planeShape","planeOffset","planeAngle","worldVertex01","worldVertex11","worldEdge","worldEdgeUnit","worldNormal","worldTangent","PARTICLE","particleCapsule","particleBody","particleShape","particlePosition","particleAngle","circleLine","CIRCLE","circleBody","circleShape","circleOffset","circleAngle","lineRadius","circleRadius","orthoDist","lineToCircleOrthoUnit","projectedPoint","centerDist","lineToCircle","lineEndToLineRadius","radiusSum","pos","pos0","pos1","pow","circleCapsule","worldVertex","closestEdgeProjectedPoint","candidate","candidateDist","minCandidate","found","minCandidateDistance","candidateDistance","localVertex","particleConvex","particleOffset","convexToparticle","minEdgeNormal","offsetA","offsetB","radiusA","radiusB","planeConvex","numReported","particlePlane","circleParticle","planeCapsule_tmpCircle","planeCapsule_tmp1","planeCapsule_tmp2","planeCapsule","capsuleOffset","end1","end2","circle","numContacts1","circlePlane","numContacts2","numTotal","planeToCircle","temp","contact","sepAxis","worldPoint0","worldPoint1","penetrationVec","findSeparatingAxis","closestEdge1","getClosestEdge","closestEdge2","closestEdgeA","closestEdgeB","insideNumEdges","pcoa_tmp1","projectConvexOntoAxis","worldAxis","value","localAxis","fsa_tmp1","fsa_tmp2","fsa_tmp3","fsa_tmp4","fsa_tmp5","fsa_tmp6","offset1","angle1","offset2","angle2","maxDist","overlap","edge","normal","span1","span2","swapped","gce_tmp1","gce_tmp2","gce_tmp3","axis","flip","closestEdge","maxDot","circleHeightfield_candidate","circleHeightfield_dist","circleHeightfield_v0","circleHeightfield_v1","circleHeightfield_minCandidate","circleHeightfield_worldNormal","circleHeightfield_minCandidateNormal","HEIGHTFIELD","circleHeightfield","hfBody","hfShape","hfPos","hfAngle","data","heights","w","elementWidth","minCandidateNormal","idxA","floor","idxB","ceil","PI","convexHeightfield_v0","convexHeightfield_v1","convexHeightfield_tilePos","convexHeightfield_tempConvexShape","convexHeightfield","convexPos","tilePos","tileConvex","tileHeight","../equations/ContactEquation","../equations/Equation","../equations/FrictionEquation","../shapes/Box","../shapes/Convex","../utils/ContactEquationPool","../utils/FrictionEquationPool","../utils/TupleDictionary",11,"Ray","checkCollisionResponse","undefined","skipBackfaces","collisionMask","collisionGroup","mode","ANY","callback","update","distanceFromIntersectionSquared","intersect","squaredDistance","CLOSEST","ALL","intersectBodies","shouldStop","body","intersectBody","intersectBody_worldPosition","collisionResponse","worldPosition","shape","worldAngle","intersectShape","distance","_currentBody","_currentShape","raycast","reportIntersection","fraction","faceIndex","hasHit","../collision/AABB","../collision/RaycastResult",12,"RaycastResult","isStopped","getHitDistance","getHitPoint","out","lerp","stop","../collision/Ray",13,"SAPBroadphase","axisList","axisIndex","that","_addBodyHandler","_removeBodyHandler","idx","Utils","appendArray","off","on","sortAxisList","sortList",14,"Constraint","defaults","collideConnected","wakeUpBodies","equations","wakeUp","DISTANCE","GEAR","LOCK","PRISMATIC","REVOLUTE","setStiffness","setRelaxation",15,"DistanceConstraint","localAnchorA","localAnchorB","worldAnchorA","worldAnchorB","maxForce","ri","rj","computeGq","setMaxForce","upperLimitEnabled","upperLimit","lowerLimitEnabled","lowerLimit","normalEquation","G","violating","minForce","rixn","rjxn","getMaxForce","./Constraint",16,"GearConstraint","ratio","AngleLockEquation","maxTorque","setMaxTorque","setRatio","torque","getMaxTorque","../equations/AngleLockEquation",17,"LockConstraint","localAngleB","rot","g","localOffsetB","force","xAxis",18,"PrismaticConstraint","localAxisA","trans","gg","updateJacobian","disableRotationalLock","RotationalLockEquation","velocity","upperLimitEquation","ContactEquation","lowerLimitEquation","motorEquation","motorEnabled","motorSpeed","computeGW","vi","vj","wi","angularVelocity","wj","gmult","worldAxisA","orientedAnchorA","orientedAnchorB","relPosition","enableMotor","disableMotor","setLimits","lower","upper","../equations/RotationalLockEquation",19,"RevoluteConstraint","pivotA","pivotB","worldPivot","localPivotA","localPivotB","worldPivotA","worldPivotB","RotationalVelocityEquation","relAngle","motorIsEnabled","setMotorSpeed","speed","getMotorSpeed","../equations/RotationalVelocityEquation",20,"./Equation",21,"computeB","h","GW","Gq","GiMf","computeGiMf","B",22,"ARRAY_TYPE","epsilon","timeStep","multiplier","qi","qj","computeGWlambda","vlambda","wlambda","iMfi","iMfj","fi","ti","angularForce","fj","tj","invMassi","invMassSolve","invMassj","invIi","invInertiaSolve","invIj","multiply","massMultiplier","computeGiMGt","addToWlambda_temp","addToWlambda_Gi","addToWlambda_Gj","addToWlambda","deltalambda","Gi","Gj","computeInvC","eps",23,"FrictionEquation","getSlipForce",24,"worldVectorA","worldVectorB",25,26,"EventEmitter","listener","context","_listeners","listeners","has","index","emit","event","listenerArray","target",27,"ContactMaterial","materialA","materialB","Material","idCounter","friction","./Material",28,29,"PolyK","GetArea","sum","Triangulate","tgs","avl","al","i0","i1","i2","ax","ay","bx","by","cx","cy","earFound","_convex","_PointInTriangle","px","py","v0x","v0y","v1x","v1y","v2x","v2y","dot00","dot01","dot02","dot11","dot12","invDenom",30,"crossVZ","vec","zcomp","crossZV","toLocalFrame","framePosition","frameAngle","toGlobalFrame","localPoint","vectorToLocalFrame","worldVector","vectorToGlobalFrame","localVector","centroid","clone","subtract","mul","divide","div","sqrDist","len","sqrLen","negate","str","reflect","vector","getLineSegmentsIntersection","p0","p3","getLineSegmentsIntersectionFraction","s1_x","s1_y","s2_x","s2_y",31,"_idCounter","mass","invMass","inertia","invInertia","fixedRotation","fixedX","fixedY","interpolatedPosition","interpolatedAngle","previousPosition","previousAngle","damping","angularDamping","DYNAMIC","allowSleep","wantsToSleep","AWAKE","sleepSpeedLimit","sleepTimeLimit","gravityScale","idleTime","timeLastSleepy","ccdSpeedThreshold","ccdIterations","concavePath","_wakeUpAfterNarrowphase","updateMassProperties","updateSolveMassProperties","setDensity","density","totalArea","getArea","shapeAABB","bodyAngle","computeAABB","updateBoundingRadius","addShape","removeShape","m","I","r2","Icm","computeMomentOfInertia","applyForce","relativePoint","rotForce","Body_applyForce_forceWorld","Body_applyForce_pointWorld","Body_applyForce_pointLocal","applyForceLocal","localForce","worldForce","vectorToWorldFrame","Body_applyImpulse_velo","applyImpulse","impulseVector","velo","rotVelo","Body_applyImpulse_impulseWorld","Body_applyImpulse_pointWorld","Body_applyImpulse_pointLocal","applyImpulseLocal","localImpulse","worldImpulse","fromPolygon","convexes","optimalDecomp","cm","centerOfMass","updateTriangles","updateCenterOfMass","adjustCenterOfMass","adjustCenterOfMass_tmp2","adjustCenterOfMass_tmp3","adjustCenterOfMass_tmp4","offset_times_area","setZeroForce","resetConstraintVelocity","addConstraintVelocity","applyDamping","dt","wakeUpEvent","sleep","sleepEvent","sleepTick","time","dontSleep","speedSquared","speedLimitSquared","SLEEPY","overlapKeeper","bodiesAreOverlapping","integrate_fhMinv","integrate_velodt","integrate","minv","integrateToTimeOfImpact","end","startToEnd","rememberPosition","hit","startToEndAngle","timeOfImpact","rememberAngle","iter","tmid","narrowphase","getVelocityAtPoint","sleepyEvent","../events/EventEmitter",32,"LinearSpring","Spring","setWorldAnchorA","setWorldAnchorB","getWorldAnchorA","getWorldAnchorB","worldDistance","restLength","applyForce_r","applyForce_r_unit","applyForce_u","applyForce_f","applyForce_worldAnchorA","applyForce_worldAnchorB","applyForce_ri","applyForce_rj","applyForce_tmp","r_unit","rlen","ri_x_f","rj_x_f","./Spring",33,"RotationalSpring","restAngle",34,35,"TopDownVehicle","chassisBody","wheels","groundBody","preStepCallback","WheelConstraint","vehicle","forwardEquation","sideEquation","steerValue","engineForce","setSideFriction","sideFriction","localForwardVector","localPosition","apply","setBrakeForce","addToWorld","addBody","wheel","addConstraint","removeFromWorld","removeBody","removeConstraint","addWheel","wheelOptions","worldVelocity","getSpeed","tmpVec","../constraints/Constraint",36,"Capsule","GSSolver","Heightfield","Particle","Plane","Pool","Solver","World","Object","defineProperty","../package.json","./collision/AABB","./collision/Broadphase","./collision/NaiveBroadphase","./collision/Narrowphase","./collision/Ray","./collision/RaycastResult","./collision/SAPBroadphase","./constraints/Constraint","./constraints/DistanceConstraint","./constraints/GearConstraint","./constraints/LockConstraint","./constraints/PrismaticConstraint","./constraints/RevoluteConstraint","./equations/AngleLockEquation","./equations/ContactEquation","./equations/Equation","./equations/FrictionEquation","./equations/RotationalVelocityEquation","./events/EventEmitter","./material/ContactMaterial","./material/Material","./math/vec2","./objects/Body","./objects/LinearSpring","./objects/RotationalSpring","./objects/Spring","./objects/TopDownVehicle","./shapes/Box","./shapes/Capsule","./shapes/Circle","./shapes/Convex","./shapes/Heightfield","./shapes/Line","./shapes/Particle","./shapes/Plane","./shapes/Shape","./solver/GSSolver","./solver/Solver","./utils/ContactEquationPool","./utils/FrictionEquationPool","./utils/Pool","./utils/Utils","./world/World",37,"arguments","axes","updateArea","./Convex","./Shape",38,"intersectCapsule_hitPointWorld","intersectCapsule_normal","intersectCapsule_l0","intersectCapsule_l1","intersectCapsule_unit_y","hitPointWorld","l0","halfLen","diagonalLengthSquared","sqrtDelta","inv2a","d1",39,"Ray_intersectSphere_intersectionPoint","Ray_intersectSphere_normal","intersectionPoint",40,"isArray","triangles","polyk","tmpVec1","tmpVec2","projectOntoLocalAxis","projectOntoWorldAxis","shapeOffset","shapeAngle","polykVerts","id3","updateCenterOfMass_centroid","updateCenterOfMass_centroid_times_mass","updateCenterOfMass_a","updateCenterOfMass_b","updateCenterOfMass_c","centroid_times_mass","triangleArea","denom","numer","intersectConvex_rayStart","intersectConvex_rayEnd","intersectConvex_normal","rayStart","rayEnd","../math/polyk",41,"key","maxValue","minValue","updateMaxMinValues","getLineSegment","start","getSegmentIndex","getClampedSegmentIndex","intersectHeightfield_worldNormal","intersectHeightfield_l0","intersectHeightfield_l1","intersectHeightfield_localFrom","intersectHeightfield_localTo","localFrom","localTo",42,"raycast_normal","raycast_l0","raycast_l1","raycast_unit_y",43,44,"intersectPlane_planePointToFrom","intersectPlane_normal","intersectPlane_len","planePointToFrom","planeToFrom","planeToTo","n_dot_dir",45,"material","sensor",46,"GS","iterations","tolerance","arrayStep","lambda","Bs","invCs","useZeroRHS","frictionIterations","usedIterations","setArrayZero","array","solve","sortEquations","maxIter","maxFrictionIter","Neq","tolSquared","Nbodies","deltalambdaTot","iterateEquation","updateMultipliers","invDt","invC","lambdaj","GWlambda","lambdaj_plus_deltalambda","./Solver",47,"equationSortFunction","mockWorld","solveIsland","island","removeAllEquations","addEquations","getBodies","sort","addEquation","removeEquation","ISLAND",48,"destroy","equation","./Pool",49,50,"IslandNodePool","IslandNode","../world/IslandNode",51,"IslandPool","Island","../world/Island",52,"OverlapKeeper","overlappingShapesLastState","overlappingShapesCurrentState","recordPool","OverlapKeeperRecordPool","tmpDict","tmpArray1","tick","current","keys","lastObject","getByKey","setOverlapping","getNewOverlaps","getDiff","getEndOverlaps","dictA","dictB","lastData","isNewOverlap","idA","idB","getNewBodyOverlaps","getBodyDiff","getEndBodyOverlaps","accumulator","./OverlapKeeperRecord","./OverlapKeeperRecordPool","./TupleDictionary","./Utils",53,"OverlapKeeperRecord",54,"record",55,"objects","resize","object",56,"getKey","dict",57,"howmany","P2_ARRAY_TYPE","Float32Array",58,"bodyIds",59,"IslandManager","nodePool","islandPool","islands","nodes","queue","getUnvisitedNode","Nnodes","visited","visit","bds","Neqs","bfs","root","child","neighbors","split","ni","nj","./../utils/IslandNodePool","./../utils/IslandPool","./Island","./IslandNode",60,61,"springs","disabledBodyCollisionPairs","solver","islandManager","gravity","frictionGravity","useWorldGravityAsFrictionGravity","useFrictionGravityOnZeroGravity","broadphase","constraints","defaultMaterial","defaultContactMaterial","lastTimeStep","applySpringForces","applyGravity","solveConstraints","contactMaterials","stepping","bodiesToBeRemoved","islandSplit","emitImpactEvent","_constraintIdCounter","_bodyIdCounter","postStepEvent","addBodyEvent","removeBodyEvent","addSpringEvent","spring","impactEvent","contactEquation","postBroadphaseEvent","pairs","sleepMode","NO_SLEEPING","beginContactEvent","endContactEvent","preSolveEvent","BODY_SLEEPING","ISLAND_SLEEPING","constraint","addContactMaterial","contactMaterial","removeContactMaterial","getContactMaterial","cmats","step_mg","xiw","xjw","step","timeSinceLastCalled","maxSubSteps","internalStep","substeps","endOverlaps","Nsprings","np","mg","gravityLen","ignoredPairs","Nconstraints","Nresults","runNarrowphase","ev","glen","aiw","ajw","reducedMass","resolver","numFrictionBefore","numFrictionEquations","speedSquaredB","speedLimitSquaredB","speedSquaredA","speedLimitSquaredA","addSpring","evt","removeSpring","getBodyById","disableBodyCollision","enableBodyCollision","cs","cms","hitTest_tmp1","hitTest_tmp2","hitTest","pb","ps","pa","NS","setGlobalStiffness","setGlobalRelaxation","tmpAABB","../../package.json","../collision/Narrowphase","../collision/SAPBroadphase","../constraints/DistanceConstraint","../constraints/GearConstraint","../constraints/LockConstraint","../constraints/PrismaticConstraint","../constraints/RevoluteConstraint","../material/ContactMaterial","../material/Material","../objects/LinearSpring","../objects/RotationalSpring","../shapes/Capsule","../shapes/Line","../solver/GSSolver","../solver/Solver","../utils/OverlapKeeper","./IslandManager","PIXI","game","WEBGL_RENDERER","CANVAS_RENDERER","VERSION","_UID","Uint16Array","Uint32Array","ArrayBuffer","PI_2","RAD_TO_DEG","DEG_TO_RAD","RETINA_PREFIX","DisplayObject","pivot","rotation","alpha","visible","hitArea","renderable","parent","stage","worldAlpha","worldTransform","Matrix","worldScale","worldRotation","_sr","_cr","filterArea","_bounds","Rectangle","_currentBounds","_mask","_cacheAsBitmap","_cacheIsDirty","children","_destroyCachedSprite","item","isMask","_filters","passes","filterPasses","_filterBlock","blendMode","blendModes","MULTIPLY","NORMAL","_generateCachedSprite","updateTransform","tx","ty","pt","wt","rotationCache","atan2","transformCallback","transformCallbackContext","displayObjectUpdateTransform","getBounds","matrix","EmptyRectangle","getLocalBounds","identityMatrix","setStageReference","preUpdate","generateTexture","resolution","scaleMode","renderer","bounds","renderTexture","RenderTexture","_tempMatrix","render","updateCache","toGlobal","toLocal","applyInverse","_renderCachedSprite","renderSession","_cachedSprite","gl","Sprite","_renderWebGL","_renderCanvas","texture","tempFilters","filters","anchor","DisplayObjectContainer","ignoreChildInput","_width","_height","addChild","addChildAt","removeChild","swapChildren","child2","index1","getChildIndex","index2","setChildIndex","currentIndex","getChildAt","removeChildAt","removeStageReference","removeChildren","beginIndex","endIndex","begin","range","removed","displayObjectContainerUpdateTransform","childBounds","childMaxX","childMaxY","minX","Infinity","minY","maxX","maxY","childVisible","matrixCache","spriteBatch","flush","filterManager","pushFilter","maskManager","pushMask","mask","popMask","popFilter","Texture","emptyTexture","tint","cachedTint","tintedTexture","shader","exists","baseTexture","hasLoaded","onTextureUpdate","frame","setTexture","destroyBase","skipRender","valid","w0","w1","h0","h1","x1","y1","x2","y2","x3","y3","x4","y4","crop","currentBlendMode","globalCompositeOperation","blendModesCanvas","globalAlpha","smoothProperty","scaleModes","LINEAR","trim","shakeX","shakeY","roundPixels","setTransform","cw","ch","requiresReTint","CanvasTinter","getTintedTexture","drawImage","source","fromFrame","frameId","TextureCache","fromImage","imageId","crossorigin","SpriteBatch","textureThing","ready","initWebGL","fastSpriteBatch","WebGLFastSpriteBatch","setContext","shaderManager","setShader","fastShader","transform","isRotated","childTransform","hex2rgb","hex","rgb2hex","rgb","canUseNewCanvasBlendModes","document","pngHead","pngEnd","magenta","Image","src","yellow","canvas","CanvasPool","getContext","getImageData","remove","getNextPowerOfTwo","number","isPowerOfTwo","getFirst","container","createElement","pool","removeByCanvas","getTotal","getFree","initDefaultShaders","CompileVertexShader","shaderSrc","_CompileShader","VERTEX_SHADER","CompileFragmentShader","FRAGMENT_SHADER","shaderType","join","createShader","shaderSource","compileShader","getShaderParameter","COMPILE_STATUS","log","getShaderInfoLog","compileProgram","vertexSrc","fragmentSrc","fragmentShader","vertexShader","shaderProgram","createProgram","attachShader","linkProgram","getProgramParameter","LINK_STATUS","getProgramInfoLog","PixiShader","program","textureCount","firstRun","dirty","attributes","init","defaultVertexSrc","useProgram","uSampler","getUniformLocation","projectionVector","offsetVector","dimensions","aVertexPosition","getAttribLocation","aTextureCoord","colorAttribute","uniforms","uniformLocation","initUniforms","uniform","_init","initSampler2D","glMatrix","glValueLength","glFunc","uniformMatrix2fv","uniformMatrix3fv","uniformMatrix4fv","activeTexture","bindTexture","TEXTURE_2D","_glTextures","textureData","magFilter","minFilter","wrapS","CLAMP_TO_EDGE","wrapT","format","LUMINANCE","RGBA","repeat","REPEAT","pixelStorei","UNPACK_FLIP_Y_WEBGL","flipY","border","texImage2D","UNSIGNED_BYTE","texParameteri","TEXTURE_MAG_FILTER","TEXTURE_MIN_FILTER","TEXTURE_WRAP_S","TEXTURE_WRAP_T","uniform1i","syncUniforms","transpose","z","_dirty","instances","updateTexture","deleteProgram","PixiFastShader","uMatrix","aPositionCoord","aScale","aRotation","StripShader","translationMatrix","attribute","PrimitiveShader","tintColor","ComplexPrimitiveShader","color","glContexts","WebGLRenderer","defaultRenderer","transparent","autoResize","preserveDrawingBuffer","clearBeforeRender","view","_contextOptions","antialias","premultipliedAlpha","stencil","projection","WebGLShaderManager","WebGLSpriteBatch","WebGLMaskManager","WebGLFilterManager","stencilManager","WebGLStencilManager","blendModeManager","WebGLBlendModeManager","drawCount","initContext","mapBlendModes","glContextId","disable","DEPTH_TEST","CULL_FACE","enable","BLEND","contextLost","viewport","bindFramebuffer","FRAMEBUFFER","clearColor","_bgColor","COLOR_BUFFER_BIT","camera","_shake","renderDisplayObject","displayObject","buffer","setBlendMode","style","createTexture","UNPACK_PREMULTIPLY_ALPHA_WEBGL","NEAREST","mipmap","LINEAR_MIPMAP_LINEAR","NEAREST_MIPMAP_NEAREST","generateMipmap","_powerOf2","blendModesWebGL","modes","ONE","ONE_MINUS_SRC_ALPHA","ADD","SRC_ALPHA","DST_ALPHA","DST_COLOR","SCREEN","OVERLAY","DARKEN","LIGHTEN","COLOR_DODGE","COLOR_BURN","HARD_LIGHT","SOFT_LIGHT","DIFFERENCE","EXCLUSION","HUE","SATURATION","COLOR","LUMINOSITY","blendModeWebGL","blendFunc","maskData","WebGLGraphics","updateGraphics","_webGL","pushStencil","popStencil","stencilStack","count","graphics","webGLData","bindGraphics","STENCIL_TEST","STENCIL_BUFFER_BIT","colorMask","stencilFunc","ALWAYS","stencilOp","KEEP","INVERT","drawElements","TRIANGLE_FAN","indices","UNSIGNED_SHORT","EQUAL","DECR","INCR","TRIANGLE_STRIP","_currentGraphics","complexPrimitiveShader","uniform1f","toArray","uniform2f","uniform3fv","bindBuffer","ARRAY_BUFFER","vertexAttribPointer","FLOAT","ELEMENT_ARRAY_BUFFER","indexBuffer","primitiveShader","maxAttibs","attribState","tempAttribState","stack","defaultShader","stripShader","setAttribs","attribs","attribId","enableVertexAttribArray","disableVertexAttribArray","_currentId","currentShader","vertSize","numVerts","numIndices","positions","colors","lastIndexCount","drawing","currentBatchSize","currentBaseTexture","textures","shaders","sprites","AbstractFilter","vertexBuffer","createBuffer","bufferData","STATIC_DRAW","DYNAMIC_DRAW","sprite","uvs","_uvs","aX","aY","x0","y0","renderTilingSprite","tilingTexture","TextureUvs","tilePosition","tileScaleOffset","offsetX","offsetY","scaleX","tileScale","scaleY","TEXTURE0","stride","bufferSubData","subarray","nextTexture","nextBlendMode","nextShader","batchSize","blendSwap","shaderSwap","skip","renderBatch","startIndex","TRIANGLES","deleteBuffer","maxSize","renderSprite","filterStack","texturePool","initShaderBuffers","filterBlock","_filterArea","_previous_stencil_mgr","filter","FilterTexture","padding","frameBuffer","_glFilterTexture","vertexArray","uvBuffer","uvArray","inputTexture","outputTexture","filterPass","applyFilterPass","sizeX","sizeY","currentFilter","colorBuffer","colorArray","createFramebuffer","DEFAULT","framebufferTexture2D","COLOR_ATTACHMENT0","renderBuffer","createRenderbuffer","bindRenderbuffer","RENDERBUFFER","framebufferRenderbuffer","DEPTH_STENCIL_ATTACHMENT","renderbufferStorage","DEPTH_STENCIL","deleteFramebuffer","deleteTexture","CanvasBuffer","clearRect","CanvasMaskManager","save","cacheAlpha","CanvasGraphics","renderGraphicsMask","clip","restore","tintMethod","tintWithMultiply","fillStyle","toString","substr","fillRect","tintWithPerPixel","rgbValues","pixelData","pixels","canHandleAlpha","putImageData","checkInverseAlpha","s1","s2","canUseMultiply","CanvasRenderer","refresh","Phaser","Canvas","getSmoothingPrefix","navigator","isCocoonJS","screencanvas","rgba","removeView","useNew","BaseTextureCache","BaseTextureCacheIdGenerator","BaseTexture","complete","naturalWidth","naturalHeight","imageUrl","forceLoaded","_pixiId","unloadFromGPU","updateSourceImage","newSrc","glTexture","image","crossOrigin","fromCanvas","TextureCacheIdGenerator","FrameCache","TextureSilentFail","noFrame","isTiling","requiresUpdate","setFrame","onBaseTextureLoaded","_updateUvs","tw","th","addTextureToCache","removeTextureFromCache","textureBuffer","renderWebGL","renderCanvas","tempMatrix","updateBase","identity","translate","realResolution","getImage","getBase64","getCanvas","toDataURL","webGLPixels","Uint8Array","readPixels","tempCanvas","canvasData","Strip","canvasPadding","drawMode","DrawModes","_vertexBuffer","_initWebGL","_renderStrip","_indexBuffer","_uvBuffer","_colorBuffer","_renderCanvasTriangleStrip","_renderCanvasTriangles","_renderCanvasDrawTriangle","index0","textureSource","textureWidth","textureHeight","u0","v2","paddingX","paddingY","centerX","centerY","normX","normY","beginPath","moveTo","lineTo","closePath","deltaA","deltaB","deltaC","deltaD","deltaE","deltaF","renderStripFlat","strip","fill","updateFrame","rawX","rawY","Rope","lastPoint","amount","total","nextPoint","perp","perpLength","TilingSprite","textureDebug","canvasBuffer","tilePattern","refreshTexture","frameWidth","frameHeight","generateTilingTexture","createPattern","sessionBlendMode","forcePowerOfTwo","targetWidth","_frame","sourceSizeW","targetHeight","sourceSizeH","trimmed","spriteSourceSizeX","spriteSourceSizeY","strokeStyle","strokeRect","amd","WheelEventProxy","scaleFactor","deltaMode","_scaleFactor","_deltaMode","originalEvent","GAMES","AUTO","CANVAS","WEBGL","HEADLESS","NONE","LEFT","RIGHT","UP","DOWN","SPRITE","BUTTON","IMAGE","GRAPHICS","TEXT","TILESPRITE","BITMAPTEXT","GROUP","RENDERTEXTURE","TILEMAP","TILEMAPLAYER","EMITTER","POLYGON","BITMAPDATA","CANVAS_FILTER","WEBGL_FILTER","ELLIPSE","SPRITEBATCH","RETROFONT","POINTER","ROPE","RECTANGLE","MATRIX","POINT","ROUNDEDRECTANGLE","CREATURE","VIDEO","PENDING_ATLAS","HORIZONTAL","VERTICAL","LANDSCAPE","PORTRAIT","ANGLE_UP","ANGLE_DOWN","ANGLE_LEFT","ANGLE_RIGHT","ANGLE_NORTH_EAST","ANGLE_NORTH_WEST","ANGLE_SOUTH_EAST","ANGLE_SOUTH_WEST","TOP_LEFT","TOP_CENTER","TOP_RIGHT","LEFT_TOP","LEFT_CENTER","LEFT_BOTTOM","CENTER","RIGHT_TOP","RIGHT_CENTER","RIGHT_BOTTOM","BOTTOM_LEFT","BOTTOM_CENTER","BOTTOM_RIGHT","trunc","Function","bind","thisArg","bound","args","boundArgs","concat","TypeError","F","proto","arg","forEach","fun","CheapArray","assert","getProperty","obj","prop","parts","setProperty","chanceRoll","chance","random","randomChoice","choice1","choice2","parseDimension","dimension","parseInt","innerWidth","innerHeight","pad","dir","padlen","isPlainObject","nodeType","hasOwnProperty","copyIsArray","deep","mixinPrototype","mixin","replace","mixinKeys","childNodes","cloneNode","diameter","_diameter","_radius","circumference","setTo","copyFrom","copyTo","dest","round","output","contains","circumferencePoint","asDegrees","offsetPoint","top","bottom","equals","intersects","degToRad","intersectsRectangle","halfWidth","xDist","halfHeight","yDist","xCornerDist","yCornerDist","xCornerDistSq","yCornerDistSq","maxCornerDistSq","Ellipse","normx","normy","fromSprite","startSprite","endSprite","useCenter","center","fromAngle","rotateAround","line","asSegment","intersectsPoints","midPoint","centerOn","pointOnLine","pointOnSegment","xMin","xMax","yMin","yMax","coordinatesOnLine","stepRate","results","sx","sy","err","e2","wrap","uc","ua","ub","bx1","by1","bx2","by2","normalAngle","fromArray","newPos","tx1","invert","clampX","clamp","clampY","radToDeg","getMagnitude","getMagnitudeSq","setMagnitude","magnitude","isZero","rperp","normalRightHand","negative","multiplyAdd","interpolate","project","amt","projectUnit","pointslength","parse","xProp","yProp","_points","closed","toNumberArray","flatten","inside","ix","iy","jx","jy","calculateArea","avgHeight","floorAll","ceilAll","inflate","containsRect","intersection","intersectsRaw","union","randomX","randomY","getPoint","empty","inflatePoint","containsRaw","rx","ry","rw","rh","volume","sameDimensions","NEGATIVE_INFINITY","POSITIVE_INFINITY","RoundedRectangle","Camera","deadzone","roundPx","atLimit","totalInView","onShakeComplete","Signal","onFlashComplete","onFadeComplete","fx","_targetPosition","_edge","_position","intensity","duration","horizontal","vertical","shakeBounds","_fxDuration","_fxType","FOLLOW_LOCKON","FOLLOW_PLATFORMER","FOLLOW_TOPDOWN","FOLLOW_TOPDOWN_TIGHT","SHAKE_BOTH","SHAKE_HORIZONTAL","SHAKE_VERTICAL","ENABLE_FX","boot","Graphics","follow","lerpX","lerpY","helper","unfollow","focusOn","setPosition","focusOnXY","shake","flash","beginFill","drawRect","endFill","fade","updateFX","updateShake","checkBounds","elapsedMS","dispatch","rnd","frac","updateTarget","math","linear","setBoundsToWorld","vx","vw","vy","vh","setSize","resetFX","State","make","cache","input","load","sound","state","tweens","particles","physics","preload","loadUpdate","loadRender","preRender","paused","resumed","pauseUpdate","shutdown","StateManager","pendingState","states","_pendingState","_clearWorld","_clearCache","_created","_args","onStateChange","onInitCallback","onPreloadCallback","onCreateCallback","onUpdateCallback","onRenderCallback","onResizeCallback","onPreRenderCallback","onLoadUpdateCallback","onLoadRenderCallback","onPausedCallback","onResumedCallback","onPauseUpdateCallback","onShutDownCallback","onPause","pause","onResume","resume","autoStart","newState","isBooted","callbackContext","clearWorld","clearCache","checkState","restart","dummy","previousStateKey","clearCurrentState","setCurrentState","totalQueuedFiles","totalQueuedPacks","loadComplete","removeAll","debug","link","unlink","_kickstart","getCurrentState","elapsedTime","renderType","_bindings","_prevParams","memorize","_shouldPropagate","active","_boundDispatch","validateListener","fnName","_registerListener","isOnce","listenerContext","priority","binding","prevIndex","_indexOfListener","SignalBinding","_addBinding","execute","_priority","cur","_listener","addOnce","_destroy","getNumListeners","halt","bindings","paramsArr","forget","dispose","_this","signal","_isOnce","_signal","callCount","params","handlerReturn","detach","isBound","getListener","getSignal","Filter","prevPoint","Date","mouse","date","getFullYear","getMonth","getDate","getHours","getMinutes","getSeconds","sampleRate","iChannel0","iChannel1","iChannel2","iChannel3","setResolution","pointer","toFixed","totalElapsedSeconds","anchorX","anchorY","Plugin","hasPreUpdate","hasUpdate","hasPostUpdate","hasRender","hasPostRender","postRender","PluginManager","plugins","_len","_i","plugin","postUpdate","Stage","disableVisibilityChange","currentRenderOrderID","_hiddenVar","_onChange","config","parseConfig","setBackgroundColor","DOM","getOffset","setUserSelect","setTouchAction","checkVisibility","webkitHidden","mozHidden","msHidden","hidden","visibilityChange","addEventListener","onblur","onfocus","onpagehide","onpageshow","device","cocoonJSApp","CocoonJS","App","onSuspended","onActivated","focusLoss","focusGain","gamePaused","gameResumed","Color","valueToColor","updateColor","removeEventListener","Group","addToStage","enableBody","physicsBodyType","Physics","ARCADE","physicsType","alive","ignoreDestroy","pendingDestroy","classType","cursor","inputEnableChildren","onChildInputDown","onChildInputUp","onChildInputOver","onChildInputOut","enableBodyDebug","physicsSortDirection","onDestroy","cursorIndex","fixedToCamera","cameraOffset","hash","_sortProperty","RETURN_NONE","RETURN_TOTAL","RETURN_CHILD","SORT_ASCENDING","SORT_DESCENDING","silent","removeFromHash","updateZ","addToHash","inputEnabled","events","onAddedToGroup$dispatch","addAt","addMultiple","moveAll","getAt","createMultiple","quantity","singleKey","singleFrame","align","rows","columns","cellWidth","cellHeight","alignIn","resetCursor","next","previous","swap","child1","bringToTop","getIndex","sendToBack","moveUp","moveDown","xy","getByName","oldChild","newChild","hasProperty","operation","checkProperty","checkAlive","checkVisible","setAll","setAllChildren","checkAll","addAll","property","subAll","multiplyAll","divideAll","callAllExists","existsValue","callbackFromArray","callAll","method","methodLength","contextLength","renderOrderID","predicate","checkExists","ArraySet","forEachExists","iterate","forEachAlive","forEachDead","order","ascendingSortHandler","descendingSortHandler","customSort","sortHandler","returnType","getFirstExists","createIfNull","resetChild","getFirstAlive","getFirstDead","loadTexture","getTop","getBottom","getClosestTo","tempDistance","getFurthestFrom","countLiving","countDead","getRandom","ArrayUtils","getRandomItem","destroyPhase","onRemovedFromGroup$dispatch","group","destroyTexture","removeBetween","destroyChildren","soft","_definedSize","stateChange","setBounds","useBounds","between","Game","physicsConfig","isRunning","raf","net","Device","lockRender","pendingStep","stepCount","onBlur","onFocus","_paused","_codePaused","currentUpdateID","updatesThisFrame","_deltaTime","_lastCount","_spiraling","fpsProblemNotifier","forceSingleUpdate","_nextFpsNotification","enableDebug","RandomDataGenerator","now","whenReady","seed","ScaleManager","setUpRenderer","GameObjectFactory","GameObjectCreator","Cache","Loader","Time","TweenManager","Input","SoundManager","Particles","Create","Net","Debug","showDebugHeader","RequestAnimationFrame","stopFocus","focus","hideBanner","webAudio","chrome","webGL","contextRestored","cocoonJS","smoothed","addToDOM","preventDefault","clearGLTextures","updateLogic","desiredFpsMult","updateRender","slowMotion","desiredFps","slowStep","elapsed","enableStep","disableStep","removeFromDOM","muteOnPause","setMute","cordova","iOS","unsetMute","hitCanvas","hitContext","moveCallbacks","customCandidateHandler","customCandidateHandlerContext","pollRate","multiInputOverride","MOUSE_TOUCH_COMBINE","maxPointers","tapRate","doubleTapRate","holdRate","justPressedRate","justReleasedRate","recordPointerHistory","recordRate","recordLimit","pointer1","pointer2","pointer3","pointer4","pointer5","pointer6","pointer7","pointer8","pointer9","pointer10","pointers","activePointer","mousePointer","keyboard","touch","mspointer","gamepad","resetLocked","onDown","onUp","onTap","onHold","minPriorityID","interactiveItems","_localPoint","_pollCounter","_oldPosition","_x","_y","MOUSE_OVERRIDES_TOUCH","TOUCH_OVERRIDES_MOUSE","MAX_POINTERS","Pointer","PointerMode","CURSOR","addPointer","Mouse","Touch","MSPointer","Keyboard","Gamepad","_onClickTrampoline","onClickTrampoline","setInteractiveCandidateHandler","addMoveCallback","deleteMoveCallback","TOUCH","hard","resetSpeed","startPointer","countActivePointers","updatePointer","identifier","move","stopPointer","limit","getPointer","isActive","getPointerFromIdentifier","getPointerFromId","pointerId","getLocalPosition","worldVisible","TileSprite","graphicsData","processClickTrampolines","mouseDownCallback","mouseUpCallback","mouseOutCallback","mouseOverCallback","mouseWheelCallback","capture","button","wheelDelta","locked","stopOnGameOut","pointerLock","_onMouseDown","_onMouseMove","_onMouseUp","_onMouseOut","_onMouseOver","_onMouseWheel","_wheelEvent","NO_BUTTON","LEFT_BUTTON","MIDDLE_BUTTON","RIGHT_BUTTON","BACK_BUTTON","FORWARD_BUTTON","WHEEL_UP","WHEEL_DOWN","android","onMouseDown","onMouseMove","onMouseUp","_onMouseUpGlobal","onMouseUpGlobal","_onMouseOutGlobal","onMouseOutGlobal","onMouseOut","onMouseOver","onMouseWheel","wheelEvent","mouseMoveCallback","withinGame","leftButton","rightButton","bindEvent","deltaY","requestPointerLock","element","mozRequestPointerLock","webkitRequestPointerLock","_pointerLockChange","pointerLockChange","pointerLockElement","mozPointerLockElement","webkitPointerLockElement","releasePointerLock","exitPointerLock","mozExitPointerLock","webkitExitPointerLock","_stubsGenerated","makeBinder","defineProperties","detail","deltaX","wheelDeltaX","deltaZ","pointerDownCallback","pointerMoveCallback","pointerUpCallback","_onMSPointerDown","_onMSPointerMove","_onMSPointerUp","_onMSPointerUpGlobal","_onMSPointerOut","_onMSPointerOver","onPointerDown","onPointerMove","onPointerUp","onPointerUpGlobal","onPointerOut","onPointerOver","pointerType","DeviceButton","buttonCode","isDown","isUp","timeDown","timeUp","repeats","altKey","shiftKey","ctrlKey","onFloat","padFloat","justPressed","justReleased","pointerMode","CONTACT","middleButton","backButton","forwardButton","eraserButton","ERASER_BUTTON","_holdSent","_history","_nextDrop","_stateReset","clientX","clientY","pageX","pageY","screenX","screenY","rawMovementX","rawMovementY","movementX","movementY","isMouse","previousTapTime","totalTouches","msSinceLastClick","targetObject","interactiveCandidates","positionDown","positionUp","_clickTrampolines","_trampolineTargetObject","resetButtons","processButtonsDown","buttons","processButtonsUp","updateButtons","down","toLowerCase","totalActivePointers","_touchedHandler","processInteractiveObjects","shift","fromClick","pollLocked","mozMovementX","webkitMovementX","mozMovementY","webkitMovementY","isDragged","highestRenderOrderID","highestInputPriorityID","candidateTarget","currentNode","checked","validForInput","checkPointerDown","checkPointerOver","priorityID","swapTarget","newTarget","_pointerOutHandler","_pointerOverHandler","leave","currentPointers","addClickTrampoline","callbackArgs","trampolines","trampoline","_releasedHandler","resetMovement","touchLockCallbacks","touchStartCallback","touchMoveCallback","touchEndCallback","touchEnterCallback","touchLeaveCallback","touchCancelCallback","_onTouchStart","_onTouchMove","_onTouchEnd","_onTouchEnter","_onTouchLeave","_onTouchCancel","onTouchStart","onTouchMove","onTouchEnd","onTouchEnter","onTouchLeave","onTouchCancel","consumeDocumentTouches","_documentTouchMove","addTouchLockCallback","onEnd","removeTouchLockCallback","cb","changedTouches","InputHandler","useHandCursor","_setHandCursor","allowHorizontalDrag","allowVerticalDrag","snapOffset","snapOnDrag","snapOnRelease","snapX","snapY","snapOffsetX","snapOffsetY","pixelPerfectOver","pixelPerfectClick","pixelPerfectAlpha","draggable","boundsRect","boundsSprite","scaleLayer","dragOffset","dragFromCenter","dragStopBlocksInputUp","dragStartPoint","dragDistanceThreshold","dragTimeThreshold","downPoint","snapPoint","_dragPoint","_dragPhase","_pendingDrag","_dragTimePass","_dragDistancePass","_wasEnabled","_tempPoint","_pointerData","camX","camY","isOver","isOut","timeOver","timeOut","downDuration","onAddedToGroup","addedToGroup","onRemovedFromGroup","removedFromGroup","flagged","highestID","highestRenderID","includePixelPerfect","isPixelPerfect","pointerX","pointerY","pointerDown","pointerUp","pointerTimeDown","pointerTimeUp","pointerOver","pointerOut","pointerTimeOver","pointerTimeOut","pointerDragged","fastTest","checkPixel","_dx","_dy","startDrag","_draggedPointerID","updateDrag","sendEvent","onInputOver$dispatch","onInputOut$dispatch","onInputDown$dispatch","dragTimeElapsed","onInputUp$dispatch","stopDrag","fromStart","globalToLocalX","globalToLocalY","checkBoundsRect","checkBoundsSprite","onDragUpdate","justOver","delay","overDuration","justOut","enableDrag","lockCenter","pixelPerfect","alphaThreshold","disableDrag","onDragStart$dispatch","grid","boundsFluid","scaleFluidInversed","onDragStop$dispatch","setDragLock","allowHorizontal","allowVertical","enableSnap","onDrag","onRelease","disableSnap","_gamepadIndexMap","_rawPads","_active","_gamepadSupportAvailable","webkitGetGamepads","webkitGamepads","userAgent","getGamepads","_prevRawGamepadTypes","_prevTimestamps","onConnectCallback","onDisconnectCallback","onDownCallback","onUpCallback","onAxisCallback","onFloatCallback","_ongamepadconnected","_gamepaddisconnected","_gamepads","SinglePad","addCallbacks","callbacks","onConnect","onDisconnect","onAxis","_onGamepadConnected","onGamepadConnected","_onGamepadDisconnected","onGamepadDisconnected","newPad","connect","removedPad","disconnect","_pollGamepads","pad1","pollStatus","pad2","pad3","pad4","rawGamepads","gamepadsChanged","_rawPad","singlePad","validConnections","rawIndices","padIndices","connected","rawPad","setDeadZones","deadZone","BUTTON_0","BUTTON_1","BUTTON_2","BUTTON_3","BUTTON_4","BUTTON_5","BUTTON_6","BUTTON_7","BUTTON_8","BUTTON_9","BUTTON_10","BUTTON_11","BUTTON_12","BUTTON_13","BUTTON_14","BUTTON_15","AXIS_0","AXIS_1","AXIS_2","AXIS_3","AXIS_4","AXIS_5","AXIS_6","AXIS_7","AXIS_8","AXIS_9","XBOX360_A","XBOX360_B","XBOX360_X","XBOX360_Y","XBOX360_LEFT_BUMPER","XBOX360_RIGHT_BUMPER","XBOX360_LEFT_TRIGGER","XBOX360_RIGHT_TRIGGER","XBOX360_BACK","XBOX360_START","XBOX360_STICK_LEFT_BUTTON","XBOX360_STICK_RIGHT_BUTTON","XBOX360_DPAD_LEFT","XBOX360_DPAD_RIGHT","XBOX360_DPAD_UP","XBOX360_DPAD_DOWN","XBOX360_STICK_LEFT_X","XBOX360_STICK_LEFT_Y","XBOX360_STICK_RIGHT_X","XBOX360_STICK_RIGHT_Y","PS3XC_X","PS3XC_CIRCLE","PS3XC_SQUARE","PS3XC_TRIANGLE","PS3XC_L1","PS3XC_R1","PS3XC_L2","PS3XC_R2","PS3XC_SELECT","PS3XC_START","PS3XC_STICK_LEFT_BUTTON","PS3XC_STICK_RIGHT_BUTTON","PS3XC_DPAD_UP","PS3XC_DPAD_DOWN","PS3XC_DPAD_LEFT","PS3XC_DPAD_RIGHT","PS3XC_STICK_LEFT_X","PS3XC_STICK_LEFT_Y","PS3XC_STICK_RIGHT_X","PS3XC_STICK_RIGHT_Y","padParent","_padParent","_prevTimestamp","_buttons","_buttonsLen","_axes","_axesLen","getButton","timestamp","rawButtonVal","isNaN","processButtonDown","processButtonUp","processButtonFloat","processAxisChange","triggerCallback","disconnectingIndex","axisCode","buttonValue","Key","keycode","_enabled","keyCode","onHoldCallback","onHoldContext","_justDown","_justUp","processKeyDown","processKeyUp","upDuration","pressEvent","onPressCallback","_keys","_capture","_onKeyDown","_onKeyPress","_onKeyUp","_k","onPress","addKey","addKeyCapture","addKeys","removeKey","removeKeyCapture","createCursorKeys","up","KeyCode","processKeyPress","clearCaptures","String","fromCharCode","charCode","A","charCodeAt","C","D","E","H","J","K","L","M","O","P","Q","R","S","T","U","V","W","X","Y","Z","ZERO","TWO","THREE","FOUR","FIVE","SIX","SEVEN","EIGHT","NINE","NUMPAD_0","NUMPAD_1","NUMPAD_2","NUMPAD_3","NUMPAD_4","NUMPAD_5","NUMPAD_6","NUMPAD_7","NUMPAD_8","NUMPAD_9","NUMPAD_MULTIPLY","NUMPAD_ADD","NUMPAD_ENTER","NUMPAD_SUBTRACT","NUMPAD_DECIMAL","NUMPAD_DIVIDE","F1","F2","F3","F4","F5","F6","F7","F8","F9","F10","F11","F12","F13","F14","F15","COLON","EQUALS","COMMA","UNDERSCORE","PERIOD","QUESTION_MARK","TILDE","OPEN_BRACKET","BACKWARD_SLASH","CLOSED_BRACKET","QUOTES","BACKSPACE","TAB","CLEAR","ENTER","SHIFT","CONTROL","ALT","CAPS_LOCK","ESC","SPACEBAR","PAGE_UP","PAGE_DOWN","END","HOME","PLUS","MINUS","INSERT","DELETE","HELP","NUM_LOCK","match","Component","Angle","wrapAngle","Animation","play","frameRate","loop","killOnComplete","animations","AutoCull","autoCull","inCamera","checkWorldBounds","Bounds","alignTo","BringToTop","Core","install","components","Events","PhysicsBody","AnimationManager","LoadTexture","FixedToCamera","previousRotation","fresh","_exists","P2JS","customRender","Crop","cropRect","_crop","updateCrop","resetFrame","Delta","Destroy","onDestroy$dispatch","removeFrom","Video","onChangeSource","resizeFrame","BitmapText","_glyphs","_parent","_onDestroy","_onAddedToGroup","_onRemovedFromGroup","_onRemovedFromWorld","_onKilled","_onRevived","_onEnterBounds","_onOutOfBounds","_onInputOver","_onInputOut","_onInputDown","_onInputUp","_onDragStart","_onDragUpdate","_onDragStop","_onAnimationStart","_onAnimationComplete","_onAnimationLoop","onRemovedFromWorld","onKilled","onRevived","onOutOfBounds","onEnterBounds","onInputOver","onInputOut","onInputDown","onInputUp","onDragStart","onDragStop","onAnimationStart","onAnimationComplete","onAnimationLoop","backing","_fixedToCamera","Health","health","maxHealth","damage","kill","setHealth","heal","InCamera","InputEnabled","InWorld","outOfCameraBoundsKill","_outOfBoundsFired","onEnterBounds$dispatch","onOutOfBounds$dispatch","outOfBoundsKill","inWorld","LifeSpan","lifespan","physicsElapsedMS","revive","onRevived$dispatch","onKilled$dispatch","stopAnimation","BitmapData","hasFrameData","loadFrameData","getFrameData","frameData","Tilemap","TilemapLayer","img","base","frameName","Overlap","_reset","Reset","ScaleMinMax","scaleMin","scaleMax","checkTransform","setScaleMinMax","Smoothed","existing","weapon","Weapon","createBullets","creature","mesh","Creature","tween","physicsGroup","audio","audioSprite","addSprite","tileSprite","rope","text","Text","overFrame","outFrame","downFrame","upFrame","Button","emitter","maxParticles","Arcade","Emitter","retroFont","font","characterWidth","characterHeight","chars","charsPerRow","xSpacing","ySpacing","xOffset","yOffset","RetroFont","bitmapText","tilemap","tileWidth","addToCache","uuid","addRenderTexture","video","bitmapData","addBitmapData","Tween","preUpdatePhysics","preUpdateLifeSpan","preUpdateInWorld","preUpdateCore","_onOverFrame","_onOutFrame","_onDownFrame","_onUpFrame","onOverSound","onOutSound","onDownSound","onUpSound","onOverSoundMarker","onOutSoundMarker","onDownSoundMarker","onUpSoundMarker","onOverMouseOnly","justReleasedPreventsOver","freezeFrames","forceOut","setFrames","onInputOverHandler","onInputOutHandler","onInputDownHandler","onInputUpHandler","removedFromWorld","STATE_OVER","STATE_OUT","STATE_DOWN","STATE_UP","clearFrames","setStateFrame","switchImmediately","frameKey","changeStateFrame","setStateSound","marker","soundKey","markerKey","Sound","AudioSprite","playStateSound","setSounds","overSound","overMarker","downSound","downMarker","outSound","outMarker","upSound","upMarker","setOverSound","setOutSound","setDownSound","setUpSound","changedUp","ctx","imageData","FrameData","textureFrame","addFrame","Frame","disableTextureUpload","cls","_image","_pos","_size","_scale","_rotate","_alpha","prev","_anchor","_tempR","_tempG","_tempB","_circle","_swapCanvas","moveH","moveV","draw","addImage","processPixelRGB","pixel","createColor","unpackPixel","getPixel32","setPixel32","processPixel","replaceRGB","g1","g2","region","packPixel","setHSL","bHaveH","bHaveS","bHaveL","HSLtoRGB","shiftHSL","red","green","blue","immediate","LITTLE_ENDIAN","setPixel","getPixel","getPixelRGB","hsl","hsv","getPixels","getFirstPixel","scan","newWidth","newHeight","op","copyTransform","copyRect","drawGroup","drawGroupProxy","drawFull","renderGraphics","shadow","blur","shadowColor","shadowBlur","shadowOffsetX","shadowOffsetY","alphaMask","sourceRect","maskRect","blendSourceAtop","blendReset","extract","destination","prevFont","fillText","arc","lineWidth","stroke","textureLine","blendSourceOver","blendSourceIn","blendSourceOut","blendDestinationOver","blendDestinationIn","blendDestinationOut","blendDestinationAtop","blendXor","blendAdd","blendMultiply","blendScreen","blendOverlay","blendDarken","blendLighten","blendColorDodge","blendColorBurn","blendHardLight","blendSoftLight","blendDifference","blendExclusion","blendHue","blendSaturation","blendColor","blendLuminosity","getSmoothingEnabled","setSmoothingEnabled","getTransform","translateX","translateY","skewX","skewY","fillAlpha","lineColor","currentPath","boundsPadding","_localBounds","webGLDirty","cachedSpriteDirty","lineStyle","lineAlpha","drawShape","quadraticCurveTo","cpX","cpY","toX","toY","xa","ya","fromX","fromY","bezierCurveTo","cpX2","cpY2","dt2","dt3","arcTo","mm","dd","cc","tt","k1","k2","j1","j2","qx","qy","startAngle","endAngle","anticlockwise","segments","sweep","segs","startX","startY","filling","theta","theta2","cTheta","sTheta","segMinus","remainder","real","fillColor","drawRoundedRect","drawCircle","drawEllipse","drawPolygon","clearDirty","updateCachedSpriteTexture","_prevTint","updateLocalBounds","tempPoint","RECT","RREC","CIRC","ELIP","cachedSprite","destroyCachedSprite","GraphicsData","POLY","_lineTint","_fillTint","sign","EarCut","holeIndices","dim","hasHoles","outerLen","outerNode","linkedList","eliminateHoles","earcutLinked","clockwise","insertNode","filterPoints","again","steiner","removeNode","ear","pass","indexCurve","isEarHashed","isEar","cureLocalIntersections","splitEarcut","pointInTriangle","minTX","minTY","maxTX","maxTY","minZ","zOrder","maxZ","nextZ","prevZ","locallyInside","isValidDiagonal","splitPolygon","list","getLeftmost","compareX","eliminateHole","hole","findHoleBridge","hx","hy","tan","tanMin","sortLinked","q","tail","numMerges","pSize","qSize","inSize","leftmost","intersectsPolygon","middleInside","Node","an","bp","stencilBufferLimit","lastIndex","graphicsDataPool","switchMode","canDrawUsingSimple","buildPoly","buildComplexPoly","buildLine","buildRectangle","buildCircle","buildRoundedRectangle","upload","WebGLGraphicsData","rectData","vertPos","tempPoints","rrectData","recPoints","quadraticBezierCurve","vecPos","getPt","n1","n2","perc","diff","xb","yb","circleData","totalSegs","seg","firstPoint","midPointX","midPointY","unshift","p1x","p1y","p2x","p2y","p3x","p3y","perpx","perpy","perp2x","perp2y","perp3x","perp3y","pdist","indexCount","indexStart","glPoints","glIndicies","updateGraphicsTint","kappa","ox","oy","xe","ye","xm","ym","maxRadius","tintR","tintG","tintB","drawTriangle","cull","triangle","cameraToFace","faceNormal","drawTriangles","point1","point2","point3","renderXY","renderRawXY","textBounds","strokeColors","fontStyles","fontWeights","autoRound","useAdvancedWrap","_res","_text","_fontComponents","_lineSpacing","_charCount","setStyle","updateText","setShadow","shadowStroke","shadowFill","backgroundColor","boundsAlignH","boundsAlignV","strokeThickness","wordWrap","wordWrapWidth","maxLines","tabs","fontToComponents","fontStyle","fontVariant","fontWeight","fontSize","componentsToFont","outputText","runWordWrap","lines","lineWidths","maxLineWidth","fontProperties","determineFontProperties","drawnLines","measureLine","measureText","tab","section","snapToCeil","lineHeight","lineSpacing","textBaseline","lineCap","lineJoin","linePositionX","linePositionY","ascent","updateLine","updateShadow","strokeText","renderTabLine","snap","lineLength","letter","clearColors","clearFontValues","addColor","addStrokeColor","addFontStyle","addFontWeight","weight","precalculateWordWrap","wrappedLines","advancedWordWrap","basicWordWrap","linesCount","currentLineWidth","words","word","wordWithSpace","wordWidth","newWord","secondPart","spaceLeft","wordWidthWithSpace","updateFont","family","exec","fontFamily","setText","parseList","setTextBounds","properties","fontPropertiesCache","fontPropertiesCanvas","fontPropertiesContext","baseline","descent","imagedata","parseFloat","textWidth","textHeight","_prevAnchor","_maxWidth","_data","getBitmapFont","_font","_fontSize","_align","_tint","sourceWidth","sourceHeight","scanLine","lastSpace","wrappedWidth","prevCharCode","maxWidth","test","charAt","charData","kerning","xAdvance","cleanText","re","purgeGlyphs","kept","checkImageKey","characterSpacingX","characterSpacingY","characterPerRow","multiLine","autoUpperCase","customSpacingX","customSpacingY","fixedWidth","fontSet","grabData","currentX","currentY","updateFrameData","stamp","ALIGN_LEFT","ALIGN_RIGHT","ALIGN_CENTER","TEXT_SET1","TEXT_SET2","TEXT_SET3","TEXT_SET4","TEXT_SET5","TEXT_SET6","TEXT_SET7","TEXT_SET8","TEXT_SET9","TEXT_SET10","TEXT_SET11","setFixedWidth","lineAlignment","content","characterSpacing","allowLowerCase","buildRetroFontText","getLongestLine","pasteLine","longestLine","removeUnsupportedCharacters","stripCR","newString","aChar","code","updateOffset","diffX","diffY","frames","getFrames","newText","toUpperCase","_hasUpdateAnimation","_updateAnimationCallback","updateAnimation","_updateAnimation","difference","_scroll","def","physicsElapsed","autoScroll","stopScroll","deviceReadyAt","initialized","desktop","iOSVersion","nodeWebkit","electron","ejecta","crosswalk","chromeOS","linux","macOS","windows","windowsPhone","canvasBitBltShift","file","fileSystem","localStorage","worker","css3D","typedArray","vibration","getUserMedia","quirksMode","arora","chromeVersion","epiphany","firefox","firefoxVersion","ie","ieVersion","trident","tridentVersion","mobileSafari","midori","opera","safari","safariVersion","webApp","silk","audioData","ogg","opus","mp3","wav","m4a","webm","dolby","oggVideo","h264Video","mp4Video","webmVideo","vp9Video","hlsVideo","iPhone","iPhone4","iPad","pixelRatio","littleEndian","support32bit","fullscreen","requestFullscreen","cancelFullscreen","fullscreenKeyboard","onInitialized","nonPrimer","readyCheck","_readyCheck","_monitor","_queue","readyState","setTimeout","_initialize","_checkOS","vita","kindle","RegExp","$1","_checkFeatures","getItem","error","WebGLRenderingContext","compatMode","webkitGetUserMedia","mozGetUserMedia","msGetUserMedia","oGetUserMedia","URL","webkitURL","mozURL","msURL","_checkInput","documentElement","maxTouchPoints","msPointerEnabled","pointerEnabled","_checkFullScreenSupport","fs","cfs","Element","_checkBrowser","$3","process","versions","_checkVideo","videoElement","canPlayType","_checkAudio","audioElement","major","minor","$2","_checkDevice","Int8Array","_checkIsLittleEndian","Uint8ClampedArray","Int32Array","_checkIsUint8ClampedImageData","vibrate","webkitVibrate","mozVibrate","msVibrate","elem","createImageData","_checkCSS3D","has3d","el","transforms","webkitTransform","OTransform","msTransform","MozTransform","insertBefore","getComputedStyle","getPropertyValue","canPlayAudio","canPlayVideo","isConsoleOpen","profile","profileEnd","isAndroidStockBrowser","matches","skipPool","display","msTouchAction","overflowHidden","getElementById","overflow","appendChild","parentNode","vendor","prefix","setImageRenderingCrisp","types","msInterpolationMode","setImageRenderingBicubic","forceSetTimeOut","vendors","requestAnimationFrame","cancelAnimationFrame","_isSetTimeOut","_onLoop","_timeOutID","updateSetTimeout","updateRAF","rafTime","timeToCall","clearTimeout","isSetTimeOut","isRAF","PI2","fuzzyEqual","fuzzyLessThan","fuzzyGreaterThan","fuzzyCeil","val","fuzzyFloor","average","shear","snapTo","gap","snapToFloor","roundTo","place","floorTo","ceilTo","angleBetween","angleBetweenY","angleBetweenPoints","angleBetweenPointsY","reverseAngle","angleRad","normalizeAngle","maxAdd","minSub","wrapValue","isOdd","isEven","minProperty","maxProperty","radians","linearInterpolation","bezierInterpolation","bernstein","catmullRomInterpolation","catmullRom","factorial","res","roundAwayFromZero","sinCosGenerator","sinAmplitude","cosAmplitude","frequency","frq","cosTable","sinTable","distanceSq","distancePow","clampBottom","within","mapLinear","smoothstep","smootherstep","percent","degreeToRadiansFactor","radianToDegreesFactor","degrees","seeds","s0","sow","integer","integerInRange","realInRange","pick","ary","weightedPick","QuadTree","maxObjects","maxLevels","_empty","subWidth","subHeight","populate","populateHandler","insert","retrieve","returnObjects","getHostName","location","hostname","checkDomainName","domain","updateQueryString","redirect","href","separator","getQueryString","parameter","keyValues","search","substring","decodeURI","decodeURIComponent","frameBased","_tweens","_add","easeMap","Power0","Easing","Power1","Power2","Power3","Power4","Linear","None","Quad","Quadratic","Out","Cubic","Quart","Quartic","Quint","Quintic","Sine","Sinusoidal","Expo","Exponential","Circ","Circular","Elastic","Back","Bounce","Quad.easeIn","In","Cubic.easeIn","Quart.easeIn","Quint.easeIn","Sine.easeIn","Expo.easeIn","Circ.easeIn","Elastic.easeIn","Back.easeIn","Bounce.easeIn","Quad.easeOut","Cubic.easeOut","Quart.easeOut","Quint.easeOut","Sine.easeOut","Expo.easeOut","Circ.easeOut","Elastic.easeOut","Back.easeOut","Bounce.easeOut","Quad.easeInOut","InOut","Cubic.easeInOut","Quart.easeInOut","Quint.easeInOut","Sine.easeInOut","Expo.easeInOut","Circ.easeInOut","Elastic.easeInOut","Back.easeInOut","Bounce.easeInOut","_pauseAll","_resumeAll","getAll","pendingDelete","_manager","addTweens","numTweens","isTweening","some","_pause","_resume","pauseAll","resumeAll","manager","timeline","timeScale","repeatCounter","onStart","onLoop","onRepeat","onChildComplete","onComplete","chainedTween","isPaused","_onUpdateCallback","_onUpdateCallbackContext","_pausedTime","_hasStarted","ease","yoyo","Default","TweenData","vEnd","loadValues","updateTweenData","repeatDelay","yoyoDelay","easing","interpolation","repeatAll","chain","startTime","status","PENDING","RUNNING","LOOPED","COMPLETE","generateData","vStart","vStartCache","vEndCache","repeatTotal","inReverse","easingFunction","interpolationFunction","interpolationContext","isFrom","yoyoCounter","ms","fps","blob","reversed","asin","prevTime","_desiredFps","suggestedFps","advancedTiming","fpsMin","fpsMax","msMin","msMax","pauseDuration","timeExpected","Timer","_frameCount","_elapsedAccumulator","_started","_timeLastSecond","_pauseStarted","_justResumed","_timers","timer","autoDestroy","previousDateNow","updateAdvancedTiming","updateTimers","elapsedSince","since","elapsedSecondsSince","running","expired","nextTick","timeCap","_pauseTotal","_now","_marked","_diff","_newTick","MINUTE","SECOND","HALF","QUARTER","repeatCount","TimerEvent","clearEvents","clearPendingEvents","adjustEvents","baseTime","currentFrame","currentAnim","updateIfVisible","isLoaded","_frameData","_anims","_outputFrames","anim","copyFrameData","useNumericIndex","getFrameIndexes","validateFrames","checkFrameName","isPlaying","getAnimation","refreshFrame","getFrame","getFrameByName","_frameIndex","_frames","loopCount","isFinished","_pauseStartTime","_frameDiff","_frameSkip","onUpdate","isReversed","_timeLastFrame","_timeNextFrame","updateCurrentFrame","onAnimationStart$dispatch","reverseOnce","useLocalFrameIndex","frameIndex","dispatchComplete","onAnimationComplete$dispatch","onAnimationLoop$dispatch","signalUpdate","fromPlay","generateFrameNames","suffix","zeroPad","rotated","rotationDirection","spriteSourceSizeW","spriteSourceSizeH","setTrim","actualWidth","actualHeight","destX","destY","destWidth","destHeight","getRect","_frameNames","getFrameRange","AnimationParser","spriteSheet","frameMax","margin","spacing","row","column","JSONData","json","newFrame","filename","sourceSize","spriteSourceSize","JSONDataPyxel","signature","tileheight","tilewidth","JSONDataHash","XMLData","xml","getElementsByTagName","frameX","frameY","autoResolveURL","_cache","binary","bitmapFont","_urlMap","_urlResolver","_urlTemp","onSoundUnlock","_cacheMap","TEXTURE","SOUND","PHYSICS","BINARY","BITMAPFONT","JSON","XML","SHADER","RENDER_TEXTURE","addDefaultImage","addMissingImage","addCanvas","removeImage","_resolveURL","addSound","audioTag","decoded","isDecoding","touchLocked","addText","addPhysicsData","addTilemap","mapData","addBinary","binaryData","addBitmapFont","atlasData","atlasType","LoaderParser","jsonBitmapFont","xmlBitmapFont","addJSON","addXML","addVideo","isBlob","addShader","addSpriteSheet","addTextureAtlas","TEXTURE_ATLAS_XML_STARLING","TEXTURE_ATLAS_JSON_PYXEL","reloadSound","getSound","reloadSoundComplete","updateSound","decodedSound","isSoundDecoded","isSoundReady","checkKey","checkURL","checkCanvasKey","checkTextureKey","checkSoundKey","checkTextKey","checkPhysicsKey","checkTilemapKey","checkBinaryKey","checkBitmapDataKey","checkBitmapFontKey","checkJSONKey","checkXMLKey","checkVideoKey","checkShaderKey","checkRenderTextureKey","full","getTextureFrame","getSoundData","getText","getPhysicsData","fixtureKey","fixtures","fixture","getTilemapData","getBinary","getBitmapData","getJSON","getXML","getVideo","getShader","getRenderTexture","getBaseTexture","getFrameCount","getFrameByIndex","getPixiTexture","getPixiBaseTexture","getURL","getKeys","removeCanvas","removeFromPixi","removeSound","removeText","removePhysics","removeTilemap","removeBinary","removeBitmapData","removeBitmapFont","removeJSON","removeXML","removeVideo","removeShader","removeRenderTexture","removeSpriteSheet","removeTextureAtlas","atlas","baseURL","isLoading","preloadSprite","onLoadStart","onLoadComplete","onPackComplete","onFileStart","onFileComplete","onFileError","useXDomainRequest","_warnedAboutXDomainRequest","enableParallel","maxParallelDownloads","_withSyncPointDepth","_fileList","_flightQueue","_processingHead","_fileLoadStarted","_totalPackCount","_totalFileCount","_loadedPackCount","_loadedFileCount","TEXTURE_ATLAS_JSON_ARRAY","TEXTURE_ATLAS_JSON_HASH","PHYSICS_LIME_CORONA_JSON","PHYSICS_PHASER_JSON","setPreloadSprite","checkKeyExists","getAssetIndex","bestFound","loaded","loading","getAsset","fileIndex","addToFileList","overwrite","extension","syncPoint","currentFile","replaceInFileList","pack","images","urls","script","spritesheet","autoDecode","noAudio","jsonURL","jsonData","audiosprite","loadEvent","asBlob","CSV","TILED_JSON","LIME_CORONA_JSON","textureURL","atlasURL","parseXml","atlasJSONArray","atlasJSONHash","atlasXML","withSyncPoint","addSyncPoint","asset","removeFile","updateProgress","processLoadQueue","finishedLoading","requestUrl","requestObject","progress","syncblock","inflightLimit","processPack","loadFile","abnormal","asyncComplete","errorMessage","packData","transformUrl","xhrLoad","fileComplete","loadImageTag","getAudioURL","usingWebAudio","usingAudioTag","loadAudioTag","fileError","getVideoURL","loadVideoTag","jsonLoadComplete","xmlLoadComplete","csvLoadComplete","onload","onerror","controls","autoplay","videoLoadEvent","canplay","Audio","playThroughEvent","XDomainRequest","xhrLoadWithXDR","xhr","XMLHttpRequest","open","responseType","message","send","timeout","ontimeout","onprogress","videoType","uri","lastIndexOf","audioType","reason","loadNext","responseText","response","decode","language","defer","head","contentType","domparser","DOMParser","parseFromString","ActiveXObject","async","loadXML","totalLoadedFiles","totalLoadedPacks","progressFloat","info","common","getAttribute","letters","kernings","second","finalizeBitmapFont","_face","_lineHeight","_id","_xoffset","_yoffset","_xadvance","_second","_first","_amount","bitmapFontData","autoplayKey","sounds","spritemap","addMarker","connectToMaster","markers","totalDuration","currentTime","durationMS","stopTime","pausedPosition","pausedTime","currentMarker","fadeTween","pendingPlayback","override","allowMultiple","externalNode","masterGainNode","gainNode","_sound","masterGain","createGain","createGainNode","gain","soundHasUnlocked","onDecoded","onPlay","onStop","onMute","onMarkerComplete","_volume","_buffer","_muted","_tempMarker","_tempPosition","_tempVolume","_tempPause","_muteVolume","_tempLoop","_onDecodedEventDispatched","removeMarker","onEndedHandler","onended","isDecoded","loopFull","forceRestart","noteOff","createBufferSource","noteGrainOn","muted","mute","prevMarker","fadeIn","fadeTo","fadeOut","fadeComplete","updateGlobalVolume","globalVolume","onSoundDecode","onVolumeChange","onUnMute","channels","_codeMuted","_unlockSource","_sounds","_watchList","_watching","_watchCallback","_watchContext","disableAudio","disableWebAudio","audioContext","fakeiOSTouchLock","setTouchLock","unlock","noteOn","stopAll","soundData","decodeAudioData","setDecodedCallback","files","playbackState","PLAYING_STATE","FINISHED_STATE","removeByKey","close","dom","minWidth","minHeight","maxHeight","forceLandscape","forcePortrait","incorrectOrientation","_pageAlignHorizontally","_pageAlignVertically","onOrientationChange","enterIncorrectOrientation","leaveIncorrectOrientation","fullScreenTarget","_createdFullScreenTarget","onFullScreenInit","onFullScreenChange","onFullScreenError","screenOrientation","getScreenOrientation","scaleFactorInversed","aspectRatio","sourceAspectRatio","windowConstraints","compatibility","supportsFullScreen","orientationFallback","noMargins","scrollTo","forceMinimumDocumentHeight","canExpandParent","clickTrampoline","_scaleMode","NO_SCALE","_fullScreenScaleMode","parentIsWindow","parentScaleFactor","trackParentInterval","onSizeChange","onResize","onResizeContext","_pendingScaleMode","_fullScreenRestore","_gameSize","_userScaleFactor","_userScaleTrim","_lastUpdate","_updateThrottle","_updateThrottleReset","_parentBounds","_tempBounds","_lastReportedCanvasSize","_lastReportedGameSize","_booted","setupScale","EXACT_FIT","SHOW_ALL","RESIZE","USER_SCALE","compat","_orientationChange","orientationChange","_windowResize","windowResize","_fullScreenChange","fullScreenChange","_fullScreenError","fullScreenError","_gameResumed","setGameSize","FlexGrid","fullScreenScaleMode","getParentBounds","visualBounds","updateDimensions","queueUpdate","currentScaleMode","setUserScale","hScale","vScale","hTrim","vTrim","setResizeCallback","signalSizeChange","setMinMax","prevThrottle","prevWidth","prevHeight","boundsChanged","orientationChanged","updateOrientationState","updateLayout","throttle","updateScalingAndBounds","forceOrientation","classifyOrientation","orientation","previousOrientation","previouslyIncorrect","isLandscape","isPortrait","changed","correctnessChanged","scrollTop","reflowGame","setMaximum","setExactFit","isFullScreen","boundingParent","setShowAll","resetCanvas","reflowCanvas","layoutBounds","clientRect","getBoundingClientRect","parentRect","offsetParent","wc","windowBounds","alignCanvas","parentBounds","canvasBounds","currentEdge","targetEdge","marginLeft","marginRight","marginTop","marginBottom","pageAlignHorizontally","pageAlignVertically","cssWidth","cssHeight","expanding","createFullScreenTarget","fsTarget","background","startFullScreen","allowTrampoline","cleanupCreatedTarget","initData","targetElement","ALLOW_KEYBOARD_INPUT","stopFullScreen","prepScreenMode","enteringFullscreen","createdTarget","scaleSprite","letterBox","scaleX1","scaleY1","scaleX2","scaleY2","scaleOnWidth","bmd","columnWidth","renderShadow","currentAlpha","scaleManager","currentColor","soundInfo","cameraInfo","hideIfUp","downColor","upColor","worldX","worldY","spriteInputInfo","justDown","justUp","inputInfo","spriteBounds","filled","rectangle","ropeSegments","segment","spriteInfo","spriteCoords","lineInfo","geom","forceType","quadTree","quadtree","NINJA","Ninja","BOX2D","Box2D","renderBody","bodyInfo","renderBodyInfo","box2d","box2dWorld","renderDebugDraw","box2dBody","displayList","box","scrollY","scrollLeft","scrollX","clientTop","clientLeft","cushion","calibrate","coords","getAspectRatio","inLayoutViewport","primaryFallback","screen","mozOrientation","msOrientation","matchMedia","documentBounds","pageXOffset","pageYOffset","treatAsDesktop","clientWidth","clientHeight","offsetWidth","scrollWidth","offsetHeight","scrollHeight","randomIndex","removeRandomItem","shuffle","transposeMatrix","sourceRowCount","sourceColCount","rotateMatrix","findClosest","arr","NaN","low","high","numberArray","numberArrayStep","LinkedList","entity","palettes","PALETTE_ARNE","PALETTE_JMP","PALETTE_CGA","PALETTE_C64","PALETTE_JAPANESE_MACHINE","pixelWidth","pixelHeight","palette","boundsCustom","boundsFull","boundsNone","positionCustom","positionFluid","positionFull","positionNone","scaleCustom","scaleFluid","scaleFull","scaleNone","customWidth","customHeight","customOffsetX","customOffsetY","ratioH","ratioV","layers","createCustomLayer","layer","FlexLayer","createFluidLayer","createFullLayer","createFixedLayer","persist","fitSprite","topLeft","topMiddle","topRight","bottomLeft","bottomMiddle","bottomRight","RGBtoHSL","RGBtoHSV","fromRGBA","toRGBA","hueToColor","HSVtoRGB","color32","getColor","getColor32","RGBtoString","componentToHex","hexToRGB","hexToColor","webToColor","web","tempColor","getRGB","HSVColorWheel","HSLColorWheel","interpolateColor","color1","color2","steps","currentStep","src1","src2","interpolateColorWithRGB","or","og","ob","interpolateRGB","getRandomColor","getWebRGB","getAlpha","getAlphaFloat","getRed","getGreen","getBlue","blendNormal","blendAverage","blendSubtract","blendNegation","blendLinearDodge","blendLinearBurn","blendLinearLight","blendVividLight","blendPinLight","blendHardMix","blendReflect","blendGlow","blendPhoenix","arcade","ninja","chipmunk","matter","CHIPMUNK","MATTERJS","P2","Matter","startSystem","system","enableAABB","checkCollision","OVERLAP_BIAS","forceX","sortDirection","LEFT_RIGHT","skipQuadTree","_total","SORT_NONE","RIGHT_LEFT","TOP_BOTTOM","BOTTOM_TOP","updateMotion","velocityDelta","computeVelocity","angularAcceleration","angularDrag","maxAngular","acceleration","drag","maxVelocity","allowGravity","object1","object2","overlapCallback","processCallback","collideHandler","collide","collideCallback","sortLeftRight","sortRightLeft","sortTopBottom","sortBottomTop","overlapOnly","collideGroupVsSelf","collideSpriteVsSprite","collideSpriteVsGroup","collideSpriteVsTilemapLayer","collideGroupVsGroup","collideGroupVsTilemapLayer","sprite1","sprite2","separate","items","group1","group2","body1","body2","resultX","resultY","separateX","separateY","getOverlapX","maxOverlap","deltaAbsX","embedded","touching","none","overlapX","getOverlapY","deltaAbsY","overlapY","immovable","customSeparateX","bounce","moves","nv1","nv2","avg","customSeparateY","getObjectsUnderPointer","getObjectsAtLocation","callbackArg","moveToObject","maxTime","distanceBetween","moveToPointer","angleToPointer","distanceToPointer","moveToXY","distanceToXY","velocityFromAngle","velocityFromRotation","accelerationFromRotation","accelerateToObject","xSpeedMax","ySpeedMax","accelerateToPointer","accelerateToXY","angleToXY","worldAngleToPointer","allowRotation","preRotation","newVelocity","deltaMax","worldBounce","facing","collideWorldBounds","any","wasTouching","blocked","tilePadding","syncBounds","isMoving","stopVelocityOnCollide","moveTimer","moveDistance","moveDuration","moveTarget","moveEnd","onMoveComplete","movementCallback","movementCallbackContext","_sx","_sy","updateBounds","asx","asy","updateMovement","collided","stopMovement","stopVelocity","check","moveFrom","onFloor","onCeiling","onWall","TilemapCollision","TILE_BIAS","tilemapLayer","getTiles","separateTile","tile","tilemapLayerOffsetX","tilemapLayerOffsetY","collisionCallback","collisionCallbackContext","faceLeft","faceRight","faceTop","faceBottom","tileCheckX","tileCheckY","collideRight","collideLeft","processTileSeparationX","collideDown","collideUp","processTileSeparationY","useElapsedTime","materials","InversePointProxy","walls","onBodyAdded","onBodyRemoved","onSpringAdded","onSpringRemoved","onConstraintAdded","onConstraintRemoved","onContactMaterialAdded","onContactMaterialRemoved","postBroadphaseCallback","onBeginContact","onEndContact","mpx","mpxi","pxm","pxmi","beginContactHandler","endContactHandler","collisionGroups","nothingCollisionGroup","CollisionGroup","boundsCollisionGroup","everythingCollisionGroup","boundsCollidesWith","_toRemove","_collisionGroupID","_boundsLeft","_boundsRight","_boundsTop","_boundsBottom","_boundsOwnGroup","removeBodyNextStep","setImpactEvents","impactHandler","setPostBroadphaseCallback","postBroadphaseHandler","_bodyCallbacks","_bodyCallbackContext","_groupCallbacks","_groupCallbackContext","setCollisionGroup","setWorldMaterial","updateBoundsCollisionGroup","setupWall","wall","fixedStepTime","impactCallback","createDistanceConstraint","getBody","createGearConstraint","createRevoluteConstraint","createLockConstraint","createPrismaticConstraint","lockRotation","anchorA","anchorB","setMaterial","createMaterial","createContactMaterial","getSprings","getConstraints","filterStatic","physicsPosition","query","toJSON","createCollisionGroup","bitmask","createSpring","worldA","worldB","localA","localB","createRotationalSpring","createBody","addPolygon","createParticle","convertCollisionObjects","map","collision","polyline","clearTilemapLayerBodies","getLayer","convertTilemap","optimize","collides","getTileRight","addRectangle","FixtureList","rawList","namedFixtures","groupedFixtures","allFixtures","setCategory","bit","setter","getFixtures","setMask","setSensor","getFixtureByKey","getGroup","groupID","_ref","_results","callee","PointProxy","collidesWith","removeNextStep","debugBody","_collideWorldBounds","setRectangleFromSprite","createBodyCallback","createGroupCallback","getCollisionMask","updateCollisionMask","clearCollision","clearGroup","clearMask","removeCollisionGroup","clearCallback","shapeChanged","impulse","localX","localY","setZeroRotation","setZeroVelocity","setZeroDamping","rotateLeft","rotateRight","moveForward","moveBackward","thrust","thrustLeft","thrustRight","moveLeft","moveRight","updateSpriteTransform","resetDamping","resetMass","clearShapes","addCircle","addPlane","addParticle","addLine","addCapsule","setCircle","setRectangle","addPhaserPolygon","createdFixtures","fixtureData","shapesOfFixture","addFixture","generatedShapes","categoryBits","maskBits","isSensor","polygons","loadPolygon","BodyDebug","settings","defaultSettings","pixelsPerLengthUnit","debugPolygons","ppu","lw","vrot","_j","_ref1","randomPastelHex","drawCapsule","drawPlane","drawLine","drawRectangle","drawConvex","drawPath","lastx","lasty","diagMargin","diagSize","maxLength","xd","yd","mix","rgbToHex","ImageCollection","firstgid","imageWidth","imageHeight","imageMargin","imageSpacing","containsImageIndex","imageIndex","gid","Tile","flipped","scanned","setCollisionCallback","setCollision","resetCollision","isInteresting","faces","TilemapParser","widthInPixels","heightInPixels","tilesets","imagecollections","tiles","collideIndexes","currentLayer","debugMap","_tempA","NORTH","EAST","SOUTH","WEST","setTileSize","createBlankLayer","addTilesetImage","tileset","tileMargin","tileSpacing","getTilesetIndex","setImage","newSet","Tileset","countX","countY","createFromObjects","CustomClass","adjustY","createFromTiles","replacements","customClass","lh","createLayer","pixiTest","getLayerIndex","TilemapLayerGL","indexes","getImageIndex","setTileIndexCallback","setTileLocationCallback","recalculate","setCollisionByIndex","calculateFaces","setCollisionBetween","setCollisionByExclusion","setPreventRecalculate","preventingRecalculate","needToRecalculate","above","below","getTileAbove","getTileBelow","getTileLeft","setLayer","hasTile","removeTile","removeTileWorldXY","putTile","putTileWorldXY","searchTileIndex","getTile","nonNull","getTileWorldXY","paste","tileblock","tileA","tileB","swapHandler","removeAllLayers","dump","txt","renderSettings","enableScrollDelta","overdrawRatio","copyCanvas","debugSettings","missingImageFill","debuggedTileOverfill","forceFullRedraw","debugAlpha","facingEdgeStroke","collidingTileOverfill","scrollFactorX","scrollFactorY","rayStepRate","_wrap","_mc","renderWidth","renderHeight","_scrollX","_scrollY","ensureSharedCopyCanvas","sharedCopyCanvas","resizeWorld","_fixX","_unfixX","_fixY","_unfixY","getTileX","getTileY","getTileXY","getRayCastTiles","interestingFace","coord","fetchAll","wy","wx","resolveTileset","tileIndex","setIndex","containsTileIndex","resetTilesetCache","setScale","xScale","yScale","shiftCanvas","copyW","copyH","copyContext","renderRegion","lastAlpha","xmax","ymax","baseX","baseY","normStartX","normStartY","tileColor","renderDeltaScroll","shiftX","shiftY","renderW","renderH","trueTop","trueBottom","trueLeft","trueRight","renderFull","redrawAll","mc","renderDebug","INSERT_NULL","getEmptyData","parseCSV","parseTiledJSON","fields","sliced","curl","compression","encoding","binaryString","atob","bytes","opacity","flippedVal","curi","tileproperties","tileProperties","updateTileData","imagewidth","imageheight","newCollection","curo","polygon","ellipse","sid","drawCoords","coordIndex","setSpacing","rowCount","colCount","autoScale","scaleData","_s","autoAlpha","alphaData","_a","onEmit","setAlphaData","setScaleData","emitters","ID","minParticleSpeed","maxParticleSpeed","minParticleScale","maxParticleScale","minRotation","maxRotation","minParticleAlpha","maxParticleAlpha","particleClass","particleDrag","particleAnchor","emitX","emitY","particleBringToTop","particleSendToBack","_minParticleScale","_maxParticleScale","_quantity","_timer","_counter","_flowQuantity","_flowTotal","_explode","emitParticle","makeParticles","particle","rndKey","rndFrame","explode","flow","forceQuantity","setXSpeed","setYSpeed","setRotation","setAlpha","rate","tweenData","bullets","autoExpandBulletsGroup","autofire","shots","fireLimit","fireRate","fireRateVariance","fireFrom","fireAngle","bulletInheritSpriteSpeed","bulletAnimation","bulletFrameRandom","bulletFrameCycle","bulletWorldWrap","bulletWorldWrapPadding","bulletAngleOffset","bulletAngleVariance","bulletSpeed","bulletSpeedVariance","bulletLifespan","bulletKillDistance","bulletGravity","bulletRotateToVelocity","bulletKey","bulletFrame","_bulletClass","Bullet","_bulletCollideWorldBounds","_bulletKillType","KILL_WORLD_BOUNDS","customBody","bulletBounds","bulletFrames","bulletFrameIndex","anims","onFire","onKill","onFireLimit","trackedSprite","trackedPointer","trackRotation","trackOffset","_nextFire","KILL_NEVER","KILL_LIFESPAN","KILL_DISTANCE","KILL_WEAPON_BOUNDS","KILL_CAMERA_BOUNDS","KILL_STATIC_BOUNDS","killAll","resetShots","newLimit","fire","trackSprite","trackPointer","moveX","moveY","bullet","bulletManager","killType","bulletKillType","killDistance","rotateToVelocity","bodyDirty","bulletCollideWorldBounds","fireAtPointer","fireAtSprite","fireAtXY","setBulletBodyOffset","setBulletFrames","cycle","addBulletAnimation","debugBodies","onAccess","onError","onTimeout","videoStream","isStreaming","retryLimit","retry","retryInterval","_retryID","_pending","_autoplay","_endCallback","_playCallback","_video","createVideoFromBlob","videoWidth","videoHeight","createVideoFromURL","snapshot","connectToMediaStream","stream","startMediaStream","captureAudio","removeVideoElement","setAttribute","getUserMediaTimeout","getUserMediaSuccess","getUserMediaError","mozSrcObject","createObjectURL","onloadeddata","checkStream","checkVideoProgress","change","playbackRate","setPause","setResume","playHandler","getTracks","track","playing","ended","changeSource","grab","hasChildNodes","firstChild","removeAttribute"],"mappings":"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"} \ No newline at end of file +{"version":3,"sources":["phaser.js"],"names":["e","exports","module","define","f","window","global","self","p2","t","n","r","s","o","u","a","require","i","Error","call","length","1","_dereq_","Line","Scalar","lineInt","l1","l2","precision","a1","b1","c1","a2","b2","c2","det","eq","segmentsIntersect","p1","q1","q2","dx","dy","da","db","./Scalar","2","Point","area","b","c","left","leftOn","right","rightOn","tmpPoint1","tmpPoint2","collinear","thresholdAngle","ab","bc","dot","magA","Math","sqrt","magB","angle","acos","sqdist","3","Polygon","this","vertices","getIntersectionPoint","delta","prototype","at","v","first","last","clear","append","poly","from","to","push","makeCCW","br","reverse","tmp","N","pop","isReflex","tmpLine1","tmpLine2","canSee","p","dist","copy","j","targetPoly","k","getCutEdges","min","tmp1","tmp2","tmpPoly","nDiags","Number","MAX_VALUE","decomp","edges","slice","cutEdges","Array","polys","cutEdge","result","splice","indexOf","isSimple","path","quickDecomp","reflexVertices","steinerPoints","maxlevel","level","upperInt","lowerInt","upperDist","lowerDist","d","closestDist","upperIndex","lowerIndex","closestIndex","lowerPoly","upperPoly","console","warn","removeCollinearPoints","num","./Line","./Point","4","abs","5","./Polygon","6","name","version","description","author","keywords","main","engines","node","repository","type","url","bugs","licenses","devDependencies","grunt","grunt-contrib-jshint","grunt-contrib-nodeunit","grunt-contrib-uglify","grunt-contrib-watch","grunt-browserify","grunt-contrib-concat","dependencies","poly-decomp","7","AABB","options","lowerBound","vec2","create","upperBound","setFromPoints","points","position","skinSize","l","rotate","cosAngle","cos","sinAngle","sin","x","y","add","aabb","extend","overlaps","u1","u2","containsPoint","point","overlapsRay","ray","dirFracX","direction","dirFracY","t1","t2","t3","t4","tmin","max","tmax","../math/vec2","../utils/Utils","8","Broadphase","world","boundingVolumeType","Body","BOUNDING_CIRCLE","setWorld","getCollisionPairs","boundingRadiusCheck","bodyA","bodyB","sub","d2","squaredLength","boundingRadius","aabbCheck","getAABB","boundingVolumeCheck","canCollide","KINEMATIC","STATIC","sleepState","SLEEPING","NAIVE","SAP","../objects/Body","9","NaiveBroadphase","constructor","bodies","Ncolliding","bi","bj","aabbQuery","aabbNeedsUpdate","updateAABB","../collision/Broadphase","../shapes/Circle","../shapes/Particle","../shapes/Plane","../shapes/Shape","10","Narrowphase","contactEquations","frictionEquations","enableFriction","enabledEquations","slipForce","frictionCoefficient","surfaceVelocity","contactEquationPool","ContactEquationPool","size","frictionEquationPool","FrictionEquationPool","restitution","stiffness","Equation","DEFAULT_STIFFNESS","relaxation","DEFAULT_RELAXATION","frictionStiffness","frictionRelaxation","enableFrictionReduction","collidingBodiesLastStep","TupleDictionary","contactSkinSize","setConvexToCapsuleShapeMiddle","convexShape","capsuleShape","set","radius","pointInConvex","worldPoint","convexOffset","convexAngle","worldVertex0","pic_worldVertex0","worldVertex1","pic_worldVertex1","r0","pic_r0","r1","pic_r1","verts","lastCross","v0","v1","cross","crossLength","Circle","Convex","Shape","Box","yAxis","fromValues","tmp3","tmp4","tmp5","tmp6","tmp7","tmp8","tmp9","tmp10","tmp11","tmp12","tmp13","tmp14","tmp15","tmp16","tmp17","tmp18","tmpArray","bodiesOverlap_shapePositionA","bodiesOverlap_shapePositionB","bodiesOverlap","shapePositionA","shapePositionB","Nshapesi","shapes","shapeA","toWorldFrame","Nshapesj","shapeB","collidedLastStep","id1","id","id2","get","reset","eqs","ce","fe","release","createContactEquation","firstImpact","needsUpdate","enabled","offset","createFrictionEquation","setSlipForce","relativeVelocity","createFrictionFromContact","contactPointA","contactPointB","rotate90cw","normalA","createFrictionFromAverage","numContacts","invNumContacts","scale","normalize","LINE","CONVEX","convexLine","convexBody","lineBody","lineShape","lineOffset","lineAngle","justTest","BOX","lineBox","boxBody","boxShape","boxOffset","boxAngle","convexCapsule_tempRect","width","height","convexCapsule_tempVec","CAPSULE","convexCapsule","convexPosition","capsuleBody","capsulePosition","capsuleAngle","circlePos","result1","circleConvex","result2","convexConvex","lineCapsule","linePosition","capsuleCapsule_tempVec1","capsuleCapsule_tempVec2","capsuleCapsule_tempRect1","capsuleCapsule","si","xi","ai","sj","xj","aj","enableFrictionBefore","circlePosi","circlePosj","circleCircle","rect","lineLine","positionA","angleA","positionB","angleB","PLANE","planeLine","planeBody","planeShape","planeOffset","planeAngle","worldVertex01","worldVertex11","worldEdge","worldEdgeUnit","worldNormal","worldTangent","PARTICLE","particleCapsule","particleBody","particleShape","particlePosition","particleAngle","circleLine","CIRCLE","circleBody","circleShape","circleOffset","circleAngle","lineRadius","circleRadius","orthoDist","lineToCircleOrthoUnit","projectedPoint","centerDist","lineToCircle","lineEndToLineRadius","radiusSum","pos","pos0","pos1","pow","circleCapsule","worldVertex","closestEdgeProjectedPoint","candidate","candidateDist","minCandidate","found","minCandidateDistance","candidateDistance","localVertex","particleConvex","particleOffset","convexToparticle","minEdgeNormal","offsetA","offsetB","radiusA","radiusB","planeConvex","numReported","particlePlane","circleParticle","planeCapsule_tmpCircle","planeCapsule_tmp1","planeCapsule_tmp2","planeCapsule","capsuleOffset","end1","end2","circle","numContacts1","circlePlane","numContacts2","numTotal","planeToCircle","temp","contact","sepAxis","worldPoint0","worldPoint1","penetrationVec","findSeparatingAxis","closestEdge1","getClosestEdge","closestEdge2","closestEdgeA","closestEdgeB","insideNumEdges","pcoa_tmp1","projectConvexOntoAxis","worldAxis","value","localAxis","fsa_tmp1","fsa_tmp2","fsa_tmp3","fsa_tmp4","fsa_tmp5","fsa_tmp6","offset1","angle1","offset2","angle2","maxDist","overlap","edge","normal","span1","span2","swapped","gce_tmp1","gce_tmp2","gce_tmp3","axis","flip","closestEdge","maxDot","circleHeightfield_candidate","circleHeightfield_dist","circleHeightfield_v0","circleHeightfield_v1","circleHeightfield_minCandidate","circleHeightfield_worldNormal","circleHeightfield_minCandidateNormal","HEIGHTFIELD","circleHeightfield","hfBody","hfShape","hfPos","hfAngle","data","heights","w","elementWidth","minCandidateNormal","idxA","floor","idxB","ceil","PI","convexHeightfield_v0","convexHeightfield_v1","convexHeightfield_tilePos","convexHeightfield_tempConvexShape","convexHeightfield","convexPos","tilePos","tileConvex","tileHeight","../equations/ContactEquation","../equations/Equation","../equations/FrictionEquation","../shapes/Box","../shapes/Convex","../utils/ContactEquationPool","../utils/FrictionEquationPool","../utils/TupleDictionary","11","Ray","checkCollisionResponse","undefined","skipBackfaces","collisionMask","collisionGroup","mode","ANY","callback","update","distanceFromIntersectionSquared","intersect","squaredDistance","CLOSEST","ALL","intersectBodies","shouldStop","body","intersectBody","intersectBody_worldPosition","collisionResponse","worldPosition","shape","worldAngle","intersectShape","distance","_currentBody","_currentShape","raycast","reportIntersection","fraction","faceIndex","hasHit","../collision/AABB","../collision/RaycastResult","12","RaycastResult","isStopped","getHitDistance","getHitPoint","out","lerp","stop","../collision/Ray","13","SAPBroadphase","axisList","axisIndex","that","_addBodyHandler","_removeBodyHandler","idx","Utils","appendArray","off","on","sortAxisList","sortList","14","Constraint","defaults","collideConnected","wakeUpBodies","equations","wakeUp","DISTANCE","GEAR","LOCK","PRISMATIC","REVOLUTE","setStiffness","setRelaxation","15","DistanceConstraint","localAnchorA","localAnchorB","worldAnchorA","worldAnchorB","maxForce","ri","rj","computeGq","setMaxForce","upperLimitEnabled","upperLimit","lowerLimitEnabled","lowerLimit","normalEquation","G","violating","minForce","rixn","rjxn","getMaxForce","./Constraint","16","GearConstraint","ratio","AngleLockEquation","maxTorque","setMaxTorque","setRatio","torque","getMaxTorque","../equations/AngleLockEquation","17","LockConstraint","localAngleB","rot","g","localOffsetB","force","xAxis","18","PrismaticConstraint","localAxisA","trans","gg","updateJacobian","disableRotationalLock","RotationalLockEquation","velocity","upperLimitEquation","ContactEquation","lowerLimitEquation","motorEquation","motorEnabled","motorSpeed","computeGW","vi","vj","wi","angularVelocity","wj","gmult","worldAxisA","orientedAnchorA","orientedAnchorB","relPosition","enableMotor","disableMotor","setLimits","lower","upper","../equations/RotationalLockEquation","19","RevoluteConstraint","pivotA","pivotB","worldPivot","localPivotA","localPivotB","worldPivotA","worldPivotB","RotationalVelocityEquation","relAngle","motorIsEnabled","setMotorSpeed","speed","getMotorSpeed","../equations/RotationalVelocityEquation","20","./Equation","21","computeB","h","GW","Gq","GiMf","computeGiMf","B","22","ARRAY_TYPE","epsilon","timeStep","multiplier","qi","qj","computeGWlambda","vlambda","wlambda","iMfi","iMfj","fi","ti","angularForce","fj","tj","invMassi","invMassSolve","invMassj","invIi","invInertiaSolve","invIj","multiply","massMultiplier","computeGiMGt","addToWlambda_temp","addToWlambda_Gi","addToWlambda_Gj","addToWlambda","deltalambda","Gi","Gj","computeInvC","eps","23","FrictionEquation","getSlipForce","24","worldVectorA","worldVectorB","25","26","EventEmitter","listener","context","_listeners","listeners","has","index","emit","event","listenerArray","target","27","ContactMaterial","materialA","materialB","Material","idCounter","friction","./Material","28","29","PolyK","GetArea","sum","Triangulate","tgs","avl","al","i0","i1","i2","ax","ay","bx","by","cx","cy","earFound","_convex","_PointInTriangle","px","py","v0x","v0y","v1x","v1y","v2x","v2y","dot00","dot01","dot02","dot11","dot12","invDenom","30","crossVZ","vec","zcomp","crossZV","toLocalFrame","framePosition","frameAngle","toGlobalFrame","localPoint","vectorToLocalFrame","worldVector","vectorToGlobalFrame","localVector","centroid","clone","subtract","mul","divide","div","sqrDist","len","sqrLen","negate","str","reflect","vector","getLineSegmentsIntersection","p0","p3","getLineSegmentsIntersectionFraction","s1_x","s1_y","s2_x","s2_y","31","_idCounter","mass","invMass","inertia","invInertia","fixedRotation","fixedX","fixedY","interpolatedPosition","interpolatedAngle","previousPosition","previousAngle","damping","angularDamping","DYNAMIC","allowSleep","wantsToSleep","AWAKE","sleepSpeedLimit","sleepTimeLimit","gravityScale","idleTime","timeLastSleepy","ccdSpeedThreshold","ccdIterations","concavePath","_wakeUpAfterNarrowphase","updateMassProperties","updateSolveMassProperties","setDensity","density","totalArea","getArea","shapeAABB","bodyAngle","computeAABB","updateBoundingRadius","addShape","removeShape","m","I","r2","Icm","computeMomentOfInertia","applyForce","relativePoint","rotForce","Body_applyForce_forceWorld","Body_applyForce_pointWorld","Body_applyForce_pointLocal","applyForceLocal","localForce","worldForce","vectorToWorldFrame","Body_applyImpulse_velo","applyImpulse","impulseVector","velo","rotVelo","Body_applyImpulse_impulseWorld","Body_applyImpulse_pointWorld","Body_applyImpulse_pointLocal","applyImpulseLocal","localImpulse","worldImpulse","fromPolygon","convexes","optimalDecomp","cm","centerOfMass","updateTriangles","updateCenterOfMass","adjustCenterOfMass","adjustCenterOfMass_tmp2","adjustCenterOfMass_tmp3","adjustCenterOfMass_tmp4","offset_times_area","setZeroForce","resetConstraintVelocity","addConstraintVelocity","applyDamping","dt","wakeUpEvent","sleep","sleepEvent","sleepTick","time","dontSleep","speedSquared","speedLimitSquared","SLEEPY","overlapKeeper","bodiesAreOverlapping","integrate_fhMinv","integrate_velodt","integrate","minv","integrateToTimeOfImpact","end","startToEnd","rememberPosition","hit","startToEndAngle","timeOfImpact","rememberAngle","iter","tmid","narrowphase","getVelocityAtPoint","sleepyEvent","../events/EventEmitter","32","LinearSpring","Spring","setWorldAnchorA","setWorldAnchorB","getWorldAnchorA","getWorldAnchorB","worldDistance","restLength","applyForce_r","applyForce_r_unit","applyForce_u","applyForce_f","applyForce_worldAnchorA","applyForce_worldAnchorB","applyForce_ri","applyForce_rj","applyForce_tmp","r_unit","rlen","ri_x_f","rj_x_f","./Spring","33","RotationalSpring","restAngle","34","35","TopDownVehicle","chassisBody","wheels","groundBody","preStepCallback","WheelConstraint","vehicle","forwardEquation","sideEquation","steerValue","engineForce","setSideFriction","sideFriction","localForwardVector","localPosition","apply","setBrakeForce","addToWorld","addBody","wheel","addConstraint","removeFromWorld","removeBody","removeConstraint","addWheel","wheelOptions","worldVelocity","getSpeed","tmpVec","../constraints/Constraint","36","Capsule","GSSolver","Heightfield","Particle","Plane","Pool","Solver","World","Object","defineProperty","../package.json","./collision/AABB","./collision/Broadphase","./collision/NaiveBroadphase","./collision/Narrowphase","./collision/Ray","./collision/RaycastResult","./collision/SAPBroadphase","./constraints/Constraint","./constraints/DistanceConstraint","./constraints/GearConstraint","./constraints/LockConstraint","./constraints/PrismaticConstraint","./constraints/RevoluteConstraint","./equations/AngleLockEquation","./equations/ContactEquation","./equations/Equation","./equations/FrictionEquation","./equations/RotationalVelocityEquation","./events/EventEmitter","./material/ContactMaterial","./material/Material","./math/vec2","./objects/Body","./objects/LinearSpring","./objects/RotationalSpring","./objects/Spring","./objects/TopDownVehicle","./shapes/Box","./shapes/Capsule","./shapes/Circle","./shapes/Convex","./shapes/Heightfield","./shapes/Line","./shapes/Particle","./shapes/Plane","./shapes/Shape","./solver/GSSolver","./solver/Solver","./utils/ContactEquationPool","./utils/FrictionEquationPool","./utils/Pool","./utils/Utils","./world/World","37","arguments","axes","updateArea","./Convex","./Shape","38","intersectCapsule_hitPointWorld","intersectCapsule_normal","intersectCapsule_l0","intersectCapsule_l1","intersectCapsule_unit_y","hitPointWorld","l0","halfLen","diagonalLengthSquared","sqrtDelta","inv2a","d1","39","Ray_intersectSphere_intersectionPoint","Ray_intersectSphere_normal","intersectionPoint","40","isArray","triangles","polyk","tmpVec1","tmpVec2","projectOntoLocalAxis","projectOntoWorldAxis","shapeOffset","shapeAngle","polykVerts","id3","updateCenterOfMass_centroid","updateCenterOfMass_centroid_times_mass","updateCenterOfMass_a","updateCenterOfMass_b","updateCenterOfMass_c","centroid_times_mass","triangleArea","denom","numer","intersectConvex_rayStart","intersectConvex_rayEnd","intersectConvex_normal","rayStart","rayEnd","../math/polyk","41","key","maxValue","minValue","updateMaxMinValues","getLineSegment","start","getSegmentIndex","getClampedSegmentIndex","intersectHeightfield_worldNormal","intersectHeightfield_l0","intersectHeightfield_l1","intersectHeightfield_localFrom","intersectHeightfield_localTo","localFrom","localTo","42","raycast_normal","raycast_l0","raycast_l1","raycast_unit_y","43","44","intersectPlane_planePointToFrom","intersectPlane_normal","intersectPlane_len","planePointToFrom","planeToFrom","planeToTo","n_dot_dir","45","material","sensor","46","GS","iterations","tolerance","arrayStep","lambda","Bs","invCs","useZeroRHS","frictionIterations","usedIterations","setArrayZero","array","solve","sortEquations","maxIter","maxFrictionIter","Neq","tolSquared","Nbodies","deltalambdaTot","iterateEquation","updateMultipliers","invDt","invC","lambdaj","GWlambda","lambdaj_plus_deltalambda","./Solver","47","equationSortFunction","mockWorld","solveIsland","island","removeAllEquations","addEquations","getBodies","sort","addEquation","removeEquation","ISLAND","48","destroy","equation","./Pool","49","50","IslandNodePool","IslandNode","../world/IslandNode","51","IslandPool","Island","../world/Island","52","OverlapKeeper","overlappingShapesLastState","overlappingShapesCurrentState","recordPool","OverlapKeeperRecordPool","tmpDict","tmpArray1","tick","current","keys","lastObject","getByKey","setOverlapping","getNewOverlaps","getDiff","getEndOverlaps","dictA","dictB","lastData","isNewOverlap","idA","idB","getNewBodyOverlaps","getBodyDiff","getEndBodyOverlaps","accumulator","./OverlapKeeperRecord","./OverlapKeeperRecordPool","./TupleDictionary","./Utils","53","OverlapKeeperRecord","54","record","55","objects","resize","object","56","getKey","dict","57","howmany","P2_ARRAY_TYPE","Float32Array","58","bodyIds","59","IslandManager","nodePool","islandPool","islands","nodes","queue","getUnvisitedNode","Nnodes","visited","visit","bds","Neqs","bfs","root","child","neighbors","split","ni","nj","./../utils/IslandNodePool","./../utils/IslandPool","./Island","./IslandNode","60","61","springs","disabledBodyCollisionPairs","solver","islandManager","gravity","frictionGravity","useWorldGravityAsFrictionGravity","useFrictionGravityOnZeroGravity","broadphase","constraints","defaultMaterial","defaultContactMaterial","lastTimeStep","applySpringForces","applyGravity","solveConstraints","contactMaterials","stepping","bodiesToBeRemoved","islandSplit","emitImpactEvent","_constraintIdCounter","_bodyIdCounter","postStepEvent","addBodyEvent","removeBodyEvent","addSpringEvent","spring","impactEvent","contactEquation","postBroadphaseEvent","pairs","sleepMode","NO_SLEEPING","beginContactEvent","endContactEvent","preSolveEvent","BODY_SLEEPING","ISLAND_SLEEPING","constraint","addContactMaterial","contactMaterial","removeContactMaterial","getContactMaterial","cmats","step_mg","xiw","xjw","step","timeSinceLastCalled","maxSubSteps","internalStep","substeps","endOverlaps","Nsprings","np","mg","gravityLen","ignoredPairs","Nconstraints","Nresults","runNarrowphase","ev","glen","aiw","ajw","reducedMass","resolver","numFrictionBefore","numFrictionEquations","speedSquaredB","speedLimitSquaredB","speedSquaredA","speedLimitSquaredA","addSpring","evt","removeSpring","getBodyById","disableBodyCollision","enableBodyCollision","cs","cms","hitTest_tmp1","hitTest_tmp2","hitTest","pb","ps","pa","NS","setGlobalStiffness","setGlobalRelaxation","tmpAABB","../../package.json","../collision/Narrowphase","../collision/SAPBroadphase","../constraints/DistanceConstraint","../constraints/GearConstraint","../constraints/LockConstraint","../constraints/PrismaticConstraint","../constraints/RevoluteConstraint","../material/ContactMaterial","../material/Material","../objects/LinearSpring","../objects/RotationalSpring","../shapes/Capsule","../shapes/Line","../solver/GSSolver","../solver/Solver","../utils/OverlapKeeper","./IslandManager","PIXI","game","WEBGL_RENDERER","CANVAS_RENDERER","VERSION","_UID","Uint16Array","Uint32Array","ArrayBuffer","PI_2","RAD_TO_DEG","DEG_TO_RAD","RETINA_PREFIX","DisplayObject","pivot","rotation","alpha","visible","hitArea","renderable","parent","stage","worldAlpha","worldTransform","Matrix","worldScale","worldRotation","filterArea","_sr","_cr","_bounds","Rectangle","_currentBounds","_mask","_cacheAsBitmap","_cacheIsDirty","children","_destroyCachedSprite","updateTransform","tx","ty","pt","wt","rotationCache","atan2","transformCallback","transformCallbackContext","setStageReference","preUpdate","generateTexture","resolution","scaleMode","renderer","bounds","getLocalBounds","renderTexture","RenderTexture","_tempMatrix","render","updateCache","_generateCachedSprite","toGlobal","toLocal","applyInverse","_renderCachedSprite","renderSession","_cachedSprite","gl","Sprite","_renderWebGL","_renderCanvas","texture","tempFilters","_filters","filters","anchor","displayObjectUpdateTransform","defineProperties","worldVisible","item","mask","isMask","passes","filterPasses","_filterBlock","blendMode","blendModes","MULTIPLY","NORMAL","cacheAsBitmap","DisplayObjectContainer","ignoreChildInput","_width","_height","addChild","addChildAt","removeChild","swapChildren","child2","index1","getChildIndex","index2","setChildIndex","currentIndex","getChildAt","removeChildAt","removeStageReference","removeChildren","beginIndex","endIndex","begin","range","removed","displayObjectContainerUpdateTransform","getBounds","EmptyRectangle","childBounds","childMaxX","childMaxY","minX","Infinity","minY","maxX","maxY","childVisible","matrixCache","identityMatrix","spriteBatch","flush","filterManager","pushFilter","maskManager","pushMask","popMask","popFilter","Texture","emptyTexture","tint","cachedTint","tintedTexture","shader","exists","baseTexture","hasLoaded","onTextureUpdate","frame","setTexture","destroyBase","skipRender","valid","matrix","w0","w1","h0","h1","x1","y1","x2","y2","x3","y3","x4","y4","crop","currentBlendMode","globalCompositeOperation","blendModesCanvas","globalAlpha","smoothProperty","scaleModes","LINEAR","trim","shakeX","shakeY","roundPixels","setTransform","cw","ch","requiresReTint","CanvasTinter","getTintedTexture","drawImage","source","SpriteBatch","textureThing","ready","initWebGL","fastSpriteBatch","WebGLFastSpriteBatch","setContext","shaderManager","setShader","fastShader","transform","isRotated","childTransform","hex2rgb","hex","rgb2hex","rgb","canUseNewCanvasBlendModes","document","pngHead","pngEnd","magenta","Image","src","yellow","canvas","CanvasPool","getContext","getImageData","remove","getNextPowerOfTwo","number","isPowerOfTwo","getFirst","container","createElement","pool","removeByCanvas","getTotal","getFree","initDefaultShaders","CompileVertexShader","shaderSrc","_CompileShader","VERTEX_SHADER","CompileFragmentShader","FRAGMENT_SHADER","shaderType","join","createShader","shaderSource","compileShader","getShaderParameter","COMPILE_STATUS","log","getShaderInfoLog","compileProgram","vertexSrc","fragmentSrc","fragmentShader","vertexShader","shaderProgram","createProgram","attachShader","linkProgram","getProgramParameter","LINK_STATUS","getProgramInfoLog","PixiShader","program","textureCount","firstRun","dirty","attributes","init","defaultVertexSrc","useProgram","uSampler","getUniformLocation","projectionVector","offsetVector","dimensions","aVertexPosition","getAttribLocation","aTextureCoord","colorAttribute","uniforms","uniformLocation","initUniforms","uniform","_init","initSampler2D","glMatrix","glValueLength","glFunc","uniformMatrix2fv","uniformMatrix3fv","uniformMatrix4fv","activeTexture","bindTexture","TEXTURE_2D","_glTextures","textureData","magFilter","minFilter","wrapS","CLAMP_TO_EDGE","wrapT","format","LUMINANCE","RGBA","repeat","REPEAT","pixelStorei","UNPACK_FLIP_Y_WEBGL","flipY","border","texImage2D","UNSIGNED_BYTE","texParameteri","TEXTURE_MAG_FILTER","TEXTURE_MIN_FILTER","TEXTURE_WRAP_S","TEXTURE_WRAP_T","uniform1i","syncUniforms","transpose","z","_dirty","instances","updateTexture","deleteProgram","PixiFastShader","uMatrix","aPositionCoord","aScale","aRotation","StripShader","translationMatrix","attribute","PrimitiveShader","tintColor","ComplexPrimitiveShader","color","glContexts","WebGLRenderer","defaultRenderer","transparent","autoResize","preserveDrawingBuffer","clearBeforeRender","view","_contextOptions","antialias","premultipliedAlpha","stencil","projection","WebGLShaderManager","WebGLSpriteBatch","WebGLMaskManager","WebGLFilterManager","stencilManager","WebGLStencilManager","blendModeManager","WebGLBlendModeManager","drawCount","initContext","mapBlendModes","glContextId","disable","DEPTH_TEST","CULL_FACE","enable","BLEND","contextLost","viewport","bindFramebuffer","FRAMEBUFFER","clearColor","_bgColor","COLOR_BUFFER_BIT","camera","_shake","renderDisplayObject","displayObject","buffer","setBlendMode","style","createTexture","UNPACK_PREMULTIPLY_ALPHA_WEBGL","NEAREST","mipmap","LINEAR_MIPMAP_LINEAR","NEAREST_MIPMAP_NEAREST","generateMipmap","_powerOf2","blendModesWebGL","modes","ONE","ONE_MINUS_SRC_ALPHA","ADD","SRC_ALPHA","DST_ALPHA","DST_COLOR","SCREEN","OVERLAY","DARKEN","LIGHTEN","COLOR_DODGE","COLOR_BURN","HARD_LIGHT","SOFT_LIGHT","DIFFERENCE","EXCLUSION","HUE","SATURATION","COLOR","LUMINOSITY","blendModeWebGL","blendFunc","maskData","WebGLGraphics","updateGraphics","_webGL","pushStencil","popStencil","stencilStack","count","graphics","webGLData","bindGraphics","STENCIL_TEST","STENCIL_BUFFER_BIT","colorMask","stencilFunc","ALWAYS","stencilOp","KEEP","INVERT","drawElements","TRIANGLE_FAN","indices","UNSIGNED_SHORT","EQUAL","DECR","INCR","TRIANGLE_STRIP","_currentGraphics","complexPrimitiveShader","uniform1f","toArray","uniform2f","uniform3fv","bindBuffer","ARRAY_BUFFER","vertexAttribPointer","FLOAT","ELEMENT_ARRAY_BUFFER","indexBuffer","primitiveShader","maxAttibs","attribState","tempAttribState","stack","defaultShader","stripShader","setAttribs","attribs","attribId","enableVertexAttribArray","disableVertexAttribArray","_currentId","currentShader","vertSize","numVerts","numIndices","positions","colors","lastIndexCount","drawing","currentBatchSize","currentBaseTexture","textures","shaders","sprites","AbstractFilter","vertexBuffer","createBuffer","bufferData","STATIC_DRAW","DYNAMIC_DRAW","sprite","uvs","_uvs","aX","aY","x0","y0","renderTilingSprite","tilingTexture","TextureUvs","tilePosition","tileScaleOffset","offsetX","offsetY","scaleX","tileScale","scaleY","TEXTURE0","stride","bufferSubData","subarray","nextTexture","nextBlendMode","nextShader","batchSize","blendSwap","shaderSwap","skip","renderBatch","startIndex","TRIANGLES","deleteBuffer","maxSize","renderSprite","filterStack","texturePool","initShaderBuffers","filterBlock","_filterArea","_previous_stencil_mgr","filter","FilterTexture","padding","frameBuffer","_glFilterTexture","vertexArray","uvBuffer","uvArray","inputTexture","outputTexture","filterPass","applyFilterPass","sizeX","sizeY","currentFilter","colorBuffer","colorArray","createFramebuffer","DEFAULT","framebufferTexture2D","COLOR_ATTACHMENT0","renderBuffer","createRenderbuffer","bindRenderbuffer","RENDERBUFFER","framebufferRenderbuffer","DEPTH_STENCIL_ATTACHMENT","renderbufferStorage","DEPTH_STENCIL","deleteFramebuffer","deleteTexture","CanvasBuffer","clearRect","CanvasMaskManager","save","cacheAlpha","CanvasGraphics","renderGraphicsMask","clip","restore","tintMethod","tintWithMultiply","fillStyle","toString","substr","fillRect","tintWithPerPixel","rgbValues","pixelData","pixels","canHandleAlpha","putImageData","checkInverseAlpha","s1","s2","canUseMultiply","CanvasRenderer","refresh","Phaser","Canvas","getSmoothingPrefix","navigator","isCocoonJS","screencanvas","rgba","removeView","useNew","BaseTexture","complete","naturalWidth","naturalHeight","forceLoaded","unloadFromGPU","updateSourceImage","newSrc","glTexture","fromCanvas","TextureSilentFail","noFrame","isTiling","requiresUpdate","setFrame","onBaseTextureLoaded","_updateUvs","tw","th","textureBuffer","renderWebGL","renderCanvas","tempMatrix","updateBase","identity","translate","realResolution","getImage","image","getBase64","getCanvas","toDataURL","webGLPixels","Uint8Array","readPixels","tempCanvas","canvasData","Strip","canvasPadding","drawMode","DrawModes","_vertexBuffer","_initWebGL","_renderStrip","_indexBuffer","_uvBuffer","_colorBuffer","_renderCanvasTriangleStrip","_renderCanvasTriangles","_renderCanvasDrawTriangle","index0","textureSource","textureWidth","textureHeight","u0","v2","paddingX","paddingY","centerX","centerY","normX","normY","beginPath","moveTo","lineTo","closePath","deltaA","deltaB","deltaC","deltaD","deltaE","deltaF","renderStripFlat","strip","fill","updateFrame","rawX","rawY","Rope","lastPoint","amount","total","nextPoint","perp","perpLength","TilingSprite","textureDebug","canvasBuffer","tilePattern","refreshTexture","frameWidth","frameHeight","generateTilingTexture","createPattern","sessionBlendMode","forcePowerOfTwo","targetWidth","_frame","sourceSizeW","targetHeight","sourceSizeH","trimmed","spriteSourceSizeX","spriteSourceSizeY","strokeStyle","strokeRect","amd","WheelEventProxy","scaleFactor","deltaMode","_scaleFactor","_deltaMode","originalEvent","GAMES","AUTO","CANVAS","WEBGL","HEADLESS","NONE","LEFT","RIGHT","UP","DOWN","SPRITE","BUTTON","IMAGE","GRAPHICS","TEXT","TILESPRITE","BITMAPTEXT","GROUP","RENDERTEXTURE","TILEMAP","TILEMAPLAYER","EMITTER","POLYGON","BITMAPDATA","CANVAS_FILTER","WEBGL_FILTER","ELLIPSE","SPRITEBATCH","RETROFONT","POINTER","ROPE","RECTANGLE","MATRIX","POINT","ROUNDEDRECTANGLE","CREATURE","VIDEO","PENDING_ATLAS","HORIZONTAL","VERTICAL","LANDSCAPE","PORTRAIT","ANGLE_UP","ANGLE_DOWN","ANGLE_LEFT","ANGLE_RIGHT","ANGLE_NORTH_EAST","ANGLE_NORTH_WEST","ANGLE_SOUTH_EAST","ANGLE_SOUTH_WEST","TOP_LEFT","TOP_CENTER","TOP_RIGHT","LEFT_TOP","LEFT_CENTER","LEFT_BOTTOM","CENTER","RIGHT_TOP","RIGHT_CENTER","RIGHT_BOTTOM","BOTTOM_LEFT","BOTTOM_CENTER","BOTTOM_RIGHT","trunc","Function","bind","thisArg","bound","args","boundArgs","concat","TypeError","F","proto","arg","forEach","fun","CheapArray","assert","reverseString","string","getProperty","obj","prop","parts","setProperty","chanceRoll","chance","random","randomChoice","choice1","choice2","parseDimension","dimension","parseInt","innerWidth","innerHeight","pad","dir","padlen","isPlainObject","nodeType","hasOwnProperty","copyIsArray","deep","mixinPrototype","mixin","replace","mixinKeys","childNodes","cloneNode","diameter","_diameter","_radius","circumference","setTo","copyFrom","copyTo","dest","round","output","contains","circumferencePoint","asDegrees","offsetPoint","top","bottom","equals","intersects","degToRad","intersectsRectangle","halfWidth","xDist","halfHeight","yDist","xCornerDist","yCornerDist","xCornerDistSq","yCornerDistSq","maxCornerDistSq","Ellipse","normx","normy","fromSprite","startSprite","endSprite","useCenter","center","fromAngle","rotateAround","line","asSegment","intersectsPoints","midPoint","centerOn","pointOnLine","pointOnSegment","xMin","xMax","yMin","yMax","coordinatesOnLine","stepRate","results","sx","sy","err","e2","wrap","uc","ua","ub","bx1","by1","bx2","by2","normalAngle","fromArray","newPos","tx1","invert","clampX","clamp","clampY","radToDeg","getMagnitude","getMagnitudeSq","setMagnitude","magnitude","isZero","rperp","normalRightHand","negative","multiplyAdd","interpolate","project","amt","projectUnit","pointslength","parse","xProp","yProp","_points","closed","flattened","toNumberArray","flatten","inside","ix","iy","jx","jy","calculateArea","avgHeight","floorAll","ceilAll","inflate","containsRect","intersection","intersectsRaw","union","randomX","randomY","getPoint","empty","inflatePoint","containsRaw","rx","ry","rw","rh","volume","sameDimensions","NEGATIVE_INFINITY","POSITIVE_INFINITY","RoundedRectangle","Camera","deadzone","roundPx","atLimit","totalInView","onShakeComplete","Signal","onFlashComplete","onFadeComplete","fx","_targetPosition","_edge","_position","intensity","duration","horizontal","vertical","shakeBounds","_fxDuration","_fxType","FOLLOW_LOCKON","FOLLOW_PLATFORMER","FOLLOW_TOPDOWN","FOLLOW_TOPDOWN_TIGHT","SHAKE_BOTH","SHAKE_HORIZONTAL","SHAKE_VERTICAL","ENABLE_FX","boot","Graphics","follow","lerpX","lerpY","helper","unfollow","focusOn","setPosition","focusOnXY","shake","flash","beginFill","drawRect","endFill","fade","updateFX","updateShake","checkBounds","elapsedMS","dispatch","rnd","frac","updateTarget","math","linear","setBoundsToWorld","vx","vw","vy","vh","setSize","resetFX","State","make","cache","input","load","sound","state","tweens","particles","physics","preload","loadUpdate","loadRender","preRender","paused","resumed","pauseUpdate","shutdown","StateManager","pendingState","states","_pendingState","_clearWorld","_clearCache","_created","_args","onStateChange","onInitCallback","onPreloadCallback","onCreateCallback","onUpdateCallback","onRenderCallback","onResizeCallback","onPreRenderCallback","onLoadUpdateCallback","onLoadRenderCallback","onPausedCallback","onResumedCallback","onPauseUpdateCallback","onShutDownCallback","onPause","pause","onResume","resume","autoStart","newState","isBooted","callbackContext","clearWorld","clearCache","checkState","restart","dummy","previousStateKey","clearCurrentState","setCurrentState","totalQueuedFiles","totalQueuedPacks","loadComplete","removeAll","debug","link","unlink","_kickstart","getCurrentState","elapsedTime","renderType","_bindings","_prevParams","memorize","_shouldPropagate","active","_boundDispatch","validateListener","fnName","_registerListener","isOnce","listenerContext","priority","binding","prevIndex","_indexOfListener","SignalBinding","_addBinding","execute","_priority","cur","_listener","addOnce","_destroy","getNumListeners","halt","bindings","paramsArr","forget","dispose","_this","signal","_isOnce","_signal","callCount","params","handlerReturn","detach","isBound","getListener","getSignal","Filter","prevPoint","Date","mouse","date","getFullYear","getMonth","getDate","getHours","getMinutes","getSeconds","sampleRate","iChannel0","iChannel1","iChannel2","iChannel3","setResolution","pointer","toFixed","totalElapsedSeconds","anchorX","anchorY","Plugin","hasPreUpdate","hasUpdate","hasPostUpdate","hasRender","hasPostRender","postRender","PluginManager","plugins","_len","_i","plugin","postUpdate","Stage","disableVisibilityChange","currentRenderOrderID","_hiddenVar","_onChange","config","parseConfig","setBackgroundColor","DOM","getOffset","setUserSelect","setTouchAction","checkVisibility","webkitHidden","mozHidden","msHidden","hidden","visibilityChange","addEventListener","onblur","onfocus","onpagehide","onpageshow","device","cocoonJSApp","CocoonJS","App","onSuspended","onActivated","focusLoss","focusGain","gamePaused","gameResumed","Color","valueToColor","updateColor","removeEventListener","Group","addToStage","enableBody","physicsBodyType","Physics","ARCADE","physicsType","alive","ignoreDestroy","pendingDestroy","classType","cursor","inputEnableChildren","onChildInputDown","onChildInputUp","onChildInputOver","onChildInputOut","enableBodyDebug","physicsSortDirection","onDestroy","cursorIndex","fixedToCamera","cameraOffset","hash","_sortProperty","RETURN_NONE","RETURN_TOTAL","RETURN_CHILD","SORT_ASCENDING","SORT_DESCENDING","silent","removeFromHash","updateZ","addToHash","inputEnabled","events","onAddedToGroup$dispatch","addAt","addMultiple","moveAll","getAt","createMultiple","quantity","singleKey","singleFrame","align","rows","columns","cellWidth","cellHeight","alignIn","resetCursor","next","previous","swap","child1","bringToTop","getIndex","sendToBack","moveUp","moveDown","xy","getByName","oldChild","newChild","hasProperty","operation","checkProperty","checkAlive","checkVisible","setAll","setAllChildren","checkAll","addAll","property","subAll","multiplyAll","divideAll","callAllExists","existsValue","callbackFromArray","callAll","method","methodLength","contextLength","renderOrderID","predicate","checkExists","ArraySet","forEachExists","iterate","forEachAlive","forEachDead","order","ascendingSortHandler","descendingSortHandler","customSort","sortHandler","returnType","getFirstExists","createIfNull","resetChild","getFirstAlive","getFirstDead","loadTexture","getTop","getBottom","getClosestTo","tempDistance","getFurthestFrom","countLiving","countDead","getRandom","ArrayUtils","getRandomItem","destroyPhase","onRemovedFromGroup$dispatch","group","destroyTexture","removeBetween","destroyChildren","soft","_definedSize","stateChange","setBounds","useBounds","between","Game","physicsConfig","isRunning","raf","net","Device","lockRender","pendingStep","stepCount","onBlur","onFocus","_paused","_codePaused","currentUpdateID","updatesThisFrame","_deltaTime","_lastCount","_spiraling","fpsProblemNotifier","forceSingleUpdate","_nextFpsNotification","enableDebug","RandomDataGenerator","now","whenReady","seed","ScaleManager","setUpRenderer","GameObjectFactory","GameObjectCreator","Cache","Loader","Time","TweenManager","Input","SoundManager","Particles","Create","Net","Debug","showDebugHeader","RequestAnimationFrame","stopFocus","focus","hideBanner","webAudio","chrome","webGL","contextRestored","cocoonJS","smoothed","addToDOM","preventDefault","clearGLTextures","updateLogic","desiredFpsMult","updateRender","slowMotion","desiredFps","slowStep","elapsed","enableStep","disableStep","removeFromDOM","muteOnPause","setMute","cordova","iOS","unsetMute","hitCanvas","hitContext","moveCallbacks","customCandidateHandler","customCandidateHandlerContext","pollRate","multiInputOverride","MOUSE_TOUCH_COMBINE","maxPointers","tapRate","doubleTapRate","holdRate","justPressedRate","justReleasedRate","recordPointerHistory","recordRate","recordLimit","pointer1","pointer2","pointer3","pointer4","pointer5","pointer6","pointer7","pointer8","pointer9","pointer10","pointers","activePointer","mousePointer","keyboard","touch","mspointer","gamepad","resetLocked","onDown","onUp","onTap","onHold","minPriorityID","interactiveItems","_localPoint","_pollCounter","_oldPosition","_x","_y","MOUSE_OVERRIDES_TOUCH","TOUCH_OVERRIDES_MOUSE","MAX_POINTERS","Pointer","PointerMode","CURSOR","addPointer","Mouse","Touch","MSPointer","Keyboard","Gamepad","_onClickTrampoline","onClickTrampoline","setInteractiveCandidateHandler","addMoveCallback","deleteMoveCallback","TOUCH","hard","resetSpeed","startPointer","countActivePointers","updatePointer","identifier","move","stopPointer","limit","getPointer","isActive","getPointerFromIdentifier","getPointerFromId","pointerId","getLocalPosition","TileSprite","graphicsData","processClickTrampolines","mouseDownCallback","mouseUpCallback","mouseOutCallback","mouseOverCallback","mouseWheelCallback","capture","button","wheelDelta","locked","stopOnGameOut","pointerLock","_onMouseDown","_onMouseMove","_onMouseUp","_onMouseOut","_onMouseOver","_onMouseWheel","_wheelEvent","NO_BUTTON","LEFT_BUTTON","MIDDLE_BUTTON","RIGHT_BUTTON","BACK_BUTTON","FORWARD_BUTTON","WHEEL_UP","WHEEL_DOWN","android","onMouseDown","onMouseMove","onMouseUp","_onMouseUpGlobal","onMouseUpGlobal","_onMouseOutGlobal","onMouseOutGlobal","onMouseOut","onMouseOver","onMouseWheel","wheelEvent","mouseMoveCallback","withinGame","leftButton","rightButton","bindEvent","deltaY","requestPointerLock","element","mozRequestPointerLock","webkitRequestPointerLock","_pointerLockChange","pointerLockChange","pointerLockElement","mozPointerLockElement","webkitPointerLockElement","releasePointerLock","exitPointerLock","mozExitPointerLock","webkitExitPointerLock","_stubsGenerated","makeBinder","detail","deltaX","wheelDeltaX","deltaZ","pointerDownCallback","pointerMoveCallback","pointerUpCallback","_onMSPointerDown","_onMSPointerMove","_onMSPointerUp","_onMSPointerUpGlobal","_onMSPointerOut","_onMSPointerOver","onPointerDown","onPointerMove","onPointerUp","onPointerUpGlobal","onPointerOut","onPointerOver","pointerType","DeviceButton","buttonCode","isDown","isUp","timeDown","timeUp","repeats","altKey","shiftKey","ctrlKey","onFloat","padFloat","justPressed","justReleased","pointerMode","CONTACT","middleButton","backButton","forwardButton","eraserButton","ERASER_BUTTON","_holdSent","_history","_nextDrop","_stateReset","clientX","clientY","pageX","pageY","screenX","screenY","rawMovementX","rawMovementY","movementX","movementY","isMouse","previousTapTime","totalTouches","msSinceLastClick","targetObject","interactiveCandidates","positionDown","positionUp","_clickTrampolines","_trampolineTargetObject","resetButtons","processButtonsDown","buttons","processButtonsUp","updateButtons","down","toLowerCase","totalActivePointers","_touchedHandler","processInteractiveObjects","shift","fromClick","pollLocked","mozMovementX","webkitMovementX","mozMovementY","webkitMovementY","isDragged","highestRenderOrderID","highestInputPriorityID","candidateTarget","currentNode","checked","validForInput","checkPointerDown","checkPointerOver","priorityID","swapTarget","newTarget","_pointerOutHandler","_pointerOverHandler","leave","currentPointers","addClickTrampoline","callbackArgs","trampolines","trampoline","_releasedHandler","resetMovement","touchLockCallbacks","touchStartCallback","touchMoveCallback","touchEndCallback","touchEnterCallback","touchLeaveCallback","touchCancelCallback","_onTouchStart","_onTouchMove","_onTouchEnd","_onTouchEnter","_onTouchLeave","_onTouchCancel","onTouchStart","onTouchMove","onTouchEnd","onTouchEnter","onTouchLeave","onTouchCancel","consumeDocumentTouches","_documentTouchMove","addTouchLockCallback","onEnd","removeTouchLockCallback","cb","changedTouches","InputHandler","useHandCursor","_setHandCursor","allowHorizontalDrag","allowVerticalDrag","snapOffset","snapOnDrag","snapOnRelease","snapX","snapY","snapOffsetX","snapOffsetY","pixelPerfectOver","pixelPerfectClick","pixelPerfectAlpha","draggable","boundsRect","boundsSprite","scaleLayer","dragOffset","dragFromCenter","dragStopBlocksInputUp","dragStartPoint","dragDistanceThreshold","dragTimeThreshold","downPoint","snapPoint","_dragPoint","_dragPhase","_pendingDrag","_dragTimePass","_dragDistancePass","_wasEnabled","_tempPoint","_pointerData","camX","camY","isOver","isOut","timeOver","timeOut","downDuration","onAddedToGroup","addedToGroup","onRemovedFromGroup","removedFromGroup","flagged","highestID","highestRenderID","includePixelPerfect","isPixelPerfect","pointerX","pointerY","pointerDown","pointerUp","pointerTimeDown","pointerTimeUp","pointerOver","pointerOut","pointerTimeOver","pointerTimeOut","pointerDragged","fastTest","checkPixel","_dx","_dy","startDrag","_draggedPointerID","updateDrag","sendEvent","onInputOver$dispatch","onInputOut$dispatch","onInputDown$dispatch","dragTimeElapsed","onInputUp$dispatch","stopDrag","fromStart","globalToLocalX","globalToLocalY","checkBoundsRect","checkBoundsSprite","onDragUpdate","justOver","delay","overDuration","justOut","enableDrag","lockCenter","pixelPerfect","alphaThreshold","disableDrag","onDragStart$dispatch","grid","boundsFluid","scaleFluidInversed","onDragStop$dispatch","setDragLock","allowHorizontal","allowVertical","enableSnap","onDrag","onRelease","disableSnap","_gamepadIndexMap","_rawPads","_active","_gamepadSupportAvailable","webkitGetGamepads","webkitGamepads","userAgent","getGamepads","_prevRawGamepadTypes","_prevTimestamps","onConnectCallback","onDisconnectCallback","onDownCallback","onUpCallback","onAxisCallback","onFloatCallback","_ongamepadconnected","_gamepaddisconnected","_gamepads","SinglePad","addCallbacks","callbacks","onConnect","onDisconnect","onAxis","_onGamepadConnected","onGamepadConnected","_onGamepadDisconnected","onGamepadDisconnected","newPad","connect","removedPad","disconnect","_pollGamepads","pad1","pollStatus","pad2","pad3","pad4","rawGamepads","gamepadsChanged","_rawPad","singlePad","validConnections","rawIndices","padIndices","connected","rawPad","setDeadZones","deadZone","BUTTON_0","BUTTON_1","BUTTON_2","BUTTON_3","BUTTON_4","BUTTON_5","BUTTON_6","BUTTON_7","BUTTON_8","BUTTON_9","BUTTON_10","BUTTON_11","BUTTON_12","BUTTON_13","BUTTON_14","BUTTON_15","AXIS_0","AXIS_1","AXIS_2","AXIS_3","AXIS_4","AXIS_5","AXIS_6","AXIS_7","AXIS_8","AXIS_9","XBOX360_A","XBOX360_B","XBOX360_X","XBOX360_Y","XBOX360_LEFT_BUMPER","XBOX360_RIGHT_BUMPER","XBOX360_LEFT_TRIGGER","XBOX360_RIGHT_TRIGGER","XBOX360_BACK","XBOX360_START","XBOX360_STICK_LEFT_BUTTON","XBOX360_STICK_RIGHT_BUTTON","XBOX360_DPAD_LEFT","XBOX360_DPAD_RIGHT","XBOX360_DPAD_UP","XBOX360_DPAD_DOWN","XBOX360_STICK_LEFT_X","XBOX360_STICK_LEFT_Y","XBOX360_STICK_RIGHT_X","XBOX360_STICK_RIGHT_Y","PS3XC_X","PS3XC_CIRCLE","PS3XC_SQUARE","PS3XC_TRIANGLE","PS3XC_L1","PS3XC_R1","PS3XC_L2","PS3XC_R2","PS3XC_SELECT","PS3XC_START","PS3XC_STICK_LEFT_BUTTON","PS3XC_STICK_RIGHT_BUTTON","PS3XC_DPAD_UP","PS3XC_DPAD_DOWN","PS3XC_DPAD_LEFT","PS3XC_DPAD_RIGHT","PS3XC_STICK_LEFT_X","PS3XC_STICK_LEFT_Y","PS3XC_STICK_RIGHT_X","PS3XC_STICK_RIGHT_Y","padParent","_padParent","_prevTimestamp","_buttons","_buttonsLen","_axes","_axesLen","getButton","timestamp","rawButtonVal","isNaN","processButtonDown","processButtonUp","processButtonFloat","processAxisChange","triggerCallback","disconnectingIndex","axisCode","buttonValue","Key","keycode","_enabled","keyCode","onHoldCallback","onHoldContext","_justDown","_justUp","processKeyDown","processKeyUp","upDuration","pressEvent","onPressCallback","_keys","_capture","_onKeyDown","_onKeyPress","_onKeyUp","_k","onPress","addKey","addKeyCapture","addKeys","removeKey","removeKeyCapture","createCursorKeys","up","KeyCode","processKeyPress","clearCaptures","String","fromCharCode","charCode","A","charCodeAt","C","D","E","H","J","K","L","M","O","P","Q","R","S","T","U","V","W","X","Y","Z","ZERO","TWO","THREE","FOUR","FIVE","SIX","SEVEN","EIGHT","NINE","NUMPAD_0","NUMPAD_1","NUMPAD_2","NUMPAD_3","NUMPAD_4","NUMPAD_5","NUMPAD_6","NUMPAD_7","NUMPAD_8","NUMPAD_9","NUMPAD_MULTIPLY","NUMPAD_ADD","NUMPAD_ENTER","NUMPAD_SUBTRACT","NUMPAD_DECIMAL","NUMPAD_DIVIDE","F1","F2","F3","F4","F5","F6","F7","F8","F9","F10","F11","F12","F13","F14","F15","COLON","EQUALS","COMMA","UNDERSCORE","PERIOD","QUESTION_MARK","TILDE","OPEN_BRACKET","BACKWARD_SLASH","CLOSED_BRACKET","QUOTES","BACKSPACE","TAB","CLEAR","ENTER","SHIFT","CONTROL","ALT","CAPS_LOCK","ESC","SPACEBAR","PAGE_UP","PAGE_DOWN","END","HOME","PLUS","MINUS","INSERT","DELETE","HELP","NUM_LOCK","match","Component","Angle","wrapAngle","Animation","play","frameRate","loop","killOnComplete","animations","AutoCull","autoCull","inCamera","checkWorldBounds","Bounds","alignTo","BringToTop","Core","install","components","Events","PhysicsBody","AnimationManager","LoadTexture","FixedToCamera","previousRotation","fresh","_exists","P2JS","customRender","Crop","cropRect","_crop","updateCrop","resetFrame","Delta","Destroy","onDestroy$dispatch","removeFrom","Video","onChangeSource","resizeFrame","BitmapText","_glyphs","_parent","_onDestroy","_onAddedToGroup","_onRemovedFromGroup","_onRemovedFromWorld","_onKilled","_onRevived","_onEnterBounds","_onOutOfBounds","_onInputOver","_onInputOut","_onInputDown","_onInputUp","_onDragStart","_onDragUpdate","_onDragStop","_onAnimationStart","_onAnimationComplete","_onAnimationLoop","onRemovedFromWorld","onKilled","onRevived","onOutOfBounds","onEnterBounds","onInputOver","onInputOut","onInputDown","onInputUp","onDragStart","onDragStop","onAnimationStart","onAnimationComplete","onAnimationLoop","backing","_fixedToCamera","Health","health","maxHealth","damage","kill","setHealth","heal","InCamera","InputEnabled","InWorld","outOfCameraBoundsKill","_outOfBoundsFired","onEnterBounds$dispatch","onOutOfBounds$dispatch","outOfBoundsKill","inWorld","LifeSpan","lifespan","physicsElapsedMS","revive","onRevived$dispatch","onKilled$dispatch","stopAnimation","BitmapData","hasFrameData","loadFrameData","getFrameData","frameData","Tilemap","TilemapLayer","img","base","frameName","Overlap","_reset","Reset","ScaleMinMax","scaleMin","scaleMax","checkTransform","setScaleMinMax","Smoothed","existing","weapon","Weapon","createBullets","creature","mesh","Creature","tween","physicsGroup","audio","audioSprite","addSprite","tileSprite","rope","text","Text","overFrame","outFrame","downFrame","upFrame","Button","emitter","maxParticles","Arcade","Emitter","retroFont","font","characterWidth","characterHeight","chars","charsPerRow","xSpacing","ySpacing","xOffset","yOffset","RetroFont","bitmapText","tilemap","tileWidth","addToCache","uuid","addRenderTexture","video","bitmapData","addBitmapData","Tween","preUpdatePhysics","preUpdateLifeSpan","preUpdateInWorld","preUpdateCore","_onOverFrame","_onOutFrame","_onDownFrame","_onUpFrame","onOverSound","onOutSound","onDownSound","onUpSound","onOverSoundMarker","onOutSoundMarker","onDownSoundMarker","onUpSoundMarker","onOverMouseOnly","justReleasedPreventsOver","freezeFrames","forceOut","setFrames","onInputOverHandler","onInputOutHandler","onInputDownHandler","onInputUpHandler","removedFromWorld","STATE_OVER","STATE_OUT","STATE_DOWN","STATE_UP","clearFrames","setStateFrame","switchImmediately","frameKey","changeStateFrame","setStateSound","marker","soundKey","markerKey","Sound","AudioSprite","playStateSound","setSounds","overSound","overMarker","downSound","downMarker","outSound","outMarker","upSound","upMarker","setOverSound","setOutSound","setDownSound","setUpSound","changedUp","skipPool","ctx","imageData","FrameData","textureFrame","addFrame","Frame","disableTextureUpload","cls","_image","_pos","_size","_scale","_rotate","_alpha","prev","_anchor","_tempR","_tempG","_tempB","_circle","_swapCanvas","moveH","moveV","draw","addImage","processPixelRGB","pixel","createColor","unpackPixel","getPixel32","setPixel32","processPixel","replaceRGB","g1","g2","region","packPixel","setHSL","bHaveH","bHaveS","bHaveL","HSLtoRGB","shiftHSL","red","green","blue","immediate","LITTLE_ENDIAN","setPixel","getPixel","getPixelRGB","hsl","hsv","getPixels","getFirstPixel","scan","newWidth","newHeight","op","copyTransform","copyRect","drawGroup","drawGroupProxy","drawFull","renderGraphics","shadow","blur","shadowColor","shadowBlur","shadowOffsetX","shadowOffsetY","alphaMask","sourceRect","maskRect","blendSourceAtop","blendReset","extract","destination","prevFont","fillText","arc","lineWidth","stroke","textureLine","blendSourceOver","blendSourceIn","blendSourceOut","blendDestinationOver","blendDestinationIn","blendDestinationOut","blendDestinationAtop","blendXor","blendAdd","blendMultiply","blendScreen","blendOverlay","blendDarken","blendLighten","blendColorDodge","blendColorBurn","blendHardLight","blendSoftLight","blendDifference","blendExclusion","blendHue","blendSaturation","blendColor","blendLuminosity","getSmoothingEnabled","setSmoothingEnabled","getTransform","translateX","translateY","skewX","skewY","fillAlpha","lineColor","currentPath","boundsPadding","_localBounds","webGLDirty","cachedSpriteDirty","lineStyle","lineAlpha","drawShape","updateLocalBounds","quadraticCurveTo","cpX","cpY","toX","toY","xa","ya","fromX","fromY","bezierCurveTo","cpX2","cpY2","dt2","dt3","arcTo","mm","dd","cc","tt","k1","k2","j1","j2","qx","qy","startAngle","endAngle","anticlockwise","segments","sweep","segs","startX","startY","filling","theta","theta2","cTheta","sTheta","segMinus","remainder","real","fillColor","drawRoundedRect","drawCircle","drawEllipse","drawPolygon","clearDirty","updateCachedSpriteTexture","_prevTint","tempPoint","RECT","RREC","CIRC","ELIP","cachedSprite","destroyCachedSprite","GraphicsData","POLY","_lineTint","_fillTint","sign","EarCut","holeIndices","dim","hasHoles","outerLen","outerNode","linkedList","eliminateHoles","earcutLinked","clockwise","insertNode","filterPoints","again","steiner","removeNode","ear","pass","indexCurve","isEarHashed","isEar","cureLocalIntersections","splitEarcut","pointInTriangle","minTX","minTY","maxTX","maxTY","minZ","zOrder","maxZ","nextZ","prevZ","locallyInside","isValidDiagonal","splitPolygon","list","getLeftmost","compareX","eliminateHole","hole","findHoleBridge","hx","hy","tan","tanMin","sortLinked","q","tail","numMerges","pSize","qSize","inSize","leftmost","intersectsPolygon","middleInside","Node","an","bp","stencilBufferLimit","lastIndex","graphicsDataPool","switchMode","canDrawUsingSimple","buildPoly","buildComplexPoly","buildLine","buildRectangle","buildCircle","buildRoundedRectangle","upload","WebGLGraphicsData","rectData","vertPos","tempPoints","rrectData","recPoints","quadraticBezierCurve","vecPos","getPt","n1","n2","perc","diff","xb","yb","circleData","totalSegs","seg","firstPoint","midPointX","midPointY","unshift","p1x","p1y","p2x","p2y","p3x","p3y","perpx","perpy","perp2x","perp2y","perp3x","perp3y","pdist","indexCount","indexStart","glPoints","glIndicies","updateGraphicsTint","kappa","ox","oy","xe","ye","xm","ym","maxRadius","tintR","tintG","tintB","drawTriangle","cull","triangle","cameraToFace","faceNormal","drawTriangles","point1","point2","point3","renderXY","renderRawXY","textBounds","strokeColors","fontStyles","fontWeights","autoRound","useAdvancedWrap","_res","_text","_fontComponents","_lineSpacing","_charCount","setStyle","updateText","setShadow","shadowStroke","shadowFill","backgroundColor","boundsAlignH","boundsAlignV","strokeThickness","wordWrap","wordWrapWidth","maxLines","tabs","fontToComponents","fontStyle","fontVariant","fontWeight","fontSize","componentsToFont","outputText","runWordWrap","lines","lineWidths","maxLineWidth","fontProperties","determineFontProperties","drawnLines","measureLine","measureText","tab","section","snapToCeil","lineHeight","lineSpacing","textBaseline","lineCap","lineJoin","linePositionX","linePositionY","ascent","updateLine","updateShadow","strokeText","renderTabLine","snap","lineLength","letter","clearColors","clearFontValues","addColor","addStrokeColor","addFontStyle","addFontWeight","weight","precalculateWordWrap","wrappedLines","advancedWordWrap","basicWordWrap","linesCount","currentLineWidth","words","word","wordWithSpace","wordWidth","newWord","secondPart","spaceLeft","wordWidthWithSpace","updateFont","family","exec","fontFamily","setText","parseList","setTextBounds","properties","fontPropertiesCache","fontPropertiesCanvas","fontPropertiesContext","baseline","descent","imagedata","parseFloat","textWidth","textHeight","_prevAnchor","_maxWidth","_data","getBitmapFont","_font","_fontSize","_align","_tint","sourceWidth","sourceHeight","scanLine","lastSpace","wrappedWidth","prevCharCode","maxWidth","test","charAt","charData","kerning","xAdvance","cleanText","re","purgeGlyphs","kept","checkImageKey","characterSpacingX","characterSpacingY","characterPerRow","multiLine","autoUpperCase","customSpacingX","customSpacingY","fixedWidth","fontSet","grabData","currentX","currentY","updateFrameData","stamp","ALIGN_LEFT","ALIGN_RIGHT","ALIGN_CENTER","TEXT_SET1","TEXT_SET2","TEXT_SET3","TEXT_SET4","TEXT_SET5","TEXT_SET6","TEXT_SET7","TEXT_SET8","TEXT_SET9","TEXT_SET10","TEXT_SET11","setFixedWidth","lineAlignment","content","characterSpacing","allowLowerCase","buildRetroFontText","getLongestLine","pasteLine","longestLine","removeUnsupportedCharacters","stripCR","newString","aChar","code","updateOffset","diffX","diffY","frames","getFrames","newText","toUpperCase","_hasUpdateAnimation","_updateAnimationCallback","updateAnimation","_updateAnimation","difference","_scroll","def","physicsElapsed","autoScroll","stopScroll","deviceReadyAt","initialized","desktop","iOSVersion","nodeWebkit","electron","ejecta","crosswalk","chromeOS","linux","macOS","windows","windowsPhone","canvasBitBltShift","file","fileSystem","localStorage","worker","css3D","typedArray","vibration","getUserMedia","quirksMode","arora","chromeVersion","epiphany","firefox","firefoxVersion","ie","ieVersion","trident","tridentVersion","mobileSafari","midori","opera","safari","safariVersion","webApp","silk","audioData","ogg","opus","mp3","wav","m4a","webm","dolby","oggVideo","h264Video","mp4Video","webmVideo","vp9Video","hlsVideo","iPhone","iPhone4","iPad","pixelRatio","littleEndian","support32bit","fullscreen","requestFullscreen","cancelFullscreen","fullscreenKeyboard","onInitialized","nonPrimer","readyCheck","_readyCheck","_monitor","_queue","readyState","setTimeout","_initialize","_checkOS","vita","kindle","RegExp","$1","_checkFeatures","getItem","error","WebGLRenderingContext","compatMode","webkitGetUserMedia","mozGetUserMedia","msGetUserMedia","oGetUserMedia","URL","webkitURL","mozURL","msURL","_checkInput","documentElement","maxTouchPoints","msPointerEnabled","pointerEnabled","_checkFullScreenSupport","fs","cfs","Element","_checkBrowser","$3","process","versions","_checkVideo","videoElement","canPlayType","_checkAudio","audioElement","major","minor","$2","_checkDevice","Int8Array","_checkIsLittleEndian","Uint8ClampedArray","Int32Array","_checkIsUint8ClampedImageData","vibrate","webkitVibrate","mozVibrate","msVibrate","elem","createImageData","_checkCSS3D","has3d","el","transforms","webkitTransform","OTransform","msTransform","MozTransform","insertBefore","getComputedStyle","getPropertyValue","canPlayAudio","canPlayVideo","isConsoleOpen","profile","profileEnd","isAndroidStockBrowser","matches","display","msTouchAction","overflowHidden","getElementById","overflow","appendChild","parentNode","vendor","prefix","setImageRenderingCrisp","types","msInterpolationMode","setImageRenderingBicubic","forceSetTimeOut","vendors","requestAnimationFrame","cancelAnimationFrame","_isSetTimeOut","_onLoop","_timeOutID","updateSetTimeout","updateRAF","rafTime","timeToCall","clearTimeout","isSetTimeOut","isRAF","PI2","fuzzyEqual","fuzzyLessThan","fuzzyGreaterThan","fuzzyCeil","val","fuzzyFloor","average","shear","snapTo","gap","snapToFloor","roundTo","place","floorTo","ceilTo","angleBetween","angleBetweenY","angleBetweenPoints","angleBetweenPointsY","reverseAngle","angleRad","normalizeAngle","maxAdd","minSub","wrapValue","isOdd","isEven","minProperty","maxProperty","radians","linearInterpolation","bezierInterpolation","bernstein","catmullRomInterpolation","catmullRom","factorial","res","roundAwayFromZero","sinCosGenerator","sinAmplitude","cosAmplitude","frequency","frq","cosTable","sinTable","distanceSq","distancePow","clampBottom","within","mapLinear","smoothstep","smootherstep","percent","degreeToRadiansFactor","radianToDegreesFactor","degrees","seeds","s0","sow","integer","integerInRange","realInRange","pick","ary","weightedPick","QuadTree","maxObjects","maxLevels","_empty","subWidth","subHeight","populate","populateHandler","insert","retrieve","returnObjects","getHostName","location","hostname","checkDomainName","domain","updateQueryString","redirect","href","separator","getQueryString","parameter","keyValues","search","substring","decodeURI","decodeURIComponent","frameBased","_tweens","_add","easeMap","Power0","Easing","Power1","Power2","Power3","Power4","Linear","None","Quad","Quadratic","Out","Cubic","Quart","Quartic","Quint","Quintic","Sine","Sinusoidal","Expo","Exponential","Circ","Circular","Elastic","Back","Bounce","Quad.easeIn","In","Cubic.easeIn","Quart.easeIn","Quint.easeIn","Sine.easeIn","Expo.easeIn","Circ.easeIn","Elastic.easeIn","Back.easeIn","Bounce.easeIn","Quad.easeOut","Cubic.easeOut","Quart.easeOut","Quint.easeOut","Sine.easeOut","Expo.easeOut","Circ.easeOut","Elastic.easeOut","Back.easeOut","Bounce.easeOut","Quad.easeInOut","InOut","Cubic.easeInOut","Quart.easeInOut","Quint.easeInOut","Sine.easeInOut","Expo.easeInOut","Circ.easeInOut","Elastic.easeInOut","Back.easeInOut","Bounce.easeInOut","_pauseAll","_resumeAll","getAll","pendingDelete","_manager","addTweens","numTweens","isTweening","some","_pause","_resume","pauseAll","resumeAll","manager","timeline","timeScale","repeatCounter","onStart","onLoop","onRepeat","onChildComplete","onComplete","chainedTween","isPaused","_onUpdateCallback","_onUpdateCallbackContext","_pausedTime","_hasStarted","ease","yoyo","Default","TweenData","vEnd","loadValues","updateTweenData","repeatDelay","yoyoDelay","easing","interpolation","repeatAll","chain","startTime","status","PENDING","RUNNING","LOOPED","COMPLETE","generateData","vStart","vStartCache","vEndCache","repeatTotal","inReverse","easingFunction","interpolationFunction","interpolationContext","isFrom","yoyoCounter","ms","fps","blob","reversed","asin","prevTime","_desiredFps","suggestedFps","advancedTiming","fpsMin","fpsMax","msMin","msMax","pauseDuration","timeExpected","Timer","_frameCount","_elapsedAccumulator","_started","_timeLastSecond","_pauseStarted","_justResumed","_timers","timer","autoDestroy","previousDateNow","updateAdvancedTiming","updateTimers","elapsedSince","since","elapsedSecondsSince","running","expired","nextTick","timeCap","_pauseTotal","_now","_marked","_diff","_newTick","MINUTE","SECOND","HALF","QUARTER","repeatCount","TimerEvent","clearEvents","clearPendingEvents","adjustEvents","baseTime","currentFrame","currentAnim","updateIfVisible","isLoaded","_frameData","_anims","_outputFrames","anim","copyFrameData","useNumericIndex","getFrameIndexes","validateFrames","checkFrameName","isPlaying","getAnimation","refreshFrame","getFrame","getFrameByName","_frameIndex","_frames","loopCount","isFinished","_pauseStartTime","_frameDiff","_frameSkip","onUpdate","isReversed","_timeLastFrame","_timeNextFrame","updateCurrentFrame","onAnimationStart$dispatch","reverseOnce","frameId","useLocalFrameIndex","frameIndex","dispatchComplete","onAnimationComplete$dispatch","onAnimationLoop$dispatch","signalUpdate","fromPlay","generateFrameNames","suffix","zeroPad","rotated","rotationDirection","spriteSourceSizeW","spriteSourceSizeH","setTrim","actualWidth","actualHeight","destX","destY","destWidth","destHeight","getRect","_frameNames","getFrameRange","AnimationParser","spriteSheet","frameMax","margin","spacing","row","column","JSONData","json","newFrame","filename","sourceSize","spriteSourceSize","JSONDataPyxel","signature","tileheight","tilewidth","JSONDataHash","XMLData","xml","getElementsByTagName","frameX","frameY","autoResolveURL","_cache","binary","bitmapFont","_urlMap","_urlResolver","_urlTemp","onSoundUnlock","_cacheMap","TEXTURE","SOUND","PHYSICS","BINARY","BITMAPFONT","JSON","XML","SHADER","RENDER_TEXTURE","addDefaultImage","addMissingImage","MISSING","addCanvas","removeImage","_resolveURL","addSound","audioTag","decoded","isDecoding","touchLocked","addText","addPhysicsData","addTilemap","mapData","addBinary","binaryData","addBitmapFont","atlasData","atlasType","LoaderParser","jsonBitmapFont","xmlBitmapFont","addJSON","addXML","addVideo","isBlob","addShader","addSpriteSheet","addTextureAtlas","TEXTURE_ATLAS_XML_STARLING","TEXTURE_ATLAS_JSON_PYXEL","reloadSound","getSound","reloadSoundComplete","updateSound","decodedSound","isSoundDecoded","isSoundReady","checkKey","checkURL","checkCanvasKey","checkTextureKey","checkSoundKey","checkTextKey","checkPhysicsKey","checkTilemapKey","checkBinaryKey","checkBitmapDataKey","checkBitmapFontKey","checkJSONKey","checkXMLKey","checkVideoKey","checkShaderKey","checkRenderTextureKey","full","getTextureFrame","getSoundData","getText","getPhysicsData","fixtureKey","fixtures","fixture","getTilemapData","getBinary","getBitmapData","getJSON","getXML","getVideo","getShader","getRenderTexture","getBaseTexture","getFrameCount","getFrameByIndex","getURL","getKeys","removeCanvas","destroyBaseTexture","removeSound","removeText","removePhysics","removeTilemap","removeBinary","removeBitmapData","removeBitmapFont","removeJSON","removeXML","removeVideo","removeShader","removeRenderTexture","removeSpriteSheet","removeTextureAtlas","atlas","baseURL","isLoading","preloadSprite","crossOrigin","headers","onLoadStart","onLoadComplete","onPackComplete","onFileStart","onFileComplete","onFileError","useXDomainRequest","_warnedAboutXDomainRequest","enableParallel","maxParallelDownloads","_withSyncPointDepth","_fileList","_flightQueue","_processingHead","_fileLoadStarted","_totalPackCount","_totalFileCount","_loadedPackCount","_loadedFileCount","TEXTURE_ATLAS_JSON_ARRAY","TEXTURE_ATLAS_JSON_HASH","PHYSICS_LIME_CORONA_JSON","PHYSICS_PHASER_JSON","setPreloadSprite","checkKeyExists","getAssetIndex","bestFound","loaded","loading","getAsset","fileIndex","addToFileList","overwrite","extension","syncPoint","currentFile","replaceInFileList","pack","images","urls","script","spritesheet","autoDecode","noAudio","jsonURL","jsonData","audiosprite","loadEvent","asBlob","CSV","TILED_JSON","LIME_CORONA_JSON","textureURL","atlasURL","parseXml","atlasJSONArray","atlasJSONHash","atlasXML","withSyncPoint","addSyncPoint","asset","removeFile","updateProgress","processLoadQueue","finishedLoading","requestUrl","requestObject","progress","syncblock","inflightLimit","processPack","loadFile","abnormal","asyncComplete","errorMessage","packData","transformUrl","xhrLoad","fileComplete","loadImageTag","getAudioURL","usingWebAudio","usingAudioTag","loadAudioTag","fileError","getVideoURL","loadVideoTag","jsonLoadComplete","xmlLoadComplete","csvLoadComplete","onload","onerror","controls","autoplay","videoLoadEvent","canplay","Audio","playThroughEvent","XDomainRequest","xhrLoadWithXDR","xhr","XMLHttpRequest","open","responseType","setRequestHeader","message","send","timeout","ontimeout","onprogress","videoType","uri","lastIndexOf","audioType","reason","loadNext","responseText","response","decode","language","defer","head","contentType","domparser","DOMParser","parseFromString","ActiveXObject","async","loadXML","totalLoadedFiles","totalLoadedPacks","progressFloat","info","common","getAttribute","letters","kernings","second","finalizeBitmapFont","_face","_lineHeight","_id","_xoffset","_yoffset","_xadvance","_second","_first","_amount","bitmapFontData","autoplayKey","sounds","spritemap","addMarker","connectToMaster","markers","totalDuration","currentTime","durationMS","stopTime","pausedPosition","pausedTime","currentMarker","fadeTween","pendingPlayback","override","allowMultiple","externalNode","masterGainNode","gainNode","_sound","masterGain","createGain","createGainNode","gain","soundHasUnlocked","onDecoded","onPlay","onStop","onMute","onMarkerComplete","_volume","_buffer","_muted","_tempMarker","_tempPosition","_tempVolume","_tempPause","_muteVolume","_tempLoop","_onDecodedEventDispatched","removeMarker","onEndedHandler","onended","isDecoded","loopFull","forceRestart","noteOff","createBufferSource","noteGrainOn","muted","mute","prevMarker","fadeIn","fadeTo","fadeOut","fadeComplete","updateGlobalVolume","globalVolume","onSoundDecode","onVolumeChange","onUnMute","channels","_codeMuted","_unlockSource","_sounds","_watchList","_watching","_watchCallback","_watchContext","disableAudio","disableWebAudio","audioContext","fakeiOSTouchLock","setTouchLock","unlock","noteOn","stopAll","soundData","decodeAudioData","setDecodedCallback","files","playbackState","PLAYING_STATE","FINISHED_STATE","removeByKey","close","dom","minWidth","minHeight","maxHeight","forceLandscape","forcePortrait","incorrectOrientation","_pageAlignHorizontally","_pageAlignVertically","onOrientationChange","enterIncorrectOrientation","leaveIncorrectOrientation","fullScreenTarget","_createdFullScreenTarget","onFullScreenInit","onFullScreenChange","onFullScreenError","screenOrientation","getScreenOrientation","scaleFactorInversed","aspectRatio","sourceAspectRatio","windowConstraints","compatibility","supportsFullScreen","orientationFallback","noMargins","scrollTo","forceMinimumDocumentHeight","canExpandParent","clickTrampoline","_scaleMode","NO_SCALE","_fullScreenScaleMode","parentIsWindow","parentScaleFactor","trackParentInterval","onSizeChange","onResize","onResizeContext","_pendingScaleMode","_fullScreenRestore","_gameSize","_userScaleFactor","_userScaleTrim","_lastUpdate","_updateThrottle","_updateThrottleReset","_parentBounds","_tempBounds","_lastReportedCanvasSize","_lastReportedGameSize","_booted","setupScale","EXACT_FIT","SHOW_ALL","RESIZE","USER_SCALE","compat","_orientationChange","orientationChange","_windowResize","windowResize","_fullScreenChange","fullScreenChange","_fullScreenError","fullScreenError","_gameResumed","setGameSize","FlexGrid","fullScreenScaleMode","getParentBounds","visualBounds","updateDimensions","queueUpdate","currentScaleMode","setUserScale","hScale","vScale","hTrim","vTrim","setResizeCallback","signalSizeChange","setMinMax","prevThrottle","prevWidth","prevHeight","boundsChanged","orientationChanged","updateOrientationState","updateLayout","throttle","updateScalingAndBounds","forceOrientation","classifyOrientation","orientation","previousOrientation","previouslyIncorrect","isLandscape","isPortrait","changed","correctnessChanged","scrollTop","reflowGame","setMaximum","setExactFit","isFullScreen","boundingParent","setShowAll","resetCanvas","reflowCanvas","layoutBounds","clientRect","getBoundingClientRect","parentRect","offsetParent","wc","windowBounds","alignCanvas","parentBounds","canvasBounds","currentEdge","targetEdge","marginLeft","marginRight","marginTop","marginBottom","pageAlignHorizontally","pageAlignVertically","cssWidth","cssHeight","expanding","createFullScreenTarget","fsTarget","background","startFullScreen","allowTrampoline","cleanupCreatedTarget","initData","targetElement","ALLOW_KEYBOARD_INPUT","stopFullScreen","prepScreenMode","enteringFullscreen","createdTarget","scaleSprite","letterBox","scaleX1","scaleY1","scaleX2","scaleY2","scaleOnWidth","bmd","columnWidth","renderShadow","currentAlpha","scaleManager","currentColor","soundInfo","cameraInfo","hideIfUp","downColor","upColor","worldX","worldY","spriteInputInfo","justDown","justUp","inputInfo","spriteBounds","filled","rectangle","ropeSegments","segment","spriteInfo","spriteCoords","lineInfo","geom","forceType","quadTree","quadtree","NINJA","Ninja","BOX2D","Box2D","renderBody","bodyInfo","renderBodyInfo","box2d","box2dWorld","renderDebugDraw","box2dBody","displayList","box","scrollY","scrollLeft","scrollX","clientTop","clientLeft","cushion","calibrate","coords","getAspectRatio","inLayoutViewport","primaryFallback","screen","mozOrientation","msOrientation","matchMedia","documentBounds","pageXOffset","pageYOffset","treatAsDesktop","clientWidth","clientHeight","offsetWidth","scrollWidth","offsetHeight","scrollHeight","randomIndex","removeRandomItem","shuffle","transposeMatrix","sourceRowCount","sourceColCount","rotateMatrix","findClosest","arr","NaN","low","high","rotateRight","rotateLeft","numberArray","numberArrayStep","LinkedList","entity","palettes","0","PALETTE_ARNE","PALETTE_JMP","PALETTE_CGA","PALETTE_C64","PALETTE_JAPANESE_MACHINE","pixelWidth","pixelHeight","palette","boundsCustom","boundsFull","boundsNone","positionCustom","positionFluid","positionFull","positionNone","scaleCustom","scaleFluid","scaleFull","scaleNone","customWidth","customHeight","customOffsetX","customOffsetY","ratioH","ratioV","layers","createCustomLayer","layer","FlexLayer","createFluidLayer","createFullLayer","createFixedLayer","persist","fitSprite","topLeft","topMiddle","topRight","bottomLeft","bottomMiddle","bottomRight","RGBtoHSL","RGBtoHSV","fromRGBA","toRGBA","toABGR","hueToColor","HSVtoRGB","color32","getColor","getColor32","RGBtoString","componentToHex","hexToRGB","hexToColor","webToColor","web","tempColor","getRGB","HSVColorWheel","HSLColorWheel","interpolateColor","color1","color2","steps","currentStep","src1","src2","interpolateColorWithRGB","or","og","ob","interpolateRGB","getRandomColor","getWebRGB","getAlpha","getAlphaFloat","getRed","getGreen","getBlue","blendNormal","blendAverage","blendSubtract","blendNegation","blendLinearDodge","blendLinearBurn","blendLinearLight","blendVividLight","blendPinLight","blendHardMix","blendReflect","blendGlow","blendPhoenix","arcade","ninja","chipmunk","matter","CHIPMUNK","MATTERJS","P2","Matter","startSystem","system","enableAABB","checkCollision","OVERLAP_BIAS","forceX","sortDirection","LEFT_RIGHT","skipQuadTree","_total","SORT_NONE","RIGHT_LEFT","TOP_BOTTOM","BOTTOM_TOP","updateMotion","velocityDelta","computeVelocity","angularAcceleration","angularDrag","maxAngular","acceleration","drag","maxVelocity","allowGravity","object1","object2","overlapCallback","processCallback","collideHandler","collide","collideCallback","sortLeftRight","sortRightLeft","sortTopBottom","sortBottomTop","overlapOnly","collideGroupVsSelf","collideSpriteVsSprite","collideSpriteVsGroup","collideSpriteVsTilemapLayer","collideGroupVsGroup","collideGroupVsTilemapLayer","sprite1","sprite2","separate","items","bounds1","bounds2","group1","group2","body1","body2","isCircle","separateCircle","bodyRect","bodyCircle","resultX","resultY","separateX","separateY","onOverlap","onCollide","circleBodyIntersects","getOverlapX","getOverlapY","angleCollision","angleBetweenCenters","immovable","customSeparateX","tempVel1","tempVel2","bounce","maxOverlap","deltaAbsX","embedded","touching","none","overlapX","deltaAbsY","overlapY","moves","nv1","nv2","avg","customSeparateY","getObjectsUnderPointer","getObjectsAtLocation","callbackArg","moveToObject","maxTime","distanceBetween","moveToPointer","angleToPointer","distanceToPointer","moveToXY","distanceToXY","velocityFromAngle","velocityFromRotation","accelerationFromRotation","accelerateToObject","xSpeedMax","ySpeedMax","accelerateToPointer","accelerateToXY","angleToXY","worldAngleToPointer","allowRotation","preRotation","newVelocity","deltaMax","worldBounce","onWorldBounds","facing","overlapR","collideWorldBounds","any","wasTouching","blocked","tilePadding","syncBounds","isMoving","stopVelocityOnCollide","moveTimer","moveDistance","moveDuration","moveTarget","moveEnd","onMoveComplete","movementCallback","movementCallbackContext","_sx","_sy","updateBounds","asx","asy","updateMovement","collided","stopMovement","stopVelocity","check","bodyBounds","moveFrom","setCircle","onFloor","onCeiling","onWall","TilemapCollision","TILE_BIAS","tilemapLayer","getTiles","separateTile","tile","tilemapLayerOffsetX","tilemapLayerOffsetY","collisionCallback","collisionCallbackContext","faceLeft","faceRight","faceTop","faceBottom","tileCheckX","tileCheckY","collideRight","collideLeft","processTileSeparationX","collideDown","collideUp","processTileSeparationY","useElapsedTime","materials","InversePointProxy","walls","onBodyAdded","onBodyRemoved","onSpringAdded","onSpringRemoved","onConstraintAdded","onConstraintRemoved","onContactMaterialAdded","onContactMaterialRemoved","postBroadphaseCallback","onBeginContact","onEndContact","mpx","mpxi","pxm","pxmi","beginContactHandler","endContactHandler","collisionGroups","nothingCollisionGroup","CollisionGroup","boundsCollisionGroup","everythingCollisionGroup","boundsCollidesWith","_toRemove","_collisionGroupID","_boundsLeft","_boundsRight","_boundsTop","_boundsBottom","_boundsOwnGroup","removeBodyNextStep","setImpactEvents","impactHandler","setPostBroadphaseCallback","postBroadphaseHandler","_bodyCallbacks","_bodyCallbackContext","_groupCallbacks","_groupCallbackContext","setCollisionGroup","setWorldMaterial","updateBoundsCollisionGroup","setupWall","wall","fixedStepTime","impactCallback","createDistanceConstraint","getBody","createGearConstraint","createRevoluteConstraint","createLockConstraint","createPrismaticConstraint","lockRotation","anchorA","anchorB","setMaterial","createMaterial","createContactMaterial","getSprings","getConstraints","filterStatic","physicsPosition","query","toJSON","createCollisionGroup","bitmask","createSpring","worldA","worldB","localA","localB","createRotationalSpring","createBody","addPolygon","createParticle","convertCollisionObjects","map","collision","polyline","clearTilemapLayerBodies","getLayer","convertTilemap","optimize","collides","getTileRight","addRectangle","FixtureList","rawList","namedFixtures","groupedFixtures","allFixtures","setCategory","bit","setter","getFixtures","setMask","setSensor","getFixtureByKey","getGroup","groupID","_ref","_results","callee","PointProxy","collidesWith","removeNextStep","debugBody","_collideWorldBounds","setRectangleFromSprite","createBodyCallback","createGroupCallback","getCollisionMask","updateCollisionMask","clearCollision","clearGroup","clearMask","removeCollisionGroup","clearCallback","shapeChanged","impulse","localX","localY","setZeroRotation","setZeroVelocity","setZeroDamping","moveForward","moveBackward","thrust","thrustLeft","thrustRight","moveLeft","moveRight","updateSpriteTransform","resetDamping","resetMass","clearShapes","addCircle","addPlane","addParticle","addLine","addCapsule","setRectangle","addPhaserPolygon","createdFixtures","fixtureData","shapesOfFixture","addFixture","generatedShapes","categoryBits","maskBits","isSensor","polygons","loadPolygon","BodyDebug","settings","defaultSettings","pixelsPerLengthUnit","debugPolygons","ppu","lw","vrot","_j","_ref1","randomPastelHex","drawCapsule","drawPlane","drawLine","drawRectangle","drawConvex","drawPath","lastx","lasty","diagMargin","diagSize","maxLength","xd","yd","mix","rgbToHex","ImageCollection","firstgid","imageWidth","imageHeight","imageMargin","imageSpacing","containsImageIndex","imageIndex","gid","Tile","flipped","scanned","setCollisionCallback","setCollision","resetCollision","isInteresting","faces","TilemapParser","widthInPixels","heightInPixels","tilesets","imagecollections","tiles","collideIndexes","currentLayer","debugMap","_tempA","NORTH","EAST","SOUTH","WEST","setTileSize","createBlankLayer","addTilesetImage","tileset","tileMargin","tileSpacing","getTilesetIndex","setImage","newSet","Tileset","countX","countY","createFromObjects","CustomClass","adjustY","createFromTiles","replacements","customClass","lh","createLayer","pixiTest","getLayerIndex","TilemapLayerGL","indexes","getImageIndex","setTileIndexCallback","setTileLocationCallback","recalculate","setCollisionByIndex","calculateFaces","setCollisionBetween","setCollisionByExclusion","setPreventRecalculate","preventingRecalculate","needToRecalculate","above","below","getTileAbove","getTileBelow","getTileLeft","setLayer","hasTile","removeTile","removeTileWorldXY","putTile","putTileWorldXY","searchTileIndex","getTile","nonNull","getTileWorldXY","paste","tileblock","tileA","tileB","swapHandler","removeAllLayers","dump","txt","renderSettings","enableScrollDelta","overdrawRatio","copyCanvas","debugSettings","missingImageFill","debuggedTileOverfill","forceFullRedraw","debugAlpha","facingEdgeStroke","collidingTileOverfill","scrollFactorX","scrollFactorY","rayStepRate","_wrap","_mc","renderWidth","renderHeight","_scrollX","_scrollY","ensureSharedCopyCanvas","sharedCopyCanvas","resizeWorld","_fixX","_unfixX","_fixY","_unfixY","getTileX","getTileY","getTileXY","getRayCastTiles","interestingFace","coord","fetchAll","wy","wx","resolveTileset","tileIndex","setIndex","containsTileIndex","resetTilesetCache","setScale","xScale","yScale","shiftCanvas","copyW","copyH","copyContext","renderRegion","lastAlpha","xmax","ymax","baseX","baseY","normStartX","normStartY","renderDeltaScroll","shiftX","shiftY","renderW","renderH","trueTop","trueBottom","trueLeft","trueRight","renderFull","redrawAll","mc","renderDebug","INSERT_NULL","FLIPPED_HORIZONTALLY_FLAG","FLIPPED_VERTICALLY_FLAG","FLIPPED_DIAGONALLY_FLAG","getEmptyData","parseCSV","parseTiledJSON","fields","sliced","curl","compression","encoding","binaryString","atob","bytes","opacity","flippedVal","curi","tileproperties","tileProperties","updateTileData","imagewidth","imageheight","newCollection","curo","horizontallyFlipped","verticallyFlipped","diagonallyFlipped","polygon","ellipse","sid","drawCoords","coordIndex","setSpacing","rowCount","colCount","autoScale","scaleData","_s","autoAlpha","alphaData","_a","onEmit","setAlphaData","setScaleData","emitters","ID","minParticleSpeed","maxParticleSpeed","minParticleScale","maxParticleScale","minRotation","maxRotation","minParticleAlpha","maxParticleAlpha","particleClass","particleDrag","particleAnchor","emitX","emitY","particleBringToTop","particleSendToBack","_minParticleScale","_maxParticleScale","_quantity","_timer","_counter","_flowQuantity","_flowTotal","_explode","emitParticle","makeParticles","particle","rndKey","rndFrame","explode","flow","forceQuantity","setXSpeed","setYSpeed","setRotation","setAlpha","rate","tweenData","bullets","autoExpandBulletsGroup","autofire","shots","fireLimit","fireRate","fireRateVariance","fireFrom","fireAngle","bulletInheritSpriteSpeed","bulletAnimation","bulletFrameRandom","bulletFrameCycle","bulletWorldWrap","bulletWorldWrapPadding","bulletAngleOffset","bulletAngleVariance","bulletSpeed","bulletSpeedVariance","bulletLifespan","bulletKillDistance","bulletGravity","bulletRotateToVelocity","bulletKey","bulletFrame","_bulletClass","Bullet","_bulletCollideWorldBounds","_bulletKillType","KILL_WORLD_BOUNDS","customBody","bulletBounds","bulletFrames","bulletFrameIndex","anims","onFire","onKill","onFireLimit","trackedSprite","trackedPointer","trackRotation","trackOffset","_nextFire","KILL_NEVER","KILL_LIFESPAN","KILL_DISTANCE","KILL_WEAPON_BOUNDS","KILL_CAMERA_BOUNDS","KILL_STATIC_BOUNDS","killAll","resetShots","newLimit","fire","trackSprite","trackPointer","moveX","moveY","bullet","bulletManager","killType","bulletKillType","killDistance","rotateToVelocity","bodyDirty","bulletCollideWorldBounds","fireAtPointer","fireAtSprite","fireAtXY","setBulletBodyOffset","setBulletFrames","cycle","addBulletAnimation","debugBodies","onAccess","onError","onTimeout","videoStream","isStreaming","retryLimit","retry","retryInterval","_retryID","_pending","_autoplay","_endCallback","_playCallback","_video","createVideoFromBlob","videoWidth","videoHeight","createVideoFromURL","snapshot","connectToMediaStream","stream","startMediaStream","captureAudio","removeVideoElement","setAttribute","getUserMediaTimeout","getUserMediaSuccess","getUserMediaError","mozSrcObject","createObjectURL","onloadeddata","checkStream","checkVideoProgress","change","playbackRate","setPause","setResume","playHandler","getTracks","track","playing","ended","changeSource","grab","hasChildNodes","firstChild","removeAttribute"],"mappings":"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","file":"phaser.min.js"} \ No newline at end of file diff --git a/build/phaser.min.js b/build/phaser.min.js index bcf53cd69..73252f525 100644 --- a/build/phaser.min.js +++ b/build/phaser.min.js @@ -1,28 +1,28 @@ -/* Phaser v2.5.0 - http://phaser.io - @photonstorm - (c) 2016 Photon Storm Ltd. */ +/* Phaser v2.5.1 - http://phaser.io - @photonstorm - (c) 2016 Photon Storm Ltd. */ -!function(a){if("object"==typeof exports)module.exports=a();else if("function"==typeof define,1){var b;"undefined"!=typeof window?b=window:"undefined"!=typeof global?b=global:"undefined"!=typeof self&&(b=self),b.p2=a()}else define(a)}(function(){return function a(b,c,d){function e(g,h){if(!c[g]){if(!b[g]){var i="function"==typeof require&&require;if(!h&&i)return i(g,!0);if(f)return f(g,!0);throw new Error("Cannot find module '"+g+"'")}var j=c[g]={exports:{}};b[g][0].call(j.exports,function(a){var c=b[g][1][a];return e(c?c:a)},j,j.exports,a,b,c,d)}return c[g].exports}for(var f="function"==typeof require&&require,g=0;g=0&&1>=i&&j>=0&&1>=j}},{"./Scalar":4}],2:[function(a,b,c){function d(){}b.exports=d,d.area=function(a,b,c){return(b[0]-a[0])*(c[1]-a[1])-(c[0]-a[0])*(b[1]-a[1])},d.left=function(a,b,c){return d.area(a,b,c)>0},d.leftOn=function(a,b,c){return d.area(a,b,c)>=0},d.right=function(a,b,c){return d.area(a,b,c)<0},d.rightOn=function(a,b,c){return d.area(a,b,c)<=0};var e=[],f=[];d.collinear=function(a,b,c,g){if(g){var h=e,i=f;h[0]=b[0]-a[0],h[1]=b[1]-a[1],i[0]=c[0]-b[0],i[1]=c[1]-b[1];var j=h[0]*i[0]+h[1]*i[1],k=Math.sqrt(h[0]*h[0]+h[1]*h[1]),l=Math.sqrt(i[0]*i[0]+i[1]*i[1]),m=Math.acos(j/(k*l));return g>m}return 0==d.area(a,b,c)},d.sqdist=function(a,b){var c=b[0]-a[0],d=b[1]-a[1];return c*c+d*d}},{}],3:[function(a,b,c){function d(){this.vertices=[]}function e(a,b,c,d,e){e=e||0;var f=b[1]-a[1],g=a[0]-b[0],i=f*a[0]+g*a[1],j=d[1]-c[1],k=c[0]-d[0],l=j*c[0]+k*c[1],m=f*k-j*g;return h.eq(m,0,e)?[0,0]:[(k*i-g*l)/m,(f*l-j*i)/m]}var f=a("./Line"),g=a("./Point"),h=a("./Scalar");b.exports=d,d.prototype.at=function(a){var b=this.vertices,c=b.length;return b[0>a?a%c+c:a%c]},d.prototype.first=function(){return this.vertices[0]},d.prototype.last=function(){return this.vertices[this.vertices.length-1]},d.prototype.clear=function(){this.vertices.length=0},d.prototype.append=function(a,b,c){if("undefined"==typeof b)throw new Error("From is not given!");if("undefined"==typeof c)throw new Error("To is not given!");if(b>c-1)throw new Error("lol1");if(c>a.vertices.length)throw new Error("lol2");if(0>b)throw new Error("lol3");for(var d=b;c>d;d++)this.vertices.push(a.vertices[d])},d.prototype.makeCCW=function(){for(var a=0,b=this.vertices,c=1;cb[a][0])&&(a=c);g.left(this.at(a-1),this.at(a),this.at(a+1))||this.reverse()},d.prototype.reverse=function(){for(var a=[],b=0,c=this.vertices.length;b!==c;b++)a.push(this.vertices.pop());this.vertices=a},d.prototype.isReflex=function(a){return g.right(this.at(a-1),this.at(a),this.at(a+1))};var i=[],j=[];d.prototype.canSee=function(a,b){var c,d,e=i,h=j;if(g.leftOn(this.at(a+1),this.at(a),this.at(b))&&g.rightOn(this.at(a-1),this.at(a),this.at(b)))return!1;d=g.sqdist(this.at(a),this.at(b));for(var k=0;k!==this.vertices.length;++k)if((k+1)%this.vertices.length!==a&&k!==a&&g.leftOn(this.at(a),this.at(b),this.at(k+1))&&g.rightOn(this.at(a),this.at(b),this.at(k))&&(e[0]=this.at(a),e[1]=this.at(b),h[0]=this.at(k),h[1]=this.at(k+1),c=f.lineInt(e,h),g.sqdist(this.at(a),c)a)for(var f=a;b>=f;f++)e.vertices.push(this.vertices[f]);else{for(var f=0;b>=f;f++)e.vertices.push(this.vertices[f]);for(var f=a;f0?this.slice(a):[this]},d.prototype.slice=function(a){if(0==a.length)return[this];if(a instanceof Array&&a.length&&a[0]instanceof Array&&2==a[0].length&&a[0][0]instanceof Array){for(var b=[this],c=0;cc;c++)if(f.segmentsIntersect(a[b],a[b+1],a[c],a[c+1]))return!1;for(var b=1;bh)return console.warn("quickDecomp: max level ("+h+") reached."),a;for(var x=0;xo&&(n=o,k=l,r=y))),g.left(v.at(x+1),v.at(x),v.at(y+1))&&g.rightOn(v.at(x+1),v.at(x),v.at(y))&&(l=e(v.at(x+1),v.at(x),v.at(y),v.at(y+1)),g.left(v.at(x-1),v.at(x),l)&&(o=g.sqdist(v.vertices[x],l),m>o&&(m=o,j=l,q=y)));if(r==(q+1)%this.vertices.length)l[0]=(k[0]+j[0])/2,l[1]=(k[1]+j[1])/2,c.push(l),q>x?(t.append(v,x,q+1),t.vertices.push(l),u.vertices.push(l),0!=r&&u.append(v,r,v.vertices.length),u.append(v,0,x+1)):(0!=x&&t.append(v,x,v.vertices.length),t.append(v,0,q+1),t.vertices.push(l),u.vertices.push(l),u.append(v,r,x+1));else{if(r>q&&(q+=this.vertices.length),p=Number.MAX_VALUE,r>q)return a;for(var y=r;q>=y;++y)g.leftOn(v.at(x-1),v.at(x),v.at(y))&&g.rightOn(v.at(x+1),v.at(x),v.at(y))&&(o=g.sqdist(v.at(x),v.at(y)),p>o&&(p=o,s=y%this.vertices.length));s>x?(t.append(v,x,s+1),0!=s&&u.append(v,s,w.length),u.append(v,0,x+1)):(0!=x&&t.append(v,x,w.length),t.append(v,0,s+1),u.append(v,s,x+1))}return t.vertices.length3&&c>=0;--c)g.collinear(this.at(c-1),this.at(c),this.at(c+1),a)&&(this.vertices.splice(c%this.vertices.length,1),c--,b++);return b}},{"./Line":1,"./Point":2,"./Scalar":4}],4:[function(a,b,c){function d(){}b.exports=d,d.eq=function(a,b,c){return c=c||0,Math.abs(a-b) (http://steffe.se)",keywords:["p2.js","p2","physics","engine","2d"],main:"./src/p2.js",engines:{node:"*"},repository:{type:"git",url:"https://github.com/schteppe/p2.js.git"},bugs:{url:"https://github.com/schteppe/p2.js/issues"},licenses:[{type:"MIT"}],devDependencies:{grunt:"^0.4.5","grunt-contrib-jshint":"^0.11.2","grunt-contrib-nodeunit":"^0.4.1","grunt-contrib-uglify":"~0.4.0","grunt-contrib-watch":"~0.5.0","grunt-browserify":"~2.0.1","grunt-contrib-concat":"^0.4.0"},dependencies:{"poly-decomp":"0.1.0"}}},{}],7:[function(a,b,c){function d(a){this.lowerBound=e.create(),a&&a.lowerBound&&e.copy(this.lowerBound,a.lowerBound),this.upperBound=e.create(),a&&a.upperBound&&e.copy(this.upperBound,a.upperBound)}var e=a("../math/vec2");a("../utils/Utils");b.exports=d;var f=e.create();d.prototype.setFromPoints=function(a,b,c,d){var g=this.lowerBound,h=this.upperBound;"number"!=typeof c&&(c=0),0!==c?e.rotate(g,a[0],c):e.copy(g,a[0]),e.copy(h,g);for(var i=Math.cos(c),j=Math.sin(c),k=1;ko;o++)l[o]>h[o]&&(h[o]=l[o]),l[o]c&&(this.lowerBound[b]=c);var d=a.upperBound[b];this.upperBound[b]i?-1:h>i?-1:h}},{"../math/vec2":30,"../utils/Utils":57}],8:[function(a,b,c){function d(a){this.type=a,this.result=[],this.world=null,this.boundingVolumeType=d.AABB}var e=a("../math/vec2"),f=a("../objects/Body");b.exports=d,d.AABB=1,d.BOUNDING_CIRCLE=2,d.prototype.setWorld=function(a){this.world=a},d.prototype.getCollisionPairs=function(a){};var g=e.create();d.boundingRadiusCheck=function(a,b){e.sub(g,a.position,b.position);var c=e.squaredLength(g),d=a.boundingRadius+b.boundingRadius;return d*d>=c},d.aabbCheck=function(a,b){return a.getAABB().overlaps(b.getAABB())},d.prototype.boundingVolumeCheck=function(a,b){var c;switch(this.boundingVolumeType){case d.BOUNDING_CIRCLE:c=d.boundingRadiusCheck(a,b);break;case d.AABB:c=d.aabbCheck(a,b);break;default:throw new Error("Bounding volume type not recognized: "+this.boundingVolumeType)}return c},d.canCollide=function(a,b){var c=f.KINEMATIC,d=f.STATIC;return a.type===d&&b.type===d?!1:a.type===c&&b.type===d||a.type===d&&b.type===c?!1:a.type===c&&b.type===c?!1:a.sleepState===f.SLEEPING&&b.sleepState===f.SLEEPING?!1:a.sleepState===f.SLEEPING&&b.type===d||b.sleepState===f.SLEEPING&&a.type===d?!1:!0},d.NAIVE=1,d.SAP=2},{"../math/vec2":30,"../objects/Body":31}],9:[function(a,b,c){function d(){e.call(this,e.NAIVE)}var e=(a("../shapes/Circle"),a("../shapes/Plane"),a("../shapes/Shape"),a("../shapes/Particle"),a("../collision/Broadphase"));a("../math/vec2");b.exports=d,d.prototype=new e,d.prototype.constructor=d,d.prototype.getCollisionPairs=function(a){var b=a.bodies,c=this.result;c.length=0;for(var d=0,f=b.length;d!==f;d++)for(var g=b[d],h=0;d>h;h++){var i=b[h];e.canCollide(g,i)&&this.boundingVolumeCheck(g,i)&&c.push(g,i)}return c},d.prototype.aabbQuery=function(a,b,c){c=c||[];for(var d=a.bodies,e=0;e=r*n)return!1;n=r}return!0}var g=a("../math/vec2"),h=g.sub,i=g.add,j=g.dot,k=(a("../utils/Utils"),a("../utils/ContactEquationPool")),l=a("../utils/FrictionEquationPool"),m=a("../utils/TupleDictionary"),n=a("../equations/Equation"),o=(a("../equations/ContactEquation"),a("../equations/FrictionEquation"),a("../shapes/Circle")),p=a("../shapes/Convex"),q=a("../shapes/Shape"),r=(a("../objects/Body"),a("../shapes/Box"));b.exports=d;var s=g.fromValues(0,1),t=g.fromValues(0,0),u=g.fromValues(0,0),v=g.fromValues(0,0),w=g.fromValues(0,0),x=g.fromValues(0,0),y=g.fromValues(0,0),z=g.fromValues(0,0),A=g.fromValues(0,0),B=g.fromValues(0,0),C=g.fromValues(0,0),D=g.fromValues(0,0),E=g.fromValues(0,0),F=g.fromValues(0,0),G=g.fromValues(0,0),H=g.fromValues(0,0),I=g.fromValues(0,0),J=g.fromValues(0,0),K=g.fromValues(0,0),L=[],M=g.create(),N=g.create();d.prototype.bodiesOverlap=function(a,b){for(var c=M,d=N,e=0,f=a.shapes.length;e!==f;e++){var g=a.shapes[e];a.toWorldFrame(c,g.position);for(var h=0,i=b.shapes.length;h!==i;h++){var j=b.shapes[h];if(b.toWorldFrame(d,j.position),this[g.type|j.type](a,g,c,g.angle+a.angle,b,j,d,j.angle+b.angle,!0))return!0}}return!1},d.prototype.collidedLastStep=function(a,b){var c=0|a.id,d=0|b.id;return!!this.collidingBodiesLastStep.get(c,d)},d.prototype.reset=function(){this.collidingBodiesLastStep.reset();for(var a=this.contactEquations,b=a.length;b--;){var c=a[b],d=c.bodyA.id,e=c.bodyB.id;this.collidingBodiesLastStep.set(d,e,!0)}for(var f=this.contactEquations,g=this.frictionEquations,h=0;hp;p++){g.set(m,(0===p?-1:1)*b.length/2,0),g.rotate(m,m,d),g.add(m,m,c);for(var q=0;2>q;q++){g.set(n,(0===q?-1:1)*h.length/2,0),g.rotate(n,n,j),g.add(n,n,i),this.enableFrictionReduction&&(l=this.enableFriction,this.enableFriction=!1);var r=this.circleCircle(a,b,m,d,f,h,n,j,k,b.radius,h.radius);if(this.enableFrictionReduction&&(this.enableFriction=l),k&&r)return!0;o+=r}}this.enableFrictionReduction&&(l=this.enableFriction,this.enableFriction=!1);var s=S;e(s,b);var t=this.convexCapsule(a,s,c,d,f,h,i,j,k);if(this.enableFrictionReduction&&(this.enableFriction=l),k&&t)return!0;if(o+=t,this.enableFrictionReduction){var l=this.enableFriction;this.enableFriction=!1}e(s,h);var u=this.convexCapsule(f,s,i,j,a,b,c,d,k);return this.enableFrictionReduction&&(this.enableFriction=l),k&&u?!0:(o+=u,this.enableFrictionReduction&&o&&this.enableFriction&&this.frictionEquations.push(this.createFrictionFromAverage(o)),o)},d.prototype[q.LINE|q.LINE]=d.prototype.lineLine=function(a,b,c,d,e,f,g,h,i){return i?!1:0},d.prototype[q.PLANE|q.LINE]=d.prototype.planeLine=function(a,b,c,d,e,f,k,l,m){var n=t,o=u,p=v,q=w,r=x,C=y,D=z,E=A,F=B,G=L,H=0;g.set(n,-f.length/2,0),g.set(o,f.length/2,0),g.rotate(p,n,l),g.rotate(q,o,l),i(p,p,k),i(q,q,k),g.copy(n,p),g.copy(o,q),h(r,o,n),g.normalize(C,r),g.rotate90cw(F,C),g.rotate(E,s,d),G[0]=n,G[1]=o;for(var I=0;IK){if(m)return!0;var M=this.createContactEquation(a,e,b,f);H++,g.copy(M.normalA,E),g.normalize(M.normalA,M.normalA),g.scale(D,E,K),h(M.contactPointA,J,D),h(M.contactPointA,M.contactPointA,a.position),h(M.contactPointB,J,k),i(M.contactPointB,M.contactPointB,k),h(M.contactPointB,M.contactPointB,e.position),this.contactEquations.push(M),this.enableFrictionReduction||this.enableFriction&&this.frictionEquations.push(this.createFrictionFromContact(M))}}return m?!1:(this.enableFrictionReduction||H&&this.enableFriction&&this.frictionEquations.push(this.createFrictionFromAverage(H)),H)},d.prototype[q.PARTICLE|q.CAPSULE]=d.prototype.particleCapsule=function(a,b,c,d,e,f,g,h,i){return this.circleLine(a,b,c,d,e,f,g,h,i,f.radius,0)},d.prototype[q.CIRCLE|q.LINE]=d.prototype.circleLine=function(a,b,c,d,e,f,k,l,m,n,o){var n=n||0,o="undefined"!=typeof o?o:b.radius,p=t,q=u,r=v,s=w,H=x,I=y,J=z,K=A,M=B,N=C,O=D,P=E,Q=F,R=G,S=L;g.set(K,-f.length/2,0),g.set(M,f.length/2,0),g.rotate(N,K,l),g.rotate(O,M,l),i(N,N,k),i(O,O,k),g.copy(K,N),g.copy(M,O),h(I,M,K),g.normalize(J,I),g.rotate90cw(H,J),h(P,c,K);var T=j(P,H);h(s,K,k),h(Q,c,k);var U=o+n;if(Math.abs(T)W&&X>V){if(m)return!0;var Y=this.createContactEquation(a,e,b,f);return g.scale(Y.normalA,p,-1),g.normalize(Y.normalA,Y.normalA),g.scale(Y.contactPointA,Y.normalA,o),i(Y.contactPointA,Y.contactPointA,c),h(Y.contactPointA,Y.contactPointA,a.position),h(Y.contactPointB,r,k),i(Y.contactPointB,Y.contactPointB,k),h(Y.contactPointB,Y.contactPointB,e.position),this.contactEquations.push(Y),this.enableFriction&&this.frictionEquations.push(this.createFrictionFromContact(Y)),1}}S[0]=K,S[1]=M;for(var Z=0;ZQ&&(g.copy(J,B),L=Q,g.scale(A,s,Q),g.add(A,A,B),K=!0)}}if(K){if(m)return!0;var R=this.createContactEquation(a,e,b,j);return g.sub(R.normalA,J,c),g.normalize(R.normalA,R.normalA),g.scale(R.contactPointA,R.normalA,n),i(R.contactPointA,R.contactPointA,c),h(R.contactPointA,R.contactPointA,a.position),h(R.contactPointB,A,k),i(R.contactPointB,R.contactPointB,k),h(R.contactPointB,R.contactPointB,e.position),this.contactEquations.push(R),this.enableFriction&&this.frictionEquations.push(this.createFrictionFromContact(R)),1}if(n>0)for(var N=0;NQ&&(I=Q,g.scale(E,s,Q),g.add(E,E,c),g.copy(H,s),L=!0)}if(L){var R=this.createContactEquation(a,e,b,k);return g.scale(R.normalA,H,-1),g.normalize(R.normalA,R.normalA),g.set(R.contactPointA,0,0),i(R.contactPointA,R.contactPointA,c),h(R.contactPointA,R.contactPointA,a.position),h(R.contactPointB,E,l),i(R.contactPointB,R.contactPointB,l),h(R.contactPointB,R.contactPointB,e.position),this.contactEquations.push(R),this.enableFriction&&this.frictionEquations.push(this.createFrictionFromContact(R)),1}return 0},d.prototype[q.CIRCLE]=d.prototype.circleCircle=function(a,b,c,d,e,f,j,k,l,m,n){var o=t,m=m||b.radius,n=n||f.radius;h(o,c,j);var p=m+n;if(g.squaredLength(o)>Math.pow(p,2))return 0;if(l)return!0;var q=this.createContactEquation(a,e,b,f);return h(q.normalA,j,c),g.normalize(q.normalA,q.normalA),g.scale(q.contactPointA,q.normalA,m),g.scale(q.contactPointB,q.normalA,-n),i(q.contactPointA,q.contactPointA,c),h(q.contactPointA,q.contactPointA,a.position),i(q.contactPointB,q.contactPointB,j),h(q.contactPointB,q.contactPointB,e.position),this.contactEquations.push(q),this.enableFriction&&this.frictionEquations.push(this.createFrictionFromContact(q)),1},d.prototype[q.PLANE|q.CONVEX]=d.prototype[q.PLANE|q.BOX]=d.prototype.planeConvex=function(a,b,c,d,e,f,k,l,m){var n=t,o=u,p=v,q=0;g.rotate(o,s,d);for(var r=0;r!==f.vertices.length;r++){var w=f.vertices[r];if(g.rotate(n,w,l),i(n,n,k),h(p,n,c),j(p,o)<=0){if(m)return!0;q++;var x=this.createContactEquation(a,e,b,f);h(p,n,c),g.copy(x.normalA,o);var y=j(p,x.normalA);g.scale(p,x.normalA,y),h(x.contactPointB,n,e.position),h(x.contactPointA,n,p),h(x.contactPointA,x.contactPointA,a.position),this.contactEquations.push(x),this.enableFrictionReduction||this.enableFriction&&this.frictionEquations.push(this.createFrictionFromContact(x))}}return this.enableFrictionReduction&&this.enableFriction&&q&&this.frictionEquations.push(this.createFrictionFromAverage(q)),q},d.prototype[q.PARTICLE|q.PLANE]=d.prototype.particlePlane=function(a,b,c,d,e,f,i,k,l){var m=t,n=u;k=k||0,h(m,c,i),g.rotate(n,s,k);var o=j(m,n);if(o>0)return 0;if(l)return!0;var p=this.createContactEquation(e,a,f,b);return g.copy(p.normalA,n),g.scale(m,p.normalA,o),h(p.contactPointA,c,m),h(p.contactPointA,p.contactPointA,e.position),h(p.contactPointB,c,a.position),this.contactEquations.push(p),this.enableFriction&&this.frictionEquations.push(this.createFrictionFromContact(p)),1},d.prototype[q.CIRCLE|q.PARTICLE]=d.prototype.circleParticle=function(a,b,c,d,e,f,j,k,l){var m=t;if(h(m,j,c),g.squaredLength(m)>Math.pow(b.radius,2))return 0;if(l)return!0;var n=this.createContactEquation(a,e,b,f);return g.copy(n.normalA,m),g.normalize(n.normalA,n.normalA),g.scale(n.contactPointA,n.normalA,b.radius),i(n.contactPointA,n.contactPointA,c),h(n.contactPointA,n.contactPointA,a.position),h(n.contactPointB,j,e.position),this.contactEquations.push(n),this.enableFriction&&this.frictionEquations.push(this.createFrictionFromContact(n)),1};var X=new o({radius:1}),Y=g.create(),Z=g.create();g.create();d.prototype[q.PLANE|q.CAPSULE]=d.prototype.planeCapsule=function(a,b,c,d,e,f,h,j,k){var l=Y,m=Z,n=X;g.set(l,-f.length/2,0),g.rotate(l,l,j),i(l,l,h),g.set(m,f.length/2,0),g.rotate(m,m,j),i(m,m,h),n.radius=f.radius;var o;this.enableFrictionReduction&&(o=this.enableFriction,this.enableFriction=!1);var p=this.circlePlane(e,n,l,0,a,b,c,d,k),q=this.circlePlane(e,n,m,0,a,b,c,d,k);if(this.enableFrictionReduction&&(this.enableFriction=o),k)return p||q;var r=p+q;return this.enableFrictionReduction&&r&&this.frictionEquations.push(this.createFrictionFromAverage(r)),r},d.prototype[q.CIRCLE|q.PLANE]=d.prototype.circlePlane=function(a,b,c,d,e,f,k,l,m){var n=a,o=b,p=c,q=e,r=k,w=l;w=w||0;var x=t,y=u,z=v;h(x,p,r),g.rotate(y,s,w);var A=j(y,x);if(A>o.radius)return 0;if(m)return!0;var B=this.createContactEquation(q,n,f,b);return g.copy(B.normalA,y),g.scale(B.contactPointB,B.normalA,-o.radius),i(B.contactPointB,B.contactPointB,p),h(B.contactPointB,B.contactPointB,n.position),g.scale(z,B.normalA,A),h(B.contactPointA,x,z),i(B.contactPointA,B.contactPointA,r),h(B.contactPointA,B.contactPointA,q.position),this.contactEquations.push(B),this.enableFriction&&this.frictionEquations.push(this.createFrictionFromContact(B)),1},d.prototype[q.CONVEX]=d.prototype[q.CONVEX|q.BOX]=d.prototype[q.BOX]=d.prototype.convexConvex=function(a,b,c,e,f,k,l,m,n,o){var p=t,q=u,r=v,s=w,y=x,C=z,D=A,E=B,F=0,o="number"==typeof o?o:0,G=d.findSeparatingAxis(b,c,e,k,l,m,p);if(!G)return 0;h(D,l,c),j(p,D)>0&&g.scale(p,p,-1);var H=d.getClosestEdge(b,e,p,!0),I=d.getClosestEdge(k,m,p);if(-1===H||-1===I)return 0;for(var J=0;2>J;J++){var K=H,L=I,M=b,N=k,O=c,P=l,Q=e,R=m,S=a,T=f;if(0===J){var U;U=K,K=L,L=U,U=M,M=N,N=U,U=O,O=P,P=U,U=Q,Q=R,R=U,U=S,S=T,T=U}for(var V=L;L+2>V;V++){var W=N.vertices[(V+N.vertices.length)%N.vertices.length];g.rotate(q,W,R),i(q,q,P);for(var X=0,Y=K-1;K+2>Y;Y++){var Z=M.vertices[(Y+M.vertices.length)%M.vertices.length],$=M.vertices[(Y+1+M.vertices.length)%M.vertices.length];g.rotate(r,Z,Q),g.rotate(s,$,Q),i(r,r,O),i(s,s,O),h(y,s,r),g.rotate90cw(E,y),g.normalize(E,E),h(D,q,r);var _=j(E,D);(Y===K&&o>=_||Y!==K&&0>=_)&&X++}if(X>=3){if(n)return!0;var aa=this.createContactEquation(S,T,M,N);F++;var Z=M.vertices[K%M.vertices.length],$=M.vertices[(K+1)%M.vertices.length];g.rotate(r,Z,Q),g.rotate(s,$,Q),i(r,r,O),i(s,s,O),h(y,s,r),g.rotate90cw(aa.normalA,y),g.normalize(aa.normalA,aa.normalA),h(D,q,r);var _=j(aa.normalA,D);g.scale(C,aa.normalA,_),h(aa.contactPointA,q,O),h(aa.contactPointA,aa.contactPointA,C),i(aa.contactPointA,aa.contactPointA,O),h(aa.contactPointA,aa.contactPointA,S.position),h(aa.contactPointB,q,P),i(aa.contactPointB,aa.contactPointB,P),h(aa.contactPointB,aa.contactPointB,T.position),this.contactEquations.push(aa),this.enableFrictionReduction||this.enableFriction&&this.frictionEquations.push(this.createFrictionFromContact(aa))}}}return this.enableFrictionReduction&&this.enableFriction&&F&&this.frictionEquations.push(this.createFrictionFromAverage(F)),F};var $=g.fromValues(0,0);d.projectConvexOntoAxis=function(a,b,c,d,e){var f,h,i=null,k=null,l=$;g.rotate(l,d,-c);for(var m=0;mi)&&(i=h),(null===k||k>h)&&(k=h);if(k>i){var n=k;k=i,i=n}var o=j(b,d);g.set(e,k+o,i+o)};var _=g.fromValues(0,0),aa=g.fromValues(0,0),ba=g.fromValues(0,0),ca=g.fromValues(0,0),da=g.fromValues(0,0),ea=g.fromValues(0,0);d.findSeparatingAxis=function(a,b,c,e,f,i,j){var k=null,l=!1,m=!1,n=_,o=aa,p=ba,q=ca,s=da,t=ea;if(a instanceof r&&e instanceof r)for(var u=0;2!==u;u++){var v=a,w=c;1===u&&(v=e,w=i);for(var x=0;2!==x;x++){0===x?g.set(q,0,1):1===x&&g.set(q,1,0),0!==w&&g.rotate(q,q,w),d.projectConvexOntoAxis(a,b,c,q,s),d.projectConvexOntoAxis(e,f,i,q,t);var y=s,z=t,A=!1;s[0]>t[0]&&(z=s,y=t,A=!0);var B=z[0]-y[1];l=0>=B,(null===k||B>k)&&(g.copy(j,q),k=B,m=l)}}else for(var u=0;2!==u;u++){var v=a,w=c;1===u&&(v=e,w=i);for(var x=0;x!==v.vertices.length;x++){g.rotate(o,v.vertices[x],w),g.rotate(p,v.vertices[(x+1)%v.vertices.length],w),h(n,p,o),g.rotate90cw(q,n),g.normalize(q,q),d.projectConvexOntoAxis(a,b,c,q,s),d.projectConvexOntoAxis(e,f,i,q,t);var y=s,z=t,A=!1;s[0]>t[0]&&(z=s,y=t,A=!0);var B=z[0]-y[1];l=0>=B,(null===k||B>k)&&(g.copy(j,q),k=B,m=l)}}return m};var fa=g.fromValues(0,0),ga=g.fromValues(0,0),ha=g.fromValues(0,0);d.getClosestEdge=function(a,b,c,d){var e=fa,f=ga,i=ha;g.rotate(e,c,-b),d&&g.scale(e,e,-1);for(var k=-1,l=a.vertices.length,m=-1,n=0;n!==l;n++){h(f,a.vertices[(n+1)%l],a.vertices[n%l]),g.rotate90cw(i,f),g.normalize(i,i);var o=j(i,e);(-1===k||o>m)&&(k=n%l,m=o)}return k};var ia=g.create(),ja=g.create(),ka=g.create(),la=g.create(),ma=g.create(),na=g.create(),oa=g.create();d.prototype[q.CIRCLE|q.HEIGHTFIELD]=d.prototype.circleHeightfield=function(a,b,c,d,e,f,j,k,l,m){var n=f.heights,m=m||b.radius,o=f.elementWidth,p=ja,q=ia,r=ma,s=oa,t=na,u=ka,v=la,w=Math.floor((c[0]-m-j[0])/o),x=Math.ceil((c[0]+m-j[0])/o);0>w&&(w=0),x>=n.length&&(x=n.length-1);for(var y=n[w],z=n[x],A=w;x>A;A++)n[A]y&&(y=n[A]);if(c[1]-m>y)return l?!1:0;for(var B=!1,A=w;x>A;A++){g.set(u,A*o,n[A]),g.set(v,(A+1)*o,n[A+1]),g.add(u,u,j),g.add(v,v,j),g.sub(t,v,u),g.rotate(t,t,Math.PI/2),g.normalize(t,t),g.scale(q,t,-m),g.add(q,q,c),g.sub(p,q,u);var C=g.dot(p,t);if(q[0]>=u[0]&&q[0]=C){if(l)return!0;B=!0,g.scale(p,t,-C),g.add(r,q,p),g.copy(s,t);var D=this.createContactEquation(e,a,f,b);g.copy(D.normalA,s),g.scale(D.contactPointB,D.normalA,-m),i(D.contactPointB,D.contactPointB,c),h(D.contactPointB,D.contactPointB,a.position),g.copy(D.contactPointA,r),g.sub(D.contactPointA,D.contactPointA,e.position),this.contactEquations.push(D),this.enableFriction&&this.frictionEquations.push(this.createFrictionFromContact(D))}}if(B=!1,m>0)for(var A=w;x>=A;A++)if(g.set(u,A*o,n[A]),g.add(u,u,j),g.sub(p,c,u),g.squaredLength(p)q&&(q=0),r>=k.length&&(r=k.length-1);for(var s=k[q],t=k[r],u=q;r>u;u++)k[u]s&&(s=k[u]);if(a.aabb.lowerBound[1]>s)return j?!1:0;for(var v=0,u=q;r>u;u++){g.set(m,u*l,k[u]),g.set(n,(u+1)*l,k[u+1]),g.add(m,m,h),g.add(n,n,h);var w=100;g.set(o,.5*(n[0]+m[0]),.5*(n[1]+m[1]-w)),g.sub(p.vertices[0],n,o),g.sub(p.vertices[1],m,o),g.copy(p.vertices[2],p.vertices[1]),g.copy(p.vertices[3],p.vertices[0]),p.vertices[2][1]-=w,p.vertices[3][1]-=w,v+=this.convexConvex(a,b,c,d,e,p,o,0,j)}return v}},{"../equations/ContactEquation":21,"../equations/Equation":22,"../equations/FrictionEquation":23,"../math/vec2":30,"../objects/Body":31,"../shapes/Box":37,"../shapes/Circle":39,"../shapes/Convex":40,"../shapes/Shape":45,"../utils/ContactEquationPool":48,"../utils/FrictionEquationPool":49,"../utils/TupleDictionary":56,"../utils/Utils":57}],11:[function(a,b,c){function d(a){a=a||{},this.from=a.from?f.fromValues(a.from[0],a.from[1]):f.create(),this.to=a.to?f.fromValues(a.to[0],a.to[1]):f.create(),this.checkCollisionResponse=void 0!==a.checkCollisionResponse?a.checkCollisionResponse:!0,this.skipBackfaces=!!a.skipBackfaces,this.collisionMask=void 0!==a.collisionMask?a.collisionMask:-1,this.collisionGroup=void 0!==a.collisionGroup?a.collisionGroup:-1,this.mode=void 0!==a.mode?a.mode:d.ANY,this.callback=a.callback||function(a){},this.direction=f.create(),this.length=1,this.update()}function e(a,b,c){f.sub(h,c,a);var d=f.dot(h,b);return f.scale(i,b,d),f.add(i,i,a),f.squaredDistance(c,i)}b.exports=d;var f=a("../math/vec2");a("../collision/RaycastResult"),a("../shapes/Shape"),a("../collision/AABB");d.prototype.constructor=d,d.CLOSEST=1,d.ANY=2,d.ALL=4,d.prototype.update=function(){var a=this.direction;f.sub(a,this.to,this.from),this.length=f.length(a),f.normalize(a,a)},d.prototype.intersectBodies=function(a,b){for(var c=0,d=b.length;!a.shouldStop(this)&&d>c;c++){var e=b[c],f=e.getAABB();(f.overlapsRay(this)>=0||f.containsPoint(this.from))&&this.intersectBody(a,e)}};var g=f.create();d.prototype.intersectBody=function(a,b){var c=this.checkCollisionResponse;if(!c||b.collisionResponse)for(var d=g,e=0,h=b.shapes.length;h>e;e++){var i=b.shapes[e];if((!c||i.collisionResponse)&&0!==(this.collisionGroup&i.collisionMask)&&0!==(i.collisionGroup&this.collisionMask)){f.rotate(d,i.position,b.angle),f.add(d,d,b.position);var j=i.angle+b.angle;if(this.intersectShape(a,i,j,d,b),a.shouldStop(this))break}}},d.prototype.intersectShape=function(a,b,c,d,f){var g=this.from,h=e(g,this.direction,d);h>b.boundingRadius*b.boundingRadius||(this._currentBody=f,this._currentShape=b,b.raycast(a,this,d,c),this._currentBody=this._currentShape=null)},d.prototype.getAABB=function(a){var b=this.to,c=this.from;f.set(a.lowerBound,Math.min(b[0],c[0]),Math.min(b[1],c[1])),f.set(a.upperBound,Math.max(b[0],c[0]),Math.max(b[1],c[1]))};f.create();d.prototype.reportIntersection=function(a,b,c,e){var g=(this.from,this.to,this._currentShape),h=this._currentBody;if(!(this.skipBackfaces&&f.dot(c,this.direction)>0))switch(this.mode){case d.ALL:a.set(c,g,h,b,e),this.callback(a);break;case d.CLOSEST:(bc;c++){for(var e=a[c],f=c-1;f>=0&&!(a[f].aabb.lowerBound[b]<=e.aabb.lowerBound[b]);f--)a[f+1]=a[f];a[f+1]=e}return a},d.prototype.sortList=function(){var a=this.axisList,b=this.axisIndex;d.sortAxisList(a,b)},d.prototype.getCollisionPairs=function(a){var b=this.axisList,c=this.result,d=this.axisIndex;c.length=0;for(var e=b.length;e--;){var g=b[e];g.aabbNeedsUpdate&&g.updateAABB()}this.sortList();for(var h=0,i=0|b.length;h!==i;h++)for(var j=b[h],k=h+1;i>k;k++){var l=b[k],m=l.aabb.lowerBound[d]<=j.aabb.upperBound[d];if(!m)break;f.canCollide(j,l)&&this.boundingVolumeCheck(j,l)&&c.push(j,l)}return c},d.prototype.aabbQuery=function(a,b,c){c=c||[],this.sortList();var d=this.axisIndex,e="x";1===d&&(e="y"),2===d&&(e="z");for(var f=this.axisList,g=(b.lowerBound[e],b.upperBound[e],0);gthis.upperLimit&&(f.maxForce=0,f.minForce=-this.maxForce,this.distance=this.upperLimit,l=!0),this.lowerLimitEnabled&&this.positionc)h.scale(e.normalA,j,-1),h.sub(e.contactPointA,k,g.position),h.sub(e.contactPointB,l,i.position),h.scale(o,j,c),h.add(e.contactPointA,e.contactPointA,o),-1===a.indexOf(e)&&a.push(e);else{var u=a.indexOf(e);-1!==u&&a.splice(u,1)}if(this.lowerLimitEnabled&&d>s)h.scale(f.normalA,j,1),h.sub(f.contactPointA,k,g.position),h.sub(f.contactPointB,l,i.position),h.scale(o,j,d),h.sub(f.contactPointB,f.contactPointB,o),-1===a.indexOf(f)&&a.push(f);else{var u=a.indexOf(f);-1!==u&&a.splice(u,1)}},d.prototype.enableMotor=function(){this.motorEnabled||(this.equations.push(this.motorEquation),this.motorEnabled=!0)},d.prototype.disableMotor=function(){if(this.motorEnabled){var a=this.equations.indexOf(this.motorEquation);this.equations.splice(a,1),this.motorEnabled=!1}},d.prototype.setLimits=function(a,b){"number"==typeof a?(this.lowerLimit=a,this.lowerLimitEnabled=!0):(this.lowerLimit=a,this.lowerLimitEnabled=!1),"number"==typeof b?(this.upperLimit=b,this.upperLimitEnabled=!0):(this.upperLimit=b,this.upperLimitEnabled=!1)}},{"../equations/ContactEquation":21,"../equations/Equation":22,"../equations/RotationalLockEquation":24,"../math/vec2":30,"./Constraint":14}],19:[function(a,b,c){function d(a,b,c){c=c||{},e.call(this,a,b,e.REVOLUTE,c);var d=this.maxForce="undefined"!=typeof c.maxForce?c.maxForce:Number.MAX_VALUE;this.pivotA=i.create(),this.pivotB=i.create(),c.worldPivot?(i.sub(this.pivotA,c.worldPivot,a.position),i.sub(this.pivotB,c.worldPivot,b.position),i.rotate(this.pivotA,this.pivotA,-a.angle),i.rotate(this.pivotB,this.pivotB,-b.angle)):(i.copy(this.pivotA,c.localPivotA),i.copy(this.pivotB,c.localPivotB));var o=this.equations=[new f(a,b,-d,d),new f(a,b,-d,d)],p=o[0],q=o[1],r=this;p.computeGq=function(){return i.rotate(j,r.pivotA,a.angle),i.rotate(k,r.pivotB,b.angle),i.add(n,b.position,k),i.sub(n,n,a.position),i.sub(n,n,j),i.dot(n,l)},q.computeGq=function(){return i.rotate(j,r.pivotA,a.angle),i.rotate(k,r.pivotB,b.angle),i.add(n,b.position,k),i.sub(n,n,a.position),i.sub(n,n,j),i.dot(n,m)},q.minForce=p.minForce=-d,q.maxForce=p.maxForce=d,this.motorEquation=new g(a,b),this.motorEnabled=!1,this.angle=0,this.lowerLimitEnabled=!1,this.upperLimitEnabled=!1,this.lowerLimit=0,this.upperLimit=0,this.upperLimitEquation=new h(a,b),this.lowerLimitEquation=new h(a,b),this.upperLimitEquation.minForce=0,this.lowerLimitEquation.maxForce=0}var e=a("./Constraint"),f=a("../equations/Equation"),g=a("../equations/RotationalVelocityEquation"),h=a("../equations/RotationalLockEquation"),i=a("../math/vec2");b.exports=d;var j=i.create(),k=i.create(),l=i.fromValues(1,0),m=i.fromValues(0,1),n=i.create();d.prototype=new e,d.prototype.constructor=d,d.prototype.setLimits=function(a,b){"number"==typeof a?(this.lowerLimit=a,this.lowerLimitEnabled=!0):(this.lowerLimit=a,this.lowerLimitEnabled=!1),"number"==typeof b?(this.upperLimit=b,this.upperLimitEnabled=!0):(this.upperLimit=b,this.upperLimitEnabled=!1)},d.prototype.update=function(){var a=this.bodyA,b=this.bodyB,c=this.pivotA,d=this.pivotB,e=this.equations,f=(e[0],e[1],e[0]),g=e[1],h=this.upperLimit,n=this.lowerLimit,o=this.upperLimitEquation,p=this.lowerLimitEquation,q=this.angle=b.angle-a.angle;if(this.upperLimitEnabled&&q>h)o.angle=h,-1===e.indexOf(o)&&e.push(o);else{var r=e.indexOf(o);-1!==r&&e.splice(r,1)}if(this.lowerLimitEnabled&&n>q)p.angle=n,-1===e.indexOf(p)&&e.push(p);else{var r=e.indexOf(p);-1!==r&&e.splice(r,1)}i.rotate(j,c,a.angle),i.rotate(k,d,b.angle),f.G[0]=-1,f.G[1]=0,f.G[2]=-i.crossLength(j,l),f.G[3]=1,f.G[4]=0,f.G[5]=i.crossLength(k,l),g.G[0]=0,g.G[1]=-1,g.G[2]=-i.crossLength(j,m),g.G[3]=0,g.G[4]=1,g.G[5]=i.crossLength(k,m)},d.prototype.enableMotor=function(){this.motorEnabled||(this.equations.push(this.motorEquation),this.motorEnabled=!0)},d.prototype.disableMotor=function(){if(this.motorEnabled){var a=this.equations.indexOf(this.motorEquation);this.equations.splice(a,1),this.motorEnabled=!1}},d.prototype.motorIsEnabled=function(){return!!this.motorEnabled},d.prototype.setMotorSpeed=function(a){if(this.motorEnabled){var b=this.equations.indexOf(this.motorEquation);this.equations[b].relativeVelocity=a}},d.prototype.getMotorSpeed=function(){return this.motorEnabled?this.motorEquation.relativeVelocity:!1}},{"../equations/Equation":22,"../equations/RotationalLockEquation":24,"../equations/RotationalVelocityEquation":25,"../math/vec2":30,"./Constraint":14}],20:[function(a,b,c){function d(a,b,c){c=c||{},e.call(this,a,b,-Number.MAX_VALUE,Number.MAX_VALUE),this.angle=c.angle||0,this.ratio="number"==typeof c.ratio?c.ratio:1,this.setRatio(this.ratio)}var e=a("./Equation");a("../math/vec2");b.exports=d,d.prototype=new e,d.prototype.constructor=d,d.prototype.computeGq=function(){return this.ratio*this.bodyA.angle-this.bodyB.angle+this.angle},d.prototype.setRatio=function(a){var b=this.G;b[2]=a,b[5]=-1,this.ratio=a},d.prototype.setMaxTorque=function(a){this.maxForce=a,this.minForce=-a}},{"../math/vec2":30,"./Equation":22}],21:[function(a,b,c){function d(a,b){e.call(this,a,b,0,Number.MAX_VALUE),this.contactPointA=f.create(),this.penetrationVec=f.create(),this.contactPointB=f.create(),this.normalA=f.create(),this.restitution=0,this.firstImpact=!1,this.shapeA=null,this.shapeB=null}var e=a("./Equation"),f=a("../math/vec2");b.exports=d,d.prototype=new e,d.prototype.constructor=d,d.prototype.computeB=function(a,b,c){var d=this.bodyA,e=this.bodyB,g=this.contactPointA,h=this.contactPointB,i=d.position,j=e.position,k=this.penetrationVec,l=this.normalA,m=this.G,n=f.crossLength(g,l),o=f.crossLength(h,l);m[0]=-l[0],m[1]=-l[1],m[2]=-n,m[3]=l[0],m[4]=l[1],m[5]=o,f.add(k,j,h),f.sub(k,k,i),f.sub(k,k,g);var p,q;this.firstImpact&&0!==this.restitution?(q=0,p=1/b*(1+this.restitution)*this.computeGW()):(q=f.dot(l,k)+this.offset,p=this.computeGW());var r=this.computeGiMf(),s=-q*a-p*b-c*r;return s}},{"../math/vec2":30,"./Equation":22}],22:[function(a,b,c){function d(a,b,c,e){this.minForce="undefined"==typeof c?-Number.MAX_VALUE:c,this.maxForce="undefined"==typeof e?Number.MAX_VALUE:e,this.bodyA=a,this.bodyB=b,this.stiffness=d.DEFAULT_STIFFNESS,this.relaxation=d.DEFAULT_RELAXATION,this.G=new f.ARRAY_TYPE(6);for(var g=0;6>g;g++)this.G[g]=0;this.offset=0,this.a=0,this.b=0,this.epsilon=0,this.timeStep=1/60,this.needsUpdate=!0,this.multiplier=0,this.relativeVelocity=0,this.enabled=!0}b.exports=d;var e=a("../math/vec2"),f=a("../utils/Utils");a("../objects/Body");d.prototype.constructor=d,d.DEFAULT_STIFFNESS=1e6,d.DEFAULT_RELAXATION=4,d.prototype.update=function(){var a=this.stiffness,b=this.relaxation,c=this.timeStep;this.a=4/(c*(1+4*b)),this.b=4*b/(1+4*b),this.epsilon=4/(c*c*a*(1+4*b)),this.needsUpdate=!1},d.prototype.gmult=function(a,b,c,d,e){return a[0]*b[0]+a[1]*b[1]+a[2]*c+a[3]*d[0]+a[4]*d[1]+a[5]*e},d.prototype.computeB=function(a,b,c){var d=this.computeGW(),e=this.computeGq(),f=this.computeGiMf();return-e*a-d*b-f*c};var g=e.create(),h=e.create();d.prototype.computeGq=function(){var a=this.G,b=this.bodyA,c=this.bodyB,d=(b.position,c.position,b.angle),e=c.angle;return this.gmult(a,g,d,h,e)+this.offset},d.prototype.computeGW=function(){var a=this.G,b=this.bodyA,c=this.bodyB,d=b.velocity,e=c.velocity,f=b.angularVelocity,g=c.angularVelocity;return this.gmult(a,d,f,e,g)+this.relativeVelocity},d.prototype.computeGWlambda=function(){var a=this.G,b=this.bodyA,c=this.bodyB,d=b.vlambda,e=c.vlambda,f=b.wlambda,g=c.wlambda;return this.gmult(a,d,f,e,g)};var i=e.create(),j=e.create();d.prototype.computeGiMf=function(){var a=this.bodyA,b=this.bodyB,c=a.force,d=a.angularForce,f=b.force,g=b.angularForce,h=a.invMassSolve,k=b.invMassSolve,l=a.invInertiaSolve,m=b.invInertiaSolve,n=this.G;return e.scale(i,c,h),e.multiply(i,a.massMultiplier,i),e.scale(j,f,k),e.multiply(j,b.massMultiplier,j),this.gmult(n,i,d*l,j,g*m)},d.prototype.computeGiMGt=function(){var a=this.bodyA,b=this.bodyB,c=a.invMassSolve,d=b.invMassSolve,e=a.invInertiaSolve,f=b.invInertiaSolve,g=this.G;return g[0]*g[0]*c*a.massMultiplier[0]+g[1]*g[1]*c*a.massMultiplier[1]+g[2]*g[2]*e+g[3]*g[3]*d*b.massMultiplier[0]+g[4]*g[4]*d*b.massMultiplier[1]+g[5]*g[5]*f};var k=e.create(),l=e.create(),m=e.create();e.create(),e.create(),e.create();d.prototype.addToWlambda=function(a){var b=this.bodyA,c=this.bodyB,d=k,f=l,g=m,h=b.invMassSolve,i=c.invMassSolve,j=b.invInertiaSolve,n=c.invInertiaSolve,o=this.G;f[0]=o[0],f[1]=o[1],g[0]=o[3],g[1]=o[4],e.scale(d,f,h*a),e.multiply(d,d,b.massMultiplier),e.add(b.vlambda,b.vlambda,d),b.wlambda+=j*o[2]*a,e.scale(d,g,i*a),e.multiply(d,d,c.massMultiplier),e.add(c.vlambda,c.vlambda,d),c.wlambda+=n*o[5]*a},d.prototype.computeInvC=function(a){return 1/(this.computeGiMGt()+a)}},{"../math/vec2":30,"../objects/Body":31,"../utils/Utils":57}],23:[function(a,b,c){function d(a,b,c){f.call(this,a,b,-c,c),this.contactPointA=e.create(),this.contactPointB=e.create(),this.t=e.create(),this.contactEquations=[],this.shapeA=null,this.shapeB=null,this.frictionCoefficient=.3}var e=a("../math/vec2"),f=a("./Equation");a("../utils/Utils");b.exports=d,d.prototype=new f,d.prototype.constructor=d,d.prototype.setSlipForce=function(a){this.maxForce=a,this.minForce=-a},d.prototype.getSlipForce=function(){return this.maxForce},d.prototype.computeB=function(a,b,c){var d=(this.bodyA,this.bodyB,this.contactPointA),f=this.contactPointB,g=this.t,h=this.G;h[0]=-g[0],h[1]=-g[1],h[2]=-e.crossLength(d,g),h[3]=g[0],h[4]=g[1],h[5]=e.crossLength(f,g);var i=this.computeGW(),j=this.computeGiMf(),k=-i*b-c*j;return k}},{"../math/vec2":30,"../utils/Utils":57,"./Equation":22}],24:[function(a,b,c){function d(a,b,c){c=c||{},e.call(this,a,b,-Number.MAX_VALUE,Number.MAX_VALUE),this.angle=c.angle||0;var d=this.G;d[2]=1,d[5]=-1}var e=a("./Equation"),f=a("../math/vec2");b.exports=d,d.prototype=new e,d.prototype.constructor=d;var g=f.create(),h=f.create(),i=f.fromValues(1,0),j=f.fromValues(0,1);d.prototype.computeGq=function(){return f.rotate(g,i,this.bodyA.angle+this.angle),f.rotate(h,j,this.bodyB.angle),f.dot(g,h)}},{"../math/vec2":30,"./Equation":22}],25:[function(a,b,c){function d(a,b){e.call(this,a,b,-Number.MAX_VALUE,Number.MAX_VALUE),this.relativeVelocity=1,this.ratio=1}var e=a("./Equation");a("../math/vec2");b.exports=d,d.prototype=new e,d.prototype.constructor=d,d.prototype.computeB=function(a,b,c){var d=this.G;d[2]=-1,d[5]=this.ratio;var e=this.computeGiMf(),f=this.computeGW(),g=-f*b-c*e;return g}},{"../math/vec2":30,"./Equation":22}],26:[function(a,b,c){var d=function(){};b.exports=d,d.prototype={constructor:d,on:function(a,b,c){b.context=c||this,void 0===this._listeners&&(this._listeners={});var d=this._listeners;return void 0===d[a]&&(d[a]=[]),-1===d[a].indexOf(b)&&d[a].push(b),this},has:function(a,b){if(void 0===this._listeners)return!1;var c=this._listeners;if(b){if(void 0!==c[a]&&-1!==c[a].indexOf(b))return!0}else if(void 0!==c[a])return!0;return!1},off:function(a,b){if(void 0===this._listeners)return this;var c=this._listeners,d=c[a].indexOf(b);return-1!==d&&c[a].splice(d,1),this},emit:function(a){if(void 0===this._listeners)return this;var b=this._listeners,c=b[a.type];if(void 0!==c){a.target=this;for(var d=0,e=c.length;e>d;d++){var f=c[d];f.call(f.context,a)}}return this}}},{}],27:[function(a,b,c){function d(a,b,c){if(c=c||{},!(a instanceof e&&b instanceof e))throw new Error("First two arguments must be Material instances.");this.id=d.idCounter++,this.materialA=a,this.materialB=b,this.friction="undefined"!=typeof c.friction?Number(c.friction):.3,this.restitution="undefined"!=typeof c.restitution?Number(c.restitution):0,this.stiffness="undefined"!=typeof c.stiffness?Number(c.stiffness):f.DEFAULT_STIFFNESS,this.relaxation="undefined"!=typeof c.relaxation?Number(c.relaxation):f.DEFAULT_RELAXATION,this.frictionStiffness="undefined"!=typeof c.frictionStiffness?Number(c.frictionStiffness):f.DEFAULT_STIFFNESS,this.frictionRelaxation="undefined"!=typeof c.frictionRelaxation?Number(c.frictionRelaxation):f.DEFAULT_RELAXATION,this.surfaceVelocity="undefined"!=typeof c.surfaceVelocity?Number(c.surfaceVelocity):0,this.contactSkinSize=.005}var e=a("./Material"),f=a("../equations/Equation");b.exports=d,d.idCounter=0},{"../equations/Equation":22,"./Material":28}],28:[function(a,b,c){function d(a){this.id=a||d.idCounter++}b.exports=d,d.idCounter=0},{}],29:[function(a,b,c){var d={};d.GetArea=function(a){if(a.length<6)return 0;for(var b=a.length-2,c=0,d=0;b>d;d+=2)c+=(a[d+2]-a[d])*(a[d+1]+a[d+3]);return c+=(a[0]-a[b])*(a[b+1]+a[1]),.5*-c},d.Triangulate=function(a){var b=a.length>>1;if(3>b)return[];for(var c=[],e=[],f=0;b>f;f++)e.push(f);for(var f=0,g=b;g>3;){var h=e[(f+0)%g],i=e[(f+1)%g],j=e[(f+2)%g],k=a[2*h],l=a[2*h+1],m=a[2*i],n=a[2*i+1],o=a[2*j],p=a[2*j+1],q=!1;if(d._convex(k,l,m,n,o,p)){q=!0;for(var r=0;g>r;r++){var s=e[r];if(s!=h&&s!=i&&s!=j&&d._PointInTriangle(a[2*s],a[2*s+1],k,l,m,n,o,p)){q=!1;break}}}if(q)c.push(h,i,j),e.splice((f+1)%g,1),g--,f=0;else if(f++>3*g)break}return c.push(e[0],e[1],e[2]),c},d._PointInTriangle=function(a,b,c,d,e,f,g,h){var i=g-c,j=h-d,k=e-c,l=f-d,m=a-c,n=b-d,o=i*i+j*j,p=i*k+j*l,q=i*m+j*n,r=k*k+l*l,s=k*m+l*n,t=1/(o*r-p*p),u=(r*q-p*s)*t,v=(o*s-p*q)*t;return u>=0&&v>=0&&1>u+v},d._convex=function(a,b,c,d,e,f){return(b-d)*(e-c)+(c-a)*(f-d)>=0},b.exports=d},{}],30:[function(a,b,c){var d=b.exports={},e=a("../utils/Utils");d.crossLength=function(a,b){return a[0]*b[1]-a[1]*b[0]},d.crossVZ=function(a,b,c){return d.rotate(a,b,-Math.PI/2),d.scale(a,a,c),a},d.crossZV=function(a,b,c){return d.rotate(a,c,Math.PI/2),d.scale(a,a,b),a},d.rotate=function(a,b,c){if(0!==c){var d=Math.cos(c),e=Math.sin(c),f=b[0],g=b[1];a[0]=d*f-e*g,a[1]=e*f+d*g}else a[0]=b[0],a[1]=b[1]},d.rotate90cw=function(a,b){var c=b[0],d=b[1];a[0]=d,a[1]=-c},d.toLocalFrame=function(a,b,c,e){d.copy(a,b),d.sub(a,a,c),d.rotate(a,a,-e)},d.toGlobalFrame=function(a,b,c,e){d.copy(a,b),d.rotate(a,a,e),d.add(a,a,c)},d.vectorToLocalFrame=function(a,b,c){d.rotate(a,b,-c)},d.vectorToGlobalFrame=function(a,b,c){d.rotate(a,b,c)},d.centroid=function(a,b,c,e){return d.add(a,b,c),d.add(a,a,e),d.scale(a,a,1/3),a},d.create=function(){var a=new e.ARRAY_TYPE(2);return a[0]=0,a[1]=0,a},d.clone=function(a){var b=new e.ARRAY_TYPE(2);return b[0]=a[0],b[1]=a[1],b},d.fromValues=function(a,b){var c=new e.ARRAY_TYPE(2);return c[0]=a,c[1]=b,c},d.copy=function(a,b){return a[0]=b[0],a[1]=b[1],a},d.set=function(a,b,c){return a[0]=b,a[1]=c,a},d.add=function(a,b,c){return a[0]=b[0]+c[0],a[1]=b[1]+c[1],a},d.subtract=function(a,b,c){return a[0]=b[0]-c[0],a[1]=b[1]-c[1],a},d.sub=d.subtract,d.multiply=function(a,b,c){return a[0]=b[0]*c[0],a[1]=b[1]*c[1],a},d.mul=d.multiply,d.divide=function(a,b,c){return a[0]=b[0]/c[0],a[1]=b[1]/c[1],a},d.div=d.divide,d.scale=function(a,b,c){return a[0]=b[0]*c,a[1]=b[1]*c,a},d.distance=function(a,b){var c=b[0]-a[0],d=b[1]-a[1];return Math.sqrt(c*c+d*d)},d.dist=d.distance,d.squaredDistance=function(a,b){var c=b[0]-a[0],d=b[1]-a[1];return c*c+d*d},d.sqrDist=d.squaredDistance,d.length=function(a){var b=a[0],c=a[1];return Math.sqrt(b*b+c*c)},d.len=d.length,d.squaredLength=function(a){var b=a[0],c=a[1];return b*b+c*c},d.sqrLen=d.squaredLength,d.negate=function(a,b){return a[0]=-b[0],a[1]=-b[1],a},d.normalize=function(a,b){var c=b[0],d=b[1],e=c*c+d*d;return e>0&&(e=1/Math.sqrt(e),a[0]=b[0]*e,a[1]=b[1]*e),a},d.dot=function(a,b){return a[0]*b[0]+a[1]*b[1]},d.str=function(a){return"vec2("+a[0]+", "+a[1]+")"},d.lerp=function(a,b,c,d){var e=b[0],f=b[1];return a[0]=e+d*(c[0]-e),a[1]=f+d*(c[1]-f),a},d.reflect=function(a,b,c){var d=b[0]*c[0]+b[1]*c[1];a[0]=b[0]-2*c[0]*d,a[1]=b[1]-2*c[1]*d},d.getLineSegmentsIntersection=function(a,b,c,e,f){var g=d.getLineSegmentsIntersectionFraction(b,c,e,f);return 0>g?!1:(a[0]=b[0]+g*(c[0]-b[0]),a[1]=b[1]+g*(c[1]-b[1]),!0)},d.getLineSegmentsIntersectionFraction=function(a,b,c,d){var e,f,g=b[0]-a[0],h=b[1]-a[1],i=d[0]-c[0],j=d[1]-c[1];return e=(-h*(a[0]-c[0])+g*(a[1]-c[1]))/(-i*h+g*j),f=(i*(a[1]-c[1])-j*(a[0]-c[0]))/(-i*h+g*j),e>=0&&1>=e&&f>=0&&1>=f?f:-1}},{"../utils/Utils":57}],31:[function(a,b,c){function d(a){a=a||{},k.call(this),this.id=a.id||++d._idCounter,this.world=null,this.shapes=[],this.mass=a.mass||0,this.invMass=0,this.inertia=0,this.invInertia=0,this.invMassSolve=0,this.invInertiaSolve=0,this.fixedRotation=!!a.fixedRotation,this.fixedX=!!a.fixedX,this.fixedY=!!a.fixedY,this.massMultiplier=e.create(),this.position=e.fromValues(0,0),a.position&&e.copy(this.position,a.position),this.interpolatedPosition=e.fromValues(0,0),this.interpolatedAngle=0,this.previousPosition=e.fromValues(0,0),this.previousAngle=0,this.velocity=e.fromValues(0,0),a.velocity&&e.copy(this.velocity,a.velocity),this.vlambda=e.fromValues(0,0),this.wlambda=0,this.angle=a.angle||0,this.angularVelocity=a.angularVelocity||0,this.force=e.create(),a.force&&e.copy(this.force,a.force),this.angularForce=a.angularForce||0,this.damping="number"==typeof a.damping?a.damping:.1,this.angularDamping="number"==typeof a.angularDamping?a.angularDamping:.1,this.type=d.STATIC,"undefined"!=typeof a.type?this.type=a.type:a.mass?this.type=d.DYNAMIC:this.type=d.STATIC,this.boundingRadius=0,this.aabb=new j,this.aabbNeedsUpdate=!0, -this.allowSleep=void 0!==a.allowSleep?a.allowSleep:!0,this.wantsToSleep=!1,this.sleepState=d.AWAKE,this.sleepSpeedLimit=void 0!==a.sleepSpeedLimit?a.sleepSpeedLimit:.2,this.sleepTimeLimit=void 0!==a.sleepTimeLimit?a.sleepTimeLimit:1,this.gravityScale=void 0!==a.gravityScale?a.gravityScale:1,this.collisionResponse=void 0!==a.collisionResponse?a.collisionResponse:!0,this.idleTime=0,this.timeLastSleepy=0,this.ccdSpeedThreshold=void 0!==a.ccdSpeedThreshold?a.ccdSpeedThreshold:-1,this.ccdIterations=void 0!==a.ccdIterations?a.ccdIterations:10,this.concavePath=null,this._wakeUpAfterNarrowphase=!1,this.updateMassProperties()}var e=a("../math/vec2"),f=a("poly-decomp"),g=a("../shapes/Convex"),h=a("../collision/RaycastResult"),i=a("../collision/Ray"),j=a("../collision/AABB"),k=a("../events/EventEmitter");b.exports=d,d.prototype=new k,d.prototype.constructor=d,d._idCounter=0,d.prototype.updateSolveMassProperties=function(){this.sleepState===d.SLEEPING||this.type===d.KINEMATIC?(this.invMassSolve=0,this.invInertiaSolve=0):(this.invMassSolve=this.invMass,this.invInertiaSolve=this.invInertia)},d.prototype.setDensity=function(a){var b=this.getArea();this.mass=b*a,this.updateMassProperties()},d.prototype.getArea=function(){for(var a=0,b=0;bc&&(c=g+h)}this.boundingRadius=c},d.prototype.addShape=function(a,b,c){if(a.body)throw new Error("A shape can only be added to one body.");a.body=this,b?e.copy(a.position,b):e.set(a.position,0,0),a.angle=c||0,this.shapes.push(a),this.updateMassProperties(),this.updateBoundingRadius(),this.aabbNeedsUpdate=!0},d.prototype.removeShape=function(a){var b=this.shapes.indexOf(a);return-1!==b?(this.shapes.splice(b,1),this.aabbNeedsUpdate=!0,a.body=null,!0):!1},d.prototype.updateMassProperties=function(){if(this.type===d.STATIC||this.type===d.KINEMATIC)this.mass=Number.MAX_VALUE,this.invMass=0,this.inertia=Number.MAX_VALUE,this.invInertia=0;else{var a=this.shapes,b=a.length,c=this.mass/b,f=0;if(this.fixedRotation)this.inertia=Number.MAX_VALUE,this.invInertia=0;else{for(var g=0;b>g;g++){var h=a[g],i=e.squaredLength(h.position),j=h.computeMomentOfInertia(c);f+=j+c*i}this.inertia=f,this.invInertia=f>0?1/f:0}this.invMass=1/this.mass,e.set(this.massMultiplier,this.fixedX?0:1,this.fixedY?0:1)}};e.create();d.prototype.applyForce=function(a,b){if(e.add(this.force,this.force,a),b){var c=e.crossLength(b,a);this.angularForce+=c}};var n=e.create(),o=e.create(),p=e.create();d.prototype.applyForceLocal=function(a,b){b=b||p;var c=n,d=o;this.vectorToWorldFrame(c,a),this.vectorToWorldFrame(d,b),this.applyForce(c,d)};var q=e.create();d.prototype.applyImpulse=function(a,b){if(this.type===d.DYNAMIC){var c=q;if(e.scale(c,a,this.invMass),e.multiply(c,this.massMultiplier,c),e.add(this.velocity,c,this.velocity),b){var f=e.crossLength(b,a);f*=this.invInertia,this.angularVelocity+=f}}};var r=e.create(),s=e.create(),t=e.create();d.prototype.applyImpulseLocal=function(a,b){b=b||t;var c=r,d=s;this.vectorToWorldFrame(c,a),this.vectorToWorldFrame(d,b),this.applyImpulse(c,d)},d.prototype.toLocalFrame=function(a,b){e.toLocalFrame(a,b,this.position,this.angle)},d.prototype.toWorldFrame=function(a,b){e.toGlobalFrame(a,b,this.position,this.angle)},d.prototype.vectorToLocalFrame=function(a,b){e.vectorToLocalFrame(a,b,this.angle)},d.prototype.vectorToWorldFrame=function(a,b){e.vectorToGlobalFrame(a,b,this.angle)},d.prototype.fromPolygon=function(a,b){b=b||{};for(var c=this.shapes.length;c>=0;--c)this.removeShape(this.shapes[c]);var d=new f.Polygon;if(d.vertices=a,d.makeCCW(),"number"==typeof b.removeCollinearPoints&&d.removeCollinearPoints(b.removeCollinearPoints),"undefined"==typeof b.skipSimpleCheck&&!d.isSimple())return!1;this.concavePath=d.vertices.slice(0);for(var c=0;c=g?(this.idleTime=0,this.sleepState=d.AWAKE):(this.idleTime+=c,this.sleepState=d.SLEEPY),this.idleTime>this.sleepTimeLimit&&(b?this.wantsToSleep=!0:this.sleep())}},d.prototype.overlaps=function(a){return this.world.overlapKeeper.bodiesAreOverlapping(this,a)};var x=e.create(),y=e.create();d.prototype.integrate=function(a){var b=this.invMass,c=this.force,d=this.position,f=this.velocity;e.copy(this.previousPosition,this.position),this.previousAngle=this.angle,this.fixedRotation||(this.angularVelocity+=this.angularForce*this.invInertia*a),e.scale(x,c,a*b),e.multiply(x,this.massMultiplier,x),e.add(f,x,f),this.integrateToTimeOfImpact(a)||(e.scale(y,f,a),e.add(d,d,y),this.fixedRotation||(this.angle+=this.angularVelocity*a)),this.aabbNeedsUpdate=!0};var z=new h,A=new i({mode:i.ALL}),B=e.create(),C=e.create(),D=e.create(),E=e.create();d.prototype.integrateToTimeOfImpact=function(a){if(this.ccdSpeedThreshold<0||e.squaredLength(this.velocity)=j&&ir;r++){var s=this.radius*(2*r-1);f.set(o,-q,s),f.set(p,q,s),f.toGlobalFrame(o,o,c,d),f.toGlobalFrame(p,p,c,d);var t=f.getLineSegmentsIntersectionFraction(e,g,o,p);if(t>=0&&(f.rotate(n,l,d),f.scale(n,n,2*r-1),b.reportIntersection(a,t,n,-1),a.shouldStop(b)))return}for(var u=Math.pow(this.radius,2)+Math.pow(q,2),r=0;2>r;r++){f.set(o,q*(2*r-1),0),f.toGlobalFrame(o,o,c,d);var v=Math.pow(g[0]-e[0],2)+Math.pow(g[1]-e[1],2),w=2*((g[0]-e[0])*(e[0]-o[0])+(g[1]-e[1])*(e[1]-o[1])),x=Math.pow(e[0]-o[0],2)+Math.pow(e[1]-o[1],2)-Math.pow(this.radius,2),t=Math.pow(w,2)-4*v*x;if(!(0>t))if(0===t){if(f.lerp(m,e,g,t),f.squaredDistance(m,c)>u&&(f.sub(n,m,o),f.normalize(n,n),b.reportIntersection(a,t,n,-1),a.shouldStop(b)))return}else{var y=Math.sqrt(t),z=1/(2*v),A=(-w-y)*z,B=(-w+y)*z;if(A>=0&&1>=A&&(f.lerp(m,e,g,A),f.squaredDistance(m,c)>u&&(f.sub(n,m,o),f.normalize(n,n),b.reportIntersection(a,A,n,-1),a.shouldStop(b))))return;if(B>=0&&1>=B&&(f.lerp(m,e,g,B),f.squaredDistance(m,c)>u&&(f.sub(n,m,o),f.normalize(n,n),b.reportIntersection(a,B,n,-1),a.shouldStop(b))))return}}}},{"../math/vec2":30,"./Shape":45}],39:[function(a,b,c){function d(a){"number"==typeof arguments[0]&&(a={radius:arguments[0]},console.warn("The Circle constructor signature has changed. Please use the following format: new Circle({ radius: 1 })")),a=a||{},this.radius=a.radius||1,a.type=e.CIRCLE,e.call(this,a)}var e=a("./Shape"),f=a("../math/vec2");b.exports=d,d.prototype=new e,d.prototype.constructor=d,d.prototype.computeMomentOfInertia=function(a){var b=this.radius;return a*b*b/2},d.prototype.updateBoundingRadius=function(){this.boundingRadius=this.radius},d.prototype.updateArea=function(){this.area=Math.PI*this.radius*this.radius},d.prototype.computeAABB=function(a,b,c){var d=this.radius;f.set(a.upperBound,d,d),f.set(a.lowerBound,-d,-d),b&&(f.add(a.lowerBound,a.lowerBound,b),f.add(a.upperBound,a.upperBound,b))};var g=f.create(),h=f.create();d.prototype.raycast=function(a,b,c,d){var e=b.from,i=b.to,j=this.radius,k=Math.pow(i[0]-e[0],2)+Math.pow(i[1]-e[1],2),l=2*((i[0]-e[0])*(e[0]-c[0])+(i[1]-e[1])*(e[1]-c[1])),m=Math.pow(e[0]-c[0],2)+Math.pow(e[1]-c[1],2)-Math.pow(j,2),n=Math.pow(l,2)-4*k*m,o=g,p=h;if(!(0>n))if(0===n)f.lerp(o,e,i,n),f.sub(p,o,c),f.normalize(p,p),b.reportIntersection(a,n,p,-1);else{var q=Math.sqrt(n),r=1/(2*k),s=(-l-q)*r,t=(-l+q)*r;if(s>=0&&1>=s&&(f.lerp(o,e,i,s),f.sub(p,o,c),f.normalize(p,p),b.reportIntersection(a,s,p,-1),a.shouldStop(b)))return;t>=0&&1>=t&&(f.lerp(o,e,i,t),f.sub(p,o,c),f.normalize(p,p),b.reportIntersection(a,t,p,-1))}}},{"../math/vec2":30,"./Shape":45}],40:[function(a,b,c){function d(a){Array.isArray(arguments[0])&&(a={vertices:arguments[0],axes:arguments[1]},console.warn("The Convex constructor signature has changed. Please use the following format: new Convex({ vertices: [...], ... })")),a=a||{},this.vertices=[];for(var b=void 0!==a.vertices?a.vertices:[],c=0;ce)&&(e=d),(null===g||g>d)&&(g=d);if(g>e){var j=g;g=e,e=j}f.set(b,g,e)},d.prototype.projectOntoWorldAxis=function(a,b,c,d){var e=i;this.projectOntoLocalAxis(a,d),0!==c?f.rotate(e,a,c):e=a;var g=f.dot(b,e);f.set(d,d[0]+g,d[1]+g)},d.prototype.updateTriangles=function(){this.triangles.length=0;for(var a=[],b=0;bg;e=g,g++){var h=this.vertices[e],i=this.vertices[g],j=Math.abs(f.crossLength(h,i)),k=f.dot(i,i)+f.dot(i,h)+f.dot(h,h);b+=j*k,c+=j}return a/6*(b/c)},d.prototype.updateBoundingRadius=function(){for(var a=this.vertices,b=0,c=0;c!==a.length;c++){var d=f.squaredLength(a[c]);d>b&&(b=d)}this.boundingRadius=Math.sqrt(b)},d.triangleArea=function(a,b,c){return.5*((b[0]-a[0])*(c[1]-a[1])-(c[0]-a[0])*(b[1]-a[1]))},d.prototype.updateArea=function(){this.updateTriangles(),this.area=0;for(var a=this.triangles,b=this.vertices,c=0;c!==a.length;c++){var e=a[c],f=b[e[0]],g=b[e[1]],h=b[e[2]],i=d.triangleArea(f,g,h);this.area+=i}},d.prototype.computeAABB=function(a,b,c){a.setFromPoints(this.vertices,b,c,0)};var o=f.create(),p=f.create(),q=f.create();d.prototype.raycast=function(a,b,c,d){var e=o,g=p,h=q,i=this.vertices;f.toLocalFrame(e,b.from,c,d),f.toLocalFrame(g,b.to,c,d);for(var j=i.length,k=0;j>k&&!a.shouldStop(b);k++){var l=i[k],m=i[(k+1)%j],n=f.getLineSegmentsIntersectionFraction(e,g,l,m);n>=0&&(f.sub(h,m,l),f.rotate(h,h,-Math.PI/2+d),f.normalize(h,h),b.reportIntersection(a,n,h,k))}}},{"../math/polyk":29,"../math/vec2":30,"./Shape":45,"poly-decomp":5}],41:[function(a,b,c){function d(a){if(Array.isArray(arguments[0])){if(a={heights:arguments[0]},"object"==typeof arguments[1])for(var b in arguments[1])a[b]=arguments[1][b];console.warn("The Heightfield constructor signature has changed. Please use the following format: new Heightfield({ heights: [...], ... })")}a=a||{},this.heights=a.heights?a.heights.slice(0):[],this.maxValue=a.maxValue||null,this.minValue=a.minValue||null,this.elementWidth=a.elementWidth||.1,(void 0===a.maxValue||void 0===a.minValue)&&this.updateMaxMinValues(),a.type=e.HEIGHTFIELD,e.call(this,a)}var e=a("./Shape"),f=a("../math/vec2");a("../utils/Utils");b.exports=d,d.prototype=new e,d.prototype.constructor=d,d.prototype.updateMaxMinValues=function(){for(var a=this.heights,b=a[0],c=a[0],d=0;d!==a.length;d++){var e=a[d];e>b&&(b=e),c>e&&(c=e)}this.maxValue=b,this.minValue=c},d.prototype.computeMomentOfInertia=function(a){return Number.MAX_VALUE},d.prototype.updateBoundingRadius=function(){this.boundingRadius=Number.MAX_VALUE},d.prototype.updateArea=function(){for(var a=this.heights,b=0,c=0;cs){var t=r;r=s,s=t}for(var u=0;u=0&&(f.sub(m,o,n),f.rotate(m,m,d+Math.PI/2),f.normalize(m,m),b.reportIntersection(a,v,m,-1),a.shouldStop(b)))return}}},{"../math/vec2":30,"../utils/Utils":57,"./Shape":45}],42:[function(a,b,c){function d(a){"number"==typeof arguments[0]&&(a={length:arguments[0]},console.warn("The Line constructor signature has changed. Please use the following format: new Line({ length: 1, ... })")),a=a||{},this.length=a.length||1,a.type=e.LINE,e.call(this,a)}var e=a("./Shape"),f=a("../math/vec2");b.exports=d,d.prototype=new e,d.prototype.constructor=d,d.prototype.computeMomentOfInertia=function(a){return a*Math.pow(this.length,2)/12},d.prototype.updateBoundingRadius=function(){this.boundingRadius=this.length/2};var g=[f.create(),f.create()];d.prototype.computeAABB=function(a,b,c){var d=this.length/2;f.set(g[0],-d,0),f.set(g[1],d,0),a.setFromPoints(g,b,c,0)};var h=(f.create(),f.create()),i=f.create(),j=f.create(),k=f.fromValues(0,1);d.prototype.raycast=function(a,b,c,d){var e=b.from,g=b.to,l=i,m=j,n=this.length/2;f.set(l,-n,0),f.set(m,n,0),f.toGlobalFrame(l,l,c,d),f.toGlobalFrame(m,m,c,d);var o=f.getLineSegmentsIntersectionFraction(l,m,e,g);if(o>=0){var p=h;f.rotate(p,k,d),b.reportIntersection(a,o,p,-1)}}},{"../math/vec2":30,"./Shape":45}],43:[function(a,b,c){function d(a){a=a||{},a.type=e.PARTICLE,e.call(this,a)}var e=a("./Shape"),f=a("../math/vec2");b.exports=d,d.prototype=new e,d.prototype.constructor=d,d.prototype.computeMomentOfInertia=function(a){return 0},d.prototype.updateBoundingRadius=function(){this.boundingRadius=0},d.prototype.computeAABB=function(a,b,c){f.copy(a.lowerBound,b),f.copy(a.upperBound,b)}},{"../math/vec2":30,"./Shape":45}],44:[function(a,b,c){function d(a){a=a||{},a.type=e.PLANE,e.call(this,a)}var e=a("./Shape"),f=a("../math/vec2");a("../utils/Utils");b.exports=d,d.prototype=new e,d.prototype.constructor=d,d.prototype.computeMomentOfInertia=function(a){return 0},d.prototype.updateBoundingRadius=function(){this.boundingRadius=Number.MAX_VALUE},d.prototype.computeAABB=function(a,b,c){var d=c%(2*Math.PI),e=f.set,g=Number.MAX_VALUE,h=a.lowerBound,i=a.upperBound;0===d?(e(h,-g,-g),e(i,g,0)):d===Math.PI/2?(e(h,0,-g),e(i,g,g)):d===Math.PI?(e(h,-g,0),e(i,g,g)):d===3*Math.PI/2?(e(h,-g,-g),e(i,0,g)):(e(h,-g,-g),e(i,g,g)),f.add(h,h,b),f.add(i,i,b)},d.prototype.updateArea=function(){this.area=Number.MAX_VALUE};var g=f.create(),h=(f.create(),f.create(),f.create()),i=f.create();d.prototype.raycast=function(a,b,c,d){var e=b.from,j=b.to,k=b.direction,l=g,m=h,n=i;f.set(m,0,1),f.rotate(m,m,d),f.sub(n,e,c);var o=f.dot(n,m);f.sub(n,j,c);var p=f.dot(n,m);if(!(o*p>0||f.squaredDistance(e,j)=w*w)break}for(d.updateMultipliers(k,q,1/a),x=0;x!==l;x++){var z=k[x];if(z instanceof i){for(var A=0,B=0;B!==z.contactEquations.length;B++)A+=z.contactEquations[B].multiplier;A*=z.frictionCoefficient/z.contactEquations.length,z.maxForce=A,z.minForce=-A}}}for(c=0;c!==g;c++){for(w=0,x=0;x!==l;x++){v=k[x];var y=d.iterateEquation(x,v,v.epsilon,u,t,q,p,a,c);w+=Math.abs(y)}if(this.usedIterations++,m>=w*w)break}for(r=0;r!==o;r++)n[r].addConstraintVelocity();d.updateMultipliers(k,q,1/a)}},d.updateMultipliers=function(a,b,c){for(var d=a.length;d--;)a[d].multiplier=b[d]*c},d.iterateEquation=function(a,b,c,d,e,f,g,h,i){var j=d[a],k=e[a],l=f[a],m=b.computeGWlambda(),n=b.maxForce,o=b.minForce;g&&(j=0);var p=k*(j-m-c*l),q=l+p;return o*h>q?p=o*h-l:q>n*h&&(p=n*h-l),f[a]+=p,b.addToWlambda(p),p}},{"../equations/FrictionEquation":23,"../math/vec2":30,"../utils/Utils":57,"./Solver":47}],47:[function(a,b,c){function d(a,b){a=a||{},e.call(this),this.type=b,this.equations=[],this.equationSortFunction=a.equationSortFunction||!1}var e=(a("../utils/Utils"),a("../events/EventEmitter"));b.exports=d,d.prototype=new e,d.prototype.constructor=d,d.prototype.solve=function(a,b){throw new Error("Solver.solve should be implemented by subclasses!")};var f={bodies:[]};d.prototype.solveIsland=function(a,b){this.removeAllEquations(),b.equations.length&&(this.addEquations(b.equations),f.bodies.length=0,b.getBodies(f.bodies),f.bodies.length&&this.solve(a,f))},d.prototype.sortEquations=function(){this.equationSortFunction&&this.equations.sort(this.equationSortFunction)},d.prototype.addEquation=function(a){a.enabled&&this.equations.push(a)},d.prototype.addEquations=function(a){for(var b=0,c=a.length;b!==c;b++){var d=a[b];d.enabled&&this.equations.push(d)}},d.prototype.removeEquation=function(a){var b=this.equations.indexOf(a);-1!==b&&this.equations.splice(b,1)},d.prototype.removeAllEquations=function(){this.equations.length=0},d.GS=1,d.ISLAND=2},{"../events/EventEmitter":26,"../utils/Utils":57}],48:[function(a,b,c){function d(){f.apply(this,arguments)}var e=a("../equations/ContactEquation"),f=a("./Pool");b.exports=d,d.prototype=new f,d.prototype.constructor=d,d.prototype.create=function(){return new e},d.prototype.destroy=function(a){return a.bodyA=a.bodyB=null,this}},{"../equations/ContactEquation":21,"./Pool":55}],49:[function(a,b,c){function d(){f.apply(this,arguments)}var e=a("../equations/FrictionEquation"),f=a("./Pool");b.exports=d,d.prototype=new f,d.prototype.constructor=d,d.prototype.create=function(){return new e},d.prototype.destroy=function(a){return a.bodyA=a.bodyB=null,this}},{"../equations/FrictionEquation":23,"./Pool":55}],50:[function(a,b,c){function d(){f.apply(this,arguments)}var e=a("../world/IslandNode"),f=a("./Pool");b.exports=d,d.prototype=new f,d.prototype.constructor=d,d.prototype.create=function(){return new e},d.prototype.destroy=function(a){return a.reset(),this}},{"../world/IslandNode":60,"./Pool":55}],51:[function(a,b,c){function d(){f.apply(this,arguments)}var e=a("../world/Island"),f=a("./Pool");b.exports=d,d.prototype=new f,d.prototype.constructor=d,d.prototype.create=function(){return new e},d.prototype.destroy=function(a){return a.reset(),this}},{"../world/Island":58,"./Pool":55}],52:[function(a,b,c){function d(){this.overlappingShapesLastState=new e,this.overlappingShapesCurrentState=new e,this.recordPool=new f({size:16}),this.tmpDict=new e,this.tmpArray1=[]}var e=a("./TupleDictionary"),f=(a("./OverlapKeeperRecord"),a("./OverlapKeeperRecordPool"));a("./Utils");b.exports=d,d.prototype.tick=function(){for(var a=this.overlappingShapesLastState,b=this.overlappingShapesCurrentState,c=a.keys.length;c--;){var d=a.keys[c],e=a.getByKey(d);b.getByKey(d);e&&this.recordPool.release(e)}a.reset(),a.copy(b),b.reset()},d.prototype.setOverlapping=function(a,b,c,d){var e=(this.overlappingShapesLastState,this.overlappingShapesCurrentState);if(!e.get(b.id,d.id)){var f=this.recordPool.get();f.set(a,b,c,d),e.set(b.id,d.id,f)}},d.prototype.getNewOverlaps=function(a){return this.getDiff(this.overlappingShapesLastState,this.overlappingShapesCurrentState,a)},d.prototype.getEndOverlaps=function(a){return this.getDiff(this.overlappingShapesCurrentState,this.overlappingShapesLastState,a)},d.prototype.bodiesAreOverlapping=function(a,b){for(var c=this.overlappingShapesCurrentState,d=c.keys.length;d--;){var e=c.keys[d],f=c.data[e];if(f.bodyA===a&&f.bodyB===b||f.bodyA===b&&f.bodyB===a)return!0}return!1},d.prototype.getDiff=function(a,b,c){var c=c||[],d=a,e=b;c.length=0;for(var f=e.keys.length;f--;){var g=e.keys[f],h=e.data[g];if(!h)throw new Error("Key "+g+" had no data!");var i=d.data[g];i||c.push(h)}return c},d.prototype.isNewOverlap=function(a,b){var c=0|a.id,d=0|b.id,e=this.overlappingShapesLastState,f=this.overlappingShapesCurrentState;return!e.get(c,d)&&!!f.get(c,d)},d.prototype.getNewBodyOverlaps=function(a){this.tmpArray1.length=0;var b=this.getNewOverlaps(this.tmpArray1);return this.getBodyDiff(b,a)},d.prototype.getEndBodyOverlaps=function(a){this.tmpArray1.length=0;var b=this.getEndOverlaps(this.tmpArray1);return this.getBodyDiff(b,a)},d.prototype.getBodyDiff=function(a,b){b=b||[];for(var c=this.tmpDict,d=a.length;d--;){var e=a[d];c.set(0|e.bodyA.id,0|e.bodyB.id,e)}for(d=c.keys.length;d--;){var e=c.getByKey(c.keys[d]);e&&b.push(e.bodyA,e.bodyB)}return c.reset(),b}},{"./OverlapKeeperRecord":53,"./OverlapKeeperRecordPool":54,"./TupleDictionary":56,"./Utils":57}],53:[function(a,b,c){function d(a,b,c,d){this.shapeA=b,this.shapeB=d,this.bodyA=a,this.bodyB=c}b.exports=d,d.prototype.set=function(a,b,c,e){d.call(this,a,b,c,e)}},{}],54:[function(a,b,c){function d(){f.apply(this,arguments)}var e=a("./OverlapKeeperRecord"),f=a("./Pool");b.exports=d,d.prototype=new f,d.prototype.constructor=d,d.prototype.create=function(){return new e},d.prototype.destroy=function(a){return a.bodyA=a.bodyB=a.shapeA=a.shapeB=null,this}},{"./OverlapKeeperRecord":53,"./Pool":55}],55:[function(a,b,c){function d(a){a=a||{},this.objects=[],void 0!==a.size&&this.resize(a.size)}b.exports=d,d.prototype.resize=function(a){for(var b=this.objects;b.length>a;)b.pop();for(;b.length(0|b)?a<<16|65535&b:b<<16|65535&a)},d.prototype.getByKey=function(a){return a=0|a,this.data[a]},d.prototype.get=function(a,b){return this.data[this.getKey(a,b)]},d.prototype.set=function(a,b,c){if(!c)throw new Error("No data!");var d=this.getKey(a,b);return this.data[d]||this.keys.push(d),this.data[d]=c,d},d.prototype.reset=function(){for(var a=this.data,b=this.keys,c=b.length;c--;)delete a[b[c]];b.length=0},d.prototype.copy=function(a){this.reset(),e.appendArray(this.keys,a.keys);for(var b=a.keys.length;b--;){var c=a.keys[b];this.data[c]=a.data[c]}}},{"./Utils":57}],57:[function(a,b,c){function d(){}b.exports=d,d.appendArray=function(a,b){if(b.length<15e4)a.push.apply(a,b);else for(var c=0,d=b.length;c!==d;++c)a.push(b[c])},d.splice=function(a,b,c){c=c||1;for(var d=b,e=a.length-c;e>d;d++)a[d]=a[d+c];a.length=e},"undefined"!=typeof P2_ARRAY_TYPE?d.ARRAY_TYPE=P2_ARRAY_TYPE:"undefined"!=typeof Float32Array?d.ARRAY_TYPE=Float32Array:d.ARRAY_TYPE=Array,d.extend=function(a,b){for(var c in b)a[c]=b[c]},d.defaults=function(a,b){a=a||{};for(var c in b)c in a||(a[c]=b[c]);return a}},{}],58:[function(a,b,c){function d(){this.equations=[],this.bodies=[]}var e=a("../objects/Body");b.exports=d,d.prototype.reset=function(){this.equations.length=this.bodies.length=0};var f=[];d.prototype.getBodies=function(a){var b=a||[],c=this.equations;f.length=0;for(var d=0;d!==c.length;d++){var e=c[d];-1===f.indexOf(e.bodyA.id)&&(b.push(e.bodyA),f.push(e.bodyA.id)),-1===f.indexOf(e.bodyB.id)&&(b.push(e.bodyB),f.push(e.bodyB.id))}return b},d.prototype.wantsToSleep=function(){for(var a=0;a=a&&c>d;)this.internalStep(a),this.time+=a,this.accumulator-=a,d++;for(var e=this.accumulator%a/a,g=0;g!==this.bodies.length;g++){var h=this.bodies[g];f.lerp(h.interpolatedPosition,h.previousPosition,h.position,e),h.interpolatedAngle=h.previousAngle+e*(h.angle-h.previousAngle)}}};var y=[];d.prototype.internalStep=function(a){this.stepping=!0;var b=this.springs.length,c=this.springs,e=this.bodies,g=this.gravity,h=this.solver,i=this.bodies.length,j=this.broadphase,k=this.narrowphase,l=this.constraints,n=v,o=(f.scale,f.add),p=(f.rotate,this.islandManager);if(this.overlapKeeper.tick(),this.lastTimeStep=a,this.useWorldGravityAsFrictionGravity){var q=f.length(this.gravity);0===q&&this.useFrictionGravityOnZeroGravity||(this.frictionGravity=q)}if(this.applyGravity)for(var r=0;r!==i;r++){var t=e[r],u=t.force;t.type===m.DYNAMIC&&t.sleepState!==m.SLEEPING&&(f.scale(n,g,t.mass*t.gravityScale),o(u,u,n))}if(this.applySpringForces)for(var r=0;r!==b;r++){var w=c[r];w.applyForce()}if(this.applyDamping)for(var r=0;r!==i;r++){var t=e[r];t.type===m.DYNAMIC&&t.applyDamping(a)}for(var x=j.getCollisionPairs(this),z=this.disabledBodyCollisionPairs,r=z.length-2;r>=0;r-=2)for(var A=x.length-2;A>=0;A-=2)(z[r]===x[A]&&z[r+1]===x[A+1]||z[r+1]===x[A]&&z[r]===x[A+1])&&x.splice(A,2);var B=l.length;for(r=0;r!==B;r++){var C=l[r];if(!C.collideConnected)for(var A=x.length-2;A>=0;A-=2)(C.bodyA===x[A]&&C.bodyB===x[A+1]||C.bodyB===x[A]&&C.bodyA===x[A+1])&&x.splice(A,2)}this.postBroadphaseEvent.pairs=x,this.emit(this.postBroadphaseEvent),this.postBroadphaseEvent.pairs=null,k.reset(this);for(var r=0,D=x.length;r!==D;r+=2)for(var E=x[r],F=x[r+1],G=0,H=E.shapes.length;G!==H;G++)for(var I=E.shapes[G],J=I.position,K=I.angle,L=0,M=F.shapes.length;L!==M;L++){var N=F.shapes[L],O=N.position,P=N.angle,Q=this.defaultContactMaterial;if(I.material&&N.material){var R=this.getContactMaterial(I.material,N.material);R&&(Q=R)}this.runNarrowphase(k,E,I,J,K,F,N,O,P,Q,this.frictionGravity)}for(var r=0;r!==i;r++){var S=e[r];S._wakeUpAfterNarrowphase&&(S.wakeUp(),S._wakeUpAfterNarrowphase=!1)}if(this.has("endContact")){this.overlapKeeper.getEndOverlaps(y);for(var T=this.endContactEvent,L=y.length;L--;){var U=y[L];T.shapeA=U.shapeA,T.shapeB=U.shapeB,T.bodyA=U.bodyA,T.bodyB=U.bodyB,this.emit(T)}y.length=0}var V=this.preSolveEvent;V.contactEquations=k.contactEquations,V.frictionEquations=k.frictionEquations,this.emit(V),V.contactEquations=V.frictionEquations=null;var B=l.length;for(r=0;r!==B;r++)l[r].update();if(k.contactEquations.length||k.frictionEquations.length||B)if(this.islandSplit){for(p.equations.length=0,s.appendArray(p.equations,k.contactEquations),s.appendArray(p.equations,k.frictionEquations),r=0;r!==B;r++)s.appendArray(p.equations,l[r].equations);p.split(this);for(var r=0;r!==p.islands.length;r++){var W=p.islands[r];W.equations.length&&h.solveIsland(a,W)}}else{for(h.addEquations(k.contactEquations),h.addEquations(k.frictionEquations),r=0;r!==B;r++)h.addEquations(l[r].equations);this.solveConstraints&&h.solve(a,this),h.removeAllEquations()}for(var r=0;r!==i;r++){var S=e[r];S.integrate(a)}for(var r=0;r!==i;r++)e[r].setZeroForce();if(this.emitImpactEvent&&this.has("impact"))for(var X=this.impactEvent,r=0;r!==k.contactEquations.length;r++){var Y=k.contactEquations[r];Y.firstImpact&&(X.bodyA=Y.bodyA,X.bodyB=Y.bodyB,X.shapeA=Y.shapeA,X.shapeB=Y.shapeB,X.contactEquation=Y,this.emit(X))}if(this.sleepMode===d.BODY_SLEEPING)for(r=0;r!==i;r++)e[r].sleepTick(this.time,!1,a);else if(this.sleepMode===d.ISLAND_SLEEPING&&this.islandSplit){for(r=0;r!==i;r++)e[r].sleepTick(this.time,!0,a);for(var r=0;r0,a.frictionCoefficient=k.friction;var p;p=b.type===m.STATIC||b.type===m.KINEMATIC?g.mass:g.type===m.STATIC||g.type===m.KINEMATIC?b.mass:b.mass*g.mass/(b.mass+g.mass),a.slipForce=k.friction*l*p,a.restitution=k.restitution,a.surfaceVelocity=k.surfaceVelocity,a.frictionStiffness=k.frictionStiffness,a.frictionRelaxation=k.frictionRelaxation,a.stiffness=k.stiffness,a.relaxation=k.relaxation,a.contactSkinSize=k.contactSkinSize,a.enabledEquations=b.collisionResponse&&g.collisionResponse&&c.collisionResponse&&h.collisionResponse;var q=a[c.type|h.type],r=0;if(q){var s=c.sensor||h.sensor,t=a.frictionEquations.length;r=c.type=2*y&&(b._wakeUpAfterNarrowphase=!0)}if(g.allowSleep&&g.type===m.DYNAMIC&&g.sleepState===m.SLEEPING&&b.sleepState===m.AWAKE&&b.type!==m.STATIC){var z=f.squaredLength(b.velocity)+Math.pow(b.angularVelocity,2),A=Math.pow(b.sleepSpeedLimit,2);z>=2*A&&(g._wakeUpAfterNarrowphase=!0)}if(this.overlapKeeper.setOverlapping(b,c,g,h),this.has("beginContact")&&this.overlapKeeper.isNewOverlap(c,h)){var B=this.beginContactEvent;if(B.shapeA=c,B.shapeB=h,B.bodyA=b,B.bodyB=g,B.contactEquations.length=0,"number"==typeof r)for(var C=a.contactEquations.length-r;C1)for(var C=a.frictionEquations.length-u;C=0;b--)this.removeConstraint(a[b]);for(var c=this.bodies,b=c.length-1;b>=0;b--)this.removeBody(c[b]);for(var e=this.springs,b=e.length-1;b>=0;b--)this.removeSpring(e[b]);for(var f=this.contactMaterials,b=f.length-1;b>=0;b--)this.removeContactMaterial(f[b]);d.apply(this)};var z=f.create(),A=(f.fromValues(0,0),f.fromValues(0,0));d.prototype.hitTest=function(a,b,c){c=c||0;var d=new m({position:a}),e=new k,l=a,n=0,o=z,p=A;d.addShape(e);for(var q=this.narrowphase,r=[],s=0,t=b.length;s!==t;s++)for(var u=b[s],v=0,w=u.shapes.length;v!==w;v++){var x=u.shapes[v];f.rotate(o,x.position,u.angle),f.add(o,o,u.position);var y=x.angle+u.angle;(x instanceof g&&q.circleParticle(u,x,o,y,d,e,l,n,!0)||x instanceof h&&q.particleConvex(d,e,l,n,u,x,o,y,!0)||x instanceof i&&q.particlePlane(d,e,l,n,u,x,o,y,!0)||x instanceof j&&q.particleCapsule(d,e,l,n,u,x,o,y,!0)||x instanceof k&&f.squaredLength(f.sub(p,o,a))=0&&b<=this.children.length)return a.parent&&a.parent.removeChild(a),a.parent=this,this.children.splice(b,0,a),this.stage&&a.setStageReference(this.stage),a;throw new Error(a+"addChildAt: The index "+b+" supplied is out of bounds "+this.children.length)},b.DisplayObjectContainer.prototype.swapChildren=function(a,b){if(a!==b){var c=this.getChildIndex(a),d=this.getChildIndex(b);if(0>c||0>d)throw new Error("swapChildren: Both the supplied DisplayObjects must be a child of the caller.");this.children[c]=b,this.children[d]=a; -}},b.DisplayObjectContainer.prototype.getChildIndex=function(a){var b=this.children.indexOf(a);if(-1===b)throw new Error("The supplied DisplayObject must be a child of the caller");return b},b.DisplayObjectContainer.prototype.setChildIndex=function(a,b){if(0>b||b>=this.children.length)throw new Error("The supplied index is out of bounds");var c=this.getChildIndex(a);this.children.splice(c,1),this.children.splice(b,0,a)},b.DisplayObjectContainer.prototype.getChildAt=function(a){if(0>a||a>=this.children.length)throw new Error("getChildAt: Supplied index "+a+" does not exist in the child list, or the supplied DisplayObject must be a child of the caller");return this.children[a]},b.DisplayObjectContainer.prototype.removeChild=function(a){var b=this.children.indexOf(a);if(-1!==b)return this.removeChildAt(b)},b.DisplayObjectContainer.prototype.removeChildAt=function(a){var b=this.getChildAt(a);return this.stage&&b.removeStageReference(),b.parent=void 0,this.children.splice(a,1),b},b.DisplayObjectContainer.prototype.removeChildren=function(a,b){var c=a||0,d="number"==typeof b?b:this.children.length,e=d-c;if(e>0&&d>=e){for(var f=this.children.splice(c,e),g=0;gc?g:c,h=h>d?h:d)}if(!i)return b.EmptyRectangle;var l=this._bounds;return l.x=e,l.y=f,l.width=g-e,l.height=h-f,l},b.DisplayObjectContainer.prototype.getLocalBounds=function(){var a=this.worldTransform;this.worldTransform=b.identityMatrix;for(var c=0;ci){i*=-1;var s=d;d=-e,e=-s}if(0>l){l*=-1;var s=f;f=-g,g=-s}q=i*e+m,o=i*d+m,r=l*g+n,p=l*f+n}else{var t=i*e+k*g+m,u=l*g+j*e+n,v=i*d+k*g+m,w=l*g+j*d+n,x=i*d+k*f+m,y=l*f+j*d+n,z=i*e+k*f+m,A=l*f+j*e+n;q=q>t?t:q,q=q>v?v:q,q=q>x?x:q,q=q>z?z:q,r=r>u?u:r,r=r>w?w:r,r=r>y?y:r,r=r>A?A:r,o=t>o?t:o,o=v>o?v:o,o=x>o?x:o,o=z>o?z:o,p=u>p?u:p,p=w>p?w:p,p=y>p?y:p,p=A>p?A:p}var B=this._bounds;return B.x=q,B.width=o-q,B.y=r,B.height=p-r,this._currentBounds=B,B},b.Sprite.prototype._renderWebGL=function(a,b){if(this.visible&&!(this.alpha<=0)&&this.renderable){var c=this.worldTransform;if(b&&(c=b),this._mask||this._filters){var d=a.spriteBatch;this._filters&&(d.flush(),a.filterManager.pushFilter(this._filterBlock)),this._mask&&(d.stop(),a.maskManager.pushMask(this.mask,a),d.start()),d.render(this);for(var e=0;e>16&255)/255,(a>>8&255)/255,(255&a)/255]},b.rgb2hex=function(a){return(255*a[0]<<16)+(255*a[1]<<8)+255*a[2]},b.canUseNewCanvasBlendModes=function(){if(void 0===document)return!1;var a="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAQAAAABAQMAAADD8p2OAAAAA1BMVEX/",c="AAAACklEQVQI12NgAAAAAgAB4iG8MwAAAABJRU5ErkJggg==",d=new Image;d.src=a+"AP804Oa6"+c;var e=new Image;e.src=a+"/wCKxvRF"+c;var f=b.CanvasPool.create(this,6,1),g=f.getContext("2d");if(g.globalCompositeOperation="multiply",g.drawImage(d,0,0),g.drawImage(e,2,0),!g.getImageData(2,0,1,1))return!1;var h=g.getImageData(2,0,1,1).data;return b.CanvasPool.remove(this),255===h[0]&&0===h[1]&&0===h[2]},b.getNextPowerOfTwo=function(a){if(a>0&&0===(a&a-1))return a;for(var b=1;a>b;)b<<=1;return b},b.isPowerOfTwo=function(a,b){return a>0&&0===(a&a-1)&&b>0&&0===(b&b-1)},b.CanvasPool={create:function(a,c,d){var e,f=b.CanvasPool.getFirst();if(-1===f){var g={parent:a,canvas:document.createElement("canvas")};b.CanvasPool.pool.push(g),e=g.canvas}else b.CanvasPool.pool[f].parent=a,e=b.CanvasPool.pool[f].canvas;return void 0!==c&&(e.width=c,e.height=d),e},getFirst:function(){for(var a=b.CanvasPool.pool,c=0;cd;d+=6,e+=4)this.indices[d+0]=e+0,this.indices[d+1]=e+1,this.indices[d+2]=e+2,this.indices[d+3]=e+0,this.indices[d+4]=e+2,this.indices[d+5]=e+3;this.drawing=!1,this.currentBatchSize=0,this.currentBaseTexture=null,this.dirty=!0,this.textures=[],this.blendModes=[],this.shaders=[],this.sprites=[],this.defaultShader=new b.AbstractFilter(["precision lowp float;","varying vec2 vTextureCoord;","varying vec4 vColor;","uniform sampler2D uSampler;","void main(void) {"," gl_FragColor = texture2D(uSampler, vTextureCoord) * vColor ;","}"])},b.WebGLSpriteBatch.prototype.setContext=function(a){this.gl=a,this.vertexBuffer=a.createBuffer(),this.indexBuffer=a.createBuffer(),a.bindBuffer(a.ELEMENT_ARRAY_BUFFER,this.indexBuffer),a.bufferData(a.ELEMENT_ARRAY_BUFFER,this.indices,a.STATIC_DRAW),a.bindBuffer(a.ARRAY_BUFFER,this.vertexBuffer),a.bufferData(a.ARRAY_BUFFER,this.vertices,a.DYNAMIC_DRAW),this.currentBlendMode=99999;var c=new b.PixiShader(a);c.fragmentSrc=this.defaultShader.fragmentSrc,c.uniforms={},c.init(),this.defaultShader.shaders[a.id]=c},b.WebGLSpriteBatch.prototype.begin=function(a){this.renderSession=a,this.shader=this.renderSession.shaderManager.defaultShader,this.start()},b.WebGLSpriteBatch.prototype.end=function(){this.flush()},b.WebGLSpriteBatch.prototype.render=function(a,b){var c=a.texture,d=a.worldTransform;b&&(d=b),this.currentBatchSize>=this.size&&(this.flush(),this.currentBaseTexture=c.baseTexture);var e=c._uvs;if(e){var f,g,h,i,j=a.anchor.x,k=a.anchor.y;if(c.trim){var l=c.trim;g=l.x-j*l.width,f=g+c.crop.width,i=l.y-k*l.height,h=i+c.crop.height}else f=c.frame.width*(1-j),g=c.frame.width*-j,h=c.frame.height*(1-k),i=c.frame.height*-k;var m=4*this.currentBatchSize*this.vertSize,n=c.baseTexture.resolution,o=d.a/n,p=d.b/n,q=d.c/n,r=d.d/n,s=d.tx,t=d.ty,u=this.colors,v=this.positions;this.renderSession.roundPixels?(v[m]=o*g+q*i+s|0,v[m+1]=r*i+p*g+t|0,v[m+5]=o*f+q*i+s|0,v[m+6]=r*i+p*f+t|0,v[m+10]=o*f+q*h+s|0,v[m+11]=r*h+p*f+t|0,v[m+15]=o*g+q*h+s|0,v[m+16]=r*h+p*g+t|0):(v[m]=o*g+q*i+s,v[m+1]=r*i+p*g+t,v[m+5]=o*f+q*i+s,v[m+6]=r*i+p*f+t,v[m+10]=o*f+q*h+s,v[m+11]=r*h+p*f+t,v[m+15]=o*g+q*h+s,v[m+16]=r*h+p*g+t),v[m+2]=e.x0,v[m+3]=e.y0,v[m+7]=e.x1,v[m+8]=e.y1,v[m+12]=e.x2,v[m+13]=e.y2,v[m+17]=e.x3,v[m+18]=e.y3;var w=a.tint;u[m+4]=u[m+9]=u[m+14]=u[m+19]=(w>>16)+(65280&w)+((255&w)<<16)+(255*a.worldAlpha<<24),this.sprites[this.currentBatchSize++]=a}},b.WebGLSpriteBatch.prototype.renderTilingSprite=function(a){var c=a.tilingTexture;this.currentBatchSize>=this.size&&(this.flush(),this.currentBaseTexture=c.baseTexture),a._uvs||(a._uvs=new b.TextureUvs);var d=a._uvs,e=c.baseTexture.width,f=c.baseTexture.height;a.tilePosition.x%=e*a.tileScaleOffset.x,a.tilePosition.y%=f*a.tileScaleOffset.y;var g=a.tilePosition.x/(e*a.tileScaleOffset.x),h=a.tilePosition.y/(f*a.tileScaleOffset.y),i=a.width/e/(a.tileScale.x*a.tileScaleOffset.x),j=a.height/f/(a.tileScale.y*a.tileScaleOffset.y);d.x0=0-g,d.y0=0-h,d.x1=1*i-g,d.y1=0-h,d.x2=1*i-g,d.y2=1*j-h,d.x3=0-g,d.y3=1*j-h;var k=a.tint,l=(k>>16)+(65280&k)+((255&k)<<16)+(255*a.worldAlpha<<24),m=this.positions,n=this.colors,o=a.width,p=a.height,q=a.anchor.x,r=a.anchor.y,s=o*(1-q),t=o*-q,u=p*(1-r),v=p*-r,w=4*this.currentBatchSize*this.vertSize,x=c.baseTexture.resolution,y=a.worldTransform,z=y.a/x,A=y.b/x,B=y.c/x,C=y.d/x,D=y.tx,E=y.ty;m[w++]=z*t+B*v+D,m[w++]=C*v+A*t+E,m[w++]=d.x0,m[w++]=d.y0,n[w++]=l,m[w++]=z*s+B*v+D,m[w++]=C*v+A*s+E,m[w++]=d.x1,m[w++]=d.y1,n[w++]=l,m[w++]=z*s+B*u+D,m[w++]=C*u+A*s+E,m[w++]=d.x2,m[w++]=d.y2,n[w++]=l,m[w++]=z*t+B*u+D,m[w++]=C*u+A*t+E,m[w++]=d.x3,m[w++]=d.y3,n[w++]=l,this.sprites[this.currentBatchSize++]=a},b.WebGLSpriteBatch.prototype.flush=function(){if(0!==this.currentBatchSize){var a,c=this.gl;if(this.dirty){this.dirty=!1,c.activeTexture(c.TEXTURE0),c.bindBuffer(c.ARRAY_BUFFER,this.vertexBuffer),c.bindBuffer(c.ELEMENT_ARRAY_BUFFER,this.indexBuffer),a=this.defaultShader.shaders[c.id];var d=4*this.vertSize;c.vertexAttribPointer(a.aVertexPosition,2,c.FLOAT,!1,d,0),c.vertexAttribPointer(a.aTextureCoord,2,c.FLOAT,!1,d,8),c.vertexAttribPointer(a.colorAttribute,4,c.UNSIGNED_BYTE,!0,d,16)}if(this.currentBatchSize>.5*this.size)c.bufferSubData(c.ARRAY_BUFFER,0,this.vertices);else{var e=this.positions.subarray(0,4*this.currentBatchSize*this.vertSize);c.bufferSubData(c.ARRAY_BUFFER,0,e)}for(var f,g,h,i,j=0,k=0,l=null,m=this.renderSession.blendModeManager.currentBlendMode,n=null,o=!1,p=!1,q=0,r=this.currentBatchSize;r>q;q++){i=this.sprites[q],f=i.tilingTexture?i.tilingTexture.baseTexture:i.texture.baseTexture,g=i.blendMode,h=i.shader||this.defaultShader,o=m!==g,p=n!==h;var s=f.skipRender;if(s&&i.children.length>0&&(s=!1),(l!==f&&!s||o||p)&&(this.renderBatch(l,j,k),k=q,j=0,l=f,o&&(m=g,this.renderSession.blendModeManager.setBlendMode(m)),p)){n=h,a=n.shaders[c.id],a||(a=new b.PixiShader(c),a.fragmentSrc=n.fragmentSrc,a.uniforms=n.uniforms,a.init(),n.shaders[c.id]=a),this.renderSession.shaderManager.setShader(a),a.dirty&&a.syncUniforms();var t=this.renderSession.projection;c.uniform2f(a.projectionVector,t.x,t.y);var u=this.renderSession.offset;c.uniform2f(a.offsetVector,u.x,u.y)}j++}this.renderBatch(l,j,k),this.currentBatchSize=0}},b.WebGLSpriteBatch.prototype.renderBatch=function(a,b,c){if(0!==b){var d=this.gl;if(a._dirty[d.id]){if(!this.renderSession.renderer.updateTexture(a))return}else d.bindTexture(d.TEXTURE_2D,a._glTextures[d.id]);d.drawElements(d.TRIANGLES,6*b,d.UNSIGNED_SHORT,6*c*2),this.renderSession.drawCount++}},b.WebGLSpriteBatch.prototype.stop=function(){this.flush(),this.dirty=!0},b.WebGLSpriteBatch.prototype.start=function(){this.dirty=!0},b.WebGLSpriteBatch.prototype.destroy=function(){this.vertices=null,this.indices=null,this.gl.deleteBuffer(this.vertexBuffer),this.gl.deleteBuffer(this.indexBuffer),this.currentBaseTexture=null,this.gl=null},b.WebGLFastSpriteBatch=function(a){this.vertSize=10,this.maxSize=6e3,this.size=this.maxSize;var c=4*this.size*this.vertSize,d=6*this.maxSize;this.vertices=new b.Float32Array(c),this.indices=new b.Uint16Array(d),this.vertexBuffer=null,this.indexBuffer=null,this.lastIndexCount=0;for(var e=0,f=0;d>e;e+=6,f+=4)this.indices[e+0]=f+0,this.indices[e+1]=f+1,this.indices[e+2]=f+2,this.indices[e+3]=f+0,this.indices[e+4]=f+2,this.indices[e+5]=f+3;this.drawing=!1,this.currentBatchSize=0,this.currentBaseTexture=null,this.currentBlendMode=0,this.renderSession=null,this.shader=null,this.matrix=null,this.setContext(a)},b.WebGLFastSpriteBatch.prototype.constructor=b.WebGLFastSpriteBatch,b.WebGLFastSpriteBatch.prototype.setContext=function(a){this.gl=a,this.vertexBuffer=a.createBuffer(),this.indexBuffer=a.createBuffer(),a.bindBuffer(a.ELEMENT_ARRAY_BUFFER,this.indexBuffer),a.bufferData(a.ELEMENT_ARRAY_BUFFER,this.indices,a.STATIC_DRAW),a.bindBuffer(a.ARRAY_BUFFER,this.vertexBuffer),a.bufferData(a.ARRAY_BUFFER,this.vertices,a.DYNAMIC_DRAW)},b.WebGLFastSpriteBatch.prototype.begin=function(a,b){this.renderSession=b,this.shader=this.renderSession.shaderManager.fastShader,this.matrix=a.worldTransform.toArray(!0),this.start()},b.WebGLFastSpriteBatch.prototype.end=function(){this.flush()},b.WebGLFastSpriteBatch.prototype.render=function(a){var b=a.children,c=b[0];if(c.texture._uvs){this.currentBaseTexture=c.texture.baseTexture,c.blendMode!==this.renderSession.blendModeManager.currentBlendMode&&(this.flush(),this.renderSession.blendModeManager.setBlendMode(c.blendMode));for(var d=0,e=b.length;e>d;d++)this.renderSprite(b[d]);this.flush()}},b.WebGLFastSpriteBatch.prototype.renderSprite=function(a){if(a.visible&&(a.texture.baseTexture===this.currentBaseTexture||a.texture.baseTexture.skipRender||(this.flush(),this.currentBaseTexture=a.texture.baseTexture,a.texture._uvs))){var b,c,d,e,f,g,h,i,j=this.vertices;if(b=a.texture._uvs,c=a.texture.frame.width,d=a.texture.frame.height,a.texture.trim){var k=a.texture.trim;f=k.x-a.anchor.x*k.width,e=f+a.texture.crop.width,h=k.y-a.anchor.y*k.height,g=h+a.texture.crop.height}else e=a.texture.frame.width*(1-a.anchor.x),f=a.texture.frame.width*-a.anchor.x,g=a.texture.frame.height*(1-a.anchor.y),h=a.texture.frame.height*-a.anchor.y;i=4*this.currentBatchSize*this.vertSize,j[i++]=f,j[i++]=h,j[i++]=a.position.x,j[i++]=a.position.y,j[i++]=a.scale.x,j[i++]=a.scale.y,j[i++]=a.rotation,j[i++]=b.x0,j[i++]=b.y1,j[i++]=a.alpha,j[i++]=e,j[i++]=h,j[i++]=a.position.x,j[i++]=a.position.y,j[i++]=a.scale.x,j[i++]=a.scale.y,j[i++]=a.rotation,j[i++]=b.x1,j[i++]=b.y1,j[i++]=a.alpha,j[i++]=e,j[i++]=g,j[i++]=a.position.x,j[i++]=a.position.y,j[i++]=a.scale.x,j[i++]=a.scale.y,j[i++]=a.rotation,j[i++]=b.x2,j[i++]=b.y2,j[i++]=a.alpha,j[i++]=f,j[i++]=g,j[i++]=a.position.x,j[i++]=a.position.y,j[i++]=a.scale.x,j[i++]=a.scale.y,j[i++]=a.rotation,j[i++]=b.x3,j[i++]=b.y3,j[i++]=a.alpha,this.currentBatchSize++,this.currentBatchSize>=this.size&&this.flush()}},b.WebGLFastSpriteBatch.prototype.flush=function(){if(0!==this.currentBatchSize){var a=this.gl;if(this.currentBaseTexture._glTextures[a.id]||this.renderSession.renderer.updateTexture(this.currentBaseTexture,a),a.bindTexture(a.TEXTURE_2D,this.currentBaseTexture._glTextures[a.id]),this.currentBatchSize>.5*this.size)a.bufferSubData(a.ARRAY_BUFFER,0,this.vertices);else{var b=this.vertices.subarray(0,4*this.currentBatchSize*this.vertSize);a.bufferSubData(a.ARRAY_BUFFER,0,b)}a.drawElements(a.TRIANGLES,6*this.currentBatchSize,a.UNSIGNED_SHORT,0),this.currentBatchSize=0,this.renderSession.drawCount++}},b.WebGLFastSpriteBatch.prototype.stop=function(){this.flush()},b.WebGLFastSpriteBatch.prototype.start=function(){var a=this.gl;a.activeTexture(a.TEXTURE0),a.bindBuffer(a.ARRAY_BUFFER,this.vertexBuffer),a.bindBuffer(a.ELEMENT_ARRAY_BUFFER,this.indexBuffer);var b=this.renderSession.projection;a.uniform2f(this.shader.projectionVector,b.x,b.y),a.uniformMatrix3fv(this.shader.uMatrix,!1,this.matrix);var c=4*this.vertSize;a.vertexAttribPointer(this.shader.aVertexPosition,2,a.FLOAT,!1,c,0),a.vertexAttribPointer(this.shader.aPositionCoord,2,a.FLOAT,!1,c,8),a.vertexAttribPointer(this.shader.aScale,2,a.FLOAT,!1,c,16),a.vertexAttribPointer(this.shader.aRotation,1,a.FLOAT,!1,c,24),a.vertexAttribPointer(this.shader.aTextureCoord,2,a.FLOAT,!1,c,28),a.vertexAttribPointer(this.shader.colorAttribute,1,a.FLOAT,!1,c,36)},b.WebGLFilterManager=function(){this.filterStack=[],this.offsetX=0,this.offsetY=0},b.WebGLFilterManager.prototype.constructor=b.WebGLFilterManager,b.WebGLFilterManager.prototype.setContext=function(a){this.gl=a,this.texturePool=[],this.initShaderBuffers()},b.WebGLFilterManager.prototype.begin=function(a,b){this.renderSession=a,this.defaultShader=a.shaderManager.defaultShader;var c=this.renderSession.projection;this.width=2*c.x,this.height=2*-c.y,this.buffer=b},b.WebGLFilterManager.prototype.pushFilter=function(a){var c=this.gl,d=this.renderSession.projection,e=this.renderSession.offset;a._filterArea=a.target.filterArea||a.target.getBounds(),a._previous_stencil_mgr=this.renderSession.stencilManager,this.renderSession.stencilManager=new b.WebGLStencilManager,this.renderSession.stencilManager.setContext(c),c.disable(c.STENCIL_TEST),this.filterStack.push(a);var f=a.filterPasses[0];this.offsetX+=a._filterArea.x,this.offsetY+=a._filterArea.y;var g=this.texturePool.pop();g?g.resize(this.width*this.renderSession.resolution,this.height*this.renderSession.resolution):g=new b.FilterTexture(this.gl,this.width*this.renderSession.resolution,this.height*this.renderSession.resolution),c.bindTexture(c.TEXTURE_2D,g.texture);var h=a._filterArea,i=f.padding;h.x-=i,h.y-=i,h.width+=2*i,h.height+=2*i,h.x<0&&(h.x=0),h.width>this.width&&(h.width=this.width),h.y<0&&(h.y=0),h.height>this.height&&(h.height=this.height),c.bindFramebuffer(c.FRAMEBUFFER,g.frameBuffer),c.viewport(0,0,h.width*this.renderSession.resolution,h.height*this.renderSession.resolution),d.x=h.width/2,d.y=-h.height/2,e.x=-h.x,e.y=-h.y,c.colorMask(!0,!0,!0,!0),c.clearColor(0,0,0,0),c.clear(c.COLOR_BUFFER_BIT),a._glFilterTexture=g},b.WebGLFilterManager.prototype.popFilter=function(){var a=this.gl,c=this.filterStack.pop(),d=c._filterArea,e=c._glFilterTexture,f=this.renderSession.projection,g=this.renderSession.offset;if(c.filterPasses.length>1){a.viewport(0,0,d.width*this.renderSession.resolution,d.height*this.renderSession.resolution),a.bindBuffer(a.ARRAY_BUFFER,this.vertexBuffer),this.vertexArray[0]=0,this.vertexArray[1]=d.height,this.vertexArray[2]=d.width,this.vertexArray[3]=d.height,this.vertexArray[4]=0,this.vertexArray[5]=0,this.vertexArray[6]=d.width,this.vertexArray[7]=0,a.bufferSubData(a.ARRAY_BUFFER,0,this.vertexArray),a.bindBuffer(a.ARRAY_BUFFER,this.uvBuffer),this.uvArray[2]=d.width/this.width,this.uvArray[5]=d.height/this.height,this.uvArray[6]=d.width/this.width,this.uvArray[7]=d.height/this.height,a.bufferSubData(a.ARRAY_BUFFER,0,this.uvArray);var h=e,i=this.texturePool.pop();i||(i=new b.FilterTexture(this.gl,this.width*this.renderSession.resolution,this.height*this.renderSession.resolution)),i.resize(this.width*this.renderSession.resolution,this.height*this.renderSession.resolution),a.bindFramebuffer(a.FRAMEBUFFER,i.frameBuffer),a.clear(a.COLOR_BUFFER_BIT),a.disable(a.BLEND);for(var j=0;j0?a.enable(a.STENCIL_TEST):a.disable(a.STENCIL_TEST),this.applyFilterPass(m,d,n,o),this.texturePool.push(e),c._glFilterTexture=null},b.WebGLFilterManager.prototype.applyFilterPass=function(a,c,d,e){var f=this.gl,g=a.shaders[f.id];g||(g=new b.PixiShader(f),g.fragmentSrc=a.fragmentSrc,g.uniforms=a.uniforms,g.init(),a.shaders[f.id]=g),this.renderSession.shaderManager.setShader(g),f.uniform2f(g.projectionVector,d/2,-e/2),f.uniform2f(g.offsetVector,0,0),a.uniforms.dimensions&&(a.uniforms.dimensions.value[0]=this.width,a.uniforms.dimensions.value[1]=this.height,a.uniforms.dimensions.value[2]=this.vertexArray[0],a.uniforms.dimensions.value[3]=this.vertexArray[5]),g.syncUniforms(),f.bindBuffer(f.ARRAY_BUFFER,this.vertexBuffer),f.vertexAttribPointer(g.aVertexPosition,2,f.FLOAT,!1,0,0),f.bindBuffer(f.ARRAY_BUFFER,this.uvBuffer),f.vertexAttribPointer(g.aTextureCoord,2,f.FLOAT,!1,0,0),f.bindBuffer(f.ARRAY_BUFFER,this.colorBuffer),f.vertexAttribPointer(g.colorAttribute,2,f.FLOAT,!1,0,0),f.bindBuffer(f.ELEMENT_ARRAY_BUFFER,this.indexBuffer),f.drawElements(f.TRIANGLES,6,f.UNSIGNED_SHORT,0),this.renderSession.drawCount++},b.WebGLFilterManager.prototype.initShaderBuffers=function(){var a=this.gl;this.vertexBuffer=a.createBuffer(),this.uvBuffer=a.createBuffer(),this.colorBuffer=a.createBuffer(),this.indexBuffer=a.createBuffer(),this.vertexArray=new b.Float32Array([0,0,1,0,0,1,1,1]),a.bindBuffer(a.ARRAY_BUFFER,this.vertexBuffer),a.bufferData(a.ARRAY_BUFFER,this.vertexArray,a.STATIC_DRAW),this.uvArray=new b.Float32Array([0,0,1,0,0,1,1,1]),a.bindBuffer(a.ARRAY_BUFFER,this.uvBuffer),a.bufferData(a.ARRAY_BUFFER,this.uvArray,a.STATIC_DRAW),this.colorArray=new b.Float32Array([1,16777215,1,16777215,1,16777215,1,16777215]),a.bindBuffer(a.ARRAY_BUFFER,this.colorBuffer),a.bufferData(a.ARRAY_BUFFER,this.colorArray,a.STATIC_DRAW),a.bindBuffer(a.ELEMENT_ARRAY_BUFFER,this.indexBuffer),a.bufferData(a.ELEMENT_ARRAY_BUFFER,new Uint16Array([0,1,2,1,3,2]),a.STATIC_DRAW)},b.WebGLFilterManager.prototype.destroy=function(){var a=this.gl;this.filterStack=null,this.offsetX=0,this.offsetY=0;for(var b=0;b=0;a--){var c=this._glTextures[a],d=b.glContexts[a];d&&c&&d.deleteTexture(c)}this._glTextures.length=0,this.dirty()},b.BaseTexture.fromImage=function(a,c,d){var e=b.BaseTextureCache[a];if(void 0===c&&-1===a.indexOf("data:")&&(c=!0),!e){var f=new Image;c&&(f.crossOrigin=""),f.src=a,e=new b.BaseTexture(f,d),e.imageUrl=a,b.BaseTextureCache[a]=e,-1!==a.indexOf(b.RETINA_PREFIX+".")&&(e.resolution=2)}return e},b.BaseTexture.fromCanvas=function(a,c){a._pixiId||(a._pixiId="canvas_"+b.TextureCacheIdGenerator++),0===a.width&&(a.width=1),0===a.height&&(a.height=1);var d=b.BaseTextureCache[a._pixiId];return d||(d=new b.BaseTexture(a,c),b.BaseTextureCache[a._pixiId]=d),d},b.TextureCache={},b.FrameCache={},b.TextureSilentFail=!1,b.TextureCacheIdGenerator=0,b.Texture=function(a,c,d,e){this.noFrame=!1,c||(this.noFrame=!0,c=new b.Rectangle(0,0,1,1)),a instanceof b.Texture&&(a=a.baseTexture),this.baseTexture=a,this.frame=c,this.trim=e,this.valid=!1,this.isTiling=!1,this.requiresUpdate=!1,this.requiresReTint=!1,this._uvs=null,this.width=0,this.height=0,this.crop=d||new b.Rectangle(0,0,1,1),a.hasLoaded&&(this.noFrame&&(c=new b.Rectangle(0,0,a.width,a.height)),this.setFrame(c))},b.Texture.prototype.constructor=b.Texture,b.Texture.prototype.onBaseTextureLoaded=function(){var a=this.baseTexture;this.noFrame&&(this.frame=new b.Rectangle(0,0,a.width,a.height)),this.setFrame(this.frame)},b.Texture.prototype.destroy=function(a){a&&this.baseTexture.destroy(),this.valid=!1},b.Texture.prototype.setFrame=function(a){if(this.noFrame=!1,this.frame=a,this.width=a.width,this.height=a.height,this.crop.x=a.x,this.crop.y=a.y,this.crop.width=a.width,this.crop.height=a.height,!this.trim&&(a.x+a.width>this.baseTexture.width||a.y+a.height>this.baseTexture.height)){if(!b.TextureSilentFail)throw new Error("Texture Error: frame does not fit inside the base Texture dimensions "+this);return void(this.valid=!1)}this.valid=a&&a.width&&a.height&&this.baseTexture.source&&this.baseTexture.hasLoaded,this.trim&&(this.width=this.trim.width,this.height=this.trim.height, -this.frame.width=this.trim.width,this.frame.height=this.trim.height),this.valid&&this._updateUvs()},b.Texture.prototype._updateUvs=function(){this._uvs||(this._uvs=new b.TextureUvs);var a=this.crop,c=this.baseTexture.width,d=this.baseTexture.height;this._uvs.x0=a.x/c,this._uvs.y0=a.y/d,this._uvs.x1=(a.x+a.width)/c,this._uvs.y1=a.y/d,this._uvs.x2=(a.x+a.width)/c,this._uvs.y2=(a.y+a.height)/d,this._uvs.x3=a.x/c,this._uvs.y3=(a.y+a.height)/d},b.Texture.fromImage=function(a,c,d){var e=b.TextureCache[a];return e||(e=new b.Texture(b.BaseTexture.fromImage(a,c,d)),b.TextureCache[a]=e),e},b.Texture.fromFrame=function(a){var c=b.TextureCache[a];if(!c)throw new Error('The frameId "'+a+'" does not exist in the texture cache ');return c},b.Texture.fromCanvas=function(a,c){var d=b.BaseTexture.fromCanvas(a,c);return new b.Texture(d)},b.Texture.addTextureToCache=function(a,c){b.TextureCache[c]=a},b.Texture.removeTextureFromCache=function(a){var c=b.TextureCache[a];return delete b.TextureCache[a],delete b.BaseTextureCache[a],c},b.TextureUvs=function(){this.x0=0,this.y0=0,this.x1=0,this.y1=0,this.x2=0,this.y2=0,this.x3=0,this.y3=0},b.RenderTexture=function(a,c,d,e,f){if(this.width=a||100,this.height=c||100,this.resolution=f||1,this.frame=new b.Rectangle(0,0,this.width*this.resolution,this.height*this.resolution),this.crop=new b.Rectangle(0,0,this.width*this.resolution,this.height*this.resolution),this.baseTexture=new b.BaseTexture,this.baseTexture.width=this.width*this.resolution,this.baseTexture.height=this.height*this.resolution,this.baseTexture._glTextures=[],this.baseTexture.resolution=this.resolution,this.baseTexture.scaleMode=e||b.scaleModes.DEFAULT,this.baseTexture.hasLoaded=!0,b.Texture.call(this,this.baseTexture,new b.Rectangle(0,0,this.width*this.resolution,this.height*this.resolution)),this.renderer=d||b.defaultRenderer,this.renderer.type===b.WEBGL_RENDERER){var g=this.renderer.gl;this.baseTexture._dirty[g.id]=!1,this.textureBuffer=new b.FilterTexture(g,this.width,this.height,this.baseTexture.scaleMode),this.baseTexture._glTextures[g.id]=this.textureBuffer.texture,this.render=this.renderWebGL,this.projection=new b.Point(.5*this.width,.5*-this.height)}else this.render=this.renderCanvas,this.textureBuffer=new b.CanvasBuffer(this.width*this.resolution,this.height*this.resolution),this.baseTexture.source=this.textureBuffer.canvas;this.valid=!0,this.tempMatrix=new Phaser.Matrix,this._updateUvs()},b.RenderTexture.prototype=Object.create(b.Texture.prototype),b.RenderTexture.prototype.constructor=b.RenderTexture,b.RenderTexture.prototype.resize=function(a,c,d){(a!==this.width||c!==this.height)&&(this.valid=a>0&&c>0,this.width=a,this.height=c,this.frame.width=this.crop.width=a*this.resolution,this.frame.height=this.crop.height=c*this.resolution,d&&(this.baseTexture.width=this.width*this.resolution,this.baseTexture.height=this.height*this.resolution),this.renderer.type===b.WEBGL_RENDERER&&(this.projection.x=this.width/2,this.projection.y=-this.height/2),this.valid&&this.textureBuffer.resize(this.width,this.height))},b.RenderTexture.prototype.clear=function(){this.valid&&(this.renderer.type===b.WEBGL_RENDERER&&this.renderer.gl.bindFramebuffer(this.renderer.gl.FRAMEBUFFER,this.textureBuffer.frameBuffer),this.textureBuffer.clear())},b.RenderTexture.prototype.renderWebGL=function(a,b,c){if(this.valid&&0!==a.alpha){var d=a.worldTransform;d.identity(),d.translate(0,2*this.projection.y),b&&d.append(b),d.scale(1,-1);for(var e=0;ea;a++)this.shaders[a].dirty=!0},b.Strip=function(a){b.DisplayObjectContainer.call(this),this.texture=a,this.uvs=new b.Float32Array([0,1,1,1,1,0,0,1]),this.vertices=new b.Float32Array([0,0,100,0,100,100,0,100]),this.colors=new b.Float32Array([1,1,1,1]),this.indices=new b.Uint16Array([0,1,2,3]),this.dirty=!0,this.blendMode=b.blendModes.NORMAL,this.canvasPadding=0,this.drawMode=b.Strip.DrawModes.TRIANGLE_STRIP},b.Strip.prototype=Object.create(b.DisplayObjectContainer.prototype),b.Strip.prototype.constructor=b.Strip,b.Strip.prototype._renderWebGL=function(a){!this.visible||this.alpha<=0||(a.spriteBatch.stop(),this._vertexBuffer||this._initWebGL(a),a.shaderManager.setShader(a.shaderManager.stripShader),this._renderStrip(a),a.spriteBatch.start())},b.Strip.prototype._initWebGL=function(a){var b=a.gl;this._vertexBuffer=b.createBuffer(),this._indexBuffer=b.createBuffer(),this._uvBuffer=b.createBuffer(),this._colorBuffer=b.createBuffer(),b.bindBuffer(b.ARRAY_BUFFER,this._vertexBuffer),b.bufferData(b.ARRAY_BUFFER,this.vertices,b.DYNAMIC_DRAW),b.bindBuffer(b.ARRAY_BUFFER,this._uvBuffer),b.bufferData(b.ARRAY_BUFFER,this.uvs,b.STATIC_DRAW),b.bindBuffer(b.ARRAY_BUFFER,this._colorBuffer),b.bufferData(b.ARRAY_BUFFER,this.colors,b.STATIC_DRAW),b.bindBuffer(b.ELEMENT_ARRAY_BUFFER,this._indexBuffer),b.bufferData(b.ELEMENT_ARRAY_BUFFER,this.indices,b.STATIC_DRAW)},b.Strip.prototype._renderStrip=function(a){var c=a.gl,d=a.projection,e=a.offset,f=a.shaderManager.stripShader,g=this.drawMode===b.Strip.DrawModes.TRIANGLE_STRIP?c.TRIANGLE_STRIP:c.TRIANGLES;a.blendModeManager.setBlendMode(this.blendMode),c.uniformMatrix3fv(f.translationMatrix,!1,this.worldTransform.toArray(!0)),c.uniform2f(f.projectionVector,d.x,-d.y),c.uniform2f(f.offsetVector,-e.x,-e.y),c.uniform1f(f.alpha,this.worldAlpha),this.dirty?(this.dirty=!1,c.bindBuffer(c.ARRAY_BUFFER,this._vertexBuffer),c.bufferData(c.ARRAY_BUFFER,this.vertices,c.STATIC_DRAW),c.vertexAttribPointer(f.aVertexPosition,2,c.FLOAT,!1,0,0),c.bindBuffer(c.ARRAY_BUFFER,this._uvBuffer),c.bufferData(c.ARRAY_BUFFER,this.uvs,c.STATIC_DRAW),c.vertexAttribPointer(f.aTextureCoord,2,c.FLOAT,!1,0,0),c.activeTexture(c.TEXTURE0),this.texture.baseTexture._dirty[c.id]?a.renderer.updateTexture(this.texture.baseTexture):c.bindTexture(c.TEXTURE_2D,this.texture.baseTexture._glTextures[c.id]),c.bindBuffer(c.ELEMENT_ARRAY_BUFFER,this._indexBuffer),c.bufferData(c.ELEMENT_ARRAY_BUFFER,this.indices,c.STATIC_DRAW)):(c.bindBuffer(c.ARRAY_BUFFER,this._vertexBuffer),c.bufferSubData(c.ARRAY_BUFFER,0,this.vertices),c.vertexAttribPointer(f.aVertexPosition,2,c.FLOAT,!1,0,0),c.bindBuffer(c.ARRAY_BUFFER,this._uvBuffer),c.vertexAttribPointer(f.aTextureCoord,2,c.FLOAT,!1,0,0),c.activeTexture(c.TEXTURE0),this.texture.baseTexture._dirty[c.id]?a.renderer.updateTexture(this.texture.baseTexture):c.bindTexture(c.TEXTURE_2D,this.texture.baseTexture._glTextures[c.id]),c.bindBuffer(c.ELEMENT_ARRAY_BUFFER,this._indexBuffer)),c.drawElements(g,this.indices.length,c.UNSIGNED_SHORT,0)},b.Strip.prototype._renderCanvas=function(a){var c=a.context,d=this.worldTransform,e=d.tx*a.resolution+a.shakeX,f=d.ty*a.resolution+a.shakeY;a.roundPixels?c.setTransform(d.a,d.b,d.c,d.d,0|e,0|f):c.setTransform(d.a,d.b,d.c,d.d,e,f),this.drawMode===b.Strip.DrawModes.TRIANGLE_STRIP?this._renderCanvasTriangleStrip(c):this._renderCanvasTriangles(c)},b.Strip.prototype._renderCanvasTriangleStrip=function(a){var b=this.vertices,c=this.uvs,d=b.length/2;this.count++;for(var e=0;d-2>e;e++){var f=2*e;this._renderCanvasDrawTriangle(a,b,c,f,f+2,f+4)}},b.Strip.prototype._renderCanvasTriangles=function(a){var b=this.vertices,c=this.uvs,d=this.indices,e=d.length;this.count++;for(var f=0;e>f;f+=3){var g=2*d[f],h=2*d[f+1],i=2*d[f+2];this._renderCanvasDrawTriangle(a,b,c,g,h,i)}},b.Strip.prototype._renderCanvasDrawTriangle=function(a,b,c,d,e,f){var g=this.texture.baseTexture.source,h=this.texture.width,i=this.texture.height,j=b[d],k=b[e],l=b[f],m=b[d+1],n=b[e+1],o=b[f+1],p=c[d]*h,q=c[e]*h,r=c[f]*h,s=c[d+1]*i,t=c[e+1]*i,u=c[f+1]*i;if(this.canvasPadding>0){var v=this.canvasPadding/this.worldTransform.a,w=this.canvasPadding/this.worldTransform.d,x=(j+k+l)/3,y=(m+n+o)/3,z=j-x,A=m-y,B=Math.sqrt(z*z+A*A);j=x+z/B*(B+v),m=y+A/B*(B+w),z=k-x,A=n-y,B=Math.sqrt(z*z+A*A),k=x+z/B*(B+v),n=y+A/B*(B+w),z=l-x,A=o-y,B=Math.sqrt(z*z+A*A),l=x+z/B*(B+v),o=y+A/B*(B+w)}a.save(),a.beginPath(),a.moveTo(j,m),a.lineTo(k,n),a.lineTo(l,o),a.closePath(),a.clip();var C=p*t+s*r+q*u-t*r-s*q-p*u,D=j*t+s*l+k*u-t*l-s*k-j*u,E=p*k+j*r+q*l-k*r-j*q-p*l,F=p*t*l+s*k*r+j*q*u-j*t*r-s*q*l-p*k*u,G=m*t+s*o+n*u-t*o-s*n-m*u,H=p*n+m*r+q*o-n*r-m*q-p*o,I=p*t*o+s*n*r+m*q*u-m*t*r-s*q*o-p*n*u;a.transform(D/C,G/C,E/C,H/C,F/C,I/C),a.drawImage(g,0,0),a.restore()},b.Strip.prototype.renderStripFlat=function(a){var b=this.context,c=a.vertices,d=c.length/2;this.count++,b.beginPath();for(var e=1;d-2>e;e++){var f=2*e,g=c[f],h=c[f+2],i=c[f+4],j=c[f+1],k=c[f+3],l=c[f+5];b.moveTo(g,j),b.lineTo(h,k),b.lineTo(i,l)}b.fillStyle="#FF0000",b.fill(),b.closePath()},b.Strip.prototype.onTextureUpdate=function(){this.updateFrame=!0},b.Strip.prototype.getBounds=function(a){for(var c=a||this.worldTransform,d=c.a,e=c.b,f=c.c,g=c.d,h=c.tx,i=c.ty,j=-(1/0),k=-(1/0),l=1/0,m=1/0,n=this.vertices,o=0,p=n.length;p>o;o+=2){var q=n[o],r=n[o+1],s=d*q+f*r+h,t=g*r+e*q+i;l=l>s?s:l,m=m>t?t:m,j=s>j?s:j,k=t>k?t:k}if(l===-(1/0)||k===1/0)return b.EmptyRectangle;var u=this._bounds;return u.x=l,u.width=j-l,u.y=m,u.height=k-m,this._currentBounds=u,u},b.Strip.DrawModes={TRIANGLE_STRIP:0,TRIANGLES:1},b.Rope=function(a,c){b.Strip.call(this,a),this.points=c,this.vertices=new b.Float32Array(4*c.length),this.uvs=new b.Float32Array(4*c.length),this.colors=new b.Float32Array(2*c.length),this.indices=new b.Uint16Array(2*c.length),this.refresh()},b.Rope.prototype=Object.create(b.Strip.prototype),b.Rope.prototype.constructor=b.Rope,b.Rope.prototype.refresh=function(){var a=this.points;if(!(a.length<1)){var b=this.uvs,c=a[0],d=this.indices,e=this.colors;this.count-=.2,b[0]=0,b[1]=0,b[2]=0,b[3]=1,e[0]=1,e[1]=1,d[0]=0,d[1]=1;for(var f,g,h,i=a.length,j=1;i>j;j++)f=a[j],g=4*j,h=j/(i-1),j%2?(b[g]=h,b[g+1]=0,b[g+2]=h,b[g+3]=1):(b[g]=h,b[g+1]=0,b[g+2]=h,b[g+3]=1),g=2*j,e[g]=1,e[g+1]=1,g=2*j,d[g]=g,d[g+1]=g+1,c=f}},b.Rope.prototype.updateTransform=function(){var a=this.points;if(!(a.length<1)){var c,d=a[0],e={x:0,y:0};this.count-=.2;for(var f,g,h,i,j,k=this.vertices,l=a.length,m=0;l>m;m++)f=a[m],g=4*m,c=m1&&(h=1),i=Math.sqrt(e.x*e.x+e.y*e.y),j=this.texture.height/2,e.x/=i,e.y/=i,e.x*=j,e.y*=j,k[g]=f.x+e.x,k[g+1]=f.y+e.y,k[g+2]=f.x-e.x,k[g+3]=f.y-e.y,d=f;b.DisplayObjectContainer.prototype.updateTransform.call(this)}},b.Rope.prototype.setTexture=function(a){this.texture=a},b.TilingSprite=function(a,c,d){b.Sprite.call(this,a),this._width=c||128,this._height=d||128,this.tileScale=new b.Point(1,1),this.tileScaleOffset=new b.Point(1,1),this.tilePosition=new b.Point,this.renderable=!0,this.tint=16777215,this.textureDebug=!1,this.blendMode=b.blendModes.NORMAL,this.canvasBuffer=null,this.tilingTexture=null,this.tilePattern=null,this.refreshTexture=!0,this.frameWidth=0,this.frameHeight=0},b.TilingSprite.prototype=Object.create(b.Sprite.prototype),b.TilingSprite.prototype.constructor=b.TilingSprite,b.TilingSprite.prototype.setTexture=function(a){this.texture!==a&&(this.texture=a,this.refreshTexture=!0,this.cachedTint=16777215)},b.TilingSprite.prototype._renderWebGL=function(a){if(this.visible&&this.renderable&&0!==this.alpha){if(this._mask&&(a.spriteBatch.stop(),a.maskManager.pushMask(this.mask,a),a.spriteBatch.start()),this._filters&&(a.spriteBatch.flush(),a.filterManager.pushFilter(this._filterBlock)),this.refreshTexture){if(this.generateTilingTexture(!0,a),!this.tilingTexture)return;this.tilingTexture.needsUpdate&&(a.renderer.updateTexture(this.tilingTexture.baseTexture),this.tilingTexture.needsUpdate=!1)}a.spriteBatch.renderTilingSprite(this);for(var b=0;bn?n:x,x=x>p?p:x,x=x>r?r:x,x=x>t?t:x,y=y>o?o:y,y=y>q?q:y,y=y>s?s:y,y=y>u?u:y,v=n>v?n:v,v=p>v?p:v,v=r>v?r:v,v=t>v?t:v,w=o>w?o:w,w=q>w?q:w,w=s>w?s:w,w=u>w?u:w;var z=this._bounds;return z.x=x,z.width=v-x,z.y=y,z.height=w-y,this._currentBounds=z,z},b.TilingSprite.prototype.destroy=function(){b.Sprite.prototype.destroy.call(this),this.canvasBuffer&&(this.canvasBuffer.destroy(),this.canvasBuffer=null),this.tileScale=null,this.tileScaleOffset=null,this.tilePosition=null,this.tilingTexture&&(this.tilingTexture.destroy(!0),this.tilingTexture=null)},Object.defineProperty(b.TilingSprite.prototype,"width",{get:function(){return this._width},set:function(a){this._width=a}}),Object.defineProperty(b.TilingSprite.prototype,"height",{get:function(){return this._height},set:function(a){this._height=a}}),"undefined"!=typeof exports?("undefined"!=typeof module&&module.exports&&(exports=module.exports=b),exports.PIXI=b):"undefined"!=typeof define&&define.amd?define("PIXI",function(){return a.PIXI=b}()):a.PIXI=b,b}.call(this),function(){function a(a,b){this._scaleFactor=a,this._deltaMode=b,this.originalEvent=null}var b=this,c=c||{VERSION:"2.5.0",GAMES:[],AUTO:0,CANVAS:1,WEBGL:2,HEADLESS:3,NONE:0,LEFT:1,RIGHT:2,UP:3,DOWN:4,SPRITE:0,BUTTON:1,IMAGE:2,GRAPHICS:3,TEXT:4,TILESPRITE:5,BITMAPTEXT:6,GROUP:7,RENDERTEXTURE:8,TILEMAP:9,TILEMAPLAYER:10,EMITTER:11,POLYGON:12,BITMAPDATA:13,CANVAS_FILTER:14,WEBGL_FILTER:15,ELLIPSE:16,SPRITEBATCH:17,RETROFONT:18,POINTER:19,ROPE:20,CIRCLE:21,RECTANGLE:22,LINE:23,MATRIX:24,POINT:25,ROUNDEDRECTANGLE:26,CREATURE:27,VIDEO:28,PENDING_ATLAS:-1,HORIZONTAL:0,VERTICAL:1,LANDSCAPE:0,PORTRAIT:1,ANGLE_UP:270,ANGLE_DOWN:90,ANGLE_LEFT:180,ANGLE_RIGHT:0,ANGLE_NORTH_EAST:315,ANGLE_NORTH_WEST:225,ANGLE_SOUTH_EAST:45,ANGLE_SOUTH_WEST:135,TOP_LEFT:0,TOP_CENTER:1,TOP_RIGHT:2,LEFT_TOP:3,LEFT_CENTER:4,LEFT_BOTTOM:5,CENTER:6,RIGHT_TOP:7,RIGHT_CENTER:8,RIGHT_BOTTOM:9,BOTTOM_LEFT:10,BOTTOM_CENTER:11,BOTTOM_RIGHT:12,blendModes:{NORMAL:0,ADD:1,MULTIPLY:2,SCREEN:3,OVERLAY:4,DARKEN:5,LIGHTEN:6,COLOR_DODGE:7,COLOR_BURN:8,HARD_LIGHT:9,SOFT_LIGHT:10,DIFFERENCE:11,EXCLUSION:12,HUE:13,SATURATION:14,COLOR:15,LUMINOSITY:16},scaleModes:{DEFAULT:0,LINEAR:0,NEAREST:1},PIXI:PIXI||{}};if(Math.trunc||(Math.trunc=function(a){return 0>a?Math.ceil(a):Math.floor(a)}),Function.prototype.bind||(Function.prototype.bind=function(){var a=Array.prototype.slice;return function(b){function c(){var f=e.concat(a.call(arguments));d.apply(this instanceof c?this:b,f)}var d=this,e=a.call(arguments,1);if("function"!=typeof d)throw new TypeError;return c.prototype=function f(a){return a&&(f.prototype=a),this instanceof f?void 0:new f}(d.prototype),c}}()),Array.isArray||(Array.isArray=function(a){return"[object Array]"==Object.prototype.toString.call(a)}),Array.prototype.forEach||(Array.prototype.forEach=function(a){"use strict";if(void 0===this||null===this)throw new TypeError;var b=Object(this),c=b.length>>>0;if("function"!=typeof a)throw new TypeError;for(var d=arguments.length>=2?arguments[1]:void 0,e=0;c>e;e++)e in b&&a.call(d,b[e],e,b)}),"function"!=typeof window.Uint32Array&&"object"!=typeof window.Uint32Array){var d=function(a){var b=new Array;window[a]=function(a){if("number"==typeof a){Array.call(this,a),this.length=a;for(var b=0;bf&&(a=a[g]);)g=c[f],f++;return a?a[d]:null},setProperty:function(a,b,c){for(var d=b.split("."),e=d.pop(),f=d.length,g=1,h=d[0];f>g&&(a=a[h]);)h=d[g],g++;return a&&(a[e]=c),a},chanceRoll:function(a){return void 0===a&&(a=50),a>0&&100*Math.random()<=a},randomChoice:function(a,b){return Math.random()<.5?a:b},parseDimension:function(a,b){var c=0,d=0;return"string"==typeof a?"%"===a.substr(-1)?(c=parseInt(a,10)/100,d=0===b?window.innerWidth*c:window.innerHeight*c):d=parseInt(a,10):d=a,d},pad:function(a,b,c,d){if(void 0===b)var b=0;if(void 0===c)var c=" ";if(void 0===d)var d=3;var e=0;if(b+1>=a.length)switch(d){case 1:a=new Array(b+1-a.length).join(c)+a;break;case 3:var f=Math.ceil((e=b-a.length)/2),g=e-f;a=new Array(g+1).join(c)+a+new Array(f+1).join(c);break;default:a+=new Array(b+1-a.length).join(c)}return a},isPlainObject:function(a){if("object"!=typeof a||a.nodeType||a===a.window)return!1;try{if(a.constructor&&!{}.hasOwnProperty.call(a.constructor.prototype,"isPrototypeOf"))return!1}catch(b){return!1}return!0},extend:function(){var a,b,d,e,f,g,h=arguments[0]||{},i=1,j=arguments.length,k=!1;for("boolean"==typeof h&&(k=h,h=arguments[1]||{},i=2),j===i&&(h=this,--i);j>i;i++)if(null!=(a=arguments[i]))for(b in a)d=h[b],e=a[b],h!==e&&(k&&e&&(c.Utils.isPlainObject(e)||(f=Array.isArray(e)))?(f?(f=!1,g=d&&Array.isArray(d)?d:[]):g=d&&c.Utils.isPlainObject(d)?d:{},h[b]=c.Utils.extend(k,g,e)):void 0!==e&&(h[b]=e));return h},mixinPrototype:function(a,b,c){void 0===c&&(c=!1);for(var d=Object.keys(b),e=0;e0&&(this._radius=.5*d),this.type=c.CIRCLE},c.Circle.prototype={circumference:function(){return 2*(Math.PI*this._radius)},random:function(a){void 0===a&&(a=new c.Point);var b=2*Math.PI*Math.random(),d=Math.random()+Math.random(),e=d>1?2-d:d,f=e*Math.cos(b),g=e*Math.sin(b);return a.x=this.x+f*this.radius,a.y=this.y+g*this.radius,a},getBounds:function(){return new c.Rectangle(this.x-this.radius,this.y-this.radius,this.diameter,this.diameter)},setTo:function(a,b,c){return this.x=a,this.y=b,this._diameter=c,this._radius=.5*c,this},copyFrom:function(a){return this.setTo(a.x,a.y,a.diameter)},copyTo:function(a){return a.x=this.x,a.y=this.y,a.diameter=this._diameter,a},distance:function(a,b){var d=c.Math.distance(this.x,this.y,a.x,a.y);return b?Math.round(d):d},clone:function(a){return void 0===a||null===a?a=new c.Circle(this.x,this.y,this.diameter):a.setTo(this.x,this.y,this.diameter),a},contains:function(a,b){return c.Circle.contains(this,a,b)},circumferencePoint:function(a,b,d){return c.Circle.circumferencePoint(this,a,b,d)},offset:function(a,b){return this.x+=a,this.y+=b,this},offsetPoint:function(a){return this.offset(a.x,a.y)},toString:function(){return"[{Phaser.Circle (x="+this.x+" y="+this.y+" diameter="+this.diameter+" radius="+this.radius+")}]"}},c.Circle.prototype.constructor=c.Circle,Object.defineProperty(c.Circle.prototype,"diameter",{get:function(){return this._diameter},set:function(a){a>0&&(this._diameter=a,this._radius=.5*a)}}),Object.defineProperty(c.Circle.prototype,"radius",{get:function(){return this._radius},set:function(a){a>0&&(this._radius=a,this._diameter=2*a)}}),Object.defineProperty(c.Circle.prototype,"left",{get:function(){return this.x-this._radius},set:function(a){a>this.x?(this._radius=0,this._diameter=0):this.radius=this.x-a}}),Object.defineProperty(c.Circle.prototype,"right",{get:function(){return this.x+this._radius},set:function(a){athis.y?(this._radius=0,this._diameter=0):this.radius=this.y-a}}),Object.defineProperty(c.Circle.prototype,"bottom",{get:function(){return this.y+this._radius},set:function(a){a0?Math.PI*this._radius*this._radius:0}}),Object.defineProperty(c.Circle.prototype,"empty",{get:function(){return 0===this._diameter},set:function(a){a===!0&&this.setTo(0,0,0)}}),c.Circle.contains=function(a,b,c){if(a.radius>0&&b>=a.left&&b<=a.right&&c>=a.top&&c<=a.bottom){var d=(a.x-b)*(a.x-b),e=(a.y-c)*(a.y-c);return d+e<=a.radius*a.radius}return!1},c.Circle.equals=function(a,b){return a.x==b.x&&a.y==b.y&&a.diameter==b.diameter},c.Circle.intersects=function(a,b){return c.Math.distance(a.x,a.y,b.x,b.y)<=a.radius+b.radius},c.Circle.circumferencePoint=function(a,b,d,e){return void 0===d&&(d=!1),void 0===e&&(e=new c.Point),d===!0&&(b=c.Math.degToRad(b)),e.x=a.x+a.radius*Math.cos(b),e.y=a.y+a.radius*Math.sin(b),e},c.Circle.intersectsRectangle=function(a,b){var c=Math.abs(a.x-b.x-b.halfWidth),d=b.halfWidth+a.radius;if(c>d)return!1;var e=Math.abs(a.y-b.y-b.halfHeight),f=b.halfHeight+a.radius;if(e>f)return!1;if(c<=b.halfWidth||e<=b.halfHeight)return!0;var g=c-b.halfWidth,h=e-b.halfHeight,i=g*g,j=h*h,k=a.radius*a.radius;return k>=i+j},PIXI.Circle=c.Circle,c.Ellipse=function(a,b,d,e){a=a||0,b=b||0,d=d||0,e=e||0,this.x=a,this.y=b,this.width=d,this.height=e,this.type=c.ELLIPSE},c.Ellipse.prototype={setTo:function(a,b,c,d){return this.x=a,this.y=b,this.width=c,this.height=d,this},getBounds:function(){return new c.Rectangle(this.x-this.width,this.y-this.height,this.width,this.height)},copyFrom:function(a){return this.setTo(a.x,a.y,a.width,a.height)},copyTo:function(a){return a.x=this.x,a.y=this.y,a.width=this.width,a.height=this.height,a},clone:function(a){return void 0===a||null===a?a=new c.Ellipse(this.x,this.y,this.width,this.height):a.setTo(this.x,this.y,this.width,this.height),a},contains:function(a,b){return c.Ellipse.contains(this,a,b)},random:function(a){void 0===a&&(a=new c.Point);var b=Math.random()*Math.PI*2,d=Math.random();return a.x=Math.sqrt(d)*Math.cos(b),a.y=Math.sqrt(d)*Math.sin(b),a.x=this.x+a.x*this.width/2,a.y=this.y+a.y*this.height/2,a},toString:function(){return"[{Phaser.Ellipse (x="+this.x+" y="+this.y+" width="+this.width+" height="+this.height+")}]"}},c.Ellipse.prototype.constructor=c.Ellipse,Object.defineProperty(c.Ellipse.prototype,"left",{get:function(){return this.x},set:function(a){this.x=a}}),Object.defineProperty(c.Ellipse.prototype,"right",{get:function(){return this.x+this.width},set:function(a){ad+e},PIXI.Ellipse=c.Ellipse,c.Line=function(a,b,d,e){a=a||0,b=b||0,d=d||0,e=e||0,this.start=new c.Point(a,b),this.end=new c.Point(d,e),this.type=c.LINE},c.Line.prototype={setTo:function(a,b,c,d){return this.start.setTo(a,b),this.end.setTo(c,d),this},fromSprite:function(a,b,c){return void 0===c&&(c=!1),c?this.setTo(a.center.x,a.center.y,b.center.x,b.center.y):this.setTo(a.x,a.y,b.x,b.y)},fromAngle:function(a,b,c,d){return this.start.setTo(a,b),this.end.setTo(a+Math.cos(c)*d,b+Math.sin(c)*d),this},rotate:function(a,b){var c=(this.start.x+this.end.x)/2,d=(this.start.y+this.end.y)/2;return this.start.rotate(c,d,a,b),this.end.rotate(c,d,a,b),this},rotateAround:function(a,b,c,d){return this.start.rotate(a,b,c,d),this.end.rotate(a,b,c,d),this},intersects:function(a,b,d){return c.Line.intersectsPoints(this.start,this.end,a.start,a.end,b,d)},reflect:function(a){return c.Line.reflect(this,a)},midPoint:function(a){return void 0===a&&(a=new c.Point),a.x=(this.start.x+this.end.x)/2,a.y=(this.start.y+this.end.y)/2,a},centerOn:function(a,b){var c=(this.start.x+this.end.x)/2,d=(this.start.y+this.end.y)/2,e=a-c,f=b-d;this.start.add(e,f),this.end.add(e,f)},pointOnLine:function(a,b){return(a-this.start.x)*(this.end.y-this.start.y)===(this.end.x-this.start.x)*(b-this.start.y)},pointOnSegment:function(a,b){var c=Math.min(this.start.x,this.end.x),d=Math.max(this.start.x,this.end.x),e=Math.min(this.start.y,this.end.y),f=Math.max(this.start.y,this.end.y);return this.pointOnLine(a,b)&&a>=c&&d>=a&&b>=e&&f>=b},random:function(a){void 0===a&&(a=new c.Point);var b=Math.random();return a.x=this.start.x+b*(this.end.x-this.start.x),a.y=this.start.y+b*(this.end.y-this.start.y),a},coordinatesOnLine:function(a,b){void 0===a&&(a=1),void 0===b&&(b=[]);var c=Math.round(this.start.x),d=Math.round(this.start.y),e=Math.round(this.end.x),f=Math.round(this.end.y),g=Math.abs(e-c),h=Math.abs(f-d),i=e>c?1:-1,j=f>d?1:-1,k=g-h;b.push([c,d]);for(var l=1;c!=e||d!=f;){var m=k<<1;m>-h&&(k-=h,c+=i),g>m&&(k+=g,d+=j),l%a===0&&b.push([c,d]),l++}return b},clone:function(a){return void 0===a||null===a?a=new c.Line(this.start.x,this.start.y,this.end.x,this.end.y):a.setTo(this.start.x,this.start.y,this.end.x,this.end.y),a}},Object.defineProperty(c.Line.prototype,"length",{get:function(){return Math.sqrt((this.end.x-this.start.x)*(this.end.x-this.start.x)+(this.end.y-this.start.y)*(this.end.y-this.start.y))}}),Object.defineProperty(c.Line.prototype,"angle",{get:function(){return Math.atan2(this.end.y-this.start.y,this.end.x-this.start.x)}}),Object.defineProperty(c.Line.prototype,"slope",{get:function(){return(this.end.y-this.start.y)/(this.end.x-this.start.x)}}),Object.defineProperty(c.Line.prototype,"perpSlope",{get:function(){return-((this.end.x-this.start.x)/(this.end.y-this.start.y))}}),Object.defineProperty(c.Line.prototype,"x",{get:function(){return Math.min(this.start.x,this.end.x)}}),Object.defineProperty(c.Line.prototype,"y",{get:function(){return Math.min(this.start.y,this.end.y)}}),Object.defineProperty(c.Line.prototype,"left",{get:function(){return Math.min(this.start.x,this.end.x)}}),Object.defineProperty(c.Line.prototype,"right",{get:function(){return Math.max(this.start.x,this.end.x)}}),Object.defineProperty(c.Line.prototype,"top",{get:function(){return Math.min(this.start.y,this.end.y)}}),Object.defineProperty(c.Line.prototype,"bottom",{get:function(){return Math.max(this.start.y,this.end.y)}}),Object.defineProperty(c.Line.prototype,"width",{get:function(){return Math.abs(this.start.x-this.end.x)}}),Object.defineProperty(c.Line.prototype,"height",{get:function(){return Math.abs(this.start.y-this.end.y)}}),Object.defineProperty(c.Line.prototype,"normalX",{get:function(){return Math.cos(this.angle-1.5707963267948966)}}),Object.defineProperty(c.Line.prototype,"normalY",{get:function(){return Math.sin(this.angle-1.5707963267948966)}}),Object.defineProperty(c.Line.prototype,"normalAngle",{get:function(){return c.Math.wrap(this.angle-1.5707963267948966,-Math.PI,Math.PI)}}),c.Line.intersectsPoints=function(a,b,d,e,f,g){void 0===f&&(f=!0),void 0===g&&(g=new c.Point);var h=b.y-a.y,i=e.y-d.y,j=a.x-b.x,k=d.x-e.x,l=b.x*a.y-a.x*b.y,m=e.x*d.y-d.x*e.y,n=h*k-i*j;if(0===n)return null;if(g.x=(j*m-k*l)/n,g.y=(i*l-h*m)/n,f){var o=(e.y-d.y)*(b.x-a.x)-(e.x-d.x)*(b.y-a.y),p=((e.x-d.x)*(a.y-d.y)-(e.y-d.y)*(a.x-d.x))/o,q=((b.x-a.x)*(a.y-d.y)-(b.y-a.y)*(a.x-d.x))/o;return p>=0&&1>=p&&q>=0&&1>=q?g:null}return g},c.Line.intersects=function(a,b,d,e){return c.Line.intersectsPoints(a.start,a.end,b.start,b.end,d,e)},c.Line.intersectsRectangle=function(a,b){if(!c.Rectangle.intersects(a,b))return!1;var d=a.start.x,e=a.start.y,f=a.end.x,g=a.end.y,h=b.x,i=b.y,j=b.right,k=b.bottom,l=0; -if(d>=h&&j>=d&&e>=i&&k>=e||f>=h&&j>=f&&g>=i&&k>=g)return!0;if(h>d&&f>=h){if(l=e+(g-e)*(h-d)/(f-d),l>i&&k>=l)return!0}else if(d>j&&j>=f&&(l=e+(g-e)*(j-d)/(f-d),l>=i&&k>=l))return!0;if(i>e&&g>=i){if(l=d+(f-d)*(i-e)/(g-e),l>=h&&j>=l)return!0}else if(e>k&&k>=g&&(l=d+(f-d)*(k-e)/(g-e),l>=h&&j>=l))return!0;return!1},c.Line.reflect=function(a,b){return 2*b.normalAngle-3.141592653589793-a.angle},c.Matrix=function(a,b,d,e,f,g){(void 0===a||null===a)&&(a=1),(void 0===b||null===b)&&(b=0),(void 0===d||null===d)&&(d=0),(void 0===e||null===e)&&(e=1),(void 0===f||null===f)&&(f=0),(void 0===g||null===g)&&(g=0),this.a=a,this.b=b,this.c=d,this.d=e,this.tx=f,this.ty=g,this.type=c.MATRIX},c.Matrix.prototype={fromArray:function(a){return this.setTo(a[0],a[1],a[3],a[4],a[2],a[5])},setTo:function(a,b,c,d,e,f){return this.a=a,this.b=b,this.c=c,this.d=d,this.tx=e,this.ty=f,this},clone:function(a){return void 0===a||null===a?a=new c.Matrix(this.a,this.b,this.c,this.d,this.tx,this.ty):(a.a=this.a,a.b=this.b,a.c=this.c,a.d=this.d,a.tx=this.tx,a.ty=this.ty),a},copyTo:function(a){return a.copyFrom(this),a},copyFrom:function(a){return this.a=a.a,this.b=a.b,this.c=a.c,this.d=a.d,this.tx=a.tx,this.ty=a.ty,this},toArray:function(a,b){return void 0===b&&(b=new PIXI.Float32Array(9)),a?(b[0]=this.a,b[1]=this.b,b[2]=0,b[3]=this.c,b[4]=this.d,b[5]=0,b[6]=this.tx,b[7]=this.ty,b[8]=1):(b[0]=this.a,b[1]=this.c,b[2]=this.tx,b[3]=this.b,b[4]=this.d,b[5]=this.ty,b[6]=0,b[7]=0,b[8]=1),b},apply:function(a,b){return void 0===b&&(b=new c.Point),b.x=this.a*a.x+this.c*a.y+this.tx,b.y=this.b*a.x+this.d*a.y+this.ty,b},applyInverse:function(a,b){void 0===b&&(b=new c.Point);var d=1/(this.a*this.d+this.c*-this.b),e=a.x,f=a.y;return b.x=this.d*d*e+-this.c*d*f+(this.ty*this.c-this.tx*this.d)*d,b.y=this.a*d*f+-this.b*d*e+(-this.ty*this.a+this.tx*this.b)*d,b},translate:function(a,b){return this.tx+=a,this.ty+=b,this},scale:function(a,b){return this.a*=a,this.d*=b,this.c*=a,this.b*=b,this.tx*=a,this.ty*=b,this},rotate:function(a){var b=Math.cos(a),c=Math.sin(a),d=this.a,e=this.c,f=this.tx;return this.a=d*b-this.b*c,this.b=d*c+this.b*b,this.c=e*b-this.d*c,this.d=e*c+this.d*b,this.tx=f*b-this.ty*c,this.ty=f*c+this.ty*b,this},append:function(a){var b=this.a,c=this.b,d=this.c,e=this.d;return this.a=a.a*b+a.b*d,this.b=a.a*c+a.b*e,this.c=a.c*b+a.d*d,this.d=a.c*c+a.d*e,this.tx=a.tx*b+a.ty*d+this.tx,this.ty=a.tx*c+a.ty*e+this.ty,this},identity:function(){return this.setTo(1,0,0,1,0,0)}},c.identityMatrix=new c.Matrix,PIXI.Matrix=c.Matrix,PIXI.identityMatrix=c.identityMatrix,c.Point=function(a,b){a=a||0,b=b||0,this.x=a,this.y=b,this.type=c.POINT},c.Point.prototype={copyFrom:function(a){return this.setTo(a.x,a.y)},invert:function(){return this.setTo(this.y,this.x)},setTo:function(a,b){return this.x=a||0,this.y=b||(0!==b?this.x:0),this},set:function(a,b){return this.x=a||0,this.y=b||(0!==b?this.x:0),this},add:function(a,b){return this.x+=a,this.y+=b,this},subtract:function(a,b){return this.x-=a,this.y-=b,this},multiply:function(a,b){return this.x*=a,this.y*=b,this},divide:function(a,b){return this.x/=a,this.y/=b,this},clampX:function(a,b){return this.x=c.Math.clamp(this.x,a,b),this},clampY:function(a,b){return this.y=c.Math.clamp(this.y,a,b),this},clamp:function(a,b){return this.x=c.Math.clamp(this.x,a,b),this.y=c.Math.clamp(this.y,a,b),this},clone:function(a){return void 0===a||null===a?a=new c.Point(this.x,this.y):a.setTo(this.x,this.y),a},copyTo:function(a){return a.x=this.x,a.y=this.y,a},distance:function(a,b){return c.Point.distance(this,a,b)},equals:function(a){return a.x===this.x&&a.y===this.y},angle:function(a,b){return void 0===b&&(b=!1),b?c.Math.radToDeg(Math.atan2(a.y-this.y,a.x-this.x)):Math.atan2(a.y-this.y,a.x-this.x)},rotate:function(a,b,d,e,f){return c.Point.rotate(this,a,b,d,e,f)},getMagnitude:function(){return Math.sqrt(this.x*this.x+this.y*this.y)},getMagnitudeSq:function(){return this.x*this.x+this.y*this.y},setMagnitude:function(a){return this.normalize().multiply(a,a)},normalize:function(){if(!this.isZero()){var a=this.getMagnitude();this.x/=a,this.y/=a}return this},isZero:function(){return 0===this.x&&0===this.y},dot:function(a){return this.x*a.x+this.y*a.y},cross:function(a){return this.x*a.y-this.y*a.x},perp:function(){return this.setTo(-this.y,this.x)},rperp:function(){return this.setTo(this.y,-this.x)},normalRightHand:function(){return this.setTo(-1*this.y,this.x)},floor:function(){return this.setTo(Math.floor(this.x),Math.floor(this.y))},ceil:function(){return this.setTo(Math.ceil(this.x),Math.ceil(this.y))},toString:function(){return"[{Point (x="+this.x+" y="+this.y+")}]"}},c.Point.prototype.constructor=c.Point,c.Point.add=function(a,b,d){return void 0===d&&(d=new c.Point),d.x=a.x+b.x,d.y=a.y+b.y,d},c.Point.subtract=function(a,b,d){return void 0===d&&(d=new c.Point),d.x=a.x-b.x,d.y=a.y-b.y,d},c.Point.multiply=function(a,b,d){return void 0===d&&(d=new c.Point),d.x=a.x*b.x,d.y=a.y*b.y,d},c.Point.divide=function(a,b,d){return void 0===d&&(d=new c.Point),d.x=a.x/b.x,d.y=a.y/b.y,d},c.Point.equals=function(a,b){return a.x===b.x&&a.y===b.y},c.Point.angle=function(a,b){return Math.atan2(a.y-b.y,a.x-b.x)},c.Point.negative=function(a,b){return void 0===b&&(b=new c.Point),b.setTo(-a.x,-a.y)},c.Point.multiplyAdd=function(a,b,d,e){return void 0===e&&(e=new c.Point),e.setTo(a.x+b.x*d,a.y+b.y*d)},c.Point.interpolate=function(a,b,d,e){return void 0===e&&(e=new c.Point),e.setTo(a.x+(b.x-a.x)*d,a.y+(b.y-a.y)*d)},c.Point.perp=function(a,b){return void 0===b&&(b=new c.Point),b.setTo(-a.y,a.x)},c.Point.rperp=function(a,b){return void 0===b&&(b=new c.Point),b.setTo(a.y,-a.x)},c.Point.distance=function(a,b,d){var e=c.Math.distance(a.x,a.y,b.x,b.y);return d?Math.round(e):e},c.Point.project=function(a,b,d){void 0===d&&(d=new c.Point);var e=a.dot(b)/b.getMagnitudeSq();return 0!==e&&d.setTo(e*b.x,e*b.y),d},c.Point.projectUnit=function(a,b,d){void 0===d&&(d=new c.Point);var e=a.dot(b);return 0!==e&&d.setTo(e*b.x,e*b.y),d},c.Point.normalRightHand=function(a,b){return void 0===b&&(b=new c.Point),b.setTo(-1*a.y,a.x)},c.Point.normalize=function(a,b){void 0===b&&(b=new c.Point);var d=a.getMagnitude();return 0!==d&&b.setTo(a.x/d,a.y/d),b},c.Point.rotate=function(a,b,d,e,f,g){if(f&&(e=c.Math.degToRad(e)),void 0===g){a.subtract(b,d);var h=Math.sin(e),i=Math.cos(e),j=i*a.x-h*a.y,k=h*a.x+i*a.y;a.x=j+b,a.y=k+d}else{var l=e+Math.atan2(a.y-d,a.x-b);a.x=b+g*Math.cos(l),a.y=d+g*Math.sin(l)}return a},c.Point.centroid=function(a,b){if(void 0===b&&(b=new c.Point),"[object Array]"!==Object.prototype.toString.call(a))throw new Error("Phaser.Point. Parameter 'points' must be an array");var d=a.length;if(1>d)throw new Error("Phaser.Point. Parameter 'points' array must not be empty");if(1===d)return b.copyFrom(a[0]),b;for(var e=0;d>e;e++)c.Point.add(b,a[e],b);return b.divide(d,d),b},c.Point.parse=function(a,b,d){b=b||"x",d=d||"y";var e=new c.Point;return a[b]&&(e.x=parseInt(a[b],10)),a[d]&&(e.y=parseInt(a[d],10)),e},PIXI.Point=c.Point,c.Polygon=function(){this.area=0,this._points=[],arguments.length>0&&this.setTo.apply(this,arguments),this.closed=!0,this.type=c.POLYGON},c.Polygon.prototype={toNumberArray:function(a){void 0===a&&(a=[]);for(var b=0;b=h&&j>b||b>=j&&h>b)&&(i-g)*(b-h)/(j-h)+g>a&&(d=!d)}return d},setTo:function(a){if(this.area=0,this._points=[],arguments.length>0){Array.isArray(a)||(a=Array.prototype.slice.call(arguments));for(var b=Number.MAX_VALUE,c=0,d=a.length;d>c;c++){if("number"==typeof a[c]){var e=new PIXI.Point(a[c],a[c+1]);c++}else if(Array.isArray(a[c]))var e=new PIXI.Point(a[c][0],a[c][1]);else var e=new PIXI.Point(a[c].x,a[c].y);this._points.push(e),e.yf;f++)b=this._points[f],c=f===g-1?this._points[0]:this._points[f+1],d=(b.y-a+(c.y-a))/2,e=b.x-c.x,this.area+=d*e;return this.area}},c.Polygon.prototype.constructor=c.Polygon,Object.defineProperty(c.Polygon.prototype,"points",{get:function(){return this._points},set:function(a){null!=a?this.setTo(a):this.setTo()}}),PIXI.Polygon=c.Polygon,c.Rectangle=function(a,b,d,e){a=a||0,b=b||0,d=d||0,e=e||0,this.x=a,this.y=b,this.width=d,this.height=e,this.type=c.RECTANGLE},c.Rectangle.prototype={offset:function(a,b){return this.x+=a,this.y+=b,this},offsetPoint:function(a){return this.offset(a.x,a.y)},setTo:function(a,b,c,d){return this.x=a,this.y=b,this.width=c,this.height=d,this},scale:function(a,b){return void 0===b&&(b=a),this.width*=a,this.height*=b,this},centerOn:function(a,b){return this.centerX=a,this.centerY=b,this},floor:function(){this.x=Math.floor(this.x),this.y=Math.floor(this.y)},floorAll:function(){this.x=Math.floor(this.x),this.y=Math.floor(this.y),this.width=Math.floor(this.width),this.height=Math.floor(this.height)},ceil:function(){this.x=Math.ceil(this.x),this.y=Math.ceil(this.y)},ceilAll:function(){this.x=Math.ceil(this.x),this.y=Math.ceil(this.y),this.width=Math.ceil(this.width),this.height=Math.ceil(this.height)},copyFrom:function(a){return this.setTo(a.x,a.y,a.width,a.height)},copyTo:function(a){return a.x=this.x,a.y=this.y,a.width=this.width,a.height=this.height,a},inflate:function(a,b){return c.Rectangle.inflate(this,a,b)},size:function(a){return c.Rectangle.size(this,a)},resize:function(a,b){return this.width=a,this.height=b,this},clone:function(a){return c.Rectangle.clone(this,a)},contains:function(a,b){return c.Rectangle.contains(this,a,b)},containsRect:function(a){return c.Rectangle.containsRect(a,this)},equals:function(a){return c.Rectangle.equals(this,a)},intersection:function(a,b){return c.Rectangle.intersection(this,a,b)},intersects:function(a){return c.Rectangle.intersects(this,a)},intersectsRaw:function(a,b,d,e,f){return c.Rectangle.intersectsRaw(this,a,b,d,e,f)},union:function(a,b){return c.Rectangle.union(this,a,b)},random:function(a){return void 0===a&&(a=new c.Point),a.x=this.randomX,a.y=this.randomY,a},getPoint:function(a,b){switch(void 0===b&&(b=new c.Point),a){default:case c.TOP_LEFT:return b.set(this.x,this.y);case c.TOP_CENTER:return b.set(this.centerX,this.y);case c.TOP_RIGHT:return b.set(this.right,this.y);case c.LEFT_CENTER:return b.set(this.x,this.centerY);case c.CENTER:return b.set(this.centerX,this.centerY);case c.RIGHT_CENTER:return b.set(this.right,this.centerY);case c.BOTTOM_LEFT:return b.set(this.x,this.bottom);case c.BOTTOM_CENTER:return b.set(this.centerX,this.bottom);case c.BOTTOM_RIGHT:return b.set(this.right,this.bottom)}},toString:function(){return"[{Rectangle (x="+this.x+" y="+this.y+" width="+this.width+" height="+this.height+" empty="+this.empty+")}]"}},Object.defineProperty(c.Rectangle.prototype,"halfWidth",{get:function(){return Math.round(this.width/2)}}),Object.defineProperty(c.Rectangle.prototype,"halfHeight",{get:function(){return Math.round(this.height/2)}}),Object.defineProperty(c.Rectangle.prototype,"bottom",{get:function(){return this.y+this.height},set:function(a){a<=this.y?this.height=0:this.height=a-this.y}}),Object.defineProperty(c.Rectangle.prototype,"bottomLeft",{get:function(){return new c.Point(this.x,this.bottom)},set:function(a){this.x=a.x,this.bottom=a.y}}),Object.defineProperty(c.Rectangle.prototype,"bottomRight",{get:function(){return new c.Point(this.right,this.bottom)},set:function(a){this.right=a.x,this.bottom=a.y}}),Object.defineProperty(c.Rectangle.prototype,"left",{get:function(){return this.x},set:function(a){a>=this.right?this.width=0:this.width=this.right-a,this.x=a}}),Object.defineProperty(c.Rectangle.prototype,"right",{get:function(){return this.x+this.width},set:function(a){a<=this.x?this.width=0:this.width=a-this.x}}),Object.defineProperty(c.Rectangle.prototype,"volume",{get:function(){return this.width*this.height}}),Object.defineProperty(c.Rectangle.prototype,"perimeter",{get:function(){return 2*this.width+2*this.height}}),Object.defineProperty(c.Rectangle.prototype,"centerX",{get:function(){return this.x+this.halfWidth},set:function(a){this.x=a-this.halfWidth}}),Object.defineProperty(c.Rectangle.prototype,"centerY",{get:function(){return this.y+this.halfHeight},set:function(a){this.y=a-this.halfHeight}}),Object.defineProperty(c.Rectangle.prototype,"randomX",{get:function(){return this.x+Math.random()*this.width}}),Object.defineProperty(c.Rectangle.prototype,"randomY",{get:function(){return this.y+Math.random()*this.height}}),Object.defineProperty(c.Rectangle.prototype,"top",{get:function(){return this.y},set:function(a){a>=this.bottom?(this.height=0,this.y=a):this.height=this.bottom-a}}),Object.defineProperty(c.Rectangle.prototype,"topLeft",{get:function(){return new c.Point(this.x,this.y)},set:function(a){this.x=a.x,this.y=a.y}}),Object.defineProperty(c.Rectangle.prototype,"topRight",{get:function(){return new c.Point(this.x+this.width,this.y)},set:function(a){this.right=a.x,this.y=a.y}}),Object.defineProperty(c.Rectangle.prototype,"empty",{get:function(){return!this.width||!this.height},set:function(a){a===!0&&this.setTo(0,0,0,0)}}),c.Rectangle.prototype.constructor=c.Rectangle,c.Rectangle.inflate=function(a,b,c){return a.x-=b,a.width+=2*b,a.y-=c,a.height+=2*c,a},c.Rectangle.inflatePoint=function(a,b){return c.Rectangle.inflate(a,b.x,b.y)},c.Rectangle.size=function(a,b){return void 0===b||null===b?b=new c.Point(a.width,a.height):b.setTo(a.width,a.height),b},c.Rectangle.clone=function(a,b){return void 0===b||null===b?b=new c.Rectangle(a.x,a.y,a.width,a.height):b.setTo(a.x,a.y,a.width,a.height),b},c.Rectangle.contains=function(a,b,c){return a.width<=0||a.height<=0?!1:b>=a.x&&b=a.y&&c=a&&a+c>e&&f>=b&&b+d>f},c.Rectangle.containsPoint=function(a,b){return c.Rectangle.contains(a,b.x,b.y)},c.Rectangle.containsRect=function(a,b){return a.volume>b.volume?!1:a.x>=b.x&&a.y>=b.y&&a.rightb.right||a.y>b.bottom)},c.Rectangle.intersectsRaw=function(a,b,c,d,e,f){return void 0===f&&(f=0),!(b>a.right+f||ca.bottom+f||ed&&(d=a.x),a.xf&&(f=a.y),a.y=c&&a<=c+this.width){var d=this.y;if(b>=d&&b<=d+this.height)return!0}return!1}},c.RoundedRectangle.prototype.constructor=c.RoundedRectangle,PIXI.RoundedRectangle=c.RoundedRectangle,c.Camera=function(a,b,d,e,f,g){this.game=a,this.world=a.world,this.id=0,this.view=new c.Rectangle(d,e,f,g),this.bounds=new c.Rectangle(d,e,f,g),this.deadzone=null,this.visible=!0,this.roundPx=!0,this.atLimit={x:!1,y:!1},this.target=null,this.displayObject=null,this.scale=null,this.totalInView=0,this.lerp=new c.Point(1,1),this.onShakeComplete=new c.Signal,this.onFlashComplete=new c.Signal,this.onFadeComplete=new c.Signal,this.fx=null,this._targetPosition=new c.Point,this._edge=0,this._position=new c.Point,this._shake={intensity:0,duration:0,horizontal:!1,vertical:!1,shakeBounds:!0,x:0,y:0},this._fxDuration=0,this._fxType=0},c.Camera.FOLLOW_LOCKON=0,c.Camera.FOLLOW_PLATFORMER=1,c.Camera.FOLLOW_TOPDOWN=2,c.Camera.FOLLOW_TOPDOWN_TIGHT=3,c.Camera.SHAKE_BOTH=4,c.Camera.SHAKE_HORIZONTAL=5,c.Camera.SHAKE_VERTICAL=6,c.Camera.ENABLE_FX=!0,c.Camera.prototype={boot:function(){this.displayObject=this.game.world,this.scale=this.game.world.scale,this.game.camera=this,c.Graphics&&c.Camera.ENABLE_FX&&(this.fx=new c.Graphics(this.game),this.game.stage.addChild(this.fx))},preUpdate:function(){this.totalInView=0},follow:function(a,b,d,e){void 0===b&&(b=c.Camera.FOLLOW_LOCKON),void 0===d&&(d=1),void 0===e&&(e=1),this.target=a,this.lerp.set(d,e);var f;switch(b){case c.Camera.FOLLOW_PLATFORMER:var g=this.width/8,h=this.height/3;this.deadzone=new c.Rectangle((this.width-g)/2,(this.height-h)/2-.25*h,g,h);break;case c.Camera.FOLLOW_TOPDOWN:f=Math.max(this.width,this.height)/4,this.deadzone=new c.Rectangle((this.width-f)/2,(this.height-f)/2,f,f);break;case c.Camera.FOLLOW_TOPDOWN_TIGHT:f=Math.max(this.width,this.height)/8,this.deadzone=new c.Rectangle((this.width-f)/2,(this.height-f)/2,f,f);break;case c.Camera.FOLLOW_LOCKON:this.deadzone=null;break;default:this.deadzone=null}},unfollow:function(){this.target=null},focusOn:function(a){this.setPosition(Math.round(a.x-this.view.halfWidth),Math.round(a.y-this.view.halfHeight))},focusOnXY:function(a,b){this.setPosition(Math.round(a-this.view.halfWidth),Math.round(b-this.view.halfHeight))},shake:function(a,b,d,e,f){return void 0===a&&(a=.05),void 0===b&&(b=500),void 0===d&&(d=!0),void 0===e&&(e=c.Camera.SHAKE_BOTH),void 0===f&&(f=!0),!d&&this._shake.duration>0?!1:(this._shake.intensity=a,this._shake.duration=b,this._shake.shakeBounds=f,this._shake.x=0,this._shake.y=0,this._shake.horizontal=e===c.Camera.SHAKE_BOTH||e===c.Camera.SHAKE_HORIZONTAL,this._shake.vertical=e===c.Camera.SHAKE_BOTH||e===c.Camera.SHAKE_VERTICAL,!0)},flash:function(a,b,c){return void 0===a&&(a=16777215),void 0===b&&(b=500),void 0===c&&(c=!1),!this.fx||!c&&this._fxDuration>0?!1:(this.fx.clear(),this.fx.beginFill(a),this.fx.drawRect(0,0,this.width,this.height),this.fx.endFill(),this.fx.alpha=1,this._fxDuration=b,this._fxType=0,!0)},fade:function(a,b,c){return void 0===a&&(a=0),void 0===b&&(b=500),void 0===c&&(c=!1),!this.fx||!c&&this._fxDuration>0?!1:(this.fx.clear(),this.fx.beginFill(a),this.fx.drawRect(0,0,this.width,this.height),this.fx.endFill(),this.fx.alpha=0,this._fxDuration=b,this._fxType=1,!0)},update:function(){this._fxDuration>0&&this.updateFX(),this._shake.duration>0&&this.updateShake(),this.bounds&&this.checkBounds(),this.roundPx&&(this.view.floor(),this._shake.x=Math.floor(this._shake.x),this._shake.y=Math.floor(this._shake.y)),this.displayObject.position.x=-this.view.x,this.displayObject.position.y=-this.view.y},updateFX:function(){0===this._fxType?(this.fx.alpha-=this.game.time.elapsedMS/this._fxDuration,this.fx.alpha<=0&&(this._fxDuration=0,this.fx.alpha=0,this.onFlashComplete.dispatch())):(this.fx.alpha+=this.game.time.elapsedMS/this._fxDuration,this.fx.alpha>=1&&(this._fxDuration=0,this.fx.alpha=1,this.onFadeComplete.dispatch()))},updateShake:function(){this._shake.duration-=this.game.time.elapsedMS,this._shake.duration<=0?(this.onShakeComplete.dispatch(),this._shake.x=0,this._shake.y=0):(this._shake.horizontal&&(this._shake.x=this.game.rnd.frac()*this._shake.intensity*this.view.width*2-this._shake.intensity*this.view.width),this._shake.vertical&&(this._shake.y=this.game.rnd.frac()*this._shake.intensity*this.view.height*2-this._shake.intensity*this.view.height))},updateTarget:function(){this._targetPosition.x=this.view.x+this.target.worldPosition.x,this._targetPosition.y=this.view.y+this.target.worldPosition.y,this.deadzone?(this._edge=this._targetPosition.x-this.view.x,this._edgethis.deadzone.right&&(this.view.x=this.game.math.linear(this.view.x,this._targetPosition.x-this.deadzone.right,this.lerp.x)),this._edge=this._targetPosition.y-this.view.y,this._edgethis.deadzone.bottom&&(this.view.y=this.game.math.linear(this.view.y,this._targetPosition.y-this.deadzone.bottom,this.lerp.y))):(this.view.x=this.game.math.linear(this.view.x,this._targetPosition.x-this.view.halfWidth,this.lerp.x),this.view.y=this.game.math.linear(this.view.y,this._targetPosition.y-this.view.halfHeight,this.lerp.y)),this.bounds&&this.checkBounds(),this.roundPx&&this.view.floor(),this.displayObject.position.x=-this.view.x,this.displayObject.position.y=-this.view.y},setBoundsToWorld:function(){this.bounds&&this.bounds.copyFrom(this.game.world.bounds)},checkBounds:function(){this.atLimit.x=!1,this.atLimit.y=!1;var a=this.view.x+this._shake.x,b=this.view.right+this._shake.x,c=this.view.y+this._shake.y,d=this.view.bottom+this._shake.y;a<=this.bounds.x*this.scale.x&&(this.atLimit.x=!0,this.view.x=this.bounds.x*this.scale.x,this._shake.shakeBounds||(this._shake.x=0)),b>=this.bounds.right*this.scale.x&&(this.atLimit.x=!0,this.view.x=this.bounds.right*this.scale.x-this.width,this._shake.shakeBounds||(this._shake.x=0)),c<=this.bounds.top*this.scale.y&&(this.atLimit.y=!0,this.view.y=this.bounds.top*this.scale.y,this._shake.shakeBounds||(this._shake.y=0)),d>=this.bounds.bottom*this.scale.y&&(this.atLimit.y=!0,this.view.y=this.bounds.bottom*this.scale.y-this.height,this._shake.shakeBounds||(this._shake.y=0))},setPosition:function(a,b){this.view.x=a,this.view.y=b,this.bounds&&this.checkBounds()},setSize:function(a,b){this.view.width=a,this.view.height=b},reset:function(){this.target=null,this.view.x=0,this.view.y=0,this._shake.duration=0,this.resetFX()},resetFX:function(){this.fx.clear(),this.fx.alpha=0,this._fxDuration=0}},c.Camera.prototype.constructor=c.Camera,Object.defineProperty(c.Camera.prototype,"x",{get:function(){return this.view.x},set:function(a){this.view.x=a,this.bounds&&this.checkBounds()}}),Object.defineProperty(c.Camera.prototype,"y",{get:function(){return this.view.y},set:function(a){this.view.y=a,this.bounds&&this.checkBounds()}}),Object.defineProperty(c.Camera.prototype,"position",{get:function(){return this._position.set(this.view.x,this.view.y),this._position},set:function(a){"undefined"!=typeof a.x&&(this.view.x=a.x),"undefined"!=typeof a.y&&(this.view.y=a.y),this.bounds&&this.checkBounds()}}),Object.defineProperty(c.Camera.prototype,"width",{get:function(){return this.view.width},set:function(a){this.view.width=a}}),Object.defineProperty(c.Camera.prototype,"height",{get:function(){return this.view.height},set:function(a){this.view.height=a}}),Object.defineProperty(c.Camera.prototype,"shakeIntensity",{get:function(){return this._shake.intensity},set:function(a){this._shake.intensity=a}}),c.State=function(){this.game=null,this.key="",this.add=null,this.make=null,this.camera=null,this.cache=null,this.input=null,this.load=null,this.math=null,this.sound=null,this.scale=null,this.stage=null,this.state=null,this.time=null,this.tweens=null,this.world=null,this.particles=null,this.physics=null,this.rnd=null},c.State.prototype={init:function(){},preload:function(){},loadUpdate:function(){},loadRender:function(){},create:function(){},update:function(){},preRender:function(){},render:function(){},resize:function(){},paused:function(){},resumed:function(){},pauseUpdate:function(){},shutdown:function(){}},c.State.prototype.constructor=c.State,c.StateManager=function(a,b){this.game=a,this.states={},this._pendingState=null,"undefined"!=typeof b&&null!==b&&(this._pendingState=b),this._clearWorld=!1,this._clearCache=!1,this._created=!1,this._args=[],this.current="",this.onStateChange=new c.Signal,this.onInitCallback=null,this.onPreloadCallback=null,this.onCreateCallback=null,this.onUpdateCallback=null,this.onRenderCallback=null,this.onResizeCallback=null,this.onPreRenderCallback=null,this.onLoadUpdateCallback=null,this.onLoadRenderCallback=null,this.onPausedCallback=null,this.onResumedCallback=null,this.onPauseUpdateCallback=null,this.onShutDownCallback=null},c.StateManager.prototype={boot:function(){this.game.onPause.add(this.pause,this),this.game.onResume.add(this.resume,this),null!==this._pendingState&&"string"!=typeof this._pendingState&&this.add("default",this._pendingState,!0)},add:function(a,b,d){void 0===d&&(d=!1);var e;return b instanceof c.State?e=b:"object"==typeof b?(e=b,e.game=this.game):"function"==typeof b&&(e=new b(this.game)),this.states[a]=e,d&&(this.game.isBooted?this.start(a):this._pendingState=a),e},remove:function(a){this.current===a&&(this.callbackContext=null,this.onInitCallback=null,this.onShutDownCallback=null,this.onPreloadCallback=null,this.onLoadRenderCallback=null,this.onLoadUpdateCallback=null,this.onCreateCallback=null,this.onUpdateCallback=null,this.onPreRenderCallback=null,this.onRenderCallback=null,this.onResizeCallback=null,this.onPausedCallback=null,this.onResumedCallback=null,this.onPauseUpdateCallback=null),delete this.states[a]},start:function(a,b,c){void 0===b&&(b=!0),void 0===c&&(c=!1),this.checkState(a)&&(this._pendingState=a,this._clearWorld=b,this._clearCache=c,arguments.length>3&&(this._args=Array.prototype.splice.call(arguments,3)))},restart:function(a,b){void 0===a&&(a=!0),void 0===b&&(b=!1),this._pendingState=this.current,this._clearWorld=a,this._clearCache=b,arguments.length>2&&(this._args=Array.prototype.slice.call(arguments,2))},dummy:function(){},preUpdate:function(){if(this._pendingState&&this.game.isBooted){var a=this.current;if(this.clearCurrentState(),this.setCurrentState(this._pendingState),this.onStateChange.dispatch(this.current,a),this.current!==this._pendingState)return;this._pendingState=null,this.onPreloadCallback?(this.game.load.reset(!0),this.onPreloadCallback.call(this.callbackContext,this.game),0===this.game.load.totalQueuedFiles()&&0===this.game.load.totalQueuedPacks()?this.loadComplete():this.game.load.start()):this.loadComplete()}},clearCurrentState:function(){this.current&&(this.onShutDownCallback&&this.onShutDownCallback.call(this.callbackContext,this.game),this.game.tweens.removeAll(),this.game.camera.reset(),this.game.input.reset(!0),this.game.physics.clear(),this.game.time.removeAll(),this.game.scale.reset(this._clearWorld),this.game.debug&&this.game.debug.reset(),this._clearWorld&&(this.game.world.shutdown(),this._clearCache&&this.game.cache.destroy()))},checkState:function(a){return this.states[a]?this.states[a].preload||this.states[a].create||this.states[a].update||this.states[a].render?!0:(console.warn("Invalid Phaser State object given. Must contain at least a one of the required functions: preload, create, update or render"),!1):(console.warn("Phaser.StateManager - No state found with the key: "+a),!1)},link:function(a){this.states[a].game=this.game,this.states[a].add=this.game.add,this.states[a].make=this.game.make,this.states[a].camera=this.game.camera,this.states[a].cache=this.game.cache,this.states[a].input=this.game.input,this.states[a].load=this.game.load,this.states[a].math=this.game.math,this.states[a].sound=this.game.sound,this.states[a].scale=this.game.scale,this.states[a].state=this,this.states[a].stage=this.game.stage,this.states[a].time=this.game.time,this.states[a].tweens=this.game.tweens,this.states[a].world=this.game.world,this.states[a].particles=this.game.particles,this.states[a].rnd=this.game.rnd,this.states[a].physics=this.game.physics,this.states[a].key=a},unlink:function(a){this.states[a]&&(this.states[a].game=null,this.states[a].add=null,this.states[a].make=null,this.states[a].camera=null,this.states[a].cache=null,this.states[a].input=null,this.states[a].load=null,this.states[a].math=null,this.states[a].sound=null,this.states[a].scale=null,this.states[a].state=null,this.states[a].stage=null,this.states[a].time=null,this.states[a].tweens=null,this.states[a].world=null,this.states[a].particles=null,this.states[a].rnd=null,this.states[a].physics=null)},setCurrentState:function(a){this.callbackContext=this.states[a],this.link(a),this.onInitCallback=this.states[a].init||this.dummy,this.onPreloadCallback=this.states[a].preload||null,this.onLoadRenderCallback=this.states[a].loadRender||null,this.onLoadUpdateCallback=this.states[a].loadUpdate||null,this.onCreateCallback=this.states[a].create||null,this.onUpdateCallback=this.states[a].update||null,this.onPreRenderCallback=this.states[a].preRender||null,this.onRenderCallback=this.states[a].render||null,this.onResizeCallback=this.states[a].resize||null,this.onPausedCallback=this.states[a].paused||null,this.onResumedCallback=this.states[a].resumed||null,this.onPauseUpdateCallback=this.states[a].pauseUpdate||null,this.onShutDownCallback=this.states[a].shutdown||this.dummy,""!==this.current&&this.game.physics.reset(),this.current=a,this._created=!1,this.onInitCallback.apply(this.callbackContext,this._args),a===this._pendingState&&(this._args=[]),this.game._kickstart=!0},getCurrentState:function(){return this.states[this.current]},loadComplete:function(){this._created===!1&&this.onLoadUpdateCallback&&this.onLoadUpdateCallback.call(this.callbackContext,this.game),this._created===!1&&this.onCreateCallback?(this._created=!0,this.onCreateCallback.call(this.callbackContext,this.game)):this._created=!0},pause:function(){this._created&&this.onPausedCallback&&this.onPausedCallback.call(this.callbackContext,this.game)},resume:function(){this._created&&this.onResumedCallback&&this.onResumedCallback.call(this.callbackContext,this.game)},update:function(){this._created?this.onUpdateCallback&&this.onUpdateCallback.call(this.callbackContext,this.game):this.onLoadUpdateCallback&&this.onLoadUpdateCallback.call(this.callbackContext,this.game)},pauseUpdate:function(){this._created?this.onPauseUpdateCallback&&this.onPauseUpdateCallback.call(this.callbackContext,this.game):this.onLoadUpdateCallback&&this.onLoadUpdateCallback.call(this.callbackContext,this.game)},preRender:function(a){this._created&&this.onPreRenderCallback&&this.onPreRenderCallback.call(this.callbackContext,this.game,a)},resize:function(a,b){this.onResizeCallback&&this.onResizeCallback.call(this.callbackContext,a,b)},render:function(){this._created?this.onRenderCallback&&(this.game.renderType===c.CANVAS?(this.game.context.save(),this.game.context.setTransform(1,0,0,1,0,0),this.onRenderCallback.call(this.callbackContext,this.game),this.game.context.restore()):this.onRenderCallback.call(this.callbackContext,this.game)):this.onLoadRenderCallback&&this.onLoadRenderCallback.call(this.callbackContext,this.game)},destroy:function(){this._clearWorld=!0,this._clearCache=!0,this.clearCurrentState(),this.callbackContext=null,this.onInitCallback=null,this.onShutDownCallback=null,this.onPreloadCallback=null,this.onLoadRenderCallback=null,this.onLoadUpdateCallback=null,this.onCreateCallback=null,this.onUpdateCallback=null,this.onRenderCallback=null,this.onPausedCallback=null,this.onResumedCallback=null,this.onPauseUpdateCallback=null,this.game=null,this.states={},this._pendingState=null,this.current=""}},c.StateManager.prototype.constructor=c.StateManager,Object.defineProperty(c.StateManager.prototype,"created",{ -get:function(){return this._created}}),c.Signal=function(){},c.Signal.prototype={_bindings:null,_prevParams:null,memorize:!1,_shouldPropagate:!0,active:!0,_boundDispatch:!1,validateListener:function(a,b){if("function"!=typeof a)throw new Error("Phaser.Signal: listener is a required param of {fn}() and should be a Function.".replace("{fn}",b))},_registerListener:function(a,b,d,e,f){var g,h=this._indexOfListener(a,d);if(-1!==h){if(g=this._bindings[h],g.isOnce()!==b)throw new Error("You cannot add"+(b?"":"Once")+"() then add"+(b?"Once":"")+"() the same listener without removing the relationship first.")}else g=new c.SignalBinding(this,a,b,d,e,f),this._addBinding(g);return this.memorize&&this._prevParams&&g.execute(this._prevParams),g},_addBinding:function(a){this._bindings||(this._bindings=[]);var b=this._bindings.length;do b--;while(this._bindings[b]&&a._priority<=this._bindings[b]._priority);this._bindings.splice(b+1,0,a)},_indexOfListener:function(a,b){if(!this._bindings)return-1;void 0===b&&(b=null);for(var c,d=this._bindings.length;d--;)if(c=this._bindings[d],c._listener===a&&c.context===b)return d;return-1},has:function(a,b){return-1!==this._indexOfListener(a,b)},add:function(a,b,c){this.validateListener(a,"add");var d=[];if(arguments.length>3)for(var e=3;e3)for(var e=3;ea||a>=this.children.length?-1:this.getChildAt(a)},c.Group.prototype.create=function(a,b,c,d,e,f){void 0===e&&(e=!0);var g=new this.classType(this.game,a,b,c,d);return g.exists=e,g.visible=e,g.alive=e,this.add(g,!1,f)},c.Group.prototype.createMultiple=function(a,b,c,d){void 0===c&&(c=0),void 0===d&&(d=!1),Array.isArray(b)||(b=[b]),Array.isArray(c)||(c=[c]);var e=this,f=[];return b.forEach(function(b){c.forEach(function(c){for(var g=0;a>g;g++)f.push(e.create(0,0,b,c,d))})}),f},c.Group.prototype.updateZ=function(){for(var a=this.children.length;a--;)this.children[a].z=a},c.Group.prototype.align=function(a,b,d,e,f,g){if(void 0===f&&(f=c.TOP_LEFT),void 0===g&&(g=0),!(0===this.children.length||g>this.children.length||-1===a&&-1===b))for(var h=new c.Rectangle(0,0,d,e),i=a*d,j=b*e,k=g;kthis.children.length-1&&(a=0),this.cursor?(this.cursorIndex=a,this.cursor=this.children[this.cursorIndex],this.cursor):void 0},c.Group.prototype.next=function(){return this.cursor?(this.cursorIndex>=this.children.length-1?this.cursorIndex=0:this.cursorIndex++,this.cursor=this.children[this.cursorIndex],this.cursor):void 0},c.Group.prototype.previous=function(){return this.cursor?(0===this.cursorIndex?this.cursorIndex=this.children.length-1:this.cursorIndex--,this.cursor=this.children[this.cursorIndex],this.cursor):void 0},c.Group.prototype.swap=function(a,b){this.swapChildren(a,b),this.updateZ()},c.Group.prototype.bringToTop=function(a){return a.parent===this&&this.getIndex(a)0&&(this.remove(a,!1,!0),this.addAt(a,0,!0)),a},c.Group.prototype.moveUp=function(a){if(a.parent===this&&this.getIndex(a)0){var b=this.getIndex(a),c=this.getAt(b-1);c&&this.swap(a,c)}return a},c.Group.prototype.xy=function(a,b,c){return 0>a||a>this.children.length?-1:(this.getChildAt(a).x=b,void(this.getChildAt(a).y=c))},c.Group.prototype.reverse=function(){this.children.reverse(),this.updateZ()},c.Group.prototype.getIndex=function(a){return this.children.indexOf(a)},c.Group.prototype.getByName=function(a){for(var b=0;b0))return!1;var f=b.length;return 1===f?0===d?a[b[0]]=c:1==d?a[b[0]]+=c:2==d?a[b[0]]-=c:3==d?a[b[0]]*=c:4==d&&(a[b[0]]/=c):2===f?0===d?a[b[0]][b[1]]=c:1==d?a[b[0]][b[1]]+=c:2==d?a[b[0]][b[1]]-=c:3==d?a[b[0]][b[1]]*=c:4==d&&(a[b[0]][b[1]]/=c):3===f?0===d?a[b[0]][b[1]][b[2]]=c:1==d?a[b[0]][b[1]][b[2]]+=c:2==d?a[b[0]][b[1]][b[2]]-=c:3==d?a[b[0]][b[1]][b[2]]*=c:4==d&&(a[b[0]][b[1]][b[2]]/=c):4===f&&(0===d?a[b[0]][b[1]][b[2]][b[3]]=c:1==d?a[b[0]][b[1]][b[2]][b[3]]+=c:2==d?a[b[0]][b[1]][b[2]][b[3]]-=c:3==d?a[b[0]][b[1]][b[2]][b[3]]*=c:4==d&&(a[b[0]][b[1]][b[2]][b[3]]/=c)),!0},c.Group.prototype.checkProperty=function(a,b,d,e){return void 0===e&&(e=!1),!c.Utils.getProperty(a,b)&&e?!1:c.Utils.getProperty(a,b)!==d?!1:!0},c.Group.prototype.set=function(a,b,c,d,e,f,g){return void 0===g&&(g=!1),b=b.split("."),void 0===d&&(d=!1),void 0===e&&(e=!1),(d===!1||d&&a.alive)&&(e===!1||e&&a.visible)?this.setProperty(a,b,c,f,g):void 0},c.Group.prototype.setAll=function(a,b,c,d,e,f){void 0===c&&(c=!1),void 0===d&&(d=!1),void 0===f&&(f=!1),a=a.split("."),e=e||0;for(var g=0;g2){c=[];for(var d=2;d2){e=[];for(var f=2;f2){d=[null];for(var e=2;e2){d=[null];for(var e=2;e2){d=[null];for(var e=2;eb[this._sortProperty]?1:a.zb[this._sortProperty]?-1:0},c.Group.prototype.iterate=function(a,b,d,e,f,g){if(d===c.Group.RETURN_TOTAL&&0===this.children.length)return 0;for(var h=0,i=0;i0?this.children[this.children.length-1]:void 0},c.Group.prototype.getBottom=function(){return this.children.length>0?this.children[0]:void 0},c.Group.prototype.getClosestTo=function(a){for(var b=Number.MAX_VALUE,d=0,e=null,f=0;fd&&(b=d,e=g))}return e},c.Group.prototype.getFurthestFrom=function(a){for(var b=0,d=0,e=null,f=0;fb&&(b=d,e=g))}return e},c.Group.prototype.countLiving=function(){return this.iterate("alive",!0,c.Group.RETURN_TOTAL)},c.Group.prototype.countDead=function(){return this.iterate("alive",!1,c.Group.RETURN_TOTAL)},c.Group.prototype.getRandom=function(a,b){return 0===this.children.length?null:(a=a||0,b=b||this.children.length,c.ArrayUtils.getRandomItem(this.children,a,b))},c.Group.prototype.remove=function(a,b,c){if(void 0===b&&(b=!1),void 0===c&&(c=!1),0===this.children.length||-1===this.children.indexOf(a))return!1;c||!a.events||a.destroyPhase||a.events.onRemovedFromGroup$dispatch(a,this);var d=this.removeChild(a);return this.removeFromHash(a),this.updateZ(),this.cursor===a&&this.next(),b&&d&&d.destroy(!0),!0},c.Group.prototype.moveAll=function(a,b){if(void 0===b&&(b=!1),this.children.length>0&&a instanceof c.Group){do a.add(this.children[0],b);while(this.children.length>0);this.hash=[],this.cursor=null}return a},c.Group.prototype.removeAll=function(a,b,c){if(void 0===a&&(a=!1),void 0===b&&(b=!1),void 0===c&&(c=!1),0!==this.children.length){do{!b&&this.children[0].events&&this.children[0].events.onRemovedFromGroup$dispatch(this.children[0],this);var d=this.removeChild(this.children[0]);this.removeFromHash(d),a&&d&&d.destroy(!0,c)}while(this.children.length>0);this.hash=[],this.cursor=null}},c.Group.prototype.removeBetween=function(a,b,c,d){if(void 0===b&&(b=this.children.length-1),void 0===c&&(c=!1),void 0===d&&(d=!1),0!==this.children.length){if(a>b||0>a||b>this.children.length)return!1;for(var e=b;e>=a;){!d&&this.children[e].events&&this.children[e].events.onRemovedFromGroup$dispatch(this.children[e],this);var f=this.removeChild(this.children[e]);this.removeFromHash(f),c&&f&&f.destroy(!0),this.cursor===this.children[e]&&(this.cursor=null),e--}this.updateZ()}},c.Group.prototype.destroy=function(a,b){null===this.game||this.ignoreDestroy||(void 0===a&&(a=!0),void 0===b&&(b=!1),this.onDestroy.dispatch(this,a,b),this.removeAll(a),this.cursor=null,this.filters=null,this.pendingDestroy=!1,b||(this.parent&&this.parent.removeChild(this),this.game=null,this.exists=!1))},Object.defineProperty(c.Group.prototype,"total",{get:function(){return this.iterate("exists",!0,c.Group.RETURN_TOTAL)}}),Object.defineProperty(c.Group.prototype,"length",{get:function(){return this.children.length}}),Object.defineProperty(c.Group.prototype,"angle",{get:function(){return c.Math.radToDeg(this.rotation)},set:function(a){this.rotation=c.Math.degToRad(a)}}),c.World=function(a){c.Group.call(this,a,null,"__world",!1),this.bounds=new c.Rectangle(0,0,a.width,a.height),this.camera=null,this._definedSize=!1,this._width=a.width,this._height=a.height,this.game.state.onStateChange.add(this.stateChange,this)},c.World.prototype=Object.create(c.Group.prototype),c.World.prototype.constructor=c.World,c.World.prototype.boot=function(){this.camera=new c.Camera(this.game,0,0,0,this.game.width,this.game.height),this.game.stage.addChild(this),this.camera.boot()},c.World.prototype.stateChange=function(){this.x=0,this.y=0,this.camera.reset()},c.World.prototype.setBounds=function(a,b,c,d){this._definedSize=!0,this._width=c,this._height=d,this.bounds.setTo(a,b,c,d),this.x=a,this.y=b,this.camera.bounds&&this.camera.bounds.setTo(a,b,Math.max(c,this.game.width),Math.max(d,this.game.height)),this.game.physics.setBoundsToWorld()},c.World.prototype.resize=function(a,b){this._definedSize&&(athis.bounds.right&&(a.x=this.bounds.left)),e&&(a.y+a._currentBounds.heightthis.bounds.bottom&&(a.y=this.bounds.top))):(d&&a.x+bthis.bounds.right&&(a.x=this.bounds.left-b),e&&a.y+bthis.bounds.bottom&&(a.y=this.bounds.top-b))},Object.defineProperty(c.World.prototype,"width",{get:function(){return this.bounds.width},set:function(a){ag;g++)e>g?f.push("color: #ff2424; background: #fff"):f.push("color: #959595; background: #fff");console.log.apply(console,f)}else window.console&&console.log("Phaser v"+a+" | Pixi.js "+PIXI.VERSION+" | "+b+" | "+d+" | http://phaser.io")}},setUpRenderer:function(){if(this.config.canvas?this.canvas=this.config.canvas:this.canvas=c.Canvas.create(this,this.width,this.height,this.config.canvasID,!0),this.config.canvasStyle?this.canvas.style=this.config.canvasStyle:this.canvas.style["-webkit-full-screen"]="width: 100%; height: 100%",this.renderType===c.HEADLESS||this.renderType===c.CANVAS||this.renderType===c.AUTO&&!this.device.webGL){if(!this.device.canvas)throw new Error("Phaser.Game - Cannot create Canvas or WebGL context, aborting.");this.renderType=c.CANVAS,this.renderer=new PIXI.CanvasRenderer(this),this.context=this.renderer.context}else this.renderType=c.WEBGL,this.renderer=new PIXI.WebGLRenderer(this),this.context=null,this.canvas.addEventListener("webglcontextlost",this.contextLost.bind(this),!1),this.canvas.addEventListener("webglcontextrestored",this.contextRestored.bind(this),!1);this.device.cocoonJS&&(this.canvas.screencanvas=this.renderType===c.CANVAS?!0:!1),this.renderType!==c.HEADLESS&&(this.stage.smoothed=this.antialias,c.Canvas.addToDOM(this.canvas,this.parent,!1),c.Canvas.setTouchAction(this.canvas))},contextLost:function(a){a.preventDefault(),this.renderer.contextLost=!0},contextRestored:function(){this.renderer.initContext(),this.cache.clearGLTextures(),this.renderer.contextLost=!1},update:function(a){if(this.time.update(a),this._kickstart)return this.updateLogic(this.time.desiredFpsMult),this.updateRender(this.time.slowMotion*this.time.desiredFps),void(this._kickstart=!1);if(this._spiraling>1&&!this.forceSingleUpdate)this.time.time>this._nextFpsNotification&&(this._nextFpsNotification=this.time.time+1e4,this.fpsProblemNotifier.dispatch()),this._deltaTime=0,this._spiraling=0,this.updateRender(this.time.slowMotion*this.time.desiredFps);else{var b=1e3*this.time.slowMotion/this.time.desiredFps;this._deltaTime+=Math.max(Math.min(3*b,this.time.elapsed),0);var c=0;for(this.updatesThisFrame=Math.floor(this._deltaTime/b),this.forceSingleUpdate&&(this.updatesThisFrame=Math.min(1,this.updatesThisFrame));this._deltaTime>=b&&(this._deltaTime-=b,this.currentUpdateID=c,this.updateLogic(this.time.desiredFpsMult),c++,!this.forceSingleUpdate||1!==c);)this.time.refresh();c>this._lastCount?this._spiraling++:c=c.Input.MAX_POINTERS)return console.warn("Phaser.Input.addPointer: Maximum limit of "+c.Input.MAX_POINTERS+" pointers reached."),null;var a=this.pointers.length+1,b=new c.Pointer(this.game,a,c.PointerMode.TOUCH);return this.pointers.push(b),this["pointer"+a]=b,b},update:function(){if(this.keyboard&&this.keyboard.update(),this.pollRate>0&&this._pollCounter=0&&this.countActivePointers(this.maxPointers)>=this.maxPointers)return null;if(!this.pointer1.active)return this.pointer1.start(a);if(!this.pointer2.active)return this.pointer2.start(a);for(var b=2;b0;c++){var d=this.pointers[c];d.active&&b--}return a-b},getPointer:function(a){void 0===a&&(a=!1);for(var b=0;b=g&&this._localPoint.x=h&&this._localPoint.y=g&&this._localPoint.x=h&&this._localPoint.y0&&this._pollCounterthis.game.time.time},justReleased:function(a){return a=a||250,this.isUp&&this.timeUp+a>this.game.time.time},reset:function(){this.isDown=!1,this.isUp=!0,this.timeDown=this.game.time.time,this.repeats=0,this.altKey=!1,this.shiftKey=!1,this.ctrlKey=!1},destroy:function(){this.onDown.dispose(),this.onUp.dispose(),this.onFloat.dispose(),this.parent=null,this.game=null}},c.DeviceButton.prototype.constructor=c.DeviceButton,Object.defineProperty(c.DeviceButton.prototype,"duration",{get:function(){return this.isUp?-1:this.game.time.time-this.timeDown}}),c.Pointer=function(a,b,d){this.game=a,this.id=b,this.type=c.POINTER,this.exists=!0,this.identifier=0,this.pointerId=null,this.pointerMode=d||c.PointerMode.CURSOR|c.PointerMode.CONTACT,this.target=null,this.button=null,this.leftButton=new c.DeviceButton(this,c.Pointer.LEFT_BUTTON),this.middleButton=new c.DeviceButton(this,c.Pointer.MIDDLE_BUTTON),this.rightButton=new c.DeviceButton(this,c.Pointer.RIGHT_BUTTON),this.backButton=new c.DeviceButton(this,c.Pointer.BACK_BUTTON),this.forwardButton=new c.DeviceButton(this,c.Pointer.FORWARD_BUTTON),this.eraserButton=new c.DeviceButton(this,c.Pointer.ERASER_BUTTON),this._holdSent=!1,this._history=[],this._nextDrop=0,this._stateReset=!1,this.withinGame=!1,this.clientX=-1,this.clientY=-1,this.pageX=-1,this.pageY=-1,this.screenX=-1,this.screenY=-1,this.rawMovementX=0,this.rawMovementY=0,this.movementX=0,this.movementY=0,this.x=-1,this.y=-1,this.isMouse=0===b,this.isDown=!1,this.isUp=!0,this.timeDown=0,this.timeUp=0,this.previousTapTime=0,this.totalTouches=0,this.msSinceLastClick=Number.MAX_VALUE,this.targetObject=null,this.interactiveCandidates=[],this.active=!1,this.dirty=!1,this.position=new c.Point,this.positionDown=new c.Point,this.positionUp=new c.Point,this.circle=new c.Circle(0,0,44),this._clickTrampolines=null,this._trampolineTargetObject=null},c.Pointer.NO_BUTTON=0,c.Pointer.LEFT_BUTTON=1,c.Pointer.RIGHT_BUTTON=2,c.Pointer.MIDDLE_BUTTON=4,c.Pointer.BACK_BUTTON=8,c.Pointer.FORWARD_BUTTON=16,c.Pointer.ERASER_BUTTON=32,c.Pointer.prototype={resetButtons:function(){this.isDown=!1,this.isUp=!0,this.isMouse&&(this.leftButton.reset(),this.middleButton.reset(),this.rightButton.reset(),this.backButton.reset(),this.forwardButton.reset(),this.eraserButton.reset())},processButtonsDown:function(a,b){c.Pointer.LEFT_BUTTON&a&&this.leftButton.start(b),c.Pointer.RIGHT_BUTTON&a&&this.rightButton.start(b),c.Pointer.MIDDLE_BUTTON&a&&this.middleButton.start(b),c.Pointer.BACK_BUTTON&a&&this.backButton.start(b),c.Pointer.FORWARD_BUTTON&a&&this.forwardButton.start(b),c.Pointer.ERASER_BUTTON&a&&this.eraserButton.start(b)},processButtonsUp:function(a,b){a===c.Mouse.LEFT_BUTTON&&this.leftButton.stop(b),a===c.Mouse.RIGHT_BUTTON&&this.rightButton.stop(b),a===c.Mouse.MIDDLE_BUTTON&&this.middleButton.stop(b),a===c.Mouse.BACK_BUTTON&&this.backButton.stop(b),a===c.Mouse.FORWARD_BUTTON&&this.forwardButton.stop(b),5===a&&this.eraserButton.stop(b)},updateButtons:function(a){this.button=a.button;var b="down"===a.type.toLowerCase().substr(-4);void 0!==a.buttons?b?this.processButtonsDown(a.buttons,a):this.processButtonsUp(a.button,a):b?this.leftButton.start(a):(this.leftButton.stop(a),this.rightButton.stop(a)),1===a.buttons&&a.ctrlKey&&this.leftButton.isDown&&(this.leftButton.stop(a),this.rightButton.start(a)),this.isUp=!0,this.isDown=!1,(this.leftButton.isDown||this.rightButton.isDown||this.middleButton.isDown||this.backButton.isDown||this.forwardButton.isDown||this.eraserButton.isDown)&&(this.isUp=!1,this.isDown=!0)},start:function(a){var b=this.game.input;return a.pointerId&&(this.pointerId=a.pointerId),this.identifier=a.identifier,this.target=a.target,this.isMouse?this.updateButtons(a):(this.isDown=!0,this.isUp=!1),this.active=!0,this.withinGame=!0,this.dirty=!1,this._history=[],this._clickTrampolines=null,this._trampolineTargetObject=null,this.msSinceLastClick=this.game.time.time-this.timeDown,this.timeDown=this.game.time.time,this._holdSent=!1,this.move(a,!0),this.positionDown.setTo(this.x,this.y),(b.multiInputOverride===c.Input.MOUSE_OVERRIDES_TOUCH||b.multiInputOverride===c.Input.MOUSE_TOUCH_COMBINE||b.multiInputOverride===c.Input.TOUCH_OVERRIDES_MOUSE&&0===b.totalActivePointers)&&(b.x=this.x,b.y=this.y,b.position.setTo(this.x,this.y),b.onDown.dispatch(this,a),b.resetSpeed(this.x,this.y)),this._stateReset=!1,this.totalTouches++,null!==this.targetObject&&this.targetObject._touchedHandler(this),this},update:function(){var a=this.game.input;this.active&&(this.dirty&&(a.interactiveItems.total>0&&this.processInteractiveObjects(!1),this.dirty=!1),this._holdSent===!1&&this.duration>=a.holdRate&&((a.multiInputOverride===c.Input.MOUSE_OVERRIDES_TOUCH||a.multiInputOverride===c.Input.MOUSE_TOUCH_COMBINE||a.multiInputOverride===c.Input.TOUCH_OVERRIDES_MOUSE&&0===a.totalActivePointers)&&a.onHold.dispatch(this), -this._holdSent=!0),a.recordPointerHistory&&this.game.time.time>=this._nextDrop&&(this._nextDrop=this.game.time.time+a.recordRate,this._history.push({x:this.position.x,y:this.position.y}),this._history.length>a.recordLimit&&this._history.shift()))},move:function(a,b){var d=this.game.input;if(!d.pollLocked){if(void 0===b&&(b=!1),void 0!==a.button&&(this.button=a.button),b&&this.isMouse&&this.updateButtons(a),this.clientX=a.clientX,this.clientY=a.clientY,this.pageX=a.pageX,this.pageY=a.pageY,this.screenX=a.screenX,this.screenY=a.screenY,this.isMouse&&d.mouse.locked&&!b&&(this.rawMovementX=a.movementX||a.mozMovementX||a.webkitMovementX||0,this.rawMovementY=a.movementY||a.mozMovementY||a.webkitMovementY||0,this.movementX+=this.rawMovementX,this.movementY+=this.rawMovementY),this.x=(this.pageX-this.game.scale.offset.x)*d.scale.x,this.y=(this.pageY-this.game.scale.offset.y)*d.scale.y,this.position.setTo(this.x,this.y),this.circle.x=this.x,this.circle.y=this.y,(d.multiInputOverride===c.Input.MOUSE_OVERRIDES_TOUCH||d.multiInputOverride===c.Input.MOUSE_TOUCH_COMBINE||d.multiInputOverride===c.Input.TOUCH_OVERRIDES_MOUSE&&0===d.totalActivePointers)&&(d.activePointer=this,d.x=this.x,d.y=this.y,d.position.setTo(d.x,d.y),d.circle.x=d.x,d.circle.y=d.y),this.withinGame=this.game.scale.bounds.contains(this.pageX,this.pageY),this.game.paused)return this;for(var e=d.moveCallbacks.length;e--;)d.moveCallbacks[e].callback.call(d.moveCallbacks[e].context,this,this.x,this.y,b);return null!==this.targetObject&&this.targetObject.isDragged===!0?this.targetObject.update(this)===!1&&(this.targetObject=null):d.interactiveItems.total>0&&this.processInteractiveObjects(b),this}},processInteractiveObjects:function(a){var b=0,c=-1,d=null,e=this.game.input.interactiveItems.first;for(this.interactiveCandidates=[];e;)e.checked=!1,e.validForInput(c,b,!1)&&(e.checked=!0,(a&&e.checkPointerDown(this,!0)||!a&&e.checkPointerOver(this,!0))&&(b=e.sprite.renderOrderID,c=e.priorityID,d=e,this.interactiveCandidates.push(e))),e=this.game.input.interactiveItems.next;for(e=this.game.input.interactiveItems.first;e;)!e.checked&&e.validForInput(c,b,!0)&&(a&&e.checkPointerDown(this,!1)||!a&&e.checkPointerOver(this,!1))&&(b=e.sprite.renderOrderID,c=e.priorityID,d=e,this.interactiveCandidates.push(e)),e=this.game.input.interactiveItems.next;return this.game.input.customCandidateHandler&&(d=this.game.input.customCandidateHandler.call(this.game.input.customCandidateHandlerContext,this,this.interactiveCandidates,d)),this.swapTarget(d,!1),null!==this.targetObject},swapTarget:function(a,b){void 0===b&&(b=!1),null===a?this.targetObject&&(this.targetObject._pointerOutHandler(this,b),this.targetObject=null):null===this.targetObject?(this.targetObject=a,a._pointerOverHandler(this,b)):this.targetObject===a?a.update(this)===!1&&(this.targetObject=null):(this.targetObject._pointerOutHandler(this,b),this.targetObject=a,this.targetObject._pointerOverHandler(this,b))},leave:function(a){this.withinGame=!1,this.move(a,!1)},stop:function(a){var b=this.game.input;return this._stateReset&&this.withinGame?void a.preventDefault():(this.timeUp=this.game.time.time,(b.multiInputOverride===c.Input.MOUSE_OVERRIDES_TOUCH||b.multiInputOverride===c.Input.MOUSE_TOUCH_COMBINE||b.multiInputOverride===c.Input.TOUCH_OVERRIDES_MOUSE&&0===b.totalActivePointers)&&(b.onUp.dispatch(this,a),this.duration>=0&&this.duration<=b.tapRate&&(this.timeUp-this.previousTapTime0&&(this.active=!1),this.withinGame=this.game.scale.bounds.contains(a.pageX,a.pageY),this.pointerId=null,this.identifier=null,this.positionUp.setTo(this.x,this.y),this.isMouse===!1&&b.currentPointers--,b.interactiveItems.callAll("_releasedHandler",this),this._clickTrampolines&&(this._trampolineTargetObject=this.targetObject),this.targetObject=null,this)},justPressed:function(a){return a=a||this.game.input.justPressedRate,this.isDown===!0&&this.timeDown+a>this.game.time.time},justReleased:function(a){return a=a||this.game.input.justReleasedRate,this.isUp&&this.timeUp+a>this.game.time.time},addClickTrampoline:function(a,b,c,d){if(this.isDown){for(var e=this._clickTrampolines=this._clickTrampolines||[],f=0;fd;d++)this._pointerData[d]={id:d,x:0,y:0,isDown:!1,isUp:!1,isOver:!1,isOut:!1,timeOver:0,timeOut:0,timeDown:0,timeUp:0,downDuration:0,isDragged:!1};this.snapOffset=new c.Point,this.enabled=!0,this._wasEnabled=!0}return this.sprite.events.onAddedToGroup.add(this.addedToGroup,this),this.sprite.events.onRemovedFromGroup.add(this.removedFromGroup,this),this.flagged=!1,this.sprite},addedToGroup:function(){this._dragPhase||this._wasEnabled&&!this.enabled&&this.start()},removedFromGroup:function(){this._dragPhase||(this.enabled?(this._wasEnabled=!0,this.stop()):this._wasEnabled=!1)},reset:function(){this.enabled=!1,this.flagged=!1;for(var a=0;10>a;a++)this._pointerData[a]={id:a,x:0,y:0,isDown:!1,isUp:!1,isOver:!1,isOut:!1,timeOver:0,timeOut:0,timeDown:0,timeUp:0,downDuration:0,isDragged:!1}},stop:function(){this.enabled!==!1&&(this.enabled=!1,this.game.input.interactiveItems.remove(this))},destroy:function(){this.sprite&&(this._setHandCursor&&(this.game.canvas.style.cursor="default",this._setHandCursor=!1),this.enabled=!1,this.game.input.interactiveItems.remove(this),this._pointerData.length=0,this.boundsRect=null,this.boundsSprite=null,this.sprite=null)},validForInput:function(a,b,c){return void 0===c&&(c=!0),!this.enabled||0===this.sprite.scale.x||0===this.sprite.scale.y||this.priorityIDa||this.priorityID===a&&this.sprite.renderOrderID>b)?!0:!1},isPixelPerfect:function(){return this.pixelPerfectClick||this.pixelPerfectOver},pointerX:function(a){return a=a||0,this._pointerData[a].x},pointerY:function(a){return a=a||0,this._pointerData[a].y},pointerDown:function(a){return a=a||0,this._pointerData[a].isDown},pointerUp:function(a){return a=a||0,this._pointerData[a].isUp},pointerTimeDown:function(a){return a=a||0,this._pointerData[a].timeDown},pointerTimeUp:function(a){return a=a||0,this._pointerData[a].timeUp},pointerOver:function(a){if(!this.enabled)return!1;if(void 0===a){for(var b=0;10>b;b++)if(this._pointerData[b].isOver)return!0;return!1}return this._pointerData[a].isOver},pointerOut:function(a){if(!this.enabled)return!1;if(void 0!==a)return this._pointerData[a].isOut;for(var b=0;10>b;b++)if(this._pointerData[b].isOut)return!0},pointerTimeOver:function(a){return a=a||0,this._pointerData[a].timeOver},pointerTimeOut:function(a){return a=a||0,this._pointerData[a].timeOut},pointerDragged:function(a){return a=a||0,this._pointerData[a].isDragged},checkPointerDown:function(a,b){return a.isDown&&this.enabled&&this.sprite&&this.sprite.parent&&this.sprite.visible&&this.sprite.parent.visible&&0!==this.sprite.worldScale.x&&0!==this.sprite.worldScale.y&&this.game.input.hitTest(this.sprite,a,this._tempPoint)?(void 0===b&&(b=!1),!b&&this.pixelPerfectClick?this.checkPixel(this._tempPoint.x,this._tempPoint.y):!0):!1},checkPointerOver:function(a,b){return this.enabled&&this.sprite&&this.sprite.parent&&this.sprite.visible&&this.sprite.parent.visible&&0!==this.sprite.worldScale.x&&0!==this.sprite.worldScale.y&&this.game.input.hitTest(this.sprite,a,this._tempPoint)?(void 0===b&&(b=!1),!b&&this.pixelPerfectOver?this.checkPixel(this._tempPoint.x,this._tempPoint.y):!0):!1},checkPixel:function(a,b,c){if(this.sprite.texture.baseTexture.source){if(null===a&&null===b){this.game.input.getLocalPosition(this.sprite,c,this._tempPoint);var a=this._tempPoint.x,b=this._tempPoint.y}if(0!==this.sprite.anchor.x&&(a-=-this.sprite.texture.frame.width*this.sprite.anchor.x),0!==this.sprite.anchor.y&&(b-=-this.sprite.texture.frame.height*this.sprite.anchor.y),a+=this.sprite.texture.frame.x,b+=this.sprite.texture.frame.y,this.sprite.texture.trim&&(a-=this.sprite.texture.trim.x,b-=this.sprite.texture.trim.y,athis.sprite.texture.crop.right||bthis.sprite.texture.crop.bottom))return this._dx=a,this._dy=b,!1;this._dx=a,this._dy=b,this.game.input.hitContext.clearRect(0,0,1,1),this.game.input.hitContext.drawImage(this.sprite.texture.baseTexture.source,a,b,1,1,0,0,1,1);var d=this.game.input.hitContext.getImageData(0,0,1,1);if(d.data[3]>=this.pixelPerfectAlpha)return!0}return!1},update:function(a){return null!==this.sprite&&void 0!==this.sprite.parent?this.enabled&&this.sprite.visible&&this.sprite.parent.visible?this._pendingDrag?(this._dragDistancePass||(this._dragDistancePass=c.Math.distance(a.x,a.y,this.downPoint.x,this.downPoint.y)>=this.dragDistanceThreshold),this._dragDistancePass&&this._dragTimePass&&this.startDrag(a),!0):this.draggable&&this._draggedPointerID===a.id?this.updateDrag(a):this._pointerData[a.id].isOver?this.checkPointerOver(a)?(this._pointerData[a.id].x=a.x-this.sprite.x,this._pointerData[a.id].y=a.y-this.sprite.y,!0):(this._pointerOutHandler(a),!1):void 0:(this._pointerOutHandler(a),!1):void 0},_pointerOverHandler:function(a,b){if(null!==this.sprite){var d=this._pointerData[a.id];if(d.isOver===!1||a.dirty){var e=d.isOver===!1;d.isOver=!0,d.isOut=!1,d.timeOver=this.game.time.time,d.x=a.x-this.sprite.x,d.y=a.y-this.sprite.y,this.useHandCursor&&d.isDragged===!1&&(this.game.canvas.style.cursor="pointer",this._setHandCursor=!0),!b&&e&&this.sprite&&this.sprite.events&&this.sprite.events.onInputOver$dispatch(this.sprite,a),this.sprite.parent&&this.sprite.parent.type===c.GROUP&&this.sprite.parent.onChildInputOver.dispatch(this.sprite,a)}}},_pointerOutHandler:function(a,b){if(null!==this.sprite){var d=this._pointerData[a.id];d.isOver=!1,d.isOut=!0,d.timeOut=this.game.time.time,this.useHandCursor&&d.isDragged===!1&&(this.game.canvas.style.cursor="default",this._setHandCursor=!1),!b&&this.sprite&&this.sprite.events&&(this.sprite.events.onInputOut$dispatch(this.sprite,a),this.sprite&&this.sprite.parent&&this.sprite.parent.type===c.GROUP&&this.sprite.parent.onChildInputOut.dispatch(this.sprite,a))}},_touchedHandler:function(a){if(null!==this.sprite){var b=this._pointerData[a.id];if(!b.isDown&&b.isOver){if(this.pixelPerfectClick&&!this.checkPixel(null,null,a))return;if(b.isDown=!0,b.isUp=!1,b.timeDown=this.game.time.time,this.downPoint.set(a.x,a.y),a.dirty=!0,this.sprite&&this.sprite.events&&(this.sprite.events.onInputDown$dispatch(this.sprite,a),this.sprite&&this.sprite.parent&&this.sprite.parent.type===c.GROUP&&this.sprite.parent.onChildInputDown.dispatch(this.sprite,a),null===this.sprite))return;this.draggable&&this.isDragged===!1&&(0===this.dragTimeThreshold&&0===this.dragDistanceThreshold?this.startDrag(a):(this._pendingDrag=!0,this._dragDistancePass=0===this.dragDistanceThreshold,this.dragTimeThreshold>0?(this._dragTimePass=!1,this.game.time.events.add(this.dragTimeThreshold,this.dragTimeElapsed,this,a)):this._dragTimePass=!0)),this.bringToTop&&this.sprite.bringToTop()}}},dragTimeElapsed:function(a){this._dragTimePass=!0,this._pendingDrag&&this.sprite&&this._dragDistancePass&&this.startDrag(a)},_releasedHandler:function(a){if(null!==this.sprite){var b=this._pointerData[a.id];if(b.isDown&&a.isUp){b.isDown=!1,b.isUp=!0,b.timeUp=this.game.time.time,b.downDuration=b.timeUp-b.timeDown;var d=this.checkPointerOver(a);this.sprite&&this.sprite.events&&(this.dragStopBlocksInputUp&&(!this.dragStopBlocksInputUp||this.draggable&&this.isDragged&&this._draggedPointerID===a.id)||this.sprite.events.onInputUp$dispatch(this.sprite,a,d),this.sprite&&this.sprite.parent&&this.sprite.parent.type===c.GROUP&&this.sprite.parent.onChildInputUp.dispatch(this.sprite,a,d),d&&(d=this.checkPointerOver(a))),b.isOver=d,!d&&this.useHandCursor&&(this.game.canvas.style.cursor="default",this._setHandCursor=!1),a.dirty=!0,this._pendingDrag=!1,this.draggable&&this.isDragged&&this._draggedPointerID===a.id&&this.stopDrag(a)}}},updateDrag:function(a,b){if(a.isUp)return this.stopDrag(a),!1;void 0===b&&(b=!1);var c=this.globalToLocalX(a.x)+this._dragPoint.x+this.dragOffset.x,d=this.globalToLocalY(a.y)+this._dragPoint.y+this.dragOffset.y;if(this.sprite.fixedToCamera)this.allowHorizontalDrag&&(this.sprite.cameraOffset.x=c),this.allowVerticalDrag&&(this.sprite.cameraOffset.y=d),this.boundsRect&&this.checkBoundsRect(),this.boundsSprite&&this.checkBoundsSprite(),this.snapOnDrag&&(this.sprite.cameraOffset.x=Math.round((this.sprite.cameraOffset.x-this.snapOffsetX%this.snapX)/this.snapX)*this.snapX+this.snapOffsetX%this.snapX,this.sprite.cameraOffset.y=Math.round((this.sprite.cameraOffset.y-this.snapOffsetY%this.snapY)/this.snapY)*this.snapY+this.snapOffsetY%this.snapY,this.snapPoint.set(this.sprite.cameraOffset.x,this.sprite.cameraOffset.y));else{var e=this.game.camera.x-this._pointerData[a.id].camX,f=this.game.camera.y-this._pointerData[a.id].camY;this.allowHorizontalDrag&&(this.sprite.x=c+e),this.allowVerticalDrag&&(this.sprite.y=d+f),this.boundsRect&&this.checkBoundsRect(),this.boundsSprite&&this.checkBoundsSprite(),this.snapOnDrag&&(this.sprite.x=Math.round((this.sprite.x-this.snapOffsetX%this.snapX)/this.snapX)*this.snapX+this.snapOffsetX%this.snapX,this.sprite.y=Math.round((this.sprite.y-this.snapOffsetY%this.snapY)/this.snapY)*this.snapY+this.snapOffsetY%this.snapY,this.snapPoint.set(this.sprite.x,this.sprite.y))}return this.sprite.events.onDragUpdate.dispatch(this.sprite,a,c,d,this.snapPoint,b),!0},justOver:function(a,b){return a=a||0,b=b||500,this._pointerData[a].isOver&&this.overDuration(a)a;a++)this._pointerData[a].isDragged=!1;this.draggable=!1,this.isDragged=!1,this._draggedPointerID=-1,this._pendingDrag=!1},startDrag:function(a){var b=this.sprite.x,c=this.sprite.y;if(this.isDragged=!0,this._draggedPointerID=a.id,this._pointerData[a.id].camX=this.game.camera.x,this._pointerData[a.id].camY=this.game.camera.y,this._pointerData[a.id].isDragged=!0,this.sprite.fixedToCamera){if(this.dragFromCenter){var d=this.sprite.getBounds();this.sprite.cameraOffset.x=this.globalToLocalX(a.x)+(this.sprite.cameraOffset.x-d.centerX),this.sprite.cameraOffset.y=this.globalToLocalY(a.y)+(this.sprite.cameraOffset.y-d.centerY)}this._dragPoint.setTo(this.sprite.cameraOffset.x-a.x,this.sprite.cameraOffset.y-a.y)}else{if(this.dragFromCenter){var d=this.sprite.getBounds();this.sprite.x=this.globalToLocalX(a.x)+(this.sprite.x-d.centerX),this.sprite.y=this.globalToLocalY(a.y)+(this.sprite.y-d.centerY)}this._dragPoint.setTo(this.sprite.x-this.globalToLocalX(a.x),this.sprite.y-this.globalToLocalY(a.y))}this.updateDrag(a,!0),this.bringToTop&&(this._dragPhase=!0,this.sprite.bringToTop()),this.dragStartPoint.set(b,c),this.sprite.events.onDragStart$dispatch(this.sprite,a,b,c),this._pendingDrag=!1},globalToLocalX:function(a){return this.scaleLayer&&(a-=this.game.scale.grid.boundsFluid.x,a*=this.game.scale.grid.scaleFluidInversed.x),a},globalToLocalY:function(a){return this.scaleLayer&&(a-=this.game.scale.grid.boundsFluid.y,a*=this.game.scale.grid.scaleFluidInversed.y),a},stopDrag:function(a){this.isDragged=!1,this._draggedPointerID=-1,this._pointerData[a.id].isDragged=!1,this._dragPhase=!1,this._pendingDrag=!1,this.snapOnRelease&&(this.sprite.fixedToCamera?(this.sprite.cameraOffset.x=Math.round((this.sprite.cameraOffset.x-this.snapOffsetX%this.snapX)/this.snapX)*this.snapX+this.snapOffsetX%this.snapX,this.sprite.cameraOffset.y=Math.round((this.sprite.cameraOffset.y-this.snapOffsetY%this.snapY)/this.snapY)*this.snapY+this.snapOffsetY%this.snapY):(this.sprite.x=Math.round((this.sprite.x-this.snapOffsetX%this.snapX)/this.snapX)*this.snapX+this.snapOffsetX%this.snapX,this.sprite.y=Math.round((this.sprite.y-this.snapOffsetY%this.snapY)/this.snapY)*this.snapY+this.snapOffsetY%this.snapY)),this.sprite.events.onDragStop$dispatch(this.sprite,a),this.checkPointerOver(a)===!1&&this._pointerOutHandler(a)},setDragLock:function(a,b){void 0===a&&(a=!0),void 0===b&&(b=!0),this.allowHorizontalDrag=a,this.allowVerticalDrag=b},enableSnap:function(a,b,c,d,e,f){void 0===c&&(c=!0),void 0===d&&(d=!1),void 0===e&&(e=0),void 0===f&&(f=0),this.snapX=a,this.snapY=b,this.snapOffsetX=e,this.snapOffsetY=f,this.snapOnDrag=c,this.snapOnRelease=d},disableSnap:function(){this.snapOnDrag=!1,this.snapOnRelease=!1},checkBoundsRect:function(){this.sprite.fixedToCamera?(this.sprite.cameraOffset.xthis.boundsRect.right&&(this.sprite.cameraOffset.x=this.boundsRect.right-this.sprite.width),this.sprite.cameraOffset.ythis.boundsRect.bottom&&(this.sprite.cameraOffset.y=this.boundsRect.bottom-this.sprite.height)):(this.sprite.leftthis.boundsRect.right&&(this.sprite.x=this.boundsRect.right-(this.sprite.width-this.sprite.offsetX)),this.sprite.topthis.boundsRect.bottom&&(this.sprite.y=this.boundsRect.bottom-(this.sprite.height-this.sprite.offsetY)))},checkBoundsSprite:function(){this.sprite.fixedToCamera&&this.boundsSprite.fixedToCamera?(this.sprite.cameraOffset.xthis.boundsSprite.cameraOffset.x+this.boundsSprite.width&&(this.sprite.cameraOffset.x=this.boundsSprite.cameraOffset.x+this.boundsSprite.width-this.sprite.width),this.sprite.cameraOffset.ythis.boundsSprite.cameraOffset.y+this.boundsSprite.height&&(this.sprite.cameraOffset.y=this.boundsSprite.cameraOffset.y+this.boundsSprite.height-this.sprite.height)):(this.sprite.leftthis.boundsSprite.right&&(this.sprite.x=this.boundsSprite.right-(this.sprite.width-this.sprite.offsetX)),this.sprite.topthis.boundsSprite.bottom&&(this.sprite.y=this.boundsSprite.bottom-(this.sprite.height-this.sprite.offsetY)))}},c.InputHandler.prototype.constructor=c.InputHandler,c.Gamepad=function(a){this.game=a,this._gamepadIndexMap={},this._rawPads=[],this._active=!1,this.enabled=!0,this._gamepadSupportAvailable=!!navigator.webkitGetGamepads||!!navigator.webkitGamepads||-1!=navigator.userAgent.indexOf("Firefox/")||!!navigator.getGamepads,this._prevRawGamepadTypes=[],this._prevTimestamps=[],this.callbackContext=this,this.onConnectCallback=null,this.onDisconnectCallback=null,this.onDownCallback=null,this.onUpCallback=null,this.onAxisCallback=null,this.onFloatCallback=null,this._ongamepadconnected=null,this._gamepaddisconnected=null,this._gamepads=[new c.SinglePad(a,this),new c.SinglePad(a,this),new c.SinglePad(a,this),new c.SinglePad(a,this)]},c.Gamepad.prototype={addCallbacks:function(a,b){"undefined"!=typeof b&&(this.onConnectCallback="function"==typeof b.onConnect?b.onConnect:this.onConnectCallback,this.onDisconnectCallback="function"==typeof b.onDisconnect?b.onDisconnect:this.onDisconnectCallback,this.onDownCallback="function"==typeof b.onDown?b.onDown:this.onDownCallback,this.onUpCallback="function"==typeof b.onUp?b.onUp:this.onUpCallback,this.onAxisCallback="function"==typeof b.onAxis?b.onAxis:this.onAxisCallback,this.onFloatCallback="function"==typeof b.onFloat?b.onFloat:this.onFloatCallback,this.callbackContext=a)},start:function(){if(!this._active){this._active=!0;var a=this;this._onGamepadConnected=function(b){return a.onGamepadConnected(b)},this._onGamepadDisconnected=function(b){return a.onGamepadDisconnected(b)},window.addEventListener("gamepadconnected",this._onGamepadConnected,!1),window.addEventListener("gamepaddisconnected",this._onGamepadDisconnected,!1)}},onGamepadConnected:function(a){var b=a.gamepad;this._rawPads.push(b),this._gamepads[b.index].connect(b)},onGamepadDisconnected:function(a){var b=a.gamepad;for(var c in this._rawPads)this._rawPads[c].index===b.index&&this._rawPads.splice(c,1);this._gamepads[b.index].disconnect()},update:function(){this._pollGamepads(),this.pad1.pollStatus(),this.pad2.pollStatus(),this.pad3.pollStatus(),this.pad4.pollStatus()},_pollGamepads:function(){if(this._active){if(navigator.getGamepads)var a=navigator.getGamepads();else if(navigator.webkitGetGamepads)var a=navigator.webkitGetGamepads();else if(navigator.webkitGamepads)var a=navigator.webkitGamepads();if(a){this._rawPads=[];for(var b=!1,c=0;c0&&d>this.deadZone||0>d&&d<-this.deadZone?this.processAxisChange(c,d):this.processAxisChange(c,0)}this._prevTimestamp=this._rawPad.timestamp}},connect:function(a){var b=!this.connected;this.connected=!0,this.index=a.index,this._rawPad=a,this._buttons=[],this._buttonsLen=a.buttons.length,this._axes=[],this._axesLen=a.axes.length;for(var d=0;dthis.maxHealth&&(this.health=this.maxHealth),this},heal:function(a){return this.alive&&(this.health+=a,this.health>this.maxHealth&&(this.health=this.maxHealth)),this}},c.Component.InCamera=function(){},c.Component.InCamera.prototype={inCamera:{get:function(){return this.game.world.camera.view.intersects(this._bounds)}}},c.Component.InputEnabled=function(){},c.Component.InputEnabled.prototype={input:null,inputEnabled:{get:function(){return this.input&&this.input.enabled},set:function(a){a?null===this.input?(this.input=new c.InputHandler(this),this.input.start()):this.input&&!this.input.enabled&&this.input.start():this.input&&this.input.enabled&&this.input.stop()}}},c.Component.InWorld=function(){},c.Component.InWorld.preUpdate=function(){if(this.autoCull||this.checkWorldBounds){if(this._bounds.copyFrom(this.getBounds()),this._bounds.x+=this.game.camera.view.x,this._bounds.y+=this.game.camera.view.y,this.autoCull)if(this.game.world.camera.view.intersects(this._bounds))this.renderable=!0,this.game.world.camera.totalInView++;else if(this.renderable=!1,this.outOfCameraBoundsKill)return this.kill(),!1;if(this.checkWorldBounds)if(this._outOfBoundsFired&&this.game.world.bounds.intersects(this._bounds))this._outOfBoundsFired=!1,this.events.onEnterBounds$dispatch(this);else if(!this._outOfBoundsFired&&!this.game.world.bounds.intersects(this._bounds)&&(this._outOfBoundsFired=!0,this.events.onOutOfBounds$dispatch(this),this.outOfBoundsKill))return this.kill(),!1}return!0},c.Component.InWorld.prototype={checkWorldBounds:!1,outOfBoundsKill:!1,outOfCameraBoundsKill:!1,_outOfBoundsFired:!1,inWorld:{get:function(){return this.game.world.bounds.intersects(this.getBounds())}}},c.Component.LifeSpan=function(){},c.Component.LifeSpan.preUpdate=function(){return this.lifespan>0&&(this.lifespan-=this.game.time.physicsElapsedMS,this.lifespan<=0)?(this.kill(),!1):!0},c.Component.LifeSpan.prototype={alive:!0,lifespan:0,revive:function(a){return void 0===a&&(a=100),this.alive=!0,this.exists=!0,this.visible=!0,"function"==typeof this.setHealth&&this.setHealth(a),this.events&&this.events.onRevived$dispatch(this),this},kill:function(){return this.alive=!1,this.exists=!1,this.visible=!1,this.events&&this.events.onKilled$dispatch(this),this}},c.Component.LoadTexture=function(){},c.Component.LoadTexture.prototype={customRender:!1,_frame:null,loadTexture:function(a,b,d){a===c.PENDING_ATLAS?(a=b,b=0):b=b||0,(d||void 0===d)&&this.animations&&this.animations.stop(),this.key=a,this.customRender=!1;var e=this.game.cache,f=!0,g=!this.texture.baseTexture.scaleMode;if(c.RenderTexture&&a instanceof c.RenderTexture)this.key=a.key,this.setTexture(a);else if(c.BitmapData&&a instanceof c.BitmapData)this.customRender=!0,this.setTexture(a.texture),f=e.hasFrameData(a.key,c.Cache.BITMAPDATA)?!this.animations.loadFrameData(e.getFrameData(a.key,c.Cache.BITMAPDATA),b):!this.animations.loadFrameData(a.frameData,0);else if(c.Video&&a instanceof c.Video){this.customRender=!0;var h=a.texture.valid;this.setTexture(a.texture),this.setFrame(a.texture.frame.clone()),a.onChangeSource.add(this.resizeFrame,this),this.texture.valid=h}else if(c.Tilemap&&a instanceof c.TilemapLayer)this.setTexture(PIXI.Texture.fromCanvas(a.canvas));else if(a instanceof PIXI.Texture)this.setTexture(a);else{var i=e.getImage(a,!0);this.key=i.key,this.setTexture(new PIXI.Texture(i.base)),"__default"===a?this.texture.baseTexture.skipRender=!0:this.texture.baseTexture.skipRender=!1,f=!this.animations.loadFrameData(i.frameData,b)}f&&(this._frame=c.Rectangle.clone(this.texture.frame)),g||(this.texture.baseTexture.scaleMode=1)},setFrame:function(a){this._frame=a,this.texture.frame.x=a.x,this.texture.frame.y=a.y,this.texture.frame.width=a.width,this.texture.frame.height=a.height,this.texture.crop.x=a.x,this.texture.crop.y=a.y,this.texture.crop.width=a.width,this.texture.crop.height=a.height,a.trimmed?(this.texture.trim?(this.texture.trim.x=a.spriteSourceSizeX,this.texture.trim.y=a.spriteSourceSizeY,this.texture.trim.width=a.sourceSizeW,this.texture.trim.height=a.sourceSizeH):this.texture.trim={x:a.spriteSourceSizeX,y:a.spriteSourceSizeY,width:a.sourceSizeW,height:a.sourceSizeH},this.texture.width=a.sourceSizeW,this.texture.height=a.sourceSizeH,this.texture.frame.width=a.sourceSizeW,this.texture.frame.height=a.sourceSizeH):!a.trimmed&&this.texture.trim&&(this.texture.trim=null),this.cropRect&&this.updateCrop(),this.texture.requiresReTint=!0,this.texture._updateUvs(),this.tilingTexture&&(this.refreshTexture=!0)},resizeFrame:function(a,b,c){this.texture.frame.resize(b,c),this.texture.setFrame(this.texture.frame)},resetFrame:function(){this._frame&&this.setFrame(this._frame)},frame:{get:function(){return this.animations.frame},set:function(a){this.animations.frame=a}},frameName:{get:function(){return this.animations.frameName},set:function(a){this.animations.frameName=a}}},c.Component.Overlap=function(){},c.Component.Overlap.prototype={overlap:function(a){return c.Rectangle.intersects(this.getBounds(),a.getBounds())}},c.Component.PhysicsBody=function(){},c.Component.PhysicsBody.preUpdate=function(){return this.fresh&&this.exists?(this.world.setTo(this.parent.position.x+this.position.x,this.parent.position.y+this.position.y),this.worldTransform.tx=this.world.x,this.worldTransform.ty=this.world.y,this.previousPosition.set(this.world.x,this.world.y),this.previousRotation=this.rotation,this.body&&this.body.preUpdate(),this.fresh=!1,!1):(this.previousPosition.set(this.world.x,this.world.y),this.previousRotation=this.rotation,this._exists&&this.parent.exists?!0:(this.renderOrderID=-1,!1))},c.Component.PhysicsBody.postUpdate=function(){this.exists&&this.body&&this.body.postUpdate()},c.Component.PhysicsBody.prototype={body:null,x:{get:function(){return this.position.x},set:function(a){this.position.x=a,this.body&&!this.body.dirty&&(this.body._reset=!0)}},y:{get:function(){return this.position.y},set:function(a){this.position.y=a,this.body&&!this.body.dirty&&(this.body._reset=!0)}}},c.Component.Reset=function(){},c.Component.Reset.prototype.reset=function(a,b,c){return void 0===c&&(c=1),this.world.set(a,b),this.position.set(a,b),this.fresh=!0,this.exists=!0,this.visible=!0,this.renderable=!0,this.components.InWorld&&(this._outOfBoundsFired=!1),this.components.LifeSpan&&(this.alive=!0,this.health=c),this.components.PhysicsBody&&this.body&&this.body.reset(a,b,!1,!1),this},c.Component.ScaleMinMax=function(){},c.Component.ScaleMinMax.prototype={transformCallback:null,transformCallbackContext:this,scaleMin:null,scaleMax:null,checkTransform:function(a){this.scaleMin&&(a.athis.scaleMax.x&&(a.a=this.scaleMax.x),a.d>this.scaleMax.y&&(a.d=this.scaleMax.y))},setScaleMinMax:function(a,b,d,e){void 0===b?b=d=e=a:void 0===d&&(d=e=b,b=a),null===a?this.scaleMin=null:this.scaleMin?this.scaleMin.set(a,b):this.scaleMin=new c.Point(a,b),null===d?this.scaleMax=null:this.scaleMax?this.scaleMax.set(d,e):this.scaleMax=new c.Point(d,e),null===this.scaleMin?this.transformCallback=null:(this.transformCallback=this.checkTransform,this.transformCallbackContext=this)}},c.Component.Smoothed=function(){},c.Component.Smoothed.prototype={smoothed:{get:function(){return!this.texture.baseTexture.scaleMode},set:function(a){a?this.texture&&(this.texture.baseTexture.scaleMode=0):this.texture&&(this.texture.baseTexture.scaleMode=1)}}},c.GameObjectFactory=function(a){this.game=a,this.world=this.game.world},c.GameObjectFactory.prototype={existing:function(a){return this.world.add(a)},weapon:function(a,b,d,e){var f=this.game.plugins.add(c.Weapon);return f.createBullets(a,b,d,e),f},image:function(a,b,d,e,f){return void 0===f&&(f=this.world),f.add(new c.Image(this.game,a,b,d,e))},sprite:function(a,b,c,d,e){return void 0===e&&(e=this.world),e.create(a,b,c,d)},creature:function(a,b,d,e,f){void 0===f&&(f=this.world);var g=new c.Creature(this.game,a,b,d,e);return f.add(g),g},tween:function(a){return this.game.tweens.create(a)},group:function(a,b,d,e,f){return new c.Group(this.game,a,b,d,e,f)},physicsGroup:function(a,b,d,e){return new c.Group(this.game,b,d,e,!0,a)},spriteBatch:function(a,b,d){return void 0===a&&(a=null),void 0===b&&(b="group"),void 0===d&&(d=!1),new c.SpriteBatch(this.game,a,b,d)},audio:function(a,b,c,d){return this.game.sound.add(a,b,c,d)},sound:function(a,b,c,d){return this.game.sound.add(a,b,c,d)},audioSprite:function(a){return this.game.sound.addSprite(a)},tileSprite:function(a,b,d,e,f,g,h){return void 0===h&&(h=this.world),h.add(new c.TileSprite(this.game,a,b,d,e,f,g))},rope:function(a,b,d,e,f,g){return void 0===g&&(g=this.world),g.add(new c.Rope(this.game,a,b,d,e,f))},text:function(a,b,d,e,f){return void 0===f&&(f=this.world),f.add(new c.Text(this.game,a,b,d,e))},button:function(a,b,d,e,f,g,h,i,j,k){return void 0===k&&(k=this.world),k.add(new c.Button(this.game,a,b,d,e,f,g,h,i,j))},graphics:function(a,b,d){return void 0===d&&(d=this.world),d.add(new c.Graphics(this.game,a,b))},emitter:function(a,b,d){return this.game.particles.add(new c.Particles.Arcade.Emitter(this.game,a,b,d)); -},retroFont:function(a,b,d,e,f,g,h,i,j){return new c.RetroFont(this.game,a,b,d,e,f,g,h,i,j)},bitmapText:function(a,b,d,e,f,g){return void 0===g&&(g=this.world),g.add(new c.BitmapText(this.game,a,b,d,e,f))},tilemap:function(a,b,d,e,f){return new c.Tilemap(this.game,a,b,d,e,f)},renderTexture:function(a,b,d,e){(void 0===d||""===d)&&(d=this.game.rnd.uuid()),void 0===e&&(e=!1);var f=new c.RenderTexture(this.game,a,b,d);return e&&this.game.cache.addRenderTexture(d,f),f},video:function(a,b){return new c.Video(this.game,a,b)},bitmapData:function(a,b,d,e){void 0===e&&(e=!1),(void 0===d||""===d)&&(d=this.game.rnd.uuid());var f=new c.BitmapData(this.game,d,a,b);return e&&this.game.cache.addBitmapData(d,f),f},filter:function(a){var b=Array.prototype.slice.call(arguments,1),a=new c.Filter[a](this.game);return a.init.apply(a,b),a},plugin:function(a){return this.game.plugins.add(a)}},c.GameObjectFactory.prototype.constructor=c.GameObjectFactory,c.GameObjectCreator=function(a){this.game=a,this.world=this.game.world},c.GameObjectCreator.prototype={image:function(a,b,d,e){return new c.Image(this.game,a,b,d,e)},sprite:function(a,b,d,e){return new c.Sprite(this.game,a,b,d,e)},tween:function(a){return new c.Tween(a,this.game,this.game.tweens)},group:function(a,b,d,e,f){return new c.Group(this.game,a,b,d,e,f)},spriteBatch:function(a,b,d){return void 0===b&&(b="group"),void 0===d&&(d=!1),new c.SpriteBatch(this.game,a,b,d)},audio:function(a,b,c,d){return this.game.sound.add(a,b,c,d)},audioSprite:function(a){return this.game.sound.addSprite(a)},sound:function(a,b,c,d){return this.game.sound.add(a,b,c,d)},tileSprite:function(a,b,d,e,f,g){return new c.TileSprite(this.game,a,b,d,e,f,g)},rope:function(a,b,d,e,f){return new c.Rope(this.game,a,b,d,e,f)},text:function(a,b,d,e){return new c.Text(this.game,a,b,d,e)},button:function(a,b,d,e,f,g,h,i,j){return new c.Button(this.game,a,b,d,e,f,g,h,i,j)},graphics:function(a,b){return new c.Graphics(this.game,a,b)},emitter:function(a,b,d){return new c.Particles.Arcade.Emitter(this.game,a,b,d)},retroFont:function(a,b,d,e,f,g,h,i,j){return new c.RetroFont(this.game,a,b,d,e,f,g,h,i,j)},bitmapText:function(a,b,d,e,f,g){return new c.BitmapText(this.game,a,b,d,e,f,g)},tilemap:function(a,b,d,e,f){return new c.Tilemap(this.game,a,b,d,e,f)},renderTexture:function(a,b,d,e){(void 0===d||""===d)&&(d=this.game.rnd.uuid()),void 0===e&&(e=!1);var f=new c.RenderTexture(this.game,a,b,d);return e&&this.game.cache.addRenderTexture(d,f),f},bitmapData:function(a,b,d,e){void 0===e&&(e=!1),(void 0===d||""===d)&&(d=this.game.rnd.uuid());var f=new c.BitmapData(this.game,d,a,b);return e&&this.game.cache.addBitmapData(d,f),f},filter:function(a){var b=Array.prototype.slice.call(arguments,1),a=new c.Filter[a](this.game);return a.init.apply(a,b),a}},c.GameObjectCreator.prototype.constructor=c.GameObjectCreator,c.Sprite=function(a,b,d,e,f){b=b||0,d=d||0,e=e||null,f=f||null,this.type=c.SPRITE,this.physicsType=c.SPRITE,PIXI.Sprite.call(this,PIXI.TextureCache.__default),c.Component.Core.init.call(this,a,b,d,e,f)},c.Sprite.prototype=Object.create(PIXI.Sprite.prototype),c.Sprite.prototype.constructor=c.Sprite,c.Component.Core.install.call(c.Sprite.prototype,["Angle","Animation","AutoCull","Bounds","BringToTop","Crop","Delta","Destroy","FixedToCamera","Health","InCamera","InputEnabled","InWorld","LifeSpan","LoadTexture","Overlap","PhysicsBody","Reset","ScaleMinMax","Smoothed"]),c.Sprite.prototype.preUpdatePhysics=c.Component.PhysicsBody.preUpdate,c.Sprite.prototype.preUpdateLifeSpan=c.Component.LifeSpan.preUpdate,c.Sprite.prototype.preUpdateInWorld=c.Component.InWorld.preUpdate,c.Sprite.prototype.preUpdateCore=c.Component.Core.preUpdate,c.Sprite.prototype.preUpdate=function(){return this.preUpdatePhysics()&&this.preUpdateLifeSpan()&&this.preUpdateInWorld()?this.preUpdateCore():!1},c.Image=function(a,b,d,e,f){b=b||0,d=d||0,e=e||null,f=f||null,this.type=c.IMAGE,PIXI.Sprite.call(this,PIXI.TextureCache.__default),c.Component.Core.init.call(this,a,b,d,e,f)},c.Image.prototype=Object.create(PIXI.Sprite.prototype),c.Image.prototype.constructor=c.Image,c.Component.Core.install.call(c.Image.prototype,["Angle","Animation","AutoCull","Bounds","BringToTop","Crop","Destroy","FixedToCamera","InputEnabled","LifeSpan","LoadTexture","Overlap","Reset","Smoothed"]),c.Image.prototype.preUpdateInWorld=c.Component.InWorld.preUpdate,c.Image.prototype.preUpdateCore=c.Component.Core.preUpdate,c.Image.prototype.preUpdate=function(){return this.preUpdateInWorld()?this.preUpdateCore():!1},c.Button=function(a,b,d,e,f,g,h,i,j,k){b=b||0,d=d||0,e=e||null,f=f||null,g=g||this,c.Image.call(this,a,b,d,e,i),this.type=c.BUTTON,this.physicsType=c.SPRITE,this._onOverFrame=null,this._onOutFrame=null,this._onDownFrame=null,this._onUpFrame=null,this.onOverSound=null,this.onOutSound=null,this.onDownSound=null,this.onUpSound=null,this.onOverSoundMarker="",this.onOutSoundMarker="",this.onDownSoundMarker="",this.onUpSoundMarker="",this.onInputOver=new c.Signal,this.onInputOut=new c.Signal,this.onInputDown=new c.Signal,this.onInputUp=new c.Signal,this.onOverMouseOnly=!0,this.justReleasedPreventsOver=c.PointerMode.TOUCH,this.freezeFrames=!1,this.forceOut=!1,this.inputEnabled=!0,this.input.start(0,!0),this.input.useHandCursor=!0,this.setFrames(h,i,j,k),null!==f&&this.onInputUp.add(f,g),this.events.onInputOver.add(this.onInputOverHandler,this),this.events.onInputOut.add(this.onInputOutHandler,this),this.events.onInputDown.add(this.onInputDownHandler,this),this.events.onInputUp.add(this.onInputUpHandler,this),this.events.onRemovedFromWorld.add(this.removedFromWorld,this)},c.Button.prototype=Object.create(c.Image.prototype),c.Button.prototype.constructor=c.Button;var g="Over",h="Out",i="Down",j="Up";c.Button.prototype.clearFrames=function(){this.setFrames(null,null,null,null)},c.Button.prototype.removedFromWorld=function(){this.inputEnabled=!1},c.Button.prototype.setStateFrame=function(a,b,c){var d="_on"+a+"Frame";null!==b?(this[d]=b,c&&this.changeStateFrame(a)):this[d]=null},c.Button.prototype.changeStateFrame=function(a){if(this.freezeFrames)return!1;var b="_on"+a+"Frame",c=this[b];return"string"==typeof c?(this.frameName=c,!0):"number"==typeof c?(this.frame=c,!0):!1},c.Button.prototype.setFrames=function(a,b,c,d){this.setStateFrame(g,a,this.input.pointerOver()),this.setStateFrame(h,b,!this.input.pointerOver()),this.setStateFrame(i,c,this.input.pointerDown()),this.setStateFrame(j,d,this.input.pointerUp())},c.Button.prototype.setStateSound=function(a,b,d){var e="on"+a+"Sound",f="on"+a+"SoundMarker";b instanceof c.Sound||b instanceof c.AudioSprite?(this[e]=b,this[f]="string"==typeof d?d:""):(this[e]=null,this[f]="")},c.Button.prototype.playStateSound=function(a){var b="on"+a+"Sound",c=this[b];if(c){var d="on"+a+"SoundMarker",e=this[d];return c.play(e),!0}return!1},c.Button.prototype.setSounds=function(a,b,c,d,e,f,k,l){this.setStateSound(g,a,b),this.setStateSound(h,e,f),this.setStateSound(i,c,d),this.setStateSound(j,k,l)},c.Button.prototype.setOverSound=function(a,b){this.setStateSound(g,a,b)},c.Button.prototype.setOutSound=function(a,b){this.setStateSound(h,a,b)},c.Button.prototype.setDownSound=function(a,b){this.setStateSound(i,a,b)},c.Button.prototype.setUpSound=function(a,b){this.setStateSound(j,a,b)},c.Button.prototype.onInputOverHandler=function(a,b){b.justReleased()&&(this.justReleasedPreventsOver&b.pointerMode)===b.pointerMode||(this.changeStateFrame(g),(!this.onOverMouseOnly||b.isMouse)&&(this.playStateSound(g),this.onInputOver&&this.onInputOver.dispatch(this,b)))},c.Button.prototype.onInputOutHandler=function(a,b){this.changeStateFrame(h),this.playStateSound(h),this.onInputOut&&this.onInputOut.dispatch(this,b)},c.Button.prototype.onInputDownHandler=function(a,b){this.changeStateFrame(i),this.playStateSound(i),this.onInputDown&&this.onInputDown.dispatch(this,b)},c.Button.prototype.onInputUpHandler=function(a,b,c){if(this.playStateSound(j),this.onInputUp&&this.onInputUp.dispatch(this,b,c),!this.freezeFrames)if(this.forceOut===!0||(this.forceOut&b.pointerMode)===b.pointerMode)this.changeStateFrame(h);else{var d=this.changeStateFrame(j);d||(c?this.changeStateFrame(g):this.changeStateFrame(h))}},c.SpriteBatch=function(a,b,d,e){(void 0===b||null===b)&&(b=a.world),PIXI.SpriteBatch.call(this),c.Group.call(this,a,b,d,e),this.type=c.SPRITEBATCH},c.SpriteBatch.prototype=c.Utils.extend(!0,c.SpriteBatch.prototype,PIXI.SpriteBatch.prototype,c.Group.prototype),c.SpriteBatch.prototype.constructor=c.SpriteBatch,c.BitmapData=function(a,b,d,e){(void 0===d||0===d)&&(d=256),(void 0===e||0===e)&&(e=256),this.game=a,this.key=b,this.width=d,this.height=e,this.canvas=PIXI.CanvasPool.create(this,d,e),this.context=this.canvas.getContext("2d",{alpha:!0}),this.ctx=this.context,this.smoothProperty=a.renderType===c.CANVAS?a.renderer.renderSession.smoothProperty:c.Canvas.getSmoothingPrefix(this.context),this.imageData=this.context.getImageData(0,0,d,e),this.data=null,this.imageData&&(this.data=this.imageData.data),this.pixels=null,this.data&&(this.imageData.data.buffer?(this.buffer=this.imageData.data.buffer,this.pixels=new Uint32Array(this.buffer)):window.ArrayBuffer?(this.buffer=new ArrayBuffer(this.imageData.data.length),this.pixels=new Uint32Array(this.buffer)):this.pixels=this.imageData.data),this.baseTexture=new PIXI.BaseTexture(this.canvas),this.texture=new PIXI.Texture(this.baseTexture),this.frameData=new c.FrameData,this.textureFrame=this.frameData.addFrame(new c.Frame(0,0,0,d,e,"bitmapData")),this.texture.frame=this.textureFrame,this.type=c.BITMAPDATA,this.disableTextureUpload=!1,this.dirty=!1,this.cls=this.clear,this._image=null,this._pos=new c.Point,this._size=new c.Point,this._scale=new c.Point,this._rotate=0,this._alpha={prev:1,current:1},this._anchor=new c.Point,this._tempR=0,this._tempG=0,this._tempB=0,this._circle=new c.Circle,this._swapCanvas=void 0},c.BitmapData.prototype={move:function(a,b,c){return 0!==a&&this.moveH(a,c),0!==b&&this.moveV(b,c),this},moveH:function(a,b){void 0===b&&(b=!0),void 0===this._swapCanvas&&(this._swapCanvas=PIXI.CanvasPool.create(this,this.width,this.height));var c=this._swapCanvas,d=c.getContext("2d"),e=this.height,f=this.canvas;if(d.clearRect(0,0,this.width,this.height),0>a){a=Math.abs(a);var g=this.width-a;b&&d.drawImage(f,0,0,a,e,g,0,a,e),d.drawImage(f,a,0,g,e,0,0,g,e)}else{var g=this.width-a;b&&d.drawImage(f,g,0,a,e,0,0,a,e),d.drawImage(f,0,0,g,e,a,0,g,e)}return this.clear(),this.copy(this._swapCanvas)},moveV:function(a,b){void 0===b&&(b=!0),void 0===this._swapCanvas&&(this._swapCanvas=PIXI.CanvasPool.create(this,this.width,this.height));var c=this._swapCanvas,d=c.getContext("2d"),e=this.width,f=this.canvas;if(d.clearRect(0,0,this.width,this.height),0>a){a=Math.abs(a);var g=this.height-a;b&&d.drawImage(f,0,0,e,a,0,g,e,a),d.drawImage(f,0,a,e,g,0,0,e,g)}else{var g=this.height-a;b&&d.drawImage(f,0,g,e,a,0,0,e,a),d.drawImage(f,0,0,e,g,0,a,e,g)}return this.clear(),this.copy(this._swapCanvas)},add:function(a){if(Array.isArray(a))for(var b=0;bm;m++)for(var n=d;h>n;n++)c.Color.unpackPixel(this.getPixel32(n,m),j),k=a.call(b,j,n,m),k!==!1&&null!==k&&void 0!==k&&(this.setPixel32(n,m,k.r,k.g,k.b,k.a,!1),l=!0);return l&&(this.context.putImageData(this.imageData,0,0),this.dirty=!0),this},processPixel:function(a,b,c,d,e,f){void 0===c&&(c=0),void 0===d&&(d=0),void 0===e&&(e=this.width),void 0===f&&(f=this.height);for(var g=c+e,h=d+f,i=0,j=0,k=!1,l=d;h>l;l++)for(var m=c;g>m;m++)i=this.getPixel32(m,l),j=a.call(b,i,m,l),j!==i&&(this.pixels[l*this.width+m]=j,k=!0);return k&&(this.context.putImageData(this.imageData,0,0),this.dirty=!0),this},replaceRGB:function(a,b,d,e,f,g,h,i,j){var k=0,l=0,m=this.width,n=this.height,o=c.Color.packPixel(a,b,d,e);void 0!==j&&j instanceof c.Rectangle&&(k=j.x,l=j.y,m=j.width,n=j.height);for(var p=0;n>p;p++)for(var q=0;m>q;q++)this.getPixel32(k+q,l+p)===o&&this.setPixel32(k+q,l+p,f,g,h,i,!1);return this.context.putImageData(this.imageData,0,0),this.dirty=!0,this},setHSL:function(a,b,d,e){var f=a||0===a,g=b||0===b,h=d||0===d;if(f||g||h){void 0===e&&(e=new c.Rectangle(0,0,this.width,this.height));for(var i=c.Color.createColor(),j=e.y;j=0&&a<=this.width&&b>=0&&b<=this.height&&(c.Device.LITTLE_ENDIAN?this.pixels[b*this.width+a]=g<<24|f<<16|e<<8|d:this.pixels[b*this.width+a]=d<<24|e<<16|f<<8|g,h&&(this.context.putImageData(this.imageData,0,0),this.dirty=!0)),this},setPixel:function(a,b,c,d,e,f){return this.setPixel32(a,b,c,d,e,255,f)},getPixel:function(a,b,d){d||(d=c.Color.createColor());var e=~~(a+b*this.width);return e*=4,d.r=this.data[e],d.g=this.data[++e],d.b=this.data[++e],d.a=this.data[++e],d},getPixel32:function(a,b){return a>=0&&a<=this.width&&b>=0&&b<=this.height?this.pixels[b*this.width+a]:void 0},getPixelRGB:function(a,b,d,e,f){return c.Color.unpackPixel(this.getPixel32(a,b),d,e,f)},getPixels:function(a){return this.context.getImageData(a.x,a.y,a.width,a.height)},getFirstPixel:function(a){void 0===a&&(a=0);var b=c.Color.createColor(),d=0,e=0,f=1,g=!1;1===a?(f=-1,e=this.height):3===a&&(f=-1,d=this.width);do c.Color.unpackPixel(this.getPixel32(d,e),b),0===a||1===a?(d++,d===this.width&&(d=0,e+=f,(e>=this.height||0>=e)&&(g=!0))):(2===a||3===a)&&(e++,e===this.height&&(e=0,d+=f,(d>=this.width||0>=d)&&(g=!0)));while(0===b.a&&!g);return b.x=d,b.y=e,b},getBounds:function(a){return void 0===a&&(a=new c.Rectangle),a.x=this.getFirstPixel(2).x,a.x===this.width?a.setTo(0,0,0,0):(a.y=this.getFirstPixel(0).y,a.width=this.getFirstPixel(3).x-a.x+1,a.height=this.getFirstPixel(1).y-a.y+1,a)},addToWorld:function(a,b,c,d,e,f){e=e||1,f=f||1;var g=this.game.add.image(a,b,this);return g.anchor.set(c,d),g.scale.set(e,f),g},copy:function(a,b,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r){if((void 0===a||null===a)&&(a=this),(a instanceof c.RenderTexture||a instanceof PIXI.RenderTexture)&&(a=a.getCanvas()),this._image=a,a instanceof c.Sprite||a instanceof c.Image||a instanceof c.Text||a instanceof PIXI.Sprite)this._pos.set(a.texture.crop.x,a.texture.crop.y),this._size.set(a.texture.crop.width,a.texture.crop.height),this._scale.set(a.scale.x,a.scale.y),this._anchor.set(a.anchor.x,a.anchor.y),this._rotate=a.rotation,this._alpha.current=a.alpha,a.texture instanceof c.RenderTexture||a.texture instanceof PIXI.RenderTexture?this._image=a.texture.getCanvas():this._image=a.texture.baseTexture.source,(void 0===g||null===g)&&(g=a.x),(void 0===h||null===h)&&(h=a.y),a.texture.trim&&(g+=a.texture.trim.x-a.anchor.x*a.texture.trim.width,h+=a.texture.trim.y-a.anchor.y*a.texture.trim.height),16777215!==a.tint&&(a.cachedTint!==a.tint&&(a.cachedTint=a.tint,a.tintedTexture=PIXI.CanvasTinter.getTintedTexture(a,a.tint)),this._image=a.tintedTexture,this._pos.set(0));else{if(this._pos.set(0),this._scale.set(1),this._anchor.set(0),this._rotate=0,this._alpha.current=1,a instanceof c.BitmapData)this._image=a.canvas;else if("string"==typeof a){if(a=this.game.cache.getImage(a),null===a)return;this._image=a}this._size.set(this._image.width,this._image.height)}if((void 0===b||null===b)&&(b=0),(void 0===d||null===d)&&(d=0),e&&(this._size.x=e),f&&(this._size.y=f),(void 0===g||null===g)&&(g=b),(void 0===h||null===h)&&(h=d),(void 0===i||null===i)&&(i=this._size.x),(void 0===j||null===j)&&(j=this._size.y),"number"==typeof k&&(this._rotate=k),"number"==typeof l&&(this._anchor.x=l),"number"==typeof m&&(this._anchor.y=m),"number"==typeof n&&(this._scale.x=n),"number"==typeof o&&(this._scale.y=o),"number"==typeof p&&(this._alpha.current=p),void 0===q&&(q=null),void 0===r&&(r=!1),!(this._alpha.current<=0||0===this._scale.x||0===this._scale.y||0===this._size.x||0===this._size.y)){var s=this.context;return this._alpha.prev=s.globalAlpha,s.save(),s.globalAlpha=this._alpha.current,q&&(this.op=q),r&&(g|=0,h|=0),s.translate(g,h),s.scale(this._scale.x,this._scale.y),s.rotate(this._rotate),s.drawImage(this._image,this._pos.x+b,this._pos.y+d,this._size.x,this._size.y,-i*this._anchor.x,-j*this._anchor.y,i,j),s.restore(),s.globalAlpha=this._alpha.prev,this.dirty=!0,this}},copyTransform:function(a,b,d){if(void 0===b&&(b=null),void 0===d&&(d=!1),!a.hasOwnProperty("worldTransform")||!a.worldVisible||0===a.worldAlpha)return this;var e=a.worldTransform;if(this._pos.set(a.texture.crop.x,a.texture.crop.y),this._size.set(a.texture.crop.width,a.texture.crop.height),0===e.a||0===e.d||0===this._size.x||0===this._size.y)return this;a.texture instanceof c.RenderTexture||a.texture instanceof PIXI.RenderTexture?this._image=a.texture.getCanvas():this._image=a.texture.baseTexture.source;var f=e.tx,g=e.ty;a.texture.trim&&(f+=a.texture.trim.x-a.anchor.x*a.texture.trim.width,g+=a.texture.trim.y-a.anchor.y*a.texture.trim.height),16777215!==a.tint&&(a.cachedTint!==a.tint&&(a.cachedTint=a.tint,a.tintedTexture=PIXI.CanvasTinter.getTintedTexture(a,a.tint)),this._image=a.tintedTexture,this._pos.set(0)),d&&(f|=0,g|=0);var h=this.context;return this._alpha.prev=h.globalAlpha,h.save(),h.globalAlpha=this._alpha.current,b&&(this.op=b),h[this.smoothProperty]=a.texture.baseTexture.scaleMode===PIXI.scaleModes.LINEAR,h.setTransform(e.a,e.b,e.c,e.d,f,g),h.drawImage(this._image,this._pos.x,this._pos.y,this._size.x,this._size.y,-this._size.x*a.anchor.x,-this._size.y*a.anchor.y,this._size.x,this._size.y),h.restore(),h.globalAlpha=this._alpha.prev,this.dirty=!0,this},copyRect:function(a,b,c,d,e,f,g){return this.copy(a,b.x,b.y,b.width,b.height,c,d,b.width,b.height,0,0,0,1,1,e,f,g)},draw:function(a,b,c,d,e,f,g){return this.copy(a,null,null,null,null,b,c,d,e,null,null,null,null,null,null,f,g)},drawGroup:function(a,b,c){return a.total>0&&a.forEachExists(this.drawGroupProxy,this,b,c),this},drawGroupProxy:function(a,b,d){if(a.hasOwnProperty("texture")&&this.copyTransform(a,b,d),a.type===c.GROUP&&a.exists)this.drawGroup(a,b,d);else if(a.hasOwnProperty("children")&&a.children.length>0)for(var e=0;eb.width&&(e=b.width);var f=this.context;return f.fillStyle=f.createPattern(b,d),this._circle=new c.Circle(a.start.x,a.start.y,b.height),this._circle.circumferencePoint(a.angle-1.5707963267948966,!1,this._pos),f.save(),f.translate(this._pos.x,this._pos.y),f.rotate(a.angle),f.fillRect(0,0,e,b.height),f.restore(),this.dirty=!0,this}},render:function(){return!this.disableTextureUpload&&this.dirty&&(this.baseTexture.dirty(),this.dirty=!1),this},destroy:function(){this.frameData.destroy(),this.texture.destroy(!0),PIXI.CanvasPool.remove(this)},blendReset:function(){return this.op="source-over",this},blendSourceOver:function(){return this.op="source-over",this},blendSourceIn:function(){return this.op="source-in",this},blendSourceOut:function(){return this.op="source-out",this},blendSourceAtop:function(){return this.op="source-atop",this},blendDestinationOver:function(){return this.op="destination-over",this},blendDestinationIn:function(){return this.op="destination-in",this},blendDestinationOut:function(){return this.op="destination-out",this},blendDestinationAtop:function(){return this.op="destination-atop",this},blendXor:function(){return this.op="xor",this},blendAdd:function(){return this.op="lighter",this},blendMultiply:function(){return this.op="multiply",this},blendScreen:function(){return this.op="screen",this},blendOverlay:function(){return this.op="overlay",this},blendDarken:function(){return this.op="darken",this},blendLighten:function(){return this.op="lighten",this},blendColorDodge:function(){return this.op="color-dodge",this},blendColorBurn:function(){return this.op="color-burn",this},blendHardLight:function(){return this.op="hard-light",this},blendSoftLight:function(){return this.op="soft-light",this},blendDifference:function(){return this.op="difference",this},blendExclusion:function(){return this.op="exclusion",this},blendHue:function(){return this.op="hue",this},blendSaturation:function(){return this.op="saturation",this},blendColor:function(){return this.op="color",this},blendLuminosity:function(){return this.op="luminosity",this}},Object.defineProperty(c.BitmapData.prototype,"smoothed",{get:function(){c.Canvas.getSmoothingEnabled(this.context)},set:function(a){c.Canvas.setSmoothingEnabled(this.context,a)}}),Object.defineProperty(c.BitmapData.prototype,"op",{get:function(){return this.context.globalCompositeOperation},set:function(a){this.context.globalCompositeOperation=a}}),c.BitmapData.getTransform=function(a,b,c,d,e,f){return"number"!=typeof a&&(a=0),"number"!=typeof b&&(b=0),"number"!=typeof c&&(c=1),"number"!=typeof d&&(d=1),"number"!=typeof e&&(e=0),"number"!=typeof f&&(f=0),{sx:c,sy:d,scaleX:c,scaleY:d,skewX:e,skewY:f,translateX:a,translateY:b,tx:a,ty:b}},c.BitmapData.prototype.constructor=c.BitmapData,PIXI.Graphics=function(){PIXI.DisplayObjectContainer.call(this),this.renderable=!0,this.fillAlpha=1,this.lineWidth=0,this.lineColor=0,this.graphicsData=[],this.tint=16777215,this.blendMode=PIXI.blendModes.NORMAL,this.currentPath=null,this._webGL=[],this.isMask=!1,this.boundsPadding=0,this._localBounds=new PIXI.Rectangle(0,0,1,1),this.dirty=!0,this.webGLDirty=!1,this.cachedSpriteDirty=!1},PIXI.Graphics.prototype=Object.create(PIXI.DisplayObjectContainer.prototype),PIXI.Graphics.prototype.constructor=PIXI.Graphics,PIXI.Graphics.prototype.lineStyle=function(a,b,c){return this.lineWidth=a||0,this.lineColor=b||0,this.lineAlpha=void 0===c?1:c,this.currentPath&&(this.currentPath.shape.points.length?this.drawShape(new PIXI.Polygon(this.currentPath.shape.points.slice(-2))):(this.currentPath.lineWidth=this.lineWidth,this.currentPath.lineColor=this.lineColor,this.currentPath.lineAlpha=this.lineAlpha)),this},PIXI.Graphics.prototype.moveTo=function(a,b){return this.drawShape(new PIXI.Polygon([a,b])),this},PIXI.Graphics.prototype.lineTo=function(a,b){return this.currentPath||this.moveTo(0,0),this.currentPath.shape.points.push(a,b),this.dirty=!0,this},PIXI.Graphics.prototype.quadraticCurveTo=function(a,b,c,d){this.currentPath?0===this.currentPath.shape.points.length&&(this.currentPath.shape.points=[0,0]):this.moveTo(0,0);var e,f,g=20,h=this.currentPath.shape.points;0===h.length&&this.moveTo(0,0);for(var i=h[h.length-2],j=h[h.length-1],k=0,l=1;g>=l;++l)k=l/g,e=i+(a-i)*k,f=j+(b-j)*k,h.push(e+(a+(c-a)*k-e)*k,f+(b+(d-b)*k-f)*k);return this.dirty=!0,this},PIXI.Graphics.prototype.bezierCurveTo=function(a,b,c,d,e,f){this.currentPath?0===this.currentPath.shape.points.length&&(this.currentPath.shape.points=[0,0]):this.moveTo(0,0);for(var g,h,i,j,k,l=20,m=this.currentPath.shape.points,n=m[m.length-2],o=m[m.length-1],p=0,q=1;l>=q;++q)p=q/l,g=1-p,h=g*g,i=h*g,j=p*p,k=j*p,m.push(i*n+3*h*p*a+3*g*j*c+k*e,i*o+3*h*p*b+3*g*j*d+k*f);return this.dirty=!0,this},PIXI.Graphics.prototype.arcTo=function(a,b,c,d,e){this.currentPath?0===this.currentPath.shape.points.length&&this.currentPath.shape.points.push(a,b):this.moveTo(a,b);var f=this.currentPath.shape.points,g=f[f.length-2],h=f[f.length-1],i=h-b,j=g-a,k=d-b,l=c-a,m=Math.abs(i*l-j*k);if(1e-8>m||0===e)(f[f.length-2]!==a||f[f.length-1]!==b)&&f.push(a,b);else{var n=i*i+j*j,o=k*k+l*l,p=i*k+j*l,q=e*Math.sqrt(n)/m,r=e*Math.sqrt(o)/m,s=q*p/n,t=r*p/o,u=q*l+r*j,v=q*k+r*i,w=j*(r+s),x=i*(r+s),y=l*(q+t),z=k*(q+t),A=Math.atan2(x-v,w-u),B=Math.atan2(z-v,y-u);this.arc(u+a,v+b,e,A,B,j*k>l*i)}return this.dirty=!0,this},PIXI.Graphics.prototype.arc=function(a,b,c,d,e,f,g){if(d===e)return this;void 0===f&&(f=!1),void 0===g&&(g=40),!f&&d>=e?e+=2*Math.PI:f&&e>=d&&(d+=2*Math.PI);var h=f?-1*(d-e):e-d,i=Math.ceil(Math.abs(h)/(2*Math.PI))*g;if(0===h)return this;var j=a+Math.cos(d)*c,k=b+Math.sin(d)*c;f&&this.filling?this.moveTo(a,b):this.moveTo(j,k);for(var l=this.currentPath.shape.points,m=h/(2*i),n=2*m,o=Math.cos(m),p=Math.sin(m),q=i-1,r=q%1/q,s=0;q>=s;s++){var t=s+r*s,u=m+d+n*t,v=Math.cos(u),w=-Math.sin(u);l.push((o*v+p*w)*c+a,(o*-w+p*v)*c+b)}return this.dirty=!0,this},PIXI.Graphics.prototype.beginFill=function(a,b){return this.filling=!0,this.fillColor=a||0,this.fillAlpha=void 0===b?1:b,this.currentPath&&this.currentPath.shape.points.length<=2&&(this.currentPath.fill=this.filling,this.currentPath.fillColor=this.fillColor,this.currentPath.fillAlpha=this.fillAlpha),this},PIXI.Graphics.prototype.endFill=function(){return this.filling=!1,this.fillColor=null,this.fillAlpha=1,this},PIXI.Graphics.prototype.drawRect=function(a,b,c,d){return this.drawShape(new PIXI.Rectangle(a,b,c,d)),this},PIXI.Graphics.prototype.drawRoundedRect=function(a,b,c,d,e){return this.drawShape(new PIXI.RoundedRectangle(a,b,c,d,e)),this},PIXI.Graphics.prototype.drawCircle=function(a,b,c){return this.drawShape(new PIXI.Circle(a,b,c)),this},PIXI.Graphics.prototype.drawEllipse=function(a,b,c,d){return this.drawShape(new PIXI.Ellipse(a,b,c,d)),this},PIXI.Graphics.prototype.drawPolygon=function(a){(a instanceof c.Polygon||a instanceof PIXI.Polygon)&&(a=a.points);var b=a;if(!Array.isArray(b)){b=new Array(arguments.length);for(var d=0;dp?p:x,x=x>r?r:x,x=x>t?t:x,y=y>q?q:y,y=y>s?s:y,y=y>u?u:y,v=p>v?p:v,v=r>v?r:v,v=t>v?t:v,w=q>w?q:w,w=s>w?s:w,w=u>w?u:w,this._bounds.x=x,this._bounds.width=v-x,this._bounds.y=y,this._bounds.height=w-y,this._currentBounds=this._bounds}return this._currentBounds},PIXI.Graphics.prototype.containsPoint=function(a){this.worldTransform.applyInverse(a,tempPoint);for(var b=this.graphicsData,c=0;ch?h:a,b=h+j>b?h+j:b,d=d>i?i:d,e=i+k>e?i+k:e;else if(n===PIXI.Graphics.CIRC)h=f.x,i=f.y,j=f.radius+o/2,k=f.radius+o/2,a=a>h-j?h-j:a,b=h+j>b?h+j:b,d=d>i-k?i-k:d,e=i+k>e?i+k:e;else if(n===PIXI.Graphics.ELIP)h=f.x,i=f.y,j=f.width+o/2,k=f.height+o/2,a=a>h-j?h-j:a,b=h+j>b?h+j:b,d=d>i-k?i-k:d,e=i+k>e?i+k:e;else{g=f.points;for(var p=0;ph-o?h-o:a,b=h+o>b?h+o:b,d=d>i-o?i-o:d,e=i+o>e?i+o:e}}else a=0,b=0,d=0,e=0;var q=this.boundsPadding;this._localBounds.x=a-q,this._localBounds.width=b-a+2*q,this._localBounds.y=d-q,this._localBounds.height=e-d+2*q},PIXI.Graphics.prototype._generateCachedSprite=function(){var a=this.getLocalBounds();if(this._cachedSprite)this._cachedSprite.buffer.resize(a.width,a.height);else{var b=new PIXI.CanvasBuffer(a.width,a.height),c=PIXI.Texture.fromCanvas(b.canvas);this._cachedSprite=new PIXI.Sprite(c),this._cachedSprite.buffer=b,this._cachedSprite.worldTransform=this.worldTransform}this._cachedSprite.anchor.x=-(a.x/a.width),this._cachedSprite.anchor.y=-(a.y/a.height),this._cachedSprite.buffer.context.translate(-a.x,-a.y),this.worldAlpha=1,PIXI.CanvasGraphics.renderGraphics(this,this._cachedSprite.buffer.context),this._cachedSprite.alpha=this.alpha},PIXI.Graphics.prototype.updateCachedSpriteTexture=function(){var a=this._cachedSprite,b=a.texture,c=a.buffer.canvas;b.baseTexture.width=c.width,b.baseTexture.height=c.height,b.crop.width=b.frame.width=c.width,b.crop.height=b.frame.height=c.height,a._width=c.width,a._height=c.height,b.baseTexture.dirty()},PIXI.Graphics.prototype.destroyCachedSprite=function(){this._cachedSprite.texture.destroy(!0),this._cachedSprite=null},PIXI.Graphics.prototype.drawShape=function(a){this.currentPath&&this.currentPath.shape.points.length<=2&&this.graphicsData.pop(),this.currentPath=null,a instanceof c.Polygon&&(a=a.clone(),a.flatten());var b=new PIXI.GraphicsData(this.lineWidth,this.lineColor,this.lineAlpha,this.fillColor,this.fillAlpha,this.filling,a);return this.graphicsData.push(b),b.type===PIXI.Graphics.POLY&&(b.shape.closed=this.filling,this.currentPath=b),this.dirty=!0,b},Object.defineProperty(PIXI.Graphics.prototype,"cacheAsBitmap",{get:function(){return this._cacheAsBitmap},set:function(a){this._cacheAsBitmap=a,this._cacheAsBitmap?this._generateCachedSprite():this.destroyCachedSprite(),this.dirty=!0,this.webGLDirty=!0}}),PIXI.GraphicsData=function(a,b,c,d,e,f,g){this.lineWidth=a,this.lineColor=b,this.lineAlpha=c,this._lineTint=b,this.fillColor=d,this.fillAlpha=e,this._fillTint=d,this.fill=f,this.shape=g,this.type=g.type},PIXI.GraphicsData.prototype.constructor=PIXI.GraphicsData,PIXI.GraphicsData.prototype.clone=function(){return new GraphicsData(this.lineWidth,this.lineColor,this.lineAlpha,this.fillColor,this.fillAlpha,this.fill,this.shape)},PIXI.PolyK={},PIXI.PolyK.Triangulate=function(a){var b=!0,c=a.length>>1;if(3>c)return[];for(var d=[],e=[],f=0;c>f;f++)e.push(f);f=0;for(var g=c;g>3;){var h=e[(f+0)%g],i=e[(f+1)%g],j=e[(f+2)%g],k=a[2*h],l=a[2*h+1],m=a[2*i],n=a[2*i+1],o=a[2*j],p=a[2*j+1],q=!1;if(PIXI.PolyK._convex(k,l,m,n,o,p,b)){q=!0;for(var r=0;g>r;r++){var s=e[r];if(s!==h&&s!==i&&s!==j&&PIXI.PolyK._PointInTriangle(a[2*s],a[2*s+1],k,l,m,n,o,p)){q=!1;break}}}if(q)d.push(h,i,j),e.splice((f+1)%g,1),g--,f=0;else if(f++>3*g){if(!b)return null;for(d=[],e=[],f=0;c>f;f++)e.push(f);f=0,g=c,b=!1}}return d.push(e[0],e[1],e[2]),d},PIXI.PolyK._PointInTriangle=function(a,b,c,d,e,f,g,h){var i=g-c,j=h-d,k=e-c,l=f-d,m=a-c,n=b-d,o=i*i+j*j,p=i*k+j*l,q=i*m+j*n,r=k*k+l*l,s=k*m+l*n,t=1/(o*r-p*p),u=(r*q-p*s)*t,v=(o*s-p*q)*t;return u>=0&&v>=0&&1>u+v},PIXI.PolyK._convex=function(a,b,c,d,e,f,g){return(b-d)*(e-c)+(c-a)*(f-d)>=0===g},PIXI.EarCut={},PIXI.EarCut.Triangulate=function(a,b,c){c=c||2;var d=b&&b.length,e=d?b[0]*c:a.length,f=PIXI.EarCut.linkedList(a,0,e,c,!0),g=[];if(!f)return g;var h,i,j,k,l,m,n;if(d&&(f=PIXI.EarCut.eliminateHoles(a,b,f,c)),a.length>80*c){h=j=a[0],i=k=a[1];for(var o=c;e>o;o+=c)l=a[o],m=a[o+1],h>l&&(h=l),i>m&&(i=m),l>j&&(j=l),m>k&&(k=m);n=Math.max(j-h,k-i)}return PIXI.EarCut.earcutLinked(f,g,c,h,i,n),g},PIXI.EarCut.linkedList=function(a,b,c,d,e){var f,g,h,i=0;for(f=b,g=c-d;c>f;f+=d)i+=(a[g]-a[f])*(a[f+1]+a[g+1]),g=f;if(e===i>0)for(f=b;c>f;f+=d)h=PIXI.EarCut.insertNode(f,a[f],a[f+1],h);else for(f=c-d;f>=b;f-=d)h=PIXI.EarCut.insertNode(f,a[f],a[f+1],h);return h},PIXI.EarCut.filterPoints=function(a,b){if(!a)return a;b||(b=a);var c,d=a;do if(c=!1,d.steiner||!PIXI.EarCut.equals(d,d.next)&&0!==PIXI.EarCut.area(d.prev,d,d.next))d=d.next;else{if(PIXI.EarCut.removeNode(d),d=b=d.prev,d===d.next)return null;c=!0}while(c||d!==b);return b},PIXI.EarCut.earcutLinked=function(a,b,c,d,e,f,g){if(a){!g&&f&&PIXI.EarCut.indexCurve(a,d,e,f);for(var h,i,j=a;a.prev!==a.next;)if(h=a.prev,i=a.next,f?PIXI.EarCut.isEarHashed(a,d,e,f):PIXI.EarCut.isEar(a))b.push(h.i/c),b.push(a.i/c),b.push(i.i/c),PIXI.EarCut.removeNode(a),a=i.next,j=i.next;else if(a=i,a===j){g?1===g?(a=PIXI.EarCut.cureLocalIntersections(a,b,c),PIXI.EarCut.earcutLinked(a,b,c,d,e,f,2)):2===g&&PIXI.EarCut.splitEarcut(a,b,c,d,e,f):PIXI.EarCut.earcutLinked(PIXI.EarCut.filterPoints(a),b,c,d,e,f,1);break}}},PIXI.EarCut.isEar=function(a){var b=a.prev,c=a,d=a.next;if(PIXI.EarCut.area(b,c,d)>=0)return!1;for(var e=a.next.next;e!==a.prev;){if(PIXI.EarCut.pointInTriangle(b.x,b.y,c.x,c.y,d.x,d.y,e.x,e.y)&&PIXI.EarCut.area(e.prev,e,e.next)>=0)return!1;e=e.next}return!0},PIXI.EarCut.isEarHashed=function(a,b,c,d){var e=a.prev,f=a,g=a.next;if(PIXI.EarCut.area(e,f,g)>=0)return!1;for(var h=e.xf.x?e.x>g.x?e.x:g.x:f.x>g.x?f.x:g.x,k=e.y>f.y?e.y>g.y?e.y:g.y:f.y>g.y?f.y:g.y,l=PIXI.EarCut.zOrder(h,i,b,c,d),m=PIXI.EarCut.zOrder(j,k,b,c,d),n=a.nextZ;n&&n.z<=m;){if(n!==a.prev&&n!==a.next&&PIXI.EarCut.pointInTriangle(e.x,e.y,f.x,f.y,g.x,g.y,n.x,n.y)&&PIXI.EarCut.area(n.prev,n,n.next)>=0)return!1;n=n.nextZ}for(n=a.prevZ;n&&n.z>=l;){if(n!==a.prev&&n!==a.next&&PIXI.EarCut.pointInTriangle(e.x,e.y,f.x,f.y,g.x,g.y,n.x,n.y)&&PIXI.EarCut.area(n.prev,n,n.next)>=0)return!1;n=n.prevZ}return!0},PIXI.EarCut.cureLocalIntersections=function(a,b,c){var d=a;do{var e=d.prev,f=d.next.next;PIXI.EarCut.intersects(e,d,d.next,f)&&PIXI.EarCut.locallyInside(e,f)&&PIXI.EarCut.locallyInside(f,e)&&(b.push(e.i/c),b.push(d.i/c),b.push(f.i/c),PIXI.EarCut.removeNode(d),PIXI.EarCut.removeNode(d.next),d=a=f),d=d.next}while(d!==a);return d},PIXI.EarCut.splitEarcut=function(a,b,c,d,e,f){var g=a;do{for(var h=g.next.next;h!==g.prev;){if(g.i!==h.i&&PIXI.EarCut.isValidDiagonal(g,h)){var i=PIXI.EarCut.splitPolygon(g,h);return g=PIXI.EarCut.filterPoints(g,g.next),i=PIXI.EarCut.filterPoints(i,i.next),PIXI.EarCut.earcutLinked(g,b,c,d,e,f),void PIXI.EarCut.earcutLinked(i,b,c,d,e,f)}h=h.next}g=g.next}while(g!==a)},PIXI.EarCut.eliminateHoles=function(a,b,c,d){var e,f,g,h,i,j=[];for(e=0,f=b.length;f>e;e++)g=b[e]*d,h=f-1>e?b[e+1]*d:a.length,i=PIXI.EarCut.linkedList(a,g,h,d,!1),i===i.next&&(i.steiner=!0),j.push(PIXI.EarCut.getLeftmost(i));for(j.sort(compareX),e=0;e=d.next.y){var h=d.x+(f-d.y)*(d.next.x-d.x)/(d.next.y-d.y);e>=h&&h>g&&(g=h,c=d.x=d.x&&d.x>=c.x&&PIXI.EarCut.pointInTriangle(fi||i===k&&d.x>c.x)&&PIXI.EarCut.locallyInside(d,a)&&(c=d,k=i)),d=d.next;return c},PIXI.EarCut.indexCurve=function(a,b,c,d){var e=a;do null===e.z&&(e.z=PIXI.EarCut.zOrder(e.x,e.y,b,c,d)),e.prevZ=e.prev,e.nextZ=e.next,e=e.next;while(e!==a);e.prevZ.nextZ=null,e.prevZ=null,PIXI.EarCut.sortLinked(e)},PIXI.EarCut.sortLinked=function(a){var b,c,d,e,f,g,h,i,j=1;do{for(c=a,a=null,f=null,g=0;c;){for(g++,d=c,h=0,b=0;j>b&&(h++,d=d.nextZ,d);b++);for(i=j;h>0||i>0&&d;)0===h?(e=d,d=d.nextZ,i--):0!==i&&d?c.z<=d.z?(e=c,c=c.nextZ,h--):(e=d,d=d.nextZ,i--):(e=c,c=c.nextZ,h--),f?f.nextZ=e:a=e,e.prevZ=f,f=e;c=d}f.nextZ=null,j*=2}while(g>1);return a},PIXI.EarCut.zOrder=function(a,b,c,d,e){return a=32767*(a-c)/e,b=32767*(b-d)/e,a=16711935&(a|a<<8),a=252645135&(a|a<<4),a=858993459&(a|a<<2),a=1431655765&(a|a<<1),b=16711935&(b|b<<8),b=252645135&(b|b<<4),b=858993459&(b|b<<2),b=1431655765&(b|b<<1),a|b<<1},PIXI.EarCut.getLeftmost=function(a){var b=a,c=a;do b.x=0&&(a-g)*(d-h)-(c-g)*(b-h)>=0&&(c-g)*(f-h)-(e-g)*(d-h)>=0},PIXI.EarCut.isValidDiagonal=function(a,b){return PIXI.EarCut.equals(a,b)||a.next.i!==b.i&&a.prev.i!==b.i&&!PIXI.EarCut.intersectsPolygon(a,b)&&PIXI.EarCut.locallyInside(a,b)&&PIXI.EarCut.locallyInside(b,a)&&PIXI.EarCut.middleInside(a,b)},PIXI.EarCut.area=function(a,b,c){return(b.y-a.y)*(c.x-b.x)-(b.x-a.x)*(c.y-b.y)},PIXI.EarCut.equals=function(a,b){return a.x===b.x&&a.y===b.y},PIXI.EarCut.intersects=function(a,b,c,d){return PIXI.EarCut.area(a,b,c)>0!=PIXI.EarCut.area(a,b,d)>0&&PIXI.EarCut.area(c,d,a)>0!=PIXI.EarCut.area(c,d,b)>0},PIXI.EarCut.intersectsPolygon=function(a,b){var c=a;do{if(c.i!==a.i&&c.next.i!==a.i&&c.i!==b.i&&c.next.i!==b.i&&PIXI.EarCut.intersects(c,c.next,a,b))return!0;c=c.next}while(c!==a);return!1},PIXI.EarCut.locallyInside=function(a,b){return PIXI.EarCut.area(a.prev,a,a.next)<0?PIXI.EarCut.area(a,b,a.next)>=0&&PIXI.EarCut.area(a,a.prev,b)>=0:PIXI.EarCut.area(a,b,a.prev)<0||PIXI.EarCut.area(a,a.next,b)<0},PIXI.EarCut.middleInside=function(a,b){var c=a,d=!1,e=(a.x+b.x)/2,f=(a.y+b.y)/2;do c.y>f!=c.next.y>f&&e<(c.next.x-c.x)*(f-c.y)/(c.next.y-c.y)+c.x&&(d=!d),c=c.next;while(c!==a);return d},PIXI.EarCut.splitPolygon=function(a,b){var c=new PIXI.EarCut.Node(a.i,a.x,a.y),d=new PIXI.EarCut.Node(b.i,b.x,b.y),e=a.next,f=b.prev;return a.next=b,b.prev=a,c.next=e,e.prev=c,d.next=c,c.prev=d,f.next=d,d.prev=f,d},PIXI.EarCut.insertNode=function(a,b,c,d){var e=new PIXI.EarCut.Node(a,b,c);return d?(e.next=d.next,e.prev=d,d.next.prev=e,d.next=e):(e.prev=e,e.next=e),e},PIXI.EarCut.removeNode=function(a){a.next.prev=a.prev,a.prev.next=a.next,a.prevZ&&(a.prevZ.nextZ=a.nextZ),a.nextZ&&(a.nextZ.prevZ=a.prevZ)},PIXI.EarCut.Node=function(a,b,c){this.i=a,this.x=b,this.y=c,this.prev=null,this.next=null,this.z=null,this.prevZ=null,this.nextZ=null,this.steiner=!1},PIXI.WebGLGraphics=function(){},PIXI.WebGLGraphics.stencilBufferLimit=6,PIXI.WebGLGraphics.renderGraphics=function(a,b){var c,d=b.gl,e=b.projection,f=b.offset,g=b.shaderManager.primitiveShader;a.dirty&&PIXI.WebGLGraphics.updateGraphics(a,d);for(var h=a._webGL[d.id],i=0;i=PIXI.WebGLGraphics.stencilBufferLimit)if(g.points.length<2*PIXI.WebGLGraphics.stencilBufferLimit){f=PIXI.WebGLGraphics.switchMode(c,0);var h=PIXI.WebGLGraphics.buildPoly(g,f);h||(f=PIXI.WebGLGraphics.switchMode(c,1),PIXI.WebGLGraphics.buildComplexPoly(g,f))}else f=PIXI.WebGLGraphics.switchMode(c,1),PIXI.WebGLGraphics.buildComplexPoly(g,f);g.lineWidth>0&&(f=PIXI.WebGLGraphics.switchMode(c,0),PIXI.WebGLGraphics.buildLine(g,f))}else f=PIXI.WebGLGraphics.switchMode(c,0),g.type===PIXI.Graphics.RECT?PIXI.WebGLGraphics.buildRectangle(g,f):g.type===PIXI.Graphics.CIRC||g.type===PIXI.Graphics.ELIP?PIXI.WebGLGraphics.buildCircle(g,f):g.type===PIXI.Graphics.RREC&&PIXI.WebGLGraphics.buildRoundedRectangle(g,f);c.lastIndex++}for(d=0;d=q;q++)p=q/n,h=g(a,c,p),i=g(b,d,p),j=g(c,e,p),k=g(d,f,p),l=g(h,j,p),m=g(i,k,p),o.push(l,m);return o},PIXI.WebGLGraphics.buildCircle=function(a,b){var c,d,e=a.shape,f=e.x,g=e.y;a.type===PIXI.Graphics.CIRC?(c=e.radius,d=e.radius):(c=e.width,d=e.height);var h=40,i=2*Math.PI/h,j=0;if(a.fill){var k=PIXI.hex2rgb(a.fillColor),l=a.fillAlpha,m=k[0]*l,n=k[1]*l,o=k[2]*l,p=b.points,q=b.indices,r=p.length/6;for(q.push(r),j=0;h+1>j;j++)p.push(f,g,m,n,o,l),p.push(f+Math.sin(i*j)*c,g+Math.cos(i*j)*d,m,n,o,l),q.push(r++,r++);q.push(r-1)}if(a.lineWidth){var s=a.points;for(a.points=[],j=0;h+1>j;j++)a.points.push(f+Math.sin(i*j)*c,g+Math.cos(i*j)*d);PIXI.WebGLGraphics.buildLine(a,b),a.points=s}},PIXI.WebGLGraphics.buildLine=function(a,b){var c=0,d=a.points;if(0!==d.length){if(a.lineWidth%2)for(c=0;cc;c++)k=d[2*(c-1)],l=d[2*(c-1)+1],m=d[2*c],n=d[2*c+1],o=d[2*(c+1)],p=d[2*(c+1)+1],q=-(l-n),r=k-m,E=Math.sqrt(q*q+r*r),q/=E,r/=E,q*=K,r*=K,s=-(n-p),t=m-o,E=Math.sqrt(s*s+t*t),s/=E,t/=E,s*=K,t*=K,w=-r+l-(-r+n),x=-q+m-(-q+k),y=(-q+k)*(-r+n)-(-q+m)*(-r+l),z=-t+p-(-t+n),A=-s+m-(-s+o),B=(-s+o)*(-t+n)-(-s+m)*(-t+p),C=w*A-z*x,Math.abs(C)<.1?(C+=10.1,F.push(m-q,n-r,N,O,P,M),F.push(m+q,n+r,N,O,P,M)):(i=(x*B-A*y)/C,j=(z*y-w*B)/C,D=(i-m)*(i-m)+(j-n)+(j-n),D>19600?(u=q-s,v=r-t,E=Math.sqrt(u*u+v*v),u/=E,v/=E,u*=K,v*=K,F.push(m-u,n-v),F.push(N,O,P,M),F.push(m+u,n+v),F.push(N,O,P,M),F.push(m-u,n-v),F.push(N,O,P,M),I++):(F.push(i,j),F.push(N,O,P,M),F.push(m-(i-m),n-(j-n)),F.push(N,O,P,M)));for(k=d[2*(H-2)],l=d[2*(H-2)+1],m=d[2*(H-1)],n=d[2*(H-1)+1],q=-(l-n),r=k-m,E=Math.sqrt(q*q+r*r),q/=E,r/=E,q*=K,r*=K,F.push(m-q,n-r),F.push(N,O,P,M),F.push(m+q,n+r),F.push(N,O,P,M),G.push(J),c=0;I>c;c++)G.push(J++);G.push(J-1)}},PIXI.WebGLGraphics.buildComplexPoly=function(a,b){var c=a.points.slice();if(!(c.length<6)){var d=b.indices;b.points=c,b.alpha=a.fillAlpha,b.color=PIXI.hex2rgb(a.fillColor);for(var e,f,g=1/0,h=-(1/0),i=1/0,j=-(1/0),k=0;ke?e:g,h=e>h?e:h,i=i>f?f:i,j=f>j?f:j;c.push(g,i,h,i,h,j,g,j);var l=c.length/2;for(k=0;l>k;k++)d.push(k)}},PIXI.WebGLGraphics.buildPoly=function(a,b){var c=a.points;if(!(c.length<6)){var d=b.points,e=b.indices,f=c.length/2,g=PIXI.hex2rgb(a.fillColor),h=a.fillAlpha,i=g[0]*h,j=g[1]*h,k=g[2]*h,l=PIXI.EarCut.Triangulate(c,null,2);if(!l)return!1;var m=d.length/6,n=0;for(n=0;nn;n++)d.push(c[2*n],c[2*n+1],i,j,k,h);return!0}},PIXI.WebGLGraphics.graphicsDataPool=[],PIXI.WebGLGraphicsData=function(a){this.gl=a,this.color=[0,0,0],this.points=[],this.indices=[],this.buffer=a.createBuffer(),this.indexBuffer=a.createBuffer(),this.mode=1,this.alpha=1,this.dirty=!0},PIXI.WebGLGraphicsData.prototype.reset=function(){this.points=[],this.indices=[]},PIXI.WebGLGraphicsData.prototype.upload=function(){var a=this.gl;this.glPoints=new PIXI.Float32Array(this.points),a.bindBuffer(a.ARRAY_BUFFER,this.buffer),a.bufferData(a.ARRAY_BUFFER,this.glPoints,a.STATIC_DRAW),this.glIndicies=new PIXI.Uint16Array(this.indices),a.bindBuffer(a.ELEMENT_ARRAY_BUFFER,this.indexBuffer),a.bufferData(a.ELEMENT_ARRAY_BUFFER,this.glIndicies,a.STATIC_DRAW),this.dirty=!1},PIXI.CanvasGraphics=function(){},PIXI.CanvasGraphics.renderGraphics=function(a,b){var c=a.worldAlpha;a.dirty&&(this.updateGraphicsTint(a),a.dirty=!1);for(var d=0;dA?A:z,b.beginPath(),b.moveTo(v,w+z),b.lineTo(v,w+y-z),b.quadraticCurveTo(v,w+y,v+z,w+y),b.lineTo(v+x-z,w+y),b.quadraticCurveTo(v+x,w+y,v+x,w+y-z),b.lineTo(v+x,w+z),b.quadraticCurveTo(v+x,w,v+x-z,w),b.lineTo(v+z,w),b.quadraticCurveTo(v,w,v,w+z),b.closePath(),(e.fillColor||0===e.fillColor)&&(b.globalAlpha=e.fillAlpha*c,b.fillStyle="#"+("00000"+(0|g).toString(16)).substr(-6),b.fill()),e.lineWidth&&(b.globalAlpha=e.lineAlpha*c,b.strokeStyle="#"+("00000"+(0|h).toString(16)).substr(-6),b.stroke())}}},PIXI.CanvasGraphics.renderGraphicsMask=function(a,b){var c=a.graphicsData.length;if(0!==c){b.beginPath();for(var d=0;c>d;d++){var e=a.graphicsData[d],f=e.shape;if(e.type===PIXI.Graphics.POLY){var g=f.points;b.moveTo(g[0],g[1]);for(var h=1;hy?y:x,b.moveTo(t,u+x),b.lineTo(t,u+w-x),b.quadraticCurveTo(t,u+w,t+x,u+w),b.lineTo(t+v-x,u+w),b.quadraticCurveTo(t+v,u+w,t+v,u+w-x),b.lineTo(t+v,u+x),b.quadraticCurveTo(t+v,u,t+v-x,u),b.lineTo(t+x,u),b.quadraticCurveTo(t,u,t,u+x),b.closePath()}}}},PIXI.CanvasGraphics.updateGraphicsTint=function(a){if(16777215!==a.tint)for(var b=(a.tint>>16&255)/255,c=(a.tint>>8&255)/255,d=(255&a.tint)/255,e=0;e>16&255)/255*b*255<<16)+((g>>8&255)/255*c*255<<8)+(255&g)/255*d*255,f._lineTint=((h>>16&255)/255*b*255<<16)+((h>>8&255)/255*c*255<<8)+(255&h)/255*d*255}},c.Graphics=function(a,b,d){void 0===b&&(b=0),void 0===d&&(d=0),this.type=c.GRAPHICS,this.physicsType=c.SPRITE,this.anchor=new c.Point,PIXI.Graphics.call(this),c.Component.Core.init.call(this,a,b,d,"",null)},c.Graphics.prototype=Object.create(PIXI.Graphics.prototype),c.Graphics.prototype.constructor=c.Graphics,c.Component.Core.install.call(c.Graphics.prototype,["Angle","AutoCull","Bounds","Destroy","FixedToCamera","InputEnabled","InWorld","LifeSpan","PhysicsBody","Reset"]),c.Graphics.prototype.preUpdatePhysics=c.Component.PhysicsBody.preUpdate,c.Graphics.prototype.preUpdateLifeSpan=c.Component.LifeSpan.preUpdate,c.Graphics.prototype.preUpdateInWorld=c.Component.InWorld.preUpdate,c.Graphics.prototype.preUpdateCore=c.Component.Core.preUpdate,c.Graphics.prototype.preUpdate=function(){return this.preUpdatePhysics()&&this.preUpdateLifeSpan()&&this.preUpdateInWorld()?this.preUpdateCore():!1},c.Graphics.prototype.destroy=function(a){this.clear(),c.Component.Destroy.prototype.destroy.call(this,a)},c.Graphics.prototype.drawTriangle=function(a,b){void 0===b&&(b=!1);var d=new c.Polygon(a);if(b){var e=new c.Point(this.game.camera.x-a[0].x,this.game.camera.y-a[0].y),f=new c.Point(a[1].x-a[0].x,a[1].y-a[0].y),g=new c.Point(a[1].x-a[2].x,a[1].y-a[2].y),h=g.cross(f);e.dot(h)>0&&this.drawPolygon(d)}else this.drawPolygon(d)},c.Graphics.prototype.drawTriangles=function(a,b,d){void 0===d&&(d=!1);var e,f=new c.Point,g=new c.Point,h=new c.Point,i=[];if(b)if(a[0]instanceof c.Point)for(e=0;e0&&this.style.maxLinesh;h++){if(0===c){var i=this.style.strokeThickness+this.padding.x;i+=this.colors.length>0||this.strokeColors.length>0||this.fontWeights.length>0||this.fontStyles.length>0?this.measureLine(b[h]):this.context.measureText(b[h]).width,this.style.wordWrap&&(i-=this.context.measureText(" ").width)}else{var j=b[h].split(/(?:\t)/),i=this.padding.x+this.style.strokeThickness;if(Array.isArray(c))for(var k=0,l=0;l0||this.strokeColors.length>0||this.fontWeights.length>0||this.fontStyles.length>0?this.measureLine(j[l]):Math.ceil(this.context.measureText(j[l]).width),l>0&&(k+=c[l-1]),i=k+m}else for(var l=0;l0||this.strokeColors.length>0||this.fontWeights.length>0||this.fontStyles.length>0?this.measureLine(j[l]):Math.ceil(this.context.measureText(j[l]).width);var n=this.game.math.snapToCeil(i,c)-i;i+=n}}d[h]=Math.ceil(i),e=Math.max(e,d[h])}this.canvas.width=e*this._res;var o=f.fontSize+this.style.strokeThickness+this.padding.y,p=o*g,q=this._lineSpacing;0>q&&Math.abs(q)>o&&(q=-o),0!==q&&(p+=q>0?q*b.length:q*(b.length-1)),this.canvas.height=p*this._res,this.context.scale(this._res,this._res),navigator.isCocoonJS&&this.context.clearRect(0,0,this.canvas.width,this.canvas.height),this.style.backgroundColor&&(this.context.fillStyle=this.style.backgroundColor,this.context.fillRect(0,0,this.canvas.width,this.canvas.height)),this.context.fillStyle=this.style.fill, -this.context.font=this.style.font,this.context.strokeStyle=this.style.stroke,this.context.textBaseline="alphabetic",this.context.lineWidth=this.style.strokeThickness,this.context.lineCap="round",this.context.lineJoin="round";var r,s;for(this._charCount=0,h=0;g>h;h++)r=this.style.strokeThickness/2,s=this.style.strokeThickness/2+h*o+f.ascent,h>0&&(s+=q*h),"right"===this.style.align?r+=e-d[h]:"center"===this.style.align&&(r+=(e-d[h])/2),this.autoRound&&(r=Math.round(r),s=Math.round(s)),this.colors.length>0||this.strokeColors.length>0||this.fontWeights.length>0||this.fontStyles.length>0?this.updateLine(b[h],r,s):(this.style.stroke&&this.style.strokeThickness&&(this.updateShadow(this.style.shadowStroke),0===c?this.context.strokeText(b[h],r,s):this.renderTabLine(b[h],r,s,!1)),this.style.fill&&(this.updateShadow(this.style.shadowFill),0===c?this.context.fillText(b[h],r,s):this.renderTabLine(b[h],r,s,!0)));this.updateTexture()},c.Text.prototype.renderTabLine=function(a,b,c,d){var e=a.split(/(?:\t)/),f=this.style.tabs,g=0;if(Array.isArray(f))for(var h=0,i=0;i0&&(h+=f[i-1]),g=b+h,d?this.context.fillText(e[i],g,c):this.context.strokeText(e[i],g,c);else for(var i=0;i0||this.fontStyles.length>0){var e=this.fontToComponents(this.context.font);this.fontStyles[this._charCount]&&(e.fontStyle=this.fontStyles[this._charCount]),this.fontWeights[this._charCount]&&(e.fontWeight=this.fontWeights[this._charCount]),this.context.font=this.componentsToFont(e)}this.style.stroke&&this.style.strokeThickness&&(this.strokeColors[this._charCount]&&(this.context.strokeStyle=this.strokeColors[this._charCount]),this.updateShadow(this.style.shadowStroke)),this.style.fill&&(this.colors[this._charCount]&&(this.context.fillStyle=this.colors[this._charCount]),this.updateShadow(this.style.shadowFill)),b+=this.context.measureText(d).width,this._charCount++}return Math.ceil(b)},c.Text.prototype.updateLine=function(a,b,c){for(var d=0;d0||this.fontStyles.length>0){var f=this.fontToComponents(this.context.font);this.fontStyles[this._charCount]&&(f.fontStyle=this.fontStyles[this._charCount]),this.fontWeights[this._charCount]&&(f.fontWeight=this.fontWeights[this._charCount]),this.context.font=this.componentsToFont(f)}this.style.stroke&&this.style.strokeThickness&&(this.strokeColors[this._charCount]&&(this.context.strokeStyle=this.strokeColors[this._charCount]),this.updateShadow(this.style.shadowStroke),this.context.strokeText(e,b,c)),this.style.fill&&(this.colors[this._charCount]&&(this.context.fillStyle=this.colors[this._charCount]),this.updateShadow(this.style.shadowFill),this.context.fillText(e,b,c)),b+=this.context.measureText(e).width,this._charCount++}},c.Text.prototype.clearColors=function(){return this.colors=[],this.strokeColors=[],this.dirty=!0,this},c.Text.prototype.clearFontValues=function(){return this.fontStyles=[],this.fontWeights=[],this.dirty=!0,this},c.Text.prototype.addColor=function(a,b){return this.colors[b]=a,this.dirty=!0,this},c.Text.prototype.addStrokeColor=function(a,b){return this.strokeColors[b]=a,this.dirty=!0,this},c.Text.prototype.addFontStyle=function(a,b){return this.fontStyles[b]=a,this.dirty=!0,this},c.Text.prototype.addFontWeight=function(a,b){return this.fontWeights[b]=a,this.dirty=!0,this},c.Text.prototype.precalculateWordWrap=function(a){this.texture.baseTexture.resolution=this._res,this.context.font=this.style.font;var b=this.runWordWrap(a);return b.split(/(?:\r\n|\r|\n)/)},c.Text.prototype.runWordWrap=function(a){return this.useAdvancedWrap?this.advancedWordWrap(a):this.basicWordWrap(a)},c.Text.prototype.advancedWordWrap=function(a){for(var b=this.context,c=this.style.wordWrapWidth,d="",e=a.replace(/ +/gi," ").split(/\r?\n/gi),f=e.length,g=0;f>g;g++){var h=e[g],i="";h=h.replace(/^ *|\s*$/gi,"");var j=b.measureText(h).width;if(c>j)d+=h+"\n";else{for(var k=c,l=h.split(" "),m=0;mk){if(0===m){for(var q=o;q.length&&(q=q.slice(0,-1),p=b.measureText(q).width,!(k>=p)););if(!q.length)throw new Error("This text's wordWrapWidth setting is less than a single character!");var r=n.substr(q.length);l[m]=r,i+=q}var s=l[m].length?m:m+1,t=l.slice(s).join(" ").replace(/[ \n]*$/gi,"");e[g+1]=t+" "+(e[g+1]||""),f=e.length;break}i+=o,k-=p}d+=i.replace(/[ \n]*$/gi,"")+"\n"}}return d=d.replace(/[\s|\n]*$/gi,"")},c.Text.prototype.basicWordWrap=function(a){for(var b="",c=a.split("\n"),d=0;de?(g>0&&(b+="\n"),b+=f[g]+" ",e=this.style.wordWrapWidth-h):(e-=i,b+=f[g]+" ")}dd&&(this.style.wordWrapWidth=d)),this.updateTexture(),this},c.Text.prototype.updateTexture=function(){var a=this.texture.baseTexture,b=this.texture.crop,c=this.texture.frame,d=this.canvas.width,e=this.canvas.height;if(a.width=d,a.height=e,b.width=d,b.height=e,c.width=d,c.height=e,this.texture.width=d,this.texture.height=e,this._width=d,this._height=e,this.textBounds){var f=this.textBounds.x,g=this.textBounds.y;"right"===this.style.boundsAlignH?f+=this.textBounds.width-this.canvas.width:"center"===this.style.boundsAlignH&&(f+=this.textBounds.halfWidth-this.canvas.width/2),"bottom"===this.style.boundsAlignV?g+=this.textBounds.height-this.canvas.height:"middle"===this.style.boundsAlignV&&(g+=this.textBounds.halfHeight-this.canvas.height/2),this.pivot.x=-f,this.pivot.y=-g}this.renderable=0!==d&&0!==e,this.texture.requiresReTint=!0,this.texture.baseTexture.dirty()},c.Text.prototype._renderWebGL=function(a){this.dirty&&(this.updateText(),this.dirty=!1),PIXI.Sprite.prototype._renderWebGL.call(this,a)},c.Text.prototype._renderCanvas=function(a){this.dirty&&(this.updateText(),this.dirty=!1),PIXI.Sprite.prototype._renderCanvas.call(this,a)},c.Text.prototype.determineFontProperties=function(a){var b=c.Text.fontPropertiesCache[a];if(!b){b={};var d=c.Text.fontPropertiesCanvas,e=c.Text.fontPropertiesContext;e.font=a;var f=Math.ceil(e.measureText("|MÉq").width),g=Math.ceil(e.measureText("|MÉq").width),h=2*g;if(g=1.4*g|0,d.width=f,d.height=h,e.fillStyle="#f00",e.fillRect(0,0,f,h),e.font=a,e.textBaseline="alphabetic",e.fillStyle="#000",e.fillText("|MÉq",0,g),!e.getImageData(0,0,f,h))return b.ascent=g,b.descent=g+6,b.fontSize=b.ascent+b.descent,c.Text.fontPropertiesCache[a]=b,b;var i,j,k=e.getImageData(0,0,f,h).data,l=k.length,m=4*f,n=0,o=!1;for(i=0;g>i;i++){for(j=0;m>j;j+=4)if(255!==k[n+j]){o=!0;break}if(o)break;n+=m}for(b.ascent=g-i,n=l-m,o=!1,i=h;i>g;i--){for(j=0;m>j;j+=4)if(255!==k[n+j]){o=!0;break}if(o)break;n-=m}b.descent=i-g,b.descent+=6,b.fontSize=b.ascent+b.descent,c.Text.fontPropertiesCache[a]=b}return b},c.Text.prototype.getBounds=function(a){return this.dirty&&(this.updateText(),this.dirty=!1),PIXI.Sprite.prototype.getBounds.call(this,a)},Object.defineProperty(c.Text.prototype,"text",{get:function(){return this._text},set:function(a){a!==this._text&&(this._text=a.toString()||"",this.dirty=!0,this.parent&&this.updateTransform())}}),Object.defineProperty(c.Text.prototype,"cssFont",{get:function(){return this.componentsToFont(this._fontComponents)},set:function(a){a=a||"bold 20pt Arial",this._fontComponents=this.fontToComponents(a),this.updateFont(this._fontComponents)}}),Object.defineProperty(c.Text.prototype,"font",{get:function(){return this._fontComponents.fontFamily},set:function(a){a=a||"Arial",a=a.trim(),/^(?:inherit|serif|sans-serif|cursive|fantasy|monospace)$/.exec(a)||/['",]/.exec(a)||(a="'"+a+"'"),this._fontComponents.fontFamily=a,this.updateFont(this._fontComponents)}}),Object.defineProperty(c.Text.prototype,"fontSize",{get:function(){var a=this._fontComponents.fontSize;return a&&/(?:^0$|px$)/.exec(a)?parseInt(a,10):a},set:function(a){a=a||"0","number"==typeof a&&(a+="px"),this._fontComponents.fontSize=a,this.updateFont(this._fontComponents)}}),Object.defineProperty(c.Text.prototype,"fontWeight",{get:function(){return this._fontComponents.fontWeight||"normal"},set:function(a){a=a||"normal",this._fontComponents.fontWeight=a,this.updateFont(this._fontComponents)}}),Object.defineProperty(c.Text.prototype,"fontStyle",{get:function(){return this._fontComponents.fontStyle||"normal"},set:function(a){a=a||"normal",this._fontComponents.fontStyle=a,this.updateFont(this._fontComponents)}}),Object.defineProperty(c.Text.prototype,"fontVariant",{get:function(){return this._fontComponents.fontVariant||"normal"},set:function(a){a=a||"normal",this._fontComponents.fontVariant=a,this.updateFont(this._fontComponents)}}),Object.defineProperty(c.Text.prototype,"fill",{get:function(){return this.style.fill},set:function(a){a!==this.style.fill&&(this.style.fill=a,this.dirty=!0)}}),Object.defineProperty(c.Text.prototype,"align",{get:function(){return this.style.align},set:function(a){a!==this.style.align&&(this.style.align=a,this.dirty=!0)}}),Object.defineProperty(c.Text.prototype,"resolution",{get:function(){return this._res},set:function(a){a!==this._res&&(this._res=a,this.dirty=!0)}}),Object.defineProperty(c.Text.prototype,"tabs",{get:function(){return this.style.tabs},set:function(a){a!==this.style.tabs&&(this.style.tabs=a,this.dirty=!0)}}),Object.defineProperty(c.Text.prototype,"boundsAlignH",{get:function(){return this.style.boundsAlignH},set:function(a){a!==this.style.boundsAlignH&&(this.style.boundsAlignH=a,this.dirty=!0)}}),Object.defineProperty(c.Text.prototype,"boundsAlignV",{get:function(){return this.style.boundsAlignV},set:function(a){a!==this.style.boundsAlignV&&(this.style.boundsAlignV=a,this.dirty=!0)}}),Object.defineProperty(c.Text.prototype,"stroke",{get:function(){return this.style.stroke},set:function(a){a!==this.style.stroke&&(this.style.stroke=a,this.dirty=!0)}}),Object.defineProperty(c.Text.prototype,"strokeThickness",{get:function(){return this.style.strokeThickness},set:function(a){a!==this.style.strokeThickness&&(this.style.strokeThickness=a,this.dirty=!0)}}),Object.defineProperty(c.Text.prototype,"wordWrap",{get:function(){return this.style.wordWrap},set:function(a){a!==this.style.wordWrap&&(this.style.wordWrap=a,this.dirty=!0)}}),Object.defineProperty(c.Text.prototype,"wordWrapWidth",{get:function(){return this.style.wordWrapWidth},set:function(a){a!==this.style.wordWrapWidth&&(this.style.wordWrapWidth=a,this.dirty=!0)}}),Object.defineProperty(c.Text.prototype,"lineSpacing",{get:function(){return this._lineSpacing},set:function(a){a!==this._lineSpacing&&(this._lineSpacing=parseFloat(a),this.dirty=!0,this.parent&&this.updateTransform())}}),Object.defineProperty(c.Text.prototype,"shadowOffsetX",{get:function(){return this.style.shadowOffsetX},set:function(a){a!==this.style.shadowOffsetX&&(this.style.shadowOffsetX=a,this.dirty=!0)}}),Object.defineProperty(c.Text.prototype,"shadowOffsetY",{get:function(){return this.style.shadowOffsetY},set:function(a){a!==this.style.shadowOffsetY&&(this.style.shadowOffsetY=a,this.dirty=!0)}}),Object.defineProperty(c.Text.prototype,"shadowColor",{get:function(){return this.style.shadowColor},set:function(a){a!==this.style.shadowColor&&(this.style.shadowColor=a,this.dirty=!0)}}),Object.defineProperty(c.Text.prototype,"shadowBlur",{get:function(){return this.style.shadowBlur},set:function(a){a!==this.style.shadowBlur&&(this.style.shadowBlur=a,this.dirty=!0)}}),Object.defineProperty(c.Text.prototype,"shadowStroke",{get:function(){return this.style.shadowStroke},set:function(a){a!==this.style.shadowStroke&&(this.style.shadowStroke=a,this.dirty=!0)}}),Object.defineProperty(c.Text.prototype,"shadowFill",{get:function(){return this.style.shadowFill},set:function(a){a!==this.style.shadowFill&&(this.style.shadowFill=a,this.dirty=!0)}}),Object.defineProperty(c.Text.prototype,"width",{get:function(){return this.dirty&&(this.updateText(),this.dirty=!1),this.scale.x*this.texture.frame.width},set:function(a){this.scale.x=a/this.texture.frame.width,this._width=a}}),Object.defineProperty(c.Text.prototype,"height",{get:function(){return this.dirty&&(this.updateText(),this.dirty=!1),this.scale.y*this.texture.frame.height},set:function(a){this.scale.y=a/this.texture.frame.height,this._height=a}}),c.Text.fontPropertiesCache={},c.Text.fontPropertiesCanvas=PIXI.CanvasPool.create(c.Text.fontPropertiesCanvas),c.Text.fontPropertiesContext=c.Text.fontPropertiesCanvas.getContext("2d"),c.BitmapText=function(a,b,d,e,f,g,h){b=b||0,d=d||0,e=e||"",f=f||"",g=g||32,h=h||"left",PIXI.DisplayObjectContainer.call(this),this.type=c.BITMAPTEXT,this.physicsType=c.SPRITE,this.textWidth=0,this.textHeight=0,this.anchor=new c.Point,this._prevAnchor=new c.Point,this._glyphs=[],this._maxWidth=0,this._text=f.toString()||"",this._data=a.cache.getBitmapFont(e),this._font=e,this._fontSize=g,this._align=h,this._tint=16777215,this.updateText(),this.dirty=!1,c.Component.Core.init.call(this,a,b,d,"",null)},c.BitmapText.prototype=Object.create(PIXI.DisplayObjectContainer.prototype),c.BitmapText.prototype.constructor=c.BitmapText,c.Component.Core.install.call(c.BitmapText.prototype,["Angle","AutoCull","Bounds","Destroy","FixedToCamera","InputEnabled","InWorld","LifeSpan","PhysicsBody","Reset"]),c.BitmapText.prototype.preUpdatePhysics=c.Component.PhysicsBody.preUpdate,c.BitmapText.prototype.preUpdateLifeSpan=c.Component.LifeSpan.preUpdate,c.BitmapText.prototype.preUpdateInWorld=c.Component.InWorld.preUpdate,c.BitmapText.prototype.preUpdateCore=c.Component.Core.preUpdate,c.BitmapText.prototype.preUpdate=function(){return this.preUpdatePhysics()&&this.preUpdateLifeSpan()&&this.preUpdateInWorld()?this.preUpdateCore():!1},c.BitmapText.prototype.postUpdate=function(){c.Component.PhysicsBody.postUpdate.call(this),c.Component.FixedToCamera.postUpdate.call(this),this.body&&this.body.type===c.Physics.ARCADE&&(this.textWidth!==this.body.sourceWidth||this.textHeight!==this.body.sourceHeight)&&this.body.setSize(this.textWidth,this.textHeight)},c.BitmapText.prototype.setText=function(a){this.text=a},c.BitmapText.prototype.scanLine=function(a,b,c){for(var d=0,e=0,f=-1,g=0,h=null,i=this._maxWidth>0?this._maxWidth:null,j=[],k=0;k=i&&f>-1)return{width:g||e,text:c.substr(0,k-(k-f)),end:l,chars:j};e+=(n.xAdvance+p)*b,j.push(d+(n.xOffset+p)*b),d+=(n.xAdvance+p)*b,h=m}return{width:e,text:c,end:l,chars:j}},c.BitmapText.prototype.cleanText=function(a,b){void 0===b&&(b="");var c=this._data.font;if(!c)return"";for(var d=/\r\n|\n\r|\n|\r/g,e=a.replace(d,"\n").split("\n"),f=0;fthis.textWidth&&(this.textWidth=f.width),e+=a.lineHeight*c,b=b.substr(f.text.length+1)}while(f.end===!1);this.textHeight=e;for(var g=0,h=0,i=this.textWidth*this.anchor.x,j=this.textHeight*this.anchor.y,k=0;k0&&(this._fontSize=a,this.updateText())}}),Object.defineProperty(c.BitmapText.prototype,"text",{get:function(){return this._text},set:function(a){a!==this._text&&(this._text=a.toString()||"",this.updateText())}}),Object.defineProperty(c.BitmapText.prototype,"maxWidth",{get:function(){return this._maxWidth},set:function(a){a!==this._maxWidth&&(this._maxWidth=a,this.updateText())}}),Object.defineProperty(c.BitmapText.prototype,"smoothed",{get:function(){return!this._data.base.scaleMode},set:function(a){a?this._data.base.scaleMode=0:this._data.base.scaleMode=1}}),c.RetroFont=function(a,b,d,e,f,g,h,i,j,k){if(!a.cache.checkImageKey(b))return!1;(void 0===g||null===g)&&(g=a.cache.getImage(b).width/d),this.characterWidth=d,this.characterHeight=e,this.characterSpacingX=h||0,this.characterSpacingY=i||0,this.characterPerRow=g,this.offsetX=j||0,this.offsetY=k||0,this.align="left",this.multiLine=!1,this.autoUpperCase=!0,this.customSpacingX=0,this.customSpacingY=0,this.fixedWidth=0,this.fontSet=a.cache.getImage(b),this._text="",this.grabData=[],this.frameData=new c.FrameData;for(var l=this.offsetX,m=this.offsetY,n=0,o=0;o?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~",c.RetroFont.TEXT_SET2=" !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ",c.RetroFont.TEXT_SET3="ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789 ",c.RetroFont.TEXT_SET4="ABCDEFGHIJKLMNOPQRSTUVWXYZ 0123456789",c.RetroFont.TEXT_SET5="ABCDEFGHIJKLMNOPQRSTUVWXYZ.,/() '!?-*:0123456789",c.RetroFont.TEXT_SET6="ABCDEFGHIJKLMNOPQRSTUVWXYZ!?:;0123456789\"(),-.' ",c.RetroFont.TEXT_SET7="AGMSY+:4BHNTZ!;5CIOU.?06DJPV,(17EKQW\")28FLRX-'39",c.RetroFont.TEXT_SET8="0123456789 .ABCDEFGHIJKLMNOPQRSTUVWXYZ",c.RetroFont.TEXT_SET9="ABCDEFGHIJKLMNOPQRSTUVWXYZ()-0123456789.:,'\"?!",c.RetroFont.TEXT_SET10="ABCDEFGHIJKLMNOPQRSTUVWXYZ",c.RetroFont.TEXT_SET11="ABCDEFGHIJKLMNOPQRSTUVWXYZ.,\"-+!?()':;0123456789",c.RetroFont.prototype.setFixedWidth=function(a,b){void 0===b&&(b="left"),this.fixedWidth=a,this.align=b},c.RetroFont.prototype.setText=function(a,b,c,d,e,f){this.multiLine=b||!1,this.customSpacingX=c||0,this.customSpacingY=d||0,this.align=e||"left",f?this.autoUpperCase=!1:this.autoUpperCase=!0,a.length>0&&(this.text=a)},c.RetroFont.prototype.buildRetroFontText=function(){var a=0,b=0;if(this.clear(),this.multiLine){var d=this._text.split("\n");this.fixedWidth>0?this.resize(this.fixedWidth,d.length*(this.characterHeight+this.customSpacingY)-this.customSpacingY,!0):this.resize(this.getLongestLine()*(this.characterWidth+this.customSpacingX),d.length*(this.characterHeight+this.customSpacingY)-this.customSpacingY,!0);for(var e=0;ea&&(a=0),this.pasteLine(d[e],a,b,this.customSpacingX),b+=this.characterHeight+this.customSpacingY}else this.fixedWidth>0?this.resize(this.fixedWidth,this.characterHeight,!0):this.resize(this._text.length*(this.characterWidth+this.customSpacingX),this.characterHeight,!0),a=0,this.align===c.RetroFont.ALIGN_RIGHT?a=this.width-this._text.length*(this.characterWidth+this.customSpacingX):this.align===c.RetroFont.ALIGN_CENTER&&(a=this.width/2-this._text.length*(this.characterWidth+this.customSpacingX)/2,a+=this.customSpacingX/2),0>a&&(a=0),this.pasteLine(this._text,a,0,this.customSpacingX);this.requiresReTint=!0},c.RetroFont.prototype.pasteLine=function(a,b,c,d){for(var e=0;e=0&&(this.stamp.frame=this.grabData[a.charCodeAt(e)],this.renderXY(this.stamp,b,c,!1),b+=this.characterWidth+d,b>this.width))break},c.RetroFont.prototype.getLongestLine=function(){var a=0;if(this._text.length>0)for(var b=this._text.split("\n"),c=0;ca&&(a=b[c].length);return a},c.RetroFont.prototype.removeUnsupportedCharacters=function(a){for(var b="",c=0;c=0||!a&&"\n"===d)&&(b=b.concat(d))}return b},c.RetroFont.prototype.updateOffset=function(a,b){if(this.offsetX!==a||this.offsetY!==b){for(var c=a-this.offsetX,d=b-this.offsetY,e=this.game.cache.getFrameData(this.stamp.key).getFrames(),f=e.length;f--;)e[f].x+=c,e[f].y+=d;this.buildRetroFontText()}},Object.defineProperty(c.RetroFont.prototype,"text",{get:function(){return this._text},set:function(a){var b;b=this.autoUpperCase?a.toUpperCase():a,b!==this._text&&(this._text=b,this.removeUnsupportedCharacters(this.multiLine),this.buildRetroFontText())}}),Object.defineProperty(c.RetroFont.prototype,"smoothed",{get:function(){return this.stamp.smoothed},set:function(a){this.stamp.smoothed=a,this.buildRetroFontText()}}),c.Rope=function(a,b,d,e,f,g){this.points=[],this.points=g,this._hasUpdateAnimation=!1,this._updateAnimationCallback=null,b=b||0,d=d||0,e=e||null,f=f||null,this.type=c.ROPE,PIXI.Rope.call(this,PIXI.TextureCache.__default,this.points),c.Component.Core.init.call(this,a,b,d,e,f)},c.Rope.prototype=Object.create(PIXI.Rope.prototype),c.Rope.prototype.constructor=c.Rope,c.Component.Core.install.call(c.Rope.prototype,["Angle","Animation","AutoCull","Bounds","BringToTop","Crop","Delta","Destroy","FixedToCamera","InWorld","LifeSpan","LoadTexture","Overlap","PhysicsBody","Reset","ScaleMinMax","Smoothed"]),c.Rope.prototype.preUpdatePhysics=c.Component.PhysicsBody.preUpdate,c.Rope.prototype.preUpdateLifeSpan=c.Component.LifeSpan.preUpdate,c.Rope.prototype.preUpdateInWorld=c.Component.InWorld.preUpdate,c.Rope.prototype.preUpdateCore=c.Component.Core.preUpdate,c.Rope.prototype.preUpdate=function(){return this.preUpdatePhysics()&&this.preUpdateLifeSpan()&&this.preUpdateInWorld()?this.preUpdateCore():!1},c.Rope.prototype.update=function(){this._hasUpdateAnimation&&this.updateAnimation.call(this)},c.Rope.prototype.reset=function(a,b){return c.Component.Reset.prototype.reset.call(this,a,b),this},Object.defineProperty(c.Rope.prototype,"updateAnimation",{get:function(){return this._updateAnimation},set:function(a){a&&"function"==typeof a?(this._hasUpdateAnimation=!0,this._updateAnimation=a):(this._hasUpdateAnimation=!1,this._updateAnimation=null)}}),Object.defineProperty(c.Rope.prototype,"segments",{get:function(){for(var a,b,d,e,f,g,h,i,j=[],k=0;k=1)&&(l.touch=!0),(window.navigator.msPointerEnabled||window.navigator.pointerEnabled)&&(l.mspointer=!0),l.cocoonJS||("onwheel"in window||l.ie&&"WheelEvent"in window?l.wheelEvent="wheel":"onmousewheel"in window?l.wheelEvent="mousewheel":l.firefox&&"MouseScrollEvent"in window&&(l.wheelEvent="DOMMouseScroll"))}function d(){for(var a=["requestFullscreen","requestFullScreen","webkitRequestFullscreen","webkitRequestFullScreen","msRequestFullscreen","msRequestFullScreen","mozRequestFullScreen","mozRequestFullscreen"],b=document.createElement("div"),c=0;c=9&&/Mac OS X (\d+)_(\d+)/.test(navigator.userAgent)){var c=parseInt(RegExp.$1,10),d=parseInt(RegExp.$2,10);(10===c&&d>=11||c>10)&&(l.dolby=!0)}}catch(e){}}function h(){l.pixelRatio=window.devicePixelRatio||1,l.iPhone=-1!=navigator.userAgent.toLowerCase().indexOf("iphone"),l.iPhone4=2==l.pixelRatio&&l.iPhone,l.iPad=-1!=navigator.userAgent.toLowerCase().indexOf("ipad"),"undefined"!=typeof Int8Array?l.typedArray=!0:l.typedArray=!1,"undefined"!=typeof ArrayBuffer&&"undefined"!=typeof Uint8Array&&"undefined"!=typeof Uint32Array&&(l.littleEndian=i(),l.LITTLE_ENDIAN=l.littleEndian),l.support32bit="undefined"!=typeof ArrayBuffer&&"undefined"!=typeof Uint8ClampedArray&&"undefined"!=typeof Int32Array&&null!==l.littleEndian&&j(),navigator.vibrate=navigator.vibrate||navigator.webkitVibrate||navigator.mozVibrate||navigator.msVibrate,navigator.vibrate&&(l.vibration=!0)}function i(){var a=new ArrayBuffer(4),b=new Uint8Array(a),c=new Uint32Array(a);return b[0]=161,b[1]=178,b[2]=195,b[3]=212,3569595041==c[0]?!0:2712847316==c[0]?!1:null}function j(){if(void 0===Uint8ClampedArray)return!1;var a=PIXI.CanvasPool.create(this,1,1),b=a.getContext("2d");if(!b)return!1;var c=b.createImageData(1,1);return PIXI.CanvasPool.remove(this),c.data instanceof Uint8ClampedArray}function k(){var a,b=document.createElement("p"),c={webkitTransform:"-webkit-transform",OTransform:"-o-transform",msTransform:"-ms-transform",MozTransform:"-moz-transform",transform:"transform"};document.body.insertBefore(b,null);for(var d in c)void 0!==b.style[d]&&(b.style[d]="translate3d(1px,1px,1px)",a=window.getComputedStyle(b).getPropertyValue(c[d]));document.body.removeChild(b),l.css3D=void 0!==a&&a.length>0&&"none"!==a}var l=this;a(),e(),g(),f(),k(),h(),b(),d(),c()},c.Device.canPlayAudio=function(a){return"mp3"===a&&this.mp3?!0:"ogg"===a&&(this.ogg||this.opus)?!0:"m4a"===a&&this.m4a?!0:"opus"===a&&this.opus?!0:"wav"===a&&this.wav?!0:"webm"===a&&this.webm?!0:"mp4"===a&&this.dolby?!0:!1},c.Device.canPlayVideo=function(a){return"webm"===a&&(this.webmVideo||this.vp9Video)?!0:"mp4"===a&&(this.mp4Video||this.h264Video)?!0:"ogg"!==a&&"ogv"!==a||!this.oggVideo?"mpeg"===a&&this.hlsVideo?!0:!1:!0},c.Device.isConsoleOpen=function(){return window.console&&window.console.firebug?!0:window.console&&(console.profile(),console.profileEnd(),console.clear&&console.clear(),console.profiles)?console.profiles.length>0:!1},c.Device.isAndroidStockBrowser=function(){var a=window.navigator.userAgent.match(/Android.*AppleWebKit\/([\d.]+)/);return a&&a[1]<537},c.Canvas={create:function(a,b,c,d,e){if(b=b||256,c=c||256,void 0===e)var f=PIXI.CanvasPool.create(a,b,c);else var f=document.createElement("canvas");return"string"==typeof d&&""!==d&&(f.id=d),f.width=b,f.height=c,f.style.display="block",f},setBackgroundColor:function(a,b){return b=b||"rgb(0,0,0)",a.style.backgroundColor=b,a},setTouchAction:function(a,b){return b=b||"none",a.style.msTouchAction=b,a.style["ms-touch-action"]=b,a.style["touch-action"]=b,a},setUserSelect:function(a,b){return b=b||"none",a.style["-webkit-touch-callout"]=b,a.style["-webkit-user-select"]=b,a.style["-khtml-user-select"]=b,a.style["-moz-user-select"]=b,a.style["-ms-user-select"]=b,a.style["user-select"]=b,a.style["-webkit-tap-highlight-color"]="rgba(0, 0, 0, 0)",a},addToDOM:function(a,b,c){var d;return void 0===c&&(c=!0),b&&("string"==typeof b?d=document.getElementById(b):"object"==typeof b&&1===b.nodeType&&(d=b)),d||(d=document.body),c&&d.style&&(d.style.overflow="hidden"),d.appendChild(a),a},removeFromDOM:function(a){a.parentNode&&a.parentNode.removeChild(a)},setTransform:function(a,b,c,d,e,f,g){return a.setTransform(d,f,g,e,b,c),a},setSmoothingEnabled:function(a,b){var d=c.Canvas.getSmoothingPrefix(a);return d&&(a[d]=b),a},getSmoothingPrefix:function(a){var b=["i","webkitI","msI","mozI","oI"];for(var c in b){var d=b[c]+"mageSmoothingEnabled";if(d in a)return d}return null},getSmoothingEnabled:function(a){var b=c.Canvas.getSmoothingPrefix(a);return b?a[b]:void 0},setImageRenderingCrisp:function(a){for(var b=["optimizeSpeed","crisp-edges","-moz-crisp-edges","-webkit-optimize-contrast","optimize-contrast","pixelated"],c=0;ca},fuzzyGreaterThan:function(a,b,c){return void 0===c&&(c=1e-4),a>b-c},fuzzyCeil:function(a,b){return void 0===b&&(b=1e-4),Math.ceil(a-b)},fuzzyFloor:function(a,b){return void 0===b&&(b=1e-4),Math.floor(a+b)},average:function(){for(var a=0,b=arguments.length,c=0;b>c;c++)a+=+arguments[c];return a/b},shear:function(a){return a%1},snapTo:function(a,b,c){return void 0===c&&(c=0),0===b?a:(a-=c,a=b*Math.round(a/b),c+a)},snapToFloor:function(a,b,c){return void 0===c&&(c=0),0===b?a:(a-=c,a=b*Math.floor(a/b),c+a)},snapToCeil:function(a,b,c){return void 0===c&&(c=0),0===b?a:(a-=c,a=b*Math.ceil(a/b),c+a)},roundTo:function(a,b,c){void 0===b&&(b=0),void 0===c&&(c=10);var d=Math.pow(c,-b);return Math.round(a*d)/d},floorTo:function(a,b,c){void 0===b&&(b=0),void 0===c&&(c=10);var d=Math.pow(c,-b);return Math.floor(a*d)/d},ceilTo:function(a,b,c){void 0===b&&(b=0),void 0===c&&(c=10);var d=Math.pow(c,-b);return Math.ceil(a*d)/d},angleBetween:function(a,b,c,d){return Math.atan2(d-b,c-a)},angleBetweenY:function(a,b,c,d){return Math.atan2(c-a,d-b)},angleBetweenPoints:function(a,b){return Math.atan2(b.y-a.y,b.x-a.x)},angleBetweenPointsY:function(a,b){return Math.atan2(b.x-a.x,b.y-a.y)},reverseAngle:function(a){return this.normalizeAngle(a+Math.PI,!0)},normalizeAngle:function(a){return a%=2*Math.PI,a>=0?a:a+2*Math.PI},maxAdd:function(a,b,c){return Math.min(a+b,c)},minSub:function(a,b,c){return Math.max(a-b,c)},wrap:function(a,b,c){var d=c-b;if(0>=d)return 0;var e=(a-b)%d;return 0>e&&(e+=d),e+b},wrapValue:function(a,b,c){var d;return a=Math.abs(a),b=Math.abs(b),c=Math.abs(c),d=(a+b)%c},isOdd:function(a){return!!(1&a)},isEven:function(a){return!(1&a)},min:function(){if(1===arguments.length&&"object"==typeof arguments[0])var a=arguments[0];else var a=arguments;for(var b=1,c=0,d=a.length;d>b;b++)a[b]b;b++)a[b]>a[c]&&(c=b);return a[c]},minProperty:function(a){if(2===arguments.length&&"object"==typeof arguments[1])var b=arguments[1];else var b=arguments.slice(1);for(var c=1,d=0,e=b.length;e>c;c++)b[c][a]c;c++)b[c][a]>b[d][a]&&(d=c);return b[d][a]},wrapAngle:function(a,b){return b?this.wrap(a,-Math.PI,Math.PI):this.wrap(a,-180,180)},linearInterpolation:function(a,b){var c=a.length-1,d=c*b,e=Math.floor(d);return 0>b?this.linear(a[0],a[1],d):b>1?this.linear(a[c],a[c-1],c-d):this.linear(a[e],a[e+1>c?c:e+1],d-e)},bezierInterpolation:function(a,b){for(var c=0,d=a.length-1,e=0;d>=e;e++)c+=Math.pow(1-b,d-e)*Math.pow(b,e)*a[e]*this.bernstein(d,e);return c},catmullRomInterpolation:function(a,b){var c=a.length-1,d=c*b,e=Math.floor(d);return a[0]===a[c]?(0>b&&(e=Math.floor(d=c*(1+b))),this.catmullRom(a[(e-1+c)%c],a[e],a[(e+1)%c],a[(e+2)%c],d-e)):0>b?a[0]-(this.catmullRom(a[0],a[0],a[1],a[1],-d)-a[0]):b>1?a[c]-(this.catmullRom(a[c],a[c],a[c-1],a[c-1],d-c)-a[c]):this.catmullRom(a[e?e-1:0],a[e],a[e+1>c?c:e+1],a[e+2>c?c:e+2],d-e)},linear:function(a,b,c){return(b-a)*c+a},bernstein:function(a,b){return this.factorial(a)/this.factorial(b)/this.factorial(a-b)},factorial:function(a){if(0===a)return 1;for(var b=a;--a;)b*=a;return b},catmullRom:function(a,b,c,d,e){var f=.5*(c-a),g=.5*(d-b),h=e*e,i=e*h;return(2*b-2*c+f+g)*i+(-3*b+3*c-2*f-g)*h+f*e+b},difference:function(a,b){return Math.abs(a-b)},roundAwayFromZero:function(a){return a>0?Math.ceil(a):Math.floor(a)},sinCosGenerator:function(a,b,c,d){void 0===b&&(b=1),void 0===c&&(c=1),void 0===d&&(d=1);for(var e=b,f=c,g=d*Math.PI/a,h=[],i=[],j=0;a>j;j++)f-=e*g,e+=f*g,h[j]=f,i[j]=e;return{sin:i,cos:h,length:a}},distance:function(a,b,c,d){var e=a-c,f=b-d;return Math.sqrt(e*e+f*f)},distanceSq:function(a,b,c,d){var e=a-c,f=b-d;return e*e+f*f},distancePow:function(a,b,c,d,e){return void 0===e&&(e=2),Math.sqrt(Math.pow(c-a,e)+Math.pow(d-b,e))},clamp:function(a,b,c){return b>a?b:a>c?c:a},clampBottom:function(a,b){return b>a?b:a},within:function(a,b,c){return Math.abs(a-b)<=c},mapLinear:function(a,b,c,d,e){return d+(a-b)*(e-d)/(c-b)},smoothstep:function(a,b,c){return a=Math.max(0,Math.min(1,(a-b)/(c-b))),a*a*(3-2*a)},smootherstep:function(a,b,c){return a=Math.max(0,Math.min(1,(a-b)/(c-b))),a*a*a*(a*(6*a-15)+10)},sign:function(a){return 0>a?-1:a>0?1:0},percent:function(a,b,c){return void 0===c&&(c=0),a>b||c>b?1:c>a||c>a?0:(a-c)/b}};var k=Math.PI/180,l=180/Math.PI;return c.Math.degToRad=function(a){return a*k},c.Math.radToDeg=function(a){return a*l},c.RandomDataGenerator=function(a){void 0===a&&(a=[]),this.c=1,this.s0=0,this.s1=0,this.s2=0,"string"==typeof a?this.state(a):this.sow(a)},c.RandomDataGenerator.prototype={rnd:function(){var a=2091639*this.s0+2.3283064365386963e-10*this.c;return this.c=0|a,this.s0=this.s1,this.s1=this.s2,this.s2=a-this.c,this.s2},sow:function(a){if(this.s0=this.hash(" "),this.s1=this.hash(this.s0),this.s2=this.hash(this.s1),this.c=1,a)for(var b=0;b>>0,b-=d,b*=d,d=b>>>0,b-=d,d+=4294967296*b;return 2.3283064365386963e-10*(d>>>0)},integer:function(){return 4294967296*this.rnd.apply(this)},frac:function(){return this.rnd.apply(this)+1.1102230246251565e-16*(2097152*this.rnd.apply(this)|0)},real:function(){return this.integer()+this.frac()},integerInRange:function(a,b){return Math.floor(this.realInRange(0,b-a+1)+a)},between:function(a,b){return this.integerInRange(a,b)},realInRange:function(a,b){return this.frac()*(b-a)+a},normal:function(){return 1-2*this.frac()},uuid:function(){var a="",b="";for(b=a="";a++<36;b+=~a%5|3*a&4?(15^a?8^this.frac()*(20^a?16:4):4).toString(16):"-");return b},pick:function(a){return a[this.integerInRange(0,a.length-1)]},sign:function(){return this.pick([-1,1])},weightedPick:function(a){return a[~~(Math.pow(this.frac(),2)*(a.length-1)+.5)]},timestamp:function(a,b){return this.realInRange(a||9466848e5,b||1577862e6)},angle:function(){return this.integerInRange(-180,180)},state:function(a){return"string"==typeof a&&a.match(/^!rnd/)&&(a=a.split(","),this.c=parseFloat(a[1]),this.s0=parseFloat(a[2]),this.s1=parseFloat(a[3]),this.s2=parseFloat(a[4])),["!rnd",this.c,this.s0,this.s1,this.s2].join(",")}},c.RandomDataGenerator.prototype.constructor=c.RandomDataGenerator,c.QuadTree=function(a,b,c,d,e,f,g){this.maxObjects=10,this.maxLevels=4,this.level=0,this.bounds={},this.objects=[],this.nodes=[],this._empty=[],this.reset(a,b,c,d,e,f,g)},c.QuadTree.prototype={reset:function(a,b,c,d,e,f,g){this.maxObjects=e||10,this.maxLevels=f||4,this.level=g||0,this.bounds={x:Math.round(a),y:Math.round(b),width:c,height:d,subWidth:Math.floor(c/2),subHeight:Math.floor(d/2),right:Math.round(a)+Math.floor(c/2),bottom:Math.round(b)+Math.floor(d/2)},this.objects.length=0,this.nodes.length=0},populate:function(a){a.forEach(this.populateHandler,this,!0)},populateHandler:function(a){a.body&&a.exists&&this.insert(a.body)},split:function(){this.nodes[0]=new c.QuadTree(this.bounds.right,this.bounds.y,this.bounds.subWidth,this.bounds.subHeight,this.maxObjects,this.maxLevels,this.level+1),this.nodes[1]=new c.QuadTree(this.bounds.x,this.bounds.y,this.bounds.subWidth,this.bounds.subHeight,this.maxObjects,this.maxLevels,this.level+1),this.nodes[2]=new c.QuadTree(this.bounds.x,this.bounds.bottom,this.bounds.subWidth,this.bounds.subHeight,this.maxObjects,this.maxLevels,this.level+1),this.nodes[3]=new c.QuadTree(this.bounds.right,this.bounds.bottom,this.bounds.subWidth,this.bounds.subHeight,this.maxObjects,this.maxLevels,this.level+1)},insert:function(a){var b,c=0;if(null!=this.nodes[0]&&(b=this.getIndex(a),-1!==b))return void this.nodes[b].insert(a);if(this.objects.push(a),this.objects.length>this.maxObjects&&this.levelthis.bounds.bottom&&(b=2):a.x>this.bounds.right&&(a.ythis.bounds.bottom&&(b=3)),b},retrieve:function(a){if(a instanceof c.Rectangle)var b=this.objects,d=this.getIndex(a);else{if(!a.body)return this._empty;var b=this.objects,d=this.getIndex(a.body)}return this.nodes[0]&&(-1!==d?b=b.concat(this.nodes[d].retrieve(a)):(b=b.concat(this.nodes[0].retrieve(a)),b=b.concat(this.nodes[1].retrieve(a)),b=b.concat(this.nodes[2].retrieve(a)),b=b.concat(this.nodes[3].retrieve(a)))),b},clear:function(){this.objects.length=0;for(var a=this.nodes.length;a--;)this.nodes[a].clear(),this.nodes.splice(a,1);this.nodes.length=0}},c.QuadTree.prototype.constructor=c.QuadTree,c.Net=function(a){this.game=a},c.Net.prototype={getHostName:function(){return window.location&&window.location.hostname?window.location.hostname:null},checkDomainName:function(a){return-1!==window.location.hostname.indexOf(a)},updateQueryString:function(a,b,c,d){void 0===c&&(c=!1),(void 0===d||""===d)&&(d=window.location.href);var e="",f=new RegExp("([?|&])"+a+"=.*?(&|#|$)(.*)","gi");if(f.test(d))e="undefined"!=typeof b&&null!==b?d.replace(f,"$1"+a+"="+b+"$2$3"):d.replace(f,"$1$3").replace(/(&|\?)$/,"");else if("undefined"!=typeof b&&null!==b){var g=-1!==d.indexOf("?")?"&":"?",h=d.split("#");d=h[0]+g+a+"="+b,h[1]&&(d+="#"+h[1]),e=d}else e=d;return c?void(window.location.href=e):e},getQueryString:function(a){void 0===a&&(a="");var b={},c=location.search.substring(1).split("&");for(var d in c){var e=c[d].split("=");if(e.length>1){if(a&&a==this.decodeURI(e[0]))return this.decodeURI(e[1]);b[this.decodeURI(e[0])]=this.decodeURI(e[1])}}return b},decodeURI:function(a){return decodeURIComponent(a.replace(/\+/g," "))}},c.Net.prototype.constructor=c.Net,c.TweenManager=function(a){this.game=a,this.frameBased=!1,this._tweens=[],this._add=[],this.easeMap={Power0:c.Easing.Power0,Power1:c.Easing.Power1,Power2:c.Easing.Power2,Power3:c.Easing.Power3,Power4:c.Easing.Power4,Linear:c.Easing.Linear.None,Quad:c.Easing.Quadratic.Out,Cubic:c.Easing.Cubic.Out,Quart:c.Easing.Quartic.Out,Quint:c.Easing.Quintic.Out,Sine:c.Easing.Sinusoidal.Out,Expo:c.Easing.Exponential.Out,Circ:c.Easing.Circular.Out,Elastic:c.Easing.Elastic.Out,Back:c.Easing.Back.Out,Bounce:c.Easing.Bounce.Out,"Quad.easeIn":c.Easing.Quadratic.In,"Cubic.easeIn":c.Easing.Cubic.In,"Quart.easeIn":c.Easing.Quartic.In,"Quint.easeIn":c.Easing.Quintic.In,"Sine.easeIn":c.Easing.Sinusoidal.In,"Expo.easeIn":c.Easing.Exponential.In,"Circ.easeIn":c.Easing.Circular.In,"Elastic.easeIn":c.Easing.Elastic.In,"Back.easeIn":c.Easing.Back.In,"Bounce.easeIn":c.Easing.Bounce.In,"Quad.easeOut":c.Easing.Quadratic.Out,"Cubic.easeOut":c.Easing.Cubic.Out,"Quart.easeOut":c.Easing.Quartic.Out,"Quint.easeOut":c.Easing.Quintic.Out,"Sine.easeOut":c.Easing.Sinusoidal.Out,"Expo.easeOut":c.Easing.Exponential.Out,"Circ.easeOut":c.Easing.Circular.Out,"Elastic.easeOut":c.Easing.Elastic.Out,"Back.easeOut":c.Easing.Back.Out,"Bounce.easeOut":c.Easing.Bounce.Out,"Quad.easeInOut":c.Easing.Quadratic.InOut,"Cubic.easeInOut":c.Easing.Cubic.InOut,"Quart.easeInOut":c.Easing.Quartic.InOut,"Quint.easeInOut":c.Easing.Quintic.InOut,"Sine.easeInOut":c.Easing.Sinusoidal.InOut,"Expo.easeInOut":c.Easing.Exponential.InOut,"Circ.easeInOut":c.Easing.Circular.InOut,"Elastic.easeInOut":c.Easing.Elastic.InOut,"Back.easeInOut":c.Easing.Back.InOut,"Bounce.easeInOut":c.Easing.Bounce.InOut},this.game.onPause.add(this._pauseAll,this),this.game.onResume.add(this._resumeAll,this)},c.TweenManager.prototype={getAll:function(){return this._tweens},removeAll:function(){for(var a=0;ad;d++)this.removeFrom(a[d]);else if(a.type===c.GROUP&&b)for(var d=0,e=a.children.length;e>d;d++)this.removeFrom(a.children[d]);else{for(d=0,e=this._tweens.length;e>d;d++)a===this._tweens[d].target&&this.remove(this._tweens[d]);for(d=0,e=this._add.length;e>d;d++)a===this._add[d].target&&this.remove(this._add[d])}},add:function(a){a._manager=this,this._add.push(a)},create:function(a){return new c.Tween(a,this.game,this)},remove:function(a){var b=this._tweens.indexOf(a);-1!==b?this._tweens[b].pendingDelete=!0:(b=this._add.indexOf(a),-1!==b&&(this._add[b].pendingDelete=!0))},update:function(){var a=this._add.length,b=this._tweens.length;if(0===b&&0===a)return!1;for(var c=0;b>c;)this._tweens[c].update(this.game.time.time)?c++:(this._tweens.splice(c,1),b--);return a>0&&(this._tweens=this._tweens.concat(this._add),this._add.length=0),!0},isTweening:function(a){return this._tweens.some(function(b){return b.target===a})},_pauseAll:function(){for(var a=this._tweens.length-1;a>=0;a--)this._tweens[a]._pause()},_resumeAll:function(){for(var a=this._tweens.length-1;a>=0;a--)this._tweens[a]._resume()},pauseAll:function(){for(var a=this._tweens.length-1;a>=0;a--)this._tweens[a].pause()},resumeAll:function(){for(var a=this._tweens.length-1;a>=0;a--)this._tweens[a].resume(!0)}},c.TweenManager.prototype.constructor=c.TweenManager,c.Tween=function(a,b,d){this.game=b,this.target=a,this.manager=d,this.timeline=[],this.reverse=!1,this.timeScale=1,this.repeatCounter=0,this.pendingDelete=!1,this.onStart=new c.Signal,this.onLoop=new c.Signal,this.onRepeat=new c.Signal,this.onChildComplete=new c.Signal,this.onComplete=new c.Signal,this.isRunning=!1,this.current=0,this.properties={},this.chainedTween=null,this.isPaused=!1,this.frameBased=d.frameBased,this._onUpdateCallback=null,this._onUpdateCallbackContext=null,this._pausedTime=0,this._codePaused=!1,this._hasStarted=!1},c.Tween.prototype={to:function(a,b,d,e,f,g,h){return(void 0===b||0>=b)&&(b=1e3),(void 0===d||null===d)&&(d=c.Easing.Default),void 0===e&&(e=!1),void 0===f&&(f=0),void 0===g&&(g=0),void 0===h&&(h=!1),"string"==typeof d&&this.manager.easeMap[d]&&(d=this.manager.easeMap[d]),this.isRunning?(console.warn("Phaser.Tween.to cannot be called after Tween.start"),this):(this.timeline.push(new c.TweenData(this).to(a,b,d,f,g,h)),e&&this.start(),this)},from:function(a,b,d,e,f,g,h){return void 0===b&&(b=1e3),(void 0===d||null===d)&&(d=c.Easing.Default),void 0===e&&(e=!1),void 0===f&&(f=0),void 0===g&&(g=0),void 0===h&&(h=!1),"string"==typeof d&&this.manager.easeMap[d]&&(d=this.manager.easeMap[d]),this.isRunning?(console.warn("Phaser.Tween.from cannot be called after Tween.start"),this):(this.timeline.push(new c.TweenData(this).from(a,b,d,f,g,h)),e&&this.start(),this)},start:function(a){if(void 0===a&&(a=0),null===this.game||null===this.target||0===this.timeline.length||this.isRunning)return this;for(var b=0;ba||a>this.timeline.length-1)&&(a=0),this.current=a,this.timeline[this.current].start(),this},stop:function(a){return void 0===a&&(a=!1),this.isRunning=!1,this._onUpdateCallback=null,this._onUpdateCallbackContext=null,a&&(this.onComplete.dispatch(this.target,this),this._hasStarted=!1,this.chainedTween&&this.chainedTween.start()),this.manager.remove(this),this},updateTweenData:function(a,b,c){if(0===this.timeline.length)return this;if(void 0===c&&(c=0),-1===c)for(var d=0;d0?arguments[a-1].chainedTween=arguments[a]:this.chainedTween=arguments[a];return this},loop:function(a){return void 0===a&&(a=!0),this.repeatCounter=a?-1:0,this},onUpdateCallback:function(a,b){return this._onUpdateCallback=a,this._onUpdateCallbackContext=b,this},pause:function(){this.isPaused=!0,this._codePaused=!0,this._pausedTime=this.game.time.time},_pause:function(){this._codePaused||(this.isPaused=!0,this._pausedTime=this.game.time.time)},resume:function(){if(this.isPaused){this.isPaused=!1,this._codePaused=!1;for(var a=0;a0?(this.repeatCounter--,this.timeline[this.current].start(),this.onRepeat.dispatch(this.target,this),!0):(this.isRunning=!1,this.onComplete.dispatch(this.target,this),this._hasStarted=!1,this.chainedTween&&this.chainedTween.start(),!1):(this.onChildComplete.dispatch(this.target,this),this.timeline[this.current].start(),!0)}},generateData:function(a,b){if(null===this.game||null===this.target)return null;void 0===a&&(a=60),void 0===b&&(b=[]);for(var c=0;c0?this.isRunning=!1:this.isRunning=!0,this.isFrom)for(var a in this.vStartCache)this.vStart[a]=this.vEndCache[a],this.vEnd[a]=this.vStartCache[a],this.parent.target[a]=this.vStart[a];return this.value=0,this.yoyoCounter=0,this.repeatCounter=this.repeatTotal,this},loadValues:function(){for(var a in this.parent.properties){if(this.vStart[a]=this.parent.properties[a],Array.isArray(this.vEnd[a])){if(0===this.vEnd[a].length)continue;0===this.percent&&(this.vEnd[a]=[this.vStart[a]].concat(this.vEnd[a]))}"undefined"!=typeof this.vEnd[a]?("string"==typeof this.vEnd[a]&&(this.vEnd[a]=this.vStart[a]+parseFloat(this.vEnd[a],10)),this.parent.properties[a]=this.vEnd[a]):this.vEnd[a]=this.vStart[a],this.vStartCache[a]=this.vStart[a],this.vEndCache[a]=this.vEnd[a]}return this},update:function(a){if(this.isRunning){if(a=this.startTime))return c.TweenData.PENDING;this.isRunning=!0}var b=this.parent.frameBased?this.game.time.physicsElapsedMS:this.game.time.elapsedMS; -this.parent.reverse?(this.dt-=b*this.parent.timeScale,this.dt=Math.max(this.dt,0)):(this.dt+=b*this.parent.timeScale,this.dt=Math.min(this.dt,this.duration)),this.percent=this.dt/this.duration,this.value=this.easingFunction(this.percent);for(var d in this.vEnd){var e=this.vStart[d],f=this.vEnd[d];Array.isArray(f)?this.parent.target[d]=this.interpolationFunction.call(this.interpolationContext,f,this.value):this.parent.target[d]=e+(f-e)*this.value}return!this.parent.reverse&&1===this.percent||this.parent.reverse&&0===this.percent?this.repeat():c.TweenData.RUNNING},generateData:function(a){this.parent.reverse?this.dt=this.duration:this.dt=0;var b=[],c=!1,d=1/a*1e3;do{this.parent.reverse?(this.dt-=d,this.dt=Math.max(this.dt,0)):(this.dt+=d,this.dt=Math.min(this.dt,this.duration)),this.percent=this.dt/this.duration,this.value=this.easingFunction(this.percent);var e={};for(var f in this.vEnd){var g=this.vStart[f],h=this.vEnd[f];Array.isArray(h)?e[f]=this.interpolationFunction(h,this.value):e[f]=g+(h-g)*this.value}b.push(e),(!this.parent.reverse&&1===this.percent||this.parent.reverse&&0===this.percent)&&(c=!0)}while(!c);if(this.yoyo){var i=b.slice();i.reverse(),b=b.concat(i)}return b},repeat:function(){if(this.yoyo){if(this.inReverse&&0===this.repeatCounter){for(var a in this.vStartCache)this.vStart[a]=this.vStartCache[a],this.vEnd[a]=this.vEndCache[a];return this.inReverse=!1,c.TweenData.COMPLETE}this.inReverse=!this.inReverse}else if(0===this.repeatCounter)return c.TweenData.COMPLETE;if(this.inReverse)for(var a in this.vStartCache)this.vStart[a]=this.vEndCache[a],this.vEnd[a]=this.vStartCache[a];else{for(var a in this.vStartCache)this.vStart[a]=this.vStartCache[a],this.vEnd[a]=this.vEndCache[a];this.repeatCounter>0&&this.repeatCounter--}return this.startTime=this.game.time.time,this.yoyo&&this.inReverse?this.startTime+=this.yoyoDelay:this.inReverse||(this.startTime+=this.repeatDelay),this.parent.reverse?this.dt=this.duration:this.dt=0,c.TweenData.LOOPED}},c.TweenData.prototype.constructor=c.TweenData,c.Easing={Linear:{None:function(a){return a}},Quadratic:{In:function(a){return a*a},Out:function(a){return a*(2-a)},InOut:function(a){return(a*=2)<1?.5*a*a:-.5*(--a*(a-2)-1)}},Cubic:{In:function(a){return a*a*a},Out:function(a){return--a*a*a+1},InOut:function(a){return(a*=2)<1?.5*a*a*a:.5*((a-=2)*a*a+2)}},Quartic:{In:function(a){return a*a*a*a},Out:function(a){return 1- --a*a*a*a},InOut:function(a){return(a*=2)<1?.5*a*a*a*a:-.5*((a-=2)*a*a*a-2)}},Quintic:{In:function(a){return a*a*a*a*a},Out:function(a){return--a*a*a*a*a+1},InOut:function(a){return(a*=2)<1?.5*a*a*a*a*a:.5*((a-=2)*a*a*a*a+2)}},Sinusoidal:{In:function(a){return 0===a?0:1===a?1:1-Math.cos(a*Math.PI/2)},Out:function(a){return 0===a?0:1===a?1:Math.sin(a*Math.PI/2)},InOut:function(a){return 0===a?0:1===a?1:.5*(1-Math.cos(Math.PI*a))}},Exponential:{In:function(a){return 0===a?0:Math.pow(1024,a-1)},Out:function(a){return 1===a?1:1-Math.pow(2,-10*a)},InOut:function(a){return 0===a?0:1===a?1:(a*=2)<1?.5*Math.pow(1024,a-1):.5*(-Math.pow(2,-10*(a-1))+2)}},Circular:{In:function(a){return 1-Math.sqrt(1-a*a)},Out:function(a){return Math.sqrt(1- --a*a)},InOut:function(a){return(a*=2)<1?-.5*(Math.sqrt(1-a*a)-1):.5*(Math.sqrt(1-(a-=2)*a)+1)}},Elastic:{In:function(a){var b,c=.1,d=.4;return 0===a?0:1===a?1:(!c||1>c?(c=1,b=d/4):b=d*Math.asin(1/c)/(2*Math.PI),-(c*Math.pow(2,10*(a-=1))*Math.sin((a-b)*(2*Math.PI)/d)))},Out:function(a){var b,c=.1,d=.4;return 0===a?0:1===a?1:(!c||1>c?(c=1,b=d/4):b=d*Math.asin(1/c)/(2*Math.PI),c*Math.pow(2,-10*a)*Math.sin((a-b)*(2*Math.PI)/d)+1)},InOut:function(a){var b,c=.1,d=.4;return 0===a?0:1===a?1:(!c||1>c?(c=1,b=d/4):b=d*Math.asin(1/c)/(2*Math.PI),(a*=2)<1?-.5*(c*Math.pow(2,10*(a-=1))*Math.sin((a-b)*(2*Math.PI)/d)):c*Math.pow(2,-10*(a-=1))*Math.sin((a-b)*(2*Math.PI)/d)*.5+1)}},Back:{In:function(a){var b=1.70158;return a*a*((b+1)*a-b)},Out:function(a){var b=1.70158;return--a*a*((b+1)*a+b)+1},InOut:function(a){var b=2.5949095;return(a*=2)<1?.5*(a*a*((b+1)*a-b)):.5*((a-=2)*a*((b+1)*a+b)+2)}},Bounce:{In:function(a){return 1-c.Easing.Bounce.Out(1-a)},Out:function(a){return 1/2.75>a?7.5625*a*a:2/2.75>a?7.5625*(a-=1.5/2.75)*a+.75:2.5/2.75>a?7.5625*(a-=2.25/2.75)*a+.9375:7.5625*(a-=2.625/2.75)*a+.984375},InOut:function(a){return.5>a?.5*c.Easing.Bounce.In(2*a):.5*c.Easing.Bounce.Out(2*a-1)+.5}}},c.Easing.Default=c.Easing.Linear.None,c.Easing.Power0=c.Easing.Linear.None,c.Easing.Power1=c.Easing.Quadratic.Out,c.Easing.Power2=c.Easing.Cubic.Out,c.Easing.Power3=c.Easing.Quartic.Out,c.Easing.Power4=c.Easing.Quintic.Out,c.Time=function(a){this.game=a,this.time=0,this.prevTime=0,this.now=0,this.elapsed=0,this.elapsedMS=0,this.physicsElapsed=1/60,this.physicsElapsedMS=1/60*1e3,this.desiredFpsMult=1/60,this._desiredFps=60,this.suggestedFps=this.desiredFps,this.slowMotion=1,this.advancedTiming=!1,this.frames=0,this.fps=0,this.fpsMin=1e3,this.fpsMax=0,this.msMin=1e3,this.msMax=0,this.pauseDuration=0,this.timeToCall=0,this.timeExpected=0,this.events=new c.Timer(this.game,!1),this._frameCount=0,this._elapsedAccumulator=0,this._started=0,this._timeLastSecond=0,this._pauseStarted=0,this._justResumed=!1,this._timers=[]},c.Time.prototype={boot:function(){this._started=Date.now(),this.time=Date.now(),this.events.start(),this.timeExpected=this.time},add:function(a){return this._timers.push(a),a},create:function(a){void 0===a&&(a=!0);var b=new c.Timer(this.game,a);return this._timers.push(b),b},removeAll:function(){for(var a=0;aa;)this._timers[a].update(this.time)?a++:(this._timers.splice(a,1),b--)},updateAdvancedTiming:function(){this._frameCount++,this._elapsedAccumulator+=this.elapsed,this._frameCount>=2*this._desiredFps&&(this.suggestedFps=5*Math.floor(200/(this._elapsedAccumulator/this._frameCount)),this._frameCount=0,this._elapsedAccumulator=0),this.msMin=Math.min(this.msMin,this.elapsed),this.msMax=Math.max(this.msMax,this.elapsed),this.frames++,this.now>this._timeLastSecond+1e3&&(this.fps=Math.round(1e3*this.frames/(this.now-this._timeLastSecond)),this.fpsMin=Math.min(this.fpsMin,this.fps),this.fpsMax=Math.max(this.fpsMax,this.fps),this._timeLastSecond=this.now,this.frames=0)},gamePaused:function(){this._pauseStarted=Date.now(),this.events.pause();for(var a=this._timers.length;a--;)this._timers[a]._pause()},gameResumed:function(){this.time=Date.now(),this.pauseDuration=this.time-this._pauseStarted,this.events.resume();for(var a=this._timers.length;a--;)this._timers[a]._resume()},totalElapsedSeconds:function(){return.001*(this.time-this._started)},elapsedSince:function(a){return this.time-a},elapsedSecondsSince:function(a){return.001*(this.time-a)},reset:function(){this._started=this.time,this.removeAll()}},Object.defineProperty(c.Time.prototype,"desiredFps",{get:function(){return this._desiredFps},set:function(a){this._desiredFps=a,this.physicsElapsed=1/a,this.physicsElapsedMS=1e3*this.physicsElapsed,this.desiredFpsMult=1/a}}),c.Time.prototype.constructor=c.Time,c.Timer=function(a,b){void 0===b&&(b=!0),this.game=a,this.running=!1,this.autoDestroy=b,this.expired=!1,this.elapsed=0,this.events=[],this.onComplete=new c.Signal,this.nextTick=0,this.timeCap=1e3,this.paused=!1,this._codePaused=!1,this._started=0,this._pauseStarted=0,this._pauseTotal=0,this._now=Date.now(),this._len=0,this._marked=0,this._i=0,this._diff=0,this._newTick=0},c.Timer.MINUTE=6e4,c.Timer.SECOND=1e3,c.Timer.HALF=500,c.Timer.QUARTER=250,c.Timer.prototype={create:function(a,b,d,e,f,g){a=Math.round(a);var h=a;h+=0===this._now?this.game.time.time:this._now;var i=new c.TimerEvent(this,a,h,d,b,e,f,g);return this.events.push(i),this.order(),this.expired=!1,i},add:function(a,b,c){return this.create(a,!1,0,b,c,Array.prototype.slice.call(arguments,3))},repeat:function(a,b,c,d){return this.create(a,!1,b,c,d,Array.prototype.slice.call(arguments,4))},loop:function(a,b,c){return this.create(a,!0,0,b,c,Array.prototype.slice.call(arguments,3))},start:function(a){if(!this.running){this._started=this.game.time.time+(a||0),this.running=!0;for(var b=0;b0&&(this.events.sort(this.sortHandler),this.nextTick=this.events[0].tick)},sortHandler:function(a,b){return a.tickb.tick?1:0},clearPendingEvents:function(){for(this._i=this.events.length;this._i--;)this.events[this._i].pendingDelete&&this.events.splice(this._i,1);this._len=this.events.length,this._i=0},update:function(a){if(this.paused)return!0;if(this.elapsed=a-this._now,this._now=a,this.elapsed>this.timeCap&&this.adjustEvents(a-this.elapsed),this._marked=0,this.clearPendingEvents(),this.running&&this._now>=this.nextTick&&this._len>0){for(;this._i=this.events[this._i].tick&&!this.events[this._i].pendingDelete;)this._newTick=this._now+this.events[this._i].delay-(this._now-this.events[this._i].tick),this._newTick<0&&(this._newTick=this._now+this.events[this._i].delay),this.events[this._i].loop===!0?(this.events[this._i].tick=this._newTick,this.events[this._i].callback.apply(this.events[this._i].callbackContext,this.events[this._i].args)):this.events[this._i].repeatCount>0?(this.events[this._i].repeatCount--,this.events[this._i].tick=this._newTick,this.events[this._i].callback.apply(this.events[this._i].callbackContext,this.events[this._i].args)):(this._marked++,this.events[this._i].pendingDelete=!0,this.events[this._i].callback.apply(this.events[this._i].callbackContext,this.events[this._i].args)),this._i++;this.events.length>this._marked?this.order():(this.expired=!0,this.onComplete.dispatch(this))}return this.expired&&this.autoDestroy?!1:!0},pause:function(){this.running&&(this._codePaused=!0,this.paused||(this._pauseStarted=this.game.time.time,this.paused=!0))},_pause:function(){!this.paused&&this.running&&(this._pauseStarted=this.game.time.time,this.paused=!0)},adjustEvents:function(a){for(var b=0;bc&&(c=0),this.events[b].tick=this._now+c}var d=this.nextTick-a;0>d?this.nextTick=this._now:this.nextTick=this._now+d},resume:function(){if(this.paused){var a=this.game.time.time;this._pauseTotal+=a-this._now,this._now=a,this.adjustEvents(this._pauseStarted),this.paused=!1,this._codePaused=!1}},_resume:function(){this._codePaused||this.resume()},removeAll:function(){this.onComplete.removeAll(),this.events.length=0,this._len=0,this._i=0},destroy:function(){this.onComplete.removeAll(),this.running=!1,this.events=[],this._len=0,this._i=0}},Object.defineProperty(c.Timer.prototype,"next",{get:function(){return this.nextTick}}),Object.defineProperty(c.Timer.prototype,"duration",{get:function(){return this.running&&this.nextTick>this._now?this.nextTick-this._now:0}}),Object.defineProperty(c.Timer.prototype,"length",{get:function(){return this.events.length}}),Object.defineProperty(c.Timer.prototype,"ms",{get:function(){return this.running?this._now-this._started-this._pauseTotal:0}}),Object.defineProperty(c.Timer.prototype,"seconds",{get:function(){return this.running?.001*this.ms:0}}),c.Timer.prototype.constructor=c.Timer,c.TimerEvent=function(a,b,c,d,e,f,g,h){this.timer=a,this.delay=b,this.tick=c,this.repeatCount=d-1,this.loop=e,this.callback=f,this.callbackContext=g,this.args=h,this.pendingDelete=!1},c.TimerEvent.prototype.constructor=c.TimerEvent,c.AnimationManager=function(a){this.sprite=a,this.game=a.game,this.currentFrame=null,this.currentAnim=null,this.updateIfVisible=!0,this.isLoaded=!1,this._frameData=null,this._anims={},this._outputFrames=[]},c.AnimationManager.prototype={loadFrameData:function(a,b){if(void 0===a)return!1;if(this.isLoaded)for(var c in this._anims)this._anims[c].updateFrameData(a);return this._frameData=a,void 0===b||null===b?this.frame=0:"string"==typeof b?this.frameName=b:this.frame=b,this.isLoaded=!0,!0},copyFrameData:function(a,b){if(this._frameData=a.clone(),this.isLoaded)for(var c in this._anims)this._anims[c].updateFrameData(this._frameData);return void 0===b||null===b?this.frame=0:"string"==typeof b?this.frameName=b:this.frame=b,this.isLoaded=!0,!0},add:function(a,b,d,e,f){return b=b||[],d=d||60,void 0===e&&(e=!1),void 0===f&&(f=b&&"number"==typeof b[0]?!0:!1),this._outputFrames=[],this._frameData.getFrameIndexes(b,f,this._outputFrames),this._anims[a]=new c.Animation(this.game,this.sprite,a,this._frameData,this._outputFrames,d,e),this.currentAnim=this._anims[a],this.sprite.tilingTexture&&(this.sprite.refreshTexture=!0),this._anims[a]},validateFrames:function(a,b){void 0===b&&(b=!0);for(var c=0;cthis._frameData.total)return!1}else if(this._frameData.checkFrameName(a[c])===!1)return!1;return!0},play:function(a,b,c,d){return this._anims[a]?this.currentAnim===this._anims[a]?this.currentAnim.isPlaying===!1?(this.currentAnim.paused=!1,this.currentAnim.play(b,c,d)):this.currentAnim:(this.currentAnim&&this.currentAnim.isPlaying&&this.currentAnim.stop(),this.currentAnim=this._anims[a],this.currentAnim.paused=!1,this.currentFrame=this.currentAnim.currentFrame,this.currentAnim.play(b,c,d)):void 0},stop:function(a,b){void 0===b&&(b=!1),!this.currentAnim||"string"==typeof a&&a!==this.currentAnim.name||this.currentAnim.stop(b)},update:function(){return this.updateIfVisible&&!this.sprite.visible?!1:this.currentAnim&&this.currentAnim.update()?(this.currentFrame=this.currentAnim.currentFrame,!0):!1},next:function(a){this.currentAnim&&(this.currentAnim.next(a),this.currentFrame=this.currentAnim.currentFrame)},previous:function(a){this.currentAnim&&(this.currentAnim.previous(a),this.currentFrame=this.currentAnim.currentFrame)},getAnimation:function(a){return"string"==typeof a&&this._anims[a]?this._anims[a]:null},refreshFrame:function(){this.sprite.setTexture(PIXI.TextureCache[this.currentFrame.uuid])},destroy:function(){var a=null;for(var a in this._anims)this._anims.hasOwnProperty(a)&&this._anims[a].destroy();this._anims={},this._outputFrames=[],this._frameData=null,this.currentAnim=null,this.currentFrame=null,this.sprite=null,this.game=null}},c.AnimationManager.prototype.constructor=c.AnimationManager,Object.defineProperty(c.AnimationManager.prototype,"frameData",{get:function(){return this._frameData}}),Object.defineProperty(c.AnimationManager.prototype,"frameTotal",{get:function(){return this._frameData.total}}),Object.defineProperty(c.AnimationManager.prototype,"paused",{get:function(){return this.currentAnim.isPaused},set:function(a){this.currentAnim.paused=a}}),Object.defineProperty(c.AnimationManager.prototype,"name",{get:function(){return this.currentAnim?this.currentAnim.name:void 0}}),Object.defineProperty(c.AnimationManager.prototype,"frame",{get:function(){return this.currentFrame?this.currentFrame.index:void 0},set:function(a){"number"==typeof a&&this._frameData&&null!==this._frameData.getFrame(a)&&(this.currentFrame=this._frameData.getFrame(a),this.currentFrame&&this.sprite.setFrame(this.currentFrame))}}),Object.defineProperty(c.AnimationManager.prototype,"frameName",{get:function(){return this.currentFrame?this.currentFrame.name:void 0},set:function(a){"string"==typeof a&&this._frameData&&null!==this._frameData.getFrameByName(a)?(this.currentFrame=this._frameData.getFrameByName(a),this.currentFrame&&(this._frameIndex=this.currentFrame.index,this.sprite.setFrame(this.currentFrame))):console.warn("Cannot set frameName: "+a)}}),c.Animation=function(a,b,d,e,f,g,h){void 0===h&&(h=!1),this.game=a,this._parent=b,this._frameData=e,this.name=d,this._frames=[],this._frames=this._frames.concat(f),this.delay=1e3/g,this.loop=h,this.loopCount=0,this.killOnComplete=!1,this.isFinished=!1,this.isPlaying=!1,this.isPaused=!1,this._pauseStartTime=0,this._frameIndex=0,this._frameDiff=0,this._frameSkip=1,this.currentFrame=this._frameData.getFrame(this._frames[this._frameIndex]),this.onStart=new c.Signal,this.onUpdate=null,this.onComplete=new c.Signal,this.onLoop=new c.Signal,this.isReversed=!1,this.game.onPause.add(this.onPause,this),this.game.onResume.add(this.onResume,this)},c.Animation.prototype={play:function(a,b,c){return"number"==typeof a&&(this.delay=1e3/a),"boolean"==typeof b&&(this.loop=b),"undefined"!=typeof c&&(this.killOnComplete=c),this.isPlaying=!0,this.isFinished=!1,this.paused=!1,this.loopCount=0,this._timeLastFrame=this.game.time.time,this._timeNextFrame=this.game.time.time+this.delay,this._frameIndex=this.isReversed?this._frames.length-1:0,this.updateCurrentFrame(!1,!0),this._parent.events.onAnimationStart$dispatch(this._parent,this),this.onStart.dispatch(this._parent,this),this._parent.animations.currentAnim=this,this._parent.animations.currentFrame=this.currentFrame,this},restart:function(){this.isPlaying=!0,this.isFinished=!1,this.paused=!1,this.loopCount=0,this._timeLastFrame=this.game.time.time,this._timeNextFrame=this.game.time.time+this.delay,this._frameIndex=0,this.currentFrame=this._frameData.getFrame(this._frames[this._frameIndex]),this._parent.setFrame(this.currentFrame),this._parent.animations.currentAnim=this,this._parent.animations.currentFrame=this.currentFrame,this.onStart.dispatch(this._parent,this)},reverse:function(){return this.reversed=!this.reversed,this},reverseOnce:function(){return this.onComplete.addOnce(this.reverse.bind(this)),this.reverse()},setFrame:function(a,b){var c;if(void 0===b&&(b=!1),"string"==typeof a)for(var d=0;d=this._timeNextFrame?(this._frameSkip=1,this._frameDiff=this.game.time.time-this._timeNextFrame,this._timeLastFrame=this.game.time.time,this._frameDiff>this.delay&&(this._frameSkip=Math.floor(this._frameDiff/this.delay),this._frameDiff-=this._frameSkip*this.delay),this._timeNextFrame=this.game.time.time+(this.delay-this._frameDiff),this.isReversed?this._frameIndex-=this._frameSkip:this._frameIndex+=this._frameSkip,!this.isReversed&&this._frameIndex>=this._frames.length||this.isReversed&&this._frameIndex<=-1?this.loop?(this._frameIndex=Math.abs(this._frameIndex)%this._frames.length,this.isReversed&&(this._frameIndex=this._frames.length-1-this._frameIndex),this.currentFrame=this._frameData.getFrame(this._frames[this._frameIndex]),this.currentFrame&&this._parent.setFrame(this.currentFrame),this.loopCount++,this._parent.events.onAnimationLoop$dispatch(this._parent,this),this.onLoop.dispatch(this._parent,this),this.onUpdate?(this.onUpdate.dispatch(this,this.currentFrame),!!this._frameData):!0):(this.complete(),!1):this.updateCurrentFrame(!0)):!1},updateCurrentFrame:function(a,b){if(void 0===b&&(b=!1),!this._frameData)return!1;var c=this.currentFrame.index;return this.currentFrame=this._frameData.getFrame(this._frames[this._frameIndex]),this.currentFrame&&(b||!b&&c!==this.currentFrame.index)&&this._parent.setFrame(this.currentFrame),this.onUpdate&&a?(this.onUpdate.dispatch(this,this.currentFrame),!!this._frameData):!0},next:function(a){void 0===a&&(a=1);var b=this._frameIndex+a;b>=this._frames.length&&(this.loop?b%=this._frames.length:b=this._frames.length-1),b!==this._frameIndex&&(this._frameIndex=b,this.updateCurrentFrame(!0))},previous:function(a){void 0===a&&(a=1);var b=this._frameIndex-a;0>b&&(this.loop?b=this._frames.length+b:b++),b!==this._frameIndex&&(this._frameIndex=b,this.updateCurrentFrame(!0))},updateFrameData:function(a){this._frameData=a,this.currentFrame=this._frameData?this._frameData.getFrame(this._frames[this._frameIndex%this._frames.length]):null},destroy:function(){this._frameData&&(this.game.onPause.remove(this.onPause,this),this.game.onResume.remove(this.onResume,this),this.game=null,this._parent=null,this._frames=null,this._frameData=null,this.currentFrame=null,this.isPlaying=!1,this.onStart.dispose(),this.onLoop.dispose(),this.onComplete.dispose(),this.onUpdate&&this.onUpdate.dispose())},complete:function(){this._frameIndex=this._frames.length-1,this.currentFrame=this._frameData.getFrame(this._frames[this._frameIndex]),this.isPlaying=!1,this.isFinished=!0,this.paused=!1,this._parent.events.onAnimationComplete$dispatch(this._parent,this),this.onComplete.dispatch(this._parent,this),this.killOnComplete&&this._parent.kill()}},c.Animation.prototype.constructor=c.Animation,Object.defineProperty(c.Animation.prototype,"paused",{get:function(){return this.isPaused},set:function(a){this.isPaused=a,a?this._pauseStartTime=this.game.time.time:this.isPlaying&&(this._timeNextFrame=this.game.time.time+this.delay)}}),Object.defineProperty(c.Animation.prototype,"reversed",{get:function(){return this.isReversed},set:function(a){this.isReversed=a}}),Object.defineProperty(c.Animation.prototype,"frameTotal",{get:function(){return this._frames.length}}),Object.defineProperty(c.Animation.prototype,"frame",{get:function(){return null!==this.currentFrame?this.currentFrame.index:this._frameIndex},set:function(a){this.currentFrame=this._frameData.getFrame(this._frames[a]),null!==this.currentFrame&&(this._frameIndex=a,this._parent.setFrame(this.currentFrame),this.onUpdate&&this.onUpdate.dispatch(this,this.currentFrame))}}),Object.defineProperty(c.Animation.prototype,"speed",{get:function(){return Math.round(1e3/this.delay)},set:function(a){a>=1&&(this.delay=1e3/a)}}),Object.defineProperty(c.Animation.prototype,"enableUpdate",{get:function(){return null!==this.onUpdate},set:function(a){a&&null===this.onUpdate?this.onUpdate=new c.Signal:a||null===this.onUpdate||(this.onUpdate.dispose(),this.onUpdate=null)}}),c.Animation.generateFrameNames=function(a,b,d,e,f){void 0===e&&(e="");var g=[],h="";if(d>b)for(var i=b;d>=i;i++)h="number"==typeof f?c.Utils.pad(i.toString(),f,"0",1):i.toString(),h=a+h+e,g.push(h);else for(var i=b;i>=d;i--)h="number"==typeof f?c.Utils.pad(i.toString(),f,"0",1):i.toString(),h=a+h+e,g.push(h);return g},c.Frame=function(a,b,d,e,f,g){this.index=a,this.x=b,this.y=d,this.width=e,this.height=f,this.name=g,this.centerX=Math.floor(e/2),this.centerY=Math.floor(f/2),this.distance=c.Math.distance(0,0,e,f),this.rotated=!1,this.rotationDirection="cw",this.trimmed=!1,this.sourceSizeW=e,this.sourceSizeH=f,this.spriteSourceSizeX=0,this.spriteSourceSizeY=0,this.spriteSourceSizeW=0,this.spriteSourceSizeH=0,this.right=this.x+this.width,this.bottom=this.y+this.height},c.Frame.prototype={resize:function(a,b){this.width=a,this.height=b,this.centerX=Math.floor(a/2),this.centerY=Math.floor(b/2),this.distance=c.Math.distance(0,0,a,b),this.sourceSizeW=a,this.sourceSizeH=b,this.right=this.x+a,this.bottom=this.y+b},setTrim:function(a,b,c,d,e,f,g){this.trimmed=a,a&&(this.sourceSizeW=b,this.sourceSizeH=c,this.centerX=Math.floor(b/2),this.centerY=Math.floor(c/2),this.spriteSourceSizeX=d,this.spriteSourceSizeY=e,this.spriteSourceSizeW=f,this.spriteSourceSizeH=g)},clone:function(){var a=new c.Frame(this.index,this.x,this.y,this.width,this.height,this.name);for(var b in this)this.hasOwnProperty(b)&&(a[b]=this[b]);return a},getRect:function(a){return void 0===a?a=new c.Rectangle(this.x,this.y,this.width,this.height):a.setTo(this.x,this.y,this.width,this.height),a}},c.Frame.prototype.constructor=c.Frame,c.FrameData=function(){this._frames=[],this._frameNames=[]},c.FrameData.prototype={addFrame:function(a){return a.index=this._frames.length,this._frames.push(a),""!==a.name&&(this._frameNames[a.name]=a.index),a},getFrame:function(a){return a>=this._frames.length&&(a=0),this._frames[a]},getFrameByName:function(a){return"number"==typeof this._frameNames[a]?this._frames[this._frameNames[a]]:null},checkFrameName:function(a){return null==this._frameNames[a]?!1:!0},clone:function(){for(var a=new c.FrameData,b=0;b=d;d++)c.push(this._frames[d]);return c},getFrames:function(a,b,c){if(void 0===b&&(b=!0),void 0===c&&(c=[]),void 0===a||0===a.length)for(var d=0;d=d&&(d=Math.floor(-j/Math.min(-1,d))),0>=e&&(e=Math.floor(-k/Math.min(-1,e)));var l=Math.floor((j-g)/(d+h)),m=Math.floor((k-g)/(e+h)),n=l*m;if(-1!==f&&(n=f),0===j||0===k||d>j||e>k||0===n)return console.warn("Phaser.AnimationParser.spriteSheet: '"+b+"'s width/height zero or width/height < given frameWidth/frameHeight"),null;for(var o=new c.FrameData,p=g,q=g,r=0;n>r;r++)o.addFrame(new c.Frame(r,p,q,d,e,"")),p+=d+h,p+d>j&&(p=g,q+=e+h);return o},JSONData:function(a,b){if(!b.frames)return console.warn("Phaser.AnimationParser.JSONData: Invalid Texture Atlas JSON given, missing 'frames' array"),void console.log(b);for(var d,e=new c.FrameData,f=b.frames,g=0;g tag");for(var d,e,f,g,h,i,j,k,l,m,n,o=new c.FrameData,p=b.getElementsByTagName("SubTexture"),q=0;q-1},getAssetIndex:function(a,b){for(var c=-1,d=0;d-1?{index:c,file:this._fileList[c]}:!1},reset:function(a,b){void 0===b&&(b=!1),this.resetLocked||(a&&(this.preloadSprite=null),this.isLoading=!1,this._processingHead=0,this._fileList.length=0,this._flightQueue.length=0,this._fileLoadStarted=!1,this._totalFileCount=0,this._totalPackCount=0,this._loadedPackCount=0,this._loadedFileCount=0,b&&(this.onLoadStart.removeAll(),this.onLoadComplete.removeAll(),this.onPackComplete.removeAll(),this.onFileStart.removeAll(),this.onFileComplete.removeAll(),this.onFileError.removeAll()))},addToFileList:function(a,b,c,d,e,f){if(void 0===e&&(e=!1),void 0===b||""===b)return console.warn("Phaser.Loader: Invalid or no key given of type "+a),this;if(void 0===c||null===c){if(!f)return console.warn("Phaser.Loader: No URL given for file type: "+a+" key: "+b),this;c=b+f}var g={type:a,key:b,path:this.path,url:c,syncPoint:this._withSyncPointDepth>0,data:null,loading:!1,loaded:!1,error:!1};if(d)for(var h in d)g[h]=d[h];var i=this.getAssetIndex(a,b);if(e&&i>-1){var j=this._fileList[i];j.loading||j.loaded?(this._fileList.push(g),this._totalFileCount++):this._fileList[i]=g}else-1===i&&(this._fileList.push(g),this._totalFileCount++);return this},replaceInFileList:function(a,b,c,d){return this.addToFileList(a,b,c,d,!0)},pack:function(a,b,c,d){if(void 0===b&&(b=null),void 0===c&&(c=null),void 0===d&&(d=null),!b&&!c)return console.warn("Phaser.Loader.pack - Both url and data are null. One must be set."),this;var e={type:"packfile",key:a,url:b,path:this.path,syncPoint:!0,data:null,loading:!1,loaded:!1,error:!1,callbackContext:d};c&&("string"==typeof c&&(c=JSON.parse(c)),e.data=c||{},e.loaded=!0);for(var f=0;f=e||d&&this._loadedPackCount===this._totalPackCount)break}if(this.updateProgress(),this._processingHead>=this._fileList.length)this.finishedLoading();else if(!this._flightQueue.length){console.warn("Phaser.Loader - aborting: processing queue empty, loading may have stalled");var f=this;setTimeout(function(){f.finishedLoading(!0)},2e3)}},finishedLoading:function(a){this.hasLoaded||(this.hasLoaded=!0,this.isLoading=!1,a||this._fileLoadStarted||(this._fileLoadStarted=!0,this.onLoadStart.dispatch()),this.onLoadComplete.dispatch(),this.game.state.loadComplete(),this.reset())},asyncComplete:function(a,b){void 0===b&&(b=""),a.loaded=!0,a.error=!!b,b&&(a.errorMessage=b,console.warn("Phaser.Loader - "+a.type+"["+a.key+"]: "+b)),this.processLoadQueue()},processPack:function(a){var b=a.data[a.key];if(!b)return void console.warn("Phaser.Loader - "+a.key+": pack has data, but not for pack key");for(var d=0;d=400&&f.status<=599?e.call(g,a,f):d.call(g,a,f)}catch(b){g.hasLoaded?window.console&&console.error(b):g.asyncComplete(a,b.message||"Exception")}},f.onerror=function(){try{return e.call(g,a,f)}catch(b){g.hasLoaded?window.console&&console.error(b):g.asyncComplete(a,b.message||"Exception")}},a.requestObject=f,a.requestUrl=b,f.send()},xhrLoadWithXDR:function(a,b,c,d,e){this._warnedAboutXDomainRequest||this.game.device.ie&&!(this.game.device.ieVersion>=10)||(this._warnedAboutXDomainRequest=!0,console.warn("Phaser.Loader - using XDomainRequest outside of IE 9"));var f=new window.XDomainRequest;f.open("GET",b,!0),f.responseType=c,f.timeout=3e3,e=e||this.fileError;var g=this;f.onerror=function(){try{return e.call(g,a,f)}catch(b){g.asyncComplete(a,b.message||"Exception")}},f.ontimeout=function(){try{return e.call(g,a,f)}catch(b){g.asyncComplete(a,b.message||"Exception")}},f.onprogress=function(){},f.onload=function(){try{return 4==f.readyState&&f.status>=400&&f.status<=599?e.call(g,a,f):d.call(g,a,f)}catch(b){g.asyncComplete(a,b.message||"Exception")}},a.requestObject=f,a.requestUrl=b,setTimeout(function(){f.send()},0)},getVideoURL:function(a){for(var b=0;b=0&&(d=d.substr(0,d.indexOf("?")));var e=d.substr((Math.max(0,d.lastIndexOf("."))||1/0)+1);if(c=e.toLowerCase(),this.game.device.canPlayVideo(c))return a[b]}}return null},getAudioURL:function(a){if(this.game.sound.noAudio)return null;for(var b=0;b=0&&(d=d.substr(0,d.indexOf("?")));var e=d.substr((Math.max(0,d.lastIndexOf("."))||1/0)+1);if(c=e.toLowerCase(),this.game.device.canPlayAudio(c))return a[b]}}return null},fileError:function(a,b,c){var d=a.requestUrl||this.transformUrl(a.url,a),e="error loading asset from URL "+d;!c&&b&&(c=b.status),c&&(e=e+" ("+c+")"),this.asyncComplete(a,e)},fileComplete:function(a,b){var d=!0;switch(a.type){case"packfile":var e=JSON.parse(b.responseText);a.data=e||{};break;case"image":this.cache.addImage(a.key,a.url,a.data);break;case"spritesheet":this.cache.addSpriteSheet(a.key,a.url,a.data,a.frameWidth,a.frameHeight,a.frameMax,a.margin,a.spacing);break;case"textureatlas":if(null==a.atlasURL)this.cache.addTextureAtlas(a.key,a.url,a.data,a.atlasData,a.format);else if(d=!1,a.format==c.Loader.TEXTURE_ATLAS_JSON_ARRAY||a.format==c.Loader.TEXTURE_ATLAS_JSON_HASH||a.format==c.Loader.TEXTURE_ATLAS_JSON_PYXEL)this.xhrLoad(a,this.transformUrl(a.atlasURL,a),"text",this.jsonLoadComplete);else{if(a.format!=c.Loader.TEXTURE_ATLAS_XML_STARLING)throw new Error("Phaser.Loader. Invalid Texture Atlas format: "+a.format);this.xhrLoad(a,this.transformUrl(a.atlasURL,a),"text",this.xmlLoadComplete)}break;case"bitmapfont":a.atlasURL?(d=!1,this.xhrLoad(a,this.transformUrl(a.atlasURL,a),"text",function(a,b){var c;try{c=JSON.parse(b.responseText)}catch(d){}c?(a.atlasType="json",this.jsonLoadComplete(a,b)):(a.atlasType="xml",this.xmlLoadComplete(a,b))})):this.cache.addBitmapFont(a.key,a.url,a.data,a.atlasData,a.atlasType,a.xSpacing,a.ySpacing);break;case"video":if(a.asBlob)try{a.data=b.response}catch(f){throw new Error("Phaser.Loader. Unable to parse video file as Blob: "+a.key)}this.cache.addVideo(a.key,a.url,a.data,a.asBlob);break;case"audio":this.game.sound.usingWebAudio?(a.data=b.response,this.cache.addSound(a.key,a.url,a.data,!0,!1),a.autoDecode&&this.game.sound.decode(a.key)):this.cache.addSound(a.key,a.url,a.data,!1,!0);break;case"text":a.data=b.responseText,this.cache.addText(a.key,a.url,a.data);break;case"shader":a.data=b.responseText,this.cache.addShader(a.key,a.url,a.data);break;case"physics":var e=JSON.parse(b.responseText);this.cache.addPhysicsData(a.key,a.url,e,a.format);break;case"script":a.data=document.createElement("script"),a.data.language="javascript",a.data.type="text/javascript",a.data.defer=!1,a.data.text=b.responseText,document.head.appendChild(a.data),a.callback&&(a.data=a.callback.call(a.callbackContext,a.key,b.responseText));break;case"binary":a.callback?a.data=a.callback.call(a.callbackContext,a.key,b.response):a.data=b.response,this.cache.addBinary(a.key,a.data)}d&&this.asyncComplete(a)},jsonLoadComplete:function(a,b){var c=JSON.parse(b.responseText);"tilemap"===a.type?this.cache.addTilemap(a.key,a.url,c,a.format):"bitmapfont"===a.type?this.cache.addBitmapFont(a.key,a.url,a.data,c,a.atlasType,a.xSpacing,a.ySpacing):"json"===a.type?this.cache.addJSON(a.key,a.url,c):this.cache.addTextureAtlas(a.key,a.url,a.data,c,a.format),this.asyncComplete(a)},csvLoadComplete:function(a,b){var c=b.responseText;this.cache.addTilemap(a.key,a.url,c,a.format),this.asyncComplete(a)},xmlLoadComplete:function(a,b){var c=b.responseText,d=this.parseXml(c);if(!d){var e=b.responseType||b.contentType;return console.warn("Phaser.Loader - "+a.key+": invalid XML ("+e+")"),void this.asyncComplete(a,"invalid XML")}"bitmapfont"===a.type?this.cache.addBitmapFont(a.key,a.url,a.data,d,a.atlasType,a.xSpacing,a.ySpacing):"textureatlas"===a.type?this.cache.addTextureAtlas(a.key,a.url,a.data,d,a.format):"xml"===a.type&&this.cache.addXML(a.key,a.url,d),this.asyncComplete(a)},parseXml:function(a){var b;try{if(window.DOMParser){var c=new DOMParser;b=c.parseFromString(a,"text/xml")}else b=new ActiveXObject("Microsoft.XMLDOM"),b.async="false",b.loadXML(a)}catch(d){b=null}return b&&b.documentElement&&!b.getElementsByTagName("parsererror").length?b:null},updateProgress:function(){this.preloadSprite&&(0===this.preloadSprite.direction?this.preloadSprite.rect.width=Math.floor(this.preloadSprite.width/100*this.progress):this.preloadSprite.rect.height=Math.floor(this.preloadSprite.height/100*this.progress),this.preloadSprite.sprite?this.preloadSprite.sprite.updateCrop():this.preloadSprite=null)},totalLoadedFiles:function(){return this._loadedFileCount},totalQueuedFiles:function(){return this._totalFileCount-this._loadedFileCount},totalLoadedPacks:function(){return this._totalPackCount},totalQueuedPacks:function(){return this._totalPackCount-this._loadedPackCount}},Object.defineProperty(c.Loader.prototype,"progressFloat",{get:function(){var a=this._loadedFileCount/this._totalFileCount*100;return c.Math.clamp(a||0,0,100)}}),Object.defineProperty(c.Loader.prototype,"progress",{get:function(){return Math.round(this.progressFloat)}}),c.Loader.prototype.constructor=c.Loader,c.LoaderParser={bitmapFont:function(a,b,c,d){return this.xmlBitmapFont(a,b,c,d)},xmlBitmapFont:function(a,b,c,d){var e={},f=a.getElementsByTagName("info")[0],g=a.getElementsByTagName("common")[0];e.font=f.getAttribute("face"),e.size=parseInt(f.getAttribute("size"),10),e.lineHeight=parseInt(g.getAttribute("lineHeight"),10)+d,e.chars={};for(var h=a.getElementsByTagName("char"),i=0;i=this.durationMS&&(this.usingWebAudio?this.loop?(this.onLoop.dispatch(this),this.isPlaying=!1,""===this.currentMarker?(this.currentTime=0,this.startTime=this.game.time.time,this.isPlaying=!0):(this.onMarkerComplete.dispatch(this.currentMarker,this),this.play(this.currentMarker,0,this.volume,!0,!0))):""!==this.currentMarker&&this.stop():this.loop?(this.onLoop.dispatch(this),""===this.currentMarker&&(this.currentTime=0,this.startTime=this.game.time.time),this.isPlaying=!1,this.play(this.currentMarker,0,this.volume,!0,!0)):this.stop())))):void this.destroy()},loopFull:function(a){this.play(null,0,a,!0)},play:function(a,b,c,d,e){if((void 0===a||a===!1||null===a)&&(a=""),void 0===e&&(e=!0),this.isPlaying&&!this.allowMultiple&&!e&&!this.override)return this;if(this._sound&&this.isPlaying&&!this.allowMultiple&&(this.override||e))if(this.usingWebAudio){if(void 0===this._sound.stop)this._sound.noteOff(0);else try{this._sound.stop(0)}catch(f){}this.externalNode?this._sound.disconnect(this.externalNode):this._sound.disconnect(this.gainNode)}else this.usingAudioTag&&(this._sound.pause(),this._sound.currentTime=0);if(""===a&&Object.keys(this.markers).length>0)return this;if(""!==a){if(this.currentMarker=a,!this.markers[a])return this;this.position=this.markers[a].start,this.volume=this.markers[a].volume,this.loop=this.markers[a].loop,this.duration=this.markers[a].duration,this.durationMS=this.markers[a].durationMS,"undefined"!=typeof c&&(this.volume=c),"undefined"!=typeof d&&(this.loop=d),this._tempMarker=a,this._tempPosition=this.position,this._tempVolume=this.volume,this._tempLoop=this.loop}else b=b||0,void 0===c&&(c=this._volume),void 0===d&&(d=this.loop),this.position=Math.max(0,b),this.volume=c,this.loop=d,this.duration=0,this.durationMS=0,this._tempMarker=a,this._tempPosition=b,this._tempVolume=c,this._tempLoop=d;return this.usingWebAudio?this.game.cache.isSoundDecoded(this.key)?(this._sound=this.context.createBufferSource(),this.externalNode?this._sound.connect(this.externalNode):this._sound.connect(this.gainNode),this._buffer=this.game.cache.getSoundData(this.key),this._sound.buffer=this._buffer,this.loop&&""===a&&(this._sound.loop=!0),this.loop||""!==a||(this._sound.onended=this.onEndedHandler.bind(this)),this.totalDuration=this._sound.buffer.duration,0===this.duration&&(this.duration=this.totalDuration,this.durationMS=Math.ceil(1e3*this.totalDuration)),void 0===this._sound.start?this._sound.noteGrainOn(0,this.position,this.duration):this.loop&&""===a?this._sound.start(0,0):this._sound.start(0,this.position,this.duration),this.isPlaying=!0,this.startTime=this.game.time.time,this.currentTime=0,this.stopTime=this.startTime+this.durationMS,this.onPlay.dispatch(this)):(this.pendingPlayback=!0,this.game.cache.getSound(this.key)&&this.game.cache.getSound(this.key).isDecoding===!1&&this.game.sound.decode(this.key,this)):this.game.cache.getSound(this.key)&&this.game.cache.getSound(this.key).locked?(this.game.cache.reloadSound(this.key),this.pendingPlayback=!0):this._sound&&(this.game.device.cocoonJS||4===this._sound.readyState)?(this._sound.play(),this.totalDuration=this._sound.duration,0===this.duration&&(this.duration=this.totalDuration,this.durationMS=1e3*this.totalDuration),this._sound.currentTime=this.position,this._sound.muted=this._muted,this._muted||this.game.sound.mute?this._sound.volume=0:this._sound.volume=this._volume,this.isPlaying=!0,this.startTime=this.game.time.time,this.currentTime=0,this.stopTime=this.startTime+this.durationMS,this.onPlay.dispatch(this)):this.pendingPlayback=!0,this},restart:function(a,b,c,d){a=a||"",b=b||0,c=c||1,void 0===d&&(d=!1),this.play(a,b,c,d,!0)},pause:function(){this.isPlaying&&this._sound&&(this.paused=!0,this.pausedPosition=this.currentTime,this.pausedTime=this.game.time.time,this._tempPause=this._sound.currentTime,this.onPause.dispatch(this),this.stop())},resume:function(){if(this.paused&&this._sound){if(this.usingWebAudio){var a=Math.max(0,this.position+this.pausedPosition/1e3);this._sound=this.context.createBufferSource(),this._sound.buffer=this._buffer,this.externalNode?this._sound.connect(this.externalNode):this._sound.connect(this.gainNode),this.loop&&(this._sound.loop=!0),this.loop||""!==this.currentMarker||(this._sound.onended=this.onEndedHandler.bind(this));var b=this.duration-this.pausedPosition/1e3;void 0===this._sound.start?this._sound.noteGrainOn(0,a,b):this.loop&&this.game.device.chrome?42===this.game.device.chromeVersion?this._sound.start(0):this._sound.start(0,a):this._sound.start(0,a,b)}else this._sound.currentTime=this._tempPause,this._sound.play();this.isPlaying=!0,this.paused=!1,this.startTime+=this.game.time.time-this.pausedTime,this.onResume.dispatch(this)}},stop:function(){if(this.isPlaying&&this._sound)if(this.usingWebAudio){if(void 0===this._sound.stop)this._sound.noteOff(0);else try{this._sound.stop(0)}catch(a){}this.externalNode?this._sound.disconnect(this.externalNode):this._sound.disconnect(this.gainNode)}else this.usingAudioTag&&(this._sound.pause(),this._sound.currentTime=0);if(this.pendingPlayback=!1,this.isPlaying=!1,!this.paused){var b=this.currentMarker;""!==this.currentMarker&&this.onMarkerComplete.dispatch(this.currentMarker,this),this.currentMarker="",null!==this.fadeTween&&this.fadeTween.stop(),this.onStop.dispatch(this,b)}},fadeIn:function(a,b,c){void 0===b&&(b=!1),void 0===c&&(c=this.currentMarker),this.paused||(this.play(c,0,0,b),this.fadeTo(a,1))},fadeOut:function(a){this.fadeTo(a,0)},fadeTo:function(a,b){if(this.isPlaying&&!this.paused&&b!==this.volume){if(void 0===a&&(a=1e3),void 0===b)return void console.warn("Phaser.Sound.fadeTo: No Volume Specified.");this.fadeTween=this.game.add.tween(this).to({volume:b},a,c.Easing.Linear.None,!0),this.fadeTween.onComplete.add(this.fadeComplete,this)}},fadeComplete:function(){this.onFadeComplete.dispatch(this,this.volume),0===this.volume&&this.stop()},updateGlobalVolume:function(a){this.usingAudioTag&&this._sound&&(this._sound.volume=a*this._volume)},destroy:function(a){void 0===a&&(a=!0),this.stop(),a?this.game.sound.remove(this):(this.markers={},this.context=null,this._buffer=null,this.externalNode=null,this.onDecoded.dispose(),this.onPlay.dispose(),this.onPause.dispose(),this.onResume.dispose(),this.onLoop.dispose(),this.onStop.dispose(),this.onMute.dispose(),this.onMarkerComplete.dispose())}},c.Sound.prototype.constructor=c.Sound,Object.defineProperty(c.Sound.prototype,"isDecoding",{get:function(){return this.game.cache.getSound(this.key).isDecoding}}),Object.defineProperty(c.Sound.prototype,"isDecoded",{get:function(){return this.game.cache.isSoundDecoded(this.key)}}),Object.defineProperty(c.Sound.prototype,"mute",{get:function(){return this._muted||this.game.sound.mute},set:function(a){a=a||!1,a!==this._muted&&(a?(this._muted=!0,this._muteVolume=this._tempVolume,this.usingWebAudio?this.gainNode.gain.value=0:this.usingAudioTag&&this._sound&&(this._sound.volume=0)):(this._muted=!1,this.usingWebAudio?this.gainNode.gain.value=this._muteVolume:this.usingAudioTag&&this._sound&&(this._sound.volume=this._muteVolume)),this.onMute.dispatch(this))}}),Object.defineProperty(c.Sound.prototype,"volume",{get:function(){return this._volume},set:function(a){return this.game.device.firefox&&this.usingAudioTag&&(a=this.game.math.clamp(a,0,1)),this._muted?void(this._muteVolume=a):(this._tempVolume=a,this._volume=a,void(this.usingWebAudio?this.gainNode.gain.value=a:this.usingAudioTag&&this._sound&&(this._sound.volume=a)))}}),c.SoundManager=function(a){this.game=a,this.onSoundDecode=new c.Signal,this.onVolumeChange=new c.Signal,this.onMute=new c.Signal,this.onUnMute=new c.Signal,this.context=null,this.usingWebAudio=!1,this.usingAudioTag=!1,this.noAudio=!1,this.connectToMaster=!0,this.touchLocked=!1,this.channels=32,this.muteOnPause=!0,this._codeMuted=!1,this._muted=!1,this._unlockSource=null,this._volume=1,this._sounds=[],this._watchList=new c.ArraySet,this._watching=!1,this._watchCallback=null,this._watchContext=null},c.SoundManager.prototype={boot:function(){if(this.game.device.iOS&&this.game.device.webAudio===!1&&(this.channels=1),window.PhaserGlobal){if(window.PhaserGlobal.disableAudio===!0)return this.noAudio=!0,void(this.touchLocked=!1);if(window.PhaserGlobal.disableWebAudio===!0)return this.usingAudioTag=!0,void(this.touchLocked=!1)}if(window.PhaserGlobal&&window.PhaserGlobal.audioContext)this.context=window.PhaserGlobal.audioContext;else if(window.AudioContext)try{this.context=new window.AudioContext}catch(a){this.context=null,this.usingWebAudio=!1,this.touchLocked=!1}else if(window.webkitAudioContext)try{this.context=new window.webkitAudioContext}catch(a){this.context=null,this.usingWebAudio=!1,this.touchLocked=!1}if(null===this.context){if(void 0===window.Audio)return void(this.noAudio=!0);this.usingAudioTag=!0}else this.usingWebAudio=!0,void 0===this.context.createGain?this.masterGain=this.context.createGainNode():this.masterGain=this.context.createGain(),this.masterGain.gain.value=1,this.masterGain.connect(this.context.destination);this.noAudio||(!this.game.device.cocoonJS&&this.game.device.iOS||window.PhaserGlobal&&window.PhaserGlobal.fakeiOSTouchLock)&&this.setTouchLock()},setTouchLock:function(){this.noAudio||window.PhaserGlobal&&window.PhaserGlobal.disableAudio===!0||(this.game.device.iOSVersion>8?this.game.input.touch.addTouchLockCallback(this.unlock,this,!0):this.game.input.touch.addTouchLockCallback(this.unlock,this),this.touchLocked=!0)},unlock:function(){if(this.noAudio||!this.touchLocked||null!==this._unlockSource)return!0;if(this.usingAudioTag)this.touchLocked=!1,this._unlockSource=null;else if(this.usingWebAudio){var a=this.context.createBuffer(1,1,22050);this._unlockSource=this.context.createBufferSource(),this._unlockSource.buffer=a,this._unlockSource.connect(this.context.destination),void 0===this._unlockSource.start?this._unlockSource.noteOn(0):this._unlockSource.start(0)}return!0},stopAll:function(){if(!this.noAudio)for(var a=0;aa?a=0:a>1&&(a=1),this._volume!==a){if(this._volume=a,this.usingWebAudio)this.masterGain.gain.value=a;else for(var b=0;b=400?0:100,this.dom.getOffset(this.game.canvas,this.offset);var b=this._parentBounds.width,d=this._parentBounds.height,e=this.getParentBounds(this._parentBounds),f=e.width!==b||e.height!==d,g=this.updateOrientationState();(f||g)&&(this.onResize&&this.onResize.call(this.onResizeContext,this,e),this.updateLayout(),this.signalSizeChange());var h=2*this._updateThrottle;this._updateThrottle=b||0>=c)return a;var e=b,f=a.height*b/a.width,g=a.width*c/a.height,h=c,i=g>b;return i=i?d:!d,i?(a.width=Math.floor(e),a.height=Math.floor(f)):(a.width=Math.floor(g),a.height=Math.floor(h)),a},destroy:function(){this.game.onResume.remove(this._gameResumed,this),window.removeEventListener("orientationchange",this._orientationChange,!1),window.removeEventListener("resize",this._windowResize,!1),this.compatibility.supportsFullScreen&&(document.removeEventListener("webkitfullscreenchange",this._fullScreenChange,!1),document.removeEventListener("mozfullscreenchange",this._fullScreenChange,!1),document.removeEventListener("MSFullscreenChange",this._fullScreenChange,!1),document.removeEventListener("fullscreenchange",this._fullScreenChange,!1),document.removeEventListener("webkitfullscreenerror",this._fullScreenError,!1),document.removeEventListener("mozfullscreenerror",this._fullScreenError,!1),document.removeEventListener("MSFullscreenError",this._fullScreenError,!1),document.removeEventListener("fullscreenerror",this._fullScreenError,!1))}},c.ScaleManager.prototype.constructor=c.ScaleManager,Object.defineProperty(c.ScaleManager.prototype,"boundingParent",{get:function(){if(this.parentIsWindow||this.isFullScreen&&!this._createdFullScreenTarget)return null;var a=this.game.canvas&&this.game.canvas.parentNode;return a||null}}),Object.defineProperty(c.ScaleManager.prototype,"scaleMode",{get:function(){return this._scaleMode},set:function(a){return a!==this._scaleMode&&(this.isFullScreen||(this.updateDimensions(this._gameSize.width,this._gameSize.height,!0),this.queueUpdate(!0)),this._scaleMode=a),this._scaleMode}}),Object.defineProperty(c.ScaleManager.prototype,"fullScreenScaleMode",{get:function(){return this._fullScreenScaleMode},set:function(a){return a!==this._fullScreenScaleMode&&(this.isFullScreen?(this.prepScreenMode(!1),this._fullScreenScaleMode=a,this.prepScreenMode(!0),this.queueUpdate(!0)):this._fullScreenScaleMode=a),this._fullScreenScaleMode}}),Object.defineProperty(c.ScaleManager.prototype,"currentScaleMode",{get:function(){return this.isFullScreen?this._fullScreenScaleMode:this._scaleMode}}),Object.defineProperty(c.ScaleManager.prototype,"pageAlignHorizontally",{get:function(){return this._pageAlignHorizontally},set:function(a){a!==this._pageAlignHorizontally&&(this._pageAlignHorizontally=a,this.queueUpdate(!0))}}),Object.defineProperty(c.ScaleManager.prototype,"pageAlignVertically",{get:function(){return this._pageAlignVertically},set:function(a){a!==this._pageAlignVertically&&(this._pageAlignVertically=a,this.queueUpdate(!0))}}),Object.defineProperty(c.ScaleManager.prototype,"isFullScreen",{get:function(){return!!(document.fullscreenElement||document.webkitFullscreenElement||document.mozFullScreenElement||document.msFullscreenElement)}}),Object.defineProperty(c.ScaleManager.prototype,"isPortrait",{get:function(){return"portrait"===this.classifyOrientation(this.screenOrientation)}}),Object.defineProperty(c.ScaleManager.prototype,"isLandscape",{get:function(){return"landscape"===this.classifyOrientation(this.screenOrientation)}}),Object.defineProperty(c.ScaleManager.prototype,"isGamePortrait",{get:function(){return this.height>this.width}}),Object.defineProperty(c.ScaleManager.prototype,"isGameLandscape",{get:function(){return this.width>this.height}}),c.Utils.Debug=function(a){this.game=a,this.sprite=null,this.bmd=null,this.canvas=null,this.context=null,this.font="14px Courier",this.columnWidth=100,this.lineHeight=16,this.renderShadow=!0,this.currentX=0,this.currentY=0,this.currentAlpha=1,this.dirty=!1},c.Utils.Debug.prototype={boot:function(){this.game.renderType===c.CANVAS?this.context=this.game.context:(this.bmd=this.game.make.bitmapData(this.game.width,this.game.height),this.sprite=this.game.make.image(0,0,this.bmd),this.game.stage.addChild(this.sprite),this.game.scale.onSizeChange.add(this.resize,this),this.canvas=PIXI.CanvasPool.create(this,this.game.width,this.game.height),this.context=this.canvas.getContext("2d"))},resize:function(a,b,c){this.bmd.resize(b,c),this.canvas.width=b,this.canvas.height=c},preUpdate:function(){this.dirty&&this.sprite&&(this.bmd.clear(),this.bmd.draw(this.canvas,0,0),this.context.clearRect(0,0,this.game.width,this.game.height),this.dirty=!1)},reset:function(){this.context&&this.context.clearRect(0,0,this.game.width,this.game.height),this.sprite&&this.bmd.clear()},start:function(a,b,c,d){"number"!=typeof a&&(a=0),"number"!=typeof b&&(b=0),c=c||"rgb(255,255,255)",void 0===d&&(d=0),this.currentX=a,this.currentY=b,this.currentColor=c,this.columnWidth=d,this.dirty=!0,this.context.save(),this.context.setTransform(1,0,0,1,0,0),this.context.strokeStyle=c,this.context.fillStyle=c,this.context.font=this.font,this.context.globalAlpha=this.currentAlpha},stop:function(){this.context.restore()},line:function(){for(var a=this.currentX,b=0;b0)for(var b=0;b=0&&c.right>=0&&c.top<=this.layoutBounds.width&&c.left<=this.layoutBounds.height},getScreenOrientation:function(a){var b=window.screen,c=b.orientation||b.mozOrientation||b.msOrientation;if(c&&"string"==typeof c.type)return c.type;if("string"==typeof c)return c;var d="portrait-primary",e="landscape-primary";if("screen"===a)return b.height>b.width?d:e;if("viewport"===a)return this.visualBounds.height>this.visualBounds.width?d:e;if("window.orientation"===a&&"number"==typeof window.orientation)return 0===window.orientation||180===window.orientation?d:e;if(window.matchMedia){if(window.matchMedia("(orientation: portrait)").matches)return d;if(window.matchMedia("(orientation: landscape)").matches)return e}return this.visualBounds.height>this.visualBounds.width?d:e},visualBounds:new c.Rectangle,layoutBounds:new c.Rectangle,documentBounds:new c.Rectangle},c.Device.whenReady(function(a){var b=window&&"pageXOffset"in window?function(){return window.pageXOffset}:function(){return document.documentElement.scrollLeft},d=window&&"pageYOffset"in window?function(){return window.pageYOffset}:function(){return document.documentElement.scrollTop};Object.defineProperty(c.DOM,"scrollX",{get:b}),Object.defineProperty(c.DOM,"scrollY",{get:d}),Object.defineProperty(c.DOM.visualBounds,"x",{get:b}),Object.defineProperty(c.DOM.visualBounds,"y",{get:d}),Object.defineProperty(c.DOM.layoutBounds,"x",{value:0}),Object.defineProperty(c.DOM.layoutBounds,"y",{value:0});var e=a.desktop&&document.documentElement.clientWidth<=window.innerWidth&&document.documentElement.clientHeight<=window.innerHeight;if(e){var f=function(){return Math.max(window.innerWidth,document.documentElement.clientWidth)},g=function(){return Math.max(window.innerHeight,document.documentElement.clientHeight)};Object.defineProperty(c.DOM.visualBounds,"width",{get:f}),Object.defineProperty(c.DOM.visualBounds,"height",{get:g}),Object.defineProperty(c.DOM.layoutBounds,"width",{get:f}),Object.defineProperty(c.DOM.layoutBounds,"height",{get:g})}else Object.defineProperty(c.DOM.visualBounds,"width",{get:function(){return window.innerWidth}}),Object.defineProperty(c.DOM.visualBounds,"height",{get:function(){return window.innerHeight}}),Object.defineProperty(c.DOM.layoutBounds,"width",{get:function(){var a=document.documentElement.clientWidth,b=window.innerWidth;return b>a?b:a}}),Object.defineProperty(c.DOM.layoutBounds,"height",{get:function(){var a=document.documentElement.clientHeight,b=window.innerHeight;return b>a?b:a}});Object.defineProperty(c.DOM.documentBounds,"x",{value:0}),Object.defineProperty(c.DOM.documentBounds,"y",{value:0}),Object.defineProperty(c.DOM.documentBounds,"width",{get:function(){var a=document.documentElement;return Math.max(a.clientWidth,a.offsetWidth,a.scrollWidth)}}),Object.defineProperty(c.DOM.documentBounds,"height",{get:function(){var a=document.documentElement;return Math.max(a.clientHeight,a.offsetHeight,a.scrollHeight)}})},null,!0),c.ArraySet=function(a){this.position=0,this.list=a||[]},c.ArraySet.prototype={add:function(a){return this.exists(a)||this.list.push(a),a},getIndex:function(a){return this.list.indexOf(a)},getByKey:function(a,b){for(var c=this.list.length;c--;)if(this.list[c][a]===b)return this.list[c];return null},exists:function(a){return this.list.indexOf(a)>-1},reset:function(){this.list.length=0},remove:function(a){var b=this.list.indexOf(a);return b>-1?(this.list.splice(b,1),a):void 0},setAll:function(a,b){for(var c=this.list.length;c--;)this.list[c]&&(this.list[c][a]=b)},callAll:function(a){for(var b=Array.prototype.slice.call(arguments,1),c=this.list.length;c--;)this.list[c]&&this.list[c][a]&&this.list[c][a].apply(this.list[c],b)},removeAll:function(a){void 0===a&&(a=!1);for(var b=this.list.length;b--;)if(this.list[b]){var c=this.remove(this.list[b]);a&&c.destroy()}this.position=0,this.list=[]}},Object.defineProperty(c.ArraySet.prototype,"total",{get:function(){return this.list.length}}),Object.defineProperty(c.ArraySet.prototype,"first",{get:function(){return this.position=0,this.list.length>0?this.list[0]:null}}),Object.defineProperty(c.ArraySet.prototype,"next",{get:function(){return this.position0;b--){var c=Math.floor(Math.random()*(b+1)),d=a[b];a[b]=a[c],a[c]=d}return a},transposeMatrix:function(a){for(var b=a.length,c=a[0].length,d=new Array(c),e=0;c>e;e++){d[e]=new Array(b);for(var f=b-1;f>-1;f--)d[e][f]=a[f][e]}return d},rotateMatrix:function(a,b){if("string"!=typeof b&&(b=(b%360+360)%360),90===b||-270===b||"rotateLeft"===b)a=c.ArrayUtils.transposeMatrix(a),a=a.reverse();else if(-90===b||270===b||"rotateRight"===b)a=a.reverse(),a=c.ArrayUtils.transposeMatrix(a);else if(180===Math.abs(b)||"rotate180"===b){for(var d=0;d=e-a?e:d},rotate:function(a){var b=a.shift();return a.push(b),b},numberArray:function(a,b){for(var c=[],d=a;b>=d;d++)c.push(d);return c},numberArrayStep:function(a,b,d){(void 0===a||null===a)&&(a=0),(void 0===b||null===b)&&(b=a,a=0),void 0===d&&(d=1);for(var e=[],f=Math.max(c.Math.roundAwayFromZero((b-a)/(d||1)),0),g=0;f>g;g++)e.push(a),a+=d;return e}},c.LinkedList=function(){this.next=null,this.prev=null,this.first=null,this.last=null,this.total=0},c.LinkedList.prototype={add:function(a){return 0===this.total&&null===this.first&&null===this.last?(this.first=a,this.last=a,this.next=a,a.prev=this,this.total++,a):(this.last.next=a,a.prev=this.last,this.last=a,this.total++,a)},reset:function(){this.first=null,this.last=null,this.next=null,this.prev=null,this.total=0},remove:function(a){return 1===this.total?(this.reset(),void(a.next=a.prev=null)):(a===this.first?this.first=this.first.next:a===this.last&&(this.last=this.last.prev),a.prev&&(a.prev.next=a.next),a.next&&(a.next.prev=a.prev),a.next=a.prev=null,null===this.first&&(this.last=null),void this.total--)},callAll:function(a){if(this.first&&this.last){var b=this.first;do b&&b[a]&&b[a].call(b),b=b.next;while(b!=this.last.next)}}},c.LinkedList.prototype.constructor=c.LinkedList,c.Create=function(a){this.game=a,this.bmd=null,this.canvas=null,this.ctx=null,this.palettes=[{0:"#000",1:"#9D9D9D",2:"#FFF",3:"#BE2633",4:"#E06F8B",5:"#493C2B",6:"#A46422",7:"#EB8931",8:"#F7E26B",9:"#2F484E",A:"#44891A",B:"#A3CE27",C:"#1B2632",D:"#005784",E:"#31A2F2",F:"#B2DCEF"},{0:"#000",1:"#191028",2:"#46af45",3:"#a1d685",4:"#453e78",5:"#7664fe",6:"#833129",7:"#9ec2e8",8:"#dc534b",9:"#e18d79",A:"#d6b97b",B:"#e9d8a1",C:"#216c4b",D:"#d365c8",E:"#afaab9",F:"#f5f4eb"},{0:"#000",1:"#2234d1",2:"#0c7e45",3:"#44aacc",4:"#8a3622",5:"#5c2e78",6:"#aa5c3d",7:"#b5b5b5",8:"#5e606e",9:"#4c81fb",A:"#6cd947",B:"#7be2f9",C:"#eb8a60",D:"#e23d69",E:"#ffd93f",F:"#fff"},{0:"#000",1:"#fff",2:"#8b4131",3:"#7bbdc5",4:"#8b41ac",5:"#6aac41",6:"#3931a4",7:"#d5de73",8:"#945a20",9:"#5a4100",A:"#bd736a",B:"#525252",C:"#838383",D:"#acee8b",E:"#7b73de",F:"#acacac"},{0:"#000",1:"#191028",2:"#46af45",3:"#a1d685",4:"#453e78",5:"#7664fe",6:"#833129",7:"#9ec2e8",8:"#dc534b",9:"#e18d79",A:"#d6b97b",B:"#e9d8a1",C:"#216c4b",D:"#d365c8",E:"#afaab9",F:"#fff"}]},c.Create.PALETTE_ARNE=0,c.Create.PALETTE_JMP=1,c.Create.PALETTE_CGA=2,c.Create.PALETTE_C64=3,c.Create.PALETTE_JAPANESE_MACHINE=4,c.Create.prototype={texture:function(a,b,c,d,e){void 0===c&&(c=8),void 0===d&&(d=c),void 0===e&&(e=0);var f=b[0].length*c,g=b.length*d;null===this.bmd&&(this.bmd=this.game.make.bitmapData(),this.canvas=this.bmd.canvas,this.ctx=this.bmd.context),this.bmd.resize(f,g),this.bmd.clear();for(var h=0;hg;g+=e)this.ctx.fillRect(0,g,b,1);for(var h=0;b>h;h+=d)this.ctx.fillRect(h,0,1,c);return this.bmd.generateTexture(a)}},c.Create.prototype.constructor=c.Create,c.FlexGrid=function(a,b,d){this.game=a.game,this.manager=a,this.width=b,this.height=d,this.boundsCustom=new c.Rectangle(0,0,b,d),this.boundsFluid=new c.Rectangle(0,0,b,d),this.boundsFull=new c.Rectangle(0,0,b,d),this.boundsNone=new c.Rectangle(0,0,b,d),this.positionCustom=new c.Point(0,0),this.positionFluid=new c.Point(0,0),this.positionFull=new c.Point(0,0),this.positionNone=new c.Point(0,0),this.scaleCustom=new c.Point(1,1),this.scaleFluid=new c.Point(1,1),this.scaleFluidInversed=new c.Point(1,1),this.scaleFull=new c.Point(1,1),this.scaleNone=new c.Point(1,1),this.customWidth=0,this.customHeight=0,this.customOffsetX=0,this.customOffsetY=0,this.ratioH=b/d,this.ratioV=d/b,this.multiplier=0,this.layers=[]},c.FlexGrid.prototype={setSize:function(a,b){this.width=a,this.height=b,this.ratioH=a/b,this.ratioV=b/a,this.scaleNone=new c.Point(1,1),this.boundsNone.width=this.width,this.boundsNone.height=this.height,this.refresh()},createCustomLayer:function(a,b,d,e){void 0===e&&(e=!0),this.customWidth=a,this.customHeight=b,this.boundsCustom.width=a,this.boundsCustom.height=b;var f=new c.FlexLayer(this,this.positionCustom,this.boundsCustom,this.scaleCustom);return e&&this.game.world.add(f),this.layers.push(f),"undefined"!=typeof d&&null!==typeof d&&f.addMultiple(d),f},createFluidLayer:function(a,b){void 0===b&&(b=!0);var d=new c.FlexLayer(this,this.positionFluid,this.boundsFluid,this.scaleFluid);return b&&this.game.world.add(d),this.layers.push(d),"undefined"!=typeof a&&null!==typeof a&&d.addMultiple(a),d},createFullLayer:function(a){var b=new c.FlexLayer(this,this.positionFull,this.boundsFull,this.scaleFluid);return this.game.world.add(b),this.layers.push(b),"undefined"!=typeof a&&b.addMultiple(a),b},createFixedLayer:function(a){var b=new c.FlexLayer(this,this.positionNone,this.boundsNone,this.scaleNone);return this.game.world.add(b),this.layers.push(b),"undefined"!=typeof a&&b.addMultiple(a),b},reset:function(){for(var a=this.layers.length;a--;)this.layers[a].persist||(this.layers[a].position=null,this.layers[a].scale=null,this.layers.slice(a,1))},onResize:function(a,b){this.ratioH=a/b,this.ratioV=b/a,this.refresh(a,b)},refresh:function(){this.multiplier=Math.min(this.manager.height/this.height,this.manager.width/this.width),this.boundsFluid.width=Math.round(this.width*this.multiplier),this.boundsFluid.height=Math.round(this.height*this.multiplier),this.scaleFluid.set(this.boundsFluid.width/this.width,this.boundsFluid.height/this.height),this.scaleFluidInversed.set(this.width/this.boundsFluid.width,this.height/this.boundsFluid.height),this.scaleFull.set(this.boundsFull.width/this.width,this.boundsFull.height/this.height),this.boundsFull.width=Math.round(this.manager.width*this.scaleFluidInversed.x),this.boundsFull.height=Math.round(this.manager.height*this.scaleFluidInversed.y),this.boundsFluid.centerOn(this.manager.bounds.centerX,this.manager.bounds.centerY),this.boundsNone.centerOn(this.manager.bounds.centerX,this.manager.bounds.centerY),this.positionFluid.set(this.boundsFluid.x,this.boundsFluid.y),this.positionNone.set(this.boundsNone.x,this.boundsNone.y)},fitSprite:function(a){this.manager.scaleSprite(a),a.x=this.manager.bounds.centerX,a.y=this.manager.bounds.centerY},debug:function(){this.game.debug.text(this.boundsFluid.width+" x "+this.boundsFluid.height,this.boundsFluid.x+4,this.boundsFluid.y+16),this.game.debug.geom(this.boundsFluid,"rgba(255,0,0,0.9",!1)}},c.FlexGrid.prototype.constructor=c.FlexGrid,c.FlexLayer=function(a,b,d,e){c.Group.call(this,a.game,null,"__flexLayer"+a.game.rnd.uuid(),!1),this.manager=a.manager,this.grid=a,this.persist=!1,this.position=b,this.bounds=d,this.scale=e,this.topLeft=d.topLeft,this.topMiddle=new c.Point(d.halfWidth,0),this.topRight=d.topRight,this.bottomLeft=d.bottomLeft,this.bottomMiddle=new c.Point(d.halfWidth,d.bottom),this.bottomRight=d.bottomRight},c.FlexLayer.prototype=Object.create(c.Group.prototype),c.FlexLayer.prototype.constructor=c.FlexLayer,c.FlexLayer.prototype.resize=function(){},c.FlexLayer.prototype.debug=function(){this.game.debug.text(this.bounds.width+" x "+this.bounds.height,this.bounds.x+4,this.bounds.y+16),this.game.debug.geom(this.bounds,"rgba(0,0,255,0.9",!1),this.game.debug.geom(this.topLeft,"rgba(255,255,255,0.9"),this.game.debug.geom(this.topMiddle,"rgba(255,255,255,0.9"),this.game.debug.geom(this.topRight,"rgba(255,255,255,0.9")},c.Color={packPixel:function(a,b,d,e){return c.Device.LITTLE_ENDIAN?(e<<24|d<<16|b<<8|a)>>>0:(a<<24|b<<16|d<<8|e)>>>0},unpackPixel:function(a,b,d,e){return(void 0===b||null===b)&&(b=c.Color.createColor()),(void 0===d||null===d)&&(d=!1),(void 0===e||null===e)&&(e=!1),c.Device.LITTLE_ENDIAN?(b.a=(4278190080&a)>>>24,b.b=(16711680&a)>>>16,b.g=(65280&a)>>>8,b.r=255&a):(b.r=(4278190080&a)>>>24,b.g=(16711680&a)>>>16,b.b=(65280&a)>>>8,b.a=255&a),b.color=a,b.rgba="rgba("+b.r+","+b.g+","+b.b+","+b.a/255+")",d&&c.Color.RGBtoHSL(b.r,b.g,b.b,b),e&&c.Color.RGBtoHSV(b.r,b.g,b.b,b),b},fromRGBA:function(a,b){return b||(b=c.Color.createColor()),b.r=(4278190080&a)>>>24,b.g=(16711680&a)>>>16,b.b=(65280&a)>>>8,b.a=255&a,b.rgba="rgba("+b.r+","+b.g+","+b.b+","+b.a+")",b},toRGBA:function(a,b,c,d){return a<<24|b<<16|c<<8|d},RGBtoHSL:function(a,b,d,e){e||(e=c.Color.createColor(a,b,d,1)),a/=255,b/=255,d/=255;var f=Math.min(a,b,d),g=Math.max(a,b,d);if(e.h=0,e.s=0,e.l=(g+f)/2,g!==f){var h=g-f;e.s=e.l>.5?h/(2-g-f):h/(g+f),g===a?e.h=(b-d)/h+(d>b?6:0):g===b?e.h=(d-a)/h+2:g===d&&(e.h=(a-b)/h+4),e.h/=6}return e},HSLtoRGB:function(a,b,d,e){if(e?(e.r=d,e.g=d,e.b=d):e=c.Color.createColor(d,d,d),0!==b){var f=.5>d?d*(1+b):d+b-d*b,g=2*d-f;e.r=c.Color.hueToColor(g,f,a+1/3),e.g=c.Color.hueToColor(g,f,a),e.b=c.Color.hueToColor(g,f,a-1/3)}return e.r=Math.floor(255*e.r|0),e.g=Math.floor(255*e.g|0),e.b=Math.floor(255*e.b|0),c.Color.updateColor(e),e},RGBtoHSV:function(a,b,d,e){e||(e=c.Color.createColor(a,b,d,255)),a/=255,b/=255,d/=255;var f=Math.min(a,b,d),g=Math.max(a,b,d),h=g-f;return e.h=0,e.s=0===g?0:h/g,e.v=g,g!==f&&(g===a?e.h=(b-d)/h+(d>b?6:0):g===b?e.h=(d-a)/h+2:g===d&&(e.h=(a-b)/h+4),e.h/=6),e},HSVtoRGB:function(a,b,d,e){void 0===e&&(e=c.Color.createColor(0,0,0,1,a,b,0,d));var f,g,h,i=Math.floor(6*a),j=6*a-i,k=d*(1-b),l=d*(1-j*b),m=d*(1-(1-j)*b);switch(i%6){case 0:f=d,g=m,h=k;break;case 1:f=l,g=d,h=k;break;case 2:f=k,g=d,h=m;break;case 3:f=k,g=l,h=d;break;case 4:f=m,g=k,h=d;break;case 5:f=d,g=k,h=l}return e.r=Math.floor(255*f),e.g=Math.floor(255*g),e.b=Math.floor(255*h),c.Color.updateColor(e),e},hueToColor:function(a,b,c){return 0>c&&(c+=1),c>1&&(c-=1),1/6>c?a+6*(b-a)*c:.5>c?b:2/3>c?a+(b-a)*(2/3-c)*6:a},createColor:function(a,b,d,e,f,g,h,i){var j={r:a||0,g:b||0,b:d||0,a:e||1,h:f||0,s:g||0,l:h||0,v:i||0,color:0,color32:0,rgba:""};return c.Color.updateColor(j)},updateColor:function(a){return a.rgba="rgba("+a.r.toString()+","+a.g.toString()+","+a.b.toString()+","+a.a.toString()+")",a.color=c.Color.getColor(a.r,a.g,a.b),a.color32=c.Color.getColor32(255*a.a,a.r,a.g,a.b),a},getColor32:function(a,b,c,d){return a<<24|b<<16|c<<8|d},getColor:function(a,b,c){return a<<16|b<<8|c},RGBtoString:function(a,b,d,e,f){return void 0===e&&(e=255),void 0===f&&(f="#"),"#"===f?"#"+((1<<24)+(a<<16)+(b<<8)+d).toString(16).slice(1):"0x"+c.Color.componentToHex(e)+c.Color.componentToHex(a)+c.Color.componentToHex(b)+c.Color.componentToHex(d)},hexToRGB:function(a){var b=c.Color.hexToColor(a);return b?c.Color.getColor32(b.a,b.r,b.g,b.b):void 0},hexToColor:function(a,b){a=a.replace(/^(?:#|0x)?([a-f\d])([a-f\d])([a-f\d])$/i,function(a,b,c,d){return b+b+c+c+d+d});var d=/^(?:#|0x)?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(a);if(d){var e=parseInt(d[1],16),f=parseInt(d[2],16),g=parseInt(d[3],16);b?(b.r=e,b.g=f,b.b=g):b=c.Color.createColor(e,f,g)}return b},webToColor:function(a,b){b||(b=c.Color.createColor());var d=/^rgba?\(\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*(?:,\s*(\d+(?:\.\d+)?))?\s*\)$/.exec(a);return d&&(b.r=parseInt(d[1],10),b.g=parseInt(d[2],10),b.b=parseInt(d[3],10), -b.a=void 0!==d[4]?parseFloat(d[4]):1,c.Color.updateColor(b)),b},valueToColor:function(a,b){if(b||(b=c.Color.createColor()),"string"==typeof a)return 0===a.indexOf("rgb")?c.Color.webToColor(a,b):(b.a=1,c.Color.hexToColor(a,b));if("number"==typeof a){var d=c.Color.getRGB(a);return b.r=d.r,b.g=d.g,b.b=d.b,b.a=d.a/255,b}return b},componentToHex:function(a){var b=a.toString(16);return 1==b.length?"0"+b:b},HSVColorWheel:function(a,b){void 0===a&&(a=1),void 0===b&&(b=1);for(var d=[],e=0;359>=e;e++)d.push(c.Color.HSVtoRGB(e/359,a,b));return d},HSLColorWheel:function(a,b){void 0===a&&(a=.5),void 0===b&&(b=.5);for(var d=[],e=0;359>=e;e++)d.push(c.Color.HSLtoRGB(e/359,a,b));return d},interpolateColor:function(a,b,d,e,f){void 0===f&&(f=255);var g=c.Color.getRGB(a),h=c.Color.getRGB(b),i=(h.red-g.red)*e/d+g.red,j=(h.green-g.green)*e/d+g.green,k=(h.blue-g.blue)*e/d+g.blue;return c.Color.getColor32(f,i,j,k)},interpolateColorWithRGB:function(a,b,d,e,f,g){var h=c.Color.getRGB(a),i=(b-h.red)*g/f+h.red,j=(d-h.green)*g/f+h.green,k=(e-h.blue)*g/f+h.blue;return c.Color.getColor(i,j,k)},interpolateRGB:function(a,b,d,e,f,g,h,i){var j=(e-a)*i/h+a,k=(f-b)*i/h+b,l=(g-d)*i/h+d;return c.Color.getColor(j,k,l)},getRandomColor:function(a,b,d){if(void 0===a&&(a=0),void 0===b&&(b=255),void 0===d&&(d=255),b>255||a>b)return c.Color.getColor(255,255,255);var e=a+Math.round(Math.random()*(b-a)),f=a+Math.round(Math.random()*(b-a)),g=a+Math.round(Math.random()*(b-a));return c.Color.getColor32(d,e,f,g)},getRGB:function(a){return a>16777215?{alpha:a>>>24,red:a>>16&255,green:a>>8&255,blue:255&a,a:a>>>24,r:a>>16&255,g:a>>8&255,b:255&a}:{alpha:255,red:a>>16&255,green:a>>8&255,blue:255&a,a:255,r:a>>16&255,g:a>>8&255,b:255&a}},getWebRGB:function(a){if("object"==typeof a)return"rgba("+a.r.toString()+","+a.g.toString()+","+a.b.toString()+","+(a.a/255).toString()+")";var b=c.Color.getRGB(a);return"rgba("+b.r.toString()+","+b.g.toString()+","+b.b.toString()+","+(b.a/255).toString()+")"},getAlpha:function(a){return a>>>24},getAlphaFloat:function(a){return(a>>>24)/255},getRed:function(a){return a>>16&255},getGreen:function(a){return a>>8&255},getBlue:function(a){return 255&a},blendNormal:function(a){return a},blendLighten:function(a,b){return b>a?b:a},blendDarken:function(a,b){return b>a?a:b},blendMultiply:function(a,b){return a*b/255},blendAverage:function(a,b){return(a+b)/2},blendAdd:function(a,b){return Math.min(255,a+b)},blendSubtract:function(a,b){return Math.max(0,a+b-255)},blendDifference:function(a,b){return Math.abs(a-b)},blendNegation:function(a,b){return 255-Math.abs(255-a-b)},blendScreen:function(a,b){return 255-((255-a)*(255-b)>>8)},blendExclusion:function(a,b){return a+b-2*a*b/255},blendOverlay:function(a,b){return 128>b?2*a*b/255:255-2*(255-a)*(255-b)/255},blendSoftLight:function(a,b){return 128>b?2*((a>>1)+64)*(b/255):255-2*(255-((a>>1)+64))*(255-b)/255},blendHardLight:function(a,b){return c.Color.blendOverlay(b,a)},blendColorDodge:function(a,b){return 255===b?b:Math.min(255,(a<<8)/(255-b))},blendColorBurn:function(a,b){return 0===b?b:Math.max(0,255-(255-a<<8)/b)},blendLinearDodge:function(a,b){return c.Color.blendAdd(a,b)},blendLinearBurn:function(a,b){return c.Color.blendSubtract(a,b)},blendLinearLight:function(a,b){return 128>b?c.Color.blendLinearBurn(a,2*b):c.Color.blendLinearDodge(a,2*(b-128))},blendVividLight:function(a,b){return 128>b?c.Color.blendColorBurn(a,2*b):c.Color.blendColorDodge(a,2*(b-128))},blendPinLight:function(a,b){return 128>b?c.Color.blendDarken(a,2*b):c.Color.blendLighten(a,2*(b-128))},blendHardMix:function(a,b){return c.Color.blendVividLight(a,b)<128?0:255},blendReflect:function(a,b){return 255===b?b:Math.min(255,a*a/(255-b))},blendGlow:function(a,b){return c.Color.blendReflect(b,a)},blendPhoenix:function(a,b){return Math.min(a,b)-Math.max(a,b)+255}},c.Physics=function(a,b){b=b||{},this.game=a,this.config=b,this.arcade=null,this.p2=null,this.ninja=null,this.box2d=null,this.chipmunk=null,this.matter=null,this.parseConfig()},c.Physics.ARCADE=0,c.Physics.P2JS=1,c.Physics.NINJA=2,c.Physics.BOX2D=3,c.Physics.CHIPMUNK=4,c.Physics.MATTERJS=5,c.Physics.prototype={parseConfig:function(){this.config.hasOwnProperty("arcade")&&this.config.arcade!==!0||!c.Physics.hasOwnProperty("Arcade")||(this.arcade=new c.Physics.Arcade(this.game)),this.config.hasOwnProperty("ninja")&&this.config.ninja===!0&&c.Physics.hasOwnProperty("Ninja")&&(this.ninja=new c.Physics.Ninja(this.game)),this.config.hasOwnProperty("p2")&&this.config.p2===!0&&c.Physics.hasOwnProperty("P2")&&(this.p2=new c.Physics.P2(this.game,this.config)),this.config.hasOwnProperty("box2d")&&this.config.box2d===!0&&c.Physics.hasOwnProperty("BOX2D")&&(this.box2d=new c.Physics.BOX2D(this.game,this.config)),this.config.hasOwnProperty("matter")&&this.config.matter===!0&&c.Physics.hasOwnProperty("Matter")&&(this.matter=new c.Physics.Matter(this.game,this.config))},startSystem:function(a){a===c.Physics.ARCADE?this.arcade=new c.Physics.Arcade(this.game):a===c.Physics.P2JS?null===this.p2?this.p2=new c.Physics.P2(this.game,this.config):this.p2.reset():a===c.Physics.NINJA?this.ninja=new c.Physics.Ninja(this.game):a===c.Physics.BOX2D?null===this.box2d?this.box2d=new c.Physics.Box2D(this.game,this.config):this.box2d.reset():a===c.Physics.MATTERJS&&(null===this.matter?this.matter=new c.Physics.Matter(this.game,this.config):this.matter.reset())},enable:function(a,b,d){void 0===b&&(b=c.Physics.ARCADE),void 0===d&&(d=!1),b===c.Physics.ARCADE?this.arcade.enable(a):b===c.Physics.P2JS&&this.p2?this.p2.enable(a,d):b===c.Physics.NINJA&&this.ninja?this.ninja.enableAABB(a):b===c.Physics.BOX2D&&this.box2d?this.box2d.enable(a):b===c.Physics.MATTERJS&&this.matter?this.matter.enable(a):console.warn(a.key+" is attempting to enable a physics body using an unknown physics system.")},preUpdate:function(){this.p2&&this.p2.preUpdate(),this.box2d&&this.box2d.preUpdate(),this.matter&&this.matter.preUpdate()},update:function(){this.p2&&this.p2.update(),this.box2d&&this.box2d.update(),this.matter&&this.matter.update()},setBoundsToWorld:function(){this.arcade&&this.arcade.setBoundsToWorld(),this.ninja&&this.ninja.setBoundsToWorld(),this.p2&&this.p2.setBoundsToWorld(),this.box2d&&this.box2d.setBoundsToWorld(),this.matter&&this.matter.setBoundsToWorld()},clear:function(){this.p2&&this.p2.clear(),this.box2d&&this.box2d.clear(),this.matter&&this.matter.clear()},reset:function(){this.p2&&this.p2.reset(),this.box2d&&this.box2d.reset(),this.matter&&this.matter.reset()},destroy:function(){this.p2&&this.p2.destroy(),this.box2d&&this.box2d.destroy(),this.matter&&this.matter.destroy(),this.arcade=null,this.ninja=null,this.p2=null,this.box2d=null,this.matter=null}},c.Physics.prototype.constructor=c.Physics,c.Physics.Arcade=function(a){this.game=a,this.gravity=new c.Point,this.bounds=new c.Rectangle(0,0,a.world.width,a.world.height),this.checkCollision={up:!0,down:!0,left:!0,right:!0},this.maxObjects=10,this.maxLevels=4,this.OVERLAP_BIAS=4,this.forceX=!1,this.sortDirection=c.Physics.Arcade.LEFT_RIGHT,this.skipQuadTree=!0,this.isPaused=!1,this.quadTree=new c.QuadTree(this.game.world.bounds.x,this.game.world.bounds.y,this.game.world.bounds.width,this.game.world.bounds.height,this.maxObjects,this.maxLevels),this._total=0,this.setBoundsToWorld()},c.Physics.Arcade.prototype.constructor=c.Physics.Arcade,c.Physics.Arcade.SORT_NONE=0,c.Physics.Arcade.LEFT_RIGHT=1,c.Physics.Arcade.RIGHT_LEFT=2,c.Physics.Arcade.TOP_BOTTOM=3,c.Physics.Arcade.BOTTOM_TOP=4,c.Physics.Arcade.prototype={setBounds:function(a,b,c,d){this.bounds.setTo(a,b,c,d)},setBoundsToWorld:function(){this.bounds.copyFrom(this.game.world.bounds)},enable:function(a,b){void 0===b&&(b=!0);var d=1;if(Array.isArray(a))for(d=a.length;d--;)a[d]instanceof c.Group?this.enable(a[d].children,b):(this.enableBody(a[d]),b&&a[d].hasOwnProperty("children")&&a[d].children.length>0&&this.enable(a[d],!0));else a instanceof c.Group?this.enable(a.children,b):(this.enableBody(a),b&&a.hasOwnProperty("children")&&a.children.length>0&&this.enable(a.children,!0))},enableBody:function(a){a.hasOwnProperty("body")&&null===a.body&&(a.body=new c.Physics.Arcade.Body(a),a.parent&&a.parent instanceof c.Group&&a.parent.addToHash(a))},updateMotion:function(a){var b=this.computeVelocity(0,a,a.angularVelocity,a.angularAcceleration,a.angularDrag,a.maxAngular)-a.angularVelocity;a.angularVelocity+=b,a.rotation+=a.angularVelocity*this.game.time.physicsElapsed,a.velocity.x=this.computeVelocity(1,a,a.velocity.x,a.acceleration.x,a.drag.x,a.maxVelocity.x),a.velocity.y=this.computeVelocity(2,a,a.velocity.y,a.acceleration.y,a.drag.y,a.maxVelocity.y)},computeVelocity:function(a,b,c,d,e,f){return void 0===f&&(f=1e4),1===a&&b.allowGravity?c+=(this.gravity.x+b.gravity.x)*this.game.time.physicsElapsed:2===a&&b.allowGravity&&(c+=(this.gravity.y+b.gravity.y)*this.game.time.physicsElapsed),d?c+=d*this.game.time.physicsElapsed:e&&(e*=this.game.time.physicsElapsed,c-e>0?c-=e:0>c+e?c+=e:c=0),c>f?c=f:-f>c&&(c=-f),c},overlap:function(a,b,c,d,e){if(c=c||null,d=d||null,e=e||c,this._total=0,!Array.isArray(a)&&Array.isArray(b))for(var f=0;f0},collide:function(a,b,c,d,e){if(c=c||null,d=d||null,e=e||c,this._total=0,!Array.isArray(a)&&Array.isArray(b))for(var f=0;f0},sortLeftRight:function(a,b){return a.body&&b.body?a.body.x-b.body.x:0},sortRightLeft:function(a,b){return a.body&&b.body?b.body.x-a.body.x:0},sortTopBottom:function(a,b){return a.body&&b.body?a.body.y-b.body.y:0},sortBottomTop:function(a,b){return a.body&&b.body?b.body.y-a.body.y:0},sort:function(a,b){null!==a.physicsSortDirection?b=a.physicsSortDirection:void 0===b&&(b=this.sortDirection),b===c.Physics.Arcade.LEFT_RIGHT?a.hash.sort(this.sortLeftRight):b===c.Physics.Arcade.RIGHT_LEFT?a.hash.sort(this.sortRightLeft):b===c.Physics.Arcade.TOP_BOTTOM?a.hash.sort(this.sortTopBottom):b===c.Physics.Arcade.BOTTOM_TOP&&a.hash.sort(this.sortBottomTop)},collideHandler:function(a,b,d,e,f,g){return void 0===b&&a.physicsType===c.GROUP?(this.sort(a),void this.collideGroupVsSelf(a,d,e,f,g)):void(a&&b&&a.exists&&b.exists&&(this.sortDirection!==c.Physics.Arcade.SORT_NONE&&(a.physicsType===c.GROUP&&this.sort(a),b.physicsType===c.GROUP&&this.sort(b)),a.physicsType===c.SPRITE?b.physicsType===c.SPRITE?this.collideSpriteVsSprite(a,b,d,e,f,g):b.physicsType===c.GROUP?this.collideSpriteVsGroup(a,b,d,e,f,g):b.physicsType===c.TILEMAPLAYER&&this.collideSpriteVsTilemapLayer(a,b,d,e,f,g):a.physicsType===c.GROUP?b.physicsType===c.SPRITE?this.collideSpriteVsGroup(b,a,d,e,f,g):b.physicsType===c.GROUP?this.collideGroupVsGroup(a,b,d,e,f,g):b.physicsType===c.TILEMAPLAYER&&this.collideGroupVsTilemapLayer(a,b,d,e,f,g):a.physicsType===c.TILEMAPLAYER&&(b.physicsType===c.SPRITE?this.collideSpriteVsTilemapLayer(b,a,d,e,f,g):b.physicsType===c.GROUP&&this.collideGroupVsTilemapLayer(b,a,d,e,f,g))))},collideSpriteVsSprite:function(a,b,c,d,e,f){return a.body&&b.body?(this.separate(a.body,b.body,d,e,f)&&(c&&c.call(e,a,b),this._total++),!0):!1},collideSpriteVsGroup:function(a,b,d,e,f,g){if(0!==b.length&&a.body){var h;if(this.skipQuadTree||a.body.skipQuadTree){for(var i=0;ih.right)break;if(h.x>a.body.right)continue}else if(this.sortDirection===c.Physics.Arcade.TOP_BOTTOM){if(a.body.bottomh.bottom)break;if(h.y>a.body.bottom)continue}this.collideSpriteVsSprite(a,b.hash[i],d,e,f,g)}}else{this.quadTree.clear(),this.quadTree.reset(this.game.world.bounds.x,this.game.world.bounds.y,this.game.world.bounds.width,this.game.world.bounds.height,this.maxObjects,this.maxLevels),this.quadTree.populate(b);for(var j=this.quadTree.retrieve(a),i=0;ij.body.right)continue;if(j.body.x>h.body.right)break}else if(this.sortDirection===c.Physics.Arcade.TOP_BOTTOM){if(h.body.bottomj.body.bottom)continue;if(j.body.y>h.body.bottom)break}this.collideSpriteVsSprite(h,j,b,d,e,f)}},collideGroupVsGroup:function(a,b,d,e,f,g){if(0!==a.length&&0!==b.length)for(var h=0;h=b.right?!1:a.position.y>=b.bottom?!1:!0},getOverlapX:function(a,b,c){var d=0,e=a.deltaAbsX()+b.deltaAbsX()+this.OVERLAP_BIAS;return 0===a.deltaX()&&0===b.deltaX()?(a.embedded=!0,b.embedded=!0):a.deltaX()>b.deltaX()?(d=a.right-b.x,d>e&&!c||a.checkCollision.right===!1||b.checkCollision.left===!1?d=0:(a.touching.none=!1,a.touching.right=!0,b.touching.none=!1,b.touching.left=!0)):a.deltaX()e&&!c||a.checkCollision.left===!1||b.checkCollision.right===!1?d=0:(a.touching.none=!1,a.touching.left=!0,b.touching.none=!1,b.touching.right=!0)),a.overlapX=d,b.overlapX=d,d},getOverlapY:function(a,b,c){var d=0,e=a.deltaAbsY()+b.deltaAbsY()+this.OVERLAP_BIAS;return 0===a.deltaY()&&0===b.deltaY()?(a.embedded=!0,b.embedded=!0):a.deltaY()>b.deltaY()?(d=a.bottom-b.y,d>e&&!c||a.checkCollision.down===!1||b.checkCollision.up===!1?d=0:(a.touching.none=!1,a.touching.down=!0,b.touching.none=!1,b.touching.up=!0)):a.deltaY()e&&!c||a.checkCollision.up===!1||b.checkCollision.down===!1?d=0:(a.touching.none=!1,a.touching.up=!0,b.touching.none=!1,b.touching.down=!0)),a.overlapY=d,b.overlapY=d,d},separateX:function(a,b,c){var d=this.getOverlapX(a,b,c);if(c||0===d||a.immovable&&b.immovable||a.customSeparateX||b.customSeparateX)return 0!==d||a.embedded&&b.embedded;var e=a.velocity.x,f=b.velocity.x;if(a.immovable||b.immovable)a.immovable?(b.x+=d,b.velocity.x=e-f*b.bounce.x,a.moves&&(b.y+=(a.y-a.prev.y)*a.friction.y)):(a.x-=d,a.velocity.x=f-e*a.bounce.x,b.moves&&(a.y+=(b.y-b.prev.y)*b.friction.y));else{d*=.5,a.x-=d,b.x+=d;var g=Math.sqrt(f*f*b.mass/a.mass)*(f>0?1:-1),h=Math.sqrt(e*e*a.mass/b.mass)*(e>0?1:-1),i=.5*(g+h);g-=i,h-=i,a.velocity.x=i+g*a.bounce.x,b.velocity.x=i+h*b.bounce.x}return!0},separateY:function(a,b,c){var d=this.getOverlapY(a,b,c);if(c||0===d||a.immovable&&b.immovable||a.customSeparateY||b.customSeparateY)return 0!==d||a.embedded&&b.embedded;var e=a.velocity.y,f=b.velocity.y;if(a.immovable||b.immovable)a.immovable?(b.y+=d,b.velocity.y=e-f*b.bounce.y,a.moves&&(b.x+=(a.x-a.prev.x)*a.friction.x)):(a.y-=d,a.velocity.y=f-e*a.bounce.y,b.moves&&(a.x+=(b.x-b.prev.x)*b.friction.x));else{d*=.5,a.y-=d,b.y+=d;var g=Math.sqrt(f*f*b.mass/a.mass)*(f>0?1:-1),h=Math.sqrt(e*e*a.mass/b.mass)*(e>0?1:-1),i=.5*(g+h);g-=i,h-=i,a.velocity.y=i+g*a.bounce.y,b.velocity.y=i+h*b.bounce.y}return!0},getObjectsUnderPointer:function(a,b,c,d){return 0!==b.length&&a.exists?this.getObjectsAtLocation(a.x,a.y,b,c,d,a):void 0},getObjectsAtLocation:function(a,b,d,e,f,g){this.quadTree.clear(),this.quadTree.reset(this.game.world.bounds.x,this.game.world.bounds.y,this.game.world.bounds.width,this.game.world.bounds.height,this.maxObjects,this.maxLevels),this.quadTree.populate(d);for(var h=new c.Rectangle(a,b,1,1),i=[],j=this.quadTree.retrieve(h),k=0;k0&&(c=this.distanceBetween(a,b)/(d/1e3)),a.body.velocity.x=Math.cos(e)*c,a.body.velocity.y=Math.sin(e)*c,e},moveToPointer:function(a,b,c,d){void 0===b&&(b=60),c=c||this.game.input.activePointer,void 0===d&&(d=0);var e=this.angleToPointer(a,c);return d>0&&(b=this.distanceToPointer(a,c)/(d/1e3)),a.body.velocity.x=Math.cos(e)*b,a.body.velocity.y=Math.sin(e)*b,e},moveToXY:function(a,b,c,d,e){void 0===d&&(d=60),void 0===e&&(e=0);var f=Math.atan2(c-a.y,b-a.x);return e>0&&(d=this.distanceToXY(a,b,c)/(e/1e3)),a.body.velocity.x=Math.cos(f)*d,a.body.velocity.y=Math.sin(f)*d,f},velocityFromAngle:function(a,b,d){return void 0===b&&(b=60),d=d||new c.Point,d.setTo(Math.cos(this.game.math.degToRad(a))*b,Math.sin(this.game.math.degToRad(a))*b)},velocityFromRotation:function(a,b,d){return void 0===b&&(b=60),d=d||new c.Point,d.setTo(Math.cos(a)*b,Math.sin(a)*b)},accelerationFromRotation:function(a,b,d){return void 0===b&&(b=60),d=d||new c.Point,d.setTo(Math.cos(a)*b,Math.sin(a)*b)},accelerateToObject:function(a,b,c,d,e){void 0===c&&(c=60),void 0===d&&(d=1e3),void 0===e&&(e=1e3);var f=this.angleBetween(a,b);return a.body.acceleration.setTo(Math.cos(f)*c,Math.sin(f)*c),a.body.maxVelocity.setTo(d,e),f},accelerateToPointer:function(a,b,c,d,e){void 0===c&&(c=60),void 0===b&&(b=this.game.input.activePointer),void 0===d&&(d=1e3),void 0===e&&(e=1e3);var f=this.angleToPointer(a,b);return a.body.acceleration.setTo(Math.cos(f)*c,Math.sin(f)*c),a.body.maxVelocity.setTo(d,e),f},accelerateToXY:function(a,b,c,d,e,f){void 0===d&&(d=60),void 0===e&&(e=1e3),void 0===f&&(f=1e3);var g=this.angleToXY(a,b,c);return a.body.acceleration.setTo(Math.cos(g)*d,Math.sin(g)*d),a.body.maxVelocity.setTo(e,f),g},distanceBetween:function(a,b,c){void 0===c&&(c=!1);var d=c?a.world.x-b.world.x:a.x-b.x,e=c?a.world.y-b.world.y:a.y-b.y;return Math.sqrt(d*d+e*e)},distanceToXY:function(a,b,c,d){void 0===d&&(d=!1);var e=d?a.world.x-b:a.x-b,f=d?a.world.y-c:a.y-c;return Math.sqrt(e*e+f*f)},distanceToPointer:function(a,b,c){void 0===b&&(b=this.game.input.activePointer),void 0===c&&(c=!1);var d=c?a.world.x-b.worldX:a.x-b.worldX,e=c?a.world.y-b.worldY:a.y-b.worldY;return Math.sqrt(d*d+e*e)},angleBetween:function(a,b,c){return void 0===c&&(c=!1),c?Math.atan2(b.world.y-a.world.y,b.world.x-a.world.x):Math.atan2(b.y-a.y,b.x-a.x)},angleToXY:function(a,b,c,d){return void 0===d&&(d=!1),d?Math.atan2(c-a.world.y,b-a.world.x):Math.atan2(c-a.y,b-a.x)},angleToPointer:function(a,b,c){return void 0===b&&(b=this.game.input.activePointer),void 0===c&&(c=!1),c?Math.atan2(b.worldY-a.world.y,b.worldX-a.world.x):Math.atan2(b.worldY-a.y,b.worldX-a.x)},worldAngleToPointer:function(a,b){return this.angleToPointer(a,b,!0)}},c.Physics.Arcade.Body=function(a){this.sprite=a,this.game=a.game,this.type=c.Physics.ARCADE,this.enable=!0,this.offset=new c.Point,this.position=new c.Point(a.x,a.y),this.prev=new c.Point(this.position.x,this.position.y),this.allowRotation=!0,this.rotation=a.rotation,this.preRotation=a.rotation,this.width=a.width,this.height=a.height,this.sourceWidth=a.width,this.sourceHeight=a.height,a.texture&&(this.sourceWidth=a.texture.frame.width,this.sourceHeight=a.texture.frame.height),this.halfWidth=Math.abs(a.width/2),this.halfHeight=Math.abs(a.height/2),this.center=new c.Point(a.x+this.halfWidth,a.y+this.halfHeight),this.velocity=new c.Point,this.newVelocity=new c.Point(0,0),this.deltaMax=new c.Point(0,0),this.acceleration=new c.Point,this.drag=new c.Point,this.allowGravity=!0,this.gravity=new c.Point(0,0),this.bounce=new c.Point,this.worldBounce=null,this.maxVelocity=new c.Point(1e4,1e4),this.friction=new c.Point(1,0),this.angularVelocity=0,this.angularAcceleration=0,this.angularDrag=0,this.maxAngular=1e3,this.mass=1,this.angle=0,this.speed=0,this.facing=c.NONE,this.immovable=!1,this.moves=!0,this.customSeparateX=!1,this.customSeparateY=!1,this.overlapX=0,this.overlapY=0,this.embedded=!1,this.collideWorldBounds=!1,this.checkCollision={none:!1,any:!0,up:!0,down:!0,left:!0,right:!0},this.touching={none:!0,up:!1,down:!1,left:!1,right:!1},this.wasTouching={none:!0,up:!1,down:!1,left:!1,right:!1},this.blocked={up:!1,down:!1,left:!1,right:!1},this.tilePadding=new c.Point,this.dirty=!1,this.skipQuadTree=!1,this.syncBounds=!1,this.isMoving=!1,this.stopVelocityOnCollide=!0,this.moveTimer=0,this.moveDistance=0,this.moveDuration=0,this.moveTarget=null,this.moveEnd=null,this.onMoveComplete=new c.Signal,this.movementCallback=null,this.movementCallbackContext=null,this._reset=!0,this._sx=a.scale.x,this._sy=a.scale.y,this._dx=0,this._dy=0},c.Physics.Arcade.Body.prototype={updateBounds:function(){if(this.syncBounds){var a=this.sprite.getBounds();a.ceilAll(),(a.width!==this.width||a.height!==this.height)&&(this.width=a.width,this.height=a.height,this._reset=!0)}else{var b=Math.abs(this.sprite.scale.x),c=Math.abs(this.sprite.scale.y);(b!==this._sx||c!==this._sy)&&(this.width=this.sourceWidth*b,this.height=this.sourceHeight*c,this._sx=b,this._sy=c,this._reset=!0)}this._reset&&(this.halfWidth=Math.floor(this.width/2),this.halfHeight=Math.floor(this.height/2),this.center.setTo(this.position.x+this.halfWidth,this.position.y+this.halfHeight))},preUpdate:function(){this.enable&&!this.game.physics.arcade.isPaused&&(this.dirty=!0,this.wasTouching.none=this.touching.none,this.wasTouching.up=this.touching.up,this.wasTouching.down=this.touching.down,this.wasTouching.left=this.touching.left,this.wasTouching.right=this.touching.right,this.touching.none=!0,this.touching.up=!1,this.touching.down=!1,this.touching.left=!1,this.touching.right=!1,this.blocked.up=!1,this.blocked.down=!1,this.blocked.left=!1,this.blocked.right=!1,this.embedded=!1,this.updateBounds(),this.position.x=this.sprite.world.x-this.sprite.anchor.x*this.sprite.width+this.sprite.scale.x*this.offset.x,this.position.x-=this.sprite.scale.x<0?this.width:0,this.position.y=this.sprite.world.y-this.sprite.anchor.y*this.sprite.height+this.sprite.scale.y*this.offset.y,this.position.y-=this.sprite.scale.y<0?this.height:0,this.rotation=this.sprite.angle,this.preRotation=this.rotation,(this._reset||this.sprite.fresh)&&(this.prev.x=this.position.x,this.prev.y=this.position.y),this.moves&&(this.game.physics.arcade.updateMotion(this),this.newVelocity.set(this.velocity.x*this.game.time.physicsElapsed,this.velocity.y*this.game.time.physicsElapsed),this.position.x+=this.newVelocity.x,this.position.y+=this.newVelocity.y,(this.position.x!==this.prev.x||this.position.y!==this.prev.y)&&(this.angle=Math.atan2(this.velocity.y,this.velocity.x)),this.speed=Math.sqrt(this.velocity.x*this.velocity.x+this.velocity.y*this.velocity.y),this.collideWorldBounds&&this.checkWorldBounds()),this._dx=this.deltaX(),this._dy=this.deltaY(),this._reset=!1)},updateMovement:function(){var a=0,b=0!==this.overlapX||0!==this.overlapY;if(this.moveDuration>0?(this.moveTimer+=this.game.time.elapsedMS,a=this.moveTimer/this.moveDuration):(this.moveTarget.end.set(this.position.x,this.position.y),a=this.moveTarget.length/this.moveDistance),this.movementCallback)var c=this.movementCallback.call(this.movementCallbackContext,this,this.velocity,a);return b||a>=1||void 0!==c&&c!==!0?(this.stopMovement(a>=1||this.stopVelocityOnCollide&&b),!1):!0},stopMovement:function(a){this.isMoving&&(this.isMoving=!1,a&&this.velocity.set(0),this.onMoveComplete.dispatch(this.sprite,0!==this.overlapX||0!==this.overlapY))},postUpdate:function(){this.enable&&this.dirty&&(this.isMoving&&this.updateMovement(),this.dirty=!1,this.deltaX()<0?this.facing=c.LEFT:this.deltaX()>0&&(this.facing=c.RIGHT),this.deltaY()<0?this.facing=c.UP:this.deltaY()>0&&(this.facing=c.DOWN),this.moves&&(this._dx=this.deltaX(),this._dy=this.deltaY(),0!==this.deltaMax.x&&0!==this._dx&&(this._dx<0&&this._dx<-this.deltaMax.x?this._dx=-this.deltaMax.x:this._dx>0&&this._dx>this.deltaMax.x&&(this._dx=this.deltaMax.x)),0!==this.deltaMax.y&&0!==this._dy&&(this._dy<0&&this._dy<-this.deltaMax.y?this._dy=-this.deltaMax.y:this._dy>0&&this._dy>this.deltaMax.y&&(this._dy=this.deltaMax.y)),this.sprite.position.x+=this._dx,this.sprite.position.y+=this._dy,this._reset=!0),this.center.setTo(this.position.x+this.halfWidth,this.position.y+this.halfHeight),this.allowRotation&&(this.sprite.angle+=this.deltaZ()),this.prev.x=this.position.x,this.prev.y=this.position.y)},checkWorldBounds:function(){var a=this.position,b=this.game.physics.arcade.bounds,c=this.game.physics.arcade.checkCollision,d=this.worldBounce?-this.worldBounce.x:-this.bounce.x,e=this.worldBounce?-this.worldBounce.y:-this.bounce.y;a.xb.right&&c.right&&(a.x=b.right-this.width,this.velocity.x*=d,this.blocked.right=!0),a.yb.bottom&&c.down&&(a.y=b.bottom-this.height,this.velocity.y*=e,this.blocked.down=!0)},moveFrom:function(a,b,c){if(void 0===b&&(b=this.speed),0===b)return!1;var d;return void 0===c?(d=this.angle,c=this.game.math.radToDeg(d)):d=this.game.math.degToRad(c),this.moveTimer=0,this.moveDuration=a,0===c||180===c?this.velocity.set(Math.cos(d)*b,0):90===c||270===c?this.velocity.set(0,Math.sin(d)*b):this.velocity.set(Math.cos(d)*b,Math.sin(d)*b),this.isMoving=!0,!0},moveTo:function(a,b,d){var e=b/(a/1e3);if(0===e)return!1;var f;return void 0===d?(f=this.angle,d=this.game.math.radToDeg(f)):f=this.game.math.degToRad(d),b=Math.abs(b),this.moveDuration=0,this.moveDistance=b,null===this.moveTarget&&(this.moveTarget=new c.Line,this.moveEnd=new c.Point),this.moveTarget.fromAngle(this.x,this.y,f,b),this.moveEnd.set(this.moveTarget.end.x,this.moveTarget.end.y),this.moveTarget.setTo(this.x,this.y,this.x,this.y),0===d||180===d?this.velocity.set(Math.cos(f)*e,0):90===d||270===d?this.velocity.set(0,Math.sin(f)*e):this.velocity.set(Math.cos(f)*e,Math.sin(f)*e),this.isMoving=!0,!0},setSize:function(a,b,c,d){void 0===c&&(c=this.offset.x),void 0===d&&(d=this.offset.y),this.sourceWidth=a,this.sourceHeight=b,this.width=this.sourceWidth*this._sx,this.height=this.sourceHeight*this._sy,this.halfWidth=Math.floor(this.width/2),this.halfHeight=Math.floor(this.height/2),this.offset.setTo(c,d),this.center.setTo(this.position.x+this.halfWidth,this.position.y+this.halfHeight)},reset:function(a,b){this.velocity.set(0),this.acceleration.set(0),this.speed=0,this.angularVelocity=0,this.angularAcceleration=0,this.position.x=a-this.sprite.anchor.x*this.sprite.width+this.sprite.scale.x*this.offset.x,this.position.x-=this.sprite.scale.x<0?this.width:0,this.position.y=b-this.sprite.anchor.y*this.sprite.height+this.sprite.scale.y*this.offset.y,this.position.y-=this.sprite.scale.y<0?this.height:0,this.prev.x=this.position.x,this.prev.y=this.position.y,this.rotation=this.sprite.angle,this.preRotation=this.rotation,this._sx=this.sprite.scale.x,this._sy=this.sprite.scale.y,this.center.setTo(this.position.x+this.halfWidth,this.position.y+this.halfHeight)},hitTest:function(a,b){return c.Rectangle.contains(this,a,b)},onFloor:function(){return this.blocked.down},onCeiling:function(){return this.blocked.up},onWall:function(){return this.blocked.left||this.blocked.right},deltaAbsX:function(){return this.deltaX()>0?this.deltaX():-this.deltaX()},deltaAbsY:function(){return this.deltaY()>0?this.deltaY():-this.deltaY()},deltaX:function(){return this.position.x-this.prev.x},deltaY:function(){return this.position.y-this.prev.y},deltaZ:function(){return this.rotation-this.preRotation},destroy:function(){this.sprite.parent&&this.sprite.parent instanceof c.Group&&this.sprite.parent.removeFromHash(this.sprite),this.sprite.body=null,this.sprite=null}},Object.defineProperty(c.Physics.Arcade.Body.prototype,"left",{get:function(){return this.position.x}}),Object.defineProperty(c.Physics.Arcade.Body.prototype,"right",{get:function(){return this.position.x+this.width}}),Object.defineProperty(c.Physics.Arcade.Body.prototype,"top",{get:function(){return this.position.y}}),Object.defineProperty(c.Physics.Arcade.Body.prototype,"bottom",{get:function(){return this.position.y+this.height}}),Object.defineProperty(c.Physics.Arcade.Body.prototype,"x",{get:function(){return this.position.x},set:function(a){this.position.x=a}}),Object.defineProperty(c.Physics.Arcade.Body.prototype,"y",{get:function(){return this.position.y},set:function(a){this.position.y=a}}),c.Physics.Arcade.Body.render=function(a,b,c,d){void 0===d&&(d=!0),c=c||"rgba(0,255,0,0.4)",d?(a.fillStyle=c,a.fillRect(b.position.x-b.game.camera.x,b.position.y-b.game.camera.y,b.width,b.height)):(a.strokeStyle=c,a.strokeRect(b.position.x-b.game.camera.x,b.position.y-b.game.camera.y,b.width,b.height))},c.Physics.Arcade.Body.renderBodyInfo=function(a,b){a.line("x: "+b.x.toFixed(2),"y: "+b.y.toFixed(2),"width: "+b.width,"height: "+b.height),a.line("velocity x: "+b.velocity.x.toFixed(2),"y: "+b.velocity.y.toFixed(2),"deltaX: "+b._dx.toFixed(2),"deltaY: "+b._dy.toFixed(2)),a.line("acceleration x: "+b.acceleration.x.toFixed(2),"y: "+b.acceleration.y.toFixed(2),"speed: "+b.speed.toFixed(2),"angle: "+b.angle.toFixed(2)),a.line("gravity x: "+b.gravity.x,"y: "+b.gravity.y,"bounce x: "+b.bounce.x.toFixed(2),"y: "+b.bounce.y.toFixed(2)),a.line("touching left: "+b.touching.left,"right: "+b.touching.right,"up: "+b.touching.up,"down: "+b.touching.down),a.line("blocked left: "+b.blocked.left,"right: "+b.blocked.right,"up: "+b.blocked.up,"down: "+b.blocked.down)},c.Physics.Arcade.Body.prototype.constructor=c.Physics.Arcade.Body,c.Physics.Arcade.TilemapCollision=function(){},c.Physics.Arcade.TilemapCollision.prototype={TILE_BIAS:16,collideSpriteVsTilemapLayer:function(a,b,c,d,e,f){if(a.body){var g=b.getTiles(a.body.position.x-a.body.tilePadding.x,a.body.position.y-a.body.tilePadding.y,a.body.width+a.body.tilePadding.x,a.body.height+a.body.tilePadding.y,!1,!1);if(0!==g.length)for(var h=0;hb.deltaAbsY()?j=-1:b.deltaAbsX()j){if((c.faceLeft||c.faceRight)&&(h=this.tileCheckX(b,c,d),0!==h&&!c.intersects(b.position.x-f,b.position.y-g,b.right-f,b.bottom-g)))return!0;(c.faceTop||c.faceBottom)&&(i=this.tileCheckY(b,c,d))}else{if((c.faceTop||c.faceBottom)&&(i=this.tileCheckY(b,c,d),0!==i&&!c.intersects(b.position.x-f,b.position.y-g,b.right-f,b.bottom-g)))return!0;(c.faceLeft||c.faceRight)&&(h=this.tileCheckX(b,c,d))}return 0!==h||0!==i},tileCheckX:function(a,b,c){var d=0,e=c.fixedToCamera?0:c.position.x;return a.deltaX()<0&&!a.blocked.left&&b.collideRight&&a.checkCollision.left?b.faceRight&&a.x-e0&&!a.blocked.right&&b.collideLeft&&a.checkCollision.right&&b.faceLeft&&a.right-e>b.left&&(d=a.right-e-b.left,d>this.TILE_BIAS&&(d=0)),0!==d&&(a.customSeparateX?a.overlapX=d:this.processTileSeparationX(a,d)),d},tileCheckY:function(a,b,c){var d=0,e=c.fixedToCamera?0:c.position.y;return a.deltaY()<0&&!a.blocked.up&&b.collideDown&&a.checkCollision.up?b.faceBottom&&a.y-e0&&!a.blocked.down&&b.collideUp&&a.checkCollision.down&&b.faceTop&&a.bottom-e>b.top&&(d=a.bottom-e-b.top,d>this.TILE_BIAS&&(d=0)),0!==d&&(a.customSeparateY?a.overlapY=d:this.processTileSeparationY(a,d)),d},processTileSeparationX:function(a,b){0>b?a.blocked.left=!0:b>0&&(a.blocked.right=!0),a.position.x-=b,0===a.bounce.x?a.velocity.x=0:a.velocity.x=-a.velocity.x*a.bounce.x},processTileSeparationY:function(a,b){0>b?a.blocked.up=!0:b>0&&(a.blocked.down=!0),a.position.y-=b,0===a.bounce.y?a.velocity.y=0:a.velocity.y=-a.velocity.y*a.bounce.y}},c.Utils.mixinPrototype(c.Physics.Arcade.prototype,c.Physics.Arcade.TilemapCollision.prototype),p2.Body.prototype.parent=null,p2.Spring.prototype.parent=null,c.Physics.P2=function(a,b){this.game=a,void 0===b?b={gravity:[0,0],broadphase:new p2.SAPBroadphase}:(b.hasOwnProperty("gravity")||(b.gravity=[0,0]),b.hasOwnProperty("broadphase")||(b.broadphase=new p2.SAPBroadphase)),this.config=b,this.world=new p2.World(this.config),this.frameRate=1/60,this.useElapsedTime=!1,this.paused=!1,this.materials=[],this.gravity=new c.Physics.P2.InversePointProxy(this,this.world.gravity),this.walls={left:null,right:null,top:null,bottom:null},this.onBodyAdded=new c.Signal,this.onBodyRemoved=new c.Signal,this.onSpringAdded=new c.Signal,this.onSpringRemoved=new c.Signal,this.onConstraintAdded=new c.Signal,this.onConstraintRemoved=new c.Signal,this.onContactMaterialAdded=new c.Signal,this.onContactMaterialRemoved=new c.Signal,this.postBroadphaseCallback=null,this.callbackContext=null,this.onBeginContact=new c.Signal,this.onEndContact=new c.Signal,b.hasOwnProperty("mpx")&&b.hasOwnProperty("pxm")&&b.hasOwnProperty("mpxi")&&b.hasOwnProperty("pxmi")&&(this.mpx=b.mpx,this.mpxi=b.mpxi,this.pxm=b.pxm,this.pxmi=b.pxmi),this.world.on("beginContact",this.beginContactHandler,this),this.world.on("endContact",this.endContactHandler,this),this.collisionGroups=[],this.nothingCollisionGroup=new c.Physics.P2.CollisionGroup(1),this.boundsCollisionGroup=new c.Physics.P2.CollisionGroup(2),this.everythingCollisionGroup=new c.Physics.P2.CollisionGroup(2147483648),this.boundsCollidesWith=[],this._toRemove=[],this._collisionGroupID=2,this._boundsLeft=!0,this._boundsRight=!0,this._boundsTop=!0,this._boundsBottom=!0,this._boundsOwnGroup=!1,this.setBoundsToWorld(!0,!0,!0,!0,!1)},c.Physics.P2.prototype={removeBodyNextStep:function(a){this._toRemove.push(a)},preUpdate:function(){for(var a=this._toRemove.length;a--;)this.removeBody(this._toRemove[a]);this._toRemove.length=0},enable:function(a,b,d){void 0===b&&(b=!1),void 0===d&&(d=!0);var e=1;if(Array.isArray(a))for(e=a.length;e--;)a[e]instanceof c.Group?this.enable(a[e].children,b,d):(this.enableBody(a[e],b),d&&a[e].hasOwnProperty("children")&&a[e].children.length>0&&this.enable(a[e],b,!0));else a instanceof c.Group?this.enable(a.children,b,d):(this.enableBody(a,b),d&&a.hasOwnProperty("children")&&a.children.length>0&&this.enable(a.children,b,!0))},enableBody:function(a,b){a.hasOwnProperty("body")&&null===a.body&&(a.body=new c.Physics.P2.Body(this.game,a,a.x,a.y,1),a.body.debug=b,"undefined"!=typeof a.anchor&&a.anchor.set(.5))},setImpactEvents:function(a){a?this.world.on("impact",this.impactHandler,this):this.world.off("impact",this.impactHandler,this)},setPostBroadphaseCallback:function(a,b){this.postBroadphaseCallback=a,this.callbackContext=b,null!==a?this.world.on("postBroadphase",this.postBroadphaseHandler,this):this.world.off("postBroadphase",this.postBroadphaseHandler,this)},postBroadphaseHandler:function(a){if(this.postBroadphaseCallback&&0!==a.pairs.length)for(var b=a.pairs.length-2;b>=0;b-=2)a.pairs[b].parent&&a.pairs[b+1].parent&&!this.postBroadphaseCallback.call(this.callbackContext,a.pairs[b].parent,a.pairs[b+1].parent)&&a.pairs.splice(b,2)},impactHandler:function(a){if(a.bodyA.parent&&a.bodyB.parent){var b=a.bodyA.parent,c=a.bodyB.parent;b._bodyCallbacks[a.bodyB.id]&&b._bodyCallbacks[a.bodyB.id].call(b._bodyCallbackContext[a.bodyB.id],b,c,a.shapeA,a.shapeB),c._bodyCallbacks[a.bodyA.id]&&c._bodyCallbacks[a.bodyA.id].call(c._bodyCallbackContext[a.bodyA.id],c,b,a.shapeB,a.shapeA),b._groupCallbacks[a.shapeB.collisionGroup]&&b._groupCallbacks[a.shapeB.collisionGroup].call(b._groupCallbackContext[a.shapeB.collisionGroup],b,c,a.shapeA,a.shapeB),c._groupCallbacks[a.shapeA.collisionGroup]&&c._groupCallbacks[a.shapeA.collisionGroup].call(c._groupCallbackContext[a.shapeA.collisionGroup],c,b,a.shapeB,a.shapeA)}},beginContactHandler:function(a){a.bodyA&&a.bodyB&&(this.onBeginContact.dispatch(a.bodyA,a.bodyB,a.shapeA,a.shapeB,a.contactEquations),a.bodyA.parent&&a.bodyA.parent.onBeginContact.dispatch(a.bodyB.parent,a.bodyB,a.shapeA,a.shapeB,a.contactEquations),a.bodyB.parent&&a.bodyB.parent.onBeginContact.dispatch(a.bodyA.parent,a.bodyA,a.shapeB,a.shapeA,a.contactEquations))},endContactHandler:function(a){a.bodyA&&a.bodyB&&(this.onEndContact.dispatch(a.bodyA,a.bodyB,a.shapeA,a.shapeB),a.bodyA.parent&&a.bodyA.parent.onEndContact.dispatch(a.bodyB.parent,a.bodyB,a.shapeA,a.shapeB),a.bodyB.parent&&a.bodyB.parent.onEndContact.dispatch(a.bodyA.parent,a.bodyA,a.shapeB,a.shapeA))},setBoundsToWorld:function(a,b,c,d,e){this.setBounds(this.game.world.bounds.x,this.game.world.bounds.y,this.game.world.bounds.width,this.game.world.bounds.height,a,b,c,d,e)},setWorldMaterial:function(a,b,c,d,e){void 0===b&&(b=!0),void 0===c&&(c=!0),void 0===d&&(d=!0),void 0===e&&(e=!0),b&&this.walls.left&&(this.walls.left.shapes[0].material=a),c&&this.walls.right&&(this.walls.right.shapes[0].material=a),d&&this.walls.top&&(this.walls.top.shapes[0].material=a),e&&this.walls.bottom&&(this.walls.bottom.shapes[0].material=a)},updateBoundsCollisionGroup:function(a){void 0===a&&(a=!0);var b=a?this.boundsCollisionGroup.mask:this.everythingCollisionGroup.mask;this.walls.left&&(this.walls.left.shapes[0].collisionGroup=b),this.walls.right&&(this.walls.right.shapes[0].collisionGroup=b),this.walls.top&&(this.walls.top.shapes[0].collisionGroup=b),this.walls.bottom&&(this.walls.bottom.shapes[0].collisionGroup=b),this._boundsOwnGroup=a},setBounds:function(a,b,c,d,e,f,g,h,i){void 0===e&&(e=this._boundsLeft),void 0===f&&(f=this._boundsRight),void 0===g&&(g=this._boundsTop),void 0===h&&(h=this._boundsBottom),void 0===i&&(i=this._boundsOwnGroup),this.setupWall(e,"left",a,b,1.5707963267948966,i),this.setupWall(f,"right",a+c,b,-1.5707963267948966,i),this.setupWall(g,"top",a,b,-3.141592653589793,i),this.setupWall(h,"bottom",a,b+d,0,i),this._boundsLeft=e,this._boundsRight=f,this._boundsTop=g,this._boundsBottom=h,this._boundsOwnGroup=i},setupWall:function(a,b,c,d,e,f){a?this.walls[b]?this.walls[b].position=[this.pxmi(c),this.pxmi(d)]:(this.walls[b]=new p2.Body({mass:0,position:[this.pxmi(c),this.pxmi(d)],angle:e}),this.walls[b].addShape(new p2.Plane),f&&(this.walls[b].shapes[0].collisionGroup=this.boundsCollisionGroup.mask),this.world.addBody(this.walls[b])):this.walls[b]&&(this.world.removeBody(this.walls[b]),this.walls[b]=null)},pause:function(){this.paused=!0},resume:function(){this.paused=!1},update:function(){this.paused||(this.useElapsedTime?this.world.step(this.game.time.physicsElapsed):this.world.step(this.frameRate))},reset:function(){this.world.on("beginContact",this.beginContactHandler,this),this.world.on("endContact",this.endContactHandler,this),this.nothingCollisionGroup=new c.Physics.P2.CollisionGroup(1),this.boundsCollisionGroup=new c.Physics.P2.CollisionGroup(2),this.everythingCollisionGroup=new c.Physics.P2.CollisionGroup(2147483648),this._collisionGroupID=2,this.setBoundsToWorld(!0,!0,!0,!0,!1)},clear:function(){this.world.time=0,this.world.fixedStepTime=0,this.world.solver&&this.world.solver.equations.length&&this.world.solver.removeAllEquations();for(var a=this.world.constraints,b=a.length-1;b>=0;b--)this.world.removeConstraint(a[b]);for(var c=this.world.bodies,b=c.length-1;b>=0;b--)this.world.removeBody(c[b]);for(var d=this.world.springs,b=d.length-1;b>=0;b--)this.world.removeSpring(d[b]);for(var e=this.world.contactMaterials,b=e.length-1;b>=0;b--)this.world.removeContactMaterial(e[b]);this.world.off("beginContact",this.beginContactHandler,this),this.world.off("endContact",this.endContactHandler,this),this.postBroadphaseCallback=null,this.callbackContext=null,this.impactCallback=null,this.collisionGroups=[],this._toRemove=[],this.boundsCollidesWith=[]},destroy:function(){this.clear(),this.game=null},addBody:function(a){return a.data.world?!1:(this.world.addBody(a.data),this.onBodyAdded.dispatch(a),!0)},removeBody:function(a){return a.data.world==this.world&&(this.world.removeBody(a.data),this.onBodyRemoved.dispatch(a)),a},addSpring:function(a){return a instanceof c.Physics.P2.Spring||a instanceof c.Physics.P2.RotationalSpring?this.world.addSpring(a.data):this.world.addSpring(a),this.onSpringAdded.dispatch(a),a},removeSpring:function(a){return a instanceof c.Physics.P2.Spring||a instanceof c.Physics.P2.RotationalSpring?this.world.removeSpring(a.data):this.world.removeSpring(a),this.onSpringRemoved.dispatch(a),a},createDistanceConstraint:function(a,b,d,e,f,g){return a=this.getBody(a),b=this.getBody(b),a&&b?this.addConstraint(new c.Physics.P2.DistanceConstraint(this,a,b,d,e,f,g)):void console.warn("Cannot create Constraint, invalid body objects given")},createGearConstraint:function(a,b,d,e){return a=this.getBody(a),b=this.getBody(b),a&&b?this.addConstraint(new c.Physics.P2.GearConstraint(this,a,b,d,e)):void console.warn("Cannot create Constraint, invalid body objects given")},createRevoluteConstraint:function(a,b,d,e,f,g){return a=this.getBody(a),d=this.getBody(d),a&&d?this.addConstraint(new c.Physics.P2.RevoluteConstraint(this,a,b,d,e,f,g)):void console.warn("Cannot create Constraint, invalid body objects given")},createLockConstraint:function(a,b,d,e,f){return a=this.getBody(a),b=this.getBody(b),a&&b?this.addConstraint(new c.Physics.P2.LockConstraint(this,a,b,d,e,f)):void console.warn("Cannot create Constraint, invalid body objects given")},createPrismaticConstraint:function(a,b,d,e,f,g,h){return a=this.getBody(a),b=this.getBody(b),a&&b?this.addConstraint(new c.Physics.P2.PrismaticConstraint(this,a,b,d,e,f,g,h)):void console.warn("Cannot create Constraint, invalid body objects given")},addConstraint:function(a){return this.world.addConstraint(a),this.onConstraintAdded.dispatch(a),a},removeConstraint:function(a){return this.world.removeConstraint(a),this.onConstraintRemoved.dispatch(a),a},addContactMaterial:function(a){return this.world.addContactMaterial(a),this.onContactMaterialAdded.dispatch(a),a},removeContactMaterial:function(a){return this.world.removeContactMaterial(a),this.onContactMaterialRemoved.dispatch(a),a},getContactMaterial:function(a,b){return this.world.getContactMaterial(a,b)},setMaterial:function(a,b){for(var c=b.length;c--;)b[c].setMaterial(a)},createMaterial:function(a,b){a=a||"";var d=new c.Physics.P2.Material(a);return this.materials.push(d),"undefined"!=typeof b&&b.setMaterial(d),d},createContactMaterial:function(a,b,d){void 0===a&&(a=this.createMaterial()),void 0===b&&(b=this.createMaterial());var e=new c.Physics.P2.ContactMaterial(a,b,d);return this.addContactMaterial(e)},getBodies:function(){for(var a=[],b=this.world.bodies.length;b--;)a.push(this.world.bodies[b].parent);return a},getBody:function(a){return a instanceof p2.Body?a:a instanceof c.Physics.P2.Body?a.data:a.body&&a.body.type===c.Physics.P2JS?a.body.data:null},getSprings:function(){for(var a=[],b=this.world.springs.length;b--;)a.push(this.world.springs[b].parent);return a},getConstraints:function(){for(var a=[],b=this.world.constraints.length;b--;)a.push(this.world.constraints[b]);return a},hitTest:function(a,b,d,e){void 0===b&&(b=this.world.bodies),void 0===d&&(d=5),void 0===e&&(e=!1);for(var f=[this.pxmi(a.x),this.pxmi(a.y)],g=[],h=b.length;h--;)b[h]instanceof c.Physics.P2.Body&&(!e||b[h].data.type!==p2.Body.STATIC)?g.push(b[h].data):b[h]instanceof p2.Body&&b[h].parent&&(!e||b[h].type!==p2.Body.STATIC)?g.push(b[h]):b[h]instanceof c.Sprite&&b[h].hasOwnProperty("body")&&(!e||b[h].body.data.type!==p2.Body.STATIC)&&g.push(b[h].body.data);return this.world.hitTest(f,g,d)},toJSON:function(){return this.world.toJSON()},createCollisionGroup:function(a){var b=Math.pow(2,this._collisionGroupID);this.walls.left&&(this.walls.left.shapes[0].collisionMask=this.walls.left.shapes[0].collisionMask|b),this.walls.right&&(this.walls.right.shapes[0].collisionMask=this.walls.right.shapes[0].collisionMask|b),this.walls.top&&(this.walls.top.shapes[0].collisionMask=this.walls.top.shapes[0].collisionMask|b),this.walls.bottom&&(this.walls.bottom.shapes[0].collisionMask=this.walls.bottom.shapes[0].collisionMask|b),this._collisionGroupID++;var d=new c.Physics.P2.CollisionGroup(b);return this.collisionGroups.push(d),a&&this.setCollisionGroup(a,d),d},setCollisionGroup:function(a,b){if(a instanceof c.Group)for(var d=0;de;e++){var g=a.collision[b][e],h=this.createBody(g.x,g.y,0,c,{},g.polyline);h&&d.push(h)}return d},clearTilemapLayerBodies:function(a,b){b=a.getLayer(b);for(var c=a.layers[b].bodies.length;c--;)a.layers[b].bodies[c].destroy();a.layers[b].bodies.length=0},convertTilemap:function(a,b,c,d){b=a.getLayer(b),void 0===c&&(c=!0),void 0===d&&(d=!0),this.clearTilemapLayerBodies(a,b);for(var e=0,f=0,g=0,h=0,i=a.layers[b].height;i>h;h++){e=0;for(var j=0,k=a.layers[b].width;k>j;j++){var l=a.layers[b].data[h][j];if(l&&l.index>-1&&l.collides)if(d){var m=a.getTileRight(b,j,h);if(0===e&&(f=l.x*l.width,g=l.y*l.height,e=l.width),m&&m.collides)e+=l.width;else{var n=this.createBody(f,g,0,!1);n.addRectangle(e,l.height,e/2,l.height/2,0),c&&this.addBody(n),a.layers[b].bodies.push(n),e=0}}else{var n=this.createBody(l.x*l.width,l.y*l.height,0,!1);n.addRectangle(l.width,l.height,l.width/2,l.height/2,0),c&&this.addBody(n),a.layers[b].bodies.push(n)}}}return a.layers[b].bodies},mpx:function(a){return a*=20},pxm:function(a){return.05*a},mpxi:function(a){return a*=-20},pxmi:function(a){return a*-.05}},Object.defineProperty(c.Physics.P2.prototype,"friction",{get:function(){return this.world.defaultContactMaterial.friction},set:function(a){this.world.defaultContactMaterial.friction=a}}),Object.defineProperty(c.Physics.P2.prototype,"restitution",{get:function(){return this.world.defaultContactMaterial.restitution},set:function(a){this.world.defaultContactMaterial.restitution=a}}),Object.defineProperty(c.Physics.P2.prototype,"contactMaterial",{get:function(){return this.world.defaultContactMaterial},set:function(a){this.world.defaultContactMaterial=a}}),Object.defineProperty(c.Physics.P2.prototype,"applySpringForces",{get:function(){return this.world.applySpringForces},set:function(a){this.world.applySpringForces=a}}),Object.defineProperty(c.Physics.P2.prototype,"applyDamping",{get:function(){return this.world.applyDamping},set:function(a){this.world.applyDamping=a}}),Object.defineProperty(c.Physics.P2.prototype,"applyGravity",{get:function(){return this.world.applyGravity},set:function(a){this.world.applyGravity=a}}),Object.defineProperty(c.Physics.P2.prototype,"solveConstraints",{get:function(){return this.world.solveConstraints},set:function(a){this.world.solveConstraints=a}}),Object.defineProperty(c.Physics.P2.prototype,"time",{get:function(){return this.world.time}}),Object.defineProperty(c.Physics.P2.prototype,"emitImpactEvent",{get:function(){return this.world.emitImpactEvent},set:function(a){this.world.emitImpactEvent=a}}),Object.defineProperty(c.Physics.P2.prototype,"sleepMode",{get:function(){return this.world.sleepMode},set:function(a){this.world.sleepMode=a}}),Object.defineProperty(c.Physics.P2.prototype,"total",{get:function(){return this.world.bodies.length}}),c.Physics.P2.FixtureList=function(a){Array.isArray(a)||(a=[a]),this.rawList=a,this.init(),this.parse(this.rawList)},c.Physics.P2.FixtureList.prototype={init:function(){this.namedFixtures={},this.groupedFixtures=[],this.allFixtures=[]},setCategory:function(a,b){var c=function(b){b.collisionGroup=a};this.getFixtures(b).forEach(c)},setMask:function(a,b){var c=function(b){b.collisionMask=a};this.getFixtures(b).forEach(c)},setSensor:function(a,b){var c=function(b){b.sensor=a};this.getFixtures(b).forEach(c)},setMaterial:function(a,b){var c=function(b){b.material=a};this.getFixtures(b).forEach(c)},getFixtures:function(a){var b=[];if(a){a instanceof Array||(a=[a]);var c=this;return a.forEach(function(a){c.namedFixtures[a]&&b.push(c.namedFixtures[a])}),this.flatten(b)}return this.allFixtures},getFixtureByKey:function(a){return this.namedFixtures[a]},getGroup:function(a){return this.groupedFixtures[a]},parse:function(){var a,b,c,d;c=this.rawList,d=[];for(a in c)b=c[a],isNaN(a-0)?this.namedFixtures[a]=this.flatten(b):(this.groupedFixtures[a]=this.groupedFixtures[a]||[],this.groupedFixtures[a]=this.groupedFixtures[a].concat(b)),d.push(this.allFixtures=this.flatten(this.groupedFixtures))},flatten:function(a){var b,c;return b=[],c=arguments.callee,a.forEach(function(a){return Array.prototype.push.apply(b,Array.isArray(a)?c(a):[a])}),b}},c.Physics.P2.PointProxy=function(a,b){this.world=a,this.destination=b},c.Physics.P2.PointProxy.prototype.constructor=c.Physics.P2.PointProxy,Object.defineProperty(c.Physics.P2.PointProxy.prototype,"x",{get:function(){return this.world.mpx(this.destination[0])},set:function(a){this.destination[0]=this.world.pxm(a)}}),Object.defineProperty(c.Physics.P2.PointProxy.prototype,"y",{get:function(){return this.world.mpx(this.destination[1])},set:function(a){this.destination[1]=this.world.pxm(a)}}),Object.defineProperty(c.Physics.P2.PointProxy.prototype,"mx",{get:function(){return this.destination[0]},set:function(a){this.destination[0]=a}}),Object.defineProperty(c.Physics.P2.PointProxy.prototype,"my",{get:function(){return this.destination[1]},set:function(a){this.destination[1]=a}}),c.Physics.P2.InversePointProxy=function(a,b){this.world=a,this.destination=b},c.Physics.P2.InversePointProxy.prototype.constructor=c.Physics.P2.InversePointProxy,Object.defineProperty(c.Physics.P2.InversePointProxy.prototype,"x",{get:function(){return this.world.mpxi(this.destination[0])},set:function(a){this.destination[0]=this.world.pxmi(a)}}),Object.defineProperty(c.Physics.P2.InversePointProxy.prototype,"y",{get:function(){return this.world.mpxi(this.destination[1])},set:function(a){this.destination[1]=this.world.pxmi(a)}}),Object.defineProperty(c.Physics.P2.InversePointProxy.prototype,"mx",{get:function(){return this.destination[0]},set:function(a){this.destination[0]=-a}}),Object.defineProperty(c.Physics.P2.InversePointProxy.prototype,"my",{get:function(){return this.destination[1]},set:function(a){this.destination[1]=-a}}),c.Physics.P2.Body=function(a,b,d,e,f){b=b||null,d=d||0,e=e||0,void 0===f&&(f=1),this.game=a,this.world=a.physics.p2,this.sprite=b,this.type=c.Physics.P2JS,this.offset=new c.Point,this.data=new p2.Body({position:[this.world.pxmi(d),this.world.pxmi(e)],mass:f}),this.data.parent=this,this.velocity=new c.Physics.P2.InversePointProxy(this.world,this.data.velocity),this.force=new c.Physics.P2.InversePointProxy(this.world,this.data.force),this.gravity=new c.Point,this.onBeginContact=new c.Signal,this.onEndContact=new c.Signal,this.collidesWith=[],this.removeNextStep=!1,this.debugBody=null,this.dirty=!1,this._collideWorldBounds=!0,this._bodyCallbacks={},this._bodyCallbackContext={},this._groupCallbacks={},this._groupCallbackContext={},this._reset=!1,b&&(this.setRectangleFromSprite(b),b.exists&&this.game.physics.p2.addBody(this))},c.Physics.P2.Body.prototype={createBodyCallback:function(a,b,c){var d=-1;a.id?d=a.id:a.body&&(d=a.body.id),d>-1&&(null===b?(delete this._bodyCallbacks[d],delete this._bodyCallbackContext[d]):(this._bodyCallbacks[d]=b,this._bodyCallbackContext[d]=c))},createGroupCallback:function(a,b,c){null===b?(delete this._groupCallbacks[a.mask],delete this._groupCallbackContext[a.mask]):(this._groupCallbacks[a.mask]=b,this._groupCallbackContext[a.mask]=c)},getCollisionMask:function(){var a=0;this._collideWorldBounds&&(a=this.game.physics.p2.boundsCollisionGroup.mask);for(var b=0;b=0;c--)this.data.shapes[c].collisionMask=b;else a.collisionMask=b},setCollisionGroup:function(a,b){var c=this.getCollisionMask();if(void 0===b)for(var d=this.data.shapes.length-1;d>=0;d--)this.data.shapes[d].collisionGroup=a.mask,this.data.shapes[d].collisionMask=c;else b.collisionGroup=a.mask,b.collisionMask=c},clearCollision:function(a,b,c){if(void 0===a&&(a=!0),void 0===b&&(b=!0),void 0===c)for(var d=this.data.shapes.length-1;d>=0;d--)a&&(this.data.shapes[d].collisionGroup=null),b&&(this.data.shapes[d].collisionMask=null);else a&&(c.collisionGroup=null),b&&(c.collisionMask=null);a&&(this.collidesWith.length=0)},removeCollisionGroup:function(a,b,c){void 0===b&&(b=!0);var d;if(Array.isArray(a))for(var e=0;e-1&&(this.collidesWith.splice(d,1),b&&(delete this._groupCallbacks[a.mask],delete this._groupCallbackContext[a.mask]));else d=this.collidesWith.indexOf(a),d>-1&&(this.collidesWith.splice(d,1),b&&(delete this._groupCallbacks[a.mask],delete this._groupCallbackContext[a.mask]));var f=this.getCollisionMask();if(void 0===c)for(var e=this.data.shapes.length-1;e>=0;e--)this.data.shapes[e].collisionMask=f;else c.collisionMask=f},collides:function(a,b,c,d){if(Array.isArray(a))for(var e=0;e=0;e--)this.data.shapes[e].collisionMask=f;else d.collisionMask=f},adjustCenterOfMass:function(){this.data.adjustCenterOfMass(),this.shapeChanged()},getVelocityAtPoint:function(a,b){return this.data.getVelocityAtPoint(a,b)},applyDamping:function(a){this.data.applyDamping(a)},applyImpulse:function(a,b,c){this.data.applyImpulse(a,[this.world.pxmi(b),this.world.pxmi(c)])},applyImpulseLocal:function(a,b,c){this.data.applyImpulseLocal(a,[this.world.pxmi(b),this.world.pxmi(c)])},applyForce:function(a,b,c){this.data.applyForce(a,[this.world.pxmi(b),this.world.pxmi(c)])},setZeroForce:function(){this.data.setZeroForce()},setZeroRotation:function(){this.data.angularVelocity=0},setZeroVelocity:function(){this.data.velocity[0]=0,this.data.velocity[1]=0},setZeroDamping:function(){this.data.damping=0,this.data.angularDamping=0},toLocalFrame:function(a,b){return this.data.toLocalFrame(a,b)},toWorldFrame:function(a,b){return this.data.toWorldFrame(a,b)},rotateLeft:function(a){this.data.angularVelocity=this.world.pxm(-a)},rotateRight:function(a){this.data.angularVelocity=this.world.pxm(a)},moveForward:function(a){var b=this.world.pxmi(-a),c=this.data.angle+Math.PI/2;this.data.velocity[0]=b*Math.cos(c),this.data.velocity[1]=b*Math.sin(c)},moveBackward:function(a){var b=this.world.pxmi(-a),c=this.data.angle+Math.PI/2;this.data.velocity[0]=-(b*Math.cos(c)),this.data.velocity[1]=-(b*Math.sin(c))},thrust:function(a){var b=this.world.pxmi(-a),c=this.data.angle+Math.PI/2;this.data.force[0]+=b*Math.cos(c),this.data.force[1]+=b*Math.sin(c)},thrustLeft:function(a){var b=this.world.pxmi(-a),c=this.data.angle;this.data.force[0]+=b*Math.cos(c),this.data.force[1]+=b*Math.sin(c)},thrustRight:function(a){var b=this.world.pxmi(-a),c=this.data.angle;this.data.force[0]-=b*Math.cos(c),this.data.force[1]-=b*Math.sin(c)},reverse:function(a){var b=this.world.pxmi(-a),c=this.data.angle+Math.PI/2;this.data.force[0]-=b*Math.cos(c),this.data.force[1]-=b*Math.sin(c)},moveLeft:function(a){this.data.velocity[0]=this.world.pxmi(-a)},moveRight:function(a){this.data.velocity[0]=this.world.pxmi(a)},moveUp:function(a){this.data.velocity[1]=this.world.pxmi(-a)},moveDown:function(a){this.data.velocity[1]=this.world.pxmi(a)},preUpdate:function(){this.dirty=!0,this.removeNextStep&&(this.removeFromWorld(),this.removeNextStep=!1)},postUpdate:function(){this.sprite.x=this.world.mpxi(this.data.position[0])+this.offset.x,this.sprite.y=this.world.mpxi(this.data.position[1])+this.offset.y,this.fixedRotation||(this.sprite.rotation=this.data.angle),this.debugBody&&this.debugBody.updateSpriteTransform(),this.dirty=!1},reset:function(a,b,c,d){void 0===c&&(c=!1),void 0===d&&(d=!1),this.setZeroForce(),this.setZeroVelocity(),this.setZeroRotation(),c&&this.setZeroDamping(),d&&(this.mass=1),this.x=a,this.y=b},addToWorld:function(){if(this.game.physics.p2._toRemove)for(var a=0;ad;d+=2)c.push([b[d],b[d+1]]);var f=c.length-1;c[f][0]===c[0][0]&&c[f][1]===c[0][1]&&c.pop();for(var g=0;g=0;c--)this.data.shapes[c].material=a;else b.material=a},shapeChanged:function(){this.debugBody&&this.debugBody.draw()},addPhaserPolygon:function(a,b){for(var c=this.game.cache.getPhysicsData(a,b),d=[],e=0;e=0?o>n:n>o;e=o>=0?++n:--n)k=b.vertices[e],p2.vec2.rotate(m,k,a),l.push([(m[0]+i[0])*this.ppu,-(m[1]+i[1])*this.ppu]);this.drawConvex(j,l,b.triangles,f,c,g,this.settings.debugPolygons,[i[0]*this.ppu,-i[1]*this.ppu])}d++}}},drawRectangle:function(a,b,c,d,e,f,g,h,i){void 0===i&&(i=1),void 0===g&&(g=0),a.lineStyle(i,g,1),a.beginFill(h),a.drawRect(b-e/2,c-f/2,e,f)},drawCircle:function(a,b,c,d,e,f,g){void 0===g&&(g=1),void 0===f&&(f=16777215),a.lineStyle(g,0,1),a.beginFill(f,1),a.drawCircle(b,c,2*-e),a.endFill(),a.moveTo(b,c),a.lineTo(b+e*Math.cos(-d),c+e*Math.sin(-d))},drawLine:function(a,b,c,d){void 0===d&&(d=1),void 0===c&&(c=0),a.lineStyle(5*d,c,1),a.moveTo(-b/2,0),a.lineTo(b/2,0)},drawConvex:function(a,b,c,d,e,f,g,h){var i,j,k,l,m,n,o,p,q,r,s;if(void 0===f&&(f=1),void 0===d&&(d=0),g){for(i=[16711680,65280,255],j=0;j!==b.length+1;)l=b[j%b.length],m=b[(j+1)%b.length],o=l[0],r=l[1],p=m[0],s=m[1],a.lineStyle(f,i[j%i.length],1),a.moveTo(o,-r),a.lineTo(p,-s),a.drawCircle(o,-r,2*f),j++;return a.lineStyle(f,0,1),a.drawCircle(h[0],h[1],2*f)}for(a.lineStyle(f,d,1),a.beginFill(e),j=0;j!==b.length;)k=b[j],n=k[0],q=k[1],0===j?a.moveTo(n,-q):a.lineTo(n,-q),j++;return a.endFill(),b.length>2?(a.moveTo(b[b.length-1][0],-b[b.length-1][1]),a.lineTo(b[0][0],-b[0][1])):void 0},drawPath:function(a,b,c,d,e){var f,g,h,i,j,k,l,m,n,o,p,q,r;for(void 0===e&&(e=1),void 0===c&&(c=0),a.lineStyle(e,c,1),"number"==typeof d&&a.beginFill(d),h=null,i=null,g=0;g2&&"number"==typeof d&&(a.moveTo(b[b.length-1][0],b[b.length-1][1]),a.lineTo(b[0][0],b[0][1]))},drawPlane:function(a,b,c,d,e,f,g,h,i,j){var k,l,m;void 0===f&&(f=1),void 0===d&&(d=16777215),a.lineStyle(f,e,11),a.beginFill(d),k=i,a.moveTo(b,-c),l=b+Math.cos(j)*this.game.width,m=c+Math.sin(j)*this.game.height,a.lineTo(l,-m),a.moveTo(b,-c),l=b+Math.cos(j)*-this.game.width,m=c+Math.sin(j)*-this.game.height,a.lineTo(l,-m)},drawCapsule:function(a,b,c,d,e,f,g,h,i){void 0===i&&(i=1),void 0===g&&(g=0),a.lineStyle(i,g,1);var j=Math.cos(d),k=Math.sin(d);a.beginFill(h,1),a.drawCircle(-e/2*j+b,-e/2*k+c,2*-f),a.drawCircle(e/2*j+b,e/2*k+c,2*-f),a.endFill(),a.lineStyle(i,g,0),a.beginFill(h,1),a.moveTo(-e/2*j+f*k+b,-e/2*k+f*j+c),a.lineTo(e/2*j+f*k+b,e/2*k+f*j+c),a.lineTo(e/2*j-f*k+b,e/2*k-f*j+c),a.lineTo(-e/2*j-f*k+b,-e/2*k-f*j+c),a.endFill(),a.lineStyle(i,g,1),a.moveTo(-e/2*j+f*k+b,-e/2*k+f*j+c),a.lineTo(e/2*j+f*k+b,e/2*k+f*j+c),a.moveTo(-e/2*j-f*k+b,-e/2*k-f*j+c),a.lineTo(e/2*j-f*k+b,e/2*k-f*j+c)},randomPastelHex:function(){var a,b,c,d;return c=[255,255,255],d=Math.floor(256*Math.random()),b=Math.floor(256*Math.random()),a=Math.floor(256*Math.random()),d=Math.floor((d+3*c[0])/4),b=Math.floor((b+3*c[1])/4),a=Math.floor((a+3*c[2])/4),this.rgbToHex(d,b,a)},rgbToHex:function(a,b,c){return this.componentToHex(a)+this.componentToHex(b)+this.componentToHex(c)},componentToHex:function(a){var b;return b=a.toString(16),2===b.length?b:b+"0"}}),c.Physics.P2.Spring=function(a,b,c,d,e,f,g,h,i,j){this.game=a.game,this.world=a,void 0===d&&(d=1),void 0===e&&(e=100),void 0===f&&(f=1),d=a.pxm(d);var k={restLength:d,stiffness:e,damping:f};"undefined"!=typeof g&&null!==g&&(k.worldAnchorA=[a.pxm(g[0]),a.pxm(g[1])]),"undefined"!=typeof h&&null!==h&&(k.worldAnchorB=[a.pxm(h[0]),a.pxm(h[1])]),"undefined"!=typeof i&&null!==i&&(k.localAnchorA=[a.pxm(i[0]),a.pxm(i[1])]),"undefined"!=typeof j&&null!==j&&(k.localAnchorB=[a.pxm(j[0]),a.pxm(j[1])]),this.data=new p2.LinearSpring(b,c,k),this.data.parent=this},c.Physics.P2.Spring.prototype.constructor=c.Physics.P2.Spring,c.Physics.P2.RotationalSpring=function(a,b,c,d,e,f){this.game=a.game,this.world=a,void 0===d&&(d=null),void 0===e&&(e=100),void 0===f&&(f=1),d&&(d=a.pxm(d));var g={restAngle:d,stiffness:e,damping:f};this.data=new p2.RotationalSpring(b,c,g),this.data.parent=this},c.Physics.P2.Spring.prototype.constructor=c.Physics.P2.Spring,c.Physics.P2.Material=function(a){this.name=a,p2.Material.call(this)},c.Physics.P2.Material.prototype=Object.create(p2.Material.prototype),c.Physics.P2.Material.prototype.constructor=c.Physics.P2.Material,c.Physics.P2.ContactMaterial=function(a,b,c){p2.ContactMaterial.call(this,a,b,c)},c.Physics.P2.ContactMaterial.prototype=Object.create(p2.ContactMaterial.prototype),c.Physics.P2.ContactMaterial.prototype.constructor=c.Physics.P2.ContactMaterial,c.Physics.P2.CollisionGroup=function(a){this.mask=a},c.Physics.P2.DistanceConstraint=function(a,b,c,d,e,f,g){void 0===d&&(d=100),void 0===e&&(e=[0,0]),void 0===f&&(f=[0,0]),void 0===g&&(g=Number.MAX_VALUE),this.game=a.game,this.world=a,d=a.pxm(d),e=[a.pxmi(e[0]),a.pxmi(e[1])],f=[a.pxmi(f[0]),a.pxmi(f[1])];var h={distance:d,localAnchorA:e,localAnchorB:f,maxForce:g};p2.DistanceConstraint.call(this,b,c,h)},c.Physics.P2.DistanceConstraint.prototype=Object.create(p2.DistanceConstraint.prototype),c.Physics.P2.DistanceConstraint.prototype.constructor=c.Physics.P2.DistanceConstraint,c.Physics.P2.GearConstraint=function(a,b,c,d,e){void 0===d&&(d=0),void 0===e&&(e=1),this.game=a.game,this.world=a;var f={angle:d,ratio:e};p2.GearConstraint.call(this,b,c,f)},c.Physics.P2.GearConstraint.prototype=Object.create(p2.GearConstraint.prototype),c.Physics.P2.GearConstraint.prototype.constructor=c.Physics.P2.GearConstraint,c.Physics.P2.LockConstraint=function(a,b,c,d,e,f){void 0===d&&(d=[0,0]),void 0===e&&(e=0),void 0===f&&(f=Number.MAX_VALUE),this.game=a.game,this.world=a,d=[a.pxm(d[0]),a.pxm(d[1])];var g={localOffsetB:d,localAngleB:e,maxForce:f};p2.LockConstraint.call(this,b,c,g)},c.Physics.P2.LockConstraint.prototype=Object.create(p2.LockConstraint.prototype),c.Physics.P2.LockConstraint.prototype.constructor=c.Physics.P2.LockConstraint,c.Physics.P2.PrismaticConstraint=function(a,b,c,d,e,f,g,h){void 0===d&&(d=!0),void 0===e&&(e=[0,0]),void 0===f&&(f=[0,0]),void 0===g&&(g=[0,0]),void 0===h&&(h=Number.MAX_VALUE),this.game=a.game,this.world=a,e=[a.pxmi(e[0]),a.pxmi(e[1])],f=[a.pxmi(f[0]),a.pxmi(f[1])];var i={localAnchorA:e,localAnchorB:f,localAxisA:g,maxForce:h,disableRotationalLock:!d};p2.PrismaticConstraint.call(this,b,c,i)},c.Physics.P2.PrismaticConstraint.prototype=Object.create(p2.PrismaticConstraint.prototype),c.Physics.P2.PrismaticConstraint.prototype.constructor=c.Physics.P2.PrismaticConstraint,c.Physics.P2.RevoluteConstraint=function(a,b,c,d,e,f,g){void 0===f&&(f=Number.MAX_VALUE),void 0===g&&(g=null),this.game=a.game,this.world=a,c=[a.pxmi(c[0]),a.pxmi(c[1])],e=[a.pxmi(e[0]),a.pxmi(e[1])],g&&(g=[a.pxmi(g[0]),a.pxmi(g[1])]);var h={worldPivot:g,localPivotA:c,localPivotB:e,maxForce:f};p2.RevoluteConstraint.call(this,b,d,h)},c.Physics.P2.RevoluteConstraint.prototype=Object.create(p2.RevoluteConstraint.prototype),c.Physics.P2.RevoluteConstraint.prototype.constructor=c.Physics.P2.RevoluteConstraint,c.ImageCollection=function(a,b,c,d,e,f,g){(void 0===c||0>=c)&&(c=32),(void 0===d||0>=d)&&(d=32),void 0===e&&(e=0),void 0===f&&(f=0),this.name=a,this.firstgid=0|b,this.imageWidth=0|c,this.imageHeight=0|d,this.imageMargin=0|e,this.imageSpacing=0|f,this.properties=g||{},this.images=[],this.total=0},c.ImageCollection.prototype={containsImageIndex:function(a){return a>=this.firstgid&&athis.right||b>this.bottom)},intersects:function(a,b,c,d){return c<=this.worldX?!1:d<=this.worldY?!1:a>=this.worldX+this.width?!1:b>=this.worldY+this.height?!1:!0},setCollisionCallback:function(a,b){this.collisionCallback=a,this.collisionCallbackContext=b},destroy:function(){this.collisionCallback=null,this.collisionCallbackContext=null,this.properties=null},setCollision:function(a,b,c,d){this.collideLeft=a,this.collideRight=b,this.collideUp=c,this.collideDown=d,this.faceLeft=a,this.faceRight=b,this.faceTop=c,this.faceBottom=d},resetCollision:function(){this.collideLeft=!1,this.collideRight=!1,this.collideUp=!1,this.collideDown=!1,this.faceTop=!1,this.faceBottom=!1,this.faceLeft=!1,this.faceRight=!1},isInteresting:function(a,b){return a&&b?this.collideLeft||this.collideRight||this.collideUp||this.collideDown||this.faceTop||this.faceBottom||this.faceLeft||this.faceRight||this.collisionCallback:a?this.collideLeft||this.collideRight||this.collideUp||this.collideDown:b?this.faceTop||this.faceBottom||this.faceLeft||this.faceRight:!1},copy:function(a){this.index=a.index,this.alpha=a.alpha,this.properties=a.properties,this.collideUp=a.collideUp,this.collideDown=a.collideDown,this.collideLeft=a.collideLeft,this.collideRight=a.collideRight,this.collisionCallback=a.collisionCallback,this.collisionCallbackContext=a.collisionCallbackContext}},c.Tile.prototype.constructor=c.Tile,Object.defineProperty(c.Tile.prototype,"collides",{get:function(){return this.collideLeft||this.collideRight||this.collideUp||this.collideDown}}),Object.defineProperty(c.Tile.prototype,"canCollide",{get:function(){return this.collideLeft||this.collideRight||this.collideUp||this.collideDown||this.collisionCallback}}),Object.defineProperty(c.Tile.prototype,"left",{get:function(){return this.worldX}}),Object.defineProperty(c.Tile.prototype,"right",{get:function(){return this.worldX+this.width}}),Object.defineProperty(c.Tile.prototype,"top",{get:function(){return this.worldY}}),Object.defineProperty(c.Tile.prototype,"bottom",{get:function(){return this.worldY+this.height}}),c.Tilemap=function(a,b,d,e,f,g){this.game=a,this.key=b;var h=c.TilemapParser.parse(this.game,b,d,e,f,g);null!==h&&(this.width=h.width,this.height=h.height,this.tileWidth=h.tileWidth,this.tileHeight=h.tileHeight,this.orientation=h.orientation,this.format=h.format,this.version=h.version,this.properties=h.properties,this.widthInPixels=h.widthInPixels,this.heightInPixels=h.heightInPixels,this.layers=h.layers,this.tilesets=h.tilesets,this.imagecollections=h.imagecollections,this.tiles=h.tiles,this.objects=h.objects,this.collideIndexes=[],this.collision=h.collision,this.images=h.images,this.currentLayer=0,this.debugMap=[],this._results=[],this._tempA=0,this._tempB=0)},c.Tilemap.CSV=0,c.Tilemap.TILED_JSON=1,c.Tilemap.NORTH=0,c.Tilemap.EAST=1,c.Tilemap.SOUTH=2,c.Tilemap.WEST=3,c.Tilemap.prototype={create:function(a,b,c,d,e,f){return void 0===f&&(f=this.game.world),this.width=b,this.height=c,this.setTileSize(d,e),this.layers.length=0,this.createBlankLayer(a,b,c,d,e,f)},setTileSize:function(a,b){this.tileWidth=a,this.tileHeight=b,this.widthInPixels=this.width*a,this.heightInPixels=this.height*b},addTilesetImage:function(a,b,d,e,f,g,h){if(void 0===a)return null;void 0===d&&(d=this.tileWidth),void 0===e&&(e=this.tileHeight),void 0===f&&(f=0),void 0===g&&(g=0),void 0===h&&(h=0),0===d&&(d=32),0===e&&(e=32);var i=null;if((void 0===b||null===b)&&(b=a),b instanceof c.BitmapData)i=b.canvas;else{if(!this.game.cache.checkImageKey(b))return console.warn('Phaser.Tilemap.addTilesetImage: Invalid image key given: "'+b+'"'),null;i=this.game.cache.getImage(b)}var j=this.getTilesetIndex(a);if(null===j&&this.format===c.Tilemap.TILED_JSON)return console.warn('Phaser.Tilemap.addTilesetImage: No data found in the JSON matching the tileset name: "'+a+'"'),null;if(this.tilesets[j])return this.tilesets[j].setImage(i),this.tilesets[j];var k=new c.Tileset(a,h,d,e,f,g,{});k.setImage(i),this.tilesets.push(k);for(var l=this.tilesets.length-1,m=f,n=f,o=0,p=0,q=0,r=h;rl;l++)if(-1!==a.indexOf(this._results[l].index)){j=new g.customClass(this.game,this._results[l].worldX,this._results[l].worldY,d);for(var n in g)j[n]=g[n];f.add(j),k++}if(1===b.length)for(l=0;l1)for(l=0;lthis.layers.length?void console.warn("Tilemap.createLayer: Invalid layer ID given: "+g):f?e.add(new c.TilemapLayerGL(this.game,this,g,b,d)):e.add(new c.TilemapLayer(this.game,this,g,b,d))},createBlankLayer:function(a,b,d,e,f,g){if(void 0===g&&(g=this.game.world),null!==this.getLayerIndex(a))return void console.warn("Tilemap.createBlankLayer: Layer with matching name already exists");for(var h,i={name:a,x:0,y:0,width:b,height:d,widthInPixels:b*e,heightInPixels:d*f,alpha:1,visible:!0,properties:{},indexes:[],callbacks:[],bodies:[],data:null},j=[],k=0;d>k;k++){h=[];for(var l=0;b>l;l++)h.push(new c.Tile(i,-1,l,k,e,f));j.push(h)}i.data=j,this.layers.push(i),this.currentLayer=this.layers.length-1;var m=i.widthInPixels,n=i.heightInPixels;m>this.game.width&&(m=this.game.width),n>this.game.height&&(n=this.game.height);var j=new c.TilemapLayer(this.game,this,this.layers.length-1,m,n);return j.name=a,g.add(j)},getIndex:function(a,b){for(var c=0;ce;e++)this.layers[d].callbacks[a[e]]={callback:b,callbackContext:c}},setTileLocationCallback:function(a,b,c,d,e,f,g){if(g=this.getLayer(g),this.copy(a,b,c,d,g),!(this._results.length<2))for(var h=1;hb)){for(var f=a;b>=f;f++)this.setCollisionByIndex(f,c,d,!1);e&&this.calculateFaces(d)}},setCollisionByExclusion:function(a,b,c,d){void 0===b&&(b=!0),void 0===d&&(d=!0),c=this.getLayer(c);for(var e=0,f=this.tiles.length;f>e;e++)-1===a.indexOf(e)&&this.setCollisionByIndex(e,b,c,!1);d&&this.calculateFaces(c)},setCollisionByIndex:function(a,b,c,d){if(void 0===b&&(b=!0),void 0===c&&(c=this.currentLayer),void 0===d&&(d=!0),b)this.collideIndexes.push(a);else{var e=this.collideIndexes.indexOf(a);e>-1&&this.collideIndexes.splice(e,1)}for(var f=0;ff;f++)for(var h=0,i=this.layers[a].width;i>h;h++){var j=this.layers[a].data[f][h];j&&(b=this.getTileAbove(a,h,f),c=this.getTileBelow(a,h,f),d=this.getTileLeft(a,h,f),e=this.getTileRight(a,h,f),j.collides&&(j.faceTop=!0,j.faceBottom=!0,j.faceLeft=!0,j.faceRight=!0),b&&b.collides&&(j.faceTop=!1),c&&c.collides&&(j.faceBottom=!1),d&&d.collides&&(j.faceLeft=!1),e&&e.collides&&(j.faceRight=!1))}},getTileAbove:function(a,b,c){return c>0?this.layers[a].data[c-1][b]:null},getTileBelow:function(a,b,c){return c0?this.layers[a].data[c][b-1]:null},getTileRight:function(a,b,c){return b-1},removeTile:function(a,b,d){if(d=this.getLayer(d),a>=0&&a=0&&b=0&&b=0&&d-1?this.layers[e].data[d][b].setCollision(!0,!0,!0,!0):this.layers[e].data[d][b].resetCollision(),this.layers[e].dirty=!0,this.calculateFaces(e),this.layers[e].data[d][b]}return null},putTileWorldXY:function(a,b,c,d,e,f){return f=this.getLayer(f),b=this.game.math.snapToFloor(b,d)/d,c=this.game.math.snapToFloor(c,e)/e,this.putTile(a,b,c,f)},searchTileIndex:function(a,b,c,d){void 0===b&&(b=0),void 0===c&&(c=!1),d=this.getLayer(d);var e=0;if(c){for(var f=this.layers[d].height-1;f>=0;f--)for(var g=this.layers[d].width-1;g>=0;g--)if(this.layers[d].data[f][g].index===a){if(e===b)return this.layers[d].data[f][g];e++}}else for(var f=0;f=0&&a=0&&ba&&(a=0),0>b&&(b=0),c>this.layers[e].width&&(c=this.layers[e].width),d>this.layers[e].height&&(d=this.layers[e].height),this._results.length=0,this._results.push({x:a,y:b,width:c,height:d,layer:e});for(var f=b;b+d>f;f++)for(var g=a;a+c>g;g++)this._results.push(this.layers[e].data[f][g]);return this._results},paste:function(a,b,c,d){if(void 0===a&&(a=0),void 0===b&&(b=0),d=this.getLayer(d),c&&!(c.length<2)){for(var e=a-c[1].x,f=b-c[1].y,g=1;g1?this.debugMap[this.layers[this.currentLayer].data[c][d]]?b.push("background: "+this.debugMap[this.layers[this.currentLayer].data[c][d]]):b.push("background: #ffffff"):b.push("background: rgb(0, 0, 0)");a+="\n"}b[0]=a,console.log.apply(console,b)},destroy:function(){this.removeAllLayers(),this.data=[],this.game=null}},c.Tilemap.prototype.constructor=c.Tilemap,Object.defineProperty(c.Tilemap.prototype,"layer",{get:function(){return this.layers[this.currentLayer]},set:function(a){a!==this.currentLayer&&this.setLayer(a)}}),c.TilemapLayer=function(a,b,d,e,f){e|=0,f|=0,c.Sprite.call(this,a,0,0),this.map=b,this.index=d,this.layer=b.layers[d],this.canvas=PIXI.CanvasPool.create(this,e,f),this.context=this.canvas.getContext("2d"),this.setTexture(new PIXI.Texture(new PIXI.BaseTexture(this.canvas))),this.type=c.TILEMAPLAYER,this.physicsType=c.TILEMAPLAYER,this.renderSettings={enableScrollDelta:!1,overdrawRatio:.2,copyCanvas:null},this.debug=!1,this.exists=!0,this.debugSettings={missingImageFill:"rgb(255,255,255)",debuggedTileOverfill:"rgba(0,255,0,0.4)",forceFullRedraw:!0,debugAlpha:.5,facingEdgeStroke:"rgba(0,255,0,1)",collidingTileOverfill:"rgba(0,255,0,0.2)"},this.scrollFactorX=1,this.scrollFactorY=1,this.dirty=!0,this.rayStepRate=4,this._wrap=!1,this._mc={scrollX:0,scrollY:0,renderWidth:0,renderHeight:0,tileWidth:b.tileWidth,tileHeight:b.tileHeight,cw:b.tileWidth,ch:b.tileHeight,tilesets:[]},this._scrollX=0,this._scrollY=0,this._results=[],a.device.canvasBitBltShift||(this.renderSettings.copyCanvas=c.TilemapLayer.ensureSharedCopyCanvas()),this.fixedToCamera=!0},c.TilemapLayer.prototype=Object.create(c.Sprite.prototype),c.TilemapLayer.prototype.constructor=c.TilemapLayer,c.TilemapLayer.prototype.preUpdateCore=c.Component.Core.preUpdate,c.TilemapLayer.sharedCopyCanvas=null,c.TilemapLayer.ensureSharedCopyCanvas=function(){return this.sharedCopyCanvas||(this.sharedCopyCanvas=c.Canvas.create(2,2)),this.sharedCopyCanvas},c.TilemapLayer.prototype.preUpdate=function(){return this.preUpdateCore()},c.TilemapLayer.prototype.postUpdate=function(){this.fixedToCamera&&(this.position.x=(this.game.camera.view.x+this.cameraOffset.x)/this.game.camera.scale.x,this.position.y=(this.game.camera.view.y+this.cameraOffset.y)/this.game.camera.scale.y),this._scrollX=this.game.camera.view.x*this.scrollFactorX/this.scale.x,this._scrollY=this.game.camera.view.y*this.scrollFactorY/this.scale.y},c.TilemapLayer.prototype._renderCanvas=function(a){this.fixedToCamera&&(this.position.x=(this.game.camera.view.x+this.cameraOffset.x)/this.game.camera.scale.x,this.position.y=(this.game.camera.view.y+this.cameraOffset.y)/this.game.camera.scale.y),this._scrollX=this.game.camera.view.x*this.scrollFactorX/this.scale.x,this._scrollY=this.game.camera.view.y*this.scrollFactorY/this.scale.y,this.render(),PIXI.Sprite.prototype._renderCanvas.call(this,a)},c.TilemapLayer.prototype._renderWebGL=function(a){this.fixedToCamera&&(this.position.x=(this.game.camera.view.x+this.cameraOffset.x)/this.game.camera.scale.x,this.position.y=(this.game.camera.view.y+this.cameraOffset.y)/this.game.camera.scale.y),this._scrollX=this.game.camera.view.x*this.scrollFactorX/this.scale.x,this._scrollY=this.game.camera.view.y*this.scrollFactorY/this.scale.y,this.render(),PIXI.Sprite.prototype._renderWebGL.call(this,a)},c.TilemapLayer.prototype.destroy=function(){PIXI.CanvasPool.remove(this),c.Component.Destroy.prototype.destroy.call(this)},c.TilemapLayer.prototype.resize=function(a,b){this.canvas.width=a, -this.canvas.height=b,this.texture.frame.resize(a,b),this.texture.width=a,this.texture.height=b,this.texture.crop.width=a,this.texture.crop.height=b,this.texture.baseTexture.width=a,this.texture.baseTexture.height=b,this.texture.baseTexture.dirty(),this.texture.requiresUpdate=!0,this.texture._updateUvs(),this.dirty=!0},c.TilemapLayer.prototype.resizeWorld=function(){this.game.world.setBounds(0,0,this.layer.widthInPixels*this.scale.x,this.layer.heightInPixels*this.scale.y)},c.TilemapLayer.prototype._fixX=function(a){return 1===this.scrollFactorX||0===this.scrollFactorX&&0===this.position.x?a:0===this.scrollFactorX&&0!==this.position.x?a-this.position.x:this._scrollX+(a-this._scrollX/this.scrollFactorX)},c.TilemapLayer.prototype._unfixX=function(a){return 1===this.scrollFactorX?a:this._scrollX/this.scrollFactorX+(a-this._scrollX)},c.TilemapLayer.prototype._fixY=function(a){return 1===this.scrollFactorY||0===this.scrollFactorY&&0===this.position.y?a:0===this.scrollFactorY&&0!==this.position.y?a-this.position.y:this._scrollY+(a-this._scrollY/this.scrollFactorY)},c.TilemapLayer.prototype._unfixY=function(a){return 1===this.scrollFactorY?a:this._scrollY/this.scrollFactorY+(a-this._scrollY)},c.TilemapLayer.prototype.getTileX=function(a){return Math.floor(this._fixX(a)/this._mc.tileWidth)},c.TilemapLayer.prototype.getTileY=function(a){return Math.floor(this._fixY(a)/this._mc.tileHeight)},c.TilemapLayer.prototype.getTileXY=function(a,b,c){return c.x=this.getTileX(a),c.y=this.getTileY(b),c},c.TilemapLayer.prototype.getRayCastTiles=function(a,b,c,d){b||(b=this.rayStepRate),void 0===c&&(c=!1),void 0===d&&(d=!1);var e=this.getTiles(a.x,a.y,a.width,a.height,c,d);if(0===e.length)return[];for(var f=a.coordinatesOnLine(b),g=[],h=0;hl;l++)for(var m=h;h+j>m;m++){var n=this.layer.data[l];n&&n[m]&&(g||n[m].isInteresting(e,f))&&this._results.push(n[m])}return this._results.slice()},c.TilemapLayer.prototype.resolveTileset=function(a){var b=this._mc.tilesets;if(2e3>a)for(;b.lengthb&&(g=-b,i=0),0>c&&(h=-c,j=0);var k=this.renderSettings.copyCanvas;if(k){(k.width=c&&(c=Math.max(0,c),e=Math.min(h-1,e)),f>=d&&(d=Math.max(0,d),f=Math.min(i-1,f)));var n,o,p,q,r,s,t=c*j-a,u=d*k-b,v=(c+(1<<20)*h)%h,w=(d+(1<<20)*i)%i;for(g.fillStyle=this.tileColor,q=w,s=f-d,o=u;s>=0;q++,s--,o+=k){q>=i&&(q-=i);var x=this.layer.data[q];for(p=v,r=e-c,n=t;r>=0;p++,r--,n+=j){p>=h&&(p-=h);var y=x[p];if(y&&!(y.index<0)){var z=y.index,A=l[z];void 0===A&&(A=this.resolveTileset(z)),y.alpha===m||this.debug||(g.globalAlpha=y.alpha,m=y.alpha),A?y.rotation||y.flipped?(g.save(),g.translate(n+y.centerX,o+y.centerY),g.rotate(y.rotation),y.flipped&&g.scale(-1,1),A.draw(g,-y.centerX,-y.centerY,z),g.restore()):A.draw(g,n,o,z):this.debugSettings.missingImageFill&&(g.fillStyle=this.debugSettings.missingImageFill,g.fillRect(n,o,j,k)),y.debug&&this.debugSettings.debuggedTileOverfill&&(g.fillStyle=this.debugSettings.debuggedTileOverfill,g.fillRect(n,o,j,k))}}}},c.TilemapLayer.prototype.renderDeltaScroll=function(a,b){var c=this._mc.scrollX,d=this._mc.scrollY,e=this.canvas.width,f=this.canvas.height,g=this._mc.tileWidth,h=this._mc.tileHeight,i=0,j=-g,k=0,l=-h;if(0>a?(i=e+a,j=e-1):a>0&&(j=a),0>b?(k=f+b,l=f-1):b>0&&(l=b),this.shiftCanvas(this.context,a,b),i=Math.floor((i+c)/g),j=Math.floor((j+c)/g),k=Math.floor((k+d)/h),l=Math.floor((l+d)/h),j>=i){this.context.clearRect(i*g-c,0,(j-i+1)*g,f);var m=Math.floor((0+d)/h),n=Math.floor((f-1+d)/h);this.renderRegion(c,d,i,m,j,n)}if(l>=k){this.context.clearRect(0,k*h-d,e,(l-k+1)*h);var o=Math.floor((0+c)/g),p=Math.floor((e-1+c)/g);this.renderRegion(c,d,o,k,p,l)}},c.TilemapLayer.prototype.renderFull=function(){var a=this._mc.scrollX,b=this._mc.scrollY,c=this.canvas.width,d=this.canvas.height,e=this._mc.tileWidth,f=this._mc.tileHeight,g=Math.floor(a/e),h=Math.floor((c-1+a)/e),i=Math.floor(b/f),j=Math.floor((d-1+b)/f);this.context.clearRect(0,0,c,d),this.renderRegion(a,b,g,i,h,j)},c.TilemapLayer.prototype.render=function(){var a=!1;if(this.visible){(this.dirty||this.layer.dirty)&&(this.layer.dirty=!1,a=!0);var b=this.canvas.width,c=this.canvas.height,d=0|this._scrollX,e=0|this._scrollY,f=this._mc,g=f.scrollX-d,h=f.scrollY-e;if(a||0!==g||0!==h||f.renderWidth!==b||f.renderHeight!==c)return this.context.save(),f.scrollX=d,f.scrollY=e,(f.renderWidth!==b||f.renderHeight!==c)&&(f.renderWidth=b,f.renderHeight=c),this.debug&&(this.context.globalAlpha=this.debugSettings.debugAlpha,this.debugSettings.forceFullRedraw&&(a=!0)),!a&&this.renderSettings.enableScrollDelta&&Math.abs(g)+Math.abs(h)=0;d++,f--,b+=o){d>=m&&(d-=m);var x=this.layer.data[d];for(c=v,e=q-p,a=t;e>=0;c++,e--,a+=n){c>=l&&(c-=l);var y=x[c];!y||y.index<0||!y.collides||(this.debugSettings.collidingTileOverfill&&(i.fillStyle=this.debugSettings.collidingTileOverfill,i.fillRect(a,b,this._mc.cw,this._mc.ch)),this.debugSettings.facingEdgeStroke&&(i.beginPath(),y.faceTop&&(i.moveTo(a,b),i.lineTo(a+this._mc.cw,b)),y.faceBottom&&(i.moveTo(a,b+this._mc.ch),i.lineTo(a+this._mc.cw,b+this._mc.ch)),y.faceLeft&&(i.moveTo(a,b),i.lineTo(a,b+this._mc.ch)),y.faceRight&&(i.moveTo(a+this._mc.cw,b),i.lineTo(a+this._mc.cw,b+this._mc.ch)),i.stroke()))}}},Object.defineProperty(c.TilemapLayer.prototype,"wrap",{get:function(){return this._wrap},set:function(a){this._wrap=a,this.dirty=!0}}),Object.defineProperty(c.TilemapLayer.prototype,"scrollX",{get:function(){return this._scrollX},set:function(a){this._scrollX=a}}),Object.defineProperty(c.TilemapLayer.prototype,"scrollY",{get:function(){return this._scrollY},set:function(a){this._scrollY=a}}),Object.defineProperty(c.TilemapLayer.prototype,"collisionWidth",{get:function(){return this._mc.cw},set:function(a){this._mc.cw=0|a,this.dirty=!0}}),Object.defineProperty(c.TilemapLayer.prototype,"collisionHeight",{get:function(){return this._mc.ch},set:function(a){this._mc.ch=0|a,this.dirty=!0}}),c.TilemapParser={INSERT_NULL:!1,parse:function(a,b,d,e,f,g){if(void 0===d&&(d=32),void 0===e&&(e=32),void 0===f&&(f=10),void 0===g&&(g=10),void 0===b)return this.getEmptyData();if(null===b)return this.getEmptyData(d,e,f,g);var h=a.cache.getTilemapData(b);if(h){if(h.format===c.Tilemap.CSV)return this.parseCSV(b,h.data,d,e);if(!h.format||h.format===c.Tilemap.TILED_JSON)return this.parseTiledJSON(h.data)}else console.warn("Phaser.TilemapParser.parse - No map data found for key "+b)},parseCSV:function(a,b,d,e){var f=this.getEmptyData();b=b.trim();for(var g=[],h=b.split("\n"),i=h.length,j=0,k=0;kk;k+=4)j[k/4]=(h.charCodeAt(k)|h.charCodeAt(k+1)<<8|h.charCodeAt(k+2)<<16|h.charCodeAt(k+3)<<24)>>>0;g.data=j,delete g.encoding}else if(g.compression){console.warn("TilemapParser.parseTiledJSON - Layer compression is unsupported, skipping layer '"+g.name+"'");continue}var l={name:g.name,x:g.x,y:g.y,width:g.width,height:g.height,widthInPixels:g.width*a.tilewidth,heightInPixels:g.height*a.tileheight,alpha:g.opacity,visible:g.visible,properties:{},indexes:[],callbacks:[],bodies:[]};g.properties&&(l.properties=g.properties);for(var m,n,o,p,q=0,r=[],s=[],t=0,i=g.data.length;i>t;t++){if(m=0,n=!1,p=g.data[t],p>536870912)switch(o=0,p>2147483648&&(p-=2147483648,o+=4),p>1073741824&&(p-=1073741824,o+=2),p>536870912&&(p-=536870912,o+=1),o){case 5:m=Math.PI/2;break;case 6:m=Math.PI;break;case 3:m=3*Math.PI/2;break;case 4:m=0,n=!0;break;case 7:m=Math.PI/2,n=!0;break;case 2:m=Math.PI,n=!0;break;case 1:m=3*Math.PI/2,n=!0}p>0?(r.push(new c.Tile(l,p,q,s.length,a.tilewidth,a.tileheight)),r[r.length-1].rotation=m,r[r.length-1].flipped=n):c.TilemapParser.INSERT_NULL?r.push(null):r.push(new c.Tile(l,-1,q,s.length,a.tilewidth,a.tileheight)),q++,q===g.width&&(s.push(r),q=0,r=[])}l.data=s,e.push(l)}d.layers=e;for(var u=[],f=0;fG;G++)if(F.objects[G].gid){var H={gid:F.objects[G].gid,name:F.objects[G].name,type:F.objects[G].hasOwnProperty("type")?F.objects[G].type:"",x:F.objects[G].x,y:F.objects[G].y,visible:F.objects[G].visible,properties:F.objects[G].properties};F.objects[G].rotation&&(H.rotation=F.objects[G].rotation),D[F.name].push(H)}else if(F.objects[G].polyline){var H={name:F.objects[G].name,type:F.objects[G].type,x:F.objects[G].x,y:F.objects[G].y,width:F.objects[G].width,height:F.objects[G].height,visible:F.objects[G].visible,properties:F.objects[G].properties};F.objects[G].rotation&&(H.rotation=F.objects[G].rotation),H.polyline=[];for(var I=0;I=c)&&(c=32),(void 0===d||0>=d)&&(d=32),void 0===e&&(e=0),void 0===f&&(f=0),this.name=a,this.firstgid=0|b,this.tileWidth=0|c,this.tileHeight=0|d,this.tileMargin=0|e,this.tileSpacing=0|f,this.properties=g||{},this.image=null,this.rows=0,this.columns=0,this.total=0,this.drawCoords=[]},c.Tileset.prototype={draw:function(a,b,c,d){var e=d-this.firstgid<<1;e>=0&&e+1=this.firstgid&&a=this._timer)if(this._timer=this.game.time.time+this.frequency*this.game.time.slowMotion,0!==this._flowTotal)if(this._flowQuantity>0){for(var a=0;a=this._flowTotal)){this.on=!1;break}}else this.emitParticle()&&(this._counter++,-1!==this._flowTotal&&this._counter>=this._flowTotal&&(this.on=!1));else this.emitParticle()&&(this._counter++,this._quantity>0&&this._counter>=this._quantity&&(this.on=!1));for(var a=this.children.length;a--;)this.children[a].exists&&this.children[a].update()},c.Particles.Arcade.Emitter.prototype.makeParticles=function(a,b,c,d,e){void 0===b&&(b=0),void 0===c&&(c=this.maxParticles),void 0===d&&(d=!1),void 0===e&&(e=!1);var f,g=0,h=a,i=b;for(this._frames=b,c>this.maxParticles&&(this.maxParticles=c);c>g;)Array.isArray(a)&&(h=this.game.rnd.pick(a)),Array.isArray(b)&&(i=this.game.rnd.pick(b)),f=new this.particleClass(this.game,0,0,h,i),this.game.physics.arcade.enable(f,!1),d?(f.body.checkCollision.any=!0,f.body.checkCollision.none=!1):f.body.checkCollision.none=!0,f.body.collideWorldBounds=e,f.body.skipQuadTree=!0,f.exists=!1,f.visible=!1,f.anchor.copyFrom(this.particleAnchor),this.add(f),g++;return this},c.Particles.Arcade.Emitter.prototype.kill=function(){return this.on=!1,this.alive=!1,this.exists=!1,this},c.Particles.Arcade.Emitter.prototype.revive=function(){return this.alive=!0,this.exists=!0,this},c.Particles.Arcade.Emitter.prototype.explode=function(a,b){return this._flowTotal=0,this.start(!0,a,0,b,!1),this},c.Particles.Arcade.Emitter.prototype.flow=function(a,b,c,d,e){return(void 0===c||0===c)&&(c=1),void 0===d&&(d=-1),void 0===e&&(e=!0),c>this.maxParticles&&(c=this.maxParticles),this._counter=0,this._flowQuantity=c,this._flowTotal=d,e?(this.start(!0,a,b,c),this._counter+=c,this.on=!0,this._timer=this.game.time.time+b*this.game.time.slowMotion):this.start(!1,a,b,c),this},c.Particles.Arcade.Emitter.prototype.start=function(a,b,c,d,e){if(void 0===a&&(a=!0),void 0===b&&(b=0),(void 0===c||null===c)&&(c=250),void 0===d&&(d=0),void 0===e&&(e=!1),d>this.maxParticles&&(d=this.maxParticles),this.revive(),this.visible=!0,this.lifespan=b,this.frequency=c,a||e)for(var f=0;d>f;f++)this.emitParticle();else this.on=!0,this._quantity=d,this._counter=0,this._timer=this.game.time.time+c*this.game.time.slowMotion;return this},c.Particles.Arcade.Emitter.prototype.emitParticle=function(a,b,c,d){void 0===a&&(a=null),void 0===b&&(b=null);var e=this.getFirstExists(!1);if(null===e)return!1;var f=this.game.rnd;void 0!==c&&void 0!==d?e.loadTexture(c,d):void 0!==c&&e.loadTexture(c);var g=this.emitX,h=this.emitY;null!==a?g=a:this.width>1&&(g=f.between(this.left,this.right)),null!==b?h=b:this.height>1&&(h=f.between(this.top,this.bottom)),e.reset(g,h),e.angle=0,e.lifespan=this.lifespan,this.particleBringToTop?this.bringToTop(e):this.particleSendToBack&&this.sendToBack(e),this.autoScale?e.setScaleData(this.scaleData):1!==this.minParticleScale||1!==this.maxParticleScale?e.scale.set(f.realInRange(this.minParticleScale,this.maxParticleScale)):(this._minParticleScale.x!==this._maxParticleScale.x||this._minParticleScale.y!==this._maxParticleScale.y)&&e.scale.set(f.realInRange(this._minParticleScale.x,this._maxParticleScale.x),f.realInRange(this._minParticleScale.y,this._maxParticleScale.y)),void 0===d&&(Array.isArray(this._frames)?e.frame=this.game.rnd.pick(this._frames):e.frame=this._frames),this.autoAlpha?e.setAlphaData(this.alphaData):e.alpha=f.realInRange(this.minParticleAlpha,this.maxParticleAlpha),e.blendMode=this.blendMode;var i=e.body;return i.updateBounds(),i.bounce.copyFrom(this.bounce),i.drag.copyFrom(this.particleDrag),i.velocity.x=f.between(this.minParticleSpeed.x,this.maxParticleSpeed.x),i.velocity.y=f.between(this.minParticleSpeed.y,this.maxParticleSpeed.y),i.angularVelocity=f.between(this.minRotation,this.maxRotation),i.gravity.y=this.gravity,i.angularDrag=this.angularDrag,e.onEmit(),!0},c.Particles.Arcade.Emitter.prototype.destroy=function(){this.game.particles.remove(this),c.Group.prototype.destroy.call(this,!0,!1)},c.Particles.Arcade.Emitter.prototype.setSize=function(a,b){return this.area.width=a,this.area.height=b,this},c.Particles.Arcade.Emitter.prototype.setXSpeed=function(a,b){return a=a||0,b=b||0,this.minParticleSpeed.x=a,this.maxParticleSpeed.x=b,this},c.Particles.Arcade.Emitter.prototype.setYSpeed=function(a,b){return a=a||0,b=b||0,this.minParticleSpeed.y=a,this.maxParticleSpeed.y=b,this},c.Particles.Arcade.Emitter.prototype.setRotation=function(a,b){return a=a||0,b=b||0,this.minRotation=a,this.maxRotation=b,this},c.Particles.Arcade.Emitter.prototype.setAlpha=function(a,b,d,e,f){if(void 0===a&&(a=1),void 0===b&&(b=1),void 0===d&&(d=0),void 0===e&&(e=c.Easing.Linear.None),void 0===f&&(f=!1),this.minParticleAlpha=a,this.maxParticleAlpha=b,this.autoAlpha=!1,d>0&&a!==b){var g={v:a},h=this.game.make.tween(g).to({v:b},d,e);h.yoyo(f),this.alphaData=h.generateData(60),this.alphaData.reverse(),this.autoAlpha=!0}return this},c.Particles.Arcade.Emitter.prototype.setScale=function(a,b,d,e,f,g,h){if(void 0===a&&(a=1),void 0===b&&(b=1),void 0===d&&(d=1),void 0===e&&(e=1),void 0===f&&(f=0),void 0===g&&(g=c.Easing.Linear.None),void 0===h&&(h=!1),this.minParticleScale=1,this.maxParticleScale=1,this._minParticleScale.set(a,d),this._maxParticleScale.set(b,e),this.autoScale=!1,f>0&&(a!==b||d!==e)){var i={x:a,y:d},j=this.game.make.tween(i).to({x:b,y:e},f,g);j.yoyo(h),this.scaleData=j.generateData(60),this.scaleData.reverse(),this.autoScale=!0}return this},c.Particles.Arcade.Emitter.prototype.at=function(a){return a.center?(this.emitX=a.center.x,this.emitY=a.center.y):(this.emitX=a.world.x+a.anchor.x*a.width,this.emitY=a.world.y+a.anchor.y*a.height),this},Object.defineProperty(c.Particles.Arcade.Emitter.prototype,"width",{get:function(){return this.area.width},set:function(a){this.area.width=a}}),Object.defineProperty(c.Particles.Arcade.Emitter.prototype,"height",{get:function(){return this.area.height},set:function(a){this.area.height=a}}),Object.defineProperty(c.Particles.Arcade.Emitter.prototype,"x",{get:function(){return this.emitX},set:function(a){this.emitX=a}}),Object.defineProperty(c.Particles.Arcade.Emitter.prototype,"y",{get:function(){return this.emitY},set:function(a){this.emitY=a}}),Object.defineProperty(c.Particles.Arcade.Emitter.prototype,"left",{get:function(){return Math.floor(this.x-this.area.width/2)}}),Object.defineProperty(c.Particles.Arcade.Emitter.prototype,"right",{get:function(){return Math.floor(this.x+this.area.width/2)}}),Object.defineProperty(c.Particles.Arcade.Emitter.prototype,"top",{get:function(){return Math.floor(this.y-this.area.height/2)}}),Object.defineProperty(c.Particles.Arcade.Emitter.prototype,"bottom",{get:function(){return Math.floor(this.y+this.area.height/2)}}),c.Weapon=function(a,b){c.Plugin.call(this,a,b),this.bullets=null,this.autoExpandBulletsGroup=!1,this.autofire=!1,this.shots=0,this.fireLimit=0,this.fireRate=100,this.fireRateVariance=0,this.fireFrom=new c.Rectangle(0,0,1,1),this.fireAngle=c.ANGLE_UP,this.bulletInheritSpriteSpeed=!1,this.bulletAnimation="",this.bulletFrameRandom=!1,this.bulletFrameCycle=!1,this.bulletWorldWrap=!1,this.bulletWorldWrapPadding=0,this.bulletAngleOffset=0,this.bulletAngleVariance=0,this.bulletSpeed=200,this.bulletSpeedVariance=0,this.bulletLifespan=0,this.bulletKillDistance=0,this.bulletGravity=new c.Point(0,0),this.bulletRotateToVelocity=!1,this.bulletKey="",this.bulletFrame="",this._bulletClass=c.Bullet,this._bulletCollideWorldBounds=!1,this._bulletKillType=c.Weapon.KILL_WORLD_BOUNDS,this._data={customBody:!1,width:0,height:0,offsetX:0,offsetY:0},this.bounds=new c.Rectangle,this.bulletBounds=a.world.bounds,this.bulletFrames=[],this.bulletFrameIndex=0,this.anims={},this.onFire=new c.Signal,this.onKill=new c.Signal,this.onFireLimit=new c.Signal,this.trackedSprite=null,this.trackedPointer=null,this.trackRotation=!1,this.trackOffset=new c.Point,this._nextFire=0},c.Weapon.prototype=Object.create(c.Plugin.prototype),c.Weapon.prototype.constructor=c.Weapon,c.Weapon.KILL_NEVER=0,c.Weapon.KILL_LIFESPAN=1,c.Weapon.KILL_DISTANCE=2,c.Weapon.KILL_WEAPON_BOUNDS=3,c.Weapon.KILL_CAMERA_BOUNDS=4,c.Weapon.KILL_WORLD_BOUNDS=5,c.Weapon.KILL_STATIC_BOUNDS=6,c.Weapon.prototype.createBullets=function(a,b,d,e){return void 0===a&&(a=1),void 0===e&&(e=this.game.world),this.bullets||(this.bullets=this.game.add.physicsGroup(c.Physics.ARCADE,e),this.bullets.classType=this._bulletClass),0!==a&&(-1===a&&(this.autoExpandBulletsGroup=!0,a=1),this.bullets.createMultiple(a,b,d),this.bullets.setAll("data.bulletManager",this),this.bulletKey=b,this.bulletFrame=d),this},c.Weapon.prototype.forEach=function(a,b){return this.bullets.forEachExists(a,b,arguments),this},c.Weapon.prototype.pauseAll=function(){return this.bullets.setAll("body.enable",!1),this},c.Weapon.prototype.resumeAll=function(){return this.bullets.setAll("body.enable",!0),this},c.Weapon.prototype.killAll=function(){return this.bullets.callAllExists("kill",!0),this.bullets.setAll("body.enable",!0),this},c.Weapon.prototype.resetShots=function(a){return this.shots=0,void 0!==a&&(this.fireLimit=a),this},c.Weapon.prototype.destroy=function(){this.parent.remove(this,!1),this.bullets.destroy(),this.game=null,this.parent=null,this.active=!1,this.visible=!1},c.Weapon.prototype.update=function(){this._bulletKillType===c.Weapon.KILL_WEAPON_BOUNDS&&(this.trackedSprite?(this.trackedSprite.updateTransform(),this.bounds.centerOn(this.trackedSprite.worldPosition.x,this.trackedSprite.worldPosition.y)):this.trackedPointer&&this.bounds.centerOn(this.trackedPointer.worldX,this.trackedPointer.worldY)),this.autofire&&this.game.time.now0&&this.shots===this.fireLimit)return!1;var e=this.bulletSpeed;0!==this.bulletSpeedVariance&&(e+=c.Math.between(-this.bulletSpeedVariance,this.bulletSpeedVariance)),a?this.fireFrom.width>1?this.fireFrom.centerOn(a.x,a.y):(this.fireFrom.x=a.x,this.fireFrom.y=a.y):this.trackedSprite?(this.fireFrom.width>1?this.fireFrom.centerOn(this.trackedSprite.world.x+this.trackOffset.x,this.trackedSprite.world.y+this.trackOffset.y):(this.fireFrom.x=this.trackedSprite.world.x+this.trackOffset.x,this.fireFrom.y=this.trackedSprite.world.y+this.trackOffset.y),this.bulletInheritSpriteSpeed&&(e+=this.trackedSprite.body.speed)):this.trackedPointer&&(this.fireFrom.width>1?this.fireFrom.centerOn(this.trackedPointer.world.x+this.trackOffset.x,this.trackedPointer.world.y+this.trackOffset.y):(this.fireFrom.x=this.trackedPointer.world.x+this.trackOffset.x,this.fireFrom.y=this.trackedPointer.world.y+this.trackOffset.y));var f=this.fireFrom.width>1?this.fireFrom.randomX:this.fireFrom.x,g=this.fireFrom.height>1?this.fireFrom.randomY:this.fireFrom.y,h=this.trackRotation?this.trackedSprite.angle:this.fireAngle;void 0!==b&&void 0!==d&&(h=this.game.math.radToDeg(Math.atan2(d-g,b-f))),0!==this.bulletAngleVariance&&(h+=c.Math.between(-this.bulletAngleVariance,this.bulletAngleVariance));var i=0,j=0;0===h||180===h?i=Math.cos(this.game.math.degToRad(h))*e:90===h||270===h?j=Math.sin(this.game.math.degToRad(h))*e:(i=Math.cos(this.game.math.degToRad(h))*e,j=Math.sin(this.game.math.degToRad(h))*e);var k=null;if(this.autoExpandBulletsGroup?(k=this.bullets.getFirstExists(!1,!0,f,g,this.bulletKey,this.bulletFrame),k.data.bulletManager=this):k=this.bullets.getFirstExists(!1),k){if(k.reset(f,g),k.data.fromX=f,k.data.fromY=g,k.data.killType=this.bulletKillType,k.data.killDistance=this.bulletKillDistance,k.data.rotateToVelocity=this.bulletRotateToVelocity,this.bulletKillType===c.Weapon.KILL_LIFESPAN&&(k.lifespan=this.bulletLifespan),k.angle=h+this.bulletAngleOffset,""!==this.bulletAnimation){if(null===k.animations.getAnimation(this.bulletAnimation)){var l=this.anims[this.bulletAnimation];k.animations.add(l.name,l.frames,l.frameRate,l.loop,l.useNumericIndex)}k.animations.play(this.bulletAnimation)}else this.bulletFrameCycle?(k.frame=this.bulletFrames[this.bulletFrameIndex],this.bulletFrameIndex++,this.bulletFrameIndex>=this.bulletFrames.length&&(this.bulletFrameIndex=0)):this.bulletFrameRandom&&(k.frame=this.bulletFrames[Math.floor(Math.random()*this.bulletFrames.length)]);k.data.bodyDirty&&(this._data.customBody&&k.body.setSize(this._data.width,this._data.height,this._data.offsetX,this._data.offsetY),k.body.collideWorldBounds=this.bulletCollideWorldBounds,k.data.bodyDirty=!1),k.body.velocity.set(i,j), -k.body.gravity.set(this.bulletGravity.x,this.bulletGravity.y),this._nextFire=this.game.time.now+this.fireRate,this.shots++,this.onFire.dispatch(k,this,e),this.fireLimit>0&&this.shots===this.fireLimit&&this.onFireLimit.dispatch(this,this.fireLimit)}},c.Weapon.prototype.fireAtPointer=function(a){return void 0===a&&(a=this.game.input.activePointer),this.fire(null,a.worldX,a.worldY)},c.Weapon.prototype.fireAtSprite=function(a){return this.fire(null,a.world.x,a.world.y)},c.Weapon.prototype.fireAtXY=function(a,b){return this.fire(null,a,b)},c.Weapon.prototype.setBulletBodyOffset=function(a,b,c,d){return void 0===c&&(c=0),void 0===d&&(d=0),this._data.customBody=!0,this._data.width=a,this._data.height=b,this._data.offsetX=c,this._data.offsetY=d,this.bullets.callAll("body.setSize","body",a,b,c,d),this.bullets.setAll("data.bodyDirty",!1),this},c.Weapon.prototype.setBulletFrames=function(a,b,d,e){return void 0===d&&(d=!0),void 0===e&&(e=!1),this.bulletFrames=c.ArrayUtils.numberArray(a,b),this.bulletFrameIndex=0,this.bulletFrameCycle=d,this.bulletFrameRandom=e,this},c.Weapon.prototype.addBulletAnimation=function(a,b,c,d,e){return this.anims[a]={name:a,frames:b,frameRate:c,loop:d,useNumericIndex:e},this.bullets.callAll("animations.add","animations",a,b,c,d,e),this.bulletAnimation=a,this},c.Weapon.prototype.debug=function(a,b,c){void 0===a&&(a=16),void 0===b&&(b=32),void 0===c&&(c=!1),this.game.debug.text("Weapon Plugin",a,b),this.game.debug.text("Bullets Alive: "+this.bullets.total+" - Total: "+this.bullets.length,a,b+24),c&&this.bullets.forEachExists(this.game.debug.body,this.game.debug,"rgba(255, 0, 255, 0.8)")},Object.defineProperty(c.Weapon.prototype,"bulletClass",{get:function(){return this._bulletClass},set:function(a){this._bulletClass=a,this.bullets.classType=this._bulletClass}}),Object.defineProperty(c.Weapon.prototype,"bulletKillType",{get:function(){return this._bulletKillType},set:function(a){switch(a){case c.Weapon.KILL_STATIC_BOUNDS:case c.Weapon.KILL_WEAPON_BOUNDS:this.bulletBounds=this.bounds;break;case c.Weapon.KILL_CAMERA_BOUNDS:this.bulletBounds=this.game.camera.view;break;case c.Weapon.KILL_WORLD_BOUNDS:this.bulletBounds=this.game.world.bounds}this._bulletKillType=a}}),Object.defineProperty(c.Weapon.prototype,"bulletCollideWorldBounds",{get:function(){return this._bulletCollideWorldBounds},set:function(a){this._bulletCollideWorldBounds=a,this.bullets.setAll("body.collideWorldBounds",a),this.bullets.setAll("data.bodyDirty",!1)}}),Object.defineProperty(c.Weapon.prototype,"x",{get:function(){return this.fireFrom.x},set:function(a){this.fireFrom.x=a}}),Object.defineProperty(c.Weapon.prototype,"y",{get:function(){return this.fireFrom.y},set:function(a){this.fireFrom.y=a}}),c.Bullet=function(a,b,d,e,f){c.Sprite.call(this,a,b,d,e,f),this.anchor.set(.5),this.data={bulletManager:null,fromX:0,fromY:0,bodyDirty:!0,rotateToVelocity:!1,killType:0,killDistance:0}},c.Bullet.prototype=Object.create(c.Sprite.prototype),c.Bullet.prototype.constructor=c.Bullet,c.Bullet.prototype.kill=function(){return this.alive=!1,this.exists=!1,this.visible=!1,this.data.bulletManager.onKill.dispatch(this),this},c.Bullet.prototype.update=function(){this.exists&&(this.data.killType>c.Weapon.KILL_LIFESPAN&&(this.data.killType===c.Weapon.KILL_DISTANCE?this.game.physics.arcade.distanceToXY(this,this.data.fromX,this.data.fromY,!0)>this.data.killDistance&&this.kill():this.data.bulletManager.bulletBounds.intersects(this)||this.kill()),this.data.rotateToVelocity&&(this.rotation=Math.atan2(this.body.velocity.y,this.body.velocity.x)),this.data.bulletManager.bulletWorldWrap&&this.game.world.wrap(this,this.data.bulletManager.bulletWorldWrapPadding))},c.Video=function(a,b,d){if(void 0===b&&(b=null),void 0===d&&(d=null),this.game=a,this.key=b,this.width=0,this.height=0,this.type=c.VIDEO,this.disableTextureUpload=!1,this.touchLocked=!1,this.onPlay=new c.Signal,this.onChangeSource=new c.Signal,this.onComplete=new c.Signal,this.onAccess=new c.Signal,this.onError=new c.Signal,this.onTimeout=new c.Signal,this.timeout=15e3,this._timeOutID=null,this.video=null,this.videoStream=null,this.isStreaming=!1,this.retryLimit=20,this.retry=0,this.retryInterval=500,this._retryID=null,this._codeMuted=!1,this._muted=!1,this._codePaused=!1,this._paused=!1,this._pending=!1,this._autoplay=!1,this._endCallback=null,this._playCallback=null,b&&this.game.cache.checkVideoKey(b)){var e=this.game.cache.getVideo(b);e.isBlob?this.createVideoFromBlob(e.data):this.video=e.data,this.width=this.video.videoWidth,this.height=this.video.videoHeight}else d&&this.createVideoFromURL(d,!1);this.video&&!d?(this.baseTexture=new PIXI.BaseTexture(this.video),this.baseTexture.forceLoaded(this.width,this.height)):(this.baseTexture=new PIXI.BaseTexture(PIXI.TextureCache.__default.baseTexture.source),this.baseTexture.forceLoaded(this.width,this.height)),this.texture=new PIXI.Texture(this.baseTexture),this.textureFrame=new c.Frame(0,0,0,this.width,this.height,"video"),this.texture.setFrame(this.textureFrame),this.texture.valid=!1,null!==b&&this.video&&(this.texture.valid=this.video.canplay),this.snapshot=null,c.BitmapData&&(this.snapshot=new c.BitmapData(this.game,"",this.width,this.height)),!this.game.device.cocoonJS&&(this.game.device.iOS||this.game.device.android)||window.PhaserGlobal&&window.PhaserGlobal.fakeiOSTouchLock?this.setTouchLock():e&&(e.locked=!1)},c.Video.prototype={connectToMediaStream:function(a,b){return a&&b&&(this.video=a,this.videoStream=b,this.isStreaming=!0,this.baseTexture.source=this.video,this.updateTexture(null,this.video.videoWidth,this.video.videoHeight),this.onAccess.dispatch(this)),this},startMediaStream:function(a,b,c){if(void 0===a&&(a=!1),void 0===b&&(b=null),void 0===c&&(c=null),!this.game.device.getUserMedia)return this.onError.dispatch(this,"No getUserMedia"),!1;null!==this.videoStream&&(this.videoStream.active?this.videoStream.active=!1:this.videoStream.stop()),this.removeVideoElement(),this.video=document.createElement("video"),this.video.setAttribute("autoplay","autoplay"),null!==b&&(this.video.width=b),null!==c&&(this.video.height=c),this._timeOutID=window.setTimeout(this.getUserMediaTimeout.bind(this),this.timeout);try{navigator.getUserMedia({audio:a,video:!0},this.getUserMediaSuccess.bind(this),this.getUserMediaError.bind(this))}catch(d){this.getUserMediaError(d)}return this},getUserMediaTimeout:function(){clearTimeout(this._timeOutID),this.onTimeout.dispatch(this)},getUserMediaError:function(a){clearTimeout(this._timeOutID),this.onError.dispatch(this,a)},getUserMediaSuccess:function(a){clearTimeout(this._timeOutID),this.videoStream=a,void 0!==this.video.mozSrcObject?this.video.mozSrcObject=a:this.video.src=window.URL&&window.URL.createObjectURL(a)||a;var b=this;this.video.onloadeddata=function(){function a(){if(c>0)if(b.video.videoWidth>0){var d=b.video.videoWidth,e=b.video.videoHeight;isNaN(b.video.videoHeight)&&(e=d/(4/3)),b.video.play(),b.isStreaming=!0,b.baseTexture.source=b.video,b.updateTexture(null,d,e),b.onAccess.dispatch(b)}else window.setTimeout(a,500);else console.warn("Unable to connect to video stream. Webcam error?");c--}var c=10;a()}},createVideoFromBlob:function(a){var b=this;return this.video=document.createElement("video"),this.video.controls=!1,this.video.setAttribute("autoplay","autoplay"),this.video.addEventListener("loadeddata",function(a){b.updateTexture(a)},!0),this.video.src=window.URL.createObjectURL(a),this.video.canplay=!0,this},createVideoFromURL:function(a,b){return void 0===b&&(b=!1),this.texture&&(this.texture.valid=!1),this.video=document.createElement("video"),this.video.controls=!1,b&&this.video.setAttribute("autoplay","autoplay"),this.video.src=a,this.video.canplay=!0,this.video.load(),this.retry=this.retryLimit,this._retryID=window.setTimeout(this.checkVideoProgress.bind(this),this.retryInterval),this.key=a,this},updateTexture:function(a,b,c){var d=!1;(void 0===b||null===b)&&(b=this.video.videoWidth,d=!0),(void 0===c||null===c)&&(c=this.video.videoHeight),this.width=b,this.height=c,this.baseTexture.source!==this.video&&(this.baseTexture.source=this.video),this.baseTexture.forceLoaded(b,c),this.texture.frame.resize(b,c),this.texture.width=b,this.texture.height=c,this.texture.valid=!0,this.snapshot&&this.snapshot.resize(b,c),d&&null!==this.key&&(this.onChangeSource.dispatch(this,b,c),this._autoplay&&(this.video.play(),this.onPlay.dispatch(this,this.loop,this.playbackRate)))},complete:function(){this.onComplete.dispatch(this)},play:function(a,b){return void 0===a&&(a=!1),void 0===b&&(b=1),this.game.sound.onMute&&(this.game.sound.onMute.add(this.setMute,this),this.game.sound.onUnMute.add(this.unsetMute,this),this.game.sound.mute&&this.setMute()),this.game.onPause.add(this.setPause,this),this.game.onResume.add(this.setResume,this),this._endCallback=this.complete.bind(this),this.video.addEventListener("ended",this._endCallback,!0),this.video.addEventListener("webkitendfullscreen",this._endCallback,!0),a?this.video.loop="loop":this.video.loop="",this.video.playbackRate=b,this.touchLocked?this._pending=!0:(this._pending=!1,null!==this.key&&(4!==this.video.readyState?(this.retry=this.retryLimit,this._retryID=window.setTimeout(this.checkVideoProgress.bind(this),this.retryInterval)):(this._playCallback=this.playHandler.bind(this),this.video.addEventListener("playing",this._playCallback,!0))),this.video.play(),this.onPlay.dispatch(this,a,b)),this},playHandler:function(){this.video.removeEventListener("playing",this._playCallback,!0),this.updateTexture()},stop:function(){return this.game.sound.onMute&&(this.game.sound.onMute.remove(this.setMute,this),this.game.sound.onUnMute.remove(this.unsetMute,this)),this.game.onPause.remove(this.setPause,this),this.game.onResume.remove(this.setResume,this),this.isStreaming?(this.video.mozSrcObject?(this.video.mozSrcObject.stop(),this.video.src=null):(this.video.src="",this.videoStream.active?this.videoStream.active=!1:this.videoStream.getTracks?this.videoStream.getTracks().forEach(function(a){a.stop()}):this.videoStream.stop()),this.videoStream=null,this.isStreaming=!1):(this.video.removeEventListener("ended",this._endCallback,!0),this.video.removeEventListener("webkitendfullscreen",this._endCallback,!0),this.video.removeEventListener("playing",this._playCallback,!0),this.touchLocked?this._pending=!1:this.video.pause()),this},add:function(a){if(Array.isArray(a))for(var b=0;b0?this._retryID=window.setTimeout(this.checkVideoProgress.bind(this),this.retryInterval):console.warn("Phaser.Video: Unable to start downloading video in time",this.isStreaming))},setTouchLock:function(){this.game.input.touch.addTouchLockCallback(this.unlock,this),this.touchLocked=!0},unlock:function(){if(this.touchLocked=!1,this.video.play(),this.onPlay.dispatch(this,this.loop,this.playbackRate),this.key){var a=this.game.cache.getVideo(this.key);a&&!a.isBlob&&(a.locked=!1)}return!0},grab:function(a,b,c){return void 0===a&&(a=!1),void 0===b&&(b=1),void 0===c&&(c=null),null===this.snapshot?void console.warn("Video.grab cannot run because Phaser.BitmapData is unavailable"):(a&&this.snapshot.cls(),this.snapshot.copy(this.video,0,0,this.width,this.height,0,0,this.width,this.height,0,0,0,1,1,b,c),this.snapshot)},removeVideoElement:function(){if(this.video){for(this.video.parentNode&&this.video.parentNode.removeChild(this.video);this.video.hasChildNodes();)this.video.removeChild(this.video.firstChild);this.video.removeAttribute("autoplay"),this.video.removeAttribute("src"),this.video=null}},destroy:function(){this.stop(),this.removeVideoElement(),this.touchLocked&&this.game.input.touch.removeTouchLockCallback(this.unlock,this),this._retryID&&window.clearTimeout(this._retryID)}},Object.defineProperty(c.Video.prototype,"currentTime",{get:function(){return this.video?this.video.currentTime:0},set:function(a){this.video.currentTime=a}}),Object.defineProperty(c.Video.prototype,"duration",{get:function(){return this.video?this.video.duration:0}}),Object.defineProperty(c.Video.prototype,"progress",{get:function(){return this.video?this.video.currentTime/this.video.duration:0}}),Object.defineProperty(c.Video.prototype,"mute",{get:function(){return this._muted},set:function(a){if(a=a||null){if(this._muted)return;this._codeMuted=!0,this.setMute()}else{if(!this._muted)return;this._codeMuted=!1,this.unsetMute()}}}),Object.defineProperty(c.Video.prototype,"paused",{get:function(){return this._paused},set:function(a){if(a=a||null,!this.touchLocked)if(a){if(this._paused)return;this._codePaused=!0,this.setPause()}else{if(!this._paused)return;this._codePaused=!1,this.setResume()}}}),Object.defineProperty(c.Video.prototype,"volume",{get:function(){return this.video?this.video.volume:1},set:function(a){0>a?a=0:a>1&&(a=1),this.video&&(this.video.volume=a)}}),Object.defineProperty(c.Video.prototype,"playbackRate",{get:function(){return this.video?this.video.playbackRate:1},set:function(a){this.video&&(this.video.playbackRate=a)}}),Object.defineProperty(c.Video.prototype,"loop",{get:function(){return this.video?this.video.loop:!1},set:function(a){a&&this.video?this.video.loop="loop":this.video&&(this.video.loop="")}}),Object.defineProperty(c.Video.prototype,"playing",{get:function(){return!(this.video.paused&&this.video.ended)}}),c.Video.prototype.constructor=c.Video,void 0===PIXI.blendModes&&(PIXI.blendModes=c.blendModes),void 0===PIXI.scaleModes&&(PIXI.scaleModes=c.scaleModes),void 0===PIXI.Texture.emptyTexture&&(PIXI.Texture.emptyTexture=new PIXI.Texture(new PIXI.BaseTexture)),void 0===PIXI.DisplayObject._tempMatrix&&(PIXI.DisplayObject._tempMatrix=new PIXI.Matrix),void 0===PIXI.RenderTexture.tempMatrix&&(PIXI.RenderTexture.tempMatrix=new PIXI.Matrix),PIXI.Graphics&&void 0===PIXI.Graphics.POLY&&(PIXI.Graphics.POLY=c.POLYGON,PIXI.Graphics.RECT=c.RECTANGLE,PIXI.Graphics.CIRC=c.CIRCLE,PIXI.Graphics.ELIP=c.ELLIPSE,PIXI.Graphics.RREC=c.ROUNDEDRECTANGLE),PIXI.TextureSilentFail=!0,"undefined"!=typeof exports?("undefined"!=typeof module&&module.exports&&(exports=module.exports=c),exports.Phaser=c):"undefined"!=typeof define&&define.amd?define("Phaser",function(){return b.Phaser=c}()):b.Phaser=c,c}.call(this); +!function(a){if("object"==typeof exports)module.exports=a();else if("function"==typeof define,1){var b;"undefined"!=typeof window?b=window:"undefined"!=typeof global?b=global:"undefined"!=typeof self&&(b=self),b.p2=a()}else define(a)}(function(){return function a(b,c,d){function e(g,h){if(!c[g]){if(!b[g]){var i="function"==typeof require&&require;if(!h&&i)return i(g,!0);if(f)return f(g,!0);throw new Error("Cannot find module '"+g+"'")}var j=c[g]={exports:{}};b[g][0].call(j.exports,function(a){var c=b[g][1][a];return e(c?c:a)},j,j.exports,a,b,c,d)}return c[g].exports}for(var f="function"==typeof require&&require,g=0;g=0&&1>=i&&j>=0&&1>=j}},{"./Scalar":4}],2:[function(a,b,c){function d(){}b.exports=d,d.area=function(a,b,c){return(b[0]-a[0])*(c[1]-a[1])-(c[0]-a[0])*(b[1]-a[1])},d.left=function(a,b,c){return d.area(a,b,c)>0},d.leftOn=function(a,b,c){return d.area(a,b,c)>=0},d.right=function(a,b,c){return d.area(a,b,c)<0},d.rightOn=function(a,b,c){return d.area(a,b,c)<=0};var e=[],f=[];d.collinear=function(a,b,c,g){if(g){var h=e,i=f;h[0]=b[0]-a[0],h[1]=b[1]-a[1],i[0]=c[0]-b[0],i[1]=c[1]-b[1];var j=h[0]*i[0]+h[1]*i[1],k=Math.sqrt(h[0]*h[0]+h[1]*h[1]),l=Math.sqrt(i[0]*i[0]+i[1]*i[1]),m=Math.acos(j/(k*l));return g>m}return 0==d.area(a,b,c)},d.sqdist=function(a,b){var c=b[0]-a[0],d=b[1]-a[1];return c*c+d*d}},{}],3:[function(a,b,c){function d(){this.vertices=[]}function e(a,b,c,d,e){e=e||0;var f=b[1]-a[1],g=a[0]-b[0],i=f*a[0]+g*a[1],j=d[1]-c[1],k=c[0]-d[0],l=j*c[0]+k*c[1],m=f*k-j*g;return h.eq(m,0,e)?[0,0]:[(k*i-g*l)/m,(f*l-j*i)/m]}var f=a("./Line"),g=a("./Point"),h=a("./Scalar");b.exports=d,d.prototype.at=function(a){var b=this.vertices,c=b.length;return b[0>a?a%c+c:a%c]},d.prototype.first=function(){return this.vertices[0]},d.prototype.last=function(){return this.vertices[this.vertices.length-1]},d.prototype.clear=function(){this.vertices.length=0},d.prototype.append=function(a,b,c){if("undefined"==typeof b)throw new Error("From is not given!");if("undefined"==typeof c)throw new Error("To is not given!");if(b>c-1)throw new Error("lol1");if(c>a.vertices.length)throw new Error("lol2");if(0>b)throw new Error("lol3");for(var d=b;c>d;d++)this.vertices.push(a.vertices[d])},d.prototype.makeCCW=function(){for(var a=0,b=this.vertices,c=1;cb[a][0])&&(a=c);g.left(this.at(a-1),this.at(a),this.at(a+1))||this.reverse()},d.prototype.reverse=function(){for(var a=[],b=0,c=this.vertices.length;b!==c;b++)a.push(this.vertices.pop());this.vertices=a},d.prototype.isReflex=function(a){return g.right(this.at(a-1),this.at(a),this.at(a+1))};var i=[],j=[];d.prototype.canSee=function(a,b){var c,d,e=i,h=j;if(g.leftOn(this.at(a+1),this.at(a),this.at(b))&&g.rightOn(this.at(a-1),this.at(a),this.at(b)))return!1;d=g.sqdist(this.at(a),this.at(b));for(var k=0;k!==this.vertices.length;++k)if((k+1)%this.vertices.length!==a&&k!==a&&g.leftOn(this.at(a),this.at(b),this.at(k+1))&&g.rightOn(this.at(a),this.at(b),this.at(k))&&(e[0]=this.at(a),e[1]=this.at(b),h[0]=this.at(k),h[1]=this.at(k+1),c=f.lineInt(e,h),g.sqdist(this.at(a),c)a)for(var f=a;b>=f;f++)e.vertices.push(this.vertices[f]);else{for(var f=0;b>=f;f++)e.vertices.push(this.vertices[f]);for(var f=a;f0?this.slice(a):[this]},d.prototype.slice=function(a){if(0==a.length)return[this];if(a instanceof Array&&a.length&&a[0]instanceof Array&&2==a[0].length&&a[0][0]instanceof Array){for(var b=[this],c=0;cc;c++)if(f.segmentsIntersect(a[b],a[b+1],a[c],a[c+1]))return!1;for(var b=1;bh)return console.warn("quickDecomp: max level ("+h+") reached."),a;for(var x=0;xo&&(n=o,k=l,r=y))),g.left(v.at(x+1),v.at(x),v.at(y+1))&&g.rightOn(v.at(x+1),v.at(x),v.at(y))&&(l=e(v.at(x+1),v.at(x),v.at(y),v.at(y+1)),g.left(v.at(x-1),v.at(x),l)&&(o=g.sqdist(v.vertices[x],l),m>o&&(m=o,j=l,q=y)));if(r==(q+1)%this.vertices.length)l[0]=(k[0]+j[0])/2,l[1]=(k[1]+j[1])/2,c.push(l),q>x?(t.append(v,x,q+1),t.vertices.push(l),u.vertices.push(l),0!=r&&u.append(v,r,v.vertices.length),u.append(v,0,x+1)):(0!=x&&t.append(v,x,v.vertices.length),t.append(v,0,q+1),t.vertices.push(l),u.vertices.push(l),u.append(v,r,x+1));else{if(r>q&&(q+=this.vertices.length),p=Number.MAX_VALUE,r>q)return a;for(var y=r;q>=y;++y)g.leftOn(v.at(x-1),v.at(x),v.at(y))&&g.rightOn(v.at(x+1),v.at(x),v.at(y))&&(o=g.sqdist(v.at(x),v.at(y)),p>o&&(p=o,s=y%this.vertices.length));s>x?(t.append(v,x,s+1),0!=s&&u.append(v,s,w.length),u.append(v,0,x+1)):(0!=x&&t.append(v,x,w.length),t.append(v,0,s+1),u.append(v,s,x+1))}return t.vertices.length3&&c>=0;--c)g.collinear(this.at(c-1),this.at(c),this.at(c+1),a)&&(this.vertices.splice(c%this.vertices.length,1),c--,b++);return b}},{"./Line":1,"./Point":2,"./Scalar":4}],4:[function(a,b,c){function d(){}b.exports=d,d.eq=function(a,b,c){return c=c||0,Math.abs(a-b) (http://steffe.se)",keywords:["p2.js","p2","physics","engine","2d"],main:"./src/p2.js",engines:{node:"*"},repository:{type:"git",url:"https://github.com/schteppe/p2.js.git"},bugs:{url:"https://github.com/schteppe/p2.js/issues"},licenses:[{type:"MIT"}],devDependencies:{grunt:"^0.4.5","grunt-contrib-jshint":"^0.11.2","grunt-contrib-nodeunit":"^0.4.1","grunt-contrib-uglify":"~0.4.0","grunt-contrib-watch":"~0.5.0","grunt-browserify":"~2.0.1","grunt-contrib-concat":"^0.4.0"},dependencies:{"poly-decomp":"0.1.0"}}},{}],7:[function(a,b,c){function d(a){this.lowerBound=e.create(),a&&a.lowerBound&&e.copy(this.lowerBound,a.lowerBound),this.upperBound=e.create(),a&&a.upperBound&&e.copy(this.upperBound,a.upperBound)}var e=a("../math/vec2");a("../utils/Utils");b.exports=d;var f=e.create();d.prototype.setFromPoints=function(a,b,c,d){var g=this.lowerBound,h=this.upperBound;"number"!=typeof c&&(c=0),0!==c?e.rotate(g,a[0],c):e.copy(g,a[0]),e.copy(h,g);for(var i=Math.cos(c),j=Math.sin(c),k=1;ko;o++)l[o]>h[o]&&(h[o]=l[o]),l[o]c&&(this.lowerBound[b]=c);var d=a.upperBound[b];this.upperBound[b]i?-1:h>i?-1:h}},{"../math/vec2":30,"../utils/Utils":57}],8:[function(a,b,c){function d(a){this.type=a,this.result=[],this.world=null,this.boundingVolumeType=d.AABB}var e=a("../math/vec2"),f=a("../objects/Body");b.exports=d,d.AABB=1,d.BOUNDING_CIRCLE=2,d.prototype.setWorld=function(a){this.world=a},d.prototype.getCollisionPairs=function(a){};var g=e.create();d.boundingRadiusCheck=function(a,b){e.sub(g,a.position,b.position);var c=e.squaredLength(g),d=a.boundingRadius+b.boundingRadius;return d*d>=c},d.aabbCheck=function(a,b){return a.getAABB().overlaps(b.getAABB())},d.prototype.boundingVolumeCheck=function(a,b){var c;switch(this.boundingVolumeType){case d.BOUNDING_CIRCLE:c=d.boundingRadiusCheck(a,b);break;case d.AABB:c=d.aabbCheck(a,b);break;default:throw new Error("Bounding volume type not recognized: "+this.boundingVolumeType)}return c},d.canCollide=function(a,b){var c=f.KINEMATIC,d=f.STATIC;return a.type===d&&b.type===d?!1:a.type===c&&b.type===d||a.type===d&&b.type===c?!1:a.type===c&&b.type===c?!1:a.sleepState===f.SLEEPING&&b.sleepState===f.SLEEPING?!1:!(a.sleepState===f.SLEEPING&&b.type===d||b.sleepState===f.SLEEPING&&a.type===d)},d.NAIVE=1,d.SAP=2},{"../math/vec2":30,"../objects/Body":31}],9:[function(a,b,c){function d(){e.call(this,e.NAIVE)}var e=(a("../shapes/Circle"),a("../shapes/Plane"),a("../shapes/Shape"),a("../shapes/Particle"),a("../collision/Broadphase"));a("../math/vec2");b.exports=d,d.prototype=new e,d.prototype.constructor=d,d.prototype.getCollisionPairs=function(a){var b=a.bodies,c=this.result;c.length=0;for(var d=0,f=b.length;d!==f;d++)for(var g=b[d],h=0;d>h;h++){var i=b[h];e.canCollide(g,i)&&this.boundingVolumeCheck(g,i)&&c.push(g,i)}return c},d.prototype.aabbQuery=function(a,b,c){c=c||[];for(var d=a.bodies,e=0;e=r*n)return!1;n=r}return!0}var g=a("../math/vec2"),h=g.sub,i=g.add,j=g.dot,k=(a("../utils/Utils"),a("../utils/ContactEquationPool")),l=a("../utils/FrictionEquationPool"),m=a("../utils/TupleDictionary"),n=a("../equations/Equation"),o=(a("../equations/ContactEquation"),a("../equations/FrictionEquation"),a("../shapes/Circle")),p=a("../shapes/Convex"),q=a("../shapes/Shape"),r=(a("../objects/Body"),a("../shapes/Box"));b.exports=d;var s=g.fromValues(0,1),t=g.fromValues(0,0),u=g.fromValues(0,0),v=g.fromValues(0,0),w=g.fromValues(0,0),x=g.fromValues(0,0),y=g.fromValues(0,0),z=g.fromValues(0,0),A=g.fromValues(0,0),B=g.fromValues(0,0),C=g.fromValues(0,0),D=g.fromValues(0,0),E=g.fromValues(0,0),F=g.fromValues(0,0),G=g.fromValues(0,0),H=g.fromValues(0,0),I=g.fromValues(0,0),J=g.fromValues(0,0),K=g.fromValues(0,0),L=[],M=g.create(),N=g.create();d.prototype.bodiesOverlap=function(a,b){for(var c=M,d=N,e=0,f=a.shapes.length;e!==f;e++){var g=a.shapes[e];a.toWorldFrame(c,g.position);for(var h=0,i=b.shapes.length;h!==i;h++){var j=b.shapes[h];if(b.toWorldFrame(d,j.position),this[g.type|j.type](a,g,c,g.angle+a.angle,b,j,d,j.angle+b.angle,!0))return!0}}return!1},d.prototype.collidedLastStep=function(a,b){var c=0|a.id,d=0|b.id;return!!this.collidingBodiesLastStep.get(c,d)},d.prototype.reset=function(){this.collidingBodiesLastStep.reset();for(var a=this.contactEquations,b=a.length;b--;){var c=a[b],d=c.bodyA.id,e=c.bodyB.id;this.collidingBodiesLastStep.set(d,e,!0)}for(var f=this.contactEquations,g=this.frictionEquations,h=0;hp;p++){g.set(m,(0===p?-1:1)*b.length/2,0),g.rotate(m,m,d),g.add(m,m,c);for(var q=0;2>q;q++){g.set(n,(0===q?-1:1)*h.length/2,0),g.rotate(n,n,j),g.add(n,n,i),this.enableFrictionReduction&&(l=this.enableFriction,this.enableFriction=!1);var r=this.circleCircle(a,b,m,d,f,h,n,j,k,b.radius,h.radius);if(this.enableFrictionReduction&&(this.enableFriction=l),k&&r)return!0;o+=r}}this.enableFrictionReduction&&(l=this.enableFriction,this.enableFriction=!1);var s=S;e(s,b);var t=this.convexCapsule(a,s,c,d,f,h,i,j,k);if(this.enableFrictionReduction&&(this.enableFriction=l),k&&t)return!0;if(o+=t,this.enableFrictionReduction){var l=this.enableFriction;this.enableFriction=!1}e(s,h);var u=this.convexCapsule(f,s,i,j,a,b,c,d,k);return this.enableFrictionReduction&&(this.enableFriction=l),k&&u?!0:(o+=u,this.enableFrictionReduction&&o&&this.enableFriction&&this.frictionEquations.push(this.createFrictionFromAverage(o)),o)},d.prototype[q.LINE|q.LINE]=d.prototype.lineLine=function(a,b,c,d,e,f,g,h,i){return i?!1:0},d.prototype[q.PLANE|q.LINE]=d.prototype.planeLine=function(a,b,c,d,e,f,k,l,m){var n=t,o=u,p=v,q=w,r=x,C=y,D=z,E=A,F=B,G=L,H=0;g.set(n,-f.length/2,0),g.set(o,f.length/2,0),g.rotate(p,n,l),g.rotate(q,o,l),i(p,p,k),i(q,q,k),g.copy(n,p),g.copy(o,q),h(r,o,n),g.normalize(C,r),g.rotate90cw(F,C),g.rotate(E,s,d),G[0]=n,G[1]=o;for(var I=0;IK){if(m)return!0;var M=this.createContactEquation(a,e,b,f);H++,g.copy(M.normalA,E),g.normalize(M.normalA,M.normalA),g.scale(D,E,K),h(M.contactPointA,J,D),h(M.contactPointA,M.contactPointA,a.position),h(M.contactPointB,J,k),i(M.contactPointB,M.contactPointB,k),h(M.contactPointB,M.contactPointB,e.position),this.contactEquations.push(M),this.enableFrictionReduction||this.enableFriction&&this.frictionEquations.push(this.createFrictionFromContact(M))}}return m?!1:(this.enableFrictionReduction||H&&this.enableFriction&&this.frictionEquations.push(this.createFrictionFromAverage(H)),H)},d.prototype[q.PARTICLE|q.CAPSULE]=d.prototype.particleCapsule=function(a,b,c,d,e,f,g,h,i){return this.circleLine(a,b,c,d,e,f,g,h,i,f.radius,0)},d.prototype[q.CIRCLE|q.LINE]=d.prototype.circleLine=function(a,b,c,d,e,f,k,l,m,n,o){var n=n||0,o="undefined"!=typeof o?o:b.radius,p=t,q=u,r=v,s=w,H=x,I=y,J=z,K=A,M=B,N=C,O=D,P=E,Q=F,R=G,S=L;g.set(K,-f.length/2,0),g.set(M,f.length/2,0),g.rotate(N,K,l),g.rotate(O,M,l),i(N,N,k),i(O,O,k),g.copy(K,N),g.copy(M,O),h(I,M,K),g.normalize(J,I),g.rotate90cw(H,J),h(P,c,K);var T=j(P,H);h(s,K,k),h(Q,c,k);var U=o+n;if(Math.abs(T)W&&X>V){if(m)return!0;var Y=this.createContactEquation(a,e,b,f);return g.scale(Y.normalA,p,-1),g.normalize(Y.normalA,Y.normalA),g.scale(Y.contactPointA,Y.normalA,o),i(Y.contactPointA,Y.contactPointA,c),h(Y.contactPointA,Y.contactPointA,a.position),h(Y.contactPointB,r,k),i(Y.contactPointB,Y.contactPointB,k),h(Y.contactPointB,Y.contactPointB,e.position),this.contactEquations.push(Y),this.enableFriction&&this.frictionEquations.push(this.createFrictionFromContact(Y)),1}}S[0]=K,S[1]=M;for(var Z=0;ZQ&&(g.copy(J,B),L=Q,g.scale(A,s,Q),g.add(A,A,B),K=!0)}}if(K){if(m)return!0;var R=this.createContactEquation(a,e,b,j);return g.sub(R.normalA,J,c),g.normalize(R.normalA,R.normalA),g.scale(R.contactPointA,R.normalA,n),i(R.contactPointA,R.contactPointA,c),h(R.contactPointA,R.contactPointA,a.position),h(R.contactPointB,A,k),i(R.contactPointB,R.contactPointB,k),h(R.contactPointB,R.contactPointB,e.position),this.contactEquations.push(R),this.enableFriction&&this.frictionEquations.push(this.createFrictionFromContact(R)),1}if(n>0)for(var N=0;NQ&&(I=Q,g.scale(E,s,Q),g.add(E,E,c),g.copy(H,s),L=!0)}if(L){var R=this.createContactEquation(a,e,b,k);return g.scale(R.normalA,H,-1),g.normalize(R.normalA,R.normalA),g.set(R.contactPointA,0,0),i(R.contactPointA,R.contactPointA,c),h(R.contactPointA,R.contactPointA,a.position),h(R.contactPointB,E,l),i(R.contactPointB,R.contactPointB,l),h(R.contactPointB,R.contactPointB,e.position),this.contactEquations.push(R),this.enableFriction&&this.frictionEquations.push(this.createFrictionFromContact(R)),1}return 0},d.prototype[q.CIRCLE]=d.prototype.circleCircle=function(a,b,c,d,e,f,j,k,l,m,n){var o=t,m=m||b.radius,n=n||f.radius;h(o,c,j);var p=m+n;if(g.squaredLength(o)>Math.pow(p,2))return 0;if(l)return!0;var q=this.createContactEquation(a,e,b,f);return h(q.normalA,j,c),g.normalize(q.normalA,q.normalA),g.scale(q.contactPointA,q.normalA,m),g.scale(q.contactPointB,q.normalA,-n),i(q.contactPointA,q.contactPointA,c),h(q.contactPointA,q.contactPointA,a.position),i(q.contactPointB,q.contactPointB,j),h(q.contactPointB,q.contactPointB,e.position),this.contactEquations.push(q),this.enableFriction&&this.frictionEquations.push(this.createFrictionFromContact(q)),1},d.prototype[q.PLANE|q.CONVEX]=d.prototype[q.PLANE|q.BOX]=d.prototype.planeConvex=function(a,b,c,d,e,f,k,l,m){var n=t,o=u,p=v,q=0;g.rotate(o,s,d);for(var r=0;r!==f.vertices.length;r++){var w=f.vertices[r];if(g.rotate(n,w,l),i(n,n,k),h(p,n,c),j(p,o)<=0){if(m)return!0;q++;var x=this.createContactEquation(a,e,b,f);h(p,n,c),g.copy(x.normalA,o);var y=j(p,x.normalA);g.scale(p,x.normalA,y),h(x.contactPointB,n,e.position),h(x.contactPointA,n,p),h(x.contactPointA,x.contactPointA,a.position),this.contactEquations.push(x),this.enableFrictionReduction||this.enableFriction&&this.frictionEquations.push(this.createFrictionFromContact(x))}}return this.enableFrictionReduction&&this.enableFriction&&q&&this.frictionEquations.push(this.createFrictionFromAverage(q)),q},d.prototype[q.PARTICLE|q.PLANE]=d.prototype.particlePlane=function(a,b,c,d,e,f,i,k,l){var m=t,n=u;k=k||0,h(m,c,i),g.rotate(n,s,k);var o=j(m,n);if(o>0)return 0;if(l)return!0;var p=this.createContactEquation(e,a,f,b);return g.copy(p.normalA,n),g.scale(m,p.normalA,o),h(p.contactPointA,c,m),h(p.contactPointA,p.contactPointA,e.position),h(p.contactPointB,c,a.position),this.contactEquations.push(p),this.enableFriction&&this.frictionEquations.push(this.createFrictionFromContact(p)),1},d.prototype[q.CIRCLE|q.PARTICLE]=d.prototype.circleParticle=function(a,b,c,d,e,f,j,k,l){var m=t;if(h(m,j,c),g.squaredLength(m)>Math.pow(b.radius,2))return 0;if(l)return!0;var n=this.createContactEquation(a,e,b,f);return g.copy(n.normalA,m),g.normalize(n.normalA,n.normalA),g.scale(n.contactPointA,n.normalA,b.radius),i(n.contactPointA,n.contactPointA,c),h(n.contactPointA,n.contactPointA,a.position),h(n.contactPointB,j,e.position),this.contactEquations.push(n),this.enableFriction&&this.frictionEquations.push(this.createFrictionFromContact(n)),1};var X=new o({radius:1}),Y=g.create(),Z=g.create();g.create();d.prototype[q.PLANE|q.CAPSULE]=d.prototype.planeCapsule=function(a,b,c,d,e,f,h,j,k){var l=Y,m=Z,n=X;g.set(l,-f.length/2,0),g.rotate(l,l,j),i(l,l,h),g.set(m,f.length/2,0),g.rotate(m,m,j),i(m,m,h),n.radius=f.radius;var o;this.enableFrictionReduction&&(o=this.enableFriction,this.enableFriction=!1);var p=this.circlePlane(e,n,l,0,a,b,c,d,k),q=this.circlePlane(e,n,m,0,a,b,c,d,k);if(this.enableFrictionReduction&&(this.enableFriction=o),k)return p||q;var r=p+q;return this.enableFrictionReduction&&r&&this.frictionEquations.push(this.createFrictionFromAverage(r)),r},d.prototype[q.CIRCLE|q.PLANE]=d.prototype.circlePlane=function(a,b,c,d,e,f,k,l,m){var n=a,o=b,p=c,q=e,r=k,w=l;w=w||0;var x=t,y=u,z=v;h(x,p,r),g.rotate(y,s,w);var A=j(y,x);if(A>o.radius)return 0;if(m)return!0;var B=this.createContactEquation(q,n,f,b);return g.copy(B.normalA,y),g.scale(B.contactPointB,B.normalA,-o.radius),i(B.contactPointB,B.contactPointB,p),h(B.contactPointB,B.contactPointB,n.position),g.scale(z,B.normalA,A),h(B.contactPointA,x,z),i(B.contactPointA,B.contactPointA,r),h(B.contactPointA,B.contactPointA,q.position),this.contactEquations.push(B),this.enableFriction&&this.frictionEquations.push(this.createFrictionFromContact(B)),1},d.prototype[q.CONVEX]=d.prototype[q.CONVEX|q.BOX]=d.prototype[q.BOX]=d.prototype.convexConvex=function(a,b,c,e,f,k,l,m,n,o){var p=t,q=u,r=v,s=w,y=x,C=z,D=A,E=B,F=0,o="number"==typeof o?o:0,G=d.findSeparatingAxis(b,c,e,k,l,m,p);if(!G)return 0;h(D,l,c),j(p,D)>0&&g.scale(p,p,-1);var H=d.getClosestEdge(b,e,p,!0),I=d.getClosestEdge(k,m,p);if(-1===H||-1===I)return 0;for(var J=0;2>J;J++){var K=H,L=I,M=b,N=k,O=c,P=l,Q=e,R=m,S=a,T=f;if(0===J){var U;U=K,K=L,L=U,U=M,M=N,N=U,U=O,O=P,P=U,U=Q,Q=R,R=U,U=S,S=T,T=U}for(var V=L;L+2>V;V++){var W=N.vertices[(V+N.vertices.length)%N.vertices.length];g.rotate(q,W,R),i(q,q,P);for(var X=0,Y=K-1;K+2>Y;Y++){var Z=M.vertices[(Y+M.vertices.length)%M.vertices.length],$=M.vertices[(Y+1+M.vertices.length)%M.vertices.length];g.rotate(r,Z,Q),g.rotate(s,$,Q),i(r,r,O),i(s,s,O),h(y,s,r),g.rotate90cw(E,y),g.normalize(E,E),h(D,q,r);var _=j(E,D);(Y===K&&o>=_||Y!==K&&0>=_)&&X++}if(X>=3){if(n)return!0;var aa=this.createContactEquation(S,T,M,N);F++;var Z=M.vertices[K%M.vertices.length],$=M.vertices[(K+1)%M.vertices.length];g.rotate(r,Z,Q),g.rotate(s,$,Q),i(r,r,O),i(s,s,O),h(y,s,r),g.rotate90cw(aa.normalA,y),g.normalize(aa.normalA,aa.normalA),h(D,q,r);var _=j(aa.normalA,D);g.scale(C,aa.normalA,_),h(aa.contactPointA,q,O),h(aa.contactPointA,aa.contactPointA,C),i(aa.contactPointA,aa.contactPointA,O),h(aa.contactPointA,aa.contactPointA,S.position),h(aa.contactPointB,q,P),i(aa.contactPointB,aa.contactPointB,P),h(aa.contactPointB,aa.contactPointB,T.position),this.contactEquations.push(aa),this.enableFrictionReduction||this.enableFriction&&this.frictionEquations.push(this.createFrictionFromContact(aa))}}}return this.enableFrictionReduction&&this.enableFriction&&F&&this.frictionEquations.push(this.createFrictionFromAverage(F)),F};var $=g.fromValues(0,0);d.projectConvexOntoAxis=function(a,b,c,d,e){var f,h,i=null,k=null,l=$;g.rotate(l,d,-c);for(var m=0;mi)&&(i=h),(null===k||k>h)&&(k=h);if(k>i){var n=k;k=i,i=n}var o=j(b,d);g.set(e,k+o,i+o)};var _=g.fromValues(0,0),aa=g.fromValues(0,0),ba=g.fromValues(0,0),ca=g.fromValues(0,0),da=g.fromValues(0,0),ea=g.fromValues(0,0);d.findSeparatingAxis=function(a,b,c,e,f,i,j){var k=null,l=!1,m=!1,n=_,o=aa,p=ba,q=ca,s=da,t=ea;if(a instanceof r&&e instanceof r)for(var u=0;2!==u;u++){var v=a,w=c;1===u&&(v=e,w=i);for(var x=0;2!==x;x++){0===x?g.set(q,0,1):1===x&&g.set(q,1,0),0!==w&&g.rotate(q,q,w),d.projectConvexOntoAxis(a,b,c,q,s),d.projectConvexOntoAxis(e,f,i,q,t);var y=s,z=t,A=!1;s[0]>t[0]&&(z=s,y=t,A=!0);var B=z[0]-y[1];l=0>=B,(null===k||B>k)&&(g.copy(j,q),k=B,m=l)}}else for(var u=0;2!==u;u++){var v=a,w=c;1===u&&(v=e,w=i);for(var x=0;x!==v.vertices.length;x++){g.rotate(o,v.vertices[x],w),g.rotate(p,v.vertices[(x+1)%v.vertices.length],w),h(n,p,o),g.rotate90cw(q,n),g.normalize(q,q),d.projectConvexOntoAxis(a,b,c,q,s),d.projectConvexOntoAxis(e,f,i,q,t);var y=s,z=t,A=!1;s[0]>t[0]&&(z=s,y=t,A=!0);var B=z[0]-y[1];l=0>=B,(null===k||B>k)&&(g.copy(j,q),k=B,m=l)}}return m};var fa=g.fromValues(0,0),ga=g.fromValues(0,0),ha=g.fromValues(0,0);d.getClosestEdge=function(a,b,c,d){var e=fa,f=ga,i=ha;g.rotate(e,c,-b),d&&g.scale(e,e,-1);for(var k=-1,l=a.vertices.length,m=-1,n=0;n!==l;n++){h(f,a.vertices[(n+1)%l],a.vertices[n%l]),g.rotate90cw(i,f),g.normalize(i,i);var o=j(i,e);(-1===k||o>m)&&(k=n%l,m=o)}return k};var ia=g.create(),ja=g.create(),ka=g.create(),la=g.create(),ma=g.create(),na=g.create(),oa=g.create();d.prototype[q.CIRCLE|q.HEIGHTFIELD]=d.prototype.circleHeightfield=function(a,b,c,d,e,f,j,k,l,m){var n=f.heights,m=m||b.radius,o=f.elementWidth,p=ja,q=ia,r=ma,s=oa,t=na,u=ka,v=la,w=Math.floor((c[0]-m-j[0])/o),x=Math.ceil((c[0]+m-j[0])/o);0>w&&(w=0),x>=n.length&&(x=n.length-1);for(var y=n[w],z=n[x],A=w;x>A;A++)n[A]y&&(y=n[A]);if(c[1]-m>y)return l?!1:0;for(var B=!1,A=w;x>A;A++){g.set(u,A*o,n[A]),g.set(v,(A+1)*o,n[A+1]),g.add(u,u,j),g.add(v,v,j),g.sub(t,v,u),g.rotate(t,t,Math.PI/2),g.normalize(t,t),g.scale(q,t,-m),g.add(q,q,c),g.sub(p,q,u);var C=g.dot(p,t);if(q[0]>=u[0]&&q[0]=C){if(l)return!0;B=!0,g.scale(p,t,-C),g.add(r,q,p),g.copy(s,t);var D=this.createContactEquation(e,a,f,b);g.copy(D.normalA,s),g.scale(D.contactPointB,D.normalA,-m),i(D.contactPointB,D.contactPointB,c),h(D.contactPointB,D.contactPointB,a.position),g.copy(D.contactPointA,r),g.sub(D.contactPointA,D.contactPointA,e.position),this.contactEquations.push(D),this.enableFriction&&this.frictionEquations.push(this.createFrictionFromContact(D))}}if(B=!1,m>0)for(var A=w;x>=A;A++)if(g.set(u,A*o,n[A]),g.add(u,u,j),g.sub(p,c,u),g.squaredLength(p)q&&(q=0),r>=k.length&&(r=k.length-1);for(var s=k[q],t=k[r],u=q;r>u;u++)k[u]s&&(s=k[u]);if(a.aabb.lowerBound[1]>s)return j?!1:0;for(var v=0,u=q;r>u;u++){g.set(m,u*l,k[u]),g.set(n,(u+1)*l,k[u+1]),g.add(m,m,h),g.add(n,n,h);var w=100;g.set(o,.5*(n[0]+m[0]),.5*(n[1]+m[1]-w)),g.sub(p.vertices[0],n,o),g.sub(p.vertices[1],m,o),g.copy(p.vertices[2],p.vertices[1]),g.copy(p.vertices[3],p.vertices[0]),p.vertices[2][1]-=w,p.vertices[3][1]-=w,v+=this.convexConvex(a,b,c,d,e,p,o,0,j)}return v}},{"../equations/ContactEquation":21,"../equations/Equation":22,"../equations/FrictionEquation":23,"../math/vec2":30,"../objects/Body":31,"../shapes/Box":37,"../shapes/Circle":39,"../shapes/Convex":40,"../shapes/Shape":45,"../utils/ContactEquationPool":48,"../utils/FrictionEquationPool":49,"../utils/TupleDictionary":56,"../utils/Utils":57}],11:[function(a,b,c){function d(a){a=a||{},this.from=a.from?f.fromValues(a.from[0],a.from[1]):f.create(),this.to=a.to?f.fromValues(a.to[0],a.to[1]):f.create(),this.checkCollisionResponse=void 0!==a.checkCollisionResponse?a.checkCollisionResponse:!0,this.skipBackfaces=!!a.skipBackfaces,this.collisionMask=void 0!==a.collisionMask?a.collisionMask:-1,this.collisionGroup=void 0!==a.collisionGroup?a.collisionGroup:-1,this.mode=void 0!==a.mode?a.mode:d.ANY,this.callback=a.callback||function(a){},this.direction=f.create(),this.length=1,this.update()}function e(a,b,c){f.sub(h,c,a);var d=f.dot(h,b);return f.scale(i,b,d),f.add(i,i,a),f.squaredDistance(c,i)}b.exports=d;var f=a("../math/vec2");a("../collision/RaycastResult"),a("../shapes/Shape"),a("../collision/AABB");d.prototype.constructor=d,d.CLOSEST=1,d.ANY=2,d.ALL=4,d.prototype.update=function(){var a=this.direction;f.sub(a,this.to,this.from),this.length=f.length(a),f.normalize(a,a)},d.prototype.intersectBodies=function(a,b){for(var c=0,d=b.length;!a.shouldStop(this)&&d>c;c++){var e=b[c],f=e.getAABB();(f.overlapsRay(this)>=0||f.containsPoint(this.from))&&this.intersectBody(a,e)}};var g=f.create();d.prototype.intersectBody=function(a,b){var c=this.checkCollisionResponse;if(!c||b.collisionResponse)for(var d=g,e=0,h=b.shapes.length;h>e;e++){var i=b.shapes[e];if((!c||i.collisionResponse)&&0!==(this.collisionGroup&i.collisionMask)&&0!==(i.collisionGroup&this.collisionMask)){f.rotate(d,i.position,b.angle),f.add(d,d,b.position);var j=i.angle+b.angle;if(this.intersectShape(a,i,j,d,b),a.shouldStop(this))break}}},d.prototype.intersectShape=function(a,b,c,d,f){var g=this.from,h=e(g,this.direction,d);h>b.boundingRadius*b.boundingRadius||(this._currentBody=f,this._currentShape=b,b.raycast(a,this,d,c),this._currentBody=this._currentShape=null)},d.prototype.getAABB=function(a){var b=this.to,c=this.from;f.set(a.lowerBound,Math.min(b[0],c[0]),Math.min(b[1],c[1])),f.set(a.upperBound,Math.max(b[0],c[0]),Math.max(b[1],c[1]))};f.create();d.prototype.reportIntersection=function(a,b,c,e){var g=(this.from,this.to,this._currentShape),h=this._currentBody;if(!(this.skipBackfaces&&f.dot(c,this.direction)>0))switch(this.mode){case d.ALL:a.set(c,g,h,b,e),this.callback(a);break;case d.CLOSEST:(bc;c++){for(var e=a[c],f=c-1;f>=0&&!(a[f].aabb.lowerBound[b]<=e.aabb.lowerBound[b]);f--)a[f+1]=a[f];a[f+1]=e}return a},d.prototype.sortList=function(){var a=this.axisList,b=this.axisIndex;d.sortAxisList(a,b)},d.prototype.getCollisionPairs=function(a){var b=this.axisList,c=this.result,d=this.axisIndex;c.length=0;for(var e=b.length;e--;){var g=b[e];g.aabbNeedsUpdate&&g.updateAABB()}this.sortList();for(var h=0,i=0|b.length;h!==i;h++)for(var j=b[h],k=h+1;i>k;k++){var l=b[k],m=l.aabb.lowerBound[d]<=j.aabb.upperBound[d];if(!m)break;f.canCollide(j,l)&&this.boundingVolumeCheck(j,l)&&c.push(j,l)}return c},d.prototype.aabbQuery=function(a,b,c){c=c||[],this.sortList();var d=this.axisIndex,e="x";1===d&&(e="y"),2===d&&(e="z");for(var f=this.axisList,g=(b.lowerBound[e],b.upperBound[e],0);gthis.upperLimit&&(f.maxForce=0,f.minForce=-this.maxForce,this.distance=this.upperLimit,l=!0),this.lowerLimitEnabled&&this.positionc)h.scale(e.normalA,j,-1),h.sub(e.contactPointA,k,g.position),h.sub(e.contactPointB,l,i.position),h.scale(o,j,c),h.add(e.contactPointA,e.contactPointA,o),-1===a.indexOf(e)&&a.push(e);else{var u=a.indexOf(e);-1!==u&&a.splice(u,1)}if(this.lowerLimitEnabled&&d>s)h.scale(f.normalA,j,1),h.sub(f.contactPointA,k,g.position),h.sub(f.contactPointB,l,i.position),h.scale(o,j,d),h.sub(f.contactPointB,f.contactPointB,o),-1===a.indexOf(f)&&a.push(f);else{var u=a.indexOf(f);-1!==u&&a.splice(u,1)}},d.prototype.enableMotor=function(){this.motorEnabled||(this.equations.push(this.motorEquation),this.motorEnabled=!0)},d.prototype.disableMotor=function(){if(this.motorEnabled){var a=this.equations.indexOf(this.motorEquation);this.equations.splice(a,1),this.motorEnabled=!1}},d.prototype.setLimits=function(a,b){"number"==typeof a?(this.lowerLimit=a,this.lowerLimitEnabled=!0):(this.lowerLimit=a,this.lowerLimitEnabled=!1),"number"==typeof b?(this.upperLimit=b,this.upperLimitEnabled=!0):(this.upperLimit=b,this.upperLimitEnabled=!1)}},{"../equations/ContactEquation":21,"../equations/Equation":22,"../equations/RotationalLockEquation":24,"../math/vec2":30,"./Constraint":14}],19:[function(a,b,c){function d(a,b,c){c=c||{},e.call(this,a,b,e.REVOLUTE,c);var d=this.maxForce="undefined"!=typeof c.maxForce?c.maxForce:Number.MAX_VALUE;this.pivotA=i.create(),this.pivotB=i.create(),c.worldPivot?(i.sub(this.pivotA,c.worldPivot,a.position),i.sub(this.pivotB,c.worldPivot,b.position),i.rotate(this.pivotA,this.pivotA,-a.angle),i.rotate(this.pivotB,this.pivotB,-b.angle)):(i.copy(this.pivotA,c.localPivotA),i.copy(this.pivotB,c.localPivotB));var o=this.equations=[new f(a,b,-d,d),new f(a,b,-d,d)],p=o[0],q=o[1],r=this;p.computeGq=function(){return i.rotate(j,r.pivotA,a.angle),i.rotate(k,r.pivotB,b.angle),i.add(n,b.position,k),i.sub(n,n,a.position),i.sub(n,n,j),i.dot(n,l)},q.computeGq=function(){return i.rotate(j,r.pivotA,a.angle),i.rotate(k,r.pivotB,b.angle),i.add(n,b.position,k),i.sub(n,n,a.position),i.sub(n,n,j),i.dot(n,m)},q.minForce=p.minForce=-d,q.maxForce=p.maxForce=d,this.motorEquation=new g(a,b),this.motorEnabled=!1,this.angle=0,this.lowerLimitEnabled=!1,this.upperLimitEnabled=!1,this.lowerLimit=0,this.upperLimit=0,this.upperLimitEquation=new h(a,b),this.lowerLimitEquation=new h(a,b),this.upperLimitEquation.minForce=0,this.lowerLimitEquation.maxForce=0}var e=a("./Constraint"),f=a("../equations/Equation"),g=a("../equations/RotationalVelocityEquation"),h=a("../equations/RotationalLockEquation"),i=a("../math/vec2");b.exports=d;var j=i.create(),k=i.create(),l=i.fromValues(1,0),m=i.fromValues(0,1),n=i.create();d.prototype=new e,d.prototype.constructor=d,d.prototype.setLimits=function(a,b){"number"==typeof a?(this.lowerLimit=a,this.lowerLimitEnabled=!0):(this.lowerLimit=a,this.lowerLimitEnabled=!1),"number"==typeof b?(this.upperLimit=b,this.upperLimitEnabled=!0):(this.upperLimit=b,this.upperLimitEnabled=!1)},d.prototype.update=function(){var a=this.bodyA,b=this.bodyB,c=this.pivotA,d=this.pivotB,e=this.equations,f=(e[0],e[1],e[0]),g=e[1],h=this.upperLimit,n=this.lowerLimit,o=this.upperLimitEquation,p=this.lowerLimitEquation,q=this.angle=b.angle-a.angle;if(this.upperLimitEnabled&&q>h)o.angle=h,-1===e.indexOf(o)&&e.push(o);else{var r=e.indexOf(o);-1!==r&&e.splice(r,1)}if(this.lowerLimitEnabled&&n>q)p.angle=n,-1===e.indexOf(p)&&e.push(p);else{var r=e.indexOf(p);-1!==r&&e.splice(r,1)}i.rotate(j,c,a.angle),i.rotate(k,d,b.angle),f.G[0]=-1,f.G[1]=0,f.G[2]=-i.crossLength(j,l),f.G[3]=1,f.G[4]=0,f.G[5]=i.crossLength(k,l),g.G[0]=0,g.G[1]=-1,g.G[2]=-i.crossLength(j,m),g.G[3]=0,g.G[4]=1,g.G[5]=i.crossLength(k,m)},d.prototype.enableMotor=function(){this.motorEnabled||(this.equations.push(this.motorEquation),this.motorEnabled=!0)},d.prototype.disableMotor=function(){if(this.motorEnabled){var a=this.equations.indexOf(this.motorEquation);this.equations.splice(a,1),this.motorEnabled=!1}},d.prototype.motorIsEnabled=function(){return!!this.motorEnabled},d.prototype.setMotorSpeed=function(a){if(this.motorEnabled){var b=this.equations.indexOf(this.motorEquation);this.equations[b].relativeVelocity=a}},d.prototype.getMotorSpeed=function(){return this.motorEnabled?this.motorEquation.relativeVelocity:!1}},{"../equations/Equation":22,"../equations/RotationalLockEquation":24,"../equations/RotationalVelocityEquation":25,"../math/vec2":30,"./Constraint":14}],20:[function(a,b,c){function d(a,b,c){c=c||{},e.call(this,a,b,-Number.MAX_VALUE,Number.MAX_VALUE),this.angle=c.angle||0,this.ratio="number"==typeof c.ratio?c.ratio:1,this.setRatio(this.ratio)}var e=a("./Equation");a("../math/vec2");b.exports=d,d.prototype=new e,d.prototype.constructor=d,d.prototype.computeGq=function(){return this.ratio*this.bodyA.angle-this.bodyB.angle+this.angle},d.prototype.setRatio=function(a){var b=this.G;b[2]=a,b[5]=-1,this.ratio=a},d.prototype.setMaxTorque=function(a){this.maxForce=a,this.minForce=-a}},{"../math/vec2":30,"./Equation":22}],21:[function(a,b,c){function d(a,b){e.call(this,a,b,0,Number.MAX_VALUE),this.contactPointA=f.create(),this.penetrationVec=f.create(),this.contactPointB=f.create(),this.normalA=f.create(),this.restitution=0,this.firstImpact=!1,this.shapeA=null,this.shapeB=null}var e=a("./Equation"),f=a("../math/vec2");b.exports=d,d.prototype=new e,d.prototype.constructor=d,d.prototype.computeB=function(a,b,c){var d=this.bodyA,e=this.bodyB,g=this.contactPointA,h=this.contactPointB,i=d.position,j=e.position,k=this.penetrationVec,l=this.normalA,m=this.G,n=f.crossLength(g,l),o=f.crossLength(h,l);m[0]=-l[0],m[1]=-l[1],m[2]=-n,m[3]=l[0],m[4]=l[1],m[5]=o,f.add(k,j,h),f.sub(k,k,i),f.sub(k,k,g);var p,q;this.firstImpact&&0!==this.restitution?(q=0,p=1/b*(1+this.restitution)*this.computeGW()):(q=f.dot(l,k)+this.offset,p=this.computeGW());var r=this.computeGiMf(),s=-q*a-p*b-c*r;return s}},{"../math/vec2":30,"./Equation":22}],22:[function(a,b,c){function d(a,b,c,e){this.minForce="undefined"==typeof c?-Number.MAX_VALUE:c,this.maxForce="undefined"==typeof e?Number.MAX_VALUE:e,this.bodyA=a,this.bodyB=b,this.stiffness=d.DEFAULT_STIFFNESS,this.relaxation=d.DEFAULT_RELAXATION,this.G=new f.ARRAY_TYPE(6);for(var g=0;6>g;g++)this.G[g]=0;this.offset=0,this.a=0,this.b=0,this.epsilon=0,this.timeStep=1/60,this.needsUpdate=!0,this.multiplier=0,this.relativeVelocity=0,this.enabled=!0}b.exports=d;var e=a("../math/vec2"),f=a("../utils/Utils");a("../objects/Body");d.prototype.constructor=d,d.DEFAULT_STIFFNESS=1e6,d.DEFAULT_RELAXATION=4,d.prototype.update=function(){var a=this.stiffness,b=this.relaxation,c=this.timeStep;this.a=4/(c*(1+4*b)),this.b=4*b/(1+4*b),this.epsilon=4/(c*c*a*(1+4*b)),this.needsUpdate=!1},d.prototype.gmult=function(a,b,c,d,e){return a[0]*b[0]+a[1]*b[1]+a[2]*c+a[3]*d[0]+a[4]*d[1]+a[5]*e},d.prototype.computeB=function(a,b,c){var d=this.computeGW(),e=this.computeGq(),f=this.computeGiMf();return-e*a-d*b-f*c};var g=e.create(),h=e.create();d.prototype.computeGq=function(){var a=this.G,b=this.bodyA,c=this.bodyB,d=(b.position,c.position,b.angle),e=c.angle;return this.gmult(a,g,d,h,e)+this.offset},d.prototype.computeGW=function(){var a=this.G,b=this.bodyA,c=this.bodyB,d=b.velocity,e=c.velocity,f=b.angularVelocity,g=c.angularVelocity;return this.gmult(a,d,f,e,g)+this.relativeVelocity},d.prototype.computeGWlambda=function(){var a=this.G,b=this.bodyA,c=this.bodyB,d=b.vlambda,e=c.vlambda,f=b.wlambda,g=c.wlambda;return this.gmult(a,d,f,e,g)};var i=e.create(),j=e.create();d.prototype.computeGiMf=function(){var a=this.bodyA,b=this.bodyB,c=a.force,d=a.angularForce,f=b.force,g=b.angularForce,h=a.invMassSolve,k=b.invMassSolve,l=a.invInertiaSolve,m=b.invInertiaSolve,n=this.G;return e.scale(i,c,h),e.multiply(i,a.massMultiplier,i),e.scale(j,f,k),e.multiply(j,b.massMultiplier,j),this.gmult(n,i,d*l,j,g*m)},d.prototype.computeGiMGt=function(){var a=this.bodyA,b=this.bodyB,c=a.invMassSolve,d=b.invMassSolve,e=a.invInertiaSolve,f=b.invInertiaSolve,g=this.G;return g[0]*g[0]*c*a.massMultiplier[0]+g[1]*g[1]*c*a.massMultiplier[1]+g[2]*g[2]*e+g[3]*g[3]*d*b.massMultiplier[0]+g[4]*g[4]*d*b.massMultiplier[1]+g[5]*g[5]*f};var k=e.create(),l=e.create(),m=e.create();e.create(),e.create(),e.create();d.prototype.addToWlambda=function(a){var b=this.bodyA,c=this.bodyB,d=k,f=l,g=m,h=b.invMassSolve,i=c.invMassSolve,j=b.invInertiaSolve,n=c.invInertiaSolve,o=this.G;f[0]=o[0],f[1]=o[1],g[0]=o[3],g[1]=o[4],e.scale(d,f,h*a),e.multiply(d,d,b.massMultiplier),e.add(b.vlambda,b.vlambda,d),b.wlambda+=j*o[2]*a,e.scale(d,g,i*a),e.multiply(d,d,c.massMultiplier),e.add(c.vlambda,c.vlambda,d),c.wlambda+=n*o[5]*a},d.prototype.computeInvC=function(a){return 1/(this.computeGiMGt()+a)}},{"../math/vec2":30,"../objects/Body":31,"../utils/Utils":57}],23:[function(a,b,c){function d(a,b,c){f.call(this,a,b,-c,c),this.contactPointA=e.create(),this.contactPointB=e.create(),this.t=e.create(),this.contactEquations=[],this.shapeA=null,this.shapeB=null,this.frictionCoefficient=.3}var e=a("../math/vec2"),f=a("./Equation");a("../utils/Utils");b.exports=d,d.prototype=new f,d.prototype.constructor=d,d.prototype.setSlipForce=function(a){this.maxForce=a,this.minForce=-a},d.prototype.getSlipForce=function(){return this.maxForce},d.prototype.computeB=function(a,b,c){var d=(this.bodyA,this.bodyB,this.contactPointA),f=this.contactPointB,g=this.t,h=this.G;h[0]=-g[0],h[1]=-g[1],h[2]=-e.crossLength(d,g),h[3]=g[0],h[4]=g[1],h[5]=e.crossLength(f,g);var i=this.computeGW(),j=this.computeGiMf(),k=-i*b-c*j;return k}},{"../math/vec2":30,"../utils/Utils":57,"./Equation":22}],24:[function(a,b,c){function d(a,b,c){c=c||{},e.call(this,a,b,-Number.MAX_VALUE,Number.MAX_VALUE),this.angle=c.angle||0;var d=this.G;d[2]=1,d[5]=-1}var e=a("./Equation"),f=a("../math/vec2");b.exports=d,d.prototype=new e,d.prototype.constructor=d;var g=f.create(),h=f.create(),i=f.fromValues(1,0),j=f.fromValues(0,1);d.prototype.computeGq=function(){return f.rotate(g,i,this.bodyA.angle+this.angle),f.rotate(h,j,this.bodyB.angle),f.dot(g,h)}},{"../math/vec2":30,"./Equation":22}],25:[function(a,b,c){function d(a,b){e.call(this,a,b,-Number.MAX_VALUE,Number.MAX_VALUE),this.relativeVelocity=1,this.ratio=1}var e=a("./Equation");a("../math/vec2");b.exports=d,d.prototype=new e,d.prototype.constructor=d,d.prototype.computeB=function(a,b,c){var d=this.G;d[2]=-1,d[5]=this.ratio;var e=this.computeGiMf(),f=this.computeGW(),g=-f*b-c*e;return g}},{"../math/vec2":30,"./Equation":22}],26:[function(a,b,c){var d=function(){};b.exports=d,d.prototype={constructor:d,on:function(a,b,c){b.context=c||this,void 0===this._listeners&&(this._listeners={});var d=this._listeners;return void 0===d[a]&&(d[a]=[]),-1===d[a].indexOf(b)&&d[a].push(b),this},has:function(a,b){if(void 0===this._listeners)return!1;var c=this._listeners;if(b){if(void 0!==c[a]&&-1!==c[a].indexOf(b))return!0}else if(void 0!==c[a])return!0;return!1},off:function(a,b){if(void 0===this._listeners)return this;var c=this._listeners,d=c[a].indexOf(b);return-1!==d&&c[a].splice(d,1),this},emit:function(a){if(void 0===this._listeners)return this;var b=this._listeners,c=b[a.type];if(void 0!==c){a.target=this;for(var d=0,e=c.length;e>d;d++){var f=c[d];f.call(f.context,a)}}return this}}},{}],27:[function(a,b,c){function d(a,b,c){if(c=c||{},!(a instanceof e&&b instanceof e))throw new Error("First two arguments must be Material instances.");this.id=d.idCounter++,this.materialA=a,this.materialB=b,this.friction="undefined"!=typeof c.friction?Number(c.friction):.3,this.restitution="undefined"!=typeof c.restitution?Number(c.restitution):0,this.stiffness="undefined"!=typeof c.stiffness?Number(c.stiffness):f.DEFAULT_STIFFNESS,this.relaxation="undefined"!=typeof c.relaxation?Number(c.relaxation):f.DEFAULT_RELAXATION,this.frictionStiffness="undefined"!=typeof c.frictionStiffness?Number(c.frictionStiffness):f.DEFAULT_STIFFNESS,this.frictionRelaxation="undefined"!=typeof c.frictionRelaxation?Number(c.frictionRelaxation):f.DEFAULT_RELAXATION,this.surfaceVelocity="undefined"!=typeof c.surfaceVelocity?Number(c.surfaceVelocity):0,this.contactSkinSize=.005}var e=a("./Material"),f=a("../equations/Equation");b.exports=d,d.idCounter=0},{"../equations/Equation":22,"./Material":28}],28:[function(a,b,c){function d(a){this.id=a||d.idCounter++}b.exports=d,d.idCounter=0},{}],29:[function(a,b,c){var d={};d.GetArea=function(a){if(a.length<6)return 0;for(var b=a.length-2,c=0,d=0;b>d;d+=2)c+=(a[d+2]-a[d])*(a[d+1]+a[d+3]);return c+=(a[0]-a[b])*(a[b+1]+a[1]),.5*-c},d.Triangulate=function(a){var b=a.length>>1;if(3>b)return[];for(var c=[],e=[],f=0;b>f;f++)e.push(f);for(var f=0,g=b;g>3;){var h=e[(f+0)%g],i=e[(f+1)%g],j=e[(f+2)%g],k=a[2*h],l=a[2*h+1],m=a[2*i],n=a[2*i+1],o=a[2*j],p=a[2*j+1],q=!1;if(d._convex(k,l,m,n,o,p)){q=!0;for(var r=0;g>r;r++){var s=e[r];if(s!=h&&s!=i&&s!=j&&d._PointInTriangle(a[2*s],a[2*s+1],k,l,m,n,o,p)){q=!1;break}}}if(q)c.push(h,i,j),e.splice((f+1)%g,1),g--,f=0;else if(f++>3*g)break}return c.push(e[0],e[1],e[2]),c},d._PointInTriangle=function(a,b,c,d,e,f,g,h){var i=g-c,j=h-d,k=e-c,l=f-d,m=a-c,n=b-d,o=i*i+j*j,p=i*k+j*l,q=i*m+j*n,r=k*k+l*l,s=k*m+l*n,t=1/(o*r-p*p),u=(r*q-p*s)*t,v=(o*s-p*q)*t;return u>=0&&v>=0&&1>u+v},d._convex=function(a,b,c,d,e,f){return(b-d)*(e-c)+(c-a)*(f-d)>=0},b.exports=d},{}],30:[function(a,b,c){var d=b.exports={},e=a("../utils/Utils");d.crossLength=function(a,b){return a[0]*b[1]-a[1]*b[0]},d.crossVZ=function(a,b,c){return d.rotate(a,b,-Math.PI/2),d.scale(a,a,c),a},d.crossZV=function(a,b,c){return d.rotate(a,c,Math.PI/2),d.scale(a,a,b),a},d.rotate=function(a,b,c){if(0!==c){var d=Math.cos(c),e=Math.sin(c),f=b[0],g=b[1];a[0]=d*f-e*g,a[1]=e*f+d*g}else a[0]=b[0],a[1]=b[1]},d.rotate90cw=function(a,b){var c=b[0],d=b[1];a[0]=d,a[1]=-c},d.toLocalFrame=function(a,b,c,e){d.copy(a,b),d.sub(a,a,c),d.rotate(a,a,-e)},d.toGlobalFrame=function(a,b,c,e){d.copy(a,b),d.rotate(a,a,e),d.add(a,a,c)},d.vectorToLocalFrame=function(a,b,c){d.rotate(a,b,-c)},d.vectorToGlobalFrame=function(a,b,c){d.rotate(a,b,c)},d.centroid=function(a,b,c,e){return d.add(a,b,c),d.add(a,a,e),d.scale(a,a,1/3),a},d.create=function(){var a=new e.ARRAY_TYPE(2);return a[0]=0,a[1]=0,a},d.clone=function(a){var b=new e.ARRAY_TYPE(2);return b[0]=a[0],b[1]=a[1],b},d.fromValues=function(a,b){var c=new e.ARRAY_TYPE(2);return c[0]=a,c[1]=b,c},d.copy=function(a,b){return a[0]=b[0],a[1]=b[1],a},d.set=function(a,b,c){return a[0]=b,a[1]=c,a},d.add=function(a,b,c){return a[0]=b[0]+c[0],a[1]=b[1]+c[1],a},d.subtract=function(a,b,c){return a[0]=b[0]-c[0],a[1]=b[1]-c[1],a},d.sub=d.subtract,d.multiply=function(a,b,c){return a[0]=b[0]*c[0],a[1]=b[1]*c[1],a},d.mul=d.multiply,d.divide=function(a,b,c){return a[0]=b[0]/c[0],a[1]=b[1]/c[1],a},d.div=d.divide,d.scale=function(a,b,c){return a[0]=b[0]*c,a[1]=b[1]*c,a},d.distance=function(a,b){var c=b[0]-a[0],d=b[1]-a[1];return Math.sqrt(c*c+d*d)},d.dist=d.distance,d.squaredDistance=function(a,b){var c=b[0]-a[0],d=b[1]-a[1];return c*c+d*d},d.sqrDist=d.squaredDistance,d.length=function(a){var b=a[0],c=a[1];return Math.sqrt(b*b+c*c)},d.len=d.length,d.squaredLength=function(a){var b=a[0],c=a[1];return b*b+c*c},d.sqrLen=d.squaredLength,d.negate=function(a,b){return a[0]=-b[0],a[1]=-b[1],a},d.normalize=function(a,b){var c=b[0],d=b[1],e=c*c+d*d;return e>0&&(e=1/Math.sqrt(e),a[0]=b[0]*e,a[1]=b[1]*e),a},d.dot=function(a,b){return a[0]*b[0]+a[1]*b[1]},d.str=function(a){return"vec2("+a[0]+", "+a[1]+")"},d.lerp=function(a,b,c,d){var e=b[0],f=b[1];return a[0]=e+d*(c[0]-e),a[1]=f+d*(c[1]-f),a},d.reflect=function(a,b,c){var d=b[0]*c[0]+b[1]*c[1];a[0]=b[0]-2*c[0]*d,a[1]=b[1]-2*c[1]*d},d.getLineSegmentsIntersection=function(a,b,c,e,f){var g=d.getLineSegmentsIntersectionFraction(b,c,e,f);return 0>g?!1:(a[0]=b[0]+g*(c[0]-b[0]),a[1]=b[1]+g*(c[1]-b[1]),!0)},d.getLineSegmentsIntersectionFraction=function(a,b,c,d){var e,f,g=b[0]-a[0],h=b[1]-a[1],i=d[0]-c[0],j=d[1]-c[1];return e=(-h*(a[0]-c[0])+g*(a[1]-c[1]))/(-i*h+g*j),f=(i*(a[1]-c[1])-j*(a[0]-c[0]))/(-i*h+g*j),e>=0&&1>=e&&f>=0&&1>=f?f:-1}},{"../utils/Utils":57}],31:[function(a,b,c){function d(a){a=a||{},k.call(this),this.id=a.id||++d._idCounter,this.world=null,this.shapes=[],this.mass=a.mass||0,this.invMass=0,this.inertia=0,this.invInertia=0,this.invMassSolve=0,this.invInertiaSolve=0,this.fixedRotation=!!a.fixedRotation,this.fixedX=!!a.fixedX,this.fixedY=!!a.fixedY,this.massMultiplier=e.create(),this.position=e.fromValues(0,0),a.position&&e.copy(this.position,a.position),this.interpolatedPosition=e.fromValues(0,0),this.interpolatedAngle=0,this.previousPosition=e.fromValues(0,0),this.previousAngle=0,this.velocity=e.fromValues(0,0),a.velocity&&e.copy(this.velocity,a.velocity),this.vlambda=e.fromValues(0,0),this.wlambda=0,this.angle=a.angle||0,this.angularVelocity=a.angularVelocity||0,this.force=e.create(),a.force&&e.copy(this.force,a.force),this.angularForce=a.angularForce||0,this.damping="number"==typeof a.damping?a.damping:.1,this.angularDamping="number"==typeof a.angularDamping?a.angularDamping:.1,this.type=d.STATIC,"undefined"!=typeof a.type?this.type=a.type:a.mass?this.type=d.DYNAMIC:this.type=d.STATIC,this.boundingRadius=0,this.aabb=new j,this.aabbNeedsUpdate=!0,this.allowSleep=void 0!==a.allowSleep?a.allowSleep:!0, +this.wantsToSleep=!1,this.sleepState=d.AWAKE,this.sleepSpeedLimit=void 0!==a.sleepSpeedLimit?a.sleepSpeedLimit:.2,this.sleepTimeLimit=void 0!==a.sleepTimeLimit?a.sleepTimeLimit:1,this.gravityScale=void 0!==a.gravityScale?a.gravityScale:1,this.collisionResponse=void 0!==a.collisionResponse?a.collisionResponse:!0,this.idleTime=0,this.timeLastSleepy=0,this.ccdSpeedThreshold=void 0!==a.ccdSpeedThreshold?a.ccdSpeedThreshold:-1,this.ccdIterations=void 0!==a.ccdIterations?a.ccdIterations:10,this.concavePath=null,this._wakeUpAfterNarrowphase=!1,this.updateMassProperties()}var e=a("../math/vec2"),f=a("poly-decomp"),g=a("../shapes/Convex"),h=a("../collision/RaycastResult"),i=a("../collision/Ray"),j=a("../collision/AABB"),k=a("../events/EventEmitter");b.exports=d,d.prototype=new k,d.prototype.constructor=d,d._idCounter=0,d.prototype.updateSolveMassProperties=function(){this.sleepState===d.SLEEPING||this.type===d.KINEMATIC?(this.invMassSolve=0,this.invInertiaSolve=0):(this.invMassSolve=this.invMass,this.invInertiaSolve=this.invInertia)},d.prototype.setDensity=function(a){var b=this.getArea();this.mass=b*a,this.updateMassProperties()},d.prototype.getArea=function(){for(var a=0,b=0;bc&&(c=g+h)}this.boundingRadius=c},d.prototype.addShape=function(a,b,c){if(a.body)throw new Error("A shape can only be added to one body.");a.body=this,b?e.copy(a.position,b):e.set(a.position,0,0),a.angle=c||0,this.shapes.push(a),this.updateMassProperties(),this.updateBoundingRadius(),this.aabbNeedsUpdate=!0},d.prototype.removeShape=function(a){var b=this.shapes.indexOf(a);return-1!==b?(this.shapes.splice(b,1),this.aabbNeedsUpdate=!0,a.body=null,!0):!1},d.prototype.updateMassProperties=function(){if(this.type===d.STATIC||this.type===d.KINEMATIC)this.mass=Number.MAX_VALUE,this.invMass=0,this.inertia=Number.MAX_VALUE,this.invInertia=0;else{var a=this.shapes,b=a.length,c=this.mass/b,f=0;if(this.fixedRotation)this.inertia=Number.MAX_VALUE,this.invInertia=0;else{for(var g=0;b>g;g++){var h=a[g],i=e.squaredLength(h.position),j=h.computeMomentOfInertia(c);f+=j+c*i}this.inertia=f,this.invInertia=f>0?1/f:0}this.invMass=1/this.mass,e.set(this.massMultiplier,this.fixedX?0:1,this.fixedY?0:1)}};e.create();d.prototype.applyForce=function(a,b){if(e.add(this.force,this.force,a),b){var c=e.crossLength(b,a);this.angularForce+=c}};var n=e.create(),o=e.create(),p=e.create();d.prototype.applyForceLocal=function(a,b){b=b||p;var c=n,d=o;this.vectorToWorldFrame(c,a),this.vectorToWorldFrame(d,b),this.applyForce(c,d)};var q=e.create();d.prototype.applyImpulse=function(a,b){if(this.type===d.DYNAMIC){var c=q;if(e.scale(c,a,this.invMass),e.multiply(c,this.massMultiplier,c),e.add(this.velocity,c,this.velocity),b){var f=e.crossLength(b,a);f*=this.invInertia,this.angularVelocity+=f}}};var r=e.create(),s=e.create(),t=e.create();d.prototype.applyImpulseLocal=function(a,b){b=b||t;var c=r,d=s;this.vectorToWorldFrame(c,a),this.vectorToWorldFrame(d,b),this.applyImpulse(c,d)},d.prototype.toLocalFrame=function(a,b){e.toLocalFrame(a,b,this.position,this.angle)},d.prototype.toWorldFrame=function(a,b){e.toGlobalFrame(a,b,this.position,this.angle)},d.prototype.vectorToLocalFrame=function(a,b){e.vectorToLocalFrame(a,b,this.angle)},d.prototype.vectorToWorldFrame=function(a,b){e.vectorToGlobalFrame(a,b,this.angle)},d.prototype.fromPolygon=function(a,b){b=b||{};for(var c=this.shapes.length;c>=0;--c)this.removeShape(this.shapes[c]);var d=new f.Polygon;if(d.vertices=a,d.makeCCW(),"number"==typeof b.removeCollinearPoints&&d.removeCollinearPoints(b.removeCollinearPoints),"undefined"==typeof b.skipSimpleCheck&&!d.isSimple())return!1;this.concavePath=d.vertices.slice(0);for(var c=0;c=g?(this.idleTime=0,this.sleepState=d.AWAKE):(this.idleTime+=c,this.sleepState=d.SLEEPY),this.idleTime>this.sleepTimeLimit&&(b?this.wantsToSleep=!0:this.sleep())}},d.prototype.overlaps=function(a){return this.world.overlapKeeper.bodiesAreOverlapping(this,a)};var x=e.create(),y=e.create();d.prototype.integrate=function(a){var b=this.invMass,c=this.force,d=this.position,f=this.velocity;e.copy(this.previousPosition,this.position),this.previousAngle=this.angle,this.fixedRotation||(this.angularVelocity+=this.angularForce*this.invInertia*a),e.scale(x,c,a*b),e.multiply(x,this.massMultiplier,x),e.add(f,x,f),this.integrateToTimeOfImpact(a)||(e.scale(y,f,a),e.add(d,d,y),this.fixedRotation||(this.angle+=this.angularVelocity*a)),this.aabbNeedsUpdate=!0};var z=new h,A=new i({mode:i.ALL}),B=e.create(),C=e.create(),D=e.create(),E=e.create();d.prototype.integrateToTimeOfImpact=function(a){if(this.ccdSpeedThreshold<0||e.squaredLength(this.velocity)=j&&ir;r++){var s=this.radius*(2*r-1);f.set(o,-q,s),f.set(p,q,s),f.toGlobalFrame(o,o,c,d),f.toGlobalFrame(p,p,c,d);var t=f.getLineSegmentsIntersectionFraction(e,g,o,p);if(t>=0&&(f.rotate(n,l,d),f.scale(n,n,2*r-1),b.reportIntersection(a,t,n,-1),a.shouldStop(b)))return}for(var u=Math.pow(this.radius,2)+Math.pow(q,2),r=0;2>r;r++){f.set(o,q*(2*r-1),0),f.toGlobalFrame(o,o,c,d);var v=Math.pow(g[0]-e[0],2)+Math.pow(g[1]-e[1],2),w=2*((g[0]-e[0])*(e[0]-o[0])+(g[1]-e[1])*(e[1]-o[1])),x=Math.pow(e[0]-o[0],2)+Math.pow(e[1]-o[1],2)-Math.pow(this.radius,2),t=Math.pow(w,2)-4*v*x;if(!(0>t))if(0===t){if(f.lerp(m,e,g,t),f.squaredDistance(m,c)>u&&(f.sub(n,m,o),f.normalize(n,n),b.reportIntersection(a,t,n,-1),a.shouldStop(b)))return}else{var y=Math.sqrt(t),z=1/(2*v),A=(-w-y)*z,B=(-w+y)*z;if(A>=0&&1>=A&&(f.lerp(m,e,g,A),f.squaredDistance(m,c)>u&&(f.sub(n,m,o),f.normalize(n,n),b.reportIntersection(a,A,n,-1),a.shouldStop(b))))return;if(B>=0&&1>=B&&(f.lerp(m,e,g,B),f.squaredDistance(m,c)>u&&(f.sub(n,m,o),f.normalize(n,n),b.reportIntersection(a,B,n,-1),a.shouldStop(b))))return}}}},{"../math/vec2":30,"./Shape":45}],39:[function(a,b,c){function d(a){"number"==typeof arguments[0]&&(a={radius:arguments[0]},console.warn("The Circle constructor signature has changed. Please use the following format: new Circle({ radius: 1 })")),a=a||{},this.radius=a.radius||1,a.type=e.CIRCLE,e.call(this,a)}var e=a("./Shape"),f=a("../math/vec2");b.exports=d,d.prototype=new e,d.prototype.constructor=d,d.prototype.computeMomentOfInertia=function(a){var b=this.radius;return a*b*b/2},d.prototype.updateBoundingRadius=function(){this.boundingRadius=this.radius},d.prototype.updateArea=function(){this.area=Math.PI*this.radius*this.radius},d.prototype.computeAABB=function(a,b,c){var d=this.radius;f.set(a.upperBound,d,d),f.set(a.lowerBound,-d,-d),b&&(f.add(a.lowerBound,a.lowerBound,b),f.add(a.upperBound,a.upperBound,b))};var g=f.create(),h=f.create();d.prototype.raycast=function(a,b,c,d){var e=b.from,i=b.to,j=this.radius,k=Math.pow(i[0]-e[0],2)+Math.pow(i[1]-e[1],2),l=2*((i[0]-e[0])*(e[0]-c[0])+(i[1]-e[1])*(e[1]-c[1])),m=Math.pow(e[0]-c[0],2)+Math.pow(e[1]-c[1],2)-Math.pow(j,2),n=Math.pow(l,2)-4*k*m,o=g,p=h;if(!(0>n))if(0===n)f.lerp(o,e,i,n),f.sub(p,o,c),f.normalize(p,p),b.reportIntersection(a,n,p,-1);else{var q=Math.sqrt(n),r=1/(2*k),s=(-l-q)*r,t=(-l+q)*r;if(s>=0&&1>=s&&(f.lerp(o,e,i,s),f.sub(p,o,c),f.normalize(p,p),b.reportIntersection(a,s,p,-1),a.shouldStop(b)))return;t>=0&&1>=t&&(f.lerp(o,e,i,t),f.sub(p,o,c),f.normalize(p,p),b.reportIntersection(a,t,p,-1))}}},{"../math/vec2":30,"./Shape":45}],40:[function(a,b,c){function d(a){Array.isArray(arguments[0])&&(a={vertices:arguments[0],axes:arguments[1]},console.warn("The Convex constructor signature has changed. Please use the following format: new Convex({ vertices: [...], ... })")),a=a||{},this.vertices=[];for(var b=void 0!==a.vertices?a.vertices:[],c=0;ce)&&(e=d),(null===g||g>d)&&(g=d);if(g>e){var j=g;g=e,e=j}f.set(b,g,e)},d.prototype.projectOntoWorldAxis=function(a,b,c,d){var e=i;this.projectOntoLocalAxis(a,d),0!==c?f.rotate(e,a,c):e=a;var g=f.dot(b,e);f.set(d,d[0]+g,d[1]+g)},d.prototype.updateTriangles=function(){this.triangles.length=0;for(var a=[],b=0;bg;e=g,g++){var h=this.vertices[e],i=this.vertices[g],j=Math.abs(f.crossLength(h,i)),k=f.dot(i,i)+f.dot(i,h)+f.dot(h,h);b+=j*k,c+=j}return a/6*(b/c)},d.prototype.updateBoundingRadius=function(){for(var a=this.vertices,b=0,c=0;c!==a.length;c++){var d=f.squaredLength(a[c]);d>b&&(b=d)}this.boundingRadius=Math.sqrt(b)},d.triangleArea=function(a,b,c){return.5*((b[0]-a[0])*(c[1]-a[1])-(c[0]-a[0])*(b[1]-a[1]))},d.prototype.updateArea=function(){this.updateTriangles(),this.area=0;for(var a=this.triangles,b=this.vertices,c=0;c!==a.length;c++){var e=a[c],f=b[e[0]],g=b[e[1]],h=b[e[2]],i=d.triangleArea(f,g,h);this.area+=i}},d.prototype.computeAABB=function(a,b,c){a.setFromPoints(this.vertices,b,c,0)};var o=f.create(),p=f.create(),q=f.create();d.prototype.raycast=function(a,b,c,d){var e=o,g=p,h=q,i=this.vertices;f.toLocalFrame(e,b.from,c,d),f.toLocalFrame(g,b.to,c,d);for(var j=i.length,k=0;j>k&&!a.shouldStop(b);k++){var l=i[k],m=i[(k+1)%j],n=f.getLineSegmentsIntersectionFraction(e,g,l,m);n>=0&&(f.sub(h,m,l),f.rotate(h,h,-Math.PI/2+d),f.normalize(h,h),b.reportIntersection(a,n,h,k))}}},{"../math/polyk":29,"../math/vec2":30,"./Shape":45,"poly-decomp":5}],41:[function(a,b,c){function d(a){if(Array.isArray(arguments[0])){if(a={heights:arguments[0]},"object"==typeof arguments[1])for(var b in arguments[1])a[b]=arguments[1][b];console.warn("The Heightfield constructor signature has changed. Please use the following format: new Heightfield({ heights: [...], ... })")}a=a||{},this.heights=a.heights?a.heights.slice(0):[],this.maxValue=a.maxValue||null,this.minValue=a.minValue||null,this.elementWidth=a.elementWidth||.1,void 0!==a.maxValue&&void 0!==a.minValue||this.updateMaxMinValues(),a.type=e.HEIGHTFIELD,e.call(this,a)}var e=a("./Shape"),f=a("../math/vec2");a("../utils/Utils");b.exports=d,d.prototype=new e,d.prototype.constructor=d,d.prototype.updateMaxMinValues=function(){for(var a=this.heights,b=a[0],c=a[0],d=0;d!==a.length;d++){var e=a[d];e>b&&(b=e),c>e&&(c=e)}this.maxValue=b,this.minValue=c},d.prototype.computeMomentOfInertia=function(a){return Number.MAX_VALUE},d.prototype.updateBoundingRadius=function(){this.boundingRadius=Number.MAX_VALUE},d.prototype.updateArea=function(){for(var a=this.heights,b=0,c=0;cs){var t=r;r=s,s=t}for(var u=0;u=0&&(f.sub(m,o,n),f.rotate(m,m,d+Math.PI/2),f.normalize(m,m),b.reportIntersection(a,v,m,-1),a.shouldStop(b)))return}}},{"../math/vec2":30,"../utils/Utils":57,"./Shape":45}],42:[function(a,b,c){function d(a){"number"==typeof arguments[0]&&(a={length:arguments[0]},console.warn("The Line constructor signature has changed. Please use the following format: new Line({ length: 1, ... })")),a=a||{},this.length=a.length||1,a.type=e.LINE,e.call(this,a)}var e=a("./Shape"),f=a("../math/vec2");b.exports=d,d.prototype=new e,d.prototype.constructor=d,d.prototype.computeMomentOfInertia=function(a){return a*Math.pow(this.length,2)/12},d.prototype.updateBoundingRadius=function(){this.boundingRadius=this.length/2};var g=[f.create(),f.create()];d.prototype.computeAABB=function(a,b,c){var d=this.length/2;f.set(g[0],-d,0),f.set(g[1],d,0),a.setFromPoints(g,b,c,0)};var h=(f.create(),f.create()),i=f.create(),j=f.create(),k=f.fromValues(0,1);d.prototype.raycast=function(a,b,c,d){var e=b.from,g=b.to,l=i,m=j,n=this.length/2;f.set(l,-n,0),f.set(m,n,0),f.toGlobalFrame(l,l,c,d),f.toGlobalFrame(m,m,c,d);var o=f.getLineSegmentsIntersectionFraction(l,m,e,g);if(o>=0){var p=h;f.rotate(p,k,d),b.reportIntersection(a,o,p,-1)}}},{"../math/vec2":30,"./Shape":45}],43:[function(a,b,c){function d(a){a=a||{},a.type=e.PARTICLE,e.call(this,a)}var e=a("./Shape"),f=a("../math/vec2");b.exports=d,d.prototype=new e,d.prototype.constructor=d,d.prototype.computeMomentOfInertia=function(a){return 0},d.prototype.updateBoundingRadius=function(){this.boundingRadius=0},d.prototype.computeAABB=function(a,b,c){f.copy(a.lowerBound,b),f.copy(a.upperBound,b)}},{"../math/vec2":30,"./Shape":45}],44:[function(a,b,c){function d(a){a=a||{},a.type=e.PLANE,e.call(this,a)}var e=a("./Shape"),f=a("../math/vec2");a("../utils/Utils");b.exports=d,d.prototype=new e,d.prototype.constructor=d,d.prototype.computeMomentOfInertia=function(a){return 0},d.prototype.updateBoundingRadius=function(){this.boundingRadius=Number.MAX_VALUE},d.prototype.computeAABB=function(a,b,c){var d=c%(2*Math.PI),e=f.set,g=Number.MAX_VALUE,h=a.lowerBound,i=a.upperBound;0===d?(e(h,-g,-g),e(i,g,0)):d===Math.PI/2?(e(h,0,-g),e(i,g,g)):d===Math.PI?(e(h,-g,0),e(i,g,g)):d===3*Math.PI/2?(e(h,-g,-g),e(i,0,g)):(e(h,-g,-g),e(i,g,g)),f.add(h,h,b),f.add(i,i,b)},d.prototype.updateArea=function(){this.area=Number.MAX_VALUE};var g=f.create(),h=(f.create(),f.create(),f.create()),i=f.create();d.prototype.raycast=function(a,b,c,d){var e=b.from,j=b.to,k=b.direction,l=g,m=h,n=i;f.set(m,0,1),f.rotate(m,m,d),f.sub(n,e,c);var o=f.dot(n,m);f.sub(n,j,c);var p=f.dot(n,m);if(!(o*p>0||f.squaredDistance(e,j)=w*w)break}for(d.updateMultipliers(k,q,1/a),x=0;x!==l;x++){var z=k[x];if(z instanceof i){for(var A=0,B=0;B!==z.contactEquations.length;B++)A+=z.contactEquations[B].multiplier;A*=z.frictionCoefficient/z.contactEquations.length,z.maxForce=A,z.minForce=-A}}}for(c=0;c!==g;c++){for(w=0,x=0;x!==l;x++){v=k[x];var y=d.iterateEquation(x,v,v.epsilon,u,t,q,p,a,c);w+=Math.abs(y)}if(this.usedIterations++,m>=w*w)break}for(r=0;r!==o;r++)n[r].addConstraintVelocity();d.updateMultipliers(k,q,1/a)}},d.updateMultipliers=function(a,b,c){for(var d=a.length;d--;)a[d].multiplier=b[d]*c},d.iterateEquation=function(a,b,c,d,e,f,g,h,i){var j=d[a],k=e[a],l=f[a],m=b.computeGWlambda(),n=b.maxForce,o=b.minForce;g&&(j=0);var p=k*(j-m-c*l),q=l+p;return o*h>q?p=o*h-l:q>n*h&&(p=n*h-l),f[a]+=p,b.addToWlambda(p),p}},{"../equations/FrictionEquation":23,"../math/vec2":30,"../utils/Utils":57,"./Solver":47}],47:[function(a,b,c){function d(a,b){a=a||{},e.call(this),this.type=b,this.equations=[],this.equationSortFunction=a.equationSortFunction||!1}var e=(a("../utils/Utils"),a("../events/EventEmitter"));b.exports=d,d.prototype=new e,d.prototype.constructor=d,d.prototype.solve=function(a,b){throw new Error("Solver.solve should be implemented by subclasses!")};var f={bodies:[]};d.prototype.solveIsland=function(a,b){this.removeAllEquations(),b.equations.length&&(this.addEquations(b.equations),f.bodies.length=0,b.getBodies(f.bodies),f.bodies.length&&this.solve(a,f))},d.prototype.sortEquations=function(){this.equationSortFunction&&this.equations.sort(this.equationSortFunction)},d.prototype.addEquation=function(a){a.enabled&&this.equations.push(a)},d.prototype.addEquations=function(a){for(var b=0,c=a.length;b!==c;b++){var d=a[b];d.enabled&&this.equations.push(d)}},d.prototype.removeEquation=function(a){var b=this.equations.indexOf(a);-1!==b&&this.equations.splice(b,1)},d.prototype.removeAllEquations=function(){this.equations.length=0},d.GS=1,d.ISLAND=2},{"../events/EventEmitter":26,"../utils/Utils":57}],48:[function(a,b,c){function d(){f.apply(this,arguments)}var e=a("../equations/ContactEquation"),f=a("./Pool");b.exports=d,d.prototype=new f,d.prototype.constructor=d,d.prototype.create=function(){return new e},d.prototype.destroy=function(a){return a.bodyA=a.bodyB=null,this}},{"../equations/ContactEquation":21,"./Pool":55}],49:[function(a,b,c){function d(){f.apply(this,arguments)}var e=a("../equations/FrictionEquation"),f=a("./Pool");b.exports=d,d.prototype=new f,d.prototype.constructor=d,d.prototype.create=function(){return new e},d.prototype.destroy=function(a){return a.bodyA=a.bodyB=null,this}},{"../equations/FrictionEquation":23,"./Pool":55}],50:[function(a,b,c){function d(){f.apply(this,arguments)}var e=a("../world/IslandNode"),f=a("./Pool");b.exports=d,d.prototype=new f,d.prototype.constructor=d,d.prototype.create=function(){return new e},d.prototype.destroy=function(a){return a.reset(),this}},{"../world/IslandNode":60,"./Pool":55}],51:[function(a,b,c){function d(){f.apply(this,arguments)}var e=a("../world/Island"),f=a("./Pool");b.exports=d,d.prototype=new f,d.prototype.constructor=d,d.prototype.create=function(){return new e},d.prototype.destroy=function(a){return a.reset(),this}},{"../world/Island":58,"./Pool":55}],52:[function(a,b,c){function d(){this.overlappingShapesLastState=new e,this.overlappingShapesCurrentState=new e,this.recordPool=new f({size:16}),this.tmpDict=new e,this.tmpArray1=[]}var e=a("./TupleDictionary"),f=(a("./OverlapKeeperRecord"),a("./OverlapKeeperRecordPool"));a("./Utils");b.exports=d,d.prototype.tick=function(){for(var a=this.overlappingShapesLastState,b=this.overlappingShapesCurrentState,c=a.keys.length;c--;){var d=a.keys[c],e=a.getByKey(d);b.getByKey(d);e&&this.recordPool.release(e)}a.reset(),a.copy(b),b.reset()},d.prototype.setOverlapping=function(a,b,c,d){var e=(this.overlappingShapesLastState,this.overlappingShapesCurrentState);if(!e.get(b.id,d.id)){var f=this.recordPool.get();f.set(a,b,c,d),e.set(b.id,d.id,f)}},d.prototype.getNewOverlaps=function(a){return this.getDiff(this.overlappingShapesLastState,this.overlappingShapesCurrentState,a)},d.prototype.getEndOverlaps=function(a){return this.getDiff(this.overlappingShapesCurrentState,this.overlappingShapesLastState,a)},d.prototype.bodiesAreOverlapping=function(a,b){for(var c=this.overlappingShapesCurrentState,d=c.keys.length;d--;){var e=c.keys[d],f=c.data[e];if(f.bodyA===a&&f.bodyB===b||f.bodyA===b&&f.bodyB===a)return!0}return!1},d.prototype.getDiff=function(a,b,c){var c=c||[],d=a,e=b;c.length=0;for(var f=e.keys.length;f--;){var g=e.keys[f],h=e.data[g];if(!h)throw new Error("Key "+g+" had no data!");var i=d.data[g];i||c.push(h)}return c},d.prototype.isNewOverlap=function(a,b){var c=0|a.id,d=0|b.id,e=this.overlappingShapesLastState,f=this.overlappingShapesCurrentState;return!e.get(c,d)&&!!f.get(c,d)},d.prototype.getNewBodyOverlaps=function(a){this.tmpArray1.length=0;var b=this.getNewOverlaps(this.tmpArray1);return this.getBodyDiff(b,a)},d.prototype.getEndBodyOverlaps=function(a){this.tmpArray1.length=0;var b=this.getEndOverlaps(this.tmpArray1);return this.getBodyDiff(b,a)},d.prototype.getBodyDiff=function(a,b){b=b||[];for(var c=this.tmpDict,d=a.length;d--;){var e=a[d];c.set(0|e.bodyA.id,0|e.bodyB.id,e)}for(d=c.keys.length;d--;){var e=c.getByKey(c.keys[d]);e&&b.push(e.bodyA,e.bodyB)}return c.reset(),b}},{"./OverlapKeeperRecord":53,"./OverlapKeeperRecordPool":54,"./TupleDictionary":56,"./Utils":57}],53:[function(a,b,c){function d(a,b,c,d){this.shapeA=b,this.shapeB=d,this.bodyA=a,this.bodyB=c}b.exports=d,d.prototype.set=function(a,b,c,e){d.call(this,a,b,c,e)}},{}],54:[function(a,b,c){function d(){f.apply(this,arguments)}var e=a("./OverlapKeeperRecord"),f=a("./Pool");b.exports=d,d.prototype=new f,d.prototype.constructor=d,d.prototype.create=function(){return new e},d.prototype.destroy=function(a){return a.bodyA=a.bodyB=a.shapeA=a.shapeB=null,this}},{"./OverlapKeeperRecord":53,"./Pool":55}],55:[function(a,b,c){function d(a){a=a||{},this.objects=[],void 0!==a.size&&this.resize(a.size)}b.exports=d,d.prototype.resize=function(a){for(var b=this.objects;b.length>a;)b.pop();for(;b.length(0|b)?a<<16|65535&b:b<<16|65535&a)},d.prototype.getByKey=function(a){return a=0|a,this.data[a]},d.prototype.get=function(a,b){return this.data[this.getKey(a,b)]},d.prototype.set=function(a,b,c){if(!c)throw new Error("No data!");var d=this.getKey(a,b);return this.data[d]||this.keys.push(d),this.data[d]=c,d},d.prototype.reset=function(){for(var a=this.data,b=this.keys,c=b.length;c--;)delete a[b[c]];b.length=0},d.prototype.copy=function(a){this.reset(),e.appendArray(this.keys,a.keys);for(var b=a.keys.length;b--;){var c=a.keys[b];this.data[c]=a.data[c]}}},{"./Utils":57}],57:[function(a,b,c){function d(){}b.exports=d,d.appendArray=function(a,b){if(b.length<15e4)a.push.apply(a,b);else for(var c=0,d=b.length;c!==d;++c)a.push(b[c])},d.splice=function(a,b,c){c=c||1;for(var d=b,e=a.length-c;e>d;d++)a[d]=a[d+c];a.length=e},"undefined"!=typeof P2_ARRAY_TYPE?d.ARRAY_TYPE=P2_ARRAY_TYPE:"undefined"!=typeof Float32Array?d.ARRAY_TYPE=Float32Array:d.ARRAY_TYPE=Array,d.extend=function(a,b){for(var c in b)a[c]=b[c]},d.defaults=function(a,b){a=a||{};for(var c in b)c in a||(a[c]=b[c]);return a}},{}],58:[function(a,b,c){function d(){this.equations=[],this.bodies=[]}var e=a("../objects/Body");b.exports=d,d.prototype.reset=function(){this.equations.length=this.bodies.length=0};var f=[];d.prototype.getBodies=function(a){var b=a||[],c=this.equations;f.length=0;for(var d=0;d!==c.length;d++){var e=c[d];-1===f.indexOf(e.bodyA.id)&&(b.push(e.bodyA),f.push(e.bodyA.id)),-1===f.indexOf(e.bodyB.id)&&(b.push(e.bodyB),f.push(e.bodyB.id))}return b},d.prototype.wantsToSleep=function(){for(var a=0;a=a&&c>d;)this.internalStep(a),this.time+=a,this.accumulator-=a,d++;for(var e=this.accumulator%a/a,g=0;g!==this.bodies.length;g++){var h=this.bodies[g];f.lerp(h.interpolatedPosition,h.previousPosition,h.position,e),h.interpolatedAngle=h.previousAngle+e*(h.angle-h.previousAngle)}}};var y=[];d.prototype.internalStep=function(a){this.stepping=!0;var b=this.springs.length,c=this.springs,e=this.bodies,g=this.gravity,h=this.solver,i=this.bodies.length,j=this.broadphase,k=this.narrowphase,l=this.constraints,n=v,o=(f.scale,f.add),p=(f.rotate,this.islandManager);if(this.overlapKeeper.tick(),this.lastTimeStep=a,this.useWorldGravityAsFrictionGravity){var q=f.length(this.gravity);0===q&&this.useFrictionGravityOnZeroGravity||(this.frictionGravity=q)}if(this.applyGravity)for(var r=0;r!==i;r++){var t=e[r],u=t.force;t.type===m.DYNAMIC&&t.sleepState!==m.SLEEPING&&(f.scale(n,g,t.mass*t.gravityScale),o(u,u,n))}if(this.applySpringForces)for(var r=0;r!==b;r++){var w=c[r];w.applyForce()}if(this.applyDamping)for(var r=0;r!==i;r++){var t=e[r];t.type===m.DYNAMIC&&t.applyDamping(a)}for(var x=j.getCollisionPairs(this),z=this.disabledBodyCollisionPairs,r=z.length-2;r>=0;r-=2)for(var A=x.length-2;A>=0;A-=2)(z[r]===x[A]&&z[r+1]===x[A+1]||z[r+1]===x[A]&&z[r]===x[A+1])&&x.splice(A,2);var B=l.length;for(r=0;r!==B;r++){var C=l[r];if(!C.collideConnected)for(var A=x.length-2;A>=0;A-=2)(C.bodyA===x[A]&&C.bodyB===x[A+1]||C.bodyB===x[A]&&C.bodyA===x[A+1])&&x.splice(A,2)}this.postBroadphaseEvent.pairs=x,this.emit(this.postBroadphaseEvent),this.postBroadphaseEvent.pairs=null,k.reset(this);for(var r=0,D=x.length;r!==D;r+=2)for(var E=x[r],F=x[r+1],G=0,H=E.shapes.length;G!==H;G++)for(var I=E.shapes[G],J=I.position,K=I.angle,L=0,M=F.shapes.length;L!==M;L++){var N=F.shapes[L],O=N.position,P=N.angle,Q=this.defaultContactMaterial;if(I.material&&N.material){var R=this.getContactMaterial(I.material,N.material);R&&(Q=R)}this.runNarrowphase(k,E,I,J,K,F,N,O,P,Q,this.frictionGravity)}for(var r=0;r!==i;r++){var S=e[r];S._wakeUpAfterNarrowphase&&(S.wakeUp(),S._wakeUpAfterNarrowphase=!1)}if(this.has("endContact")){this.overlapKeeper.getEndOverlaps(y);for(var T=this.endContactEvent,L=y.length;L--;){var U=y[L];T.shapeA=U.shapeA,T.shapeB=U.shapeB,T.bodyA=U.bodyA,T.bodyB=U.bodyB,this.emit(T)}y.length=0}var V=this.preSolveEvent;V.contactEquations=k.contactEquations,V.frictionEquations=k.frictionEquations,this.emit(V),V.contactEquations=V.frictionEquations=null;var B=l.length;for(r=0;r!==B;r++)l[r].update();if(k.contactEquations.length||k.frictionEquations.length||B)if(this.islandSplit){for(p.equations.length=0,s.appendArray(p.equations,k.contactEquations),s.appendArray(p.equations,k.frictionEquations),r=0;r!==B;r++)s.appendArray(p.equations,l[r].equations);p.split(this);for(var r=0;r!==p.islands.length;r++){var W=p.islands[r];W.equations.length&&h.solveIsland(a,W)}}else{for(h.addEquations(k.contactEquations),h.addEquations(k.frictionEquations),r=0;r!==B;r++)h.addEquations(l[r].equations);this.solveConstraints&&h.solve(a,this),h.removeAllEquations()}for(var r=0;r!==i;r++){var S=e[r];S.integrate(a)}for(var r=0;r!==i;r++)e[r].setZeroForce();if(this.emitImpactEvent&&this.has("impact"))for(var X=this.impactEvent,r=0;r!==k.contactEquations.length;r++){var Y=k.contactEquations[r];Y.firstImpact&&(X.bodyA=Y.bodyA,X.bodyB=Y.bodyB,X.shapeA=Y.shapeA,X.shapeB=Y.shapeB,X.contactEquation=Y,this.emit(X))}if(this.sleepMode===d.BODY_SLEEPING)for(r=0;r!==i;r++)e[r].sleepTick(this.time,!1,a);else if(this.sleepMode===d.ISLAND_SLEEPING&&this.islandSplit){for(r=0;r!==i;r++)e[r].sleepTick(this.time,!0,a);for(var r=0;r0,a.frictionCoefficient=k.friction;var p;p=b.type===m.STATIC||b.type===m.KINEMATIC?g.mass:g.type===m.STATIC||g.type===m.KINEMATIC?b.mass:b.mass*g.mass/(b.mass+g.mass),a.slipForce=k.friction*l*p,a.restitution=k.restitution,a.surfaceVelocity=k.surfaceVelocity,a.frictionStiffness=k.frictionStiffness,a.frictionRelaxation=k.frictionRelaxation,a.stiffness=k.stiffness,a.relaxation=k.relaxation,a.contactSkinSize=k.contactSkinSize,a.enabledEquations=b.collisionResponse&&g.collisionResponse&&c.collisionResponse&&h.collisionResponse;var q=a[c.type|h.type],r=0;if(q){var s=c.sensor||h.sensor,t=a.frictionEquations.length;r=c.type=2*y&&(b._wakeUpAfterNarrowphase=!0)}if(g.allowSleep&&g.type===m.DYNAMIC&&g.sleepState===m.SLEEPING&&b.sleepState===m.AWAKE&&b.type!==m.STATIC){var z=f.squaredLength(b.velocity)+Math.pow(b.angularVelocity,2),A=Math.pow(b.sleepSpeedLimit,2);z>=2*A&&(g._wakeUpAfterNarrowphase=!0)}if(this.overlapKeeper.setOverlapping(b,c,g,h),this.has("beginContact")&&this.overlapKeeper.isNewOverlap(c,h)){var B=this.beginContactEvent;if(B.shapeA=c,B.shapeB=h,B.bodyA=b,B.bodyB=g,B.contactEquations.length=0,"number"==typeof r)for(var C=a.contactEquations.length-r;C1)for(var C=a.frictionEquations.length-u;C=0;b--)this.removeConstraint(a[b]);for(var c=this.bodies,b=c.length-1;b>=0;b--)this.removeBody(c[b]);for(var e=this.springs,b=e.length-1;b>=0;b--)this.removeSpring(e[b]);for(var f=this.contactMaterials,b=f.length-1;b>=0;b--)this.removeContactMaterial(f[b]);d.apply(this)};var z=f.create(),A=(f.fromValues(0,0),f.fromValues(0,0));d.prototype.hitTest=function(a,b,c){c=c||0;var d=new m({position:a}),e=new k,l=a,n=0,o=z,p=A;d.addShape(e);for(var q=this.narrowphase,r=[],s=0,t=b.length;s!==t;s++)for(var u=b[s],v=0,w=u.shapes.length;v!==w;v++){var x=u.shapes[v];f.rotate(o,x.position,u.angle),f.add(o,o,u.position);var y=x.angle+u.angle;(x instanceof g&&q.circleParticle(u,x,o,y,d,e,l,n,!0)||x instanceof h&&q.particleConvex(d,e,l,n,u,x,o,y,!0)||x instanceof i&&q.particlePlane(d,e,l,n,u,x,o,y,!0)||x instanceof j&&q.particleCapsule(d,e,l,n,u,x,o,y,!0)||x instanceof k&&f.squaredLength(f.sub(p,o,a))=0&&b<=this.children.length)return a.parent&&a.parent.removeChild(a),a.parent=this,this.children.splice(b,0,a),this.stage&&a.setStageReference(this.stage),a;throw new Error(a+"addChildAt: The index "+b+" supplied is out of bounds "+this.children.length)},b.DisplayObjectContainer.prototype.swapChildren=function(a,b){if(a!==b){var c=this.getChildIndex(a),d=this.getChildIndex(b);if(0>c||0>d)throw new Error("swapChildren: Both the supplied DisplayObjects must be a child of the caller.");this.children[c]=b,this.children[d]=a}},b.DisplayObjectContainer.prototype.getChildIndex=function(a){var b=this.children.indexOf(a);if(-1===b)throw new Error("The supplied DisplayObject must be a child of the caller");return b},b.DisplayObjectContainer.prototype.setChildIndex=function(a,b){if(0>b||b>=this.children.length)throw new Error("The supplied index is out of bounds");var c=this.getChildIndex(a);this.children.splice(c,1),this.children.splice(b,0,a)},b.DisplayObjectContainer.prototype.getChildAt=function(a){if(0>a||a>=this.children.length)throw new Error("getChildAt: Supplied index "+a+" does not exist in the child list, or the supplied DisplayObject must be a child of the caller");return this.children[a]},b.DisplayObjectContainer.prototype.removeChild=function(a){var b=this.children.indexOf(a);if(-1!==b)return this.removeChildAt(b)},b.DisplayObjectContainer.prototype.removeChildAt=function(a){ +var b=this.getChildAt(a);return this.stage&&b.removeStageReference(),b.parent=void 0,this.children.splice(a,1),b},b.DisplayObjectContainer.prototype.removeChildren=function(a,b){var c=a||0,d="number"==typeof b?b:this.children.length,e=d-c;if(e>0&&d>=e){for(var f=this.children.splice(c,e),g=0;gc?g:c,h=h>d?h:d)}if(!i)return b.EmptyRectangle;var l=this._bounds;return l.x=e,l.y=f,l.width=g-e,l.height=h-f,l},b.DisplayObjectContainer.prototype.getLocalBounds=function(){var a=this.worldTransform;this.worldTransform=b.identityMatrix;for(var c=0;ci){i*=-1;var s=d;d=-e,e=-s}if(0>l){l*=-1;var s=f;f=-g,g=-s}q=i*e+m,o=i*d+m,r=l*g+n,p=l*f+n}else{var t=i*e+k*g+m,u=l*g+j*e+n,v=i*d+k*g+m,w=l*g+j*d+n,x=i*d+k*f+m,y=l*f+j*d+n,z=i*e+k*f+m,A=l*f+j*e+n;q=q>t?t:q,q=q>v?v:q,q=q>x?x:q,q=q>z?z:q,r=r>u?u:r,r=r>w?w:r,r=r>y?y:r,r=r>A?A:r,o=t>o?t:o,o=v>o?v:o,o=x>o?x:o,o=z>o?z:o,p=u>p?u:p,p=w>p?w:p,p=y>p?y:p,p=A>p?A:p}var B=this._bounds;return B.x=q,B.width=o-q,B.y=r,B.height=p-r,this._currentBounds=B,B},b.Sprite.prototype._renderWebGL=function(a,b){if(this.visible&&!(this.alpha<=0)&&this.renderable){var c=this.worldTransform;if(b&&(c=b),this._mask||this._filters){var d=a.spriteBatch;this._filters&&(d.flush(),a.filterManager.pushFilter(this._filterBlock)),this._mask&&(d.stop(),a.maskManager.pushMask(this.mask,a),d.start()),d.render(this);for(var e=0;e>16&255)/255,(a>>8&255)/255,(255&a)/255]},b.rgb2hex=function(a){return(255*a[0]<<16)+(255*a[1]<<8)+255*a[2]},b.canUseNewCanvasBlendModes=function(){if(void 0===document)return!1;var a="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAQAAAABAQMAAADD8p2OAAAAA1BMVEX/",c="AAAACklEQVQI12NgAAAAAgAB4iG8MwAAAABJRU5ErkJggg==",d=new Image;d.src=a+"AP804Oa6"+c;var e=new Image;e.src=a+"/wCKxvRF"+c;var f=b.CanvasPool.create(this,6,1),g=f.getContext("2d");if(g.globalCompositeOperation="multiply",g.drawImage(d,0,0),g.drawImage(e,2,0),!g.getImageData(2,0,1,1))return!1;var h=g.getImageData(2,0,1,1).data;return b.CanvasPool.remove(this),255===h[0]&&0===h[1]&&0===h[2]},b.getNextPowerOfTwo=function(a){if(a>0&&0===(a&a-1))return a;for(var b=1;a>b;)b<<=1;return b},b.isPowerOfTwo=function(a,b){return a>0&&0===(a&a-1)&&b>0&&0===(b&b-1)},b.CanvasPool={create:function(a,c,d){var e,f=b.CanvasPool.getFirst();if(-1===f){var g={parent:a,canvas:document.createElement("canvas")};b.CanvasPool.pool.push(g),e=g.canvas}else b.CanvasPool.pool[f].parent=a,e=b.CanvasPool.pool[f].canvas;return void 0!==c&&(e.width=c,e.height=d),e},getFirst:function(){for(var a=b.CanvasPool.pool,c=0;cd;d+=6,e+=4)this.indices[d+0]=e+0,this.indices[d+1]=e+1,this.indices[d+2]=e+2,this.indices[d+3]=e+0,this.indices[d+4]=e+2,this.indices[d+5]=e+3;this.drawing=!1,this.currentBatchSize=0,this.currentBaseTexture=null,this.dirty=!0,this.textures=[],this.blendModes=[],this.shaders=[],this.sprites=[],this.defaultShader=new b.AbstractFilter(["precision lowp float;","varying vec2 vTextureCoord;","varying vec4 vColor;","uniform sampler2D uSampler;","void main(void) {"," gl_FragColor = texture2D(uSampler, vTextureCoord) * vColor ;","}"])},b.WebGLSpriteBatch.prototype.setContext=function(a){this.gl=a,this.vertexBuffer=a.createBuffer(),this.indexBuffer=a.createBuffer(),a.bindBuffer(a.ELEMENT_ARRAY_BUFFER,this.indexBuffer),a.bufferData(a.ELEMENT_ARRAY_BUFFER,this.indices,a.STATIC_DRAW),a.bindBuffer(a.ARRAY_BUFFER,this.vertexBuffer),a.bufferData(a.ARRAY_BUFFER,this.vertices,a.DYNAMIC_DRAW),this.currentBlendMode=99999;var c=new b.PixiShader(a);c.fragmentSrc=this.defaultShader.fragmentSrc,c.uniforms={},c.init(),this.defaultShader.shaders[a.id]=c},b.WebGLSpriteBatch.prototype.begin=function(a){this.renderSession=a,this.shader=this.renderSession.shaderManager.defaultShader,this.start()},b.WebGLSpriteBatch.prototype.end=function(){this.flush()},b.WebGLSpriteBatch.prototype.render=function(a,b){var c=a.texture,d=a.worldTransform;b&&(d=b),this.currentBatchSize>=this.size&&(this.flush(),this.currentBaseTexture=c.baseTexture);var e=c._uvs;if(e){var f,g,h,i,j=a.anchor.x,k=a.anchor.y;if(c.trim){var l=c.trim;g=l.x-j*l.width,f=g+c.crop.width,i=l.y-k*l.height,h=i+c.crop.height}else f=c.frame.width*(1-j),g=c.frame.width*-j,h=c.frame.height*(1-k),i=c.frame.height*-k;var m=4*this.currentBatchSize*this.vertSize,n=c.baseTexture.resolution,o=d.a/n,p=d.b/n,q=d.c/n,r=d.d/n,s=d.tx,t=d.ty,u=this.colors,v=this.positions;this.renderSession.roundPixels?(v[m]=o*g+q*i+s|0,v[m+1]=r*i+p*g+t|0,v[m+5]=o*f+q*i+s|0,v[m+6]=r*i+p*f+t|0,v[m+10]=o*f+q*h+s|0,v[m+11]=r*h+p*f+t|0,v[m+15]=o*g+q*h+s|0,v[m+16]=r*h+p*g+t|0):(v[m]=o*g+q*i+s,v[m+1]=r*i+p*g+t,v[m+5]=o*f+q*i+s,v[m+6]=r*i+p*f+t,v[m+10]=o*f+q*h+s,v[m+11]=r*h+p*f+t,v[m+15]=o*g+q*h+s,v[m+16]=r*h+p*g+t),v[m+2]=e.x0,v[m+3]=e.y0,v[m+7]=e.x1,v[m+8]=e.y1,v[m+12]=e.x2,v[m+13]=e.y2,v[m+17]=e.x3,v[m+18]=e.y3;var w=a.tint;u[m+4]=u[m+9]=u[m+14]=u[m+19]=(w>>16)+(65280&w)+((255&w)<<16)+(255*a.worldAlpha<<24),this.sprites[this.currentBatchSize++]=a}},b.WebGLSpriteBatch.prototype.renderTilingSprite=function(a){var c=a.tilingTexture;this.currentBatchSize>=this.size&&(this.flush(),this.currentBaseTexture=c.baseTexture),a._uvs||(a._uvs=new b.TextureUvs);var d=a._uvs,e=c.baseTexture.width,f=c.baseTexture.height;a.tilePosition.x%=e*a.tileScaleOffset.x,a.tilePosition.y%=f*a.tileScaleOffset.y;var g=a.tilePosition.x/(e*a.tileScaleOffset.x),h=a.tilePosition.y/(f*a.tileScaleOffset.y),i=a.width/e/(a.tileScale.x*a.tileScaleOffset.x),j=a.height/f/(a.tileScale.y*a.tileScaleOffset.y);d.x0=0-g,d.y0=0-h,d.x1=1*i-g,d.y1=0-h,d.x2=1*i-g,d.y2=1*j-h,d.x3=0-g,d.y3=1*j-h;var k=a.tint,l=(k>>16)+(65280&k)+((255&k)<<16)+(255*a.worldAlpha<<24),m=this.positions,n=this.colors,o=a.width,p=a.height,q=a.anchor.x,r=a.anchor.y,s=o*(1-q),t=o*-q,u=p*(1-r),v=p*-r,w=4*this.currentBatchSize*this.vertSize,x=c.baseTexture.resolution,y=a.worldTransform,z=y.a/x,A=y.b/x,B=y.c/x,C=y.d/x,D=y.tx,E=y.ty;m[w++]=z*t+B*v+D,m[w++]=C*v+A*t+E,m[w++]=d.x0,m[w++]=d.y0,n[w++]=l,m[w++]=z*s+B*v+D,m[w++]=C*v+A*s+E,m[w++]=d.x1,m[w++]=d.y1,n[w++]=l,m[w++]=z*s+B*u+D,m[w++]=C*u+A*s+E,m[w++]=d.x2,m[w++]=d.y2,n[w++]=l,m[w++]=z*t+B*u+D,m[w++]=C*u+A*t+E,m[w++]=d.x3,m[w++]=d.y3,n[w++]=l,this.sprites[this.currentBatchSize++]=a},b.WebGLSpriteBatch.prototype.flush=function(){if(0!==this.currentBatchSize){var a,c=this.gl;if(this.dirty){this.dirty=!1,c.activeTexture(c.TEXTURE0),c.bindBuffer(c.ARRAY_BUFFER,this.vertexBuffer),c.bindBuffer(c.ELEMENT_ARRAY_BUFFER,this.indexBuffer),a=this.defaultShader.shaders[c.id];var d=4*this.vertSize;c.vertexAttribPointer(a.aVertexPosition,2,c.FLOAT,!1,d,0),c.vertexAttribPointer(a.aTextureCoord,2,c.FLOAT,!1,d,8),c.vertexAttribPointer(a.colorAttribute,4,c.UNSIGNED_BYTE,!0,d,16)}if(this.currentBatchSize>.5*this.size)c.bufferSubData(c.ARRAY_BUFFER,0,this.vertices);else{var e=this.positions.subarray(0,4*this.currentBatchSize*this.vertSize);c.bufferSubData(c.ARRAY_BUFFER,0,e)}for(var f,g,h,i,j=0,k=0,l=null,m=this.renderSession.blendModeManager.currentBlendMode,n=null,o=!1,p=!1,q=0,r=this.currentBatchSize;r>q;q++){i=this.sprites[q],f=i.tilingTexture?i.tilingTexture.baseTexture:i.texture.baseTexture,g=i.blendMode,h=i.shader||this.defaultShader,o=m!==g,p=n!==h;var s=f.skipRender;if(s&&i.children.length>0&&(s=!1),(l!==f&&!s||o||p)&&(this.renderBatch(l,j,k),k=q,j=0,l=f,o&&(m=g,this.renderSession.blendModeManager.setBlendMode(m)),p)){n=h,a=n.shaders[c.id],a||(a=new b.PixiShader(c),a.fragmentSrc=n.fragmentSrc,a.uniforms=n.uniforms,a.init(),n.shaders[c.id]=a),this.renderSession.shaderManager.setShader(a),a.dirty&&a.syncUniforms();var t=this.renderSession.projection;c.uniform2f(a.projectionVector,t.x,t.y);var u=this.renderSession.offset;c.uniform2f(a.offsetVector,u.x,u.y)}j++}this.renderBatch(l,j,k),this.currentBatchSize=0}},b.WebGLSpriteBatch.prototype.renderBatch=function(a,b,c){if(0!==b){var d=this.gl;if(a._dirty[d.id]){if(!this.renderSession.renderer.updateTexture(a))return}else d.bindTexture(d.TEXTURE_2D,a._glTextures[d.id]);d.drawElements(d.TRIANGLES,6*b,d.UNSIGNED_SHORT,6*c*2),this.renderSession.drawCount++}},b.WebGLSpriteBatch.prototype.stop=function(){this.flush(),this.dirty=!0},b.WebGLSpriteBatch.prototype.start=function(){this.dirty=!0},b.WebGLSpriteBatch.prototype.destroy=function(){this.vertices=null,this.indices=null,this.gl.deleteBuffer(this.vertexBuffer),this.gl.deleteBuffer(this.indexBuffer),this.currentBaseTexture=null,this.gl=null},b.WebGLFastSpriteBatch=function(a){this.vertSize=10,this.maxSize=6e3,this.size=this.maxSize;var c=4*this.size*this.vertSize,d=6*this.maxSize;this.vertices=new b.Float32Array(c),this.indices=new b.Uint16Array(d),this.vertexBuffer=null,this.indexBuffer=null,this.lastIndexCount=0;for(var e=0,f=0;d>e;e+=6,f+=4)this.indices[e+0]=f+0,this.indices[e+1]=f+1,this.indices[e+2]=f+2,this.indices[e+3]=f+0,this.indices[e+4]=f+2,this.indices[e+5]=f+3;this.drawing=!1,this.currentBatchSize=0,this.currentBaseTexture=null,this.currentBlendMode=0,this.renderSession=null,this.shader=null,this.matrix=null,this.setContext(a)},b.WebGLFastSpriteBatch.prototype.constructor=b.WebGLFastSpriteBatch,b.WebGLFastSpriteBatch.prototype.setContext=function(a){this.gl=a,this.vertexBuffer=a.createBuffer(),this.indexBuffer=a.createBuffer(),a.bindBuffer(a.ELEMENT_ARRAY_BUFFER,this.indexBuffer),a.bufferData(a.ELEMENT_ARRAY_BUFFER,this.indices,a.STATIC_DRAW),a.bindBuffer(a.ARRAY_BUFFER,this.vertexBuffer),a.bufferData(a.ARRAY_BUFFER,this.vertices,a.DYNAMIC_DRAW)},b.WebGLFastSpriteBatch.prototype.begin=function(a,b){this.renderSession=b,this.shader=this.renderSession.shaderManager.fastShader,this.matrix=a.worldTransform.toArray(!0),this.start()},b.WebGLFastSpriteBatch.prototype.end=function(){this.flush()},b.WebGLFastSpriteBatch.prototype.render=function(a){var b=a.children,c=b[0];if(c.texture._uvs){this.currentBaseTexture=c.texture.baseTexture,c.blendMode!==this.renderSession.blendModeManager.currentBlendMode&&(this.flush(),this.renderSession.blendModeManager.setBlendMode(c.blendMode));for(var d=0,e=b.length;e>d;d++)this.renderSprite(b[d]);this.flush()}},b.WebGLFastSpriteBatch.prototype.renderSprite=function(a){if(a.visible&&(a.texture.baseTexture===this.currentBaseTexture||a.texture.baseTexture.skipRender||(this.flush(),this.currentBaseTexture=a.texture.baseTexture,a.texture._uvs))){var b,c,d,e,f,g,h,i,j=this.vertices;if(b=a.texture._uvs,c=a.texture.frame.width,d=a.texture.frame.height,a.texture.trim){var k=a.texture.trim;f=k.x-a.anchor.x*k.width,e=f+a.texture.crop.width,h=k.y-a.anchor.y*k.height,g=h+a.texture.crop.height}else e=a.texture.frame.width*(1-a.anchor.x),f=a.texture.frame.width*-a.anchor.x,g=a.texture.frame.height*(1-a.anchor.y),h=a.texture.frame.height*-a.anchor.y;i=4*this.currentBatchSize*this.vertSize,j[i++]=f,j[i++]=h,j[i++]=a.position.x,j[i++]=a.position.y,j[i++]=a.scale.x,j[i++]=a.scale.y,j[i++]=a.rotation,j[i++]=b.x0,j[i++]=b.y1,j[i++]=a.alpha,j[i++]=e,j[i++]=h,j[i++]=a.position.x,j[i++]=a.position.y,j[i++]=a.scale.x,j[i++]=a.scale.y,j[i++]=a.rotation,j[i++]=b.x1,j[i++]=b.y1,j[i++]=a.alpha,j[i++]=e,j[i++]=g,j[i++]=a.position.x,j[i++]=a.position.y,j[i++]=a.scale.x,j[i++]=a.scale.y,j[i++]=a.rotation,j[i++]=b.x2,j[i++]=b.y2,j[i++]=a.alpha,j[i++]=f,j[i++]=g,j[i++]=a.position.x,j[i++]=a.position.y,j[i++]=a.scale.x,j[i++]=a.scale.y,j[i++]=a.rotation,j[i++]=b.x3,j[i++]=b.y3,j[i++]=a.alpha,this.currentBatchSize++,this.currentBatchSize>=this.size&&this.flush()}},b.WebGLFastSpriteBatch.prototype.flush=function(){if(0!==this.currentBatchSize){var a=this.gl;if(this.currentBaseTexture._glTextures[a.id]||this.renderSession.renderer.updateTexture(this.currentBaseTexture,a),a.bindTexture(a.TEXTURE_2D,this.currentBaseTexture._glTextures[a.id]),this.currentBatchSize>.5*this.size)a.bufferSubData(a.ARRAY_BUFFER,0,this.vertices);else{var b=this.vertices.subarray(0,4*this.currentBatchSize*this.vertSize);a.bufferSubData(a.ARRAY_BUFFER,0,b)}a.drawElements(a.TRIANGLES,6*this.currentBatchSize,a.UNSIGNED_SHORT,0),this.currentBatchSize=0,this.renderSession.drawCount++}},b.WebGLFastSpriteBatch.prototype.stop=function(){this.flush()},b.WebGLFastSpriteBatch.prototype.start=function(){var a=this.gl;a.activeTexture(a.TEXTURE0),a.bindBuffer(a.ARRAY_BUFFER,this.vertexBuffer),a.bindBuffer(a.ELEMENT_ARRAY_BUFFER,this.indexBuffer);var b=this.renderSession.projection;a.uniform2f(this.shader.projectionVector,b.x,b.y),a.uniformMatrix3fv(this.shader.uMatrix,!1,this.matrix);var c=4*this.vertSize;a.vertexAttribPointer(this.shader.aVertexPosition,2,a.FLOAT,!1,c,0),a.vertexAttribPointer(this.shader.aPositionCoord,2,a.FLOAT,!1,c,8),a.vertexAttribPointer(this.shader.aScale,2,a.FLOAT,!1,c,16),a.vertexAttribPointer(this.shader.aRotation,1,a.FLOAT,!1,c,24),a.vertexAttribPointer(this.shader.aTextureCoord,2,a.FLOAT,!1,c,28),a.vertexAttribPointer(this.shader.colorAttribute,1,a.FLOAT,!1,c,36)},b.WebGLFilterManager=function(){this.filterStack=[],this.offsetX=0,this.offsetY=0},b.WebGLFilterManager.prototype.constructor=b.WebGLFilterManager,b.WebGLFilterManager.prototype.setContext=function(a){this.gl=a,this.texturePool=[],this.initShaderBuffers()},b.WebGLFilterManager.prototype.begin=function(a,b){this.renderSession=a,this.defaultShader=a.shaderManager.defaultShader;var c=this.renderSession.projection;this.width=2*c.x,this.height=2*-c.y,this.buffer=b},b.WebGLFilterManager.prototype.pushFilter=function(a){var c=this.gl,d=this.renderSession.projection,e=this.renderSession.offset;a._filterArea=a.target.filterArea||a.target.getBounds(),a._previous_stencil_mgr=this.renderSession.stencilManager,this.renderSession.stencilManager=new b.WebGLStencilManager,this.renderSession.stencilManager.setContext(c),c.disable(c.STENCIL_TEST),this.filterStack.push(a);var f=a.filterPasses[0];this.offsetX+=a._filterArea.x,this.offsetY+=a._filterArea.y;var g=this.texturePool.pop();g?g.resize(this.width*this.renderSession.resolution,this.height*this.renderSession.resolution):g=new b.FilterTexture(this.gl,this.width*this.renderSession.resolution,this.height*this.renderSession.resolution),c.bindTexture(c.TEXTURE_2D,g.texture);var h=a._filterArea,i=f.padding;h.x-=i,h.y-=i,h.width+=2*i,h.height+=2*i,h.x<0&&(h.x=0),h.width>this.width&&(h.width=this.width),h.y<0&&(h.y=0),h.height>this.height&&(h.height=this.height),c.bindFramebuffer(c.FRAMEBUFFER,g.frameBuffer),c.viewport(0,0,h.width*this.renderSession.resolution,h.height*this.renderSession.resolution),d.x=h.width/2,d.y=-h.height/2,e.x=-h.x,e.y=-h.y,c.colorMask(!0,!0,!0,!0),c.clearColor(0,0,0,0),c.clear(c.COLOR_BUFFER_BIT),a._glFilterTexture=g},b.WebGLFilterManager.prototype.popFilter=function(){var a=this.gl,c=this.filterStack.pop(),d=c._filterArea,e=c._glFilterTexture,f=this.renderSession.projection,g=this.renderSession.offset;if(c.filterPasses.length>1){a.viewport(0,0,d.width*this.renderSession.resolution,d.height*this.renderSession.resolution),a.bindBuffer(a.ARRAY_BUFFER,this.vertexBuffer),this.vertexArray[0]=0,this.vertexArray[1]=d.height,this.vertexArray[2]=d.width,this.vertexArray[3]=d.height,this.vertexArray[4]=0,this.vertexArray[5]=0,this.vertexArray[6]=d.width,this.vertexArray[7]=0,a.bufferSubData(a.ARRAY_BUFFER,0,this.vertexArray),a.bindBuffer(a.ARRAY_BUFFER,this.uvBuffer),this.uvArray[2]=d.width/this.width,this.uvArray[5]=d.height/this.height,this.uvArray[6]=d.width/this.width,this.uvArray[7]=d.height/this.height,a.bufferSubData(a.ARRAY_BUFFER,0,this.uvArray);var h=e,i=this.texturePool.pop();i||(i=new b.FilterTexture(this.gl,this.width*this.renderSession.resolution,this.height*this.renderSession.resolution)),i.resize(this.width*this.renderSession.resolution,this.height*this.renderSession.resolution),a.bindFramebuffer(a.FRAMEBUFFER,i.frameBuffer),a.clear(a.COLOR_BUFFER_BIT),a.disable(a.BLEND);for(var j=0;j0?a.enable(a.STENCIL_TEST):a.disable(a.STENCIL_TEST),this.applyFilterPass(m,d,n,o),this.texturePool.push(e),c._glFilterTexture=null},b.WebGLFilterManager.prototype.applyFilterPass=function(a,c,d,e){var f=this.gl,g=a.shaders[f.id];g||(g=new b.PixiShader(f),g.fragmentSrc=a.fragmentSrc,g.uniforms=a.uniforms,g.init(),a.shaders[f.id]=g),this.renderSession.shaderManager.setShader(g),f.uniform2f(g.projectionVector,d/2,-e/2),f.uniform2f(g.offsetVector,0,0),a.uniforms.dimensions&&(a.uniforms.dimensions.value[0]=this.width,a.uniforms.dimensions.value[1]=this.height,a.uniforms.dimensions.value[2]=this.vertexArray[0],a.uniforms.dimensions.value[3]=this.vertexArray[5]),g.syncUniforms(),f.bindBuffer(f.ARRAY_BUFFER,this.vertexBuffer),f.vertexAttribPointer(g.aVertexPosition,2,f.FLOAT,!1,0,0),f.bindBuffer(f.ARRAY_BUFFER,this.uvBuffer),f.vertexAttribPointer(g.aTextureCoord,2,f.FLOAT,!1,0,0),f.bindBuffer(f.ARRAY_BUFFER,this.colorBuffer),f.vertexAttribPointer(g.colorAttribute,2,f.FLOAT,!1,0,0),f.bindBuffer(f.ELEMENT_ARRAY_BUFFER,this.indexBuffer),f.drawElements(f.TRIANGLES,6,f.UNSIGNED_SHORT,0),this.renderSession.drawCount++},b.WebGLFilterManager.prototype.initShaderBuffers=function(){var a=this.gl;this.vertexBuffer=a.createBuffer(),this.uvBuffer=a.createBuffer(),this.colorBuffer=a.createBuffer(),this.indexBuffer=a.createBuffer(),this.vertexArray=new b.Float32Array([0,0,1,0,0,1,1,1]),a.bindBuffer(a.ARRAY_BUFFER,this.vertexBuffer),a.bufferData(a.ARRAY_BUFFER,this.vertexArray,a.STATIC_DRAW),this.uvArray=new b.Float32Array([0,0,1,0,0,1,1,1]),a.bindBuffer(a.ARRAY_BUFFER,this.uvBuffer),a.bufferData(a.ARRAY_BUFFER,this.uvArray,a.STATIC_DRAW),this.colorArray=new b.Float32Array([1,16777215,1,16777215,1,16777215,1,16777215]),a.bindBuffer(a.ARRAY_BUFFER,this.colorBuffer),a.bufferData(a.ARRAY_BUFFER,this.colorArray,a.STATIC_DRAW),a.bindBuffer(a.ELEMENT_ARRAY_BUFFER,this.indexBuffer),a.bufferData(a.ELEMENT_ARRAY_BUFFER,new Uint16Array([0,1,2,1,3,2]),a.STATIC_DRAW)},b.WebGLFilterManager.prototype.destroy=function(){var a=this.gl;this.filterStack=null,this.offsetX=0,this.offsetY=0;for(var b=0;b=0;a--){var c=this._glTextures[a],d=b.glContexts[a];d&&c&&d.deleteTexture(c)}this._glTextures.length=0,this.dirty()},b.BaseTexture.fromCanvas=function(a,c){return 0===a.width&&(a.width=1),0===a.height&&(a.height=1),new b.BaseTexture(a,c)},b.TextureSilentFail=!1,b.Texture=function(a,c,d,e){this.noFrame=!1,c||(this.noFrame=!0,c=new b.Rectangle(0,0,1,1)),a instanceof b.Texture&&(a=a.baseTexture),this.baseTexture=a,this.frame=c,this.trim=e,this.valid=!1,this.isTiling=!1,this.requiresUpdate=!1,this.requiresReTint=!1,this._uvs=null,this.width=0,this.height=0,this.crop=d||new b.Rectangle(0,0,1,1),a.hasLoaded&&(this.noFrame&&(c=new b.Rectangle(0,0,a.width,a.height)),this.setFrame(c))},b.Texture.prototype.constructor=b.Texture,b.Texture.prototype.onBaseTextureLoaded=function(){var a=this.baseTexture;this.noFrame&&(this.frame=new b.Rectangle(0,0,a.width,a.height)),this.setFrame(this.frame)},b.Texture.prototype.destroy=function(a){a&&this.baseTexture.destroy(),this.valid=!1},b.Texture.prototype.setFrame=function(a){if(this.noFrame=!1,this.frame=a,this.width=a.width,this.height=a.height,this.crop.x=a.x,this.crop.y=a.y,this.crop.width=a.width,this.crop.height=a.height,!this.trim&&(a.x+a.width>this.baseTexture.width||a.y+a.height>this.baseTexture.height)){if(!b.TextureSilentFail)throw new Error("Texture Error: frame does not fit inside the base Texture dimensions "+this);return void(this.valid=!1)}this.valid=a&&a.width&&a.height&&this.baseTexture.source&&this.baseTexture.hasLoaded,this.trim&&(this.width=this.trim.width,this.height=this.trim.height,this.frame.width=this.trim.width,this.frame.height=this.trim.height),this.valid&&this._updateUvs()},b.Texture.prototype._updateUvs=function(){this._uvs||(this._uvs=new b.TextureUvs);var a=this.crop,c=this.baseTexture.width,d=this.baseTexture.height;this._uvs.x0=a.x/c,this._uvs.y0=a.y/d,this._uvs.x1=(a.x+a.width)/c,this._uvs.y1=a.y/d,this._uvs.x2=(a.x+a.width)/c,this._uvs.y2=(a.y+a.height)/d,this._uvs.x3=a.x/c,this._uvs.y3=(a.y+a.height)/d},b.Texture.fromCanvas=function(a,c){var d=b.BaseTexture.fromCanvas(a,c);return new b.Texture(d)},b.TextureUvs=function(){this.x0=0,this.y0=0,this.x1=0,this.y1=0,this.x2=0,this.y2=0,this.x3=0,this.y3=0},b.RenderTexture=function(a,c,d,e,f){if(this.width=a||100,this.height=c||100,this.resolution=f||1,this.frame=new b.Rectangle(0,0,this.width*this.resolution,this.height*this.resolution),this.crop=new b.Rectangle(0,0,this.width*this.resolution,this.height*this.resolution),this.baseTexture=new b.BaseTexture,this.baseTexture.width=this.width*this.resolution,this.baseTexture.height=this.height*this.resolution,this.baseTexture._glTextures=[],this.baseTexture.resolution=this.resolution,this.baseTexture.scaleMode=e||b.scaleModes.DEFAULT,this.baseTexture.hasLoaded=!0,b.Texture.call(this,this.baseTexture,new b.Rectangle(0,0,this.width*this.resolution,this.height*this.resolution)),this.renderer=d||b.defaultRenderer,this.renderer.type===b.WEBGL_RENDERER){var g=this.renderer.gl;this.baseTexture._dirty[g.id]=!1,this.textureBuffer=new b.FilterTexture(g,this.width,this.height,this.baseTexture.scaleMode),this.baseTexture._glTextures[g.id]=this.textureBuffer.texture,this.render=this.renderWebGL,this.projection=new b.Point(.5*this.width,.5*-this.height)}else this.render=this.renderCanvas,this.textureBuffer=new b.CanvasBuffer(this.width*this.resolution,this.height*this.resolution), +this.baseTexture.source=this.textureBuffer.canvas;this.valid=!0,this.tempMatrix=new Phaser.Matrix,this._updateUvs()},b.RenderTexture.prototype=Object.create(b.Texture.prototype),b.RenderTexture.prototype.constructor=b.RenderTexture,b.RenderTexture.prototype.resize=function(a,c,d){a===this.width&&c===this.height||(this.valid=a>0&&c>0,this.width=a,this.height=c,this.frame.width=this.crop.width=a*this.resolution,this.frame.height=this.crop.height=c*this.resolution,d&&(this.baseTexture.width=this.width*this.resolution,this.baseTexture.height=this.height*this.resolution),this.renderer.type===b.WEBGL_RENDERER&&(this.projection.x=this.width/2,this.projection.y=-this.height/2),this.valid&&this.textureBuffer.resize(this.width,this.height))},b.RenderTexture.prototype.clear=function(){this.valid&&(this.renderer.type===b.WEBGL_RENDERER&&this.renderer.gl.bindFramebuffer(this.renderer.gl.FRAMEBUFFER,this.textureBuffer.frameBuffer),this.textureBuffer.clear())},b.RenderTexture.prototype.renderWebGL=function(a,b,c){if(this.valid&&0!==a.alpha){var d=a.worldTransform;d.identity(),d.translate(0,2*this.projection.y),b&&d.append(b),d.scale(1,-1);for(var e=0;ea;a++)this.shaders[a].dirty=!0},b.Strip=function(a){b.DisplayObjectContainer.call(this),this.texture=a,this.uvs=new b.Float32Array([0,1,1,1,1,0,0,1]),this.vertices=new b.Float32Array([0,0,100,0,100,100,0,100]),this.colors=new b.Float32Array([1,1,1,1]),this.indices=new b.Uint16Array([0,1,2,3]),this.dirty=!0,this.blendMode=b.blendModes.NORMAL,this.canvasPadding=0,this.drawMode=b.Strip.DrawModes.TRIANGLE_STRIP},b.Strip.prototype=Object.create(b.DisplayObjectContainer.prototype),b.Strip.prototype.constructor=b.Strip,b.Strip.prototype._renderWebGL=function(a){!this.visible||this.alpha<=0||(a.spriteBatch.stop(),this._vertexBuffer||this._initWebGL(a),a.shaderManager.setShader(a.shaderManager.stripShader),this._renderStrip(a),a.spriteBatch.start())},b.Strip.prototype._initWebGL=function(a){var b=a.gl;this._vertexBuffer=b.createBuffer(),this._indexBuffer=b.createBuffer(),this._uvBuffer=b.createBuffer(),this._colorBuffer=b.createBuffer(),b.bindBuffer(b.ARRAY_BUFFER,this._vertexBuffer),b.bufferData(b.ARRAY_BUFFER,this.vertices,b.DYNAMIC_DRAW),b.bindBuffer(b.ARRAY_BUFFER,this._uvBuffer),b.bufferData(b.ARRAY_BUFFER,this.uvs,b.STATIC_DRAW),b.bindBuffer(b.ARRAY_BUFFER,this._colorBuffer),b.bufferData(b.ARRAY_BUFFER,this.colors,b.STATIC_DRAW),b.bindBuffer(b.ELEMENT_ARRAY_BUFFER,this._indexBuffer),b.bufferData(b.ELEMENT_ARRAY_BUFFER,this.indices,b.STATIC_DRAW)},b.Strip.prototype._renderStrip=function(a){var c=a.gl,d=a.projection,e=a.offset,f=a.shaderManager.stripShader,g=this.drawMode===b.Strip.DrawModes.TRIANGLE_STRIP?c.TRIANGLE_STRIP:c.TRIANGLES;a.blendModeManager.setBlendMode(this.blendMode),c.uniformMatrix3fv(f.translationMatrix,!1,this.worldTransform.toArray(!0)),c.uniform2f(f.projectionVector,d.x,-d.y),c.uniform2f(f.offsetVector,-e.x,-e.y),c.uniform1f(f.alpha,this.worldAlpha),this.dirty?(this.dirty=!1,c.bindBuffer(c.ARRAY_BUFFER,this._vertexBuffer),c.bufferData(c.ARRAY_BUFFER,this.vertices,c.STATIC_DRAW),c.vertexAttribPointer(f.aVertexPosition,2,c.FLOAT,!1,0,0),c.bindBuffer(c.ARRAY_BUFFER,this._uvBuffer),c.bufferData(c.ARRAY_BUFFER,this.uvs,c.STATIC_DRAW),c.vertexAttribPointer(f.aTextureCoord,2,c.FLOAT,!1,0,0),c.activeTexture(c.TEXTURE0),this.texture.baseTexture._dirty[c.id]?a.renderer.updateTexture(this.texture.baseTexture):c.bindTexture(c.TEXTURE_2D,this.texture.baseTexture._glTextures[c.id]),c.bindBuffer(c.ELEMENT_ARRAY_BUFFER,this._indexBuffer),c.bufferData(c.ELEMENT_ARRAY_BUFFER,this.indices,c.STATIC_DRAW)):(c.bindBuffer(c.ARRAY_BUFFER,this._vertexBuffer),c.bufferSubData(c.ARRAY_BUFFER,0,this.vertices),c.vertexAttribPointer(f.aVertexPosition,2,c.FLOAT,!1,0,0),c.bindBuffer(c.ARRAY_BUFFER,this._uvBuffer),c.vertexAttribPointer(f.aTextureCoord,2,c.FLOAT,!1,0,0),c.activeTexture(c.TEXTURE0),this.texture.baseTexture._dirty[c.id]?a.renderer.updateTexture(this.texture.baseTexture):c.bindTexture(c.TEXTURE_2D,this.texture.baseTexture._glTextures[c.id]),c.bindBuffer(c.ELEMENT_ARRAY_BUFFER,this._indexBuffer)),c.drawElements(g,this.indices.length,c.UNSIGNED_SHORT,0)},b.Strip.prototype._renderCanvas=function(a){var c=a.context,d=this.worldTransform,e=d.tx*a.resolution+a.shakeX,f=d.ty*a.resolution+a.shakeY;a.roundPixels?c.setTransform(d.a,d.b,d.c,d.d,0|e,0|f):c.setTransform(d.a,d.b,d.c,d.d,e,f),this.drawMode===b.Strip.DrawModes.TRIANGLE_STRIP?this._renderCanvasTriangleStrip(c):this._renderCanvasTriangles(c)},b.Strip.prototype._renderCanvasTriangleStrip=function(a){var b=this.vertices,c=this.uvs,d=b.length/2;this.count++;for(var e=0;d-2>e;e++){var f=2*e;this._renderCanvasDrawTriangle(a,b,c,f,f+2,f+4)}},b.Strip.prototype._renderCanvasTriangles=function(a){var b=this.vertices,c=this.uvs,d=this.indices,e=d.length;this.count++;for(var f=0;e>f;f+=3){var g=2*d[f],h=2*d[f+1],i=2*d[f+2];this._renderCanvasDrawTriangle(a,b,c,g,h,i)}},b.Strip.prototype._renderCanvasDrawTriangle=function(a,b,c,d,e,f){var g=this.texture.baseTexture.source,h=this.texture.width,i=this.texture.height,j=b[d],k=b[e],l=b[f],m=b[d+1],n=b[e+1],o=b[f+1],p=c[d]*h,q=c[e]*h,r=c[f]*h,s=c[d+1]*i,t=c[e+1]*i,u=c[f+1]*i;if(this.canvasPadding>0){var v=this.canvasPadding/this.worldTransform.a,w=this.canvasPadding/this.worldTransform.d,x=(j+k+l)/3,y=(m+n+o)/3,z=j-x,A=m-y,B=Math.sqrt(z*z+A*A);j=x+z/B*(B+v),m=y+A/B*(B+w),z=k-x,A=n-y,B=Math.sqrt(z*z+A*A),k=x+z/B*(B+v),n=y+A/B*(B+w),z=l-x,A=o-y,B=Math.sqrt(z*z+A*A),l=x+z/B*(B+v),o=y+A/B*(B+w)}a.save(),a.beginPath(),a.moveTo(j,m),a.lineTo(k,n),a.lineTo(l,o),a.closePath(),a.clip();var C=p*t+s*r+q*u-t*r-s*q-p*u,D=j*t+s*l+k*u-t*l-s*k-j*u,E=p*k+j*r+q*l-k*r-j*q-p*l,F=p*t*l+s*k*r+j*q*u-j*t*r-s*q*l-p*k*u,G=m*t+s*o+n*u-t*o-s*n-m*u,H=p*n+m*r+q*o-n*r-m*q-p*o,I=p*t*o+s*n*r+m*q*u-m*t*r-s*q*o-p*n*u;a.transform(D/C,G/C,E/C,H/C,F/C,I/C),a.drawImage(g,0,0),a.restore()},b.Strip.prototype.renderStripFlat=function(a){var b=this.context,c=a.vertices,d=c.length/2;this.count++,b.beginPath();for(var e=1;d-2>e;e++){var f=2*e,g=c[f],h=c[f+2],i=c[f+4],j=c[f+1],k=c[f+3],l=c[f+5];b.moveTo(g,j),b.lineTo(h,k),b.lineTo(i,l)}b.fillStyle="#FF0000",b.fill(),b.closePath()},b.Strip.prototype.onTextureUpdate=function(){this.updateFrame=!0},b.Strip.prototype.getBounds=function(a){for(var c=a||this.worldTransform,d=c.a,e=c.b,f=c.c,g=c.d,h=c.tx,i=c.ty,j=-(1/0),k=-(1/0),l=1/0,m=1/0,n=this.vertices,o=0,p=n.length;p>o;o+=2){var q=n[o],r=n[o+1],s=d*q+f*r+h,t=g*r+e*q+i;l=l>s?s:l,m=m>t?t:m,j=s>j?s:j,k=t>k?t:k}if(l===-(1/0)||k===1/0)return b.EmptyRectangle;var u=this._bounds;return u.x=l,u.width=j-l,u.y=m,u.height=k-m,this._currentBounds=u,u},b.Strip.DrawModes={TRIANGLE_STRIP:0,TRIANGLES:1},b.Rope=function(a,c){b.Strip.call(this,a),this.points=c,this.vertices=new b.Float32Array(4*c.length),this.uvs=new b.Float32Array(4*c.length),this.colors=new b.Float32Array(2*c.length),this.indices=new b.Uint16Array(2*c.length),this.refresh()},b.Rope.prototype=Object.create(b.Strip.prototype),b.Rope.prototype.constructor=b.Rope,b.Rope.prototype.refresh=function(){var a=this.points;if(!(a.length<1)){var b=this.uvs,c=a[0],d=this.indices,e=this.colors;this.count-=.2,b[0]=0,b[1]=0,b[2]=0,b[3]=1,e[0]=1,e[1]=1,d[0]=0,d[1]=1;for(var f,g,h,i=a.length,j=1;i>j;j++)f=a[j],g=4*j,h=j/(i-1),j%2?(b[g]=h,b[g+1]=0,b[g+2]=h,b[g+3]=1):(b[g]=h,b[g+1]=0,b[g+2]=h,b[g+3]=1),g=2*j,e[g]=1,e[g+1]=1,g=2*j,d[g]=g,d[g+1]=g+1,c=f}},b.Rope.prototype.updateTransform=function(){var a=this.points;if(!(a.length<1)){var c,d=a[0],e={x:0,y:0};this.count-=.2;for(var f,g,h,i,j,k=this.vertices,l=a.length,m=0;l>m;m++)f=a[m],g=4*m,c=m1&&(h=1),i=Math.sqrt(e.x*e.x+e.y*e.y),j=this.texture.height/2,e.x/=i,e.y/=i,e.x*=j,e.y*=j,k[g]=f.x+e.x,k[g+1]=f.y+e.y,k[g+2]=f.x-e.x,k[g+3]=f.y-e.y,d=f;b.DisplayObjectContainer.prototype.updateTransform.call(this)}},b.Rope.prototype.setTexture=function(a){this.texture=a},b.TilingSprite=function(a,c,d){b.Sprite.call(this,a),this._width=c||128,this._height=d||128,this.tileScale=new b.Point(1,1),this.tileScaleOffset=new b.Point(1,1),this.tilePosition=new b.Point,this.renderable=!0,this.tint=16777215,this.textureDebug=!1,this.blendMode=b.blendModes.NORMAL,this.canvasBuffer=null,this.tilingTexture=null,this.tilePattern=null,this.refreshTexture=!0,this.frameWidth=0,this.frameHeight=0},b.TilingSprite.prototype=Object.create(b.Sprite.prototype),b.TilingSprite.prototype.constructor=b.TilingSprite,b.TilingSprite.prototype.setTexture=function(a){this.texture!==a&&(this.texture=a,this.refreshTexture=!0,this.cachedTint=16777215)},b.TilingSprite.prototype._renderWebGL=function(a){if(this.visible&&this.renderable&&0!==this.alpha){if(this._mask&&(a.spriteBatch.stop(),a.maskManager.pushMask(this.mask,a),a.spriteBatch.start()),this._filters&&(a.spriteBatch.flush(),a.filterManager.pushFilter(this._filterBlock)),this.refreshTexture){if(this.generateTilingTexture(!0,a),!this.tilingTexture)return;this.tilingTexture.needsUpdate&&(a.renderer.updateTexture(this.tilingTexture.baseTexture),this.tilingTexture.needsUpdate=!1)}a.spriteBatch.renderTilingSprite(this);for(var b=0;bn?n:x,x=x>p?p:x,x=x>r?r:x,x=x>t?t:x,y=y>o?o:y,y=y>q?q:y,y=y>s?s:y,y=y>u?u:y,v=n>v?n:v,v=p>v?p:v,v=r>v?r:v,v=t>v?t:v,w=o>w?o:w,w=q>w?q:w,w=s>w?s:w,w=u>w?u:w;var z=this._bounds;return z.x=x,z.width=v-x,z.y=y,z.height=w-y,this._currentBounds=z,z},b.TilingSprite.prototype.destroy=function(){b.Sprite.prototype.destroy.call(this),this.canvasBuffer&&(this.canvasBuffer.destroy(),this.canvasBuffer=null),this.tileScale=null,this.tileScaleOffset=null,this.tilePosition=null,this.tilingTexture&&(this.tilingTexture.destroy(!0),this.tilingTexture=null)},Object.defineProperty(b.TilingSprite.prototype,"width",{get:function(){return this._width},set:function(a){this._width=a}}),Object.defineProperty(b.TilingSprite.prototype,"height",{get:function(){return this._height},set:function(a){this._height=a}}),"undefined"!=typeof exports?("undefined"!=typeof module&&module.exports&&(exports=module.exports=b),exports.PIXI=b):"undefined"!=typeof define&&define.amd?define("PIXI",function(){return a.PIXI=b}()):a.PIXI=b,b}.call(this),function(){function a(a,b){this._scaleFactor=a,this._deltaMode=b,this.originalEvent=null}var b=this,c=c||{VERSION:"2.6.0",GAMES:[],AUTO:0,CANVAS:1,WEBGL:2,HEADLESS:3,NONE:0,LEFT:1,RIGHT:2,UP:3,DOWN:4,SPRITE:0,BUTTON:1,IMAGE:2,GRAPHICS:3,TEXT:4,TILESPRITE:5,BITMAPTEXT:6,GROUP:7,RENDERTEXTURE:8,TILEMAP:9,TILEMAPLAYER:10,EMITTER:11,POLYGON:12,BITMAPDATA:13,CANVAS_FILTER:14,WEBGL_FILTER:15,ELLIPSE:16,SPRITEBATCH:17,RETROFONT:18,POINTER:19,ROPE:20,CIRCLE:21,RECTANGLE:22,LINE:23,MATRIX:24,POINT:25,ROUNDEDRECTANGLE:26,CREATURE:27,VIDEO:28,PENDING_ATLAS:-1,HORIZONTAL:0,VERTICAL:1,LANDSCAPE:0,PORTRAIT:1,ANGLE_UP:270,ANGLE_DOWN:90,ANGLE_LEFT:180,ANGLE_RIGHT:0,ANGLE_NORTH_EAST:315,ANGLE_NORTH_WEST:225,ANGLE_SOUTH_EAST:45,ANGLE_SOUTH_WEST:135,TOP_LEFT:0,TOP_CENTER:1,TOP_RIGHT:2,LEFT_TOP:3,LEFT_CENTER:4,LEFT_BOTTOM:5,CENTER:6,RIGHT_TOP:7,RIGHT_CENTER:8,RIGHT_BOTTOM:9,BOTTOM_LEFT:10,BOTTOM_CENTER:11,BOTTOM_RIGHT:12,blendModes:{NORMAL:0,ADD:1,MULTIPLY:2,SCREEN:3,OVERLAY:4,DARKEN:5,LIGHTEN:6,COLOR_DODGE:7,COLOR_BURN:8,HARD_LIGHT:9,SOFT_LIGHT:10,DIFFERENCE:11,EXCLUSION:12,HUE:13,SATURATION:14,COLOR:15,LUMINOSITY:16},scaleModes:{DEFAULT:0,LINEAR:0,NEAREST:1},PIXI:PIXI||{}};if(Math.trunc||(Math.trunc=function(a){return 0>a?Math.ceil(a):Math.floor(a)}),Function.prototype.bind||(Function.prototype.bind=function(){var a=Array.prototype.slice;return function(b){function c(){var f=e.concat(a.call(arguments));d.apply(this instanceof c?this:b,f)}var d=this,e=a.call(arguments,1);if("function"!=typeof d)throw new TypeError;return c.prototype=function f(a){return a&&(f.prototype=a),this instanceof f?void 0:new f}(d.prototype),c}}()),Array.isArray||(Array.isArray=function(a){return"[object Array]"==Object.prototype.toString.call(a)}),Array.prototype.forEach||(Array.prototype.forEach=function(a){"use strict";if(void 0===this||null===this)throw new TypeError;var b=Object(this),c=b.length>>>0;if("function"!=typeof a)throw new TypeError;for(var d=arguments.length>=2?arguments[1]:void 0,e=0;c>e;e++)e in b&&a.call(d,b[e],e,b)}),"function"!=typeof window.Uint32Array&&"object"!=typeof window.Uint32Array){var d=function(a){var b=new Array;window[a]=function(a){if("number"==typeof a){Array.call(this,a),this.length=a;for(var b=0;bf&&(a=a[g]);)g=c[f],f++;return a?a[d]:null},setProperty:function(a,b,c){for(var d=b.split("."),e=d.pop(),f=d.length,g=1,h=d[0];f>g&&(a=a[h]);)h=d[g],g++;return a&&(a[e]=c),a},chanceRoll:function(a){return void 0===a&&(a=50),a>0&&100*Math.random()<=a},randomChoice:function(a,b){return Math.random()<.5?a:b},parseDimension:function(a,b){var c=0,d=0;return"string"==typeof a?"%"===a.substr(-1)?(c=parseInt(a,10)/100,d=0===b?window.innerWidth*c:window.innerHeight*c):d=parseInt(a,10):d=a,d},pad:function(a,b,c,d){if(void 0===b)var b=0;if(void 0===c)var c=" ";if(void 0===d)var d=3;a=a.toString();var e=0;if(b+1>=a.length)switch(d){case 1:a=new Array(b+1-a.length).join(c)+a;break;case 3:var f=Math.ceil((e=b-a.length)/2),g=e-f;a=new Array(g+1).join(c)+a+new Array(f+1).join(c);break;default:a+=new Array(b+1-a.length).join(c)}return a},isPlainObject:function(a){if("object"!=typeof a||a.nodeType||a===a.window)return!1;try{if(a.constructor&&!{}.hasOwnProperty.call(a.constructor.prototype,"isPrototypeOf"))return!1}catch(b){return!1}return!0},extend:function(){var a,b,d,e,f,g,h=arguments[0]||{},i=1,j=arguments.length,k=!1;for("boolean"==typeof h&&(k=h,h=arguments[1]||{},i=2),j===i&&(h=this,--i);j>i;i++)if(null!=(a=arguments[i]))for(b in a)d=h[b],e=a[b],h!==e&&(k&&e&&(c.Utils.isPlainObject(e)||(f=Array.isArray(e)))?(f?(f=!1,g=d&&Array.isArray(d)?d:[]):g=d&&c.Utils.isPlainObject(d)?d:{},h[b]=c.Utils.extend(k,g,e)):void 0!==e&&(h[b]=e));return h},mixinPrototype:function(a,b,c){void 0===c&&(c=!1);for(var d=Object.keys(b),e=0;e0&&(this._radius=.5*d),this.type=c.CIRCLE},c.Circle.prototype={circumference:function(){return 2*(Math.PI*this._radius)},random:function(a){void 0===a&&(a=new c.Point);var b=2*Math.PI*Math.random(),d=Math.random()+Math.random(),e=d>1?2-d:d,f=e*Math.cos(b),g=e*Math.sin(b);return a.x=this.x+f*this.radius,a.y=this.y+g*this.radius,a},getBounds:function(){return new c.Rectangle(this.x-this.radius,this.y-this.radius,this.diameter,this.diameter)},setTo:function(a,b,c){return this.x=a,this.y=b,this._diameter=c,this._radius=.5*c,this},copyFrom:function(a){return this.setTo(a.x,a.y,a.diameter)},copyTo:function(a){return a.x=this.x,a.y=this.y,a.diameter=this._diameter,a},distance:function(a,b){var d=c.Math.distance(this.x,this.y,a.x,a.y);return b?Math.round(d):d},clone:function(a){return void 0===a||null===a?a=new c.Circle(this.x,this.y,this.diameter):a.setTo(this.x,this.y,this.diameter),a},contains:function(a,b){return c.Circle.contains(this,a,b)},circumferencePoint:function(a,b,d){return c.Circle.circumferencePoint(this,a,b,d)},offset:function(a,b){return this.x+=a,this.y+=b,this},offsetPoint:function(a){return this.offset(a.x,a.y)},toString:function(){return"[{Phaser.Circle (x="+this.x+" y="+this.y+" diameter="+this.diameter+" radius="+this.radius+")}]"}},c.Circle.prototype.constructor=c.Circle,Object.defineProperty(c.Circle.prototype,"diameter",{get:function(){return this._diameter},set:function(a){a>0&&(this._diameter=a,this._radius=.5*a)}}),Object.defineProperty(c.Circle.prototype,"radius",{get:function(){return this._radius},set:function(a){a>0&&(this._radius=a,this._diameter=2*a)}}),Object.defineProperty(c.Circle.prototype,"left",{get:function(){return this.x-this._radius},set:function(a){a>this.x?(this._radius=0,this._diameter=0):this.radius=this.x-a}}),Object.defineProperty(c.Circle.prototype,"right",{get:function(){return this.x+this._radius},set:function(a){athis.y?(this._radius=0,this._diameter=0):this.radius=this.y-a}}),Object.defineProperty(c.Circle.prototype,"bottom",{get:function(){return this.y+this._radius},set:function(a){a0?Math.PI*this._radius*this._radius:0}}),Object.defineProperty(c.Circle.prototype,"empty",{get:function(){return 0===this._diameter},set:function(a){a===!0&&this.setTo(0,0,0)}}),c.Circle.contains=function(a,b,c){if(a.radius>0&&b>=a.left&&b<=a.right&&c>=a.top&&c<=a.bottom){var d=(a.x-b)*(a.x-b),e=(a.y-c)*(a.y-c);return d+e<=a.radius*a.radius}return!1},c.Circle.equals=function(a,b){return a.x==b.x&&a.y==b.y&&a.diameter==b.diameter},c.Circle.intersects=function(a,b){return c.Math.distance(a.x,a.y,b.x,b.y)<=a.radius+b.radius},c.Circle.circumferencePoint=function(a,b,d,e){return void 0===d&&(d=!1),void 0===e&&(e=new c.Point),d===!0&&(b=c.Math.degToRad(b)),e.x=a.x+a.radius*Math.cos(b),e.y=a.y+a.radius*Math.sin(b),e},c.Circle.intersectsRectangle=function(a,b){var c=Math.abs(a.x-b.x-b.halfWidth),d=b.halfWidth+a.radius;if(c>d)return!1;var e=Math.abs(a.y-b.y-b.halfHeight),f=b.halfHeight+a.radius;if(e>f)return!1;if(c<=b.halfWidth||e<=b.halfHeight)return!0;var g=c-b.halfWidth,h=e-b.halfHeight,i=g*g,j=h*h,k=a.radius*a.radius;return k>=i+j},PIXI.Circle=c.Circle,c.Ellipse=function(a,b,d,e){a=a||0,b=b||0,d=d||0,e=e||0,this.x=a,this.y=b,this.width=d,this.height=e,this.type=c.ELLIPSE},c.Ellipse.prototype={setTo:function(a,b,c,d){return this.x=a,this.y=b,this.width=c,this.height=d,this},getBounds:function(){return new c.Rectangle(this.x-this.width,this.y-this.height,this.width,this.height)},copyFrom:function(a){return this.setTo(a.x,a.y,a.width,a.height)},copyTo:function(a){return a.x=this.x,a.y=this.y,a.width=this.width,a.height=this.height,a},clone:function(a){return void 0===a||null===a?a=new c.Ellipse(this.x,this.y,this.width,this.height):a.setTo(this.x,this.y,this.width,this.height),a},contains:function(a,b){return c.Ellipse.contains(this,a,b)},random:function(a){void 0===a&&(a=new c.Point);var b=Math.random()*Math.PI*2,d=Math.random();return a.x=Math.sqrt(d)*Math.cos(b),a.y=Math.sqrt(d)*Math.sin(b),a.x=this.x+a.x*this.width/2,a.y=this.y+a.y*this.height/2,a},toString:function(){return"[{Phaser.Ellipse (x="+this.x+" y="+this.y+" width="+this.width+" height="+this.height+")}]"}},c.Ellipse.prototype.constructor=c.Ellipse,Object.defineProperty(c.Ellipse.prototype,"left",{get:function(){return this.x},set:function(a){this.x=a}}),Object.defineProperty(c.Ellipse.prototype,"right",{get:function(){return this.x+this.width},set:function(a){ad+e},PIXI.Ellipse=c.Ellipse,c.Line=function(a,b,d,e){a=a||0,b=b||0,d=d||0,e=e||0,this.start=new c.Point(a,b),this.end=new c.Point(d,e),this.type=c.LINE},c.Line.prototype={setTo:function(a,b,c,d){return this.start.setTo(a,b),this.end.setTo(c,d),this},fromSprite:function(a,b,c){return void 0===c&&(c=!1),c?this.setTo(a.center.x,a.center.y,b.center.x,b.center.y):this.setTo(a.x,a.y,b.x,b.y)},fromAngle:function(a,b,c,d){return this.start.setTo(a,b),this.end.setTo(a+Math.cos(c)*d,b+Math.sin(c)*d),this},rotate:function(a,b){var c=(this.start.x+this.end.x)/2,d=(this.start.y+this.end.y)/2;return this.start.rotate(c,d,a,b),this.end.rotate(c,d,a,b),this},rotateAround:function(a,b,c,d){return this.start.rotate(a,b,c,d),this.end.rotate(a,b,c,d),this},intersects:function(a,b,d){return c.Line.intersectsPoints(this.start,this.end,a.start,a.end,b,d)},reflect:function(a){return c.Line.reflect(this,a)},midPoint:function(a){return void 0===a&&(a=new c.Point),a.x=(this.start.x+this.end.x)/2,a.y=(this.start.y+this.end.y)/2,a},centerOn:function(a,b){var c=(this.start.x+this.end.x)/2,d=(this.start.y+this.end.y)/2,e=a-c,f=b-d;this.start.add(e,f),this.end.add(e,f)},pointOnLine:function(a,b){return(a-this.start.x)*(this.end.y-this.start.y)===(this.end.x-this.start.x)*(b-this.start.y)},pointOnSegment:function(a,b){var c=Math.min(this.start.x,this.end.x),d=Math.max(this.start.x,this.end.x),e=Math.min(this.start.y,this.end.y),f=Math.max(this.start.y,this.end.y);return this.pointOnLine(a,b)&&a>=c&&d>=a&&b>=e&&f>=b},random:function(a){void 0===a&&(a=new c.Point);var b=Math.random();return a.x=this.start.x+b*(this.end.x-this.start.x),a.y=this.start.y+b*(this.end.y-this.start.y),a},coordinatesOnLine:function(a,b){void 0===a&&(a=1),void 0===b&&(b=[]);var c=Math.round(this.start.x),d=Math.round(this.start.y),e=Math.round(this.end.x),f=Math.round(this.end.y),g=Math.abs(e-c),h=Math.abs(f-d),i=e>c?1:-1,j=f>d?1:-1,k=g-h;b.push([c,d]);for(var l=1;c!=e||d!=f;){var m=k<<1;m>-h&&(k-=h,c+=i),g>m&&(k+=g,d+=j),l%a===0&&b.push([c,d]),l++}return b},clone:function(a){return void 0===a||null===a?a=new c.Line(this.start.x,this.start.y,this.end.x,this.end.y):a.setTo(this.start.x,this.start.y,this.end.x,this.end.y),a}},Object.defineProperty(c.Line.prototype,"length",{get:function(){return Math.sqrt((this.end.x-this.start.x)*(this.end.x-this.start.x)+(this.end.y-this.start.y)*(this.end.y-this.start.y))}}),Object.defineProperty(c.Line.prototype,"angle",{get:function(){return Math.atan2(this.end.y-this.start.y,this.end.x-this.start.x)}}),Object.defineProperty(c.Line.prototype,"slope",{get:function(){return(this.end.y-this.start.y)/(this.end.x-this.start.x)}}),Object.defineProperty(c.Line.prototype,"perpSlope",{get:function(){return-((this.end.x-this.start.x)/(this.end.y-this.start.y))}}),Object.defineProperty(c.Line.prototype,"x",{get:function(){return Math.min(this.start.x,this.end.x)}}),Object.defineProperty(c.Line.prototype,"y",{get:function(){return Math.min(this.start.y,this.end.y)}}),Object.defineProperty(c.Line.prototype,"left",{get:function(){return Math.min(this.start.x,this.end.x)}}),Object.defineProperty(c.Line.prototype,"right",{get:function(){return Math.max(this.start.x,this.end.x)}}),Object.defineProperty(c.Line.prototype,"top",{get:function(){return Math.min(this.start.y,this.end.y)}}),Object.defineProperty(c.Line.prototype,"bottom",{get:function(){return Math.max(this.start.y,this.end.y)}}),Object.defineProperty(c.Line.prototype,"width",{get:function(){return Math.abs(this.start.x-this.end.x)}}),Object.defineProperty(c.Line.prototype,"height",{get:function(){return Math.abs(this.start.y-this.end.y)}}),Object.defineProperty(c.Line.prototype,"normalX",{get:function(){return Math.cos(this.angle-1.5707963267948966)}}),Object.defineProperty(c.Line.prototype,"normalY",{get:function(){return Math.sin(this.angle-1.5707963267948966)}}),Object.defineProperty(c.Line.prototype,"normalAngle",{get:function(){return c.Math.wrap(this.angle-1.5707963267948966,-Math.PI,Math.PI)}}),c.Line.intersectsPoints=function(a,b,d,e,f,g){void 0===f&&(f=!0),void 0===g&&(g=new c.Point);var h=b.y-a.y,i=e.y-d.y,j=a.x-b.x,k=d.x-e.x,l=b.x*a.y-a.x*b.y,m=e.x*d.y-d.x*e.y,n=h*k-i*j;if(0===n)return null;if(g.x=(j*m-k*l)/n,g.y=(i*l-h*m)/n,f){var o=(e.y-d.y)*(b.x-a.x)-(e.x-d.x)*(b.y-a.y),p=((e.x-d.x)*(a.y-d.y)-(e.y-d.y)*(a.x-d.x))/o,q=((b.x-a.x)*(a.y-d.y)-(b.y-a.y)*(a.x-d.x))/o;return p>=0&&1>=p&&q>=0&&1>=q?g:null}return g},c.Line.intersects=function(a,b,d,e){return c.Line.intersectsPoints(a.start,a.end,b.start,b.end,d,e)},c.Line.intersectsRectangle=function(a,b){if(!c.Rectangle.intersects(a,b))return!1;var d=a.start.x,e=a.start.y,f=a.end.x,g=a.end.y,h=b.x,i=b.y,j=b.right,k=b.bottom,l=0;if(d>=h&&j>=d&&e>=i&&k>=e||f>=h&&j>=f&&g>=i&&k>=g)return!0;if(h>d&&f>=h){if(l=e+(g-e)*(h-d)/(f-d),l>i&&k>=l)return!0}else if(d>j&&j>=f&&(l=e+(g-e)*(j-d)/(f-d),l>=i&&k>=l))return!0;if(i>e&&g>=i){if(l=d+(f-d)*(i-e)/(g-e),l>=h&&j>=l)return!0}else if(e>k&&k>=g&&(l=d+(f-d)*(k-e)/(g-e),l>=h&&j>=l))return!0;return!1},c.Line.reflect=function(a,b){return 2*b.normalAngle-3.141592653589793-a.angle},c.Matrix=function(a,b,d,e,f,g){void 0!==a&&null!==a||(a=1),void 0!==b&&null!==b||(b=0),void 0!==d&&null!==d||(d=0),void 0!==e&&null!==e||(e=1),void 0!==f&&null!==f||(f=0),void 0!==g&&null!==g||(g=0),this.a=a,this.b=b,this.c=d,this.d=e,this.tx=f,this.ty=g,this.type=c.MATRIX},c.Matrix.prototype={fromArray:function(a){return this.setTo(a[0],a[1],a[3],a[4],a[2],a[5])},setTo:function(a,b,c,d,e,f){return this.a=a,this.b=b,this.c=c,this.d=d,this.tx=e,this.ty=f,this},clone:function(a){return void 0===a||null===a?a=new c.Matrix(this.a,this.b,this.c,this.d,this.tx,this.ty):(a.a=this.a,a.b=this.b,a.c=this.c,a.d=this.d,a.tx=this.tx,a.ty=this.ty),a},copyTo:function(a){return a.copyFrom(this),a},copyFrom:function(a){return this.a=a.a,this.b=a.b,this.c=a.c,this.d=a.d,this.tx=a.tx,this.ty=a.ty,this},toArray:function(a,b){return void 0===b&&(b=new PIXI.Float32Array(9)),a?(b[0]=this.a,b[1]=this.b,b[2]=0,b[3]=this.c,b[4]=this.d,b[5]=0,b[6]=this.tx,b[7]=this.ty,b[8]=1):(b[0]=this.a,b[1]=this.c,b[2]=this.tx,b[3]=this.b,b[4]=this.d,b[5]=this.ty,b[6]=0,b[7]=0,b[8]=1),b},apply:function(a,b){return void 0===b&&(b=new c.Point),b.x=this.a*a.x+this.c*a.y+this.tx,b.y=this.b*a.x+this.d*a.y+this.ty,b},applyInverse:function(a,b){void 0===b&&(b=new c.Point);var d=1/(this.a*this.d+this.c*-this.b),e=a.x,f=a.y;return b.x=this.d*d*e+-this.c*d*f+(this.ty*this.c-this.tx*this.d)*d,b.y=this.a*d*f+-this.b*d*e+(-this.ty*this.a+this.tx*this.b)*d,b},translate:function(a,b){return this.tx+=a,this.ty+=b,this},scale:function(a,b){return this.a*=a,this.d*=b,this.c*=a,this.b*=b,this.tx*=a,this.ty*=b,this},rotate:function(a){var b=Math.cos(a),c=Math.sin(a),d=this.a,e=this.c,f=this.tx;return this.a=d*b-this.b*c,this.b=d*c+this.b*b,this.c=e*b-this.d*c,this.d=e*c+this.d*b,this.tx=f*b-this.ty*c,this.ty=f*c+this.ty*b,this},append:function(a){ +var b=this.a,c=this.b,d=this.c,e=this.d;return this.a=a.a*b+a.b*d,this.b=a.a*c+a.b*e,this.c=a.c*b+a.d*d,this.d=a.c*c+a.d*e,this.tx=a.tx*b+a.ty*d+this.tx,this.ty=a.tx*c+a.ty*e+this.ty,this},identity:function(){return this.setTo(1,0,0,1,0,0)}},c.identityMatrix=new c.Matrix,PIXI.Matrix=c.Matrix,PIXI.identityMatrix=c.identityMatrix,c.Point=function(a,b){a=a||0,b=b||0,this.x=a,this.y=b,this.type=c.POINT},c.Point.prototype={copyFrom:function(a){return this.setTo(a.x,a.y)},invert:function(){return this.setTo(this.y,this.x)},setTo:function(a,b){return this.x=a||0,this.y=b||(0!==b?this.x:0),this},set:function(a,b){return this.x=a||0,this.y=b||(0!==b?this.x:0),this},add:function(a,b){return this.x+=a,this.y+=b,this},subtract:function(a,b){return this.x-=a,this.y-=b,this},multiply:function(a,b){return this.x*=a,this.y*=b,this},divide:function(a,b){return this.x/=a,this.y/=b,this},clampX:function(a,b){return this.x=c.Math.clamp(this.x,a,b),this},clampY:function(a,b){return this.y=c.Math.clamp(this.y,a,b),this},clamp:function(a,b){return this.x=c.Math.clamp(this.x,a,b),this.y=c.Math.clamp(this.y,a,b),this},clone:function(a){return void 0===a||null===a?a=new c.Point(this.x,this.y):a.setTo(this.x,this.y),a},copyTo:function(a){return a.x=this.x,a.y=this.y,a},distance:function(a,b){return c.Point.distance(this,a,b)},equals:function(a){return a.x===this.x&&a.y===this.y},angle:function(a,b){return void 0===b&&(b=!1),b?c.Math.radToDeg(Math.atan2(a.y-this.y,a.x-this.x)):Math.atan2(a.y-this.y,a.x-this.x)},rotate:function(a,b,d,e,f){return c.Point.rotate(this,a,b,d,e,f)},getMagnitude:function(){return Math.sqrt(this.x*this.x+this.y*this.y)},getMagnitudeSq:function(){return this.x*this.x+this.y*this.y},setMagnitude:function(a){return this.normalize().multiply(a,a)},normalize:function(){if(!this.isZero()){var a=this.getMagnitude();this.x/=a,this.y/=a}return this},isZero:function(){return 0===this.x&&0===this.y},dot:function(a){return this.x*a.x+this.y*a.y},cross:function(a){return this.x*a.y-this.y*a.x},perp:function(){return this.setTo(-this.y,this.x)},rperp:function(){return this.setTo(this.y,-this.x)},normalRightHand:function(){return this.setTo(-1*this.y,this.x)},floor:function(){return this.setTo(Math.floor(this.x),Math.floor(this.y))},ceil:function(){return this.setTo(Math.ceil(this.x),Math.ceil(this.y))},toString:function(){return"[{Point (x="+this.x+" y="+this.y+")}]"}},c.Point.prototype.constructor=c.Point,c.Point.add=function(a,b,d){return void 0===d&&(d=new c.Point),d.x=a.x+b.x,d.y=a.y+b.y,d},c.Point.subtract=function(a,b,d){return void 0===d&&(d=new c.Point),d.x=a.x-b.x,d.y=a.y-b.y,d},c.Point.multiply=function(a,b,d){return void 0===d&&(d=new c.Point),d.x=a.x*b.x,d.y=a.y*b.y,d},c.Point.divide=function(a,b,d){return void 0===d&&(d=new c.Point),d.x=a.x/b.x,d.y=a.y/b.y,d},c.Point.equals=function(a,b){return a.x===b.x&&a.y===b.y},c.Point.angle=function(a,b){return Math.atan2(a.y-b.y,a.x-b.x)},c.Point.negative=function(a,b){return void 0===b&&(b=new c.Point),b.setTo(-a.x,-a.y)},c.Point.multiplyAdd=function(a,b,d,e){return void 0===e&&(e=new c.Point),e.setTo(a.x+b.x*d,a.y+b.y*d)},c.Point.interpolate=function(a,b,d,e){return void 0===e&&(e=new c.Point),e.setTo(a.x+(b.x-a.x)*d,a.y+(b.y-a.y)*d)},c.Point.perp=function(a,b){return void 0===b&&(b=new c.Point),b.setTo(-a.y,a.x)},c.Point.rperp=function(a,b){return void 0===b&&(b=new c.Point),b.setTo(a.y,-a.x)},c.Point.distance=function(a,b,d){var e=c.Math.distance(a.x,a.y,b.x,b.y);return d?Math.round(e):e},c.Point.project=function(a,b,d){void 0===d&&(d=new c.Point);var e=a.dot(b)/b.getMagnitudeSq();return 0!==e&&d.setTo(e*b.x,e*b.y),d},c.Point.projectUnit=function(a,b,d){void 0===d&&(d=new c.Point);var e=a.dot(b);return 0!==e&&d.setTo(e*b.x,e*b.y),d},c.Point.normalRightHand=function(a,b){return void 0===b&&(b=new c.Point),b.setTo(-1*a.y,a.x)},c.Point.normalize=function(a,b){void 0===b&&(b=new c.Point);var d=a.getMagnitude();return 0!==d&&b.setTo(a.x/d,a.y/d),b},c.Point.rotate=function(a,b,d,e,f,g){if(f&&(e=c.Math.degToRad(e)),void 0===g){a.subtract(b,d);var h=Math.sin(e),i=Math.cos(e),j=i*a.x-h*a.y,k=h*a.x+i*a.y;a.x=j+b,a.y=k+d}else{var l=e+Math.atan2(a.y-d,a.x-b);a.x=b+g*Math.cos(l),a.y=d+g*Math.sin(l)}return a},c.Point.centroid=function(a,b){if(void 0===b&&(b=new c.Point),"[object Array]"!==Object.prototype.toString.call(a))throw new Error("Phaser.Point. Parameter 'points' must be an array");var d=a.length;if(1>d)throw new Error("Phaser.Point. Parameter 'points' array must not be empty");if(1===d)return b.copyFrom(a[0]),b;for(var e=0;d>e;e++)c.Point.add(b,a[e],b);return b.divide(d,d),b},c.Point.parse=function(a,b,d){b=b||"x",d=d||"y";var e=new c.Point;return a[b]&&(e.x=parseInt(a[b],10)),a[d]&&(e.y=parseInt(a[d],10)),e},PIXI.Point=c.Point,c.Polygon=function(){this.area=0,this._points=[],arguments.length>0&&this.setTo.apply(this,arguments),this.closed=!0,this.flattened=!1,this.type=c.POLYGON},c.Polygon.prototype={toNumberArray:function(a){void 0===a&&(a=[]);for(var b=0;b=g&&i>b||b>=i&&g>b)&&(h-f)*(b-g)/(i-g)+f>a&&(c=!c)}else for(var d=-1,e=this._points.length-1;++d=g&&i>b||b>=i&&g>b)&&(h-f)*(b-g)/(i-g)+f>a&&(c=!c)}return c},setTo:function(a){if(this.area=0,this._points=[],arguments.length>0){Array.isArray(a)||(a=Array.prototype.slice.call(arguments));for(var b=Number.MAX_VALUE,c=0,d=a.length;d>c;c++){if("number"==typeof a[c]){var e=new PIXI.Point(a[c],a[c+1]);c++}else if(Array.isArray(a[c]))var e=new PIXI.Point(a[c][0],a[c][1]);else var e=new PIXI.Point(a[c].x,a[c].y);this._points.push(e),e.yf;f++)b=this._points[f],c=f===g-1?this._points[0]:this._points[f+1],d=(b.y-a+(c.y-a))/2,e=b.x-c.x,this.area+=d*e;return this.area}},c.Polygon.prototype.constructor=c.Polygon,Object.defineProperty(c.Polygon.prototype,"points",{get:function(){return this._points},set:function(a){null!=a?this.setTo(a):this.setTo()}}),PIXI.Polygon=c.Polygon,c.Rectangle=function(a,b,d,e){a=a||0,b=b||0,d=d||0,e=e||0,this.x=a,this.y=b,this.width=d,this.height=e,this.type=c.RECTANGLE},c.Rectangle.prototype={offset:function(a,b){return this.x+=a,this.y+=b,this},offsetPoint:function(a){return this.offset(a.x,a.y)},setTo:function(a,b,c,d){return this.x=a,this.y=b,this.width=c,this.height=d,this},scale:function(a,b){return void 0===b&&(b=a),this.width*=a,this.height*=b,this},centerOn:function(a,b){return this.centerX=a,this.centerY=b,this},floor:function(){this.x=Math.floor(this.x),this.y=Math.floor(this.y)},floorAll:function(){this.x=Math.floor(this.x),this.y=Math.floor(this.y),this.width=Math.floor(this.width),this.height=Math.floor(this.height)},ceil:function(){this.x=Math.ceil(this.x),this.y=Math.ceil(this.y)},ceilAll:function(){this.x=Math.ceil(this.x),this.y=Math.ceil(this.y),this.width=Math.ceil(this.width),this.height=Math.ceil(this.height)},copyFrom:function(a){return this.setTo(a.x,a.y,a.width,a.height)},copyTo:function(a){return a.x=this.x,a.y=this.y,a.width=this.width,a.height=this.height,a},inflate:function(a,b){return c.Rectangle.inflate(this,a,b)},size:function(a){return c.Rectangle.size(this,a)},resize:function(a,b){return this.width=a,this.height=b,this},clone:function(a){return c.Rectangle.clone(this,a)},contains:function(a,b){return c.Rectangle.contains(this,a,b)},containsRect:function(a){return c.Rectangle.containsRect(a,this)},equals:function(a){return c.Rectangle.equals(this,a)},intersection:function(a,b){return c.Rectangle.intersection(this,a,b)},intersects:function(a){return c.Rectangle.intersects(this,a)},intersectsRaw:function(a,b,d,e,f){return c.Rectangle.intersectsRaw(this,a,b,d,e,f)},union:function(a,b){return c.Rectangle.union(this,a,b)},random:function(a){return void 0===a&&(a=new c.Point),a.x=this.randomX,a.y=this.randomY,a},getPoint:function(a,b){switch(void 0===b&&(b=new c.Point),a){default:case c.TOP_LEFT:return b.set(this.x,this.y);case c.TOP_CENTER:return b.set(this.centerX,this.y);case c.TOP_RIGHT:return b.set(this.right,this.y);case c.LEFT_CENTER:return b.set(this.x,this.centerY);case c.CENTER:return b.set(this.centerX,this.centerY);case c.RIGHT_CENTER:return b.set(this.right,this.centerY);case c.BOTTOM_LEFT:return b.set(this.x,this.bottom);case c.BOTTOM_CENTER:return b.set(this.centerX,this.bottom);case c.BOTTOM_RIGHT:return b.set(this.right,this.bottom)}},toString:function(){return"[{Rectangle (x="+this.x+" y="+this.y+" width="+this.width+" height="+this.height+" empty="+this.empty+")}]"}},Object.defineProperty(c.Rectangle.prototype,"halfWidth",{get:function(){return Math.round(this.width/2)}}),Object.defineProperty(c.Rectangle.prototype,"halfHeight",{get:function(){return Math.round(this.height/2)}}),Object.defineProperty(c.Rectangle.prototype,"bottom",{get:function(){return this.y+this.height},set:function(a){a<=this.y?this.height=0:this.height=a-this.y}}),Object.defineProperty(c.Rectangle.prototype,"bottomLeft",{get:function(){return new c.Point(this.x,this.bottom)},set:function(a){this.x=a.x,this.bottom=a.y}}),Object.defineProperty(c.Rectangle.prototype,"bottomRight",{get:function(){return new c.Point(this.right,this.bottom)},set:function(a){this.right=a.x,this.bottom=a.y}}),Object.defineProperty(c.Rectangle.prototype,"left",{get:function(){return this.x},set:function(a){a>=this.right?this.width=0:this.width=this.right-a,this.x=a}}),Object.defineProperty(c.Rectangle.prototype,"right",{get:function(){return this.x+this.width},set:function(a){a<=this.x?this.width=0:this.width=a-this.x}}),Object.defineProperty(c.Rectangle.prototype,"volume",{get:function(){return this.width*this.height}}),Object.defineProperty(c.Rectangle.prototype,"perimeter",{get:function(){return 2*this.width+2*this.height}}),Object.defineProperty(c.Rectangle.prototype,"centerX",{get:function(){return this.x+this.halfWidth},set:function(a){this.x=a-this.halfWidth}}),Object.defineProperty(c.Rectangle.prototype,"centerY",{get:function(){return this.y+this.halfHeight},set:function(a){this.y=a-this.halfHeight}}),Object.defineProperty(c.Rectangle.prototype,"randomX",{get:function(){return this.x+Math.random()*this.width}}),Object.defineProperty(c.Rectangle.prototype,"randomY",{get:function(){return this.y+Math.random()*this.height}}),Object.defineProperty(c.Rectangle.prototype,"top",{get:function(){return this.y},set:function(a){a>=this.bottom?(this.height=0,this.y=a):this.height=this.bottom-a}}),Object.defineProperty(c.Rectangle.prototype,"topLeft",{get:function(){return new c.Point(this.x,this.y)},set:function(a){this.x=a.x,this.y=a.y}}),Object.defineProperty(c.Rectangle.prototype,"topRight",{get:function(){return new c.Point(this.x+this.width,this.y)},set:function(a){this.right=a.x,this.y=a.y}}),Object.defineProperty(c.Rectangle.prototype,"empty",{get:function(){return!this.width||!this.height},set:function(a){a===!0&&this.setTo(0,0,0,0)}}),c.Rectangle.prototype.constructor=c.Rectangle,c.Rectangle.inflate=function(a,b,c){return a.x-=b,a.width+=2*b,a.y-=c,a.height+=2*c,a},c.Rectangle.inflatePoint=function(a,b){return c.Rectangle.inflate(a,b.x,b.y)},c.Rectangle.size=function(a,b){return void 0===b||null===b?b=new c.Point(a.width,a.height):b.setTo(a.width,a.height),b},c.Rectangle.clone=function(a,b){return void 0===b||null===b?b=new c.Rectangle(a.x,a.y,a.width,a.height):b.setTo(a.x,a.y,a.width,a.height),b},c.Rectangle.contains=function(a,b,c){return a.width<=0||a.height<=0?!1:b>=a.x&&b=a.y&&c=a&&a+c>e&&f>=b&&b+d>f},c.Rectangle.containsPoint=function(a,b){return c.Rectangle.contains(a,b.x,b.y)},c.Rectangle.containsRect=function(a,b){return a.volume>b.volume?!1:a.x>=b.x&&a.y>=b.y&&a.rightb.right||a.y>b.bottom)},c.Rectangle.intersectsRaw=function(a,b,c,d,e,f){return void 0===f&&(f=0),!(b>a.right+f||ca.bottom+f||ed&&(d=a.x),a.xf&&(f=a.y),a.y=c&&a<=c+this.width){var d=this.y;if(b>=d&&b<=d+this.height)return!0}return!1}},c.RoundedRectangle.prototype.constructor=c.RoundedRectangle,PIXI.RoundedRectangle=c.RoundedRectangle,c.Camera=function(a,b,d,e,f,g){this.game=a,this.world=a.world,this.id=0,this.view=new c.Rectangle(d,e,f,g),this.bounds=new c.Rectangle(d,e,f,g),this.deadzone=null,this.visible=!0,this.roundPx=!0,this.atLimit={x:!1,y:!1},this.target=null,this.displayObject=null,this.scale=null,this.totalInView=0,this.lerp=new c.Point(1,1),this.onShakeComplete=new c.Signal,this.onFlashComplete=new c.Signal,this.onFadeComplete=new c.Signal,this.fx=null,this._targetPosition=new c.Point,this._edge=0,this._position=new c.Point,this._shake={intensity:0,duration:0,horizontal:!1,vertical:!1,shakeBounds:!0,x:0,y:0},this._fxDuration=0,this._fxType=0},c.Camera.FOLLOW_LOCKON=0,c.Camera.FOLLOW_PLATFORMER=1,c.Camera.FOLLOW_TOPDOWN=2,c.Camera.FOLLOW_TOPDOWN_TIGHT=3,c.Camera.SHAKE_BOTH=4,c.Camera.SHAKE_HORIZONTAL=5,c.Camera.SHAKE_VERTICAL=6,c.Camera.ENABLE_FX=!0,c.Camera.prototype={boot:function(){this.displayObject=this.game.world,this.scale=this.game.world.scale,this.game.camera=this,c.Graphics&&c.Camera.ENABLE_FX&&(this.fx=new c.Graphics(this.game),this.game.stage.addChild(this.fx))},preUpdate:function(){this.totalInView=0},follow:function(a,b,d,e){void 0===b&&(b=c.Camera.FOLLOW_LOCKON),void 0===d&&(d=1),void 0===e&&(e=1),this.target=a,this.lerp.set(d,e);var f;switch(b){case c.Camera.FOLLOW_PLATFORMER:var g=this.width/8,h=this.height/3;this.deadzone=new c.Rectangle((this.width-g)/2,(this.height-h)/2-.25*h,g,h);break;case c.Camera.FOLLOW_TOPDOWN:f=Math.max(this.width,this.height)/4,this.deadzone=new c.Rectangle((this.width-f)/2,(this.height-f)/2,f,f);break;case c.Camera.FOLLOW_TOPDOWN_TIGHT:f=Math.max(this.width,this.height)/8,this.deadzone=new c.Rectangle((this.width-f)/2,(this.height-f)/2,f,f);break;case c.Camera.FOLLOW_LOCKON:this.deadzone=null;break;default:this.deadzone=null}},unfollow:function(){this.target=null},focusOn:function(a){this.setPosition(Math.round(a.x-this.view.halfWidth),Math.round(a.y-this.view.halfHeight))},focusOnXY:function(a,b){this.setPosition(Math.round(a-this.view.halfWidth),Math.round(b-this.view.halfHeight))},shake:function(a,b,d,e,f){return void 0===a&&(a=.05),void 0===b&&(b=500),void 0===d&&(d=!0),void 0===e&&(e=c.Camera.SHAKE_BOTH),void 0===f&&(f=!0),!d&&this._shake.duration>0?!1:(this._shake.intensity=a,this._shake.duration=b,this._shake.shakeBounds=f,this._shake.x=0,this._shake.y=0,this._shake.horizontal=e===c.Camera.SHAKE_BOTH||e===c.Camera.SHAKE_HORIZONTAL,this._shake.vertical=e===c.Camera.SHAKE_BOTH||e===c.Camera.SHAKE_VERTICAL,!0)},flash:function(a,b,c){return void 0===a&&(a=16777215),void 0===b&&(b=500),void 0===c&&(c=!1),!this.fx||!c&&this._fxDuration>0?!1:(this.fx.clear(),this.fx.beginFill(a),this.fx.drawRect(0,0,this.width,this.height),this.fx.endFill(),this.fx.alpha=1,this._fxDuration=b,this._fxType=0,!0)},fade:function(a,b,c){return void 0===a&&(a=0),void 0===b&&(b=500),void 0===c&&(c=!1),!this.fx||!c&&this._fxDuration>0?!1:(this.fx.clear(),this.fx.beginFill(a),this.fx.drawRect(0,0,this.width,this.height),this.fx.endFill(),this.fx.alpha=0,this._fxDuration=b,this._fxType=1,!0)},update:function(){this._fxDuration>0&&this.updateFX(),this._shake.duration>0&&this.updateShake(),this.bounds&&this.checkBounds(),this.roundPx&&(this.view.floor(),this._shake.x=Math.floor(this._shake.x),this._shake.y=Math.floor(this._shake.y)),this.displayObject.position.x=-this.view.x,this.displayObject.position.y=-this.view.y},updateFX:function(){0===this._fxType?(this.fx.alpha-=this.game.time.elapsedMS/this._fxDuration,this.fx.alpha<=0&&(this._fxDuration=0,this.fx.alpha=0,this.onFlashComplete.dispatch())):(this.fx.alpha+=this.game.time.elapsedMS/this._fxDuration,this.fx.alpha>=1&&(this._fxDuration=0,this.fx.alpha=1,this.onFadeComplete.dispatch()))},updateShake:function(){this._shake.duration-=this.game.time.elapsedMS,this._shake.duration<=0?(this.onShakeComplete.dispatch(),this._shake.x=0,this._shake.y=0):(this._shake.horizontal&&(this._shake.x=this.game.rnd.frac()*this._shake.intensity*this.view.width*2-this._shake.intensity*this.view.width),this._shake.vertical&&(this._shake.y=this.game.rnd.frac()*this._shake.intensity*this.view.height*2-this._shake.intensity*this.view.height))},updateTarget:function(){this._targetPosition.x=this.view.x+this.target.worldPosition.x,this._targetPosition.y=this.view.y+this.target.worldPosition.y,this.deadzone?(this._edge=this._targetPosition.x-this.view.x,this._edgethis.deadzone.right&&(this.view.x=this.game.math.linear(this.view.x,this._targetPosition.x-this.deadzone.right,this.lerp.x)),this._edge=this._targetPosition.y-this.view.y,this._edgethis.deadzone.bottom&&(this.view.y=this.game.math.linear(this.view.y,this._targetPosition.y-this.deadzone.bottom,this.lerp.y))):(this.view.x=this.game.math.linear(this.view.x,this._targetPosition.x-this.view.halfWidth,this.lerp.x),this.view.y=this.game.math.linear(this.view.y,this._targetPosition.y-this.view.halfHeight,this.lerp.y)),this.bounds&&this.checkBounds(),this.roundPx&&this.view.floor(),this.displayObject.position.x=-this.view.x,this.displayObject.position.y=-this.view.y},setBoundsToWorld:function(){this.bounds&&this.bounds.copyFrom(this.game.world.bounds)},checkBounds:function(){this.atLimit.x=!1,this.atLimit.y=!1;var a=this.view.x+this._shake.x,b=this.view.right+this._shake.x,c=this.view.y+this._shake.y,d=this.view.bottom+this._shake.y;a<=this.bounds.x*this.scale.x&&(this.atLimit.x=!0,this.view.x=this.bounds.x*this.scale.x,this._shake.shakeBounds||(this._shake.x=0)),b>=this.bounds.right*this.scale.x&&(this.atLimit.x=!0,this.view.x=this.bounds.right*this.scale.x-this.width,this._shake.shakeBounds||(this._shake.x=0)),c<=this.bounds.top*this.scale.y&&(this.atLimit.y=!0,this.view.y=this.bounds.top*this.scale.y,this._shake.shakeBounds||(this._shake.y=0)),d>=this.bounds.bottom*this.scale.y&&(this.atLimit.y=!0,this.view.y=this.bounds.bottom*this.scale.y-this.height,this._shake.shakeBounds||(this._shake.y=0))},setPosition:function(a,b){this.view.x=a,this.view.y=b,this.bounds&&this.checkBounds()},setSize:function(a,b){this.view.width=a,this.view.height=b},reset:function(){this.target=null,this.view.x=0,this.view.y=0,this._shake.duration=0,this.resetFX()},resetFX:function(){this.fx.clear(),this.fx.alpha=0,this._fxDuration=0}},c.Camera.prototype.constructor=c.Camera,Object.defineProperty(c.Camera.prototype,"x",{get:function(){return this.view.x},set:function(a){this.view.x=a,this.bounds&&this.checkBounds()}}),Object.defineProperty(c.Camera.prototype,"y",{get:function(){return this.view.y},set:function(a){this.view.y=a,this.bounds&&this.checkBounds()}}),Object.defineProperty(c.Camera.prototype,"position",{get:function(){return this._position.set(this.view.x,this.view.y),this._position},set:function(a){"undefined"!=typeof a.x&&(this.view.x=a.x),"undefined"!=typeof a.y&&(this.view.y=a.y),this.bounds&&this.checkBounds()}}),Object.defineProperty(c.Camera.prototype,"width",{get:function(){return this.view.width},set:function(a){this.view.width=a}}),Object.defineProperty(c.Camera.prototype,"height",{get:function(){return this.view.height},set:function(a){this.view.height=a}}),Object.defineProperty(c.Camera.prototype,"shakeIntensity",{get:function(){return this._shake.intensity},set:function(a){this._shake.intensity=a}}),c.State=function(){this.game=null,this.key="",this.add=null,this.make=null,this.camera=null,this.cache=null,this.input=null,this.load=null,this.math=null,this.sound=null,this.scale=null,this.stage=null,this.state=null,this.time=null,this.tweens=null,this.world=null,this.particles=null,this.physics=null,this.rnd=null},c.State.prototype={init:function(){},preload:function(){},loadUpdate:function(){},loadRender:function(){},create:function(){},update:function(){},preRender:function(){},render:function(){},resize:function(){},paused:function(){},resumed:function(){},pauseUpdate:function(){},shutdown:function(){}},c.State.prototype.constructor=c.State,c.StateManager=function(a,b){this.game=a,this.states={},this._pendingState=null,"undefined"!=typeof b&&null!==b&&(this._pendingState=b),this._clearWorld=!1,this._clearCache=!1,this._created=!1,this._args=[],this.current="",this.onStateChange=new c.Signal,this.onInitCallback=null,this.onPreloadCallback=null,this.onCreateCallback=null,this.onUpdateCallback=null,this.onRenderCallback=null,this.onResizeCallback=null,this.onPreRenderCallback=null,this.onLoadUpdateCallback=null,this.onLoadRenderCallback=null,this.onPausedCallback=null,this.onResumedCallback=null,this.onPauseUpdateCallback=null,this.onShutDownCallback=null},c.StateManager.prototype={boot:function(){this.game.onPause.add(this.pause,this),this.game.onResume.add(this.resume,this),null!==this._pendingState&&"string"!=typeof this._pendingState&&this.add("default",this._pendingState,!0)},add:function(a,b,d){void 0===d&&(d=!1);var e;return b instanceof c.State?e=b:"object"==typeof b?(e=b,e.game=this.game):"function"==typeof b&&(e=new b(this.game)),this.states[a]=e,d&&(this.game.isBooted?this.start(a):this._pendingState=a),e},remove:function(a){this.current===a&&(this.callbackContext=null,this.onInitCallback=null,this.onShutDownCallback=null,this.onPreloadCallback=null,this.onLoadRenderCallback=null,this.onLoadUpdateCallback=null,this.onCreateCallback=null,this.onUpdateCallback=null,this.onPreRenderCallback=null,this.onRenderCallback=null,this.onResizeCallback=null,this.onPausedCallback=null,this.onResumedCallback=null,this.onPauseUpdateCallback=null),delete this.states[a]},start:function(a,b,c){void 0===b&&(b=!0),void 0===c&&(c=!1),this.checkState(a)&&(this._pendingState=a,this._clearWorld=b,this._clearCache=c,arguments.length>3&&(this._args=Array.prototype.splice.call(arguments,3)))},restart:function(a,b){void 0===a&&(a=!0),void 0===b&&(b=!1),this._pendingState=this.current,this._clearWorld=a,this._clearCache=b,arguments.length>2&&(this._args=Array.prototype.slice.call(arguments,2))},dummy:function(){},preUpdate:function(){if(this._pendingState&&this.game.isBooted){var a=this.current;if(this.clearCurrentState(),this.setCurrentState(this._pendingState),this.onStateChange.dispatch(this.current,a),this.current!==this._pendingState)return;this._pendingState=null,this.onPreloadCallback?(this.game.load.reset(!0),this.onPreloadCallback.call(this.callbackContext,this.game),0===this.game.load.totalQueuedFiles()&&0===this.game.load.totalQueuedPacks()?this.loadComplete():this.game.load.start()):this.loadComplete()}},clearCurrentState:function(){this.current&&(this.onShutDownCallback&&this.onShutDownCallback.call(this.callbackContext,this.game),this.game.tweens.removeAll(),this.game.camera.reset(),this.game.input.reset(!0),this.game.physics.clear(),this.game.time.removeAll(),this.game.scale.reset(this._clearWorld),this.game.debug&&this.game.debug.reset(),this._clearWorld&&(this.game.world.shutdown(),this._clearCache&&this.game.cache.destroy()))},checkState:function(a){return this.states[a]?this.states[a].preload||this.states[a].create||this.states[a].update||this.states[a].render?!0:(console.warn("Invalid Phaser State object given. Must contain at least a one of the required functions: preload, create, update or render"),!1):(console.warn("Phaser.StateManager - No state found with the key: "+a),!1)},link:function(a){this.states[a].game=this.game,this.states[a].add=this.game.add,this.states[a].make=this.game.make,this.states[a].camera=this.game.camera,this.states[a].cache=this.game.cache,this.states[a].input=this.game.input,this.states[a].load=this.game.load,this.states[a].math=this.game.math,this.states[a].sound=this.game.sound,this.states[a].scale=this.game.scale,this.states[a].state=this,this.states[a].stage=this.game.stage,this.states[a].time=this.game.time,this.states[a].tweens=this.game.tweens,this.states[a].world=this.game.world,this.states[a].particles=this.game.particles,this.states[a].rnd=this.game.rnd,this.states[a].physics=this.game.physics,this.states[a].key=a},unlink:function(a){this.states[a]&&(this.states[a].game=null,this.states[a].add=null,this.states[a].make=null,this.states[a].camera=null,this.states[a].cache=null,this.states[a].input=null,this.states[a].load=null,this.states[a].math=null,this.states[a].sound=null,this.states[a].scale=null,this.states[a].state=null,this.states[a].stage=null,this.states[a].time=null,this.states[a].tweens=null,this.states[a].world=null,this.states[a].particles=null,this.states[a].rnd=null,this.states[a].physics=null)},setCurrentState:function(a){this.callbackContext=this.states[a],this.link(a),this.onInitCallback=this.states[a].init||this.dummy,this.onPreloadCallback=this.states[a].preload||null,this.onLoadRenderCallback=this.states[a].loadRender||null,this.onLoadUpdateCallback=this.states[a].loadUpdate||null,this.onCreateCallback=this.states[a].create||null,this.onUpdateCallback=this.states[a].update||null,this.onPreRenderCallback=this.states[a].preRender||null,this.onRenderCallback=this.states[a].render||null,this.onResizeCallback=this.states[a].resize||null,this.onPausedCallback=this.states[a].paused||null,this.onResumedCallback=this.states[a].resumed||null,this.onPauseUpdateCallback=this.states[a].pauseUpdate||null,this.onShutDownCallback=this.states[a].shutdown||this.dummy,""!==this.current&&this.game.physics.reset(),this.current=a,this._created=!1,this.onInitCallback.apply(this.callbackContext,this._args),a===this._pendingState&&(this._args=[]),this.game._kickstart=!0},getCurrentState:function(){return this.states[this.current]},loadComplete:function(){this._created===!1&&this.onLoadUpdateCallback&&this.onLoadUpdateCallback.call(this.callbackContext,this.game),this._created===!1&&this.onCreateCallback?(this._created=!0,this.onCreateCallback.call(this.callbackContext,this.game)):this._created=!0},pause:function(){this._created&&this.onPausedCallback&&this.onPausedCallback.call(this.callbackContext,this.game)},resume:function(){this._created&&this.onResumedCallback&&this.onResumedCallback.call(this.callbackContext,this.game)},update:function(){this._created?this.onUpdateCallback&&this.onUpdateCallback.call(this.callbackContext,this.game):this.onLoadUpdateCallback&&this.onLoadUpdateCallback.call(this.callbackContext,this.game)},pauseUpdate:function(){this._created?this.onPauseUpdateCallback&&this.onPauseUpdateCallback.call(this.callbackContext,this.game):this.onLoadUpdateCallback&&this.onLoadUpdateCallback.call(this.callbackContext,this.game)},preRender:function(a){this._created&&this.onPreRenderCallback&&this.onPreRenderCallback.call(this.callbackContext,this.game,a)},resize:function(a,b){this.onResizeCallback&&this.onResizeCallback.call(this.callbackContext,a,b)},render:function(){this._created?this.onRenderCallback&&(this.game.renderType===c.CANVAS?(this.game.context.save(),this.game.context.setTransform(1,0,0,1,0,0),this.onRenderCallback.call(this.callbackContext,this.game),this.game.context.restore()):this.onRenderCallback.call(this.callbackContext,this.game)):this.onLoadRenderCallback&&this.onLoadRenderCallback.call(this.callbackContext,this.game)},destroy:function(){this._clearWorld=!0,this._clearCache=!0,this.clearCurrentState(),this.callbackContext=null,this.onInitCallback=null,this.onShutDownCallback=null,this.onPreloadCallback=null,this.onLoadRenderCallback=null,this.onLoadUpdateCallback=null,this.onCreateCallback=null,this.onUpdateCallback=null,this.onRenderCallback=null,this.onPausedCallback=null,this.onResumedCallback=null,this.onPauseUpdateCallback=null,this.game=null,this.states={},this._pendingState=null,this.current=""}},c.StateManager.prototype.constructor=c.StateManager,Object.defineProperty(c.StateManager.prototype,"created",{get:function(){return this._created}}),c.Signal=function(){},c.Signal.prototype={_bindings:null,_prevParams:null,memorize:!1,_shouldPropagate:!0,active:!0,_boundDispatch:!1,validateListener:function(a,b){if("function"!=typeof a)throw new Error("Phaser.Signal: listener is a required param of {fn}() and should be a Function.".replace("{fn}",b))},_registerListener:function(a,b,d,e,f){var g,h=this._indexOfListener(a,d);if(-1!==h){if(g=this._bindings[h],g.isOnce()!==b)throw new Error("You cannot add"+(b?"":"Once")+"() then add"+(b?"Once":"")+"() the same listener without removing the relationship first.")}else g=new c.SignalBinding(this,a,b,d,e,f),this._addBinding(g);return this.memorize&&this._prevParams&&g.execute(this._prevParams),g},_addBinding:function(a){this._bindings||(this._bindings=[]);var b=this._bindings.length;do b--;while(this._bindings[b]&&a._priority<=this._bindings[b]._priority);this._bindings.splice(b+1,0,a)},_indexOfListener:function(a,b){if(!this._bindings)return-1;void 0===b&&(b=null);for(var c,d=this._bindings.length;d--;)if(c=this._bindings[d],c._listener===a&&c.context===b)return d;return-1},has:function(a,b){return-1!==this._indexOfListener(a,b)},add:function(a,b,c){this.validateListener(a,"add");var d=[];if(arguments.length>3)for(var e=3;e3)for(var e=3;ea||a>=this.children.length?-1:this.getChildAt(a)},c.Group.prototype.create=function(a,b,c,d,e,f){void 0===e&&(e=!0);var g=new this.classType(this.game,a,b,c,d);return g.exists=e,g.visible=e,g.alive=e,this.add(g,!1,f)},c.Group.prototype.createMultiple=function(a,b,c,d){void 0===c&&(c=0),void 0===d&&(d=!1),Array.isArray(b)||(b=[b]),Array.isArray(c)||(c=[c]);var e=this,f=[];return b.forEach(function(b){c.forEach(function(c){for(var g=0;a>g;g++)f.push(e.create(0,0,b,c,d))})}),f},c.Group.prototype.updateZ=function(){for(var a=this.children.length;a--;)this.children[a].z=a},c.Group.prototype.align=function(a,b,d,e,f,g){if(void 0===f&&(f=c.TOP_LEFT),void 0===g&&(g=0),!(0===this.children.length||g>this.children.length||-1===a&&-1===b))for(var h=new c.Rectangle(0,0,d,e),i=a*d,j=b*e,k=g;kthis.children.length-1&&(a=0),this.cursor?(this.cursorIndex=a,this.cursor=this.children[this.cursorIndex],this.cursor):void 0},c.Group.prototype.next=function(){return this.cursor?(this.cursorIndex>=this.children.length-1?this.cursorIndex=0:this.cursorIndex++,this.cursor=this.children[this.cursorIndex],this.cursor):void 0},c.Group.prototype.previous=function(){return this.cursor?(0===this.cursorIndex?this.cursorIndex=this.children.length-1:this.cursorIndex--,this.cursor=this.children[this.cursorIndex],this.cursor):void 0},c.Group.prototype.swap=function(a,b){this.swapChildren(a,b),this.updateZ()},c.Group.prototype.bringToTop=function(a){return a.parent===this&&this.getIndex(a)0&&(this.remove(a,!1,!0),this.addAt(a,0,!0)),a},c.Group.prototype.moveUp=function(a){if(a.parent===this&&this.getIndex(a)0){var b=this.getIndex(a),c=this.getAt(b-1);c&&this.swap(a,c)}return a},c.Group.prototype.xy=function(a,b,c){return 0>a||a>this.children.length?-1:(this.getChildAt(a).x=b,void(this.getChildAt(a).y=c))},c.Group.prototype.reverse=function(){this.children.reverse(),this.updateZ()},c.Group.prototype.getIndex=function(a){return this.children.indexOf(a)},c.Group.prototype.getByName=function(a){for(var b=0;b0))return!1;var f=b.length;return 1===f?0===d?a[b[0]]=c:1==d?a[b[0]]+=c:2==d?a[b[0]]-=c:3==d?a[b[0]]*=c:4==d&&(a[b[0]]/=c):2===f?0===d?a[b[0]][b[1]]=c:1==d?a[b[0]][b[1]]+=c:2==d?a[b[0]][b[1]]-=c:3==d?a[b[0]][b[1]]*=c:4==d&&(a[b[0]][b[1]]/=c):3===f?0===d?a[b[0]][b[1]][b[2]]=c:1==d?a[b[0]][b[1]][b[2]]+=c:2==d?a[b[0]][b[1]][b[2]]-=c:3==d?a[b[0]][b[1]][b[2]]*=c:4==d&&(a[b[0]][b[1]][b[2]]/=c):4===f&&(0===d?a[b[0]][b[1]][b[2]][b[3]]=c:1==d?a[b[0]][b[1]][b[2]][b[3]]+=c:2==d?a[b[0]][b[1]][b[2]][b[3]]-=c:3==d?a[b[0]][b[1]][b[2]][b[3]]*=c:4==d&&(a[b[0]][b[1]][b[2]][b[3]]/=c)),!0},c.Group.prototype.checkProperty=function(a,b,d,e){return void 0===e&&(e=!1),!c.Utils.getProperty(a,b)&&e?!1:c.Utils.getProperty(a,b)===d},c.Group.prototype.set=function(a,b,c,d,e,f,g){return void 0===g&&(g=!1),b=b.split("."),void 0===d&&(d=!1),void 0===e&&(e=!1),(d===!1||d&&a.alive)&&(e===!1||e&&a.visible)?this.setProperty(a,b,c,f,g):void 0},c.Group.prototype.setAll=function(a,b,c,d,e,f){void 0===c&&(c=!1),void 0===d&&(d=!1),void 0===f&&(f=!1),a=a.split("."),e=e||0;for(var g=0;g2){c=[];for(var d=2;d2){e=[];for(var f=2;f2){d=[null];for(var e=2;e2){d=[null];for(var e=2;e2){d=[null];for(var e=2;eb[this._sortProperty]?1:a.zb[this._sortProperty]?-1:0},c.Group.prototype.iterate=function(a,b,d,e,f,g){if(d===c.Group.RETURN_TOTAL&&0===this.children.length)return 0;for(var h=0,i=0;i0?this.children[this.children.length-1]:void 0},c.Group.prototype.getBottom=function(){return this.children.length>0?this.children[0]:void 0},c.Group.prototype.getClosestTo=function(a,b,d){for(var e=Number.MAX_VALUE,f=0,g=null,h=0;hf&&(!b||b.call(d,i,f))&&(e=f,g=i))}return g},c.Group.prototype.getFurthestFrom=function(a,b,d){for(var e=0,f=0,g=null,h=0;he&&(!b||b.call(d,i,f))&&(e=f,g=i))}return g},c.Group.prototype.countLiving=function(){return this.iterate("alive",!0,c.Group.RETURN_TOTAL)},c.Group.prototype.countDead=function(){return this.iterate("alive",!1,c.Group.RETURN_TOTAL)},c.Group.prototype.getRandom=function(a,b){return 0===this.children.length?null:(a=a||0,b=b||this.children.length,c.ArrayUtils.getRandomItem(this.children,a,b))},c.Group.prototype.remove=function(a,b,c){if(void 0===b&&(b=!1),void 0===c&&(c=!1),0===this.children.length||-1===this.children.indexOf(a))return!1;c||!a.events||a.destroyPhase||a.events.onRemovedFromGroup$dispatch(a,this);var d=this.removeChild(a);return this.removeFromHash(a),this.updateZ(),this.cursor===a&&this.next(),b&&d&&d.destroy(!0),!0},c.Group.prototype.moveAll=function(a,b){if(void 0===b&&(b=!1),this.children.length>0&&a instanceof c.Group){do a.add(this.children[0],b);while(this.children.length>0);this.hash=[],this.cursor=null}return a},c.Group.prototype.removeAll=function(a,b,c){if(void 0===a&&(a=!1),void 0===b&&(b=!1),void 0===c&&(c=!1),0!==this.children.length){do{!b&&this.children[0].events&&this.children[0].events.onRemovedFromGroup$dispatch(this.children[0],this);var d=this.removeChild(this.children[0]);this.removeFromHash(d),a&&d&&d.destroy(!0,c)}while(this.children.length>0);this.hash=[],this.cursor=null}},c.Group.prototype.removeBetween=function(a,b,c,d){if(void 0===b&&(b=this.children.length-1),void 0===c&&(c=!1),void 0===d&&(d=!1),0!==this.children.length){if(a>b||0>a||b>this.children.length)return!1;for(var e=b;e>=a;){!d&&this.children[e].events&&this.children[e].events.onRemovedFromGroup$dispatch(this.children[e],this);var f=this.removeChild(this.children[e]);this.removeFromHash(f),c&&f&&f.destroy(!0),this.cursor===this.children[e]&&(this.cursor=null),e--}this.updateZ()}},c.Group.prototype.destroy=function(a,b){null===this.game||this.ignoreDestroy||(void 0===a&&(a=!0),void 0===b&&(b=!1),this.onDestroy.dispatch(this,a,b),this.removeAll(a),this.cursor=null,this.filters=null,this.pendingDestroy=!1,b||(this.parent&&this.parent.removeChild(this),this.game=null,this.exists=!1))},Object.defineProperty(c.Group.prototype,"total",{get:function(){return this.iterate("exists",!0,c.Group.RETURN_TOTAL)}}),Object.defineProperty(c.Group.prototype,"length",{get:function(){return this.children.length}}),Object.defineProperty(c.Group.prototype,"angle",{get:function(){return c.Math.radToDeg(this.rotation)},set:function(a){this.rotation=c.Math.degToRad(a)}}),Object.defineProperty(c.Group.prototype,"centerX",{get:function(){return this.getBounds().centerX},set:function(a){var b=this.getBounds(),c=this.x-b.x;this.x=a+c-b.halfWidth}}),Object.defineProperty(c.Group.prototype,"centerY",{get:function(){return this.getBounds().centerY},set:function(a){var b=this.getBounds(),c=this.y-b.y;this.y=a+c-b.halfHeight}}),Object.defineProperty(c.Group.prototype,"left",{get:function(){return this.getBounds().left},set:function(a){var b=this.getBounds(),c=this.x-b.x;this.x=a+c}}),Object.defineProperty(c.Group.prototype,"right",{get:function(){return this.getBounds().right},set:function(a){var b=this.getBounds(),c=this.x-b.x;this.x=a+c-b.width}}),Object.defineProperty(c.Group.prototype,"top",{get:function(){return this.getBounds().top},set:function(a){var b=this.getBounds(),c=this.y-b.y;this.y=a+c}}),Object.defineProperty(c.Group.prototype,"bottom",{get:function(){return this.getBounds().bottom},set:function(a){var b=this.getBounds(),c=this.y-b.y;this.y=a+c-b.height}}),c.World=function(a){c.Group.call(this,a,null,"__world",!1),this.bounds=new c.Rectangle(0,0,a.width,a.height),this.camera=null,this._definedSize=!1,this._width=a.width,this._height=a.height,this.game.state.onStateChange.add(this.stateChange,this)},c.World.prototype=Object.create(c.Group.prototype),c.World.prototype.constructor=c.World,c.World.prototype.boot=function(){this.camera=new c.Camera(this.game,0,0,0,this.game.width,this.game.height),this.game.stage.addChild(this),this.camera.boot()},c.World.prototype.stateChange=function(){this.x=0,this.y=0,this.camera.reset()},c.World.prototype.setBounds=function(a,b,c,d){this._definedSize=!0,this._width=c,this._height=d,this.bounds.setTo(a,b,c,d),this.x=a,this.y=b,this.camera.bounds&&this.camera.bounds.setTo(a,b,Math.max(c,this.game.width),Math.max(d,this.game.height)),this.game.physics.setBoundsToWorld()},c.World.prototype.resize=function(a,b){this._definedSize&&(athis.bounds.right&&(a.x=this.bounds.left)),e&&(a.y+a._currentBounds.heightthis.bounds.bottom&&(a.y=this.bounds.top))):(d&&a.x+bthis.bounds.right&&(a.x=this.bounds.left-b),e&&a.y+bthis.bounds.bottom&&(a.y=this.bounds.top-b))},Object.defineProperty(c.World.prototype,"width",{get:function(){return this.bounds.width},set:function(a){ag;g++)e>g?f.push("color: #ff2424; background: #fff"):f.push("color: #959595; background: #fff");console.log.apply(console,f)}else window.console&&console.log("Phaser v"+a+" | Pixi.js "+PIXI.VERSION+" | "+b+" | "+d+" | http://phaser.io")}},setUpRenderer:function(){if(this.config.canvas?this.canvas=this.config.canvas:this.canvas=c.Canvas.create(this,this.width,this.height,this.config.canvasID,!0),this.config.canvasStyle?this.canvas.style=this.config.canvasStyle:this.canvas.style["-webkit-full-screen"]="width: 100%; height: 100%",this.renderType===c.HEADLESS||this.renderType===c.CANVAS||this.renderType===c.AUTO&&!this.device.webGL){if(!this.device.canvas)throw new Error("Phaser.Game - Cannot create Canvas or WebGL context, aborting.");this.renderType=c.CANVAS,this.renderer=new PIXI.CanvasRenderer(this),this.context=this.renderer.context}else this.renderType=c.WEBGL,this.renderer=new PIXI.WebGLRenderer(this),this.context=null,this.canvas.addEventListener("webglcontextlost",this.contextLost.bind(this),!1),this.canvas.addEventListener("webglcontextrestored",this.contextRestored.bind(this),!1);this.device.cocoonJS&&(this.canvas.screencanvas=this.renderType===c.CANVAS),this.renderType!==c.HEADLESS&&(this.stage.smoothed=this.antialias,c.Canvas.addToDOM(this.canvas,this.parent,!1),c.Canvas.setTouchAction(this.canvas))},contextLost:function(a){a.preventDefault(),this.renderer.contextLost=!0},contextRestored:function(){this.renderer.initContext(),this.cache.clearGLTextures(),this.renderer.contextLost=!1},update:function(a){if(this.time.update(a),this._kickstart)return this.updateLogic(this.time.desiredFpsMult),this.updateRender(this.time.slowMotion*this.time.desiredFps),void(this._kickstart=!1);if(this._spiraling>1&&!this.forceSingleUpdate)this.time.time>this._nextFpsNotification&&(this._nextFpsNotification=this.time.time+1e4,this.fpsProblemNotifier.dispatch()),this._deltaTime=0,this._spiraling=0,this.updateRender(this.time.slowMotion*this.time.desiredFps);else{var b=1e3*this.time.slowMotion/this.time.desiredFps;this._deltaTime+=Math.max(Math.min(3*b,this.time.elapsed),0);var c=0;for(this.updatesThisFrame=Math.floor(this._deltaTime/b),this.forceSingleUpdate&&(this.updatesThisFrame=Math.min(1,this.updatesThisFrame));this._deltaTime>=b&&(this._deltaTime-=b,this.currentUpdateID=c,this.updateLogic(this.time.desiredFpsMult),c++,!this.forceSingleUpdate||1!==c);)this.time.refresh();c>this._lastCount?this._spiraling++:c=c.Input.MAX_POINTERS)return console.warn("Phaser.Input.addPointer: Maximum limit of "+c.Input.MAX_POINTERS+" pointers reached."),null;var a=this.pointers.length+1,b=new c.Pointer(this.game,a,c.PointerMode.TOUCH);return this.pointers.push(b),this["pointer"+a]=b,b},update:function(){if(this.keyboard&&this.keyboard.update(),this.pollRate>0&&this._pollCounter=0&&this.countActivePointers(this.maxPointers)>=this.maxPointers)return null;if(!this.pointer1.active)return this.pointer1.start(a);if(!this.pointer2.active)return this.pointer2.start(a);for(var b=2;b0;c++){var d=this.pointers[c];d.active&&b--}return a-b},getPointer:function(a){void 0===a&&(a=!1);for(var b=0;b=g&&this._localPoint.x=h&&this._localPoint.y=g&&this._localPoint.x=h&&this._localPoint.y0&&this._pollCounterthis.game.time.time},justReleased:function(a){return a=a||250,this.isUp&&this.timeUp+a>this.game.time.time},reset:function(){this.isDown=!1,this.isUp=!0,this.timeDown=this.game.time.time,this.repeats=0,this.altKey=!1,this.shiftKey=!1,this.ctrlKey=!1},destroy:function(){this.onDown.dispose(),this.onUp.dispose(),this.onFloat.dispose(),this.parent=null,this.game=null}},c.DeviceButton.prototype.constructor=c.DeviceButton,Object.defineProperty(c.DeviceButton.prototype,"duration",{get:function(){return this.isUp?-1:this.game.time.time-this.timeDown}}),c.Pointer=function(a,b,d){this.game=a,this.id=b,this.type=c.POINTER,this.exists=!0,this.identifier=0,this.pointerId=null,this.pointerMode=d||c.PointerMode.CURSOR|c.PointerMode.CONTACT,this.target=null,this.button=null,this.leftButton=new c.DeviceButton(this,c.Pointer.LEFT_BUTTON),this.middleButton=new c.DeviceButton(this,c.Pointer.MIDDLE_BUTTON),this.rightButton=new c.DeviceButton(this,c.Pointer.RIGHT_BUTTON),this.backButton=new c.DeviceButton(this,c.Pointer.BACK_BUTTON),this.forwardButton=new c.DeviceButton(this,c.Pointer.FORWARD_BUTTON),this.eraserButton=new c.DeviceButton(this,c.Pointer.ERASER_BUTTON),this._holdSent=!1,this._history=[],this._nextDrop=0,this._stateReset=!1,this.withinGame=!1,this.clientX=-1,this.clientY=-1,this.pageX=-1,this.pageY=-1,this.screenX=-1,this.screenY=-1,this.rawMovementX=0,this.rawMovementY=0,this.movementX=0,this.movementY=0,this.x=-1,this.y=-1,this.isMouse=0===b,this.isDown=!1,this.isUp=!0,this.timeDown=0,this.timeUp=0,this.previousTapTime=0,this.totalTouches=0,this.msSinceLastClick=Number.MAX_VALUE,this.targetObject=null,this.interactiveCandidates=[],this.active=!1,this.dirty=!1,this.position=new c.Point,this.positionDown=new c.Point,this.positionUp=new c.Point,this.circle=new c.Circle(0,0,44),this._clickTrampolines=null,this._trampolineTargetObject=null},c.Pointer.NO_BUTTON=0,c.Pointer.LEFT_BUTTON=1,c.Pointer.RIGHT_BUTTON=2,c.Pointer.MIDDLE_BUTTON=4,c.Pointer.BACK_BUTTON=8,c.Pointer.FORWARD_BUTTON=16,c.Pointer.ERASER_BUTTON=32,c.Pointer.prototype={resetButtons:function(){this.isDown=!1,this.isUp=!0,this.isMouse&&(this.leftButton.reset(),this.middleButton.reset(),this.rightButton.reset(),this.backButton.reset(),this.forwardButton.reset(),this.eraserButton.reset())},processButtonsDown:function(a,b){c.Pointer.LEFT_BUTTON&a&&this.leftButton.start(b),c.Pointer.RIGHT_BUTTON&a&&this.rightButton.start(b),c.Pointer.MIDDLE_BUTTON&a&&this.middleButton.start(b),c.Pointer.BACK_BUTTON&a&&this.backButton.start(b),c.Pointer.FORWARD_BUTTON&a&&this.forwardButton.start(b),c.Pointer.ERASER_BUTTON&a&&this.eraserButton.start(b)},processButtonsUp:function(a,b){a===c.Mouse.LEFT_BUTTON&&this.leftButton.stop(b),a===c.Mouse.RIGHT_BUTTON&&this.rightButton.stop(b),a===c.Mouse.MIDDLE_BUTTON&&this.middleButton.stop(b),a===c.Mouse.BACK_BUTTON&&this.backButton.stop(b),a===c.Mouse.FORWARD_BUTTON&&this.forwardButton.stop(b),5===a&&this.eraserButton.stop(b)},updateButtons:function(a){this.button=a.button;var b="down"===a.type.toLowerCase().substr(-4);void 0!==a.buttons?b?this.processButtonsDown(a.buttons,a):this.processButtonsUp(a.button,a):b?this.leftButton.start(a):(this.leftButton.stop(a),this.rightButton.stop(a)),1===a.buttons&&a.ctrlKey&&this.leftButton.isDown&&(this.leftButton.stop(a),this.rightButton.start(a)),this.isUp=!0,this.isDown=!1,(this.leftButton.isDown||this.rightButton.isDown||this.middleButton.isDown||this.backButton.isDown||this.forwardButton.isDown||this.eraserButton.isDown)&&(this.isUp=!1,this.isDown=!0)},start:function(a){var b=this.game.input;return a.pointerId&&(this.pointerId=a.pointerId),this.identifier=a.identifier,this.target=a.target,this.isMouse?this.updateButtons(a):(this.isDown=!0,this.isUp=!1),this.active=!0,this.withinGame=!0,this.dirty=!1,this._history=[],this._clickTrampolines=null,this._trampolineTargetObject=null,this.msSinceLastClick=this.game.time.time-this.timeDown,this.timeDown=this.game.time.time,this._holdSent=!1,this.move(a,!0),this.positionDown.setTo(this.x,this.y),(b.multiInputOverride===c.Input.MOUSE_OVERRIDES_TOUCH||b.multiInputOverride===c.Input.MOUSE_TOUCH_COMBINE||b.multiInputOverride===c.Input.TOUCH_OVERRIDES_MOUSE&&0===b.totalActivePointers)&&(b.x=this.x,b.y=this.y,b.position.setTo(this.x,this.y),b.onDown.dispatch(this,a),b.resetSpeed(this.x,this.y)),this._stateReset=!1,this.totalTouches++,null!==this.targetObject&&this.targetObject._touchedHandler(this),this},update:function(){var a=this.game.input;this.active&&(this.dirty&&(a.interactiveItems.total>0&&this.processInteractiveObjects(!1),this.dirty=!1),this._holdSent===!1&&this.duration>=a.holdRate&&((a.multiInputOverride===c.Input.MOUSE_OVERRIDES_TOUCH||a.multiInputOverride===c.Input.MOUSE_TOUCH_COMBINE||a.multiInputOverride===c.Input.TOUCH_OVERRIDES_MOUSE&&0===a.totalActivePointers)&&a.onHold.dispatch(this),this._holdSent=!0),a.recordPointerHistory&&this.game.time.time>=this._nextDrop&&(this._nextDrop=this.game.time.time+a.recordRate,this._history.push({x:this.position.x,y:this.position.y}),this._history.length>a.recordLimit&&this._history.shift()))},move:function(a,b){var d=this.game.input;if(!d.pollLocked){if(void 0===b&&(b=!1),void 0!==a.button&&(this.button=a.button),b&&this.isMouse&&this.updateButtons(a),this.clientX=a.clientX,this.clientY=a.clientY,this.pageX=a.pageX,this.pageY=a.pageY,this.screenX=a.screenX,this.screenY=a.screenY,this.isMouse&&d.mouse.locked&&!b&&(this.rawMovementX=a.movementX||a.mozMovementX||a.webkitMovementX||0,this.rawMovementY=a.movementY||a.mozMovementY||a.webkitMovementY||0,this.movementX+=this.rawMovementX,this.movementY+=this.rawMovementY),this.x=(this.pageX-this.game.scale.offset.x)*d.scale.x,this.y=(this.pageY-this.game.scale.offset.y)*d.scale.y, +this.position.setTo(this.x,this.y),this.circle.x=this.x,this.circle.y=this.y,(d.multiInputOverride===c.Input.MOUSE_OVERRIDES_TOUCH||d.multiInputOverride===c.Input.MOUSE_TOUCH_COMBINE||d.multiInputOverride===c.Input.TOUCH_OVERRIDES_MOUSE&&0===d.totalActivePointers)&&(d.activePointer=this,d.x=this.x,d.y=this.y,d.position.setTo(d.x,d.y),d.circle.x=d.x,d.circle.y=d.y),this.withinGame=this.game.scale.bounds.contains(this.pageX,this.pageY),this.game.paused)return this;for(var e=d.moveCallbacks.length;e--;)d.moveCallbacks[e].callback.call(d.moveCallbacks[e].context,this,this.x,this.y,b);return null!==this.targetObject&&this.targetObject.isDragged===!0?this.targetObject.update(this)===!1&&(this.targetObject=null):d.interactiveItems.total>0&&this.processInteractiveObjects(b),this}},processInteractiveObjects:function(a){var b=0,c=-1,d=null,e=this.game.input.interactiveItems.first;for(this.interactiveCandidates=[];e;)e.checked=!1,e.validForInput(c,b,!1)&&(e.checked=!0,(a&&e.checkPointerDown(this,!0)||!a&&e.checkPointerOver(this,!0))&&(b=e.sprite.renderOrderID,c=e.priorityID,d=e,this.interactiveCandidates.push(e))),e=this.game.input.interactiveItems.next;for(e=this.game.input.interactiveItems.first;e;)!e.checked&&e.validForInput(c,b,!0)&&(a&&e.checkPointerDown(this,!1)||!a&&e.checkPointerOver(this,!1))&&(b=e.sprite.renderOrderID,c=e.priorityID,d=e,this.interactiveCandidates.push(e)),e=this.game.input.interactiveItems.next;return this.game.input.customCandidateHandler&&(d=this.game.input.customCandidateHandler.call(this.game.input.customCandidateHandlerContext,this,this.interactiveCandidates,d)),this.swapTarget(d,!1),null!==this.targetObject},swapTarget:function(a,b){void 0===b&&(b=!1),null===a?this.targetObject&&(this.targetObject._pointerOutHandler(this,b),this.targetObject=null):null===this.targetObject?(this.targetObject=a,a._pointerOverHandler(this,b)):this.targetObject===a?a.update(this)===!1&&(this.targetObject=null):(this.targetObject._pointerOutHandler(this,b),this.targetObject=a,this.targetObject._pointerOverHandler(this,b))},leave:function(a){this.withinGame=!1,this.move(a,!1)},stop:function(a){var b=this.game.input;return this._stateReset&&this.withinGame?void a.preventDefault():(this.timeUp=this.game.time.time,(b.multiInputOverride===c.Input.MOUSE_OVERRIDES_TOUCH||b.multiInputOverride===c.Input.MOUSE_TOUCH_COMBINE||b.multiInputOverride===c.Input.TOUCH_OVERRIDES_MOUSE&&0===b.totalActivePointers)&&(b.onUp.dispatch(this,a),this.duration>=0&&this.duration<=b.tapRate&&(this.timeUp-this.previousTapTime0&&(this.active=!1),this.withinGame=this.game.scale.bounds.contains(a.pageX,a.pageY),this.pointerId=null,this.identifier=null,this.positionUp.setTo(this.x,this.y),this.isMouse===!1&&b.currentPointers--,b.interactiveItems.callAll("_releasedHandler",this),this._clickTrampolines&&(this._trampolineTargetObject=this.targetObject),this.targetObject=null,this)},justPressed:function(a){return a=a||this.game.input.justPressedRate,this.isDown===!0&&this.timeDown+a>this.game.time.time},justReleased:function(a){return a=a||this.game.input.justReleasedRate,this.isUp&&this.timeUp+a>this.game.time.time},addClickTrampoline:function(a,b,c,d){if(this.isDown){for(var e=this._clickTrampolines=this._clickTrampolines||[],f=0;fd;d++)this._pointerData[d]={id:d,x:0,y:0,isDown:!1,isUp:!1,isOver:!1,isOut:!1,timeOver:0,timeOut:0,timeDown:0,timeUp:0,downDuration:0,isDragged:!1};this.snapOffset=new c.Point,this.enabled=!0,this._wasEnabled=!0}return this.sprite.events.onAddedToGroup.add(this.addedToGroup,this),this.sprite.events.onRemovedFromGroup.add(this.removedFromGroup,this),this.flagged=!1,this.sprite},addedToGroup:function(){this._dragPhase||this._wasEnabled&&!this.enabled&&this.start()},removedFromGroup:function(){this._dragPhase||(this.enabled?(this._wasEnabled=!0,this.stop()):this._wasEnabled=!1)},reset:function(){this.enabled=!1,this.flagged=!1;for(var a=0;10>a;a++)this._pointerData[a]={id:a,x:0,y:0,isDown:!1,isUp:!1,isOver:!1,isOut:!1,timeOver:0,timeOut:0,timeDown:0,timeUp:0,downDuration:0,isDragged:!1}},stop:function(){this.enabled!==!1&&(this.enabled=!1,this.game.input.interactiveItems.remove(this))},destroy:function(){this.sprite&&(this._setHandCursor&&(this.game.canvas.style.cursor="default",this._setHandCursor=!1),this.enabled=!1,this.game.input.interactiveItems.remove(this),this._pointerData.length=0,this.boundsRect=null,this.boundsSprite=null,this.sprite=null)},validForInput:function(a,b,c){return void 0===c&&(c=!0),!this.enabled||0===this.sprite.scale.x||0===this.sprite.scale.y||this.priorityIDa||this.priorityID===a&&this.sprite.renderOrderID>b:!1},isPixelPerfect:function(){return this.pixelPerfectClick||this.pixelPerfectOver},pointerX:function(a){return a=a||0,this._pointerData[a].x},pointerY:function(a){return a=a||0,this._pointerData[a].y},pointerDown:function(a){return a=a||0,this._pointerData[a].isDown},pointerUp:function(a){return a=a||0,this._pointerData[a].isUp},pointerTimeDown:function(a){return a=a||0,this._pointerData[a].timeDown},pointerTimeUp:function(a){return a=a||0,this._pointerData[a].timeUp},pointerOver:function(a){if(!this.enabled)return!1;if(void 0===a){for(var b=0;10>b;b++)if(this._pointerData[b].isOver)return!0;return!1}return this._pointerData[a].isOver},pointerOut:function(a){if(!this.enabled)return!1;if(void 0!==a)return this._pointerData[a].isOut;for(var b=0;10>b;b++)if(this._pointerData[b].isOut)return!0},pointerTimeOver:function(a){return a=a||0,this._pointerData[a].timeOver},pointerTimeOut:function(a){return a=a||0,this._pointerData[a].timeOut},pointerDragged:function(a){return a=a||0,this._pointerData[a].isDragged},checkPointerDown:function(a,b){return a.isDown&&this.enabled&&this.sprite&&this.sprite.parent&&this.sprite.visible&&this.sprite.parent.visible&&0!==this.sprite.worldScale.x&&0!==this.sprite.worldScale.y&&this.game.input.hitTest(this.sprite,a,this._tempPoint)?(void 0===b&&(b=!1),!b&&this.pixelPerfectClick?this.checkPixel(this._tempPoint.x,this._tempPoint.y):!0):!1},checkPointerOver:function(a,b){return this.enabled&&this.sprite&&this.sprite.parent&&this.sprite.visible&&this.sprite.parent.visible&&0!==this.sprite.worldScale.x&&0!==this.sprite.worldScale.y&&this.game.input.hitTest(this.sprite,a,this._tempPoint)?(void 0===b&&(b=!1),!b&&this.pixelPerfectOver?this.checkPixel(this._tempPoint.x,this._tempPoint.y):!0):!1},checkPixel:function(a,b,c){if(this.sprite.texture.baseTexture.source){if(null===a&&null===b){this.game.input.getLocalPosition(this.sprite,c,this._tempPoint);var a=this._tempPoint.x,b=this._tempPoint.y}if(0!==this.sprite.anchor.x&&(a-=-this.sprite.texture.frame.width*this.sprite.anchor.x),0!==this.sprite.anchor.y&&(b-=-this.sprite.texture.frame.height*this.sprite.anchor.y),a+=this.sprite.texture.frame.x,b+=this.sprite.texture.frame.y,this.sprite.texture.trim&&(a-=this.sprite.texture.trim.x,b-=this.sprite.texture.trim.y,athis.sprite.texture.crop.right||bthis.sprite.texture.crop.bottom))return this._dx=a,this._dy=b,!1;this._dx=a,this._dy=b,this.game.input.hitContext.clearRect(0,0,1,1),this.game.input.hitContext.drawImage(this.sprite.texture.baseTexture.source,a,b,1,1,0,0,1,1);var d=this.game.input.hitContext.getImageData(0,0,1,1);if(d.data[3]>=this.pixelPerfectAlpha)return!0}return!1},update:function(a){return null!==this.sprite&&void 0!==this.sprite.parent?this.enabled&&this.sprite.visible&&this.sprite.parent.visible?this._pendingDrag?(this._dragDistancePass||(this._dragDistancePass=c.Math.distance(a.x,a.y,this.downPoint.x,this.downPoint.y)>=this.dragDistanceThreshold),this._dragDistancePass&&this._dragTimePass&&this.startDrag(a),!0):this.draggable&&this._draggedPointerID===a.id?this.updateDrag(a,!1):this._pointerData[a.id].isOver?this.checkPointerOver(a)?(this._pointerData[a.id].x=a.x-this.sprite.x,this._pointerData[a.id].y=a.y-this.sprite.y,!0):(this._pointerOutHandler(a),!1):void 0:(this._pointerOutHandler(a),!1):void 0},_pointerOverHandler:function(a,b){if(null!==this.sprite){var d=this._pointerData[a.id];if(d.isOver===!1||a.dirty){var e=d.isOver===!1;d.isOver=!0,d.isOut=!1,d.timeOver=this.game.time.time,d.x=a.x-this.sprite.x,d.y=a.y-this.sprite.y,this.useHandCursor&&d.isDragged===!1&&(this.game.canvas.style.cursor="pointer",this._setHandCursor=!0),!b&&e&&this.sprite&&this.sprite.events&&this.sprite.events.onInputOver$dispatch(this.sprite,a),this.sprite.parent&&this.sprite.parent.type===c.GROUP&&this.sprite.parent.onChildInputOver.dispatch(this.sprite,a)}}},_pointerOutHandler:function(a,b){if(null!==this.sprite){var d=this._pointerData[a.id];d.isOver=!1,d.isOut=!0,d.timeOut=this.game.time.time,this.useHandCursor&&d.isDragged===!1&&(this.game.canvas.style.cursor="default",this._setHandCursor=!1),!b&&this.sprite&&this.sprite.events&&(this.sprite.events.onInputOut$dispatch(this.sprite,a),this.sprite&&this.sprite.parent&&this.sprite.parent.type===c.GROUP&&this.sprite.parent.onChildInputOut.dispatch(this.sprite,a))}},_touchedHandler:function(a){if(null!==this.sprite){var b=this._pointerData[a.id];if(!b.isDown&&b.isOver){if(this.pixelPerfectClick&&!this.checkPixel(null,null,a))return;if(b.isDown=!0,b.isUp=!1,b.timeDown=this.game.time.time,this.downPoint.set(a.x,a.y),a.dirty=!0,this.sprite&&this.sprite.events&&(this.sprite.events.onInputDown$dispatch(this.sprite,a),this.sprite&&this.sprite.parent&&this.sprite.parent.type===c.GROUP&&this.sprite.parent.onChildInputDown.dispatch(this.sprite,a),null===this.sprite))return;this.draggable&&this.isDragged===!1&&(0===this.dragTimeThreshold&&0===this.dragDistanceThreshold?this.startDrag(a):(this._pendingDrag=!0,this._dragDistancePass=0===this.dragDistanceThreshold,this.dragTimeThreshold>0?(this._dragTimePass=!1,this.game.time.events.add(this.dragTimeThreshold,this.dragTimeElapsed,this,a)):this._dragTimePass=!0)),this.bringToTop&&this.sprite.bringToTop()}}},dragTimeElapsed:function(a){this._dragTimePass=!0,this._pendingDrag&&this.sprite&&this._dragDistancePass&&this.startDrag(a)},_releasedHandler:function(a){if(null!==this.sprite){var b=this._pointerData[a.id];if(b.isDown&&a.isUp){b.isDown=!1,b.isUp=!0,b.timeUp=this.game.time.time,b.downDuration=b.timeUp-b.timeDown;var d=this.checkPointerOver(a);this.sprite&&this.sprite.events&&(this.dragStopBlocksInputUp&&(!this.dragStopBlocksInputUp||this.draggable&&this.isDragged&&this._draggedPointerID===a.id)||this.sprite.events.onInputUp$dispatch(this.sprite,a,d),this.sprite&&this.sprite.parent&&this.sprite.parent.type===c.GROUP&&this.sprite.parent.onChildInputUp.dispatch(this.sprite,a,d),d&&(d=this.checkPointerOver(a))),b.isOver=d,!d&&this.useHandCursor&&(this.game.canvas.style.cursor="default",this._setHandCursor=!1),a.dirty=!0,this._pendingDrag=!1,this.draggable&&this.isDragged&&this._draggedPointerID===a.id&&this.stopDrag(a)}}},updateDrag:function(a,b){if(void 0===b&&(b=!1),a.isUp)return this.stopDrag(a),!1;var c=this.globalToLocalX(a.x)+this._dragPoint.x+this.dragOffset.x,d=this.globalToLocalY(a.y)+this._dragPoint.y+this.dragOffset.y;if(this.sprite.fixedToCamera)this.allowHorizontalDrag&&(this.sprite.cameraOffset.x=c),this.allowVerticalDrag&&(this.sprite.cameraOffset.y=d),this.boundsRect&&this.checkBoundsRect(),this.boundsSprite&&this.checkBoundsSprite(),this.snapOnDrag&&(this.sprite.cameraOffset.x=Math.round((this.sprite.cameraOffset.x-this.snapOffsetX%this.snapX)/this.snapX)*this.snapX+this.snapOffsetX%this.snapX,this.sprite.cameraOffset.y=Math.round((this.sprite.cameraOffset.y-this.snapOffsetY%this.snapY)/this.snapY)*this.snapY+this.snapOffsetY%this.snapY,this.snapPoint.set(this.sprite.cameraOffset.x,this.sprite.cameraOffset.y));else{var e=this.game.camera.x-this._pointerData[a.id].camX,f=this.game.camera.y-this._pointerData[a.id].camY;this.allowHorizontalDrag&&(this.sprite.x=c+e),this.allowVerticalDrag&&(this.sprite.y=d+f),this.boundsRect&&this.checkBoundsRect(),this.boundsSprite&&this.checkBoundsSprite(),this.snapOnDrag&&(this.sprite.x=Math.round((this.sprite.x-this.snapOffsetX%this.snapX)/this.snapX)*this.snapX+this.snapOffsetX%this.snapX,this.sprite.y=Math.round((this.sprite.y-this.snapOffsetY%this.snapY)/this.snapY)*this.snapY+this.snapOffsetY%this.snapY,this.snapPoint.set(this.sprite.x,this.sprite.y))}return this.sprite.events.onDragUpdate.dispatch(this.sprite,a,c,d,this.snapPoint,b),!0},justOver:function(a,b){return a=a||0,b=b||500,this._pointerData[a].isOver&&this.overDuration(a)a;a++)this._pointerData[a].isDragged=!1;this.draggable=!1,this.isDragged=!1,this._draggedPointerID=-1,this._pendingDrag=!1},startDrag:function(a){var b=this.sprite.x,c=this.sprite.y;if(this.isDragged=!0,this._draggedPointerID=a.id,this._pointerData[a.id].camX=this.game.camera.x,this._pointerData[a.id].camY=this.game.camera.y,this._pointerData[a.id].isDragged=!0,this.sprite.fixedToCamera){if(this.dragFromCenter){var d=this.sprite.getBounds();this.sprite.cameraOffset.x=this.globalToLocalX(a.x)+(this.sprite.cameraOffset.x-d.centerX),this.sprite.cameraOffset.y=this.globalToLocalY(a.y)+(this.sprite.cameraOffset.y-d.centerY)}this._dragPoint.setTo(this.sprite.cameraOffset.x-a.x,this.sprite.cameraOffset.y-a.y)}else{if(this.dragFromCenter){var d=this.sprite.getBounds();this.sprite.x=this.globalToLocalX(a.x)+(this.sprite.x-d.centerX),this.sprite.y=this.globalToLocalY(a.y)+(this.sprite.y-d.centerY)}this._dragPoint.setTo(this.sprite.x-this.globalToLocalX(a.x),this.sprite.y-this.globalToLocalY(a.y))}this.updateDrag(a,!0),this.bringToTop&&(this._dragPhase=!0,this.sprite.bringToTop()),this.dragStartPoint.set(b,c),this.sprite.events.onDragStart$dispatch(this.sprite,a,b,c),this._pendingDrag=!1},globalToLocalX:function(a){return this.scaleLayer&&(a-=this.game.scale.grid.boundsFluid.x,a*=this.game.scale.grid.scaleFluidInversed.x),a},globalToLocalY:function(a){return this.scaleLayer&&(a-=this.game.scale.grid.boundsFluid.y,a*=this.game.scale.grid.scaleFluidInversed.y),a},stopDrag:function(a){this.isDragged=!1,this._draggedPointerID=-1,this._pointerData[a.id].isDragged=!1,this._dragPhase=!1,this._pendingDrag=!1,this.snapOnRelease&&(this.sprite.fixedToCamera?(this.sprite.cameraOffset.x=Math.round((this.sprite.cameraOffset.x-this.snapOffsetX%this.snapX)/this.snapX)*this.snapX+this.snapOffsetX%this.snapX,this.sprite.cameraOffset.y=Math.round((this.sprite.cameraOffset.y-this.snapOffsetY%this.snapY)/this.snapY)*this.snapY+this.snapOffsetY%this.snapY):(this.sprite.x=Math.round((this.sprite.x-this.snapOffsetX%this.snapX)/this.snapX)*this.snapX+this.snapOffsetX%this.snapX,this.sprite.y=Math.round((this.sprite.y-this.snapOffsetY%this.snapY)/this.snapY)*this.snapY+this.snapOffsetY%this.snapY)),this.sprite.events.onDragStop$dispatch(this.sprite,a),this.checkPointerOver(a)===!1&&this._pointerOutHandler(a)},setDragLock:function(a,b){void 0===a&&(a=!0),void 0===b&&(b=!0),this.allowHorizontalDrag=a,this.allowVerticalDrag=b},enableSnap:function(a,b,c,d,e,f){void 0===c&&(c=!0),void 0===d&&(d=!1),void 0===e&&(e=0),void 0===f&&(f=0),this.snapX=a,this.snapY=b,this.snapOffsetX=e,this.snapOffsetY=f,this.snapOnDrag=c,this.snapOnRelease=d},disableSnap:function(){this.snapOnDrag=!1,this.snapOnRelease=!1},checkBoundsRect:function(){this.sprite.fixedToCamera?(this.sprite.cameraOffset.xthis.boundsRect.right&&(this.sprite.cameraOffset.x=this.boundsRect.right-this.sprite.width),this.sprite.cameraOffset.ythis.boundsRect.bottom&&(this.sprite.cameraOffset.y=this.boundsRect.bottom-this.sprite.height)):(this.sprite.leftthis.boundsRect.right&&(this.sprite.x=this.boundsRect.right-(this.sprite.width-this.sprite.offsetX)),this.sprite.topthis.boundsRect.bottom&&(this.sprite.y=this.boundsRect.bottom-(this.sprite.height-this.sprite.offsetY)))},checkBoundsSprite:function(){this.sprite.fixedToCamera&&this.boundsSprite.fixedToCamera?(this.sprite.cameraOffset.xthis.boundsSprite.cameraOffset.x+this.boundsSprite.width&&(this.sprite.cameraOffset.x=this.boundsSprite.cameraOffset.x+this.boundsSprite.width-this.sprite.width),this.sprite.cameraOffset.ythis.boundsSprite.cameraOffset.y+this.boundsSprite.height&&(this.sprite.cameraOffset.y=this.boundsSprite.cameraOffset.y+this.boundsSprite.height-this.sprite.height)):(this.sprite.leftthis.boundsSprite.right&&(this.sprite.x=this.boundsSprite.right-(this.sprite.width-this.sprite.offsetX)),this.sprite.topthis.boundsSprite.bottom&&(this.sprite.y=this.boundsSprite.bottom-(this.sprite.height-this.sprite.offsetY)))}},c.InputHandler.prototype.constructor=c.InputHandler,c.Gamepad=function(a){this.game=a,this._gamepadIndexMap={},this._rawPads=[],this._active=!1,this.enabled=!0,this._gamepadSupportAvailable=!!navigator.webkitGetGamepads||!!navigator.webkitGamepads||-1!=navigator.userAgent.indexOf("Firefox/")||!!navigator.getGamepads,this._prevRawGamepadTypes=[],this._prevTimestamps=[],this.callbackContext=this,this.onConnectCallback=null,this.onDisconnectCallback=null,this.onDownCallback=null,this.onUpCallback=null,this.onAxisCallback=null,this.onFloatCallback=null,this._ongamepadconnected=null,this._gamepaddisconnected=null,this._gamepads=[new c.SinglePad(a,this),new c.SinglePad(a,this),new c.SinglePad(a,this),new c.SinglePad(a,this)]},c.Gamepad.prototype={addCallbacks:function(a,b){"undefined"!=typeof b&&(this.onConnectCallback="function"==typeof b.onConnect?b.onConnect:this.onConnectCallback,this.onDisconnectCallback="function"==typeof b.onDisconnect?b.onDisconnect:this.onDisconnectCallback,this.onDownCallback="function"==typeof b.onDown?b.onDown:this.onDownCallback,this.onUpCallback="function"==typeof b.onUp?b.onUp:this.onUpCallback,this.onAxisCallback="function"==typeof b.onAxis?b.onAxis:this.onAxisCallback,this.onFloatCallback="function"==typeof b.onFloat?b.onFloat:this.onFloatCallback,this.callbackContext=a)},start:function(){if(!this._active){this._active=!0;var a=this;this._onGamepadConnected=function(b){return a.onGamepadConnected(b)},this._onGamepadDisconnected=function(b){return a.onGamepadDisconnected(b)},window.addEventListener("gamepadconnected",this._onGamepadConnected,!1),window.addEventListener("gamepaddisconnected",this._onGamepadDisconnected,!1)}},onGamepadConnected:function(a){var b=a.gamepad;this._rawPads.push(b),this._gamepads[b.index].connect(b)},onGamepadDisconnected:function(a){var b=a.gamepad;for(var c in this._rawPads)this._rawPads[c].index===b.index&&this._rawPads.splice(c,1);this._gamepads[b.index].disconnect()},update:function(){this._pollGamepads(),this.pad1.pollStatus(),this.pad2.pollStatus(),this.pad3.pollStatus(),this.pad4.pollStatus()},_pollGamepads:function(){if(this._active){if(navigator.getGamepads)var a=navigator.getGamepads();else if(navigator.webkitGetGamepads)var a=navigator.webkitGetGamepads();else if(navigator.webkitGamepads)var a=navigator.webkitGamepads();if(a){this._rawPads=[];for(var b=!1,c=0;c0&&d>this.deadZone||0>d&&d<-this.deadZone?this.processAxisChange(c,d):this.processAxisChange(c,0)}this._prevTimestamp=this._rawPad.timestamp}},connect:function(a){var b=!this.connected;this.connected=!0,this.index=a.index,this._rawPad=a,this._buttons=[],this._buttonsLen=a.buttons.length,this._axes=[],this._axesLen=a.axes.length;for(var d=0;dthis.maxHealth&&(this.health=this.maxHealth),this},heal:function(a){return this.alive&&(this.health+=a,this.health>this.maxHealth&&(this.health=this.maxHealth)),this}},c.Component.InCamera=function(){},c.Component.InCamera.prototype={inCamera:{get:function(){return this.game.world.camera.view.intersects(this._bounds)}}},c.Component.InputEnabled=function(){},c.Component.InputEnabled.prototype={input:null,inputEnabled:{get:function(){return this.input&&this.input.enabled},set:function(a){a?null===this.input?(this.input=new c.InputHandler(this),this.input.start()):this.input&&!this.input.enabled&&this.input.start():this.input&&this.input.enabled&&this.input.stop()}}},c.Component.InWorld=function(){},c.Component.InWorld.preUpdate=function(){if(this.autoCull||this.checkWorldBounds){if(this._bounds.copyFrom(this.getBounds()),this._bounds.x+=this.game.camera.view.x,this._bounds.y+=this.game.camera.view.y,this.autoCull)if(this.game.world.camera.view.intersects(this._bounds))this.renderable=!0,this.game.world.camera.totalInView++;else if(this.renderable=!1,this.outOfCameraBoundsKill)return this.kill(),!1;if(this.checkWorldBounds)if(this._outOfBoundsFired&&this.game.world.bounds.intersects(this._bounds))this._outOfBoundsFired=!1,this.events.onEnterBounds$dispatch(this);else if(!this._outOfBoundsFired&&!this.game.world.bounds.intersects(this._bounds)&&(this._outOfBoundsFired=!0,this.events.onOutOfBounds$dispatch(this),this.outOfBoundsKill))return this.kill(),!1}return!0},c.Component.InWorld.prototype={checkWorldBounds:!1,outOfBoundsKill:!1,outOfCameraBoundsKill:!1,_outOfBoundsFired:!1,inWorld:{get:function(){return this.game.world.bounds.intersects(this.getBounds())}}},c.Component.LifeSpan=function(){},c.Component.LifeSpan.preUpdate=function(){return this.lifespan>0&&(this.lifespan-=this.game.time.physicsElapsedMS,this.lifespan<=0)?(this.kill(),!1):!0},c.Component.LifeSpan.prototype={alive:!0,lifespan:0,revive:function(a){return void 0===a&&(a=100),this.alive=!0,this.exists=!0,this.visible=!0,"function"==typeof this.setHealth&&this.setHealth(a),this.events&&this.events.onRevived$dispatch(this),this},kill:function(){return this.alive=!1,this.exists=!1,this.visible=!1,this.events&&this.events.onKilled$dispatch(this),this}},c.Component.LoadTexture=function(){},c.Component.LoadTexture.prototype={customRender:!1,_frame:null,loadTexture:function(a,b,d){a===c.PENDING_ATLAS?(a=b,b=0):b=b||0,(d||void 0===d)&&this.animations&&this.animations.stop(),this.key=a,this.customRender=!1;var e=this.game.cache,f=!0,g=!this.texture.baseTexture.scaleMode;if(c.RenderTexture&&a instanceof c.RenderTexture)this.key=a.key,this.setTexture(a);else if(c.BitmapData&&a instanceof c.BitmapData)this.customRender=!0,this.setTexture(a.texture),f=e.hasFrameData(a.key,c.Cache.BITMAPDATA)?!this.animations.loadFrameData(e.getFrameData(a.key,c.Cache.BITMAPDATA),b):!this.animations.loadFrameData(a.frameData,0);else if(c.Video&&a instanceof c.Video){this.customRender=!0;var h=a.texture.valid;this.setTexture(a.texture),this.setFrame(a.texture.frame.clone()),a.onChangeSource.add(this.resizeFrame,this),this.texture.valid=h}else if(c.Tilemap&&a instanceof c.TilemapLayer)this.setTexture(PIXI.Texture.fromCanvas(a.canvas));else if(a instanceof PIXI.Texture)this.setTexture(a);else{var i=e.getImage(a,!0);this.key=i.key,this.setTexture(new PIXI.Texture(i.base)),"__default"===a?this.texture.baseTexture.skipRender=!0:this.texture.baseTexture.skipRender=!1,f=!this.animations.loadFrameData(i.frameData,b)}f&&(this._frame=c.Rectangle.clone(this.texture.frame)),g||(this.texture.baseTexture.scaleMode=1)},setFrame:function(a){this._frame=a,this.texture.frame.x=a.x,this.texture.frame.y=a.y,this.texture.frame.width=a.width,this.texture.frame.height=a.height,this.texture.crop.x=a.x,this.texture.crop.y=a.y,this.texture.crop.width=a.width,this.texture.crop.height=a.height,a.trimmed?(this.texture.trim?(this.texture.trim.x=a.spriteSourceSizeX,this.texture.trim.y=a.spriteSourceSizeY,this.texture.trim.width=a.sourceSizeW,this.texture.trim.height=a.sourceSizeH):this.texture.trim={x:a.spriteSourceSizeX,y:a.spriteSourceSizeY,width:a.sourceSizeW,height:a.sourceSizeH},this.texture.width=a.sourceSizeW,this.texture.height=a.sourceSizeH,this.texture.frame.width=a.sourceSizeW,this.texture.frame.height=a.sourceSizeH):!a.trimmed&&this.texture.trim&&(this.texture.trim=null),this.cropRect&&this.updateCrop(),this.texture.requiresReTint=!0,this.texture._updateUvs(),this.tilingTexture&&(this.refreshTexture=!0)},resizeFrame:function(a,b,c){this.texture.frame.resize(b,c),this.texture.setFrame(this.texture.frame)},resetFrame:function(){this._frame&&this.setFrame(this._frame)},frame:{get:function(){return this.animations.frame},set:function(a){this.animations.frame=a}},frameName:{get:function(){return this.animations.frameName},set:function(a){this.animations.frameName=a}}},c.Component.Overlap=function(){},c.Component.Overlap.prototype={overlap:function(a){return c.Rectangle.intersects(this.getBounds(),a.getBounds())}},c.Component.PhysicsBody=function(){},c.Component.PhysicsBody.preUpdate=function(){return this.fresh&&this.exists?(this.world.setTo(this.parent.position.x+this.position.x,this.parent.position.y+this.position.y),this.worldTransform.tx=this.world.x,this.worldTransform.ty=this.world.y,this.previousPosition.set(this.world.x,this.world.y),this.previousRotation=this.rotation,this.body&&this.body.preUpdate(),this.fresh=!1,!1):(this.previousPosition.set(this.world.x,this.world.y),this.previousRotation=this.rotation,this._exists&&this.parent.exists?!0:(this.renderOrderID=-1,!1))},c.Component.PhysicsBody.postUpdate=function(){this.exists&&this.body&&this.body.postUpdate()},c.Component.PhysicsBody.prototype={body:null,x:{get:function(){return this.position.x},set:function(a){this.position.x=a,this.body&&!this.body.dirty&&(this.body._reset=!0)}},y:{get:function(){return this.position.y},set:function(a){this.position.y=a,this.body&&!this.body.dirty&&(this.body._reset=!0)}}},c.Component.Reset=function(){},c.Component.Reset.prototype.reset=function(a,b,c){return void 0===c&&(c=1),this.world.set(a,b),this.position.set(a,b),this.fresh=!0,this.exists=!0,this.visible=!0,this.renderable=!0,this.components.InWorld&&(this._outOfBoundsFired=!1),this.components.LifeSpan&&(this.alive=!0,this.health=c),this.components.PhysicsBody&&this.body&&this.body.reset(a,b,!1,!1),this},c.Component.ScaleMinMax=function(){},c.Component.ScaleMinMax.prototype={transformCallback:null,transformCallbackContext:this,scaleMin:null,scaleMax:null,checkTransform:function(a){this.scaleMin&&(a.athis.scaleMax.x&&(a.a=this.scaleMax.x),a.d>this.scaleMax.y&&(a.d=this.scaleMax.y))},setScaleMinMax:function(a,b,d,e){void 0===b?b=d=e=a:void 0===d&&(d=e=b,b=a),null===a?this.scaleMin=null:this.scaleMin?this.scaleMin.set(a,b):this.scaleMin=new c.Point(a,b),null===d?this.scaleMax=null:this.scaleMax?this.scaleMax.set(d,e):this.scaleMax=new c.Point(d,e),null===this.scaleMin?this.transformCallback=null:(this.transformCallback=this.checkTransform,this.transformCallbackContext=this)}},c.Component.Smoothed=function(){},c.Component.Smoothed.prototype={smoothed:{get:function(){return!this.texture.baseTexture.scaleMode},set:function(a){a?this.texture&&(this.texture.baseTexture.scaleMode=0):this.texture&&(this.texture.baseTexture.scaleMode=1)}}},c.GameObjectFactory=function(a){this.game=a,this.world=this.game.world},c.GameObjectFactory.prototype={existing:function(a){return this.world.add(a)},weapon:function(a,b,d,e){var f=this.game.plugins.add(c.Weapon);return f.createBullets(a,b,d,e),f},image:function(a,b,d,e,f){return void 0===f&&(f=this.world),f.add(new c.Image(this.game,a,b,d,e))},sprite:function(a,b,c,d,e){return void 0===e&&(e=this.world),e.create(a,b,c,d)},creature:function(a,b,d,e,f){void 0===f&&(f=this.world);var g=new c.Creature(this.game,a,b,d,e);return f.add(g),g},tween:function(a){return this.game.tweens.create(a)},group:function(a,b,d,e,f){return new c.Group(this.game,a,b,d,e,f)},physicsGroup:function(a,b,d,e){return new c.Group(this.game,b,d,e,!0,a)},spriteBatch:function(a,b,d){return void 0===a&&(a=null),void 0===b&&(b="group"),void 0===d&&(d=!1),new c.SpriteBatch(this.game,a,b,d)},audio:function(a,b,c,d){return this.game.sound.add(a,b,c,d)},sound:function(a,b,c,d){return this.game.sound.add(a,b,c,d)},audioSprite:function(a){return this.game.sound.addSprite(a)},tileSprite:function(a,b,d,e,f,g,h){return void 0===h&&(h=this.world),h.add(new c.TileSprite(this.game,a,b,d,e,f,g))},rope:function(a,b,d,e,f,g){return void 0===g&&(g=this.world),g.add(new c.Rope(this.game,a,b,d,e,f))},text:function(a,b,d,e,f){return void 0===f&&(f=this.world),f.add(new c.Text(this.game,a,b,d,e))},button:function(a,b,d,e,f,g,h,i,j,k){return void 0===k&&(k=this.world),k.add(new c.Button(this.game,a,b,d,e,f,g,h,i,j))},graphics:function(a,b,d){return void 0===d&&(d=this.world),d.add(new c.Graphics(this.game,a,b))},emitter:function(a,b,d){return this.game.particles.add(new c.Particles.Arcade.Emitter(this.game,a,b,d))},retroFont:function(a,b,d,e,f,g,h,i,j){return new c.RetroFont(this.game,a,b,d,e,f,g,h,i,j)},bitmapText:function(a,b,d,e,f,g){return void 0===g&&(g=this.world),g.add(new c.BitmapText(this.game,a,b,d,e,f))},tilemap:function(a,b,d,e,f){return new c.Tilemap(this.game,a,b,d,e,f)},renderTexture:function(a,b,d,e){void 0!==d&&""!==d||(d=this.game.rnd.uuid()),void 0===e&&(e=!1);var f=new c.RenderTexture(this.game,a,b,d);return e&&this.game.cache.addRenderTexture(d,f),f},video:function(a,b){return new c.Video(this.game,a,b)},bitmapData:function(a,b,d,e){void 0===e&&(e=!1),void 0!==d&&""!==d||(d=this.game.rnd.uuid());var f=new c.BitmapData(this.game,d,a,b);return e&&this.game.cache.addBitmapData(d,f),f},filter:function(a){var b=Array.prototype.slice.call(arguments,1),a=new c.Filter[a](this.game); +return a.init.apply(a,b),a},plugin:function(a){return this.game.plugins.add(a)}},c.GameObjectFactory.prototype.constructor=c.GameObjectFactory,c.GameObjectCreator=function(a){this.game=a,this.world=this.game.world},c.GameObjectCreator.prototype={image:function(a,b,d,e){return new c.Image(this.game,a,b,d,e)},sprite:function(a,b,d,e){return new c.Sprite(this.game,a,b,d,e)},tween:function(a){return new c.Tween(a,this.game,this.game.tweens)},group:function(a,b,d,e,f){return new c.Group(this.game,a,b,d,e,f)},spriteBatch:function(a,b,d){return void 0===b&&(b="group"),void 0===d&&(d=!1),new c.SpriteBatch(this.game,a,b,d)},audio:function(a,b,c,d){return this.game.sound.add(a,b,c,d)},audioSprite:function(a){return this.game.sound.addSprite(a)},sound:function(a,b,c,d){return this.game.sound.add(a,b,c,d)},tileSprite:function(a,b,d,e,f,g){return new c.TileSprite(this.game,a,b,d,e,f,g)},rope:function(a,b,d,e,f){return new c.Rope(this.game,a,b,d,e,f)},text:function(a,b,d,e){return new c.Text(this.game,a,b,d,e)},button:function(a,b,d,e,f,g,h,i,j){return new c.Button(this.game,a,b,d,e,f,g,h,i,j)},graphics:function(a,b){return new c.Graphics(this.game,a,b)},emitter:function(a,b,d){return new c.Particles.Arcade.Emitter(this.game,a,b,d)},retroFont:function(a,b,d,e,f,g,h,i,j){return new c.RetroFont(this.game,a,b,d,e,f,g,h,i,j)},bitmapText:function(a,b,d,e,f,g){return new c.BitmapText(this.game,a,b,d,e,f,g)},tilemap:function(a,b,d,e,f){return new c.Tilemap(this.game,a,b,d,e,f)},renderTexture:function(a,b,d,e){void 0!==d&&""!==d||(d=this.game.rnd.uuid()),void 0===e&&(e=!1);var f=new c.RenderTexture(this.game,a,b,d);return e&&this.game.cache.addRenderTexture(d,f),f},bitmapData:function(a,b,d,e){void 0===e&&(e=!1),void 0!==d&&""!==d||(d=this.game.rnd.uuid());var f=new c.BitmapData(this.game,d,a,b);return e&&this.game.cache.addBitmapData(d,f),f},filter:function(a){var b=Array.prototype.slice.call(arguments,1),a=new c.Filter[a](this.game);return a.init.apply(a,b),a}},c.GameObjectCreator.prototype.constructor=c.GameObjectCreator,c.Sprite=function(a,b,d,e,f){b=b||0,d=d||0,e=e||null,f=f||null,this.type=c.SPRITE,this.physicsType=c.SPRITE,PIXI.Sprite.call(this,c.Cache.DEFAULT),c.Component.Core.init.call(this,a,b,d,e,f)},c.Sprite.prototype=Object.create(PIXI.Sprite.prototype),c.Sprite.prototype.constructor=c.Sprite,c.Component.Core.install.call(c.Sprite.prototype,["Angle","Animation","AutoCull","Bounds","BringToTop","Crop","Delta","Destroy","FixedToCamera","Health","InCamera","InputEnabled","InWorld","LifeSpan","LoadTexture","Overlap","PhysicsBody","Reset","ScaleMinMax","Smoothed"]),c.Sprite.prototype.preUpdatePhysics=c.Component.PhysicsBody.preUpdate,c.Sprite.prototype.preUpdateLifeSpan=c.Component.LifeSpan.preUpdate,c.Sprite.prototype.preUpdateInWorld=c.Component.InWorld.preUpdate,c.Sprite.prototype.preUpdateCore=c.Component.Core.preUpdate,c.Sprite.prototype.preUpdate=function(){return this.preUpdatePhysics()&&this.preUpdateLifeSpan()&&this.preUpdateInWorld()?this.preUpdateCore():!1},c.Image=function(a,b,d,e,f){b=b||0,d=d||0,e=e||null,f=f||null,this.type=c.IMAGE,PIXI.Sprite.call(this,c.Cache.DEFAULT),c.Component.Core.init.call(this,a,b,d,e,f)},c.Image.prototype=Object.create(PIXI.Sprite.prototype),c.Image.prototype.constructor=c.Image,c.Component.Core.install.call(c.Image.prototype,["Angle","Animation","AutoCull","Bounds","BringToTop","Crop","Destroy","FixedToCamera","InputEnabled","LifeSpan","LoadTexture","Overlap","Reset","Smoothed"]),c.Image.prototype.preUpdateInWorld=c.Component.InWorld.preUpdate,c.Image.prototype.preUpdateCore=c.Component.Core.preUpdate,c.Image.prototype.preUpdate=function(){return this.preUpdateInWorld()?this.preUpdateCore():!1},c.Button=function(a,b,d,e,f,g,h,i,j,k){b=b||0,d=d||0,e=e||null,f=f||null,g=g||this,c.Image.call(this,a,b,d,e,i),this.type=c.BUTTON,this.physicsType=c.SPRITE,this._onOverFrame=null,this._onOutFrame=null,this._onDownFrame=null,this._onUpFrame=null,this.onOverSound=null,this.onOutSound=null,this.onDownSound=null,this.onUpSound=null,this.onOverSoundMarker="",this.onOutSoundMarker="",this.onDownSoundMarker="",this.onUpSoundMarker="",this.onInputOver=new c.Signal,this.onInputOut=new c.Signal,this.onInputDown=new c.Signal,this.onInputUp=new c.Signal,this.onOverMouseOnly=!0,this.justReleasedPreventsOver=c.PointerMode.TOUCH,this.freezeFrames=!1,this.forceOut=!1,this.inputEnabled=!0,this.input.start(0,!0),this.input.useHandCursor=!0,this.setFrames(h,i,j,k),null!==f&&this.onInputUp.add(f,g),this.events.onInputOver.add(this.onInputOverHandler,this),this.events.onInputOut.add(this.onInputOutHandler,this),this.events.onInputDown.add(this.onInputDownHandler,this),this.events.onInputUp.add(this.onInputUpHandler,this),this.events.onRemovedFromWorld.add(this.removedFromWorld,this)},c.Button.prototype=Object.create(c.Image.prototype),c.Button.prototype.constructor=c.Button;var g="Over",h="Out",i="Down",j="Up";c.Button.prototype.clearFrames=function(){this.setFrames(null,null,null,null)},c.Button.prototype.removedFromWorld=function(){this.inputEnabled=!1},c.Button.prototype.setStateFrame=function(a,b,c){var d="_on"+a+"Frame";null!==b?(this[d]=b,c&&this.changeStateFrame(a)):this[d]=null},c.Button.prototype.changeStateFrame=function(a){if(this.freezeFrames)return!1;var b="_on"+a+"Frame",c=this[b];return"string"==typeof c?(this.frameName=c,!0):"number"==typeof c?(this.frame=c,!0):!1},c.Button.prototype.setFrames=function(a,b,c,d){this.setStateFrame(g,a,this.input.pointerOver()),this.setStateFrame(h,b,!this.input.pointerOver()),this.setStateFrame(i,c,this.input.pointerDown()),this.setStateFrame(j,d,this.input.pointerUp())},c.Button.prototype.setStateSound=function(a,b,d){var e="on"+a+"Sound",f="on"+a+"SoundMarker";b instanceof c.Sound||b instanceof c.AudioSprite?(this[e]=b,this[f]="string"==typeof d?d:""):(this[e]=null,this[f]="")},c.Button.prototype.playStateSound=function(a){var b="on"+a+"Sound",c=this[b];if(c){var d="on"+a+"SoundMarker",e=this[d];return c.play(e),!0}return!1},c.Button.prototype.setSounds=function(a,b,c,d,e,f,k,l){this.setStateSound(g,a,b),this.setStateSound(h,e,f),this.setStateSound(i,c,d),this.setStateSound(j,k,l)},c.Button.prototype.setOverSound=function(a,b){this.setStateSound(g,a,b)},c.Button.prototype.setOutSound=function(a,b){this.setStateSound(h,a,b)},c.Button.prototype.setDownSound=function(a,b){this.setStateSound(i,a,b)},c.Button.prototype.setUpSound=function(a,b){this.setStateSound(j,a,b)},c.Button.prototype.onInputOverHandler=function(a,b){b.justReleased()&&(this.justReleasedPreventsOver&b.pointerMode)===b.pointerMode||(this.changeStateFrame(g),this.onOverMouseOnly&&!b.isMouse||(this.playStateSound(g),this.onInputOver&&this.onInputOver.dispatch(this,b)))},c.Button.prototype.onInputOutHandler=function(a,b){this.changeStateFrame(h),this.playStateSound(h),this.onInputOut&&this.onInputOut.dispatch(this,b)},c.Button.prototype.onInputDownHandler=function(a,b){this.changeStateFrame(i),this.playStateSound(i),this.onInputDown&&this.onInputDown.dispatch(this,b)},c.Button.prototype.onInputUpHandler=function(a,b,c){if(this.playStateSound(j),this.onInputUp&&this.onInputUp.dispatch(this,b,c),!this.freezeFrames)if(this.forceOut===!0||(this.forceOut&b.pointerMode)===b.pointerMode)this.changeStateFrame(h);else{var d=this.changeStateFrame(j);d||(c?this.changeStateFrame(g):this.changeStateFrame(h))}},c.SpriteBatch=function(a,b,d,e){void 0!==b&&null!==b||(b=a.world),PIXI.SpriteBatch.call(this),c.Group.call(this,a,b,d,e),this.type=c.SPRITEBATCH},c.SpriteBatch.prototype=c.Utils.extend(!0,c.SpriteBatch.prototype,PIXI.SpriteBatch.prototype,c.Group.prototype),c.SpriteBatch.prototype.constructor=c.SpriteBatch,c.BitmapData=function(a,b,d,e,f){void 0!==d&&0!==d||(d=256),void 0!==e&&0!==e||(e=256),void 0===f&&(f=!1),this.game=a,this.key=b,this.width=d,this.height=e,this.canvas=c.Canvas.create(this,d,e,null,f),this.context=this.canvas.getContext("2d",{alpha:!0}),this.ctx=this.context,this.smoothProperty=a.renderType===c.CANVAS?a.renderer.renderSession.smoothProperty:c.Canvas.getSmoothingPrefix(this.context),this.imageData=this.context.getImageData(0,0,d,e),this.data=null,this.imageData&&(this.data=this.imageData.data),this.pixels=null,this.data&&(this.imageData.data.buffer?(this.buffer=this.imageData.data.buffer,this.pixels=new Uint32Array(this.buffer)):window.ArrayBuffer?(this.buffer=new ArrayBuffer(this.imageData.data.length),this.pixels=new Uint32Array(this.buffer)):this.pixels=this.imageData.data),this.baseTexture=new PIXI.BaseTexture(this.canvas),this.texture=new PIXI.Texture(this.baseTexture),this.frameData=new c.FrameData,this.textureFrame=this.frameData.addFrame(new c.Frame(0,0,0,d,e,"bitmapData")),this.texture.frame=this.textureFrame,this.type=c.BITMAPDATA,this.disableTextureUpload=!1,this.dirty=!1,this.cls=this.clear,this._image=null,this._pos=new c.Point,this._size=new c.Point,this._scale=new c.Point,this._rotate=0,this._alpha={prev:1,current:1},this._anchor=new c.Point,this._tempR=0,this._tempG=0,this._tempB=0,this._circle=new c.Circle,this._swapCanvas=void 0},c.BitmapData.prototype={move:function(a,b,c){return 0!==a&&this.moveH(a,c),0!==b&&this.moveV(b,c),this},moveH:function(a,b){void 0===b&&(b=!0),void 0===this._swapCanvas&&(this._swapCanvas=PIXI.CanvasPool.create(this,this.width,this.height));var c=this._swapCanvas,d=c.getContext("2d"),e=this.height,f=this.canvas;if(d.clearRect(0,0,this.width,this.height),0>a){a=Math.abs(a);var g=this.width-a;b&&d.drawImage(f,0,0,a,e,g,0,a,e),d.drawImage(f,a,0,g,e,0,0,g,e)}else{var g=this.width-a;b&&d.drawImage(f,g,0,a,e,0,0,a,e),d.drawImage(f,0,0,g,e,a,0,g,e)}return this.clear(),this.copy(this._swapCanvas)},moveV:function(a,b){void 0===b&&(b=!0),void 0===this._swapCanvas&&(this._swapCanvas=PIXI.CanvasPool.create(this,this.width,this.height));var c=this._swapCanvas,d=c.getContext("2d"),e=this.width,f=this.canvas;if(d.clearRect(0,0,this.width,this.height),0>a){a=Math.abs(a);var g=this.height-a;b&&d.drawImage(f,0,0,e,a,0,g,e,a),d.drawImage(f,0,a,e,g,0,0,e,g)}else{var g=this.height-a;b&&d.drawImage(f,0,g,e,a,0,0,e,a),d.drawImage(f,0,0,e,g,0,a,e,g)}return this.clear(),this.copy(this._swapCanvas)},add:function(a){if(Array.isArray(a))for(var b=0;bm;m++)for(var n=d;h>n;n++)c.Color.unpackPixel(this.getPixel32(n,m),j),k=a.call(b,j,n,m),k!==!1&&null!==k&&void 0!==k&&(this.setPixel32(n,m,k.r,k.g,k.b,k.a,!1),l=!0);return l&&(this.context.putImageData(this.imageData,0,0),this.dirty=!0),this},processPixel:function(a,b,c,d,e,f){void 0===c&&(c=0),void 0===d&&(d=0),void 0===e&&(e=this.width),void 0===f&&(f=this.height);for(var g=c+e,h=d+f,i=0,j=0,k=!1,l=d;h>l;l++)for(var m=c;g>m;m++)i=this.getPixel32(m,l),j=a.call(b,i,m,l),j!==i&&(this.pixels[l*this.width+m]=j,k=!0);return k&&(this.context.putImageData(this.imageData,0,0),this.dirty=!0),this},replaceRGB:function(a,b,d,e,f,g,h,i,j){var k=0,l=0,m=this.width,n=this.height,o=c.Color.packPixel(a,b,d,e);void 0!==j&&j instanceof c.Rectangle&&(k=j.x,l=j.y,m=j.width,n=j.height);for(var p=0;n>p;p++)for(var q=0;m>q;q++)this.getPixel32(k+q,l+p)===o&&this.setPixel32(k+q,l+p,f,g,h,i,!1);return this.context.putImageData(this.imageData,0,0),this.dirty=!0,this},setHSL:function(a,b,d,e){var f=a||0===a,g=b||0===b,h=d||0===d;if(f||g||h){void 0===e&&(e=new c.Rectangle(0,0,this.width,this.height));for(var i=c.Color.createColor(),j=e.y;j=0&&a<=this.width&&b>=0&&b<=this.height&&(c.Device.LITTLE_ENDIAN?this.pixels[b*this.width+a]=g<<24|f<<16|e<<8|d:this.pixels[b*this.width+a]=d<<24|e<<16|f<<8|g,h&&(this.context.putImageData(this.imageData,0,0),this.dirty=!0)),this},setPixel:function(a,b,c,d,e,f){return this.setPixel32(a,b,c,d,e,255,f)},getPixel:function(a,b,d){d||(d=c.Color.createColor());var e=~~(a+b*this.width);return e*=4,d.r=this.data[e],d.g=this.data[++e],d.b=this.data[++e],d.a=this.data[++e],d},getPixel32:function(a,b){return a>=0&&a<=this.width&&b>=0&&b<=this.height?this.pixels[b*this.width+a]:void 0},getPixelRGB:function(a,b,d,e,f){return c.Color.unpackPixel(this.getPixel32(a,b),d,e,f)},getPixels:function(a){return this.context.getImageData(a.x,a.y,a.width,a.height)},getFirstPixel:function(a){void 0===a&&(a=0);var b=c.Color.createColor(),d=0,e=0,f=1,g=!1;1===a?(f=-1,e=this.height):3===a&&(f=-1,d=this.width);do c.Color.unpackPixel(this.getPixel32(d,e),b),0===a||1===a?(d++,d===this.width&&(d=0,e+=f,(e>=this.height||0>=e)&&(g=!0))):2!==a&&3!==a||(e++,e===this.height&&(e=0,d+=f,(d>=this.width||0>=d)&&(g=!0)));while(0===b.a&&!g);return b.x=d,b.y=e,b},getBounds:function(a){return void 0===a&&(a=new c.Rectangle),a.x=this.getFirstPixel(2).x,a.x===this.width?a.setTo(0,0,0,0):(a.y=this.getFirstPixel(0).y,a.width=this.getFirstPixel(3).x-a.x+1,a.height=this.getFirstPixel(1).y-a.y+1,a)},addToWorld:function(a,b,c,d,e,f){e=e||1,f=f||1;var g=this.game.add.image(a,b,this);return g.anchor.set(c,d),g.scale.set(e,f),g},copy:function(a,b,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r){if(void 0!==a&&null!==a||(a=this),(a instanceof c.RenderTexture||a instanceof PIXI.RenderTexture)&&(a=a.getCanvas()),this._image=a,a instanceof c.Sprite||a instanceof c.Image||a instanceof c.Text||a instanceof PIXI.Sprite)this._pos.set(a.texture.crop.x,a.texture.crop.y),this._size.set(a.texture.crop.width,a.texture.crop.height),this._scale.set(a.scale.x,a.scale.y),this._anchor.set(a.anchor.x,a.anchor.y),this._rotate=a.rotation,this._alpha.current=a.alpha,a.texture instanceof c.RenderTexture||a.texture instanceof PIXI.RenderTexture?this._image=a.texture.getCanvas():this._image=a.texture.baseTexture.source,void 0!==g&&null!==g||(g=a.x),void 0!==h&&null!==h||(h=a.y),a.texture.trim&&(g+=a.texture.trim.x-a.anchor.x*a.texture.trim.width,h+=a.texture.trim.y-a.anchor.y*a.texture.trim.height),16777215!==a.tint&&(a.cachedTint!==a.tint&&(a.cachedTint=a.tint,a.tintedTexture=PIXI.CanvasTinter.getTintedTexture(a,a.tint)),this._image=a.tintedTexture,this._pos.set(0));else{if(this._pos.set(0),this._scale.set(1),this._anchor.set(0),this._rotate=0,this._alpha.current=1,a instanceof c.BitmapData)this._image=a.canvas;else if("string"==typeof a){if(a=this.game.cache.getImage(a),null===a)return;this._image=a}this._size.set(this._image.width,this._image.height)}if(void 0!==b&&null!==b||(b=0),void 0!==d&&null!==d||(d=0),e&&(this._size.x=e),f&&(this._size.y=f),void 0!==g&&null!==g||(g=b),void 0!==h&&null!==h||(h=d),void 0!==i&&null!==i||(i=this._size.x),void 0!==j&&null!==j||(j=this._size.y),"number"==typeof k&&(this._rotate=k),"number"==typeof l&&(this._anchor.x=l),"number"==typeof m&&(this._anchor.y=m),"number"==typeof n&&(this._scale.x=n),"number"==typeof o&&(this._scale.y=o),"number"==typeof p&&(this._alpha.current=p),void 0===q&&(q=null),void 0===r&&(r=!1),!(this._alpha.current<=0||0===this._scale.x||0===this._scale.y||0===this._size.x||0===this._size.y)){var s=this.context;return this._alpha.prev=s.globalAlpha,s.save(),s.globalAlpha=this._alpha.current,q&&(this.op=q),r&&(g|=0,h|=0),s.translate(g,h),s.scale(this._scale.x,this._scale.y),s.rotate(this._rotate),s.drawImage(this._image,this._pos.x+b,this._pos.y+d,this._size.x,this._size.y,-i*this._anchor.x,-j*this._anchor.y,i,j),s.restore(),s.globalAlpha=this._alpha.prev,this.dirty=!0,this}},copyTransform:function(a,b,d){if(void 0===b&&(b=null),void 0===d&&(d=!1),!a.hasOwnProperty("worldTransform")||!a.worldVisible||0===a.worldAlpha)return this;var e=a.worldTransform;if(this._pos.set(a.texture.crop.x,a.texture.crop.y),this._size.set(a.texture.crop.width,a.texture.crop.height),0===e.a||0===e.d||0===this._size.x||0===this._size.y)return this;a.texture instanceof c.RenderTexture||a.texture instanceof PIXI.RenderTexture?this._image=a.texture.getCanvas():this._image=a.texture.baseTexture.source;var f=e.tx,g=e.ty;a.texture.trim&&(f+=a.texture.trim.x-a.anchor.x*a.texture.trim.width,g+=a.texture.trim.y-a.anchor.y*a.texture.trim.height),16777215!==a.tint&&(a.cachedTint!==a.tint&&(a.cachedTint=a.tint,a.tintedTexture=PIXI.CanvasTinter.getTintedTexture(a,a.tint)),this._image=a.tintedTexture,this._pos.set(0)),d&&(f|=0,g|=0);var h=this.context;return this._alpha.prev=h.globalAlpha,h.save(),h.globalAlpha=this._alpha.current,b&&(this.op=b),h[this.smoothProperty]=a.texture.baseTexture.scaleMode===PIXI.scaleModes.LINEAR,h.setTransform(e.a,e.b,e.c,e.d,f,g),h.drawImage(this._image,this._pos.x,this._pos.y,this._size.x,this._size.y,-this._size.x*a.anchor.x,-this._size.y*a.anchor.y,this._size.x,this._size.y),h.restore(),h.globalAlpha=this._alpha.prev,this.dirty=!0,this},copyRect:function(a,b,c,d,e,f,g){return this.copy(a,b.x,b.y,b.width,b.height,c,d,b.width,b.height,0,0,0,1,1,e,f,g)},draw:function(a,b,c,d,e,f,g){return this.copy(a,null,null,null,null,b,c,d,e,null,null,null,null,null,null,f,g)},drawGroup:function(a,b,c){return a.total>0&&a.forEachExists(this.drawGroupProxy,this,b,c),this},drawGroupProxy:function(a,b,d){if(a.hasOwnProperty("texture")&&this.copyTransform(a,b,d),a.type===c.GROUP&&a.exists)this.drawGroup(a,b,d);else if(a.hasOwnProperty("children")&&a.children.length>0)for(var e=0;eb.width&&(e=b.width);var f=this.context;return f.fillStyle=f.createPattern(b,d),this._circle=new c.Circle(a.start.x,a.start.y,b.height),this._circle.circumferencePoint(a.angle-1.5707963267948966,!1,this._pos),f.save(),f.translate(this._pos.x,this._pos.y),f.rotate(a.angle),f.fillRect(0,0,e,b.height),f.restore(),this.dirty=!0,this}},render:function(){return!this.disableTextureUpload&&this.dirty&&(this.baseTexture.dirty(),this.dirty=!1),this},destroy:function(){this.frameData.destroy(),this.texture.destroy(!0),PIXI.CanvasPool.remove(this)},blendReset:function(){return this.op="source-over",this},blendSourceOver:function(){return this.op="source-over",this},blendSourceIn:function(){return this.op="source-in",this},blendSourceOut:function(){return this.op="source-out",this},blendSourceAtop:function(){return this.op="source-atop",this},blendDestinationOver:function(){return this.op="destination-over",this},blendDestinationIn:function(){return this.op="destination-in",this},blendDestinationOut:function(){return this.op="destination-out",this},blendDestinationAtop:function(){return this.op="destination-atop",this},blendXor:function(){return this.op="xor",this},blendAdd:function(){return this.op="lighter",this},blendMultiply:function(){return this.op="multiply",this},blendScreen:function(){return this.op="screen",this},blendOverlay:function(){return this.op="overlay",this},blendDarken:function(){return this.op="darken",this},blendLighten:function(){return this.op="lighten",this},blendColorDodge:function(){return this.op="color-dodge",this},blendColorBurn:function(){return this.op="color-burn",this},blendHardLight:function(){return this.op="hard-light",this},blendSoftLight:function(){return this.op="soft-light",this},blendDifference:function(){return this.op="difference",this},blendExclusion:function(){return this.op="exclusion",this},blendHue:function(){return this.op="hue",this},blendSaturation:function(){return this.op="saturation",this},blendColor:function(){return this.op="color",this},blendLuminosity:function(){return this.op="luminosity",this}},Object.defineProperty(c.BitmapData.prototype,"smoothed",{get:function(){c.Canvas.getSmoothingEnabled(this.context)},set:function(a){c.Canvas.setSmoothingEnabled(this.context,a)}}),Object.defineProperty(c.BitmapData.prototype,"op",{get:function(){return this.context.globalCompositeOperation},set:function(a){this.context.globalCompositeOperation=a}}),c.BitmapData.getTransform=function(a,b,c,d,e,f){return"number"!=typeof a&&(a=0),"number"!=typeof b&&(b=0),"number"!=typeof c&&(c=1),"number"!=typeof d&&(d=1),"number"!=typeof e&&(e=0),"number"!=typeof f&&(f=0),{sx:c,sy:d,scaleX:c,scaleY:d,skewX:e,skewY:f,translateX:a,translateY:b,tx:a,ty:b}},c.BitmapData.prototype.constructor=c.BitmapData,PIXI.Graphics=function(){PIXI.DisplayObjectContainer.call(this),this.renderable=!0,this.fillAlpha=1,this.lineWidth=0,this.lineColor=0,this.graphicsData=[],this.tint=16777215,this.blendMode=PIXI.blendModes.NORMAL,this.currentPath=null,this._webGL=[],this.isMask=!1,this.boundsPadding=0,this._localBounds=new PIXI.Rectangle(0,0,1,1),this.dirty=!0,this.webGLDirty=!1,this.cachedSpriteDirty=!1},PIXI.Graphics.prototype=Object.create(PIXI.DisplayObjectContainer.prototype),PIXI.Graphics.prototype.constructor=PIXI.Graphics,PIXI.Graphics.prototype.lineStyle=function(a,b,c){return this.lineWidth=a||0,this.lineColor=b||0,this.lineAlpha=void 0===c?1:c,this.currentPath&&(this.currentPath.shape.points.length?this.drawShape(new PIXI.Polygon(this.currentPath.shape.points.slice(-2))):(this.currentPath.lineWidth=this.lineWidth,this.currentPath.lineColor=this.lineColor,this.currentPath.lineAlpha=this.lineAlpha)),this},PIXI.Graphics.prototype.moveTo=function(a,b){return this.drawShape(new PIXI.Polygon([a,b])),this},PIXI.Graphics.prototype.lineTo=function(a,b){return this.currentPath||this.moveTo(0,0),this.currentPath.shape.points.push(a,b),this.dirty=!0,this.updateLocalBounds(),this},PIXI.Graphics.prototype.quadraticCurveTo=function(a,b,c,d){this.currentPath?0===this.currentPath.shape.points.length&&(this.currentPath.shape.points=[0,0]):this.moveTo(0,0);var e,f,g=20,h=this.currentPath.shape.points;0===h.length&&this.moveTo(0,0);for(var i=h[h.length-2],j=h[h.length-1],k=0,l=1;g>=l;++l)k=l/g,e=i+(a-i)*k,f=j+(b-j)*k,h.push(e+(a+(c-a)*k-e)*k,f+(b+(d-b)*k-f)*k);return this.dirty=!0,this.updateLocalBounds(),this},PIXI.Graphics.prototype.bezierCurveTo=function(a,b,c,d,e,f){this.currentPath?0===this.currentPath.shape.points.length&&(this.currentPath.shape.points=[0,0]):this.moveTo(0,0);for(var g,h,i,j,k,l=20,m=this.currentPath.shape.points,n=m[m.length-2],o=m[m.length-1],p=0,q=1;l>=q;++q)p=q/l,g=1-p,h=g*g,i=h*g,j=p*p,k=j*p,m.push(i*n+3*h*p*a+3*g*j*c+k*e,i*o+3*h*p*b+3*g*j*d+k*f);return this.dirty=!0,this.updateLocalBounds(),this},PIXI.Graphics.prototype.arcTo=function(a,b,c,d,e){this.currentPath?0===this.currentPath.shape.points.length&&this.currentPath.shape.points.push(a,b):this.moveTo(a,b);var f=this.currentPath.shape.points,g=f[f.length-2],h=f[f.length-1],i=h-b,j=g-a,k=d-b,l=c-a,m=Math.abs(i*l-j*k);if(1e-8>m||0===e)f[f.length-2]===a&&f[f.length-1]===b||f.push(a,b);else{var n=i*i+j*j,o=k*k+l*l,p=i*k+j*l,q=e*Math.sqrt(n)/m,r=e*Math.sqrt(o)/m,s=q*p/n,t=r*p/o,u=q*l+r*j,v=q*k+r*i,w=j*(r+s),x=i*(r+s),y=l*(q+t),z=k*(q+t),A=Math.atan2(x-v,w-u),B=Math.atan2(z-v,y-u);this.arc(u+a,v+b,e,A,B,j*k>l*i)}return this.dirty=!0,this.updateLocalBounds(),this},PIXI.Graphics.prototype.arc=function(a,b,c,d,e,f,g){if(d===e)return this;void 0===f&&(f=!1),void 0===g&&(g=40),!f&&d>=e?e+=2*Math.PI:f&&e>=d&&(d+=2*Math.PI);var h=f?-1*(d-e):e-d,i=Math.ceil(Math.abs(h)/(2*Math.PI))*g;if(0===h)return this;var j=a+Math.cos(d)*c,k=b+Math.sin(d)*c;f&&this.filling?this.moveTo(a,b):this.moveTo(j,k);for(var l=this.currentPath.shape.points,m=h/(2*i),n=2*m,o=Math.cos(m),p=Math.sin(m),q=i-1,r=q%1/q,s=0;q>=s;s++){var t=s+r*s,u=m+d+n*t,v=Math.cos(u),w=-Math.sin(u);l.push((o*v+p*w)*c+a,(o*-w+p*v)*c+b)}return this.dirty=!0,this.updateLocalBounds(),this},PIXI.Graphics.prototype.beginFill=function(a,b){return this.filling=!0,this.fillColor=a||0,this.fillAlpha=void 0===b?1:b,this.currentPath&&this.currentPath.shape.points.length<=2&&(this.currentPath.fill=this.filling,this.currentPath.fillColor=this.fillColor,this.currentPath.fillAlpha=this.fillAlpha),this},PIXI.Graphics.prototype.endFill=function(){return this.filling=!1,this.fillColor=null,this.fillAlpha=1,this},PIXI.Graphics.prototype.drawRect=function(a,b,c,d){return this.drawShape(new PIXI.Rectangle(a,b,c,d)),this},PIXI.Graphics.prototype.drawRoundedRect=function(a,b,c,d,e){return this.drawShape(new PIXI.RoundedRectangle(a,b,c,d,e)),this},PIXI.Graphics.prototype.drawCircle=function(a,b,c){return this.drawShape(new PIXI.Circle(a,b,c)),this},PIXI.Graphics.prototype.drawEllipse=function(a,b,c,d){return this.drawShape(new PIXI.Ellipse(a,b,c,d)),this},PIXI.Graphics.prototype.drawPolygon=function(a){(a instanceof c.Polygon||a instanceof PIXI.Polygon)&&(a=a.points);var b=a;if(!Array.isArray(b)){b=new Array(arguments.length);for(var d=0;dp?p:x,x=x>r?r:x,x=x>t?t:x,y=y>q?q:y,y=y>s?s:y,y=y>u?u:y,v=p>v?p:v,v=r>v?r:v,v=t>v?t:v,w=q>w?q:w,w=s>w?s:w,w=u>w?u:w,this._bounds.x=x,this._bounds.width=v-x,this._bounds.y=y,this._bounds.height=w-y,this._currentBounds=this._bounds}return this._currentBounds},PIXI.Graphics.prototype.containsPoint=function(a){this.worldTransform.applyInverse(a,tempPoint);for(var b=this.graphicsData,c=0;ch?h:a,b=h+j>b?h+j:b,d=d>i?i:d,e=i+k>e?i+k:e;else if(n===PIXI.Graphics.CIRC)h=f.x,i=f.y,j=f.radius+o/2,k=f.radius+o/2,a=a>h-j?h-j:a,b=h+j>b?h+j:b,d=d>i-k?i-k:d,e=i+k>e?i+k:e;else if(n===PIXI.Graphics.ELIP)h=f.x,i=f.y,j=f.width+o/2,k=f.height+o/2,a=a>h-j?h-j:a,b=h+j>b?h+j:b,d=d>i-k?i-k:d,e=i+k>e?i+k:e;else{g=f.points;for(var p=0;ph-o?h-o:a,b=h+o>b?h+o:b,d=d>i-o?i-o:d,e=i+o>e?i+o:e}}else a=0,b=0,d=0,e=0;var q=this.boundsPadding;this._localBounds.x=a-q,this._localBounds.width=b-a+2*q,this._localBounds.y=d-q,this._localBounds.height=e-d+2*q},PIXI.Graphics.prototype._generateCachedSprite=function(){var a=this.getLocalBounds();if(this._cachedSprite)this._cachedSprite.buffer.resize(a.width,a.height);else{var b=new PIXI.CanvasBuffer(a.width,a.height),c=PIXI.Texture.fromCanvas(b.canvas);this._cachedSprite=new PIXI.Sprite(c),this._cachedSprite.buffer=b,this._cachedSprite.worldTransform=this.worldTransform}this._cachedSprite.anchor.x=-(a.x/a.width),this._cachedSprite.anchor.y=-(a.y/a.height),this._cachedSprite.buffer.context.translate(-a.x,-a.y),this.worldAlpha=1,PIXI.CanvasGraphics.renderGraphics(this,this._cachedSprite.buffer.context),this._cachedSprite.alpha=this.alpha},PIXI.Graphics.prototype.updateCachedSpriteTexture=function(){var a=this._cachedSprite,b=a.texture,c=a.buffer.canvas;b.baseTexture.width=c.width,b.baseTexture.height=c.height,b.crop.width=b.frame.width=c.width,b.crop.height=b.frame.height=c.height,a._width=c.width,a._height=c.height,b.baseTexture.dirty()},PIXI.Graphics.prototype.destroyCachedSprite=function(){this._cachedSprite.texture.destroy(!0),this._cachedSprite=null},PIXI.Graphics.prototype.drawShape=function(a){this.currentPath&&this.currentPath.shape.points.length<=2&&this.graphicsData.pop(),this.currentPath=null,a instanceof c.Polygon&&(a=a.clone(),a.flatten());var b=new PIXI.GraphicsData(this.lineWidth,this.lineColor,this.lineAlpha,this.fillColor,this.fillAlpha,this.filling,a);return this.graphicsData.push(b),b.type===PIXI.Graphics.POLY&&(b.shape.closed=this.filling,this.currentPath=b),this.dirty=!0,this.updateLocalBounds(),b},Object.defineProperty(PIXI.Graphics.prototype,"cacheAsBitmap",{get:function(){return this._cacheAsBitmap},set:function(a){this._cacheAsBitmap=a,this._cacheAsBitmap?this._generateCachedSprite():this.destroyCachedSprite(),this.dirty=!0,this.webGLDirty=!0}}),PIXI.GraphicsData=function(a,b,c,d,e,f,g){this.lineWidth=a,this.lineColor=b,this.lineAlpha=c,this._lineTint=b,this.fillColor=d,this.fillAlpha=e,this._fillTint=d,this.fill=f,this.shape=g,this.type=g.type},PIXI.GraphicsData.prototype.constructor=PIXI.GraphicsData,PIXI.GraphicsData.prototype.clone=function(){return new GraphicsData(this.lineWidth,this.lineColor,this.lineAlpha,this.fillColor,this.fillAlpha,this.fill,this.shape)},PIXI.PolyK={},PIXI.PolyK.Triangulate=function(a){var b=!0,c=a.length>>1;if(3>c)return[];for(var d=[],e=[],f=0;c>f;f++)e.push(f);f=0;for(var g=c;g>3;){var h=e[(f+0)%g],i=e[(f+1)%g],j=e[(f+2)%g],k=a[2*h],l=a[2*h+1],m=a[2*i],n=a[2*i+1],o=a[2*j],p=a[2*j+1],q=!1;if(PIXI.PolyK._convex(k,l,m,n,o,p,b)){q=!0;for(var r=0;g>r;r++){var s=e[r];if(s!==h&&s!==i&&s!==j&&PIXI.PolyK._PointInTriangle(a[2*s],a[2*s+1],k,l,m,n,o,p)){q=!1;break}}}if(q)d.push(h,i,j),e.splice((f+1)%g,1),g--,f=0;else if(f++>3*g){if(!b)return null;for(d=[],e=[],f=0;c>f;f++)e.push(f);f=0,g=c,b=!1}}return d.push(e[0],e[1],e[2]),d},PIXI.PolyK._PointInTriangle=function(a,b,c,d,e,f,g,h){var i=g-c,j=h-d,k=e-c,l=f-d,m=a-c,n=b-d,o=i*i+j*j,p=i*k+j*l,q=i*m+j*n,r=k*k+l*l,s=k*m+l*n,t=1/(o*r-p*p),u=(r*q-p*s)*t,v=(o*s-p*q)*t;return u>=0&&v>=0&&1>u+v},PIXI.PolyK._convex=function(a,b,c,d,e,f,g){return(b-d)*(e-c)+(c-a)*(f-d)>=0===g},PIXI.EarCut={},PIXI.EarCut.Triangulate=function(a,b,c){c=c||2;var d=b&&b.length,e=d?b[0]*c:a.length,f=PIXI.EarCut.linkedList(a,0,e,c,!0),g=[];if(!f)return g;var h,i,j,k,l,m,n;if(d&&(f=PIXI.EarCut.eliminateHoles(a,b,f,c)),a.length>80*c){h=j=a[0],i=k=a[1];for(var o=c;e>o;o+=c)l=a[o],m=a[o+1],h>l&&(h=l),i>m&&(i=m),l>j&&(j=l),m>k&&(k=m);n=Math.max(j-h,k-i)}return PIXI.EarCut.earcutLinked(f,g,c,h,i,n),g},PIXI.EarCut.linkedList=function(a,b,c,d,e){var f,g,h,i=0;for(f=b,g=c-d;c>f;f+=d)i+=(a[g]-a[f])*(a[f+1]+a[g+1]),g=f;if(e===i>0)for(f=b;c>f;f+=d)h=PIXI.EarCut.insertNode(f,a[f],a[f+1],h);else for(f=c-d;f>=b;f-=d)h=PIXI.EarCut.insertNode(f,a[f],a[f+1],h);return h},PIXI.EarCut.filterPoints=function(a,b){if(!a)return a;b||(b=a);var c,d=a;do if(c=!1,d.steiner||!PIXI.EarCut.equals(d,d.next)&&0!==PIXI.EarCut.area(d.prev,d,d.next))d=d.next;else{if(PIXI.EarCut.removeNode(d),d=b=d.prev,d===d.next)return null;c=!0}while(c||d!==b);return b},PIXI.EarCut.earcutLinked=function(a,b,c,d,e,f,g){if(a){!g&&f&&PIXI.EarCut.indexCurve(a,d,e,f);for(var h,i,j=a;a.prev!==a.next;)if(h=a.prev,i=a.next,f?PIXI.EarCut.isEarHashed(a,d,e,f):PIXI.EarCut.isEar(a))b.push(h.i/c),b.push(a.i/c),b.push(i.i/c),PIXI.EarCut.removeNode(a),a=i.next,j=i.next;else if(a=i,a===j){g?1===g?(a=PIXI.EarCut.cureLocalIntersections(a,b,c),PIXI.EarCut.earcutLinked(a,b,c,d,e,f,2)):2===g&&PIXI.EarCut.splitEarcut(a,b,c,d,e,f):PIXI.EarCut.earcutLinked(PIXI.EarCut.filterPoints(a),b,c,d,e,f,1);break}}},PIXI.EarCut.isEar=function(a){var b=a.prev,c=a,d=a.next;if(PIXI.EarCut.area(b,c,d)>=0)return!1;for(var e=a.next.next;e!==a.prev;){if(PIXI.EarCut.pointInTriangle(b.x,b.y,c.x,c.y,d.x,d.y,e.x,e.y)&&PIXI.EarCut.area(e.prev,e,e.next)>=0)return!1;e=e.next}return!0},PIXI.EarCut.isEarHashed=function(a,b,c,d){var e=a.prev,f=a,g=a.next;if(PIXI.EarCut.area(e,f,g)>=0)return!1;for(var h=e.xf.x?e.x>g.x?e.x:g.x:f.x>g.x?f.x:g.x,k=e.y>f.y?e.y>g.y?e.y:g.y:f.y>g.y?f.y:g.y,l=PIXI.EarCut.zOrder(h,i,b,c,d),m=PIXI.EarCut.zOrder(j,k,b,c,d),n=a.nextZ;n&&n.z<=m;){if(n!==a.prev&&n!==a.next&&PIXI.EarCut.pointInTriangle(e.x,e.y,f.x,f.y,g.x,g.y,n.x,n.y)&&PIXI.EarCut.area(n.prev,n,n.next)>=0)return!1;n=n.nextZ}for(n=a.prevZ;n&&n.z>=l;){if(n!==a.prev&&n!==a.next&&PIXI.EarCut.pointInTriangle(e.x,e.y,f.x,f.y,g.x,g.y,n.x,n.y)&&PIXI.EarCut.area(n.prev,n,n.next)>=0)return!1;n=n.prevZ}return!0},PIXI.EarCut.cureLocalIntersections=function(a,b,c){var d=a;do{var e=d.prev,f=d.next.next;PIXI.EarCut.intersects(e,d,d.next,f)&&PIXI.EarCut.locallyInside(e,f)&&PIXI.EarCut.locallyInside(f,e)&&(b.push(e.i/c),b.push(d.i/c),b.push(f.i/c),PIXI.EarCut.removeNode(d),PIXI.EarCut.removeNode(d.next),d=a=f),d=d.next}while(d!==a);return d},PIXI.EarCut.splitEarcut=function(a,b,c,d,e,f){var g=a;do{for(var h=g.next.next;h!==g.prev;){if(g.i!==h.i&&PIXI.EarCut.isValidDiagonal(g,h)){var i=PIXI.EarCut.splitPolygon(g,h);return g=PIXI.EarCut.filterPoints(g,g.next),i=PIXI.EarCut.filterPoints(i,i.next),PIXI.EarCut.earcutLinked(g,b,c,d,e,f),void PIXI.EarCut.earcutLinked(i,b,c,d,e,f)}h=h.next}g=g.next}while(g!==a)},PIXI.EarCut.eliminateHoles=function(a,b,c,d){var e,f,g,h,i,j=[];for(e=0,f=b.length;f>e;e++)g=b[e]*d,h=f-1>e?b[e+1]*d:a.length,i=PIXI.EarCut.linkedList(a,g,h,d,!1),i===i.next&&(i.steiner=!0),j.push(PIXI.EarCut.getLeftmost(i));for(j.sort(compareX),e=0;e=d.next.y){var h=d.x+(f-d.y)*(d.next.x-d.x)/(d.next.y-d.y);e>=h&&h>g&&(g=h,c=d.x=d.x&&d.x>=c.x&&PIXI.EarCut.pointInTriangle(fi||i===k&&d.x>c.x)&&PIXI.EarCut.locallyInside(d,a)&&(c=d,k=i)),d=d.next;return c},PIXI.EarCut.indexCurve=function(a,b,c,d){var e=a;do null===e.z&&(e.z=PIXI.EarCut.zOrder(e.x,e.y,b,c,d)),e.prevZ=e.prev,e.nextZ=e.next,e=e.next;while(e!==a);e.prevZ.nextZ=null,e.prevZ=null,PIXI.EarCut.sortLinked(e)},PIXI.EarCut.sortLinked=function(a){var b,c,d,e,f,g,h,i,j=1;do{for(c=a,a=null,f=null,g=0;c;){for(g++,d=c,h=0,b=0;j>b&&(h++,d=d.nextZ,d);b++);for(i=j;h>0||i>0&&d;)0===h?(e=d,d=d.nextZ,i--):0!==i&&d?c.z<=d.z?(e=c,c=c.nextZ,h--):(e=d,d=d.nextZ,i--):(e=c,c=c.nextZ,h--),f?f.nextZ=e:a=e,e.prevZ=f,f=e;c=d}f.nextZ=null,j*=2}while(g>1);return a},PIXI.EarCut.zOrder=function(a,b,c,d,e){return a=32767*(a-c)/e,b=32767*(b-d)/e,a=16711935&(a|a<<8),a=252645135&(a|a<<4),a=858993459&(a|a<<2),a=1431655765&(a|a<<1),b=16711935&(b|b<<8),b=252645135&(b|b<<4),b=858993459&(b|b<<2),b=1431655765&(b|b<<1),a|b<<1},PIXI.EarCut.getLeftmost=function(a){var b=a,c=a;do b.x=0&&(a-g)*(d-h)-(c-g)*(b-h)>=0&&(c-g)*(f-h)-(e-g)*(d-h)>=0},PIXI.EarCut.isValidDiagonal=function(a,b){return PIXI.EarCut.equals(a,b)||a.next.i!==b.i&&a.prev.i!==b.i&&!PIXI.EarCut.intersectsPolygon(a,b)&&PIXI.EarCut.locallyInside(a,b)&&PIXI.EarCut.locallyInside(b,a)&&PIXI.EarCut.middleInside(a,b)},PIXI.EarCut.area=function(a,b,c){return(b.y-a.y)*(c.x-b.x)-(b.x-a.x)*(c.y-b.y)},PIXI.EarCut.equals=function(a,b){return a.x===b.x&&a.y===b.y},PIXI.EarCut.intersects=function(a,b,c,d){return PIXI.EarCut.area(a,b,c)>0!=PIXI.EarCut.area(a,b,d)>0&&PIXI.EarCut.area(c,d,a)>0!=PIXI.EarCut.area(c,d,b)>0},PIXI.EarCut.intersectsPolygon=function(a,b){var c=a;do{if(c.i!==a.i&&c.next.i!==a.i&&c.i!==b.i&&c.next.i!==b.i&&PIXI.EarCut.intersects(c,c.next,a,b))return!0;c=c.next}while(c!==a);return!1},PIXI.EarCut.locallyInside=function(a,b){return PIXI.EarCut.area(a.prev,a,a.next)<0?PIXI.EarCut.area(a,b,a.next)>=0&&PIXI.EarCut.area(a,a.prev,b)>=0:PIXI.EarCut.area(a,b,a.prev)<0||PIXI.EarCut.area(a,a.next,b)<0},PIXI.EarCut.middleInside=function(a,b){var c=a,d=!1,e=(a.x+b.x)/2,f=(a.y+b.y)/2;do c.y>f!=c.next.y>f&&e<(c.next.x-c.x)*(f-c.y)/(c.next.y-c.y)+c.x&&(d=!d),c=c.next;while(c!==a);return d},PIXI.EarCut.splitPolygon=function(a,b){var c=new PIXI.EarCut.Node(a.i,a.x,a.y),d=new PIXI.EarCut.Node(b.i,b.x,b.y),e=a.next,f=b.prev;return a.next=b,b.prev=a,c.next=e,e.prev=c,d.next=c,c.prev=d,f.next=d,d.prev=f,d},PIXI.EarCut.insertNode=function(a,b,c,d){var e=new PIXI.EarCut.Node(a,b,c);return d?(e.next=d.next,e.prev=d,d.next.prev=e,d.next=e):(e.prev=e,e.next=e),e},PIXI.EarCut.removeNode=function(a){a.next.prev=a.prev,a.prev.next=a.next,a.prevZ&&(a.prevZ.nextZ=a.nextZ),a.nextZ&&(a.nextZ.prevZ=a.prevZ)},PIXI.EarCut.Node=function(a,b,c){this.i=a,this.x=b,this.y=c,this.prev=null,this.next=null,this.z=null,this.prevZ=null,this.nextZ=null,this.steiner=!1},PIXI.WebGLGraphics=function(){},PIXI.WebGLGraphics.stencilBufferLimit=6,PIXI.WebGLGraphics.renderGraphics=function(a,b){var c,d=b.gl,e=b.projection,f=b.offset,g=b.shaderManager.primitiveShader;a.dirty&&PIXI.WebGLGraphics.updateGraphics(a,d);for(var h=a._webGL[d.id],i=0;i=PIXI.WebGLGraphics.stencilBufferLimit)if(g.points.length<2*PIXI.WebGLGraphics.stencilBufferLimit){f=PIXI.WebGLGraphics.switchMode(c,0);var h=PIXI.WebGLGraphics.buildPoly(g,f);h||(f=PIXI.WebGLGraphics.switchMode(c,1),PIXI.WebGLGraphics.buildComplexPoly(g,f))}else f=PIXI.WebGLGraphics.switchMode(c,1),PIXI.WebGLGraphics.buildComplexPoly(g,f);g.lineWidth>0&&(f=PIXI.WebGLGraphics.switchMode(c,0),PIXI.WebGLGraphics.buildLine(g,f))}else f=PIXI.WebGLGraphics.switchMode(c,0),g.type===PIXI.Graphics.RECT?PIXI.WebGLGraphics.buildRectangle(g,f):g.type===PIXI.Graphics.CIRC||g.type===PIXI.Graphics.ELIP?PIXI.WebGLGraphics.buildCircle(g,f):g.type===PIXI.Graphics.RREC&&PIXI.WebGLGraphics.buildRoundedRectangle(g,f);c.lastIndex++}for(d=0;d=q;q++)p=q/n,h=g(a,c,p),i=g(b,d,p),j=g(c,e,p),k=g(d,f,p),l=g(h,j,p),m=g(i,k,p),o.push(l,m);return o},PIXI.WebGLGraphics.buildCircle=function(a,b){var c,d,e=a.shape,f=e.x,g=e.y;a.type===PIXI.Graphics.CIRC?(c=e.radius,d=e.radius):(c=e.width,d=e.height);var h=40,i=2*Math.PI/h,j=0;if(a.fill){var k=PIXI.hex2rgb(a.fillColor),l=a.fillAlpha,m=k[0]*l,n=k[1]*l,o=k[2]*l,p=b.points,q=b.indices,r=p.length/6;for(q.push(r),j=0;h+1>j;j++)p.push(f,g,m,n,o,l),p.push(f+Math.sin(i*j)*c,g+Math.cos(i*j)*d,m,n,o,l),q.push(r++,r++);q.push(r-1)}if(a.lineWidth){var s=a.points;for(a.points=[],j=0;h+1>j;j++)a.points.push(f+Math.sin(i*j)*c,g+Math.cos(i*j)*d);PIXI.WebGLGraphics.buildLine(a,b),a.points=s}},PIXI.WebGLGraphics.buildLine=function(a,b){var c=0,d=a.points;if(0!==d.length){if(a.lineWidth%2)for(c=0;cc;c++)k=d[2*(c-1)],l=d[2*(c-1)+1],m=d[2*c],n=d[2*c+1],o=d[2*(c+1)],p=d[2*(c+1)+1],q=-(l-n),r=k-m,E=Math.sqrt(q*q+r*r),q/=E,r/=E,q*=K,r*=K,s=-(n-p),t=m-o,E=Math.sqrt(s*s+t*t),s/=E,t/=E,s*=K,t*=K,w=-r+l-(-r+n),x=-q+m-(-q+k),y=(-q+k)*(-r+n)-(-q+m)*(-r+l),z=-t+p-(-t+n),A=-s+m-(-s+o),B=(-s+o)*(-t+n)-(-s+m)*(-t+p),C=w*A-z*x,Math.abs(C)<.1?(C+=10.1,F.push(m-q,n-r,N,O,P,M),F.push(m+q,n+r,N,O,P,M)):(i=(x*B-A*y)/C,j=(z*y-w*B)/C,D=(i-m)*(i-m)+(j-n)+(j-n),D>19600?(u=q-s,v=r-t,E=Math.sqrt(u*u+v*v),u/=E,v/=E,u*=K,v*=K,F.push(m-u,n-v),F.push(N,O,P,M),F.push(m+u,n+v),F.push(N,O,P,M),F.push(m-u,n-v),F.push(N,O,P,M),I++):(F.push(i,j),F.push(N,O,P,M),F.push(m-(i-m),n-(j-n)),F.push(N,O,P,M)));for(k=d[2*(H-2)],l=d[2*(H-2)+1],m=d[2*(H-1)],n=d[2*(H-1)+1],q=-(l-n),r=k-m,E=Math.sqrt(q*q+r*r),q/=E,r/=E,q*=K,r*=K,F.push(m-q,n-r),F.push(N,O,P,M),F.push(m+q,n+r),F.push(N,O,P,M),G.push(J),c=0;I>c;c++)G.push(J++);G.push(J-1)}},PIXI.WebGLGraphics.buildComplexPoly=function(a,b){var c=a.points.slice();if(!(c.length<6)){var d=b.indices;b.points=c,b.alpha=a.fillAlpha,b.color=PIXI.hex2rgb(a.fillColor);for(var e,f,g=1/0,h=-(1/0),i=1/0,j=-(1/0),k=0;ke?e:g,h=e>h?e:h,i=i>f?f:i,j=f>j?f:j;c.push(g,i,h,i,h,j,g,j);var l=c.length/2;for(k=0;l>k;k++)d.push(k)}},PIXI.WebGLGraphics.buildPoly=function(a,b){var c=a.points;if(!(c.length<6)){var d=b.points,e=b.indices,f=c.length/2,g=PIXI.hex2rgb(a.fillColor),h=a.fillAlpha,i=g[0]*h,j=g[1]*h,k=g[2]*h,l=PIXI.EarCut.Triangulate(c,null,2);if(!l)return!1;var m=d.length/6,n=0;for(n=0;nn;n++)d.push(c[2*n],c[2*n+1],i,j,k,h);return!0}},PIXI.WebGLGraphics.graphicsDataPool=[],PIXI.WebGLGraphicsData=function(a){this.gl=a,this.color=[0,0,0],this.points=[],this.indices=[],this.buffer=a.createBuffer(),this.indexBuffer=a.createBuffer(),this.mode=1,this.alpha=1,this.dirty=!0},PIXI.WebGLGraphicsData.prototype.reset=function(){this.points=[],this.indices=[]},PIXI.WebGLGraphicsData.prototype.upload=function(){var a=this.gl;this.glPoints=new PIXI.Float32Array(this.points),a.bindBuffer(a.ARRAY_BUFFER,this.buffer),a.bufferData(a.ARRAY_BUFFER,this.glPoints,a.STATIC_DRAW),this.glIndicies=new PIXI.Uint16Array(this.indices),a.bindBuffer(a.ELEMENT_ARRAY_BUFFER,this.indexBuffer),a.bufferData(a.ELEMENT_ARRAY_BUFFER,this.glIndicies,a.STATIC_DRAW),this.dirty=!1},PIXI.CanvasGraphics=function(){},PIXI.CanvasGraphics.renderGraphics=function(a,b){var c=a.worldAlpha;a.dirty&&(this.updateGraphicsTint(a),a.dirty=!1);for(var d=0;dA?A:z,b.beginPath(),b.moveTo(v,w+z),b.lineTo(v,w+y-z),b.quadraticCurveTo(v,w+y,v+z,w+y),b.lineTo(v+x-z,w+y),b.quadraticCurveTo(v+x,w+y,v+x,w+y-z),b.lineTo(v+x,w+z),b.quadraticCurveTo(v+x,w,v+x-z,w),b.lineTo(v+z,w),b.quadraticCurveTo(v,w,v,w+z),b.closePath(),(e.fillColor||0===e.fillColor)&&(b.globalAlpha=e.fillAlpha*c,b.fillStyle="#"+("00000"+(0|g).toString(16)).substr(-6),b.fill()),e.lineWidth&&(b.globalAlpha=e.lineAlpha*c,b.strokeStyle="#"+("00000"+(0|h).toString(16)).substr(-6),b.stroke())}}},PIXI.CanvasGraphics.renderGraphicsMask=function(a,b){var c=a.graphicsData.length;if(0!==c){b.beginPath();for(var d=0;c>d;d++){var e=a.graphicsData[d],f=e.shape;if(e.type===PIXI.Graphics.POLY){var g=f.points;b.moveTo(g[0],g[1]);for(var h=1;hy?y:x,b.moveTo(t,u+x),b.lineTo(t,u+w-x),b.quadraticCurveTo(t,u+w,t+x,u+w),b.lineTo(t+v-x,u+w),b.quadraticCurveTo(t+v,u+w,t+v,u+w-x),b.lineTo(t+v,u+x),b.quadraticCurveTo(t+v,u,t+v-x,u),b.lineTo(t+x,u),b.quadraticCurveTo(t,u,t,u+x),b.closePath()}}}},PIXI.CanvasGraphics.updateGraphicsTint=function(a){if(16777215!==a.tint)for(var b=(a.tint>>16&255)/255,c=(a.tint>>8&255)/255,d=(255&a.tint)/255,e=0;e>16&255)/255*b*255<<16)+((g>>8&255)/255*c*255<<8)+(255&g)/255*d*255,f._lineTint=((h>>16&255)/255*b*255<<16)+((h>>8&255)/255*c*255<<8)+(255&h)/255*d*255}},c.Graphics=function(a,b,d){void 0===b&&(b=0),void 0===d&&(d=0),this.type=c.GRAPHICS,this.physicsType=c.SPRITE,this.anchor=new c.Point,PIXI.Graphics.call(this),c.Component.Core.init.call(this,a,b,d,"",null)},c.Graphics.prototype=Object.create(PIXI.Graphics.prototype),c.Graphics.prototype.constructor=c.Graphics,c.Component.Core.install.call(c.Graphics.prototype,["Angle","AutoCull","Bounds","Destroy","FixedToCamera","InputEnabled","InWorld","LifeSpan","PhysicsBody","Reset"]),c.Graphics.prototype.preUpdatePhysics=c.Component.PhysicsBody.preUpdate,c.Graphics.prototype.preUpdateLifeSpan=c.Component.LifeSpan.preUpdate,c.Graphics.prototype.preUpdateInWorld=c.Component.InWorld.preUpdate,c.Graphics.prototype.preUpdateCore=c.Component.Core.preUpdate,c.Graphics.prototype.preUpdate=function(){return this.preUpdatePhysics()&&this.preUpdateLifeSpan()&&this.preUpdateInWorld()?this.preUpdateCore():!1},c.Graphics.prototype.destroy=function(a){this.clear(),c.Component.Destroy.prototype.destroy.call(this,a)},c.Graphics.prototype.drawTriangle=function(a,b){void 0===b&&(b=!1);var d=new c.Polygon(a);if(b){var e=new c.Point(this.game.camera.x-a[0].x,this.game.camera.y-a[0].y),f=new c.Point(a[1].x-a[0].x,a[1].y-a[0].y),g=new c.Point(a[1].x-a[2].x,a[1].y-a[2].y),h=g.cross(f);e.dot(h)>0&&this.drawPolygon(d)}else this.drawPolygon(d)},c.Graphics.prototype.drawTriangles=function(a,b,d){void 0===d&&(d=!1);var e,f=new c.Point,g=new c.Point,h=new c.Point,i=[];if(b)if(a[0]instanceof c.Point)for(e=0;e0&&this.style.maxLinesh;h++){if(0===c){var i=this.style.strokeThickness+this.padding.x;i+=this.colors.length>0||this.strokeColors.length>0||this.fontWeights.length>0||this.fontStyles.length>0?this.measureLine(b[h]):this.context.measureText(b[h]).width,this.style.wordWrap&&(i-=this.context.measureText(" ").width)}else{var j=b[h].split(/(?:\t)/),i=this.padding.x+this.style.strokeThickness;if(Array.isArray(c))for(var k=0,l=0;l0||this.strokeColors.length>0||this.fontWeights.length>0||this.fontStyles.length>0?this.measureLine(j[l]):Math.ceil(this.context.measureText(j[l]).width),l>0&&(k+=c[l-1]),i=k+m}else for(var l=0;l0||this.strokeColors.length>0||this.fontWeights.length>0||this.fontStyles.length>0?this.measureLine(j[l]):Math.ceil(this.context.measureText(j[l]).width);var n=this.game.math.snapToCeil(i,c)-i;i+=n}}d[h]=Math.ceil(i),e=Math.max(e,d[h])}this.canvas.width=e*this._res;var o=f.fontSize+this.style.strokeThickness+this.padding.y,p=o*g,q=this._lineSpacing;0>q&&Math.abs(q)>o&&(q=-o),0!==q&&(p+=q>0?q*b.length:q*(b.length-1)),this.canvas.height=p*this._res,this.context.scale(this._res,this._res),navigator.isCocoonJS&&this.context.clearRect(0,0,this.canvas.width,this.canvas.height),this.style.backgroundColor&&(this.context.fillStyle=this.style.backgroundColor,this.context.fillRect(0,0,this.canvas.width,this.canvas.height)),this.context.fillStyle=this.style.fill,this.context.font=this.style.font,this.context.strokeStyle=this.style.stroke,this.context.textBaseline="alphabetic",this.context.lineWidth=this.style.strokeThickness,this.context.lineCap="round",this.context.lineJoin="round";var r,s;for(this._charCount=0,h=0;g>h;h++)r=this.style.strokeThickness/2,s=this.style.strokeThickness/2+h*o+f.ascent,h>0&&(s+=q*h),"right"===this.style.align?r+=e-d[h]:"center"===this.style.align&&(r+=(e-d[h])/2),this.autoRound&&(r=Math.round(r),s=Math.round(s)),this.colors.length>0||this.strokeColors.length>0||this.fontWeights.length>0||this.fontStyles.length>0?this.updateLine(b[h],r,s):(this.style.stroke&&this.style.strokeThickness&&(this.updateShadow(this.style.shadowStroke), +0===c?this.context.strokeText(b[h],r,s):this.renderTabLine(b[h],r,s,!1)),this.style.fill&&(this.updateShadow(this.style.shadowFill),0===c?this.context.fillText(b[h],r,s):this.renderTabLine(b[h],r,s,!0)));this.updateTexture()},c.Text.prototype.renderTabLine=function(a,b,c,d){var e=a.split(/(?:\t)/),f=this.style.tabs,g=0;if(Array.isArray(f))for(var h=0,i=0;i0&&(h+=f[i-1]),g=b+h,d?this.context.fillText(e[i],g,c):this.context.strokeText(e[i],g,c);else for(var i=0;i0||this.fontStyles.length>0){var e=this.fontToComponents(this.context.font);this.fontStyles[this._charCount]&&(e.fontStyle=this.fontStyles[this._charCount]),this.fontWeights[this._charCount]&&(e.fontWeight=this.fontWeights[this._charCount]),this.context.font=this.componentsToFont(e)}this.style.stroke&&this.style.strokeThickness&&(this.strokeColors[this._charCount]&&(this.context.strokeStyle=this.strokeColors[this._charCount]),this.updateShadow(this.style.shadowStroke)),this.style.fill&&(this.colors[this._charCount]&&(this.context.fillStyle=this.colors[this._charCount]),this.updateShadow(this.style.shadowFill)),b+=this.context.measureText(d).width,this._charCount++}return Math.ceil(b)},c.Text.prototype.updateLine=function(a,b,c){for(var d=0;d0||this.fontStyles.length>0){var f=this.fontToComponents(this.context.font);this.fontStyles[this._charCount]&&(f.fontStyle=this.fontStyles[this._charCount]),this.fontWeights[this._charCount]&&(f.fontWeight=this.fontWeights[this._charCount]),this.context.font=this.componentsToFont(f)}this.style.stroke&&this.style.strokeThickness&&(this.strokeColors[this._charCount]&&(this.context.strokeStyle=this.strokeColors[this._charCount]),this.updateShadow(this.style.shadowStroke),this.context.strokeText(e,b,c)),this.style.fill&&(this.colors[this._charCount]&&(this.context.fillStyle=this.colors[this._charCount]),this.updateShadow(this.style.shadowFill),this.context.fillText(e,b,c)),b+=this.context.measureText(e).width,this._charCount++}},c.Text.prototype.clearColors=function(){return this.colors=[],this.strokeColors=[],this.dirty=!0,this},c.Text.prototype.clearFontValues=function(){return this.fontStyles=[],this.fontWeights=[],this.dirty=!0,this},c.Text.prototype.addColor=function(a,b){return this.colors[b]=a,this.dirty=!0,this},c.Text.prototype.addStrokeColor=function(a,b){return this.strokeColors[b]=a,this.dirty=!0,this},c.Text.prototype.addFontStyle=function(a,b){return this.fontStyles[b]=a,this.dirty=!0,this},c.Text.prototype.addFontWeight=function(a,b){return this.fontWeights[b]=a,this.dirty=!0,this},c.Text.prototype.precalculateWordWrap=function(a){this.texture.baseTexture.resolution=this._res,this.context.font=this.style.font;var b=this.runWordWrap(a);return b.split(/(?:\r\n|\r|\n)/)},c.Text.prototype.runWordWrap=function(a){return this.useAdvancedWrap?this.advancedWordWrap(a):this.basicWordWrap(a)},c.Text.prototype.advancedWordWrap=function(a){for(var b=this.context,c=this.style.wordWrapWidth,d="",e=a.replace(/ +/gi," ").split(/\r?\n/gi),f=e.length,g=0;f>g;g++){var h=e[g],i="";h=h.replace(/^ *|\s*$/gi,"");var j=b.measureText(h).width;if(c>j)d+=h+"\n";else{for(var k=c,l=h.split(" "),m=0;mk){if(0===m){for(var q=o;q.length&&(q=q.slice(0,-1),p=b.measureText(q).width,!(k>=p)););if(!q.length)throw new Error("This text's wordWrapWidth setting is less than a single character!");var r=n.substr(q.length);l[m]=r,i+=q}var s=l[m].length?m:m+1,t=l.slice(s).join(" ").replace(/[ \n]*$/gi,"");e[g+1]=t+" "+(e[g+1]||""),f=e.length;break}i+=o,k-=p}d+=i.replace(/[ \n]*$/gi,"")+"\n"}}return d=d.replace(/[\s|\n]*$/gi,"")},c.Text.prototype.basicWordWrap=function(a){for(var b="",c=a.split("\n"),d=0;de?(g>0&&(b+="\n"),b+=f[g]+" ",e=this.style.wordWrapWidth-h):(e-=i,b+=f[g]+" ")}dd&&(this.style.wordWrapWidth=d)),this.updateTexture(),this},c.Text.prototype.updateTexture=function(){var a=this.texture.baseTexture,b=this.texture.crop,c=this.texture.frame,d=this.canvas.width,e=this.canvas.height;if(a.width=d,a.height=e,b.width=d,b.height=e,c.width=d,c.height=e,this.texture.width=d,this.texture.height=e,this._width=d,this._height=e,this.textBounds){var f=this.textBounds.x,g=this.textBounds.y;"right"===this.style.boundsAlignH?f+=this.textBounds.width-this.canvas.width:"center"===this.style.boundsAlignH&&(f+=this.textBounds.halfWidth-this.canvas.width/2),"bottom"===this.style.boundsAlignV?g+=this.textBounds.height-this.canvas.height:"middle"===this.style.boundsAlignV&&(g+=this.textBounds.halfHeight-this.canvas.height/2),this.pivot.x=-f,this.pivot.y=-g}this.renderable=0!==d&&0!==e,this.texture.requiresReTint=!0,this.texture.baseTexture.dirty()},c.Text.prototype._renderWebGL=function(a){this.dirty&&(this.updateText(),this.dirty=!1),PIXI.Sprite.prototype._renderWebGL.call(this,a)},c.Text.prototype._renderCanvas=function(a){this.dirty&&(this.updateText(),this.dirty=!1),PIXI.Sprite.prototype._renderCanvas.call(this,a)},c.Text.prototype.determineFontProperties=function(a){var b=c.Text.fontPropertiesCache[a];if(!b){b={};var d=c.Text.fontPropertiesCanvas,e=c.Text.fontPropertiesContext;e.font=a;var f=Math.ceil(e.measureText("|MÉq").width),g=Math.ceil(e.measureText("|MÉq").width),h=2*g;if(g=1.4*g|0,d.width=f,d.height=h,e.fillStyle="#f00",e.fillRect(0,0,f,h),e.font=a,e.textBaseline="alphabetic",e.fillStyle="#000",e.fillText("|MÉq",0,g),!e.getImageData(0,0,f,h))return b.ascent=g,b.descent=g+6,b.fontSize=b.ascent+b.descent,c.Text.fontPropertiesCache[a]=b,b;var i,j,k=e.getImageData(0,0,f,h).data,l=k.length,m=4*f,n=0,o=!1;for(i=0;g>i;i++){for(j=0;m>j;j+=4)if(255!==k[n+j]){o=!0;break}if(o)break;n+=m}for(b.ascent=g-i,n=l-m,o=!1,i=h;i>g;i--){for(j=0;m>j;j+=4)if(255!==k[n+j]){o=!0;break}if(o)break;n-=m}b.descent=i-g,b.descent+=6,b.fontSize=b.ascent+b.descent,c.Text.fontPropertiesCache[a]=b}return b},c.Text.prototype.getBounds=function(a){return this.dirty&&(this.updateText(),this.dirty=!1),PIXI.Sprite.prototype.getBounds.call(this,a)},Object.defineProperty(c.Text.prototype,"text",{get:function(){return this._text},set:function(a){a!==this._text&&(this._text=a.toString()||"",this.dirty=!0,this.parent&&this.updateTransform())}}),Object.defineProperty(c.Text.prototype,"cssFont",{get:function(){return this.componentsToFont(this._fontComponents)},set:function(a){a=a||"bold 20pt Arial",this._fontComponents=this.fontToComponents(a),this.updateFont(this._fontComponents)}}),Object.defineProperty(c.Text.prototype,"font",{get:function(){return this._fontComponents.fontFamily},set:function(a){a=a||"Arial",a=a.trim(),/^(?:inherit|serif|sans-serif|cursive|fantasy|monospace)$/.exec(a)||/['",]/.exec(a)||(a="'"+a+"'"),this._fontComponents.fontFamily=a,this.updateFont(this._fontComponents)}}),Object.defineProperty(c.Text.prototype,"fontSize",{get:function(){var a=this._fontComponents.fontSize;return a&&/(?:^0$|px$)/.exec(a)?parseInt(a,10):a},set:function(a){a=a||"0","number"==typeof a&&(a+="px"),this._fontComponents.fontSize=a,this.updateFont(this._fontComponents)}}),Object.defineProperty(c.Text.prototype,"fontWeight",{get:function(){return this._fontComponents.fontWeight||"normal"},set:function(a){a=a||"normal",this._fontComponents.fontWeight=a,this.updateFont(this._fontComponents)}}),Object.defineProperty(c.Text.prototype,"fontStyle",{get:function(){return this._fontComponents.fontStyle||"normal"},set:function(a){a=a||"normal",this._fontComponents.fontStyle=a,this.updateFont(this._fontComponents)}}),Object.defineProperty(c.Text.prototype,"fontVariant",{get:function(){return this._fontComponents.fontVariant||"normal"},set:function(a){a=a||"normal",this._fontComponents.fontVariant=a,this.updateFont(this._fontComponents)}}),Object.defineProperty(c.Text.prototype,"fill",{get:function(){return this.style.fill},set:function(a){a!==this.style.fill&&(this.style.fill=a,this.dirty=!0)}}),Object.defineProperty(c.Text.prototype,"align",{get:function(){return this.style.align},set:function(a){a!==this.style.align&&(this.style.align=a,this.dirty=!0)}}),Object.defineProperty(c.Text.prototype,"resolution",{get:function(){return this._res},set:function(a){a!==this._res&&(this._res=a,this.dirty=!0)}}),Object.defineProperty(c.Text.prototype,"tabs",{get:function(){return this.style.tabs},set:function(a){a!==this.style.tabs&&(this.style.tabs=a,this.dirty=!0)}}),Object.defineProperty(c.Text.prototype,"boundsAlignH",{get:function(){return this.style.boundsAlignH},set:function(a){a!==this.style.boundsAlignH&&(this.style.boundsAlignH=a,this.dirty=!0)}}),Object.defineProperty(c.Text.prototype,"boundsAlignV",{get:function(){return this.style.boundsAlignV},set:function(a){a!==this.style.boundsAlignV&&(this.style.boundsAlignV=a,this.dirty=!0)}}),Object.defineProperty(c.Text.prototype,"stroke",{get:function(){return this.style.stroke},set:function(a){a!==this.style.stroke&&(this.style.stroke=a,this.dirty=!0)}}),Object.defineProperty(c.Text.prototype,"strokeThickness",{get:function(){return this.style.strokeThickness},set:function(a){a!==this.style.strokeThickness&&(this.style.strokeThickness=a,this.dirty=!0)}}),Object.defineProperty(c.Text.prototype,"wordWrap",{get:function(){return this.style.wordWrap},set:function(a){a!==this.style.wordWrap&&(this.style.wordWrap=a,this.dirty=!0)}}),Object.defineProperty(c.Text.prototype,"wordWrapWidth",{get:function(){return this.style.wordWrapWidth},set:function(a){a!==this.style.wordWrapWidth&&(this.style.wordWrapWidth=a,this.dirty=!0)}}),Object.defineProperty(c.Text.prototype,"lineSpacing",{get:function(){return this._lineSpacing},set:function(a){a!==this._lineSpacing&&(this._lineSpacing=parseFloat(a),this.dirty=!0,this.parent&&this.updateTransform())}}),Object.defineProperty(c.Text.prototype,"shadowOffsetX",{get:function(){return this.style.shadowOffsetX},set:function(a){a!==this.style.shadowOffsetX&&(this.style.shadowOffsetX=a,this.dirty=!0)}}),Object.defineProperty(c.Text.prototype,"shadowOffsetY",{get:function(){return this.style.shadowOffsetY},set:function(a){a!==this.style.shadowOffsetY&&(this.style.shadowOffsetY=a,this.dirty=!0)}}),Object.defineProperty(c.Text.prototype,"shadowColor",{get:function(){return this.style.shadowColor},set:function(a){a!==this.style.shadowColor&&(this.style.shadowColor=a,this.dirty=!0)}}),Object.defineProperty(c.Text.prototype,"shadowBlur",{get:function(){return this.style.shadowBlur},set:function(a){a!==this.style.shadowBlur&&(this.style.shadowBlur=a,this.dirty=!0)}}),Object.defineProperty(c.Text.prototype,"shadowStroke",{get:function(){return this.style.shadowStroke},set:function(a){a!==this.style.shadowStroke&&(this.style.shadowStroke=a,this.dirty=!0)}}),Object.defineProperty(c.Text.prototype,"shadowFill",{get:function(){return this.style.shadowFill},set:function(a){a!==this.style.shadowFill&&(this.style.shadowFill=a,this.dirty=!0)}}),Object.defineProperty(c.Text.prototype,"width",{get:function(){return this.dirty&&(this.updateText(),this.dirty=!1),this.scale.x*this.texture.frame.width},set:function(a){this.scale.x=a/this.texture.frame.width,this._width=a}}),Object.defineProperty(c.Text.prototype,"height",{get:function(){return this.dirty&&(this.updateText(),this.dirty=!1),this.scale.y*this.texture.frame.height},set:function(a){this.scale.y=a/this.texture.frame.height,this._height=a}}),c.Text.fontPropertiesCache={},c.Text.fontPropertiesCanvas=document.createElement("canvas"),c.Text.fontPropertiesContext=c.Text.fontPropertiesCanvas.getContext("2d"),c.BitmapText=function(a,b,d,e,f,g,h){b=b||0,d=d||0,e=e||"",f=f||"",g=g||32,h=h||"left",PIXI.DisplayObjectContainer.call(this),this.type=c.BITMAPTEXT,this.physicsType=c.SPRITE,this.textWidth=0,this.textHeight=0,this.anchor=new c.Point,this._prevAnchor=new c.Point,this._glyphs=[],this._maxWidth=0,this._text=f.toString()||"",this._data=a.cache.getBitmapFont(e),this._font=e,this._fontSize=g,this._align=h,this._tint=16777215,this.updateText(),this.dirty=!1,c.Component.Core.init.call(this,a,b,d,"",null)},c.BitmapText.prototype=Object.create(PIXI.DisplayObjectContainer.prototype),c.BitmapText.prototype.constructor=c.BitmapText,c.Component.Core.install.call(c.BitmapText.prototype,["Angle","AutoCull","Bounds","Destroy","FixedToCamera","InputEnabled","InWorld","LifeSpan","PhysicsBody","Reset"]),c.BitmapText.prototype.preUpdatePhysics=c.Component.PhysicsBody.preUpdate,c.BitmapText.prototype.preUpdateLifeSpan=c.Component.LifeSpan.preUpdate,c.BitmapText.prototype.preUpdateInWorld=c.Component.InWorld.preUpdate,c.BitmapText.prototype.preUpdateCore=c.Component.Core.preUpdate,c.BitmapText.prototype.preUpdate=function(){return this.preUpdatePhysics()&&this.preUpdateLifeSpan()&&this.preUpdateInWorld()?this.preUpdateCore():!1},c.BitmapText.prototype.postUpdate=function(){c.Component.PhysicsBody.postUpdate.call(this),c.Component.FixedToCamera.postUpdate.call(this),this.body&&this.body.type===c.Physics.ARCADE&&(this.textWidth===this.body.sourceWidth&&this.textHeight===this.body.sourceHeight||this.body.setSize(this.textWidth,this.textHeight))},c.BitmapText.prototype.setText=function(a){this.text=a},c.BitmapText.prototype.scanLine=function(a,b,c){for(var d=0,e=0,f=-1,g=0,h=null,i=this._maxWidth>0?this._maxWidth:null,j=[],k=0;k=i&&f>-1)return{width:g||e,text:c.substr(0,k-(k-f)),end:l,chars:j};e+=(n.xAdvance+p)*b,j.push(d+(n.xOffset+p)*b),d+=(n.xAdvance+p)*b,h=m}return{width:e,text:c,end:l,chars:j}},c.BitmapText.prototype.cleanText=function(a,b){void 0===b&&(b="");var c=this._data.font;if(!c)return"";for(var d=/\r\n|\n\r|\n|\r/g,e=a.replace(d,"\n").split("\n"),f=0;fthis.textWidth&&(this.textWidth=f.width),e+=a.lineHeight*c,b=b.substr(f.text.length+1)}while(f.end===!1);this.textHeight=e;for(var g=0,h=0,i=this.textWidth*this.anchor.x,j=this.textHeight*this.anchor.y,k=0;k0&&(this._fontSize=a,this.updateText())}}),Object.defineProperty(c.BitmapText.prototype,"text",{get:function(){return this._text},set:function(a){a!==this._text&&(this._text=a.toString()||"",this.updateText())}}),Object.defineProperty(c.BitmapText.prototype,"maxWidth",{get:function(){return this._maxWidth},set:function(a){a!==this._maxWidth&&(this._maxWidth=a,this.updateText())}}),Object.defineProperty(c.BitmapText.prototype,"smoothed",{get:function(){return!this._data.base.scaleMode},set:function(a){a?this._data.base.scaleMode=0:this._data.base.scaleMode=1}}),c.RetroFont=function(a,b,d,e,f,g,h,i,j,k){if(!a.cache.checkImageKey(b))return!1;void 0!==g&&null!==g||(g=a.cache.getImage(b).width/d),this.characterWidth=d,this.characterHeight=e,this.characterSpacingX=h||0,this.characterSpacingY=i||0,this.characterPerRow=g,this.offsetX=j||0,this.offsetY=k||0,this.align="left",this.multiLine=!1,this.autoUpperCase=!0,this.customSpacingX=0,this.customSpacingY=0,this.fixedWidth=0,this.fontSet=a.cache.getImage(b),this._text="",this.grabData=[],this.frameData=new c.FrameData;for(var l=this.offsetX,m=this.offsetY,n=0,o=0;o?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~",c.RetroFont.TEXT_SET2=" !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ",c.RetroFont.TEXT_SET3="ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789 ",c.RetroFont.TEXT_SET4="ABCDEFGHIJKLMNOPQRSTUVWXYZ 0123456789",c.RetroFont.TEXT_SET5="ABCDEFGHIJKLMNOPQRSTUVWXYZ.,/() '!?-*:0123456789",c.RetroFont.TEXT_SET6="ABCDEFGHIJKLMNOPQRSTUVWXYZ!?:;0123456789\"(),-.' ",c.RetroFont.TEXT_SET7="AGMSY+:4BHNTZ!;5CIOU.?06DJPV,(17EKQW\")28FLRX-'39",c.RetroFont.TEXT_SET8="0123456789 .ABCDEFGHIJKLMNOPQRSTUVWXYZ",c.RetroFont.TEXT_SET9="ABCDEFGHIJKLMNOPQRSTUVWXYZ()-0123456789.:,'\"?!",c.RetroFont.TEXT_SET10="ABCDEFGHIJKLMNOPQRSTUVWXYZ",c.RetroFont.TEXT_SET11="ABCDEFGHIJKLMNOPQRSTUVWXYZ.,\"-+!?()':;0123456789",c.RetroFont.prototype.setFixedWidth=function(a,b){void 0===b&&(b="left"),this.fixedWidth=a,this.align=b},c.RetroFont.prototype.setText=function(a,b,c,d,e,f){this.multiLine=b||!1,this.customSpacingX=c||0,this.customSpacingY=d||0,this.align=e||"left",f?this.autoUpperCase=!1:this.autoUpperCase=!0,a.length>0&&(this.text=a)},c.RetroFont.prototype.buildRetroFontText=function(){var a=0,b=0;if(this.clear(),this.multiLine){var d=this._text.split("\n");this.fixedWidth>0?this.resize(this.fixedWidth,d.length*(this.characterHeight+this.customSpacingY)-this.customSpacingY,!0):this.resize(this.getLongestLine()*(this.characterWidth+this.customSpacingX),d.length*(this.characterHeight+this.customSpacingY)-this.customSpacingY,!0);for(var e=0;ea&&(a=0),this.pasteLine(d[e],a,b,this.customSpacingX),b+=this.characterHeight+this.customSpacingY}else this.fixedWidth>0?this.resize(this.fixedWidth,this.characterHeight,!0):this.resize(this._text.length*(this.characterWidth+this.customSpacingX),this.characterHeight,!0),a=0,this.align===c.RetroFont.ALIGN_RIGHT?a=this.width-this._text.length*(this.characterWidth+this.customSpacingX):this.align===c.RetroFont.ALIGN_CENTER&&(a=this.width/2-this._text.length*(this.characterWidth+this.customSpacingX)/2,a+=this.customSpacingX/2),0>a&&(a=0),this.pasteLine(this._text,a,0,this.customSpacingX);this.requiresReTint=!0},c.RetroFont.prototype.pasteLine=function(a,b,c,d){for(var e=0;e=0&&(this.stamp.frame=this.grabData[a.charCodeAt(e)],this.renderXY(this.stamp,b,c,!1),b+=this.characterWidth+d,b>this.width))break},c.RetroFont.prototype.getLongestLine=function(){var a=0;if(this._text.length>0)for(var b=this._text.split("\n"),c=0;ca&&(a=b[c].length);return a},c.RetroFont.prototype.removeUnsupportedCharacters=function(a){for(var b="",c=0;c=0||!a&&"\n"===d)&&(b=b.concat(d))}return b},c.RetroFont.prototype.updateOffset=function(a,b){if(this.offsetX!==a||this.offsetY!==b){for(var c=a-this.offsetX,d=b-this.offsetY,e=this.game.cache.getFrameData(this.stamp.key).getFrames(),f=e.length;f--;)e[f].x+=c,e[f].y+=d;this.buildRetroFontText()}},Object.defineProperty(c.RetroFont.prototype,"text",{get:function(){return this._text},set:function(a){var b;b=this.autoUpperCase?a.toUpperCase():a,b!==this._text&&(this._text=b,this.removeUnsupportedCharacters(this.multiLine),this.buildRetroFontText())}}),Object.defineProperty(c.RetroFont.prototype,"smoothed",{get:function(){return this.stamp.smoothed},set:function(a){this.stamp.smoothed=a,this.buildRetroFontText()}}),c.Rope=function(a,b,d,e,f,g){this.points=[],this.points=g,this._hasUpdateAnimation=!1,this._updateAnimationCallback=null,b=b||0,d=d||0,e=e||null,f=f||null,this.type=c.ROPE,PIXI.Rope.call(this,c.Cache.DEFAULT,this.points),c.Component.Core.init.call(this,a,b,d,e,f)},c.Rope.prototype=Object.create(PIXI.Rope.prototype),c.Rope.prototype.constructor=c.Rope,c.Component.Core.install.call(c.Rope.prototype,["Angle","Animation","AutoCull","Bounds","BringToTop","Crop","Delta","Destroy","FixedToCamera","InWorld","LifeSpan","LoadTexture","Overlap","PhysicsBody","Reset","ScaleMinMax","Smoothed"]),c.Rope.prototype.preUpdatePhysics=c.Component.PhysicsBody.preUpdate,c.Rope.prototype.preUpdateLifeSpan=c.Component.LifeSpan.preUpdate,c.Rope.prototype.preUpdateInWorld=c.Component.InWorld.preUpdate,c.Rope.prototype.preUpdateCore=c.Component.Core.preUpdate,c.Rope.prototype.preUpdate=function(){return this.preUpdatePhysics()&&this.preUpdateLifeSpan()&&this.preUpdateInWorld()?this.preUpdateCore():!1},c.Rope.prototype.update=function(){this._hasUpdateAnimation&&this.updateAnimation.call(this)},c.Rope.prototype.reset=function(a,b){return c.Component.Reset.prototype.reset.call(this,a,b),this},Object.defineProperty(c.Rope.prototype,"updateAnimation",{get:function(){return this._updateAnimation},set:function(a){a&&"function"==typeof a?(this._hasUpdateAnimation=!0,this._updateAnimation=a):(this._hasUpdateAnimation=!1,this._updateAnimation=null)}}),Object.defineProperty(c.Rope.prototype,"segments",{get:function(){for(var a,b,d,e,f,g,h,i,j=[],k=0;k=1)&&(l.touch=!0),(window.navigator.msPointerEnabled||window.navigator.pointerEnabled)&&(l.mspointer=!0),l.cocoonJS||("onwheel"in window||l.ie&&"WheelEvent"in window?l.wheelEvent="wheel":"onmousewheel"in window?l.wheelEvent="mousewheel":l.firefox&&"MouseScrollEvent"in window&&(l.wheelEvent="DOMMouseScroll"))}function d(){for(var a=["requestFullscreen","requestFullScreen","webkitRequestFullscreen","webkitRequestFullScreen","msRequestFullscreen","msRequestFullScreen","mozRequestFullScreen","mozRequestFullscreen"],b=document.createElement("div"),c=0;c=9&&/Mac OS X (\d+)_(\d+)/.test(navigator.userAgent)){var c=parseInt(RegExp.$1,10),d=parseInt(RegExp.$2,10);(10===c&&d>=11||c>10)&&(l.dolby=!0)}}catch(e){}}function h(){l.pixelRatio=window.devicePixelRatio||1,l.iPhone=-1!=navigator.userAgent.toLowerCase().indexOf("iphone"),l.iPhone4=2==l.pixelRatio&&l.iPhone,l.iPad=-1!=navigator.userAgent.toLowerCase().indexOf("ipad"),"undefined"!=typeof Int8Array?l.typedArray=!0:l.typedArray=!1,"undefined"!=typeof ArrayBuffer&&"undefined"!=typeof Uint8Array&&"undefined"!=typeof Uint32Array&&(l.littleEndian=i(),l.LITTLE_ENDIAN=l.littleEndian),l.support32bit="undefined"!=typeof ArrayBuffer&&"undefined"!=typeof Uint8ClampedArray&&"undefined"!=typeof Int32Array&&null!==l.littleEndian&&j(),navigator.vibrate=navigator.vibrate||navigator.webkitVibrate||navigator.mozVibrate||navigator.msVibrate,navigator.vibrate&&(l.vibration=!0)}function i(){var a=new ArrayBuffer(4),b=new Uint8Array(a),c=new Uint32Array(a);return b[0]=161,b[1]=178,b[2]=195,b[3]=212,3569595041==c[0]?!0:2712847316==c[0]?!1:null}function j(){if(void 0===Uint8ClampedArray)return!1;var a=PIXI.CanvasPool.create(this,1,1),b=a.getContext("2d");if(!b)return!1;var c=b.createImageData(1,1);return PIXI.CanvasPool.remove(this),c.data instanceof Uint8ClampedArray}function k(){var a,b=document.createElement("p"),c={webkitTransform:"-webkit-transform",OTransform:"-o-transform",msTransform:"-ms-transform",MozTransform:"-moz-transform",transform:"transform"};document.body.insertBefore(b,null);for(var d in c)void 0!==b.style[d]&&(b.style[d]="translate3d(1px,1px,1px)",a=window.getComputedStyle(b).getPropertyValue(c[d]));document.body.removeChild(b),l.css3D=void 0!==a&&a.length>0&&"none"!==a}var l=this;a(),e(),g(),f(),k(),h(),b(),d(),c()},c.Device.canPlayAudio=function(a){return"mp3"===a&&this.mp3?!0:"ogg"===a&&(this.ogg||this.opus)?!0:"m4a"===a&&this.m4a?!0:"opus"===a&&this.opus?!0:"wav"===a&&this.wav?!0:"webm"===a&&this.webm?!0:!("mp4"!==a||!this.dolby)},c.Device.canPlayVideo=function(a){return"webm"===a&&(this.webmVideo||this.vp9Video)?!0:"mp4"===a&&(this.mp4Video||this.h264Video)?!0:"ogg"!==a&&"ogv"!==a||!this.oggVideo?!("mpeg"!==a||!this.hlsVideo):!0},c.Device.isConsoleOpen=function(){return window.console&&window.console.firebug?!0:window.console&&(console.profile(),console.profileEnd(),console.clear&&console.clear(),console.profiles)?console.profiles.length>0:!1},c.Device.isAndroidStockBrowser=function(){var a=window.navigator.userAgent.match(/Android.*AppleWebKit\/([\d.]+)/);return a&&a[1]<537},c.Canvas={create:function(a,b,c,d,e){b=b||256,c=c||256;var f=e?document.createElement("canvas"):PIXI.CanvasPool.create(a,b,c);return"string"==typeof d&&""!==d&&(f.id=d),f.width=b,f.height=c,f.style.display="block",f},setBackgroundColor:function(a,b){return b=b||"rgb(0,0,0)",a.style.backgroundColor=b,a},setTouchAction:function(a,b){return b=b||"none",a.style.msTouchAction=b,a.style["ms-touch-action"]=b,a.style["touch-action"]=b,a},setUserSelect:function(a,b){return b=b||"none",a.style["-webkit-touch-callout"]=b,a.style["-webkit-user-select"]=b,a.style["-khtml-user-select"]=b,a.style["-moz-user-select"]=b,a.style["-ms-user-select"]=b,a.style["user-select"]=b,a.style["-webkit-tap-highlight-color"]="rgba(0, 0, 0, 0)",a},addToDOM:function(a,b,c){var d;return void 0===c&&(c=!0),b&&("string"==typeof b?d=document.getElementById(b):"object"==typeof b&&1===b.nodeType&&(d=b)),d||(d=document.body),c&&d.style&&(d.style.overflow="hidden"),d.appendChild(a),a},removeFromDOM:function(a){a.parentNode&&a.parentNode.removeChild(a)},setTransform:function(a,b,c,d,e,f,g){return a.setTransform(d,f,g,e,b,c),a},setSmoothingEnabled:function(a,b){var d=c.Canvas.getSmoothingPrefix(a);return d&&(a[d]=b),a},getSmoothingPrefix:function(a){var b=["i","webkitI","msI","mozI","oI"];for(var c in b){var d=b[c]+"mageSmoothingEnabled";if(d in a)return d}return null},getSmoothingEnabled:function(a){var b=c.Canvas.getSmoothingPrefix(a);return b?a[b]:void 0},setImageRenderingCrisp:function(a){for(var b=["optimizeSpeed","crisp-edges","-moz-crisp-edges","-webkit-optimize-contrast","optimize-contrast","pixelated"],c=0;ca},fuzzyGreaterThan:function(a,b,c){return void 0===c&&(c=1e-4),a>b-c},fuzzyCeil:function(a,b){return void 0===b&&(b=1e-4),Math.ceil(a-b)},fuzzyFloor:function(a,b){return void 0===b&&(b=1e-4),Math.floor(a+b)},average:function(){for(var a=0,b=arguments.length,c=0;b>c;c++)a+=+arguments[c];return a/b},shear:function(a){return a%1},snapTo:function(a,b,c){return void 0===c&&(c=0),0===b?a:(a-=c,a=b*Math.round(a/b),c+a)},snapToFloor:function(a,b,c){return void 0===c&&(c=0),0===b?a:(a-=c,a=b*Math.floor(a/b),c+a)},snapToCeil:function(a,b,c){return void 0===c&&(c=0),0===b?a:(a-=c,a=b*Math.ceil(a/b),c+a)},roundTo:function(a,b,c){void 0===b&&(b=0),void 0===c&&(c=10);var d=Math.pow(c,-b);return Math.round(a*d)/d},floorTo:function(a,b,c){void 0===b&&(b=0),void 0===c&&(c=10);var d=Math.pow(c,-b);return Math.floor(a*d)/d},ceilTo:function(a,b,c){void 0===b&&(b=0),void 0===c&&(c=10);var d=Math.pow(c,-b);return Math.ceil(a*d)/d},angleBetween:function(a,b,c,d){return Math.atan2(d-b,c-a)},angleBetweenY:function(a,b,c,d){return Math.atan2(c-a,d-b)},angleBetweenPoints:function(a,b){return Math.atan2(b.y-a.y,b.x-a.x)},angleBetweenPointsY:function(a,b){return Math.atan2(b.x-a.x,b.y-a.y)},reverseAngle:function(a){return this.normalizeAngle(a+Math.PI,!0)},normalizeAngle:function(a){return a%=2*Math.PI,a>=0?a:a+2*Math.PI},maxAdd:function(a,b,c){return Math.min(a+b,c)},minSub:function(a,b,c){return Math.max(a-b,c)},wrap:function(a,b,c){var d=c-b;if(0>=d)return 0;var e=(a-b)%d;return 0>e&&(e+=d),e+b},wrapValue:function(a,b,c){var d;return a=Math.abs(a),b=Math.abs(b),c=Math.abs(c),d=(a+b)%c},isOdd:function(a){return!!(1&a)},isEven:function(a){return!(1&a)},min:function(){if(1===arguments.length&&"object"==typeof arguments[0])var a=arguments[0];else var a=arguments;for(var b=1,c=0,d=a.length;d>b;b++)a[b]b;b++)a[b]>a[c]&&(c=b);return a[c]},minProperty:function(a){if(2===arguments.length&&"object"==typeof arguments[1])var b=arguments[1];else var b=arguments.slice(1);for(var c=1,d=0,e=b.length;e>c;c++)b[c][a]c;c++)b[c][a]>b[d][a]&&(d=c);return b[d][a]},wrapAngle:function(a,b){return b?this.wrap(a,-Math.PI,Math.PI):this.wrap(a,-180,180)},linearInterpolation:function(a,b){var c=a.length-1,d=c*b,e=Math.floor(d);return 0>b?this.linear(a[0],a[1],d):b>1?this.linear(a[c],a[c-1],c-d):this.linear(a[e],a[e+1>c?c:e+1],d-e)},bezierInterpolation:function(a,b){for(var c=0,d=a.length-1,e=0;d>=e;e++)c+=Math.pow(1-b,d-e)*Math.pow(b,e)*a[e]*this.bernstein(d,e);return c},catmullRomInterpolation:function(a,b){var c=a.length-1,d=c*b,e=Math.floor(d);return a[0]===a[c]?(0>b&&(e=Math.floor(d=c*(1+b))),this.catmullRom(a[(e-1+c)%c],a[e],a[(e+1)%c],a[(e+2)%c],d-e)):0>b?a[0]-(this.catmullRom(a[0],a[0],a[1],a[1],-d)-a[0]):b>1?a[c]-(this.catmullRom(a[c],a[c],a[c-1],a[c-1],d-c)-a[c]):this.catmullRom(a[e?e-1:0],a[e],a[e+1>c?c:e+1],a[e+2>c?c:e+2],d-e)},linear:function(a,b,c){return(b-a)*c+a},bernstein:function(a,b){return this.factorial(a)/this.factorial(b)/this.factorial(a-b)},factorial:function(a){if(0===a)return 1;for(var b=a;--a;)b*=a;return b},catmullRom:function(a,b,c,d,e){var f=.5*(c-a),g=.5*(d-b),h=e*e,i=e*h;return(2*b-2*c+f+g)*i+(-3*b+3*c-2*f-g)*h+f*e+b},difference:function(a,b){return Math.abs(a-b)},roundAwayFromZero:function(a){return a>0?Math.ceil(a):Math.floor(a)},sinCosGenerator:function(a,b,c,d){void 0===b&&(b=1),void 0===c&&(c=1),void 0===d&&(d=1);for(var e=b,f=c,g=d*Math.PI/a,h=[],i=[],j=0;a>j;j++)f-=e*g,e+=f*g,h[j]=f,i[j]=e;return{sin:i,cos:h,length:a}},distance:function(a,b,c,d){var e=a-c,f=b-d;return Math.sqrt(e*e+f*f)},distanceSq:function(a,b,c,d){var e=a-c,f=b-d;return e*e+f*f},distancePow:function(a,b,c,d,e){return void 0===e&&(e=2),Math.sqrt(Math.pow(c-a,e)+Math.pow(d-b,e))},clamp:function(a,b,c){return b>a?b:a>c?c:a},clampBottom:function(a,b){return b>a?b:a},within:function(a,b,c){return Math.abs(a-b)<=c},mapLinear:function(a,b,c,d,e){return d+(a-b)*(e-d)/(c-b)},smoothstep:function(a,b,c){return a=Math.max(0,Math.min(1,(a-b)/(c-b))),a*a*(3-2*a)},smootherstep:function(a,b,c){return a=Math.max(0,Math.min(1,(a-b)/(c-b))),a*a*a*(a*(6*a-15)+10)},sign:function(a){return 0>a?-1:a>0?1:0},percent:function(a,b,c){return void 0===c&&(c=0),a>b||c>b?1:c>a||c>a?0:(a-c)/b}};var k=Math.PI/180,l=180/Math.PI;return c.Math.degToRad=function(a){return a*k},c.Math.radToDeg=function(a){return a*l},c.RandomDataGenerator=function(a){void 0===a&&(a=[]),this.c=1,this.s0=0,this.s1=0,this.s2=0,"string"==typeof a?this.state(a):this.sow(a)},c.RandomDataGenerator.prototype={rnd:function(){var a=2091639*this.s0+2.3283064365386963e-10*this.c;return this.c=0|a,this.s0=this.s1,this.s1=this.s2,this.s2=a-this.c,this.s2},sow:function(a){if(this.s0=this.hash(" "),this.s1=this.hash(this.s0),this.s2=this.hash(this.s1),this.c=1,a)for(var b=0;b>>0,b-=d,b*=d,d=b>>>0,b-=d,d+=4294967296*b;return 2.3283064365386963e-10*(d>>>0)},integer:function(){return 4294967296*this.rnd.apply(this)},frac:function(){return this.rnd.apply(this)+1.1102230246251565e-16*(2097152*this.rnd.apply(this)|0)},real:function(){return this.integer()+this.frac()},integerInRange:function(a,b){return Math.floor(this.realInRange(0,b-a+1)+a)},between:function(a,b){return this.integerInRange(a,b)},realInRange:function(a,b){return this.frac()*(b-a)+a},normal:function(){return 1-2*this.frac()},uuid:function(){var a="",b="";for(b=a="";a++<36;b+=~a%5|3*a&4?(15^a?8^this.frac()*(20^a?16:4):4).toString(16):"-");return b},pick:function(a){return a[this.integerInRange(0,a.length-1)]},sign:function(){return this.pick([-1,1])},weightedPick:function(a){return a[~~(Math.pow(this.frac(),2)*(a.length-1)+.5)]},timestamp:function(a,b){return this.realInRange(a||9466848e5,b||1577862e6)},angle:function(){return this.integerInRange(-180,180)},state:function(a){return"string"==typeof a&&a.match(/^!rnd/)&&(a=a.split(","),this.c=parseFloat(a[1]),this.s0=parseFloat(a[2]),this.s1=parseFloat(a[3]),this.s2=parseFloat(a[4])),["!rnd",this.c,this.s0,this.s1,this.s2].join(",")}},c.RandomDataGenerator.prototype.constructor=c.RandomDataGenerator,c.QuadTree=function(a,b,c,d,e,f,g){this.maxObjects=10,this.maxLevels=4,this.level=0,this.bounds={},this.objects=[],this.nodes=[],this._empty=[],this.reset(a,b,c,d,e,f,g)},c.QuadTree.prototype={reset:function(a,b,c,d,e,f,g){this.maxObjects=e||10,this.maxLevels=f||4,this.level=g||0,this.bounds={x:Math.round(a),y:Math.round(b),width:c,height:d,subWidth:Math.floor(c/2),subHeight:Math.floor(d/2),right:Math.round(a)+Math.floor(c/2),bottom:Math.round(b)+Math.floor(d/2)},this.objects.length=0,this.nodes.length=0},populate:function(a){a.forEach(this.populateHandler,this,!0)},populateHandler:function(a){a.body&&a.exists&&this.insert(a.body)},split:function(){this.nodes[0]=new c.QuadTree(this.bounds.right,this.bounds.y,this.bounds.subWidth,this.bounds.subHeight,this.maxObjects,this.maxLevels,this.level+1),this.nodes[1]=new c.QuadTree(this.bounds.x,this.bounds.y,this.bounds.subWidth,this.bounds.subHeight,this.maxObjects,this.maxLevels,this.level+1),this.nodes[2]=new c.QuadTree(this.bounds.x,this.bounds.bottom,this.bounds.subWidth,this.bounds.subHeight,this.maxObjects,this.maxLevels,this.level+1),this.nodes[3]=new c.QuadTree(this.bounds.right,this.bounds.bottom,this.bounds.subWidth,this.bounds.subHeight,this.maxObjects,this.maxLevels,this.level+1)},insert:function(a){var b,c=0;if(null!=this.nodes[0]&&(b=this.getIndex(a),-1!==b))return void this.nodes[b].insert(a);if(this.objects.push(a),this.objects.length>this.maxObjects&&this.levelthis.bounds.bottom&&(b=2):a.x>this.bounds.right&&(a.ythis.bounds.bottom&&(b=3)),b},retrieve:function(a){if(a instanceof c.Rectangle)var b=this.objects,d=this.getIndex(a);else{if(!a.body)return this._empty;var b=this.objects,d=this.getIndex(a.body)}return this.nodes[0]&&(-1!==d?b=b.concat(this.nodes[d].retrieve(a)):(b=b.concat(this.nodes[0].retrieve(a)),b=b.concat(this.nodes[1].retrieve(a)),b=b.concat(this.nodes[2].retrieve(a)),b=b.concat(this.nodes[3].retrieve(a)))),b},clear:function(){this.objects.length=0;for(var a=this.nodes.length;a--;)this.nodes[a].clear(),this.nodes.splice(a,1);this.nodes.length=0}},c.QuadTree.prototype.constructor=c.QuadTree,c.Net=function(a){this.game=a},c.Net.prototype={getHostName:function(){return window.location&&window.location.hostname?window.location.hostname:null},checkDomainName:function(a){return-1!==window.location.hostname.indexOf(a)},updateQueryString:function(a,b,c,d){void 0===c&&(c=!1),void 0!==d&&""!==d||(d=window.location.href);var e="",f=new RegExp("([?|&])"+a+"=.*?(&|#|$)(.*)","gi");if(f.test(d))e="undefined"!=typeof b&&null!==b?d.replace(f,"$1"+a+"="+b+"$2$3"):d.replace(f,"$1$3").replace(/(&|\?)$/,"");else if("undefined"!=typeof b&&null!==b){var g=-1!==d.indexOf("?")?"&":"?",h=d.split("#");d=h[0]+g+a+"="+b,h[1]&&(d+="#"+h[1]),e=d}else e=d;return c?void(window.location.href=e):e},getQueryString:function(a){void 0===a&&(a="");var b={},c=location.search.substring(1).split("&");for(var d in c){var e=c[d].split("=");if(e.length>1){if(a&&a==this.decodeURI(e[0]))return this.decodeURI(e[1]);b[this.decodeURI(e[0])]=this.decodeURI(e[1])}}return b},decodeURI:function(a){return decodeURIComponent(a.replace(/\+/g," "))}},c.Net.prototype.constructor=c.Net,c.TweenManager=function(a){this.game=a,this.frameBased=!1,this._tweens=[],this._add=[],this.easeMap={Power0:c.Easing.Power0,Power1:c.Easing.Power1,Power2:c.Easing.Power2,Power3:c.Easing.Power3,Power4:c.Easing.Power4,Linear:c.Easing.Linear.None,Quad:c.Easing.Quadratic.Out,Cubic:c.Easing.Cubic.Out,Quart:c.Easing.Quartic.Out,Quint:c.Easing.Quintic.Out,Sine:c.Easing.Sinusoidal.Out,Expo:c.Easing.Exponential.Out,Circ:c.Easing.Circular.Out,Elastic:c.Easing.Elastic.Out,Back:c.Easing.Back.Out,Bounce:c.Easing.Bounce.Out,"Quad.easeIn":c.Easing.Quadratic.In,"Cubic.easeIn":c.Easing.Cubic.In,"Quart.easeIn":c.Easing.Quartic.In,"Quint.easeIn":c.Easing.Quintic.In,"Sine.easeIn":c.Easing.Sinusoidal.In,"Expo.easeIn":c.Easing.Exponential.In,"Circ.easeIn":c.Easing.Circular.In,"Elastic.easeIn":c.Easing.Elastic.In,"Back.easeIn":c.Easing.Back.In,"Bounce.easeIn":c.Easing.Bounce.In,"Quad.easeOut":c.Easing.Quadratic.Out,"Cubic.easeOut":c.Easing.Cubic.Out,"Quart.easeOut":c.Easing.Quartic.Out,"Quint.easeOut":c.Easing.Quintic.Out,"Sine.easeOut":c.Easing.Sinusoidal.Out,"Expo.easeOut":c.Easing.Exponential.Out,"Circ.easeOut":c.Easing.Circular.Out,"Elastic.easeOut":c.Easing.Elastic.Out,"Back.easeOut":c.Easing.Back.Out,"Bounce.easeOut":c.Easing.Bounce.Out,"Quad.easeInOut":c.Easing.Quadratic.InOut,"Cubic.easeInOut":c.Easing.Cubic.InOut,"Quart.easeInOut":c.Easing.Quartic.InOut,"Quint.easeInOut":c.Easing.Quintic.InOut,"Sine.easeInOut":c.Easing.Sinusoidal.InOut,"Expo.easeInOut":c.Easing.Exponential.InOut,"Circ.easeInOut":c.Easing.Circular.InOut,"Elastic.easeInOut":c.Easing.Elastic.InOut,"Back.easeInOut":c.Easing.Back.InOut,"Bounce.easeInOut":c.Easing.Bounce.InOut},this.game.onPause.add(this._pauseAll,this),this.game.onResume.add(this._resumeAll,this)},c.TweenManager.prototype={getAll:function(){return this._tweens},removeAll:function(){for(var a=0;ad;d++)this.removeFrom(a[d]);else if(a.type===c.GROUP&&b)for(var d=0,e=a.children.length;e>d;d++)this.removeFrom(a.children[d]);else{for(d=0,e=this._tweens.length;e>d;d++)a===this._tweens[d].target&&this.remove(this._tweens[d]);for(d=0,e=this._add.length;e>d;d++)a===this._add[d].target&&this.remove(this._add[d])}},add:function(a){a._manager=this,this._add.push(a)},create:function(a){return new c.Tween(a,this.game,this)},remove:function(a){var b=this._tweens.indexOf(a);-1!==b?this._tweens[b].pendingDelete=!0:(b=this._add.indexOf(a),-1!==b&&(this._add[b].pendingDelete=!0))},update:function(){var a=this._add.length,b=this._tweens.length;if(0===b&&0===a)return!1;for(var c=0;b>c;)this._tweens[c].update(this.game.time.time)?c++:(this._tweens.splice(c,1),b--);return a>0&&(this._tweens=this._tweens.concat(this._add),this._add.length=0),!0},isTweening:function(a){return this._tweens.some(function(b){return b.target===a})},_pauseAll:function(){for(var a=this._tweens.length-1;a>=0;a--)this._tweens[a]._pause()},_resumeAll:function(){for(var a=this._tweens.length-1;a>=0;a--)this._tweens[a]._resume()},pauseAll:function(){for(var a=this._tweens.length-1;a>=0;a--)this._tweens[a].pause()},resumeAll:function(){for(var a=this._tweens.length-1;a>=0;a--)this._tweens[a].resume(!0)}},c.TweenManager.prototype.constructor=c.TweenManager,c.Tween=function(a,b,d){this.game=b,this.target=a,this.manager=d,this.timeline=[],this.reverse=!1,this.timeScale=1,this.repeatCounter=0,this.pendingDelete=!1,this.onStart=new c.Signal,this.onLoop=new c.Signal,this.onRepeat=new c.Signal,this.onChildComplete=new c.Signal,this.onComplete=new c.Signal,this.isRunning=!1,this.current=0,this.properties={},this.chainedTween=null,this.isPaused=!1,this.frameBased=d.frameBased,this._onUpdateCallback=null,this._onUpdateCallbackContext=null,this._pausedTime=0,this._codePaused=!1,this._hasStarted=!1},c.Tween.prototype={to:function(a,b,d,e,f,g,h){return(void 0===b||0>=b)&&(b=1e3),void 0!==d&&null!==d||(d=c.Easing.Default),void 0===e&&(e=!1),void 0===f&&(f=0),void 0===g&&(g=0),void 0===h&&(h=!1),"string"==typeof d&&this.manager.easeMap[d]&&(d=this.manager.easeMap[d]),this.isRunning?(console.warn("Phaser.Tween.to cannot be called after Tween.start"),this):(this.timeline.push(new c.TweenData(this).to(a,b,d,f,g,h)),e&&this.start(),this)},from:function(a,b,d,e,f,g,h){return void 0===b&&(b=1e3),void 0!==d&&null!==d||(d=c.Easing.Default),void 0===e&&(e=!1),void 0===f&&(f=0),void 0===g&&(g=0),void 0===h&&(h=!1),"string"==typeof d&&this.manager.easeMap[d]&&(d=this.manager.easeMap[d]),this.isRunning?(console.warn("Phaser.Tween.from cannot be called after Tween.start"),this):(this.timeline.push(new c.TweenData(this).from(a,b,d,f,g,h)),e&&this.start(),this)},start:function(a){if(void 0===a&&(a=0),null===this.game||null===this.target||0===this.timeline.length||this.isRunning)return this;for(var b=0;ba||a>this.timeline.length-1)&&(a=0),this.current=a,this.timeline[this.current].start(),this},stop:function(a){return void 0===a&&(a=!1),this.isRunning=!1,this._onUpdateCallback=null,this._onUpdateCallbackContext=null,a&&(this.onComplete.dispatch(this.target,this),this._hasStarted=!1,this.chainedTween&&this.chainedTween.start()),this.manager.remove(this),this},updateTweenData:function(a,b,c){if(0===this.timeline.length)return this;if(void 0===c&&(c=0),-1===c)for(var d=0;d0?arguments[a-1].chainedTween=arguments[a]:this.chainedTween=arguments[a];return this},loop:function(a){return void 0===a&&(a=!0),this.repeatCounter=a?-1:0,this},onUpdateCallback:function(a,b){return this._onUpdateCallback=a,this._onUpdateCallbackContext=b,this},pause:function(){this.isPaused=!0,this._codePaused=!0,this._pausedTime=this.game.time.time},_pause:function(){this._codePaused||(this.isPaused=!0,this._pausedTime=this.game.time.time)},resume:function(){if(this.isPaused){this.isPaused=!1,this._codePaused=!1;for(var a=0;a0?(this.repeatCounter--,this.timeline[this.current].start(),this.onRepeat.dispatch(this.target,this),!0):(this.isRunning=!1,this.onComplete.dispatch(this.target,this),this._hasStarted=!1,this.chainedTween&&this.chainedTween.start(),!1):(this.onChildComplete.dispatch(this.target,this),this.timeline[this.current].start(),!0)}},generateData:function(a,b){if(null===this.game||null===this.target)return null;void 0===a&&(a=60),void 0===b&&(b=[]);for(var c=0;c0?this.isRunning=!1:this.isRunning=!0,this.isFrom)for(var a in this.vStartCache)this.vStart[a]=this.vEndCache[a],this.vEnd[a]=this.vStartCache[a],this.parent.target[a]=this.vStart[a];return this.value=0,this.yoyoCounter=0,this.repeatCounter=this.repeatTotal,this},loadValues:function(){for(var a in this.parent.properties){if(this.vStart[a]=this.parent.properties[a],Array.isArray(this.vEnd[a])){if(0===this.vEnd[a].length)continue;0===this.percent&&(this.vEnd[a]=[this.vStart[a]].concat(this.vEnd[a]))}"undefined"!=typeof this.vEnd[a]?("string"==typeof this.vEnd[a]&&(this.vEnd[a]=this.vStart[a]+parseFloat(this.vEnd[a],10)),this.parent.properties[a]=this.vEnd[a]):this.vEnd[a]=this.vStart[a],this.vStartCache[a]=this.vStart[a],this.vEndCache[a]=this.vEnd[a]}return this},update:function(a){if(this.isRunning){if(a=this.startTime))return c.TweenData.PENDING;this.isRunning=!0}var b=this.parent.frameBased?this.game.time.physicsElapsedMS:this.game.time.elapsedMS;this.parent.reverse?(this.dt-=b*this.parent.timeScale,this.dt=Math.max(this.dt,0)):(this.dt+=b*this.parent.timeScale,this.dt=Math.min(this.dt,this.duration)),this.percent=this.dt/this.duration,this.value=this.easingFunction(this.percent);for(var d in this.vEnd){var e=this.vStart[d],f=this.vEnd[d];Array.isArray(f)?this.parent.target[d]=this.interpolationFunction.call(this.interpolationContext,f,this.value):this.parent.target[d]=e+(f-e)*this.value}return!this.parent.reverse&&1===this.percent||this.parent.reverse&&0===this.percent?this.repeat():c.TweenData.RUNNING},generateData:function(a){this.parent.reverse?this.dt=this.duration:this.dt=0;var b=[],c=!1,d=1/a*1e3;do{this.parent.reverse?(this.dt-=d,this.dt=Math.max(this.dt,0)):(this.dt+=d, +this.dt=Math.min(this.dt,this.duration)),this.percent=this.dt/this.duration,this.value=this.easingFunction(this.percent);var e={};for(var f in this.vEnd){var g=this.vStart[f],h=this.vEnd[f];Array.isArray(h)?e[f]=this.interpolationFunction(h,this.value):e[f]=g+(h-g)*this.value}b.push(e),(!this.parent.reverse&&1===this.percent||this.parent.reverse&&0===this.percent)&&(c=!0)}while(!c);if(this.yoyo){var i=b.slice();i.reverse(),b=b.concat(i)}return b},repeat:function(){if(this.yoyo){if(this.inReverse&&0===this.repeatCounter){for(var a in this.vStartCache)this.vStart[a]=this.vStartCache[a],this.vEnd[a]=this.vEndCache[a];return this.inReverse=!1,c.TweenData.COMPLETE}this.inReverse=!this.inReverse}else if(0===this.repeatCounter)return c.TweenData.COMPLETE;if(this.inReverse)for(var a in this.vStartCache)this.vStart[a]=this.vEndCache[a],this.vEnd[a]=this.vStartCache[a];else{for(var a in this.vStartCache)this.vStart[a]=this.vStartCache[a],this.vEnd[a]=this.vEndCache[a];this.repeatCounter>0&&this.repeatCounter--}return this.startTime=this.game.time.time,this.yoyo&&this.inReverse?this.startTime+=this.yoyoDelay:this.inReverse||(this.startTime+=this.repeatDelay),this.parent.reverse?this.dt=this.duration:this.dt=0,c.TweenData.LOOPED}},c.TweenData.prototype.constructor=c.TweenData,c.Easing={Linear:{None:function(a){return a}},Quadratic:{In:function(a){return a*a},Out:function(a){return a*(2-a)},InOut:function(a){return(a*=2)<1?.5*a*a:-.5*(--a*(a-2)-1)}},Cubic:{In:function(a){return a*a*a},Out:function(a){return--a*a*a+1},InOut:function(a){return(a*=2)<1?.5*a*a*a:.5*((a-=2)*a*a+2)}},Quartic:{In:function(a){return a*a*a*a},Out:function(a){return 1- --a*a*a*a},InOut:function(a){return(a*=2)<1?.5*a*a*a*a:-.5*((a-=2)*a*a*a-2)}},Quintic:{In:function(a){return a*a*a*a*a},Out:function(a){return--a*a*a*a*a+1},InOut:function(a){return(a*=2)<1?.5*a*a*a*a*a:.5*((a-=2)*a*a*a*a+2)}},Sinusoidal:{In:function(a){return 0===a?0:1===a?1:1-Math.cos(a*Math.PI/2)},Out:function(a){return 0===a?0:1===a?1:Math.sin(a*Math.PI/2)},InOut:function(a){return 0===a?0:1===a?1:.5*(1-Math.cos(Math.PI*a))}},Exponential:{In:function(a){return 0===a?0:Math.pow(1024,a-1)},Out:function(a){return 1===a?1:1-Math.pow(2,-10*a)},InOut:function(a){return 0===a?0:1===a?1:(a*=2)<1?.5*Math.pow(1024,a-1):.5*(-Math.pow(2,-10*(a-1))+2)}},Circular:{In:function(a){return 1-Math.sqrt(1-a*a)},Out:function(a){return Math.sqrt(1- --a*a)},InOut:function(a){return(a*=2)<1?-.5*(Math.sqrt(1-a*a)-1):.5*(Math.sqrt(1-(a-=2)*a)+1)}},Elastic:{In:function(a){var b,c=.1,d=.4;return 0===a?0:1===a?1:(!c||1>c?(c=1,b=d/4):b=d*Math.asin(1/c)/(2*Math.PI),-(c*Math.pow(2,10*(a-=1))*Math.sin((a-b)*(2*Math.PI)/d)))},Out:function(a){var b,c=.1,d=.4;return 0===a?0:1===a?1:(!c||1>c?(c=1,b=d/4):b=d*Math.asin(1/c)/(2*Math.PI),c*Math.pow(2,-10*a)*Math.sin((a-b)*(2*Math.PI)/d)+1)},InOut:function(a){var b,c=.1,d=.4;return 0===a?0:1===a?1:(!c||1>c?(c=1,b=d/4):b=d*Math.asin(1/c)/(2*Math.PI),(a*=2)<1?-.5*(c*Math.pow(2,10*(a-=1))*Math.sin((a-b)*(2*Math.PI)/d)):c*Math.pow(2,-10*(a-=1))*Math.sin((a-b)*(2*Math.PI)/d)*.5+1)}},Back:{In:function(a){var b=1.70158;return a*a*((b+1)*a-b)},Out:function(a){var b=1.70158;return--a*a*((b+1)*a+b)+1},InOut:function(a){var b=2.5949095;return(a*=2)<1?.5*(a*a*((b+1)*a-b)):.5*((a-=2)*a*((b+1)*a+b)+2)}},Bounce:{In:function(a){return 1-c.Easing.Bounce.Out(1-a)},Out:function(a){return 1/2.75>a?7.5625*a*a:2/2.75>a?7.5625*(a-=1.5/2.75)*a+.75:2.5/2.75>a?7.5625*(a-=2.25/2.75)*a+.9375:7.5625*(a-=2.625/2.75)*a+.984375},InOut:function(a){return.5>a?.5*c.Easing.Bounce.In(2*a):.5*c.Easing.Bounce.Out(2*a-1)+.5}}},c.Easing.Default=c.Easing.Linear.None,c.Easing.Power0=c.Easing.Linear.None,c.Easing.Power1=c.Easing.Quadratic.Out,c.Easing.Power2=c.Easing.Cubic.Out,c.Easing.Power3=c.Easing.Quartic.Out,c.Easing.Power4=c.Easing.Quintic.Out,c.Time=function(a){this.game=a,this.time=0,this.prevTime=0,this.now=0,this.elapsed=0,this.elapsedMS=0,this.physicsElapsed=1/60,this.physicsElapsedMS=1/60*1e3,this.desiredFpsMult=1/60,this._desiredFps=60,this.suggestedFps=this.desiredFps,this.slowMotion=1,this.advancedTiming=!1,this.frames=0,this.fps=0,this.fpsMin=1e3,this.fpsMax=0,this.msMin=1e3,this.msMax=0,this.pauseDuration=0,this.timeToCall=0,this.timeExpected=0,this.events=new c.Timer(this.game,!1),this._frameCount=0,this._elapsedAccumulator=0,this._started=0,this._timeLastSecond=0,this._pauseStarted=0,this._justResumed=!1,this._timers=[]},c.Time.prototype={boot:function(){this._started=Date.now(),this.time=Date.now(),this.events.start(),this.timeExpected=this.time},add:function(a){return this._timers.push(a),a},create:function(a){void 0===a&&(a=!0);var b=new c.Timer(this.game,a);return this._timers.push(b),b},removeAll:function(){for(var a=0;aa;)this._timers[a].update(this.time)?a++:(this._timers.splice(a,1),b--)},updateAdvancedTiming:function(){this._frameCount++,this._elapsedAccumulator+=this.elapsed,this._frameCount>=2*this._desiredFps&&(this.suggestedFps=5*Math.floor(200/(this._elapsedAccumulator/this._frameCount)),this._frameCount=0,this._elapsedAccumulator=0),this.msMin=Math.min(this.msMin,this.elapsed),this.msMax=Math.max(this.msMax,this.elapsed),this.frames++,this.now>this._timeLastSecond+1e3&&(this.fps=Math.round(1e3*this.frames/(this.now-this._timeLastSecond)),this.fpsMin=Math.min(this.fpsMin,this.fps),this.fpsMax=Math.max(this.fpsMax,this.fps),this._timeLastSecond=this.now,this.frames=0)},gamePaused:function(){this._pauseStarted=Date.now(),this.events.pause();for(var a=this._timers.length;a--;)this._timers[a]._pause()},gameResumed:function(){this.time=Date.now(),this.pauseDuration=this.time-this._pauseStarted,this.events.resume();for(var a=this._timers.length;a--;)this._timers[a]._resume()},totalElapsedSeconds:function(){return.001*(this.time-this._started)},elapsedSince:function(a){return this.time-a},elapsedSecondsSince:function(a){return.001*(this.time-a)},reset:function(){this._started=this.time,this.removeAll()}},Object.defineProperty(c.Time.prototype,"desiredFps",{get:function(){return this._desiredFps},set:function(a){this._desiredFps=a,this.physicsElapsed=1/a,this.physicsElapsedMS=1e3*this.physicsElapsed,this.desiredFpsMult=1/a}}),c.Time.prototype.constructor=c.Time,c.Timer=function(a,b){void 0===b&&(b=!0),this.game=a,this.running=!1,this.autoDestroy=b,this.expired=!1,this.elapsed=0,this.events=[],this.onComplete=new c.Signal,this.nextTick=0,this.timeCap=1e3,this.paused=!1,this._codePaused=!1,this._started=0,this._pauseStarted=0,this._pauseTotal=0,this._now=Date.now(),this._len=0,this._marked=0,this._i=0,this._diff=0,this._newTick=0},c.Timer.MINUTE=6e4,c.Timer.SECOND=1e3,c.Timer.HALF=500,c.Timer.QUARTER=250,c.Timer.prototype={create:function(a,b,d,e,f,g){a=Math.round(a);var h=a;h+=0===this._now?this.game.time.time:this._now;var i=new c.TimerEvent(this,a,h,d,b,e,f,g);return this.events.push(i),this.order(),this.expired=!1,i},add:function(a,b,c){return this.create(a,!1,0,b,c,Array.prototype.slice.call(arguments,3))},repeat:function(a,b,c,d){return this.create(a,!1,b,c,d,Array.prototype.slice.call(arguments,4))},loop:function(a,b,c){return this.create(a,!0,0,b,c,Array.prototype.slice.call(arguments,3))},start:function(a){if(!this.running){this._started=this.game.time.time+(a||0),this.running=!0;for(var b=0;b0&&(this.events.sort(this.sortHandler),this.nextTick=this.events[0].tick)},sortHandler:function(a,b){return a.tickb.tick?1:0},clearPendingEvents:function(){for(this._i=this.events.length;this._i--;)this.events[this._i].pendingDelete&&this.events.splice(this._i,1);this._len=this.events.length,this._i=0},update:function(a){if(this.paused)return!0;if(this.elapsed=a-this._now,this._now=a,this.elapsed>this.timeCap&&this.adjustEvents(a-this.elapsed),this._marked=0,this.clearPendingEvents(),this.running&&this._now>=this.nextTick&&this._len>0){for(;this._i=this.events[this._i].tick&&!this.events[this._i].pendingDelete;)this._newTick=this._now+this.events[this._i].delay-(this._now-this.events[this._i].tick),this._newTick<0&&(this._newTick=this._now+this.events[this._i].delay),this.events[this._i].loop===!0?(this.events[this._i].tick=this._newTick,this.events[this._i].callback.apply(this.events[this._i].callbackContext,this.events[this._i].args)):this.events[this._i].repeatCount>0?(this.events[this._i].repeatCount--,this.events[this._i].tick=this._newTick,this.events[this._i].callback.apply(this.events[this._i].callbackContext,this.events[this._i].args)):(this._marked++,this.events[this._i].pendingDelete=!0,this.events[this._i].callback.apply(this.events[this._i].callbackContext,this.events[this._i].args)),this._i++;this.events.length>this._marked?this.order():(this.expired=!0,this.onComplete.dispatch(this))}return!this.expired||!this.autoDestroy},pause:function(){this.running&&(this._codePaused=!0,this.paused||(this._pauseStarted=this.game.time.time,this.paused=!0))},_pause:function(){!this.paused&&this.running&&(this._pauseStarted=this.game.time.time,this.paused=!0)},adjustEvents:function(a){for(var b=0;bc&&(c=0),this.events[b].tick=this._now+c}var d=this.nextTick-a;0>d?this.nextTick=this._now:this.nextTick=this._now+d},resume:function(){if(this.paused){var a=this.game.time.time;this._pauseTotal+=a-this._now,this._now=a,this.adjustEvents(this._pauseStarted),this.paused=!1,this._codePaused=!1}},_resume:function(){this._codePaused||this.resume()},removeAll:function(){this.onComplete.removeAll(),this.events.length=0,this._len=0,this._i=0},destroy:function(){this.onComplete.removeAll(),this.running=!1,this.events=[],this._len=0,this._i=0}},Object.defineProperty(c.Timer.prototype,"next",{get:function(){return this.nextTick}}),Object.defineProperty(c.Timer.prototype,"duration",{get:function(){return this.running&&this.nextTick>this._now?this.nextTick-this._now:0}}),Object.defineProperty(c.Timer.prototype,"length",{get:function(){return this.events.length}}),Object.defineProperty(c.Timer.prototype,"ms",{get:function(){return this.running?this._now-this._started-this._pauseTotal:0}}),Object.defineProperty(c.Timer.prototype,"seconds",{get:function(){return this.running?.001*this.ms:0}}),c.Timer.prototype.constructor=c.Timer,c.TimerEvent=function(a,b,c,d,e,f,g,h){this.timer=a,this.delay=b,this.tick=c,this.repeatCount=d-1,this.loop=e,this.callback=f,this.callbackContext=g,this.args=h,this.pendingDelete=!1},c.TimerEvent.prototype.constructor=c.TimerEvent,c.AnimationManager=function(a){this.sprite=a,this.game=a.game,this.currentFrame=null,this.currentAnim=null,this.updateIfVisible=!0,this.isLoaded=!1,this._frameData=null,this._anims={},this._outputFrames=[]},c.AnimationManager.prototype={loadFrameData:function(a,b){if(void 0===a)return!1;if(this.isLoaded)for(var c in this._anims)this._anims[c].updateFrameData(a);return this._frameData=a,void 0===b||null===b?this.frame=0:"string"==typeof b?this.frameName=b:this.frame=b,this.isLoaded=!0,!0},copyFrameData:function(a,b){if(this._frameData=a.clone(),this.isLoaded)for(var c in this._anims)this._anims[c].updateFrameData(this._frameData);return void 0===b||null===b?this.frame=0:"string"==typeof b?this.frameName=b:this.frame=b,this.isLoaded=!0,!0},add:function(a,b,d,e,f){return b=b||[],d=d||60,void 0===e&&(e=!1),void 0===f&&(f=!(!b||"number"!=typeof b[0])),this._outputFrames=[],this._frameData.getFrameIndexes(b,f,this._outputFrames),this._anims[a]=new c.Animation(this.game,this.sprite,a,this._frameData,this._outputFrames,d,e),this.currentAnim=this._anims[a],this.sprite.tilingTexture&&(this.sprite.refreshTexture=!0),this._anims[a]},validateFrames:function(a,b){void 0===b&&(b=!0);for(var c=0;cthis._frameData.total)return!1}else if(this._frameData.checkFrameName(a[c])===!1)return!1;return!0},play:function(a,b,c,d){return this._anims[a]?this.currentAnim===this._anims[a]?this.currentAnim.isPlaying===!1?(this.currentAnim.paused=!1,this.currentAnim.play(b,c,d)):this.currentAnim:(this.currentAnim&&this.currentAnim.isPlaying&&this.currentAnim.stop(),this.currentAnim=this._anims[a],this.currentAnim.paused=!1,this.currentFrame=this.currentAnim.currentFrame,this.currentAnim.play(b,c,d)):void 0},stop:function(a,b){void 0===b&&(b=!1),!this.currentAnim||"string"==typeof a&&a!==this.currentAnim.name||this.currentAnim.stop(b)},update:function(){return this.updateIfVisible&&!this.sprite.visible?!1:this.currentAnim&&this.currentAnim.update()?(this.currentFrame=this.currentAnim.currentFrame,!0):!1},next:function(a){this.currentAnim&&(this.currentAnim.next(a),this.currentFrame=this.currentAnim.currentFrame)},previous:function(a){this.currentAnim&&(this.currentAnim.previous(a),this.currentFrame=this.currentAnim.currentFrame)},getAnimation:function(a){return"string"==typeof a&&this._anims[a]?this._anims[a]:null},refreshFrame:function(){},destroy:function(){var a=null;for(var a in this._anims)this._anims.hasOwnProperty(a)&&this._anims[a].destroy();this._anims={},this._outputFrames=[],this._frameData=null,this.currentAnim=null,this.currentFrame=null,this.sprite=null,this.game=null}},c.AnimationManager.prototype.constructor=c.AnimationManager,Object.defineProperty(c.AnimationManager.prototype,"frameData",{get:function(){return this._frameData}}),Object.defineProperty(c.AnimationManager.prototype,"frameTotal",{get:function(){return this._frameData.total}}),Object.defineProperty(c.AnimationManager.prototype,"paused",{get:function(){return this.currentAnim.isPaused},set:function(a){this.currentAnim.paused=a}}),Object.defineProperty(c.AnimationManager.prototype,"name",{get:function(){return this.currentAnim?this.currentAnim.name:void 0}}),Object.defineProperty(c.AnimationManager.prototype,"frame",{get:function(){return this.currentFrame?this.currentFrame.index:void 0},set:function(a){"number"==typeof a&&this._frameData&&null!==this._frameData.getFrame(a)&&(this.currentFrame=this._frameData.getFrame(a),this.currentFrame&&this.sprite.setFrame(this.currentFrame))}}),Object.defineProperty(c.AnimationManager.prototype,"frameName",{get:function(){return this.currentFrame?this.currentFrame.name:void 0},set:function(a){"string"==typeof a&&this._frameData&&null!==this._frameData.getFrameByName(a)?(this.currentFrame=this._frameData.getFrameByName(a),this.currentFrame&&(this._frameIndex=this.currentFrame.index,this.sprite.setFrame(this.currentFrame))):console.warn("Cannot set frameName: "+a)}}),c.Animation=function(a,b,d,e,f,g,h){void 0===h&&(h=!1),this.game=a,this._parent=b,this._frameData=e,this.name=d,this._frames=[],this._frames=this._frames.concat(f),this.delay=1e3/g,this.loop=h,this.loopCount=0,this.killOnComplete=!1,this.isFinished=!1,this.isPlaying=!1,this.isPaused=!1,this._pauseStartTime=0,this._frameIndex=0,this._frameDiff=0,this._frameSkip=1,this.currentFrame=this._frameData.getFrame(this._frames[this._frameIndex]),this.onStart=new c.Signal,this.onUpdate=null,this.onComplete=new c.Signal,this.onLoop=new c.Signal,this.isReversed=!1,this.game.onPause.add(this.onPause,this),this.game.onResume.add(this.onResume,this)},c.Animation.prototype={play:function(a,b,c){return"number"==typeof a&&(this.delay=1e3/a),"boolean"==typeof b&&(this.loop=b),"undefined"!=typeof c&&(this.killOnComplete=c),this.isPlaying=!0,this.isFinished=!1,this.paused=!1,this.loopCount=0,this._timeLastFrame=this.game.time.time,this._timeNextFrame=this.game.time.time+this.delay,this._frameIndex=this.isReversed?this._frames.length-1:0,this.updateCurrentFrame(!1,!0),this._parent.events.onAnimationStart$dispatch(this._parent,this),this.onStart.dispatch(this._parent,this),this._parent.animations.currentAnim=this,this._parent.animations.currentFrame=this.currentFrame,this},restart:function(){this.isPlaying=!0,this.isFinished=!1,this.paused=!1,this.loopCount=0,this._timeLastFrame=this.game.time.time,this._timeNextFrame=this.game.time.time+this.delay,this._frameIndex=0,this.currentFrame=this._frameData.getFrame(this._frames[this._frameIndex]),this._parent.setFrame(this.currentFrame),this._parent.animations.currentAnim=this,this._parent.animations.currentFrame=this.currentFrame,this.onStart.dispatch(this._parent,this)},reverse:function(){return this.reversed=!this.reversed,this},reverseOnce:function(){return this.onComplete.addOnce(this.reverse.bind(this)),this.reverse()},setFrame:function(a,b){var c;if(void 0===b&&(b=!1),"string"==typeof a)for(var d=0;d=this._timeNextFrame?(this._frameSkip=1,this._frameDiff=this.game.time.time-this._timeNextFrame,this._timeLastFrame=this.game.time.time,this._frameDiff>this.delay&&(this._frameSkip=Math.floor(this._frameDiff/this.delay),this._frameDiff-=this._frameSkip*this.delay),this._timeNextFrame=this.game.time.time+(this.delay-this._frameDiff),this.isReversed?this._frameIndex-=this._frameSkip:this._frameIndex+=this._frameSkip,!this.isReversed&&this._frameIndex>=this._frames.length||this.isReversed&&this._frameIndex<=-1?this.loop?(this._frameIndex=Math.abs(this._frameIndex)%this._frames.length,this.isReversed&&(this._frameIndex=this._frames.length-1-this._frameIndex),this.currentFrame=this._frameData.getFrame(this._frames[this._frameIndex]),this.currentFrame&&this._parent.setFrame(this.currentFrame),this.loopCount++,this._parent.events.onAnimationLoop$dispatch(this._parent,this),this.onLoop.dispatch(this._parent,this),this.onUpdate?(this.onUpdate.dispatch(this,this.currentFrame),!!this._frameData):!0):(this.complete(),!1):this.updateCurrentFrame(!0)):!1},updateCurrentFrame:function(a,b){if(void 0===b&&(b=!1),!this._frameData)return!1;var c=this.currentFrame.index;return this.currentFrame=this._frameData.getFrame(this._frames[this._frameIndex]),this.currentFrame&&(b||!b&&c!==this.currentFrame.index)&&this._parent.setFrame(this.currentFrame),this.onUpdate&&a?(this.onUpdate.dispatch(this,this.currentFrame),!!this._frameData):!0},next:function(a){void 0===a&&(a=1);var b=this._frameIndex+a;b>=this._frames.length&&(this.loop?b%=this._frames.length:b=this._frames.length-1),b!==this._frameIndex&&(this._frameIndex=b,this.updateCurrentFrame(!0))},previous:function(a){void 0===a&&(a=1);var b=this._frameIndex-a;0>b&&(this.loop?b=this._frames.length+b:b++),b!==this._frameIndex&&(this._frameIndex=b,this.updateCurrentFrame(!0))},updateFrameData:function(a){this._frameData=a,this.currentFrame=this._frameData?this._frameData.getFrame(this._frames[this._frameIndex%this._frames.length]):null},destroy:function(){this._frameData&&(this.game.onPause.remove(this.onPause,this),this.game.onResume.remove(this.onResume,this),this.game=null,this._parent=null,this._frames=null,this._frameData=null,this.currentFrame=null,this.isPlaying=!1,this.onStart.dispose(),this.onLoop.dispose(),this.onComplete.dispose(),this.onUpdate&&this.onUpdate.dispose())},complete:function(){this._frameIndex=this._frames.length-1,this.currentFrame=this._frameData.getFrame(this._frames[this._frameIndex]),this.isPlaying=!1,this.isFinished=!0,this.paused=!1,this._parent.events.onAnimationComplete$dispatch(this._parent,this),this.onComplete.dispatch(this._parent,this),this.killOnComplete&&this._parent.kill()}},c.Animation.prototype.constructor=c.Animation,Object.defineProperty(c.Animation.prototype,"paused",{get:function(){return this.isPaused},set:function(a){this.isPaused=a,a?this._pauseStartTime=this.game.time.time:this.isPlaying&&(this._timeNextFrame=this.game.time.time+this.delay)}}),Object.defineProperty(c.Animation.prototype,"reversed",{get:function(){return this.isReversed},set:function(a){this.isReversed=a}}),Object.defineProperty(c.Animation.prototype,"frameTotal",{get:function(){return this._frames.length}}),Object.defineProperty(c.Animation.prototype,"frame",{get:function(){return null!==this.currentFrame?this.currentFrame.index:this._frameIndex},set:function(a){this.currentFrame=this._frameData.getFrame(this._frames[a]),null!==this.currentFrame&&(this._frameIndex=a,this._parent.setFrame(this.currentFrame),this.onUpdate&&this.onUpdate.dispatch(this,this.currentFrame))}}),Object.defineProperty(c.Animation.prototype,"speed",{get:function(){return Math.round(1e3/this.delay)},set:function(a){a>=1&&(this.delay=1e3/a)}}),Object.defineProperty(c.Animation.prototype,"enableUpdate",{get:function(){return null!==this.onUpdate},set:function(a){a&&null===this.onUpdate?this.onUpdate=new c.Signal:a||null===this.onUpdate||(this.onUpdate.dispose(),this.onUpdate=null)}}),c.Animation.generateFrameNames=function(a,b,d,e,f){void 0===e&&(e="");var g=[],h="";if(d>b)for(var i=b;d>=i;i++)h="number"==typeof f?c.Utils.pad(i.toString(),f,"0",1):i.toString(),h=a+h+e,g.push(h);else for(var i=b;i>=d;i--)h="number"==typeof f?c.Utils.pad(i.toString(),f,"0",1):i.toString(),h=a+h+e,g.push(h);return g},c.Frame=function(a,b,d,e,f,g){this.index=a,this.x=b,this.y=d,this.width=e,this.height=f,this.name=g,this.centerX=Math.floor(e/2),this.centerY=Math.floor(f/2),this.distance=c.Math.distance(0,0,e,f),this.rotated=!1,this.rotationDirection="cw",this.trimmed=!1,this.sourceSizeW=e,this.sourceSizeH=f,this.spriteSourceSizeX=0,this.spriteSourceSizeY=0,this.spriteSourceSizeW=0,this.spriteSourceSizeH=0,this.right=this.x+this.width,this.bottom=this.y+this.height},c.Frame.prototype={resize:function(a,b){this.width=a,this.height=b,this.centerX=Math.floor(a/2),this.centerY=Math.floor(b/2),this.distance=c.Math.distance(0,0,a,b),this.sourceSizeW=a,this.sourceSizeH=b,this.right=this.x+a,this.bottom=this.y+b},setTrim:function(a,b,c,d,e,f,g){this.trimmed=a,a&&(this.sourceSizeW=b,this.sourceSizeH=c,this.centerX=Math.floor(b/2),this.centerY=Math.floor(c/2),this.spriteSourceSizeX=d,this.spriteSourceSizeY=e,this.spriteSourceSizeW=f,this.spriteSourceSizeH=g)},clone:function(){var a=new c.Frame(this.index,this.x,this.y,this.width,this.height,this.name);for(var b in this)this.hasOwnProperty(b)&&(a[b]=this[b]);return a},getRect:function(a){return void 0===a?a=new c.Rectangle(this.x,this.y,this.width,this.height):a.setTo(this.x,this.y,this.width,this.height),a}},c.Frame.prototype.constructor=c.Frame,c.FrameData=function(){this._frames=[],this._frameNames=[]},c.FrameData.prototype={addFrame:function(a){return a.index=this._frames.length,this._frames.push(a),""!==a.name&&(this._frameNames[a.name]=a.index),a},getFrame:function(a){return a>=this._frames.length&&(a=0),this._frames[a]},getFrameByName:function(a){return"number"==typeof this._frameNames[a]?this._frames[this._frameNames[a]]:null},checkFrameName:function(a){return null!=this._frameNames[a]},clone:function(){for(var a=new c.FrameData,b=0;b=d;d++)c.push(this._frames[d]);return c},getFrames:function(a,b,c){if(void 0===b&&(b=!0),void 0===c&&(c=[]),void 0===a||0===a.length)for(var d=0;d=d&&(d=Math.floor(-j/Math.min(-1,d))),0>=e&&(e=Math.floor(-k/Math.min(-1,e)));var l=Math.floor((j-g)/(d+h)),m=Math.floor((k-g)/(e+h)),n=l*m;if(-1!==f&&(n=f),0===j||0===k||d>j||e>k||0===n)return console.warn("Phaser.AnimationParser.spriteSheet: '"+b+"'s width/height zero or width/height < given frameWidth/frameHeight"),null;for(var o=new c.FrameData,p=g,q=g,r=0;n>r;r++)o.addFrame(new c.Frame(r,p,q,d,e,"")),p+=d+h,p+d>j&&(p=g,q+=e+h);return o},JSONData:function(a,b){if(!b.frames)return console.warn("Phaser.AnimationParser.JSONData: Invalid Texture Atlas JSON given, missing 'frames' array"),void console.log(b);for(var d,e=new c.FrameData,f=b.frames,g=0;g tag");for(var d,e,f,g,h,i,j,k,l,m,n,o=new c.FrameData,p=b.getElementsByTagName("SubTexture"),q=0;q-1},getAssetIndex:function(a,b){for(var c=-1,d=0;d-1?{index:c,file:this._fileList[c]}:!1},reset:function(a,b){void 0===b&&(b=!1),this.resetLocked||(a&&(this.preloadSprite=null),this.isLoading=!1,this._processingHead=0,this._fileList.length=0,this._flightQueue.length=0,this._fileLoadStarted=!1,this._totalFileCount=0,this._totalPackCount=0,this._loadedPackCount=0,this._loadedFileCount=0,b&&(this.onLoadStart.removeAll(),this.onLoadComplete.removeAll(),this.onPackComplete.removeAll(),this.onFileStart.removeAll(),this.onFileComplete.removeAll(),this.onFileError.removeAll()))},addToFileList:function(a,b,c,d,e,f){if(void 0===e&&(e=!1),void 0===b||""===b)return console.warn("Phaser.Loader: Invalid or no key given of type "+a),this;if(void 0===c||null===c){if(!f)return console.warn("Phaser.Loader: No URL given for file type: "+a+" key: "+b),this;c=b+f}var g={type:a,key:b,path:this.path,url:c,syncPoint:this._withSyncPointDepth>0,data:null,loading:!1,loaded:!1,error:!1};if(d)for(var h in d)g[h]=d[h];var i=this.getAssetIndex(a,b);if(e&&i>-1){var j=this._fileList[i];j.loading||j.loaded?(this._fileList.push(g),this._totalFileCount++):this._fileList[i]=g}else-1===i&&(this._fileList.push(g),this._totalFileCount++);return this},replaceInFileList:function(a,b,c,d){return this.addToFileList(a,b,c,d,!0)},pack:function(a,b,c,d){if(void 0===b&&(b=null),void 0===c&&(c=null),void 0===d&&(d=null),!b&&!c)return console.warn("Phaser.Loader.pack - Both url and data are null. One must be set."),this;var e={type:"packfile",key:a,url:b,path:this.path,syncPoint:!0,data:null,loading:!1,loaded:!1,error:!1,callbackContext:d};c&&("string"==typeof c&&(c=JSON.parse(c)),e.data=c||{},e.loaded=!0);for(var f=0;f=e||d&&this._loadedPackCount===this._totalPackCount)break}if(this.updateProgress(),this._processingHead>=this._fileList.length)this.finishedLoading();else if(!this._flightQueue.length){console.warn("Phaser.Loader - aborting: processing queue empty, loading may have stalled");var f=this;setTimeout(function(){f.finishedLoading(!0)},2e3)}},finishedLoading:function(a){this.hasLoaded||(this.hasLoaded=!0,this.isLoading=!1,a||this._fileLoadStarted||(this._fileLoadStarted=!0,this.onLoadStart.dispatch()),this.onLoadComplete.dispatch(),this.game.state.loadComplete(),this.reset())},asyncComplete:function(a,b){void 0===b&&(b=""),a.loaded=!0,a.error=!!b,b&&(a.errorMessage=b,console.warn("Phaser.Loader - "+a.type+"["+a.key+"]: "+b)),this.processLoadQueue()},processPack:function(a){var b=a.data[a.key];if(!b)return void console.warn("Phaser.Loader - "+a.key+": pack has data, but not for pack key");for(var d=0;d=400&&f.status<=599?e.call(g,a,f):d.call(g,a,f)}catch(b){g.hasLoaded?window.console&&console.error(b):g.asyncComplete(a,b.message||"Exception")}},f.onerror=function(){try{return e.call(g,a,f)}catch(b){g.hasLoaded?window.console&&console.error(b):g.asyncComplete(a,b.message||"Exception")}},a.requestObject=f,a.requestUrl=b,f.send()},xhrLoadWithXDR:function(a,b,c,d,e){this._warnedAboutXDomainRequest||this.game.device.ie&&!(this.game.device.ieVersion>=10)||(this._warnedAboutXDomainRequest=!0,console.warn("Phaser.Loader - using XDomainRequest outside of IE 9"));var f=new window.XDomainRequest;f.open("GET",b,!0),f.responseType=c,f.timeout=3e3,e=e||this.fileError;var g=this;f.onerror=function(){try{return e.call(g,a,f)}catch(b){g.asyncComplete(a,b.message||"Exception")}},f.ontimeout=function(){try{return e.call(g,a,f)}catch(b){g.asyncComplete(a,b.message||"Exception")}},f.onprogress=function(){},f.onload=function(){try{return 4==f.readyState&&f.status>=400&&f.status<=599?e.call(g,a,f):d.call(g,a,f)}catch(b){g.asyncComplete(a,b.message||"Exception")}},a.requestObject=f,a.requestUrl=b,setTimeout(function(){f.send()},0)},getVideoURL:function(a){for(var b=0;b=0&&(d=d.substr(0,d.indexOf("?")));var e=d.substr((Math.max(0,d.lastIndexOf("."))||1/0)+1);if(c=e.toLowerCase(),this.game.device.canPlayVideo(c))return a[b]}}return null},getAudioURL:function(a){if(this.game.sound.noAudio)return null;for(var b=0;b=0&&(d=d.substr(0,d.indexOf("?")));var e=d.substr((Math.max(0,d.lastIndexOf("."))||1/0)+1);if(c=e.toLowerCase(),this.game.device.canPlayAudio(c))return a[b]}}return null},fileError:function(a,b,c){var d=a.requestUrl||this.transformUrl(a.url,a),e="error loading asset from URL "+d;!c&&b&&(c=b.status),c&&(e=e+" ("+c+")"),this.asyncComplete(a,e)},fileComplete:function(a,b){var d=!0;switch(a.type){case"packfile":var e=JSON.parse(b.responseText);a.data=e||{};break;case"image":this.cache.addImage(a.key,a.url,a.data);break;case"spritesheet":this.cache.addSpriteSheet(a.key,a.url,a.data,a.frameWidth,a.frameHeight,a.frameMax,a.margin,a.spacing);break;case"textureatlas":if(null==a.atlasURL)this.cache.addTextureAtlas(a.key,a.url,a.data,a.atlasData,a.format);else if(d=!1,a.format==c.Loader.TEXTURE_ATLAS_JSON_ARRAY||a.format==c.Loader.TEXTURE_ATLAS_JSON_HASH||a.format==c.Loader.TEXTURE_ATLAS_JSON_PYXEL)this.xhrLoad(a,this.transformUrl(a.atlasURL,a),"text",this.jsonLoadComplete);else{if(a.format!=c.Loader.TEXTURE_ATLAS_XML_STARLING)throw new Error("Phaser.Loader. Invalid Texture Atlas format: "+a.format);this.xhrLoad(a,this.transformUrl(a.atlasURL,a),"text",this.xmlLoadComplete)}break;case"bitmapfont":a.atlasURL?(d=!1,this.xhrLoad(a,this.transformUrl(a.atlasURL,a),"text",function(a,b){var c;try{c=JSON.parse(b.responseText)}catch(d){}c?(a.atlasType="json",this.jsonLoadComplete(a,b)):(a.atlasType="xml",this.xmlLoadComplete(a,b))})):this.cache.addBitmapFont(a.key,a.url,a.data,a.atlasData,a.atlasType,a.xSpacing,a.ySpacing);break;case"video":if(a.asBlob)try{a.data=b.response}catch(f){throw new Error("Phaser.Loader. Unable to parse video file as Blob: "+a.key)}this.cache.addVideo(a.key,a.url,a.data,a.asBlob);break;case"audio":this.game.sound.usingWebAudio?(a.data=b.response,this.cache.addSound(a.key,a.url,a.data,!0,!1),a.autoDecode&&this.game.sound.decode(a.key)):this.cache.addSound(a.key,a.url,a.data,!1,!0);break;case"text":a.data=b.responseText,this.cache.addText(a.key,a.url,a.data);break;case"shader":a.data=b.responseText,this.cache.addShader(a.key,a.url,a.data);break;case"physics":var e=JSON.parse(b.responseText);this.cache.addPhysicsData(a.key,a.url,e,a.format);break;case"script":a.data=document.createElement("script"),a.data.language="javascript",a.data.type="text/javascript",a.data.defer=!1,a.data.text=b.responseText,document.head.appendChild(a.data),a.callback&&(a.data=a.callback.call(a.callbackContext,a.key,b.responseText));break;case"binary":a.callback?a.data=a.callback.call(a.callbackContext,a.key,b.response):a.data=b.response,this.cache.addBinary(a.key,a.data)}d&&this.asyncComplete(a)},jsonLoadComplete:function(a,b){var c=JSON.parse(b.responseText);"tilemap"===a.type?this.cache.addTilemap(a.key,a.url,c,a.format):"bitmapfont"===a.type?this.cache.addBitmapFont(a.key,a.url,a.data,c,a.atlasType,a.xSpacing,a.ySpacing):"json"===a.type?this.cache.addJSON(a.key,a.url,c):this.cache.addTextureAtlas(a.key,a.url,a.data,c,a.format),this.asyncComplete(a)},csvLoadComplete:function(a,b){var c=b.responseText;this.cache.addTilemap(a.key,a.url,c,a.format),this.asyncComplete(a)},xmlLoadComplete:function(a,b){var c=b.responseText,d=this.parseXml(c);if(!d){var e=b.responseType||b.contentType;return console.warn("Phaser.Loader - "+a.key+": invalid XML ("+e+")"),void this.asyncComplete(a,"invalid XML")}"bitmapfont"===a.type?this.cache.addBitmapFont(a.key,a.url,a.data,d,a.atlasType,a.xSpacing,a.ySpacing):"textureatlas"===a.type?this.cache.addTextureAtlas(a.key,a.url,a.data,d,a.format):"xml"===a.type&&this.cache.addXML(a.key,a.url,d),this.asyncComplete(a)},parseXml:function(a){var b;try{if(window.DOMParser){var c=new DOMParser;b=c.parseFromString(a,"text/xml")}else b=new ActiveXObject("Microsoft.XMLDOM"),b.async="false",b.loadXML(a)}catch(d){b=null}return b&&b.documentElement&&!b.getElementsByTagName("parsererror").length?b:null},updateProgress:function(){this.preloadSprite&&(0===this.preloadSprite.direction?this.preloadSprite.rect.width=Math.floor(this.preloadSprite.width/100*this.progress):this.preloadSprite.rect.height=Math.floor(this.preloadSprite.height/100*this.progress),this.preloadSprite.sprite?this.preloadSprite.sprite.updateCrop():this.preloadSprite=null)},totalLoadedFiles:function(){return this._loadedFileCount},totalQueuedFiles:function(){return this._totalFileCount-this._loadedFileCount},totalLoadedPacks:function(){return this._totalPackCount},totalQueuedPacks:function(){return this._totalPackCount-this._loadedPackCount}},Object.defineProperty(c.Loader.prototype,"progressFloat",{get:function(){var a=this._loadedFileCount/this._totalFileCount*100;return c.Math.clamp(a||0,0,100)}}),Object.defineProperty(c.Loader.prototype,"progress",{get:function(){return Math.round(this.progressFloat)}}),c.Loader.prototype.constructor=c.Loader,c.LoaderParser={bitmapFont:function(a,b,c,d){return this.xmlBitmapFont(a,b,c,d)},xmlBitmapFont:function(a,b,c,d){var e={},f=a.getElementsByTagName("info")[0],g=a.getElementsByTagName("common")[0];e.font=f.getAttribute("face"),e.size=parseInt(f.getAttribute("size"),10),e.lineHeight=parseInt(g.getAttribute("lineHeight"),10)+d,e.chars={};for(var h=a.getElementsByTagName("char"),i=0;i=this.durationMS&&(this.usingWebAudio?this.loop?(this.onLoop.dispatch(this),this.isPlaying=!1,""===this.currentMarker?(this.currentTime=0,this.startTime=this.game.time.time,this.isPlaying=!0):(this.onMarkerComplete.dispatch(this.currentMarker,this),this.play(this.currentMarker,0,this.volume,!0,!0))):""!==this.currentMarker&&this.stop():this.loop?(this.onLoop.dispatch(this),""===this.currentMarker&&(this.currentTime=0,this.startTime=this.game.time.time),this.isPlaying=!1,this.play(this.currentMarker,0,this.volume,!0,!0)):this.stop())))):void this.destroy()},loopFull:function(a){this.play(null,0,a,!0)},play:function(a,b,c,d,e){if(void 0!==a&&a!==!1&&null!==a||(a=""),void 0===e&&(e=!0),this.isPlaying&&!this.allowMultiple&&!e&&!this.override)return this;if(this._sound&&this.isPlaying&&!this.allowMultiple&&(this.override||e))if(this.usingWebAudio){if(void 0===this._sound.stop)this._sound.noteOff(0);else try{this._sound.stop(0)}catch(f){}this.externalNode?this._sound.disconnect(this.externalNode):this.gainNode&&this._sound.disconnect(this.gainNode)}else this.usingAudioTag&&(this._sound.pause(),this._sound.currentTime=0);if(""===a&&Object.keys(this.markers).length>0)return this;if(""!==a){if(this.currentMarker=a,!this.markers[a])return this;this.position=this.markers[a].start,this.volume=this.markers[a].volume,this.loop=this.markers[a].loop,this.duration=this.markers[a].duration,this.durationMS=this.markers[a].durationMS,"undefined"!=typeof c&&(this.volume=c),"undefined"!=typeof d&&(this.loop=d),this._tempMarker=a,this._tempPosition=this.position,this._tempVolume=this.volume,this._tempLoop=this.loop}else b=b||0,void 0===c&&(c=this._volume),void 0===d&&(d=this.loop),this.position=Math.max(0,b),this.volume=c,this.loop=d,this.duration=0,this.durationMS=0,this._tempMarker=a,this._tempPosition=b,this._tempVolume=c,this._tempLoop=d;return this.usingWebAudio?this.game.cache.isSoundDecoded(this.key)?(this._sound=this.context.createBufferSource(),this.externalNode?this._sound.connect(this.externalNode):this._sound.connect(this.gainNode),this._buffer=this.game.cache.getSoundData(this.key),this._sound.buffer=this._buffer,this.loop&&""===a&&(this._sound.loop=!0),this.loop||""!==a||(this._sound.onended=this.onEndedHandler.bind(this)),this.totalDuration=this._sound.buffer.duration,0===this.duration&&(this.duration=this.totalDuration,this.durationMS=Math.ceil(1e3*this.totalDuration)),void 0===this._sound.start?this._sound.noteGrainOn(0,this.position,this.duration):this.loop&&""===a?this._sound.start(0,0):this._sound.start(0,this.position,this.duration),this.isPlaying=!0,this.startTime=this.game.time.time,this.currentTime=0,this.stopTime=this.startTime+this.durationMS,this.onPlay.dispatch(this)):(this.pendingPlayback=!0,this.game.cache.getSound(this.key)&&this.game.cache.getSound(this.key).isDecoding===!1&&this.game.sound.decode(this.key,this)):this.game.cache.getSound(this.key)&&this.game.cache.getSound(this.key).locked?(this.game.cache.reloadSound(this.key),this.pendingPlayback=!0):this._sound&&(this.game.device.cocoonJS||4===this._sound.readyState)?(this._sound.play(),this.totalDuration=this._sound.duration,0===this.duration&&(this.duration=this.totalDuration,this.durationMS=1e3*this.totalDuration),this._sound.currentTime=this.position,this._sound.muted=this._muted,this._muted||this.game.sound.mute?this._sound.volume=0:this._sound.volume=this._volume,this.isPlaying=!0,this.startTime=this.game.time.time,this.currentTime=0,this.stopTime=this.startTime+this.durationMS,this.onPlay.dispatch(this)):this.pendingPlayback=!0,this},restart:function(a,b,c,d){a=a||"",b=b||0,c=c||1,void 0===d&&(d=!1),this.play(a,b,c,d,!0)},pause:function(){this.isPlaying&&this._sound&&(this.paused=!0,this.pausedPosition=this.currentTime,this.pausedTime=this.game.time.time,this._tempPause=this._sound.currentTime,this.onPause.dispatch(this),this.stop())},resume:function(){if(this.paused&&this._sound){if(this.usingWebAudio){var a=Math.max(0,this.position+this.pausedPosition/1e3);this._sound=this.context.createBufferSource(),this._sound.buffer=this._buffer,this.externalNode?this._sound.connect(this.externalNode):this._sound.connect(this.gainNode),this.loop&&(this._sound.loop=!0),this.loop||""!==this.currentMarker||(this._sound.onended=this.onEndedHandler.bind(this));var b=this.duration-this.pausedPosition/1e3;void 0===this._sound.start?this._sound.noteGrainOn(0,a,b):this.loop&&this.game.device.chrome?42===this.game.device.chromeVersion?this._sound.start(0):this._sound.start(0,a):this._sound.start(0,a,b)}else this._sound.currentTime=this._tempPause,this._sound.play();this.isPlaying=!0,this.paused=!1,this.startTime+=this.game.time.time-this.pausedTime,this.onResume.dispatch(this)}},stop:function(){if(this.isPlaying&&this._sound)if(this.usingWebAudio){if(void 0===this._sound.stop)this._sound.noteOff(0);else try{this._sound.stop(0)}catch(a){}this.externalNode?this._sound.disconnect(this.externalNode):this.gainNode&&this._sound.disconnect(this.gainNode)}else this.usingAudioTag&&(this._sound.pause(),this._sound.currentTime=0);if(this.pendingPlayback=!1,this.isPlaying=!1,!this.paused){var b=this.currentMarker;""!==this.currentMarker&&this.onMarkerComplete.dispatch(this.currentMarker,this),this.currentMarker="",null!==this.fadeTween&&this.fadeTween.stop(),this.onStop.dispatch(this,b)}},fadeIn:function(a,b,c){void 0===b&&(b=!1),void 0===c&&(c=this.currentMarker),this.paused||(this.play(c,0,0,b),this.fadeTo(a,1))},fadeOut:function(a){this.fadeTo(a,0)},fadeTo:function(a,b){if(this.isPlaying&&!this.paused&&b!==this.volume){if(void 0===a&&(a=1e3),void 0===b)return void console.warn("Phaser.Sound.fadeTo: No Volume Specified.");this.fadeTween=this.game.add.tween(this).to({volume:b},a,c.Easing.Linear.None,!0),this.fadeTween.onComplete.add(this.fadeComplete,this)}},fadeComplete:function(){this.onFadeComplete.dispatch(this,this.volume),0===this.volume&&this.stop()},updateGlobalVolume:function(a){this.usingAudioTag&&this._sound&&(this._sound.volume=a*this._volume)},destroy:function(a){void 0===a&&(a=!0),this.stop(),a?this.game.sound.remove(this):(this.markers={},this.context=null,this._buffer=null,this.externalNode=null,this.onDecoded.dispose(),this.onPlay.dispose(),this.onPause.dispose(),this.onResume.dispose(),this.onLoop.dispose(),this.onStop.dispose(),this.onMute.dispose(),this.onMarkerComplete.dispose())}},c.Sound.prototype.constructor=c.Sound,Object.defineProperty(c.Sound.prototype,"isDecoding",{get:function(){return this.game.cache.getSound(this.key).isDecoding}}),Object.defineProperty(c.Sound.prototype,"isDecoded",{get:function(){return this.game.cache.isSoundDecoded(this.key)}}),Object.defineProperty(c.Sound.prototype,"mute",{get:function(){return this._muted||this.game.sound.mute},set:function(a){a=a||!1,a!==this._muted&&(a?(this._muted=!0,this._muteVolume=this._tempVolume,this.usingWebAudio?this.gainNode.gain.value=0:this.usingAudioTag&&this._sound&&(this._sound.volume=0)):(this._muted=!1,this.usingWebAudio?this.gainNode.gain.value=this._muteVolume:this.usingAudioTag&&this._sound&&(this._sound.volume=this._muteVolume)),this.onMute.dispatch(this))}}),Object.defineProperty(c.Sound.prototype,"volume",{get:function(){return this._volume},set:function(a){return this.game.device.firefox&&this.usingAudioTag&&(a=this.game.math.clamp(a,0,1)),this._muted?void(this._muteVolume=a):(this._tempVolume=a,this._volume=a,void(this.usingWebAudio?this.gainNode.gain.value=a:this.usingAudioTag&&this._sound&&(this._sound.volume=a)))}}),c.SoundManager=function(a){this.game=a,this.onSoundDecode=new c.Signal,this.onVolumeChange=new c.Signal,this.onMute=new c.Signal,this.onUnMute=new c.Signal,this.context=null,this.usingWebAudio=!1,this.usingAudioTag=!1,this.noAudio=!1,this.connectToMaster=!0,this.touchLocked=!1,this.channels=32,this.muteOnPause=!0,this._codeMuted=!1,this._muted=!1,this._unlockSource=null,this._volume=1,this._sounds=[],this._watchList=new c.ArraySet,this._watching=!1,this._watchCallback=null,this._watchContext=null},c.SoundManager.prototype={boot:function(){if(this.game.device.iOS&&this.game.device.webAudio===!1&&(this.channels=1),window.PhaserGlobal){if(window.PhaserGlobal.disableAudio===!0)return this.noAudio=!0,void(this.touchLocked=!1);if(window.PhaserGlobal.disableWebAudio===!0)return this.usingAudioTag=!0,void(this.touchLocked=!1)}if(window.PhaserGlobal&&window.PhaserGlobal.audioContext)this.context=window.PhaserGlobal.audioContext;else if(window.AudioContext)try{this.context=new window.AudioContext}catch(a){this.context=null,this.usingWebAudio=!1,this.touchLocked=!1}else if(window.webkitAudioContext)try{this.context=new window.webkitAudioContext}catch(a){this.context=null,this.usingWebAudio=!1,this.touchLocked=!1}if(null===this.context){if(void 0===window.Audio)return void(this.noAudio=!0);this.usingAudioTag=!0}else this.usingWebAudio=!0,void 0===this.context.createGain?this.masterGain=this.context.createGainNode():this.masterGain=this.context.createGain(),this.masterGain.gain.value=1,this.masterGain.connect(this.context.destination);this.noAudio||(!this.game.device.cocoonJS&&this.game.device.iOS||window.PhaserGlobal&&window.PhaserGlobal.fakeiOSTouchLock)&&this.setTouchLock()},setTouchLock:function(){this.noAudio||window.PhaserGlobal&&window.PhaserGlobal.disableAudio===!0||(this.game.device.iOSVersion>8?this.game.input.touch.addTouchLockCallback(this.unlock,this,!0):this.game.input.touch.addTouchLockCallback(this.unlock,this),this.touchLocked=!0)},unlock:function(){if(this.noAudio||!this.touchLocked||null!==this._unlockSource)return!0;if(this.usingAudioTag)this.touchLocked=!1,this._unlockSource=null;else if(this.usingWebAudio){var a=this.context.createBuffer(1,1,22050);this._unlockSource=this.context.createBufferSource(),this._unlockSource.buffer=a,this._unlockSource.connect(this.context.destination),void 0===this._unlockSource.start?this._unlockSource.noteOn(0):this._unlockSource.start(0)}return!0},stopAll:function(){if(!this.noAudio)for(var a=0;aa?a=0:a>1&&(a=1),this._volume!==a){if(this._volume=a,this.usingWebAudio)this.masterGain.gain.value=a;else for(var b=0;b=400?0:100,this.dom.getOffset(this.game.canvas,this.offset);var b=this._parentBounds.width,d=this._parentBounds.height,e=this.getParentBounds(this._parentBounds),f=e.width!==b||e.height!==d,g=this.updateOrientationState();(f||g)&&(this.onResize&&this.onResize.call(this.onResizeContext,this,e),this.updateLayout(),this.signalSizeChange());var h=2*this._updateThrottle;this._updateThrottle=b||0>=c)return a;var e=b,f=a.height*b/a.width,g=a.width*c/a.height,h=c,i=g>b;return i=i?d:!d,i?(a.width=Math.floor(e),a.height=Math.floor(f)):(a.width=Math.floor(g),a.height=Math.floor(h)),a},destroy:function(){this.game.onResume.remove(this._gameResumed,this),window.removeEventListener("orientationchange",this._orientationChange,!1),window.removeEventListener("resize",this._windowResize,!1),this.compatibility.supportsFullScreen&&(document.removeEventListener("webkitfullscreenchange",this._fullScreenChange,!1),document.removeEventListener("mozfullscreenchange",this._fullScreenChange,!1),document.removeEventListener("MSFullscreenChange",this._fullScreenChange,!1),document.removeEventListener("fullscreenchange",this._fullScreenChange,!1),document.removeEventListener("webkitfullscreenerror",this._fullScreenError,!1),document.removeEventListener("mozfullscreenerror",this._fullScreenError,!1),document.removeEventListener("MSFullscreenError",this._fullScreenError,!1),document.removeEventListener("fullscreenerror",this._fullScreenError,!1))}},c.ScaleManager.prototype.constructor=c.ScaleManager,Object.defineProperty(c.ScaleManager.prototype,"boundingParent",{get:function(){if(this.parentIsWindow||this.isFullScreen&&!this._createdFullScreenTarget)return null;var a=this.game.canvas&&this.game.canvas.parentNode;return a||null}}),Object.defineProperty(c.ScaleManager.prototype,"scaleMode",{get:function(){return this._scaleMode},set:function(a){return a!==this._scaleMode&&(this.isFullScreen||(this.updateDimensions(this._gameSize.width,this._gameSize.height,!0),this.queueUpdate(!0)),this._scaleMode=a),this._scaleMode}}),Object.defineProperty(c.ScaleManager.prototype,"fullScreenScaleMode",{get:function(){return this._fullScreenScaleMode},set:function(a){return a!==this._fullScreenScaleMode&&(this.isFullScreen?(this.prepScreenMode(!1),this._fullScreenScaleMode=a,this.prepScreenMode(!0),this.queueUpdate(!0)):this._fullScreenScaleMode=a),this._fullScreenScaleMode}}),Object.defineProperty(c.ScaleManager.prototype,"currentScaleMode",{get:function(){return this.isFullScreen?this._fullScreenScaleMode:this._scaleMode}}),Object.defineProperty(c.ScaleManager.prototype,"pageAlignHorizontally",{get:function(){return this._pageAlignHorizontally},set:function(a){a!==this._pageAlignHorizontally&&(this._pageAlignHorizontally=a,this.queueUpdate(!0))}}),Object.defineProperty(c.ScaleManager.prototype,"pageAlignVertically",{get:function(){return this._pageAlignVertically},set:function(a){a!==this._pageAlignVertically&&(this._pageAlignVertically=a,this.queueUpdate(!0))}}),Object.defineProperty(c.ScaleManager.prototype,"isFullScreen",{get:function(){return!!(document.fullscreenElement||document.webkitFullscreenElement||document.mozFullScreenElement||document.msFullscreenElement)}}),Object.defineProperty(c.ScaleManager.prototype,"isPortrait",{get:function(){return"portrait"===this.classifyOrientation(this.screenOrientation)}}),Object.defineProperty(c.ScaleManager.prototype,"isLandscape",{get:function(){return"landscape"===this.classifyOrientation(this.screenOrientation)}}),Object.defineProperty(c.ScaleManager.prototype,"isGamePortrait",{get:function(){return this.height>this.width}}),Object.defineProperty(c.ScaleManager.prototype,"isGameLandscape",{get:function(){return this.width>this.height}}),c.Utils.Debug=function(a){this.game=a,this.sprite=null,this.bmd=null,this.canvas=null,this.context=null,this.font="14px Courier",this.columnWidth=100,this.lineHeight=16,this.renderShadow=!0,this.currentX=0,this.currentY=0,this.currentAlpha=1,this.dirty=!1},c.Utils.Debug.prototype={boot:function(){this.game.renderType===c.CANVAS?this.context=this.game.context:(this.bmd=new c.BitmapData(this.game,"__DEBUG",this.game.width,this.game.height,!0),this.sprite=this.game.make.image(0,0,this.bmd),this.game.stage.addChild(this.sprite),this.game.scale.onSizeChange.add(this.resize,this),this.canvas=PIXI.CanvasPool.create(this,this.game.width,this.game.height),this.context=this.canvas.getContext("2d"))},resize:function(a,b,c){this.bmd.resize(b,c),this.canvas.width=b,this.canvas.height=c},preUpdate:function(){this.dirty&&this.sprite&&(this.bmd.clear(),this.bmd.draw(this.canvas,0,0),this.context.clearRect(0,0,this.game.width,this.game.height),this.dirty=!1)},reset:function(){this.context&&this.context.clearRect(0,0,this.game.width,this.game.height),this.sprite&&this.bmd.clear()},start:function(a,b,c,d){"number"!=typeof a&&(a=0),"number"!=typeof b&&(b=0),c=c||"rgb(255,255,255)",void 0===d&&(d=0),this.currentX=a,this.currentY=b,this.currentColor=c,this.columnWidth=d,this.dirty=!0,this.context.save(),this.context.setTransform(1,0,0,1,0,0),this.context.strokeStyle=c,this.context.fillStyle=c,this.context.font=this.font,this.context.globalAlpha=this.currentAlpha},stop:function(){this.context.restore()},line:function(){for(var a=this.currentX,b=0;b0)for(var b=0;b=0&&c.right>=0&&c.top<=this.layoutBounds.width&&c.left<=this.layoutBounds.height},getScreenOrientation:function(a){var b=window.screen,c=b.orientation||b.mozOrientation||b.msOrientation;if(c&&"string"==typeof c.type)return c.type;if("string"==typeof c)return c;var d="portrait-primary",e="landscape-primary";if("screen"===a)return b.height>b.width?d:e;if("viewport"===a)return this.visualBounds.height>this.visualBounds.width?d:e;if("window.orientation"===a&&"number"==typeof window.orientation)return 0===window.orientation||180===window.orientation?d:e;if(window.matchMedia){if(window.matchMedia("(orientation: portrait)").matches)return d;if(window.matchMedia("(orientation: landscape)").matches)return e}return this.visualBounds.height>this.visualBounds.width?d:e},visualBounds:new c.Rectangle,layoutBounds:new c.Rectangle,documentBounds:new c.Rectangle},c.Device.whenReady(function(a){var b=window&&"pageXOffset"in window?function(){return window.pageXOffset}:function(){return document.documentElement.scrollLeft},d=window&&"pageYOffset"in window?function(){return window.pageYOffset}:function(){return document.documentElement.scrollTop};Object.defineProperty(c.DOM,"scrollX",{get:b}),Object.defineProperty(c.DOM,"scrollY",{get:d}),Object.defineProperty(c.DOM.visualBounds,"x",{get:b}),Object.defineProperty(c.DOM.visualBounds,"y",{get:d}),Object.defineProperty(c.DOM.layoutBounds,"x",{value:0}),Object.defineProperty(c.DOM.layoutBounds,"y",{value:0});var e=a.desktop&&document.documentElement.clientWidth<=window.innerWidth&&document.documentElement.clientHeight<=window.innerHeight;if(e){var f=function(){return Math.max(window.innerWidth,document.documentElement.clientWidth)},g=function(){return Math.max(window.innerHeight,document.documentElement.clientHeight)};Object.defineProperty(c.DOM.visualBounds,"width",{get:f}),Object.defineProperty(c.DOM.visualBounds,"height",{get:g}),Object.defineProperty(c.DOM.layoutBounds,"width",{get:f}),Object.defineProperty(c.DOM.layoutBounds,"height",{get:g})}else Object.defineProperty(c.DOM.visualBounds,"width",{get:function(){return window.innerWidth}}),Object.defineProperty(c.DOM.visualBounds,"height",{get:function(){return window.innerHeight}}),Object.defineProperty(c.DOM.layoutBounds,"width",{get:function(){var a=document.documentElement.clientWidth,b=window.innerWidth;return b>a?b:a}}),Object.defineProperty(c.DOM.layoutBounds,"height",{get:function(){var a=document.documentElement.clientHeight,b=window.innerHeight;return b>a?b:a}});Object.defineProperty(c.DOM.documentBounds,"x",{value:0}),Object.defineProperty(c.DOM.documentBounds,"y",{value:0}),Object.defineProperty(c.DOM.documentBounds,"width",{get:function(){var a=document.documentElement;return Math.max(a.clientWidth,a.offsetWidth,a.scrollWidth)}}),Object.defineProperty(c.DOM.documentBounds,"height",{get:function(){var a=document.documentElement;return Math.max(a.clientHeight,a.offsetHeight,a.scrollHeight)}})},null,!0),c.ArraySet=function(a){this.position=0,this.list=a||[]},c.ArraySet.prototype={add:function(a){return this.exists(a)||this.list.push(a),a},getIndex:function(a){return this.list.indexOf(a)},getByKey:function(a,b){for(var c=this.list.length;c--;)if(this.list[c][a]===b)return this.list[c];return null},exists:function(a){return this.list.indexOf(a)>-1},reset:function(){this.list.length=0},remove:function(a){var b=this.list.indexOf(a);return b>-1?(this.list.splice(b,1),a):void 0},setAll:function(a,b){for(var c=this.list.length;c--;)this.list[c]&&(this.list[c][a]=b)},callAll:function(a){for(var b=Array.prototype.slice.call(arguments,1),c=this.list.length;c--;)this.list[c]&&this.list[c][a]&&this.list[c][a].apply(this.list[c],b)},removeAll:function(a){void 0===a&&(a=!1);for(var b=this.list.length;b--;)if(this.list[b]){var c=this.remove(this.list[b]);a&&c.destroy()}this.position=0,this.list=[]}},Object.defineProperty(c.ArraySet.prototype,"total",{get:function(){return this.list.length}}),Object.defineProperty(c.ArraySet.prototype,"first",{get:function(){return this.position=0,this.list.length>0?this.list[0]:null}}),Object.defineProperty(c.ArraySet.prototype,"next",{get:function(){return this.position0;b--){var c=Math.floor(Math.random()*(b+1)),d=a[b];a[b]=a[c],a[c]=d}return a},transposeMatrix:function(a){for(var b=a.length,c=a[0].length,d=new Array(c),e=0;c>e;e++){d[e]=new Array(b);for(var f=b-1;f>-1;f--)d[e][f]=a[f][e]}return d},rotateMatrix:function(a,b){if("string"!=typeof b&&(b=(b%360+360)%360),90===b||-270===b||"rotateLeft"===b)a=c.ArrayUtils.transposeMatrix(a),a=a.reverse();else if(-90===b||270===b||"rotateRight"===b)a=a.reverse(),a=c.ArrayUtils.transposeMatrix(a);else if(180===Math.abs(b)||"rotate180"===b){for(var d=0;d=e-a?e:d},rotateRight:function(a){var b=a.pop();return a.unshift(b),b},rotateLeft:function(a){var b=a.shift();return a.push(b),b},rotate:function(a){var b=a.shift();return a.push(b),b},numberArray:function(a,b){for(var c=[],d=a;b>=d;d++)c.push(d);return c},numberArrayStep:function(a,b,d){void 0!==a&&null!==a||(a=0),void 0!==b&&null!==b||(b=a,a=0),void 0===d&&(d=1);for(var e=[],f=Math.max(c.Math.roundAwayFromZero((b-a)/(d||1)),0),g=0;f>g;g++)e.push(a),a+=d;return e}},c.LinkedList=function(){this.next=null,this.prev=null,this.first=null,this.last=null,this.total=0},c.LinkedList.prototype={add:function(a){return 0===this.total&&null===this.first&&null===this.last?(this.first=a,this.last=a,this.next=a,a.prev=this,this.total++,a):(this.last.next=a,a.prev=this.last,this.last=a,this.total++,a)},reset:function(){this.first=null,this.last=null,this.next=null,this.prev=null,this.total=0},remove:function(a){return 1===this.total?(this.reset(),void(a.next=a.prev=null)):(a===this.first?this.first=this.first.next:a===this.last&&(this.last=this.last.prev),a.prev&&(a.prev.next=a.next),a.next&&(a.next.prev=a.prev),a.next=a.prev=null,null===this.first&&(this.last=null),void this.total--)},callAll:function(a){if(this.first&&this.last){var b=this.first;do b&&b[a]&&b[a].call(b),b=b.next;while(b!=this.last.next)}}},c.LinkedList.prototype.constructor=c.LinkedList,c.Create=function(a){this.game=a,this.bmd=null,this.canvas=null,this.ctx=null,this.palettes=[{0:"#000",1:"#9D9D9D",2:"#FFF",3:"#BE2633",4:"#E06F8B",5:"#493C2B",6:"#A46422",7:"#EB8931",8:"#F7E26B",9:"#2F484E",A:"#44891A",B:"#A3CE27",C:"#1B2632",D:"#005784",E:"#31A2F2",F:"#B2DCEF"},{0:"#000",1:"#191028",2:"#46af45",3:"#a1d685",4:"#453e78",5:"#7664fe",6:"#833129",7:"#9ec2e8",8:"#dc534b",9:"#e18d79",A:"#d6b97b",B:"#e9d8a1",C:"#216c4b",D:"#d365c8",E:"#afaab9",F:"#f5f4eb"},{0:"#000",1:"#2234d1",2:"#0c7e45",3:"#44aacc",4:"#8a3622",5:"#5c2e78",6:"#aa5c3d",7:"#b5b5b5",8:"#5e606e",9:"#4c81fb",A:"#6cd947",B:"#7be2f9",C:"#eb8a60",D:"#e23d69",E:"#ffd93f",F:"#fff"},{0:"#000",1:"#fff",2:"#8b4131",3:"#7bbdc5",4:"#8b41ac",5:"#6aac41",6:"#3931a4",7:"#d5de73",8:"#945a20",9:"#5a4100",A:"#bd736a",B:"#525252",C:"#838383",D:"#acee8b",E:"#7b73de",F:"#acacac"},{0:"#000",1:"#191028",2:"#46af45",3:"#a1d685",4:"#453e78",5:"#7664fe",6:"#833129",7:"#9ec2e8",8:"#dc534b",9:"#e18d79",A:"#d6b97b",B:"#e9d8a1",C:"#216c4b",D:"#d365c8",E:"#afaab9",F:"#fff"}]},c.Create.PALETTE_ARNE=0,c.Create.PALETTE_JMP=1,c.Create.PALETTE_CGA=2,c.Create.PALETTE_C64=3,c.Create.PALETTE_JAPANESE_MACHINE=4,c.Create.prototype={texture:function(a,b,c,d,e){void 0===c&&(c=8),void 0===d&&(d=c),void 0===e&&(e=0);var f=b[0].length*c,g=b.length*d;null===this.bmd&&(this.bmd=this.game.make.bitmapData(),this.canvas=this.bmd.canvas,this.ctx=this.bmd.context),this.bmd.resize(f,g),this.bmd.clear();for(var h=0;hg;g+=e)this.ctx.fillRect(0,g,b,1);for(var h=0;b>h;h+=d)this.ctx.fillRect(h,0,1,c);return this.bmd.generateTexture(a)}},c.Create.prototype.constructor=c.Create,c.FlexGrid=function(a,b,d){this.game=a.game,this.manager=a,this.width=b,this.height=d,this.boundsCustom=new c.Rectangle(0,0,b,d),this.boundsFluid=new c.Rectangle(0,0,b,d),this.boundsFull=new c.Rectangle(0,0,b,d),this.boundsNone=new c.Rectangle(0,0,b,d),this.positionCustom=new c.Point(0,0),this.positionFluid=new c.Point(0,0),this.positionFull=new c.Point(0,0),this.positionNone=new c.Point(0,0),this.scaleCustom=new c.Point(1,1),this.scaleFluid=new c.Point(1,1),this.scaleFluidInversed=new c.Point(1,1),this.scaleFull=new c.Point(1,1),this.scaleNone=new c.Point(1,1),this.customWidth=0,this.customHeight=0,this.customOffsetX=0,this.customOffsetY=0,this.ratioH=b/d,this.ratioV=d/b,this.multiplier=0,this.layers=[]},c.FlexGrid.prototype={setSize:function(a,b){this.width=a,this.height=b,this.ratioH=a/b,this.ratioV=b/a,this.scaleNone=new c.Point(1,1),this.boundsNone.width=this.width,this.boundsNone.height=this.height,this.refresh()},createCustomLayer:function(a,b,d,e){void 0===e&&(e=!0),this.customWidth=a,this.customHeight=b,this.boundsCustom.width=a,this.boundsCustom.height=b;var f=new c.FlexLayer(this,this.positionCustom,this.boundsCustom,this.scaleCustom);return e&&this.game.world.add(f),this.layers.push(f),"undefined"!=typeof d&&null!==typeof d&&f.addMultiple(d),f},createFluidLayer:function(a,b){void 0===b&&(b=!0);var d=new c.FlexLayer(this,this.positionFluid,this.boundsFluid,this.scaleFluid);return b&&this.game.world.add(d),this.layers.push(d),"undefined"!=typeof a&&null!==typeof a&&d.addMultiple(a),d},createFullLayer:function(a){var b=new c.FlexLayer(this,this.positionFull,this.boundsFull,this.scaleFluid);return this.game.world.add(b),this.layers.push(b),"undefined"!=typeof a&&b.addMultiple(a),b},createFixedLayer:function(a){var b=new c.FlexLayer(this,this.positionNone,this.boundsNone,this.scaleNone);return this.game.world.add(b),this.layers.push(b),"undefined"!=typeof a&&b.addMultiple(a),b},reset:function(){for(var a=this.layers.length;a--;)this.layers[a].persist||(this.layers[a].position=null,this.layers[a].scale=null,this.layers.slice(a,1))},onResize:function(a,b){this.ratioH=a/b,this.ratioV=b/a,this.refresh(a,b)},refresh:function(){this.multiplier=Math.min(this.manager.height/this.height,this.manager.width/this.width),this.boundsFluid.width=Math.round(this.width*this.multiplier),this.boundsFluid.height=Math.round(this.height*this.multiplier),this.scaleFluid.set(this.boundsFluid.width/this.width,this.boundsFluid.height/this.height),this.scaleFluidInversed.set(this.width/this.boundsFluid.width,this.height/this.boundsFluid.height),this.scaleFull.set(this.boundsFull.width/this.width,this.boundsFull.height/this.height),this.boundsFull.width=Math.round(this.manager.width*this.scaleFluidInversed.x),this.boundsFull.height=Math.round(this.manager.height*this.scaleFluidInversed.y),this.boundsFluid.centerOn(this.manager.bounds.centerX,this.manager.bounds.centerY),this.boundsNone.centerOn(this.manager.bounds.centerX,this.manager.bounds.centerY),this.positionFluid.set(this.boundsFluid.x,this.boundsFluid.y),this.positionNone.set(this.boundsNone.x,this.boundsNone.y)},fitSprite:function(a){this.manager.scaleSprite(a),a.x=this.manager.bounds.centerX,a.y=this.manager.bounds.centerY},debug:function(){this.game.debug.text(this.boundsFluid.width+" x "+this.boundsFluid.height,this.boundsFluid.x+4,this.boundsFluid.y+16),this.game.debug.geom(this.boundsFluid,"rgba(255,0,0,0.9",!1)}},c.FlexGrid.prototype.constructor=c.FlexGrid,c.FlexLayer=function(a,b,d,e){c.Group.call(this,a.game,null,"__flexLayer"+a.game.rnd.uuid(),!1),this.manager=a.manager,this.grid=a,this.persist=!1,this.position=b,this.bounds=d,this.scale=e,this.topLeft=d.topLeft,this.topMiddle=new c.Point(d.halfWidth,0),this.topRight=d.topRight,this.bottomLeft=d.bottomLeft,this.bottomMiddle=new c.Point(d.halfWidth,d.bottom),this.bottomRight=d.bottomRight},c.FlexLayer.prototype=Object.create(c.Group.prototype),c.FlexLayer.prototype.constructor=c.FlexLayer,c.FlexLayer.prototype.resize=function(){},c.FlexLayer.prototype.debug=function(){this.game.debug.text(this.bounds.width+" x "+this.bounds.height,this.bounds.x+4,this.bounds.y+16),this.game.debug.geom(this.bounds,"rgba(0,0,255,0.9",!1),this.game.debug.geom(this.topLeft,"rgba(255,255,255,0.9"),this.game.debug.geom(this.topMiddle,"rgba(255,255,255,0.9"),this.game.debug.geom(this.topRight,"rgba(255,255,255,0.9")},c.Color={packPixel:function(a,b,d,e){return c.Device.LITTLE_ENDIAN?(e<<24|d<<16|b<<8|a)>>>0:(a<<24|b<<16|d<<8|e)>>>0},unpackPixel:function(a,b,d,e){return void 0!==b&&null!==b||(b=c.Color.createColor()),void 0!==d&&null!==d||(d=!1),void 0!==e&&null!==e||(e=!1),c.Device.LITTLE_ENDIAN?(b.a=(4278190080&a)>>>24,b.b=(16711680&a)>>>16,b.g=(65280&a)>>>8,b.r=255&a):(b.r=(4278190080&a)>>>24,b.g=(16711680&a)>>>16,b.b=(65280&a)>>>8,b.a=255&a),b.color=a,b.rgba="rgba("+b.r+","+b.g+","+b.b+","+b.a/255+")",d&&c.Color.RGBtoHSL(b.r,b.g,b.b,b),e&&c.Color.RGBtoHSV(b.r,b.g,b.b,b),b},fromRGBA:function(a,b){return b||(b=c.Color.createColor()),b.r=(4278190080&a)>>>24,b.g=(16711680&a)>>>16,b.b=(65280&a)>>>8,b.a=255&a,b.rgba="rgba("+b.r+","+b.g+","+b.b+","+b.a+")",b},toRGBA:function(a,b,c,d){return a<<24|b<<16|c<<8|d},toABGR:function(a,b,c,d){return(d<<24|c<<16|b<<8|a)>>>0},RGBtoHSL:function(a,b,d,e){e||(e=c.Color.createColor(a,b,d,1)),a/=255,b/=255,d/=255;var f=Math.min(a,b,d),g=Math.max(a,b,d);if(e.h=0,e.s=0,e.l=(g+f)/2,g!==f){var h=g-f;e.s=e.l>.5?h/(2-g-f):h/(g+f),g===a?e.h=(b-d)/h+(d>b?6:0):g===b?e.h=(d-a)/h+2:g===d&&(e.h=(a-b)/h+4),e.h/=6}return e},HSLtoRGB:function(a,b,d,e){if(e?(e.r=d,e.g=d,e.b=d):e=c.Color.createColor(d,d,d),0!==b){var f=.5>d?d*(1+b):d+b-d*b,g=2*d-f;e.r=c.Color.hueToColor(g,f,a+1/3),e.g=c.Color.hueToColor(g,f,a),e.b=c.Color.hueToColor(g,f,a-1/3)}return e.r=Math.floor(255*e.r|0),e.g=Math.floor(255*e.g|0),e.b=Math.floor(255*e.b|0),c.Color.updateColor(e),e},RGBtoHSV:function(a,b,d,e){e||(e=c.Color.createColor(a,b,d,255)),a/=255,b/=255,d/=255;var f=Math.min(a,b,d),g=Math.max(a,b,d),h=g-f;return e.h=0,e.s=0===g?0:h/g,e.v=g,g!==f&&(g===a?e.h=(b-d)/h+(d>b?6:0):g===b?e.h=(d-a)/h+2:g===d&&(e.h=(a-b)/h+4),e.h/=6),e},HSVtoRGB:function(a,b,d,e){void 0===e&&(e=c.Color.createColor(0,0,0,1,a,b,0,d));var f,g,h,i=Math.floor(6*a),j=6*a-i,k=d*(1-b),l=d*(1-j*b),m=d*(1-(1-j)*b);switch(i%6){case 0:f=d,g=m,h=k;break;case 1:f=l,g=d,h=k;break;case 2:f=k,g=d,h=m;break;case 3:f=k,g=l,h=d;break;case 4:f=m,g=k,h=d;break;case 5:f=d,g=k,h=l}return e.r=Math.floor(255*f),e.g=Math.floor(255*g),e.b=Math.floor(255*h),c.Color.updateColor(e),e},hueToColor:function(a,b,c){return 0>c&&(c+=1),c>1&&(c-=1),1/6>c?a+6*(b-a)*c:.5>c?b:2/3>c?a+(b-a)*(2/3-c)*6:a},createColor:function(a,b,d,e,f,g,h,i){var j={r:a||0,g:b||0,b:d||0,a:e||1,h:f||0,s:g||0,l:h||0,v:i||0,color:0,color32:0,rgba:""};return c.Color.updateColor(j)},updateColor:function(a){return a.rgba="rgba("+a.r.toString()+","+a.g.toString()+","+a.b.toString()+","+a.a.toString()+")",a.color=c.Color.getColor(a.r,a.g,a.b),a.color32=c.Color.getColor32(255*a.a,a.r,a.g,a.b),a},getColor32:function(a,b,c,d){return a<<24|b<<16|c<<8|d},getColor:function(a,b,c){return a<<16|b<<8|c},RGBtoString:function(a,b,d,e,f){return void 0===e&&(e=255),void 0===f&&(f="#"),"#"===f?"#"+((1<<24)+(a<<16)+(b<<8)+d).toString(16).slice(1):"0x"+c.Color.componentToHex(e)+c.Color.componentToHex(a)+c.Color.componentToHex(b)+c.Color.componentToHex(d)},hexToRGB:function(a){var b=c.Color.hexToColor(a);return b?c.Color.getColor32(b.a,b.r,b.g,b.b):void 0},hexToColor:function(a,b){a=a.replace(/^(?:#|0x)?([a-f\d])([a-f\d])([a-f\d])$/i,function(a,b,c,d){return b+b+c+c+d+d});var d=/^(?:#|0x)?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(a);if(d){var e=parseInt(d[1],16),f=parseInt(d[2],16),g=parseInt(d[3],16);b?(b.r=e,b.g=f,b.b=g):b=c.Color.createColor(e,f,g)}return b},webToColor:function(a,b){b||(b=c.Color.createColor());var d=/^rgba?\(\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*(?:,\s*(\d+(?:\.\d+)?))?\s*\)$/.exec(a);return d&&(b.r=parseInt(d[1],10),b.g=parseInt(d[2],10),b.b=parseInt(d[3],10),b.a=void 0!==d[4]?parseFloat(d[4]):1,c.Color.updateColor(b)),b},valueToColor:function(a,b){if(b||(b=c.Color.createColor()),"string"==typeof a)return 0===a.indexOf("rgb")?c.Color.webToColor(a,b):(b.a=1,c.Color.hexToColor(a,b));if("number"==typeof a){var d=c.Color.getRGB(a);return b.r=d.r,b.g=d.g,b.b=d.b,b.a=d.a/255,b}return b},componentToHex:function(a){var b=a.toString(16);return 1==b.length?"0"+b:b},HSVColorWheel:function(a,b){void 0===a&&(a=1),void 0===b&&(b=1);for(var d=[],e=0;359>=e;e++)d.push(c.Color.HSVtoRGB(e/359,a,b));return d},HSLColorWheel:function(a,b){void 0===a&&(a=.5),void 0===b&&(b=.5);for(var d=[],e=0;359>=e;e++)d.push(c.Color.HSLtoRGB(e/359,a,b)); +return d},interpolateColor:function(a,b,d,e,f){void 0===f&&(f=255);var g=c.Color.getRGB(a),h=c.Color.getRGB(b),i=(h.red-g.red)*e/d+g.red,j=(h.green-g.green)*e/d+g.green,k=(h.blue-g.blue)*e/d+g.blue;return c.Color.getColor32(f,i,j,k)},interpolateColorWithRGB:function(a,b,d,e,f,g){var h=c.Color.getRGB(a),i=(b-h.red)*g/f+h.red,j=(d-h.green)*g/f+h.green,k=(e-h.blue)*g/f+h.blue;return c.Color.getColor(i,j,k)},interpolateRGB:function(a,b,d,e,f,g,h,i){var j=(e-a)*i/h+a,k=(f-b)*i/h+b,l=(g-d)*i/h+d;return c.Color.getColor(j,k,l)},getRandomColor:function(a,b,d){if(void 0===a&&(a=0),void 0===b&&(b=255),void 0===d&&(d=255),b>255||a>b)return c.Color.getColor(255,255,255);var e=a+Math.round(Math.random()*(b-a)),f=a+Math.round(Math.random()*(b-a)),g=a+Math.round(Math.random()*(b-a));return c.Color.getColor32(d,e,f,g)},getRGB:function(a){return a>16777215?{alpha:a>>>24,red:a>>16&255,green:a>>8&255,blue:255&a,a:a>>>24,r:a>>16&255,g:a>>8&255,b:255&a}:{alpha:255,red:a>>16&255,green:a>>8&255,blue:255&a,a:255,r:a>>16&255,g:a>>8&255,b:255&a}},getWebRGB:function(a){if("object"==typeof a)return"rgba("+a.r.toString()+","+a.g.toString()+","+a.b.toString()+","+(a.a/255).toString()+")";var b=c.Color.getRGB(a);return"rgba("+b.r.toString()+","+b.g.toString()+","+b.b.toString()+","+(b.a/255).toString()+")"},getAlpha:function(a){return a>>>24},getAlphaFloat:function(a){return(a>>>24)/255},getRed:function(a){return a>>16&255},getGreen:function(a){return a>>8&255},getBlue:function(a){return 255&a},blendNormal:function(a){return a},blendLighten:function(a,b){return b>a?b:a},blendDarken:function(a,b){return b>a?a:b},blendMultiply:function(a,b){return a*b/255},blendAverage:function(a,b){return(a+b)/2},blendAdd:function(a,b){return Math.min(255,a+b)},blendSubtract:function(a,b){return Math.max(0,a+b-255)},blendDifference:function(a,b){return Math.abs(a-b)},blendNegation:function(a,b){return 255-Math.abs(255-a-b)},blendScreen:function(a,b){return 255-((255-a)*(255-b)>>8)},blendExclusion:function(a,b){return a+b-2*a*b/255},blendOverlay:function(a,b){return 128>b?2*a*b/255:255-2*(255-a)*(255-b)/255},blendSoftLight:function(a,b){return 128>b?2*((a>>1)+64)*(b/255):255-2*(255-((a>>1)+64))*(255-b)/255},blendHardLight:function(a,b){return c.Color.blendOverlay(b,a)},blendColorDodge:function(a,b){return 255===b?b:Math.min(255,(a<<8)/(255-b))},blendColorBurn:function(a,b){return 0===b?b:Math.max(0,255-(255-a<<8)/b)},blendLinearDodge:function(a,b){return c.Color.blendAdd(a,b)},blendLinearBurn:function(a,b){return c.Color.blendSubtract(a,b)},blendLinearLight:function(a,b){return 128>b?c.Color.blendLinearBurn(a,2*b):c.Color.blendLinearDodge(a,2*(b-128))},blendVividLight:function(a,b){return 128>b?c.Color.blendColorBurn(a,2*b):c.Color.blendColorDodge(a,2*(b-128))},blendPinLight:function(a,b){return 128>b?c.Color.blendDarken(a,2*b):c.Color.blendLighten(a,2*(b-128))},blendHardMix:function(a,b){return c.Color.blendVividLight(a,b)<128?0:255},blendReflect:function(a,b){return 255===b?b:Math.min(255,a*a/(255-b))},blendGlow:function(a,b){return c.Color.blendReflect(b,a)},blendPhoenix:function(a,b){return Math.min(a,b)-Math.max(a,b)+255}},c.Physics=function(a,b){b=b||{},this.game=a,this.config=b,this.arcade=null,this.p2=null,this.ninja=null,this.box2d=null,this.chipmunk=null,this.matter=null,this.parseConfig()},c.Physics.ARCADE=0,c.Physics.P2JS=1,c.Physics.NINJA=2,c.Physics.BOX2D=3,c.Physics.CHIPMUNK=4,c.Physics.MATTERJS=5,c.Physics.prototype={parseConfig:function(){this.config.hasOwnProperty("arcade")&&this.config.arcade!==!0||!c.Physics.hasOwnProperty("Arcade")||(this.arcade=new c.Physics.Arcade(this.game)),this.config.hasOwnProperty("ninja")&&this.config.ninja===!0&&c.Physics.hasOwnProperty("Ninja")&&(this.ninja=new c.Physics.Ninja(this.game)),this.config.hasOwnProperty("p2")&&this.config.p2===!0&&c.Physics.hasOwnProperty("P2")&&(this.p2=new c.Physics.P2(this.game,this.config)),this.config.hasOwnProperty("box2d")&&this.config.box2d===!0&&c.Physics.hasOwnProperty("BOX2D")&&(this.box2d=new c.Physics.BOX2D(this.game,this.config)),this.config.hasOwnProperty("matter")&&this.config.matter===!0&&c.Physics.hasOwnProperty("Matter")&&(this.matter=new c.Physics.Matter(this.game,this.config))},startSystem:function(a){a===c.Physics.ARCADE?this.arcade=new c.Physics.Arcade(this.game):a===c.Physics.P2JS?null===this.p2?this.p2=new c.Physics.P2(this.game,this.config):this.p2.reset():a===c.Physics.NINJA?this.ninja=new c.Physics.Ninja(this.game):a===c.Physics.BOX2D?null===this.box2d?this.box2d=new c.Physics.Box2D(this.game,this.config):this.box2d.reset():a===c.Physics.MATTERJS&&(null===this.matter?this.matter=new c.Physics.Matter(this.game,this.config):this.matter.reset())},enable:function(a,b,d){void 0===b&&(b=c.Physics.ARCADE),void 0===d&&(d=!1),b===c.Physics.ARCADE?this.arcade.enable(a):b===c.Physics.P2JS&&this.p2?this.p2.enable(a,d):b===c.Physics.NINJA&&this.ninja?this.ninja.enableAABB(a):b===c.Physics.BOX2D&&this.box2d?this.box2d.enable(a):b===c.Physics.MATTERJS&&this.matter?this.matter.enable(a):console.warn(a.key+" is attempting to enable a physics body using an unknown physics system.")},preUpdate:function(){this.p2&&this.p2.preUpdate(),this.box2d&&this.box2d.preUpdate(),this.matter&&this.matter.preUpdate()},update:function(){this.p2&&this.p2.update(),this.box2d&&this.box2d.update(),this.matter&&this.matter.update()},setBoundsToWorld:function(){this.arcade&&this.arcade.setBoundsToWorld(),this.ninja&&this.ninja.setBoundsToWorld(),this.p2&&this.p2.setBoundsToWorld(),this.box2d&&this.box2d.setBoundsToWorld(),this.matter&&this.matter.setBoundsToWorld()},clear:function(){this.p2&&this.p2.clear(),this.box2d&&this.box2d.clear(),this.matter&&this.matter.clear()},reset:function(){this.p2&&this.p2.reset(),this.box2d&&this.box2d.reset(),this.matter&&this.matter.reset()},destroy:function(){this.p2&&this.p2.destroy(),this.box2d&&this.box2d.destroy(),this.matter&&this.matter.destroy(),this.arcade=null,this.ninja=null,this.p2=null,this.box2d=null,this.matter=null}},c.Physics.prototype.constructor=c.Physics,c.Physics.Arcade=function(a){this.game=a,this.gravity=new c.Point,this.bounds=new c.Rectangle(0,0,a.world.width,a.world.height),this.checkCollision={up:!0,down:!0,left:!0,right:!0},this.maxObjects=10,this.maxLevels=4,this.OVERLAP_BIAS=4,this.forceX=!1,this.sortDirection=c.Physics.Arcade.LEFT_RIGHT,this.skipQuadTree=!0,this.isPaused=!1,this.quadTree=new c.QuadTree(this.game.world.bounds.x,this.game.world.bounds.y,this.game.world.bounds.width,this.game.world.bounds.height,this.maxObjects,this.maxLevels),this._total=0,this.setBoundsToWorld()},c.Physics.Arcade.prototype.constructor=c.Physics.Arcade,c.Physics.Arcade.SORT_NONE=0,c.Physics.Arcade.LEFT_RIGHT=1,c.Physics.Arcade.RIGHT_LEFT=2,c.Physics.Arcade.TOP_BOTTOM=3,c.Physics.Arcade.BOTTOM_TOP=4,c.Physics.Arcade.prototype={setBounds:function(a,b,c,d){this.bounds.setTo(a,b,c,d)},setBoundsToWorld:function(){this.bounds.copyFrom(this.game.world.bounds)},enable:function(a,b){void 0===b&&(b=!0);var d=1;if(Array.isArray(a))for(d=a.length;d--;)a[d]instanceof c.Group?this.enable(a[d].children,b):(this.enableBody(a[d]),b&&a[d].hasOwnProperty("children")&&a[d].children.length>0&&this.enable(a[d],!0));else a instanceof c.Group?this.enable(a.children,b):(this.enableBody(a),b&&a.hasOwnProperty("children")&&a.children.length>0&&this.enable(a.children,!0))},enableBody:function(a){a.hasOwnProperty("body")&&null===a.body&&(a.body=new c.Physics.Arcade.Body(a),a.parent&&a.parent instanceof c.Group&&a.parent.addToHash(a))},updateMotion:function(a){var b=this.computeVelocity(0,a,a.angularVelocity,a.angularAcceleration,a.angularDrag,a.maxAngular)-a.angularVelocity;a.angularVelocity+=b,a.rotation+=a.angularVelocity*this.game.time.physicsElapsed,a.velocity.x=this.computeVelocity(1,a,a.velocity.x,a.acceleration.x,a.drag.x,a.maxVelocity.x),a.velocity.y=this.computeVelocity(2,a,a.velocity.y,a.acceleration.y,a.drag.y,a.maxVelocity.y)},computeVelocity:function(a,b,c,d,e,f){return void 0===f&&(f=1e4),1===a&&b.allowGravity?c+=(this.gravity.x+b.gravity.x)*this.game.time.physicsElapsed:2===a&&b.allowGravity&&(c+=(this.gravity.y+b.gravity.y)*this.game.time.physicsElapsed),d?c+=d*this.game.time.physicsElapsed:e&&(e*=this.game.time.physicsElapsed,c-e>0?c-=e:0>c+e?c+=e:c=0),c>f?c=f:-f>c&&(c=-f),c},overlap:function(a,b,c,d,e){if(c=c||null,d=d||null,e=e||c,this._total=0,!Array.isArray(a)&&Array.isArray(b))for(var f=0;f0},collide:function(a,b,c,d,e){if(c=c||null,d=d||null,e=e||c,this._total=0,!Array.isArray(a)&&Array.isArray(b))for(var f=0;f0},sortLeftRight:function(a,b){return a.body&&b.body?a.body.x-b.body.x:0},sortRightLeft:function(a,b){return a.body&&b.body?b.body.x-a.body.x:0},sortTopBottom:function(a,b){return a.body&&b.body?a.body.y-b.body.y:0},sortBottomTop:function(a,b){return a.body&&b.body?b.body.y-a.body.y:0},sort:function(a,b){null!==a.physicsSortDirection?b=a.physicsSortDirection:void 0===b&&(b=this.sortDirection),b===c.Physics.Arcade.LEFT_RIGHT?a.hash.sort(this.sortLeftRight):b===c.Physics.Arcade.RIGHT_LEFT?a.hash.sort(this.sortRightLeft):b===c.Physics.Arcade.TOP_BOTTOM?a.hash.sort(this.sortTopBottom):b===c.Physics.Arcade.BOTTOM_TOP&&a.hash.sort(this.sortBottomTop)},collideHandler:function(a,b,d,e,f,g){return void 0===b&&a.physicsType===c.GROUP?(this.sort(a),void this.collideGroupVsSelf(a,d,e,f,g)):void(a&&b&&a.exists&&b.exists&&(this.sortDirection!==c.Physics.Arcade.SORT_NONE&&(a.physicsType===c.GROUP&&this.sort(a),b.physicsType===c.GROUP&&this.sort(b)),a.physicsType===c.SPRITE?b.physicsType===c.SPRITE?this.collideSpriteVsSprite(a,b,d,e,f,g):b.physicsType===c.GROUP?this.collideSpriteVsGroup(a,b,d,e,f,g):b.physicsType===c.TILEMAPLAYER&&this.collideSpriteVsTilemapLayer(a,b,d,e,f,g):a.physicsType===c.GROUP?b.physicsType===c.SPRITE?this.collideSpriteVsGroup(b,a,d,e,f,g):b.physicsType===c.GROUP?this.collideGroupVsGroup(a,b,d,e,f,g):b.physicsType===c.TILEMAPLAYER&&this.collideGroupVsTilemapLayer(a,b,d,e,f,g):a.physicsType===c.TILEMAPLAYER&&(b.physicsType===c.SPRITE?this.collideSpriteVsTilemapLayer(b,a,d,e,f,g):b.physicsType===c.GROUP&&this.collideGroupVsTilemapLayer(b,a,d,e,f,g))))},collideSpriteVsSprite:function(a,b,c,d,e,f){return a.body&&b.body?(this.separate(a.body,b.body,d,e,f)&&(c&&c.call(e,a,b),this._total++),!0):!1},collideSpriteVsGroup:function(a,b,d,e,f,g){if(0!==b.length&&a.body)if(this.skipQuadTree||a.body.skipQuadTree)for(var h,i=0;ih.right)break;if(h.x>a.body.right)continue}else if(this.sortDirection===c.Physics.Arcade.TOP_BOTTOM){if(a.body.bottomh.bottom)break;if(h.y>a.body.bottom)continue}this.collideSpriteVsSprite(a,j,d,e,f,g)}}else{this.quadTree.clear(),this.quadTree.reset(this.game.world.bounds.x,this.game.world.bounds.y,this.game.world.bounds.width,this.game.world.bounds.height,this.maxObjects,this.maxLevels),this.quadTree.populate(b);for(var k=this.quadTree.retrieve(a),i=0;ik.right)continue;if(k.x>h.right)break}else if(this.sortDirection===c.Physics.Arcade.TOP_BOTTOM){if(h.bottomk.bottom)continue;if(k.y>i.body.bottom)break}this.collideSpriteVsSprite(i,l,b,d,e,f)}}}}},collideGroupVsGroup:function(a,b,d,e,f,g){if(0!==a.length&&0!==b.length)for(var h=0;hh.bottom)&&(i.xh.right))return this.separateCircle(a,b,e)}var j=!1,k=!1;this.forceX||Math.abs(this.gravity.y+a.gravity.y)=b.right?!1:!(a.position.y>=b.bottom)},circleBodyIntersects:function(a,b){var d=c.Math.clamp(a.center.x,b.left,b.right),e=c.Math.clamp(a.center.y,b.top,b.bottom),f=(a.center.x-d)*(a.center.x-d),g=(a.center.y-e)*(a.center.y-e);return f+g<=a.radius*a.radius},separateCircle:function(a,b,d){this.getOverlapX(a,b),this.getOverlapY(a,b);var e=this.angleBetweenCenters(a,b),f=0;if(a.isCircle!==b.isCircle){var g={x:b.isCircle?a.position.x:b.position.x,y:b.isCircle?a.position.y:b.position.y,right:b.isCircle?a.right:b.right,bottom:b.isCircle?a.bottom:b.bottom},h={x:a.isCircle?a.position.x+a.radius:b.position.x+b.radius,y:a.isCircle?a.position.y+a.radius:b.position.y+b.radius,radius:a.isCircle?a.radius:b.radius};h.yg.right&&(f=c.Math.distance(h.x,h.y,g.right,g.y)-h.radius):h.y>g.bottom&&(h.xg.right&&(f=c.Math.distance(h.x,h.y,g.right,g.bottom)-h.radius)),f*=-1}else f=a.radius+b.radius-c.Math.distance(a.center.x,a.center.y,b.center.x,b.center.y);if(d||0===f||a.immovable&&b.immovable||a.customSeparateX||b.customSeparateX)return 0!==f&&(a.onOverlap&&a.onOverlap.dispatch(a.sprite,b.sprite),b.onOverlap&&b.onOverlap.dispatch(b.sprite,a.sprite)),0!==f;var i={x:a.velocity.x*Math.cos(e)+a.velocity.y*Math.sin(e),y:a.velocity.x*Math.sin(e)-a.velocity.y*Math.cos(e)},j={x:b.velocity.x*Math.cos(e)+b.velocity.y*Math.sin(e),y:b.velocity.x*Math.sin(e)-b.velocity.y*Math.cos(e)},k=((a.mass-b.mass)*i.x+2*b.mass*j.x)/(a.mass+b.mass),l=(2*a.mass*i.x+(b.mass-a.mass)*j.x)/(a.mass+b.mass);return a.immovable||(a.velocity.x=(k*Math.cos(e)-i.y*Math.sin(e))*a.bounce.x,a.velocity.y=(i.y*Math.cos(e)+k*Math.sin(e))*a.bounce.y),b.immovable||(b.velocity.x=(l*Math.cos(e)-j.y*Math.sin(e))*b.bounce.x,b.velocity.y=(j.y*Math.cos(e)+l*Math.sin(e))*b.bounce.y),Math.abs(e)0&&!a.immovable&&b.velocity.x>a.velocity.x?a.velocity.x*=-1:b.velocity.x<0&&!b.immovable&&a.velocity.x0&&!a.immovable&&b.velocity.y>a.velocity.y?a.velocity.y*=-1:b.velocity.y<0&&!b.immovable&&a.velocity.yMath.PI/2&&(a.velocity.x<0&&!a.immovable&&b.velocity.x0&&!b.immovable&&a.velocity.x>b.velocity.x?b.velocity.x*=-1:a.velocity.y<0&&!a.immovable&&b.velocity.y0&&!b.immovable&&a.velocity.x>b.velocity.y&&(b.velocity.y*=-1)),a.immovable||(a.x+=a.velocity.x*this.game.time.physicsElapsed-f*Math.cos(e),a.y+=a.velocity.y*this.game.time.physicsElapsed-f*Math.sin(e)),b.immovable||(b.x+=b.velocity.x*this.game.time.physicsElapsed+f*Math.cos(e),b.y+=b.velocity.y*this.game.time.physicsElapsed+f*Math.sin(e)),a.onCollide&&a.onCollide.dispatch(a.sprite,b.sprite),b.onCollide&&b.onCollide.dispatch(b.sprite,a.sprite),!0},getOverlapX:function(a,b,c){var d=0,e=a.deltaAbsX()+b.deltaAbsX()+this.OVERLAP_BIAS;return 0===a.deltaX()&&0===b.deltaX()?(a.embedded=!0,b.embedded=!0):a.deltaX()>b.deltaX()?(d=a.right-b.x,d>e&&!c||a.checkCollision.right===!1||b.checkCollision.left===!1?d=0:(a.touching.none=!1,a.touching.right=!0,b.touching.none=!1,b.touching.left=!0)):a.deltaX()e&&!c||a.checkCollision.left===!1||b.checkCollision.right===!1?d=0:(a.touching.none=!1,a.touching.left=!0,b.touching.none=!1,b.touching.right=!0)),a.overlapX=d,b.overlapX=d,d},getOverlapY:function(a,b,c){var d=0,e=a.deltaAbsY()+b.deltaAbsY()+this.OVERLAP_BIAS;return 0===a.deltaY()&&0===b.deltaY()?(a.embedded=!0,b.embedded=!0):a.deltaY()>b.deltaY()?(d=a.bottom-b.y,d>e&&!c||a.checkCollision.down===!1||b.checkCollision.up===!1?d=0:(a.touching.none=!1,a.touching.down=!0,b.touching.none=!1,b.touching.up=!0)):a.deltaY()e&&!c||a.checkCollision.up===!1||b.checkCollision.down===!1?d=0:(a.touching.none=!1,a.touching.up=!0,b.touching.none=!1,b.touching.down=!0)),a.overlapY=d,b.overlapY=d,d},separateX:function(a,b,c){var d=this.getOverlapX(a,b,c);if(c||0===d||a.immovable&&b.immovable||a.customSeparateX||b.customSeparateX)return 0!==d||a.embedded&&b.embedded;var e=a.velocity.x,f=b.velocity.x;if(a.immovable||b.immovable)a.immovable?(b.x+=d,b.velocity.x=e-f*b.bounce.x,a.moves&&(b.y+=(a.y-a.prev.y)*a.friction.y)):(a.x-=d,a.velocity.x=f-e*a.bounce.x,b.moves&&(a.y+=(b.y-b.prev.y)*b.friction.y));else{d*=.5,a.x-=d,b.x+=d;var g=Math.sqrt(f*f*b.mass/a.mass)*(f>0?1:-1),h=Math.sqrt(e*e*a.mass/b.mass)*(e>0?1:-1),i=.5*(g+h);g-=i,h-=i,a.velocity.x=i+g*a.bounce.x,b.velocity.x=i+h*b.bounce.x}return!0},separateY:function(a,b,c){var d=this.getOverlapY(a,b,c);if(c||0===d||a.immovable&&b.immovable||a.customSeparateY||b.customSeparateY)return 0!==d||a.embedded&&b.embedded;var e=a.velocity.y,f=b.velocity.y;if(a.immovable||b.immovable)a.immovable?(b.y+=d,b.velocity.y=e-f*b.bounce.y,a.moves&&(b.x+=(a.x-a.prev.x)*a.friction.x)):(a.y-=d,a.velocity.y=f-e*a.bounce.y,b.moves&&(a.x+=(b.x-b.prev.x)*b.friction.x));else{d*=.5,a.y-=d,b.y+=d;var g=Math.sqrt(f*f*b.mass/a.mass)*(f>0?1:-1),h=Math.sqrt(e*e*a.mass/b.mass)*(e>0?1:-1),i=.5*(g+h);g-=i,h-=i,a.velocity.y=i+g*a.bounce.y,b.velocity.y=i+h*b.bounce.y}return!0},getObjectsUnderPointer:function(a,b,c,d){return 0!==b.length&&a.exists?this.getObjectsAtLocation(a.x,a.y,b,c,d,a):void 0},getObjectsAtLocation:function(a,b,d,e,f,g){this.quadTree.clear(),this.quadTree.reset(this.game.world.bounds.x,this.game.world.bounds.y,this.game.world.bounds.width,this.game.world.bounds.height,this.maxObjects,this.maxLevels),this.quadTree.populate(d);for(var h=new c.Rectangle(a,b,1,1),i=[],j=this.quadTree.retrieve(h),k=0;k0&&(c=this.distanceBetween(a,b)/(d/1e3)),a.body.velocity.x=Math.cos(e)*c,a.body.velocity.y=Math.sin(e)*c,e},moveToPointer:function(a,b,c,d){void 0===b&&(b=60),c=c||this.game.input.activePointer,void 0===d&&(d=0);var e=this.angleToPointer(a,c);return d>0&&(b=this.distanceToPointer(a,c)/(d/1e3)),a.body.velocity.x=Math.cos(e)*b,a.body.velocity.y=Math.sin(e)*b,e},moveToXY:function(a,b,c,d,e){void 0===d&&(d=60),void 0===e&&(e=0);var f=Math.atan2(c-a.y,b-a.x);return e>0&&(d=this.distanceToXY(a,b,c)/(e/1e3)),a.body.velocity.x=Math.cos(f)*d,a.body.velocity.y=Math.sin(f)*d,f},velocityFromAngle:function(a,b,d){return void 0===b&&(b=60),d=d||new c.Point,d.setTo(Math.cos(this.game.math.degToRad(a))*b,Math.sin(this.game.math.degToRad(a))*b)},velocityFromRotation:function(a,b,d){return void 0===b&&(b=60),d=d||new c.Point,d.setTo(Math.cos(a)*b,Math.sin(a)*b)},accelerationFromRotation:function(a,b,d){return void 0===b&&(b=60),d=d||new c.Point,d.setTo(Math.cos(a)*b,Math.sin(a)*b)},accelerateToObject:function(a,b,c,d,e){void 0===c&&(c=60),void 0===d&&(d=1e3),void 0===e&&(e=1e3);var f=this.angleBetween(a,b);return a.body.acceleration.setTo(Math.cos(f)*c,Math.sin(f)*c),a.body.maxVelocity.setTo(d,e),f},accelerateToPointer:function(a,b,c,d,e){void 0===c&&(c=60),void 0===b&&(b=this.game.input.activePointer),void 0===d&&(d=1e3),void 0===e&&(e=1e3);var f=this.angleToPointer(a,b);return a.body.acceleration.setTo(Math.cos(f)*c,Math.sin(f)*c),a.body.maxVelocity.setTo(d,e),f},accelerateToXY:function(a,b,c,d,e,f){void 0===d&&(d=60),void 0===e&&(e=1e3),void 0===f&&(f=1e3);var g=this.angleToXY(a,b,c);return a.body.acceleration.setTo(Math.cos(g)*d,Math.sin(g)*d),a.body.maxVelocity.setTo(e,f),g},distanceBetween:function(a,b,c){void 0===c&&(c=!1);var d=c?a.world.x-b.world.x:a.x-b.x,e=c?a.world.y-b.world.y:a.y-b.y;return Math.sqrt(d*d+e*e)},distanceToXY:function(a,b,c,d){void 0===d&&(d=!1);var e=d?a.world.x-b:a.x-b,f=d?a.world.y-c:a.y-c;return Math.sqrt(e*e+f*f)},distanceToPointer:function(a,b,c){void 0===b&&(b=this.game.input.activePointer),void 0===c&&(c=!1);var d=c?a.world.x-b.worldX:a.x-b.worldX,e=c?a.world.y-b.worldY:a.y-b.worldY;return Math.sqrt(d*d+e*e)},angleBetween:function(a,b,c){return void 0===c&&(c=!1),c?Math.atan2(b.world.y-a.world.y,b.world.x-a.world.x):Math.atan2(b.y-a.y,b.x-a.x)},angleBetweenCenters:function(a,b){var c=b.center.x-a.center.x,d=b.center.y-a.center.y;return Math.atan2(d,c)},angleToXY:function(a,b,c,d){return void 0===d&&(d=!1),d?Math.atan2(c-a.world.y,b-a.world.x):Math.atan2(c-a.y,b-a.x)},angleToPointer:function(a,b,c){return void 0===b&&(b=this.game.input.activePointer),void 0===c&&(c=!1),c?Math.atan2(b.worldY-a.world.y,b.worldX-a.world.x):Math.atan2(b.worldY-a.y,b.worldX-a.x)},worldAngleToPointer:function(a,b){return this.angleToPointer(a,b,!0)}},c.Physics.Arcade.Body=function(a){this.sprite=a,this.game=a.game,this.type=c.Physics.ARCADE,this.enable=!0,this.isCircle=!1,this.radius=0,this.offset=new c.Point,this.position=new c.Point(a.x,a.y),this.prev=new c.Point(this.position.x,this.position.y),this.allowRotation=!0,this.rotation=a.rotation,this.preRotation=a.rotation,this.width=a.width,this.height=a.height,this.sourceWidth=a.width,this.sourceHeight=a.height,a.texture&&(this.sourceWidth=a.texture.frame.width,this.sourceHeight=a.texture.frame.height),this.halfWidth=Math.abs(a.width/2),this.halfHeight=Math.abs(a.height/2),this.center=new c.Point(a.x+this.halfWidth,a.y+this.halfHeight),this.velocity=new c.Point,this.newVelocity=new c.Point,this.deltaMax=new c.Point,this.acceleration=new c.Point,this.drag=new c.Point,this.allowGravity=!0,this.gravity=new c.Point,this.bounce=new c.Point,this.worldBounce=null,this.onWorldBounds=null,this.onCollide=null,this.onOverlap=null,this.maxVelocity=new c.Point(1e4,1e4),this.friction=new c.Point(1,0),this.angularVelocity=0,this.angularAcceleration=0,this.angularDrag=0,this.maxAngular=1e3,this.mass=1,this.angle=0,this.speed=0,this.facing=c.NONE,this.immovable=!1,this.moves=!0,this.customSeparateX=!1,this.customSeparateY=!1,this.overlapX=0,this.overlapY=0,this.overlapR=0,this.embedded=!1,this.collideWorldBounds=!1,this.checkCollision={none:!1,any:!0,up:!0,down:!0,left:!0,right:!0},this.touching={none:!0,up:!1,down:!1,left:!1,right:!1},this.wasTouching={none:!0,up:!1,down:!1,left:!1,right:!1},this.blocked={up:!1,down:!1,left:!1,right:!1},this.tilePadding=new c.Point,this.dirty=!1,this.skipQuadTree=!1,this.syncBounds=!1,this.isMoving=!1,this.stopVelocityOnCollide=!0,this.moveTimer=0,this.moveDistance=0,this.moveDuration=0,this.moveTarget=null,this.moveEnd=null,this.onMoveComplete=new c.Signal,this.movementCallback=null,this.movementCallbackContext=null,this._reset=!0,this._sx=a.scale.x,this._sy=a.scale.y,this._dx=0,this._dy=0},c.Physics.Arcade.Body.prototype={updateBounds:function(){if(this.syncBounds){var a=this.sprite.getBounds();a.ceilAll(),a.width===this.width&&a.height===this.height||(this.width=a.width,this.height=a.height,this._reset=!0)}else{var b=Math.abs(this.sprite.scale.x),c=Math.abs(this.sprite.scale.y);b===this._sx&&c===this._sy||(this.width=this.sourceWidth*b,this.height=this.sourceHeight*c,this._sx=b,this._sy=c,this._reset=!0)}this._reset&&(this.halfWidth=Math.floor(this.width/2),this.halfHeight=Math.floor(this.height/2),this.center.setTo(this.position.x+this.halfWidth,this.position.y+this.halfHeight))},preUpdate:function(){this.enable&&!this.game.physics.arcade.isPaused&&(this.dirty=!0,this.wasTouching.none=this.touching.none,this.wasTouching.up=this.touching.up,this.wasTouching.down=this.touching.down,this.wasTouching.left=this.touching.left,this.wasTouching.right=this.touching.right,this.touching.none=!0,this.touching.up=!1,this.touching.down=!1,this.touching.left=!1,this.touching.right=!1,this.blocked.up=!1,this.blocked.down=!1,this.blocked.left=!1,this.blocked.right=!1,this.embedded=!1,this.updateBounds(),this.position.x=this.sprite.world.x-this.sprite.anchor.x*this.sprite.width+this.sprite.scale.x*this.offset.x,this.position.x-=this.sprite.scale.x<0?this.width:0,this.position.y=this.sprite.world.y-this.sprite.anchor.y*this.sprite.height+this.sprite.scale.y*this.offset.y,this.position.y-=this.sprite.scale.y<0?this.height:0,this.rotation=this.sprite.angle,this.preRotation=this.rotation,(this._reset||this.sprite.fresh)&&(this.prev.x=this.position.x,this.prev.y=this.position.y),this.moves&&(this.game.physics.arcade.updateMotion(this),this.newVelocity.set(this.velocity.x*this.game.time.physicsElapsed,this.velocity.y*this.game.time.physicsElapsed),this.position.x+=this.newVelocity.x,this.position.y+=this.newVelocity.y,this.position.x===this.prev.x&&this.position.y===this.prev.y||(this.angle=Math.atan2(this.velocity.y,this.velocity.x)),this.speed=Math.sqrt(this.velocity.x*this.velocity.x+this.velocity.y*this.velocity.y),this.collideWorldBounds&&this.checkWorldBounds()&&this.onWorldBounds&&this.onWorldBounds.dispatch(this.sprite,this.blocked.up,this.blocked.down,this.blocked.left,this.blocked.right)),this._dx=this.deltaX(),this._dy=this.deltaY(),this._reset=!1)},updateMovement:function(){var a=0,b=0!==this.overlapX||0!==this.overlapY;if(this.moveDuration>0?(this.moveTimer+=this.game.time.elapsedMS,a=this.moveTimer/this.moveDuration):(this.moveTarget.end.set(this.position.x,this.position.y),a=this.moveTarget.length/this.moveDistance),this.movementCallback)var c=this.movementCallback.call(this.movementCallbackContext,this,this.velocity,a);return b||a>=1||void 0!==c&&c!==!0?(this.stopMovement(a>=1||this.stopVelocityOnCollide&&b),!1):!0},stopMovement:function(a){this.isMoving&&(this.isMoving=!1,a&&this.velocity.set(0),this.onMoveComplete.dispatch(this.sprite,0!==this.overlapX||0!==this.overlapY))},postUpdate:function(){this.enable&&this.dirty&&(this.isMoving&&this.updateMovement(),this.dirty=!1,this.deltaX()<0?this.facing=c.LEFT:this.deltaX()>0&&(this.facing=c.RIGHT),this.deltaY()<0?this.facing=c.UP:this.deltaY()>0&&(this.facing=c.DOWN),this.moves&&(this._dx=this.deltaX(),this._dy=this.deltaY(),0!==this.deltaMax.x&&0!==this._dx&&(this._dx<0&&this._dx<-this.deltaMax.x?this._dx=-this.deltaMax.x:this._dx>0&&this._dx>this.deltaMax.x&&(this._dx=this.deltaMax.x)),0!==this.deltaMax.y&&0!==this._dy&&(this._dy<0&&this._dy<-this.deltaMax.y?this._dy=-this.deltaMax.y:this._dy>0&&this._dy>this.deltaMax.y&&(this._dy=this.deltaMax.y)),this.sprite.position.x+=this._dx,this.sprite.position.y+=this._dy,this._reset=!0),this.center.setTo(this.position.x+this.halfWidth,this.position.y+this.halfHeight),this.allowRotation&&(this.sprite.angle+=this.deltaZ()),this.prev.x=this.position.x,this.prev.y=this.position.y)},checkWorldBounds:function(){var a=this.position,b=this.game.physics.arcade.bounds,c=this.game.physics.arcade.checkCollision,d=this.worldBounce?-this.worldBounce.x:-this.bounce.x,e=this.worldBounce?-this.worldBounce.y:-this.bounce.y;if(this.isCircle){var f={x:this.center.x-this.radius,y:this.center.y-this.radius,right:this.center.x+this.radius,bottom:this.center.y+this.radius};f.xb.right&&c.right&&(a.x=b.right-this.halfWidth-this.radius,this.velocity.x*=d,this.blocked.right=!0),f.yb.bottom&&c.down&&(a.y=b.bottom-this.halfHeight-this.radius,this.velocity.y*=e,this.blocked.down=!0)}else a.xb.right&&c.right&&(a.x=b.right-this.width,this.velocity.x*=d,this.blocked.right=!0),a.yb.bottom&&c.down&&(a.y=b.bottom-this.height,this.velocity.y*=e,this.blocked.down=!0);return this.blocked.up||this.blocked.down||this.blocked.left||this.blocked.right},moveFrom:function(a,b,c){if(void 0===b&&(b=this.speed),0===b)return!1;var d;return void 0===c?(d=this.angle,c=this.game.math.radToDeg(d)):d=this.game.math.degToRad(c),this.moveTimer=0,this.moveDuration=a,0===c||180===c?this.velocity.set(Math.cos(d)*b,0):90===c||270===c?this.velocity.set(0,Math.sin(d)*b):this.velocity.set(Math.cos(d)*b,Math.sin(d)*b),this.isMoving=!0,!0},moveTo:function(a,b,d){var e=b/(a/1e3);if(0===e)return!1;var f;return void 0===d?(f=this.angle,d=this.game.math.radToDeg(f)):f=this.game.math.degToRad(d),b=Math.abs(b),this.moveDuration=0,this.moveDistance=b,null===this.moveTarget&&(this.moveTarget=new c.Line,this.moveEnd=new c.Point),this.moveTarget.fromAngle(this.x,this.y,f,b),this.moveEnd.set(this.moveTarget.end.x,this.moveTarget.end.y),this.moveTarget.setTo(this.x,this.y,this.x,this.y),0===d||180===d?this.velocity.set(Math.cos(f)*e,0):90===d||270===d?this.velocity.set(0,Math.sin(f)*e):this.velocity.set(Math.cos(f)*e,Math.sin(f)*e),this.isMoving=!0,!0},setSize:function(a,b,c,d){void 0===c&&(c=this.offset.x),void 0===d&&(d=this.offset.y),this.sourceWidth=a,this.sourceHeight=b,this.width=this.sourceWidth*this._sx,this.height=this.sourceHeight*this._sy,this.halfWidth=Math.floor(this.width/2),this.halfHeight=Math.floor(this.height/2),this.offset.setTo(c,d),this.center.setTo(this.position.x+this.halfWidth,this.position.y+this.halfHeight),this.isCircle=!1,this.radius=0},setCircle:function(a,b,c){void 0===b&&(b=this.offset.x),void 0===c&&(c=this.offset.y),a>0?(this.isCircle=!0,this.radius=a,this.sourceWidth=2*a,this.sourceHeight=2*a,this.width=this.sourceWidth*this._sx,this.height=this.sourceHeight*this._sy,this.halfWidth=Math.floor(this.width/2),this.halfHeight=Math.floor(this.height/2),this.offset.setTo(b,c),this.center.setTo(this.position.x+this.halfWidth,this.position.y+this.halfHeight)):this.isCircle=!1},reset:function(a,b){this.velocity.set(0),this.acceleration.set(0),this.speed=0,this.angularVelocity=0,this.angularAcceleration=0,this.position.x=a-this.sprite.anchor.x*this.sprite.width+this.sprite.scale.x*this.offset.x,this.position.x-=this.sprite.scale.x<0?this.width:0,this.position.y=b-this.sprite.anchor.y*this.sprite.height+this.sprite.scale.y*this.offset.y, +this.position.y-=this.sprite.scale.y<0?this.height:0,this.prev.x=this.position.x,this.prev.y=this.position.y,this.rotation=this.sprite.angle,this.preRotation=this.rotation,this._sx=this.sprite.scale.x,this._sy=this.sprite.scale.y,this.center.setTo(this.position.x+this.halfWidth,this.position.y+this.halfHeight)},getBounds:function(a){return this.isCircle?(a.x=this.center.x-this.radius,a.y=this.center.y-this.radius,a.right=this.center.x+this.radius,a.bottom=this.center.y+this.radius):(a.x=this.x,a.y=this.y,a.right=this.right,a.bottom=this.bottom),a},hitTest:function(a,b){return this.isCircle?c.Circle.contains(this,a,b):c.Rectangle.contains(this,a,b)},onFloor:function(){return this.blocked.down},onCeiling:function(){return this.blocked.up},onWall:function(){return this.blocked.left||this.blocked.right},deltaAbsX:function(){return this.deltaX()>0?this.deltaX():-this.deltaX()},deltaAbsY:function(){return this.deltaY()>0?this.deltaY():-this.deltaY()},deltaX:function(){return this.position.x-this.prev.x},deltaY:function(){return this.position.y-this.prev.y},deltaZ:function(){return this.rotation-this.preRotation},destroy:function(){this.sprite.parent&&this.sprite.parent instanceof c.Group&&this.sprite.parent.removeFromHash(this.sprite),this.sprite.body=null,this.sprite=null}},Object.defineProperty(c.Physics.Arcade.Body.prototype,"left",{get:function(){return this.position.x}}),Object.defineProperty(c.Physics.Arcade.Body.prototype,"right",{get:function(){return this.position.x+this.width}}),Object.defineProperty(c.Physics.Arcade.Body.prototype,"top",{get:function(){return this.position.y}}),Object.defineProperty(c.Physics.Arcade.Body.prototype,"bottom",{get:function(){return this.position.y+this.height}}),Object.defineProperty(c.Physics.Arcade.Body.prototype,"x",{get:function(){return this.position.x},set:function(a){this.position.x=a}}),Object.defineProperty(c.Physics.Arcade.Body.prototype,"y",{get:function(){return this.position.y},set:function(a){this.position.y=a}}),c.Physics.Arcade.Body.render=function(a,b,c,d){void 0===d&&(d=!0),c=c||"rgba(0,255,0,0.4)",a.fillStyle=c,a.strokeStyle=c,b.isCircle?(a.beginPath(),a.arc(b.center.x-b.game.camera.x,b.center.y-b.game.camera.y,b.radius,0,2*Math.PI),d?a.fill():a.stroke()):d?a.fillRect(b.position.x-b.game.camera.x,b.position.y-b.game.camera.y,b.width,b.height):a.strokeRect(b.position.x-b.game.camera.x,b.position.y-b.game.camera.y,b.width,b.height)},c.Physics.Arcade.Body.renderBodyInfo=function(a,b){a.line("x: "+b.x.toFixed(2),"y: "+b.y.toFixed(2),"width: "+b.width,"height: "+b.height),a.line("velocity x: "+b.velocity.x.toFixed(2),"y: "+b.velocity.y.toFixed(2),"deltaX: "+b._dx.toFixed(2),"deltaY: "+b._dy.toFixed(2)),a.line("acceleration x: "+b.acceleration.x.toFixed(2),"y: "+b.acceleration.y.toFixed(2),"speed: "+b.speed.toFixed(2),"angle: "+b.angle.toFixed(2)),a.line("gravity x: "+b.gravity.x,"y: "+b.gravity.y,"bounce x: "+b.bounce.x.toFixed(2),"y: "+b.bounce.y.toFixed(2)),a.line("touching left: "+b.touching.left,"right: "+b.touching.right,"up: "+b.touching.up,"down: "+b.touching.down),a.line("blocked left: "+b.blocked.left,"right: "+b.blocked.right,"up: "+b.blocked.up,"down: "+b.blocked.down)},c.Physics.Arcade.Body.prototype.constructor=c.Physics.Arcade.Body,c.Physics.Arcade.TilemapCollision=function(){},c.Physics.Arcade.TilemapCollision.prototype={TILE_BIAS:16,collideSpriteVsTilemapLayer:function(a,b,c,d,e,f){if(a.body){var g=b.getTiles(a.body.position.x-a.body.tilePadding.x,a.body.position.y-a.body.tilePadding.y,a.body.width+a.body.tilePadding.x,a.body.height+a.body.tilePadding.y,!1,!1);if(0!==g.length)for(var h=0;hb.deltaAbsY()?j=-1:b.deltaAbsX()j){if((c.faceLeft||c.faceRight)&&(h=this.tileCheckX(b,c,d),0!==h&&!c.intersects(b.position.x-f,b.position.y-g,b.right-f,b.bottom-g)))return!0;(c.faceTop||c.faceBottom)&&(i=this.tileCheckY(b,c,d))}else{if((c.faceTop||c.faceBottom)&&(i=this.tileCheckY(b,c,d),0!==i&&!c.intersects(b.position.x-f,b.position.y-g,b.right-f,b.bottom-g)))return!0;(c.faceLeft||c.faceRight)&&(h=this.tileCheckX(b,c,d))}return 0!==h||0!==i},tileCheckX:function(a,b,c){var d=0,e=c.fixedToCamera?0:c.position.x;return a.deltaX()<0&&!a.blocked.left&&b.collideRight&&a.checkCollision.left?b.faceRight&&a.x-e0&&!a.blocked.right&&b.collideLeft&&a.checkCollision.right&&b.faceLeft&&a.right-e>b.left&&(d=a.right-e-b.left,d>this.TILE_BIAS&&(d=0)),0!==d&&(a.customSeparateX?a.overlapX=d:this.processTileSeparationX(a,d)),d},tileCheckY:function(a,b,c){var d=0,e=c.fixedToCamera?0:c.position.y;return a.deltaY()<0&&!a.blocked.up&&b.collideDown&&a.checkCollision.up?b.faceBottom&&a.y-e0&&!a.blocked.down&&b.collideUp&&a.checkCollision.down&&b.faceTop&&a.bottom-e>b.top&&(d=a.bottom-e-b.top,d>this.TILE_BIAS&&(d=0)),0!==d&&(a.customSeparateY?a.overlapY=d:this.processTileSeparationY(a,d)),d},processTileSeparationX:function(a,b){0>b?a.blocked.left=!0:b>0&&(a.blocked.right=!0),a.position.x-=b,0===a.bounce.x?a.velocity.x=0:a.velocity.x=-a.velocity.x*a.bounce.x},processTileSeparationY:function(a,b){0>b?a.blocked.up=!0:b>0&&(a.blocked.down=!0),a.position.y-=b,0===a.bounce.y?a.velocity.y=0:a.velocity.y=-a.velocity.y*a.bounce.y}},c.Utils.mixinPrototype(c.Physics.Arcade.prototype,c.Physics.Arcade.TilemapCollision.prototype),p2.Body.prototype.parent=null,p2.Spring.prototype.parent=null,c.Physics.P2=function(a,b){this.game=a,void 0===b?b={gravity:[0,0],broadphase:new p2.SAPBroadphase}:(b.hasOwnProperty("gravity")||(b.gravity=[0,0]),b.hasOwnProperty("broadphase")||(b.broadphase=new p2.SAPBroadphase)),this.config=b,this.world=new p2.World(this.config),this.frameRate=1/60,this.useElapsedTime=!1,this.paused=!1,this.materials=[],this.gravity=new c.Physics.P2.InversePointProxy(this,this.world.gravity),this.walls={left:null,right:null,top:null,bottom:null},this.onBodyAdded=new c.Signal,this.onBodyRemoved=new c.Signal,this.onSpringAdded=new c.Signal,this.onSpringRemoved=new c.Signal,this.onConstraintAdded=new c.Signal,this.onConstraintRemoved=new c.Signal,this.onContactMaterialAdded=new c.Signal,this.onContactMaterialRemoved=new c.Signal,this.postBroadphaseCallback=null,this.callbackContext=null,this.onBeginContact=new c.Signal,this.onEndContact=new c.Signal,b.hasOwnProperty("mpx")&&b.hasOwnProperty("pxm")&&b.hasOwnProperty("mpxi")&&b.hasOwnProperty("pxmi")&&(this.mpx=b.mpx,this.mpxi=b.mpxi,this.pxm=b.pxm,this.pxmi=b.pxmi),this.world.on("beginContact",this.beginContactHandler,this),this.world.on("endContact",this.endContactHandler,this),this.collisionGroups=[],this.nothingCollisionGroup=new c.Physics.P2.CollisionGroup(1),this.boundsCollisionGroup=new c.Physics.P2.CollisionGroup(2),this.everythingCollisionGroup=new c.Physics.P2.CollisionGroup(2147483648),this.boundsCollidesWith=[],this._toRemove=[],this._collisionGroupID=2,this._boundsLeft=!0,this._boundsRight=!0,this._boundsTop=!0,this._boundsBottom=!0,this._boundsOwnGroup=!1,this.setBoundsToWorld(!0,!0,!0,!0,!1)},c.Physics.P2.prototype={removeBodyNextStep:function(a){this._toRemove.push(a)},preUpdate:function(){for(var a=this._toRemove.length;a--;)this.removeBody(this._toRemove[a]);this._toRemove.length=0},enable:function(a,b,d){void 0===b&&(b=!1),void 0===d&&(d=!0);var e=1;if(Array.isArray(a))for(e=a.length;e--;)a[e]instanceof c.Group?this.enable(a[e].children,b,d):(this.enableBody(a[e],b),d&&a[e].hasOwnProperty("children")&&a[e].children.length>0&&this.enable(a[e],b,!0));else a instanceof c.Group?this.enable(a.children,b,d):(this.enableBody(a,b),d&&a.hasOwnProperty("children")&&a.children.length>0&&this.enable(a.children,b,!0))},enableBody:function(a,b){a.hasOwnProperty("body")&&null===a.body&&(a.body=new c.Physics.P2.Body(this.game,a,a.x,a.y,1),a.body.debug=b,"undefined"!=typeof a.anchor&&a.anchor.set(.5))},setImpactEvents:function(a){a?this.world.on("impact",this.impactHandler,this):this.world.off("impact",this.impactHandler,this)},setPostBroadphaseCallback:function(a,b){this.postBroadphaseCallback=a,this.callbackContext=b,null!==a?this.world.on("postBroadphase",this.postBroadphaseHandler,this):this.world.off("postBroadphase",this.postBroadphaseHandler,this)},postBroadphaseHandler:function(a){if(this.postBroadphaseCallback&&0!==a.pairs.length)for(var b=a.pairs.length-2;b>=0;b-=2)a.pairs[b].parent&&a.pairs[b+1].parent&&!this.postBroadphaseCallback.call(this.callbackContext,a.pairs[b].parent,a.pairs[b+1].parent)&&a.pairs.splice(b,2)},impactHandler:function(a){if(a.bodyA.parent&&a.bodyB.parent){var b=a.bodyA.parent,c=a.bodyB.parent;b._bodyCallbacks[a.bodyB.id]&&b._bodyCallbacks[a.bodyB.id].call(b._bodyCallbackContext[a.bodyB.id],b,c,a.shapeA,a.shapeB),c._bodyCallbacks[a.bodyA.id]&&c._bodyCallbacks[a.bodyA.id].call(c._bodyCallbackContext[a.bodyA.id],c,b,a.shapeB,a.shapeA),b._groupCallbacks[a.shapeB.collisionGroup]&&b._groupCallbacks[a.shapeB.collisionGroup].call(b._groupCallbackContext[a.shapeB.collisionGroup],b,c,a.shapeA,a.shapeB),c._groupCallbacks[a.shapeA.collisionGroup]&&c._groupCallbacks[a.shapeA.collisionGroup].call(c._groupCallbackContext[a.shapeA.collisionGroup],c,b,a.shapeB,a.shapeA)}},beginContactHandler:function(a){a.bodyA&&a.bodyB&&(this.onBeginContact.dispatch(a.bodyA,a.bodyB,a.shapeA,a.shapeB,a.contactEquations),a.bodyA.parent&&a.bodyA.parent.onBeginContact.dispatch(a.bodyB.parent,a.bodyB,a.shapeA,a.shapeB,a.contactEquations),a.bodyB.parent&&a.bodyB.parent.onBeginContact.dispatch(a.bodyA.parent,a.bodyA,a.shapeB,a.shapeA,a.contactEquations))},endContactHandler:function(a){a.bodyA&&a.bodyB&&(this.onEndContact.dispatch(a.bodyA,a.bodyB,a.shapeA,a.shapeB),a.bodyA.parent&&a.bodyA.parent.onEndContact.dispatch(a.bodyB.parent,a.bodyB,a.shapeA,a.shapeB),a.bodyB.parent&&a.bodyB.parent.onEndContact.dispatch(a.bodyA.parent,a.bodyA,a.shapeB,a.shapeA))},setBoundsToWorld:function(a,b,c,d,e){this.setBounds(this.game.world.bounds.x,this.game.world.bounds.y,this.game.world.bounds.width,this.game.world.bounds.height,a,b,c,d,e)},setWorldMaterial:function(a,b,c,d,e){void 0===b&&(b=!0),void 0===c&&(c=!0),void 0===d&&(d=!0),void 0===e&&(e=!0),b&&this.walls.left&&(this.walls.left.shapes[0].material=a),c&&this.walls.right&&(this.walls.right.shapes[0].material=a),d&&this.walls.top&&(this.walls.top.shapes[0].material=a),e&&this.walls.bottom&&(this.walls.bottom.shapes[0].material=a)},updateBoundsCollisionGroup:function(a){void 0===a&&(a=!0);var b=a?this.boundsCollisionGroup.mask:this.everythingCollisionGroup.mask;this.walls.left&&(this.walls.left.shapes[0].collisionGroup=b),this.walls.right&&(this.walls.right.shapes[0].collisionGroup=b),this.walls.top&&(this.walls.top.shapes[0].collisionGroup=b),this.walls.bottom&&(this.walls.bottom.shapes[0].collisionGroup=b),this._boundsOwnGroup=a},setBounds:function(a,b,c,d,e,f,g,h,i){void 0===e&&(e=this._boundsLeft),void 0===f&&(f=this._boundsRight),void 0===g&&(g=this._boundsTop),void 0===h&&(h=this._boundsBottom),void 0===i&&(i=this._boundsOwnGroup),this.setupWall(e,"left",a,b,1.5707963267948966,i),this.setupWall(f,"right",a+c,b,-1.5707963267948966,i),this.setupWall(g,"top",a,b,-3.141592653589793,i),this.setupWall(h,"bottom",a,b+d,0,i),this._boundsLeft=e,this._boundsRight=f,this._boundsTop=g,this._boundsBottom=h,this._boundsOwnGroup=i},setupWall:function(a,b,c,d,e,f){a?(this.walls[b]?this.walls[b].position=[this.pxmi(c),this.pxmi(d)]:(this.walls[b]=new p2.Body({mass:0,position:[this.pxmi(c),this.pxmi(d)],angle:e}),this.walls[b].addShape(new p2.Plane),this.world.addBody(this.walls[b])),f&&(this.walls[b].shapes[0].collisionGroup=this.boundsCollisionGroup.mask)):this.walls[b]&&(this.world.removeBody(this.walls[b]),this.walls[b]=null)},pause:function(){this.paused=!0},resume:function(){this.paused=!1},update:function(){this.paused||(this.useElapsedTime?this.world.step(this.game.time.physicsElapsed):this.world.step(this.frameRate))},reset:function(){this.world.on("beginContact",this.beginContactHandler,this),this.world.on("endContact",this.endContactHandler,this),this.nothingCollisionGroup=new c.Physics.P2.CollisionGroup(1),this.boundsCollisionGroup=new c.Physics.P2.CollisionGroup(2),this.everythingCollisionGroup=new c.Physics.P2.CollisionGroup(2147483648),this._collisionGroupID=2,this.setBoundsToWorld(!0,!0,!0,!0,!1)},clear:function(){this.world.time=0,this.world.fixedStepTime=0,this.world.solver&&this.world.solver.equations.length&&this.world.solver.removeAllEquations();for(var a=this.world.constraints,b=a.length-1;b>=0;b--)this.world.removeConstraint(a[b]);for(var c=this.world.bodies,b=c.length-1;b>=0;b--)this.world.removeBody(c[b]);for(var d=this.world.springs,b=d.length-1;b>=0;b--)this.world.removeSpring(d[b]);for(var e=this.world.contactMaterials,b=e.length-1;b>=0;b--)this.world.removeContactMaterial(e[b]);this.world.off("beginContact",this.beginContactHandler,this),this.world.off("endContact",this.endContactHandler,this),this.postBroadphaseCallback=null,this.callbackContext=null,this.impactCallback=null,this.collisionGroups=[],this._toRemove=[],this.boundsCollidesWith=[],this.walls={left:null,right:null,top:null,bottom:null}},destroy:function(){this.clear(),this.game=null},addBody:function(a){return a.data.world?!1:(this.world.addBody(a.data),this.onBodyAdded.dispatch(a),!0)},removeBody:function(a){return a.data.world==this.world&&(this.world.removeBody(a.data),this.onBodyRemoved.dispatch(a)),a},addSpring:function(a){return a instanceof c.Physics.P2.Spring||a instanceof c.Physics.P2.RotationalSpring?this.world.addSpring(a.data):this.world.addSpring(a),this.onSpringAdded.dispatch(a),a},removeSpring:function(a){return a instanceof c.Physics.P2.Spring||a instanceof c.Physics.P2.RotationalSpring?this.world.removeSpring(a.data):this.world.removeSpring(a),this.onSpringRemoved.dispatch(a),a},createDistanceConstraint:function(a,b,d,e,f,g){return a=this.getBody(a),b=this.getBody(b),a&&b?this.addConstraint(new c.Physics.P2.DistanceConstraint(this,a,b,d,e,f,g)):void console.warn("Cannot create Constraint, invalid body objects given")},createGearConstraint:function(a,b,d,e){return a=this.getBody(a),b=this.getBody(b),a&&b?this.addConstraint(new c.Physics.P2.GearConstraint(this,a,b,d,e)):void console.warn("Cannot create Constraint, invalid body objects given")},createRevoluteConstraint:function(a,b,d,e,f,g){return a=this.getBody(a),d=this.getBody(d),a&&d?this.addConstraint(new c.Physics.P2.RevoluteConstraint(this,a,b,d,e,f,g)):void console.warn("Cannot create Constraint, invalid body objects given")},createLockConstraint:function(a,b,d,e,f){return a=this.getBody(a),b=this.getBody(b),a&&b?this.addConstraint(new c.Physics.P2.LockConstraint(this,a,b,d,e,f)):void console.warn("Cannot create Constraint, invalid body objects given")},createPrismaticConstraint:function(a,b,d,e,f,g,h){return a=this.getBody(a),b=this.getBody(b),a&&b?this.addConstraint(new c.Physics.P2.PrismaticConstraint(this,a,b,d,e,f,g,h)):void console.warn("Cannot create Constraint, invalid body objects given")},addConstraint:function(a){return this.world.addConstraint(a),this.onConstraintAdded.dispatch(a),a},removeConstraint:function(a){return this.world.removeConstraint(a),this.onConstraintRemoved.dispatch(a),a},addContactMaterial:function(a){return this.world.addContactMaterial(a),this.onContactMaterialAdded.dispatch(a),a},removeContactMaterial:function(a){return this.world.removeContactMaterial(a),this.onContactMaterialRemoved.dispatch(a),a},getContactMaterial:function(a,b){return this.world.getContactMaterial(a,b)},setMaterial:function(a,b){for(var c=b.length;c--;)b[c].setMaterial(a)},createMaterial:function(a,b){a=a||"";var d=new c.Physics.P2.Material(a);return this.materials.push(d),"undefined"!=typeof b&&b.setMaterial(d),d},createContactMaterial:function(a,b,d){void 0===a&&(a=this.createMaterial()),void 0===b&&(b=this.createMaterial());var e=new c.Physics.P2.ContactMaterial(a,b,d);return this.addContactMaterial(e)},getBodies:function(){for(var a=[],b=this.world.bodies.length;b--;)a.push(this.world.bodies[b].parent);return a},getBody:function(a){return a instanceof p2.Body?a:a instanceof c.Physics.P2.Body?a.data:a.body&&a.body.type===c.Physics.P2JS?a.body.data:null},getSprings:function(){for(var a=[],b=this.world.springs.length;b--;)a.push(this.world.springs[b].parent);return a},getConstraints:function(){for(var a=[],b=this.world.constraints.length;b--;)a.push(this.world.constraints[b]);return a},hitTest:function(a,b,d,e){void 0===b&&(b=this.world.bodies),void 0===d&&(d=5),void 0===e&&(e=!1);for(var f=[this.pxmi(a.x),this.pxmi(a.y)],g=[],h=b.length;h--;)b[h]instanceof c.Physics.P2.Body&&(!e||b[h].data.type!==p2.Body.STATIC)?g.push(b[h].data):b[h]instanceof p2.Body&&b[h].parent&&(!e||b[h].type!==p2.Body.STATIC)?g.push(b[h]):b[h]instanceof c.Sprite&&b[h].hasOwnProperty("body")&&(!e||b[h].body.data.type!==p2.Body.STATIC)&&g.push(b[h].body.data);return this.world.hitTest(f,g,d)},toJSON:function(){return this.world.toJSON()},createCollisionGroup:function(a){var b=Math.pow(2,this._collisionGroupID);this.walls.left&&(this.walls.left.shapes[0].collisionMask=this.walls.left.shapes[0].collisionMask|b),this.walls.right&&(this.walls.right.shapes[0].collisionMask=this.walls.right.shapes[0].collisionMask|b),this.walls.top&&(this.walls.top.shapes[0].collisionMask=this.walls.top.shapes[0].collisionMask|b),this.walls.bottom&&(this.walls.bottom.shapes[0].collisionMask=this.walls.bottom.shapes[0].collisionMask|b),this._collisionGroupID++;var d=new c.Physics.P2.CollisionGroup(b);return this.collisionGroups.push(d),a&&this.setCollisionGroup(a,d),d},setCollisionGroup:function(a,b){if(a instanceof c.Group)for(var d=0;de;e++){var g=a.collision[b][e],h=this.createBody(g.x,g.y,0,c,{},g.polyline);h&&d.push(h)}return d},clearTilemapLayerBodies:function(a,b){b=a.getLayer(b);for(var c=a.layers[b].bodies.length;c--;)a.layers[b].bodies[c].destroy();a.layers[b].bodies.length=0},convertTilemap:function(a,b,c,d){b=a.getLayer(b),void 0===c&&(c=!0),void 0===d&&(d=!0),this.clearTilemapLayerBodies(a,b);for(var e=0,f=0,g=0,h=0,i=a.layers[b].height;i>h;h++){e=0;for(var j=0,k=a.layers[b].width;k>j;j++){var l=a.layers[b].data[h][j];if(l&&l.index>-1&&l.collides)if(d){var m=a.getTileRight(b,j,h);if(0===e&&(f=l.x*l.width,g=l.y*l.height,e=l.width),m&&m.collides)e+=l.width;else{var n=this.createBody(f,g,0,!1);n.addRectangle(e,l.height,e/2,l.height/2,0),c&&this.addBody(n),a.layers[b].bodies.push(n),e=0}}else{var n=this.createBody(l.x*l.width,l.y*l.height,0,!1);n.addRectangle(l.width,l.height,l.width/2,l.height/2,0),c&&this.addBody(n),a.layers[b].bodies.push(n)}}}return a.layers[b].bodies},mpx:function(a){return a*=20},pxm:function(a){return.05*a},mpxi:function(a){return a*=-20},pxmi:function(a){return a*-.05}},Object.defineProperty(c.Physics.P2.prototype,"friction",{get:function(){return this.world.defaultContactMaterial.friction},set:function(a){this.world.defaultContactMaterial.friction=a}}),Object.defineProperty(c.Physics.P2.prototype,"restitution",{get:function(){return this.world.defaultContactMaterial.restitution},set:function(a){this.world.defaultContactMaterial.restitution=a}}),Object.defineProperty(c.Physics.P2.prototype,"contactMaterial",{get:function(){return this.world.defaultContactMaterial},set:function(a){this.world.defaultContactMaterial=a}}),Object.defineProperty(c.Physics.P2.prototype,"applySpringForces",{get:function(){return this.world.applySpringForces},set:function(a){this.world.applySpringForces=a}}),Object.defineProperty(c.Physics.P2.prototype,"applyDamping",{get:function(){return this.world.applyDamping},set:function(a){this.world.applyDamping=a}}),Object.defineProperty(c.Physics.P2.prototype,"applyGravity",{get:function(){return this.world.applyGravity},set:function(a){this.world.applyGravity=a}}),Object.defineProperty(c.Physics.P2.prototype,"solveConstraints",{get:function(){return this.world.solveConstraints},set:function(a){this.world.solveConstraints=a}}),Object.defineProperty(c.Physics.P2.prototype,"time",{get:function(){return this.world.time}}),Object.defineProperty(c.Physics.P2.prototype,"emitImpactEvent",{get:function(){return this.world.emitImpactEvent},set:function(a){this.world.emitImpactEvent=a}}),Object.defineProperty(c.Physics.P2.prototype,"sleepMode",{get:function(){return this.world.sleepMode},set:function(a){this.world.sleepMode=a}}),Object.defineProperty(c.Physics.P2.prototype,"total",{get:function(){return this.world.bodies.length}}),c.Physics.P2.FixtureList=function(a){Array.isArray(a)||(a=[a]),this.rawList=a,this.init(),this.parse(this.rawList)},c.Physics.P2.FixtureList.prototype={init:function(){this.namedFixtures={},this.groupedFixtures=[],this.allFixtures=[]},setCategory:function(a,b){var c=function(b){b.collisionGroup=a};this.getFixtures(b).forEach(c)},setMask:function(a,b){var c=function(b){b.collisionMask=a};this.getFixtures(b).forEach(c)},setSensor:function(a,b){var c=function(b){b.sensor=a};this.getFixtures(b).forEach(c)},setMaterial:function(a,b){var c=function(b){b.material=a};this.getFixtures(b).forEach(c)},getFixtures:function(a){var b=[];if(a){a instanceof Array||(a=[a]);var c=this;return a.forEach(function(a){c.namedFixtures[a]&&b.push(c.namedFixtures[a])}),this.flatten(b)}return this.allFixtures},getFixtureByKey:function(a){return this.namedFixtures[a]},getGroup:function(a){return this.groupedFixtures[a]},parse:function(){var a,b,c,d;c=this.rawList,d=[];for(a in c)b=c[a],isNaN(a-0)?this.namedFixtures[a]=this.flatten(b):(this.groupedFixtures[a]=this.groupedFixtures[a]||[],this.groupedFixtures[a]=this.groupedFixtures[a].concat(b)),d.push(this.allFixtures=this.flatten(this.groupedFixtures))},flatten:function(a){var b,c;return b=[],c=arguments.callee,a.forEach(function(a){return Array.prototype.push.apply(b,Array.isArray(a)?c(a):[a])}),b}},c.Physics.P2.PointProxy=function(a,b){this.world=a,this.destination=b},c.Physics.P2.PointProxy.prototype.constructor=c.Physics.P2.PointProxy,Object.defineProperty(c.Physics.P2.PointProxy.prototype,"x",{get:function(){return this.world.mpx(this.destination[0])},set:function(a){this.destination[0]=this.world.pxm(a)}}),Object.defineProperty(c.Physics.P2.PointProxy.prototype,"y",{get:function(){return this.world.mpx(this.destination[1])},set:function(a){this.destination[1]=this.world.pxm(a)}}),Object.defineProperty(c.Physics.P2.PointProxy.prototype,"mx",{get:function(){return this.destination[0]},set:function(a){this.destination[0]=a}}),Object.defineProperty(c.Physics.P2.PointProxy.prototype,"my",{get:function(){return this.destination[1]},set:function(a){this.destination[1]=a}}),c.Physics.P2.InversePointProxy=function(a,b){this.world=a,this.destination=b},c.Physics.P2.InversePointProxy.prototype.constructor=c.Physics.P2.InversePointProxy,Object.defineProperty(c.Physics.P2.InversePointProxy.prototype,"x",{get:function(){return this.world.mpxi(this.destination[0])},set:function(a){this.destination[0]=this.world.pxmi(a)}}),Object.defineProperty(c.Physics.P2.InversePointProxy.prototype,"y",{get:function(){return this.world.mpxi(this.destination[1])},set:function(a){this.destination[1]=this.world.pxmi(a)}}),Object.defineProperty(c.Physics.P2.InversePointProxy.prototype,"mx",{get:function(){return this.destination[0]},set:function(a){this.destination[0]=-a}}),Object.defineProperty(c.Physics.P2.InversePointProxy.prototype,"my",{get:function(){return this.destination[1]},set:function(a){this.destination[1]=-a}}),c.Physics.P2.Body=function(a,b,d,e,f){b=b||null,d=d||0,e=e||0,void 0===f&&(f=1),this.game=a,this.world=a.physics.p2,this.sprite=b,this.type=c.Physics.P2JS,this.offset=new c.Point,this.data=new p2.Body({position:[this.world.pxmi(d),this.world.pxmi(e)],mass:f}),this.data.parent=this,this.velocity=new c.Physics.P2.InversePointProxy(this.world,this.data.velocity),this.force=new c.Physics.P2.InversePointProxy(this.world,this.data.force),this.gravity=new c.Point,this.onBeginContact=new c.Signal,this.onEndContact=new c.Signal,this.collidesWith=[],this.removeNextStep=!1,this.debugBody=null,this.dirty=!1,this._collideWorldBounds=!0,this._bodyCallbacks={},this._bodyCallbackContext={},this._groupCallbacks={},this._groupCallbackContext={},this._reset=!1,b&&(this.setRectangleFromSprite(b),b.exists&&this.game.physics.p2.addBody(this))},c.Physics.P2.Body.prototype={createBodyCallback:function(a,b,c){var d=-1;a.id?d=a.id:a.body&&(d=a.body.id),d>-1&&(null===b?(delete this._bodyCallbacks[d],delete this._bodyCallbackContext[d]):(this._bodyCallbacks[d]=b,this._bodyCallbackContext[d]=c))},createGroupCallback:function(a,b,c){null===b?(delete this._groupCallbacks[a.mask],delete this._groupCallbackContext[a.mask]):(this._groupCallbacks[a.mask]=b,this._groupCallbackContext[a.mask]=c)},getCollisionMask:function(){var a=0;this._collideWorldBounds&&(a=this.game.physics.p2.boundsCollisionGroup.mask);for(var b=0;b=0;c--)this.data.shapes[c].collisionMask=b;else a.collisionMask=b},setCollisionGroup:function(a,b){var c=this.getCollisionMask();if(void 0===b)for(var d=this.data.shapes.length-1;d>=0;d--)this.data.shapes[d].collisionGroup=a.mask,this.data.shapes[d].collisionMask=c;else b.collisionGroup=a.mask,b.collisionMask=c},clearCollision:function(a,b,c){if(void 0===a&&(a=!0),void 0===b&&(b=!0),void 0===c)for(var d=this.data.shapes.length-1;d>=0;d--)a&&(this.data.shapes[d].collisionGroup=null),b&&(this.data.shapes[d].collisionMask=null);else a&&(c.collisionGroup=null),b&&(c.collisionMask=null);a&&(this.collidesWith.length=0)},removeCollisionGroup:function(a,b,c){void 0===b&&(b=!0);var d;if(Array.isArray(a))for(var e=0;e-1&&(this.collidesWith.splice(d,1),b&&(delete this._groupCallbacks[a.mask],delete this._groupCallbackContext[a.mask]));else d=this.collidesWith.indexOf(a),d>-1&&(this.collidesWith.splice(d,1),b&&(delete this._groupCallbacks[a.mask],delete this._groupCallbackContext[a.mask]));var f=this.getCollisionMask();if(void 0===c)for(var e=this.data.shapes.length-1;e>=0;e--)this.data.shapes[e].collisionMask=f;else c.collisionMask=f},collides:function(a,b,c,d){if(Array.isArray(a))for(var e=0;e=0;e--)this.data.shapes[e].collisionMask=f;else d.collisionMask=f},adjustCenterOfMass:function(){this.data.adjustCenterOfMass(),this.shapeChanged()},getVelocityAtPoint:function(a,b){return this.data.getVelocityAtPoint(a,b)},applyDamping:function(a){this.data.applyDamping(a)},applyImpulse:function(a,b,c){this.data.applyImpulse(a,[this.world.pxmi(b),this.world.pxmi(c)])},applyImpulseLocal:function(a,b,c){this.data.applyImpulseLocal(a,[this.world.pxmi(b),this.world.pxmi(c)])},applyForce:function(a,b,c){this.data.applyForce(a,[this.world.pxmi(b),this.world.pxmi(c)])},setZeroForce:function(){this.data.setZeroForce()},setZeroRotation:function(){this.data.angularVelocity=0},setZeroVelocity:function(){this.data.velocity[0]=0,this.data.velocity[1]=0},setZeroDamping:function(){this.data.damping=0,this.data.angularDamping=0},toLocalFrame:function(a,b){return this.data.toLocalFrame(a,b)},toWorldFrame:function(a,b){return this.data.toWorldFrame(a,b)},rotateLeft:function(a){this.data.angularVelocity=this.world.pxm(-a)},rotateRight:function(a){this.data.angularVelocity=this.world.pxm(a)},moveForward:function(a){var b=this.world.pxmi(-a),c=this.data.angle+Math.PI/2;this.data.velocity[0]=b*Math.cos(c),this.data.velocity[1]=b*Math.sin(c)},moveBackward:function(a){var b=this.world.pxmi(-a),c=this.data.angle+Math.PI/2;this.data.velocity[0]=-(b*Math.cos(c)),this.data.velocity[1]=-(b*Math.sin(c))},thrust:function(a){var b=this.world.pxmi(-a),c=this.data.angle+Math.PI/2;this.data.force[0]+=b*Math.cos(c),this.data.force[1]+=b*Math.sin(c)},thrustLeft:function(a){var b=this.world.pxmi(-a),c=this.data.angle;this.data.force[0]+=b*Math.cos(c),this.data.force[1]+=b*Math.sin(c)},thrustRight:function(a){var b=this.world.pxmi(-a),c=this.data.angle;this.data.force[0]-=b*Math.cos(c),this.data.force[1]-=b*Math.sin(c)},reverse:function(a){var b=this.world.pxmi(-a),c=this.data.angle+Math.PI/2;this.data.force[0]-=b*Math.cos(c),this.data.force[1]-=b*Math.sin(c)},moveLeft:function(a){this.data.velocity[0]=this.world.pxmi(-a)},moveRight:function(a){this.data.velocity[0]=this.world.pxmi(a)},moveUp:function(a){this.data.velocity[1]=this.world.pxmi(-a)},moveDown:function(a){this.data.velocity[1]=this.world.pxmi(a)},preUpdate:function(){this.dirty=!0,this.removeNextStep&&(this.removeFromWorld(),this.removeNextStep=!1)},postUpdate:function(){this.sprite.x=this.world.mpxi(this.data.position[0])+this.offset.x,this.sprite.y=this.world.mpxi(this.data.position[1])+this.offset.y,this.fixedRotation||(this.sprite.rotation=this.data.angle),this.debugBody&&this.debugBody.updateSpriteTransform(),this.dirty=!1},reset:function(a,b,c,d){void 0===c&&(c=!1),void 0===d&&(d=!1),this.setZeroForce(),this.setZeroVelocity(),this.setZeroRotation(),c&&this.setZeroDamping(),d&&(this.mass=1),this.x=a,this.y=b},addToWorld:function(){if(this.game.physics.p2._toRemove)for(var a=0;ad;d+=2)c.push([b[d],b[d+1]]);var f=c.length-1;c[f][0]===c[0][0]&&c[f][1]===c[0][1]&&c.pop();for(var g=0;g=0;c--)this.data.shapes[c].material=a;else b.material=a},shapeChanged:function(){this.debugBody&&this.debugBody.draw()},addPhaserPolygon:function(a,b){for(var c=this.game.cache.getPhysicsData(a,b),d=[],e=0;e=0?o>n:n>o;e=o>=0?++n:--n)k=b.vertices[e],p2.vec2.rotate(m,k,a),l.push([(m[0]+i[0])*this.ppu,-(m[1]+i[1])*this.ppu]);this.drawConvex(j,l,b.triangles,f,c,g,this.settings.debugPolygons,[i[0]*this.ppu,-i[1]*this.ppu])}d++}}},drawRectangle:function(a,b,c,d,e,f,g,h,i){void 0===i&&(i=1),void 0===g&&(g=0),a.lineStyle(i,g,1),a.beginFill(h),a.drawRect(b-e/2,c-f/2,e,f)},drawCircle:function(a,b,c,d,e,f,g){void 0===g&&(g=1),void 0===f&&(f=16777215),a.lineStyle(g,0,1),a.beginFill(f,1),a.drawCircle(b,c,2*-e),a.endFill(),a.moveTo(b,c),a.lineTo(b+e*Math.cos(-d),c+e*Math.sin(-d))},drawLine:function(a,b,c,d){void 0===d&&(d=1),void 0===c&&(c=0),a.lineStyle(5*d,c,1),a.moveTo(-b/2,0),a.lineTo(b/2,0)},drawConvex:function(a,b,c,d,e,f,g,h){var i,j,k,l,m,n,o,p,q,r,s;if(void 0===f&&(f=1),void 0===d&&(d=0),g){for(i=[16711680,65280,255],j=0;j!==b.length+1;)l=b[j%b.length],m=b[(j+1)%b.length],o=l[0],r=l[1],p=m[0],s=m[1],a.lineStyle(f,i[j%i.length],1),a.moveTo(o,-r),a.lineTo(p,-s),a.drawCircle(o,-r,2*f),j++;return a.lineStyle(f,0,1),a.drawCircle(h[0],h[1],2*f)}for(a.lineStyle(f,d,1),a.beginFill(e),j=0;j!==b.length;)k=b[j],n=k[0],q=k[1],0===j?a.moveTo(n,-q):a.lineTo(n,-q),j++;return a.endFill(),b.length>2?(a.moveTo(b[b.length-1][0],-b[b.length-1][1]),a.lineTo(b[0][0],-b[0][1])):void 0},drawPath:function(a,b,c,d,e){var f,g,h,i,j,k,l,m,n,o,p,q,r;for(void 0===e&&(e=1),void 0===c&&(c=0),a.lineStyle(e,c,1),"number"==typeof d&&a.beginFill(d),h=null,i=null,g=0;g2&&"number"==typeof d&&(a.moveTo(b[b.length-1][0],b[b.length-1][1]),a.lineTo(b[0][0],b[0][1]))},drawPlane:function(a,b,c,d,e,f,g,h,i,j){var k,l,m;void 0===f&&(f=1),void 0===d&&(d=16777215),a.lineStyle(f,e,11),a.beginFill(d),k=i,a.moveTo(b,-c),l=b+Math.cos(j)*this.game.width,m=c+Math.sin(j)*this.game.height,a.lineTo(l,-m),a.moveTo(b,-c),l=b+Math.cos(j)*-this.game.width,m=c+Math.sin(j)*-this.game.height,a.lineTo(l,-m)},drawCapsule:function(a,b,c,d,e,f,g,h,i){void 0===i&&(i=1),void 0===g&&(g=0),a.lineStyle(i,g,1);var j=Math.cos(d),k=Math.sin(d);a.beginFill(h,1),a.drawCircle(-e/2*j+b,-e/2*k+c,2*-f),a.drawCircle(e/2*j+b,e/2*k+c,2*-f),a.endFill(),a.lineStyle(i,g,0),a.beginFill(h,1),a.moveTo(-e/2*j+f*k+b,-e/2*k+f*j+c),a.lineTo(e/2*j+f*k+b,e/2*k+f*j+c),a.lineTo(e/2*j-f*k+b,e/2*k-f*j+c),a.lineTo(-e/2*j-f*k+b,-e/2*k-f*j+c),a.endFill(),a.lineStyle(i,g,1),a.moveTo(-e/2*j+f*k+b,-e/2*k+f*j+c),a.lineTo(e/2*j+f*k+b,e/2*k+f*j+c),a.moveTo(-e/2*j-f*k+b,-e/2*k-f*j+c),a.lineTo(e/2*j-f*k+b,e/2*k-f*j+c)},randomPastelHex:function(){var a,b,c,d;return c=[255,255,255],d=Math.floor(256*Math.random()),b=Math.floor(256*Math.random()),a=Math.floor(256*Math.random()),d=Math.floor((d+3*c[0])/4),b=Math.floor((b+3*c[1])/4),a=Math.floor((a+3*c[2])/4),this.rgbToHex(d,b,a)},rgbToHex:function(a,b,c){return this.componentToHex(a)+this.componentToHex(b)+this.componentToHex(c)},componentToHex:function(a){var b;return b=a.toString(16),2===b.length?b:b+"0"}}),c.Physics.P2.Spring=function(a,b,c,d,e,f,g,h,i,j){this.game=a.game,this.world=a,void 0===d&&(d=1),void 0===e&&(e=100),void 0===f&&(f=1),d=a.pxm(d);var k={restLength:d,stiffness:e,damping:f};"undefined"!=typeof g&&null!==g&&(k.worldAnchorA=[a.pxm(g[0]),a.pxm(g[1])]),"undefined"!=typeof h&&null!==h&&(k.worldAnchorB=[a.pxm(h[0]),a.pxm(h[1])]),"undefined"!=typeof i&&null!==i&&(k.localAnchorA=[a.pxm(i[0]),a.pxm(i[1])]),"undefined"!=typeof j&&null!==j&&(k.localAnchorB=[a.pxm(j[0]),a.pxm(j[1])]),this.data=new p2.LinearSpring(b,c,k),this.data.parent=this},c.Physics.P2.Spring.prototype.constructor=c.Physics.P2.Spring,c.Physics.P2.RotationalSpring=function(a,b,c,d,e,f){this.game=a.game,this.world=a,void 0===d&&(d=null),void 0===e&&(e=100),void 0===f&&(f=1),d&&(d=a.pxm(d));var g={restAngle:d,stiffness:e,damping:f};this.data=new p2.RotationalSpring(b,c,g),this.data.parent=this},c.Physics.P2.Spring.prototype.constructor=c.Physics.P2.Spring,c.Physics.P2.Material=function(a){this.name=a,p2.Material.call(this)},c.Physics.P2.Material.prototype=Object.create(p2.Material.prototype),c.Physics.P2.Material.prototype.constructor=c.Physics.P2.Material,c.Physics.P2.ContactMaterial=function(a,b,c){p2.ContactMaterial.call(this,a,b,c)},c.Physics.P2.ContactMaterial.prototype=Object.create(p2.ContactMaterial.prototype),c.Physics.P2.ContactMaterial.prototype.constructor=c.Physics.P2.ContactMaterial,c.Physics.P2.CollisionGroup=function(a){this.mask=a},c.Physics.P2.DistanceConstraint=function(a,b,c,d,e,f,g){void 0===d&&(d=100),void 0===e&&(e=[0,0]),void 0===f&&(f=[0,0]),void 0===g&&(g=Number.MAX_VALUE),this.game=a.game,this.world=a,d=a.pxm(d),e=[a.pxmi(e[0]),a.pxmi(e[1])],f=[a.pxmi(f[0]),a.pxmi(f[1])];var h={distance:d,localAnchorA:e,localAnchorB:f,maxForce:g};p2.DistanceConstraint.call(this,b,c,h)},c.Physics.P2.DistanceConstraint.prototype=Object.create(p2.DistanceConstraint.prototype),c.Physics.P2.DistanceConstraint.prototype.constructor=c.Physics.P2.DistanceConstraint,c.Physics.P2.GearConstraint=function(a,b,c,d,e){void 0===d&&(d=0),void 0===e&&(e=1),this.game=a.game,this.world=a;var f={angle:d,ratio:e};p2.GearConstraint.call(this,b,c,f)},c.Physics.P2.GearConstraint.prototype=Object.create(p2.GearConstraint.prototype),c.Physics.P2.GearConstraint.prototype.constructor=c.Physics.P2.GearConstraint,c.Physics.P2.LockConstraint=function(a,b,c,d,e,f){void 0===d&&(d=[0,0]),void 0===e&&(e=0),void 0===f&&(f=Number.MAX_VALUE),this.game=a.game,this.world=a,d=[a.pxm(d[0]),a.pxm(d[1])];var g={localOffsetB:d,localAngleB:e,maxForce:f};p2.LockConstraint.call(this,b,c,g)},c.Physics.P2.LockConstraint.prototype=Object.create(p2.LockConstraint.prototype),c.Physics.P2.LockConstraint.prototype.constructor=c.Physics.P2.LockConstraint,c.Physics.P2.PrismaticConstraint=function(a,b,c,d,e,f,g,h){void 0===d&&(d=!0),void 0===e&&(e=[0,0]),void 0===f&&(f=[0,0]),void 0===g&&(g=[0,0]),void 0===h&&(h=Number.MAX_VALUE),this.game=a.game,this.world=a,e=[a.pxmi(e[0]),a.pxmi(e[1])],f=[a.pxmi(f[0]),a.pxmi(f[1])];var i={localAnchorA:e,localAnchorB:f,localAxisA:g,maxForce:h,disableRotationalLock:!d};p2.PrismaticConstraint.call(this,b,c,i)},c.Physics.P2.PrismaticConstraint.prototype=Object.create(p2.PrismaticConstraint.prototype),c.Physics.P2.PrismaticConstraint.prototype.constructor=c.Physics.P2.PrismaticConstraint,c.Physics.P2.RevoluteConstraint=function(a,b,c,d,e,f,g){void 0===f&&(f=Number.MAX_VALUE),void 0===g&&(g=null),this.game=a.game,this.world=a,c=[a.pxmi(c[0]),a.pxmi(c[1])],e=[a.pxmi(e[0]),a.pxmi(e[1])],g&&(g=[a.pxmi(g[0]),a.pxmi(g[1])]);var h={worldPivot:g,localPivotA:c,localPivotB:e,maxForce:f};p2.RevoluteConstraint.call(this,b,d,h)},c.Physics.P2.RevoluteConstraint.prototype=Object.create(p2.RevoluteConstraint.prototype),c.Physics.P2.RevoluteConstraint.prototype.constructor=c.Physics.P2.RevoluteConstraint,c.ImageCollection=function(a,b,c,d,e,f,g){(void 0===c||0>=c)&&(c=32),(void 0===d||0>=d)&&(d=32),void 0===e&&(e=0),void 0===f&&(f=0),this.name=a,this.firstgid=0|b,this.imageWidth=0|c,this.imageHeight=0|d,this.imageMargin=0|e,this.imageSpacing=0|f,this.properties=g||{},this.images=[],this.total=0},c.ImageCollection.prototype={containsImageIndex:function(a){return a>=this.firstgid&&athis.right||b>this.bottom)},intersects:function(a,b,c,d){return c<=this.worldX?!1:d<=this.worldY?!1:a>=this.worldX+this.width?!1:!(b>=this.worldY+this.height)},setCollisionCallback:function(a,b){this.collisionCallback=a,this.collisionCallbackContext=b},destroy:function(){this.collisionCallback=null,this.collisionCallbackContext=null,this.properties=null},setCollision:function(a,b,c,d){this.collideLeft=a,this.collideRight=b,this.collideUp=c,this.collideDown=d,this.faceLeft=a,this.faceRight=b,this.faceTop=c,this.faceBottom=d},resetCollision:function(){this.collideLeft=!1,this.collideRight=!1,this.collideUp=!1,this.collideDown=!1,this.faceTop=!1,this.faceBottom=!1,this.faceLeft=!1,this.faceRight=!1},isInteresting:function(a,b){return a&&b?this.collideLeft||this.collideRight||this.collideUp||this.collideDown||this.faceTop||this.faceBottom||this.faceLeft||this.faceRight||this.collisionCallback:a?this.collideLeft||this.collideRight||this.collideUp||this.collideDown:b?this.faceTop||this.faceBottom||this.faceLeft||this.faceRight:!1},copy:function(a){this.index=a.index,this.alpha=a.alpha,this.properties=a.properties,this.collideUp=a.collideUp,this.collideDown=a.collideDown,this.collideLeft=a.collideLeft,this.collideRight=a.collideRight,this.collisionCallback=a.collisionCallback,this.collisionCallbackContext=a.collisionCallbackContext}},c.Tile.prototype.constructor=c.Tile,Object.defineProperty(c.Tile.prototype,"collides",{get:function(){return this.collideLeft||this.collideRight||this.collideUp||this.collideDown}}),Object.defineProperty(c.Tile.prototype,"canCollide",{get:function(){return this.collideLeft||this.collideRight||this.collideUp||this.collideDown||this.collisionCallback}}),Object.defineProperty(c.Tile.prototype,"left",{get:function(){return this.worldX}}),Object.defineProperty(c.Tile.prototype,"right",{get:function(){return this.worldX+this.width}}),Object.defineProperty(c.Tile.prototype,"top",{get:function(){return this.worldY}}),Object.defineProperty(c.Tile.prototype,"bottom",{get:function(){return this.worldY+this.height}}),c.Tilemap=function(a,b,d,e,f,g){this.game=a,this.key=b;var h=c.TilemapParser.parse(this.game,b,d,e,f,g);null!==h&&(this.width=h.width,this.height=h.height,this.tileWidth=h.tileWidth,this.tileHeight=h.tileHeight,this.orientation=h.orientation,this.format=h.format,this.version=h.version,this.properties=h.properties,this.widthInPixels=h.widthInPixels,this.heightInPixels=h.heightInPixels,this.layers=h.layers,this.tilesets=h.tilesets,this.imagecollections=h.imagecollections,this.tiles=h.tiles,this.objects=h.objects,this.collideIndexes=[],this.collision=h.collision,this.images=h.images,this.currentLayer=0,this.debugMap=[],this._results=[],this._tempA=0,this._tempB=0)},c.Tilemap.CSV=0,c.Tilemap.TILED_JSON=1,c.Tilemap.NORTH=0,c.Tilemap.EAST=1,c.Tilemap.SOUTH=2,c.Tilemap.WEST=3,c.Tilemap.prototype={create:function(a,b,c,d,e,f){return void 0===f&&(f=this.game.world),this.width=b,this.height=c,this.setTileSize(d,e),this.layers.length=0,this.createBlankLayer(a,b,c,d,e,f)},setTileSize:function(a,b){this.tileWidth=a,this.tileHeight=b,this.widthInPixels=this.width*a,this.heightInPixels=this.height*b},addTilesetImage:function(a,b,d,e,f,g,h){if(void 0===a)return null;void 0===d&&(d=this.tileWidth),void 0===e&&(e=this.tileHeight),void 0===f&&(f=0),void 0===g&&(g=0),void 0===h&&(h=0),0===d&&(d=32),0===e&&(e=32);var i=null;if(void 0!==b&&null!==b||(b=a),b instanceof c.BitmapData)i=b.canvas;else{if(!this.game.cache.checkImageKey(b))return console.warn('Phaser.Tilemap.addTilesetImage: Invalid image key given: "'+b+'"'),null;i=this.game.cache.getImage(b)}var j=this.getTilesetIndex(a);if(null===j&&this.format===c.Tilemap.TILED_JSON)return console.warn('Phaser.Tilemap.addTilesetImage: No data found in the JSON matching the tileset name: "'+a+'"'),null;if(this.tilesets[j])return this.tilesets[j].setImage(i),this.tilesets[j];var k=new c.Tileset(a,h,d,e,f,g,{});k.setImage(i),this.tilesets.push(k);for(var l=this.tilesets.length-1,m=f,n=f,o=0,p=0,q=0,r=h;rl;l++)if(-1!==a.indexOf(this._results[l].index)){j=new g.customClass(this.game,this._results[l].worldX,this._results[l].worldY,d);for(var n in g)j[n]=g[n];f.add(j),k++}if(1===b.length)for(l=0;l1)for(l=0;lthis.layers.length?void console.warn("Tilemap.createLayer: Invalid layer ID given: "+g):f?e.add(new c.TilemapLayerGL(this.game,this,g,b,d)):e.add(new c.TilemapLayer(this.game,this,g,b,d))},createBlankLayer:function(a,b,d,e,f,g){if(void 0===g&&(g=this.game.world),null!==this.getLayerIndex(a))return void console.warn("Tilemap.createBlankLayer: Layer with matching name already exists");for(var h,i={name:a,x:0,y:0,width:b,height:d,widthInPixels:b*e,heightInPixels:d*f,alpha:1,visible:!0,properties:{},indexes:[],callbacks:[],bodies:[],data:null},j=[],k=0;d>k;k++){h=[];for(var l=0;b>l;l++)h.push(new c.Tile(i,-1,l,k,e,f));j.push(h)}i.data=j,this.layers.push(i),this.currentLayer=this.layers.length-1;var m=i.widthInPixels,n=i.heightInPixels;m>this.game.width&&(m=this.game.width),n>this.game.height&&(n=this.game.height);var j=new c.TilemapLayer(this.game,this,this.layers.length-1,m,n);return j.name=a,g.add(j)},getIndex:function(a,b){for(var c=0;ce;e++)this.layers[d].callbacks[a[e]]={callback:b,callbackContext:c}},setTileLocationCallback:function(a,b,c,d,e,f,g){if(g=this.getLayer(g),this.copy(a,b,c,d,g),!(this._results.length<2))for(var h=1;hb)){for(var f=a;b>=f;f++)this.setCollisionByIndex(f,c,d,!1);e&&this.calculateFaces(d)}},setCollisionByExclusion:function(a,b,c,d){void 0===b&&(b=!0),void 0===d&&(d=!0),c=this.getLayer(c);for(var e=0,f=this.tiles.length;f>e;e++)-1===a.indexOf(e)&&this.setCollisionByIndex(e,b,c,!1);d&&this.calculateFaces(c)},setCollisionByIndex:function(a,b,c,d){if(void 0===b&&(b=!0),void 0===c&&(c=this.currentLayer),void 0===d&&(d=!0),b)this.collideIndexes.push(a);else{var e=this.collideIndexes.indexOf(a);e>-1&&this.collideIndexes.splice(e,1)}for(var f=0;ff;f++)for(var h=0,i=this.layers[a].width;i>h;h++){var j=this.layers[a].data[f][h];j&&(b=this.getTileAbove(a,h,f),c=this.getTileBelow(a,h,f),d=this.getTileLeft(a,h,f),e=this.getTileRight(a,h,f),j.collides&&(j.faceTop=!0,j.faceBottom=!0,j.faceLeft=!0,j.faceRight=!0),b&&b.collides&&(j.faceTop=!1),c&&c.collides&&(j.faceBottom=!1),d&&d.collides&&(j.faceLeft=!1),e&&e.collides&&(j.faceRight=!1))}},getTileAbove:function(a,b,c){return c>0?this.layers[a].data[c-1][b]:null},getTileBelow:function(a,b,c){return c0?this.layers[a].data[c][b-1]:null},getTileRight:function(a,b,c){return b-1},removeTile:function(a,b,d){if(d=this.getLayer(d),a>=0&&a=0&&b=0&&b=0&&d-1?this.layers[e].data[d][b].setCollision(!0,!0,!0,!0):this.layers[e].data[d][b].resetCollision(),this.layers[e].dirty=!0,this.calculateFaces(e),this.layers[e].data[d][b]}return null},putTileWorldXY:function(a,b,c,d,e,f){return f=this.getLayer(f),b=this.game.math.snapToFloor(b,d)/d,c=this.game.math.snapToFloor(c,e)/e,this.putTile(a,b,c,f)},searchTileIndex:function(a,b,c,d){void 0===b&&(b=0),void 0===c&&(c=!1),d=this.getLayer(d);var e=0;if(c){for(var f=this.layers[d].height-1;f>=0;f--)for(var g=this.layers[d].width-1;g>=0;g--)if(this.layers[d].data[f][g].index===a){if(e===b)return this.layers[d].data[f][g];e++}}else for(var f=0;f=0&&a=0&&ba&&(a=0),0>b&&(b=0),c>this.layers[e].width&&(c=this.layers[e].width),d>this.layers[e].height&&(d=this.layers[e].height),this._results.length=0,this._results.push({x:a,y:b,width:c,height:d,layer:e});for(var f=b;b+d>f;f++)for(var g=a;a+c>g;g++)this._results.push(this.layers[e].data[f][g]);return this._results},paste:function(a,b,c,d){if(void 0===a&&(a=0),void 0===b&&(b=0),d=this.getLayer(d),c&&!(c.length<2)){for(var e=a-c[1].x,f=b-c[1].y,g=1;g1?this.debugMap[this.layers[this.currentLayer].data[c][d]]?b.push("background: "+this.debugMap[this.layers[this.currentLayer].data[c][d]]):b.push("background: #ffffff"):b.push("background: rgb(0, 0, 0)");a+="\n"}b[0]=a,console.log.apply(console,b)},destroy:function(){this.removeAllLayers(),this.data=[],this.game=null}},c.Tilemap.prototype.constructor=c.Tilemap,Object.defineProperty(c.Tilemap.prototype,"layer",{get:function(){return this.layers[this.currentLayer]},set:function(a){a!==this.currentLayer&&this.setLayer(a)}}),c.TilemapLayer=function(a,b,d,e,f){e|=0,f|=0,c.Sprite.call(this,a,0,0),this.map=b,this.index=d,this.layer=b.layers[d],this.canvas=PIXI.CanvasPool.create(this,e,f),this.context=this.canvas.getContext("2d"),this.setTexture(new PIXI.Texture(new PIXI.BaseTexture(this.canvas))),this.type=c.TILEMAPLAYER,this.physicsType=c.TILEMAPLAYER,this.renderSettings={enableScrollDelta:!1,overdrawRatio:.2,copyCanvas:null},this.debug=!1,this.exists=!0,this.debugSettings={missingImageFill:"rgb(255,255,255)",debuggedTileOverfill:"rgba(0,255,0,0.4)",forceFullRedraw:!0,debugAlpha:.5,facingEdgeStroke:"rgba(0,255,0,1)",collidingTileOverfill:"rgba(0,255,0,0.2)"},this.scrollFactorX=1,this.scrollFactorY=1,this.dirty=!0,this.rayStepRate=4,this._wrap=!1,this._mc={scrollX:0,scrollY:0,renderWidth:0,renderHeight:0,tileWidth:b.tileWidth,tileHeight:b.tileHeight,cw:b.tileWidth,ch:b.tileHeight,tilesets:[]},this._scrollX=0,this._scrollY=0,this._results=[],a.device.canvasBitBltShift||(this.renderSettings.copyCanvas=c.TilemapLayer.ensureSharedCopyCanvas()),this.fixedToCamera=!0},c.TilemapLayer.prototype=Object.create(c.Sprite.prototype),c.TilemapLayer.prototype.constructor=c.TilemapLayer,c.TilemapLayer.prototype.preUpdateCore=c.Component.Core.preUpdate,c.TilemapLayer.sharedCopyCanvas=null,c.TilemapLayer.ensureSharedCopyCanvas=function(){return this.sharedCopyCanvas||(this.sharedCopyCanvas=c.Canvas.create(2,2)),this.sharedCopyCanvas},c.TilemapLayer.prototype.preUpdate=function(){return this.preUpdateCore()},c.TilemapLayer.prototype.postUpdate=function(){this.fixedToCamera&&(this.position.x=(this.game.camera.view.x+this.cameraOffset.x)/this.game.camera.scale.x,this.position.y=(this.game.camera.view.y+this.cameraOffset.y)/this.game.camera.scale.y),this._scrollX=this.game.camera.view.x*this.scrollFactorX/this.scale.x,this._scrollY=this.game.camera.view.y*this.scrollFactorY/this.scale.y},c.TilemapLayer.prototype._renderCanvas=function(a){this.fixedToCamera&&(this.position.x=(this.game.camera.view.x+this.cameraOffset.x)/this.game.camera.scale.x,this.position.y=(this.game.camera.view.y+this.cameraOffset.y)/this.game.camera.scale.y),this._scrollX=this.game.camera.view.x*this.scrollFactorX/this.scale.x,this._scrollY=this.game.camera.view.y*this.scrollFactorY/this.scale.y,this.render(),PIXI.Sprite.prototype._renderCanvas.call(this,a)},c.TilemapLayer.prototype._renderWebGL=function(a){this.fixedToCamera&&(this.position.x=(this.game.camera.view.x+this.cameraOffset.x)/this.game.camera.scale.x,this.position.y=(this.game.camera.view.y+this.cameraOffset.y)/this.game.camera.scale.y),this._scrollX=this.game.camera.view.x*this.scrollFactorX/this.scale.x,this._scrollY=this.game.camera.view.y*this.scrollFactorY/this.scale.y,this.render(),PIXI.Sprite.prototype._renderWebGL.call(this,a)},c.TilemapLayer.prototype.destroy=function(){PIXI.CanvasPool.remove(this),c.Component.Destroy.prototype.destroy.call(this)},c.TilemapLayer.prototype.resize=function(a,b){this.canvas.width=a,this.canvas.height=b,this.texture.frame.resize(a,b),this.texture.width=a,this.texture.height=b,this.texture.crop.width=a,this.texture.crop.height=b,this.texture.baseTexture.width=a,this.texture.baseTexture.height=b,this.texture.baseTexture.dirty(),this.texture.requiresUpdate=!0,this.texture._updateUvs(),this.dirty=!0},c.TilemapLayer.prototype.resizeWorld=function(){this.game.world.setBounds(0,0,this.layer.widthInPixels*this.scale.x,this.layer.heightInPixels*this.scale.y)},c.TilemapLayer.prototype._fixX=function(a){return 1===this.scrollFactorX||0===this.scrollFactorX&&0===this.position.x?a:0===this.scrollFactorX&&0!==this.position.x?a-this.position.x:this._scrollX+(a-this._scrollX/this.scrollFactorX)},c.TilemapLayer.prototype._unfixX=function(a){return 1===this.scrollFactorX?a:this._scrollX/this.scrollFactorX+(a-this._scrollX)},c.TilemapLayer.prototype._fixY=function(a){return 1===this.scrollFactorY||0===this.scrollFactorY&&0===this.position.y?a:0===this.scrollFactorY&&0!==this.position.y?a-this.position.y:this._scrollY+(a-this._scrollY/this.scrollFactorY)},c.TilemapLayer.prototype._unfixY=function(a){return 1===this.scrollFactorY?a:this._scrollY/this.scrollFactorY+(a-this._scrollY)},c.TilemapLayer.prototype.getTileX=function(a){return Math.floor(this._fixX(a)/this._mc.tileWidth)},c.TilemapLayer.prototype.getTileY=function(a){return Math.floor(this._fixY(a)/this._mc.tileHeight)},c.TilemapLayer.prototype.getTileXY=function(a,b,c){return c.x=this.getTileX(a),c.y=this.getTileY(b),c},c.TilemapLayer.prototype.getRayCastTiles=function(a,b,c,d){b||(b=this.rayStepRate),void 0===c&&(c=!1),void 0===d&&(d=!1);var e=this.getTiles(a.x,a.y,a.width,a.height,c,d);if(0===e.length)return[];for(var f=a.coordinatesOnLine(b),g=[],h=0;hl;l++)for(var m=h;h+j>m;m++){var n=this.layer.data[l];n&&n[m]&&(g||n[m].isInteresting(e,f))&&this._results.push(n[m])}return this._results.slice()},c.TilemapLayer.prototype.resolveTileset=function(a){var b=this._mc.tilesets;if(2e3>a)for(;b.lengthb&&(g=-b,i=0),0>c&&(h=-c,j=0);var k=this.renderSettings.copyCanvas;if(k){(k.width=c&&(c=Math.max(0,c),e=Math.min(h-1,e)),f>=d&&(d=Math.max(0,d),f=Math.min(i-1,f)));var n,o,p,q,r,s,t=c*j-a,u=d*k-b,v=(c+(1<<20)*h)%h,w=(d+(1<<20)*i)%i;for(q=w,s=f-d,o=u;s>=0;q++,s--,o+=k){q>=i&&(q-=i);var x=this.layer.data[q];for(p=v,r=e-c,n=t;r>=0;p++,r--,n+=j){p>=h&&(p-=h);var y=x[p];if(y&&!(y.index<0)){var z=y.index,A=l[z];void 0===A&&(A=this.resolveTileset(z)),y.alpha===m||this.debug||(g.globalAlpha=y.alpha,m=y.alpha),A?y.rotation||y.flipped?(g.save(),g.translate(n+y.centerX,o+y.centerY),g.rotate(y.rotation),y.flipped&&g.scale(-1,1),A.draw(g,-y.centerX,-y.centerY,z),g.restore()):A.draw(g,n,o,z):this.debugSettings.missingImageFill&&(g.fillStyle=this.debugSettings.missingImageFill,g.fillRect(n,o,j,k)),y.debug&&this.debugSettings.debuggedTileOverfill&&(g.fillStyle=this.debugSettings.debuggedTileOverfill,g.fillRect(n,o,j,k))}}}},c.TilemapLayer.prototype.renderDeltaScroll=function(a,b){var c=this._mc.scrollX,d=this._mc.scrollY,e=this.canvas.width,f=this.canvas.height,g=this._mc.tileWidth,h=this._mc.tileHeight,i=0,j=-g,k=0,l=-h;if(0>a?(i=e+a,j=e-1):a>0&&(j=a),0>b?(k=f+b,l=f-1):b>0&&(l=b),this.shiftCanvas(this.context,a,b),i=Math.floor((i+c)/g),j=Math.floor((j+c)/g),k=Math.floor((k+d)/h),l=Math.floor((l+d)/h),j>=i){this.context.clearRect(i*g-c,0,(j-i+1)*g,f);var m=Math.floor((0+d)/h),n=Math.floor((f-1+d)/h);this.renderRegion(c,d,i,m,j,n)}if(l>=k){this.context.clearRect(0,k*h-d,e,(l-k+1)*h);var o=Math.floor((0+c)/g),p=Math.floor((e-1+c)/g);this.renderRegion(c,d,o,k,p,l)}},c.TilemapLayer.prototype.renderFull=function(){var a=this._mc.scrollX,b=this._mc.scrollY,c=this.canvas.width,d=this.canvas.height,e=this._mc.tileWidth,f=this._mc.tileHeight,g=Math.floor(a/e),h=Math.floor((c-1+a)/e),i=Math.floor(b/f),j=Math.floor((d-1+b)/f);this.context.clearRect(0,0,c,d),this.renderRegion(a,b,g,i,h,j)},c.TilemapLayer.prototype.render=function(){var a=!1;if(this.visible){(this.dirty||this.layer.dirty)&&(this.layer.dirty=!1,a=!0);var b=this.canvas.width,c=this.canvas.height,d=0|this._scrollX,e=0|this._scrollY,f=this._mc,g=f.scrollX-d,h=f.scrollY-e;if(a||0!==g||0!==h||f.renderWidth!==b||f.renderHeight!==c)return this.context.save(),f.scrollX=d,f.scrollY=e,f.renderWidth===b&&f.renderHeight===c||(f.renderWidth=b,f.renderHeight=c),this.debug&&(this.context.globalAlpha=this.debugSettings.debugAlpha,this.debugSettings.forceFullRedraw&&(a=!0)),!a&&this.renderSettings.enableScrollDelta&&Math.abs(g)+Math.abs(h)=0;d++,f--,b+=o){d>=m&&(d-=m);var x=this.layer.data[d];for(c=v,e=q-p,a=t;e>=0;c++,e--,a+=n){c>=l&&(c-=l);var y=x[c];!y||y.index<0||!y.collides||(this.debugSettings.collidingTileOverfill&&(i.fillStyle=this.debugSettings.collidingTileOverfill,i.fillRect(a,b,this._mc.cw,this._mc.ch)),this.debugSettings.facingEdgeStroke&&(i.beginPath(),y.faceTop&&(i.moveTo(a,b),i.lineTo(a+this._mc.cw,b)),y.faceBottom&&(i.moveTo(a,b+this._mc.ch),i.lineTo(a+this._mc.cw,b+this._mc.ch)),y.faceLeft&&(i.moveTo(a,b),i.lineTo(a,b+this._mc.ch)),y.faceRight&&(i.moveTo(a+this._mc.cw,b),i.lineTo(a+this._mc.cw,b+this._mc.ch)),i.stroke()))}}},Object.defineProperty(c.TilemapLayer.prototype,"wrap",{get:function(){return this._wrap},set:function(a){this._wrap=a,this.dirty=!0}}),Object.defineProperty(c.TilemapLayer.prototype,"scrollX",{get:function(){return this._scrollX},set:function(a){this._scrollX=a}}),Object.defineProperty(c.TilemapLayer.prototype,"scrollY",{get:function(){return this._scrollY},set:function(a){this._scrollY=a}}),Object.defineProperty(c.TilemapLayer.prototype,"collisionWidth",{get:function(){return this._mc.cw},set:function(a){this._mc.cw=0|a,this.dirty=!0}}),Object.defineProperty(c.TilemapLayer.prototype,"collisionHeight",{get:function(){return this._mc.ch},set:function(a){this._mc.ch=0|a,this.dirty=!0}}),c.TilemapParser={INSERT_NULL:!1,FLIPPED_HORIZONTALLY_FLAG:2147483648,FLIPPED_VERTICALLY_FLAG:1073741824,FLIPPED_DIAGONALLY_FLAG:536870912,parse:function(a,b,d,e,f,g){if(void 0===d&&(d=32),void 0===e&&(e=32),void 0===f&&(f=10),void 0===g&&(g=10),void 0===b)return this.getEmptyData();if(null===b)return this.getEmptyData(d,e,f,g);var h=a.cache.getTilemapData(b);if(h){if(h.format===c.Tilemap.CSV)return this.parseCSV(b,h.data,d,e);if(!h.format||h.format===c.Tilemap.TILED_JSON)return this.parseTiledJSON(h.data)}else console.warn("Phaser.TilemapParser.parse - No map data found for key "+b)},parseCSV:function(a,b,d,e){var f=this.getEmptyData();b=b.trim();for(var g=[],h=b.split("\n"),i=h.length,j=0,k=0;kk;k+=4)j[k/4]=(h.charCodeAt(k)|h.charCodeAt(k+1)<<8|h.charCodeAt(k+2)<<16|h.charCodeAt(k+3)<<24)>>>0;g.data=j,delete g.encoding}else if(g.compression){console.warn("TilemapParser.parseTiledJSON - Layer compression is unsupported, skipping layer '"+g.name+"'");continue}var l={name:g.name,x:g.x,y:g.y,width:g.width,height:g.height,widthInPixels:g.width*a.tilewidth,heightInPixels:g.height*a.tileheight,alpha:g.opacity,visible:g.visible,properties:{},indexes:[],callbacks:[],bodies:[]};g.properties&&(l.properties=g.properties);for(var m,n,o,p,q=0,r=[],s=[],t=0,i=g.data.length;i>t;t++){if(m=0,n=!1,p=g.data[t],p>536870912)switch(o=0,p>2147483648&&(p-=2147483648,o+=4),p>1073741824&&(p-=1073741824,o+=2),p>536870912&&(p-=536870912,o+=1),o){case 5:m=Math.PI/2;break;case 6:m=Math.PI;break;case 3:m=3*Math.PI/2;break;case 4:m=0,n=!0;break;case 7:m=Math.PI/2,n=!0;break;case 2:m=Math.PI,n=!0;break;case 1:m=3*Math.PI/2,n=!0}p>0?(r.push(new c.Tile(l,p,q,s.length,a.tilewidth,a.tileheight)),r[r.length-1].rotation=m,r[r.length-1].flipped=n):c.TilemapParser.INSERT_NULL?r.push(null):r.push(new c.Tile(l,-1,q,s.length,a.tilewidth,a.tileheight)),q++,q===g.width&&(s.push(r),q=0,r=[])}l.data=s,e.push(l)}d.layers=e;for(var u=[],f=0;fG;G++)if(F.objects[G].gid){var H=this,I={gid:F.objects[G].gid,name:F.objects[G].name,type:F.objects[G].hasOwnProperty("type")?F.objects[G].type:"",x:F.objects[G].x,y:F.objects[G].y,width:F.objects[G].width,height:F.objects[G].height,visible:F.objects[G].visible,properties:F.objects[G].properties,horizontallyFlipped:F.objects[G].gid&H.FLIPPED_HORIZONTALLY_FLAG,verticallyFlipped:F.objects[G].gid&H.FLIPPED_VERTICALLY_FLAG,diagonallyFlipped:F.objects[G].gid&H.FLIPPED_DIAGONALLY_FLAG};F.objects[G].rotation&&(I.rotation=F.objects[G].rotation),D[F.name].push(I)}else if(F.objects[G].polyline){var I={name:F.objects[G].name,type:F.objects[G].type,x:F.objects[G].x,y:F.objects[G].y,width:F.objects[G].width,height:F.objects[G].height,visible:F.objects[G].visible,properties:F.objects[G].properties};F.objects[G].rotation&&(I.rotation=F.objects[G].rotation),I.polyline=[];for(var J=0;J=c)&&(c=32),(void 0===d||0>=d)&&(d=32),void 0===e&&(e=0),void 0===f&&(f=0),this.name=a,this.firstgid=0|b,this.tileWidth=0|c,this.tileHeight=0|d,this.tileMargin=0|e,this.tileSpacing=0|f,this.properties=g||{},this.image=null,this.rows=0,this.columns=0,this.total=0,this.drawCoords=[]},c.Tileset.prototype={draw:function(a,b,c,d){var e=d-this.firstgid<<1;e>=0&&e+1=this.firstgid&&a=this._timer)if(this._timer=this.game.time.time+this.frequency*this.game.time.slowMotion,0!==this._flowTotal)if(this._flowQuantity>0){for(var a=0;a=this._flowTotal)){this.on=!1;break}}else this.emitParticle()&&(this._counter++,-1!==this._flowTotal&&this._counter>=this._flowTotal&&(this.on=!1));else this.emitParticle()&&(this._counter++,this._quantity>0&&this._counter>=this._quantity&&(this.on=!1));for(var a=this.children.length;a--;)this.children[a].exists&&this.children[a].update()},c.Particles.Arcade.Emitter.prototype.makeParticles=function(a,b,c,d,e){void 0===b&&(b=0),void 0===c&&(c=this.maxParticles),void 0===d&&(d=!1),void 0===e&&(e=!1);var f,g=0,h=a,i=b;for(this._frames=b,c>this.maxParticles&&(this.maxParticles=c);c>g;)Array.isArray(a)&&(h=this.game.rnd.pick(a)),Array.isArray(b)&&(i=this.game.rnd.pick(b)),f=new this.particleClass(this.game,0,0,h,i),this.game.physics.arcade.enable(f,!1),d?(f.body.checkCollision.any=!0,f.body.checkCollision.none=!1):f.body.checkCollision.none=!0,f.body.collideWorldBounds=e,f.body.skipQuadTree=!0,f.exists=!1,f.visible=!1,f.anchor.copyFrom(this.particleAnchor),this.add(f),g++;return this},c.Particles.Arcade.Emitter.prototype.kill=function(){return this.on=!1,this.alive=!1,this.exists=!1,this},c.Particles.Arcade.Emitter.prototype.revive=function(){return this.alive=!0,this.exists=!0,this},c.Particles.Arcade.Emitter.prototype.explode=function(a,b){return this._flowTotal=0,this.start(!0,a,0,b,!1),this},c.Particles.Arcade.Emitter.prototype.flow=function(a,b,c,d,e){return void 0!==c&&0!==c||(c=1),void 0===d&&(d=-1),void 0===e&&(e=!0),c>this.maxParticles&&(c=this.maxParticles),this._counter=0,this._flowQuantity=c,this._flowTotal=d,e?(this.start(!0,a,b,c),this._counter+=c,this.on=!0,this._timer=this.game.time.time+b*this.game.time.slowMotion):this.start(!1,a,b,c),this},c.Particles.Arcade.Emitter.prototype.start=function(a,b,c,d,e){if(void 0===a&&(a=!0),void 0===b&&(b=0),void 0!==c&&null!==c||(c=250),void 0===d&&(d=0),void 0===e&&(e=!1),d>this.maxParticles&&(d=this.maxParticles),this.revive(),this.visible=!0,this.lifespan=b,this.frequency=c,a||e)for(var f=0;d>f;f++)this.emitParticle();else this.on=!0,this._quantity=d,this._counter=0,this._timer=this.game.time.time+c*this.game.time.slowMotion;return this},c.Particles.Arcade.Emitter.prototype.emitParticle=function(a,b,c,d){void 0===a&&(a=null),void 0===b&&(b=null);var e=this.getFirstExists(!1);if(null===e)return!1;var f=this.game.rnd;void 0!==c&&void 0!==d?e.loadTexture(c,d):void 0!==c&&e.loadTexture(c);var g=this.emitX,h=this.emitY;null!==a?g=a:this.width>1&&(g=f.between(this.left,this.right)),null!==b?h=b:this.height>1&&(h=f.between(this.top,this.bottom)),e.reset(g,h),e.angle=0,e.lifespan=this.lifespan,this.particleBringToTop?this.bringToTop(e):this.particleSendToBack&&this.sendToBack(e),this.autoScale?e.setScaleData(this.scaleData):1!==this.minParticleScale||1!==this.maxParticleScale?e.scale.set(f.realInRange(this.minParticleScale,this.maxParticleScale)):this._minParticleScale.x===this._maxParticleScale.x&&this._minParticleScale.y===this._maxParticleScale.y||e.scale.set(f.realInRange(this._minParticleScale.x,this._maxParticleScale.x),f.realInRange(this._minParticleScale.y,this._maxParticleScale.y)),void 0===d&&(Array.isArray(this._frames)?e.frame=this.game.rnd.pick(this._frames):e.frame=this._frames),this.autoAlpha?e.setAlphaData(this.alphaData):e.alpha=f.realInRange(this.minParticleAlpha,this.maxParticleAlpha),e.blendMode=this.blendMode;var i=e.body;return i.updateBounds(),i.bounce.copyFrom(this.bounce),i.drag.copyFrom(this.particleDrag),i.velocity.x=f.between(this.minParticleSpeed.x,this.maxParticleSpeed.x),i.velocity.y=f.between(this.minParticleSpeed.y,this.maxParticleSpeed.y),i.angularVelocity=f.between(this.minRotation,this.maxRotation),i.gravity.y=this.gravity,i.angularDrag=this.angularDrag,e.onEmit(),!0},c.Particles.Arcade.Emitter.prototype.destroy=function(){this.game.particles.remove(this),c.Group.prototype.destroy.call(this,!0,!1)},c.Particles.Arcade.Emitter.prototype.setSize=function(a,b){return this.area.width=a,this.area.height=b,this},c.Particles.Arcade.Emitter.prototype.setXSpeed=function(a,b){return a=a||0,b=b||0,this.minParticleSpeed.x=a,this.maxParticleSpeed.x=b,this},c.Particles.Arcade.Emitter.prototype.setYSpeed=function(a,b){return a=a||0,b=b||0,this.minParticleSpeed.y=a,this.maxParticleSpeed.y=b,this},c.Particles.Arcade.Emitter.prototype.setRotation=function(a,b){return a=a||0,b=b||0,this.minRotation=a,this.maxRotation=b,this},c.Particles.Arcade.Emitter.prototype.setAlpha=function(a,b,d,e,f){if(void 0===a&&(a=1),void 0===b&&(b=1),void 0===d&&(d=0),void 0===e&&(e=c.Easing.Linear.None),void 0===f&&(f=!1),this.minParticleAlpha=a,this.maxParticleAlpha=b,this.autoAlpha=!1,d>0&&a!==b){var g={v:a},h=this.game.make.tween(g).to({v:b},d,e);h.yoyo(f),this.alphaData=h.generateData(60),this.alphaData.reverse(),this.autoAlpha=!0}return this},c.Particles.Arcade.Emitter.prototype.setScale=function(a,b,d,e,f,g,h){if(void 0===a&&(a=1),void 0===b&&(b=1),void 0===d&&(d=1),void 0===e&&(e=1),void 0===f&&(f=0),void 0===g&&(g=c.Easing.Linear.None),void 0===h&&(h=!1),this.minParticleScale=1,this.maxParticleScale=1,this._minParticleScale.set(a,d),this._maxParticleScale.set(b,e),this.autoScale=!1,f>0&&(a!==b||d!==e)){var i={x:a,y:d},j=this.game.make.tween(i).to({x:b,y:e},f,g);j.yoyo(h),this.scaleData=j.generateData(60),this.scaleData.reverse(),this.autoScale=!0}return this},c.Particles.Arcade.Emitter.prototype.at=function(a){return a.center?(this.emitX=a.center.x,this.emitY=a.center.y):(this.emitX=a.world.x+a.anchor.x*a.width,this.emitY=a.world.y+a.anchor.y*a.height),this},Object.defineProperty(c.Particles.Arcade.Emitter.prototype,"width",{get:function(){return this.area.width},set:function(a){this.area.width=a}}),Object.defineProperty(c.Particles.Arcade.Emitter.prototype,"height",{get:function(){return this.area.height},set:function(a){this.area.height=a}}),Object.defineProperty(c.Particles.Arcade.Emitter.prototype,"x",{get:function(){return this.emitX},set:function(a){this.emitX=a}}),Object.defineProperty(c.Particles.Arcade.Emitter.prototype,"y",{get:function(){return this.emitY},set:function(a){this.emitY=a}}),Object.defineProperty(c.Particles.Arcade.Emitter.prototype,"left",{get:function(){return Math.floor(this.x-this.area.width/2)}}),Object.defineProperty(c.Particles.Arcade.Emitter.prototype,"right",{get:function(){return Math.floor(this.x+this.area.width/2)}}),Object.defineProperty(c.Particles.Arcade.Emitter.prototype,"top",{get:function(){return Math.floor(this.y-this.area.height/2)}}),Object.defineProperty(c.Particles.Arcade.Emitter.prototype,"bottom",{get:function(){return Math.floor(this.y+this.area.height/2)}}),c.Weapon=function(a,b){c.Plugin.call(this,a,b),this.bullets=null,this.autoExpandBulletsGroup=!1,this.autofire=!1,this.shots=0,this.fireLimit=0,this.fireRate=100,this.fireRateVariance=0,this.fireFrom=new c.Rectangle(0,0,1,1),this.fireAngle=c.ANGLE_UP,this.bulletInheritSpriteSpeed=!1,this.bulletAnimation="",this.bulletFrameRandom=!1,this.bulletFrameCycle=!1,this.bulletWorldWrap=!1,this.bulletWorldWrapPadding=0,this.bulletAngleOffset=0,this.bulletAngleVariance=0,this.bulletSpeed=200,this.bulletSpeedVariance=0,this.bulletLifespan=0,this.bulletKillDistance=0,this.bulletGravity=new c.Point(0,0),this.bulletRotateToVelocity=!1,this.bulletKey="",this.bulletFrame="",this._bulletClass=c.Bullet,this._bulletCollideWorldBounds=!1,this._bulletKillType=c.Weapon.KILL_WORLD_BOUNDS,this._data={customBody:!1,width:0,height:0,offsetX:0,offsetY:0},this.bounds=new c.Rectangle,this.bulletBounds=a.world.bounds,this.bulletFrames=[],this.bulletFrameIndex=0,this.anims={},this.onFire=new c.Signal,this.onKill=new c.Signal,this.onFireLimit=new c.Signal,this.trackedSprite=null, +this.trackedPointer=null,this.trackRotation=!1,this.trackOffset=new c.Point,this._nextFire=0},c.Weapon.prototype=Object.create(c.Plugin.prototype),c.Weapon.prototype.constructor=c.Weapon,c.Weapon.KILL_NEVER=0,c.Weapon.KILL_LIFESPAN=1,c.Weapon.KILL_DISTANCE=2,c.Weapon.KILL_WEAPON_BOUNDS=3,c.Weapon.KILL_CAMERA_BOUNDS=4,c.Weapon.KILL_WORLD_BOUNDS=5,c.Weapon.KILL_STATIC_BOUNDS=6,c.Weapon.prototype.createBullets=function(a,b,d,e){return void 0===a&&(a=1),void 0===e&&(e=this.game.world),this.bullets||(this.bullets=this.game.add.physicsGroup(c.Physics.ARCADE,e),this.bullets.classType=this._bulletClass),0!==a&&(-1===a&&(this.autoExpandBulletsGroup=!0,a=1),this.bullets.createMultiple(a,b,d),this.bullets.setAll("data.bulletManager",this),this.bulletKey=b,this.bulletFrame=d),this},c.Weapon.prototype.forEach=function(a,b){return this.bullets.forEachExists(a,b,arguments),this},c.Weapon.prototype.pauseAll=function(){return this.bullets.setAll("body.enable",!1),this},c.Weapon.prototype.resumeAll=function(){return this.bullets.setAll("body.enable",!0),this},c.Weapon.prototype.killAll=function(){return this.bullets.callAllExists("kill",!0),this.bullets.setAll("body.enable",!0),this},c.Weapon.prototype.resetShots=function(a){return this.shots=0,void 0!==a&&(this.fireLimit=a),this},c.Weapon.prototype.destroy=function(){this.parent.remove(this,!1),this.bullets.destroy(),this.game=null,this.parent=null,this.active=!1,this.visible=!1},c.Weapon.prototype.update=function(){this._bulletKillType===c.Weapon.KILL_WEAPON_BOUNDS&&(this.trackedSprite?(this.trackedSprite.updateTransform(),this.bounds.centerOn(this.trackedSprite.worldPosition.x,this.trackedSprite.worldPosition.y)):this.trackedPointer&&this.bounds.centerOn(this.trackedPointer.worldX,this.trackedPointer.worldY)),this.autofire&&this.game.time.now0&&this.shots===this.fireLimit)return!1;var e=this.bulletSpeed;0!==this.bulletSpeedVariance&&(e+=c.Math.between(-this.bulletSpeedVariance,this.bulletSpeedVariance)),a?this.fireFrom.width>1?this.fireFrom.centerOn(a.x,a.y):(this.fireFrom.x=a.x,this.fireFrom.y=a.y):this.trackedSprite?(this.fireFrom.width>1?this.fireFrom.centerOn(this.trackedSprite.world.x+this.trackOffset.x,this.trackedSprite.world.y+this.trackOffset.y):(this.fireFrom.x=this.trackedSprite.world.x+this.trackOffset.x,this.fireFrom.y=this.trackedSprite.world.y+this.trackOffset.y),this.bulletInheritSpriteSpeed&&(e+=this.trackedSprite.body.speed)):this.trackedPointer&&(this.fireFrom.width>1?this.fireFrom.centerOn(this.trackedPointer.world.x+this.trackOffset.x,this.trackedPointer.world.y+this.trackOffset.y):(this.fireFrom.x=this.trackedPointer.world.x+this.trackOffset.x,this.fireFrom.y=this.trackedPointer.world.y+this.trackOffset.y));var f=this.fireFrom.width>1?this.fireFrom.randomX:this.fireFrom.x,g=this.fireFrom.height>1?this.fireFrom.randomY:this.fireFrom.y,h=this.trackRotation?this.trackedSprite.angle:this.fireAngle;void 0!==b&&void 0!==d&&(h=this.game.math.radToDeg(Math.atan2(d-g,b-f))),0!==this.bulletAngleVariance&&(h+=c.Math.between(-this.bulletAngleVariance,this.bulletAngleVariance));var i=0,j=0;0===h||180===h?i=Math.cos(this.game.math.degToRad(h))*e:90===h||270===h?j=Math.sin(this.game.math.degToRad(h))*e:(i=Math.cos(this.game.math.degToRad(h))*e,j=Math.sin(this.game.math.degToRad(h))*e);var k=null;if(this.autoExpandBulletsGroup?(k=this.bullets.getFirstExists(!1,!0,f,g,this.bulletKey,this.bulletFrame),k.data.bulletManager=this):k=this.bullets.getFirstExists(!1),k){if(k.reset(f,g),k.data.fromX=f,k.data.fromY=g,k.data.killType=this.bulletKillType,k.data.killDistance=this.bulletKillDistance,k.data.rotateToVelocity=this.bulletRotateToVelocity,this.bulletKillType===c.Weapon.KILL_LIFESPAN&&(k.lifespan=this.bulletLifespan),k.angle=h+this.bulletAngleOffset,""!==this.bulletAnimation){if(null===k.animations.getAnimation(this.bulletAnimation)){var l=this.anims[this.bulletAnimation];k.animations.add(l.name,l.frames,l.frameRate,l.loop,l.useNumericIndex)}k.animations.play(this.bulletAnimation)}else this.bulletFrameCycle?(k.frame=this.bulletFrames[this.bulletFrameIndex],this.bulletFrameIndex++,this.bulletFrameIndex>=this.bulletFrames.length&&(this.bulletFrameIndex=0)):this.bulletFrameRandom&&(k.frame=this.bulletFrames[Math.floor(Math.random()*this.bulletFrames.length)]);k.data.bodyDirty&&(this._data.customBody&&k.body.setSize(this._data.width,this._data.height,this._data.offsetX,this._data.offsetY),k.body.collideWorldBounds=this.bulletCollideWorldBounds,k.data.bodyDirty=!1),k.body.velocity.set(i,j),k.body.gravity.set(this.bulletGravity.x,this.bulletGravity.y),this._nextFire=this.game.time.now+this.fireRate,this.shots++,this.onFire.dispatch(k,this,e),this.fireLimit>0&&this.shots===this.fireLimit&&this.onFireLimit.dispatch(this,this.fireLimit)}},c.Weapon.prototype.fireAtPointer=function(a){return void 0===a&&(a=this.game.input.activePointer),this.fire(null,a.worldX,a.worldY)},c.Weapon.prototype.fireAtSprite=function(a){return this.fire(null,a.world.x,a.world.y)},c.Weapon.prototype.fireAtXY=function(a,b){return this.fire(null,a,b)},c.Weapon.prototype.setBulletBodyOffset=function(a,b,c,d){return void 0===c&&(c=0),void 0===d&&(d=0),this._data.customBody=!0,this._data.width=a,this._data.height=b,this._data.offsetX=c,this._data.offsetY=d,this.bullets.callAll("body.setSize","body",a,b,c,d),this.bullets.setAll("data.bodyDirty",!1),this},c.Weapon.prototype.setBulletFrames=function(a,b,d,e){return void 0===d&&(d=!0),void 0===e&&(e=!1),this.bulletFrames=c.ArrayUtils.numberArray(a,b),this.bulletFrameIndex=0,this.bulletFrameCycle=d,this.bulletFrameRandom=e,this},c.Weapon.prototype.addBulletAnimation=function(a,b,c,d,e){return this.anims[a]={name:a,frames:b,frameRate:c,loop:d,useNumericIndex:e},this.bullets.callAll("animations.add","animations",a,b,c,d,e),this.bulletAnimation=a,this},c.Weapon.prototype.debug=function(a,b,c){void 0===a&&(a=16),void 0===b&&(b=32),void 0===c&&(c=!1),this.game.debug.text("Weapon Plugin",a,b),this.game.debug.text("Bullets Alive: "+this.bullets.total+" - Total: "+this.bullets.length,a,b+24),c&&this.bullets.forEachExists(this.game.debug.body,this.game.debug,"rgba(255, 0, 255, 0.8)")},Object.defineProperty(c.Weapon.prototype,"bulletClass",{get:function(){return this._bulletClass},set:function(a){this._bulletClass=a,this.bullets.classType=this._bulletClass}}),Object.defineProperty(c.Weapon.prototype,"bulletKillType",{get:function(){return this._bulletKillType},set:function(a){switch(a){case c.Weapon.KILL_STATIC_BOUNDS:case c.Weapon.KILL_WEAPON_BOUNDS:this.bulletBounds=this.bounds;break;case c.Weapon.KILL_CAMERA_BOUNDS:this.bulletBounds=this.game.camera.view;break;case c.Weapon.KILL_WORLD_BOUNDS:this.bulletBounds=this.game.world.bounds}this._bulletKillType=a}}),Object.defineProperty(c.Weapon.prototype,"bulletCollideWorldBounds",{get:function(){return this._bulletCollideWorldBounds},set:function(a){this._bulletCollideWorldBounds=a,this.bullets.setAll("body.collideWorldBounds",a),this.bullets.setAll("data.bodyDirty",!1)}}),Object.defineProperty(c.Weapon.prototype,"x",{get:function(){return this.fireFrom.x},set:function(a){this.fireFrom.x=a}}),Object.defineProperty(c.Weapon.prototype,"y",{get:function(){return this.fireFrom.y},set:function(a){this.fireFrom.y=a}}),c.Bullet=function(a,b,d,e,f){c.Sprite.call(this,a,b,d,e,f),this.anchor.set(.5),this.data={bulletManager:null,fromX:0,fromY:0,bodyDirty:!0,rotateToVelocity:!1,killType:0,killDistance:0}},c.Bullet.prototype=Object.create(c.Sprite.prototype),c.Bullet.prototype.constructor=c.Bullet,c.Bullet.prototype.kill=function(){return this.alive=!1,this.exists=!1,this.visible=!1,this.data.bulletManager.onKill.dispatch(this),this},c.Bullet.prototype.update=function(){this.exists&&(this.data.killType>c.Weapon.KILL_LIFESPAN&&(this.data.killType===c.Weapon.KILL_DISTANCE?this.game.physics.arcade.distanceToXY(this,this.data.fromX,this.data.fromY,!0)>this.data.killDistance&&this.kill():this.data.bulletManager.bulletBounds.intersects(this)||this.kill()),this.data.rotateToVelocity&&(this.rotation=Math.atan2(this.body.velocity.y,this.body.velocity.x)),this.data.bulletManager.bulletWorldWrap&&this.game.world.wrap(this,this.data.bulletManager.bulletWorldWrapPadding))},c.Video=function(a,b,d){if(void 0===b&&(b=null),void 0===d&&(d=null),this.game=a,this.key=b,this.width=0,this.height=0,this.type=c.VIDEO,this.disableTextureUpload=!1,this.touchLocked=!1,this.onPlay=new c.Signal,this.onChangeSource=new c.Signal,this.onComplete=new c.Signal,this.onAccess=new c.Signal,this.onError=new c.Signal,this.onTimeout=new c.Signal,this.timeout=15e3,this._timeOutID=null,this.video=null,this.videoStream=null,this.isStreaming=!1,this.retryLimit=20,this.retry=0,this.retryInterval=500,this._retryID=null,this._codeMuted=!1,this._muted=!1,this._codePaused=!1,this._paused=!1,this._pending=!1,this._autoplay=!1,this._endCallback=null,this._playCallback=null,b&&this.game.cache.checkVideoKey(b)){var e=this.game.cache.getVideo(b);e.isBlob?this.createVideoFromBlob(e.data):this.video=e.data,this.width=this.video.videoWidth,this.height=this.video.videoHeight}else d&&this.createVideoFromURL(d,!1);this.video&&!d?(this.baseTexture=new PIXI.BaseTexture(this.video),this.baseTexture.forceLoaded(this.width,this.height)):(this.baseTexture=new PIXI.BaseTexture(c.Cache.DEFAULT.baseTexture.source),this.baseTexture.forceLoaded(this.width,this.height)),this.texture=new PIXI.Texture(this.baseTexture),this.textureFrame=new c.Frame(0,0,0,this.width,this.height,"video"),this.texture.setFrame(this.textureFrame),this.texture.valid=!1,null!==b&&this.video&&(this.texture.valid=this.video.canplay),this.snapshot=null,c.BitmapData&&(this.snapshot=new c.BitmapData(this.game,"",this.width,this.height)),!this.game.device.cocoonJS&&(this.game.device.iOS||this.game.device.android)||window.PhaserGlobal&&window.PhaserGlobal.fakeiOSTouchLock?this.setTouchLock():e&&(e.locked=!1)},c.Video.prototype={connectToMediaStream:function(a,b){return a&&b&&(this.video=a,this.videoStream=b,this.isStreaming=!0,this.baseTexture.source=this.video,this.updateTexture(null,this.video.videoWidth,this.video.videoHeight),this.onAccess.dispatch(this)),this},startMediaStream:function(a,b,c){if(void 0===a&&(a=!1),void 0===b&&(b=null),void 0===c&&(c=null),!this.game.device.getUserMedia)return this.onError.dispatch(this,"No getUserMedia"),!1;null!==this.videoStream&&(this.videoStream.active?this.videoStream.active=!1:this.videoStream.stop()),this.removeVideoElement(),this.video=document.createElement("video"),this.video.setAttribute("autoplay","autoplay"),null!==b&&(this.video.width=b),null!==c&&(this.video.height=c),this._timeOutID=window.setTimeout(this.getUserMediaTimeout.bind(this),this.timeout);try{navigator.getUserMedia({audio:a,video:!0},this.getUserMediaSuccess.bind(this),this.getUserMediaError.bind(this))}catch(d){this.getUserMediaError(d)}return this},getUserMediaTimeout:function(){clearTimeout(this._timeOutID),this.onTimeout.dispatch(this)},getUserMediaError:function(a){clearTimeout(this._timeOutID),this.onError.dispatch(this,a)},getUserMediaSuccess:function(a){clearTimeout(this._timeOutID),this.videoStream=a,void 0!==this.video.mozSrcObject?this.video.mozSrcObject=a:this.video.src=window.URL&&window.URL.createObjectURL(a)||a;var b=this;this.video.onloadeddata=function(){function a(){if(c>0)if(b.video.videoWidth>0){var d=b.video.videoWidth,e=b.video.videoHeight;isNaN(b.video.videoHeight)&&(e=d/(4/3)),b.video.play(),b.isStreaming=!0,b.baseTexture.source=b.video,b.updateTexture(null,d,e),b.onAccess.dispatch(b)}else window.setTimeout(a,500);else console.warn("Unable to connect to video stream. Webcam error?");c--}var c=10;a()}},createVideoFromBlob:function(a){var b=this;return this.video=document.createElement("video"),this.video.controls=!1,this.video.setAttribute("autoplay","autoplay"),this.video.addEventListener("loadeddata",function(a){b.updateTexture(a)},!0),this.video.src=window.URL.createObjectURL(a),this.video.canplay=!0,this},createVideoFromURL:function(a,b){return void 0===b&&(b=!1),this.texture&&(this.texture.valid=!1),this.video=document.createElement("video"),this.video.controls=!1,b&&this.video.setAttribute("autoplay","autoplay"),this.video.src=a,this.video.canplay=!0,this.video.load(),this.retry=this.retryLimit,this._retryID=window.setTimeout(this.checkVideoProgress.bind(this),this.retryInterval),this.key=a,this},updateTexture:function(a,b,c){var d=!1;void 0!==b&&null!==b||(b=this.video.videoWidth,d=!0),void 0!==c&&null!==c||(c=this.video.videoHeight),this.width=b,this.height=c,this.baseTexture.source!==this.video&&(this.baseTexture.source=this.video),this.baseTexture.forceLoaded(b,c),this.texture.frame.resize(b,c),this.texture.width=b,this.texture.height=c,this.texture.valid=!0,this.snapshot&&this.snapshot.resize(b,c),d&&null!==this.key&&(this.onChangeSource.dispatch(this,b,c),this._autoplay&&(this.video.play(),this.onPlay.dispatch(this,this.loop,this.playbackRate)))},complete:function(){this.onComplete.dispatch(this)},play:function(a,b){return void 0===a&&(a=!1),void 0===b&&(b=1),this.game.sound.onMute&&(this.game.sound.onMute.add(this.setMute,this),this.game.sound.onUnMute.add(this.unsetMute,this),this.game.sound.mute&&this.setMute()),this.game.onPause.add(this.setPause,this),this.game.onResume.add(this.setResume,this),this._endCallback=this.complete.bind(this),this.video.addEventListener("ended",this._endCallback,!0),this.video.addEventListener("webkitendfullscreen",this._endCallback,!0),a?this.video.loop="loop":this.video.loop="",this.video.playbackRate=b,this.touchLocked?this._pending=!0:(this._pending=!1,null!==this.key&&(4!==this.video.readyState?(this.retry=this.retryLimit,this._retryID=window.setTimeout(this.checkVideoProgress.bind(this),this.retryInterval)):(this._playCallback=this.playHandler.bind(this),this.video.addEventListener("playing",this._playCallback,!0))),this.video.play(),this.onPlay.dispatch(this,a,b)),this},playHandler:function(){this.video.removeEventListener("playing",this._playCallback,!0),this.updateTexture()},stop:function(){return this.game.sound.onMute&&(this.game.sound.onMute.remove(this.setMute,this),this.game.sound.onUnMute.remove(this.unsetMute,this)),this.game.onPause.remove(this.setPause,this),this.game.onResume.remove(this.setResume,this),this.isStreaming?(this.video.mozSrcObject?(this.video.mozSrcObject.stop(),this.video.src=null):(this.video.src="",this.videoStream.active?this.videoStream.active=!1:this.videoStream.getTracks?this.videoStream.getTracks().forEach(function(a){a.stop()}):this.videoStream.stop()),this.videoStream=null,this.isStreaming=!1):(this.video.removeEventListener("ended",this._endCallback,!0),this.video.removeEventListener("webkitendfullscreen",this._endCallback,!0),this.video.removeEventListener("playing",this._playCallback,!0),this.touchLocked?this._pending=!1:this.video.pause()),this},add:function(a){if(Array.isArray(a))for(var b=0;b0?this._retryID=window.setTimeout(this.checkVideoProgress.bind(this),this.retryInterval):console.warn("Phaser.Video: Unable to start downloading video in time",this.isStreaming))},setTouchLock:function(){this.game.input.touch.addTouchLockCallback(this.unlock,this),this.touchLocked=!0},unlock:function(){if(this.touchLocked=!1,this.video.play(),this.onPlay.dispatch(this,this.loop,this.playbackRate),this.key){var a=this.game.cache.getVideo(this.key);a&&!a.isBlob&&(a.locked=!1)}return!0},grab:function(a,b,c){return void 0===a&&(a=!1),void 0===b&&(b=1),void 0===c&&(c=null),null===this.snapshot?void console.warn("Video.grab cannot run because Phaser.BitmapData is unavailable"):(a&&this.snapshot.cls(),this.snapshot.copy(this.video,0,0,this.width,this.height,0,0,this.width,this.height,0,0,0,1,1,b,c),this.snapshot)},removeVideoElement:function(){if(this.video){for(this.video.parentNode&&this.video.parentNode.removeChild(this.video);this.video.hasChildNodes();)this.video.removeChild(this.video.firstChild);this.video.removeAttribute("autoplay"),this.video.removeAttribute("src"),this.video=null}},destroy:function(){this.stop(),this.removeVideoElement(),this.touchLocked&&this.game.input.touch.removeTouchLockCallback(this.unlock,this),this._retryID&&window.clearTimeout(this._retryID)}},Object.defineProperty(c.Video.prototype,"currentTime",{get:function(){return this.video?this.video.currentTime:0},set:function(a){this.video.currentTime=a}}),Object.defineProperty(c.Video.prototype,"duration",{get:function(){return this.video?this.video.duration:0}}),Object.defineProperty(c.Video.prototype,"progress",{get:function(){return this.video?this.video.currentTime/this.video.duration:0}}),Object.defineProperty(c.Video.prototype,"mute",{get:function(){return this._muted},set:function(a){if(a=a||null){if(this._muted)return;this._codeMuted=!0,this.setMute()}else{if(!this._muted)return;this._codeMuted=!1,this.unsetMute()}}}),Object.defineProperty(c.Video.prototype,"paused",{get:function(){return this._paused},set:function(a){if(a=a||null,!this.touchLocked)if(a){if(this._paused)return;this._codePaused=!0,this.setPause()}else{if(!this._paused)return;this._codePaused=!1,this.setResume()}}}),Object.defineProperty(c.Video.prototype,"volume",{get:function(){return this.video?this.video.volume:1},set:function(a){0>a?a=0:a>1&&(a=1),this.video&&(this.video.volume=a)}}),Object.defineProperty(c.Video.prototype,"playbackRate",{get:function(){return this.video?this.video.playbackRate:1},set:function(a){this.video&&(this.video.playbackRate=a)}}),Object.defineProperty(c.Video.prototype,"loop",{get:function(){return this.video?this.video.loop:!1},set:function(a){a&&this.video?this.video.loop="loop":this.video&&(this.video.loop="")}}),Object.defineProperty(c.Video.prototype,"playing",{get:function(){return!(this.video.paused&&this.video.ended)}}),c.Video.prototype.constructor=c.Video,void 0===PIXI.blendModes&&(PIXI.blendModes=c.blendModes),void 0===PIXI.scaleModes&&(PIXI.scaleModes=c.scaleModes),void 0===PIXI.Texture.emptyTexture&&(PIXI.Texture.emptyTexture=new PIXI.Texture(new PIXI.BaseTexture)),void 0===PIXI.DisplayObject._tempMatrix&&(PIXI.DisplayObject._tempMatrix=new PIXI.Matrix),void 0===PIXI.RenderTexture.tempMatrix&&(PIXI.RenderTexture.tempMatrix=new PIXI.Matrix),PIXI.Graphics&&void 0===PIXI.Graphics.POLY&&(PIXI.Graphics.POLY=c.POLYGON,PIXI.Graphics.RECT=c.RECTANGLE,PIXI.Graphics.CIRC=c.CIRCLE,PIXI.Graphics.ELIP=c.ELLIPSE,PIXI.Graphics.RREC=c.ROUNDEDRECTANGLE),PIXI.TextureSilentFail=!0,"undefined"!=typeof exports?("undefined"!=typeof module&&module.exports&&(exports=module.exports=c),exports.Phaser=c):"undefined"!=typeof define&&define.amd?define("Phaser",function(){return b.Phaser=c}()):b.Phaser=c,c}.call(this); //# sourceMappingURL=phaser.map \ No newline at end of file diff --git a/build/pixi.js b/build/pixi.js index 4891533d9..7444db0b0 100644 --- a/build/pixi.js +++ b/build/pixi.js @@ -7,7 +7,7 @@ * * Phaser - http://phaser.io * -* v2.5.0 "Five Kings" - Built: Fri Jun 17 2016 12:45:06 +* v2.5.1 "Fal Moran" - Built: Fri Jul 08 2016 15:42:17 * * By Richard Davey http://www.photonstorm.com @photonstorm * @@ -155,64 +155,91 @@ PIXI.defaultRenderOptions = { */ /** - * @author Mat Groves http://matgroves.com/ @Doormat23 - */ +* @author Mat Groves http://matgroves.com @Doormat23 +* @author Richard Davey +* @license {@link https://github.com/photonstorm/phaser/blob/master/license.txt|MIT License} +*/ /** - * The base class for all objects that are rendered on the screen. - * This is an abstract class and should not be used on its own rather it should be extended. - * - * @class DisplayObject - * @constructor - */ -PIXI.DisplayObject = function() -{ +* The base class for all objects that are rendered. Contains properties for position, scaling, +* rotation, masks and cache handling. +* +* This is an abstract class and should not be used on its own, rather it should be extended. +* +* It is used internally by the likes of PIXI.Sprite. +* +* @class PIXI.DisplayObject +* @constructor +*/ +PIXI.DisplayObject = function() { + /** - * The coordinate of the object relative to the local coordinates of the parent. - * - * @property position - * @type Point - */ + * The coordinates, in pixels, of this DisplayObject, relative to its parent container. + * + * The value of this property does not reflect any positioning happening further up the display list. + * To obtain that value please see the `worldPosition` property. + * + * @property {PIXI.Point} position + * @default + */ this.position = new PIXI.Point(0, 0); /** - * The scale factor of the object. - * - * @property scale - * @type Point - */ + * The scale of this DisplayObject. A scale of 1:1 represents the DisplayObject + * at its default size. A value of 0.5 would scale this DisplayObject by half, and so on. + * + * The value of this property does not reflect any scaling happening further up the display list. + * To obtain that value please see the `worldScale` property. + * + * @property {PIXI.Point} scale + * @default + */ this.scale = new PIXI.Point(1, 1); /** - * The pivot point of the displayObject that it rotates around - * - * @property pivot - * @type Point - */ + * The pivot point of this DisplayObject that it rotates around. The values are expressed + * in pixel values. + * @property {PIXI.Point} pivot + * @default + */ this.pivot = new PIXI.Point(0, 0); /** - * The rotation of the object in radians. - * - * @property rotation - * @type Number - */ + * The rotation of this DisplayObject. The value is given, and expressed, in radians, and is based on + * a right-handed orientation. + * + * The value of this property does not reflect any rotation happening further up the display list. + * To obtain that value please see the `worldRotation` property. + * + * @property {number} rotation + * @default + */ this.rotation = 0; /** - * The opacity of the object. - * - * @property alpha - * @type Number - */ + * The alpha value of this DisplayObject. A value of 1 is fully opaque. A value of 0 is transparent. + * Please note that an object with an alpha value of 0 is skipped during the render pass. + * + * The value of this property does not reflect any alpha values set further up the display list. + * To obtain that value please see the `worldAlpha` property. + * + * @property {number} alpha + * @default + */ this.alpha = 1; /** - * The visibility of the object. - * - * @property visible - * @type Boolean - */ + * The visibility of this DisplayObject. A value of `false` makes the object invisible. + * A value of `true` makes it visible. Please note that an object with a visible value of + * `false` is skipped during the render pass. Equally a DisplayObject with visible false will + * not render any of its children. + * + * The value of this property does not reflect any visible values set further up the display list. + * To obtain that value please see the `worldVisible` property. + * + * @property {boolean} visible + * @default + */ this.visible = true; /** @@ -225,688 +252,729 @@ PIXI.DisplayObject = function() this.hitArea = null; /** - * Can this object be rendered - * - * @property renderable - * @type Boolean - */ + * Should this DisplayObject be rendered by the renderer? An object with a renderable value of + * `false` is skipped during the render pass. + * + * @property {boolean} renderable + * @default + */ this.renderable = false; /** - * [read-only] The display object container that contains this display object. - * - * @property parent - * @type DisplayObjectContainer - * @readOnly - */ + * The parent DisplayObjectContainer that this DisplayObject is a child of. + * All DisplayObjects must belong to a parent in order to be rendered. + * The root parent is the Stage object. This property is set automatically when the + * DisplayObject is added to, or removed from, a DisplayObjectContainer. + * + * @property {PIXI.DisplayObjectContainer} parent + * @default + * @readOnly + */ this.parent = null; /** - * [read-only] The stage the display object is connected to, or undefined if it is not connected to the stage. - * - * @property stage - * @type Stage - * @readOnly - */ + * The stage that this DisplayObject is connected to. + * + * @property {PIXI.Stage} stage + * @default + * @readOnly + */ this.stage = null; /** - * [read-only] The multiplied alpha of the displayObject - * - * @property worldAlpha - * @type Number - * @readOnly - */ + * The multiplied alpha value of this DisplayObject. A value of 1 is fully opaque. A value of 0 is transparent. + * This value is the calculated total, based on the alpha values of all parents of this DisplayObjects + * in the display list. + * + * To obtain, and set, the local alpha value, see the `alpha` property. + * + * Note: This property is only updated at the end of the `updateTransform` call, once per render. Until + * that happens this property will contain values based on the previous frame. Be mindful of this if + * accessing this property outside of the normal game flow, i.e. from an asynchronous event callback. + * + * @property {number} worldAlpha + * @readOnly + */ this.worldAlpha = 1; /** - * [read-only] Current transform of the object based on world (parent) factors - * - * @property worldTransform - * @type Matrix - * @readOnly - * @private - */ + * The current transform of this DisplayObject. + * + * This property contains the calculated total, based on the transforms of all parents of this + * DisplayObject in the display list. + * + * Note: This property is only updated at the end of the `updateTransform` call, once per render. Until + * that happens this property will contain values based on the previous frame. Be mindful of this if + * accessing this property outside of the normal game flow, i.e. from an asynchronous event callback. + * + * @property {PIXI.Matrix} worldTransform + * @readOnly + */ this.worldTransform = new PIXI.Matrix(); /** - * The position of the Display Object based on the world transform. - * This value is updated at the end of updateTransform and takes all parent transforms into account. - * - * @property worldPosition - * @type Point - * @readOnly - */ + * The coordinates, in pixels, of this DisplayObject within the world. + * + * This property contains the calculated total, based on the positions of all parents of this + * DisplayObject in the display list. + * + * Note: This property is only updated at the end of the `updateTransform` call, once per render. Until + * that happens this property will contain values based on the previous frame. Be mindful of this if + * accessing this property outside of the normal game flow, i.e. from an asynchronous event callback. + * + * @property {PIXI.Point} worldPosition + * @readOnly + */ this.worldPosition = new PIXI.Point(0, 0); /** - * The scale of the Display Object based on the world transform. - * This value is updated at the end of updateTransform and takes all parent transforms into account. - * - * @property worldScale - * @type Point - * @readOnly - */ + * The global scale of this DisplayObject. + * + * This property contains the calculated total, based on the scales of all parents of this + * DisplayObject in the display list. + * + * Note: This property is only updated at the end of the `updateTransform` call, once per render. Until + * that happens this property will contain values based on the previous frame. Be mindful of this if + * accessing this property outside of the normal game flow, i.e. from an asynchronous event callback. + * + * @property {PIXI.Point} worldScale + * @readOnly + */ this.worldScale = new PIXI.Point(1, 1); /** - * The rotation of the Display Object, in radians, based on the world transform. - * This value is updated at the end of updateTransform and takes all parent transforms into account. - * - * @property worldRotation - * @type Number - * @readOnly - */ + * The rotation, in radians, of this DisplayObject. + * + * This property contains the calculated total, based on the rotations of all parents of this + * DisplayObject in the display list. + * + * Note: This property is only updated at the end of the `updateTransform` call, once per render. Until + * that happens this property will contain values based on the previous frame. Be mindful of this if + * accessing this property outside of the normal game flow, i.e. from an asynchronous event callback. + * + * @property {number} worldRotation + * @readOnly + */ this.worldRotation = 0; /** - * cached sin rotation and cos rotation - * - * @property _sr - * @type Number - * @private - */ - this._sr = 0; - - /** - * cached sin rotation and cos rotation - * - * @property _cr - * @type Number - * @private - */ - this._cr = 1; - - /** - * The area the filter is applied to like the hitArea this is used as more of an optimisation - * rather than figuring out the dimensions of the displayObject each frame you can set this rectangle - * - * @property filterArea - * @type Rectangle - */ + * The rectangular area used by filters when rendering a shader for this DisplayObject. + * + * @property {PIXI.Rectangle} filterArea + * @type Rectangle + * @default + */ this.filterArea = null; /** - * The original, cached bounds of the object - * - * @property _bounds - * @type Rectangle - * @private - */ + * @property {number} _sr - Cached rotation value. + * @private + */ + this._sr = 0; + + /** + * @property {number} _cr - Cached rotation value. + * @private + */ + this._cr = 1; + + /** + * @property {PIXI.Rectangle} _bounds - The cached bounds of this object. + * @private + */ this._bounds = new PIXI.Rectangle(0, 0, 1, 1); /** - * The most up-to-date bounds of the object - * - * @property _currentBounds - * @type Rectangle - * @private - */ + * @property {PIXI.Rectangle} _currentBounds - The most recently calculated bounds of this object. + * @private + */ this._currentBounds = null; /** - * The original, cached mask of the object - * - * @property _mask - * @type Rectangle - * @private - */ + * @property {PIXI.Rectangle} _mask - The cached mask of this object. + * @private + */ this._mask = null; /** - * Cached internal flag. - * - * @property _cacheAsBitmap - * @type Boolean - * @private - */ + * @property {boolean} _cacheAsBitmap - Internal cache as bitmap flag. + * @private + */ this._cacheAsBitmap = false; /** - * Cached internal flag. - * - * @property _cacheIsDirty - * @type Boolean - * @private - */ + * @property {boolean} _cacheIsDirty - Internal dirty cache flag. + * @private + */ this._cacheIsDirty = false; }; -// constructor PIXI.DisplayObject.prototype.constructor = PIXI.DisplayObject; -/** - * Destroy this DisplayObject. - * Removes all references to transformCallbacks, its parent, the stage, filters, bounds, mask and cached Sprites. - * - * @method destroy - */ -PIXI.DisplayObject.prototype.destroy = function() -{ - if (this.children) - { - var i = this.children.length; +PIXI.DisplayObject.prototype = { - while (i--) + /** + * Destroy this DisplayObject. + * + * Removes any cached sprites, sets renderable flag to false, and nulls references to the Stage, filters, + * bounds and mask. + * + * Also iteratively calls `destroy` on any children. + * + * @method PIXI.DisplayObject#destroy + */ + destroy: function () { + + if (this.children) { - this.children[i].destroy(); - } + var i = this.children.length; - this.children = []; - } - - this.hitArea = null; - this.parent = null; - this.stage = null; - this.worldTransform = null; - this.filterArea = null; - this._bounds = null; - this._currentBounds = null; - this._mask = null; - - // In case Pixi is still going to try and render it even though destroyed - this.renderable = false; - - this._destroyCachedSprite(); -}; - -/** - * [read-only] Indicates if the sprite is globally visible. - * - * @property worldVisible - * @type Boolean - */ -Object.defineProperty(PIXI.DisplayObject.prototype, 'worldVisible', { - - get: function() { - - var item = this; - - do - { - if (!item.visible) return false; - item = item.parent; - } - while(item); - - return true; - } - -}); - -/** - * Sets a mask for the displayObject. A mask is an object that limits the visibility of an object to the shape of the mask applied to it. - * In PIXI a regular mask must be a PIXI.Graphics object. This allows for much faster masking in canvas as it utilises shape clipping. - * To remove a mask, set this property to null. - * - * @property mask - * @type Graphics - */ -Object.defineProperty(PIXI.DisplayObject.prototype, 'mask', { - - get: function() { - return this._mask; - }, - - set: function(value) { - - if (this._mask) this._mask.isMask = false; - - this._mask = value; - - if (this._mask) this._mask.isMask = true; - } - -}); - -/** - * Sets the filters for the displayObject. - * IMPORTANT: This is a webGL only feature and will be ignored by the Canvas renderer. - * - * To remove filters simply set this property to 'null'. - * - * You cannot have a filter and a multiply blend mode active at the same time. Setting a filter will reset - * this objects blend mode to NORMAL. - * - * @property filters - * @type Array(Filter) - */ -Object.defineProperty(PIXI.DisplayObject.prototype, 'filters', { - - get: function() { - return this._filters; - }, - - set: function(value) { - - if (value) - { - // now put all the passes in one place.. - var passes = []; - - for (var i = 0; i < value.length; i++) + while (i--) { - var filterPasses = value[i].passes; - - for (var j = 0; j < filterPasses.length; j++) - { - passes.push(filterPasses[j]); - } + this.children[i].destroy(); } - // TODO change this as it is legacy - this._filterBlock = { target: this, filterPasses: passes }; + this.children = []; } - this._filters = value; + this.hitArea = null; + this.parent = null; + this.stage = null; + this.worldTransform = null; + this.filterArea = null; + this.renderable = false; - if (this.blendMode && this.blendMode === PIXI.blendModes.MULTIPLY) - { - this.blendMode = PIXI.blendModes.NORMAL; - } - } -}); + this._bounds = null; + this._currentBounds = null; + this._mask = null; -/** - * Set if this display object is cached as a bitmap. - * This basically takes a snap shot of the display object as it is at that moment. It can provide a performance benefit for complex static displayObjects. - * To remove simply set this property to 'null' - * @property cacheAsBitmap - * @type Boolean - */ -Object.defineProperty(PIXI.DisplayObject.prototype, 'cacheAsBitmap', { + this._destroyCachedSprite(); - get: function() { - return this._cacheAsBitmap; }, - set: function(value) { + /* + * Updates the transform matrix this DisplayObject uses for rendering. + * + * If the object has no parent, and no parent parameter is provided, it will default to + * Phaser.Game.World as the parent transform to use. If that is unavailable the transform fails to take place. + * + * The `parent` parameter has priority over the actual parent. Use it as a parent override. + * Setting it does **not** change the actual parent of this DisplayObject. + * + * Calling this method updates the `worldTransform`, `worldAlpha`, `worldPosition`, `worldScale` + * and `worldRotation` properties. + * + * If a `transformCallback` has been specified, it is called at the end of this method, and is passed + * the new, updated, worldTransform property, along with the parent transform used. + * + * @method PIXI.DisplayObject#updateTransform + * @param {PIXI.DisplayObject} [parent] - Optional parent to calculate this DisplayObjects transform from. + * @return {PIXI.DisplayObject} - A reference to this DisplayObject. + */ + updateTransform: function (parent) { - if (this._cacheAsBitmap === value) + if (!parent && !this.parent && !this.game) + { + return this; + } + + var p = this.parent; + + if (parent) + { + p = parent; + } + else if (!this.parent) + { + p = this.game.world; + } + + // create some matrix refs for easy access + var pt = p.worldTransform; + var wt = this.worldTransform; + + // temporary matrix variables + var a, b, c, d, tx, ty; + + // so if rotation is between 0 then we can simplify the multiplication process.. + if (this.rotation % PIXI.PI_2) + { + // check to see if the rotation is the same as the previous render. This means we only need to use sin and cos when rotation actually changes + if (this.rotation !== this.rotationCache) + { + this.rotationCache = this.rotation; + this._sr = Math.sin(this.rotation); + this._cr = Math.cos(this.rotation); + } + + // get the matrix values of the displayobject based on its transform properties.. + a = this._cr * this.scale.x; + b = this._sr * this.scale.x; + c = -this._sr * this.scale.y; + d = this._cr * this.scale.y; + tx = this.position.x; + ty = this.position.y; + + // check for pivot.. not often used so geared towards that fact! + if (this.pivot.x || this.pivot.y) + { + tx -= this.pivot.x * a + this.pivot.y * c; + ty -= this.pivot.x * b + this.pivot.y * d; + } + + // concat the parent matrix with the objects transform. + wt.a = a * pt.a + b * pt.c; + wt.b = a * pt.b + b * pt.d; + wt.c = c * pt.a + d * pt.c; + wt.d = c * pt.b + d * pt.d; + wt.tx = tx * pt.a + ty * pt.c + pt.tx; + wt.ty = tx * pt.b + ty * pt.d + pt.ty; + } + else + { + // lets do the fast version as we know there is no rotation.. + a = this.scale.x; + d = this.scale.y; + + tx = this.position.x - this.pivot.x * a; + ty = this.position.y - this.pivot.y * d; + + wt.a = a * pt.a; + wt.b = a * pt.b; + wt.c = d * pt.c; + wt.d = d * pt.d; + wt.tx = tx * pt.a + ty * pt.c + pt.tx; + wt.ty = tx * pt.b + ty * pt.d + pt.ty; + } + + // Set the World values + this.worldAlpha = this.alpha * p.worldAlpha; + this.worldPosition.set(wt.tx, wt.ty); + this.worldScale.set(this.scale.x * Math.sqrt(wt.a * wt.a + wt.c * wt.c), this.scale.y * Math.sqrt(wt.b * wt.b + wt.d * wt.d)); + this.worldRotation = Math.atan2(-wt.c, wt.d); + + // reset the bounds each time this is called! + this._currentBounds = null; + + // Custom callback? + if (this.transformCallback) + { + this.transformCallback.call(this.transformCallbackContext, wt, pt); + } + + return this; + + }, + + /** + * Sets the root Stage object that this DisplayObject is connected to. + * + * @method PIXI.DisplayObject#setStageReference + * @param {Phaser.Stage} stage - The stage that the object will have as its current stage reference + * @return {PIXI.DisplayObject} - A reference to this DisplayObject. + */ + setStageReference: function (stage) + { + this.stage = stage; + + return this; + + }, + + /** + * To be overridden by classes that require it. + * + * @method PIXI.DisplayObject#preUpdate + */ + preUpdate: function () { + + }, + + /** + * Generates a RenderTexture based on this DisplayObject, which can they be used to texture other Sprites. + * This can be useful if your DisplayObject is static, or complicated, and needs to be reused multiple times. + * + * Please note that no garbage collection takes place on old textures. It is up to you to destroy old textures, + * and references to them, so they don't linger in memory. + * + * @method PIXI.DisplayObject#generateTexture + * @param {number} [resolution=1] - The resolution of the texture being generated. + * @param {number} [scaleMode=PIXI.scaleModes.DEFAULT] - See {{#crossLink "PIXI/scaleModes:property"}}PIXI.scaleModes{{/crossLink}} for possible values. + * @param {PIXI.CanvasRenderer|PIXI.WebGLRenderer} renderer - The renderer used to generate the texture. + * @return {PIXI.RenderTexture} - A RenderTexture containing an image of this DisplayObject at the time it was invoked. + */ + generateTexture: function (resolution, scaleMode, renderer) { + + var bounds = this.getLocalBounds(); + + var renderTexture = new PIXI.RenderTexture(bounds.width | 0, bounds.height | 0, renderer, scaleMode, resolution); + + PIXI.DisplayObject._tempMatrix.tx = -bounds.x; + PIXI.DisplayObject._tempMatrix.ty = -bounds.y; + + renderTexture.render(this, PIXI.DisplayObject._tempMatrix); + + return renderTexture; + + }, + + /** + * If this DisplayObject has a cached Sprite, this method generates and updates it. + * + * @method PIXI.DisplayObject#updateCache + * @return {PIXI.DisplayObject} - A reference to this DisplayObject. + */ + updateCache: function () { + + this._generateCachedSprite(); + + return this; + + }, + + /** + * Calculates the global position of this DisplayObject, based on the position given. + * + * @method PIXI.DisplayObject#toGlobal + * @param {PIXI.Point} position - The global position to calculate from. + * @return {PIXI.Point} - A point object representing the position of this DisplayObject based on the global position given. + */ + toGlobal: function (position) { + + this.updateTransform(); + + return this.worldTransform.apply(position); + + }, + + /** + * Calculates the local position of this DisplayObject, relative to another point. + * + * @method PIXI.DisplayObject#toLocal + * @param {PIXI.Point} position - The world origin to calculate from. + * @param {PIXI.DisplayObject} [from] - An optional DisplayObject to calculate the global position from. + * @return {PIXI.Point} - A point object representing the position of this DisplayObject based on the global position given. + */ + toLocal: function (position, from) { + + if (from) + { + position = from.toGlobal(position); + } + + this.updateTransform(); + + return this.worldTransform.applyInverse(position); + + }, + + /** + * Internal method. + * + * @method PIXI.DisplayObject#_renderCachedSprite + * @private + * @param {Object} renderSession - The render session + */ + _renderCachedSprite: function (renderSession) { + + this._cachedSprite.worldAlpha = this.worldAlpha; + + if (renderSession.gl) + { + PIXI.Sprite.prototype._renderWebGL.call(this._cachedSprite, renderSession); + } + else + { + PIXI.Sprite.prototype._renderCanvas.call(this._cachedSprite, renderSession); + } + + }, + + /** + * Internal method. + * + * @method PIXI.DisplayObject#_generateCachedSprite + * @private + */ + _generateCachedSprite: function () { + + this._cacheAsBitmap = false; + + var bounds = this.getLocalBounds(); + + // Round it off and force non-zero dimensions + bounds.width = Math.max(1, Math.ceil(bounds.width)); + bounds.height = Math.max(1, Math.ceil(bounds.height)); + + this.updateTransform(); + + if (!this._cachedSprite) + { + var renderTexture = new PIXI.RenderTexture(bounds.width, bounds.height); + this._cachedSprite = new PIXI.Sprite(renderTexture); + this._cachedSprite.worldTransform = this.worldTransform; + } + else + { + this._cachedSprite.texture.resize(bounds.width, bounds.height); + } + + // Remove filters + var tempFilters = this._filters; + + this._filters = null; + this._cachedSprite.filters = tempFilters; + + PIXI.DisplayObject._tempMatrix.tx = -bounds.x; + PIXI.DisplayObject._tempMatrix.ty = -bounds.y; + + this._cachedSprite.texture.render(this, PIXI.DisplayObject._tempMatrix, true); + this._cachedSprite.anchor.x = -(bounds.x / bounds.width); + this._cachedSprite.anchor.y = -(bounds.y / bounds.height); + + this._filters = tempFilters; + + this._cacheAsBitmap = true; + + }, + + /** + * Destroys a cached Sprite. + * + * @method PIXI.DisplayObject#_destroyCachedSprite + * @private + */ + _destroyCachedSprite: function () { + + if (!this._cachedSprite) { return; } - if (value) - { - this._generateCachedSprite(); - } - else - { - this._destroyCachedSprite(); - } + this._cachedSprite.texture.destroy(true); - this._cacheAsBitmap = value; - } + this._cachedSprite = null; -}); - -/* - * Updates the object transform for rendering. - * - * If the object has no parent, and no parent parameter is provided, it will default to Phaser.Game.World as the parent. - * If that is unavailable the transform fails to take place. - * - * The `parent` parameter has priority over the actual parent. Use it as a parent override. - * Setting it does **not** change the actual parent of this DisplayObject, it just uses the parent for the transform update. - * - * @method updateTransform - * @param {DisplayObject} [parent] - Optional parent to parent this DisplayObject transform from. - */ -PIXI.DisplayObject.prototype.updateTransform = function(parent) -{ - if (!parent && !this.parent && !this.game) - { - return; - } - - var p = this.parent; - - if (parent) - { - p = parent; - } - else if (!this.parent) - { - p = this.game.world; - } - - // create some matrix refs for easy access - var pt = p.worldTransform; - var wt = this.worldTransform; - - // temporary matrix variables - var a, b, c, d, tx, ty; - - // so if rotation is between 0 then we can simplify the multiplication process.. - if (this.rotation % PIXI.PI_2) - { - // check to see if the rotation is the same as the previous render. This means we only need to use sin and cos when rotation actually changes - if (this.rotation !== this.rotationCache) - { - this.rotationCache = this.rotation; - this._sr = Math.sin(this.rotation); - this._cr = Math.cos(this.rotation); - } - - // get the matrix values of the displayobject based on its transform properties.. - a = this._cr * this.scale.x; - b = this._sr * this.scale.x; - c = -this._sr * this.scale.y; - d = this._cr * this.scale.y; - tx = this.position.x; - ty = this.position.y; - - // check for pivot.. not often used so geared towards that fact! - if (this.pivot.x || this.pivot.y) - { - tx -= this.pivot.x * a + this.pivot.y * c; - ty -= this.pivot.x * b + this.pivot.y * d; - } - - // concat the parent matrix with the objects transform. - wt.a = a * pt.a + b * pt.c; - wt.b = a * pt.b + b * pt.d; - wt.c = c * pt.a + d * pt.c; - wt.d = c * pt.b + d * pt.d; - wt.tx = tx * pt.a + ty * pt.c + pt.tx; - wt.ty = tx * pt.b + ty * pt.d + pt.ty; - } - else - { - // lets do the fast version as we know there is no rotation.. - a = this.scale.x; - d = this.scale.y; - - tx = this.position.x - this.pivot.x * a; - ty = this.position.y - this.pivot.y * d; - - wt.a = a * pt.a; - wt.b = a * pt.b; - wt.c = d * pt.c; - wt.d = d * pt.d; - wt.tx = tx * pt.a + ty * pt.c + pt.tx; - wt.ty = tx * pt.b + ty * pt.d + pt.ty; - } - - // Set the World values - this.worldAlpha = this.alpha * p.worldAlpha; - this.worldPosition.set(wt.tx, wt.ty); - this.worldScale.set(this.scale.x * Math.sqrt(wt.a * wt.a + wt.c * wt.c), this.scale.y * Math.sqrt(wt.b * wt.b + wt.d * wt.d)); - this.worldRotation = Math.atan2(-wt.c, wt.d); - - // reset the bounds each time this is called! - this._currentBounds = null; - - // Custom callback? - if (this.transformCallback) - { - this.transformCallback.call(this.transformCallbackContext, wt, pt); } }; -// performance increase to avoid using call.. (10x faster) +// Alias for updateTransform. As used in DisplayObject container, etc. PIXI.DisplayObject.prototype.displayObjectUpdateTransform = PIXI.DisplayObject.prototype.updateTransform; -/** - * Retrieves the bounds of the displayObject as a rectangle object - * - * @method getBounds - * @param matrix {Matrix} - * @return {Rectangle} the rectangular bounding area - */ -PIXI.DisplayObject.prototype.getBounds = function(matrix) -{ - matrix = matrix;//just to get passed js hinting (and preserve inheritance) - return PIXI.EmptyRectangle; -}; +Object.defineProperties(PIXI.DisplayObject.prototype, { -/** - * Retrieves the local bounds of the displayObject as a rectangle object - * - * @method getLocalBounds - * @return {Rectangle} the rectangular bounding area - */ -PIXI.DisplayObject.prototype.getLocalBounds = function() -{ - return this.getBounds(PIXI.identityMatrix);///PIXI.EmptyRectangle(); -}; + /** + * The horizontal position of the DisplayObject, in pixels, relative to its parent. + * If you need the world position of the DisplayObject, use `DisplayObject.worldPosition` instead. + * @name PIXI.DisplayObject#x + * @property {number} x - The horizontal position of the DisplayObject, in pixels, relative to its parent. + */ + 'x': { -/** - * Sets the object's stage reference, the stage this object is connected to - * - * @method setStageReference - * @param stage {Stage} the stage that the object will have as its current stage reference - */ -PIXI.DisplayObject.prototype.setStageReference = function(stage) -{ - this.stage = stage; -}; + get: function () { -/** - * Empty, to be overridden by classes that require it. - * - * @method preUpdate - */ -PIXI.DisplayObject.prototype.preUpdate = function() -{ -}; + return this.position.x; -/** - * Useful function that returns a texture of the displayObject object that can then be used to create sprites - * This can be quite useful if your displayObject is static / complicated and needs to be reused multiple times. - * - * @method generateTexture - * @param resolution {Number} The resolution of the texture being generated - * @param scaleMode {Number} See {{#crossLink "PIXI/scaleModes:property"}}PIXI.scaleModes{{/crossLink}} for possible values - * @param renderer {CanvasRenderer|WebGLRenderer} The renderer used to generate the texture. - * @return {RenderTexture} a texture of the graphics object - */ -PIXI.DisplayObject.prototype.generateTexture = function(resolution, scaleMode, renderer) -{ - var bounds = this.getLocalBounds(); + }, - var renderTexture = new PIXI.RenderTexture(bounds.width | 0, bounds.height | 0, renderer, scaleMode, resolution); - - PIXI.DisplayObject._tempMatrix.tx = -bounds.x; - PIXI.DisplayObject._tempMatrix.ty = -bounds.y; - - renderTexture.render(this, PIXI.DisplayObject._tempMatrix); + set: function (value) { - return renderTexture; -}; + this.position.x = value; -/** - * Generates and updates the cached sprite for this object. - * - * @method updateCache - */ -PIXI.DisplayObject.prototype.updateCache = function() -{ - this._generateCachedSprite(); -}; + } -/** - * Calculates the global position of the display object - * - * @method toGlobal - * @param position {Point} The world origin to calculate from - * @return {Point} A point object representing the position of this object - */ -PIXI.DisplayObject.prototype.toGlobal = function(position) -{ - // don't need to u[date the lot - this.displayObjectUpdateTransform(); - return this.worldTransform.apply(position); -}; - -/** - * Calculates the local position of the display object relative to another point - * - * @method toLocal - * @param position {Point} The world origin to calculate from - * @param [from] {DisplayObject} The DisplayObject to calculate the global position from - * @return {Point} A point object representing the position of this object - */ -PIXI.DisplayObject.prototype.toLocal = function(position, from) -{ - if (from) - { - position = from.toGlobal(position); - } - - // don't need to u[date the lot - this.displayObjectUpdateTransform(); - - return this.worldTransform.applyInverse(position); -}; - -/** - * Internal method. - * - * @method _renderCachedSprite - * @param renderSession {Object} The render session - * @private - */ -PIXI.DisplayObject.prototype._renderCachedSprite = function(renderSession) -{ - this._cachedSprite.worldAlpha = this.worldAlpha; - - if (renderSession.gl) - { - PIXI.Sprite.prototype._renderWebGL.call(this._cachedSprite, renderSession); - } - else - { - PIXI.Sprite.prototype._renderCanvas.call(this._cachedSprite, renderSession); - } -}; - -/** - * Internal method. - * - * @method _generateCachedSprite - * @private - */ -PIXI.DisplayObject.prototype._generateCachedSprite = function() -{ - this._cacheAsBitmap = false; - - var bounds = this.getLocalBounds(); - - // Round it off and force non-zero dimensions - bounds.width = Math.max(1, Math.ceil(bounds.width)); - bounds.height = Math.max(1, Math.ceil(bounds.height)); - - this.updateTransform(); - - if (!this._cachedSprite) - { - var renderTexture = new PIXI.RenderTexture(bounds.width, bounds.height); - this._cachedSprite = new PIXI.Sprite(renderTexture); - this._cachedSprite.worldTransform = this.worldTransform; - } - else - { - this._cachedSprite.texture.resize(bounds.width, bounds.height); - } - - // Remove filters - var tempFilters = this._filters; - this._filters = null; - this._cachedSprite.filters = tempFilters; - - // PIXI.DisplayObject._tempMatrix.identity(); - PIXI.DisplayObject._tempMatrix.tx = -bounds.x; - PIXI.DisplayObject._tempMatrix.ty = -bounds.y; - - this._cachedSprite.texture.render(this, PIXI.DisplayObject._tempMatrix, true); - this._cachedSprite.anchor.x = -(bounds.x / bounds.width); - this._cachedSprite.anchor.y = -(bounds.y / bounds.height); - - this._filters = tempFilters; - - this._cacheAsBitmap = true; -}; - -/** -* Destroys the cached sprite. -* -* @method _destroyCachedSprite -* @private -*/ -PIXI.DisplayObject.prototype._destroyCachedSprite = function() -{ - if (!this._cachedSprite) return; - - this._cachedSprite.texture.destroy(true); - - // TODO could be object pooled! - this._cachedSprite = null; -}; - -/** -* Renders the object using the WebGL renderer -* -* @method _renderWebGL -* @param renderSession {RenderSession} -* @private -*/ -PIXI.DisplayObject.prototype._renderWebGL = function(renderSession) -{ - // OVERWRITE; - // this line is just here to pass jshinting :) - renderSession = renderSession; -}; - -/** -* Renders the object using the Canvas renderer -* -* @method _renderCanvas -* @param renderSession {RenderSession} -* @private -*/ -PIXI.DisplayObject.prototype._renderCanvas = function(renderSession) -{ - // OVERWRITE; - // this line is just here to pass jshinting :) - renderSession = renderSession; -}; - -/** - * The position of the displayObject on the x axis relative to the local coordinates of the parent. - * - * @property x - * @type Number - */ -Object.defineProperty(PIXI.DisplayObject.prototype, 'x', { - - get: function() { - return this.position.x; }, - set: function(value) { - this.position.x = value; - } + /** + * The vertical position of the DisplayObject, in pixels, relative to its parent. + * If you need the world position of the DisplayObject, use `DisplayObject.worldPosition` instead. + * @name PIXI.DisplayObject#y + * @property {number} y - The vertical position of the DisplayObject, in pixels, relative to its parent. + */ + 'y': { -}); + get: function () { -/** - * The position of the displayObject on the y axis relative to the local coordinates of the parent. - * - * @property y - * @type Number - */ -Object.defineProperty(PIXI.DisplayObject.prototype, 'y', { + return this.position.y; + + }, + + set: function (value) { + + this.position.y = value; + + } - get: function() { - return this.position.y; }, - set: function(value) { - this.position.y = value; + /** + * Indicates if this DisplayObject is visible, based on it, and all of its parents, `visible` property values. + * @name PIXI.DisplayObject#worldVisible + * @property {boolean} worldVisible - Indicates if this DisplayObject is visible, based on it, and all of its parents, `visible` property values. + */ + 'worldVisible': { + + get: function () { + + if (!this.visible) + { + return false; + } + else + { + var item = this.parent; + + do + { + if (!item.visible) + { + return false; + } + + item = item.parent; + } + while (item); + + return true; + } + + } + + }, + + /** + * Sets a mask for this DisplayObject. A mask is an instance of a Graphics object. + * When applied it limits the visible area of this DisplayObject to the shape of the mask. + * Under a Canvas renderer it uses shape clipping. Under a WebGL renderer it uses a Stencil Buffer. + * To remove a mask, set this property to `null`. + * + * @name PIXI.DisplayObject#mask + * @property {PIXI.Graphics} mask - The mask applied to this DisplayObject. Set to `null` to remove an existing mask. + */ + 'mask': { + + get: function () { + + return this._mask; + + }, + + set: function (value) { + + if (this._mask) + { + this._mask.isMask = false; + } + + this._mask = value; + + if (value) + { + this._mask.isMask = true; + } + + } + + }, + + /** + * Sets the filters for this DisplayObject. This is a WebGL only feature, and is ignored by the Canvas + * Renderer. A filter is a shader applied to this DisplayObject. You can modify the placement of the filter + * using `DisplayObject.filterArea`. + * + * To remove filters, set this property to `null`. + * + * Note: You cannot have a filter set, and a MULTIPLY Blend Mode active, at the same time. Setting a + * filter will reset this DisplayObjects blend mode to NORMAL. + * + * @name PIXI.DisplayObject#filters + * @property {Array} filters - An Array of PIXI.AbstractFilter objects, or objects that extend them. + */ + 'filters': { + + get: function () { + + return this._filters; + + }, + + set: function (value) { + + if (Array.isArray(value)) + { + // Put all the passes in one place. + var passes = []; + + for (var i = 0; i < value.length; i++) + { + var filterPasses = value[i].passes; + + for (var j = 0; j < filterPasses.length; j++) + { + passes.push(filterPasses[j]); + } + } + + // Needed any more? + this._filterBlock = { target: this, filterPasses: passes }; + } + + this._filters = value; + + if (this.blendMode && this.blendMode === PIXI.blendModes.MULTIPLY) + { + this.blendMode = PIXI.blendModes.NORMAL; + } + + } + + }, + + /** + * Sets if this DisplayObject should be cached as a bitmap. + * + * When invoked it will take a snapshot of the DisplayObject, as it is at that moment, and store it + * in a RenderTexture. This is then used whenever this DisplayObject is rendered. It can provide a + * performance benefit for complex, but static, DisplayObjects. I.e. those with lots of children. + * + * Cached Bitmaps do not track their parents. If you update a property of this DisplayObject, it will not + * re-generate the cached bitmap automatically. To do that you need to call `DisplayObject.updateCache`. + * + * To remove a cached bitmap, set this property to `null`. + * + * @name PIXI.DisplayObject#cacheAsBitmap + * @property {boolean} cacheAsBitmap - Cache this DisplayObject as a Bitmap. Set to `null` to remove an existing cached bitmap. + */ + 'cacheAsBitmap': { + + get: function () { + + return this._cacheAsBitmap; + + }, + + set: function (value) { + + if (this._cacheAsBitmap === value) + { + return; + } + + if (value) + { + this._generateCachedSprite(); + } + else + { + this._destroyCachedSprite(); + } + + this._cacheAsBitmap = value; + + } + } }); @@ -1241,6 +1309,8 @@ PIXI.DisplayObjectContainer.prototype.getBounds = function() return PIXI.EmptyRectangle; } + this.updateTransform(); + var minX = Infinity; var minY = Infinity; @@ -1937,44 +2007,6 @@ PIXI.Sprite.prototype._renderCanvas = function(renderSession, matrix) }; -// some helper functions.. - -/** - * - * Helper function that creates a sprite that will contain a texture from the TextureCache based on the frameId - * The frame ids are created when a Texture packer file has been loaded - * - * @method fromFrame - * @static - * @param frameId {String} The frame Id of the texture in the cache - * @return {Sprite} A new Sprite using a texture from the texture cache matching the frameId - */ -PIXI.Sprite.fromFrame = function(frameId) -{ - var texture = PIXI.TextureCache[frameId]; - - if (!texture) throw new Error('The frameId "' + frameId + '" does not exist in the texture cache' + this); - - return new PIXI.Sprite(texture); -}; - -/** - * - * Helper function that creates a sprite that will contain a texture based on an image url - * If the image is not in the texture cache it will be loaded - * - * @method fromImage - * @static - * @param imageId {String} The image url of the texture - * @return {Sprite} A new Sprite using a texture from the texture cache matching the image id - */ -PIXI.Sprite.fromImage = function(imageId, crossorigin, scaleMode) -{ - var texture = PIXI.Texture.fromImage(imageId, crossorigin, scaleMode); - - return new PIXI.Sprite(texture); -}; - /** * @author Mat Groves http://matgroves.com/ */ @@ -2321,7 +2353,7 @@ PIXI.CanvasPool = { for (var i = 0; i < pool.length; i++) { - if (pool[i].parent === null) + if (!pool[i].parent) { return i; } @@ -2347,6 +2379,8 @@ PIXI.CanvasPool = { if (pool[i].parent === parent) { pool[i].parent = null; + pool[i].canvas.width = 1; + pool[i].canvas.height = 1; } } @@ -2368,6 +2402,8 @@ PIXI.CanvasPool = { if (pool[i].canvas === canvas) { pool[i].parent = null; + pool[i].canvas.width = 1; + pool[i].canvas.height = 1; } } @@ -2387,7 +2423,7 @@ PIXI.CanvasPool = { for (var i = 0; i < pool.length; i++) { - if (pool[i].parent !== null) + if (pool[i].parent) { c++; } @@ -2411,7 +2447,7 @@ PIXI.CanvasPool = { for (var i = 0; i < pool.length; i++) { - if (pool[i].parent === null) + if (!pool[i].parent) { c++; } @@ -6815,17 +6851,13 @@ PIXI.CanvasRenderer.prototype.mapBlendModes = function () { * @author Mat Groves http://matgroves.com/ @Doormat23 */ -PIXI.BaseTextureCache = {}; - -PIXI.BaseTextureCacheIdGenerator = 0; - /** * A texture stores the information that represents an image. All textures have a base texture. * * @class BaseTexture * @uses EventTarget * @constructor - * @param source {String} the source object (image or canvas) + * @param source {String|Canvas} the source object (image or canvas) * @param scaleMode {Number} See {{#crossLink "PIXI/scaleModes:property"}}PIXI.scaleModes{{/crossLink}} for possible values */ PIXI.BaseTexture = function(source, scaleMode) @@ -6882,8 +6914,6 @@ PIXI.BaseTexture = function(source, scaleMode) */ this.source = source; - this._UID = PIXI._UID++; - /** * Controls if RGB channels should be pre-multiplied by Alpha (WebGL only) * @@ -6942,12 +6972,6 @@ PIXI.BaseTexture = function(source, scaleMode) */ this.skipRender = false; - /** - * @property imageUrl - * @type String - */ - this.imageUrl = null; - /** * @property _powerOf2 * @type Boolean @@ -6974,7 +6998,6 @@ PIXI.BaseTexture.prototype.forceLoaded = function(width, height) this.width = width; this.height = height; this.dirty(); - }; /** @@ -6984,23 +7007,9 @@ PIXI.BaseTexture.prototype.forceLoaded = function(width, height) */ PIXI.BaseTexture.prototype.destroy = function() { - if (this.imageUrl) - { - delete PIXI.BaseTextureCache[this.imageUrl]; - delete PIXI.TextureCache[this.imageUrl]; - - this.imageUrl = null; - - if (!navigator.isCocoonJS) this.source.src = ''; - } - else if (this.source) + if (this.source) { PIXI.CanvasPool.removeByCanvas(this.source); - - if (this.source._pixiId) - { - delete PIXI.BaseTextureCache[this.source._pixiId]; - } } this.source = null; @@ -7013,12 +7022,11 @@ PIXI.BaseTexture.prototype.destroy = function() * * @method updateSourceImage * @param newSrc {String} the path of the image + * @deprecated This method is deprecated. Please use Phaser.Sprite.loadTexture instead. */ PIXI.BaseTexture.prototype.updateSourceImage = function(newSrc) { - this.hasLoaded = false; - this.source.src = null; - this.source.src = newSrc; + console.warn("PIXI.BaseTexture.updateSourceImage is deprecated. Use Phaser.Sprite.loadTexture instead."); }; /** @@ -7062,49 +7070,6 @@ PIXI.BaseTexture.prototype.unloadFromGPU = function() this.dirty(); }; -/** - * Helper function that creates a base texture from the given image url. - * If the image is not in the base texture cache it will be created and loaded. - * - * @static - * @method fromImage - * @param imageUrl {String} The image url of the texture - * @param crossorigin {Boolean} - * @param scaleMode {Number} See {{#crossLink "PIXI/scaleModes:property"}}PIXI.scaleModes{{/crossLink}} for possible values - * @return {BaseTexture} - */ -PIXI.BaseTexture.fromImage = function(imageUrl, crossorigin, scaleMode) -{ - var baseTexture = PIXI.BaseTextureCache[imageUrl]; - - if(crossorigin === undefined && imageUrl.indexOf('data:') === -1) crossorigin = true; - - if(!baseTexture) - { - // new Image() breaks tex loading in some versions of Chrome. - // See https://code.google.com/p/chromium/issues/detail?id=238071 - var image = new Image(); - - if (crossorigin) - { - image.crossOrigin = ''; - } - - image.src = imageUrl; - baseTexture = new PIXI.BaseTexture(image, scaleMode); - baseTexture.imageUrl = imageUrl; - PIXI.BaseTextureCache[imageUrl] = baseTexture; - - // if there is an @2x at the end of the url we are going to assume its a highres image - if( imageUrl.indexOf(PIXI.RETINA_PREFIX + '.') !== -1) - { - baseTexture.resolution = 2; - } - } - - return baseTexture; -}; - /** * Helper function that creates a base texture from the given canvas element. * @@ -7116,11 +7081,6 @@ PIXI.BaseTexture.fromImage = function(imageUrl, crossorigin, scaleMode) */ PIXI.BaseTexture.fromCanvas = function(canvas, scaleMode) { - if (!canvas._pixiId) - { - canvas._pixiId = 'canvas_' + PIXI.TextureCacheIdGenerator++; - } - if (canvas.width === 0) { canvas.width = 1; @@ -7131,24 +7091,13 @@ PIXI.BaseTexture.fromCanvas = function(canvas, scaleMode) canvas.height = 1; } - var baseTexture = PIXI.BaseTextureCache[canvas._pixiId]; - - if (!baseTexture) - { - baseTexture = new PIXI.BaseTexture(canvas, scaleMode); - PIXI.BaseTextureCache[canvas._pixiId] = baseTexture; - } - - return baseTexture; + return new PIXI.BaseTexture(canvas, scaleMode); }; /** * @author Mat Groves http://matgroves.com/ @Doormat23 */ -PIXI.TextureCache = {}; -PIXI.FrameCache = {}; - /** * TextureSilentFail is a boolean that defaults to `false`. * If `true` then `PIXI.Texture.setFrame` will no longer throw an error if the texture dimensions are incorrect. @@ -7158,8 +7107,6 @@ PIXI.FrameCache = {}; */ PIXI.TextureSilentFail = false; -PIXI.TextureCacheIdGenerator = 0; - /** * A texture stores the information that represents an image or part of an image. It cannot be added * to the display list directly. Instead use it as the texture for a PIXI.Sprite. If no frame is provided then the whole image is used. @@ -7395,46 +7342,6 @@ PIXI.Texture.prototype._updateUvs = function() this._uvs.y3 = (frame.y + frame.height) / th; }; -/** - * Helper function that creates a Texture object from the given image url. - * If the image is not in the texture cache it will be created and loaded. - * - * @static - * @method fromImage - * @param imageUrl {String} The image url of the texture - * @param crossorigin {Boolean} Whether requests should be treated as crossorigin - * @param scaleMode {Number} See {{#crossLink "PIXI/scaleModes:property"}}PIXI.scaleModes{{/crossLink}} for possible values - * @return {Texture} - */ -PIXI.Texture.fromImage = function(imageUrl, crossorigin, scaleMode) -{ - var texture = PIXI.TextureCache[imageUrl]; - - if(!texture) - { - texture = new PIXI.Texture(PIXI.BaseTexture.fromImage(imageUrl, crossorigin, scaleMode)); - PIXI.TextureCache[imageUrl] = texture; - } - - return texture; -}; - -/** - * Helper function that returns a Texture objected based on the given frame id. - * If the frame id is not in the texture cache an error will be thrown. - * - * @static - * @method fromFrame - * @param frameId {String} The frame id of the texture - * @return {Texture} - */ -PIXI.Texture.fromFrame = function(frameId) -{ - var texture = PIXI.TextureCache[frameId]; - if(!texture) throw new Error('The frameId "' + frameId + '" does not exist in the texture cache '); - return texture; -}; - /** * Helper function that creates a new a Texture based on the given canvas element. * @@ -7451,35 +7358,6 @@ PIXI.Texture.fromCanvas = function(canvas, scaleMode) return new PIXI.Texture(baseTexture); }; -/** - * Adds a texture to the global PIXI.TextureCache. This cache is shared across the whole PIXI object. - * - * @static - * @method addTextureToCache - * @param texture {Texture} The Texture to add to the cache. - * @param id {String} The id that the texture will be stored against. - */ -PIXI.Texture.addTextureToCache = function(texture, id) -{ - PIXI.TextureCache[id] = texture; -}; - -/** - * Remove a texture from the global PIXI.TextureCache. - * - * @static - * @method removeTextureFromCache - * @param id {String} The id of the texture to be removed - * @return {Texture} The texture that was removed - */ -PIXI.Texture.removeTextureFromCache = function(id) -{ - var texture = PIXI.TextureCache[id]; - delete PIXI.TextureCache[id]; - delete PIXI.BaseTextureCache[id]; - return texture; -}; - PIXI.TextureUvs = function() { this.x0 = 0; diff --git a/build/pixi.map b/build/pixi.map index b8978b981..cd78f61b8 100644 --- a/build/pixi.map +++ b/build/pixi.map @@ -1 +1 @@ -{"version":3,"file":"pixi.min.js","sources":["pixi.js"],"names":["root","this","PIXI","game","WEBGL_RENDERER","CANVAS_RENDERER","VERSION","_UID","Float32Array","Uint16Array","Uint32Array","ArrayBuffer","Array","PI_2","Math","PI","RAD_TO_DEG","DEG_TO_RAD","RETINA_PREFIX","DisplayObject","position","Point","scale","pivot","rotation","alpha","visible","hitArea","renderable","parent","stage","worldAlpha","worldTransform","Matrix","worldPosition","worldScale","worldRotation","_sr","_cr","filterArea","_bounds","Rectangle","_currentBounds","_mask","_cacheAsBitmap","_cacheIsDirty","prototype","constructor","destroy","children","i","length","_destroyCachedSprite","Object","defineProperty","get","item","set","value","isMask","_filters","passes","filterPasses","j","push","_filterBlock","target","blendMode","blendModes","MULTIPLY","NORMAL","_generateCachedSprite","updateTransform","p","world","a","b","c","d","tx","ty","pt","wt","rotationCache","sin","cos","x","y","sqrt","atan2","transformCallback","call","transformCallbackContext","displayObjectUpdateTransform","getBounds","matrix","EmptyRectangle","getLocalBounds","identityMatrix","setStageReference","preUpdate","generateTexture","resolution","scaleMode","renderer","bounds","renderTexture","RenderTexture","width","height","_tempMatrix","render","updateCache","toGlobal","apply","toLocal","from","applyInverse","_renderCachedSprite","renderSession","_cachedSprite","gl","Sprite","_renderWebGL","_renderCanvas","max","ceil","texture","resize","tempFilters","filters","anchor","DisplayObjectContainer","ignoreChildInput","create","_width","_height","addChild","child","addChildAt","index","removeChild","splice","Error","swapChildren","child2","index1","getChildIndex","index2","indexOf","setChildIndex","currentIndex","getChildAt","removeChildAt","removeStageReference","undefined","removeChildren","beginIndex","endIndex","begin","end","range","removed","displayObjectContainerUpdateTransform","childBounds","childMaxX","childMaxY","minX","Infinity","minY","maxX","maxY","childVisible","matrixCache","spriteBatch","flush","filterManager","pushFilter","stop","maskManager","pushMask","mask","start","popMask","popFilter","Texture","emptyTexture","tint","cachedTint","tintedTexture","shader","exists","baseTexture","hasLoaded","onTextureUpdate","frame","setTexture","destroyBase","skipRender","valid","w0","w1","h0","h1","temp","x1","y1","x2","y2","x3","y3","x4","y4","crop","currentBlendMode","context","globalCompositeOperation","blendModesCanvas","globalAlpha","smoothProperty","scaleModes","LINEAR","dx","trim","dy","shakeX","shakeY","roundPixels","setTransform","cw","ch","requiresReTint","CanvasTinter","getTintedTexture","drawImage","cx","cy","source","fromFrame","frameId","TextureCache","fromImage","imageId","crossorigin","SpriteBatch","textureThing","ready","initWebGL","fastSpriteBatch","WebGLFastSpriteBatch","setContext","shaderManager","setShader","fastShader","transform","isRotated","childTransform","hex2rgb","hex","rgb2hex","rgb","canUseNewCanvasBlendModes","document","pngHead","pngEnd","magenta","Image","src","yellow","canvas","CanvasPool","getContext","getImageData","data","remove","getNextPowerOfTwo","number","result","isPowerOfTwo","idx","getFirst","container","createElement","pool","removeByCanvas","getTotal","getFree","initDefaultShaders","CompileVertexShader","shaderSrc","_CompileShader","VERTEX_SHADER","CompileFragmentShader","FRAGMENT_SHADER","shaderType","isArray","join","createShader","shaderSource","compileShader","getShaderParameter","COMPILE_STATUS","window","console","log","getShaderInfoLog","compileProgram","vertexSrc","fragmentSrc","fragmentShader","vertexShader","shaderProgram","createProgram","attachShader","linkProgram","getProgramParameter","LINK_STATUS","getProgramInfoLog","PixiShader","program","textureCount","firstRun","dirty","attributes","init","defaultVertexSrc","useProgram","uSampler","getUniformLocation","projectionVector","offsetVector","dimensions","aVertexPosition","getAttribLocation","aTextureCoord","colorAttribute","key","uniforms","uniformLocation","initUniforms","uniform","type","_init","initSampler2D","glMatrix","glValueLength","glFunc","uniformMatrix2fv","uniformMatrix3fv","uniformMatrix4fv","activeTexture","bindTexture","TEXTURE_2D","_glTextures","id","textureData","magFilter","minFilter","wrapS","CLAMP_TO_EDGE","wrapT","format","LUMINANCE","RGBA","repeat","REPEAT","pixelStorei","UNPACK_FLIP_Y_WEBGL","flipY","border","texImage2D","UNSIGNED_BYTE","texParameteri","TEXTURE_MAG_FILTER","TEXTURE_MIN_FILTER","TEXTURE_WRAP_S","TEXTURE_WRAP_T","uniform1i","syncUniforms","transpose","z","w","_dirty","instances","updateTexture","deleteProgram","PixiFastShader","uMatrix","aPositionCoord","aScale","aRotation","StripShader","translationMatrix","attribute","PrimitiveShader","tintColor","ComplexPrimitiveShader","color","glContexts","WebGLRenderer","defaultRenderer","transparent","autoResize","preserveDrawingBuffer","clearBeforeRender","view","_contextOptions","antialias","premultipliedAlpha","stencil","projection","offset","WebGLShaderManager","WebGLSpriteBatch","WebGLMaskManager","WebGLFilterManager","stencilManager","WebGLStencilManager","blendModeManager","WebGLBlendModeManager","drawCount","initContext","mapBlendModes","glContextId","disable","DEPTH_TEST","CULL_FACE","enable","BLEND","contextLost","viewport","bindFramebuffer","FRAMEBUFFER","clearColor","_bgColor","r","g","clear","COLOR_BUFFER_BIT","camera","_shake","renderDisplayObject","displayObject","buffer","setBlendMode","style","createTexture","UNPACK_PREMULTIPLY_ALPHA_WEBGL","NEAREST","mipmap","LINEAR_MIPMAP_LINEAR","NEAREST_MIPMAP_NEAREST","generateMipmap","_powerOf2","blendModesWebGL","modes","ONE","ONE_MINUS_SRC_ALPHA","ADD","SRC_ALPHA","DST_ALPHA","DST_COLOR","SCREEN","OVERLAY","DARKEN","LIGHTEN","COLOR_DODGE","COLOR_BURN","HARD_LIGHT","SOFT_LIGHT","DIFFERENCE","EXCLUSION","HUE","SATURATION","COLOR","LUMINOSITY","blendModeWebGL","blendFunc","maskData","WebGLGraphics","updateGraphics","_webGL","pushStencil","popStencil","stencilStack","reverse","count","graphics","webGLData","bindGraphics","STENCIL_TEST","STENCIL_BUFFER_BIT","level","colorMask","stencilFunc","ALWAYS","stencilOp","KEEP","INVERT","mode","drawElements","TRIANGLE_FAN","indices","UNSIGNED_SHORT","EQUAL","DECR","INCR","TRIANGLE_STRIP","_currentGraphics","complexPrimitiveShader","uniform1f","toArray","uniform2f","uniform3fv","bindBuffer","ARRAY_BUFFER","vertexAttribPointer","FLOAT","ELEMENT_ARRAY_BUFFER","indexBuffer","primitiveShader","pop","maxAttibs","attribState","tempAttribState","stack","defaultShader","stripShader","setAttribs","attribs","attribId","enableVertexAttribArray","disableVertexAttribArray","_currentId","currentShader","vertSize","size","numVerts","numIndices","vertices","positions","colors","lastIndexCount","drawing","currentBatchSize","currentBaseTexture","textures","shaders","sprites","AbstractFilter","vertexBuffer","createBuffer","bufferData","STATIC_DRAW","DYNAMIC_DRAW","sprite","uvs","_uvs","aX","aY","x0","y0","renderTilingSprite","tilingTexture","TextureUvs","h","tilePosition","tileScaleOffset","offsetX","offsetY","scaleX","tileScale","scaleY","TEXTURE0","stride","bufferSubData","subarray","nextTexture","nextBlendMode","nextShader","batchSize","blendSwap","shaderSwap","skip","renderBatch","startIndex","TRIANGLES","deleteBuffer","maxSize","renderSprite","filterStack","texturePool","initShaderBuffers","filterBlock","_filterArea","_previous_stencil_mgr","filter","FilterTexture","padding","frameBuffer","_glFilterTexture","vertexArray","uvBuffer","uvArray","inputTexture","outputTexture","filterPass","applyFilterPass","sizeX","sizeY","currentFilter","colorBuffer","colorArray","createFramebuffer","DEFAULT","framebufferTexture2D","COLOR_ATTACHMENT0","renderBuffer","createRenderbuffer","bindRenderbuffer","RENDERBUFFER","framebufferRenderbuffer","DEPTH_STENCIL_ATTACHMENT","renderbufferStorage","DEPTH_STENCIL","deleteFramebuffer","deleteTexture","CanvasBuffer","clearRect","CanvasMaskManager","save","cacheAlpha","CanvasGraphics","renderGraphicsMask","clip","restore","tintMethod","tintWithMultiply","fillStyle","toString","substr","fillRect","tintWithPerPixel","rgbValues","pixelData","pixels","canHandleAlpha","putImageData","checkInverseAlpha","s1","s2","canUseMultiply","CanvasRenderer","refresh","Phaser","Canvas","getSmoothingPrefix","navigator","isCocoonJS","screencanvas","rgba","removeView","useNew","BaseTextureCache","BaseTextureCacheIdGenerator","BaseTexture","complete","naturalWidth","naturalHeight","imageUrl","forceLoaded","_pixiId","unloadFromGPU","updateSourceImage","newSrc","glTexture","image","crossOrigin","fromCanvas","TextureCacheIdGenerator","FrameCache","TextureSilentFail","noFrame","isTiling","requiresUpdate","setFrame","onBaseTextureLoaded","_updateUvs","tw","th","addTextureToCache","removeTextureFromCache","textureBuffer","renderWebGL","renderCanvas","tempMatrix","updateBase","identity","translate","append","realResolution","getImage","getBase64","getCanvas","toDataURL","webGLPixels","Uint8Array","readPixels","tempCanvas","canvasData","Strip","canvasPadding","drawMode","DrawModes","_vertexBuffer","_initWebGL","_renderStrip","_indexBuffer","_uvBuffer","_colorBuffer","_renderCanvasTriangleStrip","_renderCanvasTriangles","_renderCanvasDrawTriangle","index0","textureSource","textureWidth","textureHeight","u0","u1","u2","v0","v1","v2","paddingX","paddingY","centerX","centerY","normX","normY","dist","beginPath","moveTo","lineTo","closePath","delta","deltaA","deltaB","deltaC","deltaD","deltaE","deltaF","renderStripFlat","strip","fill","updateFrame","n","rawX","rawY","Rope","points","lastPoint","point","amount","total","nextPoint","perp","ratio","perpLength","num","TilingSprite","textureDebug","canvasBuffer","tilePattern","refreshTexture","frameWidth","frameHeight","generateTilingTexture","needsUpdate","createPattern","sessionBlendMode","forcePowerOfTwo","targetWidth","_frame","sourceSizeW","targetHeight","sourceSizeH","trimmed","spriteSourceSizeX","spriteSourceSizeY","strokeStyle","strokeRect","exports","module","define","amd"],"mappings":"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"} \ No newline at end of file +{"version":3,"sources":["pixi.js"],"names":["root","this","PIXI","game","WEBGL_RENDERER","CANVAS_RENDERER","VERSION","_UID","Float32Array","Uint16Array","Uint32Array","ArrayBuffer","Array","PI_2","Math","PI","RAD_TO_DEG","DEG_TO_RAD","RETINA_PREFIX","DisplayObject","position","Point","scale","pivot","rotation","alpha","visible","hitArea","renderable","parent","stage","worldAlpha","worldTransform","Matrix","worldPosition","worldScale","worldRotation","filterArea","_sr","_cr","_bounds","Rectangle","_currentBounds","_mask","_cacheAsBitmap","_cacheIsDirty","prototype","constructor","destroy","children","i","length","_destroyCachedSprite","updateTransform","p","world","a","b","c","d","tx","ty","pt","wt","rotationCache","sin","cos","x","y","set","sqrt","atan2","transformCallback","call","transformCallbackContext","setStageReference","preUpdate","generateTexture","resolution","scaleMode","renderer","bounds","getLocalBounds","renderTexture","RenderTexture","width","height","_tempMatrix","render","updateCache","_generateCachedSprite","toGlobal","apply","toLocal","from","applyInverse","_renderCachedSprite","renderSession","_cachedSprite","gl","Sprite","_renderWebGL","_renderCanvas","max","ceil","texture","resize","tempFilters","_filters","filters","anchor","displayObjectUpdateTransform","Object","defineProperties","get","value","worldVisible","item","mask","isMask","isArray","passes","filterPasses","j","push","_filterBlock","target","blendMode","blendModes","MULTIPLY","NORMAL","cacheAsBitmap","DisplayObjectContainer","ignoreChildInput","create","defineProperty","_width","_height","addChild","child","addChildAt","index","removeChild","splice","Error","swapChildren","child2","index1","getChildIndex","index2","indexOf","setChildIndex","currentIndex","getChildAt","removeChildAt","removeStageReference","undefined","removeChildren","beginIndex","endIndex","begin","end","range","removed","displayObjectContainerUpdateTransform","getBounds","EmptyRectangle","childBounds","childMaxX","childMaxY","minX","Infinity","minY","maxX","maxY","childVisible","matrixCache","identityMatrix","spriteBatch","flush","filterManager","pushFilter","stop","maskManager","pushMask","start","popMask","popFilter","Texture","emptyTexture","tint","cachedTint","tintedTexture","shader","exists","baseTexture","hasLoaded","onTextureUpdate","frame","setTexture","destroyBase","skipRender","valid","matrix","w0","w1","h0","h1","temp","x1","y1","x2","y2","x3","y3","x4","y4","crop","currentBlendMode","context","globalCompositeOperation","blendModesCanvas","globalAlpha","smoothProperty","scaleModes","LINEAR","dx","trim","dy","shakeX","shakeY","roundPixels","setTransform","cw","ch","requiresReTint","CanvasTinter","getTintedTexture","drawImage","cx","cy","source","SpriteBatch","textureThing","ready","initWebGL","fastSpriteBatch","WebGLFastSpriteBatch","setContext","shaderManager","setShader","fastShader","transform","isRotated","childTransform","hex2rgb","hex","rgb2hex","rgb","canUseNewCanvasBlendModes","document","pngHead","pngEnd","magenta","Image","src","yellow","canvas","CanvasPool","getContext","getImageData","data","remove","getNextPowerOfTwo","number","result","isPowerOfTwo","idx","getFirst","container","createElement","pool","removeByCanvas","getTotal","getFree","initDefaultShaders","CompileVertexShader","shaderSrc","_CompileShader","VERTEX_SHADER","CompileFragmentShader","FRAGMENT_SHADER","shaderType","join","createShader","shaderSource","compileShader","getShaderParameter","COMPILE_STATUS","window","console","log","getShaderInfoLog","compileProgram","vertexSrc","fragmentSrc","fragmentShader","vertexShader","shaderProgram","createProgram","attachShader","linkProgram","getProgramParameter","LINK_STATUS","getProgramInfoLog","PixiShader","program","textureCount","firstRun","dirty","attributes","init","defaultVertexSrc","useProgram","uSampler","getUniformLocation","projectionVector","offsetVector","dimensions","aVertexPosition","getAttribLocation","aTextureCoord","colorAttribute","key","uniforms","uniformLocation","initUniforms","uniform","type","_init","initSampler2D","glMatrix","glValueLength","glFunc","uniformMatrix2fv","uniformMatrix3fv","uniformMatrix4fv","activeTexture","bindTexture","TEXTURE_2D","_glTextures","id","textureData","magFilter","minFilter","wrapS","CLAMP_TO_EDGE","wrapT","format","LUMINANCE","RGBA","repeat","REPEAT","pixelStorei","UNPACK_FLIP_Y_WEBGL","flipY","border","texImage2D","UNSIGNED_BYTE","texParameteri","TEXTURE_MAG_FILTER","TEXTURE_MIN_FILTER","TEXTURE_WRAP_S","TEXTURE_WRAP_T","uniform1i","syncUniforms","transpose","z","w","_dirty","instances","updateTexture","deleteProgram","PixiFastShader","uMatrix","aPositionCoord","aScale","aRotation","StripShader","translationMatrix","attribute","PrimitiveShader","tintColor","ComplexPrimitiveShader","color","glContexts","WebGLRenderer","defaultRenderer","transparent","autoResize","preserveDrawingBuffer","clearBeforeRender","view","_contextOptions","antialias","premultipliedAlpha","stencil","projection","offset","WebGLShaderManager","WebGLSpriteBatch","WebGLMaskManager","WebGLFilterManager","stencilManager","WebGLStencilManager","blendModeManager","WebGLBlendModeManager","drawCount","initContext","mapBlendModes","glContextId","disable","DEPTH_TEST","CULL_FACE","enable","BLEND","contextLost","viewport","bindFramebuffer","FRAMEBUFFER","clearColor","_bgColor","r","g","clear","COLOR_BUFFER_BIT","camera","_shake","renderDisplayObject","displayObject","buffer","setBlendMode","style","createTexture","UNPACK_PREMULTIPLY_ALPHA_WEBGL","NEAREST","mipmap","LINEAR_MIPMAP_LINEAR","NEAREST_MIPMAP_NEAREST","generateMipmap","_powerOf2","blendModesWebGL","modes","ONE","ONE_MINUS_SRC_ALPHA","ADD","SRC_ALPHA","DST_ALPHA","DST_COLOR","SCREEN","OVERLAY","DARKEN","LIGHTEN","COLOR_DODGE","COLOR_BURN","HARD_LIGHT","SOFT_LIGHT","DIFFERENCE","EXCLUSION","HUE","SATURATION","COLOR","LUMINOSITY","blendModeWebGL","blendFunc","maskData","WebGLGraphics","updateGraphics","_webGL","pushStencil","popStencil","stencilStack","reverse","count","graphics","webGLData","bindGraphics","STENCIL_TEST","STENCIL_BUFFER_BIT","level","colorMask","stencilFunc","ALWAYS","stencilOp","KEEP","INVERT","mode","drawElements","TRIANGLE_FAN","indices","UNSIGNED_SHORT","EQUAL","DECR","INCR","TRIANGLE_STRIP","_currentGraphics","complexPrimitiveShader","uniform1f","toArray","uniform2f","uniform3fv","bindBuffer","ARRAY_BUFFER","vertexAttribPointer","FLOAT","ELEMENT_ARRAY_BUFFER","indexBuffer","primitiveShader","pop","maxAttibs","attribState","tempAttribState","stack","defaultShader","stripShader","setAttribs","attribs","attribId","enableVertexAttribArray","disableVertexAttribArray","_currentId","currentShader","vertSize","size","numVerts","numIndices","vertices","positions","colors","lastIndexCount","drawing","currentBatchSize","currentBaseTexture","textures","shaders","sprites","AbstractFilter","vertexBuffer","createBuffer","bufferData","STATIC_DRAW","DYNAMIC_DRAW","sprite","uvs","_uvs","aX","aY","x0","y0","renderTilingSprite","tilingTexture","TextureUvs","h","tilePosition","tileScaleOffset","offsetX","offsetY","scaleX","tileScale","scaleY","TEXTURE0","stride","bufferSubData","subarray","nextTexture","nextBlendMode","nextShader","batchSize","blendSwap","shaderSwap","skip","renderBatch","startIndex","TRIANGLES","deleteBuffer","maxSize","renderSprite","filterStack","texturePool","initShaderBuffers","filterBlock","_filterArea","_previous_stencil_mgr","filter","FilterTexture","padding","frameBuffer","_glFilterTexture","vertexArray","uvBuffer","uvArray","inputTexture","outputTexture","filterPass","applyFilterPass","sizeX","sizeY","currentFilter","colorBuffer","colorArray","createFramebuffer","DEFAULT","framebufferTexture2D","COLOR_ATTACHMENT0","renderBuffer","createRenderbuffer","bindRenderbuffer","RENDERBUFFER","framebufferRenderbuffer","DEPTH_STENCIL_ATTACHMENT","renderbufferStorage","DEPTH_STENCIL","deleteFramebuffer","deleteTexture","CanvasBuffer","clearRect","CanvasMaskManager","save","cacheAlpha","CanvasGraphics","renderGraphicsMask","clip","restore","tintMethod","tintWithMultiply","fillStyle","toString","substr","fillRect","tintWithPerPixel","rgbValues","pixelData","pixels","canHandleAlpha","putImageData","checkInverseAlpha","s1","s2","canUseMultiply","CanvasRenderer","refresh","Phaser","Canvas","getSmoothingPrefix","navigator","isCocoonJS","screencanvas","rgba","removeView","useNew","BaseTexture","complete","naturalWidth","naturalHeight","forceLoaded","unloadFromGPU","updateSourceImage","newSrc","warn","glTexture","fromCanvas","TextureSilentFail","noFrame","isTiling","requiresUpdate","setFrame","onBaseTextureLoaded","_updateUvs","tw","th","textureBuffer","renderWebGL","renderCanvas","tempMatrix","updateBase","identity","translate","append","realResolution","getImage","image","getBase64","getCanvas","toDataURL","webGLPixels","Uint8Array","readPixels","tempCanvas","canvasData","Strip","canvasPadding","drawMode","DrawModes","_vertexBuffer","_initWebGL","_renderStrip","_indexBuffer","_uvBuffer","_colorBuffer","_renderCanvasTriangleStrip","_renderCanvasTriangles","_renderCanvasDrawTriangle","index0","textureSource","textureWidth","textureHeight","u0","u1","u2","v0","v1","v2","paddingX","paddingY","centerX","centerY","normX","normY","dist","beginPath","moveTo","lineTo","closePath","delta","deltaA","deltaB","deltaC","deltaD","deltaE","deltaF","renderStripFlat","strip","fill","updateFrame","n","rawX","rawY","Rope","points","lastPoint","point","amount","total","nextPoint","perp","ratio","perpLength","num","TilingSprite","textureDebug","canvasBuffer","tilePattern","refreshTexture","frameWidth","frameHeight","generateTilingTexture","needsUpdate","createPattern","sessionBlendMode","forcePowerOfTwo","targetWidth","_frame","sourceSizeW","targetHeight","sourceSizeH","trimmed","spriteSourceSizeX","spriteSourceSizeY","strokeStyle","strokeRect","exports","module","define","amd"],"mappings":"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","file":"pixi.min.js"} \ No newline at end of file diff --git a/build/pixi.min.js b/build/pixi.min.js index b0f1edf91..52b75c763 100644 --- a/build/pixi.min.js +++ b/build/pixi.min.js @@ -1,6 +1,6 @@ -/* Phaser v2.5.0 PIXI Build - http://phaser.io - @photonstorm - (c) 2016 Photon Storm Ltd. */ +/* Phaser v2.5.1 PIXI Build - http://phaser.io - @photonstorm - (c) 2016 Photon Storm Ltd. */ -(function(){var a=this,b=b||{};return b.game=null,b.WEBGL_RENDERER=0,b.CANVAS_RENDERER=1,b.VERSION="v2.2.9",b._UID=0,"undefined"!=typeof Float32Array?(b.Float32Array=Float32Array,b.Uint16Array=Uint16Array,b.Uint32Array=Uint32Array,b.ArrayBuffer=ArrayBuffer):(b.Float32Array=Array,b.Uint16Array=Array),b.PI_2=2*Math.PI,b.RAD_TO_DEG=180/Math.PI,b.DEG_TO_RAD=Math.PI/180,b.RETINA_PREFIX="@2x",b.DisplayObject=function(){this.position=new b.Point(0,0),this.scale=new b.Point(1,1),this.pivot=new b.Point(0,0),this.rotation=0,this.alpha=1,this.visible=!0,this.hitArea=null,this.renderable=!1,this.parent=null,this.stage=null,this.worldAlpha=1,this.worldTransform=new b.Matrix,this.worldPosition=new b.Point(0,0),this.worldScale=new b.Point(1,1),this.worldRotation=0,this._sr=0,this._cr=1,this.filterArea=null,this._bounds=new b.Rectangle(0,0,1,1),this._currentBounds=null,this._mask=null,this._cacheAsBitmap=!1,this._cacheIsDirty=!1},b.DisplayObject.prototype.constructor=b.DisplayObject,b.DisplayObject.prototype.destroy=function(){if(this.children){for(var a=this.children.length;a--;)this.children[a].destroy();this.children=[]}this.hitArea=null,this.parent=null,this.stage=null,this.worldTransform=null,this.filterArea=null,this._bounds=null,this._currentBounds=null,this._mask=null,this.renderable=!1,this._destroyCachedSprite()},Object.defineProperty(b.DisplayObject.prototype,"worldVisible",{get:function(){var a=this;do{if(!a.visible)return!1;a=a.parent}while(a);return!0}}),Object.defineProperty(b.DisplayObject.prototype,"mask",{get:function(){return this._mask},set:function(a){this._mask&&(this._mask.isMask=!1),this._mask=a,this._mask&&(this._mask.isMask=!0)}}),Object.defineProperty(b.DisplayObject.prototype,"filters",{get:function(){return this._filters},set:function(a){if(a){for(var c=[],d=0;d=0&&b<=this.children.length)return a.parent&&a.parent.removeChild(a),a.parent=this,this.children.splice(b,0,a),this.stage&&a.setStageReference(this.stage),a;throw new Error(a+"addChildAt: The index "+b+" supplied is out of bounds "+this.children.length)},b.DisplayObjectContainer.prototype.swapChildren=function(a,b){if(a!==b){var c=this.getChildIndex(a),d=this.getChildIndex(b);if(0>c||0>d)throw new Error("swapChildren: Both the supplied DisplayObjects must be a child of the caller.");this.children[c]=b,this.children[d]=a}},b.DisplayObjectContainer.prototype.getChildIndex=function(a){var b=this.children.indexOf(a);if(-1===b)throw new Error("The supplied DisplayObject must be a child of the caller");return b},b.DisplayObjectContainer.prototype.setChildIndex=function(a,b){if(0>b||b>=this.children.length)throw new Error("The supplied index is out of bounds");var c=this.getChildIndex(a);this.children.splice(c,1),this.children.splice(b,0,a)},b.DisplayObjectContainer.prototype.getChildAt=function(a){if(0>a||a>=this.children.length)throw new Error("getChildAt: Supplied index "+a+" does not exist in the child list, or the supplied DisplayObject must be a child of the caller");return this.children[a]},b.DisplayObjectContainer.prototype.removeChild=function(a){var b=this.children.indexOf(a);if(-1!==b)return this.removeChildAt(b)},b.DisplayObjectContainer.prototype.removeChildAt=function(a){var b=this.getChildAt(a);return this.stage&&b.removeStageReference(),b.parent=void 0,this.children.splice(a,1),b},b.DisplayObjectContainer.prototype.removeChildren=function(a,b){var c=a||0,d="number"==typeof b?b:this.children.length,e=d-c;if(e>0&&d>=e){for(var f=this.children.splice(c,e),g=0;gc?g:c,h=h>d?h:d)}if(!i)return b.EmptyRectangle;var l=this._bounds;return l.x=e,l.y=f,l.width=g-e,l.height=h-f,l},b.DisplayObjectContainer.prototype.getLocalBounds=function(){var a=this.worldTransform;this.worldTransform=b.identityMatrix;for(var c=0;ci){i*=-1;var s=d;d=-e,e=-s}if(0>l){l*=-1;var s=f;f=-g,g=-s}q=i*e+m,o=i*d+m,r=l*g+n,p=l*f+n}else{var t=i*e+k*g+m,u=l*g+j*e+n,v=i*d+k*g+m,w=l*g+j*d+n,x=i*d+k*f+m,y=l*f+j*d+n,z=i*e+k*f+m,A=l*f+j*e+n;q=q>t?t:q,q=q>v?v:q,q=q>x?x:q,q=q>z?z:q,r=r>u?u:r,r=r>w?w:r,r=r>y?y:r,r=r>A?A:r,o=t>o?t:o,o=v>o?v:o,o=x>o?x:o,o=z>o?z:o,p=u>p?u:p,p=w>p?w:p,p=y>p?y:p,p=A>p?A:p}var B=this._bounds;return B.x=q,B.width=o-q,B.y=r,B.height=p-r,this._currentBounds=B,B},b.Sprite.prototype._renderWebGL=function(a,b){if(this.visible&&!(this.alpha<=0)&&this.renderable){var c=this.worldTransform;if(b&&(c=b),this._mask||this._filters){var d=a.spriteBatch;this._filters&&(d.flush(),a.filterManager.pushFilter(this._filterBlock)),this._mask&&(d.stop(),a.maskManager.pushMask(this.mask,a),d.start()),d.render(this);for(var e=0;e>16&255)/255,(a>>8&255)/255,(255&a)/255]},b.rgb2hex=function(a){return(255*a[0]<<16)+(255*a[1]<<8)+255*a[2]},b.canUseNewCanvasBlendModes=function(){if(void 0===document)return!1;var a="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAQAAAABAQMAAADD8p2OAAAAA1BMVEX/",c="AAAACklEQVQI12NgAAAAAgAB4iG8MwAAAABJRU5ErkJggg==",d=new Image;d.src=a+"AP804Oa6"+c;var e=new Image;e.src=a+"/wCKxvRF"+c;var f=b.CanvasPool.create(this,6,1),g=f.getContext("2d");if(g.globalCompositeOperation="multiply",g.drawImage(d,0,0),g.drawImage(e,2,0),!g.getImageData(2,0,1,1))return!1;var h=g.getImageData(2,0,1,1).data;return b.CanvasPool.remove(this),255===h[0]&&0===h[1]&&0===h[2]},b.getNextPowerOfTwo=function(a){if(a>0&&0===(a&a-1))return a;for(var b=1;a>b;)b<<=1;return b},b.isPowerOfTwo=function(a,b){return a>0&&0===(a&a-1)&&b>0&&0===(b&b-1)},b.CanvasPool={create:function(a,c,d){var e,f=b.CanvasPool.getFirst();if(-1===f){var g={parent:a,canvas:document.createElement("canvas")};b.CanvasPool.pool.push(g),e=g.canvas}else b.CanvasPool.pool[f].parent=a,e=b.CanvasPool.pool[f].canvas;return void 0!==c&&(e.width=c,e.height=d),e},getFirst:function(){for(var a=b.CanvasPool.pool,c=0;cd;d+=6,e+=4)this.indices[d+0]=e+0,this.indices[d+1]=e+1,this.indices[d+2]=e+2,this.indices[d+3]=e+0,this.indices[d+4]=e+2,this.indices[d+5]=e+3;this.drawing=!1,this.currentBatchSize=0,this.currentBaseTexture=null,this.dirty=!0,this.textures=[],this.blendModes=[],this.shaders=[],this.sprites=[],this.defaultShader=new b.AbstractFilter(["precision lowp float;","varying vec2 vTextureCoord;","varying vec4 vColor;","uniform sampler2D uSampler;","void main(void) {"," gl_FragColor = texture2D(uSampler, vTextureCoord) * vColor ;","}"])},b.WebGLSpriteBatch.prototype.setContext=function(a){this.gl=a,this.vertexBuffer=a.createBuffer(),this.indexBuffer=a.createBuffer(),a.bindBuffer(a.ELEMENT_ARRAY_BUFFER,this.indexBuffer),a.bufferData(a.ELEMENT_ARRAY_BUFFER,this.indices,a.STATIC_DRAW),a.bindBuffer(a.ARRAY_BUFFER,this.vertexBuffer),a.bufferData(a.ARRAY_BUFFER,this.vertices,a.DYNAMIC_DRAW),this.currentBlendMode=99999;var c=new b.PixiShader(a);c.fragmentSrc=this.defaultShader.fragmentSrc,c.uniforms={},c.init(),this.defaultShader.shaders[a.id]=c},b.WebGLSpriteBatch.prototype.begin=function(a){this.renderSession=a,this.shader=this.renderSession.shaderManager.defaultShader,this.start()},b.WebGLSpriteBatch.prototype.end=function(){this.flush()},b.WebGLSpriteBatch.prototype.render=function(a,b){var c=a.texture,d=a.worldTransform;b&&(d=b),this.currentBatchSize>=this.size&&(this.flush(),this.currentBaseTexture=c.baseTexture);var e=c._uvs;if(e){var f,g,h,i,j=a.anchor.x,k=a.anchor.y;if(c.trim){var l=c.trim;g=l.x-j*l.width,f=g+c.crop.width,i=l.y-k*l.height,h=i+c.crop.height}else f=c.frame.width*(1-j),g=c.frame.width*-j,h=c.frame.height*(1-k),i=c.frame.height*-k;var m=4*this.currentBatchSize*this.vertSize,n=c.baseTexture.resolution,o=d.a/n,p=d.b/n,q=d.c/n,r=d.d/n,s=d.tx,t=d.ty,u=this.colors,v=this.positions;this.renderSession.roundPixels?(v[m]=o*g+q*i+s|0,v[m+1]=r*i+p*g+t|0,v[m+5]=o*f+q*i+s|0,v[m+6]=r*i+p*f+t|0,v[m+10]=o*f+q*h+s|0,v[m+11]=r*h+p*f+t|0,v[m+15]=o*g+q*h+s|0,v[m+16]=r*h+p*g+t|0):(v[m]=o*g+q*i+s,v[m+1]=r*i+p*g+t,v[m+5]=o*f+q*i+s,v[m+6]=r*i+p*f+t,v[m+10]=o*f+q*h+s,v[m+11]=r*h+p*f+t,v[m+15]=o*g+q*h+s,v[m+16]=r*h+p*g+t),v[m+2]=e.x0,v[m+3]=e.y0,v[m+7]=e.x1,v[m+8]=e.y1,v[m+12]=e.x2,v[m+13]=e.y2,v[m+17]=e.x3,v[m+18]=e.y3;var w=a.tint;u[m+4]=u[m+9]=u[m+14]=u[m+19]=(w>>16)+(65280&w)+((255&w)<<16)+(255*a.worldAlpha<<24),this.sprites[this.currentBatchSize++]=a}},b.WebGLSpriteBatch.prototype.renderTilingSprite=function(a){var c=a.tilingTexture;this.currentBatchSize>=this.size&&(this.flush(),this.currentBaseTexture=c.baseTexture),a._uvs||(a._uvs=new b.TextureUvs);var d=a._uvs,e=c.baseTexture.width,f=c.baseTexture.height;a.tilePosition.x%=e*a.tileScaleOffset.x,a.tilePosition.y%=f*a.tileScaleOffset.y;var g=a.tilePosition.x/(e*a.tileScaleOffset.x),h=a.tilePosition.y/(f*a.tileScaleOffset.y),i=a.width/e/(a.tileScale.x*a.tileScaleOffset.x),j=a.height/f/(a.tileScale.y*a.tileScaleOffset.y);d.x0=0-g,d.y0=0-h,d.x1=1*i-g,d.y1=0-h,d.x2=1*i-g,d.y2=1*j-h,d.x3=0-g,d.y3=1*j-h;var k=a.tint,l=(k>>16)+(65280&k)+((255&k)<<16)+(255*a.worldAlpha<<24),m=this.positions,n=this.colors,o=a.width,p=a.height,q=a.anchor.x,r=a.anchor.y,s=o*(1-q),t=o*-q,u=p*(1-r),v=p*-r,w=4*this.currentBatchSize*this.vertSize,x=c.baseTexture.resolution,y=a.worldTransform,z=y.a/x,A=y.b/x,B=y.c/x,C=y.d/x,D=y.tx,E=y.ty;m[w++]=z*t+B*v+D,m[w++]=C*v+A*t+E,m[w++]=d.x0,m[w++]=d.y0,n[w++]=l,m[w++]=z*s+B*v+D,m[w++]=C*v+A*s+E,m[w++]=d.x1,m[w++]=d.y1,n[w++]=l,m[w++]=z*s+B*u+D,m[w++]=C*u+A*s+E,m[w++]=d.x2,m[w++]=d.y2,n[w++]=l,m[w++]=z*t+B*u+D,m[w++]=C*u+A*t+E,m[w++]=d.x3,m[w++]=d.y3,n[w++]=l,this.sprites[this.currentBatchSize++]=a},b.WebGLSpriteBatch.prototype.flush=function(){if(0!==this.currentBatchSize){var a,c=this.gl;if(this.dirty){this.dirty=!1,c.activeTexture(c.TEXTURE0),c.bindBuffer(c.ARRAY_BUFFER,this.vertexBuffer),c.bindBuffer(c.ELEMENT_ARRAY_BUFFER,this.indexBuffer),a=this.defaultShader.shaders[c.id];var d=4*this.vertSize;c.vertexAttribPointer(a.aVertexPosition,2,c.FLOAT,!1,d,0),c.vertexAttribPointer(a.aTextureCoord,2,c.FLOAT,!1,d,8),c.vertexAttribPointer(a.colorAttribute,4,c.UNSIGNED_BYTE,!0,d,16)}if(this.currentBatchSize>.5*this.size)c.bufferSubData(c.ARRAY_BUFFER,0,this.vertices);else{var e=this.positions.subarray(0,4*this.currentBatchSize*this.vertSize);c.bufferSubData(c.ARRAY_BUFFER,0,e)}for(var f,g,h,i,j=0,k=0,l=null,m=this.renderSession.blendModeManager.currentBlendMode,n=null,o=!1,p=!1,q=0,r=this.currentBatchSize;r>q;q++){i=this.sprites[q],f=i.tilingTexture?i.tilingTexture.baseTexture:i.texture.baseTexture,g=i.blendMode,h=i.shader||this.defaultShader,o=m!==g,p=n!==h;var s=f.skipRender;if(s&&i.children.length>0&&(s=!1),(l!==f&&!s||o||p)&&(this.renderBatch(l,j,k),k=q,j=0,l=f,o&&(m=g,this.renderSession.blendModeManager.setBlendMode(m)),p)){n=h,a=n.shaders[c.id],a||(a=new b.PixiShader(c),a.fragmentSrc=n.fragmentSrc,a.uniforms=n.uniforms,a.init(),n.shaders[c.id]=a),this.renderSession.shaderManager.setShader(a),a.dirty&&a.syncUniforms();var t=this.renderSession.projection;c.uniform2f(a.projectionVector,t.x,t.y);var u=this.renderSession.offset;c.uniform2f(a.offsetVector,u.x,u.y)}j++}this.renderBatch(l,j,k),this.currentBatchSize=0}},b.WebGLSpriteBatch.prototype.renderBatch=function(a,b,c){if(0!==b){var d=this.gl;if(a._dirty[d.id]){if(!this.renderSession.renderer.updateTexture(a))return}else d.bindTexture(d.TEXTURE_2D,a._glTextures[d.id]);d.drawElements(d.TRIANGLES,6*b,d.UNSIGNED_SHORT,6*c*2),this.renderSession.drawCount++}},b.WebGLSpriteBatch.prototype.stop=function(){this.flush(),this.dirty=!0},b.WebGLSpriteBatch.prototype.start=function(){this.dirty=!0},b.WebGLSpriteBatch.prototype.destroy=function(){this.vertices=null,this.indices=null,this.gl.deleteBuffer(this.vertexBuffer),this.gl.deleteBuffer(this.indexBuffer),this.currentBaseTexture=null,this.gl=null},b.WebGLFastSpriteBatch=function(a){this.vertSize=10,this.maxSize=6e3,this.size=this.maxSize;var c=4*this.size*this.vertSize,d=6*this.maxSize;this.vertices=new b.Float32Array(c),this.indices=new b.Uint16Array(d),this.vertexBuffer=null,this.indexBuffer=null,this.lastIndexCount=0;for(var e=0,f=0;d>e;e+=6,f+=4)this.indices[e+0]=f+0,this.indices[e+1]=f+1,this.indices[e+2]=f+2,this.indices[e+3]=f+0,this.indices[e+4]=f+2,this.indices[e+5]=f+3;this.drawing=!1,this.currentBatchSize=0,this.currentBaseTexture=null,this.currentBlendMode=0,this.renderSession=null,this.shader=null,this.matrix=null,this.setContext(a)},b.WebGLFastSpriteBatch.prototype.constructor=b.WebGLFastSpriteBatch,b.WebGLFastSpriteBatch.prototype.setContext=function(a){this.gl=a,this.vertexBuffer=a.createBuffer(),this.indexBuffer=a.createBuffer(),a.bindBuffer(a.ELEMENT_ARRAY_BUFFER,this.indexBuffer),a.bufferData(a.ELEMENT_ARRAY_BUFFER,this.indices,a.STATIC_DRAW),a.bindBuffer(a.ARRAY_BUFFER,this.vertexBuffer),a.bufferData(a.ARRAY_BUFFER,this.vertices,a.DYNAMIC_DRAW)},b.WebGLFastSpriteBatch.prototype.begin=function(a,b){this.renderSession=b,this.shader=this.renderSession.shaderManager.fastShader,this.matrix=a.worldTransform.toArray(!0),this.start()},b.WebGLFastSpriteBatch.prototype.end=function(){this.flush()},b.WebGLFastSpriteBatch.prototype.render=function(a){var b=a.children,c=b[0];if(c.texture._uvs){this.currentBaseTexture=c.texture.baseTexture,c.blendMode!==this.renderSession.blendModeManager.currentBlendMode&&(this.flush(),this.renderSession.blendModeManager.setBlendMode(c.blendMode));for(var d=0,e=b.length;e>d;d++)this.renderSprite(b[d]);this.flush()}},b.WebGLFastSpriteBatch.prototype.renderSprite=function(a){if(a.visible&&(a.texture.baseTexture===this.currentBaseTexture||a.texture.baseTexture.skipRender||(this.flush(),this.currentBaseTexture=a.texture.baseTexture,a.texture._uvs))){var b,c,d,e,f,g,h,i,j=this.vertices;if(b=a.texture._uvs,c=a.texture.frame.width,d=a.texture.frame.height,a.texture.trim){var k=a.texture.trim;f=k.x-a.anchor.x*k.width,e=f+a.texture.crop.width,h=k.y-a.anchor.y*k.height,g=h+a.texture.crop.height}else e=a.texture.frame.width*(1-a.anchor.x),f=a.texture.frame.width*-a.anchor.x,g=a.texture.frame.height*(1-a.anchor.y),h=a.texture.frame.height*-a.anchor.y;i=4*this.currentBatchSize*this.vertSize,j[i++]=f,j[i++]=h,j[i++]=a.position.x,j[i++]=a.position.y,j[i++]=a.scale.x,j[i++]=a.scale.y,j[i++]=a.rotation,j[i++]=b.x0,j[i++]=b.y1,j[i++]=a.alpha,j[i++]=e,j[i++]=h,j[i++]=a.position.x,j[i++]=a.position.y,j[i++]=a.scale.x,j[i++]=a.scale.y,j[i++]=a.rotation,j[i++]=b.x1,j[i++]=b.y1,j[i++]=a.alpha,j[i++]=e,j[i++]=g,j[i++]=a.position.x,j[i++]=a.position.y,j[i++]=a.scale.x,j[i++]=a.scale.y,j[i++]=a.rotation,j[i++]=b.x2,j[i++]=b.y2,j[i++]=a.alpha,j[i++]=f,j[i++]=g,j[i++]=a.position.x,j[i++]=a.position.y,j[i++]=a.scale.x,j[i++]=a.scale.y,j[i++]=a.rotation,j[i++]=b.x3,j[i++]=b.y3,j[i++]=a.alpha,this.currentBatchSize++,this.currentBatchSize>=this.size&&this.flush()}},b.WebGLFastSpriteBatch.prototype.flush=function(){if(0!==this.currentBatchSize){var a=this.gl;if(this.currentBaseTexture._glTextures[a.id]||this.renderSession.renderer.updateTexture(this.currentBaseTexture,a),a.bindTexture(a.TEXTURE_2D,this.currentBaseTexture._glTextures[a.id]),this.currentBatchSize>.5*this.size)a.bufferSubData(a.ARRAY_BUFFER,0,this.vertices);else{var b=this.vertices.subarray(0,4*this.currentBatchSize*this.vertSize);a.bufferSubData(a.ARRAY_BUFFER,0,b)}a.drawElements(a.TRIANGLES,6*this.currentBatchSize,a.UNSIGNED_SHORT,0),this.currentBatchSize=0,this.renderSession.drawCount++}},b.WebGLFastSpriteBatch.prototype.stop=function(){this.flush()},b.WebGLFastSpriteBatch.prototype.start=function(){var a=this.gl;a.activeTexture(a.TEXTURE0),a.bindBuffer(a.ARRAY_BUFFER,this.vertexBuffer),a.bindBuffer(a.ELEMENT_ARRAY_BUFFER,this.indexBuffer);var b=this.renderSession.projection;a.uniform2f(this.shader.projectionVector,b.x,b.y),a.uniformMatrix3fv(this.shader.uMatrix,!1,this.matrix);var c=4*this.vertSize;a.vertexAttribPointer(this.shader.aVertexPosition,2,a.FLOAT,!1,c,0),a.vertexAttribPointer(this.shader.aPositionCoord,2,a.FLOAT,!1,c,8),a.vertexAttribPointer(this.shader.aScale,2,a.FLOAT,!1,c,16),a.vertexAttribPointer(this.shader.aRotation,1,a.FLOAT,!1,c,24),a.vertexAttribPointer(this.shader.aTextureCoord,2,a.FLOAT,!1,c,28),a.vertexAttribPointer(this.shader.colorAttribute,1,a.FLOAT,!1,c,36)},b.WebGLFilterManager=function(){this.filterStack=[],this.offsetX=0,this.offsetY=0},b.WebGLFilterManager.prototype.constructor=b.WebGLFilterManager,b.WebGLFilterManager.prototype.setContext=function(a){this.gl=a,this.texturePool=[],this.initShaderBuffers()},b.WebGLFilterManager.prototype.begin=function(a,b){this.renderSession=a,this.defaultShader=a.shaderManager.defaultShader;var c=this.renderSession.projection;this.width=2*c.x,this.height=2*-c.y,this.buffer=b},b.WebGLFilterManager.prototype.pushFilter=function(a){var c=this.gl,d=this.renderSession.projection,e=this.renderSession.offset;a._filterArea=a.target.filterArea||a.target.getBounds(),a._previous_stencil_mgr=this.renderSession.stencilManager,this.renderSession.stencilManager=new b.WebGLStencilManager,this.renderSession.stencilManager.setContext(c),c.disable(c.STENCIL_TEST),this.filterStack.push(a);var f=a.filterPasses[0];this.offsetX+=a._filterArea.x,this.offsetY+=a._filterArea.y;var g=this.texturePool.pop();g?g.resize(this.width*this.renderSession.resolution,this.height*this.renderSession.resolution):g=new b.FilterTexture(this.gl,this.width*this.renderSession.resolution,this.height*this.renderSession.resolution),c.bindTexture(c.TEXTURE_2D,g.texture);var h=a._filterArea,i=f.padding;h.x-=i,h.y-=i,h.width+=2*i,h.height+=2*i,h.x<0&&(h.x=0),h.width>this.width&&(h.width=this.width),h.y<0&&(h.y=0),h.height>this.height&&(h.height=this.height),c.bindFramebuffer(c.FRAMEBUFFER,g.frameBuffer),c.viewport(0,0,h.width*this.renderSession.resolution,h.height*this.renderSession.resolution),d.x=h.width/2,d.y=-h.height/2,e.x=-h.x,e.y=-h.y,c.colorMask(!0,!0,!0,!0),c.clearColor(0,0,0,0),c.clear(c.COLOR_BUFFER_BIT),a._glFilterTexture=g},b.WebGLFilterManager.prototype.popFilter=function(){var a=this.gl,c=this.filterStack.pop(),d=c._filterArea,e=c._glFilterTexture,f=this.renderSession.projection,g=this.renderSession.offset;if(c.filterPasses.length>1){a.viewport(0,0,d.width*this.renderSession.resolution,d.height*this.renderSession.resolution),a.bindBuffer(a.ARRAY_BUFFER,this.vertexBuffer),this.vertexArray[0]=0,this.vertexArray[1]=d.height,this.vertexArray[2]=d.width,this.vertexArray[3]=d.height,this.vertexArray[4]=0,this.vertexArray[5]=0,this.vertexArray[6]=d.width,this.vertexArray[7]=0,a.bufferSubData(a.ARRAY_BUFFER,0,this.vertexArray),a.bindBuffer(a.ARRAY_BUFFER,this.uvBuffer),this.uvArray[2]=d.width/this.width,this.uvArray[5]=d.height/this.height,this.uvArray[6]=d.width/this.width,this.uvArray[7]=d.height/this.height,a.bufferSubData(a.ARRAY_BUFFER,0,this.uvArray);var h=e,i=this.texturePool.pop();i||(i=new b.FilterTexture(this.gl,this.width*this.renderSession.resolution,this.height*this.renderSession.resolution)),i.resize(this.width*this.renderSession.resolution,this.height*this.renderSession.resolution),a.bindFramebuffer(a.FRAMEBUFFER,i.frameBuffer),a.clear(a.COLOR_BUFFER_BIT),a.disable(a.BLEND);for(var j=0;j0?a.enable(a.STENCIL_TEST):a.disable(a.STENCIL_TEST),this.applyFilterPass(m,d,n,o),this.texturePool.push(e),c._glFilterTexture=null},b.WebGLFilterManager.prototype.applyFilterPass=function(a,c,d,e){var f=this.gl,g=a.shaders[f.id];g||(g=new b.PixiShader(f),g.fragmentSrc=a.fragmentSrc,g.uniforms=a.uniforms,g.init(),a.shaders[f.id]=g),this.renderSession.shaderManager.setShader(g),f.uniform2f(g.projectionVector,d/2,-e/2),f.uniform2f(g.offsetVector,0,0),a.uniforms.dimensions&&(a.uniforms.dimensions.value[0]=this.width,a.uniforms.dimensions.value[1]=this.height,a.uniforms.dimensions.value[2]=this.vertexArray[0],a.uniforms.dimensions.value[3]=this.vertexArray[5]),g.syncUniforms(),f.bindBuffer(f.ARRAY_BUFFER,this.vertexBuffer),f.vertexAttribPointer(g.aVertexPosition,2,f.FLOAT,!1,0,0),f.bindBuffer(f.ARRAY_BUFFER,this.uvBuffer),f.vertexAttribPointer(g.aTextureCoord,2,f.FLOAT,!1,0,0),f.bindBuffer(f.ARRAY_BUFFER,this.colorBuffer),f.vertexAttribPointer(g.colorAttribute,2,f.FLOAT,!1,0,0),f.bindBuffer(f.ELEMENT_ARRAY_BUFFER,this.indexBuffer),f.drawElements(f.TRIANGLES,6,f.UNSIGNED_SHORT,0),this.renderSession.drawCount++},b.WebGLFilterManager.prototype.initShaderBuffers=function(){var a=this.gl;this.vertexBuffer=a.createBuffer(),this.uvBuffer=a.createBuffer(),this.colorBuffer=a.createBuffer(),this.indexBuffer=a.createBuffer(),this.vertexArray=new b.Float32Array([0,0,1,0,0,1,1,1]),a.bindBuffer(a.ARRAY_BUFFER,this.vertexBuffer),a.bufferData(a.ARRAY_BUFFER,this.vertexArray,a.STATIC_DRAW),this.uvArray=new b.Float32Array([0,0,1,0,0,1,1,1]),a.bindBuffer(a.ARRAY_BUFFER,this.uvBuffer),a.bufferData(a.ARRAY_BUFFER,this.uvArray,a.STATIC_DRAW),this.colorArray=new b.Float32Array([1,16777215,1,16777215,1,16777215,1,16777215]),a.bindBuffer(a.ARRAY_BUFFER,this.colorBuffer),a.bufferData(a.ARRAY_BUFFER,this.colorArray,a.STATIC_DRAW),a.bindBuffer(a.ELEMENT_ARRAY_BUFFER,this.indexBuffer),a.bufferData(a.ELEMENT_ARRAY_BUFFER,new Uint16Array([0,1,2,1,3,2]),a.STATIC_DRAW)},b.WebGLFilterManager.prototype.destroy=function(){var a=this.gl;this.filterStack=null,this.offsetX=0,this.offsetY=0;for(var b=0;b=0;a--){var c=this._glTextures[a],d=b.glContexts[a];d&&c&&d.deleteTexture(c)}this._glTextures.length=0,this.dirty()},b.BaseTexture.fromImage=function(a,c,d){var e=b.BaseTextureCache[a];if(void 0===c&&-1===a.indexOf("data:")&&(c=!0),!e){var f=new Image;c&&(f.crossOrigin=""),f.src=a,e=new b.BaseTexture(f,d),e.imageUrl=a,b.BaseTextureCache[a]=e,-1!==a.indexOf(b.RETINA_PREFIX+".")&&(e.resolution=2)}return e},b.BaseTexture.fromCanvas=function(a,c){a._pixiId||(a._pixiId="canvas_"+b.TextureCacheIdGenerator++),0===a.width&&(a.width=1),0===a.height&&(a.height=1);var d=b.BaseTextureCache[a._pixiId];return d||(d=new b.BaseTexture(a,c),b.BaseTextureCache[a._pixiId]=d),d},b.TextureCache={},b.FrameCache={},b.TextureSilentFail=!1,b.TextureCacheIdGenerator=0,b.Texture=function(a,c,d,e){this.noFrame=!1,c||(this.noFrame=!0,c=new b.Rectangle(0,0,1,1)),a instanceof b.Texture&&(a=a.baseTexture),this.baseTexture=a,this.frame=c,this.trim=e,this.valid=!1,this.isTiling=!1,this.requiresUpdate=!1,this.requiresReTint=!1,this._uvs=null,this.width=0,this.height=0,this.crop=d||new b.Rectangle(0,0,1,1),a.hasLoaded&&(this.noFrame&&(c=new b.Rectangle(0,0,a.width,a.height)),this.setFrame(c))},b.Texture.prototype.constructor=b.Texture,b.Texture.prototype.onBaseTextureLoaded=function(){var a=this.baseTexture;this.noFrame&&(this.frame=new b.Rectangle(0,0,a.width,a.height)),this.setFrame(this.frame)},b.Texture.prototype.destroy=function(a){a&&this.baseTexture.destroy(),this.valid=!1},b.Texture.prototype.setFrame=function(a){if(this.noFrame=!1,this.frame=a,this.width=a.width,this.height=a.height,this.crop.x=a.x,this.crop.y=a.y,this.crop.width=a.width,this.crop.height=a.height,!this.trim&&(a.x+a.width>this.baseTexture.width||a.y+a.height>this.baseTexture.height)){if(!b.TextureSilentFail)throw new Error("Texture Error: frame does not fit inside the base Texture dimensions "+this);return void(this.valid=!1)}this.valid=a&&a.width&&a.height&&this.baseTexture.source&&this.baseTexture.hasLoaded,this.trim&&(this.width=this.trim.width,this.height=this.trim.height,this.frame.width=this.trim.width,this.frame.height=this.trim.height),this.valid&&this._updateUvs()},b.Texture.prototype._updateUvs=function(){this._uvs||(this._uvs=new b.TextureUvs);var a=this.crop,c=this.baseTexture.width,d=this.baseTexture.height;this._uvs.x0=a.x/c,this._uvs.y0=a.y/d,this._uvs.x1=(a.x+a.width)/c,this._uvs.y1=a.y/d,this._uvs.x2=(a.x+a.width)/c,this._uvs.y2=(a.y+a.height)/d,this._uvs.x3=a.x/c,this._uvs.y3=(a.y+a.height)/d},b.Texture.fromImage=function(a,c,d){var e=b.TextureCache[a];return e||(e=new b.Texture(b.BaseTexture.fromImage(a,c,d)),b.TextureCache[a]=e),e},b.Texture.fromFrame=function(a){var c=b.TextureCache[a];if(!c)throw new Error('The frameId "'+a+'" does not exist in the texture cache ');return c},b.Texture.fromCanvas=function(a,c){var d=b.BaseTexture.fromCanvas(a,c);return new b.Texture(d)},b.Texture.addTextureToCache=function(a,c){b.TextureCache[c]=a},b.Texture.removeTextureFromCache=function(a){var c=b.TextureCache[a];return delete b.TextureCache[a],delete b.BaseTextureCache[a],c},b.TextureUvs=function(){this.x0=0,this.y0=0,this.x1=0,this.y1=0,this.x2=0,this.y2=0,this.x3=0,this.y3=0},b.RenderTexture=function(a,c,d,e,f){if(this.width=a||100,this.height=c||100,this.resolution=f||1,this.frame=new b.Rectangle(0,0,this.width*this.resolution,this.height*this.resolution),this.crop=new b.Rectangle(0,0,this.width*this.resolution,this.height*this.resolution),this.baseTexture=new b.BaseTexture,this.baseTexture.width=this.width*this.resolution,this.baseTexture.height=this.height*this.resolution,this.baseTexture._glTextures=[],this.baseTexture.resolution=this.resolution,this.baseTexture.scaleMode=e||b.scaleModes.DEFAULT,this.baseTexture.hasLoaded=!0,b.Texture.call(this,this.baseTexture,new b.Rectangle(0,0,this.width*this.resolution,this.height*this.resolution)),this.renderer=d||b.defaultRenderer,this.renderer.type===b.WEBGL_RENDERER){var g=this.renderer.gl;this.baseTexture._dirty[g.id]=!1,this.textureBuffer=new b.FilterTexture(g,this.width,this.height,this.baseTexture.scaleMode),this.baseTexture._glTextures[g.id]=this.textureBuffer.texture,this.render=this.renderWebGL,this.projection=new b.Point(.5*this.width,.5*-this.height)}else this.render=this.renderCanvas,this.textureBuffer=new b.CanvasBuffer(this.width*this.resolution,this.height*this.resolution),this.baseTexture.source=this.textureBuffer.canvas;this.valid=!0,this.tempMatrix=new Phaser.Matrix,this._updateUvs()},b.RenderTexture.prototype=Object.create(b.Texture.prototype),b.RenderTexture.prototype.constructor=b.RenderTexture,b.RenderTexture.prototype.resize=function(a,c,d){(a!==this.width||c!==this.height)&&(this.valid=a>0&&c>0,this.width=a,this.height=c,this.frame.width=this.crop.width=a*this.resolution,this.frame.height=this.crop.height=c*this.resolution,d&&(this.baseTexture.width=this.width*this.resolution,this.baseTexture.height=this.height*this.resolution),this.renderer.type===b.WEBGL_RENDERER&&(this.projection.x=this.width/2,this.projection.y=-this.height/2),this.valid&&this.textureBuffer.resize(this.width,this.height))},b.RenderTexture.prototype.clear=function(){this.valid&&(this.renderer.type===b.WEBGL_RENDERER&&this.renderer.gl.bindFramebuffer(this.renderer.gl.FRAMEBUFFER,this.textureBuffer.frameBuffer),this.textureBuffer.clear())},b.RenderTexture.prototype.renderWebGL=function(a,b,c){if(this.valid&&0!==a.alpha){var d=a.worldTransform;d.identity(),d.translate(0,2*this.projection.y),b&&d.append(b),d.scale(1,-1);for(var e=0;ea;a++)this.shaders[a].dirty=!0},b.Strip=function(a){b.DisplayObjectContainer.call(this),this.texture=a,this.uvs=new b.Float32Array([0,1,1,1,1,0,0,1]),this.vertices=new b.Float32Array([0,0,100,0,100,100,0,100]),this.colors=new b.Float32Array([1,1,1,1]),this.indices=new b.Uint16Array([0,1,2,3]),this.dirty=!0,this.blendMode=b.blendModes.NORMAL,this.canvasPadding=0,this.drawMode=b.Strip.DrawModes.TRIANGLE_STRIP},b.Strip.prototype=Object.create(b.DisplayObjectContainer.prototype),b.Strip.prototype.constructor=b.Strip,b.Strip.prototype._renderWebGL=function(a){!this.visible||this.alpha<=0||(a.spriteBatch.stop(),this._vertexBuffer||this._initWebGL(a),a.shaderManager.setShader(a.shaderManager.stripShader),this._renderStrip(a),a.spriteBatch.start())},b.Strip.prototype._initWebGL=function(a){var b=a.gl;this._vertexBuffer=b.createBuffer(),this._indexBuffer=b.createBuffer(),this._uvBuffer=b.createBuffer(),this._colorBuffer=b.createBuffer(),b.bindBuffer(b.ARRAY_BUFFER,this._vertexBuffer),b.bufferData(b.ARRAY_BUFFER,this.vertices,b.DYNAMIC_DRAW),b.bindBuffer(b.ARRAY_BUFFER,this._uvBuffer),b.bufferData(b.ARRAY_BUFFER,this.uvs,b.STATIC_DRAW),b.bindBuffer(b.ARRAY_BUFFER,this._colorBuffer),b.bufferData(b.ARRAY_BUFFER,this.colors,b.STATIC_DRAW),b.bindBuffer(b.ELEMENT_ARRAY_BUFFER,this._indexBuffer),b.bufferData(b.ELEMENT_ARRAY_BUFFER,this.indices,b.STATIC_DRAW)},b.Strip.prototype._renderStrip=function(a){var c=a.gl,d=a.projection,e=a.offset,f=a.shaderManager.stripShader,g=this.drawMode===b.Strip.DrawModes.TRIANGLE_STRIP?c.TRIANGLE_STRIP:c.TRIANGLES;a.blendModeManager.setBlendMode(this.blendMode),c.uniformMatrix3fv(f.translationMatrix,!1,this.worldTransform.toArray(!0)),c.uniform2f(f.projectionVector,d.x,-d.y),c.uniform2f(f.offsetVector,-e.x,-e.y),c.uniform1f(f.alpha,this.worldAlpha),this.dirty?(this.dirty=!1,c.bindBuffer(c.ARRAY_BUFFER,this._vertexBuffer),c.bufferData(c.ARRAY_BUFFER,this.vertices,c.STATIC_DRAW),c.vertexAttribPointer(f.aVertexPosition,2,c.FLOAT,!1,0,0),c.bindBuffer(c.ARRAY_BUFFER,this._uvBuffer),c.bufferData(c.ARRAY_BUFFER,this.uvs,c.STATIC_DRAW),c.vertexAttribPointer(f.aTextureCoord,2,c.FLOAT,!1,0,0),c.activeTexture(c.TEXTURE0),this.texture.baseTexture._dirty[c.id]?a.renderer.updateTexture(this.texture.baseTexture):c.bindTexture(c.TEXTURE_2D,this.texture.baseTexture._glTextures[c.id]),c.bindBuffer(c.ELEMENT_ARRAY_BUFFER,this._indexBuffer),c.bufferData(c.ELEMENT_ARRAY_BUFFER,this.indices,c.STATIC_DRAW)):(c.bindBuffer(c.ARRAY_BUFFER,this._vertexBuffer),c.bufferSubData(c.ARRAY_BUFFER,0,this.vertices),c.vertexAttribPointer(f.aVertexPosition,2,c.FLOAT,!1,0,0),c.bindBuffer(c.ARRAY_BUFFER,this._uvBuffer),c.vertexAttribPointer(f.aTextureCoord,2,c.FLOAT,!1,0,0),c.activeTexture(c.TEXTURE0),this.texture.baseTexture._dirty[c.id]?a.renderer.updateTexture(this.texture.baseTexture):c.bindTexture(c.TEXTURE_2D,this.texture.baseTexture._glTextures[c.id]),c.bindBuffer(c.ELEMENT_ARRAY_BUFFER,this._indexBuffer)),c.drawElements(g,this.indices.length,c.UNSIGNED_SHORT,0)},b.Strip.prototype._renderCanvas=function(a){var c=a.context,d=this.worldTransform,e=d.tx*a.resolution+a.shakeX,f=d.ty*a.resolution+a.shakeY;a.roundPixels?c.setTransform(d.a,d.b,d.c,d.d,0|e,0|f):c.setTransform(d.a,d.b,d.c,d.d,e,f),this.drawMode===b.Strip.DrawModes.TRIANGLE_STRIP?this._renderCanvasTriangleStrip(c):this._renderCanvasTriangles(c)},b.Strip.prototype._renderCanvasTriangleStrip=function(a){var b=this.vertices,c=this.uvs,d=b.length/2;this.count++;for(var e=0;d-2>e;e++){var f=2*e;this._renderCanvasDrawTriangle(a,b,c,f,f+2,f+4)}},b.Strip.prototype._renderCanvasTriangles=function(a){var b=this.vertices,c=this.uvs,d=this.indices,e=d.length;this.count++;for(var f=0;e>f;f+=3){var g=2*d[f],h=2*d[f+1],i=2*d[f+2];this._renderCanvasDrawTriangle(a,b,c,g,h,i)}},b.Strip.prototype._renderCanvasDrawTriangle=function(a,b,c,d,e,f){var g=this.texture.baseTexture.source,h=this.texture.width,i=this.texture.height,j=b[d],k=b[e],l=b[f],m=b[d+1],n=b[e+1],o=b[f+1],p=c[d]*h,q=c[e]*h,r=c[f]*h,s=c[d+1]*i,t=c[e+1]*i,u=c[f+1]*i;if(this.canvasPadding>0){var v=this.canvasPadding/this.worldTransform.a,w=this.canvasPadding/this.worldTransform.d,x=(j+k+l)/3,y=(m+n+o)/3,z=j-x,A=m-y,B=Math.sqrt(z*z+A*A);j=x+z/B*(B+v),m=y+A/B*(B+w),z=k-x,A=n-y,B=Math.sqrt(z*z+A*A),k=x+z/B*(B+v),n=y+A/B*(B+w),z=l-x,A=o-y,B=Math.sqrt(z*z+A*A),l=x+z/B*(B+v),o=y+A/B*(B+w)}a.save(),a.beginPath(),a.moveTo(j,m),a.lineTo(k,n),a.lineTo(l,o),a.closePath(),a.clip();var C=p*t+s*r+q*u-t*r-s*q-p*u,D=j*t+s*l+k*u-t*l-s*k-j*u,E=p*k+j*r+q*l-k*r-j*q-p*l,F=p*t*l+s*k*r+j*q*u-j*t*r-s*q*l-p*k*u,G=m*t+s*o+n*u-t*o-s*n-m*u,H=p*n+m*r+q*o-n*r-m*q-p*o,I=p*t*o+s*n*r+m*q*u-m*t*r-s*q*o-p*n*u;a.transform(D/C,G/C,E/C,H/C,F/C,I/C),a.drawImage(g,0,0),a.restore()},b.Strip.prototype.renderStripFlat=function(a){var b=this.context,c=a.vertices,d=c.length/2;this.count++,b.beginPath();for(var e=1;d-2>e;e++){var f=2*e,g=c[f],h=c[f+2],i=c[f+4],j=c[f+1],k=c[f+3],l=c[f+5];b.moveTo(g,j),b.lineTo(h,k),b.lineTo(i,l)}b.fillStyle="#FF0000",b.fill(),b.closePath()},b.Strip.prototype.onTextureUpdate=function(){this.updateFrame=!0},b.Strip.prototype.getBounds=function(a){for(var c=a||this.worldTransform,d=c.a,e=c.b,f=c.c,g=c.d,h=c.tx,i=c.ty,j=-(1/0),k=-(1/0),l=1/0,m=1/0,n=this.vertices,o=0,p=n.length;p>o;o+=2){var q=n[o],r=n[o+1],s=d*q+f*r+h,t=g*r+e*q+i;l=l>s?s:l,m=m>t?t:m,j=s>j?s:j,k=t>k?t:k}if(l===-(1/0)||k===1/0)return b.EmptyRectangle;var u=this._bounds;return u.x=l,u.width=j-l,u.y=m,u.height=k-m,this._currentBounds=u,u},b.Strip.DrawModes={TRIANGLE_STRIP:0,TRIANGLES:1},b.Rope=function(a,c){b.Strip.call(this,a),this.points=c,this.vertices=new b.Float32Array(4*c.length),this.uvs=new b.Float32Array(4*c.length),this.colors=new b.Float32Array(2*c.length),this.indices=new b.Uint16Array(2*c.length),this.refresh()},b.Rope.prototype=Object.create(b.Strip.prototype),b.Rope.prototype.constructor=b.Rope,b.Rope.prototype.refresh=function(){var a=this.points;if(!(a.length<1)){var b=this.uvs,c=a[0],d=this.indices,e=this.colors;this.count-=.2,b[0]=0,b[1]=0,b[2]=0,b[3]=1,e[0]=1,e[1]=1,d[0]=0,d[1]=1;for(var f,g,h,i=a.length,j=1;i>j;j++)f=a[j],g=4*j,h=j/(i-1),j%2?(b[g]=h,b[g+1]=0,b[g+2]=h,b[g+3]=1):(b[g]=h,b[g+1]=0,b[g+2]=h,b[g+3]=1),g=2*j,e[g]=1,e[g+1]=1,g=2*j,d[g]=g,d[g+1]=g+1,c=f}},b.Rope.prototype.updateTransform=function(){var a=this.points;if(!(a.length<1)){var c,d=a[0],e={x:0,y:0};this.count-=.2;for(var f,g,h,i,j,k=this.vertices,l=a.length,m=0;l>m;m++)f=a[m],g=4*m,c=m1&&(h=1),i=Math.sqrt(e.x*e.x+e.y*e.y),j=this.texture.height/2,e.x/=i,e.y/=i,e.x*=j,e.y*=j,k[g]=f.x+e.x,k[g+1]=f.y+e.y,k[g+2]=f.x-e.x,k[g+3]=f.y-e.y,d=f;b.DisplayObjectContainer.prototype.updateTransform.call(this)}},b.Rope.prototype.setTexture=function(a){this.texture=a},b.TilingSprite=function(a,c,d){b.Sprite.call(this,a),this._width=c||128,this._height=d||128,this.tileScale=new b.Point(1,1),this.tileScaleOffset=new b.Point(1,1),this.tilePosition=new b.Point,this.renderable=!0,this.tint=16777215,this.textureDebug=!1,this.blendMode=b.blendModes.NORMAL,this.canvasBuffer=null,this.tilingTexture=null,this.tilePattern=null,this.refreshTexture=!0,this.frameWidth=0,this.frameHeight=0},b.TilingSprite.prototype=Object.create(b.Sprite.prototype),b.TilingSprite.prototype.constructor=b.TilingSprite,b.TilingSprite.prototype.setTexture=function(a){this.texture!==a&&(this.texture=a,this.refreshTexture=!0,this.cachedTint=16777215)},b.TilingSprite.prototype._renderWebGL=function(a){if(this.visible&&this.renderable&&0!==this.alpha){if(this._mask&&(a.spriteBatch.stop(),a.maskManager.pushMask(this.mask,a),a.spriteBatch.start()),this._filters&&(a.spriteBatch.flush(),a.filterManager.pushFilter(this._filterBlock)),this.refreshTexture){if(this.generateTilingTexture(!0,a),!this.tilingTexture)return;this.tilingTexture.needsUpdate&&(a.renderer.updateTexture(this.tilingTexture.baseTexture),this.tilingTexture.needsUpdate=!1)}a.spriteBatch.renderTilingSprite(this);for(var b=0;bn?n:x,x=x>p?p:x,x=x>r?r:x,x=x>t?t:x,y=y>o?o:y,y=y>q?q:y,y=y>s?s:y,y=y>u?u:y,v=n>v?n:v,v=p>v?p:v,v=r>v?r:v,v=t>v?t:v,w=o>w?o:w,w=q>w?q:w,w=s>w?s:w,w=u>w?u:w;var z=this._bounds;return z.x=x,z.width=v-x,z.y=y,z.height=w-y,this._currentBounds=z,z},b.TilingSprite.prototype.destroy=function(){b.Sprite.prototype.destroy.call(this),this.canvasBuffer&&(this.canvasBuffer.destroy(),this.canvasBuffer=null),this.tileScale=null,this.tileScaleOffset=null,this.tilePosition=null,this.tilingTexture&&(this.tilingTexture.destroy(!0),this.tilingTexture=null)},Object.defineProperty(b.TilingSprite.prototype,"width",{get:function(){return this._width},set:function(a){this._width=a}}),Object.defineProperty(b.TilingSprite.prototype,"height",{get:function(){return this._height},set:function(a){this._height=a}}),"undefined"!=typeof exports?("undefined"!=typeof module&&module.exports&&(exports=module.exports=b),exports.PIXI=b):"undefined"!=typeof define&&define.amd?define("PIXI",function(){return a.PIXI=b}()):a.PIXI=b,b}).call(this); +(function(){var a=this,b=b||{};return b.game=null,b.WEBGL_RENDERER=0,b.CANVAS_RENDERER=1,b.VERSION="v2.2.9",b._UID=0,"undefined"!=typeof Float32Array?(b.Float32Array=Float32Array,b.Uint16Array=Uint16Array,b.Uint32Array=Uint32Array,b.ArrayBuffer=ArrayBuffer):(b.Float32Array=Array,b.Uint16Array=Array),b.PI_2=2*Math.PI,b.RAD_TO_DEG=180/Math.PI,b.DEG_TO_RAD=Math.PI/180,b.RETINA_PREFIX="@2x",b.DisplayObject=function(){this.position=new b.Point(0,0),this.scale=new b.Point(1,1),this.pivot=new b.Point(0,0),this.rotation=0,this.alpha=1,this.visible=!0,this.hitArea=null,this.renderable=!1,this.parent=null,this.stage=null,this.worldAlpha=1,this.worldTransform=new b.Matrix,this.worldPosition=new b.Point(0,0),this.worldScale=new b.Point(1,1),this.worldRotation=0,this.filterArea=null,this._sr=0,this._cr=1,this._bounds=new b.Rectangle(0,0,1,1),this._currentBounds=null,this._mask=null,this._cacheAsBitmap=!1,this._cacheIsDirty=!1},b.DisplayObject.prototype.constructor=b.DisplayObject,b.DisplayObject.prototype={destroy:function(){if(this.children){for(var a=this.children.length;a--;)this.children[a].destroy();this.children=[]}this.hitArea=null,this.parent=null,this.stage=null,this.worldTransform=null,this.filterArea=null,this.renderable=!1,this._bounds=null,this._currentBounds=null,this._mask=null,this._destroyCachedSprite()},updateTransform:function(a){if(!a&&!this.parent&&!this.game)return this;var c=this.parent;a?c=a:this.parent||(c=this.game.world);var d,e,f,g,h,i,j=c.worldTransform,k=this.worldTransform;return this.rotation%b.PI_2?(this.rotation!==this.rotationCache&&(this.rotationCache=this.rotation,this._sr=Math.sin(this.rotation),this._cr=Math.cos(this.rotation)),d=this._cr*this.scale.x,e=this._sr*this.scale.x,f=-this._sr*this.scale.y,g=this._cr*this.scale.y,h=this.position.x,i=this.position.y,(this.pivot.x||this.pivot.y)&&(h-=this.pivot.x*d+this.pivot.y*f,i-=this.pivot.x*e+this.pivot.y*g),k.a=d*j.a+e*j.c,k.b=d*j.b+e*j.d,k.c=f*j.a+g*j.c,k.d=f*j.b+g*j.d,k.tx=h*j.a+i*j.c+j.tx,k.ty=h*j.b+i*j.d+j.ty):(d=this.scale.x,g=this.scale.y,h=this.position.x-this.pivot.x*d,i=this.position.y-this.pivot.y*g,k.a=d*j.a,k.b=d*j.b,k.c=g*j.c,k.d=g*j.d,k.tx=h*j.a+i*j.c+j.tx,k.ty=h*j.b+i*j.d+j.ty),this.worldAlpha=this.alpha*c.worldAlpha,this.worldPosition.set(k.tx,k.ty),this.worldScale.set(this.scale.x*Math.sqrt(k.a*k.a+k.c*k.c),this.scale.y*Math.sqrt(k.b*k.b+k.d*k.d)),this.worldRotation=Math.atan2(-k.c,k.d),this._currentBounds=null,this.transformCallback&&this.transformCallback.call(this.transformCallbackContext,k,j),this},setStageReference:function(a){return this.stage=a,this},preUpdate:function(){},generateTexture:function(a,c,d){var e=this.getLocalBounds(),f=new b.RenderTexture(0|e.width,0|e.height,d,c,a);return b.DisplayObject._tempMatrix.tx=-e.x,b.DisplayObject._tempMatrix.ty=-e.y,f.render(this,b.DisplayObject._tempMatrix),f},updateCache:function(){return this._generateCachedSprite(),this},toGlobal:function(a){return this.updateTransform(),this.worldTransform.apply(a)},toLocal:function(a,b){return b&&(a=b.toGlobal(a)),this.updateTransform(),this.worldTransform.applyInverse(a)},_renderCachedSprite:function(a){this._cachedSprite.worldAlpha=this.worldAlpha,a.gl?b.Sprite.prototype._renderWebGL.call(this._cachedSprite,a):b.Sprite.prototype._renderCanvas.call(this._cachedSprite,a)},_generateCachedSprite:function(){this._cacheAsBitmap=!1;var a=this.getLocalBounds();if(a.width=Math.max(1,Math.ceil(a.width)),a.height=Math.max(1,Math.ceil(a.height)),this.updateTransform(),this._cachedSprite)this._cachedSprite.texture.resize(a.width,a.height);else{var c=new b.RenderTexture(a.width,a.height);this._cachedSprite=new b.Sprite(c),this._cachedSprite.worldTransform=this.worldTransform}var d=this._filters;this._filters=null,this._cachedSprite.filters=d,b.DisplayObject._tempMatrix.tx=-a.x,b.DisplayObject._tempMatrix.ty=-a.y,this._cachedSprite.texture.render(this,b.DisplayObject._tempMatrix,!0),this._cachedSprite.anchor.x=-(a.x/a.width),this._cachedSprite.anchor.y=-(a.y/a.height),this._filters=d,this._cacheAsBitmap=!0},_destroyCachedSprite:function(){this._cachedSprite&&(this._cachedSprite.texture.destroy(!0),this._cachedSprite=null)}},b.DisplayObject.prototype.displayObjectUpdateTransform=b.DisplayObject.prototype.updateTransform,Object.defineProperties(b.DisplayObject.prototype,{x:{get:function(){return this.position.x},set:function(a){this.position.x=a}},y:{get:function(){return this.position.y},set:function(a){this.position.y=a}},worldVisible:{get:function(){if(this.visible){var a=this.parent;do{if(!a.visible)return!1;a=a.parent}while(a);return!0}return!1}},mask:{get:function(){return this._mask},set:function(a){this._mask&&(this._mask.isMask=!1),this._mask=a,a&&(this._mask.isMask=!0)}},filters:{get:function(){return this._filters},set:function(a){if(Array.isArray(a)){for(var c=[],d=0;d=0&&b<=this.children.length)return a.parent&&a.parent.removeChild(a),a.parent=this,this.children.splice(b,0,a),this.stage&&a.setStageReference(this.stage),a;throw new Error(a+"addChildAt: The index "+b+" supplied is out of bounds "+this.children.length)},b.DisplayObjectContainer.prototype.swapChildren=function(a,b){if(a!==b){var c=this.getChildIndex(a),d=this.getChildIndex(b);if(0>c||0>d)throw new Error("swapChildren: Both the supplied DisplayObjects must be a child of the caller.");this.children[c]=b,this.children[d]=a}},b.DisplayObjectContainer.prototype.getChildIndex=function(a){var b=this.children.indexOf(a);if(-1===b)throw new Error("The supplied DisplayObject must be a child of the caller");return b},b.DisplayObjectContainer.prototype.setChildIndex=function(a,b){if(0>b||b>=this.children.length)throw new Error("The supplied index is out of bounds");var c=this.getChildIndex(a);this.children.splice(c,1),this.children.splice(b,0,a)},b.DisplayObjectContainer.prototype.getChildAt=function(a){if(0>a||a>=this.children.length)throw new Error("getChildAt: Supplied index "+a+" does not exist in the child list, or the supplied DisplayObject must be a child of the caller");return this.children[a]},b.DisplayObjectContainer.prototype.removeChild=function(a){var b=this.children.indexOf(a);if(-1!==b)return this.removeChildAt(b)},b.DisplayObjectContainer.prototype.removeChildAt=function(a){var b=this.getChildAt(a);return this.stage&&b.removeStageReference(),b.parent=void 0,this.children.splice(a,1),b},b.DisplayObjectContainer.prototype.removeChildren=function(a,b){var c=a||0,d="number"==typeof b?b:this.children.length,e=d-c;if(e>0&&d>=e){for(var f=this.children.splice(c,e),g=0;gc?g:c,h=h>d?h:d)}if(!i)return b.EmptyRectangle;var l=this._bounds;return l.x=e,l.y=f,l.width=g-e,l.height=h-f,l},b.DisplayObjectContainer.prototype.getLocalBounds=function(){var a=this.worldTransform;this.worldTransform=b.identityMatrix;for(var c=0;ci){i*=-1;var s=d;d=-e,e=-s}if(0>l){l*=-1;var s=f;f=-g,g=-s}q=i*e+m,o=i*d+m,r=l*g+n,p=l*f+n}else{var t=i*e+k*g+m,u=l*g+j*e+n,v=i*d+k*g+m,w=l*g+j*d+n,x=i*d+k*f+m,y=l*f+j*d+n,z=i*e+k*f+m,A=l*f+j*e+n;q=q>t?t:q,q=q>v?v:q,q=q>x?x:q,q=q>z?z:q,r=r>u?u:r,r=r>w?w:r,r=r>y?y:r,r=r>A?A:r,o=t>o?t:o,o=v>o?v:o,o=x>o?x:o,o=z>o?z:o,p=u>p?u:p,p=w>p?w:p,p=y>p?y:p,p=A>p?A:p}var B=this._bounds;return B.x=q,B.width=o-q,B.y=r,B.height=p-r,this._currentBounds=B,B},b.Sprite.prototype._renderWebGL=function(a,b){if(this.visible&&!(this.alpha<=0)&&this.renderable){var c=this.worldTransform;if(b&&(c=b),this._mask||this._filters){var d=a.spriteBatch;this._filters&&(d.flush(),a.filterManager.pushFilter(this._filterBlock)),this._mask&&(d.stop(),a.maskManager.pushMask(this.mask,a),d.start()),d.render(this);for(var e=0;e>16&255)/255,(a>>8&255)/255,(255&a)/255]},b.rgb2hex=function(a){return(255*a[0]<<16)+(255*a[1]<<8)+255*a[2]},b.canUseNewCanvasBlendModes=function(){if(void 0===document)return!1;var a="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAQAAAABAQMAAADD8p2OAAAAA1BMVEX/",c="AAAACklEQVQI12NgAAAAAgAB4iG8MwAAAABJRU5ErkJggg==",d=new Image;d.src=a+"AP804Oa6"+c;var e=new Image;e.src=a+"/wCKxvRF"+c;var f=b.CanvasPool.create(this,6,1),g=f.getContext("2d");if(g.globalCompositeOperation="multiply",g.drawImage(d,0,0),g.drawImage(e,2,0),!g.getImageData(2,0,1,1))return!1;var h=g.getImageData(2,0,1,1).data;return b.CanvasPool.remove(this),255===h[0]&&0===h[1]&&0===h[2]},b.getNextPowerOfTwo=function(a){if(a>0&&0===(a&a-1))return a;for(var b=1;a>b;)b<<=1;return b},b.isPowerOfTwo=function(a,b){return a>0&&0===(a&a-1)&&b>0&&0===(b&b-1)},b.CanvasPool={create:function(a,c,d){var e,f=b.CanvasPool.getFirst();if(-1===f){var g={parent:a,canvas:document.createElement("canvas")};b.CanvasPool.pool.push(g),e=g.canvas}else b.CanvasPool.pool[f].parent=a,e=b.CanvasPool.pool[f].canvas;return void 0!==c&&(e.width=c,e.height=d),e},getFirst:function(){for(var a=b.CanvasPool.pool,c=0;cd;d+=6,e+=4)this.indices[d+0]=e+0,this.indices[d+1]=e+1,this.indices[d+2]=e+2,this.indices[d+3]=e+0,this.indices[d+4]=e+2,this.indices[d+5]=e+3;this.drawing=!1,this.currentBatchSize=0,this.currentBaseTexture=null,this.dirty=!0,this.textures=[],this.blendModes=[],this.shaders=[],this.sprites=[],this.defaultShader=new b.AbstractFilter(["precision lowp float;","varying vec2 vTextureCoord;","varying vec4 vColor;","uniform sampler2D uSampler;","void main(void) {"," gl_FragColor = texture2D(uSampler, vTextureCoord) * vColor ;","}"])},b.WebGLSpriteBatch.prototype.setContext=function(a){this.gl=a,this.vertexBuffer=a.createBuffer(),this.indexBuffer=a.createBuffer(),a.bindBuffer(a.ELEMENT_ARRAY_BUFFER,this.indexBuffer),a.bufferData(a.ELEMENT_ARRAY_BUFFER,this.indices,a.STATIC_DRAW),a.bindBuffer(a.ARRAY_BUFFER,this.vertexBuffer),a.bufferData(a.ARRAY_BUFFER,this.vertices,a.DYNAMIC_DRAW),this.currentBlendMode=99999;var c=new b.PixiShader(a);c.fragmentSrc=this.defaultShader.fragmentSrc,c.uniforms={},c.init(),this.defaultShader.shaders[a.id]=c},b.WebGLSpriteBatch.prototype.begin=function(a){this.renderSession=a,this.shader=this.renderSession.shaderManager.defaultShader,this.start()},b.WebGLSpriteBatch.prototype.end=function(){this.flush()},b.WebGLSpriteBatch.prototype.render=function(a,b){var c=a.texture,d=a.worldTransform;b&&(d=b),this.currentBatchSize>=this.size&&(this.flush(),this.currentBaseTexture=c.baseTexture);var e=c._uvs;if(e){var f,g,h,i,j=a.anchor.x,k=a.anchor.y;if(c.trim){var l=c.trim;g=l.x-j*l.width,f=g+c.crop.width,i=l.y-k*l.height,h=i+c.crop.height}else f=c.frame.width*(1-j),g=c.frame.width*-j,h=c.frame.height*(1-k),i=c.frame.height*-k;var m=4*this.currentBatchSize*this.vertSize,n=c.baseTexture.resolution,o=d.a/n,p=d.b/n,q=d.c/n,r=d.d/n,s=d.tx,t=d.ty,u=this.colors,v=this.positions;this.renderSession.roundPixels?(v[m]=o*g+q*i+s|0,v[m+1]=r*i+p*g+t|0,v[m+5]=o*f+q*i+s|0,v[m+6]=r*i+p*f+t|0,v[m+10]=o*f+q*h+s|0,v[m+11]=r*h+p*f+t|0,v[m+15]=o*g+q*h+s|0,v[m+16]=r*h+p*g+t|0):(v[m]=o*g+q*i+s,v[m+1]=r*i+p*g+t,v[m+5]=o*f+q*i+s,v[m+6]=r*i+p*f+t,v[m+10]=o*f+q*h+s,v[m+11]=r*h+p*f+t,v[m+15]=o*g+q*h+s,v[m+16]=r*h+p*g+t),v[m+2]=e.x0,v[m+3]=e.y0,v[m+7]=e.x1,v[m+8]=e.y1,v[m+12]=e.x2,v[m+13]=e.y2,v[m+17]=e.x3,v[m+18]=e.y3;var w=a.tint;u[m+4]=u[m+9]=u[m+14]=u[m+19]=(w>>16)+(65280&w)+((255&w)<<16)+(255*a.worldAlpha<<24),this.sprites[this.currentBatchSize++]=a}},b.WebGLSpriteBatch.prototype.renderTilingSprite=function(a){var c=a.tilingTexture;this.currentBatchSize>=this.size&&(this.flush(),this.currentBaseTexture=c.baseTexture),a._uvs||(a._uvs=new b.TextureUvs);var d=a._uvs,e=c.baseTexture.width,f=c.baseTexture.height;a.tilePosition.x%=e*a.tileScaleOffset.x,a.tilePosition.y%=f*a.tileScaleOffset.y;var g=a.tilePosition.x/(e*a.tileScaleOffset.x),h=a.tilePosition.y/(f*a.tileScaleOffset.y),i=a.width/e/(a.tileScale.x*a.tileScaleOffset.x),j=a.height/f/(a.tileScale.y*a.tileScaleOffset.y);d.x0=0-g,d.y0=0-h,d.x1=1*i-g,d.y1=0-h,d.x2=1*i-g,d.y2=1*j-h,d.x3=0-g,d.y3=1*j-h;var k=a.tint,l=(k>>16)+(65280&k)+((255&k)<<16)+(255*a.worldAlpha<<24),m=this.positions,n=this.colors,o=a.width,p=a.height,q=a.anchor.x,r=a.anchor.y,s=o*(1-q),t=o*-q,u=p*(1-r),v=p*-r,w=4*this.currentBatchSize*this.vertSize,x=c.baseTexture.resolution,y=a.worldTransform,z=y.a/x,A=y.b/x,B=y.c/x,C=y.d/x,D=y.tx,E=y.ty;m[w++]=z*t+B*v+D,m[w++]=C*v+A*t+E,m[w++]=d.x0,m[w++]=d.y0,n[w++]=l,m[w++]=z*s+B*v+D,m[w++]=C*v+A*s+E,m[w++]=d.x1,m[w++]=d.y1,n[w++]=l,m[w++]=z*s+B*u+D,m[w++]=C*u+A*s+E,m[w++]=d.x2,m[w++]=d.y2,n[w++]=l,m[w++]=z*t+B*u+D,m[w++]=C*u+A*t+E,m[w++]=d.x3,m[w++]=d.y3,n[w++]=l,this.sprites[this.currentBatchSize++]=a},b.WebGLSpriteBatch.prototype.flush=function(){if(0!==this.currentBatchSize){var a,c=this.gl;if(this.dirty){this.dirty=!1,c.activeTexture(c.TEXTURE0),c.bindBuffer(c.ARRAY_BUFFER,this.vertexBuffer),c.bindBuffer(c.ELEMENT_ARRAY_BUFFER,this.indexBuffer),a=this.defaultShader.shaders[c.id];var d=4*this.vertSize;c.vertexAttribPointer(a.aVertexPosition,2,c.FLOAT,!1,d,0),c.vertexAttribPointer(a.aTextureCoord,2,c.FLOAT,!1,d,8),c.vertexAttribPointer(a.colorAttribute,4,c.UNSIGNED_BYTE,!0,d,16)}if(this.currentBatchSize>.5*this.size)c.bufferSubData(c.ARRAY_BUFFER,0,this.vertices);else{var e=this.positions.subarray(0,4*this.currentBatchSize*this.vertSize);c.bufferSubData(c.ARRAY_BUFFER,0,e)}for(var f,g,h,i,j=0,k=0,l=null,m=this.renderSession.blendModeManager.currentBlendMode,n=null,o=!1,p=!1,q=0,r=this.currentBatchSize;r>q;q++){i=this.sprites[q],f=i.tilingTexture?i.tilingTexture.baseTexture:i.texture.baseTexture,g=i.blendMode,h=i.shader||this.defaultShader,o=m!==g,p=n!==h;var s=f.skipRender;if(s&&i.children.length>0&&(s=!1),(l!==f&&!s||o||p)&&(this.renderBatch(l,j,k),k=q,j=0,l=f,o&&(m=g,this.renderSession.blendModeManager.setBlendMode(m)),p)){n=h,a=n.shaders[c.id],a||(a=new b.PixiShader(c),a.fragmentSrc=n.fragmentSrc,a.uniforms=n.uniforms,a.init(),n.shaders[c.id]=a),this.renderSession.shaderManager.setShader(a),a.dirty&&a.syncUniforms();var t=this.renderSession.projection;c.uniform2f(a.projectionVector,t.x,t.y);var u=this.renderSession.offset;c.uniform2f(a.offsetVector,u.x,u.y)}j++}this.renderBatch(l,j,k),this.currentBatchSize=0}},b.WebGLSpriteBatch.prototype.renderBatch=function(a,b,c){if(0!==b){var d=this.gl;if(a._dirty[d.id]){if(!this.renderSession.renderer.updateTexture(a))return}else d.bindTexture(d.TEXTURE_2D,a._glTextures[d.id]);d.drawElements(d.TRIANGLES,6*b,d.UNSIGNED_SHORT,6*c*2),this.renderSession.drawCount++}},b.WebGLSpriteBatch.prototype.stop=function(){this.flush(),this.dirty=!0},b.WebGLSpriteBatch.prototype.start=function(){this.dirty=!0},b.WebGLSpriteBatch.prototype.destroy=function(){this.vertices=null,this.indices=null,this.gl.deleteBuffer(this.vertexBuffer),this.gl.deleteBuffer(this.indexBuffer),this.currentBaseTexture=null,this.gl=null},b.WebGLFastSpriteBatch=function(a){this.vertSize=10,this.maxSize=6e3,this.size=this.maxSize;var c=4*this.size*this.vertSize,d=6*this.maxSize;this.vertices=new b.Float32Array(c),this.indices=new b.Uint16Array(d),this.vertexBuffer=null,this.indexBuffer=null,this.lastIndexCount=0;for(var e=0,f=0;d>e;e+=6,f+=4)this.indices[e+0]=f+0,this.indices[e+1]=f+1,this.indices[e+2]=f+2,this.indices[e+3]=f+0,this.indices[e+4]=f+2,this.indices[e+5]=f+3;this.drawing=!1,this.currentBatchSize=0,this.currentBaseTexture=null,this.currentBlendMode=0,this.renderSession=null,this.shader=null,this.matrix=null,this.setContext(a)},b.WebGLFastSpriteBatch.prototype.constructor=b.WebGLFastSpriteBatch,b.WebGLFastSpriteBatch.prototype.setContext=function(a){this.gl=a,this.vertexBuffer=a.createBuffer(),this.indexBuffer=a.createBuffer(),a.bindBuffer(a.ELEMENT_ARRAY_BUFFER,this.indexBuffer),a.bufferData(a.ELEMENT_ARRAY_BUFFER,this.indices,a.STATIC_DRAW),a.bindBuffer(a.ARRAY_BUFFER,this.vertexBuffer),a.bufferData(a.ARRAY_BUFFER,this.vertices,a.DYNAMIC_DRAW)},b.WebGLFastSpriteBatch.prototype.begin=function(a,b){this.renderSession=b,this.shader=this.renderSession.shaderManager.fastShader,this.matrix=a.worldTransform.toArray(!0),this.start()},b.WebGLFastSpriteBatch.prototype.end=function(){this.flush()},b.WebGLFastSpriteBatch.prototype.render=function(a){var b=a.children,c=b[0];if(c.texture._uvs){this.currentBaseTexture=c.texture.baseTexture,c.blendMode!==this.renderSession.blendModeManager.currentBlendMode&&(this.flush(),this.renderSession.blendModeManager.setBlendMode(c.blendMode));for(var d=0,e=b.length;e>d;d++)this.renderSprite(b[d]);this.flush()}},b.WebGLFastSpriteBatch.prototype.renderSprite=function(a){if(a.visible&&(a.texture.baseTexture===this.currentBaseTexture||a.texture.baseTexture.skipRender||(this.flush(),this.currentBaseTexture=a.texture.baseTexture,a.texture._uvs))){var b,c,d,e,f,g,h,i,j=this.vertices;if(b=a.texture._uvs,c=a.texture.frame.width,d=a.texture.frame.height,a.texture.trim){var k=a.texture.trim;f=k.x-a.anchor.x*k.width,e=f+a.texture.crop.width,h=k.y-a.anchor.y*k.height,g=h+a.texture.crop.height}else e=a.texture.frame.width*(1-a.anchor.x),f=a.texture.frame.width*-a.anchor.x,g=a.texture.frame.height*(1-a.anchor.y),h=a.texture.frame.height*-a.anchor.y;i=4*this.currentBatchSize*this.vertSize,j[i++]=f,j[i++]=h,j[i++]=a.position.x,j[i++]=a.position.y,j[i++]=a.scale.x,j[i++]=a.scale.y,j[i++]=a.rotation,j[i++]=b.x0,j[i++]=b.y1,j[i++]=a.alpha,j[i++]=e,j[i++]=h,j[i++]=a.position.x,j[i++]=a.position.y,j[i++]=a.scale.x,j[i++]=a.scale.y,j[i++]=a.rotation,j[i++]=b.x1,j[i++]=b.y1,j[i++]=a.alpha,j[i++]=e,j[i++]=g,j[i++]=a.position.x,j[i++]=a.position.y,j[i++]=a.scale.x,j[i++]=a.scale.y,j[i++]=a.rotation,j[i++]=b.x2,j[i++]=b.y2,j[i++]=a.alpha,j[i++]=f,j[i++]=g,j[i++]=a.position.x,j[i++]=a.position.y,j[i++]=a.scale.x,j[i++]=a.scale.y,j[i++]=a.rotation,j[i++]=b.x3,j[i++]=b.y3,j[i++]=a.alpha,this.currentBatchSize++,this.currentBatchSize>=this.size&&this.flush()}},b.WebGLFastSpriteBatch.prototype.flush=function(){if(0!==this.currentBatchSize){var a=this.gl;if(this.currentBaseTexture._glTextures[a.id]||this.renderSession.renderer.updateTexture(this.currentBaseTexture,a),a.bindTexture(a.TEXTURE_2D,this.currentBaseTexture._glTextures[a.id]),this.currentBatchSize>.5*this.size)a.bufferSubData(a.ARRAY_BUFFER,0,this.vertices);else{var b=this.vertices.subarray(0,4*this.currentBatchSize*this.vertSize);a.bufferSubData(a.ARRAY_BUFFER,0,b)}a.drawElements(a.TRIANGLES,6*this.currentBatchSize,a.UNSIGNED_SHORT,0),this.currentBatchSize=0,this.renderSession.drawCount++}},b.WebGLFastSpriteBatch.prototype.stop=function(){this.flush()},b.WebGLFastSpriteBatch.prototype.start=function(){var a=this.gl;a.activeTexture(a.TEXTURE0),a.bindBuffer(a.ARRAY_BUFFER,this.vertexBuffer),a.bindBuffer(a.ELEMENT_ARRAY_BUFFER,this.indexBuffer);var b=this.renderSession.projection;a.uniform2f(this.shader.projectionVector,b.x,b.y),a.uniformMatrix3fv(this.shader.uMatrix,!1,this.matrix);var c=4*this.vertSize;a.vertexAttribPointer(this.shader.aVertexPosition,2,a.FLOAT,!1,c,0),a.vertexAttribPointer(this.shader.aPositionCoord,2,a.FLOAT,!1,c,8),a.vertexAttribPointer(this.shader.aScale,2,a.FLOAT,!1,c,16),a.vertexAttribPointer(this.shader.aRotation,1,a.FLOAT,!1,c,24),a.vertexAttribPointer(this.shader.aTextureCoord,2,a.FLOAT,!1,c,28),a.vertexAttribPointer(this.shader.colorAttribute,1,a.FLOAT,!1,c,36)},b.WebGLFilterManager=function(){this.filterStack=[],this.offsetX=0,this.offsetY=0},b.WebGLFilterManager.prototype.constructor=b.WebGLFilterManager,b.WebGLFilterManager.prototype.setContext=function(a){this.gl=a,this.texturePool=[],this.initShaderBuffers()},b.WebGLFilterManager.prototype.begin=function(a,b){this.renderSession=a,this.defaultShader=a.shaderManager.defaultShader;var c=this.renderSession.projection;this.width=2*c.x,this.height=2*-c.y,this.buffer=b},b.WebGLFilterManager.prototype.pushFilter=function(a){var c=this.gl,d=this.renderSession.projection,e=this.renderSession.offset;a._filterArea=a.target.filterArea||a.target.getBounds(),a._previous_stencil_mgr=this.renderSession.stencilManager,this.renderSession.stencilManager=new b.WebGLStencilManager,this.renderSession.stencilManager.setContext(c),c.disable(c.STENCIL_TEST),this.filterStack.push(a);var f=a.filterPasses[0];this.offsetX+=a._filterArea.x,this.offsetY+=a._filterArea.y;var g=this.texturePool.pop();g?g.resize(this.width*this.renderSession.resolution,this.height*this.renderSession.resolution):g=new b.FilterTexture(this.gl,this.width*this.renderSession.resolution,this.height*this.renderSession.resolution),c.bindTexture(c.TEXTURE_2D,g.texture);var h=a._filterArea,i=f.padding;h.x-=i,h.y-=i,h.width+=2*i,h.height+=2*i,h.x<0&&(h.x=0),h.width>this.width&&(h.width=this.width),h.y<0&&(h.y=0),h.height>this.height&&(h.height=this.height),c.bindFramebuffer(c.FRAMEBUFFER,g.frameBuffer),c.viewport(0,0,h.width*this.renderSession.resolution,h.height*this.renderSession.resolution),d.x=h.width/2,d.y=-h.height/2,e.x=-h.x,e.y=-h.y,c.colorMask(!0,!0,!0,!0),c.clearColor(0,0,0,0),c.clear(c.COLOR_BUFFER_BIT),a._glFilterTexture=g},b.WebGLFilterManager.prototype.popFilter=function(){var a=this.gl,c=this.filterStack.pop(),d=c._filterArea,e=c._glFilterTexture,f=this.renderSession.projection,g=this.renderSession.offset;if(c.filterPasses.length>1){a.viewport(0,0,d.width*this.renderSession.resolution,d.height*this.renderSession.resolution),a.bindBuffer(a.ARRAY_BUFFER,this.vertexBuffer),this.vertexArray[0]=0,this.vertexArray[1]=d.height,this.vertexArray[2]=d.width,this.vertexArray[3]=d.height,this.vertexArray[4]=0,this.vertexArray[5]=0,this.vertexArray[6]=d.width,this.vertexArray[7]=0,a.bufferSubData(a.ARRAY_BUFFER,0,this.vertexArray),a.bindBuffer(a.ARRAY_BUFFER,this.uvBuffer),this.uvArray[2]=d.width/this.width,this.uvArray[5]=d.height/this.height,this.uvArray[6]=d.width/this.width,this.uvArray[7]=d.height/this.height,a.bufferSubData(a.ARRAY_BUFFER,0,this.uvArray);var h=e,i=this.texturePool.pop();i||(i=new b.FilterTexture(this.gl,this.width*this.renderSession.resolution,this.height*this.renderSession.resolution)),i.resize(this.width*this.renderSession.resolution,this.height*this.renderSession.resolution),a.bindFramebuffer(a.FRAMEBUFFER,i.frameBuffer),a.clear(a.COLOR_BUFFER_BIT),a.disable(a.BLEND);for(var j=0;j0?a.enable(a.STENCIL_TEST):a.disable(a.STENCIL_TEST),this.applyFilterPass(m,d,n,o),this.texturePool.push(e),c._glFilterTexture=null},b.WebGLFilterManager.prototype.applyFilterPass=function(a,c,d,e){var f=this.gl,g=a.shaders[f.id];g||(g=new b.PixiShader(f),g.fragmentSrc=a.fragmentSrc,g.uniforms=a.uniforms,g.init(),a.shaders[f.id]=g),this.renderSession.shaderManager.setShader(g),f.uniform2f(g.projectionVector,d/2,-e/2),f.uniform2f(g.offsetVector,0,0),a.uniforms.dimensions&&(a.uniforms.dimensions.value[0]=this.width,a.uniforms.dimensions.value[1]=this.height,a.uniforms.dimensions.value[2]=this.vertexArray[0],a.uniforms.dimensions.value[3]=this.vertexArray[5]),g.syncUniforms(),f.bindBuffer(f.ARRAY_BUFFER,this.vertexBuffer),f.vertexAttribPointer(g.aVertexPosition,2,f.FLOAT,!1,0,0),f.bindBuffer(f.ARRAY_BUFFER,this.uvBuffer),f.vertexAttribPointer(g.aTextureCoord,2,f.FLOAT,!1,0,0),f.bindBuffer(f.ARRAY_BUFFER,this.colorBuffer),f.vertexAttribPointer(g.colorAttribute,2,f.FLOAT,!1,0,0),f.bindBuffer(f.ELEMENT_ARRAY_BUFFER,this.indexBuffer),f.drawElements(f.TRIANGLES,6,f.UNSIGNED_SHORT,0),this.renderSession.drawCount++},b.WebGLFilterManager.prototype.initShaderBuffers=function(){var a=this.gl;this.vertexBuffer=a.createBuffer(),this.uvBuffer=a.createBuffer(),this.colorBuffer=a.createBuffer(),this.indexBuffer=a.createBuffer(),this.vertexArray=new b.Float32Array([0,0,1,0,0,1,1,1]),a.bindBuffer(a.ARRAY_BUFFER,this.vertexBuffer),a.bufferData(a.ARRAY_BUFFER,this.vertexArray,a.STATIC_DRAW),this.uvArray=new b.Float32Array([0,0,1,0,0,1,1,1]),a.bindBuffer(a.ARRAY_BUFFER,this.uvBuffer),a.bufferData(a.ARRAY_BUFFER,this.uvArray,a.STATIC_DRAW),this.colorArray=new b.Float32Array([1,16777215,1,16777215,1,16777215,1,16777215]),a.bindBuffer(a.ARRAY_BUFFER,this.colorBuffer),a.bufferData(a.ARRAY_BUFFER,this.colorArray,a.STATIC_DRAW),a.bindBuffer(a.ELEMENT_ARRAY_BUFFER,this.indexBuffer),a.bufferData(a.ELEMENT_ARRAY_BUFFER,new Uint16Array([0,1,2,1,3,2]),a.STATIC_DRAW)},b.WebGLFilterManager.prototype.destroy=function(){var a=this.gl;this.filterStack=null,this.offsetX=0,this.offsetY=0;for(var b=0;b=0;a--){var c=this._glTextures[a],d=b.glContexts[a];d&&c&&d.deleteTexture(c)}this._glTextures.length=0,this.dirty()},b.BaseTexture.fromCanvas=function(a,c){return 0===a.width&&(a.width=1),0===a.height&&(a.height=1),new b.BaseTexture(a,c)},b.TextureSilentFail=!1,b.Texture=function(a,c,d,e){this.noFrame=!1,c||(this.noFrame=!0,c=new b.Rectangle(0,0,1,1)),a instanceof b.Texture&&(a=a.baseTexture),this.baseTexture=a,this.frame=c,this.trim=e,this.valid=!1,this.isTiling=!1,this.requiresUpdate=!1,this.requiresReTint=!1,this._uvs=null,this.width=0,this.height=0,this.crop=d||new b.Rectangle(0,0,1,1),a.hasLoaded&&(this.noFrame&&(c=new b.Rectangle(0,0,a.width,a.height)),this.setFrame(c))},b.Texture.prototype.constructor=b.Texture,b.Texture.prototype.onBaseTextureLoaded=function(){var a=this.baseTexture;this.noFrame&&(this.frame=new b.Rectangle(0,0,a.width,a.height)),this.setFrame(this.frame)},b.Texture.prototype.destroy=function(a){a&&this.baseTexture.destroy(),this.valid=!1},b.Texture.prototype.setFrame=function(a){if(this.noFrame=!1,this.frame=a,this.width=a.width,this.height=a.height,this.crop.x=a.x,this.crop.y=a.y,this.crop.width=a.width,this.crop.height=a.height,!this.trim&&(a.x+a.width>this.baseTexture.width||a.y+a.height>this.baseTexture.height)){if(!b.TextureSilentFail)throw new Error("Texture Error: frame does not fit inside the base Texture dimensions "+this);return void(this.valid=!1)}this.valid=a&&a.width&&a.height&&this.baseTexture.source&&this.baseTexture.hasLoaded,this.trim&&(this.width=this.trim.width,this.height=this.trim.height,this.frame.width=this.trim.width,this.frame.height=this.trim.height),this.valid&&this._updateUvs()},b.Texture.prototype._updateUvs=function(){this._uvs||(this._uvs=new b.TextureUvs);var a=this.crop,c=this.baseTexture.width,d=this.baseTexture.height;this._uvs.x0=a.x/c,this._uvs.y0=a.y/d,this._uvs.x1=(a.x+a.width)/c,this._uvs.y1=a.y/d,this._uvs.x2=(a.x+a.width)/c,this._uvs.y2=(a.y+a.height)/d,this._uvs.x3=a.x/c,this._uvs.y3=(a.y+a.height)/d},b.Texture.fromCanvas=function(a,c){var d=b.BaseTexture.fromCanvas(a,c);return new b.Texture(d)},b.TextureUvs=function(){this.x0=0,this.y0=0,this.x1=0,this.y1=0,this.x2=0,this.y2=0,this.x3=0,this.y3=0},b.RenderTexture=function(a,c,d,e,f){if(this.width=a||100,this.height=c||100,this.resolution=f||1,this.frame=new b.Rectangle(0,0,this.width*this.resolution,this.height*this.resolution),this.crop=new b.Rectangle(0,0,this.width*this.resolution,this.height*this.resolution),this.baseTexture=new b.BaseTexture,this.baseTexture.width=this.width*this.resolution,this.baseTexture.height=this.height*this.resolution,this.baseTexture._glTextures=[],this.baseTexture.resolution=this.resolution,this.baseTexture.scaleMode=e||b.scaleModes.DEFAULT,this.baseTexture.hasLoaded=!0,b.Texture.call(this,this.baseTexture,new b.Rectangle(0,0,this.width*this.resolution,this.height*this.resolution)),this.renderer=d||b.defaultRenderer,this.renderer.type===b.WEBGL_RENDERER){var g=this.renderer.gl;this.baseTexture._dirty[g.id]=!1,this.textureBuffer=new b.FilterTexture(g,this.width,this.height,this.baseTexture.scaleMode),this.baseTexture._glTextures[g.id]=this.textureBuffer.texture,this.render=this.renderWebGL,this.projection=new b.Point(.5*this.width,.5*-this.height)}else this.render=this.renderCanvas,this.textureBuffer=new b.CanvasBuffer(this.width*this.resolution,this.height*this.resolution),this.baseTexture.source=this.textureBuffer.canvas;this.valid=!0,this.tempMatrix=new Phaser.Matrix,this._updateUvs()},b.RenderTexture.prototype=Object.create(b.Texture.prototype),b.RenderTexture.prototype.constructor=b.RenderTexture,b.RenderTexture.prototype.resize=function(a,c,d){a===this.width&&c===this.height||(this.valid=a>0&&c>0,this.width=a,this.height=c,this.frame.width=this.crop.width=a*this.resolution,this.frame.height=this.crop.height=c*this.resolution,d&&(this.baseTexture.width=this.width*this.resolution,this.baseTexture.height=this.height*this.resolution),this.renderer.type===b.WEBGL_RENDERER&&(this.projection.x=this.width/2,this.projection.y=-this.height/2),this.valid&&this.textureBuffer.resize(this.width,this.height))},b.RenderTexture.prototype.clear=function(){this.valid&&(this.renderer.type===b.WEBGL_RENDERER&&this.renderer.gl.bindFramebuffer(this.renderer.gl.FRAMEBUFFER,this.textureBuffer.frameBuffer),this.textureBuffer.clear())},b.RenderTexture.prototype.renderWebGL=function(a,b,c){if(this.valid&&0!==a.alpha){var d=a.worldTransform;d.identity(),d.translate(0,2*this.projection.y),b&&d.append(b),d.scale(1,-1);for(var e=0;ea;a++)this.shaders[a].dirty=!0},b.Strip=function(a){b.DisplayObjectContainer.call(this),this.texture=a,this.uvs=new b.Float32Array([0,1,1,1,1,0,0,1]),this.vertices=new b.Float32Array([0,0,100,0,100,100,0,100]),this.colors=new b.Float32Array([1,1,1,1]),this.indices=new b.Uint16Array([0,1,2,3]),this.dirty=!0,this.blendMode=b.blendModes.NORMAL,this.canvasPadding=0,this.drawMode=b.Strip.DrawModes.TRIANGLE_STRIP},b.Strip.prototype=Object.create(b.DisplayObjectContainer.prototype),b.Strip.prototype.constructor=b.Strip,b.Strip.prototype._renderWebGL=function(a){!this.visible||this.alpha<=0||(a.spriteBatch.stop(),this._vertexBuffer||this._initWebGL(a),a.shaderManager.setShader(a.shaderManager.stripShader),this._renderStrip(a),a.spriteBatch.start())},b.Strip.prototype._initWebGL=function(a){var b=a.gl;this._vertexBuffer=b.createBuffer(),this._indexBuffer=b.createBuffer(),this._uvBuffer=b.createBuffer(),this._colorBuffer=b.createBuffer(),b.bindBuffer(b.ARRAY_BUFFER,this._vertexBuffer),b.bufferData(b.ARRAY_BUFFER,this.vertices,b.DYNAMIC_DRAW),b.bindBuffer(b.ARRAY_BUFFER,this._uvBuffer),b.bufferData(b.ARRAY_BUFFER,this.uvs,b.STATIC_DRAW),b.bindBuffer(b.ARRAY_BUFFER,this._colorBuffer),b.bufferData(b.ARRAY_BUFFER,this.colors,b.STATIC_DRAW),b.bindBuffer(b.ELEMENT_ARRAY_BUFFER,this._indexBuffer),b.bufferData(b.ELEMENT_ARRAY_BUFFER,this.indices,b.STATIC_DRAW)},b.Strip.prototype._renderStrip=function(a){var c=a.gl,d=a.projection,e=a.offset,f=a.shaderManager.stripShader,g=this.drawMode===b.Strip.DrawModes.TRIANGLE_STRIP?c.TRIANGLE_STRIP:c.TRIANGLES;a.blendModeManager.setBlendMode(this.blendMode),c.uniformMatrix3fv(f.translationMatrix,!1,this.worldTransform.toArray(!0)),c.uniform2f(f.projectionVector,d.x,-d.y),c.uniform2f(f.offsetVector,-e.x,-e.y),c.uniform1f(f.alpha,this.worldAlpha),this.dirty?(this.dirty=!1,c.bindBuffer(c.ARRAY_BUFFER,this._vertexBuffer),c.bufferData(c.ARRAY_BUFFER,this.vertices,c.STATIC_DRAW),c.vertexAttribPointer(f.aVertexPosition,2,c.FLOAT,!1,0,0),c.bindBuffer(c.ARRAY_BUFFER,this._uvBuffer),c.bufferData(c.ARRAY_BUFFER,this.uvs,c.STATIC_DRAW),c.vertexAttribPointer(f.aTextureCoord,2,c.FLOAT,!1,0,0),c.activeTexture(c.TEXTURE0),this.texture.baseTexture._dirty[c.id]?a.renderer.updateTexture(this.texture.baseTexture):c.bindTexture(c.TEXTURE_2D,this.texture.baseTexture._glTextures[c.id]),c.bindBuffer(c.ELEMENT_ARRAY_BUFFER,this._indexBuffer),c.bufferData(c.ELEMENT_ARRAY_BUFFER,this.indices,c.STATIC_DRAW)):(c.bindBuffer(c.ARRAY_BUFFER,this._vertexBuffer),c.bufferSubData(c.ARRAY_BUFFER,0,this.vertices),c.vertexAttribPointer(f.aVertexPosition,2,c.FLOAT,!1,0,0),c.bindBuffer(c.ARRAY_BUFFER,this._uvBuffer),c.vertexAttribPointer(f.aTextureCoord,2,c.FLOAT,!1,0,0),c.activeTexture(c.TEXTURE0),this.texture.baseTexture._dirty[c.id]?a.renderer.updateTexture(this.texture.baseTexture):c.bindTexture(c.TEXTURE_2D,this.texture.baseTexture._glTextures[c.id]),c.bindBuffer(c.ELEMENT_ARRAY_BUFFER,this._indexBuffer)),c.drawElements(g,this.indices.length,c.UNSIGNED_SHORT,0)},b.Strip.prototype._renderCanvas=function(a){var c=a.context,d=this.worldTransform,e=d.tx*a.resolution+a.shakeX,f=d.ty*a.resolution+a.shakeY;a.roundPixels?c.setTransform(d.a,d.b,d.c,d.d,0|e,0|f):c.setTransform(d.a,d.b,d.c,d.d,e,f),this.drawMode===b.Strip.DrawModes.TRIANGLE_STRIP?this._renderCanvasTriangleStrip(c):this._renderCanvasTriangles(c)},b.Strip.prototype._renderCanvasTriangleStrip=function(a){var b=this.vertices,c=this.uvs,d=b.length/2;this.count++;for(var e=0;d-2>e;e++){var f=2*e;this._renderCanvasDrawTriangle(a,b,c,f,f+2,f+4)}},b.Strip.prototype._renderCanvasTriangles=function(a){var b=this.vertices,c=this.uvs,d=this.indices,e=d.length;this.count++;for(var f=0;e>f;f+=3){var g=2*d[f],h=2*d[f+1],i=2*d[f+2];this._renderCanvasDrawTriangle(a,b,c,g,h,i)}},b.Strip.prototype._renderCanvasDrawTriangle=function(a,b,c,d,e,f){var g=this.texture.baseTexture.source,h=this.texture.width,i=this.texture.height,j=b[d],k=b[e],l=b[f],m=b[d+1],n=b[e+1],o=b[f+1],p=c[d]*h,q=c[e]*h,r=c[f]*h,s=c[d+1]*i,t=c[e+1]*i,u=c[f+1]*i;if(this.canvasPadding>0){var v=this.canvasPadding/this.worldTransform.a,w=this.canvasPadding/this.worldTransform.d,x=(j+k+l)/3,y=(m+n+o)/3,z=j-x,A=m-y,B=Math.sqrt(z*z+A*A);j=x+z/B*(B+v),m=y+A/B*(B+w),z=k-x,A=n-y,B=Math.sqrt(z*z+A*A),k=x+z/B*(B+v),n=y+A/B*(B+w),z=l-x,A=o-y,B=Math.sqrt(z*z+A*A),l=x+z/B*(B+v),o=y+A/B*(B+w)}a.save(),a.beginPath(),a.moveTo(j,m),a.lineTo(k,n),a.lineTo(l,o),a.closePath(),a.clip();var C=p*t+s*r+q*u-t*r-s*q-p*u,D=j*t+s*l+k*u-t*l-s*k-j*u,E=p*k+j*r+q*l-k*r-j*q-p*l,F=p*t*l+s*k*r+j*q*u-j*t*r-s*q*l-p*k*u,G=m*t+s*o+n*u-t*o-s*n-m*u,H=p*n+m*r+q*o-n*r-m*q-p*o,I=p*t*o+s*n*r+m*q*u-m*t*r-s*q*o-p*n*u;a.transform(D/C,G/C,E/C,H/C,F/C,I/C),a.drawImage(g,0,0),a.restore()},b.Strip.prototype.renderStripFlat=function(a){var b=this.context,c=a.vertices,d=c.length/2;this.count++,b.beginPath();for(var e=1;d-2>e;e++){var f=2*e,g=c[f],h=c[f+2],i=c[f+4],j=c[f+1],k=c[f+3],l=c[f+5];b.moveTo(g,j),b.lineTo(h,k),b.lineTo(i,l)}b.fillStyle="#FF0000",b.fill(),b.closePath()},b.Strip.prototype.onTextureUpdate=function(){this.updateFrame=!0},b.Strip.prototype.getBounds=function(a){for(var c=a||this.worldTransform,d=c.a,e=c.b,f=c.c,g=c.d,h=c.tx,i=c.ty,j=-(1/0),k=-(1/0),l=1/0,m=1/0,n=this.vertices,o=0,p=n.length;p>o;o+=2){var q=n[o],r=n[o+1],s=d*q+f*r+h,t=g*r+e*q+i;l=l>s?s:l,m=m>t?t:m,j=s>j?s:j,k=t>k?t:k}if(l===-(1/0)||k===1/0)return b.EmptyRectangle;var u=this._bounds;return u.x=l,u.width=j-l,u.y=m,u.height=k-m,this._currentBounds=u,u},b.Strip.DrawModes={TRIANGLE_STRIP:0,TRIANGLES:1},b.Rope=function(a,c){b.Strip.call(this,a),this.points=c,this.vertices=new b.Float32Array(4*c.length),this.uvs=new b.Float32Array(4*c.length),this.colors=new b.Float32Array(2*c.length),this.indices=new b.Uint16Array(2*c.length),this.refresh()},b.Rope.prototype=Object.create(b.Strip.prototype),b.Rope.prototype.constructor=b.Rope,b.Rope.prototype.refresh=function(){var a=this.points;if(!(a.length<1)){var b=this.uvs,c=a[0],d=this.indices,e=this.colors;this.count-=.2,b[0]=0,b[1]=0,b[2]=0,b[3]=1,e[0]=1,e[1]=1,d[0]=0,d[1]=1;for(var f,g,h,i=a.length,j=1;i>j;j++)f=a[j],g=4*j,h=j/(i-1),j%2?(b[g]=h,b[g+1]=0,b[g+2]=h,b[g+3]=1):(b[g]=h,b[g+1]=0,b[g+2]=h,b[g+3]=1),g=2*j,e[g]=1,e[g+1]=1,g=2*j,d[g]=g,d[g+1]=g+1,c=f}},b.Rope.prototype.updateTransform=function(){var a=this.points;if(!(a.length<1)){var c,d=a[0],e={x:0,y:0};this.count-=.2;for(var f,g,h,i,j,k=this.vertices,l=a.length,m=0;l>m;m++)f=a[m],g=4*m,c=m1&&(h=1),i=Math.sqrt(e.x*e.x+e.y*e.y),j=this.texture.height/2,e.x/=i,e.y/=i,e.x*=j,e.y*=j,k[g]=f.x+e.x,k[g+1]=f.y+e.y,k[g+2]=f.x-e.x,k[g+3]=f.y-e.y,d=f;b.DisplayObjectContainer.prototype.updateTransform.call(this)}},b.Rope.prototype.setTexture=function(a){this.texture=a},b.TilingSprite=function(a,c,d){b.Sprite.call(this,a),this._width=c||128,this._height=d||128,this.tileScale=new b.Point(1,1),this.tileScaleOffset=new b.Point(1,1),this.tilePosition=new b.Point,this.renderable=!0,this.tint=16777215,this.textureDebug=!1,this.blendMode=b.blendModes.NORMAL,this.canvasBuffer=null,this.tilingTexture=null,this.tilePattern=null,this.refreshTexture=!0,this.frameWidth=0,this.frameHeight=0},b.TilingSprite.prototype=Object.create(b.Sprite.prototype),b.TilingSprite.prototype.constructor=b.TilingSprite,b.TilingSprite.prototype.setTexture=function(a){this.texture!==a&&(this.texture=a,this.refreshTexture=!0,this.cachedTint=16777215)},b.TilingSprite.prototype._renderWebGL=function(a){if(this.visible&&this.renderable&&0!==this.alpha){if(this._mask&&(a.spriteBatch.stop(),a.maskManager.pushMask(this.mask,a),a.spriteBatch.start()),this._filters&&(a.spriteBatch.flush(),a.filterManager.pushFilter(this._filterBlock)),this.refreshTexture){if(this.generateTilingTexture(!0,a),!this.tilingTexture)return;this.tilingTexture.needsUpdate&&(a.renderer.updateTexture(this.tilingTexture.baseTexture),this.tilingTexture.needsUpdate=!1)}a.spriteBatch.renderTilingSprite(this);for(var b=0;bn?n:x,x=x>p?p:x,x=x>r?r:x,x=x>t?t:x,y=y>o?o:y,y=y>q?q:y,y=y>s?s:y,y=y>u?u:y,v=n>v?n:v,v=p>v?p:v,v=r>v?r:v,v=t>v?t:v,w=o>w?o:w,w=q>w?q:w,w=s>w?s:w,w=u>w?u:w;var z=this._bounds;return z.x=x,z.width=v-x,z.y=y,z.height=w-y,this._currentBounds=z,z},b.TilingSprite.prototype.destroy=function(){b.Sprite.prototype.destroy.call(this),this.canvasBuffer&&(this.canvasBuffer.destroy(),this.canvasBuffer=null),this.tileScale=null,this.tileScaleOffset=null,this.tilePosition=null,this.tilingTexture&&(this.tilingTexture.destroy(!0),this.tilingTexture=null)},Object.defineProperty(b.TilingSprite.prototype,"width",{get:function(){return this._width},set:function(a){this._width=a}}),Object.defineProperty(b.TilingSprite.prototype,"height",{get:function(){return this._height},set:function(a){this._height=a}}),"undefined"!=typeof exports?("undefined"!=typeof module&&module.exports&&(exports=module.exports=b),exports.PIXI=b):"undefined"!=typeof define&&define.amd?define("PIXI",function(){return a.PIXI=b}()):a.PIXI=b,b}).call(this); //# sourceMappingURL=pixi.map \ No newline at end of file diff --git a/docs/PIXI.AbstractFilter.html b/docs/PIXI.AbstractFilter.html index f44e0afef..160f15178 100644 --- a/docs/PIXI.AbstractFilter.html +++ b/docs/PIXI.AbstractFilter.html @@ -708,10 +708,6 @@ ComplexPrimitiveShader -
  • - DisplayObject -
  • -
  • DisplayObjectContainer
  • @@ -744,6 +740,10 @@ PIXI +
  • + DisplayObject +
  • +
  • PixiFastShader
  • @@ -1601,7 +1601,7 @@ If you want to make a custom filter this should be your base class.

    Documentation generated by JSDoc 3.3.3 - on Fri Jun 17 2016 12:45:41 GMT+0100 (BST) using the DocStrap template. + on Fri Jul 08 2016 15:42:45 GMT+0100 (GMT Daylight Time) using the DocStrap template. diff --git a/docs/PIXI.BaseTexture.html b/docs/PIXI.BaseTexture.html index ba497a17e..d3431d514 100644 --- a/docs/PIXI.BaseTexture.html +++ b/docs/PIXI.BaseTexture.html @@ -708,10 +708,6 @@ ComplexPrimitiveShader -
  • - DisplayObject -
  • -
  • DisplayObjectContainer
  • @@ -744,6 +740,10 @@ PIXI +
  • + DisplayObject +
  • +
  • PixiFastShader
  • @@ -1290,6 +1290,9 @@ String +| + +Canvas @@ -1355,7 +1358,7 @@
    Source - - pixi/textures/BaseTexture.js, line 9 + pixi/textures/BaseTexture.js, line 5
    @@ -1435,7 +1438,7 @@
    Source - - pixi/textures/BaseTexture.js, line 55 + pixi/textures/BaseTexture.js, line 51
    @@ -1491,59 +1494,7 @@
    Source - - pixi/textures/BaseTexture.js, line 37 -
    - - - - - - - - - - - - - - - -
    -

    imageUrl :String

    - - -
    -
    - - - - - - - -
    - - - - - - - - - - - - - - - - - - - -
    Source - - pixi/textures/BaseTexture.js, line 132 + pixi/textures/BaseTexture.js, line 33
    @@ -1600,7 +1551,7 @@ Also the texture must be a power of two size to work

    Source - - pixi/textures/BaseTexture.js, line 92 + pixi/textures/BaseTexture.js, line 86
    @@ -1659,7 +1610,7 @@ Also the texture must be a power of two size to work

    Source - - pixi/textures/BaseTexture.js, line 74 + pixi/textures/BaseTexture.js, line 68
    @@ -1715,7 +1666,7 @@ Also the texture must be a power of two size to work

    Source - - pixi/textures/BaseTexture.js, line 20 + pixi/textures/BaseTexture.js, line 16
    @@ -1774,7 +1725,7 @@ Also the texture must be a power of two size to work

    Source - - pixi/textures/BaseTexture.js, line 46 + pixi/textures/BaseTexture.js, line 42
    @@ -1832,7 +1783,7 @@ that has children that you do want to render, without causing a batch flush in t
    Source - - pixi/textures/BaseTexture.js, line 121 + pixi/textures/BaseTexture.js, line 115
    @@ -1888,7 +1839,7 @@ that has children that you do want to render, without causing a batch flush in t
    Source - - pixi/textures/BaseTexture.js, line 64 + pixi/textures/BaseTexture.js, line 60
    @@ -1944,7 +1895,7 @@ that has children that you do want to render, without causing a batch flush in t
    Source - - pixi/textures/BaseTexture.js, line 28 + pixi/textures/BaseTexture.js, line 24
    @@ -2104,193 +2055,7 @@ that has children that you do want to render, without causing a batch flush in t
    Source - - pixi/textures/BaseTexture.js, line 295 -
    - - - - - - - -
    - - - - - - - - - - - -
    - - - -
    -

    <static> fromImage(imageUrl, crossorigin, scaleMode) → {PIXI.BaseTexture}

    - - -
    -
    - - - -
    -

    Helper function that creates a base texture from the given image url. -If the image is not in the base texture cache it will be created and loaded.

    -
    - - - - - - - -
    Parameters:
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    NameTypeDescription
    imageUrl - - -String - - - -

    The image url of the texture

    crossorigin - - -Boolean - - - -

    -

    scaleMode - - -Number - - - -

    See {{#crossLink "PIXI/scaleModes:property"}}PIXI.scaleModes{{/crossLink}} for possible values

    - - - - -
    Returns:
    -
    - - - -
    - -PIXI.BaseTexture - - - -
    - -
    - -
    - - - -
    - - - -
    - - - - - - - - - - - - - - - - - - - -
    Source - - pixi/textures/BaseTexture.js, line 252 + pixi/textures/BaseTexture.js, line 224
    @@ -2360,7 +2125,7 @@ If the image is not in the base texture cache it will be created and loaded.

    Source - - pixi/textures/BaseTexture.js, line 167 + pixi/textures/BaseTexture.js, line 154
    @@ -2430,7 +2195,7 @@ If the image is not in the base texture cache it will be created and loaded.

    Source - - pixi/textures/BaseTexture.js, line 211 + pixi/textures/BaseTexture.js, line 183
    @@ -2578,7 +2343,7 @@ Important for when you don't want to modify the source object by forcing in Source - - pixi/textures/BaseTexture.js, line 149 + pixi/textures/BaseTexture.js, line 137 @@ -2649,7 +2414,7 @@ Atexture is still 100% usable and will simply be reuploaded if there is a sprite
    Source - - pixi/textures/BaseTexture.js, line 224 + pixi/textures/BaseTexture.js, line 196
    @@ -2675,13 +2440,17 @@ Atexture is still 100% usable and will simply be reuploaded if there is a sprite
    -

    updateSourceImage(newSrc)

    +
    + This method is deprecated and should not be used. It may be removed in the future. +
    +
    @@ -2757,6 +2526,13 @@ Atexture is still 100% usable and will simply be reuploaded if there is a sprite +
    Deprecated:
    +
      + + +
    • true
    • +
    + @@ -2768,7 +2544,7 @@ Atexture is still 100% usable and will simply be reuploaded if there is a sprite
    Source - - pixi/textures/BaseTexture.js, line 198 + pixi/textures/BaseTexture.js, line 171
    @@ -2817,7 +2593,7 @@ Atexture is still 100% usable and will simply be reuploaded if there is a sprite Documentation generated by JSDoc 3.3.3 - on Fri Jun 17 2016 12:45:41 GMT+0100 (BST) using the DocStrap template. + on Fri Jul 08 2016 15:42:45 GMT+0100 (GMT Daylight Time) using the DocStrap template.
    diff --git a/docs/PIXI.CanvasBuffer.html b/docs/PIXI.CanvasBuffer.html index e7d84d570..e9c08ac23 100644 --- a/docs/PIXI.CanvasBuffer.html +++ b/docs/PIXI.CanvasBuffer.html @@ -708,10 +708,6 @@ ComplexPrimitiveShader -
  • - DisplayObject -
  • -
  • DisplayObjectContainer
  • @@ -744,6 +740,10 @@ PIXI +
  • + DisplayObject +
  • +
  • PixiFastShader
  • @@ -1862,7 +1862,7 @@ Documentation generated by JSDoc 3.3.3 - on Fri Jun 17 2016 12:45:41 GMT+0100 (BST) using the DocStrap template. + on Fri Jul 08 2016 15:42:45 GMT+0100 (GMT Daylight Time) using the DocStrap template. diff --git a/docs/PIXI.CanvasGraphics.html b/docs/PIXI.CanvasGraphics.html index e70013339..dcf9d23d8 100644 --- a/docs/PIXI.CanvasGraphics.html +++ b/docs/PIXI.CanvasGraphics.html @@ -708,10 +708,6 @@ ComplexPrimitiveShader -
  • - DisplayObject -
  • -
  • DisplayObjectContainer
  • @@ -744,6 +740,10 @@ PIXI +
  • + DisplayObject +
  • +
  • PixiFastShader
  • @@ -1346,7 +1346,7 @@ Documentation generated by JSDoc 3.3.3 - on Fri Jun 17 2016 12:45:41 GMT+0100 (BST) using the DocStrap template. + on Fri Jul 08 2016 15:42:45 GMT+0100 (GMT Daylight Time) using the DocStrap template. diff --git a/docs/PIXI.CanvasMaskManager.html b/docs/PIXI.CanvasMaskManager.html index 5249e63f1..18bfa0026 100644 --- a/docs/PIXI.CanvasMaskManager.html +++ b/docs/PIXI.CanvasMaskManager.html @@ -708,10 +708,6 @@ ComplexPrimitiveShader -
  • - DisplayObject -
  • -
  • DisplayObjectContainer
  • @@ -744,6 +740,10 @@ PIXI +
  • + DisplayObject +
  • +
  • PixiFastShader
  • @@ -1611,7 +1611,7 @@ Documentation generated by JSDoc 3.3.3 - on Fri Jun 17 2016 12:45:41 GMT+0100 (BST) using the DocStrap template. + on Fri Jul 08 2016 15:42:45 GMT+0100 (GMT Daylight Time) using the DocStrap template. diff --git a/docs/PIXI.CanvasPool.html b/docs/PIXI.CanvasPool.html index c2fb306d1..748d84db2 100644 --- a/docs/PIXI.CanvasPool.html +++ b/docs/PIXI.CanvasPool.html @@ -708,10 +708,6 @@ ComplexPrimitiveShader -
  • - DisplayObject -
  • -
  • DisplayObjectContainer
  • @@ -744,6 +740,10 @@ PIXI +
  • + DisplayObject +
  • +
  • PixiFastShader
  • @@ -1363,7 +1363,7 @@
    Source - - pixi/utils/CanvasPool.js, line 173 + pixi/utils/CanvasPool.js, line 177
    @@ -1721,7 +1721,7 @@
    Source - - pixi/utils/CanvasPool.js, line 147 + pixi/utils/CanvasPool.js, line 151
    @@ -1811,7 +1811,7 @@
    Source - - pixi/utils/CanvasPool.js, line 123 + pixi/utils/CanvasPool.js, line 127
    @@ -2044,7 +2044,7 @@
    Source - - pixi/utils/CanvasPool.js, line 102 + pixi/utils/CanvasPool.js, line 104
    @@ -2093,7 +2093,7 @@ Documentation generated by JSDoc 3.3.3 - on Fri Jun 17 2016 12:45:41 GMT+0100 (BST) using the DocStrap template. + on Fri Jul 08 2016 15:42:45 GMT+0100 (GMT Daylight Time) using the DocStrap template. diff --git a/docs/PIXI.CanvasRenderer.html b/docs/PIXI.CanvasRenderer.html index 2d80aa256..760956455 100644 --- a/docs/PIXI.CanvasRenderer.html +++ b/docs/PIXI.CanvasRenderer.html @@ -708,10 +708,6 @@ ComplexPrimitiveShader -
  • - DisplayObject -
  • -
  • DisplayObjectContainer
  • @@ -744,6 +740,10 @@ PIXI +
  • + DisplayObject +
  • +
  • PixiFastShader
  • @@ -2593,7 +2593,7 @@ Disable this by setting this to false. For example if your game has a canvas fil Documentation generated by JSDoc 3.3.3 - on Fri Jun 17 2016 12:45:41 GMT+0100 (BST) using the DocStrap template. + on Fri Jul 08 2016 15:42:46 GMT+0100 (GMT Daylight Time) using the DocStrap template. diff --git a/docs/PIXI.CanvasTinter.html b/docs/PIXI.CanvasTinter.html index 9aff7160b..241652d51 100644 --- a/docs/PIXI.CanvasTinter.html +++ b/docs/PIXI.CanvasTinter.html @@ -708,10 +708,6 @@ ComplexPrimitiveShader -
  • - DisplayObject -
  • -
  • DisplayObjectContainer
  • @@ -744,6 +740,10 @@ PIXI +
  • + DisplayObject +
  • +
  • PixiFastShader
  • @@ -2099,7 +2099,7 @@ This property is only applicable if using tintWithPerPixel.

    Documentation generated by JSDoc 3.3.3 - on Fri Jun 17 2016 12:45:41 GMT+0100 (BST) using the DocStrap template. + on Fri Jul 08 2016 15:42:46 GMT+0100 (GMT Daylight Time) using the DocStrap template. diff --git a/docs/PIXI.ComplexPrimitiveShader.html b/docs/PIXI.ComplexPrimitiveShader.html index 698c4a234..2fce84ac0 100644 --- a/docs/PIXI.ComplexPrimitiveShader.html +++ b/docs/PIXI.ComplexPrimitiveShader.html @@ -708,10 +708,6 @@ ComplexPrimitiveShader -
  • - DisplayObject -
  • -
  • DisplayObjectContainer
  • @@ -744,6 +740,10 @@ PIXI +
  • + DisplayObject +
  • +
  • PixiFastShader
  • @@ -1759,7 +1759,7 @@ Documentation generated by JSDoc 3.3.3 - on Fri Jun 17 2016 12:45:41 GMT+0100 (BST) using the DocStrap template. + on Fri Jul 08 2016 15:42:46 GMT+0100 (GMT Daylight Time) using the DocStrap template. diff --git a/docs/PIXI.DisplayObjectContainer.html b/docs/PIXI.DisplayObjectContainer.html index 3483e3aa8..391d55cd7 100644 --- a/docs/PIXI.DisplayObjectContainer.html +++ b/docs/PIXI.DisplayObjectContainer.html @@ -708,10 +708,6 @@ ComplexPrimitiveShader -
  • - DisplayObject -
  • -
  • DisplayObjectContainer
  • @@ -744,6 +740,10 @@ PIXI +
  • + DisplayObject +
  • +
  • PixiFastShader
  • @@ -1314,7 +1314,7 @@ It is the base class of all display objects that act as a container for other ob

    Extends

    @@ -1331,130 +1331,6 @@ It is the base class of all display objects that act as a container for other ob
    -
    -

    alpha :Number

    - - -
    -
    - - - -
    -

    The opacity of the object.

    -
    - - - - - -
    - - - - - - - -
    Inherited From:
    -
    - - - - - - - - - - - - - -
    Source - - pixi/display/DisplayObject.js, line 46 -
    - - - - - - - -
    - - - -
    - - - -
    -

    cacheAsBitmap :Boolean

    - - -
    -
    - - - -
    -

    Set if this display object is cached as a bitmap. -This basically takes a snap shot of the display object as it is at that moment. It can provide a performance benefit for complex static displayObjects. -To remove simply set this property to 'null'

    -
    - - - - - -
    - - - - - - - -
    Inherited From:
    -
    - - - - - - - - - - - - - -
    Source - - pixi/display/DisplayObject.js, line 355 -
    - - - - - - - -
    - - - -
    - - -

    <readonly> children :Array.<DisplayObject>

    @@ -1513,143 +1389,6 @@ To remove simply set this property to 'null'

    -
    - - - -
    - - - -
    -

    filterArea :Rectangle

    - - -
    -
    - - - -
    -

    The area the filter is applied to like the hitArea this is used as more of an optimisation -rather than figuring out the dimensions of the displayObject each frame you can set this rectangle

    -
    - - - - - -
    - - - - - - - -
    Inherited From:
    -
    - - - - - - - - - - - - - -
    Source - - pixi/display/DisplayObject.js, line 164 -
    - - - - - - - -
    - - - -
    - - - -
    -

    filters :Array.<Filter>

    - - -
    -
    - - - -
    -

    Sets the filters for the displayObject. -IMPORTANT: This is a webGL only feature and will be ignored by the Canvas renderer.

    -

    To remove filters simply set this property to 'null'.

    -

    You cannot have a filter and a multiply blend mode active at the same time. Setting a filter will reset -this objects blend mode to NORMAL.

    -
    - - - -
    Type:
    -
      -
    • - -Array.<Filter> - - -
    • -
    - - - -
    - - - - - - - -
    Inherited From:
    -
    - - - - - - - - - - - - - -
    Source - - pixi/display/DisplayObject.js, line 307 -
    - - - - - - -
    @@ -1706,87 +1445,6 @@ this objects blend mode to NORMAL.

    - - - - -
    - - - -
    -

    hitArea :Rectangle|Circle|Ellipse|Polygon

    - - -
    -
    - - - -
    -

    This is the defined area that will pick up mouse / touch events. It is null by default. -Setting it is a neat way of optimising the hitTest function that the interactionManager will use (as it will not need to hit test all the children)

    -
    - - - -
    Type:
    -
      -
    • - -Rectangle -| - -Circle -| - -Ellipse -| - -Polygon - - -
    • -
    - - - -
    - - - - - - - -
    Inherited From:
    -
    - - - - - - - - - - - - - -
    Source - - pixi/display/DisplayObject.js, line 62 -
    - - - - - - -
    @@ -1845,557 +1503,6 @@ Setting it is a neat way of optimising the hitTest function that the interaction - - - - -
    - - - -
    -

    mask :PIXI.Graphics

    - - -
    -
    - - - -
    -

    Sets a mask for the displayObject. A mask is an object that limits the visibility of an object to the shape of the mask applied to it. -In PIXI a regular mask must be a PIXI.Graphics object. This allows for much faster masking in canvas as it utilises shape clipping. -To remove a mask, set this property to null.

    -
    - - - - - -
    - - - - - - - -
    Inherited From:
    -
    - - - - - - - - - - - - - -
    Source - - pixi/display/DisplayObject.js, line 282 -
    - - - - - - - -
    - - - -
    - - - -
    -

    <readonly> parent :PIXI.DisplayObjectContainer

    - - -
    -
    - - - -
    -

    [read-only] The display object container that contains this display object.

    -
    - - - - - -
    - - - - - - - -
    Inherited From:
    -
    - - - - - - - - - - - - - -
    Source - - pixi/display/DisplayObject.js, line 79 -
    - - - - - - - -
    - - - -
    - - - -
    -

    pivot :Point

    - - -
    -
    - - - -
    -

    The pivot point of the displayObject that it rotates around

    -
    - - - - - -
    - - - - - - - -
    Inherited From:
    -
    - - - - - - - - - - - - - -
    Source - - pixi/display/DisplayObject.js, line 30 -
    - - - - - - - -
    - - - -
    - - - -
    -

    position :Point

    - - -
    -
    - - - -
    -

    The coordinate of the object relative to the local coordinates of the parent.

    -
    - - - - - -
    - - - - - - - -
    Inherited From:
    -
    - - - - - - - - - - - - - -
    Source - - pixi/display/DisplayObject.js, line 14 -
    - - - - - - - -
    - - - -
    - - - -
    -

    renderable :Boolean

    - - -
    -
    - - - -
    -

    Can this object be rendered

    -
    - - - - - -
    - - - - - - - -
    Inherited From:
    -
    - - - - - - - - - - - - - -
    Source - - pixi/display/DisplayObject.js, line 71 -
    - - - - - - - -
    - - - -
    - - - -
    -

    rotation :Number

    - - -
    -
    - - - -
    -

    The rotation of the object in radians.

    -
    - - - - - -
    - - - - - - - -
    Inherited From:
    -
    - - - - - - - - - - - - - -
    Source - - pixi/display/DisplayObject.js, line 38 -
    - - - - - - - -
    - - - -
    - - - -
    -

    scale :Point

    - - -
    -
    - - - -
    -

    The scale factor of the object.

    -
    - - - - - -
    - - - - - - - -
    Inherited From:
    -
    - - - - - - - - - - - - - -
    Source - - pixi/display/DisplayObject.js, line 22 -
    - - - - - - - -
    - - - -
    - - - -
    -

    <readonly> stage :Stage

    - - -
    -
    - - - -
    -

    [read-only] The stage the display object is connected to, or undefined if it is not connected to the stage.

    -
    - - - - - -
    - - - - - - - -
    Inherited From:
    -
    - - - - - - - - - - - - - -
    Source - - pixi/display/DisplayObject.js, line 88 -
    - - - - - - - -
    - - - -
    - - - -
    -

    visible :Boolean

    - - -
    -
    - - - -
    -

    The visibility of the object.

    -
    - - - - - -
    - - - - - - - -
    Inherited From:
    -
    - - - - - - - - - - - - - -
    Source - - pixi/display/DisplayObject.js, line 54 -
    - - - - - - -
    @@ -2452,436 +1559,6 @@ To remove a mask, set this property to null.

    - - - - -
    - - - -
    -

    <readonly> worldAlpha :Number

    - - -
    -
    - - - -
    -

    [read-only] The multiplied alpha of the displayObject

    -
    - - - - - -
    - - - - - - - -
    Inherited From:
    -
    - - - - - - - - - - - - - -
    Source - - pixi/display/DisplayObject.js, line 97 -
    - - - - - - - -
    - - - -
    - - - -
    -

    <readonly> worldPosition :Point

    - - -
    -
    - - - -
    -

    The position of the Display Object based on the world transform. -This value is updated at the end of updateTransform and takes all parent transforms into account.

    -
    - - - - - -
    - - - - - - - -
    Inherited From:
    -
    - - - - - - - - - - - - - -
    Source - - pixi/display/DisplayObject.js, line 116 -
    - - - - - - - -
    - - - -
    - - - -
    -

    <readonly> worldRotation :Number

    - - -
    -
    - - - -
    -

    The rotation of the Display Object, in radians, based on the world transform. -This value is updated at the end of updateTransform and takes all parent transforms into account.

    -
    - - - - - -
    - - - - - - - -
    Inherited From:
    -
    - - - - - - - - - - - - - -
    Source - - pixi/display/DisplayObject.js, line 136 -
    - - - - - - - -
    - - - -
    - - - -
    -

    <readonly> worldScale :Point

    - - -
    -
    - - - -
    -

    The scale of the Display Object based on the world transform. -This value is updated at the end of updateTransform and takes all parent transforms into account.

    -
    - - - - - -
    - - - - - - - -
    Inherited From:
    -
    - - - - - - - - - - - - - -
    Source - - pixi/display/DisplayObject.js, line 126 -
    - - - - - - - -
    - - - -
    - - - -
    -

    worldVisible :Boolean

    - - -
    -
    - - - -
    -

    [read-only] Indicates if the sprite is globally visible.

    -
    - - - - - -
    - - - - - - - -
    Inherited From:
    -
    - - - - - - - - - - - - - -
    Source - - pixi/display/DisplayObject.js, line 258 -
    - - - - - - - -
    - - - -
    - - - -
    -

    x :Number

    - - -
    -
    - - - -
    -

    The position of the displayObject on the x axis relative to the local coordinates of the parent.

    -
    - - - - - -
    - - - - - - - -
    Inherited From:
    -
    - - - - - - - - - - - - - -
    Source - - pixi/display/DisplayObject.js, line 722 -
    - - - - - - - -
    - - - -
    - - - -
    -

    y :Number

    - - -
    -
    - - - -
    -

    The position of the displayObject on the y axis relative to the local coordinates of the parent.

    -
    - - - - - -
    - - - - - - - -
    Inherited From:
    -
    - - - - - - - - - - - - - -
    Source - - pixi/display/DisplayObject.js, line 740 -
    - - - - - - -
    @@ -2898,7 +1575,7 @@ This value is updated at the end of updateTransform and takes all parent transfo

    addChild(child) → {PIXI.DisplayObject}

    + id="addChild">addChild(child) → {DisplayObject}
    @@ -2947,7 +1624,7 @@ This value is updated at the end of updateTransform and takes all parent transfo -PIXI.DisplayObject +DisplayObject @@ -2974,7 +1651,7 @@ This value is updated at the end of updateTransform and takes all parent transfo @@ -3037,7 +1714,7 @@ This value is updated at the end of updateTransform and takes all parent transfo

    addChildAt(child, index) → {PIXI.DisplayObject}

    + id="addChildAt">addChildAt(child, index) → {DisplayObject}
    @@ -3086,7 +1763,7 @@ This value is updated at the end of updateTransform and takes all parent transfo -PIXI.DisplayObject +DisplayObject @@ -3136,7 +1813,7 @@ This value is updated at the end of updateTransform and takes all parent transfo @@ -3193,276 +1870,6 @@ This value is updated at the end of updateTransform and takes all parent transfo - - - - -
    -

    destroy()

    - - -
    -
    - - - -
    -

    Destroy this DisplayObject. -Removes all references to transformCallbacks, its parent, the stage, filters, bounds, mask and cached Sprites.

    -
    - - - - - - - - - - - -
    - - - - - - - -
    Inherited From:
    -
    - - - - - - - - - - - - - -
    Source - - pixi/display/DisplayObject.js, line 223 -
    - - - - - - - -
    - - - - - - - - - - - -
    - - - -
    -

    generateTexture(resolution, scaleMode, renderer) → {PIXI.RenderTexture}

    - - -
    -
    - - - -
    -

    Useful function that returns a texture of the displayObject object that can then be used to create sprites -This can be quite useful if your displayObject is static / complicated and needs to be reused multiple times.

    -
    - - - - - - - -
    Parameters:
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    NameTypeDescription
    resolution - - -Number - - - -

    The resolution of the texture being generated

    scaleMode - - -Number - - - -

    See {{#crossLink "PIXI/scaleModes:property"}}PIXI.scaleModes{{/crossLink}} for possible values

    renderer - - -PIXI.CanvasRenderer -| - -PIXI.WebGLRenderer - - - -

    The renderer used to generate the texture.

    - - - - -
    Returns:
    -
    - - - -
    - -PIXI.RenderTexture - - - -
    - -
    -

    a texture of the graphics object

    -
    - - - -
    - - - -
    - - - - - - - -
    Inherited From:
    -
    - - - - - - - - - - - - - -
    Source - - pixi/display/DisplayObject.js, line 541 -
    - - - - - - - -
    - - - - - - - - - - -
    @@ -3559,7 +1966,7 @@ This can be quite useful if your displayObject is static / complicated and needs

    getChildAt(index) → {PIXI.DisplayObject}

    + id="getChildAt">getChildAt(index) → {DisplayObject}
    @@ -3635,7 +2042,7 @@ This can be quite useful if your displayObject is static / complicated and needs @@ -3747,7 +2154,7 @@ This can be quite useful if your displayObject is static / complicated and needs -PIXI.DisplayObject +DisplayObject @@ -3900,7 +2307,7 @@ This can be quite useful if your displayObject is static / complicated and needs
    Source - - pixi/display/DisplayObjectContainer.js, line 381 + pixi/display/DisplayObjectContainer.js, line 383
    @@ -3927,82 +2334,7 @@ This can be quite useful if your displayObject is static / complicated and needs

    preUpdate()

    - - -
    -
    - - - -
    -

    Empty, to be overridden by classes that require it.

    -
    - - - - - - - - - - - -
    - - - - - - - -
    Inherited From:
    -
    - - - - - - - - - - - - - -
    Source - - pixi/display/DisplayObject.js, line 532 -
    - - - - - - - -
    - - - - - - - - - - - -
    - - - -
    -

    removeChild(child) → {PIXI.DisplayObject}

    + id="removeChild">removeChild(child) → {DisplayObject}
    @@ -4051,7 +2383,7 @@ This can be quite useful if your displayObject is static / complicated and needs -PIXI.DisplayObject +DisplayObject @@ -4078,7 +2410,7 @@ This can be quite useful if your displayObject is static / complicated and needs @@ -4141,7 +2473,7 @@ This can be quite useful if your displayObject is static / complicated and needs

    removeChildAt(index) → {PIXI.DisplayObject}

    + id="removeChildAt">removeChildAt(index) → {DisplayObject}
    @@ -4217,7 +2549,7 @@ This can be quite useful if your displayObject is static / complicated and needs @@ -4465,7 +2797,7 @@ This can be quite useful if your displayObject is static / complicated and needs
    Source - - pixi/display/DisplayObjectContainer.js, line 426 + pixi/display/DisplayObjectContainer.js, line 428
    @@ -4541,7 +2873,7 @@ This can be quite useful if your displayObject is static / complicated and needs -PIXI.DisplayObject +DisplayObject @@ -4726,7 +3058,7 @@ This can be quite useful if your displayObject is static / complicated and needs
    Source - - pixi/display/DisplayObjectContainer.js, line 410 + pixi/display/DisplayObjectContainer.js, line 412
    @@ -4802,7 +3134,7 @@ This can be quite useful if your displayObject is static / complicated and needs -PIXI.DisplayObject +DisplayObject @@ -4825,7 +3157,7 @@ This can be quite useful if your displayObject is static / complicated and needs -PIXI.DisplayObject +DisplayObject @@ -4889,412 +3221,6 @@ This can be quite useful if your displayObject is static / complicated and needs - - - - -
    -

    toGlobal(position) → {Point}

    - - -
    -
    - - - -
    -

    Calculates the global position of the display object

    -
    - - - - - - - -
    Parameters:
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    NameTypeDescription
    position - - -Point - - - -

    The world origin to calculate from

    - - - - -
    Returns:
    -
    - - - -
    - -Point - - - -
    - -
    -

    A point object representing the position of this object

    -
    - - - -
    - - - -
    - - - - - - - -
    Inherited From:
    -
    - - - - - - - - - - - - - -
    Source - - pixi/display/DisplayObject.js, line 575 -
    - - - - - - - -
    - - - - - - - - - - - -
    - - - -
    -

    toLocal(position, from) → {Point}

    - - -
    -
    - - - -
    -

    Calculates the local position of the display object relative to another point

    -
    - - - - - - - -
    Parameters:
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    NameTypeArgumentDescription
    position - - -Point - - - - - - - - - -

    The world origin to calculate from

    from - - -PIXI.DisplayObject - - - - - - <optional>
    - - - - - -

    The DisplayObject to calculate the global position from

    - - - - -
    Returns:
    -
    - - - -
    - -Point - - - -
    - -
    -

    A point object representing the position of this object

    -
    - - - -
    - - - -
    - - - - - - - -
    Inherited From:
    -
    - - - - - - - - - - - - - -
    Source - - pixi/display/DisplayObject.js, line 589 -
    - - - - - - - -
    - - - - - - - - - - - -
    - - - -
    -

    updateCache()

    - - -
    -
    - - - -
    -

    Generates and updates the cached sprite for this object.

    -
    - - - - - - - - - - - -
    - - - - - - - -
    Inherited From:
    -
    - - - - - - - - - - - - - -
    Source - - pixi/display/DisplayObject.js, line 565 -
    - - - - - - - -
    - - - - - - - - - - -
    @@ -5323,7 +3249,7 @@ This can be quite useful if your displayObject is static / complicated and needs Documentation generated by JSDoc 3.3.3 - on Fri Jun 17 2016 12:45:41 GMT+0100 (BST) using the DocStrap template. + on Fri Jul 08 2016 15:42:46 GMT+0100 (GMT Daylight Time) using the DocStrap template. diff --git a/docs/PIXI.EarCut.html b/docs/PIXI.EarCut.html index 2b65d6f50..e418cf8df 100644 --- a/docs/PIXI.EarCut.html +++ b/docs/PIXI.EarCut.html @@ -708,10 +708,6 @@ ComplexPrimitiveShader -
  • - DisplayObject -
  • -
  • DisplayObjectContainer
  • @@ -744,6 +740,10 @@ PIXI +
  • + DisplayObject +
  • +
  • PixiFastShader
  • @@ -1342,7 +1342,7 @@ Documentation generated by JSDoc 3.3.3 - on Fri Jun 17 2016 12:45:41 GMT+0100 (BST) using the DocStrap template. + on Fri Jul 08 2016 15:42:46 GMT+0100 (GMT Daylight Time) using the DocStrap template. diff --git a/docs/PIXI.Event.html b/docs/PIXI.Event.html index d641f4be5..50063c688 100644 --- a/docs/PIXI.Event.html +++ b/docs/PIXI.Event.html @@ -708,10 +708,6 @@ ComplexPrimitiveShader -
  • - DisplayObject -
  • -
  • DisplayObjectContainer
  • @@ -744,6 +740,10 @@ PIXI +
  • + DisplayObject +
  • +
  • PixiFastShader
  • @@ -1819,7 +1819,7 @@ Documentation generated by JSDoc 3.3.3 - on Fri Jun 17 2016 12:45:41 GMT+0100 (BST) using the DocStrap template. + on Fri Jul 08 2016 15:42:46 GMT+0100 (GMT Daylight Time) using the DocStrap template. diff --git a/docs/PIXI.EventTarget.html b/docs/PIXI.EventTarget.html index 0c8c523a1..be9349748 100644 --- a/docs/PIXI.EventTarget.html +++ b/docs/PIXI.EventTarget.html @@ -708,10 +708,6 @@ ComplexPrimitiveShader -
  • - DisplayObject -
  • -
  • DisplayObjectContainer
  • @@ -744,6 +740,10 @@ PIXI +
  • + DisplayObject +
  • +
  • PixiFastShader
  • @@ -2292,7 +2292,7 @@ Documentation generated by JSDoc 3.3.3 - on Fri Jun 17 2016 12:45:41 GMT+0100 (BST) using the DocStrap template. + on Fri Jul 08 2016 15:42:46 GMT+0100 (GMT Daylight Time) using the DocStrap template. diff --git a/docs/PIXI.FilterTexture.html b/docs/PIXI.FilterTexture.html index 7bb511769..31572eb36 100644 --- a/docs/PIXI.FilterTexture.html +++ b/docs/PIXI.FilterTexture.html @@ -708,10 +708,6 @@ ComplexPrimitiveShader -
  • - DisplayObject -
  • -
  • DisplayObjectContainer
  • @@ -744,6 +740,10 @@ PIXI +
  • + DisplayObject +
  • +
  • PixiFastShader
  • @@ -1958,7 +1958,7 @@ Documentation generated by JSDoc 3.3.3 - on Fri Jun 17 2016 12:45:41 GMT+0100 (BST) using the DocStrap template. + on Fri Jul 08 2016 15:42:46 GMT+0100 (GMT Daylight Time) using the DocStrap template. diff --git a/docs/PIXI.Graphics.html b/docs/PIXI.Graphics.html index 9c5c235c8..f65bea12b 100644 --- a/docs/PIXI.Graphics.html +++ b/docs/PIXI.Graphics.html @@ -708,10 +708,6 @@ ComplexPrimitiveShader -
  • - DisplayObject -
  • -
  • DisplayObjectContainer
  • @@ -744,6 +740,10 @@ PIXI +
  • + DisplayObject +
  • +
  • PixiFastShader
  • @@ -1330,67 +1330,6 @@
    -
    -

    alpha :Number

    - - -
    -
    - - - -
    -

    The opacity of the object.

    -
    - - - - - -
    - - - - - - - -
    Inherited From:
    -
    - - - - - - - - - - - - - -
    Source - - pixi/display/DisplayObject.js, line 46 -
    - - - - - - - -
    - - - -
    - - -

    blendMode :Number

    @@ -1625,143 +1564,6 @@ -
    - - - - - - - -
    -

    filterArea :Rectangle

    - - -
    -
    - - - -
    -

    The area the filter is applied to like the hitArea this is used as more of an optimisation -rather than figuring out the dimensions of the displayObject each frame you can set this rectangle

    -
    - - - - - -
    - - - - - - - -
    Inherited From:
    -
    - - - - - - - - - - - - - -
    Source - - pixi/display/DisplayObject.js, line 164 -
    - - - - - - - -
    - - - -
    - - - -
    -

    filters :Array.<Filter>

    - - -
    -
    - - - -
    -

    Sets the filters for the displayObject. -IMPORTANT: This is a webGL only feature and will be ignored by the Canvas renderer.

    -

    To remove filters simply set this property to 'null'.

    -

    You cannot have a filter and a multiply blend mode active at the same time. Setting a filter will reset -this objects blend mode to NORMAL.

    -
    - - - -
    Type:
    -
      -
    • - -Array.<Filter> - - -
    • -
    - - - -
    - - - - - - - -
    Inherited From:
    -
    - - - - - - - - - - - - - -
    Source - - pixi/display/DisplayObject.js, line 307 -
    - - - - - - -
    @@ -1823,87 +1625,6 @@ this objects blend mode to NORMAL.

    - - - - -
    - - - -
    -

    hitArea :Rectangle|Circle|Ellipse|Polygon

    - - -
    -
    - - - -
    -

    This is the defined area that will pick up mouse / touch events. It is null by default. -Setting it is a neat way of optimising the hitTest function that the interactionManager will use (as it will not need to hit test all the children)

    -
    - - - -
    Type:
    -
      -
    • - -Rectangle -| - -Circle -| - -Ellipse -| - -Polygon - - -
    • -
    - - - -
    - - - - - - - -
    Inherited From:
    -
    - - - - - - - - - - - - - -
    Source - - pixi/display/DisplayObject.js, line 62 -
    - - - - - - -
    @@ -2138,496 +1859,6 @@ Setting it is a neat way of optimising the hitTest function that the interaction - - - - -
    - - - -
    -

    mask :PIXI.Graphics

    - - -
    -
    - - - -
    -

    Sets a mask for the displayObject. A mask is an object that limits the visibility of an object to the shape of the mask applied to it. -In PIXI a regular mask must be a PIXI.Graphics object. This allows for much faster masking in canvas as it utilises shape clipping. -To remove a mask, set this property to null.

    -
    - - - - - -
    - - - - - - - -
    Inherited From:
    -
    - - - - - - - - - - - - - -
    Source - - pixi/display/DisplayObject.js, line 282 -
    - - - - - - - -
    - - - -
    - - - -
    -

    <readonly> parent :PIXI.DisplayObjectContainer

    - - -
    -
    - - - -
    -

    [read-only] The display object container that contains this display object.

    -
    - - - - - -
    - - - - - - - -
    Inherited From:
    -
    - - - - - - - - - - - - - -
    Source - - pixi/display/DisplayObject.js, line 79 -
    - - - - - - - -
    - - - -
    - - - -
    -

    pivot :Point

    - - -
    -
    - - - -
    -

    The pivot point of the displayObject that it rotates around

    -
    - - - - - -
    - - - - - - - -
    Inherited From:
    -
    - - - - - - - - - - - - - -
    Source - - pixi/display/DisplayObject.js, line 30 -
    - - - - - - - -
    - - - -
    - - - -
    -

    position :Point

    - - -
    -
    - - - -
    -

    The coordinate of the object relative to the local coordinates of the parent.

    -
    - - - - - -
    - - - - - - - -
    Inherited From:
    -
    - - - - - - - - - - - - - -
    Source - - pixi/display/DisplayObject.js, line 14 -
    - - - - - - - -
    - - - -
    - - - -
    -

    renderable :Boolean

    - - -
    -
    - - - -
    -

    Can this object be rendered

    -
    - - - - - -
    - - - - - - - -
    Inherited From:
    -
    - - - - - - - - - - - - - -
    Source - - pixi/display/DisplayObject.js, line 71 -
    - - - - - - - -
    - - - -
    - - - -
    -

    rotation :Number

    - - -
    -
    - - - -
    -

    The rotation of the object in radians.

    -
    - - - - - -
    - - - - - - - -
    Inherited From:
    -
    - - - - - - - - - - - - - -
    Source - - pixi/display/DisplayObject.js, line 38 -
    - - - - - - - -
    - - - -
    - - - -
    -

    scale :Point

    - - -
    -
    - - - -
    -

    The scale factor of the object.

    -
    - - - - - -
    - - - - - - - -
    Inherited From:
    -
    - - - - - - - - - - - - - -
    Source - - pixi/display/DisplayObject.js, line 22 -
    - - - - - - - -
    - - - -
    - - - -
    -

    <readonly> stage :Stage

    - - -
    -
    - - - -
    -

    [read-only] The stage the display object is connected to, or undefined if it is not connected to the stage.

    -
    - - - - - -
    - - - - - - - -
    Inherited From:
    -
    - - - - - - - - - - - - - -
    Source - - pixi/display/DisplayObject.js, line 88 -
    - - - - - - -
    @@ -2687,67 +1918,6 @@ To remove a mask, set this property to null.

    - - - - -
    - - - -
    -

    visible :Boolean

    - - -
    -
    - - - -
    -

    The visibility of the object.

    -
    - - - - - -
    - - - - - - - -
    Inherited From:
    -
    - - - - - - - - - - - - - -
    Source - - pixi/display/DisplayObject.js, line 54 -
    - - - - - - -
    @@ -2809,436 +1979,6 @@ To remove a mask, set this property to null.

    - - - - -
    - - - -
    -

    <readonly> worldAlpha :Number

    - - -
    -
    - - - -
    -

    [read-only] The multiplied alpha of the displayObject

    -
    - - - - - -
    - - - - - - - -
    Inherited From:
    -
    - - - - - - - - - - - - - -
    Source - - pixi/display/DisplayObject.js, line 97 -
    - - - - - - - -
    - - - -
    - - - -
    -

    <readonly> worldPosition :Point

    - - -
    -
    - - - -
    -

    The position of the Display Object based on the world transform. -This value is updated at the end of updateTransform and takes all parent transforms into account.

    -
    - - - - - -
    - - - - - - - -
    Inherited From:
    -
    - - - - - - - - - - - - - -
    Source - - pixi/display/DisplayObject.js, line 116 -
    - - - - - - - -
    - - - -
    - - - -
    -

    <readonly> worldRotation :Number

    - - -
    -
    - - - -
    -

    The rotation of the Display Object, in radians, based on the world transform. -This value is updated at the end of updateTransform and takes all parent transforms into account.

    -
    - - - - - -
    - - - - - - - -
    Inherited From:
    -
    - - - - - - - - - - - - - -
    Source - - pixi/display/DisplayObject.js, line 136 -
    - - - - - - - -
    - - - -
    - - - -
    -

    <readonly> worldScale :Point

    - - -
    -
    - - - -
    -

    The scale of the Display Object based on the world transform. -This value is updated at the end of updateTransform and takes all parent transforms into account.

    -
    - - - - - -
    - - - - - - - -
    Inherited From:
    -
    - - - - - - - - - - - - - -
    Source - - pixi/display/DisplayObject.js, line 126 -
    - - - - - - - -
    - - - -
    - - - -
    -

    worldVisible :Boolean

    - - -
    -
    - - - -
    -

    [read-only] Indicates if the sprite is globally visible.

    -
    - - - - - -
    - - - - - - - -
    Inherited From:
    -
    - - - - - - - - - - - - - -
    Source - - pixi/display/DisplayObject.js, line 258 -
    - - - - - - - -
    - - - -
    - - - -
    -

    x :Number

    - - -
    -
    - - - -
    -

    The position of the displayObject on the x axis relative to the local coordinates of the parent.

    -
    - - - - - -
    - - - - - - - -
    Inherited From:
    -
    - - - - - - - - - - - - - -
    Source - - pixi/display/DisplayObject.js, line 722 -
    - - - - - - - -
    - - - -
    - - - -
    -

    y :Number

    - - -
    -
    - - - -
    -

    The position of the displayObject on the y axis relative to the local coordinates of the parent.

    -
    - - - - - -
    - - - - - - - -
    Inherited From:
    -
    - - - - - - - - - - - - - -
    Source - - pixi/display/DisplayObject.js, line 740 -
    - - - - - - -
    @@ -3255,7 +1995,7 @@ This value is updated at the end of updateTransform and takes all parent transfo

    addChild(child) → {PIXI.DisplayObject}

    + id="addChild">addChild(child) → {DisplayObject}
    @@ -3304,7 +2044,7 @@ This value is updated at the end of updateTransform and takes all parent transfo -PIXI.DisplayObject +DisplayObject @@ -3331,7 +2071,7 @@ This value is updated at the end of updateTransform and takes all parent transfo @@ -3399,7 +2139,7 @@ This value is updated at the end of updateTransform and takes all parent transfo

    addChildAt(child, index) → {PIXI.DisplayObject}

    + id="addChildAt">addChildAt(child, index) → {DisplayObject}
    @@ -3448,7 +2188,7 @@ This value is updated at the end of updateTransform and takes all parent transfo -PIXI.DisplayObject +DisplayObject @@ -3498,7 +2238,7 @@ This value is updated at the end of updateTransform and takes all parent transfo @@ -3816,7 +2556,7 @@ This value is updated at the end of updateTransform and takes all parent transfo
    Source - - pixi/primitives/Graphics.js, line 391 + pixi/primitives/Graphics.js, line 395
    @@ -3979,7 +2719,7 @@ This value is updated at the end of updateTransform and takes all parent transfo
    Source - - pixi/primitives/Graphics.js, line 476 + pixi/primitives/Graphics.js, line 481
    @@ -4233,7 +2973,7 @@ This value is updated at the end of updateTransform and takes all parent transfo
    Source - - pixi/primitives/Graphics.js, line 264 + pixi/primitives/Graphics.js, line 266
    @@ -4323,83 +3063,7 @@ This value is updated at the end of updateTransform and takes all parent transfo
    Source - - pixi/primitives/Graphics.js, line 618 -
    - - - - - - - - - - - - - - - - - - - - - - - -
    -

    destroy()

    - - -
    -
    - - - -
    -

    Destroy this DisplayObject. -Removes all references to transformCallbacks, its parent, the stage, filters, bounds, mask and cached Sprites.

    -
    - - - - - - - - - - - -
    - - - - - - - -
    Inherited From:
    -
    - - - - - - - - - - - - - -
    Source - - pixi/display/DisplayObject.js, line 223 + pixi/primitives/Graphics.js, line 623
    @@ -4469,7 +3133,7 @@ Removes all references to transformCallbacks, its parent, the stage, filters, bo
    Source - - pixi/primitives/Graphics.js, line 1131 + pixi/primitives/Graphics.js, line 1136
    @@ -4654,7 +3318,7 @@ Removes all references to transformCallbacks, its parent, the stage, filters, bo
    Source - - pixi/primitives/Graphics.js, line 550 + pixi/primitives/Graphics.js, line 555
    @@ -4862,7 +3526,7 @@ Removes all references to transformCallbacks, its parent, the stage, filters, bo
    Source - - pixi/primitives/Graphics.js, line 566 + pixi/primitives/Graphics.js, line 571
    @@ -5004,7 +3668,7 @@ Removes all references to transformCallbacks, its parent, the stage, filters, bo
    Source - - pixi/primitives/Graphics.js, line 583 + pixi/primitives/Graphics.js, line 588
    @@ -5208,7 +3872,7 @@ Removes all references to transformCallbacks, its parent, the stage, filters, bo
    Source - - pixi/primitives/Graphics.js, line 519 + pixi/primitives/Graphics.js, line 524
    @@ -5415,7 +4079,7 @@ Removes all references to transformCallbacks, its parent, the stage, filters, bo
    Source - - pixi/primitives/Graphics.js, line 535 + pixi/primitives/Graphics.js, line 540
    @@ -5566,7 +4230,7 @@ Removes all references to transformCallbacks, its parent, the stage, filters, bo
    Source - - pixi/primitives/Graphics.js, line 1142 + pixi/primitives/Graphics.js, line 1147
    @@ -5656,7 +4320,7 @@ Removes all references to transformCallbacks, its parent, the stage, filters, bo
    Source - - pixi/primitives/Graphics.js, line 504 + pixi/primitives/Graphics.js, line 509
    @@ -5894,7 +4558,7 @@ This can be quite useful if your geometry is complicated and needs to be reused
    Source - - pixi/primitives/Graphics.js, line 636 + pixi/primitives/Graphics.js, line 643
    @@ -5984,7 +4648,7 @@ This can be quite useful if your geometry is complicated and needs to be reused
    Source - - pixi/primitives/Graphics.js, line 832 + pixi/primitives/Graphics.js, line 837
    @@ -6011,7 +4675,7 @@ This can be quite useful if your geometry is complicated and needs to be reused

    getChildAt(index) → {PIXI.DisplayObject}

    + id="getChildAt">getChildAt(index) → {DisplayObject}
    @@ -6087,7 +4751,7 @@ This can be quite useful if your geometry is complicated and needs to be reused @@ -6204,7 +4868,7 @@ This can be quite useful if your geometry is complicated and needs to be reused -PIXI.DisplayObject +DisplayObject @@ -6367,7 +5031,7 @@ This can be quite useful if your geometry is complicated and needs to be reused
    Source - - pixi/display/DisplayObjectContainer.js, line 381 + pixi/display/DisplayObjectContainer.js, line 383
    @@ -6898,81 +5562,6 @@ The current drawing position is then set to (x, y).

    -
    - - - -
    -

    preUpdate()

    - - -
    -
    - - - -
    -

    Empty, to be overridden by classes that require it.

    -
    - - - - - - - - - - - -
    - - - - - - - -
    Inherited From:
    -
    - - - - - - - - - - - - - -
    Source - - pixi/display/DisplayObject.js, line 532 -
    - - - - - - - -
    - - - - - - - - - - -
    @@ -7161,7 +5750,7 @@ Based on: https://stackoverflow.com/questions/785097/how-do-i-implement-a-bezier
    Source - - pixi/primitives/Graphics.js, line 210 + pixi/primitives/Graphics.js, line 211
    @@ -7188,7 +5777,7 @@ Based on: https://stackoverflow.com/questions/785097/how-do-i-implement-a-bezier

    removeChild(child) → {PIXI.DisplayObject}

    + id="removeChild">removeChild(child) → {DisplayObject}
    @@ -7237,7 +5826,7 @@ Based on: https://stackoverflow.com/questions/785097/how-do-i-implement-a-bezier -PIXI.DisplayObject +DisplayObject @@ -7264,7 +5853,7 @@ Based on: https://stackoverflow.com/questions/785097/how-do-i-implement-a-bezier @@ -7332,7 +5921,7 @@ Based on: https://stackoverflow.com/questions/785097/how-do-i-implement-a-bezier

    removeChildAt(index) → {PIXI.DisplayObject}

    + id="removeChildAt">removeChildAt(index) → {DisplayObject}
    @@ -7408,7 +5997,7 @@ Based on: https://stackoverflow.com/questions/785097/how-do-i-implement-a-bezier @@ -7671,7 +6260,7 @@ Based on: https://stackoverflow.com/questions/785097/how-do-i-implement-a-bezier
    Source - - pixi/display/DisplayObjectContainer.js, line 426 + pixi/display/DisplayObjectContainer.js, line 428
    @@ -7747,7 +6336,7 @@ Based on: https://stackoverflow.com/questions/785097/how-do-i-implement-a-bezier -PIXI.DisplayObject +DisplayObject @@ -7942,7 +6531,7 @@ Based on: https://stackoverflow.com/questions/785097/how-do-i-implement-a-bezier
    Source - - pixi/display/DisplayObjectContainer.js, line 410 + pixi/display/DisplayObjectContainer.js, line 412
    @@ -8018,7 +6607,7 @@ Based on: https://stackoverflow.com/questions/785097/how-do-i-implement-a-bezier -PIXI.DisplayObject +DisplayObject @@ -8041,7 +6630,7 @@ Based on: https://stackoverflow.com/questions/785097/how-do-i-implement-a-bezier -PIXI.DisplayObject +DisplayObject @@ -8110,412 +6699,6 @@ Based on: https://stackoverflow.com/questions/785097/how-do-i-implement-a-bezier - - - - -
    -

    toGlobal(position) → {Point}

    - - -
    -
    - - - -
    -

    Calculates the global position of the display object

    -
    - - - - - - - -
    Parameters:
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    NameTypeDescription
    position - - -Point - - - -

    The world origin to calculate from

    - - - - -
    Returns:
    -
    - - - -
    - -Point - - - -
    - -
    -

    A point object representing the position of this object

    -
    - - - -
    - - - -
    - - - - - - - -
    Inherited From:
    -
    - - - - - - - - - - - - - -
    Source - - pixi/display/DisplayObject.js, line 575 -
    - - - - - - - -
    - - - - - - - - - - - -
    - - - -
    -

    toLocal(position, from) → {Point}

    - - -
    -
    - - - -
    -

    Calculates the local position of the display object relative to another point

    -
    - - - - - - - -
    Parameters:
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    NameTypeArgumentDescription
    position - - -Point - - - - - - - - - -

    The world origin to calculate from

    from - - -PIXI.DisplayObject - - - - - - <optional>
    - - - - - -

    The DisplayObject to calculate the global position from

    - - - - -
    Returns:
    -
    - - - -
    - -Point - - - -
    - -
    -

    A point object representing the position of this object

    -
    - - - -
    - - - -
    - - - - - - - -
    Inherited From:
    -
    - - - - - - - - - - - - - -
    Source - - pixi/display/DisplayObject.js, line 589 -
    - - - - - - - -
    - - - - - - - - - - - -
    - - - -
    -

    updateCache()

    - - -
    -
    - - - -
    -

    Generates and updates the cached sprite for this object.

    -
    - - - - - - - - - - - -
    - - - - - - - -
    Inherited From:
    -
    - - - - - - - - - - - - - -
    Source - - pixi/display/DisplayObject.js, line 565 -
    - - - - - - - -
    - - - - - - - - - - -
    @@ -8565,7 +6748,7 @@ Based on: https://stackoverflow.com/questions/785097/how-do-i-implement-a-bezier
    Source - - pixi/primitives/Graphics.js, line 955 + pixi/primitives/Graphics.js, line 960
    @@ -8614,7 +6797,7 @@ Based on: https://stackoverflow.com/questions/785097/how-do-i-implement-a-bezier Documentation generated by JSDoc 3.3.3 - on Fri Jun 17 2016 12:45:41 GMT+0100 (BST) using the DocStrap template. + on Fri Jul 08 2016 15:42:46 GMT+0100 (GMT Daylight Time) using the DocStrap template. diff --git a/docs/PIXI.GraphicsData.html b/docs/PIXI.GraphicsData.html index e14c64765..c9ea97b8d 100644 --- a/docs/PIXI.GraphicsData.html +++ b/docs/PIXI.GraphicsData.html @@ -708,10 +708,6 @@ ComplexPrimitiveShader -
  • - DisplayObject -
  • -
  • DisplayObjectContainer
  • @@ -744,6 +740,10 @@ PIXI +
  • + DisplayObject +
  • +
  • PixiFastShader
  • @@ -1346,7 +1346,7 @@ Documentation generated by JSDoc 3.3.3 - on Fri Jun 17 2016 12:45:41 GMT+0100 (BST) using the DocStrap template. + on Fri Jul 08 2016 15:42:46 GMT+0100 (GMT Daylight Time) using the DocStrap template. diff --git a/docs/PIXI.DisplayObject.html b/docs/PIXI.PIXI.DisplayObject.html similarity index 73% rename from docs/PIXI.DisplayObject.html rename to docs/PIXI.PIXI.DisplayObject.html index f6492279b..5cd8153c4 100644 --- a/docs/PIXI.DisplayObject.html +++ b/docs/PIXI.PIXI.DisplayObject.html @@ -708,10 +708,6 @@ ComplexPrimitiveShader -
  • - DisplayObject -
  • -
  • DisplayObjectContainer
  • @@ -744,6 +740,10 @@ PIXI +
  • + DisplayObject +
  • +
  • PixiFastShader
  • @@ -1225,7 +1225,7 @@

    - PIXI. + PIXI.PIXI. DisplayObject

    @@ -1249,8 +1249,10 @@
    -

    The base class for all objects that are rendered on the screen. -This is an abstract class and should not be used on its own rather it should be extended.

    +

    The base class for all objects that are rendered. Contains properties for position, scaling, +rotation, masks and cache handling.

    +

    This is an abstract class and should not be used on its own, rather it should be extended.

    +

    It is used internally by the likes of PIXI.Sprite.

    @@ -1284,7 +1286,7 @@ This is an abstract class and should not be used on its own rather it should be
    Source - - pixi/display/DisplayObject.js, line 5 + pixi/display/DisplayObject.js, line 7
    @@ -1336,7 +1338,10 @@ This is an abstract class and should not be used on its own rather it should be
    -

    The opacity of the object.

    +

    The alpha value of this DisplayObject. A value of 1 is fully opaque. A value of 0 is transparent. +Please note that an object with an alpha value of 0 is skipped during the render pass.

    +

    The value of this property does not reflect any alpha values set further up the display list. +To obtain that value please see the worldAlpha property.

    @@ -1364,7 +1369,7 @@ This is an abstract class and should not be used on its own rather it should be
    Source - - pixi/display/DisplayObject.js, line 46 + pixi/display/DisplayObject.js, line 63
    @@ -1392,9 +1397,13 @@ This is an abstract class and should not be used on its own rather it should be
    -

    Set if this display object is cached as a bitmap. -This basically takes a snap shot of the display object as it is at that moment. It can provide a performance benefit for complex static displayObjects. -To remove simply set this property to 'null'

    +

    Sets if this DisplayObject should be cached as a bitmap.

    +

    When invoked it will take a snapshot of the DisplayObject, as it is at that moment, and store it +in a RenderTexture. This is then used whenever this DisplayObject is rendered. It can provide a +performance benefit for complex, but static, DisplayObjects. I.e. those with lots of children.

    +

    Cached Bitmaps do not track their parents. If you update a property of this DisplayObject, it will not +re-generate the cached bitmap automatically. To do that you need to call DisplayObject.updateCache.

    +

    To remove a cached bitmap, set this property to null.

    @@ -1422,7 +1431,7 @@ To remove simply set this property to 'null'

    Source - - pixi/display/DisplayObject.js, line 355 + pixi/display/DisplayObject.js, line 779
    @@ -1450,8 +1459,7 @@ To remove simply set this property to 'null'

    -

    The area the filter is applied to like the hitArea this is used as more of an optimisation -rather than figuring out the dimensions of the displayObject each frame you can set this rectangle

    +

    The rectangular area used by filters when rendering a shader for this DisplayObject.

    @@ -1479,7 +1487,7 @@ rather than figuring out the dimensions of the displayObject each frame you can
    Source - - pixi/display/DisplayObject.js, line 164 + pixi/display/DisplayObject.js, line 204
    @@ -1498,7 +1506,7 @@ rather than figuring out the dimensions of the displayObject each frame you can

    filters :Array.<Filter>

    + id="filters">filters :Array
    @@ -1507,25 +1515,16 @@ rather than figuring out the dimensions of the displayObject each frame you can
    -

    Sets the filters for the displayObject. -IMPORTANT: This is a webGL only feature and will be ignored by the Canvas renderer.

    -

    To remove filters simply set this property to 'null'.

    -

    You cannot have a filter and a multiply blend mode active at the same time. Setting a filter will reset -this objects blend mode to NORMAL.

    +

    Sets the filters for this DisplayObject. This is a WebGL only feature, and is ignored by the Canvas +Renderer. A filter is a shader applied to this DisplayObject. You can modify the placement of the filter +using DisplayObject.filterArea.

    +

    To remove filters, set this property to null.

    +

    Note: You cannot have a filter set, and a MULTIPLY Blend Mode active, at the same time. Setting a +filter will reset this DisplayObjects blend mode to NORMAL.

    -
    Type:
    -
      -
    • - -Array.<Filter> - - -
    • -
    -
    @@ -1549,7 +1548,7 @@ this objects blend mode to NORMAL.

    Source - - pixi/display/DisplayObject.js, line 307 + pixi/display/DisplayObject.js, line 726
    @@ -1625,7 +1624,7 @@ Setting it is a neat way of optimising the hitTest function that the interaction
    Source - - pixi/display/DisplayObject.js, line 62 + pixi/display/DisplayObject.js, line 89
    @@ -1644,7 +1643,7 @@ Setting it is a neat way of optimising the hitTest function that the interaction

    mask :PIXI.Graphics

    + id="mask">mask :PIXIGraphics
    @@ -1653,9 +1652,10 @@ Setting it is a neat way of optimising the hitTest function that the interaction
    -

    Sets a mask for the displayObject. A mask is an object that limits the visibility of an object to the shape of the mask applied to it. -In PIXI a regular mask must be a PIXI.Graphics object. This allows for much faster masking in canvas as it utilises shape clipping. -To remove a mask, set this property to null.

    +

    Sets a mask for this DisplayObject. A mask is an instance of a Graphics object. +When applied it limits the visible area of this DisplayObject to the shape of the mask. +Under a Canvas renderer it uses shape clipping. Under a WebGL renderer it uses a Stencil Buffer. +To remove a mask, set this property to null.

    @@ -1683,7 +1683,7 @@ To remove a mask, set this property to null.

    Source - - pixi/display/DisplayObject.js, line 282 + pixi/display/DisplayObject.js, line 691
    @@ -1702,7 +1702,7 @@ To remove a mask, set this property to null.

    <readonly> parent :PIXI.DisplayObjectContainer

    + id="parent"><readonly> parent :PIXIDisplayObjectContainer
    @@ -1711,7 +1711,10 @@ To remove a mask, set this property to null.

    -

    [read-only] The display object container that contains this display object.

    +

    The parent DisplayObjectContainer that this DisplayObject is a child of. +All DisplayObjects must belong to a parent in order to be rendered. +The root parent is the Stage object. This property is set automatically when the +DisplayObject is added to, or removed from, a DisplayObjectContainer.

    @@ -1739,7 +1742,7 @@ To remove a mask, set this property to null.

    Source - - pixi/display/DisplayObject.js, line 79 + pixi/display/DisplayObject.js, line 107
    @@ -1758,7 +1761,7 @@ To remove a mask, set this property to null.

    pivot :Point

    + id="pivot">pivot :PIXIPoint
    @@ -1767,7 +1770,8 @@ To remove a mask, set this property to null.

    -

    The pivot point of the displayObject that it rotates around

    +

    The pivot point of this DisplayObject that it rotates around. The values are expressed +in pixel values.

    @@ -1795,7 +1799,7 @@ To remove a mask, set this property to null.

    Source - - pixi/display/DisplayObject.js, line 30 + pixi/display/DisplayObject.js, line 43
    @@ -1814,7 +1818,7 @@ To remove a mask, set this property to null.

    position :Point

    + id="position">position :PIXIPoint
    @@ -1823,7 +1827,9 @@ To remove a mask, set this property to null.

    -

    The coordinate of the object relative to the local coordinates of the parent.

    +

    The coordinates, in pixels, of this DisplayObject, relative to its parent container.

    +

    The value of this property does not reflect any positioning happening further up the display list. +To obtain that value please see the worldPosition property.

    @@ -1851,7 +1857,7 @@ To remove a mask, set this property to null.

    Source - - pixi/display/DisplayObject.js, line 14 + pixi/display/DisplayObject.js, line 20
    @@ -1879,7 +1885,8 @@ To remove a mask, set this property to null.

    -

    Can this object be rendered

    +

    Should this DisplayObject be rendered by the renderer? An object with a renderable value of +false is skipped during the render pass.

    @@ -1907,7 +1914,7 @@ To remove a mask, set this property to null.

    Source - - pixi/display/DisplayObject.js, line 71 + pixi/display/DisplayObject.js, line 98
    @@ -1935,7 +1942,10 @@ To remove a mask, set this property to null.

    -

    The rotation of the object in radians.

    +

    The rotation of this DisplayObject. The value is given, and expressed, in radians, and is based on +a right-handed orientation.

    +

    The value of this property does not reflect any rotation happening further up the display list. +To obtain that value please see the worldRotation property.

    @@ -1963,7 +1973,7 @@ To remove a mask, set this property to null.

    Source - - pixi/display/DisplayObject.js, line 38 + pixi/display/DisplayObject.js, line 51
    @@ -1982,7 +1992,7 @@ To remove a mask, set this property to null.

    scale :Point

    + id="scale">scale :PIXIPoint
    @@ -1991,7 +2001,10 @@ To remove a mask, set this property to null.

    -

    The scale factor of the object.

    +

    The scale of this DisplayObject. A scale of 1:1 represents the DisplayObject +at its default size. A value of 0.5 would scale this DisplayObject by half, and so on.

    +

    The value of this property does not reflect any scaling happening further up the display list. +To obtain that value please see the worldScale property.

    @@ -2019,7 +2032,7 @@ To remove a mask, set this property to null.

    Source - - pixi/display/DisplayObject.js, line 22 + pixi/display/DisplayObject.js, line 31
    @@ -2038,7 +2051,7 @@ To remove a mask, set this property to null.

    <readonly> stage :Stage

    + id="stage"><readonly> stage :PIXIStage
    @@ -2047,7 +2060,7 @@ To remove a mask, set this property to null.

    -

    [read-only] The stage the display object is connected to, or undefined if it is not connected to the stage.

    +

    The stage that this DisplayObject is connected to.

    @@ -2075,7 +2088,7 @@ To remove a mask, set this property to null.

    Source - - pixi/display/DisplayObject.js, line 88 + pixi/display/DisplayObject.js, line 119
    @@ -2103,7 +2116,12 @@ To remove a mask, set this property to null.

    -

    The visibility of the object.

    +

    The visibility of this DisplayObject. A value of false makes the object invisible. +A value of true makes it visible. Please note that an object with a visible value of +false is skipped during the render pass. Equally a DisplayObject with visible false will +not render any of its children.

    +

    The value of this property does not reflect any visible values set further up the display list. +To obtain that value please see the worldVisible property.

    @@ -2131,7 +2149,7 @@ To remove a mask, set this property to null.

    Source - - pixi/display/DisplayObject.js, line 54 + pixi/display/DisplayObject.js, line 75
    @@ -2159,7 +2177,13 @@ To remove a mask, set this property to null.

    -

    [read-only] The multiplied alpha of the displayObject

    +

    The multiplied alpha value of this DisplayObject. A value of 1 is fully opaque. A value of 0 is transparent. +This value is the calculated total, based on the alpha values of all parents of this DisplayObjects +in the display list.

    +

    To obtain, and set, the local alpha value, see the alpha property.

    +

    Note: This property is only updated at the end of the updateTransform call, once per render. Until +that happens this property will contain values based on the previous frame. Be mindful of this if +accessing this property outside of the normal game flow, i.e. from an asynchronous event callback.

    @@ -2187,7 +2211,7 @@ To remove a mask, set this property to null.

    Source - - pixi/display/DisplayObject.js, line 97 + pixi/display/DisplayObject.js, line 128
    @@ -2206,7 +2230,7 @@ To remove a mask, set this property to null.

    <readonly> worldPosition :Point

    + id="worldPosition"><readonly> worldPosition :PIXIPoint
    @@ -2215,8 +2239,12 @@ To remove a mask, set this property to null.

    -

    The position of the Display Object based on the world transform. -This value is updated at the end of updateTransform and takes all parent transforms into account.

    +

    The coordinates, in pixels, of this DisplayObject within the world.

    +

    This property contains the calculated total, based on the positions of all parents of this +DisplayObject in the display list.

    +

    Note: This property is only updated at the end of the updateTransform call, once per render. Until +that happens this property will contain values based on the previous frame. Be mindful of this if +accessing this property outside of the normal game flow, i.e. from an asynchronous event callback.

    @@ -2244,7 +2272,7 @@ This value is updated at the end of updateTransform and takes all parent transfo
    Source - - pixi/display/DisplayObject.js, line 116 + pixi/display/DisplayObject.js, line 159
    @@ -2272,8 +2300,12 @@ This value is updated at the end of updateTransform and takes all parent transfo
    -

    The rotation of the Display Object, in radians, based on the world transform. -This value is updated at the end of updateTransform and takes all parent transforms into account.

    +

    The rotation, in radians, of this DisplayObject.

    +

    This property contains the calculated total, based on the rotations of all parents of this +DisplayObject in the display list.

    +

    Note: This property is only updated at the end of the updateTransform call, once per render. Until +that happens this property will contain values based on the previous frame. Be mindful of this if +accessing this property outside of the normal game flow, i.e. from an asynchronous event callback.

    @@ -2301,7 +2333,7 @@ This value is updated at the end of updateTransform and takes all parent transfo
    Source - - pixi/display/DisplayObject.js, line 136 + pixi/display/DisplayObject.js, line 189
    @@ -2320,7 +2352,7 @@ This value is updated at the end of updateTransform and takes all parent transfo

    <readonly> worldScale :Point

    + id="worldScale"><readonly> worldScale :PIXIPoint
    @@ -2329,8 +2361,12 @@ This value is updated at the end of updateTransform and takes all parent transfo
    -

    The scale of the Display Object based on the world transform. -This value is updated at the end of updateTransform and takes all parent transforms into account.

    +

    The global scale of this DisplayObject.

    +

    This property contains the calculated total, based on the scales of all parents of this +DisplayObject in the display list.

    +

    Note: This property is only updated at the end of the updateTransform call, once per render. Until +that happens this property will contain values based on the previous frame. Be mindful of this if +accessing this property outside of the normal game flow, i.e. from an asynchronous event callback.

    @@ -2358,7 +2394,68 @@ This value is updated at the end of updateTransform and takes all parent transfo
    Source - - pixi/display/DisplayObject.js, line 126 + pixi/display/DisplayObject.js, line 174 +
    + + + + + + + +
    + + + + + + + +
    +

    <readonly> worldTransform :PIXIMatrix

    + + +
    +
    + + + +
    +

    The current transform of this DisplayObject.

    +

    This property contains the calculated total, based on the transforms of all parents of this +DisplayObject in the display list.

    +

    Note: This property is only updated at the end of the updateTransform call, once per render. Until +that happens this property will contain values based on the previous frame. Be mindful of this if +accessing this property outside of the normal game flow, i.e. from an asynchronous event callback.

    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + +
    Source - + pixi/display/DisplayObject.js, line 144
    @@ -2386,7 +2483,7 @@ This value is updated at the end of updateTransform and takes all parent transfo
    -

    [read-only] Indicates if the sprite is globally visible.

    +

    Indicates if this DisplayObject is visible, based on it, and all of its parents, visible property values.

    @@ -2414,7 +2511,7 @@ This value is updated at the end of updateTransform and takes all parent transfo
    Source - - pixi/display/DisplayObject.js, line 258 + pixi/display/DisplayObject.js, line 656
    @@ -2442,7 +2539,8 @@ This value is updated at the end of updateTransform and takes all parent transfo
    -

    The position of the displayObject on the x axis relative to the local coordinates of the parent.

    +

    The horizontal position of the DisplayObject, in pixels, relative to its parent. +If you need the world position of the DisplayObject, use DisplayObject.worldPosition instead.

    @@ -2470,7 +2568,7 @@ This value is updated at the end of updateTransform and takes all parent transfo
    Source - - pixi/display/DisplayObject.js, line 722 + pixi/display/DisplayObject.js, line 612
    @@ -2498,7 +2596,8 @@ This value is updated at the end of updateTransform and takes all parent transfo
    -

    The position of the displayObject on the y axis relative to the local coordinates of the parent.

    +

    The vertical position of the DisplayObject, in pixels, relative to its parent. +If you need the world position of the DisplayObject, use DisplayObject.worldPosition instead.

    @@ -2526,7 +2625,7 @@ This value is updated at the end of updateTransform and takes all parent transfo
    Source - - pixi/display/DisplayObject.js, line 740 + pixi/display/DisplayObject.js, line 634
    @@ -2545,1079 +2644,6 @@ This value is updated at the end of updateTransform and takes all parent transfo -

    Methods

    - -
    - -
    -

    destroy()

    - - -
    -
    - - - -
    -

    Destroy this DisplayObject. -Removes all references to transformCallbacks, its parent, the stage, filters, bounds, mask and cached Sprites.

    -
    - - - - - - - - - - - -
    - - - - - - - - - - - - - - - - - - - -
    Source - - pixi/display/DisplayObject.js, line 223 -
    - - - - - - - -
    - - - - - - - - - - - -
    - - - -
    -

    generateTexture(resolution, scaleMode, renderer) → {PIXI.RenderTexture}

    - - -
    -
    - - - -
    -

    Useful function that returns a texture of the displayObject object that can then be used to create sprites -This can be quite useful if your displayObject is static / complicated and needs to be reused multiple times.

    -
    - - - - - - - -
    Parameters:
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    NameTypeDescription
    resolution - - -Number - - - -

    The resolution of the texture being generated

    scaleMode - - -Number - - - -

    See {{#crossLink "PIXI/scaleModes:property"}}PIXI.scaleModes{{/crossLink}} for possible values

    renderer - - -PIXI.CanvasRenderer -| - -PIXI.WebGLRenderer - - - -

    The renderer used to generate the texture.

    - - - - -
    Returns:
    -
    - - - -
    - -PIXI.RenderTexture - - - -
    - -
    -

    a texture of the graphics object

    -
    - - - -
    - - - -
    - - - - - - - - - - - - - - - - - - - -
    Source - - pixi/display/DisplayObject.js, line 541 -
    - - - - - - - -
    - - - - - - - - - - - -
    - - - -
    -

    getBounds(matrix) → {Rectangle}

    - - -
    -
    - - - -
    -

    Retrieves the bounds of the displayObject as a rectangle object

    -
    - - - - - - - -
    Parameters:
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    NameTypeDescription
    matrix - - -Matrix - - - -

    -

    - - - - -
    Returns:
    -
    - - - -
    - -Rectangle - - - -
    - -
    -

    the rectangular bounding area

    -
    - - - -
    - - - -
    - - - - - - - - - - - - - - - - - - - -
    Source - - pixi/display/DisplayObject.js, line 497 -
    - - - - - - - -
    - - - - - - - - - - - -
    - - - -
    -

    getLocalBounds() → {Rectangle}

    - - -
    -
    - - - -
    -

    Retrieves the local bounds of the displayObject as a rectangle object

    -
    - - - - - - - - - -
    Returns:
    -
    - - - -
    - -Rectangle - - - -
    - -
    -

    the rectangular bounding area

    -
    - - - -
    - - - -
    - - - - - - - - - - - - - - - - - - - -
    Source - - pixi/display/DisplayObject.js, line 510 -
    - - - - - - - -
    - - - - - - - - - - - -
    - - - -
    -

    preUpdate()

    - - -
    -
    - - - -
    -

    Empty, to be overridden by classes that require it.

    -
    - - - - - - - - - - - -
    - - - - - - - - - - - - - - - - - - - -
    Source - - pixi/display/DisplayObject.js, line 532 -
    - - - - - - - -
    - - - - - - - - - - - -
    - - - -
    -

    setStageReference(stage)

    - - -
    -
    - - - -
    -

    Sets the object's stage reference, the stage this object is connected to

    -
    - - - - - - - -
    Parameters:
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    NameTypeDescription
    stage - - -Stage - - - -

    the stage that the object will have as its current stage reference

    - - - - - - -
    - - - - - - - - - - - - - - - - - - - -
    Source - - pixi/display/DisplayObject.js, line 521 -
    - - - - - - - -
    - - - - - - - - - - - -
    - - - -
    -

    toGlobal(position) → {Point}

    - - -
    -
    - - - -
    -

    Calculates the global position of the display object

    -
    - - - - - - - -
    Parameters:
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    NameTypeDescription
    position - - -Point - - - -

    The world origin to calculate from

    - - - - -
    Returns:
    -
    - - - -
    - -Point - - - -
    - -
    -

    A point object representing the position of this object

    -
    - - - -
    - - - -
    - - - - - - - - - - - - - - - - - - - -
    Source - - pixi/display/DisplayObject.js, line 575 -
    - - - - - - - -
    - - - - - - - - - - - -
    - - - -
    -

    toLocal(position, from) → {Point}

    - - -
    -
    - - - -
    -

    Calculates the local position of the display object relative to another point

    -
    - - - - - - - -
    Parameters:
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    NameTypeArgumentDescription
    position - - -Point - - - - - - - - - -

    The world origin to calculate from

    from - - -PIXI.DisplayObject - - - - - - <optional>
    - - - - - -

    The DisplayObject to calculate the global position from

    - - - - -
    Returns:
    -
    - - - -
    - -Point - - - -
    - -
    -

    A point object representing the position of this object

    -
    - - - -
    - - - -
    - - - - - - - - - - - - - - - - - - - -
    Source - - pixi/display/DisplayObject.js, line 589 -
    - - - - - - - -
    - - - - - - - - - - - -
    - - - -
    -

    updateCache()

    - - -
    -
    - - - -
    -

    Generates and updates the cached sprite for this object.

    -
    - - - - - - - - - - - -
    - - - - - - - - - - - - - - - - - - - -
    Source - - pixi/display/DisplayObject.js, line 565 -
    - - - - - - - -
    - - - - - - - - - - - -
    - -
    - @@ -3642,7 +2668,7 @@ This can be quite useful if your displayObject is static / complicated and needs Documentation generated by JSDoc 3.3.3 - on Fri Jun 17 2016 12:45:41 GMT+0100 (BST) using the DocStrap template. + on Fri Jul 08 2016 15:42:46 GMT+0100 (GMT Daylight Time) using the DocStrap template. diff --git a/docs/PIXI.PIXI.html b/docs/PIXI.PIXI.html index 3a93f8271..79e63dea4 100644 --- a/docs/PIXI.PIXI.html +++ b/docs/PIXI.PIXI.html @@ -708,10 +708,6 @@ ComplexPrimitiveShader -
  • - DisplayObject -
  • -
  • DisplayObjectContainer
  • @@ -744,6 +740,10 @@ PIXI +
  • + DisplayObject +
  • +
  • PixiFastShader
  • @@ -1317,6 +1317,20 @@ +

    Classes

    + +
    + + +
    + DisplayObject +
    +
    + +
    + +
    + @@ -2487,7 +2501,7 @@ this function is taken from Starling Framework as its pretty neat ;)

    Documentation generated by JSDoc 3.3.3 - on Fri Jun 17 2016 12:45:41 GMT+0100 (BST) using the DocStrap template. + on Fri Jul 08 2016 15:42:46 GMT+0100 (GMT Daylight Time) using the DocStrap template. diff --git a/docs/PIXI.PixiFastShader.html b/docs/PIXI.PixiFastShader.html index 59c067956..9bf8c0aa3 100644 --- a/docs/PIXI.PixiFastShader.html +++ b/docs/PIXI.PixiFastShader.html @@ -708,10 +708,6 @@ ComplexPrimitiveShader -
  • - DisplayObject -
  • -
  • DisplayObjectContainer
  • @@ -744,6 +740,10 @@ PIXI +
  • + DisplayObject +
  • +
  • PixiFastShader
  • @@ -1815,7 +1815,7 @@ Documentation generated by JSDoc 3.3.3 - on Fri Jun 17 2016 12:45:42 GMT+0100 (BST) using the DocStrap template. + on Fri Jul 08 2016 15:42:46 GMT+0100 (GMT Daylight Time) using the DocStrap template. diff --git a/docs/PIXI.PixiShader.html b/docs/PIXI.PixiShader.html index 8992ccff5..23a592570 100644 --- a/docs/PIXI.PixiShader.html +++ b/docs/PIXI.PixiShader.html @@ -708,10 +708,6 @@ ComplexPrimitiveShader -
  • - DisplayObject -
  • -
  • DisplayObjectContainer
  • @@ -744,6 +740,10 @@ PIXI +
  • + DisplayObject +
  • +
  • PixiFastShader
  • @@ -2083,7 +2083,7 @@ http://www.khronos.org/registry/gles/specs/2.0/GLSL_ES_Specification_1.0.17.pdf< Documentation generated by JSDoc 3.3.3 - on Fri Jun 17 2016 12:45:42 GMT+0100 (BST) using the DocStrap template. + on Fri Jul 08 2016 15:42:46 GMT+0100 (GMT Daylight Time) using the DocStrap template. diff --git a/docs/PIXI.PolyK.html b/docs/PIXI.PolyK.html index a77503aea..5f8c152d4 100644 --- a/docs/PIXI.PolyK.html +++ b/docs/PIXI.PolyK.html @@ -708,10 +708,6 @@ ComplexPrimitiveShader -
  • - DisplayObject -
  • -
  • DisplayObjectContainer
  • @@ -744,6 +740,10 @@ PIXI +
  • + DisplayObject +
  • +
  • PixiFastShader
  • @@ -1422,7 +1422,7 @@ Slightly modified by Mat Groves (matgroves.com);

    Documentation generated by JSDoc 3.3.3 - on Fri Jun 17 2016 12:45:42 GMT+0100 (BST) using the DocStrap template. + on Fri Jul 08 2016 15:42:46 GMT+0100 (GMT Daylight Time) using the DocStrap template. diff --git a/docs/PIXI.PrimitiveShader.html b/docs/PIXI.PrimitiveShader.html index a2723e160..6e33a7df5 100644 --- a/docs/PIXI.PrimitiveShader.html +++ b/docs/PIXI.PrimitiveShader.html @@ -708,10 +708,6 @@ ComplexPrimitiveShader -
  • - DisplayObject -
  • -
  • DisplayObjectContainer
  • @@ -744,6 +740,10 @@ PIXI +
  • + DisplayObject +
  • +
  • PixiFastShader
  • @@ -1759,7 +1759,7 @@ Documentation generated by JSDoc 3.3.3 - on Fri Jun 17 2016 12:45:42 GMT+0100 (BST) using the DocStrap template. + on Fri Jul 08 2016 15:42:46 GMT+0100 (GMT Daylight Time) using the DocStrap template. diff --git a/docs/PIXI.RenderTexture.html b/docs/PIXI.RenderTexture.html index 64593740d..8191f576b 100644 --- a/docs/PIXI.RenderTexture.html +++ b/docs/PIXI.RenderTexture.html @@ -708,10 +708,6 @@ ComplexPrimitiveShader -
  • - DisplayObject -
  • -
  • DisplayObjectContainer
  • @@ -744,6 +740,10 @@ PIXI +
  • + DisplayObject +
  • +
  • PixiFastShader
  • @@ -1756,7 +1756,7 @@ irrespective of the actual frame size or placement (which can be influenced by t
    Source - - pixi/textures/Texture.js, line 84 + pixi/textures/Texture.js, line 79
    @@ -1817,7 +1817,7 @@ irrespective of the actual frame size or placement (which can be influenced by t
    Source - - pixi/textures/Texture.js, line 33 + pixi/textures/Texture.js, line 28
    @@ -1947,7 +1947,7 @@ irrespective of the actual frame size or placement (which can be influenced by t
    Source - - pixi/textures/Texture.js, line 100 + pixi/textures/Texture.js, line 95
    @@ -2008,7 +2008,7 @@ irrespective of the actual frame size or placement (which can be influenced by t
    Source - - pixi/textures/Texture.js, line 92 + pixi/textures/Texture.js, line 87
    @@ -2125,7 +2125,7 @@ irrespective of the actual frame size or placement (which can be influenced by t
    Source - - pixi/textures/Texture.js, line 68 + pixi/textures/Texture.js, line 63
    @@ -2425,7 +2425,7 @@ irrespective of the actual frame size or placement (which can be influenced by t
    Source - - pixi/textures/Texture.js, line 170 + pixi/textures/Texture.js, line 165
    @@ -2984,7 +2984,7 @@ irrespective of the actual frame size or placement (which can be influenced by t
    Source - - pixi/textures/Texture.js, line 183 + pixi/textures/Texture.js, line 178
    @@ -3033,7 +3033,7 @@ irrespective of the actual frame size or placement (which can be influenced by t Documentation generated by JSDoc 3.3.3 - on Fri Jun 17 2016 12:45:42 GMT+0100 (BST) using the DocStrap template. + on Fri Jul 08 2016 15:42:46 GMT+0100 (GMT Daylight Time) using the DocStrap template. diff --git a/docs/PIXI.Rope.html b/docs/PIXI.Rope.html index eaca980da..25bb2f8b9 100644 --- a/docs/PIXI.Rope.html +++ b/docs/PIXI.Rope.html @@ -708,10 +708,6 @@ ComplexPrimitiveShader -
  • - DisplayObject -
  • -
  • DisplayObjectContainer
  • @@ -744,6 +740,10 @@ PIXI +
  • + DisplayObject +
  • +
  • PixiFastShader
  • @@ -1402,67 +1402,6 @@
    -
    -

    alpha :Number

    - - -
    -
    - - - -
    -

    The opacity of the object.

    -
    - - - - - -
    - - - - - - - -
    Inherited From:
    -
    - - - - - - - - - - - - - -
    Source - - pixi/display/DisplayObject.js, line 46 -
    - - - - - - - -
    - - - -
    - - -

    blendMode :Number

    @@ -1519,69 +1458,6 @@ -
    - - - -
    - - - -
    -

    cacheAsBitmap :Boolean

    - - -
    -
    - - - -
    -

    Set if this display object is cached as a bitmap. -This basically takes a snap shot of the display object as it is at that moment. It can provide a performance benefit for complex static displayObjects. -To remove simply set this property to 'null'

    -
    - - - - - -
    - - - - - - - -
    Inherited From:
    -
    - - - - - - - - - - - - - -
    Source - - pixi/display/DisplayObject.js, line 355 -
    - - - - - - -
    @@ -1775,143 +1651,6 @@ To remove simply set this property to 'null'

    - - - - -
    - - - -
    -

    filterArea :Rectangle

    - - -
    -
    - - - -
    -

    The area the filter is applied to like the hitArea this is used as more of an optimisation -rather than figuring out the dimensions of the displayObject each frame you can set this rectangle

    -
    - - - - - -
    - - - - - - - -
    Inherited From:
    -
    - - - - - - - - - - - - - -
    Source - - pixi/display/DisplayObject.js, line 164 -
    - - - - - - - -
    - - - -
    - - - -
    -

    filters :Array.<Filter>

    - - -
    -
    - - - -
    -

    Sets the filters for the displayObject. -IMPORTANT: This is a webGL only feature and will be ignored by the Canvas renderer.

    -

    To remove filters simply set this property to 'null'.

    -

    You cannot have a filter and a multiply blend mode active at the same time. Setting a filter will reset -this objects blend mode to NORMAL.

    -
    - - - -
    Type:
    -
      -
    • - -Array.<Filter> - - -
    • -
    - - - -
    - - - - - - - -
    Inherited From:
    -
    - - - - - - - - - - - - - -
    Source - - pixi/display/DisplayObject.js, line 307 -
    - - - - - - -
    @@ -1973,87 +1712,6 @@ this objects blend mode to NORMAL.

    - - - - -
    - - - -
    -

    hitArea :Rectangle|Circle|Ellipse|Polygon

    - - -
    -
    - - - -
    -

    This is the defined area that will pick up mouse / touch events. It is null by default. -Setting it is a neat way of optimising the hitTest function that the interactionManager will use (as it will not need to hit test all the children)

    -
    - - - -
    Type:
    -
      -
    • - -Rectangle -| - -Circle -| - -Ellipse -| - -Polygon - - -
    • -
    - - - -
    - - - - - - - -
    Inherited From:
    -
    - - - - - - - - - - - - - -
    Source - - pixi/display/DisplayObject.js, line 62 -
    - - - - - - -
    @@ -2117,496 +1775,6 @@ Setting it is a neat way of optimising the hitTest function that the interaction - - - - -
    - - - -
    -

    mask :PIXI.Graphics

    - - -
    -
    - - - -
    -

    Sets a mask for the displayObject. A mask is an object that limits the visibility of an object to the shape of the mask applied to it. -In PIXI a regular mask must be a PIXI.Graphics object. This allows for much faster masking in canvas as it utilises shape clipping. -To remove a mask, set this property to null.

    -
    - - - - - -
    - - - - - - - -
    Inherited From:
    -
    - - - - - - - - - - - - - -
    Source - - pixi/display/DisplayObject.js, line 282 -
    - - - - - - - -
    - - - -
    - - - -
    -

    <readonly> parent :PIXI.DisplayObjectContainer

    - - -
    -
    - - - -
    -

    [read-only] The display object container that contains this display object.

    -
    - - - - - -
    - - - - - - - -
    Inherited From:
    -
    - - - - - - - - - - - - - -
    Source - - pixi/display/DisplayObject.js, line 79 -
    - - - - - - - -
    - - - -
    - - - -
    -

    pivot :Point

    - - -
    -
    - - - -
    -

    The pivot point of the displayObject that it rotates around

    -
    - - - - - -
    - - - - - - - -
    Inherited From:
    -
    - - - - - - - - - - - - - -
    Source - - pixi/display/DisplayObject.js, line 30 -
    - - - - - - - -
    - - - -
    - - - -
    -

    position :Point

    - - -
    -
    - - - -
    -

    The coordinate of the object relative to the local coordinates of the parent.

    -
    - - - - - -
    - - - - - - - -
    Inherited From:
    -
    - - - - - - - - - - - - - -
    Source - - pixi/display/DisplayObject.js, line 14 -
    - - - - - - - -
    - - - -
    - - - -
    -

    renderable :Boolean

    - - -
    -
    - - - -
    -

    Can this object be rendered

    -
    - - - - - -
    - - - - - - - -
    Inherited From:
    -
    - - - - - - - - - - - - - -
    Source - - pixi/display/DisplayObject.js, line 71 -
    - - - - - - - -
    - - - -
    - - - -
    -

    rotation :Number

    - - -
    -
    - - - -
    -

    The rotation of the object in radians.

    -
    - - - - - -
    - - - - - - - -
    Inherited From:
    -
    - - - - - - - - - - - - - -
    Source - - pixi/display/DisplayObject.js, line 38 -
    - - - - - - - -
    - - - -
    - - - -
    -

    scale :Point

    - - -
    -
    - - - -
    -

    The scale factor of the object.

    -
    - - - - - -
    - - - - - - - -
    Inherited From:
    -
    - - - - - - - - - - - - - -
    Source - - pixi/display/DisplayObject.js, line 22 -
    - - - - - - - -
    - - - -
    - - - -
    -

    <readonly> stage :Stage

    - - -
    -
    - - - -
    -

    [read-only] The stage the display object is connected to, or undefined if it is not connected to the stage.

    -
    - - - - - -
    - - - - - - - -
    Inherited From:
    -
    - - - - - - - - - - - - - -
    Source - - pixi/display/DisplayObject.js, line 88 -
    - - - - - - -
    @@ -2668,67 +1836,6 @@ To remove a mask, set this property to null.

    - - - - -
    - - - -
    -

    visible :Boolean

    - - -
    -
    - - - -
    -

    The visibility of the object.

    -
    - - - - - -
    - - - - - - - -
    Inherited From:
    -
    - - - - - - - - - - - - - -
    Source - - pixi/display/DisplayObject.js, line 54 -
    - - - - - - -
    @@ -2790,436 +1897,6 @@ To remove a mask, set this property to null.

    - - - - -
    - - - -
    -

    <readonly> worldAlpha :Number

    - - -
    -
    - - - -
    -

    [read-only] The multiplied alpha of the displayObject

    -
    - - - - - -
    - - - - - - - -
    Inherited From:
    -
    - - - - - - - - - - - - - -
    Source - - pixi/display/DisplayObject.js, line 97 -
    - - - - - - - -
    - - - -
    - - - -
    -

    <readonly> worldPosition :Point

    - - -
    -
    - - - -
    -

    The position of the Display Object based on the world transform. -This value is updated at the end of updateTransform and takes all parent transforms into account.

    -
    - - - - - -
    - - - - - - - -
    Inherited From:
    -
    - - - - - - - - - - - - - -
    Source - - pixi/display/DisplayObject.js, line 116 -
    - - - - - - - -
    - - - -
    - - - -
    -

    <readonly> worldRotation :Number

    - - -
    -
    - - - -
    -

    The rotation of the Display Object, in radians, based on the world transform. -This value is updated at the end of updateTransform and takes all parent transforms into account.

    -
    - - - - - -
    - - - - - - - -
    Inherited From:
    -
    - - - - - - - - - - - - - -
    Source - - pixi/display/DisplayObject.js, line 136 -
    - - - - - - - -
    - - - -
    - - - -
    -

    <readonly> worldScale :Point

    - - -
    -
    - - - -
    -

    The scale of the Display Object based on the world transform. -This value is updated at the end of updateTransform and takes all parent transforms into account.

    -
    - - - - - -
    - - - - - - - -
    Inherited From:
    -
    - - - - - - - - - - - - - -
    Source - - pixi/display/DisplayObject.js, line 126 -
    - - - - - - - -
    - - - -
    - - - -
    -

    worldVisible :Boolean

    - - -
    -
    - - - -
    -

    [read-only] Indicates if the sprite is globally visible.

    -
    - - - - - -
    - - - - - - - -
    Inherited From:
    -
    - - - - - - - - - - - - - -
    Source - - pixi/display/DisplayObject.js, line 258 -
    - - - - - - - -
    - - - -
    - - - -
    -

    x :Number

    - - -
    -
    - - - -
    -

    The position of the displayObject on the x axis relative to the local coordinates of the parent.

    -
    - - - - - -
    - - - - - - - -
    Inherited From:
    -
    - - - - - - - - - - - - - -
    Source - - pixi/display/DisplayObject.js, line 722 -
    - - - - - - - -
    - - - -
    - - - -
    -

    y :Number

    - - -
    -
    - - - -
    -

    The position of the displayObject on the y axis relative to the local coordinates of the parent.

    -
    - - - - - -
    - - - - - - - -
    Inherited From:
    -
    - - - - - - - - - - - - - -
    Source - - pixi/display/DisplayObject.js, line 740 -
    - - - - - - -
    @@ -3236,7 +1913,7 @@ This value is updated at the end of updateTransform and takes all parent transfo

    addChild(child) → {PIXI.DisplayObject}

    + id="addChild">addChild(child) → {DisplayObject}
    @@ -3285,7 +1962,7 @@ This value is updated at the end of updateTransform and takes all parent transfo -PIXI.DisplayObject +DisplayObject @@ -3312,7 +1989,7 @@ This value is updated at the end of updateTransform and takes all parent transfo @@ -3380,7 +2057,7 @@ This value is updated at the end of updateTransform and takes all parent transfo

    addChildAt(child, index) → {PIXI.DisplayObject}

    + id="addChildAt">addChildAt(child, index) → {DisplayObject}
    @@ -3429,7 +2106,7 @@ This value is updated at the end of updateTransform and takes all parent transfo -PIXI.DisplayObject +DisplayObject @@ -3479,7 +2156,7 @@ This value is updated at the end of updateTransform and takes all parent transfo @@ -3541,276 +2218,6 @@ This value is updated at the end of updateTransform and takes all parent transfo - - - - -
    -

    destroy()

    - - -
    -
    - - - -
    -

    Destroy this DisplayObject. -Removes all references to transformCallbacks, its parent, the stage, filters, bounds, mask and cached Sprites.

    -
    - - - - - - - - - - - -
    - - - - - - - -
    Inherited From:
    -
    - - - - - - - - - - - - - -
    Source - - pixi/display/DisplayObject.js, line 223 -
    - - - - - - - -
    - - - - - - - - - - - -
    - - - -
    -

    generateTexture(resolution, scaleMode, renderer) → {PIXI.RenderTexture}

    - - -
    -
    - - - -
    -

    Useful function that returns a texture of the displayObject object that can then be used to create sprites -This can be quite useful if your displayObject is static / complicated and needs to be reused multiple times.

    -
    - - - - - - - -
    Parameters:
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    NameTypeDescription
    resolution - - -Number - - - -

    The resolution of the texture being generated

    scaleMode - - -Number - - - -

    See {{#crossLink "PIXI/scaleModes:property"}}PIXI.scaleModes{{/crossLink}} for possible values

    renderer - - -PIXI.CanvasRenderer -| - -PIXI.WebGLRenderer - - - -

    The renderer used to generate the texture.

    - - - - -
    Returns:
    -
    - - - -
    - -PIXI.RenderTexture - - - -
    - -
    -

    a texture of the graphics object

    -
    - - - -
    - - - -
    - - - - - - - -
    Inherited From:
    -
    - - - - - - - - - - - - - -
    Source - - pixi/display/DisplayObject.js, line 541 -
    - - - - - - - -
    - - - - - - - - - - -
    @@ -3961,7 +2368,7 @@ This can be quite useful if your displayObject is static / complicated and needs

    getChildAt(index) → {PIXI.DisplayObject}

    + id="getChildAt">getChildAt(index) → {DisplayObject}
    @@ -4037,7 +2444,7 @@ This can be quite useful if your displayObject is static / complicated and needs @@ -4154,7 +2561,7 @@ This can be quite useful if your displayObject is static / complicated and needs -PIXI.DisplayObject +DisplayObject @@ -4317,7 +2724,7 @@ This can be quite useful if your displayObject is static / complicated and needs
    Source - - pixi/display/DisplayObjectContainer.js, line 381 + pixi/display/DisplayObjectContainer.js, line 383
    @@ -4344,82 +2751,7 @@ This can be quite useful if your displayObject is static / complicated and needs

    preUpdate()

    - - -
    -
    - - - -
    -

    Empty, to be overridden by classes that require it.

    -
    - - - - - - - - - - - -
    - - - - - - - -
    Inherited From:
    -
    - - - - - - - - - - - - - -
    Source - - pixi/display/DisplayObject.js, line 532 -
    - - - - - - - -
    - - - - - - - - - - - -
    - - - -
    -

    removeChild(child) → {PIXI.DisplayObject}

    + id="removeChild">removeChild(child) → {DisplayObject}
    @@ -4468,7 +2800,7 @@ This can be quite useful if your displayObject is static / complicated and needs -PIXI.DisplayObject +DisplayObject @@ -4495,7 +2827,7 @@ This can be quite useful if your displayObject is static / complicated and needs @@ -4563,7 +2895,7 @@ This can be quite useful if your displayObject is static / complicated and needs

    removeChildAt(index) → {PIXI.DisplayObject}

    + id="removeChildAt">removeChildAt(index) → {DisplayObject}
    @@ -4639,7 +2971,7 @@ This can be quite useful if your displayObject is static / complicated and needs @@ -4902,7 +3234,7 @@ This can be quite useful if your displayObject is static / complicated and needs
    Source - - pixi/display/DisplayObjectContainer.js, line 426 + pixi/display/DisplayObjectContainer.js, line 428
    @@ -4978,7 +3310,7 @@ This can be quite useful if your displayObject is static / complicated and needs -PIXI.DisplayObject +DisplayObject @@ -5173,7 +3505,7 @@ This can be quite useful if your displayObject is static / complicated and needs
    Source - - pixi/display/DisplayObjectContainer.js, line 410 + pixi/display/DisplayObjectContainer.js, line 412
    @@ -5249,7 +3581,7 @@ This can be quite useful if your displayObject is static / complicated and needs -PIXI.DisplayObject +DisplayObject @@ -5272,7 +3604,7 @@ This can be quite useful if your displayObject is static / complicated and needs -PIXI.DisplayObject +DisplayObject @@ -5341,412 +3673,6 @@ This can be quite useful if your displayObject is static / complicated and needs - - - - -
    -

    toGlobal(position) → {Point}

    - - -
    -
    - - - -
    -

    Calculates the global position of the display object

    -
    - - - - - - - -
    Parameters:
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    NameTypeDescription
    position - - -Point - - - -

    The world origin to calculate from

    - - - - -
    Returns:
    -
    - - - -
    - -Point - - - -
    - -
    -

    A point object representing the position of this object

    -
    - - - -
    - - - -
    - - - - - - - -
    Inherited From:
    -
    - - - - - - - - - - - - - -
    Source - - pixi/display/DisplayObject.js, line 575 -
    - - - - - - - -
    - - - - - - - - - - - -
    - - - -
    -

    toLocal(position, from) → {Point}

    - - -
    -
    - - - -
    -

    Calculates the local position of the display object relative to another point

    -
    - - - - - - - -
    Parameters:
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    NameTypeArgumentDescription
    position - - -Point - - - - - - - - - -

    The world origin to calculate from

    from - - -PIXI.DisplayObject - - - - - - <optional>
    - - - - - -

    The DisplayObject to calculate the global position from

    - - - - -
    Returns:
    -
    - - - -
    - -Point - - - -
    - -
    -

    A point object representing the position of this object

    -
    - - - -
    - - - -
    - - - - - - - -
    Inherited From:
    -
    - - - - - - - - - - - - - -
    Source - - pixi/display/DisplayObject.js, line 589 -
    - - - - - - - -
    - - - - - - - - - - - -
    - - - -
    -

    updateCache()

    - - -
    -
    - - - -
    -

    Generates and updates the cached sprite for this object.

    -
    - - - - - - - - - - - -
    - - - - - - - -
    Inherited From:
    -
    - - - - - - - - - - - - - -
    Source - - pixi/display/DisplayObject.js, line 565 -
    - - - - - - - -
    - - - - - - - - - - -
    @@ -5775,7 +3701,7 @@ This can be quite useful if your displayObject is static / complicated and needs Documentation generated by JSDoc 3.3.3 - on Fri Jun 17 2016 12:45:42 GMT+0100 (BST) using the DocStrap template. + on Fri Jul 08 2016 15:42:46 GMT+0100 (GMT Daylight Time) using the DocStrap template. diff --git a/docs/PIXI.Sprite.html b/docs/PIXI.Sprite.html index d037853fb..738140d63 100644 --- a/docs/PIXI.Sprite.html +++ b/docs/PIXI.Sprite.html @@ -708,10 +708,6 @@ ComplexPrimitiveShader -
  • - DisplayObject -
  • -
  • DisplayObjectContainer
  • @@ -744,6 +740,10 @@ PIXI +
  • + DisplayObject +
  • +
  • PixiFastShader
  • @@ -1383,67 +1383,6 @@ then obviously don't forget to add it to the stage you have already created

    <
    -
    -

    alpha :Number

    - - -
    -
    - - - -
    -

    The opacity of the object.

    -
    - - - - - -
    - - - - - - - -
    Inherited From:
    -
    - - - - - - - - - - - - - -
    Source - - pixi/display/DisplayObject.js, line 46 -
    - - - - - - - -
    - - - -
    - - -

    anchor :Point

    @@ -1555,69 +1494,6 @@ Setting the anchor to 1,1 would mean the textures origin points will be the bott -
    - - - - - - - -
    -

    cacheAsBitmap :Boolean

    - - -
    -
    - - - -
    -

    Set if this display object is cached as a bitmap. -This basically takes a snap shot of the display object as it is at that moment. It can provide a performance benefit for complex static displayObjects. -To remove simply set this property to 'null'

    -
    - - - - - -
    - - - - - - - -
    Inherited From:
    -
    - - - - - - - - - - - - - -
    Source - - pixi/display/DisplayObject.js, line 355 -
    - - - - - - -
    @@ -1748,143 +1624,6 @@ To remove simply set this property to 'null'

    - - - - -
    - - - -
    -

    filterArea :Rectangle

    - - -
    -
    - - - -
    -

    The area the filter is applied to like the hitArea this is used as more of an optimisation -rather than figuring out the dimensions of the displayObject each frame you can set this rectangle

    -
    - - - - - -
    - - - - - - - -
    Inherited From:
    -
    - - - - - - - - - - - - - -
    Source - - pixi/display/DisplayObject.js, line 164 -
    - - - - - - - -
    - - - -
    - - - -
    -

    filters :Array.<Filter>

    - - -
    -
    - - - -
    -

    Sets the filters for the displayObject. -IMPORTANT: This is a webGL only feature and will be ignored by the Canvas renderer.

    -

    To remove filters simply set this property to 'null'.

    -

    You cannot have a filter and a multiply blend mode active at the same time. Setting a filter will reset -this objects blend mode to NORMAL.

    -
    - - - -
    Type:
    -
      -
    • - -Array.<Filter> - - -
    • -
    - - - -
    - - - - - - - -
    Inherited From:
    -
    - - - - - - - - - - - - - -
    Source - - pixi/display/DisplayObject.js, line 307 -
    - - - - - - -
    @@ -1941,87 +1680,6 @@ this objects blend mode to NORMAL.

    - - - - -
    - - - -
    -

    hitArea :Rectangle|Circle|Ellipse|Polygon

    - - -
    -
    - - - -
    -

    This is the defined area that will pick up mouse / touch events. It is null by default. -Setting it is a neat way of optimising the hitTest function that the interactionManager will use (as it will not need to hit test all the children)

    -
    - - - -
    Type:
    -
      -
    • - -Rectangle -| - -Circle -| - -Ellipse -| - -Polygon - - -
    • -
    - - - -
    - - - - - - - -
    Inherited From:
    -
    - - - - - - - - - - - - - -
    Source - - pixi/display/DisplayObject.js, line 62 -
    - - - - - - -
    @@ -2085,435 +1743,6 @@ Setting it is a neat way of optimising the hitTest function that the interaction - - - - -
    - - - -
    -

    mask :PIXI.Graphics

    - - -
    -
    - - - -
    -

    Sets a mask for the displayObject. A mask is an object that limits the visibility of an object to the shape of the mask applied to it. -In PIXI a regular mask must be a PIXI.Graphics object. This allows for much faster masking in canvas as it utilises shape clipping. -To remove a mask, set this property to null.

    -
    - - - - - -
    - - - - - - - -
    Inherited From:
    -
    - - - - - - - - - - - - - -
    Source - - pixi/display/DisplayObject.js, line 282 -
    - - - - - - - -
    - - - -
    - - - -
    -

    <readonly> parent :PIXI.DisplayObjectContainer

    - - -
    -
    - - - -
    -

    [read-only] The display object container that contains this display object.

    -
    - - - - - -
    - - - - - - - -
    Inherited From:
    -
    - - - - - - - - - - - - - -
    Source - - pixi/display/DisplayObject.js, line 79 -
    - - - - - - - -
    - - - -
    - - - -
    -

    pivot :Point

    - - -
    -
    - - - -
    -

    The pivot point of the displayObject that it rotates around

    -
    - - - - - -
    - - - - - - - -
    Inherited From:
    -
    - - - - - - - - - - - - - -
    Source - - pixi/display/DisplayObject.js, line 30 -
    - - - - - - - -
    - - - -
    - - - -
    -

    position :Point

    - - -
    -
    - - - -
    -

    The coordinate of the object relative to the local coordinates of the parent.

    -
    - - - - - -
    - - - - - - - -
    Inherited From:
    -
    - - - - - - - - - - - - - -
    Source - - pixi/display/DisplayObject.js, line 14 -
    - - - - - - - -
    - - - -
    - - - -
    -

    renderable :Boolean

    - - -
    -
    - - - -
    -

    Can this object be rendered

    -
    - - - - - -
    - - - - - - - -
    Inherited From:
    -
    - - - - - - - - - - - - - -
    Source - - pixi/display/DisplayObject.js, line 71 -
    - - - - - - - -
    - - - -
    - - - -
    -

    rotation :Number

    - - -
    -
    - - - -
    -

    The rotation of the object in radians.

    -
    - - - - - -
    - - - - - - - -
    Inherited From:
    -
    - - - - - - - - - - - - - -
    Source - - pixi/display/DisplayObject.js, line 38 -
    - - - - - - - -
    - - - -
    - - - -
    -

    scale :Point

    - - -
    -
    - - - -
    -

    The scale factor of the object.

    -
    - - - - - -
    - - - - - - - -
    Inherited From:
    -
    - - - - - - - - - - - - - -
    Source - - pixi/display/DisplayObject.js, line 22 -
    - - - - - - -
    @@ -2573,67 +1802,6 @@ To remove a mask, set this property to null.

    - - - - -
    - - - -
    -

    <readonly> stage :Stage

    - - -
    -
    - - - -
    -

    [read-only] The stage the display object is connected to, or undefined if it is not connected to the stage.

    -
    - - - - - -
    - - - - - - - -
    Inherited From:
    -
    - - - - - - - - - - - - - -
    Source - - pixi/display/DisplayObject.js, line 88 -
    - - - - - - -
    @@ -2808,67 +1976,6 @@ To remove a mask, set this property to null.

    - - - - -
    - - - -
    -

    visible :Boolean

    - - -
    -
    - - - -
    -

    The visibility of the object.

    -
    - - - - - -
    - - - - - - - -
    Inherited From:
    -
    - - - - - - - - - - - - - -
    Source - - pixi/display/DisplayObject.js, line 54 -
    - - - - - - -
    @@ -2925,436 +2032,6 @@ To remove a mask, set this property to null.

    - - - - -
    - - - -
    -

    <readonly> worldAlpha :Number

    - - -
    -
    - - - -
    -

    [read-only] The multiplied alpha of the displayObject

    -
    - - - - - -
    - - - - - - - -
    Inherited From:
    -
    - - - - - - - - - - - - - -
    Source - - pixi/display/DisplayObject.js, line 97 -
    - - - - - - - -
    - - - -
    - - - -
    -

    <readonly> worldPosition :Point

    - - -
    -
    - - - -
    -

    The position of the Display Object based on the world transform. -This value is updated at the end of updateTransform and takes all parent transforms into account.

    -
    - - - - - -
    - - - - - - - -
    Inherited From:
    -
    - - - - - - - - - - - - - -
    Source - - pixi/display/DisplayObject.js, line 116 -
    - - - - - - - -
    - - - -
    - - - -
    -

    <readonly> worldRotation :Number

    - - -
    -
    - - - -
    -

    The rotation of the Display Object, in radians, based on the world transform. -This value is updated at the end of updateTransform and takes all parent transforms into account.

    -
    - - - - - -
    - - - - - - - -
    Inherited From:
    -
    - - - - - - - - - - - - - -
    Source - - pixi/display/DisplayObject.js, line 136 -
    - - - - - - - -
    - - - -
    - - - -
    -

    <readonly> worldScale :Point

    - - -
    -
    - - - -
    -

    The scale of the Display Object based on the world transform. -This value is updated at the end of updateTransform and takes all parent transforms into account.

    -
    - - - - - -
    - - - - - - - -
    Inherited From:
    -
    - - - - - - - - - - - - - -
    Source - - pixi/display/DisplayObject.js, line 126 -
    - - - - - - - -
    - - - -
    - - - -
    -

    worldVisible :Boolean

    - - -
    -
    - - - -
    -

    [read-only] Indicates if the sprite is globally visible.

    -
    - - - - - -
    - - - - - - - -
    Inherited From:
    -
    - - - - - - - - - - - - - -
    Source - - pixi/display/DisplayObject.js, line 258 -
    - - - - - - - -
    - - - -
    - - - -
    -

    x :Number

    - - -
    -
    - - - -
    -

    The position of the displayObject on the x axis relative to the local coordinates of the parent.

    -
    - - - - - -
    - - - - - - - -
    Inherited From:
    -
    - - - - - - - - - - - - - -
    Source - - pixi/display/DisplayObject.js, line 722 -
    - - - - - - - -
    - - - -
    - - - -
    -

    y :Number

    - - -
    -
    - - - -
    -

    The position of the displayObject on the y axis relative to the local coordinates of the parent.

    -
    - - - - - -
    - - - - - - - -
    Inherited From:
    -
    - - - - - - - - - - - - - -
    Source - - pixi/display/DisplayObject.js, line 740 -
    - - - - - - -
    @@ -3371,287 +2048,7 @@ This value is updated at the end of updateTransform and takes all parent transfo

    <static> fromFrame(frameId) → {PIXI.Sprite}

    - - -
    -
    - - - -
    -

    Helper function that creates a sprite that will contain a texture from the TextureCache based on the frameId - The frame ids are created when a Texture packer file has been loaded

    -
    - - - - - - - -
    Parameters:
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    NameTypeDescription
    frameId - - -String - - - -

    The frame Id of the texture in the cache

    - - - - -
    Returns:
    -
    - - - -
    - -PIXI.Sprite - - - -
    - -
    -

    A new Sprite using a texture from the texture cache matching the frameId

    -
    - - - -
    - - - -
    - - - - - - - - - - - - - - - - - - - -
    Source - - pixi/display/Sprite.js, line 497 -
    - - - - - - - -
    - - - - - - - - - - - -
    - - - -
    -

    <static> fromImage(imageId) → {PIXI.Sprite}

    - - -
    -
    - - - -
    -

    Helper function that creates a sprite that will contain a texture based on an image url - If the image is not in the texture cache it will be loaded

    -
    - - - - - - - -
    Parameters:
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    NameTypeDescription
    imageId - - -String - - - -

    The image url of the texture

    - - - - -
    Returns:
    -
    - - - -
    - -PIXI.Sprite - - - -
    - -
    -

    A new Sprite using a texture from the texture cache matching the image id

    -
    - - - -
    - - - -
    - - - - - - - - - - - - - - - - - - - -
    Source - - pixi/display/Sprite.js, line 516 -
    - - - - - - - -
    - - - - - - - - - - - -
    - - - -
    -

    addChild(child) → {PIXI.DisplayObject}

    + id="addChild">addChild(child) → {DisplayObject}
    @@ -3700,7 +2097,7 @@ This value is updated at the end of updateTransform and takes all parent transfo -PIXI.DisplayObject +DisplayObject @@ -3727,7 +2124,7 @@ This value is updated at the end of updateTransform and takes all parent transfo @@ -3795,7 +2192,7 @@ This value is updated at the end of updateTransform and takes all parent transfo

    addChildAt(child, index) → {PIXI.DisplayObject}

    + id="addChildAt">addChildAt(child, index) → {DisplayObject}
    @@ -3844,7 +2241,7 @@ This value is updated at the end of updateTransform and takes all parent transfo -PIXI.DisplayObject +DisplayObject @@ -3894,7 +2291,7 @@ This value is updated at the end of updateTransform and takes all parent transfo @@ -3956,276 +2353,6 @@ This value is updated at the end of updateTransform and takes all parent transfo - - - - -
    -

    destroy()

    - - -
    -
    - - - -
    -

    Destroy this DisplayObject. -Removes all references to transformCallbacks, its parent, the stage, filters, bounds, mask and cached Sprites.

    -
    - - - - - - - - - - - -
    - - - - - - - -
    Inherited From:
    -
    - - - - - - - - - - - - - -
    Source - - pixi/display/DisplayObject.js, line 223 -
    - - - - - - - -
    - - - - - - - - - - - -
    - - - -
    -

    generateTexture(resolution, scaleMode, renderer) → {PIXI.RenderTexture}

    - - -
    -
    - - - -
    -

    Useful function that returns a texture of the displayObject object that can then be used to create sprites -This can be quite useful if your displayObject is static / complicated and needs to be reused multiple times.

    -
    - - - - - - - -
    Parameters:
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    NameTypeDescription
    resolution - - -Number - - - -

    The resolution of the texture being generated

    scaleMode - - -Number - - - -

    See {{#crossLink "PIXI/scaleModes:property"}}PIXI.scaleModes{{/crossLink}} for possible values

    renderer - - -PIXI.CanvasRenderer -| - -PIXI.WebGLRenderer - - - -

    The renderer used to generate the texture.

    - - - - -
    Returns:
    -
    - - - -
    - -PIXI.RenderTexture - - - -
    - -
    -

    a texture of the graphics object

    -
    - - - -
    - - - -
    - - - - - - - -
    Inherited From:
    -
    - - - - - - - - - - - - - -
    Source - - pixi/display/DisplayObject.js, line 541 -
    - - - - - - - -
    - - - - - - - - - - -
    @@ -4378,7 +2505,7 @@ on the root most object in this Sprites display list first.

    getChildAt(index) → {PIXI.DisplayObject}

    + id="getChildAt">getChildAt(index) → {DisplayObject}
    @@ -4454,7 +2581,7 @@ on the root most object in this Sprites display list first.

    @@ -4571,7 +2698,7 @@ on the root most object in this Sprites display list first.

    -PIXI.DisplayObject +DisplayObject @@ -4734,7 +2861,7 @@ on the root most object in this Sprites display list first.

    Source - - pixi/display/DisplayObjectContainer.js, line 381 + pixi/display/DisplayObjectContainer.js, line 383
    @@ -4761,82 +2888,7 @@ on the root most object in this Sprites display list first.

    preUpdate()

    - - -
    -
    - - - -
    -

    Empty, to be overridden by classes that require it.

    -
    - - - - - - - - - - - -
    - - - - - - - -
    Inherited From:
    -
    - - - - - - - - - - - - - -
    Source - - pixi/display/DisplayObject.js, line 532 -
    - - - - - - - -
    - - - - - - - - - - - -
    - - - -
    -

    removeChild(child) → {PIXI.DisplayObject}

    + id="removeChild">removeChild(child) → {DisplayObject}
    @@ -4885,7 +2937,7 @@ on the root most object in this Sprites display list first.

    -PIXI.DisplayObject +DisplayObject @@ -4912,7 +2964,7 @@ on the root most object in this Sprites display list first.

    @@ -4980,7 +3032,7 @@ on the root most object in this Sprites display list first.

    removeChildAt(index) → {PIXI.DisplayObject}

    + id="removeChildAt">removeChildAt(index) → {DisplayObject}
    @@ -5056,7 +3108,7 @@ on the root most object in this Sprites display list first.

    @@ -5319,7 +3371,7 @@ on the root most object in this Sprites display list first.

    Source - - pixi/display/DisplayObjectContainer.js, line 426 + pixi/display/DisplayObjectContainer.js, line 428
    @@ -5395,7 +3447,7 @@ on the root most object in this Sprites display list first.

    -PIXI.DisplayObject +DisplayObject @@ -5590,7 +3642,7 @@ on the root most object in this Sprites display list first.

    Source - - pixi/display/DisplayObjectContainer.js, line 410 + pixi/display/DisplayObjectContainer.js, line 412
    @@ -5841,7 +3893,7 @@ texture this Sprite was using.

    -PIXI.DisplayObject +DisplayObject @@ -5864,7 +3916,7 @@ texture this Sprite was using.

    -PIXI.DisplayObject +DisplayObject @@ -5933,412 +3985,6 @@ texture this Sprite was using.

    - - - - -
    -

    toGlobal(position) → {Point}

    - - -
    -
    - - - -
    -

    Calculates the global position of the display object

    -
    - - - - - - - -
    Parameters:
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    NameTypeDescription
    position - - -Point - - - -

    The world origin to calculate from

    - - - - -
    Returns:
    -
    - - - -
    - -Point - - - -
    - -
    -

    A point object representing the position of this object

    -
    - - - -
    - - - -
    - - - - - - - -
    Inherited From:
    -
    - - - - - - - - - - - - - -
    Source - - pixi/display/DisplayObject.js, line 575 -
    - - - - - - - -
    - - - - - - - - - - - -
    - - - -
    -

    toLocal(position, from) → {Point}

    - - -
    -
    - - - -
    -

    Calculates the local position of the display object relative to another point

    -
    - - - - - - - -
    Parameters:
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    NameTypeArgumentDescription
    position - - -Point - - - - - - - - - -

    The world origin to calculate from

    from - - -PIXI.DisplayObject - - - - - - <optional>
    - - - - - -

    The DisplayObject to calculate the global position from

    - - - - -
    Returns:
    -
    - - - -
    - -Point - - - -
    - -
    -

    A point object representing the position of this object

    -
    - - - -
    - - - -
    - - - - - - - -
    Inherited From:
    -
    - - - - - - - - - - - - - -
    Source - - pixi/display/DisplayObject.js, line 589 -
    - - - - - - - -
    - - - - - - - - - - - -
    - - - -
    -

    updateCache()

    - - -
    -
    - - - -
    -

    Generates and updates the cached sprite for this object.

    -
    - - - - - - - - - - - -
    - - - - - - - -
    Inherited From:
    -
    - - - - - - - - - - - - - -
    Source - - pixi/display/DisplayObject.js, line 565 -
    - - - - - - - -
    - - - - - - - - - - -
    @@ -6367,7 +4013,7 @@ texture this Sprite was using.

    Documentation generated by JSDoc 3.3.3 - on Fri Jun 17 2016 12:45:42 GMT+0100 (BST) using the DocStrap template. + on Fri Jul 08 2016 15:42:46 GMT+0100 (GMT Daylight Time) using the DocStrap template. diff --git a/docs/PIXI.SpriteBatch.html b/docs/PIXI.SpriteBatch.html index 2e9fbbd98..a64c9a09e 100644 --- a/docs/PIXI.SpriteBatch.html +++ b/docs/PIXI.SpriteBatch.html @@ -708,10 +708,6 @@ ComplexPrimitiveShader -
  • - DisplayObject -
  • -
  • DisplayObjectContainer
  • @@ -744,6 +740,10 @@ PIXI +
  • + DisplayObject +
  • +
  • PixiFastShader
  • @@ -1405,7 +1405,7 @@ And here you have a hundred sprites that will be renderer at the speed of light< Documentation generated by JSDoc 3.3.3 - on Fri Jun 17 2016 12:45:42 GMT+0100 (BST) using the DocStrap template. + on Fri Jul 08 2016 15:42:47 GMT+0100 (GMT Daylight Time) using the DocStrap template. diff --git a/docs/PIXI.Strip.html b/docs/PIXI.Strip.html index 98e4abf83..01adde49e 100644 --- a/docs/PIXI.Strip.html +++ b/docs/PIXI.Strip.html @@ -708,10 +708,6 @@ ComplexPrimitiveShader -
  • - DisplayObject -
  • -
  • DisplayObjectContainer
  • @@ -744,6 +740,10 @@ PIXI +
  • + DisplayObject +
  • +
  • PixiFastShader
  • @@ -1421,67 +1421,6 @@
    -
    -

    alpha :Number

    - - -
    -
    - - - -
    -

    The opacity of the object.

    -
    - - - - - -
    - - - - - - - -
    Inherited From:
    -
    - - - - - - - - - - - - - -
    Source - - pixi/display/DisplayObject.js, line 46 -
    - - - - - - - -
    - - - -
    - - -

    blendMode :Number

    @@ -1533,69 +1472,6 @@ -
    - - - - - - - -
    -

    cacheAsBitmap :Boolean

    - - -
    -
    - - - -
    -

    Set if this display object is cached as a bitmap. -This basically takes a snap shot of the display object as it is at that moment. It can provide a performance benefit for complex static displayObjects. -To remove simply set this property to 'null'

    -
    - - - - - -
    - - - - - - - -
    Inherited From:
    -
    - - - - - - - - - - - - - -
    Source - - pixi/display/DisplayObject.js, line 355 -
    - - - - - - -
    @@ -1779,143 +1655,6 @@ To remove simply set this property to 'null'

    - - - - -
    - - - -
    -

    filterArea :Rectangle

    - - -
    -
    - - - -
    -

    The area the filter is applied to like the hitArea this is used as more of an optimisation -rather than figuring out the dimensions of the displayObject each frame you can set this rectangle

    -
    - - - - - -
    - - - - - - - -
    Inherited From:
    -
    - - - - - - - - - - - - - -
    Source - - pixi/display/DisplayObject.js, line 164 -
    - - - - - - - -
    - - - -
    - - - -
    -

    filters :Array.<Filter>

    - - -
    -
    - - - -
    -

    Sets the filters for the displayObject. -IMPORTANT: This is a webGL only feature and will be ignored by the Canvas renderer.

    -

    To remove filters simply set this property to 'null'.

    -

    You cannot have a filter and a multiply blend mode active at the same time. Setting a filter will reset -this objects blend mode to NORMAL.

    -
    - - - -
    Type:
    -
      -
    • - -Array.<Filter> - - -
    • -
    - - - -
    - - - - - - - -
    Inherited From:
    -
    - - - - - - - - - - - - - -
    Source - - pixi/display/DisplayObject.js, line 307 -
    - - - - - - -
    @@ -1977,87 +1716,6 @@ this objects blend mode to NORMAL.

    - - - - -
    - - - -
    -

    hitArea :Rectangle|Circle|Ellipse|Polygon

    - - -
    -
    - - - -
    -

    This is the defined area that will pick up mouse / touch events. It is null by default. -Setting it is a neat way of optimising the hitTest function that the interactionManager will use (as it will not need to hit test all the children)

    -
    - - - -
    Type:
    -
      -
    • - -Rectangle -| - -Circle -| - -Ellipse -| - -Polygon - - -
    • -
    - - - -
    - - - - - - - -
    Inherited From:
    -
    - - - - - - - - - - - - - -
    Source - - pixi/display/DisplayObject.js, line 62 -
    - - - - - - -
    @@ -2121,496 +1779,6 @@ Setting it is a neat way of optimising the hitTest function that the interaction - - - - -
    - - - -
    -

    mask :PIXI.Graphics

    - - -
    -
    - - - -
    -

    Sets a mask for the displayObject. A mask is an object that limits the visibility of an object to the shape of the mask applied to it. -In PIXI a regular mask must be a PIXI.Graphics object. This allows for much faster masking in canvas as it utilises shape clipping. -To remove a mask, set this property to null.

    -
    - - - - - -
    - - - - - - - -
    Inherited From:
    -
    - - - - - - - - - - - - - -
    Source - - pixi/display/DisplayObject.js, line 282 -
    - - - - - - - -
    - - - -
    - - - -
    -

    <readonly> parent :PIXI.DisplayObjectContainer

    - - -
    -
    - - - -
    -

    [read-only] The display object container that contains this display object.

    -
    - - - - - -
    - - - - - - - -
    Inherited From:
    -
    - - - - - - - - - - - - - -
    Source - - pixi/display/DisplayObject.js, line 79 -
    - - - - - - - -
    - - - -
    - - - -
    -

    pivot :Point

    - - -
    -
    - - - -
    -

    The pivot point of the displayObject that it rotates around

    -
    - - - - - -
    - - - - - - - -
    Inherited From:
    -
    - - - - - - - - - - - - - -
    Source - - pixi/display/DisplayObject.js, line 30 -
    - - - - - - - -
    - - - -
    - - - -
    -

    position :Point

    - - -
    -
    - - - -
    -

    The coordinate of the object relative to the local coordinates of the parent.

    -
    - - - - - -
    - - - - - - - -
    Inherited From:
    -
    - - - - - - - - - - - - - -
    Source - - pixi/display/DisplayObject.js, line 14 -
    - - - - - - - -
    - - - -
    - - - -
    -

    renderable :Boolean

    - - -
    -
    - - - -
    -

    Can this object be rendered

    -
    - - - - - -
    - - - - - - - -
    Inherited From:
    -
    - - - - - - - - - - - - - -
    Source - - pixi/display/DisplayObject.js, line 71 -
    - - - - - - - -
    - - - -
    - - - -
    -

    rotation :Number

    - - -
    -
    - - - -
    -

    The rotation of the object in radians.

    -
    - - - - - -
    - - - - - - - -
    Inherited From:
    -
    - - - - - - - - - - - - - -
    Source - - pixi/display/DisplayObject.js, line 38 -
    - - - - - - - -
    - - - -
    - - - -
    -

    scale :Point

    - - -
    -
    - - - -
    -

    The scale factor of the object.

    -
    - - - - - -
    - - - - - - - -
    Inherited From:
    -
    - - - - - - - - - - - - - -
    Source - - pixi/display/DisplayObject.js, line 22 -
    - - - - - - - -
    - - - -
    - - - -
    -

    <readonly> stage :Stage

    - - -
    -
    - - - -
    -

    [read-only] The stage the display object is connected to, or undefined if it is not connected to the stage.

    -
    - - - - - -
    - - - - - - - -
    Inherited From:
    -
    - - - - - - - - - - - - - -
    Source - - pixi/display/DisplayObject.js, line 88 -
    - - - - - - -
    @@ -2667,67 +1835,6 @@ To remove a mask, set this property to null.

    - - - - -
    - - - -
    -

    visible :Boolean

    - - -
    -
    - - - -
    -

    The visibility of the object.

    -
    - - - - - -
    - - - - - - - -
    Inherited From:
    -
    - - - - - - - - - - - - - -
    Source - - pixi/display/DisplayObject.js, line 54 -
    - - - - - - -
    @@ -2789,436 +1896,6 @@ To remove a mask, set this property to null.

    - - - - -
    - - - -
    -

    <readonly> worldAlpha :Number

    - - -
    -
    - - - -
    -

    [read-only] The multiplied alpha of the displayObject

    -
    - - - - - -
    - - - - - - - -
    Inherited From:
    -
    - - - - - - - - - - - - - -
    Source - - pixi/display/DisplayObject.js, line 97 -
    - - - - - - - -
    - - - -
    - - - -
    -

    <readonly> worldPosition :Point

    - - -
    -
    - - - -
    -

    The position of the Display Object based on the world transform. -This value is updated at the end of updateTransform and takes all parent transforms into account.

    -
    - - - - - -
    - - - - - - - -
    Inherited From:
    -
    - - - - - - - - - - - - - -
    Source - - pixi/display/DisplayObject.js, line 116 -
    - - - - - - - -
    - - - -
    - - - -
    -

    <readonly> worldRotation :Number

    - - -
    -
    - - - -
    -

    The rotation of the Display Object, in radians, based on the world transform. -This value is updated at the end of updateTransform and takes all parent transforms into account.

    -
    - - - - - -
    - - - - - - - -
    Inherited From:
    -
    - - - - - - - - - - - - - -
    Source - - pixi/display/DisplayObject.js, line 136 -
    - - - - - - - -
    - - - -
    - - - -
    -

    <readonly> worldScale :Point

    - - -
    -
    - - - -
    -

    The scale of the Display Object based on the world transform. -This value is updated at the end of updateTransform and takes all parent transforms into account.

    -
    - - - - - -
    - - - - - - - -
    Inherited From:
    -
    - - - - - - - - - - - - - -
    Source - - pixi/display/DisplayObject.js, line 126 -
    - - - - - - - -
    - - - -
    - - - -
    -

    worldVisible :Boolean

    - - -
    -
    - - - -
    -

    [read-only] Indicates if the sprite is globally visible.

    -
    - - - - - -
    - - - - - - - -
    Inherited From:
    -
    - - - - - - - - - - - - - -
    Source - - pixi/display/DisplayObject.js, line 258 -
    - - - - - - - -
    - - - -
    - - - -
    -

    x :Number

    - - -
    -
    - - - -
    -

    The position of the displayObject on the x axis relative to the local coordinates of the parent.

    -
    - - - - - -
    - - - - - - - -
    Inherited From:
    -
    - - - - - - - - - - - - - -
    Source - - pixi/display/DisplayObject.js, line 722 -
    - - - - - - - -
    - - - -
    - - - -
    -

    y :Number

    - - -
    -
    - - - -
    -

    The position of the displayObject on the y axis relative to the local coordinates of the parent.

    -
    - - - - - -
    - - - - - - - -
    Inherited From:
    -
    - - - - - - - - - - - - - -
    Source - - pixi/display/DisplayObject.js, line 740 -
    - - - - - - -
    @@ -3235,7 +1912,7 @@ This value is updated at the end of updateTransform and takes all parent transfo

    addChild(child) → {PIXI.DisplayObject}

    + id="addChild">addChild(child) → {DisplayObject}
    @@ -3284,7 +1961,7 @@ This value is updated at the end of updateTransform and takes all parent transfo -PIXI.DisplayObject +DisplayObject @@ -3311,7 +1988,7 @@ This value is updated at the end of updateTransform and takes all parent transfo @@ -3379,7 +2056,7 @@ This value is updated at the end of updateTransform and takes all parent transfo

    addChildAt(child, index) → {PIXI.DisplayObject}

    + id="addChildAt">addChildAt(child, index) → {DisplayObject}
    @@ -3428,7 +2105,7 @@ This value is updated at the end of updateTransform and takes all parent transfo -PIXI.DisplayObject +DisplayObject @@ -3478,7 +2155,7 @@ This value is updated at the end of updateTransform and takes all parent transfo @@ -3540,276 +2217,6 @@ This value is updated at the end of updateTransform and takes all parent transfo - - - - -
    -

    destroy()

    - - -
    -
    - - - -
    -

    Destroy this DisplayObject. -Removes all references to transformCallbacks, its parent, the stage, filters, bounds, mask and cached Sprites.

    -
    - - - - - - - - - - - -
    - - - - - - - -
    Inherited From:
    -
    - - - - - - - - - - - - - -
    Source - - pixi/display/DisplayObject.js, line 223 -
    - - - - - - - -
    - - - - - - - - - - - -
    - - - -
    -

    generateTexture(resolution, scaleMode, renderer) → {PIXI.RenderTexture}

    - - -
    -
    - - - -
    -

    Useful function that returns a texture of the displayObject object that can then be used to create sprites -This can be quite useful if your displayObject is static / complicated and needs to be reused multiple times.

    -
    - - - - - - - -
    Parameters:
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    NameTypeDescription
    resolution - - -Number - - - -

    The resolution of the texture being generated

    scaleMode - - -Number - - - -

    See {{#crossLink "PIXI/scaleModes:property"}}PIXI.scaleModes{{/crossLink}} for possible values

    renderer - - -PIXI.CanvasRenderer -| - -PIXI.WebGLRenderer - - - -

    The renderer used to generate the texture.

    - - - - -
    Returns:
    -
    - - - -
    - -PIXI.RenderTexture - - - -
    - -
    -

    a texture of the graphics object

    -
    - - - -
    - - - -
    - - - - - - - -
    Inherited From:
    -
    - - - - - - - - - - - - - -
    Source - - pixi/display/DisplayObject.js, line 541 -
    - - - - - - - -
    - - - - - - - - - - -
    @@ -3955,7 +2362,7 @@ This can be quite useful if your displayObject is static / complicated and needs

    getChildAt(index) → {PIXI.DisplayObject}

    + id="getChildAt">getChildAt(index) → {DisplayObject}
    @@ -4031,7 +2438,7 @@ This can be quite useful if your displayObject is static / complicated and needs @@ -4148,7 +2555,7 @@ This can be quite useful if your displayObject is static / complicated and needs -PIXI.DisplayObject +DisplayObject @@ -4311,7 +2718,7 @@ This can be quite useful if your displayObject is static / complicated and needs
    Source - - pixi/display/DisplayObjectContainer.js, line 381 + pixi/display/DisplayObjectContainer.js, line 383
    @@ -4338,82 +2745,7 @@ This can be quite useful if your displayObject is static / complicated and needs

    preUpdate()

    - - -
    -
    - - - -
    -

    Empty, to be overridden by classes that require it.

    -
    - - - - - - - - - - - -
    - - - - - - - -
    Inherited From:
    -
    - - - - - - - - - - - - - -
    Source - - pixi/display/DisplayObject.js, line 532 -
    - - - - - - - -
    - - - - - - - - - - - -
    - - - -
    -

    removeChild(child) → {PIXI.DisplayObject}

    + id="removeChild">removeChild(child) → {DisplayObject}
    @@ -4462,7 +2794,7 @@ This can be quite useful if your displayObject is static / complicated and needs -PIXI.DisplayObject +DisplayObject @@ -4489,7 +2821,7 @@ This can be quite useful if your displayObject is static / complicated and needs @@ -4557,7 +2889,7 @@ This can be quite useful if your displayObject is static / complicated and needs

    removeChildAt(index) → {PIXI.DisplayObject}

    + id="removeChildAt">removeChildAt(index) → {DisplayObject}
    @@ -4633,7 +2965,7 @@ This can be quite useful if your displayObject is static / complicated and needs @@ -4896,7 +3228,7 @@ This can be quite useful if your displayObject is static / complicated and needs
    Source - - pixi/display/DisplayObjectContainer.js, line 426 + pixi/display/DisplayObjectContainer.js, line 428
    @@ -4972,7 +3304,7 @@ This can be quite useful if your displayObject is static / complicated and needs -PIXI.DisplayObject +DisplayObject @@ -5167,7 +3499,7 @@ This can be quite useful if your displayObject is static / complicated and needs
    Source - - pixi/display/DisplayObjectContainer.js, line 410 + pixi/display/DisplayObjectContainer.js, line 412
    @@ -5243,7 +3575,7 @@ This can be quite useful if your displayObject is static / complicated and needs -PIXI.DisplayObject +DisplayObject @@ -5266,7 +3598,7 @@ This can be quite useful if your displayObject is static / complicated and needs -PIXI.DisplayObject +DisplayObject @@ -5335,412 +3667,6 @@ This can be quite useful if your displayObject is static / complicated and needs - - - - -
    -

    toGlobal(position) → {Point}

    - - -
    -
    - - - -
    -

    Calculates the global position of the display object

    -
    - - - - - - - -
    Parameters:
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    NameTypeDescription
    position - - -Point - - - -

    The world origin to calculate from

    - - - - -
    Returns:
    -
    - - - -
    - -Point - - - -
    - -
    -

    A point object representing the position of this object

    -
    - - - -
    - - - -
    - - - - - - - -
    Inherited From:
    -
    - - - - - - - - - - - - - -
    Source - - pixi/display/DisplayObject.js, line 575 -
    - - - - - - - -
    - - - - - - - - - - - -
    - - - -
    -

    toLocal(position, from) → {Point}

    - - -
    -
    - - - -
    -

    Calculates the local position of the display object relative to another point

    -
    - - - - - - - -
    Parameters:
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    NameTypeArgumentDescription
    position - - -Point - - - - - - - - - -

    The world origin to calculate from

    from - - -PIXI.DisplayObject - - - - - - <optional>
    - - - - - -

    The DisplayObject to calculate the global position from

    - - - - -
    Returns:
    -
    - - - -
    - -Point - - - -
    - -
    -

    A point object representing the position of this object

    -
    - - - -
    - - - -
    - - - - - - - -
    Inherited From:
    -
    - - - - - - - - - - - - - -
    Source - - pixi/display/DisplayObject.js, line 589 -
    - - - - - - - -
    - - - - - - - - - - - -
    - - - -
    -

    updateCache()

    - - -
    -
    - - - -
    -

    Generates and updates the cached sprite for this object.

    -
    - - - - - - - - - - - -
    - - - - - - - -
    Inherited From:
    -
    - - - - - - - - - - - - - -
    Source - - pixi/display/DisplayObject.js, line 565 -
    - - - - - - - -
    - - - - - - - - - - -
    @@ -5769,7 +3695,7 @@ This can be quite useful if your displayObject is static / complicated and needs Documentation generated by JSDoc 3.3.3 - on Fri Jun 17 2016 12:45:42 GMT+0100 (BST) using the DocStrap template. + on Fri Jul 08 2016 15:42:47 GMT+0100 (GMT Daylight Time) using the DocStrap template. diff --git a/docs/PIXI.StripShader.html b/docs/PIXI.StripShader.html index 809dc618f..a4dd768f2 100644 --- a/docs/PIXI.StripShader.html +++ b/docs/PIXI.StripShader.html @@ -708,10 +708,6 @@ ComplexPrimitiveShader -
  • - DisplayObject -
  • -
  • DisplayObjectContainer
  • @@ -744,6 +740,10 @@ PIXI +
  • + DisplayObject +
  • +
  • PixiFastShader
  • @@ -1759,7 +1759,7 @@ Documentation generated by JSDoc 3.3.3 - on Fri Jun 17 2016 12:45:42 GMT+0100 (BST) using the DocStrap template. + on Fri Jul 08 2016 15:42:47 GMT+0100 (GMT Daylight Time) using the DocStrap template. diff --git a/docs/PIXI.Texture.html b/docs/PIXI.Texture.html index 9ddb061ec..8b2e62c45 100644 --- a/docs/PIXI.Texture.html +++ b/docs/PIXI.Texture.html @@ -708,10 +708,6 @@ ComplexPrimitiveShader -
  • - DisplayObject -
  • -
  • DisplayObjectContainer
  • @@ -744,6 +740,10 @@ PIXI +
  • + DisplayObject +
  • +
  • PixiFastShader
  • @@ -1440,7 +1440,7 @@ to the display list directly. Instead use it as the texture for a PIXI.Sprite. I
    Source - - pixi/textures/Texture.js, line 19 + pixi/textures/Texture.js, line 14
    @@ -1520,7 +1520,7 @@ to the display list directly. Instead use it as the texture for a PIXI.Sprite. I
    Source - - pixi/textures/Texture.js, line 52 + pixi/textures/Texture.js, line 47
    @@ -1577,7 +1577,7 @@ irrespective of the actual frame size or placement (which can be influenced by t
    Source - - pixi/textures/Texture.js, line 133 + pixi/textures/Texture.js, line 128
    @@ -1633,7 +1633,7 @@ irrespective of the actual frame size or placement (which can be influenced by t
    Source - - pixi/textures/Texture.js, line 60 + pixi/textures/Texture.js, line 55
    @@ -1689,7 +1689,7 @@ irrespective of the actual frame size or placement (which can be influenced by t
    Source - - pixi/textures/Texture.js, line 125 + pixi/textures/Texture.js, line 120
    @@ -1745,7 +1745,7 @@ irrespective of the actual frame size or placement (which can be influenced by t
    Source - - pixi/textures/Texture.js, line 84 + pixi/textures/Texture.js, line 79
    @@ -1801,7 +1801,7 @@ irrespective of the actual frame size or placement (which can be influenced by t
    Source - - pixi/textures/Texture.js, line 33 + pixi/textures/Texture.js, line 28
    @@ -1857,7 +1857,7 @@ irrespective of the actual frame size or placement (which can be influenced by t
    Source - - pixi/textures/Texture.js, line 100 + pixi/textures/Texture.js, line 95
    @@ -1913,7 +1913,7 @@ irrespective of the actual frame size or placement (which can be influenced by t
    Source - - pixi/textures/Texture.js, line 92 + pixi/textures/Texture.js, line 87
    @@ -1969,7 +1969,7 @@ irrespective of the actual frame size or placement (which can be influenced by t
    Source - - pixi/textures/Texture.js, line 68 + pixi/textures/Texture.js, line 63
    @@ -2025,7 +2025,7 @@ irrespective of the actual frame size or placement (which can be influenced by t
    Source - - pixi/textures/Texture.js, line 76 + pixi/textures/Texture.js, line 71
    @@ -2081,7 +2081,7 @@ irrespective of the actual frame size or placement (which can be influenced by t
    Source - - pixi/textures/Texture.js, line 117 + pixi/textures/Texture.js, line 112
    @@ -2104,148 +2104,6 @@ irrespective of the actual frame size or placement (which can be influenced by t
    -
    -

    <static> addTextureToCache(texture, id)

    - - -
    -
    - - - -
    -

    Adds a texture to the global PIXI.TextureCache. This cache is shared across the whole PIXI object.

    -
    - - - - - - - -
    Parameters:
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    NameTypeDescription
    texture - - -PIXI.Texture - - - -

    The Texture to add to the cache.

    id - - -String - - - -

    The id that the texture will be stored against.

    - - - - - - -
    - - - - - - - - - - - - - - - - - - - -
    Source - - pixi/textures/Texture.js, line 310 -
    - - - - - - - -
    - - - - - - - - - - - -
    - - -

    <static> fromCanvas(canvas, scaleMode) → {PIXI.Texture}

    @@ -2383,472 +2241,7 @@ irrespective of the actual frame size or placement (which can be influenced by t
    Source - - pixi/textures/Texture.js, line 294 -
    - - - - - - - -
    - - - - - - - - - - - - - - - -
    -

    <static> fromFrame(frameId) → {PIXI.Texture}

    - - -
    -
    - - - -
    -

    Helper function that returns a Texture objected based on the given frame id. -If the frame id is not in the texture cache an error will be thrown.

    -
    - - - - - - - -
    Parameters:
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    NameTypeDescription
    frameId - - -String - - - -

    The frame id of the texture

    - - - - -
    Returns:
    -
    - - - -
    - -PIXI.Texture - - - -
    - -
    - -
    - - - -
    - - - -
    - - - - - - - - - - - - - - - - - - - -
    Source - - pixi/textures/Texture.js, line 278 -
    - - - - - - - -
    - - - - - - - - - - - -
    - - - -
    -

    <static> fromImage(imageUrl, crossorigin, scaleMode) → {PIXI.Texture}

    - - -
    -
    - - - -
    -

    Helper function that creates a Texture object from the given image url. -If the image is not in the texture cache it will be created and loaded.

    -
    - - - - - - - -
    Parameters:
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    NameTypeDescription
    imageUrl - - -String - - - -

    The image url of the texture

    crossorigin - - -Boolean - - - -

    Whether requests should be treated as crossorigin

    scaleMode - - -Number - - - -

    See {{#crossLink "PIXI/scaleModes:property"}}PIXI.scaleModes{{/crossLink}} for possible values

    - - - - -
    Returns:
    -
    - - - -
    - -PIXI.Texture - - - -
    - -
    - -
    - - - -
    - - - -
    - - - - - - - - - - - - - - - - - - - -
    Source - - pixi/textures/Texture.js, line 254 -
    - - - - - - - -
    - - - - - - - - - - - -
    - - - -
    -

    <static> removeTextureFromCache(id) → {PIXI.Texture}

    - - -
    -
    - - - -
    -

    Remove a texture from the global PIXI.TextureCache.

    -
    - - - - - - - -
    Parameters:
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    NameTypeDescription
    id - - -String - - - -

    The id of the texture to be removed

    - - - - -
    Returns:
    -
    - - - -
    - -PIXI.Texture - - - -
    - -
    -

    The texture that was removed

    -
    - - - -
    - - - -
    - - - - - - - - - - - - - - - - - - - -
    Source - - pixi/textures/Texture.js, line 323 + pixi/textures/Texture.js, line 249
    @@ -2967,7 +2360,7 @@ If the image is not in the texture cache it will be created and loaded.

    Source - - pixi/textures/Texture.js, line 170 + pixi/textures/Texture.js, line 165
    @@ -3086,7 +2479,7 @@ If the image is not in the texture cache it will be created and loaded.

    Source - - pixi/textures/Texture.js, line 183 + pixi/textures/Texture.js, line 178
    @@ -3135,7 +2528,7 @@ If the image is not in the texture cache it will be created and loaded.

    Documentation generated by JSDoc 3.3.3 - on Fri Jun 17 2016 12:45:42 GMT+0100 (BST) using the DocStrap template. + on Fri Jul 08 2016 15:42:47 GMT+0100 (GMT Daylight Time) using the DocStrap template. diff --git a/docs/PIXI.TilingSprite.html b/docs/PIXI.TilingSprite.html index 9a7d0e1c5..b6b085488 100644 --- a/docs/PIXI.TilingSprite.html +++ b/docs/PIXI.TilingSprite.html @@ -708,10 +708,6 @@ ComplexPrimitiveShader -
  • - DisplayObject -
  • -
  • DisplayObjectContainer
  • @@ -744,6 +740,10 @@ PIXI +
  • + DisplayObject +
  • +
  • PixiFastShader
  • @@ -1425,67 +1425,6 @@
    -
    -

    alpha :Number

    - - -
    -
    - - - -
    -

    The opacity of the object.

    -
    - - - - - -
    - - - - - - - -
    Inherited From:
    -
    - - - - - - - - - - - - - -
    Source - - pixi/display/DisplayObject.js, line 46 -
    - - - - - - - -
    - - - -
    - - -

    anchor :Point

    @@ -1601,69 +1540,6 @@ Setting the anchor to 1,1 would mean the textures origin points will be the bott -
    - - - -
    - - - -
    -

    cacheAsBitmap :Boolean

    - - -
    -
    - - - -
    -

    Set if this display object is cached as a bitmap. -This basically takes a snap shot of the display object as it is at that moment. It can provide a performance benefit for complex static displayObjects. -To remove simply set this property to 'null'

    -
    - - - - - -
    - - - - - - - -
    Inherited From:
    -
    - - - - - - - - - - - - - -
    Source - - pixi/display/DisplayObject.js, line 355 -
    - - - - - - -
    @@ -1855,143 +1731,6 @@ To remove simply set this property to 'null'

    - - - - -
    - - - -
    -

    filterArea :Rectangle

    - - -
    -
    - - - -
    -

    The area the filter is applied to like the hitArea this is used as more of an optimisation -rather than figuring out the dimensions of the displayObject each frame you can set this rectangle

    -
    - - - - - -
    - - - - - - - -
    Inherited From:
    -
    - - - - - - - - - - - - - -
    Source - - pixi/display/DisplayObject.js, line 164 -
    - - - - - - - -
    - - - -
    - - - -
    -

    filters :Array.<Filter>

    - - -
    -
    - - - -
    -

    Sets the filters for the displayObject. -IMPORTANT: This is a webGL only feature and will be ignored by the Canvas renderer.

    -

    To remove filters simply set this property to 'null'.

    -

    You cannot have a filter and a multiply blend mode active at the same time. Setting a filter will reset -this objects blend mode to NORMAL.

    -
    - - - -
    Type:
    -
      -
    • - -Array.<Filter> - - -
    • -
    - - - -
    - - - - - - - -
    Inherited From:
    -
    - - - - - - - - - - - - - -
    Source - - pixi/display/DisplayObject.js, line 307 -
    - - - - - - -
    @@ -2104,87 +1843,6 @@ this objects blend mode to NORMAL.

    - - - - -
    - - - -
    -

    hitArea :Rectangle|Circle|Ellipse|Polygon

    - - -
    -
    - - - -
    -

    This is the defined area that will pick up mouse / touch events. It is null by default. -Setting it is a neat way of optimising the hitTest function that the interactionManager will use (as it will not need to hit test all the children)

    -
    - - - -
    Type:
    -
      -
    • - -Rectangle -| - -Circle -| - -Ellipse -| - -Polygon - - -
    • -
    - - - -
    - - - - - - - -
    Inherited From:
    -
    - - - - - - - - - - - - - -
    Source - - pixi/display/DisplayObject.js, line 62 -
    - - - - - - -
    @@ -2248,252 +1906,6 @@ Setting it is a neat way of optimising the hitTest function that the interaction - - - - -
    - - - -
    -

    mask :PIXI.Graphics

    - - -
    -
    - - - -
    -

    Sets a mask for the displayObject. A mask is an object that limits the visibility of an object to the shape of the mask applied to it. -In PIXI a regular mask must be a PIXI.Graphics object. This allows for much faster masking in canvas as it utilises shape clipping. -To remove a mask, set this property to null.

    -
    - - - - - -
    - - - - - - - -
    Inherited From:
    -
    - - - - - - - - - - - - - -
    Source - - pixi/display/DisplayObject.js, line 282 -
    - - - - - - - -
    - - - -
    - - - -
    -

    <readonly> parent :PIXI.DisplayObjectContainer

    - - -
    -
    - - - -
    -

    [read-only] The display object container that contains this display object.

    -
    - - - - - -
    - - - - - - - -
    Inherited From:
    -
    - - - - - - - - - - - - - -
    Source - - pixi/display/DisplayObject.js, line 79 -
    - - - - - - - -
    - - - -
    - - - -
    -

    pivot :Point

    - - -
    -
    - - - -
    -

    The pivot point of the displayObject that it rotates around

    -
    - - - - - -
    - - - - - - - -
    Inherited From:
    -
    - - - - - - - - - - - - - -
    Source - - pixi/display/DisplayObject.js, line 30 -
    - - - - - - - -
    - - - -
    - - - -
    -

    position :Point

    - - -
    -
    - - - -
    -

    The coordinate of the object relative to the local coordinates of the parent.

    -
    - - - - - -
    - - - - - - - -
    Inherited From:
    -
    - - - - - - - - - - - - - -
    Source - - pixi/display/DisplayObject.js, line 14 -
    - - - - - - -
    @@ -2613,128 +2025,6 @@ This is set by the likes of Phaser.LoadTexture.setFrame.

    - - - - -
    - - - -
    -

    rotation :Number

    - - -
    -
    - - - -
    -

    The rotation of the object in radians.

    -
    - - - - - -
    - - - - - - - -
    Inherited From:
    -
    - - - - - - - - - - - - - -
    Source - - pixi/display/DisplayObject.js, line 38 -
    - - - - - - - -
    - - - -
    - - - -
    -

    scale :Point

    - - -
    -
    - - - -
    -

    The scale factor of the object.

    -
    - - - - - -
    - - - - - - - -
    Inherited From:
    -
    - - - - - - - - - - - - - -
    Source - - pixi/display/DisplayObject.js, line 22 -
    - - - - - - -
    @@ -2799,67 +2089,6 @@ This is set by the likes of Phaser.LoadTexture.setFrame.

    - - - - -
    - - - -
    -

    <readonly> stage :Stage

    - - -
    -
    - - - -
    -

    [read-only] The stage the display object is connected to, or undefined if it is not connected to the stage.

    -
    - - - - - -
    - - - - - - - -
    Inherited From:
    -
    - - - - - - - - - - - - - -
    Source - - pixi/display/DisplayObject.js, line 88 -
    - - - - - - -
    @@ -3381,67 +2610,6 @@ debug the texture being used.

    - - - - -
    - - - -
    -

    visible :Boolean

    - - -
    -
    - - - -
    -

    The visibility of the object.

    -
    - - - - - -
    - - - - - - - -
    Inherited From:
    -
    - - - - - - - - - - - - - -
    Source - - pixi/display/DisplayObject.js, line 54 -
    - - - - - - -
    @@ -3554,436 +2722,6 @@ debug the texture being used.

    - - - - -
    - - - -
    -

    <readonly> worldAlpha :Number

    - - -
    -
    - - - -
    -

    [read-only] The multiplied alpha of the displayObject

    -
    - - - - - -
    - - - - - - - -
    Inherited From:
    -
    - - - - - - - - - - - - - -
    Source - - pixi/display/DisplayObject.js, line 97 -
    - - - - - - - -
    - - - -
    - - - -
    -

    <readonly> worldPosition :Point

    - - -
    -
    - - - -
    -

    The position of the Display Object based on the world transform. -This value is updated at the end of updateTransform and takes all parent transforms into account.

    -
    - - - - - -
    - - - - - - - -
    Inherited From:
    -
    - - - - - - - - - - - - - -
    Source - - pixi/display/DisplayObject.js, line 116 -
    - - - - - - - -
    - - - -
    - - - -
    -

    <readonly> worldRotation :Number

    - - -
    -
    - - - -
    -

    The rotation of the Display Object, in radians, based on the world transform. -This value is updated at the end of updateTransform and takes all parent transforms into account.

    -
    - - - - - -
    - - - - - - - -
    Inherited From:
    -
    - - - - - - - - - - - - - -
    Source - - pixi/display/DisplayObject.js, line 136 -
    - - - - - - - -
    - - - -
    - - - -
    -

    <readonly> worldScale :Point

    - - -
    -
    - - - -
    -

    The scale of the Display Object based on the world transform. -This value is updated at the end of updateTransform and takes all parent transforms into account.

    -
    - - - - - -
    - - - - - - - -
    Inherited From:
    -
    - - - - - - - - - - - - - -
    Source - - pixi/display/DisplayObject.js, line 126 -
    - - - - - - - -
    - - - -
    - - - -
    -

    worldVisible :Boolean

    - - -
    -
    - - - -
    -

    [read-only] Indicates if the sprite is globally visible.

    -
    - - - - - -
    - - - - - - - -
    Inherited From:
    -
    - - - - - - - - - - - - - -
    Source - - pixi/display/DisplayObject.js, line 258 -
    - - - - - - - -
    - - - -
    - - - -
    -

    x :Number

    - - -
    -
    - - - -
    -

    The position of the displayObject on the x axis relative to the local coordinates of the parent.

    -
    - - - - - -
    - - - - - - - -
    Inherited From:
    -
    - - - - - - - - - - - - - -
    Source - - pixi/display/DisplayObject.js, line 722 -
    - - - - - - - -
    - - - -
    - - - -
    -

    y :Number

    - - -
    -
    - - - -
    -

    The position of the displayObject on the y axis relative to the local coordinates of the parent.

    -
    - - - - - -
    - - - - - - - -
    Inherited From:
    -
    - - - - - - - - - - - - - -
    Source - - pixi/display/DisplayObject.js, line 740 -
    - - - - - - -
    @@ -4000,7 +2738,7 @@ This value is updated at the end of updateTransform and takes all parent transfo

    addChild(child) → {PIXI.DisplayObject}

    + id="addChild">addChild(child) → {DisplayObject}
    @@ -4049,7 +2787,7 @@ This value is updated at the end of updateTransform and takes all parent transfo -PIXI.DisplayObject +DisplayObject @@ -4076,7 +2814,7 @@ This value is updated at the end of updateTransform and takes all parent transfo @@ -4144,7 +2882,7 @@ This value is updated at the end of updateTransform and takes all parent transfo

    addChildAt(child, index) → {PIXI.DisplayObject}

    + id="addChildAt">addChildAt(child, index) → {DisplayObject}
    @@ -4193,7 +2931,7 @@ This value is updated at the end of updateTransform and takes all parent transfo -PIXI.DisplayObject +DisplayObject @@ -4243,7 +2981,7 @@ This value is updated at the end of updateTransform and takes all parent transfo @@ -4305,276 +3043,6 @@ This value is updated at the end of updateTransform and takes all parent transfo - - - - -
    -

    destroy()

    - - -
    -
    - - - -
    -

    Destroy this DisplayObject. -Removes all references to transformCallbacks, its parent, the stage, filters, bounds, mask and cached Sprites.

    -
    - - - - - - - - - - - -
    - - - - - - - -
    Inherited From:
    -
    - - - - - - - - - - - - - -
    Source - - pixi/display/DisplayObject.js, line 223 -
    - - - - - - - -
    - - - - - - - - - - - -
    - - - -
    -

    generateTexture(resolution, scaleMode, renderer) → {PIXI.RenderTexture}

    - - -
    -
    - - - -
    -

    Useful function that returns a texture of the displayObject object that can then be used to create sprites -This can be quite useful if your displayObject is static / complicated and needs to be reused multiple times.

    -
    - - - - - - - -
    Parameters:
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    NameTypeDescription
    resolution - - -Number - - - -

    The resolution of the texture being generated

    scaleMode - - -Number - - - -

    See {{#crossLink "PIXI/scaleModes:property"}}PIXI.scaleModes{{/crossLink}} for possible values

    renderer - - -PIXI.CanvasRenderer -| - -PIXI.WebGLRenderer - - - -

    The renderer used to generate the texture.

    - - - - -
    Returns:
    -
    - - - -
    - -PIXI.RenderTexture - - - -
    - -
    -

    a texture of the graphics object

    -
    - - - -
    - - - -
    - - - - - - - -
    Inherited From:
    -
    - - - - - - - - - - - - - -
    Source - - pixi/display/DisplayObject.js, line 541 -
    - - - - - - - -
    - - - - - - - - - - -
    @@ -4809,7 +3277,7 @@ This can be quite useful if your displayObject is static / complicated and needs

    getChildAt(index) → {PIXI.DisplayObject}

    + id="getChildAt">getChildAt(index) → {DisplayObject}
    @@ -4885,7 +3353,7 @@ This can be quite useful if your displayObject is static / complicated and needs @@ -5002,7 +3470,7 @@ This can be quite useful if your displayObject is static / complicated and needs -PIXI.DisplayObject +DisplayObject @@ -5165,7 +3633,7 @@ This can be quite useful if your displayObject is static / complicated and needs
    Source - - pixi/display/DisplayObjectContainer.js, line 381 + pixi/display/DisplayObjectContainer.js, line 383
    @@ -5192,82 +3660,7 @@ This can be quite useful if your displayObject is static / complicated and needs

    preUpdate()

    - - -
    -
    - - - -
    -

    Empty, to be overridden by classes that require it.

    -
    - - - - - - - - - - - -
    - - - - - - - -
    Inherited From:
    -
    - - - - - - - - - - - - - -
    Source - - pixi/display/DisplayObject.js, line 532 -
    - - - - - - - -
    - - - - - - - - - - - -
    - - - -
    -

    removeChild(child) → {PIXI.DisplayObject}

    + id="removeChild">removeChild(child) → {DisplayObject}
    @@ -5316,7 +3709,7 @@ This can be quite useful if your displayObject is static / complicated and needs -PIXI.DisplayObject +DisplayObject @@ -5343,7 +3736,7 @@ This can be quite useful if your displayObject is static / complicated and needs @@ -5411,7 +3804,7 @@ This can be quite useful if your displayObject is static / complicated and needs

    removeChildAt(index) → {PIXI.DisplayObject}

    + id="removeChildAt">removeChildAt(index) → {DisplayObject}
    @@ -5487,7 +3880,7 @@ This can be quite useful if your displayObject is static / complicated and needs @@ -5750,7 +4143,7 @@ This can be quite useful if your displayObject is static / complicated and needs
    Source - - pixi/display/DisplayObjectContainer.js, line 426 + pixi/display/DisplayObjectContainer.js, line 428
    @@ -5826,7 +4219,7 @@ This can be quite useful if your displayObject is static / complicated and needs -PIXI.DisplayObject +DisplayObject @@ -6021,7 +4414,7 @@ This can be quite useful if your displayObject is static / complicated and needs
    Source - - pixi/display/DisplayObjectContainer.js, line 410 + pixi/display/DisplayObjectContainer.js, line 412
    @@ -6277,7 +4670,7 @@ texture this Sprite was using.

    -PIXI.DisplayObject +DisplayObject @@ -6300,7 +4693,7 @@ texture this Sprite was using.

    -PIXI.DisplayObject +DisplayObject @@ -6369,412 +4762,6 @@ texture this Sprite was using.

    - - - - -
    -

    toGlobal(position) → {Point}

    - - -
    -
    - - - -
    -

    Calculates the global position of the display object

    -
    - - - - - - - -
    Parameters:
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    NameTypeDescription
    position - - -Point - - - -

    The world origin to calculate from

    - - - - -
    Returns:
    -
    - - - -
    - -Point - - - -
    - -
    -

    A point object representing the position of this object

    -
    - - - -
    - - - -
    - - - - - - - -
    Inherited From:
    -
    - - - - - - - - - - - - - -
    Source - - pixi/display/DisplayObject.js, line 575 -
    - - - - - - - -
    - - - - - - - - - - - -
    - - - -
    -

    toLocal(position, from) → {Point}

    - - -
    -
    - - - -
    -

    Calculates the local position of the display object relative to another point

    -
    - - - - - - - -
    Parameters:
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    NameTypeArgumentDescription
    position - - -Point - - - - - - - - - -

    The world origin to calculate from

    from - - -PIXI.DisplayObject - - - - - - <optional>
    - - - - - -

    The DisplayObject to calculate the global position from

    - - - - -
    Returns:
    -
    - - - -
    - -Point - - - -
    - -
    -

    A point object representing the position of this object

    -
    - - - -
    - - - -
    - - - - - - - -
    Inherited From:
    -
    - - - - - - - - - - - - - -
    Source - - pixi/display/DisplayObject.js, line 589 -
    - - - - - - - -
    - - - - - - - - - - - -
    - - - -
    -

    updateCache()

    - - -
    -
    - - - -
    -

    Generates and updates the cached sprite for this object.

    -
    - - - - - - - - - - - -
    - - - - - - - -
    Inherited From:
    -
    - - - - - - - - - - - - - -
    Source - - pixi/display/DisplayObject.js, line 565 -
    - - - - - - - -
    - - - - - - - - - - -
    @@ -6803,7 +4790,7 @@ texture this Sprite was using.

    Documentation generated by JSDoc 3.3.3 - on Fri Jun 17 2016 12:45:42 GMT+0100 (BST) using the DocStrap template. + on Fri Jul 08 2016 15:42:47 GMT+0100 (GMT Daylight Time) using the DocStrap template. diff --git a/docs/PIXI.WebGLBlendModeManager.html b/docs/PIXI.WebGLBlendModeManager.html index f7f903901..33c97624d 100644 --- a/docs/PIXI.WebGLBlendModeManager.html +++ b/docs/PIXI.WebGLBlendModeManager.html @@ -708,10 +708,6 @@ ComplexPrimitiveShader -
  • - DisplayObject -
  • -
  • DisplayObjectContainer
  • @@ -744,6 +740,10 @@ PIXI +
  • + DisplayObject +
  • +
  • PixiFastShader
  • @@ -1759,7 +1759,7 @@ Documentation generated by JSDoc 3.3.3 - on Fri Jun 17 2016 12:45:42 GMT+0100 (BST) using the DocStrap template. + on Fri Jul 08 2016 15:42:47 GMT+0100 (GMT Daylight Time) using the DocStrap template. diff --git a/docs/PIXI.WebGLFastSpriteBatch.html b/docs/PIXI.WebGLFastSpriteBatch.html index 8680245a7..31dfc3390 100644 --- a/docs/PIXI.WebGLFastSpriteBatch.html +++ b/docs/PIXI.WebGLFastSpriteBatch.html @@ -708,10 +708,6 @@ ComplexPrimitiveShader -
  • - DisplayObject -
  • -
  • DisplayObjectContainer
  • @@ -744,6 +740,10 @@ PIXI +
  • + DisplayObject +
  • +
  • PixiFastShader
  • @@ -2889,7 +2889,7 @@ Documentation generated by JSDoc 3.3.3 - on Fri Jun 17 2016 12:45:42 GMT+0100 (BST) using the DocStrap template. + on Fri Jul 08 2016 15:42:47 GMT+0100 (GMT Daylight Time) using the DocStrap template. diff --git a/docs/PIXI.WebGLFilterManager.html b/docs/PIXI.WebGLFilterManager.html index 996a17e02..cbf54d9fa 100644 --- a/docs/PIXI.WebGLFilterManager.html +++ b/docs/PIXI.WebGLFilterManager.html @@ -708,10 +708,6 @@ ComplexPrimitiveShader -
  • - DisplayObject -
  • -
  • DisplayObjectContainer
  • @@ -744,6 +740,10 @@ PIXI +
  • + DisplayObject +
  • +
  • PixiFastShader
  • @@ -2280,7 +2280,7 @@ Documentation generated by JSDoc 3.3.3 - on Fri Jun 17 2016 12:45:42 GMT+0100 (BST) using the DocStrap template. + on Fri Jul 08 2016 15:42:47 GMT+0100 (GMT Daylight Time) using the DocStrap template. diff --git a/docs/PIXI.WebGLRenderer.html b/docs/PIXI.WebGLRenderer.html index 8938bf753..e3ed6571b 100644 --- a/docs/PIXI.WebGLRenderer.html +++ b/docs/PIXI.WebGLRenderer.html @@ -708,10 +708,6 @@ ComplexPrimitiveShader -
  • - DisplayObject -
  • -
  • DisplayObjectContainer
  • @@ -744,6 +740,10 @@ PIXI +
  • + DisplayObject +
  • +
  • PixiFastShader
  • @@ -2808,7 +2808,7 @@ Disable this by setting this to false. For example: if your game has a canvas fi -PIXI.DisplayObject +DisplayObject @@ -3227,7 +3227,7 @@ Disable this by setting this to false. For example: if your game has a canvas fi Documentation generated by JSDoc 3.3.3 - on Fri Jun 17 2016 12:45:42 GMT+0100 (BST) using the DocStrap template. + on Fri Jul 08 2016 15:42:47 GMT+0100 (GMT Daylight Time) using the DocStrap template. diff --git a/docs/PIXI.html b/docs/PIXI.html index 6d5d769b9..cbff988c3 100644 --- a/docs/PIXI.html +++ b/docs/PIXI.html @@ -708,10 +708,6 @@ ComplexPrimitiveShader -
  • - DisplayObject -
  • -
  • DisplayObjectContainer
  • @@ -744,6 +740,10 @@ PIXI +
  • + DisplayObject +
  • +
  • PixiFastShader
  • @@ -1359,14 +1359,6 @@ -
    - DisplayObject -
    -
    - -
    - -
    DisplayObjectContainer
    @@ -1650,7 +1642,7 @@ Documentation generated by JSDoc 3.3.3 - on Fri Jun 17 2016 12:45:40 GMT+0100 (BST) using the DocStrap template. + on Fri Jul 08 2016 15:42:45 GMT+0100 (GMT Daylight Time) using the DocStrap template. diff --git a/docs/Phaser.Animation.html b/docs/Phaser.Animation.html index b8ce7ff66..8ea4e12b0 100644 --- a/docs/Phaser.Animation.html +++ b/docs/Phaser.Animation.html @@ -708,10 +708,6 @@ ComplexPrimitiveShader -
  • - DisplayObject -
  • -
  • DisplayObjectContainer
  • @@ -744,6 +740,10 @@ PIXI +
  • + DisplayObject +
  • +
  • PixiFastShader
  • @@ -4736,7 +4736,7 @@ If dispatchComplete is true it will dispatch the complete events, o Documentation generated by JSDoc 3.3.3 - on Fri Jun 17 2016 12:45:29 GMT+0100 (BST) using the DocStrap template. + on Fri Jul 08 2016 15:42:35 GMT+0100 (GMT Daylight Time) using the DocStrap template. diff --git a/docs/Phaser.AnimationManager.html b/docs/Phaser.AnimationManager.html index 89a3a3167..2ee904765 100644 --- a/docs/Phaser.AnimationManager.html +++ b/docs/Phaser.AnimationManager.html @@ -708,10 +708,6 @@ ComplexPrimitiveShader -
  • - DisplayObject -
  • -
  • DisplayObjectContainer
  • @@ -744,6 +740,10 @@ PIXI +
  • + DisplayObject +
  • +
  • PixiFastShader
  • @@ -3694,7 +3694,7 @@ The currentAnim property of the AnimationManager is automatically set to the ani Documentation generated by JSDoc 3.3.3 - on Fri Jun 17 2016 12:45:29 GMT+0100 (BST) using the DocStrap template. + on Fri Jul 08 2016 15:42:35 GMT+0100 (GMT Daylight Time) using the DocStrap template. diff --git a/docs/Phaser.AnimationParser.html b/docs/Phaser.AnimationParser.html index 399f610a8..a76872fda 100644 --- a/docs/Phaser.AnimationParser.html +++ b/docs/Phaser.AnimationParser.html @@ -708,10 +708,6 @@ ComplexPrimitiveShader -
  • - DisplayObject -
  • -
  • DisplayObjectContainer
  • @@ -744,6 +740,10 @@ PIXI +
  • + DisplayObject +
  • +
  • PixiFastShader
  • @@ -2378,7 +2378,7 @@ Documentation generated by JSDoc 3.3.3 - on Fri Jun 17 2016 12:45:29 GMT+0100 (BST) using the DocStrap template. + on Fri Jul 08 2016 15:42:35 GMT+0100 (GMT Daylight Time) using the DocStrap template. diff --git a/docs/Phaser.ArraySet.html b/docs/Phaser.ArraySet.html index 7b6dcd396..6bbf97914 100644 --- a/docs/Phaser.ArraySet.html +++ b/docs/Phaser.ArraySet.html @@ -708,10 +708,6 @@ ComplexPrimitiveShader -
  • - DisplayObject -
  • -
  • DisplayObjectContainer
  • @@ -744,6 +740,10 @@ PIXI +
  • + DisplayObject +
  • +
  • PixiFastShader
  • @@ -2951,7 +2951,7 @@ Returns null if not found.

    Documentation generated by JSDoc 3.3.3 - on Fri Jun 17 2016 12:45:30 GMT+0100 (BST) using the DocStrap template. + on Fri Jul 08 2016 15:42:35 GMT+0100 (GMT Daylight Time) using the DocStrap template. diff --git a/docs/Phaser.ArrayUtils.html b/docs/Phaser.ArrayUtils.html index d083f4a52..c01b9c8c2 100644 --- a/docs/Phaser.ArrayUtils.html +++ b/docs/Phaser.ArrayUtils.html @@ -1,2940 +1,3224 @@ - - - - - - Phaser Class: ArrayUtils - - - - - - - - - - - - - - -
    - - -
    - - -
    - -
    - - - - -
    - -
    -

    - Phaser. - - ArrayUtils -

    - -
    - -
    -
    - - - - -
    -

    new ArrayUtils()

    - - -
    -
    - - - -
    -

    Utility functions for dealing with Arrays.

    -
    - - - - - - - - - - - -
    - - - - - - - - - - - - - - - - - - - -
    Source - - utils/ArrayUtils.js, line 13 -
    - - - - - - - -
    - - - - - - - - - - - -
    - - -
    - - - - - - - - - - - - - - -

    Methods

    - -
    - -
    -

    <static> findClosest(value, arr) → {number}

    - - -
    -
    - - - -
    + + + + + + Phaser Class: ArrayUtils + + + + + + + + + + + + + + +
    + + +
    + + +
    + +
    + + + + +
    + +
    +

    + Phaser. + + ArrayUtils +

    + +
    + +
    +
    + + + + +
    +

    new ArrayUtils()

    + + +
    +
    + + + +
    +

    Utility functions for dealing with Arrays.

    +
    + + + + + + + + + + + +
    + + + + + + + + + + + + + + + + + + + +
    Source - + utils/ArrayUtils.js, line 13 +
    + + + + + + + +
    + + + + + + + + + + + +
    + + +
    + + + + + + + + + + + + + + +

    Methods

    + +
    + +
    +

    <static> findClosest(value, arr) → {number}

    + + +
    +
    + + + +

    Snaps a value to the nearest value in an array. -The result will always be in the range [first_value, last_value].

    -
    - - - - - - - -
    Parameters:
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    NameTypeDescription
    value - - -number - - - -

    The search value

    arr - - -Array.<number> - - - -

    The input array which must be sorted.

    - - - - -
    Returns:
    -
    - - - -
    - -number - - - -
    - -
    -

    The nearest value found.

    -
    - - - -
    - - - -
    - - - - - - - - - - - - - - - - - - - -
    Source - - utils/ArrayUtils.js, line 172 -
    - - - - - - - -
    - - - - - - - - - - - -
    - - - -
    -

    <static> getRandomItem(objects, startIndex, length) → {object}

    - - -
    -
    - - - -
    +The result will always be in the range [first_value, last_value].

    +
    + + + + + + + +
    Parameters:
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeDescription
    value + + +number + + + +

    The search value

    arr + + +Array.<number> + + + +

    The input array which must be sorted.

    + + + + +
    Returns:
    +
    + + + +
    + +number + + - +
    + +
    +

    The nearest value found.

    +
    + + + +
    + + + +
    + + + + + + + + + + + + + + + + + + + +
    Source - + utils/ArrayUtils.js, line 172 +
    + + + + + + + +
    + + + + + + + + + + + +
    + + + +
    +

    <static> getRandomItem(objects, startIndex, length) → {object}

    + + +
    +
    + + + +

    Fetch a random entry from the given array.

    Will return null if there are no array items that fall within the specified range -or if there is no item for the randomly chosen index.

    -
    - - - - - - - -
    Parameters:
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    NameTypeDescription
    objects - - -Array.<any> - - - -

    An array of objects.

    startIndex - - -integer - - - -

    Optional offset off the front of the array. Default value is 0, or the beginning of the array.

    length - - -integer - - - -

    Optional restriction on the number of values you want to randomly select from.

    - - - - -
    Returns:
    -
    - - - -
    - -object - - - -
    - -
    -

    The random object that was selected.

    -
    - - - -
    - - - -
    - - - - - - - - - - - - - - - - - - - -
    Source - - utils/ArrayUtils.js, line 27 -
    - - - - - - - -
    - - - - - - - - - - - -
    - - - -
    -

    <static> removeRandomItem(objects, startIndex, length) → {object}

    - - -
    -
    - - - -
    +or if there is no item for the randomly chosen index.

    +
    + + + + + + + +
    Parameters:
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeDescription
    objects + + +Array.<any> + + + +

    An array of objects.

    startIndex + + +integer + + + +

    Optional offset off the front of the array. Default value is 0, or the beginning of the array.

    length + + +integer + + + +

    Optional restriction on the number of values you want to randomly select from.

    + + + + +
    Returns:
    +
    + + + +
    + +object + + - +
    + +
    +

    The random object that was selected.

    +
    + + + +
    + + + +
    + + + + + + + + + + + + + + + + + + + +
    Source - + utils/ArrayUtils.js, line 27 +
    + + + + + + + +
    + + + + + + + + + + + +
    + + + +
    +

    <static> removeRandomItem(objects, startIndex, length) → {object}

    + + +
    +
    + + + +

    Removes a random object from the given array and returns it.

    Will return null if there are no array items that fall within the specified range -or if there is no item for the randomly chosen index.

    -
    - - - - - - - -
    Parameters:
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    NameTypeDescription
    objects - - -Array.<any> - - - -

    An array of objects.

    startIndex - - -integer - - - -

    Optional offset off the front of the array. Default value is 0, or the beginning of the array.

    length - - -integer - - - -

    Optional restriction on the number of values you want to randomly select from.

    - - - - -
    Returns:
    -
    - - - -
    - -object - - - -
    - -
    -

    The random object that was removed.

    -
    - - - -
    - - - -
    - - - - - - - - - - - - - - - - - - - -
    Source - - utils/ArrayUtils.js, line 51 -
    - - - - - - - -
    - - - - - - - - - - - -
    - - - -
    -

    <static> rotate(array) → {any}

    - - -
    -
    - - - -
    +or if there is no item for the randomly chosen index.

    +
    + + + + + + + +
    Parameters:
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeDescription
    objects + + +Array.<any> + + + +

    An array of objects.

    startIndex + + +integer + + + +

    Optional offset off the front of the array. Default value is 0, or the beginning of the array.

    length + + +integer + + + +

    Optional restriction on the number of values you want to randomly select from.

    + + + + +
    Returns:
    +
    + + + +
    + +object + + - +
    + +
    +

    The random object that was removed.

    +
    + + + +
    + + + +
    + + + + + + + + + + + + + + + + + + + +
    Source - + utils/ArrayUtils.js, line 51 +
    + + + + + + + +
    + + + + + + + + + + + +
    + + + +
    +

    <static> rotate(array) → {any}

    + + +
    +
    + +
    + This method is deprecated and should not be used. It may be removed in the future. +
    + + + +

    Moves the element from the start of the array to the end, shifting all items in the process. The "rotation" happens to the left.

    -
    - - - - - - - -
    Parameters:
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    NameTypeDescription
    array - - -Array.<any> - - - -

    The array to shift/rotate. The array is modified.

    - - - - -
    Returns:
    -
    - - - -
    - -any - - - -
    - -
    -

    The shifted value.

    -
    - - - -
    - - - -
    - - - - - - - - - - - - - - - - - - - -
    Source - - utils/ArrayUtils.js, line 195 -
    - - - - - - - -
    - - - - - - - - - - - -
    - - - -
    -

    <static> rotateMatrix(matrix, direction) → {Array.<Array.<any>>}

    - - -
    -
    - - - -
    +

    Before: [ A, B, C, D, E, F ] +After: [ B, C, D, E, F, A ]

    +

    See also Phaser.ArrayUtils.rotateRight

    +
    + + + + + + + +
    Parameters:
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeDescription
    array + + +Array.<any> + + + +

    The array to rotate. The array is modified.

    + + + + +
    Returns:
    +
    + + + +
    + +any + + - +
    + +
    +

    The rotated value.

    +
    + + + +
    + + + +
    + + + + + + + + + +
    Deprecated:
    +
      + + +
    • Please use Phaser.ArrayUtils.rotate instead.
    • +
    + + + + + + + + + + + +
    Source - + utils/ArrayUtils.js, line 239 +
    + + + + + + + +
    + + + + + + + + + + + +
    + + + +
    +

    <static> rotateLeft(array) → {any}

    + + +
    +
    + + + +
    +

    Moves the element from the start of the array to the end, shifting all items in the process. +The "rotation" happens to the left.

    +

    Before: [ A, B, C, D, E, F ] +After: [ B, C, D, E, F, A ]

    +

    See also Phaser.ArrayUtils.rotateRight

    +
    + + + + + + + +
    Parameters:
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeDescription
    array + + +Array.<any> + + + +

    The array to rotate. The array is modified.

    + + + + +
    Returns:
    +
    + + + +
    + +any + + - +
    + +
    +

    The rotated value.

    +
    + + + +
    + + + +
    + + + + + + + + + + + + + + + + + + + +
    Source - + utils/ArrayUtils.js, line 217 +
    + + + + + + + +
    + + + + + + + + + + + +
    + + + +
    +

    <static> rotateMatrix(matrix, direction) → {Array.<Array.<any>>}

    + + +
    +
    + + + +

    Rotates the given matrix (array of arrays).

    -

    Based on the routine from http://jsfiddle.net/MrPolywhirl/NH42z/.

    -
    - - - - - - - -
    Parameters:
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    NameTypeDescription
    matrix - - -Array.<Array.<any>> - - - -

    The array to rotate; this matrix may be altered.

    direction - - -number -| - -string - - - -

    The amount to rotate: the rotation in degrees (90, -90, 270, -270, 180) or a string command ('rotateLeft', 'rotateRight' or 'rotate180').

    - - - - -
    Returns:
    -
    - - - -
    - -Array.<Array.<any>> - - - -
    - -
    -

    The rotated matrix. The source matrix should be discarded for the returned matrix.

    -
    - - - -
    - - - -
    - - - - - - - - - - - - - - - - - - - -
    Source - - utils/ArrayUtils.js, line 132 -
    - - - - - - - -
    - - - - - - - - - - - -
    - - - -
    -

    <static> shuffle(array) → {Array.<any>}

    - - -
    -
    - - - -
    -

    A standard Fisher-Yates Array shuffle implementation which modifies the array in place.

    -
    - - - - - - - -
    Parameters:
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    NameTypeDescription
    array - - -Array.<any> - - - -

    The array to shuffle.

    - - - - -
    Returns:
    -
    - - - -
    - -Array.<any> - - - -
    - -
    -

    The original array, now shuffled.

    -
    - - - -
    - - - -
    - - - - - - - - - - - - - - - - - - - -
    Source - - utils/ArrayUtils.js, line 80 -
    - - - - - - - -
    - - - - - - - - - - - -
    - - - -
    -

    <static> transposeMatrix(array) → {Array.<Array.<any>>}

    - - -
    -
    - - - -
    -

    Transposes the elements of the given matrix (array of arrays).

    -
    - - - - - - - -
    Parameters:
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    NameTypeDescription
    array - - -Array.<Array.<any>> - - - -

    The matrix to transpose.

    - - - - -
    Returns:
    -
    - - - -
    - -Array.<Array.<any>> - - - -
    - -
    -

    A new transposed matrix

    -
    - - - -
    - - - -
    - - - - - - - - - - - - - - - - - - - -
    Source - - utils/ArrayUtils.js, line 101 -
    - - - - - - - -
    - - - - - - - - - - - -
    - - - -
    -

    numberArray(start, end) → {Array.<number>}

    - - -
    -
    - - - -
    +

    Based on the routine from http://jsfiddle.net/MrPolywhirl/NH42z/.

    +
    + + + + + + + +
    Parameters:
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeDescription
    matrix + + +Array.<Array.<any>> + + + +

    The array to rotate; this matrix may be altered.

    direction + + +number +| + +string + + + +

    The amount to rotate: the rotation in degrees (90, -90, 270, -270, 180) or a string command ('rotateLeft', 'rotateRight' or 'rotate180').

    + + + + +
    Returns:
    +
    + + + +
    + +Array.<Array.<any>> + + - +
    + +
    +

    The rotated matrix. The source matrix should be discarded for the returned matrix.

    +
    + + + +
    + + + +
    + + + + + + + + + + + + + + + + + + + +
    Source - + utils/ArrayUtils.js, line 132 +
    + + + + + + + +
    + + + + + + + + + + + +
    + + + +
    +

    <static> rotateRight(array) → {any}

    + + +
    +
    + + + +
    +

    Moves the element from the end of the array to the start, shifting all items in the process. +The "rotation" happens to the right.

    +

    Before: [ A, B, C, D, E, F ] +After: [ F, A, B, C, D, E ]

    +

    See also Phaser.ArrayUtils.rotateLeft.

    +
    + + + + + + + +
    Parameters:
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeDescription
    array + + +Array.<any> + + + +

    The array to rotate. The array is modified.

    + + + + +
    Returns:
    +
    + + + +
    + +any + + - +
    + +
    +

    The shifted value.

    +
    + + + +
    + + + +
    + + + + + + + + + + + + + + + + + + + +
    Source - + utils/ArrayUtils.js, line 195 +
    + + + + + + + +
    + + + + + + + + + + + +
    + + + +
    +

    <static> shuffle(array) → {Array.<any>}

    + + +
    +
    + + + +
    +

    A standard Fisher-Yates Array shuffle implementation which modifies the array in place.

    +
    + + + + + + + +
    Parameters:
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeDescription
    array + + +Array.<any> + + + +

    The array to shuffle.

    + + + + +
    Returns:
    +
    + + + +
    + +Array.<any> + + - +
    + +
    +

    The original array, now shuffled.

    +
    + + + +
    + + + +
    + + + + + + + + + + + + + + + + + + + +
    Source - + utils/ArrayUtils.js, line 80 +
    + + + + + + + +
    + + + + + + + + + + + +
    + + + +
    +

    <static> transposeMatrix(array) → {Array.<Array.<any>>}

    + + +
    +
    + + + +
    +

    Transposes the elements of the given matrix (array of arrays).

    +
    + + + + + + + +
    Parameters:
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeDescription
    array + + +Array.<Array.<any>> + + + +

    The matrix to transpose.

    + + + + +
    Returns:
    +
    + + + +
    + +Array.<Array.<any>> + + - +
    + +
    +

    A new transposed matrix

    +
    + + + +
    + + + +
    + + + + + + + + + + + + + + + + + + + +
    Source - + utils/ArrayUtils.js, line 101 +
    + + + + + + + +
    + + + + + + + + + + + +
    + + + +
    +

    numberArray(start, end) → {Array.<number>}

    + + +
    +
    + + + +

    Create an array representing the inclusive range of numbers (usually integers) in [start, end]. -This is equivalent to numberArrayStep(start, end, 1).

    -
    - - - - - - - -
    Parameters:
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    NameTypeDescription
    start - - -number - - - -

    The minimum value the array starts with.

    end - - -number - - - -

    The maximum value the array contains.

    - - - - -
    Returns:
    -
    - - - -
    - -Array.<number> - - - -
    - -
    -

    The array of number values.

    -
    - - - -
    - - - -
    - - - - - - - - - - - - - - - - - - - -
    Source - - utils/ArrayUtils.js, line 212 -
    - - - - - - - -
    - - - - - - - - - - - -
    - - - -
    -

    numberArrayStep(start, end, step) → {Array}

    - - -
    -
    - - - -
    +This is equivalent to numberArrayStep(start, end, 1).

    +
    + + + + + + + +
    Parameters:
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeDescription
    start + + +number + + + +

    The minimum value the array starts with.

    end + + +number + + + +

    The maximum value the array contains.

    + + + + +
    Returns:
    +
    + + + +
    + +Array.<number> + + - +
    + +
    +

    The array of number values.

    +
    + + + +
    + + + +
    + + + + + + + + + + + + + + + + + + + +
    Source - + utils/ArrayUtils.js, line 262 +
    + + + + + + + +
    + + + + + + + + + + + +
    + + + +
    +

    numberArrayStep(start, end, step) → {Array}

    + + +
    +
    + + + +

    Create an array of numbers (positive and/or negative) progressing from start up to but not including end by advancing by step.

    If start is less than end a zero-length range is created unless a negative step is specified.

    Certain values for start and end (eg. NaN/undefined/null) are currently coerced to 0; -for forward compatibility make sure to pass in actual numbers.

    -
    - - - - - - - -
    Parameters:
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    NameTypeArgumentDefaultDescription
    start - - -number - - - - - - - - - - - -

    The start of the range.

    end - - -number - - - - - - <optional>
    - - - - - -
    - -

    The end of the range.

    step - - -number - - - - - - <optional>
    - - - - - -
    - - 1 - -

    The value to increment or decrement by.

    - - - - -
    Returns:
    -
    - - - -
    - -Array - - - -
    - -
    -

    Returns the new array of numbers.

    -
    - - - -
    - - - -
    - - - - - - - - - - - - - - - - - - - -
    Source - - utils/ArrayUtils.js, line 234 -
    - - - - - - - -
    - - - - - - - - - - - -
    Example
    - -
    Phaser.ArrayUtils.numberArrayStep(4);
    -// => [0, 1, 2, 3]
    -
    -Phaser.ArrayUtils.numberArrayStep(1, 5);
    -// => [1, 2, 3, 4]
    -
    -Phaser.ArrayUtils.numberArrayStep(0, 20, 5);
    -// => [0, 5, 10, 15]
    -
    -Phaser.ArrayUtils.numberArrayStep(0, -4, -1);
    -// => [0, -1, -2, -3]
    -
    -Phaser.ArrayUtils.numberArrayStep(1, 4, 0);
    -// => [1, 1, 1]
    -
    -Phaser.ArrayUtils.numberArrayStep(0);
    -// => []
    - - - -
    - -
    - - - - - -
    - -
    - - - - -
    - -
    -
    - - - - Phaser Copyright © 2012-2016 Photon Storm Ltd. - -
    - - - Documentation generated by JSDoc 3.3.3 - on Fri Jun 17 2016 12:45:30 GMT+0100 (BST) using the DocStrap template. - -
    -
    - - -
    -
    -
    - -
    -
    - -
    - - - - - - - - - - - - - - - - - - +for forward compatibility make sure to pass in actual numbers.

    + + + + + + + + +
    Parameters:
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeArgumentDefaultDescription
    start + + +number + + + + + + + + + + + +

    The start of the range.

    end + + +number + + + + + + <optional>
    + + + + + +
    + +

    The end of the range.

    step + + +number + + + + + + <optional>
    + + + + + +
    + + 1 + +

    The value to increment or decrement by.

    + + + + +
    Returns:
    +
    + + + +
    + +Array + + - +
    + +
    +

    Returns the new array of numbers.

    +
    + + + +
    + + + +
    + + + + + + + + + + + + + + + + + + + +
    Source - + utils/ArrayUtils.js, line 284 +
    + + + + + + + +
    + + + + + + + + + + + +
    Example
    + +
    Phaser.ArrayUtils.numberArrayStep(4);
    // => [0, 1, 2, 3]
    
    Phaser.ArrayUtils.numberArrayStep(1, 5);
    // => [1, 2, 3, 4]
    
    Phaser.ArrayUtils.numberArrayStep(0, 20, 5);
    // => [0, 5, 10, 15]
    
    Phaser.ArrayUtils.numberArrayStep(0, -4, -1);
    // => [0, -1, -2, -3]
    
    Phaser.ArrayUtils.numberArrayStep(1, 4, 0);
    // => [1, 1, 1]
    
    Phaser.ArrayUtils.numberArrayStep(0);
    // => []
    + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + Phaser Copyright © 2012-2016 Photon Storm Ltd. + +
    + + + Documentation generated by JSDoc 3.3.3 + on Fri Jul 08 2016 15:42:35 GMT+0100 (GMT Daylight Time) using the DocStrap template. + +
    + + + +
    +
    +
    + +
    + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/docs/Phaser.AudioSprite.html b/docs/Phaser.AudioSprite.html index 410925926..8aef8ba14 100644 --- a/docs/Phaser.AudioSprite.html +++ b/docs/Phaser.AudioSprite.html @@ -708,10 +708,6 @@ ComplexPrimitiveShader -
  • - DisplayObject -
  • -
  • DisplayObjectContainer
  • @@ -744,6 +740,10 @@ PIXI +
  • + DisplayObject +
  • +
  • PixiFastShader
  • @@ -2237,7 +2237,7 @@ The JSON follows the format of that created by https://github.com/tonistiigi/aud Documentation generated by JSDoc 3.3.3 - on Fri Jun 17 2016 12:45:30 GMT+0100 (BST) using the DocStrap template. + on Fri Jul 08 2016 15:42:35 GMT+0100 (GMT Daylight Time) using the DocStrap template. diff --git a/docs/Phaser.BitmapData.html b/docs/Phaser.BitmapData.html index 494779a7f..0e318927c 100644 --- a/docs/Phaser.BitmapData.html +++ b/docs/Phaser.BitmapData.html @@ -708,10 +708,6 @@ ComplexPrimitiveShader -
  • - DisplayObject -
  • -
  • DisplayObjectContainer
  • @@ -744,6 +740,10 @@ PIXI +
  • + DisplayObject +
  • +
  • PixiFastShader
  • @@ -1240,7 +1240,7 @@

    new BitmapData(game, key, width, height)

    + id="BitmapData">new BitmapData(game, key, width, height, skipPool)
    @@ -1437,6 +1437,45 @@ in your State's shutdown method if you wish to free-up the resources the BitmapD + + + + skipPool + + + + + +boolean + + + + + + + + + <optional>
    + + + + + + + + + + + + false + + + + +

    When this BitmapData generates its internal canvas to use for rendering, it will get the canvas from the CanvasPool if false, or create its own if true.

    + + + @@ -1466,7 +1505,7 @@ in your State's shutdown method if you wish to free-up the resources the BitmapD
    Source - - gameobjects/BitmapData.js, line 23 + gameobjects/BitmapData.js, line 24
    @@ -1546,7 +1585,7 @@ in your State's shutdown method if you wish to free-up the resources the BitmapD
    Source - - gameobjects/BitmapData.js, line 122 + gameobjects/BitmapData.js, line 124
    @@ -1602,7 +1641,7 @@ in your State's shutdown method if you wish to free-up the resources the BitmapD
    Source - - gameobjects/BitmapData.js, line 52 + gameobjects/BitmapData.js, line 54
    @@ -1658,7 +1697,7 @@ in your State's shutdown method if you wish to free-up the resources the BitmapD
    Source - - gameobjects/BitmapData.js, line 58 + gameobjects/BitmapData.js, line 60
    @@ -1714,7 +1753,7 @@ in your State's shutdown method if you wish to free-up the resources the BitmapD
    Source - - gameobjects/BitmapData.js, line 63 + gameobjects/BitmapData.js, line 65
    @@ -1771,7 +1810,7 @@ Note that this is unavailable in some browsers (such as Epic Browser due to its
    Source - - gameobjects/BitmapData.js, line 82 + gameobjects/BitmapData.js, line 84
    @@ -1827,7 +1866,7 @@ Note that this is unavailable in some browsers (such as Epic Browser due to its
    Source - - gameobjects/BitmapData.js, line 157 + gameobjects/BitmapData.js, line 159
    @@ -1883,7 +1922,7 @@ Note that this is unavailable in some browsers (such as Epic Browser due to its
    Source - - gameobjects/BitmapData.js, line 152 + gameobjects/BitmapData.js, line 154
    @@ -1939,7 +1978,7 @@ Note that this is unavailable in some browsers (such as Epic Browser due to its
    Source - - gameobjects/BitmapData.js, line 133 + gameobjects/BitmapData.js, line 135
    @@ -1995,7 +2034,7 @@ Note that this is unavailable in some browsers (such as Epic Browser due to its
    Source - - gameobjects/BitmapData.js, line 31 + gameobjects/BitmapData.js, line 33
    @@ -2051,7 +2090,7 @@ Note that this is unavailable in some browsers (such as Epic Browser due to its
    Source - - gameobjects/BitmapData.js, line 46 + gameobjects/BitmapData.js, line 48
    @@ -2109,7 +2148,7 @@ This property is updated automatically after the first game loop, according to t
    Source - - gameobjects/BitmapData.js, line 75 + gameobjects/BitmapData.js, line 77
    @@ -2165,7 +2204,7 @@ This property is updated automatically after the first game loop, according to t
    Source - - gameobjects/BitmapData.js, line 36 + gameobjects/BitmapData.js, line 38
    @@ -2221,7 +2260,7 @@ This property is updated automatically after the first game loop, according to t
    Source - - gameobjects/BitmapData.js, line 92 + gameobjects/BitmapData.js, line 94
    @@ -2277,7 +2316,7 @@ This property is updated automatically after the first game loop, according to t
    Source - - gameobjects/BitmapData.js, line 68 + gameobjects/BitmapData.js, line 70
    @@ -2333,7 +2372,7 @@ This property is updated automatically after the first game loop, according to t
    Source - - gameobjects/BitmapData.js, line 128 + gameobjects/BitmapData.js, line 130
    @@ -2389,7 +2428,7 @@ This property is updated automatically after the first game loop, according to t
    Source - - gameobjects/BitmapData.js, line 139 + gameobjects/BitmapData.js, line 141
    @@ -2445,7 +2484,7 @@ This property is updated automatically after the first game loop, according to t
    Source - - gameobjects/BitmapData.js, line 147 + gameobjects/BitmapData.js, line 149
    @@ -2501,7 +2540,7 @@ This property is updated automatically after the first game loop, according to t
    Source - - gameobjects/BitmapData.js, line 41 + gameobjects/BitmapData.js, line 43
    @@ -2753,7 +2792,7 @@ This property is updated automatically after the first game loop, according to t
    Source - - gameobjects/BitmapData.js, line 2407 + gameobjects/BitmapData.js, line 2415
    @@ -2902,7 +2941,7 @@ This will replace any texture they will currently have set.

    Source - - gameobjects/BitmapData.js, line 391 + gameobjects/BitmapData.js, line 393
    @@ -3256,7 +3295,7 @@ This will replace any texture they will currently have set.

    Source - - gameobjects/BitmapData.js, line 1177 + gameobjects/BitmapData.js, line 1179
    @@ -3540,7 +3579,7 @@ This will replace any texture they will currently have set.

    Source - - gameobjects/BitmapData.js, line 1728 + gameobjects/BitmapData.js, line 1736
    @@ -3630,7 +3669,7 @@ This will replace any texture they will currently have set.

    Source - - gameobjects/BitmapData.js, line 2157 + gameobjects/BitmapData.js, line 2165
    @@ -3720,7 +3759,7 @@ This will replace any texture they will currently have set.

    Source - - gameobjects/BitmapData.js, line 2339 + gameobjects/BitmapData.js, line 2347
    @@ -3810,7 +3849,7 @@ This will replace any texture they will currently have set.

    Source - - gameobjects/BitmapData.js, line 2248 + gameobjects/BitmapData.js, line 2256
    @@ -3900,7 +3939,7 @@ This will replace any texture they will currently have set.

    Source - - gameobjects/BitmapData.js, line 2235 + gameobjects/BitmapData.js, line 2243
    @@ -3990,7 +4029,7 @@ This will replace any texture they will currently have set.

    Source - - gameobjects/BitmapData.js, line 2209 + gameobjects/BitmapData.js, line 2217
    @@ -4080,7 +4119,7 @@ This will replace any texture they will currently have set.

    Source - - gameobjects/BitmapData.js, line 2131 + gameobjects/BitmapData.js, line 2139
    @@ -4170,7 +4209,7 @@ This will replace any texture they will currently have set.

    Source - - gameobjects/BitmapData.js, line 2105 + gameobjects/BitmapData.js, line 2113
    @@ -4260,7 +4299,7 @@ This will replace any texture they will currently have set.

    Source - - gameobjects/BitmapData.js, line 2118 + gameobjects/BitmapData.js, line 2126
    @@ -4350,7 +4389,7 @@ This will replace any texture they will currently have set.

    Source - - gameobjects/BitmapData.js, line 2092 + gameobjects/BitmapData.js, line 2100
    @@ -4440,7 +4479,7 @@ This will replace any texture they will currently have set.

    Source - - gameobjects/BitmapData.js, line 2287 + gameobjects/BitmapData.js, line 2295
    @@ -4530,7 +4569,7 @@ This will replace any texture they will currently have set.

    Source - - gameobjects/BitmapData.js, line 2300 + gameobjects/BitmapData.js, line 2308
    @@ -4620,7 +4659,7 @@ This will replace any texture they will currently have set.

    Source - - gameobjects/BitmapData.js, line 2261 + gameobjects/BitmapData.js, line 2269
    @@ -4710,7 +4749,7 @@ This will replace any texture they will currently have set.

    Source - - gameobjects/BitmapData.js, line 2313 + gameobjects/BitmapData.js, line 2321
    @@ -4800,7 +4839,7 @@ This will replace any texture they will currently have set.

    Source - - gameobjects/BitmapData.js, line 2222 + gameobjects/BitmapData.js, line 2230
    @@ -4890,7 +4929,7 @@ This will replace any texture they will currently have set.

    Source - - gameobjects/BitmapData.js, line 2352 + gameobjects/BitmapData.js, line 2360
    @@ -4980,7 +5019,7 @@ This will replace any texture they will currently have set.

    Source - - gameobjects/BitmapData.js, line 2170 + gameobjects/BitmapData.js, line 2178
    @@ -5070,7 +5109,7 @@ This will replace any texture they will currently have set.

    Source - - gameobjects/BitmapData.js, line 2196 + gameobjects/BitmapData.js, line 2204
    @@ -5160,7 +5199,7 @@ This will replace any texture they will currently have set.

    Source - - gameobjects/BitmapData.js, line 2027 + gameobjects/BitmapData.js, line 2035
    @@ -5250,7 +5289,7 @@ This will replace any texture they will currently have set.

    Source - - gameobjects/BitmapData.js, line 2326 + gameobjects/BitmapData.js, line 2334
    @@ -5340,7 +5379,7 @@ This will replace any texture they will currently have set.

    Source - - gameobjects/BitmapData.js, line 2183 + gameobjects/BitmapData.js, line 2191
    @@ -5430,7 +5469,7 @@ This will replace any texture they will currently have set.

    Source - - gameobjects/BitmapData.js, line 2274 + gameobjects/BitmapData.js, line 2282
    @@ -5520,7 +5559,7 @@ This will replace any texture they will currently have set.

    Source - - gameobjects/BitmapData.js, line 2079 + gameobjects/BitmapData.js, line 2087
    @@ -5610,7 +5649,7 @@ This will replace any texture they will currently have set.

    Source - - gameobjects/BitmapData.js, line 2053 + gameobjects/BitmapData.js, line 2061
    @@ -5700,7 +5739,7 @@ This will replace any texture they will currently have set.

    Source - - gameobjects/BitmapData.js, line 2066 + gameobjects/BitmapData.js, line 2074
    @@ -5790,7 +5829,7 @@ This will replace any texture they will currently have set.

    Source - - gameobjects/BitmapData.js, line 2040 + gameobjects/BitmapData.js, line 2048
    @@ -5880,7 +5919,7 @@ This will replace any texture they will currently have set.

    Source - - gameobjects/BitmapData.js, line 2144 + gameobjects/BitmapData.js, line 2152
    @@ -6124,7 +6163,7 @@ This will replace any texture they will currently have set.

    Source - - gameobjects/BitmapData.js, line 1879 + gameobjects/BitmapData.js, line 1887
    @@ -6400,7 +6439,7 @@ but Phaser will not do this automatically for you.

    Source - - gameobjects/BitmapData.js, line 461 + gameobjects/BitmapData.js, line 463
    @@ -6470,7 +6509,7 @@ but Phaser will not do this automatically for you.

    Source - - gameobjects/BitmapData.js, line 455 + gameobjects/BitmapData.js, line 457
    @@ -7267,7 +7306,7 @@ and don't wish to translate, scale or rotate it from its original values.

    Source - - gameobjects/BitmapData.js, line 1203 + gameobjects/BitmapData.js, line 1205
    @@ -7662,7 +7701,7 @@ and don't wish to translate, scale or rotate it from its original values.

    Source - - gameobjects/BitmapData.js, line 1532 + gameobjects/BitmapData.js, line 1534
    @@ -7912,7 +7951,7 @@ It takes the objects tint and scale mode into consideration before drawing.

    Source - - gameobjects/BitmapData.js, line 1424 + gameobjects/BitmapData.js, line 1426
    @@ -7982,7 +8021,7 @@ It takes the objects tint and scale mode into consideration before drawing.

    Source - - gameobjects/BitmapData.js, line 2012 + gameobjects/BitmapData.js, line 2020
    @@ -8019,8 +8058,12 @@ It takes the objects tint and scale mode into consideration before drawing.

    Draws the given Phaser.Sprite, Phaser.Image or Phaser.Text to this BitmapData at the coordinates specified. -You can use the optional width and height values to 'stretch' the sprite as it is drawn. This uses drawImage stretching, not scaling. -When drawing it will take into account the Sprites rotation, scale and alpha values.

    +You can use the optional width and height values to 'stretch' the sprite as it is drawn. This uses drawImage stretching, not scaling.

    +

    The children will be drawn at their x and y world space coordinates. If this is outside the bounds of the BitmapData they won't be visible. +When drawing it will take into account the rotation, scale, scaleMode, alpha and tint values.

    +

    Note: You should ensure that at least 1 full update has taken place before calling this, +otherwise the objects are likely to render incorrectly, if at all. +You can trigger an update yourself by calling stage.updateTransform() before calling draw.

    @@ -8378,7 +8421,7 @@ When drawing it will take into account the Sprites rotation, scale and alpha val
    Source - - gameobjects/BitmapData.js, line 1551 + gameobjects/BitmapData.js, line 1553
    @@ -8635,7 +8678,7 @@ trigger an update yourself by calling stage.updateTransform() befor
    Source - - gameobjects/BitmapData.js, line 1640 + gameobjects/BitmapData.js, line 1648
    @@ -8678,7 +8721,7 @@ trigger an update yourself by calling stage.updateTransform() befor When drawing it will take into account the rotation, scale, scaleMode, alpha and tint values.

    Note: You should ensure that at least 1 full update has taken place before calling this, otherwise the objects are likely to render incorrectly, if at all. -You can trigger an update yourself by calling stage.updateTransform() before calling drawGroup.

    +You can trigger an update yourself by calling stage.updateTransform() before calling drawGroup.

    @@ -8875,7 +8918,7 @@ You can trigger an update yourself by calling stage.updateTransform()Source - - gameobjects/BitmapData.js, line 1573 + gameobjects/BitmapData.js, line 1581 @@ -9331,7 +9374,7 @@ the color during extraction.

    Source - - gameobjects/BitmapData.js, line 1762 + gameobjects/BitmapData.js, line 1770
    @@ -9595,7 +9638,7 @@ the color during extraction.

    Source - - gameobjects/BitmapData.js, line 492 + gameobjects/BitmapData.js, line 494
    @@ -9743,7 +9786,7 @@ key or the texture. First call generateTexture:

    Source - - gameobjects/BitmapData.js, line 514 + gameobjects/BitmapData.js, line 516
    @@ -9895,7 +9938,7 @@ The rectangle returned will extend from the top-left of the image to the bottom-
    Source - - gameobjects/BitmapData.js, line 1149 + gameobjects/BitmapData.js, line 1151
    @@ -10060,7 +10103,7 @@ It then stops scanning and returns an object containing the color of the pixel i
    Source - - gameobjects/BitmapData.js, line 1066 + gameobjects/BitmapData.js, line 1068
    @@ -10275,7 +10318,7 @@ otherwise this may return out of date color values, or worse - throw a run-time
    Source - - gameobjects/BitmapData.js, line 983 + gameobjects/BitmapData.js, line 985
    @@ -10440,7 +10483,7 @@ Note that on little-endian systems the format is 0xAABBGGRR and on big-endian th
    Source - - gameobjects/BitmapData.js, line 1014 + gameobjects/BitmapData.js, line 1016
    @@ -10747,7 +10790,7 @@ otherwise this may return out of date color values, or worse - throw a run-time
    Source - - gameobjects/BitmapData.js, line 1034 + gameobjects/BitmapData.js, line 1036
    @@ -10886,7 +10929,7 @@ otherwise this may return out of date color values, or worse - throw a run-time
    Source - - gameobjects/BitmapData.js, line 1053 + gameobjects/BitmapData.js, line 1055
    @@ -11224,7 +11267,7 @@ otherwise this may return out of date color values, or worse - throw a run-time
    Source - - gameobjects/BitmapData.js, line 1908 + gameobjects/BitmapData.js, line 1916
    @@ -11384,7 +11427,7 @@ If a string is given it will assume it's a cache key and look in Phaser.Cache fo
    Source - - gameobjects/BitmapData.js, line 420 + gameobjects/BitmapData.js, line 422
    @@ -11614,7 +11657,7 @@ If a string is given it will assume it's a cache key and look in Phaser.Cache fo
    Source - - gameobjects/BitmapData.js, line 238 + gameobjects/BitmapData.js, line 240
    @@ -11809,7 +11852,7 @@ If a string is given it will assume it's a cache key and look in Phaser.Cache fo
    Source - - gameobjects/BitmapData.js, line 265 + gameobjects/BitmapData.js, line 267
    @@ -12004,7 +12047,7 @@ If a string is given it will assume it's a cache key and look in Phaser.Cache fo
    Source - - gameobjects/BitmapData.js, line 328 + gameobjects/BitmapData.js, line 330
    @@ -12350,7 +12393,7 @@ The callback will also be sent the pixels x and y coordinates respectively.

    Source - - gameobjects/BitmapData.js, line 698 + gameobjects/BitmapData.js, line 700
    @@ -12699,7 +12742,7 @@ If a new color object is returned the pixel will be set to the r, g, b and a col
    Source - - gameobjects/BitmapData.js, line 640 + gameobjects/BitmapData.js, line 642
    @@ -12974,7 +13017,7 @@ If a new color object is returned the pixel will be set to the r, g, b and a col
    Source - - gameobjects/BitmapData.js, line 1815 + gameobjects/BitmapData.js, line 1823
    @@ -13066,7 +13109,7 @@ If you wish to suppress this functionality set BitmapData.disableTextureUpload t
    Source - - gameobjects/BitmapData.js, line 1992 + gameobjects/BitmapData.js, line 2000
    @@ -13466,7 +13509,7 @@ An optional region parameter controls if the replacement happens in just a speci
    Source - - gameobjects/BitmapData.js, line 752 + gameobjects/BitmapData.js, line 754
    @@ -13628,7 +13671,7 @@ An optional region parameter controls if the replacement happens in just a speci
    Source - - gameobjects/BitmapData.js, line 550 + gameobjects/BitmapData.js, line 552
    @@ -13902,7 +13945,7 @@ An optional region parameter controls if the replacement happens in just a speci
    Source - - gameobjects/BitmapData.js, line 802 + gameobjects/BitmapData.js, line 804
    @@ -14236,7 +14279,7 @@ An optional region parameter controls if the replacement happens in just a speci
    Source - - gameobjects/BitmapData.js, line 965 + gameobjects/BitmapData.js, line 967
    @@ -14605,7 +14648,7 @@ An optional region parameter controls if the replacement happens in just a speci
    Source - - gameobjects/BitmapData.js, line 926 + gameobjects/BitmapData.js, line 928
    @@ -14879,7 +14922,7 @@ Note: At the time of writing (October 2014) Chrome still doesn't support shadowB
    Source - - gameobjects/BitmapData.js, line 1698 + gameobjects/BitmapData.js, line 1706
    @@ -15155,7 +15198,7 @@ The hue is wrapped to keep it within the range 0 to 1. Saturation and lightness
    Source - - gameobjects/BitmapData.js, line 863 + gameobjects/BitmapData.js, line 865
    @@ -15499,7 +15542,7 @@ If you need to do a lot of font work to this BitmapData we'd recommend implement
    Source - - gameobjects/BitmapData.js, line 1839 + gameobjects/BitmapData.js, line 1847
    @@ -15731,7 +15774,7 @@ If you need to do a lot of font work to this BitmapData we'd recommend implement
    Source - - gameobjects/BitmapData.js, line 1942 + gameobjects/BitmapData.js, line 1950
    @@ -16010,7 +16053,7 @@ If not given the dimensions defaults to the full size of the context.

    Source - - gameobjects/BitmapData.js, line 594 + gameobjects/BitmapData.js, line 596
    @@ -16059,7 +16102,7 @@ If not given the dimensions defaults to the full size of the context.

    Documentation generated by JSDoc 3.3.3 - on Fri Jun 17 2016 12:45:30 GMT+0100 (BST) using the DocStrap template. + on Fri Jul 08 2016 15:42:35 GMT+0100 (GMT Daylight Time) using the DocStrap template. diff --git a/docs/Phaser.BitmapText.html b/docs/Phaser.BitmapText.html index b1680c388..a3a7a657f 100644 --- a/docs/Phaser.BitmapText.html +++ b/docs/Phaser.BitmapText.html @@ -708,10 +708,6 @@ ComplexPrimitiveShader -
  • - DisplayObject -
  • -
  • DisplayObjectContainer
  • @@ -744,6 +740,10 @@ PIXI +
  • + DisplayObject +
  • +
  • PixiFastShader
  • @@ -1770,67 +1770,6 @@ However you can use Group.getFirstAlive in conjunction with this pr - - - - - - - - -
    -

    alpha :Number

    - - -
    -
    - - - -
    -

    The opacity of the object.

    -
    - - - - - -
    - - - - - - - -
    Inherited From:
    -
    - - - - - - - - - - - - - -
    Source - - pixi/display/DisplayObject.js, line 46 -
    - - - - - - -
    @@ -2237,69 +2176,6 @@ This is the same as y + height - offsetY.

    - - - - -
    - - - -
    -

    cacheAsBitmap :Boolean

    - - -
    -
    - - - -
    -

    Set if this display object is cached as a bitmap. -This basically takes a snap shot of the display object as it is at that moment. It can provide a performance benefit for complex static displayObjects. -To remove simply set this property to 'null'

    -
    - - - - - -
    - - - - - - - -
    Inherited From:
    -
    - - - - - - - - - - - - - -
    Source - - pixi/display/DisplayObject.js, line 355 -
    - - - - - - -
    @@ -3073,143 +2949,6 @@ It will also set the visible property to true.

    - - - - -
    - - - -
    -

    filterArea :Rectangle

    - - -
    -
    - - - -
    -

    The area the filter is applied to like the hitArea this is used as more of an optimisation -rather than figuring out the dimensions of the displayObject each frame you can set this rectangle

    -
    - - - - - -
    - - - - - - - -
    Inherited From:
    -
    - - - - - - - - - - - - - -
    Source - - pixi/display/DisplayObject.js, line 164 -
    - - - - - - - -
    - - - -
    - - - -
    -

    filters :Array.<Filter>

    - - -
    -
    - - - -
    -

    Sets the filters for the displayObject. -IMPORTANT: This is a webGL only feature and will be ignored by the Canvas renderer.

    -

    To remove filters simply set this property to 'null'.

    -

    You cannot have a filter and a multiply blend mode active at the same time. Setting a filter will reset -this objects blend mode to NORMAL.

    -
    - - - -
    Type:
    -
      -
    • - -Array.<Filter> - - -
    • -
    - - - -
    - - - - - - - -
    Inherited From:
    -
    - - - - - - - - - - - - - -
    Source - - pixi/display/DisplayObject.js, line 307 -
    - - - - - - -
    @@ -3574,87 +3313,6 @@ This property is mostly used internally by the physics systems, but is exposed f - - - - -
    - - - -
    -

    hitArea :Rectangle|Circle|Ellipse|Polygon

    - - -
    -
    - - - -
    -

    This is the defined area that will pick up mouse / touch events. It is null by default. -Setting it is a neat way of optimising the hitTest function that the interactionManager will use (as it will not need to hit test all the children)

    -
    - - - -
    Type:
    -
      -
    • - -Rectangle -| - -Circle -| - -Ellipse -| - -Polygon - - -
    • -
    - - - -
    - - - - - - - -
    Inherited From:
    -
    - - - - - - - - - - - - - -
    Source - - pixi/display/DisplayObject.js, line 62 -
    - - - - - - -
    @@ -3880,6 +3538,9 @@ for this Game Object and it will then start to process click / touch events and

    You can then access the Input Handler via this.input.

    Note that Input related events are dispatched from this.events, i.e.: events.onInputDown.

    If you set this property to false it will stop the Input Handler from processing any more input events.

    +

    If you want to temporarily disable input for a Game Object, then it's better to set +input.enabled = false, as it won't reset any of the Input Handlers internal properties. +You can then toggle this back on as needed.

    @@ -3912,7 +3573,7 @@ for this Game Object and it will then start to process click / touch events and
    Source - - gameobjects/components/InputEnabled.js, line 38 + gameobjects/components/InputEnabled.js, line 42
    @@ -4196,69 +3857,6 @@ When it reaches zero it will call the kill method.

    - - - - - - - - -
    -

    mask :PIXI.Graphics

    - - -
    -
    - - - -
    -

    Sets a mask for the displayObject. A mask is an object that limits the visibility of an object to the shape of the mask applied to it. -In PIXI a regular mask must be a PIXI.Graphics object. This allows for much faster masking in canvas as it utilises shape clipping. -To remove a mask, set this property to null.

    -
    - - - - - -
    - - - - - - - -
    Inherited From:
    -
    - - - - - - - - - - - - - -
    Source - - pixi/display/DisplayObject.js, line 282 -
    - - - - - - -
    @@ -4630,67 +4228,6 @@ is called as soon as the Game Object leaves the camera bounds.

    - - - - -
    - - - -
    -

    <readonly> parent :PIXI.DisplayObjectContainer

    - - -
    -
    - - - -
    -

    [read-only] The display object container that contains this display object.

    -
    - - - - - -
    - - - - - - - -
    Inherited From:
    -
    - - - - - - - - - - - - - -
    Source - - pixi/display/DisplayObject.js, line 79 -
    - - - - - - -
    @@ -4811,128 +4348,6 @@ such as with Buttons or other Input events.

    - - - - -
    - - - -
    -

    pivot :Point

    - - -
    -
    - - - -
    -

    The pivot point of the displayObject that it rotates around

    -
    - - - - - -
    - - - - - - - -
    Inherited From:
    -
    - - - - - - - - - - - - - -
    Source - - pixi/display/DisplayObject.js, line 30 -
    - - - - - - - -
    - - - -
    - - - -
    -

    position :Point

    - - -
    -
    - - - -
    -

    The coordinate of the object relative to the local coordinates of the parent.

    -
    - - - - - -
    - - - - - - - -
    Inherited From:
    -
    - - - - - - - - - - - - - -
    Source - - pixi/display/DisplayObject.js, line 14 -
    - - - - - - -
    @@ -5055,67 +4470,6 @@ such as with Buttons or other Input events.

    - - - - -
    - - - -
    -

    renderable :Boolean

    - - -
    -
    - - - -
    -

    Can this object be rendered

    -
    - - - - - -
    - - - - - - - -
    Inherited From:
    -
    - - - - - - - - - - - - - -
    Source - - pixi/display/DisplayObject.js, line 71 -
    - - - - - - -
    @@ -5240,128 +4594,6 @@ This is the same as x + width - offsetX.

    - - - - -
    - - - -
    -

    rotation :Number

    - - -
    -
    - - - -
    -

    The rotation of the object in radians.

    -
    - - - - - -
    - - - - - - - -
    Inherited From:
    -
    - - - - - - - - - - - - - -
    Source - - pixi/display/DisplayObject.js, line 38 -
    - - - - - - - -
    - - - -
    - - - -
    -

    scale :Point

    - - -
    -
    - - - -
    -

    The scale factor of the object.

    -
    - - - - - -
    - - - - - - - -
    Inherited From:
    -
    - - - - - - - - - - - - - -
    Source - - pixi/display/DisplayObject.js, line 22 -
    - - - - - - -
    @@ -5420,67 +4652,6 @@ This is the same as x + width - offsetX.

    - - - - -
    - - - -
    -

    <readonly> stage :Stage

    - - -
    -
    - - - -
    -

    [read-only] The stage the display object is connected to, or undefined if it is not connected to the stage.

    -
    - - - - - -
    - - - - - - - -
    Inherited From:
    -
    - - - - - - - - - - - - - -
    Source - - pixi/display/DisplayObject.js, line 88 -
    - - - - - - -
    @@ -5823,67 +4994,6 @@ This is the same as y - offsetY.

    - - - - -
    - - - -
    -

    visible :Boolean

    - - -
    -
    - - - -
    -

    The visibility of the object.

    -
    - - - - - -
    - - - - - - - -
    Inherited From:
    -
    - - - - - - - - - - - - - -
    Source - - pixi/display/DisplayObject.js, line 54 -
    - - - - - - -
    @@ -6018,7 +5128,7 @@ which contains the x/y coordinates relative to the Game Objects parent.

    <readonly> worldAlpha :Number

    + id="x">x :number
    @@ -6027,7 +5137,7 @@ which contains the x/y coordinates relative to the Game Objects parent.

    -

    [read-only] The multiplied alpha of the displayObject

    +

    The position of the Game Object on the x axis relative to the local coordinates of the parent.

    @@ -6044,7 +5154,7 @@ which contains the x/y coordinates relative to the Game Objects parent.

    Inherited From:
    @@ -6060,7 +5170,7 @@ which contains the x/y coordinates relative to the Game Objects parent.

    Source - - pixi/display/DisplayObject.js, line 97 + gameobjects/components/PhysicsBody.js, line 98
    @@ -6079,7 +5189,7 @@ which contains the x/y coordinates relative to the Game Objects parent.

    <readonly> worldPosition :Point

    + id="y">y :number
    @@ -6088,8 +5198,7 @@ which contains the x/y coordinates relative to the Game Objects parent.

    -

    The position of the Display Object based on the world transform. -This value is updated at the end of updateTransform and takes all parent transforms into account.

    +

    The position of the Game Object on the y axis relative to the local coordinates of the parent.

    @@ -6106,7 +5215,7 @@ This value is updated at the end of updateTransform and takes all parent transfo
    Inherited From:
    @@ -6122,314 +5231,7 @@ This value is updated at the end of updateTransform and takes all parent transfo
    Source - - pixi/display/DisplayObject.js, line 116 -
    - - - - - - - - - - - - - - - -
    -

    <readonly> worldRotation :Number

    - - -
    -
    - - - -
    -

    The rotation of the Display Object, in radians, based on the world transform. -This value is updated at the end of updateTransform and takes all parent transforms into account.

    -
    - - - - - -
    - - - - - - - -
    Inherited From:
    -
    - - - - - - - - - - - - - -
    Source - - pixi/display/DisplayObject.js, line 136 -
    - - - - - - - -
    - - - -
    - - - -
    -

    <readonly> worldScale :Point

    - - -
    -
    - - - -
    -

    The scale of the Display Object based on the world transform. -This value is updated at the end of updateTransform and takes all parent transforms into account.

    -
    - - - - - -
    - - - - - - - -
    Inherited From:
    -
    - - - - - - - - - - - - - -
    Source - - pixi/display/DisplayObject.js, line 126 -
    - - - - - - - -
    - - - -
    - - - -
    -

    worldVisible :Boolean

    - - -
    -
    - - - -
    -

    [read-only] Indicates if the sprite is globally visible.

    -
    - - - - - -
    - - - - - - - -
    Inherited From:
    -
    - - - - - - - - - - - - - -
    Source - - pixi/display/DisplayObject.js, line 258 -
    - - - - - - - -
    - - - -
    - - - -
    -

    x :Number

    - - -
    -
    - - - -
    -

    The position of the displayObject on the x axis relative to the local coordinates of the parent.

    -
    - - - - - -
    - - - - - - - -
    Inherited From:
    -
    - - - - - - - - - - - - - -
    Source - - pixi/display/DisplayObject.js, line 722 -
    - - - - - - - -
    - - - -
    - - - -
    -

    y :Number

    - - -
    -
    - - - -
    -

    The position of the displayObject on the y axis relative to the local coordinates of the parent.

    -
    - - - - - -
    - - - - - - - -
    Inherited From:
    -
    - - - - - - - - - - - - - -
    Source - - pixi/display/DisplayObject.js, line 740 + gameobjects/components/PhysicsBody.js, line 124
    @@ -6518,7 +5320,7 @@ If you wish to re-order the layering of a Game Object then see methods like Grou

    addChild(child) → {PIXI.DisplayObject}

    + id="addChild">addChild(child) → {DisplayObject}
    @@ -6567,7 +5369,7 @@ If you wish to re-order the layering of a Game Object then see methods like Grou -PIXI.DisplayObject +DisplayObject @@ -6594,7 +5396,7 @@ If you wish to re-order the layering of a Game Object then see methods like Grou @@ -6662,7 +5464,7 @@ If you wish to re-order the layering of a Game Object then see methods like Grou

    addChildAt(child, index) → {PIXI.DisplayObject}

    + id="addChildAt">addChildAt(child, index) → {DisplayObject}
    @@ -6711,7 +5513,7 @@ If you wish to re-order the layering of a Game Object then see methods like Grou -PIXI.DisplayObject +DisplayObject @@ -6761,7 +5563,7 @@ If you wish to re-order the layering of a Game Object then see methods like Grou @@ -7660,7 +6462,7 @@ in the BitmapText font data. If it doesn't the character is removed, or replaced

    destroy()

    + id="destroy">destroy(destroyChildren, destroyTexture)
    @@ -7669,84 +6471,11 @@ in the BitmapText font data. If it doesn't the character is removed, or replaced
    -

    Destroy this DisplayObject. -Removes all references to transformCallbacks, its parent, the stage, filters, bounds, mask and cached Sprites.

    -
    - - - - - - - - - - - -
    - - - - - - - -
    Inherited From:
    -
    - - - - - - - - - - - - - -
    Source - - pixi/display/DisplayObject.js, line 223 -
    - - - - - - - -
    - - - - - - - - - - - -
    - - - -
    -

    generateTexture(resolution, scaleMode, renderer) → {PIXI.RenderTexture}

    - - -
    -
    - - - -
    -

    Useful function that returns a texture of the displayObject object that can then be used to create sprites -This can be quite useful if your displayObject is static / complicated and needs to be reused multiple times.

    +

    Destroys the Game Object. This removes it from its parent group, destroys the input, event and animation handlers if present +and nulls its reference to game, freeing it up for garbage collection.

    +

    If this Game Object has the Events component it will also dispatch the onDestroy event.

    +

    You can optionally also destroy the BaseTexture this Game Object is using. Be careful if you've +more than one Game Object sharing the same BaseTexture.

    @@ -7768,8 +6497,12 @@ This can be quite useful if your displayObject is static / complicated and needs Type + Argument + + Default + Description @@ -7780,72 +6513,78 @@ This can be quite useful if your displayObject is static / complicated and needs - resolution + destroyChildren -Number +boolean + + + <optional>
    + + + + + -

    The resolution of the texture being generated

    + + + + true + + + + +

    Should every child of this object have its destroy method called as well?

    - scaleMode + destroyTexture -Number +boolean - - - -

    See {{#crossLink "PIXI/scaleModes:property"}}PIXI.scaleModes{{/crossLink}} for possible values

    - - - - - - - renderer - - - - + + + <optional>
    -PIXI.CanvasRenderer -| -PIXI.WebGLRenderer - - - - + + + + + + false + + + -

    The renderer used to generate the texture.

    +

    Destroy the BaseTexture this Game Object is using? Note that if another Game Object is sharing the same BaseTexture it will invalidate it.

    @@ -7855,26 +6594,6 @@ This can be quite useful if your displayObject is static / complicated and needs -
    Returns:
    -
    - - - -
    - -PIXI.RenderTexture - - - -
    - -
    -

    a texture of the graphics object

    -
    - - - -
    -
    @@ -7887,7 +6606,7 @@ This can be quite useful if your displayObject is static / complicated and needs
    Inherited From:
    @@ -7903,7 +6622,7 @@ This can be quite useful if your displayObject is static / complicated and needs
    Source - - pixi/display/DisplayObject.js, line 541 + gameobjects/components/Destroy.js, line 37
    @@ -8025,7 +6744,7 @@ This can be quite useful if your displayObject is static / complicated and needs

    getChildAt(index) → {PIXI.DisplayObject}

    + id="getChildAt">getChildAt(index) → {DisplayObject}
    @@ -8101,7 +6820,7 @@ This can be quite useful if your displayObject is static / complicated and needs @@ -8218,7 +6937,7 @@ This can be quite useful if your displayObject is static / complicated and needs -PIXI.DisplayObject +DisplayObject @@ -8381,7 +7100,7 @@ This can be quite useful if your displayObject is static / complicated and needs
    Source - - pixi/display/DisplayObjectContainer.js, line 381 + pixi/display/DisplayObjectContainer.js, line 383
    @@ -8408,7 +7127,7 @@ This can be quite useful if your displayObject is static / complicated and needs

    kill() → {PIXI.DisplayObject}

    + id="kill">kill() → {PIXI.DisplayObject}
    @@ -8439,7 +7158,7 @@ it doesn't destroy the object or free it up from memory.

    -PIXI.DisplayObject +PIXI.DisplayObject -
    @@ -8762,7 +7481,7 @@ by calling this method.

    removeChild(child) → {PIXI.DisplayObject}

    + id="removeChild">removeChild(child) → {DisplayObject}
    @@ -8811,7 +7530,7 @@ by calling this method.

    -PIXI.DisplayObject +DisplayObject @@ -8838,7 +7557,7 @@ by calling this method.

    @@ -8906,7 +7625,7 @@ by calling this method.

    removeChildAt(index) → {PIXI.DisplayObject}

    + id="removeChildAt">removeChildAt(index) → {DisplayObject}
    @@ -8982,7 +7701,7 @@ by calling this method.

    @@ -9245,7 +7964,7 @@ by calling this method.

    Source - - pixi/display/DisplayObjectContainer.js, line 426 + pixi/display/DisplayObjectContainer.js, line 428
    @@ -9272,7 +7991,7 @@ by calling this method.

    reset(x, y, health) → {PIXI.DisplayObject}

    + id="reset">reset(x, y, health) → {PIXI.DisplayObject}
    @@ -9442,7 +8161,7 @@ by calling this method.

    -PIXI.DisplayObject +PIXI.DisplayObject -
    @@ -9510,7 +8229,7 @@ by calling this method.

    revive(health) → {PIXI.DisplayObject}

    + id="revive">revive(health) → {PIXI.DisplayObject}
    @@ -9608,7 +8327,7 @@ by calling this method.

    -PIXI.DisplayObject +PIXI.DisplayObject -
    @@ -9725,7 +8444,7 @@ by calling this method.

    -PIXI.DisplayObject +DisplayObject @@ -9920,7 +8639,7 @@ by calling this method.

    Source - - pixi/display/DisplayObjectContainer.js, line 410 + pixi/display/DisplayObjectContainer.js, line 412
    @@ -10116,7 +8835,7 @@ by calling this method.

    -PIXI.DisplayObject +DisplayObject @@ -10139,7 +8858,7 @@ by calling this method.

    -PIXI.DisplayObject +DisplayObject @@ -10208,337 +8927,6 @@ by calling this method.

    -
    - - - -
    -

    toGlobal(position) → {Point}

    - - -
    -
    - - - -
    -

    Calculates the global position of the display object

    -
    - - - - - - - -
    Parameters:
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    NameTypeDescription
    position - - -Point - - - -

    The world origin to calculate from

    - - - - -
    Returns:
    -
    - - - -
    - -Point - - - -
    - -
    -

    A point object representing the position of this object

    -
    - - - -
    - - - -
    - - - - - - - -
    Inherited From:
    -
    - - - - - - - - - - - - - -
    Source - - pixi/display/DisplayObject.js, line 575 -
    - - - - - - - -
    - - - - - - - - - - - -
    - - - -
    -

    toLocal(position, from) → {Point}

    - - -
    -
    - - - -
    -

    Calculates the local position of the display object relative to another point

    -
    - - - - - - - -
    Parameters:
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    NameTypeArgumentDescription
    position - - -Point - - - - - - - - - -

    The world origin to calculate from

    from - - -PIXI.DisplayObject - - - - - - <optional>
    - - - - - -

    The DisplayObject to calculate the global position from

    - - - - -
    Returns:
    -
    - - - -
    - -Point - - - -
    - -
    -

    A point object representing the position of this object

    -
    - - - -
    - - - -
    - - - - - - - -
    Inherited From:
    -
    - - - - - - - - - - - - - -
    Source - - pixi/display/DisplayObject.js, line 589 -
    - - - - - - - -
    - - - - - - - - - - -
    @@ -10616,81 +9004,6 @@ Remember if this Game Object has any children you should call update on those to - - - - -
    -

    updateCache()

    - - -
    -
    - - - -
    -

    Generates and updates the cached sprite for this object.

    -
    - - - - - - - - - - - -
    - - - - - - - -
    Inherited From:
    -
    - - - - - - - - - - - - - -
    Source - - pixi/display/DisplayObject.js, line 565 -
    - - - - - - - -
    - - - - - - - - - - -
    @@ -10719,7 +9032,7 @@ Remember if this Game Object has any children you should call update on those to Documentation generated by JSDoc 3.3.3 - on Fri Jun 17 2016 12:45:30 GMT+0100 (BST) using the DocStrap template. + on Fri Jul 08 2016 15:42:35 GMT+0100 (GMT Daylight Time) using the DocStrap template. diff --git a/docs/Phaser.Bullet.html b/docs/Phaser.Bullet.html index 494edb8ed..6c5cd7ee5 100644 --- a/docs/Phaser.Bullet.html +++ b/docs/Phaser.Bullet.html @@ -708,10 +708,6 @@ ComplexPrimitiveShader -
  • - DisplayObject -
  • -
  • DisplayObjectContainer
  • @@ -744,6 +740,10 @@ PIXI +
  • + DisplayObject +
  • +
  • PixiFastShader
  • @@ -1544,67 +1544,6 @@ However you can use Group.getFirstAlive in conjunction with this pr - - - - - - - - -
    -

    alpha :Number

    - - -
    -
    - - - -
    -

    The opacity of the object.

    -
    - - - - - -
    - - - - - - - -
    Inherited From:
    -
    - - - - - - - - - - - - - -
    Source - - pixi/display/DisplayObject.js, line 46 -
    - - - - - - -
    @@ -2084,69 +2023,6 @@ This is the same as y + height - offsetY.

    - - - - -
    - - - -
    -

    cacheAsBitmap :Boolean

    - - -
    -
    - - - -
    -

    Set if this display object is cached as a bitmap. -This basically takes a snap shot of the display object as it is at that moment. It can provide a performance benefit for complex static displayObjects. -To remove simply set this property to 'null'

    -
    - - - - - -
    - - - - - - - -
    Inherited From:
    -
    - - - - - - - - - - - - - -
    Source - - pixi/display/DisplayObject.js, line 355 -
    - - - - - - -
    @@ -3172,143 +3048,6 @@ Game Object, or any of its components.

    - - - - -
    - - - -
    -

    filterArea :Rectangle

    - - -
    -
    - - - -
    -

    The area the filter is applied to like the hitArea this is used as more of an optimisation -rather than figuring out the dimensions of the displayObject each frame you can set this rectangle

    -
    - - - - - -
    - - - - - - - -
    Inherited From:
    -
    - - - - - - - - - - - - - -
    Source - - pixi/display/DisplayObject.js, line 164 -
    - - - - - - - -
    - - - -
    - - - -
    -

    filters :Array.<Filter>

    - - -
    -
    - - - -
    -

    Sets the filters for the displayObject. -IMPORTANT: This is a webGL only feature and will be ignored by the Canvas renderer.

    -

    To remove filters simply set this property to 'null'.

    -

    You cannot have a filter and a multiply blend mode active at the same time. Setting a filter will reset -this objects blend mode to NORMAL.

    -
    - - - -
    Type:
    -
      -
    • - -Array.<Filter> - - -
    • -
    - - - -
    - - - - - - - -
    Inherited From:
    -
    - - - - - - - - - - - - - -
    Source - - pixi/display/DisplayObject.js, line 307 -
    - - - - - - -
    @@ -3819,87 +3558,6 @@ This property is mostly used internally by the physics systems, but is exposed f - - - - -
    - - - -
    -

    hitArea :Rectangle|Circle|Ellipse|Polygon

    - - -
    -
    - - - -
    -

    This is the defined area that will pick up mouse / touch events. It is null by default. -Setting it is a neat way of optimising the hitTest function that the interactionManager will use (as it will not need to hit test all the children)

    -
    - - - -
    Type:
    -
      -
    • - -Rectangle -| - -Circle -| - -Ellipse -| - -Polygon - - -
    • -
    - - - -
    - - - - - - - -
    Inherited From:
    -
    - - - - - - - - - - - - - -
    Source - - pixi/display/DisplayObject.js, line 62 -
    - - - - - - -
    @@ -4125,6 +3783,9 @@ for this Game Object and it will then start to process click / touch events and

    You can then access the Input Handler via this.input.

    Note that Input related events are dispatched from this.events, i.e.: events.onInputDown.

    If you set this property to false it will stop the Input Handler from processing any more input events.

    +

    If you want to temporarily disable input for a Game Object, then it's better to set +input.enabled = false, as it won't reset any of the Input Handlers internal properties. +You can then toggle this back on as needed.

    @@ -4157,7 +3818,7 @@ for this Game Object and it will then start to process click / touch events and
    Source - - gameobjects/components/InputEnabled.js, line 38 + gameobjects/components/InputEnabled.js, line 42
    @@ -4441,69 +4102,6 @@ When it reaches zero it will call the kill method.

    - - - - - - - - -
    -

    mask :PIXI.Graphics

    - - -
    -
    - - - -
    -

    Sets a mask for the displayObject. A mask is an object that limits the visibility of an object to the shape of the mask applied to it. -In PIXI a regular mask must be a PIXI.Graphics object. This allows for much faster masking in canvas as it utilises shape clipping. -To remove a mask, set this property to null.

    -
    - - - - - -
    - - - - - - - -
    Inherited From:
    -
    - - - - - - - - - - - - - -
    Source - - pixi/display/DisplayObject.js, line 282 -
    - - - - - - -
    @@ -4880,67 +4478,6 @@ is called as soon as the Game Object leaves the camera bounds.

    - - - - -
    - - - -
    -

    <readonly> parent :PIXI.DisplayObjectContainer

    - - -
    -
    - - - -
    -

    [read-only] The display object container that contains this display object.

    -
    - - - - - -
    - - - - - - - -
    Inherited From:
    -
    - - - - - - - - - - - - - -
    Source - - pixi/display/DisplayObject.js, line 79 -
    - - - - - - -
    @@ -5066,128 +4603,6 @@ such as with Buttons or other Input events.

    - - - - -
    - - - -
    -

    pivot :Point

    - - -
    -
    - - - -
    -

    The pivot point of the displayObject that it rotates around

    -
    - - - - - -
    - - - - - - - -
    Inherited From:
    -
    - - - - - - - - - - - - - -
    Source - - pixi/display/DisplayObject.js, line 30 -
    - - - - - - - -
    - - - -
    - - - -
    -

    position :Point

    - - -
    -
    - - - -
    -

    The coordinate of the object relative to the local coordinates of the parent.

    -
    - - - - - -
    - - - - - - - -
    Inherited From:
    -
    - - - - - - - - - - - - - -
    Source - - pixi/display/DisplayObject.js, line 14 -
    - - - - - - -
    @@ -5310,67 +4725,6 @@ such as with Buttons or other Input events.

    - - - - -
    - - - -
    -

    renderable :Boolean

    - - -
    -
    - - - -
    -

    Can this object be rendered

    -
    - - - - - -
    - - - - - - - -
    Inherited From:
    -
    - - - - - - - - - - - - - -
    Source - - pixi/display/DisplayObject.js, line 71 -
    - - - - - - -
    @@ -5495,128 +4849,6 @@ This is the same as x + width - offsetX.

    - - - - -
    - - - -
    -

    rotation :Number

    - - -
    -
    - - - -
    -

    The rotation of the object in radians.

    -
    - - - - - -
    - - - - - - - -
    Inherited From:
    -
    - - - - - - - - - - - - - -
    Source - - pixi/display/DisplayObject.js, line 38 -
    - - - - - - - -
    - - - -
    - - - -
    -

    scale :Point

    - - -
    -
    - - - -
    -

    The scale factor of the object.

    -
    - - - - - -
    - - - - - - - -
    Inherited From:
    -
    - - - - - - - - - - - - - -
    Source - - pixi/display/DisplayObject.js, line 22 -
    - - - - - - -
    @@ -5932,67 +5164,6 @@ Will never exceed the maxHealth value.

    - - - - -
    - - - -
    -

    <readonly> stage :Stage

    - - -
    -
    - - - -
    -

    [read-only] The stage the display object is connected to, or undefined if it is not connected to the stage.

    -
    - - - - - -
    - - - - - - - -
    Inherited From:
    -
    - - - - - - - - - - - - - -
    Source - - pixi/display/DisplayObject.js, line 88 -
    - - - - - - -
    @@ -6427,67 +5598,6 @@ This is the same as y - offsetY.

    - - - - -
    - - - -
    -

    visible :Boolean

    - - -
    -
    - - - -
    -

    The visibility of the object.

    -
    - - - - - -
    - - - - - - - -
    Inherited From:
    -
    - - - - - - - - - - - - - -
    Source - - pixi/display/DisplayObject.js, line 54 -
    - - - - - - -
    @@ -6622,7 +5732,7 @@ which contains the x/y coordinates relative to the Game Objects parent.

    <readonly> worldAlpha :Number

    + id="x">x :number
    @@ -6631,7 +5741,7 @@ which contains the x/y coordinates relative to the Game Objects parent.

    -

    [read-only] The multiplied alpha of the displayObject

    +

    The position of the Game Object on the x axis relative to the local coordinates of the parent.

    @@ -6648,7 +5758,7 @@ which contains the x/y coordinates relative to the Game Objects parent.

    Inherited From:
    @@ -6664,7 +5774,7 @@ which contains the x/y coordinates relative to the Game Objects parent.

    Source - - pixi/display/DisplayObject.js, line 97 + gameobjects/components/PhysicsBody.js, line 98
    @@ -6683,7 +5793,7 @@ which contains the x/y coordinates relative to the Game Objects parent.

    <readonly> worldPosition :Point

    + id="y">y :number
    @@ -6692,8 +5802,7 @@ which contains the x/y coordinates relative to the Game Objects parent.

    -

    The position of the Display Object based on the world transform. -This value is updated at the end of updateTransform and takes all parent transforms into account.

    +

    The position of the Game Object on the y axis relative to the local coordinates of the parent.

    @@ -6710,7 +5819,7 @@ This value is updated at the end of updateTransform and takes all parent transfo
    Inherited From:
    @@ -6726,314 +5835,7 @@ This value is updated at the end of updateTransform and takes all parent transfo
    Source - - pixi/display/DisplayObject.js, line 116 -
    - - - - - - - - - - - - - - - -
    -

    <readonly> worldRotation :Number

    - - -
    -
    - - - -
    -

    The rotation of the Display Object, in radians, based on the world transform. -This value is updated at the end of updateTransform and takes all parent transforms into account.

    -
    - - - - - -
    - - - - - - - -
    Inherited From:
    -
    - - - - - - - - - - - - - -
    Source - - pixi/display/DisplayObject.js, line 136 -
    - - - - - - - -
    - - - -
    - - - -
    -

    <readonly> worldScale :Point

    - - -
    -
    - - - -
    -

    The scale of the Display Object based on the world transform. -This value is updated at the end of updateTransform and takes all parent transforms into account.

    -
    - - - - - -
    - - - - - - - -
    Inherited From:
    -
    - - - - - - - - - - - - - -
    Source - - pixi/display/DisplayObject.js, line 126 -
    - - - - - - - -
    - - - -
    - - - -
    -

    worldVisible :Boolean

    - - -
    -
    - - - -
    -

    [read-only] Indicates if the sprite is globally visible.

    -
    - - - - - -
    - - - - - - - -
    Inherited From:
    -
    - - - - - - - - - - - - - -
    Source - - pixi/display/DisplayObject.js, line 258 -
    - - - - - - - -
    - - - -
    - - - -
    -

    x :Number

    - - -
    -
    - - - -
    -

    The position of the displayObject on the x axis relative to the local coordinates of the parent.

    -
    - - - - - -
    - - - - - - - -
    Inherited From:
    -
    - - - - - - - - - - - - - -
    Source - - pixi/display/DisplayObject.js, line 722 -
    - - - - - - - -
    - - - -
    - - - -
    -

    y :Number

    - - -
    -
    - - - -
    -

    The position of the displayObject on the y axis relative to the local coordinates of the parent.

    -
    - - - - - -
    - - - - - - - -
    Inherited From:
    -
    - - - - - - - - - - - - - -
    Source - - pixi/display/DisplayObject.js, line 740 + gameobjects/components/PhysicsBody.js, line 124
    @@ -7122,7 +5924,7 @@ If you wish to re-order the layering of a Game Object then see methods like Grou

    addChild(child) → {PIXI.DisplayObject}

    + id="addChild">addChild(child) → {DisplayObject}
    @@ -7171,7 +5973,7 @@ If you wish to re-order the layering of a Game Object then see methods like Grou -PIXI.DisplayObject +DisplayObject @@ -7198,7 +6000,7 @@ If you wish to re-order the layering of a Game Object then see methods like Grou @@ -7266,7 +6068,7 @@ If you wish to re-order the layering of a Game Object then see methods like Grou

    addChildAt(child, index) → {PIXI.DisplayObject}

    + id="addChildAt">addChildAt(child, index) → {DisplayObject}
    @@ -7315,7 +6117,7 @@ If you wish to re-order the layering of a Game Object then see methods like Grou -PIXI.DisplayObject +DisplayObject @@ -7365,7 +6167,7 @@ If you wish to re-order the layering of a Game Object then see methods like Grou @@ -8068,7 +6870,7 @@ one expands it.

    bringToTop() → {PIXI.DisplayObject}

    + id="bringToTop">bringToTop() → {PIXI.DisplayObject}
    @@ -8098,7 +6900,7 @@ because the World is the root Group from which all Game Objects descend.

    -PIXI.DisplayObject +PIXI.DisplayObject -
    @@ -8352,7 +7154,7 @@ in which case the values are duplicated to a local object.

    destroy()

    + id="destroy">destroy(destroyChildren, destroyTexture)
    @@ -8361,84 +7163,11 @@ in which case the values are duplicated to a local object.

    -

    Destroy this DisplayObject. -Removes all references to transformCallbacks, its parent, the stage, filters, bounds, mask and cached Sprites.

    -
    - - - - - - - - - - - -
    - - - - - - - -
    Inherited From:
    -
    - - - - - - - - - - - - - -
    Source - - pixi/display/DisplayObject.js, line 223 -
    - - - - - - - -
    - - - - - - - - - - - -
    - - - -
    -

    generateTexture(resolution, scaleMode, renderer) → {PIXI.RenderTexture}

    - - -
    -
    - - - -
    -

    Useful function that returns a texture of the displayObject object that can then be used to create sprites -This can be quite useful if your displayObject is static / complicated and needs to be reused multiple times.

    +

    Destroys the Game Object. This removes it from its parent group, destroys the input, event and animation handlers if present +and nulls its reference to game, freeing it up for garbage collection.

    +

    If this Game Object has the Events component it will also dispatch the onDestroy event.

    +

    You can optionally also destroy the BaseTexture this Game Object is using. Be careful if you've +more than one Game Object sharing the same BaseTexture.

    @@ -8460,8 +7189,12 @@ This can be quite useful if your displayObject is static / complicated and needs Type + Argument + + Default + Description @@ -8472,72 +7205,78 @@ This can be quite useful if your displayObject is static / complicated and needs - resolution + destroyChildren -Number +boolean + + + <optional>
    + + + + + -

    The resolution of the texture being generated

    + + + + true + + + + +

    Should every child of this object have its destroy method called as well?

    - scaleMode + destroyTexture -Number +boolean - - - -

    See {{#crossLink "PIXI/scaleModes:property"}}PIXI.scaleModes{{/crossLink}} for possible values

    - - - - - - - renderer - - - - + + + <optional>
    -PIXI.CanvasRenderer -| -PIXI.WebGLRenderer - - - - + + + + + + false + + + -

    The renderer used to generate the texture.

    +

    Destroy the BaseTexture this Game Object is using? Note that if another Game Object is sharing the same BaseTexture it will invalidate it.

    @@ -8547,26 +7286,6 @@ This can be quite useful if your displayObject is static / complicated and needs -
    Returns:
    -
    - - - -
    - -PIXI.RenderTexture - - - -
    - -
    -

    a texture of the graphics object

    -
    - - - -
    -
    @@ -8579,7 +7298,7 @@ This can be quite useful if your displayObject is static / complicated and needs
    Inherited From:
    @@ -8595,7 +7314,7 @@ This can be quite useful if your displayObject is static / complicated and needs
    Source - - pixi/display/DisplayObject.js, line 541 + gameobjects/components/Destroy.js, line 37
    @@ -8773,7 +7492,7 @@ on the root most object in this Sprites display list first.

    getChildAt(index) → {PIXI.DisplayObject}

    + id="getChildAt">getChildAt(index) → {DisplayObject}
    @@ -8849,7 +7568,7 @@ on the root most object in this Sprites display list first.

    @@ -8966,7 +7685,7 @@ on the root most object in this Sprites display list first.

    -PIXI.DisplayObject +DisplayObject @@ -9129,7 +7848,7 @@ on the root most object in this Sprites display list first.

    Source - - pixi/display/DisplayObjectContainer.js, line 381 + pixi/display/DisplayObjectContainer.js, line 383
    @@ -9537,7 +8256,7 @@ and swapping it to be the key of the atlas data.

    moveDown() → {PIXI.DisplayObject}

    + id="moveDown">moveDown() → {PIXI.DisplayObject}
    @@ -9567,7 +8286,7 @@ because the World is the root Group from which all Game Objects descend.

    -PIXI.DisplayObject +PIXI.DisplayObject -
    @@ -9635,7 +8354,7 @@ because the World is the root Group from which all Game Objects descend.

    moveUp() → {PIXI.DisplayObject}

    + id="moveUp">moveUp() → {PIXI.DisplayObject}
    @@ -9665,7 +8384,7 @@ because the World is the root Group from which all Game Objects descend.

    -PIXI.DisplayObject +PIXI.DisplayObject -
    @@ -9798,7 +8517,7 @@ It should be fine for low-volume testing where physics isn't required.

    Phaser.Button | -PIXI.DisplayObject +PIXI.DisplayObject @@ -10350,7 +9069,7 @@ If you need to reset an already running animation do so directly on the Animatio

    removeChild(child) → {PIXI.DisplayObject}

    + id="removeChild">removeChild(child) → {DisplayObject}
    @@ -10399,7 +9118,7 @@ If you need to reset an already running animation do so directly on the Animatio -PIXI.DisplayObject +DisplayObject @@ -10426,7 +9145,7 @@ If you need to reset an already running animation do so directly on the Animatio @@ -10494,7 +9213,7 @@ If you need to reset an already running animation do so directly on the Animatio

    removeChildAt(index) → {PIXI.DisplayObject}

    + id="removeChildAt">removeChildAt(index) → {DisplayObject}
    @@ -10570,7 +9289,7 @@ If you need to reset an already running animation do so directly on the Animatio @@ -10833,7 +9552,7 @@ If you need to reset an already running animation do so directly on the Animatio
    Source - - pixi/display/DisplayObjectContainer.js, line 426 + pixi/display/DisplayObjectContainer.js, line 428
    @@ -10860,7 +9579,7 @@ If you need to reset an already running animation do so directly on the Animatio

    reset(x, y, health) → {PIXI.DisplayObject}

    + id="reset">reset(x, y, health) → {PIXI.DisplayObject}
    @@ -11030,7 +9749,7 @@ If you need to reset an already running animation do so directly on the Animatio
    -PIXI.DisplayObject +PIXI.DisplayObject -
    @@ -11345,7 +10064,7 @@ it can be useful to adjust the dimensions directly in this way.

    revive(health) → {PIXI.DisplayObject}

    + id="revive">revive(health) → {PIXI.DisplayObject}
    @@ -11443,7 +10162,7 @@ it can be useful to adjust the dimensions directly in this way.

    -PIXI.DisplayObject +PIXI.DisplayObject -
    @@ -11511,7 +10230,7 @@ it can be useful to adjust the dimensions directly in this way.

    sendToBack() → {PIXI.DisplayObject}

    + id="sendToBack">sendToBack() → {PIXI.DisplayObject}
    @@ -11541,7 +10260,7 @@ because the World is the root Group from which all Game Objects descend.

    -PIXI.DisplayObject +PIXI.DisplayObject -
    @@ -11658,7 +10377,7 @@ because the World is the root Group from which all Game Objects descend.

    -PIXI.DisplayObject +DisplayObject @@ -12193,7 +10912,7 @@ or pass null for the maxX and maxY parame
    Source - - pixi/display/DisplayObjectContainer.js, line 410 + pixi/display/DisplayObjectContainer.js, line 412
    @@ -12449,7 +11168,7 @@ texture this Sprite was using.

    -PIXI.DisplayObject +DisplayObject @@ -12472,7 +11191,7 @@ texture this Sprite was using.

    -PIXI.DisplayObject +DisplayObject @@ -12541,337 +11260,6 @@ texture this Sprite was using.

    -
    - - - -
    -

    toGlobal(position) → {Point}

    - - -
    -
    - - - -
    -

    Calculates the global position of the display object

    -
    - - - - - - - -
    Parameters:
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    NameTypeDescription
    position - - -Point - - - -

    The world origin to calculate from

    - - - - -
    Returns:
    -
    - - - -
    - -Point - - - -
    - -
    -

    A point object representing the position of this object

    -
    - - - -
    - - - -
    - - - - - - - -
    Inherited From:
    -
    - - - - - - - - - - - - - -
    Source - - pixi/display/DisplayObject.js, line 575 -
    - - - - - - - -
    - - - - - - - - - - - -
    - - - -
    -

    toLocal(position, from) → {Point}

    - - -
    -
    - - - -
    -

    Calculates the local position of the display object relative to another point

    -
    - - - - - - - -
    Parameters:
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    NameTypeArgumentDescription
    position - - -Point - - - - - - - - - -

    The world origin to calculate from

    from - - -PIXI.DisplayObject - - - - - - <optional>
    - - - - - -

    The DisplayObject to calculate the global position from

    - - - - -
    Returns:
    -
    - - - -
    - -Point - - - -
    - -
    -

    A point object representing the position of this object

    -
    - - - -
    - - - -
    - - - - - - - -
    Inherited From:
    -
    - - - - - - - - - - - - - -
    Source - - pixi/display/DisplayObject.js, line 589 -
    - - - - - - - -
    - - - - - - - - - - -
    @@ -12949,81 +11337,6 @@ Remember if this Game Object has any children you should call update on those to - - - - -
    -

    updateCache()

    - - -
    -
    - - - -
    -

    Generates and updates the cached sprite for this object.

    -
    - - - - - - - - - - - -
    - - - - - - - -
    Inherited From:
    -
    - - - - - - - - - - - - - -
    Source - - pixi/display/DisplayObject.js, line 565 -
    - - - - - - - -
    - - - - - - - - - - -
    @@ -13128,7 +11441,7 @@ or the rectangle it references, then you need to update the crop frame by callin Documentation generated by JSDoc 3.3.3 - on Fri Jun 17 2016 12:45:30 GMT+0100 (BST) using the DocStrap template. + on Fri Jul 08 2016 15:42:35 GMT+0100 (GMT Daylight Time) using the DocStrap template. diff --git a/docs/Phaser.Button.html b/docs/Phaser.Button.html index fa63d7705..5f2ee1994 100644 --- a/docs/Phaser.Button.html +++ b/docs/Phaser.Button.html @@ -708,10 +708,6 @@ ComplexPrimitiveShader -
  • - DisplayObject -
  • -
  • DisplayObjectContainer
  • @@ -744,6 +740,10 @@ PIXI +
  • + DisplayObject +
  • +
  • PixiFastShader
  • @@ -1813,67 +1813,6 @@ However you can use Group.getFirstAlive in conjunction with this pr - - - - - - - - -
    -

    alpha :Number

    - - -
    -
    - - - -
    -

    The opacity of the object.

    -
    - - - - - -
    - - - - - - - -
    Inherited From:
    -
    - - - - - - - - - - - - - -
    Source - - pixi/display/DisplayObject.js, line 46 -
    - - - - - - -
    @@ -2265,69 +2204,6 @@ This is the same as y + height - offsetY.

    - - - - -
    - - - -
    -

    cacheAsBitmap :Boolean

    - - -
    -
    - - - -
    -

    Set if this display object is cached as a bitmap. -This basically takes a snap shot of the display object as it is at that moment. It can provide a performance benefit for complex static displayObjects. -To remove simply set this property to 'null'

    -
    - - - - - -
    - - - - - - - -
    Inherited From:
    -
    - - - - - - - - - - - - - -
    Source - - pixi/display/DisplayObject.js, line 355 -
    - - - - - - -
    @@ -3039,143 +2915,6 @@ Game Object, or any of its components.

    - - - - -
    - - - -
    -

    filterArea :Rectangle

    - - -
    -
    - - - -
    -

    The area the filter is applied to like the hitArea this is used as more of an optimisation -rather than figuring out the dimensions of the displayObject each frame you can set this rectangle

    -
    - - - - - -
    - - - - - - - -
    Inherited From:
    -
    - - - - - - - - - - - - - -
    Source - - pixi/display/DisplayObject.js, line 164 -
    - - - - - - - -
    - - - -
    - - - -
    -

    filters :Array.<Filter>

    - - -
    -
    - - - -
    -

    Sets the filters for the displayObject. -IMPORTANT: This is a webGL only feature and will be ignored by the Canvas renderer.

    -

    To remove filters simply set this property to 'null'.

    -

    You cannot have a filter and a multiply blend mode active at the same time. Setting a filter will reset -this objects blend mode to NORMAL.

    -
    - - - -
    Type:
    -
      -
    • - -Array.<Filter> - - -
    • -
    - - - -
    - - - - - - - -
    Inherited From:
    -
    - - - - - - - - - - - - - -
    Source - - pixi/display/DisplayObject.js, line 307 -
    - - - - - - -
    @@ -3686,87 +3425,6 @@ This property is mostly used internally by the physics systems, but is exposed f - - - - -
    - - - -
    -

    hitArea :Rectangle|Circle|Ellipse|Polygon

    - - -
    -
    - - - -
    -

    This is the defined area that will pick up mouse / touch events. It is null by default. -Setting it is a neat way of optimising the hitTest function that the interactionManager will use (as it will not need to hit test all the children)

    -
    - - - -
    Type:
    -
      -
    • - -Rectangle -| - -Circle -| - -Ellipse -| - -Polygon - - -
    • -
    - - - -
    - - - - - - - -
    Inherited From:
    -
    - - - - - - - - - - - - - -
    Source - - pixi/display/DisplayObject.js, line 62 -
    - - - - - - -
    @@ -3992,6 +3650,9 @@ for this Game Object and it will then start to process click / touch events and

    You can then access the Input Handler via this.input.

    Note that Input related events are dispatched from this.events, i.e.: events.onInputDown.

    If you set this property to false it will stop the Input Handler from processing any more input events.

    +

    If you want to temporarily disable input for a Game Object, then it's better to set +input.enabled = false, as it won't reset any of the Input Handlers internal properties. +You can then toggle this back on as needed.

    @@ -4024,7 +3685,7 @@ for this Game Object and it will then start to process click / touch events and
    Source - - gameobjects/components/InputEnabled.js, line 38 + gameobjects/components/InputEnabled.js, line 42
    @@ -4304,69 +3965,6 @@ When it reaches zero it will call the kill method.

    - - - - - - - - -
    -

    mask :PIXI.Graphics

    - - -
    -
    - - - -
    -

    Sets a mask for the displayObject. A mask is an object that limits the visibility of an object to the shape of the mask applied to it. -In PIXI a regular mask must be a PIXI.Graphics object. This allows for much faster masking in canvas as it utilises shape clipping. -To remove a mask, set this property to null.

    -
    - - - - - -
    - - - - - - - -
    Inherited From:
    -
    - - - - - - - - - - - - - -
    Source - - pixi/display/DisplayObject.js, line 282 -
    - - - - - - -
    @@ -5351,67 +4949,6 @@ The frame will still be changed as applicable.

    - - - - -
    - - - -
    -

    <readonly> parent :PIXI.DisplayObjectContainer

    - - -
    -
    - - - -
    -

    [read-only] The display object container that contains this display object.

    -
    - - - - - -
    - - - - - - - -
    Inherited From:
    -
    - - - - - - - - - - - - - -
    Source - - pixi/display/DisplayObject.js, line 79 -
    - - - - - - -
    @@ -5532,128 +5069,6 @@ such as with Buttons or other Input events.

    - - - - -
    - - - -
    -

    pivot :Point

    - - -
    -
    - - - -
    -

    The pivot point of the displayObject that it rotates around

    -
    - - - - - -
    - - - - - - - -
    Inherited From:
    -
    - - - - - - - - - - - - - -
    Source - - pixi/display/DisplayObject.js, line 30 -
    - - - - - - - -
    - - - -
    - - - -
    -

    position :Point

    - - -
    -
    - - - -
    -

    The coordinate of the object relative to the local coordinates of the parent.

    -
    - - - - - -
    - - - - - - - -
    Inherited From:
    -
    - - - - - - - - - - - - - -
    Source - - pixi/display/DisplayObject.js, line 14 -
    - - - - - - -
    @@ -5776,67 +5191,6 @@ such as with Buttons or other Input events.

    - - - - -
    - - - -
    -

    renderable :Boolean

    - - -
    -
    - - - -
    -

    Can this object be rendered

    -
    - - - - - -
    - - - - - - - -
    Inherited From:
    -
    - - - - - - - - - - - - - -
    Source - - pixi/display/DisplayObject.js, line 71 -
    - - - - - - -
    @@ -5961,128 +5315,6 @@ This is the same as x + width - offsetX.

    - - - - -
    - - - -
    -

    rotation :Number

    - - -
    -
    - - - -
    -

    The rotation of the object in radians.

    -
    - - - - - -
    - - - - - - - -
    Inherited From:
    -
    - - - - - - - - - - - - - -
    Source - - pixi/display/DisplayObject.js, line 38 -
    - - - - - - - -
    - - - -
    - - - -
    -

    scale :Point

    - - -
    -
    - - - -
    -

    The scale factor of the object.

    -
    - - - - - -
    - - - - - - - -
    Inherited From:
    -
    - - - - - - - - - - - - - -
    Source - - pixi/display/DisplayObject.js, line 22 -
    - - - - - - -
    @@ -6210,67 +5442,6 @@ This is the same as x + width - offsetX.

    - - - - -
    - - - -
    -

    <readonly> stage :Stage

    - - -
    -
    - - - -
    -

    [read-only] The stage the display object is connected to, or undefined if it is not connected to the stage.

    -
    - - - - - -
    - - - - - - - -
    Inherited From:
    -
    - - - - - - - - - - - - - -
    Source - - pixi/display/DisplayObject.js, line 88 -
    - - - - - - -
    @@ -6578,67 +5749,6 @@ This is the same as y - offsetY.

    - - - - -
    - - - -
    -

    visible :Boolean

    - - -
    -
    - - - -
    -

    The visibility of the object.

    -
    - - - - - -
    - - - - - - - -
    Inherited From:
    -
    - - - - - - - - - - - - - -
    Source - - pixi/display/DisplayObject.js, line 54 -
    - - - - - - -
    @@ -6763,436 +5873,6 @@ which contains the x/y coordinates relative to the Game Objects parent.

    - - - - -
    - - - -
    -

    <readonly> worldAlpha :Number

    - - -
    -
    - - - -
    -

    [read-only] The multiplied alpha of the displayObject

    -
    - - - - - -
    - - - - - - - -
    Inherited From:
    -
    - - - - - - - - - - - - - -
    Source - - pixi/display/DisplayObject.js, line 97 -
    - - - - - - - -
    - - - -
    - - - -
    -

    <readonly> worldPosition :Point

    - - -
    -
    - - - -
    -

    The position of the Display Object based on the world transform. -This value is updated at the end of updateTransform and takes all parent transforms into account.

    -
    - - - - - -
    - - - - - - - -
    Inherited From:
    -
    - - - - - - - - - - - - - -
    Source - - pixi/display/DisplayObject.js, line 116 -
    - - - - - - - -
    - - - -
    - - - -
    -

    <readonly> worldRotation :Number

    - - -
    -
    - - - -
    -

    The rotation of the Display Object, in radians, based on the world transform. -This value is updated at the end of updateTransform and takes all parent transforms into account.

    -
    - - - - - -
    - - - - - - - -
    Inherited From:
    -
    - - - - - - - - - - - - - -
    Source - - pixi/display/DisplayObject.js, line 136 -
    - - - - - - - -
    - - - -
    - - - -
    -

    <readonly> worldScale :Point

    - - -
    -
    - - - -
    -

    The scale of the Display Object based on the world transform. -This value is updated at the end of updateTransform and takes all parent transforms into account.

    -
    - - - - - -
    - - - - - - - -
    Inherited From:
    -
    - - - - - - - - - - - - - -
    Source - - pixi/display/DisplayObject.js, line 126 -
    - - - - - - - -
    - - - -
    - - - -
    -

    worldVisible :Boolean

    - - -
    -
    - - - -
    -

    [read-only] Indicates if the sprite is globally visible.

    -
    - - - - - -
    - - - - - - - -
    Inherited From:
    -
    - - - - - - - - - - - - - -
    Source - - pixi/display/DisplayObject.js, line 258 -
    - - - - - - - -
    - - - -
    - - - -
    -

    x :Number

    - - -
    -
    - - - -
    -

    The position of the displayObject on the x axis relative to the local coordinates of the parent.

    -
    - - - - - -
    - - - - - - - -
    Inherited From:
    -
    - - - - - - - - - - - - - -
    Source - - pixi/display/DisplayObject.js, line 722 -
    - - - - - - - -
    - - - -
    - - - -
    -

    y :Number

    - - -
    -
    - - - -
    -

    The position of the displayObject on the y axis relative to the local coordinates of the parent.

    -
    - - - - - -
    - - - - - - - -
    Inherited From:
    -
    - - - - - - - - - - - - - -
    Source - - pixi/display/DisplayObject.js, line 740 -
    - - - - - - -
    @@ -7273,7 +5953,7 @@ If you wish to re-order the layering of a Game Object then see methods like Grou

    addChild(child) → {PIXI.DisplayObject}

    + id="addChild">addChild(child) → {DisplayObject}
    @@ -7322,7 +6002,7 @@ If you wish to re-order the layering of a Game Object then see methods like Grou -PIXI.DisplayObject +DisplayObject @@ -7349,7 +6029,7 @@ If you wish to re-order the layering of a Game Object then see methods like Grou @@ -7417,7 +6097,7 @@ If you wish to re-order the layering of a Game Object then see methods like Grou

    addChildAt(child, index) → {PIXI.DisplayObject}

    + id="addChildAt">addChildAt(child, index) → {DisplayObject}
    @@ -7466,7 +6146,7 @@ If you wish to re-order the layering of a Game Object then see methods like Grou -PIXI.DisplayObject +DisplayObject @@ -7516,7 +6196,7 @@ If you wish to re-order the layering of a Game Object then see methods like Grou @@ -8219,7 +6899,7 @@ one expands it.

    bringToTop() → {PIXI.DisplayObject}

    + id="bringToTop">bringToTop() → {PIXI.DisplayObject}
    @@ -8249,7 +6929,7 @@ because the World is the root Group from which all Game Objects descend.

    -PIXI.DisplayObject +PIXI.DisplayObject -
    @@ -8573,7 +7253,7 @@ in which case the values are duplicated to a local object.

    destroy()

    + id="destroy">destroy(destroyChildren, destroyTexture)
    @@ -8582,84 +7262,11 @@ in which case the values are duplicated to a local object.

    -

    Destroy this DisplayObject. -Removes all references to transformCallbacks, its parent, the stage, filters, bounds, mask and cached Sprites.

    -
    - - - - - - - - - - - -
    - - - - - - - -
    Inherited From:
    -
    - - - - - - - - - - - - - -
    Source - - pixi/display/DisplayObject.js, line 223 -
    - - - - - - - -
    - - - - - - - - - - - - - - - -
    -

    generateTexture(resolution, scaleMode, renderer) → {PIXI.RenderTexture}

    - - -
    -
    - - - -
    -

    Useful function that returns a texture of the displayObject object that can then be used to create sprites -This can be quite useful if your displayObject is static / complicated and needs to be reused multiple times.

    +

    Destroys the Game Object. This removes it from its parent group, destroys the input, event and animation handlers if present +and nulls its reference to game, freeing it up for garbage collection.

    +

    If this Game Object has the Events component it will also dispatch the onDestroy event.

    +

    You can optionally also destroy the BaseTexture this Game Object is using. Be careful if you've +more than one Game Object sharing the same BaseTexture.

    @@ -8681,8 +7288,12 @@ This can be quite useful if your displayObject is static / complicated and needs Type + Argument + + Default + Description @@ -8693,72 +7304,78 @@ This can be quite useful if your displayObject is static / complicated and needs - resolution + destroyChildren -Number +boolean + + + <optional>
    + + + + + -

    The resolution of the texture being generated

    + + + + true + + + + +

    Should every child of this object have its destroy method called as well?

    - scaleMode + destroyTexture -Number +boolean - - - -

    See {{#crossLink "PIXI/scaleModes:property"}}PIXI.scaleModes{{/crossLink}} for possible values

    - - - - - - - renderer - - - - + + + <optional>
    -PIXI.CanvasRenderer -| -PIXI.WebGLRenderer - - - - + + + + + + false + + + -

    The renderer used to generate the texture.

    +

    Destroy the BaseTexture this Game Object is using? Note that if another Game Object is sharing the same BaseTexture it will invalidate it.

    @@ -8768,26 +7385,6 @@ This can be quite useful if your displayObject is static / complicated and needs -
    Returns:
    -
    - - - -
    - -PIXI.RenderTexture - - - -
    - -
    -

    a texture of the graphics object

    -
    - - - -
    -
    @@ -8800,7 +7397,7 @@ This can be quite useful if your displayObject is static / complicated and needs
    Inherited From:
    @@ -8816,7 +7413,7 @@ This can be quite useful if your displayObject is static / complicated and needs
    Source - - pixi/display/DisplayObject.js, line 541 + gameobjects/components/Destroy.js, line 37
    @@ -8994,7 +7591,7 @@ on the root most object in this Sprites display list first.

    getChildAt(index) → {PIXI.DisplayObject}

    + id="getChildAt">getChildAt(index) → {DisplayObject}
    @@ -9070,7 +7667,7 @@ on the root most object in this Sprites display list first.

    @@ -9187,7 +7784,7 @@ on the root most object in this Sprites display list first.

    -PIXI.DisplayObject +DisplayObject @@ -9350,7 +7947,7 @@ on the root most object in this Sprites display list first.

    Source - - pixi/display/DisplayObjectContainer.js, line 381 + pixi/display/DisplayObjectContainer.js, line 383
    @@ -9377,7 +7974,7 @@ on the root most object in this Sprites display list first.

    kill() → {PIXI.DisplayObject}

    + id="kill">kill() → {PIXI.DisplayObject}
    @@ -9408,7 +8005,7 @@ it doesn't destroy the object or free it up from memory.

    -PIXI.DisplayObject +PIXI.DisplayObject -
    @@ -9716,7 +8313,7 @@ and swapping it to be the key of the atlas data.

    moveDown() → {PIXI.DisplayObject}

    + id="moveDown">moveDown() → {PIXI.DisplayObject}
    @@ -9746,7 +8343,7 @@ because the World is the root Group from which all Game Objects descend.

    -PIXI.DisplayObject +PIXI.DisplayObject -
    @@ -9814,7 +8411,7 @@ because the World is the root Group from which all Game Objects descend.

    moveUp() → {PIXI.DisplayObject}

    + id="moveUp">moveUp() → {PIXI.DisplayObject}
    @@ -9844,7 +8441,7 @@ because the World is the root Group from which all Game Objects descend.

    -PIXI.DisplayObject +PIXI.DisplayObject -
    @@ -10573,7 +9170,7 @@ It should be fine for low-volume testing where physics isn't required.

    Phaser.Button | -PIXI.DisplayObject +PIXI.DisplayObject @@ -11105,7 +9702,7 @@ If you need to reset an already running animation do so directly on the Animatio

    removeChild(child) → {PIXI.DisplayObject}

    + id="removeChild">removeChild(child) → {DisplayObject}
    @@ -11154,7 +9751,7 @@ If you need to reset an already running animation do so directly on the Animatio -PIXI.DisplayObject +DisplayObject @@ -11181,7 +9778,7 @@ If you need to reset an already running animation do so directly on the Animatio @@ -11249,7 +9846,7 @@ If you need to reset an already running animation do so directly on the Animatio

    removeChildAt(index) → {PIXI.DisplayObject}

    + id="removeChildAt">removeChildAt(index) → {DisplayObject}
    @@ -11325,7 +9922,7 @@ If you need to reset an already running animation do so directly on the Animatio @@ -11665,7 +10262,7 @@ If you need to reset an already running animation do so directly on the Animatio
    Source - - pixi/display/DisplayObjectContainer.js, line 426 + pixi/display/DisplayObjectContainer.js, line 428
    @@ -11692,7 +10289,7 @@ If you need to reset an already running animation do so directly on the Animatio

    reset(x, y, health) → {PIXI.DisplayObject}

    + id="reset">reset(x, y, health) → {PIXI.DisplayObject}
    @@ -11862,7 +10459,7 @@ If you need to reset an already running animation do so directly on the Animatio
    -PIXI.DisplayObject +PIXI.DisplayObject -
    @@ -12177,7 +10774,7 @@ it can be useful to adjust the dimensions directly in this way.

    revive(health) → {PIXI.DisplayObject}

    + id="revive">revive(health) → {PIXI.DisplayObject}
    @@ -12275,7 +10872,7 @@ it can be useful to adjust the dimensions directly in this way.

    -PIXI.DisplayObject +PIXI.DisplayObject -
    @@ -12343,7 +10940,7 @@ it can be useful to adjust the dimensions directly in this way.

    sendToBack() → {PIXI.DisplayObject}

    + id="sendToBack">sendToBack() → {PIXI.DisplayObject}
    @@ -12373,7 +10970,7 @@ because the World is the root Group from which all Game Objects descend.

    -PIXI.DisplayObject +PIXI.DisplayObject -
    @@ -12490,7 +11087,7 @@ because the World is the root Group from which all Game Objects descend.

    -PIXI.DisplayObject +DisplayObject @@ -13924,7 +12521,7 @@ The most common forms of sounds are 'hover' effects and 'click' effects, which i
    Source - - pixi/display/DisplayObjectContainer.js, line 410 + pixi/display/DisplayObjectContainer.js, line 412
    @@ -14345,7 +12942,7 @@ texture this Sprite was using.

    -PIXI.DisplayObject +DisplayObject @@ -14368,7 +12965,7 @@ texture this Sprite was using.

    -PIXI.DisplayObject +DisplayObject @@ -14437,337 +13034,6 @@ texture this Sprite was using.

    -
    - - - -
    -

    toGlobal(position) → {Point}

    - - -
    -
    - - - -
    -

    Calculates the global position of the display object

    -
    - - - - - - - -
    Parameters:
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    NameTypeDescription
    position - - -Point - - - -

    The world origin to calculate from

    - - - - -
    Returns:
    -
    - - - -
    - -Point - - - -
    - -
    -

    A point object representing the position of this object

    -
    - - - -
    - - - -
    - - - - - - - -
    Inherited From:
    -
    - - - - - - - - - - - - - -
    Source - - pixi/display/DisplayObject.js, line 575 -
    - - - - - - - -
    - - - - - - - - - - - -
    - - - -
    -

    toLocal(position, from) → {Point}

    - - -
    -
    - - - -
    -

    Calculates the local position of the display object relative to another point

    -
    - - - - - - - -
    Parameters:
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    NameTypeArgumentDescription
    position - - -Point - - - - - - - - - -

    The world origin to calculate from

    from - - -PIXI.DisplayObject - - - - - - <optional>
    - - - - - -

    The DisplayObject to calculate the global position from

    - - - - -
    Returns:
    -
    - - - -
    - -Point - - - -
    - -
    -

    A point object representing the position of this object

    -
    - - - -
    - - - -
    - - - - - - - -
    Inherited From:
    -
    - - - - - - - - - - - - - -
    Source - - pixi/display/DisplayObject.js, line 589 -
    - - - - - - - -
    - - - - - - - - - - -
    @@ -14845,81 +13111,6 @@ Remember if this Game Object has any children you should call update on those to - - - - -
    -

    updateCache()

    - - -
    -
    - - - -
    -

    Generates and updates the cached sprite for this object.

    -
    - - - - - - - - - - - -
    - - - - - - - -
    Inherited From:
    -
    - - - - - - - - - - - - - -
    Source - - pixi/display/DisplayObject.js, line 565 -
    - - - - - - - -
    - - - - - - - - - - -
    @@ -15024,7 +13215,7 @@ or the rectangle it references, then you need to update the crop frame by callin Documentation generated by JSDoc 3.3.3 - on Fri Jun 17 2016 12:45:30 GMT+0100 (BST) using the DocStrap template. + on Fri Jul 08 2016 15:42:36 GMT+0100 (GMT Daylight Time) using the DocStrap template. diff --git a/docs/Phaser.Cache.html b/docs/Phaser.Cache.html index 2d05aa8a3..a56e55496 100644 --- a/docs/Phaser.Cache.html +++ b/docs/Phaser.Cache.html @@ -708,10 +708,6 @@ ComplexPrimitiveShader -
  • - DisplayObject -
  • -
  • DisplayObjectContainer
  • @@ -744,6 +740,10 @@ PIXI +
  • + DisplayObject +
  • +
  • PixiFastShader
  • @@ -1588,6 +1588,62 @@ then used as an asset store.

    + + + + + + + + +
    +

    <static, constant> DEFAULT :PIXI.Texture

    + + +
    +
    + + + +
    +

    The default image used for a texture when no other is specified.

    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + +
    Source - + loader/Cache.js, line 215 +
    + + + + + + +
    @@ -1692,6 +1748,62 @@ then used as an asset store.

    + + + + +
    + + + +
    +

    <static, constant> MISSING :PIXI.Texture

    + + +
    +
    + + + +
    +

    The default image used for a texture when the source image is missing.

    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + +
    Source - + loader/Cache.js, line 222 +
    + + + + + + +
    @@ -2459,7 +2571,7 @@ then used as an asset store.

    Source - - loader/Cache.js, line 399 + loader/Cache.js, line 424
    @@ -2691,7 +2803,7 @@ then used as an asset store.

    Source - - loader/Cache.js, line 412 + loader/Cache.js, line 437
    @@ -3048,7 +3160,7 @@ then used as an asset store.

    Source - - loader/Cache.js, line 437 + loader/Cache.js, line 462
    @@ -3241,7 +3353,7 @@ then used as an asset store.

    Source - - loader/Cache.js, line 216 + loader/Cache.js, line 230
    @@ -3321,7 +3433,7 @@ This image is skipped when Cache.destroy is called due to its inter
    Source - - loader/Cache.js, line 268 + loader/Cache.js, line 291
    @@ -3507,7 +3619,7 @@ If an image already exists in the cache with the same key then it is removed and
    Source - - loader/Cache.js, line 232 + loader/Cache.js, line 246
    @@ -3672,7 +3784,7 @@ If an image already exists in the cache with the same key then it is removed and
    Source - - loader/Cache.js, line 476 + loader/Cache.js, line 501
    @@ -3752,7 +3864,7 @@ This image is skipped when Cache.destroy is called due to its inter
    Source - - loader/Cache.js, line 292 + loader/Cache.js, line 316
    @@ -3940,7 +4052,7 @@ This image is skipped when Cache.destroy is called due to its inter
    Source - - loader/Cache.js, line 365 + loader/Cache.js, line 390
    @@ -4082,7 +4194,7 @@ This image is skipped when Cache.destroy is called due to its inter
    Source - - loader/Cache.js, line 541 + loader/Cache.js, line 566
    @@ -4247,7 +4359,7 @@ This image is skipped when Cache.destroy is called due to its inter
    Source - - loader/Cache.js, line 525 + loader/Cache.js, line 550
    @@ -4458,7 +4570,7 @@ This image is skipped when Cache.destroy is called due to its inter
    Source - - loader/Cache.js, line 313 + loader/Cache.js, line 338
    @@ -4850,7 +4962,7 @@ This image is skipped when Cache.destroy is called due to its inter
    Source - - loader/Cache.js, line 554 + loader/Cache.js, line 579
    @@ -5015,7 +5127,7 @@ This image is skipped when Cache.destroy is called due to its inter
    Source - - loader/Cache.js, line 349 + loader/Cache.js, line 374
    @@ -5226,7 +5338,7 @@ This image is skipped when Cache.destroy is called due to its inter
    Source - - loader/Cache.js, line 591 + loader/Cache.js, line 616
    @@ -5414,7 +5526,7 @@ This image is skipped when Cache.destroy is called due to its inter
    Source - - loader/Cache.js, line 382 + loader/Cache.js, line 407
    @@ -5602,7 +5714,7 @@ This image is skipped when Cache.destroy is called due to its inter
    Source - - loader/Cache.js, line 508 + loader/Cache.js, line 533
    @@ -5767,7 +5879,7 @@ This image is skipped when Cache.destroy is called due to its inter
    Source - - loader/Cache.js, line 492 + loader/Cache.js, line 517
    @@ -5906,7 +6018,7 @@ This image is skipped when Cache.destroy is called due to its inter
    Source - - loader/Cache.js, line 890 + loader/Cache.js, line 915
    @@ -6045,7 +6157,7 @@ This image is skipped when Cache.destroy is called due to its inter
    Source - - loader/Cache.js, line 903 + loader/Cache.js, line 928
    @@ -6184,7 +6296,7 @@ This image is skipped when Cache.destroy is called due to its inter
    Source - - loader/Cache.js, line 916 + loader/Cache.js, line 941
    @@ -6323,7 +6435,7 @@ This image is skipped when Cache.destroy is called due to its inter
    Source - - loader/Cache.js, line 799 + loader/Cache.js, line 824
    @@ -6462,7 +6574,7 @@ This image is skipped when Cache.destroy is called due to its inter
    Source - - loader/Cache.js, line 812 + loader/Cache.js, line 837
    @@ -6601,7 +6713,7 @@ This image is skipped when Cache.destroy is called due to its inter
    Source - - loader/Cache.js, line 929 + loader/Cache.js, line 954
    @@ -6763,7 +6875,7 @@ This image is skipped when Cache.destroy is called due to its inter
    Source - - loader/Cache.js, line 759 + loader/Cache.js, line 784
    @@ -6902,7 +7014,7 @@ This image is skipped when Cache.destroy is called due to its inter
    Source - - loader/Cache.js, line 864 + loader/Cache.js, line 889
    @@ -7041,7 +7153,7 @@ This image is skipped when Cache.destroy is called due to its inter
    Source - - loader/Cache.js, line 981 + loader/Cache.js, line 1006
    @@ -7180,7 +7292,7 @@ This image is skipped when Cache.destroy is called due to its inter
    Source - - loader/Cache.js, line 968 + loader/Cache.js, line 993
    @@ -7319,7 +7431,7 @@ This image is skipped when Cache.destroy is called due to its inter
    Source - - loader/Cache.js, line 838 + loader/Cache.js, line 863
    @@ -7458,7 +7570,7 @@ This image is skipped when Cache.destroy is called due to its inter
    Source - - loader/Cache.js, line 851 + loader/Cache.js, line 876
    @@ -7597,7 +7709,7 @@ This image is skipped when Cache.destroy is called due to its inter
    Source - - loader/Cache.js, line 825 + loader/Cache.js, line 850
    @@ -7736,7 +7848,7 @@ This image is skipped when Cache.destroy is called due to its inter
    Source - - loader/Cache.js, line 877 + loader/Cache.js, line 902
    @@ -7878,7 +7990,7 @@ which may cause double-load instances.

    Source - - loader/Cache.js, line 778 + loader/Cache.js, line 803
    @@ -8017,7 +8129,7 @@ which may cause double-load instances.

    Source - - loader/Cache.js, line 955 + loader/Cache.js, line 980
    @@ -8156,7 +8268,7 @@ which may cause double-load instances.

    Source - - loader/Cache.js, line 942 + loader/Cache.js, line 967
    @@ -8234,7 +8346,7 @@ This is called automatically when the WebGL context is lost and then restored.Source - - loader/Cache.js, line 1937 + loader/Cache.js, line 1897 @@ -8376,7 +8488,7 @@ This is called automatically when the WebGL context is lost and then restored.Source - - loader/Cache.js, line 701 + loader/Cache.js, line 726 @@ -8447,7 +8559,7 @@ If an object in the cache has a destroy method it will also be call
    Source - - loader/Cache.js, line 1987 + loader/Cache.js, line 1947
    @@ -8641,7 +8753,7 @@ If an object in the cache has a destroy method it will also be call
    Source - - loader/Cache.js, line 1401 + loader/Cache.js, line 1426
    @@ -8782,7 +8894,7 @@ If an object in the cache has a destroy method it will also be call
    Source - - loader/Cache.js, line 1241 + loader/Cache.js, line 1266
    @@ -8923,7 +9035,7 @@ If an object in the cache has a destroy method it will also be call
    Source - - loader/Cache.js, line 1258 + loader/Cache.js, line 1283
    @@ -9064,7 +9176,7 @@ If an object in the cache has a destroy method it will also be call
    Source - - loader/Cache.js, line 1275 + loader/Cache.js, line 1300
    @@ -9205,7 +9317,7 @@ If an object in the cache has a destroy method it will also be call
    Source - - loader/Cache.js, line 1036 + loader/Cache.js, line 1061
    @@ -9399,7 +9511,7 @@ If an object in the cache has a destroy method it will also be call
    Source - - loader/Cache.js, line 1417 + loader/Cache.js, line 1442
    @@ -9628,7 +9740,7 @@ If an object in the cache has a destroy method it will also be call
    Source - - loader/Cache.js, line 1511 + loader/Cache.js, line 1536
    @@ -9857,7 +9969,7 @@ If an object in the cache has a destroy method it will also be call
    Source - - loader/Cache.js, line 1535 + loader/Cache.js, line 1560
    @@ -10051,7 +10163,7 @@ If an object in the cache has a destroy method it will also be call
    Source - - loader/Cache.js, line 1433 + loader/Cache.js, line 1458
    @@ -10247,7 +10359,7 @@ If an object in the cache has a destroy method it will also be call
    Source - - loader/Cache.js, line 1456 + loader/Cache.js, line 1481
    @@ -10447,7 +10559,7 @@ If an object in the cache has a destroy method it will also be call
    Source - - loader/Cache.js, line 1053 + loader/Cache.js, line 1078
    @@ -10695,7 +10807,7 @@ publicly for your own use as well.

    Source - - loader/Cache.js, line 998 + loader/Cache.js, line 1023
    @@ -10893,7 +11005,7 @@ of it by setting the clone argument to true.

    Source - - loader/Cache.js, line 1292 + loader/Cache.js, line 1317
    @@ -11052,7 +11164,7 @@ of it by setting the clone argument to true.

    Source - - loader/Cache.js, line 1649 + loader/Cache.js, line 1609
    @@ -11284,310 +11396,7 @@ of it by setting the clone argument to true.

    Source - - loader/Cache.js, line 1162 -
    - - - - - - - - - - - - - - - - - - - - - - - -
    -

    getPixiBaseTexture(key) → {PIXI.BaseTexture}

    - - -
    -
    - -
    - This method is deprecated and should not be used. It may be removed in the future. -
    - - - -
    -

    Gets a PIXI.BaseTexture by key from the PIXI.BaseTextureCache.

    -

    If the texture isn't found in the cache, then it searches the Phaser Image Cache.

    -
    - - - - - - - -
    Parameters:
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    NameTypeDescription
    key - - -string - - - -

    Asset key of the BaseTexture to retrieve from the Cache.

    - - - - -
    Returns:
    -
    - - - -
    - -PIXI.BaseTexture - - - -
    - -
    -

    The BaseTexture object or null if not found.

    -
    - - - -
    - - - -
    - - - - - - - - - -
    Deprecated:
    -
      - - -
    • Yes
    • -
    - - - - - - - - - - - -
    Source - - loader/Cache.js, line 1592 -
    - - - - - - - -
    - - - - - - - - - - - - - - - -
    -

    getPixiTexture(key) → {PIXI.Texture}

    - - -
    -
    - -
    - This method is deprecated and should not be used. It may be removed in the future. -
    - - - -
    -

    Gets a PIXI.Texture by key from the PIXI.TextureCache.

    -

    If the texture isn't found in the cache, then it searches the Phaser Image Cache and -creates a new PIXI.Texture object which is then returned.

    -
    - - - - - - - -
    Parameters:
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    NameTypeDescription
    key - - -string - - - -

    Asset key of the Texture to retrieve from the Cache.

    - - - - -
    Returns:
    -
    - - - -
    - -PIXI.Texture - - - -
    - -
    -

    The Texture object.

    -
    - - - -
    - - - -
    - - - - - - - - - -
    Deprecated:
    -
      - - -
    • Yes
    • -
    - - - - - - - - - - - -
    Source - - loader/Cache.js, line 1559 + loader/Cache.js, line 1187
    @@ -11728,7 +11537,7 @@ creates a new PIXI.Texture object which is then returned.

    Source - - loader/Cache.js, line 1380 + loader/Cache.js, line 1405
    @@ -11869,7 +11678,7 @@ creates a new PIXI.Texture object which is then returned.

    Source - - loader/Cache.js, line 1363 + loader/Cache.js, line 1388
    @@ -12010,7 +11819,7 @@ creates a new PIXI.Texture object which is then returned.

    Source - - loader/Cache.js, line 1111 + loader/Cache.js, line 1136
    @@ -12151,7 +11960,7 @@ creates a new PIXI.Texture object which is then returned.

    Source - - loader/Cache.js, line 1128 + loader/Cache.js, line 1153
    @@ -12292,7 +12101,7 @@ creates a new PIXI.Texture object which is then returned.

    Source - - loader/Cache.js, line 1145 + loader/Cache.js, line 1170
    @@ -12432,7 +12241,7 @@ creates a new PIXI.Texture object which is then returned.

    Source - - loader/Cache.js, line 1096 + loader/Cache.js, line 1121
    @@ -12573,7 +12382,7 @@ creates a new PIXI.Texture object which is then returned.

    Source - - loader/Cache.js, line 1224 + loader/Cache.js, line 1249
    @@ -12714,7 +12523,7 @@ Be aware that every call to this function makes a DOM src query, so use carefull
    Source - - loader/Cache.js, line 1624 + loader/Cache.js, line 1584
    @@ -12855,7 +12664,7 @@ Be aware that every call to this function makes a DOM src query, so use carefull
    Source - - loader/Cache.js, line 1346 + loader/Cache.js, line 1371
    @@ -12996,7 +12805,7 @@ Be aware that every call to this function makes a DOM src query, so use carefull
    Source - - loader/Cache.js, line 1329 + loader/Cache.js, line 1354
    @@ -13190,7 +12999,7 @@ Be aware that every call to this function makes a DOM src query, so use carefull
    Source - - loader/Cache.js, line 1476 + loader/Cache.js, line 1501
    @@ -13329,7 +13138,7 @@ Be aware that every call to this function makes a DOM src query, so use carefull
    Source - - loader/Cache.js, line 718 + loader/Cache.js, line 743
    @@ -13469,7 +13278,7 @@ A sound is considered ready when it has finished decoding and the device is no l
    Source - - loader/Cache.js, line 736 + loader/Cache.js, line 761
    @@ -13588,7 +13397,7 @@ A sound is considered ready when it has finished decoding and the device is no l
    Source - - loader/Cache.js, line 641 + loader/Cache.js, line 666
    @@ -13707,7 +13516,7 @@ A sound is considered ready when it has finished decoding and the device is no l
    Source - - loader/Cache.js, line 666 + loader/Cache.js, line 691
    @@ -13828,7 +13637,7 @@ then it will persist in memory.

    Source - - loader/Cache.js, line 1787 + loader/Cache.js, line 1747
    @@ -13949,7 +13758,7 @@ then it will persist in memory.

    Source - - loader/Cache.js, line 1802 + loader/Cache.js, line 1762
    @@ -14070,7 +13879,7 @@ then it will persist in memory.

    Source - - loader/Cache.js, line 1817 + loader/Cache.js, line 1777
    @@ -14191,7 +14000,7 @@ then it will persist in memory.

    Source - - loader/Cache.js, line 1681 + loader/Cache.js, line 1641
    @@ -14218,7 +14027,7 @@ then it will persist in memory.

    removeImage(key, removeFromPixi)

    + id="removeImage">removeImage(key, destroyBaseTexture)
    @@ -14229,7 +14038,7 @@ then it will persist in memory.

    Removes an image from the cache.

    You can optionally elect to destroy it as well. This calls BaseTexture.destroy on it.

    -

    Note that this only removes it from the Phaser and PIXI Caches. If you still have references to the data elsewhere +

    Note that this only removes it from the Phaser Cache. If you still have references to the data elsewhere then it will persist in memory.

    @@ -14303,7 +14112,7 @@ then it will persist in memory.

    - removeFromPixi + destroyBaseTexture @@ -14335,7 +14144,7 @@ then it will persist in memory.

    -

    Should this image also be destroyed? Removing it from the PIXI.BaseTextureCache?

    +

    Should the BaseTexture behind this image also be destroyed?

    @@ -14368,7 +14177,7 @@ then it will persist in memory.

    Source - - loader/Cache.js, line 1696 + loader/Cache.js, line 1656
    @@ -14489,7 +14298,7 @@ then it will persist in memory.

    Source - - loader/Cache.js, line 1832 + loader/Cache.js, line 1792
    @@ -14610,7 +14419,7 @@ then it will persist in memory.

    Source - - loader/Cache.js, line 1757 + loader/Cache.js, line 1717
    @@ -14731,7 +14540,7 @@ then it will persist in memory.

    Source - - loader/Cache.js, line 1892 + loader/Cache.js, line 1852
    @@ -14852,7 +14661,7 @@ then it will persist in memory.

    Source - - loader/Cache.js, line 1877 + loader/Cache.js, line 1837
    @@ -14976,7 +14785,7 @@ then it will persist in memory.

    Source - - loader/Cache.js, line 1723 + loader/Cache.js, line 1683
    @@ -15097,7 +14906,7 @@ then it will persist in memory.

    Source - - loader/Cache.js, line 1907 + loader/Cache.js, line 1867
    @@ -15218,7 +15027,7 @@ then it will persist in memory.

    Source - - loader/Cache.js, line 1742 + loader/Cache.js, line 1702
    @@ -15339,7 +15148,7 @@ then it will persist in memory.

    Source - - loader/Cache.js, line 1922 + loader/Cache.js, line 1882
    @@ -15460,7 +15269,7 @@ then it will persist in memory.

    Source - - loader/Cache.js, line 1772 + loader/Cache.js, line 1732
    @@ -15581,7 +15390,7 @@ then it will persist in memory.

    Source - - loader/Cache.js, line 1862 + loader/Cache.js, line 1822
    @@ -15702,7 +15511,7 @@ then it will persist in memory.

    Source - - loader/Cache.js, line 1847 + loader/Cache.js, line 1807
    @@ -15911,7 +15720,7 @@ then it will persist in memory.

    Source - - loader/Cache.js, line 1492 + loader/Cache.js, line 1517
    @@ -16030,7 +15839,7 @@ then it will persist in memory.

    Source - - loader/Cache.js, line 684 + loader/Cache.js, line 709
    @@ -16079,7 +15888,7 @@ then it will persist in memory.

    Documentation generated by JSDoc 3.3.3 - on Fri Jun 17 2016 12:45:30 GMT+0100 (BST) using the DocStrap template. + on Fri Jul 08 2016 15:42:36 GMT+0100 (GMT Daylight Time) using the DocStrap template. diff --git a/docs/Phaser.Camera.html b/docs/Phaser.Camera.html index 98fa0e6fd..5283fb74a 100644 --- a/docs/Phaser.Camera.html +++ b/docs/Phaser.Camera.html @@ -708,10 +708,6 @@ ComplexPrimitiveShader -
  • - DisplayObject -
  • -
  • DisplayObjectContainer
  • @@ -744,6 +740,10 @@ PIXI +
  • + DisplayObject +
  • +
  • PixiFastShader
  • @@ -2077,7 +2077,7 @@ at all then set this to null. The values can be anything and are in World coordi

    displayObject :PIXI.DisplayObject

    + id="displayObject">displayObject :PIXI.DisplayObject
    @@ -5420,7 +5420,7 @@ of the effect, and if it should effect both axis or just one.

    Documentation generated by JSDoc 3.3.3 - on Fri Jun 17 2016 12:45:30 GMT+0100 (BST) using the DocStrap template. + on Fri Jul 08 2016 15:42:36 GMT+0100 (GMT Daylight Time) using the DocStrap template. diff --git a/docs/Phaser.Canvas.html b/docs/Phaser.Canvas.html index 603c1ff77..42ed6aa59 100644 --- a/docs/Phaser.Canvas.html +++ b/docs/Phaser.Canvas.html @@ -708,10 +708,6 @@ ComplexPrimitiveShader -
  • - DisplayObject -
  • -
  • DisplayObjectContainer
  • @@ -744,6 +740,10 @@ PIXI +
  • + DisplayObject +
  • +
  • PixiFastShader
  • @@ -1535,7 +1535,7 @@ If no parent is given it will be added as a child of the document.body.

    Source - - system/Canvas.js, line 116 + system/Canvas.js, line 109
    @@ -1985,7 +1985,7 @@ If no parent is given it will be added as a child of the document.body.

    Source - - system/Canvas.js, line 249 + system/Canvas.js, line 242
    @@ -2127,7 +2127,7 @@ If no parent is given it will be added as a child of the document.body.

    Source - - system/Canvas.js, line 224 + system/Canvas.js, line 217
    @@ -2246,7 +2246,7 @@ If no parent is given it will be added as a child of the document.body.

    Source - - system/Canvas.js, line 163 + system/Canvas.js, line 156
    @@ -2440,7 +2440,7 @@ If no parent is given it will be added as a child of the document.body.

    Source - - system/Canvas.js, line 54 + system/Canvas.js, line 47
    @@ -2580,7 +2580,7 @@ Note that if this doesn't given the desired result then see the CanvasUtils.setS
    Source - - system/Canvas.js, line 290 + system/Canvas.js, line 283
    @@ -2720,7 +2720,7 @@ Note that if this doesn't given the desired result then see the setSmoothingEnab
    Source - - system/Canvas.js, line 267 + system/Canvas.js, line 260
    @@ -2886,7 +2886,7 @@ patchy on earlier browsers, especially on mobile.

    Source - - system/Canvas.js, line 199 + system/Canvas.js, line 192
    @@ -3068,7 +3068,7 @@ patchy on earlier browsers, especially on mobile.

    Source - - system/Canvas.js, line 72 + system/Canvas.js, line 65
    @@ -3345,7 +3345,7 @@ patchy on earlier browsers, especially on mobile.

    Source - - system/Canvas.js, line 178 + system/Canvas.js, line 171
    @@ -3527,7 +3527,7 @@ patchy on earlier browsers, especially on mobile.

    Source - - system/Canvas.js, line 92 + system/Canvas.js, line 85
    @@ -3576,7 +3576,7 @@ patchy on earlier browsers, especially on mobile.

    Documentation generated by JSDoc 3.3.3 - on Fri Jun 17 2016 12:45:30 GMT+0100 (BST) using the DocStrap template. + on Fri Jul 08 2016 15:42:36 GMT+0100 (GMT Daylight Time) using the DocStrap template. diff --git a/docs/Phaser.Circle.html b/docs/Phaser.Circle.html index 8f8545384..e7c0c7126 100644 --- a/docs/Phaser.Circle.html +++ b/docs/Phaser.Circle.html @@ -708,10 +708,6 @@ ComplexPrimitiveShader -
  • - DisplayObject -
  • -
  • DisplayObjectContainer
  • @@ -744,6 +740,10 @@ PIXI +
  • + DisplayObject +
  • +
  • PixiFastShader
  • @@ -4973,7 +4973,7 @@ This method checks the radius distances between the two Circle objects to see if Documentation generated by JSDoc 3.3.3 - on Fri Jun 17 2016 12:45:30 GMT+0100 (BST) using the DocStrap template. + on Fri Jul 08 2016 15:42:36 GMT+0100 (GMT Daylight Time) using the DocStrap template. diff --git a/docs/Phaser.Color.html b/docs/Phaser.Color.html index 89fab857b..241cf850e 100644 --- a/docs/Phaser.Color.html +++ b/docs/Phaser.Color.html @@ -708,10 +708,6 @@ ComplexPrimitiveShader -
  • - DisplayObject -
  • -
  • DisplayObjectContainer
  • @@ -744,6 +740,10 @@ PIXI +
  • + DisplayObject +
  • +
  • PixiFastShader
  • @@ -1463,7 +1463,7 @@
    Source - - utils/Color.js, line 1040 + utils/Color.js, line 1057
    @@ -1625,7 +1625,7 @@
    Source - - utils/Color.js, line 1027 + utils/Color.js, line 1044
    @@ -1788,7 +1788,7 @@ Painting with white produces no change.

    Source - - utils/Color.js, line 1199 + utils/Color.js, line 1216
    @@ -1951,7 +1951,7 @@ Painting with black produces no change.

    Source - - utils/Color.js, line 1185 + utils/Color.js, line 1202
    @@ -2113,7 +2113,7 @@ Painting with black produces no change.

    Source - - utils/Color.js, line 998 + utils/Color.js, line 1015
    @@ -2276,7 +2276,7 @@ Painting with black produces no change.

    Source - - utils/Color.js, line 1066 + utils/Color.js, line 1083
    @@ -2439,7 +2439,7 @@ Painting with white inverts the backdrop color; painting with black produces no
    Source - - utils/Color.js, line 1109 + utils/Color.js, line 1126
    @@ -2601,7 +2601,7 @@ Painting with white inverts the backdrop color; painting with black produces no
    Source - - utils/Color.js, line 1313 + utils/Color.js, line 1330
    @@ -2770,7 +2770,7 @@ if it is equal to 0.5, the backdrop is unchanged.

    Source - - utils/Color.js, line 1161 + utils/Color.js, line 1178
    @@ -2935,7 +2935,7 @@ This changes all pixels to primary additive colors (red, green, or blue), white,
    Source - - utils/Color.js, line 1284 + utils/Color.js, line 1301
    @@ -3097,7 +3097,7 @@ This changes all pixels to primary additive colors (red, green, or blue), white,
    Source - - utils/Color.js, line 985 + utils/Color.js, line 1002
    @@ -3259,7 +3259,7 @@ This changes all pixels to primary additive colors (red, green, or blue), white,
    Source - - utils/Color.js, line 1226 + utils/Color.js, line 1243
    @@ -3421,7 +3421,7 @@ This changes all pixels to primary additive colors (red, green, or blue), white,
    Source - - utils/Color.js, line 1213 + utils/Color.js, line 1230
    @@ -3585,7 +3585,7 @@ The calculation simplifies to the sum of bottom layer and twice the top layer, s
    Source - - utils/Color.js, line 1239 + utils/Color.js, line 1256
    @@ -3750,7 +3750,7 @@ multiplying with white leaves the original color unchanged.

    Source - - utils/Color.js, line 1011 + utils/Color.js, line 1028
    @@ -3912,7 +3912,7 @@ multiplying with white leaves the original color unchanged.

    Source - - utils/Color.js, line 1081 + utils/Color.js, line 1098
    @@ -4074,7 +4074,7 @@ multiplying with white leaves the original color unchanged.

    Source - - utils/Color.js, line 972 + utils/Color.js, line 989
    @@ -4238,7 +4238,7 @@ The backdrop color is not replaced, but is mixed with the source color to reflec
    Source - - utils/Color.js, line 1123 + utils/Color.js, line 1140
    @@ -4400,7 +4400,7 @@ The backdrop color is not replaced, but is mixed with the source color to reflec
    Source - - utils/Color.js, line 1326 + utils/Color.js, line 1343
    @@ -4563,7 +4563,7 @@ If the backdrop color is darker than 50% gray, colors lighter than the blend col
    Source - - utils/Color.js, line 1270 + utils/Color.js, line 1287
    @@ -4725,7 +4725,7 @@ If the backdrop color is darker than 50% gray, colors lighter than the blend col
    Source - - utils/Color.js, line 1300 + utils/Color.js, line 1317
    @@ -4889,7 +4889,7 @@ Screening any color with white produces white; screening with black leaves the o
    Source - - utils/Color.js, line 1094 + utils/Color.js, line 1111
    @@ -5058,7 +5058,7 @@ The effect is similar to shining a diffused spotlight on the backdrop.

    Source - - utils/Color.js, line 1138 + utils/Color.js, line 1155
    @@ -5220,7 +5220,7 @@ The effect is similar to shining a diffused spotlight on the backdrop.

    Source - - utils/Color.js, line 1053 + utils/Color.js, line 1070
    @@ -5385,7 +5385,7 @@ layer down by twice the difference; when it is darker, the black point is moved
    Source - - utils/Color.js, line 1254 + utils/Color.js, line 1271
    @@ -5524,7 +5524,7 @@ layer down by twice the difference; when it is darker, the black point is moved
    Source - - utils/Color.js, line 677 + utils/Color.js, line 694
    @@ -5965,7 +5965,7 @@ Any components that are not specified will default to zero.

    Source - - utils/Color.js, line 421 + utils/Color.js, line 438
    @@ -6294,7 +6294,7 @@ This does not rely on endianness.

    Source - - utils/Color.js, line 912 + utils/Color.js, line 929
    @@ -6433,7 +6433,7 @@ This does not rely on endianness.

    Source - - utils/Color.js, line 924 + utils/Color.js, line 941
    @@ -6572,7 +6572,7 @@ This does not rely on endianness.

    Source - - utils/Color.js, line 960 + utils/Color.js, line 977
    @@ -6757,7 +6757,7 @@ This does not rely on endianness.

    Source - - utils/Color.js, line 483 + utils/Color.js, line 500
    @@ -6965,7 +6965,7 @@ This does not rely on endianness.

    Source - - utils/Color.js, line 466 + utils/Color.js, line 483
    @@ -7104,7 +7104,7 @@ This does not rely on endianness.

    Source - - utils/Color.js, line 948 + utils/Color.js, line 965
    @@ -7343,7 +7343,7 @@ Set the max value to restrict the maximum color used per channel.

    Source - - utils/Color.js, line 816 + utils/Color.js, line 833
    @@ -7482,7 +7482,7 @@ Set the max value to restrict the maximum color used per channel.

    Source - - utils/Color.js, line 936 + utils/Color.js, line 953
    @@ -7622,7 +7622,7 @@ Set the max value to restrict the maximum color used per channel.

    Source - - utils/Color.js, line 848 + utils/Color.js, line 865
    @@ -7764,7 +7764,7 @@ Set the max value to restrict the maximum color used per channel.

    Source - - utils/Color.js, line 890 + utils/Color.js, line 907
    @@ -7948,7 +7948,7 @@ Set the max value to restrict the maximum color used per channel.

    Source - - utils/Color.js, line 547 + utils/Color.js, line 564
    @@ -8087,7 +8087,7 @@ Set the max value to restrict the maximum color used per channel.

    Source - - utils/Color.js, line 528 + utils/Color.js, line 545
    @@ -8285,7 +8285,7 @@ Set the max value to restrict the maximum color used per channel.

    Source - - utils/Color.js, line 717 + utils/Color.js, line 734
    @@ -8532,7 +8532,7 @@ Based on code by Michael Jackson (https://github.com/mjijackson)

    Source - - utils/Color.js, line 203 + utils/Color.js, line 220
    @@ -8730,7 +8730,7 @@ Based on code by Michael Jackson (https://github.com/mjijackson)

    Source - - utils/Color.js, line 692 + utils/Color.js, line 709
    @@ -8977,7 +8977,7 @@ Based on code by Michael Jackson (https://github.com/mjijackson)

    Source - - utils/Color.js, line 310 + utils/Color.js, line 327
    @@ -9163,7 +9163,7 @@ Based on code by Michael Jackson (https://github.com/mjijackson)

    Source - - utils/Color.js, line 379 + utils/Color.js, line 396
    @@ -9394,7 +9394,7 @@ Based on code by Michael Jackson (https://github.com/mjijackson)

    Source - - utils/Color.js, line 742 + utils/Color.js, line 759
    @@ -9648,7 +9648,7 @@ Based on code by Michael Jackson (https://github.com/mjijackson)

    Source - - utils/Color.js, line 768 + utils/Color.js, line 785
    @@ -9948,7 +9948,7 @@ Based on code by Michael Jackson (https://github.com/mjijackson)

    Source - - utils/Color.js, line 792 + utils/Color.js, line 809
    @@ -10411,7 +10411,7 @@ Based on code by Michael Jackson (https://github.com/mjijackson)

    Source - - utils/Color.js, line 144 + utils/Color.js, line 161
    @@ -10658,7 +10658,7 @@ Based on code by Michael Jackson (https://github.com/mjijackson)

    Source - - utils/Color.js, line 254 + utils/Color.js, line 271
    @@ -10962,7 +10962,215 @@ If prefix was '#' it will be in the format #RRGGBB otherwise
    Source - - utils/Color.js, line 499 + utils/Color.js, line 516 +
    + + + + + + + +
    + + + + + + + + + + + + + + + +
    +

    <static> toABGR(r, g, b, a) → {number}

    + + +
    +
    + + + +
    +

    Converts RGBA components to a 32 bit integer in AABBGGRR format.

    +
    + + + + + + + +
    Parameters:
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeDescription
    r + + +number + + + +

    The red color component, in the range 0 - 255.

    g + + +number + + + +

    The green color component, in the range 0 - 255.

    b + + +number + + + +

    The blue color component, in the range 0 - 255.

    a + + +number + + + +

    The alpha color component, in the range 0 - 255.

    + + + + +
    Returns:
    +
    + + + +
    + +number + + - +
    + +
    +

    A RGBA-packed 32 bit integer

    +
    + + + +
    + + + +
    + + + + + + + + + + + + + + + + + + + +
    Source - + utils/Color.js, line 144
    @@ -11599,7 +11807,7 @@ endian-independent method, use fromRGBA(rgba) and toRGBA(r, g, b, a).

    Source - - utils/Color.js, line 448 + utils/Color.js, line 465
    @@ -11786,7 +11994,7 @@ endian-independent method, use fromRGBA(rgba) and toRGBA(r, g, b, a).

    Source - - utils/Color.js, line 624 + utils/Color.js, line 641
    @@ -11969,7 +12177,7 @@ endian-independent method, use fromRGBA(rgba) and toRGBA(r, g, b, a).

    Source - - utils/Color.js, line 591 + utils/Color.js, line 608
    @@ -12018,7 +12226,7 @@ endian-independent method, use fromRGBA(rgba) and toRGBA(r, g, b, a).

    Documentation generated by JSDoc 3.3.3 - on Fri Jun 17 2016 12:45:30 GMT+0100 (BST) using the DocStrap template. + on Fri Jul 08 2016 15:42:36 GMT+0100 (GMT Daylight Time) using the DocStrap template. diff --git a/docs/Phaser.Component.Angle.html b/docs/Phaser.Component.Angle.html index 47f026711..d2ac81939 100644 --- a/docs/Phaser.Component.Angle.html +++ b/docs/Phaser.Component.Angle.html @@ -708,10 +708,6 @@ ComplexPrimitiveShader -
  • - DisplayObject -
  • -
  • DisplayObjectContainer
  • @@ -744,6 +740,10 @@ PIXI +
  • + DisplayObject +
  • +
  • PixiFastShader
  • @@ -1411,7 +1411,7 @@ Working in radians is slightly faster as it doesn't have to perform any calculat Documentation generated by JSDoc 3.3.3 - on Fri Jun 17 2016 12:45:31 GMT+0100 (BST) using the DocStrap template. + on Fri Jul 08 2016 15:42:36 GMT+0100 (GMT Daylight Time) using the DocStrap template. diff --git a/docs/Phaser.Component.Animation.html b/docs/Phaser.Component.Animation.html index a69bfa22c..acbe8e0ec 100644 --- a/docs/Phaser.Component.Animation.html +++ b/docs/Phaser.Component.Animation.html @@ -708,10 +708,6 @@ ComplexPrimitiveShader -
  • - DisplayObject -
  • -
  • DisplayObjectContainer
  • @@ -744,6 +740,10 @@ PIXI +
  • + DisplayObject +
  • +
  • PixiFastShader
  • @@ -1625,7 +1625,7 @@ If you need to reset an already running animation do so directly on the Animatio Documentation generated by JSDoc 3.3.3 - on Fri Jun 17 2016 12:45:31 GMT+0100 (BST) using the DocStrap template. + on Fri Jul 08 2016 15:42:36 GMT+0100 (GMT Daylight Time) using the DocStrap template. diff --git a/docs/Phaser.Component.AutoCull.html b/docs/Phaser.Component.AutoCull.html index 0847f2248..1199f1903 100644 --- a/docs/Phaser.Component.AutoCull.html +++ b/docs/Phaser.Component.AutoCull.html @@ -708,10 +708,6 @@ ComplexPrimitiveShader -
  • - DisplayObject -
  • -
  • DisplayObjectContainer
  • @@ -744,6 +740,10 @@ PIXI +
  • + DisplayObject +
  • +
  • PixiFastShader
  • @@ -1468,7 +1468,7 @@ Returns true if they do, otherwise false if fully outs Documentation generated by JSDoc 3.3.3 - on Fri Jun 17 2016 12:45:31 GMT+0100 (BST) using the DocStrap template. + on Fri Jul 08 2016 15:42:36 GMT+0100 (GMT Daylight Time) using the DocStrap template. diff --git a/docs/Phaser.Component.Bounds.html b/docs/Phaser.Component.Bounds.html index 5cd71d122..401aa4cc0 100644 --- a/docs/Phaser.Component.Bounds.html +++ b/docs/Phaser.Component.Bounds.html @@ -708,10 +708,6 @@ ComplexPrimitiveShader -
  • - DisplayObject -
  • -
  • DisplayObjectContainer
  • @@ -744,6 +740,10 @@ PIXI +
  • + DisplayObject +
  • +
  • PixiFastShader
  • @@ -2437,7 +2437,7 @@ one expands it.

    Documentation generated by JSDoc 3.3.3 - on Fri Jun 17 2016 12:45:31 GMT+0100 (BST) using the DocStrap template. + on Fri Jul 08 2016 15:42:36 GMT+0100 (GMT Daylight Time) using the DocStrap template. diff --git a/docs/Phaser.Component.BringToTop.html b/docs/Phaser.Component.BringToTop.html index f2c9b403e..c5a657a97 100644 --- a/docs/Phaser.Component.BringToTop.html +++ b/docs/Phaser.Component.BringToTop.html @@ -708,10 +708,6 @@ ComplexPrimitiveShader -
  • - DisplayObject -
  • -
  • DisplayObjectContainer
  • @@ -744,6 +740,10 @@ PIXI +
  • + DisplayObject +
  • +
  • PixiFastShader
  • @@ -1328,7 +1328,7 @@

    bringToTop() → {PIXI.DisplayObject}

    + id="bringToTop">bringToTop() → {PIXI.DisplayObject}
    @@ -1358,7 +1358,7 @@ because the World is the root Group from which all Game Objects descend.

    -PIXI.DisplayObject +PIXI.DisplayObject -
    @@ -1421,7 +1421,7 @@ because the World is the root Group from which all Game Objects descend.

    moveDown() → {PIXI.DisplayObject}

    + id="moveDown">moveDown() → {PIXI.DisplayObject}
    @@ -1451,7 +1451,7 @@ because the World is the root Group from which all Game Objects descend.

    -PIXI.DisplayObject +PIXI.DisplayObject -
    @@ -1514,7 +1514,7 @@ because the World is the root Group from which all Game Objects descend.

    moveUp() → {PIXI.DisplayObject}

    + id="moveUp">moveUp() → {PIXI.DisplayObject}
    @@ -1544,7 +1544,7 @@ because the World is the root Group from which all Game Objects descend.

    -PIXI.DisplayObject +PIXI.DisplayObject -
    @@ -1607,7 +1607,7 @@ because the World is the root Group from which all Game Objects descend.

    sendToBack() → {PIXI.DisplayObject}

    + id="sendToBack">sendToBack() → {PIXI.DisplayObject}
    @@ -1637,7 +1637,7 @@ because the World is the root Group from which all Game Objects descend.

    -PIXI.DisplayObject +PIXI.DisplayObject -
    @@ -1722,7 +1722,7 @@ because the World is the root Group from which all Game Objects descend.

    Documentation generated by JSDoc 3.3.3 - on Fri Jun 17 2016 12:45:31 GMT+0100 (BST) using the DocStrap template. + on Fri Jul 08 2016 15:42:36 GMT+0100 (GMT Daylight Time) using the DocStrap template. diff --git a/docs/Phaser.Component.Core.html b/docs/Phaser.Component.Core.html index 1c126dbb9..fd77a401d 100644 --- a/docs/Phaser.Component.Core.html +++ b/docs/Phaser.Component.Core.html @@ -708,10 +708,6 @@ ComplexPrimitiveShader -
  • - DisplayObject -
  • -
  • DisplayObjectContainer
  • @@ -744,6 +740,10 @@ PIXI +
  • + DisplayObject +
  • +
  • PixiFastShader
  • @@ -2626,7 +2626,7 @@ Remember if this Game Object has any children you should call update on those to Documentation generated by JSDoc 3.3.3 - on Fri Jun 17 2016 12:45:31 GMT+0100 (BST) using the DocStrap template. + on Fri Jul 08 2016 15:42:36 GMT+0100 (GMT Daylight Time) using the DocStrap template. diff --git a/docs/Phaser.Component.Crop.html b/docs/Phaser.Component.Crop.html index 012edfaad..50fc65be6 100644 --- a/docs/Phaser.Component.Crop.html +++ b/docs/Phaser.Component.Crop.html @@ -708,10 +708,6 @@ ComplexPrimitiveShader -
  • - DisplayObject -
  • -
  • DisplayObjectContainer
  • @@ -744,6 +740,10 @@ PIXI +
  • + DisplayObject +
  • +
  • PixiFastShader
  • @@ -1665,7 +1665,7 @@ or the rectangle it references, then you need to update the crop frame by callin Documentation generated by JSDoc 3.3.3 - on Fri Jun 17 2016 12:45:31 GMT+0100 (BST) using the DocStrap template. + on Fri Jul 08 2016 15:42:36 GMT+0100 (GMT Daylight Time) using the DocStrap template. diff --git a/docs/Phaser.Component.Delta.html b/docs/Phaser.Component.Delta.html index f7242c868..571c20d1a 100644 --- a/docs/Phaser.Component.Delta.html +++ b/docs/Phaser.Component.Delta.html @@ -708,10 +708,6 @@ ComplexPrimitiveShader -
  • - DisplayObject -
  • -
  • DisplayObjectContainer
  • @@ -744,6 +740,10 @@ PIXI +
  • + DisplayObject +
  • +
  • PixiFastShader
  • @@ -1520,7 +1520,7 @@ Documentation generated by JSDoc 3.3.3 - on Fri Jun 17 2016 12:45:31 GMT+0100 (BST) using the DocStrap template. + on Fri Jul 08 2016 15:42:36 GMT+0100 (GMT Daylight Time) using the DocStrap template. diff --git a/docs/Phaser.Component.Destroy.html b/docs/Phaser.Component.Destroy.html index 6ada96bae..f934ac65d 100644 --- a/docs/Phaser.Component.Destroy.html +++ b/docs/Phaser.Component.Destroy.html @@ -708,10 +708,6 @@ ComplexPrimitiveShader -
  • - DisplayObject -
  • -
  • DisplayObjectContainer
  • @@ -744,6 +740,10 @@ PIXI +
  • + DisplayObject +
  • +
  • PixiFastShader
  • @@ -1593,7 +1593,7 @@ more than one Game Object sharing the same BaseTexture.

    Documentation generated by JSDoc 3.3.3 - on Fri Jun 17 2016 12:45:31 GMT+0100 (BST) using the DocStrap template. + on Fri Jul 08 2016 15:42:36 GMT+0100 (GMT Daylight Time) using the DocStrap template. diff --git a/docs/Phaser.Component.FixedToCamera.html b/docs/Phaser.Component.FixedToCamera.html index 8add61006..cf4f8b320 100644 --- a/docs/Phaser.Component.FixedToCamera.html +++ b/docs/Phaser.Component.FixedToCamera.html @@ -708,10 +708,6 @@ ComplexPrimitiveShader -
  • - DisplayObject -
  • -
  • DisplayObjectContainer
  • @@ -744,6 +740,10 @@ PIXI +
  • + DisplayObject +
  • +
  • PixiFastShader
  • @@ -1546,7 +1546,7 @@ Called automatically by the Game Object.

    Documentation generated by JSDoc 3.3.3 - on Fri Jun 17 2016 12:45:31 GMT+0100 (BST) using the DocStrap template. + on Fri Jul 08 2016 15:42:36 GMT+0100 (GMT Daylight Time) using the DocStrap template. diff --git a/docs/Phaser.Component.Health.html b/docs/Phaser.Component.Health.html index 551f11c2e..32e87fd4a 100644 --- a/docs/Phaser.Component.Health.html +++ b/docs/Phaser.Component.Health.html @@ -708,10 +708,6 @@ ComplexPrimitiveShader -
  • - DisplayObject -
  • -
  • DisplayObjectContainer
  • @@ -744,6 +740,10 @@ PIXI +
  • + DisplayObject +
  • +
  • PixiFastShader
  • @@ -1642,7 +1642,7 @@ Will never exceed the maxHealth value.

    Documentation generated by JSDoc 3.3.3 - on Fri Jun 17 2016 12:45:31 GMT+0100 (BST) using the DocStrap template. + on Fri Jul 08 2016 15:42:36 GMT+0100 (GMT Daylight Time) using the DocStrap template. diff --git a/docs/Phaser.Component.InCamera.html b/docs/Phaser.Component.InCamera.html index 4475f37be..8056de036 100644 --- a/docs/Phaser.Component.InCamera.html +++ b/docs/Phaser.Component.InCamera.html @@ -708,10 +708,6 @@ ComplexPrimitiveShader -
  • - DisplayObject -
  • -
  • DisplayObjectContainer
  • @@ -744,6 +740,10 @@ PIXI +
  • + DisplayObject +
  • +
  • PixiFastShader
  • @@ -1408,7 +1408,7 @@ Documentation generated by JSDoc 3.3.3 - on Fri Jun 17 2016 12:45:31 GMT+0100 (BST) using the DocStrap template. + on Fri Jul 08 2016 15:42:37 GMT+0100 (GMT Daylight Time) using the DocStrap template. diff --git a/docs/Phaser.Component.InWorld.html b/docs/Phaser.Component.InWorld.html index ab19805a4..aa82f0e0f 100644 --- a/docs/Phaser.Component.InWorld.html +++ b/docs/Phaser.Component.InWorld.html @@ -708,10 +708,6 @@ ComplexPrimitiveShader -
  • - DisplayObject -
  • -
  • DisplayObjectContainer
  • @@ -744,6 +740,10 @@ PIXI +
  • + DisplayObject +
  • +
  • PixiFastShader
  • @@ -1658,7 +1658,7 @@ Called automatically by the Game Object.

    Documentation generated by JSDoc 3.3.3 - on Fri Jun 17 2016 12:45:31 GMT+0100 (BST) using the DocStrap template. + on Fri Jul 08 2016 15:42:37 GMT+0100 (GMT Daylight Time) using the DocStrap template. diff --git a/docs/Phaser.Component.InputEnabled.html b/docs/Phaser.Component.InputEnabled.html index 8701c8516..f346f34ab 100644 --- a/docs/Phaser.Component.InputEnabled.html +++ b/docs/Phaser.Component.InputEnabled.html @@ -708,10 +708,6 @@ ComplexPrimitiveShader -
  • - DisplayObject -
  • -
  • DisplayObjectContainer
  • @@ -744,6 +740,10 @@ PIXI +
  • + DisplayObject +
  • +
  • PixiFastShader
  • @@ -1411,6 +1411,9 @@ for this Game Object and it will then start to process click / touch events and

    You can then access the Input Handler via this.input.

    Note that Input related events are dispatched from this.events, i.e.: events.onInputDown.

    If you set this property to false it will stop the Input Handler from processing any more input events.

    +

    If you want to temporarily disable input for a Game Object, then it's better to set +input.enabled = false, as it won't reset any of the Input Handlers internal properties. +You can then toggle this back on as needed.

    @@ -1438,7 +1441,7 @@ for this Game Object and it will then start to process click / touch events and
    Source - - gameobjects/components/InputEnabled.js, line 38 + gameobjects/components/InputEnabled.js, line 42
    @@ -1481,7 +1484,7 @@ for this Game Object and it will then start to process click / touch events and Documentation generated by JSDoc 3.3.3 - on Fri Jun 17 2016 12:45:31 GMT+0100 (BST) using the DocStrap template. + on Fri Jul 08 2016 15:42:37 GMT+0100 (GMT Daylight Time) using the DocStrap template. diff --git a/docs/Phaser.Component.LifeSpan.html b/docs/Phaser.Component.LifeSpan.html index 6451c54af..2a6f8186b 100644 --- a/docs/Phaser.Component.LifeSpan.html +++ b/docs/Phaser.Component.LifeSpan.html @@ -708,10 +708,6 @@ ComplexPrimitiveShader -
  • - DisplayObject -
  • -
  • DisplayObjectContainer
  • @@ -744,6 +740,10 @@ PIXI +
  • + DisplayObject +
  • +
  • PixiFastShader
  • @@ -1526,7 +1526,7 @@ Called automatically by the Game Object.

    kill() → {PIXI.DisplayObject}

    + id="kill">kill() → {PIXI.DisplayObject}
    @@ -1557,7 +1557,7 @@ it doesn't destroy the object or free it up from memory.

    -PIXI.DisplayObject +PIXI.DisplayObject -
    @@ -1620,7 +1620,7 @@ it doesn't destroy the object or free it up from memory.

    revive(health) → {PIXI.DisplayObject}

    + id="revive">revive(health) → {PIXI.DisplayObject}
    @@ -1718,7 +1718,7 @@ it doesn't destroy the object or free it up from memory.

    -PIXI.DisplayObject +PIXI.DisplayObject -
    @@ -1803,7 +1803,7 @@ it doesn't destroy the object or free it up from memory.

    Documentation generated by JSDoc 3.3.3 - on Fri Jun 17 2016 12:45:31 GMT+0100 (BST) using the DocStrap template. + on Fri Jul 08 2016 15:42:37 GMT+0100 (GMT Daylight Time) using the DocStrap template. diff --git a/docs/Phaser.Component.LoadTexture.html b/docs/Phaser.Component.LoadTexture.html index 2ab6055db..7c6817f4f 100644 --- a/docs/Phaser.Component.LoadTexture.html +++ b/docs/Phaser.Component.LoadTexture.html @@ -708,10 +708,6 @@ ComplexPrimitiveShader -
  • - DisplayObject -
  • -
  • DisplayObjectContainer
  • @@ -744,6 +740,10 @@ PIXI +
  • + DisplayObject +
  • +
  • PixiFastShader
  • @@ -2068,7 +2068,7 @@ it can be useful to adjust the dimensions directly in this way.

    Documentation generated by JSDoc 3.3.3 - on Fri Jun 17 2016 12:45:31 GMT+0100 (BST) using the DocStrap template. + on Fri Jul 08 2016 15:42:37 GMT+0100 (GMT Daylight Time) using the DocStrap template. diff --git a/docs/Phaser.Component.Overlap.html b/docs/Phaser.Component.Overlap.html index 1675ccf1a..6bf6f7222 100644 --- a/docs/Phaser.Component.Overlap.html +++ b/docs/Phaser.Component.Overlap.html @@ -708,10 +708,6 @@ ComplexPrimitiveShader -
  • - DisplayObject -
  • -
  • DisplayObjectContainer
  • @@ -744,6 +740,10 @@ PIXI +
  • + DisplayObject +
  • +
  • PixiFastShader
  • @@ -1393,7 +1393,7 @@ It should be fine for low-volume testing where physics isn't required.

    Phaser.Button | -PIXI.DisplayObject +PIXI.DisplayObject @@ -1505,7 +1505,7 @@ It should be fine for low-volume testing where physics isn't required.

    Documentation generated by JSDoc 3.3.3 - on Fri Jun 17 2016 12:45:31 GMT+0100 (BST) using the DocStrap template. + on Fri Jul 08 2016 15:42:37 GMT+0100 (GMT Daylight Time) using the DocStrap template. diff --git a/docs/Phaser.Component.PhysicsBody.html b/docs/Phaser.Component.PhysicsBody.html index dedf03820..aa5c05268 100644 --- a/docs/Phaser.Component.PhysicsBody.html +++ b/docs/Phaser.Component.PhysicsBody.html @@ -708,10 +708,6 @@ ComplexPrimitiveShader -
  • - DisplayObject -
  • -
  • DisplayObjectContainer
  • @@ -744,6 +740,10 @@ PIXI +
  • + DisplayObject +
  • +
  • PixiFastShader
  • @@ -1692,7 +1692,7 @@ Called automatically by the Game Object.

    Documentation generated by JSDoc 3.3.3 - on Fri Jun 17 2016 12:45:31 GMT+0100 (BST) using the DocStrap template. + on Fri Jul 08 2016 15:42:37 GMT+0100 (GMT Daylight Time) using the DocStrap template. diff --git a/docs/Phaser.Component.Reset.html b/docs/Phaser.Component.Reset.html index 8209577b7..0db5c3aeb 100644 --- a/docs/Phaser.Component.Reset.html +++ b/docs/Phaser.Component.Reset.html @@ -708,10 +708,6 @@ ComplexPrimitiveShader -
  • - DisplayObject -
  • -
  • DisplayObjectContainer
  • @@ -744,6 +740,10 @@ PIXI +
  • + DisplayObject +
  • +
  • PixiFastShader
  • @@ -1328,7 +1328,7 @@

    reset(x, y, health) → {PIXI.DisplayObject}

    + id="reset">reset(x, y, health) → {PIXI.DisplayObject}
    @@ -1498,7 +1498,7 @@
    -PIXI.DisplayObject +PIXI.DisplayObject -
    @@ -1583,7 +1583,7 @@ Documentation generated by JSDoc 3.3.3 - on Fri Jun 17 2016 12:45:31 GMT+0100 (BST) using the DocStrap template. + on Fri Jul 08 2016 15:42:37 GMT+0100 (GMT Daylight Time) using the DocStrap template. diff --git a/docs/Phaser.Component.ScaleMinMax.html b/docs/Phaser.Component.ScaleMinMax.html index a1173b0c3..c92e34b48 100644 --- a/docs/Phaser.Component.ScaleMinMax.html +++ b/docs/Phaser.Component.ScaleMinMax.html @@ -708,10 +708,6 @@ ComplexPrimitiveShader -
  • - DisplayObject -
  • -
  • DisplayObjectContainer
  • @@ -744,6 +740,10 @@ PIXI +
  • + DisplayObject +
  • +
  • PixiFastShader
  • @@ -1792,7 +1792,7 @@ or pass null for the maxX and maxY parame Documentation generated by JSDoc 3.3.3 - on Fri Jun 17 2016 12:45:31 GMT+0100 (BST) using the DocStrap template. + on Fri Jul 08 2016 15:42:37 GMT+0100 (GMT Daylight Time) using the DocStrap template. diff --git a/docs/Phaser.Component.Smoothed.html b/docs/Phaser.Component.Smoothed.html index 211fc61bc..ba74124bb 100644 --- a/docs/Phaser.Component.Smoothed.html +++ b/docs/Phaser.Component.Smoothed.html @@ -708,10 +708,6 @@ ComplexPrimitiveShader -
  • - DisplayObject -
  • -
  • DisplayObjectContainer
  • @@ -744,6 +740,10 @@ PIXI +
  • + DisplayObject +
  • +
  • PixiFastShader
  • @@ -1408,7 +1408,7 @@ Documentation generated by JSDoc 3.3.3 - on Fri Jun 17 2016 12:45:31 GMT+0100 (BST) using the DocStrap template. + on Fri Jul 08 2016 15:42:37 GMT+0100 (GMT Daylight Time) using the DocStrap template. diff --git a/docs/Phaser.Create.html b/docs/Phaser.Create.html index ed4839f3c..4697f0dda 100644 --- a/docs/Phaser.Create.html +++ b/docs/Phaser.Create.html @@ -708,10 +708,6 @@ ComplexPrimitiveShader -
  • - DisplayObject -
  • -
  • DisplayObjectContainer
  • @@ -744,6 +740,10 @@ PIXI +
  • + DisplayObject +
  • +
  • PixiFastShader
  • @@ -2589,7 +2589,7 @@ for sprites the same way you use any other texture: game.add.sprite(0, 0, Documentation generated by JSDoc 3.3.3 - on Fri Jun 17 2016 12:45:32 GMT+0100 (BST) using the DocStrap template. + on Fri Jul 08 2016 15:42:37 GMT+0100 (GMT Daylight Time) using the DocStrap template. diff --git a/docs/Phaser.Creature.html b/docs/Phaser.Creature.html index 8c9ae7600..6512e13d4 100644 --- a/docs/Phaser.Creature.html +++ b/docs/Phaser.Creature.html @@ -708,10 +708,6 @@ ComplexPrimitiveShader -
  • - DisplayObject -
  • -
  • DisplayObjectContainer
  • @@ -744,6 +740,10 @@ PIXI +
  • + DisplayObject +
  • +
  • PixiFastShader
  • @@ -1660,67 +1660,6 @@ However you can use Group.getFirstAlive in conjunction with this pr -
    - - - -
    - - - -
    -

    alpha :Number

    - - -
    -
    - - - -
    -

    The opacity of the object.

    -
    - - - - - -
    - - - - - - - -
    Inherited From:
    -
    - - - - - - - - - - - - - -
    Source - - pixi/display/DisplayObject.js, line 46 -
    - - - - - - -
    @@ -1977,69 +1916,6 @@ or you have tested performance and find it acceptable.

    - - - - -
    - - - -
    -

    cacheAsBitmap :Boolean

    - - -
    -
    - - - -
    -

    Set if this display object is cached as a bitmap. -This basically takes a snap shot of the display object as it is at that moment. It can provide a performance benefit for complex static displayObjects. -To remove simply set this property to 'null'

    -
    - - - - - -
    - - - - - - - -
    Inherited From:
    -
    - - - - - - - - - - - - - -
    Source - - pixi/display/DisplayObject.js, line 355 -
    - - - - - - -
    @@ -2755,143 +2631,6 @@ It will also set the visible property to true.

    - - - - -
    - - - -
    -

    filterArea :Rectangle

    - - -
    -
    - - - -
    -

    The area the filter is applied to like the hitArea this is used as more of an optimisation -rather than figuring out the dimensions of the displayObject each frame you can set this rectangle

    -
    - - - - - -
    - - - - - - - -
    Inherited From:
    -
    - - - - - - - - - - - - - -
    Source - - pixi/display/DisplayObject.js, line 164 -
    - - - - - - - -
    - - - -
    - - - -
    -

    filters :Array.<Filter>

    - - -
    -
    - - - -
    -

    Sets the filters for the displayObject. -IMPORTANT: This is a webGL only feature and will be ignored by the Canvas renderer.

    -

    To remove filters simply set this property to 'null'.

    -

    You cannot have a filter and a multiply blend mode active at the same time. Setting a filter will reset -this objects blend mode to NORMAL.

    -
    - - - -
    Type:
    -
      -
    • - -Array.<Filter> - - -
    • -
    - - - -
    - - - - - - - -
    Inherited From:
    -
    - - - - - - - - - - - - - -
    Source - - pixi/display/DisplayObject.js, line 307 -
    - - - - - - -
    @@ -3144,87 +2883,6 @@ This property is mostly used internally by the physics systems, but is exposed f - - - - -
    - - - -
    -

    hitArea :Rectangle|Circle|Ellipse|Polygon

    - - -
    -
    - - - -
    -

    This is the defined area that will pick up mouse / touch events. It is null by default. -Setting it is a neat way of optimising the hitTest function that the interactionManager will use (as it will not need to hit test all the children)

    -
    - - - -
    Type:
    -
      -
    • - -Rectangle -| - -Circle -| - -Ellipse -| - -Polygon - - -
    • -
    - - - -
    - - - - - - - -
    Inherited From:
    -
    - - - - - - - - - - - - - -
    Source - - pixi/display/DisplayObject.js, line 62 -
    - - - - - - -
    @@ -3729,69 +3387,6 @@ When it reaches zero it will call the kill method.

    - - - - -
    - - - -
    -

    mask :PIXI.Graphics

    - - -
    -
    - - - -
    -

    Sets a mask for the displayObject. A mask is an object that limits the visibility of an object to the shape of the mask applied to it. -In PIXI a regular mask must be a PIXI.Graphics object. This allows for much faster masking in canvas as it utilises shape clipping. -To remove a mask, set this property to null.

    -
    - - - - - -
    - - - - - - - -
    Inherited From:
    -
    - - - - - - - - - - - - - -
    Source - - pixi/display/DisplayObject.js, line 282 -
    - - - - - - -
    @@ -3854,67 +3449,6 @@ This value isn't ever used internally by Phaser, it is meant as a game level pro - - - - -
    - - - -
    -

    <readonly> parent :PIXI.DisplayObjectContainer

    - - -
    -
    - - - -
    -

    [read-only] The display object container that contains this display object.

    -
    - - - - - -
    - - - - - - - -
    Inherited From:
    -
    - - - - - - - - - - - - - -
    Source - - pixi/display/DisplayObject.js, line 79 -
    - - - - - - -
    @@ -3979,128 +3513,6 @@ such as with Buttons or other Input events.

    - - - - -
    - - - -
    -

    pivot :Point

    - - -
    -
    - - - -
    -

    The pivot point of the displayObject that it rotates around

    -
    - - - - - -
    - - - - - - - -
    Inherited From:
    -
    - - - - - - - - - - - - - -
    Source - - pixi/display/DisplayObject.js, line 30 -
    - - - - - - - -
    - - - -
    - - - -
    -

    position :Point

    - - -
    -
    - - - -
    -

    The coordinate of the object relative to the local coordinates of the parent.

    -
    - - - - - -
    - - - - - - - -
    Inherited From:
    -
    - - - - - - - - - - - - - -
    Source - - pixi/display/DisplayObject.js, line 14 -
    - - - - - - -
    @@ -4223,67 +3635,6 @@ such as with Buttons or other Input events.

    - - - - -
    - - - -
    -

    renderable :Boolean

    - - -
    -
    - - - -
    -

    Can this object be rendered

    -
    - - - - - -
    - - - - - - - -
    Inherited From:
    -
    - - - - - - - - - - - - - -
    Source - - pixi/display/DisplayObject.js, line 71 -
    - - - - - - -
    @@ -4346,189 +3697,6 @@ This property is mostly used internally by the renderers, but is exposed for the - - - - -
    - - - -
    -

    rotation :Number

    - - -
    -
    - - - -
    -

    The rotation of the object in radians.

    -
    - - - - - -
    - - - - - - - -
    Inherited From:
    -
    - - - - - - - - - - - - - -
    Source - - pixi/display/DisplayObject.js, line 38 -
    - - - - - - - -
    - - - -
    - - - -
    -

    scale :Point

    - - -
    -
    - - - -
    -

    The scale factor of the object.

    -
    - - - - - -
    - - - - - - - -
    Inherited From:
    -
    - - - - - - - - - - - - - -
    Source - - pixi/display/DisplayObject.js, line 22 -
    - - - - - - - -
    - - - -
    - - - -
    -

    <readonly> stage :Stage

    - - -
    -
    - - - -
    -

    [read-only] The stage the display object is connected to, or undefined if it is not connected to the stage.

    -
    - - - - - -
    - - - - - - - -
    Inherited From:
    -
    - - - - - - - - - - - - - -
    Source - - pixi/display/DisplayObject.js, line 88 -
    - - - - - - -
    @@ -4826,67 +3994,6 @@ This property is mostly used internally by the renderers, but is exposed for the - - - - -
    - - - -
    -

    visible :Boolean

    - - -
    -
    - - - -
    -

    The visibility of the object.

    -
    - - - - - -
    - - - - - - - -
    Inherited From:
    -
    - - - - - - - - - - - - - -
    Source - - pixi/display/DisplayObject.js, line 54 -
    - - - - - - -
    @@ -5011,436 +4118,6 @@ which contains the x/y coordinates relative to the Game Objects parent.

    - - - - -
    - - - -
    -

    <readonly> worldAlpha :Number

    - - -
    -
    - - - -
    -

    [read-only] The multiplied alpha of the displayObject

    -
    - - - - - -
    - - - - - - - -
    Inherited From:
    -
    - - - - - - - - - - - - - -
    Source - - pixi/display/DisplayObject.js, line 97 -
    - - - - - - - -
    - - - -
    - - - -
    -

    <readonly> worldPosition :Point

    - - -
    -
    - - - -
    -

    The position of the Display Object based on the world transform. -This value is updated at the end of updateTransform and takes all parent transforms into account.

    -
    - - - - - -
    - - - - - - - -
    Inherited From:
    -
    - - - - - - - - - - - - - -
    Source - - pixi/display/DisplayObject.js, line 116 -
    - - - - - - - -
    - - - -
    - - - -
    -

    <readonly> worldRotation :Number

    - - -
    -
    - - - -
    -

    The rotation of the Display Object, in radians, based on the world transform. -This value is updated at the end of updateTransform and takes all parent transforms into account.

    -
    - - - - - -
    - - - - - - - -
    Inherited From:
    -
    - - - - - - - - - - - - - -
    Source - - pixi/display/DisplayObject.js, line 136 -
    - - - - - - - -
    - - - -
    - - - -
    -

    <readonly> worldScale :Point

    - - -
    -
    - - - -
    -

    The scale of the Display Object based on the world transform. -This value is updated at the end of updateTransform and takes all parent transforms into account.

    -
    - - - - - -
    - - - - - - - -
    Inherited From:
    -
    - - - - - - - - - - - - - -
    Source - - pixi/display/DisplayObject.js, line 126 -
    - - - - - - - -
    - - - -
    - - - -
    -

    worldVisible :Boolean

    - - -
    -
    - - - -
    -

    [read-only] Indicates if the sprite is globally visible.

    -
    - - - - - -
    - - - - - - - -
    Inherited From:
    -
    - - - - - - - - - - - - - -
    Source - - pixi/display/DisplayObject.js, line 258 -
    - - - - - - - -
    - - - -
    - - - -
    -

    x :Number

    - - -
    -
    - - - -
    -

    The position of the displayObject on the x axis relative to the local coordinates of the parent.

    -
    - - - - - -
    - - - - - - - -
    Inherited From:
    -
    - - - - - - - - - - - - - -
    Source - - pixi/display/DisplayObject.js, line 722 -
    - - - - - - - -
    - - - -
    - - - -
    -

    y :Number

    - - -
    -
    - - - -
    -

    The position of the displayObject on the y axis relative to the local coordinates of the parent.

    -
    - - - - - -
    - - - - - - - -
    Inherited From:
    -
    - - - - - - - - - - - - - -
    Source - - pixi/display/DisplayObject.js, line 740 -
    - - - - - - -
    @@ -5521,7 +4198,7 @@ If you wish to re-order the layering of a Game Object then see methods like Grou

    addChild(child) → {PIXI.DisplayObject}

    + id="addChild">addChild(child) → {DisplayObject}
    @@ -5570,7 +4247,7 @@ If you wish to re-order the layering of a Game Object then see methods like Grou -PIXI.DisplayObject +DisplayObject @@ -5597,7 +4274,7 @@ If you wish to re-order the layering of a Game Object then see methods like Grou @@ -5665,7 +4342,7 @@ If you wish to re-order the layering of a Game Object then see methods like Grou

    addChildAt(child, index) → {PIXI.DisplayObject}

    + id="addChildAt">addChildAt(child, index) → {DisplayObject}
    @@ -5714,7 +4391,7 @@ If you wish to re-order the layering of a Game Object then see methods like Grou -PIXI.DisplayObject +DisplayObject @@ -5764,7 +4441,7 @@ If you wish to re-order the layering of a Game Object then see methods like Grou @@ -5832,7 +4509,7 @@ If you wish to re-order the layering of a Game Object then see methods like Grou

    bringToTop() → {PIXI.DisplayObject}

    + id="bringToTop">bringToTop() → {PIXI.DisplayObject}
    @@ -5862,7 +4539,7 @@ because the World is the root Group from which all Game Objects descend.

    -PIXI.DisplayObject +PIXI.DisplayObject -
    @@ -5930,7 +4607,7 @@ because the World is the root Group from which all Game Objects descend.

    destroy()

    + id="destroy">destroy(destroyChildren, destroyTexture)
    @@ -5939,84 +4616,11 @@ because the World is the root Group from which all Game Objects descend.

    -

    Destroy this DisplayObject. -Removes all references to transformCallbacks, its parent, the stage, filters, bounds, mask and cached Sprites.

    -
    - - - - - - - - - - - -
    - - - - - - - -
    Inherited From:
    -
    - - - - - - - - - - - - - -
    Source - - pixi/display/DisplayObject.js, line 223 -
    - - - - - - - -
    - - - - - - - - - - - - - - - -
    -

    generateTexture(resolution, scaleMode, renderer) → {PIXI.RenderTexture}

    - - -
    -
    - - - -
    -

    Useful function that returns a texture of the displayObject object that can then be used to create sprites -This can be quite useful if your displayObject is static / complicated and needs to be reused multiple times.

    +

    Destroys the Game Object. This removes it from its parent group, destroys the input, event and animation handlers if present +and nulls its reference to game, freeing it up for garbage collection.

    +

    If this Game Object has the Events component it will also dispatch the onDestroy event.

    +

    You can optionally also destroy the BaseTexture this Game Object is using. Be careful if you've +more than one Game Object sharing the same BaseTexture.

    @@ -6038,8 +4642,12 @@ This can be quite useful if your displayObject is static / complicated and needs Type + Argument + + Default + Description @@ -6050,72 +4658,78 @@ This can be quite useful if your displayObject is static / complicated and needs - resolution + destroyChildren -Number +boolean + + + <optional>
    + + + + + -

    The resolution of the texture being generated

    + + + + true + + + + +

    Should every child of this object have its destroy method called as well?

    - scaleMode + destroyTexture -Number +boolean - - - -

    See {{#crossLink "PIXI/scaleModes:property"}}PIXI.scaleModes{{/crossLink}} for possible values

    - - - - - - - renderer - - - - + + + <optional>
    -PIXI.CanvasRenderer -| -PIXI.WebGLRenderer - - - - + + + + + + false + + + -

    The renderer used to generate the texture.

    +

    Destroy the BaseTexture this Game Object is using? Note that if another Game Object is sharing the same BaseTexture it will invalidate it.

    @@ -6125,26 +4739,6 @@ This can be quite useful if your displayObject is static / complicated and needs -
    Returns:
    -
    - - - -
    - -PIXI.RenderTexture - - - -
    - -
    -

    a texture of the graphics object

    -
    - - - -
    -
    @@ -6157,7 +4751,7 @@ This can be quite useful if your displayObject is static / complicated and needs
    Inherited From:
    @@ -6173,7 +4767,7 @@ This can be quite useful if your displayObject is static / complicated and needs
    Source - - pixi/display/DisplayObject.js, line 541 + gameobjects/components/Destroy.js, line 37
    @@ -6295,7 +4889,7 @@ This can be quite useful if your displayObject is static / complicated and needs

    getChildAt(index) → {PIXI.DisplayObject}

    + id="getChildAt">getChildAt(index) → {DisplayObject}
    @@ -6371,7 +4965,7 @@ This can be quite useful if your displayObject is static / complicated and needs @@ -6488,7 +5082,7 @@ This can be quite useful if your displayObject is static / complicated and needs -PIXI.DisplayObject +DisplayObject @@ -6651,7 +5245,7 @@ This can be quite useful if your displayObject is static / complicated and needs
    Source - - pixi/display/DisplayObjectContainer.js, line 381 + pixi/display/DisplayObjectContainer.js, line 383
    @@ -6678,7 +5272,7 @@ This can be quite useful if your displayObject is static / complicated and needs

    kill() → {PIXI.DisplayObject}

    + id="kill">kill() → {PIXI.DisplayObject}
    @@ -6709,7 +5303,7 @@ it doesn't destroy the object or free it up from memory.

    -PIXI.DisplayObject +PIXI.DisplayObject -
    @@ -6777,7 +5371,7 @@ it doesn't destroy the object or free it up from memory.

    moveDown() → {PIXI.DisplayObject}

    + id="moveDown">moveDown() → {PIXI.DisplayObject}
    @@ -6807,7 +5401,7 @@ because the World is the root Group from which all Game Objects descend.

    -PIXI.DisplayObject +PIXI.DisplayObject -
    @@ -6875,7 +5469,7 @@ because the World is the root Group from which all Game Objects descend.

    moveUp() → {PIXI.DisplayObject}

    + id="moveUp">moveUp() → {PIXI.DisplayObject}
    @@ -6905,7 +5499,7 @@ because the World is the root Group from which all Game Objects descend.

    -PIXI.DisplayObject +PIXI.DisplayObject -
    @@ -7264,7 +5858,7 @@ because the World is the root Group from which all Game Objects descend.

    removeChild(child) → {PIXI.DisplayObject}

    + id="removeChild">removeChild(child) → {DisplayObject}
    @@ -7313,7 +5907,7 @@ because the World is the root Group from which all Game Objects descend.

    -PIXI.DisplayObject +DisplayObject @@ -7340,7 +5934,7 @@ because the World is the root Group from which all Game Objects descend.

    @@ -7408,7 +6002,7 @@ because the World is the root Group from which all Game Objects descend.

    removeChildAt(index) → {PIXI.DisplayObject}

    + id="removeChildAt">removeChildAt(index) → {DisplayObject}
    @@ -7484,7 +6078,7 @@ because the World is the root Group from which all Game Objects descend.

    @@ -7747,7 +6341,7 @@ because the World is the root Group from which all Game Objects descend.

    Source - - pixi/display/DisplayObjectContainer.js, line 426 + pixi/display/DisplayObjectContainer.js, line 428
    @@ -7774,7 +6368,7 @@ because the World is the root Group from which all Game Objects descend.

    reset(x, y, health) → {PIXI.DisplayObject}

    + id="reset">reset(x, y, health) → {PIXI.DisplayObject}
    @@ -7944,7 +6538,7 @@ because the World is the root Group from which all Game Objects descend.

    -PIXI.DisplayObject +PIXI.DisplayObject -
    @@ -8012,7 +6606,7 @@ because the World is the root Group from which all Game Objects descend.

    revive(health) → {PIXI.DisplayObject}

    + id="revive">revive(health) → {PIXI.DisplayObject}
    @@ -8110,7 +6704,7 @@ because the World is the root Group from which all Game Objects descend.

    -PIXI.DisplayObject +PIXI.DisplayObject -
    @@ -8178,7 +6772,7 @@ because the World is the root Group from which all Game Objects descend.

    sendToBack() → {PIXI.DisplayObject}

    + id="sendToBack">sendToBack() → {PIXI.DisplayObject}
    @@ -8208,7 +6802,7 @@ because the World is the root Group from which all Game Objects descend.

    -PIXI.DisplayObject +PIXI.DisplayObject -
    @@ -8444,7 +7038,7 @@ because the World is the root Group from which all Game Objects descend.

    -PIXI.DisplayObject +DisplayObject @@ -8639,7 +7233,7 @@ because the World is the root Group from which all Game Objects descend.

    Source - - pixi/display/DisplayObjectContainer.js, line 410 + pixi/display/DisplayObjectContainer.js, line 412
    @@ -8785,7 +7379,7 @@ because the World is the root Group from which all Game Objects descend.

    -PIXI.DisplayObject +DisplayObject @@ -8808,7 +7402,7 @@ because the World is the root Group from which all Game Objects descend.

    -PIXI.DisplayObject +DisplayObject @@ -8877,337 +7471,6 @@ because the World is the root Group from which all Game Objects descend.

    -
    - - - -
    -

    toGlobal(position) → {Point}

    - - -
    -
    - - - -
    -

    Calculates the global position of the display object

    -
    - - - - - - - -
    Parameters:
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    NameTypeDescription
    position - - -Point - - - -

    The world origin to calculate from

    - - - - -
    Returns:
    -
    - - - -
    - -Point - - - -
    - -
    -

    A point object representing the position of this object

    -
    - - - -
    - - - -
    - - - - - - - -
    Inherited From:
    -
    - - - - - - - - - - - - - -
    Source - - pixi/display/DisplayObject.js, line 575 -
    - - - - - - - -
    - - - - - - - - - - - -
    - - - -
    -

    toLocal(position, from) → {Point}

    - - -
    -
    - - - -
    -

    Calculates the local position of the display object relative to another point

    -
    - - - - - - - -
    Parameters:
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    NameTypeArgumentDescription
    position - - -Point - - - - - - - - - -

    The world origin to calculate from

    from - - -PIXI.DisplayObject - - - - - - <optional>
    - - - - - -

    The DisplayObject to calculate the global position from

    - - - - -
    Returns:
    -
    - - - -
    - -Point - - - -
    - -
    -

    A point object representing the position of this object

    -
    - - - -
    - - - -
    - - - - - - - -
    Inherited From:
    -
    - - - - - - - - - - - - - -
    Source - - pixi/display/DisplayObject.js, line 589 -
    - - - - - - - -
    - - - - - - - - - - -
    @@ -9285,81 +7548,6 @@ Remember if this Game Object has any children you should call update on those to - - - - -
    -

    updateCache()

    - - -
    -
    - - - -
    -

    Generates and updates the cached sprite for this object.

    -
    - - - - - - - - - - - -
    - - - - - - - -
    Inherited From:
    -
    - - - - - - - - - - - - - -
    Source - - pixi/display/DisplayObject.js, line 565 -
    - - - - - - - -
    - - - - - - - - - - -
    @@ -9388,7 +7576,7 @@ Remember if this Game Object has any children you should call update on those to Documentation generated by JSDoc 3.3.3 - on Fri Jun 17 2016 12:45:32 GMT+0100 (BST) using the DocStrap template. + on Fri Jul 08 2016 15:42:37 GMT+0100 (GMT Daylight Time) using the DocStrap template. diff --git a/docs/Phaser.DOM.html b/docs/Phaser.DOM.html index fb44a7d08..e542da213 100644 --- a/docs/Phaser.DOM.html +++ b/docs/Phaser.DOM.html @@ -708,10 +708,6 @@ ComplexPrimitiveShader -
  • - DisplayObject -
  • -
  • DisplayObjectContainer
  • @@ -744,6 +740,10 @@ PIXI +
  • + DisplayObject +
  • +
  • PixiFastShader
  • @@ -2829,7 +2829,7 @@ inLayoutViewport(element, -100) is true if the element is in the vi Documentation generated by JSDoc 3.3.3 - on Fri Jun 17 2016 12:45:32 GMT+0100 (BST) using the DocStrap template. + on Fri Jul 08 2016 15:42:37 GMT+0100 (GMT Daylight Time) using the DocStrap template. diff --git a/docs/Phaser.Device.html b/docs/Phaser.Device.html index 64a9f49fc..78275975f 100644 --- a/docs/Phaser.Device.html +++ b/docs/Phaser.Device.html @@ -708,10 +708,6 @@ ComplexPrimitiveShader -
  • - DisplayObject -
  • -
  • DisplayObjectContainer
  • @@ -744,6 +740,10 @@ PIXI +
  • + DisplayObject +
  • +
  • PixiFastShader
  • @@ -6581,7 +6581,7 @@ It used to work in Chrome, but then they removed the ability: Documentation generated by JSDoc 3.3.3 - on Fri Jun 17 2016 12:45:32 GMT+0100 (BST) using the DocStrap template. + on Fri Jul 08 2016 15:42:37 GMT+0100 (GMT Daylight Time) using the DocStrap template. diff --git a/docs/Phaser.DeviceButton.html b/docs/Phaser.DeviceButton.html index 41ead7958..cc910e2c5 100644 --- a/docs/Phaser.DeviceButton.html +++ b/docs/Phaser.DeviceButton.html @@ -708,10 +708,6 @@ ComplexPrimitiveShader -
  • - DisplayObject -
  • -
  • DisplayObjectContainer
  • @@ -744,6 +740,10 @@ PIXI +
  • + DisplayObject +
  • +
  • PixiFastShader
  • @@ -3351,7 +3351,7 @@ Handles the button up state.

    Documentation generated by JSDoc 3.3.3 - on Fri Jun 17 2016 12:45:32 GMT+0100 (BST) using the DocStrap template. + on Fri Jul 08 2016 15:42:37 GMT+0100 (GMT Daylight Time) using the DocStrap template. diff --git a/docs/Phaser.Easing.Back.html b/docs/Phaser.Easing.Back.html index ea0c94e8f..789851d51 100644 --- a/docs/Phaser.Easing.Back.html +++ b/docs/Phaser.Easing.Back.html @@ -708,10 +708,6 @@ ComplexPrimitiveShader -
  • - DisplayObject -
  • -
  • DisplayObjectContainer
  • @@ -744,6 +740,10 @@ PIXI +
  • + DisplayObject +
  • +
  • PixiFastShader
  • @@ -1767,7 +1767,7 @@ Documentation generated by JSDoc 3.3.3 - on Fri Jun 17 2016 12:45:32 GMT+0100 (BST) using the DocStrap template. + on Fri Jul 08 2016 15:42:37 GMT+0100 (GMT Daylight Time) using the DocStrap template. diff --git a/docs/Phaser.Easing.Bounce.html b/docs/Phaser.Easing.Bounce.html index 463a45719..1a95ffc4d 100644 --- a/docs/Phaser.Easing.Bounce.html +++ b/docs/Phaser.Easing.Bounce.html @@ -708,10 +708,6 @@ ComplexPrimitiveShader -
  • - DisplayObject -
  • -
  • DisplayObjectContainer
  • @@ -744,6 +740,10 @@ PIXI +
  • + DisplayObject +
  • +
  • PixiFastShader
  • @@ -1767,7 +1767,7 @@ Documentation generated by JSDoc 3.3.3 - on Fri Jun 17 2016 12:45:32 GMT+0100 (BST) using the DocStrap template. + on Fri Jul 08 2016 15:42:37 GMT+0100 (GMT Daylight Time) using the DocStrap template. diff --git a/docs/Phaser.Easing.Circular.html b/docs/Phaser.Easing.Circular.html index 6cb12e574..d6c5f68d4 100644 --- a/docs/Phaser.Easing.Circular.html +++ b/docs/Phaser.Easing.Circular.html @@ -708,10 +708,6 @@ ComplexPrimitiveShader -
  • - DisplayObject -
  • -
  • DisplayObjectContainer
  • @@ -744,6 +740,10 @@ PIXI +
  • + DisplayObject +
  • +
  • PixiFastShader
  • @@ -1767,7 +1767,7 @@ Documentation generated by JSDoc 3.3.3 - on Fri Jun 17 2016 12:45:32 GMT+0100 (BST) using the DocStrap template. + on Fri Jul 08 2016 15:42:37 GMT+0100 (GMT Daylight Time) using the DocStrap template. diff --git a/docs/Phaser.Easing.Cubic.html b/docs/Phaser.Easing.Cubic.html index 1655ff403..8552bb53d 100644 --- a/docs/Phaser.Easing.Cubic.html +++ b/docs/Phaser.Easing.Cubic.html @@ -708,10 +708,6 @@ ComplexPrimitiveShader -
  • - DisplayObject -
  • -
  • DisplayObjectContainer
  • @@ -744,6 +740,10 @@ PIXI +
  • + DisplayObject +
  • +
  • PixiFastShader
  • @@ -1767,7 +1767,7 @@ Documentation generated by JSDoc 3.3.3 - on Fri Jun 17 2016 12:45:32 GMT+0100 (BST) using the DocStrap template. + on Fri Jul 08 2016 15:42:37 GMT+0100 (GMT Daylight Time) using the DocStrap template. diff --git a/docs/Phaser.Easing.Elastic.html b/docs/Phaser.Easing.Elastic.html index 77bbb7af3..ab29e9b95 100644 --- a/docs/Phaser.Easing.Elastic.html +++ b/docs/Phaser.Easing.Elastic.html @@ -708,10 +708,6 @@ ComplexPrimitiveShader -
  • - DisplayObject -
  • -
  • DisplayObjectContainer
  • @@ -744,6 +740,10 @@ PIXI +
  • + DisplayObject +
  • +
  • PixiFastShader
  • @@ -1767,7 +1767,7 @@ Documentation generated by JSDoc 3.3.3 - on Fri Jun 17 2016 12:45:32 GMT+0100 (BST) using the DocStrap template. + on Fri Jul 08 2016 15:42:37 GMT+0100 (GMT Daylight Time) using the DocStrap template. diff --git a/docs/Phaser.Easing.Exponential.html b/docs/Phaser.Easing.Exponential.html index c669bdf13..5ebfe30d2 100644 --- a/docs/Phaser.Easing.Exponential.html +++ b/docs/Phaser.Easing.Exponential.html @@ -708,10 +708,6 @@ ComplexPrimitiveShader -
  • - DisplayObject -
  • -
  • DisplayObjectContainer
  • @@ -744,6 +740,10 @@ PIXI +
  • + DisplayObject +
  • +
  • PixiFastShader
  • @@ -1767,7 +1767,7 @@ Documentation generated by JSDoc 3.3.3 - on Fri Jun 17 2016 12:45:32 GMT+0100 (BST) using the DocStrap template. + on Fri Jul 08 2016 15:42:37 GMT+0100 (GMT Daylight Time) using the DocStrap template. diff --git a/docs/Phaser.Easing.Linear.html b/docs/Phaser.Easing.Linear.html index 2ffdac2b2..a4ef6cfc2 100644 --- a/docs/Phaser.Easing.Linear.html +++ b/docs/Phaser.Easing.Linear.html @@ -708,10 +708,6 @@ ComplexPrimitiveShader -
  • - DisplayObject -
  • -
  • DisplayObjectContainer
  • @@ -744,6 +740,10 @@ PIXI +
  • + DisplayObject +
  • +
  • PixiFastShader
  • @@ -1489,7 +1489,7 @@ Documentation generated by JSDoc 3.3.3 - on Fri Jun 17 2016 12:45:32 GMT+0100 (BST) using the DocStrap template. + on Fri Jul 08 2016 15:42:38 GMT+0100 (GMT Daylight Time) using the DocStrap template. diff --git a/docs/Phaser.Easing.Quadratic.html b/docs/Phaser.Easing.Quadratic.html index ce948ac2a..c10f80e58 100644 --- a/docs/Phaser.Easing.Quadratic.html +++ b/docs/Phaser.Easing.Quadratic.html @@ -708,10 +708,6 @@ ComplexPrimitiveShader -
  • - DisplayObject -
  • -
  • DisplayObjectContainer
  • @@ -744,6 +740,10 @@ PIXI +
  • + DisplayObject +
  • +
  • PixiFastShader
  • @@ -1767,7 +1767,7 @@ Documentation generated by JSDoc 3.3.3 - on Fri Jun 17 2016 12:45:32 GMT+0100 (BST) using the DocStrap template. + on Fri Jul 08 2016 15:42:38 GMT+0100 (GMT Daylight Time) using the DocStrap template. diff --git a/docs/Phaser.Easing.Quartic.html b/docs/Phaser.Easing.Quartic.html index a1180f64e..e593bafe0 100644 --- a/docs/Phaser.Easing.Quartic.html +++ b/docs/Phaser.Easing.Quartic.html @@ -708,10 +708,6 @@ ComplexPrimitiveShader -
  • - DisplayObject -
  • -
  • DisplayObjectContainer
  • @@ -744,6 +740,10 @@ PIXI +
  • + DisplayObject +
  • +
  • PixiFastShader
  • @@ -1767,7 +1767,7 @@ Documentation generated by JSDoc 3.3.3 - on Fri Jun 17 2016 12:45:32 GMT+0100 (BST) using the DocStrap template. + on Fri Jul 08 2016 15:42:38 GMT+0100 (GMT Daylight Time) using the DocStrap template. diff --git a/docs/Phaser.Easing.Quintic.html b/docs/Phaser.Easing.Quintic.html index 04ffc2e46..c5f8f9539 100644 --- a/docs/Phaser.Easing.Quintic.html +++ b/docs/Phaser.Easing.Quintic.html @@ -708,10 +708,6 @@ ComplexPrimitiveShader -
  • - DisplayObject -
  • -
  • DisplayObjectContainer
  • @@ -744,6 +740,10 @@ PIXI +
  • + DisplayObject +
  • +
  • PixiFastShader
  • @@ -1767,7 +1767,7 @@ Documentation generated by JSDoc 3.3.3 - on Fri Jun 17 2016 12:45:32 GMT+0100 (BST) using the DocStrap template. + on Fri Jul 08 2016 15:42:38 GMT+0100 (GMT Daylight Time) using the DocStrap template. diff --git a/docs/Phaser.Easing.Sinusoidal.html b/docs/Phaser.Easing.Sinusoidal.html index 8250ad61d..8a78d889e 100644 --- a/docs/Phaser.Easing.Sinusoidal.html +++ b/docs/Phaser.Easing.Sinusoidal.html @@ -708,10 +708,6 @@ ComplexPrimitiveShader -
  • - DisplayObject -
  • -
  • DisplayObjectContainer
  • @@ -744,6 +740,10 @@ PIXI +
  • + DisplayObject +
  • +
  • PixiFastShader
  • @@ -1767,7 +1767,7 @@ Documentation generated by JSDoc 3.3.3 - on Fri Jun 17 2016 12:45:32 GMT+0100 (BST) using the DocStrap template. + on Fri Jul 08 2016 15:42:38 GMT+0100 (GMT Daylight Time) using the DocStrap template. diff --git a/docs/Phaser.Easing.html b/docs/Phaser.Easing.html index fb13c4708..50867efa3 100644 --- a/docs/Phaser.Easing.html +++ b/docs/Phaser.Easing.html @@ -708,10 +708,6 @@ ComplexPrimitiveShader -
  • - DisplayObject -
  • -
  • DisplayObjectContainer
  • @@ -744,6 +740,10 @@ PIXI +
  • + DisplayObject +
  • +
  • PixiFastShader
  • @@ -1440,7 +1440,7 @@ Documentation generated by JSDoc 3.3.3 - on Fri Jun 17 2016 12:45:32 GMT+0100 (BST) using the DocStrap template. + on Fri Jul 08 2016 15:42:37 GMT+0100 (GMT Daylight Time) using the DocStrap template. diff --git a/docs/Phaser.Ellipse.html b/docs/Phaser.Ellipse.html index ec823a792..85bc5111f 100644 --- a/docs/Phaser.Ellipse.html +++ b/docs/Phaser.Ellipse.html @@ -708,10 +708,6 @@ ComplexPrimitiveShader -
  • - DisplayObject -
  • -
  • DisplayObjectContainer
  • @@ -744,6 +740,10 @@ PIXI +
  • + DisplayObject +
  • +
  • PixiFastShader
  • @@ -3408,7 +3408,7 @@ If set to true it will reset all of the Ellipse objects properties to 0. An Elli Documentation generated by JSDoc 3.3.3 - on Fri Jun 17 2016 12:45:32 GMT+0100 (BST) using the DocStrap template. + on Fri Jul 08 2016 15:42:38 GMT+0100 (GMT Daylight Time) using the DocStrap template. diff --git a/docs/Phaser.Events.html b/docs/Phaser.Events.html index eed355648..da5ec8e43 100644 --- a/docs/Phaser.Events.html +++ b/docs/Phaser.Events.html @@ -708,10 +708,6 @@ ComplexPrimitiveShader -
  • - DisplayObject -
  • -
  • DisplayObjectContainer
  • @@ -744,6 +740,10 @@ PIXI +
  • + DisplayObject +
  • +
  • PixiFastShader
  • @@ -1249,7 +1249,7 @@
    -

    The Events component is a collection of events fired by the parent game object.

    +

    The Events component is a collection of events fired by the parent Game Object.

    Phaser uses what are known as 'Signals' for all event handling. All of the events in this class are signals you can subscribe to, much in the same way you'd "listen" for an event.

    @@ -1394,7 +1394,10 @@ and the Animation-related events only apply to game objects with animations like
    -

    This signal is dispatched when the parent is added to a new Group.

    +

    This signal is dispatched when this Game Object is added to a new Group. +It is sent two arguments: +{any} The Game Object that was added to the Group. +{Phaser.Group} The Group it was added to.

    @@ -1422,7 +1425,7 @@ and the Animation-related events only apply to game objects with animations like
    Source - - gameobjects/components/Events.js, line 80 + gameobjects/components/Events.js, line 84
    @@ -1450,7 +1453,12 @@ and the Animation-related events only apply to game objects with animations like
    -

    This signal is dispatched when the parent has an animation that finishes playing.

    +

    This signal is dispatched if the Game Object has the AnimationManager component, +and an Animation has been stopped (via animation.stop() and the dispatchComplete argument has been set. +You can also listen to Animation.onComplete rather than via the Game Objects events. +It is sent two arguments: +{any} The Game Object that received the event. +{Phaser.Animation} The Phaser.Animation that was stopped.

    @@ -1478,7 +1486,7 @@ and the Animation-related events only apply to game objects with animations like
    Source - - gameobjects/components/Events.js, line 160 + gameobjects/components/Events.js, line 249
    @@ -1506,7 +1514,12 @@ and the Animation-related events only apply to game objects with animations like
    -

    This signal is dispatched when the parent has an animation that loops playback.

    +

    This signal is dispatched if the Game Object has the AnimationManager component, +and an Animation has looped playback. +You can also listen to Animation.onLoop rather than via the Game Objects events. +It is sent two arguments: +{any} The Game Object that received the event. +{Phaser.Animation} The Phaser.Animation that looped.

    @@ -1534,7 +1547,7 @@ and the Animation-related events only apply to game objects with animations like
    Source - - gameobjects/components/Events.js, line 165 + gameobjects/components/Events.js, line 260
    @@ -1562,7 +1575,12 @@ and the Animation-related events only apply to game objects with animations like
    -

    This signal is dispatched when the parent has an animation that is played.

    +

    This signal is dispatched if the Game Object has the AnimationManager component, +and an Animation has been played. +You can also listen to Animation.onStart rather than via the Game Objects events. +It is sent two arguments: +{any} The Game Object that received the event. +{Phaser.Animation} The Phaser.Animation that was started.

    @@ -1590,7 +1608,7 @@ and the Animation-related events only apply to game objects with animations like
    Source - - gameobjects/components/Events.js, line 155 + gameobjects/components/Events.js, line 238
    @@ -1618,7 +1636,10 @@ and the Animation-related events only apply to game objects with animations like
    -

    This signal is dispatched when the parent is destroyed.

    +

    This signal is dispatched when the Game Object is destroyed. +This happens when Sprite.destroy() is called, or Group.destroy() with destroyChildren set to true. +It is sent one argument: +{any} The Game Object that was destroyed.

    @@ -1646,7 +1667,7 @@ and the Animation-related events only apply to game objects with animations like
    Source - - gameobjects/components/Events.js, line 95 + gameobjects/components/Events.js, line 109
    @@ -1674,7 +1695,14 @@ and the Animation-related events only apply to game objects with animations like
    -

    This signal is dispatched if the parent is inputEnabled and receives a drag start event from a Pointer.

    +

    This signal is dispatched if the Game Object has been inputEnabled and enableDrag has been set. +It is sent when a Phaser.Pointer starts to drag the Game Object, taking into consideration the various +drag limitations that may be set. +It is sent four arguments: +{any} The Game Object that received the event. +{Phaser.Pointer} The Phaser.Pointer object that caused the event. +{number} The x coordinate that the drag started from. +{number} The y coordinate that the drag started from.

    @@ -1702,7 +1730,7 @@ and the Animation-related events only apply to game objects with animations like
    Source - - gameobjects/components/Events.js, line 140 + gameobjects/components/Events.js, line 202
    @@ -1730,7 +1758,11 @@ and the Animation-related events only apply to game objects with animations like
    -

    This signal is dispatched if the parent is inputEnabled and receives a drag stop event from a Pointer.

    +

    This signal is dispatched if the Game Object has been inputEnabled and enableDrag has been set. +It is sent when a Phaser.Pointer stops dragging the Game Object. +It is sent two arguments: +{any} The Game Object that received the event. +{Phaser.Pointer} The Phaser.Pointer object that caused the event.

    @@ -1758,7 +1790,7 @@ and the Animation-related events only apply to game objects with animations like
    Source - - gameobjects/components/Events.js, line 150 + gameobjects/components/Events.js, line 227
    @@ -1786,7 +1818,16 @@ and the Animation-related events only apply to game objects with animations like
    -

    This signal is dispatched if the parent is inputEnabled and receives a drag update event from a Pointer.

    +

    This signal is dispatched if the Game Object has been inputEnabled and enableDrag has been set. +It is sent when a Phaser.Pointer is actively dragging the Game Object. +Be warned: This is a high volume Signal. Be careful what you bind to it. +It is sent six arguments: +{any} The Game Object that received the event. +{Phaser.Pointer} The Phaser.Pointer object that caused the event. +{number} The new x coordinate of the Game Object. +{number} The new y coordinate of the Game Object. +{Phaser.Point} A Point object that contains the point the Game Object was snapped to, if snapOnDrag has been enabled. +{boolean} The fromStart boolean, indicates if this is the first update immediately after the drag has started.

    @@ -1814,7 +1855,7 @@ and the Animation-related events only apply to game objects with animations like
    Source - - gameobjects/components/Events.js, line 145 + gameobjects/components/Events.js, line 217
    @@ -1842,7 +1883,10 @@ and the Animation-related events only apply to game objects with animations like
    -

    This signal is dispatched when the parent returns within the world bounds (only if Sprite.checkWorldBounds is true).

    +

    This signal is dispatched when the Game Object returns within the Phaser.World bounds, having previously been outside of them. +This signal is only if Sprite.checkWorldBounds is set to true. +It is sent one argument: +{any} The Game Object that entered the World bounds.

    @@ -1870,7 +1914,7 @@ and the Animation-related events only apply to game objects with animations like
    Source - - gameobjects/components/Events.js, line 115 + gameobjects/components/Events.js, line 146
    @@ -1898,7 +1942,12 @@ and the Animation-related events only apply to game objects with animations like
    -

    This signal is dispatched if the parent is inputEnabled and receives a down event from a Pointer.

    +

    This signal is dispatched if the Game Object has inputEnabled set to true, +and receives a down event from a Phaser.Pointer. This effectively means the Pointer has been +pressed down (but not yet released) on the Game Object. +It is sent two arguments: +{any} The Game Object that received the event. +{Phaser.Pointer} The Phaser.Pointer object that caused the event.

    @@ -1926,7 +1975,7 @@ and the Animation-related events only apply to game objects with animations like
    Source - - gameobjects/components/Events.js, line 130 + gameobjects/components/Events.js, line 177
    @@ -1954,7 +2003,11 @@ and the Animation-related events only apply to game objects with animations like
    -

    This signal is dispatched if the parent is inputEnabled and receives an out event from a Pointer.

    +

    This signal is dispatched if the Game Object has inputEnabled set to true, +and receives an out event from a Phaser.Pointer, which was previously over it. +It is sent two arguments: +{any} The Game Object that received the event. +{Phaser.Pointer} The Phaser.Pointer object that caused the event.

    @@ -1982,7 +2035,7 @@ and the Animation-related events only apply to game objects with animations like
    Source - - gameobjects/components/Events.js, line 125 + gameobjects/components/Events.js, line 166
    @@ -2010,7 +2063,11 @@ and the Animation-related events only apply to game objects with animations like
    -

    This signal is dispatched if the parent is inputEnabled and receives an over event from a Pointer.

    +

    This signal is dispatched if the Game Object has inputEnabled set to true, +and receives an over event from a Phaser.Pointer. +It is sent two arguments: +{any} The Game Object that received the event. +{Phaser.Pointer} The Phaser.Pointer object that caused the event.

    @@ -2038,7 +2095,7 @@ and the Animation-related events only apply to game objects with animations like
    Source - - gameobjects/components/Events.js, line 120 + gameobjects/components/Events.js, line 156
    @@ -2066,7 +2123,13 @@ and the Animation-related events only apply to game objects with animations like
    -

    This signal is dispatched if the parent is inputEnabled and receives an up event from a Pointer.

    +

    This signal is dispatched if the Game Object has inputEnabled set to true, +and receives an up event from a Phaser.Pointer. This effectively means the Pointer had been +pressed down, and was then released on the Game Object. +It is sent three arguments: +{any} The Game Object that received the event. +{Phaser.Pointer} The Phaser.Pointer object that caused the event. +{boolean} isOver - Is the Pointer still over the Game Object?

    @@ -2094,7 +2157,7 @@ and the Animation-related events only apply to game objects with animations like
    Source - - gameobjects/components/Events.js, line 135 + gameobjects/components/Events.js, line 189
    @@ -2122,7 +2185,11 @@ and the Animation-related events only apply to game objects with animations like
    -

    This signal is dispatched when the parent is killed.

    +

    This signal is dispatched when the Game Object is killed. +This happens when Sprite.kill() is called. +Please understand the difference between kill and destroy by looking at their respective methods. +It is sent one argument: +{any} The Game Object that was killed.

    @@ -2149,6 +2216,191 @@ and the Animation-related events only apply to game objects with animations like +
    Source - + gameobjects/components/Events.js, line 119 +
    + + + + + + + + + + + + + + + +
    +

    onOutOfBounds :Phaser.Signal

    + + +
    +
    + + + +
    +

    This signal is dispatched when the Game Object leaves the Phaser.World bounds. +This signal is only if Sprite.checkWorldBounds is set to true. +It is sent one argument: +{any} The Game Object that left the World bounds.

    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + +
    Source - + gameobjects/components/Events.js, line 137 +
    + + + + + + + +
    + + + +
    + + + +
    +

    onRemovedFromGroup :Phaser.Signal

    + + +
    +
    + + + +
    +

    This signal is dispatched when the Game Object is removed from a Group. +It is sent two arguments: +{any} The Game Object that was removed from the Group. +{Phaser.Group} The Group it was removed from.

    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + +
    Source - + gameobjects/components/Events.js, line 93 +
    + + + + + + + +
    + + + +
    + + + +
    +

    onRemovedFromWorld :Phaser.Signal

    + + +
    +
    + +
    + This method is deprecated and should not be used. It may be removed in the future. +
    + + + +
    +

    This Signal is never used internally by Phaser and is now deprecated.

    +
    + + + + + +
    + + + + + + + + + +
    Deprecated:
    +
      + + +
    • Yes
    • +
    + + + + + + + + + + +
    Source - gameobjects/components/Events.js, line 100
    @@ -2159,174 +2411,6 @@ and the Animation-related events only apply to game objects with animations like -
    - - - - - - - -
    -

    onOutOfBounds :Phaser.Signal

    - - -
    -
    - - - -
    -

    This signal is dispatched when the parent leaves the world bounds (only if Sprite.checkWorldBounds is true).

    -
    - - - - - -
    - - - - - - - - - - - - - - - - - - - -
    Source - - gameobjects/components/Events.js, line 110 -
    - - - - - - - -
    - - - -
    - - - -
    -

    onRemovedFromGroup :Phaser.Signal

    - - -
    -
    - - - -
    -

    This signal is dispatched when the parent is removed from a Group.

    -
    - - - - - -
    - - - - - - - - - - - - - - - - - - - -
    Source - - gameobjects/components/Events.js, line 85 -
    - - - - - - - -
    - - - -
    - - - -
    -

    onRemovedFromWorld :Phaser.Signal

    - - -
    -
    - - - -
    -

    This signal is dispatched if this item or any of its parents are removed from the game world.

    -
    - - - - - -
    - - - - - - - - - - - - - - - - - - - -
    Source - - gameobjects/components/Events.js, line 90 -
    - - - - - - -
    @@ -2346,7 +2430,10 @@ and the Animation-related events only apply to game objects with animations like
    -

    This signal is dispatched when the parent is revived.

    +

    This signal is dispatched when the Game Object is revived from a previously killed state. +This happens when Sprite.revive() is called. +It is sent one argument: +{any} The Game Object that was revived.

    @@ -2374,7 +2461,7 @@ and the Animation-related events only apply to game objects with animations like
    Source - - gameobjects/components/Events.js, line 105 + gameobjects/components/Events.js, line 128
    @@ -2547,7 +2634,7 @@ and the Animation-related events only apply to game objects with animations like Documentation generated by JSDoc 3.3.3 - on Fri Jun 17 2016 12:45:32 GMT+0100 (BST) using the DocStrap template. + on Fri Jul 08 2016 15:42:38 GMT+0100 (GMT Daylight Time) using the DocStrap template.
    diff --git a/docs/Phaser.Filter.html b/docs/Phaser.Filter.html index 1008cf7ec..8a2b979a1 100644 --- a/docs/Phaser.Filter.html +++ b/docs/Phaser.Filter.html @@ -708,10 +708,6 @@ ComplexPrimitiveShader -
  • - DisplayObject -
  • -
  • DisplayObjectContainer
  • @@ -744,6 +740,10 @@ PIXI +
  • + DisplayObject +
  • +
  • PixiFastShader
  • @@ -2741,7 +2741,7 @@ values.

    Documentation generated by JSDoc 3.3.3 - on Fri Jun 17 2016 12:45:33 GMT+0100 (BST) using the DocStrap template. + on Fri Jul 08 2016 15:42:38 GMT+0100 (GMT Daylight Time) using the DocStrap template. diff --git a/docs/Phaser.FlexGrid.html b/docs/Phaser.FlexGrid.html index 1a40008dc..6f453ac19 100644 --- a/docs/Phaser.FlexGrid.html +++ b/docs/Phaser.FlexGrid.html @@ -708,10 +708,6 @@ ComplexPrimitiveShader -
  • - DisplayObject -
  • -
  • DisplayObjectContainer
  • @@ -744,6 +740,10 @@ PIXI +
  • + DisplayObject +
  • +
  • PixiFastShader
  • @@ -1864,7 +1864,7 @@ to provide for game object positioning in a responsive manner.

    -Array.<PIXI.DisplayObject> +Array.<PIXI.DisplayObject> @@ -2015,7 +2015,7 @@ to provide for game object positioning in a responsive manner.

    -Array.<PIXI.DisplayObject> +Array.<PIXI.DisplayObject> @@ -3052,7 +3052,7 @@ to provide for game object positioning in a responsive manner.

    Documentation generated by JSDoc 3.3.3 - on Fri Jun 17 2016 12:45:33 GMT+0100 (BST) using the DocStrap template. + on Fri Jul 08 2016 15:42:38 GMT+0100 (GMT Daylight Time) using the DocStrap template. diff --git a/docs/Phaser.FlexLayer.html b/docs/Phaser.FlexLayer.html index f388cba25..99bafb9a8 100644 --- a/docs/Phaser.FlexLayer.html +++ b/docs/Phaser.FlexLayer.html @@ -708,10 +708,6 @@ ComplexPrimitiveShader -
  • - DisplayObject -
  • -
  • DisplayObjectContainer
  • @@ -744,6 +740,10 @@ PIXI +
  • + DisplayObject +
  • +
  • PixiFastShader
  • @@ -1559,7 +1559,7 @@ This is also why the documentation is incomplete.

    Source - - core/Group.js, line 2646 + core/Group.js, line 2945
    @@ -1623,7 +1623,74 @@ and on-screen orientation and position.

    Source - - core/Group.js, line 2578 + core/Group.js, line 2594 +
    + + + + + + + + + + + + + + + +
    +

    bottom :number

    + + +
    +
    + + + +
    +

    The bottom coordinate of this Group.

    +

    It is derived by calling getBounds, calculating the Groups dimensions based on its +visible children.

    +

    Note that no ancestors are factored into the result, meaning that if this Group is +nested within another Group, with heavy transforms on it, the result of this property +is likely to be incorrect. It is safe to get and set this property if the Group is a +top-level descendant of Phaser.World, or untransformed parents.

    +
    + + + + + +
    + + + + + + + +
    Inherited From:
    +
    + + + + + + + + + + + + + +
    Source - + core/Group.js, line 2782
    @@ -1840,69 +1907,6 @@ and on-screen orientation and position.

    -
    - - - -
    - - - -
    -

    cacheAsBitmap :Boolean

    - - -
    -
    - - - -
    -

    Set if this display object is cached as a bitmap. -This basically takes a snap shot of the display object as it is at that moment. It can provide a performance benefit for complex static displayObjects. -To remove simply set this property to 'null'

    -
    - - - - - -
    - - - - - - - -
    Inherited From:
    -
    - - - - - - - - - - - - - -
    Source - - pixi/display/DisplayObject.js, line 355 -
    - - - - - - -
    @@ -1965,6 +1969,140 @@ If the parent of this Group is also fixedToCamera then the offset h + + + + +
    + + + +
    +

    centerX :number

    + + +
    +
    + + + +
    +

    The center x coordinate of this Group.

    +

    It is derived by calling getBounds, calculating the Groups dimensions based on its +visible children.

    +

    Note that no ancestors are factored into the result, meaning that if this Group is +nested within another Group, with heavy transforms on it, the result of this property +is likely to be incorrect. It is safe to get and set this property if the Group is a +top-level descendant of Phaser.World, or untransformed parents.

    +
    + + + + + +
    + + + + + + + +
    Inherited From:
    +
    + + + + + + + + + + + + + +
    Source - + core/Group.js, line 2617 +
    + + + + + + + +
    + + + +
    + + + +
    +

    centerY :number

    + + +
    +
    + + + +
    +

    The center y coordinate of this Group.

    +

    It is derived by calling getBounds, calculating the Groups dimensions based on its +visible children.

    +

    Note that no ancestors are factored into the result, meaning that if this Group is +nested within another Group, with heavy transforms on it, the result of this property +is likely to be incorrect. It is safe to get and set this property if the Group is a +top-level descendant of Phaser.World, or untransformed parents.

    +
    + + + + + +
    + + + + + + + +
    Inherited From:
    +
    + + + + + + + + + + + + + +
    Source - + core/Group.js, line 2650 +
    + + + + + + +
    @@ -2414,143 +2552,6 @@ when a new object is created it is passed the following parameters to its constr - - - - -
    - - - -
    -

    filterArea :Rectangle

    - - -
    -
    - - - -
    -

    The area the filter is applied to like the hitArea this is used as more of an optimisation -rather than figuring out the dimensions of the displayObject each frame you can set this rectangle

    -
    - - - - - -
    - - - - - - - -
    Inherited From:
    -
    - - - - - - - - - - - - - -
    Source - - pixi/display/DisplayObject.js, line 164 -
    - - - - - - - -
    - - - -
    - - - -
    -

    filters :Array.<Filter>

    - - -
    -
    - - - -
    -

    Sets the filters for the displayObject. -IMPORTANT: This is a webGL only feature and will be ignored by the Canvas renderer.

    -

    To remove filters simply set this property to 'null'.

    -

    You cannot have a filter and a multiply blend mode active at the same time. Setting a filter will reset -this objects blend mode to NORMAL.

    -
    - - - -
    Type:
    -
      -
    • - -Array.<Filter> - - -
    • -
    - - - -
    - - - - - - - -
    Inherited From:
    -
    - - - - - - - - - - - - - -
    Source - - pixi/display/DisplayObject.js, line 307 -
    - - - - - - -
    @@ -2864,87 +2865,6 @@ sorting and filtering of Group children without touching their z-index (and ther - - - - -
    - - - -
    -

    hitArea :Rectangle|Circle|Ellipse|Polygon

    - - -
    -
    - - - -
    -

    This is the defined area that will pick up mouse / touch events. It is null by default. -Setting it is a neat way of optimising the hitTest function that the interactionManager will use (as it will not need to hit test all the children)

    -
    - - - -
    Type:
    -
      -
    • - -Rectangle -| - -Circle -| - -Ellipse -| - -Polygon - - -
    • -
    - - - -
    - - - - - - - -
    Inherited From:
    -
    - - - - - - - - - - - - - -
    Source - - pixi/display/DisplayObject.js, line 62 -
    - - - - - - -
    @@ -3132,6 +3052,73 @@ on any children added to, or created by, this Group.

    + + + + +
    + + + +
    +

    left :number

    + + +
    +
    + + + +
    +

    The left coordinate of this Group.

    +

    It is derived by calling getBounds, calculating the Groups dimensions based on its +visible children.

    +

    Note that no ancestors are factored into the result, meaning that if this Group is +nested within another Group, with heavy transforms on it, the result of this property +is likely to be incorrect. It is safe to get and set this property if the Group is a +top-level descendant of Phaser.World, or untransformed parents.

    +
    + + + + + +
    + + + + + + + +
    Inherited From:
    +
    + + + + + + + + + + + + + +
    Source - + core/Group.js, line 2683 +
    + + + + + + +
    @@ -3184,7 +3171,7 @@ on any children added to, or created by, this Group.

    Source - - core/Group.js, line 2561 + core/Group.js, line 2577
    @@ -3297,69 +3284,6 @@ on any children added to, or created by, this Group.

    - - - - - - - - -
    -

    mask :PIXI.Graphics

    - - -
    -
    - - - -
    -

    Sets a mask for the displayObject. A mask is an object that limits the visibility of an object to the shape of the mask applied to it. -In PIXI a regular mask must be a PIXI.Graphics object. This allows for much faster masking in canvas as it utilises shape clipping. -To remove a mask, set this property to null.

    -
    - - - - - -
    - - - - - - - -
    Inherited From:
    -
    - - - - - - - - - - - - - -
    Source - - pixi/display/DisplayObject.js, line 282 -
    - - - - - - -
    @@ -3743,67 +3667,6 @@ is still over the Sprite or not.

    - - - - -
    - - - -
    -

    <readonly> parent :PIXI.DisplayObjectContainer

    - - -
    -
    - - - -
    -

    [read-only] The display object container that contains this display object.

    -
    - - - - - -
    - - - - - - - -
    Inherited From:
    -
    - - - - - - - - - - - - - -
    Source - - pixi/display/DisplayObject.js, line 79 -
    - - - - - - -
    @@ -4116,67 +3979,6 @@ Phaser.Physics.Arcade.BOTTOM_TOP

    - - - - -
    - - - -
    -

    pivot :Point

    - - -
    -
    - - - -
    -

    The pivot point of the displayObject that it rotates around

    -
    - - - - - -
    - - - - - - - -
    Inherited From:
    -
    - - - - - - - - - - - - - -
    Source - - pixi/display/DisplayObject.js, line 30 -
    - - - - - - -
    @@ -4239,7 +4041,7 @@ Phaser.Physics.Arcade.BOTTOM_TOP

    renderable :Boolean

    + id="right">right :number
    @@ -4248,7 +4050,13 @@ Phaser.Physics.Arcade.BOTTOM_TOP

    -

    Can this object be rendered

    +

    The right coordinate of this Group.

    +

    It is derived by calling getBounds, calculating the Groups dimensions based on its +visible children.

    +

    Note that no ancestors are factored into the result, meaning that if this Group is +nested within another Group, with heavy transforms on it, the result of this property +is likely to be incorrect. It is safe to get and set this property if the Group is a +top-level descendant of Phaser.World, or untransformed parents.

    @@ -4265,7 +4073,7 @@ Phaser.Physics.Arcade.BOTTOM_TOP

    Inherited From:
    @@ -4281,7 +4089,7 @@ Phaser.Physics.Arcade.BOTTOM_TOP

    Source - - pixi/display/DisplayObject.js, line 71 + core/Group.js, line 2716
    @@ -4344,7 +4152,7 @@ This will have no impact on the rotation value of its children, but it will upda
    Source - - core/Group.js, line 2630 + core/Group.js, line 2929
    @@ -4415,7 +4223,7 @@ This will have no impact on the rotation value of its children, but it will upda

    <readonly> stage :Stage

    + id="top">top :number
    @@ -4424,7 +4232,13 @@ This will have no impact on the rotation value of its children, but it will upda
    -

    [read-only] The stage the display object is connected to, or undefined if it is not connected to the stage.

    +

    The top coordinate of this Group.

    +

    It is derived by calling getBounds, calculating the Groups dimensions based on its +visible children.

    +

    Note that no ancestors are factored into the result, meaning that if this Group is +nested within another Group, with heavy transforms on it, the result of this property +is likely to be incorrect. It is safe to get and set this property if the Group is a +top-level descendant of Phaser.World, or untransformed parents.

    @@ -4441,7 +4255,7 @@ This will have no impact on the rotation value of its children, but it will upda
    Inherited From:
    @@ -4457,7 +4271,7 @@ This will have no impact on the rotation value of its children, but it will upda
    Source - - pixi/display/DisplayObject.js, line 88 + core/Group.js, line 2749
    @@ -4674,7 +4488,7 @@ This will have no impact on the rotation value of its children, but it will upda
    Source - - core/Group.js, line 2544 + core/Group.js, line 2560
    @@ -4803,7 +4617,7 @@ This will have no impact on the rotation value of its children, but it will upda
    Source - - core/Group.js, line 2639 + core/Group.js, line 2938
    @@ -4873,314 +4687,6 @@ This will have no impact on the rotation value of its children, but it will upda - - - - - - - - -
    -

    <readonly> worldAlpha :Number

    - - -
    -
    - - - -
    -

    [read-only] The multiplied alpha of the displayObject

    -
    - - - - - -
    - - - - - - - -
    Inherited From:
    -
    - - - - - - - - - - - - - -
    Source - - pixi/display/DisplayObject.js, line 97 -
    - - - - - - - -
    - - - -
    - - - -
    -

    <readonly> worldPosition :Point

    - - -
    -
    - - - -
    -

    The position of the Display Object based on the world transform. -This value is updated at the end of updateTransform and takes all parent transforms into account.

    -
    - - - - - -
    - - - - - - - -
    Inherited From:
    -
    - - - - - - - - - - - - - -
    Source - - pixi/display/DisplayObject.js, line 116 -
    - - - - - - - -
    - - - -
    - - - -
    -

    <readonly> worldRotation :Number

    - - -
    -
    - - - -
    -

    The rotation of the Display Object, in radians, based on the world transform. -This value is updated at the end of updateTransform and takes all parent transforms into account.

    -
    - - - - - -
    - - - - - - - -
    Inherited From:
    -
    - - - - - - - - - - - - - -
    Source - - pixi/display/DisplayObject.js, line 136 -
    - - - - - - - -
    - - - -
    - - - -
    -

    <readonly> worldScale :Point

    - - -
    -
    - - - -
    -

    The scale of the Display Object based on the world transform. -This value is updated at the end of updateTransform and takes all parent transforms into account.

    -
    - - - - - -
    - - - - - - - -
    Inherited From:
    -
    - - - - - - - - - - - - - -
    Source - - pixi/display/DisplayObject.js, line 126 -
    - - - - - - - -
    - - - -
    - - - -
    -

    worldVisible :Boolean

    - - -
    -
    - - - -
    -

    [read-only] Indicates if the sprite is globally visible.

    -
    - - - - - -
    - - - - - - - -
    Inherited From:
    -
    - - - - - - - - - - - - - -
    Source - - pixi/display/DisplayObject.js, line 258 -
    - - - - - - -
    @@ -5235,7 +4741,7 @@ This will have no impact on the x/y coordinates of its children, but it will upd
    Source - - core/Group.js, line 2612 + core/Group.js, line 2911
    @@ -5298,7 +4804,7 @@ This will have no impact on the x/y coordinates of its children, but it will upd
    Source - - core/Group.js, line 2621 + core/Group.js, line 2920
    @@ -5795,7 +5301,7 @@ this allows you to control child ordering.

    Source - - core/Group.js, line 1374 + core/Group.js, line 1376
    @@ -6063,7 +5569,7 @@ this allows you to control child ordering.

    addChild(child) → {PIXI.DisplayObject}

    + id="addChild">addChild(child) → {DisplayObject}
    @@ -6112,7 +5618,7 @@ this allows you to control child ordering.

    -PIXI.DisplayObject +DisplayObject @@ -6139,7 +5645,7 @@ this allows you to control child ordering.

    @@ -6207,7 +5713,7 @@ this allows you to control child ordering.

    addChildAt(child, index) → {PIXI.DisplayObject}

    + id="addChildAt">addChildAt(child, index) → {DisplayObject}
    @@ -6256,7 +5762,7 @@ this allows you to control child ordering.

    -PIXI.DisplayObject +DisplayObject @@ -6306,7 +5812,7 @@ this allows you to control child ordering.

    @@ -7070,6 +6576,641 @@ This is a constant and can be one of Phaser.TOP_LEFT (default), + + + +
    +

    alignIn(container, position, offsetX, offsetY) → {Phaser.Group}

    + + +
    +
    + + + +
    +

    Aligns this Group within another Game Object, or Rectangle, known as the +'container', to one of 9 possible positions.

    +

    The container must be a Game Object, or Phaser.Rectangle object. This can include properties +such as World.bounds or Camera.view, for aligning Groups within the world +and camera bounds. Or it can include other Sprites, Images, Text objects, BitmapText, +TileSprites or Buttons.

    +

    Please note that aligning a Group to another Game Object does not make it a child of +the container. It simply modifies its position coordinates so it aligns with it.

    +

    The position constants you can use are:

    +

    Phaser.TOP_LEFT, Phaser.TOP_CENTER, Phaser.TOP_RIGHT, Phaser.LEFT_CENTER, +Phaser.CENTER, Phaser.RIGHT_CENTER, Phaser.BOTTOM_LEFT, +Phaser.BOTTOM_CENTER and Phaser.BOTTOM_RIGHT.

    +

    Groups are placed in such a way that their bounds align with the +container, taking into consideration rotation and scale of its children. +This allows you to neatly align Groups, irrespective of their position value.

    +

    The optional offsetX and offsetY arguments allow you to apply extra spacing to the final +aligned position of the Group. For example:

    +

    group.alignIn(background, Phaser.BOTTOM_RIGHT, -20, -20)

    +

    Would align the group to the bottom-right, but moved 20 pixels in from the corner. +Think of the offsets as applying an adjustment to the containers bounds before the alignment takes place. +So providing a negative offset will 'shrink' the container bounds by that amount, and providing a positive +one expands it.

    +
    + + + + + + + +
    Parameters:
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeArgumentDefaultDescription
    container + + +Phaser.Rectangle +| + +Phaser.Sprite +| + +Phaser.Image +| + +Phaser.Text +| + +Phaser.BitmapText +| + +Phaser.Button +| + +Phaser.Graphics +| + +Phaser.TileSprite + + + + + + + + + + + +

    The Game Object or Rectangle with which to align this Group to. Can also include properties such as World.bounds or Camera.view.

    position + + +integer + + + + + + <optional>
    + + + + + +
    + +

    The position constant. One of Phaser.TOP_LEFT (default), Phaser.TOP_CENTER, Phaser.TOP_RIGHT, Phaser.LEFT_CENTER, Phaser.CENTER, Phaser.RIGHT_CENTER, Phaser.BOTTOM_LEFT, Phaser.BOTTOM_CENTER or Phaser.BOTTOM_RIGHT.

    offsetX + + +integer + + + + + + <optional>
    + + + + + +
    + + 0 + +

    A horizontal adjustment of the Containers bounds, applied to the aligned position of the Game Object. Use a negative value to shrink the bounds, positive to increase it.

    offsetY + + +integer + + + + + + <optional>
    + + + + + +
    + + 0 + +

    A vertical adjustment of the Containers bounds, applied to the aligned position of the Game Object. Use a negative value to shrink the bounds, positive to increase it.

    + + + + +
    Returns:
    +
    + + + +
    + +Phaser.Group + + - +
    + +
    +

    This Group.

    +
    + + + +
    + + + +
    + + + + + + + +
    Inherited From:
    +
    + + + + + + + + + + + + + +
    Source - + core/Group.js, line 2815 +
    + + + + + + + +
    + + + + + + + + + + + +
    + + + +
    +

    alignTo(parent, position, offsetX, offsetY) → {Phaser.Group}

    + + +
    +
    + + + +
    +

    Aligns this Group to the side of another Game Object, or Rectangle, known as the +'parent', in one of 11 possible positions.

    +

    The parent must be a Game Object, or Phaser.Rectangle object. This can include properties +such as World.bounds or Camera.view, for aligning Groups within the world +and camera bounds. Or it can include other Sprites, Images, Text objects, BitmapText, +TileSprites or Buttons.

    +

    Please note that aligning a Group to another Game Object does not make it a child of +the parent. It simply modifies its position coordinates so it aligns with it.

    +

    The position constants you can use are:

    +

    Phaser.TOP_LEFT (default), Phaser.TOP_CENTER, Phaser.TOP_RIGHT, Phaser.LEFT_TOP, +Phaser.LEFT_CENTER, Phaser.LEFT_BOTTOM, Phaser.RIGHT_TOP, Phaser.RIGHT_CENTER, +Phaser.RIGHT_BOTTOM, Phaser.BOTTOM_LEFT, Phaser.BOTTOM_CENTER +and Phaser.BOTTOM_RIGHT.

    +

    Groups are placed in such a way that their bounds align with the +parent, taking into consideration rotation and scale of the children. +This allows you to neatly align Groups, irrespective of their position value.

    +

    The optional offsetX and offsetY arguments allow you to apply extra spacing to the final +aligned position of the Group. For example:

    +

    group.alignTo(background, Phaser.BOTTOM_RIGHT, -20, -20)

    +

    Would align the group to the bottom-right, but moved 20 pixels in from the corner. +Think of the offsets as applying an adjustment to the parents bounds before the alignment takes place. +So providing a negative offset will 'shrink' the parent bounds by that amount, and providing a positive +one expands it.

    +
    + + + + + + + +
    Parameters:
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeArgumentDefaultDescription
    parent + + +Phaser.Rectangle +| + +Phaser.Sprite +| + +Phaser.Image +| + +Phaser.Text +| + +Phaser.BitmapText +| + +Phaser.Button +| + +Phaser.Graphics +| + +Phaser.TileSprite + + + + + + + + + + + +

    The Game Object or Rectangle with which to align this Group to. Can also include properties such as World.bounds or Camera.view.

    position + + +integer + + + + + + <optional>
    + + + + + +
    + +

    The position constant. One of Phaser.TOP_LEFT, Phaser.TOP_CENTER, Phaser.TOP_RIGHT, Phaser.LEFT_TOP, Phaser.LEFT_CENTER, Phaser.LEFT_BOTTOM, Phaser.RIGHT_TOP, Phaser.RIGHT_CENTER, Phaser.RIGHT_BOTTOM, Phaser.BOTTOM_LEFT, Phaser.BOTTOM_CENTER or Phaser.BOTTOM_RIGHT.

    offsetX + + +integer + + + + + + <optional>
    + + + + + +
    + + 0 + +

    A horizontal adjustment of the Containers bounds, applied to the aligned position of the Game Object. Use a negative value to shrink the bounds, positive to increase it.

    offsetY + + +integer + + + + + + <optional>
    + + + + + +
    + + 0 + +

    A vertical adjustment of the Containers bounds, applied to the aligned position of the Game Object. Use a negative value to shrink the bounds, positive to increase it.

    + + + + +
    Returns:
    +
    + + + +
    + +Phaser.Group + + - +
    + +
    +

    This Group.

    +
    + + + +
    + + + +
    + + + + + + + +
    Inherited From:
    +
    + + + + + + + + + + + + + +
    Source - + core/Group.js, line 2857 +
    + + + + + + + +
    + + + + + + + + + + +
    @@ -7203,7 +7344,7 @@ This is a constant and can be one of Phaser.TOP_LEFT (default), Source - - core/Group.js, line 1910 + core/Group.js, line 1912 @@ -7347,7 +7488,7 @@ This is a constant and can be one of Phaser.TOP_LEFT (default), Source - - core/Group.js, line 895 + core/Group.js, line 897 @@ -7565,7 +7706,7 @@ After the method parameter and context you can add as many extra parameters as y
    Source - - core/Group.js, line 1529 + core/Group.js, line 1531
    @@ -7764,7 +7905,7 @@ After the method parameter and context you can add as many extra parameters as y
    Source - - core/Group.js, line 1442 + core/Group.js, line 1444
    @@ -7941,7 +8082,7 @@ After the method parameter and context you can add as many extra parameters as y
    Source - - core/Group.js, line 1476 + core/Group.js, line 1478
    @@ -8234,7 +8375,7 @@ After the method parameter and context you can add as many extra parameters as y
    Source - - core/Group.js, line 1341 + core/Group.js, line 1343
    @@ -8503,7 +8644,7 @@ After the method parameter and context you can add as many extra parameters as y
    Source - - core/Group.js, line 1205 + core/Group.js, line 1207
    @@ -8598,7 +8739,7 @@ After the method parameter and context you can add as many extra parameters as y
    Source - - core/Group.js, line 2293 + core/Group.js, line 2309
    @@ -8693,7 +8834,7 @@ After the method parameter and context you can add as many extra parameters as y
    Source - - core/Group.js, line 2281 + core/Group.js, line 2297
    @@ -9533,7 +9674,7 @@ It should return -1 if a > b, 1 if a < b or 0 if
    Source - - core/Group.js, line 1886 + core/Group.js, line 1888
    @@ -9757,7 +9898,7 @@ It should return -1 if a > b, 1 if a < b or 0 if
    Source - - core/Group.js, line 1942 + core/Group.js, line 1944
    @@ -9941,7 +10082,7 @@ It should return -1 if a > b, 1 if a < b or 0 if
    Source - - core/Group.js, line 2507 + core/Group.js, line 2523
    @@ -10135,7 +10276,7 @@ It should return -1 if a > b, 1 if a < b or 0 if
    Source - - core/Group.js, line 1425 + core/Group.js, line 1427
    @@ -10339,7 +10480,7 @@ healthyList.callAll('attack');

    Note: Currently this will skip any

    Source - - core/Group.js, line 1668 + core/Group.js, line 1670
    @@ -10597,7 +10738,7 @@ healthyList.callAll('attack');

    Note: Currently this will skip any

    Source - - core/Group.js, line 1708 + core/Group.js, line 1710
    @@ -10814,7 +10955,7 @@ healthyList.callAll('attack');

    Note: Currently this will skip any

    Source - - core/Group.js, line 1790 + core/Group.js, line 1792
    @@ -11031,7 +11172,7 @@ healthyList.callAll('attack');

    Note: Currently this will skip any

    Source - - core/Group.js, line 1818 + core/Group.js, line 1820
    @@ -11248,201 +11389,7 @@ healthyList.callAll('attack');

    Note: Currently this will skip any

    Source - - core/Group.js, line 1762 -
    - - - - - - - - - - - - - - - - - - - - - - - -
    -

    generateTexture(resolution, scaleMode, renderer) → {PIXI.RenderTexture}

    - - -
    -
    - - - -
    -

    Useful function that returns a texture of the displayObject object that can then be used to create sprites -This can be quite useful if your displayObject is static / complicated and needs to be reused multiple times.

    -
    - - - - - - - -
    Parameters:
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    NameTypeDescription
    resolution - - -Number - - - -

    The resolution of the texture being generated

    scaleMode - - -Number - - - -

    See {{#crossLink "PIXI/scaleModes:property"}}PIXI.scaleModes{{/crossLink}} for possible values

    renderer - - -PIXI.CanvasRenderer -| - -PIXI.WebGLRenderer - - - -

    The renderer used to generate the texture.

    - - - - -
    Returns:
    -
    - - - -
    - -PIXI.RenderTexture - - - -
    - -
    -

    a texture of the graphics object

    -
    - - - -
    - - - -
    - - - - - - - -
    Inherited From:
    -
    - - - - - - - - - - - - - -
    Source - - pixi/display/DisplayObject.js, line 541 + core/Group.js, line 1764
    @@ -11685,7 +11632,7 @@ This can be quite useful if your displayObject is static / complicated and needs
    Source - - core/Group.js, line 2190 + core/Group.js, line 2192
    @@ -11926,7 +11873,7 @@ the same name only the first instance is returned.

    Source - - core/Group.js, line 1030 + core/Group.js, line 1032
    @@ -11953,7 +11900,7 @@ the same name only the first instance is returned.

    getChildAt(index) → {PIXI.DisplayObject}

    + id="getChildAt">getChildAt(index) → {DisplayObject}
    @@ -12029,7 +11976,7 @@ the same name only the first instance is returned.

    @@ -12146,7 +12093,7 @@ the same name only the first instance is returned.

    -PIXI.DisplayObject +DisplayObject @@ -12241,7 +12188,7 @@ the same name only the first instance is returned.

    getClosestTo(object) → {any}

    + id="getClosestTo">getClosestTo(object, callback, callbackContext) → {any}
    @@ -12250,9 +12197,13 @@ the same name only the first instance is returned.

    -

    Get the closest child to given Object.

    +

    Get the closest child to given Object, with optional callback to filter children.

    This can be a Sprite, Group, Image or any object with public x and y properties.

    'close' is determined by the distance from the objects x and y properties compared to the childs x and y properties.

    +

    You can use the optional callback argument to apply your own filter to the distance checks. +If the child is closer then the previous child, it will be sent to callback as the first argument, +with the distance as the second. The callback should return true if it passes your +filtering criteria, otherwise it should return false.

    @@ -12274,6 +12225,8 @@ the same name only the first instance is returned.

    Type + Argument + @@ -12299,6 +12252,14 @@ the same name only the first instance is returned.

    + + + + + + + + @@ -12306,6 +12267,72 @@ the same name only the first instance is returned.

    + + + + callback + + + + + +function + + + + + + + + + <optional>
    + + + + + + + + + + +

    The function that each child will be evaluated against. Each child of the group will be passed to it as its first parameter, with the distance as the second. It should return true if the child passes the matching criteria.

    + + + + + + + callbackContext + + + + + +object + + + + + + + + + <optional>
    + + + + + + + + + + +

    The context in which the function should be called (usually 'this').

    + + + @@ -12325,7 +12352,7 @@ the same name only the first instance is returned.

    -

    The child closest to given object, or null if no child was found.

    +

    The child closest to given object, or null if no child was found.

    @@ -12360,7 +12387,7 @@ the same name only the first instance is returned.

    Source - - core/Group.js, line 2207 + core/Group.js, line 2209
    @@ -12692,7 +12719,7 @@ will be reset and/or have a new texture loaded on it. This is handled by G
    Source - - core/Group.js, line 2074 + core/Group.js, line 2076
    @@ -13024,7 +13051,7 @@ will be reset and/or have a new texture loaded on it. This is handled by G
    Source - - core/Group.js, line 2104 + core/Group.js, line 2106
    @@ -13394,7 +13421,7 @@ will be reset and/or have a new texture loaded on it. This is handled by G
    Source - - core/Group.js, line 2040 + core/Group.js, line 2042
    @@ -13421,7 +13448,7 @@ will be reset and/or have a new texture loaded on it. This is handled by G

    getFurthestFrom(object) → {any}

    + id="getFurthestFrom">getFurthestFrom(object, callback, callbackContext) → {any}
    @@ -13430,9 +13457,13 @@ will be reset and/or have a new texture loaded on it. This is handled by G
    -

    Get the child furthest away from the given Object.

    +

    Get the child furthest away from the given Object, with optional callback to filter children.

    This can be a Sprite, Group, Image or any object with public x and y properties.

    'furthest away' is determined by the distance from the objects x and y properties compared to the childs x and y properties.

    +

    You can use the optional callback argument to apply your own filter to the distance checks. +If the child is closer then the previous child, it will be sent to callback as the first argument, +with the distance as the second. The callback should return true if it passes your +filtering criteria, otherwise it should return false.

    @@ -13454,6 +13485,8 @@ will be reset and/or have a new texture loaded on it. This is handled by G Type + Argument + @@ -13479,6 +13512,14 @@ will be reset and/or have a new texture loaded on it. This is handled by G + + + + + + + + @@ -13486,6 +13527,72 @@ will be reset and/or have a new texture loaded on it. This is handled by G + + + + callback + + + + + +function + + + + + + + + + <optional>
    + + + + + + + + + + +

    The function that each child will be evaluated against. Each child of the group will be passed to it as its first parameter, with the distance as the second. It should return true if the child passes the matching criteria.

    + + + + + + + callbackContext + + + + + +object + + + + + + + + + <optional>
    + + + + + + + + + + +

    The context in which the function should be called (usually 'this').

    + + + @@ -13505,7 +13612,7 @@ will be reset and/or have a new texture loaded on it. This is handled by G
    -

    The child furthest from the given object, or null if no child was found.

    +

    The child furthest from the given object, or null if no child was found.

    @@ -13540,7 +13647,7 @@ will be reset and/or have a new texture loaded on it. This is handled by G
    Source - - core/Group.js, line 2244 + core/Group.js, line 2253
    @@ -13684,7 +13791,7 @@ will be reset and/or have a new texture loaded on it. This is handled by G
    Source - - core/Group.js, line 1017 + core/Group.js, line 1019
    @@ -13779,7 +13886,7 @@ will be reset and/or have a new texture loaded on it. This is handled by G
    Source - - pixi/display/DisplayObjectContainer.js, line 381 + pixi/display/DisplayObjectContainer.js, line 383
    @@ -13982,7 +14089,7 @@ will be reset and/or have a new texture loaded on it. This is handled by G
    Source - - core/Group.js, line 2305 + core/Group.js, line 2321
    @@ -14078,7 +14185,7 @@ will be reset and/or have a new texture loaded on it. This is handled by G
    Source - - core/Group.js, line 2173 + core/Group.js, line 2175
    @@ -14246,7 +14353,7 @@ will be reset and/or have a new texture loaded on it. This is handled by G
    Source - - core/Group.js, line 1092 + core/Group.js, line 1094
    @@ -14605,7 +14712,7 @@ element and the entire array will be applied to the callback function.

    Source - - core/Group.js, line 1967 + core/Group.js, line 1969
    @@ -14804,7 +14911,7 @@ element and the entire array will be applied to the callback function.

    Source - - core/Group.js, line 2375 + core/Group.js, line 2391
    @@ -14948,7 +15055,7 @@ element and the entire array will be applied to the callback function.

    Source - - core/Group.js, line 957 + core/Group.js, line 959
    @@ -15092,7 +15199,7 @@ element and the entire array will be applied to the callback function.

    Source - - core/Group.js, line 933 + core/Group.js, line 935
    @@ -15286,7 +15393,7 @@ element and the entire array will be applied to the callback function.

    Source - - core/Group.js, line 1408 + core/Group.js, line 1410
    @@ -15382,7 +15489,7 @@ element and the entire array will be applied to the callback function.

    Source - - core/Group.js, line 821 + core/Group.js, line 823
    @@ -15464,7 +15571,7 @@ element and the entire array will be applied to the callback function.

    Source - - core/Group.js, line 1647 + core/Group.js, line 1649
    @@ -15546,7 +15653,7 @@ element and the entire array will be applied to the callback function.

    Source - - core/Group.js, line 1602 + core/Group.js, line 1604
    @@ -15642,7 +15749,7 @@ element and the entire array will be applied to the callback function.

    Source - - core/Group.js, line 850 + core/Group.js, line 852
    @@ -15882,7 +15989,7 @@ element and the entire array will be applied to the callback function.

    Source - - core/Group.js, line 2327 + core/Group.js, line 2343
    @@ -16107,7 +16214,7 @@ more than one Game Object sharing the same BaseTexture.

    Source - - core/Group.js, line 2404 + core/Group.js, line 2420
    @@ -16362,7 +16469,7 @@ more than one Game Object sharing the same BaseTexture.

    Source - - core/Group.js, line 2452 + core/Group.js, line 2468
    @@ -16389,7 +16496,7 @@ more than one Game Object sharing the same BaseTexture.

    removeChild(child) → {PIXI.DisplayObject}

    + id="removeChild">removeChild(child) → {DisplayObject}
    @@ -16438,7 +16545,7 @@ more than one Game Object sharing the same BaseTexture.

    -PIXI.DisplayObject +DisplayObject @@ -16465,7 +16572,7 @@ more than one Game Object sharing the same BaseTexture.

    @@ -16533,7 +16640,7 @@ more than one Game Object sharing the same BaseTexture.

    removeChildAt(index) → {PIXI.DisplayObject}

    + id="removeChildAt">removeChildAt(index) → {DisplayObject}
    @@ -16609,7 +16716,7 @@ more than one Game Object sharing the same BaseTexture.

    @@ -17017,7 +17124,7 @@ This call will return false if the child is not in the hash.

    Source - - pixi/display/DisplayObjectContainer.js, line 426 + pixi/display/DisplayObjectContainer.js, line 428
    @@ -17186,7 +17293,7 @@ This call will return false if the child is not in the hash.

    Source - - core/Group.js, line 1053 + core/Group.js, line 1055
    @@ -17489,7 +17596,7 @@ This call will return false if the child is not in the hash.

    Source - - core/Group.js, line 2134 + core/Group.js, line 2136
    @@ -17654,7 +17761,7 @@ This call will return false if the child is not in the hash.

    Source - - core/Group.js, line 794 + core/Group.js, line 796
    @@ -17800,7 +17907,7 @@ This call will return false if the child is not in the hash.

    Source - - core/Group.js, line 1003 + core/Group.js, line 1005
    @@ -17944,7 +18051,7 @@ This call will return false if the child is not in the hash.

    Source - - core/Group.js, line 914 + core/Group.js, line 916
    @@ -18331,7 +18438,7 @@ This call will return false if the child is not in the hash.

    Source - - core/Group.js, line 1234 + core/Group.js, line 1236
    @@ -18665,7 +18772,7 @@ If you need that ability please see Group.setAllChildren.

    Source - - core/Group.js, line 1265 + core/Group.js, line 1267
    @@ -18999,7 +19106,7 @@ Unlike with setAll the property is NOT set on child Groups itself.<
    Source - - core/Group.js, line 1300 + core/Group.js, line 1302
    @@ -19075,7 +19182,7 @@ Unlike with setAll the property is NOT set on child Groups itself.< -PIXI.DisplayObject +DisplayObject @@ -19462,7 +19569,7 @@ Unlike with setAll the property is NOT set on child Groups itself.<
    Source - - core/Group.js, line 1127 + core/Group.js, line 1129
    @@ -19586,7 +19693,7 @@ Unlike with setAll the property is NOT set on child Groups itself.<
    Source - - pixi/display/DisplayObjectContainer.js, line 410 + pixi/display/DisplayObjectContainer.js, line 412
    @@ -19773,7 +19880,7 @@ alphabetical sorting, mixing strings and numbers, and Unicode sorting. See MDN f
    Source - - core/Group.js, line 1846 + core/Group.js, line 1848
    @@ -19967,7 +20074,7 @@ alphabetical sorting, mixing strings and numbers, and Unicode sorting. See MDN f
    Source - - core/Group.js, line 1391 + core/Group.js, line 1393
    @@ -20115,7 +20222,7 @@ alphabetical sorting, mixing strings and numbers, and Unicode sorting. See MDN f
    Source - - core/Group.js, line 879 + core/Group.js, line 881
    @@ -20191,7 +20298,7 @@ alphabetical sorting, mixing strings and numbers, and Unicode sorting. See MDN f -PIXI.DisplayObject +DisplayObject @@ -20214,7 +20321,7 @@ alphabetical sorting, mixing strings and numbers, and Unicode sorting. See MDN f -PIXI.DisplayObject +DisplayObject @@ -20283,337 +20390,6 @@ alphabetical sorting, mixing strings and numbers, and Unicode sorting. See MDN f -
    - - - -
    -

    toGlobal(position) → {Point}

    - - -
    -
    - - - -
    -

    Calculates the global position of the display object

    -
    - - - - - - - -
    Parameters:
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    NameTypeDescription
    position - - -Point - - - -

    The world origin to calculate from

    - - - - -
    Returns:
    -
    - - - -
    - -Point - - - -
    - -
    -

    A point object representing the position of this object

    -
    - - - -
    - - - -
    - - - - - - - -
    Inherited From:
    -
    - - - - - - - - - - - - - -
    Source - - pixi/display/DisplayObject.js, line 575 -
    - - - - - - - -
    - - - - - - - - - - - -
    - - - -
    -

    toLocal(position, from) → {Point}

    - - -
    -
    - - - -
    -

    Calculates the local position of the display object relative to another point

    -
    - - - - - - - -
    Parameters:
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    NameTypeArgumentDescription
    position - - -Point - - - - - - - - - -

    The world origin to calculate from

    from - - -PIXI.DisplayObject - - - - - - <optional>
    - - - - - -

    The DisplayObject to calculate the global position from

    - - - - -
    Returns:
    -
    - - - -
    - -Point - - - -
    - -
    -

    A point object representing the position of this object

    -
    - - - -
    - - - -
    - - - - - - - -
    Inherited From:
    -
    - - - - - - - - - - - - - -
    Source - - pixi/display/DisplayObject.js, line 589 -
    - - - - - - - -
    - - - - - - - - - - -
    @@ -20675,82 +20451,7 @@ alphabetical sorting, mixing strings and numbers, and Unicode sorting. See MDN f
    Source - - core/Group.js, line 1630 -
    - - - - - - - - - - - - - - - - - - - - - - - -
    -

    updateCache()

    - - -
    -
    - - - -
    -

    Generates and updates the cached sprite for this object.

    -
    - - - - - - - - - - - -
    - - - - - - - -
    Inherited From:
    -
    - - - - - - - - - - - - - -
    Source - - pixi/display/DisplayObject.js, line 565 + core/Group.js, line 1632
    @@ -21003,7 +20704,7 @@ alphabetical sorting, mixing strings and numbers, and Unicode sorting. See MDN f
    Source - - core/Group.js, line 981 + core/Group.js, line 983
    @@ -21052,7 +20753,7 @@ alphabetical sorting, mixing strings and numbers, and Unicode sorting. See MDN f Documentation generated by JSDoc 3.3.3 - on Fri Jun 17 2016 12:45:33 GMT+0100 (BST) using the DocStrap template. + on Fri Jul 08 2016 15:42:38 GMT+0100 (GMT Daylight Time) using the DocStrap template. diff --git a/docs/Phaser.Frame.html b/docs/Phaser.Frame.html index 51fd03650..ce13a667d 100644 --- a/docs/Phaser.Frame.html +++ b/docs/Phaser.Frame.html @@ -708,10 +708,6 @@ ComplexPrimitiveShader -
  • - DisplayObject -
  • -
  • DisplayObjectContainer
  • @@ -744,6 +740,10 @@ PIXI +
  • + DisplayObject +
  • +
  • PixiFastShader
  • @@ -3282,7 +3282,7 @@ Note that all properties are cloned, including the name, index and UUID.

    Documentation generated by JSDoc 3.3.3 - on Fri Jun 17 2016 12:45:33 GMT+0100 (BST) using the DocStrap template. + on Fri Jul 08 2016 15:42:38 GMT+0100 (GMT Daylight Time) using the DocStrap template. diff --git a/docs/Phaser.FrameData.html b/docs/Phaser.FrameData.html index 86340f950..5e016d20e 100644 --- a/docs/Phaser.FrameData.html +++ b/docs/Phaser.FrameData.html @@ -708,10 +708,6 @@ ComplexPrimitiveShader -
  • - DisplayObject -
  • -
  • DisplayObjectContainer
  • @@ -744,6 +740,10 @@ PIXI +
  • + DisplayObject +
  • +
  • PixiFastShader
  • @@ -2807,7 +2807,7 @@ The frames are returned in the output array, or if none is provided in a new Arr Documentation generated by JSDoc 3.3.3 - on Fri Jun 17 2016 12:45:33 GMT+0100 (BST) using the DocStrap template. + on Fri Jul 08 2016 15:42:38 GMT+0100 (GMT Daylight Time) using the DocStrap template. diff --git a/docs/Phaser.Game.html b/docs/Phaser.Game.html index 082a42af6..81eea4fd8 100644 --- a/docs/Phaser.Game.html +++ b/docs/Phaser.Game.html @@ -708,10 +708,6 @@ ComplexPrimitiveShader -
  • - DisplayObject -
  • -
  • DisplayObjectContainer
  • @@ -744,6 +740,10 @@ PIXI +
  • + DisplayObject +
  • +
  • PixiFastShader
  • @@ -6236,7 +6236,7 @@ Phaser will only render when this boolean is false.

    Documentation generated by JSDoc 3.3.3 - on Fri Jun 17 2016 12:45:33 GMT+0100 (BST) using the DocStrap template. + on Fri Jul 08 2016 15:42:38 GMT+0100 (GMT Daylight Time) using the DocStrap template. diff --git a/docs/Phaser.GameObjectCreator.html b/docs/Phaser.GameObjectCreator.html index a9e6ef98e..86e5bf4d7 100644 --- a/docs/Phaser.GameObjectCreator.html +++ b/docs/Phaser.GameObjectCreator.html @@ -708,10 +708,6 @@ ComplexPrimitiveShader -
  • - DisplayObject -
  • -
  • DisplayObjectContainer
  • @@ -744,6 +740,10 @@ PIXI +
  • + DisplayObject +
  • +
  • PixiFastShader
  • @@ -6830,7 +6830,7 @@ Note that all Tilemaps use a base tile size to calculate dimensions from, but th Documentation generated by JSDoc 3.3.3 - on Fri Jun 17 2016 12:45:33 GMT+0100 (BST) using the DocStrap template. + on Fri Jul 08 2016 15:42:38 GMT+0100 (GMT Daylight Time) using the DocStrap template. diff --git a/docs/Phaser.GameObjectFactory.html b/docs/Phaser.GameObjectFactory.html index 731428b2c..b285e5dfd 100644 --- a/docs/Phaser.GameObjectFactory.html +++ b/docs/Phaser.GameObjectFactory.html @@ -708,10 +708,6 @@ ComplexPrimitiveShader -
  • - DisplayObject -
  • -
  • DisplayObjectContainer
  • @@ -744,6 +740,10 @@ PIXI +
  • + DisplayObject +
  • +
  • PixiFastShader
  • @@ -8779,7 +8779,7 @@ the firing rate, the firing angle, and even set things like gravity for them.

    Documentation generated by JSDoc 3.3.3 - on Fri Jun 17 2016 12:45:33 GMT+0100 (BST) using the DocStrap template. + on Fri Jul 08 2016 15:42:38 GMT+0100 (GMT Daylight Time) using the DocStrap template. diff --git a/docs/Phaser.Gamepad.html b/docs/Phaser.Gamepad.html index 57bf83fac..d657e9e13 100644 --- a/docs/Phaser.Gamepad.html +++ b/docs/Phaser.Gamepad.html @@ -708,10 +708,6 @@ ComplexPrimitiveShader -
  • - DisplayObject -
  • -
  • DisplayObjectContainer
  • @@ -744,6 +740,10 @@ PIXI +
  • + DisplayObject +
  • +
  • PixiFastShader
  • @@ -3405,7 +3405,7 @@ This MUST be called manually before Phaser will start polling the Gamepad API. Documentation generated by JSDoc 3.3.3 - on Fri Jun 17 2016 12:45:33 GMT+0100 (BST) using the DocStrap template. + on Fri Jul 08 2016 15:42:38 GMT+0100 (GMT Daylight Time) using the DocStrap template. diff --git a/docs/Phaser.Graphics.html b/docs/Phaser.Graphics.html index f45a930e7..458bf8f1f 100644 --- a/docs/Phaser.Graphics.html +++ b/docs/Phaser.Graphics.html @@ -708,10 +708,6 @@ ComplexPrimitiveShader -
  • - DisplayObject -
  • -
  • DisplayObjectContainer
  • @@ -744,6 +740,10 @@ PIXI +
  • + DisplayObject +
  • +
  • PixiFastShader
  • @@ -1249,7 +1249,21 @@
    -

    Creates a new Graphics object.

    +

    A Graphics object is a way to draw primitives to your game. Primitives include forms of geometry, such as Rectangles, +Circles and Polygons. They also include lines, arcs and curves. When you initially create a Graphics object it will +be empty. To 'draw' to it you first specify a lineStyle or fillStyle (or both), and then draw a shape. For example:

    +
    graphics.beginFill(0xff0000);
    +graphics.drawCircle(50, 50, 100);
    +graphics.endFill();

    This will draw a circle shape to the Graphics object, with a diameter of 100, located at x: 50, y: 50.

    +

    When a Graphics object is rendered it will render differently based on if the game is running under Canvas or +WebGL. Under Canvas it will use the HTML Canvas context drawing operations to draw the path. Under WebGL the +graphics data is decomposed into polygons. Both of these are expensive processes, especially with complex shapes.

    +

    If your Graphics object doesn't change much (or at all) once you've drawn your shape to it, then you will help +performance by calling Graphics.generateTexture. This will 'bake' the Graphics object into a Texture, and return it. +You can then use this Texture for Sprites or other display objects. If your Graphics object updates frequently then +you should avoid doing this, as it will constantly generate new textures, which will consume memory.

    +

    As you can tell, Graphics objects are a bit of a trade-off. While they are extremely useful, you need to be careful +in their complexity and quantity of them in your game.

    @@ -1426,7 +1440,7 @@
    Source - - gameobjects/Graphics.js, line 28 + gameobjects/Graphics.js, line 50
    @@ -1555,67 +1569,6 @@ However you can use Group.getFirstAlive in conjunction with this pr -
    - - - -
    - - - -
    -

    alpha :Number

    - - -
    -
    - - - -
    -

    The opacity of the object.

    -
    - - - - - -
    - - - - - - - -
    Inherited From:
    -
    - - - - - - - - - - - - - -
    Source - - pixi/display/DisplayObject.js, line 46 -
    - - - - - - -
    @@ -2869,143 +2822,6 @@ It will also set the visible property to true.

    - - - - -
    - - - -
    -

    filterArea :Rectangle

    - - -
    -
    - - - -
    -

    The area the filter is applied to like the hitArea this is used as more of an optimisation -rather than figuring out the dimensions of the displayObject each frame you can set this rectangle

    -
    - - - - - -
    - - - - - - - -
    Inherited From:
    -
    - - - - - - - - - - - - - -
    Source - - pixi/display/DisplayObject.js, line 164 -
    - - - - - - - -
    - - - -
    - - - -
    -

    filters :Array.<Filter>

    - - -
    -
    - - - -
    -

    Sets the filters for the displayObject. -IMPORTANT: This is a webGL only feature and will be ignored by the Canvas renderer.

    -

    To remove filters simply set this property to 'null'.

    -

    You cannot have a filter and a multiply blend mode active at the same time. Setting a filter will reset -this objects blend mode to NORMAL.

    -
    - - - -
    Type:
    -
      -
    • - -Array.<Filter> - - -
    • -
    - - - -
    - - - - - - - -
    Inherited From:
    -
    - - - - - - - - - - - - - -
    Source - - pixi/display/DisplayObject.js, line 307 -
    - - - - - - -
    @@ -3258,87 +3074,6 @@ This property is mostly used internally by the physics systems, but is exposed f - - - - -
    - - - -
    -

    hitArea :Rectangle|Circle|Ellipse|Polygon

    - - -
    -
    - - - -
    -

    This is the defined area that will pick up mouse / touch events. It is null by default. -Setting it is a neat way of optimising the hitTest function that the interactionManager will use (as it will not need to hit test all the children)

    -
    - - - -
    Type:
    -
      -
    • - -Rectangle -| - -Circle -| - -Ellipse -| - -Polygon - - -
    • -
    - - - -
    - - - - - - - -
    Inherited From:
    -
    - - - - - - - - - - - - - -
    Source - - pixi/display/DisplayObject.js, line 62 -
    - - - - - - -
    @@ -3564,6 +3299,9 @@ for this Game Object and it will then start to process click / touch events and

    You can then access the Input Handler via this.input.

    Note that Input related events are dispatched from this.events, i.e.: events.onInputDown.

    If you set this property to false it will stop the Input Handler from processing any more input events.

    +

    If you want to temporarily disable input for a Game Object, then it's better to set +input.enabled = false, as it won't reset any of the Input Handlers internal properties. +You can then toggle this back on as needed.

    @@ -3596,7 +3334,7 @@ for this Game Object and it will then start to process click / touch events and
    Source - - gameobjects/components/InputEnabled.js, line 38 + gameobjects/components/InputEnabled.js, line 42
    @@ -4066,69 +3804,6 @@ When it reaches zero it will call the kill method.

    - - - - - - - - -
    -

    mask :PIXI.Graphics

    - - -
    -
    - - - -
    -

    Sets a mask for the displayObject. A mask is an object that limits the visibility of an object to the shape of the mask applied to it. -In PIXI a regular mask must be a PIXI.Graphics object. This allows for much faster masking in canvas as it utilises shape clipping. -To remove a mask, set this property to null.

    -
    - - - - - -
    - - - - - - - -
    Inherited From:
    -
    - - - - - - - - - - - - - -
    Source - - pixi/display/DisplayObject.js, line 282 -
    - - - - - - -
    @@ -4440,67 +4115,6 @@ is called as soon as the Game Object leaves the camera bounds.

    - - - - -
    - - - -
    -

    <readonly> parent :PIXI.DisplayObjectContainer

    - - -
    -
    - - - -
    -

    [read-only] The display object container that contains this display object.

    -
    - - - - - -
    - - - - - - - -
    Inherited From:
    -
    - - - - - - - - - - - - - -
    Source - - pixi/display/DisplayObject.js, line 79 -
    - - - - - - -
    @@ -4612,129 +4226,7 @@ such as with Buttons or other Input events.

    Source - - gameobjects/Graphics.js, line 43 -
    - - - - - - - - - - - - - - - -
    -

    pivot :Point

    - - -
    -
    - - - -
    -

    The pivot point of the displayObject that it rotates around

    -
    - - - - - -
    - - - - - - - -
    Inherited From:
    -
    - - - - - - - - - - - - - -
    Source - - pixi/display/DisplayObject.js, line 30 -
    - - - - - - - -
    - - - -
    - - - -
    -

    position :Point

    - - -
    -
    - - - -
    -

    The coordinate of the object relative to the local coordinates of the parent.

    -
    - - - - - -
    - - - - - - - -
    Inherited From:
    -
    - - - - - - - - - - - - - -
    Source - - pixi/display/DisplayObject.js, line 14 + gameobjects/Graphics.js, line 65
    @@ -4865,67 +4357,6 @@ such as with Buttons or other Input events.

    -
    - - - -
    - - - -
    -

    renderable :Boolean

    - - -
    -
    - - - -
    -

    Can this object be rendered

    -
    - - - - - -
    - - - - - - - -
    Inherited From:
    -
    - - - - - - - - - - - - - -
    Source - - pixi/display/DisplayObject.js, line 71 -
    - - - - - - -
    @@ -5050,189 +4481,6 @@ This is the same as x + width - offsetX.

    - - - - -
    - - - -
    -

    rotation :Number

    - - -
    -
    - - - -
    -

    The rotation of the object in radians.

    -
    - - - - - -
    - - - - - - - -
    Inherited From:
    -
    - - - - - - - - - - - - - -
    Source - - pixi/display/DisplayObject.js, line 38 -
    - - - - - - - -
    - - - -
    - - - -
    -

    scale :Point

    - - -
    -
    - - - -
    -

    The scale factor of the object.

    -
    - - - - - -
    - - - - - - - -
    Inherited From:
    -
    - - - - - - - - - - - - - -
    Source - - pixi/display/DisplayObject.js, line 22 -
    - - - - - - - -
    - - - -
    - - - -
    -

    <readonly> stage :Stage

    - - -
    -
    - - - -
    -

    [read-only] The stage the display object is connected to, or undefined if it is not connected to the stage.

    -
    - - - - - -
    - - - - - - - -
    Inherited From:
    -
    - - - - - - - - - - - - - -
    Source - - pixi/display/DisplayObject.js, line 88 -
    - - - - - - -
    @@ -5406,68 +4654,7 @@ This is the same as y - offsetY.

    Source - - gameobjects/Graphics.js, line 37 -
    - - - - - - - - - - - - - - - -
    -

    visible :Boolean

    - - -
    -
    - - - -
    -

    The visibility of the object.

    -
    - - - - - -
    - - - - - - - -
    Inherited From:
    -
    - - - - - - - - - - - - - -
    Source - - pixi/display/DisplayObject.js, line 54 + gameobjects/Graphics.js, line 59
    @@ -5610,7 +4797,7 @@ which contains the x/y coordinates relative to the Game Objects parent.

    <readonly> worldAlpha :Number

    + id="x">x :number
    @@ -5619,7 +4806,7 @@ which contains the x/y coordinates relative to the Game Objects parent.

    -

    [read-only] The multiplied alpha of the displayObject

    +

    The position of the Game Object on the x axis relative to the local coordinates of the parent.

    @@ -5636,7 +4823,7 @@ which contains the x/y coordinates relative to the Game Objects parent.

    Inherited From:
    @@ -5652,7 +4839,7 @@ which contains the x/y coordinates relative to the Game Objects parent.

    Source - - pixi/display/DisplayObject.js, line 97 + gameobjects/components/PhysicsBody.js, line 98
    @@ -5671,7 +4858,7 @@ which contains the x/y coordinates relative to the Game Objects parent.

    <readonly> worldPosition :Point

    + id="y">y :number
    @@ -5680,8 +4867,7 @@ which contains the x/y coordinates relative to the Game Objects parent.

    -

    The position of the Display Object based on the world transform. -This value is updated at the end of updateTransform and takes all parent transforms into account.

    +

    The position of the Game Object on the y axis relative to the local coordinates of the parent.

    @@ -5698,7 +4884,7 @@ This value is updated at the end of updateTransform and takes all parent transfo
    Inherited From:
    @@ -5714,314 +4900,7 @@ This value is updated at the end of updateTransform and takes all parent transfo
    Source - - pixi/display/DisplayObject.js, line 116 -
    - - - - - - - -
    - - - -
    - - - -
    -

    <readonly> worldRotation :Number

    - - -
    -
    - - - -
    -

    The rotation of the Display Object, in radians, based on the world transform. -This value is updated at the end of updateTransform and takes all parent transforms into account.

    -
    - - - - - -
    - - - - - - - -
    Inherited From:
    -
    - - - - - - - - - - - - - -
    Source - - pixi/display/DisplayObject.js, line 136 -
    - - - - - - - -
    - - - -
    - - - -
    -

    <readonly> worldScale :Point

    - - -
    -
    - - - -
    -

    The scale of the Display Object based on the world transform. -This value is updated at the end of updateTransform and takes all parent transforms into account.

    -
    - - - - - -
    - - - - - - - -
    Inherited From:
    -
    - - - - - - - - - - - - - -
    Source - - pixi/display/DisplayObject.js, line 126 -
    - - - - - - - -
    - - - -
    - - - -
    -

    worldVisible :Boolean

    - - -
    -
    - - - -
    -

    [read-only] Indicates if the sprite is globally visible.

    -
    - - - - - -
    - - - - - - - -
    Inherited From:
    -
    - - - - - - - - - - - - - -
    Source - - pixi/display/DisplayObject.js, line 258 -
    - - - - - - - -
    - - - -
    - - - -
    -

    x :Number

    - - -
    -
    - - - -
    -

    The position of the displayObject on the x axis relative to the local coordinates of the parent.

    -
    - - - - - -
    - - - - - - - -
    Inherited From:
    -
    - - - - - - - - - - - - - -
    Source - - pixi/display/DisplayObject.js, line 722 -
    - - - - - - - -
    - - - -
    - - - -
    -

    y :Number

    - - -
    -
    - - - -
    -

    The position of the displayObject on the y axis relative to the local coordinates of the parent.

    -
    - - - - - -
    - - - - - - - -
    Inherited From:
    -
    - - - - - - - - - - - - - -
    Source - - pixi/display/DisplayObject.js, line 740 + gameobjects/components/PhysicsBody.js, line 124
    @@ -6110,7 +4989,7 @@ If you wish to re-order the layering of a Game Object then see methods like Grou

    addChild(child) → {PIXI.DisplayObject}

    + id="addChild">addChild(child) → {DisplayObject}
    @@ -6159,7 +5038,7 @@ If you wish to re-order the layering of a Game Object then see methods like Grou -PIXI.DisplayObject +DisplayObject @@ -6186,7 +5065,7 @@ If you wish to re-order the layering of a Game Object then see methods like Grou @@ -6254,7 +5133,7 @@ If you wish to re-order the layering of a Game Object then see methods like Grou

    addChildAt(child, index) → {PIXI.DisplayObject}

    + id="addChildAt">addChildAt(child, index) → {DisplayObject}
    @@ -6303,7 +5182,7 @@ If you wish to re-order the layering of a Game Object then see methods like Grou -PIXI.DisplayObject +DisplayObject @@ -6353,7 +5232,7 @@ If you wish to re-order the layering of a Game Object then see methods like Grou @@ -7311,7 +6190,7 @@ one expands it.

    Source - - pixi/primitives/Graphics.js, line 391 + pixi/primitives/Graphics.js, line 395
    @@ -7479,7 +6358,7 @@ one expands it.

    Source - - pixi/primitives/Graphics.js, line 476 + pixi/primitives/Graphics.js, line 481
    @@ -7738,7 +6617,7 @@ one expands it.

    Source - - pixi/primitives/Graphics.js, line 264 + pixi/primitives/Graphics.js, line 266
    @@ -7833,7 +6712,7 @@ one expands it.

    Source - - pixi/primitives/Graphics.js, line 618 + pixi/primitives/Graphics.js, line 623
    @@ -7972,7 +6851,7 @@ one expands it.

    Source - - gameobjects/Graphics.js, line 95 + gameobjects/Graphics.js, line 117
    @@ -8047,7 +6926,7 @@ one expands it.

    Source - - pixi/primitives/Graphics.js, line 1131 + pixi/primitives/Graphics.js, line 1136
    @@ -8237,7 +7116,7 @@ one expands it.

    Source - - pixi/primitives/Graphics.js, line 550 + pixi/primitives/Graphics.js, line 555
    @@ -8450,7 +7329,7 @@ one expands it.

    Source - - pixi/primitives/Graphics.js, line 566 + pixi/primitives/Graphics.js, line 571
    @@ -8597,7 +7476,7 @@ one expands it.

    Source - - pixi/primitives/Graphics.js, line 583 + pixi/primitives/Graphics.js, line 588
    @@ -8806,7 +7685,7 @@ one expands it.

    Source - - pixi/primitives/Graphics.js, line 519 + pixi/primitives/Graphics.js, line 524
    @@ -9018,7 +7897,7 @@ one expands it.

    Source - - pixi/primitives/Graphics.js, line 535 + pixi/primitives/Graphics.js, line 540
    @@ -9174,7 +8053,7 @@ one expands it.

    Source - - pixi/primitives/Graphics.js, line 1142 + pixi/primitives/Graphics.js, line 1147
    @@ -9269,7 +8148,7 @@ one expands it.

    Source - - pixi/primitives/Graphics.js, line 504 + pixi/primitives/Graphics.js, line 509
    @@ -9512,7 +8391,7 @@ This can be quite useful if your geometry is complicated and needs to be reused
    Source - - pixi/primitives/Graphics.js, line 636 + pixi/primitives/Graphics.js, line 643
    @@ -9607,7 +8486,7 @@ This can be quite useful if your geometry is complicated and needs to be reused
    Source - - pixi/primitives/Graphics.js, line 832 + pixi/primitives/Graphics.js, line 837
    @@ -9634,7 +8513,7 @@ This can be quite useful if your geometry is complicated and needs to be reused

    getChildAt(index) → {PIXI.DisplayObject}

    + id="getChildAt">getChildAt(index) → {DisplayObject}
    @@ -9710,7 +8589,7 @@ This can be quite useful if your geometry is complicated and needs to be reused @@ -9827,7 +8706,7 @@ This can be quite useful if your geometry is complicated and needs to be reused -PIXI.DisplayObject +DisplayObject @@ -9990,7 +8869,7 @@ This can be quite useful if your geometry is complicated and needs to be reused
    Source - - pixi/display/DisplayObjectContainer.js, line 381 + pixi/display/DisplayObjectContainer.js, line 383
    @@ -10017,7 +8896,7 @@ This can be quite useful if your geometry is complicated and needs to be reused

    kill() → {PIXI.DisplayObject}

    + id="kill">kill() → {PIXI.DisplayObject}
    @@ -10048,7 +8927,7 @@ it doesn't destroy the object or free it up from memory.

    -PIXI.DisplayObject +PIXI.DisplayObject -
    @@ -10766,7 +9645,7 @@ The current drawing position is then set to (x, y).

    Source - - gameobjects/Graphics.js, line 84 + gameobjects/Graphics.js, line 106
    @@ -10980,7 +9859,7 @@ Based on: https://stackoverflow.com/questions/785097/how-do-i-implement-a-bezier
    Source - - pixi/primitives/Graphics.js, line 210 + pixi/primitives/Graphics.js, line 211
    @@ -11007,7 +9886,7 @@ Based on: https://stackoverflow.com/questions/785097/how-do-i-implement-a-bezier

    removeChild(child) → {PIXI.DisplayObject}

    + id="removeChild">removeChild(child) → {DisplayObject}
    @@ -11056,7 +9935,7 @@ Based on: https://stackoverflow.com/questions/785097/how-do-i-implement-a-bezier -PIXI.DisplayObject +DisplayObject @@ -11083,7 +9962,7 @@ Based on: https://stackoverflow.com/questions/785097/how-do-i-implement-a-bezier @@ -11151,7 +10030,7 @@ Based on: https://stackoverflow.com/questions/785097/how-do-i-implement-a-bezier

    removeChildAt(index) → {PIXI.DisplayObject}

    + id="removeChildAt">removeChildAt(index) → {DisplayObject}
    @@ -11227,7 +10106,7 @@ Based on: https://stackoverflow.com/questions/785097/how-do-i-implement-a-bezier @@ -11490,7 +10369,7 @@ Based on: https://stackoverflow.com/questions/785097/how-do-i-implement-a-bezier
    Source - - pixi/display/DisplayObjectContainer.js, line 426 + pixi/display/DisplayObjectContainer.js, line 428
    @@ -11517,7 +10396,7 @@ Based on: https://stackoverflow.com/questions/785097/how-do-i-implement-a-bezier

    reset(x, y, health) → {PIXI.DisplayObject}

    + id="reset">reset(x, y, health) → {PIXI.DisplayObject}
    @@ -11687,7 +10566,7 @@ Based on: https://stackoverflow.com/questions/785097/how-do-i-implement-a-bezier
    -PIXI.DisplayObject +PIXI.DisplayObject -
    @@ -11755,7 +10634,7 @@ Based on: https://stackoverflow.com/questions/785097/how-do-i-implement-a-bezier

    revive(health) → {PIXI.DisplayObject}

    + id="revive">revive(health) → {PIXI.DisplayObject}
    @@ -11853,7 +10732,7 @@ Based on: https://stackoverflow.com/questions/785097/how-do-i-implement-a-bezier
    -PIXI.DisplayObject +PIXI.DisplayObject -
    @@ -11970,7 +10849,7 @@ Based on: https://stackoverflow.com/questions/785097/how-do-i-implement-a-bezier -PIXI.DisplayObject +DisplayObject @@ -12165,7 +11044,7 @@ Based on: https://stackoverflow.com/questions/785097/how-do-i-implement-a-bezier
    Source - - pixi/display/DisplayObjectContainer.js, line 410 + pixi/display/DisplayObjectContainer.js, line 412
    @@ -12241,7 +11120,7 @@ Based on: https://stackoverflow.com/questions/785097/how-do-i-implement-a-bezier -PIXI.DisplayObject +DisplayObject @@ -12264,7 +11143,7 @@ Based on: https://stackoverflow.com/questions/785097/how-do-i-implement-a-bezier -PIXI.DisplayObject +DisplayObject @@ -12333,337 +11212,6 @@ Based on: https://stackoverflow.com/questions/785097/how-do-i-implement-a-bezier -
    - - - -
    -

    toGlobal(position) → {Point}

    - - -
    -
    - - - -
    -

    Calculates the global position of the display object

    -
    - - - - - - - -
    Parameters:
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    NameTypeDescription
    position - - -Point - - - -

    The world origin to calculate from

    - - - - -
    Returns:
    -
    - - - -
    - -Point - - - -
    - -
    -

    A point object representing the position of this object

    -
    - - - -
    - - - -
    - - - - - - - -
    Inherited From:
    -
    - - - - - - - - - - - - - -
    Source - - pixi/display/DisplayObject.js, line 575 -
    - - - - - - - -
    - - - - - - - - - - - -
    - - - -
    -

    toLocal(position, from) → {Point}

    - - -
    -
    - - - -
    -

    Calculates the local position of the display object relative to another point

    -
    - - - - - - - -
    Parameters:
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    NameTypeArgumentDescription
    position - - -Point - - - - - - - - - -

    The world origin to calculate from

    from - - -PIXI.DisplayObject - - - - - - <optional>
    - - - - - -

    The DisplayObject to calculate the global position from

    - - - - -
    Returns:
    -
    - - - -
    - -Point - - - -
    - -
    -

    A point object representing the position of this object

    -
    - - - -
    - - - -
    - - - - - - - -
    Inherited From:
    -
    - - - - - - - - - - - - - -
    Source - - pixi/display/DisplayObject.js, line 589 -
    - - - - - - - -
    - - - - - - - - - - -
    @@ -12741,81 +11289,6 @@ Remember if this Game Object has any children you should call update on those to - - - - -
    -

    updateCache()

    - - -
    -
    - - - -
    -

    Generates and updates the cached sprite for this object.

    -
    - - - - - - - - - - - -
    - - - - - - - -
    Inherited From:
    -
    - - - - - - - - - - - - - -
    Source - - pixi/display/DisplayObject.js, line 565 -
    - - - - - - - -
    - - - - - - - - - - -
    @@ -12870,7 +11343,7 @@ Remember if this Game Object has any children you should call update on those to
    Source - - pixi/primitives/Graphics.js, line 955 + pixi/primitives/Graphics.js, line 960
    @@ -12919,7 +11392,7 @@ Remember if this Game Object has any children you should call update on those to Documentation generated by JSDoc 3.3.3 - on Fri Jun 17 2016 12:45:33 GMT+0100 (BST) using the DocStrap template. + on Fri Jul 08 2016 15:42:38 GMT+0100 (GMT Daylight Time) using the DocStrap template. diff --git a/docs/Phaser.Group.html b/docs/Phaser.Group.html index 3822bf4bd..55fb1817d 100644 --- a/docs/Phaser.Group.html +++ b/docs/Phaser.Group.html @@ -708,10 +708,6 @@ ComplexPrimitiveShader -
  • - DisplayObject -
  • -
  • DisplayObjectContainer
  • @@ -744,6 +740,10 @@ PIXI +
  • + DisplayObject +
  • +
  • PixiFastShader
  • @@ -1976,7 +1976,7 @@ For instance, all children are also moved/rotated/scaled when the group is moved
    Source - - core/Group.js, line 2646 + core/Group.js, line 2945
    @@ -2035,7 +2035,7 @@ and on-screen orientation and position.

    Source - - core/Group.js, line 2578 + core/Group.js, line 2594
    @@ -2054,7 +2054,7 @@ and on-screen orientation and position.

    cacheAsBitmap :Boolean

    + id="bottom">bottom :number
    @@ -2063,9 +2063,13 @@ and on-screen orientation and position.

    -

    Set if this display object is cached as a bitmap. -This basically takes a snap shot of the display object as it is at that moment. It can provide a performance benefit for complex static displayObjects. -To remove simply set this property to 'null'

    +

    The bottom coordinate of this Group.

    +

    It is derived by calling getBounds, calculating the Groups dimensions based on its +visible children.

    +

    Note that no ancestors are factored into the result, meaning that if this Group is +nested within another Group, with heavy transforms on it, the result of this property +is likely to be incorrect. It is safe to get and set this property if the Group is a +top-level descendant of Phaser.World, or untransformed parents.

    @@ -2080,11 +2084,6 @@ To remove simply set this property to 'null'

    -
    Inherited From:
    -
    - @@ -2098,7 +2097,7 @@ To remove simply set this property to 'null'

    Source - - pixi/display/DisplayObject.js, line 355 + core/Group.js, line 2782
    @@ -2164,6 +2163,130 @@ If the parent of this Group is also fixedToCamera then the offset h + + + + + + + + +
    +

    centerX :number

    + + +
    +
    + + + +
    +

    The center x coordinate of this Group.

    +

    It is derived by calling getBounds, calculating the Groups dimensions based on its +visible children.

    +

    Note that no ancestors are factored into the result, meaning that if this Group is +nested within another Group, with heavy transforms on it, the result of this property +is likely to be incorrect. It is safe to get and set this property if the Group is a +top-level descendant of Phaser.World, or untransformed parents.

    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + +
    Source - + core/Group.js, line 2617 +
    + + + + + + + +
    + + + +
    + + + +
    +

    centerY :number

    + + +
    +
    + + + +
    +

    The center y coordinate of this Group.

    +

    It is derived by calling getBounds, calculating the Groups dimensions based on its +visible children.

    +

    Note that no ancestors are factored into the result, meaning that if this Group is +nested within another Group, with heavy transforms on it, the result of this property +is likely to be incorrect. It is safe to get and set this property if the Group is a +top-level descendant of Phaser.World, or untransformed parents.

    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + +
    Source - + core/Group.js, line 2650 +
    + + + + + + +
    @@ -2583,143 +2706,6 @@ when a new object is created it is passed the following parameters to its constr - - - - -
    - - - -
    -

    filterArea :Rectangle

    - - -
    -
    - - - -
    -

    The area the filter is applied to like the hitArea this is used as more of an optimisation -rather than figuring out the dimensions of the displayObject each frame you can set this rectangle

    -
    - - - - - -
    - - - - - - - -
    Inherited From:
    -
    - - - - - - - - - - - - - -
    Source - - pixi/display/DisplayObject.js, line 164 -
    - - - - - - - -
    - - - -
    - - - -
    -

    filters :Array.<Filter>

    - - -
    -
    - - - -
    -

    Sets the filters for the displayObject. -IMPORTANT: This is a webGL only feature and will be ignored by the Canvas renderer.

    -

    To remove filters simply set this property to 'null'.

    -

    You cannot have a filter and a multiply blend mode active at the same time. Setting a filter will reset -this objects blend mode to NORMAL.

    -
    - - - -
    Type:
    -
      -
    • - -Array.<Filter> - - -
    • -
    - - - -
    - - - - - - - -
    Inherited From:
    -
    - - - - - - - - - - - - - -
    Source - - pixi/display/DisplayObject.js, line 307 -
    - - - - - - -
    @@ -2962,87 +2948,6 @@ sorting and filtering of Group children without touching their z-index (and ther - - - - -
    - - - -
    -

    hitArea :Rectangle|Circle|Ellipse|Polygon

    - - -
    -
    - - - -
    -

    This is the defined area that will pick up mouse / touch events. It is null by default. -Setting it is a neat way of optimising the hitTest function that the interactionManager will use (as it will not need to hit test all the children)

    -
    - - - -
    Type:
    -
      -
    • - -Rectangle -| - -Circle -| - -Ellipse -| - -Polygon - - -
    • -
    - - - -
    - - - - - - - -
    Inherited From:
    -
    - - - - - - - - - - - - - -
    Source - - pixi/display/DisplayObject.js, line 62 -
    - - - - - - -
    @@ -3220,6 +3125,68 @@ on any children added to, or created by, this Group.

    + + + + +
    + + + +
    +

    left :number

    + + +
    +
    + + + +
    +

    The left coordinate of this Group.

    +

    It is derived by calling getBounds, calculating the Groups dimensions based on its +visible children.

    +

    Note that no ancestors are factored into the result, meaning that if this Group is +nested within another Group, with heavy transforms on it, the result of this property +is likely to be incorrect. It is safe to get and set this property if the Group is a +top-level descendant of Phaser.World, or untransformed parents.

    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + +
    Source - + core/Group.js, line 2683 +
    + + + + + + +
    @@ -3267,70 +3234,7 @@ on any children added to, or created by, this Group.

    Source - - core/Group.js, line 2561 -
    - - - - - - - - - - - - - - - -
    -

    mask :PIXI.Graphics

    - - -
    -
    - - - -
    -

    Sets a mask for the displayObject. A mask is an object that limits the visibility of an object to the shape of the mask applied to it. -In PIXI a regular mask must be a PIXI.Graphics object. This allows for much faster masking in canvas as it utilises shape clipping. -To remove a mask, set this property to null.

    -
    - - - - - -
    - - - - - - - -
    Inherited From:
    -
    - - - - - - - - - - - - - -
    Source - - pixi/display/DisplayObject.js, line 282 + core/Group.js, line 2577
    @@ -3692,67 +3596,6 @@ is still over the Sprite or not.

    -
    - - - -
    - - - -
    -

    <readonly> parent :PIXI.DisplayObjectContainer

    - - -
    -
    - - - -
    -

    [read-only] The display object container that contains this display object.

    -
    - - - - - -
    - - - - - - - -
    Inherited From:
    -
    - - - - - - - - - - - - - -
    Source - - pixi/display/DisplayObject.js, line 79 -
    - - - - - - -
    @@ -3999,7 +3842,7 @@ Phaser.Physics.Arcade.BOTTOM_TOP

    pivot :Point

    + id="right">right :number
    @@ -4008,7 +3851,13 @@ Phaser.Physics.Arcade.BOTTOM_TOP

    -

    The pivot point of the displayObject that it rotates around

    +

    The right coordinate of this Group.

    +

    It is derived by calling getBounds, calculating the Groups dimensions based on its +visible children.

    +

    Note that no ancestors are factored into the result, meaning that if this Group is +nested within another Group, with heavy transforms on it, the result of this property +is likely to be incorrect. It is safe to get and set this property if the Group is a +top-level descendant of Phaser.World, or untransformed parents.

    @@ -4023,11 +3872,6 @@ Phaser.Physics.Arcade.BOTTOM_TOP

    -
    Inherited From:
    -
    - @@ -4041,129 +3885,7 @@ Phaser.Physics.Arcade.BOTTOM_TOP

    Source - - pixi/display/DisplayObject.js, line 30 -
    - - - - - - - - - - - - - - - -
    -

    position :Point

    - - -
    -
    - - - -
    -

    The coordinate of the object relative to the local coordinates of the parent.

    -
    - - - - - -
    - - - - - - - -
    Inherited From:
    -
    - - - - - - - - - - - - - -
    Source - - pixi/display/DisplayObject.js, line 14 -
    - - - - - - - -
    - - - -
    - - - -
    -

    renderable :Boolean

    - - -
    -
    - - - -
    -

    Can this object be rendered

    -
    - - - - - -
    - - - - - - - -
    Inherited From:
    -
    - - - - - - - - - - - - - -
    Source - - pixi/display/DisplayObject.js, line 71 + core/Group.js, line 2716
    @@ -4221,7 +3943,7 @@ This will have no impact on the rotation value of its children, but it will upda
    Source - - core/Group.js, line 2630 + core/Group.js, line 2929
    @@ -4240,7 +3962,7 @@ This will have no impact on the rotation value of its children, but it will upda

    scale :Point

    + id="top">top :number
    @@ -4249,7 +3971,13 @@ This will have no impact on the rotation value of its children, but it will upda
    -

    The scale factor of the object.

    +

    The top coordinate of this Group.

    +

    It is derived by calling getBounds, calculating the Groups dimensions based on its +visible children.

    +

    Note that no ancestors are factored into the result, meaning that if this Group is +nested within another Group, with heavy transforms on it, the result of this property +is likely to be incorrect. It is safe to get and set this property if the Group is a +top-level descendant of Phaser.World, or untransformed parents.

    @@ -4264,11 +3992,6 @@ This will have no impact on the rotation value of its children, but it will upda -
    Inherited From:
    -
    - @@ -4282,68 +4005,7 @@ This will have no impact on the rotation value of its children, but it will upda
    Source - - pixi/display/DisplayObject.js, line 22 -
    - - - - - - - -
    - - - -
    - - - -
    -

    <readonly> stage :Stage

    - - -
    -
    - - - -
    -

    [read-only] The stage the display object is connected to, or undefined if it is not connected to the stage.

    -
    - - - - - -
    - - - - - - - -
    Inherited From:
    -
    - - - - - - - - - - - - - -
    Source - - pixi/display/DisplayObject.js, line 88 + core/Group.js, line 2749
    @@ -4399,7 +4061,7 @@ This will have no impact on the rotation value of its children, but it will upda
    Source - - core/Group.js, line 2544 + core/Group.js, line 2560
    @@ -4518,7 +4180,7 @@ This will have no impact on the rotation value of its children, but it will upda
    Source - - core/Group.js, line 2639 + core/Group.js, line 2938
    @@ -4588,314 +4250,6 @@ This will have no impact on the rotation value of its children, but it will upda -
    - - - -
    - - - -
    -

    <readonly> worldAlpha :Number

    - - -
    -
    - - - -
    -

    [read-only] The multiplied alpha of the displayObject

    -
    - - - - - -
    - - - - - - - -
    Inherited From:
    -
    - - - - - - - - - - - - - -
    Source - - pixi/display/DisplayObject.js, line 97 -
    - - - - - - - -
    - - - -
    - - - -
    -

    <readonly> worldPosition :Point

    - - -
    -
    - - - -
    -

    The position of the Display Object based on the world transform. -This value is updated at the end of updateTransform and takes all parent transforms into account.

    -
    - - - - - -
    - - - - - - - -
    Inherited From:
    -
    - - - - - - - - - - - - - -
    Source - - pixi/display/DisplayObject.js, line 116 -
    - - - - - - - -
    - - - -
    - - - -
    -

    <readonly> worldRotation :Number

    - - -
    -
    - - - -
    -

    The rotation of the Display Object, in radians, based on the world transform. -This value is updated at the end of updateTransform and takes all parent transforms into account.

    -
    - - - - - -
    - - - - - - - -
    Inherited From:
    -
    - - - - - - - - - - - - - -
    Source - - pixi/display/DisplayObject.js, line 136 -
    - - - - - - - -
    - - - -
    - - - -
    -

    <readonly> worldScale :Point

    - - -
    -
    - - - -
    -

    The scale of the Display Object based on the world transform. -This value is updated at the end of updateTransform and takes all parent transforms into account.

    -
    - - - - - -
    - - - - - - - -
    Inherited From:
    -
    - - - - - - - - - - - - - -
    Source - - pixi/display/DisplayObject.js, line 126 -
    - - - - - - - -
    - - - -
    - - - -
    -

    worldVisible :Boolean

    - - -
    -
    - - - -
    -

    [read-only] Indicates if the sprite is globally visible.

    -
    - - - - - -
    - - - - - - - -
    Inherited From:
    -
    - - - - - - - - - - - - - -
    Source - - pixi/display/DisplayObject.js, line 258 -
    - - - - - - -
    @@ -4945,7 +4299,7 @@ This will have no impact on the x/y coordinates of its children, but it will upd
    Source - - core/Group.js, line 2612 + core/Group.js, line 2911
    @@ -5003,7 +4357,7 @@ This will have no impact on the x/y coordinates of its children, but it will upd
    Source - - core/Group.js, line 2621 + core/Group.js, line 2920
    @@ -5485,7 +4839,7 @@ this allows you to control child ordering.

    Source - - core/Group.js, line 1374 + core/Group.js, line 1376
    @@ -5748,7 +5102,7 @@ this allows you to control child ordering.

    addChild(child) → {PIXI.DisplayObject}

    + id="addChild">addChild(child) → {DisplayObject}
    @@ -5797,7 +5151,7 @@ this allows you to control child ordering.

    -PIXI.DisplayObject +DisplayObject @@ -5824,7 +5178,7 @@ this allows you to control child ordering.

    @@ -5892,7 +5246,7 @@ this allows you to control child ordering.

    addChildAt(child, index) → {PIXI.DisplayObject}

    + id="addChildAt">addChildAt(child, index) → {DisplayObject}
    @@ -5941,7 +5295,7 @@ this allows you to control child ordering.

    -PIXI.DisplayObject +DisplayObject @@ -5991,7 +5345,7 @@ this allows you to control child ordering.

    @@ -6740,6 +6094,631 @@ This is a constant and can be one of Phaser.TOP_LEFT (default), + + + +
    +

    alignIn(container, position, offsetX, offsetY) → {Phaser.Group}

    + + +
    +
    + + + +
    +

    Aligns this Group within another Game Object, or Rectangle, known as the +'container', to one of 9 possible positions.

    +

    The container must be a Game Object, or Phaser.Rectangle object. This can include properties +such as World.bounds or Camera.view, for aligning Groups within the world +and camera bounds. Or it can include other Sprites, Images, Text objects, BitmapText, +TileSprites or Buttons.

    +

    Please note that aligning a Group to another Game Object does not make it a child of +the container. It simply modifies its position coordinates so it aligns with it.

    +

    The position constants you can use are:

    +

    Phaser.TOP_LEFT, Phaser.TOP_CENTER, Phaser.TOP_RIGHT, Phaser.LEFT_CENTER, +Phaser.CENTER, Phaser.RIGHT_CENTER, Phaser.BOTTOM_LEFT, +Phaser.BOTTOM_CENTER and Phaser.BOTTOM_RIGHT.

    +

    Groups are placed in such a way that their bounds align with the +container, taking into consideration rotation and scale of its children. +This allows you to neatly align Groups, irrespective of their position value.

    +

    The optional offsetX and offsetY arguments allow you to apply extra spacing to the final +aligned position of the Group. For example:

    +

    group.alignIn(background, Phaser.BOTTOM_RIGHT, -20, -20)

    +

    Would align the group to the bottom-right, but moved 20 pixels in from the corner. +Think of the offsets as applying an adjustment to the containers bounds before the alignment takes place. +So providing a negative offset will 'shrink' the container bounds by that amount, and providing a positive +one expands it.

    +
    + + + + + + + +
    Parameters:
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeArgumentDefaultDescription
    container + + +Phaser.Rectangle +| + +Phaser.Sprite +| + +Phaser.Image +| + +Phaser.Text +| + +Phaser.BitmapText +| + +Phaser.Button +| + +Phaser.Graphics +| + +Phaser.TileSprite + + + + + + + + + + + +

    The Game Object or Rectangle with which to align this Group to. Can also include properties such as World.bounds or Camera.view.

    position + + +integer + + + + + + <optional>
    + + + + + +
    + +

    The position constant. One of Phaser.TOP_LEFT (default), Phaser.TOP_CENTER, Phaser.TOP_RIGHT, Phaser.LEFT_CENTER, Phaser.CENTER, Phaser.RIGHT_CENTER, Phaser.BOTTOM_LEFT, Phaser.BOTTOM_CENTER or Phaser.BOTTOM_RIGHT.

    offsetX + + +integer + + + + + + <optional>
    + + + + + +
    + + 0 + +

    A horizontal adjustment of the Containers bounds, applied to the aligned position of the Game Object. Use a negative value to shrink the bounds, positive to increase it.

    offsetY + + +integer + + + + + + <optional>
    + + + + + +
    + + 0 + +

    A vertical adjustment of the Containers bounds, applied to the aligned position of the Game Object. Use a negative value to shrink the bounds, positive to increase it.

    + + + + +
    Returns:
    +
    + + + +
    + +Phaser.Group + + - +
    + +
    +

    This Group.

    +
    + + + +
    + + + +
    + + + + + + + + + + + + + + + + + + + +
    Source - + core/Group.js, line 2815 +
    + + + + + + + +
    + + + + + + + + + + + +
    + + + +
    +

    alignTo(parent, position, offsetX, offsetY) → {Phaser.Group}

    + + +
    +
    + + + +
    +

    Aligns this Group to the side of another Game Object, or Rectangle, known as the +'parent', in one of 11 possible positions.

    +

    The parent must be a Game Object, or Phaser.Rectangle object. This can include properties +such as World.bounds or Camera.view, for aligning Groups within the world +and camera bounds. Or it can include other Sprites, Images, Text objects, BitmapText, +TileSprites or Buttons.

    +

    Please note that aligning a Group to another Game Object does not make it a child of +the parent. It simply modifies its position coordinates so it aligns with it.

    +

    The position constants you can use are:

    +

    Phaser.TOP_LEFT (default), Phaser.TOP_CENTER, Phaser.TOP_RIGHT, Phaser.LEFT_TOP, +Phaser.LEFT_CENTER, Phaser.LEFT_BOTTOM, Phaser.RIGHT_TOP, Phaser.RIGHT_CENTER, +Phaser.RIGHT_BOTTOM, Phaser.BOTTOM_LEFT, Phaser.BOTTOM_CENTER +and Phaser.BOTTOM_RIGHT.

    +

    Groups are placed in such a way that their bounds align with the +parent, taking into consideration rotation and scale of the children. +This allows you to neatly align Groups, irrespective of their position value.

    +

    The optional offsetX and offsetY arguments allow you to apply extra spacing to the final +aligned position of the Group. For example:

    +

    group.alignTo(background, Phaser.BOTTOM_RIGHT, -20, -20)

    +

    Would align the group to the bottom-right, but moved 20 pixels in from the corner. +Think of the offsets as applying an adjustment to the parents bounds before the alignment takes place. +So providing a negative offset will 'shrink' the parent bounds by that amount, and providing a positive +one expands it.

    +
    + + + + + + + +
    Parameters:
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeArgumentDefaultDescription
    parent + + +Phaser.Rectangle +| + +Phaser.Sprite +| + +Phaser.Image +| + +Phaser.Text +| + +Phaser.BitmapText +| + +Phaser.Button +| + +Phaser.Graphics +| + +Phaser.TileSprite + + + + + + + + + + + +

    The Game Object or Rectangle with which to align this Group to. Can also include properties such as World.bounds or Camera.view.

    position + + +integer + + + + + + <optional>
    + + + + + +
    + +

    The position constant. One of Phaser.TOP_LEFT, Phaser.TOP_CENTER, Phaser.TOP_RIGHT, Phaser.LEFT_TOP, Phaser.LEFT_CENTER, Phaser.LEFT_BOTTOM, Phaser.RIGHT_TOP, Phaser.RIGHT_CENTER, Phaser.RIGHT_BOTTOM, Phaser.BOTTOM_LEFT, Phaser.BOTTOM_CENTER or Phaser.BOTTOM_RIGHT.

    offsetX + + +integer + + + + + + <optional>
    + + + + + +
    + + 0 + +

    A horizontal adjustment of the Containers bounds, applied to the aligned position of the Game Object. Use a negative value to shrink the bounds, positive to increase it.

    offsetY + + +integer + + + + + + <optional>
    + + + + + +
    + + 0 + +

    A vertical adjustment of the Containers bounds, applied to the aligned position of the Game Object. Use a negative value to shrink the bounds, positive to increase it.

    + + + + +
    Returns:
    +
    + + + +
    + +Phaser.Group + + - +
    + +
    +

    This Group.

    +
    + + + +
    + + + +
    + + + + + + + + + + + + + + + + + + + +
    Source - + core/Group.js, line 2857 +
    + + + + + + + +
    + + + + + + + + + + +
    @@ -6868,7 +6847,7 @@ This is a constant and can be one of Phaser.TOP_LEFT (default), Source - - core/Group.js, line 1910 + core/Group.js, line 1912 @@ -7007,7 +6986,7 @@ This is a constant and can be one of Phaser.TOP_LEFT (default), Source - - core/Group.js, line 895 + core/Group.js, line 897 @@ -7220,7 +7199,7 @@ After the method parameter and context you can add as many extra parameters as y
    Source - - core/Group.js, line 1529 + core/Group.js, line 1531
    @@ -7414,7 +7393,7 @@ After the method parameter and context you can add as many extra parameters as y
    Source - - core/Group.js, line 1442 + core/Group.js, line 1444
    @@ -7586,7 +7565,7 @@ After the method parameter and context you can add as many extra parameters as y
    Source - - core/Group.js, line 1476 + core/Group.js, line 1478
    @@ -7874,7 +7853,7 @@ After the method parameter and context you can add as many extra parameters as y
    Source - - core/Group.js, line 1341 + core/Group.js, line 1343
    @@ -8138,7 +8117,7 @@ After the method parameter and context you can add as many extra parameters as y
    Source - - core/Group.js, line 1205 + core/Group.js, line 1207
    @@ -8228,7 +8207,7 @@ After the method parameter and context you can add as many extra parameters as y
    Source - - core/Group.js, line 2293 + core/Group.js, line 2309
    @@ -8318,7 +8297,7 @@ After the method parameter and context you can add as many extra parameters as y
    Source - - core/Group.js, line 2281 + core/Group.js, line 2297
    @@ -9143,7 +9122,7 @@ It should return -1 if a > b, 1 if a < b or 0 if
    Source - - core/Group.js, line 1886 + core/Group.js, line 1888
    @@ -9292,7 +9271,7 @@ It should return -1 if a > b, 1 if a < b or 0 if
    Source - - core/Group.js, line 1942 + core/Group.js, line 1944
    @@ -9471,7 +9450,7 @@ It should return -1 if a > b, 1 if a < b or 0 if
    Source - - core/Group.js, line 2507 + core/Group.js, line 2523
    @@ -9660,7 +9639,7 @@ It should return -1 if a > b, 1 if a < b or 0 if
    Source - - core/Group.js, line 1425 + core/Group.js, line 1427
    @@ -9859,7 +9838,7 @@ healthyList.callAll('attack');

    Note: Currently this will skip any

    Source - - core/Group.js, line 1668 + core/Group.js, line 1670
    @@ -10112,7 +10091,7 @@ healthyList.callAll('attack');

    Note: Currently this will skip any

    Source - - core/Group.js, line 1708 + core/Group.js, line 1710
    @@ -10324,7 +10303,7 @@ healthyList.callAll('attack');

    Note: Currently this will skip any

    Source - - core/Group.js, line 1790 + core/Group.js, line 1792
    @@ -10536,7 +10515,7 @@ healthyList.callAll('attack');

    Note: Currently this will skip any

    Source - - core/Group.js, line 1818 + core/Group.js, line 1820
    @@ -10748,201 +10727,7 @@ healthyList.callAll('attack');

    Note: Currently this will skip any

    Source - - core/Group.js, line 1762 -
    - - - - - - - - - - - - - - - - - - - - - - - -
    -

    generateTexture(resolution, scaleMode, renderer) → {PIXI.RenderTexture}

    - - -
    -
    - - - -
    -

    Useful function that returns a texture of the displayObject object that can then be used to create sprites -This can be quite useful if your displayObject is static / complicated and needs to be reused multiple times.

    -
    - - - - - - - -
    Parameters:
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    NameTypeDescription
    resolution - - -Number - - - -

    The resolution of the texture being generated

    scaleMode - - -Number - - - -

    See {{#crossLink "PIXI/scaleModes:property"}}PIXI.scaleModes{{/crossLink}} for possible values

    renderer - - -PIXI.CanvasRenderer -| - -PIXI.WebGLRenderer - - - -

    The renderer used to generate the texture.

    - - - - -
    Returns:
    -
    - - - -
    - -PIXI.RenderTexture - - - -
    - -
    -

    a texture of the graphics object

    -
    - - - -
    - - - -
    - - - - - - - -
    Inherited From:
    -
    - - - - - - - - - - - - - -
    Source - - pixi/display/DisplayObject.js, line 541 + core/Group.js, line 1764
    @@ -11175,7 +10960,7 @@ This can be quite useful if your displayObject is static / complicated and needs
    Source - - core/Group.js, line 2190 + core/Group.js, line 2192
    @@ -11411,7 +11196,7 @@ the same name only the first instance is returned.

    Source - - core/Group.js, line 1030 + core/Group.js, line 1032
    @@ -11438,7 +11223,7 @@ the same name only the first instance is returned.

    getChildAt(index) → {PIXI.DisplayObject}

    + id="getChildAt">getChildAt(index) → {DisplayObject}
    @@ -11514,7 +11299,7 @@ the same name only the first instance is returned.

    @@ -11631,7 +11416,7 @@ the same name only the first instance is returned.

    -PIXI.DisplayObject +DisplayObject @@ -11726,7 +11511,7 @@ the same name only the first instance is returned.

    getClosestTo(object) → {any}

    + id="getClosestTo">getClosestTo(object, callback, callbackContext) → {any}
    @@ -11735,9 +11520,13 @@ the same name only the first instance is returned.

    -

    Get the closest child to given Object.

    +

    Get the closest child to given Object, with optional callback to filter children.

    This can be a Sprite, Group, Image or any object with public x and y properties.

    'close' is determined by the distance from the objects x and y properties compared to the childs x and y properties.

    +

    You can use the optional callback argument to apply your own filter to the distance checks. +If the child is closer then the previous child, it will be sent to callback as the first argument, +with the distance as the second. The callback should return true if it passes your +filtering criteria, otherwise it should return false.

    @@ -11759,6 +11548,8 @@ the same name only the first instance is returned.

    Type + Argument + @@ -11784,6 +11575,14 @@ the same name only the first instance is returned.

    + + + + + + + + @@ -11791,6 +11590,72 @@ the same name only the first instance is returned.

    + + + + callback + + + + + +function + + + + + + + + + <optional>
    + + + + + + + + + + +

    The function that each child will be evaluated against. Each child of the group will be passed to it as its first parameter, with the distance as the second. It should return true if the child passes the matching criteria.

    + + + + + + + callbackContext + + + + + +object + + + + + + + + + <optional>
    + + + + + + + + + + +

    The context in which the function should be called (usually 'this').

    + + + @@ -11810,7 +11675,7 @@ the same name only the first instance is returned.

    -

    The child closest to given object, or null if no child was found.

    +

    The child closest to given object, or null if no child was found.

    @@ -11840,7 +11705,7 @@ the same name only the first instance is returned.

    Source - - core/Group.js, line 2207 + core/Group.js, line 2209
    @@ -12167,7 +12032,7 @@ will be reset and/or have a new texture loaded on it. This is handled by G
    Source - - core/Group.js, line 2074 + core/Group.js, line 2076
    @@ -12494,7 +12359,7 @@ will be reset and/or have a new texture loaded on it. This is handled by G
    Source - - core/Group.js, line 2104 + core/Group.js, line 2106
    @@ -12859,7 +12724,7 @@ will be reset and/or have a new texture loaded on it. This is handled by G
    Source - - core/Group.js, line 2040 + core/Group.js, line 2042
    @@ -12886,7 +12751,7 @@ will be reset and/or have a new texture loaded on it. This is handled by G

    getFurthestFrom(object) → {any}

    + id="getFurthestFrom">getFurthestFrom(object, callback, callbackContext) → {any}
    @@ -12895,9 +12760,13 @@ will be reset and/or have a new texture loaded on it. This is handled by G
    -

    Get the child furthest away from the given Object.

    +

    Get the child furthest away from the given Object, with optional callback to filter children.

    This can be a Sprite, Group, Image or any object with public x and y properties.

    'furthest away' is determined by the distance from the objects x and y properties compared to the childs x and y properties.

    +

    You can use the optional callback argument to apply your own filter to the distance checks. +If the child is closer then the previous child, it will be sent to callback as the first argument, +with the distance as the second. The callback should return true if it passes your +filtering criteria, otherwise it should return false.

    @@ -12919,6 +12788,8 @@ will be reset and/or have a new texture loaded on it. This is handled by G Type + Argument + @@ -12944,6 +12815,14 @@ will be reset and/or have a new texture loaded on it. This is handled by G + + + + + + + + @@ -12951,6 +12830,72 @@ will be reset and/or have a new texture loaded on it. This is handled by G + + + + callback + + + + + +function + + + + + + + + + <optional>
    + + + + + + + + + + +

    The function that each child will be evaluated against. Each child of the group will be passed to it as its first parameter, with the distance as the second. It should return true if the child passes the matching criteria.

    + + + + + + + callbackContext + + + + + +object + + + + + + + + + <optional>
    + + + + + + + + + + +

    The context in which the function should be called (usually 'this').

    + + + @@ -12970,7 +12915,7 @@ will be reset and/or have a new texture loaded on it. This is handled by G
    -

    The child furthest from the given object, or null if no child was found.

    +

    The child furthest from the given object, or null if no child was found.

    @@ -13000,7 +12945,7 @@ will be reset and/or have a new texture loaded on it. This is handled by G
    Source - - core/Group.js, line 2244 + core/Group.js, line 2253
    @@ -13139,7 +13084,7 @@ will be reset and/or have a new texture loaded on it. This is handled by G
    Source - - core/Group.js, line 1017 + core/Group.js, line 1019
    @@ -13234,7 +13179,7 @@ will be reset and/or have a new texture loaded on it. This is handled by G
    Source - - pixi/display/DisplayObjectContainer.js, line 381 + pixi/display/DisplayObjectContainer.js, line 383
    @@ -13432,7 +13377,7 @@ will be reset and/or have a new texture loaded on it. This is handled by G
    Source - - core/Group.js, line 2305 + core/Group.js, line 2321
    @@ -13523,7 +13468,7 @@ will be reset and/or have a new texture loaded on it. This is handled by G
    Source - - core/Group.js, line 2173 + core/Group.js, line 2175
    @@ -13686,7 +13631,7 @@ will be reset and/or have a new texture loaded on it. This is handled by G
    Source - - core/Group.js, line 1092 + core/Group.js, line 1094
    @@ -14040,7 +13985,7 @@ element and the entire array will be applied to the callback function.

    Source - - core/Group.js, line 1967 + core/Group.js, line 1969
    @@ -14234,7 +14179,7 @@ element and the entire array will be applied to the callback function.

    Source - - core/Group.js, line 2375 + core/Group.js, line 2391
    @@ -14373,7 +14318,7 @@ element and the entire array will be applied to the callback function.

    Source - - core/Group.js, line 957 + core/Group.js, line 959
    @@ -14512,7 +14457,7 @@ element and the entire array will be applied to the callback function.

    Source - - core/Group.js, line 933 + core/Group.js, line 935
    @@ -14701,7 +14646,7 @@ element and the entire array will be applied to the callback function.

    Source - - core/Group.js, line 1408 + core/Group.js, line 1410
    @@ -14792,7 +14737,7 @@ element and the entire array will be applied to the callback function.

    Source - - core/Group.js, line 821 + core/Group.js, line 823
    @@ -14869,7 +14814,7 @@ element and the entire array will be applied to the callback function.

    Source - - core/Group.js, line 1647 + core/Group.js, line 1649
    @@ -14946,7 +14891,7 @@ element and the entire array will be applied to the callback function.

    Source - - core/Group.js, line 1602 + core/Group.js, line 1604
    @@ -15037,7 +14982,7 @@ element and the entire array will be applied to the callback function.

    Source - - core/Group.js, line 850 + core/Group.js, line 852
    @@ -15272,7 +15217,7 @@ element and the entire array will be applied to the callback function.

    Source - - core/Group.js, line 2327 + core/Group.js, line 2343
    @@ -15492,7 +15437,7 @@ more than one Game Object sharing the same BaseTexture.

    Source - - core/Group.js, line 2404 + core/Group.js, line 2420
    @@ -15742,7 +15687,7 @@ more than one Game Object sharing the same BaseTexture.

    Source - - core/Group.js, line 2452 + core/Group.js, line 2468
    @@ -15769,7 +15714,7 @@ more than one Game Object sharing the same BaseTexture.

    removeChild(child) → {PIXI.DisplayObject}

    + id="removeChild">removeChild(child) → {DisplayObject}
    @@ -15818,7 +15763,7 @@ more than one Game Object sharing the same BaseTexture.

    -PIXI.DisplayObject +DisplayObject @@ -15845,7 +15790,7 @@ more than one Game Object sharing the same BaseTexture.

    @@ -15913,7 +15858,7 @@ more than one Game Object sharing the same BaseTexture.

    removeChildAt(index) → {PIXI.DisplayObject}

    + id="removeChildAt">removeChildAt(index) → {DisplayObject}
    @@ -15989,7 +15934,7 @@ more than one Game Object sharing the same BaseTexture.

    @@ -16392,7 +16337,7 @@ This call will return false if the child is not in the hash.

    Source - - pixi/display/DisplayObjectContainer.js, line 426 + pixi/display/DisplayObjectContainer.js, line 428
    @@ -16556,7 +16501,7 @@ This call will return false if the child is not in the hash.

    Source - - core/Group.js, line 1053 + core/Group.js, line 1055
    @@ -16854,7 +16799,7 @@ This call will return false if the child is not in the hash.

    Source - - core/Group.js, line 2134 + core/Group.js, line 2136
    @@ -17014,7 +16959,7 @@ This call will return false if the child is not in the hash.

    Source - - core/Group.js, line 794 + core/Group.js, line 796
    @@ -17085,7 +17030,7 @@ This call will return false if the child is not in the hash.

    Source - - core/Group.js, line 1003 + core/Group.js, line 1005
    @@ -17224,7 +17169,7 @@ This call will return false if the child is not in the hash.

    Source - - core/Group.js, line 914 + core/Group.js, line 916
    @@ -17606,7 +17551,7 @@ This call will return false if the child is not in the hash.

    Source - - core/Group.js, line 1234 + core/Group.js, line 1236
    @@ -17935,7 +17880,7 @@ If you need that ability please see Group.setAllChildren.

    Source - - core/Group.js, line 1265 + core/Group.js, line 1267
    @@ -18264,7 +18209,7 @@ Unlike with setAll the property is NOT set on child Groups itself.<
    Source - - core/Group.js, line 1300 + core/Group.js, line 1302
    @@ -18340,7 +18285,7 @@ Unlike with setAll the property is NOT set on child Groups itself.< -PIXI.DisplayObject +DisplayObject @@ -18722,7 +18667,7 @@ Unlike with setAll the property is NOT set on child Groups itself.<
    Source - - core/Group.js, line 1127 + core/Group.js, line 1129
    @@ -18846,7 +18791,7 @@ Unlike with setAll the property is NOT set on child Groups itself.<
    Source - - pixi/display/DisplayObjectContainer.js, line 410 + pixi/display/DisplayObjectContainer.js, line 412
    @@ -19028,7 +18973,7 @@ alphabetical sorting, mixing strings and numbers, and Unicode sorting. See MDN f
    Source - - core/Group.js, line 1846 + core/Group.js, line 1848
    @@ -19217,7 +19162,7 @@ alphabetical sorting, mixing strings and numbers, and Unicode sorting. See MDN f
    Source - - core/Group.js, line 1391 + core/Group.js, line 1393
    @@ -19360,7 +19305,7 @@ alphabetical sorting, mixing strings and numbers, and Unicode sorting. See MDN f
    Source - - core/Group.js, line 879 + core/Group.js, line 881
    @@ -19436,7 +19381,7 @@ alphabetical sorting, mixing strings and numbers, and Unicode sorting. See MDN f -PIXI.DisplayObject +DisplayObject @@ -19459,7 +19404,7 @@ alphabetical sorting, mixing strings and numbers, and Unicode sorting. See MDN f -PIXI.DisplayObject +DisplayObject @@ -19528,337 +19473,6 @@ alphabetical sorting, mixing strings and numbers, and Unicode sorting. See MDN f -
    - - - -
    -

    toGlobal(position) → {Point}

    - - -
    -
    - - - -
    -

    Calculates the global position of the display object

    -
    - - - - - - - -
    Parameters:
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    NameTypeDescription
    position - - -Point - - - -

    The world origin to calculate from

    - - - - -
    Returns:
    -
    - - - -
    - -Point - - - -
    - -
    -

    A point object representing the position of this object

    -
    - - - -
    - - - -
    - - - - - - - -
    Inherited From:
    -
    - - - - - - - - - - - - - -
    Source - - pixi/display/DisplayObject.js, line 575 -
    - - - - - - - -
    - - - - - - - - - - - -
    - - - -
    -

    toLocal(position, from) → {Point}

    - - -
    -
    - - - -
    -

    Calculates the local position of the display object relative to another point

    -
    - - - - - - - -
    Parameters:
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    NameTypeArgumentDescription
    position - - -Point - - - - - - - - - -

    The world origin to calculate from

    from - - -PIXI.DisplayObject - - - - - - <optional>
    - - - - - -

    The DisplayObject to calculate the global position from

    - - - - -
    Returns:
    -
    - - - -
    - -Point - - - -
    - -
    -

    A point object representing the position of this object

    -
    - - - -
    - - - -
    - - - - - - - -
    Inherited From:
    -
    - - - - - - - - - - - - - -
    Source - - pixi/display/DisplayObject.js, line 589 -
    - - - - - - - -
    - - - - - - - - - - -
    @@ -19915,82 +19529,7 @@ alphabetical sorting, mixing strings and numbers, and Unicode sorting. See MDN f
    Source - - core/Group.js, line 1630 -
    - - - - - - - - - - - - - - - - - - - - - - - -
    -

    updateCache()

    - - -
    -
    - - - -
    -

    Generates and updates the cached sprite for this object.

    -
    - - - - - - - - - - - -
    - - - - - - - -
    Inherited From:
    -
    - - - - - - - - - - - - - -
    Source - - pixi/display/DisplayObject.js, line 565 + core/Group.js, line 1632
    @@ -20233,7 +19772,7 @@ alphabetical sorting, mixing strings and numbers, and Unicode sorting. See MDN f
    Source - - core/Group.js, line 981 + core/Group.js, line 983
    @@ -20282,7 +19821,7 @@ alphabetical sorting, mixing strings and numbers, and Unicode sorting. See MDN f Documentation generated by JSDoc 3.3.3 - on Fri Jun 17 2016 12:45:33 GMT+0100 (BST) using the DocStrap template. + on Fri Jul 08 2016 15:42:39 GMT+0100 (GMT Daylight Time) using the DocStrap template. diff --git a/docs/Phaser.Image.html b/docs/Phaser.Image.html index c75836d9e..7c7699922 100644 --- a/docs/Phaser.Image.html +++ b/docs/Phaser.Image.html @@ -708,10 +708,6 @@ ComplexPrimitiveShader -
  • - DisplayObject -
  • -
  • DisplayObjectContainer
  • @@ -744,6 +740,10 @@ PIXI +
  • + DisplayObject +
  • +
  • PixiFastShader
  • @@ -1650,67 +1650,6 @@ However you can use Group.getFirstAlive in conjunction with this pr -
    - - - -
    - - - -
    -

    alpha :Number

    - - -
    -
    - - - -
    -

    The opacity of the object.

    -
    - - - - - -
    - - - - - - - -
    Inherited From:
    -
    - - - - - - - - - - - - - -
    Source - - pixi/display/DisplayObject.js, line 46 -
    - - - - - - -
    @@ -2102,69 +2041,6 @@ This is the same as y + height - offsetY.

    - - - - -
    - - - -
    -

    cacheAsBitmap :Boolean

    - - -
    -
    - - - -
    -

    Set if this display object is cached as a bitmap. -This basically takes a snap shot of the display object as it is at that moment. It can provide a performance benefit for complex static displayObjects. -To remove simply set this property to 'null'

    -
    - - - - - -
    - - - - - - - -
    Inherited From:
    -
    - - - - - - - - - - - - - -
    Source - - pixi/display/DisplayObject.js, line 355 -
    - - - - - - -
    @@ -2876,143 +2752,6 @@ Game Object, or any of its components.

    - - - - -
    - - - -
    -

    filterArea :Rectangle

    - - -
    -
    - - - -
    -

    The area the filter is applied to like the hitArea this is used as more of an optimisation -rather than figuring out the dimensions of the displayObject each frame you can set this rectangle

    -
    - - - - - -
    - - - - - - - -
    Inherited From:
    -
    - - - - - - - - - - - - - -
    Source - - pixi/display/DisplayObject.js, line 164 -
    - - - - - - - -
    - - - -
    - - - -
    -

    filters :Array.<Filter>

    - - -
    -
    - - - -
    -

    Sets the filters for the displayObject. -IMPORTANT: This is a webGL only feature and will be ignored by the Canvas renderer.

    -

    To remove filters simply set this property to 'null'.

    -

    You cannot have a filter and a multiply blend mode active at the same time. Setting a filter will reset -this objects blend mode to NORMAL.

    -
    - - - -
    Type:
    -
      -
    • - -Array.<Filter> - - -
    • -
    - - - -
    - - - - - - - -
    Inherited From:
    -
    - - - - - - - - - - - - - -
    Source - - pixi/display/DisplayObject.js, line 307 -
    - - - - - - -
    @@ -3397,87 +3136,6 @@ This property is mostly used internally by the physics systems, but is exposed f - - - - -
    - - - -
    -

    hitArea :Rectangle|Circle|Ellipse|Polygon

    - - -
    -
    - - - -
    -

    This is the defined area that will pick up mouse / touch events. It is null by default. -Setting it is a neat way of optimising the hitTest function that the interactionManager will use (as it will not need to hit test all the children)

    -
    - - - -
    Type:
    -
      -
    • - -Rectangle -| - -Circle -| - -Ellipse -| - -Polygon - - -
    • -
    - - - -
    - - - - - - - -
    Inherited From:
    -
    - - - - - - - - - - - - - -
    Source - - pixi/display/DisplayObject.js, line 62 -
    - - - - - - -
    @@ -3703,6 +3361,9 @@ for this Game Object and it will then start to process click / touch events and

    You can then access the Input Handler via this.input.

    Note that Input related events are dispatched from this.events, i.e.: events.onInputDown.

    If you set this property to false it will stop the Input Handler from processing any more input events.

    +

    If you want to temporarily disable input for a Game Object, then it's better to set +input.enabled = false, as it won't reset any of the Input Handlers internal properties. +You can then toggle this back on as needed.

    @@ -3735,7 +3396,7 @@ for this Game Object and it will then start to process click / touch events and
    Source - - gameobjects/components/InputEnabled.js, line 38 + gameobjects/components/InputEnabled.js, line 42
    @@ -3958,69 +3619,6 @@ When it reaches zero it will call the kill method.

    - - - - - - - - -
    -

    mask :PIXI.Graphics

    - - -
    -
    - - - -
    -

    Sets a mask for the displayObject. A mask is an object that limits the visibility of an object to the shape of the mask applied to it. -In PIXI a regular mask must be a PIXI.Graphics object. This allows for much faster masking in canvas as it utilises shape clipping. -To remove a mask, set this property to null.

    -
    - - - - - -
    - - - - - - - -
    Inherited From:
    -
    - - - - - - - - - - - - - -
    Source - - pixi/display/DisplayObject.js, line 282 -
    - - - - - - -
    @@ -4209,67 +3807,6 @@ It will only be > 0 if anchor.y is not equal to zero.

    - - - - -
    - - - -
    -

    <readonly> parent :PIXI.DisplayObjectContainer

    - - -
    -
    - - - -
    -

    [read-only] The display object container that contains this display object.

    -
    - - - - - -
    - - - - - - - -
    Inherited From:
    -
    - - - - - - - - - - - - - -
    Source - - pixi/display/DisplayObject.js, line 79 -
    - - - - - - -
    @@ -4334,128 +3871,6 @@ such as with Buttons or other Input events.

    - - - - -
    - - - -
    -

    pivot :Point

    - - -
    -
    - - - -
    -

    The pivot point of the displayObject that it rotates around

    -
    - - - - - -
    - - - - - - - -
    Inherited From:
    -
    - - - - - - - - - - - - - -
    Source - - pixi/display/DisplayObject.js, line 30 -
    - - - - - - - -
    - - - -
    - - - -
    -

    position :Point

    - - -
    -
    - - - -
    -

    The coordinate of the object relative to the local coordinates of the parent.

    -
    - - - - - -
    - - - - - - - -
    Inherited From:
    -
    - - - - - - - - - - - - - -
    Source - - pixi/display/DisplayObject.js, line 14 -
    - - - - - - -
    @@ -4578,67 +3993,6 @@ such as with Buttons or other Input events.

    - - - - -
    - - - -
    -

    renderable :Boolean

    - - -
    -
    - - - -
    -

    Can this object be rendered

    -
    - - - - - -
    - - - - - - - -
    Inherited From:
    -
    - - - - - - - - - - - - - -
    Source - - pixi/display/DisplayObject.js, line 71 -
    - - - - - - -
    @@ -4763,128 +4117,6 @@ This is the same as x + width - offsetX.

    - - - - -
    - - - -
    -

    rotation :Number

    - - -
    -
    - - - -
    -

    The rotation of the object in radians.

    -
    - - - - - -
    - - - - - - - -
    Inherited From:
    -
    - - - - - - - - - - - - - -
    Source - - pixi/display/DisplayObject.js, line 38 -
    - - - - - - - -
    - - - -
    - - - -
    -

    scale :Point

    - - -
    -
    - - - -
    -

    The scale factor of the object.

    -
    - - - - - -
    - - - - - - - -
    Inherited From:
    -
    - - - - - - - - - - - - - -
    Source - - pixi/display/DisplayObject.js, line 22 -
    - - - - - - -
    @@ -5012,67 +4244,6 @@ This is the same as x + width - offsetX.

    - - - - -
    - - - -
    -

    <readonly> stage :Stage

    - - -
    -
    - - - -
    -

    [read-only] The stage the display object is connected to, or undefined if it is not connected to the stage.

    -
    - - - - - -
    - - - - - - - -
    Inherited From:
    -
    - - - - - - - - - - - - - -
    Source - - pixi/display/DisplayObject.js, line 88 -
    - - - - - - -
    @@ -5380,67 +4551,6 @@ This is the same as y - offsetY.

    - - - - -
    - - - -
    -

    visible :Boolean

    - - -
    -
    - - - -
    -

    The visibility of the object.

    -
    - - - - - -
    - - - - - - - -
    Inherited From:
    -
    - - - - - - - - - - - - - -
    Source - - pixi/display/DisplayObject.js, line 54 -
    - - - - - - -
    @@ -5565,436 +4675,6 @@ which contains the x/y coordinates relative to the Game Objects parent.

    - - - - -
    - - - -
    -

    <readonly> worldAlpha :Number

    - - -
    -
    - - - -
    -

    [read-only] The multiplied alpha of the displayObject

    -
    - - - - - -
    - - - - - - - -
    Inherited From:
    -
    - - - - - - - - - - - - - -
    Source - - pixi/display/DisplayObject.js, line 97 -
    - - - - - - - -
    - - - -
    - - - -
    -

    <readonly> worldPosition :Point

    - - -
    -
    - - - -
    -

    The position of the Display Object based on the world transform. -This value is updated at the end of updateTransform and takes all parent transforms into account.

    -
    - - - - - -
    - - - - - - - -
    Inherited From:
    -
    - - - - - - - - - - - - - -
    Source - - pixi/display/DisplayObject.js, line 116 -
    - - - - - - - -
    - - - -
    - - - -
    -

    <readonly> worldRotation :Number

    - - -
    -
    - - - -
    -

    The rotation of the Display Object, in radians, based on the world transform. -This value is updated at the end of updateTransform and takes all parent transforms into account.

    -
    - - - - - -
    - - - - - - - -
    Inherited From:
    -
    - - - - - - - - - - - - - -
    Source - - pixi/display/DisplayObject.js, line 136 -
    - - - - - - - -
    - - - -
    - - - -
    -

    <readonly> worldScale :Point

    - - -
    -
    - - - -
    -

    The scale of the Display Object based on the world transform. -This value is updated at the end of updateTransform and takes all parent transforms into account.

    -
    - - - - - -
    - - - - - - - -
    Inherited From:
    -
    - - - - - - - - - - - - - -
    Source - - pixi/display/DisplayObject.js, line 126 -
    - - - - - - - -
    - - - -
    - - - -
    -

    worldVisible :Boolean

    - - -
    -
    - - - -
    -

    [read-only] Indicates if the sprite is globally visible.

    -
    - - - - - -
    - - - - - - - -
    Inherited From:
    -
    - - - - - - - - - - - - - -
    Source - - pixi/display/DisplayObject.js, line 258 -
    - - - - - - - -
    - - - -
    - - - -
    -

    x :Number

    - - -
    -
    - - - -
    -

    The position of the displayObject on the x axis relative to the local coordinates of the parent.

    -
    - - - - - -
    - - - - - - - -
    Inherited From:
    -
    - - - - - - - - - - - - - -
    Source - - pixi/display/DisplayObject.js, line 722 -
    - - - - - - - -
    - - - -
    - - - -
    -

    y :Number

    - - -
    -
    - - - -
    -

    The position of the displayObject on the y axis relative to the local coordinates of the parent.

    -
    - - - - - -
    - - - - - - - -
    Inherited From:
    -
    - - - - - - - - - - - - - -
    Source - - pixi/display/DisplayObject.js, line 740 -
    - - - - - - -
    @@ -6075,7 +4755,7 @@ If you wish to re-order the layering of a Game Object then see methods like Grou

    addChild(child) → {PIXI.DisplayObject}

    + id="addChild">addChild(child) → {DisplayObject}
    @@ -6124,7 +4804,7 @@ If you wish to re-order the layering of a Game Object then see methods like Grou -PIXI.DisplayObject +DisplayObject @@ -6151,7 +4831,7 @@ If you wish to re-order the layering of a Game Object then see methods like Grou @@ -6219,7 +4899,7 @@ If you wish to re-order the layering of a Game Object then see methods like Grou

    addChildAt(child, index) → {PIXI.DisplayObject}

    + id="addChildAt">addChildAt(child, index) → {DisplayObject}
    @@ -6268,7 +4948,7 @@ If you wish to re-order the layering of a Game Object then see methods like Grou -PIXI.DisplayObject +DisplayObject @@ -6318,7 +4998,7 @@ If you wish to re-order the layering of a Game Object then see methods like Grou @@ -7021,7 +5701,7 @@ one expands it.

    bringToTop() → {PIXI.DisplayObject}

    + id="bringToTop">bringToTop() → {PIXI.DisplayObject}
    @@ -7051,7 +5731,7 @@ because the World is the root Group from which all Game Objects descend.

    -PIXI.DisplayObject +PIXI.DisplayObject -
    @@ -7305,7 +5985,7 @@ in which case the values are duplicated to a local object.

    destroy()

    + id="destroy">destroy(destroyChildren, destroyTexture)
    @@ -7314,84 +5994,11 @@ in which case the values are duplicated to a local object.

    -

    Destroy this DisplayObject. -Removes all references to transformCallbacks, its parent, the stage, filters, bounds, mask and cached Sprites.

    -
    - - - - - - - - - - - -
    - - - - - - - -
    Inherited From:
    -
    - - - - - - - - - - - - - -
    Source - - pixi/display/DisplayObject.js, line 223 -
    - - - - - - - -
    - - - - - - - - - - - - - - - -
    -

    generateTexture(resolution, scaleMode, renderer) → {PIXI.RenderTexture}

    - - -
    -
    - - - -
    -

    Useful function that returns a texture of the displayObject object that can then be used to create sprites -This can be quite useful if your displayObject is static / complicated and needs to be reused multiple times.

    +

    Destroys the Game Object. This removes it from its parent group, destroys the input, event and animation handlers if present +and nulls its reference to game, freeing it up for garbage collection.

    +

    If this Game Object has the Events component it will also dispatch the onDestroy event.

    +

    You can optionally also destroy the BaseTexture this Game Object is using. Be careful if you've +more than one Game Object sharing the same BaseTexture.

    @@ -7413,8 +6020,12 @@ This can be quite useful if your displayObject is static / complicated and needs Type + Argument + + Default + Description @@ -7425,72 +6036,78 @@ This can be quite useful if your displayObject is static / complicated and needs - resolution + destroyChildren -Number +boolean + + + <optional>
    + + + + + -

    The resolution of the texture being generated

    + + + + true + + + + +

    Should every child of this object have its destroy method called as well?

    - scaleMode + destroyTexture -Number +boolean - - - -

    See {{#crossLink "PIXI/scaleModes:property"}}PIXI.scaleModes{{/crossLink}} for possible values

    - - - - - - - renderer - - - - + + + <optional>
    -PIXI.CanvasRenderer -| -PIXI.WebGLRenderer - - - - + + + + + + false + + + -

    The renderer used to generate the texture.

    +

    Destroy the BaseTexture this Game Object is using? Note that if another Game Object is sharing the same BaseTexture it will invalidate it.

    @@ -7500,26 +6117,6 @@ This can be quite useful if your displayObject is static / complicated and needs -
    Returns:
    -
    - - - -
    - -PIXI.RenderTexture - - - -
    - -
    -

    a texture of the graphics object

    -
    - - - -
    -
    @@ -7532,7 +6129,7 @@ This can be quite useful if your displayObject is static / complicated and needs
    Inherited From:
    @@ -7548,7 +6145,7 @@ This can be quite useful if your displayObject is static / complicated and needs
    Source - - pixi/display/DisplayObject.js, line 541 + gameobjects/components/Destroy.js, line 37
    @@ -7726,7 +6323,7 @@ on the root most object in this Sprites display list first.

    getChildAt(index) → {PIXI.DisplayObject}

    + id="getChildAt">getChildAt(index) → {DisplayObject}
    @@ -7802,7 +6399,7 @@ on the root most object in this Sprites display list first.

    @@ -7919,7 +6516,7 @@ on the root most object in this Sprites display list first.

    -PIXI.DisplayObject +DisplayObject @@ -8082,7 +6679,7 @@ on the root most object in this Sprites display list first.

    Source - - pixi/display/DisplayObjectContainer.js, line 381 + pixi/display/DisplayObjectContainer.js, line 383
    @@ -8109,7 +6706,7 @@ on the root most object in this Sprites display list first.

    kill() → {PIXI.DisplayObject}

    + id="kill">kill() → {PIXI.DisplayObject}
    @@ -8140,7 +6737,7 @@ it doesn't destroy the object or free it up from memory.

    -PIXI.DisplayObject +PIXI.DisplayObject -
    @@ -8448,7 +7045,7 @@ and swapping it to be the key of the atlas data.

    moveDown() → {PIXI.DisplayObject}

    + id="moveDown">moveDown() → {PIXI.DisplayObject}
    @@ -8478,7 +7075,7 @@ because the World is the root Group from which all Game Objects descend.

    -PIXI.DisplayObject +PIXI.DisplayObject -
    @@ -8546,7 +7143,7 @@ because the World is the root Group from which all Game Objects descend.

    moveUp() → {PIXI.DisplayObject}

    + id="moveUp">moveUp() → {PIXI.DisplayObject}
    @@ -8576,7 +7173,7 @@ because the World is the root Group from which all Game Objects descend.

    -PIXI.DisplayObject +PIXI.DisplayObject -
    @@ -8709,7 +7306,7 @@ It should be fine for low-volume testing where physics isn't required.

    Phaser.Button | -PIXI.DisplayObject +PIXI.DisplayObject @@ -9236,7 +7833,7 @@ If you need to reset an already running animation do so directly on the Animatio

    removeChild(child) → {PIXI.DisplayObject}

    + id="removeChild">removeChild(child) → {DisplayObject}
    @@ -9285,7 +7882,7 @@ If you need to reset an already running animation do so directly on the Animatio -PIXI.DisplayObject +DisplayObject @@ -9312,7 +7909,7 @@ If you need to reset an already running animation do so directly on the Animatio @@ -9380,7 +7977,7 @@ If you need to reset an already running animation do so directly on the Animatio

    removeChildAt(index) → {PIXI.DisplayObject}

    + id="removeChildAt">removeChildAt(index) → {DisplayObject}
    @@ -9456,7 +8053,7 @@ If you need to reset an already running animation do so directly on the Animatio @@ -9719,7 +8316,7 @@ If you need to reset an already running animation do so directly on the Animatio
    Source - - pixi/display/DisplayObjectContainer.js, line 426 + pixi/display/DisplayObjectContainer.js, line 428
    @@ -9746,7 +8343,7 @@ If you need to reset an already running animation do so directly on the Animatio

    reset(x, y, health) → {PIXI.DisplayObject}

    + id="reset">reset(x, y, health) → {PIXI.DisplayObject}
    @@ -9916,7 +8513,7 @@ If you need to reset an already running animation do so directly on the Animatio
    -PIXI.DisplayObject +PIXI.DisplayObject -
    @@ -10231,7 +8828,7 @@ it can be useful to adjust the dimensions directly in this way.

    revive(health) → {PIXI.DisplayObject}

    + id="revive">revive(health) → {PIXI.DisplayObject}
    @@ -10329,7 +8926,7 @@ it can be useful to adjust the dimensions directly in this way.

    -PIXI.DisplayObject +PIXI.DisplayObject -
    @@ -10397,7 +8994,7 @@ it can be useful to adjust the dimensions directly in this way.

    sendToBack() → {PIXI.DisplayObject}

    + id="sendToBack">sendToBack() → {PIXI.DisplayObject}
    @@ -10427,7 +9024,7 @@ because the World is the root Group from which all Game Objects descend.

    -PIXI.DisplayObject +PIXI.DisplayObject -
    @@ -10544,7 +9141,7 @@ because the World is the root Group from which all Game Objects descend.

    -PIXI.DisplayObject +DisplayObject @@ -10864,7 +9461,7 @@ because the World is the root Group from which all Game Objects descend.

    Source - - pixi/display/DisplayObjectContainer.js, line 410 + pixi/display/DisplayObjectContainer.js, line 412
    @@ -11120,7 +9717,7 @@ texture this Sprite was using.

    -PIXI.DisplayObject +DisplayObject @@ -11143,7 +9740,7 @@ texture this Sprite was using.

    -PIXI.DisplayObject +DisplayObject @@ -11212,337 +9809,6 @@ texture this Sprite was using.

    -
    - - - -
    -

    toGlobal(position) → {Point}

    - - -
    -
    - - - -
    -

    Calculates the global position of the display object

    -
    - - - - - - - -
    Parameters:
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    NameTypeDescription
    position - - -Point - - - -

    The world origin to calculate from

    - - - - -
    Returns:
    -
    - - - -
    - -Point - - - -
    - -
    -

    A point object representing the position of this object

    -
    - - - -
    - - - -
    - - - - - - - -
    Inherited From:
    -
    - - - - - - - - - - - - - -
    Source - - pixi/display/DisplayObject.js, line 575 -
    - - - - - - - -
    - - - - - - - - - - - -
    - - - -
    -

    toLocal(position, from) → {Point}

    - - -
    -
    - - - -
    -

    Calculates the local position of the display object relative to another point

    -
    - - - - - - - -
    Parameters:
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    NameTypeArgumentDescription
    position - - -Point - - - - - - - - - -

    The world origin to calculate from

    from - - -PIXI.DisplayObject - - - - - - <optional>
    - - - - - -

    The DisplayObject to calculate the global position from

    - - - - -
    Returns:
    -
    - - - -
    - -Point - - - -
    - -
    -

    A point object representing the position of this object

    -
    - - - -
    - - - -
    - - - - - - - -
    Inherited From:
    -
    - - - - - - - - - - - - - -
    Source - - pixi/display/DisplayObject.js, line 589 -
    - - - - - - - -
    - - - - - - - - - - -
    @@ -11620,81 +9886,6 @@ Remember if this Game Object has any children you should call update on those to - - - - -
    -

    updateCache()

    - - -
    -
    - - - -
    -

    Generates and updates the cached sprite for this object.

    -
    - - - - - - - - - - - -
    - - - - - - - -
    Inherited From:
    -
    - - - - - - - - - - - - - -
    Source - - pixi/display/DisplayObject.js, line 565 -
    - - - - - - - -
    - - - - - - - - - - -
    @@ -11799,7 +9990,7 @@ or the rectangle it references, then you need to update the crop frame by callin Documentation generated by JSDoc 3.3.3 - on Fri Jun 17 2016 12:45:34 GMT+0100 (BST) using the DocStrap template. + on Fri Jul 08 2016 15:42:39 GMT+0100 (GMT Daylight Time) using the DocStrap template. diff --git a/docs/Phaser.ImageCollection.html b/docs/Phaser.ImageCollection.html index d85d4a366..ad1d4dceb 100644 --- a/docs/Phaser.ImageCollection.html +++ b/docs/Phaser.ImageCollection.html @@ -708,10 +708,6 @@ ComplexPrimitiveShader -
  • - DisplayObject -
  • -
  • DisplayObjectContainer
  • @@ -744,6 +740,10 @@ PIXI +
  • + DisplayObject +
  • +
  • PixiFastShader
  • @@ -2490,7 +2490,7 @@ Use setSpacing to change.

    Documentation generated by JSDoc 3.3.3 - on Fri Jun 17 2016 12:45:34 GMT+0100 (BST) using the DocStrap template. + on Fri Jul 08 2016 15:42:39 GMT+0100 (GMT Daylight Time) using the DocStrap template. diff --git a/docs/Phaser.Input.html b/docs/Phaser.Input.html index 5ba3fed0c..6f0ebb6a2 100644 --- a/docs/Phaser.Input.html +++ b/docs/Phaser.Input.html @@ -708,10 +708,6 @@ ComplexPrimitiveShader -
  • - DisplayObject -
  • -
  • DisplayObjectContainer
  • @@ -744,6 +740,10 @@ PIXI +
  • + DisplayObject +
  • +
  • PixiFastShader
  • @@ -6850,7 +6850,7 @@ This is called automatically and should not normally need to be invoked.

    Documentation generated by JSDoc 3.3.3 - on Fri Jun 17 2016 12:45:34 GMT+0100 (BST) using the DocStrap template. + on Fri Jul 08 2016 15:42:39 GMT+0100 (GMT Daylight Time) using the DocStrap template. diff --git a/docs/Phaser.InputHandler.html b/docs/Phaser.InputHandler.html index e9d3255f0..bf8ca1a80 100644 --- a/docs/Phaser.InputHandler.html +++ b/docs/Phaser.InputHandler.html @@ -708,10 +708,6 @@ ComplexPrimitiveShader -
  • - DisplayObject -
  • -
  • DisplayObjectContainer
  • @@ -744,6 +740,10 @@ PIXI +
  • + DisplayObject +
  • +
  • PixiFastShader
  • @@ -3524,7 +3524,7 @@ It compares the alpha value of the pixel and if >= InputHandler.pixelPerfectA
    Source - - input/InputHandler.js, line 801 + input/InputHandler.js, line 802
    @@ -3719,7 +3719,7 @@ Use the fastTest flag is to quickly check just the bounding hit are
    Source - - input/InputHandler.js, line 712 + input/InputHandler.js, line 713
    @@ -3914,7 +3914,7 @@ Use the fastTest flag is to quickly check just the bounding hit are
    Source - - input/InputHandler.js, line 757 + input/InputHandler.js, line 758
    @@ -3984,7 +3984,7 @@ Use the fastTest flag is to quickly check just the bounding hit are
    Source - - input/InputHandler.js, line 432 + input/InputHandler.js, line 433
    @@ -4055,7 +4055,7 @@ If it is currently the target of an active drag it will be stopped immediately;
    Source - - input/InputHandler.js, line 1443 + input/InputHandler.js, line 1444
    @@ -4125,7 +4125,7 @@ If it is currently the target of an active drag it will be stopped immediately;
    Source - - input/InputHandler.js, line 1644 + input/InputHandler.js, line 1645
    @@ -4284,7 +4284,7 @@ If it is currently the target of an active drag it will be stopped immediately;
    Source - - input/InputHandler.js, line 1365 + input/InputHandler.js, line 1366
    @@ -4628,7 +4628,7 @@ changes position and moves. The event sends 5 parameters: sprite, <
    Source - - input/InputHandler.js, line 1385 + input/InputHandler.js, line 1386
    @@ -4955,7 +4955,7 @@ For example 16x16 as the snapX and snapY would make the sprite snap to every 16
    Source - - input/InputHandler.js, line 1616 + input/InputHandler.js, line 1617
    @@ -5074,7 +5074,7 @@ For example 16x16 as the snapX and snapY would make the sprite snap to every 16
    Source - - input/InputHandler.js, line 1526 + input/InputHandler.js, line 1527
    @@ -5193,7 +5193,7 @@ For example 16x16 as the snapX and snapY would make the sprite snap to every 16
    Source - - input/InputHandler.js, line 1544 + input/InputHandler.js, line 1545
    @@ -5283,7 +5283,7 @@ For example 16x16 as the snapX and snapY would make the sprite snap to every 16
    Source - - input/InputHandler.js, line 497 + input/InputHandler.js, line 498
    @@ -5477,7 +5477,7 @@ For example 16x16 as the snapX and snapY would make the sprite snap to every 16
    Source - - input/InputHandler.js, line 1294 + input/InputHandler.js, line 1295
    @@ -5671,7 +5671,7 @@ For example 16x16 as the snapX and snapY would make the sprite snap to every 16
    Source - - input/InputHandler.js, line 1277 + input/InputHandler.js, line 1278
    @@ -5865,7 +5865,7 @@ For example 16x16 as the snapX and snapY would make the sprite snap to every 16
    Source - - input/InputHandler.js, line 1311 + input/InputHandler.js, line 1312
    @@ -6059,7 +6059,7 @@ For example 16x16 as the snapX and snapY would make the sprite snap to every 16
    Source - - input/InputHandler.js, line 1328 + input/InputHandler.js, line 1329
    @@ -6218,7 +6218,7 @@ For example 16x16 as the snapX and snapY would make the sprite snap to every 16
    Source - - input/InputHandler.js, line 1345 + input/InputHandler.js, line 1346
    @@ -6380,7 +6380,7 @@ This only checks if the Pointer is down, not if it's down over any spec
    Source - - input/InputHandler.js, line 541 + input/InputHandler.js, line 542
    @@ -6539,7 +6539,7 @@ This only checks if the Pointer is down, not if it's down over any spec
    Source - - input/InputHandler.js, line 697 + input/InputHandler.js, line 698
    @@ -6698,7 +6698,7 @@ This only checks if the Pointer is down, not if it's down over any spec
    Source - - input/InputHandler.js, line 636 + input/InputHandler.js, line 637
    @@ -6859,7 +6859,7 @@ This only checks if the Pointer is down, not if it's down over any spec
    Source - - input/InputHandler.js, line 603 + input/InputHandler.js, line 604
    @@ -7018,7 +7018,7 @@ This only checks if the Pointer is down, not if it's down over any spec
    Source - - input/InputHandler.js, line 573 + input/InputHandler.js, line 574
    @@ -7177,7 +7177,7 @@ This only checks if the Pointer is down, not if it's down over any spec
    Source - - input/InputHandler.js, line 682 + input/InputHandler.js, line 683
    @@ -7336,7 +7336,7 @@ This only checks if the Pointer is down, not if it's down over any spec
    Source - - input/InputHandler.js, line 667 + input/InputHandler.js, line 668
    @@ -7495,7 +7495,7 @@ This only checks if the Pointer is down, not if it's down over any spec
    Source - - input/InputHandler.js, line 588 + input/InputHandler.js, line 589
    @@ -7657,7 +7657,7 @@ This only checks if the Pointer is up, not if it's up over any specific
    Source - - input/InputHandler.js, line 557 + input/InputHandler.js, line 558
    @@ -7817,7 +7817,7 @@ This value is only set when the pointer is over this Sprite.

    Source - - input/InputHandler.js, line 509 + input/InputHandler.js, line 510
    @@ -7977,7 +7977,7 @@ This value is only set when the pointer is over this Sprite.

    Source - - input/InputHandler.js, line 525 + input/InputHandler.js, line 526
    @@ -8047,7 +8047,7 @@ This value is only set when the pointer is over this Sprite.

    Source - - input/InputHandler.js, line 383 + input/InputHandler.js, line 384
    @@ -8225,7 +8225,7 @@ This value is only set when the pointer is over this Sprite.

    Source - - input/InputHandler.js, line 1599 + input/InputHandler.js, line 1600
    @@ -8252,7 +8252,7 @@ This value is only set when the pointer is over this Sprite.

    start(priority, useHandCursor) → {Phaser.Sprite}

    + id="start">start(priority, useHandCursor) → {Phaser.Sprite}
    @@ -8283,8 +8283,12 @@ This value is only set when the pointer is over this Sprite.

    Type + Argument + + Default + Description @@ -8308,7 +8312,23 @@ This value is only set when the pointer is over this Sprite.

    + + + <optional>
    + + + + + + + + + + + 0 + +

    Higher priority sprites take click priority over low-priority sprites when they are stacked on-top of each other.

    @@ -8331,7 +8351,23 @@ This value is only set when the pointer is over this Sprite.

    + + + <optional>
    + + + + + + + + + + + false + +

    If true the Sprite will show the hand cursor on mouse-over (doesn't apply to mobile browsers)

    @@ -8506,7 +8542,7 @@ This value is only set when the pointer is over this Sprite.

    Source - - input/InputHandler.js, line 1466 + input/InputHandler.js, line 1467
    @@ -8576,7 +8612,7 @@ This value is only set when the pointer is over this Sprite.

    Source - - input/InputHandler.js, line 412 + input/InputHandler.js, line 413
    @@ -8695,7 +8731,7 @@ This value is only set when the pointer is over this Sprite.

    Source - - input/InputHandler.js, line 1562 + input/InputHandler.js, line 1563
    @@ -8842,146 +8878,7 @@ and drag update loops.

    Source - - input/InputHandler.js, line 870 -
    - - - - - - - - - - - - - - - - - - - - - - - -
    -

    updateDrag(pointer) → {boolean}

    - - -
    -
    - - - -
    -

    Updates the Pointer drag on this Sprite.

    -
    - - - - - - - -
    Parameters:
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    NameTypeDescription
    pointer - - -Phaser.Pointer - - - -
    - - - - -
    Returns:
    -
    - - - -
    - -boolean - - - -
    - -
    - -
    - - - -
    - - - -
    - - - - - - - - - - - - - - - - - - - -
    Source - - input/InputHandler.js, line 1187 + input/InputHandler.js, line 871
    @@ -9218,7 +9115,7 @@ This is called by Phaser.Pointer and shouldn't typically be called directly.

    Source - - input/InputHandler.js, line 458 + input/InputHandler.js, line 459
    @@ -9267,7 +9164,7 @@ This is called by Phaser.Pointer and shouldn't typically be called directly.

    Documentation generated by JSDoc 3.3.3 - on Fri Jun 17 2016 12:45:34 GMT+0100 (BST) using the DocStrap template. + on Fri Jul 08 2016 15:42:39 GMT+0100 (GMT Daylight Time) using the DocStrap template. diff --git a/docs/Phaser.Key.html b/docs/Phaser.Key.html index 6f5ffc047..8fd1972bb 100644 --- a/docs/Phaser.Key.html +++ b/docs/Phaser.Key.html @@ -708,10 +708,6 @@ ComplexPrimitiveShader -
  • - DisplayObject -
  • -
  • DisplayObjectContainer
  • @@ -744,6 +740,10 @@ PIXI +
  • + DisplayObject +
  • +
  • PixiFastShader
  • @@ -3116,7 +3116,7 @@ or was pressed down longer ago than then given duration.

    Documentation generated by JSDoc 3.3.3 - on Fri Jun 17 2016 12:45:34 GMT+0100 (BST) using the DocStrap template. + on Fri Jul 08 2016 15:42:39 GMT+0100 (GMT Daylight Time) using the DocStrap template. diff --git a/docs/Phaser.KeyCode.html b/docs/Phaser.KeyCode.html index 8d2d478e6..7777fbb40 100644 --- a/docs/Phaser.KeyCode.html +++ b/docs/Phaser.KeyCode.html @@ -708,10 +708,6 @@ ComplexPrimitiveShader -
  • - DisplayObject -
  • -
  • DisplayObjectContainer
  • @@ -744,6 +740,10 @@ PIXI +
  • + DisplayObject +
  • +
  • PixiFastShader
  • @@ -6631,7 +6631,7 @@ the latter approach is supported for compatibility.

    Documentation generated by JSDoc 3.3.3 - on Fri Jun 17 2016 12:45:34 GMT+0100 (BST) using the DocStrap template. + on Fri Jul 08 2016 15:42:39 GMT+0100 (GMT Daylight Time) using the DocStrap template. diff --git a/docs/Phaser.Keyboard.html b/docs/Phaser.Keyboard.html index 8adb85d2b..02d9d9c52 100644 --- a/docs/Phaser.Keyboard.html +++ b/docs/Phaser.Keyboard.html @@ -708,10 +708,6 @@ ComplexPrimitiveShader -
  • - DisplayObject -
  • -
  • DisplayObjectContainer
  • @@ -744,6 +740,10 @@ PIXI +
  • + DisplayObject +
  • +
  • PixiFastShader
  • @@ -4369,7 +4369,7 @@ or was pressed down longer ago than then given duration.

    Documentation generated by JSDoc 3.3.3 - on Fri Jun 17 2016 12:45:34 GMT+0100 (BST) using the DocStrap template. + on Fri Jul 08 2016 15:42:39 GMT+0100 (GMT Daylight Time) using the DocStrap template. diff --git a/docs/Phaser.Line.html b/docs/Phaser.Line.html index 59663786c..7a3585040 100644 --- a/docs/Phaser.Line.html +++ b/docs/Phaser.Line.html @@ -708,10 +708,6 @@ ComplexPrimitiveShader -
  • - DisplayObject -
  • -
  • DisplayObjectContainer
  • @@ -744,6 +740,10 @@ PIXI +
  • + DisplayObject +
  • +
  • PixiFastShader
  • @@ -6002,7 +6002,7 @@ If you wish to rotate around a different point see Line.rotateAround.

    Documentation generated by JSDoc 3.3.3 - on Fri Jun 17 2016 12:45:34 GMT+0100 (BST) using the DocStrap template. + on Fri Jul 08 2016 15:42:39 GMT+0100 (GMT Daylight Time) using the DocStrap template. diff --git a/docs/Phaser.LinkedList.html b/docs/Phaser.LinkedList.html index d1346a744..d2b98b2bd 100644 --- a/docs/Phaser.LinkedList.html +++ b/docs/Phaser.LinkedList.html @@ -708,10 +708,6 @@ ComplexPrimitiveShader -
  • - DisplayObject -
  • -
  • DisplayObjectContainer
  • @@ -744,6 +740,10 @@ PIXI +
  • + DisplayObject +
  • +
  • PixiFastShader
  • @@ -2088,7 +2088,7 @@ The function must exist on the member.

    Documentation generated by JSDoc 3.3.3 - on Fri Jun 17 2016 12:45:34 GMT+0100 (BST) using the DocStrap template. + on Fri Jul 08 2016 15:42:39 GMT+0100 (GMT Daylight Time) using the DocStrap template. diff --git a/docs/Phaser.Loader.html b/docs/Phaser.Loader.html index d9a76a41b..b965571a0 100644 --- a/docs/Phaser.Loader.html +++ b/docs/Phaser.Loader.html @@ -708,10 +708,6 @@ ComplexPrimitiveShader -
  • - DisplayObject -
  • -
  • DisplayObjectContainer
  • @@ -744,6 +740,10 @@ PIXI +
  • + DisplayObject +
  • +
  • PixiFastShader
  • @@ -1413,7 +1413,7 @@ Load-before behavior of parallel resources is controlled by synchronization poin
    Source - - loader/Loader.js, line 299 + loader/Loader.js, line 311
    @@ -1465,7 +1465,7 @@ Load-before behavior of parallel resources is controlled by synchronization poin
    Source - - loader/Loader.js, line 305 + loader/Loader.js, line 317
    @@ -1517,7 +1517,7 @@ Load-before behavior of parallel resources is controlled by synchronization poin
    Source - - loader/Loader.js, line 281 + loader/Loader.js, line 293
    @@ -1569,7 +1569,7 @@ Load-before behavior of parallel resources is controlled by synchronization poin
    Source - - loader/Loader.js, line 287 + loader/Loader.js, line 299
    @@ -1621,7 +1621,7 @@ Load-before behavior of parallel resources is controlled by synchronization poin
    Source - - loader/Loader.js, line 311 + loader/Loader.js, line 323
    @@ -1673,7 +1673,7 @@ Load-before behavior of parallel resources is controlled by synchronization poin
    Source - - loader/Loader.js, line 293 + loader/Loader.js, line 305
    @@ -1781,7 +1781,7 @@ Load-before behavior of parallel resources is controlled by synchronization poin
    Source - - loader/Loader.js, line 204 + loader/Loader.js, line 216
    @@ -2028,7 +2028,7 @@ The string must end with a "/".

    Source - - loader/Loader.js, line 188 + loader/Loader.js, line 200
    @@ -2156,6 +2156,67 @@ The string must end with a "/".

    +
    + + + +
    + + + +
    +

    headers :object

    + + +
    +
    + + + +
    +

    Used to map the application mime-types to to the Accept header in XHR requests. +If you don't require these mappings, or they cause problems on your server, then +remove them from the headers object and the XHR request will not try to use them.

    +
    + + + + + +
    + + + + + + + + + + + + + + + + + +
    Default Value:
    +
    • {"json":"application/json","xml":"application/xml"}
    + + + +
    Source - + loader/Loader.js, line 112 +
    + + + + + + +
    @@ -2267,7 +2328,7 @@ The string must end with a "/".

    Source - - loader/Loader.js, line 198 + loader/Loader.js, line 210
    @@ -2326,7 +2387,7 @@ The string must end with a "/".

    Source - - loader/Loader.js, line 152 + loader/Loader.js, line 164
    @@ -2384,7 +2445,7 @@ The string must end with a "/".

    Source - - loader/Loader.js, line 163 + loader/Loader.js, line 175
    @@ -2442,7 +2503,7 @@ It's possible the file may fail (eg. download error, invalid format) after this
    Source - - loader/Loader.js, line 139 + loader/Loader.js, line 151
    @@ -2498,7 +2559,7 @@ It's possible the file may fail (eg. download error, invalid format) after this
    Source - - loader/Loader.js, line 118 + loader/Loader.js, line 130
    @@ -2555,7 +2616,7 @@ but after all the initial packs have been loaded.

    Source - - loader/Loader.js, line 111 + loader/Loader.js, line 123
    @@ -2613,7 +2674,7 @@ but after all the initial packs have been loaded.

    Source - - loader/Loader.js, line 129 + loader/Loader.js, line 141
    @@ -2846,7 +2907,7 @@ given as it's an absolute URL.

    Source - - loader/Loader.js, line 3023 + loader/Loader.js, line 3040
    @@ -2952,7 +3013,7 @@ It is possible for the progress to decrease, after onLoadStart, if
    Source - - loader/Loader.js, line 3005 + loader/Loader.js, line 3022
    @@ -3076,7 +3137,7 @@ It is possible for the progress to decrease, after onLoadStart, if
    Source - - loader/Loader.js, line 173 + loader/Loader.js, line 185
    @@ -3237,7 +3298,7 @@ It is possible for the progress to decrease, after onLoadStart, if
    Source - - loader/Loader.js, line 1648 + loader/Loader.js, line 1660
    @@ -3593,7 +3654,7 @@ It is possible for the progress to decrease, after onLoadStart, if
    Source - - loader/Loader.js, line 492 + loader/Loader.js, line 504
    @@ -3892,7 +3953,7 @@ set the atlasURL to be the key. For example if the key is "player" the
    Source - - loader/Loader.js, line 1517 + loader/Loader.js, line 1529
    @@ -4159,7 +4220,7 @@ set the atlasURL to be the key. For example if the key is "player" the
    Source - - loader/Loader.js, line 1371 + loader/Loader.js, line 1383
    @@ -4426,7 +4487,7 @@ set the atlasURL to be the key. For example if the key is "player" the
    Source - - loader/Loader.js, line 1417 + loader/Loader.js, line 1429
    @@ -4693,7 +4754,7 @@ set the atlasURL to be the key. For example if the key is "player" the
    Source - - loader/Loader.js, line 1463 + loader/Loader.js, line 1475
    @@ -4939,7 +5000,7 @@ The solution is to use a lower encoding rate such as 44100 Hz.

    Source - - loader/Loader.js, line 968 + loader/Loader.js, line 980
    @@ -5259,7 +5320,7 @@ The solution is to use a lower encoding rate such as 44100 Hz.

    Source - - loader/Loader.js, line 1011 + loader/Loader.js, line 1023
    @@ -5573,7 +5634,7 @@ The solution is to use a lower encoding rate such as 44100 Hz.

    Source - - loader/Loader.js, line 1070 + loader/Loader.js, line 1082
    @@ -5851,7 +5912,7 @@ When the callback is called it will be passed 2 parameters: the key of the file
    Source - - loader/Loader.js, line 888 + loader/Loader.js, line 900
    @@ -6206,7 +6267,7 @@ set the atlasURL to be the key. For example if the key is "megaFont" t
    Source - - loader/Loader.js, line 1280 + loader/Loader.js, line 1292
    @@ -6369,7 +6430,7 @@ set the atlasURL to be the key. For example if the key is "megaFont" t
    Source - - loader/Loader.js, line 367 + loader/Loader.js, line 379
    @@ -6533,7 +6594,7 @@ set the atlasURL to be the key. For example if the key is "megaFont" t
    Source - - loader/Loader.js, line 418 + loader/Loader.js, line 430
    @@ -6697,7 +6758,7 @@ set the atlasURL to be the key. For example if the key is "megaFont" t
    Source - - loader/Loader.js, line 383 + loader/Loader.js, line 395
    @@ -6936,7 +6997,7 @@ If you do not desire this action then provide a URL.

    Source - - loader/Loader.js, line 670 + loader/Loader.js, line 682
    @@ -7127,7 +7188,7 @@ If you do not desire this action then provide a URL.

    Source - - loader/Loader.js, line 699 + loader/Loader.js, line 711
    @@ -7366,7 +7427,7 @@ If you do not desire this action then provide a URL.

    Source - - loader/Loader.js, line 771 + loader/Loader.js, line 783
    @@ -7641,7 +7702,7 @@ of the file queue, in the order added.

    Source - - loader/Loader.js, line 590 + loader/Loader.js, line 602
    @@ -7925,7 +7986,7 @@ It will always use .json as the extension.

    Source - - loader/Loader.js, line 1219 + loader/Loader.js, line 1231
    @@ -8002,7 +8063,7 @@ It will always use .json as the extension.

    Source - - loader/Loader.js, line 1695 + loader/Loader.js, line 1707
    @@ -8152,7 +8213,7 @@ It will always use .json as the extension.

    Source - - loader/Loader.js, line 1671 + loader/Loader.js, line 1683
    @@ -8347,7 +8408,7 @@ It will always use .json as the extension.

    Source - - loader/Loader.js, line 574 + loader/Loader.js, line 586
    @@ -8534,7 +8595,7 @@ It will always use .json as the extension.

    Source - - loader/Loader.js, line 442 + loader/Loader.js, line 454
    @@ -8612,7 +8673,7 @@ It will always use .json as the extension.

    Source - - loader/Loader.js, line 350 + loader/Loader.js, line 362
    @@ -8891,7 +8952,7 @@ The callback must return relevant data.

    Source - - loader/Loader.js, line 853 + loader/Loader.js, line 865
    @@ -9071,7 +9132,7 @@ This allows you to easily make loading bars for games.

    Source - - loader/Loader.js, line 315 + loader/Loader.js, line 327
    @@ -9309,7 +9370,7 @@ If you do not desire this action then provide a URL.

    Source - - loader/Loader.js, line 799 + loader/Loader.js, line 811
    @@ -9699,7 +9760,7 @@ If you do not desire this action then provide a URL.

    Source - - loader/Loader.js, line 926 + loader/Loader.js, line 938
    @@ -9769,7 +9830,7 @@ If you do not desire this action then provide a URL.

    Source - - loader/Loader.js, line 1708 + loader/Loader.js, line 1720
    @@ -10007,7 +10068,7 @@ If you do not desire this action then provide a URL.

    Source - - loader/Loader.js, line 744 + loader/Loader.js, line 756
    @@ -10290,7 +10351,7 @@ If you set the format to be Tilemap.CSV it will set the URL to be "level1.c
    Source - - loader/Loader.js, line 1142 + loader/Loader.js, line 1154
    @@ -10387,7 +10448,7 @@ If you set the format to be Tilemap.CSV it will set the URL to be "level1.c
    Source - - loader/Loader.js, line 2951 + loader/Loader.js, line 2968
    @@ -10484,7 +10545,7 @@ If you set the format to be Tilemap.CSV it will set the URL to be "level1.c
    Source - - loader/Loader.js, line 2977 + loader/Loader.js, line 2994
    @@ -10581,7 +10642,7 @@ If you set the format to be Tilemap.CSV it will set the URL to be "level1.c
    Source - - loader/Loader.js, line 2964 + loader/Loader.js, line 2981
    @@ -10678,7 +10739,7 @@ If you set the format to be Tilemap.CSV it will set the URL to be "level1.c
    Source - - loader/Loader.js, line 2990 + loader/Loader.js, line 3007
    @@ -10848,7 +10909,7 @@ If you set the format to be Tilemap.CSV it will set the URL to be "level1.c
    Source - - loader/Loader.js, line 2036 + loader/Loader.js, line 2048
    @@ -11136,7 +11197,7 @@ If you set the format to be Tilemap.CSV it will set the URL to be "level1.c
    Source - - loader/Loader.js, line 1088 + loader/Loader.js, line 1100
    @@ -11334,7 +11395,7 @@ be downloaded around sync-points, as long as they do not finalize loading.

    Source - - loader/Loader.js, line 1622 + loader/Loader.js, line 1634
    @@ -11572,7 +11633,7 @@ If you do not desire this action then provide a URL.

    Source - - loader/Loader.js, line 826 + loader/Loader.js, line 838
    @@ -11621,7 +11682,7 @@ If you do not desire this action then provide a URL.

    Documentation generated by JSDoc 3.3.3 - on Fri Jun 17 2016 12:45:34 GMT+0100 (BST) using the DocStrap template. + on Fri Jul 08 2016 15:42:39 GMT+0100 (GMT Daylight Time) using the DocStrap template. diff --git a/docs/Phaser.LoaderParser.html b/docs/Phaser.LoaderParser.html index 5ffc6fae1..0ceddc376 100644 --- a/docs/Phaser.LoaderParser.html +++ b/docs/Phaser.LoaderParser.html @@ -708,10 +708,6 @@ ComplexPrimitiveShader -
  • - DisplayObject -
  • -
  • DisplayObjectContainer
  • @@ -744,6 +740,10 @@ PIXI +
  • + DisplayObject +
  • +
  • PixiFastShader
  • @@ -2154,7 +2154,7 @@ Documentation generated by JSDoc 3.3.3 - on Fri Jun 17 2016 12:45:34 GMT+0100 (BST) using the DocStrap template. + on Fri Jul 08 2016 15:42:39 GMT+0100 (GMT Daylight Time) using the DocStrap template. diff --git a/docs/Phaser.MSPointer.html b/docs/Phaser.MSPointer.html index cf1cbf3a8..51787fc31 100644 --- a/docs/Phaser.MSPointer.html +++ b/docs/Phaser.MSPointer.html @@ -708,10 +708,6 @@ ComplexPrimitiveShader -
  • - DisplayObject -
  • -
  • DisplayObjectContainer
  • @@ -744,6 +740,10 @@ PIXI +
  • + DisplayObject +
  • +
  • PixiFastShader
  • @@ -2849,7 +2849,7 @@ Access this property only inside a Pointer event handler and do not keep referen Documentation generated by JSDoc 3.3.3 - on Fri Jun 17 2016 12:45:35 GMT+0100 (BST) using the DocStrap template. + on Fri Jul 08 2016 15:42:40 GMT+0100 (GMT Daylight Time) using the DocStrap template. diff --git a/docs/Phaser.Math.html b/docs/Phaser.Math.html index b60630927..8656039e5 100644 --- a/docs/Phaser.Math.html +++ b/docs/Phaser.Math.html @@ -708,10 +708,6 @@ ComplexPrimitiveShader -
  • - DisplayObject -
  • -
  • DisplayObjectContainer
  • @@ -744,6 +740,10 @@ PIXI +
  • + DisplayObject +
  • +
  • PixiFastShader
  • @@ -1512,7 +1512,7 @@ - +

    The x coordinate of the first value.

    @@ -1535,7 +1535,7 @@ - +

    The y coordinate of the first value.

    @@ -1558,7 +1558,7 @@ - +

    The x coordinate of the second value.

    @@ -1581,7 +1581,7 @@ - +

    The y coordinate of the second value.

    @@ -1634,7 +1634,7 @@
    Source - - math/Math.js, line 315 + math/Math.js, line 323
    @@ -1720,7 +1720,7 @@ - +

    The first point.

    @@ -1743,7 +1743,7 @@ - +

    The second point.

    @@ -1766,7 +1766,7 @@
    -

    The angle, in radians.

    +

    The angle between the two points, in radians.

    @@ -1796,7 +1796,7 @@
    Source - - math/Math.js, line 344 + math/Math.js, line 358
    @@ -1958,7 +1958,7 @@
    Source - - math/Math.js, line 355 + math/Math.js, line 372
    @@ -1994,8 +1994,8 @@
    -

    Find the angle of a segment from (x1, y1) -> (x2, y2). -Note that the difference between this method and Math.angleBetween is that this assumes the y coordinate travels +

    Find the angle of a segment from (x1, y1) -> (x2, y2).

    +

    The difference between this method and Math.angleBetween is that this assumes the y coordinate travels down the screen.

    @@ -2046,7 +2046,7 @@ down the screen.

    - +

    The x coordinate of the first value.

    @@ -2069,7 +2069,7 @@ down the screen.

    - +

    The y coordinate of the first value.

    @@ -2092,7 +2092,7 @@ down the screen.

    - +

    The x coordinate of the second value.

    @@ -2115,7 +2115,7 @@ down the screen.

    - +

    The y coordinate of the second value.

    @@ -2168,7 +2168,7 @@ down the screen.

    Source - - math/Math.js, line 328 + math/Math.js, line 339
    @@ -2423,7 +2423,7 @@ down the screen.

    Source - - math/Math.js, line 734 + math/Math.js, line 765
    @@ -2747,7 +2747,7 @@ down the screen.

    Source - - math/Math.js, line 659 + math/Math.js, line 688
    @@ -2985,7 +2985,7 @@ down the screen.

    Source - - math/Math.js, line 768 + math/Math.js, line 801
    @@ -3147,7 +3147,7 @@ down the screen.

    Source - - math/Math.js, line 681 + math/Math.js, line 710
    @@ -3174,7 +3174,7 @@ down the screen.

    ceilTo(value, place, base) → {number}

    + id="ceilTo">ceilTo(value, place, base) → {number}
    @@ -3182,6 +3182,11 @@ down the screen.

    +
    +

    Ceils to some place comparative to a base, default is 10 for decimal place. +The place is represented by the power applied to base to get that place.

    +
    + @@ -3201,8 +3206,12 @@ down the screen.

    Type + Argument + + Default + Description @@ -3226,7 +3235,19 @@ down the screen.

    + + + + + + + + + + + +

    The value to round.

    @@ -3249,7 +3270,23 @@ down the screen.

    + + + <optional>
    + + + + + + + + + + + 0 + +

    The place to round to.

    @@ -3272,10 +3309,26 @@ down the screen.

    + + + <optional>
    + + + + + -

    The base to round in... default is 10 for decimal.

    + + + + 10 + + + + +

    The base to round in. Default is 10 for decimal.

    @@ -3298,7 +3351,7 @@ down the screen.

    - +

    The rounded value.

    @@ -3328,7 +3381,7 @@ down the screen.

    Source - - math/Math.js, line 297 + math/Math.js, line 302
    @@ -3513,7 +3566,7 @@ down the screen.

    Source - - math/Math.js, line 912 + math/Math.js, line 947
    @@ -3676,7 +3729,7 @@ Roughly the same as Math.max(x, a), except for NaN handling.

    Source - - math/Math.js, line 938 + math/Math.js, line 973
    @@ -3815,7 +3868,7 @@ Roughly the same as Math.max(x, a), except for NaN handling.

    Source - - math/Math.js, line 1059 + math/Math.js, line 1105
    @@ -3851,7 +3904,7 @@ Roughly the same as Math.max(x, a), except for NaN handling.

    -

    The (absolute) difference between two values.

    +

    The absolute difference between two values.

    @@ -3901,7 +3954,7 @@ Roughly the same as Math.max(x, a), except for NaN handling.

    - +

    The first value to check.

    @@ -3924,7 +3977,7 @@ Roughly the same as Math.max(x, a), except for NaN handling.

    - +

    The second value to check.

    @@ -3947,7 +4000,7 @@ Roughly the same as Math.max(x, a), except for NaN handling.

    - +

    The absolute difference between the two values.

    @@ -3977,7 +4030,7 @@ Roughly the same as Math.max(x, a), except for NaN handling.

    Source - - math/Math.js, line 788 + math/Math.js, line 821
    @@ -4185,7 +4238,7 @@ Roughly the same as Math.max(x, a), except for NaN handling.

    Source - - math/Math.js, line 854 + math/Math.js, line 889
    @@ -4484,7 +4537,7 @@ Roughly the same as Math.max(x, a), except for NaN handling.

    Source - - math/Math.js, line 893 + math/Math.js, line 928
    @@ -4693,7 +4746,7 @@ coordinates (cuts out a square root operation before returning).

    Source - - math/Math.js, line 873 + math/Math.js, line 908
    @@ -4828,7 +4881,7 @@ coordinates (cuts out a square root operation before returning).

    Source - - math/Math.js, line 745 + math/Math.js, line 778
    @@ -4855,7 +4908,7 @@ coordinates (cuts out a square root operation before returning).

    floorTo(value, place, base) → {number}

    + id="floorTo">floorTo(value, place, base) → {number}
    @@ -4863,6 +4916,11 @@ coordinates (cuts out a square root operation before returning).

    +
    +

    Floors to some place comparative to a base, default is 10 for decimal place. +The place is represented by the power applied to base to get that place.

    +
    + @@ -4882,8 +4940,12 @@ coordinates (cuts out a square root operation before returning).

    Type + Argument + + Default + Description @@ -4907,7 +4969,19 @@ coordinates (cuts out a square root operation before returning).

    + + + + + + + + + + + +

    The value to round.

    @@ -4930,7 +5004,23 @@ coordinates (cuts out a square root operation before returning).

    + + + <optional>
    + + + + + + + + + + + 0 + +

    The place to round to.

    @@ -4953,10 +5043,26 @@ coordinates (cuts out a square root operation before returning).

    + + + <optional>
    + + + + + -

    The base to round in... default is 10 for decimal.

    + + + + 10 + + + + +

    The base to round in. Default is 10 for decimal.

    @@ -4979,7 +5085,7 @@ coordinates (cuts out a square root operation before returning).

    - +

    The rounded value.

    @@ -5009,7 +5115,7 @@ coordinates (cuts out a square root operation before returning).

    Source - - math/Math.js, line 279 + math/Math.js, line 281
    @@ -6223,7 +6329,7 @@ coordinates (cuts out a square root operation before returning).

    Source - - math/Math.js, line 481 + math/Math.js, line 508
    @@ -6362,7 +6468,7 @@ coordinates (cuts out a square root operation before returning).

    Source - - math/Math.js, line 469 + math/Math.js, line 494
    @@ -6494,7 +6600,7 @@ coordinates (cuts out a square root operation before returning).

    - +

    A value between 0 and 1.

    @@ -6547,7 +6653,7 @@ coordinates (cuts out a square root operation before returning).

    Source - - math/Math.js, line 721 + math/Math.js, line 750
    @@ -6709,7 +6815,7 @@ coordinates (cuts out a square root operation before returning).

    Source - - math/Math.js, line 631 + math/Math.js, line 660
    @@ -6795,7 +6901,7 @@ coordinates (cuts out a square root operation before returning).

    -

    the value to map

    +

    The value to map

    @@ -6818,7 +6924,7 @@ coordinates (cuts out a square root operation before returning).

    -

    first endpoint of the range

    +

    First endpoint of the range

    @@ -6841,7 +6947,7 @@ coordinates (cuts out a square root operation before returning).

    -

    final endpoint of the range

    +

    Final endpoint of the range

    @@ -6864,7 +6970,7 @@ coordinates (cuts out a square root operation before returning).

    -

    first endpoint of the range

    +

    First endpoint of the range

    @@ -6887,7 +6993,7 @@ coordinates (cuts out a square root operation before returning).

    -

    final endpoint of the range

    +

    Final endpoint of the range

    @@ -6940,7 +7046,7 @@ coordinates (cuts out a square root operation before returning).

    Source - - math/Math.js, line 965 + math/Math.js, line 1004
    @@ -7031,7 +7137,7 @@ coordinates (cuts out a square root operation before returning).

    Source - - math/Math.js, line 525 + math/Math.js, line 554
    @@ -7193,7 +7299,7 @@ coordinates (cuts out a square root operation before returning).

    - +

    The new value.

    @@ -7223,7 +7329,7 @@ coordinates (cuts out a square root operation before returning).

    Source - - math/Math.js, line 389 + math/Math.js, line 410
    @@ -7314,7 +7420,7 @@ It will find the largest matching property value from the given objects.

    Source - - math/Math.js, line 587 + math/Math.js, line 616
    @@ -7405,7 +7511,7 @@ It will find the largest matching property value from the given objects.

    Source - - math/Math.js, line 493 + math/Math.js, line 522
    @@ -7503,7 +7609,7 @@ It will find the lowest matching property value from the given objects.

    Source - - math/Math.js, line 557 + math/Math.js, line 586
    @@ -7688,7 +7794,7 @@ It will find the lowest matching property value from the given objects.

    Source - - math/Math.js, line 402 + math/Math.js, line 425
    @@ -7797,7 +7903,7 @@ It will find the lowest matching property value from the given objects.

    -

    Returns the angle, fit within the [0,2pi] range, in radians.

    +

    The angle, fit within the [0,2pi] range, in radians.

    @@ -7827,7 +7933,7 @@ It will find the lowest matching property value from the given objects.

    Source - - math/Math.js, line 376 + math/Math.js, line 397
    @@ -8056,7 +8162,7 @@ It will find the lowest matching property value from the given objects.

    Source - - math/Math.js, line 1026 + math/Math.js, line 1072
    @@ -8195,7 +8301,7 @@ It will find the lowest matching property value from the given objects.

    Source - - math/Math.js, line 1070 + math/Math.js, line 1116
    @@ -8304,7 +8410,7 @@ It will find the lowest matching property value from the given objects.

    -

    Returns the reverse angle, in radians.

    +

    The reverse angle, in radians.

    @@ -8334,7 +8440,7 @@ It will find the lowest matching property value from the given objects.

    Source - - math/Math.js, line 366 + math/Math.js, line 385
    @@ -8473,7 +8579,7 @@ It will find the lowest matching property value from the given objects.

    Source - - math/Math.js, line 800 + math/Math.js, line 835
    @@ -8500,7 +8606,7 @@ It will find the lowest matching property value from the given objects.

    roundTo(value, place, base) → {number}

    + id="roundTo">roundTo(value, place, base) → {number}
    @@ -8554,8 +8660,12 @@ because we are rounding 100011.1011011011011011 which rounds up.

    Type + Argument + + Default + Description @@ -8579,7 +8689,19 @@ because we are rounding 100011.1011011011011011 which rounds up.

    + + + + + + + + + + + +

    The value to round.

    @@ -8602,7 +8724,23 @@ because we are rounding 100011.1011011011011011 which rounds up.

    + + + <optional>
    + + + + + + + + + + + 0 + +

    The place to round to.

    @@ -8625,10 +8763,26 @@ because we are rounding 100011.1011011011011011 which rounds up.

    + + + <optional>
    + + + + + -

    The base to round in... default is 10 for decimal.

    + + + + 10 + + + + +

    The base to round in. Default is 10 for decimal.

    @@ -8651,7 +8805,7 @@ because we are rounding 100011.1011011011011011 which rounds up.

    - +

    The rounded value.

    @@ -8681,7 +8835,7 @@ because we are rounding 100011.1011011011011011 which rounds up.

    Source - - math/Math.js, line 233 + math/Math.js, line 235
    @@ -8956,7 +9110,7 @@ because we are rounding 100011.1011011011011011 which rounds up.

    Source - - math/Math.js, line 1013 + math/Math.js, line 1057
    @@ -9167,7 +9321,7 @@ Code based on research by Franky of scene.at

    Source - - math/Math.js, line 814 + math/Math.js, line 849
    @@ -9352,7 +9506,7 @@ Code based on research by Franky of scene.at

    Source - - math/Math.js, line 999 + math/Math.js, line 1040
    @@ -9537,7 +9691,7 @@ Code based on research by Franky of scene.at

    Source - - math/Math.js, line 980 + math/Math.js, line 1021
    @@ -9600,6 +9754,8 @@ Code based on research by Franky of scene.at

    + Default + Description @@ -9633,6 +9789,10 @@ Code based on research by Franky of scene.at

    + + + +

    The value to snap.

    @@ -9664,6 +9824,10 @@ Code based on research by Franky of scene.at

    + + + +

    The interval gap of the grid.

    @@ -9697,6 +9861,12 @@ Code based on research by Franky of scene.at

    + + + 0 + + +

    Optional starting offset for gap.

    @@ -9721,7 +9891,7 @@ Code based on research by Franky of scene.at

    - +

    The snapped value.

    @@ -9751,7 +9921,7 @@ Code based on research by Franky of scene.at

    Source - - math/Math.js, line 153 + math/Math.js, line 155
    @@ -9815,6 +9985,8 @@ As will 14 will snap to 15... but 16 will snap to 20.

    + Default + Description @@ -9848,6 +10020,10 @@ As will 14 will snap to 15... but 16 will snap to 20.

    + + + +

    The value to snap.

    @@ -9879,6 +10055,10 @@ As will 14 will snap to 15... but 16 will snap to 20.

    + + + +

    The interval gap of the grid.

    @@ -9912,6 +10092,12 @@ As will 14 will snap to 15... but 16 will snap to 20.

    + + + 0 + + +

    Optional starting offset for gap.

    @@ -9936,7 +10122,7 @@ As will 14 will snap to 15... but 16 will snap to 20.

    - +

    The snapped value.

    @@ -9966,7 +10152,7 @@ As will 14 will snap to 15... but 16 will snap to 20.

    Source - - math/Math.js, line 206 + math/Math.js, line 208
    @@ -10030,6 +10216,8 @@ As will 14 snap to 10... but 16 will snap to 15.

    + Default + Description @@ -10063,6 +10251,10 @@ As will 14 snap to 10... but 16 will snap to 15.

    + + + +

    The value to snap.

    @@ -10094,6 +10286,10 @@ As will 14 snap to 10... but 16 will snap to 15.

    + + + +

    The interval gap of the grid.

    @@ -10127,6 +10323,12 @@ As will 14 snap to 10... but 16 will snap to 15.

    + + + 0 + + +

    Optional starting offset for gap.

    @@ -10151,7 +10353,7 @@ As will 14 snap to 10... but 16 will snap to 15.

    - +

    The snapped value.

    @@ -10181,7 +10383,7 @@ As will 14 snap to 10... but 16 will snap to 15.

    Source - - math/Math.js, line 179 + math/Math.js, line 181
    @@ -10366,7 +10568,7 @@ As will 14 snap to 10... but 16 will snap to 15.

    Source - - math/Math.js, line 951 + math/Math.js, line 988
    @@ -10559,7 +10761,7 @@ As will 14 snap to 10... but 16 will snap to 15.

    Source - - math/Math.js, line 415 + math/Math.js, line 440
    @@ -10753,7 +10955,7 @@ As will 14 snap to 10... but 16 will snap to 15.

    Source - - math/Math.js, line 617 + math/Math.js, line 646
    @@ -10939,7 +11141,7 @@ As will 14 snap to 10... but 16 will snap to 15.

    Source - - math/Math.js, line 446 + math/Math.js, line 471
    @@ -10988,7 +11190,7 @@ As will 14 snap to 10... but 16 will snap to 15.

    Documentation generated by JSDoc 3.3.3 - on Fri Jun 17 2016 12:45:34 GMT+0100 (BST) using the DocStrap template. + on Fri Jul 08 2016 15:42:40 GMT+0100 (GMT Daylight Time) using the DocStrap template. diff --git a/docs/Phaser.Matrix.html b/docs/Phaser.Matrix.html index 363fd9e21..593fa9849 100644 --- a/docs/Phaser.Matrix.html +++ b/docs/Phaser.Matrix.html @@ -708,10 +708,6 @@ ComplexPrimitiveShader -
  • - DisplayObject -
  • -
  • DisplayObjectContainer
  • @@ -744,6 +740,10 @@ PIXI +
  • + DisplayObject +
  • +
  • PixiFastShader
  • @@ -4094,7 +4094,7 @@ This is the same as Matrix.tx += x.

    Documentation generated by JSDoc 3.3.3 - on Fri Jun 17 2016 12:45:34 GMT+0100 (BST) using the DocStrap template. + on Fri Jul 08 2016 15:42:40 GMT+0100 (GMT Daylight Time) using the DocStrap template. diff --git a/docs/Phaser.Mouse.html b/docs/Phaser.Mouse.html index a83218af2..e3c4e3ecb 100644 --- a/docs/Phaser.Mouse.html +++ b/docs/Phaser.Mouse.html @@ -708,10 +708,6 @@ ComplexPrimitiveShader -
  • - DisplayObject -
  • -
  • DisplayObjectContainer
  • @@ -744,6 +740,10 @@ PIXI +
  • + DisplayObject +
  • +
  • PixiFastShader
  • @@ -4099,7 +4099,7 @@ If the browser successfully enters a locked state the event Phaser.Mouse.pointer Documentation generated by JSDoc 3.3.3 - on Fri Jun 17 2016 12:45:35 GMT+0100 (BST) using the DocStrap template. + on Fri Jul 08 2016 15:42:40 GMT+0100 (GMT Daylight Time) using the DocStrap template. diff --git a/docs/Phaser.Net.html b/docs/Phaser.Net.html index cecad0182..aef73ab2c 100644 --- a/docs/Phaser.Net.html +++ b/docs/Phaser.Net.html @@ -708,10 +708,6 @@ ComplexPrimitiveShader -
  • - DisplayObject -
  • -
  • DisplayObjectContainer
  • @@ -744,6 +740,10 @@ PIXI +
  • + DisplayObject +
  • +
  • PixiFastShader
  • @@ -2145,7 +2145,7 @@ Optionally you can redirect to the new url, or just return it as a string.

    Documentation generated by JSDoc 3.3.3 - on Fri Jun 17 2016 12:45:35 GMT+0100 (BST) using the DocStrap template. + on Fri Jul 08 2016 15:42:40 GMT+0100 (GMT Daylight Time) using the DocStrap template. diff --git a/docs/Phaser.Particle.html b/docs/Phaser.Particle.html index 1c17eaf11..6b37425a4 100644 --- a/docs/Phaser.Particle.html +++ b/docs/Phaser.Particle.html @@ -708,10 +708,6 @@ ComplexPrimitiveShader -
  • - DisplayObject -
  • -
  • DisplayObjectContainer
  • @@ -744,6 +740,10 @@ PIXI +
  • + DisplayObject +
  • +
  • PixiFastShader
  • @@ -1543,67 +1543,6 @@ However you can use Group.getFirstAlive in conjunction with this pr - - - - - - - - -
    -

    alpha :Number

    - - -
    -
    - - - -
    -

    The opacity of the object.

    -
    - - - - - -
    - - - - - - - -
    Inherited From:
    -
    - - - - - - - - - - - - - -
    Source - - pixi/display/DisplayObject.js, line 46 -
    - - - - - - -
    @@ -2272,69 +2211,6 @@ This is the same as y + height - offsetY.

    - - - - -
    - - - -
    -

    cacheAsBitmap :Boolean

    - - -
    -
    - - - -
    -

    Set if this display object is cached as a bitmap. -This basically takes a snap shot of the display object as it is at that moment. It can provide a performance benefit for complex static displayObjects. -To remove simply set this property to 'null'

    -
    - - - - - -
    - - - - - - - -
    Inherited From:
    -
    - - - - - - - - - - - - - -
    Source - - pixi/display/DisplayObject.js, line 355 -
    - - - - - - -
    @@ -3360,143 +3236,6 @@ Game Object, or any of its components.

    - - - - -
    - - - -
    -

    filterArea :Rectangle

    - - -
    -
    - - - -
    -

    The area the filter is applied to like the hitArea this is used as more of an optimisation -rather than figuring out the dimensions of the displayObject each frame you can set this rectangle

    -
    - - - - - -
    - - - - - - - -
    Inherited From:
    -
    - - - - - - - - - - - - - -
    Source - - pixi/display/DisplayObject.js, line 164 -
    - - - - - - - -
    - - - -
    - - - -
    -

    filters :Array.<Filter>

    - - -
    -
    - - - -
    -

    Sets the filters for the displayObject. -IMPORTANT: This is a webGL only feature and will be ignored by the Canvas renderer.

    -

    To remove filters simply set this property to 'null'.

    -

    You cannot have a filter and a multiply blend mode active at the same time. Setting a filter will reset -this objects blend mode to NORMAL.

    -
    - - - -
    Type:
    -
      -
    • - -Array.<Filter> - - -
    • -
    - - - -
    - - - - - - - -
    Inherited From:
    -
    - - - - - - - - - - - - - -
    Source - - pixi/display/DisplayObject.js, line 307 -
    - - - - - - -
    @@ -4007,87 +3746,6 @@ This property is mostly used internally by the physics systems, but is exposed f - - - - -
    - - - -
    -

    hitArea :Rectangle|Circle|Ellipse|Polygon

    - - -
    -
    - - - -
    -

    This is the defined area that will pick up mouse / touch events. It is null by default. -Setting it is a neat way of optimising the hitTest function that the interactionManager will use (as it will not need to hit test all the children)

    -
    - - - -
    Type:
    -
      -
    • - -Rectangle -| - -Circle -| - -Ellipse -| - -Polygon - - -
    • -
    - - - -
    - - - - - - - -
    Inherited From:
    -
    - - - - - - - - - - - - - -
    Source - - pixi/display/DisplayObject.js, line 62 -
    - - - - - - -
    @@ -4313,6 +3971,9 @@ for this Game Object and it will then start to process click / touch events and

    You can then access the Input Handler via this.input.

    Note that Input related events are dispatched from this.events, i.e.: events.onInputDown.

    If you set this property to false it will stop the Input Handler from processing any more input events.

    +

    If you want to temporarily disable input for a Game Object, then it's better to set +input.enabled = false, as it won't reset any of the Input Handlers internal properties. +You can then toggle this back on as needed.

    @@ -4345,7 +4006,7 @@ for this Game Object and it will then start to process click / touch events and
    Source - - gameobjects/components/InputEnabled.js, line 38 + gameobjects/components/InputEnabled.js, line 42
    @@ -4629,69 +4290,6 @@ When it reaches zero it will call the kill method.

    - - - - - - - - -
    -

    mask :PIXI.Graphics

    - - -
    -
    - - - -
    -

    Sets a mask for the displayObject. A mask is an object that limits the visibility of an object to the shape of the mask applied to it. -In PIXI a regular mask must be a PIXI.Graphics object. This allows for much faster masking in canvas as it utilises shape clipping. -To remove a mask, set this property to null.

    -
    - - - - - -
    - - - - - - - -
    Inherited From:
    -
    - - - - - - - - - - - - - -
    Source - - pixi/display/DisplayObject.js, line 282 -
    - - - - - - -
    @@ -5068,67 +4666,6 @@ is called as soon as the Game Object leaves the camera bounds.

    - - - - -
    - - - -
    -

    <readonly> parent :PIXI.DisplayObjectContainer

    - - -
    -
    - - - -
    -

    [read-only] The display object container that contains this display object.

    -
    - - - - - -
    - - - - - - - -
    Inherited From:
    -
    - - - - - - - - - - - - - -
    Source - - pixi/display/DisplayObject.js, line 79 -
    - - - - - - -
    @@ -5254,128 +4791,6 @@ such as with Buttons or other Input events.

    - - - - -
    - - - -
    -

    pivot :Point

    - - -
    -
    - - - -
    -

    The pivot point of the displayObject that it rotates around

    -
    - - - - - -
    - - - - - - - -
    Inherited From:
    -
    - - - - - - - - - - - - - -
    Source - - pixi/display/DisplayObject.js, line 30 -
    - - - - - - - -
    - - - -
    - - - -
    -

    position :Point

    - - -
    -
    - - - -
    -

    The coordinate of the object relative to the local coordinates of the parent.

    -
    - - - - - -
    - - - - - - - -
    Inherited From:
    -
    - - - - - - - - - - - - - -
    Source - - pixi/display/DisplayObject.js, line 14 -
    - - - - - - -
    @@ -5498,67 +4913,6 @@ such as with Buttons or other Input events.

    - - - - -
    - - - -
    -

    renderable :Boolean

    - - -
    -
    - - - -
    -

    Can this object be rendered

    -
    - - - - - -
    - - - - - - - -
    Inherited From:
    -
    - - - - - - - - - - - - - -
    Source - - pixi/display/DisplayObject.js, line 71 -
    - - - - - - -
    @@ -5683,128 +5037,6 @@ This is the same as x + width - offsetX.

    - - - - -
    - - - -
    -

    rotation :Number

    - - -
    -
    - - - -
    -

    The rotation of the object in radians.

    -
    - - - - - -
    - - - - - - - -
    Inherited From:
    -
    - - - - - - - - - - - - - -
    Source - - pixi/display/DisplayObject.js, line 38 -
    - - - - - - - -
    - - - -
    - - - -
    -

    scale :Point

    - - -
    -
    - - - -
    -

    The scale factor of the object.

    -
    - - - - - -
    - - - - - - - -
    Inherited From:
    -
    - - - - - - - - - - - - - -
    Source - - pixi/display/DisplayObject.js, line 22 -
    - - - - - - -
    @@ -6183,67 +5415,6 @@ Will never exceed the maxHealth value.

    - - - - -
    - - - -
    -

    <readonly> stage :Stage

    - - -
    -
    - - - -
    -

    [read-only] The stage the display object is connected to, or undefined if it is not connected to the stage.

    -
    - - - - - -
    - - - - - - - -
    Inherited From:
    -
    - - - - - - - - - - - - - -
    Source - - pixi/display/DisplayObject.js, line 88 -
    - - - - - - -
    @@ -6678,67 +5849,6 @@ This is the same as y - offsetY.

    - - - - -
    - - - -
    -

    visible :Boolean

    - - -
    -
    - - - -
    -

    The visibility of the object.

    -
    - - - - - -
    - - - - - - - -
    Inherited From:
    -
    - - - - - - - - - - - - - -
    Source - - pixi/display/DisplayObject.js, line 54 -
    - - - - - - -
    @@ -6873,7 +5983,7 @@ which contains the x/y coordinates relative to the Game Objects parent.

    <readonly> worldAlpha :Number

    + id="x">x :number
    @@ -6882,7 +5992,7 @@ which contains the x/y coordinates relative to the Game Objects parent.

    -

    [read-only] The multiplied alpha of the displayObject

    +

    The position of the Game Object on the x axis relative to the local coordinates of the parent.

    @@ -6899,7 +6009,7 @@ which contains the x/y coordinates relative to the Game Objects parent.

    Inherited From:
    @@ -6915,7 +6025,7 @@ which contains the x/y coordinates relative to the Game Objects parent.

    Source - - pixi/display/DisplayObject.js, line 97 + gameobjects/components/PhysicsBody.js, line 98
    @@ -6934,7 +6044,7 @@ which contains the x/y coordinates relative to the Game Objects parent.

    <readonly> worldPosition :Point

    + id="y">y :number
    @@ -6943,8 +6053,7 @@ which contains the x/y coordinates relative to the Game Objects parent.

    -

    The position of the Display Object based on the world transform. -This value is updated at the end of updateTransform and takes all parent transforms into account.

    +

    The position of the Game Object on the y axis relative to the local coordinates of the parent.

    @@ -6961,7 +6070,7 @@ This value is updated at the end of updateTransform and takes all parent transfo
    Inherited From:
    @@ -6977,314 +6086,7 @@ This value is updated at the end of updateTransform and takes all parent transfo
    Source - - pixi/display/DisplayObject.js, line 116 -
    - - - - - - - - - - - - - - - -
    -

    <readonly> worldRotation :Number

    - - -
    -
    - - - -
    -

    The rotation of the Display Object, in radians, based on the world transform. -This value is updated at the end of updateTransform and takes all parent transforms into account.

    -
    - - - - - -
    - - - - - - - -
    Inherited From:
    -
    - - - - - - - - - - - - - -
    Source - - pixi/display/DisplayObject.js, line 136 -
    - - - - - - - -
    - - - -
    - - - -
    -

    <readonly> worldScale :Point

    - - -
    -
    - - - -
    -

    The scale of the Display Object based on the world transform. -This value is updated at the end of updateTransform and takes all parent transforms into account.

    -
    - - - - - -
    - - - - - - - -
    Inherited From:
    -
    - - - - - - - - - - - - - -
    Source - - pixi/display/DisplayObject.js, line 126 -
    - - - - - - - -
    - - - -
    - - - -
    -

    worldVisible :Boolean

    - - -
    -
    - - - -
    -

    [read-only] Indicates if the sprite is globally visible.

    -
    - - - - - -
    - - - - - - - -
    Inherited From:
    -
    - - - - - - - - - - - - - -
    Source - - pixi/display/DisplayObject.js, line 258 -
    - - - - - - - -
    - - - -
    - - - -
    -

    x :Number

    - - -
    -
    - - - -
    -

    The position of the displayObject on the x axis relative to the local coordinates of the parent.

    -
    - - - - - -
    - - - - - - - -
    Inherited From:
    -
    - - - - - - - - - - - - - -
    Source - - pixi/display/DisplayObject.js, line 722 -
    - - - - - - - -
    - - - -
    - - - -
    -

    y :Number

    - - -
    -
    - - - -
    -

    The position of the displayObject on the y axis relative to the local coordinates of the parent.

    -
    - - - - - -
    - - - - - - - -
    Inherited From:
    -
    - - - - - - - - - - - - - -
    Source - - pixi/display/DisplayObject.js, line 740 + gameobjects/components/PhysicsBody.js, line 124
    @@ -7373,7 +6175,7 @@ If you wish to re-order the layering of a Game Object then see methods like Grou

    addChild(child) → {PIXI.DisplayObject}

    + id="addChild">addChild(child) → {DisplayObject}
    @@ -7422,7 +6224,7 @@ If you wish to re-order the layering of a Game Object then see methods like Grou -PIXI.DisplayObject +DisplayObject @@ -7449,7 +6251,7 @@ If you wish to re-order the layering of a Game Object then see methods like Grou @@ -7517,7 +6319,7 @@ If you wish to re-order the layering of a Game Object then see methods like Grou

    addChildAt(child, index) → {PIXI.DisplayObject}

    + id="addChildAt">addChildAt(child, index) → {DisplayObject}
    @@ -7566,7 +6368,7 @@ If you wish to re-order the layering of a Game Object then see methods like Grou -PIXI.DisplayObject +DisplayObject @@ -7616,7 +6418,7 @@ If you wish to re-order the layering of a Game Object then see methods like Grou @@ -8319,7 +7121,7 @@ one expands it.

    bringToTop() → {PIXI.DisplayObject}

    + id="bringToTop">bringToTop() → {PIXI.DisplayObject}
    @@ -8349,7 +7151,7 @@ because the World is the root Group from which all Game Objects descend.

    -PIXI.DisplayObject +PIXI.DisplayObject -
    @@ -8603,7 +7405,7 @@ in which case the values are duplicated to a local object.

    destroy()

    + id="destroy">destroy(destroyChildren, destroyTexture)
    @@ -8612,84 +7414,11 @@ in which case the values are duplicated to a local object.

    -

    Destroy this DisplayObject. -Removes all references to transformCallbacks, its parent, the stage, filters, bounds, mask and cached Sprites.

    -
    - - - - - - - - - - - -
    - - - - - - - -
    Inherited From:
    -
    - - - - - - - - - - - - - -
    Source - - pixi/display/DisplayObject.js, line 223 -
    - - - - - - - -
    - - - - - - - - - - - -
    - - - -
    -

    generateTexture(resolution, scaleMode, renderer) → {PIXI.RenderTexture}

    - - -
    -
    - - - -
    -

    Useful function that returns a texture of the displayObject object that can then be used to create sprites -This can be quite useful if your displayObject is static / complicated and needs to be reused multiple times.

    +

    Destroys the Game Object. This removes it from its parent group, destroys the input, event and animation handlers if present +and nulls its reference to game, freeing it up for garbage collection.

    +

    If this Game Object has the Events component it will also dispatch the onDestroy event.

    +

    You can optionally also destroy the BaseTexture this Game Object is using. Be careful if you've +more than one Game Object sharing the same BaseTexture.

    @@ -8711,8 +7440,12 @@ This can be quite useful if your displayObject is static / complicated and needs Type + Argument + + Default + Description @@ -8723,72 +7456,78 @@ This can be quite useful if your displayObject is static / complicated and needs - resolution + destroyChildren -Number +boolean + + + <optional>
    + + + + + -

    The resolution of the texture being generated

    + + + + true + + + + +

    Should every child of this object have its destroy method called as well?

    - scaleMode + destroyTexture -Number +boolean - - - -

    See {{#crossLink "PIXI/scaleModes:property"}}PIXI.scaleModes{{/crossLink}} for possible values

    - - - - - - - renderer - - - - + + + <optional>
    -PIXI.CanvasRenderer -| -PIXI.WebGLRenderer - - - - + + + + + + false + + + -

    The renderer used to generate the texture.

    +

    Destroy the BaseTexture this Game Object is using? Note that if another Game Object is sharing the same BaseTexture it will invalidate it.

    @@ -8798,26 +7537,6 @@ This can be quite useful if your displayObject is static / complicated and needs -
    Returns:
    -
    - - - -
    - -PIXI.RenderTexture - - - -
    - -
    -

    a texture of the graphics object

    -
    - - - -
    -
    @@ -8830,7 +7549,7 @@ This can be quite useful if your displayObject is static / complicated and needs
    Inherited From:
    @@ -8846,7 +7565,7 @@ This can be quite useful if your displayObject is static / complicated and needs
    Source - - pixi/display/DisplayObject.js, line 541 + gameobjects/components/Destroy.js, line 37
    @@ -9024,7 +7743,7 @@ on the root most object in this Sprites display list first.

    getChildAt(index) → {PIXI.DisplayObject}

    + id="getChildAt">getChildAt(index) → {DisplayObject}
    @@ -9100,7 +7819,7 @@ on the root most object in this Sprites display list first.

    @@ -9217,7 +7936,7 @@ on the root most object in this Sprites display list first.

    -PIXI.DisplayObject +DisplayObject @@ -9380,7 +8099,7 @@ on the root most object in this Sprites display list first.

    Source - - pixi/display/DisplayObjectContainer.js, line 381 + pixi/display/DisplayObjectContainer.js, line 383
    @@ -9407,7 +8126,7 @@ on the root most object in this Sprites display list first.

    kill() → {PIXI.DisplayObject}

    + id="kill">kill() → {PIXI.DisplayObject}
    @@ -9438,7 +8157,7 @@ it doesn't destroy the object or free it up from memory.

    -PIXI.DisplayObject +PIXI.DisplayObject -
    @@ -9746,7 +8465,7 @@ and swapping it to be the key of the atlas data.

    moveDown() → {PIXI.DisplayObject}

    + id="moveDown">moveDown() → {PIXI.DisplayObject}
    @@ -9776,7 +8495,7 @@ because the World is the root Group from which all Game Objects descend.

    -PIXI.DisplayObject +PIXI.DisplayObject -
    @@ -9844,7 +8563,7 @@ because the World is the root Group from which all Game Objects descend.

    moveUp() → {PIXI.DisplayObject}

    + id="moveUp">moveUp() → {PIXI.DisplayObject}
    @@ -9874,7 +8593,7 @@ because the World is the root Group from which all Game Objects descend.

    -PIXI.DisplayObject +PIXI.DisplayObject -
    @@ -10077,7 +8796,7 @@ It should be fine for low-volume testing where physics isn't required.

    Phaser.Button | -PIXI.DisplayObject +PIXI.DisplayObject @@ -10629,7 +9348,7 @@ If you need to reset an already running animation do so directly on the Animatio

    removeChild(child) → {PIXI.DisplayObject}

    + id="removeChild">removeChild(child) → {DisplayObject}
    @@ -10678,7 +9397,7 @@ If you need to reset an already running animation do so directly on the Animatio -PIXI.DisplayObject +DisplayObject @@ -10705,7 +9424,7 @@ If you need to reset an already running animation do so directly on the Animatio @@ -10773,7 +9492,7 @@ If you need to reset an already running animation do so directly on the Animatio

    removeChildAt(index) → {PIXI.DisplayObject}

    + id="removeChildAt">removeChildAt(index) → {DisplayObject}
    @@ -10849,7 +9568,7 @@ If you need to reset an already running animation do so directly on the Animatio @@ -11112,7 +9831,7 @@ If you need to reset an already running animation do so directly on the Animatio
    Source - - pixi/display/DisplayObjectContainer.js, line 426 + pixi/display/DisplayObjectContainer.js, line 428
    @@ -11617,7 +10336,7 @@ it can be useful to adjust the dimensions directly in this way.

    revive(health) → {PIXI.DisplayObject}

    + id="revive">revive(health) → {PIXI.DisplayObject}
    @@ -11715,7 +10434,7 @@ it can be useful to adjust the dimensions directly in this way.

    -PIXI.DisplayObject +PIXI.DisplayObject -
    @@ -11783,7 +10502,7 @@ it can be useful to adjust the dimensions directly in this way.

    sendToBack() → {PIXI.DisplayObject}

    + id="sendToBack">sendToBack() → {PIXI.DisplayObject}
    @@ -11813,7 +10532,7 @@ because the World is the root Group from which all Game Objects descend.

    -PIXI.DisplayObject +PIXI.DisplayObject -
    @@ -12000,7 +10719,7 @@ because the World is the root Group from which all Game Objects descend.

    -PIXI.DisplayObject +DisplayObject @@ -12605,7 +11324,7 @@ or pass null for the maxX and maxY parame
    Source - - pixi/display/DisplayObjectContainer.js, line 410 + pixi/display/DisplayObjectContainer.js, line 412
    @@ -12861,7 +11580,7 @@ texture this Sprite was using.

    -PIXI.DisplayObject +DisplayObject @@ -12884,7 +11603,7 @@ texture this Sprite was using.

    -PIXI.DisplayObject +DisplayObject @@ -12953,337 +11672,6 @@ texture this Sprite was using.

    -
    - - - -
    -

    toGlobal(position) → {Point}

    - - -
    -
    - - - -
    -

    Calculates the global position of the display object

    -
    - - - - - - - -
    Parameters:
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    NameTypeDescription
    position - - -Point - - - -

    The world origin to calculate from

    - - - - -
    Returns:
    -
    - - - -
    - -Point - - - -
    - -
    -

    A point object representing the position of this object

    -
    - - - -
    - - - -
    - - - - - - - -
    Inherited From:
    -
    - - - - - - - - - - - - - -
    Source - - pixi/display/DisplayObject.js, line 575 -
    - - - - - - - -
    - - - - - - - - - - - -
    - - - -
    -

    toLocal(position, from) → {Point}

    - - -
    -
    - - - -
    -

    Calculates the local position of the display object relative to another point

    -
    - - - - - - - -
    Parameters:
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    NameTypeArgumentDescription
    position - - -Point - - - - - - - - - -

    The world origin to calculate from

    from - - -PIXI.DisplayObject - - - - - - <optional>
    - - - - - -

    The DisplayObject to calculate the global position from

    - - - - -
    Returns:
    -
    - - - -
    - -Point - - - -
    - -
    -

    A point object representing the position of this object

    -
    - - - -
    - - - -
    - - - - - - - -
    Inherited From:
    -
    - - - - - - - - - - - - - -
    Source - - pixi/display/DisplayObject.js, line 589 -
    - - - - - - - -
    - - - - - - - - - - -
    @@ -13354,81 +11742,6 @@ texture this Sprite was using.

    - - - - -
    -

    updateCache()

    - - -
    -
    - - - -
    -

    Generates and updates the cached sprite for this object.

    -
    - - - - - - - - - - - -
    - - - - - - - -
    Inherited From:
    -
    - - - - - - - - - - - - - -
    Source - - pixi/display/DisplayObject.js, line 565 -
    - - - - - - - -
    - - - - - - - - - - -
    @@ -13533,7 +11846,7 @@ or the rectangle it references, then you need to update the crop frame by callin Documentation generated by JSDoc 3.3.3 - on Fri Jun 17 2016 12:45:35 GMT+0100 (BST) using the DocStrap template. + on Fri Jul 08 2016 15:42:40 GMT+0100 (GMT Daylight Time) using the DocStrap template. diff --git a/docs/Phaser.Particles.Arcade.Emitter.html b/docs/Phaser.Particles.Arcade.Emitter.html index f6b3deeed..49c1d6b20 100644 --- a/docs/Phaser.Particles.Arcade.Emitter.html +++ b/docs/Phaser.Particles.Arcade.Emitter.html @@ -708,10 +708,6 @@ ComplexPrimitiveShader -
  • - DisplayObject -
  • -
  • DisplayObjectContainer
  • @@ -744,6 +740,10 @@ PIXI +
  • + DisplayObject +
  • +
  • PixiFastShader
  • @@ -1622,7 +1622,7 @@ All it really does is launch Particle objects out at set intervals, and fixes th
    Source - - core/Group.js, line 2646 + core/Group.js, line 2945
    @@ -1742,7 +1742,7 @@ and on-screen orientation and position.

    Source - - core/Group.js, line 2578 + core/Group.js, line 2594
    @@ -2143,69 +2143,6 @@ and on-screen orientation and position.

    - - - - - - - - -
    -

    cacheAsBitmap :Boolean

    - - -
    -
    - - - -
    -

    Set if this display object is cached as a bitmap. -This basically takes a snap shot of the display object as it is at that moment. It can provide a performance benefit for complex static displayObjects. -To remove simply set this property to 'null'

    -
    - - - - - -
    - - - - - - - -
    Inherited From:
    -
    - - - - - - - - - - - - - -
    Source - - pixi/display/DisplayObject.js, line 355 -
    - - - - - - -
    @@ -2268,6 +2205,140 @@ If the parent of this Group is also fixedToCamera then the offset h + + + + +
    + + + +
    +

    centerX :number

    + + +
    +
    + + + +
    +

    The center x coordinate of this Group.

    +

    It is derived by calling getBounds, calculating the Groups dimensions based on its +visible children.

    +

    Note that no ancestors are factored into the result, meaning that if this Group is +nested within another Group, with heavy transforms on it, the result of this property +is likely to be incorrect. It is safe to get and set this property if the Group is a +top-level descendant of Phaser.World, or untransformed parents.

    +
    + + + + + +
    + + + + + + + +
    Inherited From:
    +
    + + + + + + + + + + + + + +
    Source - + core/Group.js, line 2617 +
    + + + + + + + +
    + + + +
    + + + +
    +

    centerY :number

    + + +
    +
    + + + +
    +

    The center y coordinate of this Group.

    +

    It is derived by calling getBounds, calculating the Groups dimensions based on its +visible children.

    +

    Note that no ancestors are factored into the result, meaning that if this Group is +nested within another Group, with heavy transforms on it, the result of this property +is likely to be incorrect. It is safe to get and set this property if the Group is a +top-level descendant of Phaser.World, or untransformed parents.

    +
    + + + + + +
    + + + + + + + +
    Inherited From:
    +
    + + + + + + + + + + + + + +
    Source - + core/Group.js, line 2650 +
    + + + + + + +
    @@ -2833,143 +2904,6 @@ Emitter.emitX and Emitter.emitY control the emission location relative to the x/ - - - - -
    - - - -
    -

    filterArea :Rectangle

    - - -
    -
    - - - -
    -

    The area the filter is applied to like the hitArea this is used as more of an optimisation -rather than figuring out the dimensions of the displayObject each frame you can set this rectangle

    -
    - - - - - -
    - - - - - - - -
    Inherited From:
    -
    - - - - - - - - - - - - - -
    Source - - pixi/display/DisplayObject.js, line 164 -
    - - - - - - - -
    - - - -
    - - - -
    -

    filters :Array.<Filter>

    - - -
    -
    - - - -
    -

    Sets the filters for the displayObject. -IMPORTANT: This is a webGL only feature and will be ignored by the Canvas renderer.

    -

    To remove filters simply set this property to 'null'.

    -

    You cannot have a filter and a multiply blend mode active at the same time. Setting a filter will reset -this objects blend mode to NORMAL.

    -
    - - - -
    Type:
    -
      -
    • - -Array.<Filter> - - -
    • -
    - - - -
    - - - - - - - -
    Inherited From:
    -
    - - - - - - - - - - - - - -
    Source - - pixi/display/DisplayObject.js, line 307 -
    - - - - - - -
    @@ -3340,87 +3274,6 @@ sorting and filtering of Group children without touching their z-index (and ther - - - - -
    - - - -
    -

    hitArea :Rectangle|Circle|Ellipse|Polygon

    - - -
    -
    - - - -
    -

    This is the defined area that will pick up mouse / touch events. It is null by default. -Setting it is a neat way of optimising the hitTest function that the interactionManager will use (as it will not need to hit test all the children)

    -
    - - - -
    Type:
    -
      -
    • - -Rectangle -| - -Circle -| - -Ellipse -| - -Polygon - - -
    • -
    - - - -
    - - - - - - - -
    Inherited From:
    -
    - - - - - - - - - - - - - -
    Source - - pixi/display/DisplayObject.js, line 62 -
    - - - - - - -
    @@ -3716,7 +3569,7 @@ on any children added to, or created by, this Group.

    Source - - core/Group.js, line 2561 + core/Group.js, line 2577
    @@ -3784,69 +3637,6 @@ on any children added to, or created by, this Group.

    - - - - - - - - -
    -

    mask :PIXI.Graphics

    - - -
    -
    - - - -
    -

    Sets a mask for the displayObject. A mask is an object that limits the visibility of an object to the shape of the mask applied to it. -In PIXI a regular mask must be a PIXI.Graphics object. This allows for much faster masking in canvas as it utilises shape clipping. -To remove a mask, set this property to null.

    -
    - - - - - -
    - - - - - - - -
    Inherited From:
    -
    - - - - - - - - - - - - - -
    Source - - pixi/display/DisplayObject.js, line 282 -
    - - - - - - -
    @@ -4800,67 +4590,6 @@ is still over the Sprite or not.

    - - - - -
    - - - -
    -

    <readonly> parent :PIXI.DisplayObjectContainer

    - - -
    -
    - - - -
    -

    [read-only] The display object container that contains this display object.

    -
    - - - - - -
    - - - - - - - -
    Inherited From:
    -
    - - - - - - - - - - - - - -
    Source - - pixi/display/DisplayObject.js, line 79 -
    - - - - - - -
    @@ -5392,189 +5121,6 @@ Phaser.Physics.Arcade.BOTTOM_TOP

    - - - - -
    - - - -
    -

    pivot :Point

    - - -
    -
    - - - -
    -

    The pivot point of the displayObject that it rotates around

    -
    - - - - - -
    - - - - - - - -
    Inherited From:
    -
    - - - - - - - - - - - - - -
    Source - - pixi/display/DisplayObject.js, line 30 -
    - - - - - - - -
    - - - -
    - - - -
    -

    position :Point

    - - -
    -
    - - - -
    -

    The coordinate of the object relative to the local coordinates of the parent.

    -
    - - - - - -
    - - - - - - - -
    Inherited From:
    -
    - - - - - - - - - - - - - -
    Source - - pixi/display/DisplayObject.js, line 14 -
    - - - - - - - -
    - - - -
    - - - -
    -

    renderable :Boolean

    - - -
    -
    - - - -
    -

    Can this object be rendered

    -
    - - - - - -
    - - - - - - - -
    Inherited From:
    -
    - - - - - - - - - - - - - -
    Source - - pixi/display/DisplayObject.js, line 71 -
    - - - - - - -
    @@ -5685,68 +5231,7 @@ This will have no impact on the rotation value of its children, but it will upda
    Source - - core/Group.js, line 2630 -
    - - - - - - - - - - - - - - - -
    -

    scale :Point

    - - -
    -
    - - - -
    -

    The scale factor of the object.

    -
    - - - - - -
    - - - - - - - -
    Inherited From:
    -
    - - - - - - - - - - - - - -
    Source - - pixi/display/DisplayObject.js, line 22 + core/Group.js, line 2929
    @@ -5811,67 +5296,6 @@ This will have no impact on the rotation value of its children, but it will upda -
    - - - -
    - - - -
    -

    <readonly> stage :Stage

    - - -
    -
    - - - -
    -

    [read-only] The stage the display object is connected to, or undefined if it is not connected to the stage.

    -
    - - - - - -
    - - - - - - - -
    Inherited From:
    -
    - - - - - - - - - - - - - -
    Source - - pixi/display/DisplayObject.js, line 88 -
    - - - - - - -
    @@ -5980,7 +5404,7 @@ This will have no impact on the rotation value of its children, but it will upda
    Source - - core/Group.js, line 2544 + core/Group.js, line 2560
    @@ -6104,7 +5528,7 @@ This will have no impact on the rotation value of its children, but it will upda
    Source - - core/Group.js, line 2639 + core/Group.js, line 2938
    @@ -6169,314 +5593,6 @@ This will have no impact on the rotation value of its children, but it will upda - - - - - - - - -
    -

    <readonly> worldAlpha :Number

    - - -
    -
    - - - -
    -

    [read-only] The multiplied alpha of the displayObject

    -
    - - - - - -
    - - - - - - - -
    Inherited From:
    -
    - - - - - - - - - - - - - -
    Source - - pixi/display/DisplayObject.js, line 97 -
    - - - - - - - -
    - - - -
    - - - -
    -

    <readonly> worldPosition :Point

    - - -
    -
    - - - -
    -

    The position of the Display Object based on the world transform. -This value is updated at the end of updateTransform and takes all parent transforms into account.

    -
    - - - - - -
    - - - - - - - -
    Inherited From:
    -
    - - - - - - - - - - - - - -
    Source - - pixi/display/DisplayObject.js, line 116 -
    - - - - - - - -
    - - - -
    - - - -
    -

    <readonly> worldRotation :Number

    - - -
    -
    - - - -
    -

    The rotation of the Display Object, in radians, based on the world transform. -This value is updated at the end of updateTransform and takes all parent transforms into account.

    -
    - - - - - -
    - - - - - - - -
    Inherited From:
    -
    - - - - - - - - - - - - - -
    Source - - pixi/display/DisplayObject.js, line 136 -
    - - - - - - - -
    - - - -
    - - - -
    -

    <readonly> worldScale :Point

    - - -
    -
    - - - -
    -

    The scale of the Display Object based on the world transform. -This value is updated at the end of updateTransform and takes all parent transforms into account.

    -
    - - - - - -
    - - - - - - - -
    Inherited From:
    -
    - - - - - - - - - - - - - -
    Source - - pixi/display/DisplayObject.js, line 126 -
    - - - - - - - -
    - - - -
    - - - -
    -

    worldVisible :Boolean

    - - -
    -
    - - - -
    -

    [read-only] Indicates if the sprite is globally visible.

    -
    - - - - - -
    - - - - - - - -
    Inherited From:
    -
    - - - - - - - - - - - - - -
    Source - - pixi/display/DisplayObject.js, line 258 -
    - - - - - - -
    @@ -7077,7 +6193,7 @@ this allows you to control child ordering.

    Source - - core/Group.js, line 1374 + core/Group.js, line 1376
    @@ -7345,7 +6461,7 @@ this allows you to control child ordering.

    addChild(child) → {PIXI.DisplayObject}

    + id="addChild">addChild(child) → {DisplayObject}
    @@ -7394,7 +6510,7 @@ this allows you to control child ordering.

    -PIXI.DisplayObject +DisplayObject @@ -7421,7 +6537,7 @@ this allows you to control child ordering.

    @@ -7489,7 +6605,7 @@ this allows you to control child ordering.

    addChildAt(child, index) → {PIXI.DisplayObject}

    + id="addChildAt">addChildAt(child, index) → {DisplayObject}
    @@ -7538,7 +6654,7 @@ this allows you to control child ordering.

    -PIXI.DisplayObject +DisplayObject @@ -7588,7 +6704,7 @@ this allows you to control child ordering.

    @@ -8352,6 +7468,641 @@ This is a constant and can be one of Phaser.TOP_LEFT (default), + + + +
    +

    alignIn(container, position, offsetX, offsetY) → {Phaser.Group}

    + + +
    +
    + + + +
    +

    Aligns this Group within another Game Object, or Rectangle, known as the +'container', to one of 9 possible positions.

    +

    The container must be a Game Object, or Phaser.Rectangle object. This can include properties +such as World.bounds or Camera.view, for aligning Groups within the world +and camera bounds. Or it can include other Sprites, Images, Text objects, BitmapText, +TileSprites or Buttons.

    +

    Please note that aligning a Group to another Game Object does not make it a child of +the container. It simply modifies its position coordinates so it aligns with it.

    +

    The position constants you can use are:

    +

    Phaser.TOP_LEFT, Phaser.TOP_CENTER, Phaser.TOP_RIGHT, Phaser.LEFT_CENTER, +Phaser.CENTER, Phaser.RIGHT_CENTER, Phaser.BOTTOM_LEFT, +Phaser.BOTTOM_CENTER and Phaser.BOTTOM_RIGHT.

    +

    Groups are placed in such a way that their bounds align with the +container, taking into consideration rotation and scale of its children. +This allows you to neatly align Groups, irrespective of their position value.

    +

    The optional offsetX and offsetY arguments allow you to apply extra spacing to the final +aligned position of the Group. For example:

    +

    group.alignIn(background, Phaser.BOTTOM_RIGHT, -20, -20)

    +

    Would align the group to the bottom-right, but moved 20 pixels in from the corner. +Think of the offsets as applying an adjustment to the containers bounds before the alignment takes place. +So providing a negative offset will 'shrink' the container bounds by that amount, and providing a positive +one expands it.

    +
    + + + + + + + +
    Parameters:
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeArgumentDefaultDescription
    container + + +Phaser.Rectangle +| + +Phaser.Sprite +| + +Phaser.Image +| + +Phaser.Text +| + +Phaser.BitmapText +| + +Phaser.Button +| + +Phaser.Graphics +| + +Phaser.TileSprite + + + + + + + + + + + +

    The Game Object or Rectangle with which to align this Group to. Can also include properties such as World.bounds or Camera.view.

    position + + +integer + + + + + + <optional>
    + + + + + +
    + +

    The position constant. One of Phaser.TOP_LEFT (default), Phaser.TOP_CENTER, Phaser.TOP_RIGHT, Phaser.LEFT_CENTER, Phaser.CENTER, Phaser.RIGHT_CENTER, Phaser.BOTTOM_LEFT, Phaser.BOTTOM_CENTER or Phaser.BOTTOM_RIGHT.

    offsetX + + +integer + + + + + + <optional>
    + + + + + +
    + + 0 + +

    A horizontal adjustment of the Containers bounds, applied to the aligned position of the Game Object. Use a negative value to shrink the bounds, positive to increase it.

    offsetY + + +integer + + + + + + <optional>
    + + + + + +
    + + 0 + +

    A vertical adjustment of the Containers bounds, applied to the aligned position of the Game Object. Use a negative value to shrink the bounds, positive to increase it.

    + + + + +
    Returns:
    +
    + + + +
    + +Phaser.Group + + - +
    + +
    +

    This Group.

    +
    + + + +
    + + + +
    + + + + + + + +
    Inherited From:
    +
    + + + + + + + + + + + + + +
    Source - + core/Group.js, line 2815 +
    + + + + + + + +
    + + + + + + + + + + + +
    + + + +
    +

    alignTo(parent, position, offsetX, offsetY) → {Phaser.Group}

    + + +
    +
    + + + +
    +

    Aligns this Group to the side of another Game Object, or Rectangle, known as the +'parent', in one of 11 possible positions.

    +

    The parent must be a Game Object, or Phaser.Rectangle object. This can include properties +such as World.bounds or Camera.view, for aligning Groups within the world +and camera bounds. Or it can include other Sprites, Images, Text objects, BitmapText, +TileSprites or Buttons.

    +

    Please note that aligning a Group to another Game Object does not make it a child of +the parent. It simply modifies its position coordinates so it aligns with it.

    +

    The position constants you can use are:

    +

    Phaser.TOP_LEFT (default), Phaser.TOP_CENTER, Phaser.TOP_RIGHT, Phaser.LEFT_TOP, +Phaser.LEFT_CENTER, Phaser.LEFT_BOTTOM, Phaser.RIGHT_TOP, Phaser.RIGHT_CENTER, +Phaser.RIGHT_BOTTOM, Phaser.BOTTOM_LEFT, Phaser.BOTTOM_CENTER +and Phaser.BOTTOM_RIGHT.

    +

    Groups are placed in such a way that their bounds align with the +parent, taking into consideration rotation and scale of the children. +This allows you to neatly align Groups, irrespective of their position value.

    +

    The optional offsetX and offsetY arguments allow you to apply extra spacing to the final +aligned position of the Group. For example:

    +

    group.alignTo(background, Phaser.BOTTOM_RIGHT, -20, -20)

    +

    Would align the group to the bottom-right, but moved 20 pixels in from the corner. +Think of the offsets as applying an adjustment to the parents bounds before the alignment takes place. +So providing a negative offset will 'shrink' the parent bounds by that amount, and providing a positive +one expands it.

    +
    + + + + + + + +
    Parameters:
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeArgumentDefaultDescription
    parent + + +Phaser.Rectangle +| + +Phaser.Sprite +| + +Phaser.Image +| + +Phaser.Text +| + +Phaser.BitmapText +| + +Phaser.Button +| + +Phaser.Graphics +| + +Phaser.TileSprite + + + + + + + + + + + +

    The Game Object or Rectangle with which to align this Group to. Can also include properties such as World.bounds or Camera.view.

    position + + +integer + + + + + + <optional>
    + + + + + +
    + +

    The position constant. One of Phaser.TOP_LEFT, Phaser.TOP_CENTER, Phaser.TOP_RIGHT, Phaser.LEFT_TOP, Phaser.LEFT_CENTER, Phaser.LEFT_BOTTOM, Phaser.RIGHT_TOP, Phaser.RIGHT_CENTER, Phaser.RIGHT_BOTTOM, Phaser.BOTTOM_LEFT, Phaser.BOTTOM_CENTER or Phaser.BOTTOM_RIGHT.

    offsetX + + +integer + + + + + + <optional>
    + + + + + +
    + + 0 + +

    A horizontal adjustment of the Containers bounds, applied to the aligned position of the Game Object. Use a negative value to shrink the bounds, positive to increase it.

    offsetY + + +integer + + + + + + <optional>
    + + + + + +
    + + 0 + +

    A vertical adjustment of the Containers bounds, applied to the aligned position of the Game Object. Use a negative value to shrink the bounds, positive to increase it.

    + + + + +
    Returns:
    +
    + + + +
    + +Phaser.Group + + - +
    + +
    +

    This Group.

    +
    + + + +
    + + + +
    + + + + + + + +
    Inherited From:
    +
    + + + + + + + + + + + + + +
    Source - + core/Group.js, line 2857 +
    + + + + + + + +
    + + + + + + + + + + +
    @@ -8485,7 +8236,7 @@ This is a constant and can be one of Phaser.TOP_LEFT (default), Source - - core/Group.js, line 1910 + core/Group.js, line 1912 @@ -8577,7 +8328,7 @@ If the object doesn't have a center property it will be set to object.x + object Phaser.Text | -PIXI.DisplayObject +PIXI.DisplayObject @@ -8784,7 +8535,7 @@ If the object doesn't have a center property it will be set to object.x + object
    Source - - core/Group.js, line 895 + core/Group.js, line 897
    @@ -9002,7 +8753,7 @@ After the method parameter and context you can add as many extra parameters as y
    Source - - core/Group.js, line 1529 + core/Group.js, line 1531
    @@ -9201,7 +8952,7 @@ After the method parameter and context you can add as many extra parameters as y
    Source - - core/Group.js, line 1442 + core/Group.js, line 1444
    @@ -9378,7 +9129,7 @@ After the method parameter and context you can add as many extra parameters as y
    Source - - core/Group.js, line 1476 + core/Group.js, line 1478
    @@ -9671,7 +9422,7 @@ After the method parameter and context you can add as many extra parameters as y
    Source - - core/Group.js, line 1341 + core/Group.js, line 1343
    @@ -9940,7 +9691,7 @@ After the method parameter and context you can add as many extra parameters as y
    Source - - core/Group.js, line 1205 + core/Group.js, line 1207
    @@ -10035,7 +9786,7 @@ After the method parameter and context you can add as many extra parameters as y
    Source - - core/Group.js, line 2293 + core/Group.js, line 2309
    @@ -10130,7 +9881,7 @@ After the method parameter and context you can add as many extra parameters as y
    Source - - core/Group.js, line 2281 + core/Group.js, line 2297
    @@ -10970,7 +10721,7 @@ It should return -1 if a > b, 1 if a < b or 0 if
    Source - - core/Group.js, line 1886 + core/Group.js, line 1888
    @@ -11124,7 +10875,7 @@ It should return -1 if a > b, 1 if a < b or 0 if
    Source - - core/Group.js, line 1942 + core/Group.js, line 1944
    @@ -11388,7 +11139,7 @@ It should return -1 if a > b, 1 if a < b or 0 if
    Source - - core/Group.js, line 1425 + core/Group.js, line 1427
    @@ -12057,7 +11808,7 @@ healthyList.callAll('attack');

    Note: Currently this will skip any

    Source - - core/Group.js, line 1668 + core/Group.js, line 1670
    @@ -12634,7 +12385,7 @@ If you set the total to be -1 then no quantity cap is used and it will keep emit
    Source - - core/Group.js, line 1708 + core/Group.js, line 1710
    @@ -12851,7 +12602,7 @@ If you set the total to be -1 then no quantity cap is used and it will keep emit
    Source - - core/Group.js, line 1790 + core/Group.js, line 1792
    @@ -13068,7 +12819,7 @@ If you set the total to be -1 then no quantity cap is used and it will keep emit
    Source - - core/Group.js, line 1818 + core/Group.js, line 1820
    @@ -13285,201 +13036,7 @@ If you set the total to be -1 then no quantity cap is used and it will keep emit
    Source - - core/Group.js, line 1762 -
    - - - - - - - - - - - - - - - - - - - - - - - -
    -

    generateTexture(resolution, scaleMode, renderer) → {PIXI.RenderTexture}

    - - -
    -
    - - - -
    -

    Useful function that returns a texture of the displayObject object that can then be used to create sprites -This can be quite useful if your displayObject is static / complicated and needs to be reused multiple times.

    -
    - - - - - - - -
    Parameters:
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    NameTypeDescription
    resolution - - -Number - - - -

    The resolution of the texture being generated

    scaleMode - - -Number - - - -

    See {{#crossLink "PIXI/scaleModes:property"}}PIXI.scaleModes{{/crossLink}} for possible values

    renderer - - -PIXI.CanvasRenderer -| - -PIXI.WebGLRenderer - - - -

    The renderer used to generate the texture.

    - - - - -
    Returns:
    -
    - - - -
    - -PIXI.RenderTexture - - - -
    - -
    -

    a texture of the graphics object

    -
    - - - -
    - - - -
    - - - - - - - -
    Inherited From:
    -
    - - - - - - - - - - - - - -
    Source - - pixi/display/DisplayObject.js, line 541 + core/Group.js, line 1764
    @@ -13722,7 +13279,7 @@ This can be quite useful if your displayObject is static / complicated and needs
    Source - - core/Group.js, line 2190 + core/Group.js, line 2192
    @@ -13963,7 +13520,7 @@ the same name only the first instance is returned.

    Source - - core/Group.js, line 1030 + core/Group.js, line 1032
    @@ -13990,7 +13547,7 @@ the same name only the first instance is returned.

    getChildAt(index) → {PIXI.DisplayObject}

    + id="getChildAt">getChildAt(index) → {DisplayObject}
    @@ -14066,7 +13623,7 @@ the same name only the first instance is returned.

    @@ -14183,7 +13740,7 @@ the same name only the first instance is returned.

    -PIXI.DisplayObject +DisplayObject @@ -14278,7 +13835,7 @@ the same name only the first instance is returned.

    getClosestTo(object) → {any}

    + id="getClosestTo">getClosestTo(object, callback, callbackContext) → {any}
    @@ -14287,9 +13844,13 @@ the same name only the first instance is returned.

    -

    Get the closest child to given Object.

    +

    Get the closest child to given Object, with optional callback to filter children.

    This can be a Sprite, Group, Image or any object with public x and y properties.

    'close' is determined by the distance from the objects x and y properties compared to the childs x and y properties.

    +

    You can use the optional callback argument to apply your own filter to the distance checks. +If the child is closer then the previous child, it will be sent to callback as the first argument, +with the distance as the second. The callback should return true if it passes your +filtering criteria, otherwise it should return false.

    @@ -14311,6 +13872,8 @@ the same name only the first instance is returned.

    Type + Argument + @@ -14336,6 +13899,14 @@ the same name only the first instance is returned.

    + + + + + + + + @@ -14343,6 +13914,72 @@ the same name only the first instance is returned.

    + + + + callback + + + + + +function + + + + + + + + + <optional>
    + + + + + + + + + + +

    The function that each child will be evaluated against. Each child of the group will be passed to it as its first parameter, with the distance as the second. It should return true if the child passes the matching criteria.

    + + + + + + + callbackContext + + + + + +object + + + + + + + + + <optional>
    + + + + + + + + + + +

    The context in which the function should be called (usually 'this').

    + + + @@ -14362,7 +13999,7 @@ the same name only the first instance is returned.

    -

    The child closest to given object, or null if no child was found.

    +

    The child closest to given object, or null if no child was found.

    @@ -14397,7 +14034,7 @@ the same name only the first instance is returned.

    Source - - core/Group.js, line 2207 + core/Group.js, line 2209
    @@ -14729,7 +14366,7 @@ will be reset and/or have a new texture loaded on it. This is handled by G
    Source - - core/Group.js, line 2074 + core/Group.js, line 2076
    @@ -15061,7 +14698,7 @@ will be reset and/or have a new texture loaded on it. This is handled by G
    Source - - core/Group.js, line 2104 + core/Group.js, line 2106
    @@ -15431,7 +15068,7 @@ will be reset and/or have a new texture loaded on it. This is handled by G
    Source - - core/Group.js, line 2040 + core/Group.js, line 2042
    @@ -15458,7 +15095,7 @@ will be reset and/or have a new texture loaded on it. This is handled by G

    getFurthestFrom(object) → {any}

    + id="getFurthestFrom">getFurthestFrom(object, callback, callbackContext) → {any}
    @@ -15467,9 +15104,13 @@ will be reset and/or have a new texture loaded on it. This is handled by G
    -

    Get the child furthest away from the given Object.

    +

    Get the child furthest away from the given Object, with optional callback to filter children.

    This can be a Sprite, Group, Image or any object with public x and y properties.

    'furthest away' is determined by the distance from the objects x and y properties compared to the childs x and y properties.

    +

    You can use the optional callback argument to apply your own filter to the distance checks. +If the child is closer then the previous child, it will be sent to callback as the first argument, +with the distance as the second. The callback should return true if it passes your +filtering criteria, otherwise it should return false.

    @@ -15491,6 +15132,8 @@ will be reset and/or have a new texture loaded on it. This is handled by G Type + Argument + @@ -15516,6 +15159,14 @@ will be reset and/or have a new texture loaded on it. This is handled by G + + + + + + + + @@ -15523,6 +15174,72 @@ will be reset and/or have a new texture loaded on it. This is handled by G + + + + callback + + + + + +function + + + + + + + + + <optional>
    + + + + + + + + + + +

    The function that each child will be evaluated against. Each child of the group will be passed to it as its first parameter, with the distance as the second. It should return true if the child passes the matching criteria.

    + + + + + + + callbackContext + + + + + +object + + + + + + + + + <optional>
    + + + + + + + + + + +

    The context in which the function should be called (usually 'this').

    + + + @@ -15542,7 +15259,7 @@ will be reset and/or have a new texture loaded on it. This is handled by G
    -

    The child furthest from the given object, or null if no child was found.

    +

    The child furthest from the given object, or null if no child was found.

    @@ -15577,7 +15294,7 @@ will be reset and/or have a new texture loaded on it. This is handled by G
    Source - - core/Group.js, line 2244 + core/Group.js, line 2253
    @@ -15721,7 +15438,7 @@ will be reset and/or have a new texture loaded on it. This is handled by G
    Source - - core/Group.js, line 1017 + core/Group.js, line 1019
    @@ -15816,7 +15533,7 @@ will be reset and/or have a new texture loaded on it. This is handled by G
    Source - - pixi/display/DisplayObjectContainer.js, line 381 + pixi/display/DisplayObjectContainer.js, line 383
    @@ -16019,7 +15736,7 @@ will be reset and/or have a new texture loaded on it. This is handled by G
    Source - - core/Group.js, line 2305 + core/Group.js, line 2321
    @@ -16115,7 +15832,7 @@ will be reset and/or have a new texture loaded on it. This is handled by G
    Source - - core/Group.js, line 2173 + core/Group.js, line 2175
    @@ -16283,7 +16000,7 @@ will be reset and/or have a new texture loaded on it. This is handled by G
    Source - - core/Group.js, line 1092 + core/Group.js, line 1094
    @@ -16642,7 +16359,7 @@ element and the entire array will be applied to the callback function.

    Source - - core/Group.js, line 1967 + core/Group.js, line 1969
    @@ -17247,7 +16964,7 @@ The particles are stored internally waiting to be emitted via Emitter.start.

    Source - - core/Group.js, line 2375 + core/Group.js, line 2391
    @@ -17391,7 +17108,7 @@ The particles are stored internally waiting to be emitted via Emitter.start.

    Source - - core/Group.js, line 957 + core/Group.js, line 959
    @@ -17535,7 +17252,7 @@ The particles are stored internally waiting to be emitted via Emitter.start.

    Source - - core/Group.js, line 933 + core/Group.js, line 935
    @@ -17729,7 +17446,7 @@ The particles are stored internally waiting to be emitted via Emitter.start.

    Source - - core/Group.js, line 1408 + core/Group.js, line 1410
    @@ -17825,7 +17542,7 @@ The particles are stored internally waiting to be emitted via Emitter.start.

    Source - - core/Group.js, line 821 + core/Group.js, line 823
    @@ -17907,7 +17624,7 @@ The particles are stored internally waiting to be emitted via Emitter.start.

    Source - - core/Group.js, line 1647 + core/Group.js, line 1649
    @@ -17989,7 +17706,7 @@ The particles are stored internally waiting to be emitted via Emitter.start.

    Source - - core/Group.js, line 1602 + core/Group.js, line 1604
    @@ -18085,7 +17802,7 @@ The particles are stored internally waiting to be emitted via Emitter.start.

    Source - - core/Group.js, line 850 + core/Group.js, line 852
    @@ -18325,7 +18042,7 @@ The particles are stored internally waiting to be emitted via Emitter.start.

    Source - - core/Group.js, line 2327 + core/Group.js, line 2343
    @@ -18550,7 +18267,7 @@ more than one Game Object sharing the same BaseTexture.

    Source - - core/Group.js, line 2404 + core/Group.js, line 2420
    @@ -18805,7 +18522,7 @@ more than one Game Object sharing the same BaseTexture.

    Source - - core/Group.js, line 2452 + core/Group.js, line 2468
    @@ -18832,7 +18549,7 @@ more than one Game Object sharing the same BaseTexture.

    removeChild(child) → {PIXI.DisplayObject}

    + id="removeChild">removeChild(child) → {DisplayObject}
    @@ -18881,7 +18598,7 @@ more than one Game Object sharing the same BaseTexture.

    -PIXI.DisplayObject +DisplayObject @@ -18908,7 +18625,7 @@ more than one Game Object sharing the same BaseTexture.

    @@ -18976,7 +18693,7 @@ more than one Game Object sharing the same BaseTexture.

    removeChildAt(index) → {PIXI.DisplayObject}

    + id="removeChildAt">removeChildAt(index) → {DisplayObject}
    @@ -19052,7 +18769,7 @@ more than one Game Object sharing the same BaseTexture.

    @@ -19460,7 +19177,7 @@ This call will return false if the child is not in the hash.

    Source - - pixi/display/DisplayObjectContainer.js, line 426 + pixi/display/DisplayObjectContainer.js, line 428
    @@ -19629,7 +19346,7 @@ This call will return false if the child is not in the hash.

    Source - - core/Group.js, line 1053 + core/Group.js, line 1055
    @@ -19932,7 +19649,7 @@ This call will return false if the child is not in the hash.

    Source - - core/Group.js, line 2134 + core/Group.js, line 2136
    @@ -20097,7 +19814,7 @@ This call will return false if the child is not in the hash.

    Source - - core/Group.js, line 794 + core/Group.js, line 796
    @@ -20173,7 +19890,7 @@ This call will return false if the child is not in the hash.

    Source - - core/Group.js, line 1003 + core/Group.js, line 1005
    @@ -20407,7 +20124,7 @@ This call will return false if the child is not in the hash.

    Source - - core/Group.js, line 914 + core/Group.js, line 916
    @@ -20794,7 +20511,7 @@ This call will return false if the child is not in the hash.

    Source - - core/Group.js, line 1234 + core/Group.js, line 1236
    @@ -21128,7 +20845,7 @@ If you need that ability please see Group.setAllChildren.

    Source - - core/Group.js, line 1265 + core/Group.js, line 1267
    @@ -21462,7 +21179,7 @@ Unlike with setAll the property is NOT set on child Groups itself.<
    Source - - core/Group.js, line 1300 + core/Group.js, line 1302
    @@ -21855,7 +21572,7 @@ If rate is zero, which is the default, the particle won't change alpha - instead -PIXI.DisplayObject +DisplayObject @@ -22242,7 +21959,7 @@ If rate is zero, which is the default, the particle won't change alpha - instead
    Source - - core/Group.js, line 1127 + core/Group.js, line 1129
    @@ -23121,7 +22838,7 @@ If rate is zero, which is the default, the particle won't change scale during up
    Source - - pixi/display/DisplayObjectContainer.js, line 410 + pixi/display/DisplayObjectContainer.js, line 412
    @@ -23704,7 +23421,7 @@ alphabetical sorting, mixing strings and numbers, and Unicode sorting. See MDN f
    Source - - core/Group.js, line 1846 + core/Group.js, line 1848
    @@ -24213,7 +23930,7 @@ alphabetical sorting, mixing strings and numbers, and Unicode sorting. See MDN f
    Source - - core/Group.js, line 1391 + core/Group.js, line 1393
    @@ -24361,7 +24078,7 @@ alphabetical sorting, mixing strings and numbers, and Unicode sorting. See MDN f
    Source - - core/Group.js, line 879 + core/Group.js, line 881
    @@ -24437,7 +24154,7 @@ alphabetical sorting, mixing strings and numbers, and Unicode sorting. See MDN f -PIXI.DisplayObject +DisplayObject @@ -24460,7 +24177,7 @@ alphabetical sorting, mixing strings and numbers, and Unicode sorting. See MDN f -PIXI.DisplayObject +DisplayObject @@ -24529,337 +24246,6 @@ alphabetical sorting, mixing strings and numbers, and Unicode sorting. See MDN f -
    - - - -
    -

    toGlobal(position) → {Point}

    - - -
    -
    - - - -
    -

    Calculates the global position of the display object

    -
    - - - - - - - -
    Parameters:
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    NameTypeDescription
    position - - -Point - - - -

    The world origin to calculate from

    - - - - -
    Returns:
    -
    - - - -
    - -Point - - - -
    - -
    -

    A point object representing the position of this object

    -
    - - - -
    - - - -
    - - - - - - - -
    Inherited From:
    -
    - - - - - - - - - - - - - -
    Source - - pixi/display/DisplayObject.js, line 575 -
    - - - - - - - -
    - - - - - - - - - - - -
    - - - -
    -

    toLocal(position, from) → {Point}

    - - -
    -
    - - - -
    -

    Calculates the local position of the display object relative to another point

    -
    - - - - - - - -
    Parameters:
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    NameTypeArgumentDescription
    position - - -Point - - - - - - - - - -

    The world origin to calculate from

    from - - -PIXI.DisplayObject - - - - - - <optional>
    - - - - - -

    The DisplayObject to calculate the global position from

    - - - - -
    Returns:
    -
    - - - -
    - -Point - - - -
    - -
    -

    A point object representing the position of this object

    -
    - - - -
    - - - -
    - - - - - - - -
    Inherited From:
    -
    - - - - - - - - - - - - - -
    Source - - pixi/display/DisplayObject.js, line 589 -
    - - - - - - - -
    - - - - - - - - - - -
    @@ -24930,81 +24316,6 @@ alphabetical sorting, mixing strings and numbers, and Unicode sorting. See MDN f - - - - -
    -

    updateCache()

    - - -
    -
    - - - -
    -

    Generates and updates the cached sprite for this object.

    -
    - - - - - - - - - - - -
    - - - - - - - -
    Inherited From:
    -
    - - - - - - - - - - - - - -
    Source - - pixi/display/DisplayObject.js, line 565 -
    - - - - - - - -
    - - - - - - - - - - -
    @@ -25237,7 +24548,7 @@ alphabetical sorting, mixing strings and numbers, and Unicode sorting. See MDN f
    Source - - core/Group.js, line 981 + core/Group.js, line 983
    @@ -25286,7 +24597,7 @@ alphabetical sorting, mixing strings and numbers, and Unicode sorting. See MDN f Documentation generated by JSDoc 3.3.3 - on Fri Jun 17 2016 12:45:35 GMT+0100 (BST) using the DocStrap template. + on Fri Jul 08 2016 15:42:40 GMT+0100 (GMT Daylight Time) using the DocStrap template. diff --git a/docs/Phaser.Particles.Arcade.html b/docs/Phaser.Particles.Arcade.html index 69c4086bf..27bb5ff89 100644 --- a/docs/Phaser.Particles.Arcade.html +++ b/docs/Phaser.Particles.Arcade.html @@ -708,10 +708,6 @@ ComplexPrimitiveShader -
  • - DisplayObject -
  • -
  • DisplayObjectContainer
  • @@ -744,6 +740,10 @@ PIXI +
  • + DisplayObject +
  • +
  • PixiFastShader
  • @@ -1360,7 +1360,7 @@ Documentation generated by JSDoc 3.3.3 - on Fri Jun 17 2016 12:45:35 GMT+0100 (BST) using the DocStrap template. + on Fri Jul 08 2016 15:42:40 GMT+0100 (GMT Daylight Time) using the DocStrap template. diff --git a/docs/Phaser.Particles.html b/docs/Phaser.Particles.html index 0af713bfd..32b04362d 100644 --- a/docs/Phaser.Particles.html +++ b/docs/Phaser.Particles.html @@ -708,10 +708,6 @@ ComplexPrimitiveShader -
  • - DisplayObject -
  • -
  • DisplayObjectContainer
  • @@ -744,6 +740,10 @@ PIXI +
  • + DisplayObject +
  • +
  • PixiFastShader
  • @@ -1920,7 +1920,7 @@ Documentation generated by JSDoc 3.3.3 - on Fri Jun 17 2016 12:45:35 GMT+0100 (BST) using the DocStrap template. + on Fri Jul 08 2016 15:42:40 GMT+0100 (GMT Daylight Time) using the DocStrap template. diff --git a/docs/Phaser.Physics.Arcade.Body.html b/docs/Phaser.Physics.Arcade.Body.html index d503017a1..29b7e5cc5 100644 --- a/docs/Phaser.Physics.Arcade.Body.html +++ b/docs/Phaser.Physics.Arcade.Body.html @@ -708,10 +708,6 @@ ComplexPrimitiveShader -
  • - DisplayObject -
  • -
  • DisplayObjectContainer
  • @@ -744,6 +740,10 @@ PIXI +
  • + DisplayObject +
  • +
  • PixiFastShader
  • @@ -1413,7 +1413,7 @@ the Sprite itself. For example you can set the velocity, acceleration, bounce va
    Source - - physics/arcade/Body.js, line 141 + physics/arcade/Body.js, line 160
    @@ -1472,7 +1472,7 @@ the Sprite itself. For example you can set the velocity, acceleration, bounce va
    Source - - physics/arcade/Body.js, line 152 + physics/arcade/Body.js, line 171
    @@ -1531,7 +1531,7 @@ the Sprite itself. For example you can set the velocity, acceleration, bounce va
    Source - - physics/arcade/Body.js, line 59 + physics/arcade/Body.js, line 78
    @@ -1587,7 +1587,7 @@ the Sprite itself. For example you can set the velocity, acceleration, bounce va
    Source - - physics/arcade/Body.js, line 217 + physics/arcade/Body.js, line 288
    @@ -1643,7 +1643,7 @@ the Sprite itself. For example you can set the velocity, acceleration, bounce va
    Source - - physics/arcade/Body.js, line 193 + physics/arcade/Body.js, line 264
    @@ -1699,7 +1699,7 @@ the Sprite itself. For example you can set the velocity, acceleration, bounce va
    Source - - physics/arcade/Body.js, line 199 + physics/arcade/Body.js, line 270
    @@ -1755,7 +1755,7 @@ the Sprite itself. For example you can set the velocity, acceleration, bounce va
    Source - - physics/arcade/Body.js, line 187 + physics/arcade/Body.js, line 258
    @@ -1812,7 +1812,7 @@ For example if blocked.up is true then the Body cannot move up. An object contai
    Source - - physics/arcade/Body.js, line 311 + physics/arcade/Body.js, line 388
    @@ -1868,7 +1868,7 @@ For example if blocked.up is true then the Body cannot move up. An object contai
    Source - - physics/arcade/Body.js, line 1165 + physics/arcade/Body.js, line 1368
    @@ -1924,7 +1924,7 @@ For example if blocked.up is true then the Body cannot move up. An object contai
    Source - - physics/arcade/Body.js, line 162 + physics/arcade/Body.js, line 181
    @@ -1980,7 +1980,7 @@ For example if blocked.up is true then the Body cannot move up. An object contai
    Source - - physics/arcade/Body.js, line 120 + physics/arcade/Body.js, line 139
    @@ -2037,7 +2037,7 @@ For example checkCollision.up = false means it won't collide when the collision
    Source - - physics/arcade/Body.js, line 291 + physics/arcade/Body.js, line 368
    @@ -2093,7 +2093,7 @@ For example checkCollision.up = false means it won't collide when the collision
    Source - - physics/arcade/Body.js, line 284 + physics/arcade/Body.js, line 361
    @@ -2150,7 +2150,7 @@ Used in combination with your own collision processHandler you can create whatev
    Source - - physics/arcade/Body.js, line 252 + physics/arcade/Body.js, line 323
    @@ -2207,7 +2207,7 @@ Used in combination with your own collision processHandler you can create whatev
    Source - - physics/arcade/Body.js, line 260 + physics/arcade/Body.js, line 331
    @@ -2263,7 +2263,7 @@ Used in combination with your own collision processHandler you can create whatev
    Source - - physics/arcade/Body.js, line 136 + physics/arcade/Body.js, line 155
    @@ -2319,7 +2319,7 @@ Used in combination with your own collision processHandler you can create whatev
    Source - - physics/arcade/Body.js, line 323 + physics/arcade/Body.js, line 400
    @@ -2375,7 +2375,7 @@ Used in combination with your own collision processHandler you can create whatev
    Source - - physics/arcade/Body.js, line 146 + physics/arcade/Body.js, line 165
    @@ -2431,7 +2431,7 @@ Used in combination with your own collision processHandler you can create whatev
    Source - - physics/arcade/Body.js, line 278 + physics/arcade/Body.js, line 355
    @@ -2546,7 +2546,7 @@ Used in combination with your own collision processHandler you can create whatev
    Source - - physics/arcade/Body.js, line 229 + physics/arcade/Body.js, line 300
    @@ -2602,7 +2602,7 @@ Used in combination with your own collision processHandler you can create whatev
    Source - - physics/arcade/Body.js, line 181 + physics/arcade/Body.js, line 252
    @@ -2714,7 +2714,7 @@ Used in combination with your own collision processHandler you can create whatev
    Source - - physics/arcade/Body.js, line 157 + physics/arcade/Body.js, line 176
    @@ -2770,7 +2770,7 @@ Used in combination with your own collision processHandler you can create whatev
    Source - - physics/arcade/Body.js, line 114 + physics/arcade/Body.js, line 133
    @@ -2826,7 +2826,7 @@ Used in combination with your own collision processHandler you can create whatev
    Source - - physics/arcade/Body.js, line 108 + physics/arcade/Body.js, line 127
    @@ -2882,7 +2882,7 @@ Used in combination with your own collision processHandler you can create whatev
    Source - - physics/arcade/Body.js, line 84 + physics/arcade/Body.js, line 103
    @@ -2938,7 +2938,64 @@ Used in combination with your own collision processHandler you can create whatev
    Source - - physics/arcade/Body.js, line 235 + physics/arcade/Body.js, line 306 +
    + + + + + + + + + + + + + + + +
    +

    <readonly> isCircle :boolean

    + + +
    +
    + + + +
    +

    If true this Body is using circular collision detection. If false it is using rectangular. +Use Body.setCircle to control the collision shape this Body uses.

    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + +
    Source - + physics/arcade/Body.js, line 45
    @@ -2994,7 +3051,7 @@ Used in combination with your own collision processHandler you can create whatev
    Source - - physics/arcade/Body.js, line 343 + physics/arcade/Body.js, line 420
    @@ -3050,7 +3107,7 @@ Used in combination with your own collision processHandler you can create whatev
    Source - - physics/arcade/Body.js, line 1122 + physics/arcade/Body.js, line 1325
    @@ -3109,7 +3166,7 @@ Used in combination with your own collision processHandler you can create whatev
    Source - - physics/arcade/Body.js, line 211 + physics/arcade/Body.js, line 282
    @@ -3168,7 +3225,7 @@ Used in combination with your own collision processHandler you can create whatev
    Source - - physics/arcade/Body.js, line 205 + physics/arcade/Body.js, line 276
    @@ -3224,7 +3281,7 @@ Used in combination with your own collision processHandler you can create whatev
    Source - - physics/arcade/Body.js, line 176 + physics/arcade/Body.js, line 247
    @@ -3280,7 +3337,7 @@ Used in combination with your own collision processHandler you can create whatev
    Source - - physics/arcade/Body.js, line 388 + physics/arcade/Body.js, line 465
    @@ -3336,7 +3393,7 @@ Used in combination with your own collision processHandler you can create whatev
    Source - - physics/arcade/Body.js, line 393 + physics/arcade/Body.js, line 470
    @@ -3397,7 +3454,7 @@ If you want the physics system to move the body around, then set moves to true.
    Source - - physics/arcade/Body.js, line 244 + physics/arcade/Body.js, line 315
    @@ -3453,7 +3510,7 @@ If you want the physics system to move the body around, then set moves to true.
    Source - - physics/arcade/Body.js, line 131 + physics/arcade/Body.js, line 150
    @@ -3509,7 +3566,72 @@ If you want the physics system to move the body around, then set moves to true.
    Source - - physics/arcade/Body.js, line 41 + physics/arcade/Body.js, line 60 +
    + + + + + + + +
    + + + +
    + + + +
    +

    onCollide :Phaser.Signal

    + + +
    +
    + + + +
    +

    A Signal that is dispatched when this Body collides with another Body.

    +

    You still need to call game.physics.arcade.collide in your update method in order +for this signal to be dispatched.

    +

    Usually you'd pass a callback to the collide method, but this signal provides for +a different level of notification.

    +

    Due to the potentially high volume of signals this could create it is disabled by default.

    +

    To use this feature set this property to a Phaser.Signal: sprite.body.onCollide = new Phaser.Signal() +and it will be called when a collision happens, passing two arguments: the sprites which collided. +The first sprite in the argument is always the owner of this Body.

    +

    If two Bodies with this Signal set collide, both will dispatch the Signal.

    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + +
    Source - + physics/arcade/Body.js, line 221
    @@ -3565,7 +3687,190 @@ If you want the physics system to move the body around, then set moves to true.
    Source - - physics/arcade/Body.js, line 383 + physics/arcade/Body.js, line 460 +
    + + + + + + + +
    + + + +
    + + + +
    +

    onOverlap :Phaser.Signal

    + + +
    +
    + + + +
    +

    A Signal that is dispatched when this Body overlaps with another Body.

    +

    You still need to call game.physics.arcade.overlap in your update method in order +for this signal to be dispatched.

    +

    Usually you'd pass a callback to the overlap method, but this signal provides for +a different level of notification.

    +

    Due to the potentially high volume of signals this could create it is disabled by default.

    +

    To use this feature set this property to a Phaser.Signal: sprite.body.onOverlap = new Phaser.Signal() +and it will be called when a collision happens, passing two arguments: the sprites which collided. +The first sprite in the argument is always the owner of this Body.

    +

    If two Bodies with this Signal set collide, both will dispatch the Signal.

    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + +
    Source - + physics/arcade/Body.js, line 241 +
    + + + + + + + +
    + + + +
    + + + +
    +

    onWorldBounds :Phaser.Signal

    + + +
    +
    + + + +
    +

    A Signal that is dispatched when this Body collides with the world bounds. +Due to the potentially high volume of signals this could create it is disabled by default. +To use this feature set this property to a Phaser.Signal: sprite.body.onWorldBounds = new Phaser.Signal() +and it will be called when a collision happens, passing five arguments: +onWorldBounds(sprite, up, down, left, right) +where the Sprite is a reference to the Sprite that owns this Body, and the other arguments are booleans +indicating on which side of the world the Body collided.

    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + +
    Source - + physics/arcade/Body.js, line 201 +
    + + + + + + + +
    + + + +
    + + + +
    +

    overlapR :number

    + + +
    +
    + + + +
    +

    If Body.isCircle is true, and this body collides with another circular body, the amount of overlap is stored here. The amount of overlap during the collision.

    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + +
    Source - + physics/arcade/Body.js, line 349
    @@ -3621,7 +3926,7 @@ If you want the physics system to move the body around, then set moves to true.
    Source - - physics/arcade/Body.js, line 266 + physics/arcade/Body.js, line 337
    @@ -3677,7 +3982,7 @@ If you want the physics system to move the body around, then set moves to true.
    Source - - physics/arcade/Body.js, line 272 + physics/arcade/Body.js, line 343
    @@ -3733,7 +4038,7 @@ If you want the physics system to move the body around, then set moves to true.
    Source - - physics/arcade/Body.js, line 47 + physics/arcade/Body.js, line 66
    @@ -3789,7 +4094,7 @@ If you want the physics system to move the body around, then set moves to true.
    Source - - physics/arcade/Body.js, line 72 + physics/arcade/Body.js, line 91
    @@ -3845,7 +4150,65 @@ If you want the physics system to move the body around, then set moves to true.
    Source - - physics/arcade/Body.js, line 53 + physics/arcade/Body.js, line 72 +
    + + + + + + + +
    + + + +
    + + + +
    +

    <readonly> radius :number

    + + +
    +
    + + + +
    +

    The radius of the circular collision shape this Body is using if Body.setCircle has been enabled. +If you wish to change the radius then call setCircle again with the new value. +If you wish to stop the Body using a circle then call setCircle with a radius of zero (or undefined).

    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + +
    Source - + physics/arcade/Body.js, line 55
    @@ -3901,7 +4264,7 @@ If you want the physics system to move the body around, then set moves to true.
    Source - - physics/arcade/Body.js, line 1136 + physics/arcade/Body.js, line 1339
    @@ -3958,7 +4321,7 @@ itself never rotates, it is always axis-aligned. However these values are passed
    Source - - physics/arcade/Body.js, line 66 + physics/arcade/Body.js, line 85
    @@ -4014,7 +4377,7 @@ itself never rotates, it is always axis-aligned. However these values are passed
    Source - - physics/arcade/Body.js, line 328 + physics/arcade/Body.js, line 405
    @@ -4070,7 +4433,7 @@ itself never rotates, it is always axis-aligned. However these values are passed
    Source - - physics/arcade/Body.js, line 96 + physics/arcade/Body.js, line 115
    @@ -4126,7 +4489,7 @@ itself never rotates, it is always axis-aligned. However these values are passed
    Source - - physics/arcade/Body.js, line 90 + physics/arcade/Body.js, line 109
    @@ -4182,7 +4545,7 @@ itself never rotates, it is always axis-aligned. However these values are passed
    Source - - physics/arcade/Body.js, line 223 + physics/arcade/Body.js, line 294
    @@ -4294,7 +4657,7 @@ itself never rotates, it is always axis-aligned. However these values are passed
    Source - - physics/arcade/Body.js, line 348 + physics/arcade/Body.js, line 425
    @@ -4353,7 +4716,7 @@ or in any situation where the Sprite scale doesn't change, but its parents scale
    Source - - physics/arcade/Body.js, line 338 + physics/arcade/Body.js, line 415
    @@ -4410,7 +4773,7 @@ Set this padding value to add extra padding to its bounds. tilePadding.x applied
    Source - - physics/arcade/Body.js, line 318 + physics/arcade/Body.js, line 395
    @@ -4466,7 +4829,7 @@ Set this padding value to add extra padding to its bounds. tilePadding.x applied
    Source - - physics/arcade/Body.js, line 1151 + physics/arcade/Body.js, line 1354
    @@ -4523,7 +4886,7 @@ touching.up = true means the collision happened to the top of this Body for exam
    Source - - physics/arcade/Body.js, line 298 + physics/arcade/Body.js, line 375
    @@ -4635,7 +4998,7 @@ touching.up = true means the collision happened to the top of this Body for exam
    Source - - physics/arcade/Body.js, line 125 + physics/arcade/Body.js, line 144
    @@ -4691,7 +5054,7 @@ touching.up = true means the collision happened to the top of this Body for exam
    Source - - physics/arcade/Body.js, line 304 + physics/arcade/Body.js, line 381
    @@ -4747,7 +5110,7 @@ touching.up = true means the collision happened to the top of this Body for exam
    Source - - physics/arcade/Body.js, line 78 + physics/arcade/Body.js, line 97
    @@ -4805,7 +5168,7 @@ to a Phaser.Point object in order to enable a World bounds specific bounce value
    Source - - physics/arcade/Body.js, line 170 + physics/arcade/Body.js, line 189
    @@ -4861,7 +5224,7 @@ to a Phaser.Point object in order to enable a World bounds specific bounce value
    Source - - physics/arcade/Body.js, line 1180 + physics/arcade/Body.js, line 1383
    @@ -4917,7 +5280,7 @@ to a Phaser.Point object in order to enable a World bounds specific bounce value
    Source - - physics/arcade/Body.js, line 1199 + physics/arcade/Body.js, line 1402
    @@ -4942,7 +5305,7 @@ to a Phaser.Point object in order to enable a World bounds specific bounce value

    <internal> checkWorldBounds()

    + id="checkWorldBounds"><internal> checkWorldBounds() → {boolean}
    @@ -4962,6 +5325,26 @@ to a Phaser.Point object in order to enable a World bounds specific bounce value +
    Returns:
    +
    + + + +
    + +boolean + + - +
    + +
    +

    True if the Body collided with the world bounds, otherwise false.

    +
    + + + +
    +
    @@ -4992,7 +5375,7 @@ to a Phaser.Point object in order to enable a World bounds specific bounce value
    Source - - physics/arcade/Body.js, line 713 + physics/arcade/Body.js, line 793
    @@ -5082,7 +5465,7 @@ to a Phaser.Point object in order to enable a World bounds specific bounce value
    Source - - physics/arcade/Body.js, line 1040 + physics/arcade/Body.js, line 1243
    @@ -5172,7 +5555,7 @@ to a Phaser.Point object in order to enable a World bounds specific bounce value
    Source - - physics/arcade/Body.js, line 1052 + physics/arcade/Body.js, line 1255
    @@ -5262,7 +5645,7 @@ to a Phaser.Point object in order to enable a World bounds specific bounce value
    Source - - physics/arcade/Body.js, line 1064 + physics/arcade/Body.js, line 1267
    @@ -5352,7 +5735,7 @@ to a Phaser.Point object in order to enable a World bounds specific bounce value
    Source - - physics/arcade/Body.js, line 1076 + physics/arcade/Body.js, line 1279
    @@ -5442,7 +5825,7 @@ to a Phaser.Point object in order to enable a World bounds specific bounce value
    Source - - physics/arcade/Body.js, line 1088 + physics/arcade/Body.js, line 1291
    @@ -5514,7 +5897,147 @@ Then it nulls the Game Objects body reference, and nulls this Body.sprite refere
    Source - - physics/arcade/Body.js, line 1100 + physics/arcade/Body.js, line 1303 +
    + + + + + + + +
    + + + + + + + + + + + +
    + + + +
    +

    getBounds(obj) → {object}

    + + +
    +
    + + + +
    +

    Returns the bounds of this physics body.

    +

    Only used internally by the World collision methods.

    +
    + + + + + + + +
    Parameters:
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeDescription
    obj + + +object + + + +

    The object in which to set the bounds values.

    + + + + +
    Returns:
    +
    + + + +
    + +object + + - +
    + +
    +

    The object that was given to this method.

    +
    + + + +
    + + + +
    + + + + + + + + + + + + + + + + + + + +
    Source - + physics/arcade/Body.js, line 1163
    @@ -5676,7 +6199,7 @@ Then it nulls the Game Objects body reference, and nulls this Body.sprite refere
    Source - - physics/arcade/Body.js, line 990 + physics/arcade/Body.js, line 1193
    @@ -5906,7 +6429,7 @@ movement.

    Source - - physics/arcade/Body.js, line 756 + physics/arcade/Body.js, line 877
    @@ -6133,7 +6656,7 @@ movement.

    Source - - physics/arcade/Body.js, line 830 + physics/arcade/Body.js, line 951
    @@ -6223,7 +6746,7 @@ movement.

    Source - - physics/arcade/Body.js, line 1004 + physics/arcade/Body.js, line 1207
    @@ -6313,7 +6836,7 @@ movement.

    Source - - physics/arcade/Body.js, line 1016 + physics/arcade/Body.js, line 1219
    @@ -6403,7 +6926,7 @@ movement.

    Source - - physics/arcade/Body.js, line 1028 + physics/arcade/Body.js, line 1231
    @@ -6480,7 +7003,7 @@ movement.

    Source - - physics/arcade/Body.js, line 627 + physics/arcade/Body.js, line 707
    @@ -6557,7 +7080,7 @@ movement.

    Source - - physics/arcade/Body.js, line 473 + physics/arcade/Body.js, line 550
    @@ -6805,7 +7328,7 @@ movement.

    Source - - physics/arcade/Body.js, line 1219 + physics/arcade/Body.js, line 1422
    @@ -7049,7 +7572,7 @@ movement.

    Source - - physics/arcade/Body.js, line 1247 + physics/arcade/Body.js, line 1468
    @@ -7191,7 +7714,209 @@ movement.

    Source - - physics/arcade/Body.js, line 955 + physics/arcade/Body.js, line 1128 +
    + + + + + + + +
    + + + + + + + + + + + +
    + + + +
    +

    setCircle(radius, offsetX, offsetY)

    + + +
    +
    + + + +
    +

    Sets this Body as using a circle, of the given radius, for all collision detection instead of a rectangle. +The radius is given in pixels and is the distance from the center of the circle to the edge.

    +

    You can also control the x and y offset, which is the position of the Body relative to the top-left of the Sprite.

    +

    To change a Body back to being rectangular again call Body.setSize.

    +

    Note: Circular collision only happens with other Arcade Physics bodies, it does not +work against tile maps, where rectangular collision is the only method supported.

    +
    + + + + + + + +
    Parameters:
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeArgumentDescription
    radius + + +number + + + + + + <optional>
    + + + + + +

    The radius of the Body in pixels. Pass a value of zero / undefined, to stop the Body using a circle for collision.

    offsetX + + +number + + + + + + <optional>
    + + + + + +

    The X offset of the Body from the Sprite position.

    offsetY + + +number + + + + + + <optional>
    + + + + + +

    The Y offset of the Body from the Sprite position.

    + + + + + + +
    + + + + + + + + + + + + + + + + + + + +
    Source - + physics/arcade/Body.js, line 1082
    @@ -7237,6 +7962,8 @@ and you want the physics body to be 32x32 pixels in the middle of the texture, y

    Where the first two parameters is the new Body size (32x32 pixels). 24 is the horizontal offset of the Body from the top-left of the Sprites texture, and 34 is the vertical offset.

    +

    Calling setSize on a Body that has already had setCircle will reset all of the Circle +properties, making this Body rectangular again.

    @@ -7426,7 +8153,7 @@ is the vertical offset.

    Source - - physics/arcade/Body.js, line 917 + physics/arcade/Body.js, line 1038
    @@ -7560,7 +8287,7 @@ either the duration or distance counters expire.

    Source - - physics/arcade/Body.js, line 599 + physics/arcade/Body.js, line 679
    @@ -7637,7 +8364,7 @@ either the duration or distance counters expire.

    Source - - physics/arcade/Body.js, line 429 + physics/arcade/Body.js, line 506
    @@ -7714,7 +8441,7 @@ either the duration or distance counters expire.

    Source - - physics/arcade/Body.js, line 558 + physics/arcade/Body.js, line 638
    @@ -7763,7 +8490,7 @@ either the duration or distance counters expire.

    Documentation generated by JSDoc 3.3.3 - on Fri Jun 17 2016 12:45:35 GMT+0100 (BST) using the DocStrap template. + on Fri Jul 08 2016 15:42:40 GMT+0100 (GMT Daylight Time) using the DocStrap template. diff --git a/docs/Phaser.Physics.Arcade.TilemapCollision.html b/docs/Phaser.Physics.Arcade.TilemapCollision.html index f0b58d20f..c7d6cc654 100644 --- a/docs/Phaser.Physics.Arcade.TilemapCollision.html +++ b/docs/Phaser.Physics.Arcade.TilemapCollision.html @@ -708,10 +708,6 @@ ComplexPrimitiveShader -
  • - DisplayObject -
  • -
  • DisplayObjectContainer
  • @@ -744,6 +740,10 @@ PIXI +
  • + DisplayObject +
  • +
  • PixiFastShader
  • @@ -1406,7 +1406,7 @@ Documentation generated by JSDoc 3.3.3 - on Fri Jun 17 2016 12:45:35 GMT+0100 (BST) using the DocStrap template. + on Fri Jul 08 2016 15:42:40 GMT+0100 (GMT Daylight Time) using the DocStrap template. diff --git a/docs/Phaser.Physics.Arcade.html b/docs/Phaser.Physics.Arcade.html index 88af4cee5..ea38f64ff 100644 --- a/docs/Phaser.Physics.Arcade.html +++ b/docs/Phaser.Physics.Arcade.html @@ -708,10 +708,6 @@ ComplexPrimitiveShader -
  • - DisplayObject -
  • -
  • DisplayObjectContainer
  • @@ -744,6 +740,10 @@ PIXI +
  • + DisplayObject +
  • +
  • PixiFastShader
  • @@ -2644,7 +2644,7 @@ Note: The display object doesn't stop moving once it reaches the destination coo
    Source - - physics/arcade/World.js, line 1517 + physics/arcade/World.js, line 1821
    @@ -2956,7 +2956,7 @@ Note: The display object doesn't stop moving once it reaches the destination coo
    Source - - physics/arcade/World.js, line 1546 + physics/arcade/World.js, line 1850
    @@ -3301,7 +3301,7 @@ Note: The display object doesn't stop moving once it reaches the destination coo
    Source - - physics/arcade/World.js, line 1576 + physics/arcade/World.js, line 1880
    @@ -3538,7 +3538,7 @@ One way to use this is: accelerationFromRotation(rotation, 200, sprite.accelerat
    Source - - physics/arcade/World.js, line 1498 + physics/arcade/World.js, line 1802
    @@ -3770,7 +3770,169 @@ or parent Game Object.

    Source - - physics/arcade/World.js, line 1684 + physics/arcade/World.js, line 1988 +
    + + + + + + + +
    + + + + + + + + + + + +
    + + + +
    +

    angleBetweenCenters(source, target) → {number}

    + + +
    +
    + + + +
    +

    Find the angle in radians between centers of two display objects (like Sprites).

    +
    + + + + + + + +
    Parameters:
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeDescription
    source + + +any + + + +

    The Display Object to test from.

    target + + +any + + + +

    The Display Object to test to.

    + + + + +
    Returns:
    +
    + + + +
    + +number + + - +
    + +
    +

    The angle in radians between the source and target display objects.

    +
    + + + +
    + + + +
    + + + + + + + + + + + + + + + + + + + +
    Source - + physics/arcade/World.js, line 2016
    @@ -4004,7 +4166,7 @@ or parent Game Object.

    Source - - physics/arcade/World.js, line 1741 + physics/arcade/World.js, line 2062
    @@ -4271,7 +4433,169 @@ or parent Game Object.

    Source - - physics/arcade/World.js, line 1712 + physics/arcade/World.js, line 2033 +
    + + + + + + + +
    + + + + + + + + + + + +
    + + + +
    +

    circleBodyIntersects(circle, body) → {boolean}

    + + +
    +
    + + + +
    +

    Checks to see if a circular Body intersects with a Rectangular Body.

    +
    + + + + + + + +
    Parameters:
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeDescription
    circle + + +Phaser.Physics.Arcade.Body + + + +

    The Body with isCircle set.

    body + + +Phaser.Physics.Arcade.Body + + + +

    The Body with isCircle not set (i.e. uses Rectangle shape)

    + + + + +
    Returns:
    +
    + + + +
    + +boolean + + - +
    + +
    +

    Returns true if the bodies intersect, otherwise false.

    +
    + + + +
    + + + +
    + + + + + + + + + + + + + + + + + + + +
    Source - + physics/arcade/World.js, line 1120
    @@ -5174,7 +5498,7 @@ or parent Game Object.

    Source - - physics/arcade/World.js, line 1606 + physics/arcade/World.js, line 1910
    @@ -5410,7 +5734,7 @@ or parent Game Object.

    Source - - physics/arcade/World.js, line 1657 + physics/arcade/World.js, line 1961
    @@ -5679,7 +6003,7 @@ or parent Game Object.

    Source - - physics/arcade/World.js, line 1630 + physics/arcade/World.js, line 1934
    @@ -6008,7 +6332,7 @@ A game object can only have 1 physics body active at any one time, and it can't

    getObjectsAtLocation(x, y, group, callback, callbackContext, callbackArg) → {Array.<PIXI.DisplayObject>}

    + id="getObjectsAtLocation">getObjectsAtLocation(x, y, group, callback, callbackContext, callbackArg) → {Array.<PIXI.DisplayObject>}
    @@ -6257,7 +6581,7 @@ Note that the children are not checked for depth order, but simply if they overl
    -Array.<PIXI.DisplayObject> +Array.<PIXI.DisplayObject> -
    @@ -6293,7 +6617,7 @@ Note that the children are not checked for depth order, but simply if they overl
    Source - - physics/arcade/World.js, line 1310 + physics/arcade/World.js, line 1614
    @@ -6320,7 +6644,7 @@ Note that the children are not checked for depth order, but simply if they overl

    getObjectsUnderPointer(pointer, group, callback, callbackContext) → {Array.<PIXI.DisplayObject>}

    + id="getObjectsUnderPointer">getObjectsUnderPointer(pointer, group, callback, callbackContext) → {Array.<PIXI.DisplayObject>}
    @@ -6505,7 +6829,7 @@ Note that the children are not checked for depth order, but simply if they overl
    -Array.<PIXI.DisplayObject> +Array.<PIXI.DisplayObject> -
    @@ -6541,7 +6865,7 @@ Note that the children are not checked for depth order, but simply if they overl
    Source - - physics/arcade/World.js, line 1287 + physics/arcade/World.js, line 1591
    @@ -6727,7 +7051,7 @@ Note that the children are not checked for depth order, but simply if they overl
    Source - - physics/arcade/World.js, line 1019 + physics/arcade/World.js, line 1323
    @@ -6913,7 +7237,7 @@ Note that the children are not checked for depth order, but simply if they overl
    Source - - physics/arcade/World.js, line 1083 + physics/arcade/World.js, line 1387
    @@ -7075,7 +7399,7 @@ Note that the children are not checked for depth order, but simply if they overl
    Source - - physics/arcade/World.js, line 979 + physics/arcade/World.js, line 1056
    @@ -7348,7 +7672,7 @@ Note: Doesn't take into account acceleration, maxVelocity or drag (if you've set
    Source - - physics/arcade/World.js, line 1354 + physics/arcade/World.js, line 1658
    @@ -7622,7 +7946,7 @@ Note: The display object doesn't stop moving once it reaches the destination coo
    Source - - physics/arcade/World.js, line 1389 + physics/arcade/World.js, line 1693
    @@ -7930,7 +8254,7 @@ Note: Doesn't take into account acceleration, maxVelocity or drag (if you've set
    Source - - physics/arcade/World.js, line 1424 + physics/arcade/World.js, line 1728
    @@ -9689,7 +10013,7 @@ One way to use this is: velocityFromAngle(angle, 200, sprite.velocity) which wil
    Source - - physics/arcade/World.js, line 1460 + physics/arcade/World.js, line 1764
    @@ -9926,7 +10250,7 @@ One way to use this is: velocityFromRotation(rotation, 200, sprite.velocity) whi
    Source - - physics/arcade/World.js, line 1479 + physics/arcade/World.js, line 1783
    @@ -10109,7 +10433,7 @@ taking their x/y and center into account relative to the world.

    Source - - physics/arcade/World.js, line 1770 + physics/arcade/World.js, line 2091
    @@ -10158,7 +10482,7 @@ taking their x/y and center into account relative to the world.

    Documentation generated by JSDoc 3.3.3 - on Fri Jun 17 2016 12:45:35 GMT+0100 (BST) using the DocStrap template. + on Fri Jul 08 2016 15:42:40 GMT+0100 (GMT Daylight Time) using the DocStrap template. diff --git a/docs/Phaser.Physics.Ninja.AABB.html b/docs/Phaser.Physics.Ninja.AABB.html index ef7c20dc4..63502a225 100644 --- a/docs/Phaser.Physics.Ninja.AABB.html +++ b/docs/Phaser.Physics.Ninja.AABB.html @@ -708,10 +708,6 @@ ComplexPrimitiveShader -
  • - DisplayObject -
  • -
  • DisplayObjectContainer
  • @@ -744,6 +740,10 @@ PIXI +
  • + DisplayObject +
  • +
  • PixiFastShader
  • @@ -5544,7 +5544,7 @@ Note: This class could be massively optimised and reduced in size. I leave that Documentation generated by JSDoc 3.3.3 - on Fri Jun 17 2016 12:45:35 GMT+0100 (BST) using the DocStrap template. + on Fri Jul 08 2016 15:42:41 GMT+0100 (GMT Daylight Time) using the DocStrap template. diff --git a/docs/Phaser.Physics.Ninja.Body.html b/docs/Phaser.Physics.Ninja.Body.html index 94c3d52f6..67c678579 100644 --- a/docs/Phaser.Physics.Ninja.Body.html +++ b/docs/Phaser.Physics.Ninja.Body.html @@ -708,10 +708,6 @@ ComplexPrimitiveShader -
  • - DisplayObject -
  • -
  • DisplayObjectContainer
  • @@ -744,6 +740,10 @@ PIXI +
  • + DisplayObject +
  • +
  • PixiFastShader
  • @@ -4285,7 +4285,7 @@ touching.up = true means the collision happened to the top of this Body for exam Documentation generated by JSDoc 3.3.3 - on Fri Jun 17 2016 12:45:36 GMT+0100 (BST) using the DocStrap template. + on Fri Jul 08 2016 15:42:41 GMT+0100 (GMT Daylight Time) using the DocStrap template. diff --git a/docs/Phaser.Physics.Ninja.Circle.html b/docs/Phaser.Physics.Ninja.Circle.html index 65e72986a..82d132feb 100644 --- a/docs/Phaser.Physics.Ninja.Circle.html +++ b/docs/Phaser.Physics.Ninja.Circle.html @@ -708,10 +708,6 @@ ComplexPrimitiveShader -
  • - DisplayObject -
  • -
  • DisplayObjectContainer
  • @@ -744,6 +740,10 @@ PIXI +
  • + DisplayObject +
  • +
  • PixiFastShader
  • @@ -5496,7 +5496,7 @@ Note: This class could be massively optimised and reduced in size. I leave that Documentation generated by JSDoc 3.3.3 - on Fri Jun 17 2016 12:45:36 GMT+0100 (BST) using the DocStrap template. + on Fri Jul 08 2016 15:42:41 GMT+0100 (GMT Daylight Time) using the DocStrap template. diff --git a/docs/Phaser.Physics.Ninja.Tile.html b/docs/Phaser.Physics.Ninja.Tile.html index 58a52f4e6..64c466e3b 100644 --- a/docs/Phaser.Physics.Ninja.Tile.html +++ b/docs/Phaser.Physics.Ninja.Tile.html @@ -708,10 +708,6 @@ ComplexPrimitiveShader -
  • - DisplayObject -
  • -
  • DisplayObjectContainer
  • @@ -744,6 +740,10 @@ PIXI +
  • + DisplayObject +
  • +
  • PixiFastShader
  • @@ -3148,7 +3148,7 @@ Also note that as Tiles are primarily used for levels they have gravity disabled Documentation generated by JSDoc 3.3.3 - on Fri Jun 17 2016 12:45:36 GMT+0100 (BST) using the DocStrap template. + on Fri Jul 08 2016 15:42:41 GMT+0100 (GMT Daylight Time) using the DocStrap template. diff --git a/docs/Phaser.Physics.Ninja.html b/docs/Phaser.Physics.Ninja.html index 79dc8752f..3678fdbfb 100644 --- a/docs/Phaser.Physics.Ninja.html +++ b/docs/Phaser.Physics.Ninja.html @@ -708,10 +708,6 @@ ComplexPrimitiveShader -
  • - DisplayObject -
  • -
  • DisplayObjectContainer
  • @@ -744,6 +740,10 @@ PIXI +
  • + DisplayObject +
  • +
  • PixiFastShader
  • @@ -4325,7 +4325,7 @@ The second parameter can be an array of objects, of differing types.

    Documentation generated by JSDoc 3.3.3 - on Fri Jun 17 2016 12:45:35 GMT+0100 (BST) using the DocStrap template. + on Fri Jul 08 2016 15:42:41 GMT+0100 (GMT Daylight Time) using the DocStrap template. diff --git a/docs/Phaser.Physics.P2.Body.html b/docs/Phaser.Physics.P2.Body.html index 668f99ad6..934d9809a 100644 --- a/docs/Phaser.Physics.P2.Body.html +++ b/docs/Phaser.Physics.P2.Body.html @@ -708,10 +708,6 @@ ComplexPrimitiveShader -
  • - DisplayObject -
  • -
  • DisplayObjectContainer
  • @@ -744,6 +740,10 @@ PIXI +
  • + DisplayObject +
  • +
  • PixiFastShader
  • @@ -12485,7 +12485,7 @@ The speed is represented in pixels per second. So a value of 100 would move 100 Documentation generated by JSDoc 3.3.3 - on Fri Jun 17 2016 12:45:36 GMT+0100 (BST) using the DocStrap template. + on Fri Jul 08 2016 15:42:41 GMT+0100 (GMT Daylight Time) using the DocStrap template. diff --git a/docs/Phaser.Physics.P2.BodyDebug.html b/docs/Phaser.Physics.P2.BodyDebug.html index acdaccf12..950a023f5 100644 --- a/docs/Phaser.Physics.P2.BodyDebug.html +++ b/docs/Phaser.Physics.P2.BodyDebug.html @@ -708,10 +708,6 @@ ComplexPrimitiveShader -
  • - DisplayObject -
  • -
  • DisplayObjectContainer
  • @@ -744,6 +740,10 @@ PIXI +
  • + DisplayObject +
  • +
  • PixiFastShader
  • @@ -1538,7 +1538,7 @@ need to manually adjust its BodyDebug as well.

    Source - - core/Group.js, line 2646 + core/Group.js, line 2945
    @@ -1602,7 +1602,7 @@ and on-screen orientation and position.

    Source - - core/Group.js, line 2578 + core/Group.js, line 2594
    @@ -1677,7 +1677,7 @@ and on-screen orientation and position.

    cacheAsBitmap :Boolean

    + id="bottom">bottom :number
    @@ -1686,9 +1686,13 @@ and on-screen orientation and position.

    -

    Set if this display object is cached as a bitmap. -This basically takes a snap shot of the display object as it is at that moment. It can provide a performance benefit for complex static displayObjects. -To remove simply set this property to 'null'

    +

    The bottom coordinate of this Group.

    +

    It is derived by calling getBounds, calculating the Groups dimensions based on its +visible children.

    +

    Note that no ancestors are factored into the result, meaning that if this Group is +nested within another Group, with heavy transforms on it, the result of this property +is likely to be incorrect. It is safe to get and set this property if the Group is a +top-level descendant of Phaser.World, or untransformed parents.

    @@ -1705,7 +1709,7 @@ To remove simply set this property to 'null'

    Inherited From:
    @@ -1721,7 +1725,7 @@ To remove simply set this property to 'null'

    Source - - pixi/display/DisplayObject.js, line 355 + core/Group.js, line 2782
    @@ -1848,6 +1852,140 @@ If the parent of this Group is also fixedToCamera then the offset h +
    + + + +
    + + + +
    +

    centerX :number

    + + +
    +
    + + + +
    +

    The center x coordinate of this Group.

    +

    It is derived by calling getBounds, calculating the Groups dimensions based on its +visible children.

    +

    Note that no ancestors are factored into the result, meaning that if this Group is +nested within another Group, with heavy transforms on it, the result of this property +is likely to be incorrect. It is safe to get and set this property if the Group is a +top-level descendant of Phaser.World, or untransformed parents.

    +
    + + + + + +
    + + + + + + + +
    Inherited From:
    +
    + + + + + + + + + + + + + +
    Source - + core/Group.js, line 2617 +
    + + + + + + + +
    + + + +
    + + + +
    +

    centerY :number

    + + +
    +
    + + + +
    +

    The center y coordinate of this Group.

    +

    It is derived by calling getBounds, calculating the Groups dimensions based on its +visible children.

    +

    Note that no ancestors are factored into the result, meaning that if this Group is +nested within another Group, with heavy transforms on it, the result of this property +is likely to be incorrect. It is safe to get and set this property if the Group is a +top-level descendant of Phaser.World, or untransformed parents.

    +
    + + + + + +
    + + + + + + + +
    Inherited From:
    +
    + + + + + + + + + + + + + +
    Source - + core/Group.js, line 2650 +
    + + + + + + +
    @@ -2297,143 +2435,6 @@ when a new object is created it is passed the following parameters to its constr - - - - -
    - - - -
    -

    filterArea :Rectangle

    - - -
    -
    - - - -
    -

    The area the filter is applied to like the hitArea this is used as more of an optimisation -rather than figuring out the dimensions of the displayObject each frame you can set this rectangle

    -
    - - - - - -
    - - - - - - - -
    Inherited From:
    -
    - - - - - - - - - - - - - -
    Source - - pixi/display/DisplayObject.js, line 164 -
    - - - - - - - -
    - - - -
    - - - -
    -

    filters :Array.<Filter>

    - - -
    -
    - - - -
    -

    Sets the filters for the displayObject. -IMPORTANT: This is a webGL only feature and will be ignored by the Canvas renderer.

    -

    To remove filters simply set this property to 'null'.

    -

    You cannot have a filter and a multiply blend mode active at the same time. Setting a filter will reset -this objects blend mode to NORMAL.

    -
    - - - -
    Type:
    -
      -
    • - -Array.<Filter> - - -
    • -
    - - - -
    - - - - - - - -
    Inherited From:
    -
    - - - - - - - - - - - - - -
    Source - - pixi/display/DisplayObject.js, line 307 -
    - - - - - - -
    @@ -2691,87 +2692,6 @@ sorting and filtering of Group children without touching their z-index (and ther - - - - -
    - - - -
    -

    hitArea :Rectangle|Circle|Ellipse|Polygon

    - - -
    -
    - - - -
    -

    This is the defined area that will pick up mouse / touch events. It is null by default. -Setting it is a neat way of optimising the hitTest function that the interactionManager will use (as it will not need to hit test all the children)

    -
    - - - -
    Type:
    -
      -
    • - -Rectangle -| - -Circle -| - -Ellipse -| - -Polygon - - -
    • -
    - - - -
    - - - - - - - -
    Inherited From:
    -
    - - - - - - - - - - - - - -
    Source - - pixi/display/DisplayObject.js, line 62 -
    - - - - - - -
    @@ -2959,6 +2879,73 @@ on any children added to, or created by, this Group.

    + + + + +
    + + + +
    +

    left :number

    + + +
    +
    + + + +
    +

    The left coordinate of this Group.

    +

    It is derived by calling getBounds, calculating the Groups dimensions based on its +visible children.

    +

    Note that no ancestors are factored into the result, meaning that if this Group is +nested within another Group, with heavy transforms on it, the result of this property +is likely to be incorrect. It is safe to get and set this property if the Group is a +top-level descendant of Phaser.World, or untransformed parents.

    +
    + + + + + +
    + + + + + + + +
    Inherited From:
    +
    + + + + + + + + + + + + + +
    Source - + core/Group.js, line 2683 +
    + + + + + + +
    @@ -3011,70 +2998,7 @@ on any children added to, or created by, this Group.

    Source - - core/Group.js, line 2561 -
    - - - - - - - - - - - - - - - -
    -

    mask :PIXI.Graphics

    - - -
    -
    - - - -
    -

    Sets a mask for the displayObject. A mask is an object that limits the visibility of an object to the shape of the mask applied to it. -In PIXI a regular mask must be a PIXI.Graphics object. This allows for much faster masking in canvas as it utilises shape clipping. -To remove a mask, set this property to null.

    -
    - - - - - -
    - - - - - - - -
    Inherited From:
    -
    - - - - - - - - - - - - - -
    Source - - pixi/display/DisplayObject.js, line 282 + core/Group.js, line 2577
    @@ -3466,67 +3390,6 @@ is still over the Sprite or not.

    -
    - - - -
    - - - -
    -

    <readonly> parent :PIXI.DisplayObjectContainer

    - - -
    -
    - - - -
    -

    [read-only] The display object container that contains this display object.

    -
    - - - - - -
    - - - - - - - -
    Inherited From:
    -
    - - - - - - - - - - - - - -
    Source - - pixi/display/DisplayObject.js, line 79 -
    - - - - - - -
    @@ -3783,128 +3646,6 @@ Phaser.Physics.Arcade.BOTTOM_TOP

    - - - - -
    - - - -
    -

    pivot :Point

    - - -
    -
    - - - -
    -

    The pivot point of the displayObject that it rotates around

    -
    - - - - - -
    - - - - - - - -
    Inherited From:
    -
    - - - - - - - - - - - - - -
    Source - - pixi/display/DisplayObject.js, line 30 -
    - - - - - - - -
    - - - -
    - - - -
    -

    position :Point

    - - -
    -
    - - - -
    -

    The coordinate of the object relative to the local coordinates of the parent.

    -
    - - - - - -
    - - - - - - - -
    Inherited From:
    -
    - - - - - - - - - - - - - -
    Source - - pixi/display/DisplayObject.js, line 14 -
    - - - - - - -
    @@ -3971,7 +3712,7 @@ Phaser.Physics.Arcade.BOTTOM_TOP

    renderable :Boolean

    + id="right">right :number
    @@ -3980,7 +3721,13 @@ Phaser.Physics.Arcade.BOTTOM_TOP

    -

    Can this object be rendered

    +

    The right coordinate of this Group.

    +

    It is derived by calling getBounds, calculating the Groups dimensions based on its +visible children.

    +

    Note that no ancestors are factored into the result, meaning that if this Group is +nested within another Group, with heavy transforms on it, the result of this property +is likely to be incorrect. It is safe to get and set this property if the Group is a +top-level descendant of Phaser.World, or untransformed parents.

    @@ -3997,7 +3744,7 @@ Phaser.Physics.Arcade.BOTTOM_TOP

    Inherited From:
    @@ -4013,7 +3760,7 @@ Phaser.Physics.Arcade.BOTTOM_TOP

    Source - - pixi/display/DisplayObject.js, line 71 + core/Group.js, line 2716
    @@ -4076,7 +3823,7 @@ This will have no impact on the rotation value of its children, but it will upda
    Source - - core/Group.js, line 2630 + core/Group.js, line 2929
    @@ -4095,7 +3842,7 @@ This will have no impact on the rotation value of its children, but it will upda

    scale :Point

    + id="top">top :number
    @@ -4104,7 +3851,13 @@ This will have no impact on the rotation value of its children, but it will upda
    -

    The scale factor of the object.

    +

    The top coordinate of this Group.

    +

    It is derived by calling getBounds, calculating the Groups dimensions based on its +visible children.

    +

    Note that no ancestors are factored into the result, meaning that if this Group is +nested within another Group, with heavy transforms on it, the result of this property +is likely to be incorrect. It is safe to get and set this property if the Group is a +top-level descendant of Phaser.World, or untransformed parents.

    @@ -4121,7 +3874,7 @@ This will have no impact on the rotation value of its children, but it will upda
    Inherited From:
    @@ -4137,68 +3890,7 @@ This will have no impact on the rotation value of its children, but it will upda
    Source - - pixi/display/DisplayObject.js, line 22 -
    - - - - - - - - - - - - - - - -
    -

    <readonly> stage :Stage

    - - -
    -
    - - - -
    -

    [read-only] The stage the display object is connected to, or undefined if it is not connected to the stage.

    -
    - - - - - -
    - - - - - - - -
    Inherited From:
    -
    - - - - - - - - - - - - - -
    Source - - pixi/display/DisplayObject.js, line 88 + core/Group.js, line 2749
    @@ -4259,7 +3951,7 @@ This will have no impact on the rotation value of its children, but it will upda
    Source - - core/Group.js, line 2544 + core/Group.js, line 2560
    @@ -4388,7 +4080,7 @@ This will have no impact on the rotation value of its children, but it will upda
    Source - - core/Group.js, line 2639 + core/Group.js, line 2938
    @@ -4458,314 +4150,6 @@ This will have no impact on the rotation value of its children, but it will upda -
    - - - -
    - - - -
    -

    <readonly> worldAlpha :Number

    - - -
    -
    - - - -
    -

    [read-only] The multiplied alpha of the displayObject

    -
    - - - - - -
    - - - - - - - -
    Inherited From:
    -
    - - - - - - - - - - - - - -
    Source - - pixi/display/DisplayObject.js, line 97 -
    - - - - - - - -
    - - - -
    - - - -
    -

    <readonly> worldPosition :Point

    - - -
    -
    - - - -
    -

    The position of the Display Object based on the world transform. -This value is updated at the end of updateTransform and takes all parent transforms into account.

    -
    - - - - - -
    - - - - - - - -
    Inherited From:
    -
    - - - - - - - - - - - - - -
    Source - - pixi/display/DisplayObject.js, line 116 -
    - - - - - - - -
    - - - -
    - - - -
    -

    <readonly> worldRotation :Number

    - - -
    -
    - - - -
    -

    The rotation of the Display Object, in radians, based on the world transform. -This value is updated at the end of updateTransform and takes all parent transforms into account.

    -
    - - - - - -
    - - - - - - - -
    Inherited From:
    -
    - - - - - - - - - - - - - -
    Source - - pixi/display/DisplayObject.js, line 136 -
    - - - - - - - -
    - - - -
    - - - -
    -

    <readonly> worldScale :Point

    - - -
    -
    - - - -
    -

    The scale of the Display Object based on the world transform. -This value is updated at the end of updateTransform and takes all parent transforms into account.

    -
    - - - - - -
    - - - - - - - -
    Inherited From:
    -
    - - - - - - - - - - - - - -
    Source - - pixi/display/DisplayObject.js, line 126 -
    - - - - - - - -
    - - - -
    - - - -
    -

    worldVisible :Boolean

    - - -
    -
    - - - -
    -

    [read-only] Indicates if the sprite is globally visible.

    -
    - - - - - -
    - - - - - - - -
    Inherited From:
    -
    - - - - - - - - - - - - - -
    Source - - pixi/display/DisplayObject.js, line 258 -
    - - - - - - -
    @@ -4820,7 +4204,7 @@ This will have no impact on the x/y coordinates of its children, but it will upd
    Source - - core/Group.js, line 2612 + core/Group.js, line 2911
    @@ -4883,7 +4267,7 @@ This will have no impact on the x/y coordinates of its children, but it will upd
    Source - - core/Group.js, line 2621 + core/Group.js, line 2920
    @@ -5380,7 +4764,7 @@ this allows you to control child ordering.

    Source - - core/Group.js, line 1374 + core/Group.js, line 1376
    @@ -5648,7 +5032,7 @@ this allows you to control child ordering.

    addChild(child) → {PIXI.DisplayObject}

    + id="addChild">addChild(child) → {DisplayObject}
    @@ -5697,7 +5081,7 @@ this allows you to control child ordering.

    -PIXI.DisplayObject +DisplayObject @@ -5724,7 +5108,7 @@ this allows you to control child ordering.

    @@ -5792,7 +5176,7 @@ this allows you to control child ordering.

    addChildAt(child, index) → {PIXI.DisplayObject}

    + id="addChildAt">addChildAt(child, index) → {DisplayObject}
    @@ -5841,7 +5225,7 @@ this allows you to control child ordering.

    -PIXI.DisplayObject +DisplayObject @@ -5891,7 +5275,7 @@ this allows you to control child ordering.

    @@ -6655,6 +6039,641 @@ This is a constant and can be one of Phaser.TOP_LEFT (default), + + + +
    +

    alignIn(container, position, offsetX, offsetY) → {Phaser.Group}

    + + +
    +
    + + + +
    +

    Aligns this Group within another Game Object, or Rectangle, known as the +'container', to one of 9 possible positions.

    +

    The container must be a Game Object, or Phaser.Rectangle object. This can include properties +such as World.bounds or Camera.view, for aligning Groups within the world +and camera bounds. Or it can include other Sprites, Images, Text objects, BitmapText, +TileSprites or Buttons.

    +

    Please note that aligning a Group to another Game Object does not make it a child of +the container. It simply modifies its position coordinates so it aligns with it.

    +

    The position constants you can use are:

    +

    Phaser.TOP_LEFT, Phaser.TOP_CENTER, Phaser.TOP_RIGHT, Phaser.LEFT_CENTER, +Phaser.CENTER, Phaser.RIGHT_CENTER, Phaser.BOTTOM_LEFT, +Phaser.BOTTOM_CENTER and Phaser.BOTTOM_RIGHT.

    +

    Groups are placed in such a way that their bounds align with the +container, taking into consideration rotation and scale of its children. +This allows you to neatly align Groups, irrespective of their position value.

    +

    The optional offsetX and offsetY arguments allow you to apply extra spacing to the final +aligned position of the Group. For example:

    +

    group.alignIn(background, Phaser.BOTTOM_RIGHT, -20, -20)

    +

    Would align the group to the bottom-right, but moved 20 pixels in from the corner. +Think of the offsets as applying an adjustment to the containers bounds before the alignment takes place. +So providing a negative offset will 'shrink' the container bounds by that amount, and providing a positive +one expands it.

    +
    + + + + + + + +
    Parameters:
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeArgumentDefaultDescription
    container + + +Phaser.Rectangle +| + +Phaser.Sprite +| + +Phaser.Image +| + +Phaser.Text +| + +Phaser.BitmapText +| + +Phaser.Button +| + +Phaser.Graphics +| + +Phaser.TileSprite + + + + + + + + + + + +

    The Game Object or Rectangle with which to align this Group to. Can also include properties such as World.bounds or Camera.view.

    position + + +integer + + + + + + <optional>
    + + + + + +
    + +

    The position constant. One of Phaser.TOP_LEFT (default), Phaser.TOP_CENTER, Phaser.TOP_RIGHT, Phaser.LEFT_CENTER, Phaser.CENTER, Phaser.RIGHT_CENTER, Phaser.BOTTOM_LEFT, Phaser.BOTTOM_CENTER or Phaser.BOTTOM_RIGHT.

    offsetX + + +integer + + + + + + <optional>
    + + + + + +
    + + 0 + +

    A horizontal adjustment of the Containers bounds, applied to the aligned position of the Game Object. Use a negative value to shrink the bounds, positive to increase it.

    offsetY + + +integer + + + + + + <optional>
    + + + + + +
    + + 0 + +

    A vertical adjustment of the Containers bounds, applied to the aligned position of the Game Object. Use a negative value to shrink the bounds, positive to increase it.

    + + + + +
    Returns:
    +
    + + + +
    + +Phaser.Group + + - +
    + +
    +

    This Group.

    +
    + + + +
    + + + +
    + + + + + + + +
    Inherited From:
    +
    + + + + + + + + + + + + + +
    Source - + core/Group.js, line 2815 +
    + + + + + + + +
    + + + + + + + + + + + +
    + + + +
    +

    alignTo(parent, position, offsetX, offsetY) → {Phaser.Group}

    + + +
    +
    + + + +
    +

    Aligns this Group to the side of another Game Object, or Rectangle, known as the +'parent', in one of 11 possible positions.

    +

    The parent must be a Game Object, or Phaser.Rectangle object. This can include properties +such as World.bounds or Camera.view, for aligning Groups within the world +and camera bounds. Or it can include other Sprites, Images, Text objects, BitmapText, +TileSprites or Buttons.

    +

    Please note that aligning a Group to another Game Object does not make it a child of +the parent. It simply modifies its position coordinates so it aligns with it.

    +

    The position constants you can use are:

    +

    Phaser.TOP_LEFT (default), Phaser.TOP_CENTER, Phaser.TOP_RIGHT, Phaser.LEFT_TOP, +Phaser.LEFT_CENTER, Phaser.LEFT_BOTTOM, Phaser.RIGHT_TOP, Phaser.RIGHT_CENTER, +Phaser.RIGHT_BOTTOM, Phaser.BOTTOM_LEFT, Phaser.BOTTOM_CENTER +and Phaser.BOTTOM_RIGHT.

    +

    Groups are placed in such a way that their bounds align with the +parent, taking into consideration rotation and scale of the children. +This allows you to neatly align Groups, irrespective of their position value.

    +

    The optional offsetX and offsetY arguments allow you to apply extra spacing to the final +aligned position of the Group. For example:

    +

    group.alignTo(background, Phaser.BOTTOM_RIGHT, -20, -20)

    +

    Would align the group to the bottom-right, but moved 20 pixels in from the corner. +Think of the offsets as applying an adjustment to the parents bounds before the alignment takes place. +So providing a negative offset will 'shrink' the parent bounds by that amount, and providing a positive +one expands it.

    +
    + + + + + + + +
    Parameters:
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeArgumentDefaultDescription
    parent + + +Phaser.Rectangle +| + +Phaser.Sprite +| + +Phaser.Image +| + +Phaser.Text +| + +Phaser.BitmapText +| + +Phaser.Button +| + +Phaser.Graphics +| + +Phaser.TileSprite + + + + + + + + + + + +

    The Game Object or Rectangle with which to align this Group to. Can also include properties such as World.bounds or Camera.view.

    position + + +integer + + + + + + <optional>
    + + + + + +
    + +

    The position constant. One of Phaser.TOP_LEFT, Phaser.TOP_CENTER, Phaser.TOP_RIGHT, Phaser.LEFT_TOP, Phaser.LEFT_CENTER, Phaser.LEFT_BOTTOM, Phaser.RIGHT_TOP, Phaser.RIGHT_CENTER, Phaser.RIGHT_BOTTOM, Phaser.BOTTOM_LEFT, Phaser.BOTTOM_CENTER or Phaser.BOTTOM_RIGHT.

    offsetX + + +integer + + + + + + <optional>
    + + + + + +
    + + 0 + +

    A horizontal adjustment of the Containers bounds, applied to the aligned position of the Game Object. Use a negative value to shrink the bounds, positive to increase it.

    offsetY + + +integer + + + + + + <optional>
    + + + + + +
    + + 0 + +

    A vertical adjustment of the Containers bounds, applied to the aligned position of the Game Object. Use a negative value to shrink the bounds, positive to increase it.

    + + + + +
    Returns:
    +
    + + + +
    + +Phaser.Group + + - +
    + +
    +

    This Group.

    +
    + + + +
    + + + +
    + + + + + + + +
    Inherited From:
    +
    + + + + + + + + + + + + + +
    Source - + core/Group.js, line 2857 +
    + + + + + + + +
    + + + + + + + + + + +
    @@ -6788,7 +6807,7 @@ This is a constant and can be one of Phaser.TOP_LEFT (default), Source - - core/Group.js, line 1910 + core/Group.js, line 1912 @@ -6932,7 +6951,7 @@ This is a constant and can be one of Phaser.TOP_LEFT (default), Source - - core/Group.js, line 895 + core/Group.js, line 897 @@ -7150,7 +7169,7 @@ After the method parameter and context you can add as many extra parameters as y
    Source - - core/Group.js, line 1529 + core/Group.js, line 1531
    @@ -7349,7 +7368,7 @@ After the method parameter and context you can add as many extra parameters as y
    Source - - core/Group.js, line 1442 + core/Group.js, line 1444
    @@ -7526,7 +7545,7 @@ After the method parameter and context you can add as many extra parameters as y
    Source - - core/Group.js, line 1476 + core/Group.js, line 1478
    @@ -7819,7 +7838,7 @@ After the method parameter and context you can add as many extra parameters as y
    Source - - core/Group.js, line 1341 + core/Group.js, line 1343
    @@ -8088,7 +8107,7 @@ After the method parameter and context you can add as many extra parameters as y
    Source - - core/Group.js, line 1205 + core/Group.js, line 1207
    @@ -8183,7 +8202,7 @@ After the method parameter and context you can add as many extra parameters as y
    Source - - core/Group.js, line 2293 + core/Group.js, line 2309
    @@ -8278,7 +8297,7 @@ After the method parameter and context you can add as many extra parameters as y
    Source - - core/Group.js, line 2281 + core/Group.js, line 2297
    @@ -9118,7 +9137,7 @@ It should return -1 if a > b, 1 if a < b or 0 if
    Source - - core/Group.js, line 1886 + core/Group.js, line 1888
    @@ -9272,7 +9291,7 @@ It should return -1 if a > b, 1 if a < b or 0 if
    Source - - core/Group.js, line 1942 + core/Group.js, line 1944
    @@ -9456,7 +9475,7 @@ It should return -1 if a > b, 1 if a < b or 0 if
    Source - - core/Group.js, line 2507 + core/Group.js, line 2523
    @@ -9650,7 +9669,7 @@ It should return -1 if a > b, 1 if a < b or 0 if
    Source - - core/Group.js, line 1425 + core/Group.js, line 1427
    @@ -9924,7 +9943,7 @@ healthyList.callAll('attack');

    Note: Currently this will skip any

    Source - - core/Group.js, line 1668 + core/Group.js, line 1670
    @@ -10182,7 +10201,7 @@ healthyList.callAll('attack');

    Note: Currently this will skip any

    Source - - core/Group.js, line 1708 + core/Group.js, line 1710
    @@ -10399,7 +10418,7 @@ healthyList.callAll('attack');

    Note: Currently this will skip any

    Source - - core/Group.js, line 1790 + core/Group.js, line 1792
    @@ -10616,7 +10635,7 @@ healthyList.callAll('attack');

    Note: Currently this will skip any

    Source - - core/Group.js, line 1818 + core/Group.js, line 1820
    @@ -10833,201 +10852,7 @@ healthyList.callAll('attack');

    Note: Currently this will skip any

    Source - - core/Group.js, line 1762 -
    - - - - - - - - - - - - - - - - - - - - - - - -
    -

    generateTexture(resolution, scaleMode, renderer) → {PIXI.RenderTexture}

    - - -
    -
    - - - -
    -

    Useful function that returns a texture of the displayObject object that can then be used to create sprites -This can be quite useful if your displayObject is static / complicated and needs to be reused multiple times.

    -
    - - - - - - - -
    Parameters:
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    NameTypeDescription
    resolution - - -Number - - - -

    The resolution of the texture being generated

    scaleMode - - -Number - - - -

    See {{#crossLink "PIXI/scaleModes:property"}}PIXI.scaleModes{{/crossLink}} for possible values

    renderer - - -PIXI.CanvasRenderer -| - -PIXI.WebGLRenderer - - - -

    The renderer used to generate the texture.

    - - - - -
    Returns:
    -
    - - - -
    - -PIXI.RenderTexture - - - -
    - -
    -

    a texture of the graphics object

    -
    - - - -
    - - - -
    - - - - - - - -
    Inherited From:
    -
    - - - - - - - - - - - - - -
    Source - - pixi/display/DisplayObject.js, line 541 + core/Group.js, line 1764
    @@ -11270,7 +11095,7 @@ This can be quite useful if your displayObject is static / complicated and needs
    Source - - core/Group.js, line 2190 + core/Group.js, line 2192
    @@ -11511,7 +11336,7 @@ the same name only the first instance is returned.

    Source - - core/Group.js, line 1030 + core/Group.js, line 1032
    @@ -11538,7 +11363,7 @@ the same name only the first instance is returned.

    getChildAt(index) → {PIXI.DisplayObject}

    + id="getChildAt">getChildAt(index) → {DisplayObject}
    @@ -11614,7 +11439,7 @@ the same name only the first instance is returned.

    @@ -11731,7 +11556,7 @@ the same name only the first instance is returned.

    -PIXI.DisplayObject +DisplayObject @@ -11826,7 +11651,7 @@ the same name only the first instance is returned.

    getClosestTo(object) → {any}

    + id="getClosestTo">getClosestTo(object, callback, callbackContext) → {any}
    @@ -11835,9 +11660,13 @@ the same name only the first instance is returned.

    -

    Get the closest child to given Object.

    +

    Get the closest child to given Object, with optional callback to filter children.

    This can be a Sprite, Group, Image or any object with public x and y properties.

    'close' is determined by the distance from the objects x and y properties compared to the childs x and y properties.

    +

    You can use the optional callback argument to apply your own filter to the distance checks. +If the child is closer then the previous child, it will be sent to callback as the first argument, +with the distance as the second. The callback should return true if it passes your +filtering criteria, otherwise it should return false.

    @@ -11859,6 +11688,8 @@ the same name only the first instance is returned.

    Type + Argument + @@ -11884,6 +11715,14 @@ the same name only the first instance is returned.

    + + + + + + + + @@ -11891,6 +11730,72 @@ the same name only the first instance is returned.

    + + + + callback + + + + + +function + + + + + + + + + <optional>
    + + + + + + + + + + +

    The function that each child will be evaluated against. Each child of the group will be passed to it as its first parameter, with the distance as the second. It should return true if the child passes the matching criteria.

    + + + + + + + callbackContext + + + + + +object + + + + + + + + + <optional>
    + + + + + + + + + + +

    The context in which the function should be called (usually 'this').

    + + + @@ -11910,7 +11815,7 @@ the same name only the first instance is returned.

    -

    The child closest to given object, or null if no child was found.

    +

    The child closest to given object, or null if no child was found.

    @@ -11945,7 +11850,7 @@ the same name only the first instance is returned.

    Source - - core/Group.js, line 2207 + core/Group.js, line 2209
    @@ -12277,7 +12182,7 @@ will be reset and/or have a new texture loaded on it. This is handled by G
    Source - - core/Group.js, line 2074 + core/Group.js, line 2076
    @@ -12609,7 +12514,7 @@ will be reset and/or have a new texture loaded on it. This is handled by G
    Source - - core/Group.js, line 2104 + core/Group.js, line 2106
    @@ -12979,7 +12884,7 @@ will be reset and/or have a new texture loaded on it. This is handled by G
    Source - - core/Group.js, line 2040 + core/Group.js, line 2042
    @@ -13006,7 +12911,7 @@ will be reset and/or have a new texture loaded on it. This is handled by G

    getFurthestFrom(object) → {any}

    + id="getFurthestFrom">getFurthestFrom(object, callback, callbackContext) → {any}
    @@ -13015,9 +12920,13 @@ will be reset and/or have a new texture loaded on it. This is handled by G
    -

    Get the child furthest away from the given Object.

    +

    Get the child furthest away from the given Object, with optional callback to filter children.

    This can be a Sprite, Group, Image or any object with public x and y properties.

    'furthest away' is determined by the distance from the objects x and y properties compared to the childs x and y properties.

    +

    You can use the optional callback argument to apply your own filter to the distance checks. +If the child is closer then the previous child, it will be sent to callback as the first argument, +with the distance as the second. The callback should return true if it passes your +filtering criteria, otherwise it should return false.

    @@ -13039,6 +12948,8 @@ will be reset and/or have a new texture loaded on it. This is handled by G Type + Argument + @@ -13064,6 +12975,14 @@ will be reset and/or have a new texture loaded on it. This is handled by G + + + + + + + + @@ -13071,6 +12990,72 @@ will be reset and/or have a new texture loaded on it. This is handled by G + + + + callback + + + + + +function + + + + + + + + + <optional>
    + + + + + + + + + + +

    The function that each child will be evaluated against. Each child of the group will be passed to it as its first parameter, with the distance as the second. It should return true if the child passes the matching criteria.

    + + + + + + + callbackContext + + + + + +object + + + + + + + + + <optional>
    + + + + + + + + + + +

    The context in which the function should be called (usually 'this').

    + + + @@ -13090,7 +13075,7 @@ will be reset and/or have a new texture loaded on it. This is handled by G
    -

    The child furthest from the given object, or null if no child was found.

    +

    The child furthest from the given object, or null if no child was found.

    @@ -13125,7 +13110,7 @@ will be reset and/or have a new texture loaded on it. This is handled by G
    Source - - core/Group.js, line 2244 + core/Group.js, line 2253
    @@ -13269,7 +13254,7 @@ will be reset and/or have a new texture loaded on it. This is handled by G
    Source - - core/Group.js, line 1017 + core/Group.js, line 1019
    @@ -13364,7 +13349,7 @@ will be reset and/or have a new texture loaded on it. This is handled by G
    Source - - pixi/display/DisplayObjectContainer.js, line 381 + pixi/display/DisplayObjectContainer.js, line 383
    @@ -13567,7 +13552,7 @@ will be reset and/or have a new texture loaded on it. This is handled by G
    Source - - core/Group.js, line 2305 + core/Group.js, line 2321
    @@ -13663,7 +13648,7 @@ will be reset and/or have a new texture loaded on it. This is handled by G
    Source - - core/Group.js, line 2173 + core/Group.js, line 2175
    @@ -13831,7 +13816,7 @@ will be reset and/or have a new texture loaded on it. This is handled by G
    Source - - core/Group.js, line 1092 + core/Group.js, line 1094
    @@ -14190,7 +14175,7 @@ element and the entire array will be applied to the callback function.

    Source - - core/Group.js, line 1967 + core/Group.js, line 1969
    @@ -14389,7 +14374,7 @@ element and the entire array will be applied to the callback function.

    Source - - core/Group.js, line 2375 + core/Group.js, line 2391
    @@ -14533,7 +14518,7 @@ element and the entire array will be applied to the callback function.

    Source - - core/Group.js, line 957 + core/Group.js, line 959
    @@ -14677,7 +14662,7 @@ element and the entire array will be applied to the callback function.

    Source - - core/Group.js, line 933 + core/Group.js, line 935
    @@ -14871,7 +14856,7 @@ element and the entire array will be applied to the callback function.

    Source - - core/Group.js, line 1408 + core/Group.js, line 1410
    @@ -14967,7 +14952,7 @@ element and the entire array will be applied to the callback function.

    Source - - core/Group.js, line 821 + core/Group.js, line 823
    @@ -15049,7 +15034,7 @@ element and the entire array will be applied to the callback function.

    Source - - core/Group.js, line 1647 + core/Group.js, line 1649
    @@ -15131,7 +15116,7 @@ element and the entire array will be applied to the callback function.

    Source - - core/Group.js, line 1602 + core/Group.js, line 1604
    @@ -15227,7 +15212,7 @@ element and the entire array will be applied to the callback function.

    Source - - core/Group.js, line 850 + core/Group.js, line 852
    @@ -15467,7 +15452,7 @@ element and the entire array will be applied to the callback function.

    Source - - core/Group.js, line 2327 + core/Group.js, line 2343
    @@ -15692,7 +15677,7 @@ more than one Game Object sharing the same BaseTexture.

    Source - - core/Group.js, line 2404 + core/Group.js, line 2420
    @@ -15947,7 +15932,7 @@ more than one Game Object sharing the same BaseTexture.

    Source - - core/Group.js, line 2452 + core/Group.js, line 2468
    @@ -15974,7 +15959,7 @@ more than one Game Object sharing the same BaseTexture.

    removeChild(child) → {PIXI.DisplayObject}

    + id="removeChild">removeChild(child) → {DisplayObject}
    @@ -16023,7 +16008,7 @@ more than one Game Object sharing the same BaseTexture.

    -PIXI.DisplayObject +DisplayObject @@ -16050,7 +16035,7 @@ more than one Game Object sharing the same BaseTexture.

    @@ -16118,7 +16103,7 @@ more than one Game Object sharing the same BaseTexture.

    removeChildAt(index) → {PIXI.DisplayObject}

    + id="removeChildAt">removeChildAt(index) → {DisplayObject}
    @@ -16194,7 +16179,7 @@ more than one Game Object sharing the same BaseTexture.

    @@ -16602,7 +16587,7 @@ This call will return false if the child is not in the hash.

    Source - - pixi/display/DisplayObjectContainer.js, line 426 + pixi/display/DisplayObjectContainer.js, line 428
    @@ -16771,7 +16756,7 @@ This call will return false if the child is not in the hash.

    Source - - core/Group.js, line 1053 + core/Group.js, line 1055
    @@ -17074,7 +17059,7 @@ This call will return false if the child is not in the hash.

    Source - - core/Group.js, line 2134 + core/Group.js, line 2136
    @@ -17239,7 +17224,7 @@ This call will return false if the child is not in the hash.

    Source - - core/Group.js, line 794 + core/Group.js, line 796
    @@ -17315,7 +17300,7 @@ This call will return false if the child is not in the hash.

    Source - - core/Group.js, line 1003 + core/Group.js, line 1005
    @@ -17459,7 +17444,7 @@ This call will return false if the child is not in the hash.

    Source - - core/Group.js, line 914 + core/Group.js, line 916
    @@ -17846,7 +17831,7 @@ This call will return false if the child is not in the hash.

    Source - - core/Group.js, line 1234 + core/Group.js, line 1236
    @@ -18180,7 +18165,7 @@ If you need that ability please see Group.setAllChildren.

    Source - - core/Group.js, line 1265 + core/Group.js, line 1267
    @@ -18514,7 +18499,7 @@ Unlike with setAll the property is NOT set on child Groups itself.<
    Source - - core/Group.js, line 1300 + core/Group.js, line 1302
    @@ -18590,7 +18575,7 @@ Unlike with setAll the property is NOT set on child Groups itself.< -PIXI.DisplayObject +DisplayObject @@ -18977,7 +18962,7 @@ Unlike with setAll the property is NOT set on child Groups itself.<
    Source - - core/Group.js, line 1127 + core/Group.js, line 1129
    @@ -19101,7 +19086,7 @@ Unlike with setAll the property is NOT set on child Groups itself.<
    Source - - pixi/display/DisplayObjectContainer.js, line 410 + pixi/display/DisplayObjectContainer.js, line 412
    @@ -19288,7 +19273,7 @@ alphabetical sorting, mixing strings and numbers, and Unicode sorting. See MDN f
    Source - - core/Group.js, line 1846 + core/Group.js, line 1848
    @@ -19482,7 +19467,7 @@ alphabetical sorting, mixing strings and numbers, and Unicode sorting. See MDN f
    Source - - core/Group.js, line 1391 + core/Group.js, line 1393
    @@ -19630,7 +19615,7 @@ alphabetical sorting, mixing strings and numbers, and Unicode sorting. See MDN f
    Source - - core/Group.js, line 879 + core/Group.js, line 881
    @@ -19706,7 +19691,7 @@ alphabetical sorting, mixing strings and numbers, and Unicode sorting. See MDN f -PIXI.DisplayObject +DisplayObject @@ -19729,7 +19714,7 @@ alphabetical sorting, mixing strings and numbers, and Unicode sorting. See MDN f -PIXI.DisplayObject +DisplayObject @@ -19798,337 +19783,6 @@ alphabetical sorting, mixing strings and numbers, and Unicode sorting. See MDN f -
    - - - -
    -

    toGlobal(position) → {Point}

    - - -
    -
    - - - -
    -

    Calculates the global position of the display object

    -
    - - - - - - - -
    Parameters:
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    NameTypeDescription
    position - - -Point - - - -

    The world origin to calculate from

    - - - - -
    Returns:
    -
    - - - -
    - -Point - - - -
    - -
    -

    A point object representing the position of this object

    -
    - - - -
    - - - -
    - - - - - - - -
    Inherited From:
    -
    - - - - - - - - - - - - - -
    Source - - pixi/display/DisplayObject.js, line 575 -
    - - - - - - - -
    - - - - - - - - - - - -
    - - - -
    -

    toLocal(position, from) → {Point}

    - - -
    -
    - - - -
    -

    Calculates the local position of the display object relative to another point

    -
    - - - - - - - -
    Parameters:
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    NameTypeArgumentDescription
    position - - -Point - - - - - - - - - -

    The world origin to calculate from

    from - - -PIXI.DisplayObject - - - - - - <optional>
    - - - - - -

    The DisplayObject to calculate the global position from

    - - - - -
    Returns:
    -
    - - - -
    - -Point - - - -
    - -
    -

    A point object representing the position of this object

    -
    - - - -
    - - - -
    - - - - - - - -
    Inherited From:
    -
    - - - - - - - - - - - - - -
    Source - - pixi/display/DisplayObject.js, line 589 -
    - - - - - - - -
    - - - - - - - - - - -
    @@ -20190,82 +19844,7 @@ alphabetical sorting, mixing strings and numbers, and Unicode sorting. See MDN f
    Source - - core/Group.js, line 1630 -
    - - - - - - - - - - - - - - - - - - - - - - - -
    -

    updateCache()

    - - -
    -
    - - - -
    -

    Generates and updates the cached sprite for this object.

    -
    - - - - - - - - - - - -
    - - - - - - - -
    Inherited From:
    -
    - - - - - - - - - - - - - -
    Source - - pixi/display/DisplayObject.js, line 565 + core/Group.js, line 1632
    @@ -20588,7 +20167,7 @@ alphabetical sorting, mixing strings and numbers, and Unicode sorting. See MDN f
    Source - - core/Group.js, line 981 + core/Group.js, line 983
    @@ -20637,7 +20216,7 @@ alphabetical sorting, mixing strings and numbers, and Unicode sorting. See MDN f Documentation generated by JSDoc 3.3.3 - on Fri Jun 17 2016 12:45:36 GMT+0100 (BST) using the DocStrap template. + on Fri Jul 08 2016 15:42:41 GMT+0100 (GMT Daylight Time) using the DocStrap template. diff --git a/docs/Phaser.Physics.P2.CollisionGroup.html b/docs/Phaser.Physics.P2.CollisionGroup.html index 621d08905..df4fc1a0e 100644 --- a/docs/Phaser.Physics.P2.CollisionGroup.html +++ b/docs/Phaser.Physics.P2.CollisionGroup.html @@ -708,10 +708,6 @@ ComplexPrimitiveShader -
  • - DisplayObject -
  • -
  • DisplayObjectContainer
  • @@ -744,6 +740,10 @@ PIXI +
  • + DisplayObject +
  • +
  • PixiFastShader
  • @@ -1455,7 +1455,7 @@ Documentation generated by JSDoc 3.3.3 - on Fri Jun 17 2016 12:45:36 GMT+0100 (BST) using the DocStrap template. + on Fri Jul 08 2016 15:42:41 GMT+0100 (GMT Daylight Time) using the DocStrap template. diff --git a/docs/Phaser.Physics.P2.ContactMaterial.html b/docs/Phaser.Physics.P2.ContactMaterial.html index e50181bb0..6fccba790 100644 --- a/docs/Phaser.Physics.P2.ContactMaterial.html +++ b/docs/Phaser.Physics.P2.ContactMaterial.html @@ -708,10 +708,6 @@ ComplexPrimitiveShader -
  • - DisplayObject -
  • -
  • DisplayObjectContainer
  • @@ -744,6 +740,10 @@ PIXI +
  • + DisplayObject +
  • +
  • PixiFastShader
  • @@ -1469,7 +1469,7 @@ Documentation generated by JSDoc 3.3.3 - on Fri Jun 17 2016 12:45:36 GMT+0100 (BST) using the DocStrap template. + on Fri Jul 08 2016 15:42:41 GMT+0100 (GMT Daylight Time) using the DocStrap template. diff --git a/docs/Phaser.Physics.P2.DistanceConstraint.html b/docs/Phaser.Physics.P2.DistanceConstraint.html index 62a2572a9..f694778c2 100644 --- a/docs/Phaser.Physics.P2.DistanceConstraint.html +++ b/docs/Phaser.Physics.P2.DistanceConstraint.html @@ -708,10 +708,6 @@ ComplexPrimitiveShader -
  • - DisplayObject -
  • -
  • DisplayObjectContainer
  • @@ -744,6 +740,10 @@ PIXI +
  • + DisplayObject +
  • +
  • PixiFastShader
  • @@ -1745,7 +1745,7 @@ Documentation generated by JSDoc 3.3.3 - on Fri Jun 17 2016 12:45:36 GMT+0100 (BST) using the DocStrap template. + on Fri Jul 08 2016 15:42:41 GMT+0100 (GMT Daylight Time) using the DocStrap template. diff --git a/docs/Phaser.Physics.P2.FixtureList.html b/docs/Phaser.Physics.P2.FixtureList.html index f0deb9c3e..5e8694166 100644 --- a/docs/Phaser.Physics.P2.FixtureList.html +++ b/docs/Phaser.Physics.P2.FixtureList.html @@ -708,10 +708,6 @@ ComplexPrimitiveShader -
  • - DisplayObject -
  • -
  • DisplayObjectContainer
  • @@ -744,6 +740,10 @@ PIXI +
  • + DisplayObject +
  • +
  • PixiFastShader
  • @@ -2568,7 +2568,7 @@ during runtime (to remove parts, set masks, categories & sensor properties)< Documentation generated by JSDoc 3.3.3 - on Fri Jun 17 2016 12:45:36 GMT+0100 (BST) using the DocStrap template. + on Fri Jul 08 2016 15:42:41 GMT+0100 (GMT Daylight Time) using the DocStrap template. diff --git a/docs/Phaser.Physics.P2.GearConstraint.html b/docs/Phaser.Physics.P2.GearConstraint.html index 51d404556..657d44735 100644 --- a/docs/Phaser.Physics.P2.GearConstraint.html +++ b/docs/Phaser.Physics.P2.GearConstraint.html @@ -708,10 +708,6 @@ ComplexPrimitiveShader -
  • - DisplayObject -
  • -
  • DisplayObjectContainer
  • @@ -744,6 +740,10 @@ PIXI +
  • + DisplayObject +
  • +
  • PixiFastShader
  • @@ -1675,7 +1675,7 @@ Documentation generated by JSDoc 3.3.3 - on Fri Jun 17 2016 12:45:36 GMT+0100 (BST) using the DocStrap template. + on Fri Jul 08 2016 15:42:41 GMT+0100 (GMT Daylight Time) using the DocStrap template. diff --git a/docs/Phaser.Physics.P2.InversePointProxy.html b/docs/Phaser.Physics.P2.InversePointProxy.html index c767ddbb6..e014d5706 100644 --- a/docs/Phaser.Physics.P2.InversePointProxy.html +++ b/docs/Phaser.Physics.P2.InversePointProxy.html @@ -708,10 +708,6 @@ ComplexPrimitiveShader -
  • - DisplayObject -
  • -
  • DisplayObjectContainer
  • @@ -744,6 +740,10 @@ PIXI +
  • + DisplayObject +
  • +
  • PixiFastShader
  • @@ -1646,7 +1646,7 @@ Documentation generated by JSDoc 3.3.3 - on Fri Jun 17 2016 12:45:36 GMT+0100 (BST) using the DocStrap template. + on Fri Jul 08 2016 15:42:41 GMT+0100 (GMT Daylight Time) using the DocStrap template. diff --git a/docs/Phaser.Physics.P2.LockConstraint.html b/docs/Phaser.Physics.P2.LockConstraint.html index 007035fcb..af6e1a5ae 100644 --- a/docs/Phaser.Physics.P2.LockConstraint.html +++ b/docs/Phaser.Physics.P2.LockConstraint.html @@ -708,10 +708,6 @@ ComplexPrimitiveShader -
  • - DisplayObject -
  • -
  • DisplayObjectContainer
  • @@ -744,6 +740,10 @@ PIXI +
  • + DisplayObject +
  • +
  • PixiFastShader
  • @@ -1710,7 +1710,7 @@ Documentation generated by JSDoc 3.3.3 - on Fri Jun 17 2016 12:45:36 GMT+0100 (BST) using the DocStrap template. + on Fri Jul 08 2016 15:42:41 GMT+0100 (GMT Daylight Time) using the DocStrap template. diff --git a/docs/Phaser.Physics.P2.Material.html b/docs/Phaser.Physics.P2.Material.html index c791a5e34..a44618cc6 100644 --- a/docs/Phaser.Physics.P2.Material.html +++ b/docs/Phaser.Physics.P2.Material.html @@ -708,10 +708,6 @@ ComplexPrimitiveShader -
  • - DisplayObject -
  • -
  • DisplayObjectContainer
  • @@ -744,6 +740,10 @@ PIXI +
  • + DisplayObject +
  • +
  • PixiFastShader
  • @@ -1456,7 +1456,7 @@ Documentation generated by JSDoc 3.3.3 - on Fri Jun 17 2016 12:45:37 GMT+0100 (BST) using the DocStrap template. + on Fri Jul 08 2016 15:42:42 GMT+0100 (GMT Daylight Time) using the DocStrap template. diff --git a/docs/Phaser.Physics.P2.PointProxy.html b/docs/Phaser.Physics.P2.PointProxy.html index 1a9f90683..01092600e 100644 --- a/docs/Phaser.Physics.P2.PointProxy.html +++ b/docs/Phaser.Physics.P2.PointProxy.html @@ -708,10 +708,6 @@ ComplexPrimitiveShader -
  • - DisplayObject -
  • -
  • DisplayObjectContainer
  • @@ -744,6 +740,10 @@ PIXI +
  • + DisplayObject +
  • +
  • PixiFastShader
  • @@ -1646,7 +1646,7 @@ Documentation generated by JSDoc 3.3.3 - on Fri Jun 17 2016 12:45:37 GMT+0100 (BST) using the DocStrap template. + on Fri Jul 08 2016 15:42:42 GMT+0100 (GMT Daylight Time) using the DocStrap template. diff --git a/docs/Phaser.Physics.P2.PrismaticConstraint.html b/docs/Phaser.Physics.P2.PrismaticConstraint.html index 8dc7f8c7e..618eef837 100644 --- a/docs/Phaser.Physics.P2.PrismaticConstraint.html +++ b/docs/Phaser.Physics.P2.PrismaticConstraint.html @@ -708,10 +708,6 @@ ComplexPrimitiveShader -
  • - DisplayObject -
  • -
  • DisplayObjectContainer
  • @@ -744,6 +740,10 @@ PIXI +
  • + DisplayObject +
  • +
  • PixiFastShader
  • @@ -1784,7 +1784,7 @@ Documentation generated by JSDoc 3.3.3 - on Fri Jun 17 2016 12:45:37 GMT+0100 (BST) using the DocStrap template. + on Fri Jul 08 2016 15:42:42 GMT+0100 (GMT Daylight Time) using the DocStrap template. diff --git a/docs/Phaser.Physics.P2.RevoluteConstraint.html b/docs/Phaser.Physics.P2.RevoluteConstraint.html index b8679f225..1d1939bbc 100644 --- a/docs/Phaser.Physics.P2.RevoluteConstraint.html +++ b/docs/Phaser.Physics.P2.RevoluteConstraint.html @@ -708,10 +708,6 @@ ComplexPrimitiveShader -
  • - DisplayObject -
  • -
  • DisplayObjectContainer
  • @@ -744,6 +740,10 @@ PIXI +
  • + DisplayObject +
  • +
  • PixiFastShader
  • @@ -1746,7 +1746,7 @@ The pivot points are given in world (pixel) coordinates.

    Documentation generated by JSDoc 3.3.3 - on Fri Jun 17 2016 12:45:37 GMT+0100 (BST) using the DocStrap template. + on Fri Jul 08 2016 15:42:42 GMT+0100 (GMT Daylight Time) using the DocStrap template. diff --git a/docs/Phaser.Physics.P2.RotationalSpring.html b/docs/Phaser.Physics.P2.RotationalSpring.html index 42c56680b..cd9587f44 100644 --- a/docs/Phaser.Physics.P2.RotationalSpring.html +++ b/docs/Phaser.Physics.P2.RotationalSpring.html @@ -708,10 +708,6 @@ ComplexPrimitiveShader -
  • - DisplayObject -
  • -
  • DisplayObjectContainer
  • @@ -744,6 +740,10 @@ PIXI +
  • + DisplayObject +
  • +
  • PixiFastShader
  • @@ -1768,7 +1768,7 @@ Documentation generated by JSDoc 3.3.3 - on Fri Jun 17 2016 12:45:37 GMT+0100 (BST) using the DocStrap template. + on Fri Jul 08 2016 15:42:42 GMT+0100 (GMT Daylight Time) using the DocStrap template. diff --git a/docs/Phaser.Physics.P2.Spring.html b/docs/Phaser.Physics.P2.Spring.html index b211d81f0..01d6f2007 100644 --- a/docs/Phaser.Physics.P2.Spring.html +++ b/docs/Phaser.Physics.P2.Spring.html @@ -708,10 +708,6 @@ ComplexPrimitiveShader -
  • - DisplayObject -
  • -
  • DisplayObjectContainer
  • @@ -744,6 +740,10 @@ PIXI +
  • + DisplayObject +
  • +
  • PixiFastShader
  • @@ -1918,7 +1918,7 @@ Documentation generated by JSDoc 3.3.3 - on Fri Jun 17 2016 12:45:37 GMT+0100 (BST) using the DocStrap template. + on Fri Jul 08 2016 15:42:42 GMT+0100 (GMT Daylight Time) using the DocStrap template. diff --git a/docs/Phaser.Physics.P2.html b/docs/Phaser.Physics.P2.html index fa5b00709..ffcef3e27 100644 --- a/docs/Phaser.Physics.P2.html +++ b/docs/Phaser.Physics.P2.html @@ -708,10 +708,6 @@ ComplexPrimitiveShader -
  • - DisplayObject -
  • -
  • DisplayObjectContainer
  • @@ -744,6 +740,10 @@ PIXI +
  • + DisplayObject +
  • +
  • PixiFastShader
  • @@ -1582,7 +1582,7 @@ From here you can create materials, listen for events and add bodies into the ph
    Source - - physics/p2/World.js, line 1916 + physics/p2/World.js, line 1919
    @@ -1638,7 +1638,7 @@ From here you can create materials, listen for events and add bodies into the ph
    Source - - physics/p2/World.js, line 1936 + physics/p2/World.js, line 1939
    @@ -1694,7 +1694,7 @@ From here you can create materials, listen for events and add bodies into the ph
    Source - - physics/p2/World.js, line 1896 + physics/p2/World.js, line 1899
    @@ -2037,7 +2037,7 @@ From here you can create materials, listen for events and add bodies into the ph
    Source - - physics/p2/World.js, line 1876 + physics/p2/World.js, line 1879
    @@ -2093,7 +2093,7 @@ From here you can create materials, listen for events and add bodies into the ph
    Source - - physics/p2/World.js, line 1991 + physics/p2/World.js, line 1994
    @@ -2261,7 +2261,7 @@ From here you can create materials, listen for events and add bodies into the ph
    Source - - physics/p2/World.js, line 1836 + physics/p2/World.js, line 1839
    @@ -3244,7 +3244,7 @@ in your own code to avoid processing potentially null physics bodies.

    Source - - physics/p2/World.js, line 1856 + physics/p2/World.js, line 1859
    @@ -3301,7 +3301,7 @@ If sleeping is enabled, you might need to wake up the bodies if they fall asleep
    Source - - physics/p2/World.js, line 2011 + physics/p2/World.js, line 2014
    @@ -3357,7 +3357,7 @@ If sleeping is enabled, you might need to wake up the bodies if they fall asleep
    Source - - physics/p2/World.js, line 1956 + physics/p2/World.js, line 1959
    @@ -3413,7 +3413,7 @@ If sleeping is enabled, you might need to wake up the bodies if they fall asleep
    Source - - physics/p2/World.js, line 1976 + physics/p2/World.js, line 1979
    @@ -3469,7 +3469,7 @@ If sleeping is enabled, you might need to wake up the bodies if they fall asleep
    Source - - physics/p2/World.js, line 2033 + physics/p2/World.js, line 2036
    @@ -3781,7 +3781,7 @@ If sleeping is enabled, you might need to wake up the bodies if they fall asleep
    Source - - physics/p2/World.js, line 884 + physics/p2/World.js, line 887
    @@ -3920,7 +3920,7 @@ If sleeping is enabled, you might need to wake up the bodies if they fall asleep
    Source - - physics/p2/World.js, line 1116 + physics/p2/World.js, line 1119
    @@ -4059,7 +4059,7 @@ If sleeping is enabled, you might need to wake up the bodies if they fall asleep
    Source - - physics/p2/World.js, line 1150 + physics/p2/World.js, line 1153
    @@ -4204,7 +4204,7 @@ If sleeping is enabled, you might need to wake up the bodies if they fall asleep
    Source - - physics/p2/World.js, line 928 + physics/p2/World.js, line 931
    @@ -4570,7 +4570,7 @@ If sleeping is enabled, you might need to wake up the bodies if they fall asleep
    Source - - physics/p2/World.js, line 1663 + physics/p2/World.js, line 1666
    @@ -4808,7 +4808,7 @@ Note that the polylines must be created in such a way that they can withstand po
    Source - - physics/p2/World.js, line 1622 + physics/p2/World.js, line 1625
    @@ -5087,7 +5087,7 @@ Therefore understand it's a very expensive operation and not to be done in a cor
    Source - - physics/p2/World.js, line 1685 + physics/p2/World.js, line 1688
    @@ -5576,7 +5576,7 @@ Therefore understand it's a very expensive operation and not to be done in a cor
    Source - - physics/p2/World.js, line 1539 + physics/p2/World.js, line 1542
    @@ -5711,7 +5711,7 @@ Collision Groups are handled using bitmasks, therefore you have a fixed limit yo
    Source - - physics/p2/World.js, line 1408 + physics/p2/World.js, line 1411
    @@ -5928,7 +5928,7 @@ Collision Groups are handled using bitmasks, therefore you have a fixed limit yo
    Source - - physics/p2/World.js, line 1243 + physics/p2/World.js, line 1246
    @@ -6250,7 +6250,7 @@ Collision Groups are handled using bitmasks, therefore you have a fixed limit yo
    Source - - physics/p2/World.js, line 976 + physics/p2/World.js, line 979
    @@ -6530,7 +6530,7 @@ Collision Groups are handled using bitmasks, therefore you have a fixed limit yo
    Source - - physics/p2/World.js, line 1004 + physics/p2/World.js, line 1007
    @@ -6845,7 +6845,7 @@ Collision Groups are handled using bitmasks, therefore you have a fixed limit yo
    Source - - physics/p2/World.js, line 1059 + physics/p2/World.js, line 1062
    @@ -7031,7 +7031,7 @@ Contact Materials have properties such as friction and restitution that allow fo
    Source - - physics/p2/World.js, line 1216 + physics/p2/World.js, line 1219
    @@ -7500,7 +7500,7 @@ Contact Materials have properties such as friction and restitution that allow fo
    Source - - physics/p2/World.js, line 1581 + physics/p2/World.js, line 1584
    @@ -7890,7 +7890,7 @@ See http://www.iforce2d.net/b2dtut/joints-prismatic

    Source - - physics/p2/World.js, line 1086 + physics/p2/World.js, line 1089
    @@ -8241,7 +8241,7 @@ The pivot points are given in world (pixel) coordinates.

    Source - - physics/p2/World.js, line 1030 + physics/p2/World.js, line 1033
    @@ -8558,7 +8558,7 @@ The pivot points are given in world (pixel) coordinates.

    Source - - physics/p2/World.js, line 1512 + physics/p2/World.js, line 1515
    @@ -9025,7 +9025,7 @@ The pivot points are given in world (pixel) coordinates.

    Source - - physics/p2/World.js, line 1481 + physics/p2/World.js, line 1484
    @@ -9095,7 +9095,7 @@ The pivot points are given in world (pixel) coordinates.

    Source - - physics/p2/World.js, line 871 + physics/p2/World.js, line 874
    @@ -9668,7 +9668,7 @@ A game object can only have 1 physics body active at any one time, and it can't
    Source - - physics/p2/World.js, line 1263 + physics/p2/World.js, line 1266
    @@ -9807,7 +9807,7 @@ A game object can only have 1 physics body active at any one time, and it can't
    Source - - physics/p2/World.js, line 1283 + physics/p2/World.js, line 1286
    @@ -9899,7 +9899,7 @@ PrismaticConstraints, RevoluteConstraints or any other valid p2 constraint type.
    Source - - physics/p2/World.js, line 1332 + physics/p2/World.js, line 1335
    @@ -10064,7 +10064,7 @@ PrismaticConstraints, RevoluteConstraints or any other valid p2 constraint type.
    Source - - physics/p2/World.js, line 1184 + physics/p2/World.js, line 1187
    @@ -10154,7 +10154,7 @@ PrismaticConstraints, RevoluteConstraints or any other valid p2 constraint type.
    Source - - physics/p2/World.js, line 1312 + physics/p2/World.js, line 1315
    @@ -10425,7 +10425,7 @@ PrismaticConstraints, RevoluteConstraints or any other valid p2 constraint type.
    Source - - physics/p2/World.js, line 1354 + physics/p2/World.js, line 1357
    @@ -10566,7 +10566,7 @@ If you need to modify this you can over-ride these functions via the Physics Con
    Source - - physics/p2/World.js, line 1774 + physics/p2/World.js, line 1777
    @@ -10707,7 +10707,7 @@ If you need to modify this you can over-ride these functions via the Physics Con
    Source - - physics/p2/World.js, line 1804 + physics/p2/World.js, line 1807
    @@ -10988,7 +10988,7 @@ If you need to modify this you can over-ride these functions via the Physics Con
    Source - - physics/p2/World.js, line 1789 + physics/p2/World.js, line 1792
    @@ -11129,7 +11129,7 @@ If you need to modify this you can over-ride these functions via the Physics Con
    Source - - physics/p2/World.js, line 1819 + physics/p2/World.js, line 1822
    @@ -11268,7 +11268,7 @@ If you need to modify this you can over-ride these functions via the Physics Con
    Source - - physics/p2/World.js, line 908 + physics/p2/World.js, line 911
    @@ -11526,7 +11526,7 @@ If you need to modify this you can over-ride these functions via the Physics Con
    Source - - physics/p2/World.js, line 1133 + physics/p2/World.js, line 1136
    @@ -11665,7 +11665,7 @@ If you need to modify this you can over-ride these functions via the Physics Con
    Source - - physics/p2/World.js, line 1167 + physics/p2/World.js, line 1170
    @@ -11804,7 +11804,7 @@ If you need to modify this you can over-ride these functions via the Physics Con
    Source - - physics/p2/World.js, line 952 + physics/p2/World.js, line 955
    @@ -12647,7 +12647,7 @@ In a busy world hundreds of impact events can be generated every step, so only e
    Source - - physics/p2/World.js, line 1198 + physics/p2/World.js, line 1201
    @@ -12882,7 +12882,7 @@ Returning true from the callback will ensure they are checked in th
    Source - - physics/p2/World.js, line 1396 + physics/p2/World.js, line 1399
    @@ -13142,7 +13142,7 @@ To fix this you need to adjust the bounds to use its own collision group first B Documentation generated by JSDoc 3.3.3 - on Fri Jun 17 2016 12:45:36 GMT+0100 (BST) using the DocStrap template. + on Fri Jul 08 2016 15:42:41 GMT+0100 (GMT Daylight Time) using the DocStrap template. diff --git a/docs/Phaser.Physics.html b/docs/Phaser.Physics.html index ede3f7727..8764b2da9 100644 --- a/docs/Phaser.Physics.html +++ b/docs/Phaser.Physics.html @@ -708,10 +708,6 @@ ComplexPrimitiveShader -
  • - DisplayObject -
  • -
  • DisplayObjectContainer
  • @@ -744,6 +740,10 @@ PIXI +
  • + DisplayObject +
  • +
  • PixiFastShader
  • @@ -2821,6 +2821,83 @@ individual physics systems enable methods instead of using this gen +
    + + + +
    +

    <internal> setBoundsToWorld()

    + + +
    +
    + + + +
    +

    Updates the physics bounds to match the world dimensions.

    +
    + + + + + + + + + + + +
    + + + + + + + + + +
    Internal:
    +
      + +
    • This member is internal (protected) and may be modified or removed in the future.
    • + +
    + + + + + + + + + + + +
    Source - + physics/Physics.js, line 314 +
    + + + + + + + +
    + + + + + + + + + + +
    @@ -3117,83 +3194,6 @@ You can optionally set which 'walls' to create: left, right, top or bottom.

    - - - - -
    -

    <internal> setBoundsToWorld()

    - - -
    -
    - - - -
    -

    Updates the physics bounds to match the world dimensions.

    -
    - - - - - - - - - - - -
    - - - - - - - - - -
    Internal:
    -
      - -
    • This member is internal (protected) and may be modified or removed in the future.
    • - -
    - - - - - - - - - - - -
    Source - - physics/Physics.js, line 314 -
    - - - - - - - -
    - - - - - - - - - - -
    @@ -3719,7 +3719,7 @@ then set Phaser.Physics.p2 (or whichever system you want to recreate) to n Documentation generated by JSDoc 3.3.3 - on Fri Jun 17 2016 12:45:35 GMT+0100 (BST) using the DocStrap template. + on Fri Jul 08 2016 15:42:40 GMT+0100 (GMT Daylight Time) using the DocStrap template. diff --git a/docs/Phaser.Plugin.html b/docs/Phaser.Plugin.html index c8bf6d71c..00b02efe8 100644 --- a/docs/Phaser.Plugin.html +++ b/docs/Phaser.Plugin.html @@ -708,10 +708,6 @@ ComplexPrimitiveShader -
  • - DisplayObject -
  • -
  • DisplayObjectContainer
  • @@ -744,6 +740,10 @@ PIXI +
  • + DisplayObject +
  • +
  • PixiFastShader
  • @@ -2284,7 +2284,7 @@ It is only called if active is set to true.

    Documentation generated by JSDoc 3.3.3 - on Fri Jun 17 2016 12:45:37 GMT+0100 (BST) using the DocStrap template. + on Fri Jul 08 2016 15:42:42 GMT+0100 (GMT Daylight Time) using the DocStrap template. diff --git a/docs/Phaser.PluginManager.html b/docs/Phaser.PluginManager.html index 4d79445c6..1781c91dc 100644 --- a/docs/Phaser.PluginManager.html +++ b/docs/Phaser.PluginManager.html @@ -708,10 +708,6 @@ ComplexPrimitiveShader -
  • - DisplayObject -
  • -
  • DisplayObjectContainer
  • @@ -744,6 +740,10 @@ PIXI +
  • + DisplayObject +
  • +
  • PixiFastShader
  • @@ -2381,7 +2381,7 @@ It only calls plugins who have active=true.

    Documentation generated by JSDoc 3.3.3 - on Fri Jun 17 2016 12:45:37 GMT+0100 (BST) using the DocStrap template. + on Fri Jul 08 2016 15:42:42 GMT+0100 (GMT Daylight Time) using the DocStrap template. diff --git a/docs/Phaser.Point.html b/docs/Phaser.Point.html index d3a42765a..a13e20087 100644 --- a/docs/Phaser.Point.html +++ b/docs/Phaser.Point.html @@ -708,10 +708,6 @@ ComplexPrimitiveShader -
  • - DisplayObject -
  • -
  • DisplayObjectContainer
  • @@ -744,6 +740,10 @@ PIXI +
  • + DisplayObject +
  • +
  • PixiFastShader
  • @@ -9778,7 +9778,7 @@ If you omit the y value then the x value will be appli Documentation generated by JSDoc 3.3.3 - on Fri Jun 17 2016 12:45:37 GMT+0100 (BST) using the DocStrap template. + on Fri Jul 08 2016 15:42:42 GMT+0100 (GMT Daylight Time) using the DocStrap template. diff --git a/docs/Phaser.Pointer.html b/docs/Phaser.Pointer.html index 50a73e8a2..27d465ed4 100644 --- a/docs/Phaser.Pointer.html +++ b/docs/Phaser.Pointer.html @@ -708,10 +708,6 @@ ComplexPrimitiveShader -
  • - DisplayObject -
  • -
  • DisplayObjectContainer
  • @@ -744,6 +740,10 @@ PIXI +
  • + DisplayObject +
  • +
  • PixiFastShader
  • @@ -6343,7 +6343,7 @@ Contains a button bitmask.

    Documentation generated by JSDoc 3.3.3 - on Fri Jun 17 2016 12:45:37 GMT+0100 (BST) using the DocStrap template. + on Fri Jul 08 2016 15:42:42 GMT+0100 (GMT Daylight Time) using the DocStrap template. diff --git a/docs/Phaser.PointerMode.html b/docs/Phaser.PointerMode.html index 15170b705..f5ef38a44 100644 --- a/docs/Phaser.PointerMode.html +++ b/docs/Phaser.PointerMode.html @@ -708,10 +708,6 @@ ComplexPrimitiveShader -
  • - DisplayObject -
  • -
  • DisplayObjectContainer
  • @@ -744,6 +740,10 @@ PIXI +
  • + DisplayObject +
  • +
  • PixiFastShader
  • @@ -1468,7 +1468,7 @@ This currently corresponds with Phaser.Poi Documentation generated by JSDoc 3.3.3 - on Fri Jun 17 2016 12:45:37 GMT+0100 (BST) using the DocStrap template. + on Fri Jul 08 2016 15:42:42 GMT+0100 (GMT Daylight Time) using the DocStrap template. diff --git a/docs/Phaser.Polygon.html b/docs/Phaser.Polygon.html index b347dccb0..91921fabf 100644 --- a/docs/Phaser.Polygon.html +++ b/docs/Phaser.Polygon.html @@ -708,10 +708,6 @@ ComplexPrimitiveShader -
  • - DisplayObject -
  • -
  • DisplayObjectContainer
  • @@ -744,6 +740,10 @@ PIXI +
  • + DisplayObject +
  • +
  • PixiFastShader
  • @@ -1495,6 +1495,62 @@ + + + + + + + + +
    +

    flattened :boolean

    + + +
    +
    + + + +
    +

    Has this Polygon been flattened by a call to Polygon.flatten ?

    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + +
    Source - + geom/Polygon.js, line 50 +
    + + + + + + +
    @@ -1564,7 +1620,7 @@
    Source - - geom/Polygon.js, line 266 + geom/Polygon.js, line 294
    @@ -1620,7 +1676,7 @@
    Source - - geom/Polygon.js, line 50 + geom/Polygon.js, line 55
    @@ -1778,7 +1834,7 @@ This is a deep clone, the resulting copy contains new Phaser.Point objects

    Source - - geom/Polygon.js, line 100 + geom/Polygon.js, line 109
    @@ -1940,7 +1996,7 @@ This is a deep clone, the resulting copy contains new Phaser.Point objects

    Source - - geom/Polygon.js, line 125 + geom/Polygon.js, line 134
    @@ -1976,7 +2032,9 @@ This is a deep clone, the resulting copy contains new Phaser.Point objects

    -

    Flattens this Polygon so the points are a sequence of numbers. Any Point objects found are removed and replaced with two numbers.

    +

    Flattens this Polygon so the points are a sequence of numbers. +Any Point objects found are removed and replaced with two numbers. +Also sets the Polygon.flattened property to true.

    @@ -2030,7 +2088,7 @@ This is a deep clone, the resulting copy contains new Phaser.Point objects

    Source - - geom/Polygon.js, line 86 + geom/Polygon.js, line 91
    @@ -2189,7 +2247,7 @@ This is a deep clone, the resulting copy contains new Phaser.Point objects

    Source - - geom/Polygon.js, line 158 + geom/Polygon.js, line 186
    @@ -2340,7 +2398,7 @@ This is a deep clone, the resulting copy contains new Phaser.Point objects

    Source - - geom/Polygon.js, line 56 + geom/Polygon.js, line 61
    @@ -2389,7 +2447,7 @@ This is a deep clone, the resulting copy contains new Phaser.Point objects

    Documentation generated by JSDoc 3.3.3 - on Fri Jun 17 2016 12:45:37 GMT+0100 (BST) using the DocStrap template. + on Fri Jul 08 2016 15:42:42 GMT+0100 (GMT Daylight Time) using the DocStrap template. diff --git a/docs/Phaser.QuadTree.html b/docs/Phaser.QuadTree.html index 8cb4da973..8ab8c61f7 100644 --- a/docs/Phaser.QuadTree.html +++ b/docs/Phaser.QuadTree.html @@ -708,10 +708,6 @@ ComplexPrimitiveShader -
  • - DisplayObject -
  • -
  • DisplayObjectContainer
  • @@ -744,6 +740,10 @@ PIXI +
  • + DisplayObject +
  • +
  • PixiFastShader
  • @@ -3131,7 +3131,7 @@ Original version at https://github.com/timohausmann/quadtree-js/

    Documentation generated by JSDoc 3.3.3 - on Fri Jun 17 2016 12:45:37 GMT+0100 (BST) using the DocStrap template. + on Fri Jul 08 2016 15:42:42 GMT+0100 (GMT Daylight Time) using the DocStrap template. diff --git a/docs/Phaser.RandomDataGenerator.html b/docs/Phaser.RandomDataGenerator.html index 91b701f00..db502175d 100644 --- a/docs/Phaser.RandomDataGenerator.html +++ b/docs/Phaser.RandomDataGenerator.html @@ -708,10 +708,6 @@ ComplexPrimitiveShader -
  • - DisplayObject -
  • -
  • DisplayObjectContainer
  • @@ -744,6 +740,10 @@ PIXI +
  • + DisplayObject +
  • +
  • PixiFastShader
  • @@ -3256,7 +3256,7 @@ returns, which is a string with a header !rnd followed by the Documentation generated by JSDoc 3.3.3 - on Fri Jun 17 2016 12:45:37 GMT+0100 (BST) using the DocStrap template. + on Fri Jul 08 2016 15:42:42 GMT+0100 (GMT Daylight Time) using the DocStrap template. diff --git a/docs/Phaser.Rectangle.html b/docs/Phaser.Rectangle.html index 0b88ea0dd..14989f5cd 100644 --- a/docs/Phaser.Rectangle.html +++ b/docs/Phaser.Rectangle.html @@ -708,10 +708,6 @@ ComplexPrimitiveShader -
  • - DisplayObject -
  • -
  • DisplayObjectContainer
  • @@ -744,6 +740,10 @@ PIXI +
  • + DisplayObject +
  • +
  • PixiFastShader
  • @@ -9139,7 +9139,7 @@ The x and y positions remain unchanged.

    Documentation generated by JSDoc 3.3.3 - on Fri Jun 17 2016 12:45:37 GMT+0100 (BST) using the DocStrap template. + on Fri Jul 08 2016 15:42:42 GMT+0100 (GMT Daylight Time) using the DocStrap template. diff --git a/docs/Phaser.RenderTexture.html b/docs/Phaser.RenderTexture.html index 806fa0a6e..d8f6edccc 100644 --- a/docs/Phaser.RenderTexture.html +++ b/docs/Phaser.RenderTexture.html @@ -708,10 +708,6 @@ ComplexPrimitiveShader -
  • - DisplayObject -
  • -
  • DisplayObjectContainer
  • @@ -744,6 +740,10 @@ PIXI +
  • + DisplayObject +
  • +
  • PixiFastShader
  • @@ -1971,7 +1971,7 @@ irrespective of the actual frame size or placement (which can be influenced by t
    Source - - pixi/textures/Texture.js, line 84 + pixi/textures/Texture.js, line 79
    @@ -2088,7 +2088,7 @@ irrespective of the actual frame size or placement (which can be influenced by t
    Source - - pixi/textures/Texture.js, line 33 + pixi/textures/Texture.js, line 28
    @@ -2223,7 +2223,7 @@ irrespective of the actual frame size or placement (which can be influenced by t
    Source - - pixi/textures/Texture.js, line 100 + pixi/textures/Texture.js, line 95
    @@ -2284,7 +2284,7 @@ irrespective of the actual frame size or placement (which can be influenced by t
    Source - - pixi/textures/Texture.js, line 92 + pixi/textures/Texture.js, line 87
    @@ -2406,7 +2406,7 @@ irrespective of the actual frame size or placement (which can be influenced by t
    Source - - pixi/textures/Texture.js, line 68 + pixi/textures/Texture.js, line 63
    @@ -2777,7 +2777,7 @@ irrespective of the actual frame size or placement (which can be influenced by t
    Source - - pixi/textures/Texture.js, line 170 + pixi/textures/Texture.js, line 165
    @@ -4100,7 +4100,7 @@ pass null, leave it undefined or pass displayObject.worldTran
    Source - - pixi/textures/Texture.js, line 183 + pixi/textures/Texture.js, line 178
    @@ -4149,7 +4149,7 @@ pass null, leave it undefined or pass displayObject.worldTran Documentation generated by JSDoc 3.3.3 - on Fri Jun 17 2016 12:45:37 GMT+0100 (BST) using the DocStrap template. + on Fri Jul 08 2016 15:42:42 GMT+0100 (GMT Daylight Time) using the DocStrap template. diff --git a/docs/Phaser.RequestAnimationFrame.html b/docs/Phaser.RequestAnimationFrame.html index eb8c852dc..17745f84a 100644 --- a/docs/Phaser.RequestAnimationFrame.html +++ b/docs/Phaser.RequestAnimationFrame.html @@ -708,10 +708,6 @@ ComplexPrimitiveShader -
  • - DisplayObject -
  • -
  • DisplayObjectContainer
  • @@ -744,6 +740,10 @@ PIXI +
  • + DisplayObject +
  • +
  • PixiFastShader
  • @@ -2086,7 +2086,7 @@ Documentation generated by JSDoc 3.3.3 - on Fri Jun 17 2016 12:45:37 GMT+0100 (BST) using the DocStrap template. + on Fri Jul 08 2016 15:42:42 GMT+0100 (GMT Daylight Time) using the DocStrap template. diff --git a/docs/Phaser.RetroFont.html b/docs/Phaser.RetroFont.html index d83d25752..bf1c24422 100644 --- a/docs/Phaser.RetroFont.html +++ b/docs/Phaser.RetroFont.html @@ -708,10 +708,6 @@ ComplexPrimitiveShader -
  • - DisplayObject -
  • -
  • DisplayObjectContainer
  • @@ -744,6 +740,10 @@ PIXI +
  • + DisplayObject +
  • +
  • PixiFastShader
  • @@ -3539,7 +3539,7 @@ If text is wider than the width specified it will be cropped off.

    Source - - pixi/textures/Texture.js, line 84 + pixi/textures/Texture.js, line 79
    @@ -3717,7 +3717,7 @@ If text is wider than the width specified it will be cropped off.

    Source - - pixi/textures/Texture.js, line 33 + pixi/textures/Texture.js, line 28
    @@ -3964,7 +3964,7 @@ If text is wider than the width specified it will be cropped off.

    Source - - pixi/textures/Texture.js, line 100 + pixi/textures/Texture.js, line 95
    @@ -4025,7 +4025,7 @@ If text is wider than the width specified it will be cropped off.

    Source - - pixi/textures/Texture.js, line 92 + pixi/textures/Texture.js, line 87
    @@ -4315,7 +4315,7 @@ If text is wider than the width specified it will be cropped off.

    Source - - pixi/textures/Texture.js, line 68 + pixi/textures/Texture.js, line 63
    @@ -4756,7 +4756,7 @@ If text is wider than the width specified it will be cropped off.

    Source - - pixi/textures/Texture.js, line 170 + pixi/textures/Texture.js, line 165
    @@ -6714,7 +6714,7 @@ If text is wider than the width specified it will be cropped off.

    Source - - pixi/textures/Texture.js, line 183 + pixi/textures/Texture.js, line 178
    @@ -7273,7 +7273,7 @@ So if the current offsetY is 8 and you want it to start rendering from y16 you w Documentation generated by JSDoc 3.3.3 - on Fri Jun 17 2016 12:45:38 GMT+0100 (BST) using the DocStrap template. + on Fri Jul 08 2016 15:42:42 GMT+0100 (GMT Daylight Time) using the DocStrap template. diff --git a/docs/Phaser.Rope.html b/docs/Phaser.Rope.html index 4e4d888b7..b0b9568eb 100644 --- a/docs/Phaser.Rope.html +++ b/docs/Phaser.Rope.html @@ -708,10 +708,6 @@ ComplexPrimitiveShader -
  • - DisplayObject -
  • -
  • DisplayObjectContainer
  • @@ -744,6 +740,10 @@ PIXI +
  • + DisplayObject +
  • +
  • PixiFastShader
  • @@ -1604,67 +1604,6 @@ However you can use Group.getFirstAlive in conjunction with this pr - - - - - - - - -
    -

    alpha :Number

    - - -
    -
    - - - -
    -

    The opacity of the object.

    -
    - - - - - -
    - - - - - - - -
    Inherited From:
    -
    - - - - - - - - - - - - - -
    Source - - pixi/display/DisplayObject.js, line 46 -
    - - - - - - -
    @@ -2079,69 +2018,6 @@ This is the same as y + height - offsetY.

    - - - - -
    - - - -
    -

    cacheAsBitmap :Boolean

    - - -
    -
    - - - -
    -

    Set if this display object is cached as a bitmap. -This basically takes a snap shot of the display object as it is at that moment. It can provide a performance benefit for complex static displayObjects. -To remove simply set this property to 'null'

    -
    - - - - - -
    - - - - - - - -
    Inherited From:
    -
    - - - - - - - - - - - - - -
    Source - - pixi/display/DisplayObject.js, line 355 -
    - - - - - - -
    @@ -3229,143 +3105,6 @@ It will also set the visible property to true.

    - - - - -
    - - - -
    -

    filterArea :Rectangle

    - - -
    -
    - - - -
    -

    The area the filter is applied to like the hitArea this is used as more of an optimisation -rather than figuring out the dimensions of the displayObject each frame you can set this rectangle

    -
    - - - - - -
    - - - - - - - -
    Inherited From:
    -
    - - - - - - - - - - - - - -
    Source - - pixi/display/DisplayObject.js, line 164 -
    - - - - - - - -
    - - - -
    - - - -
    -

    filters :Array.<Filter>

    - - -
    -
    - - - -
    -

    Sets the filters for the displayObject. -IMPORTANT: This is a webGL only feature and will be ignored by the Canvas renderer.

    -

    To remove filters simply set this property to 'null'.

    -

    You cannot have a filter and a multiply blend mode active at the same time. Setting a filter will reset -this objects blend mode to NORMAL.

    -
    - - - -
    Type:
    -
      -
    • - -Array.<Filter> - - -
    • -
    - - - -
    - - - - - - - -
    Inherited From:
    -
    - - - - - - - - - - - - - -
    Source - - pixi/display/DisplayObject.js, line 307 -
    - - - - - - -
    @@ -3750,87 +3489,6 @@ This property is mostly used internally by the physics systems, but is exposed f - - - - -
    - - - -
    -

    hitArea :Rectangle|Circle|Ellipse|Polygon

    - - -
    -
    - - - -
    -

    This is the defined area that will pick up mouse / touch events. It is null by default. -Setting it is a neat way of optimising the hitTest function that the interactionManager will use (as it will not need to hit test all the children)

    -
    - - - -
    Type:
    -
      -
    • - -Rectangle -| - -Circle -| - -Ellipse -| - -Polygon - - -
    • -
    - - - -
    - - - - - - - -
    Inherited From:
    -
    - - - - - - - - - - - - - -
    Source - - pixi/display/DisplayObject.js, line 62 -
    - - - - - - -
    @@ -4231,69 +3889,6 @@ When it reaches zero it will call the kill method.

    - - - - -
    - - - -
    -

    mask :PIXI.Graphics

    - - -
    -
    - - - -
    -

    Sets a mask for the displayObject. A mask is an object that limits the visibility of an object to the shape of the mask applied to it. -In PIXI a regular mask must be a PIXI.Graphics object. This allows for much faster masking in canvas as it utilises shape clipping. -To remove a mask, set this property to null.

    -
    - - - - - -
    - - - - - - - -
    Inherited From:
    -
    - - - - - - - - - - - - - -
    Source - - pixi/display/DisplayObject.js, line 282 -
    - - - - - - -
    @@ -4605,67 +4200,6 @@ is called as soon as the Game Object leaves the camera bounds.

    - - - - -
    - - - -
    -

    <readonly> parent :PIXI.DisplayObjectContainer

    - - -
    -
    - - - -
    -

    [read-only] The display object container that contains this display object.

    -
    - - - - - -
    - - - - - - - -
    Inherited From:
    -
    - - - - - - - - - - - - - -
    Source - - pixi/display/DisplayObject.js, line 79 -
    - - - - - - -
    @@ -4730,128 +4264,6 @@ such as with Buttons or other Input events.

    - - - - -
    - - - -
    -

    pivot :Point

    - - -
    -
    - - - -
    -

    The pivot point of the displayObject that it rotates around

    -
    - - - - - -
    - - - - - - - -
    Inherited From:
    -
    - - - - - - - - - - - - - -
    Source - - pixi/display/DisplayObject.js, line 30 -
    - - - - - - - -
    - - - -
    - - - -
    -

    position :Point

    - - -
    -
    - - - -
    -

    The coordinate of the object relative to the local coordinates of the parent.

    -
    - - - - - -
    - - - - - - - -
    Inherited From:
    -
    - - - - - - - - - - - - - -
    Source - - pixi/display/DisplayObject.js, line 14 -
    - - - - - - -
    @@ -4974,67 +4386,6 @@ such as with Buttons or other Input events.

    - - - - -
    - - - -
    -

    renderable :Boolean

    - - -
    -
    - - - -
    -

    Can this object be rendered

    -
    - - - - - -
    - - - - - - - -
    Inherited From:
    -
    - - - - - - - - - - - - - -
    Source - - pixi/display/DisplayObject.js, line 71 -
    - - - - - - -
    @@ -5159,128 +4510,6 @@ This is the same as x + width - offsetX.

    - - - - -
    - - - -
    -

    rotation :Number

    - - -
    -
    - - - -
    -

    The rotation of the object in radians.

    -
    - - - - - -
    - - - - - - - -
    Inherited From:
    -
    - - - - - - - - - - - - - -
    Source - - pixi/display/DisplayObject.js, line 38 -
    - - - - - - - -
    - - - -
    - - - -
    -

    scale :Point

    - - -
    -
    - - - -
    -

    The scale factor of the object.

    -
    - - - - - -
    - - - - - - - -
    Inherited From:
    -
    - - - - - - - - - - - - - -
    Source - - pixi/display/DisplayObject.js, line 22 -
    - - - - - - -
    @@ -5578,67 +4807,6 @@ This is the same as x + width - offsetX.

    - - - - -
    - - - -
    -

    <readonly> stage :Stage

    - - -
    -
    - - - -
    -

    [read-only] The stage the display object is connected to, or undefined if it is not connected to the stage.

    -
    - - - - - -
    - - - - - - - -
    Inherited From:
    -
    - - - - - - - - - - - - - -
    Source - - pixi/display/DisplayObject.js, line 88 -
    - - - - - - -
    @@ -5996,67 +5164,6 @@ This is the same as y - offsetY.

    - - - - -
    - - - -
    -

    visible :Boolean

    - - -
    -
    - - - -
    -

    The visibility of the object.

    -
    - - - - - -
    - - - - - - - -
    Inherited From:
    -
    - - - - - - - - - - - - - -
    Source - - pixi/display/DisplayObject.js, line 54 -
    - - - - - - -
    @@ -6191,7 +5298,7 @@ which contains the x/y coordinates relative to the Game Objects parent.

    <readonly> worldAlpha :Number

    + id="x">x :number
    @@ -6200,7 +5307,7 @@ which contains the x/y coordinates relative to the Game Objects parent.

    -

    [read-only] The multiplied alpha of the displayObject

    +

    The position of the Game Object on the x axis relative to the local coordinates of the parent.

    @@ -6217,7 +5324,7 @@ which contains the x/y coordinates relative to the Game Objects parent.

    Inherited From:
    @@ -6233,7 +5340,7 @@ which contains the x/y coordinates relative to the Game Objects parent.

    Source - - pixi/display/DisplayObject.js, line 97 + gameobjects/components/PhysicsBody.js, line 98
    @@ -6252,7 +5359,7 @@ which contains the x/y coordinates relative to the Game Objects parent.

    <readonly> worldPosition :Point

    + id="y">y :number
    @@ -6261,8 +5368,7 @@ which contains the x/y coordinates relative to the Game Objects parent.

    -

    The position of the Display Object based on the world transform. -This value is updated at the end of updateTransform and takes all parent transforms into account.

    +

    The position of the Game Object on the y axis relative to the local coordinates of the parent.

    @@ -6279,7 +5385,7 @@ This value is updated at the end of updateTransform and takes all parent transfo
    Inherited From:
    @@ -6295,314 +5401,7 @@ This value is updated at the end of updateTransform and takes all parent transfo
    Source - - pixi/display/DisplayObject.js, line 116 -
    - - - - - - - - - - - - - - - -
    -

    <readonly> worldRotation :Number

    - - -
    -
    - - - -
    -

    The rotation of the Display Object, in radians, based on the world transform. -This value is updated at the end of updateTransform and takes all parent transforms into account.

    -
    - - - - - -
    - - - - - - - -
    Inherited From:
    -
    - - - - - - - - - - - - - -
    Source - - pixi/display/DisplayObject.js, line 136 -
    - - - - - - - -
    - - - -
    - - - -
    -

    <readonly> worldScale :Point

    - - -
    -
    - - - -
    -

    The scale of the Display Object based on the world transform. -This value is updated at the end of updateTransform and takes all parent transforms into account.

    -
    - - - - - -
    - - - - - - - -
    Inherited From:
    -
    - - - - - - - - - - - - - -
    Source - - pixi/display/DisplayObject.js, line 126 -
    - - - - - - - -
    - - - -
    - - - -
    -

    worldVisible :Boolean

    - - -
    -
    - - - -
    -

    [read-only] Indicates if the sprite is globally visible.

    -
    - - - - - -
    - - - - - - - -
    Inherited From:
    -
    - - - - - - - - - - - - - -
    Source - - pixi/display/DisplayObject.js, line 258 -
    - - - - - - - -
    - - - -
    - - - -
    -

    x :Number

    - - -
    -
    - - - -
    -

    The position of the displayObject on the x axis relative to the local coordinates of the parent.

    -
    - - - - - -
    - - - - - - - -
    Inherited From:
    -
    - - - - - - - - - - - - - -
    Source - - pixi/display/DisplayObject.js, line 722 -
    - - - - - - - -
    - - - -
    - - - -
    -

    y :Number

    - - -
    -
    - - - -
    -

    The position of the displayObject on the y axis relative to the local coordinates of the parent.

    -
    - - - - - -
    - - - - - - - -
    Inherited From:
    -
    - - - - - - - - - - - - - -
    Source - - pixi/display/DisplayObject.js, line 740 + gameobjects/components/PhysicsBody.js, line 124
    @@ -6691,7 +5490,7 @@ If you wish to re-order the layering of a Game Object then see methods like Grou

    addChild(child) → {PIXI.DisplayObject}

    + id="addChild">addChild(child) → {DisplayObject}
    @@ -6740,7 +5539,7 @@ If you wish to re-order the layering of a Game Object then see methods like Grou -PIXI.DisplayObject +DisplayObject @@ -6767,7 +5566,7 @@ If you wish to re-order the layering of a Game Object then see methods like Grou @@ -6835,7 +5634,7 @@ If you wish to re-order the layering of a Game Object then see methods like Grou

    addChildAt(child, index) → {PIXI.DisplayObject}

    + id="addChildAt">addChildAt(child, index) → {DisplayObject}
    @@ -6884,7 +5683,7 @@ If you wish to re-order the layering of a Game Object then see methods like Grou -PIXI.DisplayObject +DisplayObject @@ -6934,7 +5733,7 @@ If you wish to re-order the layering of a Game Object then see methods like Grou @@ -7637,7 +6436,7 @@ one expands it.

    bringToTop() → {PIXI.DisplayObject}

    + id="bringToTop">bringToTop() → {PIXI.DisplayObject}
    @@ -7667,7 +6466,7 @@ because the World is the root Group from which all Game Objects descend.

    -PIXI.DisplayObject +PIXI.DisplayObject -
    @@ -7921,7 +6720,7 @@ in which case the values are duplicated to a local object.

    destroy()

    + id="destroy">destroy(destroyChildren, destroyTexture)
    @@ -7930,84 +6729,11 @@ in which case the values are duplicated to a local object.

    -

    Destroy this DisplayObject. -Removes all references to transformCallbacks, its parent, the stage, filters, bounds, mask and cached Sprites.

    -
    - - - - - - - - - - - -
    - - - - - - - -
    Inherited From:
    -
    - - - - - - - - - - - - - -
    Source - - pixi/display/DisplayObject.js, line 223 -
    - - - - - - - -
    - - - - - - - - - - - -
    - - - -
    -

    generateTexture(resolution, scaleMode, renderer) → {PIXI.RenderTexture}

    - - -
    -
    - - - -
    -

    Useful function that returns a texture of the displayObject object that can then be used to create sprites -This can be quite useful if your displayObject is static / complicated and needs to be reused multiple times.

    +

    Destroys the Game Object. This removes it from its parent group, destroys the input, event and animation handlers if present +and nulls its reference to game, freeing it up for garbage collection.

    +

    If this Game Object has the Events component it will also dispatch the onDestroy event.

    +

    You can optionally also destroy the BaseTexture this Game Object is using. Be careful if you've +more than one Game Object sharing the same BaseTexture.

    @@ -8029,8 +6755,12 @@ This can be quite useful if your displayObject is static / complicated and needs Type + Argument + + Default + Description @@ -8041,72 +6771,78 @@ This can be quite useful if your displayObject is static / complicated and needs - resolution + destroyChildren -Number +boolean + + + <optional>
    + + + + + -

    The resolution of the texture being generated

    + + + + true + + + + +

    Should every child of this object have its destroy method called as well?

    - scaleMode + destroyTexture -Number +boolean - - - -

    See {{#crossLink "PIXI/scaleModes:property"}}PIXI.scaleModes{{/crossLink}} for possible values

    - - - - - - - renderer - - - - + + + <optional>
    -PIXI.CanvasRenderer -| -PIXI.WebGLRenderer - - - - + + + + + + false + + + -

    The renderer used to generate the texture.

    +

    Destroy the BaseTexture this Game Object is using? Note that if another Game Object is sharing the same BaseTexture it will invalidate it.

    @@ -8116,26 +6852,6 @@ This can be quite useful if your displayObject is static / complicated and needs -
    Returns:
    -
    - - - -
    - -PIXI.RenderTexture - - - -
    - -
    -

    a texture of the graphics object

    -
    - - - -
    -
    @@ -8148,7 +6864,7 @@ This can be quite useful if your displayObject is static / complicated and needs
    Inherited From:
    @@ -8164,7 +6880,7 @@ This can be quite useful if your displayObject is static / complicated and needs
    Source - - pixi/display/DisplayObject.js, line 541 + gameobjects/components/Destroy.js, line 37
    @@ -8335,7 +7051,7 @@ This can be quite useful if your displayObject is static / complicated and needs

    getChildAt(index) → {PIXI.DisplayObject}

    + id="getChildAt">getChildAt(index) → {DisplayObject}
    @@ -8411,7 +7127,7 @@ This can be quite useful if your displayObject is static / complicated and needs @@ -8528,7 +7244,7 @@ This can be quite useful if your displayObject is static / complicated and needs -PIXI.DisplayObject +DisplayObject @@ -8691,7 +7407,7 @@ This can be quite useful if your displayObject is static / complicated and needs
    Source - - pixi/display/DisplayObjectContainer.js, line 381 + pixi/display/DisplayObjectContainer.js, line 383
    @@ -8718,7 +7434,7 @@ This can be quite useful if your displayObject is static / complicated and needs

    kill() → {PIXI.DisplayObject}

    + id="kill">kill() → {PIXI.DisplayObject}
    @@ -8749,7 +7465,7 @@ it doesn't destroy the object or free it up from memory.

    -PIXI.DisplayObject +PIXI.DisplayObject -
    @@ -9057,7 +7773,7 @@ and swapping it to be the key of the atlas data.

    moveDown() → {PIXI.DisplayObject}

    + id="moveDown">moveDown() → {PIXI.DisplayObject}
    @@ -9087,7 +7803,7 @@ because the World is the root Group from which all Game Objects descend.

    -PIXI.DisplayObject +PIXI.DisplayObject -
    @@ -9155,7 +7871,7 @@ because the World is the root Group from which all Game Objects descend.

    moveUp() → {PIXI.DisplayObject}

    + id="moveUp">moveUp() → {PIXI.DisplayObject}
    @@ -9185,7 +7901,7 @@ because the World is the root Group from which all Game Objects descend.

    -PIXI.DisplayObject +PIXI.DisplayObject -
    @@ -9318,7 +8034,7 @@ It should be fine for low-volume testing where physics isn't required.

    Phaser.Button | -PIXI.DisplayObject +PIXI.DisplayObject @@ -9845,7 +8561,7 @@ If you need to reset an already running animation do so directly on the Animatio

    removeChild(child) → {PIXI.DisplayObject}

    + id="removeChild">removeChild(child) → {DisplayObject}
    @@ -9894,7 +8610,7 @@ If you need to reset an already running animation do so directly on the Animatio -PIXI.DisplayObject +DisplayObject @@ -9921,7 +8637,7 @@ If you need to reset an already running animation do so directly on the Animatio @@ -9989,7 +8705,7 @@ If you need to reset an already running animation do so directly on the Animatio

    removeChildAt(index) → {PIXI.DisplayObject}

    + id="removeChildAt">removeChildAt(index) → {DisplayObject}
    @@ -10065,7 +8781,7 @@ If you need to reset an already running animation do so directly on the Animatio @@ -10328,7 +9044,7 @@ If you need to reset an already running animation do so directly on the Animatio
    Source - - pixi/display/DisplayObjectContainer.js, line 426 + pixi/display/DisplayObjectContainer.js, line 428
    @@ -10766,7 +9482,7 @@ it can be useful to adjust the dimensions directly in this way.

    revive(health) → {PIXI.DisplayObject}

    + id="revive">revive(health) → {PIXI.DisplayObject}
    @@ -10864,7 +9580,7 @@ it can be useful to adjust the dimensions directly in this way.

    -PIXI.DisplayObject +PIXI.DisplayObject -
    @@ -10932,7 +9648,7 @@ it can be useful to adjust the dimensions directly in this way.

    sendToBack() → {PIXI.DisplayObject}

    + id="sendToBack">sendToBack() → {PIXI.DisplayObject}
    @@ -10962,7 +9678,7 @@ because the World is the root Group from which all Game Objects descend.

    -PIXI.DisplayObject +PIXI.DisplayObject -
    @@ -11079,7 +9795,7 @@ because the World is the root Group from which all Game Objects descend.

    -PIXI.DisplayObject +DisplayObject @@ -11614,7 +10330,7 @@ or pass null for the maxX and maxY parame
    Source - - pixi/display/DisplayObjectContainer.js, line 410 + pixi/display/DisplayObjectContainer.js, line 412
    @@ -11690,7 +10406,7 @@ or pass null for the maxX and maxY parame -PIXI.DisplayObject +DisplayObject @@ -11713,7 +10429,7 @@ or pass null for the maxX and maxY parame -PIXI.DisplayObject +DisplayObject @@ -11782,337 +10498,6 @@ or pass null for the maxX and maxY parame -
    - - - -
    -

    toGlobal(position) → {Point}

    - - -
    -
    - - - -
    -

    Calculates the global position of the display object

    -
    - - - - - - - -
    Parameters:
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    NameTypeDescription
    position - - -Point - - - -

    The world origin to calculate from

    - - - - -
    Returns:
    -
    - - - -
    - -Point - - - -
    - -
    -

    A point object representing the position of this object

    -
    - - - -
    - - - -
    - - - - - - - -
    Inherited From:
    -
    - - - - - - - - - - - - - -
    Source - - pixi/display/DisplayObject.js, line 575 -
    - - - - - - - -
    - - - - - - - - - - - -
    - - - -
    -

    toLocal(position, from) → {Point}

    - - -
    -
    - - - -
    -

    Calculates the local position of the display object relative to another point

    -
    - - - - - - - -
    Parameters:
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    NameTypeArgumentDescription
    position - - -Point - - - - - - - - - -

    The world origin to calculate from

    from - - -PIXI.DisplayObject - - - - - - <optional>
    - - - - - -

    The DisplayObject to calculate the global position from

    - - - - -
    Returns:
    -
    - - - -
    - -Point - - - -
    - -
    -

    A point object representing the position of this object

    -
    - - - -
    - - - -
    - - - - - - - -
    Inherited From:
    -
    - - - - - - - - - - - - - -
    Source - - pixi/display/DisplayObject.js, line 589 -
    - - - - - - - -
    - - - - - - - - - - -
    @@ -12183,81 +10568,6 @@ or pass null for the maxX and maxY parame - - - - -
    -

    updateCache()

    - - -
    -
    - - - -
    -

    Generates and updates the cached sprite for this object.

    -
    - - - - - - - - - - - -
    - - - - - - - -
    Inherited From:
    -
    - - - - - - - - - - - - - -
    Source - - pixi/display/DisplayObject.js, line 565 -
    - - - - - - - -
    - - - - - - - - - - -
    @@ -12362,7 +10672,7 @@ or the rectangle it references, then you need to update the crop frame by callin Documentation generated by JSDoc 3.3.3 - on Fri Jun 17 2016 12:45:38 GMT+0100 (BST) using the DocStrap template. + on Fri Jul 08 2016 15:42:43 GMT+0100 (GMT Daylight Time) using the DocStrap template. diff --git a/docs/Phaser.RoundedRectangle.html b/docs/Phaser.RoundedRectangle.html index db2349521..16b64b739 100644 --- a/docs/Phaser.RoundedRectangle.html +++ b/docs/Phaser.RoundedRectangle.html @@ -708,10 +708,6 @@ ComplexPrimitiveShader -
  • - DisplayObject -
  • -
  • DisplayObjectContainer
  • @@ -744,6 +740,10 @@ PIXI +
  • + DisplayObject +
  • +
  • PixiFastShader
  • @@ -2169,7 +2169,7 @@ radius properties as this RoundedRectangle object.

    Documentation generated by JSDoc 3.3.3 - on Fri Jun 17 2016 12:45:38 GMT+0100 (BST) using the DocStrap template. + on Fri Jul 08 2016 15:42:43 GMT+0100 (GMT Daylight Time) using the DocStrap template. diff --git a/docs/Phaser.ScaleManager.html b/docs/Phaser.ScaleManager.html index 4420efa14..e9eeb5e81 100644 --- a/docs/Phaser.ScaleManager.html +++ b/docs/Phaser.ScaleManager.html @@ -708,10 +708,6 @@ ComplexPrimitiveShader -
  • - DisplayObject -
  • -
  • DisplayObjectContainer
  • @@ -744,6 +740,10 @@ PIXI +
  • + DisplayObject +
  • +
  • PixiFastShader
  • @@ -7291,7 +7291,7 @@ device is reported to support fullscreen mode.

    Documentation generated by JSDoc 3.3.3 - on Fri Jun 17 2016 12:45:38 GMT+0100 (BST) using the DocStrap template. + on Fri Jul 08 2016 15:42:43 GMT+0100 (GMT Daylight Time) using the DocStrap template. diff --git a/docs/Phaser.Signal.html b/docs/Phaser.Signal.html index 84e751e12..b493dea7b 100644 --- a/docs/Phaser.Signal.html +++ b/docs/Phaser.Signal.html @@ -708,10 +708,6 @@ ComplexPrimitiveShader -
  • - DisplayObject -
  • -
  • DisplayObjectContainer
  • @@ -744,6 +740,10 @@ PIXI +
  • + DisplayObject +
  • +
  • PixiFastShader
  • @@ -3090,7 +3090,7 @@ See active to enable/disable the signal Documentation generated by JSDoc 3.3.3 - on Fri Jun 17 2016 12:45:38 GMT+0100 (BST) using the DocStrap template. + on Fri Jul 08 2016 15:42:43 GMT+0100 (GMT Daylight Time) using the DocStrap template. diff --git a/docs/Phaser.SignalBinding.html b/docs/Phaser.SignalBinding.html index df7ceaa06..6136b9b37 100644 --- a/docs/Phaser.SignalBinding.html +++ b/docs/Phaser.SignalBinding.html @@ -708,10 +708,6 @@ ComplexPrimitiveShader -
  • - DisplayObject -
  • -
  • DisplayObjectContainer
  • @@ -744,6 +740,10 @@ PIXI +
  • + DisplayObject +
  • +
  • PixiFastShader
  • @@ -2524,7 +2524,7 @@ If binding was added using Signal.addOnce() it will be automaticall Documentation generated by JSDoc 3.3.3 - on Fri Jun 17 2016 12:45:38 GMT+0100 (BST) using the DocStrap template. + on Fri Jul 08 2016 15:42:43 GMT+0100 (GMT Daylight Time) using the DocStrap template. diff --git a/docs/Phaser.SinglePad.html b/docs/Phaser.SinglePad.html index e4b2607a7..f581cd354 100644 --- a/docs/Phaser.SinglePad.html +++ b/docs/Phaser.SinglePad.html @@ -708,10 +708,6 @@ ComplexPrimitiveShader -
  • - DisplayObject -
  • -
  • DisplayObjectContainer
  • @@ -744,6 +740,10 @@ PIXI +
  • + DisplayObject +
  • +
  • PixiFastShader
  • @@ -4214,7 +4214,7 @@ The DeviceButton object can then be polled, have events attached to it, etc.

    Documentation generated by JSDoc 3.3.3 - on Fri Jun 17 2016 12:45:38 GMT+0100 (BST) using the DocStrap template. + on Fri Jul 08 2016 15:42:43 GMT+0100 (GMT Daylight Time) using the DocStrap template. diff --git a/docs/Phaser.Sound.html b/docs/Phaser.Sound.html index 6311b98d1..ead99c1dd 100644 --- a/docs/Phaser.Sound.html +++ b/docs/Phaser.Sound.html @@ -708,10 +708,6 @@ ComplexPrimitiveShader -
  • - DisplayObject -
  • -
  • DisplayObjectContainer
  • @@ -744,6 +740,10 @@ PIXI +
  • + DisplayObject +
  • +
  • PixiFastShader
  • @@ -1541,7 +1541,7 @@
    Source - - sound/Sound.js, line 149 + sound/Sound.js, line 144
    @@ -1597,7 +1597,7 @@
    Source - - sound/Sound.js, line 62 + sound/Sound.js, line 57
    @@ -1653,7 +1653,7 @@
    Source - - sound/Sound.js, line 57 + sound/Sound.js, line 52
    @@ -1709,7 +1709,7 @@
    Source - - sound/Sound.js, line 126 + sound/Sound.js, line 121
    @@ -1765,7 +1765,7 @@
    Source - - sound/Sound.js, line 78 + sound/Sound.js, line 73
    @@ -1821,7 +1821,7 @@
    Source - - sound/Sound.js, line 83 + sound/Sound.js, line 78
    @@ -1877,7 +1877,7 @@
    Source - - sound/Sound.js, line 88 + sound/Sound.js, line 83
    @@ -1933,7 +1933,7 @@
    Source - - sound/Sound.js, line 165 + sound/Sound.js, line 160
    @@ -1989,7 +1989,7 @@
    Source - - sound/Sound.js, line 131 + sound/Sound.js, line 126
    @@ -2045,7 +2045,7 @@
    Source - - sound/Sound.js, line 175 + sound/Sound.js, line 170
    @@ -2157,7 +2157,7 @@
    Source - - sound/Sound.js, line 1090 + sound/Sound.js, line 1085
    @@ -2213,7 +2213,7 @@
    Source - - sound/Sound.js, line 1077 + sound/Sound.js, line 1072
    @@ -2269,7 +2269,7 @@
    Source - - sound/Sound.js, line 120 + sound/Sound.js, line 115
    @@ -2437,7 +2437,7 @@
    Source - - sound/Sound.js, line 52 + sound/Sound.js, line 47
    @@ -2493,7 +2493,7 @@
    Source - - sound/Sound.js, line 170 + sound/Sound.js, line 165
    @@ -2549,7 +2549,7 @@
    Source - - sound/Sound.js, line 1103 + sound/Sound.js, line 1098
    @@ -2661,7 +2661,7 @@
    Source - - sound/Sound.js, line 225 + sound/Sound.js, line 220
    @@ -2717,7 +2717,7 @@
    Source - - sound/Sound.js, line 265 + sound/Sound.js, line 260
    @@ -2773,7 +2773,7 @@
    Source - - sound/Sound.js, line 245 + sound/Sound.js, line 240
    @@ -2829,7 +2829,7 @@
    Source - - sound/Sound.js, line 260 + sound/Sound.js, line 255
    @@ -2885,7 +2885,7 @@
    Source - - sound/Sound.js, line 255 + sound/Sound.js, line 250
    @@ -2941,7 +2941,7 @@
    Source - - sound/Sound.js, line 235 + sound/Sound.js, line 230
    @@ -2997,7 +2997,7 @@
    Source - - sound/Sound.js, line 230 + sound/Sound.js, line 225
    @@ -3053,7 +3053,7 @@
    Source - - sound/Sound.js, line 240 + sound/Sound.js, line 235
    @@ -3109,7 +3109,7 @@
    Source - - sound/Sound.js, line 250 + sound/Sound.js, line 245
    @@ -3165,7 +3165,7 @@
    Source - - sound/Sound.js, line 143 + sound/Sound.js, line 138
    @@ -3221,7 +3221,7 @@
    Source - - sound/Sound.js, line 104 + sound/Sound.js, line 99
    @@ -3277,7 +3277,7 @@
    Source - - sound/Sound.js, line 109 + sound/Sound.js, line 104
    @@ -3333,7 +3333,7 @@
    Source - - sound/Sound.js, line 114 + sound/Sound.js, line 109
    @@ -3389,7 +3389,7 @@
    Source - - sound/Sound.js, line 137 + sound/Sound.js, line 132
    @@ -3445,7 +3445,7 @@
    Source - - sound/Sound.js, line 93 + sound/Sound.js, line 88
    @@ -3501,7 +3501,7 @@
    Source - - sound/Sound.js, line 73 + sound/Sound.js, line 68
    @@ -3557,7 +3557,7 @@
    Source - - sound/Sound.js, line 98 + sound/Sound.js, line 93
    @@ -3613,7 +3613,7 @@
    Source - - sound/Sound.js, line 67 + sound/Sound.js, line 62
    @@ -3669,7 +3669,7 @@
    Source - - sound/Sound.js, line 160 + sound/Sound.js, line 155
    @@ -3725,7 +3725,7 @@
    Source - - sound/Sound.js, line 155 + sound/Sound.js, line 150
    @@ -3781,63 +3781,7 @@
    Source - - sound/Sound.js, line 1158 -
    - - - - - - - - - - - - - - - -
    -

    volume :number

    - - -
    -
    - - - -
    -

    The sound or sound marker volume. A value between 0 (silence) and 1 (full volume).

    -
    - - - - - -
    - - - - - - - - - - - - - - - - - - - -
    Source - - sound/Sound.js, line 47 + sound/Sound.js, line 1153
    @@ -4123,7 +4067,7 @@ This allows you to bundle multiple sounds together into a single audio file and
    Source - - sound/Sound.js, line 353 + sound/Sound.js, line 348
    @@ -4262,7 +4206,7 @@ This allows you to bundle multiple sounds together into a single audio file and
    Source - - sound/Sound.js, line 1038 + sound/Sound.js, line 1033
    @@ -4482,7 +4426,7 @@ and the final volume (1) as the second parameter.

    Source - - sound/Sound.js, line 927 + sound/Sound.js, line 922
    @@ -4623,7 +4567,7 @@ and the final volume (0) as the second parameter.

    Source - - sound/Sound.js, line 955 + sound/Sound.js, line 950
    @@ -4801,7 +4745,7 @@ and the final volume (volume) as the second parameter.

    Source - - sound/Sound.js, line 969 + sound/Sound.js, line 964
    @@ -4960,7 +4904,7 @@ and the final volume (volume) as the second parameter.

    Source - - sound/Sound.js, line 497 + sound/Sound.js, line 492
    @@ -5038,7 +4982,7 @@ Doesn't get called if the sound is set to loop or is a section of an Audio Sprit
    Source - - sound/Sound.js, line 393 + sound/Sound.js, line 388
    @@ -5108,7 +5052,7 @@ Doesn't get called if the sound is set to loop or is a section of an Audio Sprit
    Source - - sound/Sound.js, line 766 + sound/Sound.js, line 761
    @@ -5423,7 +5367,7 @@ Doesn't get called if the sound is set to loop or is a section of an Audio Sprit
    Source - - sound/Sound.js, line 510 + sound/Sound.js, line 505
    @@ -5542,7 +5486,7 @@ Doesn't get called if the sound is set to loop or is a section of an Audio Sprit
    Source - - sound/Sound.js, line 382 + sound/Sound.js, line 377
    @@ -5798,7 +5742,7 @@ Doesn't get called if the sound is set to loop or is a section of an Audio Sprit
    Source - - sound/Sound.js, line 746 + sound/Sound.js, line 741
    @@ -5868,7 +5812,7 @@ Doesn't get called if the sound is set to loop or is a section of an Audio Sprit
    Source - - sound/Sound.js, line 785 + sound/Sound.js, line 780
    @@ -5994,7 +5938,7 @@ Doesn't get called if the sound is set to loop or is a section of an Audio Sprit
    Source - - sound/Sound.js, line 337 + sound/Sound.js, line 332
    @@ -6064,7 +6008,7 @@ Doesn't get called if the sound is set to loop or is a section of an Audio Sprit
    Source - - sound/Sound.js, line 861 + sound/Sound.js, line 856
    @@ -6141,7 +6085,7 @@ Doesn't get called if the sound is set to loop or is a section of an Audio Sprit
    Source - - sound/Sound.js, line 409 + sound/Sound.js, line 404
    @@ -6269,7 +6213,7 @@ Doesn't get called if the sound is set to loop or is a section of an Audio Sprit
    Source - - sound/Sound.js, line 1016 + sound/Sound.js, line 1011
    @@ -6318,7 +6262,7 @@ Doesn't get called if the sound is set to loop or is a section of an Audio Sprit Documentation generated by JSDoc 3.3.3 - on Fri Jun 17 2016 12:45:38 GMT+0100 (BST) using the DocStrap template. + on Fri Jul 08 2016 15:42:43 GMT+0100 (GMT Daylight Time) using the DocStrap template. diff --git a/docs/Phaser.SoundManager.html b/docs/Phaser.SoundManager.html index b8d9d14fa..50eff4dda 100644 --- a/docs/Phaser.SoundManager.html +++ b/docs/Phaser.SoundManager.html @@ -708,10 +708,6 @@ ComplexPrimitiveShader -
  • - DisplayObject -
  • -
  • DisplayObjectContainer
  • @@ -744,6 +740,10 @@ PIXI +
  • + DisplayObject +
  • +
  • PixiFastShader
  • @@ -4115,7 +4115,7 @@ Required for iOS audio device unlocking. Mostly just used internally.

    Documentation generated by JSDoc 3.3.3 - on Fri Jun 17 2016 12:45:38 GMT+0100 (BST) using the DocStrap template. + on Fri Jul 08 2016 15:42:43 GMT+0100 (GMT Daylight Time) using the DocStrap template. diff --git a/docs/Phaser.Sprite.html b/docs/Phaser.Sprite.html index 218fc45d5..c5f4f6637 100644 --- a/docs/Phaser.Sprite.html +++ b/docs/Phaser.Sprite.html @@ -708,10 +708,6 @@ ComplexPrimitiveShader -
  • - DisplayObject -
  • -
  • DisplayObjectContainer
  • @@ -744,6 +740,10 @@ PIXI +
  • + DisplayObject +
  • +
  • PixiFastShader
  • @@ -1588,67 +1588,6 @@ However you can use Group.getFirstAlive in conjunction with this pr -
    - - - -
    - - - -
    -

    alpha :Number

    - - -
    -
    - - - -
    -

    The opacity of the object.

    -
    - - - - - -
    - - - - - - - -
    Inherited From:
    -
    - - - - - - - - - - - - - -
    Source - - pixi/display/DisplayObject.js, line 46 -
    - - - - - - -
    @@ -2128,69 +2067,6 @@ This is the same as y + height - offsetY.

    - - - - -
    - - - -
    -

    cacheAsBitmap :Boolean

    - - -
    -
    - - - -
    -

    Set if this display object is cached as a bitmap. -This basically takes a snap shot of the display object as it is at that moment. It can provide a performance benefit for complex static displayObjects. -To remove simply set this property to 'null'

    -
    - - - - - -
    - - - - - - - -
    Inherited From:
    -
    - - - - - - - - - - - - - -
    Source - - pixi/display/DisplayObject.js, line 355 -
    - - - - - - -
    @@ -3216,143 +3092,6 @@ Game Object, or any of its components.

    - - - - -
    - - - -
    -

    filterArea :Rectangle

    - - -
    -
    - - - -
    -

    The area the filter is applied to like the hitArea this is used as more of an optimisation -rather than figuring out the dimensions of the displayObject each frame you can set this rectangle

    -
    - - - - - -
    - - - - - - - -
    Inherited From:
    -
    - - - - - - - - - - - - - -
    Source - - pixi/display/DisplayObject.js, line 164 -
    - - - - - - - -
    - - - -
    - - - -
    -

    filters :Array.<Filter>

    - - -
    -
    - - - -
    -

    Sets the filters for the displayObject. -IMPORTANT: This is a webGL only feature and will be ignored by the Canvas renderer.

    -

    To remove filters simply set this property to 'null'.

    -

    You cannot have a filter and a multiply blend mode active at the same time. Setting a filter will reset -this objects blend mode to NORMAL.

    -
    - - - -
    Type:
    -
      -
    • - -Array.<Filter> - - -
    • -
    - - - -
    - - - - - - - -
    Inherited From:
    -
    - - - - - - - - - - - - - -
    Source - - pixi/display/DisplayObject.js, line 307 -
    - - - - - - -
    @@ -3863,87 +3602,6 @@ This property is mostly used internally by the physics systems, but is exposed f - - - - -
    - - - -
    -

    hitArea :Rectangle|Circle|Ellipse|Polygon

    - - -
    -
    - - - -
    -

    This is the defined area that will pick up mouse / touch events. It is null by default. -Setting it is a neat way of optimising the hitTest function that the interactionManager will use (as it will not need to hit test all the children)

    -
    - - - -
    Type:
    -
      -
    • - -Rectangle -| - -Circle -| - -Ellipse -| - -Polygon - - -
    • -
    - - - -
    - - - - - - - -
    Inherited From:
    -
    - - - - - - - - - - - - - -
    Source - - pixi/display/DisplayObject.js, line 62 -
    - - - - - - -
    @@ -4169,6 +3827,9 @@ for this Game Object and it will then start to process click / touch events and

    You can then access the Input Handler via this.input.

    Note that Input related events are dispatched from this.events, i.e.: events.onInputDown.

    If you set this property to false it will stop the Input Handler from processing any more input events.

    +

    If you want to temporarily disable input for a Game Object, then it's better to set +input.enabled = false, as it won't reset any of the Input Handlers internal properties. +You can then toggle this back on as needed.

    @@ -4201,7 +3862,7 @@ for this Game Object and it will then start to process click / touch events and
    Source - - gameobjects/components/InputEnabled.js, line 38 + gameobjects/components/InputEnabled.js, line 42
    @@ -4485,69 +4146,6 @@ When it reaches zero it will call the kill method.

    - - - - - - - - -
    -

    mask :PIXI.Graphics

    - - -
    -
    - - - -
    -

    Sets a mask for the displayObject. A mask is an object that limits the visibility of an object to the shape of the mask applied to it. -In PIXI a regular mask must be a PIXI.Graphics object. This allows for much faster masking in canvas as it utilises shape clipping. -To remove a mask, set this property to null.

    -
    - - - - - -
    - - - - - - - -
    Inherited From:
    -
    - - - - - - - - - - - - - -
    Source - - pixi/display/DisplayObject.js, line 282 -
    - - - - - - -
    @@ -4924,67 +4522,6 @@ is called as soon as the Game Object leaves the camera bounds.

    - - - - -
    - - - -
    -

    <readonly> parent :PIXI.DisplayObjectContainer

    - - -
    -
    - - - -
    -

    [read-only] The display object container that contains this display object.

    -
    - - - - - -
    - - - - - - - -
    Inherited From:
    -
    - - - - - - - - - - - - - -
    Source - - pixi/display/DisplayObject.js, line 79 -
    - - - - - - -
    @@ -5105,128 +4642,6 @@ such as with Buttons or other Input events.

    - - - - -
    - - - -
    -

    pivot :Point

    - - -
    -
    - - - -
    -

    The pivot point of the displayObject that it rotates around

    -
    - - - - - -
    - - - - - - - -
    Inherited From:
    -
    - - - - - - - - - - - - - -
    Source - - pixi/display/DisplayObject.js, line 30 -
    - - - - - - - -
    - - - -
    - - - -
    -

    position :Point

    - - -
    -
    - - - -
    -

    The coordinate of the object relative to the local coordinates of the parent.

    -
    - - - - - -
    - - - - - - - -
    Inherited From:
    -
    - - - - - - - - - - - - - -
    Source - - pixi/display/DisplayObject.js, line 14 -
    - - - - - - -
    @@ -5349,67 +4764,6 @@ such as with Buttons or other Input events.

    - - - - -
    - - - -
    -

    renderable :Boolean

    - - -
    -
    - - - -
    -

    Can this object be rendered

    -
    - - - - - -
    - - - - - - - -
    Inherited From:
    -
    - - - - - - - - - - - - - -
    Source - - pixi/display/DisplayObject.js, line 71 -
    - - - - - - -
    @@ -5534,128 +4888,6 @@ This is the same as x + width - offsetX.

    - - - - -
    - - - -
    -

    rotation :Number

    - - -
    -
    - - - -
    -

    The rotation of the object in radians.

    -
    - - - - - -
    - - - - - - - -
    Inherited From:
    -
    - - - - - - - - - - - - - -
    Source - - pixi/display/DisplayObject.js, line 38 -
    - - - - - - - -
    - - - -
    - - - -
    -

    scale :Point

    - - -
    -
    - - - -
    -

    The scale factor of the object.

    -
    - - - - - -
    - - - - - - - -
    Inherited From:
    -
    - - - - - - - - - - - - - -
    Source - - pixi/display/DisplayObject.js, line 22 -
    - - - - - - -
    @@ -5971,67 +5203,6 @@ Will never exceed the maxHealth value.

    - - - - -
    - - - -
    -

    <readonly> stage :Stage

    - - -
    -
    - - - -
    -

    [read-only] The stage the display object is connected to, or undefined if it is not connected to the stage.

    -
    - - - - - -
    - - - - - - - -
    Inherited From:
    -
    - - - - - - - - - - - - - -
    Source - - pixi/display/DisplayObject.js, line 88 -
    - - - - - - -
    @@ -6461,67 +5632,6 @@ This is the same as y - offsetY.

    - - - - -
    - - - -
    -

    visible :Boolean

    - - -
    -
    - - - -
    -

    The visibility of the object.

    -
    - - - - - -
    - - - - - - - -
    Inherited From:
    -
    - - - - - - - - - - - - - -
    Source - - pixi/display/DisplayObject.js, line 54 -
    - - - - - - -
    @@ -6656,7 +5766,7 @@ which contains the x/y coordinates relative to the Game Objects parent.

    <readonly> worldAlpha :Number

    + id="x">x :number
    @@ -6665,7 +5775,7 @@ which contains the x/y coordinates relative to the Game Objects parent.

    -

    [read-only] The multiplied alpha of the displayObject

    +

    The position of the Game Object on the x axis relative to the local coordinates of the parent.

    @@ -6682,7 +5792,7 @@ which contains the x/y coordinates relative to the Game Objects parent.

    Inherited From:
    @@ -6698,7 +5808,7 @@ which contains the x/y coordinates relative to the Game Objects parent.

    Source - - pixi/display/DisplayObject.js, line 97 + gameobjects/components/PhysicsBody.js, line 98
    @@ -6717,7 +5827,7 @@ which contains the x/y coordinates relative to the Game Objects parent.

    <readonly> worldPosition :Point

    + id="y">y :number
    @@ -6726,8 +5836,7 @@ which contains the x/y coordinates relative to the Game Objects parent.

    -

    The position of the Display Object based on the world transform. -This value is updated at the end of updateTransform and takes all parent transforms into account.

    +

    The position of the Game Object on the y axis relative to the local coordinates of the parent.

    @@ -6744,7 +5853,7 @@ This value is updated at the end of updateTransform and takes all parent transfo
    Inherited From:
    @@ -6760,314 +5869,7 @@ This value is updated at the end of updateTransform and takes all parent transfo
    Source - - pixi/display/DisplayObject.js, line 116 -
    - - - - - - - - - - - - - - - -
    -

    <readonly> worldRotation :Number

    - - -
    -
    - - - -
    -

    The rotation of the Display Object, in radians, based on the world transform. -This value is updated at the end of updateTransform and takes all parent transforms into account.

    -
    - - - - - -
    - - - - - - - -
    Inherited From:
    -
    - - - - - - - - - - - - - -
    Source - - pixi/display/DisplayObject.js, line 136 -
    - - - - - - - -
    - - - -
    - - - -
    -

    <readonly> worldScale :Point

    - - -
    -
    - - - -
    -

    The scale of the Display Object based on the world transform. -This value is updated at the end of updateTransform and takes all parent transforms into account.

    -
    - - - - - -
    - - - - - - - -
    Inherited From:
    -
    - - - - - - - - - - - - - -
    Source - - pixi/display/DisplayObject.js, line 126 -
    - - - - - - - -
    - - - -
    - - - -
    -

    worldVisible :Boolean

    - - -
    -
    - - - -
    -

    [read-only] Indicates if the sprite is globally visible.

    -
    - - - - - -
    - - - - - - - -
    Inherited From:
    -
    - - - - - - - - - - - - - -
    Source - - pixi/display/DisplayObject.js, line 258 -
    - - - - - - - -
    - - - -
    - - - -
    -

    x :Number

    - - -
    -
    - - - -
    -

    The position of the displayObject on the x axis relative to the local coordinates of the parent.

    -
    - - - - - -
    - - - - - - - -
    Inherited From:
    -
    - - - - - - - - - - - - - -
    Source - - pixi/display/DisplayObject.js, line 722 -
    - - - - - - - -
    - - - -
    - - - -
    -

    y :Number

    - - -
    -
    - - - -
    -

    The position of the displayObject on the y axis relative to the local coordinates of the parent.

    -
    - - - - - -
    - - - - - - - -
    Inherited From:
    -
    - - - - - - - - - - - - - -
    Source - - pixi/display/DisplayObject.js, line 740 + gameobjects/components/PhysicsBody.js, line 124
    @@ -7156,7 +5958,7 @@ If you wish to re-order the layering of a Game Object then see methods like Grou

    addChild(child) → {PIXI.DisplayObject}

    + id="addChild">addChild(child) → {DisplayObject}
    @@ -7205,7 +6007,7 @@ If you wish to re-order the layering of a Game Object then see methods like Grou -PIXI.DisplayObject +DisplayObject @@ -7232,7 +6034,7 @@ If you wish to re-order the layering of a Game Object then see methods like Grou @@ -7300,7 +6102,7 @@ If you wish to re-order the layering of a Game Object then see methods like Grou

    addChildAt(child, index) → {PIXI.DisplayObject}

    + id="addChildAt">addChildAt(child, index) → {DisplayObject}
    @@ -7349,7 +6151,7 @@ If you wish to re-order the layering of a Game Object then see methods like Grou -PIXI.DisplayObject +DisplayObject @@ -7399,7 +6201,7 @@ If you wish to re-order the layering of a Game Object then see methods like Grou @@ -8102,7 +6904,7 @@ one expands it.

    bringToTop() → {PIXI.DisplayObject}

    + id="bringToTop">bringToTop() → {PIXI.DisplayObject}
    @@ -8132,7 +6934,7 @@ because the World is the root Group from which all Game Objects descend.

    -PIXI.DisplayObject +PIXI.DisplayObject -
    @@ -8386,7 +7188,7 @@ in which case the values are duplicated to a local object.

    destroy()

    + id="destroy">destroy(destroyChildren, destroyTexture)
    @@ -8395,84 +7197,11 @@ in which case the values are duplicated to a local object.

    -

    Destroy this DisplayObject. -Removes all references to transformCallbacks, its parent, the stage, filters, bounds, mask and cached Sprites.

    -
    - - - - - - - - - - - -
    - - - - - - - -
    Inherited From:
    -
    - - - - - - - - - - - - - -
    Source - - pixi/display/DisplayObject.js, line 223 -
    - - - - - - - -
    - - - - - - - - - - - -
    - - - -
    -

    generateTexture(resolution, scaleMode, renderer) → {PIXI.RenderTexture}

    - - -
    -
    - - - -
    -

    Useful function that returns a texture of the displayObject object that can then be used to create sprites -This can be quite useful if your displayObject is static / complicated and needs to be reused multiple times.

    +

    Destroys the Game Object. This removes it from its parent group, destroys the input, event and animation handlers if present +and nulls its reference to game, freeing it up for garbage collection.

    +

    If this Game Object has the Events component it will also dispatch the onDestroy event.

    +

    You can optionally also destroy the BaseTexture this Game Object is using. Be careful if you've +more than one Game Object sharing the same BaseTexture.

    @@ -8494,8 +7223,12 @@ This can be quite useful if your displayObject is static / complicated and needs Type + Argument + + Default + Description @@ -8506,72 +7239,78 @@ This can be quite useful if your displayObject is static / complicated and needs - resolution + destroyChildren -Number +boolean + + + <optional>
    + + + + + -

    The resolution of the texture being generated

    + + + + true + + + + +

    Should every child of this object have its destroy method called as well?

    - scaleMode + destroyTexture -Number +boolean - - - -

    See {{#crossLink "PIXI/scaleModes:property"}}PIXI.scaleModes{{/crossLink}} for possible values

    - - - - - - - renderer - - - - + + + <optional>
    -PIXI.CanvasRenderer -| -PIXI.WebGLRenderer - - - - + + + + + + false + + + -

    The renderer used to generate the texture.

    +

    Destroy the BaseTexture this Game Object is using? Note that if another Game Object is sharing the same BaseTexture it will invalidate it.

    @@ -8581,26 +7320,6 @@ This can be quite useful if your displayObject is static / complicated and needs -
    Returns:
    -
    - - - -
    - -PIXI.RenderTexture - - - -
    - -
    -

    a texture of the graphics object

    -
    - - - -
    -
    @@ -8613,7 +7332,7 @@ This can be quite useful if your displayObject is static / complicated and needs
    Inherited From:
    @@ -8629,7 +7348,7 @@ This can be quite useful if your displayObject is static / complicated and needs
    Source - - pixi/display/DisplayObject.js, line 541 + gameobjects/components/Destroy.js, line 37
    @@ -8807,7 +7526,7 @@ on the root most object in this Sprites display list first.

    getChildAt(index) → {PIXI.DisplayObject}

    + id="getChildAt">getChildAt(index) → {DisplayObject}
    @@ -8883,7 +7602,7 @@ on the root most object in this Sprites display list first.

    @@ -9000,7 +7719,7 @@ on the root most object in this Sprites display list first.

    -PIXI.DisplayObject +DisplayObject @@ -9163,7 +7882,7 @@ on the root most object in this Sprites display list first.

    Source - - pixi/display/DisplayObjectContainer.js, line 381 + pixi/display/DisplayObjectContainer.js, line 383
    @@ -9190,7 +7909,7 @@ on the root most object in this Sprites display list first.

    kill() → {PIXI.DisplayObject}

    + id="kill">kill() → {PIXI.DisplayObject}
    @@ -9221,7 +7940,7 @@ it doesn't destroy the object or free it up from memory.

    -PIXI.DisplayObject +PIXI.DisplayObject -
    @@ -9529,7 +8248,7 @@ and swapping it to be the key of the atlas data.

    moveDown() → {PIXI.DisplayObject}

    + id="moveDown">moveDown() → {PIXI.DisplayObject}
    @@ -9559,7 +8278,7 @@ because the World is the root Group from which all Game Objects descend.

    -PIXI.DisplayObject +PIXI.DisplayObject -
    @@ -9627,7 +8346,7 @@ because the World is the root Group from which all Game Objects descend.

    moveUp() → {PIXI.DisplayObject}

    + id="moveUp">moveUp() → {PIXI.DisplayObject}
    @@ -9657,7 +8376,7 @@ because the World is the root Group from which all Game Objects descend.

    -PIXI.DisplayObject +PIXI.DisplayObject -
    @@ -9790,7 +8509,7 @@ It should be fine for low-volume testing where physics isn't required.

    Phaser.Button | -PIXI.DisplayObject +PIXI.DisplayObject @@ -10337,7 +9056,7 @@ If you need to reset an already running animation do so directly on the Animatio

    removeChild(child) → {PIXI.DisplayObject}

    + id="removeChild">removeChild(child) → {DisplayObject}
    @@ -10386,7 +9105,7 @@ If you need to reset an already running animation do so directly on the Animatio -PIXI.DisplayObject +DisplayObject @@ -10413,7 +9132,7 @@ If you need to reset an already running animation do so directly on the Animatio @@ -10481,7 +9200,7 @@ If you need to reset an already running animation do so directly on the Animatio

    removeChildAt(index) → {PIXI.DisplayObject}

    + id="removeChildAt">removeChildAt(index) → {DisplayObject}
    @@ -10557,7 +9276,7 @@ If you need to reset an already running animation do so directly on the Animatio @@ -10820,7 +9539,7 @@ If you need to reset an already running animation do so directly on the Animatio
    Source - - pixi/display/DisplayObjectContainer.js, line 426 + pixi/display/DisplayObjectContainer.js, line 428
    @@ -10847,7 +9566,7 @@ If you need to reset an already running animation do so directly on the Animatio

    reset(x, y, health) → {PIXI.DisplayObject}

    + id="reset">reset(x, y, health) → {PIXI.DisplayObject}
    @@ -11017,7 +9736,7 @@ If you need to reset an already running animation do so directly on the Animatio
    -PIXI.DisplayObject +PIXI.DisplayObject -
    @@ -11332,7 +10051,7 @@ it can be useful to adjust the dimensions directly in this way.

    revive(health) → {PIXI.DisplayObject}

    + id="revive">revive(health) → {PIXI.DisplayObject}
    @@ -11430,7 +10149,7 @@ it can be useful to adjust the dimensions directly in this way.

    -PIXI.DisplayObject +PIXI.DisplayObject -
    @@ -11498,7 +10217,7 @@ it can be useful to adjust the dimensions directly in this way.

    sendToBack() → {PIXI.DisplayObject}

    + id="sendToBack">sendToBack() → {PIXI.DisplayObject}
    @@ -11528,7 +10247,7 @@ because the World is the root Group from which all Game Objects descend.

    -PIXI.DisplayObject +PIXI.DisplayObject -
    @@ -11645,7 +10364,7 @@ because the World is the root Group from which all Game Objects descend.

    -PIXI.DisplayObject +DisplayObject @@ -12180,7 +10899,7 @@ or pass null for the maxX and maxY parame
    Source - - pixi/display/DisplayObjectContainer.js, line 410 + pixi/display/DisplayObjectContainer.js, line 412
    @@ -12436,7 +11155,7 @@ texture this Sprite was using.

    -PIXI.DisplayObject +DisplayObject @@ -12459,7 +11178,7 @@ texture this Sprite was using.

    -PIXI.DisplayObject +DisplayObject @@ -12528,337 +11247,6 @@ texture this Sprite was using.

    -
    - - - -
    -

    toGlobal(position) → {Point}

    - - -
    -
    - - - -
    -

    Calculates the global position of the display object

    -
    - - - - - - - -
    Parameters:
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    NameTypeDescription
    position - - -Point - - - -

    The world origin to calculate from

    - - - - -
    Returns:
    -
    - - - -
    - -Point - - - -
    - -
    -

    A point object representing the position of this object

    -
    - - - -
    - - - -
    - - - - - - - -
    Inherited From:
    -
    - - - - - - - - - - - - - -
    Source - - pixi/display/DisplayObject.js, line 575 -
    - - - - - - - -
    - - - - - - - - - - - -
    - - - -
    -

    toLocal(position, from) → {Point}

    - - -
    -
    - - - -
    -

    Calculates the local position of the display object relative to another point

    -
    - - - - - - - -
    Parameters:
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    NameTypeArgumentDescription
    position - - -Point - - - - - - - - - -

    The world origin to calculate from

    from - - -PIXI.DisplayObject - - - - - - <optional>
    - - - - - -

    The DisplayObject to calculate the global position from

    - - - - -
    Returns:
    -
    - - - -
    - -Point - - - -
    - -
    -

    A point object representing the position of this object

    -
    - - - -
    - - - -
    - - - - - - - -
    Inherited From:
    -
    - - - - - - - - - - - - - -
    Source - - pixi/display/DisplayObject.js, line 589 -
    - - - - - - - -
    - - - - - - - - - - -
    @@ -12936,81 +11324,6 @@ Remember if this Game Object has any children you should call update on those to - - - - -
    -

    updateCache()

    - - -
    -
    - - - -
    -

    Generates and updates the cached sprite for this object.

    -
    - - - - - - - - - - - -
    - - - - - - - -
    Inherited From:
    -
    - - - - - - - - - - - - - -
    Source - - pixi/display/DisplayObject.js, line 565 -
    - - - - - - - -
    - - - - - - - - - - -
    @@ -13115,7 +11428,7 @@ or the rectangle it references, then you need to update the crop frame by callin Documentation generated by JSDoc 3.3.3 - on Fri Jun 17 2016 12:45:38 GMT+0100 (BST) using the DocStrap template. + on Fri Jul 08 2016 15:42:43 GMT+0100 (GMT Daylight Time) using the DocStrap template. diff --git a/docs/Phaser.SpriteBatch.html b/docs/Phaser.SpriteBatch.html index 86ee5f819..2b72e2f73 100644 --- a/docs/Phaser.SpriteBatch.html +++ b/docs/Phaser.SpriteBatch.html @@ -708,10 +708,6 @@ ComplexPrimitiveShader -
  • - DisplayObject -
  • -
  • DisplayObjectContainer
  • @@ -744,6 +740,10 @@ PIXI +
  • + DisplayObject +
  • +
  • PixiFastShader
  • @@ -1626,7 +1626,7 @@ Sprites as it skips all of the Canvas setTransform calls, which helps performanc
    Source - - core/Group.js, line 2646 + core/Group.js, line 2945
    @@ -1690,7 +1690,7 @@ and on-screen orientation and position.

    Source - - core/Group.js, line 2578 + core/Group.js, line 2594
    @@ -1709,7 +1709,7 @@ and on-screen orientation and position.

    cacheAsBitmap :Boolean

    + id="bottom">bottom :number
    @@ -1718,9 +1718,13 @@ and on-screen orientation and position.

    -

    Set if this display object is cached as a bitmap. -This basically takes a snap shot of the display object as it is at that moment. It can provide a performance benefit for complex static displayObjects. -To remove simply set this property to 'null'

    +

    The bottom coordinate of this Group.

    +

    It is derived by calling getBounds, calculating the Groups dimensions based on its +visible children.

    +

    Note that no ancestors are factored into the result, meaning that if this Group is +nested within another Group, with heavy transforms on it, the result of this property +is likely to be incorrect. It is safe to get and set this property if the Group is a +top-level descendant of Phaser.World, or untransformed parents.

    @@ -1737,7 +1741,7 @@ To remove simply set this property to 'null'

    Inherited From:
    @@ -1753,7 +1757,7 @@ To remove simply set this property to 'null'

    Source - - pixi/display/DisplayObject.js, line 355 + core/Group.js, line 2782
    @@ -1824,6 +1828,140 @@ If the parent of this Group is also fixedToCamera then the offset h + + + + + + + + +
    +

    centerX :number

    + + +
    +
    + + + +
    +

    The center x coordinate of this Group.

    +

    It is derived by calling getBounds, calculating the Groups dimensions based on its +visible children.

    +

    Note that no ancestors are factored into the result, meaning that if this Group is +nested within another Group, with heavy transforms on it, the result of this property +is likely to be incorrect. It is safe to get and set this property if the Group is a +top-level descendant of Phaser.World, or untransformed parents.

    +
    + + + + + +
    + + + + + + + +
    Inherited From:
    +
    + + + + + + + + + + + + + +
    Source - + core/Group.js, line 2617 +
    + + + + + + + +
    + + + +
    + + + +
    +

    centerY :number

    + + +
    +
    + + + +
    +

    The center y coordinate of this Group.

    +

    It is derived by calling getBounds, calculating the Groups dimensions based on its +visible children.

    +

    Note that no ancestors are factored into the result, meaning that if this Group is +nested within another Group, with heavy transforms on it, the result of this property +is likely to be incorrect. It is safe to get and set this property if the Group is a +top-level descendant of Phaser.World, or untransformed parents.

    +
    + + + + + +
    + + + + + + + +
    Inherited From:
    +
    + + + + + + + + + + + + + +
    Source - + core/Group.js, line 2650 +
    + + + + + + +
    @@ -2273,143 +2411,6 @@ when a new object is created it is passed the following parameters to its constr - - - - -
    - - - -
    -

    filterArea :Rectangle

    - - -
    -
    - - - -
    -

    The area the filter is applied to like the hitArea this is used as more of an optimisation -rather than figuring out the dimensions of the displayObject each frame you can set this rectangle

    -
    - - - - - -
    - - - - - - - -
    Inherited From:
    -
    - - - - - - - - - - - - - -
    Source - - pixi/display/DisplayObject.js, line 164 -
    - - - - - - - -
    - - - -
    - - - -
    -

    filters :Array.<Filter>

    - - -
    -
    - - - -
    -

    Sets the filters for the displayObject. -IMPORTANT: This is a webGL only feature and will be ignored by the Canvas renderer.

    -

    To remove filters simply set this property to 'null'.

    -

    You cannot have a filter and a multiply blend mode active at the same time. Setting a filter will reset -this objects blend mode to NORMAL.

    -
    - - - -
    Type:
    -
      -
    • - -Array.<Filter> - - -
    • -
    - - - -
    - - - - - - - -
    Inherited From:
    -
    - - - - - - - - - - - - - -
    Source - - pixi/display/DisplayObject.js, line 307 -
    - - - - - - -
    @@ -2667,87 +2668,6 @@ sorting and filtering of Group children without touching their z-index (and ther - - - - -
    - - - -
    -

    hitArea :Rectangle|Circle|Ellipse|Polygon

    - - -
    -
    - - - -
    -

    This is the defined area that will pick up mouse / touch events. It is null by default. -Setting it is a neat way of optimising the hitTest function that the interactionManager will use (as it will not need to hit test all the children)

    -
    - - - -
    Type:
    -
      -
    • - -Rectangle -| - -Circle -| - -Ellipse -| - -Polygon - - -
    • -
    - - - -
    - - - - - - - -
    Inherited From:
    -
    - - - - - - - - - - - - - -
    Source - - pixi/display/DisplayObject.js, line 62 -
    - - - - - - -
    @@ -2935,6 +2855,73 @@ on any children added to, or created by, this Group.

    + + + + +
    + + + +
    +

    left :number

    + + +
    +
    + + + +
    +

    The left coordinate of this Group.

    +

    It is derived by calling getBounds, calculating the Groups dimensions based on its +visible children.

    +

    Note that no ancestors are factored into the result, meaning that if this Group is +nested within another Group, with heavy transforms on it, the result of this property +is likely to be incorrect. It is safe to get and set this property if the Group is a +top-level descendant of Phaser.World, or untransformed parents.

    +
    + + + + + +
    + + + + + + + +
    Inherited From:
    +
    + + + + + + + + + + + + + +
    Source - + core/Group.js, line 2683 +
    + + + + + + +
    @@ -2987,70 +2974,7 @@ on any children added to, or created by, this Group.

    Source - - core/Group.js, line 2561 -
    - - - - - - - - - - - - - - - -
    -

    mask :PIXI.Graphics

    - - -
    -
    - - - -
    -

    Sets a mask for the displayObject. A mask is an object that limits the visibility of an object to the shape of the mask applied to it. -In PIXI a regular mask must be a PIXI.Graphics object. This allows for much faster masking in canvas as it utilises shape clipping. -To remove a mask, set this property to null.

    -
    - - - - - -
    - - - - - - - -
    Inherited From:
    -
    - - - - - - - - - - - - - -
    Source - - pixi/display/DisplayObject.js, line 282 + core/Group.js, line 2577
    @@ -3442,67 +3366,6 @@ is still over the Sprite or not.

    -
    - - - -
    - - - -
    -

    <readonly> parent :PIXI.DisplayObjectContainer

    - - -
    -
    - - - -
    -

    [read-only] The display object container that contains this display object.

    -
    - - - - - -
    - - - - - - - -
    Inherited From:
    -
    - - - - - - - - - - - - - -
    Source - - pixi/display/DisplayObject.js, line 79 -
    - - - - - - -
    @@ -3769,7 +3632,7 @@ Phaser.Physics.Arcade.BOTTOM_TOP

    pivot :Point

    + id="right">right :number
    @@ -3778,7 +3641,13 @@ Phaser.Physics.Arcade.BOTTOM_TOP

    -

    The pivot point of the displayObject that it rotates around

    +

    The right coordinate of this Group.

    +

    It is derived by calling getBounds, calculating the Groups dimensions based on its +visible children.

    +

    Note that no ancestors are factored into the result, meaning that if this Group is +nested within another Group, with heavy transforms on it, the result of this property +is likely to be incorrect. It is safe to get and set this property if the Group is a +top-level descendant of Phaser.World, or untransformed parents.

    @@ -3795,7 +3664,7 @@ Phaser.Physics.Arcade.BOTTOM_TOP

    Inherited From:
    @@ -3811,129 +3680,7 @@ Phaser.Physics.Arcade.BOTTOM_TOP

    Source - - pixi/display/DisplayObject.js, line 30 -
    - - - - - - - - - - - - - - - -
    -

    position :Point

    - - -
    -
    - - - -
    -

    The coordinate of the object relative to the local coordinates of the parent.

    -
    - - - - - -
    - - - - - - - -
    Inherited From:
    -
    - - - - - - - - - - - - - -
    Source - - pixi/display/DisplayObject.js, line 14 -
    - - - - - - - -
    - - - -
    - - - -
    -

    renderable :Boolean

    - - -
    -
    - - - -
    -

    Can this object be rendered

    -
    - - - - - -
    - - - - - - - -
    Inherited From:
    -
    - - - - - - - - - - - - - -
    Source - - pixi/display/DisplayObject.js, line 71 + core/Group.js, line 2716
    @@ -3996,7 +3743,7 @@ This will have no impact on the rotation value of its children, but it will upda
    Source - - core/Group.js, line 2630 + core/Group.js, line 2929
    @@ -4015,7 +3762,7 @@ This will have no impact on the rotation value of its children, but it will upda

    scale :Point

    + id="top">top :number
    @@ -4024,7 +3771,13 @@ This will have no impact on the rotation value of its children, but it will upda
    -

    The scale factor of the object.

    +

    The top coordinate of this Group.

    +

    It is derived by calling getBounds, calculating the Groups dimensions based on its +visible children.

    +

    Note that no ancestors are factored into the result, meaning that if this Group is +nested within another Group, with heavy transforms on it, the result of this property +is likely to be incorrect. It is safe to get and set this property if the Group is a +top-level descendant of Phaser.World, or untransformed parents.

    @@ -4041,7 +3794,7 @@ This will have no impact on the rotation value of its children, but it will upda
    Inherited From:
    @@ -4057,68 +3810,7 @@ This will have no impact on the rotation value of its children, but it will upda
    Source - - pixi/display/DisplayObject.js, line 22 -
    - - - - - - - -
    - - - -
    - - - -
    -

    <readonly> stage :Stage

    - - -
    -
    - - - -
    -

    [read-only] The stage the display object is connected to, or undefined if it is not connected to the stage.

    -
    - - - - - -
    - - - - - - - -
    Inherited From:
    -
    - - - - - - - - - - - - - -
    Source - - pixi/display/DisplayObject.js, line 88 + core/Group.js, line 2749
    @@ -4179,7 +3871,7 @@ This will have no impact on the rotation value of its children, but it will upda
    Source - - core/Group.js, line 2544 + core/Group.js, line 2560
    @@ -4303,7 +3995,7 @@ This will have no impact on the rotation value of its children, but it will upda
    Source - - core/Group.js, line 2639 + core/Group.js, line 2938
    @@ -4373,314 +4065,6 @@ This will have no impact on the rotation value of its children, but it will upda -
    - - - -
    - - - -
    -

    <readonly> worldAlpha :Number

    - - -
    -
    - - - -
    -

    [read-only] The multiplied alpha of the displayObject

    -
    - - - - - -
    - - - - - - - -
    Inherited From:
    -
    - - - - - - - - - - - - - -
    Source - - pixi/display/DisplayObject.js, line 97 -
    - - - - - - - -
    - - - -
    - - - -
    -

    <readonly> worldPosition :Point

    - - -
    -
    - - - -
    -

    The position of the Display Object based on the world transform. -This value is updated at the end of updateTransform and takes all parent transforms into account.

    -
    - - - - - -
    - - - - - - - -
    Inherited From:
    -
    - - - - - - - - - - - - - -
    Source - - pixi/display/DisplayObject.js, line 116 -
    - - - - - - - -
    - - - -
    - - - -
    -

    <readonly> worldRotation :Number

    - - -
    -
    - - - -
    -

    The rotation of the Display Object, in radians, based on the world transform. -This value is updated at the end of updateTransform and takes all parent transforms into account.

    -
    - - - - - -
    - - - - - - - -
    Inherited From:
    -
    - - - - - - - - - - - - - -
    Source - - pixi/display/DisplayObject.js, line 136 -
    - - - - - - - -
    - - - -
    - - - -
    -

    <readonly> worldScale :Point

    - - -
    -
    - - - -
    -

    The scale of the Display Object based on the world transform. -This value is updated at the end of updateTransform and takes all parent transforms into account.

    -
    - - - - - -
    - - - - - - - -
    Inherited From:
    -
    - - - - - - - - - - - - - -
    Source - - pixi/display/DisplayObject.js, line 126 -
    - - - - - - - -
    - - - -
    - - - -
    -

    worldVisible :Boolean

    - - -
    -
    - - - -
    -

    [read-only] Indicates if the sprite is globally visible.

    -
    - - - - - -
    - - - - - - - -
    Inherited From:
    -
    - - - - - - - - - - - - - -
    Source - - pixi/display/DisplayObject.js, line 258 -
    - - - - - - -
    @@ -4735,7 +4119,7 @@ This will have no impact on the x/y coordinates of its children, but it will upd
    Source - - core/Group.js, line 2612 + core/Group.js, line 2911
    @@ -4798,7 +4182,7 @@ This will have no impact on the x/y coordinates of its children, but it will upd
    Source - - core/Group.js, line 2621 + core/Group.js, line 2920
    @@ -5295,7 +4679,7 @@ this allows you to control child ordering.

    Source - - core/Group.js, line 1374 + core/Group.js, line 1376
    @@ -5563,7 +4947,7 @@ this allows you to control child ordering.

    addChild(child) → {PIXI.DisplayObject}

    + id="addChild">addChild(child) → {DisplayObject}
    @@ -5612,7 +4996,7 @@ this allows you to control child ordering.

    -PIXI.DisplayObject +DisplayObject @@ -5639,7 +5023,7 @@ this allows you to control child ordering.

    @@ -5707,7 +5091,7 @@ this allows you to control child ordering.

    addChildAt(child, index) → {PIXI.DisplayObject}

    + id="addChildAt">addChildAt(child, index) → {DisplayObject}
    @@ -5756,7 +5140,7 @@ this allows you to control child ordering.

    -PIXI.DisplayObject +DisplayObject @@ -5806,7 +5190,7 @@ this allows you to control child ordering.

    @@ -6570,6 +5954,641 @@ This is a constant and can be one of Phaser.TOP_LEFT (default), + + + +
    +

    alignIn(container, position, offsetX, offsetY) → {Phaser.Group}

    + + +
    +
    + + + +
    +

    Aligns this Group within another Game Object, or Rectangle, known as the +'container', to one of 9 possible positions.

    +

    The container must be a Game Object, or Phaser.Rectangle object. This can include properties +such as World.bounds or Camera.view, for aligning Groups within the world +and camera bounds. Or it can include other Sprites, Images, Text objects, BitmapText, +TileSprites or Buttons.

    +

    Please note that aligning a Group to another Game Object does not make it a child of +the container. It simply modifies its position coordinates so it aligns with it.

    +

    The position constants you can use are:

    +

    Phaser.TOP_LEFT, Phaser.TOP_CENTER, Phaser.TOP_RIGHT, Phaser.LEFT_CENTER, +Phaser.CENTER, Phaser.RIGHT_CENTER, Phaser.BOTTOM_LEFT, +Phaser.BOTTOM_CENTER and Phaser.BOTTOM_RIGHT.

    +

    Groups are placed in such a way that their bounds align with the +container, taking into consideration rotation and scale of its children. +This allows you to neatly align Groups, irrespective of their position value.

    +

    The optional offsetX and offsetY arguments allow you to apply extra spacing to the final +aligned position of the Group. For example:

    +

    group.alignIn(background, Phaser.BOTTOM_RIGHT, -20, -20)

    +

    Would align the group to the bottom-right, but moved 20 pixels in from the corner. +Think of the offsets as applying an adjustment to the containers bounds before the alignment takes place. +So providing a negative offset will 'shrink' the container bounds by that amount, and providing a positive +one expands it.

    +
    + + + + + + + +
    Parameters:
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeArgumentDefaultDescription
    container + + +Phaser.Rectangle +| + +Phaser.Sprite +| + +Phaser.Image +| + +Phaser.Text +| + +Phaser.BitmapText +| + +Phaser.Button +| + +Phaser.Graphics +| + +Phaser.TileSprite + + + + + + + + + + + +

    The Game Object or Rectangle with which to align this Group to. Can also include properties such as World.bounds or Camera.view.

    position + + +integer + + + + + + <optional>
    + + + + + +
    + +

    The position constant. One of Phaser.TOP_LEFT (default), Phaser.TOP_CENTER, Phaser.TOP_RIGHT, Phaser.LEFT_CENTER, Phaser.CENTER, Phaser.RIGHT_CENTER, Phaser.BOTTOM_LEFT, Phaser.BOTTOM_CENTER or Phaser.BOTTOM_RIGHT.

    offsetX + + +integer + + + + + + <optional>
    + + + + + +
    + + 0 + +

    A horizontal adjustment of the Containers bounds, applied to the aligned position of the Game Object. Use a negative value to shrink the bounds, positive to increase it.

    offsetY + + +integer + + + + + + <optional>
    + + + + + +
    + + 0 + +

    A vertical adjustment of the Containers bounds, applied to the aligned position of the Game Object. Use a negative value to shrink the bounds, positive to increase it.

    + + + + +
    Returns:
    +
    + + + +
    + +Phaser.Group + + - +
    + +
    +

    This Group.

    +
    + + + +
    + + + +
    + + + + + + + +
    Inherited From:
    +
    + + + + + + + + + + + + + +
    Source - + core/Group.js, line 2815 +
    + + + + + + + +
    + + + + + + + + + + + +
    + + + +
    +

    alignTo(parent, position, offsetX, offsetY) → {Phaser.Group}

    + + +
    +
    + + + +
    +

    Aligns this Group to the side of another Game Object, or Rectangle, known as the +'parent', in one of 11 possible positions.

    +

    The parent must be a Game Object, or Phaser.Rectangle object. This can include properties +such as World.bounds or Camera.view, for aligning Groups within the world +and camera bounds. Or it can include other Sprites, Images, Text objects, BitmapText, +TileSprites or Buttons.

    +

    Please note that aligning a Group to another Game Object does not make it a child of +the parent. It simply modifies its position coordinates so it aligns with it.

    +

    The position constants you can use are:

    +

    Phaser.TOP_LEFT (default), Phaser.TOP_CENTER, Phaser.TOP_RIGHT, Phaser.LEFT_TOP, +Phaser.LEFT_CENTER, Phaser.LEFT_BOTTOM, Phaser.RIGHT_TOP, Phaser.RIGHT_CENTER, +Phaser.RIGHT_BOTTOM, Phaser.BOTTOM_LEFT, Phaser.BOTTOM_CENTER +and Phaser.BOTTOM_RIGHT.

    +

    Groups are placed in such a way that their bounds align with the +parent, taking into consideration rotation and scale of the children. +This allows you to neatly align Groups, irrespective of their position value.

    +

    The optional offsetX and offsetY arguments allow you to apply extra spacing to the final +aligned position of the Group. For example:

    +

    group.alignTo(background, Phaser.BOTTOM_RIGHT, -20, -20)

    +

    Would align the group to the bottom-right, but moved 20 pixels in from the corner. +Think of the offsets as applying an adjustment to the parents bounds before the alignment takes place. +So providing a negative offset will 'shrink' the parent bounds by that amount, and providing a positive +one expands it.

    +
    + + + + + + + +
    Parameters:
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeArgumentDefaultDescription
    parent + + +Phaser.Rectangle +| + +Phaser.Sprite +| + +Phaser.Image +| + +Phaser.Text +| + +Phaser.BitmapText +| + +Phaser.Button +| + +Phaser.Graphics +| + +Phaser.TileSprite + + + + + + + + + + + +

    The Game Object or Rectangle with which to align this Group to. Can also include properties such as World.bounds or Camera.view.

    position + + +integer + + + + + + <optional>
    + + + + + +
    + +

    The position constant. One of Phaser.TOP_LEFT, Phaser.TOP_CENTER, Phaser.TOP_RIGHT, Phaser.LEFT_TOP, Phaser.LEFT_CENTER, Phaser.LEFT_BOTTOM, Phaser.RIGHT_TOP, Phaser.RIGHT_CENTER, Phaser.RIGHT_BOTTOM, Phaser.BOTTOM_LEFT, Phaser.BOTTOM_CENTER or Phaser.BOTTOM_RIGHT.

    offsetX + + +integer + + + + + + <optional>
    + + + + + +
    + + 0 + +

    A horizontal adjustment of the Containers bounds, applied to the aligned position of the Game Object. Use a negative value to shrink the bounds, positive to increase it.

    offsetY + + +integer + + + + + + <optional>
    + + + + + +
    + + 0 + +

    A vertical adjustment of the Containers bounds, applied to the aligned position of the Game Object. Use a negative value to shrink the bounds, positive to increase it.

    + + + + +
    Returns:
    +
    + + + +
    + +Phaser.Group + + - +
    + +
    +

    This Group.

    +
    + + + +
    + + + +
    + + + + + + + +
    Inherited From:
    +
    + + + + + + + + + + + + + +
    Source - + core/Group.js, line 2857 +
    + + + + + + + +
    + + + + + + + + + + +
    @@ -6703,7 +6722,7 @@ This is a constant and can be one of Phaser.TOP_LEFT (default), Source - - core/Group.js, line 1910 + core/Group.js, line 1912 @@ -6847,7 +6866,7 @@ This is a constant and can be one of Phaser.TOP_LEFT (default), Source - - core/Group.js, line 895 + core/Group.js, line 897 @@ -7065,7 +7084,7 @@ After the method parameter and context you can add as many extra parameters as y
    Source - - core/Group.js, line 1529 + core/Group.js, line 1531
    @@ -7264,7 +7283,7 @@ After the method parameter and context you can add as many extra parameters as y
    Source - - core/Group.js, line 1442 + core/Group.js, line 1444
    @@ -7441,7 +7460,7 @@ After the method parameter and context you can add as many extra parameters as y
    Source - - core/Group.js, line 1476 + core/Group.js, line 1478
    @@ -7734,7 +7753,7 @@ After the method parameter and context you can add as many extra parameters as y
    Source - - core/Group.js, line 1341 + core/Group.js, line 1343
    @@ -8003,7 +8022,7 @@ After the method parameter and context you can add as many extra parameters as y
    Source - - core/Group.js, line 1205 + core/Group.js, line 1207
    @@ -8098,7 +8117,7 @@ After the method parameter and context you can add as many extra parameters as y
    Source - - core/Group.js, line 2293 + core/Group.js, line 2309
    @@ -8193,7 +8212,7 @@ After the method parameter and context you can add as many extra parameters as y
    Source - - core/Group.js, line 2281 + core/Group.js, line 2297
    @@ -9033,7 +9052,7 @@ It should return -1 if a > b, 1 if a < b or 0 if
    Source - - core/Group.js, line 1886 + core/Group.js, line 1888
    @@ -9187,7 +9206,7 @@ It should return -1 if a > b, 1 if a < b or 0 if
    Source - - core/Group.js, line 1942 + core/Group.js, line 1944
    @@ -9371,7 +9390,7 @@ It should return -1 if a > b, 1 if a < b or 0 if
    Source - - core/Group.js, line 2507 + core/Group.js, line 2523
    @@ -9565,7 +9584,7 @@ It should return -1 if a > b, 1 if a < b or 0 if
    Source - - core/Group.js, line 1425 + core/Group.js, line 1427
    @@ -9769,7 +9788,7 @@ healthyList.callAll('attack');

    Note: Currently this will skip any

    Source - - core/Group.js, line 1668 + core/Group.js, line 1670
    @@ -10027,7 +10046,7 @@ healthyList.callAll('attack');

    Note: Currently this will skip any

    Source - - core/Group.js, line 1708 + core/Group.js, line 1710
    @@ -10244,7 +10263,7 @@ healthyList.callAll('attack');

    Note: Currently this will skip any

    Source - - core/Group.js, line 1790 + core/Group.js, line 1792
    @@ -10461,7 +10480,7 @@ healthyList.callAll('attack');

    Note: Currently this will skip any

    Source - - core/Group.js, line 1818 + core/Group.js, line 1820
    @@ -10678,201 +10697,7 @@ healthyList.callAll('attack');

    Note: Currently this will skip any

    Source - - core/Group.js, line 1762 -
    - - - - - - - - - - - - - - - - - - - - - - - -
    -

    generateTexture(resolution, scaleMode, renderer) → {PIXI.RenderTexture}

    - - -
    -
    - - - -
    -

    Useful function that returns a texture of the displayObject object that can then be used to create sprites -This can be quite useful if your displayObject is static / complicated and needs to be reused multiple times.

    -
    - - - - - - - -
    Parameters:
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    NameTypeDescription
    resolution - - -Number - - - -

    The resolution of the texture being generated

    scaleMode - - -Number - - - -

    See {{#crossLink "PIXI/scaleModes:property"}}PIXI.scaleModes{{/crossLink}} for possible values

    renderer - - -PIXI.CanvasRenderer -| - -PIXI.WebGLRenderer - - - -

    The renderer used to generate the texture.

    - - - - -
    Returns:
    -
    - - - -
    - -PIXI.RenderTexture - - - -
    - -
    -

    a texture of the graphics object

    -
    - - - -
    - - - -
    - - - - - - - -
    Inherited From:
    -
    - - - - - - - - - - - - - -
    Source - - pixi/display/DisplayObject.js, line 541 + core/Group.js, line 1764
    @@ -11115,7 +10940,7 @@ This can be quite useful if your displayObject is static / complicated and needs
    Source - - core/Group.js, line 2190 + core/Group.js, line 2192
    @@ -11356,7 +11181,7 @@ the same name only the first instance is returned.

    Source - - core/Group.js, line 1030 + core/Group.js, line 1032
    @@ -11383,7 +11208,7 @@ the same name only the first instance is returned.

    getChildAt(index) → {PIXI.DisplayObject}

    + id="getChildAt">getChildAt(index) → {DisplayObject}
    @@ -11459,7 +11284,7 @@ the same name only the first instance is returned.

    @@ -11576,7 +11401,7 @@ the same name only the first instance is returned.

    -PIXI.DisplayObject +DisplayObject @@ -11671,7 +11496,7 @@ the same name only the first instance is returned.

    getClosestTo(object) → {any}

    + id="getClosestTo">getClosestTo(object, callback, callbackContext) → {any}
    @@ -11680,9 +11505,13 @@ the same name only the first instance is returned.

    -

    Get the closest child to given Object.

    +

    Get the closest child to given Object, with optional callback to filter children.

    This can be a Sprite, Group, Image or any object with public x and y properties.

    'close' is determined by the distance from the objects x and y properties compared to the childs x and y properties.

    +

    You can use the optional callback argument to apply your own filter to the distance checks. +If the child is closer then the previous child, it will be sent to callback as the first argument, +with the distance as the second. The callback should return true if it passes your +filtering criteria, otherwise it should return false.

    @@ -11704,6 +11533,8 @@ the same name only the first instance is returned.

    Type + Argument + @@ -11729,6 +11560,14 @@ the same name only the first instance is returned.

    + + + + + + + + @@ -11736,6 +11575,72 @@ the same name only the first instance is returned.

    + + + + callback + + + + + +function + + + + + + + + + <optional>
    + + + + + + + + + + +

    The function that each child will be evaluated against. Each child of the group will be passed to it as its first parameter, with the distance as the second. It should return true if the child passes the matching criteria.

    + + + + + + + callbackContext + + + + + +object + + + + + + + + + <optional>
    + + + + + + + + + + +

    The context in which the function should be called (usually 'this').

    + + + @@ -11755,7 +11660,7 @@ the same name only the first instance is returned.

    -

    The child closest to given object, or null if no child was found.

    +

    The child closest to given object, or null if no child was found.

    @@ -11790,7 +11695,7 @@ the same name only the first instance is returned.

    Source - - core/Group.js, line 2207 + core/Group.js, line 2209
    @@ -12122,7 +12027,7 @@ will be reset and/or have a new texture loaded on it. This is handled by G
    Source - - core/Group.js, line 2074 + core/Group.js, line 2076
    @@ -12454,7 +12359,7 @@ will be reset and/or have a new texture loaded on it. This is handled by G
    Source - - core/Group.js, line 2104 + core/Group.js, line 2106
    @@ -12824,7 +12729,7 @@ will be reset and/or have a new texture loaded on it. This is handled by G
    Source - - core/Group.js, line 2040 + core/Group.js, line 2042
    @@ -12851,7 +12756,7 @@ will be reset and/or have a new texture loaded on it. This is handled by G

    getFurthestFrom(object) → {any}

    + id="getFurthestFrom">getFurthestFrom(object, callback, callbackContext) → {any}
    @@ -12860,9 +12765,13 @@ will be reset and/or have a new texture loaded on it. This is handled by G
    -

    Get the child furthest away from the given Object.

    +

    Get the child furthest away from the given Object, with optional callback to filter children.

    This can be a Sprite, Group, Image or any object with public x and y properties.

    'furthest away' is determined by the distance from the objects x and y properties compared to the childs x and y properties.

    +

    You can use the optional callback argument to apply your own filter to the distance checks. +If the child is closer then the previous child, it will be sent to callback as the first argument, +with the distance as the second. The callback should return true if it passes your +filtering criteria, otherwise it should return false.

    @@ -12884,6 +12793,8 @@ will be reset and/or have a new texture loaded on it. This is handled by G Type + Argument + @@ -12909,6 +12820,14 @@ will be reset and/or have a new texture loaded on it. This is handled by G + + + + + + + + @@ -12916,6 +12835,72 @@ will be reset and/or have a new texture loaded on it. This is handled by G + + + + callback + + + + + +function + + + + + + + + + <optional>
    + + + + + + + + + + +

    The function that each child will be evaluated against. Each child of the group will be passed to it as its first parameter, with the distance as the second. It should return true if the child passes the matching criteria.

    + + + + + + + callbackContext + + + + + +object + + + + + + + + + <optional>
    + + + + + + + + + + +

    The context in which the function should be called (usually 'this').

    + + + @@ -12935,7 +12920,7 @@ will be reset and/or have a new texture loaded on it. This is handled by G
    -

    The child furthest from the given object, or null if no child was found.

    +

    The child furthest from the given object, or null if no child was found.

    @@ -12970,7 +12955,7 @@ will be reset and/or have a new texture loaded on it. This is handled by G
    Source - - core/Group.js, line 2244 + core/Group.js, line 2253
    @@ -13114,7 +13099,7 @@ will be reset and/or have a new texture loaded on it. This is handled by G
    Source - - core/Group.js, line 1017 + core/Group.js, line 1019
    @@ -13209,7 +13194,7 @@ will be reset and/or have a new texture loaded on it. This is handled by G
    Source - - pixi/display/DisplayObjectContainer.js, line 381 + pixi/display/DisplayObjectContainer.js, line 383
    @@ -13412,7 +13397,7 @@ will be reset and/or have a new texture loaded on it. This is handled by G
    Source - - core/Group.js, line 2305 + core/Group.js, line 2321
    @@ -13508,7 +13493,7 @@ will be reset and/or have a new texture loaded on it. This is handled by G
    Source - - core/Group.js, line 2173 + core/Group.js, line 2175
    @@ -13676,7 +13661,7 @@ will be reset and/or have a new texture loaded on it. This is handled by G
    Source - - core/Group.js, line 1092 + core/Group.js, line 1094
    @@ -14035,7 +14020,7 @@ element and the entire array will be applied to the callback function.

    Source - - core/Group.js, line 1967 + core/Group.js, line 1969
    @@ -14234,7 +14219,7 @@ element and the entire array will be applied to the callback function.

    Source - - core/Group.js, line 2375 + core/Group.js, line 2391
    @@ -14378,7 +14363,7 @@ element and the entire array will be applied to the callback function.

    Source - - core/Group.js, line 957 + core/Group.js, line 959
    @@ -14522,7 +14507,7 @@ element and the entire array will be applied to the callback function.

    Source - - core/Group.js, line 933 + core/Group.js, line 935
    @@ -14716,7 +14701,7 @@ element and the entire array will be applied to the callback function.

    Source - - core/Group.js, line 1408 + core/Group.js, line 1410
    @@ -14812,7 +14797,7 @@ element and the entire array will be applied to the callback function.

    Source - - core/Group.js, line 821 + core/Group.js, line 823
    @@ -14894,7 +14879,7 @@ element and the entire array will be applied to the callback function.

    Source - - core/Group.js, line 1647 + core/Group.js, line 1649
    @@ -14976,7 +14961,7 @@ element and the entire array will be applied to the callback function.

    Source - - core/Group.js, line 1602 + core/Group.js, line 1604
    @@ -15072,7 +15057,7 @@ element and the entire array will be applied to the callback function.

    Source - - core/Group.js, line 850 + core/Group.js, line 852
    @@ -15312,7 +15297,7 @@ element and the entire array will be applied to the callback function.

    Source - - core/Group.js, line 2327 + core/Group.js, line 2343
    @@ -15537,7 +15522,7 @@ more than one Game Object sharing the same BaseTexture.

    Source - - core/Group.js, line 2404 + core/Group.js, line 2420
    @@ -15792,7 +15777,7 @@ more than one Game Object sharing the same BaseTexture.

    Source - - core/Group.js, line 2452 + core/Group.js, line 2468
    @@ -15819,7 +15804,7 @@ more than one Game Object sharing the same BaseTexture.

    removeChild(child) → {PIXI.DisplayObject}

    + id="removeChild">removeChild(child) → {DisplayObject}
    @@ -15868,7 +15853,7 @@ more than one Game Object sharing the same BaseTexture.

    -PIXI.DisplayObject +DisplayObject @@ -15895,7 +15880,7 @@ more than one Game Object sharing the same BaseTexture.

    @@ -15963,7 +15948,7 @@ more than one Game Object sharing the same BaseTexture.

    removeChildAt(index) → {PIXI.DisplayObject}

    + id="removeChildAt">removeChildAt(index) → {DisplayObject}
    @@ -16039,7 +16024,7 @@ more than one Game Object sharing the same BaseTexture.

    @@ -16447,7 +16432,7 @@ This call will return false if the child is not in the hash.

    Source - - pixi/display/DisplayObjectContainer.js, line 426 + pixi/display/DisplayObjectContainer.js, line 428
    @@ -16616,7 +16601,7 @@ This call will return false if the child is not in the hash.

    Source - - core/Group.js, line 1053 + core/Group.js, line 1055
    @@ -16919,7 +16904,7 @@ This call will return false if the child is not in the hash.

    Source - - core/Group.js, line 2134 + core/Group.js, line 2136
    @@ -17084,7 +17069,7 @@ This call will return false if the child is not in the hash.

    Source - - core/Group.js, line 794 + core/Group.js, line 796
    @@ -17160,7 +17145,7 @@ This call will return false if the child is not in the hash.

    Source - - core/Group.js, line 1003 + core/Group.js, line 1005
    @@ -17304,7 +17289,7 @@ This call will return false if the child is not in the hash.

    Source - - core/Group.js, line 914 + core/Group.js, line 916
    @@ -17691,7 +17676,7 @@ This call will return false if the child is not in the hash.

    Source - - core/Group.js, line 1234 + core/Group.js, line 1236
    @@ -18025,7 +18010,7 @@ If you need that ability please see Group.setAllChildren.

    Source - - core/Group.js, line 1265 + core/Group.js, line 1267
    @@ -18359,7 +18344,7 @@ Unlike with setAll the property is NOT set on child Groups itself.<
    Source - - core/Group.js, line 1300 + core/Group.js, line 1302
    @@ -18435,7 +18420,7 @@ Unlike with setAll the property is NOT set on child Groups itself.< -PIXI.DisplayObject +DisplayObject @@ -18822,7 +18807,7 @@ Unlike with setAll the property is NOT set on child Groups itself.<
    Source - - core/Group.js, line 1127 + core/Group.js, line 1129
    @@ -18946,7 +18931,7 @@ Unlike with setAll the property is NOT set on child Groups itself.<
    Source - - pixi/display/DisplayObjectContainer.js, line 410 + pixi/display/DisplayObjectContainer.js, line 412
    @@ -19133,7 +19118,7 @@ alphabetical sorting, mixing strings and numbers, and Unicode sorting. See MDN f
    Source - - core/Group.js, line 1846 + core/Group.js, line 1848
    @@ -19327,7 +19312,7 @@ alphabetical sorting, mixing strings and numbers, and Unicode sorting. See MDN f
    Source - - core/Group.js, line 1391 + core/Group.js, line 1393
    @@ -19475,7 +19460,7 @@ alphabetical sorting, mixing strings and numbers, and Unicode sorting. See MDN f
    Source - - core/Group.js, line 879 + core/Group.js, line 881
    @@ -19551,7 +19536,7 @@ alphabetical sorting, mixing strings and numbers, and Unicode sorting. See MDN f -PIXI.DisplayObject +DisplayObject @@ -19574,7 +19559,7 @@ alphabetical sorting, mixing strings and numbers, and Unicode sorting. See MDN f -PIXI.DisplayObject +DisplayObject @@ -19643,337 +19628,6 @@ alphabetical sorting, mixing strings and numbers, and Unicode sorting. See MDN f -
    - - - -
    -

    toGlobal(position) → {Point}

    - - -
    -
    - - - -
    -

    Calculates the global position of the display object

    -
    - - - - - - - -
    Parameters:
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    NameTypeDescription
    position - - -Point - - - -

    The world origin to calculate from

    - - - - -
    Returns:
    -
    - - - -
    - -Point - - - -
    - -
    -

    A point object representing the position of this object

    -
    - - - -
    - - - -
    - - - - - - - -
    Inherited From:
    -
    - - - - - - - - - - - - - -
    Source - - pixi/display/DisplayObject.js, line 575 -
    - - - - - - - -
    - - - - - - - - - - - -
    - - - -
    -

    toLocal(position, from) → {Point}

    - - -
    -
    - - - -
    -

    Calculates the local position of the display object relative to another point

    -
    - - - - - - - -
    Parameters:
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    NameTypeArgumentDescription
    position - - -Point - - - - - - - - - -

    The world origin to calculate from

    from - - -PIXI.DisplayObject - - - - - - <optional>
    - - - - - -

    The DisplayObject to calculate the global position from

    - - - - -
    Returns:
    -
    - - - -
    - -Point - - - -
    - -
    -

    A point object representing the position of this object

    -
    - - - -
    - - - -
    - - - - - - - -
    Inherited From:
    -
    - - - - - - - - - - - - - -
    Source - - pixi/display/DisplayObject.js, line 589 -
    - - - - - - - -
    - - - - - - - - - - -
    @@ -20035,82 +19689,7 @@ alphabetical sorting, mixing strings and numbers, and Unicode sorting. See MDN f
    Source - - core/Group.js, line 1630 -
    - - - - - - - - - - - - - - - - - - - - - - - -
    -

    updateCache()

    - - -
    -
    - - - -
    -

    Generates and updates the cached sprite for this object.

    -
    - - - - - - - - - - - -
    - - - - - - - -
    Inherited From:
    -
    - - - - - - - - - - - - - -
    Source - - pixi/display/DisplayObject.js, line 565 + core/Group.js, line 1632
    @@ -20363,7 +19942,7 @@ alphabetical sorting, mixing strings and numbers, and Unicode sorting. See MDN f
    Source - - core/Group.js, line 981 + core/Group.js, line 983
    @@ -20412,7 +19991,7 @@ alphabetical sorting, mixing strings and numbers, and Unicode sorting. See MDN f Documentation generated by JSDoc 3.3.3 - on Fri Jun 17 2016 12:45:38 GMT+0100 (BST) using the DocStrap template. + on Fri Jul 08 2016 15:42:43 GMT+0100 (GMT Daylight Time) using the DocStrap template. diff --git a/docs/Phaser.Stage.html b/docs/Phaser.Stage.html index 0d5fb6175..c4690db67 100644 --- a/docs/Phaser.Stage.html +++ b/docs/Phaser.Stage.html @@ -708,10 +708,6 @@ ComplexPrimitiveShader -
  • - DisplayObject -
  • -
  • DisplayObjectContainer
  • @@ -744,6 +740,10 @@ PIXI +
  • + DisplayObject +
  • +
  • PixiFastShader
  • @@ -1380,67 +1380,6 @@ It also handles browser visibility handling and the pausing due to loss of focus
    -
    -

    alpha :Number

    - - -
    -
    - - - -
    -

    The opacity of the object.

    -
    - - - - - -
    - - - - - - - -
    Inherited From:
    -
    - - - - - - - - - - - - - -
    Source - - pixi/display/DisplayObject.js, line 46 -
    - - - - - - - -
    - - - -
    - - -

    backgroundColor :number|string

    @@ -1502,69 +1441,6 @@ It also handles browser visibility handling and the pausing due to loss of focus -
    - - - -
    - - - -
    -

    cacheAsBitmap :Boolean

    - - -
    -
    - - - -
    -

    Set if this display object is cached as a bitmap. -This basically takes a snap shot of the display object as it is at that moment. It can provide a performance benefit for complex static displayObjects. -To remove simply set this property to 'null'

    -
    - - - - - -
    - - - - - - - -
    Inherited From:
    -
    - - - - - - - - - - - - - -
    Source - - pixi/display/DisplayObject.js, line 355 -
    - - - - - - -
    @@ -1811,143 +1687,6 @@ effectively pausing your game, even though no in-game pause event is triggered i - - - - -
    - - - -
    -

    filterArea :Rectangle

    - - -
    -
    - - - -
    -

    The area the filter is applied to like the hitArea this is used as more of an optimisation -rather than figuring out the dimensions of the displayObject each frame you can set this rectangle

    -
    - - - - - -
    - - - - - - - -
    Inherited From:
    -
    - - - - - - - - - - - - - -
    Source - - pixi/display/DisplayObject.js, line 164 -
    - - - - - - - -
    - - - -
    - - - -
    -

    filters :Array.<Filter>

    - - -
    -
    - - - -
    -

    Sets the filters for the displayObject. -IMPORTANT: This is a webGL only feature and will be ignored by the Canvas renderer.

    -

    To remove filters simply set this property to 'null'.

    -

    You cannot have a filter and a multiply blend mode active at the same time. Setting a filter will reset -this objects blend mode to NORMAL.

    -
    - - - -
    Type:
    -
      -
    • - -Array.<Filter> - - -
    • -
    - - - -
    - - - - - - - -
    Inherited From:
    -
    - - - - - - - - - - - - - -
    Source - - pixi/display/DisplayObject.js, line 307 -
    - - - - - - -
    @@ -2065,87 +1804,6 @@ this objects blend mode to NORMAL.

    - - - - -
    - - - -
    -

    hitArea :Rectangle|Circle|Ellipse|Polygon

    - - -
    -
    - - - -
    -

    This is the defined area that will pick up mouse / touch events. It is null by default. -Setting it is a neat way of optimising the hitTest function that the interactionManager will use (as it will not need to hit test all the children)

    -
    - - - -
    Type:
    -
      -
    • - -Rectangle -| - -Circle -| - -Ellipse -| - -Polygon - - -
    • -
    - - - -
    - - - - - - - -
    Inherited From:
    -
    - - - - - - - - - - - - - -
    Source - - pixi/display/DisplayObject.js, line 62 -
    - - - - - - -
    @@ -2209,69 +1867,6 @@ Setting it is a neat way of optimising the hitTest function that the interaction - - - - -
    - - - -
    -

    mask :PIXI.Graphics

    - - -
    -
    - - - -
    -

    Sets a mask for the displayObject. A mask is an object that limits the visibility of an object to the shape of the mask applied to it. -In PIXI a regular mask must be a PIXI.Graphics object. This allows for much faster masking in canvas as it utilises shape clipping. -To remove a mask, set this property to null.

    -
    - - - - - -
    - - - - - - - -
    Inherited From:
    -
    - - - - - - - - - - - - - -
    Source - - pixi/display/DisplayObject.js, line 282 -
    - - - - - - -
    @@ -2331,372 +1926,6 @@ To remove a mask, set this property to null.

    - - - - -
    - - - -
    -

    <readonly> parent :PIXI.DisplayObjectContainer

    - - -
    -
    - - - -
    -

    [read-only] The display object container that contains this display object.

    -
    - - - - - -
    - - - - - - - -
    Inherited From:
    -
    - - - - - - - - - - - - - -
    Source - - pixi/display/DisplayObject.js, line 79 -
    - - - - - - - -
    - - - -
    - - - -
    -

    pivot :Point

    - - -
    -
    - - - -
    -

    The pivot point of the displayObject that it rotates around

    -
    - - - - - -
    - - - - - - - -
    Inherited From:
    -
    - - - - - - - - - - - - - -
    Source - - pixi/display/DisplayObject.js, line 30 -
    - - - - - - - -
    - - - -
    - - - -
    -

    position :Point

    - - -
    -
    - - - -
    -

    The coordinate of the object relative to the local coordinates of the parent.

    -
    - - - - - -
    - - - - - - - -
    Inherited From:
    -
    - - - - - - - - - - - - - -
    Source - - pixi/display/DisplayObject.js, line 14 -
    - - - - - - - -
    - - - -
    - - - -
    -

    renderable :Boolean

    - - -
    -
    - - - -
    -

    Can this object be rendered

    -
    - - - - - -
    - - - - - - - -
    Inherited From:
    -
    - - - - - - - - - - - - - -
    Source - - pixi/display/DisplayObject.js, line 71 -
    - - - - - - - -
    - - - -
    - - - -
    -

    rotation :Number

    - - -
    -
    - - - -
    -

    The rotation of the object in radians.

    -
    - - - - - -
    - - - - - - - -
    Inherited From:
    -
    - - - - - - - - - - - - - -
    Source - - pixi/display/DisplayObject.js, line 38 -
    - - - - - - - -
    - - - -
    - - - -
    -

    scale :Point

    - - -
    -
    - - - -
    -

    The scale factor of the object.

    -
    - - - - - -
    - - - - - - - -
    Inherited From:
    -
    - - - - - - - - - - - - - -
    Source - - pixi/display/DisplayObject.js, line 22 -
    - - - - - - -
    @@ -2753,67 +1982,6 @@ To remove a mask, set this property to null.

    - - - - -
    - - - -
    -

    visible :Boolean

    - - -
    -
    - - - -
    -

    The visibility of the object.

    -
    - - - - - -
    - - - - - - - -
    Inherited From:
    -
    - - - - - - - - - - - - - -
    Source - - pixi/display/DisplayObject.js, line 54 -
    - - - - - - -
    @@ -2875,436 +2043,6 @@ To remove a mask, set this property to null.

    - - - - -
    - - - -
    -

    <readonly> worldAlpha :Number

    - - -
    -
    - - - -
    -

    [read-only] The multiplied alpha of the displayObject

    -
    - - - - - -
    - - - - - - - -
    Inherited From:
    -
    - - - - - - - - - - - - - -
    Source - - pixi/display/DisplayObject.js, line 97 -
    - - - - - - - -
    - - - -
    - - - -
    -

    <readonly> worldPosition :Point

    - - -
    -
    - - - -
    -

    The position of the Display Object based on the world transform. -This value is updated at the end of updateTransform and takes all parent transforms into account.

    -
    - - - - - -
    - - - - - - - -
    Inherited From:
    -
    - - - - - - - - - - - - - -
    Source - - pixi/display/DisplayObject.js, line 116 -
    - - - - - - - -
    - - - -
    - - - -
    -

    <readonly> worldRotation :Number

    - - -
    -
    - - - -
    -

    The rotation of the Display Object, in radians, based on the world transform. -This value is updated at the end of updateTransform and takes all parent transforms into account.

    -
    - - - - - -
    - - - - - - - -
    Inherited From:
    -
    - - - - - - - - - - - - - -
    Source - - pixi/display/DisplayObject.js, line 136 -
    - - - - - - - -
    - - - -
    - - - -
    -

    <readonly> worldScale :Point

    - - -
    -
    - - - -
    -

    The scale of the Display Object based on the world transform. -This value is updated at the end of updateTransform and takes all parent transforms into account.

    -
    - - - - - -
    - - - - - - - -
    Inherited From:
    -
    - - - - - - - - - - - - - -
    Source - - pixi/display/DisplayObject.js, line 126 -
    - - - - - - - -
    - - - -
    - - - -
    -

    worldVisible :Boolean

    - - -
    -
    - - - -
    -

    [read-only] Indicates if the sprite is globally visible.

    -
    - - - - - -
    - - - - - - - -
    Inherited From:
    -
    - - - - - - - - - - - - - -
    Source - - pixi/display/DisplayObject.js, line 258 -
    - - - - - - - -
    - - - -
    - - - -
    -

    x :Number

    - - -
    -
    - - - -
    -

    The position of the displayObject on the x axis relative to the local coordinates of the parent.

    -
    - - - - - -
    - - - - - - - -
    Inherited From:
    -
    - - - - - - - - - - - - - -
    Source - - pixi/display/DisplayObject.js, line 722 -
    - - - - - - - -
    - - - -
    - - - -
    -

    y :Number

    - - -
    -
    - - - -
    -

    The position of the displayObject on the y axis relative to the local coordinates of the parent.

    -
    - - - - - -
    - - - - - - - -
    Inherited From:
    -
    - - - - - - - - - - - - - -
    Source - - pixi/display/DisplayObject.js, line 740 -
    - - - - - - -
    @@ -3321,7 +2059,7 @@ This value is updated at the end of updateTransform and takes all parent transfo

    addChild(child) → {PIXI.DisplayObject}

    + id="addChild">addChild(child) → {DisplayObject}
    @@ -3370,7 +2108,7 @@ This value is updated at the end of updateTransform and takes all parent transfo -PIXI.DisplayObject +DisplayObject @@ -3397,7 +2135,7 @@ This value is updated at the end of updateTransform and takes all parent transfo @@ -3465,7 +2203,7 @@ This value is updated at the end of updateTransform and takes all parent transfo

    addChildAt(child, index) → {PIXI.DisplayObject}

    + id="addChildAt">addChildAt(child, index) → {DisplayObject}
    @@ -3514,7 +2252,7 @@ This value is updated at the end of updateTransform and takes all parent transfo -PIXI.DisplayObject +DisplayObject @@ -3564,7 +2302,7 @@ This value is updated at the end of updateTransform and takes all parent transfo @@ -3767,200 +2505,6 @@ Also listens for window.onblur and window.onfocus.

    - - - - -
    -

    generateTexture(resolution, scaleMode, renderer) → {PIXI.RenderTexture}

    - - -
    -
    - - - -
    -

    Useful function that returns a texture of the displayObject object that can then be used to create sprites -This can be quite useful if your displayObject is static / complicated and needs to be reused multiple times.

    -
    - - - - - - - -
    Parameters:
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    NameTypeDescription
    resolution - - -Number - - - -

    The resolution of the texture being generated

    scaleMode - - -Number - - - -

    See {{#crossLink "PIXI/scaleModes:property"}}PIXI.scaleModes{{/crossLink}} for possible values

    renderer - - -PIXI.CanvasRenderer -| - -PIXI.WebGLRenderer - - - -

    The renderer used to generate the texture.

    - - - - -
    Returns:
    -
    - - - -
    - -PIXI.RenderTexture - - - -
    - -
    -

    a texture of the graphics object

    -
    - - - -
    - - - -
    - - - - - - - -
    Inherited From:
    -
    - - - - - - - - - - - - - -
    Source - - pixi/display/DisplayObject.js, line 541 -
    - - - - - - - -
    - - - - - - - - - - -
    @@ -4062,7 +2606,7 @@ This can be quite useful if your displayObject is static / complicated and needs

    getChildAt(index) → {PIXI.DisplayObject}

    + id="getChildAt">getChildAt(index) → {DisplayObject}
    @@ -4138,7 +2682,7 @@ This can be quite useful if your displayObject is static / complicated and needs @@ -4255,7 +2799,7 @@ This can be quite useful if your displayObject is static / complicated and needs -PIXI.DisplayObject +DisplayObject @@ -4418,7 +2962,7 @@ This can be quite useful if your displayObject is static / complicated and needs
    Source - - pixi/display/DisplayObjectContainer.js, line 381 + pixi/display/DisplayObjectContainer.js, line 383
    @@ -4714,7 +3258,7 @@ Most objects have preUpdate methods and it's where initial movement and position

    removeChild(child) → {PIXI.DisplayObject}

    + id="removeChild">removeChild(child) → {DisplayObject}
    @@ -4763,7 +3307,7 @@ Most objects have preUpdate methods and it's where initial movement and position -PIXI.DisplayObject +DisplayObject @@ -4790,7 +3334,7 @@ Most objects have preUpdate methods and it's where initial movement and position @@ -4858,7 +3402,7 @@ Most objects have preUpdate methods and it's where initial movement and position

    removeChildAt(index) → {PIXI.DisplayObject}

    + id="removeChildAt">removeChildAt(index) → {DisplayObject}
    @@ -4934,7 +3478,7 @@ Most objects have preUpdate methods and it's where initial movement and position @@ -5197,7 +3741,7 @@ Most objects have preUpdate methods and it's where initial movement and position
    Source - - pixi/display/DisplayObjectContainer.js, line 426 + pixi/display/DisplayObjectContainer.js, line 428
    @@ -5398,7 +3942,7 @@ Most objects have preUpdate methods and it's where initial movement and position -PIXI.DisplayObject +DisplayObject @@ -5593,7 +4137,7 @@ Most objects have preUpdate methods and it's where initial movement and position
    Source - - pixi/display/DisplayObjectContainer.js, line 410 + pixi/display/DisplayObjectContainer.js, line 412
    @@ -5669,7 +4213,7 @@ Most objects have preUpdate methods and it's where initial movement and position -PIXI.DisplayObject +DisplayObject @@ -5692,7 +4236,7 @@ Most objects have preUpdate methods and it's where initial movement and position -PIXI.DisplayObject +DisplayObject @@ -5761,337 +4305,6 @@ Most objects have preUpdate methods and it's where initial movement and position - - - - -
    -

    toGlobal(position) → {Point}

    - - -
    -
    - - - -
    -

    Calculates the global position of the display object

    -
    - - - - - - - -
    Parameters:
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    NameTypeDescription
    position - - -Point - - - -

    The world origin to calculate from

    - - - - -
    Returns:
    -
    - - - -
    - -Point - - - -
    - -
    -

    A point object representing the position of this object

    -
    - - - -
    - - - -
    - - - - - - - -
    Inherited From:
    -
    - - - - - - - - - - - - - -
    Source - - pixi/display/DisplayObject.js, line 575 -
    - - - - - - - -
    - - - - - - - - - - - -
    - - - -
    -

    toLocal(position, from) → {Point}

    - - -
    -
    - - - -
    -

    Calculates the local position of the display object relative to another point

    -
    - - - - - - - -
    Parameters:
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    NameTypeArgumentDescription
    position - - -Point - - - - - - - - - -

    The world origin to calculate from

    from - - -PIXI.DisplayObject - - - - - - <optional>
    - - - - - -

    The DisplayObject to calculate the global position from

    - - - - -
    Returns:
    -
    - - - -
    - -Point - - - -
    - -
    -

    A point object representing the position of this object

    -
    - - - -
    - - - -
    - - - - - - - -
    Inherited From:
    -
    - - - - - - - - - - - - - -
    Source - - pixi/display/DisplayObject.js, line 589 -
    - - - - - - - -
    - - - - - - - - - - -
    @@ -6162,81 +4375,6 @@ Most objects have preUpdate methods and it's where initial movement and position - - - - -
    -

    updateCache()

    - - -
    -
    - - - -
    -

    Generates and updates the cached sprite for this object.

    -
    - - - - - - - - - - - -
    - - - - - - - -
    Inherited From:
    -
    - - - - - - - - - - - - - -
    Source - - pixi/display/DisplayObject.js, line 565 -
    - - - - - - - -
    - - - - - - - - - - -
    @@ -6455,7 +4593,7 @@ This overrides the Pixi default as we don't need the interactionManager, but do Documentation generated by JSDoc 3.3.3 - on Fri Jun 17 2016 12:45:39 GMT+0100 (BST) using the DocStrap template. + on Fri Jul 08 2016 15:42:43 GMT+0100 (GMT Daylight Time) using the DocStrap template. diff --git a/docs/Phaser.State.html b/docs/Phaser.State.html index 133c9138a..3de6b2fc0 100644 --- a/docs/Phaser.State.html +++ b/docs/Phaser.State.html @@ -708,10 +708,6 @@ ComplexPrimitiveShader -
  • - DisplayObject -
  • -
  • DisplayObjectContainer
  • @@ -744,6 +740,10 @@ PIXI +
  • + DisplayObject +
  • +
  • PixiFastShader
  • @@ -3387,7 +3387,7 @@ It is called BEFORE Stage, Tweens, Sounds, Input, Physics, Particles and Plugins Documentation generated by JSDoc 3.3.3 - on Fri Jun 17 2016 12:45:39 GMT+0100 (BST) using the DocStrap template. + on Fri Jul 08 2016 15:42:43 GMT+0100 (GMT Daylight Time) using the DocStrap template. diff --git a/docs/Phaser.StateManager.html b/docs/Phaser.StateManager.html index be0933196..07c5a09d2 100644 --- a/docs/Phaser.StateManager.html +++ b/docs/Phaser.StateManager.html @@ -708,10 +708,6 @@ ComplexPrimitiveShader -
  • - DisplayObject -
  • -
  • DisplayObjectContainer
  • @@ -744,6 +740,10 @@ PIXI +
  • + DisplayObject +
  • +
  • PixiFastShader
  • @@ -4601,7 +4601,7 @@ You don't recover from this without rebuilding the Phaser instance again.

    Documentation generated by JSDoc 3.3.3 - on Fri Jun 17 2016 12:45:39 GMT+0100 (BST) using the DocStrap template. + on Fri Jul 08 2016 15:42:44 GMT+0100 (GMT Daylight Time) using the DocStrap template. diff --git a/docs/Phaser.Text.html b/docs/Phaser.Text.html index c11e0c993..16bfc464f 100644 --- a/docs/Phaser.Text.html +++ b/docs/Phaser.Text.html @@ -708,10 +708,6 @@ ComplexPrimitiveShader -
  • - DisplayObject -
  • -
  • DisplayObjectContainer
  • @@ -744,6 +740,10 @@ PIXI +
  • + DisplayObject +
  • +
  • PixiFastShader
  • @@ -2216,7 +2216,7 @@ Does not affect single lines of text. For that please see setTextBoundsSource - - gameobjects/Text.js, line 1854 + gameobjects/Text.js, line 1870 @@ -2293,67 +2293,6 @@ However you can use Group.getFirstAlive in conjunction with this pr - - - - - - - - -
    -

    alpha :Number

    - - -
    -
    - - - -
    -

    The opacity of the object.

    -
    - - - - - -
    - - - - - - - -
    Inherited From:
    -
    - - - - - - - - - - - - - -
    Source - - pixi/display/DisplayObject.js, line 46 -
    - - - - - - -
    @@ -2937,7 +2876,7 @@ This is the same as y + height - offsetY.

    Source - - gameobjects/Text.js, line 1930 + gameobjects/Text.js, line 1946
    @@ -2993,70 +2932,7 @@ This is the same as y + height - offsetY.

    Source - - gameobjects/Text.js, line 1953 -
    - - - - - - - - - - - - - - - -
    -

    cacheAsBitmap :Boolean

    - - -
    -
    - - - -
    -

    Set if this display object is cached as a bitmap. -This basically takes a snap shot of the display object as it is at that moment. It can provide a performance benefit for complex static displayObjects. -To remove simply set this property to 'null'

    -
    - - - - - -
    - - - - - - - -
    Inherited From:
    -
    - - - - - - - - - - - - - -
    Source - - pixi/display/DisplayObject.js, line 355 + gameobjects/Text.js, line 1969
    @@ -3738,7 +3614,7 @@ that unlike using setStyle this will not change any current font fi
    Source - - gameobjects/Text.js, line 1666 + gameobjects/Text.js, line 1682
    @@ -4364,144 +4240,7 @@ Game Object, or any of its components.

    Source - - gameobjects/Text.js, line 1832 -
    - - - - - - - -
    - - - -
    - - - -
    -

    filterArea :Rectangle

    - - -
    -
    - - - -
    -

    The area the filter is applied to like the hitArea this is used as more of an optimisation -rather than figuring out the dimensions of the displayObject each frame you can set this rectangle

    -
    - - - - - -
    - - - - - - - -
    Inherited From:
    -
    - - - - - - - - - - - - - -
    Source - - pixi/display/DisplayObject.js, line 164 -
    - - - - - - - -
    - - - -
    - - - -
    -

    filters :Array.<Filter>

    - - -
    -
    - - - -
    -

    Sets the filters for the displayObject. -IMPORTANT: This is a webGL only feature and will be ignored by the Canvas renderer.

    -

    To remove filters simply set this property to 'null'.

    -

    You cannot have a filter and a multiply blend mode active at the same time. Setting a filter will reset -this objects blend mode to NORMAL.

    -
    - - - -
    Type:
    -
      -
    • - -Array.<Filter> - - -
    • -
    - - - -
    - - - - - - - -
    Inherited From:
    -
    - - - - - - - - - - - - - -
    Source - - pixi/display/DisplayObject.js, line 307 + gameobjects/Text.js, line 1848
    @@ -4628,7 +4367,7 @@ regardless where in the world the camera is.

    Source - - gameobjects/Text.js, line 1692 + gameobjects/Text.js, line 1708
    @@ -4699,7 +4438,7 @@ the font size in pixels is returned; otherwise the value with CSS unit is return
    Source - - gameobjects/Text.js, line 1727 + gameobjects/Text.js, line 1743
    @@ -4755,7 +4494,7 @@ the font size in pixels is returned; otherwise the value with CSS unit is return
    Source - - gameobjects/Text.js, line 1790 + gameobjects/Text.js, line 1806
    @@ -4867,7 +4606,7 @@ the font size in pixels is returned; otherwise the value with CSS unit is return
    Source - - gameobjects/Text.js, line 1811 + gameobjects/Text.js, line 1827
    @@ -4923,7 +4662,7 @@ the font size in pixels is returned; otherwise the value with CSS unit is return
    Source - - gameobjects/Text.js, line 1769 + gameobjects/Text.js, line 1785
    @@ -5416,88 +5155,7 @@ This property is mostly used internally by the physics systems, but is exposed f
    Source - - gameobjects/Text.js, line 2248 -
    - - - - - - - -
    - - - -
    - - - -
    -

    hitArea :Rectangle|Circle|Ellipse|Polygon

    - - -
    -
    - - - -
    -

    This is the defined area that will pick up mouse / touch events. It is null by default. -Setting it is a neat way of optimising the hitTest function that the interactionManager will use (as it will not need to hit test all the children)

    -
    - - - -
    Type:
    -
      -
    • - -Rectangle -| - -Circle -| - -Ellipse -| - -Polygon - - -
    • -
    - - - -
    - - - - - - - -
    Inherited From:
    -
    - - - - - - - - - - - - - -
    Source - - pixi/display/DisplayObject.js, line 62 + gameobjects/Text.js, line 2264
    @@ -5731,6 +5389,9 @@ for this Game Object and it will then start to process click / touch events and

    You can then access the Input Handler via this.input.

    Note that Input related events are dispatched from this.events, i.e.: events.onInputDown.

    If you set this property to false it will stop the Input Handler from processing any more input events.

    +

    If you want to temporarily disable input for a Game Object, then it's better to set +input.enabled = false, as it won't reset any of the Input Handlers internal properties. +You can then toggle this back on as needed.

    @@ -5763,7 +5424,7 @@ for this Game Object and it will then start to process click / touch events and
    Source - - gameobjects/components/InputEnabled.js, line 38 + gameobjects/components/InputEnabled.js, line 42
    @@ -6094,70 +5755,7 @@ When it reaches zero it will call the kill method.

    Source - - gameobjects/Text.js, line 2064 -
    - - - - - - - -
    - - - -
    - - - -
    -

    mask :PIXI.Graphics

    - - -
    -
    - - - -
    -

    Sets a mask for the displayObject. A mask is an object that limits the visibility of an object to the shape of the mask applied to it. -In PIXI a regular mask must be a PIXI.Graphics object. This allows for much faster masking in canvas as it utilises shape clipping. -To remove a mask, set this property to null.

    -
    - - - - - -
    - - - - - - - -
    Inherited From:
    -
    - - - - - - - - - - - - - -
    Source - - pixi/display/DisplayObject.js, line 282 + gameobjects/Text.js, line 2080
    @@ -6599,67 +6197,6 @@ ALlows you to add extra spacing if Phaser is unable to accurately determine the -
    - - - -
    - - - -
    -

    <readonly> parent :PIXI.DisplayObjectContainer

    - - -
    -
    - - - -
    -

    [read-only] The display object container that contains this display object.

    -
    - - - - - -
    - - - - - - - -
    Inherited From:
    -
    - - - - - - - - - - - - - -
    Source - - pixi/display/DisplayObject.js, line 79 -
    - - - - - - -
    @@ -6780,128 +6317,6 @@ such as with Buttons or other Input events.

    - - - - -
    - - - -
    -

    pivot :Point

    - - -
    -
    - - - -
    -

    The pivot point of the displayObject that it rotates around

    -
    - - - - - -
    - - - - - - - -
    Inherited From:
    -
    - - - - - - - - - - - - - -
    Source - - pixi/display/DisplayObject.js, line 30 -
    - - - - - - - -
    - - - -
    - - - -
    -

    position :Point

    - - -
    -
    - - - -
    -

    The coordinate of the object relative to the local coordinates of the parent.

    -
    - - - - - -
    - - - - - - - -
    Inherited From:
    -
    - - - - - - - - - - - - - -
    Source - - pixi/display/DisplayObject.js, line 14 -
    - - - - - - -
    @@ -7024,67 +6439,6 @@ such as with Buttons or other Input events.

    - - - - -
    - - - -
    -

    renderable :Boolean

    - - -
    -
    - - - -
    -

    Can this object be rendered

    -
    - - - - - -
    - - - - - - - -
    Inherited From:
    -
    - - - - - - - - - - - - - -
    Source - - pixi/display/DisplayObject.js, line 71 -
    - - - - - - -
    @@ -7195,7 +6549,7 @@ This defaults to match the resolution of the renderer, but can be changed on a p
    Source - - gameobjects/Text.js, line 1879 + gameobjects/Text.js, line 1895
    @@ -7266,128 +6620,6 @@ This is the same as x + width - offsetX.

    - - - - - - - - -
    -

    rotation :Number

    - - -
    -
    - - - -
    -

    The rotation of the object in radians.

    -
    - - - - - -
    - - - - - - - -
    Inherited From:
    -
    - - - - - - - - - - - - - -
    Source - - pixi/display/DisplayObject.js, line 38 -
    - - - - - - - -
    - - - -
    - - - -
    -

    scale :Point

    - - -
    -
    - - - -
    -

    The scale factor of the object.

    -
    - - - - - -
    - - - - - - - -
    Inherited From:
    -
    - - - - - - - - - - - - - -
    Source - - pixi/display/DisplayObject.js, line 22 -
    - - - - - - -
    @@ -7687,7 +6919,7 @@ Will never exceed the maxHealth value.

    Source - - gameobjects/Text.js, line 2157 + gameobjects/Text.js, line 2173
    @@ -7743,7 +6975,7 @@ Will never exceed the maxHealth value.

    Source - - gameobjects/Text.js, line 2135 + gameobjects/Text.js, line 2151
    @@ -7799,7 +7031,7 @@ Will never exceed the maxHealth value.

    Source - - gameobjects/Text.js, line 2201 + gameobjects/Text.js, line 2217
    @@ -7855,7 +7087,7 @@ Will never exceed the maxHealth value.

    Source - - gameobjects/Text.js, line 2091 + gameobjects/Text.js, line 2107
    @@ -7911,7 +7143,7 @@ Will never exceed the maxHealth value.

    Source - - gameobjects/Text.js, line 2113 + gameobjects/Text.js, line 2129
    @@ -7967,7 +7199,7 @@ Will never exceed the maxHealth value.

    Source - - gameobjects/Text.js, line 2179 + gameobjects/Text.js, line 2195
    @@ -8039,67 +7271,6 @@ Will never exceed the maxHealth value.

    - - - - - - - - -
    -

    <readonly> stage :Stage

    - - -
    -
    - - - -
    -

    [read-only] The stage the display object is connected to, or undefined if it is not connected to the stage.

    -
    - - - - - -
    - - - - - - - -
    Inherited From:
    -
    - - - - - - - - - - - - - -
    Source - - pixi/display/DisplayObject.js, line 88 -
    - - - - - - -
    @@ -8147,7 +7318,7 @@ Will never exceed the maxHealth value.

    Source - - gameobjects/Text.js, line 1976 + gameobjects/Text.js, line 1992
    @@ -8259,7 +7430,7 @@ Will never exceed the maxHealth value.

    Source - - gameobjects/Text.js, line 1998 + gameobjects/Text.js, line 2014
    @@ -8331,7 +7502,7 @@ If you set tabs to be [100,200] then it will set the first tab at 1
    Source - - gameobjects/Text.js, line 1903 + gameobjects/Text.js, line 1919
    @@ -8389,7 +7560,7 @@ The text will be rendered with any style currently set.

    Source - - gameobjects/Text.js, line 1635 + gameobjects/Text.js, line 1651
    @@ -8944,67 +8115,6 @@ Lines are trimmed of white space before processing.

    - - - - - - - - -
    -

    visible :Boolean

    - - -
    -
    - - - -
    -

    The visibility of the object.

    -
    - - - - - -
    - - - - - - - -
    Inherited From:
    -
    - - - - - - - - - - - - - -
    Source - - pixi/display/DisplayObject.js, line 54 -
    - - - - - - -
    @@ -9052,7 +8162,7 @@ Lines are trimmed of white space before processing.

    Source - - gameobjects/Text.js, line 2223 + gameobjects/Text.js, line 2239
    @@ -9108,7 +8218,7 @@ Lines are trimmed of white space before processing.

    Source - - gameobjects/Text.js, line 2020 + gameobjects/Text.js, line 2036
    @@ -9164,7 +8274,7 @@ Lines are trimmed of white space before processing.

    Source - - gameobjects/Text.js, line 2042 + gameobjects/Text.js, line 2058
    @@ -9246,7 +8356,7 @@ which contains the x/y coordinates relative to the Game Objects parent.

    <readonly> worldAlpha :Number

    + id="x">x :number
    @@ -9255,7 +8365,7 @@ which contains the x/y coordinates relative to the Game Objects parent.

    -

    [read-only] The multiplied alpha of the displayObject

    +

    The position of the Game Object on the x axis relative to the local coordinates of the parent.

    @@ -9272,7 +8382,7 @@ which contains the x/y coordinates relative to the Game Objects parent.

    Inherited From:
    @@ -9288,7 +8398,7 @@ which contains the x/y coordinates relative to the Game Objects parent.

    Source - - pixi/display/DisplayObject.js, line 97 + gameobjects/components/PhysicsBody.js, line 98
    @@ -9307,7 +8417,7 @@ which contains the x/y coordinates relative to the Game Objects parent.

    <readonly> worldPosition :Point

    + id="y">y :number
    @@ -9316,8 +8426,7 @@ which contains the x/y coordinates relative to the Game Objects parent.

    -

    The position of the Display Object based on the world transform. -This value is updated at the end of updateTransform and takes all parent transforms into account.

    +

    The position of the Game Object on the y axis relative to the local coordinates of the parent.

    @@ -9334,7 +8443,7 @@ This value is updated at the end of updateTransform and takes all parent transfo
    Inherited From:
    @@ -9350,314 +8459,7 @@ This value is updated at the end of updateTransform and takes all parent transfo
    Source - - pixi/display/DisplayObject.js, line 116 -
    - - - - - - - - - - - - - - - -
    -

    <readonly> worldRotation :Number

    - - -
    -
    - - - -
    -

    The rotation of the Display Object, in radians, based on the world transform. -This value is updated at the end of updateTransform and takes all parent transforms into account.

    -
    - - - - - -
    - - - - - - - -
    Inherited From:
    -
    - - - - - - - - - - - - - -
    Source - - pixi/display/DisplayObject.js, line 136 -
    - - - - - - - -
    - - - -
    - - - -
    -

    <readonly> worldScale :Point

    - - -
    -
    - - - -
    -

    The scale of the Display Object based on the world transform. -This value is updated at the end of updateTransform and takes all parent transforms into account.

    -
    - - - - - -
    - - - - - - - -
    Inherited From:
    -
    - - - - - - - - - - - - - -
    Source - - pixi/display/DisplayObject.js, line 126 -
    - - - - - - - -
    - - - -
    - - - -
    -

    worldVisible :Boolean

    - - -
    -
    - - - -
    -

    [read-only] Indicates if the sprite is globally visible.

    -
    - - - - - -
    - - - - - - - -
    Inherited From:
    -
    - - - - - - - - - - - - - -
    Source - - pixi/display/DisplayObject.js, line 258 -
    - - - - - - - -
    - - - -
    - - - -
    -

    x :Number

    - - -
    -
    - - - -
    -

    The position of the displayObject on the x axis relative to the local coordinates of the parent.

    -
    - - - - - -
    - - - - - - - -
    Inherited From:
    -
    - - - - - - - - - - - - - -
    Source - - pixi/display/DisplayObject.js, line 722 -
    - - - - - - - -
    - - - -
    - - - -
    -

    y :Number

    - - -
    -
    - - - -
    -

    The position of the displayObject on the y axis relative to the local coordinates of the parent.

    -
    - - - - - -
    - - - - - - - -
    Inherited From:
    -
    - - - - - - - - - - - - - -
    Source - - pixi/display/DisplayObject.js, line 740 + gameobjects/components/PhysicsBody.js, line 124
    @@ -9746,7 +8548,7 @@ If you wish to re-order the layering of a Game Object then see methods like Grou

    addChild(child) → {PIXI.DisplayObject}

    + id="addChild">addChild(child) → {DisplayObject}
    @@ -9795,7 +8597,7 @@ If you wish to re-order the layering of a Game Object then see methods like Grou -PIXI.DisplayObject +DisplayObject @@ -9822,7 +8624,7 @@ If you wish to re-order the layering of a Game Object then see methods like Grou @@ -9890,7 +8692,7 @@ If you wish to re-order the layering of a Game Object then see methods like Grou

    addChildAt(child, index) → {PIXI.DisplayObject}

    + id="addChildAt">addChildAt(child, index) → {DisplayObject}
    @@ -9939,7 +8741,7 @@ If you wish to re-order the layering of a Game Object then see methods like Grou -PIXI.DisplayObject +DisplayObject @@ -9989,7 +8791,7 @@ If you wish to re-order the layering of a Game Object then see methods like Grou @@ -11361,7 +10163,7 @@ one expands it.

    bringToTop() → {PIXI.DisplayObject}

    + id="bringToTop">bringToTop() → {PIXI.DisplayObject}
    @@ -11391,7 +10193,7 @@ because the World is the root Group from which all Game Objects descend.

    -PIXI.DisplayObject +PIXI.DisplayObject -
    @@ -11958,200 +10760,6 @@ in which case the values are duplicated to a local object.

    -
    - - - -
    -

    generateTexture(resolution, scaleMode, renderer) → {PIXI.RenderTexture}

    - - -
    -
    - - - -
    -

    Useful function that returns a texture of the displayObject object that can then be used to create sprites -This can be quite useful if your displayObject is static / complicated and needs to be reused multiple times.

    -
    - - - - - - - -
    Parameters:
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    NameTypeDescription
    resolution - - -Number - - - -

    The resolution of the texture being generated

    scaleMode - - -Number - - - -

    See {{#crossLink "PIXI/scaleModes:property"}}PIXI.scaleModes{{/crossLink}} for possible values

    renderer - - -PIXI.CanvasRenderer -| - -PIXI.WebGLRenderer - - - -

    The renderer used to generate the texture.

    - - - - -
    Returns:
    -
    - - - -
    - -PIXI.RenderTexture - - - -
    - -
    -

    a texture of the graphics object

    -
    - - - -
    - - - -
    - - - - - - - -
    Inherited From:
    -
    - - - - - - - - - - - - - -
    Source - - pixi/display/DisplayObject.js, line 541 -
    - - - - - - - -
    - - - - - - - - - - -
    @@ -12271,7 +10879,7 @@ The bounds calculation takes the worldTransform into account.

    Source - - gameobjects/Text.js, line 1615 + gameobjects/Text.js, line 1631
    @@ -12298,7 +10906,7 @@ The bounds calculation takes the worldTransform into account.

    getChildAt(index) → {PIXI.DisplayObject}

    + id="getChildAt">getChildAt(index) → {DisplayObject}
    @@ -12374,7 +10982,7 @@ The bounds calculation takes the worldTransform into account.

    @@ -12491,7 +11099,7 @@ The bounds calculation takes the worldTransform into account.

    -PIXI.DisplayObject +DisplayObject @@ -12654,7 +11262,7 @@ The bounds calculation takes the worldTransform into account.

    Source - - pixi/display/DisplayObjectContainer.js, line 381 + pixi/display/DisplayObjectContainer.js, line 383
    @@ -12681,7 +11289,7 @@ The bounds calculation takes the worldTransform into account.

    kill() → {PIXI.DisplayObject}

    + id="kill">kill() → {PIXI.DisplayObject}
    @@ -12712,7 +11320,7 @@ it doesn't destroy the object or free it up from memory.

    -PIXI.DisplayObject +PIXI.DisplayObject -
    @@ -13020,7 +11628,7 @@ and swapping it to be the key of the atlas data.

    moveDown() → {PIXI.DisplayObject}

    + id="moveDown">moveDown() → {PIXI.DisplayObject}
    @@ -13050,7 +11658,7 @@ because the World is the root Group from which all Game Objects descend.

    -PIXI.DisplayObject +PIXI.DisplayObject -
    @@ -13118,7 +11726,7 @@ because the World is the root Group from which all Game Objects descend.

    moveUp() → {PIXI.DisplayObject}

    + id="moveUp">moveUp() → {PIXI.DisplayObject}
    @@ -13148,7 +11756,7 @@ because the World is the root Group from which all Game Objects descend.

    -PIXI.DisplayObject +PIXI.DisplayObject -
    @@ -13281,7 +11889,7 @@ It should be fine for low-volume testing where physics isn't required.

    Phaser.Button | -PIXI.DisplayObject +PIXI.DisplayObject @@ -13497,7 +12105,7 @@ This is mostly used when you want to display external data using tab stops.

    Source - - gameobjects/Text.js, line 1270 + gameobjects/Text.js, line 1286
    @@ -14105,7 +12713,7 @@ line of text.

    removeChild(child) → {PIXI.DisplayObject}

    + id="removeChild">removeChild(child) → {DisplayObject}
    @@ -14154,7 +12762,7 @@ line of text.

    -PIXI.DisplayObject +DisplayObject @@ -14181,7 +12789,7 @@ line of text.

    @@ -14249,7 +12857,7 @@ line of text.

    removeChildAt(index) → {PIXI.DisplayObject}

    + id="removeChildAt">removeChildAt(index) → {DisplayObject}
    @@ -14325,7 +12933,7 @@ line of text.

    @@ -14588,7 +13196,7 @@ line of text.

    Source - - pixi/display/DisplayObjectContainer.js, line 426 + pixi/display/DisplayObjectContainer.js, line 428
    @@ -14615,7 +13223,7 @@ line of text.

    reset(x, y, health) → {PIXI.DisplayObject}

    + id="reset">reset(x, y, health) → {PIXI.DisplayObject}
    @@ -14785,7 +13393,7 @@ line of text.

    -PIXI.DisplayObject +PIXI.DisplayObject -
    @@ -15100,7 +13708,7 @@ it can be useful to adjust the dimensions directly in this way.

    revive(health) → {PIXI.DisplayObject}

    + id="revive">revive(health) → {PIXI.DisplayObject}
    @@ -15198,7 +13806,7 @@ it can be useful to adjust the dimensions directly in this way.

    -PIXI.DisplayObject +PIXI.DisplayObject -
    @@ -15266,7 +13874,7 @@ it can be useful to adjust the dimensions directly in this way.

    sendToBack() → {PIXI.DisplayObject}

    + id="sendToBack">sendToBack() → {PIXI.DisplayObject}
    @@ -15296,7 +13904,7 @@ because the World is the root Group from which all Game Objects descend.

    -PIXI.DisplayObject +PIXI.DisplayObject -
    @@ -15413,7 +14021,7 @@ because the World is the root Group from which all Game Objects descend.

    -PIXI.DisplayObject +DisplayObject @@ -16305,7 +14913,7 @@ To remove a shadow already in place you can call this method with no parameters
    Source - - pixi/display/DisplayObjectContainer.js, line 410 + pixi/display/DisplayObjectContainer.js, line 412
    @@ -17188,7 +15796,7 @@ To remove a shadow already in place you can call this method with no parameters

    setText(text) → {Phaser.Text}

    + id="setText">setText(text, immediate) → {Phaser.Text}
    @@ -17200,6 +15808,9 @@ To remove a shadow already in place you can call this method with no parameters

    The text to be displayed by this Text object. Use a \n to insert a carriage return and split the text. The text will be rendered with any style currently set.

    +

    Use the optional immediate argument if you need the Text display to update immediately.

    +

    If not it will re-create the texture of this Text object during the next time the render +loop is called.

    @@ -17225,6 +15836,8 @@ The text will be rendered with any style currently set.

    + Default + Description @@ -17260,11 +15873,54 @@ The text will be rendered with any style currently set.

    + + + +

    The text to be displayed. Set to an empty string to clear text that is already present.

    + + + + immediate + + + + + +boolean + + + + + + + + + <optional>
    + + + + + + + + + + + + false + + + + +

    Update the texture used by this Text object immediately (true) or automatically during the next render loop (false).

    + + + @@ -17579,7 +16235,7 @@ you either cannot use setTextBounds or you must place the Text obje
    Source - - gameobjects/Text.js, line 1331 + gameobjects/Text.js, line 1347
    @@ -17835,7 +16491,7 @@ texture this Sprite was using.

    -PIXI.DisplayObject +DisplayObject @@ -17858,7 +16514,7 @@ texture this Sprite was using.

    -PIXI.DisplayObject +DisplayObject @@ -17927,337 +16583,6 @@ texture this Sprite was using.

    - - - - -
    -

    toGlobal(position) → {Point}

    - - -
    -
    - - - -
    -

    Calculates the global position of the display object

    -
    - - - - - - - -
    Parameters:
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    NameTypeDescription
    position - - -Point - - - -

    The world origin to calculate from

    - - - - -
    Returns:
    -
    - - - -
    - -Point - - - -
    - -
    -

    A point object representing the position of this object

    -
    - - - -
    - - - -
    - - - - - - - -
    Inherited From:
    -
    - - - - - - - - - - - - - -
    Source - - pixi/display/DisplayObject.js, line 575 -
    - - - - - - - -
    - - - - - - - - - - - -
    - - - -
    -

    toLocal(position, from) → {Point}

    - - -
    -
    - - - -
    -

    Calculates the local position of the display object relative to another point

    -
    - - - - - - - -
    Parameters:
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    NameTypeArgumentDescription
    position - - -Point - - - - - - - - - -

    The world origin to calculate from

    from - - -PIXI.DisplayObject - - - - - - <optional>
    - - - - - -

    The DisplayObject to calculate the global position from

    - - - - -
    Returns:
    -
    - - - -
    - -Point - - - -
    - -
    -

    A point object representing the position of this object

    -
    - - - -
    - - - -
    - - - - - - - -
    Inherited From:
    -
    - - - - - - - - - - - - - -
    Source - - pixi/display/DisplayObject.js, line 589 -
    - - - - - - - -
    - - - - - - - - - - -
    @@ -18335,81 +16660,6 @@ texture this Sprite was using.

    - - - - -
    -

    updateCache()

    - - -
    -
    - - - -
    -

    Generates and updates the cached sprite for this object.

    -
    - - - - - - - - - - - -
    - - - - - - - -
    Inherited From:
    -
    - - - - - - - - - - - - - -
    Source - - pixi/display/DisplayObject.js, line 565 -
    - - - - - - - -
    - - - - - - - - - - -
    @@ -18634,7 +16884,7 @@ This is called automatically by Text.updateText.

    Documentation generated by JSDoc 3.3.3 - on Fri Jun 17 2016 12:45:39 GMT+0100 (BST) using the DocStrap template. + on Fri Jul 08 2016 15:42:44 GMT+0100 (GMT Daylight Time) using the DocStrap template. diff --git a/docs/Phaser.Tile.html b/docs/Phaser.Tile.html index 7730c1205..63b430f42 100644 --- a/docs/Phaser.Tile.html +++ b/docs/Phaser.Tile.html @@ -708,10 +708,6 @@ ComplexPrimitiveShader -
  • - DisplayObject -
  • -
  • DisplayObjectContainer
  • @@ -744,6 +740,10 @@ PIXI +
  • + DisplayObject +
  • +
  • PixiFastShader
  • @@ -4548,7 +4548,7 @@ The callback must true true for collision processing to take place.

    Documentation generated by JSDoc 3.3.3 - on Fri Jun 17 2016 12:45:39 GMT+0100 (BST) using the DocStrap template. + on Fri Jul 08 2016 15:42:44 GMT+0100 (GMT Daylight Time) using the DocStrap template. diff --git a/docs/Phaser.TileSprite.html b/docs/Phaser.TileSprite.html index 1e2013c28..953e5d981 100644 --- a/docs/Phaser.TileSprite.html +++ b/docs/Phaser.TileSprite.html @@ -708,10 +708,6 @@ ComplexPrimitiveShader -
  • - DisplayObject -
  • -
  • DisplayObjectContainer
  • @@ -744,6 +740,10 @@ PIXI +
  • + DisplayObject +
  • +
  • PixiFastShader
  • @@ -1637,67 +1637,6 @@ However you can use Group.getFirstAlive in conjunction with this pr - - - - - - - - -
    -

    alpha :Number

    - - -
    -
    - - - -
    -

    The opacity of the object.

    -
    - - - - - -
    - - - - - - - -
    Inherited From:
    -
    - - - - - - - - - - - - - -
    Source - - pixi/display/DisplayObject.js, line 46 -
    - - - - - - -
    @@ -2176,69 +2115,6 @@ This is the same as y + height - offsetY.

    - - - - -
    - - - -
    -

    cacheAsBitmap :Boolean

    - - -
    -
    - - - -
    -

    Set if this display object is cached as a bitmap. -This basically takes a snap shot of the display object as it is at that moment. It can provide a performance benefit for complex static displayObjects. -To remove simply set this property to 'null'

    -
    - - - - - -
    - - - - - - - -
    Inherited From:
    -
    - - - - - - - - - - - - - -
    Source - - pixi/display/DisplayObject.js, line 355 -
    - - - - - - -
    @@ -3077,143 +2953,6 @@ Game Object, or any of its components.

    - - - - -
    - - - -
    -

    filterArea :Rectangle

    - - -
    -
    - - - -
    -

    The area the filter is applied to like the hitArea this is used as more of an optimisation -rather than figuring out the dimensions of the displayObject each frame you can set this rectangle

    -
    - - - - - -
    - - - - - - - -
    Inherited From:
    -
    - - - - - - - - - - - - - -
    Source - - pixi/display/DisplayObject.js, line 164 -
    - - - - - - - -
    - - - -
    - - - -
    -

    filters :Array.<Filter>

    - - -
    -
    - - - -
    -

    Sets the filters for the displayObject. -IMPORTANT: This is a webGL only feature and will be ignored by the Canvas renderer.

    -

    To remove filters simply set this property to 'null'.

    -

    You cannot have a filter and a multiply blend mode active at the same time. Setting a filter will reset -this objects blend mode to NORMAL.

    -
    - - - -
    Type:
    -
      -
    • - -Array.<Filter> - - -
    • -
    - - - -
    - - - - - - - -
    Inherited From:
    -
    - - - - - - - - - - - - - -
    Source - - pixi/display/DisplayObject.js, line 307 -
    - - - - - - -
    @@ -3724,87 +3463,6 @@ This property is mostly used internally by the physics systems, but is exposed f - - - - -
    - - - -
    -

    hitArea :Rectangle|Circle|Ellipse|Polygon

    - - -
    -
    - - - -
    -

    This is the defined area that will pick up mouse / touch events. It is null by default. -Setting it is a neat way of optimising the hitTest function that the interactionManager will use (as it will not need to hit test all the children)

    -
    - - - -
    Type:
    -
      -
    • - -Rectangle -| - -Circle -| - -Ellipse -| - -Polygon - - -
    • -
    - - - -
    - - - - - - - -
    Inherited From:
    -
    - - - - - - - - - - - - - -
    Source - - pixi/display/DisplayObject.js, line 62 -
    - - - - - - -
    @@ -4030,6 +3688,9 @@ for this Game Object and it will then start to process click / touch events and

    You can then access the Input Handler via this.input.

    Note that Input related events are dispatched from this.events, i.e.: events.onInputDown.

    If you set this property to false it will stop the Input Handler from processing any more input events.

    +

    If you want to temporarily disable input for a Game Object, then it's better to set +input.enabled = false, as it won't reset any of the Input Handlers internal properties. +You can then toggle this back on as needed.

    @@ -4062,7 +3723,7 @@ for this Game Object and it will then start to process click / touch events and
    Source - - gameobjects/components/InputEnabled.js, line 38 + gameobjects/components/InputEnabled.js, line 42
    @@ -4346,69 +4007,6 @@ When it reaches zero it will call the kill method.

    - - - - - - - - -
    -

    mask :PIXI.Graphics

    - - -
    -
    - - - -
    -

    Sets a mask for the displayObject. A mask is an object that limits the visibility of an object to the shape of the mask applied to it. -In PIXI a regular mask must be a PIXI.Graphics object. This allows for much faster masking in canvas as it utilises shape clipping. -To remove a mask, set this property to null.

    -
    - - - - - -
    - - - - - - - -
    Inherited From:
    -
    - - - - - - - - - - - - - -
    Source - - pixi/display/DisplayObject.js, line 282 -
    - - - - - - -
    @@ -4785,67 +4383,6 @@ is called as soon as the Game Object leaves the camera bounds.

    - - - - -
    - - - -
    -

    <readonly> parent :PIXI.DisplayObjectContainer

    - - -
    -
    - - - -
    -

    [read-only] The display object container that contains this display object.

    -
    - - - - - -
    - - - - - - - -
    Inherited From:
    -
    - - - - - - - - - - - - - -
    Source - - pixi/display/DisplayObject.js, line 79 -
    - - - - - - -
    @@ -4966,128 +4503,6 @@ such as with Buttons or other Input events.

    - - - - -
    - - - -
    -

    pivot :Point

    - - -
    -
    - - - -
    -

    The pivot point of the displayObject that it rotates around

    -
    - - - - - -
    - - - - - - - -
    Inherited From:
    -
    - - - - - - - - - - - - - -
    Source - - pixi/display/DisplayObject.js, line 30 -
    - - - - - - - -
    - - - -
    - - - -
    -

    position :Point

    - - -
    -
    - - - -
    -

    The coordinate of the object relative to the local coordinates of the parent.

    -
    - - - - - -
    - - - - - - - -
    Inherited From:
    -
    - - - - - - - - - - - - - -
    Source - - pixi/display/DisplayObject.js, line 14 -
    - - - - - - -
    @@ -5463,128 +4878,6 @@ This is the same as x + width - offsetX.

    - - - - -
    - - - -
    -

    rotation :Number

    - - -
    -
    - - - -
    -

    The rotation of the object in radians.

    -
    - - - - - -
    - - - - - - - -
    Inherited From:
    -
    - - - - - - - - - - - - - -
    Source - - pixi/display/DisplayObject.js, line 38 -
    - - - - - - - -
    - - - -
    - - - -
    -

    scale :Point

    - - -
    -
    - - - -
    -

    The scale factor of the object.

    -
    - - - - - -
    - - - - - - - -
    Inherited From:
    -
    - - - - - - - - - - - - - -
    Source - - pixi/display/DisplayObject.js, line 22 -
    - - - - - - -
    @@ -5774,67 +5067,6 @@ Will never exceed the maxHealth value.

    - - - - -
    - - - -
    -

    <readonly> stage :Stage

    - - -
    -
    - - - -
    -

    [read-only] The stage the display object is connected to, or undefined if it is not connected to the stage.

    -
    - - - - - -
    - - - - - - - -
    Inherited From:
    -
    - - - - - - - - - - - - - -
    Source - - pixi/display/DisplayObject.js, line 88 -
    - - - - - - -
    @@ -6509,67 +5741,6 @@ This is the same as y - offsetY.

    - - - - -
    - - - -
    -

    visible :Boolean

    - - -
    -
    - - - -
    -

    The visibility of the object.

    -
    - - - - - -
    - - - - - - - -
    Inherited From:
    -
    - - - - - - - - - - - - - -
    Source - - pixi/display/DisplayObject.js, line 54 -
    - - - - - - -
    @@ -6704,7 +5875,7 @@ which contains the x/y coordinates relative to the Game Objects parent.

    <readonly> worldAlpha :Number

    + id="x">x :number
    @@ -6713,7 +5884,7 @@ which contains the x/y coordinates relative to the Game Objects parent.

    -

    [read-only] The multiplied alpha of the displayObject

    +

    The position of the Game Object on the x axis relative to the local coordinates of the parent.

    @@ -6730,7 +5901,7 @@ which contains the x/y coordinates relative to the Game Objects parent.

    Inherited From:
    @@ -6746,7 +5917,7 @@ which contains the x/y coordinates relative to the Game Objects parent.

    Source - - pixi/display/DisplayObject.js, line 97 + gameobjects/components/PhysicsBody.js, line 98
    @@ -6765,7 +5936,7 @@ which contains the x/y coordinates relative to the Game Objects parent.

    <readonly> worldPosition :Point

    + id="y">y :number
    @@ -6774,8 +5945,7 @@ which contains the x/y coordinates relative to the Game Objects parent.

    -

    The position of the Display Object based on the world transform. -This value is updated at the end of updateTransform and takes all parent transforms into account.

    +

    The position of the Game Object on the y axis relative to the local coordinates of the parent.

    @@ -6792,7 +5962,7 @@ This value is updated at the end of updateTransform and takes all parent transfo
    Inherited From:
    @@ -6808,314 +5978,7 @@ This value is updated at the end of updateTransform and takes all parent transfo
    Source - - pixi/display/DisplayObject.js, line 116 -
    - - - - - - - - - - - - - - - -
    -

    <readonly> worldRotation :Number

    - - -
    -
    - - - -
    -

    The rotation of the Display Object, in radians, based on the world transform. -This value is updated at the end of updateTransform and takes all parent transforms into account.

    -
    - - - - - -
    - - - - - - - -
    Inherited From:
    -
    - - - - - - - - - - - - - -
    Source - - pixi/display/DisplayObject.js, line 136 -
    - - - - - - - -
    - - - -
    - - - -
    -

    <readonly> worldScale :Point

    - - -
    -
    - - - -
    -

    The scale of the Display Object based on the world transform. -This value is updated at the end of updateTransform and takes all parent transforms into account.

    -
    - - - - - -
    - - - - - - - -
    Inherited From:
    -
    - - - - - - - - - - - - - -
    Source - - pixi/display/DisplayObject.js, line 126 -
    - - - - - - - -
    - - - -
    - - - -
    -

    worldVisible :Boolean

    - - -
    -
    - - - -
    -

    [read-only] Indicates if the sprite is globally visible.

    -
    - - - - - -
    - - - - - - - -
    Inherited From:
    -
    - - - - - - - - - - - - - -
    Source - - pixi/display/DisplayObject.js, line 258 -
    - - - - - - - -
    - - - -
    - - - -
    -

    x :Number

    - - -
    -
    - - - -
    -

    The position of the displayObject on the x axis relative to the local coordinates of the parent.

    -
    - - - - - -
    - - - - - - - -
    Inherited From:
    -
    - - - - - - - - - - - - - -
    Source - - pixi/display/DisplayObject.js, line 722 -
    - - - - - - - -
    - - - -
    - - - -
    -

    y :Number

    - - -
    -
    - - - -
    -

    The position of the displayObject on the y axis relative to the local coordinates of the parent.

    -
    - - - - - -
    - - - - - - - -
    Inherited From:
    -
    - - - - - - - - - - - - - -
    Source - - pixi/display/DisplayObject.js, line 740 + gameobjects/components/PhysicsBody.js, line 124
    @@ -7204,7 +6067,7 @@ If you wish to re-order the layering of a Game Object then see methods like Grou

    addChild(child) → {PIXI.DisplayObject}

    + id="addChild">addChild(child) → {DisplayObject}
    @@ -7253,7 +6116,7 @@ If you wish to re-order the layering of a Game Object then see methods like Grou -PIXI.DisplayObject +DisplayObject @@ -7280,7 +6143,7 @@ If you wish to re-order the layering of a Game Object then see methods like Grou @@ -7348,7 +6211,7 @@ If you wish to re-order the layering of a Game Object then see methods like Grou

    addChildAt(child, index) → {PIXI.DisplayObject}

    + id="addChildAt">addChildAt(child, index) → {DisplayObject}
    @@ -7397,7 +6260,7 @@ If you wish to re-order the layering of a Game Object then see methods like Grou -PIXI.DisplayObject +DisplayObject @@ -7447,7 +6310,7 @@ If you wish to re-order the layering of a Game Object then see methods like Grou @@ -8295,7 +7158,7 @@ A negative y value will scroll up. A positive y value will scroll down.

    bringToTop() → {PIXI.DisplayObject}

    + id="bringToTop">bringToTop() → {PIXI.DisplayObject}
    @@ -8325,7 +7188,7 @@ because the World is the root Group from which all Game Objects descend.

    -PIXI.DisplayObject +PIXI.DisplayObject -
    @@ -8527,200 +7390,6 @@ and nulls its reference to game, freeing it up for garbage collection.

    -
    - - - -
    -

    generateTexture(resolution, scaleMode, renderer) → {PIXI.RenderTexture}

    - - -
    -
    - - - -
    -

    Useful function that returns a texture of the displayObject object that can then be used to create sprites -This can be quite useful if your displayObject is static / complicated and needs to be reused multiple times.

    -
    - - - - - - - -
    Parameters:
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    NameTypeDescription
    resolution - - -Number - - - -

    The resolution of the texture being generated

    scaleMode - - -Number - - - -

    See {{#crossLink "PIXI/scaleModes:property"}}PIXI.scaleModes{{/crossLink}} for possible values

    renderer - - -PIXI.CanvasRenderer -| - -PIXI.WebGLRenderer - - - -

    The renderer used to generate the texture.

    - - - - -
    Returns:
    -
    - - - -
    - -PIXI.RenderTexture - - - -
    - -
    -

    a texture of the graphics object

    -
    - - - -
    - - - -
    - - - - - - - -
    Inherited From:
    -
    - - - - - - - - - - - - - -
    Source - - pixi/display/DisplayObject.js, line 541 -
    - - - - - - - -
    - - - - - - - - - - -
    @@ -8965,7 +7634,7 @@ This can be quite useful if your displayObject is static / complicated and needs

    getChildAt(index) → {PIXI.DisplayObject}

    + id="getChildAt">getChildAt(index) → {DisplayObject}
    @@ -9041,7 +7710,7 @@ This can be quite useful if your displayObject is static / complicated and needs @@ -9158,7 +7827,7 @@ This can be quite useful if your displayObject is static / complicated and needs -PIXI.DisplayObject +DisplayObject @@ -9321,7 +7990,7 @@ This can be quite useful if your displayObject is static / complicated and needs
    Source - - pixi/display/DisplayObjectContainer.js, line 381 + pixi/display/DisplayObjectContainer.js, line 383
    @@ -9348,7 +8017,7 @@ This can be quite useful if your displayObject is static / complicated and needs

    kill() → {PIXI.DisplayObject}

    + id="kill">kill() → {PIXI.DisplayObject}
    @@ -9379,7 +8048,7 @@ it doesn't destroy the object or free it up from memory.

    -PIXI.DisplayObject +PIXI.DisplayObject -
    @@ -9687,7 +8356,7 @@ and swapping it to be the key of the atlas data.

    moveDown() → {PIXI.DisplayObject}

    + id="moveDown">moveDown() → {PIXI.DisplayObject}
    @@ -9717,7 +8386,7 @@ because the World is the root Group from which all Game Objects descend.

    -PIXI.DisplayObject +PIXI.DisplayObject -
    @@ -9785,7 +8454,7 @@ because the World is the root Group from which all Game Objects descend.

    moveUp() → {PIXI.DisplayObject}

    + id="moveUp">moveUp() → {PIXI.DisplayObject}
    @@ -9815,7 +8484,7 @@ because the World is the root Group from which all Game Objects descend.

    -PIXI.DisplayObject +PIXI.DisplayObject -
    @@ -9948,7 +8617,7 @@ It should be fine for low-volume testing where physics isn't required.

    Phaser.Button | -PIXI.DisplayObject +PIXI.DisplayObject @@ -10475,7 +9144,7 @@ If you need to reset an already running animation do so directly on the Animatio

    removeChild(child) → {PIXI.DisplayObject}

    + id="removeChild">removeChild(child) → {DisplayObject}
    @@ -10524,7 +9193,7 @@ If you need to reset an already running animation do so directly on the Animatio -PIXI.DisplayObject +DisplayObject @@ -10551,7 +9220,7 @@ If you need to reset an already running animation do so directly on the Animatio @@ -10619,7 +9288,7 @@ If you need to reset an already running animation do so directly on the Animatio

    removeChildAt(index) → {PIXI.DisplayObject}

    + id="removeChildAt">removeChildAt(index) → {DisplayObject}
    @@ -10695,7 +9364,7 @@ If you need to reset an already running animation do so directly on the Animatio @@ -10958,7 +9627,7 @@ If you need to reset an already running animation do so directly on the Animatio
    Source - - pixi/display/DisplayObjectContainer.js, line 426 + pixi/display/DisplayObjectContainer.js, line 428
    @@ -11396,7 +10065,7 @@ it can be useful to adjust the dimensions directly in this way.

    revive(health) → {PIXI.DisplayObject}

    + id="revive">revive(health) → {PIXI.DisplayObject}
    @@ -11494,7 +10163,7 @@ it can be useful to adjust the dimensions directly in this way.

    -PIXI.DisplayObject +PIXI.DisplayObject -
    @@ -11562,7 +10231,7 @@ it can be useful to adjust the dimensions directly in this way.

    sendToBack() → {PIXI.DisplayObject}

    + id="sendToBack">sendToBack() → {PIXI.DisplayObject}
    @@ -11592,7 +10261,7 @@ because the World is the root Group from which all Game Objects descend.

    -PIXI.DisplayObject +PIXI.DisplayObject -
    @@ -11709,7 +10378,7 @@ because the World is the root Group from which all Game Objects descend.

    -PIXI.DisplayObject +DisplayObject @@ -12029,7 +10698,7 @@ because the World is the root Group from which all Game Objects descend.

    Source - - pixi/display/DisplayObjectContainer.js, line 410 + pixi/display/DisplayObjectContainer.js, line 412
    @@ -12355,7 +11024,7 @@ texture this Sprite was using.

    -PIXI.DisplayObject +DisplayObject @@ -12378,7 +11047,7 @@ texture this Sprite was using.

    -PIXI.DisplayObject +DisplayObject @@ -12447,337 +11116,6 @@ texture this Sprite was using.

    - - - - -
    -

    toGlobal(position) → {Point}

    - - -
    -
    - - - -
    -

    Calculates the global position of the display object

    -
    - - - - - - - -
    Parameters:
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    NameTypeDescription
    position - - -Point - - - -

    The world origin to calculate from

    - - - - -
    Returns:
    -
    - - - -
    - -Point - - - -
    - -
    -

    A point object representing the position of this object

    -
    - - - -
    - - - -
    - - - - - - - -
    Inherited From:
    -
    - - - - - - - - - - - - - -
    Source - - pixi/display/DisplayObject.js, line 575 -
    - - - - - - - -
    - - - - - - - - - - - -
    - - - -
    -

    toLocal(position, from) → {Point}

    - - -
    -
    - - - -
    -

    Calculates the local position of the display object relative to another point

    -
    - - - - - - - -
    Parameters:
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    NameTypeArgumentDescription
    position - - -Point - - - - - - - - - -

    The world origin to calculate from

    from - - -PIXI.DisplayObject - - - - - - <optional>
    - - - - - -

    The DisplayObject to calculate the global position from

    - - - - -
    Returns:
    -
    - - - -
    - -Point - - - -
    - -
    -

    A point object representing the position of this object

    -
    - - - -
    - - - -
    - - - - - - - -
    Inherited From:
    -
    - - - - - - - - - - - - - -
    Source - - pixi/display/DisplayObject.js, line 589 -
    - - - - - - - -
    - - - - - - - - - - -
    @@ -12855,81 +11193,6 @@ Remember if this Game Object has any children you should call update on those to - - - - -
    -

    updateCache()

    - - -
    -
    - - - -
    -

    Generates and updates the cached sprite for this object.

    -
    - - - - - - - - - - - -
    - - - - - - - -
    Inherited From:
    -
    - - - - - - - - - - - - - -
    Source - - pixi/display/DisplayObject.js, line 565 -
    - - - - - - - -
    - - - - - - - - - - -
    @@ -12958,7 +11221,7 @@ Remember if this Game Object has any children you should call update on those to Documentation generated by JSDoc 3.3.3 - on Fri Jun 17 2016 12:45:39 GMT+0100 (BST) using the DocStrap template. + on Fri Jul 08 2016 15:42:44 GMT+0100 (GMT Daylight Time) using the DocStrap template. diff --git a/docs/Phaser.Tilemap.html b/docs/Phaser.Tilemap.html index 7353d2688..ebbd0e8c0 100644 --- a/docs/Phaser.Tilemap.html +++ b/docs/Phaser.Tilemap.html @@ -708,10 +708,6 @@ ComplexPrimitiveShader -
  • - DisplayObject -
  • -
  • DisplayObjectContainer
  • @@ -744,6 +740,10 @@ PIXI +
  • + DisplayObject +
  • +
  • PixiFastShader
  • @@ -13530,7 +13530,7 @@ If you want to set a callback for a tile at a specific location on the map then Documentation generated by JSDoc 3.3.3 - on Fri Jun 17 2016 12:45:39 GMT+0100 (BST) using the DocStrap template. + on Fri Jul 08 2016 15:42:44 GMT+0100 (GMT Daylight Time) using the DocStrap template. diff --git a/docs/Phaser.TilemapLayer.html b/docs/Phaser.TilemapLayer.html index f2e1098f5..e3c2cfb12 100644 --- a/docs/Phaser.TilemapLayer.html +++ b/docs/Phaser.TilemapLayer.html @@ -708,10 +708,6 @@ ComplexPrimitiveShader -
  • - DisplayObject -
  • -
  • DisplayObjectContainer
  • @@ -744,6 +740,10 @@ PIXI +
  • + DisplayObject +
  • +
  • PixiFastShader
  • @@ -1533,67 +1533,6 @@ However you can use Group.getFirstAlive in conjunction with this pr - - - - - - - - -
    -

    alpha :Number

    - - -
    -
    - - - -
    -

    The opacity of the object.

    -
    - - - - - -
    - - - - - - - -
    Inherited From:
    -
    - - - - - - - - - - - - - -
    Source - - pixi/display/DisplayObject.js, line 46 -
    - - - - - - -
    @@ -2073,69 +2012,6 @@ This is the same as y + height - offsetY.

    - - - - -
    - - - -
    -

    cacheAsBitmap :Boolean

    - - -
    -
    - - - -
    -

    Set if this display object is cached as a bitmap. -This basically takes a snap shot of the display object as it is at that moment. It can provide a performance benefit for complex static displayObjects. -To remove simply set this property to 'null'

    -
    - - - - - -
    - - - - - - - -
    Inherited From:
    -
    - - - - - - - - - - - - - -
    Source - - pixi/display/DisplayObject.js, line 355 -
    - - - - - - -
    @@ -3543,143 +3419,6 @@ Game Object, or any of its components.

    - - - - -
    - - - -
    -

    filterArea :Rectangle

    - - -
    -
    - - - -
    -

    The area the filter is applied to like the hitArea this is used as more of an optimisation -rather than figuring out the dimensions of the displayObject each frame you can set this rectangle

    -
    - - - - - -
    - - - - - - - -
    Inherited From:
    -
    - - - - - - - - - - - - - -
    Source - - pixi/display/DisplayObject.js, line 164 -
    - - - - - - - -
    - - - -
    - - - -
    -

    filters :Array.<Filter>

    - - -
    -
    - - - -
    -

    Sets the filters for the displayObject. -IMPORTANT: This is a webGL only feature and will be ignored by the Canvas renderer.

    -

    To remove filters simply set this property to 'null'.

    -

    You cannot have a filter and a multiply blend mode active at the same time. Setting a filter will reset -this objects blend mode to NORMAL.

    -
    - - - -
    Type:
    -
      -
    • - -Array.<Filter> - - -
    • -
    - - - -
    - - - - - - - -
    Inherited From:
    -
    - - - - - - - - - - - - - -
    Source - - pixi/display/DisplayObject.js, line 307 -
    - - - - - - -
    @@ -4190,87 +3929,6 @@ This property is mostly used internally by the physics systems, but is exposed f - - - - -
    - - - -
    -

    hitArea :Rectangle|Circle|Ellipse|Polygon

    - - -
    -
    - - - -
    -

    This is the defined area that will pick up mouse / touch events. It is null by default. -Setting it is a neat way of optimising the hitTest function that the interactionManager will use (as it will not need to hit test all the children)

    -
    - - - -
    Type:
    -
      -
    • - -Rectangle -| - -Circle -| - -Ellipse -| - -Polygon - - -
    • -
    - - - -
    - - - - - - - -
    Inherited From:
    -
    - - - - - - - - - - - - - -
    Source - - pixi/display/DisplayObject.js, line 62 -
    - - - - - - -
    @@ -4559,6 +4217,9 @@ for this Game Object and it will then start to process click / touch events and

    You can then access the Input Handler via this.input.

    Note that Input related events are dispatched from this.events, i.e.: events.onInputDown.

    If you set this property to false it will stop the Input Handler from processing any more input events.

    +

    If you want to temporarily disable input for a Game Object, then it's better to set +input.enabled = false, as it won't reset any of the Input Handlers internal properties. +You can then toggle this back on as needed.

    @@ -4591,7 +4252,7 @@ for this Game Object and it will then start to process click / touch events and
    Source - - gameobjects/components/InputEnabled.js, line 38 + gameobjects/components/InputEnabled.js, line 42
    @@ -5001,69 +4662,6 @@ When it reaches zero it will call the kill method.

    - - - - - - - - -
    -

    mask :PIXI.Graphics

    - - -
    -
    - - - -
    -

    Sets a mask for the displayObject. A mask is an object that limits the visibility of an object to the shape of the mask applied to it. -In PIXI a regular mask must be a PIXI.Graphics object. This allows for much faster masking in canvas as it utilises shape clipping. -To remove a mask, set this property to null.

    -
    - - - - - -
    - - - - - - - -
    Inherited From:
    -
    - - - - - - - - - - - - - -
    Source - - pixi/display/DisplayObject.js, line 282 -
    - - - - - - -
    @@ -5440,67 +5038,6 @@ is called as soon as the Game Object leaves the camera bounds.

    - - - - -
    - - - -
    -

    <readonly> parent :PIXI.DisplayObjectContainer

    - - -
    -
    - - - -
    -

    [read-only] The display object container that contains this display object.

    -
    - - - - - -
    - - - - - - - -
    Inherited From:
    -
    - - - - - - - - - - - - - -
    Source - - pixi/display/DisplayObject.js, line 79 -
    - - - - - - -
    @@ -5621,128 +5158,6 @@ such as with Buttons or other Input events.

    - - - - -
    - - - -
    -

    pivot :Point

    - - -
    -
    - - - -
    -

    The pivot point of the displayObject that it rotates around

    -
    - - - - - -
    - - - - - - - -
    Inherited From:
    -
    - - - - - - - - - - - - - -
    Source - - pixi/display/DisplayObject.js, line 30 -
    - - - - - - - -
    - - - -
    - - - -
    -

    position :Point

    - - -
    -
    - - - -
    -

    The coordinate of the object relative to the local coordinates of the parent.

    -
    - - - - - -
    - - - - - - - -
    Inherited From:
    -
    - - - - - - - - - - - - - -
    Source - - pixi/display/DisplayObject.js, line 14 -
    - - - - - - -
    @@ -5924,67 +5339,6 @@ such as with Buttons or other Input events.

    - - - - -
    - - - -
    -

    renderable :Boolean

    - - -
    -
    - - - -
    -

    Can this object be rendered

    -
    - - - - - -
    - - - - - - - -
    Inherited From:
    -
    - - - - - - - - - - - - - -
    Source - - pixi/display/DisplayObject.js, line 71 -
    - - - - - - -
    @@ -6281,128 +5635,6 @@ This is the same as x + width - offsetX.

    - - - - -
    - - - -
    -

    rotation :Number

    - - -
    -
    - - - -
    -

    The rotation of the object in radians.

    -
    - - - - - -
    - - - - - - - -
    Inherited From:
    -
    - - - - - - - - - - - - - -
    Source - - pixi/display/DisplayObject.js, line 38 -
    - - - - - - - -
    - - - -
    - - - -
    -

    scale :Point

    - - -
    -
    - - - -
    -

    The scale factor of the object.

    -
    - - - - - -
    - - - - - - - -
    Inherited From:
    -
    - - - - - - - - - - - - - -
    Source - - pixi/display/DisplayObject.js, line 22 -
    - - - - - - -
    @@ -6836,67 +6068,6 @@ Will never exceed the maxHealth value.

    - - - - -
    - - - -
    -

    <readonly> stage :Stage

    - - -
    -
    - - - -
    -

    [read-only] The stage the display object is connected to, or undefined if it is not connected to the stage.

    -
    - - - - - -
    - - - - - - - -
    Inherited From:
    -
    - - - - - - - - - - - - - -
    Source - - pixi/display/DisplayObject.js, line 88 -
    - - - - - - -
    @@ -7336,67 +6507,6 @@ This is the same as y - offsetY.

    - - - - -
    - - - -
    -

    visible :Boolean

    - - -
    -
    - - - -
    -

    The visibility of the object.

    -
    - - - - - -
    - - - - - - - -
    Inherited From:
    -
    - - - - - - - - - - - - - -
    Source - - pixi/display/DisplayObject.js, line 54 -
    - - - - - - -
    @@ -7531,7 +6641,7 @@ which contains the x/y coordinates relative to the Game Objects parent.

    <readonly> worldAlpha :Number

    + id="x">x :number
    @@ -7540,7 +6650,7 @@ which contains the x/y coordinates relative to the Game Objects parent.

    -

    [read-only] The multiplied alpha of the displayObject

    +

    The position of the Game Object on the x axis relative to the local coordinates of the parent.

    @@ -7557,7 +6667,7 @@ which contains the x/y coordinates relative to the Game Objects parent.

    Inherited From:
    @@ -7573,7 +6683,7 @@ which contains the x/y coordinates relative to the Game Objects parent.

    Source - - pixi/display/DisplayObject.js, line 97 + gameobjects/components/PhysicsBody.js, line 98
    @@ -7592,7 +6702,7 @@ which contains the x/y coordinates relative to the Game Objects parent.

    <readonly> worldPosition :Point

    + id="y">y :number
    @@ -7601,8 +6711,7 @@ which contains the x/y coordinates relative to the Game Objects parent.

    -

    The position of the Display Object based on the world transform. -This value is updated at the end of updateTransform and takes all parent transforms into account.

    +

    The position of the Game Object on the y axis relative to the local coordinates of the parent.

    @@ -7619,7 +6728,7 @@ This value is updated at the end of updateTransform and takes all parent transfo
    Inherited From:
    @@ -7635,314 +6744,7 @@ This value is updated at the end of updateTransform and takes all parent transfo
    Source - - pixi/display/DisplayObject.js, line 116 -
    - - - - - - - - - - - - - - - -
    -

    <readonly> worldRotation :Number

    - - -
    -
    - - - -
    -

    The rotation of the Display Object, in radians, based on the world transform. -This value is updated at the end of updateTransform and takes all parent transforms into account.

    -
    - - - - - -
    - - - - - - - -
    Inherited From:
    -
    - - - - - - - - - - - - - -
    Source - - pixi/display/DisplayObject.js, line 136 -
    - - - - - - - -
    - - - -
    - - - -
    -

    <readonly> worldScale :Point

    - - -
    -
    - - - -
    -

    The scale of the Display Object based on the world transform. -This value is updated at the end of updateTransform and takes all parent transforms into account.

    -
    - - - - - -
    - - - - - - - -
    Inherited From:
    -
    - - - - - - - - - - - - - -
    Source - - pixi/display/DisplayObject.js, line 126 -
    - - - - - - - -
    - - - -
    - - - -
    -

    worldVisible :Boolean

    - - -
    -
    - - - -
    -

    [read-only] Indicates if the sprite is globally visible.

    -
    - - - - - -
    - - - - - - - -
    Inherited From:
    -
    - - - - - - - - - - - - - -
    Source - - pixi/display/DisplayObject.js, line 258 -
    - - - - - - - -
    - - - -
    - - - -
    -

    x :Number

    - - -
    -
    - - - -
    -

    The position of the displayObject on the x axis relative to the local coordinates of the parent.

    -
    - - - - - -
    - - - - - - - -
    Inherited From:
    -
    - - - - - - - - - - - - - -
    Source - - pixi/display/DisplayObject.js, line 722 -
    - - - - - - - -
    - - - -
    - - - -
    -

    y :Number

    - - -
    -
    - - - -
    -

    The position of the displayObject on the y axis relative to the local coordinates of the parent.

    -
    - - - - - -
    - - - - - - - -
    Inherited From:
    -
    - - - - - - - - - - - - - -
    Source - - pixi/display/DisplayObject.js, line 740 + gameobjects/components/PhysicsBody.js, line 124
    @@ -8031,7 +6833,7 @@ If you wish to re-order the layering of a Game Object then see methods like Grou

    addChild(child) → {PIXI.DisplayObject}

    + id="addChild">addChild(child) → {DisplayObject}
    @@ -8080,7 +6882,7 @@ If you wish to re-order the layering of a Game Object then see methods like Grou -PIXI.DisplayObject +DisplayObject @@ -8107,7 +6909,7 @@ If you wish to re-order the layering of a Game Object then see methods like Grou @@ -8175,7 +6977,7 @@ If you wish to re-order the layering of a Game Object then see methods like Grou

    addChildAt(child, index) → {PIXI.DisplayObject}

    + id="addChildAt">addChildAt(child, index) → {DisplayObject}
    @@ -8224,7 +7026,7 @@ If you wish to re-order the layering of a Game Object then see methods like Grou -PIXI.DisplayObject +DisplayObject @@ -8274,7 +7076,7 @@ If you wish to re-order the layering of a Game Object then see methods like Grou @@ -8977,7 +7779,7 @@ one expands it.

    bringToTop() → {PIXI.DisplayObject}

    + id="bringToTop">bringToTop() → {PIXI.DisplayObject}
    @@ -9007,7 +7809,7 @@ because the World is the root Group from which all Game Objects descend.

    -PIXI.DisplayObject +PIXI.DisplayObject -
    @@ -9403,200 +8205,6 @@ in which case the values are duplicated to a local object.

    -
    - - - -
    -

    generateTexture(resolution, scaleMode, renderer) → {PIXI.RenderTexture}

    - - -
    -
    - - - -
    -

    Useful function that returns a texture of the displayObject object that can then be used to create sprites -This can be quite useful if your displayObject is static / complicated and needs to be reused multiple times.

    -
    - - - - - - - -
    Parameters:
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    NameTypeDescription
    resolution - - -Number - - - -

    The resolution of the texture being generated

    scaleMode - - -Number - - - -

    See {{#crossLink "PIXI/scaleModes:property"}}PIXI.scaleModes{{/crossLink}} for possible values

    renderer - - -PIXI.CanvasRenderer -| - -PIXI.WebGLRenderer - - - -

    The renderer used to generate the texture.

    - - - - -
    Returns:
    -
    - - - -
    - -PIXI.RenderTexture - - - -
    - -
    -

    a texture of the graphics object

    -
    - - - -
    - - - -
    - - - - - - - -
    Inherited From:
    -
    - - - - - - - - - - - - - -
    Source - - pixi/display/DisplayObject.js, line 541 -
    - - - - - - - -
    - - - - - - - - - - -
    @@ -9754,7 +8362,7 @@ on the root most object in this Sprites display list first.

    getChildAt(index) → {PIXI.DisplayObject}

    + id="getChildAt">getChildAt(index) → {DisplayObject}
    @@ -9830,7 +8438,7 @@ on the root most object in this Sprites display list first.

    @@ -9947,7 +8555,7 @@ on the root most object in this Sprites display list first.

    -PIXI.DisplayObject +DisplayObject @@ -10110,7 +8718,7 @@ on the root most object in this Sprites display list first.

    Source - - pixi/display/DisplayObjectContainer.js, line 381 + pixi/display/DisplayObjectContainer.js, line 383
    @@ -11216,7 +9824,7 @@ on the root most object in this Sprites display list first.

    kill() → {PIXI.DisplayObject}

    + id="kill">kill() → {PIXI.DisplayObject}
    @@ -11247,7 +9855,7 @@ it doesn't destroy the object or free it up from memory.

    -PIXI.DisplayObject +PIXI.DisplayObject -
    @@ -11555,7 +10163,7 @@ and swapping it to be the key of the atlas data.

    moveDown() → {PIXI.DisplayObject}

    + id="moveDown">moveDown() → {PIXI.DisplayObject}
    @@ -11585,7 +10193,7 @@ because the World is the root Group from which all Game Objects descend.

    -PIXI.DisplayObject +PIXI.DisplayObject -
    @@ -11653,7 +10261,7 @@ because the World is the root Group from which all Game Objects descend.

    moveUp() → {PIXI.DisplayObject}

    + id="moveUp">moveUp() → {PIXI.DisplayObject}
    @@ -11683,7 +10291,7 @@ because the World is the root Group from which all Game Objects descend.

    -PIXI.DisplayObject +PIXI.DisplayObject -
    @@ -11816,7 +10424,7 @@ It should be fine for low-volume testing where physics isn't required.

    Phaser.Button | -PIXI.DisplayObject +PIXI.DisplayObject @@ -12338,7 +10946,7 @@ If you need to reset an already running animation do so directly on the Animatio

    removeChild(child) → {PIXI.DisplayObject}

    + id="removeChild">removeChild(child) → {DisplayObject}
    @@ -12387,7 +10995,7 @@ If you need to reset an already running animation do so directly on the Animatio -PIXI.DisplayObject +DisplayObject @@ -12414,7 +11022,7 @@ If you need to reset an already running animation do so directly on the Animatio @@ -12482,7 +11090,7 @@ If you need to reset an already running animation do so directly on the Animatio

    removeChildAt(index) → {PIXI.DisplayObject}

    + id="removeChildAt">removeChildAt(index) → {DisplayObject}
    @@ -12558,7 +11166,7 @@ If you need to reset an already running animation do so directly on the Animatio @@ -12821,7 +11429,7 @@ If you need to reset an already running animation do so directly on the Animatio
    Source - - pixi/display/DisplayObjectContainer.js, line 426 + pixi/display/DisplayObjectContainer.js, line 428
    @@ -12898,7 +11506,7 @@ If you need to reset an already running animation do so directly on the Animatio
    Source - - tilemap/TilemapLayer.js, line 1047 + tilemap/TilemapLayer.js, line 1045
    @@ -12925,7 +11533,7 @@ If you need to reset an already running animation do so directly on the Animatio

    reset(x, y, health) → {PIXI.DisplayObject}

    + id="reset">reset(x, y, health) → {PIXI.DisplayObject}
    @@ -13095,7 +11703,7 @@ If you need to reset an already running animation do so directly on the Animatio
    -PIXI.DisplayObject +PIXI.DisplayObject -
    @@ -13697,7 +12305,7 @@ it can be useful to adjust the dimensions directly in this way.

    revive(health) → {PIXI.DisplayObject}

    + id="revive">revive(health) → {PIXI.DisplayObject}
    @@ -13795,7 +12403,7 @@ it can be useful to adjust the dimensions directly in this way.

    -PIXI.DisplayObject +PIXI.DisplayObject -
    @@ -13863,7 +12471,7 @@ it can be useful to adjust the dimensions directly in this way.

    sendToBack() → {PIXI.DisplayObject}

    + id="sendToBack">sendToBack() → {PIXI.DisplayObject}
    @@ -13893,7 +12501,7 @@ because the World is the root Group from which all Game Objects descend.

    -PIXI.DisplayObject +PIXI.DisplayObject -
    @@ -14010,7 +12618,7 @@ because the World is the root Group from which all Game Objects descend.

    -PIXI.DisplayObject +DisplayObject @@ -14721,7 +13329,7 @@ or pass null for the maxX and maxY parame
    Source - - pixi/display/DisplayObjectContainer.js, line 410 + pixi/display/DisplayObjectContainer.js, line 412
    @@ -14977,7 +13585,7 @@ texture this Sprite was using.

    -PIXI.DisplayObject +DisplayObject @@ -15000,7 +13608,7 @@ texture this Sprite was using.

    -PIXI.DisplayObject +DisplayObject @@ -15069,337 +13677,6 @@ texture this Sprite was using.

    - - - - -
    -

    toGlobal(position) → {Point}

    - - -
    -
    - - - -
    -

    Calculates the global position of the display object

    -
    - - - - - - - -
    Parameters:
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    NameTypeDescription
    position - - -Point - - - -

    The world origin to calculate from

    - - - - -
    Returns:
    -
    - - - -
    - -Point - - - -
    - -
    -

    A point object representing the position of this object

    -
    - - - -
    - - - -
    - - - - - - - -
    Inherited From:
    -
    - - - - - - - - - - - - - -
    Source - - pixi/display/DisplayObject.js, line 575 -
    - - - - - - - -
    - - - - - - - - - - - -
    - - - -
    -

    toLocal(position, from) → {Point}

    - - -
    -
    - - - -
    -

    Calculates the local position of the display object relative to another point

    -
    - - - - - - - -
    Parameters:
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    NameTypeArgumentDescription
    position - - -Point - - - - - - - - - -

    The world origin to calculate from

    from - - -PIXI.DisplayObject - - - - - - <optional>
    - - - - - -

    The DisplayObject to calculate the global position from

    - - - - -
    Returns:
    -
    - - - -
    - -Point - - - -
    - -
    -

    A point object representing the position of this object

    -
    - - - -
    - - - -
    - - - - - - - -
    Inherited From:
    -
    - - - - - - - - - - - - - -
    Source - - pixi/display/DisplayObject.js, line 589 -
    - - - - - - - -
    - - - - - - - - - - -
    @@ -15477,81 +13754,6 @@ Remember if this Game Object has any children you should call update on those to - - - - -
    -

    updateCache()

    - - -
    -
    - - - -
    -

    Generates and updates the cached sprite for this object.

    -
    - - - - - - - - - - - -
    - - - - - - - -
    Inherited From:
    -
    - - - - - - - - - - - - - -
    Source - - pixi/display/DisplayObject.js, line 565 -
    - - - - - - - -
    - - - - - - - - - - -
    @@ -15656,7 +13858,7 @@ or the rectangle it references, then you need to update the crop frame by callin Documentation generated by JSDoc 3.3.3 - on Fri Jun 17 2016 12:45:39 GMT+0100 (BST) using the DocStrap template. + on Fri Jul 08 2016 15:42:44 GMT+0100 (GMT Daylight Time) using the DocStrap template. diff --git a/docs/Phaser.TilemapParser.html b/docs/Phaser.TilemapParser.html index c5a7c3f2f..237418ce4 100644 --- a/docs/Phaser.TilemapParser.html +++ b/docs/Phaser.TilemapParser.html @@ -708,10 +708,6 @@ ComplexPrimitiveShader -
  • - DisplayObject -
  • -
  • DisplayObjectContainer
  • @@ -744,6 +740,10 @@ PIXI +
  • + DisplayObject +
  • +
  • PixiFastShader
  • @@ -1324,6 +1324,177 @@
    +
    +

    <static, constant> FLIPPED_DIAGONALLY_FLAG :number

    + + +
    +
    + + + +
    +

    A tiled flag that resides within the 30 bit of the object gid and +indicates whether the tiled/object is flipped diagonally.

    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + +
    Source - + tilemap/TilemapParser.js, line 53 +
    + + + + + + + +
    + + + +
    + + + +
    +

    <static, constant> FLIPPED_HORIZONTALLY_FLAG :number

    + + +
    +
    + + + +
    +

    A tiled flag that resides within the 32 bit of the object gid and +indicates whether the tiled/object is flipped horizontally.

    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + +
    Source - + tilemap/TilemapParser.js, line 35 +
    + + + + + + + +
    + + + +
    + + + +
    +

    <static, constant> FLIPPED_VERTICALLY_FLAG :number

    + + +
    +
    + + + +
    +

    A tiled flag that resides within the 31 bit of the object gid and +indicates whether the tiled/object is flipped vertically.

    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + +
    Source - + tilemap/TilemapParser.js, line 44 +
    + + + + + + + +
    + + + +
    + + +

    <static, constant> INSERT_NULL :boolean

    @@ -1456,7 +1627,7 @@ during the game) then leave the default value set.

    Source - - tilemap/TilemapParser.js, line 135 + tilemap/TilemapParser.js, line 162
    @@ -1802,7 +1973,7 @@ during the game) then leave the default value set.

    Source - - tilemap/TilemapParser.js, line 28 + tilemap/TilemapParser.js, line 55
    @@ -2070,7 +2241,7 @@ during the game) then leave the default value set.

    Source - - tilemap/TilemapParser.js, line 77 + tilemap/TilemapParser.js, line 104
    @@ -2209,7 +2380,7 @@ during the game) then leave the default value set.

    Source - - tilemap/TilemapParser.js, line 197 + tilemap/TilemapParser.js, line 224
    @@ -2258,7 +2429,7 @@ during the game) then leave the default value set.

    Documentation generated by JSDoc 3.3.3 - on Fri Jun 17 2016 12:45:39 GMT+0100 (BST) using the DocStrap template. + on Fri Jul 08 2016 15:42:44 GMT+0100 (GMT Daylight Time) using the DocStrap template. diff --git a/docs/Phaser.Tileset.html b/docs/Phaser.Tileset.html index 5a50641bb..524727ef5 100644 --- a/docs/Phaser.Tileset.html +++ b/docs/Phaser.Tileset.html @@ -708,10 +708,6 @@ ComplexPrimitiveShader -
  • - DisplayObject -
  • -
  • DisplayObjectContainer
  • @@ -744,6 +740,10 @@ PIXI +
  • + DisplayObject +
  • +
  • PixiFastShader
  • @@ -2944,7 +2944,7 @@ Use setSpacing to change.

    Documentation generated by JSDoc 3.3.3 - on Fri Jun 17 2016 12:45:39 GMT+0100 (BST) using the DocStrap template. + on Fri Jul 08 2016 15:42:44 GMT+0100 (GMT Daylight Time) using the DocStrap template. diff --git a/docs/Phaser.Time.html b/docs/Phaser.Time.html index e8ccf5830..acd9dccc9 100644 --- a/docs/Phaser.Time.html +++ b/docs/Phaser.Time.html @@ -708,10 +708,6 @@ ComplexPrimitiveShader -
  • - DisplayObject -
  • -
  • DisplayObjectContainer
  • @@ -744,6 +740,10 @@ PIXI +
  • + DisplayObject +
  • +
  • PixiFastShader
  • @@ -3897,7 +3897,7 @@ it's set to the same value as desiredFps.

    Documentation generated by JSDoc 3.3.3 - on Fri Jun 17 2016 12:45:40 GMT+0100 (BST) using the DocStrap template. + on Fri Jul 08 2016 15:42:44 GMT+0100 (GMT Daylight Time) using the DocStrap template. diff --git a/docs/Phaser.Timer.html b/docs/Phaser.Timer.html index 1c20b52ba..9db72ee91 100644 --- a/docs/Phaser.Timer.html +++ b/docs/Phaser.Timer.html @@ -708,10 +708,6 @@ ComplexPrimitiveShader -
  • - DisplayObject -
  • -
  • DisplayObjectContainer
  • @@ -744,6 +740,10 @@ PIXI +
  • + DisplayObject +
  • +
  • PixiFastShader
  • @@ -4388,7 +4388,7 @@ If the Timer is already running the delay will be calculated based on the timers Documentation generated by JSDoc 3.3.3 - on Fri Jun 17 2016 12:45:40 GMT+0100 (BST) using the DocStrap template. + on Fri Jul 08 2016 15:42:44 GMT+0100 (GMT Daylight Time) using the DocStrap template. diff --git a/docs/Phaser.TimerEvent.html b/docs/Phaser.TimerEvent.html index 51f04d32e..c38d57bce 100644 --- a/docs/Phaser.TimerEvent.html +++ b/docs/Phaser.TimerEvent.html @@ -708,10 +708,6 @@ ComplexPrimitiveShader -
  • - DisplayObject -
  • -
  • DisplayObjectContainer
  • @@ -744,6 +740,10 @@ PIXI +
  • + DisplayObject +
  • +
  • PixiFastShader
  • @@ -2130,7 +2130,7 @@ When the event fires it calls a specific callback with the specified arguments.< Documentation generated by JSDoc 3.3.3 - on Fri Jun 17 2016 12:45:40 GMT+0100 (BST) using the DocStrap template. + on Fri Jul 08 2016 15:42:44 GMT+0100 (GMT Daylight Time) using the DocStrap template. diff --git a/docs/Phaser.Touch.html b/docs/Phaser.Touch.html index f94e6daeb..4bd14568e 100644 --- a/docs/Phaser.Touch.html +++ b/docs/Phaser.Touch.html @@ -708,10 +708,6 @@ ComplexPrimitiveShader -
  • - DisplayObject -
  • -
  • DisplayObjectContainer
  • @@ -744,6 +740,10 @@ PIXI +
  • + DisplayObject +
  • +
  • PixiFastShader
  • @@ -3392,7 +3392,7 @@ Doesn't appear to be supported by most browsers on a canvas element yet.

    Documentation generated by JSDoc 3.3.3 - on Fri Jun 17 2016 12:45:40 GMT+0100 (BST) using the DocStrap template. + on Fri Jul 08 2016 15:42:44 GMT+0100 (GMT Daylight Time) using the DocStrap template. diff --git a/docs/Phaser.Tween.html b/docs/Phaser.Tween.html index fb8618d9a..3573b7a85 100644 --- a/docs/Phaser.Tween.html +++ b/docs/Phaser.Tween.html @@ -708,10 +708,6 @@ ComplexPrimitiveShader -
  • - DisplayObject -
  • -
  • DisplayObjectContainer
  • @@ -744,6 +740,10 @@ PIXI +
  • + DisplayObject +
  • +
  • PixiFastShader
  • @@ -6559,7 +6559,7 @@ If you have child tweens and pass -1 as the index value it sets the repeatDelay Documentation generated by JSDoc 3.3.3 - on Fri Jun 17 2016 12:45:40 GMT+0100 (BST) using the DocStrap template. + on Fri Jul 08 2016 15:42:45 GMT+0100 (GMT Daylight Time) using the DocStrap template. diff --git a/docs/Phaser.TweenData.html b/docs/Phaser.TweenData.html index 874a1c3cb..5bb0108ea 100644 --- a/docs/Phaser.TweenData.html +++ b/docs/Phaser.TweenData.html @@ -708,10 +708,6 @@ ComplexPrimitiveShader -
  • - DisplayObject -
  • -
  • DisplayObjectContainer
  • @@ -744,6 +740,10 @@ PIXI +
  • + DisplayObject +
  • +
  • PixiFastShader
  • @@ -3844,7 +3844,7 @@ For example a Sprite with an x coordinate of 100 could be tweened t Documentation generated by JSDoc 3.3.3 - on Fri Jun 17 2016 12:45:40 GMT+0100 (BST) using the DocStrap template. + on Fri Jul 08 2016 15:42:45 GMT+0100 (GMT Daylight Time) using the DocStrap template. diff --git a/docs/Phaser.TweenManager.html b/docs/Phaser.TweenManager.html index 3266d287b..9c4ec0233 100644 --- a/docs/Phaser.TweenManager.html +++ b/docs/Phaser.TweenManager.html @@ -708,10 +708,6 @@ ComplexPrimitiveShader -
  • - DisplayObject -
  • -
  • DisplayObjectContainer
  • @@ -744,6 +740,10 @@ PIXI +
  • + DisplayObject +
  • +
  • PixiFastShader
  • @@ -2631,7 +2631,7 @@ has actually been through. For very short tweens you may wish to experiment with Documentation generated by JSDoc 3.3.3 - on Fri Jun 17 2016 12:45:40 GMT+0100 (BST) using the DocStrap template. + on Fri Jul 08 2016 15:42:45 GMT+0100 (GMT Daylight Time) using the DocStrap template. diff --git a/docs/Phaser.Utils.Debug.html b/docs/Phaser.Utils.Debug.html index 80362f654..74d792d7c 100644 --- a/docs/Phaser.Utils.Debug.html +++ b/docs/Phaser.Utils.Debug.html @@ -708,10 +708,6 @@ ComplexPrimitiveShader -
  • - DisplayObject -
  • -
  • DisplayObjectContainer
  • @@ -744,6 +740,10 @@ PIXI +
  • + DisplayObject +
  • +
  • PixiFastShader
  • @@ -1249,11 +1249,14 @@
    -

    A collection of methods for displaying debug information about game objects. -If your game is running in WebGL then Debug will create a Sprite that is placed at the top of the Stage display list and bind a canvas texture +

    A collection of methods for displaying debug information about game objects.

    +

    If your game is running in Canvas mode, then you should invoke all of the Debug methods from +your games render function. This is because they are drawn directly onto the game canvas +itself, so if you call any debug methods outside of render they are likely to be overwritten +by the game itself.

    +

    If your game is running in WebGL then Debug will create a Sprite that is placed at the top of the Stage display list and bind a canvas texture to it, which must be uploaded every frame. Be advised: this is very expensive, especially in browsers like Firefox. So please only enable Debug -in WebGL mode if you really need it (or your desktop can cope with it well) and disable it for production! -If your game is using a Canvas renderer then the debug information is literally drawn on the top of the active game canvas and no Sprite is used.

    +in WebGL mode if you really need it (or your desktop can cope with it well) and disable it for production!

    @@ -1336,7 +1339,7 @@ If your game is using a Canvas renderer then the debug information is literally
    Source - - utils/Debug.js, line 18 + utils/Debug.js, line 23
    @@ -1416,7 +1419,7 @@ If your game is using a Canvas renderer then the debug information is literally
    Source - - utils/Debug.js, line 33 + utils/Debug.js, line 38
    @@ -1472,7 +1475,7 @@ If your game is using a Canvas renderer then the debug information is literally
    Source - - utils/Debug.js, line 38 + utils/Debug.js, line 43
    @@ -1528,7 +1531,7 @@ If your game is using a Canvas renderer then the debug information is literally
    Source - - utils/Debug.js, line 54 + utils/Debug.js, line 59
    @@ -1584,7 +1587,7 @@ If your game is using a Canvas renderer then the debug information is literally
    Source - - utils/Debug.js, line 43 + utils/Debug.js, line 48
    @@ -1643,7 +1646,7 @@ If your game is using a Canvas renderer then the debug information is literally
    Source - - utils/Debug.js, line 82 + utils/Debug.js, line 87
    @@ -1699,7 +1702,7 @@ If your game is using a Canvas renderer then the debug information is literally
    Source - - utils/Debug.js, line 70 + utils/Debug.js, line 75
    @@ -1755,7 +1758,7 @@ If your game is using a Canvas renderer then the debug information is literally
    Source - - utils/Debug.js, line 76 + utils/Debug.js, line 81
    @@ -1811,7 +1814,7 @@ If your game is using a Canvas renderer then the debug information is literally
    Source - - utils/Debug.js, line 87 + utils/Debug.js, line 92
    @@ -1870,7 +1873,7 @@ If your game is using a Canvas renderer then the debug information is literally
    Source - - utils/Debug.js, line 49 + utils/Debug.js, line 54
    @@ -1926,7 +1929,7 @@ If your game is using a Canvas renderer then the debug information is literally
    Source - - utils/Debug.js, line 23 + utils/Debug.js, line 28
    @@ -1982,7 +1985,7 @@ If your game is using a Canvas renderer then the debug information is literally
    Source - - utils/Debug.js, line 59 + utils/Debug.js, line 64
    @@ -2038,7 +2041,7 @@ If your game is using a Canvas renderer then the debug information is literally
    Source - - utils/Debug.js, line 64 + utils/Debug.js, line 69
    @@ -2094,7 +2097,7 @@ If your game is using a Canvas renderer then the debug information is literally
    Source - - utils/Debug.js, line 28 + utils/Debug.js, line 33
    @@ -2307,7 +2310,7 @@ To display a P2 Physics body you should enable debug mode on the body when creat
    Source - - utils/Debug.js, line 742 + utils/Debug.js, line 747
    @@ -2551,7 +2554,7 @@ To display a P2 Physics body you should enable debug mode on the body when creat
    Source - - utils/Debug.js, line 776 + utils/Debug.js, line 781
    @@ -2628,7 +2631,7 @@ To display a P2 Physics body you should enable debug mode on the body when creat
    Source - - utils/Debug.js, line 93 + utils/Debug.js, line 98
    @@ -2803,7 +2806,7 @@ This uses the standard debug drawing feature of Box2D, so colors will be decided
    Source - - utils/Debug.js, line 823 + utils/Debug.js, line 828
    @@ -2875,7 +2878,7 @@ the Box2D engine.

    Source - - utils/Debug.js, line 805 + utils/Debug.js, line 810
    @@ -3119,7 +3122,7 @@ the Box2D engine.

    Source - - utils/Debug.js, line 280 + utils/Debug.js, line 285
    @@ -3189,7 +3192,221 @@ the Box2D engine.

    Source - - utils/Debug.js, line 872 + utils/Debug.js, line 877 +
    + + + + + + + +
    + + + + + + + + + + + + + + + +
    +

    geom(object, color, filled)

    + + +
    +
    + + + +
    +

    Renders a Rectangle.

    +
    + + + + + + + +
    Parameters:
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeArgumentDefaultDescription
    object + + +Phaser.Rectangle +| + +object + + + + + + + + + + + +

    The geometry object to render.

    color + + +string + + + + + + <optional>
    + + + + + +
    + +

    Color of the debug info to be rendered (format is css color string).

    filled + + +boolean + + + + + + <optional>
    + + + + + +
    + + true + +

    Render the objected as a filled (default, true) or a stroked (false)

    + + + + + + +
    + + + + + + + + + + + + + + + + + + + +
    Source - + utils/Debug.js, line 645
    @@ -3448,221 +3665,7 @@ the Box2D engine.

    Source - - utils/Debug.js, line 575 -
    - - - - - - - -
    - - - - - - - - - - - -
    - - - -
    -

    geom(object, color, filled)

    - - -
    -
    - - - -
    -

    Renders a Rectangle.

    -
    - - - - - - - -
    Parameters:
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    NameTypeArgumentDefaultDescription
    object - - -Phaser.Rectangle -| - -object - - - - - - - - - - - -

    The geometry object to render.

    color - - -string - - - - - - <optional>
    - - - - - -
    - -

    Color of the debug info to be rendered (format is css color string).

    filled - - -boolean - - - - - - <optional>
    - - - - - -
    - - true - -

    Render the objected as a filled (default, true) or a stroked (false)

    - - - - - - -
    - - - - - - - - - - - - - - - - - - - -
    Source - - utils/Debug.js, line 640 + utils/Debug.js, line 580
    @@ -3871,7 +3874,7 @@ the Box2D engine.

    Source - - utils/Debug.js, line 428 + utils/Debug.js, line 433
    @@ -4115,7 +4118,7 @@ the Box2D engine.

    Source - - utils/Debug.js, line 407 + utils/Debug.js, line 412
    @@ -4192,7 +4195,7 @@ the Box2D engine.

    Source - - utils/Debug.js, line 221 + utils/Debug.js, line 226
    @@ -4436,7 +4439,7 @@ the Box2D engine.

    Source - - utils/Debug.js, line 536 + utils/Debug.js, line 541
    @@ -4682,7 +4685,7 @@ the Box2D engine.

    Source - - utils/Debug.js, line 555 + utils/Debug.js, line 560
    @@ -4973,7 +4976,7 @@ the Box2D engine.

    Source - - utils/Debug.js, line 326 + utils/Debug.js, line 331
    @@ -5050,7 +5053,7 @@ the Box2D engine.

    Source - - utils/Debug.js, line 138 + utils/Debug.js, line 143
    @@ -5192,7 +5195,7 @@ the Box2D engine.

    Source - - utils/Debug.js, line 702 + utils/Debug.js, line 707
    @@ -5262,7 +5265,7 @@ the Box2D engine.

    Source - - utils/Debug.js, line 157 + utils/Debug.js, line 162
    @@ -5435,7 +5438,7 @@ Called by ScaleManager.onSizeChange only in WebGL mode.

    Source - - utils/Debug.js, line 119 + utils/Debug.js, line 124
    @@ -5646,7 +5649,7 @@ Called by ScaleManager.onSizeChange only in WebGL mode.

    Source - - utils/Debug.js, line 467 + utils/Debug.js, line 472
    @@ -5890,7 +5893,7 @@ Called by ScaleManager.onSizeChange only in WebGL mode.

    Source - - utils/Debug.js, line 249 + utils/Debug.js, line 254
    @@ -6104,7 +6107,7 @@ Called by ScaleManager.onSizeChange only in WebGL mode.

    Source - - utils/Debug.js, line 448 + utils/Debug.js, line 453
    @@ -6351,7 +6354,7 @@ Called by ScaleManager.onSizeChange only in WebGL mode.

    Source - - utils/Debug.js, line 510 + utils/Debug.js, line 515
    @@ -6595,7 +6598,7 @@ Called by ScaleManager.onSizeChange only in WebGL mode.

    Source - - utils/Debug.js, line 487 + utils/Debug.js, line 492
    @@ -6842,7 +6845,7 @@ Called by ScaleManager.onSizeChange only in WebGL mode.

    Source - - utils/Debug.js, line 386 + utils/Debug.js, line 391
    @@ -7105,7 +7108,7 @@ Called by ScaleManager.onSizeChange only in WebGL mode.

    Source - - utils/Debug.js, line 176 + utils/Debug.js, line 181
    @@ -7182,7 +7185,7 @@ Called by ScaleManager.onSizeChange only in WebGL mode.

    Source - - utils/Debug.js, line 209 + utils/Debug.js, line 214
    @@ -7439,7 +7442,7 @@ Called by ScaleManager.onSizeChange only in WebGL mode.

    Source - - utils/Debug.js, line 671 + utils/Debug.js, line 676
    @@ -7683,7 +7686,7 @@ Called by ScaleManager.onSizeChange only in WebGL mode.

    Source - - utils/Debug.js, line 307 + utils/Debug.js, line 312
    @@ -7732,7 +7735,7 @@ Called by ScaleManager.onSizeChange only in WebGL mode.

    Documentation generated by JSDoc 3.3.3 - on Fri Jun 17 2016 12:45:40 GMT+0100 (BST) using the DocStrap template. + on Fri Jul 08 2016 15:42:45 GMT+0100 (GMT Daylight Time) using the DocStrap template. diff --git a/docs/Phaser.Utils.html b/docs/Phaser.Utils.html index 1933ea12b..08b90e514 100644 --- a/docs/Phaser.Utils.html +++ b/docs/Phaser.Utils.html @@ -708,10 +708,6 @@ ComplexPrimitiveShader -
  • - DisplayObject -
  • -
  • DisplayObjectContainer
  • @@ -744,6 +740,10 @@ PIXI +
  • + DisplayObject +
  • +
  • PixiFastShader
  • @@ -1473,7 +1473,7 @@
    Source - - utils/Utils.js, line 225 + utils/Utils.js, line 258
    @@ -1635,7 +1635,7 @@
    Source - - utils/Utils.js, line 13 + utils/Utils.js, line 27
    @@ -1777,7 +1777,7 @@ A plain object is an object whose internal class property is [object Object].

    Source - - utils/Utils.js, line 189 + utils/Utils.js, line 222 @@ -1940,7 +1940,7 @@ Based on original code by @mudcube

    Source - - utils/Utils.js, line 357 + utils/Utils.js, line 390
    @@ -2152,7 +2152,7 @@ the result is assigned directly.

    Source - - utils/Utils.js, line 305 + utils/Utils.js, line 338
    @@ -2188,7 +2188,16 @@ the result is assigned directly.

    -

    JavaScript string pad http://www.webtoolkit.info/.

    +

    Takes the given string and pads it out, to the length required, using the character +specified. For example if you need a string to be 6 characters long, you can call:

    +

    pad('bob', 6, '-', 2)

    +

    This would return: bob--- as it has padded it out to 6 characters, using the - on the right.

    +

    You can also use it to pad numbers (they are always returned as strings):

    +

    pad(512, 6, '0', 1)

    +

    Would return: 000512 with the string padded to the left.

    +

    If you don't specify a direction it'll pad to both sides:

    +

    pad('c64', 7, '*')

    +

    Would return: **c64**

    @@ -2254,7 +2263,7 @@ the result is assigned directly.

    -

    The target string.

    +

    The target string. toString() will be called on the string, which means you can also pass in common data types like numbers.

    @@ -2394,7 +2403,7 @@ the result is assigned directly.

    -

    The padded string

    +

    The padded string.

    @@ -2424,7 +2433,7 @@ the result is assigned directly.

    Source - - utils/Utils.js, line 147 + utils/Utils.js, line 161
    @@ -2589,7 +2598,147 @@ the result is assigned directly.

    Source - - utils/Utils.js, line 104 + utils/Utils.js, line 118 +
    + + + + + + + +
    + + + + + + + + + + + +
    + + + +
    +

    <static> reverseString(string) → {string}

    + + +
    +
    + + + +
    +

    Takes the given string and reverses it, returning the reversed string. +For example if given the string Atari 520ST it would return TS025 iratA.

    +
    + + + + + + + +
    Parameters:
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeDescription
    string + + +string + + + +

    The string to be reversed.

    + + + + +
    Returns:
    +
    + + + +
    + +string + + - +
    + +
    +

    The reversed string.

    +
    + + + +
    + + + +
    + + + + + + + + + + + + + + + + + + + +
    Source - + utils/Utils.js, line 13
    @@ -2751,7 +2900,7 @@ the result is assigned directly.

    Source - - utils/Utils.js, line 46 + utils/Utils.js, line 60
    @@ -2892,7 +3041,7 @@ of getting a bonus, call chanceRoll(30) - true means the chance passed, false me
    Source - - utils/Utils.js, line 77 + utils/Utils.js, line 91
    @@ -3054,7 +3203,7 @@ of getting a bonus, call chanceRoll(30) - true means the chance passed, false me
    Source - - utils/Utils.js, line 92 + utils/Utils.js, line 106
    @@ -3103,7 +3252,7 @@ of getting a bonus, call chanceRoll(30) - true means the chance passed, false me Documentation generated by JSDoc 3.3.3 - on Fri Jun 17 2016 12:45:40 GMT+0100 (BST) using the DocStrap template. + on Fri Jul 08 2016 15:42:45 GMT+0100 (GMT Daylight Time) using the DocStrap template. diff --git a/docs/Phaser.Video.html b/docs/Phaser.Video.html index b0a3032cc..a05c6dafc 100644 --- a/docs/Phaser.Video.html +++ b/docs/Phaser.Video.html @@ -708,10 +708,6 @@ ComplexPrimitiveShader -
  • - DisplayObject -
  • -
  • DisplayObjectContainer
  • @@ -744,6 +740,10 @@ PIXI +
  • + DisplayObject +
  • +
  • PixiFastShader
  • @@ -5931,7 +5931,7 @@ Then dispatches the onChangeSource signal.

    Documentation generated by JSDoc 3.3.3 - on Fri Jun 17 2016 12:45:40 GMT+0100 (BST) using the DocStrap template. + on Fri Jul 08 2016 15:42:45 GMT+0100 (GMT Daylight Time) using the DocStrap template. diff --git a/docs/Phaser.Weapon.html b/docs/Phaser.Weapon.html index 0d4b818ce..c8c524774 100644 --- a/docs/Phaser.Weapon.html +++ b/docs/Phaser.Weapon.html @@ -708,10 +708,6 @@ ComplexPrimitiveShader -
  • - DisplayObject -
  • -
  • DisplayObjectContainer
  • @@ -744,6 +740,10 @@ PIXI +
  • + DisplayObject +
  • +
  • PixiFastShader
  • @@ -1474,7 +1474,7 @@ the firing rate, the firing angle, and even set things like gravity for them.

    -

    A bulletKillType constant that automatically kills the bullets after they +

    A bulletKillType constant that automatically kills the bullets after they exceed the bulletDistance from their original firing position.

    @@ -2692,7 +2692,7 @@ Changing this has no effect on bullets in-flight, only on newly spawned bullets.
    -

    If you've set bulletKillType to Phaser.Weapon.KILL_DISTANCE this controls the distance +

    If you've set bulletKillType to Phaser.Weapon.KILL_DISTANCE this controls the distance the Bullet can travel before it is automatically killed. The distance is given in pixels.

    @@ -2831,7 +2831,7 @@ match the position of a tracked sprite or pointer.

    -

    If you've set bulletKillType to Phaser.Weapon.KILL_LIFESPAN this controls the amount +

    If you've set bulletKillType to Phaser.Weapon.KILL_LIFESPAN this controls the amount of lifespan the Bullets have set on launch. The value is given in milliseconds. When a Bullet hits its lifespan limit it will be automatically killed.

    @@ -3061,7 +3061,7 @@ is used to set the starting velocity of the bullets.

    This is a variance added to the speed of Bullets when they are fired. -If bullets have a bulletSpeed value of 200, and a bulletSpeedVariance of 50 +If bullets have a bulletSpeed value of 200, and a bulletSpeedVariance of 50 then the actual speed of the Bullets will be between 150 and 250 pixels per second.

    @@ -3233,7 +3233,7 @@ the world or not. The value is given in pixels.

    -

    The angle at which the bullets are fired. This can be a const such as Phaser.ANGLE_UP +

    The angle at which the bullets are fired. This can be a const such as Phaser.ANGLE_UP or it can be any number from 0 to 360 inclusive, where 0 degrees is to the right.

    @@ -3522,8 +3522,8 @@ firing rate of the Weapon will be between 150 and 250.

    The onFire Signal is dispatched each time Weapon.fire is called, and a Bullet is -successfully launched. The callback is set two arguments: a reference to the Weapon that fired the bullet, -and a reference to the bullet sprite itself.

    +successfully launched. The callback is set two arguments: a reference to the bullet sprite itself, +and a reference to the Weapon that fired the bullet.

    @@ -4446,7 +4446,7 @@ the in-flight bullets have been killed, freeing them up for use by the Weapon ag keep increasing the size of the bullet pool as needed. It will never reduce the size of the pool however, so be careful it doesn't grow too large.

    You can either set the texture key and frame here, or via the Weapon.bulletKey and Weapon.bulletFrame -properties. You can also animate bullets, or set them to use random frames. All Bullets belonging to a +properties. You can also animate bullets, or set them to use random frames. All Bullets belonging to a single Weapon instance must share the same texture key however.

    @@ -7526,7 +7526,7 @@ only track either a Sprite, or a Pointer, at once, but not both.

    Documentation generated by JSDoc 3.3.3 - on Fri Jun 17 2016 12:45:40 GMT+0100 (BST) using the DocStrap template. + on Fri Jul 08 2016 15:42:45 GMT+0100 (GMT Daylight Time) using the DocStrap template. diff --git a/docs/Phaser.World.html b/docs/Phaser.World.html index 9c4b15334..748443a5c 100644 --- a/docs/Phaser.World.html +++ b/docs/Phaser.World.html @@ -708,10 +708,6 @@ ComplexPrimitiveShader -
  • - DisplayObject -
  • -
  • DisplayObjectContainer
  • @@ -744,6 +740,10 @@ PIXI +
  • + DisplayObject +
  • +
  • PixiFastShader
  • @@ -1754,7 +1754,7 @@ the world at world-based coordinates. By default a world is created the same siz
    Source - - core/Group.js, line 2646 + core/Group.js, line 2945
    @@ -1818,7 +1818,74 @@ and on-screen orientation and position.

    Source - - core/Group.js, line 2578 + core/Group.js, line 2594 +
    + + + + + + + +
    + + + +
    + + + +
    +

    bottom :number

    + + +
    +
    + + + +
    +

    The bottom coordinate of this Group.

    +

    It is derived by calling getBounds, calculating the Groups dimensions based on its +visible children.

    +

    Note that no ancestors are factored into the result, meaning that if this Group is +nested within another Group, with heavy transforms on it, the result of this property +is likely to be incorrect. It is safe to get and set this property if the Group is a +top-level descendant of Phaser.World, or untransformed parents.

    +
    + + + + + +
    + + + + + + + +
    Inherited From:
    +
    + + + + + + + + + + + + + +
    Source - + core/Group.js, line 2782
    @@ -1886,69 +1953,6 @@ So if you want to make a game in which the world itself will rotate you should a -
    - - - -
    - - - -
    -

    cacheAsBitmap :Boolean

    - - -
    -
    - - - -
    -

    Set if this display object is cached as a bitmap. -This basically takes a snap shot of the display object as it is at that moment. It can provide a performance benefit for complex static displayObjects. -To remove simply set this property to 'null'

    -
    - - - - - -
    - - - - - - - -
    Inherited From:
    -
    - - - - - - - - - - - - - -
    Source - - pixi/display/DisplayObject.js, line 355 -
    - - - - - - -
    @@ -2628,143 +2632,6 @@ when a new object is created it is passed the following parameters to its constr - - - - -
    - - - -
    -

    filterArea :Rectangle

    - - -
    -
    - - - -
    -

    The area the filter is applied to like the hitArea this is used as more of an optimisation -rather than figuring out the dimensions of the displayObject each frame you can set this rectangle

    -
    - - - - - -
    - - - - - - - -
    Inherited From:
    -
    - - - - - - - - - - - - - -
    Source - - pixi/display/DisplayObject.js, line 164 -
    - - - - - - - -
    - - - -
    - - - -
    -

    filters :Array.<Filter>

    - - -
    -
    - - - -
    -

    Sets the filters for the displayObject. -IMPORTANT: This is a webGL only feature and will be ignored by the Canvas renderer.

    -

    To remove filters simply set this property to 'null'.

    -

    You cannot have a filter and a multiply blend mode active at the same time. Setting a filter will reset -this objects blend mode to NORMAL.

    -
    - - - -
    Type:
    -
      -
    • - -Array.<Filter> - - -
    • -
    - - - -
    - - - - - - - -
    Inherited From:
    -
    - - - - - - - - - - - - - -
    Source - - pixi/display/DisplayObject.js, line 307 -
    - - - - - - -
    @@ -3017,87 +2884,6 @@ sorting and filtering of Group children without touching their z-index (and ther - - - - -
    - - - -
    -

    hitArea :Rectangle|Circle|Ellipse|Polygon

    - - -
    -
    - - - -
    -

    This is the defined area that will pick up mouse / touch events. It is null by default. -Setting it is a neat way of optimising the hitTest function that the interactionManager will use (as it will not need to hit test all the children)

    -
    - - - -
    Type:
    -
      -
    • - -Rectangle -| - -Circle -| - -Ellipse -| - -Polygon - - -
    • -
    - - - -
    - - - - - - - -
    Inherited From:
    -
    - - - - - - - - - - - - - -
    Source - - pixi/display/DisplayObject.js, line 62 -
    - - - - - - -
    @@ -3285,6 +3071,73 @@ on any children added to, or created by, this Group.

    + + + + +
    + + + +
    +

    left :number

    + + +
    +
    + + + +
    +

    The left coordinate of this Group.

    +

    It is derived by calling getBounds, calculating the Groups dimensions based on its +visible children.

    +

    Note that no ancestors are factored into the result, meaning that if this Group is +nested within another Group, with heavy transforms on it, the result of this property +is likely to be incorrect. It is safe to get and set this property if the Group is a +top-level descendant of Phaser.World, or untransformed parents.

    +
    + + + + + +
    + + + + + + + +
    Inherited From:
    +
    + + + + + + + + + + + + + +
    Source - + core/Group.js, line 2683 +
    + + + + + + +
    @@ -3337,70 +3190,7 @@ on any children added to, or created by, this Group.

    Source - - core/Group.js, line 2561 -
    - - - - - - - - - - - - - - - -
    -

    mask :PIXI.Graphics

    - - -
    -
    - - - -
    -

    Sets a mask for the displayObject. A mask is an object that limits the visibility of an object to the shape of the mask applied to it. -In PIXI a regular mask must be a PIXI.Graphics object. This allows for much faster masking in canvas as it utilises shape clipping. -To remove a mask, set this property to null.

    -
    - - - - - -
    - - - - - - - -
    Inherited From:
    -
    - - - - - - - - - - - - - -
    Source - - pixi/display/DisplayObject.js, line 282 + core/Group.js, line 2577
    @@ -3792,67 +3582,6 @@ is still over the Sprite or not.

    -
    - - - -
    - - - -
    -

    <readonly> parent :PIXI.DisplayObjectContainer

    - - -
    -
    - - - -
    -

    [read-only] The display object container that contains this display object.

    -
    - - - - - -
    - - - - - - - -
    Inherited From:
    -
    - - - - - - - - - - - - - -
    Source - - pixi/display/DisplayObject.js, line 79 -
    - - - - - - -
    @@ -4109,128 +3838,6 @@ Phaser.Physics.Arcade.BOTTOM_TOP

    - - - - -
    - - - -
    -

    pivot :Point

    - - -
    -
    - - - -
    -

    The pivot point of the displayObject that it rotates around

    -
    - - - - - -
    - - - - - - - -
    Inherited From:
    -
    - - - - - - - - - - - - - -
    Source - - pixi/display/DisplayObject.js, line 30 -
    - - - - - - - -
    - - - -
    - - - -
    -

    position :Point

    - - -
    -
    - - - -
    -

    The coordinate of the object relative to the local coordinates of the parent.

    -
    - - - - - -
    - - - - - - - -
    Inherited From:
    -
    - - - - - - - - - - - - - -
    Source - - pixi/display/DisplayObject.js, line 14 -
    - - - - - - -
    @@ -4353,7 +3960,7 @@ Phaser.Physics.Arcade.BOTTOM_TOP

    renderable :Boolean

    + id="right">right :number
    @@ -4362,7 +3969,13 @@ Phaser.Physics.Arcade.BOTTOM_TOP

    -

    Can this object be rendered

    +

    The right coordinate of this Group.

    +

    It is derived by calling getBounds, calculating the Groups dimensions based on its +visible children.

    +

    Note that no ancestors are factored into the result, meaning that if this Group is +nested within another Group, with heavy transforms on it, the result of this property +is likely to be incorrect. It is safe to get and set this property if the Group is a +top-level descendant of Phaser.World, or untransformed parents.

    @@ -4379,7 +3992,7 @@ Phaser.Physics.Arcade.BOTTOM_TOP

    Inherited From:
    @@ -4395,7 +4008,7 @@ Phaser.Physics.Arcade.BOTTOM_TOP

    Source - - pixi/display/DisplayObject.js, line 71 + core/Group.js, line 2716
    @@ -4458,7 +4071,7 @@ This will have no impact on the rotation value of its children, but it will upda
    Source - - core/Group.js, line 2630 + core/Group.js, line 2929
    @@ -4477,7 +4090,7 @@ This will have no impact on the rotation value of its children, but it will upda

    scale :Point

    + id="top">top :number
    @@ -4486,7 +4099,13 @@ This will have no impact on the rotation value of its children, but it will upda
    -

    The scale factor of the object.

    +

    The top coordinate of this Group.

    +

    It is derived by calling getBounds, calculating the Groups dimensions based on its +visible children.

    +

    Note that no ancestors are factored into the result, meaning that if this Group is +nested within another Group, with heavy transforms on it, the result of this property +is likely to be incorrect. It is safe to get and set this property if the Group is a +top-level descendant of Phaser.World, or untransformed parents.

    @@ -4503,7 +4122,7 @@ This will have no impact on the rotation value of its children, but it will upda
    Inherited From:
    @@ -4519,68 +4138,7 @@ This will have no impact on the rotation value of its children, but it will upda
    Source - - pixi/display/DisplayObject.js, line 22 -
    - - - - - - - - - - - - - - - -
    -

    <readonly> stage :Stage

    - - -
    -
    - - - -
    -

    [read-only] The stage the display object is connected to, or undefined if it is not connected to the stage.

    -
    - - - - - -
    - - - - - - - -
    Inherited From:
    -
    - - - - - - - - - - - - - -
    Source - - pixi/display/DisplayObject.js, line 88 + core/Group.js, line 2749
    @@ -4641,7 +4199,7 @@ This will have no impact on the rotation value of its children, but it will upda
    Source - - core/Group.js, line 2544 + core/Group.js, line 2560
    @@ -4770,7 +4328,7 @@ This will have no impact on the rotation value of its children, but it will upda
    Source - - core/Group.js, line 2639 + core/Group.js, line 2938
    @@ -4835,314 +4393,6 @@ This will have no impact on the rotation value of its children, but it will upda -
    - - - -
    - - - -
    -

    <readonly> worldAlpha :Number

    - - -
    -
    - - - -
    -

    [read-only] The multiplied alpha of the displayObject

    -
    - - - - - -
    - - - - - - - -
    Inherited From:
    -
    - - - - - - - - - - - - - -
    Source - - pixi/display/DisplayObject.js, line 97 -
    - - - - - - - -
    - - - -
    - - - -
    -

    <readonly> worldPosition :Point

    - - -
    -
    - - - -
    -

    The position of the Display Object based on the world transform. -This value is updated at the end of updateTransform and takes all parent transforms into account.

    -
    - - - - - -
    - - - - - - - -
    Inherited From:
    -
    - - - - - - - - - - - - - -
    Source - - pixi/display/DisplayObject.js, line 116 -
    - - - - - - - -
    - - - -
    - - - -
    -

    <readonly> worldRotation :Number

    - - -
    -
    - - - -
    -

    The rotation of the Display Object, in radians, based on the world transform. -This value is updated at the end of updateTransform and takes all parent transforms into account.

    -
    - - - - - -
    - - - - - - - -
    Inherited From:
    -
    - - - - - - - - - - - - - -
    Source - - pixi/display/DisplayObject.js, line 136 -
    - - - - - - - -
    - - - -
    - - - -
    -

    <readonly> worldScale :Point

    - - -
    -
    - - - -
    -

    The scale of the Display Object based on the world transform. -This value is updated at the end of updateTransform and takes all parent transforms into account.

    -
    - - - - - -
    - - - - - - - -
    Inherited From:
    -
    - - - - - - - - - - - - - -
    Source - - pixi/display/DisplayObject.js, line 126 -
    - - - - - - - -
    - - - -
    - - - -
    -

    worldVisible :Boolean

    - - -
    -
    - - - -
    -

    [read-only] Indicates if the sprite is globally visible.

    -
    - - - - - -
    - - - - - - - -
    Inherited From:
    -
    - - - - - - - - - - - - - -
    Source - - pixi/display/DisplayObject.js, line 258 -
    - - - - - - -
    @@ -5197,7 +4447,7 @@ This will have no impact on the x/y coordinates of its children, but it will upd
    Source - - core/Group.js, line 2612 + core/Group.js, line 2911
    @@ -5260,7 +4510,7 @@ This will have no impact on the x/y coordinates of its children, but it will upd
    Source - - core/Group.js, line 2621 + core/Group.js, line 2920
    @@ -5757,7 +5007,7 @@ this allows you to control child ordering.

    Source - - core/Group.js, line 1374 + core/Group.js, line 1376
    @@ -6025,7 +5275,7 @@ this allows you to control child ordering.

    addChild(child) → {PIXI.DisplayObject}

    + id="addChild">addChild(child) → {DisplayObject}
    @@ -6074,7 +5324,7 @@ this allows you to control child ordering.

    -PIXI.DisplayObject +DisplayObject @@ -6101,7 +5351,7 @@ this allows you to control child ordering.

    @@ -6169,7 +5419,7 @@ this allows you to control child ordering.

    addChildAt(child, index) → {PIXI.DisplayObject}

    + id="addChildAt">addChildAt(child, index) → {DisplayObject}
    @@ -6218,7 +5468,7 @@ this allows you to control child ordering.

    -PIXI.DisplayObject +DisplayObject @@ -6268,7 +5518,7 @@ this allows you to control child ordering.

    @@ -7032,6 +6282,641 @@ This is a constant and can be one of Phaser.TOP_LEFT (default), + + + +
    +

    alignIn(container, position, offsetX, offsetY) → {Phaser.Group}

    + + +
    +
    + + + +
    +

    Aligns this Group within another Game Object, or Rectangle, known as the +'container', to one of 9 possible positions.

    +

    The container must be a Game Object, or Phaser.Rectangle object. This can include properties +such as World.bounds or Camera.view, for aligning Groups within the world +and camera bounds. Or it can include other Sprites, Images, Text objects, BitmapText, +TileSprites or Buttons.

    +

    Please note that aligning a Group to another Game Object does not make it a child of +the container. It simply modifies its position coordinates so it aligns with it.

    +

    The position constants you can use are:

    +

    Phaser.TOP_LEFT, Phaser.TOP_CENTER, Phaser.TOP_RIGHT, Phaser.LEFT_CENTER, +Phaser.CENTER, Phaser.RIGHT_CENTER, Phaser.BOTTOM_LEFT, +Phaser.BOTTOM_CENTER and Phaser.BOTTOM_RIGHT.

    +

    Groups are placed in such a way that their bounds align with the +container, taking into consideration rotation and scale of its children. +This allows you to neatly align Groups, irrespective of their position value.

    +

    The optional offsetX and offsetY arguments allow you to apply extra spacing to the final +aligned position of the Group. For example:

    +

    group.alignIn(background, Phaser.BOTTOM_RIGHT, -20, -20)

    +

    Would align the group to the bottom-right, but moved 20 pixels in from the corner. +Think of the offsets as applying an adjustment to the containers bounds before the alignment takes place. +So providing a negative offset will 'shrink' the container bounds by that amount, and providing a positive +one expands it.

    +
    + + + + + + + +
    Parameters:
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeArgumentDefaultDescription
    container + + +Phaser.Rectangle +| + +Phaser.Sprite +| + +Phaser.Image +| + +Phaser.Text +| + +Phaser.BitmapText +| + +Phaser.Button +| + +Phaser.Graphics +| + +Phaser.TileSprite + + + + + + + + + + + +

    The Game Object or Rectangle with which to align this Group to. Can also include properties such as World.bounds or Camera.view.

    position + + +integer + + + + + + <optional>
    + + + + + +
    + +

    The position constant. One of Phaser.TOP_LEFT (default), Phaser.TOP_CENTER, Phaser.TOP_RIGHT, Phaser.LEFT_CENTER, Phaser.CENTER, Phaser.RIGHT_CENTER, Phaser.BOTTOM_LEFT, Phaser.BOTTOM_CENTER or Phaser.BOTTOM_RIGHT.

    offsetX + + +integer + + + + + + <optional>
    + + + + + +
    + + 0 + +

    A horizontal adjustment of the Containers bounds, applied to the aligned position of the Game Object. Use a negative value to shrink the bounds, positive to increase it.

    offsetY + + +integer + + + + + + <optional>
    + + + + + +
    + + 0 + +

    A vertical adjustment of the Containers bounds, applied to the aligned position of the Game Object. Use a negative value to shrink the bounds, positive to increase it.

    + + + + +
    Returns:
    +
    + + + +
    + +Phaser.Group + + - +
    + +
    +

    This Group.

    +
    + + + +
    + + + +
    + + + + + + + +
    Inherited From:
    +
    + + + + + + + + + + + + + +
    Source - + core/Group.js, line 2815 +
    + + + + + + + +
    + + + + + + + + + + + +
    + + + +
    +

    alignTo(parent, position, offsetX, offsetY) → {Phaser.Group}

    + + +
    +
    + + + +
    +

    Aligns this Group to the side of another Game Object, or Rectangle, known as the +'parent', in one of 11 possible positions.

    +

    The parent must be a Game Object, or Phaser.Rectangle object. This can include properties +such as World.bounds or Camera.view, for aligning Groups within the world +and camera bounds. Or it can include other Sprites, Images, Text objects, BitmapText, +TileSprites or Buttons.

    +

    Please note that aligning a Group to another Game Object does not make it a child of +the parent. It simply modifies its position coordinates so it aligns with it.

    +

    The position constants you can use are:

    +

    Phaser.TOP_LEFT (default), Phaser.TOP_CENTER, Phaser.TOP_RIGHT, Phaser.LEFT_TOP, +Phaser.LEFT_CENTER, Phaser.LEFT_BOTTOM, Phaser.RIGHT_TOP, Phaser.RIGHT_CENTER, +Phaser.RIGHT_BOTTOM, Phaser.BOTTOM_LEFT, Phaser.BOTTOM_CENTER +and Phaser.BOTTOM_RIGHT.

    +

    Groups are placed in such a way that their bounds align with the +parent, taking into consideration rotation and scale of the children. +This allows you to neatly align Groups, irrespective of their position value.

    +

    The optional offsetX and offsetY arguments allow you to apply extra spacing to the final +aligned position of the Group. For example:

    +

    group.alignTo(background, Phaser.BOTTOM_RIGHT, -20, -20)

    +

    Would align the group to the bottom-right, but moved 20 pixels in from the corner. +Think of the offsets as applying an adjustment to the parents bounds before the alignment takes place. +So providing a negative offset will 'shrink' the parent bounds by that amount, and providing a positive +one expands it.

    +
    + + + + + + + +
    Parameters:
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeArgumentDefaultDescription
    parent + + +Phaser.Rectangle +| + +Phaser.Sprite +| + +Phaser.Image +| + +Phaser.Text +| + +Phaser.BitmapText +| + +Phaser.Button +| + +Phaser.Graphics +| + +Phaser.TileSprite + + + + + + + + + + + +

    The Game Object or Rectangle with which to align this Group to. Can also include properties such as World.bounds or Camera.view.

    position + + +integer + + + + + + <optional>
    + + + + + +
    + +

    The position constant. One of Phaser.TOP_LEFT, Phaser.TOP_CENTER, Phaser.TOP_RIGHT, Phaser.LEFT_TOP, Phaser.LEFT_CENTER, Phaser.LEFT_BOTTOM, Phaser.RIGHT_TOP, Phaser.RIGHT_CENTER, Phaser.RIGHT_BOTTOM, Phaser.BOTTOM_LEFT, Phaser.BOTTOM_CENTER or Phaser.BOTTOM_RIGHT.

    offsetX + + +integer + + + + + + <optional>
    + + + + + +
    + + 0 + +

    A horizontal adjustment of the Containers bounds, applied to the aligned position of the Game Object. Use a negative value to shrink the bounds, positive to increase it.

    offsetY + + +integer + + + + + + <optional>
    + + + + + +
    + + 0 + +

    A vertical adjustment of the Containers bounds, applied to the aligned position of the Game Object. Use a negative value to shrink the bounds, positive to increase it.

    + + + + +
    Returns:
    +
    + + + +
    + +Phaser.Group + + - +
    + +
    +

    This Group.

    +
    + + + +
    + + + +
    + + + + + + + +
    Inherited From:
    +
    + + + + + + + + + + + + + +
    Source - + core/Group.js, line 2857 +
    + + + + + + + +
    + + + + + + + + + + +
    @@ -7165,7 +7050,7 @@ This is a constant and can be one of Phaser.TOP_LEFT (default), Source - - core/Group.js, line 1910 + core/Group.js, line 1912 @@ -7386,7 +7271,7 @@ This is a constant and can be one of Phaser.TOP_LEFT (default), Source - - core/Group.js, line 895 + core/Group.js, line 897 @@ -7604,7 +7489,7 @@ After the method parameter and context you can add as many extra parameters as y
    Source - - core/Group.js, line 1529 + core/Group.js, line 1531
    @@ -7803,7 +7688,7 @@ After the method parameter and context you can add as many extra parameters as y
    Source - - core/Group.js, line 1442 + core/Group.js, line 1444
    @@ -7980,7 +7865,7 @@ After the method parameter and context you can add as many extra parameters as y
    Source - - core/Group.js, line 1476 + core/Group.js, line 1478
    @@ -8273,7 +8158,7 @@ After the method parameter and context you can add as many extra parameters as y
    Source - - core/Group.js, line 1341 + core/Group.js, line 1343
    @@ -8542,7 +8427,7 @@ After the method parameter and context you can add as many extra parameters as y
    Source - - core/Group.js, line 1205 + core/Group.js, line 1207
    @@ -8637,7 +8522,7 @@ After the method parameter and context you can add as many extra parameters as y
    Source - - core/Group.js, line 2293 + core/Group.js, line 2309
    @@ -8732,7 +8617,7 @@ After the method parameter and context you can add as many extra parameters as y
    Source - - core/Group.js, line 2281 + core/Group.js, line 2297
    @@ -9572,7 +9457,7 @@ It should return -1 if a > b, 1 if a < b or 0 if
    Source - - core/Group.js, line 1886 + core/Group.js, line 1888
    @@ -9726,7 +9611,7 @@ It should return -1 if a > b, 1 if a < b or 0 if
    Source - - core/Group.js, line 1942 + core/Group.js, line 1944
    @@ -9910,7 +9795,7 @@ It should return -1 if a > b, 1 if a < b or 0 if
    Source - - core/Group.js, line 2507 + core/Group.js, line 2523
    @@ -10104,7 +9989,7 @@ It should return -1 if a > b, 1 if a < b or 0 if
    Source - - core/Group.js, line 1425 + core/Group.js, line 1427
    @@ -10308,7 +10193,7 @@ healthyList.callAll('attack');

    Note: Currently this will skip any

    Source - - core/Group.js, line 1668 + core/Group.js, line 1670
    @@ -10566,7 +10451,7 @@ healthyList.callAll('attack');

    Note: Currently this will skip any

    Source - - core/Group.js, line 1708 + core/Group.js, line 1710
    @@ -10783,7 +10668,7 @@ healthyList.callAll('attack');

    Note: Currently this will skip any

    Source - - core/Group.js, line 1790 + core/Group.js, line 1792
    @@ -11000,7 +10885,7 @@ healthyList.callAll('attack');

    Note: Currently this will skip any

    Source - - core/Group.js, line 1818 + core/Group.js, line 1820
    @@ -11217,201 +11102,7 @@ healthyList.callAll('attack');

    Note: Currently this will skip any

    Source - - core/Group.js, line 1762 -
    - - - - - - - - - - - - - - - - - - - - - - - -
    -

    generateTexture(resolution, scaleMode, renderer) → {PIXI.RenderTexture}

    - - -
    -
    - - - -
    -

    Useful function that returns a texture of the displayObject object that can then be used to create sprites -This can be quite useful if your displayObject is static / complicated and needs to be reused multiple times.

    -
    - - - - - - - -
    Parameters:
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    NameTypeDescription
    resolution - - -Number - - - -

    The resolution of the texture being generated

    scaleMode - - -Number - - - -

    See {{#crossLink "PIXI/scaleModes:property"}}PIXI.scaleModes{{/crossLink}} for possible values

    renderer - - -PIXI.CanvasRenderer -| - -PIXI.WebGLRenderer - - - -

    The renderer used to generate the texture.

    - - - - -
    Returns:
    -
    - - - -
    - -PIXI.RenderTexture - - - -
    - -
    -

    a texture of the graphics object

    -
    - - - -
    - - - -
    - - - - - - - -
    Inherited From:
    -
    - - - - - - - - - - - - - -
    Source - - pixi/display/DisplayObject.js, line 541 + core/Group.js, line 1764
    @@ -11654,7 +11345,7 @@ This can be quite useful if your displayObject is static / complicated and needs
    Source - - core/Group.js, line 2190 + core/Group.js, line 2192
    @@ -11895,7 +11586,7 @@ the same name only the first instance is returned.

    Source - - core/Group.js, line 1030 + core/Group.js, line 1032
    @@ -11922,7 +11613,7 @@ the same name only the first instance is returned.

    getChildAt(index) → {PIXI.DisplayObject}

    + id="getChildAt">getChildAt(index) → {DisplayObject}
    @@ -11998,7 +11689,7 @@ the same name only the first instance is returned.

    @@ -12115,7 +11806,7 @@ the same name only the first instance is returned.

    -PIXI.DisplayObject +DisplayObject @@ -12210,7 +11901,7 @@ the same name only the first instance is returned.

    getClosestTo(object) → {any}

    + id="getClosestTo">getClosestTo(object, callback, callbackContext) → {any}
    @@ -12219,9 +11910,13 @@ the same name only the first instance is returned.

    -

    Get the closest child to given Object.

    +

    Get the closest child to given Object, with optional callback to filter children.

    This can be a Sprite, Group, Image or any object with public x and y properties.

    'close' is determined by the distance from the objects x and y properties compared to the childs x and y properties.

    +

    You can use the optional callback argument to apply your own filter to the distance checks. +If the child is closer then the previous child, it will be sent to callback as the first argument, +with the distance as the second. The callback should return true if it passes your +filtering criteria, otherwise it should return false.

    @@ -12243,6 +11938,8 @@ the same name only the first instance is returned.

    Type + Argument + @@ -12268,6 +11965,14 @@ the same name only the first instance is returned.

    + + + + + + + + @@ -12275,6 +11980,72 @@ the same name only the first instance is returned.

    + + + + callback + + + + + +function + + + + + + + + + <optional>
    + + + + + + + + + + +

    The function that each child will be evaluated against. Each child of the group will be passed to it as its first parameter, with the distance as the second. It should return true if the child passes the matching criteria.

    + + + + + + + callbackContext + + + + + +object + + + + + + + + + <optional>
    + + + + + + + + + + +

    The context in which the function should be called (usually 'this').

    + + + @@ -12294,7 +12065,7 @@ the same name only the first instance is returned.

    -

    The child closest to given object, or null if no child was found.

    +

    The child closest to given object, or null if no child was found.

    @@ -12329,7 +12100,7 @@ the same name only the first instance is returned.

    Source - - core/Group.js, line 2207 + core/Group.js, line 2209
    @@ -12661,7 +12432,7 @@ will be reset and/or have a new texture loaded on it. This is handled by G
    Source - - core/Group.js, line 2074 + core/Group.js, line 2076
    @@ -12993,7 +12764,7 @@ will be reset and/or have a new texture loaded on it. This is handled by G
    Source - - core/Group.js, line 2104 + core/Group.js, line 2106
    @@ -13363,7 +13134,7 @@ will be reset and/or have a new texture loaded on it. This is handled by G
    Source - - core/Group.js, line 2040 + core/Group.js, line 2042
    @@ -13390,7 +13161,7 @@ will be reset and/or have a new texture loaded on it. This is handled by G

    getFurthestFrom(object) → {any}

    + id="getFurthestFrom">getFurthestFrom(object, callback, callbackContext) → {any}
    @@ -13399,9 +13170,13 @@ will be reset and/or have a new texture loaded on it. This is handled by G
    -

    Get the child furthest away from the given Object.

    +

    Get the child furthest away from the given Object, with optional callback to filter children.

    This can be a Sprite, Group, Image or any object with public x and y properties.

    'furthest away' is determined by the distance from the objects x and y properties compared to the childs x and y properties.

    +

    You can use the optional callback argument to apply your own filter to the distance checks. +If the child is closer then the previous child, it will be sent to callback as the first argument, +with the distance as the second. The callback should return true if it passes your +filtering criteria, otherwise it should return false.

    @@ -13423,6 +13198,8 @@ will be reset and/or have a new texture loaded on it. This is handled by G Type + Argument + @@ -13448,6 +13225,14 @@ will be reset and/or have a new texture loaded on it. This is handled by G + + + + + + + + @@ -13455,6 +13240,72 @@ will be reset and/or have a new texture loaded on it. This is handled by G + + + + callback + + + + + +function + + + + + + + + + <optional>
    + + + + + + + + + + +

    The function that each child will be evaluated against. Each child of the group will be passed to it as its first parameter, with the distance as the second. It should return true if the child passes the matching criteria.

    + + + + + + + callbackContext + + + + + +object + + + + + + + + + <optional>
    + + + + + + + + + + +

    The context in which the function should be called (usually 'this').

    + + + @@ -13474,7 +13325,7 @@ will be reset and/or have a new texture loaded on it. This is handled by G
    -

    The child furthest from the given object, or null if no child was found.

    +

    The child furthest from the given object, or null if no child was found.

    @@ -13509,7 +13360,7 @@ will be reset and/or have a new texture loaded on it. This is handled by G
    Source - - core/Group.js, line 2244 + core/Group.js, line 2253
    @@ -13653,7 +13504,7 @@ will be reset and/or have a new texture loaded on it. This is handled by G
    Source - - core/Group.js, line 1017 + core/Group.js, line 1019
    @@ -13748,7 +13599,7 @@ will be reset and/or have a new texture loaded on it. This is handled by G
    Source - - pixi/display/DisplayObjectContainer.js, line 381 + pixi/display/DisplayObjectContainer.js, line 383
    @@ -13951,7 +13802,7 @@ will be reset and/or have a new texture loaded on it. This is handled by G
    Source - - core/Group.js, line 2305 + core/Group.js, line 2321
    @@ -14047,7 +13898,7 @@ will be reset and/or have a new texture loaded on it. This is handled by G
    Source - - core/Group.js, line 2173 + core/Group.js, line 2175
    @@ -14215,7 +14066,7 @@ will be reset and/or have a new texture loaded on it. This is handled by G
    Source - - core/Group.js, line 1092 + core/Group.js, line 1094
    @@ -14574,7 +14425,7 @@ element and the entire array will be applied to the callback function.

    Source - - core/Group.js, line 1967 + core/Group.js, line 1969
    @@ -14773,7 +14624,7 @@ element and the entire array will be applied to the callback function.

    Source - - core/Group.js, line 2375 + core/Group.js, line 2391
    @@ -14917,7 +14768,7 @@ element and the entire array will be applied to the callback function.

    Source - - core/Group.js, line 957 + core/Group.js, line 959
    @@ -15061,7 +14912,7 @@ element and the entire array will be applied to the callback function.

    Source - - core/Group.js, line 933 + core/Group.js, line 935
    @@ -15255,7 +15106,7 @@ element and the entire array will be applied to the callback function.

    Source - - core/Group.js, line 1408 + core/Group.js, line 1410
    @@ -15351,7 +15202,7 @@ element and the entire array will be applied to the callback function.

    Source - - core/Group.js, line 821 + core/Group.js, line 823
    @@ -15433,7 +15284,7 @@ element and the entire array will be applied to the callback function.

    Source - - core/Group.js, line 1647 + core/Group.js, line 1649
    @@ -15515,7 +15366,7 @@ element and the entire array will be applied to the callback function.

    Source - - core/Group.js, line 1602 + core/Group.js, line 1604
    @@ -15611,7 +15462,7 @@ element and the entire array will be applied to the callback function.

    Source - - core/Group.js, line 850 + core/Group.js, line 852
    @@ -15851,7 +15702,7 @@ element and the entire array will be applied to the callback function.

    Source - - core/Group.js, line 2327 + core/Group.js, line 2343
    @@ -16076,7 +15927,7 @@ more than one Game Object sharing the same BaseTexture.

    Source - - core/Group.js, line 2404 + core/Group.js, line 2420
    @@ -16331,7 +16182,7 @@ more than one Game Object sharing the same BaseTexture.

    Source - - core/Group.js, line 2452 + core/Group.js, line 2468
    @@ -16358,7 +16209,7 @@ more than one Game Object sharing the same BaseTexture.

    removeChild(child) → {PIXI.DisplayObject}

    + id="removeChild">removeChild(child) → {DisplayObject}
    @@ -16407,7 +16258,7 @@ more than one Game Object sharing the same BaseTexture.

    -PIXI.DisplayObject +DisplayObject @@ -16434,7 +16285,7 @@ more than one Game Object sharing the same BaseTexture.

    @@ -16502,7 +16353,7 @@ more than one Game Object sharing the same BaseTexture.

    removeChildAt(index) → {PIXI.DisplayObject}

    + id="removeChildAt">removeChildAt(index) → {DisplayObject}
    @@ -16578,7 +16429,7 @@ more than one Game Object sharing the same BaseTexture.

    @@ -16986,7 +16837,7 @@ This call will return false if the child is not in the hash.

    Source - - pixi/display/DisplayObjectContainer.js, line 426 + pixi/display/DisplayObjectContainer.js, line 428
    @@ -17155,7 +17006,7 @@ This call will return false if the child is not in the hash.

    Source - - core/Group.js, line 1053 + core/Group.js, line 1055
    @@ -17458,7 +17309,7 @@ This call will return false if the child is not in the hash.

    Source - - core/Group.js, line 2134 + core/Group.js, line 2136
    @@ -17623,7 +17474,7 @@ This call will return false if the child is not in the hash.

    Source - - core/Group.js, line 794 + core/Group.js, line 796
    @@ -17841,7 +17692,7 @@ This call will return false if the child is not in the hash.

    Source - - core/Group.js, line 1003 + core/Group.js, line 1005
    @@ -17985,7 +17836,7 @@ This call will return false if the child is not in the hash.

    Source - - core/Group.js, line 914 + core/Group.js, line 916
    @@ -18372,7 +18223,7 @@ This call will return false if the child is not in the hash.

    Source - - core/Group.js, line 1234 + core/Group.js, line 1236
    @@ -18706,7 +18557,7 @@ If you need that ability please see Group.setAllChildren.

    Source - - core/Group.js, line 1265 + core/Group.js, line 1267
    @@ -19040,7 +18891,7 @@ Unlike with setAll the property is NOT set on child Groups itself.<
    Source - - core/Group.js, line 1300 + core/Group.js, line 1302
    @@ -19305,7 +19156,7 @@ The Camera bounds and Physics bounds (if set) are also updated to match the new -PIXI.DisplayObject +DisplayObject @@ -19692,7 +19543,7 @@ The Camera bounds and Physics bounds (if set) are also updated to match the new
    Source - - core/Group.js, line 1127 + core/Group.js, line 1129
    @@ -19816,7 +19667,7 @@ The Camera bounds and Physics bounds (if set) are also updated to match the new
    Source - - pixi/display/DisplayObjectContainer.js, line 410 + pixi/display/DisplayObjectContainer.js, line 412
    @@ -20073,7 +19924,7 @@ alphabetical sorting, mixing strings and numbers, and Unicode sorting. See MDN f
    Source - - core/Group.js, line 1846 + core/Group.js, line 1848
    @@ -20346,7 +20197,7 @@ then resets the Camera.

    Source - - core/Group.js, line 1391 + core/Group.js, line 1393
    @@ -20494,7 +20345,7 @@ then resets the Camera.

    Source - - core/Group.js, line 879 + core/Group.js, line 881
    @@ -20570,7 +20421,7 @@ then resets the Camera.

    -PIXI.DisplayObject +DisplayObject @@ -20593,7 +20444,7 @@ then resets the Camera.

    -PIXI.DisplayObject +DisplayObject @@ -20662,337 +20513,6 @@ then resets the Camera.

    -
    - - - -
    -

    toGlobal(position) → {Point}

    - - -
    -
    - - - -
    -

    Calculates the global position of the display object

    -
    - - - - - - - -
    Parameters:
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    NameTypeDescription
    position - - -Point - - - -

    The world origin to calculate from

    - - - - -
    Returns:
    -
    - - - -
    - -Point - - - -
    - -
    -

    A point object representing the position of this object

    -
    - - - -
    - - - -
    - - - - - - - -
    Inherited From:
    -
    - - - - - - - - - - - - - -
    Source - - pixi/display/DisplayObject.js, line 575 -
    - - - - - - - -
    - - - - - - - - - - - -
    - - - -
    -

    toLocal(position, from) → {Point}

    - - -
    -
    - - - -
    -

    Calculates the local position of the display object relative to another point

    -
    - - - - - - - -
    Parameters:
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    NameTypeArgumentDescription
    position - - -Point - - - - - - - - - -

    The world origin to calculate from

    from - - -PIXI.DisplayObject - - - - - - <optional>
    - - - - - -

    The DisplayObject to calculate the global position from

    - - - - -
    Returns:
    -
    - - - -
    - -Point - - - -
    - -
    -

    A point object representing the position of this object

    -
    - - - -
    - - - -
    - - - - - - - -
    Inherited From:
    -
    - - - - - - - - - - - - - -
    Source - - pixi/display/DisplayObject.js, line 589 -
    - - - - - - - -
    - - - - - - - - - - -
    @@ -21054,82 +20574,7 @@ then resets the Camera.

    Source - - core/Group.js, line 1630 -
    - - - - - - - - - - - - - - - - - - - - - - - -
    -

    updateCache()

    - - -
    -
    - - - -
    -

    Generates and updates the cached sprite for this object.

    -
    - - - - - - - - - - - -
    - - - - - - - -
    Inherited From:
    -
    - - - - - - - - - - - - - -
    Source - - pixi/display/DisplayObject.js, line 565 + core/Group.js, line 1632
    @@ -21686,7 +21131,7 @@ then objects won't always be re-positioned correctly, and you'll need to employ
    Source - - core/Group.js, line 981 + core/Group.js, line 983
    @@ -21735,7 +21180,7 @@ then objects won't always be re-positioned correctly, and you'll need to employ Documentation generated by JSDoc 3.3.3 - on Fri Jun 17 2016 12:45:40 GMT+0100 (BST) using the DocStrap template. + on Fri Jul 08 2016 15:42:45 GMT+0100 (GMT Daylight Time) using the DocStrap template. diff --git a/docs/Phaser.html b/docs/Phaser.html index 62e54d78a..5bc10081c 100644 --- a/docs/Phaser.html +++ b/docs/Phaser.html @@ -708,10 +708,6 @@ ComplexPrimitiveShader -
  • - DisplayObject -
  • -
  • DisplayObjectContainer
  • @@ -744,6 +740,10 @@ PIXI +
  • + DisplayObject +
  • +
  • PixiFastShader
  • @@ -2168,7 +2168,7 @@ Documentation generated by JSDoc 3.3.3 - on Fri Jun 17 2016 12:45:29 GMT+0100 (BST) using the DocStrap template. + on Fri Jul 08 2016 15:42:35 GMT+0100 (GMT Daylight Time) using the DocStrap template. diff --git a/docs/classes.list.html b/docs/classes.list.html index 9ddea1cc6..f3c1a1a38 100644 --- a/docs/classes.list.html +++ b/docs/classes.list.html @@ -708,10 +708,6 @@ ComplexPrimitiveShader -
  • - DisplayObject -
  • -
  • DisplayObjectContainer
  • @@ -744,6 +740,10 @@ PIXI +
  • + DisplayObject +
  • +
  • PixiFastShader
  • @@ -2587,14 +2587,6 @@
    -
    - DisplayObject -
    -
    - -
    - -
    DisplayObjectContainer
    @@ -2659,6 +2651,14 @@ +
    + DisplayObject +
    +
    + +
    + +
    PixiFastShader
    @@ -2831,7 +2831,7 @@ Documentation generated by JSDoc 3.3.3 - on Fri Jun 17 2016 12:45:29 GMT+0100 (BST) using the DocStrap template. + on Fri Jul 08 2016 15:42:35 GMT+0100 (GMT Daylight Time) using the DocStrap template. diff --git a/docs/docs_pixi-jsdoc.js.html b/docs/docs_pixi-jsdoc.js.html index 57e259018..baae28dc7 100644 --- a/docs/docs_pixi-jsdoc.js.html +++ b/docs/docs_pixi-jsdoc.js.html @@ -708,10 +708,6 @@ ComplexPrimitiveShader -
  • - DisplayObject -
  • -
  • DisplayObjectContainer
  • @@ -744,6 +740,10 @@ PIXI +
  • + DisplayObject +
  • +
  • PixiFastShader
  • @@ -1229,369 +1229,422 @@ */ /** * @fileoverview -* @author Mat Groves http://matgroves.com/ @Doormat23 -* @sourcefile /Users/rich/Documents/phaser/src/pixi/display/DisplayObject.js +* @author Richard Davey <rich@photonstorm.com> +* @sourcefile d:\wamp\www\phaser\src\pixi\display\DisplayObject.js * @sourceline 1 */ /** -* @class PIXI.DisplayObject -* @description The base class for all objects that are rendered on the screen. -This is an abstract class and should not be used on its own rather it should be extended. -* @sourcefile /Users/rich/Documents/phaser/src/pixi/display/DisplayObject.js -* @sourceline 5 +* @class PIXI.PIXI.DisplayObject +* @description The base class for all objects that are rendered. Contains properties for position, scaling, +rotation, masks and cache handling. + +This is an abstract class and should not be used on its own, rather it should be extended. + +It is used internally by the likes of PIXI.Sprite. +* @sourcefile d:\wamp\www\phaser\src\pixi\display\DisplayObject.js +* @sourceline 7 */ /** -* @description The coordinate of the object relative to the local coordinates of the parent. -* @member PIXI.DisplayObject#position -* @type {Point} -* @sourcefile /Users/rich/Documents/phaser/src/pixi/display/DisplayObject.js -* @sourceline 14 +* @description The coordinates, in pixels, of this DisplayObject, relative to its parent container. + +The value of this property does not reflect any positioning happening further up the display list. +To obtain that value please see the `worldPosition` property. +* @member PIXI.PIXI.DisplayObject#position +* @type {PIXIPoint} +* @default +* @sourcefile d:\wamp\www\phaser\src\pixi\display\DisplayObject.js +* @sourceline 20 */ /** -* @description The scale factor of the object. -* @member PIXI.DisplayObject#scale -* @type {Point} -* @sourcefile /Users/rich/Documents/phaser/src/pixi/display/DisplayObject.js -* @sourceline 22 +* @description The scale of this DisplayObject. A scale of 1:1 represents the DisplayObject +at its default size. A value of 0.5 would scale this DisplayObject by half, and so on. + +The value of this property does not reflect any scaling happening further up the display list. +To obtain that value please see the `worldScale` property. +* @member PIXI.PIXI.DisplayObject#scale +* @type {PIXIPoint} +* @default +* @sourcefile d:\wamp\www\phaser\src\pixi\display\DisplayObject.js +* @sourceline 31 */ /** -* @description The pivot point of the displayObject that it rotates around -* @member PIXI.DisplayObject#pivot -* @type {Point} -* @sourcefile /Users/rich/Documents/phaser/src/pixi/display/DisplayObject.js -* @sourceline 30 +* @description The pivot point of this DisplayObject that it rotates around. The values are expressed +in pixel values. +* @member PIXI.PIXI.DisplayObject#pivot +* @type {PIXIPoint} +* @default +* @sourcefile d:\wamp\www\phaser\src\pixi\display\DisplayObject.js +* @sourceline 43 */ /** -* @description The rotation of the object in radians. -* @member PIXI.DisplayObject#rotation +* @description The rotation of this DisplayObject. The value is given, and expressed, in radians, and is based on +a right-handed orientation. + +The value of this property does not reflect any rotation happening further up the display list. +To obtain that value please see the `worldRotation` property. +* @member PIXI.PIXI.DisplayObject#rotation * @type {Number} -* @sourcefile /Users/rich/Documents/phaser/src/pixi/display/DisplayObject.js -* @sourceline 38 +* @default +* @sourcefile d:\wamp\www\phaser\src\pixi\display\DisplayObject.js +* @sourceline 51 */ /** -* @description The opacity of the object. -* @member PIXI.DisplayObject#alpha +* @description The alpha value of this DisplayObject. A value of 1 is fully opaque. A value of 0 is transparent. +Please note that an object with an alpha value of 0 is skipped during the render pass. + +The value of this property does not reflect any alpha values set further up the display list. +To obtain that value please see the `worldAlpha` property. +* @member PIXI.PIXI.DisplayObject#alpha * @type {Number} -* @sourcefile /Users/rich/Documents/phaser/src/pixi/display/DisplayObject.js -* @sourceline 46 +* @default +* @sourcefile d:\wamp\www\phaser\src\pixi\display\DisplayObject.js +* @sourceline 63 */ /** -* @description The visibility of the object. -* @member PIXI.DisplayObject#visible +* @description The visibility of this DisplayObject. A value of `false` makes the object invisible. +A value of `true` makes it visible. Please note that an object with a visible value of +`false` is skipped during the render pass. Equally a DisplayObject with visible false will +not render any of its children. + +The value of this property does not reflect any visible values set further up the display list. +To obtain that value please see the `worldVisible` property. +* @member PIXI.PIXI.DisplayObject#visible * @type {Boolean} -* @sourcefile /Users/rich/Documents/phaser/src/pixi/display/DisplayObject.js -* @sourceline 54 +* @default +* @sourcefile d:\wamp\www\phaser\src\pixi\display\DisplayObject.js +* @sourceline 75 */ /** * @description This is the defined area that will pick up mouse / touch events. It is null by default. Setting it is a neat way of optimising the hitTest function that the interactionManager will use (as it will not need to hit test all the children) -* @member PIXI.DisplayObject#hitArea +* @member PIXI.PIXI.DisplayObject#hitArea * @type {(Rectangle|Circle|Ellipse|Polygon)} -* @sourcefile /Users/rich/Documents/phaser/src/pixi/display/DisplayObject.js -* @sourceline 62 +* @sourcefile d:\wamp\www\phaser\src\pixi\display\DisplayObject.js +* @sourceline 89 */ /** -* @description Can this object be rendered -* @member PIXI.DisplayObject#renderable +* @description Should this DisplayObject be rendered by the renderer? An object with a renderable value of +`false` is skipped during the render pass. +* @member PIXI.PIXI.DisplayObject#renderable * @type {Boolean} -* @sourcefile /Users/rich/Documents/phaser/src/pixi/display/DisplayObject.js -* @sourceline 71 +* @default +* @sourcefile d:\wamp\www\phaser\src\pixi\display\DisplayObject.js +* @sourceline 98 */ /** -* @description [read-only] The display object container that contains this display object. -* @member PIXI.DisplayObject#parent -* @type {PIXI.DisplayObjectContainer} +* @description The parent DisplayObjectContainer that this DisplayObject is a child of. +All DisplayObjects must belong to a parent in order to be rendered. +The root parent is the Stage object. This property is set automatically when the +DisplayObject is added to, or removed from, a DisplayObjectContainer. +* @member PIXI.PIXI.DisplayObject#parent +* @type {PIXIDisplayObjectContainer} * @readonly -* @sourcefile /Users/rich/Documents/phaser/src/pixi/display/DisplayObject.js -* @sourceline 79 +* @default +* @sourcefile d:\wamp\www\phaser\src\pixi\display\DisplayObject.js +* @sourceline 107 */ /** -* @description [read-only] The stage the display object is connected to, or undefined if it is not connected to the stage. -* @member PIXI.DisplayObject#stage -* @type {Stage} +* @description The stage that this DisplayObject is connected to. +* @member PIXI.PIXI.DisplayObject#stage +* @type {PIXIStage} * @readonly -* @sourcefile /Users/rich/Documents/phaser/src/pixi/display/DisplayObject.js -* @sourceline 88 +* @default +* @sourcefile d:\wamp\www\phaser\src\pixi\display\DisplayObject.js +* @sourceline 119 */ /** -* @description [read-only] The multiplied alpha of the displayObject -* @member PIXI.DisplayObject#worldAlpha +* @description The multiplied alpha value of this DisplayObject. A value of 1 is fully opaque. A value of 0 is transparent. +This value is the calculated total, based on the alpha values of all parents of this DisplayObjects +in the display list. + +To obtain, and set, the local alpha value, see the `alpha` property. + +Note: This property is only updated at the end of the `updateTransform` call, once per render. Until +that happens this property will contain values based on the previous frame. Be mindful of this if +accessing this property outside of the normal game flow, i.e. from an asynchronous event callback. +* @member PIXI.PIXI.DisplayObject#worldAlpha * @type {Number} * @readonly -* @sourcefile /Users/rich/Documents/phaser/src/pixi/display/DisplayObject.js -* @sourceline 97 +* @sourcefile d:\wamp\www\phaser\src\pixi\display\DisplayObject.js +* @sourceline 128 */ /** -* @description [read-only] Current transform of the object based on world (parent) factors -* @member PIXI.DisplayObject#worldTransform -* @type {Matrix} +* @description The current transform of this DisplayObject. + +This property contains the calculated total, based on the transforms of all parents of this +DisplayObject in the display list. + +Note: This property is only updated at the end of the `updateTransform` call, once per render. Until +that happens this property will contain values based on the previous frame. Be mindful of this if +accessing this property outside of the normal game flow, i.e. from an asynchronous event callback. +* @member PIXI.PIXI.DisplayObject#worldTransform +* @type {PIXIMatrix} * @readonly -* @access private -* @sourcefile /Users/rich/Documents/phaser/src/pixi/display/DisplayObject.js -* @sourceline 106 +* @sourcefile d:\wamp\www\phaser\src\pixi\display\DisplayObject.js +* @sourceline 144 */ /** -* @description The position of the Display Object based on the world transform. -This value is updated at the end of updateTransform and takes all parent transforms into account. -* @member PIXI.DisplayObject#worldPosition -* @type {Point} +* @description The coordinates, in pixels, of this DisplayObject within the world. + +This property contains the calculated total, based on the positions of all parents of this +DisplayObject in the display list. + +Note: This property is only updated at the end of the `updateTransform` call, once per render. Until +that happens this property will contain values based on the previous frame. Be mindful of this if +accessing this property outside of the normal game flow, i.e. from an asynchronous event callback. +* @member PIXI.PIXI.DisplayObject#worldPosition +* @type {PIXIPoint} * @readonly -* @sourcefile /Users/rich/Documents/phaser/src/pixi/display/DisplayObject.js -* @sourceline 116 +* @sourcefile d:\wamp\www\phaser\src\pixi\display\DisplayObject.js +* @sourceline 159 */ /** -* @description The scale of the Display Object based on the world transform. -This value is updated at the end of updateTransform and takes all parent transforms into account. -* @member PIXI.DisplayObject#worldScale -* @type {Point} +* @description The global scale of this DisplayObject. + +This property contains the calculated total, based on the scales of all parents of this +DisplayObject in the display list. + +Note: This property is only updated at the end of the `updateTransform` call, once per render. Until +that happens this property will contain values based on the previous frame. Be mindful of this if +accessing this property outside of the normal game flow, i.e. from an asynchronous event callback. +* @member PIXI.PIXI.DisplayObject#worldScale +* @type {PIXIPoint} * @readonly -* @sourcefile /Users/rich/Documents/phaser/src/pixi/display/DisplayObject.js -* @sourceline 126 +* @sourcefile d:\wamp\www\phaser\src\pixi\display\DisplayObject.js +* @sourceline 174 */ /** -* @description The rotation of the Display Object, in radians, based on the world transform. -This value is updated at the end of updateTransform and takes all parent transforms into account. -* @member PIXI.DisplayObject#worldRotation +* @description The rotation, in radians, of this DisplayObject. + +This property contains the calculated total, based on the rotations of all parents of this +DisplayObject in the display list. + +Note: This property is only updated at the end of the `updateTransform` call, once per render. Until +that happens this property will contain values based on the previous frame. Be mindful of this if +accessing this property outside of the normal game flow, i.e. from an asynchronous event callback. +* @member PIXI.PIXI.DisplayObject#worldRotation * @type {Number} * @readonly -* @sourcefile /Users/rich/Documents/phaser/src/pixi/display/DisplayObject.js -* @sourceline 136 +* @sourcefile d:\wamp\www\phaser\src\pixi\display\DisplayObject.js +* @sourceline 189 */ /** -* @description cached sin rotation and cos rotation -* @member PIXI.DisplayObject#_sr +* @description The rectangular area used by filters when rendering a shader for this DisplayObject. +* @member PIXI.PIXI.DisplayObject#filterArea +* @type {Rectangle} +* @default +* @sourcefile d:\wamp\www\phaser\src\pixi\display\DisplayObject.js +* @sourceline 204 +*/ +/** +* @member PIXI.PIXI.DisplayObject#_sr - Cached rotation value. * @type {Number} * @access private -* @sourcefile /Users/rich/Documents/phaser/src/pixi/display/DisplayObject.js -* @sourceline 146 +* @sourcefile d:\wamp\www\phaser\src\pixi\display\DisplayObject.js +* @sourceline 213 */ /** -* @description cached sin rotation and cos rotation -* @member PIXI.DisplayObject#_cr +* @member PIXI.PIXI.DisplayObject#_cr - Cached rotation value. * @type {Number} * @access private -* @sourcefile /Users/rich/Documents/phaser/src/pixi/display/DisplayObject.js -* @sourceline 155 +* @sourcefile d:\wamp\www\phaser\src\pixi\display\DisplayObject.js +* @sourceline 219 */ /** -* @description The area the filter is applied to like the hitArea this is used as more of an optimisation -rather than figuring out the dimensions of the displayObject each frame you can set this rectangle -* @member PIXI.DisplayObject#filterArea -* @type {Rectangle} -* @sourcefile /Users/rich/Documents/phaser/src/pixi/display/DisplayObject.js -* @sourceline 164 -*/ -/** -* @description The original, cached bounds of the object -* @member PIXI.DisplayObject#_bounds -* @type {Rectangle} +* @member PIXI.PIXI.DisplayObject#_bounds - The cached bounds of this object. +* @type {PIXIRectangle} * @access private -* @sourcefile /Users/rich/Documents/phaser/src/pixi/display/DisplayObject.js -* @sourceline 173 +* @sourcefile d:\wamp\www\phaser\src\pixi\display\DisplayObject.js +* @sourceline 225 */ /** -* @description The most up-to-date bounds of the object -* @member PIXI.DisplayObject#_currentBounds -* @type {Rectangle} +* @member PIXI.PIXI.DisplayObject#_currentBounds - The most recently calculated bounds of this object. +* @type {PIXIRectangle} * @access private -* @sourcefile /Users/rich/Documents/phaser/src/pixi/display/DisplayObject.js -* @sourceline 182 +* @sourcefile d:\wamp\www\phaser\src\pixi\display\DisplayObject.js +* @sourceline 231 */ /** -* @description The original, cached mask of the object -* @member PIXI.DisplayObject#_mask -* @type {Rectangle} +* @member PIXI.PIXI.DisplayObject#_mask - The cached mask of this object. +* @type {PIXIRectangle} * @access private -* @sourcefile /Users/rich/Documents/phaser/src/pixi/display/DisplayObject.js -* @sourceline 191 +* @sourcefile d:\wamp\www\phaser\src\pixi\display\DisplayObject.js +* @sourceline 237 */ /** -* @description Cached internal flag. -* @member PIXI.DisplayObject#_cacheAsBitmap +* @member PIXI.PIXI.DisplayObject#_cacheAsBitmap - Internal cache as bitmap flag. * @type {Boolean} * @access private -* @sourcefile /Users/rich/Documents/phaser/src/pixi/display/DisplayObject.js -* @sourceline 200 +* @sourcefile d:\wamp\www\phaser\src\pixi\display\DisplayObject.js +* @sourceline 243 */ /** -* @description Cached internal flag. -* @member PIXI.DisplayObject#_cacheIsDirty +* @member PIXI.PIXI.DisplayObject#_cacheIsDirty - Internal dirty cache flag. * @type {Boolean} * @access private -* @sourcefile /Users/rich/Documents/phaser/src/pixi/display/DisplayObject.js -* @sourceline 209 +* @sourcefile d:\wamp\www\phaser\src\pixi\display\DisplayObject.js +* @sourceline 249 */ /** * @description Destroy this DisplayObject. -Removes all references to transformCallbacks, its parent, the stage, filters, bounds, mask and cached Sprites. -* @method PIXI.DisplayObject#destroy -* @sourcefile /Users/rich/Documents/phaser/src/pixi/display/DisplayObject.js -* @sourceline 223 -*/ -/** -* @description [read-only] Indicates if the sprite is globally visible. -* @member PIXI.DisplayObject#worldVisible -* @type {Boolean} -* @sourcefile /Users/rich/Documents/phaser/src/pixi/display/DisplayObject.js -* @sourceline 258 -*/ -/** -* @description Sets a mask for the displayObject. A mask is an object that limits the visibility of an object to the shape of the mask applied to it. -In PIXI a regular mask must be a PIXI.Graphics object. This allows for much faster masking in canvas as it utilises shape clipping. -To remove a mask, set this property to null. -* @member PIXI.DisplayObject#mask -* @type {PIXI.Graphics} -* @sourcefile /Users/rich/Documents/phaser/src/pixi/display/DisplayObject.js -* @sourceline 282 -*/ -/** -* @description Sets the filters for the displayObject. -IMPORTANT: This is a webGL only feature and will be ignored by the Canvas renderer. -To remove filters simply set this property to 'null'. +Removes any cached sprites, sets renderable flag to false, and nulls references to the Stage, filters, +bounds and mask. -You cannot have a filter and a multiply blend mode active at the same time. Setting a filter will reset -this objects blend mode to NORMAL. -* @member PIXI.DisplayObject#filters -* @type {Array<Filter>} -* @sourcefile /Users/rich/Documents/phaser/src/pixi/display/DisplayObject.js -* @sourceline 307 +Also iteratively calls `destroy` on any children. +* @method PIXI.PIXI.DisplayObject#PIXI.DisplayObject#destroy +* @sourcefile d:\wamp\www\phaser\src\pixi\display\DisplayObject.js +* @sourceline 261 */ /** -* @description Set if this display object is cached as a bitmap. -This basically takes a snap shot of the display object as it is at that moment. It can provide a performance benefit for complex static displayObjects. -To remove simply set this property to 'null' -* @member PIXI.DisplayObject#cacheAsBitmap -* @type {Boolean} -* @sourcefile /Users/rich/Documents/phaser/src/pixi/display/DisplayObject.js -* @sourceline 355 +* @description Sets the root Stage object that this DisplayObject is connected to. +* @method PIXI.PIXI.DisplayObject#PIXI.DisplayObject#setStageReference +* @param {PhaserStage} stage - - The stage that the object will have as its current stage reference +* @return {PIXIDisplayObject} - A reference to this DisplayObject. +* @sourcefile d:\wamp\www\phaser\src\pixi\display\DisplayObject.js +* @sourceline 414 */ /** -* @description Retrieves the bounds of the displayObject as a rectangle object -* @method PIXI.DisplayObject#getBounds -* @param {Matrix} matrix - -* @return {Rectangle} the rectangular bounding area -* @sourcefile /Users/rich/Documents/phaser/src/pixi/display/DisplayObject.js -* @sourceline 497 +* @description To be overridden by classes that require it. +* @method PIXI.PIXI.DisplayObject#PIXI.DisplayObject#preUpdate +* @sourcefile d:\wamp\www\phaser\src\pixi\display\DisplayObject.js +* @sourceline 429 */ /** -* @description Retrieves the local bounds of the displayObject as a rectangle object -* @method PIXI.DisplayObject#getLocalBounds -* @return {Rectangle} the rectangular bounding area -* @sourcefile /Users/rich/Documents/phaser/src/pixi/display/DisplayObject.js -* @sourceline 510 +* @description Generates a RenderTexture based on this DisplayObject, which can they be used to texture other Sprites. +This can be useful if your DisplayObject is static, or complicated, and needs to be reused multiple times. + +Please note that no garbage collection takes place on old textures. It is up to you to destroy old textures, +and references to them, so they don't linger in memory. +* @method PIXI.PIXI.DisplayObject#PIXI.DisplayObject#generateTexture +* @param {Number} [resolution=1] - - The resolution of the texture being generated. +* @param {Number} [scaleMode=PIXI.scaleModes.DEFAULT] - - See {{#crossLink "PIXI/scaleModes:property"}}PIXI.scaleModes{{/crossLink}} for possible values. +* @param {(PIXICanvasRenderer|PIXIWebGLRenderer)} renderer - - The renderer used to generate the texture. +* @return {PIXIRenderTexture} - A RenderTexture containing an image of this DisplayObject at the time it was invoked. +* @sourcefile d:\wamp\www\phaser\src\pixi\display\DisplayObject.js +* @sourceline 438 */ /** -* @description Sets the object's stage reference, the stage this object is connected to -* @method PIXI.DisplayObject#setStageReference -* @param {Stage} stage - the stage that the object will have as its current stage reference -* @sourcefile /Users/rich/Documents/phaser/src/pixi/display/DisplayObject.js -* @sourceline 521 +* @description If this DisplayObject has a cached Sprite, this method generates and updates it. +* @method PIXI.PIXI.DisplayObject#PIXI.DisplayObject#updateCache +* @return {PIXIDisplayObject} - A reference to this DisplayObject. +* @sourcefile d:\wamp\www\phaser\src\pixi\display\DisplayObject.js +* @sourceline 466 */ /** -* @description Empty, to be overridden by classes that require it. -* @method PIXI.DisplayObject#preUpdate -* @sourcefile /Users/rich/Documents/phaser/src/pixi/display/DisplayObject.js -* @sourceline 532 +* @description Calculates the global position of this DisplayObject, based on the position given. +* @method PIXI.PIXI.DisplayObject#PIXI.DisplayObject#toGlobal +* @param {PIXIPoint} position - - The global position to calculate from. +* @return {PIXIPoint} - A point object representing the position of this DisplayObject based on the global position given. +* @sourcefile d:\wamp\www\phaser\src\pixi\display\DisplayObject.js +* @sourceline 480 */ /** -* @description Useful function that returns a texture of the displayObject object that can then be used to create sprites -This can be quite useful if your displayObject is static / complicated and needs to be reused multiple times. -* @method PIXI.DisplayObject#generateTexture -* @param {Number} resolution - The resolution of the texture being generated -* @param {Number} scaleMode - See {{#crossLink "PIXI/scaleModes:property"}}PIXI.scaleModes{{/crossLink}} for possible values -* @param {(PIXI.CanvasRenderer|PIXI.WebGLRenderer)} renderer - The renderer used to generate the texture. -* @return {PIXI.RenderTexture} a texture of the graphics object -* @sourcefile /Users/rich/Documents/phaser/src/pixi/display/DisplayObject.js -* @sourceline 541 -*/ -/** -* @description Generates and updates the cached sprite for this object. -* @method PIXI.DisplayObject#updateCache -* @sourcefile /Users/rich/Documents/phaser/src/pixi/display/DisplayObject.js -* @sourceline 565 -*/ -/** -* @description Calculates the global position of the display object -* @method PIXI.DisplayObject#toGlobal -* @param {Point} position - The world origin to calculate from -* @return {Point} A point object representing the position of this object -* @sourcefile /Users/rich/Documents/phaser/src/pixi/display/DisplayObject.js -* @sourceline 575 -*/ -/** -* @description Calculates the local position of the display object relative to another point -* @method PIXI.DisplayObject#toLocal -* @param {Point} position - The world origin to calculate from -* @param {PIXI.DisplayObject} [from] - The DisplayObject to calculate the global position from -* @return {Point} A point object representing the position of this object -* @sourcefile /Users/rich/Documents/phaser/src/pixi/display/DisplayObject.js -* @sourceline 589 +* @description Calculates the local position of this DisplayObject, relative to another point. +* @method PIXI.PIXI.DisplayObject#PIXI.DisplayObject#toLocal +* @param {PIXIPoint} position - - The world origin to calculate from. +* @param {PIXIDisplayObject} [from] - - An optional DisplayObject to calculate the global position from. +* @return {PIXIPoint} - A point object representing the position of this DisplayObject based on the global position given. +* @sourcefile d:\wamp\www\phaser\src\pixi\display\DisplayObject.js +* @sourceline 495 */ /** * @description Internal method. -* @method PIXI.DisplayObject#_renderCachedSprite -* @param {Object} renderSession - The render session +* @method PIXI.PIXI.DisplayObject#PIXI.DisplayObject#_renderCachedSprite +* @param {Object} renderSession - - The render session * @access private -* @sourcefile /Users/rich/Documents/phaser/src/pixi/display/DisplayObject.js -* @sourceline 610 +* @sourcefile d:\wamp\www\phaser\src\pixi\display\DisplayObject.js +* @sourceline 516 */ /** * @description Internal method. -* @method PIXI.DisplayObject#_generateCachedSprite +* @method PIXI.PIXI.DisplayObject#PIXI.DisplayObject#_generateCachedSprite * @access private -* @sourcefile /Users/rich/Documents/phaser/src/pixi/display/DisplayObject.js -* @sourceline 631 +* @sourcefile d:\wamp\www\phaser\src\pixi\display\DisplayObject.js +* @sourceline 538 */ /** -* @description Destroys the cached sprite. -* @method PIXI.DisplayObject#_destroyCachedSprite +* @description Destroys a cached Sprite. +* @method PIXI.PIXI.DisplayObject#PIXI.DisplayObject#_destroyCachedSprite * @access private -* @sourcefile /Users/rich/Documents/phaser/src/pixi/display/DisplayObject.js -* @sourceline 678 +* @sourcefile d:\wamp\www\phaser\src\pixi\display\DisplayObject.js +* @sourceline 586 */ /** -* @description Renders the object using the WebGL renderer -* @method PIXI.DisplayObject#_renderWebGL -* @param {RenderSession} renderSession - -* @access private -* @sourcefile /Users/rich/Documents/phaser/src/pixi/display/DisplayObject.js -* @sourceline 694 -*/ -/** -* @description Renders the object using the Canvas renderer -* @method PIXI.DisplayObject#_renderCanvas -* @param {RenderSession} renderSession - -* @access private -* @sourcefile /Users/rich/Documents/phaser/src/pixi/display/DisplayObject.js -* @sourceline 708 -*/ -/** -* @description The position of the displayObject on the x axis relative to the local coordinates of the parent. -* @member PIXI.DisplayObject#x +* @description The horizontal position of the DisplayObject, in pixels, relative to its parent. +If you need the world position of the DisplayObject, use `DisplayObject.worldPosition` instead. +* @member PIXI.PIXI.DisplayObject#x - The horizontal position of the DisplayObject, in pixels, relative to its parent. * @type {Number} -* @sourcefile /Users/rich/Documents/phaser/src/pixi/display/DisplayObject.js -* @sourceline 722 +* @sourcefile d:\wamp\www\phaser\src\pixi\display\DisplayObject.js +* @sourceline 612 */ /** -* @description The position of the displayObject on the y axis relative to the local coordinates of the parent. -* @member PIXI.DisplayObject#y +* @description The vertical position of the DisplayObject, in pixels, relative to its parent. +If you need the world position of the DisplayObject, use `DisplayObject.worldPosition` instead. +* @member PIXI.PIXI.DisplayObject#y - The vertical position of the DisplayObject, in pixels, relative to its parent. * @type {Number} -* @sourcefile /Users/rich/Documents/phaser/src/pixi/display/DisplayObject.js -* @sourceline 740 +* @sourcefile d:\wamp\www\phaser\src\pixi\display\DisplayObject.js +* @sourceline 634 +*/ +/** +* @description Indicates if this DisplayObject is visible, based on it, and all of its parents, `visible` property values. +* @member PIXI.PIXI.DisplayObject#worldVisible - Indicates if this DisplayObject is visible, based on it, and all of its parents, `visible` property values. +* @type {Boolean} +* @sourcefile d:\wamp\www\phaser\src\pixi\display\DisplayObject.js +* @sourceline 656 +*/ +/** +* @description Sets a mask for this DisplayObject. A mask is an instance of a Graphics object. +When applied it limits the visible area of this DisplayObject to the shape of the mask. +Under a Canvas renderer it uses shape clipping. Under a WebGL renderer it uses a Stencil Buffer. +To remove a mask, set this property to `null`. +* @member PIXI.PIXI.DisplayObject#mask - The mask applied to this DisplayObject. Set to `null` to remove an existing mask. +* @type {PIXIGraphics} +* @sourcefile d:\wamp\www\phaser\src\pixi\display\DisplayObject.js +* @sourceline 691 +*/ +/** +* @description Sets the filters for this DisplayObject. This is a WebGL only feature, and is ignored by the Canvas +Renderer. A filter is a shader applied to this DisplayObject. You can modify the placement of the filter +using `DisplayObject.filterArea`. + +To remove filters, set this property to `null`. + +Note: You cannot have a filter set, and a MULTIPLY Blend Mode active, at the same time. Setting a +filter will reset this DisplayObjects blend mode to NORMAL. +* @member PIXI.PIXI.DisplayObject#filters - An Array of PIXI.AbstractFilter objects, or objects that extend them. +* @type {Array} +* @sourcefile d:\wamp\www\phaser\src\pixi\display\DisplayObject.js +* @sourceline 726 +*/ +/** +* @description Sets if this DisplayObject should be cached as a bitmap. + +When invoked it will take a snapshot of the DisplayObject, as it is at that moment, and store it +in a RenderTexture. This is then used whenever this DisplayObject is rendered. It can provide a +performance benefit for complex, but static, DisplayObjects. I.e. those with lots of children. + +Cached Bitmaps do not track their parents. If you update a property of this DisplayObject, it will not +re-generate the cached bitmap automatically. To do that you need to call `DisplayObject.updateCache`. + +To remove a cached bitmap, set this property to `null`. +* @member PIXI.PIXI.DisplayObject#cacheAsBitmap - Cache this DisplayObject as a Bitmap. Set to `null` to remove an existing cached bitmap. +* @type {Boolean} +* @sourcefile d:\wamp\www\phaser\src\pixi\display\DisplayObject.js +* @sourceline 779 */ /** * @fileoverview * @author Mat Groves http://matgroves.com/ @Doormat23 -* @sourcefile /Users/rich/Documents/phaser/src/pixi/display/DisplayObjectContainer.js +* @sourcefile d:\wamp\www\phaser\src\pixi\display\DisplayObjectContainer.js * @sourceline 1 */ /** * @class PIXI.DisplayObjectContainer * @description A DisplayObjectContainer represents a collection of display objects. It is the base class of all display objects that act as a container for other objects. -* @augments PIXI.DisplayObject -* @sourcefile /Users/rich/Documents/phaser/src/pixi/display/DisplayObjectContainer.js +* @augments DisplayObject +* @sourcefile d:\wamp\www\phaser\src\pixi\display\DisplayObjectContainer.js * @sourceline 5 */ /** @@ -1599,7 +1652,7 @@ It is the base class of all display objects that act as a container for other ob * @member PIXI.DisplayObjectContainer#children * @type {Array<DisplayObject>} * @readonly -* @sourcefile /Users/rich/Documents/phaser/src/pixi/display/DisplayObjectContainer.js +* @sourcefile d:\wamp\www\phaser\src\pixi\display\DisplayObjectContainer.js * @sourceline 17 */ /** @@ -1611,86 +1664,86 @@ Note that this property isn't recursive: only immediate children are influenced, * @member PIXI.DisplayObjectContainer#ignoreChildInput * @type {Boolean} * @default -* @sourcefile /Users/rich/Documents/phaser/src/pixi/display/DisplayObjectContainer.js +* @sourcefile d:\wamp\www\phaser\src\pixi\display\DisplayObjectContainer.js * @sourceline 26 */ /** * @description The width of the displayObjectContainer, setting this will actually modify the scale to achieve the value set * @member PIXI.DisplayObjectContainer#width * @type {Number} -* @sourcefile /Users/rich/Documents/phaser/src/pixi/display/DisplayObjectContainer.js +* @sourcefile d:\wamp\www\phaser\src\pixi\display\DisplayObjectContainer.js * @sourceline 43 */ /** * @description The height of the displayObjectContainer, setting this will actually modify the scale to achieve the value set * @member PIXI.DisplayObjectContainer#height * @type {Number} -* @sourcefile /Users/rich/Documents/phaser/src/pixi/display/DisplayObjectContainer.js +* @sourcefile d:\wamp\www\phaser\src\pixi\display\DisplayObjectContainer.js * @sourceline 72 */ /** * @description Adds a child to the container. * @method PIXI.DisplayObjectContainer#addChild -* @param {PIXI.DisplayObject} child - The DisplayObject to add to the container -* @return {PIXI.DisplayObject} The child that was added. -* @sourcefile /Users/rich/Documents/phaser/src/pixi/display/DisplayObjectContainer.js +* @param {DisplayObject} child - The DisplayObject to add to the container +* @return {DisplayObject} The child that was added. +* @sourcefile d:\wamp\www\phaser\src\pixi\display\DisplayObjectContainer.js * @sourceline 102 */ /** * @description Adds a child to the container at a specified index. If the index is out of bounds an error will be thrown * @method PIXI.DisplayObjectContainer#addChildAt -* @param {PIXI.DisplayObject} child - The child to add +* @param {DisplayObject} child - The child to add * @param {Number} index - The index to place the child in -* @return {PIXI.DisplayObject} The child that was added. -* @sourcefile /Users/rich/Documents/phaser/src/pixi/display/DisplayObjectContainer.js +* @return {DisplayObject} The child that was added. +* @sourcefile d:\wamp\www\phaser\src\pixi\display\DisplayObjectContainer.js * @sourceline 114 */ /** * @description Swaps the position of 2 Display Objects within this container. * @method PIXI.DisplayObjectContainer#swapChildren -* @param {PIXI.DisplayObject} child - -* @param {PIXI.DisplayObject} child2 - -* @sourcefile /Users/rich/Documents/phaser/src/pixi/display/DisplayObjectContainer.js +* @param {DisplayObject} child - +* @param {DisplayObject} child2 - +* @sourcefile d:\wamp\www\phaser\src\pixi\display\DisplayObjectContainer.js * @sourceline 145 */ /** * @description Returns the index position of a child DisplayObject instance * @method PIXI.DisplayObjectContainer#getChildIndex -* @param {PIXI.DisplayObject} child - The DisplayObject instance to identify +* @param {DisplayObject} child - The DisplayObject instance to identify * @return {Number} The index position of the child display object to identify -* @sourcefile /Users/rich/Documents/phaser/src/pixi/display/DisplayObjectContainer.js +* @sourcefile d:\wamp\www\phaser\src\pixi\display\DisplayObjectContainer.js * @sourceline 170 */ /** * @description Changes the position of an existing child in the display object container * @method PIXI.DisplayObjectContainer#setChildIndex -* @param {PIXI.DisplayObject} child - The child DisplayObject instance for which you want to change the index number +* @param {DisplayObject} child - The child DisplayObject instance for which you want to change the index number * @param {Number} index - The resulting index number for the child display object -* @sourcefile /Users/rich/Documents/phaser/src/pixi/display/DisplayObjectContainer.js +* @sourcefile d:\wamp\www\phaser\src\pixi\display\DisplayObjectContainer.js * @sourceline 187 */ /** * @description Returns the child at the specified index * @method PIXI.DisplayObjectContainer#getChildAt * @param {Number} index - The index to get the child from -* @return {PIXI.DisplayObject} The child at the given index, if any. -* @sourcefile /Users/rich/Documents/phaser/src/pixi/display/DisplayObjectContainer.js +* @return {DisplayObject} The child at the given index, if any. +* @sourcefile d:\wamp\www\phaser\src\pixi\display\DisplayObjectContainer.js * @sourceline 205 */ /** * @description Removes a child from the container. * @method PIXI.DisplayObjectContainer#removeChild -* @param {PIXI.DisplayObject} child - The DisplayObject to remove -* @return {PIXI.DisplayObject} The child that was removed. -* @sourcefile /Users/rich/Documents/phaser/src/pixi/display/DisplayObjectContainer.js +* @param {DisplayObject} child - The DisplayObject to remove +* @return {DisplayObject} The child that was removed. +* @sourcefile d:\wamp\www\phaser\src\pixi\display\DisplayObjectContainer.js * @sourceline 222 */ /** * @description Removes a child from the specified index position. * @method PIXI.DisplayObjectContainer#removeChildAt * @param {Number} index - The index to get the child from -* @return {PIXI.DisplayObject} The child that was removed. -* @sourcefile /Users/rich/Documents/phaser/src/pixi/display/DisplayObjectContainer.js +* @return {DisplayObject} The child that was removed. +* @sourcefile d:\wamp\www\phaser\src\pixi\display\DisplayObjectContainer.js * @sourceline 237 */ /** @@ -1698,56 +1751,56 @@ Note that this property isn't recursive: only immediate children are influenced, * @method PIXI.DisplayObjectContainer#removeChildren * @param {Number} beginIndex - The beginning position. Default value is 0. * @param {Number} endIndex - The ending position. Default value is size of the container. -* @sourcefile /Users/rich/Documents/phaser/src/pixi/display/DisplayObjectContainer.js +* @sourcefile d:\wamp\www\phaser\src\pixi\display\DisplayObjectContainer.js * @sourceline 255 */ /** * @description Retrieves the bounds of the displayObjectContainer as a rectangle. The bounds calculation takes all visible children into consideration. * @method PIXI.DisplayObjectContainer#getBounds * @return {Rectangle} The rectangular bounding area -* @sourcefile /Users/rich/Documents/phaser/src/pixi/display/DisplayObjectContainer.js +* @sourcefile d:\wamp\www\phaser\src\pixi\display\DisplayObjectContainer.js * @sourceline 318 */ /** * @description Retrieves the non-global local bounds of the displayObjectContainer as a rectangle. The calculation takes all visible children into consideration. * @method PIXI.DisplayObjectContainer#getLocalBounds * @return {Rectangle} The rectangular bounding area -* @sourcefile /Users/rich/Documents/phaser/src/pixi/display/DisplayObjectContainer.js -* @sourceline 381 +* @sourcefile d:\wamp\www\phaser\src\pixi\display\DisplayObjectContainer.js +* @sourceline 383 */ /** * @description Sets the containers Stage reference. This is the Stage that this object, and all of its children, is connected to. * @method PIXI.DisplayObjectContainer#setStageReference * @param {Stage} stage - the stage that the container will have as its current stage reference -* @sourcefile /Users/rich/Documents/phaser/src/pixi/display/DisplayObjectContainer.js -* @sourceline 410 +* @sourcefile d:\wamp\www\phaser\src\pixi\display\DisplayObjectContainer.js +* @sourceline 412 */ /** * @description Removes the current stage reference from the container and all of its children. * @method PIXI.DisplayObjectContainer#removeStageReference -* @sourcefile /Users/rich/Documents/phaser/src/pixi/display/DisplayObjectContainer.js -* @sourceline 426 +* @sourcefile d:\wamp\www\phaser\src\pixi\display\DisplayObjectContainer.js +* @sourceline 428 */ /** * @description Renders the object using the WebGL renderer * @method PIXI.DisplayObjectContainer#_renderWebGL * @param {RenderSession} renderSession - * @access private -* @sourcefile /Users/rich/Documents/phaser/src/pixi/display/DisplayObjectContainer.js -* @sourceline 441 +* @sourcefile d:\wamp\www\phaser\src\pixi\display\DisplayObjectContainer.js +* @sourceline 443 */ /** * @description Renders the object using the Canvas renderer * @method PIXI.DisplayObjectContainer#_renderCanvas * @param {RenderSession} renderSession - * @access private -* @sourcefile /Users/rich/Documents/phaser/src/pixi/display/DisplayObjectContainer.js -* @sourceline 499 +* @sourcefile d:\wamp\www\phaser\src\pixi\display\DisplayObjectContainer.js +* @sourceline 501 */ /** * @fileoverview * @author Mat Groves http://matgroves.com/ @Doormat23 -* @sourcefile /Users/rich/Documents/phaser/src/pixi/display/Sprite.js +* @sourcefile d:\wamp\www\phaser\src\pixi\display\Sprite.js * @sourceline 1 */ /** @@ -1760,7 +1813,7 @@ A sprite can be created directly from an image like this : var sprite = new PIXI.Sprite.fromImage('assets/image.png'); yourStage.addChild(sprite); then obviously don't forget to add it to the stage you have already created -* @sourcefile /Users/rich/Documents/phaser/src/pixi/display/Sprite.js +* @sourcefile d:\wamp\www\phaser\src\pixi\display\Sprite.js * @sourceline 5 */ /** @@ -1770,14 +1823,14 @@ Setting than anchor to 0.5,0.5 means the textures origin is centered Setting the anchor to 1,1 would mean the textures origin points will be the bottom right corner * @member PIXI.Sprite#anchor * @type {Point} -* @sourcefile /Users/rich/Documents/phaser/src/pixi/display/Sprite.js +* @sourcefile d:\wamp\www\phaser\src\pixi\display\Sprite.js * @sourceline 22 */ /** * @description The texture that the sprite is using * @member PIXI.Sprite#texture * @type {PIXI.Texture} -* @sourcefile /Users/rich/Documents/phaser/src/pixi/display/Sprite.js +* @sourcefile d:\wamp\www\phaser\src\pixi\display\Sprite.js * @sourceline 33 */ /** @@ -1785,7 +1838,7 @@ Setting the anchor to 1,1 would mean the textures origin points will be the bott * @member PIXI.Sprite#_width * @type {Number} * @access private -* @sourcefile /Users/rich/Documents/phaser/src/pixi/display/Sprite.js +* @sourcefile d:\wamp\www\phaser\src\pixi\display\Sprite.js * @sourceline 41 */ /** @@ -1793,7 +1846,7 @@ Setting the anchor to 1,1 would mean the textures origin points will be the bott * @member PIXI.Sprite#_height * @type {Number} * @access private -* @sourcefile /Users/rich/Documents/phaser/src/pixi/display/Sprite.js +* @sourcefile d:\wamp\www\phaser\src\pixi\display\Sprite.js * @sourceline 50 */ /** @@ -1801,7 +1854,7 @@ Setting the anchor to 1,1 would mean the textures origin points will be the bott * @member PIXI.Sprite#tint * @type {Number} * @default 0xFFFFFF -* @sourcefile /Users/rich/Documents/phaser/src/pixi/display/Sprite.js +* @sourcefile d:\wamp\www\phaser\src\pixi\display\Sprite.js * @sourceline 59 */ /** @@ -1810,7 +1863,7 @@ Setting the anchor to 1,1 would mean the textures origin points will be the bott * @type {Number} * @default -1 * @access private -* @sourcefile /Users/rich/Documents/phaser/src/pixi/display/Sprite.js +* @sourcefile d:\wamp\www\phaser\src\pixi\display\Sprite.js * @sourceline 68 */ /** @@ -1818,7 +1871,7 @@ Setting the anchor to 1,1 would mean the textures origin points will be the bott * @member PIXI.Sprite#tintedTexture * @type {Canvas} * @default null -* @sourcefile /Users/rich/Documents/phaser/src/pixi/display/Sprite.js +* @sourcefile d:\wamp\www\phaser\src\pixi\display\Sprite.js * @sourceline 78 */ /** @@ -1828,7 +1881,7 @@ Warning: You cannot have a blend mode and a filter active on the same Sprite. Do * @member PIXI.Sprite#blendMode * @type {Number} * @default PIXI.blendModes.NORMAL; -* @sourcefile /Users/rich/Documents/phaser/src/pixi/display/Sprite.js +* @sourcefile d:\wamp\www\phaser\src\pixi\display\Sprite.js * @sourceline 87 */ /** @@ -1836,7 +1889,7 @@ Warning: You cannot have a blend mode and a filter active on the same Sprite. Do * @member PIXI.Sprite#shader * @type {PIXI.AbstractFilter} * @default null -* @sourcefile /Users/rich/Documents/phaser/src/pixi/display/Sprite.js +* @sourcefile d:\wamp\www\phaser\src\pixi\display\Sprite.js * @sourceline 98 */ /** @@ -1844,21 +1897,21 @@ Warning: You cannot have a blend mode and a filter active on the same Sprite. Do * @member PIXI.Sprite#exists * @type {Boolean} * @default true -* @sourcefile /Users/rich/Documents/phaser/src/pixi/display/Sprite.js +* @sourcefile d:\wamp\www\phaser\src\pixi\display\Sprite.js * @sourceline 107 */ /** * @description The width of the sprite, setting this will actually modify the scale to achieve the value set * @member PIXI.Sprite#width * @type {Number} -* @sourcefile /Users/rich/Documents/phaser/src/pixi/display/Sprite.js +* @sourcefile d:\wamp\www\phaser\src\pixi\display\Sprite.js * @sourceline 129 */ /** * @description The height of the sprite, setting this will actually modify the scale to achieve the value set * @member PIXI.Sprite#height * @type {Number} -* @sourcefile /Users/rich/Documents/phaser/src/pixi/display/Sprite.js +* @sourcefile d:\wamp\www\phaser\src\pixi\display\Sprite.js * @sourceline 148 */ /** @@ -1867,7 +1920,7 @@ texture this Sprite was using. * @method PIXI.Sprite#setTexture * @param {PIXI.Texture} texture - The PIXI texture that is displayed by the sprite * @param {Boolean} [destroy=false] - Call Texture.destroy on the current texture before replacing it with the new one? -* @sourcefile /Users/rich/Documents/phaser/src/pixi/display/Sprite.js +* @sourcefile d:\wamp\www\phaser\src\pixi\display\Sprite.js * @sourceline 167 */ /** @@ -1875,7 +1928,7 @@ texture this Sprite was using. * @method PIXI.Sprite#onTextureUpdate * @param {} event - * @access private -* @sourcefile /Users/rich/Documents/phaser/src/pixi/display/Sprite.js +* @sourcefile d:\wamp\www\phaser\src\pixi\display\Sprite.js * @sourceline 189 */ /** @@ -1891,7 +1944,7 @@ on the root most object in this Sprites display list first. * @method PIXI.Sprite#getBounds * @param {Matrix} matrix - the transformation matrix of the sprite * @return {Rectangle} the framing rectangle -* @sourcefile /Users/rich/Documents/phaser/src/pixi/display/Sprite.js +* @sourcefile d:\wamp\www\phaser\src\pixi\display\Sprite.js * @sourceline 203 */ /** @@ -1900,7 +1953,7 @@ on the root most object in this Sprites display list first. * @param {RenderSession} renderSession - * @param {Matrix} [matrix] - - Optional matrix. If provided the Display Object will be rendered using this matrix, otherwise it will use its worldTransform. * @access private -* @sourcefile /Users/rich/Documents/phaser/src/pixi/display/Sprite.js +* @sourcefile d:\wamp\www\phaser\src\pixi\display\Sprite.js * @sourceline 319 */ /** @@ -1909,31 +1962,13 @@ on the root most object in this Sprites display list first. * @param {RenderSession} renderSession - * @param {Matrix} [matrix] - - Optional matrix. If provided the Display Object will be rendered using this matrix, otherwise it will use its worldTransform. * @access private -* @sourcefile /Users/rich/Documents/phaser/src/pixi/display/Sprite.js +* @sourcefile d:\wamp\www\phaser\src\pixi\display\Sprite.js * @sourceline 389 */ /** -* @description Helper function that creates a sprite that will contain a texture from the TextureCache based on the frameId - The frame ids are created when a Texture packer file has been loaded -* @method PIXI.Sprite.fromFrame -* @param {String} frameId - The frame Id of the texture in the cache -* @return {PIXI.Sprite} A new Sprite using a texture from the texture cache matching the frameId -* @sourcefile /Users/rich/Documents/phaser/src/pixi/display/Sprite.js -* @sourceline 497 -*/ -/** -* @description Helper function that creates a sprite that will contain a texture based on an image url - If the image is not in the texture cache it will be loaded -* @method PIXI.Sprite.fromImage -* @param {String} imageId - The image url of the texture -* @return {PIXI.Sprite} A new Sprite using a texture from the texture cache matching the image id -* @sourcefile /Users/rich/Documents/phaser/src/pixi/display/Sprite.js -* @sourceline 516 -*/ -/** * @fileoverview * @author Mat Groves http://matgroves.com/ -* @sourcefile /Users/rich/Documents/phaser/src/pixi/display/SpriteBatch.js +* @sourcefile d:\wamp\www\phaser\src\pixi\display\SpriteBatch.js * @sourceline 1 */ /** @@ -1953,7 +1988,7 @@ And it's extremely easy to use : } And here you have a hundred sprites that will be renderer at the speed of light * @param {PIXI.Texture} texture - -* @sourcefile /Users/rich/Documents/phaser/src/pixi/display/SpriteBatch.js +* @sourcefile d:\wamp\www\phaser\src\pixi\display\SpriteBatch.js * @sourceline 5 */ /** @@ -1961,7 +1996,7 @@ And here you have a hundred sprites that will be renderer at the speed of light * @method PIXI.SpriteBatch#_renderWebGL * @param {RenderSession} renderSession - * @access private -* @sourcefile /Users/rich/Documents/phaser/src/pixi/display/SpriteBatch.js +* @sourcefile d:\wamp\www\phaser\src\pixi\display\SpriteBatch.js * @sourceline 64 */ /** @@ -1969,13 +2004,13 @@ And here you have a hundred sprites that will be renderer at the speed of light * @method PIXI.SpriteBatch#_renderCanvas * @param {RenderSession} renderSession - * @access private -* @sourcefile /Users/rich/Documents/phaser/src/pixi/display/SpriteBatch.js +* @sourcefile d:\wamp\www\phaser\src\pixi\display\SpriteBatch.js * @sourceline 96 */ /** * @fileoverview * @author Mat Groves http://matgroves.com/ @Doormat23 -* @sourcefile /Users/rich/Documents/phaser/src/pixi/extras/Rope.js +* @sourcefile d:\wamp\www\phaser\src\pixi\extras\Rope.js * @sourceline 1 */ /** @@ -1983,13 +2018,13 @@ And here you have a hundred sprites that will be renderer at the speed of light * @augments PIXI.Strip * @param {PIXI.Texture} texture - - The texture to use on the rope. * @param {Array} points - - An array of {PIXI.Point}. -* @sourcefile /Users/rich/Documents/phaser/src/pixi/extras/Rope.js +* @sourcefile d:\wamp\www\phaser\src\pixi\extras\Rope.js * @sourceline 6 */ /** * @fileoverview * @author Mat Groves http://matgroves.com/ -* @sourcefile /Users/rich/Documents/phaser/src/pixi/extras/Strip.js +* @sourcefile d:\wamp\www\phaser\src\pixi\extras\Strip.js * @sourceline 1 */ /** @@ -1998,21 +2033,21 @@ And here you have a hundred sprites that will be renderer at the speed of light * @param {PIXI.Texture} texture - The texture to use * @param {Number} width - the width * @param {Number} height - the height -* @sourcefile /Users/rich/Documents/phaser/src/pixi/extras/Strip.js +* @sourcefile d:\wamp\www\phaser\src\pixi\extras\Strip.js * @sourceline 5 */ /** * @description The texture of the strip * @member PIXI.Strip#texture * @type {PIXI.Texture} -* @sourcefile /Users/rich/Documents/phaser/src/pixi/extras/Strip.js +* @sourcefile d:\wamp\www\phaser\src\pixi\extras\Strip.js * @sourceline 20 */ /** * @description Whether the strip is dirty or not * @member PIXI.Strip#dirty * @type {Boolean} -* @sourcefile /Users/rich/Documents/phaser/src/pixi/extras/Strip.js +* @sourcefile d:\wamp\www\phaser\src\pixi\extras\Strip.js * @sourceline 43 */ /** @@ -2020,14 +2055,14 @@ And here you have a hundred sprites that will be renderer at the speed of light * @member PIXI.Strip#blendMode * @type {Number} * @default PIXI.blendModes.NORMAL; -* @sourcefile /Users/rich/Documents/phaser/src/pixi/extras/Strip.js +* @sourcefile d:\wamp\www\phaser\src\pixi\extras\Strip.js * @sourceline 51 */ /** * @description Triangles in canvas mode are automatically antialiased, use this value to force triangles to overlap a bit with each other. * @member PIXI.Strip#canvasPadding * @type {Number} -* @sourcefile /Users/rich/Documents/phaser/src/pixi/extras/Strip.js +* @sourcefile d:\wamp\www\phaser\src\pixi\extras\Strip.js * @sourceline 60 */ /** @@ -2035,7 +2070,7 @@ And here you have a hundred sprites that will be renderer at the speed of light * @method PIXI.Strip#renderStripFlat * @param {PIXI.Strip} strip - The Strip to render * @access private -* @sourcefile /Users/rich/Documents/phaser/src/pixi/extras/Strip.js +* @sourcefile d:\wamp\www\phaser\src\pixi\extras\Strip.js * @sourceline 344 */ /** @@ -2043,7 +2078,7 @@ And here you have a hundred sprites that will be renderer at the speed of light * @method PIXI.Strip#onTextureUpdate * @param {} event - * @access private -* @sourcefile /Users/rich/Documents/phaser/src/pixi/extras/Strip.js +* @sourcefile d:\wamp\www\phaser\src\pixi\extras\Strip.js * @sourceline 392 */ /** @@ -2051,20 +2086,20 @@ And here you have a hundred sprites that will be renderer at the speed of light * @method PIXI.Strip#getBounds * @param {Matrix} matrix - the transformation matrix of the sprite * @return {Rectangle} the framing rectangle -* @sourcefile /Users/rich/Documents/phaser/src/pixi/extras/Strip.js +* @sourcefile d:\wamp\www\phaser\src\pixi\extras\Strip.js * @sourceline 405 */ /** * @description Different drawing buffer modes supported * @member PIXI.Strip. * @type {{TRIANGLE_STRIP: number, TRIANGLES: number}} -* @sourcefile /Users/rich/Documents/phaser/src/pixi/extras/Strip.js +* @sourcefile d:\wamp\www\phaser\src\pixi\extras\Strip.js * @sourceline 462 */ /** * @fileoverview * @author Mat Groves http://matgroves.com/ -* @sourcefile /Users/rich/Documents/phaser/src/pixi/extras/TilingSprite.js +* @sourcefile d:\wamp\www\phaser\src\pixi\extras\TilingSprite.js * @sourceline 1 */ /** @@ -2074,42 +2109,42 @@ And here you have a hundred sprites that will be renderer at the speed of light * @param {PIXI.Texture} texture - the texture of the tiling sprite * @param {Number} width - the width of the tiling sprite * @param {Number} height - the height of the tiling sprite -* @sourcefile /Users/rich/Documents/phaser/src/pixi/extras/TilingSprite.js +* @sourcefile d:\wamp\www\phaser\src\pixi\extras\TilingSprite.js * @sourceline 5 */ /** * @description The width of the tiling sprite * @member PIXI.TilingSprite#width * @type {Number} -* @sourcefile /Users/rich/Documents/phaser/src/pixi/extras/TilingSprite.js +* @sourcefile d:\wamp\www\phaser\src\pixi\extras\TilingSprite.js * @sourceline 19 */ /** * @description The height of the tiling sprite * @member PIXI.TilingSprite#height * @type {Number} -* @sourcefile /Users/rich/Documents/phaser/src/pixi/extras/TilingSprite.js +* @sourcefile d:\wamp\www\phaser\src\pixi\extras\TilingSprite.js * @sourceline 27 */ /** * @description The scaling of the image that is being tiled * @member PIXI.TilingSprite#tileScale * @type {Point} -* @sourcefile /Users/rich/Documents/phaser/src/pixi/extras/TilingSprite.js +* @sourcefile d:\wamp\www\phaser\src\pixi\extras\TilingSprite.js * @sourceline 35 */ /** * @description A point that represents the scale of the texture object * @member PIXI.TilingSprite#tileScaleOffset * @type {Point} -* @sourcefile /Users/rich/Documents/phaser/src/pixi/extras/TilingSprite.js +* @sourcefile d:\wamp\www\phaser\src\pixi\extras\TilingSprite.js * @sourceline 43 */ /** * @description The offset position of the image that is being tiled * @member PIXI.TilingSprite#tilePosition * @type {Point} -* @sourcefile /Users/rich/Documents/phaser/src/pixi/extras/TilingSprite.js +* @sourcefile d:\wamp\www\phaser\src\pixi\extras\TilingSprite.js * @sourceline 51 */ /** @@ -2117,7 +2152,7 @@ And here you have a hundred sprites that will be renderer at the speed of light * @member PIXI.TilingSprite#renderable * @type {Boolean} * @default true -* @sourcefile /Users/rich/Documents/phaser/src/pixi/extras/TilingSprite.js +* @sourcefile d:\wamp\www\phaser\src\pixi\extras\TilingSprite.js * @sourceline 59 */ /** @@ -2125,7 +2160,7 @@ And here you have a hundred sprites that will be renderer at the speed of light * @member PIXI.TilingSprite#tint * @type {Number} * @default 0xFFFFFF -* @sourcefile /Users/rich/Documents/phaser/src/pixi/extras/TilingSprite.js +* @sourcefile d:\wamp\www\phaser\src\pixi\extras\TilingSprite.js * @sourceline 68 */ /** @@ -2133,7 +2168,7 @@ And here you have a hundred sprites that will be renderer at the speed of light debug the texture being used. * @member PIXI.TilingSprite#textureDebug * @type {Boolean} -* @sourcefile /Users/rich/Documents/phaser/src/pixi/extras/TilingSprite.js +* @sourcefile d:\wamp\www\phaser\src\pixi\extras\TilingSprite.js * @sourceline 77 */ /** @@ -2141,28 +2176,28 @@ debug the texture being used. * @member PIXI.TilingSprite#blendMode * @type {Number} * @default PIXI.blendModes.NORMAL; -* @sourcefile /Users/rich/Documents/phaser/src/pixi/extras/TilingSprite.js +* @sourcefile d:\wamp\www\phaser\src\pixi\extras\TilingSprite.js * @sourceline 86 */ /** * @description The CanvasBuffer object that the tiled texture is drawn to. * @member PIXI.TilingSprite#canvasBuffer * @type {PIXICanvasBuffer} -* @sourcefile /Users/rich/Documents/phaser/src/pixi/extras/TilingSprite.js +* @sourcefile d:\wamp\www\phaser\src\pixi\extras\TilingSprite.js * @sourceline 95 */ /** * @description An internal Texture object that holds the tiling texture that was generated from TilingSprite.texture. * @member PIXI.TilingSprite#tilingTexture * @type {PIXITexture} -* @sourcefile /Users/rich/Documents/phaser/src/pixi/extras/TilingSprite.js +* @sourcefile d:\wamp\www\phaser\src\pixi\extras\TilingSprite.js * @sourceline 103 */ /** * @description The Context fill pattern that is used to draw the TilingSprite in Canvas mode only (will be null in WebGL). * @member PIXI.TilingSprite#tilePattern * @type {PIXITexture} -* @sourcefile /Users/rich/Documents/phaser/src/pixi/extras/TilingSprite.js +* @sourcefile d:\wamp\www\phaser\src\pixi\extras\TilingSprite.js * @sourceline 111 */ /** @@ -2171,7 +2206,7 @@ This is set by the likes of Phaser.LoadTexture.setFrame. * @member PIXI.TilingSprite#refreshTexture * @type {Boolean} * @default true -* @sourcefile /Users/rich/Documents/phaser/src/pixi/extras/TilingSprite.js +* @sourcefile d:\wamp\www\phaser\src\pixi\extras\TilingSprite.js * @sourceline 119 */ /** @@ -2179,7 +2214,7 @@ This is set by the likes of Phaser.LoadTexture.setFrame. * @method PIXI.TilingSprite#_renderWebGL * @param {RenderSession} renderSession - * @access private -* @sourcefile /Users/rich/Documents/phaser/src/pixi/extras/TilingSprite.js +* @sourcefile d:\wamp\www\phaser\src\pixi\extras\TilingSprite.js * @sourceline 148 */ /** @@ -2187,7 +2222,7 @@ This is set by the likes of Phaser.LoadTexture.setFrame. * @method PIXI.TilingSprite#_renderCanvas * @param {RenderSession} renderSession - * @access private -* @sourcefile /Users/rich/Documents/phaser/src/pixi/extras/TilingSprite.js +* @sourcefile d:\wamp\www\phaser\src\pixi\extras\TilingSprite.js * @sourceline 216 */ /** @@ -2195,41 +2230,41 @@ This is set by the likes of Phaser.LoadTexture.setFrame. * @method PIXI.TilingSprite#onTextureUpdate * @param {} event - * @access private -* @sourcefile /Users/rich/Documents/phaser/src/pixi/extras/TilingSprite.js +* @sourcefile d:\wamp\www\phaser\src\pixi\extras\TilingSprite.js * @sourceline 320 */ /** * @method PIXI.TilingSprite#generateTilingTexture * @param {Boolean} forcePowerOfTwo - Whether we want to force the texture to be a power of two * @param {RenderSession} renderSession - -* @sourcefile /Users/rich/Documents/phaser/src/pixi/extras/TilingSprite.js +* @sourcefile d:\wamp\www\phaser\src\pixi\extras\TilingSprite.js * @sourceline 332 */ /** * @description Returns the framing rectangle of the sprite as a PIXI.Rectangle object * @method PIXI.TilingSprite#getBounds * @return {Rectangle} the framing rectangle -* @sourcefile /Users/rich/Documents/phaser/src/pixi/extras/TilingSprite.js +* @sourcefile d:\wamp\www\phaser\src\pixi\extras\TilingSprite.js * @sourceline 417 */ /** * @description The width of the sprite, setting this will actually modify the scale to achieve the value set * @member PIXI.TilingSprite#width * @type {Number} -* @sourcefile /Users/rich/Documents/phaser/src/pixi/extras/TilingSprite.js +* @sourcefile d:\wamp\www\phaser\src\pixi\extras\TilingSprite.js * @sourceline 517 */ /** * @description The height of the TilingSprite, setting this will actually modify the scale to achieve the value set * @member PIXI.TilingSprite#height * @type {Number} -* @sourcefile /Users/rich/Documents/phaser/src/pixi/extras/TilingSprite.js +* @sourcefile d:\wamp\www\phaser\src\pixi\extras\TilingSprite.js * @sourceline 535 */ /** * @fileoverview * @author Mat Groves http://matgroves.com/ @Doormat23 -* @sourcefile /Users/rich/Documents/phaser/src/pixi/filters/AbstractFilter.js +* @sourcefile d:\wamp\www\phaser\src\pixi\filters\AbstractFilter.js * @sourceline 1 */ /** @@ -2238,7 +2273,7 @@ This is set by the likes of Phaser.LoadTexture.setFrame. If you want to make a custom filter this should be your base class. * @param {Array} fragmentSrc - The fragment source in an array of strings. * @param {Object} uniforms - An object containing the uniforms for this filter. -* @sourcefile /Users/rich/Documents/phaser/src/pixi/filters/AbstractFilter.js +* @sourcefile d:\wamp\www\phaser\src\pixi\filters\AbstractFilter.js * @sourceline 5 */ /** @@ -2247,73 +2282,73 @@ For example the blur filter has two passes blurX and blurY. * @member PIXI.AbstractFilter#passes * @type {Array} * @access private -* @sourcefile /Users/rich/Documents/phaser/src/pixi/filters/AbstractFilter.js +* @sourcefile d:\wamp\www\phaser\src\pixi\filters\AbstractFilter.js * @sourceline 16 */ /** * @member PIXI.AbstractFilter#shaders * @type {Array} * @access private -* @sourcefile /Users/rich/Documents/phaser/src/pixi/filters/AbstractFilter.js +* @sourcefile d:\wamp\www\phaser\src\pixi\filters\AbstractFilter.js * @sourceline 25 */ /** * @member PIXI.AbstractFilter#dirty * @type {Boolean} -* @sourcefile /Users/rich/Documents/phaser/src/pixi/filters/AbstractFilter.js +* @sourcefile d:\wamp\www\phaser\src\pixi\filters\AbstractFilter.js * @sourceline 32 */ /** * @member PIXI.AbstractFilter#padding * @type {Number} -* @sourcefile /Users/rich/Documents/phaser/src/pixi/filters/AbstractFilter.js +* @sourcefile d:\wamp\www\phaser\src\pixi\filters\AbstractFilter.js * @sourceline 38 */ /** * @member PIXI.AbstractFilter#uniforms * @type {Object} * @access private -* @sourcefile /Users/rich/Documents/phaser/src/pixi/filters/AbstractFilter.js +* @sourcefile d:\wamp\www\phaser\src\pixi\filters\AbstractFilter.js * @sourceline 44 */ /** * @member PIXI.AbstractFilter#fragmentSrc * @type {Array} * @access private -* @sourcefile /Users/rich/Documents/phaser/src/pixi/filters/AbstractFilter.js +* @sourcefile d:\wamp\www\phaser\src\pixi\filters\AbstractFilter.js * @sourceline 51 */ /** * @description Syncs the uniforms between the class object and the shaders. * @method PIXI.AbstractFilter#syncUniforms -* @sourcefile /Users/rich/Documents/phaser/src/pixi/filters/AbstractFilter.js +* @sourcefile d:\wamp\www\phaser\src\pixi\filters\AbstractFilter.js * @sourceline 61 */ /** * @fileoverview * @author Mat Groves http://matgroves.com/ @Doormat23 -* @sourcefile /Users/rich/Documents/phaser/src/pixi/primitives/Graphics.js +* @sourcefile d:\wamp\www\phaser\src\pixi\primitives\Graphics.js * @sourceline 1 */ /** * @class PIXI.Graphics * @description The Graphics class contains methods used to draw primitive shapes such as lines, circles and rectangles to the display, and color and fill them. * @augments PIXI.DisplayObjectContainer -* @sourcefile /Users/rich/Documents/phaser/src/pixi/primitives/Graphics.js +* @sourcefile d:\wamp\www\phaser\src\pixi\primitives\Graphics.js * @sourceline 5 */ /** * @description The alpha value used when filling the Graphics object. * @member PIXI.Graphics#fillAlpha * @type {Number} -* @sourcefile /Users/rich/Documents/phaser/src/pixi/primitives/Graphics.js +* @sourcefile d:\wamp\www\phaser\src\pixi\primitives\Graphics.js * @sourceline 18 */ /** * @description The width (thickness) of any lines drawn. * @member PIXI.Graphics#lineWidth * @type {Number} -* @sourcefile /Users/rich/Documents/phaser/src/pixi/primitives/Graphics.js +* @sourcefile d:\wamp\www\phaser\src\pixi\primitives\Graphics.js * @sourceline 26 */ /** @@ -2321,7 +2356,7 @@ For example the blur filter has two passes blurX and blurY. * @member PIXI.Graphics#lineColor * @type {String} * @default 0 -* @sourcefile /Users/rich/Documents/phaser/src/pixi/primitives/Graphics.js +* @sourcefile d:\wamp\www\phaser\src\pixi\primitives\Graphics.js * @sourceline 34 */ /** @@ -2329,7 +2364,7 @@ For example the blur filter has two passes blurX and blurY. * @member PIXI.Graphics#graphicsData * @type {Array} * @access private -* @sourcefile /Users/rich/Documents/phaser/src/pixi/primitives/Graphics.js +* @sourcefile d:\wamp\www\phaser\src\pixi\primitives\Graphics.js * @sourceline 43 */ /** @@ -2337,7 +2372,7 @@ For example the blur filter has two passes blurX and blurY. * @member PIXI.Graphics#tint * @type {Number} * @default 0xFFFFFF -* @sourcefile /Users/rich/Documents/phaser/src/pixi/primitives/Graphics.js +* @sourcefile d:\wamp\www\phaser\src\pixi\primitives\Graphics.js * @sourceline 52 */ /** @@ -2345,7 +2380,7 @@ For example the blur filter has two passes blurX and blurY. * @member PIXI.Graphics#blendMode * @type {Number} * @default PIXI.blendModes.NORMAL; -* @sourcefile /Users/rich/Documents/phaser/src/pixi/primitives/Graphics.js +* @sourcefile d:\wamp\www\phaser\src\pixi\primitives\Graphics.js * @sourceline 61 */ /** @@ -2353,7 +2388,7 @@ For example the blur filter has two passes blurX and blurY. * @member PIXI.Graphics#currentPath * @type {Object} * @access private -* @sourcefile /Users/rich/Documents/phaser/src/pixi/primitives/Graphics.js +* @sourcefile d:\wamp\www\phaser\src\pixi\primitives\Graphics.js * @sourceline 70 */ /** @@ -2361,21 +2396,21 @@ For example the blur filter has two passes blurX and blurY. * @member PIXI.Graphics#_webGL * @type {Array} * @access private -* @sourcefile /Users/rich/Documents/phaser/src/pixi/primitives/Graphics.js +* @sourcefile d:\wamp\www\phaser\src\pixi\primitives\Graphics.js * @sourceline 79 */ /** * @description Whether this shape is being used as a mask. * @member PIXI.Graphics#isMask * @type {Boolean} -* @sourcefile /Users/rich/Documents/phaser/src/pixi/primitives/Graphics.js +* @sourcefile d:\wamp\www\phaser\src\pixi\primitives\Graphics.js * @sourceline 88 */ /** * @description The bounds' padding used for bounds calculation. * @member PIXI.Graphics#boundsPadding * @type {Number} -* @sourcefile /Users/rich/Documents/phaser/src/pixi/primitives/Graphics.js +* @sourcefile d:\wamp\www\phaser\src\pixi\primitives\Graphics.js * @sourceline 96 */ /** @@ -2383,7 +2418,7 @@ For example the blur filter has two passes blurX and blurY. * @member PIXI.Graphics#dirty * @type {Boolean} * @access private -* @sourcefile /Users/rich/Documents/phaser/src/pixi/primitives/Graphics.js +* @sourcefile d:\wamp\www\phaser\src\pixi\primitives\Graphics.js * @sourceline 106 */ /** @@ -2391,7 +2426,7 @@ For example the blur filter has two passes blurX and blurY. * @member PIXI.Graphics#webGLDirty * @type {Boolean} * @access private -* @sourcefile /Users/rich/Documents/phaser/src/pixi/primitives/Graphics.js +* @sourcefile d:\wamp\www\phaser\src\pixi\primitives\Graphics.js * @sourceline 115 */ /** @@ -2399,7 +2434,7 @@ For example the blur filter has two passes blurX and blurY. * @member PIXI.Graphics#cachedSpriteDirty * @type {Boolean} * @access private -* @sourcefile /Users/rich/Documents/phaser/src/pixi/primitives/Graphics.js +* @sourcefile d:\wamp\www\phaser\src\pixi\primitives\Graphics.js * @sourceline 124 */ /** @@ -2409,7 +2444,7 @@ For example the blur filter has two passes blurX and blurY. * @param {Number} color - color of the line to draw, will update the objects stored style * @param {Number} alpha - alpha of the line to draw, will update the objects stored style * @return {PIXI.Graphics} -* @sourcefile /Users/rich/Documents/phaser/src/pixi/primitives/Graphics.js +* @sourcefile d:\wamp\www\phaser\src\pixi\primitives\Graphics.js * @sourceline 139 */ /** @@ -2418,7 +2453,7 @@ For example the blur filter has two passes blurX and blurY. * @param {Number} x - the X coordinate to move to * @param {Number} y - the Y coordinate to move to * @return {PIXI.Graphics} -* @sourcefile /Users/rich/Documents/phaser/src/pixi/primitives/Graphics.js +* @sourcefile d:\wamp\www\phaser\src\pixi\primitives\Graphics.js * @sourceline 173 */ /** @@ -2428,7 +2463,7 @@ The current drawing position is then set to (x, y). * @param {Number} x - the X coordinate to draw to * @param {Number} y - the Y coordinate to draw to * @return {PIXI.Graphics} -* @sourcefile /Users/rich/Documents/phaser/src/pixi/primitives/Graphics.js +* @sourcefile d:\wamp\www\phaser\src\pixi\primitives\Graphics.js * @sourceline 188 */ /** @@ -2440,8 +2475,8 @@ Based on: https://stackoverflow.com/questions/785097/how-do-i-implement-a-bezier * @param {Number} toX - Destination point x * @param {Number} toY - Destination point y * @return {PIXI.Graphics} -* @sourcefile /Users/rich/Documents/phaser/src/pixi/primitives/Graphics.js -* @sourceline 210 +* @sourcefile d:\wamp\www\phaser\src\pixi\primitives\Graphics.js +* @sourceline 211 */ /** * @description Calculate the points for a bezier curve and then draws it. @@ -2453,8 +2488,8 @@ Based on: https://stackoverflow.com/questions/785097/how-do-i-implement-a-bezier * @param {Number} toX - Destination point x * @param {Number} toY - Destination point y * @return {PIXI.Graphics} -* @sourcefile /Users/rich/Documents/phaser/src/pixi/primitives/Graphics.js -* @sourceline 264 +* @sourcefile d:\wamp\www\phaser\src\pixi\primitives\Graphics.js +* @sourceline 266 */ /** * @description The arc method creates an arc/curve (used to create circles, or parts of circles). @@ -2467,8 +2502,8 @@ Based on: https://stackoverflow.com/questions/785097/how-do-i-implement-a-bezier * @param {Boolean} anticlockwise - Optional. Specifies whether the drawing should be counterclockwise or clockwise. False is default, and indicates clockwise, while true indicates counter-clockwise. * @param {Number} segments - Optional. The number of segments to use when calculating the arc. The default is 40. If you need more fidelity use a higher number. * @return {PIXI.Graphics} -* @sourcefile /Users/rich/Documents/phaser/src/pixi/primitives/Graphics.js -* @sourceline 391 +* @sourcefile d:\wamp\www\phaser\src\pixi\primitives\Graphics.js +* @sourceline 395 */ /** * @description Specifies a simple one-color fill that subsequent calls to other Graphics methods @@ -2477,15 +2512,15 @@ Based on: https://stackoverflow.com/questions/785097/how-do-i-implement-a-bezier * @param {Number} color - the color of the fill * @param {Number} alpha - the alpha of the fill * @return {PIXI.Graphics} -* @sourcefile /Users/rich/Documents/phaser/src/pixi/primitives/Graphics.js -* @sourceline 476 +* @sourcefile d:\wamp\www\phaser\src\pixi\primitives\Graphics.js +* @sourceline 481 */ /** * @description Applies a fill to the lines and shapes that were added since the last call to the beginFill() method. * @method PIXI.Graphics#endFill * @return {PIXI.Graphics} -* @sourcefile /Users/rich/Documents/phaser/src/pixi/primitives/Graphics.js -* @sourceline 504 +* @sourcefile d:\wamp\www\phaser\src\pixi\primitives\Graphics.js +* @sourceline 509 */ /** * @method PIXI.Graphics#drawRect @@ -2494,8 +2529,8 @@ Based on: https://stackoverflow.com/questions/785097/how-do-i-implement-a-bezier * @param {Number} width - The width of the rectangle * @param {Number} height - The height of the rectangle * @return {PIXI.Graphics} -* @sourcefile /Users/rich/Documents/phaser/src/pixi/primitives/Graphics.js -* @sourceline 519 +* @sourcefile d:\wamp\www\phaser\src\pixi\primitives\Graphics.js +* @sourceline 524 */ /** * @method PIXI.Graphics#drawRoundedRect @@ -2504,8 +2539,8 @@ Based on: https://stackoverflow.com/questions/785097/how-do-i-implement-a-bezier * @param {Number} width - The width of the rectangle * @param {Number} height - The height of the rectangle * @param {Number} radius - Radius of the rectangle corners. In WebGL this must be a value between 0 and 9. -* @sourcefile /Users/rich/Documents/phaser/src/pixi/primitives/Graphics.js -* @sourceline 535 +* @sourcefile d:\wamp\www\phaser\src\pixi\primitives\Graphics.js +* @sourceline 540 */ /** * @description Draws a circle. @@ -2514,8 +2549,8 @@ Based on: https://stackoverflow.com/questions/785097/how-do-i-implement-a-bezier * @param {Number} y - The Y coordinate of the center of the circle * @param {Number} diameter - The diameter of the circle * @return {PIXI.Graphics} -* @sourcefile /Users/rich/Documents/phaser/src/pixi/primitives/Graphics.js -* @sourceline 550 +* @sourcefile d:\wamp\www\phaser\src\pixi\primitives\Graphics.js +* @sourceline 555 */ /** * @description Draws an ellipse. @@ -2525,23 +2560,23 @@ Based on: https://stackoverflow.com/questions/785097/how-do-i-implement-a-bezier * @param {Number} width - The half width of the ellipse * @param {Number} height - The half height of the ellipse * @return {PIXI.Graphics} -* @sourcefile /Users/rich/Documents/phaser/src/pixi/primitives/Graphics.js -* @sourceline 566 +* @sourcefile d:\wamp\www\phaser\src\pixi\primitives\Graphics.js +* @sourceline 571 */ /** * @description Draws a polygon using the given path. * @method PIXI.Graphics#drawPolygon * @param {(Array|PhaserPolygon)} path - The path data used to construct the polygon. Can either be an array of points or a Phaser.Polygon object. * @return {PIXI.Graphics} -* @sourcefile /Users/rich/Documents/phaser/src/pixi/primitives/Graphics.js -* @sourceline 583 +* @sourcefile d:\wamp\www\phaser\src\pixi\primitives\Graphics.js +* @sourceline 588 */ /** * @description Clears the graphics that were drawn to this Graphics object, and resets fill and line style settings. * @method PIXI.Graphics#clear * @return {PIXI.Graphics} -* @sourcefile /Users/rich/Documents/phaser/src/pixi/primitives/Graphics.js -* @sourceline 618 +* @sourcefile d:\wamp\www\phaser\src\pixi\primitives\Graphics.js +* @sourceline 623 */ /** * @description Useful function that returns a texture of the graphics object that can then be used to create sprites @@ -2551,66 +2586,66 @@ This can be quite useful if your geometry is complicated and needs to be reused * @param {Number} [scaleMode=0] - Should be one of the PIXI.scaleMode consts * @param {Number} [padding=0] - Add optional extra padding to the generated texture (default 0) * @return {PIXI.Texture} a texture of the graphics object -* @sourcefile /Users/rich/Documents/phaser/src/pixi/primitives/Graphics.js -* @sourceline 636 +* @sourcefile d:\wamp\www\phaser\src\pixi\primitives\Graphics.js +* @sourceline 643 */ /** * @description Renders the object using the WebGL renderer * @method PIXI.Graphics#_renderWebGL * @param {RenderSession} renderSession - * @access private -* @sourcefile /Users/rich/Documents/phaser/src/pixi/primitives/Graphics.js -* @sourceline 674 +* @sourcefile d:\wamp\www\phaser\src\pixi\primitives\Graphics.js +* @sourceline 679 */ /** * @description Renders the object using the Canvas renderer * @method PIXI.Graphics#_renderCanvas * @param {RenderSession} renderSession - * @access private -* @sourcefile /Users/rich/Documents/phaser/src/pixi/primitives/Graphics.js -* @sourceline 753 +* @sourcefile d:\wamp\www\phaser\src\pixi\primitives\Graphics.js +* @sourceline 758 */ /** * @description Retrieves the bounds of the graphic shape as a rectangle object * @method PIXI.Graphics#getBounds * @return {Rectangle} the rectangular bounding area -* @sourcefile /Users/rich/Documents/phaser/src/pixi/primitives/Graphics.js -* @sourceline 832 +* @sourcefile d:\wamp\www\phaser\src\pixi\primitives\Graphics.js +* @sourceline 837 */ /** * @description Update the bounds of the object * @method PIXI.Graphics#updateLocalBounds -* @sourcefile /Users/rich/Documents/phaser/src/pixi/primitives/Graphics.js -* @sourceline 955 +* @sourcefile d:\wamp\www\phaser\src\pixi\primitives\Graphics.js +* @sourceline 960 */ /** * @description Generates the cached sprite when the sprite has cacheAsBitmap = true * @method PIXI.Graphics#_generateCachedSprite * @access private -* @sourcefile /Users/rich/Documents/phaser/src/pixi/primitives/Graphics.js -* @sourceline 1067 +* @sourcefile d:\wamp\www\phaser\src\pixi\primitives\Graphics.js +* @sourceline 1072 */ /** * @description Updates texture size based on canvas size * @method PIXI.Graphics#updateCachedSpriteTexture * @access private -* @sourcefile /Users/rich/Documents/phaser/src/pixi/primitives/Graphics.js -* @sourceline 1107 +* @sourcefile d:\wamp\www\phaser\src\pixi\primitives\Graphics.js +* @sourceline 1112 */ /** * @description Destroys a previous cached sprite. * @method PIXI.Graphics#destroyCachedSprite -* @sourcefile /Users/rich/Documents/phaser/src/pixi/primitives/Graphics.js -* @sourceline 1131 +* @sourcefile d:\wamp\www\phaser\src\pixi\primitives\Graphics.js +* @sourceline 1136 */ /** * @description Draws the given shape to this Graphics object. Can be any of Circle, Rectangle, Ellipse, Line or Polygon. * @method PIXI.Graphics#drawShape * @param {(Circle|Rectangle|Ellipse|Line|Polygon)} shape - The Shape object to draw. * @return {PIXI.GraphicsData} The generated GraphicsData object. -* @sourcefile /Users/rich/Documents/phaser/src/pixi/primitives/Graphics.js -* @sourceline 1142 +* @sourcefile d:\wamp\www\phaser\src\pixi\primitives\Graphics.js +* @sourceline 1147 */ /** * @description When cacheAsBitmap is set to true the graphics object will be rendered as if it was a sprite. @@ -2621,13 +2656,13 @@ This is not recommended if you are constantly redrawing the graphics element. * @type {Boolean} * @default false * @access private -* @sourcefile /Users/rich/Documents/phaser/src/pixi/primitives/Graphics.js -* @sourceline 1184 +* @sourcefile d:\wamp\www\phaser\src\pixi\primitives\Graphics.js +* @sourceline 1192 */ /** * @class PIXI.GraphicsData * @description A GraphicsData object. -* @sourcefile /Users/rich/Documents/phaser/src/pixi/primitives/GraphicsData.js +* @sourcefile d:\wamp\www\phaser\src\pixi\primitives\GraphicsData.js * @sourceline 1 */ /** @@ -2640,12 +2675,12 @@ This is not recommended if you are constantly redrawing the graphics element. * @param {Number} fillAlpha - the alpha of the fill * @param {Boolean} fill - whether or not the shape is filled with a colour * @param {(Circle|Rectangle|Ellipse|Line|Polygon)} shape - The shape object to draw. -* @sourcefile /Users/rich/Documents/phaser/src/pixi/primitives/GraphicsData.js +* @sourcefile d:\wamp\www\phaser\src\pixi\primitives\GraphicsData.js * @sourceline 23 */ /** * @fileoverview Creates a new GraphicsData object with the same values as this one. -* @sourcefile /Users/rich/Documents/phaser/src/pixi/primitives/GraphicsData.js +* @sourcefile d:\wamp\www\phaser\src\pixi\primitives\GraphicsData.js * @sourceline 93 */ /** @@ -2653,7 +2688,7 @@ This is not recommended if you are constantly redrawing the graphics element. * @description Creates a Canvas element of the given size. * @param {Number} width - the width for the newly created canvas * @param {Number} height - the height for the newly created canvas -* @sourcefile /Users/rich/Documents/phaser/src/pixi/renderers/canvas/utils/CanvasBuffer.js +* @sourcefile d:\wamp\www\phaser\src\pixi\renderers\canvas\utils\CanvasBuffer.js * @sourceline 5 */ @@ -2661,35 +2696,35 @@ This is not recommended if you are constantly redrawing the graphics element. * @description The width of the Canvas in pixels. * @member PIXI.CanvasBuffer#width * @type {Number} -* @sourcefile /Users/rich/Documents/phaser/src/pixi/renderers/canvas/utils/CanvasBuffer.js +* @sourcefile d:\wamp\www\phaser\src\pixi\renderers\canvas\utils\CanvasBuffer.js * @sourceline 15 */ /** * @description The height of the Canvas in pixels. * @member PIXI.CanvasBuffer#height * @type {Number} -* @sourcefile /Users/rich/Documents/phaser/src/pixi/renderers/canvas/utils/CanvasBuffer.js +* @sourcefile d:\wamp\www\phaser\src\pixi\renderers\canvas\utils\CanvasBuffer.js * @sourceline 23 */ /** * @description The Canvas object that belongs to this CanvasBuffer. * @member PIXI.CanvasBuffer#canvas * @type {HTMLCanvasElement} -* @sourcefile /Users/rich/Documents/phaser/src/pixi/renderers/canvas/utils/CanvasBuffer.js +* @sourcefile d:\wamp\www\phaser\src\pixi\renderers\canvas\utils\CanvasBuffer.js * @sourceline 31 */ /** * @description A CanvasRenderingContext2D object representing a two-dimensional rendering context. * @member PIXI.CanvasBuffer#context * @type {CanvasRenderingContext2D} -* @sourcefile /Users/rich/Documents/phaser/src/pixi/renderers/canvas/utils/CanvasBuffer.js +* @sourcefile d:\wamp\www\phaser\src\pixi\renderers\canvas\utils\CanvasBuffer.js * @sourceline 39 */ /** * @description Clears the canvas that was created by the CanvasBuffer class. * @method PIXI.CanvasBuffer#clear * @access private -* @sourcefile /Users/rich/Documents/phaser/src/pixi/renderers/canvas/utils/CanvasBuffer.js +* @sourcefile d:\wamp\www\phaser\src\pixi\renderers\canvas\utils\CanvasBuffer.js * @sourceline 53 */ /** @@ -2697,25 +2732,25 @@ This is not recommended if you are constantly redrawing the graphics element. * @method PIXI.CanvasBuffer#resize * @param {Number} width - the new width of the canvas * @param {Number} height - the new height of the canvas -* @sourcefile /Users/rich/Documents/phaser/src/pixi/renderers/canvas/utils/CanvasBuffer.js +* @sourcefile d:\wamp\www\phaser\src\pixi\renderers\canvas\utils\CanvasBuffer.js * @sourceline 65 */ /** * @description Frees the canvas up for use again. * @method PIXI.CanvasBuffer#destroy -* @sourcefile /Users/rich/Documents/phaser/src/pixi/renderers/canvas/utils/CanvasBuffer.js +* @sourcefile d:\wamp\www\phaser\src\pixi\renderers\canvas\utils\CanvasBuffer.js * @sourceline 78 */ /** * @fileoverview * @author Mat Groves http://matgroves.com/ @Doormat23 -* @sourcefile /Users/rich/Documents/phaser/src/pixi/renderers/canvas/utils/CanvasMaskManager.js +* @sourcefile d:\wamp\www\phaser\src\pixi\renderers\canvas\utils\CanvasMaskManager.js * @sourceline 1 */ /** * @class PIXI.CanvasMaskManager * @description A set of functions used to handle masking. -* @sourcefile /Users/rich/Documents/phaser/src/pixi/renderers/canvas/utils/CanvasMaskManager.js +* @sourcefile d:\wamp\www\phaser\src\pixi\renderers\canvas\utils\CanvasMaskManager.js * @sourceline 5 */ /** @@ -2723,26 +2758,26 @@ This is not recommended if you are constantly redrawing the graphics element. * @method PIXI.CanvasMaskManager#pushMask * @param {Object} maskData - the maskData that will be pushed * @param {Object} renderSession - The renderSession whose context will be used for this mask manager. -* @sourcefile /Users/rich/Documents/phaser/src/pixi/renderers/canvas/utils/CanvasMaskManager.js +* @sourcefile d:\wamp\www\phaser\src\pixi\renderers\canvas\utils\CanvasMaskManager.js * @sourceline 17 */ /** * @description Restores the current drawing context to the state it was before the mask was applied. * @method PIXI.CanvasMaskManager#popMask * @param {Object} renderSession - The renderSession whose context will be used for this mask manager. -* @sourcefile /Users/rich/Documents/phaser/src/pixi/renderers/canvas/utils/CanvasMaskManager.js +* @sourcefile d:\wamp\www\phaser\src\pixi\renderers\canvas\utils\CanvasMaskManager.js * @sourceline 49 */ /** * @fileoverview * @author Mat Groves http://matgroves.com/ @Doormat23 -* @sourcefile /Users/rich/Documents/phaser/src/pixi/renderers/canvas/utils/CanvasTinter.js +* @sourcefile d:\wamp\www\phaser\src\pixi\renderers\canvas\utils\CanvasTinter.js * @sourceline 1 */ /** * @class PIXI.CanvasTinter * @description Utility methods for Sprite/Texture tinting. -* @sourcefile /Users/rich/Documents/phaser/src/pixi/renderers/canvas/utils/CanvasTinter.js +* @sourcefile d:\wamp\www\phaser\src\pixi\renderers\canvas\utils\CanvasTinter.js * @sourceline 5 */ /** @@ -2751,7 +2786,7 @@ This is not recommended if you are constantly redrawing the graphics element. * @param {PIXI.Sprite} sprite - the sprite to tint * @param {Number} color - the color to use to tint the sprite with * @return {HTMLCanvasElement} The tinted canvas -* @sourcefile /Users/rich/Documents/phaser/src/pixi/renderers/canvas/utils/CanvasTinter.js +* @sourcefile d:\wamp\www\phaser\src\pixi\renderers\canvas\utils\CanvasTinter.js * @sourceline 13 */ /** @@ -2760,7 +2795,7 @@ This is not recommended if you are constantly redrawing the graphics element. * @param {PIXI.Texture} texture - the texture to tint * @param {Number} color - the color to use to tint the sprite with * @param {HTMLCanvasElement} canvas - the current canvas -* @sourcefile /Users/rich/Documents/phaser/src/pixi/renderers/canvas/utils/CanvasTinter.js +* @sourcefile d:\wamp\www\phaser\src\pixi\renderers\canvas\utils\CanvasTinter.js * @sourceline 31 */ /** @@ -2769,13 +2804,13 @@ This is not recommended if you are constantly redrawing the graphics element. * @param {PIXI.Texture} texture - the texture to tint * @param {Number} color - the color to use to tint the sprite with * @param {HTMLCanvasElement} canvas - the current canvas -* @sourcefile /Users/rich/Documents/phaser/src/pixi/renderers/canvas/utils/CanvasTinter.js +* @sourcefile d:\wamp\www\phaser\src\pixi\renderers\canvas\utils\CanvasTinter.js * @sourceline 65 */ /** * @description Checks if the browser correctly supports putImageData alpha channels. * @method PIXI.CanvasTinter.checkInverseAlpha -* @sourcefile /Users/rich/Documents/phaser/src/pixi/renderers/canvas/utils/CanvasTinter.js +* @sourcefile d:\wamp\www\phaser\src\pixi\renderers\canvas\utils\CanvasTinter.js * @sourceline 113 */ /** @@ -2783,38 +2818,38 @@ This is not recommended if you are constantly redrawing the graphics element. This property is only applicable if using tintWithPerPixel. * @member PIXI.CanvasTinter.canHandleAlpha * @type {Boolean} -* @sourcefile /Users/rich/Documents/phaser/src/pixi/renderers/canvas/utils/CanvasTinter.js +* @sourcefile d:\wamp\www\phaser\src\pixi\renderers\canvas\utils\CanvasTinter.js * @sourceline 146 */ /** * @description Whether or not the Canvas BlendModes are supported, consequently the ability to tint using the multiply method. * @member PIXI.CanvasTinter.canUseMultiply * @type {Boolean} -* @sourcefile /Users/rich/Documents/phaser/src/pixi/renderers/canvas/utils/CanvasTinter.js +* @sourcefile d:\wamp\www\phaser\src\pixi\renderers\canvas\utils\CanvasTinter.js * @sourceline 156 */ /** * @description The tinting method that will be used. * @method PIXI.CanvasTinter.tintMethod -* @sourcefile /Users/rich/Documents/phaser/src/pixi/renderers/canvas/utils/CanvasTinter.js +* @sourcefile d:\wamp\www\phaser\src\pixi\renderers\canvas\utils\CanvasTinter.js * @sourceline 165 */ /** * @fileoverview * @author Mat Groves http://matgroves.com/ @Doormat23 -* @sourcefile /Users/rich/Documents/phaser/src/pixi/renderers/canvas/CanvasGraphics.js +* @sourcefile d:\wamp\www\phaser\src\pixi\renderers\canvas\CanvasGraphics.js * @sourceline 1 */ /** * @class PIXI.CanvasGraphics * @description A set of functions used by the canvas renderer to draw the primitive graphics data. -* @sourcefile /Users/rich/Documents/phaser/src/pixi/renderers/canvas/CanvasGraphics.js +* @sourcefile d:\wamp\www\phaser\src\pixi\renderers\canvas\CanvasGraphics.js * @sourceline 6 */ /** * @fileoverview * @author Mat Groves http://matgroves.com/ @Doormat23 -* @sourcefile /Users/rich/Documents/phaser/src/pixi/renderers/canvas/CanvasRenderer.js +* @sourcefile d:\wamp\www\phaser\src\pixi\renderers\canvas\CanvasRenderer.js * @sourceline 1 */ /** @@ -2822,27 +2857,27 @@ This property is only applicable if using tintWithPerPixel. * @description The CanvasRenderer draws the Stage and all its content onto a 2d canvas. This renderer should be used for browsers that do not support webGL. Don't forget to add the CanvasRenderer.view to your DOM or you will not see anything :) * @param {PhaserGame} game - A reference to the Phaser Game instance -* @sourcefile /Users/rich/Documents/phaser/src/pixi/renderers/canvas/CanvasRenderer.js +* @sourcefile d:\wamp\www\phaser\src\pixi\renderers\canvas\CanvasRenderer.js * @sourceline 5 */ /** * @member PIXI.CanvasRenderer#game - A reference to the Phaser Game instance. * @type {PhaserGame} -* @sourcefile /Users/rich/Documents/phaser/src/pixi/renderers/canvas/CanvasRenderer.js +* @sourcefile d:\wamp\www\phaser\src\pixi\renderers\canvas\CanvasRenderer.js * @sourceline 15 */ /** * @description The renderer type. * @member PIXI.CanvasRenderer#type * @type {Number} -* @sourcefile /Users/rich/Documents/phaser/src/pixi/renderers/canvas/CanvasRenderer.js +* @sourcefile d:\wamp\www\phaser\src\pixi\renderers\canvas\CanvasRenderer.js * @sourceline 25 */ /** * @description The resolution of the canvas. * @member PIXI.CanvasRenderer#resolution * @type {Number} -* @sourcefile /Users/rich/Documents/phaser/src/pixi/renderers/canvas/CanvasRenderer.js +* @sourcefile d:\wamp\www\phaser\src\pixi\renderers\canvas\CanvasRenderer.js * @sourceline 33 */ /** @@ -2853,21 +2888,21 @@ Disable this by setting this to false. For example if your game has a canvas fil * @member PIXI.CanvasRenderer#clearBeforeRender * @type {Boolean} * @default -* @sourcefile /Users/rich/Documents/phaser/src/pixi/renderers/canvas/CanvasRenderer.js +* @sourcefile d:\wamp\www\phaser\src\pixi\renderers\canvas\CanvasRenderer.js * @sourceline 41 */ /** * @description Whether the render view is transparent * @member PIXI.CanvasRenderer#transparent * @type {Boolean} -* @sourcefile /Users/rich/Documents/phaser/src/pixi/renderers/canvas/CanvasRenderer.js +* @sourcefile d:\wamp\www\phaser\src\pixi\renderers\canvas\CanvasRenderer.js * @sourceline 53 */ /** * @description Whether the render view should be resized automatically * @member PIXI.CanvasRenderer#autoResize * @type {Boolean} -* @sourcefile /Users/rich/Documents/phaser/src/pixi/renderers/canvas/CanvasRenderer.js +* @sourcefile d:\wamp\www\phaser\src\pixi\renderers\canvas\CanvasRenderer.js * @sourceline 61 */ /** @@ -2875,7 +2910,7 @@ Disable this by setting this to false. For example if your game has a canvas fil * @member PIXI.CanvasRenderer#width * @type {Number} * @default 800 -* @sourcefile /Users/rich/Documents/phaser/src/pixi/renderers/canvas/CanvasRenderer.js +* @sourcefile d:\wamp\www\phaser\src\pixi\renderers\canvas\CanvasRenderer.js * @sourceline 69 */ /** @@ -2883,49 +2918,49 @@ Disable this by setting this to false. For example if your game has a canvas fil * @member PIXI.CanvasRenderer#height * @type {Number} * @default 600 -* @sourcefile /Users/rich/Documents/phaser/src/pixi/renderers/canvas/CanvasRenderer.js +* @sourcefile d:\wamp\www\phaser\src\pixi\renderers\canvas\CanvasRenderer.js * @sourceline 78 */ /** * @description The canvas element that everything is drawn to. * @member PIXI.CanvasRenderer#view * @type {HTMLCanvasElement} -* @sourcefile /Users/rich/Documents/phaser/src/pixi/renderers/canvas/CanvasRenderer.js +* @sourcefile d:\wamp\www\phaser\src\pixi\renderers\canvas\CanvasRenderer.js * @sourceline 87 */ /** * @description The canvas 2d context that everything is drawn with * @member PIXI.CanvasRenderer#context * @type {CanvasRenderingContext2D} -* @sourcefile /Users/rich/Documents/phaser/src/pixi/renderers/canvas/CanvasRenderer.js +* @sourcefile d:\wamp\www\phaser\src\pixi\renderers\canvas\CanvasRenderer.js * @sourceline 95 */ /** * @description Boolean flag controlling canvas refresh. * @member PIXI.CanvasRenderer#refresh * @type {Boolean} -* @sourcefile /Users/rich/Documents/phaser/src/pixi/renderers/canvas/CanvasRenderer.js +* @sourcefile d:\wamp\www\phaser\src\pixi\renderers\canvas\CanvasRenderer.js * @sourceline 102 */ /** * @description Internal var. * @member PIXI.CanvasRenderer#count * @type {Number} -* @sourcefile /Users/rich/Documents/phaser/src/pixi/renderers/canvas/CanvasRenderer.js +* @sourcefile d:\wamp\www\phaser\src\pixi\renderers\canvas\CanvasRenderer.js * @sourceline 110 */ /** * @description Instance of a PIXI.CanvasMaskManager, handles masking when using the canvas renderer * @member PIXI.CanvasRenderer#CanvasMaskManager * @type {PIXI.CanvasMaskManager} -* @sourcefile /Users/rich/Documents/phaser/src/pixi/renderers/canvas/CanvasRenderer.js +* @sourcefile d:\wamp\www\phaser\src\pixi\renderers\canvas\CanvasRenderer.js * @sourceline 118 */ /** * @description The render session is just a bunch of parameter used for rendering * @member PIXI.CanvasRenderer#renderSession * @type {Object} -* @sourcefile /Users/rich/Documents/phaser/src/pixi/renderers/canvas/CanvasRenderer.js +* @sourcefile d:\wamp\www\phaser\src\pixi\renderers\canvas\CanvasRenderer.js * @sourceline 125 */ @@ -2933,14 +2968,14 @@ Disable this by setting this to false. For example if your game has a canvas fil * @description Renders the Stage to this canvas view * @method PIXI.CanvasRenderer#render * @param {Stage} stage - the Stage element to be rendered -* @sourcefile /Users/rich/Documents/phaser/src/pixi/renderers/canvas/CanvasRenderer.js +* @sourcefile d:\wamp\www\phaser\src\pixi\renderers\canvas\CanvasRenderer.js * @sourceline 152 */ /** * @description Removes everything from the renderer and optionally removes the Canvas DOM element. * @method PIXI.CanvasRenderer#destroy * @param {Boolean} [removeView=true] - Removes the Canvas element from the DOM. -* @sourcefile /Users/rich/Documents/phaser/src/pixi/renderers/canvas/CanvasRenderer.js +* @sourcefile d:\wamp\www\phaser\src\pixi\renderers\canvas\CanvasRenderer.js * @sourceline 193 */ /** @@ -2948,193 +2983,193 @@ Disable this by setting this to false. For example if your game has a canvas fil * @method PIXI.CanvasRenderer#resize * @param {Number} width - the new width of the canvas view * @param {Number} height - the new height of the canvas view -* @sourcefile /Users/rich/Documents/phaser/src/pixi/renderers/canvas/CanvasRenderer.js +* @sourcefile d:\wamp\www\phaser\src\pixi\renderers\canvas\CanvasRenderer.js * @sourceline 215 */ /** * @description Renders a display object * @method PIXI.CanvasRenderer#renderDisplayObject -* @param {PIXI.DisplayObject} displayObject - The displayObject to render +* @param {DisplayObject} displayObject - The displayObject to render * @param {CanvasRenderingContext2D} context - the context 2d method of the canvas * @param {Matrix} [matrix] - Optional matrix to apply to the display object before rendering. * @access private -* @sourcefile /Users/rich/Documents/phaser/src/pixi/renderers/canvas/CanvasRenderer.js +* @sourcefile d:\wamp\www\phaser\src\pixi\renderers\canvas\CanvasRenderer.js * @sourceline 243 */ /** * @description Maps Pixi blend modes to canvas blend modes. * @method PIXI.CanvasRenderer#mapBlendModes * @access private -* @sourcefile /Users/rich/Documents/phaser/src/pixi/renderers/canvas/CanvasRenderer.js +* @sourcefile d:\wamp\www\phaser\src\pixi\renderers\canvas\CanvasRenderer.js * @sourceline 260 */ /** * @fileoverview * @author Mat Groves http://matgroves.com/ @Doormat23 -* @sourcefile /Users/rich/Documents/phaser/src/pixi/renderers/webgl/shaders/ComplexPrimitiveShader.js +* @sourcefile d:\wamp\www\phaser\src\pixi\renderers\webgl\shaders\ComplexPrimitiveShader.js * @sourceline 1 */ /** * @class PIXI.ComplexPrimitiveShader * @param {WebGLContext} gl - the current WebGL drawing context -* @sourcefile /Users/rich/Documents/phaser/src/pixi/renderers/webgl/shaders/ComplexPrimitiveShader.js +* @sourcefile d:\wamp\www\phaser\src\pixi\renderers\webgl\shaders\ComplexPrimitiveShader.js * @sourceline 5 */ /** * @member PIXI.ComplexPrimitiveShader#_UID * @type {Number} * @access private -* @sourcefile /Users/rich/Documents/phaser/src/pixi/renderers/webgl/shaders/ComplexPrimitiveShader.js +* @sourcefile d:\wamp\www\phaser\src\pixi\renderers\webgl\shaders\ComplexPrimitiveShader.js * @sourceline 12 */ /** * @member PIXI.ComplexPrimitiveShader#gl * @type {WebGLContext} -* @sourcefile /Users/rich/Documents/phaser/src/pixi/renderers/webgl/shaders/ComplexPrimitiveShader.js +* @sourcefile d:\wamp\www\phaser\src\pixi\renderers\webgl\shaders\ComplexPrimitiveShader.js * @sourceline 19 */ /** * @description The WebGL program. * @member PIXI.ComplexPrimitiveShader#program * @type {} -* @sourcefile /Users/rich/Documents/phaser/src/pixi/renderers/webgl/shaders/ComplexPrimitiveShader.js +* @sourcefile d:\wamp\www\phaser\src\pixi\renderers\webgl\shaders\ComplexPrimitiveShader.js * @sourceline 25 */ /** * @description The fragment shader. * @member PIXI.ComplexPrimitiveShader#fragmentSrc * @type {Array} -* @sourcefile /Users/rich/Documents/phaser/src/pixi/renderers/webgl/shaders/ComplexPrimitiveShader.js +* @sourcefile d:\wamp\www\phaser\src\pixi\renderers\webgl\shaders\ComplexPrimitiveShader.js * @sourceline 32 */ /** * @description The vertex shader. * @member PIXI.ComplexPrimitiveShader#vertexSrc * @type {Array} -* @sourcefile /Users/rich/Documents/phaser/src/pixi/renderers/webgl/shaders/ComplexPrimitiveShader.js +* @sourcefile d:\wamp\www\phaser\src\pixi\renderers\webgl\shaders\ComplexPrimitiveShader.js * @sourceline 48 */ /** * @description Initialises the shader. * @method PIXI.ComplexPrimitiveShader#init -* @sourcefile /Users/rich/Documents/phaser/src/pixi/renderers/webgl/shaders/ComplexPrimitiveShader.js +* @sourcefile d:\wamp\www\phaser\src\pixi\renderers\webgl\shaders\ComplexPrimitiveShader.js * @sourceline 79 */ /** * @description Destroys the shader. * @method PIXI.ComplexPrimitiveShader#destroy -* @sourcefile /Users/rich/Documents/phaser/src/pixi/renderers/webgl/shaders/ComplexPrimitiveShader.js +* @sourcefile d:\wamp\www\phaser\src\pixi\renderers\webgl\shaders\ComplexPrimitiveShader.js * @sourceline 110 */ /** * @fileoverview * @author Mat Groves http://matgroves.com/ @Doormat23 -* @sourcefile /Users/rich/Documents/phaser/src/pixi/renderers/webgl/shaders/PixiFastShader.js +* @sourcefile d:\wamp\www\phaser\src\pixi\renderers\webgl\shaders\PixiFastShader.js * @sourceline 1 */ /** * @class PIXI.PixiFastShader * @param {WebGLContext} gl - the current WebGL drawing context -* @sourcefile /Users/rich/Documents/phaser/src/pixi/renderers/webgl/shaders/PixiFastShader.js +* @sourcefile d:\wamp\www\phaser\src\pixi\renderers\webgl\shaders\PixiFastShader.js * @sourceline 5 */ /** * @member PIXI.PixiFastShader#_UID * @type {Number} * @access private -* @sourcefile /Users/rich/Documents/phaser/src/pixi/renderers/webgl/shaders/PixiFastShader.js +* @sourcefile d:\wamp\www\phaser\src\pixi\renderers\webgl\shaders\PixiFastShader.js * @sourceline 12 */ /** * @member PIXI.PixiFastShader#gl * @type {WebGLContext} -* @sourcefile /Users/rich/Documents/phaser/src/pixi/renderers/webgl/shaders/PixiFastShader.js +* @sourcefile d:\wamp\www\phaser\src\pixi\renderers\webgl\shaders\PixiFastShader.js * @sourceline 19 */ /** * @description The WebGL program. * @member PIXI.PixiFastShader#program * @type {} -* @sourcefile /Users/rich/Documents/phaser/src/pixi/renderers/webgl/shaders/PixiFastShader.js +* @sourcefile d:\wamp\www\phaser\src\pixi\renderers\webgl\shaders\PixiFastShader.js * @sourceline 25 */ /** * @description The fragment shader. * @member PIXI.PixiFastShader#fragmentSrc * @type {Array} -* @sourcefile /Users/rich/Documents/phaser/src/pixi/renderers/webgl/shaders/PixiFastShader.js +* @sourcefile d:\wamp\www\phaser\src\pixi\renderers\webgl\shaders\PixiFastShader.js * @sourceline 32 */ /** * @description The vertex shader. * @member PIXI.PixiFastShader#vertexSrc * @type {Array} -* @sourcefile /Users/rich/Documents/phaser/src/pixi/renderers/webgl/shaders/PixiFastShader.js +* @sourcefile d:\wamp\www\phaser\src\pixi\renderers\webgl\shaders\PixiFastShader.js * @sourceline 47 */ /** * @description A local texture counter for multi-texture shaders. * @member PIXI.PixiFastShader#textureCount * @type {Number} -* @sourcefile /Users/rich/Documents/phaser/src/pixi/renderers/webgl/shaders/PixiFastShader.js +* @sourcefile d:\wamp\www\phaser\src\pixi\renderers\webgl\shaders\PixiFastShader.js * @sourceline 82 */ /** * @description Initialises the shader. * @method PIXI.PixiFastShader#init -* @sourcefile /Users/rich/Documents/phaser/src/pixi/renderers/webgl/shaders/PixiFastShader.js +* @sourcefile d:\wamp\www\phaser\src\pixi\renderers\webgl\shaders\PixiFastShader.js * @sourceline 94 */ /** * @description Destroys the shader. * @method PIXI.PixiFastShader#destroy -* @sourcefile /Users/rich/Documents/phaser/src/pixi/renderers/webgl/shaders/PixiFastShader.js +* @sourcefile d:\wamp\www\phaser\src\pixi\renderers\webgl\shaders\PixiFastShader.js * @sourceline 143 */ /** * @fileoverview * @author Richard Davey http://www.photonstorm.com @photonstorm -* @sourcefile /Users/rich/Documents/phaser/src/pixi/renderers/webgl/shaders/PixiShader.js +* @sourcefile d:\wamp\www\phaser\src\pixi\renderers\webgl\shaders\PixiShader.js * @sourceline 1 */ /** * @class PIXI.PixiShader * @param {WebGLContext} gl - the current WebGL drawing context -* @sourcefile /Users/rich/Documents/phaser/src/pixi/renderers/webgl/shaders/PixiShader.js +* @sourcefile d:\wamp\www\phaser\src\pixi\renderers\webgl\shaders\PixiShader.js * @sourceline 6 */ /** * @member PIXI.PixiShader#_UID * @type {Number} * @access private -* @sourcefile /Users/rich/Documents/phaser/src/pixi/renderers/webgl/shaders/PixiShader.js +* @sourcefile d:\wamp\www\phaser\src\pixi\renderers\webgl\shaders\PixiShader.js * @sourceline 13 */ /** * @member PIXI.PixiShader#gl * @type {WebGLContext} -* @sourcefile /Users/rich/Documents/phaser/src/pixi/renderers/webgl/shaders/PixiShader.js +* @sourcefile d:\wamp\www\phaser\src\pixi\renderers\webgl\shaders\PixiShader.js * @sourceline 20 */ /** * @description The WebGL program. * @member PIXI.PixiShader#program * @type {} -* @sourcefile /Users/rich/Documents/phaser/src/pixi/renderers/webgl/shaders/PixiShader.js +* @sourcefile d:\wamp\www\phaser\src\pixi\renderers\webgl\shaders\PixiShader.js * @sourceline 26 */ /** * @description The fragment shader. * @member PIXI.PixiShader#fragmentSrc * @type {Array} -* @sourcefile /Users/rich/Documents/phaser/src/pixi/renderers/webgl/shaders/PixiShader.js +* @sourcefile d:\wamp\www\phaser\src\pixi\renderers\webgl\shaders\PixiShader.js * @sourceline 33 */ /** * @description A local texture counter for multi-texture shaders. * @member PIXI.PixiShader#textureCount * @type {Number} -* @sourcefile /Users/rich/Documents/phaser/src/pixi/renderers/webgl/shaders/PixiShader.js +* @sourcefile d:\wamp\www\phaser\src\pixi\renderers\webgl\shaders\PixiShader.js * @sourceline 48 */ /** @@ -3142,14 +3177,14 @@ Disable this by setting this to false. For example if your game has a canvas fil * @member PIXI.PixiShader#firstRun * @type {Boolean} * @access private -* @sourcefile /Users/rich/Documents/phaser/src/pixi/renderers/webgl/shaders/PixiShader.js +* @sourcefile d:\wamp\www\phaser\src\pixi\renderers\webgl\shaders\PixiShader.js * @sourceline 55 */ /** * @description A dirty flag * @member PIXI.PixiShader#dirty * @type {Boolean} -* @sourcefile /Users/rich/Documents/phaser/src/pixi/renderers/webgl/shaders/PixiShader.js +* @sourcefile d:\wamp\www\phaser\src\pixi\renderers\webgl\shaders\PixiShader.js * @sourceline 63 */ /** @@ -3157,13 +3192,13 @@ Disable this by setting this to false. For example if your game has a canvas fil * @member PIXI.PixiShader#attributes * @type {Array} * @access private -* @sourcefile /Users/rich/Documents/phaser/src/pixi/renderers/webgl/shaders/PixiShader.js +* @sourcefile d:\wamp\www\phaser\src\pixi\renderers\webgl\shaders\PixiShader.js * @sourceline 70 */ /** * @description Initialises the shader. * @method PIXI.PixiShader#init -* @sourcefile /Users/rich/Documents/phaser/src/pixi/renderers/webgl/shaders/PixiShader.js +* @sourcefile d:\wamp\www\phaser\src\pixi\renderers\webgl\shaders\PixiShader.js * @sourceline 83 */ /** @@ -3172,154 +3207,154 @@ Disable this by setting this to false. For example if your game has a canvas fil Uniforms are specified in the GLSL_ES Specification: http://www.khronos.org/registry/webgl/specs/latest/1.0/ http://www.khronos.org/registry/gles/specs/2.0/GLSL_ES_Specification_1.0.17.pdf * @method PIXI.PixiShader#initUniforms -* @sourcefile /Users/rich/Documents/phaser/src/pixi/renderers/webgl/shaders/PixiShader.js +* @sourcefile d:\wamp\www\phaser\src\pixi\renderers\webgl\shaders\PixiShader.js * @sourceline 134 */ /** * @description Initialises a Sampler2D uniform (which may only be available later on after initUniforms once the texture has loaded) * @method PIXI.PixiShader#initSampler2D -* @sourcefile /Users/rich/Documents/phaser/src/pixi/renderers/webgl/shaders/PixiShader.js +* @sourcefile d:\wamp\www\phaser\src\pixi\renderers\webgl\shaders\PixiShader.js * @sourceline 208 */ /** * @description Updates the shader uniform values. * @method PIXI.PixiShader#syncUniforms -* @sourcefile /Users/rich/Documents/phaser/src/pixi/renderers/webgl/shaders/PixiShader.js +* @sourcefile d:\wamp\www\phaser\src\pixi\renderers\webgl\shaders\PixiShader.js * @sourceline 283 */ /** * @description Destroys the shader. * @method PIXI.PixiShader#destroy -* @sourcefile /Users/rich/Documents/phaser/src/pixi/renderers/webgl/shaders/PixiShader.js +* @sourcefile d:\wamp\www\phaser\src\pixi\renderers\webgl\shaders\PixiShader.js * @sourceline 351 */ /** * @description The Default Vertex shader source. * @member PIXI.PixiShader#defaultVertexSrc * @type {String} -* @sourcefile /Users/rich/Documents/phaser/src/pixi/renderers/webgl/shaders/PixiShader.js +* @sourcefile d:\wamp\www\phaser\src\pixi\renderers\webgl\shaders\PixiShader.js * @sourceline 365 */ /** * @fileoverview * @author Mat Groves http://matgroves.com/ @Doormat23 -* @sourcefile /Users/rich/Documents/phaser/src/pixi/renderers/webgl/shaders/PrimitiveShader.js +* @sourcefile d:\wamp\www\phaser\src\pixi\renderers\webgl\shaders\PrimitiveShader.js * @sourceline 1 */ /** * @class PIXI.PrimitiveShader * @param {WebGLContext} gl - the current WebGL drawing context -* @sourcefile /Users/rich/Documents/phaser/src/pixi/renderers/webgl/shaders/PrimitiveShader.js +* @sourcefile d:\wamp\www\phaser\src\pixi\renderers\webgl\shaders\PrimitiveShader.js * @sourceline 5 */ /** * @member PIXI.PrimitiveShader#_UID * @type {Number} * @access private -* @sourcefile /Users/rich/Documents/phaser/src/pixi/renderers/webgl/shaders/PrimitiveShader.js +* @sourcefile d:\wamp\www\phaser\src\pixi\renderers\webgl\shaders\PrimitiveShader.js * @sourceline 12 */ /** * @member PIXI.PrimitiveShader#gl * @type {WebGLContext} -* @sourcefile /Users/rich/Documents/phaser/src/pixi/renderers/webgl/shaders/PrimitiveShader.js +* @sourcefile d:\wamp\www\phaser\src\pixi\renderers\webgl\shaders\PrimitiveShader.js * @sourceline 19 */ /** * @description The WebGL program. * @member PIXI.PrimitiveShader#program * @type {} -* @sourcefile /Users/rich/Documents/phaser/src/pixi/renderers/webgl/shaders/PrimitiveShader.js +* @sourcefile d:\wamp\www\phaser\src\pixi\renderers\webgl\shaders\PrimitiveShader.js * @sourceline 25 */ /** * @description The fragment shader. * @member PIXI.PrimitiveShader#fragmentSrc * @type {Array} -* @sourcefile /Users/rich/Documents/phaser/src/pixi/renderers/webgl/shaders/PrimitiveShader.js +* @sourcefile d:\wamp\www\phaser\src\pixi\renderers\webgl\shaders\PrimitiveShader.js * @sourceline 32 */ /** * @description The vertex shader. * @member PIXI.PrimitiveShader#vertexSrc * @type {Array} -* @sourcefile /Users/rich/Documents/phaser/src/pixi/renderers/webgl/shaders/PrimitiveShader.js +* @sourcefile d:\wamp\www\phaser\src\pixi\renderers\webgl\shaders\PrimitiveShader.js * @sourceline 46 */ /** * @description Initialises the shader. * @method PIXI.PrimitiveShader#init -* @sourcefile /Users/rich/Documents/phaser/src/pixi/renderers/webgl/shaders/PrimitiveShader.js +* @sourcefile d:\wamp\www\phaser\src\pixi\renderers\webgl\shaders\PrimitiveShader.js * @sourceline 75 */ /** * @description Destroys the shader. * @method PIXI.PrimitiveShader#destroy -* @sourcefile /Users/rich/Documents/phaser/src/pixi/renderers/webgl/shaders/PrimitiveShader.js +* @sourcefile d:\wamp\www\phaser\src\pixi\renderers\webgl\shaders\PrimitiveShader.js * @sourceline 105 */ /** * @fileoverview * @author Mat Groves http://matgroves.com/ @Doormat23 -* @sourcefile /Users/rich/Documents/phaser/src/pixi/renderers/webgl/shaders/StripShader.js +* @sourcefile d:\wamp\www\phaser\src\pixi\renderers\webgl\shaders\StripShader.js * @sourceline 1 */ /** * @class PIXI.StripShader * @param {WebGLContext} gl - the current WebGL drawing context -* @sourcefile /Users/rich/Documents/phaser/src/pixi/renderers/webgl/shaders/StripShader.js +* @sourcefile d:\wamp\www\phaser\src\pixi\renderers\webgl\shaders\StripShader.js * @sourceline 5 */ /** * @member PIXI.StripShader#_UID * @type {Number} * @access private -* @sourcefile /Users/rich/Documents/phaser/src/pixi/renderers/webgl/shaders/StripShader.js +* @sourcefile d:\wamp\www\phaser\src\pixi\renderers\webgl\shaders\StripShader.js * @sourceline 12 */ /** * @member PIXI.StripShader#gl * @type {WebGLContext} -* @sourcefile /Users/rich/Documents/phaser/src/pixi/renderers/webgl/shaders/StripShader.js +* @sourcefile d:\wamp\www\phaser\src\pixi\renderers\webgl\shaders\StripShader.js * @sourceline 19 */ /** * @description The WebGL program. * @member PIXI.StripShader#program * @type {} -* @sourcefile /Users/rich/Documents/phaser/src/pixi/renderers/webgl/shaders/StripShader.js +* @sourcefile d:\wamp\www\phaser\src\pixi\renderers\webgl\shaders\StripShader.js * @sourceline 25 */ /** * @description The fragment shader. * @member PIXI.StripShader#fragmentSrc * @type {Array} -* @sourcefile /Users/rich/Documents/phaser/src/pixi/renderers/webgl/shaders/StripShader.js +* @sourcefile d:\wamp\www\phaser\src\pixi\renderers\webgl\shaders\StripShader.js * @sourceline 32 */ /** * @description The vertex shader. * @member PIXI.StripShader#vertexSrc * @type {Array} -* @sourcefile /Users/rich/Documents/phaser/src/pixi/renderers/webgl/shaders/StripShader.js +* @sourcefile d:\wamp\www\phaser\src\pixi\renderers\webgl\shaders\StripShader.js * @sourceline 50 */ /** * @description Initialises the shader. * @method PIXI.StripShader#init -* @sourcefile /Users/rich/Documents/phaser/src/pixi/renderers/webgl/shaders/StripShader.js +* @sourcefile d:\wamp\www\phaser\src\pixi\renderers\webgl\shaders\StripShader.js * @sourceline 80 */ /** * @description Destroys the shader. * @method PIXI.StripShader#destroy -* @sourcefile /Users/rich/Documents/phaser/src/pixi/renderers/webgl/shaders/StripShader.js +* @sourcefile d:\wamp\www\phaser\src\pixi\renderers\webgl\shaders\StripShader.js * @sourceline 111 */ /** * @fileoverview * @author Mat Groves http://matgroves.com/ @Doormat23 -* @sourcefile /Users/rich/Documents/phaser/src/pixi/renderers/webgl/utils/FilterTexture.js +* @sourcefile d:\wamp\www\phaser\src\pixi\renderers\webgl\utils\FilterTexture.js * @sourceline 1 */ /** @@ -3328,37 +3363,37 @@ http://www.khronos.org/registry/gles/specs/2.0/GLSL_ES_Specification_1.0.17.pdf * @param {Number} width - the horizontal range of the filter * @param {Number} height - the vertical range of the filter * @param {Number} scaleMode - See {{#crossLink "PIXI/scaleModes:property"}}PIXI.scaleModes{{/crossLink}} for possible values -* @sourcefile /Users/rich/Documents/phaser/src/pixi/renderers/webgl/utils/FilterTexture.js +* @sourcefile d:\wamp\www\phaser\src\pixi\renderers\webgl\utils\FilterTexture.js * @sourceline 5 */ /** * @member PIXI.FilterTexture#gl * @type {WebGLContext} -* @sourcefile /Users/rich/Documents/phaser/src/pixi/renderers/webgl/utils/FilterTexture.js +* @sourcefile d:\wamp\www\phaser\src\pixi\renderers\webgl\utils\FilterTexture.js * @sourceline 15 */ /** * @member PIXI.FilterTexture#frameBuffer * @type {} -* @sourcefile /Users/rich/Documents/phaser/src/pixi/renderers/webgl/utils/FilterTexture.js +* @sourcefile d:\wamp\www\phaser\src\pixi\renderers\webgl\utils\FilterTexture.js * @sourceline 23 */ /** * @member PIXI.FilterTexture#texture * @type {} -* @sourcefile /Users/rich/Documents/phaser/src/pixi/renderers/webgl/utils/FilterTexture.js +* @sourcefile d:\wamp\www\phaser\src\pixi\renderers\webgl\utils\FilterTexture.js * @sourceline 29 */ /** * @member PIXI.FilterTexture#scaleMode * @type {Number} -* @sourcefile /Users/rich/Documents/phaser/src/pixi/renderers/webgl/utils/FilterTexture.js +* @sourcefile d:\wamp\www\phaser\src\pixi\renderers\webgl\utils\FilterTexture.js * @sourceline 35 */ /** * @description Clears the filter texture. * @method PIXI.FilterTexture#clear -* @sourcefile /Users/rich/Documents/phaser/src/pixi/renderers/webgl/utils/FilterTexture.js +* @sourcefile d:\wamp\www\phaser\src\pixi\renderers\webgl\utils\FilterTexture.js * @sourceline 61 */ /** @@ -3366,51 +3401,51 @@ http://www.khronos.org/registry/gles/specs/2.0/GLSL_ES_Specification_1.0.17.pdf * @method PIXI.FilterTexture#resize * @param {Number} width - the new width of the texture * @param {Number} height - the new height of the texture -* @sourcefile /Users/rich/Documents/phaser/src/pixi/renderers/webgl/utils/FilterTexture.js +* @sourcefile d:\wamp\www\phaser\src\pixi\renderers\webgl\utils\FilterTexture.js * @sourceline 74 */ /** * @description Destroys the filter texture. * @method PIXI.FilterTexture#destroy -* @sourcefile /Users/rich/Documents/phaser/src/pixi/renderers/webgl/utils/FilterTexture.js +* @sourcefile d:\wamp\www\phaser\src\pixi\renderers\webgl\utils\FilterTexture.js * @sourceline 97 */ /** * @fileoverview * @author Mat Groves http://matgroves.com/ @Doormat23 -* @sourcefile /Users/rich/Documents/phaser/src/pixi/renderers/webgl/utils/WebGLBlendModeManager.js +* @sourcefile d:\wamp\www\phaser\src\pixi\renderers\webgl\utils\WebGLBlendModeManager.js * @sourceline 1 */ /** * @class PIXI.WebGLBlendModeManager * @param {WebGLContext} gl - the current WebGL drawing context -* @sourcefile /Users/rich/Documents/phaser/src/pixi/renderers/webgl/utils/WebGLBlendModeManager.js +* @sourcefile d:\wamp\www\phaser\src\pixi\renderers\webgl\utils\WebGLBlendModeManager.js * @sourceline 5 */ /** * @member PIXI.WebGLBlendModeManager#currentBlendMode * @type {Number} -* @sourcefile /Users/rich/Documents/phaser/src/pixi/renderers/webgl/utils/WebGLBlendModeManager.js +* @sourcefile d:\wamp\www\phaser\src\pixi\renderers\webgl\utils\WebGLBlendModeManager.js * @sourceline 12 */ /** * @description Sets the WebGL Context. * @method PIXI.WebGLBlendModeManager#setContext * @param {WebGLContext} gl - the current WebGL drawing context -* @sourcefile /Users/rich/Documents/phaser/src/pixi/renderers/webgl/utils/WebGLBlendModeManager.js +* @sourcefile d:\wamp\www\phaser\src\pixi\renderers\webgl\utils\WebGLBlendModeManager.js * @sourceline 21 */ /** * @description Sets-up the given blendMode from WebGL's point of view. * @method PIXI.WebGLBlendModeManager#setBlendMode * @param {Number} blendMode - the blendMode, should be a Pixi const, such as PIXI.BlendModes.ADD -* @sourcefile /Users/rich/Documents/phaser/src/pixi/renderers/webgl/utils/WebGLBlendModeManager.js +* @sourcefile d:\wamp\www\phaser\src\pixi\renderers\webgl\utils\WebGLBlendModeManager.js * @sourceline 32 */ /** * @description Destroys this object. * @method PIXI.WebGLBlendModeManager#destroy -* @sourcefile /Users/rich/Documents/phaser/src/pixi/renderers/webgl/utils/WebGLBlendModeManager.js +* @sourcefile d:\wamp\www\phaser\src\pixi\renderers\webgl\utils\WebGLBlendModeManager.js * @sourceline 54 */ /** @@ -3422,206 +3457,206 @@ for creating the original pixi version! Heavily inspired by LibGDX's WebGLSpriteBatch: https://github.com/libgdx/libgdx/blob/master/gdx/src/com/badlogic/gdx/graphics/g2d/WebGLSpriteBatch.java -* @sourcefile /Users/rich/Documents/phaser/src/pixi/renderers/webgl/utils/WebGLFastSpriteBatch.js +* @sourcefile d:\wamp\www\phaser\src\pixi\renderers\webgl\utils\WebGLFastSpriteBatch.js * @sourceline 1 */ /** * @class PIXI.WebGLFastSpriteBatch -* @sourcefile /Users/rich/Documents/phaser/src/pixi/renderers/webgl/utils/WebGLFastSpriteBatch.js +* @sourcefile d:\wamp\www\phaser\src\pixi\renderers\webgl\utils\WebGLFastSpriteBatch.js * @sourceline 11 */ /** * @member PIXI.WebGLFastSpriteBatch#vertSize * @type {Number} -* @sourcefile /Users/rich/Documents/phaser/src/pixi/renderers/webgl/utils/WebGLFastSpriteBatch.js +* @sourcefile d:\wamp\www\phaser\src\pixi\renderers\webgl\utils\WebGLFastSpriteBatch.js * @sourceline 17 */ /** * @member PIXI.WebGLFastSpriteBatch#maxSize * @type {Number} -* @sourcefile /Users/rich/Documents/phaser/src/pixi/renderers/webgl/utils/WebGLFastSpriteBatch.js +* @sourcefile d:\wamp\www\phaser\src\pixi\renderers\webgl\utils\WebGLFastSpriteBatch.js * @sourceline 23 */ /** * @member PIXI.WebGLFastSpriteBatch#size * @type {Number} -* @sourcefile /Users/rich/Documents/phaser/src/pixi/renderers/webgl/utils/WebGLFastSpriteBatch.js +* @sourcefile d:\wamp\www\phaser\src\pixi\renderers\webgl\utils\WebGLFastSpriteBatch.js * @sourceline 29 */ /** * @description Vertex data * @member PIXI.WebGLFastSpriteBatch#vertices * @type {Float32Array} -* @sourcefile /Users/rich/Documents/phaser/src/pixi/renderers/webgl/utils/WebGLFastSpriteBatch.js +* @sourcefile d:\wamp\www\phaser\src\pixi\renderers\webgl\utils\WebGLFastSpriteBatch.js * @sourceline 41 */ /** * @description Index data * @member PIXI.WebGLFastSpriteBatch#indices * @type {Uint16Array} -* @sourcefile /Users/rich/Documents/phaser/src/pixi/renderers/webgl/utils/WebGLFastSpriteBatch.js +* @sourcefile d:\wamp\www\phaser\src\pixi\renderers\webgl\utils\WebGLFastSpriteBatch.js * @sourceline 48 */ /** * @member PIXI.WebGLFastSpriteBatch#vertexBuffer * @type {Object} -* @sourcefile /Users/rich/Documents/phaser/src/pixi/renderers/webgl/utils/WebGLFastSpriteBatch.js +* @sourcefile d:\wamp\www\phaser\src\pixi\renderers\webgl\utils\WebGLFastSpriteBatch.js * @sourceline 55 */ /** * @member PIXI.WebGLFastSpriteBatch#indexBuffer * @type {Object} -* @sourcefile /Users/rich/Documents/phaser/src/pixi/renderers/webgl/utils/WebGLFastSpriteBatch.js +* @sourcefile d:\wamp\www\phaser\src\pixi\renderers\webgl\utils\WebGLFastSpriteBatch.js * @sourceline 61 */ /** * @member PIXI.WebGLFastSpriteBatch#lastIndexCount * @type {Number} -* @sourcefile /Users/rich/Documents/phaser/src/pixi/renderers/webgl/utils/WebGLFastSpriteBatch.js +* @sourcefile d:\wamp\www\phaser\src\pixi\renderers\webgl\utils\WebGLFastSpriteBatch.js * @sourceline 67 */ /** * @member PIXI.WebGLFastSpriteBatch#drawing * @type {Boolean} -* @sourcefile /Users/rich/Documents/phaser/src/pixi/renderers/webgl/utils/WebGLFastSpriteBatch.js +* @sourcefile d:\wamp\www\phaser\src\pixi\renderers\webgl\utils\WebGLFastSpriteBatch.js * @sourceline 83 */ /** * @member PIXI.WebGLFastSpriteBatch#currentBatchSize * @type {Number} -* @sourcefile /Users/rich/Documents/phaser/src/pixi/renderers/webgl/utils/WebGLFastSpriteBatch.js +* @sourcefile d:\wamp\www\phaser\src\pixi\renderers\webgl\utils\WebGLFastSpriteBatch.js * @sourceline 89 */ /** * @member PIXI.WebGLFastSpriteBatch#currentBaseTexture * @type {PIXI.BaseTexture} -* @sourcefile /Users/rich/Documents/phaser/src/pixi/renderers/webgl/utils/WebGLFastSpriteBatch.js +* @sourcefile d:\wamp\www\phaser\src\pixi\renderers\webgl\utils\WebGLFastSpriteBatch.js * @sourceline 95 */ /** * @member PIXI.WebGLFastSpriteBatch#currentBlendMode * @type {Number} -* @sourcefile /Users/rich/Documents/phaser/src/pixi/renderers/webgl/utils/WebGLFastSpriteBatch.js +* @sourcefile d:\wamp\www\phaser\src\pixi\renderers\webgl\utils\WebGLFastSpriteBatch.js * @sourceline 101 */ /** * @member PIXI.WebGLFastSpriteBatch#renderSession * @type {Object} -* @sourcefile /Users/rich/Documents/phaser/src/pixi/renderers/webgl/utils/WebGLFastSpriteBatch.js +* @sourcefile d:\wamp\www\phaser\src\pixi\renderers\webgl\utils\WebGLFastSpriteBatch.js * @sourceline 107 */ /** * @member PIXI.WebGLFastSpriteBatch#shader * @type {Object} -* @sourcefile /Users/rich/Documents/phaser/src/pixi/renderers/webgl/utils/WebGLFastSpriteBatch.js +* @sourcefile d:\wamp\www\phaser\src\pixi\renderers\webgl\utils\WebGLFastSpriteBatch.js * @sourceline 113 */ /** * @member PIXI.WebGLFastSpriteBatch#matrix * @type {Matrix} -* @sourcefile /Users/rich/Documents/phaser/src/pixi/renderers/webgl/utils/WebGLFastSpriteBatch.js +* @sourcefile d:\wamp\www\phaser\src\pixi\renderers\webgl\utils\WebGLFastSpriteBatch.js * @sourceline 119 */ /** * @description Sets the WebGL Context. * @method PIXI.WebGLFastSpriteBatch#setContext * @param {WebGLContext} gl - the current WebGL drawing context -* @sourcefile /Users/rich/Documents/phaser/src/pixi/renderers/webgl/utils/WebGLFastSpriteBatch.js +* @sourcefile d:\wamp\www\phaser\src\pixi\renderers\webgl\utils\WebGLFastSpriteBatch.js * @sourceline 130 */ /** * @method PIXI.WebGLFastSpriteBatch#begin * @param {PIXI.WebGLSpriteBatch} spriteBatch - * @param {Object} renderSession - -* @sourcefile /Users/rich/Documents/phaser/src/pixi/renderers/webgl/utils/WebGLFastSpriteBatch.js +* @sourcefile d:\wamp\www\phaser\src\pixi\renderers\webgl\utils\WebGLFastSpriteBatch.js * @sourceline 154 */ /** * @method PIXI.WebGLFastSpriteBatch#end -* @sourcefile /Users/rich/Documents/phaser/src/pixi/renderers/webgl/utils/WebGLFastSpriteBatch.js +* @sourcefile d:\wamp\www\phaser\src\pixi\renderers\webgl\utils\WebGLFastSpriteBatch.js * @sourceline 169 */ /** * @method PIXI.WebGLFastSpriteBatch#render * @param {PIXI.WebGLSpriteBatch} spriteBatch - -* @sourcefile /Users/rich/Documents/phaser/src/pixi/renderers/webgl/utils/WebGLFastSpriteBatch.js +* @sourcefile d:\wamp\www\phaser\src\pixi\renderers\webgl\utils\WebGLFastSpriteBatch.js * @sourceline 177 */ /** * @method PIXI.WebGLFastSpriteBatch#renderSprite * @param {PIXI.Sprite} sprite - -* @sourcefile /Users/rich/Documents/phaser/src/pixi/renderers/webgl/utils/WebGLFastSpriteBatch.js +* @sourcefile d:\wamp\www\phaser\src\pixi\renderers\webgl\utils\WebGLFastSpriteBatch.js * @sourceline 208 */ /** * @method PIXI.WebGLFastSpriteBatch#flush -* @sourcefile /Users/rich/Documents/phaser/src/pixi/renderers/webgl/utils/WebGLFastSpriteBatch.js +* @sourcefile d:\wamp\www\phaser\src\pixi\renderers\webgl\utils\WebGLFastSpriteBatch.js * @sourceline 349 */ /** * @method PIXI.WebGLFastSpriteBatch#stop -* @sourcefile /Users/rich/Documents/phaser/src/pixi/renderers/webgl/utils/WebGLFastSpriteBatch.js +* @sourcefile d:\wamp\www\phaser\src\pixi\renderers\webgl\utils\WebGLFastSpriteBatch.js * @sourceline 389 */ /** * @method PIXI.WebGLFastSpriteBatch#start -* @sourcefile /Users/rich/Documents/phaser/src/pixi/renderers/webgl/utils/WebGLFastSpriteBatch.js +* @sourcefile d:\wamp\www\phaser\src\pixi\renderers\webgl\utils\WebGLFastSpriteBatch.js * @sourceline 397 */ /** * @fileoverview * @author Mat Groves http://matgroves.com/ @Doormat23 -* @sourcefile /Users/rich/Documents/phaser/src/pixi/renderers/webgl/utils/WebGLFilterManager.js +* @sourcefile d:\wamp\www\phaser\src\pixi\renderers\webgl\utils\WebGLFilterManager.js * @sourceline 1 */ /** * @class PIXI.WebGLFilterManager -* @sourcefile /Users/rich/Documents/phaser/src/pixi/renderers/webgl/utils/WebGLFilterManager.js +* @sourcefile d:\wamp\www\phaser\src\pixi\renderers\webgl\utils\WebGLFilterManager.js * @sourceline 5 */ /** * @member PIXI.WebGLFilterManager#filterStack * @type {Array} -* @sourcefile /Users/rich/Documents/phaser/src/pixi/renderers/webgl/utils/WebGLFilterManager.js +* @sourcefile d:\wamp\www\phaser\src\pixi\renderers\webgl\utils\WebGLFilterManager.js * @sourceline 11 */ /** * @member PIXI.WebGLFilterManager#offsetX * @type {Number} -* @sourcefile /Users/rich/Documents/phaser/src/pixi/renderers/webgl/utils/WebGLFilterManager.js +* @sourcefile d:\wamp\www\phaser\src\pixi\renderers\webgl\utils\WebGLFilterManager.js * @sourceline 17 */ /** * @member PIXI.WebGLFilterManager#offsetY * @type {Number} -* @sourcefile /Users/rich/Documents/phaser/src/pixi/renderers/webgl/utils/WebGLFilterManager.js +* @sourcefile d:\wamp\www\phaser\src\pixi\renderers\webgl\utils\WebGLFilterManager.js * @sourceline 23 */ /** * @description Initialises the context and the properties. * @method PIXI.WebGLFilterManager#setContext * @param {WebGLContext} gl - the current WebGL drawing context -* @sourcefile /Users/rich/Documents/phaser/src/pixi/renderers/webgl/utils/WebGLFilterManager.js +* @sourcefile d:\wamp\www\phaser\src\pixi\renderers\webgl\utils\WebGLFilterManager.js * @sourceline 32 */ /** * @method PIXI.WebGLFilterManager#begin * @param {RenderSession} renderSession - * @param {ArrayBuffer} buffer - -* @sourcefile /Users/rich/Documents/phaser/src/pixi/renderers/webgl/utils/WebGLFilterManager.js +* @sourcefile d:\wamp\www\phaser\src\pixi\renderers\webgl\utils\WebGLFilterManager.js * @sourceline 46 */ /** * @description Applies the filter and adds it to the current filter stack. * @method PIXI.WebGLFilterManager#pushFilter * @param {Object} filterBlock - the filter that will be pushed to the current filter stack -* @sourcefile /Users/rich/Documents/phaser/src/pixi/renderers/webgl/utils/WebGLFilterManager.js +* @sourcefile d:\wamp\www\phaser\src\pixi\renderers\webgl\utils\WebGLFilterManager.js * @sourceline 62 */ /** * @description Removes the last filter from the filter stack and doesn't return it. * @method PIXI.WebGLFilterManager#popFilter -* @sourcefile /Users/rich/Documents/phaser/src/pixi/renderers/webgl/utils/WebGLFilterManager.js +* @sourcefile d:\wamp\www\phaser\src\pixi\renderers\webgl\utils\WebGLFilterManager.js * @sourceline 145 */ /** @@ -3631,32 +3666,32 @@ https://github.com/libgdx/libgdx/blob/master/gdx/src/com/badlogic/gdx/graphics/g * @param {PIXI.Texture} filterArea - TODO - might need an update * @param {Number} width - the horizontal range of the filter * @param {Number} height - the vertical range of the filter -* @sourcefile /Users/rich/Documents/phaser/src/pixi/renderers/webgl/utils/WebGLFilterManager.js +* @sourcefile d:\wamp\www\phaser\src\pixi\renderers\webgl\utils\WebGLFilterManager.js * @sourceline 336 */ /** * @description Initialises the shader buffers. * @method PIXI.WebGLFilterManager#initShaderBuffers -* @sourcefile /Users/rich/Documents/phaser/src/pixi/renderers/webgl/utils/WebGLFilterManager.js +* @sourcefile d:\wamp\www\phaser\src\pixi\renderers\webgl\utils\WebGLFilterManager.js * @sourceline 397 */ /** * @description Destroys the filter and removes it from the filter stack. * @method PIXI.WebGLFilterManager#destroy -* @sourcefile /Users/rich/Documents/phaser/src/pixi/renderers/webgl/utils/WebGLFilterManager.js +* @sourcefile d:\wamp\www\phaser\src\pixi\renderers\webgl\utils\WebGLFilterManager.js * @sourceline 445 */ /** * @fileoverview * @author Mat Groves http://matgroves.com/ @Doormat23 -* @sourcefile /Users/rich/Documents/phaser/src/pixi/renderers/webgl/utils/WebGLGraphics.js +* @sourcefile d:\wamp\www\phaser\src\pixi\renderers\webgl\utils\WebGLGraphics.js * @sourceline 1 */ /** * @class PIXI.WebGLGraphics * @description A set of functions used by the webGL renderer to draw the primitive graphics data * @access private -* @sourcefile /Users/rich/Documents/phaser/src/pixi/renderers/webgl/utils/WebGLGraphics.js +* @sourcefile d:\wamp\www\phaser\src\pixi\renderers\webgl\utils\WebGLGraphics.js * @sourceline 5 */ @@ -3666,7 +3701,7 @@ https://github.com/libgdx/libgdx/blob/master/gdx/src/com/badlogic/gdx/graphics/g * @param {PIXI.Graphics} graphics - * @param {Object} renderSession - * @access private -* @sourcefile /Users/rich/Documents/phaser/src/pixi/renderers/webgl/utils/WebGLGraphics.js +* @sourcefile d:\wamp\www\phaser\src\pixi\renderers\webgl\utils\WebGLGraphics.js * @sourceline 23 */ /** @@ -3675,7 +3710,7 @@ https://github.com/libgdx/libgdx/blob/master/gdx/src/com/badlogic/gdx/graphics/g * @param {PIXI.Graphics} graphicsData - The graphics object to update * @param {WebGLContext} gl - the current WebGL drawing context * @access private -* @sourcefile /Users/rich/Documents/phaser/src/pixi/renderers/webgl/utils/WebGLGraphics.js +* @sourcefile d:\wamp\www\phaser\src\pixi\renderers\webgl\utils\WebGLGraphics.js * @sourceline 93 */ /** @@ -3683,7 +3718,7 @@ https://github.com/libgdx/libgdx/blob/master/gdx/src/com/badlogic/gdx/graphics/g * @param {WebGLContext} webGL - * @param {Number} type - * @access private -* @sourcefile /Users/rich/Documents/phaser/src/pixi/renderers/webgl/utils/WebGLGraphics.js +* @sourcefile d:\wamp\www\phaser\src\pixi\renderers\webgl\utils\WebGLGraphics.js * @sourceline 218 */ /** @@ -3692,7 +3727,7 @@ https://github.com/libgdx/libgdx/blob/master/gdx/src/com/badlogic/gdx/graphics/g * @param {PIXI.Graphics} graphicsData - The graphics object containing all the necessary properties * @param {Object} webGLData - * @access private -* @sourcefile /Users/rich/Documents/phaser/src/pixi/renderers/webgl/utils/WebGLGraphics.js +* @sourcefile d:\wamp\www\phaser\src\pixi\renderers\webgl\utils\WebGLGraphics.js * @sourceline 252 */ /** @@ -3701,7 +3736,7 @@ https://github.com/libgdx/libgdx/blob/master/gdx/src/com/badlogic/gdx/graphics/g * @param {PIXI.Graphics} graphicsData - The graphics object containing all the necessary properties * @param {Object} webGLData - * @access private -* @sourcefile /Users/rich/Documents/phaser/src/pixi/renderers/webgl/utils/WebGLGraphics.js +* @sourcefile d:\wamp\www\phaser\src\pixi\renderers\webgl\utils\WebGLGraphics.js * @sourceline 320 */ /** @@ -3716,7 +3751,7 @@ Based on: https://stackoverflow.com/questions/785097/how-do-i-implement-a-bezier * @param {Number} toY - Destination point y * @return {Array<Number>} * @access private -* @sourcefile /Users/rich/Documents/phaser/src/pixi/renderers/webgl/utils/WebGLGraphics.js +* @sourcefile d:\wamp\www\phaser\src\pixi\renderers\webgl\utils\WebGLGraphics.js * @sourceline 390 */ /** @@ -3725,7 +3760,7 @@ Based on: https://stackoverflow.com/questions/785097/how-do-i-implement-a-bezier * @param {PIXI.Graphics} graphicsData - The graphics object to draw * @param {Object} webGLData - * @access private -* @sourcefile /Users/rich/Documents/phaser/src/pixi/renderers/webgl/utils/WebGLGraphics.js +* @sourcefile d:\wamp\www\phaser\src\pixi\renderers\webgl\utils\WebGLGraphics.js * @sourceline 442 */ /** @@ -3734,7 +3769,7 @@ Based on: https://stackoverflow.com/questions/785097/how-do-i-implement-a-bezier * @param {PIXI.Graphics} graphicsData - The graphics object containing all the necessary properties * @param {Object} webGLData - * @access private -* @sourcefile /Users/rich/Documents/phaser/src/pixi/renderers/webgl/utils/WebGLGraphics.js +* @sourcefile d:\wamp\www\phaser\src\pixi\renderers\webgl\utils\WebGLGraphics.js * @sourceline 525 */ /** @@ -3743,7 +3778,7 @@ Based on: https://stackoverflow.com/questions/785097/how-do-i-implement-a-bezier * @param {PIXI.Graphics} graphicsData - The graphics object containing all the necessary properties * @param {Object} webGLData - * @access private -* @sourcefile /Users/rich/Documents/phaser/src/pixi/renderers/webgl/utils/WebGLGraphics.js +* @sourcefile d:\wamp\www\phaser\src\pixi\renderers\webgl\utils\WebGLGraphics.js * @sourceline 737 */ /** @@ -3752,42 +3787,42 @@ Based on: https://stackoverflow.com/questions/785097/how-do-i-implement-a-bezier * @param {PIXI.Graphics} graphicsData - The graphics object containing all the necessary properties * @param {Object} webGLData - * @access private -* @sourcefile /Users/rich/Documents/phaser/src/pixi/renderers/webgl/utils/WebGLGraphics.js +* @sourcefile d:\wamp\www\phaser\src\pixi\renderers\webgl\utils\WebGLGraphics.js * @sourceline 799 */ /** * @class PIXI.WebGLGraphicsData * @access private -* @sourcefile /Users/rich/Documents/phaser/src/pixi/renderers/webgl/utils/WebGLGraphics.js +* @sourcefile d:\wamp\www\phaser\src\pixi\renderers\webgl\utils\WebGLGraphics.js * @sourceline 854 */ /** * @method PIXI.WebGLGraphicsData#reset -* @sourcefile /Users/rich/Documents/phaser/src/pixi/renderers/webgl/utils/WebGLGraphics.js +* @sourcefile d:\wamp\www\phaser\src\pixi\renderers\webgl\utils\WebGLGraphics.js * @sourceline 874 */ /** * @method PIXI.WebGLGraphicsData#upload -* @sourcefile /Users/rich/Documents/phaser/src/pixi/renderers/webgl/utils/WebGLGraphics.js +* @sourcefile d:\wamp\www\phaser\src\pixi\renderers\webgl\utils\WebGLGraphics.js * @sourceline 883 */ /** * @fileoverview * @author Mat Groves http://matgroves.com/ @Doormat23 -* @sourcefile /Users/rich/Documents/phaser/src/pixi/renderers/webgl/utils/WebGLMaskManager.js +* @sourcefile d:\wamp\www\phaser\src\pixi\renderers\webgl\utils\WebGLMaskManager.js * @sourceline 1 */ /** * @class PIXI.WebGLMaskManager * @access private -* @sourcefile /Users/rich/Documents/phaser/src/pixi/renderers/webgl/utils/WebGLMaskManager.js +* @sourcefile d:\wamp\www\phaser\src\pixi\renderers\webgl\utils\WebGLMaskManager.js * @sourceline 5 */ /** * @description Sets the drawing context to the one given in parameter. * @method PIXI.WebGLMaskManager#setContext * @param {WebGLContext} gl - the current WebGL drawing context -* @sourcefile /Users/rich/Documents/phaser/src/pixi/renderers/webgl/utils/WebGLMaskManager.js +* @sourcefile d:\wamp\www\phaser\src\pixi\renderers\webgl\utils\WebGLMaskManager.js * @sourceline 16 */ /** @@ -3795,7 +3830,7 @@ Based on: https://stackoverflow.com/questions/785097/how-do-i-implement-a-bezier * @method PIXI.WebGLMaskManager#pushMask * @param {Array} maskData - * @param {Object} renderSession - -* @sourcefile /Users/rich/Documents/phaser/src/pixi/renderers/webgl/utils/WebGLMaskManager.js +* @sourcefile d:\wamp\www\phaser\src\pixi\renderers\webgl\utils\WebGLMaskManager.js * @sourceline 27 */ /** @@ -3803,94 +3838,94 @@ Based on: https://stackoverflow.com/questions/785097/how-do-i-implement-a-bezier * @method PIXI.WebGLMaskManager#popMask * @param {Array} maskData - * @param {Object} renderSession - an object containing all the useful parameters -* @sourcefile /Users/rich/Documents/phaser/src/pixi/renderers/webgl/utils/WebGLMaskManager.js +* @sourcefile d:\wamp\www\phaser\src\pixi\renderers\webgl\utils\WebGLMaskManager.js * @sourceline 51 */ /** * @description Destroys the mask stack. * @method PIXI.WebGLMaskManager#destroy -* @sourcefile /Users/rich/Documents/phaser/src/pixi/renderers/webgl/utils/WebGLMaskManager.js +* @sourcefile d:\wamp\www\phaser\src\pixi\renderers\webgl\utils\WebGLMaskManager.js * @sourceline 71 */ /** * @fileoverview * @author Mat Groves http://matgroves.com/ @Doormat23 -* @sourcefile /Users/rich/Documents/phaser/src/pixi/renderers/webgl/utils/WebGLShaderManager.js +* @sourcefile d:\wamp\www\phaser\src\pixi\renderers\webgl\utils\WebGLShaderManager.js * @sourceline 1 */ /** * @class PIXI.WebGLShaderManager * @access private -* @sourcefile /Users/rich/Documents/phaser/src/pixi/renderers/webgl/utils/WebGLShaderManager.js +* @sourcefile d:\wamp\www\phaser\src\pixi\renderers\webgl\utils\WebGLShaderManager.js * @sourceline 5 */ /** * @member PIXI.WebGLShaderManager#maxAttibs * @type {Number} -* @sourcefile /Users/rich/Documents/phaser/src/pixi/renderers/webgl/utils/WebGLShaderManager.js +* @sourcefile d:\wamp\www\phaser\src\pixi\renderers\webgl\utils\WebGLShaderManager.js * @sourceline 12 */ /** * @member PIXI.WebGLShaderManager#attribState * @type {Array} -* @sourcefile /Users/rich/Documents/phaser/src/pixi/renderers/webgl/utils/WebGLShaderManager.js +* @sourcefile d:\wamp\www\phaser\src\pixi\renderers\webgl\utils\WebGLShaderManager.js * @sourceline 18 */ /** * @member PIXI.WebGLShaderManager#tempAttribState * @type {Array} -* @sourcefile /Users/rich/Documents/phaser/src/pixi/renderers/webgl/utils/WebGLShaderManager.js +* @sourcefile d:\wamp\www\phaser\src\pixi\renderers\webgl\utils\WebGLShaderManager.js * @sourceline 24 */ /** * @member PIXI.WebGLShaderManager#stack * @type {Array} -* @sourcefile /Users/rich/Documents/phaser/src/pixi/renderers/webgl/utils/WebGLShaderManager.js +* @sourcefile d:\wamp\www\phaser\src\pixi\renderers\webgl\utils\WebGLShaderManager.js * @sourceline 35 */ /** * @description Initialises the context and the properties. * @method PIXI.WebGLShaderManager#setContext * @param {WebGLContext} gl - the current WebGL drawing context -* @sourcefile /Users/rich/Documents/phaser/src/pixi/renderers/webgl/utils/WebGLShaderManager.js +* @sourcefile d:\wamp\www\phaser\src\pixi\renderers\webgl\utils\WebGLShaderManager.js * @sourceline 45 */ /** * @description Takes the attributes given in parameters. * @method PIXI.WebGLShaderManager#setAttribs * @param {Array} attribs - attribs -* @sourcefile /Users/rich/Documents/phaser/src/pixi/renderers/webgl/utils/WebGLShaderManager.js +* @sourcefile d:\wamp\www\phaser\src\pixi\renderers\webgl\utils\WebGLShaderManager.js * @sourceline 73 */ /** * @description Sets the current shader. * @method PIXI.WebGLShaderManager#setShader * @param {} shader - -* @sourcefile /Users/rich/Documents/phaser/src/pixi/renderers/webgl/utils/WebGLShaderManager.js +* @sourcefile d:\wamp\www\phaser\src\pixi\renderers\webgl\utils\WebGLShaderManager.js * @sourceline 116 */ /** * @description Destroys this object. * @method PIXI.WebGLShaderManager#destroy -* @sourcefile /Users/rich/Documents/phaser/src/pixi/renderers/webgl/utils/WebGLShaderManager.js +* @sourcefile d:\wamp\www\phaser\src\pixi\renderers\webgl\utils\WebGLShaderManager.js * @sourceline 136 */ /** * @fileoverview * @author Mat Groves http://matgroves.com/ @Doormat23 -* @sourcefile /Users/rich/Documents/phaser/src/pixi/renderers/webgl/utils/WebGLShaderUtils.js +* @sourcefile d:\wamp\www\phaser\src\pixi\renderers\webgl\utils\WebGLShaderUtils.js * @sourceline 1 */ /** * @class PIXI.WebGLSpriteBatch * @access private -* @sourcefile /Users/rich/Documents/phaser/src/pixi/renderers/webgl/utils/WebGLSpriteBatch.js +* @sourcefile d:\wamp\www\phaser\src\pixi\renderers\webgl\utils\WebGLSpriteBatch.js * @sourceline 12 */ /** * @method PIXI.WebGLSpriteBatch.initDefaultShaders * @access private -* @sourcefile /Users/rich/Documents/phaser/src/pixi/renderers/webgl/utils/WebGLShaderUtils.js +* @sourcefile d:\wamp\www\phaser\src\pixi\renderers\webgl\utils\WebGLShaderUtils.js * @sourceline 5 */ /** @@ -3898,7 +3933,7 @@ Based on: https://stackoverflow.com/questions/785097/how-do-i-implement-a-bezier * @param {WebGLContext} gl - the current WebGL drawing context * @param {Array} shaderSrc - * @return {} -* @sourcefile /Users/rich/Documents/phaser/src/pixi/renderers/webgl/utils/WebGLShaderUtils.js +* @sourcefile d:\wamp\www\phaser\src\pixi\renderers\webgl\utils\WebGLShaderUtils.js * @sourceline 14 */ /** @@ -3906,7 +3941,7 @@ Based on: https://stackoverflow.com/questions/785097/how-do-i-implement-a-bezier * @param {WebGLContext} gl - the current WebGL drawing context * @param {Array} shaderSrc - * @return {} -* @sourcefile /Users/rich/Documents/phaser/src/pixi/renderers/webgl/utils/WebGLShaderUtils.js +* @sourcefile d:\wamp\www\phaser\src\pixi\renderers\webgl\utils\WebGLShaderUtils.js * @sourceline 26 */ /** @@ -3916,7 +3951,7 @@ Based on: https://stackoverflow.com/questions/785097/how-do-i-implement-a-bezier * @param {Number} shaderType - * @return {} * @access private -* @sourcefile /Users/rich/Documents/phaser/src/pixi/renderers/webgl/utils/WebGLShaderUtils.js +* @sourcefile d:\wamp\www\phaser\src\pixi\renderers\webgl\utils\WebGLShaderUtils.js * @sourceline 38 */ /** @@ -3925,146 +3960,146 @@ Based on: https://stackoverflow.com/questions/785097/how-do-i-implement-a-bezier * @param {Array} vertexSrc - * @param {Array} fragmentSrc - * @return {} -* @sourcefile /Users/rich/Documents/phaser/src/pixi/renderers/webgl/utils/WebGLShaderUtils.js +* @sourcefile d:\wamp\www\phaser\src\pixi\renderers\webgl\utils\WebGLShaderUtils.js * @sourceline 69 */ /** * @member PIXI.WebGLSpriteBatch#vertSize * @type {Number} -* @sourcefile /Users/rich/Documents/phaser/src/pixi/renderers/webgl/utils/WebGLSpriteBatch.js +* @sourcefile d:\wamp\www\phaser\src\pixi\renderers\webgl\utils\WebGLSpriteBatch.js * @sourceline 20 */ /** * @description The number of images in the SpriteBatch before it flushes * @member PIXI.WebGLSpriteBatch#size * @type {Number} -* @sourcefile /Users/rich/Documents/phaser/src/pixi/renderers/webgl/utils/WebGLSpriteBatch.js +* @sourcefile d:\wamp\www\phaser\src\pixi\renderers\webgl\utils\WebGLSpriteBatch.js * @sourceline 26 */ /** * @description Holds the vertices * @member PIXI.WebGLSpriteBatch#vertices * @type {ArrayBuffer} -* @sourcefile /Users/rich/Documents/phaser/src/pixi/renderers/webgl/utils/WebGLSpriteBatch.js +* @sourcefile d:\wamp\www\phaser\src\pixi\renderers\webgl\utils\WebGLSpriteBatch.js * @sourceline 38 */ /** * @description View on the vertices as a Float32Array * @member PIXI.WebGLSpriteBatch#positions * @type {Float32Array} -* @sourcefile /Users/rich/Documents/phaser/src/pixi/renderers/webgl/utils/WebGLSpriteBatch.js +* @sourcefile d:\wamp\www\phaser\src\pixi\renderers\webgl\utils\WebGLSpriteBatch.js * @sourceline 46 */ /** * @description View on the vertices as a Uint32Array * @member PIXI.WebGLSpriteBatch#colors * @type {Uint32Array} -* @sourcefile /Users/rich/Documents/phaser/src/pixi/renderers/webgl/utils/WebGLSpriteBatch.js +* @sourcefile d:\wamp\www\phaser\src\pixi\renderers\webgl\utils\WebGLSpriteBatch.js * @sourceline 54 */ /** * @description Holds the indices * @member PIXI.WebGLSpriteBatch#indices * @type {Uint16Array} -* @sourcefile /Users/rich/Documents/phaser/src/pixi/renderers/webgl/utils/WebGLSpriteBatch.js +* @sourcefile d:\wamp\www\phaser\src\pixi\renderers\webgl\utils\WebGLSpriteBatch.js * @sourceline 62 */ /** * @member PIXI.WebGLSpriteBatch#lastIndexCount * @type {Number} -* @sourcefile /Users/rich/Documents/phaser/src/pixi/renderers/webgl/utils/WebGLSpriteBatch.js +* @sourcefile d:\wamp\www\phaser\src\pixi\renderers\webgl\utils\WebGLSpriteBatch.js * @sourceline 70 */ /** * @member PIXI.WebGLSpriteBatch#drawing * @type {Boolean} -* @sourcefile /Users/rich/Documents/phaser/src/pixi/renderers/webgl/utils/WebGLSpriteBatch.js +* @sourcefile d:\wamp\www\phaser\src\pixi\renderers\webgl\utils\WebGLSpriteBatch.js * @sourceline 86 */ /** * @member PIXI.WebGLSpriteBatch#currentBatchSize * @type {Number} -* @sourcefile /Users/rich/Documents/phaser/src/pixi/renderers/webgl/utils/WebGLSpriteBatch.js +* @sourcefile d:\wamp\www\phaser\src\pixi\renderers\webgl\utils\WebGLSpriteBatch.js * @sourceline 92 */ /** * @member PIXI.WebGLSpriteBatch#currentBaseTexture * @type {PIXI.BaseTexture} -* @sourcefile /Users/rich/Documents/phaser/src/pixi/renderers/webgl/utils/WebGLSpriteBatch.js +* @sourcefile d:\wamp\www\phaser\src\pixi\renderers\webgl\utils\WebGLSpriteBatch.js * @sourceline 98 */ /** * @member PIXI.WebGLSpriteBatch#dirty * @type {Boolean} -* @sourcefile /Users/rich/Documents/phaser/src/pixi/renderers/webgl/utils/WebGLSpriteBatch.js +* @sourcefile d:\wamp\www\phaser\src\pixi\renderers\webgl\utils\WebGLSpriteBatch.js * @sourceline 104 */ /** * @member PIXI.WebGLSpriteBatch#textures * @type {Array} -* @sourcefile /Users/rich/Documents/phaser/src/pixi/renderers/webgl/utils/WebGLSpriteBatch.js +* @sourcefile d:\wamp\www\phaser\src\pixi\renderers\webgl\utils\WebGLSpriteBatch.js * @sourceline 110 */ /** * @member PIXI.WebGLSpriteBatch#blendModes * @type {Array} -* @sourcefile /Users/rich/Documents/phaser/src/pixi/renderers/webgl/utils/WebGLSpriteBatch.js +* @sourcefile d:\wamp\www\phaser\src\pixi\renderers\webgl\utils\WebGLSpriteBatch.js * @sourceline 116 */ /** * @member PIXI.WebGLSpriteBatch#shaders * @type {Array} -* @sourcefile /Users/rich/Documents/phaser/src/pixi/renderers/webgl/utils/WebGLSpriteBatch.js +* @sourcefile d:\wamp\www\phaser\src\pixi\renderers\webgl\utils\WebGLSpriteBatch.js * @sourceline 122 */ /** * @member PIXI.WebGLSpriteBatch#sprites * @type {Array} -* @sourcefile /Users/rich/Documents/phaser/src/pixi/renderers/webgl/utils/WebGLSpriteBatch.js +* @sourcefile d:\wamp\www\phaser\src\pixi\renderers\webgl\utils\WebGLSpriteBatch.js * @sourceline 128 */ /** * @member PIXI.WebGLSpriteBatch#defaultShader * @type {PIXI.AbstractFilter} -* @sourcefile /Users/rich/Documents/phaser/src/pixi/renderers/webgl/utils/WebGLSpriteBatch.js +* @sourcefile d:\wamp\www\phaser\src\pixi\renderers\webgl\utils\WebGLSpriteBatch.js * @sourceline 134 */ /** * @method PIXI.WebGLSpriteBatch#setContext * @param {WebGLContext} gl - the current WebGL drawing context -* @sourcefile /Users/rich/Documents/phaser/src/pixi/renderers/webgl/utils/WebGLSpriteBatch.js +* @sourcefile d:\wamp\www\phaser\src\pixi\renderers\webgl\utils\WebGLSpriteBatch.js * @sourceline 149 */ /** * @method PIXI.WebGLSpriteBatch#begin * @param {Object} renderSession - The RenderSession object -* @sourcefile /Users/rich/Documents/phaser/src/pixi/renderers/webgl/utils/WebGLSpriteBatch.js +* @sourcefile d:\wamp\www\phaser\src\pixi\renderers\webgl\utils\WebGLSpriteBatch.js * @sourceline 181 */ /** * @method PIXI.WebGLSpriteBatch#end -* @sourcefile /Users/rich/Documents/phaser/src/pixi/renderers/webgl/utils/WebGLSpriteBatch.js +* @sourcefile d:\wamp\www\phaser\src\pixi\renderers\webgl\utils\WebGLSpriteBatch.js * @sourceline 193 */ /** * @method PIXI.WebGLSpriteBatch#render * @param {PIXI.Sprite} sprite - the sprite to render when using this spritebatch * @param {Matrix} [matrix] - - Optional matrix. If provided the Display Object will be rendered using this matrix, otherwise it will use its worldTransform. -* @sourcefile /Users/rich/Documents/phaser/src/pixi/renderers/webgl/utils/WebGLSpriteBatch.js +* @sourcefile d:\wamp\www\phaser\src\pixi\renderers\webgl\utils\WebGLSpriteBatch.js * @sourceline 201 */ /** * @description Renders a TilingSprite using the spriteBatch. * @method PIXI.WebGLSpriteBatch#renderTilingSprite * @param {PIXI.TilingSprite} sprite - the sprite to render -* @sourcefile /Users/rich/Documents/phaser/src/pixi/renderers/webgl/utils/WebGLSpriteBatch.js +* @sourcefile d:\wamp\www\phaser\src\pixi\renderers\webgl\utils\WebGLSpriteBatch.js * @sourceline 335 */ /** * @description Renders the content and empties the current batch. * @method PIXI.WebGLSpriteBatch#flush -* @sourcefile /Users/rich/Documents/phaser/src/pixi/renderers/webgl/utils/WebGLSpriteBatch.js +* @sourcefile d:\wamp\www\phaser\src\pixi\renderers\webgl\utils\WebGLSpriteBatch.js * @sourceline 462 */ /** @@ -4072,42 +4107,42 @@ Based on: https://stackoverflow.com/questions/785097/how-do-i-implement-a-bezier * @param {PIXI.Texture} texture - * @param {Number} size - * @param {Number} startIndex - -* @sourcefile /Users/rich/Documents/phaser/src/pixi/renderers/webgl/utils/WebGLSpriteBatch.js +* @sourcefile d:\wamp\www\phaser\src\pixi\renderers\webgl\utils\WebGLSpriteBatch.js * @sourceline 610 */ /** * @method PIXI.WebGLSpriteBatch#stop -* @sourcefile /Users/rich/Documents/phaser/src/pixi/renderers/webgl/utils/WebGLSpriteBatch.js +* @sourcefile d:\wamp\www\phaser\src\pixi\renderers\webgl\utils\WebGLSpriteBatch.js * @sourceline 647 */ /** * @method PIXI.WebGLSpriteBatch#start -* @sourcefile /Users/rich/Documents/phaser/src/pixi/renderers/webgl/utils/WebGLSpriteBatch.js +* @sourcefile d:\wamp\www\phaser\src\pixi\renderers\webgl\utils\WebGLSpriteBatch.js * @sourceline 656 */ /** * @description Destroys the SpriteBatch. * @method PIXI.WebGLSpriteBatch#destroy -* @sourcefile /Users/rich/Documents/phaser/src/pixi/renderers/webgl/utils/WebGLSpriteBatch.js +* @sourcefile d:\wamp\www\phaser\src\pixi\renderers\webgl\utils\WebGLSpriteBatch.js * @sourceline 664 */ /** * @fileoverview * @author Mat Groves http://matgroves.com/ @Doormat23 -* @sourcefile /Users/rich/Documents/phaser/src/pixi/renderers/webgl/utils/WebGLStencilManager.js +* @sourcefile d:\wamp\www\phaser\src\pixi\renderers\webgl\utils\WebGLStencilManager.js * @sourceline 1 */ /** * @class PIXI.WebGLStencilManager * @access private -* @sourcefile /Users/rich/Documents/phaser/src/pixi/renderers/webgl/utils/WebGLStencilManager.js +* @sourcefile d:\wamp\www\phaser\src\pixi\renderers\webgl\utils\WebGLStencilManager.js * @sourceline 5 */ /** * @description Sets the drawing context to the one given in parameter. * @method PIXI.WebGLStencilManager#setContext * @param {WebGLContext} gl - the current WebGL drawing context -* @sourcefile /Users/rich/Documents/phaser/src/pixi/renderers/webgl/utils/WebGLStencilManager.js +* @sourcefile d:\wamp\www\phaser\src\pixi\renderers\webgl\utils\WebGLStencilManager.js * @sourceline 17 */ /** @@ -4116,7 +4151,7 @@ Based on: https://stackoverflow.com/questions/785097/how-do-i-implement-a-bezier * @param {PIXI.Graphics} graphics - * @param {Array} webGLData - * @param {Object} renderSession - -* @sourcefile /Users/rich/Documents/phaser/src/pixi/renderers/webgl/utils/WebGLStencilManager.js +* @sourcefile d:\wamp\www\phaser\src\pixi\renderers\webgl\utils\WebGLStencilManager.js * @sourceline 28 */ /** @@ -4125,7 +4160,7 @@ Based on: https://stackoverflow.com/questions/785097/how-do-i-implement-a-bezier * @param {PIXI.Graphics} graphics - * @param {Array} webGLData - * @param {Object} renderSession - -* @sourcefile /Users/rich/Documents/phaser/src/pixi/renderers/webgl/utils/WebGLStencilManager.js +* @sourcefile d:\wamp\www\phaser\src\pixi\renderers\webgl\utils\WebGLStencilManager.js * @sourceline 120 */ /** @@ -4133,19 +4168,19 @@ Based on: https://stackoverflow.com/questions/785097/how-do-i-implement-a-bezier * @param {PIXI.Graphics} graphics - * @param {Array} webGLData - * @param {Object} renderSession - -* @sourcefile /Users/rich/Documents/phaser/src/pixi/renderers/webgl/utils/WebGLStencilManager.js +* @sourcefile d:\wamp\www\phaser\src\pixi\renderers\webgl\utils\WebGLStencilManager.js * @sourceline 193 */ /** * @description Destroys the mask stack. * @method PIXI.WebGLStencilManager#destroy -* @sourcefile /Users/rich/Documents/phaser/src/pixi/renderers/webgl/utils/WebGLStencilManager.js +* @sourcefile d:\wamp\www\phaser\src\pixi\renderers\webgl\utils\WebGLStencilManager.js * @sourceline 288 */ /** * @fileoverview * @author Mat Groves http://matgroves.com/ @Doormat23 -* @sourcefile /Users/rich/Documents/phaser/src/pixi/renderers/webgl/WebGLRenderer.js +* @sourcefile d:\wamp\www\phaser\src\pixi\renderers\webgl\WebGLRenderer.js * @sourceline 1 */ /** @@ -4155,19 +4190,19 @@ should be used for browsers that support webGL. This Render works by automatical So no need for Sprite Batches or Sprite Clouds. Don't forget to add the view to your DOM or you will not see anything :) * @param {PhaserGame} game - A reference to the Phaser Game instance -* @sourcefile /Users/rich/Documents/phaser/src/pixi/renderers/webgl/WebGLRenderer.js +* @sourcefile d:\wamp\www\phaser\src\pixi\renderers\webgl\WebGLRenderer.js * @sourceline 8 */ /** * @member PIXI.WebGLRenderer#game - A reference to the Phaser Game instance. * @type {PhaserGame} -* @sourcefile /Users/rich/Documents/phaser/src/pixi/renderers/webgl/WebGLRenderer.js +* @sourcefile d:\wamp\www\phaser\src\pixi\renderers\webgl\WebGLRenderer.js * @sourceline 20 */ /** * @member PIXI.WebGLRenderer#type * @type {Number} -* @sourcefile /Users/rich/Documents/phaser/src/pixi/renderers/webgl/WebGLRenderer.js +* @sourcefile d:\wamp\www\phaser\src\pixi\renderers\webgl\WebGLRenderer.js * @sourceline 30 */ /** @@ -4175,28 +4210,28 @@ Don't forget to add the view to your DOM or you will not see anything :) * @member PIXI.WebGLRenderer#resolution * @type {Number} * @default 1 -* @sourcefile /Users/rich/Documents/phaser/src/pixi/renderers/webgl/WebGLRenderer.js +* @sourcefile d:\wamp\www\phaser\src\pixi\renderers\webgl\WebGLRenderer.js * @sourceline 36 */ /** * @description Whether the render view is transparent * @member PIXI.WebGLRenderer#transparent * @type {Boolean} -* @sourcefile /Users/rich/Documents/phaser/src/pixi/renderers/webgl/WebGLRenderer.js +* @sourcefile d:\wamp\www\phaser\src\pixi\renderers\webgl\WebGLRenderer.js * @sourceline 45 */ /** * @description Whether the render view should be resized automatically * @member PIXI.WebGLRenderer#autoResize * @type {Boolean} -* @sourcefile /Users/rich/Documents/phaser/src/pixi/renderers/webgl/WebGLRenderer.js +* @sourcefile d:\wamp\www\phaser\src\pixi\renderers\webgl\WebGLRenderer.js * @sourceline 53 */ /** * @description The value of the preserveDrawingBuffer flag affects whether or not the contents of the stencil buffer is retained after rendering. * @member PIXI.WebGLRenderer#preserveDrawingBuffer * @type {Boolean} -* @sourcefile /Users/rich/Documents/phaser/src/pixi/renderers/webgl/WebGLRenderer.js +* @sourcefile d:\wamp\www\phaser\src\pixi\renderers\webgl\WebGLRenderer.js * @sourceline 61 */ /** @@ -4207,116 +4242,116 @@ Disable this by setting this to false. For example: if your game has a canvas fi * @member PIXI.WebGLRenderer#clearBeforeRender * @type {Boolean} * @default -* @sourcefile /Users/rich/Documents/phaser/src/pixi/renderers/webgl/WebGLRenderer.js +* @sourcefile d:\wamp\www\phaser\src\pixi\renderers\webgl\WebGLRenderer.js * @sourceline 69 */ /** * @description The width of the canvas view * @member PIXI.WebGLRenderer#width * @type {Number} -* @sourcefile /Users/rich/Documents/phaser/src/pixi/renderers/webgl/WebGLRenderer.js +* @sourcefile d:\wamp\www\phaser\src\pixi\renderers\webgl\WebGLRenderer.js * @sourceline 81 */ /** * @description The height of the canvas view * @member PIXI.WebGLRenderer#height * @type {Number} -* @sourcefile /Users/rich/Documents/phaser/src/pixi/renderers/webgl/WebGLRenderer.js +* @sourcefile d:\wamp\www\phaser\src\pixi\renderers\webgl\WebGLRenderer.js * @sourceline 89 */ /** * @description The canvas element that everything is drawn to * @member PIXI.WebGLRenderer#view * @type {HTMLCanvasElement} -* @sourcefile /Users/rich/Documents/phaser/src/pixi/renderers/webgl/WebGLRenderer.js +* @sourcefile d:\wamp\www\phaser\src\pixi\renderers\webgl\WebGLRenderer.js * @sourceline 97 */ /** * @member PIXI.WebGLRenderer#_contextOptions * @type {Object} * @access private -* @sourcefile /Users/rich/Documents/phaser/src/pixi/renderers/webgl/WebGLRenderer.js +* @sourcefile d:\wamp\www\phaser\src\pixi\renderers\webgl\WebGLRenderer.js * @sourceline 105 */ /** * @member PIXI.WebGLRenderer#projection * @type {Point} -* @sourcefile /Users/rich/Documents/phaser/src/pixi/renderers/webgl/WebGLRenderer.js +* @sourcefile d:\wamp\www\phaser\src\pixi\renderers\webgl\WebGLRenderer.js * @sourceline 118 */ /** * @member PIXI.WebGLRenderer#offset * @type {Point} -* @sourcefile /Users/rich/Documents/phaser/src/pixi/renderers/webgl/WebGLRenderer.js +* @sourcefile d:\wamp\www\phaser\src\pixi\renderers\webgl\WebGLRenderer.js * @sourceline 124 */ /** * @description Deals with managing the shader programs and their attribs * @member PIXI.WebGLRenderer#shaderManager * @type {PIXI.WebGLShaderManager} -* @sourcefile /Users/rich/Documents/phaser/src/pixi/renderers/webgl/WebGLRenderer.js +* @sourcefile d:\wamp\www\phaser\src\pixi\renderers\webgl\WebGLRenderer.js * @sourceline 132 */ /** * @description Manages the rendering of sprites * @member PIXI.WebGLRenderer#spriteBatch * @type {PIXI.WebGLSpriteBatch} -* @sourcefile /Users/rich/Documents/phaser/src/pixi/renderers/webgl/WebGLRenderer.js +* @sourcefile d:\wamp\www\phaser\src\pixi\renderers\webgl\WebGLRenderer.js * @sourceline 139 */ /** * @description Manages the masks using the stencil buffer * @member PIXI.WebGLRenderer#maskManager * @type {PIXI.WebGLMaskManager} -* @sourcefile /Users/rich/Documents/phaser/src/pixi/renderers/webgl/WebGLRenderer.js +* @sourcefile d:\wamp\www\phaser\src\pixi\renderers\webgl\WebGLRenderer.js * @sourceline 146 */ /** * @description Manages the filters * @member PIXI.WebGLRenderer#filterManager * @type {PIXI.WebGLFilterManager} -* @sourcefile /Users/rich/Documents/phaser/src/pixi/renderers/webgl/WebGLRenderer.js +* @sourcefile d:\wamp\www\phaser\src\pixi\renderers\webgl\WebGLRenderer.js * @sourceline 153 */ /** * @description Manages the stencil buffer * @member PIXI.WebGLRenderer#stencilManager * @type {PIXI.WebGLStencilManager} -* @sourcefile /Users/rich/Documents/phaser/src/pixi/renderers/webgl/WebGLRenderer.js +* @sourcefile d:\wamp\www\phaser\src\pixi\renderers\webgl\WebGLRenderer.js * @sourceline 160 */ /** * @description Manages the blendModes * @member PIXI.WebGLRenderer#blendModeManager * @type {PIXI.WebGLBlendModeManager} -* @sourcefile /Users/rich/Documents/phaser/src/pixi/renderers/webgl/WebGLRenderer.js +* @sourcefile d:\wamp\www\phaser\src\pixi\renderers\webgl\WebGLRenderer.js * @sourceline 167 */ /** * @member PIXI.WebGLRenderer#renderSession * @type {Object} -* @sourcefile /Users/rich/Documents/phaser/src/pixi/renderers/webgl/WebGLRenderer.js +* @sourcefile d:\wamp\www\phaser\src\pixi\renderers\webgl\WebGLRenderer.js * @sourceline 174 */ /** * @method PIXI.WebGLRenderer#initContext -* @sourcefile /Users/rich/Documents/phaser/src/pixi/renderers/webgl/WebGLRenderer.js +* @sourcefile d:\wamp\www\phaser\src\pixi\renderers\webgl\WebGLRenderer.js * @sourceline 204 */ /** * @description Renders the stage to its webGL view * @method PIXI.WebGLRenderer#render * @param {Stage} stage - the Stage element to be rendered -* @sourcefile /Users/rich/Documents/phaser/src/pixi/renderers/webgl/WebGLRenderer.js +* @sourcefile d:\wamp\www\phaser\src\pixi\renderers\webgl\WebGLRenderer.js * @sourceline 243 */ /** * @description Renders a Display Object. * @method PIXI.WebGLRenderer#renderDisplayObject -* @param {PIXI.DisplayObject} displayObject - The DisplayObject to render +* @param {DisplayObject} displayObject - The DisplayObject to render * @param {Point} projection - The projection * @param {Array} buffer - a standard WebGL buffer -* @sourcefile /Users/rich/Documents/phaser/src/pixi/renderers/webgl/WebGLRenderer.js +* @sourcefile d:\wamp\www\phaser\src\pixi\renderers\webgl\WebGLRenderer.js * @sourceline 278 */ /** @@ -4324,7 +4359,7 @@ Disable this by setting this to false. For example: if your game has a canvas fi * @method PIXI.WebGLRenderer#resize * @param {Number} width - the new width of the webGL view * @param {Number} height - the new height of the webGL view -* @sourcefile /Users/rich/Documents/phaser/src/pixi/renderers/webgl/WebGLRenderer.js +* @sourcefile d:\wamp\www\phaser\src\pixi\renderers\webgl\WebGLRenderer.js * @sourceline 315 */ /** @@ -4332,110 +4367,110 @@ Disable this by setting this to false. For example: if your game has a canvas fi * @method PIXI.WebGLRenderer#updateTexture * @param {PIXI.Texture} texture - the texture to update * @return {Boolean} True if the texture was successfully bound, otherwise false. -* @sourcefile /Users/rich/Documents/phaser/src/pixi/renderers/webgl/WebGLRenderer.js +* @sourcefile d:\wamp\www\phaser\src\pixi\renderers\webgl\WebGLRenderer.js * @sourceline 341 */ /** * @description Removes everything from the renderer (event listeners, spritebatch, etc...) * @method PIXI.WebGLRenderer#destroy -* @sourcefile /Users/rich/Documents/phaser/src/pixi/renderers/webgl/WebGLRenderer.js +* @sourcefile d:\wamp\www\phaser\src\pixi\renderers\webgl\WebGLRenderer.js * @sourceline 398 */ /** * @description Maps Pixi blend modes to WebGL blend modes. * @method PIXI.WebGLRenderer#mapBlendModes -* @sourcefile /Users/rich/Documents/phaser/src/pixi/renderers/webgl/WebGLRenderer.js +* @sourcefile d:\wamp\www\phaser\src\pixi\renderers\webgl\WebGLRenderer.js * @sourceline 430 */ /** * @fileoverview * @author Mat Groves http://matgroves.com/ @Doormat23 -* @sourcefile /Users/rich/Documents/phaser/src/pixi/textures/BaseTexture.js +* @sourcefile d:\wamp\www\phaser\src\pixi\textures\BaseTexture.js * @sourceline 1 */ /** * @class PIXI.BaseTexture * @description A texture stores the information that represents an image. All textures have a base texture. -* @param {String} source - the source object (image or canvas) +* @param {(String|Canvas)} source - the source object (image or canvas) * @param {Number} scaleMode - See {{#crossLink "PIXI/scaleModes:property"}}PIXI.scaleModes{{/crossLink}} for possible values -* @sourcefile /Users/rich/Documents/phaser/src/pixi/textures/BaseTexture.js -* @sourceline 9 +* @sourcefile d:\wamp\www\phaser\src\pixi\textures\BaseTexture.js +* @sourceline 5 */ /** * @description The Resolution of the texture. * @member PIXI.BaseTexture#resolution * @type {Number} -* @sourcefile /Users/rich/Documents/phaser/src/pixi/textures/BaseTexture.js -* @sourceline 20 +* @sourcefile d:\wamp\www\phaser\src\pixi\textures\BaseTexture.js +* @sourceline 16 */ /** * @description [read-only] The width of the base texture set when the image has loaded * @member PIXI.BaseTexture#width * @type {Number} * @readonly -* @sourcefile /Users/rich/Documents/phaser/src/pixi/textures/BaseTexture.js -* @sourceline 28 +* @sourcefile d:\wamp\www\phaser\src\pixi\textures\BaseTexture.js +* @sourceline 24 */ /** * @description [read-only] The height of the base texture set when the image has loaded * @member PIXI.BaseTexture#height * @type {Number} * @readonly -* @sourcefile /Users/rich/Documents/phaser/src/pixi/textures/BaseTexture.js -* @sourceline 37 +* @sourcefile d:\wamp\www\phaser\src\pixi\textures\BaseTexture.js +* @sourceline 33 */ /** * @description The scale mode to apply when scaling this texture * @member PIXI.BaseTexture#scaleMode * @type {Number} * @default PIXI.scaleModes.LINEAR -* @sourcefile /Users/rich/Documents/phaser/src/pixi/textures/BaseTexture.js -* @sourceline 46 +* @sourcefile d:\wamp\www\phaser\src\pixi\textures\BaseTexture.js +* @sourceline 42 */ /** * @description [read-only] Set to true once the base texture has loaded * @member PIXI.BaseTexture#hasLoaded * @type {Boolean} * @readonly -* @sourcefile /Users/rich/Documents/phaser/src/pixi/textures/BaseTexture.js -* @sourceline 55 +* @sourcefile d:\wamp\www\phaser\src\pixi\textures\BaseTexture.js +* @sourceline 51 */ /** * @description The image source that is used to create the texture. * @member PIXI.BaseTexture#source * @type {Image} -* @sourcefile /Users/rich/Documents/phaser/src/pixi/textures/BaseTexture.js -* @sourceline 64 +* @sourcefile d:\wamp\www\phaser\src\pixi\textures\BaseTexture.js +* @sourceline 60 */ /** * @description Controls if RGB channels should be pre-multiplied by Alpha (WebGL only) * @member PIXI.BaseTexture#premultipliedAlpha * @type {Boolean} * @default true -* @sourcefile /Users/rich/Documents/phaser/src/pixi/textures/BaseTexture.js -* @sourceline 74 +* @sourcefile d:\wamp\www\phaser\src\pixi\textures\BaseTexture.js +* @sourceline 68 */ /** * @member PIXI.BaseTexture#_glTextures * @type {Array} * @access private -* @sourcefile /Users/rich/Documents/phaser/src/pixi/textures/BaseTexture.js -* @sourceline 85 +* @sourcefile d:\wamp\www\phaser\src\pixi\textures\BaseTexture.js +* @sourceline 79 */ /** * @description Set this to true if a mipmap of this texture needs to be generated. This value needs to be set before the texture is used Also the texture must be a power of two size to work * @member PIXI.BaseTexture#mipmap * @type {Boolean} -* @sourcefile /Users/rich/Documents/phaser/src/pixi/textures/BaseTexture.js -* @sourceline 92 +* @sourcefile d:\wamp\www\phaser\src\pixi\textures\BaseTexture.js +* @sourceline 86 */ /** * @member PIXI.BaseTexture#_dirty * @type {Array} * @access private -* @sourcefile /Users/rich/Documents/phaser/src/pixi/textures/BaseTexture.js -* @sourceline 101 +* @sourcefile d:\wamp\www\phaser\src\pixi\textures\BaseTexture.js +* @sourceline 95 */ /** * @description A BaseTexture can be set to skip the rendering phase in the WebGL Sprite Batch. @@ -4444,21 +4479,15 @@ You may want to do this if you have a parent Sprite with no visible texture (i.e that has children that you do want to render, without causing a batch flush in the process. * @member PIXI.BaseTexture#skipRender * @type {Boolean} -* @sourcefile /Users/rich/Documents/phaser/src/pixi/textures/BaseTexture.js -* @sourceline 121 -*/ -/** -* @member PIXI.BaseTexture#imageUrl -* @type {String} -* @sourcefile /Users/rich/Documents/phaser/src/pixi/textures/BaseTexture.js -* @sourceline 132 +* @sourcefile d:\wamp\www\phaser\src\pixi\textures\BaseTexture.js +* @sourceline 115 */ /** * @member PIXI.BaseTexture#_powerOf2 * @type {Boolean} * @access private -* @sourcefile /Users/rich/Documents/phaser/src/pixi/textures/BaseTexture.js -* @sourceline 138 +* @sourcefile d:\wamp\www\phaser\src\pixi\textures\BaseTexture.js +* @sourceline 126 */ /** * @description Forces this BaseTexture to be set as loaded, with the given width and height. @@ -4467,45 +4496,35 @@ Important for when you don't want to modify the source object by forcing in `com * @method PIXI.BaseTexture#forceLoaded * @param {Number} width - - The new width to force the BaseTexture to be. * @param {Number} height - - The new height to force the BaseTexture to be. -* @sourcefile /Users/rich/Documents/phaser/src/pixi/textures/BaseTexture.js -* @sourceline 149 +* @sourcefile d:\wamp\www\phaser\src\pixi\textures\BaseTexture.js +* @sourceline 137 */ /** * @description Destroys this base texture * @method PIXI.BaseTexture#destroy -* @sourcefile /Users/rich/Documents/phaser/src/pixi/textures/BaseTexture.js -* @sourceline 167 +* @sourcefile d:\wamp\www\phaser\src\pixi\textures\BaseTexture.js +* @sourceline 154 */ /** * @description Changes the source image of the texture * @method PIXI.BaseTexture#updateSourceImage * @param {String} newSrc - the path of the image -* @sourcefile /Users/rich/Documents/phaser/src/pixi/textures/BaseTexture.js -* @sourceline 198 +* @deprecated true +* @sourcefile d:\wamp\www\phaser\src\pixi\textures\BaseTexture.js +* @sourceline 171 */ /** * @description Sets all glTextures to be dirty. * @method PIXI.BaseTexture#dirty -* @sourcefile /Users/rich/Documents/phaser/src/pixi/textures/BaseTexture.js -* @sourceline 211 +* @sourcefile d:\wamp\www\phaser\src\pixi\textures\BaseTexture.js +* @sourceline 183 */ /** * @description Removes the base texture from the GPU, useful for managing resources on the GPU. Atexture is still 100% usable and will simply be reuploaded if there is a sprite on screen that is using it. * @method PIXI.BaseTexture#unloadFromGPU -* @sourcefile /Users/rich/Documents/phaser/src/pixi/textures/BaseTexture.js -* @sourceline 224 -*/ -/** -* @description Helper function that creates a base texture from the given image url. -If the image is not in the base texture cache it will be created and loaded. -* @method PIXI.BaseTexture.fromImage -* @param {String} imageUrl - The image url of the texture -* @param {Boolean} crossorigin - -* @param {Number} scaleMode - See {{#crossLink "PIXI/scaleModes:property"}}PIXI.scaleModes{{/crossLink}} for possible values -* @return {PIXI.BaseTexture} -* @sourcefile /Users/rich/Documents/phaser/src/pixi/textures/BaseTexture.js -* @sourceline 252 +* @sourcefile d:\wamp\www\phaser\src\pixi\textures\BaseTexture.js +* @sourceline 196 */ /** * @description Helper function that creates a base texture from the given canvas element. @@ -4513,13 +4532,13 @@ If the image is not in the base texture cache it will be created and loaded. * @param {Canvas} canvas - The canvas element source of the texture * @param {Number} scaleMode - See {{#crossLink "PIXI/scaleModes:property"}}PIXI.scaleModes{{/crossLink}} for possible values * @return {PIXI.BaseTexture} -* @sourcefile /Users/rich/Documents/phaser/src/pixi/textures/BaseTexture.js -* @sourceline 295 +* @sourcefile d:\wamp\www\phaser\src\pixi\textures\BaseTexture.js +* @sourceline 224 */ /** * @fileoverview * @author Mat Groves http://matgroves.com/ @Doormat23 -* @sourcefile /Users/rich/Documents/phaser/src/pixi/textures/RenderTexture.js +* @sourcefile d:\wamp\www\phaser\src\pixi\textures\RenderTexture.js * @sourceline 1 */ /** @@ -4549,35 +4568,35 @@ The Sprite in this case will be rendered to a position of 0,0. To render this sp * @param {(PIXI.CanvasRenderer|PIXI.WebGLRenderer)} renderer - The renderer used for this RenderTexture * @param {Number} scaleMode - See {{#crossLink "PIXI/scaleModes:property"}}PIXI.scaleModes{{/crossLink}} for possible values * @param {Number} resolution - The resolution of the texture being generated -* @sourcefile /Users/rich/Documents/phaser/src/pixi/textures/RenderTexture.js +* @sourcefile d:\wamp\www\phaser\src\pixi\textures\RenderTexture.js * @sourceline 5 */ /** * @description The with of the render texture * @member PIXI.RenderTexture#width * @type {Number} -* @sourcefile /Users/rich/Documents/phaser/src/pixi/textures/RenderTexture.js +* @sourcefile d:\wamp\www\phaser\src\pixi\textures\RenderTexture.js * @sourceline 37 */ /** * @description The height of the render texture * @member PIXI.RenderTexture#height * @type {Number} -* @sourcefile /Users/rich/Documents/phaser/src/pixi/textures/RenderTexture.js +* @sourcefile d:\wamp\www\phaser\src\pixi\textures\RenderTexture.js * @sourceline 45 */ /** * @description The Resolution of the texture. * @member PIXI.RenderTexture#resolution * @type {Number} -* @sourcefile /Users/rich/Documents/phaser/src/pixi/textures/RenderTexture.js +* @sourcefile d:\wamp\www\phaser\src\pixi\textures\RenderTexture.js * @sourceline 53 */ /** * @description The framing rectangle of the render texture * @member PIXI.RenderTexture#frame * @type {Rectangle} -* @sourcefile /Users/rich/Documents/phaser/src/pixi/textures/RenderTexture.js +* @sourcefile d:\wamp\www\phaser\src\pixi\textures\RenderTexture.js * @sourceline 61 */ /** @@ -4585,27 +4604,27 @@ The Sprite in this case will be rendered to a position of 0,0. To render this sp irrespective of the actual frame size or placement (which can be influenced by trimmed texture atlases) * @member PIXI.RenderTexture#crop * @type {Rectangle} -* @sourcefile /Users/rich/Documents/phaser/src/pixi/textures/RenderTexture.js +* @sourcefile d:\wamp\www\phaser\src\pixi\textures\RenderTexture.js * @sourceline 69 */ /** * @description The base texture object that this texture uses * @member PIXI.RenderTexture#baseTexture * @type {PIXI.BaseTexture} -* @sourcefile /Users/rich/Documents/phaser/src/pixi/textures/RenderTexture.js +* @sourcefile d:\wamp\www\phaser\src\pixi\textures\RenderTexture.js * @sourceline 78 */ /** * @description The renderer this RenderTexture uses. A RenderTexture can only belong to one renderer at the moment if its webGL. * @member PIXI.RenderTexture#renderer * @type {(PIXI.CanvasRenderer|PIXI.WebGLRenderer)} -* @sourcefile /Users/rich/Documents/phaser/src/pixi/textures/RenderTexture.js +* @sourcefile d:\wamp\www\phaser\src\pixi\textures\RenderTexture.js * @sourceline 99 */ /** * @member PIXI.RenderTexture#valid * @type {Boolean} -* @sourcefile /Users/rich/Documents/phaser/src/pixi/textures/RenderTexture.js +* @sourcefile d:\wamp\www\phaser\src\pixi\textures\RenderTexture.js * @sourceline 125 */ /** @@ -4614,60 +4633,60 @@ irrespective of the actual frame size or placement (which can be influenced by t * @param {Number} width - The width to resize to. * @param {Number} height - The height to resize to. * @param {Boolean} updateBase - Should the baseTexture.width and height values be resized as well? -* @sourcefile /Users/rich/Documents/phaser/src/pixi/textures/RenderTexture.js +* @sourcefile d:\wamp\www\phaser\src\pixi\textures\RenderTexture.js * @sourceline 139 */ /** * @description Clears the RenderTexture. * @method PIXI.RenderTexture#clear -* @sourcefile /Users/rich/Documents/phaser/src/pixi/textures/RenderTexture.js +* @sourcefile d:\wamp\www\phaser\src\pixi\textures\RenderTexture.js * @sourceline 175 */ /** * @description This function will draw the display object to the texture. * @method PIXI.RenderTexture#renderWebGL -* @param {PIXI.DisplayObject} displayObject - The display object to render this texture on +* @param {DisplayObject} displayObject - The display object to render this texture on * @param {Matrix} [matrix] - Optional matrix to apply to the display object before rendering. * @param {Boolean} [clear] - If true the texture will be cleared before the displayObject is drawn * @access private -* @sourcefile /Users/rich/Documents/phaser/src/pixi/textures/RenderTexture.js +* @sourcefile d:\wamp\www\phaser\src\pixi\textures\RenderTexture.js * @sourceline 195 */ /** * @description This function will draw the display object to the texture. * @method PIXI.RenderTexture#renderCanvas -* @param {PIXI.DisplayObject} displayObject - The display object to render this texture on +* @param {DisplayObject} displayObject - The display object to render this texture on * @param {Matrix} [matrix] - Optional matrix to apply to the display object before rendering. * @param {Boolean} [clear] - If true the texture will be cleared before the displayObject is drawn * @access private -* @sourcefile /Users/rich/Documents/phaser/src/pixi/textures/RenderTexture.js +* @sourcefile d:\wamp\www\phaser\src\pixi\textures\RenderTexture.js * @sourceline 250 */ /** * @description Will return a HTML Image of the texture * @method PIXI.RenderTexture#getImage * @return {Image} -* @sourcefile /Users/rich/Documents/phaser/src/pixi/textures/RenderTexture.js +* @sourcefile d:\wamp\www\phaser\src\pixi\textures\RenderTexture.js * @sourceline 296 */ /** * @description Will return a base64 encoded string of this texture. It works by calling RenderTexture.getCanvas and then running toDataURL on that. * @method PIXI.RenderTexture#getBase64 * @return {String} A base64 encoded string of the texture. -* @sourcefile /Users/rich/Documents/phaser/src/pixi/textures/RenderTexture.js +* @sourcefile d:\wamp\www\phaser\src\pixi\textures\RenderTexture.js * @sourceline 309 */ /** * @description Creates a Canvas element, renders this RenderTexture to it and then returns it. * @method PIXI.RenderTexture#getCanvas * @return {HTMLCanvasElement} A Canvas element with the texture rendered on. -* @sourcefile /Users/rich/Documents/phaser/src/pixi/textures/RenderTexture.js +* @sourcefile d:\wamp\www\phaser\src\pixi\textures\RenderTexture.js * @sourceline 320 */ /** * @fileoverview * @author Mat Groves http://matgroves.com/ @Doormat23 -* @sourcefile /Users/rich/Documents/phaser/src/pixi/textures/Texture.js +* @sourcefile d:\wamp\www\phaser\src\pixi\textures\Texture.js * @sourceline 1 */ /** @@ -4678,143 +4697,123 @@ to the display list directly. Instead use it as the texture for a PIXI.Sprite. I * @param {Rectangle} frame - The rectangle frame of the texture to show * @param {Rectangle} [crop] - The area of original texture * @param {Rectangle} [trim] - Trimmed texture rectangle -* @sourcefile /Users/rich/Documents/phaser/src/pixi/textures/Texture.js -* @sourceline 19 +* @sourcefile d:\wamp\www\phaser\src\pixi\textures\Texture.js +* @sourceline 14 */ /** * @description Does this Texture have any frame data assigned to it? * @member PIXI.Texture#noFrame * @type {Boolean} -* @sourcefile /Users/rich/Documents/phaser/src/pixi/textures/Texture.js -* @sourceline 33 +* @sourcefile d:\wamp\www\phaser\src\pixi\textures\Texture.js +* @sourceline 28 */ /** * @description The base texture that this texture uses. * @member PIXI.Texture#baseTexture * @type {PIXI.BaseTexture} -* @sourcefile /Users/rich/Documents/phaser/src/pixi/textures/Texture.js -* @sourceline 52 +* @sourcefile d:\wamp\www\phaser\src\pixi\textures\Texture.js +* @sourceline 47 */ /** * @description The frame specifies the region of the base texture that this texture uses * @member PIXI.Texture#frame * @type {Rectangle} -* @sourcefile /Users/rich/Documents/phaser/src/pixi/textures/Texture.js -* @sourceline 60 +* @sourcefile d:\wamp\www\phaser\src\pixi\textures\Texture.js +* @sourceline 55 */ /** * @description The texture trim data. * @member PIXI.Texture#trim * @type {Rectangle} -* @sourcefile /Users/rich/Documents/phaser/src/pixi/textures/Texture.js -* @sourceline 68 +* @sourcefile d:\wamp\www\phaser\src\pixi\textures\Texture.js +* @sourceline 63 */ /** * @description This will let the renderer know if the texture is valid. If it's not then it cannot be rendered. * @member PIXI.Texture#valid * @type {Boolean} -* @sourcefile /Users/rich/Documents/phaser/src/pixi/textures/Texture.js -* @sourceline 76 +* @sourcefile d:\wamp\www\phaser\src\pixi\textures\Texture.js +* @sourceline 71 */ /** * @description Is this a tiling texture? As used by the likes of a TilingSprite. * @member PIXI.Texture#isTiling * @type {Boolean} -* @sourcefile /Users/rich/Documents/phaser/src/pixi/textures/Texture.js -* @sourceline 84 +* @sourcefile d:\wamp\www\phaser\src\pixi\textures\Texture.js +* @sourceline 79 */ /** * @description This will let a renderer know that a texture has been updated (used mainly for webGL uv updates) * @member PIXI.Texture#requiresUpdate * @type {Boolean} -* @sourcefile /Users/rich/Documents/phaser/src/pixi/textures/Texture.js -* @sourceline 92 +* @sourcefile d:\wamp\www\phaser\src\pixi\textures\Texture.js +* @sourceline 87 */ /** * @description This will let a renderer know that a tinted parent has updated its texture. * @member PIXI.Texture#requiresReTint * @type {Boolean} -* @sourcefile /Users/rich/Documents/phaser/src/pixi/textures/Texture.js -* @sourceline 100 +* @sourcefile d:\wamp\www\phaser\src\pixi\textures\Texture.js +* @sourceline 95 */ /** * @description The WebGL UV data cache. * @member PIXI.Texture#_uvs * @type {Object} * @access private -* @sourcefile /Users/rich/Documents/phaser/src/pixi/textures/Texture.js -* @sourceline 108 +* @sourcefile d:\wamp\www\phaser\src\pixi\textures\Texture.js +* @sourceline 103 */ /** * @description The width of the Texture in pixels. * @member PIXI.Texture#width * @type {Number} -* @sourcefile /Users/rich/Documents/phaser/src/pixi/textures/Texture.js -* @sourceline 117 +* @sourcefile d:\wamp\www\phaser\src\pixi\textures\Texture.js +* @sourceline 112 */ /** * @description The height of the Texture in pixels. * @member PIXI.Texture#height * @type {Number} -* @sourcefile /Users/rich/Documents/phaser/src/pixi/textures/Texture.js -* @sourceline 125 +* @sourcefile d:\wamp\www\phaser\src\pixi\textures\Texture.js +* @sourceline 120 */ /** * @description This is the area of the BaseTexture image to actually copy to the Canvas / WebGL when rendering, irrespective of the actual frame size or placement (which can be influenced by trimmed texture atlases) * @member PIXI.Texture#crop * @type {Rectangle} -* @sourcefile /Users/rich/Documents/phaser/src/pixi/textures/Texture.js -* @sourceline 133 +* @sourcefile d:\wamp\www\phaser\src\pixi\textures\Texture.js +* @sourceline 128 */ /** * @description Called when the base texture is loaded * @method PIXI.Texture#onBaseTextureLoaded * @access private -* @sourcefile /Users/rich/Documents/phaser/src/pixi/textures/Texture.js -* @sourceline 152 +* @sourcefile d:\wamp\www\phaser\src\pixi\textures\Texture.js +* @sourceline 147 */ /** * @description Destroys this texture * @method PIXI.Texture#destroy * @param {Boolean} destroyBase - Whether to destroy the base texture as well -* @sourcefile /Users/rich/Documents/phaser/src/pixi/textures/Texture.js -* @sourceline 170 +* @sourcefile d:\wamp\www\phaser\src\pixi\textures\Texture.js +* @sourceline 165 */ /** * @description Specifies the region of the baseTexture that this texture will use. * @method PIXI.Texture#setFrame * @param {Rectangle} frame - The frame of the texture to set it to -* @sourcefile /Users/rich/Documents/phaser/src/pixi/textures/Texture.js -* @sourceline 183 +* @sourcefile d:\wamp\www\phaser\src\pixi\textures\Texture.js +* @sourceline 178 */ /** * @description Updates the internal WebGL UV cache. * @method PIXI.Texture#_updateUvs * @access private -* @sourcefile /Users/rich/Documents/phaser/src/pixi/textures/Texture.js -* @sourceline 227 -*/ -/** -* @description Helper function that creates a Texture object from the given image url. -If the image is not in the texture cache it will be created and loaded. -* @method PIXI.Texture.fromImage -* @param {String} imageUrl - The image url of the texture -* @param {Boolean} crossorigin - Whether requests should be treated as crossorigin -* @param {Number} scaleMode - See {{#crossLink "PIXI/scaleModes:property"}}PIXI.scaleModes{{/crossLink}} for possible values -* @return {PIXI.Texture} -* @sourcefile /Users/rich/Documents/phaser/src/pixi/textures/Texture.js -* @sourceline 254 -*/ -/** -* @description Helper function that returns a Texture objected based on the given frame id. -If the frame id is not in the texture cache an error will be thrown. -* @method PIXI.Texture.fromFrame -* @param {String} frameId - The frame id of the texture -* @return {PIXI.Texture} -* @sourcefile /Users/rich/Documents/phaser/src/pixi/textures/Texture.js -* @sourceline 278 +* @sourcefile d:\wamp\www\phaser\src\pixi\textures\Texture.js +* @sourceline 222 */ /** * @description Helper function that creates a new a Texture based on the given canvas element. @@ -4822,35 +4821,19 @@ If the frame id is not in the texture cache an error will be thrown. * @param {Canvas} canvas - The canvas element source of the texture * @param {Number} scaleMode - See {{#crossLink "PIXI/scaleModes:property"}}PIXI.scaleModes{{/crossLink}} for possible values * @return {PIXI.Texture} -* @sourcefile /Users/rich/Documents/phaser/src/pixi/textures/Texture.js -* @sourceline 294 -*/ -/** -* @description Adds a texture to the global PIXI.TextureCache. This cache is shared across the whole PIXI object. -* @method PIXI.Texture.addTextureToCache -* @param {PIXI.Texture} texture - The Texture to add to the cache. -* @param {String} id - The id that the texture will be stored against. -* @sourcefile /Users/rich/Documents/phaser/src/pixi/textures/Texture.js -* @sourceline 310 -*/ -/** -* @description Remove a texture from the global PIXI.TextureCache. -* @method PIXI.Texture.removeTextureFromCache -* @param {String} id - The id of the texture to be removed -* @return {PIXI.Texture} The texture that was removed -* @sourcefile /Users/rich/Documents/phaser/src/pixi/textures/Texture.js -* @sourceline 323 +* @sourcefile d:\wamp\www\phaser\src\pixi\textures\Texture.js +* @sourceline 249 */ /** * @fileoverview * @author Richard Davey <rich@photonstorm.com> -* @sourcefile /Users/rich/Documents/phaser/src/pixi/utils/CanvasPool.js +* @sourcefile d:\wamp\www\phaser\src\pixi\utils\CanvasPool.js * @sourceline 1 */ /** * @class PIXI.CanvasPool * @description The CanvasPool is a global static object that allows Pixi and Phaser to pool canvas DOM elements. -* @sourcefile /Users/rich/Documents/phaser/src/pixi/utils/CanvasPool.js +* @sourcefile d:\wamp\www\phaser\src\pixi\utils\CanvasPool.js * @sourceline 7 */ /** @@ -4860,66 +4843,66 @@ If the frame id is not in the texture cache an error will be thrown. * @param {Number} width - The width of the canvas element. * @param {Number} height - The height of the canvas element. * @return {HTMLCanvasElement} The canvas element. -* @sourcefile /Users/rich/Documents/phaser/src/pixi/utils/CanvasPool.js +* @sourcefile d:\wamp\www\phaser\src\pixi\utils\CanvasPool.js * @sourceline 15 */ /** * @description Gets the first free canvas index from the pool. * @method PIXI.CanvasPool.getFirst * @return {Number} -* @sourcefile /Users/rich/Documents/phaser/src/pixi/utils/CanvasPool.js +* @sourcefile d:\wamp\www\phaser\src\pixi\utils\CanvasPool.js * @sourceline 58 */ /** * @description Removes the parent from a canvas element from the pool, freeing it up for re-use. * @method PIXI.CanvasPool.remove * @param {} parent - The parent of the canvas element. -* @sourcefile /Users/rich/Documents/phaser/src/pixi/utils/CanvasPool.js +* @sourcefile d:\wamp\www\phaser\src\pixi\utils\CanvasPool.js * @sourceline 81 */ /** * @description Removes the parent from a canvas element from the pool, freeing it up for re-use. * @method PIXI.CanvasPool.removeByCanvas * @param {HTMLCanvasElement} canvas - The canvas element to remove -* @sourcefile /Users/rich/Documents/phaser/src/pixi/utils/CanvasPool.js -* @sourceline 102 +* @sourcefile d:\wamp\www\phaser\src\pixi\utils\CanvasPool.js +* @sourceline 104 */ /** * @description Gets the total number of used canvas elements in the pool. * @method PIXI.CanvasPool.getTotal * @return {Number} The number of in-use (parented) canvas elements in the pool. -* @sourcefile /Users/rich/Documents/phaser/src/pixi/utils/CanvasPool.js -* @sourceline 123 +* @sourcefile d:\wamp\www\phaser\src\pixi\utils\CanvasPool.js +* @sourceline 127 */ /** * @description Gets the total number of free canvas elements in the pool. * @method PIXI.CanvasPool.getFree * @return {Number} The number of free (un-parented) canvas elements in the pool. -* @sourcefile /Users/rich/Documents/phaser/src/pixi/utils/CanvasPool.js -* @sourceline 147 +* @sourcefile d:\wamp\www\phaser\src\pixi\utils\CanvasPool.js +* @sourceline 151 */ /** * @description The pool into which the canvas dom elements are placed. * @member PIXI.CanvasPool.pool * @type {Array} -* @sourcefile /Users/rich/Documents/phaser/src/pixi/utils/CanvasPool.js -* @sourceline 173 +* @sourcefile d:\wamp\www\phaser\src\pixi\utils\CanvasPool.js +* @sourceline 177 */ /** * @class PIXI.EarCut -* @sourcefile /Users/rich/Documents/phaser/src/pixi/utils/EarCut.js +* @sourcefile d:\wamp\www\phaser\src\pixi\utils\EarCut.js * @sourceline 17 */ /** * @fileoverview * @author Chad Engler https://github.com/englercj @Rolnaaba -* @sourcefile /Users/rich/Documents/phaser/src/pixi/utils/EventTarget.js +* @sourcefile d:\wamp\www\phaser\src\pixi\utils\EventTarget.js * @sourceline 1 */ /** * @class PIXI.EventTarget * @description Mixins event emitter functionality to a class -* @sourcefile /Users/rich/Documents/phaser/src/pixi/utils/EventTarget.js +* @sourcefile d:\wamp\www\phaser\src\pixi\utils\EventTarget.js * @sourceline 11 */ @@ -4928,7 +4911,7 @@ If the frame id is not in the texture cache an error will be thrown. * @description Mixes in the properties of the EventTarget prototype onto another object * @method PIXI.EventTarget#mixin * @param {Object} object - The obj to mix into -* @sourcefile /Users/rich/Documents/phaser/src/pixi/utils/EventTarget.js +* @sourcefile d:\wamp\www\phaser\src\pixi\utils\EventTarget.js * @sourceline 34 */ /** @@ -4936,7 +4919,7 @@ If the frame id is not in the texture cache an error will be thrown. * @method PIXI.EventTarget#listeners * @param {String} eventName - The events that should be listed. * @return {Array} An array of listener functions -* @sourcefile /Users/rich/Documents/phaser/src/pixi/utils/EventTarget.js +* @sourcefile d:\wamp\www\phaser\src\pixi\utils\EventTarget.js * @sourceline 41 */ /** @@ -4944,7 +4927,7 @@ If the frame id is not in the texture cache an error will be thrown. * @method PIXI.EventTarget#emit * @param {String} eventName - The name of the event. * @return {Boolean} Indication if we've emitted an event. -* @sourcefile /Users/rich/Documents/phaser/src/pixi/utils/EventTarget.js +* @sourcefile d:\wamp\www\phaser\src\pixi\utils\EventTarget.js * @sourceline 54 */ /** @@ -4952,7 +4935,7 @@ If the frame id is not in the texture cache an error will be thrown. * @method PIXI.EventTarget#on * @param {String} eventName - Name of the event. * @param {Functon} callback - fn Callback function. -* @sourcefile /Users/rich/Documents/phaser/src/pixi/utils/EventTarget.js +* @sourcefile d:\wamp\www\phaser\src\pixi\utils\EventTarget.js * @sourceline 107 */ /** @@ -4960,7 +4943,7 @@ If the frame id is not in the texture cache an error will be thrown. * @method PIXI.EventTarget#once * @param {String} eventName - Name of the event. * @param {Function} callback - Callback function. -* @sourcefile /Users/rich/Documents/phaser/src/pixi/utils/EventTarget.js +* @sourcefile d:\wamp\www\phaser\src\pixi\utils\EventTarget.js * @sourceline 124 */ /** @@ -4968,14 +4951,14 @@ If the frame id is not in the texture cache an error will be thrown. * @method PIXI.EventTarget#off * @param {String} eventName - The event we want to remove. * @param {Function} callback - The listener that we need to find. -* @sourcefile /Users/rich/Documents/phaser/src/pixi/utils/EventTarget.js +* @sourcefile d:\wamp\www\phaser\src\pixi\utils\EventTarget.js * @sourceline 143 */ /** * @description Remove all listeners or only the listeners for the specified event. * @method PIXI.EventTarget#removeAllListeners * @param {String} eventName - The event you want to remove all listeners for. -* @sourcefile /Users/rich/Documents/phaser/src/pixi/utils/EventTarget.js +* @sourcefile d:\wamp\www\phaser\src\pixi\utils\EventTarget.js * @sourceline 173 */ /** @@ -4985,7 +4968,7 @@ If the frame id is not in the texture cache an error will be thrown. * @param {Object} target - The target object that the event is called on * @param {String} name - The string name of the event that was triggered * @param {Object} data - Arbitrary event data to pass along -* @sourcefile /Users/rich/Documents/phaser/src/pixi/utils/EventTarget.js +* @sourcefile d:\wamp\www\phaser\src\pixi\utils\EventTarget.js * @sourceline 192 */ /** @@ -4995,7 +4978,7 @@ set this directly, instead use `event.stopPropagation()` * @type {Boolean} * @readonly * @access private -* @sourcefile /Users/rich/Documents/phaser/src/pixi/utils/EventTarget.js +* @sourcefile d:\wamp\www\phaser\src\pixi\utils\EventTarget.js * @sourceline 206 */ /** @@ -5005,7 +4988,7 @@ set this directly, instead use `event.stopImmediatePropagation()` * @type {Boolean} * @readonly * @access private -* @sourcefile /Users/rich/Documents/phaser/src/pixi/utils/EventTarget.js +* @sourcefile d:\wamp\www\phaser\src\pixi\utils\EventTarget.js * @sourceline 217 */ /** @@ -5013,7 +4996,7 @@ set this directly, instead use `event.stopImmediatePropagation()` * @member PIXI.Event#target * @type {Object} * @readonly -* @sourcefile /Users/rich/Documents/phaser/src/pixi/utils/EventTarget.js +* @sourcefile d:\wamp\www\phaser\src\pixi\utils\EventTarget.js * @sourceline 228 */ /** @@ -5021,7 +5004,7 @@ set this directly, instead use `event.stopImmediatePropagation()` * @member PIXI.Event#type * @type {String} * @readonly -* @sourcefile /Users/rich/Documents/phaser/src/pixi/utils/EventTarget.js +* @sourcefile d:\wamp\www\phaser\src\pixi\utils\EventTarget.js * @sourceline 237 */ /** @@ -5029,7 +5012,7 @@ set this directly, instead use `event.stopImmediatePropagation()` * @member PIXI.Event#data * @type {Object} * @readonly -* @sourcefile /Users/rich/Documents/phaser/src/pixi/utils/EventTarget.js +* @sourcefile d:\wamp\www\phaser\src\pixi\utils\EventTarget.js * @sourceline 246 */ /** @@ -5037,19 +5020,19 @@ set this directly, instead use `event.stopImmediatePropagation()` * @member PIXI.Event#timeStamp * @type {Number} * @readonly -* @sourcefile /Users/rich/Documents/phaser/src/pixi/utils/EventTarget.js +* @sourcefile d:\wamp\www\phaser\src\pixi\utils\EventTarget.js * @sourceline 258 */ /** * @description Stops the propagation of events up the scene graph (prevents bubbling). * @method PIXI.Event#stopPropagation -* @sourcefile /Users/rich/Documents/phaser/src/pixi/utils/EventTarget.js +* @sourcefile d:\wamp\www\phaser\src\pixi\utils\EventTarget.js * @sourceline 268 */ /** * @description Stops the propagation of events to sibling listeners (no longer calls any listeners). * @method PIXI.Event#stopImmediatePropagation -* @sourcefile /Users/rich/Documents/phaser/src/pixi/utils/EventTarget.js +* @sourcefile d:\wamp\www\phaser\src\pixi\utils\EventTarget.js * @sourceline 277 */ /** @@ -5057,13 +5040,13 @@ set this directly, instead use `event.stopImmediatePropagation()` * @description Based on the Polyk library http://polyk.ivank.net released under MIT licence. This is an amazing lib! Slightly modified by Mat Groves (matgroves.com); -* @sourcefile /Users/rich/Documents/phaser/src/pixi/utils/Polyk.js +* @sourcefile d:\wamp\www\phaser\src\pixi\utils\Polyk.js * @sourceline 34 */ /** * @description Triangulates shapes for webGL graphic fills. * @method PIXI.PolyK#Triangulate -* @sourcefile /Users/rich/Documents/phaser/src/pixi/utils/Polyk.js +* @sourcefile d:\wamp\www\phaser\src\pixi\utils\Polyk.js * @sourceline 42 */ /** @@ -5079,7 +5062,7 @@ Slightly modified by Mat Groves (matgroves.com); * @param {Number} cy - y coordinate of the c point of the triangle * @return {Boolean} * @access private -* @sourcefile /Users/rich/Documents/phaser/src/pixi/utils/Polyk.js +* @sourcefile d:\wamp\www\phaser\src\pixi\utils\Polyk.js * @sourceline 120 */ /** @@ -5087,13 +5070,13 @@ Slightly modified by Mat Groves (matgroves.com); * @method PIXI.PolyK#_convex * @return {Boolean} * @access private -* @sourcefile /Users/rich/Documents/phaser/src/pixi/utils/Polyk.js +* @sourcefile d:\wamp\www\phaser\src\pixi\utils\Polyk.js * @sourceline 158 */ /** * @fileoverview * @author Mat Groves http://matgroves.com/ @Doormat23 -* @sourcefile /Users/rich/Documents/phaser/src/pixi/utils/Utils.js +* @sourcefile d:\wamp\www\phaser\src\pixi\utils\Utils.js * @sourceline 1 */ /** @@ -5101,28 +5084,28 @@ Slightly modified by Mat Groves (matgroves.com); * @description Namespace-class for [pixi.js](http://www.pixijs.com/). Contains assorted static properties and enumerations. -* @sourcefile /Users/rich/Documents/phaser/src/pixi/Pixi.js +* @sourcefile d:\wamp\www\phaser\src\pixi\Pixi.js * @sourceline 11 */ /** * @description Converts a hex color number to an [R, G, B] array * @method PIXI.PIXI#hex2rgb * @param {Number} hex - -* @sourcefile /Users/rich/Documents/phaser/src/pixi/utils/Utils.js +* @sourcefile d:\wamp\www\phaser\src\pixi\utils\Utils.js * @sourceline 5 */ /** * @description Converts a color as an [R, G, B] array to a hex number * @method PIXI.PIXI#rgb2hex * @param {Array} rgb - -* @sourcefile /Users/rich/Documents/phaser/src/pixi/utils/Utils.js +* @sourcefile d:\wamp\www\phaser\src\pixi\utils\Utils.js * @sourceline 15 */ /** * @description Checks whether the Canvas BlendModes are supported by the current browser for drawImage * @method PIXI.PIXI#canUseNewCanvasBlendModes * @return {Boolean} whether they are supported -* @sourcefile /Users/rich/Documents/phaser/src/pixi/utils/Utils.js +* @sourcefile d:\wamp\www\phaser\src\pixi\utils\Utils.js * @sourceline 25 */ /** @@ -5131,7 +5114,7 @@ this function is taken from Starling Framework as its pretty neat ;) * @method PIXI.PIXI#getNextPowerOfTwo * @param {Number} number - * @return {Number} the closest number that is a power of two -* @sourcefile /Users/rich/Documents/phaser/src/pixi/utils/Utils.js +* @sourcefile d:\wamp\www\phaser\src\pixi\utils\Utils.js * @sourceline 63 */ /** @@ -5140,7 +5123,7 @@ this function is taken from Starling Framework as its pretty neat ;) * @param {Number} width - * @param {Number} height - * @return {Boolean} -* @sourcefile /Users/rich/Documents/phaser/src/pixi/utils/Utils.js +* @sourcefile d:\wamp\www\phaser\src\pixi\utils\Utils.js * @sourceline 83 */ @@ -5150,53 +5133,53 @@ this function is taken from Starling Framework as its pretty neat ;) * @description A reference to the Phaser Game instance that owns this Pixi renderer. * @member PIXI.PIXI.game * @type {PhaserGame} -* @sourcefile /Users/rich/Documents/phaser/src/pixi/Pixi.js +* @sourcefile d:\wamp\www\phaser\src\pixi\Pixi.js * @sourceline 21 */ /** * @member PIXI.PIXI.WEBGL_RENDERER * @type {Number} * @access protected -* @sourcefile /Users/rich/Documents/phaser/src/pixi/Pixi.js +* @sourcefile d:\wamp\www\phaser\src\pixi\Pixi.js * @sourceline 28 */ /** * @member PIXI.PIXI.CANVAS_RENDERER * @type {Number} * @access protected -* @sourcefile /Users/rich/Documents/phaser/src/pixi/Pixi.js +* @sourcefile d:\wamp\www\phaser\src\pixi\Pixi.js * @sourceline 35 */ /** * @description Version of pixi that is loaded. * @member PIXI.PIXI.VERSION * @type {String} -* @sourcefile /Users/rich/Documents/phaser/src/pixi/Pixi.js +* @sourcefile d:\wamp\www\phaser\src\pixi\Pixi.js * @sourceline 42 */ /** * @member PIXI.PIXI.PI_2 * @type {Number} -* @sourcefile /Users/rich/Documents/phaser/src/pixi/Pixi.js +* @sourcefile d:\wamp\www\phaser\src\pixi\Pixi.js * @sourceline 71 */ /** * @member PIXI.PIXI.RAD_TO_DEG * @type {Number} -* @sourcefile /Users/rich/Documents/phaser/src/pixi/Pixi.js +* @sourcefile d:\wamp\www\phaser\src\pixi\Pixi.js * @sourceline 77 */ /** * @member PIXI.PIXI.DEG_TO_RAD * @type {Number} -* @sourcefile /Users/rich/Documents/phaser/src/pixi/Pixi.js +* @sourcefile d:\wamp\www\phaser\src\pixi\Pixi.js * @sourceline 83 */ /** * @member PIXI.PIXI.RETINA_PREFIX * @type {String} * @access protected -* @sourcefile /Users/rich/Documents/phaser/src/pixi/Pixi.js +* @sourcefile d:\wamp\www\phaser\src\pixi\Pixi.js * @sourceline 89 */ /** @@ -5204,7 +5187,7 @@ this function is taken from Starling Framework as its pretty neat ;) {{#crossLink "WebGLRenderer"}}{{/crossLink}} or {{#crossLink "CanvasRenderer"}}{{/crossLink}}. * @member PIXI.PIXI.defaultRenderOptions * @type {Object} -* @sourcefile /Users/rich/Documents/phaser/src/pixi/Pixi.js +* @sourcefile d:\wamp\www\phaser\src\pixi\Pixi.js * @sourceline 96 */ @@ -5227,7 +5210,7 @@ this function is taken from Starling Framework as its pretty neat ;) Documentation generated by JSDoc 3.3.3 - on Fri Jun 17 2016 12:45:29 GMT+0100 (BST) using the DocStrap template. + on Fri Jul 08 2016 15:42:35 GMT+0100 (GMT Daylight Time) using the DocStrap template. diff --git a/docs/global.html b/docs/global.html index 673fb294f..6f484c3c7 100644 --- a/docs/global.html +++ b/docs/global.html @@ -708,10 +708,6 @@ ComplexPrimitiveShader -
  • - DisplayObject -
  • -
  • DisplayObjectContainer
  • @@ -744,6 +740,10 @@ PIXI +
  • + DisplayObject +
  • +
  • PixiFastShader
  • @@ -5772,7 +5772,7 @@ It can be re-assigned to either LINEAR or NEAREST, depending upon suitability.Source - - utils/Debug.js, line 839 + utils/Debug.js, line 844 @@ -5987,7 +5987,7 @@ The line segment intersects one of the 4 rectangle edges.

    A display object is any object that can be rendered in the Phaser/pixi.js scene graph.

    This includes Phaser.Group (groups are display objects!), Phaser.Sprite, Phaser.Button, Phaser.Text -as well as PIXI.DisplayObject and all derived types.

    +as well as PIXI.DisplayObject and all derived types.

    @@ -6015,7 +6015,7 @@ as well as PIXI.DisplayObject and all deri
    Source - - core/Group.js, line 2601 + core/Group.js, line 2900
    @@ -6054,7 +6054,7 @@ as well as PIXI.DisplayObject and all deri Documentation generated by JSDoc 3.3.3 - on Fri Jun 17 2016 12:45:29 GMT+0100 (BST) using the DocStrap template. + on Fri Jul 08 2016 15:42:35 GMT+0100 (GMT Daylight Time) using the DocStrap template. diff --git a/docs/index.html b/docs/index.html index c5f926ea9..a20c99e47 100644 --- a/docs/index.html +++ b/docs/index.html @@ -708,10 +708,6 @@ ComplexPrimitiveShader -
  • - DisplayObject -
  • -
  • DisplayObjectContainer
  • @@ -744,6 +740,10 @@ PIXI +
  • + DisplayObject +
  • +
  • PixiFastShader
  • @@ -1242,6 +1242,281 @@ + +
    +

    Phaser - HTML5 Game Framework

    +

    Phaser is a fast, free, and fun open source HTML5 game framework. It uses a custom build of Pixi.js for WebGL and Canvas rendering, and supports desktop and mobile web browsers. Games can be compiled to iOS, Android and native desktop apps via 3rd party tools. You can use JavaScript or TypeScript for development.

    +

    Along with the fantastic open source community, Phaser is actively developed and maintained by Photon Storm. As a result of rapid support, and a developer friendly API, Phaser is currently one of the most starred game frameworks on GitHub.

    +

    Thousands of developers worldwide use Phaser. From indies and multi-national digital agencies, to schools and Universities. Each creating their own incredible games.

    +

    Visit: The Phaser website and follow on Twitter (#phaserjs)
    +Learn: API Docs, Support Forum and StackOverflow
    +Code: 700+ Examples (source available in this repo)
    +Read: Weekly Phaser World Newsletter
    +Chat: Slack and IRC
    +Extend: With Phaser Plugins
    +Be awesome: Support the future of Phaser

    +

    Grab the source and join in the fun!

    +

    Contents

    +

    +What's New

    +
    + +
    +

    8th July 2016

    +
    +

    Welcome to Phaser 2.6.0. Our seventh release this year, and another leap forwards since 2.5.0 less than a month ago. This version includes the work undertaken with adding circular body support into Arcade Physics, allowing you to now define physics bodies as being circles instead of rectangles, something that was previously only available in P2 Physics.

    +

    Keeping with Arcade Physics for a moment there are now new events you can listen for, including Body.onWorldBounds, Body.onCollide and Body.onOverlap. Phaser.Groups have also been given a shot in the arm. You can now position them, and all of their children, using the new bounds commands such as left, centerX and bottom. They've also gained the alignTo and alignIn methods from the 2.5 release.

    +

    In this release we've undertaken a large amount of work refactoring Pixi. You will find lots of Pixi related methods, that were redundant, removed from the build (such as fromImage). All references to the Pixi Texture and Base Texture caches have also been removed, helping close-off some straggling issues, and free-up lingering resources. Please see the Pixi section of the Change Log for complete details. This will not effect you if you're just using Phaser, but if you had any Pixi specific mods or plugins, they may need checking over.

    +

    I've also been working hard on the documentation. Tidying-up functions that didn't have parameter descriptions, adding lots more details to areas such as the Game Object events, and starting the huge task of rewriting all of the Pixi documentation into a more friendly and comprehensive format. This is an on-going task, and will be merged into releases from here-on.

    +

    Check the Change Log to see the complete list of what's new in this release.

    +

    As always, keep you eyes on the Phaser web site, and subscribe to our weekly newsletter. You can also follow me on Twitter or chat to me in the Phaser Slack channel.

    +

    There are also now more ways than before to help support the development of Phaser. The uptake so far has been fantastic, but this is an on-going mission. Thank you to everyone who supports our development. Who shares our belief in the future of HTML5 gaming, and Phasers role in that.

    +

    Happy coding everyone! See you on the forums.

    +

    Cheers,

    +

    Rich - @photonstorm

    +

    boogie

    +

    +Support Phaser

    +

    Developing Phaser takes a lot of time, effort, and money. There are monthly running costs; such as the forum and site, which we maintain 100% ad-free. As well as countless hours of development time, community support, and assistance resolving issues. We do this out of our love for Phaser of course, but at the end of the day there are real tangible costs involved.

    +

    If you have found Phaser useful in your development life. Or have made income as a result of using it, and are in a position to support us financially, without causing any detriment to yourself, then please do. There are a number of ways:

    + +

    It all helps cover our running costs, and genuinely contributes towards future development.

    +

    If you would like to sponsor Phaser then please get in touch. We have sponsorship options available on our GitHub repo, web site, and newsletter. All of which receive tens of thousands of eyeballs per day.

    +

    Weekly Newsletter +

    +
    + +

    Every Friday we publish the Phaser World newsletter. It's packed full of the latest Phaser games, tutorials, videos, meet-ups, talks, and more. It also contains our weekly Development Progress updates.

    +

    Previous editions can found on our Back Issues page.

    +

    Download Phaser +

    +

    Phaser is hosted on Github. There are a number of ways to download it:

    + +

    Bower / npm

    Install via bower

    +

    bower install phaser

    +

    Install via npm

    +

    npm install phaser

    +

    Using Browserify? Please read this.

    +

    CDN

    jsDelivr is a "super-fast CDN for developers". Include the following in your html:

    +

    <script src="//cdn.jsdelivr.net/phaser/2.6.0/phaser.js"></script>

    +

    or the minified version:

    +

    <script src="//cdn.jsdelivr.net/phaser/2.6.0/phaser.min.js"></script>

    +

    cdnjs.com also offers a free CDN service. They have all versions of Phaser and even the custom builds:

    +

    <script src="https://cdnjs.cloudflare.com/ajax/libs/phaser/2.6.0/phaser.js"></script>

    +

    Phaser Sandbox

    If you'd like to try coding in Phaser right now, with nothing more than your web browser, then head over to the Phaser Sandbox. You'll find Quick Start templates, and a user-friendly editor filled with handy code-completion features.

    +

    License

    Phaser is released under the MIT License.

    +

    Getting Started +

    +

    +

    Our Getting Started Guide will get you up to speed quickly. From setting up a web server, to picking an IDE. After which read our Making your first Game tutorial. Please work through this, no matter what your development experience, to learn how Phaser approaches things.

    +

    The single biggest Phaser resource is the Phaser web site. You'll find hundreds of tutorials, with new ones added every week. Subscribe to the Phaser World newsletter for a weekly links round-up.

    +

    Using TypeScript? Game From Scratch has a great series of tutorials covering that.

    +

    Prefer videos? Zenva have an excellent Phaser video course, with hours of great material.

    +

    Source Code Examples

    Ever since we started Phaser we've been growing and expanding our extensive set of examples. Currently there are over 700 of them, with the full source code and assets available.

    +

    Browse the Phaser Examples, or clone the examples repo, and eat your heart out!

    +

    Interphase

    + +

    Interphase is a programming book for Phaser developers of all skill levels.

    +

    With 400 pages of content you'll find detailed articles, game development "Making Of" guides and tutorials. All were written using the latest version of Phaser, so you won't be learning any out-dated tricks.

    +

    As well as the book you get all the source code, graphics and assets to go with it, and lots of extras too.

    +

    Phaser Editor - A complete Phaser Editor

    Phaser Editor is a brand new Eclipse based editor that offers lots of built-in tools specifically for Phaser developers. Handy features include Smart code auto-completion, built-in web server, documentation search, asset management, texture atlas creator, audio sprite creator, asset previews and lots more.

    +

    Game Mechanic Explorer

    The Game Mechanic Explorer is a great interactive way to learn how to develop specific game mechanics in Phaser. Well worth exploring once you've got your dev environment set-up.

    +

    Mighty Editor - Visual Game Editor

    MightyEditor is a browser-based visual Phaser game editor. Create your maps with ease, position objects and share them in seconds. It also exports to native Phaser code. Excellent for quickly setting-up levels and scenes.

    +

    Building Phaser +

    +

    Phaser is provided ready compiled in the build folder of the repository. There are both plain and minified versions. The plain version is for use during development, and the minified version for production. You can also create your own builds.

    +

    Custom Builds

    Phaser includes a grunt based build system, which allows you to strip out features you may not require, saving hundreds of KB in the process. Don't use any Sound in your game? Then exclude the entire sound system. Don't need Keyboard support? That can be excluded too.

    +

    As a result of this work the minimum build size of Phaser is now just 80KB minified and gzipped.

    +

    See the Creating a Custom Phaser Build tutorial for details.

    +

    +

    Browserify / CJS

    Phaser was never written to be modular. Everything exists under one single global namespace, and you cannot require selected parts of it into your builds. It expects 3 global vars to exist in order to work properly: Phaser, PIXI and p2. The following is one way of doing this:

    +
    window.PIXI = require('phaser/build/custom/pixi')
    +window.p2 = require('phaser/build/custom/p2')
    +window.Phaser = require('phaser/build/custom/phaser-split')

    If you build a custom version of Phaser it will split the 3 core libs out into their own files, allowing you to require them as above.

    +

    We appreciate this is just a band-aid, and not a proper use of modules, but please understand it was never built to be used this way. You're trying to fit a square peg in a round browserify-shaped hole, so compromises have to be made. Please don't open GitHub issues about it as we've no intention of changing Phaser at this stage of its life. Full module based development is being undertaken in Lazer, the next iteration of the Phaser framework.

    +

    Webpack

    Starting from Phaser 2.4.5 we now include a custom build for Webpack.

    +

    You need to add p2 as a dependency.

    +
    Webpack Config
    var path = require('path');
    +var webpack = require('webpack');
    +
    +var phaserModule = path.join(__dirname, '/node_modules/phaser/');
    +var phaser = path.join(phaserModule, 'build/custom/phaser-split.js'),
    +  pixi = path.join(phaserModule, 'build/custom/pixi.js'),
    +  p2 = path.join(phaserModule, 'build/custom/p2.js');
    +
    +module.exports = {
    +    ...
    +    module: {
    +        loaders: [
    +            { test: /pixi.js/, loader: "script" },
    +        ]
    +    },
    +    resolve: {
    +        alias: {
    +            'phaser': phaser,
    +            'pixi.js': pixi,
    +            'p2': p2,
    +        }
    +    }
    +    ...
    +}
    Main js file
    require('pixi.js');
    +require('p2');
    +require('phaser');

    Building from source

    Should you wish to build Phaser from source you can take advantage of the provided Grunt scripts. Ensure you have the required packages by running npm install first.

    +

    Run grunt to perform a default build to the dist folder.

    +

    Made With Phaser +

    +

    Thousands of games have been made in Phaser. From game jam entries, to titles by some of the largest entertainment brands in the world. Here is a tiny sample. You can find hundreds more on our web site.

    +

    Game +Game +Game +Game +Game +Game +Game +Game +Game +Game +Game +Game +Game +Game +Game +Game +Game +Game

    +

    Artwork copyright their respective owners.

    +

    We add new games to the Phaser site weekly, so be sure to send us yours when it's finished!

    +

    Requirements +

    +

    Phaser requires a web browser that supports the canvas tag. This includes Internet Explorer 9+, Firefox, Chrome, Safari and Opera on desktop. iOS Safari, Android Browser and Chrome for Android are supported on mobile.

    +

    While Phaser does its best to ensure a consistent cross-platform experience, always be aware of browser and device limitations. This is especially important with memory and GPU limitations on mobile, and legacy browser HTML5 compatibility.

    +

    IE9

    If you need to support IE9 / Android 2.x and use P2 physics, then you must use the polyfill in the resources/IE9 Polyfill folder. If you don't use P2 (or don't care about IE9!) you can skip this.

    +

    JavaScript and TypeScript

    Phaser is developed in ES5 JavaScript. We've made no assumptions about how you like to code, and were careful not to impose a strict structure upon you. You won't find Phaser split into modules, requiring a build step, or making you use a class / inheritance OOP approach. That doesn't mean you can't do so, it just means we don't force you to. It's your choice.

    +

    If you code with TypeScript there are comprehensive definition files in the typescript folder. They are for TypeScript 1.4+.

    +

    Road Map +

    +

    The majority of Phaser development is now taking place within the Lazer project. Lazer is the name for Phaser version 3. The Phaser 2 branch will still be supported, and issues fixed, but most roadmap features have been migrated over.

    +

    +

    Lazer

    Lazer is the next generation of the Phaser game framework, and was previously called Phaser 3. Using a completely ES6 base it is renderer agnostic, allowing for DOM, SVG, Canvas and WebGL rendering, across desktop and mobile web browsers.

    +

    Lazer is in active development, but is not yet ready for production use.

    +

    You can read all about the philosophy behind Lazer here or join the Google Group mailing list where progress reports are posted. You can also follow progress in the Phaser World newsletter.

    +

    Change Log +

    +

    Version 2.6.0 - "Fal Moran" - 8th July 2016

    New Features

      +
    • The Loader has a new property headers. This is an object checked by XHR Requests, used to set the Request Header of certain file types. JSON and XML are pre-configured, but you can add to, or modify this property as required (thanks @stoneman1 #2585 #2485)
    • +
    • Phaser now has support for Typings, the TypeScript Definition Manager. See the typescript/readme.md file for installation instructions (thanks @monagames #2576)
    • +
    • Phaser.Utils.reverseString will take the given string, reverse it, and then return it.
    • +
    • Phaser.ArrayUtils.rotateRight is the opposite of ArrayUtils.rotate. It takes an array, removes the element from the end of the array, and inserts it at the start, shifting everything else 1 space in the process.
    • +
    • Phaser.ArrayUtils.rotateLeft is the new name for Phaser.ArrayUtils.rotate. The old method is now deprecated (but still available in this release)
    • +
    • Phaser.Color.toABGR converts RGBA components to a 32 bit integer in AABBGGRR format.
    • +
    • ArcadePhysics.Body.setCircle is a new method that allows you to define an Arcade Physics Body as being a circle instead of a rectangle. You can control the radius of the body and the offset from the parent sprite.
    • +
    • ArcadePhysics.World.separateCircle is a new method that handles all circular body collisions internally within Arcade Physics (thanks @VitaZheltyakov)
    • +
    • All of the Arcade Physics internal methods, such as collideGroupVsSelf, collideSpriteVsSprite and so on, have been updated to work with circular body shapes (thanks @VitaZheltyakov)
    • +
    • ArcadePhysics.Body.onWorldBounds is a new Signal that is dispatched whenever the Body collides with the world bounds, something that was previously difficult to detect. Due to the potentially high volume of signals this could create it is disabled by default. To use this feature set this property to a Phaser.Signal: sprite.body.onWorldBounds = new Phaser.Signal() and it will be called when a collision happens, passing five arguments: the sprite on which it occurred, and 4 booleans mapping to up, down, left and right, indicating on which side of the world the collision occurred.
    • +
    • ArcadePhysics.Body.onCollide is a new Signal that is dispatched whenever the Body collides with another Body. Due to the potentially high volume of signals this could create it is disabled by default. To use this feature set this property to a Phaser.Signal: sprite.body.onCollide = new Phaser.Signal() and it will be called when a collision happens, passing two arguments: the sprites which collided.
    • +
    • ArcadePhysics.Body.onOverlap is a new Signal that is dispatched whenever the Body overlaps with another Body. Due to the potentially high volume of signals this could create it is disabled by default. To use this feature set this property to a Phaser.Signal: sprite.body.onOverlap = new Phaser.Signal() and it will be called when an overlap happens, passing two arguments: the sprites which collided.
    • +
    • Groups now have the following properties, which are getters and setters: centerX, centerY, left, right, top and bottom. These calculate the bounds of the Group, based on all visible children, and then allow you to apply positioning based on that. This means you can, for example, now get the horizontal center of a Group by called Group.centerX. These properties are also setters, so you can position the Groups, and it will take scale and rotation into consideration.
    • +
    • Groups have a new method alignIn. It allows you to align the Group within another Game Object, or a Rectangle. You can specify one of 9 positions which are the new position constants such as: Phaser.TOP_LEFT or Phaser.CENTER (see docs for the complete list). The Groups are positioned based on their child bounds, which takes rotation and scaling into consideration. You can easily place Groups into the corners of the screen, or game world, or align them within other Sprites, using this method.
    • +
    • Groups have a new method alignTo. It allows you to align a Group to the side of another Game Object, or a Rectangle. You can specify one of 11 positions which are the new position constants such as: Phaser.TOP_LEFT or Phaser.LEFT_BOTTOM (see docs for the complete list). The Groups are positioned based on their child bounds, which takes rotation and scaling into consideration. You can easily align Groups next to other Sprites using this method.
    • +
    +

    Updates

      +
    • TypeScript definitions fixes and updates (thanks @monagames)
    • +
    • Docs typo fixes (thanks @drhayes)
    • +
    • The TilemapParser will now add more data when importing Image object types from Tiled. The extra data available is: image width, image height, and flags to see if the image is flipped either horizontally, vertically or diagonally (thanks @gotenxds #2564 #2554)
    • +
    • TilemapLayer.renderRegion has had an assignment to the obsolete tileColor property removed (thanks @cryptographer #2583)
    • +
    • Group.getFurthestFrom and Group.getClosestTo has a new optional argument: callback. This allows you to apply your own additional filtering to the distance checks, ultimately influencing the selected child (thanks @LoneStranger #2577)
    • +
    • Text.setText has a new optional argument immediate which will re-create the texture immediately upon call, rather than wait for the next render pass to do so (thanks @Scraft #2594)
    • +
    • Phaser.Utils.pad now calls toString on the input given, which means you can pass in common data types, such as numbers, and have them padded and returned as strings.
    • +
    • The canvas created by Phaser.Debug for use when displaying debug data is no longer stored in the CanvasPool, and is instead a stand-alone canvas, free from ever being re-used by another game object.
    • +
    • BitmapData has a new, optional, fifth argument: skipPool. By default BitmapData objects will ask for the first free canvas found in the CanvasPool, but this behavior can now be customized on a per object basis.
    • +
    • Phaser.ArrayUtils.rotate is now deprecated. Please use Phaser.ArrayUtils.rotateLeft instead.
    • +
    • Phaser.Text.fontPropertiesCanvas used to be taken from the CanvasPool, but as it's constantly needed it is now generated directly from the document.
    • +
    • The default image texture, for when none is supplied, is now available under Phaser.Cache.DEFAULT.
    • +
    • The missing image texture, for when an image has failed to load, is now available under Phaser.Cache.MISSING.
    • +
    • Phaser.Cache.addImage will now check the key given, and if __default or __missing it will update the new consts Phaser.Cache.DEFAULT and Phaser.Cache.MISSING accordingly, allowing you to replace the default or missing image textures used by Phaser.
    • +
    • Phaser.Cache.getPixiTexture has now been removed, as the Pixi Cache isn't used internally anywhere any longer.
    • +
    • Phaser.Cache.getPixiBaseTexture has now been removed, as the Pixi Cache isn't used internally anywhere any longer.
    • +
    • The second argument to Phaser.Cache.removeImage has been renamed from removeFromPixi to destroyBaseTexture, as that is fundamentally what the argument always did.
    • +
    • AnimationManager.refreshFrame has been removed as it never actually did anything internally.
    • +
    • Sound.stop will check to see if gainNode exists before trying to disconnect from it (#2597)
    • +
    +

    Bug Fixes

      +
    • Fixed issue in Group.align where the cell wouldn't increase if rows was great than -1
    • +
    • Sound.volume was accidentally repeated twice in the source (thanks @LoneStranger #2569)
    • +
    • Animation.setFrame wouldn't work correctly if the useLocalFrameIndex argument was true, and the frame ID was a number (thanks @uboot #2571)
    • +
    • Polygon.contains would only work with non-flattened Polygon objects. It now works with both flat and non-flat Polygons.
    • +
    • Graphics objects enabled for input would fail to do anything if a Phaser Polygon was given to the Graphics object (which it was in nearly all cases), as it wouldn't detect input correctly with flattened polygons (thanks @symbiane #2591)
    • +
    • P2.World.clear will now clear out the World.walls property, resetting all of the wall bounds to null. This allows the walls to be re-created accurately when the P2 World is reset, which happens on a State change or restart (thanks @ewpolly1 @codermua #2574)
    • +
    +

    Pixi Updates

    Please note that Phaser uses a custom build of Pixi and always has done. The following changes have been made to our custom build, not to Pixi in general.

    +
      +
    • Removed _renderWebGL, _renderCanvas, getLocalBounds and getBounds from PIXI.DisplayObject, as they were only there to pass ancient jshint rules.
    • +
    • All Pixi.Graphics methods that change the Graphics, i.e. drawShape, lineTo, arc, etc will now all automatically call Graphics.updateLocalBounds. This is so that the bounds of the Graphics object are kept updated, allowing you to scale and rotate the Graphics object and still obtain correct dimensions from it (thanks @kelu-smiley #2573)
    • +
    • PIXI.CanvasPool no longer just checks for null parent comparisons. It will check for all falsey parents, helping free-up canvases when the parent objects have been removed elsewhere.
    • +
    • PIXI.CanvasPool.remove and removeByCanvas both now set the removed canvas width and height to 1.
    • +
    • PIXI.Texture.fromImage, PIXI.BaseTexture.fromImage and PIXI.Sprite.fromImage have all been removed. They should never have actually been used, as they bypass the Phaser Loader, and don't factor in CORs or any other advanced loader settings.
    • +
    • The PIXI.BaseTexture.imageUrl property has been removed, as it was never actually populated.
    • +
    • The PIXI.BaseTexture._UID property has been removed, as it was never actually used internally.
    • +
    • All references to PIXI.BaseTextureCache have been removed (primarily from BaseTexture.destroy and Texture.destroy), as the BaseTextureCache was never used internally by Phaser, or by our custom version of Pixi.
    • +
    • PIXI.TextureCache has been removed. It was only ever used by the default and missing images that Phaser generates on start-up. It wasn't used internally by Phaser anywhere else, and the only references Pixi has to it have all been removed. If you need it in your own game, please refactor it to avoid it, or re-create the object on the PIXI global object.
    • +
    • Canvases created by BaseTexture.fromCanvas no longer have the _pixiId property attached to them, as this was never used internally by Phaser or Pixi.
    • +
    • PIXI.BaseTexture.updateSourceImage is now deprecated. Please use Sprite.loadTexture instead.
    • +
    • The property PIXI.BaseTextureCacheIdGenerator has been removed, as it is no longer used internally by Phaser or Pixi.
    • +
    • PIXI.Texture.addTextureToCache has been removed. The PIXI Texture Cache was never actually used by Phaser, and was leading to complications internally.
    • +
    • PIXI.Texture.removeTextureFromCache has been removed. The PIXI Texture Cache was never actually used by Phaser, and was leading to complications internally.
    • +
    • PIXI.Texture.fromFrame and PIXI.Sprite.fromFrame have been removed. They relied on the PIXI Texture Cache, which was never actually used by Phaser, and was never used internally by Pixi either.
    • +
    • The property PIXI.TextureCacheIdGenerator has been removed, as it was not used internally.
    • +
    • The property PIXI.FrameCache has been removed, as it was not used internally.
    • +
    • PIXI.DisplayObjectContainer calls updateTransform at the start of getBounds to help avoid the bounds being out of date.
    • +
    +

    Thanks to Corin Wilkins at Aardman Digital, for lots of the investigation work, leading to the Pixi changes listed above.

    +

    For changes in previous releases please see the extensive Version History.

    +

    Contributing +

    +

    The Contributors Guide contains full details on how to help with Phaser development. The main points are:

    +
      +
    • Found a bug? Report it on GitHub Issues and include a code sample.

      +
    • +
    • Pull Requests should only be made against the dev branch. Never against master.

      +
    • +
    • Before submitting a Pull Request run your code through JSHint using our config.

      +
    • +
    • Before contributing read the code of conduct.

      +
    • +
    +

    Written something cool in Phaser? Please tell us about it in the forum, or email support@phaser.io

    +

    Created by

    +

    Phaser is a Photon Storm production.

    +

    storm

    +

    Created by Richard Davey. Powered by coffee, anime, pixels and love.

    +

    The Phaser logo and characters are © 2016 Photon Storm Limited.

    +

    All rights reserved.

    +

    "Above all, video games are meant to be just one thing: fun. Fun for everyone." - Satoru Iwata

    +

    Analytics

    +
    @@ -1260,7 +1535,7 @@ Documentation generated by JSDoc 3.3.3 - on Fri Jun 17 2016 12:45:29 GMT+0100 (BST) using the DocStrap template. + on Fri Jul 08 2016 15:42:35 GMT+0100 (GMT Daylight Time) using the DocStrap template. diff --git a/docs/namespaces.list.html b/docs/namespaces.list.html index f740e9176..7414e516c 100644 --- a/docs/namespaces.list.html +++ b/docs/namespaces.list.html @@ -708,10 +708,6 @@ ComplexPrimitiveShader -
  • - DisplayObject -
  • -
  • DisplayObjectContainer
  • @@ -744,6 +740,10 @@ PIXI +
  • + DisplayObject +
  • +
  • PixiFastShader
  • @@ -2587,14 +2587,6 @@ -
    - DisplayObject -
    -
    - -
    - -
    DisplayObjectContainer
    @@ -2659,6 +2651,14 @@ +
    + DisplayObject +
    +
    + +
    + +
    PixiFastShader
    @@ -2831,7 +2831,7 @@ Documentation generated by JSDoc 3.3.3 - on Fri Jun 17 2016 12:45:29 GMT+0100 (BST) using the DocStrap template. + on Fri Jul 08 2016 15:42:35 GMT+0100 (GMT Daylight Time) using the DocStrap template. diff --git a/docs/pixi-jsdoc.js b/docs/pixi-jsdoc.js index 2edd18afc..8a543237d 100644 --- a/docs/pixi-jsdoc.js +++ b/docs/pixi-jsdoc.js @@ -3,369 +3,422 @@ */ /** * @fileoverview -* @author Mat Groves http://matgroves.com/ @Doormat23 -* @sourcefile /Users/rich/Documents/phaser/src/pixi/display/DisplayObject.js +* @author Richard Davey +* @sourcefile d:\wamp\www\phaser\src\pixi\display\DisplayObject.js * @sourceline 1 */ /** -* @class PIXI.DisplayObject -* @description The base class for all objects that are rendered on the screen. -This is an abstract class and should not be used on its own rather it should be extended. -* @sourcefile /Users/rich/Documents/phaser/src/pixi/display/DisplayObject.js -* @sourceline 5 +* @class PIXI.PIXI.DisplayObject +* @description The base class for all objects that are rendered. Contains properties for position, scaling, +rotation, masks and cache handling. + +This is an abstract class and should not be used on its own, rather it should be extended. + +It is used internally by the likes of PIXI.Sprite. +* @sourcefile d:\wamp\www\phaser\src\pixi\display\DisplayObject.js +* @sourceline 7 */ /** -* @description The coordinate of the object relative to the local coordinates of the parent. -* @member PIXI.DisplayObject#position -* @type {Point} -* @sourcefile /Users/rich/Documents/phaser/src/pixi/display/DisplayObject.js -* @sourceline 14 +* @description The coordinates, in pixels, of this DisplayObject, relative to its parent container. + +The value of this property does not reflect any positioning happening further up the display list. +To obtain that value please see the `worldPosition` property. +* @member PIXI.PIXI.DisplayObject#position +* @type {PIXIPoint} +* @default +* @sourcefile d:\wamp\www\phaser\src\pixi\display\DisplayObject.js +* @sourceline 20 */ /** -* @description The scale factor of the object. -* @member PIXI.DisplayObject#scale -* @type {Point} -* @sourcefile /Users/rich/Documents/phaser/src/pixi/display/DisplayObject.js -* @sourceline 22 +* @description The scale of this DisplayObject. A scale of 1:1 represents the DisplayObject +at its default size. A value of 0.5 would scale this DisplayObject by half, and so on. + +The value of this property does not reflect any scaling happening further up the display list. +To obtain that value please see the `worldScale` property. +* @member PIXI.PIXI.DisplayObject#scale +* @type {PIXIPoint} +* @default +* @sourcefile d:\wamp\www\phaser\src\pixi\display\DisplayObject.js +* @sourceline 31 */ /** -* @description The pivot point of the displayObject that it rotates around -* @member PIXI.DisplayObject#pivot -* @type {Point} -* @sourcefile /Users/rich/Documents/phaser/src/pixi/display/DisplayObject.js -* @sourceline 30 +* @description The pivot point of this DisplayObject that it rotates around. The values are expressed +in pixel values. +* @member PIXI.PIXI.DisplayObject#pivot +* @type {PIXIPoint} +* @default +* @sourcefile d:\wamp\www\phaser\src\pixi\display\DisplayObject.js +* @sourceline 43 */ /** -* @description The rotation of the object in radians. -* @member PIXI.DisplayObject#rotation +* @description The rotation of this DisplayObject. The value is given, and expressed, in radians, and is based on +a right-handed orientation. + +The value of this property does not reflect any rotation happening further up the display list. +To obtain that value please see the `worldRotation` property. +* @member PIXI.PIXI.DisplayObject#rotation * @type {Number} -* @sourcefile /Users/rich/Documents/phaser/src/pixi/display/DisplayObject.js -* @sourceline 38 +* @default +* @sourcefile d:\wamp\www\phaser\src\pixi\display\DisplayObject.js +* @sourceline 51 */ /** -* @description The opacity of the object. -* @member PIXI.DisplayObject#alpha +* @description The alpha value of this DisplayObject. A value of 1 is fully opaque. A value of 0 is transparent. +Please note that an object with an alpha value of 0 is skipped during the render pass. + +The value of this property does not reflect any alpha values set further up the display list. +To obtain that value please see the `worldAlpha` property. +* @member PIXI.PIXI.DisplayObject#alpha * @type {Number} -* @sourcefile /Users/rich/Documents/phaser/src/pixi/display/DisplayObject.js -* @sourceline 46 +* @default +* @sourcefile d:\wamp\www\phaser\src\pixi\display\DisplayObject.js +* @sourceline 63 */ /** -* @description The visibility of the object. -* @member PIXI.DisplayObject#visible +* @description The visibility of this DisplayObject. A value of `false` makes the object invisible. +A value of `true` makes it visible. Please note that an object with a visible value of +`false` is skipped during the render pass. Equally a DisplayObject with visible false will +not render any of its children. + +The value of this property does not reflect any visible values set further up the display list. +To obtain that value please see the `worldVisible` property. +* @member PIXI.PIXI.DisplayObject#visible * @type {Boolean} -* @sourcefile /Users/rich/Documents/phaser/src/pixi/display/DisplayObject.js -* @sourceline 54 +* @default +* @sourcefile d:\wamp\www\phaser\src\pixi\display\DisplayObject.js +* @sourceline 75 */ /** * @description This is the defined area that will pick up mouse / touch events. It is null by default. Setting it is a neat way of optimising the hitTest function that the interactionManager will use (as it will not need to hit test all the children) -* @member PIXI.DisplayObject#hitArea +* @member PIXI.PIXI.DisplayObject#hitArea * @type {(Rectangle|Circle|Ellipse|Polygon)} -* @sourcefile /Users/rich/Documents/phaser/src/pixi/display/DisplayObject.js -* @sourceline 62 +* @sourcefile d:\wamp\www\phaser\src\pixi\display\DisplayObject.js +* @sourceline 89 */ /** -* @description Can this object be rendered -* @member PIXI.DisplayObject#renderable +* @description Should this DisplayObject be rendered by the renderer? An object with a renderable value of +`false` is skipped during the render pass. +* @member PIXI.PIXI.DisplayObject#renderable * @type {Boolean} -* @sourcefile /Users/rich/Documents/phaser/src/pixi/display/DisplayObject.js -* @sourceline 71 +* @default +* @sourcefile d:\wamp\www\phaser\src\pixi\display\DisplayObject.js +* @sourceline 98 */ /** -* @description [read-only] The display object container that contains this display object. -* @member PIXI.DisplayObject#parent -* @type {PIXI.DisplayObjectContainer} +* @description The parent DisplayObjectContainer that this DisplayObject is a child of. +All DisplayObjects must belong to a parent in order to be rendered. +The root parent is the Stage object. This property is set automatically when the +DisplayObject is added to, or removed from, a DisplayObjectContainer. +* @member PIXI.PIXI.DisplayObject#parent +* @type {PIXIDisplayObjectContainer} * @readonly -* @sourcefile /Users/rich/Documents/phaser/src/pixi/display/DisplayObject.js -* @sourceline 79 +* @default +* @sourcefile d:\wamp\www\phaser\src\pixi\display\DisplayObject.js +* @sourceline 107 */ /** -* @description [read-only] The stage the display object is connected to, or undefined if it is not connected to the stage. -* @member PIXI.DisplayObject#stage -* @type {Stage} +* @description The stage that this DisplayObject is connected to. +* @member PIXI.PIXI.DisplayObject#stage +* @type {PIXIStage} * @readonly -* @sourcefile /Users/rich/Documents/phaser/src/pixi/display/DisplayObject.js -* @sourceline 88 +* @default +* @sourcefile d:\wamp\www\phaser\src\pixi\display\DisplayObject.js +* @sourceline 119 */ /** -* @description [read-only] The multiplied alpha of the displayObject -* @member PIXI.DisplayObject#worldAlpha +* @description The multiplied alpha value of this DisplayObject. A value of 1 is fully opaque. A value of 0 is transparent. +This value is the calculated total, based on the alpha values of all parents of this DisplayObjects +in the display list. + +To obtain, and set, the local alpha value, see the `alpha` property. + +Note: This property is only updated at the end of the `updateTransform` call, once per render. Until +that happens this property will contain values based on the previous frame. Be mindful of this if +accessing this property outside of the normal game flow, i.e. from an asynchronous event callback. +* @member PIXI.PIXI.DisplayObject#worldAlpha * @type {Number} * @readonly -* @sourcefile /Users/rich/Documents/phaser/src/pixi/display/DisplayObject.js -* @sourceline 97 +* @sourcefile d:\wamp\www\phaser\src\pixi\display\DisplayObject.js +* @sourceline 128 */ /** -* @description [read-only] Current transform of the object based on world (parent) factors -* @member PIXI.DisplayObject#worldTransform -* @type {Matrix} +* @description The current transform of this DisplayObject. + +This property contains the calculated total, based on the transforms of all parents of this +DisplayObject in the display list. + +Note: This property is only updated at the end of the `updateTransform` call, once per render. Until +that happens this property will contain values based on the previous frame. Be mindful of this if +accessing this property outside of the normal game flow, i.e. from an asynchronous event callback. +* @member PIXI.PIXI.DisplayObject#worldTransform +* @type {PIXIMatrix} * @readonly -* @access private -* @sourcefile /Users/rich/Documents/phaser/src/pixi/display/DisplayObject.js -* @sourceline 106 +* @sourcefile d:\wamp\www\phaser\src\pixi\display\DisplayObject.js +* @sourceline 144 */ /** -* @description The position of the Display Object based on the world transform. -This value is updated at the end of updateTransform and takes all parent transforms into account. -* @member PIXI.DisplayObject#worldPosition -* @type {Point} +* @description The coordinates, in pixels, of this DisplayObject within the world. + +This property contains the calculated total, based on the positions of all parents of this +DisplayObject in the display list. + +Note: This property is only updated at the end of the `updateTransform` call, once per render. Until +that happens this property will contain values based on the previous frame. Be mindful of this if +accessing this property outside of the normal game flow, i.e. from an asynchronous event callback. +* @member PIXI.PIXI.DisplayObject#worldPosition +* @type {PIXIPoint} * @readonly -* @sourcefile /Users/rich/Documents/phaser/src/pixi/display/DisplayObject.js -* @sourceline 116 +* @sourcefile d:\wamp\www\phaser\src\pixi\display\DisplayObject.js +* @sourceline 159 */ /** -* @description The scale of the Display Object based on the world transform. -This value is updated at the end of updateTransform and takes all parent transforms into account. -* @member PIXI.DisplayObject#worldScale -* @type {Point} +* @description The global scale of this DisplayObject. + +This property contains the calculated total, based on the scales of all parents of this +DisplayObject in the display list. + +Note: This property is only updated at the end of the `updateTransform` call, once per render. Until +that happens this property will contain values based on the previous frame. Be mindful of this if +accessing this property outside of the normal game flow, i.e. from an asynchronous event callback. +* @member PIXI.PIXI.DisplayObject#worldScale +* @type {PIXIPoint} * @readonly -* @sourcefile /Users/rich/Documents/phaser/src/pixi/display/DisplayObject.js -* @sourceline 126 +* @sourcefile d:\wamp\www\phaser\src\pixi\display\DisplayObject.js +* @sourceline 174 */ /** -* @description The rotation of the Display Object, in radians, based on the world transform. -This value is updated at the end of updateTransform and takes all parent transforms into account. -* @member PIXI.DisplayObject#worldRotation +* @description The rotation, in radians, of this DisplayObject. + +This property contains the calculated total, based on the rotations of all parents of this +DisplayObject in the display list. + +Note: This property is only updated at the end of the `updateTransform` call, once per render. Until +that happens this property will contain values based on the previous frame. Be mindful of this if +accessing this property outside of the normal game flow, i.e. from an asynchronous event callback. +* @member PIXI.PIXI.DisplayObject#worldRotation * @type {Number} * @readonly -* @sourcefile /Users/rich/Documents/phaser/src/pixi/display/DisplayObject.js -* @sourceline 136 +* @sourcefile d:\wamp\www\phaser\src\pixi\display\DisplayObject.js +* @sourceline 189 */ /** -* @description cached sin rotation and cos rotation -* @member PIXI.DisplayObject#_sr +* @description The rectangular area used by filters when rendering a shader for this DisplayObject. +* @member PIXI.PIXI.DisplayObject#filterArea +* @type {Rectangle} +* @default +* @sourcefile d:\wamp\www\phaser\src\pixi\display\DisplayObject.js +* @sourceline 204 +*/ +/** +* @member PIXI.PIXI.DisplayObject#_sr - Cached rotation value. * @type {Number} * @access private -* @sourcefile /Users/rich/Documents/phaser/src/pixi/display/DisplayObject.js -* @sourceline 146 +* @sourcefile d:\wamp\www\phaser\src\pixi\display\DisplayObject.js +* @sourceline 213 */ /** -* @description cached sin rotation and cos rotation -* @member PIXI.DisplayObject#_cr +* @member PIXI.PIXI.DisplayObject#_cr - Cached rotation value. * @type {Number} * @access private -* @sourcefile /Users/rich/Documents/phaser/src/pixi/display/DisplayObject.js -* @sourceline 155 +* @sourcefile d:\wamp\www\phaser\src\pixi\display\DisplayObject.js +* @sourceline 219 */ /** -* @description The area the filter is applied to like the hitArea this is used as more of an optimisation -rather than figuring out the dimensions of the displayObject each frame you can set this rectangle -* @member PIXI.DisplayObject#filterArea -* @type {Rectangle} -* @sourcefile /Users/rich/Documents/phaser/src/pixi/display/DisplayObject.js -* @sourceline 164 -*/ -/** -* @description The original, cached bounds of the object -* @member PIXI.DisplayObject#_bounds -* @type {Rectangle} +* @member PIXI.PIXI.DisplayObject#_bounds - The cached bounds of this object. +* @type {PIXIRectangle} * @access private -* @sourcefile /Users/rich/Documents/phaser/src/pixi/display/DisplayObject.js -* @sourceline 173 +* @sourcefile d:\wamp\www\phaser\src\pixi\display\DisplayObject.js +* @sourceline 225 */ /** -* @description The most up-to-date bounds of the object -* @member PIXI.DisplayObject#_currentBounds -* @type {Rectangle} +* @member PIXI.PIXI.DisplayObject#_currentBounds - The most recently calculated bounds of this object. +* @type {PIXIRectangle} * @access private -* @sourcefile /Users/rich/Documents/phaser/src/pixi/display/DisplayObject.js -* @sourceline 182 +* @sourcefile d:\wamp\www\phaser\src\pixi\display\DisplayObject.js +* @sourceline 231 */ /** -* @description The original, cached mask of the object -* @member PIXI.DisplayObject#_mask -* @type {Rectangle} +* @member PIXI.PIXI.DisplayObject#_mask - The cached mask of this object. +* @type {PIXIRectangle} * @access private -* @sourcefile /Users/rich/Documents/phaser/src/pixi/display/DisplayObject.js -* @sourceline 191 +* @sourcefile d:\wamp\www\phaser\src\pixi\display\DisplayObject.js +* @sourceline 237 */ /** -* @description Cached internal flag. -* @member PIXI.DisplayObject#_cacheAsBitmap +* @member PIXI.PIXI.DisplayObject#_cacheAsBitmap - Internal cache as bitmap flag. * @type {Boolean} * @access private -* @sourcefile /Users/rich/Documents/phaser/src/pixi/display/DisplayObject.js -* @sourceline 200 +* @sourcefile d:\wamp\www\phaser\src\pixi\display\DisplayObject.js +* @sourceline 243 */ /** -* @description Cached internal flag. -* @member PIXI.DisplayObject#_cacheIsDirty +* @member PIXI.PIXI.DisplayObject#_cacheIsDirty - Internal dirty cache flag. * @type {Boolean} * @access private -* @sourcefile /Users/rich/Documents/phaser/src/pixi/display/DisplayObject.js -* @sourceline 209 +* @sourcefile d:\wamp\www\phaser\src\pixi\display\DisplayObject.js +* @sourceline 249 */ /** * @description Destroy this DisplayObject. -Removes all references to transformCallbacks, its parent, the stage, filters, bounds, mask and cached Sprites. -* @method PIXI.DisplayObject#destroy -* @sourcefile /Users/rich/Documents/phaser/src/pixi/display/DisplayObject.js -* @sourceline 223 -*/ -/** -* @description [read-only] Indicates if the sprite is globally visible. -* @member PIXI.DisplayObject#worldVisible -* @type {Boolean} -* @sourcefile /Users/rich/Documents/phaser/src/pixi/display/DisplayObject.js -* @sourceline 258 -*/ -/** -* @description Sets a mask for the displayObject. A mask is an object that limits the visibility of an object to the shape of the mask applied to it. -In PIXI a regular mask must be a PIXI.Graphics object. This allows for much faster masking in canvas as it utilises shape clipping. -To remove a mask, set this property to null. -* @member PIXI.DisplayObject#mask -* @type {PIXI.Graphics} -* @sourcefile /Users/rich/Documents/phaser/src/pixi/display/DisplayObject.js -* @sourceline 282 -*/ -/** -* @description Sets the filters for the displayObject. -IMPORTANT: This is a webGL only feature and will be ignored by the Canvas renderer. -To remove filters simply set this property to 'null'. +Removes any cached sprites, sets renderable flag to false, and nulls references to the Stage, filters, +bounds and mask. -You cannot have a filter and a multiply blend mode active at the same time. Setting a filter will reset -this objects blend mode to NORMAL. -* @member PIXI.DisplayObject#filters -* @type {Array} -* @sourcefile /Users/rich/Documents/phaser/src/pixi/display/DisplayObject.js -* @sourceline 307 +Also iteratively calls `destroy` on any children. +* @method PIXI.PIXI.DisplayObject#PIXI.DisplayObject#destroy +* @sourcefile d:\wamp\www\phaser\src\pixi\display\DisplayObject.js +* @sourceline 261 */ /** -* @description Set if this display object is cached as a bitmap. -This basically takes a snap shot of the display object as it is at that moment. It can provide a performance benefit for complex static displayObjects. -To remove simply set this property to 'null' -* @member PIXI.DisplayObject#cacheAsBitmap -* @type {Boolean} -* @sourcefile /Users/rich/Documents/phaser/src/pixi/display/DisplayObject.js -* @sourceline 355 +* @description Sets the root Stage object that this DisplayObject is connected to. +* @method PIXI.PIXI.DisplayObject#PIXI.DisplayObject#setStageReference +* @param {PhaserStage} stage - - The stage that the object will have as its current stage reference +* @return {PIXIDisplayObject} - A reference to this DisplayObject. +* @sourcefile d:\wamp\www\phaser\src\pixi\display\DisplayObject.js +* @sourceline 414 */ /** -* @description Retrieves the bounds of the displayObject as a rectangle object -* @method PIXI.DisplayObject#getBounds -* @param {Matrix} matrix - -* @return {Rectangle} the rectangular bounding area -* @sourcefile /Users/rich/Documents/phaser/src/pixi/display/DisplayObject.js -* @sourceline 497 +* @description To be overridden by classes that require it. +* @method PIXI.PIXI.DisplayObject#PIXI.DisplayObject#preUpdate +* @sourcefile d:\wamp\www\phaser\src\pixi\display\DisplayObject.js +* @sourceline 429 */ /** -* @description Retrieves the local bounds of the displayObject as a rectangle object -* @method PIXI.DisplayObject#getLocalBounds -* @return {Rectangle} the rectangular bounding area -* @sourcefile /Users/rich/Documents/phaser/src/pixi/display/DisplayObject.js -* @sourceline 510 +* @description Generates a RenderTexture based on this DisplayObject, which can they be used to texture other Sprites. +This can be useful if your DisplayObject is static, or complicated, and needs to be reused multiple times. + +Please note that no garbage collection takes place on old textures. It is up to you to destroy old textures, +and references to them, so they don't linger in memory. +* @method PIXI.PIXI.DisplayObject#PIXI.DisplayObject#generateTexture +* @param {Number} [resolution=1] - - The resolution of the texture being generated. +* @param {Number} [scaleMode=PIXI.scaleModes.DEFAULT] - - See {{#crossLink "PIXI/scaleModes:property"}}PIXI.scaleModes{{/crossLink}} for possible values. +* @param {(PIXICanvasRenderer|PIXIWebGLRenderer)} renderer - - The renderer used to generate the texture. +* @return {PIXIRenderTexture} - A RenderTexture containing an image of this DisplayObject at the time it was invoked. +* @sourcefile d:\wamp\www\phaser\src\pixi\display\DisplayObject.js +* @sourceline 438 */ /** -* @description Sets the object's stage reference, the stage this object is connected to -* @method PIXI.DisplayObject#setStageReference -* @param {Stage} stage - the stage that the object will have as its current stage reference -* @sourcefile /Users/rich/Documents/phaser/src/pixi/display/DisplayObject.js -* @sourceline 521 +* @description If this DisplayObject has a cached Sprite, this method generates and updates it. +* @method PIXI.PIXI.DisplayObject#PIXI.DisplayObject#updateCache +* @return {PIXIDisplayObject} - A reference to this DisplayObject. +* @sourcefile d:\wamp\www\phaser\src\pixi\display\DisplayObject.js +* @sourceline 466 */ /** -* @description Empty, to be overridden by classes that require it. -* @method PIXI.DisplayObject#preUpdate -* @sourcefile /Users/rich/Documents/phaser/src/pixi/display/DisplayObject.js -* @sourceline 532 +* @description Calculates the global position of this DisplayObject, based on the position given. +* @method PIXI.PIXI.DisplayObject#PIXI.DisplayObject#toGlobal +* @param {PIXIPoint} position - - The global position to calculate from. +* @return {PIXIPoint} - A point object representing the position of this DisplayObject based on the global position given. +* @sourcefile d:\wamp\www\phaser\src\pixi\display\DisplayObject.js +* @sourceline 480 */ /** -* @description Useful function that returns a texture of the displayObject object that can then be used to create sprites -This can be quite useful if your displayObject is static / complicated and needs to be reused multiple times. -* @method PIXI.DisplayObject#generateTexture -* @param {Number} resolution - The resolution of the texture being generated -* @param {Number} scaleMode - See {{#crossLink "PIXI/scaleModes:property"}}PIXI.scaleModes{{/crossLink}} for possible values -* @param {(PIXI.CanvasRenderer|PIXI.WebGLRenderer)} renderer - The renderer used to generate the texture. -* @return {PIXI.RenderTexture} a texture of the graphics object -* @sourcefile /Users/rich/Documents/phaser/src/pixi/display/DisplayObject.js -* @sourceline 541 -*/ -/** -* @description Generates and updates the cached sprite for this object. -* @method PIXI.DisplayObject#updateCache -* @sourcefile /Users/rich/Documents/phaser/src/pixi/display/DisplayObject.js -* @sourceline 565 -*/ -/** -* @description Calculates the global position of the display object -* @method PIXI.DisplayObject#toGlobal -* @param {Point} position - The world origin to calculate from -* @return {Point} A point object representing the position of this object -* @sourcefile /Users/rich/Documents/phaser/src/pixi/display/DisplayObject.js -* @sourceline 575 -*/ -/** -* @description Calculates the local position of the display object relative to another point -* @method PIXI.DisplayObject#toLocal -* @param {Point} position - The world origin to calculate from -* @param {PIXI.DisplayObject} [from] - The DisplayObject to calculate the global position from -* @return {Point} A point object representing the position of this object -* @sourcefile /Users/rich/Documents/phaser/src/pixi/display/DisplayObject.js -* @sourceline 589 +* @description Calculates the local position of this DisplayObject, relative to another point. +* @method PIXI.PIXI.DisplayObject#PIXI.DisplayObject#toLocal +* @param {PIXIPoint} position - - The world origin to calculate from. +* @param {PIXIDisplayObject} [from] - - An optional DisplayObject to calculate the global position from. +* @return {PIXIPoint} - A point object representing the position of this DisplayObject based on the global position given. +* @sourcefile d:\wamp\www\phaser\src\pixi\display\DisplayObject.js +* @sourceline 495 */ /** * @description Internal method. -* @method PIXI.DisplayObject#_renderCachedSprite -* @param {Object} renderSession - The render session +* @method PIXI.PIXI.DisplayObject#PIXI.DisplayObject#_renderCachedSprite +* @param {Object} renderSession - - The render session * @access private -* @sourcefile /Users/rich/Documents/phaser/src/pixi/display/DisplayObject.js -* @sourceline 610 +* @sourcefile d:\wamp\www\phaser\src\pixi\display\DisplayObject.js +* @sourceline 516 */ /** * @description Internal method. -* @method PIXI.DisplayObject#_generateCachedSprite +* @method PIXI.PIXI.DisplayObject#PIXI.DisplayObject#_generateCachedSprite * @access private -* @sourcefile /Users/rich/Documents/phaser/src/pixi/display/DisplayObject.js -* @sourceline 631 +* @sourcefile d:\wamp\www\phaser\src\pixi\display\DisplayObject.js +* @sourceline 538 */ /** -* @description Destroys the cached sprite. -* @method PIXI.DisplayObject#_destroyCachedSprite +* @description Destroys a cached Sprite. +* @method PIXI.PIXI.DisplayObject#PIXI.DisplayObject#_destroyCachedSprite * @access private -* @sourcefile /Users/rich/Documents/phaser/src/pixi/display/DisplayObject.js -* @sourceline 678 +* @sourcefile d:\wamp\www\phaser\src\pixi\display\DisplayObject.js +* @sourceline 586 */ /** -* @description Renders the object using the WebGL renderer -* @method PIXI.DisplayObject#_renderWebGL -* @param {RenderSession} renderSession - -* @access private -* @sourcefile /Users/rich/Documents/phaser/src/pixi/display/DisplayObject.js -* @sourceline 694 -*/ -/** -* @description Renders the object using the Canvas renderer -* @method PIXI.DisplayObject#_renderCanvas -* @param {RenderSession} renderSession - -* @access private -* @sourcefile /Users/rich/Documents/phaser/src/pixi/display/DisplayObject.js -* @sourceline 708 -*/ -/** -* @description The position of the displayObject on the x axis relative to the local coordinates of the parent. -* @member PIXI.DisplayObject#x +* @description The horizontal position of the DisplayObject, in pixels, relative to its parent. +If you need the world position of the DisplayObject, use `DisplayObject.worldPosition` instead. +* @member PIXI.PIXI.DisplayObject#x - The horizontal position of the DisplayObject, in pixels, relative to its parent. * @type {Number} -* @sourcefile /Users/rich/Documents/phaser/src/pixi/display/DisplayObject.js -* @sourceline 722 +* @sourcefile d:\wamp\www\phaser\src\pixi\display\DisplayObject.js +* @sourceline 612 */ /** -* @description The position of the displayObject on the y axis relative to the local coordinates of the parent. -* @member PIXI.DisplayObject#y +* @description The vertical position of the DisplayObject, in pixels, relative to its parent. +If you need the world position of the DisplayObject, use `DisplayObject.worldPosition` instead. +* @member PIXI.PIXI.DisplayObject#y - The vertical position of the DisplayObject, in pixels, relative to its parent. * @type {Number} -* @sourcefile /Users/rich/Documents/phaser/src/pixi/display/DisplayObject.js -* @sourceline 740 +* @sourcefile d:\wamp\www\phaser\src\pixi\display\DisplayObject.js +* @sourceline 634 +*/ +/** +* @description Indicates if this DisplayObject is visible, based on it, and all of its parents, `visible` property values. +* @member PIXI.PIXI.DisplayObject#worldVisible - Indicates if this DisplayObject is visible, based on it, and all of its parents, `visible` property values. +* @type {Boolean} +* @sourcefile d:\wamp\www\phaser\src\pixi\display\DisplayObject.js +* @sourceline 656 +*/ +/** +* @description Sets a mask for this DisplayObject. A mask is an instance of a Graphics object. +When applied it limits the visible area of this DisplayObject to the shape of the mask. +Under a Canvas renderer it uses shape clipping. Under a WebGL renderer it uses a Stencil Buffer. +To remove a mask, set this property to `null`. +* @member PIXI.PIXI.DisplayObject#mask - The mask applied to this DisplayObject. Set to `null` to remove an existing mask. +* @type {PIXIGraphics} +* @sourcefile d:\wamp\www\phaser\src\pixi\display\DisplayObject.js +* @sourceline 691 +*/ +/** +* @description Sets the filters for this DisplayObject. This is a WebGL only feature, and is ignored by the Canvas +Renderer. A filter is a shader applied to this DisplayObject. You can modify the placement of the filter +using `DisplayObject.filterArea`. + +To remove filters, set this property to `null`. + +Note: You cannot have a filter set, and a MULTIPLY Blend Mode active, at the same time. Setting a +filter will reset this DisplayObjects blend mode to NORMAL. +* @member PIXI.PIXI.DisplayObject#filters - An Array of PIXI.AbstractFilter objects, or objects that extend them. +* @type {Array} +* @sourcefile d:\wamp\www\phaser\src\pixi\display\DisplayObject.js +* @sourceline 726 +*/ +/** +* @description Sets if this DisplayObject should be cached as a bitmap. + +When invoked it will take a snapshot of the DisplayObject, as it is at that moment, and store it +in a RenderTexture. This is then used whenever this DisplayObject is rendered. It can provide a +performance benefit for complex, but static, DisplayObjects. I.e. those with lots of children. + +Cached Bitmaps do not track their parents. If you update a property of this DisplayObject, it will not +re-generate the cached bitmap automatically. To do that you need to call `DisplayObject.updateCache`. + +To remove a cached bitmap, set this property to `null`. +* @member PIXI.PIXI.DisplayObject#cacheAsBitmap - Cache this DisplayObject as a Bitmap. Set to `null` to remove an existing cached bitmap. +* @type {Boolean} +* @sourcefile d:\wamp\www\phaser\src\pixi\display\DisplayObject.js +* @sourceline 779 */ /** * @fileoverview * @author Mat Groves http://matgroves.com/ @Doormat23 -* @sourcefile /Users/rich/Documents/phaser/src/pixi/display/DisplayObjectContainer.js +* @sourcefile d:\wamp\www\phaser\src\pixi\display\DisplayObjectContainer.js * @sourceline 1 */ /** * @class PIXI.DisplayObjectContainer * @description A DisplayObjectContainer represents a collection of display objects. It is the base class of all display objects that act as a container for other objects. -* @augments PIXI.DisplayObject -* @sourcefile /Users/rich/Documents/phaser/src/pixi/display/DisplayObjectContainer.js +* @augments DisplayObject +* @sourcefile d:\wamp\www\phaser\src\pixi\display\DisplayObjectContainer.js * @sourceline 5 */ /** @@ -373,7 +426,7 @@ It is the base class of all display objects that act as a container for other ob * @member PIXI.DisplayObjectContainer#children * @type {Array} * @readonly -* @sourcefile /Users/rich/Documents/phaser/src/pixi/display/DisplayObjectContainer.js +* @sourcefile d:\wamp\www\phaser\src\pixi\display\DisplayObjectContainer.js * @sourceline 17 */ /** @@ -385,86 +438,86 @@ Note that this property isn't recursive: only immediate children are influenced, * @member PIXI.DisplayObjectContainer#ignoreChildInput * @type {Boolean} * @default -* @sourcefile /Users/rich/Documents/phaser/src/pixi/display/DisplayObjectContainer.js +* @sourcefile d:\wamp\www\phaser\src\pixi\display\DisplayObjectContainer.js * @sourceline 26 */ /** * @description The width of the displayObjectContainer, setting this will actually modify the scale to achieve the value set * @member PIXI.DisplayObjectContainer#width * @type {Number} -* @sourcefile /Users/rich/Documents/phaser/src/pixi/display/DisplayObjectContainer.js +* @sourcefile d:\wamp\www\phaser\src\pixi\display\DisplayObjectContainer.js * @sourceline 43 */ /** * @description The height of the displayObjectContainer, setting this will actually modify the scale to achieve the value set * @member PIXI.DisplayObjectContainer#height * @type {Number} -* @sourcefile /Users/rich/Documents/phaser/src/pixi/display/DisplayObjectContainer.js +* @sourcefile d:\wamp\www\phaser\src\pixi\display\DisplayObjectContainer.js * @sourceline 72 */ /** * @description Adds a child to the container. * @method PIXI.DisplayObjectContainer#addChild -* @param {PIXI.DisplayObject} child - The DisplayObject to add to the container -* @return {PIXI.DisplayObject} The child that was added. -* @sourcefile /Users/rich/Documents/phaser/src/pixi/display/DisplayObjectContainer.js +* @param {DisplayObject} child - The DisplayObject to add to the container +* @return {DisplayObject} The child that was added. +* @sourcefile d:\wamp\www\phaser\src\pixi\display\DisplayObjectContainer.js * @sourceline 102 */ /** * @description Adds a child to the container at a specified index. If the index is out of bounds an error will be thrown * @method PIXI.DisplayObjectContainer#addChildAt -* @param {PIXI.DisplayObject} child - The child to add +* @param {DisplayObject} child - The child to add * @param {Number} index - The index to place the child in -* @return {PIXI.DisplayObject} The child that was added. -* @sourcefile /Users/rich/Documents/phaser/src/pixi/display/DisplayObjectContainer.js +* @return {DisplayObject} The child that was added. +* @sourcefile d:\wamp\www\phaser\src\pixi\display\DisplayObjectContainer.js * @sourceline 114 */ /** * @description Swaps the position of 2 Display Objects within this container. * @method PIXI.DisplayObjectContainer#swapChildren -* @param {PIXI.DisplayObject} child - -* @param {PIXI.DisplayObject} child2 - -* @sourcefile /Users/rich/Documents/phaser/src/pixi/display/DisplayObjectContainer.js +* @param {DisplayObject} child - +* @param {DisplayObject} child2 - +* @sourcefile d:\wamp\www\phaser\src\pixi\display\DisplayObjectContainer.js * @sourceline 145 */ /** * @description Returns the index position of a child DisplayObject instance * @method PIXI.DisplayObjectContainer#getChildIndex -* @param {PIXI.DisplayObject} child - The DisplayObject instance to identify +* @param {DisplayObject} child - The DisplayObject instance to identify * @return {Number} The index position of the child display object to identify -* @sourcefile /Users/rich/Documents/phaser/src/pixi/display/DisplayObjectContainer.js +* @sourcefile d:\wamp\www\phaser\src\pixi\display\DisplayObjectContainer.js * @sourceline 170 */ /** * @description Changes the position of an existing child in the display object container * @method PIXI.DisplayObjectContainer#setChildIndex -* @param {PIXI.DisplayObject} child - The child DisplayObject instance for which you want to change the index number +* @param {DisplayObject} child - The child DisplayObject instance for which you want to change the index number * @param {Number} index - The resulting index number for the child display object -* @sourcefile /Users/rich/Documents/phaser/src/pixi/display/DisplayObjectContainer.js +* @sourcefile d:\wamp\www\phaser\src\pixi\display\DisplayObjectContainer.js * @sourceline 187 */ /** * @description Returns the child at the specified index * @method PIXI.DisplayObjectContainer#getChildAt * @param {Number} index - The index to get the child from -* @return {PIXI.DisplayObject} The child at the given index, if any. -* @sourcefile /Users/rich/Documents/phaser/src/pixi/display/DisplayObjectContainer.js +* @return {DisplayObject} The child at the given index, if any. +* @sourcefile d:\wamp\www\phaser\src\pixi\display\DisplayObjectContainer.js * @sourceline 205 */ /** * @description Removes a child from the container. * @method PIXI.DisplayObjectContainer#removeChild -* @param {PIXI.DisplayObject} child - The DisplayObject to remove -* @return {PIXI.DisplayObject} The child that was removed. -* @sourcefile /Users/rich/Documents/phaser/src/pixi/display/DisplayObjectContainer.js +* @param {DisplayObject} child - The DisplayObject to remove +* @return {DisplayObject} The child that was removed. +* @sourcefile d:\wamp\www\phaser\src\pixi\display\DisplayObjectContainer.js * @sourceline 222 */ /** * @description Removes a child from the specified index position. * @method PIXI.DisplayObjectContainer#removeChildAt * @param {Number} index - The index to get the child from -* @return {PIXI.DisplayObject} The child that was removed. -* @sourcefile /Users/rich/Documents/phaser/src/pixi/display/DisplayObjectContainer.js +* @return {DisplayObject} The child that was removed. +* @sourcefile d:\wamp\www\phaser\src\pixi\display\DisplayObjectContainer.js * @sourceline 237 */ /** @@ -472,56 +525,56 @@ Note that this property isn't recursive: only immediate children are influenced, * @method PIXI.DisplayObjectContainer#removeChildren * @param {Number} beginIndex - The beginning position. Default value is 0. * @param {Number} endIndex - The ending position. Default value is size of the container. -* @sourcefile /Users/rich/Documents/phaser/src/pixi/display/DisplayObjectContainer.js +* @sourcefile d:\wamp\www\phaser\src\pixi\display\DisplayObjectContainer.js * @sourceline 255 */ /** * @description Retrieves the bounds of the displayObjectContainer as a rectangle. The bounds calculation takes all visible children into consideration. * @method PIXI.DisplayObjectContainer#getBounds * @return {Rectangle} The rectangular bounding area -* @sourcefile /Users/rich/Documents/phaser/src/pixi/display/DisplayObjectContainer.js +* @sourcefile d:\wamp\www\phaser\src\pixi\display\DisplayObjectContainer.js * @sourceline 318 */ /** * @description Retrieves the non-global local bounds of the displayObjectContainer as a rectangle. The calculation takes all visible children into consideration. * @method PIXI.DisplayObjectContainer#getLocalBounds * @return {Rectangle} The rectangular bounding area -* @sourcefile /Users/rich/Documents/phaser/src/pixi/display/DisplayObjectContainer.js -* @sourceline 381 +* @sourcefile d:\wamp\www\phaser\src\pixi\display\DisplayObjectContainer.js +* @sourceline 383 */ /** * @description Sets the containers Stage reference. This is the Stage that this object, and all of its children, is connected to. * @method PIXI.DisplayObjectContainer#setStageReference * @param {Stage} stage - the stage that the container will have as its current stage reference -* @sourcefile /Users/rich/Documents/phaser/src/pixi/display/DisplayObjectContainer.js -* @sourceline 410 +* @sourcefile d:\wamp\www\phaser\src\pixi\display\DisplayObjectContainer.js +* @sourceline 412 */ /** * @description Removes the current stage reference from the container and all of its children. * @method PIXI.DisplayObjectContainer#removeStageReference -* @sourcefile /Users/rich/Documents/phaser/src/pixi/display/DisplayObjectContainer.js -* @sourceline 426 +* @sourcefile d:\wamp\www\phaser\src\pixi\display\DisplayObjectContainer.js +* @sourceline 428 */ /** * @description Renders the object using the WebGL renderer * @method PIXI.DisplayObjectContainer#_renderWebGL * @param {RenderSession} renderSession - * @access private -* @sourcefile /Users/rich/Documents/phaser/src/pixi/display/DisplayObjectContainer.js -* @sourceline 441 +* @sourcefile d:\wamp\www\phaser\src\pixi\display\DisplayObjectContainer.js +* @sourceline 443 */ /** * @description Renders the object using the Canvas renderer * @method PIXI.DisplayObjectContainer#_renderCanvas * @param {RenderSession} renderSession - * @access private -* @sourcefile /Users/rich/Documents/phaser/src/pixi/display/DisplayObjectContainer.js -* @sourceline 499 +* @sourcefile d:\wamp\www\phaser\src\pixi\display\DisplayObjectContainer.js +* @sourceline 501 */ /** * @fileoverview * @author Mat Groves http://matgroves.com/ @Doormat23 -* @sourcefile /Users/rich/Documents/phaser/src/pixi/display/Sprite.js +* @sourcefile d:\wamp\www\phaser\src\pixi\display\Sprite.js * @sourceline 1 */ /** @@ -534,7 +587,7 @@ A sprite can be created directly from an image like this : var sprite = new PIXI.Sprite.fromImage('assets/image.png'); yourStage.addChild(sprite); then obviously don't forget to add it to the stage you have already created -* @sourcefile /Users/rich/Documents/phaser/src/pixi/display/Sprite.js +* @sourcefile d:\wamp\www\phaser\src\pixi\display\Sprite.js * @sourceline 5 */ /** @@ -544,14 +597,14 @@ Setting than anchor to 0.5,0.5 means the textures origin is centered Setting the anchor to 1,1 would mean the textures origin points will be the bottom right corner * @member PIXI.Sprite#anchor * @type {Point} -* @sourcefile /Users/rich/Documents/phaser/src/pixi/display/Sprite.js +* @sourcefile d:\wamp\www\phaser\src\pixi\display\Sprite.js * @sourceline 22 */ /** * @description The texture that the sprite is using * @member PIXI.Sprite#texture * @type {PIXI.Texture} -* @sourcefile /Users/rich/Documents/phaser/src/pixi/display/Sprite.js +* @sourcefile d:\wamp\www\phaser\src\pixi\display\Sprite.js * @sourceline 33 */ /** @@ -559,7 +612,7 @@ Setting the anchor to 1,1 would mean the textures origin points will be the bott * @member PIXI.Sprite#_width * @type {Number} * @access private -* @sourcefile /Users/rich/Documents/phaser/src/pixi/display/Sprite.js +* @sourcefile d:\wamp\www\phaser\src\pixi\display\Sprite.js * @sourceline 41 */ /** @@ -567,7 +620,7 @@ Setting the anchor to 1,1 would mean the textures origin points will be the bott * @member PIXI.Sprite#_height * @type {Number} * @access private -* @sourcefile /Users/rich/Documents/phaser/src/pixi/display/Sprite.js +* @sourcefile d:\wamp\www\phaser\src\pixi\display\Sprite.js * @sourceline 50 */ /** @@ -575,7 +628,7 @@ Setting the anchor to 1,1 would mean the textures origin points will be the bott * @member PIXI.Sprite#tint * @type {Number} * @default 0xFFFFFF -* @sourcefile /Users/rich/Documents/phaser/src/pixi/display/Sprite.js +* @sourcefile d:\wamp\www\phaser\src\pixi\display\Sprite.js * @sourceline 59 */ /** @@ -584,7 +637,7 @@ Setting the anchor to 1,1 would mean the textures origin points will be the bott * @type {Number} * @default -1 * @access private -* @sourcefile /Users/rich/Documents/phaser/src/pixi/display/Sprite.js +* @sourcefile d:\wamp\www\phaser\src\pixi\display\Sprite.js * @sourceline 68 */ /** @@ -592,7 +645,7 @@ Setting the anchor to 1,1 would mean the textures origin points will be the bott * @member PIXI.Sprite#tintedTexture * @type {Canvas} * @default null -* @sourcefile /Users/rich/Documents/phaser/src/pixi/display/Sprite.js +* @sourcefile d:\wamp\www\phaser\src\pixi\display\Sprite.js * @sourceline 78 */ /** @@ -602,7 +655,7 @@ Warning: You cannot have a blend mode and a filter active on the same Sprite. Do * @member PIXI.Sprite#blendMode * @type {Number} * @default PIXI.blendModes.NORMAL; -* @sourcefile /Users/rich/Documents/phaser/src/pixi/display/Sprite.js +* @sourcefile d:\wamp\www\phaser\src\pixi\display\Sprite.js * @sourceline 87 */ /** @@ -610,7 +663,7 @@ Warning: You cannot have a blend mode and a filter active on the same Sprite. Do * @member PIXI.Sprite#shader * @type {PIXI.AbstractFilter} * @default null -* @sourcefile /Users/rich/Documents/phaser/src/pixi/display/Sprite.js +* @sourcefile d:\wamp\www\phaser\src\pixi\display\Sprite.js * @sourceline 98 */ /** @@ -618,21 +671,21 @@ Warning: You cannot have a blend mode and a filter active on the same Sprite. Do * @member PIXI.Sprite#exists * @type {Boolean} * @default true -* @sourcefile /Users/rich/Documents/phaser/src/pixi/display/Sprite.js +* @sourcefile d:\wamp\www\phaser\src\pixi\display\Sprite.js * @sourceline 107 */ /** * @description The width of the sprite, setting this will actually modify the scale to achieve the value set * @member PIXI.Sprite#width * @type {Number} -* @sourcefile /Users/rich/Documents/phaser/src/pixi/display/Sprite.js +* @sourcefile d:\wamp\www\phaser\src\pixi\display\Sprite.js * @sourceline 129 */ /** * @description The height of the sprite, setting this will actually modify the scale to achieve the value set * @member PIXI.Sprite#height * @type {Number} -* @sourcefile /Users/rich/Documents/phaser/src/pixi/display/Sprite.js +* @sourcefile d:\wamp\www\phaser\src\pixi\display\Sprite.js * @sourceline 148 */ /** @@ -641,7 +694,7 @@ texture this Sprite was using. * @method PIXI.Sprite#setTexture * @param {PIXI.Texture} texture - The PIXI texture that is displayed by the sprite * @param {Boolean} [destroy=false] - Call Texture.destroy on the current texture before replacing it with the new one? -* @sourcefile /Users/rich/Documents/phaser/src/pixi/display/Sprite.js +* @sourcefile d:\wamp\www\phaser\src\pixi\display\Sprite.js * @sourceline 167 */ /** @@ -649,7 +702,7 @@ texture this Sprite was using. * @method PIXI.Sprite#onTextureUpdate * @param {} event - * @access private -* @sourcefile /Users/rich/Documents/phaser/src/pixi/display/Sprite.js +* @sourcefile d:\wamp\www\phaser\src\pixi\display\Sprite.js * @sourceline 189 */ /** @@ -665,7 +718,7 @@ on the root most object in this Sprites display list first. * @method PIXI.Sprite#getBounds * @param {Matrix} matrix - the transformation matrix of the sprite * @return {Rectangle} the framing rectangle -* @sourcefile /Users/rich/Documents/phaser/src/pixi/display/Sprite.js +* @sourcefile d:\wamp\www\phaser\src\pixi\display\Sprite.js * @sourceline 203 */ /** @@ -674,7 +727,7 @@ on the root most object in this Sprites display list first. * @param {RenderSession} renderSession - * @param {Matrix} [matrix] - - Optional matrix. If provided the Display Object will be rendered using this matrix, otherwise it will use its worldTransform. * @access private -* @sourcefile /Users/rich/Documents/phaser/src/pixi/display/Sprite.js +* @sourcefile d:\wamp\www\phaser\src\pixi\display\Sprite.js * @sourceline 319 */ /** @@ -683,31 +736,13 @@ on the root most object in this Sprites display list first. * @param {RenderSession} renderSession - * @param {Matrix} [matrix] - - Optional matrix. If provided the Display Object will be rendered using this matrix, otherwise it will use its worldTransform. * @access private -* @sourcefile /Users/rich/Documents/phaser/src/pixi/display/Sprite.js +* @sourcefile d:\wamp\www\phaser\src\pixi\display\Sprite.js * @sourceline 389 */ /** -* @description Helper function that creates a sprite that will contain a texture from the TextureCache based on the frameId - The frame ids are created when a Texture packer file has been loaded -* @method PIXI.Sprite.fromFrame -* @param {String} frameId - The frame Id of the texture in the cache -* @return {PIXI.Sprite} A new Sprite using a texture from the texture cache matching the frameId -* @sourcefile /Users/rich/Documents/phaser/src/pixi/display/Sprite.js -* @sourceline 497 -*/ -/** -* @description Helper function that creates a sprite that will contain a texture based on an image url - If the image is not in the texture cache it will be loaded -* @method PIXI.Sprite.fromImage -* @param {String} imageId - The image url of the texture -* @return {PIXI.Sprite} A new Sprite using a texture from the texture cache matching the image id -* @sourcefile /Users/rich/Documents/phaser/src/pixi/display/Sprite.js -* @sourceline 516 -*/ -/** * @fileoverview * @author Mat Groves http://matgroves.com/ -* @sourcefile /Users/rich/Documents/phaser/src/pixi/display/SpriteBatch.js +* @sourcefile d:\wamp\www\phaser\src\pixi\display\SpriteBatch.js * @sourceline 1 */ /** @@ -727,7 +762,7 @@ And it's extremely easy to use : } And here you have a hundred sprites that will be renderer at the speed of light * @param {PIXI.Texture} texture - -* @sourcefile /Users/rich/Documents/phaser/src/pixi/display/SpriteBatch.js +* @sourcefile d:\wamp\www\phaser\src\pixi\display\SpriteBatch.js * @sourceline 5 */ /** @@ -735,7 +770,7 @@ And here you have a hundred sprites that will be renderer at the speed of light * @method PIXI.SpriteBatch#_renderWebGL * @param {RenderSession} renderSession - * @access private -* @sourcefile /Users/rich/Documents/phaser/src/pixi/display/SpriteBatch.js +* @sourcefile d:\wamp\www\phaser\src\pixi\display\SpriteBatch.js * @sourceline 64 */ /** @@ -743,13 +778,13 @@ And here you have a hundred sprites that will be renderer at the speed of light * @method PIXI.SpriteBatch#_renderCanvas * @param {RenderSession} renderSession - * @access private -* @sourcefile /Users/rich/Documents/phaser/src/pixi/display/SpriteBatch.js +* @sourcefile d:\wamp\www\phaser\src\pixi\display\SpriteBatch.js * @sourceline 96 */ /** * @fileoverview * @author Mat Groves http://matgroves.com/ @Doormat23 -* @sourcefile /Users/rich/Documents/phaser/src/pixi/extras/Rope.js +* @sourcefile d:\wamp\www\phaser\src\pixi\extras\Rope.js * @sourceline 1 */ /** @@ -757,13 +792,13 @@ And here you have a hundred sprites that will be renderer at the speed of light * @augments PIXI.Strip * @param {PIXI.Texture} texture - - The texture to use on the rope. * @param {Array} points - - An array of {PIXI.Point}. -* @sourcefile /Users/rich/Documents/phaser/src/pixi/extras/Rope.js +* @sourcefile d:\wamp\www\phaser\src\pixi\extras\Rope.js * @sourceline 6 */ /** * @fileoverview * @author Mat Groves http://matgroves.com/ -* @sourcefile /Users/rich/Documents/phaser/src/pixi/extras/Strip.js +* @sourcefile d:\wamp\www\phaser\src\pixi\extras\Strip.js * @sourceline 1 */ /** @@ -772,21 +807,21 @@ And here you have a hundred sprites that will be renderer at the speed of light * @param {PIXI.Texture} texture - The texture to use * @param {Number} width - the width * @param {Number} height - the height -* @sourcefile /Users/rich/Documents/phaser/src/pixi/extras/Strip.js +* @sourcefile d:\wamp\www\phaser\src\pixi\extras\Strip.js * @sourceline 5 */ /** * @description The texture of the strip * @member PIXI.Strip#texture * @type {PIXI.Texture} -* @sourcefile /Users/rich/Documents/phaser/src/pixi/extras/Strip.js +* @sourcefile d:\wamp\www\phaser\src\pixi\extras\Strip.js * @sourceline 20 */ /** * @description Whether the strip is dirty or not * @member PIXI.Strip#dirty * @type {Boolean} -* @sourcefile /Users/rich/Documents/phaser/src/pixi/extras/Strip.js +* @sourcefile d:\wamp\www\phaser\src\pixi\extras\Strip.js * @sourceline 43 */ /** @@ -794,14 +829,14 @@ And here you have a hundred sprites that will be renderer at the speed of light * @member PIXI.Strip#blendMode * @type {Number} * @default PIXI.blendModes.NORMAL; -* @sourcefile /Users/rich/Documents/phaser/src/pixi/extras/Strip.js +* @sourcefile d:\wamp\www\phaser\src\pixi\extras\Strip.js * @sourceline 51 */ /** * @description Triangles in canvas mode are automatically antialiased, use this value to force triangles to overlap a bit with each other. * @member PIXI.Strip#canvasPadding * @type {Number} -* @sourcefile /Users/rich/Documents/phaser/src/pixi/extras/Strip.js +* @sourcefile d:\wamp\www\phaser\src\pixi\extras\Strip.js * @sourceline 60 */ /** @@ -809,7 +844,7 @@ And here you have a hundred sprites that will be renderer at the speed of light * @method PIXI.Strip#renderStripFlat * @param {PIXI.Strip} strip - The Strip to render * @access private -* @sourcefile /Users/rich/Documents/phaser/src/pixi/extras/Strip.js +* @sourcefile d:\wamp\www\phaser\src\pixi\extras\Strip.js * @sourceline 344 */ /** @@ -817,7 +852,7 @@ And here you have a hundred sprites that will be renderer at the speed of light * @method PIXI.Strip#onTextureUpdate * @param {} event - * @access private -* @sourcefile /Users/rich/Documents/phaser/src/pixi/extras/Strip.js +* @sourcefile d:\wamp\www\phaser\src\pixi\extras\Strip.js * @sourceline 392 */ /** @@ -825,20 +860,20 @@ And here you have a hundred sprites that will be renderer at the speed of light * @method PIXI.Strip#getBounds * @param {Matrix} matrix - the transformation matrix of the sprite * @return {Rectangle} the framing rectangle -* @sourcefile /Users/rich/Documents/phaser/src/pixi/extras/Strip.js +* @sourcefile d:\wamp\www\phaser\src\pixi\extras\Strip.js * @sourceline 405 */ /** * @description Different drawing buffer modes supported * @member PIXI.Strip. * @type {{TRIANGLE_STRIP: number, TRIANGLES: number}} -* @sourcefile /Users/rich/Documents/phaser/src/pixi/extras/Strip.js +* @sourcefile d:\wamp\www\phaser\src\pixi\extras\Strip.js * @sourceline 462 */ /** * @fileoverview * @author Mat Groves http://matgroves.com/ -* @sourcefile /Users/rich/Documents/phaser/src/pixi/extras/TilingSprite.js +* @sourcefile d:\wamp\www\phaser\src\pixi\extras\TilingSprite.js * @sourceline 1 */ /** @@ -848,42 +883,42 @@ And here you have a hundred sprites that will be renderer at the speed of light * @param {PIXI.Texture} texture - the texture of the tiling sprite * @param {Number} width - the width of the tiling sprite * @param {Number} height - the height of the tiling sprite -* @sourcefile /Users/rich/Documents/phaser/src/pixi/extras/TilingSprite.js +* @sourcefile d:\wamp\www\phaser\src\pixi\extras\TilingSprite.js * @sourceline 5 */ /** * @description The width of the tiling sprite * @member PIXI.TilingSprite#width * @type {Number} -* @sourcefile /Users/rich/Documents/phaser/src/pixi/extras/TilingSprite.js +* @sourcefile d:\wamp\www\phaser\src\pixi\extras\TilingSprite.js * @sourceline 19 */ /** * @description The height of the tiling sprite * @member PIXI.TilingSprite#height * @type {Number} -* @sourcefile /Users/rich/Documents/phaser/src/pixi/extras/TilingSprite.js +* @sourcefile d:\wamp\www\phaser\src\pixi\extras\TilingSprite.js * @sourceline 27 */ /** * @description The scaling of the image that is being tiled * @member PIXI.TilingSprite#tileScale * @type {Point} -* @sourcefile /Users/rich/Documents/phaser/src/pixi/extras/TilingSprite.js +* @sourcefile d:\wamp\www\phaser\src\pixi\extras\TilingSprite.js * @sourceline 35 */ /** * @description A point that represents the scale of the texture object * @member PIXI.TilingSprite#tileScaleOffset * @type {Point} -* @sourcefile /Users/rich/Documents/phaser/src/pixi/extras/TilingSprite.js +* @sourcefile d:\wamp\www\phaser\src\pixi\extras\TilingSprite.js * @sourceline 43 */ /** * @description The offset position of the image that is being tiled * @member PIXI.TilingSprite#tilePosition * @type {Point} -* @sourcefile /Users/rich/Documents/phaser/src/pixi/extras/TilingSprite.js +* @sourcefile d:\wamp\www\phaser\src\pixi\extras\TilingSprite.js * @sourceline 51 */ /** @@ -891,7 +926,7 @@ And here you have a hundred sprites that will be renderer at the speed of light * @member PIXI.TilingSprite#renderable * @type {Boolean} * @default true -* @sourcefile /Users/rich/Documents/phaser/src/pixi/extras/TilingSprite.js +* @sourcefile d:\wamp\www\phaser\src\pixi\extras\TilingSprite.js * @sourceline 59 */ /** @@ -899,7 +934,7 @@ And here you have a hundred sprites that will be renderer at the speed of light * @member PIXI.TilingSprite#tint * @type {Number} * @default 0xFFFFFF -* @sourcefile /Users/rich/Documents/phaser/src/pixi/extras/TilingSprite.js +* @sourcefile d:\wamp\www\phaser\src\pixi\extras\TilingSprite.js * @sourceline 68 */ /** @@ -907,7 +942,7 @@ And here you have a hundred sprites that will be renderer at the speed of light debug the texture being used. * @member PIXI.TilingSprite#textureDebug * @type {Boolean} -* @sourcefile /Users/rich/Documents/phaser/src/pixi/extras/TilingSprite.js +* @sourcefile d:\wamp\www\phaser\src\pixi\extras\TilingSprite.js * @sourceline 77 */ /** @@ -915,28 +950,28 @@ debug the texture being used. * @member PIXI.TilingSprite#blendMode * @type {Number} * @default PIXI.blendModes.NORMAL; -* @sourcefile /Users/rich/Documents/phaser/src/pixi/extras/TilingSprite.js +* @sourcefile d:\wamp\www\phaser\src\pixi\extras\TilingSprite.js * @sourceline 86 */ /** * @description The CanvasBuffer object that the tiled texture is drawn to. * @member PIXI.TilingSprite#canvasBuffer * @type {PIXICanvasBuffer} -* @sourcefile /Users/rich/Documents/phaser/src/pixi/extras/TilingSprite.js +* @sourcefile d:\wamp\www\phaser\src\pixi\extras\TilingSprite.js * @sourceline 95 */ /** * @description An internal Texture object that holds the tiling texture that was generated from TilingSprite.texture. * @member PIXI.TilingSprite#tilingTexture * @type {PIXITexture} -* @sourcefile /Users/rich/Documents/phaser/src/pixi/extras/TilingSprite.js +* @sourcefile d:\wamp\www\phaser\src\pixi\extras\TilingSprite.js * @sourceline 103 */ /** * @description The Context fill pattern that is used to draw the TilingSprite in Canvas mode only (will be null in WebGL). * @member PIXI.TilingSprite#tilePattern * @type {PIXITexture} -* @sourcefile /Users/rich/Documents/phaser/src/pixi/extras/TilingSprite.js +* @sourcefile d:\wamp\www\phaser\src\pixi\extras\TilingSprite.js * @sourceline 111 */ /** @@ -945,7 +980,7 @@ This is set by the likes of Phaser.LoadTexture.setFrame. * @member PIXI.TilingSprite#refreshTexture * @type {Boolean} * @default true -* @sourcefile /Users/rich/Documents/phaser/src/pixi/extras/TilingSprite.js +* @sourcefile d:\wamp\www\phaser\src\pixi\extras\TilingSprite.js * @sourceline 119 */ /** @@ -953,7 +988,7 @@ This is set by the likes of Phaser.LoadTexture.setFrame. * @method PIXI.TilingSprite#_renderWebGL * @param {RenderSession} renderSession - * @access private -* @sourcefile /Users/rich/Documents/phaser/src/pixi/extras/TilingSprite.js +* @sourcefile d:\wamp\www\phaser\src\pixi\extras\TilingSprite.js * @sourceline 148 */ /** @@ -961,7 +996,7 @@ This is set by the likes of Phaser.LoadTexture.setFrame. * @method PIXI.TilingSprite#_renderCanvas * @param {RenderSession} renderSession - * @access private -* @sourcefile /Users/rich/Documents/phaser/src/pixi/extras/TilingSprite.js +* @sourcefile d:\wamp\www\phaser\src\pixi\extras\TilingSprite.js * @sourceline 216 */ /** @@ -969,41 +1004,41 @@ This is set by the likes of Phaser.LoadTexture.setFrame. * @method PIXI.TilingSprite#onTextureUpdate * @param {} event - * @access private -* @sourcefile /Users/rich/Documents/phaser/src/pixi/extras/TilingSprite.js +* @sourcefile d:\wamp\www\phaser\src\pixi\extras\TilingSprite.js * @sourceline 320 */ /** * @method PIXI.TilingSprite#generateTilingTexture * @param {Boolean} forcePowerOfTwo - Whether we want to force the texture to be a power of two * @param {RenderSession} renderSession - -* @sourcefile /Users/rich/Documents/phaser/src/pixi/extras/TilingSprite.js +* @sourcefile d:\wamp\www\phaser\src\pixi\extras\TilingSprite.js * @sourceline 332 */ /** * @description Returns the framing rectangle of the sprite as a PIXI.Rectangle object * @method PIXI.TilingSprite#getBounds * @return {Rectangle} the framing rectangle -* @sourcefile /Users/rich/Documents/phaser/src/pixi/extras/TilingSprite.js +* @sourcefile d:\wamp\www\phaser\src\pixi\extras\TilingSprite.js * @sourceline 417 */ /** * @description The width of the sprite, setting this will actually modify the scale to achieve the value set * @member PIXI.TilingSprite#width * @type {Number} -* @sourcefile /Users/rich/Documents/phaser/src/pixi/extras/TilingSprite.js +* @sourcefile d:\wamp\www\phaser\src\pixi\extras\TilingSprite.js * @sourceline 517 */ /** * @description The height of the TilingSprite, setting this will actually modify the scale to achieve the value set * @member PIXI.TilingSprite#height * @type {Number} -* @sourcefile /Users/rich/Documents/phaser/src/pixi/extras/TilingSprite.js +* @sourcefile d:\wamp\www\phaser\src\pixi\extras\TilingSprite.js * @sourceline 535 */ /** * @fileoverview * @author Mat Groves http://matgroves.com/ @Doormat23 -* @sourcefile /Users/rich/Documents/phaser/src/pixi/filters/AbstractFilter.js +* @sourcefile d:\wamp\www\phaser\src\pixi\filters\AbstractFilter.js * @sourceline 1 */ /** @@ -1012,7 +1047,7 @@ This is set by the likes of Phaser.LoadTexture.setFrame. If you want to make a custom filter this should be your base class. * @param {Array} fragmentSrc - The fragment source in an array of strings. * @param {Object} uniforms - An object containing the uniforms for this filter. -* @sourcefile /Users/rich/Documents/phaser/src/pixi/filters/AbstractFilter.js +* @sourcefile d:\wamp\www\phaser\src\pixi\filters\AbstractFilter.js * @sourceline 5 */ /** @@ -1021,73 +1056,73 @@ For example the blur filter has two passes blurX and blurY. * @member PIXI.AbstractFilter#passes * @type {Array} * @access private -* @sourcefile /Users/rich/Documents/phaser/src/pixi/filters/AbstractFilter.js +* @sourcefile d:\wamp\www\phaser\src\pixi\filters\AbstractFilter.js * @sourceline 16 */ /** * @member PIXI.AbstractFilter#shaders * @type {Array} * @access private -* @sourcefile /Users/rich/Documents/phaser/src/pixi/filters/AbstractFilter.js +* @sourcefile d:\wamp\www\phaser\src\pixi\filters\AbstractFilter.js * @sourceline 25 */ /** * @member PIXI.AbstractFilter#dirty * @type {Boolean} -* @sourcefile /Users/rich/Documents/phaser/src/pixi/filters/AbstractFilter.js +* @sourcefile d:\wamp\www\phaser\src\pixi\filters\AbstractFilter.js * @sourceline 32 */ /** * @member PIXI.AbstractFilter#padding * @type {Number} -* @sourcefile /Users/rich/Documents/phaser/src/pixi/filters/AbstractFilter.js +* @sourcefile d:\wamp\www\phaser\src\pixi\filters\AbstractFilter.js * @sourceline 38 */ /** * @member PIXI.AbstractFilter#uniforms * @type {Object} * @access private -* @sourcefile /Users/rich/Documents/phaser/src/pixi/filters/AbstractFilter.js +* @sourcefile d:\wamp\www\phaser\src\pixi\filters\AbstractFilter.js * @sourceline 44 */ /** * @member PIXI.AbstractFilter#fragmentSrc * @type {Array} * @access private -* @sourcefile /Users/rich/Documents/phaser/src/pixi/filters/AbstractFilter.js +* @sourcefile d:\wamp\www\phaser\src\pixi\filters\AbstractFilter.js * @sourceline 51 */ /** * @description Syncs the uniforms between the class object and the shaders. * @method PIXI.AbstractFilter#syncUniforms -* @sourcefile /Users/rich/Documents/phaser/src/pixi/filters/AbstractFilter.js +* @sourcefile d:\wamp\www\phaser\src\pixi\filters\AbstractFilter.js * @sourceline 61 */ /** * @fileoverview * @author Mat Groves http://matgroves.com/ @Doormat23 -* @sourcefile /Users/rich/Documents/phaser/src/pixi/primitives/Graphics.js +* @sourcefile d:\wamp\www\phaser\src\pixi\primitives\Graphics.js * @sourceline 1 */ /** * @class PIXI.Graphics * @description The Graphics class contains methods used to draw primitive shapes such as lines, circles and rectangles to the display, and color and fill them. * @augments PIXI.DisplayObjectContainer -* @sourcefile /Users/rich/Documents/phaser/src/pixi/primitives/Graphics.js +* @sourcefile d:\wamp\www\phaser\src\pixi\primitives\Graphics.js * @sourceline 5 */ /** * @description The alpha value used when filling the Graphics object. * @member PIXI.Graphics#fillAlpha * @type {Number} -* @sourcefile /Users/rich/Documents/phaser/src/pixi/primitives/Graphics.js +* @sourcefile d:\wamp\www\phaser\src\pixi\primitives\Graphics.js * @sourceline 18 */ /** * @description The width (thickness) of any lines drawn. * @member PIXI.Graphics#lineWidth * @type {Number} -* @sourcefile /Users/rich/Documents/phaser/src/pixi/primitives/Graphics.js +* @sourcefile d:\wamp\www\phaser\src\pixi\primitives\Graphics.js * @sourceline 26 */ /** @@ -1095,7 +1130,7 @@ For example the blur filter has two passes blurX and blurY. * @member PIXI.Graphics#lineColor * @type {String} * @default 0 -* @sourcefile /Users/rich/Documents/phaser/src/pixi/primitives/Graphics.js +* @sourcefile d:\wamp\www\phaser\src\pixi\primitives\Graphics.js * @sourceline 34 */ /** @@ -1103,7 +1138,7 @@ For example the blur filter has two passes blurX and blurY. * @member PIXI.Graphics#graphicsData * @type {Array} * @access private -* @sourcefile /Users/rich/Documents/phaser/src/pixi/primitives/Graphics.js +* @sourcefile d:\wamp\www\phaser\src\pixi\primitives\Graphics.js * @sourceline 43 */ /** @@ -1111,7 +1146,7 @@ For example the blur filter has two passes blurX and blurY. * @member PIXI.Graphics#tint * @type {Number} * @default 0xFFFFFF -* @sourcefile /Users/rich/Documents/phaser/src/pixi/primitives/Graphics.js +* @sourcefile d:\wamp\www\phaser\src\pixi\primitives\Graphics.js * @sourceline 52 */ /** @@ -1119,7 +1154,7 @@ For example the blur filter has two passes blurX and blurY. * @member PIXI.Graphics#blendMode * @type {Number} * @default PIXI.blendModes.NORMAL; -* @sourcefile /Users/rich/Documents/phaser/src/pixi/primitives/Graphics.js +* @sourcefile d:\wamp\www\phaser\src\pixi\primitives\Graphics.js * @sourceline 61 */ /** @@ -1127,7 +1162,7 @@ For example the blur filter has two passes blurX and blurY. * @member PIXI.Graphics#currentPath * @type {Object} * @access private -* @sourcefile /Users/rich/Documents/phaser/src/pixi/primitives/Graphics.js +* @sourcefile d:\wamp\www\phaser\src\pixi\primitives\Graphics.js * @sourceline 70 */ /** @@ -1135,21 +1170,21 @@ For example the blur filter has two passes blurX and blurY. * @member PIXI.Graphics#_webGL * @type {Array} * @access private -* @sourcefile /Users/rich/Documents/phaser/src/pixi/primitives/Graphics.js +* @sourcefile d:\wamp\www\phaser\src\pixi\primitives\Graphics.js * @sourceline 79 */ /** * @description Whether this shape is being used as a mask. * @member PIXI.Graphics#isMask * @type {Boolean} -* @sourcefile /Users/rich/Documents/phaser/src/pixi/primitives/Graphics.js +* @sourcefile d:\wamp\www\phaser\src\pixi\primitives\Graphics.js * @sourceline 88 */ /** * @description The bounds' padding used for bounds calculation. * @member PIXI.Graphics#boundsPadding * @type {Number} -* @sourcefile /Users/rich/Documents/phaser/src/pixi/primitives/Graphics.js +* @sourcefile d:\wamp\www\phaser\src\pixi\primitives\Graphics.js * @sourceline 96 */ /** @@ -1157,7 +1192,7 @@ For example the blur filter has two passes blurX and blurY. * @member PIXI.Graphics#dirty * @type {Boolean} * @access private -* @sourcefile /Users/rich/Documents/phaser/src/pixi/primitives/Graphics.js +* @sourcefile d:\wamp\www\phaser\src\pixi\primitives\Graphics.js * @sourceline 106 */ /** @@ -1165,7 +1200,7 @@ For example the blur filter has two passes blurX and blurY. * @member PIXI.Graphics#webGLDirty * @type {Boolean} * @access private -* @sourcefile /Users/rich/Documents/phaser/src/pixi/primitives/Graphics.js +* @sourcefile d:\wamp\www\phaser\src\pixi\primitives\Graphics.js * @sourceline 115 */ /** @@ -1173,7 +1208,7 @@ For example the blur filter has two passes blurX and blurY. * @member PIXI.Graphics#cachedSpriteDirty * @type {Boolean} * @access private -* @sourcefile /Users/rich/Documents/phaser/src/pixi/primitives/Graphics.js +* @sourcefile d:\wamp\www\phaser\src\pixi\primitives\Graphics.js * @sourceline 124 */ /** @@ -1183,7 +1218,7 @@ For example the blur filter has two passes blurX and blurY. * @param {Number} color - color of the line to draw, will update the objects stored style * @param {Number} alpha - alpha of the line to draw, will update the objects stored style * @return {PIXI.Graphics} -* @sourcefile /Users/rich/Documents/phaser/src/pixi/primitives/Graphics.js +* @sourcefile d:\wamp\www\phaser\src\pixi\primitives\Graphics.js * @sourceline 139 */ /** @@ -1192,7 +1227,7 @@ For example the blur filter has two passes blurX and blurY. * @param {Number} x - the X coordinate to move to * @param {Number} y - the Y coordinate to move to * @return {PIXI.Graphics} -* @sourcefile /Users/rich/Documents/phaser/src/pixi/primitives/Graphics.js +* @sourcefile d:\wamp\www\phaser\src\pixi\primitives\Graphics.js * @sourceline 173 */ /** @@ -1202,7 +1237,7 @@ The current drawing position is then set to (x, y). * @param {Number} x - the X coordinate to draw to * @param {Number} y - the Y coordinate to draw to * @return {PIXI.Graphics} -* @sourcefile /Users/rich/Documents/phaser/src/pixi/primitives/Graphics.js +* @sourcefile d:\wamp\www\phaser\src\pixi\primitives\Graphics.js * @sourceline 188 */ /** @@ -1214,8 +1249,8 @@ Based on: https://stackoverflow.com/questions/785097/how-do-i-implement-a-bezier * @param {Number} toX - Destination point x * @param {Number} toY - Destination point y * @return {PIXI.Graphics} -* @sourcefile /Users/rich/Documents/phaser/src/pixi/primitives/Graphics.js -* @sourceline 210 +* @sourcefile d:\wamp\www\phaser\src\pixi\primitives\Graphics.js +* @sourceline 211 */ /** * @description Calculate the points for a bezier curve and then draws it. @@ -1227,8 +1262,8 @@ Based on: https://stackoverflow.com/questions/785097/how-do-i-implement-a-bezier * @param {Number} toX - Destination point x * @param {Number} toY - Destination point y * @return {PIXI.Graphics} -* @sourcefile /Users/rich/Documents/phaser/src/pixi/primitives/Graphics.js -* @sourceline 264 +* @sourcefile d:\wamp\www\phaser\src\pixi\primitives\Graphics.js +* @sourceline 266 */ /** * @description The arc method creates an arc/curve (used to create circles, or parts of circles). @@ -1241,8 +1276,8 @@ Based on: https://stackoverflow.com/questions/785097/how-do-i-implement-a-bezier * @param {Boolean} anticlockwise - Optional. Specifies whether the drawing should be counterclockwise or clockwise. False is default, and indicates clockwise, while true indicates counter-clockwise. * @param {Number} segments - Optional. The number of segments to use when calculating the arc. The default is 40. If you need more fidelity use a higher number. * @return {PIXI.Graphics} -* @sourcefile /Users/rich/Documents/phaser/src/pixi/primitives/Graphics.js -* @sourceline 391 +* @sourcefile d:\wamp\www\phaser\src\pixi\primitives\Graphics.js +* @sourceline 395 */ /** * @description Specifies a simple one-color fill that subsequent calls to other Graphics methods @@ -1251,15 +1286,15 @@ Based on: https://stackoverflow.com/questions/785097/how-do-i-implement-a-bezier * @param {Number} color - the color of the fill * @param {Number} alpha - the alpha of the fill * @return {PIXI.Graphics} -* @sourcefile /Users/rich/Documents/phaser/src/pixi/primitives/Graphics.js -* @sourceline 476 +* @sourcefile d:\wamp\www\phaser\src\pixi\primitives\Graphics.js +* @sourceline 481 */ /** * @description Applies a fill to the lines and shapes that were added since the last call to the beginFill() method. * @method PIXI.Graphics#endFill * @return {PIXI.Graphics} -* @sourcefile /Users/rich/Documents/phaser/src/pixi/primitives/Graphics.js -* @sourceline 504 +* @sourcefile d:\wamp\www\phaser\src\pixi\primitives\Graphics.js +* @sourceline 509 */ /** * @method PIXI.Graphics#drawRect @@ -1268,8 +1303,8 @@ Based on: https://stackoverflow.com/questions/785097/how-do-i-implement-a-bezier * @param {Number} width - The width of the rectangle * @param {Number} height - The height of the rectangle * @return {PIXI.Graphics} -* @sourcefile /Users/rich/Documents/phaser/src/pixi/primitives/Graphics.js -* @sourceline 519 +* @sourcefile d:\wamp\www\phaser\src\pixi\primitives\Graphics.js +* @sourceline 524 */ /** * @method PIXI.Graphics#drawRoundedRect @@ -1278,8 +1313,8 @@ Based on: https://stackoverflow.com/questions/785097/how-do-i-implement-a-bezier * @param {Number} width - The width of the rectangle * @param {Number} height - The height of the rectangle * @param {Number} radius - Radius of the rectangle corners. In WebGL this must be a value between 0 and 9. -* @sourcefile /Users/rich/Documents/phaser/src/pixi/primitives/Graphics.js -* @sourceline 535 +* @sourcefile d:\wamp\www\phaser\src\pixi\primitives\Graphics.js +* @sourceline 540 */ /** * @description Draws a circle. @@ -1288,8 +1323,8 @@ Based on: https://stackoverflow.com/questions/785097/how-do-i-implement-a-bezier * @param {Number} y - The Y coordinate of the center of the circle * @param {Number} diameter - The diameter of the circle * @return {PIXI.Graphics} -* @sourcefile /Users/rich/Documents/phaser/src/pixi/primitives/Graphics.js -* @sourceline 550 +* @sourcefile d:\wamp\www\phaser\src\pixi\primitives\Graphics.js +* @sourceline 555 */ /** * @description Draws an ellipse. @@ -1299,23 +1334,23 @@ Based on: https://stackoverflow.com/questions/785097/how-do-i-implement-a-bezier * @param {Number} width - The half width of the ellipse * @param {Number} height - The half height of the ellipse * @return {PIXI.Graphics} -* @sourcefile /Users/rich/Documents/phaser/src/pixi/primitives/Graphics.js -* @sourceline 566 +* @sourcefile d:\wamp\www\phaser\src\pixi\primitives\Graphics.js +* @sourceline 571 */ /** * @description Draws a polygon using the given path. * @method PIXI.Graphics#drawPolygon * @param {(Array|PhaserPolygon)} path - The path data used to construct the polygon. Can either be an array of points or a Phaser.Polygon object. * @return {PIXI.Graphics} -* @sourcefile /Users/rich/Documents/phaser/src/pixi/primitives/Graphics.js -* @sourceline 583 +* @sourcefile d:\wamp\www\phaser\src\pixi\primitives\Graphics.js +* @sourceline 588 */ /** * @description Clears the graphics that were drawn to this Graphics object, and resets fill and line style settings. * @method PIXI.Graphics#clear * @return {PIXI.Graphics} -* @sourcefile /Users/rich/Documents/phaser/src/pixi/primitives/Graphics.js -* @sourceline 618 +* @sourcefile d:\wamp\www\phaser\src\pixi\primitives\Graphics.js +* @sourceline 623 */ /** * @description Useful function that returns a texture of the graphics object that can then be used to create sprites @@ -1325,66 +1360,66 @@ This can be quite useful if your geometry is complicated and needs to be reused * @param {Number} [scaleMode=0] - Should be one of the PIXI.scaleMode consts * @param {Number} [padding=0] - Add optional extra padding to the generated texture (default 0) * @return {PIXI.Texture} a texture of the graphics object -* @sourcefile /Users/rich/Documents/phaser/src/pixi/primitives/Graphics.js -* @sourceline 636 +* @sourcefile d:\wamp\www\phaser\src\pixi\primitives\Graphics.js +* @sourceline 643 */ /** * @description Renders the object using the WebGL renderer * @method PIXI.Graphics#_renderWebGL * @param {RenderSession} renderSession - * @access private -* @sourcefile /Users/rich/Documents/phaser/src/pixi/primitives/Graphics.js -* @sourceline 674 +* @sourcefile d:\wamp\www\phaser\src\pixi\primitives\Graphics.js +* @sourceline 679 */ /** * @description Renders the object using the Canvas renderer * @method PIXI.Graphics#_renderCanvas * @param {RenderSession} renderSession - * @access private -* @sourcefile /Users/rich/Documents/phaser/src/pixi/primitives/Graphics.js -* @sourceline 753 +* @sourcefile d:\wamp\www\phaser\src\pixi\primitives\Graphics.js +* @sourceline 758 */ /** * @description Retrieves the bounds of the graphic shape as a rectangle object * @method PIXI.Graphics#getBounds * @return {Rectangle} the rectangular bounding area -* @sourcefile /Users/rich/Documents/phaser/src/pixi/primitives/Graphics.js -* @sourceline 832 +* @sourcefile d:\wamp\www\phaser\src\pixi\primitives\Graphics.js +* @sourceline 837 */ /** * @description Update the bounds of the object * @method PIXI.Graphics#updateLocalBounds -* @sourcefile /Users/rich/Documents/phaser/src/pixi/primitives/Graphics.js -* @sourceline 955 +* @sourcefile d:\wamp\www\phaser\src\pixi\primitives\Graphics.js +* @sourceline 960 */ /** * @description Generates the cached sprite when the sprite has cacheAsBitmap = true * @method PIXI.Graphics#_generateCachedSprite * @access private -* @sourcefile /Users/rich/Documents/phaser/src/pixi/primitives/Graphics.js -* @sourceline 1067 +* @sourcefile d:\wamp\www\phaser\src\pixi\primitives\Graphics.js +* @sourceline 1072 */ /** * @description Updates texture size based on canvas size * @method PIXI.Graphics#updateCachedSpriteTexture * @access private -* @sourcefile /Users/rich/Documents/phaser/src/pixi/primitives/Graphics.js -* @sourceline 1107 +* @sourcefile d:\wamp\www\phaser\src\pixi\primitives\Graphics.js +* @sourceline 1112 */ /** * @description Destroys a previous cached sprite. * @method PIXI.Graphics#destroyCachedSprite -* @sourcefile /Users/rich/Documents/phaser/src/pixi/primitives/Graphics.js -* @sourceline 1131 +* @sourcefile d:\wamp\www\phaser\src\pixi\primitives\Graphics.js +* @sourceline 1136 */ /** * @description Draws the given shape to this Graphics object. Can be any of Circle, Rectangle, Ellipse, Line or Polygon. * @method PIXI.Graphics#drawShape * @param {(Circle|Rectangle|Ellipse|Line|Polygon)} shape - The Shape object to draw. * @return {PIXI.GraphicsData} The generated GraphicsData object. -* @sourcefile /Users/rich/Documents/phaser/src/pixi/primitives/Graphics.js -* @sourceline 1142 +* @sourcefile d:\wamp\www\phaser\src\pixi\primitives\Graphics.js +* @sourceline 1147 */ /** * @description When cacheAsBitmap is set to true the graphics object will be rendered as if it was a sprite. @@ -1395,13 +1430,13 @@ This is not recommended if you are constantly redrawing the graphics element. * @type {Boolean} * @default false * @access private -* @sourcefile /Users/rich/Documents/phaser/src/pixi/primitives/Graphics.js -* @sourceline 1184 +* @sourcefile d:\wamp\www\phaser\src\pixi\primitives\Graphics.js +* @sourceline 1192 */ /** * @class PIXI.GraphicsData * @description A GraphicsData object. -* @sourcefile /Users/rich/Documents/phaser/src/pixi/primitives/GraphicsData.js +* @sourcefile d:\wamp\www\phaser\src\pixi\primitives\GraphicsData.js * @sourceline 1 */ /** @@ -1414,12 +1449,12 @@ This is not recommended if you are constantly redrawing the graphics element. * @param {Number} fillAlpha - the alpha of the fill * @param {Boolean} fill - whether or not the shape is filled with a colour * @param {(Circle|Rectangle|Ellipse|Line|Polygon)} shape - The shape object to draw. -* @sourcefile /Users/rich/Documents/phaser/src/pixi/primitives/GraphicsData.js +* @sourcefile d:\wamp\www\phaser\src\pixi\primitives\GraphicsData.js * @sourceline 23 */ /** * @fileoverview Creates a new GraphicsData object with the same values as this one. -* @sourcefile /Users/rich/Documents/phaser/src/pixi/primitives/GraphicsData.js +* @sourcefile d:\wamp\www\phaser\src\pixi\primitives\GraphicsData.js * @sourceline 93 */ /** @@ -1427,7 +1462,7 @@ This is not recommended if you are constantly redrawing the graphics element. * @description Creates a Canvas element of the given size. * @param {Number} width - the width for the newly created canvas * @param {Number} height - the height for the newly created canvas -* @sourcefile /Users/rich/Documents/phaser/src/pixi/renderers/canvas/utils/CanvasBuffer.js +* @sourcefile d:\wamp\www\phaser\src\pixi\renderers\canvas\utils\CanvasBuffer.js * @sourceline 5 */ @@ -1435,35 +1470,35 @@ This is not recommended if you are constantly redrawing the graphics element. * @description The width of the Canvas in pixels. * @member PIXI.CanvasBuffer#width * @type {Number} -* @sourcefile /Users/rich/Documents/phaser/src/pixi/renderers/canvas/utils/CanvasBuffer.js +* @sourcefile d:\wamp\www\phaser\src\pixi\renderers\canvas\utils\CanvasBuffer.js * @sourceline 15 */ /** * @description The height of the Canvas in pixels. * @member PIXI.CanvasBuffer#height * @type {Number} -* @sourcefile /Users/rich/Documents/phaser/src/pixi/renderers/canvas/utils/CanvasBuffer.js +* @sourcefile d:\wamp\www\phaser\src\pixi\renderers\canvas\utils\CanvasBuffer.js * @sourceline 23 */ /** * @description The Canvas object that belongs to this CanvasBuffer. * @member PIXI.CanvasBuffer#canvas * @type {HTMLCanvasElement} -* @sourcefile /Users/rich/Documents/phaser/src/pixi/renderers/canvas/utils/CanvasBuffer.js +* @sourcefile d:\wamp\www\phaser\src\pixi\renderers\canvas\utils\CanvasBuffer.js * @sourceline 31 */ /** * @description A CanvasRenderingContext2D object representing a two-dimensional rendering context. * @member PIXI.CanvasBuffer#context * @type {CanvasRenderingContext2D} -* @sourcefile /Users/rich/Documents/phaser/src/pixi/renderers/canvas/utils/CanvasBuffer.js +* @sourcefile d:\wamp\www\phaser\src\pixi\renderers\canvas\utils\CanvasBuffer.js * @sourceline 39 */ /** * @description Clears the canvas that was created by the CanvasBuffer class. * @method PIXI.CanvasBuffer#clear * @access private -* @sourcefile /Users/rich/Documents/phaser/src/pixi/renderers/canvas/utils/CanvasBuffer.js +* @sourcefile d:\wamp\www\phaser\src\pixi\renderers\canvas\utils\CanvasBuffer.js * @sourceline 53 */ /** @@ -1471,25 +1506,25 @@ This is not recommended if you are constantly redrawing the graphics element. * @method PIXI.CanvasBuffer#resize * @param {Number} width - the new width of the canvas * @param {Number} height - the new height of the canvas -* @sourcefile /Users/rich/Documents/phaser/src/pixi/renderers/canvas/utils/CanvasBuffer.js +* @sourcefile d:\wamp\www\phaser\src\pixi\renderers\canvas\utils\CanvasBuffer.js * @sourceline 65 */ /** * @description Frees the canvas up for use again. * @method PIXI.CanvasBuffer#destroy -* @sourcefile /Users/rich/Documents/phaser/src/pixi/renderers/canvas/utils/CanvasBuffer.js +* @sourcefile d:\wamp\www\phaser\src\pixi\renderers\canvas\utils\CanvasBuffer.js * @sourceline 78 */ /** * @fileoverview * @author Mat Groves http://matgroves.com/ @Doormat23 -* @sourcefile /Users/rich/Documents/phaser/src/pixi/renderers/canvas/utils/CanvasMaskManager.js +* @sourcefile d:\wamp\www\phaser\src\pixi\renderers\canvas\utils\CanvasMaskManager.js * @sourceline 1 */ /** * @class PIXI.CanvasMaskManager * @description A set of functions used to handle masking. -* @sourcefile /Users/rich/Documents/phaser/src/pixi/renderers/canvas/utils/CanvasMaskManager.js +* @sourcefile d:\wamp\www\phaser\src\pixi\renderers\canvas\utils\CanvasMaskManager.js * @sourceline 5 */ /** @@ -1497,26 +1532,26 @@ This is not recommended if you are constantly redrawing the graphics element. * @method PIXI.CanvasMaskManager#pushMask * @param {Object} maskData - the maskData that will be pushed * @param {Object} renderSession - The renderSession whose context will be used for this mask manager. -* @sourcefile /Users/rich/Documents/phaser/src/pixi/renderers/canvas/utils/CanvasMaskManager.js +* @sourcefile d:\wamp\www\phaser\src\pixi\renderers\canvas\utils\CanvasMaskManager.js * @sourceline 17 */ /** * @description Restores the current drawing context to the state it was before the mask was applied. * @method PIXI.CanvasMaskManager#popMask * @param {Object} renderSession - The renderSession whose context will be used for this mask manager. -* @sourcefile /Users/rich/Documents/phaser/src/pixi/renderers/canvas/utils/CanvasMaskManager.js +* @sourcefile d:\wamp\www\phaser\src\pixi\renderers\canvas\utils\CanvasMaskManager.js * @sourceline 49 */ /** * @fileoverview * @author Mat Groves http://matgroves.com/ @Doormat23 -* @sourcefile /Users/rich/Documents/phaser/src/pixi/renderers/canvas/utils/CanvasTinter.js +* @sourcefile d:\wamp\www\phaser\src\pixi\renderers\canvas\utils\CanvasTinter.js * @sourceline 1 */ /** * @class PIXI.CanvasTinter * @description Utility methods for Sprite/Texture tinting. -* @sourcefile /Users/rich/Documents/phaser/src/pixi/renderers/canvas/utils/CanvasTinter.js +* @sourcefile d:\wamp\www\phaser\src\pixi\renderers\canvas\utils\CanvasTinter.js * @sourceline 5 */ /** @@ -1525,7 +1560,7 @@ This is not recommended if you are constantly redrawing the graphics element. * @param {PIXI.Sprite} sprite - the sprite to tint * @param {Number} color - the color to use to tint the sprite with * @return {HTMLCanvasElement} The tinted canvas -* @sourcefile /Users/rich/Documents/phaser/src/pixi/renderers/canvas/utils/CanvasTinter.js +* @sourcefile d:\wamp\www\phaser\src\pixi\renderers\canvas\utils\CanvasTinter.js * @sourceline 13 */ /** @@ -1534,7 +1569,7 @@ This is not recommended if you are constantly redrawing the graphics element. * @param {PIXI.Texture} texture - the texture to tint * @param {Number} color - the color to use to tint the sprite with * @param {HTMLCanvasElement} canvas - the current canvas -* @sourcefile /Users/rich/Documents/phaser/src/pixi/renderers/canvas/utils/CanvasTinter.js +* @sourcefile d:\wamp\www\phaser\src\pixi\renderers\canvas\utils\CanvasTinter.js * @sourceline 31 */ /** @@ -1543,13 +1578,13 @@ This is not recommended if you are constantly redrawing the graphics element. * @param {PIXI.Texture} texture - the texture to tint * @param {Number} color - the color to use to tint the sprite with * @param {HTMLCanvasElement} canvas - the current canvas -* @sourcefile /Users/rich/Documents/phaser/src/pixi/renderers/canvas/utils/CanvasTinter.js +* @sourcefile d:\wamp\www\phaser\src\pixi\renderers\canvas\utils\CanvasTinter.js * @sourceline 65 */ /** * @description Checks if the browser correctly supports putImageData alpha channels. * @method PIXI.CanvasTinter.checkInverseAlpha -* @sourcefile /Users/rich/Documents/phaser/src/pixi/renderers/canvas/utils/CanvasTinter.js +* @sourcefile d:\wamp\www\phaser\src\pixi\renderers\canvas\utils\CanvasTinter.js * @sourceline 113 */ /** @@ -1557,38 +1592,38 @@ This is not recommended if you are constantly redrawing the graphics element. This property is only applicable if using tintWithPerPixel. * @member PIXI.CanvasTinter.canHandleAlpha * @type {Boolean} -* @sourcefile /Users/rich/Documents/phaser/src/pixi/renderers/canvas/utils/CanvasTinter.js +* @sourcefile d:\wamp\www\phaser\src\pixi\renderers\canvas\utils\CanvasTinter.js * @sourceline 146 */ /** * @description Whether or not the Canvas BlendModes are supported, consequently the ability to tint using the multiply method. * @member PIXI.CanvasTinter.canUseMultiply * @type {Boolean} -* @sourcefile /Users/rich/Documents/phaser/src/pixi/renderers/canvas/utils/CanvasTinter.js +* @sourcefile d:\wamp\www\phaser\src\pixi\renderers\canvas\utils\CanvasTinter.js * @sourceline 156 */ /** * @description The tinting method that will be used. * @method PIXI.CanvasTinter.tintMethod -* @sourcefile /Users/rich/Documents/phaser/src/pixi/renderers/canvas/utils/CanvasTinter.js +* @sourcefile d:\wamp\www\phaser\src\pixi\renderers\canvas\utils\CanvasTinter.js * @sourceline 165 */ /** * @fileoverview * @author Mat Groves http://matgroves.com/ @Doormat23 -* @sourcefile /Users/rich/Documents/phaser/src/pixi/renderers/canvas/CanvasGraphics.js +* @sourcefile d:\wamp\www\phaser\src\pixi\renderers\canvas\CanvasGraphics.js * @sourceline 1 */ /** * @class PIXI.CanvasGraphics * @description A set of functions used by the canvas renderer to draw the primitive graphics data. -* @sourcefile /Users/rich/Documents/phaser/src/pixi/renderers/canvas/CanvasGraphics.js +* @sourcefile d:\wamp\www\phaser\src\pixi\renderers\canvas\CanvasGraphics.js * @sourceline 6 */ /** * @fileoverview * @author Mat Groves http://matgroves.com/ @Doormat23 -* @sourcefile /Users/rich/Documents/phaser/src/pixi/renderers/canvas/CanvasRenderer.js +* @sourcefile d:\wamp\www\phaser\src\pixi\renderers\canvas\CanvasRenderer.js * @sourceline 1 */ /** @@ -1596,27 +1631,27 @@ This property is only applicable if using tintWithPerPixel. * @description The CanvasRenderer draws the Stage and all its content onto a 2d canvas. This renderer should be used for browsers that do not support webGL. Don't forget to add the CanvasRenderer.view to your DOM or you will not see anything :) * @param {PhaserGame} game - A reference to the Phaser Game instance -* @sourcefile /Users/rich/Documents/phaser/src/pixi/renderers/canvas/CanvasRenderer.js +* @sourcefile d:\wamp\www\phaser\src\pixi\renderers\canvas\CanvasRenderer.js * @sourceline 5 */ /** * @member PIXI.CanvasRenderer#game - A reference to the Phaser Game instance. * @type {PhaserGame} -* @sourcefile /Users/rich/Documents/phaser/src/pixi/renderers/canvas/CanvasRenderer.js +* @sourcefile d:\wamp\www\phaser\src\pixi\renderers\canvas\CanvasRenderer.js * @sourceline 15 */ /** * @description The renderer type. * @member PIXI.CanvasRenderer#type * @type {Number} -* @sourcefile /Users/rich/Documents/phaser/src/pixi/renderers/canvas/CanvasRenderer.js +* @sourcefile d:\wamp\www\phaser\src\pixi\renderers\canvas\CanvasRenderer.js * @sourceline 25 */ /** * @description The resolution of the canvas. * @member PIXI.CanvasRenderer#resolution * @type {Number} -* @sourcefile /Users/rich/Documents/phaser/src/pixi/renderers/canvas/CanvasRenderer.js +* @sourcefile d:\wamp\www\phaser\src\pixi\renderers\canvas\CanvasRenderer.js * @sourceline 33 */ /** @@ -1627,21 +1662,21 @@ Disable this by setting this to false. For example if your game has a canvas fil * @member PIXI.CanvasRenderer#clearBeforeRender * @type {Boolean} * @default -* @sourcefile /Users/rich/Documents/phaser/src/pixi/renderers/canvas/CanvasRenderer.js +* @sourcefile d:\wamp\www\phaser\src\pixi\renderers\canvas\CanvasRenderer.js * @sourceline 41 */ /** * @description Whether the render view is transparent * @member PIXI.CanvasRenderer#transparent * @type {Boolean} -* @sourcefile /Users/rich/Documents/phaser/src/pixi/renderers/canvas/CanvasRenderer.js +* @sourcefile d:\wamp\www\phaser\src\pixi\renderers\canvas\CanvasRenderer.js * @sourceline 53 */ /** * @description Whether the render view should be resized automatically * @member PIXI.CanvasRenderer#autoResize * @type {Boolean} -* @sourcefile /Users/rich/Documents/phaser/src/pixi/renderers/canvas/CanvasRenderer.js +* @sourcefile d:\wamp\www\phaser\src\pixi\renderers\canvas\CanvasRenderer.js * @sourceline 61 */ /** @@ -1649,7 +1684,7 @@ Disable this by setting this to false. For example if your game has a canvas fil * @member PIXI.CanvasRenderer#width * @type {Number} * @default 800 -* @sourcefile /Users/rich/Documents/phaser/src/pixi/renderers/canvas/CanvasRenderer.js +* @sourcefile d:\wamp\www\phaser\src\pixi\renderers\canvas\CanvasRenderer.js * @sourceline 69 */ /** @@ -1657,49 +1692,49 @@ Disable this by setting this to false. For example if your game has a canvas fil * @member PIXI.CanvasRenderer#height * @type {Number} * @default 600 -* @sourcefile /Users/rich/Documents/phaser/src/pixi/renderers/canvas/CanvasRenderer.js +* @sourcefile d:\wamp\www\phaser\src\pixi\renderers\canvas\CanvasRenderer.js * @sourceline 78 */ /** * @description The canvas element that everything is drawn to. * @member PIXI.CanvasRenderer#view * @type {HTMLCanvasElement} -* @sourcefile /Users/rich/Documents/phaser/src/pixi/renderers/canvas/CanvasRenderer.js +* @sourcefile d:\wamp\www\phaser\src\pixi\renderers\canvas\CanvasRenderer.js * @sourceline 87 */ /** * @description The canvas 2d context that everything is drawn with * @member PIXI.CanvasRenderer#context * @type {CanvasRenderingContext2D} -* @sourcefile /Users/rich/Documents/phaser/src/pixi/renderers/canvas/CanvasRenderer.js +* @sourcefile d:\wamp\www\phaser\src\pixi\renderers\canvas\CanvasRenderer.js * @sourceline 95 */ /** * @description Boolean flag controlling canvas refresh. * @member PIXI.CanvasRenderer#refresh * @type {Boolean} -* @sourcefile /Users/rich/Documents/phaser/src/pixi/renderers/canvas/CanvasRenderer.js +* @sourcefile d:\wamp\www\phaser\src\pixi\renderers\canvas\CanvasRenderer.js * @sourceline 102 */ /** * @description Internal var. * @member PIXI.CanvasRenderer#count * @type {Number} -* @sourcefile /Users/rich/Documents/phaser/src/pixi/renderers/canvas/CanvasRenderer.js +* @sourcefile d:\wamp\www\phaser\src\pixi\renderers\canvas\CanvasRenderer.js * @sourceline 110 */ /** * @description Instance of a PIXI.CanvasMaskManager, handles masking when using the canvas renderer * @member PIXI.CanvasRenderer#CanvasMaskManager * @type {PIXI.CanvasMaskManager} -* @sourcefile /Users/rich/Documents/phaser/src/pixi/renderers/canvas/CanvasRenderer.js +* @sourcefile d:\wamp\www\phaser\src\pixi\renderers\canvas\CanvasRenderer.js * @sourceline 118 */ /** * @description The render session is just a bunch of parameter used for rendering * @member PIXI.CanvasRenderer#renderSession * @type {Object} -* @sourcefile /Users/rich/Documents/phaser/src/pixi/renderers/canvas/CanvasRenderer.js +* @sourcefile d:\wamp\www\phaser\src\pixi\renderers\canvas\CanvasRenderer.js * @sourceline 125 */ @@ -1707,14 +1742,14 @@ Disable this by setting this to false. For example if your game has a canvas fil * @description Renders the Stage to this canvas view * @method PIXI.CanvasRenderer#render * @param {Stage} stage - the Stage element to be rendered -* @sourcefile /Users/rich/Documents/phaser/src/pixi/renderers/canvas/CanvasRenderer.js +* @sourcefile d:\wamp\www\phaser\src\pixi\renderers\canvas\CanvasRenderer.js * @sourceline 152 */ /** * @description Removes everything from the renderer and optionally removes the Canvas DOM element. * @method PIXI.CanvasRenderer#destroy * @param {Boolean} [removeView=true] - Removes the Canvas element from the DOM. -* @sourcefile /Users/rich/Documents/phaser/src/pixi/renderers/canvas/CanvasRenderer.js +* @sourcefile d:\wamp\www\phaser\src\pixi\renderers\canvas\CanvasRenderer.js * @sourceline 193 */ /** @@ -1722,193 +1757,193 @@ Disable this by setting this to false. For example if your game has a canvas fil * @method PIXI.CanvasRenderer#resize * @param {Number} width - the new width of the canvas view * @param {Number} height - the new height of the canvas view -* @sourcefile /Users/rich/Documents/phaser/src/pixi/renderers/canvas/CanvasRenderer.js +* @sourcefile d:\wamp\www\phaser\src\pixi\renderers\canvas\CanvasRenderer.js * @sourceline 215 */ /** * @description Renders a display object * @method PIXI.CanvasRenderer#renderDisplayObject -* @param {PIXI.DisplayObject} displayObject - The displayObject to render +* @param {DisplayObject} displayObject - The displayObject to render * @param {CanvasRenderingContext2D} context - the context 2d method of the canvas * @param {Matrix} [matrix] - Optional matrix to apply to the display object before rendering. * @access private -* @sourcefile /Users/rich/Documents/phaser/src/pixi/renderers/canvas/CanvasRenderer.js +* @sourcefile d:\wamp\www\phaser\src\pixi\renderers\canvas\CanvasRenderer.js * @sourceline 243 */ /** * @description Maps Pixi blend modes to canvas blend modes. * @method PIXI.CanvasRenderer#mapBlendModes * @access private -* @sourcefile /Users/rich/Documents/phaser/src/pixi/renderers/canvas/CanvasRenderer.js +* @sourcefile d:\wamp\www\phaser\src\pixi\renderers\canvas\CanvasRenderer.js * @sourceline 260 */ /** * @fileoverview * @author Mat Groves http://matgroves.com/ @Doormat23 -* @sourcefile /Users/rich/Documents/phaser/src/pixi/renderers/webgl/shaders/ComplexPrimitiveShader.js +* @sourcefile d:\wamp\www\phaser\src\pixi\renderers\webgl\shaders\ComplexPrimitiveShader.js * @sourceline 1 */ /** * @class PIXI.ComplexPrimitiveShader * @param {WebGLContext} gl - the current WebGL drawing context -* @sourcefile /Users/rich/Documents/phaser/src/pixi/renderers/webgl/shaders/ComplexPrimitiveShader.js +* @sourcefile d:\wamp\www\phaser\src\pixi\renderers\webgl\shaders\ComplexPrimitiveShader.js * @sourceline 5 */ /** * @member PIXI.ComplexPrimitiveShader#_UID * @type {Number} * @access private -* @sourcefile /Users/rich/Documents/phaser/src/pixi/renderers/webgl/shaders/ComplexPrimitiveShader.js +* @sourcefile d:\wamp\www\phaser\src\pixi\renderers\webgl\shaders\ComplexPrimitiveShader.js * @sourceline 12 */ /** * @member PIXI.ComplexPrimitiveShader#gl * @type {WebGLContext} -* @sourcefile /Users/rich/Documents/phaser/src/pixi/renderers/webgl/shaders/ComplexPrimitiveShader.js +* @sourcefile d:\wamp\www\phaser\src\pixi\renderers\webgl\shaders\ComplexPrimitiveShader.js * @sourceline 19 */ /** * @description The WebGL program. * @member PIXI.ComplexPrimitiveShader#program * @type {} -* @sourcefile /Users/rich/Documents/phaser/src/pixi/renderers/webgl/shaders/ComplexPrimitiveShader.js +* @sourcefile d:\wamp\www\phaser\src\pixi\renderers\webgl\shaders\ComplexPrimitiveShader.js * @sourceline 25 */ /** * @description The fragment shader. * @member PIXI.ComplexPrimitiveShader#fragmentSrc * @type {Array} -* @sourcefile /Users/rich/Documents/phaser/src/pixi/renderers/webgl/shaders/ComplexPrimitiveShader.js +* @sourcefile d:\wamp\www\phaser\src\pixi\renderers\webgl\shaders\ComplexPrimitiveShader.js * @sourceline 32 */ /** * @description The vertex shader. * @member PIXI.ComplexPrimitiveShader#vertexSrc * @type {Array} -* @sourcefile /Users/rich/Documents/phaser/src/pixi/renderers/webgl/shaders/ComplexPrimitiveShader.js +* @sourcefile d:\wamp\www\phaser\src\pixi\renderers\webgl\shaders\ComplexPrimitiveShader.js * @sourceline 48 */ /** * @description Initialises the shader. * @method PIXI.ComplexPrimitiveShader#init -* @sourcefile /Users/rich/Documents/phaser/src/pixi/renderers/webgl/shaders/ComplexPrimitiveShader.js +* @sourcefile d:\wamp\www\phaser\src\pixi\renderers\webgl\shaders\ComplexPrimitiveShader.js * @sourceline 79 */ /** * @description Destroys the shader. * @method PIXI.ComplexPrimitiveShader#destroy -* @sourcefile /Users/rich/Documents/phaser/src/pixi/renderers/webgl/shaders/ComplexPrimitiveShader.js +* @sourcefile d:\wamp\www\phaser\src\pixi\renderers\webgl\shaders\ComplexPrimitiveShader.js * @sourceline 110 */ /** * @fileoverview * @author Mat Groves http://matgroves.com/ @Doormat23 -* @sourcefile /Users/rich/Documents/phaser/src/pixi/renderers/webgl/shaders/PixiFastShader.js +* @sourcefile d:\wamp\www\phaser\src\pixi\renderers\webgl\shaders\PixiFastShader.js * @sourceline 1 */ /** * @class PIXI.PixiFastShader * @param {WebGLContext} gl - the current WebGL drawing context -* @sourcefile /Users/rich/Documents/phaser/src/pixi/renderers/webgl/shaders/PixiFastShader.js +* @sourcefile d:\wamp\www\phaser\src\pixi\renderers\webgl\shaders\PixiFastShader.js * @sourceline 5 */ /** * @member PIXI.PixiFastShader#_UID * @type {Number} * @access private -* @sourcefile /Users/rich/Documents/phaser/src/pixi/renderers/webgl/shaders/PixiFastShader.js +* @sourcefile d:\wamp\www\phaser\src\pixi\renderers\webgl\shaders\PixiFastShader.js * @sourceline 12 */ /** * @member PIXI.PixiFastShader#gl * @type {WebGLContext} -* @sourcefile /Users/rich/Documents/phaser/src/pixi/renderers/webgl/shaders/PixiFastShader.js +* @sourcefile d:\wamp\www\phaser\src\pixi\renderers\webgl\shaders\PixiFastShader.js * @sourceline 19 */ /** * @description The WebGL program. * @member PIXI.PixiFastShader#program * @type {} -* @sourcefile /Users/rich/Documents/phaser/src/pixi/renderers/webgl/shaders/PixiFastShader.js +* @sourcefile d:\wamp\www\phaser\src\pixi\renderers\webgl\shaders\PixiFastShader.js * @sourceline 25 */ /** * @description The fragment shader. * @member PIXI.PixiFastShader#fragmentSrc * @type {Array} -* @sourcefile /Users/rich/Documents/phaser/src/pixi/renderers/webgl/shaders/PixiFastShader.js +* @sourcefile d:\wamp\www\phaser\src\pixi\renderers\webgl\shaders\PixiFastShader.js * @sourceline 32 */ /** * @description The vertex shader. * @member PIXI.PixiFastShader#vertexSrc * @type {Array} -* @sourcefile /Users/rich/Documents/phaser/src/pixi/renderers/webgl/shaders/PixiFastShader.js +* @sourcefile d:\wamp\www\phaser\src\pixi\renderers\webgl\shaders\PixiFastShader.js * @sourceline 47 */ /** * @description A local texture counter for multi-texture shaders. * @member PIXI.PixiFastShader#textureCount * @type {Number} -* @sourcefile /Users/rich/Documents/phaser/src/pixi/renderers/webgl/shaders/PixiFastShader.js +* @sourcefile d:\wamp\www\phaser\src\pixi\renderers\webgl\shaders\PixiFastShader.js * @sourceline 82 */ /** * @description Initialises the shader. * @method PIXI.PixiFastShader#init -* @sourcefile /Users/rich/Documents/phaser/src/pixi/renderers/webgl/shaders/PixiFastShader.js +* @sourcefile d:\wamp\www\phaser\src\pixi\renderers\webgl\shaders\PixiFastShader.js * @sourceline 94 */ /** * @description Destroys the shader. * @method PIXI.PixiFastShader#destroy -* @sourcefile /Users/rich/Documents/phaser/src/pixi/renderers/webgl/shaders/PixiFastShader.js +* @sourcefile d:\wamp\www\phaser\src\pixi\renderers\webgl\shaders\PixiFastShader.js * @sourceline 143 */ /** * @fileoverview * @author Richard Davey http://www.photonstorm.com @photonstorm -* @sourcefile /Users/rich/Documents/phaser/src/pixi/renderers/webgl/shaders/PixiShader.js +* @sourcefile d:\wamp\www\phaser\src\pixi\renderers\webgl\shaders\PixiShader.js * @sourceline 1 */ /** * @class PIXI.PixiShader * @param {WebGLContext} gl - the current WebGL drawing context -* @sourcefile /Users/rich/Documents/phaser/src/pixi/renderers/webgl/shaders/PixiShader.js +* @sourcefile d:\wamp\www\phaser\src\pixi\renderers\webgl\shaders\PixiShader.js * @sourceline 6 */ /** * @member PIXI.PixiShader#_UID * @type {Number} * @access private -* @sourcefile /Users/rich/Documents/phaser/src/pixi/renderers/webgl/shaders/PixiShader.js +* @sourcefile d:\wamp\www\phaser\src\pixi\renderers\webgl\shaders\PixiShader.js * @sourceline 13 */ /** * @member PIXI.PixiShader#gl * @type {WebGLContext} -* @sourcefile /Users/rich/Documents/phaser/src/pixi/renderers/webgl/shaders/PixiShader.js +* @sourcefile d:\wamp\www\phaser\src\pixi\renderers\webgl\shaders\PixiShader.js * @sourceline 20 */ /** * @description The WebGL program. * @member PIXI.PixiShader#program * @type {} -* @sourcefile /Users/rich/Documents/phaser/src/pixi/renderers/webgl/shaders/PixiShader.js +* @sourcefile d:\wamp\www\phaser\src\pixi\renderers\webgl\shaders\PixiShader.js * @sourceline 26 */ /** * @description The fragment shader. * @member PIXI.PixiShader#fragmentSrc * @type {Array} -* @sourcefile /Users/rich/Documents/phaser/src/pixi/renderers/webgl/shaders/PixiShader.js +* @sourcefile d:\wamp\www\phaser\src\pixi\renderers\webgl\shaders\PixiShader.js * @sourceline 33 */ /** * @description A local texture counter for multi-texture shaders. * @member PIXI.PixiShader#textureCount * @type {Number} -* @sourcefile /Users/rich/Documents/phaser/src/pixi/renderers/webgl/shaders/PixiShader.js +* @sourcefile d:\wamp\www\phaser\src\pixi\renderers\webgl\shaders\PixiShader.js * @sourceline 48 */ /** @@ -1916,14 +1951,14 @@ Disable this by setting this to false. For example if your game has a canvas fil * @member PIXI.PixiShader#firstRun * @type {Boolean} * @access private -* @sourcefile /Users/rich/Documents/phaser/src/pixi/renderers/webgl/shaders/PixiShader.js +* @sourcefile d:\wamp\www\phaser\src\pixi\renderers\webgl\shaders\PixiShader.js * @sourceline 55 */ /** * @description A dirty flag * @member PIXI.PixiShader#dirty * @type {Boolean} -* @sourcefile /Users/rich/Documents/phaser/src/pixi/renderers/webgl/shaders/PixiShader.js +* @sourcefile d:\wamp\www\phaser\src\pixi\renderers\webgl\shaders\PixiShader.js * @sourceline 63 */ /** @@ -1931,13 +1966,13 @@ Disable this by setting this to false. For example if your game has a canvas fil * @member PIXI.PixiShader#attributes * @type {Array} * @access private -* @sourcefile /Users/rich/Documents/phaser/src/pixi/renderers/webgl/shaders/PixiShader.js +* @sourcefile d:\wamp\www\phaser\src\pixi\renderers\webgl\shaders\PixiShader.js * @sourceline 70 */ /** * @description Initialises the shader. * @method PIXI.PixiShader#init -* @sourcefile /Users/rich/Documents/phaser/src/pixi/renderers/webgl/shaders/PixiShader.js +* @sourcefile d:\wamp\www\phaser\src\pixi\renderers\webgl\shaders\PixiShader.js * @sourceline 83 */ /** @@ -1946,154 +1981,154 @@ Disable this by setting this to false. For example if your game has a canvas fil Uniforms are specified in the GLSL_ES Specification: http://www.khronos.org/registry/webgl/specs/latest/1.0/ http://www.khronos.org/registry/gles/specs/2.0/GLSL_ES_Specification_1.0.17.pdf * @method PIXI.PixiShader#initUniforms -* @sourcefile /Users/rich/Documents/phaser/src/pixi/renderers/webgl/shaders/PixiShader.js +* @sourcefile d:\wamp\www\phaser\src\pixi\renderers\webgl\shaders\PixiShader.js * @sourceline 134 */ /** * @description Initialises a Sampler2D uniform (which may only be available later on after initUniforms once the texture has loaded) * @method PIXI.PixiShader#initSampler2D -* @sourcefile /Users/rich/Documents/phaser/src/pixi/renderers/webgl/shaders/PixiShader.js +* @sourcefile d:\wamp\www\phaser\src\pixi\renderers\webgl\shaders\PixiShader.js * @sourceline 208 */ /** * @description Updates the shader uniform values. * @method PIXI.PixiShader#syncUniforms -* @sourcefile /Users/rich/Documents/phaser/src/pixi/renderers/webgl/shaders/PixiShader.js +* @sourcefile d:\wamp\www\phaser\src\pixi\renderers\webgl\shaders\PixiShader.js * @sourceline 283 */ /** * @description Destroys the shader. * @method PIXI.PixiShader#destroy -* @sourcefile /Users/rich/Documents/phaser/src/pixi/renderers/webgl/shaders/PixiShader.js +* @sourcefile d:\wamp\www\phaser\src\pixi\renderers\webgl\shaders\PixiShader.js * @sourceline 351 */ /** * @description The Default Vertex shader source. * @member PIXI.PixiShader#defaultVertexSrc * @type {String} -* @sourcefile /Users/rich/Documents/phaser/src/pixi/renderers/webgl/shaders/PixiShader.js +* @sourcefile d:\wamp\www\phaser\src\pixi\renderers\webgl\shaders\PixiShader.js * @sourceline 365 */ /** * @fileoverview * @author Mat Groves http://matgroves.com/ @Doormat23 -* @sourcefile /Users/rich/Documents/phaser/src/pixi/renderers/webgl/shaders/PrimitiveShader.js +* @sourcefile d:\wamp\www\phaser\src\pixi\renderers\webgl\shaders\PrimitiveShader.js * @sourceline 1 */ /** * @class PIXI.PrimitiveShader * @param {WebGLContext} gl - the current WebGL drawing context -* @sourcefile /Users/rich/Documents/phaser/src/pixi/renderers/webgl/shaders/PrimitiveShader.js +* @sourcefile d:\wamp\www\phaser\src\pixi\renderers\webgl\shaders\PrimitiveShader.js * @sourceline 5 */ /** * @member PIXI.PrimitiveShader#_UID * @type {Number} * @access private -* @sourcefile /Users/rich/Documents/phaser/src/pixi/renderers/webgl/shaders/PrimitiveShader.js +* @sourcefile d:\wamp\www\phaser\src\pixi\renderers\webgl\shaders\PrimitiveShader.js * @sourceline 12 */ /** * @member PIXI.PrimitiveShader#gl * @type {WebGLContext} -* @sourcefile /Users/rich/Documents/phaser/src/pixi/renderers/webgl/shaders/PrimitiveShader.js +* @sourcefile d:\wamp\www\phaser\src\pixi\renderers\webgl\shaders\PrimitiveShader.js * @sourceline 19 */ /** * @description The WebGL program. * @member PIXI.PrimitiveShader#program * @type {} -* @sourcefile /Users/rich/Documents/phaser/src/pixi/renderers/webgl/shaders/PrimitiveShader.js +* @sourcefile d:\wamp\www\phaser\src\pixi\renderers\webgl\shaders\PrimitiveShader.js * @sourceline 25 */ /** * @description The fragment shader. * @member PIXI.PrimitiveShader#fragmentSrc * @type {Array} -* @sourcefile /Users/rich/Documents/phaser/src/pixi/renderers/webgl/shaders/PrimitiveShader.js +* @sourcefile d:\wamp\www\phaser\src\pixi\renderers\webgl\shaders\PrimitiveShader.js * @sourceline 32 */ /** * @description The vertex shader. * @member PIXI.PrimitiveShader#vertexSrc * @type {Array} -* @sourcefile /Users/rich/Documents/phaser/src/pixi/renderers/webgl/shaders/PrimitiveShader.js +* @sourcefile d:\wamp\www\phaser\src\pixi\renderers\webgl\shaders\PrimitiveShader.js * @sourceline 46 */ /** * @description Initialises the shader. * @method PIXI.PrimitiveShader#init -* @sourcefile /Users/rich/Documents/phaser/src/pixi/renderers/webgl/shaders/PrimitiveShader.js +* @sourcefile d:\wamp\www\phaser\src\pixi\renderers\webgl\shaders\PrimitiveShader.js * @sourceline 75 */ /** * @description Destroys the shader. * @method PIXI.PrimitiveShader#destroy -* @sourcefile /Users/rich/Documents/phaser/src/pixi/renderers/webgl/shaders/PrimitiveShader.js +* @sourcefile d:\wamp\www\phaser\src\pixi\renderers\webgl\shaders\PrimitiveShader.js * @sourceline 105 */ /** * @fileoverview * @author Mat Groves http://matgroves.com/ @Doormat23 -* @sourcefile /Users/rich/Documents/phaser/src/pixi/renderers/webgl/shaders/StripShader.js +* @sourcefile d:\wamp\www\phaser\src\pixi\renderers\webgl\shaders\StripShader.js * @sourceline 1 */ /** * @class PIXI.StripShader * @param {WebGLContext} gl - the current WebGL drawing context -* @sourcefile /Users/rich/Documents/phaser/src/pixi/renderers/webgl/shaders/StripShader.js +* @sourcefile d:\wamp\www\phaser\src\pixi\renderers\webgl\shaders\StripShader.js * @sourceline 5 */ /** * @member PIXI.StripShader#_UID * @type {Number} * @access private -* @sourcefile /Users/rich/Documents/phaser/src/pixi/renderers/webgl/shaders/StripShader.js +* @sourcefile d:\wamp\www\phaser\src\pixi\renderers\webgl\shaders\StripShader.js * @sourceline 12 */ /** * @member PIXI.StripShader#gl * @type {WebGLContext} -* @sourcefile /Users/rich/Documents/phaser/src/pixi/renderers/webgl/shaders/StripShader.js +* @sourcefile d:\wamp\www\phaser\src\pixi\renderers\webgl\shaders\StripShader.js * @sourceline 19 */ /** * @description The WebGL program. * @member PIXI.StripShader#program * @type {} -* @sourcefile /Users/rich/Documents/phaser/src/pixi/renderers/webgl/shaders/StripShader.js +* @sourcefile d:\wamp\www\phaser\src\pixi\renderers\webgl\shaders\StripShader.js * @sourceline 25 */ /** * @description The fragment shader. * @member PIXI.StripShader#fragmentSrc * @type {Array} -* @sourcefile /Users/rich/Documents/phaser/src/pixi/renderers/webgl/shaders/StripShader.js +* @sourcefile d:\wamp\www\phaser\src\pixi\renderers\webgl\shaders\StripShader.js * @sourceline 32 */ /** * @description The vertex shader. * @member PIXI.StripShader#vertexSrc * @type {Array} -* @sourcefile /Users/rich/Documents/phaser/src/pixi/renderers/webgl/shaders/StripShader.js +* @sourcefile d:\wamp\www\phaser\src\pixi\renderers\webgl\shaders\StripShader.js * @sourceline 50 */ /** * @description Initialises the shader. * @method PIXI.StripShader#init -* @sourcefile /Users/rich/Documents/phaser/src/pixi/renderers/webgl/shaders/StripShader.js +* @sourcefile d:\wamp\www\phaser\src\pixi\renderers\webgl\shaders\StripShader.js * @sourceline 80 */ /** * @description Destroys the shader. * @method PIXI.StripShader#destroy -* @sourcefile /Users/rich/Documents/phaser/src/pixi/renderers/webgl/shaders/StripShader.js +* @sourcefile d:\wamp\www\phaser\src\pixi\renderers\webgl\shaders\StripShader.js * @sourceline 111 */ /** * @fileoverview * @author Mat Groves http://matgroves.com/ @Doormat23 -* @sourcefile /Users/rich/Documents/phaser/src/pixi/renderers/webgl/utils/FilterTexture.js +* @sourcefile d:\wamp\www\phaser\src\pixi\renderers\webgl\utils\FilterTexture.js * @sourceline 1 */ /** @@ -2102,37 +2137,37 @@ http://www.khronos.org/registry/gles/specs/2.0/GLSL_ES_Specification_1.0.17.pdf * @param {Number} width - the horizontal range of the filter * @param {Number} height - the vertical range of the filter * @param {Number} scaleMode - See {{#crossLink "PIXI/scaleModes:property"}}PIXI.scaleModes{{/crossLink}} for possible values -* @sourcefile /Users/rich/Documents/phaser/src/pixi/renderers/webgl/utils/FilterTexture.js +* @sourcefile d:\wamp\www\phaser\src\pixi\renderers\webgl\utils\FilterTexture.js * @sourceline 5 */ /** * @member PIXI.FilterTexture#gl * @type {WebGLContext} -* @sourcefile /Users/rich/Documents/phaser/src/pixi/renderers/webgl/utils/FilterTexture.js +* @sourcefile d:\wamp\www\phaser\src\pixi\renderers\webgl\utils\FilterTexture.js * @sourceline 15 */ /** * @member PIXI.FilterTexture#frameBuffer * @type {} -* @sourcefile /Users/rich/Documents/phaser/src/pixi/renderers/webgl/utils/FilterTexture.js +* @sourcefile d:\wamp\www\phaser\src\pixi\renderers\webgl\utils\FilterTexture.js * @sourceline 23 */ /** * @member PIXI.FilterTexture#texture * @type {} -* @sourcefile /Users/rich/Documents/phaser/src/pixi/renderers/webgl/utils/FilterTexture.js +* @sourcefile d:\wamp\www\phaser\src\pixi\renderers\webgl\utils\FilterTexture.js * @sourceline 29 */ /** * @member PIXI.FilterTexture#scaleMode * @type {Number} -* @sourcefile /Users/rich/Documents/phaser/src/pixi/renderers/webgl/utils/FilterTexture.js +* @sourcefile d:\wamp\www\phaser\src\pixi\renderers\webgl\utils\FilterTexture.js * @sourceline 35 */ /** * @description Clears the filter texture. * @method PIXI.FilterTexture#clear -* @sourcefile /Users/rich/Documents/phaser/src/pixi/renderers/webgl/utils/FilterTexture.js +* @sourcefile d:\wamp\www\phaser\src\pixi\renderers\webgl\utils\FilterTexture.js * @sourceline 61 */ /** @@ -2140,51 +2175,51 @@ http://www.khronos.org/registry/gles/specs/2.0/GLSL_ES_Specification_1.0.17.pdf * @method PIXI.FilterTexture#resize * @param {Number} width - the new width of the texture * @param {Number} height - the new height of the texture -* @sourcefile /Users/rich/Documents/phaser/src/pixi/renderers/webgl/utils/FilterTexture.js +* @sourcefile d:\wamp\www\phaser\src\pixi\renderers\webgl\utils\FilterTexture.js * @sourceline 74 */ /** * @description Destroys the filter texture. * @method PIXI.FilterTexture#destroy -* @sourcefile /Users/rich/Documents/phaser/src/pixi/renderers/webgl/utils/FilterTexture.js +* @sourcefile d:\wamp\www\phaser\src\pixi\renderers\webgl\utils\FilterTexture.js * @sourceline 97 */ /** * @fileoverview * @author Mat Groves http://matgroves.com/ @Doormat23 -* @sourcefile /Users/rich/Documents/phaser/src/pixi/renderers/webgl/utils/WebGLBlendModeManager.js +* @sourcefile d:\wamp\www\phaser\src\pixi\renderers\webgl\utils\WebGLBlendModeManager.js * @sourceline 1 */ /** * @class PIXI.WebGLBlendModeManager * @param {WebGLContext} gl - the current WebGL drawing context -* @sourcefile /Users/rich/Documents/phaser/src/pixi/renderers/webgl/utils/WebGLBlendModeManager.js +* @sourcefile d:\wamp\www\phaser\src\pixi\renderers\webgl\utils\WebGLBlendModeManager.js * @sourceline 5 */ /** * @member PIXI.WebGLBlendModeManager#currentBlendMode * @type {Number} -* @sourcefile /Users/rich/Documents/phaser/src/pixi/renderers/webgl/utils/WebGLBlendModeManager.js +* @sourcefile d:\wamp\www\phaser\src\pixi\renderers\webgl\utils\WebGLBlendModeManager.js * @sourceline 12 */ /** * @description Sets the WebGL Context. * @method PIXI.WebGLBlendModeManager#setContext * @param {WebGLContext} gl - the current WebGL drawing context -* @sourcefile /Users/rich/Documents/phaser/src/pixi/renderers/webgl/utils/WebGLBlendModeManager.js +* @sourcefile d:\wamp\www\phaser\src\pixi\renderers\webgl\utils\WebGLBlendModeManager.js * @sourceline 21 */ /** * @description Sets-up the given blendMode from WebGL's point of view. * @method PIXI.WebGLBlendModeManager#setBlendMode * @param {Number} blendMode - the blendMode, should be a Pixi const, such as PIXI.BlendModes.ADD -* @sourcefile /Users/rich/Documents/phaser/src/pixi/renderers/webgl/utils/WebGLBlendModeManager.js +* @sourcefile d:\wamp\www\phaser\src\pixi\renderers\webgl\utils\WebGLBlendModeManager.js * @sourceline 32 */ /** * @description Destroys this object. * @method PIXI.WebGLBlendModeManager#destroy -* @sourcefile /Users/rich/Documents/phaser/src/pixi/renderers/webgl/utils/WebGLBlendModeManager.js +* @sourcefile d:\wamp\www\phaser\src\pixi\renderers\webgl\utils\WebGLBlendModeManager.js * @sourceline 54 */ /** @@ -2196,206 +2231,206 @@ for creating the original pixi version! Heavily inspired by LibGDX's WebGLSpriteBatch: https://github.com/libgdx/libgdx/blob/master/gdx/src/com/badlogic/gdx/graphics/g2d/WebGLSpriteBatch.java -* @sourcefile /Users/rich/Documents/phaser/src/pixi/renderers/webgl/utils/WebGLFastSpriteBatch.js +* @sourcefile d:\wamp\www\phaser\src\pixi\renderers\webgl\utils\WebGLFastSpriteBatch.js * @sourceline 1 */ /** * @class PIXI.WebGLFastSpriteBatch -* @sourcefile /Users/rich/Documents/phaser/src/pixi/renderers/webgl/utils/WebGLFastSpriteBatch.js +* @sourcefile d:\wamp\www\phaser\src\pixi\renderers\webgl\utils\WebGLFastSpriteBatch.js * @sourceline 11 */ /** * @member PIXI.WebGLFastSpriteBatch#vertSize * @type {Number} -* @sourcefile /Users/rich/Documents/phaser/src/pixi/renderers/webgl/utils/WebGLFastSpriteBatch.js +* @sourcefile d:\wamp\www\phaser\src\pixi\renderers\webgl\utils\WebGLFastSpriteBatch.js * @sourceline 17 */ /** * @member PIXI.WebGLFastSpriteBatch#maxSize * @type {Number} -* @sourcefile /Users/rich/Documents/phaser/src/pixi/renderers/webgl/utils/WebGLFastSpriteBatch.js +* @sourcefile d:\wamp\www\phaser\src\pixi\renderers\webgl\utils\WebGLFastSpriteBatch.js * @sourceline 23 */ /** * @member PIXI.WebGLFastSpriteBatch#size * @type {Number} -* @sourcefile /Users/rich/Documents/phaser/src/pixi/renderers/webgl/utils/WebGLFastSpriteBatch.js +* @sourcefile d:\wamp\www\phaser\src\pixi\renderers\webgl\utils\WebGLFastSpriteBatch.js * @sourceline 29 */ /** * @description Vertex data * @member PIXI.WebGLFastSpriteBatch#vertices * @type {Float32Array} -* @sourcefile /Users/rich/Documents/phaser/src/pixi/renderers/webgl/utils/WebGLFastSpriteBatch.js +* @sourcefile d:\wamp\www\phaser\src\pixi\renderers\webgl\utils\WebGLFastSpriteBatch.js * @sourceline 41 */ /** * @description Index data * @member PIXI.WebGLFastSpriteBatch#indices * @type {Uint16Array} -* @sourcefile /Users/rich/Documents/phaser/src/pixi/renderers/webgl/utils/WebGLFastSpriteBatch.js +* @sourcefile d:\wamp\www\phaser\src\pixi\renderers\webgl\utils\WebGLFastSpriteBatch.js * @sourceline 48 */ /** * @member PIXI.WebGLFastSpriteBatch#vertexBuffer * @type {Object} -* @sourcefile /Users/rich/Documents/phaser/src/pixi/renderers/webgl/utils/WebGLFastSpriteBatch.js +* @sourcefile d:\wamp\www\phaser\src\pixi\renderers\webgl\utils\WebGLFastSpriteBatch.js * @sourceline 55 */ /** * @member PIXI.WebGLFastSpriteBatch#indexBuffer * @type {Object} -* @sourcefile /Users/rich/Documents/phaser/src/pixi/renderers/webgl/utils/WebGLFastSpriteBatch.js +* @sourcefile d:\wamp\www\phaser\src\pixi\renderers\webgl\utils\WebGLFastSpriteBatch.js * @sourceline 61 */ /** * @member PIXI.WebGLFastSpriteBatch#lastIndexCount * @type {Number} -* @sourcefile /Users/rich/Documents/phaser/src/pixi/renderers/webgl/utils/WebGLFastSpriteBatch.js +* @sourcefile d:\wamp\www\phaser\src\pixi\renderers\webgl\utils\WebGLFastSpriteBatch.js * @sourceline 67 */ /** * @member PIXI.WebGLFastSpriteBatch#drawing * @type {Boolean} -* @sourcefile /Users/rich/Documents/phaser/src/pixi/renderers/webgl/utils/WebGLFastSpriteBatch.js +* @sourcefile d:\wamp\www\phaser\src\pixi\renderers\webgl\utils\WebGLFastSpriteBatch.js * @sourceline 83 */ /** * @member PIXI.WebGLFastSpriteBatch#currentBatchSize * @type {Number} -* @sourcefile /Users/rich/Documents/phaser/src/pixi/renderers/webgl/utils/WebGLFastSpriteBatch.js +* @sourcefile d:\wamp\www\phaser\src\pixi\renderers\webgl\utils\WebGLFastSpriteBatch.js * @sourceline 89 */ /** * @member PIXI.WebGLFastSpriteBatch#currentBaseTexture * @type {PIXI.BaseTexture} -* @sourcefile /Users/rich/Documents/phaser/src/pixi/renderers/webgl/utils/WebGLFastSpriteBatch.js +* @sourcefile d:\wamp\www\phaser\src\pixi\renderers\webgl\utils\WebGLFastSpriteBatch.js * @sourceline 95 */ /** * @member PIXI.WebGLFastSpriteBatch#currentBlendMode * @type {Number} -* @sourcefile /Users/rich/Documents/phaser/src/pixi/renderers/webgl/utils/WebGLFastSpriteBatch.js +* @sourcefile d:\wamp\www\phaser\src\pixi\renderers\webgl\utils\WebGLFastSpriteBatch.js * @sourceline 101 */ /** * @member PIXI.WebGLFastSpriteBatch#renderSession * @type {Object} -* @sourcefile /Users/rich/Documents/phaser/src/pixi/renderers/webgl/utils/WebGLFastSpriteBatch.js +* @sourcefile d:\wamp\www\phaser\src\pixi\renderers\webgl\utils\WebGLFastSpriteBatch.js * @sourceline 107 */ /** * @member PIXI.WebGLFastSpriteBatch#shader * @type {Object} -* @sourcefile /Users/rich/Documents/phaser/src/pixi/renderers/webgl/utils/WebGLFastSpriteBatch.js +* @sourcefile d:\wamp\www\phaser\src\pixi\renderers\webgl\utils\WebGLFastSpriteBatch.js * @sourceline 113 */ /** * @member PIXI.WebGLFastSpriteBatch#matrix * @type {Matrix} -* @sourcefile /Users/rich/Documents/phaser/src/pixi/renderers/webgl/utils/WebGLFastSpriteBatch.js +* @sourcefile d:\wamp\www\phaser\src\pixi\renderers\webgl\utils\WebGLFastSpriteBatch.js * @sourceline 119 */ /** * @description Sets the WebGL Context. * @method PIXI.WebGLFastSpriteBatch#setContext * @param {WebGLContext} gl - the current WebGL drawing context -* @sourcefile /Users/rich/Documents/phaser/src/pixi/renderers/webgl/utils/WebGLFastSpriteBatch.js +* @sourcefile d:\wamp\www\phaser\src\pixi\renderers\webgl\utils\WebGLFastSpriteBatch.js * @sourceline 130 */ /** * @method PIXI.WebGLFastSpriteBatch#begin * @param {PIXI.WebGLSpriteBatch} spriteBatch - * @param {Object} renderSession - -* @sourcefile /Users/rich/Documents/phaser/src/pixi/renderers/webgl/utils/WebGLFastSpriteBatch.js +* @sourcefile d:\wamp\www\phaser\src\pixi\renderers\webgl\utils\WebGLFastSpriteBatch.js * @sourceline 154 */ /** * @method PIXI.WebGLFastSpriteBatch#end -* @sourcefile /Users/rich/Documents/phaser/src/pixi/renderers/webgl/utils/WebGLFastSpriteBatch.js +* @sourcefile d:\wamp\www\phaser\src\pixi\renderers\webgl\utils\WebGLFastSpriteBatch.js * @sourceline 169 */ /** * @method PIXI.WebGLFastSpriteBatch#render * @param {PIXI.WebGLSpriteBatch} spriteBatch - -* @sourcefile /Users/rich/Documents/phaser/src/pixi/renderers/webgl/utils/WebGLFastSpriteBatch.js +* @sourcefile d:\wamp\www\phaser\src\pixi\renderers\webgl\utils\WebGLFastSpriteBatch.js * @sourceline 177 */ /** * @method PIXI.WebGLFastSpriteBatch#renderSprite * @param {PIXI.Sprite} sprite - -* @sourcefile /Users/rich/Documents/phaser/src/pixi/renderers/webgl/utils/WebGLFastSpriteBatch.js +* @sourcefile d:\wamp\www\phaser\src\pixi\renderers\webgl\utils\WebGLFastSpriteBatch.js * @sourceline 208 */ /** * @method PIXI.WebGLFastSpriteBatch#flush -* @sourcefile /Users/rich/Documents/phaser/src/pixi/renderers/webgl/utils/WebGLFastSpriteBatch.js +* @sourcefile d:\wamp\www\phaser\src\pixi\renderers\webgl\utils\WebGLFastSpriteBatch.js * @sourceline 349 */ /** * @method PIXI.WebGLFastSpriteBatch#stop -* @sourcefile /Users/rich/Documents/phaser/src/pixi/renderers/webgl/utils/WebGLFastSpriteBatch.js +* @sourcefile d:\wamp\www\phaser\src\pixi\renderers\webgl\utils\WebGLFastSpriteBatch.js * @sourceline 389 */ /** * @method PIXI.WebGLFastSpriteBatch#start -* @sourcefile /Users/rich/Documents/phaser/src/pixi/renderers/webgl/utils/WebGLFastSpriteBatch.js +* @sourcefile d:\wamp\www\phaser\src\pixi\renderers\webgl\utils\WebGLFastSpriteBatch.js * @sourceline 397 */ /** * @fileoverview * @author Mat Groves http://matgroves.com/ @Doormat23 -* @sourcefile /Users/rich/Documents/phaser/src/pixi/renderers/webgl/utils/WebGLFilterManager.js +* @sourcefile d:\wamp\www\phaser\src\pixi\renderers\webgl\utils\WebGLFilterManager.js * @sourceline 1 */ /** * @class PIXI.WebGLFilterManager -* @sourcefile /Users/rich/Documents/phaser/src/pixi/renderers/webgl/utils/WebGLFilterManager.js +* @sourcefile d:\wamp\www\phaser\src\pixi\renderers\webgl\utils\WebGLFilterManager.js * @sourceline 5 */ /** * @member PIXI.WebGLFilterManager#filterStack * @type {Array} -* @sourcefile /Users/rich/Documents/phaser/src/pixi/renderers/webgl/utils/WebGLFilterManager.js +* @sourcefile d:\wamp\www\phaser\src\pixi\renderers\webgl\utils\WebGLFilterManager.js * @sourceline 11 */ /** * @member PIXI.WebGLFilterManager#offsetX * @type {Number} -* @sourcefile /Users/rich/Documents/phaser/src/pixi/renderers/webgl/utils/WebGLFilterManager.js +* @sourcefile d:\wamp\www\phaser\src\pixi\renderers\webgl\utils\WebGLFilterManager.js * @sourceline 17 */ /** * @member PIXI.WebGLFilterManager#offsetY * @type {Number} -* @sourcefile /Users/rich/Documents/phaser/src/pixi/renderers/webgl/utils/WebGLFilterManager.js +* @sourcefile d:\wamp\www\phaser\src\pixi\renderers\webgl\utils\WebGLFilterManager.js * @sourceline 23 */ /** * @description Initialises the context and the properties. * @method PIXI.WebGLFilterManager#setContext * @param {WebGLContext} gl - the current WebGL drawing context -* @sourcefile /Users/rich/Documents/phaser/src/pixi/renderers/webgl/utils/WebGLFilterManager.js +* @sourcefile d:\wamp\www\phaser\src\pixi\renderers\webgl\utils\WebGLFilterManager.js * @sourceline 32 */ /** * @method PIXI.WebGLFilterManager#begin * @param {RenderSession} renderSession - * @param {ArrayBuffer} buffer - -* @sourcefile /Users/rich/Documents/phaser/src/pixi/renderers/webgl/utils/WebGLFilterManager.js +* @sourcefile d:\wamp\www\phaser\src\pixi\renderers\webgl\utils\WebGLFilterManager.js * @sourceline 46 */ /** * @description Applies the filter and adds it to the current filter stack. * @method PIXI.WebGLFilterManager#pushFilter * @param {Object} filterBlock - the filter that will be pushed to the current filter stack -* @sourcefile /Users/rich/Documents/phaser/src/pixi/renderers/webgl/utils/WebGLFilterManager.js +* @sourcefile d:\wamp\www\phaser\src\pixi\renderers\webgl\utils\WebGLFilterManager.js * @sourceline 62 */ /** * @description Removes the last filter from the filter stack and doesn't return it. * @method PIXI.WebGLFilterManager#popFilter -* @sourcefile /Users/rich/Documents/phaser/src/pixi/renderers/webgl/utils/WebGLFilterManager.js +* @sourcefile d:\wamp\www\phaser\src\pixi\renderers\webgl\utils\WebGLFilterManager.js * @sourceline 145 */ /** @@ -2405,32 +2440,32 @@ https://github.com/libgdx/libgdx/blob/master/gdx/src/com/badlogic/gdx/graphics/g * @param {PIXI.Texture} filterArea - TODO - might need an update * @param {Number} width - the horizontal range of the filter * @param {Number} height - the vertical range of the filter -* @sourcefile /Users/rich/Documents/phaser/src/pixi/renderers/webgl/utils/WebGLFilterManager.js +* @sourcefile d:\wamp\www\phaser\src\pixi\renderers\webgl\utils\WebGLFilterManager.js * @sourceline 336 */ /** * @description Initialises the shader buffers. * @method PIXI.WebGLFilterManager#initShaderBuffers -* @sourcefile /Users/rich/Documents/phaser/src/pixi/renderers/webgl/utils/WebGLFilterManager.js +* @sourcefile d:\wamp\www\phaser\src\pixi\renderers\webgl\utils\WebGLFilterManager.js * @sourceline 397 */ /** * @description Destroys the filter and removes it from the filter stack. * @method PIXI.WebGLFilterManager#destroy -* @sourcefile /Users/rich/Documents/phaser/src/pixi/renderers/webgl/utils/WebGLFilterManager.js +* @sourcefile d:\wamp\www\phaser\src\pixi\renderers\webgl\utils\WebGLFilterManager.js * @sourceline 445 */ /** * @fileoverview * @author Mat Groves http://matgroves.com/ @Doormat23 -* @sourcefile /Users/rich/Documents/phaser/src/pixi/renderers/webgl/utils/WebGLGraphics.js +* @sourcefile d:\wamp\www\phaser\src\pixi\renderers\webgl\utils\WebGLGraphics.js * @sourceline 1 */ /** * @class PIXI.WebGLGraphics * @description A set of functions used by the webGL renderer to draw the primitive graphics data * @access private -* @sourcefile /Users/rich/Documents/phaser/src/pixi/renderers/webgl/utils/WebGLGraphics.js +* @sourcefile d:\wamp\www\phaser\src\pixi\renderers\webgl\utils\WebGLGraphics.js * @sourceline 5 */ @@ -2440,7 +2475,7 @@ https://github.com/libgdx/libgdx/blob/master/gdx/src/com/badlogic/gdx/graphics/g * @param {PIXI.Graphics} graphics - * @param {Object} renderSession - * @access private -* @sourcefile /Users/rich/Documents/phaser/src/pixi/renderers/webgl/utils/WebGLGraphics.js +* @sourcefile d:\wamp\www\phaser\src\pixi\renderers\webgl\utils\WebGLGraphics.js * @sourceline 23 */ /** @@ -2449,7 +2484,7 @@ https://github.com/libgdx/libgdx/blob/master/gdx/src/com/badlogic/gdx/graphics/g * @param {PIXI.Graphics} graphicsData - The graphics object to update * @param {WebGLContext} gl - the current WebGL drawing context * @access private -* @sourcefile /Users/rich/Documents/phaser/src/pixi/renderers/webgl/utils/WebGLGraphics.js +* @sourcefile d:\wamp\www\phaser\src\pixi\renderers\webgl\utils\WebGLGraphics.js * @sourceline 93 */ /** @@ -2457,7 +2492,7 @@ https://github.com/libgdx/libgdx/blob/master/gdx/src/com/badlogic/gdx/graphics/g * @param {WebGLContext} webGL - * @param {Number} type - * @access private -* @sourcefile /Users/rich/Documents/phaser/src/pixi/renderers/webgl/utils/WebGLGraphics.js +* @sourcefile d:\wamp\www\phaser\src\pixi\renderers\webgl\utils\WebGLGraphics.js * @sourceline 218 */ /** @@ -2466,7 +2501,7 @@ https://github.com/libgdx/libgdx/blob/master/gdx/src/com/badlogic/gdx/graphics/g * @param {PIXI.Graphics} graphicsData - The graphics object containing all the necessary properties * @param {Object} webGLData - * @access private -* @sourcefile /Users/rich/Documents/phaser/src/pixi/renderers/webgl/utils/WebGLGraphics.js +* @sourcefile d:\wamp\www\phaser\src\pixi\renderers\webgl\utils\WebGLGraphics.js * @sourceline 252 */ /** @@ -2475,7 +2510,7 @@ https://github.com/libgdx/libgdx/blob/master/gdx/src/com/badlogic/gdx/graphics/g * @param {PIXI.Graphics} graphicsData - The graphics object containing all the necessary properties * @param {Object} webGLData - * @access private -* @sourcefile /Users/rich/Documents/phaser/src/pixi/renderers/webgl/utils/WebGLGraphics.js +* @sourcefile d:\wamp\www\phaser\src\pixi\renderers\webgl\utils\WebGLGraphics.js * @sourceline 320 */ /** @@ -2490,7 +2525,7 @@ Based on: https://stackoverflow.com/questions/785097/how-do-i-implement-a-bezier * @param {Number} toY - Destination point y * @return {Array} * @access private -* @sourcefile /Users/rich/Documents/phaser/src/pixi/renderers/webgl/utils/WebGLGraphics.js +* @sourcefile d:\wamp\www\phaser\src\pixi\renderers\webgl\utils\WebGLGraphics.js * @sourceline 390 */ /** @@ -2499,7 +2534,7 @@ Based on: https://stackoverflow.com/questions/785097/how-do-i-implement-a-bezier * @param {PIXI.Graphics} graphicsData - The graphics object to draw * @param {Object} webGLData - * @access private -* @sourcefile /Users/rich/Documents/phaser/src/pixi/renderers/webgl/utils/WebGLGraphics.js +* @sourcefile d:\wamp\www\phaser\src\pixi\renderers\webgl\utils\WebGLGraphics.js * @sourceline 442 */ /** @@ -2508,7 +2543,7 @@ Based on: https://stackoverflow.com/questions/785097/how-do-i-implement-a-bezier * @param {PIXI.Graphics} graphicsData - The graphics object containing all the necessary properties * @param {Object} webGLData - * @access private -* @sourcefile /Users/rich/Documents/phaser/src/pixi/renderers/webgl/utils/WebGLGraphics.js +* @sourcefile d:\wamp\www\phaser\src\pixi\renderers\webgl\utils\WebGLGraphics.js * @sourceline 525 */ /** @@ -2517,7 +2552,7 @@ Based on: https://stackoverflow.com/questions/785097/how-do-i-implement-a-bezier * @param {PIXI.Graphics} graphicsData - The graphics object containing all the necessary properties * @param {Object} webGLData - * @access private -* @sourcefile /Users/rich/Documents/phaser/src/pixi/renderers/webgl/utils/WebGLGraphics.js +* @sourcefile d:\wamp\www\phaser\src\pixi\renderers\webgl\utils\WebGLGraphics.js * @sourceline 737 */ /** @@ -2526,42 +2561,42 @@ Based on: https://stackoverflow.com/questions/785097/how-do-i-implement-a-bezier * @param {PIXI.Graphics} graphicsData - The graphics object containing all the necessary properties * @param {Object} webGLData - * @access private -* @sourcefile /Users/rich/Documents/phaser/src/pixi/renderers/webgl/utils/WebGLGraphics.js +* @sourcefile d:\wamp\www\phaser\src\pixi\renderers\webgl\utils\WebGLGraphics.js * @sourceline 799 */ /** * @class PIXI.WebGLGraphicsData * @access private -* @sourcefile /Users/rich/Documents/phaser/src/pixi/renderers/webgl/utils/WebGLGraphics.js +* @sourcefile d:\wamp\www\phaser\src\pixi\renderers\webgl\utils\WebGLGraphics.js * @sourceline 854 */ /** * @method PIXI.WebGLGraphicsData#reset -* @sourcefile /Users/rich/Documents/phaser/src/pixi/renderers/webgl/utils/WebGLGraphics.js +* @sourcefile d:\wamp\www\phaser\src\pixi\renderers\webgl\utils\WebGLGraphics.js * @sourceline 874 */ /** * @method PIXI.WebGLGraphicsData#upload -* @sourcefile /Users/rich/Documents/phaser/src/pixi/renderers/webgl/utils/WebGLGraphics.js +* @sourcefile d:\wamp\www\phaser\src\pixi\renderers\webgl\utils\WebGLGraphics.js * @sourceline 883 */ /** * @fileoverview * @author Mat Groves http://matgroves.com/ @Doormat23 -* @sourcefile /Users/rich/Documents/phaser/src/pixi/renderers/webgl/utils/WebGLMaskManager.js +* @sourcefile d:\wamp\www\phaser\src\pixi\renderers\webgl\utils\WebGLMaskManager.js * @sourceline 1 */ /** * @class PIXI.WebGLMaskManager * @access private -* @sourcefile /Users/rich/Documents/phaser/src/pixi/renderers/webgl/utils/WebGLMaskManager.js +* @sourcefile d:\wamp\www\phaser\src\pixi\renderers\webgl\utils\WebGLMaskManager.js * @sourceline 5 */ /** * @description Sets the drawing context to the one given in parameter. * @method PIXI.WebGLMaskManager#setContext * @param {WebGLContext} gl - the current WebGL drawing context -* @sourcefile /Users/rich/Documents/phaser/src/pixi/renderers/webgl/utils/WebGLMaskManager.js +* @sourcefile d:\wamp\www\phaser\src\pixi\renderers\webgl\utils\WebGLMaskManager.js * @sourceline 16 */ /** @@ -2569,7 +2604,7 @@ Based on: https://stackoverflow.com/questions/785097/how-do-i-implement-a-bezier * @method PIXI.WebGLMaskManager#pushMask * @param {Array} maskData - * @param {Object} renderSession - -* @sourcefile /Users/rich/Documents/phaser/src/pixi/renderers/webgl/utils/WebGLMaskManager.js +* @sourcefile d:\wamp\www\phaser\src\pixi\renderers\webgl\utils\WebGLMaskManager.js * @sourceline 27 */ /** @@ -2577,94 +2612,94 @@ Based on: https://stackoverflow.com/questions/785097/how-do-i-implement-a-bezier * @method PIXI.WebGLMaskManager#popMask * @param {Array} maskData - * @param {Object} renderSession - an object containing all the useful parameters -* @sourcefile /Users/rich/Documents/phaser/src/pixi/renderers/webgl/utils/WebGLMaskManager.js +* @sourcefile d:\wamp\www\phaser\src\pixi\renderers\webgl\utils\WebGLMaskManager.js * @sourceline 51 */ /** * @description Destroys the mask stack. * @method PIXI.WebGLMaskManager#destroy -* @sourcefile /Users/rich/Documents/phaser/src/pixi/renderers/webgl/utils/WebGLMaskManager.js +* @sourcefile d:\wamp\www\phaser\src\pixi\renderers\webgl\utils\WebGLMaskManager.js * @sourceline 71 */ /** * @fileoverview * @author Mat Groves http://matgroves.com/ @Doormat23 -* @sourcefile /Users/rich/Documents/phaser/src/pixi/renderers/webgl/utils/WebGLShaderManager.js +* @sourcefile d:\wamp\www\phaser\src\pixi\renderers\webgl\utils\WebGLShaderManager.js * @sourceline 1 */ /** * @class PIXI.WebGLShaderManager * @access private -* @sourcefile /Users/rich/Documents/phaser/src/pixi/renderers/webgl/utils/WebGLShaderManager.js +* @sourcefile d:\wamp\www\phaser\src\pixi\renderers\webgl\utils\WebGLShaderManager.js * @sourceline 5 */ /** * @member PIXI.WebGLShaderManager#maxAttibs * @type {Number} -* @sourcefile /Users/rich/Documents/phaser/src/pixi/renderers/webgl/utils/WebGLShaderManager.js +* @sourcefile d:\wamp\www\phaser\src\pixi\renderers\webgl\utils\WebGLShaderManager.js * @sourceline 12 */ /** * @member PIXI.WebGLShaderManager#attribState * @type {Array} -* @sourcefile /Users/rich/Documents/phaser/src/pixi/renderers/webgl/utils/WebGLShaderManager.js +* @sourcefile d:\wamp\www\phaser\src\pixi\renderers\webgl\utils\WebGLShaderManager.js * @sourceline 18 */ /** * @member PIXI.WebGLShaderManager#tempAttribState * @type {Array} -* @sourcefile /Users/rich/Documents/phaser/src/pixi/renderers/webgl/utils/WebGLShaderManager.js +* @sourcefile d:\wamp\www\phaser\src\pixi\renderers\webgl\utils\WebGLShaderManager.js * @sourceline 24 */ /** * @member PIXI.WebGLShaderManager#stack * @type {Array} -* @sourcefile /Users/rich/Documents/phaser/src/pixi/renderers/webgl/utils/WebGLShaderManager.js +* @sourcefile d:\wamp\www\phaser\src\pixi\renderers\webgl\utils\WebGLShaderManager.js * @sourceline 35 */ /** * @description Initialises the context and the properties. * @method PIXI.WebGLShaderManager#setContext * @param {WebGLContext} gl - the current WebGL drawing context -* @sourcefile /Users/rich/Documents/phaser/src/pixi/renderers/webgl/utils/WebGLShaderManager.js +* @sourcefile d:\wamp\www\phaser\src\pixi\renderers\webgl\utils\WebGLShaderManager.js * @sourceline 45 */ /** * @description Takes the attributes given in parameters. * @method PIXI.WebGLShaderManager#setAttribs * @param {Array} attribs - attribs -* @sourcefile /Users/rich/Documents/phaser/src/pixi/renderers/webgl/utils/WebGLShaderManager.js +* @sourcefile d:\wamp\www\phaser\src\pixi\renderers\webgl\utils\WebGLShaderManager.js * @sourceline 73 */ /** * @description Sets the current shader. * @method PIXI.WebGLShaderManager#setShader * @param {} shader - -* @sourcefile /Users/rich/Documents/phaser/src/pixi/renderers/webgl/utils/WebGLShaderManager.js +* @sourcefile d:\wamp\www\phaser\src\pixi\renderers\webgl\utils\WebGLShaderManager.js * @sourceline 116 */ /** * @description Destroys this object. * @method PIXI.WebGLShaderManager#destroy -* @sourcefile /Users/rich/Documents/phaser/src/pixi/renderers/webgl/utils/WebGLShaderManager.js +* @sourcefile d:\wamp\www\phaser\src\pixi\renderers\webgl\utils\WebGLShaderManager.js * @sourceline 136 */ /** * @fileoverview * @author Mat Groves http://matgroves.com/ @Doormat23 -* @sourcefile /Users/rich/Documents/phaser/src/pixi/renderers/webgl/utils/WebGLShaderUtils.js +* @sourcefile d:\wamp\www\phaser\src\pixi\renderers\webgl\utils\WebGLShaderUtils.js * @sourceline 1 */ /** * @class PIXI.WebGLSpriteBatch * @access private -* @sourcefile /Users/rich/Documents/phaser/src/pixi/renderers/webgl/utils/WebGLSpriteBatch.js +* @sourcefile d:\wamp\www\phaser\src\pixi\renderers\webgl\utils\WebGLSpriteBatch.js * @sourceline 12 */ /** * @method PIXI.WebGLSpriteBatch.initDefaultShaders * @access private -* @sourcefile /Users/rich/Documents/phaser/src/pixi/renderers/webgl/utils/WebGLShaderUtils.js +* @sourcefile d:\wamp\www\phaser\src\pixi\renderers\webgl\utils\WebGLShaderUtils.js * @sourceline 5 */ /** @@ -2672,7 +2707,7 @@ Based on: https://stackoverflow.com/questions/785097/how-do-i-implement-a-bezier * @param {WebGLContext} gl - the current WebGL drawing context * @param {Array} shaderSrc - * @return {} -* @sourcefile /Users/rich/Documents/phaser/src/pixi/renderers/webgl/utils/WebGLShaderUtils.js +* @sourcefile d:\wamp\www\phaser\src\pixi\renderers\webgl\utils\WebGLShaderUtils.js * @sourceline 14 */ /** @@ -2680,7 +2715,7 @@ Based on: https://stackoverflow.com/questions/785097/how-do-i-implement-a-bezier * @param {WebGLContext} gl - the current WebGL drawing context * @param {Array} shaderSrc - * @return {} -* @sourcefile /Users/rich/Documents/phaser/src/pixi/renderers/webgl/utils/WebGLShaderUtils.js +* @sourcefile d:\wamp\www\phaser\src\pixi\renderers\webgl\utils\WebGLShaderUtils.js * @sourceline 26 */ /** @@ -2690,7 +2725,7 @@ Based on: https://stackoverflow.com/questions/785097/how-do-i-implement-a-bezier * @param {Number} shaderType - * @return {} * @access private -* @sourcefile /Users/rich/Documents/phaser/src/pixi/renderers/webgl/utils/WebGLShaderUtils.js +* @sourcefile d:\wamp\www\phaser\src\pixi\renderers\webgl\utils\WebGLShaderUtils.js * @sourceline 38 */ /** @@ -2699,146 +2734,146 @@ Based on: https://stackoverflow.com/questions/785097/how-do-i-implement-a-bezier * @param {Array} vertexSrc - * @param {Array} fragmentSrc - * @return {} -* @sourcefile /Users/rich/Documents/phaser/src/pixi/renderers/webgl/utils/WebGLShaderUtils.js +* @sourcefile d:\wamp\www\phaser\src\pixi\renderers\webgl\utils\WebGLShaderUtils.js * @sourceline 69 */ /** * @member PIXI.WebGLSpriteBatch#vertSize * @type {Number} -* @sourcefile /Users/rich/Documents/phaser/src/pixi/renderers/webgl/utils/WebGLSpriteBatch.js +* @sourcefile d:\wamp\www\phaser\src\pixi\renderers\webgl\utils\WebGLSpriteBatch.js * @sourceline 20 */ /** * @description The number of images in the SpriteBatch before it flushes * @member PIXI.WebGLSpriteBatch#size * @type {Number} -* @sourcefile /Users/rich/Documents/phaser/src/pixi/renderers/webgl/utils/WebGLSpriteBatch.js +* @sourcefile d:\wamp\www\phaser\src\pixi\renderers\webgl\utils\WebGLSpriteBatch.js * @sourceline 26 */ /** * @description Holds the vertices * @member PIXI.WebGLSpriteBatch#vertices * @type {ArrayBuffer} -* @sourcefile /Users/rich/Documents/phaser/src/pixi/renderers/webgl/utils/WebGLSpriteBatch.js +* @sourcefile d:\wamp\www\phaser\src\pixi\renderers\webgl\utils\WebGLSpriteBatch.js * @sourceline 38 */ /** * @description View on the vertices as a Float32Array * @member PIXI.WebGLSpriteBatch#positions * @type {Float32Array} -* @sourcefile /Users/rich/Documents/phaser/src/pixi/renderers/webgl/utils/WebGLSpriteBatch.js +* @sourcefile d:\wamp\www\phaser\src\pixi\renderers\webgl\utils\WebGLSpriteBatch.js * @sourceline 46 */ /** * @description View on the vertices as a Uint32Array * @member PIXI.WebGLSpriteBatch#colors * @type {Uint32Array} -* @sourcefile /Users/rich/Documents/phaser/src/pixi/renderers/webgl/utils/WebGLSpriteBatch.js +* @sourcefile d:\wamp\www\phaser\src\pixi\renderers\webgl\utils\WebGLSpriteBatch.js * @sourceline 54 */ /** * @description Holds the indices * @member PIXI.WebGLSpriteBatch#indices * @type {Uint16Array} -* @sourcefile /Users/rich/Documents/phaser/src/pixi/renderers/webgl/utils/WebGLSpriteBatch.js +* @sourcefile d:\wamp\www\phaser\src\pixi\renderers\webgl\utils\WebGLSpriteBatch.js * @sourceline 62 */ /** * @member PIXI.WebGLSpriteBatch#lastIndexCount * @type {Number} -* @sourcefile /Users/rich/Documents/phaser/src/pixi/renderers/webgl/utils/WebGLSpriteBatch.js +* @sourcefile d:\wamp\www\phaser\src\pixi\renderers\webgl\utils\WebGLSpriteBatch.js * @sourceline 70 */ /** * @member PIXI.WebGLSpriteBatch#drawing * @type {Boolean} -* @sourcefile /Users/rich/Documents/phaser/src/pixi/renderers/webgl/utils/WebGLSpriteBatch.js +* @sourcefile d:\wamp\www\phaser\src\pixi\renderers\webgl\utils\WebGLSpriteBatch.js * @sourceline 86 */ /** * @member PIXI.WebGLSpriteBatch#currentBatchSize * @type {Number} -* @sourcefile /Users/rich/Documents/phaser/src/pixi/renderers/webgl/utils/WebGLSpriteBatch.js +* @sourcefile d:\wamp\www\phaser\src\pixi\renderers\webgl\utils\WebGLSpriteBatch.js * @sourceline 92 */ /** * @member PIXI.WebGLSpriteBatch#currentBaseTexture * @type {PIXI.BaseTexture} -* @sourcefile /Users/rich/Documents/phaser/src/pixi/renderers/webgl/utils/WebGLSpriteBatch.js +* @sourcefile d:\wamp\www\phaser\src\pixi\renderers\webgl\utils\WebGLSpriteBatch.js * @sourceline 98 */ /** * @member PIXI.WebGLSpriteBatch#dirty * @type {Boolean} -* @sourcefile /Users/rich/Documents/phaser/src/pixi/renderers/webgl/utils/WebGLSpriteBatch.js +* @sourcefile d:\wamp\www\phaser\src\pixi\renderers\webgl\utils\WebGLSpriteBatch.js * @sourceline 104 */ /** * @member PIXI.WebGLSpriteBatch#textures * @type {Array} -* @sourcefile /Users/rich/Documents/phaser/src/pixi/renderers/webgl/utils/WebGLSpriteBatch.js +* @sourcefile d:\wamp\www\phaser\src\pixi\renderers\webgl\utils\WebGLSpriteBatch.js * @sourceline 110 */ /** * @member PIXI.WebGLSpriteBatch#blendModes * @type {Array} -* @sourcefile /Users/rich/Documents/phaser/src/pixi/renderers/webgl/utils/WebGLSpriteBatch.js +* @sourcefile d:\wamp\www\phaser\src\pixi\renderers\webgl\utils\WebGLSpriteBatch.js * @sourceline 116 */ /** * @member PIXI.WebGLSpriteBatch#shaders * @type {Array} -* @sourcefile /Users/rich/Documents/phaser/src/pixi/renderers/webgl/utils/WebGLSpriteBatch.js +* @sourcefile d:\wamp\www\phaser\src\pixi\renderers\webgl\utils\WebGLSpriteBatch.js * @sourceline 122 */ /** * @member PIXI.WebGLSpriteBatch#sprites * @type {Array} -* @sourcefile /Users/rich/Documents/phaser/src/pixi/renderers/webgl/utils/WebGLSpriteBatch.js +* @sourcefile d:\wamp\www\phaser\src\pixi\renderers\webgl\utils\WebGLSpriteBatch.js * @sourceline 128 */ /** * @member PIXI.WebGLSpriteBatch#defaultShader * @type {PIXI.AbstractFilter} -* @sourcefile /Users/rich/Documents/phaser/src/pixi/renderers/webgl/utils/WebGLSpriteBatch.js +* @sourcefile d:\wamp\www\phaser\src\pixi\renderers\webgl\utils\WebGLSpriteBatch.js * @sourceline 134 */ /** * @method PIXI.WebGLSpriteBatch#setContext * @param {WebGLContext} gl - the current WebGL drawing context -* @sourcefile /Users/rich/Documents/phaser/src/pixi/renderers/webgl/utils/WebGLSpriteBatch.js +* @sourcefile d:\wamp\www\phaser\src\pixi\renderers\webgl\utils\WebGLSpriteBatch.js * @sourceline 149 */ /** * @method PIXI.WebGLSpriteBatch#begin * @param {Object} renderSession - The RenderSession object -* @sourcefile /Users/rich/Documents/phaser/src/pixi/renderers/webgl/utils/WebGLSpriteBatch.js +* @sourcefile d:\wamp\www\phaser\src\pixi\renderers\webgl\utils\WebGLSpriteBatch.js * @sourceline 181 */ /** * @method PIXI.WebGLSpriteBatch#end -* @sourcefile /Users/rich/Documents/phaser/src/pixi/renderers/webgl/utils/WebGLSpriteBatch.js +* @sourcefile d:\wamp\www\phaser\src\pixi\renderers\webgl\utils\WebGLSpriteBatch.js * @sourceline 193 */ /** * @method PIXI.WebGLSpriteBatch#render * @param {PIXI.Sprite} sprite - the sprite to render when using this spritebatch * @param {Matrix} [matrix] - - Optional matrix. If provided the Display Object will be rendered using this matrix, otherwise it will use its worldTransform. -* @sourcefile /Users/rich/Documents/phaser/src/pixi/renderers/webgl/utils/WebGLSpriteBatch.js +* @sourcefile d:\wamp\www\phaser\src\pixi\renderers\webgl\utils\WebGLSpriteBatch.js * @sourceline 201 */ /** * @description Renders a TilingSprite using the spriteBatch. * @method PIXI.WebGLSpriteBatch#renderTilingSprite * @param {PIXI.TilingSprite} sprite - the sprite to render -* @sourcefile /Users/rich/Documents/phaser/src/pixi/renderers/webgl/utils/WebGLSpriteBatch.js +* @sourcefile d:\wamp\www\phaser\src\pixi\renderers\webgl\utils\WebGLSpriteBatch.js * @sourceline 335 */ /** * @description Renders the content and empties the current batch. * @method PIXI.WebGLSpriteBatch#flush -* @sourcefile /Users/rich/Documents/phaser/src/pixi/renderers/webgl/utils/WebGLSpriteBatch.js +* @sourcefile d:\wamp\www\phaser\src\pixi\renderers\webgl\utils\WebGLSpriteBatch.js * @sourceline 462 */ /** @@ -2846,42 +2881,42 @@ Based on: https://stackoverflow.com/questions/785097/how-do-i-implement-a-bezier * @param {PIXI.Texture} texture - * @param {Number} size - * @param {Number} startIndex - -* @sourcefile /Users/rich/Documents/phaser/src/pixi/renderers/webgl/utils/WebGLSpriteBatch.js +* @sourcefile d:\wamp\www\phaser\src\pixi\renderers\webgl\utils\WebGLSpriteBatch.js * @sourceline 610 */ /** * @method PIXI.WebGLSpriteBatch#stop -* @sourcefile /Users/rich/Documents/phaser/src/pixi/renderers/webgl/utils/WebGLSpriteBatch.js +* @sourcefile d:\wamp\www\phaser\src\pixi\renderers\webgl\utils\WebGLSpriteBatch.js * @sourceline 647 */ /** * @method PIXI.WebGLSpriteBatch#start -* @sourcefile /Users/rich/Documents/phaser/src/pixi/renderers/webgl/utils/WebGLSpriteBatch.js +* @sourcefile d:\wamp\www\phaser\src\pixi\renderers\webgl\utils\WebGLSpriteBatch.js * @sourceline 656 */ /** * @description Destroys the SpriteBatch. * @method PIXI.WebGLSpriteBatch#destroy -* @sourcefile /Users/rich/Documents/phaser/src/pixi/renderers/webgl/utils/WebGLSpriteBatch.js +* @sourcefile d:\wamp\www\phaser\src\pixi\renderers\webgl\utils\WebGLSpriteBatch.js * @sourceline 664 */ /** * @fileoverview * @author Mat Groves http://matgroves.com/ @Doormat23 -* @sourcefile /Users/rich/Documents/phaser/src/pixi/renderers/webgl/utils/WebGLStencilManager.js +* @sourcefile d:\wamp\www\phaser\src\pixi\renderers\webgl\utils\WebGLStencilManager.js * @sourceline 1 */ /** * @class PIXI.WebGLStencilManager * @access private -* @sourcefile /Users/rich/Documents/phaser/src/pixi/renderers/webgl/utils/WebGLStencilManager.js +* @sourcefile d:\wamp\www\phaser\src\pixi\renderers\webgl\utils\WebGLStencilManager.js * @sourceline 5 */ /** * @description Sets the drawing context to the one given in parameter. * @method PIXI.WebGLStencilManager#setContext * @param {WebGLContext} gl - the current WebGL drawing context -* @sourcefile /Users/rich/Documents/phaser/src/pixi/renderers/webgl/utils/WebGLStencilManager.js +* @sourcefile d:\wamp\www\phaser\src\pixi\renderers\webgl\utils\WebGLStencilManager.js * @sourceline 17 */ /** @@ -2890,7 +2925,7 @@ Based on: https://stackoverflow.com/questions/785097/how-do-i-implement-a-bezier * @param {PIXI.Graphics} graphics - * @param {Array} webGLData - * @param {Object} renderSession - -* @sourcefile /Users/rich/Documents/phaser/src/pixi/renderers/webgl/utils/WebGLStencilManager.js +* @sourcefile d:\wamp\www\phaser\src\pixi\renderers\webgl\utils\WebGLStencilManager.js * @sourceline 28 */ /** @@ -2899,7 +2934,7 @@ Based on: https://stackoverflow.com/questions/785097/how-do-i-implement-a-bezier * @param {PIXI.Graphics} graphics - * @param {Array} webGLData - * @param {Object} renderSession - -* @sourcefile /Users/rich/Documents/phaser/src/pixi/renderers/webgl/utils/WebGLStencilManager.js +* @sourcefile d:\wamp\www\phaser\src\pixi\renderers\webgl\utils\WebGLStencilManager.js * @sourceline 120 */ /** @@ -2907,19 +2942,19 @@ Based on: https://stackoverflow.com/questions/785097/how-do-i-implement-a-bezier * @param {PIXI.Graphics} graphics - * @param {Array} webGLData - * @param {Object} renderSession - -* @sourcefile /Users/rich/Documents/phaser/src/pixi/renderers/webgl/utils/WebGLStencilManager.js +* @sourcefile d:\wamp\www\phaser\src\pixi\renderers\webgl\utils\WebGLStencilManager.js * @sourceline 193 */ /** * @description Destroys the mask stack. * @method PIXI.WebGLStencilManager#destroy -* @sourcefile /Users/rich/Documents/phaser/src/pixi/renderers/webgl/utils/WebGLStencilManager.js +* @sourcefile d:\wamp\www\phaser\src\pixi\renderers\webgl\utils\WebGLStencilManager.js * @sourceline 288 */ /** * @fileoverview * @author Mat Groves http://matgroves.com/ @Doormat23 -* @sourcefile /Users/rich/Documents/phaser/src/pixi/renderers/webgl/WebGLRenderer.js +* @sourcefile d:\wamp\www\phaser\src\pixi\renderers\webgl\WebGLRenderer.js * @sourceline 1 */ /** @@ -2929,19 +2964,19 @@ should be used for browsers that support webGL. This Render works by automatical So no need for Sprite Batches or Sprite Clouds. Don't forget to add the view to your DOM or you will not see anything :) * @param {PhaserGame} game - A reference to the Phaser Game instance -* @sourcefile /Users/rich/Documents/phaser/src/pixi/renderers/webgl/WebGLRenderer.js +* @sourcefile d:\wamp\www\phaser\src\pixi\renderers\webgl\WebGLRenderer.js * @sourceline 8 */ /** * @member PIXI.WebGLRenderer#game - A reference to the Phaser Game instance. * @type {PhaserGame} -* @sourcefile /Users/rich/Documents/phaser/src/pixi/renderers/webgl/WebGLRenderer.js +* @sourcefile d:\wamp\www\phaser\src\pixi\renderers\webgl\WebGLRenderer.js * @sourceline 20 */ /** * @member PIXI.WebGLRenderer#type * @type {Number} -* @sourcefile /Users/rich/Documents/phaser/src/pixi/renderers/webgl/WebGLRenderer.js +* @sourcefile d:\wamp\www\phaser\src\pixi\renderers\webgl\WebGLRenderer.js * @sourceline 30 */ /** @@ -2949,28 +2984,28 @@ Don't forget to add the view to your DOM or you will not see anything :) * @member PIXI.WebGLRenderer#resolution * @type {Number} * @default 1 -* @sourcefile /Users/rich/Documents/phaser/src/pixi/renderers/webgl/WebGLRenderer.js +* @sourcefile d:\wamp\www\phaser\src\pixi\renderers\webgl\WebGLRenderer.js * @sourceline 36 */ /** * @description Whether the render view is transparent * @member PIXI.WebGLRenderer#transparent * @type {Boolean} -* @sourcefile /Users/rich/Documents/phaser/src/pixi/renderers/webgl/WebGLRenderer.js +* @sourcefile d:\wamp\www\phaser\src\pixi\renderers\webgl\WebGLRenderer.js * @sourceline 45 */ /** * @description Whether the render view should be resized automatically * @member PIXI.WebGLRenderer#autoResize * @type {Boolean} -* @sourcefile /Users/rich/Documents/phaser/src/pixi/renderers/webgl/WebGLRenderer.js +* @sourcefile d:\wamp\www\phaser\src\pixi\renderers\webgl\WebGLRenderer.js * @sourceline 53 */ /** * @description The value of the preserveDrawingBuffer flag affects whether or not the contents of the stencil buffer is retained after rendering. * @member PIXI.WebGLRenderer#preserveDrawingBuffer * @type {Boolean} -* @sourcefile /Users/rich/Documents/phaser/src/pixi/renderers/webgl/WebGLRenderer.js +* @sourcefile d:\wamp\www\phaser\src\pixi\renderers\webgl\WebGLRenderer.js * @sourceline 61 */ /** @@ -2981,116 +3016,116 @@ Disable this by setting this to false. For example: if your game has a canvas fi * @member PIXI.WebGLRenderer#clearBeforeRender * @type {Boolean} * @default -* @sourcefile /Users/rich/Documents/phaser/src/pixi/renderers/webgl/WebGLRenderer.js +* @sourcefile d:\wamp\www\phaser\src\pixi\renderers\webgl\WebGLRenderer.js * @sourceline 69 */ /** * @description The width of the canvas view * @member PIXI.WebGLRenderer#width * @type {Number} -* @sourcefile /Users/rich/Documents/phaser/src/pixi/renderers/webgl/WebGLRenderer.js +* @sourcefile d:\wamp\www\phaser\src\pixi\renderers\webgl\WebGLRenderer.js * @sourceline 81 */ /** * @description The height of the canvas view * @member PIXI.WebGLRenderer#height * @type {Number} -* @sourcefile /Users/rich/Documents/phaser/src/pixi/renderers/webgl/WebGLRenderer.js +* @sourcefile d:\wamp\www\phaser\src\pixi\renderers\webgl\WebGLRenderer.js * @sourceline 89 */ /** * @description The canvas element that everything is drawn to * @member PIXI.WebGLRenderer#view * @type {HTMLCanvasElement} -* @sourcefile /Users/rich/Documents/phaser/src/pixi/renderers/webgl/WebGLRenderer.js +* @sourcefile d:\wamp\www\phaser\src\pixi\renderers\webgl\WebGLRenderer.js * @sourceline 97 */ /** * @member PIXI.WebGLRenderer#_contextOptions * @type {Object} * @access private -* @sourcefile /Users/rich/Documents/phaser/src/pixi/renderers/webgl/WebGLRenderer.js +* @sourcefile d:\wamp\www\phaser\src\pixi\renderers\webgl\WebGLRenderer.js * @sourceline 105 */ /** * @member PIXI.WebGLRenderer#projection * @type {Point} -* @sourcefile /Users/rich/Documents/phaser/src/pixi/renderers/webgl/WebGLRenderer.js +* @sourcefile d:\wamp\www\phaser\src\pixi\renderers\webgl\WebGLRenderer.js * @sourceline 118 */ /** * @member PIXI.WebGLRenderer#offset * @type {Point} -* @sourcefile /Users/rich/Documents/phaser/src/pixi/renderers/webgl/WebGLRenderer.js +* @sourcefile d:\wamp\www\phaser\src\pixi\renderers\webgl\WebGLRenderer.js * @sourceline 124 */ /** * @description Deals with managing the shader programs and their attribs * @member PIXI.WebGLRenderer#shaderManager * @type {PIXI.WebGLShaderManager} -* @sourcefile /Users/rich/Documents/phaser/src/pixi/renderers/webgl/WebGLRenderer.js +* @sourcefile d:\wamp\www\phaser\src\pixi\renderers\webgl\WebGLRenderer.js * @sourceline 132 */ /** * @description Manages the rendering of sprites * @member PIXI.WebGLRenderer#spriteBatch * @type {PIXI.WebGLSpriteBatch} -* @sourcefile /Users/rich/Documents/phaser/src/pixi/renderers/webgl/WebGLRenderer.js +* @sourcefile d:\wamp\www\phaser\src\pixi\renderers\webgl\WebGLRenderer.js * @sourceline 139 */ /** * @description Manages the masks using the stencil buffer * @member PIXI.WebGLRenderer#maskManager * @type {PIXI.WebGLMaskManager} -* @sourcefile /Users/rich/Documents/phaser/src/pixi/renderers/webgl/WebGLRenderer.js +* @sourcefile d:\wamp\www\phaser\src\pixi\renderers\webgl\WebGLRenderer.js * @sourceline 146 */ /** * @description Manages the filters * @member PIXI.WebGLRenderer#filterManager * @type {PIXI.WebGLFilterManager} -* @sourcefile /Users/rich/Documents/phaser/src/pixi/renderers/webgl/WebGLRenderer.js +* @sourcefile d:\wamp\www\phaser\src\pixi\renderers\webgl\WebGLRenderer.js * @sourceline 153 */ /** * @description Manages the stencil buffer * @member PIXI.WebGLRenderer#stencilManager * @type {PIXI.WebGLStencilManager} -* @sourcefile /Users/rich/Documents/phaser/src/pixi/renderers/webgl/WebGLRenderer.js +* @sourcefile d:\wamp\www\phaser\src\pixi\renderers\webgl\WebGLRenderer.js * @sourceline 160 */ /** * @description Manages the blendModes * @member PIXI.WebGLRenderer#blendModeManager * @type {PIXI.WebGLBlendModeManager} -* @sourcefile /Users/rich/Documents/phaser/src/pixi/renderers/webgl/WebGLRenderer.js +* @sourcefile d:\wamp\www\phaser\src\pixi\renderers\webgl\WebGLRenderer.js * @sourceline 167 */ /** * @member PIXI.WebGLRenderer#renderSession * @type {Object} -* @sourcefile /Users/rich/Documents/phaser/src/pixi/renderers/webgl/WebGLRenderer.js +* @sourcefile d:\wamp\www\phaser\src\pixi\renderers\webgl\WebGLRenderer.js * @sourceline 174 */ /** * @method PIXI.WebGLRenderer#initContext -* @sourcefile /Users/rich/Documents/phaser/src/pixi/renderers/webgl/WebGLRenderer.js +* @sourcefile d:\wamp\www\phaser\src\pixi\renderers\webgl\WebGLRenderer.js * @sourceline 204 */ /** * @description Renders the stage to its webGL view * @method PIXI.WebGLRenderer#render * @param {Stage} stage - the Stage element to be rendered -* @sourcefile /Users/rich/Documents/phaser/src/pixi/renderers/webgl/WebGLRenderer.js +* @sourcefile d:\wamp\www\phaser\src\pixi\renderers\webgl\WebGLRenderer.js * @sourceline 243 */ /** * @description Renders a Display Object. * @method PIXI.WebGLRenderer#renderDisplayObject -* @param {PIXI.DisplayObject} displayObject - The DisplayObject to render +* @param {DisplayObject} displayObject - The DisplayObject to render * @param {Point} projection - The projection * @param {Array} buffer - a standard WebGL buffer -* @sourcefile /Users/rich/Documents/phaser/src/pixi/renderers/webgl/WebGLRenderer.js +* @sourcefile d:\wamp\www\phaser\src\pixi\renderers\webgl\WebGLRenderer.js * @sourceline 278 */ /** @@ -3098,7 +3133,7 @@ Disable this by setting this to false. For example: if your game has a canvas fi * @method PIXI.WebGLRenderer#resize * @param {Number} width - the new width of the webGL view * @param {Number} height - the new height of the webGL view -* @sourcefile /Users/rich/Documents/phaser/src/pixi/renderers/webgl/WebGLRenderer.js +* @sourcefile d:\wamp\www\phaser\src\pixi\renderers\webgl\WebGLRenderer.js * @sourceline 315 */ /** @@ -3106,110 +3141,110 @@ Disable this by setting this to false. For example: if your game has a canvas fi * @method PIXI.WebGLRenderer#updateTexture * @param {PIXI.Texture} texture - the texture to update * @return {Boolean} True if the texture was successfully bound, otherwise false. -* @sourcefile /Users/rich/Documents/phaser/src/pixi/renderers/webgl/WebGLRenderer.js +* @sourcefile d:\wamp\www\phaser\src\pixi\renderers\webgl\WebGLRenderer.js * @sourceline 341 */ /** * @description Removes everything from the renderer (event listeners, spritebatch, etc...) * @method PIXI.WebGLRenderer#destroy -* @sourcefile /Users/rich/Documents/phaser/src/pixi/renderers/webgl/WebGLRenderer.js +* @sourcefile d:\wamp\www\phaser\src\pixi\renderers\webgl\WebGLRenderer.js * @sourceline 398 */ /** * @description Maps Pixi blend modes to WebGL blend modes. * @method PIXI.WebGLRenderer#mapBlendModes -* @sourcefile /Users/rich/Documents/phaser/src/pixi/renderers/webgl/WebGLRenderer.js +* @sourcefile d:\wamp\www\phaser\src\pixi\renderers\webgl\WebGLRenderer.js * @sourceline 430 */ /** * @fileoverview * @author Mat Groves http://matgroves.com/ @Doormat23 -* @sourcefile /Users/rich/Documents/phaser/src/pixi/textures/BaseTexture.js +* @sourcefile d:\wamp\www\phaser\src\pixi\textures\BaseTexture.js * @sourceline 1 */ /** * @class PIXI.BaseTexture * @description A texture stores the information that represents an image. All textures have a base texture. -* @param {String} source - the source object (image or canvas) +* @param {(String|Canvas)} source - the source object (image or canvas) * @param {Number} scaleMode - See {{#crossLink "PIXI/scaleModes:property"}}PIXI.scaleModes{{/crossLink}} for possible values -* @sourcefile /Users/rich/Documents/phaser/src/pixi/textures/BaseTexture.js -* @sourceline 9 +* @sourcefile d:\wamp\www\phaser\src\pixi\textures\BaseTexture.js +* @sourceline 5 */ /** * @description The Resolution of the texture. * @member PIXI.BaseTexture#resolution * @type {Number} -* @sourcefile /Users/rich/Documents/phaser/src/pixi/textures/BaseTexture.js -* @sourceline 20 +* @sourcefile d:\wamp\www\phaser\src\pixi\textures\BaseTexture.js +* @sourceline 16 */ /** * @description [read-only] The width of the base texture set when the image has loaded * @member PIXI.BaseTexture#width * @type {Number} * @readonly -* @sourcefile /Users/rich/Documents/phaser/src/pixi/textures/BaseTexture.js -* @sourceline 28 +* @sourcefile d:\wamp\www\phaser\src\pixi\textures\BaseTexture.js +* @sourceline 24 */ /** * @description [read-only] The height of the base texture set when the image has loaded * @member PIXI.BaseTexture#height * @type {Number} * @readonly -* @sourcefile /Users/rich/Documents/phaser/src/pixi/textures/BaseTexture.js -* @sourceline 37 +* @sourcefile d:\wamp\www\phaser\src\pixi\textures\BaseTexture.js +* @sourceline 33 */ /** * @description The scale mode to apply when scaling this texture * @member PIXI.BaseTexture#scaleMode * @type {Number} * @default PIXI.scaleModes.LINEAR -* @sourcefile /Users/rich/Documents/phaser/src/pixi/textures/BaseTexture.js -* @sourceline 46 +* @sourcefile d:\wamp\www\phaser\src\pixi\textures\BaseTexture.js +* @sourceline 42 */ /** * @description [read-only] Set to true once the base texture has loaded * @member PIXI.BaseTexture#hasLoaded * @type {Boolean} * @readonly -* @sourcefile /Users/rich/Documents/phaser/src/pixi/textures/BaseTexture.js -* @sourceline 55 +* @sourcefile d:\wamp\www\phaser\src\pixi\textures\BaseTexture.js +* @sourceline 51 */ /** * @description The image source that is used to create the texture. * @member PIXI.BaseTexture#source * @type {Image} -* @sourcefile /Users/rich/Documents/phaser/src/pixi/textures/BaseTexture.js -* @sourceline 64 +* @sourcefile d:\wamp\www\phaser\src\pixi\textures\BaseTexture.js +* @sourceline 60 */ /** * @description Controls if RGB channels should be pre-multiplied by Alpha (WebGL only) * @member PIXI.BaseTexture#premultipliedAlpha * @type {Boolean} * @default true -* @sourcefile /Users/rich/Documents/phaser/src/pixi/textures/BaseTexture.js -* @sourceline 74 +* @sourcefile d:\wamp\www\phaser\src\pixi\textures\BaseTexture.js +* @sourceline 68 */ /** * @member PIXI.BaseTexture#_glTextures * @type {Array} * @access private -* @sourcefile /Users/rich/Documents/phaser/src/pixi/textures/BaseTexture.js -* @sourceline 85 +* @sourcefile d:\wamp\www\phaser\src\pixi\textures\BaseTexture.js +* @sourceline 79 */ /** * @description Set this to true if a mipmap of this texture needs to be generated. This value needs to be set before the texture is used Also the texture must be a power of two size to work * @member PIXI.BaseTexture#mipmap * @type {Boolean} -* @sourcefile /Users/rich/Documents/phaser/src/pixi/textures/BaseTexture.js -* @sourceline 92 +* @sourcefile d:\wamp\www\phaser\src\pixi\textures\BaseTexture.js +* @sourceline 86 */ /** * @member PIXI.BaseTexture#_dirty * @type {Array} * @access private -* @sourcefile /Users/rich/Documents/phaser/src/pixi/textures/BaseTexture.js -* @sourceline 101 +* @sourcefile d:\wamp\www\phaser\src\pixi\textures\BaseTexture.js +* @sourceline 95 */ /** * @description A BaseTexture can be set to skip the rendering phase in the WebGL Sprite Batch. @@ -3218,21 +3253,15 @@ You may want to do this if you have a parent Sprite with no visible texture (i.e that has children that you do want to render, without causing a batch flush in the process. * @member PIXI.BaseTexture#skipRender * @type {Boolean} -* @sourcefile /Users/rich/Documents/phaser/src/pixi/textures/BaseTexture.js -* @sourceline 121 -*/ -/** -* @member PIXI.BaseTexture#imageUrl -* @type {String} -* @sourcefile /Users/rich/Documents/phaser/src/pixi/textures/BaseTexture.js -* @sourceline 132 +* @sourcefile d:\wamp\www\phaser\src\pixi\textures\BaseTexture.js +* @sourceline 115 */ /** * @member PIXI.BaseTexture#_powerOf2 * @type {Boolean} * @access private -* @sourcefile /Users/rich/Documents/phaser/src/pixi/textures/BaseTexture.js -* @sourceline 138 +* @sourcefile d:\wamp\www\phaser\src\pixi\textures\BaseTexture.js +* @sourceline 126 */ /** * @description Forces this BaseTexture to be set as loaded, with the given width and height. @@ -3241,45 +3270,35 @@ Important for when you don't want to modify the source object by forcing in `com * @method PIXI.BaseTexture#forceLoaded * @param {Number} width - - The new width to force the BaseTexture to be. * @param {Number} height - - The new height to force the BaseTexture to be. -* @sourcefile /Users/rich/Documents/phaser/src/pixi/textures/BaseTexture.js -* @sourceline 149 +* @sourcefile d:\wamp\www\phaser\src\pixi\textures\BaseTexture.js +* @sourceline 137 */ /** * @description Destroys this base texture * @method PIXI.BaseTexture#destroy -* @sourcefile /Users/rich/Documents/phaser/src/pixi/textures/BaseTexture.js -* @sourceline 167 +* @sourcefile d:\wamp\www\phaser\src\pixi\textures\BaseTexture.js +* @sourceline 154 */ /** * @description Changes the source image of the texture * @method PIXI.BaseTexture#updateSourceImage * @param {String} newSrc - the path of the image -* @sourcefile /Users/rich/Documents/phaser/src/pixi/textures/BaseTexture.js -* @sourceline 198 +* @deprecated true +* @sourcefile d:\wamp\www\phaser\src\pixi\textures\BaseTexture.js +* @sourceline 171 */ /** * @description Sets all glTextures to be dirty. * @method PIXI.BaseTexture#dirty -* @sourcefile /Users/rich/Documents/phaser/src/pixi/textures/BaseTexture.js -* @sourceline 211 +* @sourcefile d:\wamp\www\phaser\src\pixi\textures\BaseTexture.js +* @sourceline 183 */ /** * @description Removes the base texture from the GPU, useful for managing resources on the GPU. Atexture is still 100% usable and will simply be reuploaded if there is a sprite on screen that is using it. * @method PIXI.BaseTexture#unloadFromGPU -* @sourcefile /Users/rich/Documents/phaser/src/pixi/textures/BaseTexture.js -* @sourceline 224 -*/ -/** -* @description Helper function that creates a base texture from the given image url. -If the image is not in the base texture cache it will be created and loaded. -* @method PIXI.BaseTexture.fromImage -* @param {String} imageUrl - The image url of the texture -* @param {Boolean} crossorigin - -* @param {Number} scaleMode - See {{#crossLink "PIXI/scaleModes:property"}}PIXI.scaleModes{{/crossLink}} for possible values -* @return {PIXI.BaseTexture} -* @sourcefile /Users/rich/Documents/phaser/src/pixi/textures/BaseTexture.js -* @sourceline 252 +* @sourcefile d:\wamp\www\phaser\src\pixi\textures\BaseTexture.js +* @sourceline 196 */ /** * @description Helper function that creates a base texture from the given canvas element. @@ -3287,13 +3306,13 @@ If the image is not in the base texture cache it will be created and loaded. * @param {Canvas} canvas - The canvas element source of the texture * @param {Number} scaleMode - See {{#crossLink "PIXI/scaleModes:property"}}PIXI.scaleModes{{/crossLink}} for possible values * @return {PIXI.BaseTexture} -* @sourcefile /Users/rich/Documents/phaser/src/pixi/textures/BaseTexture.js -* @sourceline 295 +* @sourcefile d:\wamp\www\phaser\src\pixi\textures\BaseTexture.js +* @sourceline 224 */ /** * @fileoverview * @author Mat Groves http://matgroves.com/ @Doormat23 -* @sourcefile /Users/rich/Documents/phaser/src/pixi/textures/RenderTexture.js +* @sourcefile d:\wamp\www\phaser\src\pixi\textures\RenderTexture.js * @sourceline 1 */ /** @@ -3323,35 +3342,35 @@ The Sprite in this case will be rendered to a position of 0,0. To render this sp * @param {(PIXI.CanvasRenderer|PIXI.WebGLRenderer)} renderer - The renderer used for this RenderTexture * @param {Number} scaleMode - See {{#crossLink "PIXI/scaleModes:property"}}PIXI.scaleModes{{/crossLink}} for possible values * @param {Number} resolution - The resolution of the texture being generated -* @sourcefile /Users/rich/Documents/phaser/src/pixi/textures/RenderTexture.js +* @sourcefile d:\wamp\www\phaser\src\pixi\textures\RenderTexture.js * @sourceline 5 */ /** * @description The with of the render texture * @member PIXI.RenderTexture#width * @type {Number} -* @sourcefile /Users/rich/Documents/phaser/src/pixi/textures/RenderTexture.js +* @sourcefile d:\wamp\www\phaser\src\pixi\textures\RenderTexture.js * @sourceline 37 */ /** * @description The height of the render texture * @member PIXI.RenderTexture#height * @type {Number} -* @sourcefile /Users/rich/Documents/phaser/src/pixi/textures/RenderTexture.js +* @sourcefile d:\wamp\www\phaser\src\pixi\textures\RenderTexture.js * @sourceline 45 */ /** * @description The Resolution of the texture. * @member PIXI.RenderTexture#resolution * @type {Number} -* @sourcefile /Users/rich/Documents/phaser/src/pixi/textures/RenderTexture.js +* @sourcefile d:\wamp\www\phaser\src\pixi\textures\RenderTexture.js * @sourceline 53 */ /** * @description The framing rectangle of the render texture * @member PIXI.RenderTexture#frame * @type {Rectangle} -* @sourcefile /Users/rich/Documents/phaser/src/pixi/textures/RenderTexture.js +* @sourcefile d:\wamp\www\phaser\src\pixi\textures\RenderTexture.js * @sourceline 61 */ /** @@ -3359,27 +3378,27 @@ The Sprite in this case will be rendered to a position of 0,0. To render this sp irrespective of the actual frame size or placement (which can be influenced by trimmed texture atlases) * @member PIXI.RenderTexture#crop * @type {Rectangle} -* @sourcefile /Users/rich/Documents/phaser/src/pixi/textures/RenderTexture.js +* @sourcefile d:\wamp\www\phaser\src\pixi\textures\RenderTexture.js * @sourceline 69 */ /** * @description The base texture object that this texture uses * @member PIXI.RenderTexture#baseTexture * @type {PIXI.BaseTexture} -* @sourcefile /Users/rich/Documents/phaser/src/pixi/textures/RenderTexture.js +* @sourcefile d:\wamp\www\phaser\src\pixi\textures\RenderTexture.js * @sourceline 78 */ /** * @description The renderer this RenderTexture uses. A RenderTexture can only belong to one renderer at the moment if its webGL. * @member PIXI.RenderTexture#renderer * @type {(PIXI.CanvasRenderer|PIXI.WebGLRenderer)} -* @sourcefile /Users/rich/Documents/phaser/src/pixi/textures/RenderTexture.js +* @sourcefile d:\wamp\www\phaser\src\pixi\textures\RenderTexture.js * @sourceline 99 */ /** * @member PIXI.RenderTexture#valid * @type {Boolean} -* @sourcefile /Users/rich/Documents/phaser/src/pixi/textures/RenderTexture.js +* @sourcefile d:\wamp\www\phaser\src\pixi\textures\RenderTexture.js * @sourceline 125 */ /** @@ -3388,60 +3407,60 @@ irrespective of the actual frame size or placement (which can be influenced by t * @param {Number} width - The width to resize to. * @param {Number} height - The height to resize to. * @param {Boolean} updateBase - Should the baseTexture.width and height values be resized as well? -* @sourcefile /Users/rich/Documents/phaser/src/pixi/textures/RenderTexture.js +* @sourcefile d:\wamp\www\phaser\src\pixi\textures\RenderTexture.js * @sourceline 139 */ /** * @description Clears the RenderTexture. * @method PIXI.RenderTexture#clear -* @sourcefile /Users/rich/Documents/phaser/src/pixi/textures/RenderTexture.js +* @sourcefile d:\wamp\www\phaser\src\pixi\textures\RenderTexture.js * @sourceline 175 */ /** * @description This function will draw the display object to the texture. * @method PIXI.RenderTexture#renderWebGL -* @param {PIXI.DisplayObject} displayObject - The display object to render this texture on +* @param {DisplayObject} displayObject - The display object to render this texture on * @param {Matrix} [matrix] - Optional matrix to apply to the display object before rendering. * @param {Boolean} [clear] - If true the texture will be cleared before the displayObject is drawn * @access private -* @sourcefile /Users/rich/Documents/phaser/src/pixi/textures/RenderTexture.js +* @sourcefile d:\wamp\www\phaser\src\pixi\textures\RenderTexture.js * @sourceline 195 */ /** * @description This function will draw the display object to the texture. * @method PIXI.RenderTexture#renderCanvas -* @param {PIXI.DisplayObject} displayObject - The display object to render this texture on +* @param {DisplayObject} displayObject - The display object to render this texture on * @param {Matrix} [matrix] - Optional matrix to apply to the display object before rendering. * @param {Boolean} [clear] - If true the texture will be cleared before the displayObject is drawn * @access private -* @sourcefile /Users/rich/Documents/phaser/src/pixi/textures/RenderTexture.js +* @sourcefile d:\wamp\www\phaser\src\pixi\textures\RenderTexture.js * @sourceline 250 */ /** * @description Will return a HTML Image of the texture * @method PIXI.RenderTexture#getImage * @return {Image} -* @sourcefile /Users/rich/Documents/phaser/src/pixi/textures/RenderTexture.js +* @sourcefile d:\wamp\www\phaser\src\pixi\textures\RenderTexture.js * @sourceline 296 */ /** * @description Will return a base64 encoded string of this texture. It works by calling RenderTexture.getCanvas and then running toDataURL on that. * @method PIXI.RenderTexture#getBase64 * @return {String} A base64 encoded string of the texture. -* @sourcefile /Users/rich/Documents/phaser/src/pixi/textures/RenderTexture.js +* @sourcefile d:\wamp\www\phaser\src\pixi\textures\RenderTexture.js * @sourceline 309 */ /** * @description Creates a Canvas element, renders this RenderTexture to it and then returns it. * @method PIXI.RenderTexture#getCanvas * @return {HTMLCanvasElement} A Canvas element with the texture rendered on. -* @sourcefile /Users/rich/Documents/phaser/src/pixi/textures/RenderTexture.js +* @sourcefile d:\wamp\www\phaser\src\pixi\textures\RenderTexture.js * @sourceline 320 */ /** * @fileoverview * @author Mat Groves http://matgroves.com/ @Doormat23 -* @sourcefile /Users/rich/Documents/phaser/src/pixi/textures/Texture.js +* @sourcefile d:\wamp\www\phaser\src\pixi\textures\Texture.js * @sourceline 1 */ /** @@ -3452,143 +3471,123 @@ to the display list directly. Instead use it as the texture for a PIXI.Sprite. I * @param {Rectangle} frame - The rectangle frame of the texture to show * @param {Rectangle} [crop] - The area of original texture * @param {Rectangle} [trim] - Trimmed texture rectangle -* @sourcefile /Users/rich/Documents/phaser/src/pixi/textures/Texture.js -* @sourceline 19 +* @sourcefile d:\wamp\www\phaser\src\pixi\textures\Texture.js +* @sourceline 14 */ /** * @description Does this Texture have any frame data assigned to it? * @member PIXI.Texture#noFrame * @type {Boolean} -* @sourcefile /Users/rich/Documents/phaser/src/pixi/textures/Texture.js -* @sourceline 33 +* @sourcefile d:\wamp\www\phaser\src\pixi\textures\Texture.js +* @sourceline 28 */ /** * @description The base texture that this texture uses. * @member PIXI.Texture#baseTexture * @type {PIXI.BaseTexture} -* @sourcefile /Users/rich/Documents/phaser/src/pixi/textures/Texture.js -* @sourceline 52 +* @sourcefile d:\wamp\www\phaser\src\pixi\textures\Texture.js +* @sourceline 47 */ /** * @description The frame specifies the region of the base texture that this texture uses * @member PIXI.Texture#frame * @type {Rectangle} -* @sourcefile /Users/rich/Documents/phaser/src/pixi/textures/Texture.js -* @sourceline 60 +* @sourcefile d:\wamp\www\phaser\src\pixi\textures\Texture.js +* @sourceline 55 */ /** * @description The texture trim data. * @member PIXI.Texture#trim * @type {Rectangle} -* @sourcefile /Users/rich/Documents/phaser/src/pixi/textures/Texture.js -* @sourceline 68 +* @sourcefile d:\wamp\www\phaser\src\pixi\textures\Texture.js +* @sourceline 63 */ /** * @description This will let the renderer know if the texture is valid. If it's not then it cannot be rendered. * @member PIXI.Texture#valid * @type {Boolean} -* @sourcefile /Users/rich/Documents/phaser/src/pixi/textures/Texture.js -* @sourceline 76 +* @sourcefile d:\wamp\www\phaser\src\pixi\textures\Texture.js +* @sourceline 71 */ /** * @description Is this a tiling texture? As used by the likes of a TilingSprite. * @member PIXI.Texture#isTiling * @type {Boolean} -* @sourcefile /Users/rich/Documents/phaser/src/pixi/textures/Texture.js -* @sourceline 84 +* @sourcefile d:\wamp\www\phaser\src\pixi\textures\Texture.js +* @sourceline 79 */ /** * @description This will let a renderer know that a texture has been updated (used mainly for webGL uv updates) * @member PIXI.Texture#requiresUpdate * @type {Boolean} -* @sourcefile /Users/rich/Documents/phaser/src/pixi/textures/Texture.js -* @sourceline 92 +* @sourcefile d:\wamp\www\phaser\src\pixi\textures\Texture.js +* @sourceline 87 */ /** * @description This will let a renderer know that a tinted parent has updated its texture. * @member PIXI.Texture#requiresReTint * @type {Boolean} -* @sourcefile /Users/rich/Documents/phaser/src/pixi/textures/Texture.js -* @sourceline 100 +* @sourcefile d:\wamp\www\phaser\src\pixi\textures\Texture.js +* @sourceline 95 */ /** * @description The WebGL UV data cache. * @member PIXI.Texture#_uvs * @type {Object} * @access private -* @sourcefile /Users/rich/Documents/phaser/src/pixi/textures/Texture.js -* @sourceline 108 +* @sourcefile d:\wamp\www\phaser\src\pixi\textures\Texture.js +* @sourceline 103 */ /** * @description The width of the Texture in pixels. * @member PIXI.Texture#width * @type {Number} -* @sourcefile /Users/rich/Documents/phaser/src/pixi/textures/Texture.js -* @sourceline 117 +* @sourcefile d:\wamp\www\phaser\src\pixi\textures\Texture.js +* @sourceline 112 */ /** * @description The height of the Texture in pixels. * @member PIXI.Texture#height * @type {Number} -* @sourcefile /Users/rich/Documents/phaser/src/pixi/textures/Texture.js -* @sourceline 125 +* @sourcefile d:\wamp\www\phaser\src\pixi\textures\Texture.js +* @sourceline 120 */ /** * @description This is the area of the BaseTexture image to actually copy to the Canvas / WebGL when rendering, irrespective of the actual frame size or placement (which can be influenced by trimmed texture atlases) * @member PIXI.Texture#crop * @type {Rectangle} -* @sourcefile /Users/rich/Documents/phaser/src/pixi/textures/Texture.js -* @sourceline 133 +* @sourcefile d:\wamp\www\phaser\src\pixi\textures\Texture.js +* @sourceline 128 */ /** * @description Called when the base texture is loaded * @method PIXI.Texture#onBaseTextureLoaded * @access private -* @sourcefile /Users/rich/Documents/phaser/src/pixi/textures/Texture.js -* @sourceline 152 +* @sourcefile d:\wamp\www\phaser\src\pixi\textures\Texture.js +* @sourceline 147 */ /** * @description Destroys this texture * @method PIXI.Texture#destroy * @param {Boolean} destroyBase - Whether to destroy the base texture as well -* @sourcefile /Users/rich/Documents/phaser/src/pixi/textures/Texture.js -* @sourceline 170 +* @sourcefile d:\wamp\www\phaser\src\pixi\textures\Texture.js +* @sourceline 165 */ /** * @description Specifies the region of the baseTexture that this texture will use. * @method PIXI.Texture#setFrame * @param {Rectangle} frame - The frame of the texture to set it to -* @sourcefile /Users/rich/Documents/phaser/src/pixi/textures/Texture.js -* @sourceline 183 +* @sourcefile d:\wamp\www\phaser\src\pixi\textures\Texture.js +* @sourceline 178 */ /** * @description Updates the internal WebGL UV cache. * @method PIXI.Texture#_updateUvs * @access private -* @sourcefile /Users/rich/Documents/phaser/src/pixi/textures/Texture.js -* @sourceline 227 -*/ -/** -* @description Helper function that creates a Texture object from the given image url. -If the image is not in the texture cache it will be created and loaded. -* @method PIXI.Texture.fromImage -* @param {String} imageUrl - The image url of the texture -* @param {Boolean} crossorigin - Whether requests should be treated as crossorigin -* @param {Number} scaleMode - See {{#crossLink "PIXI/scaleModes:property"}}PIXI.scaleModes{{/crossLink}} for possible values -* @return {PIXI.Texture} -* @sourcefile /Users/rich/Documents/phaser/src/pixi/textures/Texture.js -* @sourceline 254 -*/ -/** -* @description Helper function that returns a Texture objected based on the given frame id. -If the frame id is not in the texture cache an error will be thrown. -* @method PIXI.Texture.fromFrame -* @param {String} frameId - The frame id of the texture -* @return {PIXI.Texture} -* @sourcefile /Users/rich/Documents/phaser/src/pixi/textures/Texture.js -* @sourceline 278 +* @sourcefile d:\wamp\www\phaser\src\pixi\textures\Texture.js +* @sourceline 222 */ /** * @description Helper function that creates a new a Texture based on the given canvas element. @@ -3596,35 +3595,19 @@ If the frame id is not in the texture cache an error will be thrown. * @param {Canvas} canvas - The canvas element source of the texture * @param {Number} scaleMode - See {{#crossLink "PIXI/scaleModes:property"}}PIXI.scaleModes{{/crossLink}} for possible values * @return {PIXI.Texture} -* @sourcefile /Users/rich/Documents/phaser/src/pixi/textures/Texture.js -* @sourceline 294 -*/ -/** -* @description Adds a texture to the global PIXI.TextureCache. This cache is shared across the whole PIXI object. -* @method PIXI.Texture.addTextureToCache -* @param {PIXI.Texture} texture - The Texture to add to the cache. -* @param {String} id - The id that the texture will be stored against. -* @sourcefile /Users/rich/Documents/phaser/src/pixi/textures/Texture.js -* @sourceline 310 -*/ -/** -* @description Remove a texture from the global PIXI.TextureCache. -* @method PIXI.Texture.removeTextureFromCache -* @param {String} id - The id of the texture to be removed -* @return {PIXI.Texture} The texture that was removed -* @sourcefile /Users/rich/Documents/phaser/src/pixi/textures/Texture.js -* @sourceline 323 +* @sourcefile d:\wamp\www\phaser\src\pixi\textures\Texture.js +* @sourceline 249 */ /** * @fileoverview * @author Richard Davey -* @sourcefile /Users/rich/Documents/phaser/src/pixi/utils/CanvasPool.js +* @sourcefile d:\wamp\www\phaser\src\pixi\utils\CanvasPool.js * @sourceline 1 */ /** * @class PIXI.CanvasPool * @description The CanvasPool is a global static object that allows Pixi and Phaser to pool canvas DOM elements. -* @sourcefile /Users/rich/Documents/phaser/src/pixi/utils/CanvasPool.js +* @sourcefile d:\wamp\www\phaser\src\pixi\utils\CanvasPool.js * @sourceline 7 */ /** @@ -3634,66 +3617,66 @@ If the frame id is not in the texture cache an error will be thrown. * @param {Number} width - The width of the canvas element. * @param {Number} height - The height of the canvas element. * @return {HTMLCanvasElement} The canvas element. -* @sourcefile /Users/rich/Documents/phaser/src/pixi/utils/CanvasPool.js +* @sourcefile d:\wamp\www\phaser\src\pixi\utils\CanvasPool.js * @sourceline 15 */ /** * @description Gets the first free canvas index from the pool. * @method PIXI.CanvasPool.getFirst * @return {Number} -* @sourcefile /Users/rich/Documents/phaser/src/pixi/utils/CanvasPool.js +* @sourcefile d:\wamp\www\phaser\src\pixi\utils\CanvasPool.js * @sourceline 58 */ /** * @description Removes the parent from a canvas element from the pool, freeing it up for re-use. * @method PIXI.CanvasPool.remove * @param {} parent - The parent of the canvas element. -* @sourcefile /Users/rich/Documents/phaser/src/pixi/utils/CanvasPool.js +* @sourcefile d:\wamp\www\phaser\src\pixi\utils\CanvasPool.js * @sourceline 81 */ /** * @description Removes the parent from a canvas element from the pool, freeing it up for re-use. * @method PIXI.CanvasPool.removeByCanvas * @param {HTMLCanvasElement} canvas - The canvas element to remove -* @sourcefile /Users/rich/Documents/phaser/src/pixi/utils/CanvasPool.js -* @sourceline 102 +* @sourcefile d:\wamp\www\phaser\src\pixi\utils\CanvasPool.js +* @sourceline 104 */ /** * @description Gets the total number of used canvas elements in the pool. * @method PIXI.CanvasPool.getTotal * @return {Number} The number of in-use (parented) canvas elements in the pool. -* @sourcefile /Users/rich/Documents/phaser/src/pixi/utils/CanvasPool.js -* @sourceline 123 +* @sourcefile d:\wamp\www\phaser\src\pixi\utils\CanvasPool.js +* @sourceline 127 */ /** * @description Gets the total number of free canvas elements in the pool. * @method PIXI.CanvasPool.getFree * @return {Number} The number of free (un-parented) canvas elements in the pool. -* @sourcefile /Users/rich/Documents/phaser/src/pixi/utils/CanvasPool.js -* @sourceline 147 +* @sourcefile d:\wamp\www\phaser\src\pixi\utils\CanvasPool.js +* @sourceline 151 */ /** * @description The pool into which the canvas dom elements are placed. * @member PIXI.CanvasPool.pool * @type {Array} -* @sourcefile /Users/rich/Documents/phaser/src/pixi/utils/CanvasPool.js -* @sourceline 173 +* @sourcefile d:\wamp\www\phaser\src\pixi\utils\CanvasPool.js +* @sourceline 177 */ /** * @class PIXI.EarCut -* @sourcefile /Users/rich/Documents/phaser/src/pixi/utils/EarCut.js +* @sourcefile d:\wamp\www\phaser\src\pixi\utils\EarCut.js * @sourceline 17 */ /** * @fileoverview * @author Chad Engler https://github.com/englercj @Rolnaaba -* @sourcefile /Users/rich/Documents/phaser/src/pixi/utils/EventTarget.js +* @sourcefile d:\wamp\www\phaser\src\pixi\utils\EventTarget.js * @sourceline 1 */ /** * @class PIXI.EventTarget * @description Mixins event emitter functionality to a class -* @sourcefile /Users/rich/Documents/phaser/src/pixi/utils/EventTarget.js +* @sourcefile d:\wamp\www\phaser\src\pixi\utils\EventTarget.js * @sourceline 11 */ @@ -3702,7 +3685,7 @@ If the frame id is not in the texture cache an error will be thrown. * @description Mixes in the properties of the EventTarget prototype onto another object * @method PIXI.EventTarget#mixin * @param {Object} object - The obj to mix into -* @sourcefile /Users/rich/Documents/phaser/src/pixi/utils/EventTarget.js +* @sourcefile d:\wamp\www\phaser\src\pixi\utils\EventTarget.js * @sourceline 34 */ /** @@ -3710,7 +3693,7 @@ If the frame id is not in the texture cache an error will be thrown. * @method PIXI.EventTarget#listeners * @param {String} eventName - The events that should be listed. * @return {Array} An array of listener functions -* @sourcefile /Users/rich/Documents/phaser/src/pixi/utils/EventTarget.js +* @sourcefile d:\wamp\www\phaser\src\pixi\utils\EventTarget.js * @sourceline 41 */ /** @@ -3718,7 +3701,7 @@ If the frame id is not in the texture cache an error will be thrown. * @method PIXI.EventTarget#emit * @param {String} eventName - The name of the event. * @return {Boolean} Indication if we've emitted an event. -* @sourcefile /Users/rich/Documents/phaser/src/pixi/utils/EventTarget.js +* @sourcefile d:\wamp\www\phaser\src\pixi\utils\EventTarget.js * @sourceline 54 */ /** @@ -3726,7 +3709,7 @@ If the frame id is not in the texture cache an error will be thrown. * @method PIXI.EventTarget#on * @param {String} eventName - Name of the event. * @param {Functon} callback - fn Callback function. -* @sourcefile /Users/rich/Documents/phaser/src/pixi/utils/EventTarget.js +* @sourcefile d:\wamp\www\phaser\src\pixi\utils\EventTarget.js * @sourceline 107 */ /** @@ -3734,7 +3717,7 @@ If the frame id is not in the texture cache an error will be thrown. * @method PIXI.EventTarget#once * @param {String} eventName - Name of the event. * @param {Function} callback - Callback function. -* @sourcefile /Users/rich/Documents/phaser/src/pixi/utils/EventTarget.js +* @sourcefile d:\wamp\www\phaser\src\pixi\utils\EventTarget.js * @sourceline 124 */ /** @@ -3742,14 +3725,14 @@ If the frame id is not in the texture cache an error will be thrown. * @method PIXI.EventTarget#off * @param {String} eventName - The event we want to remove. * @param {Function} callback - The listener that we need to find. -* @sourcefile /Users/rich/Documents/phaser/src/pixi/utils/EventTarget.js +* @sourcefile d:\wamp\www\phaser\src\pixi\utils\EventTarget.js * @sourceline 143 */ /** * @description Remove all listeners or only the listeners for the specified event. * @method PIXI.EventTarget#removeAllListeners * @param {String} eventName - The event you want to remove all listeners for. -* @sourcefile /Users/rich/Documents/phaser/src/pixi/utils/EventTarget.js +* @sourcefile d:\wamp\www\phaser\src\pixi\utils\EventTarget.js * @sourceline 173 */ /** @@ -3759,7 +3742,7 @@ If the frame id is not in the texture cache an error will be thrown. * @param {Object} target - The target object that the event is called on * @param {String} name - The string name of the event that was triggered * @param {Object} data - Arbitrary event data to pass along -* @sourcefile /Users/rich/Documents/phaser/src/pixi/utils/EventTarget.js +* @sourcefile d:\wamp\www\phaser\src\pixi\utils\EventTarget.js * @sourceline 192 */ /** @@ -3769,7 +3752,7 @@ set this directly, instead use `event.stopPropagation()` * @type {Boolean} * @readonly * @access private -* @sourcefile /Users/rich/Documents/phaser/src/pixi/utils/EventTarget.js +* @sourcefile d:\wamp\www\phaser\src\pixi\utils\EventTarget.js * @sourceline 206 */ /** @@ -3779,7 +3762,7 @@ set this directly, instead use `event.stopImmediatePropagation()` * @type {Boolean} * @readonly * @access private -* @sourcefile /Users/rich/Documents/phaser/src/pixi/utils/EventTarget.js +* @sourcefile d:\wamp\www\phaser\src\pixi\utils\EventTarget.js * @sourceline 217 */ /** @@ -3787,7 +3770,7 @@ set this directly, instead use `event.stopImmediatePropagation()` * @member PIXI.Event#target * @type {Object} * @readonly -* @sourcefile /Users/rich/Documents/phaser/src/pixi/utils/EventTarget.js +* @sourcefile d:\wamp\www\phaser\src\pixi\utils\EventTarget.js * @sourceline 228 */ /** @@ -3795,7 +3778,7 @@ set this directly, instead use `event.stopImmediatePropagation()` * @member PIXI.Event#type * @type {String} * @readonly -* @sourcefile /Users/rich/Documents/phaser/src/pixi/utils/EventTarget.js +* @sourcefile d:\wamp\www\phaser\src\pixi\utils\EventTarget.js * @sourceline 237 */ /** @@ -3803,7 +3786,7 @@ set this directly, instead use `event.stopImmediatePropagation()` * @member PIXI.Event#data * @type {Object} * @readonly -* @sourcefile /Users/rich/Documents/phaser/src/pixi/utils/EventTarget.js +* @sourcefile d:\wamp\www\phaser\src\pixi\utils\EventTarget.js * @sourceline 246 */ /** @@ -3811,19 +3794,19 @@ set this directly, instead use `event.stopImmediatePropagation()` * @member PIXI.Event#timeStamp * @type {Number} * @readonly -* @sourcefile /Users/rich/Documents/phaser/src/pixi/utils/EventTarget.js +* @sourcefile d:\wamp\www\phaser\src\pixi\utils\EventTarget.js * @sourceline 258 */ /** * @description Stops the propagation of events up the scene graph (prevents bubbling). * @method PIXI.Event#stopPropagation -* @sourcefile /Users/rich/Documents/phaser/src/pixi/utils/EventTarget.js +* @sourcefile d:\wamp\www\phaser\src\pixi\utils\EventTarget.js * @sourceline 268 */ /** * @description Stops the propagation of events to sibling listeners (no longer calls any listeners). * @method PIXI.Event#stopImmediatePropagation -* @sourcefile /Users/rich/Documents/phaser/src/pixi/utils/EventTarget.js +* @sourcefile d:\wamp\www\phaser\src\pixi\utils\EventTarget.js * @sourceline 277 */ /** @@ -3831,13 +3814,13 @@ set this directly, instead use `event.stopImmediatePropagation()` * @description Based on the Polyk library http://polyk.ivank.net released under MIT licence. This is an amazing lib! Slightly modified by Mat Groves (matgroves.com); -* @sourcefile /Users/rich/Documents/phaser/src/pixi/utils/Polyk.js +* @sourcefile d:\wamp\www\phaser\src\pixi\utils\Polyk.js * @sourceline 34 */ /** * @description Triangulates shapes for webGL graphic fills. * @method PIXI.PolyK#Triangulate -* @sourcefile /Users/rich/Documents/phaser/src/pixi/utils/Polyk.js +* @sourcefile d:\wamp\www\phaser\src\pixi\utils\Polyk.js * @sourceline 42 */ /** @@ -3853,7 +3836,7 @@ Slightly modified by Mat Groves (matgroves.com); * @param {Number} cy - y coordinate of the c point of the triangle * @return {Boolean} * @access private -* @sourcefile /Users/rich/Documents/phaser/src/pixi/utils/Polyk.js +* @sourcefile d:\wamp\www\phaser\src\pixi\utils\Polyk.js * @sourceline 120 */ /** @@ -3861,13 +3844,13 @@ Slightly modified by Mat Groves (matgroves.com); * @method PIXI.PolyK#_convex * @return {Boolean} * @access private -* @sourcefile /Users/rich/Documents/phaser/src/pixi/utils/Polyk.js +* @sourcefile d:\wamp\www\phaser\src\pixi\utils\Polyk.js * @sourceline 158 */ /** * @fileoverview * @author Mat Groves http://matgroves.com/ @Doormat23 -* @sourcefile /Users/rich/Documents/phaser/src/pixi/utils/Utils.js +* @sourcefile d:\wamp\www\phaser\src\pixi\utils\Utils.js * @sourceline 1 */ /** @@ -3875,28 +3858,28 @@ Slightly modified by Mat Groves (matgroves.com); * @description Namespace-class for [pixi.js](http://www.pixijs.com/). Contains assorted static properties and enumerations. -* @sourcefile /Users/rich/Documents/phaser/src/pixi/Pixi.js +* @sourcefile d:\wamp\www\phaser\src\pixi\Pixi.js * @sourceline 11 */ /** * @description Converts a hex color number to an [R, G, B] array * @method PIXI.PIXI#hex2rgb * @param {Number} hex - -* @sourcefile /Users/rich/Documents/phaser/src/pixi/utils/Utils.js +* @sourcefile d:\wamp\www\phaser\src\pixi\utils\Utils.js * @sourceline 5 */ /** * @description Converts a color as an [R, G, B] array to a hex number * @method PIXI.PIXI#rgb2hex * @param {Array} rgb - -* @sourcefile /Users/rich/Documents/phaser/src/pixi/utils/Utils.js +* @sourcefile d:\wamp\www\phaser\src\pixi\utils\Utils.js * @sourceline 15 */ /** * @description Checks whether the Canvas BlendModes are supported by the current browser for drawImage * @method PIXI.PIXI#canUseNewCanvasBlendModes * @return {Boolean} whether they are supported -* @sourcefile /Users/rich/Documents/phaser/src/pixi/utils/Utils.js +* @sourcefile d:\wamp\www\phaser\src\pixi\utils\Utils.js * @sourceline 25 */ /** @@ -3905,7 +3888,7 @@ this function is taken from Starling Framework as its pretty neat ;) * @method PIXI.PIXI#getNextPowerOfTwo * @param {Number} number - * @return {Number} the closest number that is a power of two -* @sourcefile /Users/rich/Documents/phaser/src/pixi/utils/Utils.js +* @sourcefile d:\wamp\www\phaser\src\pixi\utils\Utils.js * @sourceline 63 */ /** @@ -3914,7 +3897,7 @@ this function is taken from Starling Framework as its pretty neat ;) * @param {Number} width - * @param {Number} height - * @return {Boolean} -* @sourcefile /Users/rich/Documents/phaser/src/pixi/utils/Utils.js +* @sourcefile d:\wamp\www\phaser\src\pixi\utils\Utils.js * @sourceline 83 */ @@ -3924,53 +3907,53 @@ this function is taken from Starling Framework as its pretty neat ;) * @description A reference to the Phaser Game instance that owns this Pixi renderer. * @member PIXI.PIXI.game * @type {PhaserGame} -* @sourcefile /Users/rich/Documents/phaser/src/pixi/Pixi.js +* @sourcefile d:\wamp\www\phaser\src\pixi\Pixi.js * @sourceline 21 */ /** * @member PIXI.PIXI.WEBGL_RENDERER * @type {Number} * @access protected -* @sourcefile /Users/rich/Documents/phaser/src/pixi/Pixi.js +* @sourcefile d:\wamp\www\phaser\src\pixi\Pixi.js * @sourceline 28 */ /** * @member PIXI.PIXI.CANVAS_RENDERER * @type {Number} * @access protected -* @sourcefile /Users/rich/Documents/phaser/src/pixi/Pixi.js +* @sourcefile d:\wamp\www\phaser\src\pixi\Pixi.js * @sourceline 35 */ /** * @description Version of pixi that is loaded. * @member PIXI.PIXI.VERSION * @type {String} -* @sourcefile /Users/rich/Documents/phaser/src/pixi/Pixi.js +* @sourcefile d:\wamp\www\phaser\src\pixi\Pixi.js * @sourceline 42 */ /** * @member PIXI.PIXI.PI_2 * @type {Number} -* @sourcefile /Users/rich/Documents/phaser/src/pixi/Pixi.js +* @sourcefile d:\wamp\www\phaser\src\pixi\Pixi.js * @sourceline 71 */ /** * @member PIXI.PIXI.RAD_TO_DEG * @type {Number} -* @sourcefile /Users/rich/Documents/phaser/src/pixi/Pixi.js +* @sourcefile d:\wamp\www\phaser\src\pixi\Pixi.js * @sourceline 77 */ /** * @member PIXI.PIXI.DEG_TO_RAD * @type {Number} -* @sourcefile /Users/rich/Documents/phaser/src/pixi/Pixi.js +* @sourcefile d:\wamp\www\phaser\src\pixi\Pixi.js * @sourceline 83 */ /** * @member PIXI.PIXI.RETINA_PREFIX * @type {String} * @access protected -* @sourcefile /Users/rich/Documents/phaser/src/pixi/Pixi.js +* @sourcefile d:\wamp\www\phaser\src\pixi\Pixi.js * @sourceline 89 */ /** @@ -3978,6 +3961,6 @@ this function is taken from Starling Framework as its pretty neat ;) {{#crossLink "WebGLRenderer"}}{{/crossLink}} or {{#crossLink "CanvasRenderer"}}{{/crossLink}}. * @member PIXI.PIXI.defaultRenderOptions * @type {Object} -* @sourcefile /Users/rich/Documents/phaser/src/pixi/Pixi.js +* @sourcefile d:\wamp\www\phaser\src\pixi\Pixi.js * @sourceline 96 */ \ No newline at end of file diff --git a/docs/src_Phaser.js.html b/docs/src_Phaser.js.html index dad312a38..0f6a3ef83 100644 --- a/docs/src_Phaser.js.html +++ b/docs/src_Phaser.js.html @@ -708,10 +708,6 @@ ComplexPrimitiveShader -
  • - DisplayObject -
  • -
  • DisplayObjectContainer
  • @@ -744,6 +740,10 @@ PIXI +
  • + DisplayObject +
  • +
  • PixiFastShader
  • @@ -1241,7 +1241,7 @@ var Phaser = Phaser || { * @constant * @type {string} */ - VERSION: '2.5.0', + VERSION: '2.6.0', /** * An array of Phaser game instances. @@ -1786,7 +1786,7 @@ var Phaser = Phaser || { Documentation generated by JSDoc 3.3.3 - on Fri Jun 17 2016 12:45:29 GMT+0100 (BST) using the DocStrap template. + on Fri Jul 08 2016 15:42:34 GMT+0100 (GMT Daylight Time) using the DocStrap template. diff --git a/docs/src_animation_Animation.js.html b/docs/src_animation_Animation.js.html index dadc92f4d..0049b815e 100644 --- a/docs/src_animation_Animation.js.html +++ b/docs/src_animation_Animation.js.html @@ -708,10 +708,6 @@ ComplexPrimitiveShader -
  • - DisplayObject -
  • -
  • DisplayObjectContainer
  • @@ -744,6 +740,10 @@ PIXI +
  • + DisplayObject +
  • +
  • PixiFastShader
  • @@ -1532,7 +1532,7 @@ Phaser.Animation.prototype = { { for (var i = 0; i < this._frames.length; i++) { - if (this._frames[i] === frameIndex) + if (this._frames[i] === frameId) { frameIndex = i; } @@ -2127,7 +2127,7 @@ Phaser.Animation.generateFrameNames = function (prefix, start, stop, suffix, zer Documentation generated by JSDoc 3.3.3 - on Fri Jun 17 2016 12:45:29 GMT+0100 (BST) using the DocStrap template. + on Fri Jul 08 2016 15:42:34 GMT+0100 (GMT Daylight Time) using the DocStrap template. diff --git a/docs/src_animation_AnimationManager.js.html b/docs/src_animation_AnimationManager.js.html index aa431c89d..f821d8225 100644 --- a/docs/src_animation_AnimationManager.js.html +++ b/docs/src_animation_AnimationManager.js.html @@ -708,10 +708,6 @@ ComplexPrimitiveShader -
  • - DisplayObject -
  • -
  • DisplayObjectContainer
  • @@ -744,6 +740,10 @@ PIXI +
  • + DisplayObject +
  • +
  • PixiFastShader
  • @@ -1626,7 +1626,7 @@ Phaser.AnimationManager.prototype = { refreshFrame: function () { // TODO - this.sprite.setTexture(PIXI.TextureCache[this.currentFrame.uuid]); + // this.sprite.setTexture(PIXI.TextureCache[this.currentFrame.uuid]); }, @@ -1813,7 +1813,7 @@ Object.defineProperty(Phaser.AnimationManager.prototype, 'frameName', { Documentation generated by JSDoc 3.3.3 - on Fri Jun 17 2016 12:45:29 GMT+0100 (BST) using the DocStrap template. + on Fri Jul 08 2016 15:42:34 GMT+0100 (GMT Daylight Time) using the DocStrap template. diff --git a/docs/src_animation_AnimationParser.js.html b/docs/src_animation_AnimationParser.js.html index dedc9abd8..42a5ae0be 100644 --- a/docs/src_animation_AnimationParser.js.html +++ b/docs/src_animation_AnimationParser.js.html @@ -708,10 +708,6 @@ ComplexPrimitiveShader -
  • - DisplayObject -
  • -
  • DisplayObjectContainer
  • @@ -744,6 +740,10 @@ PIXI +
  • + DisplayObject +
  • +
  • PixiFastShader
  • @@ -1572,7 +1572,7 @@ Phaser.AnimationParser = { Documentation generated by JSDoc 3.3.3 - on Fri Jun 17 2016 12:45:29 GMT+0100 (BST) using the DocStrap template. + on Fri Jul 08 2016 15:42:34 GMT+0100 (GMT Daylight Time) using the DocStrap template. diff --git a/docs/src_animation_Frame.js.html b/docs/src_animation_Frame.js.html index 6502f6647..c87237954 100644 --- a/docs/src_animation_Frame.js.html +++ b/docs/src_animation_Frame.js.html @@ -708,10 +708,6 @@ ComplexPrimitiveShader -
  • - DisplayObject -
  • -
  • DisplayObjectContainer
  • @@ -744,6 +740,10 @@ PIXI +
  • + DisplayObject +
  • +
  • PixiFastShader
  • @@ -1475,7 +1475,7 @@ Phaser.Frame.prototype.constructor = Phaser.Frame; Documentation generated by JSDoc 3.3.3 - on Fri Jun 17 2016 12:45:29 GMT+0100 (BST) using the DocStrap template. + on Fri Jul 08 2016 15:42:34 GMT+0100 (GMT Daylight Time) using the DocStrap template. diff --git a/docs/src_animation_FrameData.js.html b/docs/src_animation_FrameData.js.html index 4136f53a9..3feabffcf 100644 --- a/docs/src_animation_FrameData.js.html +++ b/docs/src_animation_FrameData.js.html @@ -708,10 +708,6 @@ ComplexPrimitiveShader -
  • - DisplayObject -
  • -
  • DisplayObjectContainer
  • @@ -744,6 +740,10 @@ PIXI +
  • + DisplayObject +
  • +
  • PixiFastShader
  • @@ -1523,7 +1523,7 @@ Object.defineProperty(Phaser.FrameData.prototype, "total", { Documentation generated by JSDoc 3.3.3 - on Fri Jun 17 2016 12:45:29 GMT+0100 (BST) using the DocStrap template. + on Fri Jul 08 2016 15:42:34 GMT+0100 (GMT Daylight Time) using the DocStrap template. diff --git a/docs/src_core_Camera.js.html b/docs/src_core_Camera.js.html index db80426ee..dee0f227b 100644 --- a/docs/src_core_Camera.js.html +++ b/docs/src_core_Camera.js.html @@ -708,10 +708,6 @@ ComplexPrimitiveShader -
  • - DisplayObject -
  • -
  • DisplayObjectContainer
  • @@ -744,6 +740,10 @@ PIXI +
  • + DisplayObject +
  • +
  • PixiFastShader
  • @@ -2184,7 +2184,7 @@ Object.defineProperty(Phaser.Camera.prototype, "shakeIntensity", { Documentation generated by JSDoc 3.3.3 - on Fri Jun 17 2016 12:45:29 GMT+0100 (BST) using the DocStrap template. + on Fri Jul 08 2016 15:42:34 GMT+0100 (GMT Daylight Time) using the DocStrap template. diff --git a/docs/src_core_Create.js.html b/docs/src_core_Create.js.html index 8bc31ab90..3e962d60d 100644 --- a/docs/src_core_Create.js.html +++ b/docs/src_core_Create.js.html @@ -708,10 +708,6 @@ ComplexPrimitiveShader -
  • - DisplayObject -
  • -
  • DisplayObjectContainer
  • @@ -744,6 +740,10 @@ PIXI +
  • + DisplayObject +
  • +
  • PixiFastShader
  • @@ -1449,7 +1449,7 @@ Phaser.Create.prototype.constructor = Phaser.Create; Documentation generated by JSDoc 3.3.3 - on Fri Jun 17 2016 12:45:29 GMT+0100 (BST) using the DocStrap template. + on Fri Jul 08 2016 15:42:34 GMT+0100 (GMT Daylight Time) using the DocStrap template. diff --git a/docs/src_core_Filter.js.html b/docs/src_core_Filter.js.html index 393912d5a..08db66203 100644 --- a/docs/src_core_Filter.js.html +++ b/docs/src_core_Filter.js.html @@ -708,10 +708,6 @@ ComplexPrimitiveShader -
  • - DisplayObject -
  • -
  • DisplayObjectContainer
  • @@ -744,6 +740,10 @@ PIXI +
  • + DisplayObject +
  • +
  • PixiFastShader
  • @@ -1492,7 +1492,7 @@ Object.defineProperty(Phaser.Filter.prototype, 'height', { Documentation generated by JSDoc 3.3.3 - on Fri Jun 17 2016 12:45:29 GMT+0100 (BST) using the DocStrap template. + on Fri Jul 08 2016 15:42:34 GMT+0100 (GMT Daylight Time) using the DocStrap template. diff --git a/docs/src_core_FlexGrid.js.html b/docs/src_core_FlexGrid.js.html index cf9f70eb3..97174fbf6 100644 --- a/docs/src_core_FlexGrid.js.html +++ b/docs/src_core_FlexGrid.js.html @@ -708,10 +708,6 @@ ComplexPrimitiveShader -
  • - DisplayObject -
  • -
  • DisplayObjectContainer
  • @@ -744,6 +740,10 @@ PIXI +
  • + DisplayObject +
  • +
  • PixiFastShader
  • @@ -1572,7 +1572,7 @@ Phaser.FlexGrid.prototype.constructor = Phaser.FlexGrid; Documentation generated by JSDoc 3.3.3 - on Fri Jun 17 2016 12:45:29 GMT+0100 (BST) using the DocStrap template. + on Fri Jul 08 2016 15:42:34 GMT+0100 (GMT Daylight Time) using the DocStrap template. diff --git a/docs/src_core_FlexLayer.js.html b/docs/src_core_FlexLayer.js.html index 6b87e091a..75ff7c8a2 100644 --- a/docs/src_core_FlexLayer.js.html +++ b/docs/src_core_FlexLayer.js.html @@ -708,10 +708,6 @@ ComplexPrimitiveShader -
  • - DisplayObject -
  • -
  • DisplayObjectContainer
  • @@ -744,6 +740,10 @@ PIXI +
  • + DisplayObject +
  • +
  • PixiFastShader
  • @@ -1360,7 +1360,7 @@ Phaser.FlexLayer.prototype.debug = function () { Documentation generated by JSDoc 3.3.3 - on Fri Jun 17 2016 12:45:29 GMT+0100 (BST) using the DocStrap template. + on Fri Jul 08 2016 15:42:34 GMT+0100 (GMT Daylight Time) using the DocStrap template. diff --git a/docs/src_core_Game.js.html b/docs/src_core_Game.js.html index e8a39e34c..37549b7d7 100644 --- a/docs/src_core_Game.js.html +++ b/docs/src_core_Game.js.html @@ -708,10 +708,6 @@ ComplexPrimitiveShader -
  • - DisplayObject -
  • -
  • DisplayObjectContainer
  • @@ -744,6 +740,10 @@ PIXI +
  • + DisplayObject +
  • +
  • PixiFastShader
  • @@ -2447,7 +2447,7 @@ Object.defineProperty(Phaser.Game.prototype, "paused", { Documentation generated by JSDoc 3.3.3 - on Fri Jun 17 2016 12:45:29 GMT+0100 (BST) using the DocStrap template. + on Fri Jul 08 2016 15:42:34 GMT+0100 (GMT Daylight Time) using the DocStrap template. diff --git a/docs/src_core_Group.js.html b/docs/src_core_Group.js.html index a28b86589..f4ba75fd7 100644 --- a/docs/src_core_Group.js.html +++ b/docs/src_core_Group.js.html @@ -708,10 +708,6 @@ ComplexPrimitiveShader -
  • - DisplayObject -
  • -
  • DisplayObjectContainer
  • @@ -744,6 +740,10 @@ PIXI +
  • + DisplayObject +
  • +
  • PixiFastShader
  • @@ -2001,6 +2001,8 @@ Phaser.Group.prototype.align = function (rows, columns, cellWidth, cellHeight, p else { // We keep laying them out until we hit the column limit + r.x += cellWidth; + if (r.x === w) { r.x = 0; @@ -3431,17 +3433,24 @@ Phaser.Group.prototype.getBottom = function () { }; /** -* Get the closest child to given Object. +* Get the closest child to given Object, with optional callback to filter children. * * This can be a Sprite, Group, Image or any object with public x and y properties. * * 'close' is determined by the distance from the objects `x` and `y` properties compared to the childs `x` and `y` properties. * +* You can use the optional `callback` argument to apply your own filter to the distance checks. +* If the child is closer then the previous child, it will be sent to `callback` as the first argument, +* with the distance as the second. The callback should return `true` if it passes your +* filtering criteria, otherwise it should return `false`. +* * @method Phaser.Group#getClosestTo * @param {any} object - The object used to determine the distance. This can be a Sprite, Group, Image or any object with public x and y properties. -* @return {any} The child closest to given object, or null if no child was found. +* @param {function} [callback] - The function that each child will be evaluated against. Each child of the group will be passed to it as its first parameter, with the distance as the second. It should return `true` if the child passes the matching criteria. +* @param {object} [callbackContext] - The context in which the function should be called (usually 'this'). +* @return {any} The child closest to given object, or `null` if no child was found. */ -Phaser.Group.prototype.getClosestTo = function (object) { +Phaser.Group.prototype.getClosestTo = function (object, callback, callbackContext) { var distance = Number.MAX_VALUE; var tempDistance = 0; @@ -3455,7 +3464,7 @@ Phaser.Group.prototype.getClosestTo = function (object) { { tempDistance = Math.abs(Phaser.Point.distance(object, child)); - if (tempDistance < distance) + if (tempDistance < distance && (!callback || callback.call(callbackContext, child, tempDistance))) { distance = tempDistance; result = child; @@ -3468,17 +3477,24 @@ Phaser.Group.prototype.getClosestTo = function (object) { }; /** -* Get the child furthest away from the given Object. +* Get the child furthest away from the given Object, with optional callback to filter children. * * This can be a Sprite, Group, Image or any object with public x and y properties. * * 'furthest away' is determined by the distance from the objects `x` and `y` properties compared to the childs `x` and `y` properties. * +* You can use the optional `callback` argument to apply your own filter to the distance checks. +* If the child is closer then the previous child, it will be sent to `callback` as the first argument, +* with the distance as the second. The callback should return `true` if it passes your +* filtering criteria, otherwise it should return `false`. +* * @method Phaser.Group#getFurthestFrom * @param {any} object - The object used to determine the distance. This can be a Sprite, Group, Image or any object with public x and y properties. -* @return {any} The child furthest from the given object, or null if no child was found. +* @param {function} [callback] - The function that each child will be evaluated against. Each child of the group will be passed to it as its first parameter, with the distance as the second. It should return `true` if the child passes the matching criteria. +* @param {object} [callbackContext] - The context in which the function should be called (usually 'this'). +* @return {any} The child furthest from the given object, or `null` if no child was found. */ -Phaser.Group.prototype.getFurthestFrom = function (object) { +Phaser.Group.prototype.getFurthestFrom = function (object, callback, callbackContext) { var distance = 0; var tempDistance = 0; @@ -3492,7 +3508,7 @@ Phaser.Group.prototype.getFurthestFrom = function (object) { { tempDistance = Math.abs(Phaser.Point.distance(object, child)); - if (tempDistance > distance) + if (tempDistance > distance && (!callback || callback.call(callbackContext, child, tempDistance))) { distance = tempDistance; result = child; @@ -3824,6 +3840,289 @@ Object.defineProperty(Phaser.Group.prototype, "angle", { }); +/** +* The center x coordinate of this Group. +* +* It is derived by calling `getBounds`, calculating the Groups dimensions based on its +* visible children. +* +* Note that no ancestors are factored into the result, meaning that if this Group is +* nested within another Group, with heavy transforms on it, the result of this property +* is likely to be incorrect. It is safe to get and set this property if the Group is a +* top-level descendant of Phaser.World, or untransformed parents. +* +* @name Phaser.Group#centerX +* @property {number} centerX +*/ +Object.defineProperty(Phaser.Group.prototype, "centerX", { + + get: function () { + + return this.getBounds().centerX; + + }, + + set: function (value) { + + var r = this.getBounds(); + var offset = this.x - r.x; + + this.x = (value + offset) - r.halfWidth; + + } + +}); + +/** +* The center y coordinate of this Group. +* +* It is derived by calling `getBounds`, calculating the Groups dimensions based on its +* visible children. +* +* Note that no ancestors are factored into the result, meaning that if this Group is +* nested within another Group, with heavy transforms on it, the result of this property +* is likely to be incorrect. It is safe to get and set this property if the Group is a +* top-level descendant of Phaser.World, or untransformed parents. +* +* @name Phaser.Group#centerY +* @property {number} centerY +*/ +Object.defineProperty(Phaser.Group.prototype, "centerY", { + + get: function () { + + return this.getBounds().centerY; + + }, + + set: function (value) { + + var r = this.getBounds(); + var offset = this.y - r.y; + + this.y = (value + offset) - r.halfHeight; + + } + +}); + +/** +* The left coordinate of this Group. +* +* It is derived by calling `getBounds`, calculating the Groups dimensions based on its +* visible children. +* +* Note that no ancestors are factored into the result, meaning that if this Group is +* nested within another Group, with heavy transforms on it, the result of this property +* is likely to be incorrect. It is safe to get and set this property if the Group is a +* top-level descendant of Phaser.World, or untransformed parents. +* +* @name Phaser.Group#left +* @property {number} left +*/ +Object.defineProperty(Phaser.Group.prototype, "left", { + + get: function () { + + return this.getBounds().left; + + }, + + set: function (value) { + + var r = this.getBounds(); + var offset = this.x - r.x; + + this.x = value + offset; + + } + +}); + +/** +* The right coordinate of this Group. +* +* It is derived by calling `getBounds`, calculating the Groups dimensions based on its +* visible children. +* +* Note that no ancestors are factored into the result, meaning that if this Group is +* nested within another Group, with heavy transforms on it, the result of this property +* is likely to be incorrect. It is safe to get and set this property if the Group is a +* top-level descendant of Phaser.World, or untransformed parents. +* +* @name Phaser.Group#right +* @property {number} right +*/ +Object.defineProperty(Phaser.Group.prototype, "right", { + + get: function () { + + return this.getBounds().right; + + }, + + set: function (value) { + + var r = this.getBounds(); + var offset = this.x - r.x; + + this.x = (value + offset) - r.width; + + } + +}); + +/** +* The top coordinate of this Group. +* +* It is derived by calling `getBounds`, calculating the Groups dimensions based on its +* visible children. +* +* Note that no ancestors are factored into the result, meaning that if this Group is +* nested within another Group, with heavy transforms on it, the result of this property +* is likely to be incorrect. It is safe to get and set this property if the Group is a +* top-level descendant of Phaser.World, or untransformed parents. +* +* @name Phaser.Group#top +* @property {number} top +*/ +Object.defineProperty(Phaser.Group.prototype, "top", { + + get: function () { + + return this.getBounds().top; + + }, + + set: function (value) { + + var r = this.getBounds(); + var offset = this.y - r.y; + + this.y = (value + offset); + + } + +}); + +/** +* The bottom coordinate of this Group. +* +* It is derived by calling `getBounds`, calculating the Groups dimensions based on its +* visible children. +* +* Note that no ancestors are factored into the result, meaning that if this Group is +* nested within another Group, with heavy transforms on it, the result of this property +* is likely to be incorrect. It is safe to get and set this property if the Group is a +* top-level descendant of Phaser.World, or untransformed parents. +* +* @name Phaser.Group#bottom +* @property {number} bottom +*/ +Object.defineProperty(Phaser.Group.prototype, "bottom", { + + get: function () { + + return this.getBounds().bottom; + + }, + + set: function (value) { + + var r = this.getBounds(); + var offset = this.y - r.y; + + this.y = (value + offset) - r.height; + + } + +}); + +/** +* Aligns this Group within another Game Object, or Rectangle, known as the +* 'container', to one of 9 possible positions. +* +* The container must be a Game Object, or Phaser.Rectangle object. This can include properties +* such as `World.bounds` or `Camera.view`, for aligning Groups within the world +* and camera bounds. Or it can include other Sprites, Images, Text objects, BitmapText, +* TileSprites or Buttons. +* +* Please note that aligning a Group to another Game Object does **not** make it a child of +* the container. It simply modifies its position coordinates so it aligns with it. +* +* The position constants you can use are: +* +* `Phaser.TOP_LEFT`, `Phaser.TOP_CENTER`, `Phaser.TOP_RIGHT`, `Phaser.LEFT_CENTER`, +* `Phaser.CENTER`, `Phaser.RIGHT_CENTER`, `Phaser.BOTTOM_LEFT`, +* `Phaser.BOTTOM_CENTER` and `Phaser.BOTTOM_RIGHT`. +* +* Groups are placed in such a way that their _bounds_ align with the +* container, taking into consideration rotation and scale of its children. +* This allows you to neatly align Groups, irrespective of their position value. +* +* The optional `offsetX` and `offsetY` arguments allow you to apply extra spacing to the final +* aligned position of the Group. For example: +* +* `group.alignIn(background, Phaser.BOTTOM_RIGHT, -20, -20)` +* +* Would align the `group` to the bottom-right, but moved 20 pixels in from the corner. +* Think of the offsets as applying an adjustment to the containers bounds before the alignment takes place. +* So providing a negative offset will 'shrink' the container bounds by that amount, and providing a positive +* one expands it. +* +* @method Phaser.Group#alignIn +* @param {Phaser.Rectangle|Phaser.Sprite|Phaser.Image|Phaser.Text|Phaser.BitmapText|Phaser.Button|Phaser.Graphics|Phaser.TileSprite} container - The Game Object or Rectangle with which to align this Group to. Can also include properties such as `World.bounds` or `Camera.view`. +* @param {integer} [position] - The position constant. One of `Phaser.TOP_LEFT` (default), `Phaser.TOP_CENTER`, `Phaser.TOP_RIGHT`, `Phaser.LEFT_CENTER`, `Phaser.CENTER`, `Phaser.RIGHT_CENTER`, `Phaser.BOTTOM_LEFT`, `Phaser.BOTTOM_CENTER` or `Phaser.BOTTOM_RIGHT`. +* @param {integer} [offsetX=0] - A horizontal adjustment of the Containers bounds, applied to the aligned position of the Game Object. Use a negative value to shrink the bounds, positive to increase it. +* @param {integer} [offsetY=0] - A vertical adjustment of the Containers bounds, applied to the aligned position of the Game Object. Use a negative value to shrink the bounds, positive to increase it. +* @return {Phaser.Group} This Group. +*/ + +// This function is set at the bottom of src/gameobjects/components/Bounds.js + +/** +* Aligns this Group to the side of another Game Object, or Rectangle, known as the +* 'parent', in one of 11 possible positions. +* +* The parent must be a Game Object, or Phaser.Rectangle object. This can include properties +* such as `World.bounds` or `Camera.view`, for aligning Groups within the world +* and camera bounds. Or it can include other Sprites, Images, Text objects, BitmapText, +* TileSprites or Buttons. +* +* Please note that aligning a Group to another Game Object does **not** make it a child of +* the parent. It simply modifies its position coordinates so it aligns with it. +* +* The position constants you can use are: +* +* `Phaser.TOP_LEFT` (default), `Phaser.TOP_CENTER`, `Phaser.TOP_RIGHT`, `Phaser.LEFT_TOP`, +* `Phaser.LEFT_CENTER`, `Phaser.LEFT_BOTTOM`, `Phaser.RIGHT_TOP`, `Phaser.RIGHT_CENTER`, +* `Phaser.RIGHT_BOTTOM`, `Phaser.BOTTOM_LEFT`, `Phaser.BOTTOM_CENTER` +* and `Phaser.BOTTOM_RIGHT`. +* +* Groups are placed in such a way that their _bounds_ align with the +* parent, taking into consideration rotation and scale of the children. +* This allows you to neatly align Groups, irrespective of their position value. +* +* The optional `offsetX` and `offsetY` arguments allow you to apply extra spacing to the final +* aligned position of the Group. For example: +* +* `group.alignTo(background, Phaser.BOTTOM_RIGHT, -20, -20)` +* +* Would align the `group` to the bottom-right, but moved 20 pixels in from the corner. +* Think of the offsets as applying an adjustment to the parents bounds before the alignment takes place. +* So providing a negative offset will 'shrink' the parent bounds by that amount, and providing a positive +* one expands it. +* +* @method Phaser.Group#alignTo +* @param {Phaser.Rectangle|Phaser.Sprite|Phaser.Image|Phaser.Text|Phaser.BitmapText|Phaser.Button|Phaser.Graphics|Phaser.TileSprite} parent - The Game Object or Rectangle with which to align this Group to. Can also include properties such as `World.bounds` or `Camera.view`. +* @param {integer} [position] - The position constant. One of `Phaser.TOP_LEFT`, `Phaser.TOP_CENTER`, `Phaser.TOP_RIGHT`, `Phaser.LEFT_TOP`, `Phaser.LEFT_CENTER`, `Phaser.LEFT_BOTTOM`, `Phaser.RIGHT_TOP`, `Phaser.RIGHT_CENTER`, `Phaser.RIGHT_BOTTOM`, `Phaser.BOTTOM_LEFT`, `Phaser.BOTTOM_CENTER` or `Phaser.BOTTOM_RIGHT`. +* @param {integer} [offsetX=0] - A horizontal adjustment of the Containers bounds, applied to the aligned position of the Game Object. Use a negative value to shrink the bounds, positive to increase it. +* @param {integer} [offsetY=0] - A vertical adjustment of the Containers bounds, applied to the aligned position of the Game Object. Use a negative value to shrink the bounds, positive to increase it. +* @return {Phaser.Group} This Group. +*/ + +// This function is set at the bottom of src/gameobjects/components/Bounds.js + /** * A display object is any object that can be rendered in the Phaser/pixi.js scene graph. * @@ -3896,7 +4195,7 @@ Object.defineProperty(Phaser.Group.prototype, "angle", { Documentation generated by JSDoc 3.3.3 - on Fri Jun 17 2016 12:45:29 GMT+0100 (BST) using the DocStrap template. + on Fri Jul 08 2016 15:42:34 GMT+0100 (GMT Daylight Time) using the DocStrap template. diff --git a/docs/src_core_Plugin.js.html b/docs/src_core_Plugin.js.html index ed272eb47..cfe280c9d 100644 --- a/docs/src_core_Plugin.js.html +++ b/docs/src_core_Plugin.js.html @@ -708,10 +708,6 @@ ComplexPrimitiveShader -
  • - DisplayObject -
  • -
  • DisplayObjectContainer
  • @@ -744,6 +740,10 @@ PIXI +
  • + DisplayObject +
  • +
  • PixiFastShader
  • @@ -1367,7 +1367,7 @@ Phaser.Plugin.prototype.constructor = Phaser.Plugin; Documentation generated by JSDoc 3.3.3 - on Fri Jun 17 2016 12:45:29 GMT+0100 (BST) using the DocStrap template. + on Fri Jul 08 2016 15:42:34 GMT+0100 (GMT Daylight Time) using the DocStrap template. diff --git a/docs/src_core_PluginManager.js.html b/docs/src_core_PluginManager.js.html index 878ceeb5d..dae2e8497 100644 --- a/docs/src_core_PluginManager.js.html +++ b/docs/src_core_PluginManager.js.html @@ -708,10 +708,6 @@ ComplexPrimitiveShader -
  • - DisplayObject -
  • -
  • DisplayObjectContainer
  • @@ -744,6 +740,10 @@ PIXI +
  • + DisplayObject +
  • +
  • PixiFastShader
  • @@ -1539,7 +1539,7 @@ Phaser.PluginManager.prototype.constructor = Phaser.PluginManager; Documentation generated by JSDoc 3.3.3 - on Fri Jun 17 2016 12:45:29 GMT+0100 (BST) using the DocStrap template. + on Fri Jul 08 2016 15:42:34 GMT+0100 (GMT Daylight Time) using the DocStrap template. diff --git a/docs/src_core_ScaleManager.js.html b/docs/src_core_ScaleManager.js.html index dcc2cbec7..86c7d2b97 100644 --- a/docs/src_core_ScaleManager.js.html +++ b/docs/src_core_ScaleManager.js.html @@ -708,10 +708,6 @@ ComplexPrimitiveShader -
  • - DisplayObject -
  • -
  • DisplayObjectContainer
  • @@ -744,6 +740,10 @@ PIXI +
  • + DisplayObject +
  • +
  • PixiFastShader
  • @@ -3620,7 +3620,7 @@ Object.defineProperty(Phaser.ScaleManager.prototype, "isGameLandscape", { Documentation generated by JSDoc 3.3.3 - on Fri Jun 17 2016 12:45:29 GMT+0100 (BST) using the DocStrap template. + on Fri Jul 08 2016 15:42:35 GMT+0100 (GMT Daylight Time) using the DocStrap template. diff --git a/docs/src_core_Signal.js.html b/docs/src_core_Signal.js.html index b66f214f5..4b01b37eb 100644 --- a/docs/src_core_Signal.js.html +++ b/docs/src_core_Signal.js.html @@ -708,10 +708,6 @@ ComplexPrimitiveShader -
  • - DisplayObject -
  • -
  • DisplayObjectContainer
  • @@ -744,6 +740,10 @@ PIXI +
  • + DisplayObject +
  • +
  • PixiFastShader
  • @@ -1750,7 +1750,7 @@ Phaser.Signal.prototype.constructor = Phaser.Signal; Documentation generated by JSDoc 3.3.3 - on Fri Jun 17 2016 12:45:29 GMT+0100 (BST) using the DocStrap template. + on Fri Jul 08 2016 15:42:35 GMT+0100 (GMT Daylight Time) using the DocStrap template. diff --git a/docs/src_core_SignalBinding.js.html b/docs/src_core_SignalBinding.js.html index fcc64aa10..7b0a78062 100644 --- a/docs/src_core_SignalBinding.js.html +++ b/docs/src_core_SignalBinding.js.html @@ -708,10 +708,6 @@ ComplexPrimitiveShader -
  • - DisplayObject -
  • -
  • DisplayObjectContainer
  • @@ -744,6 +740,10 @@ PIXI +
  • + DisplayObject +
  • +
  • PixiFastShader
  • @@ -1444,7 +1444,7 @@ Phaser.SignalBinding.prototype.constructor = Phaser.SignalBinding; Documentation generated by JSDoc 3.3.3 - on Fri Jun 17 2016 12:45:29 GMT+0100 (BST) using the DocStrap template. + on Fri Jul 08 2016 15:42:35 GMT+0100 (GMT Daylight Time) using the DocStrap template. diff --git a/docs/src_core_Stage.js.html b/docs/src_core_Stage.js.html index e7e64dcf0..c0b07cc04 100644 --- a/docs/src_core_Stage.js.html +++ b/docs/src_core_Stage.js.html @@ -708,10 +708,6 @@ ComplexPrimitiveShader -
  • - DisplayObject -
  • -
  • DisplayObjectContainer
  • @@ -744,6 +740,10 @@ PIXI +
  • + DisplayObject +
  • +
  • PixiFastShader
  • @@ -1657,7 +1657,7 @@ Object.defineProperty(Phaser.Stage.prototype, "smoothed", { Documentation generated by JSDoc 3.3.3 - on Fri Jun 17 2016 12:45:29 GMT+0100 (BST) using the DocStrap template. + on Fri Jul 08 2016 15:42:35 GMT+0100 (GMT Daylight Time) using the DocStrap template. diff --git a/docs/src_core_State.js.html b/docs/src_core_State.js.html index 3411a6149..cc066322a 100644 --- a/docs/src_core_State.js.html +++ b/docs/src_core_State.js.html @@ -708,10 +708,6 @@ ComplexPrimitiveShader -
  • - DisplayObject -
  • -
  • DisplayObjectContainer
  • @@ -744,6 +740,10 @@ PIXI +
  • + DisplayObject +
  • +
  • PixiFastShader
  • @@ -1476,7 +1476,7 @@ Phaser.State.prototype.constructor = Phaser.State; Documentation generated by JSDoc 3.3.3 - on Fri Jun 17 2016 12:45:29 GMT+0100 (BST) using the DocStrap template. + on Fri Jul 08 2016 15:42:35 GMT+0100 (GMT Daylight Time) using the DocStrap template. diff --git a/docs/src_core_StateManager.js.html b/docs/src_core_StateManager.js.html index ad70ebea9..4152fdf11 100644 --- a/docs/src_core_StateManager.js.html +++ b/docs/src_core_StateManager.js.html @@ -708,10 +708,6 @@ ComplexPrimitiveShader -
  • - DisplayObject -
  • -
  • DisplayObjectContainer
  • @@ -744,6 +740,10 @@ PIXI +
  • + DisplayObject +
  • +
  • PixiFastShader
  • @@ -2036,7 +2036,7 @@ Object.defineProperty(Phaser.StateManager.prototype, "created", { Documentation generated by JSDoc 3.3.3 - on Fri Jun 17 2016 12:45:29 GMT+0100 (BST) using the DocStrap template. + on Fri Jul 08 2016 15:42:35 GMT+0100 (GMT Daylight Time) using the DocStrap template. diff --git a/docs/src_core_World.js.html b/docs/src_core_World.js.html index 04dc890b2..591296acd 100644 --- a/docs/src_core_World.js.html +++ b/docs/src_core_World.js.html @@ -708,10 +708,6 @@ ComplexPrimitiveShader -
  • - DisplayObject -
  • -
  • DisplayObjectContainer
  • @@ -744,6 +740,10 @@ PIXI +
  • + DisplayObject +
  • +
  • PixiFastShader
  • @@ -1606,7 +1606,7 @@ Object.defineProperty(Phaser.World.prototype, "randomY", { Documentation generated by JSDoc 3.3.3 - on Fri Jun 17 2016 12:45:29 GMT+0100 (BST) using the DocStrap template. + on Fri Jul 08 2016 15:42:35 GMT+0100 (GMT Daylight Time) using the DocStrap template. diff --git a/docs/src_gameobjects_BitmapData.js.html b/docs/src_gameobjects_BitmapData.js.html index 0ac1b5ac2..2f5ad1dbd 100644 --- a/docs/src_gameobjects_BitmapData.js.html +++ b/docs/src_gameobjects_BitmapData.js.html @@ -708,10 +708,6 @@ ComplexPrimitiveShader -
  • - DisplayObject -
  • -
  • DisplayObjectContainer
  • @@ -744,6 +740,10 @@ PIXI +
  • + DisplayObject +
  • +
  • PixiFastShader
  • @@ -1245,11 +1245,13 @@ * @param {string} key - Internal Phaser reference key for the BitmapData. * @param {number} [width=256] - The width of the BitmapData in pixels. If undefined or zero it's set to a default value. * @param {number} [height=256] - The height of the BitmapData in pixels. If undefined or zero it's set to a default value. +* @param {boolean} [skipPool=false] - When this BitmapData generates its internal canvas to use for rendering, it will get the canvas from the CanvasPool if false, or create its own if true. */ -Phaser.BitmapData = function (game, key, width, height) { +Phaser.BitmapData = function (game, key, width, height, skipPool) { if (width === undefined || width === 0) { width = 256; } if (height === undefined || height === 0) { height = 256; } + if (skipPool === undefined) { skipPool = false; } /** * @property {Phaser.Game} game - A reference to the currently running game. @@ -1275,7 +1277,7 @@ Phaser.BitmapData = function (game, key, width, height) { * @property {HTMLCanvasElement} canvas - The canvas to which this BitmapData draws. * @default */ - this.canvas = PIXI.CanvasPool.create(this, width, height); + this.canvas = Phaser.Canvas.create(this, width, height, null, skipPool); /** * @property {CanvasRenderingContext2D} context - The 2d context of the canvas. @@ -2777,7 +2779,13 @@ Phaser.BitmapData.prototype = { /** * Draws the given Phaser.Sprite, Phaser.Image or Phaser.Text to this BitmapData at the coordinates specified. * You can use the optional width and height values to 'stretch' the sprite as it is drawn. This uses drawImage stretching, not scaling. - * When drawing it will take into account the Sprites rotation, scale and alpha values. + * + * The children will be drawn at their `x` and `y` world space coordinates. If this is outside the bounds of the BitmapData they won't be visible. + * When drawing it will take into account the rotation, scale, scaleMode, alpha and tint values. + * + * Note: You should ensure that at least 1 full update has taken place before calling this, + * otherwise the objects are likely to render incorrectly, if at all. + * You can trigger an update yourself by calling `stage.updateTransform()` before calling `draw`. * * @method Phaser.BitmapData#draw * @param {Phaser.Sprite|Phaser.Image|Phaser.Text|Phaser.RenderTexture} source - The Sprite, Image or Text object to draw onto this BitmapData. @@ -2808,7 +2816,7 @@ Phaser.BitmapData.prototype = { * * Note: You should ensure that at least 1 full update has taken place before calling this, * otherwise the objects are likely to render incorrectly, if at all. - * You can trigger an update yourself by calling `stage.updateTransform()` before calling `drawGroup`. + * You can trigger an update yourself by calling `stage.updateTransform()` before calling `drawGroup`. * * @method Phaser.BitmapData#drawGroup * @param {Phaser.Group} group - The Group to draw onto this BitmapData. Can also be Phaser.World. @@ -3677,7 +3685,7 @@ Phaser.BitmapData.prototype.constructor = Phaser.BitmapData; Documentation generated by JSDoc 3.3.3 - on Fri Jun 17 2016 12:45:29 GMT+0100 (BST) using the DocStrap template. + on Fri Jul 08 2016 15:42:34 GMT+0100 (GMT Daylight Time) using the DocStrap template. diff --git a/docs/src_gameobjects_BitmapText.js.html b/docs/src_gameobjects_BitmapText.js.html index 1319f7082..c584e9f08 100644 --- a/docs/src_gameobjects_BitmapText.js.html +++ b/docs/src_gameobjects_BitmapText.js.html @@ -708,10 +708,6 @@ ComplexPrimitiveShader -
  • - DisplayObject -
  • -
  • DisplayObjectContainer
  • @@ -744,6 +740,10 @@ PIXI +
  • + DisplayObject +
  • +
  • PixiFastShader
  • @@ -1956,7 +1956,7 @@ Object.defineProperty(Phaser.BitmapText.prototype, 'smoothed', { Documentation generated by JSDoc 3.3.3 - on Fri Jun 17 2016 12:45:29 GMT+0100 (BST) using the DocStrap template. + on Fri Jul 08 2016 15:42:34 GMT+0100 (GMT Daylight Time) using the DocStrap template. diff --git a/docs/src_gameobjects_Button.js.html b/docs/src_gameobjects_Button.js.html index b3ce9357e..aa4394ee7 100644 --- a/docs/src_gameobjects_Button.js.html +++ b/docs/src_gameobjects_Button.js.html @@ -708,10 +708,6 @@ ComplexPrimitiveShader -
  • - DisplayObject -
  • -
  • DisplayObjectContainer
  • @@ -744,6 +740,10 @@ PIXI +
  • + DisplayObject +
  • +
  • PixiFastShader
  • @@ -1840,7 +1840,7 @@ Phaser.Button.prototype.onInputUpHandler = function (sprite, pointer, isOver) { Documentation generated by JSDoc 3.3.3 - on Fri Jun 17 2016 12:45:29 GMT+0100 (BST) using the DocStrap template. + on Fri Jul 08 2016 15:42:34 GMT+0100 (GMT Daylight Time) using the DocStrap template. diff --git a/docs/src_gameobjects_Creature.js.html b/docs/src_gameobjects_Creature.js.html index 774749c9b..7bba1e3fe 100644 --- a/docs/src_gameobjects_Creature.js.html +++ b/docs/src_gameobjects_Creature.js.html @@ -708,10 +708,6 @@ ComplexPrimitiveShader -
  • - DisplayObject -
  • -
  • DisplayObjectContainer
  • @@ -744,6 +740,10 @@ PIXI +
  • + DisplayObject +
  • +
  • PixiFastShader
  • @@ -1307,7 +1307,7 @@ Phaser.Creature = function (game, x, y, key, mesh, animation) { if (typeof key === 'string') { - var texture = game.cache.getPixiTexture(key); + var texture = new PIXI.Texture(game.cache.getBaseTexture(key)); } else { @@ -1726,7 +1726,7 @@ Object.defineProperty(Phaser.Creature.prototype, 'loop', { Documentation generated by JSDoc 3.3.3 - on Fri Jun 17 2016 12:45:29 GMT+0100 (BST) using the DocStrap template. + on Fri Jul 08 2016 15:42:34 GMT+0100 (GMT Daylight Time) using the DocStrap template. diff --git a/docs/src_gameobjects_GameObjectCreator.js.html b/docs/src_gameobjects_GameObjectCreator.js.html index 9f23e3915..239147229 100644 --- a/docs/src_gameobjects_GameObjectCreator.js.html +++ b/docs/src_gameobjects_GameObjectCreator.js.html @@ -708,10 +708,6 @@ ComplexPrimitiveShader -
  • - DisplayObject -
  • -
  • DisplayObjectContainer
  • @@ -744,6 +740,10 @@ PIXI +
  • + DisplayObject +
  • +
  • PixiFastShader
  • @@ -1674,7 +1674,7 @@ Phaser.GameObjectCreator.prototype.constructor = Phaser.GameObjectCreator; Documentation generated by JSDoc 3.3.3 - on Fri Jun 17 2016 12:45:29 GMT+0100 (BST) using the DocStrap template. + on Fri Jul 08 2016 15:42:34 GMT+0100 (GMT Daylight Time) using the DocStrap template. diff --git a/docs/src_gameobjects_GameObjectFactory.js.html b/docs/src_gameobjects_GameObjectFactory.js.html index 50f53efd6..14599ac57 100644 --- a/docs/src_gameobjects_GameObjectFactory.js.html +++ b/docs/src_gameobjects_GameObjectFactory.js.html @@ -708,10 +708,6 @@ ComplexPrimitiveShader -
  • - DisplayObject -
  • -
  • DisplayObjectContainer
  • @@ -744,6 +740,10 @@ PIXI +
  • + DisplayObject +
  • +
  • PixiFastShader
  • @@ -1837,7 +1837,7 @@ Phaser.GameObjectFactory.prototype.constructor = Phaser.GameObjectFactory; Documentation generated by JSDoc 3.3.3 - on Fri Jun 17 2016 12:45:29 GMT+0100 (BST) using the DocStrap template. + on Fri Jul 08 2016 15:42:34 GMT+0100 (GMT Daylight Time) using the DocStrap template. diff --git a/docs/src_gameobjects_Graphics.js.html b/docs/src_gameobjects_Graphics.js.html index 44ec6138d..424454ac1 100644 --- a/docs/src_gameobjects_Graphics.js.html +++ b/docs/src_gameobjects_Graphics.js.html @@ -708,10 +708,6 @@ ComplexPrimitiveShader -
  • - DisplayObject -
  • -
  • DisplayObjectContainer
  • @@ -744,6 +740,10 @@ PIXI +
  • + DisplayObject +
  • +
  • PixiFastShader
  • @@ -1231,7 +1231,29 @@ */ /** -* Creates a new `Graphics` object. +* A Graphics object is a way to draw primitives to your game. Primitives include forms of geometry, such as Rectangles, +* Circles and Polygons. They also include lines, arcs and curves. When you initially create a Graphics object it will +* be empty. To 'draw' to it you first specify a lineStyle or fillStyle (or both), and then draw a shape. For example: +* +* ``` +* graphics.beginFill(0xff0000); +* graphics.drawCircle(50, 50, 100); +* graphics.endFill(); +* ``` +* +* This will draw a circle shape to the Graphics object, with a diameter of 100, located at x: 50, y: 50. +* +* When a Graphics object is rendered it will render differently based on if the game is running under Canvas or +* WebGL. Under Canvas it will use the HTML Canvas context drawing operations to draw the path. Under WebGL the +* graphics data is decomposed into polygons. Both of these are expensive processes, especially with complex shapes. +* +* If your Graphics object doesn't change much (or at all) once you've drawn your shape to it, then you will help +* performance by calling `Graphics.generateTexture`. This will 'bake' the Graphics object into a Texture, and return it. +* You can then use this Texture for Sprites or other display objects. If your Graphics object updates frequently then +* you should avoid doing this, as it will constantly generate new textures, which will consume memory. +* +* As you can tell, Graphics objects are a bit of a trade-off. While they are extremely useful, you need to be careful +* in their complexity and quantity of them in your game. * * @class Phaser.Graphics * @constructor @@ -1460,7 +1482,7 @@ Phaser.Graphics.prototype.drawTriangles = function(vertices, indices, cull) { Documentation generated by JSDoc 3.3.3 - on Fri Jun 17 2016 12:45:29 GMT+0100 (BST) using the DocStrap template. + on Fri Jul 08 2016 15:42:34 GMT+0100 (GMT Daylight Time) using the DocStrap template. diff --git a/docs/src_gameobjects_Image.js.html b/docs/src_gameobjects_Image.js.html index 1914cde52..640fda553 100644 --- a/docs/src_gameobjects_Image.js.html +++ b/docs/src_gameobjects_Image.js.html @@ -708,10 +708,6 @@ ComplexPrimitiveShader -
  • - DisplayObject -
  • -
  • DisplayObjectContainer
  • @@ -744,6 +740,10 @@ PIXI +
  • + DisplayObject +
  • +
  • PixiFastShader
  • @@ -1271,7 +1271,7 @@ Phaser.Image = function (game, x, y, key, frame) { */ this.type = Phaser.IMAGE; - PIXI.Sprite.call(this, PIXI.TextureCache['__default']); + PIXI.Sprite.call(this, Phaser.Cache.DEFAULT); Phaser.Component.Core.init.call(this, game, x, y, key, frame); @@ -1337,7 +1337,7 @@ Phaser.Image.prototype.preUpdate = function() { Documentation generated by JSDoc 3.3.3 - on Fri Jun 17 2016 12:45:29 GMT+0100 (BST) using the DocStrap template. + on Fri Jul 08 2016 15:42:34 GMT+0100 (GMT Daylight Time) using the DocStrap template. diff --git a/docs/src_gameobjects_Particle.js.html b/docs/src_gameobjects_Particle.js.html index f5d03c6d0..7c4e37183 100644 --- a/docs/src_gameobjects_Particle.js.html +++ b/docs/src_gameobjects_Particle.js.html @@ -708,10 +708,6 @@ ComplexPrimitiveShader -
  • - DisplayObject -
  • -
  • DisplayObjectContainer
  • @@ -744,6 +740,10 @@ PIXI +
  • + DisplayObject +
  • +
  • PixiFastShader
  • @@ -1410,7 +1410,7 @@ Phaser.Particle.prototype.reset = function(x, y, health) { Documentation generated by JSDoc 3.3.3 - on Fri Jun 17 2016 12:45:29 GMT+0100 (BST) using the DocStrap template. + on Fri Jul 08 2016 15:42:34 GMT+0100 (GMT Daylight Time) using the DocStrap template. diff --git a/docs/src_gameobjects_RenderTexture.js.html b/docs/src_gameobjects_RenderTexture.js.html index 6e32823e5..03a3f947c 100644 --- a/docs/src_gameobjects_RenderTexture.js.html +++ b/docs/src_gameobjects_RenderTexture.js.html @@ -708,10 +708,6 @@ ComplexPrimitiveShader -
  • - DisplayObject -
  • -
  • DisplayObjectContainer
  • @@ -744,6 +740,10 @@ PIXI +
  • + DisplayObject +
  • +
  • PixiFastShader
  • @@ -1398,7 +1398,7 @@ Phaser.RenderTexture.prototype.render = function (displayObject, matrix, clear) Documentation generated by JSDoc 3.3.3 - on Fri Jun 17 2016 12:45:29 GMT+0100 (BST) using the DocStrap template. + on Fri Jul 08 2016 15:42:34 GMT+0100 (GMT Daylight Time) using the DocStrap template. diff --git a/docs/src_gameobjects_RetroFont.js.html b/docs/src_gameobjects_RetroFont.js.html index 44a465921..8d3bac66b 100644 --- a/docs/src_gameobjects_RetroFont.js.html +++ b/docs/src_gameobjects_RetroFont.js.html @@ -708,10 +708,6 @@ ComplexPrimitiveShader -
  • - DisplayObject -
  • -
  • DisplayObjectContainer
  • @@ -744,6 +740,10 @@ PIXI +
  • + DisplayObject +
  • +
  • PixiFastShader
  • @@ -1849,7 +1849,7 @@ Object.defineProperty(Phaser.RetroFont.prototype, "smoothed", { Documentation generated by JSDoc 3.3.3 - on Fri Jun 17 2016 12:45:29 GMT+0100 (BST) using the DocStrap template. + on Fri Jul 08 2016 15:42:34 GMT+0100 (GMT Daylight Time) using the DocStrap template. diff --git a/docs/src_gameobjects_Rope.js.html b/docs/src_gameobjects_Rope.js.html index 71fe7f2db..6910b22e2 100644 --- a/docs/src_gameobjects_Rope.js.html +++ b/docs/src_gameobjects_Rope.js.html @@ -708,10 +708,6 @@ ComplexPrimitiveShader -
  • - DisplayObject -
  • -
  • DisplayObjectContainer
  • @@ -744,6 +740,10 @@ PIXI +
  • + DisplayObject +
  • +
  • PixiFastShader
  • @@ -1282,7 +1282,7 @@ Phaser.Rope = function (game, x, y, key, frame, points) { */ this.type = Phaser.ROPE; - PIXI.Rope.call(this, PIXI.TextureCache['__default'], this.points); + PIXI.Rope.call(this, Phaser.Cache.DEFAULT, this.points); Phaser.Component.Core.init.call(this, game, x, y, key, frame); @@ -1454,7 +1454,7 @@ Object.defineProperty(Phaser.Rope.prototype, "segments", { Documentation generated by JSDoc 3.3.3 - on Fri Jun 17 2016 12:45:29 GMT+0100 (BST) using the DocStrap template. + on Fri Jul 08 2016 15:42:34 GMT+0100 (GMT Daylight Time) using the DocStrap template. diff --git a/docs/src_gameobjects_Sprite.js.html b/docs/src_gameobjects_Sprite.js.html index dd504740b..1beffaed5 100644 --- a/docs/src_gameobjects_Sprite.js.html +++ b/docs/src_gameobjects_Sprite.js.html @@ -708,10 +708,6 @@ ComplexPrimitiveShader -
  • - DisplayObject -
  • -
  • DisplayObjectContainer
  • @@ -744,6 +740,10 @@ PIXI +
  • + DisplayObject +
  • +
  • PixiFastShader
  • @@ -1286,7 +1286,7 @@ Phaser.Sprite = function (game, x, y, key, frame) { */ this.physicsType = Phaser.SPRITE; - PIXI.Sprite.call(this, PIXI.TextureCache['__default']); + PIXI.Sprite.call(this, Phaser.Cache.DEFAULT); Phaser.Component.Core.init.call(this, game, x, y, key, frame); @@ -1361,7 +1361,7 @@ Phaser.Sprite.prototype.preUpdate = function() { Documentation generated by JSDoc 3.3.3 - on Fri Jun 17 2016 12:45:29 GMT+0100 (BST) using the DocStrap template. + on Fri Jul 08 2016 15:42:34 GMT+0100 (GMT Daylight Time) using the DocStrap template. diff --git a/docs/src_gameobjects_SpriteBatch.js.html b/docs/src_gameobjects_SpriteBatch.js.html index acf94cac7..230735c3c 100644 --- a/docs/src_gameobjects_SpriteBatch.js.html +++ b/docs/src_gameobjects_SpriteBatch.js.html @@ -708,10 +708,6 @@ ComplexPrimitiveShader -
  • - DisplayObject -
  • -
  • DisplayObjectContainer
  • @@ -744,6 +740,10 @@ PIXI +
  • + DisplayObject +
  • +
  • PixiFastShader
  • @@ -1286,7 +1286,7 @@ Phaser.SpriteBatch.prototype.constructor = Phaser.SpriteBatch; Documentation generated by JSDoc 3.3.3 - on Fri Jun 17 2016 12:45:29 GMT+0100 (BST) using the DocStrap template. + on Fri Jul 08 2016 15:42:35 GMT+0100 (GMT Daylight Time) using the DocStrap template. diff --git a/docs/src_gameobjects_Text.js.html b/docs/src_gameobjects_Text.js.html index 209cc2716..4428d9690 100644 --- a/docs/src_gameobjects_Text.js.html +++ b/docs/src_gameobjects_Text.js.html @@ -708,10 +708,6 @@ ComplexPrimitiveShader -
  • - DisplayObject -
  • -
  • DisplayObjectContainer
  • @@ -744,6 +740,10 @@ PIXI +
  • + DisplayObject +
  • +
  • PixiFastShader
  • @@ -2476,18 +2476,34 @@ Phaser.Text.prototype.componentsToFont = function (components) { }; /** - * The text to be displayed by this Text object. - * Use a \n to insert a carriage return and split the text. - * The text will be rendered with any style currently set. - * - * @method Phaser.Text#setText - * @param {string} [text] - The text to be displayed. Set to an empty string to clear text that is already present. - * @return {Phaser.Text} This Text instance. - */ -Phaser.Text.prototype.setText = function (text) { +* The text to be displayed by this Text object. +* Use a \n to insert a carriage return and split the text. +* The text will be rendered with any style currently set. +* +* Use the optional `immediate` argument if you need the Text display to update immediately. +* +* If not it will re-create the texture of this Text object during the next time the render +* loop is called. +* +* @method Phaser.Text#setText +* @param {string} [text] - The text to be displayed. Set to an empty string to clear text that is already present. +* @param {boolean} [immediate=false] - Update the texture used by this Text object immediately (true) or automatically during the next render loop (false). +* @return {Phaser.Text} This Text instance. +*/ +Phaser.Text.prototype.setText = function (text, immediate) { + + if (immediate === undefined) { immediate = false; } this.text = text.toString() || ''; - this.dirty = true; + + if (immediate) + { + this.updateText(); + } + else + { + this.dirty = true; + } return this; @@ -3498,7 +3514,7 @@ Object.defineProperty(Phaser.Text.prototype, 'height', { Phaser.Text.fontPropertiesCache = {}; -Phaser.Text.fontPropertiesCanvas = PIXI.CanvasPool.create(Phaser.Text.fontPropertiesCanvas); +Phaser.Text.fontPropertiesCanvas = document.createElement('canvas'); Phaser.Text.fontPropertiesContext = Phaser.Text.fontPropertiesCanvas.getContext('2d'); @@ -3521,7 +3537,7 @@ Phaser.Text.fontPropertiesContext = Phaser.Text.fontPropertiesCanvas.getContext( Documentation generated by JSDoc 3.3.3 - on Fri Jun 17 2016 12:45:29 GMT+0100 (BST) using the DocStrap template. + on Fri Jul 08 2016 15:42:35 GMT+0100 (GMT Daylight Time) using the DocStrap template. diff --git a/docs/src_gameobjects_TileSprite.js.html b/docs/src_gameobjects_TileSprite.js.html index 338d2f521..35164eceb 100644 --- a/docs/src_gameobjects_TileSprite.js.html +++ b/docs/src_gameobjects_TileSprite.js.html @@ -708,10 +708,6 @@ ComplexPrimitiveShader -
  • - DisplayObject -
  • -
  • DisplayObjectContainer
  • @@ -744,6 +740,10 @@ PIXI +
  • + DisplayObject +
  • +
  • PixiFastShader
  • @@ -1459,7 +1459,7 @@ Phaser.TileSprite.prototype.reset = function(x, y) { Documentation generated by JSDoc 3.3.3 - on Fri Jun 17 2016 12:45:29 GMT+0100 (BST) using the DocStrap template. + on Fri Jul 08 2016 15:42:35 GMT+0100 (GMT Daylight Time) using the DocStrap template. diff --git a/docs/src_gameobjects_Video.js.html b/docs/src_gameobjects_Video.js.html index 63efa6760..0d6870ded 100644 --- a/docs/src_gameobjects_Video.js.html +++ b/docs/src_gameobjects_Video.js.html @@ -708,10 +708,6 @@ ComplexPrimitiveShader -
  • - DisplayObject -
  • -
  • DisplayObjectContainer
  • @@ -744,6 +740,10 @@ PIXI +
  • + DisplayObject +
  • +
  • PixiFastShader
  • @@ -1478,7 +1478,7 @@ Phaser.Video = function (game, key, url) { } else { - this.baseTexture = new PIXI.BaseTexture(PIXI.TextureCache['__default'].baseTexture.source); + this.baseTexture = new PIXI.BaseTexture(Phaser.Cache.DEFAULT.baseTexture.source); this.baseTexture.forceLoaded(this.width, this.height); } @@ -2651,7 +2651,7 @@ Phaser.Video.prototype.constructor = Phaser.Video; Documentation generated by JSDoc 3.3.3 - on Fri Jun 17 2016 12:45:29 GMT+0100 (BST) using the DocStrap template. + on Fri Jul 08 2016 15:42:35 GMT+0100 (GMT Daylight Time) using the DocStrap template. diff --git a/docs/src_gameobjects_components_Angle.js.html b/docs/src_gameobjects_components_Angle.js.html index d0529643d..495b57f0a 100644 --- a/docs/src_gameobjects_components_Angle.js.html +++ b/docs/src_gameobjects_components_Angle.js.html @@ -708,10 +708,6 @@ ComplexPrimitiveShader -
  • - DisplayObject -
  • -
  • DisplayObjectContainer
  • @@ -744,6 +740,10 @@ PIXI +
  • + DisplayObject +
  • +
  • PixiFastShader
  • @@ -1290,7 +1290,7 @@ Phaser.Component.Angle.prototype = { Documentation generated by JSDoc 3.3.3 - on Fri Jun 17 2016 12:45:29 GMT+0100 (BST) using the DocStrap template. + on Fri Jul 08 2016 15:42:34 GMT+0100 (GMT Daylight Time) using the DocStrap template. diff --git a/docs/src_gameobjects_components_Animation.js.html b/docs/src_gameobjects_components_Animation.js.html index fb7dad24c..09f1f0898 100644 --- a/docs/src_gameobjects_components_Animation.js.html +++ b/docs/src_gameobjects_components_Animation.js.html @@ -708,10 +708,6 @@ ComplexPrimitiveShader -
  • - DisplayObject -
  • -
  • DisplayObjectContainer
  • @@ -744,6 +740,10 @@ PIXI +
  • + DisplayObject +
  • +
  • PixiFastShader
  • @@ -1285,7 +1285,7 @@ Phaser.Component.Animation.prototype = { Documentation generated by JSDoc 3.3.3 - on Fri Jun 17 2016 12:45:29 GMT+0100 (BST) using the DocStrap template. + on Fri Jul 08 2016 15:42:34 GMT+0100 (GMT Daylight Time) using the DocStrap template. diff --git a/docs/src_gameobjects_components_AutoCull.js.html b/docs/src_gameobjects_components_AutoCull.js.html index 8579a8331..bcb193e1c 100644 --- a/docs/src_gameobjects_components_AutoCull.js.html +++ b/docs/src_gameobjects_components_AutoCull.js.html @@ -708,10 +708,6 @@ ComplexPrimitiveShader -
  • - DisplayObject -
  • -
  • DisplayObjectContainer
  • @@ -744,6 +740,10 @@ PIXI +
  • + DisplayObject +
  • +
  • PixiFastShader
  • @@ -1299,7 +1299,7 @@ Phaser.Component.AutoCull.prototype = { Documentation generated by JSDoc 3.3.3 - on Fri Jun 17 2016 12:45:29 GMT+0100 (BST) using the DocStrap template. + on Fri Jul 08 2016 15:42:34 GMT+0100 (GMT Daylight Time) using the DocStrap template. diff --git a/docs/src_gameobjects_components_Bounds.js.html b/docs/src_gameobjects_components_Bounds.js.html index 7f6ab481f..0f79fc5d0 100644 --- a/docs/src_gameobjects_components_Bounds.js.html +++ b/docs/src_gameobjects_components_Bounds.js.html @@ -708,10 +708,6 @@ ComplexPrimitiveShader -
  • - DisplayObject -
  • -
  • DisplayObjectContainer
  • @@ -744,6 +740,10 @@ PIXI +
  • + DisplayObject +
  • +
  • PixiFastShader
  • @@ -1618,6 +1618,11 @@ Phaser.Component.Bounds.prototype = { } }; + +// Phaser.Group extensions + +Phaser.Group.prototype.alignIn = Phaser.Component.Bounds.prototype.alignIn; +Phaser.Group.prototype.alignTo = Phaser.Component.Bounds.prototype.alignTo; @@ -1639,7 +1644,7 @@ Phaser.Component.Bounds.prototype = { Documentation generated by JSDoc 3.3.3 - on Fri Jun 17 2016 12:45:29 GMT+0100 (BST) using the DocStrap template. + on Fri Jul 08 2016 15:42:34 GMT+0100 (GMT Daylight Time) using the DocStrap template. diff --git a/docs/src_gameobjects_components_BringToTop.js.html b/docs/src_gameobjects_components_BringToTop.js.html index 22e42ebf8..031153522 100644 --- a/docs/src_gameobjects_components_BringToTop.js.html +++ b/docs/src_gameobjects_components_BringToTop.js.html @@ -708,10 +708,6 @@ ComplexPrimitiveShader -
  • - DisplayObject -
  • -
  • DisplayObjectContainer
  • @@ -744,6 +740,10 @@ PIXI +
  • + DisplayObject +
  • +
  • PixiFastShader
  • @@ -1341,7 +1341,7 @@ Phaser.Component.BringToTop.prototype.moveDown = function () { Documentation generated by JSDoc 3.3.3 - on Fri Jun 17 2016 12:45:29 GMT+0100 (BST) using the DocStrap template. + on Fri Jul 08 2016 15:42:34 GMT+0100 (GMT Daylight Time) using the DocStrap template. diff --git a/docs/src_gameobjects_components_Component.js.html b/docs/src_gameobjects_components_Component.js.html index a61904fec..5c1a3d4d0 100644 --- a/docs/src_gameobjects_components_Component.js.html +++ b/docs/src_gameobjects_components_Component.js.html @@ -708,10 +708,6 @@ ComplexPrimitiveShader -
  • - DisplayObject -
  • -
  • DisplayObjectContainer
  • @@ -744,6 +740,10 @@ PIXI +
  • + DisplayObject +
  • +
  • PixiFastShader
  • @@ -1252,7 +1252,7 @@ Phaser.Component = function () {}; Documentation generated by JSDoc 3.3.3 - on Fri Jun 17 2016 12:45:29 GMT+0100 (BST) using the DocStrap template. + on Fri Jul 08 2016 15:42:34 GMT+0100 (GMT Daylight Time) using the DocStrap template. diff --git a/docs/src_gameobjects_components_Core.js.html b/docs/src_gameobjects_components_Core.js.html index 96041bcb0..e508d24bc 100644 --- a/docs/src_gameobjects_components_Core.js.html +++ b/docs/src_gameobjects_components_Core.js.html @@ -708,10 +708,6 @@ ComplexPrimitiveShader -
  • - DisplayObject -
  • -
  • DisplayObjectContainer
  • @@ -744,6 +740,10 @@ PIXI +
  • + DisplayObject +
  • +
  • PixiFastShader
  • @@ -1607,7 +1607,7 @@ Phaser.Component.Core.prototype = { Documentation generated by JSDoc 3.3.3 - on Fri Jun 17 2016 12:45:29 GMT+0100 (BST) using the DocStrap template. + on Fri Jul 08 2016 15:42:34 GMT+0100 (GMT Daylight Time) using the DocStrap template. diff --git a/docs/src_gameobjects_components_Crop.js.html b/docs/src_gameobjects_components_Crop.js.html index 766b0f246..424bd8d3e 100644 --- a/docs/src_gameobjects_components_Crop.js.html +++ b/docs/src_gameobjects_components_Crop.js.html @@ -708,10 +708,6 @@ ComplexPrimitiveShader -
  • - DisplayObject -
  • -
  • DisplayObjectContainer
  • @@ -744,6 +740,10 @@ PIXI +
  • + DisplayObject +
  • +
  • PixiFastShader
  • @@ -1362,7 +1362,7 @@ Phaser.Component.Crop.prototype = { Documentation generated by JSDoc 3.3.3 - on Fri Jun 17 2016 12:45:29 GMT+0100 (BST) using the DocStrap template. + on Fri Jul 08 2016 15:42:34 GMT+0100 (GMT Daylight Time) using the DocStrap template. diff --git a/docs/src_gameobjects_components_Delta.js.html b/docs/src_gameobjects_components_Delta.js.html index bcd08ec85..8fdd05de1 100644 --- a/docs/src_gameobjects_components_Delta.js.html +++ b/docs/src_gameobjects_components_Delta.js.html @@ -708,10 +708,6 @@ ComplexPrimitiveShader -
  • - DisplayObject -
  • -
  • DisplayObjectContainer
  • @@ -744,6 +740,10 @@ PIXI +
  • + DisplayObject +
  • +
  • PixiFastShader
  • @@ -1313,7 +1313,7 @@ Phaser.Component.Delta.prototype = { Documentation generated by JSDoc 3.3.3 - on Fri Jun 17 2016 12:45:29 GMT+0100 (BST) using the DocStrap template. + on Fri Jul 08 2016 15:42:34 GMT+0100 (GMT Daylight Time) using the DocStrap template. diff --git a/docs/src_gameobjects_components_Destroy.js.html b/docs/src_gameobjects_components_Destroy.js.html index 5d17c2e44..6be7a9023 100644 --- a/docs/src_gameobjects_components_Destroy.js.html +++ b/docs/src_gameobjects_components_Destroy.js.html @@ -708,10 +708,6 @@ ComplexPrimitiveShader -
  • - DisplayObject -
  • -
  • DisplayObjectContainer
  • @@ -744,6 +740,10 @@ PIXI +
  • + DisplayObject +
  • +
  • PixiFastShader
  • @@ -1409,7 +1409,7 @@ Phaser.Component.Destroy.prototype = { Documentation generated by JSDoc 3.3.3 - on Fri Jun 17 2016 12:45:29 GMT+0100 (BST) using the DocStrap template. + on Fri Jul 08 2016 15:42:34 GMT+0100 (GMT Daylight Time) using the DocStrap template. diff --git a/docs/src_gameobjects_components_Events.js.html b/docs/src_gameobjects_components_Events.js.html index 609af8b62..cf992098b 100644 --- a/docs/src_gameobjects_components_Events.js.html +++ b/docs/src_gameobjects_components_Events.js.html @@ -708,10 +708,6 @@ ComplexPrimitiveShader -
  • - DisplayObject -
  • -
  • DisplayObjectContainer
  • @@ -744,6 +740,10 @@ PIXI +
  • + DisplayObject +
  • +
  • PixiFastShader
  • @@ -1231,7 +1231,7 @@ */ /** -* The Events component is a collection of events fired by the parent game object. +* The Events component is a collection of events fired by the parent Game Object. * * Phaser uses what are known as 'Signals' for all event handling. All of the events in * this class are signals you can subscribe to, much in the same way you'd "listen" for @@ -1301,92 +1301,187 @@ Phaser.Events.prototype = { // The following properties are sentinels that will be replaced with getters /** - * @property {Phaser.Signal} onAddedToGroup - This signal is dispatched when the parent is added to a new Group. + * This signal is dispatched when this Game Object is added to a new Group. + * It is sent two arguments: + * {any} The Game Object that was added to the Group. + * {Phaser.Group} The Group it was added to. + * @property {Phaser.Signal} onAddedToGroup */ onAddedToGroup: null, /** - * @property {Phaser.Signal} onRemovedFromGroup - This signal is dispatched when the parent is removed from a Group. + * This signal is dispatched when the Game Object is removed from a Group. + * It is sent two arguments: + * {any} The Game Object that was removed from the Group. + * {Phaser.Group} The Group it was removed from. + * @property {Phaser.Signal} onRemovedFromGroup */ onRemovedFromGroup: null, /** - * @property {Phaser.Signal} onRemovedFromWorld - This signal is dispatched if this item or any of its parents are removed from the game world. + * This Signal is never used internally by Phaser and is now deprecated. + * @deprecated + * @property {Phaser.Signal} onRemovedFromWorld */ onRemovedFromWorld: null, /** - * @property {Phaser.Signal} onDestroy - This signal is dispatched when the parent is destroyed. + * This signal is dispatched when the Game Object is destroyed. + * This happens when `Sprite.destroy()` is called, or `Group.destroy()` with `destroyChildren` set to true. + * It is sent one argument: + * {any} The Game Object that was destroyed. + * @property {Phaser.Signal} onDestroy */ onDestroy: null, /** - * @property {Phaser.Signal} onKilled - This signal is dispatched when the parent is killed. + * This signal is dispatched when the Game Object is killed. + * This happens when `Sprite.kill()` is called. + * Please understand the difference between `kill` and `destroy` by looking at their respective methods. + * It is sent one argument: + * {any} The Game Object that was killed. + * @property {Phaser.Signal} onKilled */ onKilled: null, /** - * @property {Phaser.Signal} onRevived - This signal is dispatched when the parent is revived. + * This signal is dispatched when the Game Object is revived from a previously killed state. + * This happens when `Sprite.revive()` is called. + * It is sent one argument: + * {any} The Game Object that was revived. + * @property {Phaser.Signal} onRevived */ onRevived: null, /** - * @property {Phaser.Signal} onOutOfBounds - This signal is dispatched when the parent leaves the world bounds (only if Sprite.checkWorldBounds is true). + * This signal is dispatched when the Game Object leaves the Phaser.World bounds. + * This signal is only if `Sprite.checkWorldBounds` is set to `true`. + * It is sent one argument: + * {any} The Game Object that left the World bounds. + * @property {Phaser.Signal} onOutOfBounds */ onOutOfBounds: null, /** - * @property {Phaser.Signal} onEnterBounds - This signal is dispatched when the parent returns within the world bounds (only if Sprite.checkWorldBounds is true). + * This signal is dispatched when the Game Object returns within the Phaser.World bounds, having previously been outside of them. + * This signal is only if `Sprite.checkWorldBounds` is set to `true`. + * It is sent one argument: + * {any} The Game Object that entered the World bounds. + * @property {Phaser.Signal} onEnterBounds */ onEnterBounds: null, /** - * @property {Phaser.Signal} onInputOver - This signal is dispatched if the parent is inputEnabled and receives an over event from a Pointer. + * This signal is dispatched if the Game Object has `inputEnabled` set to `true`, + * and receives an over event from a Phaser.Pointer. + * It is sent two arguments: + * {any} The Game Object that received the event. + * {Phaser.Pointer} The Phaser.Pointer object that caused the event. + * @property {Phaser.Signal} onInputOver */ onInputOver: null, /** - * @property {Phaser.Signal} onInputOut - This signal is dispatched if the parent is inputEnabled and receives an out event from a Pointer. + * This signal is dispatched if the Game Object has `inputEnabled` set to `true`, + * and receives an out event from a Phaser.Pointer, which was previously over it. + * It is sent two arguments: + * {any} The Game Object that received the event. + * {Phaser.Pointer} The Phaser.Pointer object that caused the event. + * @property {Phaser.Signal} onInputOut */ onInputOut: null, /** - * @property {Phaser.Signal} onInputDown - This signal is dispatched if the parent is inputEnabled and receives a down event from a Pointer. + * This signal is dispatched if the Game Object has `inputEnabled` set to `true`, + * and receives a down event from a Phaser.Pointer. This effectively means the Pointer has been + * pressed down (but not yet released) on the Game Object. + * It is sent two arguments: + * {any} The Game Object that received the event. + * {Phaser.Pointer} The Phaser.Pointer object that caused the event. + * @property {Phaser.Signal} onInputDown */ onInputDown: null, /** - * @property {Phaser.Signal} onInputUp - This signal is dispatched if the parent is inputEnabled and receives an up event from a Pointer. + * This signal is dispatched if the Game Object has `inputEnabled` set to `true`, + * and receives an up event from a Phaser.Pointer. This effectively means the Pointer had been + * pressed down, and was then released on the Game Object. + * It is sent three arguments: + * {any} The Game Object that received the event. + * {Phaser.Pointer} The Phaser.Pointer object that caused the event. + * {boolean} isOver - Is the Pointer still over the Game Object? + * @property {Phaser.Signal} onInputUp */ onInputUp: null, /** - * @property {Phaser.Signal} onDragStart - This signal is dispatched if the parent is inputEnabled and receives a drag start event from a Pointer. + * This signal is dispatched if the Game Object has been `inputEnabled` and `enableDrag` has been set. + * It is sent when a Phaser.Pointer starts to drag the Game Object, taking into consideration the various + * drag limitations that may be set. + * It is sent four arguments: + * {any} The Game Object that received the event. + * {Phaser.Pointer} The Phaser.Pointer object that caused the event. + * {number} The x coordinate that the drag started from. + * {number} The y coordinate that the drag started from. + * @property {Phaser.Signal} onDragStart */ onDragStart: null, /** - * @property {Phaser.Signal} onDragUpdate - This signal is dispatched if the parent is inputEnabled and receives a drag update event from a Pointer. + * This signal is dispatched if the Game Object has been `inputEnabled` and `enableDrag` has been set. + * It is sent when a Phaser.Pointer is actively dragging the Game Object. + * Be warned: This is a high volume Signal. Be careful what you bind to it. + * It is sent six arguments: + * {any} The Game Object that received the event. + * {Phaser.Pointer} The Phaser.Pointer object that caused the event. + * {number} The new x coordinate of the Game Object. + * {number} The new y coordinate of the Game Object. + * {Phaser.Point} A Point object that contains the point the Game Object was snapped to, if `snapOnDrag` has been enabled. + * {boolean} The `fromStart` boolean, indicates if this is the first update immediately after the drag has started. + * @property {Phaser.Signal} onDragUpdate */ onDragUpdate: null, /** - * @property {Phaser.Signal} onDragStop - This signal is dispatched if the parent is inputEnabled and receives a drag stop event from a Pointer. + * This signal is dispatched if the Game Object has been `inputEnabled` and `enableDrag` has been set. + * It is sent when a Phaser.Pointer stops dragging the Game Object. + * It is sent two arguments: + * {any} The Game Object that received the event. + * {Phaser.Pointer} The Phaser.Pointer object that caused the event. + * @property {Phaser.Signal} onDragStop */ onDragStop: null, /** - * @property {Phaser.Signal} onAnimationStart - This signal is dispatched when the parent has an animation that is played. + * This signal is dispatched if the Game Object has the AnimationManager component, + * and an Animation has been played. + * You can also listen to `Animation.onStart` rather than via the Game Objects events. + * It is sent two arguments: + * {any} The Game Object that received the event. + * {Phaser.Animation} The Phaser.Animation that was started. + * @property {Phaser.Signal} onAnimationStart */ onAnimationStart: null, /** - * @property {Phaser.Signal} onAnimationComplete - This signal is dispatched when the parent has an animation that finishes playing. + * This signal is dispatched if the Game Object has the AnimationManager component, + * and an Animation has been stopped (via `animation.stop()` and the `dispatchComplete` argument has been set. + * You can also listen to `Animation.onComplete` rather than via the Game Objects events. + * It is sent two arguments: + * {any} The Game Object that received the event. + * {Phaser.Animation} The Phaser.Animation that was stopped. + * @property {Phaser.Signal} onAnimationComplete */ onAnimationComplete: null, /** - * @property {Phaser.Signal} onAnimationLoop - This signal is dispatched when the parent has an animation that loops playback. + * This signal is dispatched if the Game Object has the AnimationManager component, + * and an Animation has looped playback. + * You can also listen to `Animation.onLoop` rather than via the Game Objects events. + * It is sent two arguments: + * {any} The Game Object that received the event. + * {Phaser.Animation} The Phaser.Animation that looped. + * @property {Phaser.Signal} onAnimationLoop */ onAnimationLoop: null @@ -1445,7 +1540,7 @@ for (var prop in Phaser.Events.prototype) Documentation generated by JSDoc 3.3.3 - on Fri Jun 17 2016 12:45:29 GMT+0100 (BST) using the DocStrap template. + on Fri Jul 08 2016 15:42:34 GMT+0100 (GMT Daylight Time) using the DocStrap template. diff --git a/docs/src_gameobjects_components_FixedToCamera.js.html b/docs/src_gameobjects_components_FixedToCamera.js.html index f653e10a4..c4bec213c 100644 --- a/docs/src_gameobjects_components_FixedToCamera.js.html +++ b/docs/src_gameobjects_components_FixedToCamera.js.html @@ -708,10 +708,6 @@ ComplexPrimitiveShader -
  • - DisplayObject -
  • -
  • DisplayObjectContainer
  • @@ -744,6 +740,10 @@ PIXI +
  • + DisplayObject +
  • +
  • PixiFastShader
  • @@ -1333,7 +1333,7 @@ Phaser.Component.FixedToCamera.prototype = { Documentation generated by JSDoc 3.3.3 - on Fri Jun 17 2016 12:45:29 GMT+0100 (BST) using the DocStrap template. + on Fri Jul 08 2016 15:42:34 GMT+0100 (GMT Daylight Time) using the DocStrap template. diff --git a/docs/src_gameobjects_components_Health.js.html b/docs/src_gameobjects_components_Health.js.html index 6a6301402..6336bf7cd 100644 --- a/docs/src_gameobjects_components_Health.js.html +++ b/docs/src_gameobjects_components_Health.js.html @@ -708,10 +708,6 @@ ComplexPrimitiveShader -
  • - DisplayObject -
  • -
  • DisplayObjectContainer
  • @@ -744,6 +740,10 @@ PIXI +
  • + DisplayObject +
  • +
  • PixiFastShader
  • @@ -1351,7 +1351,7 @@ Phaser.Component.Health.prototype = { Documentation generated by JSDoc 3.3.3 - on Fri Jun 17 2016 12:45:29 GMT+0100 (BST) using the DocStrap template. + on Fri Jul 08 2016 15:42:34 GMT+0100 (GMT Daylight Time) using the DocStrap template. diff --git a/docs/src_gameobjects_components_InCamera.js.html b/docs/src_gameobjects_components_InCamera.js.html index 2d78b7c3e..6a571e2ad 100644 --- a/docs/src_gameobjects_components_InCamera.js.html +++ b/docs/src_gameobjects_components_InCamera.js.html @@ -708,10 +708,6 @@ ComplexPrimitiveShader -
  • - DisplayObject -
  • -
  • DisplayObjectContainer
  • @@ -744,6 +740,10 @@ PIXI +
  • + DisplayObject +
  • +
  • PixiFastShader
  • @@ -1281,7 +1281,7 @@ Phaser.Component.InCamera.prototype = { Documentation generated by JSDoc 3.3.3 - on Fri Jun 17 2016 12:45:29 GMT+0100 (BST) using the DocStrap template. + on Fri Jul 08 2016 15:42:34 GMT+0100 (GMT Daylight Time) using the DocStrap template. diff --git a/docs/src_gameobjects_components_InWorld.js.html b/docs/src_gameobjects_components_InWorld.js.html index a99688d7f..3f7c2da5b 100644 --- a/docs/src_gameobjects_components_InWorld.js.html +++ b/docs/src_gameobjects_components_InWorld.js.html @@ -708,10 +708,6 @@ ComplexPrimitiveShader -
  • - DisplayObject -
  • -
  • DisplayObjectContainer
  • @@ -744,6 +740,10 @@ PIXI +
  • + DisplayObject +
  • +
  • PixiFastShader
  • @@ -1384,7 +1384,7 @@ Phaser.Component.InWorld.prototype = { Documentation generated by JSDoc 3.3.3 - on Fri Jun 17 2016 12:45:29 GMT+0100 (BST) using the DocStrap template. + on Fri Jul 08 2016 15:42:34 GMT+0100 (GMT Daylight Time) using the DocStrap template. diff --git a/docs/src_gameobjects_components_InputEnabled.js.html b/docs/src_gameobjects_components_InputEnabled.js.html index 19e19f352..cee3f5a8e 100644 --- a/docs/src_gameobjects_components_InputEnabled.js.html +++ b/docs/src_gameobjects_components_InputEnabled.js.html @@ -708,10 +708,6 @@ ComplexPrimitiveShader -
  • - DisplayObject -
  • -
  • DisplayObjectContainer
  • @@ -744,6 +740,10 @@ PIXI +
  • + DisplayObject +
  • +
  • PixiFastShader
  • @@ -1258,6 +1258,10 @@ Phaser.Component.InputEnabled.prototype = { * Note that Input related events are dispatched from `this.events`, i.e.: `events.onInputDown`. * * If you set this property to false it will stop the Input Handler from processing any more input events. + * + * If you want to _temporarily_ disable input for a Game Object, then it's better to set + * `input.enabled = false`, as it won't reset any of the Input Handlers internal properties. + * You can then toggle this back on as needed. * * @property {boolean} inputEnabled */ @@ -1317,7 +1321,7 @@ Phaser.Component.InputEnabled.prototype = { Documentation generated by JSDoc 3.3.3 - on Fri Jun 17 2016 12:45:29 GMT+0100 (BST) using the DocStrap template. + on Fri Jul 08 2016 15:42:34 GMT+0100 (GMT Daylight Time) using the DocStrap template. diff --git a/docs/src_gameobjects_components_LifeSpan.js.html b/docs/src_gameobjects_components_LifeSpan.js.html index a2244b53e..09747463f 100644 --- a/docs/src_gameobjects_components_LifeSpan.js.html +++ b/docs/src_gameobjects_components_LifeSpan.js.html @@ -708,10 +708,6 @@ ComplexPrimitiveShader -
  • - DisplayObject -
  • -
  • DisplayObjectContainer
  • @@ -744,6 +740,10 @@ PIXI +
  • + DisplayObject +
  • +
  • PixiFastShader
  • @@ -1373,7 +1373,7 @@ Phaser.Component.LifeSpan.prototype = { Documentation generated by JSDoc 3.3.3 - on Fri Jun 17 2016 12:45:29 GMT+0100 (BST) using the DocStrap template. + on Fri Jul 08 2016 15:42:34 GMT+0100 (GMT Daylight Time) using the DocStrap template. diff --git a/docs/src_gameobjects_components_LoadTexture.js.html b/docs/src_gameobjects_components_LoadTexture.js.html index e96691a6e..87a34de33 100644 --- a/docs/src_gameobjects_components_LoadTexture.js.html +++ b/docs/src_gameobjects_components_LoadTexture.js.html @@ -708,10 +708,6 @@ ComplexPrimitiveShader -
  • - DisplayObject -
  • -
  • DisplayObjectContainer
  • @@ -744,6 +740,10 @@ PIXI +
  • + DisplayObject +
  • +
  • PixiFastShader
  • @@ -1536,7 +1536,7 @@ Phaser.Component.LoadTexture.prototype = { Documentation generated by JSDoc 3.3.3 - on Fri Jun 17 2016 12:45:29 GMT+0100 (BST) using the DocStrap template. + on Fri Jul 08 2016 15:42:34 GMT+0100 (GMT Daylight Time) using the DocStrap template. diff --git a/docs/src_gameobjects_components_Overlap.js.html b/docs/src_gameobjects_components_Overlap.js.html index 591147703..13aebe15c 100644 --- a/docs/src_gameobjects_components_Overlap.js.html +++ b/docs/src_gameobjects_components_Overlap.js.html @@ -708,10 +708,6 @@ ComplexPrimitiveShader -
  • - DisplayObject -
  • -
  • DisplayObjectContainer
  • @@ -744,6 +740,10 @@ PIXI +
  • + DisplayObject +
  • +
  • PixiFastShader
  • @@ -1280,7 +1280,7 @@ Phaser.Component.Overlap.prototype = { Documentation generated by JSDoc 3.3.3 - on Fri Jun 17 2016 12:45:29 GMT+0100 (BST) using the DocStrap template. + on Fri Jul 08 2016 15:42:34 GMT+0100 (GMT Daylight Time) using the DocStrap template. diff --git a/docs/src_gameobjects_components_PhysicsBody.js.html b/docs/src_gameobjects_components_PhysicsBody.js.html index 7aac0bc83..fa4ffca5c 100644 --- a/docs/src_gameobjects_components_PhysicsBody.js.html +++ b/docs/src_gameobjects_components_PhysicsBody.js.html @@ -708,10 +708,6 @@ ComplexPrimitiveShader -
  • - DisplayObject -
  • -
  • DisplayObjectContainer
  • @@ -744,6 +740,10 @@ PIXI +
  • + DisplayObject +
  • +
  • PixiFastShader
  • @@ -1390,7 +1390,7 @@ Phaser.Component.PhysicsBody.prototype = { Documentation generated by JSDoc 3.3.3 - on Fri Jun 17 2016 12:45:29 GMT+0100 (BST) using the DocStrap template. + on Fri Jul 08 2016 15:42:34 GMT+0100 (GMT Daylight Time) using the DocStrap template. diff --git a/docs/src_gameobjects_components_Reset.js.html b/docs/src_gameobjects_components_Reset.js.html index 5f8532553..855e97d01 100644 --- a/docs/src_gameobjects_components_Reset.js.html +++ b/docs/src_gameobjects_components_Reset.js.html @@ -708,10 +708,6 @@ ComplexPrimitiveShader -
  • - DisplayObject -
  • -
  • DisplayObjectContainer
  • @@ -744,6 +740,10 @@ PIXI +
  • + DisplayObject +
  • +
  • PixiFastShader
  • @@ -1308,7 +1308,7 @@ Phaser.Component.Reset.prototype.reset = function (x, y, health) { Documentation generated by JSDoc 3.3.3 - on Fri Jun 17 2016 12:45:29 GMT+0100 (BST) using the DocStrap template. + on Fri Jul 08 2016 15:42:34 GMT+0100 (GMT Daylight Time) using the DocStrap template. diff --git a/docs/src_gameobjects_components_ScaleMinMax.js.html b/docs/src_gameobjects_components_ScaleMinMax.js.html index 6159e7730..9bb400d5e 100644 --- a/docs/src_gameobjects_components_ScaleMinMax.js.html +++ b/docs/src_gameobjects_components_ScaleMinMax.js.html @@ -708,10 +708,6 @@ ComplexPrimitiveShader -
  • - DisplayObject -
  • -
  • DisplayObjectContainer
  • @@ -744,6 +740,10 @@ PIXI +
  • + DisplayObject +
  • +
  • PixiFastShader
  • @@ -1412,7 +1412,7 @@ Phaser.Component.ScaleMinMax.prototype = { Documentation generated by JSDoc 3.3.3 - on Fri Jun 17 2016 12:45:29 GMT+0100 (BST) using the DocStrap template. + on Fri Jul 08 2016 15:42:34 GMT+0100 (GMT Daylight Time) using the DocStrap template. diff --git a/docs/src_gameobjects_components_Smoothed.js.html b/docs/src_gameobjects_components_Smoothed.js.html index 22eae5037..a463ab7f0 100644 --- a/docs/src_gameobjects_components_Smoothed.js.html +++ b/docs/src_gameobjects_components_Smoothed.js.html @@ -708,10 +708,6 @@ ComplexPrimitiveShader -
  • - DisplayObject -
  • -
  • DisplayObjectContainer
  • @@ -744,6 +740,10 @@ PIXI +
  • + DisplayObject +
  • +
  • PixiFastShader
  • @@ -1298,7 +1298,7 @@ Phaser.Component.Smoothed.prototype = { Documentation generated by JSDoc 3.3.3 - on Fri Jun 17 2016 12:45:29 GMT+0100 (BST) using the DocStrap template. + on Fri Jul 08 2016 15:42:34 GMT+0100 (GMT Daylight Time) using the DocStrap template. diff --git a/docs/src_geom_Circle.js.html b/docs/src_geom_Circle.js.html index b9afdc78e..dab4bccec 100644 --- a/docs/src_geom_Circle.js.html +++ b/docs/src_geom_Circle.js.html @@ -708,10 +708,6 @@ ComplexPrimitiveShader -
  • - DisplayObject -
  • -
  • DisplayObjectContainer
  • @@ -744,6 +740,10 @@ PIXI +
  • + DisplayObject +
  • +
  • PixiFastShader
  • @@ -1818,7 +1818,7 @@ PIXI.Circle = Phaser.Circle; Documentation generated by JSDoc 3.3.3 - on Fri Jun 17 2016 12:45:29 GMT+0100 (BST) using the DocStrap template. + on Fri Jul 08 2016 15:42:34 GMT+0100 (GMT Daylight Time) using the DocStrap template. diff --git a/docs/src_geom_Ellipse.js.html b/docs/src_geom_Ellipse.js.html index 5cbdc8f52..7d2db2f5a 100644 --- a/docs/src_geom_Ellipse.js.html +++ b/docs/src_geom_Ellipse.js.html @@ -708,10 +708,6 @@ ComplexPrimitiveShader -
  • - DisplayObject -
  • -
  • DisplayObjectContainer
  • @@ -744,6 +740,10 @@ PIXI +
  • + DisplayObject +
  • +
  • PixiFastShader
  • @@ -1571,7 +1571,7 @@ PIXI.Ellipse = Phaser.Ellipse; Documentation generated by JSDoc 3.3.3 - on Fri Jun 17 2016 12:45:29 GMT+0100 (BST) using the DocStrap template. + on Fri Jul 08 2016 15:42:34 GMT+0100 (GMT Daylight Time) using the DocStrap template. diff --git a/docs/src_geom_Line.js.html b/docs/src_geom_Line.js.html index 685a34a00..ec0aaa52a 100644 --- a/docs/src_geom_Line.js.html +++ b/docs/src_geom_Line.js.html @@ -708,10 +708,6 @@ ComplexPrimitiveShader -
  • - DisplayObject -
  • -
  • DisplayObjectContainer
  • @@ -744,6 +740,10 @@ PIXI +
  • + DisplayObject +
  • +
  • PixiFastShader
  • @@ -1980,7 +1980,7 @@ Phaser.Line.reflect = function (a, b) { Documentation generated by JSDoc 3.3.3 - on Fri Jun 17 2016 12:45:29 GMT+0100 (BST) using the DocStrap template. + on Fri Jul 08 2016 15:42:34 GMT+0100 (GMT Daylight Time) using the DocStrap template. diff --git a/docs/src_geom_Matrix.js.html b/docs/src_geom_Matrix.js.html index 5492e46f9..0955dd86e 100644 --- a/docs/src_geom_Matrix.js.html +++ b/docs/src_geom_Matrix.js.html @@ -708,10 +708,6 @@ ComplexPrimitiveShader -
  • - DisplayObject -
  • -
  • DisplayObjectContainer
  • @@ -744,6 +740,10 @@ PIXI +
  • + DisplayObject +
  • +
  • PixiFastShader
  • @@ -1634,7 +1634,7 @@ PIXI.identityMatrix = Phaser.identityMatrix; Documentation generated by JSDoc 3.3.3 - on Fri Jun 17 2016 12:45:29 GMT+0100 (BST) using the DocStrap template. + on Fri Jul 08 2016 15:42:34 GMT+0100 (GMT Daylight Time) using the DocStrap template. diff --git a/docs/src_geom_Point.js.html b/docs/src_geom_Point.js.html index 2206a2022..61328c398 100644 --- a/docs/src_geom_Point.js.html +++ b/docs/src_geom_Point.js.html @@ -708,10 +708,6 @@ ComplexPrimitiveShader -
  • - DisplayObject -
  • -
  • DisplayObjectContainer
  • @@ -744,6 +740,10 @@ PIXI +
  • + DisplayObject +
  • +
  • PixiFastShader
  • @@ -2151,7 +2151,7 @@ PIXI.Point = Phaser.Point; Documentation generated by JSDoc 3.3.3 - on Fri Jun 17 2016 12:45:29 GMT+0100 (BST) using the DocStrap template. + on Fri Jul 08 2016 15:42:34 GMT+0100 (GMT Daylight Time) using the DocStrap template. diff --git a/docs/src_geom_Polygon.js.html b/docs/src_geom_Polygon.js.html index 079bb6b5a..166e070c1 100644 --- a/docs/src_geom_Polygon.js.html +++ b/docs/src_geom_Polygon.js.html @@ -708,10 +708,6 @@ ComplexPrimitiveShader -
  • - DisplayObject -
  • -
  • DisplayObjectContainer
  • @@ -744,6 +740,10 @@ PIXI +
  • + DisplayObject +
  • +
  • PixiFastShader
  • @@ -1270,6 +1270,11 @@ Phaser.Polygon = function () { */ this.closed = true; + /** + * @property {boolean} flattened - Has this Polygon been flattened by a call to `Polygon.flatten` ? + */ + this.flattened = false; + /** * @property {number} type - The base object type. */ @@ -1310,7 +1315,9 @@ Phaser.Polygon.prototype = { }, /** - * Flattens this Polygon so the points are a sequence of numbers. Any Point objects found are removed and replaced with two numbers. + * Flattens this Polygon so the points are a sequence of numbers. + * Any Point objects found are removed and replaced with two numbers. + * Also sets the Polygon.flattened property to `true`. * * @method Phaser.Polygon#flatten * @return {Phaser.Polygon} This Polygon object @@ -1319,6 +1326,8 @@ Phaser.Polygon.prototype = { this._points = this.toNumberArray(); + this.flattened = true; + return this; }, @@ -1360,20 +1369,39 @@ Phaser.Polygon.prototype = { // Adapted from http://www.ecse.rpi.edu/Homepages/wrf/Research/Short_Notes/pnpoly.html by Jonas Raoni Soares Silva - var length = this._points.length; var inside = false; - for (var i = -1, j = length - 1; ++i < length; j = i) + if (this.flattened) { - var ix = this._points[i].x; - var iy = this._points[i].y; - - var jx = this._points[j].x; - var jy = this._points[j].y; - - if (((iy <= y && y < jy) || (jy <= y && y < iy)) && (x < (jx - ix) * (y - iy) / (jy - iy) + ix)) + for (var i = -2, j = this._points.length - 2; (i += 2) < this._points.length; j = i) { - inside = !inside; + var ix = this._points[i]; + var iy = this._points[i + 1]; + + var jx = this._points[j]; + var jy = this._points[j + 1]; + + if (((iy <= y && y < jy) || (jy <= y && y < iy)) && (x < (jx - ix) * (y - iy) / (jy - iy) + ix)) + { + inside = !inside; + } + } + + } + else + { + for (var i = -1, j = this._points.length - 1; ++i < this._points.length; j = i) + { + var ix = this._points[i].x; + var iy = this._points[i].y; + + var jx = this._points[j].x; + var jy = this._points[j].y; + + if (((iy <= y && y < jy) || (jy <= y && y < iy)) && (x < (jx - ix) * (y - iy) / (jy - iy) + ix)) + { + inside = !inside; + } } } @@ -1543,7 +1571,7 @@ PIXI.Polygon = Phaser.Polygon; Documentation generated by JSDoc 3.3.3 - on Fri Jun 17 2016 12:45:29 GMT+0100 (BST) using the DocStrap template. + on Fri Jul 08 2016 15:42:34 GMT+0100 (GMT Daylight Time) using the DocStrap template. diff --git a/docs/src_geom_Rectangle.js.html b/docs/src_geom_Rectangle.js.html index d5847e423..1ce083d87 100644 --- a/docs/src_geom_Rectangle.js.html +++ b/docs/src_geom_Rectangle.js.html @@ -708,10 +708,6 @@ ComplexPrimitiveShader -
  • - DisplayObject -
  • -
  • DisplayObjectContainer
  • @@ -744,6 +740,10 @@ PIXI +
  • + DisplayObject +
  • +
  • PixiFastShader
  • @@ -2304,7 +2304,7 @@ PIXI.EmptyRectangle = new Phaser.Rectangle(0, 0, 0, 0); Documentation generated by JSDoc 3.3.3 - on Fri Jun 17 2016 12:45:29 GMT+0100 (BST) using the DocStrap template. + on Fri Jul 08 2016 15:42:34 GMT+0100 (GMT Daylight Time) using the DocStrap template. diff --git a/docs/src_geom_RoundedRectangle.js.html b/docs/src_geom_RoundedRectangle.js.html index 0e3c72616..4609c2830 100644 --- a/docs/src_geom_RoundedRectangle.js.html +++ b/docs/src_geom_RoundedRectangle.js.html @@ -708,10 +708,6 @@ ComplexPrimitiveShader -
  • - DisplayObject -
  • -
  • DisplayObjectContainer
  • @@ -744,6 +740,10 @@ PIXI +
  • + DisplayObject +
  • +
  • PixiFastShader
  • @@ -1356,7 +1356,7 @@ PIXI.RoundedRectangle = Phaser.RoundedRectangle; Documentation generated by JSDoc 3.3.3 - on Fri Jun 17 2016 12:45:29 GMT+0100 (BST) using the DocStrap template. + on Fri Jul 08 2016 15:42:35 GMT+0100 (GMT Daylight Time) using the DocStrap template. diff --git a/docs/src_input_DeviceButton.js.html b/docs/src_input_DeviceButton.js.html index 5853f46ee..610266697 100644 --- a/docs/src_input_DeviceButton.js.html +++ b/docs/src_input_DeviceButton.js.html @@ -708,10 +708,6 @@ ComplexPrimitiveShader -
  • - DisplayObject -
  • -
  • DisplayObjectContainer
  • @@ -744,6 +740,10 @@ PIXI +
  • + DisplayObject +
  • +
  • PixiFastShader
  • @@ -1566,7 +1566,7 @@ Object.defineProperty(Phaser.DeviceButton.prototype, "duration", { Documentation generated by JSDoc 3.3.3 - on Fri Jun 17 2016 12:45:29 GMT+0100 (BST) using the DocStrap template. + on Fri Jul 08 2016 15:42:34 GMT+0100 (GMT Daylight Time) using the DocStrap template. diff --git a/docs/src_input_Gamepad.js.html b/docs/src_input_Gamepad.js.html index d39f25e15..bcfcf940a 100644 --- a/docs/src_input_Gamepad.js.html +++ b/docs/src_input_Gamepad.js.html @@ -708,10 +708,6 @@ ComplexPrimitiveShader -
  • - DisplayObject -
  • -
  • DisplayObjectContainer
  • @@ -744,6 +740,10 @@ PIXI +
  • + DisplayObject +
  • +
  • PixiFastShader
  • @@ -1916,7 +1916,7 @@ Phaser.Gamepad.PS3XC_STICK_RIGHT_Y = 3; // analog stick, range -1..1 Documentation generated by JSDoc 3.3.3 - on Fri Jun 17 2016 12:45:29 GMT+0100 (BST) using the DocStrap template. + on Fri Jul 08 2016 15:42:34 GMT+0100 (GMT Daylight Time) using the DocStrap template. diff --git a/docs/src_input_Input.js.html b/docs/src_input_Input.js.html index f3c49166d..0e9c26d60 100644 --- a/docs/src_input_Input.js.html +++ b/docs/src_input_Input.js.html @@ -708,10 +708,6 @@ ComplexPrimitiveShader -
  • - DisplayObject -
  • -
  • DisplayObjectContainer
  • @@ -744,6 +740,10 @@ PIXI +
  • + DisplayObject +
  • +
  • PixiFastShader
  • @@ -2378,7 +2378,7 @@ Object.defineProperty(Phaser.Input.prototype, "worldY", { Documentation generated by JSDoc 3.3.3 - on Fri Jun 17 2016 12:45:29 GMT+0100 (BST) using the DocStrap template. + on Fri Jul 08 2016 15:42:34 GMT+0100 (GMT Daylight Time) using the DocStrap template. diff --git a/docs/src_input_InputHandler.js.html b/docs/src_input_InputHandler.js.html index 7dd6c2e2f..b73c71431 100644 --- a/docs/src_input_InputHandler.js.html +++ b/docs/src_input_InputHandler.js.html @@ -708,10 +708,6 @@ ComplexPrimitiveShader -
  • - DisplayObject -
  • -
  • DisplayObjectContainer
  • @@ -744,6 +740,10 @@ PIXI +
  • + DisplayObject +
  • +
  • PixiFastShader
  • @@ -1509,9 +1509,10 @@ Phaser.InputHandler.prototype = { /** * Starts the Input Handler running. This is called automatically when you enable input on a Sprite, or can be called directly if you need to set a specific priority. + * * @method Phaser.InputHandler#start - * @param {number} priority - Higher priority sprites take click priority over low-priority sprites when they are stacked on-top of each other. - * @param {boolean} useHandCursor - If true the Sprite will show the hand cursor on mouse-over (doesn't apply to mobile browsers) + * @param {number} [priority=0] - Higher priority sprites take click priority over low-priority sprites when they are stacked on-top of each other. + * @param {boolean} [useHandCursor=false] - If true the Sprite will show the hand cursor on mouse-over (doesn't apply to mobile browsers) * @return {Phaser.Sprite} The Sprite object to which the Input Handler is bound. */ start: function (priority, useHandCursor) { @@ -2132,7 +2133,7 @@ Phaser.InputHandler.prototype = { } else if (this.draggable && this._draggedPointerID === pointer.id) { - return this.updateDrag(pointer); + return this.updateDrag(pointer, false); } else if (this._pointerData[pointer.id].isOver) { @@ -2411,24 +2412,24 @@ Phaser.InputHandler.prototype = { }, /** - * Updates the Pointer drag on this Sprite. + * Called as a Pointer actively drags this Game Object. + * * @method Phaser.InputHandler#updateDrag - * @param {Phaser.Pointer} pointer + * @private + * @param {Phaser.Pointer} pointer - The Pointer causing the drag update. + * @param {boolean} fromStart - True if this is the first update, immediately after the drag has started. * @return {boolean} */ updateDrag: function (pointer, fromStart) { + if (fromStart === undefined) { fromStart = false; } + if (pointer.isUp) { this.stopDrag(pointer); return false; } - if (fromStart === undefined) - { - fromStart = false; - } - var px = this.globalToLocalX(pointer.x) + this._dragPoint.x + this.dragOffset.x; var py = this.globalToLocalY(pointer.y) + this._dragPoint.y + this.dragOffset.y; @@ -2879,7 +2880,6 @@ Phaser.InputHandler.prototype = { }, - /** * Bounds Rect check for the sprite drag * @@ -3004,7 +3004,7 @@ Phaser.InputHandler.prototype.constructor = Phaser.InputHandler; Documentation generated by JSDoc 3.3.3 - on Fri Jun 17 2016 12:45:29 GMT+0100 (BST) using the DocStrap template. + on Fri Jul 08 2016 15:42:34 GMT+0100 (GMT Daylight Time) using the DocStrap template. diff --git a/docs/src_input_Key.js.html b/docs/src_input_Key.js.html index 9501e21fe..ecf9cdf31 100644 --- a/docs/src_input_Key.js.html +++ b/docs/src_input_Key.js.html @@ -708,10 +708,6 @@ ComplexPrimitiveShader -
  • - DisplayObject -
  • -
  • DisplayObjectContainer
  • @@ -744,6 +740,10 @@ PIXI +
  • + DisplayObject +
  • +
  • PixiFastShader
  • @@ -1609,7 +1609,7 @@ Phaser.Key.prototype.constructor = Phaser.Key; Documentation generated by JSDoc 3.3.3 - on Fri Jun 17 2016 12:45:29 GMT+0100 (BST) using the DocStrap template. + on Fri Jul 08 2016 15:42:34 GMT+0100 (GMT Daylight Time) using the DocStrap template. diff --git a/docs/src_input_Keyboard.js.html b/docs/src_input_Keyboard.js.html index 1ec72c5b2..128caf187 100644 --- a/docs/src_input_Keyboard.js.html +++ b/docs/src_input_Keyboard.js.html @@ -708,10 +708,6 @@ ComplexPrimitiveShader -
  • - DisplayObject -
  • -
  • DisplayObjectContainer
  • @@ -744,6 +740,10 @@ PIXI +
  • + DisplayObject +
  • +
  • PixiFastShader
  • @@ -2066,7 +2066,7 @@ for (var key in Phaser.KeyCode) { Documentation generated by JSDoc 3.3.3 - on Fri Jun 17 2016 12:45:29 GMT+0100 (BST) using the DocStrap template. + on Fri Jul 08 2016 15:42:34 GMT+0100 (GMT Daylight Time) using the DocStrap template. diff --git a/docs/src_input_MSPointer.js.html b/docs/src_input_MSPointer.js.html index 3c2d6e9b8..8175a6e0d 100644 --- a/docs/src_input_MSPointer.js.html +++ b/docs/src_input_MSPointer.js.html @@ -708,10 +708,6 @@ ComplexPrimitiveShader -
  • - DisplayObject -
  • -
  • DisplayObjectContainer
  • @@ -744,6 +740,10 @@ PIXI +
  • + DisplayObject +
  • +
  • PixiFastShader
  • @@ -1695,7 +1695,7 @@ Phaser.MSPointer.prototype.constructor = Phaser.MSPointer; Documentation generated by JSDoc 3.3.3 - on Fri Jun 17 2016 12:45:29 GMT+0100 (BST) using the DocStrap template. + on Fri Jul 08 2016 15:42:34 GMT+0100 (GMT Daylight Time) using the DocStrap template. diff --git a/docs/src_input_Mouse.js.html b/docs/src_input_Mouse.js.html index f522abdc6..82704c08f 100644 --- a/docs/src_input_Mouse.js.html +++ b/docs/src_input_Mouse.js.html @@ -708,10 +708,6 @@ ComplexPrimitiveShader -
  • - DisplayObject -
  • -
  • DisplayObjectContainer
  • @@ -744,6 +740,10 @@ PIXI +
  • + DisplayObject +
  • +
  • PixiFastShader
  • @@ -1964,7 +1964,7 @@ Object.defineProperties(WheelEventProxy.prototype, { Documentation generated by JSDoc 3.3.3 - on Fri Jun 17 2016 12:45:29 GMT+0100 (BST) using the DocStrap template. + on Fri Jul 08 2016 15:42:34 GMT+0100 (GMT Daylight Time) using the DocStrap template. diff --git a/docs/src_input_Pointer.js.html b/docs/src_input_Pointer.js.html index 8a8918e5d..f7e39f336 100644 --- a/docs/src_input_Pointer.js.html +++ b/docs/src_input_Pointer.js.html @@ -708,10 +708,6 @@ ComplexPrimitiveShader -
  • - DisplayObject -
  • -
  • DisplayObjectContainer
  • @@ -744,6 +740,10 @@ PIXI +
  • + DisplayObject +
  • +
  • PixiFastShader
  • @@ -2520,7 +2520,7 @@ Phaser.PointerMode = { Documentation generated by JSDoc 3.3.3 - on Fri Jun 17 2016 12:45:29 GMT+0100 (BST) using the DocStrap template. + on Fri Jul 08 2016 15:42:34 GMT+0100 (GMT Daylight Time) using the DocStrap template. diff --git a/docs/src_input_SinglePad.js.html b/docs/src_input_SinglePad.js.html index e750af478..12ef441b5 100644 --- a/docs/src_input_SinglePad.js.html +++ b/docs/src_input_SinglePad.js.html @@ -708,10 +708,6 @@ ComplexPrimitiveShader -
  • - DisplayObject -
  • -
  • DisplayObjectContainer
  • @@ -744,6 +740,10 @@ PIXI +
  • + DisplayObject +
  • +
  • PixiFastShader
  • @@ -1800,7 +1800,7 @@ Phaser.SinglePad.prototype.constructor = Phaser.SinglePad; Documentation generated by JSDoc 3.3.3 - on Fri Jun 17 2016 12:45:29 GMT+0100 (BST) using the DocStrap template. + on Fri Jul 08 2016 15:42:35 GMT+0100 (GMT Daylight Time) using the DocStrap template. diff --git a/docs/src_input_Touch.js.html b/docs/src_input_Touch.js.html index 8447c5841..e0a6218c9 100644 --- a/docs/src_input_Touch.js.html +++ b/docs/src_input_Touch.js.html @@ -708,10 +708,6 @@ ComplexPrimitiveShader -
  • - DisplayObject -
  • -
  • DisplayObjectContainer
  • @@ -744,6 +740,10 @@ PIXI +
  • + DisplayObject +
  • +
  • PixiFastShader
  • @@ -1708,7 +1708,7 @@ Phaser.Touch.prototype.constructor = Phaser.Touch; Documentation generated by JSDoc 3.3.3 - on Fri Jun 17 2016 12:45:29 GMT+0100 (BST) using the DocStrap template. + on Fri Jul 08 2016 15:42:35 GMT+0100 (GMT Daylight Time) using the DocStrap template. diff --git a/docs/src_loader_Cache.js.html b/docs/src_loader_Cache.js.html index fc3469c1f..3ccd53715 100644 --- a/docs/src_loader_Cache.js.html +++ b/docs/src_loader_Cache.js.html @@ -708,10 +708,6 @@ ComplexPrimitiveShader -
  • - DisplayObject -
  • -
  • DisplayObjectContainer
  • @@ -744,6 +740,10 @@ PIXI +
  • + DisplayObject +
  • +
  • PixiFastShader
  • @@ -1433,6 +1433,20 @@ Phaser.Cache.SHADER = 14; */ Phaser.Cache.RENDER_TEXTURE = 15; +/** +* The default image used for a texture when no other is specified. +* @constant +* @type {PIXI.Texture} +*/ +Phaser.Cache.DEFAULT = null; + +/** +* The default image used for a texture when the source image is missing. +* @constant +* @type {PIXI.Texture} +*/ +Phaser.Cache.MISSING = null; + Phaser.Cache.prototype = { ////////////////// @@ -1487,6 +1501,15 @@ Phaser.Cache.prototype = { this._resolveURL(url, img); + if (key === '__default') + { + Phaser.Cache.DEFAULT = new PIXI.Texture(img.base); + } + else if (key === '__missing') + { + Phaser.Cache.MISSING = new PIXI.Texture(img.base); + } + return img; }, @@ -1511,7 +1534,8 @@ Phaser.Cache.prototype = { // Because we don't want to invalidate the sprite batch for an invisible texture obj.base.skipRender = true; - PIXI.TextureCache['__default'] = new PIXI.Texture(obj.base); + // Make it easily available within the rest of Phaser / Pixi + Phaser.Cache.DEFAULT = new PIXI.Texture(obj.base); }, @@ -1532,7 +1556,8 @@ Phaser.Cache.prototype = { var obj = this.addImage('__missing', null, img); - PIXI.TextureCache['__missing'] = new PIXI.Texture(obj.base); + // Make it easily available within the rest of Phaser / Pixi + Phaser.Cache.MISSING = new PIXI.Texture(obj.base); }, @@ -2782,71 +2807,6 @@ Phaser.Cache.prototype = { }, - /** - * Gets a PIXI.Texture by key from the PIXI.TextureCache. - * - * If the texture isn't found in the cache, then it searches the Phaser Image Cache and - * creates a new PIXI.Texture object which is then returned. - * - * @method Phaser.Cache#getPixiTexture - * @deprecated - * @param {string} key - Asset key of the Texture to retrieve from the Cache. - * @return {PIXI.Texture} The Texture object. - */ - getPixiTexture: function (key) { - - if (PIXI.TextureCache[key]) - { - return PIXI.TextureCache[key]; - } - else - { - var base = this.getPixiBaseTexture(key); - - if (base) - { - return new PIXI.Texture(base); - } - else - { - return null; - } - } - - }, - - /** - * Gets a PIXI.BaseTexture by key from the PIXI.BaseTextureCache. - * - * If the texture isn't found in the cache, then it searches the Phaser Image Cache. - * - * @method Phaser.Cache#getPixiBaseTexture - * @deprecated - * @param {string} key - Asset key of the BaseTexture to retrieve from the Cache. - * @return {PIXI.BaseTexture} The BaseTexture object or null if not found. - */ - getPixiBaseTexture: function (key) { - - if (PIXI.BaseTextureCache[key]) - { - return PIXI.BaseTextureCache[key]; - } - else - { - var img = this.getItem(key, Phaser.Cache.IMAGE, 'getPixiBaseTexture'); - - if (img !== null) - { - return img.base; - } - else - { - return null; - } - } - - }, - /** * Get a cached object by the URL. * This only returns a value if you set Cache.autoResolveURL to `true` *before* starting the preload of any assets. @@ -2924,20 +2884,20 @@ Phaser.Cache.prototype = { * * You can optionally elect to destroy it as well. This calls BaseTexture.destroy on it. * - * Note that this only removes it from the Phaser and PIXI Caches. If you still have references to the data elsewhere + * Note that this only removes it from the Phaser Cache. If you still have references to the data elsewhere * then it will persist in memory. * * @method Phaser.Cache#removeImage * @param {string} key - Key of the asset you want to remove. - * @param {boolean} [removeFromPixi=true] - Should this image also be destroyed? Removing it from the PIXI.BaseTextureCache? + * @param {boolean} [destroyBaseTexture=true] - Should the BaseTexture behind this image also be destroyed? */ - removeImage: function (key, removeFromPixi) { + removeImage: function (key, destroyBaseTexture) { - if (removeFromPixi === undefined) { removeFromPixi = true; } + if (destroyBaseTexture === undefined) { destroyBaseTexture = true; } var img = this.getImage(key, true); - if (removeFromPixi && img.base) + if (destroyBaseTexture && img.base) { img.base.destroy(); } @@ -3266,7 +3226,7 @@ Phaser.Cache.prototype.constructor = Phaser.Cache; Documentation generated by JSDoc 3.3.3 - on Fri Jun 17 2016 12:45:29 GMT+0100 (BST) using the DocStrap template. + on Fri Jul 08 2016 15:42:34 GMT+0100 (GMT Daylight Time) using the DocStrap template. diff --git a/docs/src_loader_Loader.js.html b/docs/src_loader_Loader.js.html index fadf7c093..5bba0da65 100644 --- a/docs/src_loader_Loader.js.html +++ b/docs/src_loader_Loader.js.html @@ -708,10 +708,6 @@ ComplexPrimitiveShader -
  • - DisplayObject -
  • -
  • DisplayObjectContainer
  • @@ -744,6 +740,10 @@ PIXI +
  • + DisplayObject +
  • +
  • PixiFastShader
  • @@ -1329,7 +1329,19 @@ Phaser.Loader = function (game) { this.path = ''; /** - * This event is dispatched when the loading process starts: before the first file has been requested, + * Used to map the application mime-types to to the Accept header in XHR requests. + * If you don't require these mappings, or they cause problems on your server, then + * remove them from the headers object and the XHR request will not try to use them. + * @property {object} headers + * @default + */ + this.headers = { + json: "application/json", + xml: "application/xml" + }; + + /** + * This event is dispatched when the loading process starts: before the first file has been requested, * but after all the initial packs have been loaded. * * @property {Phaser.Signal} onLoadStart @@ -3544,6 +3556,11 @@ Phaser.Loader.prototype = { xhr.open("GET", url, true); xhr.responseType = type; + if (this.headers[file.type]) + { + xhr.setRequestHeader("Accept", this.headers[file.type]); + } + onerror = onerror || this.fileError; var _this = this; @@ -4282,7 +4299,7 @@ Phaser.Loader.prototype.constructor = Phaser.Loader; Documentation generated by JSDoc 3.3.3 - on Fri Jun 17 2016 12:45:29 GMT+0100 (BST) using the DocStrap template. + on Fri Jul 08 2016 15:42:34 GMT+0100 (GMT Daylight Time) using the DocStrap template. diff --git a/docs/src_loader_LoaderParser.js.html b/docs/src_loader_LoaderParser.js.html index 37ab037a3..7775c3ea9 100644 --- a/docs/src_loader_LoaderParser.js.html +++ b/docs/src_loader_LoaderParser.js.html @@ -708,10 +708,6 @@ ComplexPrimitiveShader -
  • - DisplayObject -
  • -
  • DisplayObjectContainer
  • @@ -744,6 +740,10 @@ PIXI +
  • + DisplayObject +
  • +
  • PixiFastShader
  • @@ -1412,7 +1412,7 @@ Phaser.LoaderParser = { Documentation generated by JSDoc 3.3.3 - on Fri Jun 17 2016 12:45:29 GMT+0100 (BST) using the DocStrap template. + on Fri Jul 08 2016 15:42:34 GMT+0100 (GMT Daylight Time) using the DocStrap template. diff --git a/docs/src_math_Math.js.html b/docs/src_math_Math.js.html index 56acc9b11..35006a369 100644 --- a/docs/src_math_Math.js.html +++ b/docs/src_math_Math.js.html @@ -708,10 +708,6 @@ ComplexPrimitiveShader -
  • - DisplayObject -
  • -
  • DisplayObjectContainer
  • @@ -744,6 +740,10 @@ PIXI +
  • + DisplayObject +
  • +
  • PixiFastShader
  • @@ -1373,7 +1373,9 @@ Phaser.Math = { * @return {number} n mod 1 */ shear: function (n) { + return n % 1; + }, /** @@ -1384,8 +1386,8 @@ Phaser.Math = { * @method Phaser.Math#snapTo * @param {number} input - The value to snap. * @param {number} gap - The interval gap of the grid. - * @param {number} [start] - Optional starting offset for gap. - * @return {number} + * @param {number} [start=0] - Optional starting offset for gap. + * @return {number} The snapped value. */ snapTo: function (input, gap, start) { @@ -1411,8 +1413,8 @@ Phaser.Math = { * @method Phaser.Math#snapToFloor * @param {number} input - The value to snap. * @param {number} gap - The interval gap of the grid. - * @param {number} [start] - Optional starting offset for gap. - * @return {number} + * @param {number} [start=0] - Optional starting offset for gap. + * @return {number} The snapped value. */ snapToFloor: function (input, gap, start) { @@ -1438,8 +1440,8 @@ Phaser.Math = { * @method Phaser.Math#snapToCeil * @param {number} input - The value to snap. * @param {number} gap - The interval gap of the grid. - * @param {number} [start] - Optional starting offset for gap. - * @return {number} + * @param {number} [start=0] - Optional starting offset for gap. + * @return {number} The snapped value. */ snapToCeil: function (input, gap, start) { @@ -1487,9 +1489,9 @@ Phaser.Math = { * * @method Phaser.Math#roundTo * @param {number} value - The value to round. - * @param {number} place - The place to round to. - * @param {number} base - The base to round in... default is 10 for decimal. - * @return {number} + * @param {number} [place=0] - The place to round to. + * @param {number} [base=10] - The base to round in. Default is 10 for decimal. + * @return {number} The rounded value. */ roundTo: function (value, place, base) { @@ -1503,11 +1505,14 @@ Phaser.Math = { }, /** + * Floors to some place comparative to a `base`, default is 10 for decimal place. + * The `place` is represented by the power applied to `base` to get that place. + * * @method Phaser.Math#floorTo * @param {number} value - The value to round. - * @param {number} place - The place to round to. - * @param {number} base - The base to round in... default is 10 for decimal. - * @return {number} + * @param {number} [place=0] - The place to round to. + * @param {number} [base=10] - The base to round in. Default is 10 for decimal. + * @return {number} The rounded value. */ floorTo: function (value, place, base) { @@ -1521,11 +1526,14 @@ Phaser.Math = { }, /** + * Ceils to some place comparative to a `base`, default is 10 for decimal place. + * The `place` is represented by the power applied to `base` to get that place. + * * @method Phaser.Math#ceilTo * @param {number} value - The value to round. - * @param {number} place - The place to round to. - * @param {number} base - The base to round in... default is 10 for decimal. - * @return {number} + * @param {number} [place=0] - The place to round to. + * @param {number} [base=10] - The base to round in. Default is 10 for decimal. + * @return {number} The rounded value. */ ceilTo: function (value, place, base) { @@ -1540,42 +1548,51 @@ Phaser.Math = { /** * Find the angle of a segment from (x1, y1) -> (x2, y2). + * * @method Phaser.Math#angleBetween - * @param {number} x1 - * @param {number} y1 - * @param {number} x2 - * @param {number} y2 + * @param {number} x1 - The x coordinate of the first value. + * @param {number} y1 - The y coordinate of the first value. + * @param {number} x2 - The x coordinate of the second value. + * @param {number} y2 - The y coordinate of the second value. * @return {number} The angle, in radians. */ angleBetween: function (x1, y1, x2, y2) { + return Math.atan2(y2 - y1, x2 - x1); + }, /** * Find the angle of a segment from (x1, y1) -> (x2, y2). - * Note that the difference between this method and Math.angleBetween is that this assumes the y coordinate travels + * + * The difference between this method and Math.angleBetween is that this assumes the y coordinate travels * down the screen. * * @method Phaser.Math#angleBetweenY - * @param {number} x1 - * @param {number} y1 - * @param {number} x2 - * @param {number} y2 + * @param {number} x1 - The x coordinate of the first value. + * @param {number} y1 - The y coordinate of the first value. + * @param {number} x2 - The x coordinate of the second value. + * @param {number} y2 - The y coordinate of the second value. * @return {number} The angle, in radians. */ angleBetweenY: function (x1, y1, x2, y2) { + return Math.atan2(x2 - x1, y2 - y1); + }, /** * Find the angle of a segment from (point1.x, point1.y) -> (point2.x, point2.y). + * * @method Phaser.Math#angleBetweenPoints - * @param {Phaser.Point} point1 - * @param {Phaser.Point} point2 - * @return {number} The angle, in radians. + * @param {Phaser.Point} point1 - The first point. + * @param {Phaser.Point} point2 - The second point. + * @return {number} The angle between the two points, in radians. */ angleBetweenPoints: function (point1, point2) { + return Math.atan2(point2.y - point1.y, point2.x - point1.x); + }, /** @@ -1586,24 +1603,28 @@ Phaser.Math = { * @return {number} The angle, in radians. */ angleBetweenPointsY: function (point1, point2) { + return Math.atan2(point2.x - point1.x, point2.y - point1.y); + }, /** * Reverses an angle. * @method Phaser.Math#reverseAngle * @param {number} angleRad - The angle to reverse, in radians. - * @return {number} Returns the reverse angle, in radians. + * @return {number} The reverse angle, in radians. */ reverseAngle: function (angleRad) { + return this.normalizeAngle(angleRad + Math.PI, true); + }, /** * Normalizes an angle to the [0,2pi) range. * @method Phaser.Math#normalizeAngle * @param {number} angleRad - The angle to normalize, in radians. - * @return {number} Returns the angle, fit within the [0,2pi] range, in radians. + * @return {number} The angle, fit within the [0,2pi] range, in radians. */ normalizeAngle: function (angleRad) { @@ -1619,10 +1640,12 @@ Phaser.Math = { * @param {number} value - The value to add the amount to. * @param {number} amount - The amount to add to the value. * @param {number} max - The maximum the value is allowed to be. - * @return {number} + * @return {number} The new value. */ maxAdd: function (value, amount, max) { + return Math.min(value + amount, max); + }, /** @@ -1635,7 +1658,9 @@ Phaser.Math = { * @return {number} The new value. */ minSub: function (value, amount, min) { + return Math.max(value - amount, min); + }, /** @@ -1700,8 +1725,10 @@ Phaser.Math = { * @return {boolean} True if the given number is odd. False if the given number is even. */ isOdd: function (n) { + // Does not work with extremely large values return !!(n & 1); + }, /** @@ -1712,8 +1739,10 @@ Phaser.Math = { * @return {boolean} True if the given number is even. False if the given number is odd. */ isEven: function (n) { + // Does not work with extremely large values return !(n & 1); + }, /** @@ -1950,11 +1979,13 @@ Phaser.Math = { * @method Phaser.Math#linear * @param {number} p0 * @param {number} p1 - * @param {number} t + * @param {number} t - A value between 0 and 1. * @return {number} */ linear: function (p0, p1, t) { + return (p1 - p0) * t + p0; + }, /** @@ -1965,7 +1996,9 @@ Phaser.Math = { * @return {number} */ bernstein: function (n, i) { + return this.factorial(n) / this.factorial(i) / this.factorial(n - i); + }, /** @@ -1973,7 +2006,7 @@ Phaser.Math = { * @param {number} value - the number you want to evaluate * @return {number} */ - factorial : function( value ){ + factorial: function (value) { if (value === 0) { @@ -2012,15 +2045,17 @@ Phaser.Math = { }, /** - * The (absolute) difference between two values. + * The absolute difference between two values. * * @method Phaser.Math#difference - * @param {number} a - * @param {number} b - * @return {number} + * @param {number} a - The first value to check. + * @param {number} b - The second value to check. + * @return {number} The absolute difference between the two values. */ difference: function (a, b) { + return Math.abs(a - b); + }, /** @@ -2171,7 +2206,9 @@ Phaser.Math = { * @return {number} */ clampBottom: function (x, a) { + return x < a ? a : x; + }, /** @@ -2185,22 +2222,26 @@ Phaser.Math = { * @see {@link Phaser.Math.fuzzyEqual} */ within: function (a, b, tolerance) { + return (Math.abs(a - b) <= tolerance); + }, /** * Linear mapping from range <a1, a2> to range <b1, b2> * * @method Phaser.Math#mapLinear - * @param {number} x the value to map - * @param {number} a1 first endpoint of the range <a1, a2> - * @param {number} a2 final endpoint of the range <a1, a2> - * @param {number} b1 first endpoint of the range <b1, b2> - * @param {number} b2 final endpoint of the range <b1, b2> + * @param {number} x - The value to map + * @param {number} a1 - First endpoint of the range <a1, a2> + * @param {number} a2 - Final endpoint of the range <a1, a2> + * @param {number} b1 - First endpoint of the range <b1, b2> + * @param {number} b2 - Final endpoint of the range <b1, b2> * @return {number} */ mapLinear: function (x, a1, a2, b1, b2) { + return b1 + ( x - a1 ) * ( b2 - b1 ) / ( a2 - a1 ); + }, /** @@ -2232,8 +2273,11 @@ Phaser.Math = { * @return {float} A value between 0 and 1. */ smootherstep: function (x, min, max) { + x = Math.max(0, Math.min(1, (x - min) / (max - min))); + return x * x * x * (x * (x * 6 - 15) + 10); + }, /** @@ -2246,7 +2290,9 @@ Phaser.Math = { * @return {integer} An integer in {-1, 0, 1} */ sign: function (x) { + return ( x < 0 ) ? -1 : ( ( x > 0 ) ? 1 : 0 ); + }, /** @@ -2324,7 +2370,7 @@ Phaser.Math.radToDeg = function radToDeg (radians) { Documentation generated by JSDoc 3.3.3 - on Fri Jun 17 2016 12:45:29 GMT+0100 (BST) using the DocStrap template. + on Fri Jul 08 2016 15:42:34 GMT+0100 (GMT Daylight Time) using the DocStrap template. diff --git a/docs/src_math_QuadTree.js.html b/docs/src_math_QuadTree.js.html index 5a25fcab3..af5720db6 100644 --- a/docs/src_math_QuadTree.js.html +++ b/docs/src_math_QuadTree.js.html @@ -708,10 +708,6 @@ ComplexPrimitiveShader -
  • - DisplayObject -
  • -
  • DisplayObjectContainer
  • @@ -744,6 +740,10 @@ PIXI +
  • + DisplayObject +
  • +
  • PixiFastShader
  • @@ -1597,7 +1597,7 @@ Phaser.QuadTree.prototype.constructor = Phaser.QuadTree; Documentation generated by JSDoc 3.3.3 - on Fri Jun 17 2016 12:45:29 GMT+0100 (BST) using the DocStrap template. + on Fri Jul 08 2016 15:42:34 GMT+0100 (GMT Daylight Time) using the DocStrap template. diff --git a/docs/src_math_RandomDataGenerator.js.html b/docs/src_math_RandomDataGenerator.js.html index fece31cc5..8a43a7a7f 100644 --- a/docs/src_math_RandomDataGenerator.js.html +++ b/docs/src_math_RandomDataGenerator.js.html @@ -708,10 +708,6 @@ ComplexPrimitiveShader -
  • - DisplayObject -
  • -
  • DisplayObjectContainer
  • @@ -744,6 +740,10 @@ PIXI +
  • + DisplayObject +
  • +
  • PixiFastShader
  • @@ -1602,7 +1602,7 @@ Phaser.RandomDataGenerator.prototype.constructor = Phaser.RandomDataGenerator; Documentation generated by JSDoc 3.3.3 - on Fri Jun 17 2016 12:45:29 GMT+0100 (BST) using the DocStrap template. + on Fri Jul 08 2016 15:42:34 GMT+0100 (GMT Daylight Time) using the DocStrap template. diff --git a/docs/src_net_Net.js.html b/docs/src_net_Net.js.html index af9cdd78f..006a80984 100644 --- a/docs/src_net_Net.js.html +++ b/docs/src_net_Net.js.html @@ -708,10 +708,6 @@ ComplexPrimitiveShader -
  • - DisplayObject -
  • -
  • DisplayObjectContainer
  • @@ -744,6 +740,10 @@ PIXI +
  • + DisplayObject +
  • +
  • PixiFastShader
  • @@ -1411,7 +1411,7 @@ Phaser.Net.prototype.constructor = Phaser.Net; Documentation generated by JSDoc 3.3.3 - on Fri Jun 17 2016 12:45:29 GMT+0100 (BST) using the DocStrap template. + on Fri Jul 08 2016 15:42:34 GMT+0100 (GMT Daylight Time) using the DocStrap template. diff --git a/docs/src_particles_Particles.js.html b/docs/src_particles_Particles.js.html index a6c68a5ec..a9e541019 100644 --- a/docs/src_particles_Particles.js.html +++ b/docs/src_particles_Particles.js.html @@ -708,10 +708,6 @@ ComplexPrimitiveShader -
  • - DisplayObject -
  • -
  • DisplayObjectContainer
  • @@ -744,6 +740,10 @@ PIXI +
  • + DisplayObject +
  • +
  • PixiFastShader
  • @@ -1325,7 +1325,7 @@ Phaser.Particles.prototype.constructor = Phaser.Particles; Documentation generated by JSDoc 3.3.3 - on Fri Jun 17 2016 12:45:29 GMT+0100 (BST) using the DocStrap template. + on Fri Jul 08 2016 15:42:34 GMT+0100 (GMT Daylight Time) using the DocStrap template. diff --git a/docs/src_particles_arcade_ArcadeParticles.js.html b/docs/src_particles_arcade_ArcadeParticles.js.html index 241b39236..97e272a90 100644 --- a/docs/src_particles_arcade_ArcadeParticles.js.html +++ b/docs/src_particles_arcade_ArcadeParticles.js.html @@ -708,10 +708,6 @@ ComplexPrimitiveShader -
  • - DisplayObject -
  • -
  • DisplayObjectContainer
  • @@ -744,6 +740,10 @@ PIXI +
  • + DisplayObject +
  • +
  • PixiFastShader
  • @@ -1256,7 +1256,7 @@ Phaser.Particles.Arcade = {}; Documentation generated by JSDoc 3.3.3 - on Fri Jun 17 2016 12:45:29 GMT+0100 (BST) using the DocStrap template. + on Fri Jul 08 2016 15:42:34 GMT+0100 (GMT Daylight Time) using the DocStrap template. diff --git a/docs/src_particles_arcade_Emitter.js.html b/docs/src_particles_arcade_Emitter.js.html index 36b6ec378..b93495905 100644 --- a/docs/src_particles_arcade_Emitter.js.html +++ b/docs/src_particles_arcade_Emitter.js.html @@ -708,10 +708,6 @@ ComplexPrimitiveShader -
  • - DisplayObject -
  • -
  • DisplayObjectContainer
  • @@ -744,6 +740,10 @@ PIXI +
  • + DisplayObject +
  • +
  • PixiFastShader
  • @@ -2246,7 +2246,7 @@ Object.defineProperty(Phaser.Particles.Arcade.Emitter.prototype, "bottom", { Documentation generated by JSDoc 3.3.3 - on Fri Jun 17 2016 12:45:29 GMT+0100 (BST) using the DocStrap template. + on Fri Jul 08 2016 15:42:34 GMT+0100 (GMT Daylight Time) using the DocStrap template. diff --git a/docs/src_physics_Physics.js.html b/docs/src_physics_Physics.js.html index ad426003f..8e294f811 100644 --- a/docs/src_physics_Physics.js.html +++ b/docs/src_physics_Physics.js.html @@ -708,10 +708,6 @@ ComplexPrimitiveShader -
  • - DisplayObject -
  • -
  • DisplayObjectContainer
  • @@ -744,6 +740,10 @@ PIXI +
  • + DisplayObject +
  • +
  • PixiFastShader
  • @@ -1676,7 +1676,7 @@ Phaser.Physics.prototype.constructor = Phaser.Physics; Documentation generated by JSDoc 3.3.3 - on Fri Jun 17 2016 12:45:29 GMT+0100 (BST) using the DocStrap template. + on Fri Jul 08 2016 15:42:34 GMT+0100 (GMT Daylight Time) using the DocStrap template. diff --git a/docs/src_physics_arcade_Body.js.html b/docs/src_physics_arcade_Body.js.html index a3de9960d..6aefd9c25 100644 --- a/docs/src_physics_arcade_Body.js.html +++ b/docs/src_physics_arcade_Body.js.html @@ -708,10 +708,6 @@ ComplexPrimitiveShader -
  • - DisplayObject -
  • -
  • DisplayObjectContainer
  • @@ -744,6 +740,10 @@ PIXI +
  • + DisplayObject +
  • +
  • PixiFastShader
  • @@ -1261,6 +1261,25 @@ Phaser.Physics.Arcade.Body = function (sprite) { */ this.enable = true; + /** + * If `true` this Body is using circular collision detection. If `false` it is using rectangular. + * Use `Body.setCircle` to control the collision shape this Body uses. + * @property {boolean} isCircle + * @default + * @readOnly + */ + this.isCircle = false; + + /** + * The radius of the circular collision shape this Body is using if Body.setCircle has been enabled. + * If you wish to change the radius then call `setCircle` again with the new value. + * If you wish to stop the Body using a circle then call `setCircle` with a radius of zero (or undefined). + * @property {number} radius + * @default + * @readOnly + */ + this.radius = 0; + /** * @property {Phaser.Point} offset - The offset of the Physics Body from the Sprite x/y position. */ @@ -1354,12 +1373,12 @@ Phaser.Physics.Arcade.Body = function (sprite) { * @property {Phaser.Point} newVelocity - The new velocity. Calculated during the Body.preUpdate and applied to its position. * @readonly */ - this.newVelocity = new Phaser.Point(0, 0); + this.newVelocity = new Phaser.Point(); /** * @property {Phaser.Point} deltaMax - The Sprite position is updated based on the delta x/y values. You can set a cap on those (both +-) using deltaMax. */ - this.deltaMax = new Phaser.Point(0, 0); + this.deltaMax = new Phaser.Point(); /** * @property {Phaser.Point} acceleration - The acceleration is the rate of change of the velocity. Measured in pixels per second squared. @@ -1380,7 +1399,7 @@ Phaser.Physics.Arcade.Body = function (sprite) { /** * @property {Phaser.Point} gravity - A local gravity applied to this Body. If non-zero this over rides any world gravity, unless Body.allowGravity is set to false. */ - this.gravity = new Phaser.Point(0, 0); + this.gravity = new Phaser.Point(); /** * @property {Phaser.Point} bounce - The elasticity of the Body when colliding. bounce.x/y = 1 means full rebound, bounce.x/y = 0.5 means 50% rebound velocity. @@ -1395,6 +1414,58 @@ Phaser.Physics.Arcade.Body = function (sprite) { */ this.worldBounce = null; + /** + * A Signal that is dispatched when this Body collides with the world bounds. + * Due to the potentially high volume of signals this could create it is disabled by default. + * To use this feature set this property to a Phaser.Signal: `sprite.body.onWorldBounds = new Phaser.Signal()` + * and it will be called when a collision happens, passing five arguments: + * `onWorldBounds(sprite, up, down, left, right)` + * where the Sprite is a reference to the Sprite that owns this Body, and the other arguments are booleans + * indicating on which side of the world the Body collided. + * @property {Phaser.Signal} onWorldBounds + */ + this.onWorldBounds = null; + + /** + * A Signal that is dispatched when this Body collides with another Body. + * + * You still need to call `game.physics.arcade.collide` in your `update` method in order + * for this signal to be dispatched. + * + * Usually you'd pass a callback to the `collide` method, but this signal provides for + * a different level of notification. + * + * Due to the potentially high volume of signals this could create it is disabled by default. + * + * To use this feature set this property to a Phaser.Signal: `sprite.body.onCollide = new Phaser.Signal()` + * and it will be called when a collision happens, passing two arguments: the sprites which collided. + * The first sprite in the argument is always the owner of this Body. + * + * If two Bodies with this Signal set collide, both will dispatch the Signal. + * @property {Phaser.Signal} onCollide + */ + this.onCollide = null; + + /** + * A Signal that is dispatched when this Body overlaps with another Body. + * + * You still need to call `game.physics.arcade.overlap` in your `update` method in order + * for this signal to be dispatched. + * + * Usually you'd pass a callback to the `overlap` method, but this signal provides for + * a different level of notification. + * + * Due to the potentially high volume of signals this could create it is disabled by default. + * + * To use this feature set this property to a Phaser.Signal: `sprite.body.onOverlap = new Phaser.Signal()` + * and it will be called when a collision happens, passing two arguments: the sprites which collided. + * The first sprite in the argument is always the owner of this Body. + * + * If two Bodies with this Signal set collide, both will dispatch the Signal. + * @property {Phaser.Signal} onOverlap + */ + this.onOverlap = null; + /** * @property {Phaser.Point} maxVelocity - The maximum velocity in pixels per second sq. that the Body can reach. * @default @@ -1497,6 +1568,12 @@ Phaser.Physics.Arcade.Body = function (sprite) { */ this.overlapY = 0; + /** + * If `Body.isCircle` is true, and this body collides with another circular body, the amount of overlap is stored here. + * @property {number} overlapR - The amount of overlap during the collision. + */ + this.overlapR = 0; + /** * If a body is overlapping with another body, but neither of them are moving (maybe they spawned on-top of each other?) this is set to true. * @property {boolean} embedded - Body embed value. @@ -1770,7 +1847,10 @@ Phaser.Physics.Arcade.Body.prototype = { if (this.collideWorldBounds) { - this.checkWorldBounds(); + if (this.checkWorldBounds() && this.onWorldBounds) + { + this.onWorldBounds.dispatch(this.sprite, this.blocked.up, this.blocked.down, this.blocked.left, this.blocked.right); + } } } @@ -1941,6 +2021,7 @@ Phaser.Physics.Arcade.Body.prototype = { * * @method Phaser.Physics.Arcade.Body#checkWorldBounds * @protected + * @return {boolean} True if the Body collided with the world bounds, otherwise false. */ checkWorldBounds: function () { @@ -1951,31 +2032,71 @@ Phaser.Physics.Arcade.Body.prototype = { var bx = (this.worldBounce) ? -this.worldBounce.x : -this.bounce.x; var by = (this.worldBounce) ? -this.worldBounce.y : -this.bounce.y; - if (pos.x < bounds.x && check.left) + if (this.isCircle) { - pos.x = bounds.x; - this.velocity.x *= bx; - this.blocked.left = true; + var bodyBounds = { + x: this.center.x - this.radius, + y: this.center.y - this.radius, + right: this.center.x + this.radius, + bottom: this.center.y + this.radius + }; + + if (bodyBounds.x < bounds.x && check.left) + { + pos.x = bounds.x - this.halfWidth + this.radius; + this.velocity.x *= bx; + this.blocked.left = true; + } + else if (bodyBounds.right > bounds.right && check.right) + { + pos.x = bounds.right - this.halfWidth - this.radius; + this.velocity.x *= bx; + this.blocked.right = true; + } + + if (bodyBounds.y < bounds.y && check.up) + { + pos.y = bounds.y - this.halfHeight + this.radius; + this.velocity.y *= by; + this.blocked.up = true; + } + else if (bodyBounds.bottom > bounds.bottom && check.down) + { + pos.y = bounds.bottom - this.halfHeight - this.radius; + this.velocity.y *= by; + this.blocked.down = true; + } } - else if (this.right > bounds.right && check.right) + else { - pos.x = bounds.right - this.width; - this.velocity.x *= bx; - this.blocked.right = true; + if (pos.x < bounds.x && check.left) + { + pos.x = bounds.x; + this.velocity.x *= bx; + this.blocked.left = true; + } + else if (this.right > bounds.right && check.right) + { + pos.x = bounds.right - this.width; + this.velocity.x *= bx; + this.blocked.right = true; + } + + if (pos.y < bounds.y && check.up) + { + pos.y = bounds.y; + this.velocity.y *= by; + this.blocked.up = true; + } + else if (this.bottom > bounds.bottom && check.down) + { + pos.y = bounds.bottom - this.height; + this.velocity.y *= by; + this.blocked.down = true; + } } - if (pos.y < bounds.y && check.up) - { - pos.y = bounds.y; - this.velocity.y *= by; - this.blocked.up = true; - } - else if (this.bottom > bounds.bottom && check.down) - { - pos.y = bounds.bottom - this.height; - this.velocity.y *= by; - this.blocked.down = true; - } + return (this.blocked.up || this.blocked.down || this.blocked.left || this.blocked.right); }, @@ -2155,6 +2276,9 @@ Phaser.Physics.Arcade.Body.prototype = { * 24 is the horizontal offset of the Body from the top-left of the Sprites texture, and 34 * is the vertical offset. * + * Calling `setSize` on a Body that has already had `setCircle` will reset all of the Circle + * properties, making this Body rectangular again. + * * @method Phaser.Physics.Arcade.Body#setSize * @param {number} width - The width of the Body. * @param {number} height - The height of the Body. @@ -2176,6 +2300,55 @@ Phaser.Physics.Arcade.Body.prototype = { this.center.setTo(this.position.x + this.halfWidth, this.position.y + this.halfHeight); + this.isCircle = false; + this.radius = 0; + + }, + + /** + * Sets this Body as using a circle, of the given radius, for all collision detection instead of a rectangle. + * The radius is given in pixels and is the distance from the center of the circle to the edge. + * + * You can also control the x and y offset, which is the position of the Body relative to the top-left of the Sprite. + * + * To change a Body back to being rectangular again call `Body.setSize`. + * + * Note: Circular collision only happens with other Arcade Physics bodies, it does not + * work against tile maps, where rectangular collision is the only method supported. + * + * @method Phaser.Physics.Arcade.Body#setCircle + * @param {number} [radius] - The radius of the Body in pixels. Pass a value of zero / undefined, to stop the Body using a circle for collision. + * @param {number} [offsetX] - The X offset of the Body from the Sprite position. + * @param {number} [offsetY] - The Y offset of the Body from the Sprite position. + */ + setCircle: function (radius, offsetX, offsetY) { + + if (offsetX === undefined) { offsetX = this.offset.x; } + if (offsetY === undefined) { offsetY = this.offset.y; } + + if (radius > 0) + { + this.isCircle = true; + this.radius = radius; + + this.sourceWidth = radius * 2; + this.sourceHeight = radius * 2; + + this.width = this.sourceWidth * this._sx; + this.height = this.sourceHeight * this._sy; + + this.halfWidth = Math.floor(this.width / 2); + this.halfHeight = Math.floor(this.height / 2); + + this.offset.setTo(offsetX, offsetY); + + this.center.setTo(this.position.x + this.halfWidth, this.position.y + this.halfHeight); + } + else + { + this.isCircle = false; + } + }, /** @@ -2213,6 +2386,36 @@ Phaser.Physics.Arcade.Body.prototype = { }, + /** + * Returns the bounds of this physics body. + * + * Only used internally by the World collision methods. + * + * @method Phaser.Physics.Arcade.Body#getBounds + * @param {object} obj - The object in which to set the bounds values. + * @return {object} The object that was given to this method. + */ + getBounds: function (obj) { + + if (this.isCircle) + { + obj.x = this.center.x - this.radius; + obj.y = this.center.y - this.radius; + obj.right = this.center.x + this.radius; + obj.bottom = this.center.y + this.radius; + } + else + { + obj.x = this.x; + obj.y = this.y; + obj.right = this.right; + obj.bottom = this.bottom; + } + + return obj; + + }, + /** * Tests if a world point lies within this Body. * @@ -2223,7 +2426,7 @@ Phaser.Physics.Arcade.Body.prototype = { */ hitTest: function (x, y) { - return Phaser.Rectangle.contains(this, x, y); + return (this.isCircle) ? Phaser.Circle.contains(this, x, y) : Phaser.Rectangle.contains(this, x, y); }, @@ -2457,15 +2660,33 @@ Phaser.Physics.Arcade.Body.render = function (context, body, color, filled) { color = color || 'rgba(0,255,0,0.4)'; - if (filled) + context.fillStyle = color; + context.strokeStyle = color; + + if (body.isCircle) { - context.fillStyle = color; - context.fillRect(body.position.x - body.game.camera.x, body.position.y - body.game.camera.y, body.width, body.height); + context.beginPath(); + context.arc(body.center.x - body.game.camera.x, body.center.y - body.game.camera.y, body.radius, 0, 2 * Math.PI); + + if (filled) + { + context.fill(); + } + else + { + context.stroke(); + } } else { - context.strokeStyle = color; - context.strokeRect(body.position.x - body.game.camera.x, body.position.y - body.game.camera.y, body.width, body.height); + if (filled) + { + context.fillRect(body.position.x - body.game.camera.x, body.position.y - body.game.camera.y, body.width, body.height); + } + else + { + context.strokeRect(body.position.x - body.game.camera.x, body.position.y - body.game.camera.y, body.width, body.height); + } } }; @@ -2512,7 +2733,7 @@ Phaser.Physics.Arcade.Body.prototype.constructor = Phaser.Physics.Arcade.Body; Documentation generated by JSDoc 3.3.3 - on Fri Jun 17 2016 12:45:29 GMT+0100 (BST) using the DocStrap template. + on Fri Jul 08 2016 15:42:34 GMT+0100 (GMT Daylight Time) using the DocStrap template. diff --git a/docs/src_physics_arcade_TilemapCollision.js.html b/docs/src_physics_arcade_TilemapCollision.js.html index 0caeddb4b..21bec8c6c 100644 --- a/docs/src_physics_arcade_TilemapCollision.js.html +++ b/docs/src_physics_arcade_TilemapCollision.js.html @@ -708,10 +708,6 @@ ComplexPrimitiveShader -
  • - DisplayObject -
  • -
  • DisplayObjectContainer
  • @@ -744,6 +740,10 @@ PIXI +
  • + DisplayObject +
  • +
  • PixiFastShader
  • @@ -1660,7 +1660,7 @@ Phaser.Utils.mixinPrototype(Phaser.Physics.Arcade.prototype, Phaser.Physics.Arca Documentation generated by JSDoc 3.3.3 - on Fri Jun 17 2016 12:45:29 GMT+0100 (BST) using the DocStrap template. + on Fri Jul 08 2016 15:42:34 GMT+0100 (GMT Daylight Time) using the DocStrap template. diff --git a/docs/src_physics_arcade_World.js.html b/docs/src_physics_arcade_World.js.html index cefc84f94..aaca65ee0 100644 --- a/docs/src_physics_arcade_World.js.html +++ b/docs/src_physics_arcade_World.js.html @@ -708,10 +708,6 @@ ComplexPrimitiveShader -
  • - DisplayObject -
  • -
  • DisplayObjectContainer
  • @@ -744,6 +740,10 @@ PIXI +
  • + DisplayObject +
  • +
  • PixiFastShader
  • @@ -1930,67 +1930,70 @@ Phaser.Physics.Arcade.prototype = { return; } - var body; - if (this.skipQuadTree || sprite.body.skipQuadTree) { + var bounds; + for (var i = 0; i < group.hash.length; i++) { + var object1 = group.hash[i]; + // Skip duff entries - we can't check a non-existent sprite or one with no body - if (!group.hash[i] || !group.hash[i].exists || !group.hash[i].body) + if (!object1 || !object1.exists || !object1.body) { continue; } - body = group.hash[i].body; + // Inject the Body bounds data into the bounds object + bounds = object1.body.getBounds(bounds); // Skip items either side of the sprite if (this.sortDirection === Phaser.Physics.Arcade.LEFT_RIGHT) { - if (sprite.body.right < body.x) + if (sprite.body.right < bounds.x) { break; } - else if (body.right < sprite.body.x) + else if (bounds.right < sprite.body.x) { continue; } } else if (this.sortDirection === Phaser.Physics.Arcade.RIGHT_LEFT) { - if (sprite.body.x > body.right) + if (sprite.body.x > bounds.right) { break; } - else if (body.x > sprite.body.right) + else if (bounds.x > sprite.body.right) { continue; } } else if (this.sortDirection === Phaser.Physics.Arcade.TOP_BOTTOM) { - if (sprite.body.bottom < body.y) + if (sprite.body.bottom < bounds.y) { break; } - else if (body.bottom < sprite.body.y) + else if (bounds.bottom < sprite.body.y) { continue; } } else if (this.sortDirection === Phaser.Physics.Arcade.BOTTOM_TOP) { - if (sprite.body.y > body.bottom) + if (sprite.body.y > bounds.bottom) { break; } - else if (body.y > sprite.body.bottom) + else if (bounds.y > sprite.body.bottom) { continue; } } - this.collideSpriteVsSprite(sprite, group.hash[i], collideCallback, processCallback, callbackContext, overlapOnly); + this.collideSpriteVsSprite(sprite, object1, collideCallback, processCallback, callbackContext, overlapOnly); } } else @@ -2042,65 +2045,73 @@ Phaser.Physics.Arcade.prototype = { for (var i = 0; i < group.hash.length; i++) { + var bounds1; + var object1 = group.hash[i]; + // Skip duff entries - we can't check a non-existent sprite or one with no body - if (!group.hash[i] || !group.hash[i].exists || !group.hash[i].body) + if (!object1 || !object1.exists || !object1.body) { continue; } - var object1 = group.hash[i]; + // Inject the Body bounds data into the bounds1 object + bounds1 = object1.body.getBounds(bounds1); for (var j = i + 1; j < group.hash.length; j++) { + var bounds2; + var object2 = group.hash[j]; + // Skip duff entries - we can't check a non-existent sprite or one with no body - if (!group.hash[j] || !group.hash[j].exists || !group.hash[j].body) + if (!object2 || !object2.exists || !object2.body) { continue; } - var object2 = group.hash[j]; + // Inject the Body bounds data into the bounds2 object + bounds2 = object2.body.getBounds(bounds2); // Skip items either side of the sprite if (this.sortDirection === Phaser.Physics.Arcade.LEFT_RIGHT) { - if (object1.body.right < object2.body.x) + if (bounds1.right < bounds2.x) { break; } - else if (object2.body.right < object1.body.x) + else if (bounds2.right < bounds1.x) { continue; } } else if (this.sortDirection === Phaser.Physics.Arcade.RIGHT_LEFT) { - if (object1.body.x > object2.body.right) + if (bounds1.x > bounds2.right) { continue; } - else if (object2.body.x > object1.body.right) + else if (bounds2.x > bounds1.right) { break; } } else if (this.sortDirection === Phaser.Physics.Arcade.TOP_BOTTOM) { - if (object1.body.bottom < object2.body.y) + if (bounds1.bottom < bounds2.y) { continue; } - else if (object2.body.bottom < object1.body.y) + else if (bounds2.bottom < bounds1.y) { break; } } else if (this.sortDirection === Phaser.Physics.Arcade.BOTTOM_TOP) { - if (object1.body.y > object2.body.bottom) + if (bounds1.y > bounds2.bottom) { continue; } - else if (object2.body.y > object1.body.bottom) + else if (bounds2.y > object1.body.bottom) { break; } @@ -2173,6 +2184,42 @@ Phaser.Physics.Arcade.prototype = { return false; } + // Circle vs. Circle quick bail out + if (body1.isCircle && body2.isCircle) + { + return this.separateCircle(body1, body2, overlapOnly); + } + + // We define the behavior of bodies in a collision circle and rectangle + // If a collision occurs in the corner points of the rectangle, the body behave like circles + + // Either body1 or body2 is a circle + if (body1.isCircle !== body2.isCircle) + { + var bodyRect = (body1.isCircle) ? body2 : body1; + var bodyCircle = (body1.isCircle) ? body1 : body2; + + var rect = { + x: bodyRect.x, + y: bodyRect.y, + right: bodyRect.right, + bottom: bodyRect.bottom + }; + + var circle = { + x: bodyCircle.x + bodyCircle.radius, + y: bodyCircle.y + bodyCircle.radius + }; + + if (circle.y < rect.y || circle.y > rect.bottom) + { + if (circle.x < rect.x || circle.x > rect.right) + { + return this.separateCircle(body1, body2, overlapOnly); + } + } + } + var resultX = false; var resultY = false; @@ -2198,7 +2245,37 @@ Phaser.Physics.Arcade.prototype = { } } - return (resultX || resultY); + var result = (resultX || resultY); + + if (result) + { + if (overlapOnly) + { + if (body1.onOverlap) + { + body1.onOverlap.dispatch(body1.sprite, body2.sprite); + } + + if (body2.onOverlap) + { + body2.onOverlap.dispatch(body2.sprite, body1.sprite); + } + } + else + { + if (body1.onCollide) + { + body1.onCollide.dispatch(body1.sprite, body2.sprite); + } + + if (body2.onCollide) + { + body2.onCollide.dispatch(body2.sprite, body1.sprite); + } + } + } + + return result; }, @@ -2216,26 +2293,253 @@ Phaser.Physics.Arcade.prototype = { { return false; } - - // Rect vs. Rect - if (body1.right <= body2.position.x) + + if (body1.isCircle) { - return false; + if (body2.isCircle) + { + // Circle vs. Circle + return Phaser.Math.distance(body1.center.x, body1.center.y, body2.center.x, body2.center.y) <= (body1.radius + body2.radius); + } + else + { + // Circle vs. Rect + return this.circleBodyIntersects(body1, body2); + } + } + else + { + if (body2.isCircle) + { + // Rect vs. Circle + return this.circleBodyIntersects(body2, body1); + } + else + { + // Rect vs. Rect + if (body1.right <= body2.position.x) + { + return false; + } + + if (body1.bottom <= body2.position.y) + { + return false; + } + + if (body1.position.x >= body2.right) + { + return false; + } + + if (body1.position.y >= body2.bottom) + { + return false; + } + + return true; + } } - if (body1.bottom <= body2.position.y) + }, + + /** + * Checks to see if a circular Body intersects with a Rectangular Body. + * + * @method Phaser.Physics.Arcade#circleBodyIntersects + * @param {Phaser.Physics.Arcade.Body} circle - The Body with `isCircle` set. + * @param {Phaser.Physics.Arcade.Body} body - The Body with `isCircle` not set (i.e. uses Rectangle shape) + * @return {boolean} Returns true if the bodies intersect, otherwise false. + */ + circleBodyIntersects: function (circle, body) { + + var x = Phaser.Math.clamp(circle.center.x, body.left, body.right); + var y = Phaser.Math.clamp(circle.center.y, body.top, body.bottom); + + var dx = (circle.center.x - x) * (circle.center.x - x); + var dy = (circle.center.y - y) * (circle.center.y - y); + + return (dx + dy) <= (circle.radius * circle.radius); + + }, + + /** + * The core separation function to separate two circular physics bodies. + * + * @method Phaser.Physics.Arcade#separateCircle + * @private + * @param {Phaser.Physics.Arcade.Body} body1 - The first Body to separate. Must have `Body.isCircle` true and a positive `radius`. + * @param {Phaser.Physics.Arcade.Body} body2 - The second Body to separate. Must have `Body.isCircle` true and a positive `radius`. + * @param {boolean} overlapOnly - If true the bodies will only have their overlap data set, no separation or exchange of velocity will take place. + * @return {boolean} Returns true if the bodies were separated or overlap, otherwise false. + */ + separateCircle: function (body1, body2, overlapOnly) { + + // Set the bounding box overlap values + this.getOverlapX(body1, body2); + this.getOverlapY(body1, body2); + + var angleCollision = this.angleBetweenCenters(body1, body2); + + var overlap = 0; + + if (body1.isCircle !== body2.isCircle) { - return false; + var rect = { + x: (body2.isCircle) ? body1.position.x : body2.position.x, + y: (body2.isCircle) ? body1.position.y : body2.position.y, + right: (body2.isCircle) ? body1.right : body2.right, + bottom: (body2.isCircle) ? body1.bottom : body2.bottom + }; + + var circle = { + x: (body1.isCircle) ? (body1.position.x + body1.radius) : (body2.position.x + body2.radius), + y: (body1.isCircle) ? (body1.position.y + body1.radius) : (body2.position.y + body2.radius), + radius: (body1.isCircle) ? body1.radius : body2.radius + }; + + if (circle.y < rect.y) + { + if (circle.x < rect.x) + { + overlap = Phaser.Math.distance(circle.x, circle.y, rect.x, rect.y) - circle.radius; + } + else if (circle.x > rect.right) + { + overlap = Phaser.Math.distance(circle.x, circle.y, rect.right, rect.y) - circle.radius; + } + } + else if (circle.y > rect.bottom) + { + if (circle.x < rect.x) + { + overlap = Phaser.Math.distance(circle.x, circle.y, rect.x, rect.bottom) - circle.radius; + } + else if (circle.x > rect.right) + { + overlap = Phaser.Math.distance(circle.x, circle.y, rect.right, rect.bottom) - circle.radius; + } + } + + overlap *= -1; + } + else + { + overlap = (body1.radius + body2.radius) - Phaser.Math.distance(body1.center.x, body1.center.y, body2.center.x, body2.center.y); } - if (body1.position.x >= body2.right) + // Can't separate two immovable bodies, or a body with its own custom separation logic + if (overlapOnly || overlap === 0 || (body1.immovable && body2.immovable) || body1.customSeparateX || body2.customSeparateX) { - return false; + if (overlap !== 0) + { + if (body1.onOverlap) + { + body1.onOverlap.dispatch(body1.sprite, body2.sprite); + } + + if (body2.onOverlap) + { + body2.onOverlap.dispatch(body2.sprite, body1.sprite); + } + } + + // return true if there was some overlap, otherwise false + return (overlap !== 0); } - if (body1.position.y >= body2.bottom) + // Transform the velocity vector to the coordinate system oriented along the direction of impact. + // This is done to eliminate the vertical component of the velocity + var v1 = { + x: body1.velocity.x * Math.cos(angleCollision) + body1.velocity.y * Math.sin(angleCollision), + y: body1.velocity.x * Math.sin(angleCollision) - body1.velocity.y * Math.cos(angleCollision) + }; + + var v2 = { + x: body2.velocity.x * Math.cos(angleCollision) + body2.velocity.y * Math.sin(angleCollision), + y: body2.velocity.x * Math.sin(angleCollision) - body2.velocity.y * Math.cos(angleCollision) + }; + + // We expect the new velocity after impact + var tempVel1 = ((body1.mass - body2.mass) * v1.x + 2 * body2.mass * v2.x) / (body1.mass + body2.mass); + var tempVel2 = (2 * body1.mass * v1.x + (body2.mass - body1.mass) * v2.x) / (body1.mass + body2.mass); + + // We convert the vector to the original coordinate system and multiplied by factor of rebound + if (!body1.immovable) { - return false; + body1.velocity.x = (tempVel1 * Math.cos(angleCollision) - v1.y * Math.sin(angleCollision)) * body1.bounce.x; + body1.velocity.y = (v1.y * Math.cos(angleCollision) + tempVel1 * Math.sin(angleCollision)) * body1.bounce.y; + } + + if (!body2.immovable) + { + body2.velocity.x = (tempVel2 * Math.cos(angleCollision) - v2.y * Math.sin(angleCollision)) * body2.bounce.x; + body2.velocity.y = (v2.y * Math.cos(angleCollision) + tempVel2 * Math.sin(angleCollision)) * body2.bounce.y; + } + + // When the collision angle is almost perpendicular to the total initial velocity vector + // (collision on a tangent) vector direction can be determined incorrectly. + // This code fixes the problem + + if (Math.abs(angleCollision) < Math.PI / 2) + { + if ((body1.velocity.x > 0) && !body1.immovable && (body2.velocity.x > body1.velocity.x)) + { + body1.velocity.x *= -1; + } + else if ((body2.velocity.x < 0) && !body2.immovable && (body1.velocity.x < body2.velocity.x)) + { + body2.velocity.x *= -1; + } + else if ((body1.velocity.y > 0) && !body1.immovable && (body2.velocity.y > body1.velocity.y)) + { + body1.velocity.y *= -1; + } + else if ((body2.velocity.y < 0) && !body2.immovable && (body1.velocity.y < body2.velocity.y)) + { + body2.velocity.y *= -1; + } + } + else if (Math.abs(angleCollision) > Math.PI / 2) + { + if ((body1.velocity.x < 0) && !body1.immovable && (body2.velocity.x < body1.velocity.x)) + { + body1.velocity.x *= -1; + } + else if ((body2.velocity.x > 0) && !body2.immovable && (body1.velocity.x > body2.velocity.x)) + { + body2.velocity.x *= -1; + } + else if ((body1.velocity.y < 0) && !body1.immovable && (body2.velocity.y < body1.velocity.y)) + { + body1.velocity.y *= -1; + } + else if ((body2.velocity.y > 0) && !body2.immovable && (body1.velocity.x > body2.velocity.y)) + { + body2.velocity.y *= -1; + } + } + + if (!body1.immovable) + { + body1.x += (body1.velocity.x * this.game.time.physicsElapsed) - overlap * Math.cos(angleCollision); + body1.y += (body1.velocity.y * this.game.time.physicsElapsed) - overlap * Math.sin(angleCollision); + } + + if (!body2.immovable) + { + body2.x += (body2.velocity.x * this.game.time.physicsElapsed) + overlap * Math.cos(angleCollision); + body2.y += (body2.velocity.y * this.game.time.physicsElapsed) + overlap * Math.sin(angleCollision); + } + + if (body1.onCollide) + { + body1.onCollide.dispatch(body1.sprite, body2.sprite); + } + + if (body2.onCollide) + { + body2.onCollide.dispatch(body2.sprite, body1.sprite); } return true; @@ -2935,6 +3239,23 @@ Phaser.Physics.Arcade.prototype = { }, + /** + * Find the angle in radians between centers of two display objects (like Sprites). + * + * @method Phaser.Physics.Arcade#angleBetweenCenters + * @param {any} source - The Display Object to test from. + * @param {any} target - The Display Object to test to. + * @return {number} The angle in radians between the source and target display objects. + */ + angleBetweenCenters: function (source, target) { + + var dx = target.center.x - source.center.x; + var dy = target.center.y - source.center.y; + + return Math.atan2(dy, dx); + + }, + /** * Find the angle in radians between a display object (like a Sprite) and the given x/y coordinate. * @@ -3030,7 +3351,7 @@ Phaser.Physics.Arcade.prototype = { Documentation generated by JSDoc 3.3.3 - on Fri Jun 17 2016 12:45:29 GMT+0100 (BST) using the DocStrap template. + on Fri Jul 08 2016 15:42:34 GMT+0100 (GMT Daylight Time) using the DocStrap template. diff --git a/docs/src_physics_ninja_AABB.js.html b/docs/src_physics_ninja_AABB.js.html index 811b09846..d91f229c3 100644 --- a/docs/src_physics_ninja_AABB.js.html +++ b/docs/src_physics_ninja_AABB.js.html @@ -708,10 +708,6 @@ ComplexPrimitiveShader -
  • - DisplayObject -
  • -
  • DisplayObjectContainer
  • @@ -744,6 +740,10 @@ PIXI +
  • + DisplayObject +
  • +
  • PixiFastShader
  • @@ -2273,7 +2273,7 @@ Phaser.Physics.Ninja.AABB.prototype = { Documentation generated by JSDoc 3.3.3 - on Fri Jun 17 2016 12:45:29 GMT+0100 (BST) using the DocStrap template. + on Fri Jul 08 2016 15:42:34 GMT+0100 (GMT Daylight Time) using the DocStrap template. diff --git a/docs/src_physics_ninja_Body.js.html b/docs/src_physics_ninja_Body.js.html index 55175b66c..8ffa3e407 100644 --- a/docs/src_physics_ninja_Body.js.html +++ b/docs/src_physics_ninja_Body.js.html @@ -708,10 +708,6 @@ ComplexPrimitiveShader -
  • - DisplayObject -
  • -
  • DisplayObjectContainer
  • @@ -744,6 +740,10 @@ PIXI +
  • + DisplayObject +
  • +
  • PixiFastShader
  • @@ -1814,7 +1814,7 @@ Phaser.Physics.Ninja.Body.render = function(context, body, color, filled) { Documentation generated by JSDoc 3.3.3 - on Fri Jun 17 2016 12:45:29 GMT+0100 (BST) using the DocStrap template. + on Fri Jul 08 2016 15:42:34 GMT+0100 (GMT Daylight Time) using the DocStrap template. diff --git a/docs/src_physics_ninja_Circle.js.html b/docs/src_physics_ninja_Circle.js.html index 00bc00289..66c788e71 100644 --- a/docs/src_physics_ninja_Circle.js.html +++ b/docs/src_physics_ninja_Circle.js.html @@ -708,10 +708,6 @@ ComplexPrimitiveShader -
  • - DisplayObject -
  • -
  • DisplayObjectContainer
  • @@ -744,6 +740,10 @@ PIXI +
  • + DisplayObject +
  • +
  • PixiFastShader
  • @@ -3895,7 +3895,7 @@ Phaser.Physics.Ninja.Circle.prototype = { Documentation generated by JSDoc 3.3.3 - on Fri Jun 17 2016 12:45:29 GMT+0100 (BST) using the DocStrap template. + on Fri Jul 08 2016 15:42:34 GMT+0100 (GMT Daylight Time) using the DocStrap template. diff --git a/docs/src_physics_ninja_Tile.js.html b/docs/src_physics_ninja_Tile.js.html index 144611bdd..cb782203f 100644 --- a/docs/src_physics_ninja_Tile.js.html +++ b/docs/src_physics_ninja_Tile.js.html @@ -708,10 +708,6 @@ ComplexPrimitiveShader -
  • - DisplayObject -
  • -
  • DisplayObjectContainer
  • @@ -744,6 +740,10 @@ PIXI +
  • + DisplayObject +
  • +
  • PixiFastShader
  • @@ -2016,7 +2016,7 @@ Phaser.Physics.Ninja.Tile.TYPE_HALF = 30; Documentation generated by JSDoc 3.3.3 - on Fri Jun 17 2016 12:45:29 GMT+0100 (BST) using the DocStrap template. + on Fri Jul 08 2016 15:42:34 GMT+0100 (GMT Daylight Time) using the DocStrap template. diff --git a/docs/src_physics_ninja_World.js.html b/docs/src_physics_ninja_World.js.html index de16d82a1..b103bf605 100644 --- a/docs/src_physics_ninja_World.js.html +++ b/docs/src_physics_ninja_World.js.html @@ -708,10 +708,6 @@ ComplexPrimitiveShader -
  • - DisplayObject -
  • -
  • DisplayObjectContainer
  • @@ -744,6 +740,10 @@ PIXI +
  • + DisplayObject +
  • +
  • PixiFastShader
  • @@ -1853,7 +1853,7 @@ Phaser.Physics.Ninja.prototype = { Documentation generated by JSDoc 3.3.3 - on Fri Jun 17 2016 12:45:29 GMT+0100 (BST) using the DocStrap template. + on Fri Jul 08 2016 15:42:34 GMT+0100 (GMT Daylight Time) using the DocStrap template. diff --git a/docs/src_physics_p2_Body.js.html b/docs/src_physics_p2_Body.js.html index 0a2efa539..02c666925 100644 --- a/docs/src_physics_p2_Body.js.html +++ b/docs/src_physics_p2_Body.js.html @@ -708,10 +708,6 @@ ComplexPrimitiveShader -
  • - DisplayObject -
  • -
  • DisplayObjectContainer
  • @@ -744,6 +740,10 @@ PIXI +
  • + DisplayObject +
  • +
  • PixiFastShader
  • @@ -3226,7 +3226,7 @@ Object.defineProperty(Phaser.Physics.P2.Body.prototype, "collideWorldBounds", { Documentation generated by JSDoc 3.3.3 - on Fri Jun 17 2016 12:45:29 GMT+0100 (BST) using the DocStrap template. + on Fri Jul 08 2016 15:42:34 GMT+0100 (GMT Daylight Time) using the DocStrap template. diff --git a/docs/src_physics_p2_BodyDebug.js.html b/docs/src_physics_p2_BodyDebug.js.html index 7cc03fa2f..653126576 100644 --- a/docs/src_physics_p2_BodyDebug.js.html +++ b/docs/src_physics_p2_BodyDebug.js.html @@ -708,10 +708,6 @@ ComplexPrimitiveShader -
  • - DisplayObject -
  • -
  • DisplayObjectContainer
  • @@ -744,6 +740,10 @@ PIXI +
  • + DisplayObject +
  • +
  • PixiFastShader
  • @@ -1717,7 +1717,7 @@ Phaser.Utils.extend(Phaser.Physics.P2.BodyDebug.prototype, { Documentation generated by JSDoc 3.3.3 - on Fri Jun 17 2016 12:45:29 GMT+0100 (BST) using the DocStrap template. + on Fri Jul 08 2016 15:42:34 GMT+0100 (GMT Daylight Time) using the DocStrap template. diff --git a/docs/src_physics_p2_CollisionGroup.js.html b/docs/src_physics_p2_CollisionGroup.js.html index df732b314..bf6dbd964 100644 --- a/docs/src_physics_p2_CollisionGroup.js.html +++ b/docs/src_physics_p2_CollisionGroup.js.html @@ -708,10 +708,6 @@ ComplexPrimitiveShader -
  • - DisplayObject -
  • -
  • DisplayObjectContainer
  • @@ -744,6 +740,10 @@ PIXI +
  • + DisplayObject +
  • +
  • PixiFastShader
  • @@ -1266,7 +1266,7 @@ Phaser.Physics.P2.CollisionGroup = function (bitmask) { Documentation generated by JSDoc 3.3.3 - on Fri Jun 17 2016 12:45:29 GMT+0100 (BST) using the DocStrap template. + on Fri Jul 08 2016 15:42:34 GMT+0100 (GMT Daylight Time) using the DocStrap template. diff --git a/docs/src_physics_p2_ContactMaterial.js.html b/docs/src_physics_p2_ContactMaterial.js.html index 7840279cf..42006047f 100644 --- a/docs/src_physics_p2_ContactMaterial.js.html +++ b/docs/src_physics_p2_ContactMaterial.js.html @@ -708,10 +708,6 @@ ComplexPrimitiveShader -
  • - DisplayObject -
  • -
  • DisplayObjectContainer
  • @@ -744,6 +740,10 @@ PIXI +
  • + DisplayObject +
  • +
  • PixiFastShader
  • @@ -1308,7 +1308,7 @@ Phaser.Physics.P2.ContactMaterial.prototype.constructor = Phaser.Physics.P2.Cont Documentation generated by JSDoc 3.3.3 - on Fri Jun 17 2016 12:45:29 GMT+0100 (BST) using the DocStrap template. + on Fri Jul 08 2016 15:42:34 GMT+0100 (GMT Daylight Time) using the DocStrap template. diff --git a/docs/src_physics_p2_DistanceConstraint.js.html b/docs/src_physics_p2_DistanceConstraint.js.html index f3df617c9..9feb22240 100644 --- a/docs/src_physics_p2_DistanceConstraint.js.html +++ b/docs/src_physics_p2_DistanceConstraint.js.html @@ -708,10 +708,6 @@ ComplexPrimitiveShader -
  • - DisplayObject -
  • -
  • DisplayObjectContainer
  • @@ -744,6 +740,10 @@ PIXI +
  • + DisplayObject +
  • +
  • PixiFastShader
  • @@ -1294,7 +1294,7 @@ Phaser.Physics.P2.DistanceConstraint.prototype.constructor = Phaser.Physics.P2.D Documentation generated by JSDoc 3.3.3 - on Fri Jun 17 2016 12:45:29 GMT+0100 (BST) using the DocStrap template. + on Fri Jul 08 2016 15:42:34 GMT+0100 (GMT Daylight Time) using the DocStrap template. diff --git a/docs/src_physics_p2_FixtureList.js.html b/docs/src_physics_p2_FixtureList.js.html index a5ddfd78b..de55c852e 100644 --- a/docs/src_physics_p2_FixtureList.js.html +++ b/docs/src_physics_p2_FixtureList.js.html @@ -708,10 +708,6 @@ ComplexPrimitiveShader -
  • - DisplayObject -
  • -
  • DisplayObjectContainer
  • @@ -744,6 +740,10 @@ PIXI +
  • + DisplayObject +
  • +
  • PixiFastShader
  • @@ -1476,7 +1476,7 @@ Phaser.Physics.P2.FixtureList.prototype = { Documentation generated by JSDoc 3.3.3 - on Fri Jun 17 2016 12:45:29 GMT+0100 (BST) using the DocStrap template. + on Fri Jul 08 2016 15:42:34 GMT+0100 (GMT Daylight Time) using the DocStrap template. diff --git a/docs/src_physics_p2_GearConstraint.js.html b/docs/src_physics_p2_GearConstraint.js.html index b12ad46c6..741e0f7e8 100644 --- a/docs/src_physics_p2_GearConstraint.js.html +++ b/docs/src_physics_p2_GearConstraint.js.html @@ -708,10 +708,6 @@ ComplexPrimitiveShader -
  • - DisplayObject -
  • -
  • DisplayObjectContainer
  • @@ -744,6 +740,10 @@ PIXI +
  • + DisplayObject +
  • +
  • PixiFastShader
  • @@ -1285,7 +1285,7 @@ Phaser.Physics.P2.GearConstraint.prototype.constructor = Phaser.Physics.P2.GearC Documentation generated by JSDoc 3.3.3 - on Fri Jun 17 2016 12:45:29 GMT+0100 (BST) using the DocStrap template. + on Fri Jul 08 2016 15:42:34 GMT+0100 (GMT Daylight Time) using the DocStrap template. diff --git a/docs/src_physics_p2_InversePointProxy.js.html b/docs/src_physics_p2_InversePointProxy.js.html index 6a410b396..8cd091be1 100644 --- a/docs/src_physics_p2_InversePointProxy.js.html +++ b/docs/src_physics_p2_InversePointProxy.js.html @@ -708,10 +708,6 @@ ComplexPrimitiveShader -
  • - DisplayObject -
  • -
  • DisplayObjectContainer
  • @@ -744,6 +740,10 @@ PIXI +
  • + DisplayObject +
  • +
  • PixiFastShader
  • @@ -1347,7 +1347,7 @@ Object.defineProperty(Phaser.Physics.P2.InversePointProxy.prototype, "my", { Documentation generated by JSDoc 3.3.3 - on Fri Jun 17 2016 12:45:29 GMT+0100 (BST) using the DocStrap template. + on Fri Jul 08 2016 15:42:34 GMT+0100 (GMT Daylight Time) using the DocStrap template. diff --git a/docs/src_physics_p2_LockConstraint.js.html b/docs/src_physics_p2_LockConstraint.js.html index 8665c067f..947cbca90 100644 --- a/docs/src_physics_p2_LockConstraint.js.html +++ b/docs/src_physics_p2_LockConstraint.js.html @@ -708,10 +708,6 @@ ComplexPrimitiveShader -
  • - DisplayObject -
  • -
  • DisplayObjectContainer
  • @@ -744,6 +740,10 @@ PIXI +
  • + DisplayObject +
  • +
  • PixiFastShader
  • @@ -1289,7 +1289,7 @@ Phaser.Physics.P2.LockConstraint.prototype.constructor = Phaser.Physics.P2.LockC Documentation generated by JSDoc 3.3.3 - on Fri Jun 17 2016 12:45:29 GMT+0100 (BST) using the DocStrap template. + on Fri Jul 08 2016 15:42:34 GMT+0100 (GMT Daylight Time) using the DocStrap template. diff --git a/docs/src_physics_p2_Material.js.html b/docs/src_physics_p2_Material.js.html index b8bd80348..ac9a287cd 100644 --- a/docs/src_physics_p2_Material.js.html +++ b/docs/src_physics_p2_Material.js.html @@ -708,10 +708,6 @@ ComplexPrimitiveShader -
  • - DisplayObject -
  • -
  • DisplayObjectContainer
  • @@ -744,6 +740,10 @@ PIXI +
  • + DisplayObject +
  • +
  • PixiFastShader
  • @@ -1274,7 +1274,7 @@ Phaser.Physics.P2.Material.prototype.constructor = Phaser.Physics.P2.Material; Documentation generated by JSDoc 3.3.3 - on Fri Jun 17 2016 12:45:29 GMT+0100 (BST) using the DocStrap template. + on Fri Jul 08 2016 15:42:34 GMT+0100 (GMT Daylight Time) using the DocStrap template. diff --git a/docs/src_physics_p2_PointProxy.js.html b/docs/src_physics_p2_PointProxy.js.html index a53a89e8a..396fec1a3 100644 --- a/docs/src_physics_p2_PointProxy.js.html +++ b/docs/src_physics_p2_PointProxy.js.html @@ -708,10 +708,6 @@ ComplexPrimitiveShader -
  • - DisplayObject -
  • -
  • DisplayObjectContainer
  • @@ -744,6 +740,10 @@ PIXI +
  • + DisplayObject +
  • +
  • PixiFastShader
  • @@ -1347,7 +1347,7 @@ Object.defineProperty(Phaser.Physics.P2.PointProxy.prototype, "my", { Documentation generated by JSDoc 3.3.3 - on Fri Jun 17 2016 12:45:29 GMT+0100 (BST) using the DocStrap template. + on Fri Jul 08 2016 15:42:34 GMT+0100 (GMT Daylight Time) using the DocStrap template. diff --git a/docs/src_physics_p2_PrismaticConstraint.js.html b/docs/src_physics_p2_PrismaticConstraint.js.html index 5ed7cc82c..2b65ebfd3 100644 --- a/docs/src_physics_p2_PrismaticConstraint.js.html +++ b/docs/src_physics_p2_PrismaticConstraint.js.html @@ -708,10 +708,6 @@ ComplexPrimitiveShader -
  • - DisplayObject -
  • -
  • DisplayObjectContainer
  • @@ -744,6 +740,10 @@ PIXI +
  • + DisplayObject +
  • +
  • PixiFastShader
  • @@ -1294,7 +1294,7 @@ Phaser.Physics.P2.PrismaticConstraint.prototype.constructor = Phaser.Physics.P2. Documentation generated by JSDoc 3.3.3 - on Fri Jun 17 2016 12:45:29 GMT+0100 (BST) using the DocStrap template. + on Fri Jul 08 2016 15:42:34 GMT+0100 (GMT Daylight Time) using the DocStrap template. diff --git a/docs/src_physics_p2_RevoluteConstraint.js.html b/docs/src_physics_p2_RevoluteConstraint.js.html index 6e4f49dc1..236e1d9bf 100644 --- a/docs/src_physics_p2_RevoluteConstraint.js.html +++ b/docs/src_physics_p2_RevoluteConstraint.js.html @@ -708,10 +708,6 @@ ComplexPrimitiveShader -
  • - DisplayObject -
  • -
  • DisplayObjectContainer
  • @@ -744,6 +740,10 @@ PIXI +
  • + DisplayObject +
  • +
  • PixiFastShader
  • @@ -1296,7 +1296,7 @@ Phaser.Physics.P2.RevoluteConstraint.prototype.constructor = Phaser.Physics.P2.R Documentation generated by JSDoc 3.3.3 - on Fri Jun 17 2016 12:45:29 GMT+0100 (BST) using the DocStrap template. + on Fri Jul 08 2016 15:42:34 GMT+0100 (GMT Daylight Time) using the DocStrap template. diff --git a/docs/src_physics_p2_RotationalSpring.js.html b/docs/src_physics_p2_RotationalSpring.js.html index 1d7f1e460..e820816ed 100644 --- a/docs/src_physics_p2_RotationalSpring.js.html +++ b/docs/src_physics_p2_RotationalSpring.js.html @@ -708,10 +708,6 @@ ComplexPrimitiveShader -
  • - DisplayObject -
  • -
  • DisplayObjectContainer
  • @@ -744,6 +740,10 @@ PIXI +
  • + DisplayObject +
  • +
  • PixiFastShader
  • @@ -1300,7 +1300,7 @@ Phaser.Physics.P2.Spring.prototype.constructor = Phaser.Physics.P2.Spring; Documentation generated by JSDoc 3.3.3 - on Fri Jun 17 2016 12:45:29 GMT+0100 (BST) using the DocStrap template. + on Fri Jul 08 2016 15:42:34 GMT+0100 (GMT Daylight Time) using the DocStrap template. diff --git a/docs/src_physics_p2_Spring.js.html b/docs/src_physics_p2_Spring.js.html index 2ea6e436e..d91f4d886 100644 --- a/docs/src_physics_p2_Spring.js.html +++ b/docs/src_physics_p2_Spring.js.html @@ -708,10 +708,6 @@ ComplexPrimitiveShader -
  • - DisplayObject -
  • -
  • DisplayObjectContainer
  • @@ -744,6 +740,10 @@ PIXI +
  • + DisplayObject +
  • +
  • PixiFastShader
  • @@ -1321,7 +1321,7 @@ Phaser.Physics.P2.Spring.prototype.constructor = Phaser.Physics.P2.Spring; Documentation generated by JSDoc 3.3.3 - on Fri Jun 17 2016 12:45:29 GMT+0100 (BST) using the DocStrap template. + on Fri Jul 08 2016 15:42:34 GMT+0100 (GMT Daylight Time) using the DocStrap template. diff --git a/docs/src_physics_p2_World.js.html b/docs/src_physics_p2_World.js.html index bae4ff987..0508da6b2 100644 --- a/docs/src_physics_p2_World.js.html +++ b/docs/src_physics_p2_World.js.html @@ -708,10 +708,6 @@ ComplexPrimitiveShader -
  • - DisplayObject -
  • -
  • DisplayObjectContainer
  • @@ -744,6 +740,10 @@ PIXI +
  • + DisplayObject +
  • +
  • PixiFastShader
  • @@ -1937,13 +1937,13 @@ Phaser.Physics.P2.prototype = { this.walls[wall] = new p2.Body({ mass: 0, position: [ this.pxmi(x), this.pxmi(y) ], angle: angle }); this.walls[wall].addShape(new p2.Plane()); - if (setCollisionGroup) - { - this.walls[wall].shapes[0].collisionGroup = this.boundsCollisionGroup.mask; - } - this.world.addBody(this.walls[wall]); } + + if (setCollisionGroup) + { + this.walls[wall].shapes[0].collisionGroup = this.boundsCollisionGroup.mask; + } } else { @@ -2092,6 +2092,9 @@ Phaser.Physics.P2.prototype = { this._toRemove = []; this.boundsCollidesWith = []; + // Remove the world bounds + this.walls = { left: null, right: null, top: null, bottom: null }; + }, /** @@ -3291,7 +3294,7 @@ Object.defineProperty(Phaser.Physics.P2.prototype, "total", { Documentation generated by JSDoc 3.3.3 - on Fri Jun 17 2016 12:45:29 GMT+0100 (BST) using the DocStrap template. + on Fri Jul 08 2016 15:42:34 GMT+0100 (GMT Daylight Time) using the DocStrap template. diff --git a/docs/src_pixi_Pixi.js.html b/docs/src_pixi_Pixi.js.html index 59f28ab88..304225697 100644 --- a/docs/src_pixi_Pixi.js.html +++ b/docs/src_pixi_Pixi.js.html @@ -708,10 +708,6 @@ ComplexPrimitiveShader -
  • - DisplayObject -
  • -
  • DisplayObjectContainer
  • @@ -744,6 +740,10 @@ PIXI +
  • + DisplayObject +
  • +
  • PixiFastShader
  • @@ -1363,7 +1363,7 @@ PIXI.defaultRenderOptions = { Documentation generated by JSDoc 3.3.3 - on Fri Jun 17 2016 12:45:29 GMT+0100 (BST) using the DocStrap template. + on Fri Jul 08 2016 15:42:35 GMT+0100 (GMT Daylight Time) using the DocStrap template. diff --git a/docs/src_pixi_display_DisplayObject.js.html b/docs/src_pixi_display_DisplayObject.js.html index 0464ecd99..c7eb0691f 100644 --- a/docs/src_pixi_display_DisplayObject.js.html +++ b/docs/src_pixi_display_DisplayObject.js.html @@ -708,10 +708,6 @@ ComplexPrimitiveShader -
  • - DisplayObject -
  • -
  • DisplayObjectContainer
  • @@ -744,6 +740,10 @@ PIXI +
  • + DisplayObject +
  • +
  • PixiFastShader
  • @@ -1225,64 +1225,91 @@
    /**
    - * @author Mat Groves http://matgroves.com/ @Doormat23
    - */
    +* @author       Mat Groves http://matgroves.com @Doormat23
    +* @author       Richard Davey <rich@photonstorm.com>
    +* @license      {@link https://github.com/photonstorm/phaser/blob/master/license.txt|MIT License}
    +*/
     
     /**
    - * The base class for all objects that are rendered on the screen.
    - * This is an abstract class and should not be used on its own rather it should be extended.
    - *
    - * @class DisplayObject
    - * @constructor
    - */
    -PIXI.DisplayObject = function()
    -{
    +* The base class for all objects that are rendered. Contains properties for position, scaling,
    +* rotation, masks and cache handling.
    +* 
    +* This is an abstract class and should not be used on its own, rather it should be extended.
    +*
    +* It is used internally by the likes of PIXI.Sprite.
    +*
    +* @class PIXI.DisplayObject
    +* @constructor
    +*/
    +PIXI.DisplayObject = function() {
    +
         /**
    -     * The coordinate of the object relative to the local coordinates of the parent.
    -     *
    -     * @property position
    -     * @type Point
    -     */
    +    * The coordinates, in pixels, of this DisplayObject, relative to its parent container.
    +    * 
    +    * The value of this property does not reflect any positioning happening further up the display list.
    +    * To obtain that value please see the `worldPosition` property.
    +    * 
    +    * @property {PIXI.Point} position
    +    * @default
    +    */
         this.position = new PIXI.Point(0, 0);
     
         /**
    -     * The scale factor of the object.
    -     *
    -     * @property scale
    -     * @type Point
    -     */
    +    * The scale of this DisplayObject. A scale of 1:1 represents the DisplayObject
    +    * at its default size. A value of 0.5 would scale this DisplayObject by half, and so on.
    +    * 
    +    * The value of this property does not reflect any scaling happening further up the display list.
    +    * To obtain that value please see the `worldScale` property.
    +    * 
    +    * @property {PIXI.Point} scale
    +    * @default
    +    */
         this.scale = new PIXI.Point(1, 1);
     
         /**
    -     * The pivot point of the displayObject that it rotates around
    -     *
    -     * @property pivot
    -     * @type Point
    -     */
    +    * The pivot point of this DisplayObject that it rotates around. The values are expressed
    +    * in pixel values.
    +    * @property {PIXI.Point} pivot
    +    * @default
    +    */
         this.pivot = new PIXI.Point(0, 0);
     
         /**
    -     * The rotation of the object in radians.
    -     *
    -     * @property rotation
    -     * @type Number
    -     */
    +    * The rotation of this DisplayObject. The value is given, and expressed, in radians, and is based on
    +    * a right-handed orientation.
    +    * 
    +    * The value of this property does not reflect any rotation happening further up the display list.
    +    * To obtain that value please see the `worldRotation` property.
    +    * 
    +    * @property {number} rotation
    +    * @default
    +    */
         this.rotation = 0;
     
         /**
    -     * The opacity of the object.
    -     *
    -     * @property alpha
    -     * @type Number
    -     */
    +    * The alpha value of this DisplayObject. A value of 1 is fully opaque. A value of 0 is transparent.
    +    * Please note that an object with an alpha value of 0 is skipped during the render pass.
    +    * 
    +    * The value of this property does not reflect any alpha values set further up the display list.
    +    * To obtain that value please see the `worldAlpha` property.
    +    * 
    +    * @property {number} alpha
    +    * @default
    +    */
         this.alpha = 1;
     
         /**
    -     * The visibility of the object.
    -     *
    -     * @property visible
    -     * @type Boolean
    -     */
    +    * The visibility of this DisplayObject. A value of `false` makes the object invisible.
    +    * A value of `true` makes it visible. Please note that an object with a visible value of
    +    * `false` is skipped during the render pass. Equally a DisplayObject with visible false will
    +    * not render any of its children.
    +    * 
    +    * The value of this property does not reflect any visible values set further up the display list.
    +    * To obtain that value please see the `worldVisible` property.
    +    * 
    +    * @property {boolean} visible
    +    * @default
    +    */
         this.visible = true;
     
         /**
    @@ -1295,688 +1322,729 @@ PIXI.DisplayObject = function()
         this.hitArea = null;
     
         /**
    -     * Can this object be rendered
    -     *
    -     * @property renderable
    -     * @type Boolean
    -     */
    +    * Should this DisplayObject be rendered by the renderer? An object with a renderable value of
    +    * `false` is skipped during the render pass.
    +    * 
    +    * @property {boolean} renderable
    +    * @default
    +    */
         this.renderable = false;
     
         /**
    -     * [read-only] The display object container that contains this display object.
    -     *
    -     * @property parent
    -     * @type DisplayObjectContainer
    -     * @readOnly
    -     */
    +    * The parent DisplayObjectContainer that this DisplayObject is a child of.
    +    * All DisplayObjects must belong to a parent in order to be rendered.
    +    * The root parent is the Stage object. This property is set automatically when the
    +    * DisplayObject is added to, or removed from, a DisplayObjectContainer.
    +    * 
    +    * @property {PIXI.DisplayObjectContainer} parent
    +    * @default
    +    * @readOnly
    +    */
         this.parent = null;
     
         /**
    -     * [read-only] The stage the display object is connected to, or undefined if it is not connected to the stage.
    -     *
    -     * @property stage
    -     * @type Stage
    -     * @readOnly
    -     */
    +    * The stage that this DisplayObject is connected to.
    +    * 
    +    * @property {PIXI.Stage} stage
    +    * @default
    +    * @readOnly
    +    */
         this.stage = null;
     
         /**
    -     * [read-only] The multiplied alpha of the displayObject
    -     *
    -     * @property worldAlpha
    -     * @type Number
    -     * @readOnly
    -     */
    +    * The multiplied alpha value of this DisplayObject. A value of 1 is fully opaque. A value of 0 is transparent.
    +    * This value is the calculated total, based on the alpha values of all parents of this DisplayObjects 
    +    * in the display list.
    +    * 
    +    * To obtain, and set, the local alpha value, see the `alpha` property.
    +    *
    +    * Note: This property is only updated at the end of the `updateTransform` call, once per render. Until 
    +    * that happens this property will contain values based on the previous frame. Be mindful of this if
    +    * accessing this property outside of the normal game flow, i.e. from an asynchronous event callback.
    +    * 
    +    * @property {number} worldAlpha
    +    * @readOnly
    +    */
         this.worldAlpha = 1;
     
         /**
    -     * [read-only] Current transform of the object based on world (parent) factors
    -     *
    -     * @property worldTransform
    -     * @type Matrix
    -     * @readOnly
    -     * @private
    -     */
    +    * The current transform of this DisplayObject.
    +    * 
    +    * This property contains the calculated total, based on the transforms of all parents of this 
    +    * DisplayObject in the display list.
    +    *
    +    * Note: This property is only updated at the end of the `updateTransform` call, once per render. Until 
    +    * that happens this property will contain values based on the previous frame. Be mindful of this if
    +    * accessing this property outside of the normal game flow, i.e. from an asynchronous event callback.
    +    *
    +    * @property {PIXI.Matrix} worldTransform
    +    * @readOnly
    +    */
         this.worldTransform = new PIXI.Matrix();
     
         /**
    -     * The position of the Display Object based on the world transform.
    -     * This value is updated at the end of updateTransform and takes all parent transforms into account.
    -     *
    -     * @property worldPosition
    -     * @type Point
    -     * @readOnly
    -     */
    +    * The coordinates, in pixels, of this DisplayObject within the world.
    +    * 
    +    * This property contains the calculated total, based on the positions of all parents of this 
    +    * DisplayObject in the display list.
    +    *
    +    * Note: This property is only updated at the end of the `updateTransform` call, once per render. Until 
    +    * that happens this property will contain values based on the previous frame. Be mindful of this if
    +    * accessing this property outside of the normal game flow, i.e. from an asynchronous event callback.
    +    * 
    +    * @property {PIXI.Point} worldPosition
    +    * @readOnly
    +    */
         this.worldPosition = new PIXI.Point(0, 0);
     
         /**
    -     * The scale of the Display Object based on the world transform.
    -     * This value is updated at the end of updateTransform and takes all parent transforms into account.
    -     *
    -     * @property worldScale
    -     * @type Point
    -     * @readOnly
    -     */
    +    * The global scale of this DisplayObject.
    +    * 
    +    * This property contains the calculated total, based on the scales of all parents of this 
    +    * DisplayObject in the display list.
    +    *
    +    * Note: This property is only updated at the end of the `updateTransform` call, once per render. Until 
    +    * that happens this property will contain values based on the previous frame. Be mindful of this if
    +    * accessing this property outside of the normal game flow, i.e. from an asynchronous event callback.
    +    * 
    +    * @property {PIXI.Point} worldScale
    +    * @readOnly
    +    */
         this.worldScale = new PIXI.Point(1, 1);
     
         /**
    -     * The rotation of the Display Object, in radians, based on the world transform.
    -     * This value is updated at the end of updateTransform and takes all parent transforms into account.
    -     *
    -     * @property worldRotation
    -     * @type Number
    -     * @readOnly
    -     */
    +    * The rotation, in radians, of this DisplayObject.
    +    * 
    +    * This property contains the calculated total, based on the rotations of all parents of this 
    +    * DisplayObject in the display list.
    +    *
    +    * Note: This property is only updated at the end of the `updateTransform` call, once per render. Until 
    +    * that happens this property will contain values based on the previous frame. Be mindful of this if
    +    * accessing this property outside of the normal game flow, i.e. from an asynchronous event callback.
    +    * 
    +    * @property {number} worldRotation
    +    * @readOnly
    +    */
         this.worldRotation = 0;
     
         /**
    -     * cached sin rotation and cos rotation
    -     *
    -     * @property _sr
    -     * @type Number
    -     * @private
    -     */
    -    this._sr = 0;
    -
    -    /**
    -     * cached sin rotation and cos rotation
    -     *
    -     * @property _cr
    -     * @type Number
    -     * @private
    -     */
    -    this._cr = 1;
    -
    -    /**
    -     * The area the filter is applied to like the hitArea this is used as more of an optimisation
    -     * rather than figuring out the dimensions of the displayObject each frame you can set this rectangle
    -     *
    -     * @property filterArea
    -     * @type Rectangle
    -     */
    +    * The rectangular area used by filters when rendering a shader for this DisplayObject.
    +    *
    +    * @property {PIXI.Rectangle} filterArea
    +    * @type Rectangle
    +    * @default
    +    */
         this.filterArea = null;
     
         /**
    -     * The original, cached bounds of the object
    -     *
    -     * @property _bounds
    -     * @type Rectangle
    -     * @private
    -     */
    +    * @property {number} _sr - Cached rotation value.
    +    * @private
    +    */
    +    this._sr = 0;
    +
    +    /**
    +    * @property {number} _cr - Cached rotation value.
    +    * @private
    +    */
    +    this._cr = 1;
    +
    +    /**
    +    * @property {PIXI.Rectangle} _bounds - The cached bounds of this object.
    +    * @private
    +    */
         this._bounds = new PIXI.Rectangle(0, 0, 1, 1);
     
         /**
    -     * The most up-to-date bounds of the object
    -     *
    -     * @property _currentBounds
    -     * @type Rectangle
    -     * @private
    -     */
    +    * @property {PIXI.Rectangle} _currentBounds - The most recently calculated bounds of this object.
    +    * @private
    +    */
         this._currentBounds = null;
     
         /**
    -     * The original, cached mask of the object
    -     *
    -     * @property _mask
    -     * @type Rectangle
    -     * @private
    -     */
    +    * @property {PIXI.Rectangle} _mask - The cached mask of this object.
    +    * @private
    +    */
         this._mask = null;
     
         /**
    -     * Cached internal flag.
    -     *
    -     * @property _cacheAsBitmap
    -     * @type Boolean
    -     * @private
    -     */
    +    * @property {boolean} _cacheAsBitmap - Internal cache as bitmap flag.
    +    * @private
    +    */
         this._cacheAsBitmap = false;
     
         /**
    -     * Cached internal flag.
    -     *
    -     * @property _cacheIsDirty
    -     * @type Boolean
    -     * @private
    -     */
    +    * @property {boolean} _cacheIsDirty - Internal dirty cache flag.
    +    * @private
    +    */
         this._cacheIsDirty = false;
     
     };
     
    -// constructor
     PIXI.DisplayObject.prototype.constructor = PIXI.DisplayObject;
     
    -/**
    - * Destroy this DisplayObject.
    - * Removes all references to transformCallbacks, its parent, the stage, filters, bounds, mask and cached Sprites.
    - *
    - * @method destroy
    - */
    -PIXI.DisplayObject.prototype.destroy = function()
    -{
    -    if (this.children)
    -    {
    -        var i = this.children.length;
    +PIXI.DisplayObject.prototype = {
     
    -        while (i--)
    +    /**
    +    * Destroy this DisplayObject.
    +    *
    +    * Removes any cached sprites, sets renderable flag to false, and nulls references to the Stage, filters,
    +    * bounds and mask.
    +    *
    +    * Also iteratively calls `destroy` on any children.
    +    *
    +    * @method PIXI.DisplayObject#destroy
    +    */
    +    destroy: function () {
    +
    +        if (this.children)
             {
    -            this.children[i].destroy();
    -        }
    +            var i = this.children.length;
     
    -        this.children = [];
    -    }
    -
    -    this.hitArea = null;
    -    this.parent = null;
    -    this.stage = null;
    -    this.worldTransform = null;
    -    this.filterArea = null;
    -    this._bounds = null;
    -    this._currentBounds = null;
    -    this._mask = null;
    -
    -    //  In case Pixi is still going to try and render it even though destroyed
    -    this.renderable = false;
    -
    -    this._destroyCachedSprite();
    -};
    -
    -/**
    - * [read-only] Indicates if the sprite is globally visible.
    - *
    - * @property worldVisible
    - * @type Boolean
    - */
    -Object.defineProperty(PIXI.DisplayObject.prototype, 'worldVisible', {
    -
    -    get: function() {
    -
    -        var item = this;
    -
    -        do
    -        {
    -            if (!item.visible) return false;
    -            item = item.parent;
    -        }
    -        while(item);
    -
    -        return true;
    -    }
    -
    -});
    -
    -/**
    - * Sets a mask for the displayObject. A mask is an object that limits the visibility of an object to the shape of the mask applied to it.
    - * In PIXI a regular mask must be a PIXI.Graphics object. This allows for much faster masking in canvas as it utilises shape clipping.
    - * To remove a mask, set this property to null.
    - *
    - * @property mask
    - * @type Graphics
    - */
    -Object.defineProperty(PIXI.DisplayObject.prototype, 'mask', {
    -
    -    get: function() {
    -        return this._mask;
    -    },
    -
    -    set: function(value) {
    -
    -        if (this._mask) this._mask.isMask = false;
    -
    -        this._mask = value;
    -
    -        if (this._mask) this._mask.isMask = true;
    -    }
    -
    -});
    -
    -/**
    - * Sets the filters for the displayObject.
    - * IMPORTANT: This is a webGL only feature and will be ignored by the Canvas renderer.
    - * 
    - * To remove filters simply set this property to 'null'.
    - * 
    - * You cannot have a filter and a multiply blend mode active at the same time. Setting a filter will reset
    - * this objects blend mode to NORMAL.
    - * 
    - * @property filters
    - * @type Array(Filter)
    - */
    -Object.defineProperty(PIXI.DisplayObject.prototype, 'filters', {
    -
    -    get: function() {
    -        return this._filters;
    -    },
    -
    -    set: function(value) {
    -
    -        if (value)
    -        {
    -            // now put all the passes in one place..
    -            var passes = [];
    -
    -            for (var i = 0; i < value.length; i++)
    +            while (i--)
                 {
    -                var filterPasses = value[i].passes;
    -
    -                for (var j = 0; j < filterPasses.length; j++)
    -                {
    -                    passes.push(filterPasses[j]);
    -                }
    +                this.children[i].destroy();
                 }
     
    -            // TODO change this as it is legacy
    -            this._filterBlock = { target: this, filterPasses: passes };
    +            this.children = [];
             }
     
    -        this._filters = value;
    +        this.hitArea = null;
    +        this.parent = null;
    +        this.stage = null;
    +        this.worldTransform = null;
    +        this.filterArea = null;
    +        this.renderable = false;
     
    -        if (this.blendMode && this.blendMode === PIXI.blendModes.MULTIPLY)
    -        {
    -            this.blendMode = PIXI.blendModes.NORMAL;
    -        }
    -    }
    -});
    +        this._bounds = null;
    +        this._currentBounds = null;
    +        this._mask = null;
     
    -/**
    - * Set if this display object is cached as a bitmap.
    - * This basically takes a snap shot of the display object as it is at that moment. It can provide a performance benefit for complex static displayObjects.
    - * To remove simply set this property to 'null'
    - * @property cacheAsBitmap
    - * @type Boolean
    - */
    -Object.defineProperty(PIXI.DisplayObject.prototype, 'cacheAsBitmap', {
    +        this._destroyCachedSprite();
     
    -    get: function() {
    -        return  this._cacheAsBitmap;
         },
     
    -    set: function(value) {
    +    /*
    +    * Updates the transform matrix this DisplayObject uses for rendering.
    +    *
    +    * If the object has no parent, and no parent parameter is provided, it will default to 
    +    * Phaser.Game.World as the parent transform to use. If that is unavailable the transform fails to take place.
    +    *
    +    * The `parent` parameter has priority over the actual parent. Use it as a parent override.
    +    * Setting it does **not** change the actual parent of this DisplayObject.
    +    *
    +    * Calling this method updates the `worldTransform`, `worldAlpha`, `worldPosition`, `worldScale` 
    +    * and `worldRotation` properties.
    +    *
    +    * If a `transformCallback` has been specified, it is called at the end of this method, and is passed
    +    * the new, updated, worldTransform property, along with the parent transform used.
    +    *
    +    * @method PIXI.DisplayObject#updateTransform
    +    * @param {PIXI.DisplayObject} [parent] - Optional parent to calculate this DisplayObjects transform from.
    +    * @return {PIXI.DisplayObject} - A reference to this DisplayObject.
    +    */
    +    updateTransform: function (parent) {
     
    -        if (this._cacheAsBitmap === value)
    +        if (!parent && !this.parent && !this.game)
    +        {
    +            return this;
    +        }
    +
    +        var p = this.parent;
    +
    +        if (parent)
    +        {
    +            p = parent;
    +        }
    +        else if (!this.parent)
    +        {
    +            p = this.game.world;
    +        }
    +
    +        // create some matrix refs for easy access
    +        var pt = p.worldTransform;
    +        var wt = this.worldTransform;
    +
    +        // temporary matrix variables
    +        var a, b, c, d, tx, ty;
    +
    +        // so if rotation is between 0 then we can simplify the multiplication process..
    +        if (this.rotation % PIXI.PI_2)
    +        {
    +            // check to see if the rotation is the same as the previous render. This means we only need to use sin and cos when rotation actually changes
    +            if (this.rotation !== this.rotationCache)
    +            {
    +                this.rotationCache = this.rotation;
    +                this._sr = Math.sin(this.rotation);
    +                this._cr = Math.cos(this.rotation);
    +            }
    +
    +            // get the matrix values of the displayobject based on its transform properties..
    +            a  =  this._cr * this.scale.x;
    +            b  =  this._sr * this.scale.x;
    +            c  = -this._sr * this.scale.y;
    +            d  =  this._cr * this.scale.y;
    +            tx =  this.position.x;
    +            ty =  this.position.y;
    +            
    +            // check for pivot.. not often used so geared towards that fact!
    +            if (this.pivot.x || this.pivot.y)
    +            {
    +                tx -= this.pivot.x * a + this.pivot.y * c;
    +                ty -= this.pivot.x * b + this.pivot.y * d;
    +            }
    +
    +            // concat the parent matrix with the objects transform.
    +            wt.a  = a  * pt.a + b  * pt.c;
    +            wt.b  = a  * pt.b + b  * pt.d;
    +            wt.c  = c  * pt.a + d  * pt.c;
    +            wt.d  = c  * pt.b + d  * pt.d;
    +            wt.tx = tx * pt.a + ty * pt.c + pt.tx;
    +            wt.ty = tx * pt.b + ty * pt.d + pt.ty;
    +        }
    +        else
    +        {
    +            // lets do the fast version as we know there is no rotation..
    +            a  = this.scale.x;
    +            d  = this.scale.y;
    +
    +            tx = this.position.x - this.pivot.x * a;
    +            ty = this.position.y - this.pivot.y * d;
    +
    +            wt.a  = a  * pt.a;
    +            wt.b  = a  * pt.b;
    +            wt.c  = d  * pt.c;
    +            wt.d  = d  * pt.d;
    +            wt.tx = tx * pt.a + ty * pt.c + pt.tx;
    +            wt.ty = tx * pt.b + ty * pt.d + pt.ty;
    +        }
    +
    +        //  Set the World values
    +        this.worldAlpha = this.alpha * p.worldAlpha;
    +        this.worldPosition.set(wt.tx, wt.ty);
    +        this.worldScale.set(this.scale.x * Math.sqrt(wt.a * wt.a + wt.c * wt.c), this.scale.y * Math.sqrt(wt.b * wt.b + wt.d * wt.d));
    +        this.worldRotation = Math.atan2(-wt.c, wt.d);
    +
    +        // reset the bounds each time this is called!
    +        this._currentBounds = null;
    +
    +        //  Custom callback?
    +        if (this.transformCallback)
    +        {
    +            this.transformCallback.call(this.transformCallbackContext, wt, pt);
    +        }
    +
    +        return this;
    +
    +    },
    +
    +    /**
    +    * Sets the root Stage object that this DisplayObject is connected to.
    +    *
    +    * @method PIXI.DisplayObject#setStageReference
    +    * @param {Phaser.Stage} stage - The stage that the object will have as its current stage reference
    +    * @return {PIXI.DisplayObject} - A reference to this DisplayObject.
    +    */
    +    setStageReference: function (stage)
    +    {
    +        this.stage = stage;
    +
    +        return this;
    +
    +    },
    +
    +    /**
    +    * To be overridden by classes that require it.
    +    *
    +    * @method PIXI.DisplayObject#preUpdate
    +    */
    +    preUpdate: function () {
    +
    +    },
    +
    +    /**
    +    * Generates a RenderTexture based on this DisplayObject, which can they be used to texture other Sprites.
    +    * This can be useful if your DisplayObject is static, or complicated, and needs to be reused multiple times.
    +    *
    +    * Please note that no garbage collection takes place on old textures. It is up to you to destroy old textures,
    +    * and references to them, so they don't linger in memory.
    +    *
    +    * @method PIXI.DisplayObject#generateTexture
    +    * @param {number} [resolution=1] - The resolution of the texture being generated.
    +    * @param {number} [scaleMode=PIXI.scaleModes.DEFAULT] - See {{#crossLink "PIXI/scaleModes:property"}}PIXI.scaleModes{{/crossLink}} for possible values.
    +    * @param {PIXI.CanvasRenderer|PIXI.WebGLRenderer} renderer - The renderer used to generate the texture.
    +    * @return {PIXI.RenderTexture} - A RenderTexture containing an image of this DisplayObject at the time it was invoked.
    +    */
    +    generateTexture: function (resolution, scaleMode, renderer) {
    +
    +        var bounds = this.getLocalBounds();
    +
    +        var renderTexture = new PIXI.RenderTexture(bounds.width | 0, bounds.height | 0, renderer, scaleMode, resolution);
    +        
    +        PIXI.DisplayObject._tempMatrix.tx = -bounds.x;
    +        PIXI.DisplayObject._tempMatrix.ty = -bounds.y;
    +        
    +        renderTexture.render(this, PIXI.DisplayObject._tempMatrix);
    +
    +        return renderTexture;
    +
    +    },
    +
    +    /**
    +    * If this DisplayObject has a cached Sprite, this method generates and updates it.
    +    *
    +    * @method PIXI.DisplayObject#updateCache
    +    * @return {PIXI.DisplayObject} - A reference to this DisplayObject.
    +    */
    +    updateCache: function () {
    +
    +        this._generateCachedSprite();
    +
    +        return this;
    +
    +    },
    +
    +    /**
    +    * Calculates the global position of this DisplayObject, based on the position given.
    +    *
    +    * @method PIXI.DisplayObject#toGlobal
    +    * @param {PIXI.Point} position - The global position to calculate from.
    +    * @return {PIXI.Point} - A point object representing the position of this DisplayObject based on the global position given.
    +    */
    +    toGlobal: function (position) {
    +
    +        this.updateTransform();
    +
    +        return this.worldTransform.apply(position);
    +
    +    },
    +
    +    /**
    +    * Calculates the local position of this DisplayObject, relative to another point.
    +    *
    +    * @method PIXI.DisplayObject#toLocal
    +    * @param {PIXI.Point} position - The world origin to calculate from.
    +    * @param {PIXI.DisplayObject} [from] - An optional DisplayObject to calculate the global position from.
    +    * @return {PIXI.Point} - A point object representing the position of this DisplayObject based on the global position given.
    +    */
    +    toLocal: function (position, from) {
    +
    +        if (from)
    +        {
    +            position = from.toGlobal(position);
    +        }
    +
    +        this.updateTransform();
    +
    +        return this.worldTransform.applyInverse(position);
    +
    +    },
    +
    +    /**
    +    * Internal method.
    +    *
    +    * @method PIXI.DisplayObject#_renderCachedSprite
    +    * @private
    +    * @param {Object} renderSession - The render session
    +    */
    +    _renderCachedSprite: function (renderSession) {
    +
    +        this._cachedSprite.worldAlpha = this.worldAlpha;
    +
    +        if (renderSession.gl)
    +        {
    +            PIXI.Sprite.prototype._renderWebGL.call(this._cachedSprite, renderSession);
    +        }
    +        else
    +        {
    +            PIXI.Sprite.prototype._renderCanvas.call(this._cachedSprite, renderSession);
    +        }
    +
    +    },
    +
    +    /**
    +    * Internal method.
    +    *
    +    * @method PIXI.DisplayObject#_generateCachedSprite
    +    * @private
    +    */
    +    _generateCachedSprite: function () {
    +
    +        this._cacheAsBitmap = false;
    +
    +        var bounds = this.getLocalBounds();
    +
    +        //  Round it off and force non-zero dimensions
    +        bounds.width = Math.max(1, Math.ceil(bounds.width));
    +        bounds.height = Math.max(1, Math.ceil(bounds.height));
    +
    +        this.updateTransform();
    +
    +        if (!this._cachedSprite)
    +        {
    +            var renderTexture = new PIXI.RenderTexture(bounds.width, bounds.height);
    +            this._cachedSprite = new PIXI.Sprite(renderTexture);
    +            this._cachedSprite.worldTransform = this.worldTransform;
    +        }
    +        else
    +        {
    +            this._cachedSprite.texture.resize(bounds.width, bounds.height);
    +        }
    +
    +        //  Remove filters
    +        var tempFilters = this._filters;
    +
    +        this._filters = null;
    +        this._cachedSprite.filters = tempFilters;
    +
    +        PIXI.DisplayObject._tempMatrix.tx = -bounds.x;
    +        PIXI.DisplayObject._tempMatrix.ty = -bounds.y;
    +
    +        this._cachedSprite.texture.render(this, PIXI.DisplayObject._tempMatrix, true);
    +        this._cachedSprite.anchor.x = -(bounds.x / bounds.width);
    +        this._cachedSprite.anchor.y = -(bounds.y / bounds.height);
    +
    +        this._filters = tempFilters;
    +
    +        this._cacheAsBitmap = true;
    +
    +    },
    +
    +    /**
    +    * Destroys a cached Sprite.
    +    *
    +    * @method PIXI.DisplayObject#_destroyCachedSprite
    +    * @private
    +    */
    +    _destroyCachedSprite: function () {
    +
    +        if (!this._cachedSprite)
             {
                 return;
             }
     
    -        if (value)
    -        {
    -            this._generateCachedSprite();
    -        }
    -        else
    -        {
    -            this._destroyCachedSprite();
    -        }
    +        this._cachedSprite.texture.destroy(true);
     
    -        this._cacheAsBitmap = value;
    -    }
    +        this._cachedSprite = null;
     
    -});
    -
    -/*
    - * Updates the object transform for rendering.
    - *
    - * If the object has no parent, and no parent parameter is provided, it will default to Phaser.Game.World as the parent.
    - * If that is unavailable the transform fails to take place.
    - *
    - * The `parent` parameter has priority over the actual parent. Use it as a parent override.
    - * Setting it does **not** change the actual parent of this DisplayObject, it just uses the parent for the transform update.
    - *
    - * @method updateTransform
    - * @param {DisplayObject} [parent] - Optional parent to parent this DisplayObject transform from.
    - */
    -PIXI.DisplayObject.prototype.updateTransform = function(parent)
    -{
    -    if (!parent && !this.parent && !this.game)
    -    {
    -        return;
    -    }
    -
    -    var p = this.parent;
    -
    -    if (parent)
    -    {
    -        p = parent;
    -    }
    -    else if (!this.parent)
    -    {
    -        p = this.game.world;
    -    }
    -
    -    // create some matrix refs for easy access
    -    var pt = p.worldTransform;
    -    var wt = this.worldTransform;
    -
    -    // temporary matrix variables
    -    var a, b, c, d, tx, ty;
    -
    -    // so if rotation is between 0 then we can simplify the multiplication process..
    -    if (this.rotation % PIXI.PI_2)
    -    {
    -        // check to see if the rotation is the same as the previous render. This means we only need to use sin and cos when rotation actually changes
    -        if (this.rotation !== this.rotationCache)
    -        {
    -            this.rotationCache = this.rotation;
    -            this._sr = Math.sin(this.rotation);
    -            this._cr = Math.cos(this.rotation);
    -        }
    -
    -        // get the matrix values of the displayobject based on its transform properties..
    -        a  =  this._cr * this.scale.x;
    -        b  =  this._sr * this.scale.x;
    -        c  = -this._sr * this.scale.y;
    -        d  =  this._cr * this.scale.y;
    -        tx =  this.position.x;
    -        ty =  this.position.y;
    -        
    -        // check for pivot.. not often used so geared towards that fact!
    -        if (this.pivot.x || this.pivot.y)
    -        {
    -            tx -= this.pivot.x * a + this.pivot.y * c;
    -            ty -= this.pivot.x * b + this.pivot.y * d;
    -        }
    -
    -        // concat the parent matrix with the objects transform.
    -        wt.a  = a  * pt.a + b  * pt.c;
    -        wt.b  = a  * pt.b + b  * pt.d;
    -        wt.c  = c  * pt.a + d  * pt.c;
    -        wt.d  = c  * pt.b + d  * pt.d;
    -        wt.tx = tx * pt.a + ty * pt.c + pt.tx;
    -        wt.ty = tx * pt.b + ty * pt.d + pt.ty;
    -    }
    -    else
    -    {
    -        // lets do the fast version as we know there is no rotation..
    -        a  = this.scale.x;
    -        d  = this.scale.y;
    -
    -        tx = this.position.x - this.pivot.x * a;
    -        ty = this.position.y - this.pivot.y * d;
    -
    -        wt.a  = a  * pt.a;
    -        wt.b  = a  * pt.b;
    -        wt.c  = d  * pt.c;
    -        wt.d  = d  * pt.d;
    -        wt.tx = tx * pt.a + ty * pt.c + pt.tx;
    -        wt.ty = tx * pt.b + ty * pt.d + pt.ty;
    -    }
    -
    -    //  Set the World values
    -    this.worldAlpha = this.alpha * p.worldAlpha;
    -    this.worldPosition.set(wt.tx, wt.ty);
    -    this.worldScale.set(this.scale.x * Math.sqrt(wt.a * wt.a + wt.c * wt.c), this.scale.y * Math.sqrt(wt.b * wt.b + wt.d * wt.d));
    -    this.worldRotation = Math.atan2(-wt.c, wt.d);
    -
    -    // reset the bounds each time this is called!
    -    this._currentBounds = null;
    -
    -    //  Custom callback?
    -    if (this.transformCallback)
    -    {
    -        this.transformCallback.call(this.transformCallbackContext, wt, pt);
         }
     
     };
     
    -// performance increase to avoid using call.. (10x faster)
    +//  Alias for updateTransform. As used in DisplayObject container, etc.
     PIXI.DisplayObject.prototype.displayObjectUpdateTransform = PIXI.DisplayObject.prototype.updateTransform;
     
    -/**
    - * Retrieves the bounds of the displayObject as a rectangle object
    - *
    - * @method getBounds
    - * @param matrix {Matrix}
    - * @return {Rectangle} the rectangular bounding area
    - */
    -PIXI.DisplayObject.prototype.getBounds = function(matrix)
    -{
    -    matrix = matrix;//just to get passed js hinting (and preserve inheritance)
    -    return PIXI.EmptyRectangle;
    -};
    +Object.defineProperties(PIXI.DisplayObject.prototype, {
     
    -/**
    - * Retrieves the local bounds of the displayObject as a rectangle object
    - *
    - * @method getLocalBounds
    - * @return {Rectangle} the rectangular bounding area
    - */
    -PIXI.DisplayObject.prototype.getLocalBounds = function()
    -{
    -    return this.getBounds(PIXI.identityMatrix);///PIXI.EmptyRectangle();
    -};
    +    /**
    +    * The horizontal position of the DisplayObject, in pixels, relative to its parent.
    +    * If you need the world position of the DisplayObject, use `DisplayObject.worldPosition` instead.
    +    * @name PIXI.DisplayObject#x
    +    * @property {number} x - The horizontal position of the DisplayObject, in pixels, relative to its parent.
    +    */
    +    'x': {
     
    -/**
    - * Sets the object's stage reference, the stage this object is connected to
    - *
    - * @method setStageReference
    - * @param stage {Stage} the stage that the object will have as its current stage reference
    - */
    -PIXI.DisplayObject.prototype.setStageReference = function(stage)
    -{
    -    this.stage = stage;
    -};
    +        get: function () {
     
    -/**
    - * Empty, to be overridden by classes that require it.
    - *
    - * @method preUpdate
    - */
    -PIXI.DisplayObject.prototype.preUpdate = function()
    -{
    -};
    +            return this.position.x;
     
    -/**
    - * Useful function that returns a texture of the displayObject object that can then be used to create sprites
    - * This can be quite useful if your displayObject is static / complicated and needs to be reused multiple times.
    - *
    - * @method generateTexture
    - * @param resolution {Number} The resolution of the texture being generated
    - * @param scaleMode {Number} See {{#crossLink "PIXI/scaleModes:property"}}PIXI.scaleModes{{/crossLink}} for possible values
    - * @param renderer {CanvasRenderer|WebGLRenderer} The renderer used to generate the texture.
    - * @return {RenderTexture} a texture of the graphics object
    - */
    -PIXI.DisplayObject.prototype.generateTexture = function(resolution, scaleMode, renderer)
    -{
    -    var bounds = this.getLocalBounds();
    +        },
     
    -    var renderTexture = new PIXI.RenderTexture(bounds.width | 0, bounds.height | 0, renderer, scaleMode, resolution);
    -    
    -    PIXI.DisplayObject._tempMatrix.tx = -bounds.x;
    -    PIXI.DisplayObject._tempMatrix.ty = -bounds.y;
    -    
    -    renderTexture.render(this, PIXI.DisplayObject._tempMatrix);
    +        set: function (value) {
     
    -    return renderTexture;
    -};
    +            this.position.x = value;
     
    -/**
    - * Generates and updates the cached sprite for this object.
    - *
    - * @method updateCache
    - */
    -PIXI.DisplayObject.prototype.updateCache = function()
    -{
    -    this._generateCachedSprite();
    -};
    +        }
     
    -/**
    - * Calculates the global position of the display object
    - *
    - * @method toGlobal
    - * @param position {Point} The world origin to calculate from
    - * @return {Point} A point object representing the position of this object
    - */
    -PIXI.DisplayObject.prototype.toGlobal = function(position)
    -{
    -    // don't need to u[date the lot
    -    this.displayObjectUpdateTransform();
    -    return this.worldTransform.apply(position);
    -};
    -
    -/**
    - * Calculates the local position of the display object relative to another point
    - *
    - * @method toLocal
    - * @param position {Point} The world origin to calculate from
    - * @param [from] {DisplayObject} The DisplayObject to calculate the global position from
    - * @return {Point} A point object representing the position of this object
    - */
    -PIXI.DisplayObject.prototype.toLocal = function(position, from)
    -{
    -    if (from)
    -    {
    -        position = from.toGlobal(position);
    -    }
    -
    -    // don't need to u[date the lot
    -    this.displayObjectUpdateTransform();
    -
    -    return this.worldTransform.applyInverse(position);
    -};
    -
    -/**
    - * Internal method.
    - *
    - * @method _renderCachedSprite
    - * @param renderSession {Object} The render session
    - * @private
    - */
    -PIXI.DisplayObject.prototype._renderCachedSprite = function(renderSession)
    -{
    -    this._cachedSprite.worldAlpha = this.worldAlpha;
    -
    -    if (renderSession.gl)
    -    {
    -        PIXI.Sprite.prototype._renderWebGL.call(this._cachedSprite, renderSession);
    -    }
    -    else
    -    {
    -        PIXI.Sprite.prototype._renderCanvas.call(this._cachedSprite, renderSession);
    -    }
    -};
    -
    -/**
    - * Internal method.
    - *
    - * @method _generateCachedSprite
    - * @private
    - */
    -PIXI.DisplayObject.prototype._generateCachedSprite = function()
    -{
    -    this._cacheAsBitmap = false;
    -
    -    var bounds = this.getLocalBounds();
    -
    -    //  Round it off and force non-zero dimensions
    -    bounds.width = Math.max(1, Math.ceil(bounds.width));
    -    bounds.height = Math.max(1, Math.ceil(bounds.height));
    -
    -    this.updateTransform();
    -
    -    if (!this._cachedSprite)
    -    {
    -        var renderTexture = new PIXI.RenderTexture(bounds.width, bounds.height);
    -        this._cachedSprite = new PIXI.Sprite(renderTexture);
    -        this._cachedSprite.worldTransform = this.worldTransform;
    -    }
    -    else
    -    {
    -        this._cachedSprite.texture.resize(bounds.width, bounds.height);
    -    }
    -
    -    //  Remove filters
    -    var tempFilters = this._filters;
    -    this._filters = null;
    -    this._cachedSprite.filters = tempFilters;
    -
    -    // PIXI.DisplayObject._tempMatrix.identity();
    -    PIXI.DisplayObject._tempMatrix.tx = -bounds.x;
    -    PIXI.DisplayObject._tempMatrix.ty = -bounds.y;
    -
    -    this._cachedSprite.texture.render(this, PIXI.DisplayObject._tempMatrix, true);
    -    this._cachedSprite.anchor.x = -(bounds.x / bounds.width);
    -    this._cachedSprite.anchor.y = -(bounds.y / bounds.height);
    -
    -    this._filters = tempFilters;
    -
    -    this._cacheAsBitmap = true;
    -};
    -
    -/**
    -* Destroys the cached sprite.
    -*
    -* @method _destroyCachedSprite
    -* @private
    -*/
    -PIXI.DisplayObject.prototype._destroyCachedSprite = function()
    -{
    -    if (!this._cachedSprite) return;
    -
    -    this._cachedSprite.texture.destroy(true);
    -
    -    // TODO could be object pooled!
    -    this._cachedSprite = null;
    -};
    -
    -/**
    -* Renders the object using the WebGL renderer
    -*
    -* @method _renderWebGL
    -* @param renderSession {RenderSession}
    -* @private
    -*/
    -PIXI.DisplayObject.prototype._renderWebGL = function(renderSession)
    -{
    -    // OVERWRITE;
    -    // this line is just here to pass jshinting :)
    -    renderSession = renderSession;
    -};
    -
    -/**
    -* Renders the object using the Canvas renderer
    -*
    -* @method _renderCanvas
    -* @param renderSession {RenderSession}
    -* @private
    -*/
    -PIXI.DisplayObject.prototype._renderCanvas = function(renderSession)
    -{
    -    // OVERWRITE;
    -    // this line is just here to pass jshinting :)
    -    renderSession = renderSession;
    -};
    -
    -/**
    - * The position of the displayObject on the x axis relative to the local coordinates of the parent.
    - *
    - * @property x
    - * @type Number
    - */
    -Object.defineProperty(PIXI.DisplayObject.prototype, 'x', {
    -
    -    get: function() {
    -        return  this.position.x;
         },
     
    -    set: function(value) {
    -        this.position.x = value;
    -    }
    +    /**
    +    * The vertical position of the DisplayObject, in pixels, relative to its parent.
    +    * If you need the world position of the DisplayObject, use `DisplayObject.worldPosition` instead.
    +    * @name PIXI.DisplayObject#y
    +    * @property {number} y - The vertical position of the DisplayObject, in pixels, relative to its parent.
    +    */
    +    'y': {
     
    -});
    +        get: function () {
     
    -/**
    - * The position of the displayObject on the y axis relative to the local coordinates of the parent.
    - *
    - * @property y
    - * @type Number
    - */
    -Object.defineProperty(PIXI.DisplayObject.prototype, 'y', {
    +            return this.position.y;
    +
    +        },
    +
    +        set: function (value) {
    +
    +            this.position.y = value;
    +
    +        }
     
    -    get: function() {
    -        return  this.position.y;
         },
     
    -    set: function(value) {
    -        this.position.y = value;
    +    /**
    +    * Indicates if this DisplayObject is visible, based on it, and all of its parents, `visible` property values.
    +    * @name PIXI.DisplayObject#worldVisible
    +    * @property {boolean} worldVisible - Indicates if this DisplayObject is visible, based on it, and all of its parents, `visible` property values.
    +    */
    +    'worldVisible': {
    +
    +        get: function () {
    +
    +            if (!this.visible)
    +            {
    +                return false;
    +            }
    +            else
    +            {
    +                var item = this.parent;
    +
    +                do
    +                {
    +                    if (!item.visible)
    +                    {
    +                        return false;
    +                    }
    +
    +                    item = item.parent;
    +                }
    +                while (item);
    +
    +                return true;
    +            }
    +
    +        }
    +
    +    },
    +
    +    /**
    +    * Sets a mask for this DisplayObject. A mask is an instance of a Graphics object.
    +    * When applied it limits the visible area of this DisplayObject to the shape of the mask.
    +    * Under a Canvas renderer it uses shape clipping. Under a WebGL renderer it uses a Stencil Buffer.
    +    * To remove a mask, set this property to `null`.
    +    * 
    +    * @name PIXI.DisplayObject#mask
    +    * @property {PIXI.Graphics} mask - The mask applied to this DisplayObject. Set to `null` to remove an existing mask.
    +    */
    +    'mask': {
    +
    +        get: function () {
    +
    +            return this._mask;
    +
    +        },
    +
    +        set: function (value) {
    +
    +            if (this._mask)
    +            {
    +                this._mask.isMask = false;
    +            }
    +
    +            this._mask = value;
    +
    +            if (value)
    +            {
    +                this._mask.isMask = true;
    +            }
    +
    +        }
    +
    +    },
    +
    +    /**
    +    * Sets the filters for this DisplayObject. This is a WebGL only feature, and is ignored by the Canvas
    +    * Renderer. A filter is a shader applied to this DisplayObject. You can modify the placement of the filter
    +    * using `DisplayObject.filterArea`.
    +    * 
    +    * To remove filters, set this property to `null`.
    +    *
    +    * Note: You cannot have a filter set, and a MULTIPLY Blend Mode active, at the same time. Setting a 
    +    * filter will reset this DisplayObjects blend mode to NORMAL.
    +    * 
    +    * @name PIXI.DisplayObject#filters
    +    * @property {Array} filters - An Array of PIXI.AbstractFilter objects, or objects that extend them.
    +    */
    +    'filters': {
    +
    +        get: function () {
    +
    +            return this._filters;
    +
    +        },
    +
    +        set: function (value) {
    +
    +            if (Array.isArray(value))
    +            {
    +                //  Put all the passes in one place.
    +                var passes = [];
    +
    +                for (var i = 0; i < value.length; i++)
    +                {
    +                    var filterPasses = value[i].passes;
    +
    +                    for (var j = 0; j < filterPasses.length; j++)
    +                    {
    +                        passes.push(filterPasses[j]);
    +                    }
    +                }
    +
    +                //  Needed any more?
    +                this._filterBlock = { target: this, filterPasses: passes };
    +            }
    +
    +            this._filters = value;
    +
    +            if (this.blendMode && this.blendMode === PIXI.blendModes.MULTIPLY)
    +            {
    +                this.blendMode = PIXI.blendModes.NORMAL;
    +            }
    +
    +        }
    +
    +    },
    +
    +    /**
    +    * Sets if this DisplayObject should be cached as a bitmap.
    +    *
    +    * When invoked it will take a snapshot of the DisplayObject, as it is at that moment, and store it 
    +    * in a RenderTexture. This is then used whenever this DisplayObject is rendered. It can provide a
    +    * performance benefit for complex, but static, DisplayObjects. I.e. those with lots of children.
    +    *
    +    * Cached Bitmaps do not track their parents. If you update a property of this DisplayObject, it will not
    +    * re-generate the cached bitmap automatically. To do that you need to call `DisplayObject.updateCache`.
    +    * 
    +    * To remove a cached bitmap, set this property to `null`.
    +    * 
    +    * @name PIXI.DisplayObject#cacheAsBitmap
    +    * @property {boolean} cacheAsBitmap - Cache this DisplayObject as a Bitmap. Set to `null` to remove an existing cached bitmap.
    +    */
    +    'cacheAsBitmap': {
    +
    +        get: function () {
    +
    +            return this._cacheAsBitmap;
    +
    +        },
    +
    +        set: function (value) {
    +
    +            if (this._cacheAsBitmap === value)
    +            {
    +                return;
    +            }
    +
    +            if (value)
    +            {
    +                this._generateCachedSprite();
    +            }
    +            else
    +            {
    +                this._destroyCachedSprite();
    +            }
    +
    +            this._cacheAsBitmap = value;
    +
    +        }
    +
         }
     
     });
    @@ -2001,7 +2069,7 @@ Object.defineProperty(PIXI.DisplayObject.prototype, 'y', {
     					
     		
     		Documentation generated by JSDoc 3.3.3
    -		on Fri Jun 17 2016 12:45:29 GMT+0100 (BST) using the DocStrap template.
    +		on Fri Jul 08 2016 15:42:34 GMT+0100 (GMT Daylight Time) using the DocStrap template.
     		
     				
     			
    diff --git a/docs/src_pixi_display_DisplayObjectContainer.js.html b/docs/src_pixi_display_DisplayObjectContainer.js.html
    index 0fc311264..32e02a775 100644
    --- a/docs/src_pixi_display_DisplayObjectContainer.js.html
    +++ b/docs/src_pixi_display_DisplayObjectContainer.js.html
    @@ -708,10 +708,6 @@
     							ComplexPrimitiveShader
     						
     						
    -						
  • - DisplayObject -
  • -
  • DisplayObjectContainer
  • @@ -744,6 +740,10 @@ PIXI +
  • + DisplayObject +
  • +
  • PixiFastShader
  • @@ -1554,6 +1554,8 @@ PIXI.DisplayObjectContainer.prototype.getBounds = function() return PIXI.EmptyRectangle; } + this.updateTransform(); + var minX = Infinity; var minY = Infinity; @@ -1776,7 +1778,7 @@ PIXI.DisplayObjectContainer.prototype._renderCanvas = function(renderSession) Documentation generated by JSDoc 3.3.3 - on Fri Jun 17 2016 12:45:29 GMT+0100 (BST) using the DocStrap template. + on Fri Jul 08 2016 15:42:34 GMT+0100 (GMT Daylight Time) using the DocStrap template. diff --git a/docs/src_pixi_display_Sprite.js.html b/docs/src_pixi_display_Sprite.js.html index 081e9b9b7..5f87349fb 100644 --- a/docs/src_pixi_display_Sprite.js.html +++ b/docs/src_pixi_display_Sprite.js.html @@ -708,10 +708,6 @@ ComplexPrimitiveShader -
  • - DisplayObject -
  • -
  • DisplayObjectContainer
  • @@ -744,6 +740,10 @@ PIXI +
  • + DisplayObject +
  • +
  • PixiFastShader
  • @@ -1717,44 +1717,6 @@ PIXI.Sprite.prototype._renderCanvas = function(renderSession, matrix) } }; - -// some helper functions.. - -/** - * - * Helper function that creates a sprite that will contain a texture from the TextureCache based on the frameId - * The frame ids are created when a Texture packer file has been loaded - * - * @method fromFrame - * @static - * @param frameId {String} The frame Id of the texture in the cache - * @return {Sprite} A new Sprite using a texture from the texture cache matching the frameId - */ -PIXI.Sprite.fromFrame = function(frameId) -{ - var texture = PIXI.TextureCache[frameId]; - - if (!texture) throw new Error('The frameId "' + frameId + '" does not exist in the texture cache' + this); - - return new PIXI.Sprite(texture); -}; - -/** - * - * Helper function that creates a sprite that will contain a texture based on an image url - * If the image is not in the texture cache it will be loaded - * - * @method fromImage - * @static - * @param imageId {String} The image url of the texture - * @return {Sprite} A new Sprite using a texture from the texture cache matching the image id - */ -PIXI.Sprite.fromImage = function(imageId, crossorigin, scaleMode) -{ - var texture = PIXI.Texture.fromImage(imageId, crossorigin, scaleMode); - - return new PIXI.Sprite(texture); -};
    @@ -1776,7 +1738,7 @@ PIXI.Sprite.fromImage = function(imageId, crossorigin, scaleMode) Documentation generated by JSDoc 3.3.3 - on Fri Jun 17 2016 12:45:29 GMT+0100 (BST) using the DocStrap template. + on Fri Jul 08 2016 15:42:34 GMT+0100 (GMT Daylight Time) using the DocStrap template. diff --git a/docs/src_pixi_display_SpriteBatch.js.html b/docs/src_pixi_display_SpriteBatch.js.html index b798d6a79..ca111b9a6 100644 --- a/docs/src_pixi_display_SpriteBatch.js.html +++ b/docs/src_pixi_display_SpriteBatch.js.html @@ -708,10 +708,6 @@ ComplexPrimitiveShader -
  • - DisplayObject -
  • -
  • DisplayObjectContainer
  • @@ -744,6 +740,10 @@ PIXI +
  • + DisplayObject +
  • +
  • PixiFastShader
  • @@ -1425,7 +1425,7 @@ PIXI.SpriteBatch.prototype._renderCanvas = function(renderSession) Documentation generated by JSDoc 3.3.3 - on Fri Jun 17 2016 12:45:29 GMT+0100 (BST) using the DocStrap template. + on Fri Jul 08 2016 15:42:34 GMT+0100 (GMT Daylight Time) using the DocStrap template. diff --git a/docs/src_pixi_extras_Rope.js.html b/docs/src_pixi_extras_Rope.js.html index e35354e7e..7093837ca 100644 --- a/docs/src_pixi_extras_Rope.js.html +++ b/docs/src_pixi_extras_Rope.js.html @@ -708,10 +708,6 @@ ComplexPrimitiveShader -
  • - DisplayObject -
  • -
  • DisplayObjectContainer
  • @@ -744,6 +740,10 @@ PIXI +
  • + DisplayObject +
  • +
  • PixiFastShader
  • @@ -1419,7 +1419,7 @@ PIXI.Rope.prototype.setTexture = function(texture) Documentation generated by JSDoc 3.3.3 - on Fri Jun 17 2016 12:45:29 GMT+0100 (BST) using the DocStrap template. + on Fri Jul 08 2016 15:42:34 GMT+0100 (GMT Daylight Time) using the DocStrap template. diff --git a/docs/src_pixi_extras_Strip.js.html b/docs/src_pixi_extras_Strip.js.html index 191539204..b29523ef4 100644 --- a/docs/src_pixi_extras_Strip.js.html +++ b/docs/src_pixi_extras_Strip.js.html @@ -708,10 +708,6 @@ ComplexPrimitiveShader -
  • - DisplayObject -
  • -
  • DisplayObjectContainer
  • @@ -744,6 +740,10 @@ PIXI +
  • + DisplayObject +
  • +
  • PixiFastShader
  • @@ -1717,7 +1717,7 @@ PIXI.Strip.DrawModes = { Documentation generated by JSDoc 3.3.3 - on Fri Jun 17 2016 12:45:29 GMT+0100 (BST) using the DocStrap template. + on Fri Jul 08 2016 15:42:34 GMT+0100 (GMT Daylight Time) using the DocStrap template. diff --git a/docs/src_pixi_extras_TilingSprite.js.html b/docs/src_pixi_extras_TilingSprite.js.html index f8fc29a33..e7bc408c9 100644 --- a/docs/src_pixi_extras_TilingSprite.js.html +++ b/docs/src_pixi_extras_TilingSprite.js.html @@ -708,10 +708,6 @@ ComplexPrimitiveShader -
  • - DisplayObject -
  • -
  • DisplayObjectContainer
  • @@ -744,6 +740,10 @@ PIXI +
  • + DisplayObject +
  • +
  • PixiFastShader
  • @@ -1796,7 +1796,7 @@ Object.defineProperty(PIXI.TilingSprite.prototype, 'height', { Documentation generated by JSDoc 3.3.3 - on Fri Jun 17 2016 12:45:29 GMT+0100 (BST) using the DocStrap template. + on Fri Jul 08 2016 15:42:34 GMT+0100 (GMT Daylight Time) using the DocStrap template. diff --git a/docs/src_pixi_filters_AbstractFilter.js.html b/docs/src_pixi_filters_AbstractFilter.js.html index 22b8c952b..1a621786e 100644 --- a/docs/src_pixi_filters_AbstractFilter.js.html +++ b/docs/src_pixi_filters_AbstractFilter.js.html @@ -708,10 +708,6 @@ ComplexPrimitiveShader -
  • - DisplayObject -
  • -
  • DisplayObjectContainer
  • @@ -744,6 +740,10 @@ PIXI +
  • + DisplayObject +
  • +
  • PixiFastShader
  • @@ -1317,7 +1317,7 @@ PIXI.AbstractFilter.prototype.syncUniforms = function() Documentation generated by JSDoc 3.3.3 - on Fri Jun 17 2016 12:45:29 GMT+0100 (BST) using the DocStrap template. + on Fri Jul 08 2016 15:42:34 GMT+0100 (GMT Daylight Time) using the DocStrap template. diff --git a/docs/src_pixi_primitives_Graphics.js.html b/docs/src_pixi_primitives_Graphics.js.html index a633f3545..bf99f6f3e 100644 --- a/docs/src_pixi_primitives_Graphics.js.html +++ b/docs/src_pixi_primitives_Graphics.js.html @@ -708,10 +708,6 @@ ComplexPrimitiveShader -
  • - DisplayObject -
  • -
  • DisplayObjectContainer
  • @@ -744,6 +740,10 @@ PIXI +
  • + DisplayObject +
  • +
  • PixiFastShader
  • @@ -1429,6 +1429,7 @@ PIXI.Graphics.prototype.lineTo = function(x, y) this.currentPath.shape.points.push(x, y); this.dirty = true; + this.updateLocalBounds(); return this; }; @@ -1483,6 +1484,7 @@ PIXI.Graphics.prototype.quadraticCurveTo = function(cpX, cpY, toX, toY) } this.dirty = true; + this.updateLocalBounds(); return this; }; @@ -1541,6 +1543,7 @@ PIXI.Graphics.prototype.bezierCurveTo = function(cpX, cpY, cpX2, cpY2, toX, toY) } this.dirty = true; + this.updateLocalBounds(); return this; }; @@ -1610,6 +1613,7 @@ PIXI.Graphics.prototype.arcTo = function(x1, y1, x2, y2, radius) } this.dirty = true; + this.updateLocalBounds(); return this; }; @@ -1695,6 +1699,7 @@ PIXI.Graphics.prototype.arc = function(cx, cy, radius, startAngle, endAngle, ant } this.dirty = true; + this.updateLocalBounds(); return this; }; @@ -1856,6 +1861,8 @@ PIXI.Graphics.prototype.clear = function() this.clearDirty = true; this.graphicsData = []; + this.updateLocalBounds(); + return this; }; @@ -1890,8 +1897,6 @@ PIXI.Graphics.prototype.generateTexture = function(resolution, scaleMode, paddin canvasBuffer.context.translate(-bounds.x, -bounds.y); - // Call here - PIXI.CanvasGraphics.renderGraphics(this, canvasBuffer.context); return texture; @@ -2403,8 +2408,11 @@ PIXI.Graphics.prototype.drawShape = function(shape) } this.dirty = true; + + this.updateLocalBounds(); return data; + }; /** @@ -2463,7 +2471,7 @@ Object.defineProperty(PIXI.Graphics.prototype, "cacheAsBitmap", { Documentation generated by JSDoc 3.3.3 - on Fri Jun 17 2016 12:45:29 GMT+0100 (BST) using the DocStrap template. + on Fri Jul 08 2016 15:42:34 GMT+0100 (GMT Daylight Time) using the DocStrap template. diff --git a/docs/src_pixi_primitives_GraphicsData.js.html b/docs/src_pixi_primitives_GraphicsData.js.html index 72ed2be64..9e0fb6bfa 100644 --- a/docs/src_pixi_primitives_GraphicsData.js.html +++ b/docs/src_pixi_primitives_GraphicsData.js.html @@ -708,10 +708,6 @@ ComplexPrimitiveShader -
  • - DisplayObject -
  • -
  • DisplayObjectContainer
  • @@ -744,6 +740,10 @@ PIXI +
  • + DisplayObject +
  • +
  • PixiFastShader
  • @@ -1354,7 +1354,7 @@ PIXI.GraphicsData.prototype.clone = function() { Documentation generated by JSDoc 3.3.3 - on Fri Jun 17 2016 12:45:29 GMT+0100 (BST) using the DocStrap template. + on Fri Jul 08 2016 15:42:34 GMT+0100 (GMT Daylight Time) using the DocStrap template. diff --git a/docs/src_pixi_renderers_canvas_CanvasGraphics.js.html b/docs/src_pixi_renderers_canvas_CanvasGraphics.js.html index cf2345f44..238844021 100644 --- a/docs/src_pixi_renderers_canvas_CanvasGraphics.js.html +++ b/docs/src_pixi_renderers_canvas_CanvasGraphics.js.html @@ -708,10 +708,6 @@ ComplexPrimitiveShader -
  • - DisplayObject -
  • -
  • DisplayObjectContainer
  • @@ -744,6 +740,10 @@ PIXI +
  • + DisplayObject +
  • +
  • PixiFastShader
  • @@ -1577,7 +1577,7 @@ PIXI.CanvasGraphics.updateGraphicsTint = function(graphics) Documentation generated by JSDoc 3.3.3 - on Fri Jun 17 2016 12:45:29 GMT+0100 (BST) using the DocStrap template. + on Fri Jul 08 2016 15:42:34 GMT+0100 (GMT Daylight Time) using the DocStrap template. diff --git a/docs/src_pixi_renderers_canvas_CanvasRenderer.js.html b/docs/src_pixi_renderers_canvas_CanvasRenderer.js.html index 44437b842..6d6c36842 100644 --- a/docs/src_pixi_renderers_canvas_CanvasRenderer.js.html +++ b/docs/src_pixi_renderers_canvas_CanvasRenderer.js.html @@ -708,10 +708,6 @@ ComplexPrimitiveShader -
  • - DisplayObject -
  • -
  • DisplayObjectContainer
  • @@ -744,6 +740,10 @@ PIXI +
  • + DisplayObject +
  • +
  • PixiFastShader
  • @@ -1540,7 +1540,7 @@ PIXI.CanvasRenderer.prototype.mapBlendModes = function () { Documentation generated by JSDoc 3.3.3 - on Fri Jun 17 2016 12:45:29 GMT+0100 (BST) using the DocStrap template. + on Fri Jul 08 2016 15:42:34 GMT+0100 (GMT Daylight Time) using the DocStrap template. diff --git a/docs/src_pixi_renderers_canvas_utils_CanvasBuffer.js.html b/docs/src_pixi_renderers_canvas_utils_CanvasBuffer.js.html index 4544d309a..1871ae504 100644 --- a/docs/src_pixi_renderers_canvas_utils_CanvasBuffer.js.html +++ b/docs/src_pixi_renderers_canvas_utils_CanvasBuffer.js.html @@ -708,10 +708,6 @@ ComplexPrimitiveShader -
  • - DisplayObject -
  • -
  • DisplayObjectContainer
  • @@ -744,6 +740,10 @@ PIXI +
  • + DisplayObject +
  • +
  • PixiFastShader
  • @@ -1331,7 +1331,7 @@ PIXI.CanvasBuffer.prototype.destroy = function() Documentation generated by JSDoc 3.3.3 - on Fri Jun 17 2016 12:45:29 GMT+0100 (BST) using the DocStrap template. + on Fri Jul 08 2016 15:42:35 GMT+0100 (GMT Daylight Time) using the DocStrap template. diff --git a/docs/src_pixi_renderers_canvas_utils_CanvasMaskManager.js.html b/docs/src_pixi_renderers_canvas_utils_CanvasMaskManager.js.html index de80f2037..4a543102f 100644 --- a/docs/src_pixi_renderers_canvas_utils_CanvasMaskManager.js.html +++ b/docs/src_pixi_renderers_canvas_utils_CanvasMaskManager.js.html @@ -708,10 +708,6 @@ ComplexPrimitiveShader -
  • - DisplayObject -
  • -
  • DisplayObjectContainer
  • @@ -744,6 +740,10 @@ PIXI +
  • + DisplayObject +
  • +
  • PixiFastShader
  • @@ -1303,7 +1303,7 @@ PIXI.CanvasMaskManager.prototype.popMask = function(renderSession) Documentation generated by JSDoc 3.3.3 - on Fri Jun 17 2016 12:45:29 GMT+0100 (BST) using the DocStrap template. + on Fri Jul 08 2016 15:42:34 GMT+0100 (GMT Daylight Time) using the DocStrap template. diff --git a/docs/src_pixi_renderers_canvas_utils_CanvasTinter.js.html b/docs/src_pixi_renderers_canvas_utils_CanvasTinter.js.html index 6de22cf29..7e66efd3a 100644 --- a/docs/src_pixi_renderers_canvas_utils_CanvasTinter.js.html +++ b/docs/src_pixi_renderers_canvas_utils_CanvasTinter.js.html @@ -708,10 +708,6 @@ ComplexPrimitiveShader -
  • - DisplayObject -
  • -
  • DisplayObjectContainer
  • @@ -744,6 +740,10 @@ PIXI +
  • + DisplayObject +
  • +
  • PixiFastShader
  • @@ -1416,7 +1416,7 @@ PIXI.CanvasTinter.tintMethod = PIXI.CanvasTinter.canUseMultiply ? PIXI.CanvasTin Documentation generated by JSDoc 3.3.3 - on Fri Jun 17 2016 12:45:29 GMT+0100 (BST) using the DocStrap template. + on Fri Jul 08 2016 15:42:34 GMT+0100 (GMT Daylight Time) using the DocStrap template. diff --git a/docs/src_pixi_renderers_webgl_WebGLRenderer.js.html b/docs/src_pixi_renderers_webgl_WebGLRenderer.js.html index 932af8ecb..1f066eb0d 100644 --- a/docs/src_pixi_renderers_webgl_WebGLRenderer.js.html +++ b/docs/src_pixi_renderers_webgl_WebGLRenderer.js.html @@ -708,10 +708,6 @@ ComplexPrimitiveShader -
  • - DisplayObject -
  • -
  • DisplayObjectContainer
  • @@ -744,6 +740,10 @@ PIXI +
  • + DisplayObject +
  • +
  • PixiFastShader
  • @@ -1711,7 +1711,7 @@ PIXI.WebGLRenderer.glContextId = 0; Documentation generated by JSDoc 3.3.3 - on Fri Jun 17 2016 12:45:29 GMT+0100 (BST) using the DocStrap template. + on Fri Jul 08 2016 15:42:34 GMT+0100 (GMT Daylight Time) using the DocStrap template. diff --git a/docs/src_pixi_renderers_webgl_shaders_ComplexPrimitiveShader.js.html b/docs/src_pixi_renderers_webgl_shaders_ComplexPrimitiveShader.js.html index 2ff390422..e6d027813 100644 --- a/docs/src_pixi_renderers_webgl_shaders_ComplexPrimitiveShader.js.html +++ b/docs/src_pixi_renderers_webgl_shaders_ComplexPrimitiveShader.js.html @@ -708,10 +708,6 @@ ComplexPrimitiveShader -
  • - DisplayObject -
  • -
  • DisplayObjectContainer
  • @@ -744,6 +740,10 @@ PIXI +
  • + DisplayObject +
  • +
  • PixiFastShader
  • @@ -1367,7 +1367,7 @@ PIXI.ComplexPrimitiveShader.prototype.destroy = function() Documentation generated by JSDoc 3.3.3 - on Fri Jun 17 2016 12:45:29 GMT+0100 (BST) using the DocStrap template. + on Fri Jul 08 2016 15:42:34 GMT+0100 (GMT Daylight Time) using the DocStrap template. diff --git a/docs/src_pixi_renderers_webgl_shaders_PixiFastShader.js.html b/docs/src_pixi_renderers_webgl_shaders_PixiFastShader.js.html index e056f9c10..b27891d2d 100644 --- a/docs/src_pixi_renderers_webgl_shaders_PixiFastShader.js.html +++ b/docs/src_pixi_renderers_webgl_shaders_PixiFastShader.js.html @@ -708,10 +708,6 @@ ComplexPrimitiveShader -
  • - DisplayObject -
  • -
  • DisplayObjectContainer
  • @@ -744,6 +740,10 @@ PIXI +
  • + DisplayObject +
  • +
  • PixiFastShader
  • @@ -1400,7 +1400,7 @@ PIXI.PixiFastShader.prototype.destroy = function() Documentation generated by JSDoc 3.3.3 - on Fri Jun 17 2016 12:45:29 GMT+0100 (BST) using the DocStrap template. + on Fri Jul 08 2016 15:42:34 GMT+0100 (GMT Daylight Time) using the DocStrap template. diff --git a/docs/src_pixi_renderers_webgl_shaders_PixiShader.js.html b/docs/src_pixi_renderers_webgl_shaders_PixiShader.js.html index f401fc032..bbf39f74e 100644 --- a/docs/src_pixi_renderers_webgl_shaders_PixiShader.js.html +++ b/docs/src_pixi_renderers_webgl_shaders_PixiShader.js.html @@ -708,10 +708,6 @@ ComplexPrimitiveShader -
  • - DisplayObject -
  • -
  • DisplayObjectContainer
  • @@ -744,6 +740,10 @@ PIXI +
  • + DisplayObject +
  • +
  • PixiFastShader
  • @@ -1633,7 +1633,7 @@ PIXI.PixiShader.defaultVertexSrc = [ Documentation generated by JSDoc 3.3.3 - on Fri Jun 17 2016 12:45:29 GMT+0100 (BST) using the DocStrap template. + on Fri Jul 08 2016 15:42:34 GMT+0100 (GMT Daylight Time) using the DocStrap template. diff --git a/docs/src_pixi_renderers_webgl_shaders_PrimitiveShader.js.html b/docs/src_pixi_renderers_webgl_shaders_PrimitiveShader.js.html index 3103faf44..f167d0f71 100644 --- a/docs/src_pixi_renderers_webgl_shaders_PrimitiveShader.js.html +++ b/docs/src_pixi_renderers_webgl_shaders_PrimitiveShader.js.html @@ -708,10 +708,6 @@ ComplexPrimitiveShader -
  • - DisplayObject -
  • -
  • DisplayObjectContainer
  • @@ -744,6 +740,10 @@ PIXI +
  • + DisplayObject +
  • +
  • PixiFastShader
  • @@ -1362,7 +1362,7 @@ PIXI.PrimitiveShader.prototype.destroy = function() Documentation generated by JSDoc 3.3.3 - on Fri Jun 17 2016 12:45:29 GMT+0100 (BST) using the DocStrap template. + on Fri Jul 08 2016 15:42:34 GMT+0100 (GMT Daylight Time) using the DocStrap template. diff --git a/docs/src_pixi_renderers_webgl_shaders_StripShader.js.html b/docs/src_pixi_renderers_webgl_shaders_StripShader.js.html index 617b37c2b..614f5c316 100644 --- a/docs/src_pixi_renderers_webgl_shaders_StripShader.js.html +++ b/docs/src_pixi_renderers_webgl_shaders_StripShader.js.html @@ -708,10 +708,6 @@ ComplexPrimitiveShader -
  • - DisplayObject -
  • -
  • DisplayObjectContainer
  • @@ -744,6 +740,10 @@ PIXI +
  • + DisplayObject +
  • +
  • PixiFastShader
  • @@ -1368,7 +1368,7 @@ PIXI.StripShader.prototype.destroy = function() Documentation generated by JSDoc 3.3.3 - on Fri Jun 17 2016 12:45:29 GMT+0100 (BST) using the DocStrap template. + on Fri Jul 08 2016 15:42:34 GMT+0100 (GMT Daylight Time) using the DocStrap template. diff --git a/docs/src_pixi_renderers_webgl_utils_FilterTexture.js.html b/docs/src_pixi_renderers_webgl_utils_FilterTexture.js.html index f67e3edf8..f8927abf5 100644 --- a/docs/src_pixi_renderers_webgl_utils_FilterTexture.js.html +++ b/docs/src_pixi_renderers_webgl_utils_FilterTexture.js.html @@ -708,10 +708,6 @@ ComplexPrimitiveShader -
  • - DisplayObject -
  • -
  • DisplayObjectContainer
  • @@ -744,6 +740,10 @@ PIXI +
  • + DisplayObject +
  • +
  • PixiFastShader
  • @@ -1355,7 +1355,7 @@ PIXI.FilterTexture.prototype.destroy = function() Documentation generated by JSDoc 3.3.3 - on Fri Jun 17 2016 12:45:29 GMT+0100 (BST) using the DocStrap template. + on Fri Jul 08 2016 15:42:34 GMT+0100 (GMT Daylight Time) using the DocStrap template. diff --git a/docs/src_pixi_renderers_webgl_utils_WebGLBlendModeManager.js.html b/docs/src_pixi_renderers_webgl_utils_WebGLBlendModeManager.js.html index f58ec3f93..7060ea03a 100644 --- a/docs/src_pixi_renderers_webgl_utils_WebGLBlendModeManager.js.html +++ b/docs/src_pixi_renderers_webgl_utils_WebGLBlendModeManager.js.html @@ -708,10 +708,6 @@ ComplexPrimitiveShader -
  • - DisplayObject -
  • -
  • DisplayObjectContainer
  • @@ -744,6 +740,10 @@ PIXI +
  • + DisplayObject +
  • +
  • PixiFastShader
  • @@ -1307,7 +1307,7 @@ PIXI.WebGLBlendModeManager.prototype.destroy = function() Documentation generated by JSDoc 3.3.3 - on Fri Jun 17 2016 12:45:29 GMT+0100 (BST) using the DocStrap template. + on Fri Jul 08 2016 15:42:34 GMT+0100 (GMT Daylight Time) using the DocStrap template. diff --git a/docs/src_pixi_renderers_webgl_utils_WebGLFastSpriteBatch.js.html b/docs/src_pixi_renderers_webgl_utils_WebGLFastSpriteBatch.js.html index 73b507f1e..41e87bf59 100644 --- a/docs/src_pixi_renderers_webgl_utils_WebGLFastSpriteBatch.js.html +++ b/docs/src_pixi_renderers_webgl_utils_WebGLFastSpriteBatch.js.html @@ -708,10 +708,6 @@ ComplexPrimitiveShader -
  • - DisplayObject -
  • -
  • DisplayObjectContainer
  • @@ -744,6 +740,10 @@ PIXI +
  • + DisplayObject +
  • +
  • PixiFastShader
  • @@ -1673,7 +1673,7 @@ PIXI.WebGLFastSpriteBatch.prototype.start = function() Documentation generated by JSDoc 3.3.3 - on Fri Jun 17 2016 12:45:29 GMT+0100 (BST) using the DocStrap template. + on Fri Jul 08 2016 15:42:34 GMT+0100 (GMT Daylight Time) using the DocStrap template. diff --git a/docs/src_pixi_renderers_webgl_utils_WebGLFilterManager.js.html b/docs/src_pixi_renderers_webgl_utils_WebGLFilterManager.js.html index 685f969e5..675443d9e 100644 --- a/docs/src_pixi_renderers_webgl_utils_WebGLFilterManager.js.html +++ b/docs/src_pixi_renderers_webgl_utils_WebGLFilterManager.js.html @@ -708,10 +708,6 @@ ComplexPrimitiveShader -
  • - DisplayObject -
  • -
  • DisplayObjectContainer
  • @@ -744,6 +740,10 @@ PIXI +
  • + DisplayObject +
  • +
  • PixiFastShader
  • @@ -1716,7 +1716,7 @@ PIXI.WebGLFilterManager.prototype.destroy = function() Documentation generated by JSDoc 3.3.3 - on Fri Jun 17 2016 12:45:29 GMT+0100 (BST) using the DocStrap template. + on Fri Jul 08 2016 15:42:34 GMT+0100 (GMT Daylight Time) using the DocStrap template. diff --git a/docs/src_pixi_renderers_webgl_utils_WebGLGraphics.js.html b/docs/src_pixi_renderers_webgl_utils_WebGLGraphics.js.html index 84e2fdadf..8f96e0684 100644 --- a/docs/src_pixi_renderers_webgl_utils_WebGLGraphics.js.html +++ b/docs/src_pixi_renderers_webgl_utils_WebGLGraphics.js.html @@ -708,10 +708,6 @@ ComplexPrimitiveShader -
  • - DisplayObject -
  • -
  • DisplayObjectContainer
  • @@ -744,6 +740,10 @@ PIXI +
  • + DisplayObject +
  • +
  • PixiFastShader
  • @@ -2147,7 +2147,7 @@ PIXI.WebGLGraphicsData.prototype.upload = function() Documentation generated by JSDoc 3.3.3 - on Fri Jun 17 2016 12:45:29 GMT+0100 (BST) using the DocStrap template. + on Fri Jul 08 2016 15:42:34 GMT+0100 (GMT Daylight Time) using the DocStrap template. diff --git a/docs/src_pixi_renderers_webgl_utils_WebGLMaskManager.js.html b/docs/src_pixi_renderers_webgl_utils_WebGLMaskManager.js.html index ececba5f5..7414a4fc9 100644 --- a/docs/src_pixi_renderers_webgl_utils_WebGLMaskManager.js.html +++ b/docs/src_pixi_renderers_webgl_utils_WebGLMaskManager.js.html @@ -708,10 +708,6 @@ ComplexPrimitiveShader -
  • - DisplayObject -
  • -
  • DisplayObjectContainer
  • @@ -744,6 +740,10 @@ PIXI +
  • + DisplayObject +
  • +
  • PixiFastShader
  • @@ -1324,7 +1324,7 @@ PIXI.WebGLMaskManager.prototype.destroy = function() Documentation generated by JSDoc 3.3.3 - on Fri Jun 17 2016 12:45:29 GMT+0100 (BST) using the DocStrap template. + on Fri Jul 08 2016 15:42:34 GMT+0100 (GMT Daylight Time) using the DocStrap template. diff --git a/docs/src_pixi_renderers_webgl_utils_WebGLShaderManager.js.html b/docs/src_pixi_renderers_webgl_utils_WebGLShaderManager.js.html index cb9ad8a14..73ebbd876 100644 --- a/docs/src_pixi_renderers_webgl_utils_WebGLShaderManager.js.html +++ b/docs/src_pixi_renderers_webgl_utils_WebGLShaderManager.js.html @@ -708,10 +708,6 @@ ComplexPrimitiveShader -
  • - DisplayObject -
  • -
  • DisplayObjectContainer
  • @@ -744,6 +740,10 @@ PIXI +
  • + DisplayObject +
  • +
  • PixiFastShader
  • @@ -1403,7 +1403,7 @@ PIXI.WebGLShaderManager.prototype.destroy = function() Documentation generated by JSDoc 3.3.3 - on Fri Jun 17 2016 12:45:29 GMT+0100 (BST) using the DocStrap template. + on Fri Jul 08 2016 15:42:34 GMT+0100 (GMT Daylight Time) using the DocStrap template. diff --git a/docs/src_pixi_renderers_webgl_utils_WebGLShaderUtils.js.html b/docs/src_pixi_renderers_webgl_utils_WebGLShaderUtils.js.html index 4cd4b6431..bbe8158f6 100644 --- a/docs/src_pixi_renderers_webgl_utils_WebGLShaderUtils.js.html +++ b/docs/src_pixi_renderers_webgl_utils_WebGLShaderUtils.js.html @@ -708,10 +708,6 @@ ComplexPrimitiveShader -
  • - DisplayObject -
  • -
  • DisplayObjectContainer
  • @@ -744,6 +740,10 @@ PIXI +
  • + DisplayObject +
  • +
  • PixiFastShader
  • @@ -1340,7 +1340,7 @@ PIXI.compileProgram = function(gl, vertexSrc, fragmentSrc) Documentation generated by JSDoc 3.3.3 - on Fri Jun 17 2016 12:45:29 GMT+0100 (BST) using the DocStrap template. + on Fri Jul 08 2016 15:42:34 GMT+0100 (GMT Daylight Time) using the DocStrap template. diff --git a/docs/src_pixi_renderers_webgl_utils_WebGLSpriteBatch.js.html b/docs/src_pixi_renderers_webgl_utils_WebGLSpriteBatch.js.html index 65165a706..035dc36d3 100644 --- a/docs/src_pixi_renderers_webgl_utils_WebGLSpriteBatch.js.html +++ b/docs/src_pixi_renderers_webgl_utils_WebGLSpriteBatch.js.html @@ -708,10 +708,6 @@ ComplexPrimitiveShader -
  • - DisplayObject -
  • -
  • DisplayObjectContainer
  • @@ -744,6 +740,10 @@ PIXI +
  • + DisplayObject +
  • +
  • PixiFastShader
  • @@ -1924,7 +1924,7 @@ PIXI.WebGLSpriteBatch.prototype.destroy = function() Documentation generated by JSDoc 3.3.3 - on Fri Jun 17 2016 12:45:29 GMT+0100 (BST) using the DocStrap template. + on Fri Jul 08 2016 15:42:35 GMT+0100 (GMT Daylight Time) using the DocStrap template. diff --git a/docs/src_pixi_renderers_webgl_utils_WebGLStencilManager.js.html b/docs/src_pixi_renderers_webgl_utils_WebGLStencilManager.js.html index 152dba2ef..fdca62902 100644 --- a/docs/src_pixi_renderers_webgl_utils_WebGLStencilManager.js.html +++ b/docs/src_pixi_renderers_webgl_utils_WebGLStencilManager.js.html @@ -708,10 +708,6 @@ ComplexPrimitiveShader -
  • - DisplayObject -
  • -
  • DisplayObjectContainer
  • @@ -744,6 +740,10 @@ PIXI +
  • + DisplayObject +
  • +
  • PixiFastShader
  • @@ -1542,7 +1542,7 @@ PIXI.WebGLStencilManager.prototype.destroy = function() Documentation generated by JSDoc 3.3.3 - on Fri Jun 17 2016 12:45:29 GMT+0100 (BST) using the DocStrap template. + on Fri Jul 08 2016 15:42:34 GMT+0100 (GMT Daylight Time) using the DocStrap template. diff --git a/docs/src_pixi_textures_BaseTexture.js.html b/docs/src_pixi_textures_BaseTexture.js.html index 98f7b51bc..3fec889f7 100644 --- a/docs/src_pixi_textures_BaseTexture.js.html +++ b/docs/src_pixi_textures_BaseTexture.js.html @@ -708,10 +708,6 @@ ComplexPrimitiveShader -
  • - DisplayObject -
  • -
  • DisplayObjectContainer
  • @@ -744,6 +740,10 @@ PIXI +
  • + DisplayObject +
  • +
  • PixiFastShader
  • @@ -1228,17 +1228,13 @@ * @author Mat Groves http://matgroves.com/ @Doormat23 */ -PIXI.BaseTextureCache = {}; - -PIXI.BaseTextureCacheIdGenerator = 0; - /** * A texture stores the information that represents an image. All textures have a base texture. * * @class BaseTexture * @uses EventTarget * @constructor - * @param source {String} the source object (image or canvas) + * @param source {String|Canvas} the source object (image or canvas) * @param scaleMode {Number} See {{#crossLink "PIXI/scaleModes:property"}}PIXI.scaleModes{{/crossLink}} for possible values */ PIXI.BaseTexture = function(source, scaleMode) @@ -1295,8 +1291,6 @@ PIXI.BaseTexture = function(source, scaleMode) */ this.source = source; - this._UID = PIXI._UID++; - /** * Controls if RGB channels should be pre-multiplied by Alpha (WebGL only) * @@ -1355,12 +1349,6 @@ PIXI.BaseTexture = function(source, scaleMode) */ this.skipRender = false; - /** - * @property imageUrl - * @type String - */ - this.imageUrl = null; - /** * @property _powerOf2 * @type Boolean @@ -1387,7 +1375,6 @@ PIXI.BaseTexture.prototype.forceLoaded = function(width, height) this.width = width; this.height = height; this.dirty(); - }; /** @@ -1397,23 +1384,9 @@ PIXI.BaseTexture.prototype.forceLoaded = function(width, height) */ PIXI.BaseTexture.prototype.destroy = function() { - if (this.imageUrl) - { - delete PIXI.BaseTextureCache[this.imageUrl]; - delete PIXI.TextureCache[this.imageUrl]; - - this.imageUrl = null; - - if (!navigator.isCocoonJS) this.source.src = ''; - } - else if (this.source) + if (this.source) { PIXI.CanvasPool.removeByCanvas(this.source); - - if (this.source._pixiId) - { - delete PIXI.BaseTextureCache[this.source._pixiId]; - } } this.source = null; @@ -1426,12 +1399,11 @@ PIXI.BaseTexture.prototype.destroy = function() * * @method updateSourceImage * @param newSrc {String} the path of the image + * @deprecated This method is deprecated. Please use Phaser.Sprite.loadTexture instead. */ PIXI.BaseTexture.prototype.updateSourceImage = function(newSrc) { - this.hasLoaded = false; - this.source.src = null; - this.source.src = newSrc; + console.warn("PIXI.BaseTexture.updateSourceImage is deprecated. Use Phaser.Sprite.loadTexture instead."); }; /** @@ -1475,49 +1447,6 @@ PIXI.BaseTexture.prototype.unloadFromGPU = function() this.dirty(); }; -/** - * Helper function that creates a base texture from the given image url. - * If the image is not in the base texture cache it will be created and loaded. - * - * @static - * @method fromImage - * @param imageUrl {String} The image url of the texture - * @param crossorigin {Boolean} - * @param scaleMode {Number} See {{#crossLink "PIXI/scaleModes:property"}}PIXI.scaleModes{{/crossLink}} for possible values - * @return {BaseTexture} - */ -PIXI.BaseTexture.fromImage = function(imageUrl, crossorigin, scaleMode) -{ - var baseTexture = PIXI.BaseTextureCache[imageUrl]; - - if(crossorigin === undefined && imageUrl.indexOf('data:') === -1) crossorigin = true; - - if(!baseTexture) - { - // new Image() breaks tex loading in some versions of Chrome. - // See https://code.google.com/p/chromium/issues/detail?id=238071 - var image = new Image(); - - if (crossorigin) - { - image.crossOrigin = ''; - } - - image.src = imageUrl; - baseTexture = new PIXI.BaseTexture(image, scaleMode); - baseTexture.imageUrl = imageUrl; - PIXI.BaseTextureCache[imageUrl] = baseTexture; - - // if there is an @2x at the end of the url we are going to assume its a highres image - if( imageUrl.indexOf(PIXI.RETINA_PREFIX + '.') !== -1) - { - baseTexture.resolution = 2; - } - } - - return baseTexture; -}; - /** * Helper function that creates a base texture from the given canvas element. * @@ -1529,11 +1458,6 @@ PIXI.BaseTexture.fromImage = function(imageUrl, crossorigin, scaleMode) */ PIXI.BaseTexture.fromCanvas = function(canvas, scaleMode) { - if (!canvas._pixiId) - { - canvas._pixiId = 'canvas_' + PIXI.TextureCacheIdGenerator++; - } - if (canvas.width === 0) { canvas.width = 1; @@ -1544,15 +1468,7 @@ PIXI.BaseTexture.fromCanvas = function(canvas, scaleMode) canvas.height = 1; } - var baseTexture = PIXI.BaseTextureCache[canvas._pixiId]; - - if (!baseTexture) - { - baseTexture = new PIXI.BaseTexture(canvas, scaleMode); - PIXI.BaseTextureCache[canvas._pixiId] = baseTexture; - } - - return baseTexture; + return new PIXI.BaseTexture(canvas, scaleMode); }; @@ -1575,7 +1491,7 @@ PIXI.BaseTexture.fromCanvas = function(canvas, scaleMode) Documentation generated by JSDoc 3.3.3 - on Fri Jun 17 2016 12:45:29 GMT+0100 (BST) using the DocStrap template. + on Fri Jul 08 2016 15:42:34 GMT+0100 (GMT Daylight Time) using the DocStrap template. diff --git a/docs/src_pixi_textures_RenderTexture.js.html b/docs/src_pixi_textures_RenderTexture.js.html index e342ec214..6ed6602f5 100644 --- a/docs/src_pixi_textures_RenderTexture.js.html +++ b/docs/src_pixi_textures_RenderTexture.js.html @@ -708,10 +708,6 @@ ComplexPrimitiveShader -
  • - DisplayObject -
  • -
  • DisplayObjectContainer
  • @@ -744,6 +740,10 @@ PIXI +
  • + DisplayObject +
  • +
  • PixiFastShader
  • @@ -1597,7 +1597,7 @@ PIXI.RenderTexture.prototype.getCanvas = function() Documentation generated by JSDoc 3.3.3 - on Fri Jun 17 2016 12:45:29 GMT+0100 (BST) using the DocStrap template. + on Fri Jul 08 2016 15:42:34 GMT+0100 (GMT Daylight Time) using the DocStrap template. diff --git a/docs/src_pixi_textures_Texture.js.html b/docs/src_pixi_textures_Texture.js.html index 8bd993db3..12f450bab 100644 --- a/docs/src_pixi_textures_Texture.js.html +++ b/docs/src_pixi_textures_Texture.js.html @@ -708,10 +708,6 @@ ComplexPrimitiveShader -
  • - DisplayObject -
  • -
  • DisplayObjectContainer
  • @@ -744,6 +740,10 @@ PIXI +
  • + DisplayObject +
  • +
  • PixiFastShader
  • @@ -1228,9 +1228,6 @@ * @author Mat Groves http://matgroves.com/ @Doormat23 */ -PIXI.TextureCache = {}; -PIXI.FrameCache = {}; - /** * TextureSilentFail is a boolean that defaults to `false`. * If `true` then `PIXI.Texture.setFrame` will no longer throw an error if the texture dimensions are incorrect. @@ -1240,8 +1237,6 @@ PIXI.FrameCache = {}; */ PIXI.TextureSilentFail = false; -PIXI.TextureCacheIdGenerator = 0; - /** * A texture stores the information that represents an image or part of an image. It cannot be added * to the display list directly. Instead use it as the texture for a PIXI.Sprite. If no frame is provided then the whole image is used. @@ -1477,46 +1472,6 @@ PIXI.Texture.prototype._updateUvs = function() this._uvs.y3 = (frame.y + frame.height) / th; }; -/** - * Helper function that creates a Texture object from the given image url. - * If the image is not in the texture cache it will be created and loaded. - * - * @static - * @method fromImage - * @param imageUrl {String} The image url of the texture - * @param crossorigin {Boolean} Whether requests should be treated as crossorigin - * @param scaleMode {Number} See {{#crossLink "PIXI/scaleModes:property"}}PIXI.scaleModes{{/crossLink}} for possible values - * @return {Texture} - */ -PIXI.Texture.fromImage = function(imageUrl, crossorigin, scaleMode) -{ - var texture = PIXI.TextureCache[imageUrl]; - - if(!texture) - { - texture = new PIXI.Texture(PIXI.BaseTexture.fromImage(imageUrl, crossorigin, scaleMode)); - PIXI.TextureCache[imageUrl] = texture; - } - - return texture; -}; - -/** - * Helper function that returns a Texture objected based on the given frame id. - * If the frame id is not in the texture cache an error will be thrown. - * - * @static - * @method fromFrame - * @param frameId {String} The frame id of the texture - * @return {Texture} - */ -PIXI.Texture.fromFrame = function(frameId) -{ - var texture = PIXI.TextureCache[frameId]; - if(!texture) throw new Error('The frameId "' + frameId + '" does not exist in the texture cache '); - return texture; -}; - /** * Helper function that creates a new a Texture based on the given canvas element. * @@ -1533,35 +1488,6 @@ PIXI.Texture.fromCanvas = function(canvas, scaleMode) return new PIXI.Texture(baseTexture); }; -/** - * Adds a texture to the global PIXI.TextureCache. This cache is shared across the whole PIXI object. - * - * @static - * @method addTextureToCache - * @param texture {Texture} The Texture to add to the cache. - * @param id {String} The id that the texture will be stored against. - */ -PIXI.Texture.addTextureToCache = function(texture, id) -{ - PIXI.TextureCache[id] = texture; -}; - -/** - * Remove a texture from the global PIXI.TextureCache. - * - * @static - * @method removeTextureFromCache - * @param id {String} The id of the texture to be removed - * @return {Texture} The texture that was removed - */ -PIXI.Texture.removeTextureFromCache = function(id) -{ - var texture = PIXI.TextureCache[id]; - delete PIXI.TextureCache[id]; - delete PIXI.BaseTextureCache[id]; - return texture; -}; - PIXI.TextureUvs = function() { this.x0 = 0; @@ -1597,7 +1523,7 @@ PIXI.TextureUvs = function() Documentation generated by JSDoc 3.3.3 - on Fri Jun 17 2016 12:45:29 GMT+0100 (BST) using the DocStrap template. + on Fri Jul 08 2016 15:42:34 GMT+0100 (GMT Daylight Time) using the DocStrap template. diff --git a/docs/src_pixi_utils_CanvasPool.js.html b/docs/src_pixi_utils_CanvasPool.js.html index f33fc346e..2434a225e 100644 --- a/docs/src_pixi_utils_CanvasPool.js.html +++ b/docs/src_pixi_utils_CanvasPool.js.html @@ -708,10 +708,6 @@ ComplexPrimitiveShader -
  • - DisplayObject -
  • -
  • DisplayObjectContainer
  • @@ -744,6 +740,10 @@ PIXI +
  • + DisplayObject +
  • +
  • PixiFastShader
  • @@ -1294,7 +1294,7 @@ PIXI.CanvasPool = { for (var i = 0; i < pool.length; i++) { - if (pool[i].parent === null) + if (!pool[i].parent) { return i; } @@ -1320,6 +1320,8 @@ PIXI.CanvasPool = { if (pool[i].parent === parent) { pool[i].parent = null; + pool[i].canvas.width = 1; + pool[i].canvas.height = 1; } } @@ -1341,6 +1343,8 @@ PIXI.CanvasPool = { if (pool[i].canvas === canvas) { pool[i].parent = null; + pool[i].canvas.width = 1; + pool[i].canvas.height = 1; } } @@ -1360,7 +1364,7 @@ PIXI.CanvasPool = { for (var i = 0; i < pool.length; i++) { - if (pool[i].parent !== null) + if (pool[i].parent) { c++; } @@ -1384,7 +1388,7 @@ PIXI.CanvasPool = { for (var i = 0; i < pool.length; i++) { - if (pool[i].parent === null) + if (!pool[i].parent) { c++; } @@ -1425,7 +1429,7 @@ PIXI.CanvasPool.pool = []; Documentation generated by JSDoc 3.3.3 - on Fri Jun 17 2016 12:45:29 GMT+0100 (BST) using the DocStrap template. + on Fri Jul 08 2016 15:42:34 GMT+0100 (GMT Daylight Time) using the DocStrap template. diff --git a/docs/src_pixi_utils_EarCut.js.html b/docs/src_pixi_utils_EarCut.js.html index 11ec4b03a..aa92e38a8 100644 --- a/docs/src_pixi_utils_EarCut.js.html +++ b/docs/src_pixi_utils_EarCut.js.html @@ -708,10 +708,6 @@ ComplexPrimitiveShader -
  • - DisplayObject -
  • -
  • DisplayObjectContainer
  • @@ -744,6 +740,10 @@ PIXI +
  • + DisplayObject +
  • +
  • PixiFastShader
  • @@ -1869,7 +1869,7 @@ PIXI.EarCut.Node = function (i, x, y) { Documentation generated by JSDoc 3.3.3 - on Fri Jun 17 2016 12:45:29 GMT+0100 (BST) using the DocStrap template. + on Fri Jul 08 2016 15:42:35 GMT+0100 (GMT Daylight Time) using the DocStrap template. diff --git a/docs/src_pixi_utils_EventTarget.js.html b/docs/src_pixi_utils_EventTarget.js.html index 265e828d2..8c89866c4 100644 --- a/docs/src_pixi_utils_EventTarget.js.html +++ b/docs/src_pixi_utils_EventTarget.js.html @@ -708,10 +708,6 @@ ComplexPrimitiveShader -
  • - DisplayObject -
  • -
  • DisplayObjectContainer
  • @@ -744,6 +740,10 @@ PIXI +
  • + DisplayObject +
  • +
  • PixiFastShader
  • @@ -1529,7 +1529,7 @@ PIXI.Event.prototype.stopImmediatePropagation = function stopImmediatePropagatio Documentation generated by JSDoc 3.3.3 - on Fri Jun 17 2016 12:45:29 GMT+0100 (BST) using the DocStrap template. + on Fri Jul 08 2016 15:42:34 GMT+0100 (GMT Daylight Time) using the DocStrap template. diff --git a/docs/src_pixi_utils_Polyk.js.html b/docs/src_pixi_utils_Polyk.js.html index 52d87abef..19f27248e 100644 --- a/docs/src_pixi_utils_Polyk.js.html +++ b/docs/src_pixi_utils_Polyk.js.html @@ -708,10 +708,6 @@ ComplexPrimitiveShader -
  • - DisplayObject -
  • -
  • DisplayObjectContainer
  • @@ -744,6 +740,10 @@ PIXI +
  • + DisplayObject +
  • +
  • PixiFastShader
  • @@ -1413,7 +1413,7 @@ PIXI.PolyK._convex = function(ax, ay, bx, by, cx, cy, sign) Documentation generated by JSDoc 3.3.3 - on Fri Jun 17 2016 12:45:29 GMT+0100 (BST) using the DocStrap template. + on Fri Jul 08 2016 15:42:35 GMT+0100 (GMT Daylight Time) using the DocStrap template. diff --git a/docs/src_pixi_utils_Utils.js.html b/docs/src_pixi_utils_Utils.js.html index 31cbfd608..0f96b6376 100644 --- a/docs/src_pixi_utils_Utils.js.html +++ b/docs/src_pixi_utils_Utils.js.html @@ -708,10 +708,6 @@ ComplexPrimitiveShader -
  • - DisplayObject -
  • -
  • DisplayObjectContainer
  • @@ -744,6 +740,10 @@ PIXI +
  • + DisplayObject +
  • +
  • PixiFastShader
  • @@ -1339,7 +1339,7 @@ PIXI.isPowerOfTwo = function(width, height) Documentation generated by JSDoc 3.3.3 - on Fri Jun 17 2016 12:45:29 GMT+0100 (BST) using the DocStrap template. + on Fri Jul 08 2016 15:42:34 GMT+0100 (GMT Daylight Time) using the DocStrap template. diff --git a/docs/src_plugins_weapon_Bullet.js.html b/docs/src_plugins_weapon_Bullet.js.html index 9ad50acfd..7741fc421 100644 --- a/docs/src_plugins_weapon_Bullet.js.html +++ b/docs/src_plugins_weapon_Bullet.js.html @@ -708,10 +708,6 @@ ComplexPrimitiveShader -
  • - DisplayObject -
  • -
  • DisplayObjectContainer
  • @@ -744,6 +740,10 @@ PIXI +
  • + DisplayObject +
  • +
  • PixiFastShader
  • @@ -1346,7 +1346,7 @@ Phaser.Bullet.prototype.update = function () { Documentation generated by JSDoc 3.3.3 - on Fri Jun 17 2016 12:45:29 GMT+0100 (BST) using the DocStrap template. + on Fri Jul 08 2016 15:42:34 GMT+0100 (GMT Daylight Time) using the DocStrap template. diff --git a/docs/src_plugins_weapon_WeaponPlugin.js.html b/docs/src_plugins_weapon_WeaponPlugin.js.html index 660b90659..22bbfda44 100644 --- a/docs/src_plugins_weapon_WeaponPlugin.js.html +++ b/docs/src_plugins_weapon_WeaponPlugin.js.html @@ -708,10 +708,6 @@ ComplexPrimitiveShader -
  • - DisplayObject -
  • -
  • DisplayObjectContainer
  • @@ -744,6 +740,10 @@ PIXI +
  • + DisplayObject +
  • +
  • PixiFastShader
  • @@ -1318,7 +1318,7 @@ Phaser.Weapon = function (game, parent) { this.fireFrom = new Phaser.Rectangle(0, 0, 1, 1); /** - * The angle at which the bullets are fired. This can be a const such as Phaser.ANGLE_UP + * The angle at which the bullets are fired. This can be a const such as Phaser.ANGLE_UP * or it can be any number from 0 to 360 inclusive, where 0 degrees is to the right. * @type {integer} */ @@ -1396,14 +1396,14 @@ Phaser.Weapon = function (game, parent) { /** * This is a variance added to the speed of Bullets when they are fired. - * If bullets have a `bulletSpeed` value of 200, and a `bulletSpeedVariance` of 50 + * If bullets have a `bulletSpeed` value of 200, and a `bulletSpeedVariance` of 50 * then the actual speed of the Bullets will be between 150 and 250 pixels per second. * @type {number} */ this.bulletSpeedVariance = 0; /** - * If you've set `bulletKillType` to `Phaser.Weapon.KILL_LIFESPAN` this controls the amount + * If you've set `bulletKillType` to `Phaser.Weapon.KILL_LIFESPAN` this controls the amount * of lifespan the Bullets have set on launch. The value is given in milliseconds. * When a Bullet hits its lifespan limit it will be automatically killed. * @type {number} @@ -1411,7 +1411,7 @@ Phaser.Weapon = function (game, parent) { this.bulletLifespan = 0; /** - * If you've set `bulletKillType` to `Phaser.Weapon.KILL_DISTANCE` this controls the distance + * If you've set `bulletKillType` to `Phaser.Weapon.KILL_DISTANCE` this controls the distance * the Bullet can travel before it is automatically killed. The distance is given in pixels. * @type {number} */ @@ -1485,7 +1485,7 @@ Phaser.Weapon = function (game, parent) { * This Rectangle defines the bounds that are used when determining if a Bullet should be killed or not. * It's used in combination with `Weapon.bulletKillType` when that is set to either `Phaser.Weapon.KILL_WEAPON_BOUNDS` * or `Phaser.Weapon.KILL_STATIC_BOUNDS`. If you are not using either of these kill types then the bounds are ignored. - * If you are tracking a Sprite or Point then the bounds are centered on that object every frame. + * If you are tracking a Sprite or Point then the bounds are centered on that object every frame. * * @type {Phaser.Rectangle} */ @@ -1524,8 +1524,8 @@ Phaser.Weapon = function (game, parent) { /** * The onFire Signal is dispatched each time `Weapon.fire` is called, and a Bullet is - * _successfully_ launched. The callback is set two arguments: a reference to the Weapon that fired the bullet, - * and a reference to the bullet sprite itself. + * _successfully_ launched. The callback is set two arguments: a reference to the bullet sprite itself, + * and a reference to the Weapon that fired the bullet. * * @type {Phaser.Signal} */ @@ -1613,7 +1613,7 @@ Phaser.Weapon.KILL_NEVER = 0; Phaser.Weapon.KILL_LIFESPAN = 1; /** -* A `bulletKillType` constant that automatically kills the bullets after they +* A `bulletKillType` constant that automatically kills the bullets after they * exceed the `bulletDistance` from their original firing position. * @constant * @type {integer} @@ -1664,7 +1664,7 @@ Phaser.Weapon.KILL_STATIC_BOUNDS = 6; * so be careful it doesn't grow too large. * * You can either set the texture key and frame here, or via the `Weapon.bulletKey` and `Weapon.bulletFrame` -* properties. You can also animate bullets, or set them to use random frames. All Bullets belonging to a +* properties. You can also animate bullets, or set them to use random frames. All Bullets belonging to a * single Weapon instance must share the same texture key however. * * @method Phaser.Weapon#createBullets @@ -1692,7 +1692,7 @@ Phaser.Weapon.prototype.createBullets = function (quantity, key, frame, group) { this.autoExpandBulletsGroup = true; quantity = 1; } - + this.bullets.createMultiple(quantity, key, frame); this.bullets.setAll('data.bulletManager', this); @@ -1910,7 +1910,7 @@ Phaser.Weapon.prototype.trackPointer = function (pointer, offsetX, offsetY) { * Attempts to fire a single Bullet. If there are no more bullets available in the pool, and the pool cannot be extended, * then this method returns `false`. It will also return false if not enough time has expired since the last time * the Weapon was fired, as defined in the `Weapon.fireRate` property. -* +* * Otherwise the first available bullet is selected and launched. * * The arguments are all optional, but allow you to control both where the bullet is launched from, and aimed at. @@ -2198,12 +2198,12 @@ Phaser.Weapon.prototype.setBulletBodyOffset = function (width, height, offsetX, /** * Sets the texture frames that the bullets can use when being launched. -* +* * This is intended for use when you've got numeric based frames, such as those loaded via a Sprite Sheet. -* +* * It works by calling `Phaser.ArrayUtils.numberArray` internally, using the min and max values * provided. Then it sets the frame index to be zero. -* +* * You can optionally set the cycle and random booleans, to allow bullets to cycle through the frames * when they're fired, or pick one at random. * @@ -2328,10 +2328,10 @@ Object.defineProperty(Phaser.Weapon.prototype, "bulletClass", { * * * `Phaser.Weapon.KILL_LIFESPAN` * The bullets are automatically killed when their `bulletLifespan` amount expires. -* +* * * `Phaser.Weapon.KILL_DISTANCE` * The bullets are automatically killed when they exceed `bulletDistance` pixels away from their original launch position. -* +* * * `Phaser.Weapon.KILL_WEAPON_BOUNDS` * The bullets are automatically killed when they no longer intersect with the `Weapon.bounds` rectangle. * @@ -2470,7 +2470,7 @@ Object.defineProperty(Phaser.Weapon.prototype, "y", { Documentation generated by JSDoc 3.3.3 - on Fri Jun 17 2016 12:45:29 GMT+0100 (BST) using the DocStrap template. + on Fri Jul 08 2016 15:42:35 GMT+0100 (GMT Daylight Time) using the DocStrap template. diff --git a/docs/src_sound_AudioSprite.js.html b/docs/src_sound_AudioSprite.js.html index f8fe115ae..559beeb9d 100644 --- a/docs/src_sound_AudioSprite.js.html +++ b/docs/src_sound_AudioSprite.js.html @@ -708,10 +708,6 @@ ComplexPrimitiveShader -
  • - DisplayObject -
  • -
  • DisplayObjectContainer
  • @@ -744,6 +740,10 @@ PIXI +
  • + DisplayObject +
  • +
  • PixiFastShader
  • @@ -1375,7 +1375,7 @@ Phaser.AudioSprite.prototype.constructor = Phaser.AudioSprite; Documentation generated by JSDoc 3.3.3 - on Fri Jun 17 2016 12:45:29 GMT+0100 (BST) using the DocStrap template. + on Fri Jul 08 2016 15:42:34 GMT+0100 (GMT Daylight Time) using the DocStrap template. diff --git a/docs/src_sound_Sound.js.html b/docs/src_sound_Sound.js.html index 0bdc6e8ad..db01d31a9 100644 --- a/docs/src_sound_Sound.js.html +++ b/docs/src_sound_Sound.js.html @@ -708,10 +708,6 @@ ComplexPrimitiveShader -
  • - DisplayObject -
  • -
  • DisplayObjectContainer
  • @@ -744,6 +740,10 @@ PIXI +
  • + DisplayObject +
  • +
  • PixiFastShader
  • @@ -1267,11 +1267,6 @@ Phaser.Sound = function (game, key, volume, loop, connect) { */ this.loop = loop; - /** - * @property {number} volume - The sound or sound marker volume. A value between 0 (silence) and 1 (full volume). - */ - this.volume = volume; - /** * @property {object} markers - The sound markers. */ @@ -1776,7 +1771,7 @@ Phaser.Sound.prototype = { { this._sound.disconnect(this.externalNode); } - else + else if (this.gainNode) { this._sound.disconnect(this.gainNode); } @@ -2114,7 +2109,7 @@ Phaser.Sound.prototype = { { this._sound.disconnect(this.externalNode); } - else + else if (this.gainNode) { this._sound.disconnect(this.gainNode); } @@ -2441,7 +2436,7 @@ Object.defineProperty(Phaser.Sound.prototype, "volume", { Documentation generated by JSDoc 3.3.3 - on Fri Jun 17 2016 12:45:29 GMT+0100 (BST) using the DocStrap template. + on Fri Jul 08 2016 15:42:35 GMT+0100 (GMT Daylight Time) using the DocStrap template. diff --git a/docs/src_sound_SoundManager.js.html b/docs/src_sound_SoundManager.js.html index 2ac4fe8d3..ebdde9fb1 100644 --- a/docs/src_sound_SoundManager.js.html +++ b/docs/src_sound_SoundManager.js.html @@ -708,10 +708,6 @@ ComplexPrimitiveShader -
  • - DisplayObject -
  • -
  • DisplayObjectContainer
  • @@ -744,6 +740,10 @@ PIXI +
  • + DisplayObject +
  • +
  • PixiFastShader
  • @@ -2098,7 +2098,7 @@ Object.defineProperty(Phaser.SoundManager.prototype, "volume", { Documentation generated by JSDoc 3.3.3 - on Fri Jun 17 2016 12:45:29 GMT+0100 (BST) using the DocStrap template. + on Fri Jul 08 2016 15:42:35 GMT+0100 (GMT Daylight Time) using the DocStrap template. diff --git a/docs/src_system_Canvas.js.html b/docs/src_system_Canvas.js.html index 612589617..9684e5ed3 100644 --- a/docs/src_system_Canvas.js.html +++ b/docs/src_system_Canvas.js.html @@ -708,10 +708,6 @@ ComplexPrimitiveShader -
  • - DisplayObject -
  • -
  • DisplayObjectContainer
  • @@ -744,6 +740,10 @@ PIXI +
  • + DisplayObject +
  • +
  • PixiFastShader
  • @@ -1255,14 +1255,7 @@ Phaser.Canvas = { width = width || 256; height = height || 256; - if (skipPool === undefined) - { - var canvas = PIXI.CanvasPool.create(parent, width, height); - } - else - { - var canvas = document.createElement('canvas'); - } + var canvas = (skipPool) ? document.createElement('canvas') : PIXI.CanvasPool.create(parent, width, height); if (typeof id === 'string' && id !== '') { @@ -1552,7 +1545,7 @@ Phaser.Canvas = { Documentation generated by JSDoc 3.3.3 - on Fri Jun 17 2016 12:45:29 GMT+0100 (BST) using the DocStrap template. + on Fri Jul 08 2016 15:42:34 GMT+0100 (GMT Daylight Time) using the DocStrap template. diff --git a/docs/src_system_DOM.js.html b/docs/src_system_DOM.js.html index d7ae75196..84b594f2b 100644 --- a/docs/src_system_DOM.js.html +++ b/docs/src_system_DOM.js.html @@ -708,10 +708,6 @@ ComplexPrimitiveShader -
  • - DisplayObject -
  • -
  • DisplayObjectContainer
  • @@ -744,6 +740,10 @@ PIXI +
  • + DisplayObject +
  • +
  • PixiFastShader
  • @@ -1677,7 +1677,7 @@ Phaser.Device.whenReady(function (device) { Documentation generated by JSDoc 3.3.3 - on Fri Jun 17 2016 12:45:29 GMT+0100 (BST) using the DocStrap template. + on Fri Jul 08 2016 15:42:34 GMT+0100 (GMT Daylight Time) using the DocStrap template. diff --git a/docs/src_system_Device.js.html b/docs/src_system_Device.js.html index 04aee1f1a..ddd129bc6 100644 --- a/docs/src_system_Device.js.html +++ b/docs/src_system_Device.js.html @@ -708,10 +708,6 @@ ComplexPrimitiveShader -
  • - DisplayObject -
  • -
  • DisplayObjectContainer
  • @@ -744,6 +740,10 @@ PIXI +
  • + DisplayObject +
  • +
  • PixiFastShader
  • @@ -2621,7 +2621,7 @@ Phaser.Device.isAndroidStockBrowser = function () { Documentation generated by JSDoc 3.3.3 - on Fri Jun 17 2016 12:45:29 GMT+0100 (BST) using the DocStrap template. + on Fri Jul 08 2016 15:42:34 GMT+0100 (GMT Daylight Time) using the DocStrap template. diff --git a/docs/src_system_RequestAnimationFrame.js.html b/docs/src_system_RequestAnimationFrame.js.html index cff97f643..c7c0e89cb 100644 --- a/docs/src_system_RequestAnimationFrame.js.html +++ b/docs/src_system_RequestAnimationFrame.js.html @@ -708,10 +708,6 @@ ComplexPrimitiveShader -
  • - DisplayObject -
  • -
  • DisplayObjectContainer
  • @@ -744,6 +740,10 @@ PIXI +
  • + DisplayObject +
  • +
  • PixiFastShader
  • @@ -1418,7 +1418,7 @@ Phaser.RequestAnimationFrame.prototype.constructor = Phaser.RequestAnimationFram Documentation generated by JSDoc 3.3.3 - on Fri Jun 17 2016 12:45:29 GMT+0100 (BST) using the DocStrap template. + on Fri Jul 08 2016 15:42:34 GMT+0100 (GMT Daylight Time) using the DocStrap template. diff --git a/docs/src_tilemap_ImageCollection.js.html b/docs/src_tilemap_ImageCollection.js.html index 428cbccc1..fcdb6252a 100644 --- a/docs/src_tilemap_ImageCollection.js.html +++ b/docs/src_tilemap_ImageCollection.js.html @@ -708,10 +708,6 @@ ComplexPrimitiveShader -
  • - DisplayObject -
  • -
  • DisplayObjectContainer
  • @@ -744,6 +740,10 @@ PIXI +
  • + DisplayObject +
  • +
  • PixiFastShader
  • @@ -1375,7 +1375,7 @@ Phaser.ImageCollection.prototype.constructor = Phaser.ImageCollection; Documentation generated by JSDoc 3.3.3 - on Fri Jun 17 2016 12:45:29 GMT+0100 (BST) using the DocStrap template. + on Fri Jul 08 2016 15:42:34 GMT+0100 (GMT Daylight Time) using the DocStrap template. diff --git a/docs/src_tilemap_Tile.js.html b/docs/src_tilemap_Tile.js.html index 2898d8ee4..13614e5cb 100644 --- a/docs/src_tilemap_Tile.js.html +++ b/docs/src_tilemap_Tile.js.html @@ -708,10 +708,6 @@ ComplexPrimitiveShader -
  • - DisplayObject -
  • -
  • DisplayObjectContainer
  • @@ -744,6 +740,10 @@ PIXI +
  • + DisplayObject +
  • +
  • PixiFastShader
  • @@ -1652,7 +1652,7 @@ Object.defineProperty(Phaser.Tile.prototype, "bottom", { Documentation generated by JSDoc 3.3.3 - on Fri Jun 17 2016 12:45:29 GMT+0100 (BST) using the DocStrap template. + on Fri Jul 08 2016 15:42:35 GMT+0100 (GMT Daylight Time) using the DocStrap template. diff --git a/docs/src_tilemap_Tilemap.js.html b/docs/src_tilemap_Tilemap.js.html index fbec4ba6f..13ae9f718 100644 --- a/docs/src_tilemap_Tilemap.js.html +++ b/docs/src_tilemap_Tilemap.js.html @@ -708,10 +708,6 @@ ComplexPrimitiveShader -
  • - DisplayObject -
  • -
  • DisplayObjectContainer
  • @@ -744,6 +740,10 @@ PIXI +
  • + DisplayObject +
  • +
  • PixiFastShader
  • @@ -3172,7 +3172,7 @@ Object.defineProperty(Phaser.Tilemap.prototype, "layer", { Documentation generated by JSDoc 3.3.3 - on Fri Jun 17 2016 12:45:29 GMT+0100 (BST) using the DocStrap template. + on Fri Jul 08 2016 15:42:35 GMT+0100 (GMT Daylight Time) using the DocStrap template. diff --git a/docs/src_tilemap_TilemapLayer.js.html b/docs/src_tilemap_TilemapLayer.js.html index 669f8d51f..4b1d5857d 100644 --- a/docs/src_tilemap_TilemapLayer.js.html +++ b/docs/src_tilemap_TilemapLayer.js.html @@ -708,10 +708,6 @@ ComplexPrimitiveShader -
  • - DisplayObject -
  • -
  • DisplayObjectContainer
  • @@ -744,6 +740,10 @@ PIXI +
  • + DisplayObject +
  • +
  • PixiFastShader
  • @@ -2085,8 +2085,6 @@ Phaser.TilemapLayer.prototype.renderRegion = function (scrollX, scrollY, left, t // xmax/ymax - remaining cells to render on column/row var tx, ty, x, y, xmax, ymax; - context.fillStyle = this.tileColor; - for (y = normStartY, ymax = bottom - top, ty = baseY; ymax >= 0; y++, ymax--, ty += th) @@ -2581,7 +2579,7 @@ Object.defineProperty(Phaser.TilemapLayer.prototype, "collisionHeight", { Documentation generated by JSDoc 3.3.3 - on Fri Jun 17 2016 12:45:29 GMT+0100 (BST) using the DocStrap template. + on Fri Jul 08 2016 15:42:35 GMT+0100 (GMT Daylight Time) using the DocStrap template. diff --git a/docs/src_tilemap_TilemapParser.js.html b/docs/src_tilemap_TilemapParser.js.html index 706ef9d94..e7faebf3d 100644 --- a/docs/src_tilemap_TilemapParser.js.html +++ b/docs/src_tilemap_TilemapParser.js.html @@ -708,10 +708,6 @@ ComplexPrimitiveShader -
  • - DisplayObject -
  • -
  • DisplayObjectContainer
  • @@ -744,6 +740,10 @@ PIXI +
  • + DisplayObject +
  • +
  • PixiFastShader
  • @@ -1251,6 +1251,33 @@ Phaser.TilemapParser = { */ INSERT_NULL: false, + /** + * A tiled flag that resides within the 32 bit of the object gid and + * indicates whether the tiled/object is flipped horizontally. + * + * @constant + * @type {number} + */ + FLIPPED_HORIZONTALLY_FLAG: 0x80000000, + + /** + * A tiled flag that resides within the 31 bit of the object gid and + * indicates whether the tiled/object is flipped vertically. + * + * @constant + * @type {number} + */ + FLIPPED_VERTICALLY_FLAG: 0x40000000, + + /** + * A tiled flag that resides within the 30 bit of the object gid and + * indicates whether the tiled/object is flipped diagonally. + * + * @constant + * @type {number} + */ + FLIPPED_DIAGONALLY_FLAG: 0x20000000, + /** * Parse tilemap data from the cache and creates a Tilemap object. * @@ -1731,6 +1758,8 @@ Phaser.TilemapParser = { // Object Tiles if (curo.objects[v].gid) { + var self = this; + var object = { gid: curo.objects[v].gid, @@ -1738,9 +1767,13 @@ Phaser.TilemapParser = { type: curo.objects[v].hasOwnProperty("type") ? curo.objects[v].type : "", x: curo.objects[v].x, y: curo.objects[v].y, + width: curo.objects[v].width, + height: curo.objects[v].height, visible: curo.objects[v].visible, - properties: curo.objects[v].properties - + properties: curo.objects[v].properties, + horizontallyFlipped: curo.objects[v].gid & self.FLIPPED_HORIZONTALLY_FLAG, + verticallyFlipped: curo.objects[v].gid & self.FLIPPED_VERTICALLY_FLAG, + diagonallyFlipped: curo.objects[v].gid & self.FLIPPED_DIAGONALLY_FLAG }; if (curo.objects[v].rotation) @@ -1934,7 +1967,7 @@ Phaser.TilemapParser = { Documentation generated by JSDoc 3.3.3 - on Fri Jun 17 2016 12:45:29 GMT+0100 (BST) using the DocStrap template. + on Fri Jul 08 2016 15:42:35 GMT+0100 (GMT Daylight Time) using the DocStrap template. diff --git a/docs/src_tilemap_Tileset.js.html b/docs/src_tilemap_Tileset.js.html index b0eae3d92..dec5d0e19 100644 --- a/docs/src_tilemap_Tileset.js.html +++ b/docs/src_tilemap_Tileset.js.html @@ -708,10 +708,6 @@ ComplexPrimitiveShader -
  • - DisplayObject -
  • -
  • DisplayObjectContainer
  • @@ -744,6 +740,10 @@ PIXI +
  • + DisplayObject +
  • +
  • PixiFastShader
  • @@ -1505,7 +1505,7 @@ Phaser.Tileset.prototype.constructor = Phaser.Tileset; Documentation generated by JSDoc 3.3.3 - on Fri Jun 17 2016 12:45:29 GMT+0100 (BST) using the DocStrap template. + on Fri Jul 08 2016 15:42:35 GMT+0100 (GMT Daylight Time) using the DocStrap template. diff --git a/docs/src_time_Time.js.html b/docs/src_time_Time.js.html index 5bff993e8..759a3982d 100644 --- a/docs/src_time_Time.js.html +++ b/docs/src_time_Time.js.html @@ -708,10 +708,6 @@ ComplexPrimitiveShader -
  • - DisplayObject -
  • -
  • DisplayObjectContainer
  • @@ -744,6 +740,10 @@ PIXI +
  • + DisplayObject +
  • +
  • PixiFastShader
  • @@ -1873,7 +1873,7 @@ Phaser.Time.prototype.constructor = Phaser.Time; Documentation generated by JSDoc 3.3.3 - on Fri Jun 17 2016 12:45:29 GMT+0100 (BST) using the DocStrap template. + on Fri Jul 08 2016 15:42:35 GMT+0100 (GMT Daylight Time) using the DocStrap template. diff --git a/docs/src_time_Timer.js.html b/docs/src_time_Timer.js.html index cdcfc631a..0287e21b5 100644 --- a/docs/src_time_Timer.js.html +++ b/docs/src_time_Timer.js.html @@ -708,10 +708,6 @@ ComplexPrimitiveShader -
  • - DisplayObject -
  • -
  • DisplayObjectContainer
  • @@ -744,6 +740,10 @@ PIXI +
  • + DisplayObject +
  • +
  • PixiFastShader
  • @@ -2001,7 +2001,7 @@ Phaser.Timer.prototype.constructor = Phaser.Timer; Documentation generated by JSDoc 3.3.3 - on Fri Jun 17 2016 12:45:29 GMT+0100 (BST) using the DocStrap template. + on Fri Jul 08 2016 15:42:35 GMT+0100 (GMT Daylight Time) using the DocStrap template. diff --git a/docs/src_time_TimerEvent.js.html b/docs/src_time_TimerEvent.js.html index a9c97ca60..725e1122e 100644 --- a/docs/src_time_TimerEvent.js.html +++ b/docs/src_time_TimerEvent.js.html @@ -708,10 +708,6 @@ ComplexPrimitiveShader -
  • - DisplayObject -
  • -
  • DisplayObjectContainer
  • @@ -744,6 +740,10 @@ PIXI +
  • + DisplayObject +
  • +
  • PixiFastShader
  • @@ -1325,7 +1325,7 @@ Phaser.TimerEvent.prototype.constructor = Phaser.TimerEvent; Documentation generated by JSDoc 3.3.3 - on Fri Jun 17 2016 12:45:29 GMT+0100 (BST) using the DocStrap template. + on Fri Jul 08 2016 15:42:35 GMT+0100 (GMT Daylight Time) using the DocStrap template. diff --git a/docs/src_tween_Easing.js.html b/docs/src_tween_Easing.js.html index 22df45ea5..5ddab9c0b 100644 --- a/docs/src_tween_Easing.js.html +++ b/docs/src_tween_Easing.js.html @@ -708,10 +708,6 @@ ComplexPrimitiveShader -
  • - DisplayObject -
  • -
  • DisplayObjectContainer
  • @@ -744,6 +740,10 @@ PIXI +
  • + DisplayObject +
  • +
  • PixiFastShader
  • @@ -1821,7 +1821,7 @@ Phaser.Easing.Power4 = Phaser.Easing.Quintic.Out; Documentation generated by JSDoc 3.3.3 - on Fri Jun 17 2016 12:45:29 GMT+0100 (BST) using the DocStrap template. + on Fri Jul 08 2016 15:42:34 GMT+0100 (GMT Daylight Time) using the DocStrap template. diff --git a/docs/src_tween_Tween.js.html b/docs/src_tween_Tween.js.html index 268972d4a..94bc9c2d0 100644 --- a/docs/src_tween_Tween.js.html +++ b/docs/src_tween_Tween.js.html @@ -708,10 +708,6 @@ ComplexPrimitiveShader -
  • - DisplayObject -
  • -
  • DisplayObjectContainer
  • @@ -744,6 +740,10 @@ PIXI +
  • + DisplayObject +
  • +
  • PixiFastShader
  • @@ -2159,7 +2159,7 @@ Phaser.Tween.prototype.constructor = Phaser.Tween; Documentation generated by JSDoc 3.3.3 - on Fri Jun 17 2016 12:45:29 GMT+0100 (BST) using the DocStrap template. + on Fri Jul 08 2016 15:42:35 GMT+0100 (GMT Daylight Time) using the DocStrap template. diff --git a/docs/src_tween_TweenData.js.html b/docs/src_tween_TweenData.js.html index 897942bee..1c758b815 100644 --- a/docs/src_tween_TweenData.js.html +++ b/docs/src_tween_TweenData.js.html @@ -708,10 +708,6 @@ ComplexPrimitiveShader -
  • - DisplayObject -
  • -
  • DisplayObjectContainer
  • @@ -744,6 +740,10 @@ PIXI +
  • + DisplayObject +
  • +
  • PixiFastShader
  • @@ -1823,7 +1823,7 @@ Phaser.TweenData.prototype.constructor = Phaser.TweenData; Documentation generated by JSDoc 3.3.3 - on Fri Jun 17 2016 12:45:29 GMT+0100 (BST) using the DocStrap template. + on Fri Jul 08 2016 15:42:35 GMT+0100 (GMT Daylight Time) using the DocStrap template. diff --git a/docs/src_tween_TweenManager.js.html b/docs/src_tween_TweenManager.js.html index 13db84016..a096aaea2 100644 --- a/docs/src_tween_TweenManager.js.html +++ b/docs/src_tween_TweenManager.js.html @@ -708,10 +708,6 @@ ComplexPrimitiveShader -
  • - DisplayObject -
  • -
  • DisplayObjectContainer
  • @@ -744,6 +740,10 @@ PIXI +
  • + DisplayObject +
  • +
  • PixiFastShader
  • @@ -1605,7 +1605,7 @@ Phaser.TweenManager.prototype.constructor = Phaser.TweenManager; Documentation generated by JSDoc 3.3.3 - on Fri Jun 17 2016 12:45:29 GMT+0100 (BST) using the DocStrap template. + on Fri Jul 08 2016 15:42:35 GMT+0100 (GMT Daylight Time) using the DocStrap template. diff --git a/docs/src_utils_ArraySet.js.html b/docs/src_utils_ArraySet.js.html index cfc5136be..e051f894f 100644 --- a/docs/src_utils_ArraySet.js.html +++ b/docs/src_utils_ArraySet.js.html @@ -708,10 +708,6 @@ ComplexPrimitiveShader -
  • - DisplayObject -
  • -
  • DisplayObjectContainer
  • @@ -744,6 +740,10 @@ PIXI +
  • + DisplayObject +
  • +
  • PixiFastShader
  • @@ -1526,7 +1526,7 @@ Phaser.ArraySet.prototype.constructor = Phaser.ArraySet; Documentation generated by JSDoc 3.3.3 - on Fri Jun 17 2016 12:45:29 GMT+0100 (BST) using the DocStrap template. + on Fri Jul 08 2016 15:42:34 GMT+0100 (GMT Daylight Time) using the DocStrap template. diff --git a/docs/src_utils_ArrayUtils.js.html b/docs/src_utils_ArrayUtils.js.html index de076b711..fa3f96d31 100644 --- a/docs/src_utils_ArrayUtils.js.html +++ b/docs/src_utils_ArrayUtils.js.html @@ -708,10 +708,6 @@ ComplexPrimitiveShader -
  • - DisplayObject -
  • -
  • DisplayObjectContainer
  • @@ -744,6 +740,10 @@ PIXI +
  • + DisplayObject +
  • +
  • PixiFastShader
  • @@ -1418,13 +1418,63 @@ Phaser.ArrayUtils = { }, + /** + * Moves the element from the end of the array to the start, shifting all items in the process. + * The "rotation" happens to the right. + * + * Before: `[ A, B, C, D, E, F ]` + * After: `[ F, A, B, C, D, E ]` + * + * See also Phaser.ArrayUtils.rotateLeft. + * + * @method Phaser.ArrayUtils.rotateRight + * @param {any[]} array - The array to rotate. The array is modified. + * @return {any} The shifted value. + */ + rotateRight: function (array) { + + var s = array.pop(); + array.unshift(s); + + return s; + + }, + /** * Moves the element from the start of the array to the end, shifting all items in the process. * The "rotation" happens to the left. * + * Before: `[ A, B, C, D, E, F ]` + * After: `[ B, C, D, E, F, A ]` + * + * See also Phaser.ArrayUtils.rotateRight + * + * @method Phaser.ArrayUtils.rotateLeft + * @param {any[]} array - The array to rotate. The array is modified. + * @return {any} The rotated value. + */ + rotateLeft: function (array) { + + var s = array.shift(); + array.push(s); + + return s; + + }, + + /** + * Moves the element from the start of the array to the end, shifting all items in the process. + * The "rotation" happens to the left. + * + * Before: `[ A, B, C, D, E, F ]` + * After: `[ B, C, D, E, F, A ]` + * + * See also Phaser.ArrayUtils.rotateRight + * * @method Phaser.ArrayUtils.rotate - * @param {any[]} array - The array to shift/rotate. The array is modified. - * @return {any} The shifted value. + * @deprecated Please use Phaser.ArrayUtils.rotate instead. + * @param {any[]} array - The array to rotate. The array is modified. + * @return {any} The rotated value. */ rotate: function (array) { @@ -1537,7 +1587,7 @@ Phaser.ArrayUtils = { Documentation generated by JSDoc 3.3.3 - on Fri Jun 17 2016 12:45:29 GMT+0100 (BST) using the DocStrap template. + on Fri Jul 08 2016 15:42:34 GMT+0100 (GMT Daylight Time) using the DocStrap template. diff --git a/docs/src_utils_Color.js.html b/docs/src_utils_Color.js.html index 9a74c1c41..31fdd5ccd 100644 --- a/docs/src_utils_Color.js.html +++ b/docs/src_utils_Color.js.html @@ -708,10 +708,6 @@ ComplexPrimitiveShader -
  • - DisplayObject -
  • -
  • DisplayObjectContainer
  • @@ -744,6 +740,10 @@ PIXI +
  • + DisplayObject +
  • +
  • PixiFastShader
  • @@ -1367,6 +1367,23 @@ Phaser.Color = { }, + /** + * Converts RGBA components to a 32 bit integer in AABBGGRR format. + * + * @method Phaser.Color.toABGR + * @static + * @param {number} r - The red color component, in the range 0 - 255. + * @param {number} g - The green color component, in the range 0 - 255. + * @param {number} b - The blue color component, in the range 0 - 255. + * @param {number} a - The alpha color component, in the range 0 - 255. + * @return {number} A RGBA-packed 32 bit integer + */ + toABGR: function (r, g, b, a) { + + return ((a << 24) | (b << 16) | (g << 8) | r) >>> 0; + + }, + /** * Converts an RGB color value to HSL (hue, saturation and lightness). * Conversion forumla from http://en.wikipedia.org/wiki/HSL_color_space. @@ -2584,7 +2601,7 @@ Phaser.Color = { Documentation generated by JSDoc 3.3.3 - on Fri Jun 17 2016 12:45:29 GMT+0100 (BST) using the DocStrap template. + on Fri Jul 08 2016 15:42:34 GMT+0100 (GMT Daylight Time) using the DocStrap template. diff --git a/docs/src_utils_Debug.js.html b/docs/src_utils_Debug.js.html index af53b8675..cb76155ee 100644 --- a/docs/src_utils_Debug.js.html +++ b/docs/src_utils_Debug.js.html @@ -708,10 +708,6 @@ ComplexPrimitiveShader -
  • - DisplayObject -
  • -
  • DisplayObjectContainer
  • @@ -744,6 +740,10 @@ PIXI +
  • + DisplayObject +
  • +
  • PixiFastShader
  • @@ -1232,10 +1232,15 @@ /** * A collection of methods for displaying debug information about game objects. +* +* If your game is running in Canvas mode, then you should invoke all of the Debug methods from +* your games `render` function. This is because they are drawn directly onto the game canvas +* itself, so if you call any debug methods outside of `render` they are likely to be overwritten +* by the game itself. +* * If your game is running in WebGL then Debug will create a Sprite that is placed at the top of the Stage display list and bind a canvas texture * to it, which must be uploaded every frame. Be advised: this is very expensive, especially in browsers like Firefox. So please only enable Debug * in WebGL mode if you really need it (or your desktop can cope with it well) and disable it for production! -* If your game is using a Canvas renderer then the debug information is literally drawn on the top of the active game canvas and no Sprite is used. * * @class Phaser.Utils.Debug * @constructor @@ -1330,7 +1335,7 @@ Phaser.Utils.Debug.prototype = { } else { - this.bmd = this.game.make.bitmapData(this.game.width, this.game.height); + this.bmd = new Phaser.BitmapData(this.game, '__DEBUG', this.game.width, this.game.height, true); this.sprite = this.game.make.image(0, 0, this.bmd); this.game.stage.addChild(this.sprite); @@ -2130,7 +2135,7 @@ Phaser.Utils.Debug.prototype.constructor = Phaser.Utils.Debug; Documentation generated by JSDoc 3.3.3 - on Fri Jun 17 2016 12:45:29 GMT+0100 (BST) using the DocStrap template. + on Fri Jul 08 2016 15:42:34 GMT+0100 (GMT Daylight Time) using the DocStrap template. diff --git a/docs/src_utils_LinkedList.js.html b/docs/src_utils_LinkedList.js.html index bfba50362..decf14d35 100644 --- a/docs/src_utils_LinkedList.js.html +++ b/docs/src_utils_LinkedList.js.html @@ -708,10 +708,6 @@ ComplexPrimitiveShader -
  • - DisplayObject -
  • -
  • DisplayObjectContainer
  • @@ -744,6 +740,10 @@ PIXI +
  • + DisplayObject +
  • +
  • PixiFastShader
  • @@ -1433,7 +1433,7 @@ Phaser.LinkedList.prototype.constructor = Phaser.LinkedList; Documentation generated by JSDoc 3.3.3 - on Fri Jun 17 2016 12:45:29 GMT+0100 (BST) using the DocStrap template. + on Fri Jul 08 2016 15:42:34 GMT+0100 (GMT Daylight Time) using the DocStrap template. diff --git a/docs/src_utils_Utils.js.html b/docs/src_utils_Utils.js.html index d52348039..cfba8f369 100644 --- a/docs/src_utils_Utils.js.html +++ b/docs/src_utils_Utils.js.html @@ -708,10 +708,6 @@ ComplexPrimitiveShader -
  • - DisplayObject -
  • -
  • DisplayObjectContainer
  • @@ -744,6 +740,10 @@ PIXI +
  • + DisplayObject +
  • +
  • PixiFastShader
  • @@ -1236,6 +1236,20 @@ */ Phaser.Utils = { + /** + * Takes the given string and reverses it, returning the reversed string. + * For example if given the string `Atari 520ST` it would return `TS025 iratA`. + * + * @method Phaser.Utils.reverseString + * @param {string} string - The string to be reversed. + * @return {string} The reversed string. + */ + reverseString: function (string) { + + return string.split('').reverse().join(''); + + }, + /** * Gets an objects property by string. * @@ -1371,14 +1385,31 @@ Phaser.Utils = { }, /** - * JavaScript string pad http://www.webtoolkit.info/. + * Takes the given string and pads it out, to the length required, using the character + * specified. For example if you need a string to be 6 characters long, you can call: + * + * `pad('bob', 6, '-', 2)` + * + * This would return: `bob---` as it has padded it out to 6 characters, using the `-` on the right. + * + * You can also use it to pad numbers (they are always returned as strings): + * + * `pad(512, 6, '0', 1)` + * + * Would return: `000512` with the string padded to the left. + * + * If you don't specify a direction it'll pad to both sides: + * + * `pad('c64', 7, '*')` + * + * Would return: `**c64**` * * @method Phaser.Utils.pad - * @param {string} str - The target string. + * @param {string} str - The target string. `toString()` will be called on the string, which means you can also pass in common data types like numbers. * @param {integer} [len=0] - The number of characters to be added. * @param {string} [pad=" "] - The string to pad it out with (defaults to a space). - * @param {integer} [dir=3] The direction dir = 1 (left), 2 (right), 3 (both). - * @return {string} The padded string + * @param {integer} [dir=3] - The direction dir = 1 (left), 2 (right), 3 (both). + * @return {string} The padded string. */ pad: function (str, len, pad, dir) { @@ -1386,6 +1417,8 @@ Phaser.Utils = { if (pad === undefined) { var pad = ' '; } if (dir === undefined) { var dir = 3; } + str = str.toString(); + var padlen = 0; if (len + 1 >= str.length) @@ -1651,7 +1684,7 @@ Phaser.Utils = { Documentation generated by JSDoc 3.3.3 - on Fri Jun 17 2016 12:45:29 GMT+0100 (BST) using the DocStrap template. + on Fri Jul 08 2016 15:42:35 GMT+0100 (GMT Daylight Time) using the DocStrap template. diff --git a/package.json b/package.json index ee228ece9..e20532efc 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "phaser", - "version": "2.5.0", - "release": "Five Kings", + "version": "2.5.1", + "release": "Fal Moran", "description": "A fast, free and fun HTML5 Game Framework for Desktop and Mobile web browsers.", "author": "Richard Davey (http://www.photonstorm.com)", "logo": "https://raw.github.com/photonstorm/phaser/master/phaser-logo-small.png", @@ -46,6 +46,7 @@ "typescript": "1.4.1", "yuidocjs": "^0.3.50" }, + "typings": "./typescript/typings.json", "typescript": { "definitions": [ "typescript/p2.d.ts", diff --git a/resources/Project Templates/Full Screen Mobile/index.html b/resources/Project Templates/Full Screen Mobile/index.html index 9a979cd65..adef3e0d2 100644 --- a/resources/Project Templates/Full Screen Mobile/index.html +++ b/resources/Project Templates/Full Screen Mobile/index.html @@ -10,7 +10,7 @@ - + diff --git a/resources/release-names.txt b/resources/release-names.txt index 2842389b8..d37ad5c04 100644 --- a/resources/release-names.txt +++ b/resources/release-names.txt @@ -70,7 +70,7 @@ POI: Plain of Lances, World's End, Banikhan Mountains Shienar * -Capital: Fal Moran +Capital: Fal Moran * Cities: Ankor Dail, Camron Caan, Fal Dara, Fal Eisen, Fal Sion, Medo, Mos Shirare * Tarabon diff --git a/resources/tutorials/01 Getting Started/hellophaser.zip b/resources/tutorials/01 Getting Started/hellophaser.zip old mode 100644 new mode 100755 index 45769f495..5675be4b6 Binary files a/resources/tutorials/01 Getting Started/hellophaser.zip and b/resources/tutorials/01 Getting Started/hellophaser.zip differ diff --git a/resources/tutorials/01 Getting Started/hellophaser/index.html b/resources/tutorials/01 Getting Started/hellophaser/index.html index 526d4e839..3c10d74c9 100644 --- a/resources/tutorials/01 Getting Started/hellophaser/index.html +++ b/resources/tutorials/01 Getting Started/hellophaser/index.html @@ -3,7 +3,7 @@ hello phaser! - + @@ -11,6 +11,10 @@ window.onload = function() { + // Note that this html file is set to pull down Phaser 2.5.0 from the JS Delivr CDN. + // Although it will work fine with this tutorial, it's almost certainly not the most current version. + // Be sure to replace it with an updated version before you start experimenting with adding your own code. + var game = new Phaser.Game(800, 600, Phaser.AUTO, '', { preload: preload, create: create }); function preload () { diff --git a/src/Phaser.js b/src/Phaser.js index 88d1a6fbe..027869f27 100644 --- a/src/Phaser.js +++ b/src/Phaser.js @@ -15,7 +15,7 @@ var Phaser = Phaser || { * @constant * @type {string} */ - VERSION: '2.5.0', + VERSION: '2.6.0', /** * An array of Phaser game instances. diff --git a/src/animation/Animation.js b/src/animation/Animation.js index f0e433085..32b9638c3 100644 --- a/src/animation/Animation.js +++ b/src/animation/Animation.js @@ -306,7 +306,7 @@ Phaser.Animation.prototype = { { for (var i = 0; i < this._frames.length; i++) { - if (this._frames[i] === frameIndex) + if (this._frames[i] === frameId) { frameIndex = i; } diff --git a/src/animation/AnimationManager.js b/src/animation/AnimationManager.js index edd76e6c1..db8ee0c9b 100644 --- a/src/animation/AnimationManager.js +++ b/src/animation/AnimationManager.js @@ -400,7 +400,7 @@ Phaser.AnimationManager.prototype = { refreshFrame: function () { // TODO - this.sprite.setTexture(PIXI.TextureCache[this.currentFrame.uuid]); + // this.sprite.setTexture(PIXI.TextureCache[this.currentFrame.uuid]); }, diff --git a/src/core/Group.js b/src/core/Group.js index fd2aa93c8..5ec2502d2 100644 --- a/src/core/Group.js +++ b/src/core/Group.js @@ -775,6 +775,8 @@ Phaser.Group.prototype.align = function (rows, columns, cellWidth, cellHeight, p else { // We keep laying them out until we hit the column limit + r.x += cellWidth; + if (r.x === w) { r.x = 0; @@ -2205,17 +2207,24 @@ Phaser.Group.prototype.getBottom = function () { }; /** -* Get the closest child to given Object. +* Get the closest child to given Object, with optional callback to filter children. * * This can be a Sprite, Group, Image or any object with public x and y properties. * * 'close' is determined by the distance from the objects `x` and `y` properties compared to the childs `x` and `y` properties. * +* You can use the optional `callback` argument to apply your own filter to the distance checks. +* If the child is closer then the previous child, it will be sent to `callback` as the first argument, +* with the distance as the second. The callback should return `true` if it passes your +* filtering criteria, otherwise it should return `false`. +* * @method Phaser.Group#getClosestTo * @param {any} object - The object used to determine the distance. This can be a Sprite, Group, Image or any object with public x and y properties. -* @return {any} The child closest to given object, or null if no child was found. +* @param {function} [callback] - The function that each child will be evaluated against. Each child of the group will be passed to it as its first parameter, with the distance as the second. It should return `true` if the child passes the matching criteria. +* @param {object} [callbackContext] - The context in which the function should be called (usually 'this'). +* @return {any} The child closest to given object, or `null` if no child was found. */ -Phaser.Group.prototype.getClosestTo = function (object) { +Phaser.Group.prototype.getClosestTo = function (object, callback, callbackContext) { var distance = Number.MAX_VALUE; var tempDistance = 0; @@ -2229,7 +2238,7 @@ Phaser.Group.prototype.getClosestTo = function (object) { { tempDistance = Math.abs(Phaser.Point.distance(object, child)); - if (tempDistance < distance) + if (tempDistance < distance && (!callback || callback.call(callbackContext, child, tempDistance))) { distance = tempDistance; result = child; @@ -2242,17 +2251,24 @@ Phaser.Group.prototype.getClosestTo = function (object) { }; /** -* Get the child furthest away from the given Object. +* Get the child furthest away from the given Object, with optional callback to filter children. * * This can be a Sprite, Group, Image or any object with public x and y properties. * * 'furthest away' is determined by the distance from the objects `x` and `y` properties compared to the childs `x` and `y` properties. * +* You can use the optional `callback` argument to apply your own filter to the distance checks. +* If the child is closer then the previous child, it will be sent to `callback` as the first argument, +* with the distance as the second. The callback should return `true` if it passes your +* filtering criteria, otherwise it should return `false`. +* * @method Phaser.Group#getFurthestFrom * @param {any} object - The object used to determine the distance. This can be a Sprite, Group, Image or any object with public x and y properties. -* @return {any} The child furthest from the given object, or null if no child was found. +* @param {function} [callback] - The function that each child will be evaluated against. Each child of the group will be passed to it as its first parameter, with the distance as the second. It should return `true` if the child passes the matching criteria. +* @param {object} [callbackContext] - The context in which the function should be called (usually 'this'). +* @return {any} The child furthest from the given object, or `null` if no child was found. */ -Phaser.Group.prototype.getFurthestFrom = function (object) { +Phaser.Group.prototype.getFurthestFrom = function (object, callback, callbackContext) { var distance = 0; var tempDistance = 0; @@ -2266,7 +2282,7 @@ Phaser.Group.prototype.getFurthestFrom = function (object) { { tempDistance = Math.abs(Phaser.Point.distance(object, child)); - if (tempDistance > distance) + if (tempDistance > distance && (!callback || callback.call(callbackContext, child, tempDistance))) { distance = tempDistance; result = child; @@ -2598,6 +2614,289 @@ Object.defineProperty(Phaser.Group.prototype, "angle", { }); +/** +* The center x coordinate of this Group. +* +* It is derived by calling `getBounds`, calculating the Groups dimensions based on its +* visible children. +* +* Note that no ancestors are factored into the result, meaning that if this Group is +* nested within another Group, with heavy transforms on it, the result of this property +* is likely to be incorrect. It is safe to get and set this property if the Group is a +* top-level descendant of Phaser.World, or untransformed parents. +* +* @name Phaser.Group#centerX +* @property {number} centerX +*/ +Object.defineProperty(Phaser.Group.prototype, "centerX", { + + get: function () { + + return this.getBounds().centerX; + + }, + + set: function (value) { + + var r = this.getBounds(); + var offset = this.x - r.x; + + this.x = (value + offset) - r.halfWidth; + + } + +}); + +/** +* The center y coordinate of this Group. +* +* It is derived by calling `getBounds`, calculating the Groups dimensions based on its +* visible children. +* +* Note that no ancestors are factored into the result, meaning that if this Group is +* nested within another Group, with heavy transforms on it, the result of this property +* is likely to be incorrect. It is safe to get and set this property if the Group is a +* top-level descendant of Phaser.World, or untransformed parents. +* +* @name Phaser.Group#centerY +* @property {number} centerY +*/ +Object.defineProperty(Phaser.Group.prototype, "centerY", { + + get: function () { + + return this.getBounds().centerY; + + }, + + set: function (value) { + + var r = this.getBounds(); + var offset = this.y - r.y; + + this.y = (value + offset) - r.halfHeight; + + } + +}); + +/** +* The left coordinate of this Group. +* +* It is derived by calling `getBounds`, calculating the Groups dimensions based on its +* visible children. +* +* Note that no ancestors are factored into the result, meaning that if this Group is +* nested within another Group, with heavy transforms on it, the result of this property +* is likely to be incorrect. It is safe to get and set this property if the Group is a +* top-level descendant of Phaser.World, or untransformed parents. +* +* @name Phaser.Group#left +* @property {number} left +*/ +Object.defineProperty(Phaser.Group.prototype, "left", { + + get: function () { + + return this.getBounds().left; + + }, + + set: function (value) { + + var r = this.getBounds(); + var offset = this.x - r.x; + + this.x = value + offset; + + } + +}); + +/** +* The right coordinate of this Group. +* +* It is derived by calling `getBounds`, calculating the Groups dimensions based on its +* visible children. +* +* Note that no ancestors are factored into the result, meaning that if this Group is +* nested within another Group, with heavy transforms on it, the result of this property +* is likely to be incorrect. It is safe to get and set this property if the Group is a +* top-level descendant of Phaser.World, or untransformed parents. +* +* @name Phaser.Group#right +* @property {number} right +*/ +Object.defineProperty(Phaser.Group.prototype, "right", { + + get: function () { + + return this.getBounds().right; + + }, + + set: function (value) { + + var r = this.getBounds(); + var offset = this.x - r.x; + + this.x = (value + offset) - r.width; + + } + +}); + +/** +* The top coordinate of this Group. +* +* It is derived by calling `getBounds`, calculating the Groups dimensions based on its +* visible children. +* +* Note that no ancestors are factored into the result, meaning that if this Group is +* nested within another Group, with heavy transforms on it, the result of this property +* is likely to be incorrect. It is safe to get and set this property if the Group is a +* top-level descendant of Phaser.World, or untransformed parents. +* +* @name Phaser.Group#top +* @property {number} top +*/ +Object.defineProperty(Phaser.Group.prototype, "top", { + + get: function () { + + return this.getBounds().top; + + }, + + set: function (value) { + + var r = this.getBounds(); + var offset = this.y - r.y; + + this.y = (value + offset); + + } + +}); + +/** +* The bottom coordinate of this Group. +* +* It is derived by calling `getBounds`, calculating the Groups dimensions based on its +* visible children. +* +* Note that no ancestors are factored into the result, meaning that if this Group is +* nested within another Group, with heavy transforms on it, the result of this property +* is likely to be incorrect. It is safe to get and set this property if the Group is a +* top-level descendant of Phaser.World, or untransformed parents. +* +* @name Phaser.Group#bottom +* @property {number} bottom +*/ +Object.defineProperty(Phaser.Group.prototype, "bottom", { + + get: function () { + + return this.getBounds().bottom; + + }, + + set: function (value) { + + var r = this.getBounds(); + var offset = this.y - r.y; + + this.y = (value + offset) - r.height; + + } + +}); + +/** +* Aligns this Group within another Game Object, or Rectangle, known as the +* 'container', to one of 9 possible positions. +* +* The container must be a Game Object, or Phaser.Rectangle object. This can include properties +* such as `World.bounds` or `Camera.view`, for aligning Groups within the world +* and camera bounds. Or it can include other Sprites, Images, Text objects, BitmapText, +* TileSprites or Buttons. +* +* Please note that aligning a Group to another Game Object does **not** make it a child of +* the container. It simply modifies its position coordinates so it aligns with it. +* +* The position constants you can use are: +* +* `Phaser.TOP_LEFT`, `Phaser.TOP_CENTER`, `Phaser.TOP_RIGHT`, `Phaser.LEFT_CENTER`, +* `Phaser.CENTER`, `Phaser.RIGHT_CENTER`, `Phaser.BOTTOM_LEFT`, +* `Phaser.BOTTOM_CENTER` and `Phaser.BOTTOM_RIGHT`. +* +* Groups are placed in such a way that their _bounds_ align with the +* container, taking into consideration rotation and scale of its children. +* This allows you to neatly align Groups, irrespective of their position value. +* +* The optional `offsetX` and `offsetY` arguments allow you to apply extra spacing to the final +* aligned position of the Group. For example: +* +* `group.alignIn(background, Phaser.BOTTOM_RIGHT, -20, -20)` +* +* Would align the `group` to the bottom-right, but moved 20 pixels in from the corner. +* Think of the offsets as applying an adjustment to the containers bounds before the alignment takes place. +* So providing a negative offset will 'shrink' the container bounds by that amount, and providing a positive +* one expands it. +* +* @method Phaser.Group#alignIn +* @param {Phaser.Rectangle|Phaser.Sprite|Phaser.Image|Phaser.Text|Phaser.BitmapText|Phaser.Button|Phaser.Graphics|Phaser.TileSprite} container - The Game Object or Rectangle with which to align this Group to. Can also include properties such as `World.bounds` or `Camera.view`. +* @param {integer} [position] - The position constant. One of `Phaser.TOP_LEFT` (default), `Phaser.TOP_CENTER`, `Phaser.TOP_RIGHT`, `Phaser.LEFT_CENTER`, `Phaser.CENTER`, `Phaser.RIGHT_CENTER`, `Phaser.BOTTOM_LEFT`, `Phaser.BOTTOM_CENTER` or `Phaser.BOTTOM_RIGHT`. +* @param {integer} [offsetX=0] - A horizontal adjustment of the Containers bounds, applied to the aligned position of the Game Object. Use a negative value to shrink the bounds, positive to increase it. +* @param {integer} [offsetY=0] - A vertical adjustment of the Containers bounds, applied to the aligned position of the Game Object. Use a negative value to shrink the bounds, positive to increase it. +* @return {Phaser.Group} This Group. +*/ + +// This function is set at the bottom of src/gameobjects/components/Bounds.js + +/** +* Aligns this Group to the side of another Game Object, or Rectangle, known as the +* 'parent', in one of 11 possible positions. +* +* The parent must be a Game Object, or Phaser.Rectangle object. This can include properties +* such as `World.bounds` or `Camera.view`, for aligning Groups within the world +* and camera bounds. Or it can include other Sprites, Images, Text objects, BitmapText, +* TileSprites or Buttons. +* +* Please note that aligning a Group to another Game Object does **not** make it a child of +* the parent. It simply modifies its position coordinates so it aligns with it. +* +* The position constants you can use are: +* +* `Phaser.TOP_LEFT` (default), `Phaser.TOP_CENTER`, `Phaser.TOP_RIGHT`, `Phaser.LEFT_TOP`, +* `Phaser.LEFT_CENTER`, `Phaser.LEFT_BOTTOM`, `Phaser.RIGHT_TOP`, `Phaser.RIGHT_CENTER`, +* `Phaser.RIGHT_BOTTOM`, `Phaser.BOTTOM_LEFT`, `Phaser.BOTTOM_CENTER` +* and `Phaser.BOTTOM_RIGHT`. +* +* Groups are placed in such a way that their _bounds_ align with the +* parent, taking into consideration rotation and scale of the children. +* This allows you to neatly align Groups, irrespective of their position value. +* +* The optional `offsetX` and `offsetY` arguments allow you to apply extra spacing to the final +* aligned position of the Group. For example: +* +* `group.alignTo(background, Phaser.BOTTOM_RIGHT, -20, -20)` +* +* Would align the `group` to the bottom-right, but moved 20 pixels in from the corner. +* Think of the offsets as applying an adjustment to the parents bounds before the alignment takes place. +* So providing a negative offset will 'shrink' the parent bounds by that amount, and providing a positive +* one expands it. +* +* @method Phaser.Group#alignTo +* @param {Phaser.Rectangle|Phaser.Sprite|Phaser.Image|Phaser.Text|Phaser.BitmapText|Phaser.Button|Phaser.Graphics|Phaser.TileSprite} parent - The Game Object or Rectangle with which to align this Group to. Can also include properties such as `World.bounds` or `Camera.view`. +* @param {integer} [position] - The position constant. One of `Phaser.TOP_LEFT`, `Phaser.TOP_CENTER`, `Phaser.TOP_RIGHT`, `Phaser.LEFT_TOP`, `Phaser.LEFT_CENTER`, `Phaser.LEFT_BOTTOM`, `Phaser.RIGHT_TOP`, `Phaser.RIGHT_CENTER`, `Phaser.RIGHT_BOTTOM`, `Phaser.BOTTOM_LEFT`, `Phaser.BOTTOM_CENTER` or `Phaser.BOTTOM_RIGHT`. +* @param {integer} [offsetX=0] - A horizontal adjustment of the Containers bounds, applied to the aligned position of the Game Object. Use a negative value to shrink the bounds, positive to increase it. +* @param {integer} [offsetY=0] - A vertical adjustment of the Containers bounds, applied to the aligned position of the Game Object. Use a negative value to shrink the bounds, positive to increase it. +* @return {Phaser.Group} This Group. +*/ + +// This function is set at the bottom of src/gameobjects/components/Bounds.js + /** * A display object is any object that can be rendered in the Phaser/pixi.js scene graph. * diff --git a/src/gameobjects/BitmapData.js b/src/gameobjects/BitmapData.js index 2291ae85c..04a807be5 100644 --- a/src/gameobjects/BitmapData.js +++ b/src/gameobjects/BitmapData.js @@ -19,11 +19,13 @@ * @param {string} key - Internal Phaser reference key for the BitmapData. * @param {number} [width=256] - The width of the BitmapData in pixels. If undefined or zero it's set to a default value. * @param {number} [height=256] - The height of the BitmapData in pixels. If undefined or zero it's set to a default value. +* @param {boolean} [skipPool=false] - When this BitmapData generates its internal canvas to use for rendering, it will get the canvas from the CanvasPool if false, or create its own if true. */ -Phaser.BitmapData = function (game, key, width, height) { +Phaser.BitmapData = function (game, key, width, height, skipPool) { if (width === undefined || width === 0) { width = 256; } if (height === undefined || height === 0) { height = 256; } + if (skipPool === undefined) { skipPool = false; } /** * @property {Phaser.Game} game - A reference to the currently running game. @@ -49,7 +51,7 @@ Phaser.BitmapData = function (game, key, width, height) { * @property {HTMLCanvasElement} canvas - The canvas to which this BitmapData draws. * @default */ - this.canvas = PIXI.CanvasPool.create(this, width, height); + this.canvas = Phaser.Canvas.create(this, width, height, null, skipPool); /** * @property {CanvasRenderingContext2D} context - The 2d context of the canvas. @@ -1551,7 +1553,13 @@ Phaser.BitmapData.prototype = { /** * Draws the given Phaser.Sprite, Phaser.Image or Phaser.Text to this BitmapData at the coordinates specified. * You can use the optional width and height values to 'stretch' the sprite as it is drawn. This uses drawImage stretching, not scaling. - * When drawing it will take into account the Sprites rotation, scale and alpha values. + * + * The children will be drawn at their `x` and `y` world space coordinates. If this is outside the bounds of the BitmapData they won't be visible. + * When drawing it will take into account the rotation, scale, scaleMode, alpha and tint values. + * + * Note: You should ensure that at least 1 full update has taken place before calling this, + * otherwise the objects are likely to render incorrectly, if at all. + * You can trigger an update yourself by calling `stage.updateTransform()` before calling `draw`. * * @method Phaser.BitmapData#draw * @param {Phaser.Sprite|Phaser.Image|Phaser.Text|Phaser.RenderTexture} source - The Sprite, Image or Text object to draw onto this BitmapData. @@ -1582,7 +1590,7 @@ Phaser.BitmapData.prototype = { * * Note: You should ensure that at least 1 full update has taken place before calling this, * otherwise the objects are likely to render incorrectly, if at all. - * You can trigger an update yourself by calling `stage.updateTransform()` before calling `drawGroup`. + * You can trigger an update yourself by calling `stage.updateTransform()` before calling `drawGroup`. * * @method Phaser.BitmapData#drawGroup * @param {Phaser.Group} group - The Group to draw onto this BitmapData. Can also be Phaser.World. diff --git a/src/gameobjects/Creature.js b/src/gameobjects/Creature.js index 6d98b86bd..c0706d249 100644 --- a/src/gameobjects/Creature.js +++ b/src/gameobjects/Creature.js @@ -81,7 +81,7 @@ Phaser.Creature = function (game, x, y, key, mesh, animation) { if (typeof key === 'string') { - var texture = game.cache.getPixiTexture(key); + var texture = new PIXI.Texture(game.cache.getBaseTexture(key)); } else { diff --git a/src/gameobjects/Graphics.js b/src/gameobjects/Graphics.js index 6e6c21f4e..b2c51c7c2 100644 --- a/src/gameobjects/Graphics.js +++ b/src/gameobjects/Graphics.js @@ -5,7 +5,29 @@ */ /** -* Creates a new `Graphics` object. +* A Graphics object is a way to draw primitives to your game. Primitives include forms of geometry, such as Rectangles, +* Circles and Polygons. They also include lines, arcs and curves. When you initially create a Graphics object it will +* be empty. To 'draw' to it you first specify a lineStyle or fillStyle (or both), and then draw a shape. For example: +* +* ``` +* graphics.beginFill(0xff0000); +* graphics.drawCircle(50, 50, 100); +* graphics.endFill(); +* ``` +* +* This will draw a circle shape to the Graphics object, with a diameter of 100, located at x: 50, y: 50. +* +* When a Graphics object is rendered it will render differently based on if the game is running under Canvas or +* WebGL. Under Canvas it will use the HTML Canvas context drawing operations to draw the path. Under WebGL the +* graphics data is decomposed into polygons. Both of these are expensive processes, especially with complex shapes. +* +* If your Graphics object doesn't change much (or at all) once you've drawn your shape to it, then you will help +* performance by calling `Graphics.generateTexture`. This will 'bake' the Graphics object into a Texture, and return it. +* You can then use this Texture for Sprites or other display objects. If your Graphics object updates frequently then +* you should avoid doing this, as it will constantly generate new textures, which will consume memory. +* +* As you can tell, Graphics objects are a bit of a trade-off. While they are extremely useful, you need to be careful +* in their complexity and quantity of them in your game. * * @class Phaser.Graphics * @constructor diff --git a/src/gameobjects/Image.js b/src/gameobjects/Image.js index 0365d12bd..5e5fb3841 100644 --- a/src/gameobjects/Image.js +++ b/src/gameobjects/Image.js @@ -45,7 +45,7 @@ Phaser.Image = function (game, x, y, key, frame) { */ this.type = Phaser.IMAGE; - PIXI.Sprite.call(this, PIXI.TextureCache['__default']); + PIXI.Sprite.call(this, Phaser.Cache.DEFAULT); Phaser.Component.Core.init.call(this, game, x, y, key, frame); diff --git a/src/gameobjects/Rope.js b/src/gameobjects/Rope.js index 70f621250..80d811b9d 100644 --- a/src/gameobjects/Rope.js +++ b/src/gameobjects/Rope.js @@ -56,7 +56,7 @@ Phaser.Rope = function (game, x, y, key, frame, points) { */ this.type = Phaser.ROPE; - PIXI.Rope.call(this, PIXI.TextureCache['__default'], this.points); + PIXI.Rope.call(this, Phaser.Cache.DEFAULT, this.points); Phaser.Component.Core.init.call(this, game, x, y, key, frame); diff --git a/src/gameobjects/Sprite.js b/src/gameobjects/Sprite.js index 65b6c32e3..e8ea0c4f9 100644 --- a/src/gameobjects/Sprite.js +++ b/src/gameobjects/Sprite.js @@ -60,7 +60,7 @@ Phaser.Sprite = function (game, x, y, key, frame) { */ this.physicsType = Phaser.SPRITE; - PIXI.Sprite.call(this, PIXI.TextureCache['__default']); + PIXI.Sprite.call(this, Phaser.Cache.DEFAULT); Phaser.Component.Core.init.call(this, game, x, y, key, frame); diff --git a/src/gameobjects/Text.js b/src/gameobjects/Text.js index b5f5e6624..6104ec9c8 100644 --- a/src/gameobjects/Text.js +++ b/src/gameobjects/Text.js @@ -1250,18 +1250,34 @@ Phaser.Text.prototype.componentsToFont = function (components) { }; /** - * The text to be displayed by this Text object. - * Use a \n to insert a carriage return and split the text. - * The text will be rendered with any style currently set. - * - * @method Phaser.Text#setText - * @param {string} [text] - The text to be displayed. Set to an empty string to clear text that is already present. - * @return {Phaser.Text} This Text instance. - */ -Phaser.Text.prototype.setText = function (text) { +* The text to be displayed by this Text object. +* Use a \n to insert a carriage return and split the text. +* The text will be rendered with any style currently set. +* +* Use the optional `immediate` argument if you need the Text display to update immediately. +* +* If not it will re-create the texture of this Text object during the next time the render +* loop is called. +* +* @method Phaser.Text#setText +* @param {string} [text] - The text to be displayed. Set to an empty string to clear text that is already present. +* @param {boolean} [immediate=false] - Update the texture used by this Text object immediately (true) or automatically during the next render loop (false). +* @return {Phaser.Text} This Text instance. +*/ +Phaser.Text.prototype.setText = function (text, immediate) { + + if (immediate === undefined) { immediate = false; } this.text = text.toString() || ''; - this.dirty = true; + + if (immediate) + { + this.updateText(); + } + else + { + this.dirty = true; + } return this; @@ -2272,5 +2288,5 @@ Object.defineProperty(Phaser.Text.prototype, 'height', { Phaser.Text.fontPropertiesCache = {}; -Phaser.Text.fontPropertiesCanvas = PIXI.CanvasPool.create(Phaser.Text.fontPropertiesCanvas); +Phaser.Text.fontPropertiesCanvas = document.createElement('canvas'); Phaser.Text.fontPropertiesContext = Phaser.Text.fontPropertiesCanvas.getContext('2d'); diff --git a/src/gameobjects/Video.js b/src/gameobjects/Video.js index 21225a0ff..4c69903c6 100644 --- a/src/gameobjects/Video.js +++ b/src/gameobjects/Video.js @@ -252,7 +252,7 @@ Phaser.Video = function (game, key, url) { } else { - this.baseTexture = new PIXI.BaseTexture(PIXI.TextureCache['__default'].baseTexture.source); + this.baseTexture = new PIXI.BaseTexture(Phaser.Cache.DEFAULT.baseTexture.source); this.baseTexture.forceLoaded(this.width, this.height); } diff --git a/src/gameobjects/components/Bounds.js b/src/gameobjects/components/Bounds.js index 787b60f7a..c7a951833 100644 --- a/src/gameobjects/components/Bounds.js +++ b/src/gameobjects/components/Bounds.js @@ -392,3 +392,8 @@ Phaser.Component.Bounds.prototype = { } }; + +// Phaser.Group extensions + +Phaser.Group.prototype.alignIn = Phaser.Component.Bounds.prototype.alignIn; +Phaser.Group.prototype.alignTo = Phaser.Component.Bounds.prototype.alignTo; diff --git a/src/gameobjects/components/Events.js b/src/gameobjects/components/Events.js index f3abc0a72..bf773edc2 100644 --- a/src/gameobjects/components/Events.js +++ b/src/gameobjects/components/Events.js @@ -5,7 +5,7 @@ */ /** -* The Events component is a collection of events fired by the parent game object. +* The Events component is a collection of events fired by the parent Game Object. * * Phaser uses what are known as 'Signals' for all event handling. All of the events in * this class are signals you can subscribe to, much in the same way you'd "listen" for @@ -75,92 +75,187 @@ Phaser.Events.prototype = { // The following properties are sentinels that will be replaced with getters /** - * @property {Phaser.Signal} onAddedToGroup - This signal is dispatched when the parent is added to a new Group. + * This signal is dispatched when this Game Object is added to a new Group. + * It is sent two arguments: + * {any} The Game Object that was added to the Group. + * {Phaser.Group} The Group it was added to. + * @property {Phaser.Signal} onAddedToGroup */ onAddedToGroup: null, /** - * @property {Phaser.Signal} onRemovedFromGroup - This signal is dispatched when the parent is removed from a Group. + * This signal is dispatched when the Game Object is removed from a Group. + * It is sent two arguments: + * {any} The Game Object that was removed from the Group. + * {Phaser.Group} The Group it was removed from. + * @property {Phaser.Signal} onRemovedFromGroup */ onRemovedFromGroup: null, /** - * @property {Phaser.Signal} onRemovedFromWorld - This signal is dispatched if this item or any of its parents are removed from the game world. + * This Signal is never used internally by Phaser and is now deprecated. + * @deprecated + * @property {Phaser.Signal} onRemovedFromWorld */ onRemovedFromWorld: null, /** - * @property {Phaser.Signal} onDestroy - This signal is dispatched when the parent is destroyed. + * This signal is dispatched when the Game Object is destroyed. + * This happens when `Sprite.destroy()` is called, or `Group.destroy()` with `destroyChildren` set to true. + * It is sent one argument: + * {any} The Game Object that was destroyed. + * @property {Phaser.Signal} onDestroy */ onDestroy: null, /** - * @property {Phaser.Signal} onKilled - This signal is dispatched when the parent is killed. + * This signal is dispatched when the Game Object is killed. + * This happens when `Sprite.kill()` is called. + * Please understand the difference between `kill` and `destroy` by looking at their respective methods. + * It is sent one argument: + * {any} The Game Object that was killed. + * @property {Phaser.Signal} onKilled */ onKilled: null, /** - * @property {Phaser.Signal} onRevived - This signal is dispatched when the parent is revived. + * This signal is dispatched when the Game Object is revived from a previously killed state. + * This happens when `Sprite.revive()` is called. + * It is sent one argument: + * {any} The Game Object that was revived. + * @property {Phaser.Signal} onRevived */ onRevived: null, /** - * @property {Phaser.Signal} onOutOfBounds - This signal is dispatched when the parent leaves the world bounds (only if Sprite.checkWorldBounds is true). + * This signal is dispatched when the Game Object leaves the Phaser.World bounds. + * This signal is only if `Sprite.checkWorldBounds` is set to `true`. + * It is sent one argument: + * {any} The Game Object that left the World bounds. + * @property {Phaser.Signal} onOutOfBounds */ onOutOfBounds: null, /** - * @property {Phaser.Signal} onEnterBounds - This signal is dispatched when the parent returns within the world bounds (only if Sprite.checkWorldBounds is true). + * This signal is dispatched when the Game Object returns within the Phaser.World bounds, having previously been outside of them. + * This signal is only if `Sprite.checkWorldBounds` is set to `true`. + * It is sent one argument: + * {any} The Game Object that entered the World bounds. + * @property {Phaser.Signal} onEnterBounds */ onEnterBounds: null, /** - * @property {Phaser.Signal} onInputOver - This signal is dispatched if the parent is inputEnabled and receives an over event from a Pointer. + * This signal is dispatched if the Game Object has `inputEnabled` set to `true`, + * and receives an over event from a Phaser.Pointer. + * It is sent two arguments: + * {any} The Game Object that received the event. + * {Phaser.Pointer} The Phaser.Pointer object that caused the event. + * @property {Phaser.Signal} onInputOver */ onInputOver: null, /** - * @property {Phaser.Signal} onInputOut - This signal is dispatched if the parent is inputEnabled and receives an out event from a Pointer. + * This signal is dispatched if the Game Object has `inputEnabled` set to `true`, + * and receives an out event from a Phaser.Pointer, which was previously over it. + * It is sent two arguments: + * {any} The Game Object that received the event. + * {Phaser.Pointer} The Phaser.Pointer object that caused the event. + * @property {Phaser.Signal} onInputOut */ onInputOut: null, /** - * @property {Phaser.Signal} onInputDown - This signal is dispatched if the parent is inputEnabled and receives a down event from a Pointer. + * This signal is dispatched if the Game Object has `inputEnabled` set to `true`, + * and receives a down event from a Phaser.Pointer. This effectively means the Pointer has been + * pressed down (but not yet released) on the Game Object. + * It is sent two arguments: + * {any} The Game Object that received the event. + * {Phaser.Pointer} The Phaser.Pointer object that caused the event. + * @property {Phaser.Signal} onInputDown */ onInputDown: null, /** - * @property {Phaser.Signal} onInputUp - This signal is dispatched if the parent is inputEnabled and receives an up event from a Pointer. + * This signal is dispatched if the Game Object has `inputEnabled` set to `true`, + * and receives an up event from a Phaser.Pointer. This effectively means the Pointer had been + * pressed down, and was then released on the Game Object. + * It is sent three arguments: + * {any} The Game Object that received the event. + * {Phaser.Pointer} The Phaser.Pointer object that caused the event. + * {boolean} isOver - Is the Pointer still over the Game Object? + * @property {Phaser.Signal} onInputUp */ onInputUp: null, /** - * @property {Phaser.Signal} onDragStart - This signal is dispatched if the parent is inputEnabled and receives a drag start event from a Pointer. + * This signal is dispatched if the Game Object has been `inputEnabled` and `enableDrag` has been set. + * It is sent when a Phaser.Pointer starts to drag the Game Object, taking into consideration the various + * drag limitations that may be set. + * It is sent four arguments: + * {any} The Game Object that received the event. + * {Phaser.Pointer} The Phaser.Pointer object that caused the event. + * {number} The x coordinate that the drag started from. + * {number} The y coordinate that the drag started from. + * @property {Phaser.Signal} onDragStart */ onDragStart: null, /** - * @property {Phaser.Signal} onDragUpdate - This signal is dispatched if the parent is inputEnabled and receives a drag update event from a Pointer. + * This signal is dispatched if the Game Object has been `inputEnabled` and `enableDrag` has been set. + * It is sent when a Phaser.Pointer is actively dragging the Game Object. + * Be warned: This is a high volume Signal. Be careful what you bind to it. + * It is sent six arguments: + * {any} The Game Object that received the event. + * {Phaser.Pointer} The Phaser.Pointer object that caused the event. + * {number} The new x coordinate of the Game Object. + * {number} The new y coordinate of the Game Object. + * {Phaser.Point} A Point object that contains the point the Game Object was snapped to, if `snapOnDrag` has been enabled. + * {boolean} The `fromStart` boolean, indicates if this is the first update immediately after the drag has started. + * @property {Phaser.Signal} onDragUpdate */ onDragUpdate: null, /** - * @property {Phaser.Signal} onDragStop - This signal is dispatched if the parent is inputEnabled and receives a drag stop event from a Pointer. + * This signal is dispatched if the Game Object has been `inputEnabled` and `enableDrag` has been set. + * It is sent when a Phaser.Pointer stops dragging the Game Object. + * It is sent two arguments: + * {any} The Game Object that received the event. + * {Phaser.Pointer} The Phaser.Pointer object that caused the event. + * @property {Phaser.Signal} onDragStop */ onDragStop: null, /** - * @property {Phaser.Signal} onAnimationStart - This signal is dispatched when the parent has an animation that is played. + * This signal is dispatched if the Game Object has the AnimationManager component, + * and an Animation has been played. + * You can also listen to `Animation.onStart` rather than via the Game Objects events. + * It is sent two arguments: + * {any} The Game Object that received the event. + * {Phaser.Animation} The Phaser.Animation that was started. + * @property {Phaser.Signal} onAnimationStart */ onAnimationStart: null, /** - * @property {Phaser.Signal} onAnimationComplete - This signal is dispatched when the parent has an animation that finishes playing. + * This signal is dispatched if the Game Object has the AnimationManager component, + * and an Animation has been stopped (via `animation.stop()` and the `dispatchComplete` argument has been set. + * You can also listen to `Animation.onComplete` rather than via the Game Objects events. + * It is sent two arguments: + * {any} The Game Object that received the event. + * {Phaser.Animation} The Phaser.Animation that was stopped. + * @property {Phaser.Signal} onAnimationComplete */ onAnimationComplete: null, /** - * @property {Phaser.Signal} onAnimationLoop - This signal is dispatched when the parent has an animation that loops playback. + * This signal is dispatched if the Game Object has the AnimationManager component, + * and an Animation has looped playback. + * You can also listen to `Animation.onLoop` rather than via the Game Objects events. + * It is sent two arguments: + * {any} The Game Object that received the event. + * {Phaser.Animation} The Phaser.Animation that looped. + * @property {Phaser.Signal} onAnimationLoop */ onAnimationLoop: null diff --git a/src/gameobjects/components/InputEnabled.js b/src/gameobjects/components/InputEnabled.js index b3245aaee..bfb0e2f9b 100644 --- a/src/gameobjects/components/InputEnabled.js +++ b/src/gameobjects/components/InputEnabled.js @@ -32,6 +32,10 @@ Phaser.Component.InputEnabled.prototype = { * Note that Input related events are dispatched from `this.events`, i.e.: `events.onInputDown`. * * If you set this property to false it will stop the Input Handler from processing any more input events. + * + * If you want to _temporarily_ disable input for a Game Object, then it's better to set + * `input.enabled = false`, as it won't reset any of the Input Handlers internal properties. + * You can then toggle this back on as needed. * * @property {boolean} inputEnabled */ diff --git a/src/geom/Polygon.js b/src/geom/Polygon.js index 5b5ae0c1e..52032d0ed 100644 --- a/src/geom/Polygon.js +++ b/src/geom/Polygon.js @@ -44,6 +44,11 @@ Phaser.Polygon = function () { */ this.closed = true; + /** + * @property {boolean} flattened - Has this Polygon been flattened by a call to `Polygon.flatten` ? + */ + this.flattened = false; + /** * @property {number} type - The base object type. */ @@ -84,7 +89,9 @@ Phaser.Polygon.prototype = { }, /** - * Flattens this Polygon so the points are a sequence of numbers. Any Point objects found are removed and replaced with two numbers. + * Flattens this Polygon so the points are a sequence of numbers. + * Any Point objects found are removed and replaced with two numbers. + * Also sets the Polygon.flattened property to `true`. * * @method Phaser.Polygon#flatten * @return {Phaser.Polygon} This Polygon object @@ -93,6 +100,8 @@ Phaser.Polygon.prototype = { this._points = this.toNumberArray(); + this.flattened = true; + return this; }, @@ -134,20 +143,39 @@ Phaser.Polygon.prototype = { // Adapted from http://www.ecse.rpi.edu/Homepages/wrf/Research/Short_Notes/pnpoly.html by Jonas Raoni Soares Silva - var length = this._points.length; var inside = false; - for (var i = -1, j = length - 1; ++i < length; j = i) + if (this.flattened) { - var ix = this._points[i].x; - var iy = this._points[i].y; - - var jx = this._points[j].x; - var jy = this._points[j].y; - - if (((iy <= y && y < jy) || (jy <= y && y < iy)) && (x < (jx - ix) * (y - iy) / (jy - iy) + ix)) + for (var i = -2, j = this._points.length - 2; (i += 2) < this._points.length; j = i) { - inside = !inside; + var ix = this._points[i]; + var iy = this._points[i + 1]; + + var jx = this._points[j]; + var jy = this._points[j + 1]; + + if (((iy <= y && y < jy) || (jy <= y && y < iy)) && (x < (jx - ix) * (y - iy) / (jy - iy) + ix)) + { + inside = !inside; + } + } + + } + else + { + for (var i = -1, j = this._points.length - 1; ++i < this._points.length; j = i) + { + var ix = this._points[i].x; + var iy = this._points[i].y; + + var jx = this._points[j].x; + var jy = this._points[j].y; + + if (((iy <= y && y < jy) || (jy <= y && y < iy)) && (x < (jx - ix) * (y - iy) / (jy - iy) + ix)) + { + inside = !inside; + } } } diff --git a/src/input/InputHandler.js b/src/input/InputHandler.js index 91f9f9bc8..e1b3eaa70 100644 --- a/src/input/InputHandler.js +++ b/src/input/InputHandler.js @@ -283,9 +283,10 @@ Phaser.InputHandler.prototype = { /** * Starts the Input Handler running. This is called automatically when you enable input on a Sprite, or can be called directly if you need to set a specific priority. + * * @method Phaser.InputHandler#start - * @param {number} priority - Higher priority sprites take click priority over low-priority sprites when they are stacked on-top of each other. - * @param {boolean} useHandCursor - If true the Sprite will show the hand cursor on mouse-over (doesn't apply to mobile browsers) + * @param {number} [priority=0] - Higher priority sprites take click priority over low-priority sprites when they are stacked on-top of each other. + * @param {boolean} [useHandCursor=false] - If true the Sprite will show the hand cursor on mouse-over (doesn't apply to mobile browsers) * @return {Phaser.Sprite} The Sprite object to which the Input Handler is bound. */ start: function (priority, useHandCursor) { @@ -906,7 +907,7 @@ Phaser.InputHandler.prototype = { } else if (this.draggable && this._draggedPointerID === pointer.id) { - return this.updateDrag(pointer); + return this.updateDrag(pointer, false); } else if (this._pointerData[pointer.id].isOver) { @@ -1185,24 +1186,24 @@ Phaser.InputHandler.prototype = { }, /** - * Updates the Pointer drag on this Sprite. + * Called as a Pointer actively drags this Game Object. + * * @method Phaser.InputHandler#updateDrag - * @param {Phaser.Pointer} pointer + * @private + * @param {Phaser.Pointer} pointer - The Pointer causing the drag update. + * @param {boolean} fromStart - True if this is the first update, immediately after the drag has started. * @return {boolean} */ updateDrag: function (pointer, fromStart) { + if (fromStart === undefined) { fromStart = false; } + if (pointer.isUp) { this.stopDrag(pointer); return false; } - if (fromStart === undefined) - { - fromStart = false; - } - var px = this.globalToLocalX(pointer.x) + this._dragPoint.x + this.dragOffset.x; var py = this.globalToLocalY(pointer.y) + this._dragPoint.y + this.dragOffset.y; @@ -1653,7 +1654,6 @@ Phaser.InputHandler.prototype = { }, - /** * Bounds Rect check for the sprite drag * diff --git a/src/loader/Cache.js b/src/loader/Cache.js index cd6e8d2c4..0249b97e2 100644 --- a/src/loader/Cache.js +++ b/src/loader/Cache.js @@ -207,6 +207,20 @@ Phaser.Cache.SHADER = 14; */ Phaser.Cache.RENDER_TEXTURE = 15; +/** +* The default image used for a texture when no other is specified. +* @constant +* @type {PIXI.Texture} +*/ +Phaser.Cache.DEFAULT = null; + +/** +* The default image used for a texture when the source image is missing. +* @constant +* @type {PIXI.Texture} +*/ +Phaser.Cache.MISSING = null; + Phaser.Cache.prototype = { ////////////////// @@ -261,6 +275,15 @@ Phaser.Cache.prototype = { this._resolveURL(url, img); + if (key === '__default') + { + Phaser.Cache.DEFAULT = new PIXI.Texture(img.base); + } + else if (key === '__missing') + { + Phaser.Cache.MISSING = new PIXI.Texture(img.base); + } + return img; }, @@ -285,7 +308,8 @@ Phaser.Cache.prototype = { // Because we don't want to invalidate the sprite batch for an invisible texture obj.base.skipRender = true; - PIXI.TextureCache['__default'] = new PIXI.Texture(obj.base); + // Make it easily available within the rest of Phaser / Pixi + Phaser.Cache.DEFAULT = new PIXI.Texture(obj.base); }, @@ -306,7 +330,8 @@ Phaser.Cache.prototype = { var obj = this.addImage('__missing', null, img); - PIXI.TextureCache['__missing'] = new PIXI.Texture(obj.base); + // Make it easily available within the rest of Phaser / Pixi + Phaser.Cache.MISSING = new PIXI.Texture(obj.base); }, @@ -1556,71 +1581,6 @@ Phaser.Cache.prototype = { }, - /** - * Gets a PIXI.Texture by key from the PIXI.TextureCache. - * - * If the texture isn't found in the cache, then it searches the Phaser Image Cache and - * creates a new PIXI.Texture object which is then returned. - * - * @method Phaser.Cache#getPixiTexture - * @deprecated - * @param {string} key - Asset key of the Texture to retrieve from the Cache. - * @return {PIXI.Texture} The Texture object. - */ - getPixiTexture: function (key) { - - if (PIXI.TextureCache[key]) - { - return PIXI.TextureCache[key]; - } - else - { - var base = this.getPixiBaseTexture(key); - - if (base) - { - return new PIXI.Texture(base); - } - else - { - return null; - } - } - - }, - - /** - * Gets a PIXI.BaseTexture by key from the PIXI.BaseTextureCache. - * - * If the texture isn't found in the cache, then it searches the Phaser Image Cache. - * - * @method Phaser.Cache#getPixiBaseTexture - * @deprecated - * @param {string} key - Asset key of the BaseTexture to retrieve from the Cache. - * @return {PIXI.BaseTexture} The BaseTexture object or null if not found. - */ - getPixiBaseTexture: function (key) { - - if (PIXI.BaseTextureCache[key]) - { - return PIXI.BaseTextureCache[key]; - } - else - { - var img = this.getItem(key, Phaser.Cache.IMAGE, 'getPixiBaseTexture'); - - if (img !== null) - { - return img.base; - } - else - { - return null; - } - } - - }, - /** * Get a cached object by the URL. * This only returns a value if you set Cache.autoResolveURL to `true` *before* starting the preload of any assets. @@ -1698,20 +1658,20 @@ Phaser.Cache.prototype = { * * You can optionally elect to destroy it as well. This calls BaseTexture.destroy on it. * - * Note that this only removes it from the Phaser and PIXI Caches. If you still have references to the data elsewhere + * Note that this only removes it from the Phaser Cache. If you still have references to the data elsewhere * then it will persist in memory. * * @method Phaser.Cache#removeImage * @param {string} key - Key of the asset you want to remove. - * @param {boolean} [removeFromPixi=true] - Should this image also be destroyed? Removing it from the PIXI.BaseTextureCache? + * @param {boolean} [destroyBaseTexture=true] - Should the BaseTexture behind this image also be destroyed? */ - removeImage: function (key, removeFromPixi) { + removeImage: function (key, destroyBaseTexture) { - if (removeFromPixi === undefined) { removeFromPixi = true; } + if (destroyBaseTexture === undefined) { destroyBaseTexture = true; } var img = this.getImage(key, true); - if (removeFromPixi && img.base) + if (destroyBaseTexture && img.base) { img.base.destroy(); } diff --git a/src/loader/Loader.js b/src/loader/Loader.js index d0bf7e02e..1f88a988f 100644 --- a/src/loader/Loader.js +++ b/src/loader/Loader.js @@ -103,7 +103,19 @@ Phaser.Loader = function (game) { this.path = ''; /** - * This event is dispatched when the loading process starts: before the first file has been requested, + * Used to map the application mime-types to to the Accept header in XHR requests. + * If you don't require these mappings, or they cause problems on your server, then + * remove them from the headers object and the XHR request will not try to use them. + * @property {object} headers + * @default + */ + this.headers = { + json: "application/json", + xml: "application/xml" + }; + + /** + * This event is dispatched when the loading process starts: before the first file has been requested, * but after all the initial packs have been loaded. * * @property {Phaser.Signal} onLoadStart @@ -2318,6 +2330,11 @@ Phaser.Loader.prototype = { xhr.open("GET", url, true); xhr.responseType = type; + if (this.headers[file.type]) + { + xhr.setRequestHeader("Accept", this.headers[file.type]); + } + onerror = onerror || this.fileError; var _this = this; diff --git a/src/math/Math.js b/src/math/Math.js index e55901917..894a4c674 100644 --- a/src/math/Math.js +++ b/src/math/Math.js @@ -147,7 +147,9 @@ Phaser.Math = { * @return {number} n mod 1 */ shear: function (n) { + return n % 1; + }, /** @@ -158,8 +160,8 @@ Phaser.Math = { * @method Phaser.Math#snapTo * @param {number} input - The value to snap. * @param {number} gap - The interval gap of the grid. - * @param {number} [start] - Optional starting offset for gap. - * @return {number} + * @param {number} [start=0] - Optional starting offset for gap. + * @return {number} The snapped value. */ snapTo: function (input, gap, start) { @@ -185,8 +187,8 @@ Phaser.Math = { * @method Phaser.Math#snapToFloor * @param {number} input - The value to snap. * @param {number} gap - The interval gap of the grid. - * @param {number} [start] - Optional starting offset for gap. - * @return {number} + * @param {number} [start=0] - Optional starting offset for gap. + * @return {number} The snapped value. */ snapToFloor: function (input, gap, start) { @@ -212,8 +214,8 @@ Phaser.Math = { * @method Phaser.Math#snapToCeil * @param {number} input - The value to snap. * @param {number} gap - The interval gap of the grid. - * @param {number} [start] - Optional starting offset for gap. - * @return {number} + * @param {number} [start=0] - Optional starting offset for gap. + * @return {number} The snapped value. */ snapToCeil: function (input, gap, start) { @@ -261,9 +263,9 @@ Phaser.Math = { * * @method Phaser.Math#roundTo * @param {number} value - The value to round. - * @param {number} place - The place to round to. - * @param {number} base - The base to round in... default is 10 for decimal. - * @return {number} + * @param {number} [place=0] - The place to round to. + * @param {number} [base=10] - The base to round in. Default is 10 for decimal. + * @return {number} The rounded value. */ roundTo: function (value, place, base) { @@ -277,11 +279,14 @@ Phaser.Math = { }, /** + * Floors to some place comparative to a `base`, default is 10 for decimal place. + * The `place` is represented by the power applied to `base` to get that place. + * * @method Phaser.Math#floorTo * @param {number} value - The value to round. - * @param {number} place - The place to round to. - * @param {number} base - The base to round in... default is 10 for decimal. - * @return {number} + * @param {number} [place=0] - The place to round to. + * @param {number} [base=10] - The base to round in. Default is 10 for decimal. + * @return {number} The rounded value. */ floorTo: function (value, place, base) { @@ -295,11 +300,14 @@ Phaser.Math = { }, /** + * Ceils to some place comparative to a `base`, default is 10 for decimal place. + * The `place` is represented by the power applied to `base` to get that place. + * * @method Phaser.Math#ceilTo * @param {number} value - The value to round. - * @param {number} place - The place to round to. - * @param {number} base - The base to round in... default is 10 for decimal. - * @return {number} + * @param {number} [place=0] - The place to round to. + * @param {number} [base=10] - The base to round in. Default is 10 for decimal. + * @return {number} The rounded value. */ ceilTo: function (value, place, base) { @@ -314,42 +322,51 @@ Phaser.Math = { /** * Find the angle of a segment from (x1, y1) -> (x2, y2). + * * @method Phaser.Math#angleBetween - * @param {number} x1 - * @param {number} y1 - * @param {number} x2 - * @param {number} y2 + * @param {number} x1 - The x coordinate of the first value. + * @param {number} y1 - The y coordinate of the first value. + * @param {number} x2 - The x coordinate of the second value. + * @param {number} y2 - The y coordinate of the second value. * @return {number} The angle, in radians. */ angleBetween: function (x1, y1, x2, y2) { + return Math.atan2(y2 - y1, x2 - x1); + }, /** * Find the angle of a segment from (x1, y1) -> (x2, y2). - * Note that the difference between this method and Math.angleBetween is that this assumes the y coordinate travels + * + * The difference between this method and Math.angleBetween is that this assumes the y coordinate travels * down the screen. * * @method Phaser.Math#angleBetweenY - * @param {number} x1 - * @param {number} y1 - * @param {number} x2 - * @param {number} y2 + * @param {number} x1 - The x coordinate of the first value. + * @param {number} y1 - The y coordinate of the first value. + * @param {number} x2 - The x coordinate of the second value. + * @param {number} y2 - The y coordinate of the second value. * @return {number} The angle, in radians. */ angleBetweenY: function (x1, y1, x2, y2) { + return Math.atan2(x2 - x1, y2 - y1); + }, /** * Find the angle of a segment from (point1.x, point1.y) -> (point2.x, point2.y). + * * @method Phaser.Math#angleBetweenPoints - * @param {Phaser.Point} point1 - * @param {Phaser.Point} point2 - * @return {number} The angle, in radians. + * @param {Phaser.Point} point1 - The first point. + * @param {Phaser.Point} point2 - The second point. + * @return {number} The angle between the two points, in radians. */ angleBetweenPoints: function (point1, point2) { + return Math.atan2(point2.y - point1.y, point2.x - point1.x); + }, /** @@ -360,24 +377,28 @@ Phaser.Math = { * @return {number} The angle, in radians. */ angleBetweenPointsY: function (point1, point2) { + return Math.atan2(point2.x - point1.x, point2.y - point1.y); + }, /** * Reverses an angle. * @method Phaser.Math#reverseAngle * @param {number} angleRad - The angle to reverse, in radians. - * @return {number} Returns the reverse angle, in radians. + * @return {number} The reverse angle, in radians. */ reverseAngle: function (angleRad) { + return this.normalizeAngle(angleRad + Math.PI, true); + }, /** * Normalizes an angle to the [0,2pi) range. * @method Phaser.Math#normalizeAngle * @param {number} angleRad - The angle to normalize, in radians. - * @return {number} Returns the angle, fit within the [0,2pi] range, in radians. + * @return {number} The angle, fit within the [0,2pi] range, in radians. */ normalizeAngle: function (angleRad) { @@ -393,10 +414,12 @@ Phaser.Math = { * @param {number} value - The value to add the amount to. * @param {number} amount - The amount to add to the value. * @param {number} max - The maximum the value is allowed to be. - * @return {number} + * @return {number} The new value. */ maxAdd: function (value, amount, max) { + return Math.min(value + amount, max); + }, /** @@ -409,7 +432,9 @@ Phaser.Math = { * @return {number} The new value. */ minSub: function (value, amount, min) { + return Math.max(value - amount, min); + }, /** @@ -474,8 +499,10 @@ Phaser.Math = { * @return {boolean} True if the given number is odd. False if the given number is even. */ isOdd: function (n) { + // Does not work with extremely large values return !!(n & 1); + }, /** @@ -486,8 +513,10 @@ Phaser.Math = { * @return {boolean} True if the given number is even. False if the given number is odd. */ isEven: function (n) { + // Does not work with extremely large values return !(n & 1); + }, /** @@ -724,11 +753,13 @@ Phaser.Math = { * @method Phaser.Math#linear * @param {number} p0 * @param {number} p1 - * @param {number} t + * @param {number} t - A value between 0 and 1. * @return {number} */ linear: function (p0, p1, t) { + return (p1 - p0) * t + p0; + }, /** @@ -739,7 +770,9 @@ Phaser.Math = { * @return {number} */ bernstein: function (n, i) { + return this.factorial(n) / this.factorial(i) / this.factorial(n - i); + }, /** @@ -747,7 +780,7 @@ Phaser.Math = { * @param {number} value - the number you want to evaluate * @return {number} */ - factorial : function( value ){ + factorial: function (value) { if (value === 0) { @@ -786,15 +819,17 @@ Phaser.Math = { }, /** - * The (absolute) difference between two values. + * The absolute difference between two values. * * @method Phaser.Math#difference - * @param {number} a - * @param {number} b - * @return {number} + * @param {number} a - The first value to check. + * @param {number} b - The second value to check. + * @return {number} The absolute difference between the two values. */ difference: function (a, b) { + return Math.abs(a - b); + }, /** @@ -945,7 +980,9 @@ Phaser.Math = { * @return {number} */ clampBottom: function (x, a) { + return x < a ? a : x; + }, /** @@ -959,22 +996,26 @@ Phaser.Math = { * @see {@link Phaser.Math.fuzzyEqual} */ within: function (a, b, tolerance) { + return (Math.abs(a - b) <= tolerance); + }, /** * Linear mapping from range to range * * @method Phaser.Math#mapLinear - * @param {number} x the value to map - * @param {number} a1 first endpoint of the range - * @param {number} a2 final endpoint of the range - * @param {number} b1 first endpoint of the range - * @param {number} b2 final endpoint of the range + * @param {number} x - The value to map + * @param {number} a1 - First endpoint of the range + * @param {number} a2 - Final endpoint of the range + * @param {number} b1 - First endpoint of the range + * @param {number} b2 - Final endpoint of the range * @return {number} */ mapLinear: function (x, a1, a2, b1, b2) { + return b1 + ( x - a1 ) * ( b2 - b1 ) / ( a2 - a1 ); + }, /** @@ -1006,8 +1047,11 @@ Phaser.Math = { * @return {float} A value between 0 and 1. */ smootherstep: function (x, min, max) { + x = Math.max(0, Math.min(1, (x - min) / (max - min))); + return x * x * x * (x * (x * 6 - 15) + 10); + }, /** @@ -1020,7 +1064,9 @@ Phaser.Math = { * @return {integer} An integer in {-1, 0, 1} */ sign: function (x) { + return ( x < 0 ) ? -1 : ( ( x > 0 ) ? 1 : 0 ); + }, /** diff --git a/src/physics/arcade/Body.js b/src/physics/arcade/Body.js index 8a3d11021..0d9c30de3 100644 --- a/src/physics/arcade/Body.js +++ b/src/physics/arcade/Body.js @@ -35,6 +35,25 @@ Phaser.Physics.Arcade.Body = function (sprite) { */ this.enable = true; + /** + * If `true` this Body is using circular collision detection. If `false` it is using rectangular. + * Use `Body.setCircle` to control the collision shape this Body uses. + * @property {boolean} isCircle + * @default + * @readOnly + */ + this.isCircle = false; + + /** + * The radius of the circular collision shape this Body is using if Body.setCircle has been enabled. + * If you wish to change the radius then call `setCircle` again with the new value. + * If you wish to stop the Body using a circle then call `setCircle` with a radius of zero (or undefined). + * @property {number} radius + * @default + * @readOnly + */ + this.radius = 0; + /** * @property {Phaser.Point} offset - The offset of the Physics Body from the Sprite x/y position. */ @@ -128,12 +147,12 @@ Phaser.Physics.Arcade.Body = function (sprite) { * @property {Phaser.Point} newVelocity - The new velocity. Calculated during the Body.preUpdate and applied to its position. * @readonly */ - this.newVelocity = new Phaser.Point(0, 0); + this.newVelocity = new Phaser.Point(); /** * @property {Phaser.Point} deltaMax - The Sprite position is updated based on the delta x/y values. You can set a cap on those (both +-) using deltaMax. */ - this.deltaMax = new Phaser.Point(0, 0); + this.deltaMax = new Phaser.Point(); /** * @property {Phaser.Point} acceleration - The acceleration is the rate of change of the velocity. Measured in pixels per second squared. @@ -154,7 +173,7 @@ Phaser.Physics.Arcade.Body = function (sprite) { /** * @property {Phaser.Point} gravity - A local gravity applied to this Body. If non-zero this over rides any world gravity, unless Body.allowGravity is set to false. */ - this.gravity = new Phaser.Point(0, 0); + this.gravity = new Phaser.Point(); /** * @property {Phaser.Point} bounce - The elasticity of the Body when colliding. bounce.x/y = 1 means full rebound, bounce.x/y = 0.5 means 50% rebound velocity. @@ -169,6 +188,58 @@ Phaser.Physics.Arcade.Body = function (sprite) { */ this.worldBounce = null; + /** + * A Signal that is dispatched when this Body collides with the world bounds. + * Due to the potentially high volume of signals this could create it is disabled by default. + * To use this feature set this property to a Phaser.Signal: `sprite.body.onWorldBounds = new Phaser.Signal()` + * and it will be called when a collision happens, passing five arguments: + * `onWorldBounds(sprite, up, down, left, right)` + * where the Sprite is a reference to the Sprite that owns this Body, and the other arguments are booleans + * indicating on which side of the world the Body collided. + * @property {Phaser.Signal} onWorldBounds + */ + this.onWorldBounds = null; + + /** + * A Signal that is dispatched when this Body collides with another Body. + * + * You still need to call `game.physics.arcade.collide` in your `update` method in order + * for this signal to be dispatched. + * + * Usually you'd pass a callback to the `collide` method, but this signal provides for + * a different level of notification. + * + * Due to the potentially high volume of signals this could create it is disabled by default. + * + * To use this feature set this property to a Phaser.Signal: `sprite.body.onCollide = new Phaser.Signal()` + * and it will be called when a collision happens, passing two arguments: the sprites which collided. + * The first sprite in the argument is always the owner of this Body. + * + * If two Bodies with this Signal set collide, both will dispatch the Signal. + * @property {Phaser.Signal} onCollide + */ + this.onCollide = null; + + /** + * A Signal that is dispatched when this Body overlaps with another Body. + * + * You still need to call `game.physics.arcade.overlap` in your `update` method in order + * for this signal to be dispatched. + * + * Usually you'd pass a callback to the `overlap` method, but this signal provides for + * a different level of notification. + * + * Due to the potentially high volume of signals this could create it is disabled by default. + * + * To use this feature set this property to a Phaser.Signal: `sprite.body.onOverlap = new Phaser.Signal()` + * and it will be called when a collision happens, passing two arguments: the sprites which collided. + * The first sprite in the argument is always the owner of this Body. + * + * If two Bodies with this Signal set collide, both will dispatch the Signal. + * @property {Phaser.Signal} onOverlap + */ + this.onOverlap = null; + /** * @property {Phaser.Point} maxVelocity - The maximum velocity in pixels per second sq. that the Body can reach. * @default @@ -271,6 +342,12 @@ Phaser.Physics.Arcade.Body = function (sprite) { */ this.overlapY = 0; + /** + * If `Body.isCircle` is true, and this body collides with another circular body, the amount of overlap is stored here. + * @property {number} overlapR - The amount of overlap during the collision. + */ + this.overlapR = 0; + /** * If a body is overlapping with another body, but neither of them are moving (maybe they spawned on-top of each other?) this is set to true. * @property {boolean} embedded - Body embed value. @@ -544,7 +621,10 @@ Phaser.Physics.Arcade.Body.prototype = { if (this.collideWorldBounds) { - this.checkWorldBounds(); + if (this.checkWorldBounds() && this.onWorldBounds) + { + this.onWorldBounds.dispatch(this.sprite, this.blocked.up, this.blocked.down, this.blocked.left, this.blocked.right); + } } } @@ -715,6 +795,7 @@ Phaser.Physics.Arcade.Body.prototype = { * * @method Phaser.Physics.Arcade.Body#checkWorldBounds * @protected + * @return {boolean} True if the Body collided with the world bounds, otherwise false. */ checkWorldBounds: function () { @@ -725,31 +806,71 @@ Phaser.Physics.Arcade.Body.prototype = { var bx = (this.worldBounce) ? -this.worldBounce.x : -this.bounce.x; var by = (this.worldBounce) ? -this.worldBounce.y : -this.bounce.y; - if (pos.x < bounds.x && check.left) + if (this.isCircle) { - pos.x = bounds.x; - this.velocity.x *= bx; - this.blocked.left = true; + var bodyBounds = { + x: this.center.x - this.radius, + y: this.center.y - this.radius, + right: this.center.x + this.radius, + bottom: this.center.y + this.radius + }; + + if (bodyBounds.x < bounds.x && check.left) + { + pos.x = bounds.x - this.halfWidth + this.radius; + this.velocity.x *= bx; + this.blocked.left = true; + } + else if (bodyBounds.right > bounds.right && check.right) + { + pos.x = bounds.right - this.halfWidth - this.radius; + this.velocity.x *= bx; + this.blocked.right = true; + } + + if (bodyBounds.y < bounds.y && check.up) + { + pos.y = bounds.y - this.halfHeight + this.radius; + this.velocity.y *= by; + this.blocked.up = true; + } + else if (bodyBounds.bottom > bounds.bottom && check.down) + { + pos.y = bounds.bottom - this.halfHeight - this.radius; + this.velocity.y *= by; + this.blocked.down = true; + } } - else if (this.right > bounds.right && check.right) + else { - pos.x = bounds.right - this.width; - this.velocity.x *= bx; - this.blocked.right = true; + if (pos.x < bounds.x && check.left) + { + pos.x = bounds.x; + this.velocity.x *= bx; + this.blocked.left = true; + } + else if (this.right > bounds.right && check.right) + { + pos.x = bounds.right - this.width; + this.velocity.x *= bx; + this.blocked.right = true; + } + + if (pos.y < bounds.y && check.up) + { + pos.y = bounds.y; + this.velocity.y *= by; + this.blocked.up = true; + } + else if (this.bottom > bounds.bottom && check.down) + { + pos.y = bounds.bottom - this.height; + this.velocity.y *= by; + this.blocked.down = true; + } } - if (pos.y < bounds.y && check.up) - { - pos.y = bounds.y; - this.velocity.y *= by; - this.blocked.up = true; - } - else if (this.bottom > bounds.bottom && check.down) - { - pos.y = bounds.bottom - this.height; - this.velocity.y *= by; - this.blocked.down = true; - } + return (this.blocked.up || this.blocked.down || this.blocked.left || this.blocked.right); }, @@ -929,6 +1050,9 @@ Phaser.Physics.Arcade.Body.prototype = { * 24 is the horizontal offset of the Body from the top-left of the Sprites texture, and 34 * is the vertical offset. * + * Calling `setSize` on a Body that has already had `setCircle` will reset all of the Circle + * properties, making this Body rectangular again. + * * @method Phaser.Physics.Arcade.Body#setSize * @param {number} width - The width of the Body. * @param {number} height - The height of the Body. @@ -950,6 +1074,55 @@ Phaser.Physics.Arcade.Body.prototype = { this.center.setTo(this.position.x + this.halfWidth, this.position.y + this.halfHeight); + this.isCircle = false; + this.radius = 0; + + }, + + /** + * Sets this Body as using a circle, of the given radius, for all collision detection instead of a rectangle. + * The radius is given in pixels and is the distance from the center of the circle to the edge. + * + * You can also control the x and y offset, which is the position of the Body relative to the top-left of the Sprite. + * + * To change a Body back to being rectangular again call `Body.setSize`. + * + * Note: Circular collision only happens with other Arcade Physics bodies, it does not + * work against tile maps, where rectangular collision is the only method supported. + * + * @method Phaser.Physics.Arcade.Body#setCircle + * @param {number} [radius] - The radius of the Body in pixels. Pass a value of zero / undefined, to stop the Body using a circle for collision. + * @param {number} [offsetX] - The X offset of the Body from the Sprite position. + * @param {number} [offsetY] - The Y offset of the Body from the Sprite position. + */ + setCircle: function (radius, offsetX, offsetY) { + + if (offsetX === undefined) { offsetX = this.offset.x; } + if (offsetY === undefined) { offsetY = this.offset.y; } + + if (radius > 0) + { + this.isCircle = true; + this.radius = radius; + + this.sourceWidth = radius * 2; + this.sourceHeight = radius * 2; + + this.width = this.sourceWidth * this._sx; + this.height = this.sourceHeight * this._sy; + + this.halfWidth = Math.floor(this.width / 2); + this.halfHeight = Math.floor(this.height / 2); + + this.offset.setTo(offsetX, offsetY); + + this.center.setTo(this.position.x + this.halfWidth, this.position.y + this.halfHeight); + } + else + { + this.isCircle = false; + } + }, /** @@ -987,6 +1160,36 @@ Phaser.Physics.Arcade.Body.prototype = { }, + /** + * Returns the bounds of this physics body. + * + * Only used internally by the World collision methods. + * + * @method Phaser.Physics.Arcade.Body#getBounds + * @param {object} obj - The object in which to set the bounds values. + * @return {object} The object that was given to this method. + */ + getBounds: function (obj) { + + if (this.isCircle) + { + obj.x = this.center.x - this.radius; + obj.y = this.center.y - this.radius; + obj.right = this.center.x + this.radius; + obj.bottom = this.center.y + this.radius; + } + else + { + obj.x = this.x; + obj.y = this.y; + obj.right = this.right; + obj.bottom = this.bottom; + } + + return obj; + + }, + /** * Tests if a world point lies within this Body. * @@ -997,7 +1200,7 @@ Phaser.Physics.Arcade.Body.prototype = { */ hitTest: function (x, y) { - return Phaser.Rectangle.contains(this, x, y); + return (this.isCircle) ? Phaser.Circle.contains(this, x, y) : Phaser.Rectangle.contains(this, x, y); }, @@ -1231,15 +1434,33 @@ Phaser.Physics.Arcade.Body.render = function (context, body, color, filled) { color = color || 'rgba(0,255,0,0.4)'; - if (filled) + context.fillStyle = color; + context.strokeStyle = color; + + if (body.isCircle) { - context.fillStyle = color; - context.fillRect(body.position.x - body.game.camera.x, body.position.y - body.game.camera.y, body.width, body.height); + context.beginPath(); + context.arc(body.center.x - body.game.camera.x, body.center.y - body.game.camera.y, body.radius, 0, 2 * Math.PI); + + if (filled) + { + context.fill(); + } + else + { + context.stroke(); + } } else { - context.strokeStyle = color; - context.strokeRect(body.position.x - body.game.camera.x, body.position.y - body.game.camera.y, body.width, body.height); + if (filled) + { + context.fillRect(body.position.x - body.game.camera.x, body.position.y - body.game.camera.y, body.width, body.height); + } + else + { + context.strokeRect(body.position.x - body.game.camera.x, body.position.y - body.game.camera.y, body.width, body.height); + } } }; diff --git a/src/physics/arcade/World.js b/src/physics/arcade/World.js index 987dc010c..fa28a2935 100644 --- a/src/physics/arcade/World.js +++ b/src/physics/arcade/World.js @@ -704,67 +704,70 @@ Phaser.Physics.Arcade.prototype = { return; } - var body; - if (this.skipQuadTree || sprite.body.skipQuadTree) { + var bounds; + for (var i = 0; i < group.hash.length; i++) { + var object1 = group.hash[i]; + // Skip duff entries - we can't check a non-existent sprite or one with no body - if (!group.hash[i] || !group.hash[i].exists || !group.hash[i].body) + if (!object1 || !object1.exists || !object1.body) { continue; } - body = group.hash[i].body; + // Inject the Body bounds data into the bounds object + bounds = object1.body.getBounds(bounds); // Skip items either side of the sprite if (this.sortDirection === Phaser.Physics.Arcade.LEFT_RIGHT) { - if (sprite.body.right < body.x) + if (sprite.body.right < bounds.x) { break; } - else if (body.right < sprite.body.x) + else if (bounds.right < sprite.body.x) { continue; } } else if (this.sortDirection === Phaser.Physics.Arcade.RIGHT_LEFT) { - if (sprite.body.x > body.right) + if (sprite.body.x > bounds.right) { break; } - else if (body.x > sprite.body.right) + else if (bounds.x > sprite.body.right) { continue; } } else if (this.sortDirection === Phaser.Physics.Arcade.TOP_BOTTOM) { - if (sprite.body.bottom < body.y) + if (sprite.body.bottom < bounds.y) { break; } - else if (body.bottom < sprite.body.y) + else if (bounds.bottom < sprite.body.y) { continue; } } else if (this.sortDirection === Phaser.Physics.Arcade.BOTTOM_TOP) { - if (sprite.body.y > body.bottom) + if (sprite.body.y > bounds.bottom) { break; } - else if (body.y > sprite.body.bottom) + else if (bounds.y > sprite.body.bottom) { continue; } } - this.collideSpriteVsSprite(sprite, group.hash[i], collideCallback, processCallback, callbackContext, overlapOnly); + this.collideSpriteVsSprite(sprite, object1, collideCallback, processCallback, callbackContext, overlapOnly); } } else @@ -816,65 +819,73 @@ Phaser.Physics.Arcade.prototype = { for (var i = 0; i < group.hash.length; i++) { + var bounds1; + var object1 = group.hash[i]; + // Skip duff entries - we can't check a non-existent sprite or one with no body - if (!group.hash[i] || !group.hash[i].exists || !group.hash[i].body) + if (!object1 || !object1.exists || !object1.body) { continue; } - var object1 = group.hash[i]; + // Inject the Body bounds data into the bounds1 object + bounds1 = object1.body.getBounds(bounds1); for (var j = i + 1; j < group.hash.length; j++) { + var bounds2; + var object2 = group.hash[j]; + // Skip duff entries - we can't check a non-existent sprite or one with no body - if (!group.hash[j] || !group.hash[j].exists || !group.hash[j].body) + if (!object2 || !object2.exists || !object2.body) { continue; } - var object2 = group.hash[j]; + // Inject the Body bounds data into the bounds2 object + bounds2 = object2.body.getBounds(bounds2); // Skip items either side of the sprite if (this.sortDirection === Phaser.Physics.Arcade.LEFT_RIGHT) { - if (object1.body.right < object2.body.x) + if (bounds1.right < bounds2.x) { break; } - else if (object2.body.right < object1.body.x) + else if (bounds2.right < bounds1.x) { continue; } } else if (this.sortDirection === Phaser.Physics.Arcade.RIGHT_LEFT) { - if (object1.body.x > object2.body.right) + if (bounds1.x > bounds2.right) { continue; } - else if (object2.body.x > object1.body.right) + else if (bounds2.x > bounds1.right) { break; } } else if (this.sortDirection === Phaser.Physics.Arcade.TOP_BOTTOM) { - if (object1.body.bottom < object2.body.y) + if (bounds1.bottom < bounds2.y) { continue; } - else if (object2.body.bottom < object1.body.y) + else if (bounds2.bottom < bounds1.y) { break; } } else if (this.sortDirection === Phaser.Physics.Arcade.BOTTOM_TOP) { - if (object1.body.y > object2.body.bottom) + if (bounds1.y > bounds2.bottom) { continue; } - else if (object2.body.y > object1.body.bottom) + else if (bounds2.y > object1.body.bottom) { break; } @@ -947,6 +958,42 @@ Phaser.Physics.Arcade.prototype = { return false; } + // Circle vs. Circle quick bail out + if (body1.isCircle && body2.isCircle) + { + return this.separateCircle(body1, body2, overlapOnly); + } + + // We define the behavior of bodies in a collision circle and rectangle + // If a collision occurs in the corner points of the rectangle, the body behave like circles + + // Either body1 or body2 is a circle + if (body1.isCircle !== body2.isCircle) + { + var bodyRect = (body1.isCircle) ? body2 : body1; + var bodyCircle = (body1.isCircle) ? body1 : body2; + + var rect = { + x: bodyRect.x, + y: bodyRect.y, + right: bodyRect.right, + bottom: bodyRect.bottom + }; + + var circle = { + x: bodyCircle.x + bodyCircle.radius, + y: bodyCircle.y + bodyCircle.radius + }; + + if (circle.y < rect.y || circle.y > rect.bottom) + { + if (circle.x < rect.x || circle.x > rect.right) + { + return this.separateCircle(body1, body2, overlapOnly); + } + } + } + var resultX = false; var resultY = false; @@ -972,7 +1019,37 @@ Phaser.Physics.Arcade.prototype = { } } - return (resultX || resultY); + var result = (resultX || resultY); + + if (result) + { + if (overlapOnly) + { + if (body1.onOverlap) + { + body1.onOverlap.dispatch(body1.sprite, body2.sprite); + } + + if (body2.onOverlap) + { + body2.onOverlap.dispatch(body2.sprite, body1.sprite); + } + } + else + { + if (body1.onCollide) + { + body1.onCollide.dispatch(body1.sprite, body2.sprite); + } + + if (body2.onCollide) + { + body2.onCollide.dispatch(body2.sprite, body1.sprite); + } + } + } + + return result; }, @@ -990,26 +1067,253 @@ Phaser.Physics.Arcade.prototype = { { return false; } - - // Rect vs. Rect - if (body1.right <= body2.position.x) + + if (body1.isCircle) { - return false; + if (body2.isCircle) + { + // Circle vs. Circle + return Phaser.Math.distance(body1.center.x, body1.center.y, body2.center.x, body2.center.y) <= (body1.radius + body2.radius); + } + else + { + // Circle vs. Rect + return this.circleBodyIntersects(body1, body2); + } + } + else + { + if (body2.isCircle) + { + // Rect vs. Circle + return this.circleBodyIntersects(body2, body1); + } + else + { + // Rect vs. Rect + if (body1.right <= body2.position.x) + { + return false; + } + + if (body1.bottom <= body2.position.y) + { + return false; + } + + if (body1.position.x >= body2.right) + { + return false; + } + + if (body1.position.y >= body2.bottom) + { + return false; + } + + return true; + } } - if (body1.bottom <= body2.position.y) + }, + + /** + * Checks to see if a circular Body intersects with a Rectangular Body. + * + * @method Phaser.Physics.Arcade#circleBodyIntersects + * @param {Phaser.Physics.Arcade.Body} circle - The Body with `isCircle` set. + * @param {Phaser.Physics.Arcade.Body} body - The Body with `isCircle` not set (i.e. uses Rectangle shape) + * @return {boolean} Returns true if the bodies intersect, otherwise false. + */ + circleBodyIntersects: function (circle, body) { + + var x = Phaser.Math.clamp(circle.center.x, body.left, body.right); + var y = Phaser.Math.clamp(circle.center.y, body.top, body.bottom); + + var dx = (circle.center.x - x) * (circle.center.x - x); + var dy = (circle.center.y - y) * (circle.center.y - y); + + return (dx + dy) <= (circle.radius * circle.radius); + + }, + + /** + * The core separation function to separate two circular physics bodies. + * + * @method Phaser.Physics.Arcade#separateCircle + * @private + * @param {Phaser.Physics.Arcade.Body} body1 - The first Body to separate. Must have `Body.isCircle` true and a positive `radius`. + * @param {Phaser.Physics.Arcade.Body} body2 - The second Body to separate. Must have `Body.isCircle` true and a positive `radius`. + * @param {boolean} overlapOnly - If true the bodies will only have their overlap data set, no separation or exchange of velocity will take place. + * @return {boolean} Returns true if the bodies were separated or overlap, otherwise false. + */ + separateCircle: function (body1, body2, overlapOnly) { + + // Set the bounding box overlap values + this.getOverlapX(body1, body2); + this.getOverlapY(body1, body2); + + var angleCollision = this.angleBetweenCenters(body1, body2); + + var overlap = 0; + + if (body1.isCircle !== body2.isCircle) { - return false; + var rect = { + x: (body2.isCircle) ? body1.position.x : body2.position.x, + y: (body2.isCircle) ? body1.position.y : body2.position.y, + right: (body2.isCircle) ? body1.right : body2.right, + bottom: (body2.isCircle) ? body1.bottom : body2.bottom + }; + + var circle = { + x: (body1.isCircle) ? (body1.position.x + body1.radius) : (body2.position.x + body2.radius), + y: (body1.isCircle) ? (body1.position.y + body1.radius) : (body2.position.y + body2.radius), + radius: (body1.isCircle) ? body1.radius : body2.radius + }; + + if (circle.y < rect.y) + { + if (circle.x < rect.x) + { + overlap = Phaser.Math.distance(circle.x, circle.y, rect.x, rect.y) - circle.radius; + } + else if (circle.x > rect.right) + { + overlap = Phaser.Math.distance(circle.x, circle.y, rect.right, rect.y) - circle.radius; + } + } + else if (circle.y > rect.bottom) + { + if (circle.x < rect.x) + { + overlap = Phaser.Math.distance(circle.x, circle.y, rect.x, rect.bottom) - circle.radius; + } + else if (circle.x > rect.right) + { + overlap = Phaser.Math.distance(circle.x, circle.y, rect.right, rect.bottom) - circle.radius; + } + } + + overlap *= -1; + } + else + { + overlap = (body1.radius + body2.radius) - Phaser.Math.distance(body1.center.x, body1.center.y, body2.center.x, body2.center.y); } - if (body1.position.x >= body2.right) + // Can't separate two immovable bodies, or a body with its own custom separation logic + if (overlapOnly || overlap === 0 || (body1.immovable && body2.immovable) || body1.customSeparateX || body2.customSeparateX) { - return false; + if (overlap !== 0) + { + if (body1.onOverlap) + { + body1.onOverlap.dispatch(body1.sprite, body2.sprite); + } + + if (body2.onOverlap) + { + body2.onOverlap.dispatch(body2.sprite, body1.sprite); + } + } + + // return true if there was some overlap, otherwise false + return (overlap !== 0); } - if (body1.position.y >= body2.bottom) + // Transform the velocity vector to the coordinate system oriented along the direction of impact. + // This is done to eliminate the vertical component of the velocity + var v1 = { + x: body1.velocity.x * Math.cos(angleCollision) + body1.velocity.y * Math.sin(angleCollision), + y: body1.velocity.x * Math.sin(angleCollision) - body1.velocity.y * Math.cos(angleCollision) + }; + + var v2 = { + x: body2.velocity.x * Math.cos(angleCollision) + body2.velocity.y * Math.sin(angleCollision), + y: body2.velocity.x * Math.sin(angleCollision) - body2.velocity.y * Math.cos(angleCollision) + }; + + // We expect the new velocity after impact + var tempVel1 = ((body1.mass - body2.mass) * v1.x + 2 * body2.mass * v2.x) / (body1.mass + body2.mass); + var tempVel2 = (2 * body1.mass * v1.x + (body2.mass - body1.mass) * v2.x) / (body1.mass + body2.mass); + + // We convert the vector to the original coordinate system and multiplied by factor of rebound + if (!body1.immovable) { - return false; + body1.velocity.x = (tempVel1 * Math.cos(angleCollision) - v1.y * Math.sin(angleCollision)) * body1.bounce.x; + body1.velocity.y = (v1.y * Math.cos(angleCollision) + tempVel1 * Math.sin(angleCollision)) * body1.bounce.y; + } + + if (!body2.immovable) + { + body2.velocity.x = (tempVel2 * Math.cos(angleCollision) - v2.y * Math.sin(angleCollision)) * body2.bounce.x; + body2.velocity.y = (v2.y * Math.cos(angleCollision) + tempVel2 * Math.sin(angleCollision)) * body2.bounce.y; + } + + // When the collision angle is almost perpendicular to the total initial velocity vector + // (collision on a tangent) vector direction can be determined incorrectly. + // This code fixes the problem + + if (Math.abs(angleCollision) < Math.PI / 2) + { + if ((body1.velocity.x > 0) && !body1.immovable && (body2.velocity.x > body1.velocity.x)) + { + body1.velocity.x *= -1; + } + else if ((body2.velocity.x < 0) && !body2.immovable && (body1.velocity.x < body2.velocity.x)) + { + body2.velocity.x *= -1; + } + else if ((body1.velocity.y > 0) && !body1.immovable && (body2.velocity.y > body1.velocity.y)) + { + body1.velocity.y *= -1; + } + else if ((body2.velocity.y < 0) && !body2.immovable && (body1.velocity.y < body2.velocity.y)) + { + body2.velocity.y *= -1; + } + } + else if (Math.abs(angleCollision) > Math.PI / 2) + { + if ((body1.velocity.x < 0) && !body1.immovable && (body2.velocity.x < body1.velocity.x)) + { + body1.velocity.x *= -1; + } + else if ((body2.velocity.x > 0) && !body2.immovable && (body1.velocity.x > body2.velocity.x)) + { + body2.velocity.x *= -1; + } + else if ((body1.velocity.y < 0) && !body1.immovable && (body2.velocity.y < body1.velocity.y)) + { + body1.velocity.y *= -1; + } + else if ((body2.velocity.y > 0) && !body2.immovable && (body1.velocity.x > body2.velocity.y)) + { + body2.velocity.y *= -1; + } + } + + if (!body1.immovable) + { + body1.x += (body1.velocity.x * this.game.time.physicsElapsed) - overlap * Math.cos(angleCollision); + body1.y += (body1.velocity.y * this.game.time.physicsElapsed) - overlap * Math.sin(angleCollision); + } + + if (!body2.immovable) + { + body2.x += (body2.velocity.x * this.game.time.physicsElapsed) + overlap * Math.cos(angleCollision); + body2.y += (body2.velocity.y * this.game.time.physicsElapsed) + overlap * Math.sin(angleCollision); + } + + if (body1.onCollide) + { + body1.onCollide.dispatch(body1.sprite, body2.sprite); + } + + if (body2.onCollide) + { + body2.onCollide.dispatch(body2.sprite, body1.sprite); } return true; @@ -1709,6 +2013,23 @@ Phaser.Physics.Arcade.prototype = { }, + /** + * Find the angle in radians between centers of two display objects (like Sprites). + * + * @method Phaser.Physics.Arcade#angleBetweenCenters + * @param {any} source - The Display Object to test from. + * @param {any} target - The Display Object to test to. + * @return {number} The angle in radians between the source and target display objects. + */ + angleBetweenCenters: function (source, target) { + + var dx = target.center.x - source.center.x; + var dy = target.center.y - source.center.y; + + return Math.atan2(dy, dx); + + }, + /** * Find the angle in radians between a display object (like a Sprite) and the given x/y coordinate. * diff --git a/src/physics/p2/World.js b/src/physics/p2/World.js index 6a649d219..a19658f45 100644 --- a/src/physics/p2/World.js +++ b/src/physics/p2/World.js @@ -711,13 +711,13 @@ Phaser.Physics.P2.prototype = { this.walls[wall] = new p2.Body({ mass: 0, position: [ this.pxmi(x), this.pxmi(y) ], angle: angle }); this.walls[wall].addShape(new p2.Plane()); - if (setCollisionGroup) - { - this.walls[wall].shapes[0].collisionGroup = this.boundsCollisionGroup.mask; - } - this.world.addBody(this.walls[wall]); } + + if (setCollisionGroup) + { + this.walls[wall].shapes[0].collisionGroup = this.boundsCollisionGroup.mask; + } } else { @@ -866,6 +866,9 @@ Phaser.Physics.P2.prototype = { this._toRemove = []; this.boundsCollidesWith = []; + // Remove the world bounds + this.walls = { left: null, right: null, top: null, bottom: null }; + }, /** diff --git a/src/pixi/display/DisplayObject.js b/src/pixi/display/DisplayObject.js index ed8930e6c..b1f327ef2 100644 --- a/src/pixi/display/DisplayObject.js +++ b/src/pixi/display/DisplayObject.js @@ -1,62 +1,89 @@ /** - * @author Mat Groves http://matgroves.com/ @Doormat23 - */ +* @author Mat Groves http://matgroves.com @Doormat23 +* @author Richard Davey +* @license {@link https://github.com/photonstorm/phaser/blob/master/license.txt|MIT License} +*/ /** - * The base class for all objects that are rendered on the screen. - * This is an abstract class and should not be used on its own rather it should be extended. - * - * @class DisplayObject - * @constructor - */ -PIXI.DisplayObject = function() -{ +* The base class for all objects that are rendered. Contains properties for position, scaling, +* rotation, masks and cache handling. +* +* This is an abstract class and should not be used on its own, rather it should be extended. +* +* It is used internally by the likes of PIXI.Sprite. +* +* @class PIXI.DisplayObject +* @constructor +*/ +PIXI.DisplayObject = function() { + /** - * The coordinate of the object relative to the local coordinates of the parent. - * - * @property position - * @type Point - */ + * The coordinates, in pixels, of this DisplayObject, relative to its parent container. + * + * The value of this property does not reflect any positioning happening further up the display list. + * To obtain that value please see the `worldPosition` property. + * + * @property {PIXI.Point} position + * @default + */ this.position = new PIXI.Point(0, 0); /** - * The scale factor of the object. - * - * @property scale - * @type Point - */ + * The scale of this DisplayObject. A scale of 1:1 represents the DisplayObject + * at its default size. A value of 0.5 would scale this DisplayObject by half, and so on. + * + * The value of this property does not reflect any scaling happening further up the display list. + * To obtain that value please see the `worldScale` property. + * + * @property {PIXI.Point} scale + * @default + */ this.scale = new PIXI.Point(1, 1); /** - * The pivot point of the displayObject that it rotates around - * - * @property pivot - * @type Point - */ + * The pivot point of this DisplayObject that it rotates around. The values are expressed + * in pixel values. + * @property {PIXI.Point} pivot + * @default + */ this.pivot = new PIXI.Point(0, 0); /** - * The rotation of the object in radians. - * - * @property rotation - * @type Number - */ + * The rotation of this DisplayObject. The value is given, and expressed, in radians, and is based on + * a right-handed orientation. + * + * The value of this property does not reflect any rotation happening further up the display list. + * To obtain that value please see the `worldRotation` property. + * + * @property {number} rotation + * @default + */ this.rotation = 0; /** - * The opacity of the object. - * - * @property alpha - * @type Number - */ + * The alpha value of this DisplayObject. A value of 1 is fully opaque. A value of 0 is transparent. + * Please note that an object with an alpha value of 0 is skipped during the render pass. + * + * The value of this property does not reflect any alpha values set further up the display list. + * To obtain that value please see the `worldAlpha` property. + * + * @property {number} alpha + * @default + */ this.alpha = 1; /** - * The visibility of the object. - * - * @property visible - * @type Boolean - */ + * The visibility of this DisplayObject. A value of `false` makes the object invisible. + * A value of `true` makes it visible. Please note that an object with a visible value of + * `false` is skipped during the render pass. Equally a DisplayObject with visible false will + * not render any of its children. + * + * The value of this property does not reflect any visible values set further up the display list. + * To obtain that value please see the `worldVisible` property. + * + * @property {boolean} visible + * @default + */ this.visible = true; /** @@ -69,688 +96,729 @@ PIXI.DisplayObject = function() this.hitArea = null; /** - * Can this object be rendered - * - * @property renderable - * @type Boolean - */ + * Should this DisplayObject be rendered by the renderer? An object with a renderable value of + * `false` is skipped during the render pass. + * + * @property {boolean} renderable + * @default + */ this.renderable = false; /** - * [read-only] The display object container that contains this display object. - * - * @property parent - * @type DisplayObjectContainer - * @readOnly - */ + * The parent DisplayObjectContainer that this DisplayObject is a child of. + * All DisplayObjects must belong to a parent in order to be rendered. + * The root parent is the Stage object. This property is set automatically when the + * DisplayObject is added to, or removed from, a DisplayObjectContainer. + * + * @property {PIXI.DisplayObjectContainer} parent + * @default + * @readOnly + */ this.parent = null; /** - * [read-only] The stage the display object is connected to, or undefined if it is not connected to the stage. - * - * @property stage - * @type Stage - * @readOnly - */ + * The stage that this DisplayObject is connected to. + * + * @property {PIXI.Stage} stage + * @default + * @readOnly + */ this.stage = null; /** - * [read-only] The multiplied alpha of the displayObject - * - * @property worldAlpha - * @type Number - * @readOnly - */ + * The multiplied alpha value of this DisplayObject. A value of 1 is fully opaque. A value of 0 is transparent. + * This value is the calculated total, based on the alpha values of all parents of this DisplayObjects + * in the display list. + * + * To obtain, and set, the local alpha value, see the `alpha` property. + * + * Note: This property is only updated at the end of the `updateTransform` call, once per render. Until + * that happens this property will contain values based on the previous frame. Be mindful of this if + * accessing this property outside of the normal game flow, i.e. from an asynchronous event callback. + * + * @property {number} worldAlpha + * @readOnly + */ this.worldAlpha = 1; /** - * [read-only] Current transform of the object based on world (parent) factors - * - * @property worldTransform - * @type Matrix - * @readOnly - * @private - */ + * The current transform of this DisplayObject. + * + * This property contains the calculated total, based on the transforms of all parents of this + * DisplayObject in the display list. + * + * Note: This property is only updated at the end of the `updateTransform` call, once per render. Until + * that happens this property will contain values based on the previous frame. Be mindful of this if + * accessing this property outside of the normal game flow, i.e. from an asynchronous event callback. + * + * @property {PIXI.Matrix} worldTransform + * @readOnly + */ this.worldTransform = new PIXI.Matrix(); /** - * The position of the Display Object based on the world transform. - * This value is updated at the end of updateTransform and takes all parent transforms into account. - * - * @property worldPosition - * @type Point - * @readOnly - */ + * The coordinates, in pixels, of this DisplayObject within the world. + * + * This property contains the calculated total, based on the positions of all parents of this + * DisplayObject in the display list. + * + * Note: This property is only updated at the end of the `updateTransform` call, once per render. Until + * that happens this property will contain values based on the previous frame. Be mindful of this if + * accessing this property outside of the normal game flow, i.e. from an asynchronous event callback. + * + * @property {PIXI.Point} worldPosition + * @readOnly + */ this.worldPosition = new PIXI.Point(0, 0); /** - * The scale of the Display Object based on the world transform. - * This value is updated at the end of updateTransform and takes all parent transforms into account. - * - * @property worldScale - * @type Point - * @readOnly - */ + * The global scale of this DisplayObject. + * + * This property contains the calculated total, based on the scales of all parents of this + * DisplayObject in the display list. + * + * Note: This property is only updated at the end of the `updateTransform` call, once per render. Until + * that happens this property will contain values based on the previous frame. Be mindful of this if + * accessing this property outside of the normal game flow, i.e. from an asynchronous event callback. + * + * @property {PIXI.Point} worldScale + * @readOnly + */ this.worldScale = new PIXI.Point(1, 1); /** - * The rotation of the Display Object, in radians, based on the world transform. - * This value is updated at the end of updateTransform and takes all parent transforms into account. - * - * @property worldRotation - * @type Number - * @readOnly - */ + * The rotation, in radians, of this DisplayObject. + * + * This property contains the calculated total, based on the rotations of all parents of this + * DisplayObject in the display list. + * + * Note: This property is only updated at the end of the `updateTransform` call, once per render. Until + * that happens this property will contain values based on the previous frame. Be mindful of this if + * accessing this property outside of the normal game flow, i.e. from an asynchronous event callback. + * + * @property {number} worldRotation + * @readOnly + */ this.worldRotation = 0; /** - * cached sin rotation and cos rotation - * - * @property _sr - * @type Number - * @private - */ - this._sr = 0; - - /** - * cached sin rotation and cos rotation - * - * @property _cr - * @type Number - * @private - */ - this._cr = 1; - - /** - * The area the filter is applied to like the hitArea this is used as more of an optimisation - * rather than figuring out the dimensions of the displayObject each frame you can set this rectangle - * - * @property filterArea - * @type Rectangle - */ + * The rectangular area used by filters when rendering a shader for this DisplayObject. + * + * @property {PIXI.Rectangle} filterArea + * @type Rectangle + * @default + */ this.filterArea = null; /** - * The original, cached bounds of the object - * - * @property _bounds - * @type Rectangle - * @private - */ + * @property {number} _sr - Cached rotation value. + * @private + */ + this._sr = 0; + + /** + * @property {number} _cr - Cached rotation value. + * @private + */ + this._cr = 1; + + /** + * @property {PIXI.Rectangle} _bounds - The cached bounds of this object. + * @private + */ this._bounds = new PIXI.Rectangle(0, 0, 1, 1); /** - * The most up-to-date bounds of the object - * - * @property _currentBounds - * @type Rectangle - * @private - */ + * @property {PIXI.Rectangle} _currentBounds - The most recently calculated bounds of this object. + * @private + */ this._currentBounds = null; /** - * The original, cached mask of the object - * - * @property _mask - * @type Rectangle - * @private - */ + * @property {PIXI.Rectangle} _mask - The cached mask of this object. + * @private + */ this._mask = null; /** - * Cached internal flag. - * - * @property _cacheAsBitmap - * @type Boolean - * @private - */ + * @property {boolean} _cacheAsBitmap - Internal cache as bitmap flag. + * @private + */ this._cacheAsBitmap = false; /** - * Cached internal flag. - * - * @property _cacheIsDirty - * @type Boolean - * @private - */ + * @property {boolean} _cacheIsDirty - Internal dirty cache flag. + * @private + */ this._cacheIsDirty = false; }; -// constructor PIXI.DisplayObject.prototype.constructor = PIXI.DisplayObject; -/** - * Destroy this DisplayObject. - * Removes all references to transformCallbacks, its parent, the stage, filters, bounds, mask and cached Sprites. - * - * @method destroy - */ -PIXI.DisplayObject.prototype.destroy = function() -{ - if (this.children) - { - var i = this.children.length; +PIXI.DisplayObject.prototype = { - while (i--) + /** + * Destroy this DisplayObject. + * + * Removes any cached sprites, sets renderable flag to false, and nulls references to the Stage, filters, + * bounds and mask. + * + * Also iteratively calls `destroy` on any children. + * + * @method PIXI.DisplayObject#destroy + */ + destroy: function () { + + if (this.children) { - this.children[i].destroy(); - } + var i = this.children.length; - this.children = []; - } - - this.hitArea = null; - this.parent = null; - this.stage = null; - this.worldTransform = null; - this.filterArea = null; - this._bounds = null; - this._currentBounds = null; - this._mask = null; - - // In case Pixi is still going to try and render it even though destroyed - this.renderable = false; - - this._destroyCachedSprite(); -}; - -/** - * [read-only] Indicates if the sprite is globally visible. - * - * @property worldVisible - * @type Boolean - */ -Object.defineProperty(PIXI.DisplayObject.prototype, 'worldVisible', { - - get: function() { - - var item = this; - - do - { - if (!item.visible) return false; - item = item.parent; - } - while(item); - - return true; - } - -}); - -/** - * Sets a mask for the displayObject. A mask is an object that limits the visibility of an object to the shape of the mask applied to it. - * In PIXI a regular mask must be a PIXI.Graphics object. This allows for much faster masking in canvas as it utilises shape clipping. - * To remove a mask, set this property to null. - * - * @property mask - * @type Graphics - */ -Object.defineProperty(PIXI.DisplayObject.prototype, 'mask', { - - get: function() { - return this._mask; - }, - - set: function(value) { - - if (this._mask) this._mask.isMask = false; - - this._mask = value; - - if (this._mask) this._mask.isMask = true; - } - -}); - -/** - * Sets the filters for the displayObject. - * IMPORTANT: This is a webGL only feature and will be ignored by the Canvas renderer. - * - * To remove filters simply set this property to 'null'. - * - * You cannot have a filter and a multiply blend mode active at the same time. Setting a filter will reset - * this objects blend mode to NORMAL. - * - * @property filters - * @type Array(Filter) - */ -Object.defineProperty(PIXI.DisplayObject.prototype, 'filters', { - - get: function() { - return this._filters; - }, - - set: function(value) { - - if (value) - { - // now put all the passes in one place.. - var passes = []; - - for (var i = 0; i < value.length; i++) + while (i--) { - var filterPasses = value[i].passes; - - for (var j = 0; j < filterPasses.length; j++) - { - passes.push(filterPasses[j]); - } + this.children[i].destroy(); } - // TODO change this as it is legacy - this._filterBlock = { target: this, filterPasses: passes }; + this.children = []; } - this._filters = value; + this.hitArea = null; + this.parent = null; + this.stage = null; + this.worldTransform = null; + this.filterArea = null; + this.renderable = false; - if (this.blendMode && this.blendMode === PIXI.blendModes.MULTIPLY) - { - this.blendMode = PIXI.blendModes.NORMAL; - } - } -}); + this._bounds = null; + this._currentBounds = null; + this._mask = null; -/** - * Set if this display object is cached as a bitmap. - * This basically takes a snap shot of the display object as it is at that moment. It can provide a performance benefit for complex static displayObjects. - * To remove simply set this property to 'null' - * @property cacheAsBitmap - * @type Boolean - */ -Object.defineProperty(PIXI.DisplayObject.prototype, 'cacheAsBitmap', { + this._destroyCachedSprite(); - get: function() { - return this._cacheAsBitmap; }, - set: function(value) { + /* + * Updates the transform matrix this DisplayObject uses for rendering. + * + * If the object has no parent, and no parent parameter is provided, it will default to + * Phaser.Game.World as the parent transform to use. If that is unavailable the transform fails to take place. + * + * The `parent` parameter has priority over the actual parent. Use it as a parent override. + * Setting it does **not** change the actual parent of this DisplayObject. + * + * Calling this method updates the `worldTransform`, `worldAlpha`, `worldPosition`, `worldScale` + * and `worldRotation` properties. + * + * If a `transformCallback` has been specified, it is called at the end of this method, and is passed + * the new, updated, worldTransform property, along with the parent transform used. + * + * @method PIXI.DisplayObject#updateTransform + * @param {PIXI.DisplayObject} [parent] - Optional parent to calculate this DisplayObjects transform from. + * @return {PIXI.DisplayObject} - A reference to this DisplayObject. + */ + updateTransform: function (parent) { - if (this._cacheAsBitmap === value) + if (!parent && !this.parent && !this.game) + { + return this; + } + + var p = this.parent; + + if (parent) + { + p = parent; + } + else if (!this.parent) + { + p = this.game.world; + } + + // create some matrix refs for easy access + var pt = p.worldTransform; + var wt = this.worldTransform; + + // temporary matrix variables + var a, b, c, d, tx, ty; + + // so if rotation is between 0 then we can simplify the multiplication process.. + if (this.rotation % PIXI.PI_2) + { + // check to see if the rotation is the same as the previous render. This means we only need to use sin and cos when rotation actually changes + if (this.rotation !== this.rotationCache) + { + this.rotationCache = this.rotation; + this._sr = Math.sin(this.rotation); + this._cr = Math.cos(this.rotation); + } + + // get the matrix values of the displayobject based on its transform properties.. + a = this._cr * this.scale.x; + b = this._sr * this.scale.x; + c = -this._sr * this.scale.y; + d = this._cr * this.scale.y; + tx = this.position.x; + ty = this.position.y; + + // check for pivot.. not often used so geared towards that fact! + if (this.pivot.x || this.pivot.y) + { + tx -= this.pivot.x * a + this.pivot.y * c; + ty -= this.pivot.x * b + this.pivot.y * d; + } + + // concat the parent matrix with the objects transform. + wt.a = a * pt.a + b * pt.c; + wt.b = a * pt.b + b * pt.d; + wt.c = c * pt.a + d * pt.c; + wt.d = c * pt.b + d * pt.d; + wt.tx = tx * pt.a + ty * pt.c + pt.tx; + wt.ty = tx * pt.b + ty * pt.d + pt.ty; + } + else + { + // lets do the fast version as we know there is no rotation.. + a = this.scale.x; + d = this.scale.y; + + tx = this.position.x - this.pivot.x * a; + ty = this.position.y - this.pivot.y * d; + + wt.a = a * pt.a; + wt.b = a * pt.b; + wt.c = d * pt.c; + wt.d = d * pt.d; + wt.tx = tx * pt.a + ty * pt.c + pt.tx; + wt.ty = tx * pt.b + ty * pt.d + pt.ty; + } + + // Set the World values + this.worldAlpha = this.alpha * p.worldAlpha; + this.worldPosition.set(wt.tx, wt.ty); + this.worldScale.set(this.scale.x * Math.sqrt(wt.a * wt.a + wt.c * wt.c), this.scale.y * Math.sqrt(wt.b * wt.b + wt.d * wt.d)); + this.worldRotation = Math.atan2(-wt.c, wt.d); + + // reset the bounds each time this is called! + this._currentBounds = null; + + // Custom callback? + if (this.transformCallback) + { + this.transformCallback.call(this.transformCallbackContext, wt, pt); + } + + return this; + + }, + + /** + * Sets the root Stage object that this DisplayObject is connected to. + * + * @method PIXI.DisplayObject#setStageReference + * @param {Phaser.Stage} stage - The stage that the object will have as its current stage reference + * @return {PIXI.DisplayObject} - A reference to this DisplayObject. + */ + setStageReference: function (stage) + { + this.stage = stage; + + return this; + + }, + + /** + * To be overridden by classes that require it. + * + * @method PIXI.DisplayObject#preUpdate + */ + preUpdate: function () { + + }, + + /** + * Generates a RenderTexture based on this DisplayObject, which can they be used to texture other Sprites. + * This can be useful if your DisplayObject is static, or complicated, and needs to be reused multiple times. + * + * Please note that no garbage collection takes place on old textures. It is up to you to destroy old textures, + * and references to them, so they don't linger in memory. + * + * @method PIXI.DisplayObject#generateTexture + * @param {number} [resolution=1] - The resolution of the texture being generated. + * @param {number} [scaleMode=PIXI.scaleModes.DEFAULT] - See {{#crossLink "PIXI/scaleModes:property"}}PIXI.scaleModes{{/crossLink}} for possible values. + * @param {PIXI.CanvasRenderer|PIXI.WebGLRenderer} renderer - The renderer used to generate the texture. + * @return {PIXI.RenderTexture} - A RenderTexture containing an image of this DisplayObject at the time it was invoked. + */ + generateTexture: function (resolution, scaleMode, renderer) { + + var bounds = this.getLocalBounds(); + + var renderTexture = new PIXI.RenderTexture(bounds.width | 0, bounds.height | 0, renderer, scaleMode, resolution); + + PIXI.DisplayObject._tempMatrix.tx = -bounds.x; + PIXI.DisplayObject._tempMatrix.ty = -bounds.y; + + renderTexture.render(this, PIXI.DisplayObject._tempMatrix); + + return renderTexture; + + }, + + /** + * If this DisplayObject has a cached Sprite, this method generates and updates it. + * + * @method PIXI.DisplayObject#updateCache + * @return {PIXI.DisplayObject} - A reference to this DisplayObject. + */ + updateCache: function () { + + this._generateCachedSprite(); + + return this; + + }, + + /** + * Calculates the global position of this DisplayObject, based on the position given. + * + * @method PIXI.DisplayObject#toGlobal + * @param {PIXI.Point} position - The global position to calculate from. + * @return {PIXI.Point} - A point object representing the position of this DisplayObject based on the global position given. + */ + toGlobal: function (position) { + + this.updateTransform(); + + return this.worldTransform.apply(position); + + }, + + /** + * Calculates the local position of this DisplayObject, relative to another point. + * + * @method PIXI.DisplayObject#toLocal + * @param {PIXI.Point} position - The world origin to calculate from. + * @param {PIXI.DisplayObject} [from] - An optional DisplayObject to calculate the global position from. + * @return {PIXI.Point} - A point object representing the position of this DisplayObject based on the global position given. + */ + toLocal: function (position, from) { + + if (from) + { + position = from.toGlobal(position); + } + + this.updateTransform(); + + return this.worldTransform.applyInverse(position); + + }, + + /** + * Internal method. + * + * @method PIXI.DisplayObject#_renderCachedSprite + * @private + * @param {Object} renderSession - The render session + */ + _renderCachedSprite: function (renderSession) { + + this._cachedSprite.worldAlpha = this.worldAlpha; + + if (renderSession.gl) + { + PIXI.Sprite.prototype._renderWebGL.call(this._cachedSprite, renderSession); + } + else + { + PIXI.Sprite.prototype._renderCanvas.call(this._cachedSprite, renderSession); + } + + }, + + /** + * Internal method. + * + * @method PIXI.DisplayObject#_generateCachedSprite + * @private + */ + _generateCachedSprite: function () { + + this._cacheAsBitmap = false; + + var bounds = this.getLocalBounds(); + + // Round it off and force non-zero dimensions + bounds.width = Math.max(1, Math.ceil(bounds.width)); + bounds.height = Math.max(1, Math.ceil(bounds.height)); + + this.updateTransform(); + + if (!this._cachedSprite) + { + var renderTexture = new PIXI.RenderTexture(bounds.width, bounds.height); + this._cachedSprite = new PIXI.Sprite(renderTexture); + this._cachedSprite.worldTransform = this.worldTransform; + } + else + { + this._cachedSprite.texture.resize(bounds.width, bounds.height); + } + + // Remove filters + var tempFilters = this._filters; + + this._filters = null; + this._cachedSprite.filters = tempFilters; + + PIXI.DisplayObject._tempMatrix.tx = -bounds.x; + PIXI.DisplayObject._tempMatrix.ty = -bounds.y; + + this._cachedSprite.texture.render(this, PIXI.DisplayObject._tempMatrix, true); + this._cachedSprite.anchor.x = -(bounds.x / bounds.width); + this._cachedSprite.anchor.y = -(bounds.y / bounds.height); + + this._filters = tempFilters; + + this._cacheAsBitmap = true; + + }, + + /** + * Destroys a cached Sprite. + * + * @method PIXI.DisplayObject#_destroyCachedSprite + * @private + */ + _destroyCachedSprite: function () { + + if (!this._cachedSprite) { return; } - if (value) - { - this._generateCachedSprite(); - } - else - { - this._destroyCachedSprite(); - } + this._cachedSprite.texture.destroy(true); - this._cacheAsBitmap = value; - } + this._cachedSprite = null; -}); - -/* - * Updates the object transform for rendering. - * - * If the object has no parent, and no parent parameter is provided, it will default to Phaser.Game.World as the parent. - * If that is unavailable the transform fails to take place. - * - * The `parent` parameter has priority over the actual parent. Use it as a parent override. - * Setting it does **not** change the actual parent of this DisplayObject, it just uses the parent for the transform update. - * - * @method updateTransform - * @param {DisplayObject} [parent] - Optional parent to parent this DisplayObject transform from. - */ -PIXI.DisplayObject.prototype.updateTransform = function(parent) -{ - if (!parent && !this.parent && !this.game) - { - return; - } - - var p = this.parent; - - if (parent) - { - p = parent; - } - else if (!this.parent) - { - p = this.game.world; - } - - // create some matrix refs for easy access - var pt = p.worldTransform; - var wt = this.worldTransform; - - // temporary matrix variables - var a, b, c, d, tx, ty; - - // so if rotation is between 0 then we can simplify the multiplication process.. - if (this.rotation % PIXI.PI_2) - { - // check to see if the rotation is the same as the previous render. This means we only need to use sin and cos when rotation actually changes - if (this.rotation !== this.rotationCache) - { - this.rotationCache = this.rotation; - this._sr = Math.sin(this.rotation); - this._cr = Math.cos(this.rotation); - } - - // get the matrix values of the displayobject based on its transform properties.. - a = this._cr * this.scale.x; - b = this._sr * this.scale.x; - c = -this._sr * this.scale.y; - d = this._cr * this.scale.y; - tx = this.position.x; - ty = this.position.y; - - // check for pivot.. not often used so geared towards that fact! - if (this.pivot.x || this.pivot.y) - { - tx -= this.pivot.x * a + this.pivot.y * c; - ty -= this.pivot.x * b + this.pivot.y * d; - } - - // concat the parent matrix with the objects transform. - wt.a = a * pt.a + b * pt.c; - wt.b = a * pt.b + b * pt.d; - wt.c = c * pt.a + d * pt.c; - wt.d = c * pt.b + d * pt.d; - wt.tx = tx * pt.a + ty * pt.c + pt.tx; - wt.ty = tx * pt.b + ty * pt.d + pt.ty; - } - else - { - // lets do the fast version as we know there is no rotation.. - a = this.scale.x; - d = this.scale.y; - - tx = this.position.x - this.pivot.x * a; - ty = this.position.y - this.pivot.y * d; - - wt.a = a * pt.a; - wt.b = a * pt.b; - wt.c = d * pt.c; - wt.d = d * pt.d; - wt.tx = tx * pt.a + ty * pt.c + pt.tx; - wt.ty = tx * pt.b + ty * pt.d + pt.ty; - } - - // Set the World values - this.worldAlpha = this.alpha * p.worldAlpha; - this.worldPosition.set(wt.tx, wt.ty); - this.worldScale.set(this.scale.x * Math.sqrt(wt.a * wt.a + wt.c * wt.c), this.scale.y * Math.sqrt(wt.b * wt.b + wt.d * wt.d)); - this.worldRotation = Math.atan2(-wt.c, wt.d); - - // reset the bounds each time this is called! - this._currentBounds = null; - - // Custom callback? - if (this.transformCallback) - { - this.transformCallback.call(this.transformCallbackContext, wt, pt); } }; -// performance increase to avoid using call.. (10x faster) +// Alias for updateTransform. As used in DisplayObject container, etc. PIXI.DisplayObject.prototype.displayObjectUpdateTransform = PIXI.DisplayObject.prototype.updateTransform; -/** - * Retrieves the bounds of the displayObject as a rectangle object - * - * @method getBounds - * @param matrix {Matrix} - * @return {Rectangle} the rectangular bounding area - */ -PIXI.DisplayObject.prototype.getBounds = function(matrix) -{ - matrix = matrix;//just to get passed js hinting (and preserve inheritance) - return PIXI.EmptyRectangle; -}; +Object.defineProperties(PIXI.DisplayObject.prototype, { -/** - * Retrieves the local bounds of the displayObject as a rectangle object - * - * @method getLocalBounds - * @return {Rectangle} the rectangular bounding area - */ -PIXI.DisplayObject.prototype.getLocalBounds = function() -{ - return this.getBounds(PIXI.identityMatrix);///PIXI.EmptyRectangle(); -}; + /** + * The horizontal position of the DisplayObject, in pixels, relative to its parent. + * If you need the world position of the DisplayObject, use `DisplayObject.worldPosition` instead. + * @name PIXI.DisplayObject#x + * @property {number} x - The horizontal position of the DisplayObject, in pixels, relative to its parent. + */ + 'x': { -/** - * Sets the object's stage reference, the stage this object is connected to - * - * @method setStageReference - * @param stage {Stage} the stage that the object will have as its current stage reference - */ -PIXI.DisplayObject.prototype.setStageReference = function(stage) -{ - this.stage = stage; -}; + get: function () { -/** - * Empty, to be overridden by classes that require it. - * - * @method preUpdate - */ -PIXI.DisplayObject.prototype.preUpdate = function() -{ -}; + return this.position.x; -/** - * Useful function that returns a texture of the displayObject object that can then be used to create sprites - * This can be quite useful if your displayObject is static / complicated and needs to be reused multiple times. - * - * @method generateTexture - * @param resolution {Number} The resolution of the texture being generated - * @param scaleMode {Number} See {{#crossLink "PIXI/scaleModes:property"}}PIXI.scaleModes{{/crossLink}} for possible values - * @param renderer {CanvasRenderer|WebGLRenderer} The renderer used to generate the texture. - * @return {RenderTexture} a texture of the graphics object - */ -PIXI.DisplayObject.prototype.generateTexture = function(resolution, scaleMode, renderer) -{ - var bounds = this.getLocalBounds(); + }, - var renderTexture = new PIXI.RenderTexture(bounds.width | 0, bounds.height | 0, renderer, scaleMode, resolution); - - PIXI.DisplayObject._tempMatrix.tx = -bounds.x; - PIXI.DisplayObject._tempMatrix.ty = -bounds.y; - - renderTexture.render(this, PIXI.DisplayObject._tempMatrix); + set: function (value) { - return renderTexture; -}; + this.position.x = value; -/** - * Generates and updates the cached sprite for this object. - * - * @method updateCache - */ -PIXI.DisplayObject.prototype.updateCache = function() -{ - this._generateCachedSprite(); -}; + } -/** - * Calculates the global position of the display object - * - * @method toGlobal - * @param position {Point} The world origin to calculate from - * @return {Point} A point object representing the position of this object - */ -PIXI.DisplayObject.prototype.toGlobal = function(position) -{ - // don't need to u[date the lot - this.displayObjectUpdateTransform(); - return this.worldTransform.apply(position); -}; - -/** - * Calculates the local position of the display object relative to another point - * - * @method toLocal - * @param position {Point} The world origin to calculate from - * @param [from] {DisplayObject} The DisplayObject to calculate the global position from - * @return {Point} A point object representing the position of this object - */ -PIXI.DisplayObject.prototype.toLocal = function(position, from) -{ - if (from) - { - position = from.toGlobal(position); - } - - // don't need to u[date the lot - this.displayObjectUpdateTransform(); - - return this.worldTransform.applyInverse(position); -}; - -/** - * Internal method. - * - * @method _renderCachedSprite - * @param renderSession {Object} The render session - * @private - */ -PIXI.DisplayObject.prototype._renderCachedSprite = function(renderSession) -{ - this._cachedSprite.worldAlpha = this.worldAlpha; - - if (renderSession.gl) - { - PIXI.Sprite.prototype._renderWebGL.call(this._cachedSprite, renderSession); - } - else - { - PIXI.Sprite.prototype._renderCanvas.call(this._cachedSprite, renderSession); - } -}; - -/** - * Internal method. - * - * @method _generateCachedSprite - * @private - */ -PIXI.DisplayObject.prototype._generateCachedSprite = function() -{ - this._cacheAsBitmap = false; - - var bounds = this.getLocalBounds(); - - // Round it off and force non-zero dimensions - bounds.width = Math.max(1, Math.ceil(bounds.width)); - bounds.height = Math.max(1, Math.ceil(bounds.height)); - - this.updateTransform(); - - if (!this._cachedSprite) - { - var renderTexture = new PIXI.RenderTexture(bounds.width, bounds.height); - this._cachedSprite = new PIXI.Sprite(renderTexture); - this._cachedSprite.worldTransform = this.worldTransform; - } - else - { - this._cachedSprite.texture.resize(bounds.width, bounds.height); - } - - // Remove filters - var tempFilters = this._filters; - this._filters = null; - this._cachedSprite.filters = tempFilters; - - // PIXI.DisplayObject._tempMatrix.identity(); - PIXI.DisplayObject._tempMatrix.tx = -bounds.x; - PIXI.DisplayObject._tempMatrix.ty = -bounds.y; - - this._cachedSprite.texture.render(this, PIXI.DisplayObject._tempMatrix, true); - this._cachedSprite.anchor.x = -(bounds.x / bounds.width); - this._cachedSprite.anchor.y = -(bounds.y / bounds.height); - - this._filters = tempFilters; - - this._cacheAsBitmap = true; -}; - -/** -* Destroys the cached sprite. -* -* @method _destroyCachedSprite -* @private -*/ -PIXI.DisplayObject.prototype._destroyCachedSprite = function() -{ - if (!this._cachedSprite) return; - - this._cachedSprite.texture.destroy(true); - - // TODO could be object pooled! - this._cachedSprite = null; -}; - -/** -* Renders the object using the WebGL renderer -* -* @method _renderWebGL -* @param renderSession {RenderSession} -* @private -*/ -PIXI.DisplayObject.prototype._renderWebGL = function(renderSession) -{ - // OVERWRITE; - // this line is just here to pass jshinting :) - renderSession = renderSession; -}; - -/** -* Renders the object using the Canvas renderer -* -* @method _renderCanvas -* @param renderSession {RenderSession} -* @private -*/ -PIXI.DisplayObject.prototype._renderCanvas = function(renderSession) -{ - // OVERWRITE; - // this line is just here to pass jshinting :) - renderSession = renderSession; -}; - -/** - * The position of the displayObject on the x axis relative to the local coordinates of the parent. - * - * @property x - * @type Number - */ -Object.defineProperty(PIXI.DisplayObject.prototype, 'x', { - - get: function() { - return this.position.x; }, - set: function(value) { - this.position.x = value; - } - -}); - -/** - * The position of the displayObject on the y axis relative to the local coordinates of the parent. - * - * @property y - * @type Number - */ -Object.defineProperty(PIXI.DisplayObject.prototype, 'y', { - - get: function() { - return this.position.y; - }, - - set: function(value) { - this.position.y = value; + /** + * The vertical position of the DisplayObject, in pixels, relative to its parent. + * If you need the world position of the DisplayObject, use `DisplayObject.worldPosition` instead. + * @name PIXI.DisplayObject#y + * @property {number} y - The vertical position of the DisplayObject, in pixels, relative to its parent. + */ + 'y': { + + get: function () { + + return this.position.y; + + }, + + set: function (value) { + + this.position.y = value; + + } + + }, + + /** + * Indicates if this DisplayObject is visible, based on it, and all of its parents, `visible` property values. + * @name PIXI.DisplayObject#worldVisible + * @property {boolean} worldVisible - Indicates if this DisplayObject is visible, based on it, and all of its parents, `visible` property values. + */ + 'worldVisible': { + + get: function () { + + if (!this.visible) + { + return false; + } + else + { + var item = this.parent; + + do + { + if (!item.visible) + { + return false; + } + + item = item.parent; + } + while (item); + + return true; + } + + } + + }, + + /** + * Sets a mask for this DisplayObject. A mask is an instance of a Graphics object. + * When applied it limits the visible area of this DisplayObject to the shape of the mask. + * Under a Canvas renderer it uses shape clipping. Under a WebGL renderer it uses a Stencil Buffer. + * To remove a mask, set this property to `null`. + * + * @name PIXI.DisplayObject#mask + * @property {PIXI.Graphics} mask - The mask applied to this DisplayObject. Set to `null` to remove an existing mask. + */ + 'mask': { + + get: function () { + + return this._mask; + + }, + + set: function (value) { + + if (this._mask) + { + this._mask.isMask = false; + } + + this._mask = value; + + if (value) + { + this._mask.isMask = true; + } + + } + + }, + + /** + * Sets the filters for this DisplayObject. This is a WebGL only feature, and is ignored by the Canvas + * Renderer. A filter is a shader applied to this DisplayObject. You can modify the placement of the filter + * using `DisplayObject.filterArea`. + * + * To remove filters, set this property to `null`. + * + * Note: You cannot have a filter set, and a MULTIPLY Blend Mode active, at the same time. Setting a + * filter will reset this DisplayObjects blend mode to NORMAL. + * + * @name PIXI.DisplayObject#filters + * @property {Array} filters - An Array of PIXI.AbstractFilter objects, or objects that extend them. + */ + 'filters': { + + get: function () { + + return this._filters; + + }, + + set: function (value) { + + if (Array.isArray(value)) + { + // Put all the passes in one place. + var passes = []; + + for (var i = 0; i < value.length; i++) + { + var filterPasses = value[i].passes; + + for (var j = 0; j < filterPasses.length; j++) + { + passes.push(filterPasses[j]); + } + } + + // Needed any more? + this._filterBlock = { target: this, filterPasses: passes }; + } + + this._filters = value; + + if (this.blendMode && this.blendMode === PIXI.blendModes.MULTIPLY) + { + this.blendMode = PIXI.blendModes.NORMAL; + } + + } + + }, + + /** + * Sets if this DisplayObject should be cached as a bitmap. + * + * When invoked it will take a snapshot of the DisplayObject, as it is at that moment, and store it + * in a RenderTexture. This is then used whenever this DisplayObject is rendered. It can provide a + * performance benefit for complex, but static, DisplayObjects. I.e. those with lots of children. + * + * Cached Bitmaps do not track their parents. If you update a property of this DisplayObject, it will not + * re-generate the cached bitmap automatically. To do that you need to call `DisplayObject.updateCache`. + * + * To remove a cached bitmap, set this property to `null`. + * + * @name PIXI.DisplayObject#cacheAsBitmap + * @property {boolean} cacheAsBitmap - Cache this DisplayObject as a Bitmap. Set to `null` to remove an existing cached bitmap. + */ + 'cacheAsBitmap': { + + get: function () { + + return this._cacheAsBitmap; + + }, + + set: function (value) { + + if (this._cacheAsBitmap === value) + { + return; + } + + if (value) + { + this._generateCachedSprite(); + } + else + { + this._destroyCachedSprite(); + } + + this._cacheAsBitmap = value; + + } + } }); diff --git a/src/pixi/display/DisplayObjectContainer.js b/src/pixi/display/DisplayObjectContainer.js index d36fa7468..9f90e4cdb 100644 --- a/src/pixi/display/DisplayObjectContainer.js +++ b/src/pixi/display/DisplayObjectContainer.js @@ -328,6 +328,8 @@ PIXI.DisplayObjectContainer.prototype.getBounds = function() return PIXI.EmptyRectangle; } + this.updateTransform(); + var minX = Infinity; var minY = Infinity; diff --git a/src/pixi/display/Sprite.js b/src/pixi/display/Sprite.js index 37162dc65..2494e3acc 100644 --- a/src/pixi/display/Sprite.js +++ b/src/pixi/display/Sprite.js @@ -491,41 +491,3 @@ PIXI.Sprite.prototype._renderCanvas = function(renderSession, matrix) } }; - -// some helper functions.. - -/** - * - * Helper function that creates a sprite that will contain a texture from the TextureCache based on the frameId - * The frame ids are created when a Texture packer file has been loaded - * - * @method fromFrame - * @static - * @param frameId {String} The frame Id of the texture in the cache - * @return {Sprite} A new Sprite using a texture from the texture cache matching the frameId - */ -PIXI.Sprite.fromFrame = function(frameId) -{ - var texture = PIXI.TextureCache[frameId]; - - if (!texture) throw new Error('The frameId "' + frameId + '" does not exist in the texture cache' + this); - - return new PIXI.Sprite(texture); -}; - -/** - * - * Helper function that creates a sprite that will contain a texture based on an image url - * If the image is not in the texture cache it will be loaded - * - * @method fromImage - * @static - * @param imageId {String} The image url of the texture - * @return {Sprite} A new Sprite using a texture from the texture cache matching the image id - */ -PIXI.Sprite.fromImage = function(imageId, crossorigin, scaleMode) -{ - var texture = PIXI.Texture.fromImage(imageId, crossorigin, scaleMode); - - return new PIXI.Sprite(texture); -}; diff --git a/src/pixi/primitives/Graphics.js b/src/pixi/primitives/Graphics.js index ae557774e..301e40baa 100644 --- a/src/pixi/primitives/Graphics.js +++ b/src/pixi/primitives/Graphics.js @@ -203,6 +203,7 @@ PIXI.Graphics.prototype.lineTo = function(x, y) this.currentPath.shape.points.push(x, y); this.dirty = true; + this.updateLocalBounds(); return this; }; @@ -257,6 +258,7 @@ PIXI.Graphics.prototype.quadraticCurveTo = function(cpX, cpY, toX, toY) } this.dirty = true; + this.updateLocalBounds(); return this; }; @@ -315,6 +317,7 @@ PIXI.Graphics.prototype.bezierCurveTo = function(cpX, cpY, cpX2, cpY2, toX, toY) } this.dirty = true; + this.updateLocalBounds(); return this; }; @@ -384,6 +387,7 @@ PIXI.Graphics.prototype.arcTo = function(x1, y1, x2, y2, radius) } this.dirty = true; + this.updateLocalBounds(); return this; }; @@ -469,6 +473,7 @@ PIXI.Graphics.prototype.arc = function(cx, cy, radius, startAngle, endAngle, ant } this.dirty = true; + this.updateLocalBounds(); return this; }; @@ -630,6 +635,8 @@ PIXI.Graphics.prototype.clear = function() this.clearDirty = true; this.graphicsData = []; + this.updateLocalBounds(); + return this; }; @@ -664,8 +671,6 @@ PIXI.Graphics.prototype.generateTexture = function(resolution, scaleMode, paddin canvasBuffer.context.translate(-bounds.x, -bounds.y); - // Call here - PIXI.CanvasGraphics.renderGraphics(this, canvasBuffer.context); return texture; @@ -1177,8 +1182,11 @@ PIXI.Graphics.prototype.drawShape = function(shape) } this.dirty = true; + + this.updateLocalBounds(); return data; + }; /** diff --git a/src/pixi/textures/BaseTexture.js b/src/pixi/textures/BaseTexture.js index f26cf84ab..6c6058c9d 100644 --- a/src/pixi/textures/BaseTexture.js +++ b/src/pixi/textures/BaseTexture.js @@ -2,17 +2,13 @@ * @author Mat Groves http://matgroves.com/ @Doormat23 */ -PIXI.BaseTextureCache = {}; - -PIXI.BaseTextureCacheIdGenerator = 0; - /** * A texture stores the information that represents an image. All textures have a base texture. * * @class BaseTexture * @uses EventTarget * @constructor - * @param source {String} the source object (image or canvas) + * @param source {String|Canvas} the source object (image or canvas) * @param scaleMode {Number} See {{#crossLink "PIXI/scaleModes:property"}}PIXI.scaleModes{{/crossLink}} for possible values */ PIXI.BaseTexture = function(source, scaleMode) @@ -69,8 +65,6 @@ PIXI.BaseTexture = function(source, scaleMode) */ this.source = source; - this._UID = PIXI._UID++; - /** * Controls if RGB channels should be pre-multiplied by Alpha (WebGL only) * @@ -129,12 +123,6 @@ PIXI.BaseTexture = function(source, scaleMode) */ this.skipRender = false; - /** - * @property imageUrl - * @type String - */ - this.imageUrl = null; - /** * @property _powerOf2 * @type Boolean @@ -161,7 +149,6 @@ PIXI.BaseTexture.prototype.forceLoaded = function(width, height) this.width = width; this.height = height; this.dirty(); - }; /** @@ -171,23 +158,9 @@ PIXI.BaseTexture.prototype.forceLoaded = function(width, height) */ PIXI.BaseTexture.prototype.destroy = function() { - if (this.imageUrl) - { - delete PIXI.BaseTextureCache[this.imageUrl]; - delete PIXI.TextureCache[this.imageUrl]; - - this.imageUrl = null; - - if (!navigator.isCocoonJS) this.source.src = ''; - } - else if (this.source) + if (this.source) { PIXI.CanvasPool.removeByCanvas(this.source); - - if (this.source._pixiId) - { - delete PIXI.BaseTextureCache[this.source._pixiId]; - } } this.source = null; @@ -200,12 +173,11 @@ PIXI.BaseTexture.prototype.destroy = function() * * @method updateSourceImage * @param newSrc {String} the path of the image + * @deprecated This method is deprecated. Please use Phaser.Sprite.loadTexture instead. */ PIXI.BaseTexture.prototype.updateSourceImage = function(newSrc) { - this.hasLoaded = false; - this.source.src = null; - this.source.src = newSrc; + console.warn("PIXI.BaseTexture.updateSourceImage is deprecated. Use Phaser.Sprite.loadTexture instead."); }; /** @@ -249,49 +221,6 @@ PIXI.BaseTexture.prototype.unloadFromGPU = function() this.dirty(); }; -/** - * Helper function that creates a base texture from the given image url. - * If the image is not in the base texture cache it will be created and loaded. - * - * @static - * @method fromImage - * @param imageUrl {String} The image url of the texture - * @param crossorigin {Boolean} - * @param scaleMode {Number} See {{#crossLink "PIXI/scaleModes:property"}}PIXI.scaleModes{{/crossLink}} for possible values - * @return {BaseTexture} - */ -PIXI.BaseTexture.fromImage = function(imageUrl, crossorigin, scaleMode) -{ - var baseTexture = PIXI.BaseTextureCache[imageUrl]; - - if(crossorigin === undefined && imageUrl.indexOf('data:') === -1) crossorigin = true; - - if(!baseTexture) - { - // new Image() breaks tex loading in some versions of Chrome. - // See https://code.google.com/p/chromium/issues/detail?id=238071 - var image = new Image(); - - if (crossorigin) - { - image.crossOrigin = ''; - } - - image.src = imageUrl; - baseTexture = new PIXI.BaseTexture(image, scaleMode); - baseTexture.imageUrl = imageUrl; - PIXI.BaseTextureCache[imageUrl] = baseTexture; - - // if there is an @2x at the end of the url we are going to assume its a highres image - if( imageUrl.indexOf(PIXI.RETINA_PREFIX + '.') !== -1) - { - baseTexture.resolution = 2; - } - } - - return baseTexture; -}; - /** * Helper function that creates a base texture from the given canvas element. * @@ -303,11 +232,6 @@ PIXI.BaseTexture.fromImage = function(imageUrl, crossorigin, scaleMode) */ PIXI.BaseTexture.fromCanvas = function(canvas, scaleMode) { - if (!canvas._pixiId) - { - canvas._pixiId = 'canvas_' + PIXI.TextureCacheIdGenerator++; - } - if (canvas.width === 0) { canvas.width = 1; @@ -318,13 +242,5 @@ PIXI.BaseTexture.fromCanvas = function(canvas, scaleMode) canvas.height = 1; } - var baseTexture = PIXI.BaseTextureCache[canvas._pixiId]; - - if (!baseTexture) - { - baseTexture = new PIXI.BaseTexture(canvas, scaleMode); - PIXI.BaseTextureCache[canvas._pixiId] = baseTexture; - } - - return baseTexture; + return new PIXI.BaseTexture(canvas, scaleMode); }; diff --git a/src/pixi/textures/Texture.js b/src/pixi/textures/Texture.js index c2a4322d6..f9b31e50c 100644 --- a/src/pixi/textures/Texture.js +++ b/src/pixi/textures/Texture.js @@ -2,9 +2,6 @@ * @author Mat Groves http://matgroves.com/ @Doormat23 */ -PIXI.TextureCache = {}; -PIXI.FrameCache = {}; - /** * TextureSilentFail is a boolean that defaults to `false`. * If `true` then `PIXI.Texture.setFrame` will no longer throw an error if the texture dimensions are incorrect. @@ -14,8 +11,6 @@ PIXI.FrameCache = {}; */ PIXI.TextureSilentFail = false; -PIXI.TextureCacheIdGenerator = 0; - /** * A texture stores the information that represents an image or part of an image. It cannot be added * to the display list directly. Instead use it as the texture for a PIXI.Sprite. If no frame is provided then the whole image is used. @@ -251,46 +246,6 @@ PIXI.Texture.prototype._updateUvs = function() this._uvs.y3 = (frame.y + frame.height) / th; }; -/** - * Helper function that creates a Texture object from the given image url. - * If the image is not in the texture cache it will be created and loaded. - * - * @static - * @method fromImage - * @param imageUrl {String} The image url of the texture - * @param crossorigin {Boolean} Whether requests should be treated as crossorigin - * @param scaleMode {Number} See {{#crossLink "PIXI/scaleModes:property"}}PIXI.scaleModes{{/crossLink}} for possible values - * @return {Texture} - */ -PIXI.Texture.fromImage = function(imageUrl, crossorigin, scaleMode) -{ - var texture = PIXI.TextureCache[imageUrl]; - - if(!texture) - { - texture = new PIXI.Texture(PIXI.BaseTexture.fromImage(imageUrl, crossorigin, scaleMode)); - PIXI.TextureCache[imageUrl] = texture; - } - - return texture; -}; - -/** - * Helper function that returns a Texture objected based on the given frame id. - * If the frame id is not in the texture cache an error will be thrown. - * - * @static - * @method fromFrame - * @param frameId {String} The frame id of the texture - * @return {Texture} - */ -PIXI.Texture.fromFrame = function(frameId) -{ - var texture = PIXI.TextureCache[frameId]; - if(!texture) throw new Error('The frameId "' + frameId + '" does not exist in the texture cache '); - return texture; -}; - /** * Helper function that creates a new a Texture based on the given canvas element. * @@ -307,35 +262,6 @@ PIXI.Texture.fromCanvas = function(canvas, scaleMode) return new PIXI.Texture(baseTexture); }; -/** - * Adds a texture to the global PIXI.TextureCache. This cache is shared across the whole PIXI object. - * - * @static - * @method addTextureToCache - * @param texture {Texture} The Texture to add to the cache. - * @param id {String} The id that the texture will be stored against. - */ -PIXI.Texture.addTextureToCache = function(texture, id) -{ - PIXI.TextureCache[id] = texture; -}; - -/** - * Remove a texture from the global PIXI.TextureCache. - * - * @static - * @method removeTextureFromCache - * @param id {String} The id of the texture to be removed - * @return {Texture} The texture that was removed - */ -PIXI.Texture.removeTextureFromCache = function(id) -{ - var texture = PIXI.TextureCache[id]; - delete PIXI.TextureCache[id]; - delete PIXI.BaseTextureCache[id]; - return texture; -}; - PIXI.TextureUvs = function() { this.x0 = 0; diff --git a/src/pixi/utils/CanvasPool.js b/src/pixi/utils/CanvasPool.js index c502c746e..0ca3b8753 100644 --- a/src/pixi/utils/CanvasPool.js +++ b/src/pixi/utils/CanvasPool.js @@ -68,7 +68,7 @@ PIXI.CanvasPool = { for (var i = 0; i < pool.length; i++) { - if (pool[i].parent === null) + if (!pool[i].parent) { return i; } @@ -94,6 +94,8 @@ PIXI.CanvasPool = { if (pool[i].parent === parent) { pool[i].parent = null; + pool[i].canvas.width = 1; + pool[i].canvas.height = 1; } } @@ -115,6 +117,8 @@ PIXI.CanvasPool = { if (pool[i].canvas === canvas) { pool[i].parent = null; + pool[i].canvas.width = 1; + pool[i].canvas.height = 1; } } @@ -134,7 +138,7 @@ PIXI.CanvasPool = { for (var i = 0; i < pool.length; i++) { - if (pool[i].parent !== null) + if (pool[i].parent) { c++; } @@ -158,7 +162,7 @@ PIXI.CanvasPool = { for (var i = 0; i < pool.length; i++) { - if (pool[i].parent === null) + if (!pool[i].parent) { c++; } diff --git a/src/plugins/weapon/WeaponPlugin.js b/src/plugins/weapon/WeaponPlugin.js index 31a493b57..9bf95622f 100644 --- a/src/plugins/weapon/WeaponPlugin.js +++ b/src/plugins/weapon/WeaponPlugin.js @@ -92,7 +92,7 @@ Phaser.Weapon = function (game, parent) { this.fireFrom = new Phaser.Rectangle(0, 0, 1, 1); /** - * The angle at which the bullets are fired. This can be a const such as Phaser.ANGLE_UP + * The angle at which the bullets are fired. This can be a const such as Phaser.ANGLE_UP * or it can be any number from 0 to 360 inclusive, where 0 degrees is to the right. * @type {integer} */ @@ -170,14 +170,14 @@ Phaser.Weapon = function (game, parent) { /** * This is a variance added to the speed of Bullets when they are fired. - * If bullets have a `bulletSpeed` value of 200, and a `bulletSpeedVariance` of 50 + * If bullets have a `bulletSpeed` value of 200, and a `bulletSpeedVariance` of 50 * then the actual speed of the Bullets will be between 150 and 250 pixels per second. * @type {number} */ this.bulletSpeedVariance = 0; /** - * If you've set `bulletKillType` to `Phaser.Weapon.KILL_LIFESPAN` this controls the amount + * If you've set `bulletKillType` to `Phaser.Weapon.KILL_LIFESPAN` this controls the amount * of lifespan the Bullets have set on launch. The value is given in milliseconds. * When a Bullet hits its lifespan limit it will be automatically killed. * @type {number} @@ -185,7 +185,7 @@ Phaser.Weapon = function (game, parent) { this.bulletLifespan = 0; /** - * If you've set `bulletKillType` to `Phaser.Weapon.KILL_DISTANCE` this controls the distance + * If you've set `bulletKillType` to `Phaser.Weapon.KILL_DISTANCE` this controls the distance * the Bullet can travel before it is automatically killed. The distance is given in pixels. * @type {number} */ @@ -259,7 +259,7 @@ Phaser.Weapon = function (game, parent) { * This Rectangle defines the bounds that are used when determining if a Bullet should be killed or not. * It's used in combination with `Weapon.bulletKillType` when that is set to either `Phaser.Weapon.KILL_WEAPON_BOUNDS` * or `Phaser.Weapon.KILL_STATIC_BOUNDS`. If you are not using either of these kill types then the bounds are ignored. - * If you are tracking a Sprite or Point then the bounds are centered on that object every frame. + * If you are tracking a Sprite or Point then the bounds are centered on that object every frame. * * @type {Phaser.Rectangle} */ @@ -298,8 +298,8 @@ Phaser.Weapon = function (game, parent) { /** * The onFire Signal is dispatched each time `Weapon.fire` is called, and a Bullet is - * _successfully_ launched. The callback is set two arguments: a reference to the Weapon that fired the bullet, - * and a reference to the bullet sprite itself. + * _successfully_ launched. The callback is set two arguments: a reference to the bullet sprite itself, + * and a reference to the Weapon that fired the bullet. * * @type {Phaser.Signal} */ @@ -387,7 +387,7 @@ Phaser.Weapon.KILL_NEVER = 0; Phaser.Weapon.KILL_LIFESPAN = 1; /** -* A `bulletKillType` constant that automatically kills the bullets after they +* A `bulletKillType` constant that automatically kills the bullets after they * exceed the `bulletDistance` from their original firing position. * @constant * @type {integer} @@ -438,7 +438,7 @@ Phaser.Weapon.KILL_STATIC_BOUNDS = 6; * so be careful it doesn't grow too large. * * You can either set the texture key and frame here, or via the `Weapon.bulletKey` and `Weapon.bulletFrame` -* properties. You can also animate bullets, or set them to use random frames. All Bullets belonging to a +* properties. You can also animate bullets, or set them to use random frames. All Bullets belonging to a * single Weapon instance must share the same texture key however. * * @method Phaser.Weapon#createBullets @@ -466,7 +466,7 @@ Phaser.Weapon.prototype.createBullets = function (quantity, key, frame, group) { this.autoExpandBulletsGroup = true; quantity = 1; } - + this.bullets.createMultiple(quantity, key, frame); this.bullets.setAll('data.bulletManager', this); @@ -684,7 +684,7 @@ Phaser.Weapon.prototype.trackPointer = function (pointer, offsetX, offsetY) { * Attempts to fire a single Bullet. If there are no more bullets available in the pool, and the pool cannot be extended, * then this method returns `false`. It will also return false if not enough time has expired since the last time * the Weapon was fired, as defined in the `Weapon.fireRate` property. -* +* * Otherwise the first available bullet is selected and launched. * * The arguments are all optional, but allow you to control both where the bullet is launched from, and aimed at. @@ -972,12 +972,12 @@ Phaser.Weapon.prototype.setBulletBodyOffset = function (width, height, offsetX, /** * Sets the texture frames that the bullets can use when being launched. -* +* * This is intended for use when you've got numeric based frames, such as those loaded via a Sprite Sheet. -* +* * It works by calling `Phaser.ArrayUtils.numberArray` internally, using the min and max values * provided. Then it sets the frame index to be zero. -* +* * You can optionally set the cycle and random booleans, to allow bullets to cycle through the frames * when they're fired, or pick one at random. * @@ -1102,10 +1102,10 @@ Object.defineProperty(Phaser.Weapon.prototype, "bulletClass", { * * * `Phaser.Weapon.KILL_LIFESPAN` * The bullets are automatically killed when their `bulletLifespan` amount expires. -* +* * * `Phaser.Weapon.KILL_DISTANCE` * The bullets are automatically killed when they exceed `bulletDistance` pixels away from their original launch position. -* +* * * `Phaser.Weapon.KILL_WEAPON_BOUNDS` * The bullets are automatically killed when they no longer intersect with the `Weapon.bounds` rectangle. * diff --git a/src/sound/Sound.js b/src/sound/Sound.js index 671428f06..9e9466279 100644 --- a/src/sound/Sound.js +++ b/src/sound/Sound.js @@ -41,11 +41,6 @@ Phaser.Sound = function (game, key, volume, loop, connect) { */ this.loop = loop; - /** - * @property {number} volume - The sound or sound marker volume. A value between 0 (silence) and 1 (full volume). - */ - this.volume = volume; - /** * @property {object} markers - The sound markers. */ @@ -550,7 +545,7 @@ Phaser.Sound.prototype = { { this._sound.disconnect(this.externalNode); } - else + else if (this.gainNode) { this._sound.disconnect(this.gainNode); } @@ -888,7 +883,7 @@ Phaser.Sound.prototype = { { this._sound.disconnect(this.externalNode); } - else + else if (this.gainNode) { this._sound.disconnect(this.gainNode); } diff --git a/src/system/Canvas.js b/src/system/Canvas.js index d8e3155d8..fc3ca73c7 100644 --- a/src/system/Canvas.js +++ b/src/system/Canvas.js @@ -29,14 +29,7 @@ Phaser.Canvas = { width = width || 256; height = height || 256; - if (skipPool === undefined) - { - var canvas = PIXI.CanvasPool.create(parent, width, height); - } - else - { - var canvas = document.createElement('canvas'); - } + var canvas = (skipPool) ? document.createElement('canvas') : PIXI.CanvasPool.create(parent, width, height); if (typeof id === 'string' && id !== '') { diff --git a/src/tilemap/TilemapLayer.js b/src/tilemap/TilemapLayer.js index f482ac300..8f0106517 100644 --- a/src/tilemap/TilemapLayer.js +++ b/src/tilemap/TilemapLayer.js @@ -859,8 +859,6 @@ Phaser.TilemapLayer.prototype.renderRegion = function (scrollX, scrollY, left, t // xmax/ymax - remaining cells to render on column/row var tx, ty, x, y, xmax, ymax; - context.fillStyle = this.tileColor; - for (y = normStartY, ymax = bottom - top, ty = baseY; ymax >= 0; y++, ymax--, ty += th) diff --git a/src/tilemap/TilemapParser.js b/src/tilemap/TilemapParser.js index 8381b8e42..a74b487a2 100644 --- a/src/tilemap/TilemapParser.js +++ b/src/tilemap/TilemapParser.js @@ -25,6 +25,33 @@ Phaser.TilemapParser = { */ INSERT_NULL: false, + /** + * A tiled flag that resides within the 32 bit of the object gid and + * indicates whether the tiled/object is flipped horizontally. + * + * @constant + * @type {number} + */ + FLIPPED_HORIZONTALLY_FLAG: 0x80000000, + + /** + * A tiled flag that resides within the 31 bit of the object gid and + * indicates whether the tiled/object is flipped vertically. + * + * @constant + * @type {number} + */ + FLIPPED_VERTICALLY_FLAG: 0x40000000, + + /** + * A tiled flag that resides within the 30 bit of the object gid and + * indicates whether the tiled/object is flipped diagonally. + * + * @constant + * @type {number} + */ + FLIPPED_DIAGONALLY_FLAG: 0x20000000, + /** * Parse tilemap data from the cache and creates a Tilemap object. * @@ -505,6 +532,8 @@ Phaser.TilemapParser = { // Object Tiles if (curo.objects[v].gid) { + var self = this; + var object = { gid: curo.objects[v].gid, @@ -512,9 +541,13 @@ Phaser.TilemapParser = { type: curo.objects[v].hasOwnProperty("type") ? curo.objects[v].type : "", x: curo.objects[v].x, y: curo.objects[v].y, + width: curo.objects[v].width, + height: curo.objects[v].height, visible: curo.objects[v].visible, - properties: curo.objects[v].properties - + properties: curo.objects[v].properties, + horizontallyFlipped: curo.objects[v].gid & self.FLIPPED_HORIZONTALLY_FLAG, + verticallyFlipped: curo.objects[v].gid & self.FLIPPED_VERTICALLY_FLAG, + diagonallyFlipped: curo.objects[v].gid & self.FLIPPED_DIAGONALLY_FLAG }; if (curo.objects[v].rotation) diff --git a/src/utils/ArrayUtils.js b/src/utils/ArrayUtils.js index 9c2ae04d5..cc10a959e 100644 --- a/src/utils/ArrayUtils.js +++ b/src/utils/ArrayUtils.js @@ -192,13 +192,63 @@ Phaser.ArrayUtils = { }, + /** + * Moves the element from the end of the array to the start, shifting all items in the process. + * The "rotation" happens to the right. + * + * Before: `[ A, B, C, D, E, F ]` + * After: `[ F, A, B, C, D, E ]` + * + * See also Phaser.ArrayUtils.rotateLeft. + * + * @method Phaser.ArrayUtils.rotateRight + * @param {any[]} array - The array to rotate. The array is modified. + * @return {any} The shifted value. + */ + rotateRight: function (array) { + + var s = array.pop(); + array.unshift(s); + + return s; + + }, + /** * Moves the element from the start of the array to the end, shifting all items in the process. * The "rotation" happens to the left. * + * Before: `[ A, B, C, D, E, F ]` + * After: `[ B, C, D, E, F, A ]` + * + * See also Phaser.ArrayUtils.rotateRight + * + * @method Phaser.ArrayUtils.rotateLeft + * @param {any[]} array - The array to rotate. The array is modified. + * @return {any} The rotated value. + */ + rotateLeft: function (array) { + + var s = array.shift(); + array.push(s); + + return s; + + }, + + /** + * Moves the element from the start of the array to the end, shifting all items in the process. + * The "rotation" happens to the left. + * + * Before: `[ A, B, C, D, E, F ]` + * After: `[ B, C, D, E, F, A ]` + * + * See also Phaser.ArrayUtils.rotateRight + * * @method Phaser.ArrayUtils.rotate - * @param {any[]} array - The array to shift/rotate. The array is modified. - * @return {any} The shifted value. + * @deprecated Please use Phaser.ArrayUtils.rotate instead. + * @param {any[]} array - The array to rotate. The array is modified. + * @return {any} The rotated value. */ rotate: function (array) { diff --git a/src/utils/Color.js b/src/utils/Color.js index 6d0efae86..70f88ff3a 100644 --- a/src/utils/Color.js +++ b/src/utils/Color.js @@ -141,6 +141,23 @@ Phaser.Color = { }, + /** + * Converts RGBA components to a 32 bit integer in AABBGGRR format. + * + * @method Phaser.Color.toABGR + * @static + * @param {number} r - The red color component, in the range 0 - 255. + * @param {number} g - The green color component, in the range 0 - 255. + * @param {number} b - The blue color component, in the range 0 - 255. + * @param {number} a - The alpha color component, in the range 0 - 255. + * @return {number} A RGBA-packed 32 bit integer + */ + toABGR: function (r, g, b, a) { + + return ((a << 24) | (b << 16) | (g << 8) | r) >>> 0; + + }, + /** * Converts an RGB color value to HSL (hue, saturation and lightness). * Conversion forumla from http://en.wikipedia.org/wiki/HSL_color_space. diff --git a/src/utils/Debug.js b/src/utils/Debug.js index 60ecf992a..c695caf2a 100644 --- a/src/utils/Debug.js +++ b/src/utils/Debug.js @@ -6,10 +6,15 @@ /** * A collection of methods for displaying debug information about game objects. +* +* If your game is running in Canvas mode, then you should invoke all of the Debug methods from +* your games `render` function. This is because they are drawn directly onto the game canvas +* itself, so if you call any debug methods outside of `render` they are likely to be overwritten +* by the game itself. +* * If your game is running in WebGL then Debug will create a Sprite that is placed at the top of the Stage display list and bind a canvas texture * to it, which must be uploaded every frame. Be advised: this is very expensive, especially in browsers like Firefox. So please only enable Debug * in WebGL mode if you really need it (or your desktop can cope with it well) and disable it for production! -* If your game is using a Canvas renderer then the debug information is literally drawn on the top of the active game canvas and no Sprite is used. * * @class Phaser.Utils.Debug * @constructor @@ -104,7 +109,7 @@ Phaser.Utils.Debug.prototype = { } else { - this.bmd = this.game.make.bitmapData(this.game.width, this.game.height); + this.bmd = new Phaser.BitmapData(this.game, '__DEBUG', this.game.width, this.game.height, true); this.sprite = this.game.make.image(0, 0, this.bmd); this.game.stage.addChild(this.sprite); diff --git a/src/utils/Utils.js b/src/utils/Utils.js index f278cb105..6ae275a65 100644 --- a/src/utils/Utils.js +++ b/src/utils/Utils.js @@ -10,6 +10,20 @@ */ Phaser.Utils = { + /** + * Takes the given string and reverses it, returning the reversed string. + * For example if given the string `Atari 520ST` it would return `TS025 iratA`. + * + * @method Phaser.Utils.reverseString + * @param {string} string - The string to be reversed. + * @return {string} The reversed string. + */ + reverseString: function (string) { + + return string.split('').reverse().join(''); + + }, + /** * Gets an objects property by string. * @@ -145,14 +159,31 @@ Phaser.Utils = { }, /** - * JavaScript string pad http://www.webtoolkit.info/. + * Takes the given string and pads it out, to the length required, using the character + * specified. For example if you need a string to be 6 characters long, you can call: + * + * `pad('bob', 6, '-', 2)` + * + * This would return: `bob---` as it has padded it out to 6 characters, using the `-` on the right. + * + * You can also use it to pad numbers (they are always returned as strings): + * + * `pad(512, 6, '0', 1)` + * + * Would return: `000512` with the string padded to the left. + * + * If you don't specify a direction it'll pad to both sides: + * + * `pad('c64', 7, '*')` + * + * Would return: `**c64**` * * @method Phaser.Utils.pad - * @param {string} str - The target string. + * @param {string} str - The target string. `toString()` will be called on the string, which means you can also pass in common data types like numbers. * @param {integer} [len=0] - The number of characters to be added. * @param {string} [pad=" "] - The string to pad it out with (defaults to a space). - * @param {integer} [dir=3] The direction dir = 1 (left), 2 (right), 3 (both). - * @return {string} The padded string + * @param {integer} [dir=3] - The direction dir = 1 (left), 2 (right), 3 (both). + * @return {string} The padded string. */ pad: function (str, len, pad, dir) { @@ -160,6 +191,8 @@ Phaser.Utils = { if (pad === undefined) { var pad = ' '; } if (dir === undefined) { var dir = 3; } + str = str.toString(); + var padlen = 0; if (len + 1 >= str.length) diff --git a/typescript/phaser.comments.d.ts b/typescript/phaser.comments.d.ts index dc57c1f4e..2aec98664 100644 --- a/typescript/phaser.comments.d.ts +++ b/typescript/phaser.comments.d.ts @@ -1,104 +1,104 @@ -/// -/// - -// Type definitions for Phaser 2.5.0 - 17th June 2016 -// Project: https://github.com/photonstorm/phaser - -declare module "phaser" { - export = Phaser; -} - -declare class Phaser { - - static VERSION: string; - static DEV_VERSION: string; - static GAMES: Phaser.Game[]; - - static AUTO: number; - static CANVAS: number; - static WEBGL: number; - static HEADLESS: number; - - static BITMAPDATA: number; - static BITMAPTEXT: number; - static BUTTON: number; - static CANVAS_FILTER: number; - static CIRCLE: number; - static ELLIPSE: number; - static EMITTER: number; - static GRAPHICS: number; - static GROUP: number; - static IMAGE: number; - static LINE: number; - static MATRIX: number; - static POINT: number; - static POINTER: number; - static POLYGON: number; - static RECTANGLE: number; - static ROUNDEDRECTANGLE: number; - static RENDERTEXTURE: number; - static RETROFONT: number; - static SPRITE: number; - static SPRITEBATCH: number; - static TEXT: number; - static TILEMAP: number; - static TILEMAPLAYER: number; - static TILESPRITE: number; - static WEBGL_FILTER: number; - static ROPE: number; - static CREATURE: number; - static VIDEO: number; - - static NONE: number; - static LEFT: number; - static RIGHT: number; - static UP: number; - static DOWN: number; - - static HORIZONTAL: number; - static VERTICAL: number; - static LANDSCAPE: number; - static PORTRAIT: number; - - static ANGLE_UP: number; - static ANGLE_DOWN: number; - static ANGLE_LEFT: number; - static ANGLE_RIGHT: number; - static ANGLE_NORTH_EAST: number; - static ANGLE_NORTH_WEST: number; - static ANGLE_SOUTH_EAST: number; - static ANGLE_SOUTH_WEST: number; - - static TOP_LEFT: number; - static TOP_CENTER: number; - static TOP_RIGHT: number; - - static LEFT_TOP: number; - static LEFT_CENTER: number; - static LEFT_BOTTOM: number; - - static CENTER: number; - - static RIGHT_TOP: number; - static RIGHT_CENTER: number; - static RIGHT_BOTTOM: number; - - static BOTTOM_LEFT: number; - static BOTTOM_CENTER: number; - static BOTTOM_RIGHT: number; - -} - -declare module Phaser { - +/// +/// + +// Type definitions for Phaser 2.6.0 - 7th July 2016 +// Project: https://github.com/photonstorm/phaser + +declare module "phaser" { + export = Phaser; +} + +declare class Phaser { + + static VERSION: string; + static DEV_VERSION: string; + static GAMES: Phaser.Game[]; + + static AUTO: number; + static CANVAS: number; + static WEBGL: number; + static HEADLESS: number; + + static BITMAPDATA: number; + static BITMAPTEXT: number; + static BUTTON: number; + static CANVAS_FILTER: number; + static CIRCLE: number; + static ELLIPSE: number; + static EMITTER: number; + static GRAPHICS: number; + static GROUP: number; + static IMAGE: number; + static LINE: number; + static MATRIX: number; + static POINT: number; + static POINTER: number; + static POLYGON: number; + static RECTANGLE: number; + static ROUNDEDRECTANGLE: number; + static RENDERTEXTURE: number; + static RETROFONT: number; + static SPRITE: number; + static SPRITEBATCH: number; + static TEXT: number; + static TILEMAP: number; + static TILEMAPLAYER: number; + static TILESPRITE: number; + static WEBGL_FILTER: number; + static ROPE: number; + static CREATURE: number; + static VIDEO: number; + + static NONE: number; + static LEFT: number; + static RIGHT: number; + static UP: number; + static DOWN: number; + + static HORIZONTAL: number; + static VERTICAL: number; + static LANDSCAPE: number; + static PORTRAIT: number; + + static ANGLE_UP: number; + static ANGLE_DOWN: number; + static ANGLE_LEFT: number; + static ANGLE_RIGHT: number; + static ANGLE_NORTH_EAST: number; + static ANGLE_NORTH_WEST: number; + static ANGLE_SOUTH_EAST: number; + static ANGLE_SOUTH_WEST: number; + + static TOP_LEFT: number; + static TOP_CENTER: number; + static TOP_RIGHT: number; + + static LEFT_TOP: number; + static LEFT_CENTER: number; + static LEFT_BOTTOM: number; + + static CENTER: number; + + static RIGHT_TOP: number; + static RIGHT_CENTER: number; + static RIGHT_BOTTOM: number; + + static BOTTOM_LEFT: number; + static BOTTOM_CENTER: number; + static BOTTOM_RIGHT: number; + +} + +declare module Phaser { + /** * An Animation instance contains a single animation and the controls to play it. * * It is created by the AnimationManager, consists of Animation.Frame objects and belongs to a single Game Object such as a Sprite. */ - class Animation { - + class Animation { + /** * An Animation instance contains a single animation and the controls to play it. @@ -113,88 +113,88 @@ declare module Phaser { * @param frameRate The speed at which the animation should play. The speed is given in frames per second. - Default: 60 * @param loop Whether or not the animation is looped or just plays once. */ - constructor(game: Phaser.Game, parent: Phaser.Sprite, name: string, frameData: Phaser.FrameData, frames: number[] | string[], frameRate?: number, loop?: boolean); - + constructor(game: Phaser.Game, parent: Phaser.Sprite, name: string, frameData: Phaser.FrameData, frames: number[] | string[], frameRate?: number, loop?: boolean); + /** * The currently displayed frame of the Animation. */ - currentFrame: Phaser.Frame; + currentFrame: Phaser.Frame; /** * The delay in ms between each frame of the Animation, based on the given frameRate. */ - delay: number; + delay: number; /** * Gets or sets if this animation will dispatch the onUpdate events upon changing frame. */ - enableUpdate: boolean; + enableUpdate: boolean; /** * Gets or sets the current frame index and updates the Texture Cache for display. */ - frame: number; + frame: number; /** * The total number of frames in the currently loaded FrameData, or -1 if no FrameData is loaded. */ - frameTotal: number; + frameTotal: number; /** * A reference to the currently running Game. */ - game: Phaser.Game; + game: Phaser.Game; /** * The finished state of the Animation. Set to true once playback completes, false during playback. */ - isFinished: boolean; + isFinished: boolean; /** * The paused state of the Animation. */ - isPaused: boolean; + isPaused: boolean; /** * The playing state of the Animation. Set to false once playback completes, true during playback. */ - isPlaying: boolean; + isPlaying: boolean; /** * Should the parent of this Animation be killed when the animation completes? */ - killOnComplete: boolean; + killOnComplete: boolean; /** * The loop state of the Animation. */ - loop: boolean; + loop: boolean; /** * The number of times the animation has looped since it was last started. */ - loopCount: number; + loopCount: number; /** * The user defined name given to this Animation. */ - name: string; + name: string; /** * This event is dispatched when this Animation completes playback. If the animation is set to loop this is never fired, listen for onLoop instead. */ - onComplete: Phaser.Signal; + onComplete: Phaser.Signal; /** * This event is dispatched when this Animation loops. */ - onLoop: Phaser.Signal; + onLoop: Phaser.Signal; /** * This event is dispatched when this Animation starts playback. */ - onStart: Phaser.Signal; + onStart: Phaser.Signal; /** * This event is dispatched when the Animation changes frame. @@ -203,34 +203,34 @@ declare module Phaser { * will automatically frame-skip to try and claw back time, so do not base your code on expecting to * receive a perfectly sequential set of frames from this event. */ - onUpdate: Phaser.Signal; + onUpdate: Phaser.Signal; /** * Gets and sets the paused state of this Animation. */ - paused: boolean; + paused: boolean; /** * Gets and sets the isReversed state of this Animation. */ - reversed: boolean; + reversed: boolean; /** * Gets or sets the current speed of the animation in frames per second. Changing this in a playing animation will take effect from the next frame. Minimum value is 1. */ - speed: number; - + speed: number; + /** * Called internally when the animation finishes playback. * Sets the isPlaying and isFinished states and dispatches the onAnimationComplete event if it exists on the parent and local onComplete event. */ - complete(): void; + complete(): void; /** * Cleans up this animation ready for deletion. Nulls all values and references. */ - destroy(): void; + destroy(): void; /** * Really handy function for when you are creating arrays of animation data but it's using frame names and not numbers. @@ -244,24 +244,24 @@ declare module Phaser { * @param zeroPad The number of zeros to pad the min and max values with. If your frames are named 'explosion_0001' to 'explosion_0034' then the zeroPad is 4. * @return An array of framenames. */ - static generateFrameNames(prefix: string, start: number, stop: number, suffix?: string, zeroPad?: number): string[]; + static generateFrameNames(prefix: string, start: number, stop: number, suffix?: string, zeroPad?: number): string[]; /** * Advances by the given number of frames in the Animation, taking the loop value into consideration. * * @param quantity The number of frames to advance. - Default: 1 */ - next(quantity?: number): void; + next(quantity?: number): void; /** * Called when the Game enters a paused state. */ - onPause(): void; + onPause(): void; /** * Called when the Game resumes from a paused state. */ - onResume(): void; + onResume(): void; /** * Plays this animation. @@ -271,25 +271,25 @@ declare module Phaser { * @param killOnComplete If set to true when the animation completes (only happens if loop=false) the parent Sprite will be killed. * @return - A reference to this Animation instance. */ - play(frameRate?: number, loop?: boolean, killOnComplete?: boolean): Phaser.Animation; + play(frameRate?: number, loop?: boolean, killOnComplete?: boolean): Phaser.Animation; /** * Moves backwards the given number of frames in the Animation, taking the loop value into consideration. * * @param quantity The number of frames to move back. - Default: 1 */ - previous(quantity?: number): void; + previous(quantity?: number): void; /** * Sets this animation back to the first frame and restarts the animation. */ - restart(): void; + restart(): void; /** * Reverses the animation direction * @return The animation instance. */ - reverse(): Animation; + reverse(): Animation; /** * Reverses the animation direction for the current/next animation only @@ -297,7 +297,7 @@ declare module Phaser { * the reversed state. * @return The animation instance. */ - reverseOnce(): Animation; + reverseOnce(): Animation; /** * Sets this animations playback to a given frame with the given ID. @@ -305,7 +305,7 @@ declare module Phaser { * @param frameId The identifier of the frame to set. Can be the name of the frame, the sprite index of the frame, or the animation-local frame index. * @param useLocalFrameIndex If you provide a number for frameId, should it use the numeric indexes of the frameData, or the 0-indexed frame index local to the animation. */ - setFrame(frameId?: string | number, useLocalFrameIndex?: boolean): void; + setFrame(frameId?: string | number, useLocalFrameIndex?: boolean): void; /** * Stops playback of this animation and set it to a finished state. If a resetFrame is provided it will stop playback and set frame to the first in the animation. @@ -314,12 +314,12 @@ declare module Phaser { * @param resetFrame If true after the animation stops the currentFrame value will be set to the first frame in this animation. * @param dispatchComplete Dispatch the Animation.onComplete and parent.onAnimationComplete events? */ - stop(resetFrame?: boolean, dispatchComplete?: boolean): void; + stop(resetFrame?: boolean, dispatchComplete?: boolean): void; /** * Updates this animation. Called automatically by the AnimationManager. */ - update(): boolean; + update(): boolean; /** * Changes the currentFrame per the _frameIndex, updates the display state, @@ -331,24 +331,24 @@ declare module Phaser { * @param fromPlay Was this call made from the playing of a new animation? * @return True if the current frame was updated, otherwise false. */ - updateCurrentFrame(signalUpdate: boolean, fromPlay?: boolean): boolean; + updateCurrentFrame(signalUpdate: boolean, fromPlay?: boolean): boolean; /** * Changes the FrameData object this Animation is using. * * @param frameData The FrameData object that contains all frames used by this Animation. */ - updateFrameData(frameData: FrameData): void; - - } - + updateFrameData(frameData: FrameData): void; + + } + /** * The Animation Manager is used to add, play and update Phaser Animations. * Any Game Object such as Phaser.Sprite that supports animation contains a single AnimationManager instance. */ - class AnimationManager { - + class AnimationManager { + /** * The Animation Manager is used to add, play and update Phaser Animations. @@ -356,71 +356,71 @@ declare module Phaser { * * @param sprite A reference to the Game Object that owns this AnimationManager. */ - constructor(sprite: Phaser.Sprite); - + constructor(sprite: Phaser.Sprite); + /** * The currently displayed animation, if any. */ - currentAnim: Phaser.Animation; + currentAnim: Phaser.Animation; /** * The currently displayed Frame of animation, if any. * This property is only set once an Animation starts playing. Until that point it remains set as `null`. */ - currentFrame: Phaser.Frame; + currentFrame: Phaser.Frame; /** * Gets or sets the current frame index and updates the Texture Cache for display. */ - frame: number; + frame: number; /** * The current animations FrameData. */ - frameData: Phaser.FrameData; + frameData: Phaser.FrameData; /** * Gets or sets the current frame name and updates the Texture Cache for display. */ - frameName: string; + frameName: string; /** * The total number of frames in the currently loaded FrameData, or -1 if no FrameData is loaded. */ - frameTotal: number; + frameTotal: number; /** * A reference to the currently running Game. */ - game: Phaser.Game; + game: Phaser.Game; /** * Set to true once animation data has been loaded. */ - isLoaded: boolean; + isLoaded: boolean; /** * Gets the current animation name, if set. */ - name: string; + name: string; /** * Gets and sets the paused state of the current animation. */ - paused: boolean; + paused: boolean; /** * A reference to the parent Sprite that owns this AnimationManager. */ - sprite: Phaser.Sprite; + sprite: Phaser.Sprite; /** * Should the animation data continue to update even if the Sprite.visible is set to false. * Default: true */ - updateIfVisible: boolean; - + updateIfVisible: boolean; + /** * Adds a new animation under the given key. Optionally set the frames, frame rate and loop. @@ -433,7 +433,7 @@ declare module Phaser { * @param useNumericIndex Are the given frames using numeric indexes (default) or strings? - Default: true * @return The Animation object that was created. */ - add(name: string, frames?: number[] | string[], frameRate?: number, loop?: boolean, useNumericIndex?: boolean): Phaser.Animation; + add(name: string, frames?: number[] | string[], frameRate?: number, loop?: boolean, useNumericIndex?: boolean): Phaser.Animation; /** * Loads FrameData into the internal temporary vars and resets the frame index to zero. @@ -443,13 +443,13 @@ declare module Phaser { * @param frame The frame to default to. * @return Returns `true` if the frame data was loaded successfully, otherwise `false` */ - copyFrameData(frameData: Phaser.FrameData, frame: string | number): boolean; + copyFrameData(frameData: Phaser.FrameData, frame: string | number): boolean; /** * Destroys all references this AnimationManager contains. * Iterates through the list of animations stored in this manager and calls destroy on each of them. */ - destroy(): void; + destroy(): void; /** * Returns an animation that was previously added by name. @@ -457,14 +457,14 @@ declare module Phaser { * @param name The name of the animation to be returned, e.g. "fire". * @return The Animation instance, if found, otherwise null. */ - getAnimation(name: string): Phaser.Animation; + getAnimation(name: string): Phaser.Animation; /** * Advances by the given number of frames in the current animation, taking the loop value into consideration. * * @param quantity The number of frames to advance. - Default: 1 */ - next(quantity?: number): void; + next(quantity?: number): void; /** * Play an animation based on the given key. The animation should previously have been added via `animations.add` @@ -478,19 +478,14 @@ declare module Phaser { * @param killOnComplete If set to true when the animation completes (only happens if loop=false) the parent Sprite will be killed. * @return A reference to playing Animation instance. */ - play(name: string, frameRate?: number, loop?: boolean, killOnComplete?: boolean): Phaser.Animation; + play(name: string, frameRate?: number, loop?: boolean, killOnComplete?: boolean): Phaser.Animation; /** * Moves backwards the given number of frames in the current animation, taking the loop value into consideration. * * @param quantity The number of frames to move back. - Default: 1 */ - previous(quantity?: number): void; - - /** - * Refreshes the current frame data back to the parent Sprite and also resets the texture data. - */ - refreshFrame(): void; + previous(quantity?: number): void; /** * Stop playback of an animation. If a name is given that specific animation is stopped, otherwise the current animation is stopped. @@ -499,13 +494,13 @@ declare module Phaser { * @param name The name of the animation to be stopped, e.g. "fire". If none is given the currently running animation is stopped. * @param resetFrame When the animation is stopped should the currentFrame be set to the first frame of the animation (true) or paused on the last frame displayed (false) */ - stop(name?: string, resetFrame?: boolean): void; + stop(name?: string, resetFrame?: boolean): void; /** * The main update function is called by the Sprites update loop. It's responsible for updating animation frames and firing related events. * @return True if a new animation frame has been set, otherwise false. */ - update(): boolean; + update(): boolean; /** * Check whether the frames in the given array are valid and exist. @@ -514,16 +509,16 @@ declare module Phaser { * @param useNumericIndex Validate the frames based on their numeric index (true) or string index (false) - Default: true * @return True if all given Frames are valid, otherwise false. */ - validateFrames(frames: Phaser.Frame[], useNumericIndex?: boolean): boolean; - - } - + validateFrames(frames: Phaser.Frame[], useNumericIndex?: boolean): boolean; + + } + /** * Responsible for parsing sprite sheet and JSON data into the internal FrameData format that Phaser uses for animations. */ - class AnimationParser { - + class AnimationParser { + /** * Parse the JSON data and extract the animation frame data from it. @@ -532,7 +527,7 @@ declare module Phaser { * @param json The JSON data from the Texture Atlas. Must be in Array format. * @return A FrameData object containing the parsed frames. */ - static JSONData(game: Phaser.Game, json: any): Phaser.FrameData; + static JSONData(game: Phaser.Game, json: any): Phaser.FrameData; /** * Parse the JSON data and extract the animation frame data from it. @@ -541,7 +536,7 @@ declare module Phaser { * @param json The JSON data from the Texture Atlas. Must be in JSON Hash format. * @return A FrameData object containing the parsed frames. */ - static JSONDataHash(game: Phaser.Game, json: any): Phaser.FrameData; + static JSONDataHash(game: Phaser.Game, json: any): Phaser.FrameData; /** * Parse the JSON data and extract the animation frame data from it. @@ -550,7 +545,7 @@ declare module Phaser { * @param json The JSON data from the Texture Atlas. Must be in Pyxel JSON format. * @return A FrameData object containing the parsed frames. */ - static JSONDataPyxel(game: Phaser.Game, json: any): Phaser.FrameData; + static JSONDataPyxel(game: Phaser.Game, json: any): Phaser.FrameData; /** * Parse a Sprite Sheet and extract the animation frame data from it. @@ -564,7 +559,7 @@ declare module Phaser { * @param spacing If the frames have been drawn with spacing between them, specify the amount here. * @return A FrameData object containing the parsed frames. */ - static spriteSheet(game: Phaser.Game, key: string, frameWidth: number, frameHeight: number, frameMax?: number, margin?: number, spacing?: number): Phaser.FrameData; + static spriteSheet(game: Phaser.Game, key: string, frameWidth: number, frameHeight: number, frameMax?: number, margin?: number, spacing?: number): Phaser.FrameData; /** * Parse the XML data and extract the animation frame data from it. @@ -573,17 +568,17 @@ declare module Phaser { * @param xml The XML data from the Texture Atlas. Must be in Starling XML format. * @return A FrameData object containing the parsed frames. */ - static XMLData(game: Phaser.Game, xml: any): Phaser.FrameData; - - } - + static XMLData(game: Phaser.Game, xml: any): Phaser.FrameData; + + } + /** * Audio Sprites are a combination of audio files and a JSON configuration. * The JSON follows the format of that created by https://github.com/tonistiigi/audiosprite */ - class AudioSprite { - + class AudioSprite { + /** * Audio Sprites are a combination of audio files and a JSON configuration. @@ -592,39 +587,39 @@ declare module Phaser { * @param game Reference to the current game instance. * @param key Asset key for the sound. */ - constructor(game: Phaser.Game, key: string); - + constructor(game: Phaser.Game, key: string); + /** * A reference to the currently running Game. */ - game: Phaser.Game; + game: Phaser.Game; /** * Asset key for the Audio Sprite. */ - key: string; + key: string; /** * JSON audio atlas object. */ - config: any; + config: any; /** * If a sound is set to auto play, this holds the marker key of it. */ - autoplayKey: string; + autoplayKey: string; /** * Is a sound set to autoplay or not? */ - autoplay: boolean; + autoplay: boolean; /** * An object containing the Phaser.Sound objects for the Audio Sprite. */ - sounds: any; - + sounds: any; + /** * Get a sound with the given name. @@ -632,7 +627,7 @@ declare module Phaser { * @param marker The name of sound to get. * @return The sound instance. */ - get(marker: string): Phaser.Sound; + get(marker: string): Phaser.Sound; /** * Play a sound with the given name. @@ -641,17 +636,17 @@ declare module Phaser { * @param volume Volume of the sound you want to play. If none is given it will use the volume given to the Sound when it was created (which defaults to 1 if none was specified). - Default: 1 * @return This sound instance. */ - play(marker: string, volume?: number): Phaser.Sound; + play(marker: string, volume?: number): Phaser.Sound; /** * Stop a sound with the given name. * * @param marker The name of sound to stop. If none is given it will stop all sounds in the audio sprite. - Default: '' */ - stop(marker: string): Phaser.Sound; - - } - + stop(marker: string): Phaser.Sound; + + } + /** * ArraySet is a Set data structure (items must be unique within the set) that also maintains order. @@ -661,8 +656,8 @@ declare module Phaser { * * This used primarily by the Input subsystem. */ - class ArraySet { - + class ArraySet { + /** * ArraySet is a Set data structure (items must be unique within the set) that also maintains order. @@ -674,34 +669,34 @@ declare module Phaser { * * @param list The backing array: if specified the items in the list _must_ be unique, per `Array.indexOf`, and the ownership of the array _should_ be relinquished to the ArraySet. - Default: (new array) */ - constructor(list: any[]); - + constructor(list: any[]); + /** * Current cursor position as established by `first` and `next`. */ - position: number; + position: number; /** * The backing array. */ - list: any[]; + list: any[]; /** * Number of items in the ArraySet. Same as `list.length`. */ - total: number; + total: number; /** * Returns the first item and resets the cursor to the start. */ - first: any; + first: any; /** * Returns the the next item (based on the cursor) and advances the cursor. */ - next: any; - + next: any; + /** * Adds a new element to the end of the list. @@ -710,7 +705,7 @@ declare module Phaser { * @param item The element to add to this list. * @return The item that was added. */ - add(item: any): any; + add(item: any): any; /** * Gets an item from the set based on the property strictly equaling the value given. @@ -720,7 +715,7 @@ declare module Phaser { * @param value The value to check if the property strictly equals. * @return The item that was found, or null if nothing matched. */ - getByKey(property: string, value: any): any; + getByKey(property: string, value: any): any; /** * Gets the index of the item in the list, or -1 if it isn't in the list. @@ -728,7 +723,7 @@ declare module Phaser { * @param item The element to get the list index for. * @return The index of the item or -1 if not found. */ - getIndex(item: any): number; + getIndex(item: any): number; /** * Checks for the item within this list. @@ -736,12 +731,12 @@ declare module Phaser { * @param item The element to get the list index for. * @return True if the item is found in the list, otherwise false. */ - exists(item: any): boolean; + exists(item: any): boolean; /** * Removes all the items. */ - reset(): void; + reset(): void; /** * Removes the given element from this list if it exists. @@ -749,14 +744,14 @@ declare module Phaser { * @param item The item to be removed from the list. * @return item - The item that was removed. */ - remove(item: any): any; + remove(item: any): any; /** * Removes every member from this ArraySet and optionally destroys it. * * @param destroy Call `destroy` on each member as it's removed from this set. */ - removeAll(destoy?: boolean): void; + removeAll(destoy?: boolean): void; /** * Sets the property `key` to the given value on all members of this list. @@ -764,7 +759,7 @@ declare module Phaser { * @param key The property of the item to set. * @param value The value to set the property to. */ - setAll(key: any, value: any): void; + setAll(key: any, value: any): void; /** * Calls a function on all members of this list, using the member as the context for the callback. @@ -775,16 +770,16 @@ declare module Phaser { * @param key The name of the property with the function to call. * @param args Additional parameters that will be passed to the callback. */ - callAll(key: string, ...parameter: any[]): void; - - } - + callAll(key: string, ...parameter: any[]): void; + + } + /** * Utility functions for dealing with Arrays. */ - class ArrayUtils { - + class ArrayUtils { + /** * Fetch a random entry from the given array. @@ -797,7 +792,7 @@ declare module Phaser { * @param length Optional restriction on the number of values you want to randomly select from. * @return The random object that was selected. */ - static getRandomItem(objects: T[], startIndex?: number, length?: number): T; + static getRandomItem(objects: T[], startIndex?: number, length?: number): T; /** * Removes a random object from the given array and returns it. @@ -810,7 +805,7 @@ declare module Phaser { * @param length Optional restriction on the number of values you want to randomly select from. * @return The random object that was removed. */ - static removeRandomItem(objects: T[], startIndex?: number, length?: number): T; + static removeRandomItem(objects: T[], startIndex?: number, length?: number): T; /** * A standard Fisher-Yates Array shuffle implementation which modifies the array in place. @@ -818,7 +813,7 @@ declare module Phaser { * @param array The array to shuffle. * @return The original array, now shuffled. */ - static shuffle(array: T[]): T[]; + static shuffle(array: T[]): T[]; /** * Transposes the elements of the given matrix (array of arrays). @@ -826,7 +821,7 @@ declare module Phaser { * @param array The matrix to transpose. * @return A new transposed matrix */ - static transposeMatrix(array: T[]): T; + static transposeMatrix(array: T[]): T; /** * Rotates the given matrix (array of arrays). @@ -837,7 +832,7 @@ declare module Phaser { * @param direction The amount to rotate: the rotation in degrees (90, -90, 270, -270, 180) or a string command ('rotateLeft', 'rotateRight' or 'rotate180'). * @return The rotated matrix. The source matrix should be discarded for the returned matrix. */ - static rotateMatrix(matrix: any, direction: number | string): any; + static rotateMatrix(matrix: any, direction: number | string): any; /** * Snaps a value to the nearest value in an array. @@ -847,16 +842,49 @@ declare module Phaser { * @param arr The input array which _must_ be sorted. * @return The nearest value found. */ - static findClosest(value: number, arr: number[]): number; + static findClosest(value: number, arr: number[]): number; /** * Moves the element from the start of the array to the end, shifting all items in the process. * The "rotation" happens to the left. * - * @param array The array to shift/rotate. The array is modified. + * Before: `[ A, B, C, D, E, F ]` + * After: `[ B, C, D, E, F, A ]` + * + * See also Phaser.ArrayUtils.rotateRight + * + * @param array The array to rotate. The array is modified. + * @return The rotated value. + */ + static rotate(array: any[]): any; + + /** + * Moves the element from the start of the array to the end, shifting all items in the process. + * The "rotation" happens to the left. + * + * Before: `[ A, B, C, D, E, F ]` + * After: `[ B, C, D, E, F, A ]` + * + * See also Phaser.ArrayUtils.rotateRight + * + * @param array The array to rotate. The array is modified. + * @return The rotated value. + */ + static rotateLeft(array: any[]): any; + + /** + * Moves the element from the end of the array to the start, shifting all items in the process. + * The "rotation" happens to the right. + * + * Before: `[ A, B, C, D, E, F ]` + * After: `[ F, A, B, C, D, E ]` + * + * See also Phaser.ArrayUtils.rotateLeft. + * + * @param array The array to rotate. The array is modified. * @return The shifted value. */ - static rotate(array: any[]): any; + static rotateRight(array: any[]): any; /** * Create an array representing the inclusive range of numbers (usually integers) in `[start, end]`. @@ -866,7 +894,7 @@ declare module Phaser { * @param end The maximum value the array contains. * @return The array of number values. */ - static numberArray(start: number, end: number): number[]; + static numberArray(start: number, end: number): number[]; /** * Create an array of numbers (positive and/or negative) progressing from `start` @@ -882,42 +910,42 @@ declare module Phaser { * @param step The value to increment or decrement by. - Default: 1 * @return Returns the new array of numbers. */ - static numberArrayStep(start: number, end?: number, step?: number): number[]; - - } - - interface BitmapFont { - - base: PIXI.BaseTexture; - data: HTMLImageElement; - font: Phaser.BMFont; - url: string; - - } - - interface BMFont { - - chars: Phaser.BMFontChar[]; - font: string; - lineHeight: number; - size: number; - - } - - interface BMFontChar { - - x: number; - y: number; - width: number; - height: number; - xOffset: number; - yOffset: number; - xAdvance: number; - kerning: number[]; - texture: PIXI.BaseTexture; - - } - + static numberArrayStep(start: number, end?: number, step?: number): number[]; + + } + + interface BitmapFont { + + base: PIXI.BaseTexture; + data: HTMLImageElement; + font: Phaser.BMFont; + url: string; + + } + + interface BMFont { + + chars: Phaser.BMFontChar[]; + font: string; + lineHeight: number; + size: number; + + } + + interface BMFontChar { + + x: number; + y: number; + width: number; + height: number; + xOffset: number; + yOffset: number; + xAdvance: number; + kerning: number[]; + texture: PIXI.BaseTexture; + + } + /** * A BitmapData object contains a Canvas element to which you can draw anything you like via normal Canvas context operations. @@ -928,8 +956,8 @@ declare module Phaser { * live on the display list, they are NOT automatically cleared when you change State. Therefore you _must_ call BitmapData.destroy * in your State's shutdown method if you wish to free-up the resources the BitmapData used, it will not happen for you. */ - class BitmapData { - + class BitmapData { + /** * A BitmapData object contains a Canvas element to which you can draw anything you like via normal Canvas context operations. @@ -944,101 +972,102 @@ declare module Phaser { * @param key Internal Phaser reference key for the BitmapData. * @param width The width of the BitmapData in pixels. If undefined or zero it's set to a default value. - Default: 256 * @param height The height of the BitmapData in pixels. If undefined or zero it's set to a default value. - Default: 256 + * @param skipPool When this BitmapData generates its internal canvas to use for rendering, it will get the canvas from the CanvasPool if false, or create its own if true. */ - constructor(game: Phaser.Game, key: string, width?: number, height?: number); - + constructor(game: Phaser.Game, key: string, width?: number, height?: number, skipPool?: boolean); + /** * The PIXI.BaseTexture. */ - baseTexture: PIXI.BaseTexture; - buffer: ArrayBuffer; + baseTexture: PIXI.BaseTexture; + buffer: ArrayBuffer; /** * The canvas to which this BitmapData draws. */ - canvas: HTMLCanvasElement; + canvas: HTMLCanvasElement; /** * The 2d context of the canvas. */ - context: CanvasRenderingContext2D; + context: CanvasRenderingContext2D; /** * A reference to BitmapData.context. */ - ctx: CanvasRenderingContext2D; + ctx: CanvasRenderingContext2D; /** * A Uint8ClampedArray view into BitmapData.buffer. * Note that this is unavailable in some browsers (such as Epic Browser due to its security restrictions) */ - data: Uint8Array; + data: Uint8Array; /** * If dirty this BitmapData will be re-rendered. */ - dirty: boolean; + dirty: boolean; /** * If disableTextureUpload is true this BitmapData will never send its image data to the GPU when its dirty flag is true. */ - disableTextureUpload: boolean; + disableTextureUpload: boolean; /** * A reference to the currently running game. */ - game: Phaser.Game; + game: Phaser.Game; /** * The height of the BitmapData in pixels. */ - height: number; + height: number; /** * The context image data. * Please note that a call to BitmapData.draw() or BitmapData.copy() does not update immediately this property for performance reason. Use BitmapData.update() to do so. * This property is updated automatically after the first game loop, according to the dirty flag property. */ - imageData: ImageData; + imageData: ImageData; /** * The key of the BitmapData in the Cache, if stored there. */ - key: string; - op: string; + key: string; + op: string; /** * An Uint32Array view into BitmapData.buffer. */ - pixels: Uint32Array; - smoothed: boolean; + pixels: Uint32Array; + smoothed: boolean; /** * The context property needed for smoothing this Canvas. */ - smoothProperty: string; + smoothProperty: string; /** * The PIXI.Texture. */ - texture: PIXI.Texture; + texture: PIXI.Texture; /** * The Frame this BitmapData uses for rendering. */ - textureFrame: Phaser.Frame; + textureFrame: Phaser.Frame; /** * The const type of this object. */ - type: number; + type: number; /** * The width of the BitmapData in pixels. */ - width: number; - + width: number; + /** * Gets a JavaScript object that has 6 properties set that are used by BitmapData in a transform. @@ -1051,8 +1080,8 @@ declare module Phaser { * @param skewY The skew y value. * @return A JavaScript object containing all of the properties BitmapData needs for transforms. */ - static getTransform(translateX: number, translateY: number, scaleX: number, scaleY: number, skewX: number, skewY: number): any; - + static getTransform(translateX: number, translateY: number, scaleX: number, scaleY: number, skewX: number, skewY: number): any; + /** * Updates the given objects so that they use this BitmapData as their texture. @@ -1061,7 +1090,7 @@ declare module Phaser { * @param object Either a single Sprite/Image or an Array of Sprites/Images. * @return This BitmapData object for method chaining. */ - add(object: any): Phaser.BitmapData; + add(object: any): Phaser.BitmapData; /** * Creates a new Phaser.Image object, assigns this BitmapData to be its texture, adds it to the world then returns it. @@ -1074,7 +1103,7 @@ declare module Phaser { * @param scaleY The vertical scale factor of the Image. A value of 1 means no scaling. 2 would be twice the size, and so on. - Default: 1 * @return The newly added Image object. */ - addToWorld(x?: number, y?: number, anchorX?: number, anchorY?: number, scaleX?: number, scaleY?: number): Phaser.Image; + addToWorld(x?: number, y?: number, anchorX?: number, anchorY?: number, scaleX?: number, scaleY?: number): Phaser.Image; /** * Draws the image onto this BitmapData using an image as an alpha mask. @@ -1085,163 +1114,163 @@ declare module Phaser { * @param maskRect A Rectangle where x/y define the coordinates to draw the Mask image to and width/height define the size. * @return This BitmapData object for method chaining. */ - alphaMask(source: any, mask?: any, sourceRect?: Phaser.Rectangle, maskRect?: Phaser.Rectangle): Phaser.BitmapData; + alphaMask(source: any, mask?: any, sourceRect?: Phaser.Rectangle, maskRect?: Phaser.Rectangle): Phaser.BitmapData; /** * Sets the blend mode to 'lighter' * @return This BitmapData object for method chaining. */ - blendAdd(): Phaser.BitmapData; + blendAdd(): Phaser.BitmapData; /** * Sets the blend mode to 'color' * @return This BitmapData object for method chaining. */ - blendColor(): Phaser.BitmapData; + blendColor(): Phaser.BitmapData; /** * Sets the blend mode to 'color-burn' * @return This BitmapData object for method chaining. */ - blendColorBurn(): Phaser.BitmapData; + blendColorBurn(): Phaser.BitmapData; /** * Sets the blend mode to 'color-dodge' * @return This BitmapData object for method chaining. */ - blendColorDodge(): Phaser.BitmapData; + blendColorDodge(): Phaser.BitmapData; /** * Sets the blend mode to 'darken' * @return This BitmapData object for method chaining. */ - blendDarken(): Phaser.BitmapData; + blendDarken(): Phaser.BitmapData; /** * Sets the blend mode to 'destination-atop' * @return This BitmapData object for method chaining. */ - blendDestinationAtop(): Phaser.BitmapData; + blendDestinationAtop(): Phaser.BitmapData; /** * Sets the blend mode to 'destination-in' * @return This BitmapData object for method chaining. */ - blendDestinationIn(): Phaser.BitmapData; + blendDestinationIn(): Phaser.BitmapData; /** * Sets the blend mode to 'destination-out' * @return This BitmapData object for method chaining. */ - blendDestinationOut(): Phaser.BitmapData; + blendDestinationOut(): Phaser.BitmapData; /** * Sets the blend mode to 'destination-over' * @return This BitmapData object for method chaining. */ - blendDestinationOver(): Phaser.BitmapData; + blendDestinationOver(): Phaser.BitmapData; /** * Sets the blend mode to 'difference' * @return This BitmapData object for method chaining. */ - blendDifference(): Phaser.BitmapData; + blendDifference(): Phaser.BitmapData; /** * Sets the blend mode to 'exclusion' * @return This BitmapData object for method chaining. */ - blendExclusion(): Phaser.BitmapData; + blendExclusion(): Phaser.BitmapData; /** * Sets the blend mode to 'hard-light' * @return This BitmapData object for method chaining. */ - blendHardLight(): Phaser.BitmapData; + blendHardLight(): Phaser.BitmapData; /** * Sets the blend mode to 'hue' * @return This BitmapData object for method chaining. */ - blendHue(): Phaser.BitmapData; + blendHue(): Phaser.BitmapData; /** * Sets the blend mode to 'lighten' * @return This BitmapData object for method chaining. */ - blendLighten(): Phaser.BitmapData; + blendLighten(): Phaser.BitmapData; /** * Sets the blend mode to 'luminosity' * @return This BitmapData object for method chaining. */ - blendLuminosity(): Phaser.BitmapData; + blendLuminosity(): Phaser.BitmapData; /** * Sets the blend mode to 'multiply' * @return This BitmapData object for method chaining. */ - blendMultiply(): Phaser.BitmapData; + blendMultiply(): Phaser.BitmapData; /** * Sets the blend mode to 'overlay' * @return This BitmapData object for method chaining. */ - blendOverlay(): Phaser.BitmapData; + blendOverlay(): Phaser.BitmapData; /** * Resets the blend mode (effectively sets it to 'source-over') * @return This BitmapData object for method chaining. */ - blendReset(): Phaser.BitmapData; + blendReset(): Phaser.BitmapData; /** * Sets the blend mode to 'saturation' * @return This BitmapData object for method chaining. */ - blendSaturation(): Phaser.BitmapData; + blendSaturation(): Phaser.BitmapData; /** * Sets the blend mode to 'screen' * @return This BitmapData object for method chaining. */ - blendScreen(): Phaser.BitmapData; + blendScreen(): Phaser.BitmapData; /** * Sets the blend mode to 'soft-light' * @return This BitmapData object for method chaining. */ - blendSoftLight(): Phaser.BitmapData; + blendSoftLight(): Phaser.BitmapData; /** * Sets the blend mode to 'source-atop' * @return This BitmapData object for method chaining. */ - blendSourceAtop(): Phaser.BitmapData; + blendSourceAtop(): Phaser.BitmapData; /** * Sets the blend mode to 'source-in' * @return This BitmapData object for method chaining. */ - blendSourceIn(): Phaser.BitmapData; + blendSourceIn(): Phaser.BitmapData; /** * Sets the blend mode to 'source-out' * @return This BitmapData object for method chaining. */ - blendSourceOut(): Phaser.BitmapData; + blendSourceOut(): Phaser.BitmapData; /** * Sets the blend mode to 'source-over' * @return This BitmapData object for method chaining. */ - blendSourceOver(): Phaser.BitmapData; + blendSourceOver(): Phaser.BitmapData; /** * Sets the blend mode to 'xor' * @return This BitmapData object for method chaining. */ - blendXor(): Phaser.BitmapData; + blendXor(): Phaser.BitmapData; /** * Draws a filled Circle to the BitmapData at the given x, y coordinates and radius in size. @@ -1252,7 +1281,7 @@ declare module Phaser { * @param fillStyle If set the context fillStyle will be set to this value before the circle is drawn. * @return This BitmapData object for method chaining. */ - circle(x: number, y: number, radius: number, fillStyle?: string): Phaser.BitmapData; + circle(x: number, y: number, radius: number, fillStyle?: string): Phaser.BitmapData; /** * Clears the BitmapData context using a clearRect. @@ -1269,12 +1298,12 @@ declare module Phaser { * @param height The height of the area to clear. If undefined it will use BitmapData.height. * @return This BitmapData object for method chaining. */ - clear(x?: number, y?: number, width?: number, height?: number): Phaser.BitmapData; + clear(x?: number, y?: number, width?: number, height?: number): Phaser.BitmapData; /** * Clears the BitmapData context using a clearRect. */ - cls(): Phaser.BitmapData; + cls(): Phaser.BitmapData; /** * Copies a rectangular area from the source object to this BitmapData. If you give `null` as the source it will copy from itself. @@ -1310,8 +1339,8 @@ declare module Phaser { * @param roundPx Should the x and y values be rounded to integers before drawing? This prevents anti-aliasing in some instances. * @return This BitmapData object for method chaining. */ - copy(source?: any, x?: number, y?: number, width?: number, height?: number, tx?: number, ty?: number, newWidth?: number, newHeight?: number, rotate?: number, anchorX?: number, anchorY?: number, scaleX?: number, scaleY?: number, alpha?: number, blendMode?: string, roundPx?: boolean): Phaser.BitmapData; - copyPixels(source: any, area: Phaser.Rectangle, x: number, y: number, alpha?: number): void; + copy(source?: any, x?: number, y?: number, width?: number, height?: number, tx?: number, ty?: number, newWidth?: number, newHeight?: number, rotate?: number, anchorX?: number, anchorY?: number, scaleX?: number, scaleY?: number, alpha?: number, blendMode?: string, roundPx?: boolean): Phaser.BitmapData; + copyPixels(source: any, area: Phaser.Rectangle, x: number, y: number, alpha?: number): void; /** * Copies the area defined by the Rectangle parameter from the source image to this BitmapData at the given location. @@ -1325,7 +1354,7 @@ declare module Phaser { * @param roundPx Should the x and y values be rounded to integers before drawing? This prevents anti-aliasing in some instances. * @return This BitmapData object for method chaining. */ - copyRect(source: any, area: Phaser.Rectangle, x?: number, y?: number, alpha?: number, blendMode?: string, roundPx?: boolean): Phaser.BitmapData; + copyRect(source: any, area: Phaser.Rectangle, x?: number, y?: number, alpha?: number, blendMode?: string, roundPx?: boolean): Phaser.BitmapData; /** * Draws the given `source` Game Object to this BitmapData, using its `worldTransform` property to set the @@ -1339,17 +1368,23 @@ declare module Phaser { * @param roundPx Should the x and y values be rounded to integers before drawing? This prevents anti-aliasing in some instances. * @return This BitmapData object for method chaining. */ - copyTransform(source: any, blendMode?: string, roundPx?: boolean): Phaser.BitmapData; + copyTransform(source: any, blendMode?: string, roundPx?: boolean): Phaser.BitmapData; /** * Destroys this BitmapData and puts the canvas it was using back into the canvas pool for re-use. */ - destroy(): void; + destroy(): void; /** * Draws the given Phaser.Sprite, Phaser.Image or Phaser.Text to this BitmapData at the coordinates specified. * You can use the optional width and height values to 'stretch' the sprite as it is drawn. This uses drawImage stretching, not scaling. - * When drawing it will take into account the Sprites rotation, scale and alpha values. + * + * The children will be drawn at their `x` and `y` world space coordinates. If this is outside the bounds of the BitmapData they won't be visible. + * When drawing it will take into account the rotation, scale, scaleMode, alpha and tint values. + * + * Note: You should ensure that at least 1 full update has taken place before calling this, + * otherwise the objects are likely to render incorrectly, if at all. + * You can trigger an update yourself by calling `stage.updateTransform()` before calling `draw`. * * @param source The Sprite, Image or Text object to draw onto this BitmapData. * @param x The x coordinate to translate to before drawing. If not specified it will default to `source.x`. @@ -1360,7 +1395,7 @@ declare module Phaser { * @param roundPx Should the x and y values be rounded to integers before drawing? This prevents anti-aliasing in some instances. * @return This BitmapData object for method chaining. */ - draw(source: any, x?: number, y?: number, width?: number, height?: number, blendMode?: string, roundPx?: boolean): Phaser.BitmapData; + draw(source: any, x?: number, y?: number, width?: number, height?: number, blendMode?: string, roundPx?: boolean): Phaser.BitmapData; /** * Draws the Game Object or Group to this BitmapData and then recursively iterates through all of its children. @@ -1384,7 +1419,7 @@ declare module Phaser { * @param roundPx Should the x and y values be rounded to integers before drawing? This prevents anti-aliasing in some instances. * @return This BitmapData object for method chaining. */ - drawFull(parent: any, blendMode?: string, roundPx?: boolean): Phaser.BitmapData; + drawFull(parent: any, blendMode?: string, roundPx?: boolean): Phaser.BitmapData; /** * Draws the immediate children of a Phaser.Group to this BitmapData. @@ -1398,14 +1433,14 @@ declare module Phaser { * * Note: You should ensure that at least 1 full update has taken place before calling this, * otherwise the objects are likely to render incorrectly, if at all. - * You can trigger an update yourself by calling `stage.updateTransform()` before calling `drawGroup`. + * You can trigger an update yourself by calling `stage.updateTransform()` before calling `drawGroup`. * * @param group The Group to draw onto this BitmapData. Can also be Phaser.World. * @param blendMode The composite blend mode that will be used when drawing. The default is no blend mode at all. This is a Canvas globalCompositeOperation value such as 'lighter' or 'xor'. * @param roundPx Should the x and y values be rounded to integers before drawing? This prevents anti-aliasing in some instances. * @return This BitmapData object for method chaining. */ - drawGroup(group: Phaser.Group, blendMode?: string, roundPx?: boolean): Phaser.BitmapData; + drawGroup(group: Phaser.Group, blendMode?: string, roundPx?: boolean): Phaser.BitmapData; /** * Scans this BitmapData for all pixels matching the given r,g,b values and then draws them into the given destination BitmapData. @@ -1428,7 +1463,7 @@ declare module Phaser { * @param b2 An alternative blue color component to be written to the destination, in the range 0 - 255. * @return The BitmapData that the extract pixels were drawn on. */ - extract(destination: Phaser.BitmapData, r: number, g: number, b: number, a?: number, resize?: boolean, r2?: number, g2?: number, b2?: number): Phaser.BitmapData; + extract(destination: Phaser.BitmapData, r: number, g: number, b: number, a?: number, resize?: boolean, r2?: number, g2?: number, b2?: number): Phaser.BitmapData; /** * Fills the BitmapData with the given color. @@ -1439,7 +1474,7 @@ declare module Phaser { * @param a The alpha color value, between 0 and 1. - Default: 1 * @return This BitmapData object for method chaining. */ - fill(r: number, g: number, b: number, a?: number): Phaser.BitmapData; + fill(r: number, g: number, b: number, a?: number): Phaser.BitmapData; /** * Creates a new Image element by converting this BitmapDatas canvas into a dataURL. @@ -1464,7 +1499,7 @@ declare module Phaser { * @param key The key which will be used to store the image in the Cache. * @return The newly generated texture. */ - generateTexture(key: string): PIXI.Texture; + generateTexture(key: string): PIXI.Texture; /** * Scans the BitmapData and calculates the bounds. This is a rectangle that defines the extent of all non-transparent pixels. @@ -1473,7 +1508,7 @@ declare module Phaser { * @param rect If provided this Rectangle object will be populated with the bounds, otherwise a new object will be created. * @return A Rectangle whose dimensions encompass the full extent of non-transparent pixels in this BitmapData. */ - getBounds(rect?: Phaser.Rectangle): Phaser.Rectangle; + getBounds(rect?: Phaser.Rectangle): Phaser.Rectangle; /** * Scans the BitmapData, pixel by pixel, until it encounters a pixel that isn't transparent (i.e. has an alpha value > 0). @@ -1489,7 +1524,7 @@ declare module Phaser { * @param direction The direction in which to scan for the first pixel. 0 = top to bottom, 1 = bottom to top, 2 = left to right and 3 = right to left. * @return Returns an object containing the color of the pixel in the `r`, `g` and `b` properties and the location in the `x` and `y` properties. */ - getFirstPixel(direction: number): { r: number; g: number; b: number; x: number; y: number; }; + getFirstPixel(direction: number): { r: number; g: number; b: number; x: number; y: number; }; /** * Get the color of a specific pixel in the context into a color object. @@ -1501,7 +1536,7 @@ declare module Phaser { * @param out An object into which 4 properties will be created: r, g, b and a. If not provided a new object will be created. * @return An object with the red, green, blue and alpha values set in the r, g, b and a properties. */ - getPixel(x: number, y: number, out?: any): number; + getPixel(x: number, y: number, out?: any): number; /** * Get the color of a specific pixel including its alpha value as a color object containing r,g,b,a and rgba properties. @@ -1515,7 +1550,7 @@ declare module Phaser { * @param hsv Also convert the rgb values into hsv? * @return An object with the red, green and blue values set in the r, g and b properties. */ - getPixelRGB(x: number, y: number, out?: any, hsl?: boolean, hsv?: boolean): any; + getPixelRGB(x: number, y: number, out?: any, hsl?: boolean, hsv?: boolean): any; /** * Get the color of a specific pixel including its alpha value. @@ -1527,7 +1562,7 @@ declare module Phaser { * @param y The y coordinate of the pixel to be set. Must lay within the dimensions of this BitmapData. * @return A native color value integer (format: 0xAARRGGBB) */ - getPixel32(x: number, y: number): number; + getPixel32(x: number, y: number): number; /** * Gets all the pixels from the region specified by the given Rectangle object. @@ -1535,7 +1570,7 @@ declare module Phaser { * @param rect The Rectangle region to get. * @return Returns a ImageData object containing a Uint8ClampedArray data property. */ - getPixels(rect: Phaser.Rectangle): ImageData; + getPixels(rect: Phaser.Rectangle): ImageData; /** * Gets a JavaScript object that has 6 properties set that are used by BitmapData in a transform. @@ -1548,7 +1583,7 @@ declare module Phaser { * @param skewY The skew y value. * @return A JavaScript object containing all of the properties BitmapData needs for transforms. */ - getTransform(translateX: number, translateY: number, scaleX: number, scaleY: number, skewX: number, skewY: number): any; + getTransform(translateX: number, translateY: number, scaleX: number, scaleY: number, skewX: number, skewY: number): any; /** * Draws a line between the coordinates given in the color and thickness specified. @@ -1561,7 +1596,7 @@ declare module Phaser { * @param width The line thickness. - Default: 1 * @return This BitmapData object for method chaining. */ - line(x1: number, y1: number, x2: number, y2: number, color?: string, width?: number): Phaser.BitmapData; + line(x1: number, y1: number, x2: number, y2: number, color?: string, width?: number): Phaser.BitmapData; /** * Takes the given Game Object, resizes this BitmapData to match it and then draws it into this BitmapDatas canvas, ready for further processing. @@ -1572,7 +1607,7 @@ declare module Phaser { * @param source The object that will be used to populate this BitmapData. If you give a string it will try and find the Image in the Game.Cache first. * @return This BitmapData object for method chaining. */ - load(source: any): Phaser.BitmapData; + load(source: any): Phaser.BitmapData; /** * Shifts the contents of this BitmapData by the distances given. @@ -1584,7 +1619,7 @@ declare module Phaser { * @param wrap Wrap the content of the BitmapData. - Default: true * @return This BitmapData object for method chaining. */ - move(x: number, y: number, wrap?: boolean): Phaser.BitmapData; + move(x: number, y: number, wrap?: boolean): Phaser.BitmapData; /** * Shifts the contents of this BitmapData horizontally. @@ -1595,7 +1630,7 @@ declare module Phaser { * @param wrap Wrap the content of the BitmapData. - Default: true * @return This BitmapData object for method chaining. */ - moveH(distance: number, wrap?: boolean): Phaser.BitmapData; + moveH(distance: number, wrap?: boolean): Phaser.BitmapData; /** * Shifts the contents of this BitmapData vertically. @@ -1606,7 +1641,7 @@ declare module Phaser { * @param wrap Wrap the content of the BitmapData. - Default: true * @return This BitmapData object for method chaining. */ - moveV(distance: number, wrap?: boolean): Phaser.BitmapData; + moveV(distance: number, wrap?: boolean): Phaser.BitmapData; /** * Scans through the area specified in this BitmapData and sends the color for every pixel to the given callback along with its x and y coordinates. @@ -1623,7 +1658,7 @@ declare module Phaser { * @param height The height of the region to process. * @return This BitmapData object for method chaining. */ - processPixel(callback: Function, callbackContext: any, x?: number, y?: Number, width?: number, height?: number): Phaser.BitmapData; + processPixel(callback: (color: number, x: number, y: number) => void, callbackContext: any, x?: number, y?: Number, width?: number, height?: number): Phaser.BitmapData; /** * Scans through the area specified in this BitmapData and sends a color object for every pixel to the given callback. @@ -1643,7 +1678,7 @@ declare module Phaser { * @param height The height of the region to process. * @return This BitmapData object for method chaining. */ - processPixelRGB(callback: Function, callbackContext: any, x?: number, y?: Number, width?: number, height?: number): Phaser.BitmapData; + processPixelRGB(callback: (color: ColorComponents, x: number, y: number) => void, callbackContext: any, x?: number, y?: Number, width?: number, height?: number): Phaser.BitmapData; /** * Draws a filled Rectangle to the BitmapData at the given x, y coordinates and width / height in size. @@ -1655,7 +1690,7 @@ declare module Phaser { * @param fillStyle If set the context fillStyle will be set to this value before the rect is drawn. * @return This BitmapData object for method chaining. */ - rect(x: number, y: number, width: number, height: number, fillStyle?: string): Phaser.BitmapData; + rect(x: number, y: number, width: number, height: number, fillStyle?: string): Phaser.BitmapData; /** * If the game is running in WebGL this will push the texture up to the GPU if it's dirty. @@ -1663,7 +1698,7 @@ declare module Phaser { * If you wish to suppress this functionality set BitmapData.disableTextureUpload to `true`. * @return This BitmapData object for method chaining. */ - render(): Phaser.BitmapData; + render(): Phaser.BitmapData; /** * Replaces all pixels matching one color with another. The color values are given as two sets of RGBA values. @@ -1680,7 +1715,7 @@ declare module Phaser { * @param region The area to perform the search over. If not given it will replace over the whole BitmapData. * @return This BitmapData object for method chaining. */ - replaceRGB(r1: number, g1: number, b1: number, a1: number, r2: number, g2: number, b2: number, a2: number, region?: Phaser.Rectangle): Phaser.BitmapData; + replaceRGB(r1: number, g1: number, b1: number, a1: number, r2: number, g2: number, b2: number, a2: number, region?: Phaser.Rectangle): Phaser.BitmapData; /** * Resizes the BitmapData. This changes the size of the underlying canvas and refreshes the buffer. @@ -1689,8 +1724,8 @@ declare module Phaser { * @param height The new height of the BitmapData. * @return This BitmapData object for method chaining. */ - resize(width: number, height: number): Phaser.BitmapData; - resizeFrame(parent: any, width: number, height: number): void; + resize(width: number, height: number): Phaser.BitmapData; + resizeFrame(parent: any, width: number, height: number): void; /** * Sets the hue, saturation and lightness values on every pixel in the given region, or the whole BitmapData if no region was specified. @@ -1701,7 +1736,7 @@ declare module Phaser { * @param region The area to perform the operation on. If not given it will run over the whole BitmapData. * @return This BitmapData object for method chaining. */ - setHSL(h?: number, s?: number, l?: number, region?: Phaser.Rectangle): Phaser.BitmapData; + setHSL(h?: number, s?: number, l?: number, region?: Phaser.Rectangle): Phaser.BitmapData; /** * Sets the color of the given pixel to the specified red, green and blue values. @@ -1714,7 +1749,7 @@ declare module Phaser { * @param immediate If `true` the context.putImageData will be called and the dirty flag set. - Default: true * @return This BitmapData object for method chaining. */ - setPixel(x: number, y: number, red: number, green: number, blue: number, immediate?: boolean): Phaser.BitmapData; + setPixel(x: number, y: number, red: number, green: number, blue: number, immediate?: boolean): Phaser.BitmapData; /** * Sets the color of the given pixel to the specified red, green, blue and alpha values. @@ -1728,7 +1763,7 @@ declare module Phaser { * @param immediate If `true` the context.putImageData will be called and the dirty flag set. - Default: true * @return This BitmapData object for method chaining. */ - setPixel32(x: number, y: number, red: number, green: number, blue: number, alpha: number, immediate?: boolean): Phaser.BitmapData; + setPixel32(x: number, y: number, red: number, green: number, blue: number, alpha: number, immediate?: boolean): Phaser.BitmapData; /** * Sets the shadow properties of this BitmapDatas context which will affect all draw operations made to it. @@ -1741,7 +1776,7 @@ declare module Phaser { * @param y The vertical offset of the shadow in pixels. - Default: 10 * @return This BitmapData object for method chaining. */ - shadow(color: string, blur?: number, x?: number, y?: number): Phaser.BitmapData; + shadow(color: string, blur?: number, x?: number, y?: number): Phaser.BitmapData; /** * Shifts any or all of the hue, saturation and lightness values on every pixel in the given region, or the whole BitmapData if no region was specified. @@ -1754,7 +1789,7 @@ declare module Phaser { * @param region The area to perform the operation on. If not given it will run over the whole BitmapData. * @return This BitmapData object for method chaining. */ - shiftHSL(h?: number, s?: number, l?: number, region?: Phaser.Rectangle): Phaser.BitmapData; + shiftHSL(h?: number, s?: number, l?: number, region?: Phaser.Rectangle): Phaser.BitmapData; /** * Draws text to the BitmapData in the given font and color. @@ -1769,7 +1804,7 @@ declare module Phaser { * @param shadow Draw a single pixel black shadow below the text (offset by text.x/y + 1) - Default: true * @return This BitmapData object for method chaining. */ - text(text: string, x?: number, y?: number, font?: string, color?: string, shadow?: boolean): Phaser.BitmapData; + text(text: string, x?: number, y?: number, font?: string, color?: string, shadow?: boolean): Phaser.BitmapData; /** * Takes the given Line object and image and renders it to this BitmapData as a repeating texture line. @@ -1779,7 +1814,7 @@ declare module Phaser { * @param repeat The pattern repeat mode to use when drawing the line. Either `repeat`, `repeat-x` or `no-repeat`. - Default: 'repeat-x' * @return This BitmapData object for method chaining. */ - textureLine(line: Phaser.Line, key: string, repeat?: string): Phaser.BitmapData; + textureLine(line: Phaser.Line, key: string, repeat?: string): Phaser.BitmapData; /** * This re-creates the BitmapData.imageData from the current context. @@ -1794,10 +1829,10 @@ declare module Phaser { * @param height The height of the image data area. - Default: 1 * @return This BitmapData object for method chaining. */ - update(x?: number, y?: number, width?: number, height?: number): Phaser.BitmapData; - - } - + update(x?: number, y?: number, width?: number, height?: number): Phaser.BitmapData; + + } + /** * BitmapText objects work by taking a texture file and an XML or JSON file that describes the font structure. @@ -1824,8 +1859,8 @@ declare module Phaser { * * If you were using an older version of Phaser (< 2.4) and using the DOMish parser hack, please remove this. It isn't required any longer. */ - class BitmapText extends PIXI.DisplayObjectContainer { - + class BitmapText extends PIXI.DisplayObjectContainer { + /** * BitmapText objects work by taking a texture file and an XML or JSON file that describes the font structure. @@ -1860,13 +1895,13 @@ declare module Phaser { * @param size The size the font will be rendered at in pixels. - Default: 32 * @param align The alignment of multi-line text. Has no effect if there is only one line of text. - Default: 'left' */ - constructor(game: Phaser.Game, x: number, y: number, font: string, text?: string, size?: number, align?: string); - + constructor(game: Phaser.Game, x: number, y: number, font: string, text?: string, size?: number, align?: string); + /** * Alignment for multi-line text ('left', 'center' or 'right'), does not affect single lines of text. */ - align: string; + align: string; /** * A useful flag to control if the Game Object is alive or dead. @@ -1878,18 +1913,18 @@ declare module Phaser { * However you can use `Group.getFirstAlive` in conjunction with this property for fast object pooling and recycling. * Default: true */ - alive: boolean; + alive: boolean; /** * The anchor value of this BitmapText. */ - anchor: Phaser.Point; + anchor: Phaser.Point; /** * If the Game Object is enabled for animation (such as a Phaser.Sprite) this is a reference to its AnimationManager instance. * Through it you can create, play, pause and stop animations. */ - animations: Phaser.AnimationManager; + animations: Phaser.AnimationManager; /** * The angle property is the rotation of the Game Object in *degrees* from its original orientation. @@ -1902,7 +1937,7 @@ declare module Phaser { * If you wish to work in radians instead of degrees you can use the property `rotation` instead. * Working in radians is slightly faster as it doesn't have to perform any calculations. */ - angle: number; + angle: number; /** * A Game Object with `autoCull` set to true will check its bounds against the World Camera every frame. @@ -1912,7 +1947,7 @@ declare module Phaser { * This is a relatively expensive operation, especially if enabled on hundreds of Game Objects. So enable it only if you know it's required, * or you have tested performance and find it acceptable. */ - autoCull: boolean; + autoCull: boolean; /** * `body` is the Game Objects physics body. Once a Game Object is enabled for physics you access all associated @@ -1930,20 +1965,20 @@ declare module Phaser { * * If you need a different result then adjust or re-create the Body shape offsets manually or reset the anchor after enabling physics. */ - body: Phaser.Physics.Arcade.Body | Phaser.Physics.P2.Body | Phaser.Physics.Ninja.Body | any; + body: Phaser.Physics.Arcade.Body | Phaser.Physics.P2.Body | Phaser.Physics.Ninja.Body | any; /** * The sum of the y and height properties. * This is the same as `y + height - offsetY`. */ - bottom: number; + bottom: number; /** * The x/y coordinate offset applied to the top-left of the camera that this Game Object will be drawn at if `fixedToCamera` is true. * * The values are relative to the top-left of the camera view and in addition to any parent of the Game Object on the display list. */ - cameraOffset: Phaser.Point; + cameraOffset: Phaser.Point; /** * If this is set to `true` the Game Object checks if it is within the World bounds each frame. @@ -1959,7 +1994,7 @@ declare module Phaser { * This is a relatively expensive operation, especially if enabled on hundreds of Game Objects. So enable it only if you know it's required, * or you have tested performance and find it acceptable. */ - checkWorldBounds: boolean; + checkWorldBounds: boolean; /** * An empty Object that belongs to this Game Object. @@ -1968,29 +2003,29 @@ declare module Phaser { * without polluting the Game Object directly. * Default: {} */ - data: any; + data: any; /** * As a Game Object runs through its destroy method this flag is set to true, * and can be checked in any sub-systems or plugins it is being destroyed from. */ - destroyPhase: boolean; + destroyPhase: boolean; /** * A debug flag designed for use with `Game.enableStep`. */ - debug: boolean; + debug: boolean; /** * The dirty state of this object. */ - dirty: boolean; + dirty: boolean; /** * All Phaser Game Objects have an Events class which contains all of the events that are dispatched when certain things happen to this * Game Object, or any of its components. */ - events: Phaser.Events; + events: Phaser.Events; /** * Controls if this Game Object is processed by the core game loop. @@ -2001,7 +2036,7 @@ declare module Phaser { * Setting `exists` to true will add its physics body back in to the physics world, if it has one. * It will also set the `visible` property to `true`. */ - exists: boolean; + exists: boolean; /** * A Game Object that is "fixed" to the camera uses its x/y coordinates as offsets from the top left of the camera during rendering. @@ -2018,28 +2053,28 @@ declare module Phaser { * * Be careful not to set `fixedToCamera` on Game Objects which are in Groups that already have `fixedToCamera` enabled on them. */ - fixedToCamera: boolean; + fixedToCamera: boolean; /** * The font the text will be rendered in, i.e. 'Arial'. Must be loaded in the browser before use. */ - font: string; + font: string; /** * The size of the font in pixels. */ - fontSize: number; + fontSize: number; /** * A Game Object is considered `fresh` if it has just been created or reset and is yet to receive a renderer transform update. * This property is mostly used internally by the physics systems, but is exposed for the use of plugins. */ - fresh: boolean; + fresh: boolean; /** * A reference to the currently running Game. */ - game: Phaser.Game; + game: Phaser.Game; /** * The Input Handler for this Game Object. @@ -2048,7 +2083,7 @@ declare module Phaser { * * After you have done this, this property will be a reference to the Phaser InputHandler. */ - input: Phaser.InputHandler; + input: Phaser.InputHandler; /** * By default a Game Object won't process any input events. By setting `inputEnabled` to true a Phaser.InputHandler is created @@ -2059,19 +2094,23 @@ declare module Phaser { * Note that Input related events are dispatched from `this.events`, i.e.: `events.onInputDown`. * * If you set this property to false it will stop the Input Handler from processing any more input events. + * + * If you want to _temporarily_ disable input for a Game Object, then it's better to set + * `input.enabled = false`, as it won't reset any of the Input Handlers internal properties. + * You can then toggle this back on as needed. */ - inputEnabled: boolean; + inputEnabled: boolean; /** * Checks if the Game Objects bounds intersect with the Game Camera bounds. * Returns `true` if they do, otherwise `false` if fully outside of the Cameras bounds. */ - inCamera: boolean; + inCamera: boolean; /** * Checks if the Game Objects bounds are within, or intersect at any point with the Game World bounds. */ - inWorld: boolean; + inWorld: boolean; /** * The key of the image or texture used by this Game Object during rendering. @@ -2080,24 +2119,24 @@ declare module Phaser { * If a Game Object is created without a key it is automatically assigned the key `__default` which is a 32x32 transparent PNG stored within the Cache. * If a Game Object is given a key which doesn't exist in the Image Cache it is re-assigned the key `__missing` which is a 32x32 PNG of a green box with a line through it. */ - key: string | Phaser.RenderTexture | Phaser.BitmapData | Phaser.Video | PIXI.Texture; + key: string | Phaser.RenderTexture | Phaser.BitmapData | Phaser.Video | PIXI.Texture; /** * The left coordinate of the Game Object. * This is the same as `x - offsetX`. */ - left: number; + left: number; /** * A user defined name given to this Game Object. * This value isn't ever used internally by Phaser, it is meant as a game level property. */ - name: string; + name: string; /** * The components this Game Object has installed. */ - components: any; + components: any; /** * The lifespan allows you to give a Game Object a lifespan in milliseconds. @@ -2109,7 +2148,7 @@ declare module Phaser { * * Very handy for particles, bullets, collectibles, or any other short-lived entity. */ - lifespan: number; + lifespan: number; /** * The maximum display width of this BitmapText in pixels. @@ -2121,26 +2160,26 @@ declare module Phaser { * * Disable maxWidth by setting the value to 0. The maximum width of this BitmapText in pixels. */ - maxWidth: number; + maxWidth: number; /** * The amount the Game Object is visually offset from its x coordinate. * This is the same as `width * anchor.x`. * It will only be > 0 if anchor.x is not equal to zero. */ - offsetX: number; + offsetX: number; /** * The amount the Game Object is visually offset from its y coordinate. * This is the same as `height * anchor.y`. * It will only be > 0 if anchor.y is not equal to zero. */ - offsetY: number; + offsetY: number; /** * If this and the `checkWorldBounds` property are both set to `true` then the `kill` method is called as soon as `inWorld` returns false. */ - outOfBoundsKill: boolean; + outOfBoundsKill: boolean; /** * A Game Object is that is pendingDestroy is flagged to have its destroy method called on the next logic update. @@ -2149,44 +2188,40 @@ declare module Phaser { * This is extremely useful if you wish to destroy an object from within one of its own callbacks * such as with Buttons or other Input events. */ - pendingDestroy: boolean; + pendingDestroy: boolean; /** * The const physics body type of this object. */ - physicsType: number; + physicsType: number; /** * The position the Game Object was located in the previous frame. */ - previousPosition: Phaser.Point; + previousPosition: Phaser.Point; /** * The rotation the Game Object was in set to in the previous frame. Value is in radians. */ - previousRotation: number; - - /** - * The coordinate of the object relative to the local coordinates of the parent. - */ - position: Phaser.Point; + previousRotation: number; + position: Phaser.Point; /** * The render order ID is used internally by the renderer and Input Manager and should not be modified. * This property is mostly used internally by the renderers, but is exposed for the use of plugins. */ - renderOrderID: number; + renderOrderID: number; /** * The right coordinate of the Game Object. * This is the same as `x + width - offsetX`. */ - right: number; + right: number; /** * The text to be displayed by this BitmapText object. */ - text: string; + text: string; /** * Enable or disable texture smoothing for this BitmapText. @@ -2195,50 +2230,50 @@ declare module Phaser { * * Smoothing is enabled by default. */ - smoothed: boolean; + smoothed: boolean; /** * The width in pixels of the overall text area, taking into consideration multi-line text. */ - textWidth: number; + textWidth: number; /** * The height in pixels of the overall text area, taking into consideration multi-line text. */ - textHeight: number; + textHeight: number; /** * The tint applied to the BitmapText. This is a hex value. Set to white to disable (0xFFFFFF) */ - tint: number; + tint: number; /** * The y coordinate of the Game Object. * This is the same as `y - offsetY`. */ - top: number; + top: number; /** * The const type of this object. */ - type: number; + type: number; /** * The world coordinates of this Game Object in pixels. * Depending on where in the display list this Game Object is placed this value can differ from `position`, * which contains the x/y coordinates relative to the Game Objects parent. */ - world: Phaser.Point; + world: Phaser.Point; /** - * The position of the displayObject on the x axis relative to the local coordinates of the parent. + * The position of the Game Object on the x axis relative to the local coordinates of the parent. */ - x: number; + x: number; /** - * The position of the displayObject on the y axis relative to the local coordinates of the parent. + * The position of the Game Object on the y axis relative to the local coordinates of the parent. */ - y: number; + y: number; /** * The z depth of this Game Object within its parent Group. @@ -2246,8 +2281,8 @@ declare module Phaser { * This value is adjusted automatically whenever the Group hierarchy changes. * If you wish to re-order the layering of a Game Object then see methods like Group.moveUp or Group.bringToTop. */ - z: number; - + z: number; + /** * Aligns this Game Object within another Game Object, or Rectangle, known as the @@ -2287,7 +2322,7 @@ declare module Phaser { * @param offsetY A vertical adjustment of the Containers bounds, applied to the aligned position of the Game Object. Use a negative value to shrink the bounds, positive to increase it. * @return This Game Object. */ - alignIn(container: Phaser.Rectangle | Phaser.Sprite | Phaser.Image | Phaser.Text | Phaser.BitmapText | Phaser.Button | Phaser.Graphics | Phaser.TileSprite, position?: number, offsetX?: number, offsetY?: number): any; + alignIn(container: Phaser.Rectangle | Phaser.Sprite | Phaser.Image | Phaser.Text | Phaser.BitmapText | Phaser.Button | Phaser.Graphics | Phaser.TileSprite, position?: number, offsetX?: number, offsetY?: number): any; /** * Aligns this Game Object to the side of another Game Object, or Rectangle, known as the @@ -2328,13 +2363,21 @@ declare module Phaser { * @param offsetY A vertical adjustment of the Containers bounds, applied to the aligned position of the Game Object. Use a negative value to shrink the bounds, positive to increase it. * @return This Game Object. */ - alignTo(container: Phaser.Rectangle | Phaser.Sprite | Phaser.Image | Phaser.Text | Phaser.BitmapText | Phaser.Button | Phaser.Graphics | Phaser.TileSprite, position?: number, offsetX?: number, offsetY?: number): any; + alignTo(container: Phaser.Rectangle | Phaser.Sprite | Phaser.Image | Phaser.Text | Phaser.BitmapText | Phaser.Button | Phaser.Graphics | Phaser.TileSprite, position?: number, offsetX?: number, offsetY?: number): any; /** - * Destroy this DisplayObject. - * Removes all references to transformCallbacks, its parent, the stage, filters, bounds, mask and cached Sprites. + * Destroys the Game Object. This removes it from its parent group, destroys the input, event and animation handlers if present + * and nulls its reference to `game`, freeing it up for garbage collection. + * + * If this Game Object has the Events component it will also dispatch the `onDestroy` event. + * + * You can optionally also destroy the BaseTexture this Game Object is using. Be careful if you've + * more than one Game Object sharing the same BaseTexture. + * + * @param destroyChildren Should every child of this object have its destroy method called as well? - Default: true + * @param destroyTexture Destroy the BaseTexture this Game Object is using? Note that if another Game Object is sharing the same BaseTexture it will invalidate it. */ - destroy(destroyChildren?: boolean): void; + destroy(destroyChildren?: boolean): void; /** * Kills a Game Object. A killed Game Object has its `alive`, `exists` and `visible` properties all set to false. @@ -2347,18 +2390,18 @@ declare module Phaser { * If you don't need this Game Object any more you should call `destroy` instead. * @return This instance. */ - kill(): void; + kill(): void; /** * Automatically called by World.preUpdate. */ - postUpdate(): void; + postUpdate(): void; /** * Automatically called by World.preUpdate. * @return True if the BitmapText was rendered, otherwise false. */ - preUpdate(): void; + preUpdate(): void; /** * If a BitmapText changes from having a large number of characters to having very few characters it will cause lots of @@ -2371,7 +2414,7 @@ declare module Phaser { * Calling this doesn't prevent you from increasing the length of the text again in the future. * @return The amount of glyphs removed from the pool. */ - purgeGlyphs(): number; + purgeGlyphs(): number; /** * Resets the Game Object. @@ -2388,7 +2431,7 @@ declare module Phaser { * @param health The health to give the Game Object if it has the Health component. - Default: 1 * @return This instance. */ - reset(x: number, y: number, health?: number): Phaser.BitmapText; + reset(x: number, y: number, health?: number): Phaser.BitmapText; /** * Brings a 'dead' Game Object back to life, optionally resetting its health value in the process. @@ -2400,7 +2443,7 @@ declare module Phaser { * @param health The health to give the Game Object. Only set if the GameObject has the Health component. - Default: 100 * @return This instance. */ - revive(health?: number): Phaser.BitmapText; + revive(health?: number): Phaser.BitmapText; /** * Given the input text this will scan the characters until either a newline is encountered, @@ -2419,7 +2462,7 @@ declare module Phaser { /** * The text to be displayed by this BitmapText object. */ - scanLine(data: any, scale: number, text: string): { width: number; text: string; end: boolean; chars: string[] }; + scanLine(data: any, scale: number, text: string): { width: number; text: string; end: boolean; chars: string[] }; /** * The text to be displayed by this BitmapText object. @@ -2428,36 +2471,36 @@ declare module Phaser { * * @param text The text to be displayed by this BitmapText object. */ - setText(text: string): void; + setText(text: string): void; /** * Override this method in your own custom objects to handle any update requirements. * It is called immediately after `preUpdate` and before `postUpdate`. * Remember if this Game Object has any children you should call update on those too. */ - update(): void; + update(): void; /** * Renders text and updates it when needed. */ - updateText(): void; + updateText(): void; /** * Updates the transform of this object. */ - updateTransform(): void; - - } - - class Bullet extends Phaser.Sprite { - - constructor(game: Phaser.Game, x: number, y: number, key?: any, frame?: any); - - kill(): Phaser.Bullet; - update(): void; - - } - + updateTransform(): void; + + } + + class Bullet extends Phaser.Sprite { + + constructor(game: Phaser.Game, x: number, y: number, key?: any, frame?: any); + + kill(): Phaser.Bullet; + update(): void; + + } + /** * Create a new `Button` object. A Button is a special type of Sprite that is set-up to handle Pointer events automatically. @@ -2473,8 +2516,8 @@ declare module Phaser { * * Frames can be specified as either an integer (the frame ID) or a string (the frame name); the same values that can be used with a Sprite constructor. */ - class Button extends Phaser.Image { - + class Button extends Phaser.Image { + /** * Create a new `Button` object. A Button is a special type of Sprite that is set-up to handle Pointer events automatically. @@ -2501,99 +2544,99 @@ declare module Phaser { * @param downFrame The frame / frameName when the button is in the Down state. * @param upFrame The frame / frameName when the button is in the Up state. */ - constructor(game: Phaser.Game, x?: number, y?: number, key?: string, callback?: Function, callbackContext?: any, overFrame?: string | number, outFrame?: string | number, downFrame?: string | number, upFrame?: string | number); - + constructor(game: Phaser.Game, x?: number, y?: number, key?: string, callback?: Function, callbackContext?: any, overFrame?: string | number, outFrame?: string | number, downFrame?: string | number, upFrame?: string | number); + /** * When the Button is touched / clicked and then released you can force it to enter a state of "out" instead of "up". * * This can also accept a {@link Phaser.PointerModer pointer mode bitmask} for more refined control. */ - forceOut: boolean; + forceOut: boolean; /** * When true the the texture frame will not be automatically switched on up/down/over/out events. */ - freezeFrames: boolean; + freezeFrames: boolean; /** * The Sound to be played when this Buttons Down state is activated. */ - onDownSound: Phaser.Sound | Phaser.AudioSprite; + onDownSound: Phaser.Sound | Phaser.AudioSprite; /** * The Sound Marker used in conjunction with the onDownSound. */ - onDownSoundMarker: string; + onDownSoundMarker: string; /** * The Signal (or event) dispatched when this Button is in an Down state. */ - onInputDown: Phaser.Signal; + onInputDown: Phaser.Signal; /** * The Signal (or event) dispatched when this Button is in an Out state. */ - onInputOut: Phaser.Signal; + onInputOut: Phaser.Signal; /** * The Signal (or event) dispatched when this Button is in an Over state. */ - onInputOver: Phaser.Signal; + onInputOver: Phaser.Signal; /** * The Signal (or event) dispatched when this Button is in an Up state. */ - onInputUp: Phaser.Signal; + onInputUp: Phaser.Signal; /** * The Sound to be played when this Buttons Out state is activated. */ - onOutSound: Phaser.Sound | Phaser.AudioSprite; + onOutSound: Phaser.Sound | Phaser.AudioSprite; /** * The Sound Marker used in conjunction with the onOutSound. */ - onOutSoundMarker: string; + onOutSoundMarker: string; /** * The Sound to be played when this Buttons Over state is activated. */ - onOverSound: Phaser.Sound | Phaser.AudioSprite; + onOverSound: Phaser.Sound | Phaser.AudioSprite; /** * The Sound Marker used in conjunction with the onOverSound. */ - onOverSoundMarker: string; + onOverSoundMarker: string; /** * If true then onOver events (such as onOverSound) will only be triggered if the Pointer object causing them was the Mouse Pointer. * The frame will still be changed as applicable. * Default: true */ - onOverMouseOnly: boolean; + onOverMouseOnly: boolean; /** * The Sound to be played when this Buttons Up state is activated. */ - onUpSound: Phaser.Sound | Phaser.AudioSprite; - onUpSoundMaker: string; + onUpSound: Phaser.Sound | Phaser.AudioSprite; + onUpSoundMaker: string; /** * The const physics body type of this object. */ - physicsType: number; + physicsType: number; /** * The Phaser Object Type. */ - type: number; - + type: number; + /** * Clears all of the frames set on this Button. */ - clearFrames(): void; + clearFrames(): void; /** * The Sound to be played when a Pointer presses down on this Button. @@ -2601,7 +2644,7 @@ declare module Phaser { * @param sound The Sound that will be played. * @param marker A Sound Marker that will be used in the playback. */ - setDownSound(sound: Phaser.Sound | Phaser.AudioSprite, marker?: string): void; + setDownSound(sound: Phaser.Sound | Phaser.AudioSprite, marker?: string): void; /** * Used to manually set the frames that will be used for the different states of the Button. @@ -2613,7 +2656,7 @@ declare module Phaser { * @param downFrame The frame / frameName when the button is in the Down state. * @param upFrame The frame / frameName when the button is in the Up state. */ - setFrames(overFrame?: string | number, outFrame?: string | number, downFrame?: string | number, upFrame?: string | number): void; + setFrames(overFrame?: string | number, outFrame?: string | number, downFrame?: string | number, upFrame?: string | number): void; /** * Internal function that handles input events. @@ -2621,7 +2664,7 @@ declare module Phaser { * @param sprite The Button that the event occurred on. * @param pointer The Pointer that activated the Button. */ - onInputOverHandler(sprite: Phaser.Button, pointer: Phaser.Pointer): void; + onInputOverHandler(sprite: Phaser.Button, pointer: Phaser.Pointer): void; /** * Internal function that handles input events. @@ -2629,7 +2672,7 @@ declare module Phaser { * @param sprite The Button that the event occurred on. * @param pointer The Pointer that activated the Button. */ - onInputOutHandler(sprite: Phaser.Button, pointer: Phaser.Pointer): void; + onInputOutHandler(sprite: Phaser.Button, pointer: Phaser.Pointer): void; /** * Internal function that handles input events. @@ -2637,7 +2680,7 @@ declare module Phaser { * @param sprite The Button that the event occurred on. * @param pointer The Pointer that activated the Button. */ - onInputDownHandler(sprite: Phaser.Button, pointer: Phaser.Pointer): void; + onInputDownHandler(sprite: Phaser.Button, pointer: Phaser.Pointer): void; /** * Internal function that handles input events. @@ -2645,12 +2688,12 @@ declare module Phaser { * @param sprite The Button that the event occurred on. * @param pointer The Pointer that activated the Button. */ - onInputUpHandler(sprite: Phaser.Button, pointer: Phaser.Pointer, isOver: boolean): void; + onInputUpHandler(sprite: Phaser.Button, pointer: Phaser.Pointer, isOver: boolean): void; /** * Called when this Button is removed from the World. */ - removedFromWorld(): void; + removedFromWorld(): void; /** * The Sound to be played when a Pointer moves out of this Button. @@ -2658,7 +2701,7 @@ declare module Phaser { * @param sound The Sound that will be played. * @param marker A Sound Marker that will be used in the playback. */ - setOutSound(sound: Phaser.Sound | Phaser.AudioSprite, marker?: string): void; + setOutSound(sound: Phaser.Sound | Phaser.AudioSprite, marker?: string): void; /** * The Sound to be played when a Pointer moves over this Button. @@ -2666,7 +2709,7 @@ declare module Phaser { * @param sound The Sound that will be played. * @param marker A Sound Marker that will be used in the playback. */ - setOverSound(sound: Phaser.Sound | Phaser.AudioSprite, marker?: string): void; + setOverSound(sound: Phaser.Sound | Phaser.AudioSprite, marker?: string): void; /** * Sets the sounds to be played whenever this Button is interacted with. Sounds can be either full Sound objects, or markers pointing to a section of a Sound object. @@ -2683,8 +2726,8 @@ declare module Phaser { * @param upSound Up Button Sound. * @param upMarker Up Button Sound Marker. */ - setSounds(overSound?: Phaser.Sound | Phaser.AudioSprite, overMarker?: string, downSound?: Phaser.Sound | Phaser.AudioSprite, downMarker?: string, outSound?: Phaser.Sound | Phaser.AudioSprite, outMarker?: string, upSound?: Phaser.Sound | Phaser.AudioSprite, upMarker?: string): void; - setState(newState: number): void; + setSounds(overSound?: Phaser.Sound | Phaser.AudioSprite, overMarker?: string, downSound?: Phaser.Sound | Phaser.AudioSprite, downMarker?: string, outSound?: Phaser.Sound | Phaser.AudioSprite, outMarker?: string, upSound?: Phaser.Sound | Phaser.AudioSprite, upMarker?: string): void; + setState(newState: number): void; /** * The Sound to be played when a Pointer has pressed down and is released from this Button. @@ -2692,10 +2735,10 @@ declare module Phaser { * @param sound The Sound that will be played. * @param marker A Sound Marker that will be used in the playback. */ - setUpSound(sound: Phaser.Sound | Phaser.AudioSprite, marker?: string): void; - - } - + setUpSound(sound: Phaser.Sound | Phaser.AudioSprite, marker?: string): void; + + } + /** * Enumeration categorizing operational modes of pointers. @@ -2706,8 +2749,8 @@ declare module Phaser { * * Values may be added for future mode categorizations. */ - class PointerMode { - + class PointerMode { + /** * A 'CURSOR' is a pointer with a *passive cursor* such as a mouse, touchpad, watcom stylus, or even TV-control arrow-pad. @@ -2715,15 +2758,15 @@ declare module Phaser { * It has the property that a cursor is passively moved without activating the input. * This currently corresponds with {@link Phaser.Pointer#isMouse} property. */ - static CURSOR: number; + static CURSOR: number; /** * A 'CONTACT' pointer has an *active cursor* that only tracks movement when actived; notably this is a touch-style input. */ - static CONTACT: number; - - } - + static CONTACT: number; + + } + /** * Phaser has one single cache in which it stores all assets. @@ -2748,8 +2791,8 @@ declare module Phaser { * your game require it. In a typical game set-up the cache is populated once after the main game has loaded and * then used as an asset store. */ - class Cache { - + class Cache { + /** * Phaser has one single cache in which it stores all assets. @@ -2776,42 +2819,53 @@ declare module Phaser { * * @param game A reference to the currently running game. */ - constructor(game: Phaser.Game); - - static BINARY: number; - static BITMAPDATA: number; - static BITMAPFONT: number; - static CANVAS: number; - static IMAGE: number; - static JSON: number; - static PHYSICS: number; - static RENDER_TEXTURE: number; - static SHADER: number; - static SOUND: number; - static SPRITE_SHEET: number; - static TEXT: number; - static TEXTURE: number; - static TEXTURE_ATLAS: number; - static TILEMAP: number; - static XML: number; - static VIDEO: number; - + constructor(game: Phaser.Game); + + static BINARY: number; + static BITMAPDATA: number; + static BITMAPFONT: number; + static CANVAS: number; + static IMAGE: number; + static JSON: number; + static PHYSICS: number; + static RENDER_TEXTURE: number; + static SHADER: number; + static SOUND: number; + static SPRITE_SHEET: number; + static TEXT: number; + static TEXTURE: number; + static TEXTURE_ATLAS: number; + static TILEMAP: number; + static XML: number; + static VIDEO: number; + + + /** + * The default image used for a texture when no other is specified. + */ + static DEFAULT: PIXI.Texture; + + /** + * The default image used for a texture when the source image is missing. + */ + static MISSING: PIXI.Texture; + /** * Automatically resolve resource URLs to absolute paths for use with the Cache.getURL method. */ - autoResolveURL: boolean; + autoResolveURL: boolean; /** * Local reference to game. */ - game: Phaser.Game; + game: Phaser.Game; /** * This event is dispatched when the sound system is unlocked via a touch event on cellular devices. */ - onSoundUnlock: Phaser.Signal; - + onSoundUnlock: Phaser.Signal; + /** * Add a binary object in to the cache. @@ -2819,7 +2873,7 @@ declare module Phaser { * @param key The key that this asset will be stored in the cache under. This should be unique within this cache. * @param binaryData The binary object to be added to the cache. */ - addBinary(key: string, binaryData: any): void; + addBinary(key: string, binaryData: any): void; /** * Add a BitmapData object to the cache. @@ -2829,7 +2883,7 @@ declare module Phaser { * @param frameData Optional FrameData set associated with the given BitmapData. If not specified (or `undefined`) a new FrameData object is created containing the Bitmap's Frame. If `null` is supplied then no FrameData will be created. - Default: (auto create) * @return The BitmapData object to be addded to the cache. */ - addBitmapData(key: string, bitmapData: Phaser.BitmapData, frameData?: Phaser.FrameData): Phaser.BitmapData; + addBitmapData(key: string, bitmapData: Phaser.BitmapData, frameData?: Phaser.FrameData): Phaser.BitmapData; /** * Add a new Bitmap Font to the Cache. @@ -2842,7 +2896,7 @@ declare module Phaser { * @param xSpacing If you'd like to add additional horizontal spacing between the characters then set the pixel value here. * @param ySpacing If you'd like to add additional vertical spacing between the lines then set the pixel value here. */ - addBitmapFont(key: string, texture: Phaser.RetroFont): void; + addBitmapFont(key: string, texture: Phaser.RetroFont): void; /** * Add a new Bitmap Font to the Cache. @@ -2855,7 +2909,7 @@ declare module Phaser { * @param xSpacing If you'd like to add additional horizontal spacing between the characters then set the pixel value here. * @param ySpacing If you'd like to add additional vertical spacing between the lines then set the pixel value here. */ - addBitmapFont(key: string, url: string, data: any, atlasData: any, atlasType: string, xSpacing?: number, ySpacing?: number): void; + addBitmapFont(key: string, url: string, data: any, atlasData: any, atlasType: string, xSpacing?: number, ySpacing?: number): void; /** * Add a new canvas object in to the cache. @@ -2864,7 +2918,7 @@ declare module Phaser { * @param canvas The Canvas DOM element. * @param context The context of the canvas element. If not specified it will default go `getContext('2d')`. */ - addCanvas(key: string, canvas: HTMLCanvasElement, context?: CanvasRenderingContext2D): void; + addCanvas(key: string, canvas: HTMLCanvasElement, context?: CanvasRenderingContext2D): void; /** * Adds a default image to be used in special cases such as WebGL Filters. @@ -2872,7 +2926,7 @@ declare module Phaser { * This method is called automatically when the Cache is created. * This image is skipped when `Cache.destroy` is called due to its internal requirements. */ - addDefaultImage(): void; + addDefaultImage(): void; /** * Adds an Image file into the Cache. The file must have already been loaded, typically via Phaser.Loader, but can also have been loaded into the DOM. @@ -2883,7 +2937,7 @@ declare module Phaser { * @param data Extra image data. * @return The full image object that was added to the cache. */ - addImage(key: string, url: string, data: any): HTMLImageElement; + addImage(key: string, url: string, data: any): HTMLImageElement; /** * Add a new json object into the cache. @@ -2892,7 +2946,7 @@ declare module Phaser { * @param url The URL the asset was loaded from. If the asset was not loaded externally set to `null`. * @param data Extra json data. */ - addJSON(key: string, urL: string, data: any): void; + addJSON(key: string, urL: string, data: any): void; /** * Adds an image to be used when a key is wrong / missing. @@ -2900,7 +2954,7 @@ declare module Phaser { * This method is called automatically when the Cache is created. * This image is skipped when `Cache.destroy` is called due to its internal requirements. */ - addMissingImage(): void; + addMissingImage(): void; /** * Add a new physics data object to the Cache. @@ -2910,7 +2964,7 @@ declare module Phaser { * @param JSONData The physics data object (a JSON file). * @param format The format of the physics data. */ - addPhysicsData(key: string, url: string, JSONData: any, format: number): void; + addPhysicsData(key: string, url: string, JSONData: any, format: number): void; /** * Add a new Phaser.RenderTexture in to the cache. @@ -2918,7 +2972,7 @@ declare module Phaser { * @param key The key that this asset will be stored in the cache under. This should be unique within this cache. * @param texture The texture to use as the base of the RenderTexture. */ - addRenderTexture(key: string, texture: RenderTexture): void; + addRenderTexture(key: string, texture: RenderTexture): void; /** * Adds a Fragment Shader in to the Cache. The file must have already been loaded, typically via Phaser.Loader. @@ -2927,7 +2981,7 @@ declare module Phaser { * @param url The URL the asset was loaded from. If the asset was not loaded externally set to `null`. * @param data Extra shader data. */ - addShader(key: string, url: string, data: any): void; + addShader(key: string, url: string, data: any): void; /** * Adds a Sound file into the Cache. The file must have already been loaded, typically via Phaser.Loader. @@ -2938,7 +2992,7 @@ declare module Phaser { * @param webAudio True if the file is using web audio. * @param audioTag True if the file is using legacy HTML audio. */ - addSound(key: string, url: string, data: any, webAudio: boolean, audioTag: boolean): void; + addSound(key: string, url: string, data: any, webAudio: boolean, audioTag: boolean): void; /** * Add a new sprite sheet in to the cache. @@ -2952,7 +3006,7 @@ declare module Phaser { * @param margin If the frames have been drawn with a margin, specify the amount here. * @param spacing If the frames have been drawn with spacing between them, specify the amount here. */ - addSpriteSheet(key: string, url: string, data: any, frameWidth: number, frameHeight: number, frameMax?: number, margin?: number, spacing?: number): void; + addSpriteSheet(key: string, url: string, data: any, frameWidth: number, frameHeight: number, frameMax?: number, margin?: number, spacing?: number): void; /** * Add a new text data. @@ -2961,7 +3015,7 @@ declare module Phaser { * @param url The URL the asset was loaded from. If the asset was not loaded externally set to `null`. * @param data Extra text data. */ - addText(key: string, url: string, data: any): void; + addText(key: string, url: string, data: any): void; /** * Add a new texture atlas to the Cache. @@ -2972,7 +3026,7 @@ declare module Phaser { * @param atlasData Texture atlas frames data. * @param format The format of the texture atlas. */ - addTextureAtlas(key: string, url: string, data: any, atlasData: any, format: number): void; + addTextureAtlas(key: string, url: string, data: any, atlasData: any, format: number): void; /** * Add a new tilemap to the Cache. @@ -2982,7 +3036,7 @@ declare module Phaser { * @param mapData The tilemap data object (either a CSV or JSON file). * @param format The format of the tilemap data. */ - addTilemap(key: string, url: string, mapData: any, format: number): void; + addTilemap(key: string, url: string, mapData: any, format: number): void; /** * Adds a Video file into the Cache. The file must have already been loaded, typically via Phaser.Loader. @@ -2992,7 +3046,7 @@ declare module Phaser { * @param data Extra video data. * @param isBlob True if the file was preloaded via xhr and the data parameter is a Blob. false if a Video tag was created instead. */ - addVideo(key: string, url: string, data: any, isBlob?: boolean): void; + addVideo(key: string, url: string, data: any, isBlob?: boolean): void; /** * Add a new xml object into the cache. @@ -3001,7 +3055,7 @@ declare module Phaser { * @param url The URL the asset was loaded from. If the asset was not loaded externally set to `null`. * @param data Extra text data. */ - addXML(key: string, url: string, data: any): void; + addXML(key: string, url: string, data: any): void; /** * Checks if the given key exists in the Binary Cache. @@ -3009,7 +3063,7 @@ declare module Phaser { * @param key The key of the asset within the cache. * @return True if the key exists in the cache, otherwise false. */ - checkBinaryKey(key: string): boolean; + checkBinaryKey(key: string): boolean; /** * Checks if the given key exists in the BitmapData Cache. @@ -3017,7 +3071,7 @@ declare module Phaser { * @param key The key of the asset within the cache. * @return True if the key exists in the cache, otherwise false. */ - checkBitmapDataKey(key: string): boolean; + checkBitmapDataKey(key: string): boolean; /** * Checks if the given key exists in the BitmapFont Cache. @@ -3025,7 +3079,7 @@ declare module Phaser { * @param key The key of the asset within the cache. * @return True if the key exists in the cache, otherwise false. */ - checkBitmapFontKey(key: string): boolean; + checkBitmapFontKey(key: string): boolean; /** * Checks if the given key exists in the Canvas Cache. @@ -3033,7 +3087,7 @@ declare module Phaser { * @param key The key of the asset within the cache. * @return True if the key exists in the cache, otherwise false. */ - checkCanvasKey(key: string): boolean; + checkCanvasKey(key: string): boolean; /** * Checks if the given key exists in the Image Cache. Note that this also includes Texture Atlases, Sprite Sheets and Retro Fonts. @@ -3041,7 +3095,7 @@ declare module Phaser { * @param key The key of the asset within the cache. * @return True if the key exists in the cache, otherwise false. */ - checkImageKey(key: string): boolean; + checkImageKey(key: string): boolean; /** * Checks if the given key exists in the JSON Cache. @@ -3049,7 +3103,7 @@ declare module Phaser { * @param key The key of the asset within the cache. * @return True if the key exists in the cache, otherwise false. */ - checkJSONKey(key: string): boolean; + checkJSONKey(key: string): boolean; /** * Checks if a key for the given cache object type exists. @@ -3058,7 +3112,7 @@ declare module Phaser { * @param key The key of the asset within the cache. * @return True if the key exists, otherwise false. */ - checkKey(cache: number, key: string): boolean; + checkKey(cache: number, key: string): boolean; /** * Checks if the given key exists in the Physics Cache. @@ -3066,7 +3120,7 @@ declare module Phaser { * @param key The key of the asset within the cache. * @return True if the key exists in the cache, otherwise false. */ - checkPhysicsKey(key: string): boolean; + checkPhysicsKey(key: string): boolean; /** * Checks if the given key exists in the Render Texture Cache. @@ -3074,7 +3128,7 @@ declare module Phaser { * @param key The key of the asset within the cache. * @return True if the key exists in the cache, otherwise false. */ - checkRenderTextureKey(key: string): boolean; + checkRenderTextureKey(key: string): boolean; /** * Checks if the given key exists in the Fragment Shader Cache. @@ -3082,7 +3136,7 @@ declare module Phaser { * @param key The key of the asset within the cache. * @return True if the key exists in the cache, otherwise false. */ - checkShaderKey(key: string): boolean; + checkShaderKey(key: string): boolean; /** * Checks if the given key exists in the Sound Cache. @@ -3090,7 +3144,7 @@ declare module Phaser { * @param key The key of the asset within the cache. * @return True if the key exists in the cache, otherwise false. */ - checkSoundKey(key: string): boolean; + checkSoundKey(key: string): boolean; /** * Checks if the given key exists in the Text Cache. @@ -3098,7 +3152,7 @@ declare module Phaser { * @param key The key of the asset within the cache. * @return True if the key exists in the cache, otherwise false. */ - checkTextKey(key: string): boolean; + checkTextKey(key: string): boolean; /** * Checks if the given key exists in the Texture Cache. @@ -3106,7 +3160,7 @@ declare module Phaser { * @param key The key of the asset within the cache. * @return True if the key exists in the cache, otherwise false. */ - checkTextureKey(key: string): boolean; + checkTextureKey(key: string): boolean; /** * Checks if the given key exists in the Tilemap Cache. @@ -3114,7 +3168,7 @@ declare module Phaser { * @param key The key of the asset within the cache. * @return True if the key exists in the cache, otherwise false. */ - checkTilemapKey(key: string): boolean; + checkTilemapKey(key: string): boolean; /** * Checks if the given URL has been loaded into the Cache. @@ -3125,8 +3179,8 @@ declare module Phaser { * @param url The url to check for in the cache. * @return True if the url exists, otherwise false. */ - checkURL(url: string): any; - checkUrl(url: string): any; + checkURL(url: string): any; + checkUrl(url: string): any; /** * Checks if the given key exists in the XML Cache. @@ -3134,7 +3188,7 @@ declare module Phaser { * @param key The key of the asset within the cache. * @return True if the key exists in the cache, otherwise false. */ - checkXMLKey(key: string): boolean; + checkXMLKey(key: string): boolean; /** * Checks if the given key exists in the Video Cache. @@ -3142,13 +3196,13 @@ declare module Phaser { * @param key The key of the asset within the cache. * @return True if the key exists in the cache, otherwise false. */ - checkVideoKey(key: string): boolean; + checkVideoKey(key: string): boolean; /** * Empties out all of the GL Textures from Images stored in the cache. * This is called automatically when the WebGL context is lost and then restored. */ - clearGLTextures(): void; + clearGLTextures(): void; /** * Add a new decoded sound. @@ -3156,13 +3210,13 @@ declare module Phaser { * @param key The key of the asset within the cache. * @param data Extra sound data. */ - decodedSound(key: string, data: any): void; + decodedSound(key: string, data: any): void; /** * Clears the cache. Removes every local cache object reference. * If an object in the cache has a `destroy` method it will also be called. */ - destroy(): void; + destroy(): void; /** * Gets a PIXI.BaseTexture by key from the given Cache. @@ -3171,7 +3225,7 @@ declare module Phaser { * @param cache The cache to search for the item in. - Default: Phaser.Cache.IMAGE * @return The BaseTexture object. */ - getBaseTexture(key: string, cache?: number): PIXI.BaseTexture; + getBaseTexture(key: string, cache?: number): PIXI.BaseTexture; /** * Gets a binary object from the cache. @@ -3183,7 +3237,7 @@ declare module Phaser { * @param key The key of the asset to retrieve from the cache. * @return The binary data object. */ - getBinary(key: string): any; + getBinary(key: string): any; /** * Gets a BitmapData object from the cache. @@ -3195,7 +3249,7 @@ declare module Phaser { * @param key The key of the asset to retrieve from the cache. * @return The requested BitmapData object if found, or null if not. */ - getBitmapData(key: string): Phaser.BitmapData; + getBitmapData(key: string): Phaser.BitmapData; /** * Gets a Bitmap Font object from the cache. @@ -3207,7 +3261,7 @@ declare module Phaser { * @param key The key of the asset to retrieve from the cache. * @return The requested BitmapFont object if found, or null if not. */ - getBitmapFont(key: string): Phaser.BitmapFont; + getBitmapFont(key: string): Phaser.BitmapFont; /** * Gets a Canvas object from the cache. @@ -3219,7 +3273,7 @@ declare module Phaser { * @param key The key of the asset to retrieve from the cache. * @return The canvas object or `null` if no item could be found matching the given key. */ - getCanvas(key: string): HTMLCanvasElement; + getCanvas(key: string): HTMLCanvasElement; /** * Get a single frame by key. You'd only do this to get the default Frame created for a non-atlas/spritesheet image. @@ -3228,7 +3282,7 @@ declare module Phaser { * @param cache The cache to search for the item in. - Default: Phaser.Cache.IMAGE * @return The frame data. */ - getFrame(key: string, cache?: number): Phaser.Frame; + getFrame(key: string, cache?: number): Phaser.Frame; /** * Get a single frame out of a frameData set by key. @@ -3238,7 +3292,7 @@ declare module Phaser { * @param cache The cache to search. One of the Cache consts such as `Phaser.Cache.IMAGE` or `Phaser.Cache.SOUND`. - Default: Phaser.Cache.IMAGE * @return The frame object. */ - getFrameByIndex(key: string, index: number, cache?: number): Phaser.Frame; + getFrameByIndex(key: string, index: number, cache?: number): Phaser.Frame; /** * Get a single frame out of a frameData set by key. @@ -3248,7 +3302,7 @@ declare module Phaser { * @param cache The cache to search. One of the Cache consts such as `Phaser.Cache.IMAGE` or `Phaser.Cache.SOUND`. - Default: Phaser.Cache.IMAGE * @return The frame object. */ - getFrameByName(key: string, name: string, cache?: number): Phaser.Frame; + getFrameByName(key: string, name: string, cache?: number): Phaser.Frame; /** * Get the total number of frames contained in the FrameData object specified by the given key. @@ -3257,7 +3311,7 @@ declare module Phaser { * @param cache The cache to search for the item in. - Default: Phaser.Cache.IMAGE * @return Then number of frames. 0 if the image is not found. */ - getFrameCount(key: string, cache?: number): number; + getFrameCount(key: string, cache?: number): number; /** * Gets a Phaser.FrameData object from the Image Cache. @@ -3270,7 +3324,7 @@ declare module Phaser { * @param cache The cache to search for the item in. - Default: Phaser.Cache.IMAGE * @return The frame data. */ - getFrameData(key: string, cache?: number): Phaser.FrameData; + getFrameData(key: string, cache?: number): Phaser.FrameData; /** * Gets a Image object from the cache. This returns a DOM Image object, not a Phaser.Image object. @@ -3287,7 +3341,7 @@ declare module Phaser { * @param full If true the full image object will be returned, if false just the HTML Image object is returned. * @return The Image object if found in the Cache, otherwise `null`. If `full` was true then a JavaScript object is returned. */ - getImage(key: string, full?: boolean): HTMLImageElement; + getImage(key: string, full?: boolean): HTMLImageElement; /** * Get an item from a cache based on the given key and property. @@ -3301,7 +3355,7 @@ declare module Phaser { * @param property If you require a specific property from the cache item, specify it here. * @return The cached item if found, otherwise `null`. If the key is invalid and `method` is set then a console.warn is output. */ - getItem(key: string, cache: number, method?: string, property?: string): any; + getItem(key: string, cache: number, method?: string, property?: string): any; /** * Gets a JSON object from the cache. @@ -3317,7 +3371,7 @@ declare module Phaser { * @param clone Return a clone of the original object (true) or a reference to it? (false) * @return The JSON object, or an Array if the key points to an Array property. If the property wasn't found, it returns null. */ - getJSON(key: string, clone?: boolean): any; + getJSON(key: string, clone?: boolean): any; /** * Gets all keys used in the requested Cache. @@ -3325,28 +3379,7 @@ declare module Phaser { * @param cache The Cache you wish to get the keys from. Can be any of the Cache consts such as `Phaser.Cache.IMAGE`, `Phaser.Cache.SOUND` etc. - Default: Phaser.Cache.IMAGE * @return The array of keys in the requested cache. */ - getKeys(cache: number): string[]; - - /** - * Gets a PIXI.Texture by key from the PIXI.TextureCache. - * - * If the texture isn't found in the cache, then it searches the Phaser Image Cache and - * creates a new PIXI.Texture object which is then returned. - * - * @param key Asset key of the Texture to retrieve from the Cache. - * @return The Texture object. - */ - getPixiTexture(key: string): PIXI.Texture; - - /** - * Gets a PIXI.BaseTexture by key from the PIXI.BaseTextureCache. - * - * If the texture isn't found in the cache, then it searches the Phaser Image Cache. - * - * @param key Asset key of the BaseTexture to retrieve from the Cache. - * @return The BaseTexture object or null if not found. - */ - getPixiBaseTexture(key: string): PIXI.BaseTexture; + getKeys(cache: number): string[]; /** * Gets a Physics Data object from the cache. @@ -3362,7 +3395,7 @@ declare module Phaser { * @param fixtureKey Fixture key of fixture inside an object. This key can be set per fixture with the Phaser Exporter. * @return The requested physics object data if found. */ - getPhysicsData(key: string, object?: string, fixtureKey?: string): any[]; + getPhysicsData(key: string, object?: string, fixtureKey?: string): any[]; /** * Gets a RenderTexture object from the cache. @@ -3374,7 +3407,7 @@ declare module Phaser { * @param key The key of the asset to retrieve from the cache. * @return The object with Phaser.RenderTexture and Phaser.Frame. */ - getRenderTexture(key: string): Phaser.CachedRenderTexture; + getRenderTexture(key: string): Phaser.CachedRenderTexture; /** * Gets a fragment shader object from the cache. @@ -3386,7 +3419,7 @@ declare module Phaser { * @param key The key of the asset to retrieve from the cache. * @return The shader object. */ - getShader(key: string): string; + getShader(key: string): string; /** * Gets a Phaser.Sound object from the cache. @@ -3398,7 +3431,7 @@ declare module Phaser { * @param key The key of the asset to retrieve from the cache. * @return The sound object. */ - getSound(key: string): Phaser.Sound; + getSound(key: string): Phaser.Sound; /** * Gets a raw Sound data object from the cache. @@ -3410,8 +3443,8 @@ declare module Phaser { * @param key The key of the asset to retrieve from the cache. * @return The sound data. */ - getSoundData(key: string): any; - getSpriteSheetKey(key: string): boolean; + getSoundData(key: string): any; + getSpriteSheetKey(key: string): boolean; /** * Gets a Text object from the cache. @@ -3423,10 +3456,10 @@ declare module Phaser { * @param key The key of the asset to retrieve from the cache. * @return The text data. */ - getText(key: string): string; - getTextKeys(): string[]; - getTexture(key: string): Phaser.RenderTexture; - getTextureAtlasKey(key: string): boolean; + getText(key: string): string; + getTextKeys(): string[]; + getTexture(key: string): Phaser.RenderTexture; + getTextureAtlasKey(key: string): boolean; /** * Get a single texture frame by key. @@ -3436,8 +3469,8 @@ declare module Phaser { * @param key The key of the asset to retrieve from the cache. * @return The frame data. */ - getTextureFrame(key: string): Phaser.Frame; - getTilemap(key: string): any; + getTextureFrame(key: string): Phaser.Frame; + getTilemap(key: string): any; /** * Gets a raw Tilemap data object from the cache. This will be in either CSV or JSON format. @@ -3449,7 +3482,7 @@ declare module Phaser { * @param key The key of the asset to retrieve from the cache. * @return The raw tilemap data in CSV or JSON format. */ - getTilemapData(key: string): any; + getTilemapData(key: string): any; /** * Get a cached object by the URL. @@ -3459,7 +3492,7 @@ declare module Phaser { * @param url The url for the object loaded to get from the cache. * @return The cached object. */ - getURL(url: string): any; + getURL(url: string): any; /** * Gets an XML object from the cache. @@ -3471,7 +3504,7 @@ declare module Phaser { * @param key The key of the asset to retrieve from the cache. * @return The XML object. */ - getXML(key: string): any; + getXML(key: string): any; /** * Gets a Phaser.Video object from the cache. @@ -3483,7 +3516,7 @@ declare module Phaser { * @param key The key of the asset to retrieve from the cache. * @return The video object. */ - getVideo(key: string): Phaser.Video; + getVideo(key: string): Phaser.Video; /** * Check if the FrameData for the given key exists in the Image Cache. @@ -3492,7 +3525,7 @@ declare module Phaser { * @param cache The cache to search for the item in. - Default: Phaser.Cache.IMAGE * @return True if the given key has frameData in the cache, otherwise false. */ - hasFrameData(key: string, cache?: number): boolean; + hasFrameData(key: string, cache?: number): boolean; /** * Check if the given sound has finished decoding. @@ -3500,7 +3533,7 @@ declare module Phaser { * @param key The key of the asset within the cache. * @return The decoded state of the Sound object. */ - isSoundDecoded(key: string): boolean; + isSoundDecoded(key: string): boolean; /** * Check if the given sound is ready for playback. @@ -3509,22 +3542,22 @@ declare module Phaser { * @param key The key of the asset within the cache. * @return True if the sound is decoded and the device is not touch locked. */ - isSoundReady(key: string): boolean; - isSpriteSheet(key: string): boolean; + isSoundReady(key: string): boolean; + isSpriteSheet(key: string): boolean; /** * Reload a Sound file from the server. * * @param key The key of the asset within the cache. */ - reloadSound(key: string): void; + reloadSound(key: string): void; /** * Fires the onSoundUnlock event when the sound has completed reloading. * * @param key The key of the asset within the cache. */ - reloadSoundComplete(key: string): void; + reloadSoundComplete(key: string): void; /** * Removes a binary file from the cache. @@ -3534,7 +3567,7 @@ declare module Phaser { * * @param key Key of the asset you want to remove. */ - removeBinary(key: string): void; + removeBinary(key: string): void; /** * Removes a bitmap data from the cache. @@ -3544,7 +3577,7 @@ declare module Phaser { * * @param key Key of the asset you want to remove. */ - removeBitmapData(key: string): void; + removeBitmapData(key: string): void; /** * Removes a bitmap font from the cache. @@ -3554,7 +3587,7 @@ declare module Phaser { * * @param key Key of the asset you want to remove. */ - removeBitmapFont(key: string): void; + removeBitmapFont(key: string): void; /** * Removes a canvas from the cache. @@ -3564,20 +3597,20 @@ declare module Phaser { * * @param key Key of the asset you want to remove. */ - removeCanvas(key: string): void; + removeCanvas(key: string): void; /** * Removes an image from the cache. * * You can optionally elect to destroy it as well. This calls BaseTexture.destroy on it. * - * Note that this only removes it from the Phaser and PIXI Caches. If you still have references to the data elsewhere + * Note that this only removes it from the Phaser Cache. If you still have references to the data elsewhere * then it will persist in memory. * * @param key Key of the asset you want to remove. - * @param removeFromPixi Should this image also be destroyed? Removing it from the PIXI.BaseTextureCache? - Default: true + * @param destroyBaseTexture Should the BaseTexture behind this image also be destroyed? - Default: true */ - removeImage(key: string, removeFromPixi?: boolean): void; + removeImage(key: string, removeFromPixi?: boolean): void; /** * Removes a json object from the cache. @@ -3587,7 +3620,7 @@ declare module Phaser { * * @param key Key of the asset you want to remove. */ - removeJSON(key: string): void; + removeJSON(key: string): void; /** * Removes a physics data file from the cache. @@ -3597,7 +3630,7 @@ declare module Phaser { * * @param key Key of the asset you want to remove. */ - removePhysics(key: string): void; + removePhysics(key: string): void; /** * Removes a Render Texture from the cache. @@ -3607,7 +3640,7 @@ declare module Phaser { * * @param key Key of the asset you want to remove. */ - removeRenderTexture(key: string): void; + removeRenderTexture(key: string): void; /** * Removes a shader from the cache. @@ -3617,7 +3650,7 @@ declare module Phaser { * * @param key Key of the asset you want to remove. */ - removeShader(key: string): void; + removeShader(key: string): void; /** * Removes a sound from the cache. @@ -3631,7 +3664,7 @@ declare module Phaser { * * @param key Key of the asset you want to remove. */ - removeSound(key: string): void; + removeSound(key: string): void; /** * Removes a Sprite Sheet from the cache. @@ -3641,7 +3674,7 @@ declare module Phaser { * * @param key Key of the asset you want to remove. */ - removeSpriteSheet(key: string): void; + removeSpriteSheet(key: string): void; /** * Removes a text file from the cache. @@ -3651,7 +3684,7 @@ declare module Phaser { * * @param key Key of the asset you want to remove. */ - removeText(key: string): void; + removeText(key: string): void; /** * Removes a Texture Atlas from the cache. @@ -3661,7 +3694,7 @@ declare module Phaser { * * @param key Key of the asset you want to remove. */ - removeTextureAtlas(key: string): void; + removeTextureAtlas(key: string): void; /** * Removes a tilemap from the cache. @@ -3671,7 +3704,7 @@ declare module Phaser { * * @param key Key of the asset you want to remove. */ - removeTilemap(key: string): void; + removeTilemap(key: string): void; /** * Removes a xml object from the cache. @@ -3681,7 +3714,7 @@ declare module Phaser { * * @param key Key of the asset you want to remove. */ - removeXML(key: string): void; + removeXML(key: string): void; /** * Removes a video from the cache. @@ -3691,7 +3724,7 @@ declare module Phaser { * * @param key Key of the asset you want to remove. */ - removeVideo(key: string): void; + removeVideo(key: string): void; /** * Replaces a set of frameData with a new Phaser.FrameData object. @@ -3700,31 +3733,31 @@ declare module Phaser { * @param frameData The new FrameData. * @param cache The cache to search. One of the Cache consts such as `Phaser.Cache.IMAGE` or `Phaser.Cache.SOUND`. - Default: Phaser.Cache.IMAGE */ - updateFrameData(key: string, frameData: any, cache?: number): void; + updateFrameData(key: string, frameData: any, cache?: number): void; /** * Updates the sound object in the cache. * * @param key The key of the asset within the cache. */ - updateSound(key: string, property: string, value: Phaser.Sound): void; - - } - - interface CachedRenderTexture { - - frame: Phaser.Frame; - texture: Phaser.RenderTexture; - - } - + updateSound(key: string, property: string, value: Phaser.Sound): void; + + } + + interface CachedRenderTexture { + + frame: Phaser.Frame; + texture: Phaser.RenderTexture; + + } + /** * A Camera is your view into the game world. It has a position and size and renders only those objects within its field of view. * The game automatically creates a single Stage sized camera on boot. Move the camera around the world with Phaser.Camera.x/y */ - class Camera { - + class Camera { + /** * A Camera is your view into the game world. It has a position and size and renders only those objects within its field of view. @@ -3737,17 +3770,17 @@ declare module Phaser { * @param width The width of the view rectangle * @param height The height of the view rectangle */ - constructor(game: Phaser.Game, id: number, x: number, y: number, width: number, height: number); - - static FOLLOW_LOCKON: number; - static FOLLOW_PLATFORMER: number; - static FOLLOW_TOPDOWN: number; - static FOLLOW_TOPDOWN_TIGHT: number; - static SHAKE_BOTH: number; - static SHAKE_HORIZONTAL: number; - static SHAKE_VERTICAL: number; - static ENABLE_FX: number; - + constructor(game: Phaser.Game, id: number, x: number, y: number, width: number, height: number); + + static FOLLOW_LOCKON: number; + static FOLLOW_PLATFORMER: number; + static FOLLOW_TOPDOWN: number; + static FOLLOW_TOPDOWN_TIGHT: number; + static SHAKE_BOTH: number; + static SHAKE_HORIZONTAL: number; + static SHAKE_VERTICAL: number; + static ENABLE_FX: number; + /** * Whether this camera is flush with the World Bounds or not. @@ -3760,44 +3793,44 @@ declare module Phaser { /** * The Cameras y coordinate. This value is automatically clamped if it falls outside of the World bounds. Gets or sets the cameras y position. */ - atLimit: { x: boolean; y: boolean; }; + atLimit: { x: boolean; y: boolean; }; /** * The Camera is bound to this Rectangle and cannot move outside of it. By default it is enabled and set to the size of the World. * The Rectangle can be located anywhere in the world and updated as often as you like. If you don't wish the Camera to be bound * at all then set this to null. The values can be anything and are in World coordinates, with 0,0 being the top-left of the world. The Rectangle in which the Camera is bounded. Set to null to allow for movement anywhere. */ - bounds: Phaser.Rectangle; + bounds: Phaser.Rectangle; /** * Moving inside this Rectangle will not cause the camera to move. */ - deadzone: Phaser.Rectangle; + deadzone: Phaser.Rectangle; /** * The display object to which all game objects are added. Set by World.boot. */ - displayObject: PIXI.DisplayObject; + displayObject: PIXI.DisplayObject; /** * Reserved for future multiple camera set-ups. */ - id: number; + id: number; /** * The Graphics object used to handle camera fx such as fade and flash. */ - fx: Phaser.Graphics; + fx: Phaser.Graphics; /** * A reference to the currently running Game. */ - game: Phaser.Game; + game: Phaser.Game; /** * The Cameras height. By default this is the same as the Game size and should not be adjusted for now. Gets or sets the cameras height. */ - height: number; + height: number; /** * The linear interpolation value to use when following a target. @@ -3806,28 +3839,28 @@ declare module Phaser { * a smooth transition. You can set the horizontal and vertical values independently, and also * adjust this value in real-time during your game. */ - lerp: Phaser.Point; + lerp: Phaser.Point; /** * The Cameras position. This value is automatically clamped if it falls outside of the World bounds. Gets or sets the cameras xy position using Phaser.Point object. */ - position: Phaser.Point; + position: Phaser.Point; /** * If a Camera has roundPx set to `true` it will call `view.floor` as part of its update loop, keeping its boundary to integer values. Set this to `false` to disable this from happening. * Default: true */ - roundPx: boolean; + roundPx: boolean; /** * The scale of the display object to which all game objects are added. Set by World.boot. */ - scale: Phaser.Point; + scale: Phaser.Point; /** * The Cameras shake intensity. Gets or sets the cameras shake intensity. */ - shakeIntensity: number; + shakeIntensity: number; /** * This signal is dispatched when the camera fade effect completes. @@ -3835,27 +3868,27 @@ declare module Phaser { * color you faded to). In order to reset this call `Camera.resetFX`. This is called * automatically when you change State. */ - onFadeComplete: Phaser.Signal; + onFadeComplete: Phaser.Signal; /** * This signal is dispatched when the camera flash effect completes. */ - onFlashComplete: Phaser.Signal; + onFlashComplete: Phaser.Signal; /** * This signal is dispatched when the camera shake effect completes. */ - onShakeComplete: Phaser.Signal; + onShakeComplete: Phaser.Signal; /** * If the camera is tracking a Sprite, this is a reference to it, otherwise null. */ - target: Phaser.Sprite; + target: Phaser.Sprite; /** * The total number of Sprites with `autoCull` set to `true` that are visible by this Camera. */ - totalInView: number; + totalInView: number; /** * Camera view. @@ -3863,40 +3896,40 @@ declare module Phaser { * The x/y values are in world coordinates, not screen coordinates, the width/height is how many pixels to render. * Sprites outside of this view are not rendered if Sprite.autoCull is set to `true`. Otherwise they are always rendered. */ - view: Phaser.Rectangle; + view: Phaser.Rectangle; /** * Whether this camera is visible or not. * Default: true */ - visible: boolean; + visible: boolean; /** * The Cameras width. By default this is the same as the Game size and should not be adjusted for now. Gets or sets the cameras width. */ - width: number; + width: number; /** * A reference to the game world. */ - world: Phaser.World; + world: Phaser.World; /** * The Cameras x coordinate. This value is automatically clamped if it falls outside of the World bounds. Gets or sets the cameras x position. */ - x: number; + x: number; /** * The Cameras y coordinate. This value is automatically clamped if it falls outside of the World bounds. Gets or sets the cameras y position. */ - y: number; - + y: number; + /** * Method called to ensure the camera doesn't venture outside of the game world. * Called automatically by Camera.update. */ - checkBounds(): void; + checkBounds(): void; /** * This creates a camera fade effect. It works by filling the game with the @@ -3916,7 +3949,7 @@ declare module Phaser { * @param force If a camera flash or fade effect is already running and force is true it will replace the previous effect, resetting the duration. * @return True if the effect was started, otherwise false. */ - fade(color?: number, duration?: number, force?: boolean): boolean; + fade(color?: number, duration?: number, force?: boolean): boolean; /** * This creates a camera flash effect. It works by filling the game with the solid fill @@ -3931,14 +3964,14 @@ declare module Phaser { * @param force If a camera flash or fade effect is already running and force is true it will replace the previous effect, resetting the duration. * @return True if the effect was started, otherwise false. */ - flash(color?: number, duration?: number, force?: boolean): boolean; + flash(color?: number, duration?: number, force?: boolean): boolean; /** * Move the camera focus on a display object instantly. * * @param displayObject The display object to focus the camera on. Must have visible x/y properties. */ - focusOn(displayObject: PIXI.DisplayObject): void; + focusOn(displayObject: PIXI.DisplayObject): void; /** * Move the camera focus on a location instantly. @@ -3946,7 +3979,7 @@ declare module Phaser { * @param x X position. * @param y Y position. */ - focusOnXY(x: number, y: number): void; + focusOnXY(x: number, y: number): void; /** * Tell the camera which sprite to follow. @@ -3962,25 +3995,25 @@ declare module Phaser { * @param lerpX A value between 0 and 1. This value specifies the amount of linear interpolation to use when horizontally tracking the target. The closer the value to 1, the faster the camera will track. - Default: 1 * @param lerpY A value between 0 and 1. This value specifies the amount of linear interpolation to use when vertically tracking the target. The closer the value to 1, the faster the camera will track. - Default: 1 */ - follow(target: Phaser.Sprite, style?: number, lerpX?: number, lerpY?: number): void; + follow(target: Phaser.Sprite, style?: number, lerpX?: number, lerpY?: number): void; /** * Resets the camera back to 0,0 and un-follows any object it may have been tracking. * Also immediately resets any camera effects that may have been running such as * shake, flash or fade. */ - reset(): void; + reset(): void; /** * Resets any active FX, such as a fade or flash and immediately clears it. * Useful to calling after a fade in order to remove the fade from the Stage. */ - resetFX(): void; + resetFX(): void; /** * Update the Camera bounds to match the game world. */ - setBoundsToWorld(): void; + setBoundsToWorld(): void; /** * A helper function to set both the X and Y properties of the camera at once @@ -3989,7 +4022,7 @@ declare module Phaser { * @param x X position. * @param y Y position. */ - setPosition(x: number, y: number): void; + setPosition(x: number, y: number): void; /** * Sets the size of the view rectangle given the width and height in parameters. @@ -3997,7 +4030,7 @@ declare module Phaser { * @param width The desired width. * @param height The desired height. */ - setSize(width: number, height: number): void; + setSize(width: number, height: number): void; /** * This creates a camera shake effect. It works by applying a random amount of additional @@ -4013,27 +4046,27 @@ declare module Phaser { * @param shakeBounds Is the effect allowed to shake the camera beyond its bounds (if set?). - Default: true * @return True if the shake effect was started, otherwise false. */ - shake(intensity?: number, duration?: number, force?: boolean, direction?: number, shakeBounds?: boolean): boolean; + shake(intensity?: number, duration?: number, force?: boolean, direction?: number, shakeBounds?: boolean): boolean; /** * Sets the Camera follow target to null, stopping it from following an object if it's doing so. */ - unfollow(): void; + unfollow(): void; /** * The camera update loop. This is called automatically by the core game loop. */ - update(): void; - - } - + update(): void; + + } + /** * The Canvas class handles everything related to creating the `canvas` DOM tag that Phaser will use, * including styles, offset and aspect ratio. */ - class Canvas { - + class Canvas { + /** * Adds the given canvas element to the DOM. The canvas will be added as a child of the given parent. @@ -4044,7 +4077,7 @@ declare module Phaser { * @param overflowHidden If set to true it will add the overflow='hidden' style to the parent DOM element. - Default: true * @return Returns the source canvas. */ - static addToDOM(canvas: HTMLCanvasElement, parent: HTMLElement, overflowHidden?: boolean): HTMLCanvasElement; + static addToDOM(canvas: HTMLCanvasElement, parent: HTMLElement, overflowHidden?: boolean): HTMLCanvasElement; /** * Creates a `canvas` DOM element. The element is not automatically added to the document. @@ -4056,7 +4089,7 @@ declare module Phaser { * @param skipPool If `true` the canvas will not be placed in the CanvasPool global. * @return The newly created canvas element. */ - static create(parent: HTMLDivElement, width?: number, height?: number, id?: string, skipPool?: boolean): HTMLCanvasElement; + static create(parent: HTMLDivElement, width?: number, height?: number, id?: string, skipPool?: boolean): HTMLCanvasElement; /** * Returns `true` if the given context has image smoothing enabled, otherwise returns `false`. @@ -4064,7 +4097,7 @@ declare module Phaser { * @param context The context to check for smoothing on. * @return True if the given context has image smoothing enabled, otherwise false. */ - static getSmoothingEnabled(context: CanvasRenderingContext2D): boolean; + static getSmoothingEnabled(context: CanvasRenderingContext2D): boolean; /** * Gets the Smoothing Enabled vendor prefix being used on the given context, or null if not set. @@ -4072,14 +4105,14 @@ declare module Phaser { * @param context The context to enable or disable the image smoothing on. * @return Returns the smoothingEnabled vendor prefix, or null if not set on the context. */ - static getSmoothingPrefix(context: CanvasRenderingContext2D): string; + static getSmoothingPrefix(context: CanvasRenderingContext2D): string; /** * Removes the given canvas element from the DOM. * * @param canvas The canvas to be removed from the DOM. */ - static removeFromDOM(canvas: HTMLCanvasElement): void; + static removeFromDOM(canvas: HTMLCanvasElement): void; /** * Sets the background color behind the canvas. This changes the canvas style property. @@ -4088,7 +4121,7 @@ declare module Phaser { * @param color The color to set. Can be in the format 'rgb(r,g,b)', or '#RRGGBB' or any valid CSS color. - Default: 'rgb(0,0,0)' * @return Returns the source canvas. */ - static setBackgroundColor(canvas: HTMLCanvasElement, color: string): HTMLCanvasElement; + static setBackgroundColor(canvas: HTMLCanvasElement, color: string): HTMLCanvasElement; /** * Sets the CSS image-rendering property on the given canvas to be 'bicubic' (aka 'auto'). @@ -4097,7 +4130,7 @@ declare module Phaser { * @param canvas The canvas to set image-rendering bicubic on. * @return Returns the source canvas. */ - static setImageRenderingBicubic(canvas: HTMLCanvasElement): HTMLCanvasElement; + static setImageRenderingBicubic(canvas: HTMLCanvasElement): HTMLCanvasElement; /** * Sets the CSS image-rendering property on the given canvas to be 'crisp' (aka 'optimize contrast' on webkit). @@ -4106,7 +4139,7 @@ declare module Phaser { * @param canvas The canvas to set image-rendering crisp on. * @return Returns the source canvas. */ - static setImageRenderingCrisp(canvas: HTMLCanvasElement): HTMLCanvasElement; + static setImageRenderingCrisp(canvas: HTMLCanvasElement): HTMLCanvasElement; /** * Sets the Image Smoothing property on the given context. Set to false to disable image smoothing. @@ -4119,7 +4152,7 @@ declare module Phaser { * @param value If set to true it will enable image smoothing, false will disable it. * @return Returns the source context. */ - static setSmoothingEnabled(context: CanvasRenderingContext2D, value: boolean): CanvasRenderingContext2D; + static setSmoothingEnabled(context: CanvasRenderingContext2D, value: boolean): CanvasRenderingContext2D; /** * Sets the touch-action property on the canvas style. Can be used to disable default browser touch actions. @@ -4128,7 +4161,7 @@ declare module Phaser { * @param value The touch action to set. Defaults to 'none'. * @return The source canvas. */ - static setTouchAction(canvas: HTMLCanvasElement, value: string): HTMLCanvasElement; + static setTouchAction(canvas: HTMLCanvasElement, value: string): HTMLCanvasElement; /** * Sets the transform of the given canvas to the matrix values provided. @@ -4142,7 +4175,7 @@ declare module Phaser { * @param skewY The value to skew vertically by. * @return Returns the source context. */ - static setTransform(context: CanvasRenderingContext2D, translateX: number, translateY: number, scaleX: number, scaleY: number, skewX: number, skewY: number): CanvasRenderingContext2D; + static setTransform(context: CanvasRenderingContext2D, translateX: number, translateY: number, scaleX: number, scaleY: number, skewX: number, skewY: number): CanvasRenderingContext2D; /** * Sets the user-select property on the canvas style. Can be used to disable default browser selection actions. @@ -4151,17 +4184,17 @@ declare module Phaser { * @param value The touch action to set. Defaults to 'none'. * @return The source canvas. */ - static setUserSelect(canvas: HTMLCanvasElement, value?: string): HTMLCanvasElement; - - } - + static setUserSelect(canvas: HTMLCanvasElement, value?: string): HTMLCanvasElement; + + } + /** * Creates a new Circle object with the center coordinate specified by the x and y parameters and the diameter specified by the diameter parameter. * If you call this function without parameters, a circle with x, y, diameter and radius properties set to 0 is created. */ - class Circle { - + class Circle { + /** * Creates a new Circle object with the center coordinate specified by the x and y parameters and the diameter specified by the diameter parameter. @@ -4171,60 +4204,60 @@ declare module Phaser { * @param y The y coordinate of the center of the circle. * @param diameter The diameter of the circle. */ - constructor(x?: number, y?: number, diameter?: number); - + constructor(x?: number, y?: number, diameter?: number); + /** * The area of this Circle. */ - area: number; + area: number; /** * The sum of the y and radius properties. Changing the bottom property of a Circle object has no effect on the x and y properties, but does change the diameter. Gets or sets the bottom of the circle. */ - bottom: number; + bottom: number; /** * The largest distance between any two points on the circle. The same as the radius * 2. Gets or sets the diameter of the circle. */ - diameter: number; + diameter: number; /** * Determines whether or not this Circle object is empty. Will return a value of true if the Circle objects diameter is less than or equal to 0; otherwise false. * If set to true it will reset all of the Circle objects properties to 0. A Circle object is empty if its diameter is less than or equal to 0. Gets or sets the empty state of the circle. */ - empty: boolean; + empty: boolean; /** * The x coordinate of the leftmost point of the circle. Changing the left property of a Circle object has no effect on the x and y properties. However it does affect the diameter, whereas changing the x value does not affect the diameter property. */ - left: number; + left: number; /** * The length of a line extending from the center of the circle to any point on the circle itself. The same as half the diameter. Gets or sets the radius of the circle. */ - radius: number; + radius: number; /** * The x coordinate of the rightmost point of the circle. Changing the right property of a Circle object has no effect on the x and y properties. However it does affect the diameter, whereas changing the x value does not affect the diameter property. Gets or sets the value of the rightmost point of the circle. */ - right: number; + right: number; /** * The sum of the y minus the radius property. Changing the top property of a Circle object has no effect on the x and y properties, but does change the diameter. Gets or sets the top of the circle. */ - top: number; + top: number; /** * The x coordinate of the center of the circle. */ - x: number; + x: number; /** * The y coordinate of the center of the circle. */ - y: number; - + y: number; + /** * Returns a Point object containing the coordinates of a point on the circumference of the Circle based on the given angle. @@ -4234,7 +4267,7 @@ declare module Phaser { * @param out An optional Point object to put the result in to. If none specified a new Point object will be created. * @return The Point object holding the result. */ - static circumferencePoint(a: Phaser.Circle, angle: number, asDegrees: boolean, out?: Phaser.Point): Phaser.Point; + static circumferencePoint(a: Phaser.Circle, angle: number, asDegrees: boolean, out?: Phaser.Point): Phaser.Point; /** * Return true if the given x/y coordinates are within this Circle object. @@ -4243,7 +4276,7 @@ declare module Phaser { * @param y The Y value of the coordinate to test. * @return True if the coordinates are within this circle, otherwise false. */ - static contains(a: Phaser.Circle, x: number, y: number): boolean; + static contains(a: Phaser.Circle, x: number, y: number): boolean; /** * Determines whether the two Circle objects match. This method compares the x, y and diameter properties. @@ -4252,7 +4285,7 @@ declare module Phaser { * @param b The second Circle object. * @return A value of true if the object has exactly the same values for the x, y and diameter properties as this Circle object; otherwise false. */ - static equals(a: Phaser.Circle, b: Phaser.Circle): boolean; + static equals(a: Phaser.Circle, b: Phaser.Circle): boolean; /** * Determines whether the two Circle objects intersect. @@ -4262,7 +4295,7 @@ declare module Phaser { * @param b The second Circle object. * @return A value of true if the specified object intersects with this Circle object; otherwise false. */ - static intersects(a: Phaser.Circle, b: Phaser.Circle): boolean; + static intersects(a: Phaser.Circle, b: Phaser.Circle): boolean; /** * Checks if the given Circle and Rectangle objects intersect. @@ -4271,14 +4304,14 @@ declare module Phaser { * @param r The Rectangle object to test. * @return True if the two objects intersect, otherwise false. */ - static intersectsRectangle(c: Phaser.Circle, r: Phaser.Rectangle): boolean; - + static intersectsRectangle(c: Phaser.Circle, r: Phaser.Rectangle): boolean; + /** * The circumference of the circle. * @return The circumference of the circle. */ - circumference(): number; + circumference(): number; /** * Returns a Point object containing the coordinates of a point on the circumference of the Circle based on the given angle. @@ -4288,7 +4321,7 @@ declare module Phaser { * @param out An optional Point object to put the result in to. If none specified a new Point object will be created. * @return The Point object holding the result. */ - circumferencePoint(angle: number, asDegrees?: boolean, out?: Phaser.Point): Phaser.Point; + circumferencePoint(angle: number, asDegrees?: boolean, out?: Phaser.Point): Phaser.Point; /** * Returns a new Circle object with the same values for the x, y, width, and height properties as this Circle object. @@ -4296,7 +4329,7 @@ declare module Phaser { * @param output Optional Circle object. If given the values will be set into the object, otherwise a brand new Circle object will be created and returned. * @return The cloned Circle object. */ - clone(output: Phaser.Circle): Phaser.Circle; + clone(output: Phaser.Circle): Phaser.Circle; /** * Return true if the given x/y coordinates are within this Circle object. @@ -4305,7 +4338,7 @@ declare module Phaser { * @param y The Y value of the coordinate to test. * @return True if the coordinates are within this circle, otherwise false. */ - contains(x: number, y: number): boolean; + contains(x: number, y: number): boolean; /** * Copies the x, y and diameter properties from any given object to this Circle. @@ -4313,7 +4346,7 @@ declare module Phaser { * @param source The object to copy from. * @return This Circle object. */ - copyFrom(source: any): Circle; + copyFrom(source: any): Circle; /** * Copies the x, y and diameter properties from this Circle to any given object. @@ -4321,7 +4354,7 @@ declare module Phaser { * @param dest The object to copy to. * @return This dest object. */ - copyTo(dest: any): any; + copyTo(dest: any): any; /** * Returns the distance from the center of the Circle object to the given object @@ -4331,13 +4364,13 @@ declare module Phaser { * @param round Round the distance to the nearest integer. * @return The distance between this Point object and the destination Point object. */ - distance(dest: any, round?: boolean): number; + distance(dest: any, round?: boolean): number; /** * Returns the framing rectangle of the circle as a Phaser.Rectangle object. * @return The bounds of the Circle. */ - getBounds(): Phaser.Rectangle; + getBounds(): Phaser.Rectangle; /** * Adjusts the location of the Circle object, as determined by its center coordinate, by the specified amounts. @@ -4346,7 +4379,7 @@ declare module Phaser { * @param dy Moves the y value of the Circle object by this amount. * @return This Circle object. */ - offset(dx: number, dy: number): Phaser.Circle; + offset(dx: number, dy: number): Phaser.Circle; /** * Adjusts the location of the Circle object using a Point object as a parameter. This method is similar to the Circle.offset() method, except that it takes a Point object as a parameter. @@ -4354,7 +4387,7 @@ declare module Phaser { * @param point A Point object to use to offset this Circle object (or any valid object with exposed x and y properties). * @return This Circle object. */ - offsetPoint(point: Phaser.Point): Phaser.Circle; + offsetPoint(point: Phaser.Point): Phaser.Circle; /** * Returns a uniformly distributed random point from anywhere within this Circle. @@ -4363,8 +4396,8 @@ declare module Phaser { * If no object is provided a new Phaser.Point object will be created. In high performance areas avoid this by re-using an existing object. * @return An object containing the random point in its `x` and `y` properties. */ - random(out?: Phaser.Point): Phaser.Point; - scale(x: number, y?: number): Phaser.Rectangle; + random(out?: Phaser.Point): Phaser.Point; + scale(x: number, y?: number): Phaser.Rectangle; /** * Sets the members of Circle to the specified values. @@ -4374,22 +4407,22 @@ declare module Phaser { * @param diameter The diameter of the circle. * @return This circle object. */ - setTo(x: number, y: number, diameter: number): Circle; + setTo(x: number, y: number, diameter: number): Circle; /** * Returns a string representation of this object. * @return a string representation of the instance. */ - toString(): string; - - } - + toString(): string; + + } + /** * The Phaser.Color class is a set of static methods that assist in color manipulation and conversion. */ - class Color { - + class Color { + /** * Return a string containing a hex representation of the given color component. @@ -4397,7 +4430,7 @@ declare module Phaser { * @param color The color channel to get the hex value for, must be a value between 0 and 255. * @return A string of length 2 characters, i.e. 255 = ff, 100 = 64. */ - static componentToHex(color: number): string; + static componentToHex(color: number): string; /** * A utility function to create a lightweight 'color' object with the default components. @@ -4415,7 +4448,7 @@ declare module Phaser { * @param v The value, in the range 0 - 1. * @return The resulting object with r, g, b, a properties and h, s, l and v. */ - static createColor(r?: number, g?: number, b?: number, a?: number, h?: number, s?: number, l?: number, v?: number): any; + static createColor(r?: number, g?: number, b?: number, a?: number, h?: number, s?: number, l?: number, v?: number): ColorComponents; /** * A utility to convert an integer in 0xRRGGBBAA format to a color object. @@ -4425,7 +4458,7 @@ declare module Phaser { * @param out The object to use, optional. * @return A color object. */ - static fromRGBA(rgba: number, out?: any): any; + static fromRGBA(rgba: number, out?: ColorComponents): ColorComponents; /** * Given a native color value (in the format 0xAARRGGBB) this will return the Alpha component, as a value between 0 and 255. @@ -4433,7 +4466,7 @@ declare module Phaser { * @param color In the format 0xAARRGGBB. * @return The Alpha component of the color, will be between 0 and 1 (0 being no Alpha (opaque), 1 full Alpha (transparent)). */ - static getAlpha(color: number): number; + static getAlpha(color: number): number; /** * Given a native color value (in the format 0xAARRGGBB) this will return the Alpha component as a value between 0 and 1. @@ -4441,7 +4474,7 @@ declare module Phaser { * @param color In the format 0xAARRGGBB. * @return The Alpha component of the color, will be between 0 and 1 (0 being no Alpha (opaque), 1 full Alpha (transparent)). */ - static getAlphaFloat(color: number): number; + static getAlphaFloat(color: number): number; /** * Given a native color value (in the format 0xAARRGGBB) this will return the Blue component, as a value between 0 and 255. @@ -4449,7 +4482,7 @@ declare module Phaser { * @param color In the format 0xAARRGGBB. * @return The Blue component of the color, will be between 0 and 255 (0 being no color, 255 full Blue). */ - static getBlue(color: number): number; + static getBlue(color: number): number; /** * Given 3 color values this will return an integer representation of it. @@ -4459,7 +4492,7 @@ declare module Phaser { * @param b The blue color component, in the range 0 - 255. * @return A native color value integer (format: 0xRRGGBB). */ - static getColor(red: number, green: number, blue: number): number; + static getColor(red: number, green: number, blue: number): number; /** * Given an alpha and 3 color values this will return an integer representation of it. @@ -4470,7 +4503,7 @@ declare module Phaser { * @param b The blue color component, in the range 0 - 255. * @return A native color value integer (format: 0xAARRGGBB). */ - static getColor32(alpha: number, red: number, green: number, blue: number): number; + static getColor32(alpha: number, red: number, green: number, blue: number): number; /** * Given a native color value (in the format 0xAARRGGBB) this will return the Green component, as a value between 0 and 255. @@ -4478,7 +4511,7 @@ declare module Phaser { * @param color In the format 0xAARRGGBB. * @return The Green component of the color, will be between 0 and 255 (0 being no color, 255 full Green). */ - static getGreen(color: number): number; + static getGreen(color: number): number; /** * Returns a random color value between black and white @@ -4490,7 +4523,7 @@ declare module Phaser { * @param alpha The alpha value of the returning color (default 255 = fully opaque). - Default: 255 * @return 32-bit color value with alpha. */ - static getRandomColor(min?: number, max?: number, alpha?: number): number; + static getRandomColor(min?: number, max?: number, alpha?: number): number; /** * Given a native color value (in the format 0xAARRGGBB) this will return the Red component, as a value between 0 and 255. @@ -4498,7 +4531,7 @@ declare module Phaser { * @param color In the format 0xAARRGGBB. * @return The Red component of the color, will be between 0 and 255 (0 being no color, 255 full Red). */ - static getRed(color: number): number; + static getRed(color: number): number; /** * Return the component parts of a color as an Object with the properties alpha, red, green, blue. @@ -4508,7 +4541,7 @@ declare module Phaser { * @param color Color in RGB (0xRRGGBB) or ARGB format (0xAARRGGBB). * @return An Object with properties: alpha, red, green, blue (also r, g, b and a). Alpha will only be present if a color value > 16777215 was given. */ - static getRGB(color: number): any; + static getRGB(color: number): RGBColor; /** * Returns a CSS friendly string value from the given color. @@ -4516,7 +4549,7 @@ declare module Phaser { * @param color Color in RGB (0xRRGGBB), ARGB format (0xAARRGGBB) or an Object with r, g, b, a properties. * @return A string in the format: 'rgba(r,g,b,a)' */ - static getWebRGB(color: any): string; + static getWebRGB(color: number | RGBColor): string; /** * Converts a hex string into an integer color value. @@ -4524,7 +4557,7 @@ declare module Phaser { * @param hex The hex string to convert. Can be in the short-hand format `#03f` or `#0033ff`. * @return The rgb color value in the format 0xAARRGGBB. */ - static hexToRGB(h: string): number; + static hexToRGB(h: string): number; /** * Converts a hex string into a Phaser Color object. @@ -4537,7 +4570,7 @@ declare module Phaser { * @param out An object into which 3 properties will be created or set: r, g and b. If not provided a new object will be created. * @return An object with the red, green and blue values set in the r, g and b properties. */ - static hexToColor(hex: string, out?: any): any; + static hexToColor(hex: string, out?: ColorComponents): ColorComponents; /** * Converts an HSL (hue, saturation and lightness) color value to RGB. @@ -4551,7 +4584,7 @@ declare module Phaser { * @param out An object into which 3 properties will be created: r, g and b. If not provided a new object will be created. * @return An object with the red, green and blue values set in the r, g and b properties. */ - static HSLtoRGB(h: number, s: number, l: number, out?: any): any; + static HSLtoRGB(h: number, s: number, l: number, out?: ColorComponents): ColorComponents; /** * Get HSL color wheel values in an array which will be 360 elements in size. @@ -4560,7 +4593,7 @@ declare module Phaser { * @param l The lightness, in the range 0 - 1. - Default: 0.5 * @return An array containing 360 elements corresponding to the HSL color wheel. */ - static HSLColorWheel(s?: number, l?: number): any[]; + static HSLColorWheel(s?: number, l?: number): ColorComponents[]; /** * Converts an HSV (hue, saturation and value) color value to RGB. @@ -4574,7 +4607,7 @@ declare module Phaser { * @param out An object into which 3 properties will be created: r, g and b. If not provided a new object will be created. * @return An object with the red, green and blue values set in the r, g and b properties. */ - static HSVtoRGB(h: number, s: number, v: number, out?: any): any; + static HSVtoRGB(h: number, s: number, v: number, out?: ColorComponents): ColorComponents; /** * Get HSV color wheel values in an array which will be 360 elements in size. @@ -4583,7 +4616,7 @@ declare module Phaser { * @param v The value, in the range 0 - 1. - Default: 1 * @return An array containing 360 elements corresponding to the HSV color wheel. */ - static HSVColorWheel(s?: number, v?: number): any[]; + static HSVColorWheel(s?: number, v?: number): ColorComponents[]; /** * Converts a hue to an RGB color. @@ -4594,7 +4627,7 @@ declare module Phaser { * @param t * @return The color component value. */ - static hueToColor(p: number, q: number, t: number): number; + static hueToColor(p: number, q: number, t: number): number; /** * Interpolates the two given colours based on the supplied step and currentStep properties. @@ -4606,7 +4639,7 @@ declare module Phaser { * @param alpha The alpha of the returned color. * @return The interpolated color value. */ - static interpolateColor(color1: number, color2: number, steps: number, currentStep: number, alpha: number): number; + static interpolateColor(color1: number, color2: number, steps: number, currentStep: number, alpha: number): number; /** * Interpolates the two given colours based on the supplied step and currentStep properties. @@ -4619,7 +4652,7 @@ declare module Phaser { * @param currentStep The currentStep value. If the interpolation will take 100 steps, a currentStep value of 50 would be half-way between the two. * @return The interpolated color value. */ - static interpolateColorWithRGB(color: number, r: number, g: number, b: number, steps: number, currentStep: number): number; + static interpolateColorWithRGB(color: number, r: number, g: number, b: number, steps: number, currentStep: number): number; /** * Interpolates the two given colours based on the supplied step and currentStep properties. @@ -4634,7 +4667,7 @@ declare module Phaser { * @param currentStep The currentStep value. If the interpolation will take 100 steps, a currentStep value of 50 would be half-way between the two. * @return The interpolated color value. */ - static interpolateRGB(r1: number, g1: number, b1: number, r2: number, g2: number, b2: number, steps: number, currentStep: number): number; + static interpolateRGB(r1: number, g1: number, b1: number, r2: number, g2: number, b2: number, steps: number, currentStep: number): number; /** * Packs the r, g, b, a components into a single integer, for use with Int32Array. @@ -4646,7 +4679,7 @@ declare module Phaser { * @param a The alpha color component, in the range 0 - 255. * @return The packed color as uint32 */ - static packPixel(r: number, g: number, b: number, a: number): number; + static packPixel(r: number, g: number, b: number, a: number): number; /** * Converts an RGB color value to HSL (hue, saturation and lightness). @@ -4660,7 +4693,7 @@ declare module Phaser { * @param out An object into which 3 properties will be created, h, s and l. If not provided a new object will be created. * @return An object with the hue, saturation and lightness values set in the h, s and l properties. */ - static RGBtoHSL(r: number, g: number, b: number, out?: any): any; + static RGBtoHSL(r: number, g: number, b: number, out?: ColorComponents): ColorComponents; /** * Converts an RGB color value to HSV (hue, saturation and value). @@ -4674,7 +4707,7 @@ declare module Phaser { * @param out An object into which 3 properties will be created, h, s and v. If not provided a new object will be created. * @return An object with the hue, saturation and value set in the h, s and v properties. */ - static RGBtoHSV(r: number, g: number, b: number, out?: any): any; + static RGBtoHSV(r: number, g: number, b: number, out?: ColorComponents): ColorComponents; /** * Converts the given color values into a string. @@ -4687,7 +4720,7 @@ declare module Phaser { * @param prefix The prefix used in the return string. If '#' it will return `#RRGGBB`, else `0xAARRGGBB`. - Default: '#' * @return A string containing the color values. If prefix was '#' it will be in the format `#RRGGBB` otherwise `0xAARRGGBB`. */ - static RGBtoString(r: number, g: number, b: number, a?: number, prefix?: string): string; + static RGBtoString(r: number, g: number, b: number, a?: number, prefix?: string): string; /** * A utility to convert RGBA components to a 32 bit integer in RRGGBBAA format. @@ -4698,7 +4731,18 @@ declare module Phaser { * @param a The alpha color component, in the range 0 - 255. * @return A RGBA-packed 32 bit integer */ - static toRGBA(r: number, g: number, b: number, a: number): number; + static toRGBA(r: number, g: number, b: number, a: number): number; + + /** + * Converts RGBA components to a 32 bit integer in AABBGGRR format. + * + * @param r The red color component, in the range 0 - 255. + * @param g The green color component, in the range 0 - 255. + * @param b The blue color component, in the range 0 - 255. + * @param a The alpha color component, in the range 0 - 255. + * @return A RGBA-packed 32 bit integer + */ + static toABGR(r: number, g: number, b: number, a: number): number; /** * Unpacks the r, g, b, a components into the specified color object, or a new @@ -4716,7 +4760,7 @@ declare module Phaser { * @param hsv Also convert the rgb values into hsv? * @return An object with the red, green and blue values set in the r, g and b properties. */ - static unpackPixel(rgba: number, out?: any, hsl?: boolean, hsv?: boolean): any; + static unpackPixel(rgba: number, out?: ColorComponents, hsl?: boolean, hsv?: boolean): ColorComponents; /** * Takes a color object and updates the rgba, color and color32 properties. @@ -4724,7 +4768,7 @@ declare module Phaser { * @param out The color object to update. * @return A native color value integer (format: 0xAARRGGBB). */ - static updateColor(out: any): number; + static updateColor(out: ColorComponents): ColorComponents; /** * Converts a value - a "hex" string, a "CSS 'web' string", or a number - into red, green, blue, and alpha components. @@ -4737,7 +4781,7 @@ declare module Phaser { * @param out The object to use for the output. If not provided a new object will be created. * @return The (`out`) object with the red, green, blue, and alpha values set as the r/g/b/a properties. */ - static valueToColor(value: string, out?: any): { r: number; g: number; b: number; a: number; }; + static valueToColor(value: string, out?: ColorComponents): ColorComponents; /** * Converts a CSS 'web' string into a Phaser Color object. @@ -4748,7 +4792,7 @@ declare module Phaser { * @param out An object into which 4 properties will be created: r, g, b and a. If not provided a new object will be created. * @return An object with the red, green, blue and alpha values set in the r, g, b and a properties. */ - static webToColor(web: string, out?: any): { r: number; g: number; b: number; a: number; }; + static webToColor(web: string, out?: ColorComponents): ColorComponents; /** * Blends the source color, ignoring the backdrop. @@ -4757,7 +4801,7 @@ declare module Phaser { * @param b The backdrop color to blend, in the range 1 to 255. * @return The blended color value, in the range 1 to 255. */ - static blendNormal(a: number): number; + static blendNormal(a: number): number; /** * Selects the lighter of the backdrop and source colors. @@ -4766,7 +4810,7 @@ declare module Phaser { * @param b The backdrop color to blend, in the range 1 to 255. * @return The blended color value, in the range 1 to 255. */ - static blendLighten(a: number, b: number): number; + static blendLighten(a: number, b: number): number; /** * Selects the darker of the backdrop and source colors. @@ -4775,7 +4819,7 @@ declare module Phaser { * @param b The backdrop color to blend, in the range 1 to 255. * @return The blended color value, in the range 1 to 255. */ - static blendDarken(a: number, b: number): number; + static blendDarken(a: number, b: number): number; /** * Multiplies the backdrop and source color values. @@ -4787,7 +4831,7 @@ declare module Phaser { * @param b The backdrop color to blend, in the range 1 to 255. * @return The blended color value, in the range 1 to 255. */ - static blendMultiply(a: number, b: number): number; + static blendMultiply(a: number, b: number): number; /** * Takes the average of the source and backdrop colors. @@ -4796,7 +4840,7 @@ declare module Phaser { * @param b The backdrop color to blend, in the range 1 to 255. * @return The blended color value, in the range 1 to 255. */ - static blendAverage(a: number, b: number): number; + static blendAverage(a: number, b: number): number; /** * Adds the source and backdrop colors together and returns the value, up to a maximum of 255. @@ -4805,7 +4849,7 @@ declare module Phaser { * @param b The backdrop color to blend, in the range 1 to 255. * @return The blended color value, in the range 1 to 255. */ - static blendAdd(a: number, b: number): number; + static blendAdd(a: number, b: number): number; /** * Combines the source and backdrop colors and returns their value minus 255. @@ -4814,7 +4858,7 @@ declare module Phaser { * @param b The backdrop color to blend, in the range 1 to 255. * @return The blended color value, in the range 1 to 255. */ - static blendSubtract(a: number, b: number): number; + static blendSubtract(a: number, b: number): number; /** * Subtracts the darker of the two constituent colors from the lighter. @@ -4825,7 +4869,7 @@ declare module Phaser { * @param b The backdrop color to blend, in the range 1 to 255. * @return The blended color value, in the range 1 to 255. */ - static blendDifference(a: number, b: number): number; + static blendDifference(a: number, b: number): number; /** * Negation blend mode. @@ -4834,7 +4878,7 @@ declare module Phaser { * @param b The backdrop color to blend, in the range 1 to 255. * @return The blended color value, in the range 1 to 255. */ - static blendNegation(a: number, b: number): number; + static blendNegation(a: number, b: number): number; /** * Multiplies the complements of the backdrop and source color values, then complements the result. @@ -4845,7 +4889,7 @@ declare module Phaser { * @param b The backdrop color to blend, in the range 1 to 255. * @return The blended color value, in the range 1 to 255. */ - static blendScreen(a: number, b: number): number; + static blendScreen(a: number, b: number): number; /** * Produces an effect similar to that of the Difference mode, but lower in contrast. @@ -4855,7 +4899,7 @@ declare module Phaser { * @param b The backdrop color to blend, in the range 1 to 255. * @return The blended color value, in the range 1 to 255. */ - static blendExclusion(a: number, b: number): number; + static blendExclusion(a: number, b: number): number; /** * Multiplies or screens the colors, depending on the backdrop color. @@ -4866,7 +4910,7 @@ declare module Phaser { * @param b The backdrop color to blend, in the range 1 to 255. * @return The blended color value, in the range 1 to 255. */ - static blendOverlay(a: number, b: number): number; + static blendOverlay(a: number, b: number): number; /** * Darkens or lightens the colors, depending on the source color value. @@ -4885,7 +4929,7 @@ declare module Phaser { * @param b The backdrop color to blend, in the range 1 to 255. * @return The blended color value, in the range 1 to 255. */ - static blendSoftLight(a: number, b: number): number; + static blendSoftLight(a: number, b: number): number; /** * Multiplies or screens the colors, depending on the source color value. @@ -4905,7 +4949,7 @@ declare module Phaser { * @param b The backdrop color to blend, in the range 1 to 255. * @return The blended color value, in the range 1 to 255. */ - static blendHardLight(a: number, b: number): number; + static blendHardLight(a: number, b: number): number; /** * Brightens the backdrop color to reflect the source color. @@ -4915,7 +4959,7 @@ declare module Phaser { * @param b The backdrop color to blend, in the range 1 to 255. * @return The blended color value, in the range 1 to 255. */ - static blendColorDodge(a: number, b: number): number; + static blendColorDodge(a: number, b: number): number; /** * Darkens the backdrop color to reflect the source color. @@ -4925,7 +4969,7 @@ declare module Phaser { * @param b The backdrop color to blend, in the range 1 to 255. * @return The blended color value, in the range 1 to 255. */ - static blendColorBurn(a: number, b: number): number; + static blendColorBurn(a: number, b: number): number; /** * An alias for blendAdd, it simply sums the values of the two colors. @@ -4934,7 +4978,7 @@ declare module Phaser { * @param b The backdrop color to blend, in the range 1 to 255. * @return The blended color value, in the range 1 to 255. */ - static blendLinearDodge(a: number, b: number): number; + static blendLinearDodge(a: number, b: number): number; /** * An alias for blendSubtract, it simply sums the values of the two colors and subtracts 255. @@ -4943,7 +4987,7 @@ declare module Phaser { * @param b The backdrop color to blend, in the range 1 to 255. * @return The blended color value, in the range 1 to 255. */ - static blendLinearBurn(a: number, b: number): number; + static blendLinearBurn(a: number, b: number): number; /** * This blend mode combines Linear Dodge and Linear Burn (rescaled so that neutral colors become middle gray). @@ -4954,7 +4998,7 @@ declare module Phaser { * @param b The backdrop color to blend, in the range 1 to 255. * @return The blended color value, in the range 1 to 255. */ - static blendLinearLight(a: number, b: number): number; + static blendLinearLight(a: number, b: number): number; /** * This blend mode combines Color Dodge and Color Burn (rescaled so that neutral colors become middle gray). @@ -4966,7 +5010,7 @@ declare module Phaser { * @param b The backdrop color to blend, in the range 1 to 255. * @return The blended color value, in the range 1 to 255. */ - static blendVividLight(a: number, b: number): number; + static blendVividLight(a: number, b: number): number; /** * If the backdrop color (light source) is lighter than 50%, the blendDarken mode is used, and colors lighter than the backdrop color do not change. @@ -4976,7 +5020,7 @@ declare module Phaser { * @param b The backdrop color to blend, in the range 1 to 255. * @return The blended color value, in the range 1 to 255. */ - static blendPinLight(a: number, b: number): number; + static blendPinLight(a: number, b: number): number; /** * Runs blendVividLight on the source and backdrop colors. @@ -4988,7 +5032,7 @@ declare module Phaser { * @param b The backdrop color to blend, in the range 1 to 255. * @return The blended color value, in the range 1 to 255. */ - static blendHardMix(a: number, b: number): number; + static blendHardMix(a: number, b: number): number; /** * Reflect blend mode. This mode is useful when adding shining objects or light zones to images. @@ -4997,7 +5041,7 @@ declare module Phaser { * @param b The backdrop color to blend, in the range 1 to 255. * @return The blended color value, in the range 1 to 255. */ - static blendReflect(a: number, b: number): number; + static blendReflect(a: number, b: number): number; /** * Glow blend mode. This mode is a variation of reflect mode with the source and backdrop colors swapped. @@ -5006,7 +5050,7 @@ declare module Phaser { * @param b The backdrop color to blend, in the range 1 to 255. * @return The blended color value, in the range 1 to 255. */ - static blendGlow(a: number, b: number): number; + static blendGlow(a: number, b: number): number; /** * Phoenix blend mode. This subtracts the lighter color from the darker color, and adds 255, giving a bright result. @@ -5015,10 +5059,26 @@ declare module Phaser { * @param b The backdrop color to blend, in the range 1 to 255. * @return The blended color value, in the range 1 to 255. */ - static blendPhoenix(a: number, b: number): number; - - } - + static blendPhoenix(a: number, b: number): number; + + } + + interface RGBColor { + r: number; + g: number; + b: number; + a: number; + } + interface ColorComponents extends RGBColor { + h: number; + s: number; + v: number; + l: number; + color: number; + color32: number; + rgba: string; + } + /** * The Phaser.Create class is a collection of smaller helper methods that allow you to generate game content @@ -5027,8 +5087,8 @@ declare module Phaser { * * Access this via `Game.create` (`this.game.create` from within a State object) */ - class Create { - + class Create { + /** * The Phaser.Create class is a collection of smaller helper methods that allow you to generate game content @@ -5039,60 +5099,60 @@ declare module Phaser { * * @param game Game reference to the currently running game. */ - constructor(game: Phaser.Game); - + constructor(game: Phaser.Game); + /** * A 16 color palette by [Arne](http://androidarts.com/palette/16pal.htm) */ - static PALETTE_ARNE: number; + static PALETTE_ARNE: number; /** * A 16 color JMP inspired palette. */ - static PALETTE_JMP: number; + static PALETTE_JMP: number; /** * A 16 color CGA inspired palette. */ - static PALETTE_CGA: number; + static PALETTE_CGA: number; /** * A 16 color C64 inspired palette. */ - static PALETTE_C64: number; + static PALETTE_C64: number; /** * A 16 color palette inspired by Japanese computers like the MSX. */ - static PALETTE_JAPANESE_MACHINE: number; - + static PALETTE_JAPANESE_MACHINE: number; + /** * The internal BitmapData Create uses to generate textures from. */ - bmd: Phaser.BitmapData; + bmd: Phaser.BitmapData; /** * The canvas the BitmapData uses. */ - canvas: HTMLCanvasElement; + canvas: HTMLCanvasElement; /** * The 2d context of the canvas. */ - ctx: CanvasRenderingContext2D; + ctx: CanvasRenderingContext2D; /** * A reference to the currently running Game. */ - game: Phaser.Game; + game: Phaser.Game; /** * A range of 16 color palettes for use with sprite generation. */ - palettes: any; - + palettes: any; + /** * Creates a grid texture based on the given dimensions. @@ -5105,7 +5165,7 @@ declare module Phaser { * @param color The color to draw the grid lines in. Should be a Canvas supported color string like `#ff5500` or `rgba(200,50,3,0.5)`. * @return The newly generated texture. */ - grid(key: string, width: number, height: number, cellWidth: number, cellHeight: number, color: string): PIXI.Texture; + grid(key: string, width: number, height: number, cellWidth: number, cellHeight: number, color: string): PIXI.Texture; /** * Generates a new PIXI.Texture from the given data, which can be applied to a Sprite. @@ -5137,19 +5197,19 @@ declare module Phaser { * @param palette The palette to use when rendering the texture. One of the Phaser.Create.PALETTE consts. * @return The newly generated texture. */ - texture(key: string, data: any, pixelWidth?: number, pixelHeight?: number, palette?: number): PIXI.Texture; - - } - - interface CursorKeys { - - up: Phaser.Key; - down: Phaser.Key; - left: Phaser.Key; - right: Phaser.Key; - - } - + texture(key: string, data: any, pixelWidth?: number, pixelHeight?: number, palette?: number): PIXI.Texture; + + } + + interface CursorKeys { + + up: Phaser.Key; + down: Phaser.Key; + left: Phaser.Key; + right: Phaser.Key; + + } + /** * Detects device support capabilities and is responsible for device initialization - see {@link Phaser.Device.whenReady whenReady}. @@ -5167,13 +5227,13 @@ declare module Phaser { * * Uses elements from System.js by MrDoob and Modernizr */ - class Device { - + class Device { + /** * Same value as `littleEndian`. */ - static LITTLE_ENDIAN: boolean; + static LITTLE_ENDIAN: boolean; /** * This signal is dispatched after device initialization occurs but before any of the ready @@ -5184,9 +5244,9 @@ declare module Phaser { * _Note_: This signal is removed after the device has been readied; if a handler has not been * added _before_ `new Phaser.Game(..)` it is probably too late. */ - static onInitialized: Phaser.Signal; - - static checkFullScreenSupport(): void; + static onInitialized: Phaser.Signal; + + static checkFullScreenSupport(): void; /** * Check whether the host environment can play audio. @@ -5194,7 +5254,7 @@ declare module Phaser { * @param type One of 'mp3, 'ogg', 'm4a', 'wav', 'webm' or 'opus'. * @return True if the given file type is supported by the browser, otherwise false. */ - static canPlayAudio(type: string): boolean; + static canPlayAudio(type: string): boolean; /** * Check whether the host environment can play video files. @@ -5202,14 +5262,14 @@ declare module Phaser { * @param type One of 'mp4, 'ogg', 'webm' or 'mpeg'. * @return True if the given file type is supported by the browser, otherwise false. */ - static canPlayVideo(type: string): boolean; + static canPlayVideo(type: string): boolean; /** * Check whether the console is open. * Note that this only works in Firefox with Firebug and earlier versions of Chrome. * It used to work in Chrome, but then they removed the ability: {@link http://src.chromium.org/viewvc/blink?view=revision&revision=151136} */ - static isConsoleOpen(): boolean; + static isConsoleOpen(): boolean; /** * Detect if the host is a an Android Stock browser. @@ -5217,366 +5277,366 @@ declare module Phaser { * * Authors might want to scale down on effects and switch to the CANVAS rendering method on those devices. */ - static isAndroidStockBrowser(): string; - static whenReady: (callback: Function, context?: any) => void; - + static isAndroidStockBrowser(): string; + static whenReady: (callback: Function, context?: any) => void; + /** * Is running on android? */ - android: boolean; + android: boolean; /** * Set to true if running in Arora. */ - arora: boolean; + arora: boolean; /** * Are Audio tags available? */ - audioData: boolean; - cancelFullScreen: string; + audioData: boolean; + cancelFullScreen: string; /** * Is canvas available? */ - canvas: boolean; + canvas: boolean; /** * Set to true if running in Chrome. */ - chrome: boolean; + chrome: boolean; /** * Is running on chromeOS? */ - chromeOS: boolean; + chromeOS: boolean; /** * If running in Chrome this will contain the major version number. */ - chromeVersion: number; + chromeVersion: number; /** * Is the game running under CocoonJS? */ - cocoonJS: boolean; + cocoonJS: boolean; /** * Is this game running with CocoonJS.App? */ - cocoonJSApp: boolean; + cocoonJSApp: boolean; /** * Is the game running under Apache Cordova? */ - cordova: boolean; + cordova: boolean; /** * Is the game running under the Intel Crosswalk XDK? */ - crosswalk: boolean; + crosswalk: boolean; /** * Is css3D available? */ - css3D: boolean; + css3D: boolean; /** * Is running on a desktop? */ - desktop: boolean; + desktop: boolean; /** * The time the device became ready. */ - deviceReadyAt: number; + deviceReadyAt: number; /** * Is the game running under GitHub Electron? */ - electron: boolean; + electron: boolean; /** * Is the game running under Ejecta? */ - ejecta: boolean; + ejecta: boolean; /** * Set to true if running in Epiphany. */ - epiphany: boolean; + epiphany: boolean; /** * Is file available? */ - file: boolean; + file: boolean; /** * Is fileSystem available? */ - fileSystem: boolean; + fileSystem: boolean; /** * Set to true if running in Firefox. */ - firefox: boolean; + firefox: boolean; /** * If running in Firefox this will contain the major version number. */ - firefoxVersion: number; - fullScreen: boolean; - fullScreenKeyboard: boolean; + firefoxVersion: number; + fullScreen: boolean; + fullScreenKeyboard: boolean; /** * Does the device support the getUserMedia API? * Default: true */ - getUserMedia: boolean; - game: Phaser.Game; + getUserMedia: boolean; + game: Phaser.Game; /** * Can this device play h264 mp4 video files? */ - h264Video: boolean; + h264Video: boolean; /** * Can this device play hls video files? */ - hlsVideo: boolean; + hlsVideo: boolean; /** * Set to true if running in Internet Explorer. */ - ie: boolean; + ie: boolean; /** * If running in Internet Explorer this will contain the major version number. Beyond IE10 you should use Device.trident and Device.tridentVersion. */ - ieVersion: number; + ieVersion: number; /** * Is running on iOS? */ - iOS: boolean; + iOS: boolean; /** * If running in iOS this will contain the major version number. */ - iOSVersion: number; + iOSVersion: number; /** * The time as which initialization has completed. */ - initialized: boolean; + initialized: boolean; /** * Is running on iPad? */ - iPad: boolean; + iPad: boolean; /** * Is running on iPhone? */ - iPhone: boolean; + iPhone: boolean; /** * Is running on iPhone4? */ - iPhone4: boolean; - kindle: boolean; + iPhone4: boolean; + kindle: boolean; /** * Is running on linux? */ - linux: boolean; + linux: boolean; /** * Is the device big or little endian? (only detected if the browser supports TypedArrays) */ - littleEndian: boolean; + littleEndian: boolean; /** * Is localStorage available? */ - localStorage: boolean; + localStorage: boolean; /** * Can this device play m4a files? True if this device can play m4a files. */ - m4a: boolean; + m4a: boolean; /** * Is running on macOS? */ - macOS: boolean; + macOS: boolean; /** * Set to true if running in Midori. */ - midori: boolean; + midori: boolean; /** * Set to true if running in Mobile Safari. */ - mobileSafari: boolean; + mobileSafari: boolean; /** * Can this device play mp3 files? */ - mp3: boolean; + mp3: boolean; /** * Can this device play h264 mp4 video files? */ - mp4Video: boolean; + mp4Video: boolean; /** * Is mspointer available? */ - mspointer: boolean; + mspointer: boolean; /** * Is the game running under Node.js? */ - node: boolean; + node: boolean; /** * Is the game running under Node-Webkit? */ - nodeWebkit: boolean; + nodeWebkit: boolean; /** * Can this device play ogg files? */ - ogg: boolean; + ogg: boolean; /** * Can this device play ogg video files? */ - oggVideo: number; + oggVideo: number; /** * Set to true if running in Opera. */ - opera: boolean; + opera: boolean; /** * Can this device play opus files? */ - opus: boolean; + opus: boolean; /** * PixelRatio of the host device? */ - pixelRatio: number; + pixelRatio: number; /** * Is Pointer Lock available? */ - pointerLock: boolean; + pointerLock: boolean; /** * Is the browser running in strict mode (false) or quirks mode? (true) */ - quirksMode: boolean; - requestFullScreen: string; + quirksMode: boolean; + requestFullScreen: string; /** * Set to true if running in Safari. */ - safari: boolean; + safari: boolean; /** * Set to true if running in the Silk browser (as used on the Amazon Kindle) */ - silk: boolean; + silk: boolean; /** * Does the device context support 32bit pixel manipulation using array buffer views? */ - support32bit: boolean; + support32bit: boolean; /** * Is touch available? */ - touch: boolean; + touch: boolean; /** * Set to true if running a Trident version of Internet Explorer (IE11+) */ - trident: boolean; + trident: boolean; /** * If running in Internet Explorer 11 this will contain the major version number. See {@link http://msdn.microsoft.com/en-us/library/ie/ms537503(v=vs.85).aspx} */ - tridentVersion: number; + tridentVersion: number; /** * Does the browser support TypedArrays? */ - typedArray: boolean; + typedArray: boolean; /** * Does the device support the Vibration API? */ - vibration: boolean; - vita: boolean; + vibration: boolean; + vita: boolean; /** * Can this device play wav files? */ - wav: boolean; + wav: boolean; /** * Set to true if running as a WebApp, i.e. within a WebView */ - webApp: boolean; + webApp: boolean; /** * Is the WebAudio API available? */ - webAudio: boolean; + webAudio: boolean; /** * Is webGL available? */ - webGL: boolean; + webGL: boolean; /** * Can this device play webm files? */ - webm: boolean; + webm: boolean; /** * Can this device play webm video files? */ - webmVideo: boolean; + webmVideo: boolean; /** * Is running on windows? */ - windows: boolean; + windows: boolean; /** * Is running on a Windows Phone? */ - windowsPhone: boolean; + windowsPhone: boolean; /** * The newest type of Wheel/Scroll event supported: 'wheel', 'mousewheel', 'DOMMouseScroll' */ - wheelEvent: string; + wheelEvent: string; /** * Is worker available? */ - worker: boolean; - wp9Video: boolean; - - } - + worker: boolean; + wp9Video: boolean; + + } + /** * DeviceButtons belong to both `Phaser.Pointer` and `Phaser.SinglePad` (Gamepad) instances. @@ -5596,8 +5656,8 @@ declare module Phaser { * - On Linux (GTK), the 4th button and the 5th button are not supported. * - On Mac OS X 10.5 there is no platform API for implementing any advanced buttons. */ - class DeviceButton { - + class DeviceButton { + /** * DeviceButtons belong to both `Phaser.Pointer` and `Phaser.SinglePad` (Gamepad) instances. @@ -5620,79 +5680,79 @@ declare module Phaser { * @param parent A reference to the parent of this button. Either a Pointer or a Gamepad. * @param buttonCode The button code this DeviceButton is responsible for. */ - constructor(parent: Phaser.Pointer | Phaser.SinglePad, butonCode: number); - + constructor(parent: Phaser.Pointer | Phaser.SinglePad, butonCode: number); + /** * The buttoncode of this button if a Gamepad, or the DOM button event value if a Pointer. */ - buttonCode: number; + buttonCode: number; /** * A reference to the currently running game. */ - game: Phaser.Game; + game: Phaser.Game; /** * The "down" state of the button. */ - isDown: boolean; + isDown: boolean; /** * The "up" state of the button. * Default: true */ - isUp: boolean; + isUp: boolean; /** * This Signal is dispatched every time this DeviceButton is pressed down. * It is only dispatched once (until the button is released again). * When dispatched it sends 2 arguments: A reference to this DeviceButton and the value of the button. */ - onDown: Phaser.Signal; + onDown: Phaser.Signal; /** * Gamepad only. * This Signal is dispatched every time this DeviceButton changes floating value (between, but not exactly, 0 and 1). * When dispatched it sends 2 arguments: A reference to this DeviceButton and the value of the button. */ - onFloat: Phaser.Signal; + onFloat: Phaser.Signal; /** * This Signal is dispatched every time this DeviceButton is released from a down state. * It is only dispatched once (until the button is pressed again). * When dispatched it sends 2 arguments: A reference to this DeviceButton and the value of the button. */ - onUp: Phaser.Signal; - pad: Phaser.Gamepad; + onUp: Phaser.Signal; + pad: Phaser.Gamepad; /** * Gamepad only. * If a button is held down this holds down the number of times the button has 'repeated'. */ - repeats: number; + repeats: number; /** * The timestamp when the button was last pressed down. */ - timeDown: number; + timeDown: number; /** * The timestamp when the button was last released. */ - timeUp: number; + timeUp: number; /** * Button value. Mainly useful for checking analog buttons (like shoulder triggers) on Gamepads. */ - value: number; - + value: number; + /** * Destroys this DeviceButton, this disposes of the onDown, onUp and onFloat signals * and clears the parent and game references. */ - destroy(): void; + destroy(): void; /** * Returns the "just pressed" state of this button. @@ -5701,7 +5761,7 @@ declare module Phaser { * @param duration The duration in ms below which the button is considered as being just pressed. - Default: 250 * @return True if the button is just pressed otherwise false. */ - justPressed(duration?: number): boolean; + justPressed(duration?: number): boolean; /** * Returns the "just released" state of this button. @@ -5710,32 +5770,32 @@ declare module Phaser { * @param duration The duration in ms below which the button is considered as being just released. - Default: 250 * @return True if the button is just released otherwise false. */ - justReleased(duration?: number): boolean; - processButtonDown(value: number): void; - processButtonFloat(value: number): void; - processButtonUp(value: number): void; + justReleased(duration?: number): boolean; + processButtonDown(value: number): void; + processButtonFloat(value: number): void; + processButtonUp(value: number): void; /** * Resets this DeviceButton, changing it to an isUp state and resetting the duration and repeats counters. */ - reset(): void; - - } - - module Easing { - - var Default: Function; - var Power0: Function; - var Power1: Function; - var power2: Function; - var power3: Function; - var power4: Function; - + reset(): void; + + } + + module Easing { + + var Default: Function; + var Power0: Function; + var Power1: Function; + var power2: Function; + var power3: Function; + var power4: Function; + /** * Back easing. */ - class Back { + class Back { /** * Back ease-in. @@ -5743,7 +5803,7 @@ declare module Phaser { * @param k The value to be tweened. * @return The tweened value. */ - static In(k: number): number; + static In(k: number): number; /** * Back ease-out. @@ -5751,7 +5811,7 @@ declare module Phaser { * @param k The value to be tweened. * @return The tweened value. */ - static Out(k: number): number; + static Out(k: number): number; /** * Back ease-in/out. @@ -5759,14 +5819,14 @@ declare module Phaser { * @param k The value to be tweened. * @return The tweened value. */ - static InOut(k: number): number; - } - + static InOut(k: number): number; + } + /** * Bounce easing. */ - class Bounce { + class Bounce { /** * Bounce ease-in. @@ -5774,7 +5834,7 @@ declare module Phaser { * @param k The value to be tweened. * @return The tweened value. */ - static In(k: number): number; + static In(k: number): number; /** * Bounce ease-out. @@ -5782,7 +5842,7 @@ declare module Phaser { * @param k The value to be tweened. * @return The tweened value. */ - static Out(k: number): number; + static Out(k: number): number; /** * Bounce ease-in/out. @@ -5790,14 +5850,14 @@ declare module Phaser { * @param k The value to be tweened. * @return The tweened value. */ - static InOut(k: number): number; - } - + static InOut(k: number): number; + } + /** * Circular easing. */ - class Circular { + class Circular { /** * Circular ease-in. @@ -5805,7 +5865,7 @@ declare module Phaser { * @param k The value to be tweened. * @return The tweened value. */ - static In(k: number): number; + static In(k: number): number; /** * Circular ease-out. @@ -5813,7 +5873,7 @@ declare module Phaser { * @param k The value to be tweened. * @return The tweened value. */ - static Out(k: number): number; + static Out(k: number): number; /** * Circular ease-in/out. @@ -5821,14 +5881,14 @@ declare module Phaser { * @param k The value to be tweened. * @return The tweened value. */ - static InOut(k: number): number; - } - + static InOut(k: number): number; + } + /** * Cubic easing. */ - class Cubic { + class Cubic { /** * Cubic ease-in. @@ -5836,7 +5896,7 @@ declare module Phaser { * @param k The value to be tweened. * @return The tweened value. */ - static In(k: number): number; + static In(k: number): number; /** * Cubic ease-out. @@ -5844,7 +5904,7 @@ declare module Phaser { * @param k The value to be tweened. * @return The tweened value. */ - static Out(k: number): number; + static Out(k: number): number; /** * Cubic ease-in/out. @@ -5852,14 +5912,14 @@ declare module Phaser { * @param k The value to be tweened. * @return The tweened value. */ - static InOut(k: number): number; - } - + static InOut(k: number): number; + } + /** * Elastic easing. */ - class Elastic { + class Elastic { /** * Elastic ease-in. @@ -5867,7 +5927,7 @@ declare module Phaser { * @param k The value to be tweened. * @return The tweened value. */ - static In(k: number): number; + static In(k: number): number; /** * Elastic ease-out. @@ -5875,7 +5935,7 @@ declare module Phaser { * @param k The value to be tweened. * @return The tweened value. */ - static Out(k: number): number; + static Out(k: number): number; /** * Elastic ease-in/out. @@ -5883,14 +5943,14 @@ declare module Phaser { * @param k The value to be tweened. * @return The tweened value. */ - static InOut(k: number): number; - } - + static InOut(k: number): number; + } + /** * Exponential easing. */ - class Exponential { + class Exponential { /** * Exponential ease-in. @@ -5898,7 +5958,7 @@ declare module Phaser { * @param k The value to be tweened. * @return The tweened value. */ - static In(k: number): number; + static In(k: number): number; /** * Exponential ease-out. @@ -5906,7 +5966,7 @@ declare module Phaser { * @param k The value to be tweened. * @return The tweened value. */ - static Out(k: number): number; + static Out(k: number): number; /** * Exponential ease-in/out. @@ -5914,14 +5974,14 @@ declare module Phaser { * @param k The value to be tweened. * @return The tweened value. */ - static InOut(k: number): number; - } - + static InOut(k: number): number; + } + /** * Linear easing. */ - class Linear { + class Linear { /** * Linear Easing (no variation). @@ -5929,14 +5989,14 @@ declare module Phaser { * @param k The value to be tweened. * @return k. */ - static None(k: number): number; - } - + static None(k: number): number; + } + /** * Quadratic easing. */ - class Quadratic { + class Quadratic { /** * Ease-in. @@ -5944,7 +6004,7 @@ declare module Phaser { * @param k The value to be tweened. * @return k^2. */ - static In(k: number): number; + static In(k: number): number; /** * Ease-out. @@ -5952,7 +6012,7 @@ declare module Phaser { * @param k The value to be tweened. * @return k* (2-k). */ - static Out(k: number): number; + static Out(k: number): number; /** * Ease-in/out. @@ -5960,14 +6020,14 @@ declare module Phaser { * @param k The value to be tweened. * @return The tweened value. */ - static InOut(k: number): number; - } - + static InOut(k: number): number; + } + /** * Quartic easing. */ - class Quartic { + class Quartic { /** * Quartic ease-in. @@ -5975,7 +6035,7 @@ declare module Phaser { * @param k The value to be tweened. * @return The tweened value. */ - static In(k: number): number; + static In(k: number): number; /** * Quartic ease-out. @@ -5983,7 +6043,7 @@ declare module Phaser { * @param k The value to be tweened. * @return The tweened value. */ - static Out(k: number): number; + static Out(k: number): number; /** * Quartic ease-in/out. @@ -5991,14 +6051,14 @@ declare module Phaser { * @param k The value to be tweened. * @return The tweened value. */ - static InOut(k: number): number; - } - + static InOut(k: number): number; + } + /** * Quintic easing. */ - class Quintic { + class Quintic { /** * Quintic ease-in. @@ -6006,7 +6066,7 @@ declare module Phaser { * @param k The value to be tweened. * @return The tweened value. */ - static In(k: number): number; + static In(k: number): number; /** * Quintic ease-out. @@ -6014,7 +6074,7 @@ declare module Phaser { * @param k The value to be tweened. * @return The tweened value. */ - static Out(k: number): number; + static Out(k: number): number; /** * Quintic ease-in/out. @@ -6022,14 +6082,14 @@ declare module Phaser { * @param k The value to be tweened. * @return The tweened value. */ - static InOut(k: number): number; - } - + static InOut(k: number): number; + } + /** * Sinusoidal easing. */ - class Sinusoidal { + class Sinusoidal { /** * Sinusoidal ease-in. @@ -6037,7 +6097,7 @@ declare module Phaser { * @param k The value to be tweened. * @return The tweened value. */ - static In(k: number): number; + static In(k: number): number; /** * Sinusoidal ease-out. @@ -6045,7 +6105,7 @@ declare module Phaser { * @param k The value to be tweened. * @return The tweened value. */ - static Out(k: number): number; + static Out(k: number): number; /** * Sinusoidal ease-in/out. @@ -6053,17 +6113,17 @@ declare module Phaser { * @param k The value to be tweened. * @return The tweened value. */ - static InOut(k: number): number; - } - - } - + static InOut(k: number): number; + } + + } + /** * Creates a Ellipse object. A curve on a plane surrounding two focal points. */ - class Ellipse { - + class Ellipse { + /** * Creates a Ellipse object. A curve on a plane surrounding two focal points. @@ -6073,62 +6133,62 @@ declare module Phaser { * @param width The overall width of this ellipse. * @param height The overall height of this ellipse. */ - constructor(x?: number, y?: number, width?: number, height?: number); - + constructor(x?: number, y?: number, width?: number, height?: number); + /** * The sum of the y and height properties. Changing the bottom property of an Ellipse doesn't adjust the y property, but does change the height. Gets or sets the bottom of the ellipse. */ - bottom: number; + bottom: number; /** * Determines whether or not this Ellipse object is empty. Will return a value of true if the Ellipse objects dimensions are less than or equal to 0; otherwise false. * If set to true it will reset all of the Ellipse objects properties to 0. An Ellipse object is empty if its width or height is less than or equal to 0. Gets or sets the empty state of the ellipse. */ - empty: boolean; + empty: boolean; /** * The overall height of this ellipse. */ - height: number; + height: number; /** * The left coordinate of the Ellipse. The same as the X coordinate. */ - left: number; + left: number; /** * The x coordinate of the rightmost point of the Ellipse. Changing the right property of an Ellipse object has no effect on the x property, but does adjust the width. Gets or sets the value of the rightmost point of the ellipse. */ - right: number; + right: number; /** * The top of the Ellipse. The same as its y property. Gets or sets the top of the ellipse. */ - top: number; + top: number; /** * The const type of this object. */ - type: number; + type: number; /** * The overall width of this ellipse. */ - width: number; + width: number; /** * The X coordinate of the upper-left corner of the framing rectangle of this ellipse. */ - x: number; + x: number; /** * The Y coordinate of the upper-left corner of the framing rectangle of this ellipse. */ - y: number; - - static constains(a: Phaser.Ellipse, x: number, y: number): boolean; - + y: number; + + static constains(a: Phaser.Ellipse, x: number, y: number): boolean; + /** * Returns a new Ellipse object with the same values for the x, y, width, and height properties as this Ellipse object. @@ -6136,7 +6196,7 @@ declare module Phaser { * @param output Optional Ellipse object. If given the values will be set into the object, otherwise a brand new Ellipse object will be created and returned. * @return The cloned Ellipse object. */ - clone(output: Phaser.Ellipse): Phaser.Ellipse; + clone(output: Phaser.Ellipse): Phaser.Ellipse; /** * Return true if the given x/y coordinates are within this Ellipse object. @@ -6145,7 +6205,7 @@ declare module Phaser { * @param y The Y value of the coordinate to test. * @return True if the coordinates are within this ellipse, otherwise false. */ - contains(x: number, y: number): boolean; + contains(x: number, y: number): boolean; /** * Copies the x, y, width and height properties from any given object to this Ellipse. @@ -6153,7 +6213,7 @@ declare module Phaser { * @param source The object to copy from. * @return This Ellipse object. */ - copyFrom(source: any): Phaser.Ellipse; + copyFrom(source: any): Phaser.Ellipse; /** * Copies the x, y, width and height properties from this Ellipse to any given object. @@ -6161,13 +6221,13 @@ declare module Phaser { * @param dest The object to copy to. * @return This dest object. */ - copyTo(dest: any): any; + copyTo(dest: any): any; /** * Returns the framing rectangle of the ellipse as a Phaser.Rectangle object. * @return The bounds of the Ellipse. */ - getBounds(): Phaser.Rectangle; + getBounds(): Phaser.Rectangle; /** * Returns a uniformly distributed random point from anywhere within this Ellipse. @@ -6176,7 +6236,7 @@ declare module Phaser { * If no object is provided a new Phaser.Point object will be created. In high performance areas avoid this by re-using an existing object. * @return An object containing the random point in its `x` and `y` properties. */ - random(out?: Phaser.Point): Phaser.Point; + random(out?: Phaser.Point): Phaser.Point; /** * Sets the members of the Ellipse to the specified values. @@ -6187,19 +6247,19 @@ declare module Phaser { * @param height The overall height of this ellipse. * @return This Ellipse object. */ - setTo(x: number, y: number, width: number, height: number): Phaser.Ellipse; + setTo(x: number, y: number, width: number, height: number): Phaser.Ellipse; /** * Returns a string representation of this object. * @return A string representation of the instance. */ - toString(): string; - - } - + toString(): string; + + } + /** - * The Events component is a collection of events fired by the parent game object. + * The Events component is a collection of events fired by the parent Game Object. * * Phaser uses what are known as 'Signals' for all event handling. All of the events in * this class are signals you can subscribe to, much in the same way you'd "listen" for @@ -6217,11 +6277,11 @@ declare module Phaser { * The Input-related events will only be dispatched if the Sprite has had `inputEnabled` set to `true` * and the Animation-related events only apply to game objects with animations like {@link Phaser.Sprite}. */ - class Events { - + class Events { + /** - * The Events component is a collection of events fired by the parent game object. + * The Events component is a collection of events fired by the parent Game Object. * * Phaser uses what are known as 'Signals' for all event handling. All of the events in * this class are signals you can subscribe to, much in the same way you'd "listen" for @@ -6241,112 +6301,188 @@ declare module Phaser { * * @param sprite A reference to the game object / Sprite that owns this Events object. */ - constructor(sprite: Phaser.Sprite); - + constructor(sprite: Phaser.Sprite); + /** * The Sprite that owns these events. */ - parent: Phaser.Sprite; + parent: Phaser.Sprite; /** - * This signal is dispatched when the parent is added to a new Group. + * This signal is dispatched when this Game Object is added to a new Group. + * It is sent two arguments: + * {any} The Game Object that was added to the Group. + * {Phaser.Group} The Group it was added to. */ - onAddedToGroup: Phaser.Signal; + onAddedToGroup: Phaser.Signal; /** - * This signal is dispatched when the parent is removed from a Group. + * This signal is dispatched when the Game Object is removed from a Group. + * It is sent two arguments: + * {any} The Game Object that was removed from the Group. + * {Phaser.Group} The Group it was removed from. */ - onRemovedFromGroup: Phaser.Signal; + onRemovedFromGroup: Phaser.Signal; /** - * This signal is dispatched if this item or any of its parents are removed from the game world. + * This Signal is never used internally by Phaser and is now deprecated. */ - onRemovedFromWorld: Phaser.Signal; + onRemovedFromWorld: Phaser.Signal; /** - * This signal is dispatched when the parent is killed. + * This signal is dispatched when the Game Object is killed. + * This happens when `Sprite.kill()` is called. + * Please understand the difference between `kill` and `destroy` by looking at their respective methods. + * It is sent one argument: + * {any} The Game Object that was killed. */ - onKilled: Phaser.Signal; + onKilled: Phaser.Signal; /** - * This signal is dispatched when the parent is revived. + * This signal is dispatched when the Game Object is revived from a previously killed state. + * This happens when `Sprite.revive()` is called. + * It is sent one argument: + * {any} The Game Object that was revived. */ - onRevived: Phaser.Signal; + onRevived: Phaser.Signal; /** - * This signal is dispatched when the parent leaves the world bounds (only if Sprite.checkWorldBounds is true). + * This signal is dispatched when the Game Object leaves the Phaser.World bounds. + * This signal is only if `Sprite.checkWorldBounds` is set to `true`. + * It is sent one argument: + * {any} The Game Object that left the World bounds. */ - onOutOfBounds: Phaser.Signal; + onOutOfBounds: Phaser.Signal; /** - * This signal is dispatched when the parent returns within the world bounds (only if Sprite.checkWorldBounds is true). + * This signal is dispatched when the Game Object returns within the Phaser.World bounds, having previously been outside of them. + * This signal is only if `Sprite.checkWorldBounds` is set to `true`. + * It is sent one argument: + * {any} The Game Object that entered the World bounds. */ - onEnterBounds: Phaser.Signal; + onEnterBounds: Phaser.Signal; /** - * This signal is dispatched if the parent is inputEnabled and receives an over event from a Pointer. + * This signal is dispatched if the Game Object has `inputEnabled` set to `true`, + * and receives an over event from a Phaser.Pointer. + * It is sent two arguments: + * {any} The Game Object that received the event. + * {Phaser.Pointer} The Phaser.Pointer object that caused the event. */ - onInputOver: Phaser.Signal; + onInputOver: Phaser.Signal; /** - * This signal is dispatched if the parent is inputEnabled and receives an out event from a Pointer. + * This signal is dispatched if the Game Object has `inputEnabled` set to `true`, + * and receives an out event from a Phaser.Pointer, which was previously over it. + * It is sent two arguments: + * {any} The Game Object that received the event. + * {Phaser.Pointer} The Phaser.Pointer object that caused the event. */ - onInputOut: Phaser.Signal; + onInputOut: Phaser.Signal; /** - * This signal is dispatched if the parent is inputEnabled and receives a down event from a Pointer. + * This signal is dispatched if the Game Object has `inputEnabled` set to `true`, + * and receives a down event from a Phaser.Pointer. This effectively means the Pointer has been + * pressed down (but not yet released) on the Game Object. + * It is sent two arguments: + * {any} The Game Object that received the event. + * {Phaser.Pointer} The Phaser.Pointer object that caused the event. */ - onInputDown: Phaser.Signal; + onInputDown: Phaser.Signal; /** - * This signal is dispatched if the parent is inputEnabled and receives an up event from a Pointer. + * This signal is dispatched if the Game Object has `inputEnabled` set to `true`, + * and receives an up event from a Phaser.Pointer. This effectively means the Pointer had been + * pressed down, and was then released on the Game Object. + * It is sent three arguments: + * {any} The Game Object that received the event. + * {Phaser.Pointer} The Phaser.Pointer object that caused the event. + * {boolean} isOver - Is the Pointer still over the Game Object? */ - onInputUp: Phaser.Signal; + onInputUp: Phaser.Signal; /** - * This signal is dispatched when the parent is destroyed. + * This signal is dispatched when the Game Object is destroyed. + * This happens when `Sprite.destroy()` is called, or `Group.destroy()` with `destroyChildren` set to true. + * It is sent one argument: + * {any} The Game Object that was destroyed. */ - onDestroy: Phaser.Signal; + onDestroy: Phaser.Signal; /** - * This signal is dispatched if the parent is inputEnabled and receives a drag start event from a Pointer. + * This signal is dispatched if the Game Object has been `inputEnabled` and `enableDrag` has been set. + * It is sent when a Phaser.Pointer starts to drag the Game Object, taking into consideration the various + * drag limitations that may be set. + * It is sent four arguments: + * {any} The Game Object that received the event. + * {Phaser.Pointer} The Phaser.Pointer object that caused the event. + * {number} The x coordinate that the drag started from. + * {number} The y coordinate that the drag started from. */ - onDragStart: Phaser.Signal; + onDragStart: Phaser.Signal; /** - * This signal is dispatched if the parent is inputEnabled and receives a drag stop event from a Pointer. + * This signal is dispatched if the Game Object has been `inputEnabled` and `enableDrag` has been set. + * It is sent when a Phaser.Pointer stops dragging the Game Object. + * It is sent two arguments: + * {any} The Game Object that received the event. + * {Phaser.Pointer} The Phaser.Pointer object that caused the event. */ - onDragStop: Phaser.Signal; + onDragStop: Phaser.Signal; /** - * This signal is dispatched if the parent is inputEnabled and receives a drag update event from a Pointer. + * This signal is dispatched if the Game Object has been `inputEnabled` and `enableDrag` has been set. + * It is sent when a Phaser.Pointer is actively dragging the Game Object. + * Be warned: This is a high volume Signal. Be careful what you bind to it. + * It is sent six arguments: + * {any} The Game Object that received the event. + * {Phaser.Pointer} The Phaser.Pointer object that caused the event. + * {number} The new x coordinate of the Game Object. + * {number} The new y coordinate of the Game Object. + * {Phaser.Point} A Point object that contains the point the Game Object was snapped to, if `snapOnDrag` has been enabled. + * {boolean} The `fromStart` boolean, indicates if this is the first update immediately after the drag has started. */ - onDragUpdate: Phaser.Signal; + onDragUpdate: Phaser.Signal; /** - * This signal is dispatched when the parent has an animation that is played. + * This signal is dispatched if the Game Object has the AnimationManager component, + * and an Animation has been played. + * You can also listen to `Animation.onStart` rather than via the Game Objects events. + * It is sent two arguments: + * {any} The Game Object that received the event. + * {Phaser.Animation} The Phaser.Animation that was started. */ - onAnimationStart: Phaser.Signal; + onAnimationStart: Phaser.Signal; /** - * This signal is dispatched when the parent has an animation that finishes playing. + * This signal is dispatched if the Game Object has the AnimationManager component, + * and an Animation has been stopped (via `animation.stop()` and the `dispatchComplete` argument has been set. + * You can also listen to `Animation.onComplete` rather than via the Game Objects events. + * It is sent two arguments: + * {any} The Game Object that received the event. + * {Phaser.Animation} The Phaser.Animation that was stopped. */ - onAnimationComplete: Phaser.Signal; + onAnimationComplete: Phaser.Signal; /** - * This signal is dispatched when the parent has an animation that loops playback. + * This signal is dispatched if the Game Object has the AnimationManager component, + * and an Animation has looped playback. + * You can also listen to `Animation.onLoop` rather than via the Game Objects events. + * It is sent two arguments: + * {any} The Game Object that received the event. + * {Phaser.Animation} The Phaser.Animation that looped. */ - onAnimationLoop: Phaser.Signal; - + onAnimationLoop: Phaser.Signal; + /** * Removes all events. */ - destroy(): void; - - } - + destroy(): void; + + } + /** * This is a base Filter class to use for any Phaser filter development. @@ -6354,8 +6490,8 @@ declare module Phaser { * The vast majority of filters (including all of those that ship with Phaser) use fragment shaders, and * therefore only work in WebGL and are not supported by Canvas at all. */ - class Filter extends PIXI.AbstractFilter { - + class Filter extends PIXI.AbstractFilter { + /** * This is a base Filter class to use for any Phaser filter development. @@ -6367,55 +6503,55 @@ declare module Phaser { * @param uniforms Uniform mappings object * @param fragmentSrc The fragment shader code. Either an array, one element per line of code, or a string. */ - constructor(game: Phaser.Game, uniforms: any, fragmentSrc: string | string[]); - + constructor(game: Phaser.Game, uniforms: any, fragmentSrc: string | string[]); + /** * Internal PIXI var. * Default: true */ - dirty: boolean; + dirty: boolean; /** * A reference to the currently running game. */ - game: Phaser.Game; + game: Phaser.Game; /** * The height (resolution uniform) */ - height: number; + height: number; /** * The fragment shader code. */ - fragmentSrc: string | string[]; + fragmentSrc: string | string[]; /** * Internal PIXI var. */ - padding: number; + padding: number; /** * The previous position of the pointer (we don't update the uniform if the same) */ - prevPoint: Phaser.Point; + prevPoint: Phaser.Point; /** * The const type of this object, either Phaser.WEBGL_FILTER or Phaser.CANVAS_FILTER. */ - type: number; + type: number; /** * Default uniform mappings. Compatible with ShaderToy and GLSLSandbox. */ - uniforms: any; + uniforms: any; /** * The width (resolution uniform) */ - width: number; - + width: number; + /** * Creates a new Phaser.Image object using a blank texture and assigns @@ -6434,18 +6570,18 @@ declare module Phaser { * @param anchorY Set the y anchor point of the Image. A value between 0 and 1, where 0 is the top-left and 1 is bottom-right. * @return The newly added Image object. */ - addToWorld(x?: number, y?: number, width?: number, height?: number, anchorX?: number, anchorY?: number): Phaser.Image; - apply(frameBuffer: WebGLFramebuffer): void; + addToWorld(x?: number, y?: number, width?: number, height?: number, anchorX?: number, anchorY?: number): Phaser.Image; + apply(frameBuffer: WebGLFramebuffer): void; /** * Clear down this Filter and null out references */ - destroy(): void; + destroy(): void; /** * Should be over-ridden. */ - init(...args: any[]): void; + init(...args: any[]): void; /** * Set the resolution uniforms on the filter. @@ -6453,176 +6589,176 @@ declare module Phaser { * @param width The width of the display. * @param height The height of the display. */ - setResolution(width: number, height: number): void; - syncUniforms(): void; + setResolution(width: number, height: number): void; + syncUniforms(): void; /** * Updates the filter. * * @param pointer A Pointer object to use for the filter. The coordinates are mapped to the mouse uniform. */ - update(pointer?: Phaser.Pointer): void; - - } - - module Filter { - - class BinarySerpents extends Phaser.Filter { - - constructor(game: Phaser.Game, width: number, height: number, march?: number, maxDistance?: number); - - fog: number; - - } - - class BlurX extends Phaser.Filter { - - blur: number; - - } - - class BlurY extends Phaser.Filter { - - blur: number; - - } - - class CausticLight extends Phaser.Filter { - - constructor(game: Phaser.Game, width: number, height: number, divisor?: number); - - init(width: number, height: number, divisor?: number): void; - - } - - class CheckerWave extends Phaser.Filter { - - constructor(game: Phaser.Game, width: number, height: number); - - alpha: number; - cameraX: number; - cameraY: number; - cameraZ: number; - - init(width: number, height: number): void; - setColor1(red: number, green: number, blue: number): void; - setColor2(red: number, green: number, blue: number): void; - - } - - class ColorBars extends Phaser.Filter { - - constructor(game: Phaser.Game, width: number, height: number); - - alpha: number; - - init(width: number, height: number): void; - - } - - class Fire extends Phaser.Filter { - - constructor(width: number, height: number, alpha?: number, shift?: number); - - alpha: number; - shift: number; - speed: number; - - init(width: number, height: number, alpha?: number, shift?: number): void; - - } - - class Gray extends Phaser.Filter { - - gray: number; - - } - - class HueRotate extends Phaser.Filter { - - constructor(game: Phaser.Game, width: number, height: number, texture: any); - - alpha: number; - - init(width: number, height: number, texture: any): void; - - } - - class LazerBeam extends Phaser.Filter { - - init(width: number, height: number, divisor?: number): void; - - } - - class LightBeam extends Phaser.Filter { - - constructor(game: Phaser.Game, width: number, height: number); - - alpha: number; - blue: number; - green: number; - red: number; - thickness: number; - speed: number; - - init(width: number, height: number): void; - - } - - class Marble extends Phaser.Filter { - - constructor(game: Phaser.Game, width: number, height: number, speed?: number, intensity?: number); - - alpha: number; - intensity: number; - speed: number; - - init(width: number, height: number, speed?: number, intensity?: number): void; - - } - - class Pixelate extends Phaser.Filter { - - size: number; - sizeX: number; - sizeY: number; - - } - - class Plasma extends Phaser.Filter { - - constructor(game: Phaser.Game, width: number, height: number, alpha?: number, size?: number); - - alpha: number; - blueShift: number; - greenShift: number; - redShift: number; - size: number; - - init(width: number, height: number, alpha?: number, size?: number): void; - - } - - class SampleFilter extends Phaser.Filter { - - constructor(game: Phaser.Game, width: number, height: number, divisor?: number); - - init(width: number, height: number, divisor?: number): void; - - } - - class Tunnel extends Phaser.Filter { - - constructor(game: Phaser.Game, width: number, height: number, texture: any); - - alpha: number; - origin: number; - - init(width: number, height: number, texture: any): void; - - } - } - + update(pointer?: Phaser.Pointer): void; + + } + + module Filter { + + class BinarySerpents extends Phaser.Filter { + + constructor(game: Phaser.Game, width: number, height: number, march?: number, maxDistance?: number); + + fog: number; + + } + + class BlurX extends Phaser.Filter { + + blur: number; + + } + + class BlurY extends Phaser.Filter { + + blur: number; + + } + + class CausticLight extends Phaser.Filter { + + constructor(game: Phaser.Game, width: number, height: number, divisor?: number); + + init(width: number, height: number, divisor?: number): void; + + } + + class CheckerWave extends Phaser.Filter { + + constructor(game: Phaser.Game, width: number, height: number); + + alpha: number; + cameraX: number; + cameraY: number; + cameraZ: number; + + init(width: number, height: number): void; + setColor1(red: number, green: number, blue: number): void; + setColor2(red: number, green: number, blue: number): void; + + } + + class ColorBars extends Phaser.Filter { + + constructor(game: Phaser.Game, width: number, height: number); + + alpha: number; + + init(width: number, height: number): void; + + } + + class Fire extends Phaser.Filter { + + constructor(width: number, height: number, alpha?: number, shift?: number); + + alpha: number; + shift: number; + speed: number; + + init(width: number, height: number, alpha?: number, shift?: number): void; + + } + + class Gray extends Phaser.Filter { + + gray: number; + + } + + class HueRotate extends Phaser.Filter { + + constructor(game: Phaser.Game, width: number, height: number, texture: any); + + alpha: number; + + init(width: number, height: number, texture: any): void; + + } + + class LazerBeam extends Phaser.Filter { + + init(width: number, height: number, divisor?: number): void; + + } + + class LightBeam extends Phaser.Filter { + + constructor(game: Phaser.Game, width: number, height: number); + + alpha: number; + blue: number; + green: number; + red: number; + thickness: number; + speed: number; + + init(width: number, height: number): void; + + } + + class Marble extends Phaser.Filter { + + constructor(game: Phaser.Game, width: number, height: number, speed?: number, intensity?: number); + + alpha: number; + intensity: number; + speed: number; + + init(width: number, height: number, speed?: number, intensity?: number): void; + + } + + class Pixelate extends Phaser.Filter { + + size: number; + sizeX: number; + sizeY: number; + + } + + class Plasma extends Phaser.Filter { + + constructor(game: Phaser.Game, width: number, height: number, alpha?: number, size?: number); + + alpha: number; + blueShift: number; + greenShift: number; + redShift: number; + size: number; + + init(width: number, height: number, alpha?: number, size?: number): void; + + } + + class SampleFilter extends Phaser.Filter { + + constructor(game: Phaser.Game, width: number, height: number, divisor?: number); + + init(width: number, height: number, divisor?: number): void; + + } + + class Tunnel extends Phaser.Filter { + + constructor(game: Phaser.Game, width: number, height: number, texture: any); + + alpha: number; + origin: number; + + init(width: number, height: number, texture: any): void; + + } + } + /** * WARNING: This is an EXPERIMENTAL class. The API will change significantly in the coming versions and is incomplete. @@ -6632,8 +6768,8 @@ declare module Phaser { * FlexGrid is a a responsive grid manager that works in conjunction with the ScaleManager RESIZE scaling mode and FlexLayers * to provide for game object positioning in a responsive manner. */ - class FlexGrid { - + class FlexGrid { + /** * WARNING: This is an EXPERIMENTAL class. The API will change significantly in the coming versions and is incomplete. @@ -6647,49 +6783,49 @@ declare module Phaser { * @param width The width of the game. * @param height The height of the game. */ - constructor(manager: Phaser.ScaleManager, width: number, height: number); - + constructor(manager: Phaser.ScaleManager, width: number, height: number); + /** * A reference to the currently running Game. */ - game: Phaser.Game; + game: Phaser.Game; /** * A reference to the ScaleManager. */ - manager: Phaser.ScaleManager; - width: number; - height: number; - boundsCustom: Phaser.Rectangle; - boundsFluid: Phaser.Rectangle; - boundsFull: Phaser.Rectangle; - boundsNone: Phaser.Rectangle; - customWidth: number; - customHeight: number; - customOffsetX: number; - customOffsetY: number; + manager: Phaser.ScaleManager; + width: number; + height: number; + boundsCustom: Phaser.Rectangle; + boundsFluid: Phaser.Rectangle; + boundsFull: Phaser.Rectangle; + boundsNone: Phaser.Rectangle; + customWidth: number; + customHeight: number; + customOffsetX: number; + customOffsetY: number; /** * - */ - positionCustom: Phaser.Point; - positionFluid: Phaser.Point; - positionFull: Phaser.Point; - positionNone: Phaser.Point; + positionCustom: Phaser.Point; + positionFluid: Phaser.Point; + positionFull: Phaser.Point; + positionNone: Phaser.Point; /** * The scale factor based on the game dimensions vs. the scaled dimensions. */ - scaleCustom: Phaser.Point; - scaleFluid: Phaser.Point; - scaleFluidInversed: Phaser.Point; - scaleFull: Phaser.Point; - scaleNone: Phaser.Point; - ratioH: number; - ratioV: number; - multiplier: number; - + scaleCustom: Phaser.Point; + scaleFluid: Phaser.Point; + scaleFluidInversed: Phaser.Point; + scaleFull: Phaser.Point; + scaleNone: Phaser.Point; + ratioH: number; + ratioV: number; + multiplier: number; + /** * A custom layer is centered on the game and maintains its aspect ratio as it scales up and down. @@ -6699,7 +6835,7 @@ declare module Phaser { * @param children An array of children that are used to populate the FlexLayer. * @return The Layer object. */ - createCustomLayer(width: number, height: number, children?: PIXI.DisplayObject[], addToWorld?: boolean): Phaser.FlexLayer; + createCustomLayer(width: number, height: number, children?: PIXI.DisplayObject[], addToWorld?: boolean): Phaser.FlexLayer; /** * A fluid layer is centered on the game and maintains its aspect ratio as it scales up and down. @@ -6707,7 +6843,7 @@ declare module Phaser { * @param children An array of children that are used to populate the FlexLayer. * @return The Layer object. */ - createFluidLayer(children: PIXI.DisplayObject[]): Phaser.FlexLayer; + createFluidLayer(children: PIXI.DisplayObject[]): Phaser.FlexLayer; /** * A full layer is placed at 0,0 and extends to the full size of the game. Children are scaled according to the fluid ratios. @@ -6715,7 +6851,7 @@ declare module Phaser { * @param children An array of children that are used to populate the FlexLayer. * @return The Layer object. */ - createFullLayer(children: PIXI.DisplayObject[]): Phaser.FlexLayer; + createFullLayer(children: PIXI.DisplayObject[]): Phaser.FlexLayer; /** * A fixed layer is centered on the game and is the size of the required dimensions and is never scaled. @@ -6723,19 +6859,19 @@ declare module Phaser { * @param children An array of children that are used to populate the FlexLayer. * @return The Layer object. */ - createFixedLayer(children: PIXI.DisplayObject[]): Phaser.FlexLayer; + createFixedLayer(children: PIXI.DisplayObject[]): Phaser.FlexLayer; /** * Call in the render function to output the bounds rects. */ - debug(): void; + debug(): void; /** * Fits a sprites width to the bounds. * * @param sprite The Sprite to fit. */ - fitSprite(sprite: Phaser.Sprite): void; + fitSprite(sprite: Phaser.Sprite): void; /** * Called when the game container changes dimensions. @@ -6743,17 +6879,17 @@ declare module Phaser { * @param width The new width of the game container. * @param height The new height of the game container. */ - onResize(width: number, height: number): void; + onResize(width: number, height: number): void; /** * Updates all internal vars such as the bounds and scale values. */ - refresh(): void; + refresh(): void; /** * Resets the layer children references */ - reset(): void; + reset(): void; /** * Sets the core game size. This resets the w/h parameters and bounds. @@ -6761,10 +6897,10 @@ declare module Phaser { * @param width The new dimensions. * @param height The new dimensions. */ - setSize(width: number, height: number): void; - - } - + setSize(width: number, height: number): void; + + } + /** * WARNING: This is an EXPERIMENTAL class. The API will change significantly in the coming versions and is incomplete. @@ -6773,8 +6909,8 @@ declare module Phaser { * * A responsive grid layer. */ - class FlexLayer extends Phaser.Group { - + class FlexLayer extends Phaser.Group { + /** * WARNING: This is an EXPERIMENTAL class. The API will change significantly in the coming versions and is incomplete. @@ -6788,53 +6924,53 @@ declare module Phaser { * @param bounds A reference to the Rectangle used for the layer bounds. * @param scale A reference to the Point object used for layer scaling. */ - constructor(manager: Phaser.ScaleManager, position: Phaser.Point, bounds: Phaser.Rectangle, scale: Phaser.Point); - + constructor(manager: Phaser.ScaleManager, position: Phaser.Point, bounds: Phaser.Rectangle, scale: Phaser.Point); + /** * A reference to the FlexGrid that owns this layer. */ - grid: Phaser.FlexGrid; + grid: Phaser.FlexGrid; /** * A reference to the ScaleManager. */ - manager: Phaser.ScaleManager; - - bottomLeft: Phaser.Point; - bottomMiddle: Phaser.Point; - bottomRight: Phaser.Point; - bounds: Phaser.Rectangle; + manager: Phaser.ScaleManager; + + bottomLeft: Phaser.Point; + bottomMiddle: Phaser.Point; + bottomRight: Phaser.Point; + bounds: Phaser.Rectangle; /** * Should the FlexLayer remain through a State swap? */ - persist: boolean; - position: Phaser.Point; - scale: Phaser.Point; - topLeft: Phaser.Point; - topMiddle: Phaser.Point; - topRight: Phaser.Point; - + persist: boolean; + position: Phaser.Point; + scale: Phaser.Point; + topLeft: Phaser.Point; + topMiddle: Phaser.Point; + topRight: Phaser.Point; + /** * Debug. */ - debug(): void; + debug(): void; /** * Resize. */ - resize(): void; - - } - + resize(): void; + + } + /** * A Frame is a single frame of an animation and is part of a FrameData collection. */ - class Frame { - + class Frame { + /** * A Frame is a single frame of an animation and is part of a FrameData collection. @@ -6846,118 +6982,118 @@ declare module Phaser { * @param height Height of the frame within the texture image. * @param name The name of the frame. In Texture Atlas data this is usually set to the filename. */ - constructor(index: number, x: number, y: number, width: number, height: number, name: string); - + constructor(index: number, x: number, y: number, width: number, height: number, name: string); + /** * The bottom of the frame (y + height). */ - bottom: number; + bottom: number; /** * Center X position within the image to cut from. */ - centerX: number; + centerX: number; /** * Center Y position within the image to cut from. */ - centerY: number; + centerY: number; /** * The distance from the top left to the bottom-right of this Frame. */ - distance: number; + distance: number; /** * Height of the frame. */ - height: number; + height: number; /** * The index of this Frame within the FrameData set it is being added to. */ - index: number; + index: number; /** * Useful for Texture Atlas files (is set to the filename value). */ - name: string; + name: string; /** * The right of the Frame (x + width). */ - right: number; + right: number; /** * Rotated? (not yet implemented) */ - rotated: boolean; + rotated: boolean; /** * Either 'cw' or 'ccw', rotation is always 90 degrees. * Default: 'cw' */ - rotationDirection: string; + rotationDirection: string; /** * Height of the original sprite before it was trimmed. */ - sourceSizeH: number; + sourceSizeH: number; /** * Width of the original sprite before it was trimmed. */ - sourceSizeW: number; + sourceSizeW: number; /** * Height of the trimmed sprite. */ - spriteSourceSizeH: number; + spriteSourceSizeH: number; /** * Width of the trimmed sprite. */ - spriteSourceSizeW: number; + spriteSourceSizeW: number; /** * X position of the trimmed sprite inside original sprite. */ - spriteSourceSizeX: number; + spriteSourceSizeX: number; /** * Y position of the trimmed sprite inside original sprite. */ - spriteSourceSizeY: number; + spriteSourceSizeY: number; /** * Was it trimmed when packed? */ - trimmed: boolean; - uuid: string; + trimmed: boolean; + uuid: string; /** * Width of the frame. */ - width: number; + width: number; /** * X position within the image to cut from. */ - x: number; + x: number; /** * Y position within the image to cut from. */ - y: number; - + y: number; + /** * Clones this Frame into a new Phaser.Frame object and returns it. * Note that all properties are cloned, including the name, index and UUID. * @return An exact copy of this Frame object. */ - clone(): Phaser.Frame; + clone(): Phaser.Frame; /** * Returns a Rectangle set to the dimensions of this Frame. @@ -6965,7 +7101,7 @@ declare module Phaser { * @param out A rectangle to copy the frame dimensions to. * @return A rectangle. */ - getRect(out?: Phaser.Rectangle): Phaser.Rectangle; + getRect(out?: Phaser.Rectangle): Phaser.Rectangle; /** * If the frame was trimmed when added to the Texture Atlas this records the trim and source data. @@ -6978,7 +7114,7 @@ declare module Phaser { * @param destWidth The destination width of the trimmed frame for display. * @param destHeight The destination height of the trimmed frame for display. */ - setTrim(trimmed: boolean, actualWidth: number, actualHeight: number, destX: number, destY: number, destWidth: number, destHeight: number): void; + setTrim(trimmed: boolean, actualWidth: number, actualHeight: number, destX: number, destY: number, destWidth: number, destHeight: number): void; /** * Adjusts of all the Frame properties based on the given width and height values. @@ -6986,22 +7122,22 @@ declare module Phaser { * @param width The new width of the Frame. * @param height The new height of the Frame. */ - resize(width: number, height: number): void; - - } - + resize(width: number, height: number): void; + + } + /** * FrameData is a container for Frame objects, which are the internal representation of animation data in Phaser. */ - class FrameData { - + class FrameData { + /** * The total number of frames in this FrameData set. */ - total: number; - + total: number; + /** * Adds a new Frame to this FrameData collection. Typically called by the Animation.Parser and not directly. @@ -7009,7 +7145,7 @@ declare module Phaser { * @param frame The frame to add to this FrameData set. * @return The frame that was just added. */ - addFrame(frame: Frame): Phaser.Frame; + addFrame(frame: Frame): Phaser.Frame; /** * Check if there is a Frame with the given name. @@ -7017,13 +7153,13 @@ declare module Phaser { * @param name The name of the frame you want to check. * @return True if the frame is found, otherwise false. */ - checkFrameName(name: string): boolean; + checkFrameName(name: string): boolean; /** * Makes a copy of this FrameData including copies (not references) to all of the Frames it contains. * @return A clone of this object, including clones of the Frame objects it contains. */ - clone(): Phaser.FrameData; + clone(): Phaser.FrameData; /** * Get a Frame by its numerical index. @@ -7031,7 +7167,7 @@ declare module Phaser { * @param index The index of the frame you want to get. * @return The frame, if found. */ - getFrame(index: number): Phaser.Frame; + getFrame(index: number): Phaser.Frame; /** * Get a Frame by its frame name. @@ -7039,7 +7175,7 @@ declare module Phaser { * @param name The name of the frame you want to get. * @return The frame, if found. */ - getFrameByName(name: string): Phaser.Frame; + getFrameByName(name: string): Phaser.Frame; /** * Returns all of the Frame indexes in this FrameData set. @@ -7050,7 +7186,7 @@ declare module Phaser { * @param output If given the results will be appended to the end of this array otherwise a new array will be created. * @return An array of all Frame indexes matching the given names or IDs. */ - getFrameIndexes(frames?: number[], useNumericIndex?: boolean, output?: number[]): number[]; + getFrameIndexes(frames?: number[], useNumericIndex?: boolean, output?: number[]): number[]; /** * Returns a range of frames based on the given start and end frame indexes and returns them in an Array. @@ -7060,7 +7196,7 @@ declare module Phaser { * @param output If given the results will be appended to the end of this array otherwise a new array will be created. * @return An array of Frames between the start and end index values, or an empty array if none were found. */ - getFrameRange(start: number, end: number, output: Phaser.Frame[]): Phaser.Frame[]; + getFrameRange(start: number, end: number, output: Phaser.Frame[]): Phaser.Frame[]; /** * Returns all of the Frames in this FrameData set where the frame index is found in the input array. @@ -7071,27 +7207,27 @@ declare module Phaser { * @param output If given the results will be appended to the end of this array otherwise a new array will be created. * @return An array of all Frames in this FrameData set matching the given names or IDs. */ - getFrames(frames?: number[], useNumericIndex?: boolean, output?: Phaser.Frame[]): Phaser.Frame[]; - - } - - interface IGameConfig { - - enableDebug?: boolean; - width?: number; - height?: number; - renderer?: number; - parent?: any; - transparent?: boolean; - antialias?: boolean; - resolution?: number; - preserveDrawingBuffer?: boolean; - physicsConfig?: any; - seed?: string; - state?: Phaser.State; - - } - + getFrames(frames?: number[], useNumericIndex?: boolean, output?: Phaser.Frame[]): Phaser.Frame[]; + + } + + interface IGameConfig { + + enableDebug?: boolean; + width?: number; + height?: number; + renderer?: number; + parent?: any; + transparent?: boolean; + antialias?: boolean; + resolution?: number; + preserveDrawingBuffer?: boolean; + physicsConfig?: any; + seed?: string; + state?: Phaser.State; + + } + /** * This is where the magic happens. The Game object is the heart of your game, @@ -7100,8 +7236,8 @@ declare module Phaser { * "Hell, there are no rules here - we're trying to accomplish something." * Thomas A. Edison */ - class Game { - + class Game { + /** * This is where the magic happens. The Game object is the heart of your game, @@ -7119,7 +7255,7 @@ declare module Phaser { * @param antialias Draw all image textures anti-aliased or not. The default is for smooth textures, but disable if your game features pixel art. - Default: true * @param physicsConfig A physics configuration object to pass to the Physics world on creation. */ - constructor(width?: number | string, height?: number | string, renderer?: number, parent?: any, state?: any, transparent?: boolean, antialias?: boolean, physicsConfig?: any); + constructor(width?: number | string, height?: number | string, renderer?: number, parent?: any, state?: any, transparent?: boolean, antialias?: boolean, physicsConfig?: any); /** * This is where the magic happens. The Game object is the heart of your game, @@ -7137,78 +7273,78 @@ declare module Phaser { * @param antialias Draw all image textures anti-aliased or not. The default is for smooth textures, but disable if your game features pixel art. - Default: true * @param physicsConfig A physics configuration object to pass to the Physics world on creation. */ - constructor(config: IGameConfig); - + constructor(config: IGameConfig); + /** * Reference to the Phaser.GameObjectFactory. */ - add: Phaser.GameObjectFactory; + add: Phaser.GameObjectFactory; /** * Anti-alias graphics. By default scaled images are smoothed in Canvas and WebGL, set anti-alias to false to disable this globally. * Default: true */ - antialias: boolean; + antialias: boolean; /** * Reference to the assets cache. */ - cache: Phaser.Cache; + cache: Phaser.Cache; /** * A handy reference to world.camera. */ - camera: Phaser.Camera; + camera: Phaser.Camera; /** * A handy reference to renderer.view, the canvas that the game is being rendered in to. */ - canvas: HTMLCanvasElement; + canvas: HTMLCanvasElement; /** * Clear the Canvas each frame before rendering the display list. * You can set this to `false` to gain some performance if your game always contains a background that completely fills the display. * Default: true */ - clearBeforeRender: boolean; + clearBeforeRender: boolean; /** * The Phaser.Game configuration object. */ - config: IGameConfig; + config: IGameConfig; /** * A handy reference to renderer.context (only set for CANVAS games, not WebGL) */ - context: CanvasRenderingContext2D; - count: number; + context: CanvasRenderingContext2D; + count: number; /** * The Asset Generator. */ - create: Phaser.Create; + create: Phaser.Create; /** * A set of useful debug utilities. */ - debug: Phaser.Utils.Debug; + debug: Phaser.Utils.Debug; /** * Contains device information and capabilities. */ - device: Phaser.Device; + device: Phaser.Device; /** * Should the game loop force a logic update, regardless of the delta timer? Set to true if you know you need this. You can toggle it on the fly. */ - forceSingleUpdate: boolean; + forceSingleUpdate: boolean; /** * If the game is struggling to maintain the desired FPS, this signal will be dispatched. * The desired/chosen FPS should probably be closer to the {@link Phaser.Time#suggestedFps} value. */ - fpsProblemNotifier: Phaser.Signal; + fpsProblemNotifier: Phaser.Signal; /** * The current Game Height in pixels. @@ -7216,198 +7352,198 @@ declare module Phaser { * _Do not modify this property directly:_ use {@link Phaser.ScaleManager#setGameSize} - eg. `game.scale.setGameSize(width, height)` - instead. * Default: 600 */ - height: number; + height: number; /** * Phaser Game ID (for when Pixi supports multiple instances). */ - id: number; + id: number; /** * Reference to the input manager */ - input: Phaser.Input; + input: Phaser.Input; /** * Whether the game engine is booted, aka available. */ - isBooted: boolean; + isBooted: boolean; /** * Is game running or paused? */ - isRunning: boolean; + isRunning: boolean; /** * Reference to the assets loader. */ - load: Phaser.Loader; + load: Phaser.Loader; /** * If `false` Phaser will automatically render the display list every update. If `true` the render loop will be skipped. * You can toggle this value at run-time to gain exact control over when Phaser renders. This can be useful in certain types of game or application. * Please note that if you don't render the display list then none of the game object transforms will be updated, so use this value carefully. */ - lockRender: boolean; + lockRender: boolean; /** * Reference to the GameObject Creator. */ - make: Phaser.GameObjectCreator; + make: Phaser.GameObjectCreator; /** * Reference to the math helper. */ - math: Phaser.Math; + math: Phaser.Math; /** * Reference to the network class. */ - net: Phaser.Net; + net: Phaser.Net; /** * This event is fired when the game no longer has focus (typically on page hide). */ - onBlur: Phaser.Signal; + onBlur: Phaser.Signal; /** * This event is fired when the game has focus (typically on page show). */ - onFocus: Phaser.Signal; + onFocus: Phaser.Signal; /** * This event is fired when the game pauses. */ - onPause: Phaser.Signal; + onPause: Phaser.Signal; /** * This event is fired when the game resumes from a paused state. */ - onResume: Phaser.Signal; + onResume: Phaser.Signal; /** * The Games DOM parent. */ - parent: HTMLElement; + parent: HTMLElement; /** * The Particle Manager. */ - particles: Phaser.Particles; + particles: Phaser.Particles; /** * The paused state of the Game. A paused game doesn't update any of its subsystems. * When a game is paused the onPause event is dispatched. When it is resumed the onResume event is dispatched. Gets and sets the paused state of the Game. */ - paused: boolean; + paused: boolean; /** * An internal property used by enableStep, but also useful to query from your own game objects. */ - pendingStep: boolean; + pendingStep: boolean; /** * Reference to the physics manager. */ - physics: Phaser.Physics; + physics: Phaser.Physics; /** * The Phaser.Physics.World configuration object. */ - physicsConfig: any; + physicsConfig: any; /** * Reference to the plugin manager. */ - plugins: PluginManager; + plugins: PluginManager; /** * The value of the preserveDrawingBuffer flag affects whether or not the contents of the stencil buffer is retained after rendering. */ - preserveDrawingBuffer: Boolean; + preserveDrawingBuffer: Boolean; /** * Automatically handles the core game loop via requestAnimationFrame or setTimeout */ - raf: Phaser.RequestAnimationFrame; + raf: Phaser.RequestAnimationFrame; /** * The Pixi Renderer. */ - renderer: PIXI.CanvasRenderer | PIXI.WebGLRenderer; + renderer: PIXI.CanvasRenderer | PIXI.WebGLRenderer; /** * The Renderer this game will use. Either Phaser.AUTO, Phaser.CANVAS, Phaser.WEBGL, or Phaser.HEADLESS. */ - renderType: number; + renderType: number; /** * The resolution of your game. This value is read only, but can be changed at start time it via a game configuration object. * Default: 1 */ - resolution: number; + resolution: number; /** * Instance of repeatable random data generator helper. */ - rnd: Phaser.RandomDataGenerator; + rnd: Phaser.RandomDataGenerator; /** * The game scale manager. */ - scale: Phaser.ScaleManager; - scratch: Phaser.BitmapData; + scale: Phaser.ScaleManager; + scratch: Phaser.BitmapData; /** * Reference to the sound manager. */ - sound: Phaser.SoundManager; + sound: Phaser.SoundManager; /** * Reference to the stage. */ - stage: Phaser.Stage; + stage: Phaser.Stage; /** * The StateManager. */ - state: Phaser.StateManager; + state: Phaser.StateManager; /** * When stepping is enabled this contains the current step cycle. */ - stepCount: number; + stepCount: number; /** * Enable core loop stepping with Game.enableStep(). */ - stepping: boolean; + stepping: boolean; /** * Reference to the core game clock. */ - time: Phaser.Time; + time: Phaser.Time; /** * Use a transparent canvas background or not. */ - transparent: boolean; + transparent: boolean; /** * Reference to the tween manager. */ - tweens: Phaser.TweenManager; + tweens: Phaser.TweenManager; /** * The ID of the current/last logic update applied this render frame, starting from 0. * The first update is `currentUpdateID === 0` and the last update is `currentUpdateID === updatesThisFrame.` */ - currentUpdateID: number; + currentUpdateID: number; /** * Number of logic updates expected to occur this render frame; will be 1 unless there are catch-ups required (and allowed). */ - updatesThisFrame: number; + updatesThisFrame: number; /** * The current Game Width in pixels. @@ -7415,18 +7551,18 @@ declare module Phaser { * _Do not modify this property directly:_ use {@link Phaser.ScaleManager#setGameSize} - eg. `game.scale.setGameSize(width, height)` - instead. * Default: 800 */ - width: number; + width: number; /** * Reference to the world. */ - world: Phaser.World; - + world: Phaser.World; + /** * Initialize engine sub modules and start the game. */ - boot(): void; + boot(): void; /** * Nukes the entire game from orbit. @@ -7436,82 +7572,82 @@ declare module Phaser { * Then sets all of those local handlers to null, destroys the renderer, removes the canvas from the DOM * and resets the PIXI default renderer. */ - destroy(): void; + destroy(): void; /** * Disables core game loop stepping. */ - disableStep(): void; + disableStep(): void; /** * Enable core game loop stepping. When enabled you must call game.step() directly (perhaps via a DOM button?) * Calling step will advance the game loop by one frame. This is extremely useful for hard to track down errors! */ - enableStep(): void; + enableStep(): void; /** * Called by the Stage visibility handler. * * @param event The DOM event that caused the game to pause, if any. */ - focusGain(event: any): void; + focusGain(event: any): void; /** * Called by the Stage visibility handler. * * @param event The DOM event that caused the game to pause, if any. */ - focusLoss(event: any): void; + focusLoss(event: any): void; /** * Called by the Stage visibility handler. * * @param event The DOM event that caused the game to pause, if any. */ - gamePaused(event: any): void; + gamePaused(event: any): void; /** * Called by the Stage visibility handler. * * @param event The DOM event that caused the game to pause, if any. */ - gameResumed(event: any): void; + gameResumed(event: any): void; /** * Parses a Game configuration object. */ - parseConfig(config: any): void; - removeFromDOM(canvas: HTMLCanvasElement): void; + parseConfig(config: any): void; + removeFromDOM(canvas: HTMLCanvasElement): void; /** * Checks if the device is capable of using the requested renderer and sets it up or an alternative if not. */ - setUpRenderer(): void; + setUpRenderer(): void; /** * Displays a Phaser version debug header in the console. */ - showDebugHeader(): void; + showDebugHeader(): void; /** * When stepping is enabled you must call this function directly (perhaps via a DOM button?) to advance the game loop by one frame. * This is extremely useful to hard to track down errors! Use the internal stepCount property to monitor progress. */ - step(): void; + step(): void; /** * The core game loop. * * @param time The current time as provided by RequestAnimationFrame. */ - update(time: number): void; + update(time: number): void; /** * Updates all logic subsystems in Phaser. Called automatically by Game.update. * * @param timeStep The current timeStep value as determined by Game.update. */ - updateLogic(timeStep: number): void; + updateLogic(timeStep: number): void; /** * Runs the Render cycle. @@ -7526,17 +7662,17 @@ declare module Phaser { * * @param elapsedTime The time elapsed since the last update. */ - updateRender(timeStep: number): void; - - } - + updateRender(timeStep: number): void; + + } + /** * The GameObjectCreator is a quick way to create common game objects _without_ adding them to the game world. * The object creator can be accessed with {@linkcode Phaser.Game#make `game.make`}. */ - class GameObjectCreator { - + class GameObjectCreator { + /** * The GameObjectCreator is a quick way to create common game objects _without_ adding them to the game world. @@ -7544,19 +7680,19 @@ declare module Phaser { * * @param game A reference to the currently running game. */ - constructor(game: Phaser.Game); - + constructor(game: Phaser.Game); + /** * A reference to the currently running Game. */ - game: Phaser.Game; + game: Phaser.Game; /** * A reference to the game world. */ - world: Phaser.World; - + world: Phaser.World; + /** * Creates a new Sound object. @@ -7567,7 +7703,7 @@ declare module Phaser { * @param connect Controls if the created Sound object will connect to the master gainNode of the SoundManager when running under WebAudio. - Default: true * @return The newly created text object. */ - audio(key: string, volume?: number, loop?: boolean, connect?: boolean): Phaser.Sound; + audio(key: string, volume?: number, loop?: boolean, connect?: boolean): Phaser.Sound; /** * Creates a new AudioSprite object. @@ -7575,7 +7711,7 @@ declare module Phaser { * @param key The Game.cache key of the sound that this object will use. * @return The newly created AudioSprite object. */ - audioSprite(key: string): Phaser.AudioSprite; + audioSprite(key: string): Phaser.AudioSprite; /** * Create a BitmpaData object. @@ -7588,7 +7724,7 @@ declare module Phaser { * @param addToCache Should this BitmapData be added to the Game.Cache? If so you can retrieve it with Cache.getBitmapData(key) * @return The newly created BitmapData object. */ - bitmapData(width?: number, height?: number, key?: string, addToCache?: boolean): Phaser.BitmapData; + bitmapData(width?: number, height?: number, key?: string, addToCache?: boolean): Phaser.BitmapData; /** * Create a new BitmapText object. @@ -7617,7 +7753,7 @@ declare module Phaser { * @param align The alignment of multi-line text. Has no effect if there is only one line of text. - Default: 'left' * @return The newly created bitmapText object. */ - bitmapText(x: number, y: number, font: string, text?: string, size?: number, align?: string): Phaser.BitmapText; + bitmapText(x: number, y: number, font: string, text?: string, size?: number, align?: string): Phaser.BitmapText; /** * Creates a new Button object. @@ -7633,7 +7769,7 @@ declare module Phaser { * @param upFrame This is the frame or frameName that will be set when this button is in an up state. Give either a number to use a frame ID or a string for a frame name. * @return The newly created button object. */ - button(x?: number, y?: number, key?: string, callback?: Function, callbackContext?: any, overFrame?: any, outFrame?: any, downFrame?: any, upFrame?: any): Phaser.Button; + button(x?: number, y?: number, key?: string, callback?: Function, callbackContext?: any, overFrame?: any, outFrame?: any, downFrame?: any, upFrame?: any): Phaser.Button; /** * Creat a new Emitter. @@ -7647,7 +7783,7 @@ declare module Phaser { * @param maxParticles The total number of particles in this emitter. - Default: 50 * @return The newly created emitter object. */ - emitter(x?: number, y?: number, maxParticles?: number): Phaser.Particles.Arcade.Emitter; + emitter(x?: number, y?: number, maxParticles?: number): Phaser.Particles.Arcade.Emitter; /** * A WebGL shader/filter that can be applied to Sprites. @@ -7656,7 +7792,7 @@ declare module Phaser { * @param undefined Whatever parameters are needed to be passed to the filter init function. * @return The newly created Phaser.Filter object. */ - filter(filter: any, ...args: any[]): Phaser.Filter; + filter(filter: any, ...args: any[]): Phaser.Filter; /** * Creates a new Graphics object. @@ -7665,7 +7801,7 @@ declare module Phaser { * @param y Y position of the new graphics object. * @return The newly created graphics object. */ - graphics(x?: number, y?: number): Phaser.Graphics; + graphics(x?: number, y?: number): Phaser.Graphics; /** * A Group is a container for display objects that allows for fast pooling, recycling and collision checks. @@ -7677,7 +7813,7 @@ declare module Phaser { * @param physicsBodyType If enableBody is true this is the type of physics body that is created on new Sprites. Phaser.Physics.ARCADE, Phaser.Physics.P2, Phaser.Physics.NINJA, etc. * @return The newly created Group. */ - group(parent?: any, name?: string, addToStage?: boolean, enableBody?: boolean, physicsBodyType?: number): Phaser.Group; + group(parent?: any, name?: string, addToStage?: boolean, enableBody?: boolean, physicsBodyType?: number): Phaser.Group; /** * Create a new Image object. @@ -7691,7 +7827,7 @@ declare module Phaser { * @param frame If the sprite uses an image from a texture atlas or sprite sheet you can pass the frame here. Either a number for a frame ID or a string for a frame name. * @return the newly created sprite object. */ - image(x: number, y: number, key?: any, frame?: any): Phaser.Image; + image(x: number, y: number, key?: any, frame?: any): Phaser.Image; /** * A dynamic initially blank canvas to which images can be drawn. @@ -7702,7 +7838,7 @@ declare module Phaser { * @param addToCache Should this RenderTexture be added to the Game.Cache? If so you can retrieve it with Cache.getTexture(key) * @return The newly created RenderTexture object. */ - renderTexture(width?: number, height?: number, key?: any, addToCache?: boolean): Phaser.RenderTexture; + renderTexture(width?: number, height?: number, key?: any, addToCache?: boolean): Phaser.RenderTexture; /** * Create a new RetroFont object. @@ -7725,7 +7861,7 @@ declare module Phaser { * @param yOffset If the font set doesn't start at the top left of the given image, specify the Y coordinate offset here. * @return The newly created RetroFont texture which can be applied to an Image or Sprite. */ - retroFont(font: string, characterWidth: number, characterHeight: number, chars: string, charsPerRow: number, xSpacing?: number, ySpacing?: number, xOffset?: number, yOffset?: number): Phaser.RetroFont; + retroFont(font: string, characterWidth: number, characterHeight: number, chars: string, charsPerRow: number, xSpacing?: number, ySpacing?: number, xOffset?: number, yOffset?: number): Phaser.RetroFont; /** * Creates a new Rope object. @@ -7738,7 +7874,7 @@ declare module Phaser { * @param frame If this Rope is using part of a sprite sheet or texture atlas you can specify the exact frame to use by giving a string or numeric index. * @return The newly created rope object. */ - rope(x: number, y: number, key: any, frame?: any, points?: Phaser.Point[]): Phaser.Rope; + rope(x: number, y: number, key: any, frame?: any, points?: Phaser.Point[]): Phaser.Rope; /** * Creates a new Sound object. @@ -7749,7 +7885,7 @@ declare module Phaser { * @param connect Controls if the created Sound object will connect to the master gainNode of the SoundManager when running under WebAudio. - Default: true * @return The newly created text object. */ - sound(key: string, volume?: number, loop?: boolean, connect?: boolean): Phaser.Sound; + sound(key: string, volume?: number, loop?: boolean, connect?: boolean): Phaser.Sound; /** * Create a new Sprite with specific position and sprite sheet key. @@ -7760,7 +7896,7 @@ declare module Phaser { * @param frame If the sprite uses an image from a texture atlas or sprite sheet you can pass the frame here. Either a number for a frame ID or a string for a frame name. * @return the newly created sprite object. */ - sprite(x: number, y: number, key?: any, frame?: any): Phaser.Sprite; + sprite(x: number, y: number, key?: any, frame?: any): Phaser.Sprite; /** * Create a new SpriteBatch. @@ -7770,7 +7906,7 @@ declare module Phaser { * @param addToStage If set to true this Group will be added directly to the Game.Stage instead of Game.World. * @return The newly created group. */ - spriteBatch(parent: any, name?: String, addToStage?: boolean): Phaser.SpriteBatch; + spriteBatch(parent: any, name?: String, addToStage?: boolean): Phaser.SpriteBatch; /** * Creates a new Text object. @@ -7781,7 +7917,7 @@ declare module Phaser { * @param style The style object containing style attributes like font, font size , etc. * @return The newly created text object. */ - text(x: number, y: number, text?: string, style?: any): Phaser.Text; + text(x: number, y: number, text?: string, style?: any): Phaser.Text; /** * Creates a new Phaser.Tilemap object. @@ -7798,7 +7934,7 @@ declare module Phaser { * @param width The width of the map in tiles. If this map is created from Tiled or CSV data you don't need to specify this. - Default: 10 * @param height The height of the map in tiles. If this map is created from Tiled or CSV data you don't need to specify this. - Default: 10 */ - tilemap(key: string, tileWidth?: number, tileHeight?: number, width?: number, height?: number): Phaser.Tilemap; + tilemap(key: string, tileWidth?: number, tileHeight?: number, width?: number, height?: number): Phaser.Tilemap; /** * Creates a new TileSprite object. @@ -7811,7 +7947,7 @@ declare module Phaser { * @param frame If this TileSprite is using part of a sprite sheet or texture atlas you can specify the exact frame to use by giving a string or numeric index. * @return The newly created tileSprite object. */ - tileSprite(x: number, y: number, width: number, height: number, key: any, frame: any): Phaser.TileSprite; + tileSprite(x: number, y: number, width: number, height: number, key: any, frame: any): Phaser.TileSprite; /** * Create a tween object for a specific object. @@ -7821,10 +7957,10 @@ declare module Phaser { * @param obj Object the tween will be run on. * @return The Tween object. */ - tween(obj: any): Phaser.Tween; - - } - + tween(obj: any): Phaser.Tween; + + } + /** * The GameObjectFactory is a quick way to create many common game objects @@ -7832,8 +7968,8 @@ declare module Phaser { * * Created objects are _automatically added_ to the appropriate Manager, World, or manually specified parent Group. */ - class GameObjectFactory { - + class GameObjectFactory { + /** * The GameObjectFactory is a quick way to create many common game objects @@ -7843,19 +7979,19 @@ declare module Phaser { * * @param game A reference to the currently running game. */ - constructor(game: Phaser.Game); - + constructor(game: Phaser.Game); + /** * A reference to the currently running Game. */ - game: Phaser.Game; + game: Phaser.Game; /** * A reference to the game world. */ - world: Phaser.World; - + world: Phaser.World; + /** * Creates a new Sound object. @@ -7866,7 +8002,7 @@ declare module Phaser { * @param connect Controls if the created Sound object will connect to the master gainNode of the SoundManager when running under WebAudio. - Default: true * @return The newly created sound object. */ - audio(key: string, volume?: number, loop?: boolean, connect?: boolean): Phaser.Sound; + audio(key: string, volume?: number, loop?: boolean, connect?: boolean): Phaser.Sound; /** * Creates a new AudioSprite object. @@ -7874,7 +8010,7 @@ declare module Phaser { * @param key The Game.cache key of the sound that this object will use. * @return The newly created AudioSprite object. */ - audioSprite(key: string): Phaser.AudioSprite; + audioSprite(key: string): Phaser.AudioSprite; /** * Create a BitmapData object. @@ -7887,7 +8023,7 @@ declare module Phaser { * @param addToCache Should this BitmapData be added to the Game.Cache? If so you can retrieve it with Cache.getBitmapData(key) * @return The newly created BitmapData object. */ - bitmapData(width?: number, height?: number, key?: string, addToCache?: boolean): Phaser.BitmapData; + bitmapData(width?: number, height?: number, key?: string, addToCache?: boolean): Phaser.BitmapData; /** * Create a new BitmapText object. @@ -7916,7 +8052,7 @@ declare module Phaser { * @param group Optional Group to add the object to. If not specified it will be added to the World group. * @return The newly created bitmapText object. */ - bitmapText(x: number, y: number, font: string, text?: string, size?: number, group?: Phaser.Group): Phaser.BitmapText; + bitmapText(x: number, y: number, font: string, text?: string, size?: number, group?: Phaser.Group): Phaser.BitmapText; /** * Creates a new Button object. @@ -7933,7 +8069,7 @@ declare module Phaser { * @param group Optional Group to add the object to. If not specified it will be added to the World group. * @return The newly created Button object. */ - button(x?: number, y?: number, key?: string, callback?: Function, callbackContext?: any, overFrame?: any, outFrame?: any, downFrame?: any, upFrame?: any, group?: Phaser.Group): Phaser.Button; + button(x?: number, y?: number, key?: string, callback?: Function, callbackContext?: any, overFrame?: any, outFrame?: any, downFrame?: any, upFrame?: any, group?: Phaser.Group): Phaser.Button; /** * Create a new Emitter. @@ -7947,7 +8083,7 @@ declare module Phaser { * @param maxParticles The total number of particles in this emitter. - Default: 50 * @return The newly created emitter object. */ - emitter(x?: number, y?: number, maxParticles?: number): Phaser.Particles.Arcade.Emitter; + emitter(x?: number, y?: number, maxParticles?: number): Phaser.Particles.Arcade.Emitter; /** * Adds an existing display object to the game world. @@ -7955,7 +8091,7 @@ declare module Phaser { * @param object An instance of Phaser.Sprite, Phaser.Button or any other display object. * @return The child that was added to the World. */ - existing(object: any): any; + existing(object: any): any; /** * A WebGL shader/filter that can be applied to Sprites. @@ -7964,7 +8100,7 @@ declare module Phaser { * @param undefined Whatever parameters are needed to be passed to the filter init function. * @return The newly created Phaser.Filter object. */ - filter(filter: string, ...args: any[]): Phaser.Filter; + filter(filter: string, ...args: any[]): Phaser.Filter; /** * Creates a new Graphics object. @@ -7974,7 +8110,7 @@ declare module Phaser { * @param group Optional Group to add the object to. If not specified it will be added to the World group. * @return The newly created graphics object. */ - graphics(x: number, y: number, group?: Phaser.Group): Phaser.Graphics; + graphics(x: number, y: number, group?: Phaser.Group): Phaser.Graphics; /** * A Group is a container for display objects that allows for fast pooling, recycling and collision checks. @@ -7986,7 +8122,7 @@ declare module Phaser { * @param physicsBodyType If enableBody is true this is the type of physics body that is created on new Sprites. Phaser.Physics.ARCADE, Phaser.Physics.P2, Phaser.Physics.NINJA, etc. * @return The newly created Group. */ - group(parent?: any, name?: string, addToStage?: boolean, enableBody?: boolean, physicsBodyType?: number): Phaser.Group; + group(parent?: any, name?: string, addToStage?: boolean, enableBody?: boolean, physicsBodyType?: number): Phaser.Group; /** * Create a new `Image` object. @@ -8003,7 +8139,7 @@ declare module Phaser { * @param group Optional Group to add the object to. If not specified it will be added to the World group. * @return The newly created Image object. */ - image(x: number, y: number, key?: any, frame?: any, group?: Phaser.Group): Phaser.Image; + image(x: number, y: number, key?: any, frame?: any, group?: Phaser.Group): Phaser.Image; /** * A Group is a container for display objects that allows for fast pooling, recycling and collision checks. @@ -8017,7 +8153,7 @@ declare module Phaser { * @param addToStage If set to true this Group will be added directly to the Game.Stage instead of Game.World. * @return The newly created Group. */ - physicsGroup(physicsBodyType: number, parent?: any, name?: string, addToStage?: boolean): Phaser.Group; + physicsGroup(physicsBodyType: number, parent?: any, name?: string, addToStage?: boolean): Phaser.Group; /** * Add a new Plugin into the PluginManager. @@ -8028,7 +8164,7 @@ declare module Phaser { * @param args Additional parameters that will be passed to the Plugin.init method. * @return The Plugin that was added to the manager. */ - plugin(plugin: Phaser.Plugin, ...parameter: any[]): Phaser.Plugin; + plugin(plugin: Phaser.Plugin, ...parameter: any[]): Phaser.Plugin; /** * A dynamic initially blank canvas to which images can be drawn. @@ -8039,7 +8175,7 @@ declare module Phaser { * @param addToCache Should this RenderTexture be added to the Game.Cache? If so you can retrieve it with Cache.getTexture(key) * @return The newly created RenderTexture object. */ - renderTexture(width?: number, height?: number, key?: string, addToCache?: boolean): Phaser.RenderTexture; + renderTexture(width?: number, height?: number, key?: string, addToCache?: boolean): Phaser.RenderTexture; /** * Create a new RetroFont object. @@ -8062,7 +8198,7 @@ declare module Phaser { * @param yOffset If the font set doesn't start at the top left of the given image, specify the Y coordinate offset here. * @return The newly created RetroFont texture which can be applied to an Image or Sprite. */ - retroFont(font: string, characterWidth: number, characterHeight: number, chars: string, charsPerRow: number, xSpacing?: number, ySpacing?: number, xOffset?: number, yOffset?: number): Phaser.RetroFont; + retroFont(font: string, characterWidth: number, characterHeight: number, chars: string, charsPerRow: number, xSpacing?: number, ySpacing?: number, xOffset?: number, yOffset?: number): Phaser.RetroFont; /** * Creates a new Rope object. @@ -8077,7 +8213,7 @@ declare module Phaser { * @param group Optional Group to add the object to. If not specified it will be added to the World group. * @return The newly created Rope object. */ - rope(x: number, y: number, key: any, frame?: any, points?: Phaser.Point[]): Phaser.Rope; + rope(x: number, y: number, key: any, frame?: any, points?: Phaser.Point[]): Phaser.Rope; /** * Creates a new Sound object. @@ -8088,7 +8224,7 @@ declare module Phaser { * @param connect Controls if the created Sound object will connect to the master gainNode of the SoundManager when running under WebAudio. - Default: true * @return The newly created sound object. */ - sound(key: string, volume?: number, loop?: boolean, connect?: boolean): Phaser.Sound; + sound(key: string, volume?: number, loop?: boolean, connect?: boolean): Phaser.Sound; /** * Create a new Sprite with specific position and sprite sheet key. @@ -8104,7 +8240,7 @@ declare module Phaser { * @param group Optional Group to add the object to. If not specified it will be added to the World group. * @return The newly created Sprite object. */ - sprite(x: number, y: number, key?: any, frame?: any, group?: Phaser.Group): Phaser.Sprite; + sprite(x: number, y: number, key?: any, frame?: any, group?: Phaser.Group): Phaser.Sprite; /** * A SpriteBatch is a really fast version of a Phaser Group built solely for speed. @@ -8116,7 +8252,7 @@ declare module Phaser { * @param addToStage If set to true this Sprite Batch will be added directly to the Game.Stage instead of the parent. * @return The newly created Sprite Batch. */ - spriteBatch(parent: any, name?: string, addToStage?: boolean): Phaser.Group; + spriteBatch(parent: any, name?: string, addToStage?: boolean): Phaser.Group; /** * Creates a new Text object. @@ -8128,7 +8264,7 @@ declare module Phaser { * @param group Optional Group to add the object to. If not specified it will be added to the World group. * @return The newly created text object. */ - text(x: number, y: number, text: string, style: any, group?: Phaser.Group): Phaser.Text; + text(x: number, y: number, text: string, style: any, group?: Phaser.Group): Phaser.Text; /** * Creates a new Phaser.Tilemap object. @@ -8146,7 +8282,7 @@ declare module Phaser { * @param height The height of the map in tiles. If this map is created from Tiled or CSV data you don't need to specify this. - Default: 10 * @return The newly created tilemap object. */ - tilemap(key?: string, tileWidth?: number, tileHeight?: number, width?: number, height?: number): Phaser.Tilemap; + tilemap(key?: string, tileWidth?: number, tileHeight?: number, width?: number, height?: number): Phaser.Tilemap; /** * Creates a new TileSprite object. @@ -8160,7 +8296,7 @@ declare module Phaser { * @param group Optional Group to add the object to. If not specified it will be added to the World group. * @return The newly created TileSprite object. */ - tileSprite(x: number, y: number, width: number, height: number, key?: any, frame?: any, group?: Phaser.Group): Phaser.TileSprite; + tileSprite(x: number, y: number, width: number, height: number, key?: any, frame?: any, group?: Phaser.Group): Phaser.TileSprite; /** * Create a tween on a specific object. @@ -8170,7 +8306,7 @@ declare module Phaser { * @param object Object the tween will be run on. * @return The newly created Phaser.Tween object. */ - tween(obj: any): Phaser.Tween; + tween(obj: any): Phaser.Tween; /** * Weapons provide the ability to easily create a bullet pool and manager. @@ -8191,7 +8327,7 @@ declare module Phaser { * @param group Optional Group to add the Weapon to. If not specified it will be added to the World group. * @return A Weapon instance. */ - weapon(quantity?: number, key?: any, frame?: any, group?: Phaser.Group): Phaser.Weapon; + weapon(quantity?: number, key?: any, frame?: any, group?: Phaser.Group): Phaser.Weapon; /** * Create a Video object. @@ -8202,10 +8338,10 @@ declare module Phaser { * @param url If the video hasn't been loaded then you can provide a full URL to the file here (make sure to set key to null) * @return The newly created Video object. */ - video(key?: string, url?: string): Phaser.Video; - - } - + video(key?: string, url?: string): Phaser.Video; + + } + /** * The Gamepad class handles gamepad input and dispatches gamepad events. @@ -8217,8 +8353,8 @@ declare module Phaser { * via prefs flags (about:config, search gamepad). The browsers map the same controllers differently. * This class has constants for Windows 7 Chrome mapping of XBOX 360 controller. */ - class Gamepad { - + class Gamepad { + /** * The Gamepad class handles gamepad input and dispatches gamepad events. @@ -8232,156 +8368,156 @@ declare module Phaser { * * @param game A reference to the currently running game. */ - constructor(game: Phaser.Game); - - static BUTTON_0: number; - static BUTTON_1: number; - static BUTTON_2: number; - static BUTTON_3: number; - static BUTTON_4: number; - static BUTTON_5: number; - static BUTTON_6: number; - static BUTTON_7: number; - static BUTTON_8: number; - static BUTTON_9: number; - static BUTTON_10: number; - static BUTTON_11: number; - static BUTTON_12: number; - static BUTTON_13: number; - static BUTTON_14: number; - static BUTTON_15: number; - - static AXIS_0: number; - static AXIS_1: number; - static AXIS_2: number; - static AXIS_3: number; - static AXIS_4: number; - static AXIS_5: number; - static AXIS_6: number; - static AXIS_7: number; - static AXIS_8: number; - static AXIS_9: number; - - static XBOX360_A: number; - static XBOX360_B: number; - static XBOX360_X: number; - static XBOX360_Y: number; - static XBOX360_LEFT_BUMPER: number; - static XBOX360_RIGHT_BUMPER: number; - static XBOX360_LEFT_TRIGGER: number; - static XBOX360_RIGHT_TRIGGER: number; - static XBOX360_BACK: number; - static XBOX360_START: number; - static XBOX360_STICK_LEFT_BUTTON: number; - static XBOX360_STICK_RIGHT_BUTTON: number; - static XBOX360_DPAD_LEFT: number; - static XBOX360_DPAD_RIGHT: number; - static XBOX360_DPAD_UP: number; - static XBOX360_DPAD_DOWN: number; - static XBOX360_STICK_LEFT_X: number; - static XBOX360_STICK_LEFT_Y: number; - static XBOX360_STICK_RIGHT_X: number; - static XBOX360_STICK_RIGHT_Y: number; - - static PS3XC_X: number; - static PS3XC_CIRCLE: number; - static PS3XC_SQUARE: number; - static PS3XC_TRIANGLE: number; - static PS3XC_L1: number; - static PS3XC_R1: number; - static PS3XC_L2: number; - static PS3XC_R2: number; - static PS3XC_SELECT: number; - static PS3XC_START: number; - static PS3XC_STICK_LEFT_BUTTON: number; - static PS3XC_STICK_RIGHT_BUTTON: number; - static PS3XC_DPAD_UP: number; - static PS3XC_DPAD_DOWN: number; - static PS3XC_DPAD_LEFT: number; - static PS3XC_DPAD_RIGHT: number; - static PS3XC_STICK_LEFT_X: number; - static PS3XC_STICK_LEFT_Y: number; - static PS3XC_STICK_RIGHT_X: number; - static PS3XC_STICK_RIGHT_Y: number; - + constructor(game: Phaser.Game); + + static BUTTON_0: number; + static BUTTON_1: number; + static BUTTON_2: number; + static BUTTON_3: number; + static BUTTON_4: number; + static BUTTON_5: number; + static BUTTON_6: number; + static BUTTON_7: number; + static BUTTON_8: number; + static BUTTON_9: number; + static BUTTON_10: number; + static BUTTON_11: number; + static BUTTON_12: number; + static BUTTON_13: number; + static BUTTON_14: number; + static BUTTON_15: number; + + static AXIS_0: number; + static AXIS_1: number; + static AXIS_2: number; + static AXIS_3: number; + static AXIS_4: number; + static AXIS_5: number; + static AXIS_6: number; + static AXIS_7: number; + static AXIS_8: number; + static AXIS_9: number; + + static XBOX360_A: number; + static XBOX360_B: number; + static XBOX360_X: number; + static XBOX360_Y: number; + static XBOX360_LEFT_BUMPER: number; + static XBOX360_RIGHT_BUMPER: number; + static XBOX360_LEFT_TRIGGER: number; + static XBOX360_RIGHT_TRIGGER: number; + static XBOX360_BACK: number; + static XBOX360_START: number; + static XBOX360_STICK_LEFT_BUTTON: number; + static XBOX360_STICK_RIGHT_BUTTON: number; + static XBOX360_DPAD_LEFT: number; + static XBOX360_DPAD_RIGHT: number; + static XBOX360_DPAD_UP: number; + static XBOX360_DPAD_DOWN: number; + static XBOX360_STICK_LEFT_X: number; + static XBOX360_STICK_LEFT_Y: number; + static XBOX360_STICK_RIGHT_X: number; + static XBOX360_STICK_RIGHT_Y: number; + + static PS3XC_X: number; + static PS3XC_CIRCLE: number; + static PS3XC_SQUARE: number; + static PS3XC_TRIANGLE: number; + static PS3XC_L1: number; + static PS3XC_R1: number; + static PS3XC_L2: number; + static PS3XC_R2: number; + static PS3XC_SELECT: number; + static PS3XC_START: number; + static PS3XC_STICK_LEFT_BUTTON: number; + static PS3XC_STICK_RIGHT_BUTTON: number; + static PS3XC_DPAD_UP: number; + static PS3XC_DPAD_DOWN: number; + static PS3XC_DPAD_LEFT: number; + static PS3XC_DPAD_RIGHT: number; + static PS3XC_STICK_LEFT_X: number; + static PS3XC_STICK_LEFT_Y: number; + static PS3XC_STICK_RIGHT_X: number; + static PS3XC_STICK_RIGHT_Y: number; + /** * If the gamepad input is active or not - if not active it should not be updated from Input.js */ - active: boolean; + active: boolean; /** * The context under which the callbacks are run. */ - callbackContext: any; + callbackContext: any; /** * Gamepad input will only be processed if enabled. * Default: true */ - enabled: boolean; + enabled: boolean; /** * Local reference to game. */ - game: Phaser.Game; - onAxisCallBack: Function; + game: Phaser.Game; + onAxisCallBack: Function; /** * This callback is invoked every time any gamepad is connected */ - onConnectCallback: Function; + onConnectCallback: Function; /** * This callback is invoked every time any gamepad is disconnected */ - onDisconnectCallback: Function; + onDisconnectCallback: Function; /** * This callback is invoked every time any gamepad button is pressed down. */ - onDownCallback: Function; + onDownCallback: Function; /** * This callback is invoked every time any gamepad button is changed to a value where value > 0 and value < 1. */ - onFloatCallback: Function; + onFloatCallback: Function; /** * This callback is invoked every time any gamepad button is released. */ - onUpCallback: Function; + onUpCallback: Function; /** * Gamepad #1 */ - pad1: Phaser.SinglePad; + pad1: Phaser.SinglePad; /** * Gamepad #2 */ - pad2: Phaser.SinglePad; + pad2: Phaser.SinglePad; /** * Gamepad #3 */ - pad3: Phaser.SinglePad; + pad3: Phaser.SinglePad; /** * Gamepad #4 */ - pad4: Phaser.SinglePad; + pad4: Phaser.SinglePad; /** * How many live gamepads are currently connected. */ - padsConnected: number; + padsConnected: number; /** * Whether or not gamepads are supported in current browser. */ - supported: boolean; - + supported: boolean; + /** * Add callbacks to the main Gamepad handler to handle connect/disconnect/button down/button up/axis change/float value buttons. @@ -8390,7 +8526,7 @@ declare module Phaser { * @param callbacks Object that takes six different callback methods: * onConnectCallback, onDisconnectCallback, onDownCallback, onUpCallback, onAxisCallback, onFloatCallback */ - addCallbacks(context: any, callbacks: any): void; + addCallbacks(context: any, callbacks: any): void; /** * Returns true if the button is currently pressed down, on ANY gamepad. @@ -8398,7 +8534,7 @@ declare module Phaser { * @param buttonCode The buttonCode of the button to check for. * @return True if a button is currently down. */ - isDown(buttonCode: number): boolean; + isDown(buttonCode: number): boolean; /** * Returns the "just pressed" state of a button from ANY gamepad connected. Just pressed is considered true if the button was pressed down within the duration given (default 250ms). @@ -8407,53 +8543,97 @@ declare module Phaser { * @param duration The duration below which the button is considered as being just pressed. - Default: 250 * @return True if the button is just pressed otherwise false. */ - justPressed(buttonCode: number, duration?: number): boolean; - justReleased(buttonCode: number, duration?: number): boolean; + justPressed(buttonCode: number, duration?: number): boolean; + justReleased(buttonCode: number, duration?: number): boolean; /** * Reset all buttons/axes of all gamepads */ - reset(): void; + reset(): void; /** * Sets the deadZone variable for all four gamepads */ - setDeadZones(value: any): void; + setDeadZones(value: any): void; /** * Starts the Gamepad event handling. * This MUST be called manually before Phaser will start polling the Gamepad API. */ - start(): void; + start(): void; /** * Stops the Gamepad event handling. */ - stop(): void; + stop(): void; /** * Main gamepad update loop. Should not be called manually. */ - update(): void; - - } - + update(): void; + + } + /** - * Creates a new `Graphics` object. + * A Graphics object is a way to draw primitives to your game. Primitives include forms of geometry, such as Rectangles, + * Circles and Polygons. They also include lines, arcs and curves. When you initially create a Graphics object it will + * be empty. To 'draw' to it you first specify a lineStyle or fillStyle (or both), and then draw a shape. For example: + * + * ``` + * graphics.beginFill(0xff0000); + * graphics.drawCircle(50, 50, 100); + * graphics.endFill(); + * ``` + * + * This will draw a circle shape to the Graphics object, with a diameter of 100, located at x: 50, y: 50. + * + * When a Graphics object is rendered it will render differently based on if the game is running under Canvas or + * WebGL. Under Canvas it will use the HTML Canvas context drawing operations to draw the path. Under WebGL the + * graphics data is decomposed into polygons. Both of these are expensive processes, especially with complex shapes. + * + * If your Graphics object doesn't change much (or at all) once you've drawn your shape to it, then you will help + * performance by calling `Graphics.generateTexture`. This will 'bake' the Graphics object into a Texture, and return it. + * You can then use this Texture for Sprites or other display objects. If your Graphics object updates frequently then + * you should avoid doing this, as it will constantly generate new textures, which will consume memory. + * + * As you can tell, Graphics objects are a bit of a trade-off. While they are extremely useful, you need to be careful + * in their complexity and quantity of them in your game. */ - class Graphics extends PIXI.Graphics { - + class Graphics extends PIXI.Graphics { + /** - * Creates a new `Graphics` object. + * A Graphics object is a way to draw primitives to your game. Primitives include forms of geometry, such as Rectangles, + * Circles and Polygons. They also include lines, arcs and curves. When you initially create a Graphics object it will + * be empty. To 'draw' to it you first specify a lineStyle or fillStyle (or both), and then draw a shape. For example: + * + * ``` + * graphics.beginFill(0xff0000); + * graphics.drawCircle(50, 50, 100); + * graphics.endFill(); + * ``` + * + * This will draw a circle shape to the Graphics object, with a diameter of 100, located at x: 50, y: 50. + * + * When a Graphics object is rendered it will render differently based on if the game is running under Canvas or + * WebGL. Under Canvas it will use the HTML Canvas context drawing operations to draw the path. Under WebGL the + * graphics data is decomposed into polygons. Both of these are expensive processes, especially with complex shapes. + * + * If your Graphics object doesn't change much (or at all) once you've drawn your shape to it, then you will help + * performance by calling `Graphics.generateTexture`. This will 'bake' the Graphics object into a Texture, and return it. + * You can then use this Texture for Sprites or other display objects. If your Graphics object updates frequently then + * you should avoid doing this, as it will constantly generate new textures, which will consume memory. + * + * As you can tell, Graphics objects are a bit of a trade-off. While they are extremely useful, you need to be careful + * in their complexity and quantity of them in your game. * * @param game Current game instance. * @param x X position of the new graphics object. * @param y Y position of the new graphics object. */ - constructor(game: Phaser.Game, x?: number, y?: number); - + constructor(game: Phaser.Game, x?: number, y?: number); + /** * The angle property is the rotation of the Game Object in *degrees* from its original orientation. @@ -8466,7 +8646,7 @@ declare module Phaser { * If you wish to work in radians instead of degrees you can use the property `rotation` instead. * Working in radians is slightly faster as it doesn't have to perform any calculations. */ - angle: number; + angle: number; /** * A useful flag to control if the Game Object is alive or dead. @@ -8478,13 +8658,13 @@ declare module Phaser { * However you can use `Group.getFirstAlive` in conjunction with this property for fast object pooling and recycling. * Default: true */ - alive: boolean; + alive: boolean; /** * If the Game Object is enabled for animation (such as a Phaser.Sprite) this is a reference to its AnimationManager instance. * Through it you can create, play, pause and stop animations. */ - animations: Phaser.AnimationManager; + animations: Phaser.AnimationManager; /** * A Game Object with `autoCull` set to true will check its bounds against the World Camera every frame. @@ -8494,7 +8674,7 @@ declare module Phaser { * This is a relatively expensive operation, especially if enabled on hundreds of Game Objects. So enable it only if you know it's required, * or you have tested performance and find it acceptable. */ - autoCull: boolean; + autoCull: boolean; /** * `body` is the Game Objects physics body. Once a Game Object is enabled for physics you access all associated @@ -8512,20 +8692,20 @@ declare module Phaser { * * If you need a different result then adjust or re-create the Body shape offsets manually or reset the anchor after enabling physics. */ - body: Phaser.Physics.Arcade.Body | Phaser.Physics.P2.Body | Phaser.Physics.Ninja.Body | any; + body: Phaser.Physics.Arcade.Body | Phaser.Physics.P2.Body | Phaser.Physics.Ninja.Body | any; /** * The sum of the y and height properties. * This is the same as `y + height - offsetY`. */ - bottom: number; + bottom: number; /** * The x/y coordinate offset applied to the top-left of the camera that this Game Object will be drawn at if `fixedToCamera` is true. * * The values are relative to the top-left of the camera view and in addition to any parent of the Game Object on the display list. */ - cameraOffset: Phaser.Point; + cameraOffset: Phaser.Point; /** * If this is set to `true` the Game Object checks if it is within the World bounds each frame. @@ -8541,12 +8721,12 @@ declare module Phaser { * This is a relatively expensive operation, especially if enabled on hundreds of Game Objects. So enable it only if you know it's required, * or you have tested performance and find it acceptable. */ - checkWorldBounds: boolean; + checkWorldBounds: boolean; /** * The components this Game Object has installed. */ - components: any; + components: any; /** * An empty Object that belongs to this Game Object. @@ -8555,18 +8735,18 @@ declare module Phaser { * without polluting the Game Object directly. * Default: {} */ - data: any; + data: any; /** * A debug flag designed for use with `Game.enableStep`. */ - debug: boolean; + debug: boolean; /** * As a Game Object runs through its destroy method this flag is set to true, * and can be checked in any sub-systems or plugins it is being destroyed from. */ - destroyPhase: boolean; + destroyPhase: boolean; /** * Controls if this Game Object is processed by the core game loop. @@ -8577,13 +8757,13 @@ declare module Phaser { * Setting `exists` to true will add its physics body back in to the physics world, if it has one. * It will also set the `visible` property to `true`. */ - exists: boolean; + exists: boolean; /** * All Phaser Game Objects have an Events class which contains all of the events that are dispatched when certain things happen to this * Game Object, or any of its components. */ - events: Phaser.Events; + events: Phaser.Events; /** * A Game Object that is "fixed" to the camera uses its x/y coordinates as offsets from the top left of the camera during rendering. @@ -8600,7 +8780,7 @@ declare module Phaser { * * Be careful not to set `fixedToCamera` on Game Objects which are in Groups that already have `fixedToCamera` enabled on them. */ - fixedToCamera: boolean; + fixedToCamera: boolean; /** * The key of the image or texture used by this Game Object during rendering. @@ -8609,23 +8789,23 @@ declare module Phaser { * If a Game Object is created without a key it is automatically assigned the key `__default` which is a 32x32 transparent PNG stored within the Cache. * If a Game Object is given a key which doesn't exist in the Image Cache it is re-assigned the key `__missing` which is a 32x32 PNG of a green box with a line through it. */ - key: string | Phaser.RenderTexture | Phaser.BitmapData | Phaser.Video | PIXI.Texture; + key: string | Phaser.RenderTexture | Phaser.BitmapData | Phaser.Video | PIXI.Texture; /** * A Game Object is considered `fresh` if it has just been created or reset and is yet to receive a renderer transform update. * This property is mostly used internally by the physics systems, but is exposed for the use of plugins. */ - fresh: boolean; + fresh: boolean; /** * A reference to the currently running Game. */ - game: Phaser.Game; + game: Phaser.Game; /** * The height of the displayObjectContainer, setting this will actually modify the scale to achieve the value set */ - height: number; + height: number; /** * The Input Handler for this Game Object. @@ -8634,7 +8814,7 @@ declare module Phaser { * * After you have done this, this property will be a reference to the Phaser InputHandler. */ - input: Phaser.InputHandler; + input: Phaser.InputHandler; /** * By default a Game Object won't process any input events. By setting `inputEnabled` to true a Phaser.InputHandler is created @@ -8645,31 +8825,35 @@ declare module Phaser { * Note that Input related events are dispatched from `this.events`, i.e.: `events.onInputDown`. * * If you set this property to false it will stop the Input Handler from processing any more input events. + * + * If you want to _temporarily_ disable input for a Game Object, then it's better to set + * `input.enabled = false`, as it won't reset any of the Input Handlers internal properties. + * You can then toggle this back on as needed. */ - inputEnabled: boolean; + inputEnabled: boolean; /** * Checks if the Game Objects bounds intersect with the Game Camera bounds. * Returns `true` if they do, otherwise `false` if fully outside of the Cameras bounds. */ - inCamera: boolean; + inCamera: boolean; /** * Checks if the Game Objects bounds are within, or intersect at any point with the Game World bounds. */ - inWorld: boolean; + inWorld: boolean; /** * The left coordinate of the Game Object. * This is the same as `x - offsetX`. */ - left: number; + left: number; /** * A user defined name given to this Game Object. * This value isn't ever used internally by Phaser, it is meant as a game level property. */ - name: string; + name: string; /** * The lifespan allows you to give a Game Object a lifespan in milliseconds. @@ -8681,26 +8865,26 @@ declare module Phaser { * * Very handy for particles, bullets, collectibles, or any other short-lived entity. */ - lifespan: number; + lifespan: number; /** * The amount the Game Object is visually offset from its x coordinate. * This is the same as `width * anchor.x`. * It will only be > 0 if anchor.x is not equal to zero. */ - offsetX: number; + offsetX: number; /** * The amount the Game Object is visually offset from its y coordinate. * This is the same as `height * anchor.y`. * It will only be > 0 if anchor.y is not equal to zero. */ - offsetY: number; + offsetY: number; /** * If this and the `checkWorldBounds` property are both set to `true` then the `kill` method is called as soon as `inWorld` returns false. */ - outOfBoundsKill: boolean; + outOfBoundsKill: boolean; /** * A Game Object is that is pendingDestroy is flagged to have its destroy method called on the next logic update. @@ -8709,62 +8893,58 @@ declare module Phaser { * This is extremely useful if you wish to destroy an object from within one of its own callbacks * such as with Buttons or other Input events. */ - pendingDestroy: boolean; + pendingDestroy: boolean; /** * The const physics body type of this object. */ - physicsType: number; - - /** - * The coordinate of the object relative to the local coordinates of the parent. - */ - position: Phaser.Point; + physicsType: number; + position: Phaser.Point; /** * The position the Game Object was located in the previous frame. */ - previousPosition: Phaser.Point; + previousPosition: Phaser.Point; /** * The rotation the Game Object was in set to in the previous frame. Value is in radians. */ - previousRotation: number; + previousRotation: number; /** * The render order ID is used internally by the renderer and Input Manager and should not be modified. * This property is mostly used internally by the renderers, but is exposed for the use of plugins. */ - renderOrderID: number; + renderOrderID: number; /** * The right coordinate of the Game Object. * This is the same as `x + width - offsetX`. */ - right: number; + right: number; /** * The y coordinate of the Game Object. * This is the same as `y - offsetY`. */ - top: number; + top: number; /** * The const type of this object. */ - type: number; + type: number; /** * The world coordinates of this Game Object in pixels. * Depending on where in the display list this Game Object is placed this value can differ from `position`, * which contains the x/y coordinates relative to the Game Objects parent. */ - world: Phaser.Point; + world: Phaser.Point; /** * The width of the displayObjectContainer, setting this will actually modify the scale to achieve the value set */ - width: number; + width: number; /** * The z depth of this Game Object within its parent Group. @@ -8772,8 +8952,8 @@ declare module Phaser { * This value is adjusted automatically whenever the Group hierarchy changes. * If you wish to re-order the layering of a Game Object then see methods like Group.moveUp or Group.bringToTop. */ - z: number; - + z: number; + /** * Aligns this Game Object within another Game Object, or Rectangle, known as the @@ -8813,7 +8993,7 @@ declare module Phaser { * @param offsetY A vertical adjustment of the Containers bounds, applied to the aligned position of the Game Object. Use a negative value to shrink the bounds, positive to increase it. * @return This Game Object. */ - alignIn(container: Phaser.Rectangle | Phaser.Sprite | Phaser.Image | Phaser.Text | Phaser.BitmapText | Phaser.Button | Phaser.Graphics | Phaser.TileSprite, position?: number, offsetX?: number, offsetY?: number): any; + alignIn(container: Phaser.Rectangle | Phaser.Sprite | Phaser.Image | Phaser.Text | Phaser.BitmapText | Phaser.Button | Phaser.Graphics | Phaser.TileSprite, position?: number, offsetX?: number, offsetY?: number): any; /** * Aligns this Game Object to the side of another Game Object, or Rectangle, known as the @@ -8854,16 +9034,16 @@ declare module Phaser { * @param offsetY A vertical adjustment of the Containers bounds, applied to the aligned position of the Game Object. Use a negative value to shrink the bounds, positive to increase it. * @return This Game Object. */ - alignTo(container: Phaser.Rectangle | Phaser.Sprite | Phaser.Image | Phaser.Text | Phaser.BitmapText | Phaser.Button | Phaser.Graphics | Phaser.TileSprite, position?: number, offsetX?: number, offsetY?: number): any; + alignTo(container: Phaser.Rectangle | Phaser.Sprite | Phaser.Image | Phaser.Text | Phaser.BitmapText | Phaser.Button | Phaser.Graphics | Phaser.TileSprite, position?: number, offsetX?: number, offsetY?: number): any; /** * Destroy this Graphics instance. * * @param destroyChildren Should every child of this object have its destroy method called? - Default: true */ - destroy(destroyChildren?: boolean): void; - drawTriangle(points: Phaser.Point[], cull?: boolean): void; - drawTriangles(vertices: Phaser.Point[] | number[], indices?: number[], cull?: boolean): void; + destroy(destroyChildren?: boolean): void; + drawTriangle(points: Phaser.Point[], cull?: boolean): void; + drawTriangles(vertices: Phaser.Point[] | number[], indices?: number[], cull?: boolean): void; /** * Kills a Game Object. A killed Game Object has its `alive`, `exists` and `visible` properties all set to false. @@ -8876,17 +9056,17 @@ declare module Phaser { * If you don't need this Game Object any more you should call `destroy` instead. * @return This instance. */ - kill(): Phaser.Graphics; + kill(): Phaser.Graphics; /** * Internal method called by the World postUpdate cycle. */ - postUpdate(): void; + postUpdate(): void; /** * Automatically called by World.preUpdate. */ - preUpdate(): void; + preUpdate(): void; /** * Resets the Game Object. @@ -8903,7 +9083,7 @@ declare module Phaser { * @param health The health to give the Game Object if it has the Health component. - Default: 1 * @return This instance. */ - reset(x: number, y: number, health?: number): Phaser.Graphics; + reset(x: number, y: number, health?: number): Phaser.Graphics; /** * Brings a 'dead' Game Object back to life, optionally resetting its health value in the process. @@ -8915,17 +9095,17 @@ declare module Phaser { * @param health The health to give the Game Object. Only set if the GameObject has the Health component. - Default: 100 * @return This instance. */ - revive(health?: number): Phaser.Graphics; + revive(health?: number): Phaser.Graphics; /** * Override this method in your own custom objects to handle any update requirements. * It is called immediately after `preUpdate` and before `postUpdate`. * Remember if this Game Object has any children you should call update on those too. */ - update(): void; - - } - + update(): void; + + } + /** * A Group is a container for {@link DisplayObject display objects} including {@link Phaser.Sprite Sprites} and {@link Phaser.Image Images}. @@ -8937,8 +9117,8 @@ declare module Phaser { * * Groups are also display objects and can be nested as children within other Groups. */ - class Group extends PIXI.DisplayObjectContainer { - + class Group extends PIXI.DisplayObjectContainer { + /** * A Group is a container for {@link DisplayObject display objects} including {@link Phaser.Sprite Sprites} and {@link Phaser.Image Images}. @@ -8958,39 +9138,39 @@ declare module Phaser { * @param enableBody If true all Sprites created with {@link #create} or {@link #createMulitple} will have a physics body created on them. Change the body type with {@link #physicsBodyType}. * @param physicsBodyType The physics body type to use when physics bodies are automatically added. See {@link #physicsBodyType} for values. */ - constructor(game: Phaser.Game, parent?: PIXI.DisplayObjectContainer, name?: string, addToStage?: boolean, enableBody?: boolean, physicsBodyType?: number); - + constructor(game: Phaser.Game, parent?: PIXI.DisplayObjectContainer, name?: string, addToStage?: boolean, enableBody?: boolean, physicsBodyType?: number); + /** * A returnType value, as specified in {@link Phaser.Group#iterate iterate} eg. */ - static RETURN_CHILD: number; + static RETURN_CHILD: number; /** * A returnType value, as specified in {@link Phaser.Group#iterate iterate} eg. */ - static RETURN_NONE: number; + static RETURN_NONE: number; /** * A returnType value, as specified in {@link Phaser.Group#iterate iterate} eg. */ - static RETURN_TOTAL: number; + static RETURN_TOTAL: number; /** * A sort ordering value, as specified in {@link Phaser.Group#sort sort} eg. */ - static SORT_ASCENDING: number; + static SORT_ASCENDING: number; /** * A sort ordering value, as specified in {@link Phaser.Group#sort sort} eg. */ - static SORT_DESCENDING: number; - + static SORT_DESCENDING: number; + /** * The alpha value of the group container. */ - alpha: number; + alpha: number; /** * The angle of rotation of the group container, in degrees. @@ -9000,19 +9180,58 @@ declare module Phaser { * This has no impact on the rotation/angle properties of the children, but it will update their worldTransform * and on-screen orientation and position. */ - angle: number; + angle: number; /** * The alive property is useful for Groups that are children of other Groups and need to be included/excluded in checks like forEachAlive. * Default: true */ - alive: boolean; + alive: boolean; + + /** + * The bottom coordinate of this Group. + * + * It is derived by calling `getBounds`, calculating the Groups dimensions based on its + * visible children. + * + * Note that no ancestors are factored into the result, meaning that if this Group is + * nested within another Group, with heavy transforms on it, the result of this property + * is likely to be incorrect. It is safe to get and set this property if the Group is a + * top-level descendant of Phaser.World, or untransformed parents. + */ + bottom: number; /** * If this object is {@link Phaser.Group#fixedToCamera fixedToCamera} then this stores the x/y position offset relative to the top-left of the camera view. * If the parent of this Group is also `fixedToCamera` then the offset here is in addition to that and should typically be disabled. */ - cameraOffset: Phaser.Point; + cameraOffset: Phaser.Point; + + /** + * The center x coordinate of this Group. + * + * It is derived by calling `getBounds`, calculating the Groups dimensions based on its + * visible children. + * + * Note that no ancestors are factored into the result, meaning that if this Group is + * nested within another Group, with heavy transforms on it, the result of this property + * is likely to be incorrect. It is safe to get and set this property if the Group is a + * top-level descendant of Phaser.World, or untransformed parents. + */ + centerX: number; + + /** + * The center y coordinate of this Group. + * + * It is derived by calling `getBounds`, calculating the Groups dimensions based on its + * visible children. + * + * Note that no ancestors are factored into the result, meaning that if this Group is + * nested within another Group, with heavy transforms on it, the result of this property + * is likely to be incorrect. It is safe to get and set this property if the Group is a + * top-level descendant of Phaser.World, or untransformed parents. + */ + centerY: number; /** * The type of objects that will be created when using {@link Phaser.Group#create create} or {@link Phaser.Group#createMultiple createMultiple}. @@ -9021,19 +9240,19 @@ declare module Phaser { * when a new object is created it is passed the following parameters to its constructor: `(game, x, y, key, frame)`. * Default: {@link Phaser.Sprite} */ - classType: any; + classType: any; /** * The current display object that the group cursor is pointing to, if any. (Can be set manually.) * * The cursor is a way to iterate through the children in a Group using {@link Phaser.Group#next next} and {@link Phaser.Group#previous previous}. */ - cursor: any; + cursor: any; /** * The current index of the Group cursor. Advance it with Group.next. */ - cursorIndex: number; + cursorIndex: number; /** * If true all Sprites created by, or added to this group, will have a physics body enabled on them. @@ -9042,20 +9261,20 @@ declare module Phaser { * * The default body type is controlled with {@link Phaser.Group#physicsBodyType physicsBodyType}. */ - enableBody: boolean; + enableBody: boolean; /** * If true when a physics body is created (via {@link Phaser.Group#enableBody enableBody}) it will create a physics debug object as well. * * This only works for P2 bodies. */ - enableBodyDebug: boolean; + enableBodyDebug: boolean; /** * If exists is true the group is updated, otherwise it is skipped. * Default: true */ - exists: boolean; + exists: boolean; /** * A Group that is fixed to the camera uses its x/y coordinates as offsets from the top left of the camera. These are stored in Group.cameraOffset. @@ -9063,12 +9282,12 @@ declare module Phaser { * Note that the cameraOffset values are in addition to any parent in the display list. * So if this Group was in a Group that has x: 200, then this will be added to the cameraOffset.x */ - fixedToCamera: boolean; + fixedToCamera: boolean; /** * A reference to the currently running Game. */ - game: Phaser.Game; + game: Phaser.Game; /** * The hash array is an array belonging to this Group into which you can add any of its children via Group.addToHash and Group.removeFromHash. @@ -9079,12 +9298,12 @@ declare module Phaser { * However if you don't use Arcade Physics, or this isn't a physics enabled Group, then you can use the hash to perform your own * sorting and filtering of Group children without touching their z-index (and therefore display draw order) */ - hash: PIXI.DisplayObject[]; + hash: PIXI.DisplayObject[]; /** * A group with `ignoreDestroy` set to `true` ignores all calls to its `destroy` method. */ - ignoreDestroy: boolean; + ignoreDestroy: boolean; /** * A Group with `inputEnableChildren` set to `true` will automatically call `inputEnabled = true` @@ -9092,17 +9311,30 @@ declare module Phaser { * * If there are children already in the Group at the time you set this property, they are not changed. */ - inputEnableChildren: boolean; + inputEnableChildren: boolean; + + /** + * The left coordinate of this Group. + * + * It is derived by calling `getBounds`, calculating the Groups dimensions based on its + * visible children. + * + * Note that no ancestors are factored into the result, meaning that if this Group is + * nested within another Group, with heavy transforms on it, the result of this property + * is likely to be incorrect. It is safe to get and set this property if the Group is a + * top-level descendant of Phaser.World, or untransformed parents. + */ + left: number; /** * Total number of children in this group, regardless of exists/alive status. */ - length: number; + length: number; /** * A name for this group. Not used internally but useful for debugging. */ - name: string; + name: string; /** * This Signal is dispatched whenever a child of this Group emits an onInputDown signal as a result @@ -9112,7 +9344,7 @@ declare module Phaser { * This Signal is sent 2 arguments: A reference to the Sprite that triggered the signal, and * a reference to the Pointer that caused it. */ - onChildInputDown: Phaser.Signal; + onChildInputDown: Phaser.Signal; /** * This Signal is dispatched whenever a child of this Group emits an onInputUp signal as a result @@ -9123,7 +9355,7 @@ declare module Phaser { * a reference to the Pointer that caused it, and a boolean value `isOver` that tells you if the Pointer * is still over the Sprite or not. */ - onChildInputUp: Phaser.Signal; + onChildInputUp: Phaser.Signal; /** * This Signal is dispatched whenever a child of this Group emits an onInputOver signal as a result @@ -9133,7 +9365,7 @@ declare module Phaser { * This Signal is sent 2 arguments: A reference to the Sprite that triggered the signal, and * a reference to the Pointer that caused it. */ - onChildInputOver: Phaser.Signal; + onChildInputOver: Phaser.Signal; /** * This Signal is dispatched whenever a child of this Group emits an onInputOut signal as a result @@ -9143,12 +9375,12 @@ declare module Phaser { * This Signal is sent 2 arguments: A reference to the Sprite that triggered the signal, and * a reference to the Pointer that caused it. */ - onChildInputOut: Phaser.Signal; + onChildInputOut: Phaser.Signal; /** * This signal is dispatched when the group is destroyed. */ - onDestroy: Phaser.Signal; + onDestroy: Phaser.Signal; /** * A Group is that has `pendingDestroy` set to `true` is flagged to have its destroy method @@ -9158,19 +9390,19 @@ declare module Phaser { * This is extremely useful if you wish to destroy a Group from within one of its own callbacks * or a callback of one of its children. */ - pendingDestroy: boolean; + pendingDestroy: boolean; /** * If {@link Phaser.Group#enableBody enableBody} is true this is the type of physics body that is created on new Sprites. * * The valid values are {@link Phaser.Physics.ARCADE}, {@link Phaser.Physics.P2JS}, {@link Phaser.Physics.NINJA}, etc. */ - physicsBodyType: number; + physicsBodyType: number; /** * The const physics body type of this object. */ - physicsType: number; + physicsType: number; /** * If this Group contains Arcade Physics Sprites you can set a custom sort direction via this property. @@ -9185,12 +9417,21 @@ declare module Phaser { * * If set to `null` the Group will use whatever Phaser.Physics.Arcade.sortDirection is set to. This is the default behavior. */ - physicsSortDirection: number; + physicsSortDirection: number; + position: Phaser.Point; /** - * The coordinate of the object relative to the local coordinates of the parent. + * The right coordinate of this Group. + * + * It is derived by calling `getBounds`, calculating the Groups dimensions based on its + * visible children. + * + * Note that no ancestors are factored into the result, meaning that if this Group is + * nested within another Group, with heavy transforms on it, the result of this property + * is likely to be incorrect. It is safe to get and set this property if the Group is a + * top-level descendant of Phaser.World, or untransformed parents. */ - position: Phaser.Point; + right: number; /** * The angle of rotation of the group container, in radians. @@ -9198,34 +9439,43 @@ declare module Phaser { * This will adjust the group container itself by modifying its rotation. * This will have no impact on the rotation value of its children, but it will update their worldTransform and on-screen position. */ - rotation: number; + rotation: number; + scale: Phaser.Point; /** - * The scale factor of the object. + * The top coordinate of this Group. + * + * It is derived by calling `getBounds`, calculating the Groups dimensions based on its + * visible children. + * + * Note that no ancestors are factored into the result, meaning that if this Group is + * nested within another Group, with heavy transforms on it, the result of this property + * is likely to be incorrect. It is safe to get and set this property if the Group is a + * top-level descendant of Phaser.World, or untransformed parents. */ - scale: Phaser.Point; + top: number; /** * Total number of existing children in the group. */ - total: number; + total: number; /** * Internal Phaser Type value. */ - type: number; + type: number; /** * The visible state of the group. Non-visible Groups and all of their children are not rendered. */ - visible: boolean; + visible: boolean; /** * The z-depth value of this object within its parent container/Group - the World is a Group as well. * This value must be unique for each child in a Group. */ - z: number; - + z: number; + /** * Adds an existing object as the top child in this group. @@ -9248,7 +9498,7 @@ declare module Phaser { * @param index The index within the group to insert the child to. Where 0 is the bottom of the Group. * @return The child that was added to the group. */ - add(child: any, silent?: boolean, index?: number): any; + add(child: any, silent?: boolean, index?: number): any; /** * Adds the amount to the given property on all children in this group. @@ -9260,7 +9510,7 @@ declare module Phaser { * @param checkAlive If true the property will only be changed if the child is alive. * @param checkVisible If true the property will only be changed if the child is visible. */ - addAll(property: string, amount: number, checkAlive: boolean, checkVisible: boolean): void; + addAll(property: string, amount: number, checkAlive: boolean, checkVisible: boolean): void; /** * Adds an existing object to this group. @@ -9276,7 +9526,7 @@ declare module Phaser { * @param silent If true the child will not dispatch the `onAddedToGroup` event. * @return The child that was added to the group. */ - addAt(child: any, index: number, silent?: boolean): any; + addAt(child: any, index: number, silent?: boolean): any; /** * Adds an array of existing Display Objects to this Group. @@ -9294,7 +9544,7 @@ declare module Phaser { * @param silent If true the children will not dispatch the `onAddedToGroup` event. * @return The array of children or Group of children that were added to this Group. */ - addMultiple(children: any[], silent?: boolean): any[]; + addMultiple(children: any[], silent?: boolean): any[]; /** * Adds a child of this Group into the hash array. @@ -9303,7 +9553,7 @@ declare module Phaser { * @param child The display object to add to this Groups hash. Must be a member of this Group already and not present in the hash. * @return True if the child was successfully added to the hash, otherwise false. */ - addToHash(child: PIXI.DisplayObject): boolean; + addToHash(child: PIXI.DisplayObject): boolean; /** * This method iterates through all children in the Group (regardless if they are visible or exist) @@ -9355,7 +9605,88 @@ declare module Phaser { * @param position The position constant. One of `Phaser.TOP_LEFT` (default), `Phaser.TOP_CENTER`, `Phaser.TOP_RIGHT`, `Phaser.LEFT_CENTER`, `Phaser.CENTER`, `Phaser.RIGHT_CENTER`, `Phaser.BOTTOM_LEFT`, `Phaser.BOTTOM_CENTER` or `Phaser.BOTTOM_RIGHT`. * @param offset Optional index to start the alignment from. Defaults to zero, the first child in the Group, but can be set to any valid child index value. */ - align(rows: number, columns: number, cellWidth: number, cellHeight: number, position?: number, offset?: number): void; + align(rows: number, columns: number, cellWidth: number, cellHeight: number, position?: number, offset?: number): void; + + /** + * Aligns this Group within another Game Object, or Rectangle, known as the + * 'container', to one of 9 possible positions. + * + * The container must be a Game Object, or Phaser.Rectangle object. This can include properties + * such as `World.bounds` or `Camera.view`, for aligning Groups within the world + * and camera bounds. Or it can include other Sprites, Images, Text objects, BitmapText, + * TileSprites or Buttons. + * + * Please note that aligning a Group to another Game Object does **not** make it a child of + * the container. It simply modifies its position coordinates so it aligns with it. + * + * The position constants you can use are: + * + * `Phaser.TOP_LEFT`, `Phaser.TOP_CENTER`, `Phaser.TOP_RIGHT`, `Phaser.LEFT_CENTER`, + * `Phaser.CENTER`, `Phaser.RIGHT_CENTER`, `Phaser.BOTTOM_LEFT`, + * `Phaser.BOTTOM_CENTER` and `Phaser.BOTTOM_RIGHT`. + * + * Groups are placed in such a way that their _bounds_ align with the + * container, taking into consideration rotation and scale of its children. + * This allows you to neatly align Groups, irrespective of their position value. + * + * The optional `offsetX` and `offsetY` arguments allow you to apply extra spacing to the final + * aligned position of the Group. For example: + * + * `group.alignIn(background, Phaser.BOTTOM_RIGHT, -20, -20)` + * + * Would align the `group` to the bottom-right, but moved 20 pixels in from the corner. + * Think of the offsets as applying an adjustment to the containers bounds before the alignment takes place. + * So providing a negative offset will 'shrink' the container bounds by that amount, and providing a positive + * one expands it. + * + * @param container The Game Object or Rectangle with which to align this Group to. Can also include properties such as `World.bounds` or `Camera.view`. + * @param position The position constant. One of `Phaser.TOP_LEFT` (default), `Phaser.TOP_CENTER`, `Phaser.TOP_RIGHT`, `Phaser.LEFT_CENTER`, `Phaser.CENTER`, `Phaser.RIGHT_CENTER`, `Phaser.BOTTOM_LEFT`, `Phaser.BOTTOM_CENTER` or `Phaser.BOTTOM_RIGHT`. + * @param offsetX A horizontal adjustment of the Containers bounds, applied to the aligned position of the Game Object. Use a negative value to shrink the bounds, positive to increase it. + * @param offsetY A vertical adjustment of the Containers bounds, applied to the aligned position of the Game Object. Use a negative value to shrink the bounds, positive to increase it. + * @return This Group. + */ + alignIn(container: Phaser.Rectangle | Phaser.Sprite | Phaser.Image | Phaser.Text | Phaser.BitmapText | Phaser.Button | Phaser.Graphics | Phaser.TileSprite, position?: number, offsetX?: number, offsetY?: number): Phaser.Group; + + /** + * Aligns this Group to the side of another Game Object, or Rectangle, known as the + * 'parent', in one of 11 possible positions. + * + * The parent must be a Game Object, or Phaser.Rectangle object. This can include properties + * such as `World.bounds` or `Camera.view`, for aligning Groups within the world + * and camera bounds. Or it can include other Sprites, Images, Text objects, BitmapText, + * TileSprites or Buttons. + * + * Please note that aligning a Group to another Game Object does **not** make it a child of + * the parent. It simply modifies its position coordinates so it aligns with it. + * + * The position constants you can use are: + * + * `Phaser.TOP_LEFT` (default), `Phaser.TOP_CENTER`, `Phaser.TOP_RIGHT`, `Phaser.LEFT_TOP`, + * `Phaser.LEFT_CENTER`, `Phaser.LEFT_BOTTOM`, `Phaser.RIGHT_TOP`, `Phaser.RIGHT_CENTER`, + * `Phaser.RIGHT_BOTTOM`, `Phaser.BOTTOM_LEFT`, `Phaser.BOTTOM_CENTER` + * and `Phaser.BOTTOM_RIGHT`. + * + * Groups are placed in such a way that their _bounds_ align with the + * parent, taking into consideration rotation and scale of the children. + * This allows you to neatly align Groups, irrespective of their position value. + * + * The optional `offsetX` and `offsetY` arguments allow you to apply extra spacing to the final + * aligned position of the Group. For example: + * + * `group.alignTo(background, Phaser.BOTTOM_RIGHT, -20, -20)` + * + * Would align the `group` to the bottom-right, but moved 20 pixels in from the corner. + * Think of the offsets as applying an adjustment to the parents bounds before the alignment takes place. + * So providing a negative offset will 'shrink' the parent bounds by that amount, and providing a positive + * one expands it. + * + * @param parent The Game Object or Rectangle with which to align this Group to. Can also include properties such as `World.bounds` or `Camera.view`. + * @param position The position constant. One of `Phaser.TOP_LEFT`, `Phaser.TOP_CENTER`, `Phaser.TOP_RIGHT`, `Phaser.LEFT_TOP`, `Phaser.LEFT_CENTER`, `Phaser.LEFT_BOTTOM`, `Phaser.RIGHT_TOP`, `Phaser.RIGHT_CENTER`, `Phaser.RIGHT_BOTTOM`, `Phaser.BOTTOM_LEFT`, `Phaser.BOTTOM_CENTER` or `Phaser.BOTTOM_RIGHT`. + * @param offsetX A horizontal adjustment of the Containers bounds, applied to the aligned position of the Game Object. Use a negative value to shrink the bounds, positive to increase it. + * @param offsetY A vertical adjustment of the Containers bounds, applied to the aligned position of the Game Object. Use a negative value to shrink the bounds, positive to increase it. + * @return This Group. + */ + alignTo(container: Phaser.Rectangle | Phaser.Sprite | Phaser.Image | Phaser.Text | Phaser.BitmapText | Phaser.Button | Phaser.Graphics | Phaser.TileSprite, position?: number, offsetX?: number, offsetY?: number): Phaser.Group; /** * Brings the given child to the top of this group so it renders above all other children. @@ -9363,7 +9694,7 @@ declare module Phaser { * @param child The child to bring to the top of this group. * @return The child that was moved. */ - bringToTop(child: any): any; + bringToTop(child: any): any; /** * Calls a function, specified by name, on all on children. @@ -9375,7 +9706,7 @@ declare module Phaser { * @param context A string containing the context under which the method will be executed. Set to null to default to the child. * @param args Additional parameters that will be passed to the method. */ - callAll(method: string, context: any, ...parameters: any[]): void; + callAll(method: string, context: any, ...parameters: any[]): void; /** * Calls a function, specified by name, on all children in the group who exist (or do not exist). @@ -9386,7 +9717,7 @@ declare module Phaser { * @param existsValue Only children with exists=existsValue will be called. * @param parameter Additional parameters that will be passed to the callback. */ - callAllExists(callback: string, existsValue: boolean, ...parameters: any[]): void; + callAllExists(callback: string, existsValue: boolean, ...parameters: any[]): void; /** * Returns a reference to a function that exists on a child of the group based on the given callback array. @@ -9395,7 +9726,7 @@ declare module Phaser { * @param callback The array of function names. * @param length The size of the array (pre-calculated in callAll). */ - callbackFromArray(child: any, callback: Function, length: number): void; + callbackFromArray(child: any, callback: Function, length: number): void; /** * Quickly check that the same property across all children of this group is equal to the given value. @@ -9408,7 +9739,7 @@ declare module Phaser { * @param checkVisible If set then only children with visible=true will be checked. This includes any Groups that are children. * @param force If `force` is true then the property will be checked on the child regardless if it already exists or not. If true and the property doesn't exist, false will be returned. */ - checkAll(key: string[], value: any, checkAlive?: boolean, checkVisible?: boolean, force?: boolean): boolean; + checkAll(key: string[], value: any, checkAlive?: boolean, checkVisible?: boolean, force?: boolean): boolean; /** * Checks a property for the given value on the child. @@ -9419,19 +9750,19 @@ declare module Phaser { * @param force If `force` is true then the property will be checked on the child regardless if it already exists or not. If true and the property doesn't exist, false will be returned. * @return True if the property was was equal to value, false if not. */ - checkProperty(child: any, key: string[], value: any, force?: boolean): boolean; + checkProperty(child: any, key: string[], value: any, force?: boolean): boolean; /** * Get the number of dead children in this group. * @return The number of children flagged as dead. */ - countDead(): number; + countDead(): number; /** * Get the number of living children in this group. * @return The number of children flagged as alive. */ - countLiving(): number; + countLiving(): number; /** * Creates a new Phaser.Sprite object and adds it to the top of this group. @@ -9455,7 +9786,7 @@ declare module Phaser { * @param index The index within the group to insert the child to. Where 0 is the bottom of the Group. * @return The child that was created: will be a {@link Phaser.Sprite} unless {@link #classType} has been changed. */ - create(x: number, y: number, key?: string | Phaser.RenderTexture | Phaser.BitmapData | Phaser.Video | PIXI.Texture, frame?: string | number, exists?: boolean, index?: number): any; + create(x: number, y: number, key?: string | Phaser.RenderTexture | Phaser.BitmapData | Phaser.Video | PIXI.Texture, frame?: string | number, exists?: boolean, index?: number): any; /** * Creates multiple Phaser.Sprite objects and adds them to the top of this Group. @@ -9503,7 +9834,7 @@ declare module Phaser { * @param exists The default exists state of the Sprite. * @return An array containing all of the Sprites that were created. */ - createMultiple(quantity: number, key: string | string[], frame?: any | any[], exists?: boolean): any[]; + createMultiple(quantity: number, key: string | string[], frame?: any | any[], exists?: boolean): any[]; /** * Sort the children in the group according to custom sort function. @@ -9514,7 +9845,7 @@ declare module Phaser { * @param sortHandler The custom sort function. * @param context The context in which the sortHandler is called. */ - customSort(sortHandler: Function, context?: any): void; + customSort(sortHandler: Function, context?: any): void; /** * Destroys this group. @@ -9524,7 +9855,7 @@ declare module Phaser { * @param destroyChildren If true `destroy` will be invoked on each removed child. - Default: true * @param soft A 'soft destroy' (set to true) doesn't remove this group from its parent or null the game reference. Set to false and it does. */ - destroy(destroyChildren?: boolean, soft?: boolean): void; + destroy(destroyChildren?: boolean, soft?: boolean): void; /** * Divides the given property by the amount on all children in this group. @@ -9536,7 +9867,7 @@ declare module Phaser { * @param checkAlive If true the property will only be changed if the child is alive. * @param checkVisible If true the property will only be changed if the child is visible. */ - divideAll(property: string, amount: number, checkAlive?: boolean, checkVisible?: boolean): void; + divideAll(property: string, amount: number, checkAlive?: boolean, checkVisible?: boolean): void; /** * Call a function on each child in this group. @@ -9554,7 +9885,7 @@ declare module Phaser { * @param checkExists If set only children matching for which `exists` is true will be passed to the callback, otherwise all children will be passed. * @param args Additional arguments to pass to the callback function, after the child item. - Default: (none) */ - forEach(callback: Function, callbackContext: any, checkExists?: boolean, ...args: any[]): void; + forEach(callback: Function, callbackContext: any, checkExists?: boolean, ...args: any[]): void; /** * Call a function on each alive child in this group. @@ -9565,7 +9896,7 @@ declare module Phaser { * @param callbackContext The context in which the function should be called (usually 'this'). * @param args Additional arguments to pass to the callback function, after the child item. - Default: (none) */ - forEachAlive(callback: Function, callbackContext: any, ...args: any[]): void; + forEachAlive(callback: Function, callbackContext: any, ...args: any[]): void; /** * Call a function on each dead child in this group. @@ -9576,7 +9907,7 @@ declare module Phaser { * @param callbackContext The context in which the function should be called (usually 'this'). * @param args Additional arguments to pass to the callback function, after the child item. - Default: (none) */ - forEachDead(callback: Function, callbackContext: any, ...args: any[]): void; + forEachDead(callback: Function, callbackContext: any, ...args: any[]): void; /** * Call a function on each existing child in this group. @@ -9587,7 +9918,7 @@ declare module Phaser { * @param callbackContext The context in which the function should be called (usually 'this'). * @param args Additional arguments to pass to the callback function, after the child item. - Default: (none) */ - forEachExists(callback: Function, callbackContext: any): void; + forEachExists(callback: Function, callbackContext: any): void; /** * Find children matching a certain predicate. @@ -9605,7 +9936,7 @@ declare module Phaser { * @param checkExists If true, only existing can be selected; otherwise all children can be selected and will be passed to the predicate. * @return Returns an array list containing all the children that the predicate returned true for */ - filter(predicate: Function, checkExists?: boolean): ArraySet; + filter(predicate: Function, checkExists?: boolean): ArraySet; /** * Returns the child found at the given index within this group. @@ -9613,7 +9944,7 @@ declare module Phaser { * @param index The index to return the child from. * @return The child that was found at the given index, or -1 for an invalid index. */ - getAt(index: number): PIXI.DisplayObject | number; + getAt(index: number): PIXI.DisplayObject | number; /** * Returns the child at the bottom of this group. @@ -9621,7 +9952,7 @@ declare module Phaser { * The bottom child the child being displayed (rendered) below every other child. * @return The child at the bottom of the Group. */ - getBottom(): any; + getBottom(): any; /** * Searches the Group for the first instance of a child with the `name` @@ -9631,19 +9962,26 @@ declare module Phaser { * @param name The name to search for. * @return The first child with a matching name, or null if none were found. */ - getByName(name: string): any; + getByName(name: string): any; /** - * Get the closest child to given Object. + * Get the closest child to given Object, with optional callback to filter children. * * This can be a Sprite, Group, Image or any object with public x and y properties. * * 'close' is determined by the distance from the objects `x` and `y` properties compared to the childs `x` and `y` properties. * + * You can use the optional `callback` argument to apply your own filter to the distance checks. + * If the child is closer then the previous child, it will be sent to `callback` as the first argument, + * with the distance as the second. The callback should return `true` if it passes your + * filtering criteria, otherwise it should return `false`. + * * @param object The object used to determine the distance. This can be a Sprite, Group, Image or any object with public x and y properties. - * @return The child closest to given object, or null if no child was found. + * @param callback The function that each child will be evaluated against. Each child of the group will be passed to it as its first parameter, with the distance as the second. It should return `true` if the child passes the matching criteria. + * @param callbackContext The context in which the function should be called (usually 'this'). + * @return The child closest to given object, or `null` if no child was found. */ - getClosestTo(object: any): any; + getClosestTo(object: any, callback?: Function, callbackContext?: any): any; /** * Get the first child that is alive (`child.alive === true`). @@ -9664,7 +10002,7 @@ declare module Phaser { * @param frame If this Sprite is using part of a sprite sheet or texture atlas you can specify the exact frame to use by giving a string or numeric index. * @return The alive dead child, or `null` if none found and `createIfNull` was false. */ - getFirstAlive(createIfNull?: boolean, x?: number, y?: number, key?: string | Phaser.RenderTexture | Phaser.BitmapData | Phaser.Video | PIXI.Texture, frame?: string | number): any; + getFirstAlive(createIfNull?: boolean, x?: number, y?: number, key?: string | Phaser.RenderTexture | Phaser.BitmapData | Phaser.Video | PIXI.Texture, frame?: string | number): any; /** * Get the first child that is dead (`child.alive === false`). @@ -9685,7 +10023,7 @@ declare module Phaser { * @param frame If this Sprite is using part of a sprite sheet or texture atlas you can specify the exact frame to use by giving a string or numeric index. * @return The first dead child, or `null` if none found and `createIfNull` was false. */ - getFirstDead(createIfNull?: boolean, x?: number, y?: number, key?: string | Phaser.RenderTexture | Phaser.BitmapData | Phaser.Video | PIXI.Texture, frame?: string | number): any; + getFirstDead(createIfNull?: boolean, x?: number, y?: number, key?: string | Phaser.RenderTexture | Phaser.BitmapData | Phaser.Video | PIXI.Texture, frame?: string | number): any; /** * Get the first display object that exists, or doesn't exist. @@ -9705,19 +10043,26 @@ declare module Phaser { * @param frame If this Sprite is using part of a sprite sheet or texture atlas you can specify the exact frame to use by giving a string or numeric index. * @return The first child, or `null` if none found and `createIfNull` was false. */ - getFirstExists(exists: boolean, createIfNull?: boolean, x?: number, y?: number, key?: string | Phaser.RenderTexture | Phaser.BitmapData | Phaser.Video | PIXI.Texture, frame?: string | number): any; + getFirstExists(exists: boolean, createIfNull?: boolean, x?: number, y?: number, key?: string | Phaser.RenderTexture | Phaser.BitmapData | Phaser.Video | PIXI.Texture, frame?: string | number): any; /** - * Get the child furthest away from the given Object. + * Get the child furthest away from the given Object, with optional callback to filter children. * * This can be a Sprite, Group, Image or any object with public x and y properties. * * 'furthest away' is determined by the distance from the objects `x` and `y` properties compared to the childs `x` and `y` properties. * + * You can use the optional `callback` argument to apply your own filter to the distance checks. + * If the child is closer then the previous child, it will be sent to `callback` as the first argument, + * with the distance as the second. The callback should return `true` if it passes your + * filtering criteria, otherwise it should return `false`. + * * @param object The object used to determine the distance. This can be a Sprite, Group, Image or any object with public x and y properties. - * @return The child furthest from the given object, or null if no child was found. + * @param callback The function that each child will be evaluated against. Each child of the group will be passed to it as its first parameter, with the distance as the second. It should return `true` if the child passes the matching criteria. + * @param callbackContext The context in which the function should be called (usually 'this'). + * @return The child furthest from the given object, or `null` if no child was found. */ - getFurthestFrom(object: any): any; + getFurthestFrom(object: any, callback?: Function, callbackContext?: any): any; /** * Get the index position of the given child in this group, which should match the child's `z` property. @@ -9725,7 +10070,7 @@ declare module Phaser { * @param child The child to get the index for. * @return The index of the child or -1 if it's not a member of this group. */ - getIndex(child: any): number; + getIndex(child: any): number; /** * Returns a random child from the group. @@ -9734,7 +10079,7 @@ declare module Phaser { * @param length Restriction on the number of values you want to randomly select from. - Default: (to top) * @return A random child of this Group. */ - getRandom(startIndex?: number, length?: number): any; + getRandom(startIndex?: number, length?: number): any; /** * Return the child at the top of this group. @@ -9742,7 +10087,7 @@ declare module Phaser { * The top child is the child displayed (rendered) above every other child. * @return The child at the top of the Group. */ - getTop(): any; + getTop(): any; /** * Checks if the child has the given property. @@ -9753,7 +10098,7 @@ declare module Phaser { * @param key An array of strings that make up the property. * @return True if the child has the property, otherwise false. */ - hasProperty(child: any, key: string[]): boolean; + hasProperty(child: any, key: string[]): boolean; /** * Iterates over the children of the group performing one of several actions for matched children. @@ -9782,7 +10127,7 @@ declare module Phaser { * @param args The arguments supplied to to the callback; the first array index (argument) will be replaced with the matched child. - Default: (none) * @return Returns either an integer (for RETURN_TOTAL), the first matched child (for RETURN_CHILD), or null. */ - iterate(key: string, value: any, returnType: number, callback?: Function, callbackContext?: any, ...args: any[]): any; + iterate(key: string, value: any, returnType: number, callback?: Function, callbackContext?: any, ...args: any[]): any; /** * Moves all children from this Group to the Group given. @@ -9791,7 +10136,7 @@ declare module Phaser { * @param silent If true the children will not dispatch the `onAddedToGroup` event for the new Group. * @return The Group to which all the children were moved. */ - moveAll(group: Phaser.Group, silent?: boolean): Phaser.Group; + moveAll(group: Phaser.Group, silent?: boolean): Phaser.Group; /** * Moves the given child down one place in this group unless it's already at the bottom. @@ -9799,7 +10144,7 @@ declare module Phaser { * @param child The child to move down in the group. * @return The child that was moved. */ - moveDown(child: any): any; + moveDown(child: any): any; /** * Moves the given child up one place in this group unless it's already at the top. @@ -9807,7 +10152,7 @@ declare module Phaser { * @param child The child to move up in the group. * @return The child that was moved. */ - moveUp(child: any): any; + moveUp(child: any): any; /** * Multiplies the given property by the amount on all children in this group. @@ -9819,7 +10164,7 @@ declare module Phaser { * @param checkAlive If true the property will only be changed if the child is alive. * @param checkVisible If true the property will only be changed if the child is visible. */ - multiplyAll(property: string, amount: number, checkAlive: boolean, checkVisible: boolean): void; + multiplyAll(property: string, amount: number, checkAlive: boolean, checkVisible: boolean): void; /** * Advances the group cursor to the next (higher) object in the group. @@ -9827,17 +10172,17 @@ declare module Phaser { * If the cursor is at the end of the group (top child) it is moved the start of the group (bottom child). * @return The child the cursor now points to. */ - next(): void; + next(): void; /** * The core postUpdate - as called by World. */ - postUpdate(): void; + postUpdate(): void; /** * The core preUpdate - as called by World. */ - preUpdate(): void; + preUpdate(): void; /** * Moves the group cursor to the previous (lower) child in the group. @@ -9845,7 +10190,7 @@ declare module Phaser { * If the cursor is at the start of the group (bottom child) it is moved to the end (top child). * @return The child the cursor now points to. */ - previous(): void; + previous(): void; /** * Removes the given child from this group. @@ -9859,7 +10204,7 @@ declare module Phaser { * @param silent If true the the child will not dispatch the `onRemovedFromGroup` event. * @return true if the child was removed from this group, otherwise false. */ - remove(child: any, destroy?: boolean, silent?: boolean): boolean; + remove(child: any, destroy?: boolean, silent?: boolean): boolean; /** * Removes all children from this Group, but does not remove the group from its parent. @@ -9873,7 +10218,7 @@ declare module Phaser { * @param silent If true the children will not dispatch their `onRemovedFromGroup` events. * @param destroyTexture If true, and if the `destroy` argument is also true, the BaseTexture belonging to the Child is also destroyed. Note that if another Game Object is sharing the same BaseTexture it will invalidate it. */ - removeAll(destroy?: boolean, silent?: boolean, destroyTexture?: boolean): void; + removeAll(destroy?: boolean, silent?: boolean, destroyTexture?: boolean): void; /** * Removes all children from this group whose index falls beteen the given startIndex and endIndex values. @@ -9883,7 +10228,7 @@ declare module Phaser { * @param destroy If true `destroy` will be invoked on each removed child. * @param silent If true the children will not dispatch their `onRemovedFromGroup` events. */ - removeBetween(startIndex: number, endIndex?: number, destroy?: boolean, silent?: boolean): void; + removeBetween(startIndex: number, endIndex?: number, destroy?: boolean, silent?: boolean): void; /** * Removes a child of this Group from the hash array. @@ -9892,7 +10237,7 @@ declare module Phaser { * @param child The display object to remove from this Groups hash. Must be a member of this Group and in the hash. * @return True if the child was successfully removed from the hash, otherwise false. */ - removeFromHash(child: PIXI.DisplayObject): boolean; + removeFromHash(child: PIXI.DisplayObject): boolean; /** * Replaces a child of this Group with the given newChild. The newChild cannot be a member of this Group. @@ -9905,7 +10250,7 @@ declare module Phaser { * @param newChild The child to be inserted into this group. * @return Returns the oldChild that was replaced within this group. */ - replace(oldChild: any, newChild: any): any; + replace(oldChild: any, newChild: any): any; /** * Takes a child and if the `x` and `y` arguments are given it calls `child.reset(x, y)` on it. @@ -9921,7 +10266,7 @@ declare module Phaser { * @param frame If this Sprite is using part of a sprite sheet or texture atlas you can specify the exact frame to use by giving a string or numeric index. * @return The child that was reset: usually a {@link Phaser.Sprite}. */ - resetChild(child: any, x?: number, y?: number, key?: string | Phaser.RenderTexture | Phaser.BitmapData | Phaser.Video | PIXI.Texture, frame?: string | number): any; + resetChild(child: any, x?: number, y?: number, key?: string | Phaser.RenderTexture | Phaser.BitmapData | Phaser.Video | PIXI.Texture, frame?: string | number): any; /** * Sets the group cursor to the first child in the group. @@ -9931,14 +10276,14 @@ declare module Phaser { * @param index Set the cursor to point to a specific index. * @return The child the cursor now points to. */ - resetCursor(index?: number): any; + resetCursor(index?: number): any; /** * Reverses all children in this group. * * This operation applies only to immediate children and does not propagate to subgroups. */ - reverse(): void; + reverse(): void; /** * Sends the given child to the bottom of this group so it renders below all other children. @@ -9946,7 +10291,7 @@ declare module Phaser { * @param child The child to send to the bottom of this group. * @return The child that was moved. */ - sendToBack(child: any): any; + sendToBack(child: any): any; /** * Quickly set a property on a single child of this group to a new value. @@ -9962,7 +10307,7 @@ declare module Phaser { * @param force If `force` is true then the property will be set on the child regardless if it already exists or not. If false and the property doesn't exist, nothing will be set. * @return True if the property was set, false if not. */ - set(child: any, key: string[], value: any, operation?: number, force?: boolean): boolean; + set(child: any, key: string[], value: any, operation?: number, force?: boolean): boolean; /** * Quickly set the same property across all children of this group to a new value. @@ -9979,7 +10324,7 @@ declare module Phaser { * @param operation Controls how the value is assigned. A value of 0 replaces the value with the new one. A value of 1 adds it, 2 subtracts it, 3 multiplies it and 4 divides it. * @param force If `force` is true then the property will be set on the child regardless if it already exists or not. If false and the property doesn't exist, nothing will be set. */ - setAll(key: string, value: any, checkAlive?: boolean, checkVisible?: boolean, operation?: number, force?: boolean): void; + setAll(key: string, value: any, checkAlive?: boolean, checkVisible?: boolean, operation?: number, force?: boolean): void; /** * Quickly set the same property across all children of this group, and any child Groups, to a new value. @@ -9996,7 +10341,7 @@ declare module Phaser { * @param operation Controls how the value is assigned. A value of 0 replaces the value with the new one. A value of 1 adds it, 2 subtracts it, 3 multiplies it and 4 divides it. * @param force If `force` is true then the property will be set on the child regardless if it already exists or not. If false and the property doesn't exist, nothing will be set. */ - setAllChildren(key: string, value: any, checkAlive?: boolean, checkVisible?: boolean, operation?: number, force?: boolean): void; + setAllChildren(key: string, value: any, checkAlive?: boolean, checkVisible?: boolean, operation?: number, force?: boolean): void; /** * Sets a property to the given value on the child. The operation parameter controls how the value is set. @@ -10015,7 +10360,7 @@ declare module Phaser { * @param force If `force` is true then the property will be set on the child regardless if it already exists or not. If false and the property doesn't exist, nothing will be set. * @return True if the property was set, false if not. */ - setProperty(child: any, key: string[], value: any, operation?: number, force?: boolean): boolean; + setProperty(child: any, key: string[], value: any, operation?: number, force?: boolean): boolean; /** * Sort the children in the group according to a particular key and ordering. @@ -10030,7 +10375,7 @@ declare module Phaser { * @param key The name of the property to sort on. Defaults to the objects z-depth value. - Default: 'z' * @param order Order ascending ({@link Phaser.Group.SORT_ASCENDING SORT_ASCENDING}) or descending ({@link Phaser.Group.SORT_DESCENDING SORT_DESCENDING}). - Default: Phaser.Group.SORT_ASCENDING */ - sort(key?: string, order?: number): void; + sort(key?: string, order?: number): void; /** * Subtracts the amount from the given property on all children in this group. @@ -10042,7 +10387,7 @@ declare module Phaser { * @param checkAlive If true the property will only be changed if the child is alive. * @param checkVisible If true the property will only be changed if the child is visible. */ - subAll(property: string, amount: number, checkAlive: boolean, checkVisible: boolean): void; + subAll(property: string, amount: number, checkAlive: boolean, checkVisible: boolean): void; /** * Swaps the position of two children in this group. @@ -10052,19 +10397,19 @@ declare module Phaser { * @param child1 The first child to swap. * @param child2 The second child to swap. */ - swap(child1: any, child2: any): boolean; + swap(child1: any, child2: any): boolean; /** * The core update - as called by World. */ - update(): void; + update(): void; /** * Internal method that re-applies all of the children's Z values. * * This must be called whenever children ordering is altered so that their `z` indices are correctly updated. */ - updateZ(): void; + updateZ(): void; /** * Positions the child found at the given index within this group to the given x and y coordinates. @@ -10073,17 +10418,17 @@ declare module Phaser { * @param x The new x position of the child. * @param y The new y position of the child. */ - xy(index: number, x: number, y: number): void; - - } - + xy(index: number, x: number, y: number): void; + + } + /** * An Image is a light-weight object you can use to display anything that doesn't need physics or animation. * It can still rotate, scale, crop and receive input events. This makes it perfect for logos, backgrounds, simple buttons and other non-Sprite graphics. */ - class Image extends PIXI.Sprite { - + class Image extends PIXI.Sprite { + /** * An Image is a light-weight object you can use to display anything that doesn't need physics or animation. @@ -10095,8 +10440,8 @@ declare module Phaser { * @param key The texture used by the Image during rendering. It can be a string which is a reference to the Cache entry, or an instance of a RenderTexture, BitmapData or PIXI.Texture. * @param frame If this Image is using part of a sprite sheet or texture atlas you can specify the exact frame to use by giving a string or numeric index. */ - constructor(game: Phaser.Game, x: number, y: number, key: string | Phaser.RenderTexture | Phaser.BitmapData | PIXI.Texture, frame?: string | number); - + constructor(game: Phaser.Game, x: number, y: number, key: string | Phaser.RenderTexture | Phaser.BitmapData | PIXI.Texture, frame?: string | number); + /** * A useful flag to control if the Game Object is alive or dead. @@ -10108,7 +10453,7 @@ declare module Phaser { * However you can use `Group.getFirstAlive` in conjunction with this property for fast object pooling and recycling. * Default: true */ - alive: boolean; + alive: boolean; /** * The angle property is the rotation of the Game Object in *degrees* from its original orientation. @@ -10121,7 +10466,7 @@ declare module Phaser { * If you wish to work in radians instead of degrees you can use the property `rotation` instead. * Working in radians is slightly faster as it doesn't have to perform any calculations. */ - angle: number; + angle: number; /** * The anchor sets the origin point of the texture. @@ -10129,13 +10474,13 @@ declare module Phaser { * Setting than anchor to 0.5,0.5 means the textures origin is centered * Setting the anchor to 1,1 would mean the textures origin points will be the bottom right corner */ - anchor: Phaser.Point; + anchor: Phaser.Point; /** * If the Game Object is enabled for animation (such as a Phaser.Sprite) this is a reference to its AnimationManager instance. * Through it you can create, play, pause and stop animations. */ - animations: Phaser.AnimationManager; + animations: Phaser.AnimationManager; /** * A Game Object with `autoCull` set to true will check its bounds against the World Camera every frame. @@ -10145,49 +10490,49 @@ declare module Phaser { * This is a relatively expensive operation, especially if enabled on hundreds of Game Objects. So enable it only if you know it's required, * or you have tested performance and find it acceptable. */ - autoCull: boolean; + autoCull: boolean; /** * The sum of the y and height properties. * This is the same as `y + height - offsetY`. */ - bottom: number; + bottom: number; /** * The x/y coordinate offset applied to the top-left of the camera that this Game Object will be drawn at if `fixedToCamera` is true. * * The values are relative to the top-left of the camera view and in addition to any parent of the Game Object on the display list. */ - cameraOffset: Phaser.Point; + cameraOffset: Phaser.Point; /** * The center x coordinate of the Game Object. * This is the same as `(x - offsetX) + (width / 2)`. */ - centerX: number; + centerX: number; /** * The center y coordinate of the Game Object. * This is the same as `(y - offsetY) + (height / 2)`. */ - centerY: number; + centerY: number; /** * The components this Game Object has installed. */ - components: any; + components: any; /** * The Rectangle used to crop the texture this Game Object uses. * Set this property via `crop`. * If you modify this property directly you must call `updateCrop` in order to have the change take effect. */ - cropRect: Phaser.Rectangle; + cropRect: Phaser.Rectangle; /** * Does this texture require a custom render call? (as set by BitmapData, Video, etc) */ - customRender: boolean; + customRender: boolean; /** * An empty Object that belongs to this Game Object. @@ -10196,33 +10541,33 @@ declare module Phaser { * without polluting the Game Object directly. * Default: {} */ - data: any; + data: any; /** * A debug flag designed for use with `Game.enableStep`. */ - debug: boolean; - deltaX: number; - deltaY: number; - deltaZ: number; + debug: boolean; + deltaX: number; + deltaY: number; + deltaZ: number; /** * As a Game Object runs through its destroy method this flag is set to true, * and can be checked in any sub-systems or plugins it is being destroyed from. */ - destroyPhase: boolean; + destroyPhase: boolean; /** * All Phaser Game Objects have an Events class which contains all of the events that are dispatched when certain things happen to this * Game Object, or any of its components. */ - events: Phaser.Events; + events: Phaser.Events; /** * Controls if this Sprite is processed by the core Phaser game loops and Group loops. * Default: true */ - exists: boolean; + exists: boolean; /** * A Game Object that is "fixed" to the camera uses its x/y coordinates as offsets from the top left of the camera during rendering. @@ -10239,7 +10584,7 @@ declare module Phaser { * * Be careful not to set `fixedToCamera` on Game Objects which are in Groups that already have `fixedToCamera` enabled on them. */ - fixedToCamera: boolean; + fixedToCamera: boolean; /** * Gets or sets the current frame index of the texture being used to render this Game Object. @@ -10253,7 +10598,7 @@ declare module Phaser { * * If you wish to fully replace the texture being used see `loadTexture`. */ - frame: string | number; + frame: string | number; /** * Gets or sets the current frame name of the texture being used to render this Game Object. @@ -10267,24 +10612,24 @@ declare module Phaser { * * If you wish to fully replace the texture being used see `loadTexture`. */ - frameName: string; + frameName: string; /** * A Game Object is considered `fresh` if it has just been created or reset and is yet to receive a renderer transform update. * This property is mostly used internally by the physics systems, but is exposed for the use of plugins. */ - fresh: boolean; + fresh: boolean; /** * A reference to the currently running Game. */ - game: Phaser.Game; + game: Phaser.Game; /** * Checks if the Game Objects bounds intersect with the Game Camera bounds. * Returns `true` if they do, otherwise `false` if fully outside of the Cameras bounds. */ - inCamera: boolean; + inCamera: boolean; /** * The Input Handler for this Game Object. @@ -10293,7 +10638,7 @@ declare module Phaser { * * After you have done this, this property will be a reference to the Phaser InputHandler. */ - input: Phaser.InputHandler; + input: Phaser.InputHandler; /** * By default a Game Object won't process any input events. By setting `inputEnabled` to true a Phaser.InputHandler is created @@ -10304,9 +10649,13 @@ declare module Phaser { * Note that Input related events are dispatched from `this.events`, i.e.: `events.onInputDown`. * * If you set this property to false it will stop the Input Handler from processing any more input events. + * + * If you want to _temporarily_ disable input for a Game Object, then it's better to set + * `input.enabled = false`, as it won't reset any of the Input Handlers internal properties. + * You can then toggle this back on as needed. */ - inputEnabled: boolean; - inWorld: boolean; + inputEnabled: boolean; + inWorld: boolean; /** * The key of the image or texture used by this Game Object during rendering. @@ -10315,7 +10664,7 @@ declare module Phaser { * If a Game Object is created without a key it is automatically assigned the key `__default` which is a 32x32 transparent PNG stored within the Cache. * If a Game Object is given a key which doesn't exist in the Image Cache it is re-assigned the key `__missing` which is a 32x32 PNG of a green box with a line through it. */ - key: string | Phaser.RenderTexture | Phaser.BitmapData | Phaser.Video | PIXI.Texture; + key: string | Phaser.RenderTexture | Phaser.BitmapData | Phaser.Video | PIXI.Texture; /** * The lifespan allows you to give a Game Object a lifespan in milliseconds. @@ -10327,33 +10676,33 @@ declare module Phaser { * * Very handy for particles, bullets, collectibles, or any other short-lived entity. */ - lifespan: number; + lifespan: number; /** * The left coordinate of the Game Object. * This is the same as `x - offsetX`. */ - left: number; + left: number; /** * A user defined name given to this Game Object. * This value isn't ever used internally by Phaser, it is meant as a game level property. */ - name: string; + name: string; /** * The amount the Game Object is visually offset from its x coordinate. * This is the same as `width * anchor.x`. * It will only be > 0 if anchor.x is not equal to zero. */ - offsetX: number; + offsetX: number; /** * The amount the Game Object is visually offset from its y coordinate. * This is the same as `height * anchor.y`. * It will only be > 0 if anchor.y is not equal to zero. */ - offsetY: number; + offsetY: number; /** * A Game Object is that is pendingDestroy is flagged to have its destroy method called on the next logic update. @@ -10362,39 +10711,31 @@ declare module Phaser { * This is extremely useful if you wish to destroy an object from within one of its own callbacks * such as with Buttons or other Input events. */ - pendingDestroy: boolean; - - /** - * The coordinate of the object relative to the local coordinates of the parent. - */ - position: Phaser.Point; + pendingDestroy: boolean; + position: Phaser.Point; /** * The position the Game Object was located in the previous frame. */ - previousPosition: Phaser.Point; + previousPosition: Phaser.Point; /** * The rotation the Game Object was in set to in the previous frame. Value is in radians. */ - previousRotation: number; + previousRotation: number; /** * The render order ID is used internally by the renderer and Input Manager and should not be modified. * This property is mostly used internally by the renderers, but is exposed for the use of plugins. */ - renderOrderID: number; + renderOrderID: number; /** * The right coordinate of the Game Object. * This is the same as `x + width - offsetX`. */ - right: number; - - /** - * The scale factor of the object. - */ - scale: Phaser.Point; + right: number; + scale: Phaser.Point; /** * Enable or disable texture smoothing for this Game Object. @@ -10403,25 +10744,25 @@ declare module Phaser { * * Smoothing is enabled by default. */ - smoothed: boolean; + smoothed: boolean; /** * The y coordinate of the Game Object. * This is the same as `y - offsetY`. */ - top: number; + top: number; /** * The const type of this object. */ - type: number; + type: number; /** * The world coordinates of this Game Object in pixels. * Depending on where in the display list this Game Object is placed this value can differ from `position`, * which contains the x/y coordinates relative to the Game Objects parent. */ - world: Phaser.Point; + world: Phaser.Point; /** * The z depth of this Game Object within its parent Group. @@ -10429,8 +10770,8 @@ declare module Phaser { * This value is adjusted automatically whenever the Group hierarchy changes. * If you wish to re-order the layering of a Game Object then see methods like Group.moveUp or Group.bringToTop. */ - z: number; - + z: number; + /** * Aligns this Game Object within another Game Object, or Rectangle, known as the @@ -10470,7 +10811,7 @@ declare module Phaser { * @param offsetY A vertical adjustment of the Containers bounds, applied to the aligned position of the Game Object. Use a negative value to shrink the bounds, positive to increase it. * @return This Game Object. */ - alignIn(container: Phaser.Rectangle | Phaser.Sprite | Phaser.Image | Phaser.Text | Phaser.BitmapText | Phaser.Button | Phaser.Graphics | Phaser.TileSprite, position?: number, offsetX?: number, offsetY?: number): any; + alignIn(container: Phaser.Rectangle | Phaser.Sprite | Phaser.Image | Phaser.Text | Phaser.BitmapText | Phaser.Button | Phaser.Graphics | Phaser.TileSprite, position?: number, offsetX?: number, offsetY?: number): any; /** * Aligns this Game Object to the side of another Game Object, or Rectangle, known as the @@ -10511,7 +10852,7 @@ declare module Phaser { * @param offsetY A vertical adjustment of the Containers bounds, applied to the aligned position of the Game Object. Use a negative value to shrink the bounds, positive to increase it. * @return This Game Object. */ - alignTo(container: Phaser.Rectangle | Phaser.Sprite | Phaser.Image | Phaser.Text | Phaser.BitmapText | Phaser.Button | Phaser.Graphics | Phaser.TileSprite, position?: number, offsetX?: number, offsetY?: number): any; + alignTo(container: Phaser.Rectangle | Phaser.Sprite | Phaser.Image | Phaser.Text | Phaser.BitmapText | Phaser.Button | Phaser.Graphics | Phaser.TileSprite, position?: number, offsetX?: number, offsetY?: number): any; /** * Brings this Game Object to the top of its parents display list. @@ -10521,7 +10862,7 @@ declare module Phaser { * because the World is the root Group from which all Game Objects descend. * @return This instance. */ - bringToTop(): Phaser.Image; + bringToTop(): Phaser.Image; /** * Crop allows you to crop the texture being used to display this Game Object. @@ -10539,13 +10880,21 @@ declare module Phaser { * @param rect The Rectangle used during cropping. Pass null or no parameters to clear a previously set crop rectangle. * @param copy If false `cropRect` will be stored as a reference to the given rect. If true it will copy the rect values into a local Phaser Rectangle object stored in cropRect. */ - crop(rect: Phaser.Rectangle, copy?: boolean): void; + crop(rect: Phaser.Rectangle, copy?: boolean): void; /** - * Destroy this DisplayObject. - * Removes all references to transformCallbacks, its parent, the stage, filters, bounds, mask and cached Sprites. + * Destroys the Game Object. This removes it from its parent group, destroys the input, event and animation handlers if present + * and nulls its reference to `game`, freeing it up for garbage collection. + * + * If this Game Object has the Events component it will also dispatch the `onDestroy` event. + * + * You can optionally also destroy the BaseTexture this Game Object is using. Be careful if you've + * more than one Game Object sharing the same BaseTexture. + * + * @param destroyChildren Should every child of this object have its destroy method called as well? - Default: true + * @param destroyTexture Destroy the BaseTexture this Game Object is using? Note that if another Game Object is sharing the same BaseTexture it will invalidate it. */ - destroy(destroyChildren?: boolean): void; + destroy(destroyChildren?: boolean): void; /** * Kills a Game Object. A killed Game Object has its `alive`, `exists` and `visible` properties all set to false. @@ -10558,7 +10907,7 @@ declare module Phaser { * If you don't need this Game Object any more you should call `destroy` instead. * @return This instance. */ - kill(): Phaser.Image; + kill(): Phaser.Image; /** * Changes the base texture the Game Object is using. The old texture is removed and the new one is referenced or fetched from the Cache. @@ -10582,7 +10931,7 @@ declare module Phaser { * @param frame If this Sprite is using part of a sprite sheet or texture atlas you can specify the exact frame to use by giving a string or numeric index. * @param stopAnimation If an animation is already playing on this Sprite you can choose to stop it or let it carry on playing. - Default: true */ - loadTexture(key: string | Phaser.RenderTexture | Phaser.BitmapData | Phaser.Video | PIXI.Texture, frame?: string | number, stopAnimation?: boolean): void; + loadTexture(key: string | Phaser.RenderTexture | Phaser.BitmapData | Phaser.Video | PIXI.Texture, frame?: string | number, stopAnimation?: boolean): void; /** * Resizes the Frame dimensions that the Game Object uses for rendering. @@ -10594,7 +10943,7 @@ declare module Phaser { * @param width The new width of the texture. * @param height The new height of the texture. */ - resizeFrame(parent: any, width: number, height: number): void; + resizeFrame(parent: any, width: number, height: number): void; /** * Moves this Game Object down one place in its parents display list. @@ -10604,7 +10953,7 @@ declare module Phaser { * because the World is the root Group from which all Game Objects descend. * @return This instance. */ - moveDown(): Phaser.Image; + moveDown(): Phaser.Image; /** * Moves this Game Object up one place in its parents display list. @@ -10614,7 +10963,7 @@ declare module Phaser { * because the World is the root Group from which all Game Objects descend. * @return This instance. */ - moveUp(): Phaser.Image; + moveUp(): Phaser.Image; /** * Checks to see if the bounds of this Game Object overlaps with the bounds of the given Display Object, @@ -10628,7 +10977,7 @@ declare module Phaser { * @param displayObject The display object to check against. * @return True if the bounds of this Game Object intersects at any point with the bounds of the given display object. */ - overlap(displayObject: Phaser.Sprite | Phaser.Image | Phaser.TileSprite | Phaser.Button | PIXI.DisplayObject): boolean; + overlap(displayObject: Phaser.Sprite | Phaser.Image | Phaser.TileSprite | Phaser.Button | PIXI.DisplayObject): boolean; /** * Plays an Animation. @@ -10644,17 +10993,17 @@ declare module Phaser { * @param killOnComplete If set to true when the animation completes (only happens if loop=false) the parent Sprite will be killed. * @return A reference to playing Animation. */ - play(name: string, frameRate?: number, loop?: boolean, killOnComplete?: boolean): Phaser.Animation; + play(name: string, frameRate?: number, loop?: boolean, killOnComplete?: boolean): Phaser.Animation; /** * Internal method called by the World postUpdate cycle. */ - postUpdate(): void; + postUpdate(): void; /** * Automatically called by World.preUpdate. */ - preUpdate(): void; + preUpdate(): void; /** * Resets the Game Object. @@ -10671,12 +11020,12 @@ declare module Phaser { * @param health The health to give the Game Object if it has the Health component. - Default: 1 * @return This instance. */ - reset(x: number, y: number, health?: number): Phaser.Image; + reset(x: number, y: number, health?: number): Phaser.Image; /** * Resets the texture frame dimensions that the Game Object uses for rendering. */ - resetFrame(): void; + resetFrame(): void; /** * Brings a 'dead' Game Object back to life, optionally resetting its health value in the process. @@ -10688,7 +11037,7 @@ declare module Phaser { * @param health The health to give the Game Object. Only set if the GameObject has the Health component. - Default: 100 * @return This instance. */ - revive(health?: number): Phaser.Image; + revive(health?: number): Phaser.Image; /** * Sends this Game Object to the bottom of its parents display list. @@ -10698,7 +11047,7 @@ declare module Phaser { * because the World is the root Group from which all Game Objects descend. * @return This instance. */ - sendToBack(): Phaser.Image; + sendToBack(): Phaser.Image; /** * Sets the texture frame the Game Object uses for rendering. @@ -10707,31 +11056,31 @@ declare module Phaser { * * @param frame The Frame to be used by the texture. */ - setFrame(frame: Phaser.Frame): void; + setFrame(frame: Phaser.Frame): void; /** * Override this method in your own custom objects to handle any update requirements. * It is called immediately after `preUpdate` and before `postUpdate`. * Remember if this Game Object has any children you should call update on those too. */ - update(): void; + update(): void; /** * If you have set a crop rectangle on this Game Object via `crop` and since modified the `cropRect` property, * or the rectangle it references, then you need to update the crop frame by calling this method. */ - updateCrop(): void; - - } - + updateCrop(): void; + + } + /** * An Image Collection is a special tileset containing mulitple images, with no slicing into each image. * * Image Collections are normally created automatically when Tiled data is loaded. */ - class ImageCollection { - + class ImageCollection { + /** * An Image Collection is a special tileset containing mulitple images, with no slicing into each image. @@ -10746,57 +11095,57 @@ declare module Phaser { * @param spacing The spacing between each image in the collection (in pixels). * @param properties Custom Image Collection properties. - Default: {} */ - constructor(name: string, firstgid: number, width?: number, height?: number, margin?: number, spacing?: number, properties?: any); - + constructor(name: string, firstgid: number, width?: number, height?: number, margin?: number, spacing?: number, properties?: any); + /** * The name of the Image Collection. */ - name: string; + name: string; /** * The Tiled firstgid value. * This is the starting index of the first image index this Image Collection contains. */ - firstgid: number; + firstgid: number; /** * The width of the widest image (in pixels). */ - imageWidth: number; + imageWidth: number; /** * The height of the tallest image (in pixels). */ - imageHeight: number; + imageHeight: number; /** * The margin around the images in the collection (in pixels). * Use `setSpacing` to change. */ - imageMargin: number; + imageMargin: number; /** * The spacing between each image in the collection (in pixels). * Use `setSpacing` to change. */ - imageSpacing: number; + imageSpacing: number; /** * Image Collection-specific properties that are typically defined in the Tiled editor. */ - properties: any; + properties: any; /** * The cached images that are a part of this collection. */ - images: any[]; + images: any[]; /** * The total number of images in the image collection. */ - total: number; - + total: number; + /** * Add an image to this Image Collection. @@ -10804,7 +11153,7 @@ declare module Phaser { * @param gid The gid of the image in the Image Collection. * @param image The the key of the image in the Image Collection and in the cache. */ - addImage(gid: number, image: string): void; + addImage(gid: number, image: string): void; /** * Returns true if and only if this image collection contains the given image index. @@ -10812,17 +11161,17 @@ declare module Phaser { * @param imageIndex The image index to search for. * @return True if this Image Collection contains the given index. */ - containsImageIndex(imageIndex: number): boolean; - - } - + containsImageIndex(imageIndex: number): boolean; + + } + /** * Phaser.Input is the Input Manager for all types of Input across Phaser, including mouse, keyboard, touch and MSPointer. * The Input manager is updated automatically by the core game loop. */ - class Input { - + class Input { + /** * Phaser.Input is the Input Manager for all types of Input across Phaser, including mouse, keyboard, touch and MSPointer. @@ -10830,30 +11179,30 @@ declare module Phaser { * * @param game Current game instance. */ - constructor(game: Phaser.Game); - + constructor(game: Phaser.Game); + /** * The maximum number of pointers that can be added. This excludes the mouse pointer. */ - static MAX_POINTERS: number; - static MOUSE_OVERRIDES_TOUCH: number; - static MOUSE_TOUCH_COMBINE: number; - static TOUCH_OVERRIDES_MOUSE: number; - + static MAX_POINTERS: number; + static MOUSE_OVERRIDES_TOUCH: number; + static MOUSE_TOUCH_COMBINE: number; + static TOUCH_OVERRIDES_MOUSE: number; + /** * The most recently active Pointer object. * * When you've limited max pointers to 1 this will accurately be either the first finger touched or mouse. */ - activePointer: Phaser.Pointer; + activePointer: Phaser.Pointer; /** * A Circle object centered on the x/y screen coordinates of the Input. * Default size of 44px (Apples recommended "finger tip" size) but can be changed to anything. */ - circle: Phaser.Circle; + circle: Phaser.Circle; /** * When enabled, input (eg. Keyboard, Mouse, Touch) will be processed - as long as the individual sources are enabled themselves. @@ -10861,73 +11210,73 @@ declare module Phaser { * When not enabled, _all_ input sources are ignored. To disable just one type of input; for example, the Mouse, use `input.mouse.enabled = false`. * Default: true */ - enabled: boolean; + enabled: boolean; /** * The number of milliseconds between taps of the same Pointer for it to be considered a double tap / click. * Default: 300 */ - doubleTapRate: number; + doubleTapRate: number; /** * A reference to the currently running game. */ - game: Phaser.Game; + game: Phaser.Game; /** * The Gamepad Input manager. */ - gamepad: Phaser.Gamepad; + gamepad: Phaser.Gamepad; /** * The canvas to which single pixels are drawn in order to perform pixel-perfect hit detection. */ - hitCanvas: HTMLCanvasElement; + hitCanvas: HTMLCanvasElement; /** * The context of the pixel perfect hit canvas. */ - hitContext: CanvasRenderingContext2D; + hitContext: CanvasRenderingContext2D; /** * The number of milliseconds that the Pointer has to be pressed down for it to fire a onHold event. * Default: 2000 */ - holdRate: number; + holdRate: number; /** * A list of interactive objects. The InputHandler components add and remove themselves from this list. */ - interactiveItems: Phaser.ArraySet; + interactiveItems: Phaser.ArraySet; /** * The number of milliseconds below which the Pointer is considered justPressed. * Default: 200 */ - justPressedRate: number; + justPressedRate: number; /** * The number of milliseconds below which the Pointer is considered justReleased . * Default: 200 */ - justReleasedRate: number; + justReleasedRate: number; /** * The Keyboard Input manager. */ - keyboard: Phaser.Keyboard; + keyboard: Phaser.Keyboard; /** * The maximum number of Pointers allowed to be active at any one time. A value of -1 is only limited by the total number of pointers. For lots of games it's useful to set this to 1. * Default: -1 (Limited by total pointers.) */ - maxPointers: number; + maxPointers: number; /** * You can tell all Pointers to ignore any Game Object with a `priorityID` lower than this value. * This is useful when stacking UI layers. Set to zero to disable. */ - minPriorityID: number; + minPriorityID: number; /** * The Mouse Input manager. @@ -10935,18 +11284,18 @@ declare module Phaser { * You should not usually access this manager directly, but instead use Input.mousePointer or Input.activePointer * which normalizes all the input values for you, regardless of browser. */ - mouse: Phaser.Mouse; + mouse: Phaser.Mouse; /** * The mouse has its own unique Phaser.Pointer object which you can use if making a desktop specific game. */ - mousePointer: Phaser.Pointer; + mousePointer: Phaser.Pointer; /** * An array of callbacks that will be fired every time the activePointer receives a move event from the DOM. * To add a callback to this array please use `Input.addMoveCallback`. */ - moveCallbacks: (pointer: Phaser.Pointer, x: number, y: number) => void[]; + moveCallbacks: (pointer: Phaser.Pointer, x: number, y: number) => void[]; /** * The MSPointer Input manager. @@ -10954,150 +11303,150 @@ declare module Phaser { * You should not usually access this manager directly, but instead use Input.activePointer * which normalizes all the input values for you, regardless of browser. */ - mspointer: Phaser.MSPointer; + mspointer: Phaser.MSPointer; /** * Controls the expected behavior when using a mouse and touch together on a multi-input device. */ - multiInputOverride: number; + multiInputOverride: number; /** * A Signal that is dispatched each time a pointer is pressed down. */ - onDown: Phaser.Signal; + onDown: Phaser.Signal; /** * A Signal that is dispatched each time a pointer is held down. */ - onHold: Phaser.Signal; + onHold: Phaser.Signal; /** * A Signal that is dispatched each time a pointer is tapped. */ - onTap: Phaser.Signal; + onTap: Phaser.Signal; /** * A Signal that is dispatched each time a pointer is released. */ - onUp: Phaser.Signal; + onUp: Phaser.Signal; /** * A Pointer object. */ - pointer1: Phaser.Pointer; + pointer1: Phaser.Pointer; /** * A Pointer object. */ - pointer2: Phaser.Pointer; + pointer2: Phaser.Pointer; /** * A Pointer object. */ - pointer3: Phaser.Pointer; + pointer3: Phaser.Pointer; /** * A Pointer object. */ - pointer4: Phaser.Pointer; + pointer4: Phaser.Pointer; /** * A Pointer object. */ - pointer5: Phaser.Pointer; + pointer5: Phaser.Pointer; /** * A Pointer object. */ - pointer6: Phaser.Pointer; + pointer6: Phaser.Pointer; /** * A Pointer object. */ - pointer7: Phaser.Pointer; + pointer7: Phaser.Pointer; /** * A Pointer object. */ - pointer8: Phaser.Pointer; + pointer8: Phaser.Pointer; /** * A Pointer object. */ - pointer9: Phaser.Pointer; + pointer9: Phaser.Pointer; /** * A Pointer object. */ - pointer10: Phaser.Pointer; + pointer10: Phaser.Pointer; /** * True if the Input is currently poll rate locked. */ - pollLocked: boolean; + pollLocked: boolean; /** * How often should the input pointers be checked for updates? A value of 0 means every single frame (60fps); a value of 1 means every other frame (30fps) and so on. */ - pollRate: number; + pollRate: number; /** * A point object representing the current position of the Pointer. */ - position: Phaser.Point; - pointer: Phaser.Pointer[]; + position: Phaser.Point; + pointer: Phaser.Pointer[]; /** * The total number of entries that can be recorded into the Pointer objects tracking history. * If the Pointer is tracking one event every 100ms; then a trackLimit of 100 would store the last 10 seconds worth of history. * Default: 100 */ - recordLimit: number; + recordLimit: number; /** * Sets if the Pointer objects should record a history of x/y coordinates they have passed through. * The history is cleared each time the Pointer is pressed down. * The history is updated at the rate specified in Input.pollRate */ - recordPointerHistory: boolean; + recordPointerHistory: boolean; /** * The rate in milliseconds at which the Pointer objects should update their tracking history. * Default: 100 */ - recordRate: number; + recordRate: number; /** * If the Input Manager has been reset locked then all calls made to InputManager.reset, * such as from a State change, are ignored. */ - resetLocked: boolean; + resetLocked: boolean; /** * The scale by which all input coordinates are multiplied; calculated by the ScaleManager. In an un-scaled game the values will be x = 1 and y = 1. */ - scale: Phaser.Point; + scale: Phaser.Point; /** * A point object representing the speed of the Pointer. Only really useful in single Pointer games; otherwise see the Pointer objects directly. */ - speed: Phaser.Point; + speed: Phaser.Point; /** * The number of milliseconds that the Pointer has to be pressed down and then released to be considered a tap or click. * Default: 200 */ - tapRate: number; + tapRate: number; /** * The total number of active Pointers, not counting the mouse pointer. */ - totalActivePointers: number; + totalActivePointers: number; /** * The total number of inactive Pointers. */ - totalInactivePointers: number; + totalInactivePointers: number; /** * The Touch Input manager. @@ -11105,30 +11454,30 @@ declare module Phaser { * You should not usually access this manager directly, but instead use Input.activePointer * which normalizes all the input values for you, regardless of browser. */ - touch: Phaser.Touch; + touch: Phaser.Touch; /** * The world X coordinate of the most recently active pointer. */ - worldX: number; + worldX: number; /** * The world Y coordinate of the most recently active pointer. */ - worldY: number; + worldY: number; /** * The X coordinate of the most recently active pointer. * This value takes game scaling into account automatically. See Pointer.screenX/clientX for source values. */ - x: number; + x: number; /** * The Y coordinate of the most recently active pointer. * This value takes game scaling into account automatically. See Pointer.screenY/clientY for source values. */ - y: number; - + y: number; + /** * Add a new Pointer object to the Input Manager. @@ -11136,7 +11485,7 @@ declare module Phaser { * This method adds an additional pointer, up to a maximum of Phaser.Input.MAX_POINTERS (default of 10). * @return The new Pointer object that was created; null if a new pointer could not be added. */ - addPointer(): Phaser.Pointer; + addPointer(): Phaser.Pointer; /** * Adds a callback that is fired every time the activePointer receives a DOM move event such as a mousemove or touchmove. @@ -11156,13 +11505,13 @@ declare module Phaser { * @param callback The callback that will be called each time the activePointer receives a DOM move event. * @param context The context in which the callback will be called. */ - addMoveCallback(callback: Function, context: any): number; + addMoveCallback(callback: Function, context: any): number; /** * Starts the Input Manager running. */ - boot(): void; - countActivePointers(limit?: number): number; + boot(): void; + countActivePointers(limit?: number): number; /** * Removes the callback from the Phaser.Input.moveCallbacks array. @@ -11170,12 +11519,12 @@ declare module Phaser { * @param callback The callback to be removed. * @param context The context in which the callback exists. */ - deleteMoveCallback(callback: Function, context?: any): void; + deleteMoveCallback(callback: Function, context?: any): void; /** * Stops all of the Input Managers from running. */ - destroy(): void; + destroy(): void; /** * This will return the local coordinates of the specified displayObject based on the given Pointer. @@ -11184,7 +11533,7 @@ declare module Phaser { * @param pointer The Pointer to use in the check against the displayObject. * @return A point containing the coordinates of the Pointer position relative to the DisplayObject. */ - getLocalPosition(displayObject: any, pointer: Phaser.Pointer): Phaser.Point; + getLocalPosition(displayObject: any, pointer: Phaser.Pointer): Phaser.Point; /** * Get the first Pointer with the given active state. @@ -11192,7 +11541,7 @@ declare module Phaser { * @param isActive The state the Pointer should be in - active or inactive? * @return A Pointer object or null if no Pointer object matches the requested state. */ - getPointer(isActive?: boolean): Phaser.Pointer; + getPointer(isActive?: boolean): Phaser.Pointer; /** * Get the Pointer object whos `pointerId` property matches the given value. @@ -11203,7 +11552,7 @@ declare module Phaser { * @param pointerId The `pointerId` (not 'id') value to search for. * @return A Pointer object or null if no Pointer object matches the requested identifier. */ - getPointerFromId(pointerID: number): Phaser.Pointer; + getPointerFromId(pointerID: number): Phaser.Pointer; /** * Get the Pointer object whos `identifier` property matches the given identifier value. @@ -11215,7 +11564,7 @@ declare module Phaser { * @param identifier The Pointer.identifier value to search for. * @return A Pointer object or null if no Pointer object matches the requested identifier. */ - getPointerFromIdentifier(identifier: number): Phaser.Pointer; + getPointerFromIdentifier(identifier: number): Phaser.Pointer; /** * Tests if the pointer hits the given object. @@ -11224,7 +11573,7 @@ declare module Phaser { * @param pointer The pointer to use for the test. * @param localPoint The local translated point. */ - hitTest(displayObject: PIXI.DisplayObject, pointer: Phaser.Pointer, localPoint: Phaser.Point): void; + hitTest(displayObject: PIXI.DisplayObject, pointer: Phaser.Pointer, localPoint: Phaser.Point): void; /** * Reset all of the Pointers and Input states. @@ -11235,7 +11584,7 @@ declare module Phaser { * * @param hard A soft reset won't reset any events or callbacks that are bound. A hard reset will. */ - reset(hard?: boolean): void; + reset(hard?: boolean): void; /** * Resets the speed and old position properties. @@ -11243,7 +11592,7 @@ declare module Phaser { * @param x Sets the oldPosition.x value. * @param y Sets the oldPosition.y value. */ - resetSpeed(x: number, y: number): void; + resetSpeed(x: number, y: number): void; /** * Adds a callback that is fired every time `Pointer.processInteractiveObjects` is called. @@ -11266,7 +11615,7 @@ declare module Phaser { * @param callback The callback that will be called each time `Pointer.processInteractiveObjects` is called. Set to `null` to disable. * @param context The context in which the callback will be called. */ - setInteractiveCandidateHandler(callback: Function, context?: any): void; + setInteractiveCandidateHandler(callback: Function, context?: any): void; /** * Find the first free Pointer object and start it, passing in the event data. @@ -11275,7 +11624,7 @@ declare module Phaser { * @param event The event data from the Touch event. * @return The Pointer object that was started or null if no Pointer object is available. */ - startPointer(event: any): Phaser.Pointer; + startPointer(event: any): Phaser.Pointer; /** * Stops the matching Pointer object, passing in the event data. @@ -11283,12 +11632,12 @@ declare module Phaser { * @param event The event data from the Touch event. * @return The Pointer object that was stopped or null if no Pointer object is available. */ - stopPointer(event: any): Phaser.Pointer; + stopPointer(event: any): Phaser.Pointer; /** * Updates the Input Manager. Called by the core Game loop. */ - update(): void; + update(): void; /** * Updates the matching Pointer object, passing in the event data. @@ -11297,126 +11646,126 @@ declare module Phaser { * @param event The event data from the Touch event. * @return The Pointer object that was updated; null if no pointer was updated. */ - updatePointer(event: any): Phaser.Pointer; - - } - + updatePointer(event: any): Phaser.Pointer; + + } + /** * The Input Handler is bound to a specific Sprite and is responsible for managing all Input events on that Sprite. */ - class InputHandler { - + class InputHandler { + /** * The Input Handler is bound to a specific Sprite and is responsible for managing all Input events on that Sprite. * * @param sprite The Sprite object to which this Input Handler belongs. */ - constructor(sprite: Phaser.Sprite); - + constructor(sprite: Phaser.Sprite); + /** * Controls if the Sprite is allowed to be dragged horizontally. * Default: true */ - allowHorizontalDrag: boolean; + allowHorizontalDrag: boolean; /** * Controls if the Sprite is allowed to be dragged vertically. * Default: true */ - allowVerticalDrag: boolean; + allowVerticalDrag: boolean; /** * A region of the game world within which the sprite is restricted during drag. */ - boundsRect: Phaser.Rectangle; + boundsRect: Phaser.Rectangle; /** * A Sprite the bounds of which this sprite is restricted during drag. */ - boundsSprite: Phaser.Sprite; + boundsSprite: Phaser.Sprite; /** * If true when this Sprite is clicked or dragged it will automatically be bought to the top of the Group it is within. */ - bringToTop: boolean; + bringToTop: boolean; /** * A Point object containing the coordinates of the Pointer when it was first pressed down onto this Sprite. */ - downPoint: Phaser.Point; + downPoint: Phaser.Point; /** * The distance, in pixels, the pointer has to move while being held down, before the Sprite thinks it is being dragged. */ - dragDistanceThreshold: number; + dragDistanceThreshold: number; /** * The offset from the Sprites position that dragging takes place from. */ - dragOffset: Phaser.Point; + dragOffset: Phaser.Point; /** * Is the Sprite dragged from its center, or the point at which the Pointer was pressed down upon it? */ - dragFromCenter: boolean; + dragFromCenter: boolean; /** * Is this sprite allowed to be dragged by the mouse? true = yes, false = no */ - draggable: boolean; + draggable: boolean; /** * The Point from which the most recent drag started from. Useful if you need to return an object to its starting position. */ - dragStartPoint: Phaser.Point; + dragStartPoint: Phaser.Point; /** * If enabled, when the Sprite stops being dragged, it will only dispatch the `onDragStop` event, and not the `onInputUp` event. If set to `false` it will dispatch both events. */ - dragStopBlocksInputUp: boolean; + dragStopBlocksInputUp: boolean; /** * The amount of time, in ms, the pointer has to be held down over the Sprite before it thinks it is being dragged. */ - dragTimeThreshold: number; + dragTimeThreshold: number; /** * If enabled the Input Handler will process input requests and monitor pointer activity. */ - enabled: boolean; + enabled: boolean; /** * A reference to the currently running game. */ - game: Phaser.Game; + game: Phaser.Game; /** * Warning: EXPERIMENTAL * * @param x */ - globalToLocalX(x: number): number; + globalToLocalX(x: number): number; /** * Warning: EXPERIMENTAL * * @param y */ - globalToLocalY(y: number): number; + globalToLocalY(y: number): number; /** * true if the Sprite is being currently dragged. */ - isDragged: boolean; + isDragged: boolean; /** * The alpha tolerance threshold. If the alpha value of the pixel matches or is above this value, it's considered a hit. * Default: 255 */ - pixelPerfectAlpha: number; + pixelPerfectAlpha: number; /** * Set to true to use pixel perfect hit detection when checking if the pointer is over this Sprite when it's clicked or touched. @@ -11424,7 +11773,7 @@ declare module Phaser { * This feature only works for display objects with image based textures such as Sprites. It won't work on BitmapText or Rope. * Warning: This is expensive so only enable if you really need it. Use a pixel perfect check when testing for clicks or touches on the Sprite. */ - pixelPerfectClick: boolean; + pixelPerfectClick: boolean; /** * Set to true to use pixel perfect hit detection when checking if the pointer is over this Sprite. @@ -11432,80 +11781,80 @@ declare module Phaser { * This feature only works for display objects with image based textures such as Sprites. It won't work on BitmapText or Rope. * Warning: This is expensive, especially on mobile (where it's not even needed!) so only enable if required. Also see the less-expensive InputHandler.pixelPerfectClick. Use a pixel perfect check when testing for pointer over. */ - pixelPerfectOver: boolean; + pixelPerfectOver: boolean; /** * The priorityID is used to determine which game objects should get priority when input events occur. For example if you have * several Sprites that overlap, by default the one at the top of the display list is given priority for input events. You can * stop this from happening by controlling the priorityID value. The higher the value, the more important they are considered to the Input events. */ - priorityID: number; + priorityID: number; /** * EXPERIMENTAL: Please do not use this property unless you know what it does. Likely to change in the future. */ - scaleLayer: boolean; + scaleLayer: boolean; /** * A Point object that contains by how far the Sprite snap is offset. */ - snapOffset: Phaser.Point; + snapOffset: Phaser.Point; /** * This defines the top-left X coordinate of the snap grid. */ - snapOffsetX: number; + snapOffsetX: number; /** * This defines the top-left Y coordinate of the snap grid.. */ - snapOffsetY: number; + snapOffsetY: number; /** * When the Sprite is dragged this controls if the center of the Sprite will snap to the pointer on drag or not. */ - snapOnDrag: boolean; + snapOnDrag: boolean; /** * When the Sprite is dragged this controls if the Sprite will be snapped on release. */ - snapOnRelease: boolean; + snapOnRelease: boolean; /** * If the sprite is set to snap while dragging this holds the point of the most recent 'snap' event. */ - snapPoint: Phaser.Point; + snapPoint: Phaser.Point; /** * When a Sprite has snapping enabled this holds the width of the snap grid. */ - snapX: number; + snapX: number; /** * When a Sprite has snapping enabled this holds the height of the snap grid. */ - snapY: number; + snapY: number; /** * The Sprite object to which this Input Handler belongs. */ - sprite: Phaser.Sprite; + sprite: Phaser.Sprite; /** * On a desktop browser you can set the 'hand' cursor to appear when moving over the Sprite. */ - useHandCursor: boolean; - + useHandCursor: boolean; + /** * Bounds Rect check for the sprite drag */ - checkBoundsRect(): void; + checkBoundsRect(): void; /** * Parent Sprite Bounds check for the sprite drag. */ - checkBoundsSprite(): void; + checkBoundsSprite(): void; /** * Runs a pixel perfect check against the given x/y coordinates of the Sprite this InputHandler is bound to. @@ -11516,7 +11865,7 @@ declare module Phaser { * @param pointer The pointer to get the x/y coordinate from if not passed as the first two parameters. * @return true if there is the alpha of the pixel is >= InputHandler.pixelPerfectAlpha */ - checkPixel(x: number, y: number, pointer?: Phaser.Pointer): boolean; + checkPixel(x: number, y: number, pointer?: Phaser.Pointer): boolean; /** * Checks if the given pointer is both down and over the Sprite this InputHandler belongs to. @@ -11526,7 +11875,7 @@ declare module Phaser { * @param fastTest Force a simple hit area check even if `pixelPerfectOver` is true for this object? * @return True if the pointer is down, otherwise false. */ - checkPointerDown(pointer: Phaser.Pointer, fastTest?: boolean): boolean; + checkPointerDown(pointer: Phaser.Pointer, fastTest?: boolean): boolean; /** * Checks if the given pointer is over the Sprite this InputHandler belongs to. @@ -11535,23 +11884,23 @@ declare module Phaser { * @param pointer * @param fastTest Force a simple hit area check even if `pixelPerfectOver` is true for this object? */ - checkPointerOver(pointer: Phaser.Pointer, fastTest?: boolean): boolean; + checkPointerOver(pointer: Phaser.Pointer, fastTest?: boolean): boolean; /** * Clean up memory. */ - destroy(): void; + destroy(): void; /** * Stops this sprite from being able to be dragged. * If it is currently the target of an active drag it will be stopped immediately; also disables any set callbacks. */ - disableDrag(): void; + disableDrag(): void; /** * Stops the sprite from snapping to a grid during drag or release. */ - disableSnap(): void; + disableSnap(): void; /** * If the pointer is currently over this Sprite this returns how long it has been there for in milliseconds. @@ -11559,7 +11908,7 @@ declare module Phaser { * @param pointerId * @return The number of milliseconds the pointer has been pressed down on the Sprite, or -1 if not over. */ - downDuration(pointerId?: number): number; + downDuration(pointerId?: number): number; /** * Allow this Sprite to be dragged by any valid pointer. @@ -11588,7 +11937,7 @@ declare module Phaser { * @param boundsRect If you want to restrict the drag of this sprite to a specific Rectangle, pass the Phaser.Rectangle here, otherwise it's free to drag anywhere. * @param boundsSprite If you want to restrict the drag of this sprite to within the bounding box of another sprite, pass it here. */ - enableDrag(lockCenter?: boolean, bringToTop?: boolean, pixelPerfect?: boolean, alphaThreshold?: number, boundsRect?: Phaser.Rectangle, boundsSprite?: Phaser.Sprite): void; + enableDrag(lockCenter?: boolean, bringToTop?: boolean, pixelPerfect?: boolean, alphaThreshold?: number, boundsRect?: Phaser.Rectangle, boundsSprite?: Phaser.Sprite): void; /** * Make this Sprite snap to the given grid either during drag or when it's released. @@ -11601,13 +11950,13 @@ declare module Phaser { * @param snapOffsetX Used to offset the top-left starting point of the snap grid. * @param snapOffsetY Used to offset the top-left starting point of the snap grid. */ - enableSnap(snapX: number, snapY: number, onDrag?: boolean, onRelease?: boolean, snapOffsetX?: number, snapOffsetY?: number): void; + enableSnap(snapX: number, snapY: number, onDrag?: boolean, onRelease?: boolean, snapOffsetX?: number, snapOffsetY?: number): void; /** * Is this object using pixel perfect checking? * @return True if the this InputHandler has either `pixelPerfectClick` or `pixelPerfectOver` set to `true`. */ - isPixelPerfect(): boolean; + isPixelPerfect(): boolean; /** * Returns true if the pointer has left the Sprite within the specified delay time (defaults to 500ms, half a second) @@ -11615,7 +11964,7 @@ declare module Phaser { * @param pointerId * @param delay The time below which the pointer is considered as just out. */ - justOut(pointerId?: number, delay?: number): boolean; + justOut(pointerId?: number, delay?: number): boolean; /** * Returns true if the pointer has entered the Sprite within the specified delay time (defaults to 500ms, half a second) @@ -11623,7 +11972,7 @@ declare module Phaser { * @param pointerId * @param delay The time below which the pointer is considered as just over. */ - justOver(pointerId?: number, delay?: number): boolean; + justOver(pointerId?: number, delay?: number): boolean; /** * Returns true if the pointer has touched or clicked on the Sprite within the specified delay time (defaults to 500ms, half a second) @@ -11631,7 +11980,7 @@ declare module Phaser { * @param pointerId * @param delay The time below which the pointer is considered as just over. */ - justPressed(pointerId?: number, delay?: number): boolean; + justPressed(pointerId?: number, delay?: number): boolean; /** * Returns true if the pointer was touching this Sprite, but has been released within the specified delay time (defaults to 500ms, half a second) @@ -11639,7 +11988,7 @@ declare module Phaser { * @param pointerId * @param delay The time below which the pointer is considered as just out. */ - justReleased(pointerId?: number, delay?: number): boolean; + justReleased(pointerId?: number, delay?: number): boolean; /** * If the pointer is currently over this Sprite this returns how long it has been there for in milliseconds. @@ -11647,7 +11996,7 @@ declare module Phaser { * @param pointerId * @return The number of milliseconds the pointer has been over the Sprite, or -1 if not over. */ - overDuration(pointerId?: number): number; + overDuration(pointerId?: number): number; /** * If the Pointer is down this returns true. @@ -11656,7 +12005,7 @@ declare module Phaser { * @param pointerId * @return - True if the given pointer is down, otherwise false. */ - pointerDown(pointerId?: number): boolean; + pointerDown(pointerId?: number): boolean; /** * Is this sprite being dragged by the mouse or not? @@ -11664,7 +12013,7 @@ declare module Phaser { * @param pointerId * @return True if the pointer is dragging an object, otherwise false. */ - pointerDragged(pointerId?: number): boolean; + pointerDragged(pointerId?: number): boolean; /** * Is the Pointer outside of this Sprite? @@ -11672,7 +12021,7 @@ declare module Phaser { * @param pointerId The ID number of a Pointer to check. If you don't provide a number it will check all Pointers. - Default: (check all) * @return True if the given pointer (if a index was given, or any pointer if not) is out of this object. */ - pointerOut(pointerId?: number): boolean; + pointerOut(pointerId?: number): boolean; /** * Is the Pointer over this Sprite? @@ -11680,35 +12029,35 @@ declare module Phaser { * @param pointerId The ID number of a Pointer to check. If you don't provide a number it will check all Pointers. - Default: (check all) * @return - True if the given pointer (if a index was given, or any pointer if not) is over this object. */ - pointerOver(pointerId?: number): boolean; + pointerOver(pointerId?: number): boolean; /** * A timestamp representing when the Pointer first touched the touchscreen. * * @param pointerId - Default: (check all) */ - pointerTimeDown(pointerId?: number): number; + pointerTimeDown(pointerId?: number): number; /** * A timestamp representing when the Pointer left the touchscreen. * * @param pointerId */ - pointerTimeOut(pointerId?: number): number; + pointerTimeOut(pointerId?: number): number; /** * A timestamp representing when the Pointer first touched the touchscreen. * * @param pointerId */ - pointerTimeOver(pointerId?: number): number; + pointerTimeOver(pointerId?: number): number; /** * A timestamp representing when the Pointer left the touchscreen. * * @param pointerId */ - pointerTimeUp(pointerId?: number): number; + pointerTimeUp(pointerId?: number): number; /** * If the Pointer is up this returns true. @@ -11717,7 +12066,7 @@ declare module Phaser { * @param pointerId * @return - True if the given pointer is up, otherwise false. */ - pointerUp(pointerId?: number): boolean; + pointerUp(pointerId?: number): boolean; /** * The x coordinate of the Input pointer, relative to the top-left of the parent Sprite. @@ -11726,7 +12075,7 @@ declare module Phaser { * @param pointerId * @return The x coordinate of the Input pointer. */ - pointerX(pointerId?: number): number; + pointerX(pointerId?: number): number; /** * The y coordinate of the Input pointer, relative to the top-left of the parent Sprite @@ -11735,12 +12084,12 @@ declare module Phaser { * @param pointerId * @return The y coordinate of the Input pointer. */ - pointerY(pointerId?: number): number; + pointerY(pointerId?: number): number; /** * Resets the Input Handler and disables it. */ - reset(): void; + reset(): void; /** * Restricts this sprite to drag movement only on the given axis. Note: If both are set to false the sprite will never move! @@ -11748,7 +12097,7 @@ declare module Phaser { * @param allowHorizontal To enable the sprite to be dragged horizontally set to true, otherwise false. - Default: true * @param allowVertical To enable the sprite to be dragged vertically set to true, otherwise false. - Default: true */ - setDragLock(allowHorizontal?: boolean, allowVertical?: boolean): void; + setDragLock(allowHorizontal?: boolean, allowVertical?: boolean): void; /** * Starts the Input Handler running. This is called automatically when you enable input on a Sprite, or can be called directly if you need to set a specific priority. @@ -11757,26 +12106,26 @@ declare module Phaser { * @param useHandCursor If true the Sprite will show the hand cursor on mouse-over (doesn't apply to mobile browsers) * @return The Sprite object to which the Input Handler is bound. */ - start(priority: number, useHandCursor: boolean): Phaser.Sprite; + start(priority: number, useHandCursor: boolean): Phaser.Sprite; /** * Called by Pointer when drag starts on this Sprite. Should not usually be called directly. * * @param pointer */ - startDrag(pointer: Phaser.Pointer): void; + startDrag(pointer: Phaser.Pointer): void; /** * Stops the Input Handler from running. */ - stop(): void; + stop(): void; /** * Called by Pointer when drag is stopped on this Sprite. Should not usually be called directly. * * @param pointer */ - stopDrag(pointer: Phaser.Pointer): void; + stopDrag(pointer: Phaser.Pointer): void; /** * Internal Update method. This is called automatically and handles the Pointer @@ -11785,14 +12134,15 @@ declare module Phaser { * @param pointer * @return True if the pointer is still active, otherwise false. */ - update(pointer: Phaser.Pointer): void; + update(pointer: Phaser.Pointer): void; /** - * Updates the Pointer drag on this Sprite. + * Called as a Pointer actively drags this Game Object. * - * @param pointer + * @param pointer The Pointer causing the drag update. + * @param fromStart True if this is the first update, immediately after the drag has started. */ - updateDrag(pointer: Phaser.Pointer): boolean; + updateDrag(pointer: Phaser.Pointer): boolean; /** * Checks if the object this InputHandler is bound to is valid for consideration in the Pointer move event. @@ -11803,16 +12153,16 @@ declare module Phaser { * @param includePixelPerfect If this object has `pixelPerfectClick` or `pixelPerfectOver` set should it be considered as valid? - Default: true * @return True if the object this InputHandler is bound to should be considered as valid for input detection. */ - validForInput(highestID: number, highestRenderID: number, includePixelPerfect?: boolean): boolean; - - } - + validForInput(highestID: number, highestRenderID: number, includePixelPerfect?: boolean): boolean; + + } + /** * If you need more fine-grained control over the handling of specific keys you can create and use Phaser.Key objects. */ - class Key { - + class Key { + /** * If you need more fine-grained control over the handling of specific keys you can create and use Phaser.Key objects. @@ -11820,104 +12170,104 @@ declare module Phaser { * @param game Current game instance. * @param keycode The key code this Key is responsible for. See {@link Phaser.KeyCode}. */ - constructor(game: Phaser.Game, keycode: number); - + constructor(game: Phaser.Game, keycode: number); + /** * The down state of the ALT key, if pressed at the same time as this key. */ - altKey: boolean; + altKey: boolean; /** * The down state of the CTRL key, if pressed at the same time as this key. */ - ctrlKey: boolean; + ctrlKey: boolean; /** * If the key is down this value holds the duration of that key press and is constantly updated. * If the key is up it holds the duration of the previous down session. The number of milliseconds this key has been held down for. */ - duration: number; - enabled: boolean; + duration: number; + enabled: boolean; /** * Stores the most recent DOM event. */ - event: any; + event: any; /** * A reference to the currently running game. */ - game: Phaser.Game; + game: Phaser.Game; /** * The "down" state of the key. This will remain `true` for as long as the keyboard thinks this key is held down. */ - isDown: boolean; + isDown: boolean; /** * The "up" state of the key. This will remain `true` for as long as the keyboard thinks this key is up. * Default: true */ - isUp: boolean; + isUp: boolean; /** * True if the key has just been pressed (NOTE: requires to be reset, see justDown getter) */ - _justDown: boolean; - justDown: boolean; + _justDown: boolean; + justDown: boolean; /** * True if the key has just been pressed (NOTE: requires to be reset, see justDown getter) */ - _justUp: boolean; - justUp: boolean; + _justUp: boolean; + justUp: boolean; /** * The keycode of this key. */ - keyCode: number; + keyCode: number; /** * This Signal is dispatched every time this Key is pressed down. It is only dispatched once (until the key is released again). */ - onDown: Phaser.Signal; + onDown: Phaser.Signal; /** * A callback that is called while this Key is held down. Warning: Depending on refresh rate that could be 60+ times per second. */ - onHoldCallback: Function; + onHoldCallback: Function; /** * The context under which the onHoldCallback will be called. */ - onHoldContext: any; + onHoldContext: any; /** * This Signal is dispatched every time this Key is released. It is only dispatched once (until the key is pressed and released again). */ - onUp: Phaser.Signal; + onUp: Phaser.Signal; /** * If a key is held down this holds down the number of times the key has 'repeated'. */ - repeats: number; + repeats: number; /** * The down state of the SHIFT key, if pressed at the same time as this key. */ - shiftKey: boolean; + shiftKey: boolean; /** * The timestamp when the key was last pressed down. This is based on Game.time.now. */ - timeDown: number; + timeDown: number; /** * The timestamp when the key was last released. This is based on Game.time.now. */ - timeUp: number; - + timeUp: number; + /** * Returns `true` if the Key was pressed down within the `duration` value given, or `false` if it either isn't down, @@ -11926,21 +12276,21 @@ declare module Phaser { * @param duration The duration within which the key is considered as being just pressed. Given in ms. - Default: 50 * @return True if the key was pressed down within the given duration. */ - downDuration(duration?: number): boolean; + downDuration(duration?: number): boolean; /** * Called automatically by Phaser.Keyboard. * * @param event The DOM event that triggered this. */ - processKeyDown(event: KeyboardEvent): void; + processKeyDown(event: KeyboardEvent): void; /** * Called automatically by Phaser.Keyboard. * * @param event The DOM event that triggered this. */ - processKeyUp(event: KeyboardEvent): void; + processKeyUp(event: KeyboardEvent): void; /** * Resets the state of this Key. @@ -11950,12 +12300,12 @@ declare module Phaser { * * @param hard A soft reset won't reset any events or callbacks; a hard reset will. - Default: true */ - reset(hard?: boolean): void; + reset(hard?: boolean): void; /** * Called automatically by Phaser.Keyboard. */ - update(): void; + update(): void; /** * Returns `true` if the Key was pressed down within the `duration` value given, or `false` if it either isn't down, @@ -11964,10 +12314,10 @@ declare module Phaser { * @param duration The duration within which the key is considered as being just released. Given in ms. - Default: 50 * @return True if the key was released within the given duration. */ - upDuration(duration?: number): boolean; - - } - + upDuration(duration?: number): boolean; + + } + /** * The Keyboard class monitors keyboard input and dispatches keyboard events. @@ -11979,8 +12329,8 @@ declare module Phaser { * For example the Chrome extension vimium is known to disable Phaser from using the D key. And there are others. * So please check your extensions before opening Phaser issues. */ - class Keyboard { - + class Keyboard { + /** * The Keyboard class monitors keyboard input and dispatches keyboard events. @@ -11994,163 +12344,163 @@ declare module Phaser { * * @param game A reference to the currently running game. */ - constructor(game: Phaser.Game); - - static A: number; - static B: number; - static C: number; - static D: number; - static E: number; - static F: number; - static G: number; - static H: number; - static I: number; - static J: number; - static K: number; - static L: number; - static M: number; - static N: number; - static O: number; - static P: number; - static Q: number; - static R: number; - static S: number; - static T: number; - static U: number; - static V: number; - static W: number; - static X: number; - static Y: number; - static Z: number; - static ZERO: number; - static ONE: number; - static TWO: number; - static THREE: number; - static FOUR: number; - static FIVE: number; - static SIX: number; - static SEVEN: number; - static EIGHT: number; - static NINE: number; - static NUMPAD_0: number; - static NUMPAD_1: number; - static NUMPAD_2: number; - static NUMPAD_3: number; - static NUMPAD_4: number; - static NUMPAD_5: number; - static NUMPAD_6: number; - static NUMPAD_7: number; - static NUMPAD_8: number; - static NUMPAD_9: number; - static NUMPAD_MULTIPLY: number; - static NUMPAD_ADD: number; - static NUMPAD_ENTER: number; - static NUMPAD_SUBTRACT: number; - static NUMPAD_DECIMAL: number; - static NUMPAD_DIVIDE: number; - static F1: number; - static F2: number; - static F3: number; - static F4: number; - static F5: number; - static F6: number; - static F7: number; - static F8: number; - static F9: number; - static F10: number; - static F11: number; - static F12: number; - static F13: number; - static F14: number; - static F15: number; - static COLON: number; - static EQUALS: number; - static COMMA: number; - static UNDERSCORE: number; - static PERIOD: number; - static QUESTION_MARK: number; - static TILDE: number; - static OPEN_BRACKET: number; - static BACKWARD_SLASH: number; - static CLOSED_BRACKET: number; - static QUOTES: number; - static BACKSPACE: number; - static TAB: number; - static CLEAR: number; - static ENTER: number; - static SHIFT: number; - static CONTROL: number; - static ALT: number; - static CAPS_LOCK: number; - static ESC: number; - static SPACEBAR: number; - static PAGE_UP: number; - static PAGE_DOWN: number; - static END: number; - static HOME: number; - static LEFT: number; - static UP: number; - static RIGHT: number; - static DOWN: number; - static INSERT: number; - static DELETE: number; - static HELP: number; - static NUM_LOCK: number; - static PLUS: number; - static MINUS: number; - + constructor(game: Phaser.Game); + + static A: number; + static B: number; + static C: number; + static D: number; + static E: number; + static F: number; + static G: number; + static H: number; + static I: number; + static J: number; + static K: number; + static L: number; + static M: number; + static N: number; + static O: number; + static P: number; + static Q: number; + static R: number; + static S: number; + static T: number; + static U: number; + static V: number; + static W: number; + static X: number; + static Y: number; + static Z: number; + static ZERO: number; + static ONE: number; + static TWO: number; + static THREE: number; + static FOUR: number; + static FIVE: number; + static SIX: number; + static SEVEN: number; + static EIGHT: number; + static NINE: number; + static NUMPAD_0: number; + static NUMPAD_1: number; + static NUMPAD_2: number; + static NUMPAD_3: number; + static NUMPAD_4: number; + static NUMPAD_5: number; + static NUMPAD_6: number; + static NUMPAD_7: number; + static NUMPAD_8: number; + static NUMPAD_9: number; + static NUMPAD_MULTIPLY: number; + static NUMPAD_ADD: number; + static NUMPAD_ENTER: number; + static NUMPAD_SUBTRACT: number; + static NUMPAD_DECIMAL: number; + static NUMPAD_DIVIDE: number; + static F1: number; + static F2: number; + static F3: number; + static F4: number; + static F5: number; + static F6: number; + static F7: number; + static F8: number; + static F9: number; + static F10: number; + static F11: number; + static F12: number; + static F13: number; + static F14: number; + static F15: number; + static COLON: number; + static EQUALS: number; + static COMMA: number; + static UNDERSCORE: number; + static PERIOD: number; + static QUESTION_MARK: number; + static TILDE: number; + static OPEN_BRACKET: number; + static BACKWARD_SLASH: number; + static CLOSED_BRACKET: number; + static QUOTES: number; + static BACKSPACE: number; + static TAB: number; + static CLEAR: number; + static ENTER: number; + static SHIFT: number; + static CONTROL: number; + static ALT: number; + static CAPS_LOCK: number; + static ESC: number; + static SPACEBAR: number; + static PAGE_UP: number; + static PAGE_DOWN: number; + static END: number; + static HOME: number; + static LEFT: number; + static UP: number; + static RIGHT: number; + static DOWN: number; + static INSERT: number; + static DELETE: number; + static HELP: number; + static NUM_LOCK: number; + static PLUS: number; + static MINUS: number; + /** * The context under which the callbacks are run. */ - callbackContext: any; + callbackContext: any; /** * Keyboard input will only be processed if enabled. * Default: true */ - enabled: boolean; + enabled: boolean; /** * The most recent DOM event from keydown or keyup. This is updated every time a new key is pressed or released. */ - event: any; + event: any; /** * Local reference to game. */ - game: Phaser.Game; + game: Phaser.Game; /** * Returns the string value of the most recently pressed key. */ - lastChar: string; + lastChar: string; /** * Returns the most recently pressed Key. This is a Phaser.Key object and it changes every time a key is pressed. */ - lastKey: Phaser.Key; + lastKey: Phaser.Key; /** * This callback is invoked every time a key is pressed down, including key repeats when a key is held down. */ - onDownCallback: Function; + onDownCallback: Function; /** * This callback is invoked every time a DOM onkeypress event is raised, which is only for printable keys. */ - onPressCallback: Function; + onPressCallback: Function; /** * This callback is invoked every time a key is released. */ - onUpCallback: Function; + onUpCallback: Function; /** * The most recent DOM event from keypress. */ - pressEvent: any; - + pressEvent: any; + /** * Add callbacks to the Keyboard handler so that each time a key is pressed down or released the callbacks are activated. @@ -12160,7 +12510,7 @@ declare module Phaser { * @param onUp This callback is invoked every time a key is released. * @param onPress This callback is invoked every time the onkeypress event is raised. */ - addCallbacks(context: any, onDown?: Function, onUp?: Function, onPress?: Function): void; + addCallbacks(context: any, onDown?: Function, onUp?: Function, onPress?: Function): void; /** * If you need more fine-grained control over a Key you can create a new Phaser.Key object via this method. @@ -12169,7 +12519,7 @@ declare module Phaser { * @param keycode The {@link Phaser.KeyCode keycode} of the key. * @return The Key object which you can store locally and reference directly. */ - addKey(keycode: number): Phaser.Key; + addKey(keycode: number): Phaser.Key; /** * A practical way to create an object containing user selected hotkeys. @@ -12183,7 +12533,7 @@ declare module Phaser { * @param keys A key mapping object, i.e. `{ 'up': Phaser.KeyCode.W, 'down': Phaser.KeyCode.S }` or `{ 'up': 52, 'down': 53 }`. * @return An object containing the properties mapped to {@link Phaser.Key} values. */ - addKeys(keys: any): any; + addKeys(keys: any): any; /** * By default when a key is pressed Phaser will not stop the event from propagating up to the browser. @@ -12196,24 +12546,24 @@ declare module Phaser { * * @param keycode Either a single {@link Phaser.KeyCode keycode} or an array/hash of keycodes such as `[65, 67, 68]`. */ - addKeyCapture(keycode: any): void; + addKeyCapture(keycode: any): void; /** * Creates and returns an object containing 4 hotkeys for Up, Down, Left and Right. * @return An object containing properties: `up`, `down`, `left` and `right` of {@link Phaser.Key} objects. */ - createCursorKeys(): Phaser.CursorKeys; + createCursorKeys(): Phaser.CursorKeys; /** * Clear all set key captures. */ - clearCaptures(): void; + clearCaptures(): void; /** * Stops the Keyboard event listeners from running (keydown and keyup). They are removed from the window. * Also clears all key captures and currently created Key objects. */ - destroy(): void; + destroy(): void; /** * Returns `true` if the Key was pressed down within the `duration` value given, or `false` if it either isn't down, @@ -12223,7 +12573,7 @@ declare module Phaser { * @param duration The duration within which the key is considered as being just pressed. Given in ms. - Default: 50 * @return True if the key was pressed down within the given duration, false if not or null if the Key wasn't found. */ - downDuration(keycode: number, duration?: number): boolean; + downDuration(keycode: number, duration?: number): boolean; /** * Returns true of the key is currently pressed down. Note that it can only detect key presses on the web browser. @@ -12231,65 +12581,65 @@ declare module Phaser { * @param keycode The {@link Phaser.KeyCode keycode} of the key to check: i.e. Phaser.KeyCode.UP or Phaser.KeyCode.SPACEBAR. * @return True if the key is currently down, false if not or null if the Key wasn't found. */ - isDown(keycode: number): boolean; + isDown(keycode: number): boolean; /** * Process the keydown event. * * @param event */ - processKeyDown(event: KeyboardEvent): void; + processKeyDown(event: KeyboardEvent): void; /** * Process the keypress event. * * @param event */ - processKeyPress(event: KeyboardEvent): void; + processKeyPress(event: KeyboardEvent): void; /** * Process the keyup event. * * @param event */ - processKeyUp(event: KeyboardEvent): void; + processKeyUp(event: KeyboardEvent): void; /** * Removes a Key object from the Keyboard manager. * * @param keycode The {@link Phaser.KeyCode keycode} of the key to remove. */ - removeKey(keycode: number): void; + removeKey(keycode: number): void; /** * Removes an existing key capture. * * @param keycode The {@link Phaser.KeyCode keycode} to remove capturing of. */ - removeKeyCapture(keycode: number): void; + removeKeyCapture(keycode: number): void; /** * Resets all Keys. * * @param hard A soft reset won't reset any events or callbacks that are bound to the Keys. A hard reset will. - Default: true */ - reset(hard?: boolean): void; + reset(hard?: boolean): void; /** * Starts the Keyboard event listeners running (keydown and keyup). They are attached to the window. * This is called automatically by Phaser.Input and should not normally be invoked directly. */ - start(): void; + start(): void; /** * Stops the Keyboard event listeners from running (keydown, keyup and keypress). They are removed from the window. */ - stop(): void; + stop(): void; /** * Updates all currently defined keys. */ - update(): void; + update(): void; /** * Returns `true` if the Key was pressed down within the `duration` value given, or `false` if it either isn't down, @@ -12299,123 +12649,123 @@ declare module Phaser { * @param duration The duration within which the key is considered as being just released. Given in ms. - Default: 50 * @return True if the key was released within the given duration, false if not or null if the Key wasn't found. */ - upDuration(keycode: number, duration?: number): boolean; - - } - - class KeyCode { - - static A: number; - static B: number; - static C: number; - static D: number; - static E: number; - static F: number; - static G: number; - static H: number; - static I: number; - static J: number; - static K: number; - static L: number; - static M: number; - static N: number; - static O: number; - static P: number; - static Q: number; - static R: number; - static S: number; - static T: number; - static U: number; - static V: number; - static W: number; - static X: number; - static Y: number; - static Z: number; - static ZERO: number; - static ONE: number; - static TWO: number; - static THREE: number; - static FOUR: number; - static FIVE: number; - static SIX: number; - static SEVEN: number; - static EIGHT: number; - static NINE: number; - static NUMPAD_0: number; - static NUMPAD_1: number; - static NUMPAD_2: number; - static NUMPAD_3: number; - static NUMPAD_4: number; - static NUMPAD_5: number; - static NUMPAD_6: number; - static NUMPAD_7: number; - static NUMPAD_8: number; - static NUMPAD_9: number; - static NUMPAD_MULTIPLY: number; - static NUMPAD_ADD: number; - static NUMPAD_ENTER: number; - static NUMPAD_SUBTRACT: number; - static NUMPAD_DECIMAL: number; - static NUMPAD_DIVIDE: number; - static F1: number; - static F2: number; - static F3: number; - static F4: number; - static F5: number; - static F6: number; - static F7: number; - static F8: number; - static F9: number; - static F10: number; - static F11: number; - static F12: number; - static F13: number; - static F14: number; - static F15: number; - static COLON: number; - static EQUALS: number; - static COMMA: number; - static UNDERSCORE: number; - static PERIOD: number; - static QUESTION_MARK: number; - static TILDE: number; - static OPEN_BRACKET: number; - static BACKWARD_SLASH: number; - static CLOSED_BRACKET: number; - static QUOTES: number; - static BACKSPACE: number; - static TAB: number; - static CLEAR: number; - static ENTER: number; - static SHIFT: number; - static CONTROL: number; - static ALT: number; - static CAPS_LOCK: number; - static ESC: number; - static SPACEBAR: number; - static PAGE_UP: number; - static PAGE_DOWN: number; - static END: number; - static HOME: number; - static LEFT: number; - static UP: number; - static RIGHT: number; - static DOWN: number; - static INSERT: number; - static DELETE: number; - static HELP: number; - static NUM_LOCK: number; - static PLUS: number; - static MINUS: number; - - } - + upDuration(keycode: number, duration?: number): boolean; + + } + + class KeyCode { + + static A: number; + static B: number; + static C: number; + static D: number; + static E: number; + static F: number; + static G: number; + static H: number; + static I: number; + static J: number; + static K: number; + static L: number; + static M: number; + static N: number; + static O: number; + static P: number; + static Q: number; + static R: number; + static S: number; + static T: number; + static U: number; + static V: number; + static W: number; + static X: number; + static Y: number; + static Z: number; + static ZERO: number; + static ONE: number; + static TWO: number; + static THREE: number; + static FOUR: number; + static FIVE: number; + static SIX: number; + static SEVEN: number; + static EIGHT: number; + static NINE: number; + static NUMPAD_0: number; + static NUMPAD_1: number; + static NUMPAD_2: number; + static NUMPAD_3: number; + static NUMPAD_4: number; + static NUMPAD_5: number; + static NUMPAD_6: number; + static NUMPAD_7: number; + static NUMPAD_8: number; + static NUMPAD_9: number; + static NUMPAD_MULTIPLY: number; + static NUMPAD_ADD: number; + static NUMPAD_ENTER: number; + static NUMPAD_SUBTRACT: number; + static NUMPAD_DECIMAL: number; + static NUMPAD_DIVIDE: number; + static F1: number; + static F2: number; + static F3: number; + static F4: number; + static F5: number; + static F6: number; + static F7: number; + static F8: number; + static F9: number; + static F10: number; + static F11: number; + static F12: number; + static F13: number; + static F14: number; + static F15: number; + static COLON: number; + static EQUALS: number; + static COMMA: number; + static UNDERSCORE: number; + static PERIOD: number; + static QUESTION_MARK: number; + static TILDE: number; + static OPEN_BRACKET: number; + static BACKWARD_SLASH: number; + static CLOSED_BRACKET: number; + static QUOTES: number; + static BACKSPACE: number; + static TAB: number; + static CLEAR: number; + static ENTER: number; + static SHIFT: number; + static CONTROL: number; + static ALT: number; + static CAPS_LOCK: number; + static ESC: number; + static SPACEBAR: number; + static PAGE_UP: number; + static PAGE_DOWN: number; + static END: number; + static HOME: number; + static LEFT: number; + static UP: number; + static RIGHT: number; + static DOWN: number; + static INSERT: number; + static DELETE: number; + static HELP: number; + static NUM_LOCK: number; + static PLUS: number; + static MINUS: number; + + } + /** * Creates a new Line object with a start and an end point. */ - class Line { - + class Line { + /** * Creates a new Line object with a start and an end point. @@ -12425,94 +12775,94 @@ declare module Phaser { * @param x2 The x coordinate of the end of the line. * @param y2 The y coordinate of the end of the line. */ - constructor(x1?: number, y1?: number, x2?: number, y2?: number); - + constructor(x1?: number, y1?: number, x2?: number, y2?: number); + /** * Gets the angle of the line in radians. */ - angle: number; + angle: number; /** * The end point of the line. */ - end: Phaser.Point; + end: Phaser.Point; /** * Gets the height of this bounds of this line. */ - height: number; + height: number; /** * Gets the left-most point of this line. */ - left: number; + left: number; /** * Gets the length of the line segment. */ - length: number; + length: number; /** * Gets the angle in radians of the normal of this line (line.angle - 90 degrees.) */ - normalAngle: number; + normalAngle: number; /** * Gets the x component of the left-hand normal of this line. */ - normalX: number; + normalX: number; /** * Gets the y component of the left-hand normal of this line. */ - normalY: number; + normalY: number; /** * Gets the perpendicular slope of the line (x/y). */ - perpSlope: number; + perpSlope: number; /** * Gets the right-most point of this line. */ - right: number; + right: number; /** * Gets the slope of the line (y/x). */ - slope: number; + slope: number; /** * The start point of the line. */ - start: Phaser.Point; + start: Phaser.Point; /** * Gets the top-most point of this line. */ - top: number; + top: number; /** * The const type of this object. */ - type: number; + type: number; /** * Gets the width of this bounds of this line. */ - width: number; + width: number; /** * Gets the x coordinate of the top left of the bounds around this line. */ - x: number; + x: number; /** * Gets the y coordinate of the top left of the bounds around this line. */ - y: number; - + y: number; + /** * Checks for intersection between two lines as defined by the given start and end points. @@ -12528,7 +12878,7 @@ declare module Phaser { * @param result A Point object to store the result in, if not given a new one will be created. * @return The intersection segment of the two lines as a Point, or null if there is no intersection. */ - static intersectsPoints(a: Phaser.Point, b: Phaser.Point, e: Phaser.Point, f: Phaser.Point, asSegment?: boolean, result?: Phaser.Point): Phaser.Point; + static intersectsPoints(a: Phaser.Point, b: Phaser.Point, e: Phaser.Point, f: Phaser.Point, asSegment?: boolean, result?: Phaser.Point): Phaser.Point; /** * Checks for intersection between this line and another Line. @@ -12540,8 +12890,8 @@ declare module Phaser { * @param result A Point object to store the result in, if not given a new one will be created. * @return The intersection segment of the two lines as a Point, or null if there is no intersection. */ - static intersects(a: Phaser.Line, b: Phaser.Line, asSegment?: boolean, result?: Phaser.Point): Phaser.Point; - static intersectsRectangle(line: Phaser.Line, rect: Phaser.Rectangle): boolean; + static intersects(a: Phaser.Line, b: Phaser.Line, asSegment?: boolean, result?: Phaser.Point): Phaser.Point; + static intersectsRectangle(line: Phaser.Line, rect: Phaser.Rectangle): boolean; /** * Returns the reflected angle between two lines. @@ -12550,8 +12900,8 @@ declare module Phaser { * @param line The line to reflect off this line. * @return The reflected angle in radians. */ - static reflect(a: Phaser.Line, b: Phaser.Line): number; - + static reflect(a: Phaser.Line, b: Phaser.Line): number; + /** * Centers this Line on the given coordinates. @@ -12563,7 +12913,7 @@ declare module Phaser { * @param y The y position to center the line on. * @return This line object */ - centerOn(x: number, y: number): Phaser.Line; + centerOn(x: number, y: number): Phaser.Line; /** * Returns a new Line object with the same values for the start and end properties as this Line object. @@ -12571,7 +12921,7 @@ declare module Phaser { * @param output Optional Line object. If given the values will be set into the object, otherwise a brand new Line object will be created and returned. * @return The cloned Line object. */ - clone(output: Phaser.Line): Phaser.Line; + clone(output: Phaser.Line): Phaser.Line; /** * Using Bresenham's line algorithm this will return an array of all coordinates on this line. @@ -12581,7 +12931,7 @@ declare module Phaser { * @param results The array to store the results in. If not provided a new one will be generated. * @return An array of coordinates. */ - coordinatesOnLine(stepRate: number, results: any[]): any[]; + coordinatesOnLine(stepRate: number, results: any[]): any[]; /** * Sets this line to start at the given `x` and `y` coordinates and for the segment to extend at `angle` for the given `length`. @@ -12592,7 +12942,7 @@ declare module Phaser { * @param length The length of the line in pixels. * @return This line object */ - fromAngle(x: number, y: number, angle: number, length: number): Phaser.Line; + fromAngle(x: number, y: number, angle: number, length: number): Phaser.Line; /** * Sets the line to match the x/y coordinates of the two given sprites. @@ -12603,7 +12953,7 @@ declare module Phaser { * @param useCenter If true it will use startSprite.center.x, if false startSprite.x. Note that Sprites don't have a center property by default, so only enable if you've over-ridden your Sprite with a custom class. * @return This line object */ - fromSprite(startSprite: Phaser.Sprite, endSprite: Phaser.Sprite, useCenter?: boolean): Phaser.Line; + fromSprite(startSprite: Phaser.Sprite, endSprite: Phaser.Sprite, useCenter?: boolean): Phaser.Line; /** * Checks for intersection between this line and another Line. @@ -12615,7 +12965,7 @@ declare module Phaser { * @param result A Point object to store the result in, if not given a new one will be created. * @return The intersection segment of the two lines as a Point, or null if there is no intersection. */ - intersects(line: Phaser.Line, asSegment?: boolean, result?: Phaser.Point): Phaser.Point; + intersects(line: Phaser.Line, asSegment?: boolean, result?: Phaser.Point): Phaser.Point; /** * Returns a Point object where the x and y values correspond to the center (or midpoint) of the Line segment. @@ -12623,7 +12973,7 @@ declare module Phaser { * @param out A Phaser.Point object into which the result will be populated. If not given a new Point object is created. * @return A Phaser.Point object with the x and y values set to the center of the line segment. */ - midPoint(out?: Phaser.Point): Phaser.Point; + midPoint(out?: Phaser.Point): Phaser.Point; /** * Tests if the given coordinates fall on this line. See pointOnSegment to test against just the line segment. @@ -12632,7 +12982,7 @@ declare module Phaser { * @param y The line to check against this one. * @return True if the point is on the line, false if not. */ - pointOnLine(x: number, y: number): boolean; + pointOnLine(x: number, y: number): boolean; /** * Tests if the given coordinates fall on this line and within the segment. See pointOnLine to test against just the line. @@ -12641,7 +12991,7 @@ declare module Phaser { * @param y The line to check against this one. * @return True if the point is on the line and segment, false if not. */ - pointOnSegment(x: number, y: number): boolean; + pointOnSegment(x: number, y: number): boolean; /** * Picks a random point from anywhere on the Line segment and returns it. @@ -12650,7 +13000,7 @@ declare module Phaser { * If no object is provided a new Phaser.Point object will be created. In high performance areas avoid this by re-using an object. * @return An object containing the random point in its `x` and `y` properties. */ - random(out?: Phaser.Point): Phaser.Point; + random(out?: Phaser.Point): Phaser.Point; /** * Returns the reflected angle between two lines. @@ -12659,7 +13009,7 @@ declare module Phaser { * @param line The line to reflect off this line. * @return The reflected angle in radians. */ - reflect(line: Phaser.Line): number; + reflect(line: Phaser.Line): number; /** * Rotates the line by the amount specified in `angle`. @@ -12673,7 +13023,7 @@ declare module Phaser { * @param asDegrees Is the given angle in radians (false) or degrees (true)? * @return This line object */ - rotate(angle: number, asDegrees?: boolean): Phaser.Line; + rotate(angle: number, asDegrees?: boolean): Phaser.Line; /** * Rotates the line by the amount specified in `angle`. @@ -12686,7 +13036,7 @@ declare module Phaser { * @param asDegrees Is the given angle in radians (false) or degrees (true)? * @return This line object */ - rotateAround(x: number, y: number, angle: number, asDegrees?: boolean): Phaser.Line; + rotateAround(x: number, y: number, angle: number, asDegrees?: boolean): Phaser.Line; /** * Sets the components of the Line to the specified values. @@ -12697,10 +13047,10 @@ declare module Phaser { * @param y2 The y coordinate of the end of the line. * @return This line object */ - setTo(x1?: number, y1?: number, x2?: number, y2?: number): Phaser.Line; - - } - + setTo(x1?: number, y1?: number, x2?: number, y2?: number): Phaser.Line; + + } + /** * A basic Linked List data structure. @@ -12710,34 +13060,34 @@ declare module Phaser { * - Items _cannot_ be added to multiple LinkedLists at the same time. * - Only objects can be added. */ - class LinkedList { - + class LinkedList { + /** * First element in the list. */ - first: any; + first: any; /** * Last element in the list. */ - last: any; + last: any; /** * Next element in the list. */ - next: any; + next: any; /** * Previous element in the list. */ - prev: any; + prev: any; /** * Number of elements in the list. */ - total: number; - + total: number; + /** * Adds a new element to this linked list. @@ -12745,7 +13095,7 @@ declare module Phaser { * @param item The element to add to this list. Can be a Phaser.Sprite or any other object you need to quickly iterate through. * @return The item that was added. */ - add(item: any): any; + add(item: any): any; /** * Calls a function on all members of this list, using the member as the context for the callback. @@ -12753,22 +13103,22 @@ declare module Phaser { * * @param callback The function to call. */ - callAll(callback: Function): void; + callAll(callback: Function): void; /** * Removes the given element from this linked list if it exists. * * @param item The item to be removed from the list. */ - remove(item: any): void; + remove(item: any): void; /** * Resets the first, last, next and previous node pointers in this list. */ - reset(): void; - - } - + reset(): void; + + } + /** * The Loader handles loading all external content such as Images, Sounds, Texture Atlases and data files. @@ -12781,8 +13131,8 @@ declare module Phaser { * Texture Atlases can be created with tools such as [Texture Packer](https://www.codeandweb.com/texturepacker/phaser) and * [Shoebox](http://renderhjs.net/shoebox/) */ - class Loader { - + class Loader { + /** * The Loader handles loading all external content such as Images, Sounds, Texture Atlases and data files. @@ -12797,61 +13147,61 @@ declare module Phaser { * * @param game A reference to the currently running game. */ - constructor(game: Phaser.Game); - - static PHYSICS_LIME_CORONA_JSON: number; - static PHYSICS_PHASER_JSON: number; - static TEXTURE_ATLAS_JSON_ARRAY: number; - static TEXTURE_ATLAS_JSON_HASH: number; - static TEXTURE_ATLAS_XML_STARLING: number; - static TEXTURE_ATLAS_JSON_PYXEL: number; - + constructor(game: Phaser.Game); + + static PHYSICS_LIME_CORONA_JSON: number; + static PHYSICS_PHASER_JSON: number; + static TEXTURE_ATLAS_JSON_ARRAY: number; + static TEXTURE_ATLAS_JSON_HASH: number; + static TEXTURE_ATLAS_XML_STARLING: number; + static TEXTURE_ATLAS_JSON_PYXEL: number; + /** * If you want to append a URL before the path of any asset you can set this here. * Useful if allowing the asset base url to be configured outside of the game code. * The string _must_ end with a "/". */ - baseURL: string; + baseURL: string; /** * Local reference to the Phaser.Cache. */ - cache: Phaser.Cache; + cache: Phaser.Cache; /** * The crossOrigin value applied to loaded images. Very often this needs to be set to 'anonymous'. */ - crossOrigin: boolean | string; + crossOrigin: boolean | string; /** * If true (the default) then parallel downloading will be enabled. * * To disable all parallel downloads this must be set to false prior to any resource being loaded. */ - enableParallel: boolean; + enableParallel: boolean; /** * Local reference to game. */ - game: Phaser.Game; + game: Phaser.Game; /** * True if all assets in the queue have finished loading. */ - hasLoaded: boolean; + hasLoaded: boolean; /** * True if the Loader is in the process of loading the queue. */ - isLoading: boolean; + isLoading: boolean; /** * The number of concurrent / parallel resources to try and fetch at once. * * Many current browsers limit 6 requests per domain; this is slightly conservative. */ - maxParallelDownloads: number; + maxParallelDownloads: number; /** * This event is dispatched immediately before a file starts loading. @@ -12859,7 +13209,7 @@ declare module Phaser { * * Params: `(progress, file key, file url)` */ - onFileStart: Phaser.Signal; + onFileStart: Phaser.Signal; /** * This event is dispatched when a file has either loaded or failed to load. @@ -12870,7 +13220,7 @@ declare module Phaser { * * Where progress is a number between 1 and 100 (inclusive) representing the percentage of the load. */ - onFileComplete: Phaser.Signal; + onFileComplete: Phaser.Signal; /** * This event is dispatched when a file (or pack) errors as a result of the load request. @@ -12879,18 +13229,18 @@ declare module Phaser { * * Params: `(file key, file)` */ - onFileError: Phaser.Signal; + onFileError: Phaser.Signal; /** * This event is dispatched when the final file in the load queue has either loaded or failed. */ - onLoadComplete: Phaser.Signal; + onLoadComplete: Phaser.Signal; /** * This event is dispatched when the loading process starts: before the first file has been requested, * but after all the initial packs have been loaded. */ - onLoadStart: Phaser.Signal; + onLoadStart: Phaser.Signal; /** * This event is dispatched when an asset pack has either loaded or failed to load. @@ -12899,7 +13249,7 @@ declare module Phaser { * * Params: `(pack key, success?, total packs loaded, total packs)` */ - onPackComplete: Phaser.Signal; + onPackComplete: Phaser.Signal; /** * The value of `path`, if set, is placed before any _relative_ file path given. For example: @@ -12917,19 +13267,19 @@ declare module Phaser { * * The string _must_ end with a "/". */ - path: string; + path: string; /** * You can optionally link a progress sprite with {@link Phaser.Loader#setPreloadSprite setPreloadSprite}. * * This property is an object containing: sprite, rect, direction, width and height */ - preloadSprite: any; + preloadSprite: any; /** * The rounded load progress percentage value (from 0 to 100). See {@link Phaser.Loader#progressFloat}. */ - progress: number; + progress: number; /** * The non-rounded load progress value (from 0.0 to 100.0). @@ -12937,20 +13287,20 @@ declare module Phaser { * A general indicator of the progress. * It is possible for the progress to decrease, after `onLoadStart`, if more files are dynamically added. */ - progressFloat: number; + progressFloat: number; /** * If true all calls to Loader.reset will be ignored. Useful if you need to create a load queue before swapping to a preloader state. */ - resetLocked: boolean; + resetLocked: boolean; /** * If true and if the browser supports XDomainRequest, it will be used in preference for XHR. * * This is only relevant for IE 9 and should _only_ be enabled for IE 9 clients when required by the server/CDN. */ - useXDomainRequest: boolean; - + useXDomainRequest: boolean; + /** * Informs the loader that the given file resource has been fetched and processed; @@ -12959,7 +13309,7 @@ declare module Phaser { * @param file * @param error The error message, if any. No message implies no error. - Default: '' */ - asyncComplete(file: any, errorMessage?: string): void; + asyncComplete(file: any, errorMessage?: string): void; /** * Add a synchronization point to a specific file/asset in the load queue. @@ -12970,7 +13320,7 @@ declare module Phaser { * @param key Key of the file you want to turn into a sync point. * @return This Loader instance. */ - addSyncPoint(type: string, key: string): Phaser.Loader; + addSyncPoint(type: string, key: string): Phaser.Loader; /** * Internal function that adds a new entry to the file list. Do not call directly. @@ -12983,7 +13333,7 @@ declare module Phaser { * @param extension If no URL is given the Loader will sometimes auto-generate the URL based on the key, using this as the extension. * @return This instance of the Phaser Loader. */ - addToFileList(type: string, key: string, url?: string, properties?: any, overwrite?: boolean, extension?: string): Phaser.Loader; + addToFileList(type: string, key: string, url?: string, properties?: any, overwrite?: boolean, extension?: string): Phaser.Loader; /** * Adds a Texture Atlas file to the current load queue. @@ -13023,7 +13373,7 @@ declare module Phaser { * @param format The format of the data. Can be Phaser.Loader.TEXTURE_ATLAS_JSON_ARRAY (the default), Phaser.Loader.TEXTURE_ATLAS_JSON_HASH or Phaser.Loader.TEXTURE_ATLAS_XML_STARLING. * @return This Loader instance. */ - atlas(key: string, textureURL?: string, atlasURL?: string, atlasData?: any, format?: number): Phaser.Loader; + atlas(key: string, textureURL?: string, atlasURL?: string, atlasData?: any, format?: number): Phaser.Loader; /** * Adds a Texture Atlas file to the current load queue. @@ -13064,7 +13414,7 @@ declare module Phaser { * @param atlasData A JSON data object. You don't need this if the data is being loaded from a URL. * @return This Loader instance. */ - atlasJSONArray(key: string, textureURL?: string, atlasURL?: string, atlasData?: any): Phaser.Loader; + atlasJSONArray(key: string, textureURL?: string, atlasURL?: string, atlasData?: any): Phaser.Loader; /** * Adds a Texture Atlas file to the current load queue. @@ -13105,7 +13455,7 @@ declare module Phaser { * @param atlasData A JSON data object. You don't need this if the data is being loaded from a URL. * @return This Loader instance. */ - atlasJSONHash(key: string, textureURL?: string, atlasURL?: string, atlasData?: any): Phaser.Loader; + atlasJSONHash(key: string, textureURL?: string, atlasURL?: string, atlasData?: any): Phaser.Loader; /** * Adds a Texture Atlas file to the current load queue. @@ -13146,7 +13496,7 @@ declare module Phaser { * @param atlasData An XML data object. You don't need this if the data is being loaded from a URL. * @return This Loader instance. */ - atlasXML(key: string, textureURL?: string, atlasURL?: string, atlasData?: any): Phaser.Loader; + atlasXML(key: string, textureURL?: string, atlasURL?: string, atlasData?: any): Phaser.Loader; /** * Adds an audio file to the current load queue. @@ -13172,7 +13522,7 @@ declare module Phaser { * Audio files can't be played until they are decoded and, if specified, this enables immediate decoding. Decoding is a non-blocking async process, however it consumes huge amounts of CPU time on mobiles especially. - Default: true * @return This Loader instance. */ - audio(key: string, urls: string | string[] | any, autoDecode?: boolean): Phaser.Loader; + audio(key: string, urls: string | string[] | any, autoDecode?: boolean): Phaser.Loader; /** * Adds an audio sprite file to the current load queue. @@ -13197,7 +13547,7 @@ declare module Phaser { * Audio files can't be played until they are decoded and, if specified, this enables immediate decoding. Decoding is a non-blocking async process, however it consumes huge amounts of CPU time on mobiles especially. - Default: true * @return This Loader instance. */ - audiosprite(key: string, urls: string[], jsonURL?: string, jsonData?: string | any, autoDecode?: boolean): Phaser.Loader; + audiosprite(key: string, urls: string[], jsonURL?: string, jsonData?: string | any, autoDecode?: boolean): Phaser.Loader; /** * Adds a binary file to the current load queue. @@ -13225,7 +13575,7 @@ declare module Phaser { * @param callbackContext The context under which the callback will be applied. If not specified it will use the callback itself as the context. * @return This Loader instance. */ - binary(key: string, url?: string, callback?: Function, callbackContext?: any): Phaser.Loader; + binary(key: string, url?: string, callback?: Function, callbackContext?: any): Phaser.Loader; /** * Adds Bitmap Font files to the current load queue. @@ -13264,7 +13614,7 @@ declare module Phaser { * @param ySpacing If you'd like to add additional vertical spacing between the lines then set the pixel value here. * @return This Loader instance. */ - bitmapFont(key: string, textureURL?: string, atlasURL?: string, atlasData?: any, xSpacing?: number, ySpacing?: number): Phaser.Loader; + bitmapFont(key: string, textureURL?: string, atlasURL?: string, atlasData?: any, xSpacing?: number, ySpacing?: number): Phaser.Loader; /** * Check whether a file/asset with a specific key is queued to be loaded. @@ -13275,7 +13625,7 @@ declare module Phaser { * @param key Key of the asset you want to check. * @return Return true if exists, otherwise return false. */ - checkKeyExists(type: string, key: string): boolean; + checkKeyExists(type: string, key: string): boolean; /** * Successfully loaded a CSV file - only used for certain types. @@ -13283,7 +13633,7 @@ declare module Phaser { * @param file File associated with this request * @param xhr */ - csvLoadComplete(file: any, xhr: XMLHttpRequest): void; + csvLoadComplete(file: any, xhr: XMLHttpRequest): void; /** * Called when a file/resources had been downloaded and needs to be processed further. @@ -13291,7 +13641,7 @@ declare module Phaser { * @param file File loaded * @param xhr XHR request, unspecified if loaded via other means (eg. tags) */ - fileComplete(file: any, xhr: XMLHttpRequest): void; + fileComplete(file: any, xhr: XMLHttpRequest): void; /** * Error occurred when loading a file. @@ -13300,14 +13650,14 @@ declare module Phaser { * @param xhr XHR request, unspecified if loaded via other means (eg. tags) * @param reason */ - fileError(file: any, xhr: XMLHttpRequest, reason: string): void; + fileError(file: any, xhr: XMLHttpRequest, reason: string): void; /** * The loading is all finished. * * @param abnormal True if the loading finished abnormally. - Default: true */ - finishedLoading(abnormal?: boolean): void; + finishedLoading(abnormal?: boolean): void; /** * Find a file/asset with a specific key. @@ -13319,7 +13669,7 @@ declare module Phaser { * @return Returns an object if found that has 2 properties: `index` and `file`; otherwise a non-true value is returned. * The index may change and should only be used immediately following this call. */ - getAsset(type: string, key: string): any; + getAsset(type: string, key: string): any; /** * Get the queue-index of the file/asset with a specific key. @@ -13331,7 +13681,7 @@ declare module Phaser { * @return The index of this key in the filelist, or -1 if not found. * The index may change and should only be used immediately following this call */ - getAssetIndex(type: string, key: string): number; + getAssetIndex(type: string, key: string): number; /** * Give a bunch of URLs, return the first URL that has an extension this device thinks it can play. @@ -13341,7 +13691,7 @@ declare module Phaser { * @param urls See {@link #audio} for format. * @return The URL to try and fetch; or null. */ - getAudioURL(urls: any[]): void; + getAudioURL(urls: any[]): void; /** * Adds an Image to the current load queue. @@ -13365,7 +13715,7 @@ declare module Phaser { * @param overwrite If an unloaded file with a matching key already exists in the queue, this entry will overwrite it. * @return This Loader instance. */ - image(key: string, url?: string, overwrite?: boolean): Phaser.Loader; + image(key: string, url?: string, overwrite?: boolean): Phaser.Loader; /** * Adds an array of images to the current load queue. @@ -13390,7 +13740,7 @@ declare module Phaser { * @param urls Optional array of URLs. If undefined or `null` the url will be set to `.png`, i.e. if `key` was "alien" then the URL will be "alien.png". If provided the URLs array length must match the keys array length. * @return This Loader instance. */ - images(keys: string[], urls?: string[]): Phaser.Loader; + images(keys: string[], urls?: string[]): Phaser.Loader; /** * Adds a JSON file to the current load queue. @@ -13413,7 +13763,7 @@ declare module Phaser { * @param overwrite If an unloaded file with a matching key already exists in the queue, this entry will overwrite it. * @return This Loader instance. */ - json(key: string, url?: string, overwrite?: boolean): Phaser.Loader; + json(key: string, url?: string, overwrite?: boolean): Phaser.Loader; /** * Successfully loaded a JSON file - only used for certain types. @@ -13421,12 +13771,12 @@ declare module Phaser { * @param file File associated with this request * @param xhr */ - jsonLoadComplete(file: any, xhr: XMLHttpRequest): void; + jsonLoadComplete(file: any, xhr: XMLHttpRequest): void; /** * Continue async loading through an Audio tag. */ - loadAudioTag(file: any): void; + loadAudioTag(file: any): void; /** * Start fetching a resource. @@ -13435,12 +13785,12 @@ declare module Phaser { * * @param file */ - loadFile(file: any): void; + loadFile(file: any): void; /** * Continue async loading through an Image tag. */ - loadImageTag(file: any): void; + loadImageTag(file: any): void; /** * Add a JSON resource pack ('packfile') to the Loader. @@ -13463,7 +13813,7 @@ declare module Phaser { * @param callbackContext Some Loader operations, like Binary and Script require a context for their callbacks. Pass the context here. - Default: (loader) * @return This Loader instance. */ - pack(key: string, url?: string, data?: any, callbackContext?: any): Phaser.Loader; + pack(key: string, url?: string, data?: any, callbackContext?: any): Phaser.Loader; /** * Parses string data as XML. @@ -13471,7 +13821,7 @@ declare module Phaser { * @param data The XML text to parse * @return Returns the xml document, or null if such could not parsed to a valid document. */ - parseXml(data: string): XMLDocument; + parseXml(data: string): XMLDocument; /** * Adds a physics data file to the current load queue. @@ -13503,7 +13853,7 @@ declare module Phaser { * @param format The format of the physics data. - Default: Phaser.Physics.LIME_CORONA_JSON * @return This Loader instance. */ - physics(key: string, url?: string, data?: any, format?: string): Phaser.Loader; + physics(key: string, url?: string, data?: any, format?: string): Phaser.Loader; /** * Process the next item(s) in the file/asset queue. @@ -13515,19 +13865,19 @@ declare module Phaser { * there appear other sync files (ie. packs) - this enables multiple packfiles to be fetched in parallel. * such as during the start phaser. */ - processLoadQueue(): void; + processLoadQueue(): void; /** * Process pack data. This will usually modify the file list. * * @param pack */ - processPack(pack: any): void; + processPack(pack: any): void; /** * Remove all file loading requests - this is _insufficient_ to stop current loading. Use `reset` instead. */ - removeAll(): void; + removeAll(): void; /** * Remove a file/asset from the loading queue. @@ -13537,7 +13887,7 @@ declare module Phaser { * @param type The type of resource to add to the list (image, audio, xml, etc). * @param key Key of the file you want to remove. */ - removeFile(type: string, key: string): void; + removeFile(type: string, key: string): void; /** * Internal function that replaces an existing entry in the file list with a new one. Do not call directly. @@ -13547,7 +13897,7 @@ declare module Phaser { * @param url The URL the asset will be loaded from. * @param properties Any additional properties needed to load the file. */ - replaceInFileList(type: string, key: string, url: string, properties: any): void; + replaceInFileList(type: string, key: string, url: string, properties: any): void; /** * Reset the loader and clear any queued assets. If `Loader.resetLocked` is true this operation will abort. @@ -13559,14 +13909,14 @@ declare module Phaser { * @param hard If true then the preload sprite and other artifacts may also be cleared. * @param clearEvents If true then the all Loader signals will have removeAll called on them. */ - reset(hard?: boolean, clearEvents?: boolean): void; + reset(hard?: boolean, clearEvents?: boolean): void; /** * Called automatically by ScaleManager when the game resizes in RESIZE scalemode. * * This can be used to adjust the preloading sprite size, eg. */ - resize(): void; + resize(): void; /** * Adds a JavaScript file to the current load queue. @@ -13592,7 +13942,7 @@ declare module Phaser { * @param callbackContext The context under which the callback will be applied. If not specified it will use the Phaser Loader as the context. - Default: (loader) * @return This Loader instance. */ - script(key: string, url?: String, callback?: Function, callbackContext?: any): Phaser.Loader; + script(key: string, url?: String, callback?: Function, callbackContext?: any): Phaser.Loader; /** * Adds a fragment shader file to the current load queue. @@ -13614,7 +13964,7 @@ declare module Phaser { * @param overwrite If an unloaded file with a matching key already exists in the queue, this entry will overwrite it. * @return This Loader instance. */ - shader(key: string, url?: String, overwrite?: boolean): Phaser.Loader; + shader(key: string, url?: String, overwrite?: boolean): Phaser.Loader; /** * Set a Sprite to be a "preload" sprite by passing it to this method. @@ -13627,7 +13977,7 @@ declare module Phaser { * @param sprite The sprite or image that will be cropped during the load. * @param direction A value of zero means the sprite will be cropped horizontally, a value of 1 means its will be cropped vertically. */ - setPreloadSprite(sprite: Phaser.Sprite | Phaser.Image, direction?: number): void; + setPreloadSprite(sprite: Phaser.Sprite | Phaser.Image, direction?: number): void; /** * Adds a Sprite Sheet to the current load queue. @@ -13660,12 +14010,12 @@ declare module Phaser { * @param spacing If the frames have been drawn with spacing between them, specify the amount here. * @return This Loader instance. */ - spritesheet(key: string, url: string, frameWidth: number, frameHeight: number, frameMax?: number, margin?: number, spacing?: number): Phaser.Loader; + spritesheet(key: string, url: string, frameWidth: number, frameHeight: number, frameMax?: number, margin?: number, spacing?: number): Phaser.Loader; /** * Start loading the assets. Normally you don't need to call this yourself as the StateManager will do so. */ - start(): void; + start(): void; /** * Adds a Text file to the current load queue. @@ -13687,7 +14037,7 @@ declare module Phaser { * @param overwrite If an unloaded file with a matching key already exists in the queue, this entry will overwrite it. * @return This Loader instance. */ - text(key: string, url?: string, overwrite?: boolean): Phaser.Loader; + text(key: string, url?: string, overwrite?: boolean): Phaser.Loader; /** * Adds a Tile Map data file to the current load queue. @@ -13717,31 +14067,31 @@ declare module Phaser { * @param format The format of the map data. Either Phaser.Tilemap.CSV or Phaser.Tilemap.TILED_JSON. - Default: Phaser.Tilemap.CSV * @return This Loader instance. */ - tilemap(key: string, url?: string, data?: any, format?: number): Phaser.Loader; + tilemap(key: string, url?: string, data?: any, format?: number): Phaser.Loader; /** * Returns the number of files that have already been loaded, even if they errored. * @return The number of files that have already been loaded (even if they errored) */ - totalLoadedFiles(): number; + totalLoadedFiles(): number; /** * Returns the number of asset packs that have already been loaded, even if they errored. * @return The number of asset packs that have already been loaded (even if they errored) */ - totalLoadedPacks(): number; + totalLoadedPacks(): number; /** * Returns the number of files still waiting to be processed in the load queue. This value decreases as each file in the queue is loaded. * @return The number of files that still remain in the load queue. */ - totalQueuedFiles(): number; + totalQueuedFiles(): number; /** * Returns the number of asset packs still waiting to be processed in the load queue. This value decreases as each pack in the queue is loaded. * @return The number of asset packs that still remain in the load queue. */ - totalQueuedPacks(): number; + totalQueuedPacks(): number; /** * Transforms the asset URL. @@ -13752,8 +14102,8 @@ declare module Phaser { * @param file The file object being transformed. * @return The transformed url. In rare cases where the url isn't specified it will return false instead. */ - transformUrl(url: string, file?: any): string; - updateProgress(): void; + transformUrl(url: string, file?: any): string; + updateProgress(): void; /** * Adds a video file to the current load queue. @@ -13783,8 +14133,8 @@ declare module Phaser { * If you need to have the same video playing at different times across multiple Sprites then you need to load it as a Blob. * @return This Loader instance. */ - video(key: string, urls: string | string[] | any, loadEvent?: string, asBlob?: boolean): Phaser.Loader; - withSyncPoint(callback: Function, callbackContext?: any): Phaser.Loader; + video(key: string, urls: string | string[] | any, loadEvent?: string, asBlob?: boolean): Phaser.Loader; + withSyncPoint(callback: Function, callbackContext?: any): Phaser.Loader; /** * Adds an XML file to the current load queue. @@ -13806,7 +14156,7 @@ declare module Phaser { * @param overwrite If an unloaded file with a matching key already exists in the queue, this entry will overwrite it. * @return This Loader instance. */ - xml(key: string, url?: string, overwrite?: boolean): Phaser.Loader; + xml(key: string, url?: string, overwrite?: boolean): Phaser.Loader; /** * Starts the xhr loader. @@ -13819,8 +14169,8 @@ declare module Phaser { * @param onload The function to call on success. Invoked in `this` context and supplied with `(file, xhr)` arguments. * @param onerror The function to call on error. Invoked in `this` context and supplied with `(file, xhr)` arguments. - Default: fileError */ - xhrLoad(file: any, url: string, type: string, onload: Function, onerror?: Function): void; - xhrLoadWithXDR(file: any, url: string, type: string, onload: Function, onerror?: Function): void; + xhrLoad(file: any, url: string, type: string, onload: Function, onerror?: Function): void; + xhrLoadWithXDR(file: any, url: string, type: string, onload: Function, onerror?: Function): void; /** * Successfully loaded an XML file - only used for certain types. @@ -13828,16 +14178,16 @@ declare module Phaser { * @param file File associated with this request * @param xhr */ - xmlLoadComplete(file: any, xhr: XMLHttpRequest): void; - - } - + xmlLoadComplete(file: any, xhr: XMLHttpRequest): void; + + } + /** * Phaser.LoaderParser parses data objects from Phaser.Loader that need more preparation before they can be inserted into the Cache. */ - class LoaderParser { - + class LoaderParser { + /** * Alias for xmlBitmapFont, for backwards compatibility. @@ -13848,7 +14198,7 @@ declare module Phaser { * @param ySpacing Additional vertical spacing between the characters. * @return The parsed Bitmap Font data. */ - static bitmapFont(xml: any, baseTexture: PIXI.BaseTexture, xSpacing?: number, ySpacing?: number): any; + static bitmapFont(xml: any, baseTexture: PIXI.BaseTexture, xSpacing?: number, ySpacing?: number): any; /** * Parse a Bitmap Font from an XML file. @@ -13859,7 +14209,7 @@ declare module Phaser { * @param ySpacing Additional vertical spacing between the characters. * @return The parsed Bitmap Font data. */ - static xmlBitmapFont(xml: any, baseTexture: PIXI.BaseTexture, xSpacing?: number, ySpacing?: number): any; + static xmlBitmapFont(xml: any, baseTexture: PIXI.BaseTexture, xSpacing?: number, ySpacing?: number): any; /** * Parse a Bitmap Font from a JSON file. @@ -13870,10 +14220,10 @@ declare module Phaser { * @param ySpacing Additional vertical spacing between the characters. * @return The parsed Bitmap Font data. */ - static jsonBitmapFont(json: any, baseTexture: PIXI.BaseTexture, xSpacing?: number, ySpacing?: number): any; - - } - + static jsonBitmapFont(json: any, baseTexture: PIXI.BaseTexture, xSpacing?: number, ySpacing?: number): any; + + } + /** * The Matrix is a 3x3 matrix mostly used for display transforms within the renderer. @@ -13884,50 +14234,50 @@ declare module Phaser { * | c | d | ty | * | 0 | 0 | 1 | */ - class Matrix extends PIXI.Matrix { - + class Matrix extends PIXI.Matrix { + /** * * Default: 1 */ - a: number; + a: number; /** * * Default: 0 */ - b: number; + b: number; /** * * Default: 0 */ - c: number; + c: number; /** * * Default: 1 */ - d: number; + d: number; /** * * Default: 0 */ - tx: number; + tx: number; /** * * Default: 0 */ - ty: number; + ty: number; /** * The const type of this object. */ - type: number; - + type: number; + /** * The Matrix is a 3x3 matrix mostly used for display transforms within the renderer. @@ -13945,8 +14295,8 @@ declare module Phaser { * @param tx Horizontal translation * @param ty Vertical translation */ - constructor(a?: number, b?: number, c?: number, d?: number, tx?: number, ty?: number); - + constructor(a?: number, b?: number, c?: number, d?: number, tx?: number, ty?: number); + /** * Get a new position with the current transformation applied. @@ -13957,7 +14307,7 @@ declare module Phaser { * @param newPos The point that the new position is assigned to. This can be same as input point. * @return The new point, transformed through this matrix. */ - apply(pos: Phaser.Point, newPos?: Phaser.Point): Phaser.Point; + apply(pos: Phaser.Point, newPos?: Phaser.Point): Phaser.Point; /** * Get a new position with the inverse of the current transformation applied. @@ -13968,7 +14318,7 @@ declare module Phaser { * @param newPos The point that the new position is assigned to. This can be same as input point. * @return The new point, inverse transformed through this matrix. */ - applyInverse(pos: Phaser.Point, newPos?: Phaser.Point): Phaser.Point; + applyInverse(pos: Phaser.Point, newPos?: Phaser.Point): Phaser.Point; /** * Creates a new Matrix object based on the values of this Matrix. @@ -13978,7 +14328,7 @@ declare module Phaser { * @param output If provided the values of this Matrix will be copied to it, otherwise a new Matrix object is created. * @return A clone of this Matrix. */ - clone(output?: Phaser.Matrix): Phaser.Matrix; + clone(output?: Phaser.Matrix): Phaser.Matrix; /** * Copies the properties from the given Matrix into this Matrix. @@ -13986,7 +14336,7 @@ declare module Phaser { * @param matrix The Matrix to copy from. * @return This Matrix object. */ - copyFrom(matrix: Phaser.Matrix): Phaser.Matrix; + copyFrom(matrix: Phaser.Matrix): Phaser.Matrix; /** * Copies the properties from this Matrix to the given Matrix. @@ -13994,7 +14344,7 @@ declare module Phaser { * @param matrix The Matrix to copy from. * @return The destination Matrix object. */ - copyTo(matrix: Phaser.Matrix): Phaser.Matrix; + copyTo(matrix: Phaser.Matrix): Phaser.Matrix; /** * Sets the values of this Matrix to the values in the given array. @@ -14011,7 +14361,7 @@ declare module Phaser { * @param array The array to copy from. * @return This Matrix object. */ - fromArray(array: number[]): Phaser.Matrix; + fromArray(array: number[]): Phaser.Matrix; /** * Sets the values of this Matrix to the given values. @@ -14024,7 +14374,7 @@ declare module Phaser { * @param ty Vertical translation * @return This Matrix object. */ - setTo(a: number, b: number, c: number, d: number, tx: number, ty: number): Phaser.Matrix; + setTo(a: number, b: number, c: number, d: number, tx: number, ty: number): Phaser.Matrix; /** * Creates a Float32 Array with values populated from this Matrix object. @@ -14033,7 +14383,7 @@ declare module Phaser { * @param array If provided the values will be set into this array, otherwise a new Float32Array is created. * @return The newly created array which contains the matrix. */ - toArray(transpose?: boolean, array?: number[]): number[]; + toArray(transpose?: boolean, array?: number[]): number[]; /** * Translates the matrix on the x and y. @@ -14043,7 +14393,7 @@ declare module Phaser { * @param y The y value to translate on. * @return This Matrix object. */ - translate(x: number, y: number): Phaser.Matrix; + translate(x: number, y: number): Phaser.Matrix; /** * Applies a scale transformation to this matrix. @@ -14052,7 +14402,7 @@ declare module Phaser { * @param y The amount to scale vertically. * @return This Matrix object. */ - scale(x: number, y: number): Phaser.Matrix; + scale(x: number, y: number): Phaser.Matrix; /** * Applies a rotation transformation to this matrix. @@ -14060,7 +14410,7 @@ declare module Phaser { * @param angle The angle to rotate by, given in radians. * @return This Matrix object. */ - rotate(angle: number): Phaser.Matrix; + rotate(angle: number): Phaser.Matrix; /** * Appends the given Matrix to this Matrix. @@ -14068,57 +14418,58 @@ declare module Phaser { * @param matrix The matrix to append to this one. * @return This Matrix object. */ - append(matrix: Phaser.Matrix): Phaser.Matrix; + append(matrix: Phaser.Matrix): Phaser.Matrix; /** * Resets this Matrix to an identity (default) matrix. * @return This Matrix object. */ - identity(): Phaser.Matrix; - - } - + identity(): Phaser.Matrix; + + } + /** * A collection of useful mathematical functions. * * These are normally accessed through `game.math`. */ - class Math { - + class Math { + /** * Find the angle of a segment from (x1, y1) -> (x2, y2). * - * @param x1 - * @param y1 - * @param x2 - * @param y2 + * @param x1 The x coordinate of the first value. + * @param y1 The y coordinate of the first value. + * @param x2 The x coordinate of the second value. + * @param y2 The y coordinate of the second value. * @return The angle, in radians. */ - static angleBetween(x1: number, y1: number, x2: number, y2: number): number; + static angleBetween(x1: number, y1: number, x2: number, y2: number): number; /** * Find the angle of a segment from (point1.x, point1.y) -> (point2.x, point2.y). * - * @param point1 - * @param point2 - * @return The angle, in radians. + * @param point1 The first point. + * @param point2 The second point. + * @return The angle between the two points, in radians. */ - static angleBetweenPoints(point1: Phaser.Point, point2: Phaser.Point): number; + static angleBetweenPoints(point1: Phaser.Point, point2: Phaser.Point): number; /** * Find the angle of a segment from (x1, y1) -> (x2, y2). - * Note that the difference between this method and Math.angleBetween is that this assumes the y coordinate travels + * + * The difference between this method and Math.angleBetween is that this assumes the y coordinate travels * down the screen. * - * @param x1 - * @param y1 - * @param x2 - * @param y2 + * @param x1 The x coordinate of the first value. + * @param y1 The y coordinate of the first value. + * @param x2 The x coordinate of the second value. + * @param y2 The y coordinate of the second value. * @return The angle, in radians. */ - static angleBetweenY(x1: number, y1: number, x2: number, y2: number): number; + static angleBetweenY(x1: number, y1: number, x2: number, y2: number): number; /** * Find the angle of a segment from (point1.x, point1.y) -> (point2.x, point2.y). @@ -14127,13 +14478,13 @@ declare module Phaser { * @param point2 * @return The angle, in radians. */ - static angleBetweenPointsY(point1: Phaser.Point, point2: Phaser.Point): number; + static angleBetweenPointsY(point1: Phaser.Point, point2: Phaser.Point): number; /** * Averages all values passed to the function and returns the result. * @return The average of all given values. */ - static average(...numbers: number[]): number; + static average(...numbers: number[]): number; /** * @@ -14141,7 +14492,7 @@ declare module Phaser { * @param n * @param i */ - static bernstein(n: number, i: number): number; + static bernstein(n: number, i: number): number; /** * Returns a number between the `min` and `max` values. @@ -14150,7 +14501,7 @@ declare module Phaser { * @param max The maximum value. Must be position, and greater than 'min'. * @return A value between the range min to max. */ - static between(min: number, max: number): number; + static between(min: number, max: number): number; /** * A Bezier Interpolation Method, mostly used by Phaser.Tween. @@ -14159,7 +14510,7 @@ declare module Phaser { * @param k The percentage of interpolation, between 0 and 1. * @return The interpolated value */ - static bezierInterpolation(v: number[], k: number): number; + static bezierInterpolation(v: number[], k: number): number; /** * Calculates a catmum rom value. @@ -14170,7 +14521,7 @@ declare module Phaser { * @param p3 * @param t */ - static catmullRom(p0: number, p1: number, p2: number, p3: number, t: number): number; + static catmullRom(p0: number, p1: number, p2: number, p3: number, t: number): number; /** * A Catmull Rom Interpolation Method, mostly used by Phaser.Tween. @@ -14179,16 +14530,18 @@ declare module Phaser { * @param k The percentage of interpolation, between 0 and 1. * @return The interpolated value */ - static catmullRomInterpolation(v: number[], k: number): number; + static catmullRomInterpolation(v: number[], k: number): number; /** - * + * Ceils to some place comparative to a `base`, default is 10 for decimal place. + * The `place` is represented by the power applied to `base` to get that place. * * @param value The value to round. * @param place The place to round to. - * @param base The base to round in... default is 10 for decimal. + * @param base The base to round in. Default is 10 for decimal. - Default: 10 + * @return The rounded value. */ - static ceilTo(value: number, place?: number, base?: number): number; + static ceilTo(value: number, place?: number, base?: number): number; /** * Force a value within the boundaries by clamping it to the range `min`, `max`. @@ -14198,7 +14551,7 @@ declare module Phaser { * @param max The maximum bounds. * @return The clamped value. */ - static clamp(x: number, a: number, b: number): number; + static clamp(x: number, a: number, b: number): number; /** * Clamp `x` to the range `[a, Infinity)`. @@ -14207,7 +14560,7 @@ declare module Phaser { * @param x * @param a */ - static clampBottom(x: number, a: number): number; + static clampBottom(x: number, a: number): number; /** * Convert degrees to radians. @@ -14215,15 +14568,16 @@ declare module Phaser { * @param degrees Angle in degrees. * @return Angle in radians. */ - static degToRad(degrees: number): number; + static degToRad(degrees: number): number; /** - * The (absolute) difference between two values. + * The absolute difference between two values. * - * @param a - * @param b + * @param a The first value to check. + * @param b The second value to check. + * @return The absolute difference between the two values. */ - static difference(a: number, b: number): number; + static difference(a: number, b: number): number; /** * Returns the euclidian distance between the two given set of coordinates. @@ -14234,7 +14588,7 @@ declare module Phaser { * @param y2 * @return The distance between the two sets of coordinates. */ - static distance(x1: number, y1: number, x2: number, y2: number): number; + static distance(x1: number, y1: number, x2: number, y2: number): number; /** * Returns the euclidean distance squared between the two given set of @@ -14246,7 +14600,7 @@ declare module Phaser { * @param y2 * @return The distance squared between the two sets of coordinates. */ - static distanceSq(x1: number, y1: number, x2: number, y2: number): number; + static distanceSq(x1: number, y1: number, x2: number, y2: number): number; /** * Returns the distance between the two given set of coordinates at the power given. @@ -14258,23 +14612,25 @@ declare module Phaser { * @param pow - Default: 2 * @return The distance between the two sets of coordinates. */ - static distancePow(xy: number, y1: number, x2: number, y2: number, pow?: number): number; + static distancePow(xy: number, y1: number, x2: number, y2: number, pow?: number): number; /** * * * @param value the number you want to evaluate */ - static factorial(value: number): number; + static factorial(value: number): number; /** - * + * Floors to some place comparative to a `base`, default is 10 for decimal place. + * The `place` is represented by the power applied to `base` to get that place. * * @param value The value to round. * @param place The place to round to. - * @param base The base to round in... default is 10 for decimal. + * @param base The base to round in. Default is 10 for decimal. - Default: 10 + * @return The rounded value. */ - static floorTo(value: number, place: number, base: number): number; + static floorTo(value: number, place: number, base: number): number; /** * Applies a fuzzy ceil to the given value. @@ -14283,7 +14639,7 @@ declare module Phaser { * @param epsilon The epsilon (a small value used in the calculation) - Default: 0.0001 * @return ceiling(val-epsilon) */ - static fuzzyCeil(val: number, epsilon?: number): boolean; + static fuzzyCeil(val: number, epsilon?: number): boolean; /** * Two number are fuzzyEqual if their difference is less than epsilon. @@ -14293,7 +14649,7 @@ declare module Phaser { * @param epsilon The epsilon (a small value used in the calculation) - Default: 0.0001 * @return True if |a-b|b+epsilon */ - static fuzzyGreaterThan(a: number, b: number, epsilon?: number): boolean; + static fuzzyGreaterThan(a: number, b: number, epsilon?: number): boolean; /** * `a` is fuzzyLessThan `b` if it is less than b + epsilon. @@ -14332,7 +14688,7 @@ declare module Phaser { * @param epsilon The epsilon (a small value used in the calculation) - Default: 0.0001 * @return True if a to range * - * @param x the value to map - * @param a1 first endpoint of the range - * @param a2 final endpoint of the range - * @param b1 first endpoint of the range - * @param b2 final endpoint of the range + * @param x The value to map + * @param a1 First endpoint of the range + * @param a2 Final endpoint of the range + * @param b1 First endpoint of the range + * @param b2 Final endpoint of the range */ - static mapLinear(x: number, a1: number, a2: number, b1: number, b2: number): number; + static mapLinear(x: number, a1: number, a2: number, b1: number, b2: number): number; /** * Variation of Math.max that can be passed either an array of numbers or the numbers as parameters. @@ -14385,7 +14741,7 @@ declare module Phaser { * Prefer the standard `Math.max` function when appropriate. * @return The largest value from those given. */ - static max(...numbers: number[]): number; + static max(...numbers: number[]): number; /** * Adds the given amount to the value, but never lets the value go over the specified maximum. @@ -14393,15 +14749,16 @@ declare module Phaser { * @param value The value to add the amount to. * @param amount The amount to add to the value. * @param max The maximum the value is allowed to be. + * @return The new value. */ - static maxAdd(value: number, amount: number, max: number): number; + static maxAdd(value: number, amount: number, max: number): number; /** * Variation of Math.max that can be passed a property and either an array of objects or the objects as parameters. * It will find the largest matching property value from the given objects. * @return The largest value from those given. */ - static maxProperty(...numbers: number[]): number; + static maxProperty(...numbers: number[]): number; /** * Variation of Math.min that can be passed either an array of numbers or the numbers as parameters. @@ -14409,14 +14766,14 @@ declare module Phaser { * Prefer the standard `Math.min` function when appropriate. * @return The lowest value from those given. */ - static min(...numbers: number[]): number; + static min(...numbers: number[]): number; /** * Variation of Math.min that can be passed a property and either an array of objects or the objects as parameters. * It will find the lowest matching property value from the given objects. * @return The lowest value from those given. */ - static minProperty(...numbers: number[]): number; + static minProperty(...numbers: number[]): number; /** * Subtracts the given amount from the value, but never lets the value go below the specified minimum. @@ -14426,15 +14783,15 @@ declare module Phaser { * @param min The minimum the value is allowed to be. * @return The new value. */ - static minSub(value: number, amount: number, min: number): number; + static minSub(value: number, amount: number, min: number): number; /** * Normalizes an angle to the [0,2pi) range. * * @param angleRad The angle to normalize, in radians. - * @return Returns the angle, fit within the [0,2pi] range, in radians. + * @return The angle, fit within the [0,2pi] range, in radians. */ - static normalizeAngle(angle: number, radians?: boolean): number; + static normalizeAngle(angle: number, radians?: boolean): number; /** * Work out what percentage value `a` is of value `b` using the given base. @@ -14444,14 +14801,14 @@ declare module Phaser { * @param base The base value. * @return The percentage a is of b, between 0 and 1. */ - static percent(a: number, b: number, base?: number): number; - static p2px(v: number): number; + static percent(a: number, b: number, base?: number): number; + static p2px(v: number): number; /** * Twice PI. * Default: ~6.283 */ - static PI2: number; + static PI2: number; /** * Convert radians to degrees. @@ -14459,15 +14816,15 @@ declare module Phaser { * @param radians Angle in radians. * @return Angle in degrees */ - static radToDeg(radians: number): number; + static radToDeg(radians: number): number; /** * Reverses an angle. * * @param angleRad The angle to reverse, in radians. - * @return Returns the reverse angle, in radians. + * @return The reverse angle, in radians. */ - static reverseAngle(angleRed: number): number; + static reverseAngle(angleRed: number): number; /** * Round to the next whole number _away_ from zero. @@ -14475,7 +14832,7 @@ declare module Phaser { * @param value Any number. * @return The rounded value of that number. */ - static roundAwayFromZero(value: number): number; + static roundAwayFromZero(value: number): number; /** * Round to some place comparative to a `base`, default is 10 for decimal place. @@ -14508,9 +14865,10 @@ declare module Phaser { * * @param value The value to round. * @param place The place to round to. - * @param base The base to round in... default is 10 for decimal. + * @param base The base to round in. Default is 10 for decimal. - Default: 10 + * @return The rounded value. */ - static roundTo(value: number, place?: number, base?: number): number; + static roundTo(value: number, place?: number, base?: number): number; /** * @@ -14518,7 +14876,7 @@ declare module Phaser { * @param n * @return n mod 1 */ - static shear(n: number): number; + static shear(n: number): number; /** * A value representing the sign of the value: -1 for negative, +1 for positive, 0 if value is 0. @@ -14528,7 +14886,7 @@ declare module Phaser { * @param x * @return An integer in {-1, 0, 1} */ - static sign(x: number): number; + static sign(x: number): number; /** * Generate a sine and cosine table simultaneously and extremely quickly. @@ -14542,7 +14900,7 @@ declare module Phaser { * @param frequency The frequency of the sine and cosine table data * @return Returns the table data. */ - static sinCosGenerator(length: number, sinAmplitude?: number, cosAmplitude?: number, frequency?: number): { sin: number[]; cos: number[]; }; + static sinCosGenerator(length: number, sinAmplitude?: number, cosAmplitude?: number, frequency?: number): { sin: number[]; cos: number[]; }; /** * Smootherstep function as detailed at http://en.wikipedia.org/wiki/Smoothstep @@ -14552,7 +14910,7 @@ declare module Phaser { * @param max The right edge. * @return A value between 0 and 1. */ - static smootherstep(x: number, min: number, max: number): number; + static smootherstep(x: number, min: number, max: number): number; /** * Smoothstep function as detailed at http://en.wikipedia.org/wiki/Smoothstep @@ -14562,7 +14920,7 @@ declare module Phaser { * @param max The right edge. * @return A value between 0 and 1. */ - static smoothstep(x: number, min: number, max: number): number; + static smoothstep(x: number, min: number, max: number): number; /** * Snap a value to nearest grid slice, using rounding. @@ -14572,8 +14930,9 @@ declare module Phaser { * @param input The value to snap. * @param gap The interval gap of the grid. * @param start Optional starting offset for gap. + * @return The snapped value. */ - static snapTo(input: number, gap: number, start?: number): number; + static snapTo(input: number, gap: number, start?: number): number; /** * Snap a value to nearest grid slice, using ceil. @@ -14584,8 +14943,9 @@ declare module Phaser { * @param input The value to snap. * @param gap The interval gap of the grid. * @param start Optional starting offset for gap. + * @return The snapped value. */ - static snapToCeil(input: number, gap: number, start?: number): number; + static snapToCeil(input: number, gap: number, start?: number): number; /** * Snap a value to nearest grid slice, using floor. @@ -14596,8 +14956,9 @@ declare module Phaser { * @param input The value to snap. * @param gap The interval gap of the grid. * @param start Optional starting offset for gap. + * @return The snapped value. */ - static snapToFloor(input: number, gap: number, start?: number): number; + static snapToFloor(input: number, gap: number, start?: number): number; /** * Checks if two values are within the given tolerance of each other. @@ -14607,7 +14968,7 @@ declare module Phaser { * @param tolerance The tolerance. Anything equal to or less than this is considered within the range. * @return True if a is <= tolerance of b. */ - static within(a: number, b: number, tolerance: number): boolean; + static within(a: number, b: number, tolerance: number): boolean; /** * Ensures that the value always stays between min and max, by wrapping the value around. @@ -14619,7 +14980,7 @@ declare module Phaser { * @param max The maximum the value is allowed to be, should be larger than `min`. * @return The wrapped value. */ - static wrap(value: number, min: number, max: number): number; + static wrap(value: number, min: number, max: number): number; /** * Keeps an angle value between -180 and +180; or -PI and PI if radians. @@ -14628,7 +14989,7 @@ declare module Phaser { * @param radians Set to `true` if the angle is given in radians, otherwise degrees is expected. * @return The new angle value; will be the same as the input angle if it was within bounds. */ - static wrapAngle(angle: number, radians?: boolean): number; + static wrapAngle(angle: number, radians?: boolean): number; /** * Adds value to amount and ensures that the result always stays between 0 and max, by wrapping the value around. @@ -14640,22 +15001,22 @@ declare module Phaser { * @param max The maximum the value is allowed to be. * @return The wrapped value. */ - static wrapValue(value: number, amount: number, max: number): number; - - } - - interface WheelEventProxy { - - bindEvent(event: any): WheelEventProxy; - - type: string; - deltaMode: number; - deltaX: number; - deltaY: number; - deltaZ: number; - - } - + static wrapValue(value: number, amount: number, max: number): number; + + } + + interface WheelEventProxy { + + bindEvent(event: any): WheelEventProxy; + + type: string; + deltaMode: number; + deltaX: number; + deltaY: number; + deltaZ: number; + + } + /** * The Mouse class is responsible for handling all aspects of mouse interaction with the browser. @@ -14667,8 +15028,8 @@ declare module Phaser { * You should not normally access this class directly, but instead use a Phaser.Pointer object * which normalises all game input for you, including accurate button handling. */ - class Mouse { - + class Mouse { + /** * The Mouse class is responsible for handling all aspects of mouse interaction with the browser. @@ -14682,218 +15043,218 @@ declare module Phaser { * * @param game A reference to the currently running game. */ - constructor(game: Phaser.Game); - - static NO_BUTTON: number; - static LEFT_BUTTON: number; - static MIDDLE_BUTTON: number; - static RIGHT_BUTTON: number; - static BACK_BUTTON: number; - static FORWARD_BUTTON: number; - static WHEEL_DOWN: number; - static WHEEL_UP: number; - + constructor(game: Phaser.Game); + + static NO_BUTTON: number; + static LEFT_BUTTON: number; + static MIDDLE_BUTTON: number; + static RIGHT_BUTTON: number; + static BACK_BUTTON: number; + static FORWARD_BUTTON: number; + static WHEEL_DOWN: number; + static WHEEL_UP: number; + /** * This property was removed in Phaser 2.4 and should no longer be used. * Instead please see the Pointer button properties such as `Pointer.leftButton`, `Pointer.rightButton` and so on. * Or Pointer.button holds the DOM event button value if you require that. */ - button: number; + button: number; /** * The context under which callbacks are called. */ - callbackContext: any; + callbackContext: any; /** * If true the DOM mouse events will have event.preventDefault applied to them, if false they will propagate fully. */ - capture: boolean; + capture: boolean; /** * Mouse input will only be processed if enabled. * Default: true */ - enabled: boolean; + enabled: boolean; /** * The browser mouse DOM event. Will be null if no mouse event has ever been received. * Access this property only inside a Mouse event handler and do not keep references to it. */ - event: MouseEvent; + event: MouseEvent; /** * A reference to the currently running game. */ - game: Phaser.Game; + game: Phaser.Game; /** * A reference to the Phaser Input Manager. */ - input: Phaser.Input; + input: Phaser.Input; /** * If the mouse has been Pointer Locked successfully this will be set to true. */ - locked: boolean; + locked: boolean; /** * A callback that can be fired when the mouse is pressed down. */ - mouseDownCallback: (event: MouseEvent) => void; + mouseDownCallback: (event: MouseEvent) => void; /** * A callback that can be fired when the mouse is no longer over the game canvas. */ - mouseOutCallback: (event: MouseEvent) => void; + mouseOutCallback: (event: MouseEvent) => void; /** * A callback that can be fired when the mouse enters the game canvas (usually after a mouseout). */ - mouseOverCallback: (event: MouseEvent) => void; + mouseOverCallback: (event: MouseEvent) => void; /** * A callback that can be fired when the mouse is released from a pressed down state. */ - mouseUpCallback: (event: MouseEvent) => void; + mouseUpCallback: (event: MouseEvent) => void; /** * A callback that can be fired when the mousewheel is used. */ - mouseWheelCallback: (event: MouseEvent) => void; + mouseWheelCallback: (event: MouseEvent) => void; /** * Internal event handler reference. */ - _onMouseDown: (event: MouseEvent) => void; + _onMouseDown: (event: MouseEvent) => void; /** * Internal event handler reference. */ - _onMouseMove: (event: MouseEvent) => void; + _onMouseMove: (event: MouseEvent) => void; /** * Internal event handler reference. */ - _onMouseUp: (event: MouseEvent) => void; + _onMouseUp: (event: MouseEvent) => void; /** * Internal event handler reference. */ - _onMouseOut: (event: MouseEvent) => void; + _onMouseOut: (event: MouseEvent) => void; /** * Internal event handler reference. */ - _onMouseOver: (event: MouseEvent) => void; + _onMouseOver: (event: MouseEvent) => void; /** * Internal event handler reference. */ - _onMouseWheel: (event: MouseEvent) => void; + _onMouseWheel: (event: MouseEvent) => void; /** * Wheel proxy event object, if required. Shared for all wheel events for this mouse. */ - _wheelEvent: WheelEventProxy; + _wheelEvent: WheelEventProxy; /** * This event is dispatched when the browser enters or leaves pointer lock state. */ - pointerLock: Phaser.Signal; + pointerLock: Phaser.Signal; /** * If true Pointer.stop will be called if the mouse leaves the game canvas. */ - stopOnGameOut: boolean; + stopOnGameOut: boolean; /** * The direction of the _last_ mousewheel usage 1 for up -1 for down. */ - wheelDelta: number; - + wheelDelta: number; + /** * The internal method that handles the mouse down event from the browser. * * @param event The native event from the browser. This gets stored in Mouse.event. */ - onMouseDown(event: MouseEvent): void; + onMouseDown(event: MouseEvent): void; /** * The internal method that handles the mouse move event from the browser. * * @param event The native event from the browser. This gets stored in Mouse.event. */ - onMouseMove(event: MouseEvent): void; + onMouseMove(event: MouseEvent): void; /** * The internal method that handles the mouse out event from the browser. * * @param event The native event from the browser. This gets stored in Mouse.event. */ - onMouseOut(event: MouseEvent): void; + onMouseOut(event: MouseEvent): void; /** * The internal method that handles the mouse over event from the browser. * * @param event The native event from the browser. This gets stored in Mouse.event. */ - onMouseOver(event: MouseEvent): void; + onMouseOver(event: MouseEvent): void; /** * The internal method that handles the mouse up event from the browser. * * @param event The native event from the browser. This gets stored in Mouse.event. */ - onMouseUp(event: MouseEvent): void; + onMouseUp(event: MouseEvent): void; /** * The internal method that handles the mouse up event from the window. * * @param event The native event from the browser. This gets stored in Mouse.event. */ - onMouseUpGlobal(event: MouseEvent): void; + onMouseUpGlobal(event: MouseEvent): void; /** * The internal method that handles the mouse wheel event from the browser. * * @param event The native event from the browser. */ - onMouseWheel(event: MouseEvent): void; + onMouseWheel(event: MouseEvent): void; /** * Internal pointerLockChange handler. * * @param event The native event from the browser. This gets stored in Mouse.event. */ - pointerLockChange(event: MouseEvent): void; + pointerLockChange(event: MouseEvent): void; /** * Internal release pointer lock handler. */ - releasePointerLock(): void; + releasePointerLock(): void; /** * If the browser supports it you can request that the pointer be locked to the browser window. * This is classically known as 'FPS controls', where the pointer can't leave the browser until the user presses an exit key. * If the browser successfully enters a locked state the event Phaser.Mouse.pointerLock will be dispatched and the first parameter will be 'true'. */ - requestPointerLock(): void; + requestPointerLock(): void; /** * Starts the event listeners running. */ - start(): void; + start(): void; /** * Stop the event listeners. */ - stop(): void; - - } - + stop(): void; + + } + /** * The MSPointer class handles Microsoft touch interactions with the game and the resulting Pointer objects. @@ -14907,8 +15268,8 @@ declare module Phaser { * Please note that at the current time of writing Phaser does not yet support chorded button interactions: * http://www.w3.org/TR/pointerevents/#chorded-button-interactions */ - class MSPointer { - + class MSPointer { + /** * The MSPointer class handles Microsoft touch interactions with the game and the resulting Pointer objects. @@ -14924,93 +15285,93 @@ declare module Phaser { * * @param game A reference to the currently running game. */ - constructor(game: Phaser.Game); - + constructor(game: Phaser.Game); + /** * This property was removed in Phaser 2.4 and should no longer be used. * Instead please see the Pointer button properties such as `Pointer.leftButton`, `Pointer.rightButton` and so on. * Or Pointer.button holds the DOM event button value if you require that. */ - button: number; + button: number; /** * If true the Pointer events will have event.preventDefault applied to them, if false they will propagate fully. */ - capture: boolean; + capture: boolean; /** * The context under which callbacks are called (defaults to game). */ - callbackContext: any; + callbackContext: any; /** * The browser MSPointer DOM event. Will be null if no event has ever been received. * Access this property only inside a Pointer event handler and do not keep references to it. */ - event: MSPointerEvent; + event: MSPointerEvent; /** * A reference to the currently running game. */ - game: Phaser.Game; + game: Phaser.Game; /** * A reference to the Phaser Input Manager. */ - input: Phaser.Input; - - onPointerDown: (event: MSPointerEvent) => void; - onPointerMove: (event: MSPointerEvent) => void; - onPointerUp: (event: MSPointerEvent) => void; - mouseDownCallback: (event: MSPointerEvent) => void; - mouseMoveCallback: (event: MSPointerEvent) => void; - mouseUpCallback: (event: MSPointerEvent) => void; + input: Phaser.Input; + + onPointerDown: (event: MSPointerEvent) => void; + onPointerMove: (event: MSPointerEvent) => void; + onPointerUp: (event: MSPointerEvent) => void; + mouseDownCallback: (event: MSPointerEvent) => void; + mouseMoveCallback: (event: MSPointerEvent) => void; + mouseUpCallback: (event: MSPointerEvent) => void; /** * A callback that can be fired on a MSPointerDown event. */ - pointerDownCallback: (event: MSPointerEvent) => void; + pointerDownCallback: (event: MSPointerEvent) => void; /** * A callback that can be fired on a MSPointerMove event. */ - pointerMoveCallback: (event: MSPointerEvent) => void; + pointerMoveCallback: (event: MSPointerEvent) => void; /** * A callback that can be fired on a MSPointerUp event. */ - pointerUpCallback: (event: MSPointerEvent) => void; - + pointerUpCallback: (event: MSPointerEvent) => void; + /** * Starts the event listeners running. */ - start(): void; + start(): void; /** * Stop the event listeners. */ - stop(): void; - - } - + stop(): void; + + } + /** * Phaser.Net handles browser URL related tasks such as checking host names, domain names and query string manipulation. */ - class Net { - + class Net { + /** * Phaser.Net handles browser URL related tasks such as checking host names, domain names and query string manipulation. * * @param game A reference to the currently running game. */ - constructor(game: Phaser.Game); - - game: Phaser.Game; - + constructor(game: Phaser.Game); + + game: Phaser.Game; + /** * Compares the given domain name against the hostname of the browser containing the game. @@ -15021,7 +15382,7 @@ declare module Phaser { * @param domain * @return true if the given domain fragment can be found in the window.location.hostname */ - checkDomainName(domain: string): boolean; + checkDomainName(domain: string): boolean; /** * Takes a Uniform Resource Identifier (URI) component (previously created by encodeURIComponent or by a similar routine) and @@ -15030,12 +15391,12 @@ declare module Phaser { * @param value The URI component to be decoded. * @return The decoded value. */ - decodeURI(value: string): string; + decodeURI(value: string): string; /** * Returns the hostname given by the browser. */ - getHostName(): string; + getHostName(): string; /** * Returns the Query String as an object. @@ -15044,7 +15405,7 @@ declare module Phaser { * @param parameter If specified this will return just the value for that key. - Default: '' * @return An object containing the key value pairs found in the query string or just the value if a parameter was given. */ - getQueryString(parameter?: string): string; + getQueryString(parameter?: string): string; /** * Updates a value on the Query String and returns it in full. @@ -15058,16 +15419,16 @@ declare module Phaser { * @param url The URL to modify. If none is given it uses window.location.href. * @return If redirect is false then the modified url and query string is returned. */ - updateQueryString(key: string, value: any, redirect?: boolean, url?: string): string; - - } - + updateQueryString(key: string, value: any, redirect?: boolean, url?: string): string; + + } + /** * Create a new `Particle` object. Particles are extended Sprites that are emitted by a particle emitter such as Phaser.Particles.Arcade.Emitter. */ - class Particle extends Phaser.Sprite { - + class Particle extends Phaser.Sprite { + /** * Create a new `Particle` object. Particles are extended Sprites that are emitted by a particle emitter such as Phaser.Particles.Arcade.Emitter. @@ -15078,20 +15439,20 @@ declare module Phaser { * @param key This is the image or texture used by the Particle during rendering. It can be a string which is a reference to the Cache entry, or an instance of a RenderTexture or PIXI.Texture. * @param frame If this Particle is using part of a sprite sheet or texture atlas you can specify the exact frame to use by giving a string or numeric index. */ - constructor(game: Phaser.Game, x: number, y: number, key?: any, frame?: any); - + constructor(game: Phaser.Game, x: number, y: number, key?: any, frame?: any); + /** * A Game Object is considered `fresh` if it has just been created or reset and is yet to receive a renderer transform update. * This property is mostly used internally by the physics systems, but is exposed for the use of plugins. */ - fresh: boolean; - + fresh: boolean; + /** * Called by the Emitter when this particle is emitted. Left empty for you to over-ride as required. */ - onEmit(): void; + onEmit(): void; /** * Resets the Particle. This places the Particle at the given x/y world coordinates and then @@ -15103,55 +15464,55 @@ declare module Phaser { * @param health The health to give the Particle. - Default: 1 * @return This instance. */ - reset(x: number, y: number, health?: number): Phaser.Particle; + reset(x: number, y: number, health?: number): Phaser.Particle; /** * Called by the Emitter if autoAlpha has been enabled. Passes over the alpha ease data and resets the alpha counter. */ - setAlphaData(data: any[]): void; + setAlphaData(data: any[]): void; /** * Called by the Emitter if autoScale has been enabled. Passes over the scale ease data and resets the scale counter. */ - setScaleData(data: any[]): void; + setScaleData(data: any[]): void; /** * Updates the Particle scale or alpha if autoScale and autoAlpha are set. */ - update(): void; - - } - + update(): void; + + } + /** * Phaser.Particles is the Particle Manager for the game. It is called during the game update loop and in turn updates any Emitters attached to it. */ - class Particles { - + class Particles { + /** * Phaser.Particles is the Particle Manager for the game. It is called during the game update loop and in turn updates any Emitters attached to it. * * @param game A reference to the currently running game. */ - constructor(game: Phaser.Game); - + constructor(game: Phaser.Game); + /** * Internal emitters store. */ - emitters: any; + emitters: any; /** * A reference to the currently running Game. */ - game: Phaser.Game; + game: Phaser.Game; /** * - */ - ID: number; - + ID: number; + /** * Adds a new Particle Emitter to the Particle Manager. @@ -15159,34 +15520,34 @@ declare module Phaser { * @param emitter The emitter to be added to the particle manager. * @return The emitter that was added. */ - add(emitter: Phaser.Particles.Arcade.Emitter): Phaser.Particles.Arcade.Emitter; + add(emitter: Phaser.Particles.Arcade.Emitter): Phaser.Particles.Arcade.Emitter; /** * Removes an existing Particle Emitter from the Particle Manager. * * @param emitter The emitter to remove. */ - remove(emitter: Phaser.Particles.Arcade.Emitter): void; + remove(emitter: Phaser.Particles.Arcade.Emitter): void; /** * Called by the core game loop. Updates all Emitters who have their exists value set to true. */ - update(): void; - - } - - module Particles { - - module Arcade { - + update(): void; + + } + + module Particles { + + module Arcade { + /** * Emitter is a lightweight particle emitter that uses Arcade Physics. * It can be used for one-time explosions or for continuous effects like rain and fire. * All it really does is launch Particle objects out at set intervals, and fixes their positions and velocities accordingly. */ - class Emitter extends Phaser.Group { - + class Emitter extends Phaser.Group { + /** * Emitter is a lightweight particle emitter that uses Arcade Physics. @@ -15198,23 +15559,23 @@ declare module Phaser { * @param y The y coordinate within the Emitter that the particles are emitted from. * @param maxParticles The total number of particles in this emitter. - Default: 50 */ - constructor(game: Phaser.Game, x?: number, y?: number, maxParticles?: number); - + constructor(game: Phaser.Game, x?: number, y?: number, maxParticles?: number); + /** * An array of the calculated alpha easing data applied to particles with alphaRates > 0. */ - alphaData: any[]; + alphaData: any[]; /** * When a new Particle is emitted this controls if it will automatically change alpha. Use Emitter.setAlpha to configure. */ - autoAlpha: boolean; + autoAlpha: boolean; /** * When a new Particle is emitted this controls if it will automatically scale in size. Use Emitter.setScale to configure. */ - autoScale: boolean; + autoScale: boolean; /** * The angle of rotation of the group container, in degrees. @@ -15224,185 +15585,186 @@ declare module Phaser { * This has no impact on the rotation/angle properties of the children, but it will update their worldTransform * and on-screen orientation and position. */ - angle: number; + angle: number; /** * The angular drag component of particles launched from the emitter if they are rotating. */ - angularDrag: number; + angularDrag: number; /** * Gets the bottom position of the Emitter. */ - bottom: number; + bottom: number; /** * How much each particle should bounce on each axis. 1 = full bounce, 0 = no bounce. */ - bounce: Phaser.Point; + bounce: Phaser.Point; /** * The point the particles are emitted from. * Emitter.x and Emitter.y control the containers location, which updates all current particles * Emitter.emitX and Emitter.emitY control the emission location relative to the x/y position. */ - emitX: number; + emitX: number; /** * The point the particles are emitted from. * Emitter.x and Emitter.y control the containers location, which updates all current particles * Emitter.emitX and Emitter.emitY control the emission location relative to the x/y position. */ - emitY: number; + emitY: number; /** * If exists is true the group is updated, otherwise it is skipped. * Default: true */ - exists: boolean; + exists: boolean; /** * How often a particle is emitted in ms (if emitter is started with Explode === false). * Default: 100 */ - frequency: number; + frequency: number; /** * Sets the `body.gravity.y` of each particle sprite to this value on launch. * Default: 100 */ - gravity: number; - group: Phaser.Group; + gravity: number; + group: Phaser.Group; /** * Gets or sets the height of the Emitter. This is the region in which a particle can be emitted. */ - height: number; + height: number; /** * Gets the left position of the Emitter. */ - left: number; + left: number; /** * How long each particle lives once it is emitted in ms. Default is 2 seconds. Set lifespan to 'zero' for particles to live forever. * Default: 2000 */ - lifespan: number; + lifespan: number; /** * The total number of particles in this emitter. */ - maxParticles: number; + maxParticles: number; /** * The maximum possible scale of a particle. This is applied to the X and Y axis. If you need to control each axis see maxParticleScaleX. * Default: 1 */ - maxParticleScale: number; + maxParticleScale: number; /** * The maximum possible velocity of a particle. */ - maxParticleSpeed: Phaser.Point; + maxParticleSpeed: Phaser.Point; /** * The maximum possible angular velocity of a particle. * Default: 360 */ - maxRotation: number; + maxRotation: number; /** * The minimum possible scale of a particle. This is applied to the X and Y axis. If you need to control each axis see minParticleScaleX. * Default: 1 */ - minParticleScale: number; + minParticleScale: number; /** * The minimum possible velocity of a particle. */ - minParticleSpeed: Phaser.Point; + minParticleSpeed: Phaser.Point; /** * The minimum possible angular velocity of a particle. */ - minRotation: number; + minRotation: number; /** * A handy string name for this emitter. Can be set to anything. */ - name: string; + name: string; /** * Determines whether the emitter is currently emitting particles. It is totally safe to directly toggle this. */ - on: boolean; + on: boolean; + + /** + * When a particle is created its anchor will be set to match this Point object (defaults to x/y: 0.5 to aid in rotation) + */ + particleAnchor: Phaser.Point; /** * If this is `true` then when the Particle is emitted it will be bought to the top of the Emitters display list. */ - particleBringToTop: boolean; + particleBringToTop: boolean; /** * If this is `true` then when the Particle is emitted it will be sent to the back of the Emitters display list. */ - particleSendToBack: boolean; + particleSendToBack: boolean; /** * For emitting your own particle class types. They must extend Phaser.Particle. */ - particleClass: any; + particleClass: any; /** * The X and Y drag component of particles launched from the emitter. */ - particleDrag: Phaser.Point; + particleDrag: Phaser.Point; /** * The const physics body type of this object. */ - physicsType: number; - - /** - * The coordinate of the object relative to the local coordinates of the parent. - */ - position: Phaser.Point; + physicsType: number; + position: Phaser.Point; /** * Gets the right position of the Emitter. */ - right: number; + right: number; /** * An array of the calculated scale easing data applied to particles with scaleRates > 0. */ - scaleData: any[]; + scaleData: any[]; /** * Gets the top position of the Emitter. */ - top: number; + top: number; /** * Internal Phaser Type value. */ - type: number; + type: number; /** * Gets or sets the width of the Emitter. This is the region in which a particle can be emitted. */ - width: number; + width: number; /** * Gets or sets the x position of the Emitter. */ - x: number; + x: number; /** * Gets or sets the y position of the Emitter. */ - y: number; - + y: number; + /** * Change the emitters center to match the center of any object with a `center` property, such as a Sprite. @@ -15411,7 +15773,7 @@ declare module Phaser { * @param object The object that you wish to match the center with. * @return This Emitter instance. */ - at(object: any): Phaser.Particles.Arcade.Emitter; + at(object: any): Phaser.Particles.Arcade.Emitter; /** * This function is used internally to emit the next particle in the queue. @@ -15426,7 +15788,7 @@ declare module Phaser { * @param frame If this Particle is using part of a sprite sheet or texture atlas you can specify the exact frame to use by giving a string or numeric index. * @return True if a particle was emitted, otherwise false. */ - emitParticle(x?: number, y?: number, key?: string | Phaser.RenderTexture | Phaser.BitmapData | Phaser.Video | PIXI.Texture, frame?: string | number): boolean; + emitParticle(x?: number, y?: number, key?: string | Phaser.RenderTexture | Phaser.BitmapData | Phaser.Video | PIXI.Texture, frame?: string | number): boolean; /** * Call this function to emit the given quantity of particles at all once (an explosion) @@ -15435,7 +15797,7 @@ declare module Phaser { * @param quantity How many particles to launch. * @return This Emitter instance. */ - explode(lifespan?: number, quantity?: number): Phaser.Particles.Arcade.Emitter; + explode(lifespan?: number, quantity?: number): Phaser.Particles.Arcade.Emitter; /** * Call this function to start emitting a flow of particles at the given frequency. @@ -15451,13 +15813,13 @@ declare module Phaser { * @param immediate Should the flow start immediately (true) or wait until the first frequency event? (false) - Default: true * @return This Emitter instance. */ - flow(lifespan?: number, frequency?: number, quantity?: number, total?: number, immediate?: boolean): Phaser.Particles.Arcade.Emitter; + flow(lifespan?: number, frequency?: number, quantity?: number, total?: number, immediate?: boolean): Phaser.Particles.Arcade.Emitter; /** * Call this function to turn off all the particles and the emitter. * @return This Emitter instance. */ - kill(): Phaser.Particles.Arcade.Emitter; + kill(): Phaser.Particles.Arcade.Emitter; /** * This function generates a new set of particles for use by this emitter. @@ -15470,8 +15832,8 @@ declare module Phaser { * @param collideWorldBounds A particle can be set to collide against the World bounds automatically and rebound back into the World if this is set to true. Otherwise it will leave the World. * @return This Emitter instance. */ - makeParticles(keys: any, frames?: any, quantity?: number, collide?: boolean, collideWorldBounds?: boolean): Phaser.Particles.Arcade.Emitter; - reset(x: number, y: number, health?: number): Phaser.Particles; + makeParticles(keys: any, frames?: any, quantity?: number, collide?: boolean, collideWorldBounds?: boolean): Phaser.Particles.Arcade.Emitter; + reset(x: number, y: number, health?: number): Phaser.Particles; /** * A more compact way of setting the alpha constraints of the particles. @@ -15485,7 +15847,7 @@ declare module Phaser { * @param yoyo If you've set a rate > 0 you can set if the ease will yoyo or not (i.e. ease back to its original values) * @return This Emitter instance. */ - setAlpha(min?: number, max?: number, rate?: number, ease?: (k: number) => number, yoyo?: boolean): Phaser.Particles.Arcade.Emitter; + setAlpha(min?: number, max?: number, rate?: number, ease?: (k: number) => number, yoyo?: boolean): Phaser.Particles.Arcade.Emitter; /** * A more compact way of setting the angular velocity constraints of the particles. @@ -15494,7 +15856,7 @@ declare module Phaser { * @param max The maximum value for this range. * @return This Emitter instance. */ - setRotation(min?: number, max?: number): Phaser.Particles.Arcade.Emitter; + setRotation(min?: number, max?: number): Phaser.Particles.Arcade.Emitter; /** * A more compact way of setting the scale constraints of the particles. @@ -15510,7 +15872,7 @@ declare module Phaser { * @param yoyo If you've set a rate > 0 you can set if the ease will yoyo or not (i.e. ease back to its original values) * @return This Emitter instance. */ - setScale(minX?: number, maxX?: number, minY?: number, maxY?: number, rate?: number, ease?: (k: number) => number, yoyo?: boolean): Phaser.Particles.Arcade.Emitter; + setScale(minX?: number, maxX?: number, minY?: number, maxY?: number, rate?: number, ease?: (k: number) => number, yoyo?: boolean): Phaser.Particles.Arcade.Emitter; /** * A more compact way of setting the width and height of the emitter. @@ -15519,7 +15881,7 @@ declare module Phaser { * @param height The desired height of the emitter. * @return This Emitter instance. */ - setSize(width: number, height: number): Phaser.Particles.Arcade.Emitter; + setSize(width: number, height: number): Phaser.Particles.Arcade.Emitter; /** * A more compact way of setting the X velocity range of the emitter. @@ -15528,7 +15890,7 @@ declare module Phaser { * @param max The maximum value for this range. * @return This Emitter instance. */ - setXSpeed(min: number, max: number): Phaser.Particles.Arcade.Emitter; + setXSpeed(min: number, max: number): Phaser.Particles.Arcade.Emitter; /** * A more compact way of setting the Y velocity range of the emitter. @@ -15537,7 +15899,7 @@ declare module Phaser { * @param max The maximum value for this range. * @return This Emitter instance. */ - setYSpeed(min: number, max: number): Phaser.Particles.Arcade.Emitter; + setYSpeed(min: number, max: number): Phaser.Particles.Arcade.Emitter; /** * Call this function to start emitting particles. @@ -15549,23 +15911,23 @@ declare module Phaser { * @param forceQuantity If `true` and creating a particle flow, the quantity emitted will be forced to the be quantity given in this call. This can never exceed Emitter.maxParticles. * @return This Emitter instance. */ - start(explode?: boolean, lifespan?: number, frequency?: number, quantity?: number, forceQuantity?: boolean): Phaser.Particles.Arcade.Emitter; + start(explode?: boolean, lifespan?: number, frequency?: number, quantity?: number, forceQuantity?: boolean): Phaser.Particles.Arcade.Emitter; /** * Called automatically by the game loop, decides when to launch particles and when to "die". */ - update(): void; + update(): void; /** * Handy for bringing game objects "back to life". Just sets alive and exists back to true. * @return This Emitter instance. */ - revive(): Phaser.Particles.Arcade.Emitter; - - } - } - } - + revive(): Phaser.Particles.Arcade.Emitter; + + } + } + } + /** * The Physics Manager is responsible for looking after all of the running physics systems. @@ -15576,8 +15938,8 @@ declare module Phaser { * For example you could have P2 managing a polygon-built terrain landscape that an vehicle drives over, while it could be firing bullets that use the * faster (due to being much simpler) Arcade Physics system. */ - class Physics { - + class Physics { + /** * The Physics Manager is responsible for looking after all of the running physics systems. @@ -15591,56 +15953,56 @@ declare module Phaser { * @param game A reference to the currently running game. * @param physicsConfig A physics configuration object to pass to the Physics world on creation. */ - constructor(game: Phaser.Game, config?: any); - - static ARCADE: number; - static P2JS: number; - static NINJA: number; - static BOX2D: number; - static CHIPMUNK: number; - static MATTERJS: number; - + constructor(game: Phaser.Game, config?: any); + + static ARCADE: number; + static P2JS: number; + static NINJA: number; + static BOX2D: number; + static CHIPMUNK: number; + static MATTERJS: number; + /** * The Arcade Physics system. */ - arcade: Phaser.Physics.Arcade; + arcade: Phaser.Physics.Arcade; /** * The physics configuration object as passed to the game on creation. */ - config: any; + config: any; /** * Local reference to game. */ - game: Phaser.Game; + game: Phaser.Game; /** * The N+ Ninja Physics system. */ - ninja: Phaser.Physics.Ninja; + ninja: Phaser.Physics.Ninja; /** * The P2.JS Physics system. */ - p2: Phaser.Physics.P2; + p2: Phaser.Physics.P2; /** * The Box2D Physics system. */ - box2d: any; - + box2d: any; + /** * Clears down all active physics systems. This doesn't destroy them, it just clears them of objects and is called when the State changes. */ - clear(): void; + clear(): void; /** * Destroys all active physics systems. Usually only called on a Game Shutdown, not on a State swap. */ - destroy(): void; + destroy(): void; /** * This will create a default physics body on the given game object or array of objects. @@ -15661,27 +16023,27 @@ declare module Phaser { * @param system The physics system that will be used to create the body. Defaults to Arcade Physics. - Default: Phaser.Physics.ARCADE * @param debug Enable the debug drawing for this body. Defaults to false. */ - enable(object: any, system?: number, debug?: boolean): void; + enable(object: any, system?: number, debug?: boolean): void; /** * Parses the Physics Configuration object passed to the Game constructor and starts any physics systems specified within. */ - parseConfig(): void; + parseConfig(): void; /** * preUpdate checks. */ - preUpdate(): void; + preUpdate(): void; /** * Resets the active physics system. Called automatically on a Phaser.State swap. */ - reset(): void; + reset(): void; /** * Updates the physics bounds to match the world dimensions. */ - setBoundsToWorld(): void; + setBoundsToWorld(): void; /** * This will create an instance of the requested physics simulation. @@ -15702,15 +16064,15 @@ declare module Phaser { * * @param system The physics system to start: Phaser.Physics.ARCADE, Phaser.Physics.P2JS, Phaser.Physics.NINJA or Phaser.Physics.BOX2D. */ - startSystem(system: number): void; + startSystem(system: number): void; /** * Updates all running physics systems. */ - update(): void; - - } - + update(): void; + + } + /** * A Video object that takes a previously loaded Video from the Phaser Cache and handles playback of it. @@ -15737,128 +16099,128 @@ declare module Phaser { * Note: On iOS if you need to detect when the user presses the 'Done' button (before the video ends) * then you need to add your own event listener */ - export class Video { - + export class Video { + /** * A reference to the currently running game. */ - game: Phaser.Game; + game: Phaser.Game; /** * The key of the Video in the Cache, if stored there. Will be `null` if this Video is using the webcam instead. * Default: null */ - key: string; + key: string; /** * The HTML Video Element that is added to the document. */ - video: HTMLVideoElement; - baseTexture: PIXI.BaseTexture; + video: HTMLVideoElement; + baseTexture: PIXI.BaseTexture; /** * The PIXI.Texture. */ - texture: PIXI.Texture; + texture: PIXI.Texture; /** * The Frame this video uses for rendering. */ - textureFrame: Phaser.Frame; + textureFrame: Phaser.Frame; /** * The const type of this object. */ - type: number; + type: number; /** * If true this video will never send its image data to the GPU when its dirty flag is true. This only applies in WebGL. */ - disableTextureUpload: boolean; - dirty: boolean; - + disableTextureUpload: boolean; + dirty: boolean; + /** * The current time of the video in seconds. If set the video will attempt to seek to that point in time. */ - currentTime: number; + currentTime: number; /** * The duration of the video in seconds. */ - duration: number; + duration: number; /** * The progress of this video. This is a value between 0 and 1, where 0 is the start and 1 is the end of the video. */ - progress: number; + progress: number; /** * Gets or sets the muted state of the Video. */ - mute: boolean; + mute: boolean; /** * Gets or sets the paused state of the Video. * If the video is still touch locked (such as on iOS devices) this call has no effect. */ - paused: boolean; + paused: boolean; /** * Gets or sets the volume of the Video, a value between 0 and 1. The value given is clamped to the range 0 to 1. */ - volume: boolean; + volume: boolean; /** * Gets or sets the playback rate of the Video. This is the speed at which the video is playing. */ - playbackRate: boolean; + playbackRate: boolean; /** * True if the video is currently playing (and not paused or ended), otherwise false. */ - playing: boolean; + playing: boolean; /** * Gets or sets if the Video is set to loop. * Please note that at present some browsers (i.e. Chrome) do not support *seamless* video looping. * If the video isn't yet set this will always return false. */ - loop: boolean; + loop: boolean; /** * The width of the video in pixels. */ - width: number; + width: number; /** * The height of the video in pixels. */ - height: number; + height: number; /** * The Video Stream data. Only set if this Video is streaming from the webcam via `startMediaStream`. */ - videoStream: any; + videoStream: any; /** * Is there a streaming video source? I.e. from a webcam. */ - isStreaming: boolean; + isStreaming: boolean; /** * A snapshot grabbed from the video. This is initially black. Populate it by calling Video.grab(). * When called the BitmapData is updated with a grab taken from the current video playing or active video stream. * If Phaser has been compiled without BitmapData support this property will always be `null`. */ - snapshot: Phaser.BitmapData; + snapshot: Phaser.BitmapData; /** * The amount of ms allowed to elapsed before the Video.onTimeout signal is dispatched while waiting for webcam access. * Default: 15000 */ - timeout: number; + timeout: number; /** * When starting playback of a video Phaser will monitor its readyState using a setTimeout call. @@ -15866,54 +16228,54 @@ declare module Phaser { * state in this manner until the `retryLimit` is reached and then abort. * Default: 20 */ - retryLimit: number; + retryLimit: number; /** * The current retry attempt. */ - retry: number; + retry: number; /** * The number of ms between each retry at monitoring the status of a downloading video. * Default: 500 */ - retryInterval: number; - + retryInterval: number; + /** * This signal is dispatched if the user allows access to their webcam. */ - onAccess: Phaser.Signal; + onAccess: Phaser.Signal; /** * This signal is dispatched if an error occurs either getting permission to use the webcam (for a Video Stream) or when trying to play back a video file. */ - onError: Phaser.Signal; + onError: Phaser.Signal; /** * This signal is dispatched when the Video starts to play. It sends 3 parameters: a reference to the Video object, if the video is set to loop or not and the playback rate. */ - onPlay: Phaser.Signal; + onPlay: Phaser.Signal; /** * This signal is dispatched when the Video completes playback, i.e. enters an 'ended' state. On iOS specifically it also fires if the user hits the 'Done' button at any point during playback. Videos set to loop will never dispatch this signal. */ - onComplete: Phaser.Signal; - onUpdate: Phaser.Signal; + onComplete: Phaser.Signal; + onUpdate: Phaser.Signal; /** * This signal is dispatched if when asking for permission to use the webcam no response is given within a the Video.timeout limit. * This may be because the user has picked `Not now` in the permissions window, or there is a delay in establishing the LocalMediaStream. */ - onTimeout: Phaser.Signal; - + onTimeout: Phaser.Signal; + /** * true if this video is currently locked awaiting a touch event. This happens on some mobile devices, such as iOS. */ - touchLocked: boolean; - complete: () => void; - + touchLocked: boolean; + complete: () => void; + /** * A Video object that takes a previously loaded Video from the Phaser Cache and handles playback of it. @@ -15944,8 +16306,8 @@ declare module Phaser { * @param key The key of the video file in the Phaser.Cache that this Video object will play. Set to `null` or leave undefined if you wish to use a webcam as the source. See `startMediaStream` to start webcam capture. * @param url If the video hasn't been loaded then you can provide a full URL to the file here (make sure to set key to null) */ - constructor(game: Phaser.Game, key?: string, url?: string); - + constructor(game: Phaser.Game, key?: string, url?: string); + /** * Updates the given Display Objects so they use this Video as their texture. @@ -15954,7 +16316,7 @@ declare module Phaser { * @param object Either a single Sprite/Image or an Array of Sprites/Images. * @return This Video object for method chaining. */ - add(object: Phaser.Sprite | Phaser.Sprite[] | Phaser.Image | Phaser.Image[]): Phaser.Video; + add(object: Phaser.Sprite | Phaser.Sprite[] | Phaser.Image | Phaser.Image[]): Phaser.Video; /** * Creates a new Phaser.Image object, assigns this Video to be its texture, adds it to the world then returns it. @@ -15967,7 +16329,7 @@ declare module Phaser { * @param scaleY The vertical scale factor of the Image. A value of 1 means no scaling. 2 would be twice the size, and so on. - Default: 1 * @return The newly added Image object. */ - addToWorld(x?: number, y?: number, anchorX?: number, anchorY?: Number, scaleX?: number, scaleY?: number): Phaser.Image; + addToWorld(x?: number, y?: number, anchorX?: number, anchorY?: Number, scaleX?: number, scaleY?: number): Phaser.Image; /** * Creates a new Video element from the given Blob. The Blob must contain the video data in the correct encoded format. @@ -15976,7 +16338,7 @@ declare module Phaser { * @param blob The Blob containing the video data: `Blob([new Uint8Array(data)])` * @return This Video object for method chaining. */ - createVideoFromBlob(blob: Blob): Phaser.Video; + createVideoFromBlob(blob: Blob): Phaser.Video; /** * Instead of playing a video file this method allows you to stream video data from an attached webcam. @@ -15996,7 +16358,7 @@ declare module Phaser { * @param height The height is used to create the video stream. If not provided the video height will be set to the height of the webcam input source. * @return This Video object for method chaining or false if the device doesn't support getUserMedia. */ - startMediaStream(captureAudio?: boolean, width?: number, height?: number): Phaser.Video; + startMediaStream(captureAudio?: boolean, width?: number, height?: number): Phaser.Video; /** * Creates a new Video element from the given URL. @@ -16005,7 +16367,7 @@ declare module Phaser { * @param autoplay Automatically start the video? * @return This Video object for method chaining. */ - createVideoFromURL(url: string, autoplay?: boolean): Phaser.Video; + createVideoFromURL(url: string, autoplay?: boolean): Phaser.Video; /** * On some mobile browsers you cannot play a video until the user has explicitly touched the video to allow it. @@ -16027,14 +16389,14 @@ declare module Phaser { * @param autoplay Should the video play automatically after the source has been updated? - Default: true * @return This Video object for method chaining. */ - changeSource(src: string, autoplay?: boolean): Phaser.Video; - connectToMediaStram(video: any, stream: any): Phaser.Video; + changeSource(src: string, autoplay?: boolean): Phaser.Video; + connectToMediaStram(video: any, stream: any): Phaser.Video; /** * Destroys the Video object. This calls `Video.stop` and then `Video.removeVideoElement`. * If any Sprites are using this Video as their texture it is up to you to manage those. */ - destroy(): void; + destroy(): void; /** * Starts this video playing if it's not already doing so. @@ -16043,32 +16405,32 @@ declare module Phaser { * @param playbackRate The playback rate of the video. 1 is normal speed, 2 is x2 speed, and so on. You cannot set a negative playback rate. - Default: 1 * @return This Video object for method chaining. */ - play(loop?: boolean, playbackRate?: number): Phaser.Video; + play(loop?: boolean, playbackRate?: number): Phaser.Video; /** * Called when the video starts to play. Updates the texture. */ - playHandler(): void; + playHandler(): void; /** * If the game is running in WebGL this will push the texture up to the GPU if it's dirty. * This is called automatically if the Video is being used by a Sprite, otherwise you need to remember to call it in your render function. * If you wish to suppress this functionality set Video.disableTextureUpload to `true`. */ - render(): void; + render(): void; /** * Removes the Video element from the DOM by calling parentNode.removeChild on itself. * Also removes the autoplay and src attributes and nulls the reference. */ - removeVideoElement(): void; - resizeFrame(parent: any, width: number, height: number): void; + removeVideoElement(): void; + resizeFrame(parent: any, width: number, height: number): void; /** * Sets the Input Manager touch callback to be Video.unlock. * Required for mobile video unlocking. Mostly just used internally. */ - setTouchLock(): void; + setTouchLock(): void; /** * Grabs the current frame from the Video or Video Stream and renders it to the Video.snapshot BitmapData. @@ -16082,7 +16444,7 @@ declare module Phaser { * @param blendMode The composite blend mode that will be used when drawing. The default is no blend mode at all. This is a Canvas globalCompositeOperation value such as 'lighter' or 'xor'. * @return A reference to the Video.snapshot BitmapData object for further method chaining. */ - grab(clear?: boolean, alpha?: number, blendMode?: string): Phaser.BitmapData; + grab(clear?: boolean, alpha?: number, blendMode?: string): Phaser.BitmapData; /** * Stops the video playing. @@ -16096,14 +16458,14 @@ declare module Phaser { * If you are using a video stream from a webcam then calling Stop will disconnect the MediaStream session and disable the webcam. * @return This Video object for method chaining. */ - stop(): void; + stop(): void; /** * Enables the video on mobile devices, usually after the first touch. * If the SoundManager hasn't been unlocked then this will automatically unlock that as well. * Only one video can be pending unlock at any one time. */ - unlock(): boolean; + unlock(): boolean; /** * Called automatically if the video source changes and updates the internal texture dimensions. @@ -16113,115 +16475,115 @@ declare module Phaser { * @param width The new width of the video. If undefined `video.videoWidth` is used. * @param height The new height of the video. If undefined `video.videoHeight` is used. */ - updateTexture(event?: any, width?: number, height?: number): void; - - } - - module Physics { - + updateTexture(event?: any, width?: number, height?: number): void; + + } + + module Physics { + /** * The Arcade Physics world. Contains Arcade Physics related collision, overlap and motion methods. */ - class Arcade { - + class Arcade { + /** * A constant used for the sortDirection value. * Use this if you don't wish to perform any pre-collision sorting at all, or will manually sort your Groups. */ - static SORT_NONE: number; + static SORT_NONE: number; /** * A constant used for the sortDirection value. * Use this if your game world is wide but short and scrolls from the left to the right (i.e. Mario) */ - static LEFT_RIGHT: number; + static LEFT_RIGHT: number; /** * A constant used for the sortDirection value. * Use this if your game world is wide but short and scrolls from the right to the left (i.e. Mario backwards) */ - static RIGHT_LEFT: number; + static RIGHT_LEFT: number; /** * A constant used for the sortDirection value. * Use this if your game world is narrow but tall and scrolls from the top to the bottom (i.e. Dig Dug) */ - static TOP_BOTTOM: number; + static TOP_BOTTOM: number; /** * A constant used for the sortDirection value. * Use this if your game world is narrow but tall and scrolls from the bottom to the top (i.e. Commando or a vertically scrolling shoot-em-up) */ - static BOTTOM_TOP: number; + static BOTTOM_TOP: number; /** * A value added to the delta values during collision checks. */ - static OVERLAP_BIAS: number; - static TILE_BIAS: number; - + static OVERLAP_BIAS: number; + static TILE_BIAS: number; + /** * The Arcade Physics world. Contains Arcade Physics related collision, overlap and motion methods. * * @param game reference to the current game instance. */ - constructor(game: Phaser.Game); - + constructor(game: Phaser.Game); + /** * The bounds inside of which the physics world exists. Defaults to match the world bounds. */ - bounds: Phaser.Rectangle; + bounds: Phaser.Rectangle; /** * Set the checkCollision properties to control for which bounds collision is processed. * For example checkCollision.down = false means Bodies cannot collide with the World.bounds.bottom. An object containing allowed collision flags. */ - checkCollision: { up?: boolean; down?: boolean; left?: boolean; right?: boolean; }; + checkCollision: { up?: boolean; down?: boolean; left?: boolean; right?: boolean; }; /** * If true World.separate will always separate on the X axis before Y. Otherwise it will check gravity totals first. */ - forceX: boolean; + forceX: boolean; /** * Local reference to game. */ - game: Phaser.Game; + game: Phaser.Game; /** * The World gravity setting. Defaults to x: 0, y: 0, or no gravity. */ - gravity: Phaser.Point; + gravity: Phaser.Point; /** * The world QuadTree. */ - quadTree: Phaser.QuadTree; + quadTree: Phaser.QuadTree; /** * Used by the QuadTree to set the maximum number of objects per quad. */ - maxObjects: number; + maxObjects: number; /** * Used by the QuadTree to set the maximum number of iteration levels. */ - maxLevels: number; + maxLevels: number; /** * If true the QuadTree will not be used for any collision. QuadTrees are great if objects are well spread out in your game, otherwise they are a performance hit. If you enable this you can disable on a per body basis via `Body.skipQuadTree`. */ - skipQuadTree: boolean; + skipQuadTree: boolean; /** * Used when colliding a Sprite vs. a Group, or a Group vs. a Group, this defines the direction the sort is based on. Default is Phaser.Physics.Arcade.LEFT_RIGHT. */ - sortDirection: number; - + sortDirection: number; + /** * Given the rotation (in radians) and speed calculate the acceleration and return it as a Point object, or set it to the given point object. @@ -16232,7 +16594,7 @@ declare module Phaser { * @param point The Point object in which the x and y properties will be set to the calculated acceleration. * @return - A Point where point.x contains the acceleration x value and point.y contains the acceleration y value. */ - accelerationFromRotation(rotation: number, speed?: number, point?: Phaser.Point): Phaser.Point; + accelerationFromRotation(rotation: number, speed?: number, point?: Phaser.Point): Phaser.Point; /** * Sets the acceleration.x/y property on the display object so it will move towards the target at the given speed (in pixels per second sq.) @@ -16247,7 +16609,7 @@ declare module Phaser { * @param ySpeedMax The maximum y velocity the display object can reach. - Default: 500 * @return The angle (in radians) that the object should be visually set to in order to match its new trajectory. */ - accelerateToObject(displayObject: any, destination: any, speed?: number, xSpeedMax?: number, ySpeedMax?: number): number; + accelerateToObject(displayObject: any, destination: any, speed?: number, xSpeedMax?: number, ySpeedMax?: number): number; /** * Sets the acceleration.x/y property on the display object so it will move towards the target at the given speed (in pixels per second sq.) @@ -16262,7 +16624,7 @@ declare module Phaser { * @param ySpeedMax The maximum y velocity the display object can reach. - Default: 500 * @return The angle (in radians) that the object should be visually set to in order to match its new trajectory. */ - accelerateToPointer(displayObject: any, pointer?: Phaser.Pointer, speed?: number, xSpeedMax?: number, ySpeedMax?: number): number; + accelerateToPointer(displayObject: any, pointer?: Phaser.Pointer, speed?: number, xSpeedMax?: number, ySpeedMax?: number): number; /** * Sets the acceleration.x/y property on the display object so it will move towards the x/y coordinates at the given speed (in pixels per second sq.) @@ -16278,7 +16640,7 @@ declare module Phaser { * @param ySpeedMax The maximum y velocity the display object can reach. - Default: 500 * @return The angle (in radians) that the object should be visually set to in order to match its new trajectory. */ - accelerateToXY(displayObject: any, x: number, y: number, speed?: number, xSpeedMax?: number, ySpeedMax?: number): number; + accelerateToXY(displayObject: any, x: number, y: number, speed?: number, xSpeedMax?: number, ySpeedMax?: number): number; /** * Find the angle in radians between two display objects (like Sprites). @@ -16292,7 +16654,7 @@ declare module Phaser { * @param world Calculate the angle using World coordinates (true), or Object coordinates (false, the default) * @return The angle in radians between the source and target display objects. */ - angleBetween(source: any, target: any, world?: boolean): number; + angleBetween(source: any, target: any, world?: boolean): number; /** * Find the angle in radians between a display object (like a Sprite) and a Pointer, taking their x/y and center into account. @@ -16306,7 +16668,7 @@ declare module Phaser { * @param world Calculate the angle using World coordinates (true), or Object coordinates (false, the default) * @return The angle in radians between displayObject.x/y to Pointer.x/y */ - angleToPointer(displayObject: any, pointer?: Phaser.Pointer, world?: boolean): number; + angleToPointer(displayObject: any, pointer?: Phaser.Pointer, world?: boolean): number; /** * Find the angle in radians between a display object (like a Sprite) and the given x/y coordinate. @@ -16321,7 +16683,7 @@ declare module Phaser { * @param world Calculate the angle using World coordinates (true), or Object coordinates (false, the default) * @return The angle in radians between displayObject.x/y to Pointer.x/y */ - angleToXY(displayObject: any, x: number, y: number, world?: boolean): number; + angleToXY(displayObject: any, x: number, y: number, world?: boolean): number; /** * Checks for collision between two game objects. You can perform Sprite vs. Sprite, Sprite vs. Group, Group vs. Group, Sprite vs. Tilemap Layer or Group vs. Tilemap Layer collisions. @@ -16340,7 +16702,7 @@ declare module Phaser { * @param callbackContext The context in which to run the callbacks. * @return True if a collision occurred otherwise false. */ - collide(object1: any, object2?: any, collideCallback?: Function, processCallback?: Function, callbackContext?: any): boolean; + collide(object1: any, object2?: any, collideCallback?: Function, processCallback?: Function, callbackContext?: any): boolean; /** * A tween-like function that takes a starting velocity and some other factors and returns an altered velocity. @@ -16354,7 +16716,7 @@ declare module Phaser { * @param max An absolute value cap for the velocity. - Default: 10000 * @return The altered Velocity value. */ - computeVelocity(axis: number, body: Phaser.Physics.Arcade.Body, velocity: number, acceleration: number, drag: number, max?: number): number; + computeVelocity(axis: number, body: Phaser.Physics.Arcade.Body, velocity: number, acceleration: number, drag: number, max?: number): number; /** * Find the distance between two display objects (like Sprites). @@ -16368,7 +16730,7 @@ declare module Phaser { * @param world Calculate the distance using World coordinates (true), or Object coordinates (false, the default) * @return The distance between the source and target objects. */ - distanceBetween(source: any, target: any, world?: boolean): number; + distanceBetween(source: any, target: any, world?: boolean): number; /** * Find the distance between a display object (like a Sprite) and a Pointer. If no Pointer is given the Input.activePointer is used. @@ -16384,7 +16746,7 @@ declare module Phaser { * @param world Calculate the distance using World coordinates (true), or Object coordinates (false, the default) * @return The distance between the object and the Pointer. */ - distanceToPointer(displayObject: any, pointer?: Phaser.Pointer, world?: boolean): number; + distanceToPointer(displayObject: any, pointer?: Phaser.Pointer, world?: boolean): number; /** * Find the distance between a display object (like a Sprite) and the given x/y coordinates. @@ -16401,7 +16763,7 @@ declare module Phaser { * @param world Calculate the distance using World coordinates (true), or Object coordinates (false, the default) * @return The distance between the object and the x/y coordinates. */ - distanceToXY(displayObject: any, x: number, y: number, world?: boolean): number; + distanceToXY(displayObject: any, x: number, y: number, world?: boolean): number; /** * This will create an Arcade Physics body on the given game object or array of game objects. @@ -16410,7 +16772,7 @@ declare module Phaser { * @param object The game object to create the physics body on. Can also be an array or Group of objects, a body will be created on every child that has a `body` property. * @param children Should a body be created on all children of this object? If true it will recurse down the display list as far as it can go. - Default: true */ - enable(object: any, children?: Boolean): void; + enable(object: any, children?: Boolean): void; /** * Creates an Arcade Physics body on the given game object. @@ -16421,7 +16783,7 @@ declare module Phaser { * * @param object The game object to create the physics body on. A body will only be created if this object has a null `body` property. */ - enableBody(object: any): void; + enableBody(object: any): void; /** * Given a Group and a location this will check to see which Group children overlap with the coordinates. @@ -16436,7 +16798,7 @@ declare module Phaser { * @param callbackArg An argument to pass to the callback. * @return An array of the Sprites from the Group that overlapped the coordinates. */ - getObjectsAtLocation(x: number, y: number, group: Phaser.Group, callback?: (callbackArg: any, object: any) => void, callbackContext?: any, callbackArg?: any): Sprite[]; + getObjectsAtLocation(x: number, y: number, group: Phaser.Group, callback?: (callbackArg: any, object: any) => void, callbackContext?: any, callbackArg?: any): Sprite[]; /** * Calculates the horizontal overlap between two Bodies and sets their properties accordingly, including: @@ -16447,7 +16809,7 @@ declare module Phaser { * @param overlapOnly Is this an overlap only check, or part of separation? * @return Returns the amount of horizontal overlap between the two bodies. */ - getOverlapX(body1: Phaser.Physics.Arcade.Body, body2: Phaser.Physics.Arcade.Body): number; + getOverlapX(body1: Phaser.Physics.Arcade.Body, body2: Phaser.Physics.Arcade.Body): number; /** * Calculates the vertical overlap between two Bodies and sets their properties accordingly, including: @@ -16458,7 +16820,7 @@ declare module Phaser { * @param overlapOnly Is this an overlap only check, or part of separation? * @return Returns the amount of vertical overlap between the two bodies. */ - getOverlapY(body1: Phaser.Physics.Arcade.Body, body2: Phaser.Physics.Arcade.Body): number; + getOverlapY(body1: Phaser.Physics.Arcade.Body, body2: Phaser.Physics.Arcade.Body): number; /** * Check for intersection against two bodies. @@ -16467,7 +16829,7 @@ declare module Phaser { * @param body2 The second Body object to check. * @return True if they intersect, otherwise false. */ - intersects(body1: Phaser.Physics.Arcade.Body, body2: Phaser.Physics.Arcade.Body): boolean; + intersects(body1: Phaser.Physics.Arcade.Body, body2: Phaser.Physics.Arcade.Body): boolean; /** * Move the given display object towards the destination object at a steady velocity. @@ -16483,7 +16845,7 @@ declare module Phaser { * @param maxTime Time given in milliseconds (1000 = 1 sec). If set the speed is adjusted so the object will arrive at destination in the given number of ms. * @return The angle (in radians) that the object should be visually set to in order to match its new velocity. */ - moveToObject(displayObject: any, destination: any, speed?: number, maxTime?: number): number; + moveToObject(displayObject: any, destination: any, speed?: number, maxTime?: number): number; /** * Move the given display object towards the pointer at a steady velocity. If no pointer is given it will use Phaser.Input.activePointer. @@ -16498,7 +16860,7 @@ declare module Phaser { * @param maxTime Time given in milliseconds (1000 = 1 sec). If set the speed is adjusted so the object will arrive at destination in the given number of ms. * @return The angle (in radians) that the object should be visually set to in order to match its new velocity. */ - moveToPointer(displayObject: any, speed?: number, pointer?: Phaser.Pointer, maxTime?: number): number; + moveToPointer(displayObject: any, speed?: number, pointer?: Phaser.Pointer, maxTime?: number): number; /** * Move the given display object towards the x/y coordinates at a steady velocity. @@ -16515,7 +16877,7 @@ declare module Phaser { * @param maxTime Time given in milliseconds (1000 = 1 sec). If set the speed is adjusted so the object will arrive at destination in the given number of ms. * @return The angle (in radians) that the object should be visually set to in order to match its new velocity. */ - moveToXY(displayObject: any, x: number, y: number, speed?: number, maxTime?: number): number; + moveToXY(displayObject: any, x: number, y: number, speed?: number, maxTime?: number): number; /** * Checks for overlaps between two game objects. The objects can be Sprites, Groups or Emitters. @@ -16532,9 +16894,9 @@ declare module Phaser { * @param callbackContext The context in which to run the callbacks. * @return True if an overlap occurred otherwise false. */ - overlap(object1: any, object2: any, overlapCallback?: Function, processCallback?: Function, callbackContext?: any): boolean; - processTileSeparationX(body: Phaser.Physics.Arcade.Body, x: number): boolean; - processTileSeparationY(body: Phaser.Physics.Arcade.Body, y: number): void; + overlap(object1: any, object2: any, overlapCallback?: Function, processCallback?: Function, callbackContext?: any): boolean; + processTileSeparationX(body: Phaser.Physics.Arcade.Body, x: number): boolean; + processTileSeparationY(body: Phaser.Physics.Arcade.Body, y: number): void; /** * Updates the size of this physics world. @@ -16544,12 +16906,12 @@ declare module Phaser { * @param width New width of the world. Can never be smaller than the Game.width. * @param height New height of the world. Can never be smaller than the Game.height. */ - setBounds(x: number, y: number, width: number, height: number): void; + setBounds(x: number, y: number, width: number, height: number): void; /** * Updates the size of this physics world to match the size of the game world. */ - setBoundsToWorld(): void; + setBoundsToWorld(): void; /** * The core separation function to separate two physics bodies. @@ -16561,7 +16923,7 @@ declare module Phaser { * @param overlapOnly Just run an overlap or a full collision. * @return Returns true if the bodies collided, otherwise false. */ - separate(body1: Phaser.Physics.Arcade.Body, body2: Phaser.Physics.Arcade.Body, processCallback?: Function, callbackContext?: any, overlapOnly?: boolean): boolean; + separate(body1: Phaser.Physics.Arcade.Body, body2: Phaser.Physics.Arcade.Body, processCallback?: Function, callbackContext?: any, overlapOnly?: boolean): boolean; /** * The core separation function to separate two physics bodies on the x axis. @@ -16571,7 +16933,7 @@ declare module Phaser { * @param overlapOnly If true the bodies will only have their overlap data set, no separation or exchange of velocity will take place. * @return Returns true if the bodies were separated or overlap, otherwise false. */ - separateX(body1: Phaser.Physics.Arcade.Body, body2: Phaser.Physics.Arcade.Body, overlapOnly: boolean): boolean; + separateX(body1: Phaser.Physics.Arcade.Body, body2: Phaser.Physics.Arcade.Body, overlapOnly: boolean): boolean; /** * The core separation function to separate two physics bodies on the y axis. @@ -16581,8 +16943,8 @@ declare module Phaser { * @param overlapOnly If true the bodies will only have their overlap data set, no separation or exchange of velocity will take place. * @return Returns true if the bodies were separated or overlap, otherwise false. */ - separateY(body1: Phaser.Physics.Arcade.Body, body2: Phaser.Physics.Arcade.Body, overlapOnly: boolean): boolean; - separateTile(i: number, body: Phaser.Physics.Arcade.Body, tile: Phaser.Tile): boolean; + separateY(body1: Phaser.Physics.Arcade.Body, body2: Phaser.Physics.Arcade.Body, overlapOnly: boolean): boolean; + separateTile(i: number, body: Phaser.Physics.Arcade.Body, tile: Phaser.Tile): boolean; /** * This method will sort a Groups hash array. @@ -16596,16 +16958,16 @@ declare module Phaser { * @param group The Group to sort. * @param sortDirection The sort direction used to sort this Group. */ - sort(group: Phaser.Group): void; - tileCheckX(body: Phaser.Physics.Arcade.Body, tile: Phaser.Tile): number; - tileCheckY(body: Phaser.Physics.Arcade.Body, tile: Phaser.Tile): number; + sort(group: Phaser.Group): void; + tileCheckX(body: Phaser.Physics.Arcade.Body, tile: Phaser.Tile): number; + tileCheckY(body: Phaser.Physics.Arcade.Body, tile: Phaser.Tile): number; /** * Called automatically by a Physics body, it updates all motion related values on the Body unless `World.isPaused` is `true`. * * @param The Body object to be updated. */ - updateMotion(body: Phaser.Physics.Arcade.Body): void; + updateMotion(body: Phaser.Physics.Arcade.Body): void; /** * Given the angle (in degrees) and speed calculate the velocity and return it as a Point object, or set it to the given point object. @@ -16616,7 +16978,7 @@ declare module Phaser { * @param point The Point object in which the x and y properties will be set to the calculated velocity. * @return - A Point where point.x contains the velocity x value and point.y contains the velocity y value. */ - velocityFromAngle(angle: number, speed?: number, point?: Phaser.Point): Phaser.Point; + velocityFromAngle(angle: number, speed?: number, point?: Phaser.Point): Phaser.Point; /** * Given the rotation (in radians) and speed calculate the velocity and return it as a Point object, or set it to the given point object. @@ -16627,19 +16989,19 @@ declare module Phaser { * @param point The Point object in which the x and y properties will be set to the calculated velocity. * @return - A Point where point.x contains the velocity x value and point.y contains the velocity y value. */ - velocityFromRotation(rotation: number, speed?: number, point?: Phaser.Point): Phaser.Point; - - } - - module Arcade { - + velocityFromRotation(rotation: number, speed?: number, point?: Phaser.Point): Phaser.Point; + + } + + module Arcade { + /** * The Physics Body is linked to a single Sprite. All physics operations should be performed against the body rather than * the Sprite itself. For example you can set the velocity, acceleration, bounce values etc all on the Body. */ - class Body { - + class Body { + /** * The Physics Body is linked to a single Sprite. All physics operations should be performed against the body rather than @@ -16647,177 +17009,183 @@ declare module Phaser { * * @param sprite The Sprite object this physics body belongs to. */ - constructor(sprite: Phaser.Sprite); - + constructor(sprite: Phaser.Sprite); + /** * The acceleration is the rate of change of the velocity. Measured in pixels per second squared. */ - acceleration: Phaser.Point; + acceleration: Phaser.Point; /** * Allow this Body to be influenced by gravity? Either world or local. * Default: true */ - allowGravity: boolean; + allowGravity: boolean; /** * Allow this Body to be rotated? (via angularVelocity, etc) * Default: true */ - allowRotation: boolean; + allowRotation: boolean; /** * The angle of the Body in radians, as calculated by its angularVelocity. */ - angle: number; + angle: number; /** * The angular acceleration is the rate of change of the angular velocity. Measured in radians per second squared. */ - angularAcceleration: number; + angularAcceleration: number; /** * The drag applied during the rotation of the Body. */ - angularDrag: number; + angularDrag: number; /** * The angular velocity controls the rotation speed of the Body. It is measured in radians per second. */ - angularVelocity: number; + angularVelocity: number; /** * This object is populated with boolean values when the Body collides with the World bounds or a Tile. * For example if blocked.up is true then the Body cannot move up. An object containing on which faces this Body is blocked from moving, if any. */ - blocked: FaceChoices; + blocked: FaceChoices; /** * The bottom value of this Body (same as Body.y + Body.height) */ - bottom: number; + bottom: number; /** * The elasticity of the Body when colliding. bounce.x/y = 1 means full rebound, bounce.x/y = 0.5 means 50% rebound velocity. */ - bounce: Phaser.Point; + bounce: Phaser.Point; /** * The center coordinate of the Physics Body. */ - center: Phaser.Point; + center: Phaser.Point; /** * Set the checkCollision properties to control which directions collision is processed for this Body. * For example checkCollision.up = false means it won't collide when the collision happened while moving up. An object containing allowed collision. */ - checkCollision: FaceChoices; + checkCollision: FaceChoices; /** * A Body can be set to collide against the World bounds automatically and rebound back into the World if this is set to true. Otherwise it will leave the World. Should the Body collide with the World bounds? */ - collideWorldBounds: boolean; + collideWorldBounds: boolean; /** * This flag allows you to disable the custom x separation that takes place by Physics.Arcade.separate. * Used in combination with your own collision processHandler you can create whatever type of collision response you need. Use a custom separation system or the built-in one? */ - customSeparateX: boolean; + customSeparateX: boolean; /** * This flag allows you to disable the custom y separation that takes place by Physics.Arcade.separate. * Used in combination with your own collision processHandler you can create whatever type of collision response you need. Use a custom separation system or the built-in one? */ - customSeparateY: boolean; + customSeparateY: boolean; /** * The Sprite position is updated based on the delta x/y values. You can set a cap on those (both +-) using deltaMax. */ - deltaMax: Phaser.Point; + deltaMax: Phaser.Point; /** * If this Body in a preUpdate (true) or postUpdate (false) state? */ - dirty: boolean; + dirty: boolean; /** * The drag applied to the motion of the Body. */ - drag: Phaser.Point; + drag: Phaser.Point; /** * If a body is overlapping with another body, but neither of them are moving (maybe they spawned on-top of each other?) this is set to true. Body embed value. */ - embedded: boolean; + embedded: boolean; /** * A disabled body won't be checked for any form of collision or overlap or have its pre/post updates run. * Default: true */ - enable: boolean; + enable: boolean; /** * A const reference to the direction the Body is traveling or facing. */ - facing: number; + facing: number; /** * The amount of movement that will occur if another object 'rides' this one. */ - friction: Phaser.Point; + friction: Phaser.Point; /** * Local reference to game. */ - game: Phaser.Game; + game: Phaser.Game; /** * A local gravity applied to this Body. If non-zero this over rides any world gravity, unless Body.allowGravity is set to false. */ - gravity: Phaser.Point; + gravity: Phaser.Point; /** * The calculated width / 2 of the physics body. */ - halfWidth: number; + halfWidth: number; /** * The calculated height / 2 of the physics body. */ - halfHeight: number; + halfHeight: number; /** * The calculated height of the physics body. */ - height: number; + height: number; /** * An immovable Body will not receive any impacts from other bodies. */ - immovable: boolean; + immovable: boolean; + + /** + * If `true` this Body is using circular collision detection. If `false` it is using rectangular. + * Use `Body.setCircle` to control the collision shape this Body uses. + */ + isCircle: boolean; /** * Set by the `moveTo` and `moveFrom` methods. */ - isMoving: boolean; + isMoving: boolean; /** * The mass of the Body. When two bodies collide their mass is used in the calculation to determine the exchange of velocity. * Default: 1 */ - mass: number; + mass: number; /** * The maximum angular velocity in radians per second that the Body can reach. * Default: 1000 */ - maxAngular: number; + maxAngular: number; /** * The maximum velocity in pixels per second sq. that the Body can reach. */ - maxVelocity: Phaser.Point; + maxVelocity: Phaser.Point; /** * If you have a Body that is being moved around the world via a tween or a Group motion, but its local x/y position never @@ -16825,99 +17193,155 @@ declare module Phaser { * If you want the physics system to move the body around, then set moves to true. Set to true to allow the Physics system to move this Body, otherwise false to move it manually. * Default: true */ - moves: boolean; + moves: boolean; /** * Optional callback. If set, invoked during the running of `moveTo` or `moveFrom` events. */ - movementCallback: any; + movementCallback: any; /** * Context in which to call the movementCallback. */ - movementCallbackContext: any; + movementCallbackContext: any; /** * The new velocity. Calculated during the Body.preUpdate and applied to its position. */ - newVelocity: Phaser.Point; + newVelocity: Phaser.Point; /** * The offset of the Physics Body from the Sprite x/y position. */ - offset: Phaser.Point; + offset: Phaser.Point; + + /** + * A Signal that is dispatched when this Body collides with another Body. + * + * You still need to call `game.physics.arcade.collide` in your `update` method in order + * for this signal to be dispatched. + * + * Usually you'd pass a callback to the `collide` method, but this signal provides for + * a different level of notification. + * + * Due to the potentially high volume of signals this could create it is disabled by default. + * + * To use this feature set this property to a Phaser.Signal: `sprite.body.onCollide = new Phaser.Signal()` + * and it will be called when a collision happens, passing two arguments: the sprites which collided. + * The first sprite in the argument is always the owner of this Body. + * + * If two Bodies with this Signal set collide, both will dispatch the Signal. + */ + onCollide: Phaser.Signal; /** * Listen for the completion of `moveTo` or `moveFrom` events. */ - onMoveComplete: Phaser.Signal; + onMoveComplete: Phaser.Signal; + + /** + * A Signal that is dispatched when this Body overlaps with another Body. + * + * You still need to call `game.physics.arcade.overlap` in your `update` method in order + * for this signal to be dispatched. + * + * Usually you'd pass a callback to the `overlap` method, but this signal provides for + * a different level of notification. + * + * Due to the potentially high volume of signals this could create it is disabled by default. + * + * To use this feature set this property to a Phaser.Signal: `sprite.body.onOverlap = new Phaser.Signal()` + * and it will be called when a collision happens, passing two arguments: the sprites which collided. + * The first sprite in the argument is always the owner of this Body. + * + * If two Bodies with this Signal set collide, both will dispatch the Signal. + */ + onOverlap: Phaser.Signal; + + /** + * A Signal that is dispatched when this Body collides with the world bounds. + * Due to the potentially high volume of signals this could create it is disabled by default. + * To use this feature set this property to a Phaser.Signal: `sprite.body.onWorldBounds = new Phaser.Signal()` + * and it will be called when a collision happens, passing five arguments: + * `onWorldBounds(sprite, up, down, left, right)` + * where the Sprite is a reference to the Sprite that owns this Body, and the other arguments are booleans + * indicating on which side of the world the Body collided. + */ + onWorldBounds: Phaser.Signal; /** * When this body collides with another, the amount of overlap is stored here. The amount of horizontal overlap during the collision. */ - overlapX: number; + overlapX: number; /** * When this body collides with another, the amount of overlap is stored here. The amount of vertical overlap during the collision. */ - overlapY: number; - phase: number; + overlapY: number; + phase: number; /** * The position of the physics body. */ - position: Phaser.Point; + position: Phaser.Point; /** * The previous rotation of the physics body. */ - preRotation: number; + preRotation: number; /** * The previous position of the physics body. */ - prev: Phaser.Point; + prev: Phaser.Point; + + /** + * The radius of the circular collision shape this Body is using if Body.setCircle has been enabled. + * If you wish to change the radius then call `setCircle` again with the new value. + * If you wish to stop the Body using a circle then call `setCircle` with a radius of zero (or undefined). + */ + radius: number; /** * The right value of this Body (same as Body.x + Body.width) */ - right: number; + right: number; /** * An Arcade Physics Body can have angularVelocity and angularAcceleration. Please understand that the collision Body * itself never rotates, it is always axis-aligned. However these values are passed up to the parent Sprite and updates its rotation. */ - rotation: number; + rotation: number; /** * If true and you collide this Sprite against a Group, it will disable the collision check from using a QuadTree. */ - skipQuadTree: boolean; + skipQuadTree: boolean; /** * The un-scaled original size. */ - sourceWidth: number; + sourceWidth: number; /** * The un-scaled original size. */ - sourceHeight: number; + sourceHeight: number; /** * The speed of the Body as calculated by its velocity. */ - speed: number; + speed: number; /** * Reference to the parent Sprite. */ - sprite: Phaser.Sprite; + sprite: Phaser.Sprite; /** * Set by the `moveTo` and `moveFrom` methods. */ - stopVelocityOnCollide: boolean; + stopVelocityOnCollide: boolean; /** * If true the Body will check itself against the Sprite.getBounds() dimensions and adjust its width and height accordingly. @@ -16925,92 +17349,93 @@ declare module Phaser { * Typically you would need to enable syncBounds if your sprite is the child of a responsive display object such as a FlexLayer, * or in any situation where the Sprite scale doesn't change, but its parents scale is effecting the dimensions regardless. */ - syncBounds: boolean; + syncBounds: boolean; /** * If this is an especially small or fast moving object then it can sometimes skip over tilemap collisions if it moves through a tile in a step. * Set this padding value to add extra padding to its bounds. tilePadding.x applied to its width, y to its height. Extra padding to be added to this sprite's dimensions when checking for tile collision. */ - tilePadding: Phaser.Point; + tilePadding: Phaser.Point; /** * This object is populated with boolean values when the Body collides with another. * touching.up = true means the collision happened to the top of this Body for example. An object containing touching results. */ - touching: FaceChoices; + touching: FaceChoices; /** * The type of physics system this body belongs to. */ - type: number; + type: number; /** * This object is populated with previous touching values from the bodies previous collision. An object containing previous touching results. */ - wasTouching: FaceChoices; + wasTouching: FaceChoices; /** * The calculated width of the physics body. */ - width: number; + width: number; /** * The elasticity of the Body when colliding with the World bounds. * By default this property is `null`, in which case `Body.bounce` is used instead. Set this property * to a Phaser.Point object in order to enable a World bounds specific bounce value. */ - worldBounce: Phaser.Point; + worldBounce: Phaser.Point; /** * The velocity, or rate of change in speed of the Body. Measured in pixels per second. */ - velocity: Phaser.Point; + velocity: Phaser.Point; /** * The x position. */ - x: number; + x: number; /** * The y position. */ - y: number; - + y: number; + /** * Internal method. + * @return True if the Body collided with the world bounds, otherwise false. */ - checkWorldBounds(): void; + checkWorldBounds(): void; /** * Returns the delta x value. The difference between Body.x now and in the previous step. * @return The delta value. Positive if the motion was to the right, negative if to the left. */ - deltaX(): number; + deltaX(): number; /** * Returns the delta y value. The difference between Body.y now and in the previous step. * @return The delta value. Positive if the motion was downwards, negative if upwards. */ - deltaY(): number; + deltaY(): number; /** * Returns the delta z value. The difference between Body.rotation now and in the previous step. * @return The delta value. Positive if the motion was clockwise, negative if anti-clockwise. */ - deltaZ(): number; + deltaZ(): number; /** * Returns the absolute delta x value. * @return The absolute delta value. */ - deltaAbsX(): number; + deltaAbsX(): number; /** * Returns the absolute delta y value. * @return The absolute delta value. */ - deltaAbsY(): number; + deltaAbsY(): number; /** * Destroys this Body. @@ -17018,7 +17443,17 @@ declare module Phaser { * First it calls Group.removeFromHash if the Game Object this Body belongs to is part of a Group. * Then it nulls the Game Objects body reference, and nulls this Body.sprite reference. */ - destroy(): void; + destroy(): void; + + /** + * Returns the bounds of this physics body. + * + * Only used internally by the World collision methods. + * + * @param obj The object in which to set the bounds values. + * @return The object that was given to this method. + */ + getBounds(obj: any): any; /** * Tests if a world point lies within this Body. @@ -17027,7 +17462,7 @@ declare module Phaser { * @param y The world y coordinate to test. * @return True if the given coordinates are inside this Body, otherwise false. */ - hitTest(x: number, y: number): boolean; + hitTest(x: number, y: number): boolean; /** * Note: This method is experimental, and may be changed or removed in a future release. @@ -17058,7 +17493,7 @@ declare module Phaser { * @param direction The angle of movement. If not provided `Body.angle` is used. * @return True if the movement successfully started, otherwise false. */ - moveFrom(duration: number, speed?: number, direction?: number): boolean; + moveFrom(duration: number, speed?: number, direction?: number): boolean; /** * Note: This method is experimental, and may be changed or removed in a future release. @@ -17088,29 +17523,29 @@ declare module Phaser { * @param direction The angle of movement. If not provided `Body.angle` is used. * @return True if the movement successfully started, otherwise false. */ - moveTo(duration: number, distance: number, direction?: number): boolean; + moveTo(duration: number, distance: number, direction?: number): boolean; /** * Returns true if the bottom of this Body is in contact with either the world bounds or a tile. * @return True if in contact with either the world bounds or a tile. */ - onFloor(): boolean; + onFloor(): boolean; /** * Returns true if either side of this Body is in contact with either the world bounds or a tile. * @return True if in contact with either the world bounds or a tile. */ - onWall(): boolean; + onWall(): boolean; /** * Internal method. */ - preUpdate(): void; + preUpdate(): void; /** * Internal method. */ - postUpdate(): void; + postUpdate(): void; /** * Render Sprite Body. @@ -17120,7 +17555,7 @@ declare module Phaser { * @param color color of the debug info to be rendered. (format is css color string). - Default: 'rgba(0,255,0,0.4)' * @param filled Render the objected as a filled (default, true) or a stroked (false) - Default: true */ - render(context: any, body: Phaser.Physics.Arcade.Body, color?: string, filled?: boolean): void; + render(context: any, body: Phaser.Physics.Arcade.Body, color?: string, filled?: boolean): void; /** * Render Sprite Body Physics Data as text. @@ -17130,7 +17565,7 @@ declare module Phaser { * @param y Y position of the debug info to be rendered. * @param color color of the debug info to be rendered. (format is css color string). - Default: 'rgb(255,255,255)' */ - renderBodyInfo(debug: Phaser.Utils.Debug, body: Phaser.Physics.Arcade.Body): void; + renderBodyInfo(debug: Phaser.Utils.Debug, body: Phaser.Physics.Arcade.Body): void; /** * Resets all Body values (velocity, acceleration, rotation, etc) @@ -17138,7 +17573,24 @@ declare module Phaser { * @param x The new x position of the Body. * @param y The new y position of the Body. */ - reset(x: number, y: number): void; + reset(x: number, y: number): void; + + /** + * Sets this Body as using a circle, of the given radius, for all collision detection instead of a rectangle. + * The radius is given in pixels and is the distance from the center of the circle to the edge. + * + * You can also control the x and y offset, which is the position of the Body relative to the top-left of the Sprite. + * + * To change a Body back to being rectangular again call `Body.setSize`. + * + * Note: Circular collision only happens with other Arcade Physics bodies, it does not + * work against tile maps, where rectangular collision is the only method supported. + * + * @param radius The radius of the Body in pixels. Pass a value of zero / undefined, to stop the Body using a circle for collision. + * @param offsetX The X offset of the Body from the Sprite position. + * @param offsetY The Y offset of the Body from the Sprite position. + */ + setCircle(radius: number, offsetX?: number, offsetY?: number): void; /** * You can modify the size of the physics Body to be any dimension you need. @@ -17155,32 +17607,35 @@ declare module Phaser { * 24 is the horizontal offset of the Body from the top-left of the Sprites texture, and 34 * is the vertical offset. * + * Calling `setSize` on a Body that has already had `setCircle` will reset all of the Circle + * properties, making this Body rectangular again. + * * @param width The width of the Body. * @param height The height of the Body. * @param offsetX The X offset of the Body from the top-left of the Sprites texture. * @param offsetY The Y offset of the Body from the top-left of the Sprites texture. */ - setSize(width: number, height: number, offsetX?: number, offsetY?: number): void; + setSize(width: number, height: number, offsetX?: number, offsetY?: number): void; /** * Internal method. */ - updateBounds(): boolean; - - } - - class FaceChoices { - - none: boolean; - any: boolean; - up: boolean; - down: boolean; - left: boolean; - right: boolean; - - } - } - + updateBounds(): boolean; + + } + + class FaceChoices { + + none: boolean; + any: boolean; + up: boolean; + down: boolean; + left: boolean; + right: boolean; + + } + } + /** * Ninja Physics. The Ninja Physics system was created in Flash by Metanet Software and ported to JavaScript by Richard Davey. @@ -17200,8 +17655,8 @@ declare module Phaser { * * Feel free to attempt any of the above and submit a Pull Request with your code! Be sure to include test cases proving they work. */ - class Ninja { - + class Ninja { + /** * Ninja Physics. The Ninja Physics system was created in Flash by Metanet Software and ported to JavaScript by Richard Davey. @@ -17223,44 +17678,44 @@ declare module Phaser { * * @param game reference to the current game instance. */ - constructor(game: Phaser.Game); - + constructor(game: Phaser.Game); + /** * Local reference to game. */ - game: Phaser.Game; + game: Phaser.Game; /** * The World gravity setting. */ - gravity: number; + gravity: number; /** * The bounds inside of which the physics world exists. Defaults to match the world bounds. */ - bounds: Phaser.Rectangle; + bounds: Phaser.Rectangle; /** * Used by the QuadTree to set the maximum number of objects per quad. */ - maxObjects: number; + maxObjects: number; /** * Used by the QuadTree to set the maximum number of iteration levels. */ - maxLevels: number; + maxLevels: number; /** * The world QuadTree. */ - quadTree: Phaser.QuadTree; + quadTree: Phaser.QuadTree; /** * Local reference to game.time. */ - time: Phaser.Time; - + time: Phaser.Time; + /** * Clears all physics bodies from the given TilemapLayer that were created with `World.convertTilemap`. @@ -17268,7 +17723,7 @@ declare module Phaser { * @param map The Tilemap to get the map data from. * @param layer The layer to operate on. If not given will default to map.currentLayer. */ - clearTilemapLayerBodies(map: Phaser.Tilemap, layer: any): void; + clearTilemapLayerBodies(map: Phaser.Tilemap, layer: any): void; /** * Checks for collision between two game objects. You can perform Sprite vs. Sprite, Sprite vs. Group, Group vs. Group, Sprite vs. Tilemap Layer or Group vs. Tilemap Layer collisions. @@ -17285,7 +17740,7 @@ declare module Phaser { * @param callbackContext The context in which to run the callbacks. * @return True if a collision occured otherwise false. */ - collide(object1: any, object2: any, collideCallback?: Function, processCallback?: Function, callbackContext?: any): boolean; + collide(object1: any, object2: any, collideCallback?: Function, processCallback?: Function, callbackContext?: any): boolean; /** * Goes through all tiles in the given Tilemap and TilemapLayer and converts those set to collide into physics tiles. @@ -17305,7 +17760,7 @@ declare module Phaser { * @param slopeMap The tilemap index to Tile ID map. * @return An array of the Phaser.Physics.Ninja.Tile objects that were created. */ - convertTilemap(map: Phaser.Tilemap, layer: any, slopeMap: any): Phaser.Physics.Ninja.Tile[]; + convertTilemap(map: Phaser.Tilemap, layer: any, slopeMap: any): Phaser.Physics.Ninja.Tile[]; /** * This will create a Ninja Physics AABB body on the given game object. Its dimensions will match the width and height of the object at the point it is created. @@ -17314,7 +17769,7 @@ declare module Phaser { * @param object The game object to create the physics body on. Can also be an array or Group of objects, a body will be created on every child that has a `body` property. * @param children Should a body be created on all children of this object? If true it will recurse down the display list as far as it can go. - Default: true */ - enableAABB(object: any, children?: boolean): void; + enableAABB(object: any, children?: boolean): void; /** * This will create a Ninja Physics Circle body on the given game object. @@ -17324,7 +17779,7 @@ declare module Phaser { * @param radius The radius of the Circle. * @param children Should a body be created on all children of this object? If true it will recurse down the display list as far as it can go. - Default: true */ - enableCircle(object: any, radius: number, children?: boolean): void; + enableCircle(object: any, radius: number, children?: boolean): void; /** * This will create a Ninja Physics Tile body on the given game object. There are 34 different types of tile you can create, including 45 degree slopes, @@ -17336,7 +17791,7 @@ declare module Phaser { * @param id The type of Tile this will use, i.e. Phaser.Physics.Ninja.Tile.SLOPE_45DEGpn, Phaser.Physics.Ninja.Tile.CONVEXpp, etc. - Default: 1 * @param children Should a body be created on all children of this object? If true it will recurse down the display list as far as it can go. - Default: true */ - enableTile(object: any, id: number, children?: boolean): void; + enableTile(object: any, id: number, children?: boolean): void; /** * This will create a Ninja Physics body on the given game object or array of game objects. @@ -17348,7 +17803,7 @@ declare module Phaser { * @param radius If this body is using a Circle shape this controls the radius. * @param children Should a body be created on all children of this object? If true it will recurse down the display list as far as it can go. - Default: true */ - enable(object: any, type?: number, id?: number, radius?: number, children?: boolean): void; + enable(object: any, type?: number, id?: number, radius?: number, children?: boolean): void; /** * Creates a Ninja Physics body on the given game object. @@ -17356,7 +17811,7 @@ declare module Phaser { * * @param object The game object to create the physics body on. A body will only be created if this object has a null `body` property. */ - enableBody(object: any, type?: number, id?: number, radius?: number): void; + enableBody(object: any, type?: number, id?: number, radius?: number): void; /** * Checks for overlaps between two game objects. The objects can be Sprites, Groups or Emitters. @@ -17371,7 +17826,7 @@ declare module Phaser { * @param callbackContext The context in which to run the callbacks. * @return True if an overlap occured otherwise false. */ - overlap(object1: any, object2: any, overlapCallback?: Function, processCallback?: Function, callbackContext?: any): boolean; + overlap(object1: any, object2: any, overlapCallback?: Function, processCallback?: Function, callbackContext?: any): boolean; /** * The core separation function to separate two physics bodies. @@ -17380,7 +17835,7 @@ declare module Phaser { * @param body2 The Body object to separate. * @return Returns true if the bodies collided, otherwise false. */ - separate(body1: Phaser.Physics.Ninja.Body, body2: Phaser.Physics.Ninja.Body, processCallback?: Function, callbackContext?: any, overlapOnly?: boolean): boolean; + separate(body1: Phaser.Physics.Ninja.Body, body2: Phaser.Physics.Ninja.Body, processCallback?: Function, callbackContext?: any, overlapOnly?: boolean): boolean; /** * Updates the size of this physics world. @@ -17390,23 +17845,23 @@ declare module Phaser { * @param width New width of the world. Can never be smaller than the Game.width. * @param height New height of the world. Can never be smaller than the Game.height. */ - setBounds(x: number, y: number, width: number, height: number): void; + setBounds(x: number, y: number, width: number, height: number): void; /** * Updates the size of this physics world to match the size of the game world. */ - setBoundsToWorld(): void; - } - - module Ninja { - + setBoundsToWorld(): void; + } + + module Ninja { + /** * The Physics Body is linked to a single Sprite. All physics operations should be performed against the body rather than * the Sprite itself. For example you can set the velocity, bounce values etc all on the Body. */ - class Body { - + class Body { + /** * The Physics Body is linked to a single Sprite. All physics operations should be performed against the body rather than @@ -17422,202 +17877,202 @@ declare module Phaser { * @param width The width of this Body. This is only used if a sprite is not provided. * @param height The height of this Body. This is only used if a sprite is not provided. */ - constructor(system: Phaser.Physics.Ninja, sprite: Phaser.Sprite, type?: number, id?: number, radius?: number, x?: number, y?: number, width?: number, height?: number); - + constructor(system: Phaser.Physics.Ninja, sprite: Phaser.Sprite, type?: number, id?: number, radius?: number, x?: number, y?: number, width?: number, height?: number); + /** * The AABB object this body is using for collision. */ - aabb: Phaser.Physics.Ninja.AABB; + aabb: Phaser.Physics.Ninja.AABB; /** * The angle of this Body */ - angle: number; + angle: number; /** * The bottom value of this Body (same as Body.y + Body.height) */ - bottom: number; + bottom: number; /** * The bounciness of this object when it collides. A value between 0 and 1. We recommend setting it to 0.999 to avoid jittering. * Default: 0.3 */ - bounce: number; + bounce: number; /** * Set the checkCollision properties to control which directions collision is processed for this Body. * For example checkCollision.up = false means it won't collide when the collision happened while moving up. An object containing allowed collision. */ - checkCollision: Phaser.Physics.Arcade.FaceChoices; + checkCollision: Phaser.Physics.Arcade.FaceChoices; /** * The Circle object this body is using for collision. */ - circle: Phaser.Physics.Ninja.Circle; + circle: Phaser.Physics.Ninja.Circle; /** * A Body can be set to collide against the World bounds automatically and rebound back into the World if this is set to true. Otherwise it will leave the World. Should the Body collide with the World bounds? */ - collideWorldBounds: boolean; + collideWorldBounds: boolean; /** * The drag applied to this object as it moves. * Default: 1 */ - drag: number; + drag: number; /** * A const reference to the direction the Body is traveling or facing. */ - facing: number; + facing: number; /** * The friction applied to this object as it moves. * Default: 0.05 */ - friction: number; + friction: number; /** * Local reference to game. */ - game: Phaser.Game; + game: Phaser.Game; /** * How much of the world gravity should be applied to this object? 1 = all of it, 0.5 = 50%, etc. * Default: 1 */ - gravityScale: number; + gravityScale: number; /** * The height of this Body */ - height: number; + height: number; /** * An immovable Body will not receive any impacts from other bodies. Not fully implemented. */ - immovable: boolean; + immovable: boolean; /** * The maximum speed this body can travel at (taking drag and friction into account) * Default: 8 */ - maxSpeed: number; + maxSpeed: number; /** * The right value of this Body (same as Body.x + Body.width) */ - right: number; + right: number; /** * Reference to the parent Sprite. */ - sprite: Phaser.Sprite; + sprite: Phaser.Sprite; /** * The parent physics system. */ - system: Phaser.Physics.Ninja; + system: Phaser.Physics.Ninja; /** * The Tile object this body is using for collision. */ - tile: Phaser.Physics.Ninja.Tile; + tile: Phaser.Physics.Ninja.Tile; /** * This object is populated with boolean values when the Body collides with another. * touching.up = true means the collision happened to the top of this Body for example. An object containing touching results. */ - touching: Phaser.Physics.Arcade.FaceChoices; + touching: Phaser.Physics.Arcade.FaceChoices; /** * The type of physics system this body belongs to. */ - type: number; + type: number; /** * A local reference to the body shape. */ - shape: any; + shape: any; /** * The speed of this Body */ - speed: number; + speed: number; /** * The velocity in pixels per second sq. of the Body. */ - velocity: Phaser.Point; + velocity: Phaser.Point; /** * This object is populated with previous touching values from the bodies previous collision. An object containing previous touching results. */ - wasTouching: Phaser.Physics.Arcade.FaceChoices; + wasTouching: Phaser.Physics.Arcade.FaceChoices; /** * The width of this Body */ - width: number; + width: number; /** * The x position. */ - x: number; + x: number; /** * The y position. */ - y: number; - + y: number; + /** * Returns the absolute delta x value. * @return The absolute delta value. */ - deltaAbsX(): number; + deltaAbsX(): number; /** * Returns the absolute delta y value. * @return The absolute delta value. */ - deltaAbsY(): number; + deltaAbsY(): number; /** * Returns the delta x value. The difference between Body.x now and in the previous step. * @return The delta value. Positive if the motion was to the right, negative if to the left. */ - deltaX(): number; + deltaX(): number; /** * Returns the delta y value. The difference between Body.y now and in the previous step. * @return The delta value. Positive if the motion was downwards, negative if upwards. */ - deltaY(): number; + deltaY(): number; /** * Destroys this body's reference to the sprite and system, and destroys its shape. */ - destroy(): void; + destroy(): void; /** * Stops all movement of this body. */ - setZeroVelocity(): void; - moveTo(speed: number, angle: number): void; - moveFrom(speed: number, angle: number): void; - moveLeft(speed: number): void; - moveRight(speed: number): void; - moveUp(speed: number): void; - moveDown(speed: number): void; - poseUpdate(): void; + setZeroVelocity(): void; + moveTo(speed: number, angle: number): void; + moveFrom(speed: number, angle: number): void; + moveLeft(speed: number): void; + moveRight(speed: number): void; + moveUp(speed: number): void; + moveDown(speed: number): void; + poseUpdate(): void; /** * Internal method. */ - preUpdate(): void; + preUpdate(): void; /** * Render Sprite's Body. @@ -17627,22 +18082,22 @@ declare module Phaser { * @param color color of the debug shape to be rendered. (format is css color string). - Default: 'rgba(0,255,0,0.4)' * @param filled Render the shape as a filled (default, true) or a stroked (false) - Default: true */ - render(context: any, body: Phaser.Physics.Ninja.Body, color?: string, filled?: boolean): void; + render(context: any, body: Phaser.Physics.Ninja.Body, color?: string, filled?: boolean): void; /** * Resets all Body values and repositions on the Sprite. */ - reset(): void; - - } - + reset(): void; + + } + /** * Ninja Physics AABB constructor. * Note: This class could be massively optimised and reduced in size. I leave that challenge up to you. */ - class AABB { - + class AABB { + /** * Ninja Physics AABB constructor. @@ -17654,88 +18109,88 @@ declare module Phaser { * @param width The width of this AABB. * @param height The height of this AABB. */ - constructor(body: Phaser.Physics.Ninja.Body, x: number, y: number, width: number, height: number); - - static COL_NONE: number; - static COL_AXIS: number; - static COL_OTHER: number; - + constructor(body: Phaser.Physics.Ninja.Body, x: number, y: number, width: number, height: number); + + static COL_NONE: number; + static COL_AXIS: number; + static COL_OTHER: number; + /** * All of the collision response handlers. */ - aabbTileProjections: any; + aabbTileProjections: any; /** * A reference to the body that owns this shape. */ - body: Phaser.Physics.Ninja.Body; + body: Phaser.Physics.Ninja.Body; /** * The height. */ - height: number; - oldPos: Phaser.Point; + height: number; + oldPos: Phaser.Point; /** * The position of this object. */ - pos: Phaser.Point; + pos: Phaser.Point; /** * A reference to the physics system. */ - system: Phaser.Physics.Ninja; + system: Phaser.Physics.Ninja; /** * The width. */ - width: number; + width: number; /** * The velocity of this object. */ - velocity: Phaser.Point; + velocity: Phaser.Point; /** * Half the width. */ - xw: number; + xw: number; /** * Half the height. */ - yw: number; - + yw: number; + /** * Collides this AABB against the world bounds. */ - collideWorldBounds(): void; + collideWorldBounds(): void; /** * Collides this AABB against a AABB. * * @param aabb The AABB to collide against. */ - collideAABBVsAABB(aabb: Phaser.Physics.Ninja.AABB): boolean; + collideAABBVsAABB(aabb: Phaser.Physics.Ninja.AABB): boolean; /** * Collides this AABB against a Tile. * * @param tile The Tile to collide against. */ - collideAABBVsTile(tile: Phaser.Physics.Ninja.Tile): boolean; + collideAABBVsTile(tile: Phaser.Physics.Ninja.Tile): boolean; /** * Destroys this AABB's reference to Body and System */ - destroy(): void; + destroy(): void; /** * Updates this AABBs position. */ - integrate(): void; + integrate(): void; /** * Render this AABB for debugging purposes. @@ -17746,7 +18201,7 @@ declare module Phaser { * @param color color of the debug shape to be rendered. (format is css color string). * @param filled Render the shape as solid (true) or hollow (false). */ - render(context: any, xOffset: number, yOffset: number, color: string, filled: boolean): void; + render(context: any, xOffset: number, yOffset: number, color: string, filled: boolean): void; /** * Process a collision partner-agnostic collision response and apply the resulting forces. @@ -17756,7 +18211,7 @@ declare module Phaser { * @param dx Collision normal * @param dy Collision normal */ - reportCollision(px: number, py: number, dx: number, dy: number): void; + reportCollision(px: number, py: number, dx: number, dy: number): void; /** * Process a world collision and apply the resulting forces. @@ -17766,7 +18221,7 @@ declare module Phaser { * @param dx Collision normal * @param dy Collision normal */ - reportCollisionVsWorld(px: number, py: number, dx: number, dy: number, obj: any): void; + reportCollisionVsWorld(px: number, py: number, dx: number, dy: number, obj: any): void; /** * Process a body collision and apply the resulting forces. Still very much WIP and doesn't work fully. Feel free to fix! @@ -17777,7 +18232,7 @@ declare module Phaser { * @param dy Collision normal * @param obj Object this AABB collided with */ - reportCollisionVsBody(px: number, py: number, dx: number, dy: number, obj: any): void; + reportCollisionVsBody(px: number, py: number, dx: number, dy: number, obj: any): void; /** * Resolves tile collision. @@ -17788,18 +18243,18 @@ declare module Phaser { * @param tile The Tile involved in the collision. * @return True if the collision was processed, otherwise false. */ - resolveTile(x: number, y: number, body: Phaser.Physics.Ninja.AABB, tile: Phaser.Physics.Ninja.Tile): boolean; - reverse(): void; - - } - + resolveTile(x: number, y: number, body: Phaser.Physics.Ninja.AABB, tile: Phaser.Physics.Ninja.Tile): boolean; + reverse(): void; + + } + /** * Ninja Physics Circle constructor. * Note: This class could be massively optimised and reduced in size. I leave that challenge up to you. */ - class Circle { - + class Circle { + /** * Ninja Physics Circle constructor. @@ -17810,65 +18265,65 @@ declare module Phaser { * @param y The y coordinate to create this shape at. * @param radius The radius of this Circle. */ - constructor(body: Phaser.Physics.Ninja.Body, x: number, y: number, radius: number); - - COL_NONE: number; - COL_AXIS: number; - COL_OTHER: number; - + constructor(body: Phaser.Physics.Ninja.Body, x: number, y: number, radius: number); + + COL_NONE: number; + COL_AXIS: number; + COL_OTHER: number; + /** * A reference to the body that owns this shape. */ - body: Phaser.Physics.Ninja.Body; + body: Phaser.Physics.Ninja.Body; /** * All of the collision response handlers. */ - circleTileProjections: { [index: number]: ((x: number, y: number, oH: number, oV: number, obj: Phaser.Physics.Ninja.Circle, t: Phaser.Physics.Ninja.Tile) => number); }; - oldPos: Phaser.Point; + circleTileProjections: { [index: number]: ((x: number, y: number, oH: number, oV: number, obj: Phaser.Physics.Ninja.Circle, t: Phaser.Physics.Ninja.Tile) => number); }; + oldPos: Phaser.Point; /** * The height. */ - height: number; + height: number; /** * The position of this object. */ - pos: Phaser.Point; + pos: Phaser.Point; /** * The radius of this circle shape. */ - radius: number; + radius: number; /** * A reference to the physics system. */ - system: Phaser.Physics.Ninja; - type: number; + system: Phaser.Physics.Ninja; + type: number; /** * The velocity of this object. */ - velocity: Phaser.Point; + velocity: Phaser.Point; /** * The width. */ - width: number; + width: number; /** * Half the width. */ - xw: number; + xw: number; /** * Half the height. */ - yw: number; - + yw: number; + /** * Collides this Circle with a Tile. @@ -17876,23 +18331,23 @@ declare module Phaser { * @param t The Tile involved in the collision. * @return True if they collide, otherwise false. */ - collideCircleVsTile(tile: Phaser.Physics.Ninja.Tile): boolean; + collideCircleVsTile(tile: Phaser.Physics.Ninja.Tile): boolean; /** * Collides this Circle against the world bounds. */ - collideWorldBounds(): void; + collideWorldBounds(): void; /** * Destroys this Circle's reference to Body and System */ - destroy(): void; - distance(dest: number, round?: boolean): number; + destroy(): void; + distance(dest: number, round?: boolean): number; /** * Updates this Circles position. */ - integrate(): void; + integrate(): void; /** * Render this circle for debugging purposes. @@ -17903,7 +18358,7 @@ declare module Phaser { * @param color color of the debug shape to be rendered. (format is css color string). * @param filled Render the shape as solid (true) or hollow (false). */ - render(context: any, xOffset: number, yOffset: number, color: string, filled: boolean): void; + render(context: any, xOffset: number, yOffset: number, color: string, filled: boolean): void; /** * Process a world collision and apply the resulting forces. @@ -17914,8 +18369,8 @@ declare module Phaser { * @param dy Collision normal * @param obj Object this Circle collided with */ - reportCollisionVsWorld(px: number, py: number, dx: number, dy: number, obj: any): void; - reportCollisionVsBody(px: number, py: number, dx: number, dy: number, obj: any): void; + reportCollisionVsWorld(px: number, py: number, dx: number, dy: number, obj: any): void; + reportCollisionVsBody(px: number, py: number, dx: number, dy: number, obj: any): void; /** * Resolves tile collision. @@ -17928,23 +18383,23 @@ declare module Phaser { * @param t The Tile involved in the collision. * @return The result of the collision. */ - resolveCircleTile(x: number, y: number, oH: number, oV: number, obj: Phaser.Physics.Ninja.Circle, t: Phaser.Physics.Ninja.Tile): boolean; - - } - - enum TileType { - TYPE_EMPTY, - TYPE_FULL, - TYPE_45DEG, - TYPE_CONCAVE, - TYPE_CONVEX, - TYPE_22DEGs, - TYPE_22DEGb, - TYPE_67DEGs, - TYPE_67DEGb, - TYPE_HALF - } - + resolveCircleTile(x: number, y: number, oH: number, oV: number, obj: Phaser.Physics.Ninja.Circle, t: Phaser.Physics.Ninja.Tile): boolean; + + } + + enum TileType { + TYPE_EMPTY, + TYPE_FULL, + TYPE_45DEG, + TYPE_CONCAVE, + TYPE_CONVEX, + TYPE_22DEGs, + TYPE_22DEGb, + TYPE_67DEGs, + TYPE_67DEGb, + TYPE_HALF + } + /** * Ninja Physics Tile constructor. @@ -17954,8 +18409,8 @@ declare module Phaser { * * Note: This class could be massively optimised and reduced in size. I leave that challenge up to you. */ - class Tile { - + class Tile { + /** * Ninja Physics Tile constructor. @@ -17972,106 +18427,106 @@ declare module Phaser { * @param height The height of this AABB. * @param type The type of Ninja shape to create. 1 = AABB, 2 = Circle or 3 = Tile. - Default: 1 */ - constructor(body: Phaser.Physics.Ninja.Body, x: number, y: number, width: number, height: number, type?: number); - + constructor(body: Phaser.Physics.Ninja.Body, x: number, y: number, width: number, height: number, type?: number); + /** * A reference to the body that owns this shape. */ - body: Phaser.Physics.Ninja.Body; + body: Phaser.Physics.Ninja.Body; /** * The bottom value of this Body (same as Body.y + Body.height) */ - bottom: number; - flipped: boolean; + bottom: number; + flipped: boolean; /** * The height. */ - height: number; + height: number; /** * The ID of this Tile. */ - id: number; + id: number; /** * The position of this object in the previous update. */ - oldpos: Phaser.Point; + oldpos: Phaser.Point; /** * The position of this object. */ - pos: Phaser.Point; + pos: Phaser.Point; /** * The right value of this Body (same as Body.x + Body.width) */ - right: number; - rotation: number; + right: number; + rotation: number; /** * A reference to the physics system. */ - system: Phaser.Physics.Ninja; + system: Phaser.Physics.Ninja; /** * The type of this Tile. */ - type: Phaser.Physics.Ninja.TileType; + type: Phaser.Physics.Ninja.TileType; /** * The velocity of this object. */ - velocity: Phaser.Point; + velocity: Phaser.Point; /** * The width. */ - width: number; + width: number; /** * Half the width. */ - xw: number; + xw: number; /** * Half the height. */ - yw: number; + yw: number; /** * The x position. */ - x: number; + x: number; /** * The y position. */ - y: number; - + y: number; + /** * Sets this tile to be empty. */ - clear(): void; + clear(): void; /** * Tiles cannot collide with the world bounds, it's up to you to keep them where you want them. But we need this API stub to satisfy the Body. */ - collideWorldBounds(): void; + collideWorldBounds(): void; /** * Destroys this Tiles reference to Body and System. */ - destroy(): void; + destroy(): void; /** * Updates this objects position. */ - integrate(): void; + integrate(): void; /** * Process a world collision and apply the resulting forces. @@ -18082,26 +18537,26 @@ declare module Phaser { * @param dy Collision normal * @param obj Object this Tile collided with */ - reportCollisionVsWorld(px: number, py: number, dx: number, dy: number, obj: any): void; + reportCollisionVsWorld(px: number, py: number, dx: number, dy: number, obj: any): void; /** * Tiles cannot collide with the world bounds, it's up to you to keep them where you want them. But we need this API stub to satisfy the Body. * * @param id The type of Tile this will use, i.e. Phaser.Physics.Ninja.Tile.SLOPE_45DEGpn, Phaser.Physics.Ninja.Tile.CONVEXpp, etc. */ - setType(id: number): number; - - } - - } - + setType(id: number): number; + + } + + } + /** * This is your main access to the P2 Physics World. * From here you can create materials, listen for events and add bodies into the physics simulation. */ - class P2 { - + class P2 { + /** * This is your main access to the P2 Physics World. @@ -18110,107 +18565,107 @@ declare module Phaser { * @param game Reference to the current game instance. * @param config Physics configuration object passed in from the game constructor. */ - constructor(game: Phaser.Game, config?: any); - + constructor(game: Phaser.Game, config?: any); + /** * Enable to automatically apply body damping each step. */ - applyDamping: boolean; + applyDamping: boolean; /** * Enable to automatically apply gravity each step. */ - applyGravity: boolean; + applyGravity: boolean; /** * Enable to automatically apply spring forces each step. */ - applySpringForces: boolean; + applySpringForces: boolean; /** * An array of the bodies the world bounds collides with. */ - boundsCollidesWith: Phaser.Physics.P2.Body[]; + boundsCollidesWith: Phaser.Physics.P2.Body[]; /** * A default collision group. */ - boundsCollisionGroup: Phaser.Physics.P2.CollisionGroup; + boundsCollisionGroup: Phaser.Physics.P2.CollisionGroup; /** * The p2 World configuration object. */ - config: any; + config: any; /** * The context under which the callbacks are fired. */ - callbackContext: any; + callbackContext: any; /** * An array containing the collision groups that have been defined in the World. */ - collisionGroups: Phaser.Physics.P2.CollisionGroup[]; + collisionGroups: Phaser.Physics.P2.CollisionGroup[]; /** * The default Contact Material being used by the World. */ - contactMaterial: Phaser.Physics.P2.ContactMaterial; + contactMaterial: Phaser.Physics.P2.ContactMaterial; /** * Set to true if you want to the world to emit the "impact" event. Turning this off could improve performance. */ - emitImpactEvent: boolean; + emitImpactEvent: boolean; /** * A default collision group. */ - everythingCollisionGroup: Phaser.Physics.P2.CollisionGroup; + everythingCollisionGroup: Phaser.Physics.P2.CollisionGroup; /** * The frame rate the world will be stepped at. Defaults to 1 / 60, but you can change here. Also see useElapsedTime property. */ - frameRate: number; + frameRate: number; /** * Friction between colliding bodies. This value is used if no matching ContactMaterial is found for a Material pair. */ - friction: number; + friction: number; /** * Local reference to game. */ - game: Phaser.Game; + game: Phaser.Game; /** * The gravity applied to all bodies each step. */ - gravity: Phaser.Physics.P2.InversePointProxy; + gravity: Phaser.Physics.P2.InversePointProxy; /** * A local array of all created Materials. */ - materials: Phaser.Physics.P2.Material[]; + materials: Phaser.Physics.P2.Material[]; /** * A default collision group. */ - nothingCollisionGroup: Phaser.Physics.P2.CollisionGroup; + nothingCollisionGroup: Phaser.Physics.P2.CollisionGroup; /** * This signal is dispatched when a new Body is added to the World. * * It sends 1 argument: `body` which is the `Phaser.Physics.P2.Body` that was added to the world. */ - onBodyAdded: Phaser.Signal; + onBodyAdded: Phaser.Signal; /** * This signal is dispatched when a Body is removed to the World. * * It sends 1 argument: `body` which is the `Phaser.Physics.P2.Body` that was removed from the world. */ - onBodyRemoved: Phaser.Signal; + onBodyRemoved: Phaser.Signal; /** * This Signal is dispatched when a first contact is created between two bodies. This happens *before* the step has been done. @@ -18220,35 +18675,35 @@ declare module Phaser { * It is possible that in certain situations the `bodyA` or `bodyB` values are `null`. You should check for this * in your own code to avoid processing potentially null physics bodies. */ - onBeginContact: Phaser.Signal; + onBeginContact: Phaser.Signal; /** * This signal is dispatched when a Constraint is added to the World. * * It sends 1 argument: `constraint` which is the `Phaser.Physics.P2.Constraint` that was added to the world. */ - onConstraintAdded: Phaser.Signal; + onConstraintAdded: Phaser.Signal; /** * This signal is dispatched when a Constraint is removed from the World. * * It sends 1 argument: `constraint` which is the `Phaser.Physics.P2.Constraint` that was removed from the world. */ - onConstraintRemoved: Phaser.Signal; + onConstraintRemoved: Phaser.Signal; /** * This signal is dispatched when a Contact Material is added to the World. * * It sends 1 argument: `material` which is the `Phaser.Physics.P2.ContactMaterial` that was added to the world. */ - onContactMaterialAdded: Phaser.Signal; + onContactMaterialAdded: Phaser.Signal; /** * This signal is dispatched when a Contact Material is removed from the World. * * It sends 1 argument: `material` which is the `Phaser.Physics.P2.ContactMaterial` that was removed from the world. */ - onContactMaterialRemoved: Phaser.Signal; + onContactMaterialRemoved: Phaser.Signal; /** * This Signal is dispatched when final contact occurs between two bodies. This happens *before* the step has been done. @@ -18258,68 +18713,68 @@ declare module Phaser { * It is possible that in certain situations the `bodyA` or `bodyB` values are `null`. You should check for this * in your own code to avoid processing potentially null physics bodies. */ - onEndContact: Phaser.Signal; + onEndContact: Phaser.Signal; /** * This signal is dispatched when a Spring is added to the World. * * It sends 1 argument: `spring` which is either a `Phaser.Physics.P2.Spring`, `p2.LinearSpring` or `p2.RotationalSpring` that was added to the world. */ - onSpringAdded: Phaser.Signal; + onSpringAdded: Phaser.Signal; /** * This signal is dispatched when a Spring is removed from the World. * * It sends 1 argument: `spring` which is either a `Phaser.Physics.P2.Spring`, `p2.LinearSpring` or `p2.RotationalSpring` that was removed from the world. */ - onSpringRemoved: Phaser.Signal; + onSpringRemoved: Phaser.Signal; /** * The paused state of the P2 World. */ - paused: boolean; - postBroaddphaseCallback: Function; + paused: boolean; + postBroaddphaseCallback: Function; /** * Default coefficient of restitution between colliding bodies. This value is used if no matching ContactMaterial is found for a Material pair. */ - restitution: number; + restitution: number; /** * Enable/disable constraint solving in each step. */ - solveConstraints: boolean; + solveConstraints: boolean; /** * The World time. */ - time: any; + time: any; /** * The total number of bodies in the world. */ - total: number; + total: number; /** * If true the frameRate value will be ignored and instead p2 will step with the value of Game.Time.physicsElapsed, which is a delta time value. */ - useElapsedTime: boolean; + useElapsedTime: boolean; /** * An object containing the 4 wall bodies that bound the physics world. */ - walls: { - left?: Phaser.Physics.P2.Body; - right?: Phaser.Physics.P2.Body; - top?: Phaser.Physics.P2.Body; - bottom?: Phaser.Physics.P2.Body; - }; + walls: { + left?: Phaser.Physics.P2.Body; + right?: Phaser.Physics.P2.Body; + top?: Phaser.Physics.P2.Body; + bottom?: Phaser.Physics.P2.Body; + }; /** * The p2 World in which the simulation is run. */ - world: p2.World; - + world: p2.World; + /** * Add a body to the world. @@ -18327,7 +18782,7 @@ declare module Phaser { * @param body The Body to add to the World. * @return True if the Body was added successfully, otherwise false. */ - addBody(body: Phaser.Physics.P2.Body): boolean; + addBody(body: Phaser.Physics.P2.Body): boolean; /** * Adds a Contact Material to the world. @@ -18335,7 +18790,7 @@ declare module Phaser { * @param material The Contact Material to be added to the World. * @return The Contact Material that was added. */ - addContactMaterial(material: Phaser.Physics.P2.ContactMaterial): Phaser.Physics.P2.ContactMaterial; + addContactMaterial(material: Phaser.Physics.P2.ContactMaterial): Phaser.Physics.P2.ContactMaterial; /** * Adds a Constraint to the world. @@ -18343,7 +18798,7 @@ declare module Phaser { * @param constraint The Constraint to add to the World. * @return The Constraint that was added. */ - addConstraint(constraint: T): T; + addConstraint(constraint: T): T; /** * Adds a Spring to the world. @@ -18351,14 +18806,14 @@ declare module Phaser { * @param spring The Spring to add to the World. * @return The Spring that was added. */ - addSpring(spring: Phaser.Physics.P2.Spring): Phaser.Physics.P2.Spring; + addSpring(spring: Phaser.Physics.P2.Spring): Phaser.Physics.P2.Spring; /** * Handles a p2 begin contact event. * * @param event The event data. */ - beginContactHandler(event: any): void; + beginContactHandler(event: any): void; /** * Clears all bodies from the simulation, resets callbacks and resets the collision bitmask. @@ -18373,7 +18828,7 @@ declare module Phaser { * * This is called automatically when you switch state. */ - clear(): void; + clear(): void; /** * Clears all physics bodies from the given TilemapLayer that were created with `World.convertTilemap`. @@ -18381,7 +18836,7 @@ declare module Phaser { * @param map The Tilemap to get the map data from. * @param layer The layer to operate on. If not given will default to map.currentLayer. */ - clearTilemapLayerBodies(map: Phaser.Tilemap, layer?: any): void; + clearTilemapLayerBodies(map: Phaser.Tilemap, layer?: any): void; /** * Converts all of the polylines objects inside a Tiled ObjectGroup into physics bodies that are added to the world. @@ -18392,7 +18847,7 @@ declare module Phaser { * @param addToWorld If true it will automatically add each body to the world. - Default: true * @return An array of the Phaser.Physics.Body objects that have been created. */ - convertCollisionObjects(map: Phaser.Tilemap, layer?: any, addToWorld?: boolean): Phaser.Physics.P2.Body[]; + convertCollisionObjects(map: Phaser.Tilemap, layer?: any, addToWorld?: boolean): Phaser.Physics.P2.Body[]; /** * Goes through all tiles in the given Tilemap and TilemapLayer and converts those set to collide into physics bodies. @@ -18406,7 +18861,7 @@ declare module Phaser { * @param optimize If true adjacent colliding tiles will be combined into a single body to save processing. However it means you cannot perform specific Tile to Body collision responses. - Default: true * @return An array of the Phaser.Physics.P2.Body objects that were created. */ - convertTilemap(map: Phaser.Tilemap, layer?: any, addToWorld?: Boolean, optimize?: boolean): Phaser.Physics.P2.Body[]; + convertTilemap(map: Phaser.Tilemap, layer?: any, addToWorld?: Boolean, optimize?: boolean): Phaser.Physics.P2.Body[]; /** * Creates a new Body and adds it to the World. @@ -18424,7 +18879,7 @@ declare module Phaser { * or the arguments passed can be flat x,y values e.g. `setPolygon(options, x,y, x,y, x,y, ...)` where `x` and `y` are numbers. * @return The body */ - createBody(x: number, y: number, mass: number, addToWorld?: boolean, options?: p2.BodyOptions, data?: number[][]): Phaser.Physics.P2.Body; + createBody(x: number, y: number, mass: number, addToWorld?: boolean, options?: p2.BodyOptions, data?: number[][]): Phaser.Physics.P2.Body; /** * Creates a new Body and adds it to the World. @@ -18442,7 +18897,7 @@ declare module Phaser { * or the arguments passed can be flat x,y values e.g. `setPolygon(options, x,y, x,y, x,y, ...)` where `x` and `y` are numbers. * @return The body */ - createBody(x: number, y: number, mass: number, addToWorld?: boolean, options?: p2.BodyOptions, data?: number[]): Phaser.Physics.P2.Body; + createBody(x: number, y: number, mass: number, addToWorld?: boolean, options?: p2.BodyOptions, data?: number[]): Phaser.Physics.P2.Body; /** * Creates a new Collision Group and optionally applies it to the given object. @@ -18450,7 +18905,7 @@ declare module Phaser { * * @param object An optional Sprite or Group to apply the Collision Group to. If a Group is given it will be applied to all top-level children. */ - createCollisionGroup(group?: Phaser.Group): Phaser.Physics.P2.CollisionGroup; + createCollisionGroup(group?: Phaser.Group): Phaser.Physics.P2.CollisionGroup; /** * Creates a new Collision Group and optionally applies it to the given object. @@ -18458,7 +18913,7 @@ declare module Phaser { * * @param object An optional Sprite or Group to apply the Collision Group to. If a Group is given it will be applied to all top-level children. */ - createCollisionGroup(group?: Phaser.Sprite): Phaser.Physics.P2.CollisionGroup; + createCollisionGroup(group?: Phaser.Sprite): Phaser.Physics.P2.CollisionGroup; /** * Creates a Contact Material from the two given Materials. You can then edit the properties of the Contact Material directly. @@ -18468,7 +18923,7 @@ declare module Phaser { * @param options Material options object. * @return The Contact Material that was created. */ - createContactMaterial(materialA: Phaser.Physics.P2.Material, materialB: Phaser.Physics.P2.Material, options?: p2.ContactMaterialOptions): Phaser.Physics.P2.ContactMaterial; + createContactMaterial(materialA: Phaser.Physics.P2.Material, materialB: Phaser.Physics.P2.Material, options?: p2.ContactMaterialOptions): Phaser.Physics.P2.ContactMaterial; /** * Creates a constraint that tries to keep the distance between two bodies constant. @@ -18481,7 +18936,7 @@ declare module Phaser { * @param maxForce The maximum force that should be applied to constrain the bodies. * @return The constraint */ - createDistanceConstraint(bodyA: any, bodyB: any, distance: number, localAnchorA?: number[], localAnchorB?: number[], maxForce?: number): Phaser.Physics.P2.DistanceConstraint; + createDistanceConstraint(bodyA: any, bodyB: any, distance: number, localAnchorA?: number[], localAnchorB?: number[], maxForce?: number): Phaser.Physics.P2.DistanceConstraint; /** * Creates a constraint that tries to keep the distance between two bodies constant. @@ -18492,7 +18947,7 @@ declare module Phaser { * @param ratio The gear ratio. - Default: 1 * @return The constraint */ - createGearConstraint(bodyA: any, bodyB: any, angle?: number, ratio?: number): Phaser.Physics.P2.GearConstraint; + createGearConstraint(bodyA: any, bodyB: any, angle?: number, ratio?: number): Phaser.Physics.P2.GearConstraint; /** * Locks the relative position between two bodies. @@ -18504,7 +18959,7 @@ declare module Phaser { * @param maxForce The maximum force that should be applied to constrain the bodies. * @return The constraint */ - createLockConstraint(bodyA: any, bodyB: any, offset?: number[], angle?: number, maxForce?: number): Phaser.Physics.P2.LockConstraint; + createLockConstraint(bodyA: any, bodyB: any, offset?: number[], angle?: number, maxForce?: number): Phaser.Physics.P2.LockConstraint; /** * Creates a Material. Materials are applied to Shapes owned by a Body and can be set with Body.setMaterial(). @@ -18515,7 +18970,7 @@ declare module Phaser { * @param body Optional Body. If given it will assign the newly created Material to the Body shapes. * @return The Material that was created. This is also stored in Phaser.Physics.P2.materials. */ - createMaterial(name?: string, body?: Phaser.Physics.P2.Body): Phaser.Physics.P2.Material; + createMaterial(name?: string, body?: Phaser.Physics.P2.Body): Phaser.Physics.P2.Material; /** * Creates a new Particle and adds it to the World. @@ -18532,7 +18987,7 @@ declare module Phaser { * Either [[0,0], [0,1],...] or a flat array of numbers that will be interpreted as [x,y, x,y, ...], * or the arguments passed can be flat x,y values e.g. `setPolygon(options, x,y, x,y, x,y, ...)` where `x` and `y` are numbers. */ - createParticle(x: number, y: number, mass: number, addToWorld?: boolean, options?: p2.BodyOptions, data?: number[][]): Phaser.Physics.P2.Body; + createParticle(x: number, y: number, mass: number, addToWorld?: boolean, options?: p2.BodyOptions, data?: number[][]): Phaser.Physics.P2.Body; /** * Creates a new Particle and adds it to the World. @@ -18549,7 +19004,7 @@ declare module Phaser { * Either [[0,0], [0,1],...] or a flat array of numbers that will be interpreted as [x,y, x,y, ...], * or the arguments passed can be flat x,y values e.g. `setPolygon(options, x,y, x,y, x,y, ...)` where `x` and `y` are numbers. */ - createParticle(x: number, y: number, mass: number, addToWorld?: boolean, options?: p2.BodyOptions, data?: number[]): Phaser.Physics.P2.Body; + createParticle(x: number, y: number, mass: number, addToWorld?: boolean, options?: p2.BodyOptions, data?: number[]): Phaser.Physics.P2.Body; /** * Constraint that only allows bodies to move along a line, relative to each other. @@ -18564,7 +19019,7 @@ declare module Phaser { * @param maxForce The maximum force that should be applied to constrain the bodies. * @return The constraint */ - createPrismaticConstraint(body: any, bodyB: any, lockRotation?: boolean, anchorA?: number[], anchorB?: number[], axis?: Float32Array, maxForce?: number): Phaser.Physics.P2.PrismaticConstraint; + createPrismaticConstraint(body: any, bodyB: any, lockRotation?: boolean, anchorA?: number[], anchorB?: number[], axis?: Float32Array, maxForce?: number): Phaser.Physics.P2.PrismaticConstraint; /** * Connects two bodies at given offset points, letting them rotate relative to each other around this point. @@ -18578,7 +19033,7 @@ declare module Phaser { * @param worldPivot A pivot point given in world coordinates. If specified, localPivotA and localPivotB are automatically computed from this value. * @return The constraint */ - createRevoluteConstraint(bodyA: any, pivotA: number[], bodyB: any, pivotB: number[], maxForce?: number, worldPivot?: number[]): Phaser.Physics.P2.RevoluteConstraint; + createRevoluteConstraint(bodyA: any, pivotA: number[], bodyB: any, pivotB: number[], maxForce?: number, worldPivot?: number[]): Phaser.Physics.P2.RevoluteConstraint; /** * Creates a rotational spring, connecting two bodies. A spring can have a resting length, a stiffness and damping. @@ -18590,7 +19045,7 @@ declare module Phaser { * @param damping Damping of the spring. A number >= 0. - Default: 1 * @return The spring */ - createRotationalSpring(bodyA: any, bodyB: any, restAngle?: number, stiffness?: number, damping?: number): p2.RotationalSpring; + createRotationalSpring(bodyA: any, bodyB: any, restAngle?: number, stiffness?: number, damping?: number): p2.RotationalSpring; /** * Creates a linear spring, connecting two bodies. A spring can have a resting length, a stiffness and damping. @@ -18606,12 +19061,12 @@ declare module Phaser { * @param localB Where to hook the spring to body B in local body coordinates. This value is an array by 2 elements, x and y, i.e: [32, 32]. * @return The spring */ - createSpring(bodyA: any, bodyB: any, restLength?: number, stiffness?: number, damping?: number, worldA?: number[], worldB?: number[], localA?: number[], localB?: number[]): Phaser.Physics.P2.Spring; + createSpring(bodyA: any, bodyB: any, restLength?: number, stiffness?: number, damping?: number, worldA?: number[], worldB?: number[], localA?: number[], localB?: number[]): Phaser.Physics.P2.Spring; /** * Clears all bodies from the simulation and unlinks World from Game. Should only be called on game shutdown. Call `clear` on a State change. */ - destroy(): void; + destroy(): void; /** * This will create a P2 Physics body on the given game object or array of game objects. @@ -18622,7 +19077,7 @@ declare module Phaser { * @param debug Create a debug object to go with this body? * @param children Should a body be created on all children of this object? If true it will recurse down the display list as far as it can go. - Default: true */ - enable(object: any, debug?: boolean, children?: boolean): void; + enable(object: any, debug?: boolean, children?: boolean): void; /** * Creates a P2 Physics body on the given game object. @@ -18631,20 +19086,20 @@ declare module Phaser { * @param object The game object to create the physics body on. A body will only be created if this object has a null `body` property. * @param debug Create a debug object to go with this body? */ - enableBody(object: any, debug: boolean): void; + enableBody(object: any, debug: boolean): void; /** * Handles a p2 end contact event. * * @param event The event data. */ - endContactHandler(event: any): void; + endContactHandler(event: any): void; /** * Populates and returns an array with references to of all current Bodies in the world. * @return An array containing all current Bodies in the world. */ - getBodies(): Phaser.Physics.P2.Body[]; + getBodies(): Phaser.Physics.P2.Body[]; /** * Checks the given object to see if it has a p2.Body and if so returns it. @@ -18652,7 +19107,7 @@ declare module Phaser { * @param object The object to check for a p2.Body on. * @return The p2.Body, or null if not found. */ - getBody(object: any): Phaser.Physics.P2.Body; + getBody(object: any): Phaser.Physics.P2.Body; /** * Populates and returns an array of all current Constraints in the world. @@ -18660,13 +19115,13 @@ declare module Phaser { * PrismaticConstraints, RevoluteConstraints or any other valid p2 constraint type. * @return An array containing all current Constraints in the world. */ - getConstraints(): p2.Constraint[]; + getConstraints(): p2.Constraint[]; /** * Populates and returns an array of all current Springs in the world. * @return An array containing all current Springs in the world. */ - getSprings(): Phaser.Physics.P2.Spring[]; + getSprings(): Phaser.Physics.P2.Spring[]; /** * Gets a Contact Material based on the two given Materials. @@ -18675,7 +19130,7 @@ declare module Phaser { * @param materialB The second Material to search for. * @return The Contact Material or false if none was found matching the Materials given. */ - getContactMaterial(materialA: Phaser.Physics.P2.Material, materialB: Phaser.Physics.P2.Material): Phaser.Physics.P2.ContactMaterial; + getContactMaterial(materialA: Phaser.Physics.P2.Material, materialB: Phaser.Physics.P2.Material): Phaser.Physics.P2.ContactMaterial; /** * Test if a world point overlaps bodies. You will get an array of actual P2 bodies back. You can find out which Sprite a Body belongs to @@ -18687,7 +19142,7 @@ declare module Phaser { * @param filterStatic If true all Static objects will be removed from the results array. * @return Array of bodies that overlap the point. */ - hitTest(worldPoint: Phaser.Point, bodies?: any[], precision?: number, filterStatic?: boolean): Phaser.Physics.P2.Body[]; + hitTest(worldPoint: Phaser.Point, bodies?: any[], precision?: number, filterStatic?: boolean): Phaser.Physics.P2.Body[]; /** * Convert p2 physics value (meters) to pixel scale. @@ -18697,7 +19152,7 @@ declare module Phaser { * @param v The value to convert. * @return The scaled value. */ - mpx(v: number): number; + mpx(v: number): number; /** * Convert p2 physics value (meters) to pixel scale and inverses it. @@ -18707,17 +19162,17 @@ declare module Phaser { * @param v The value to convert. * @return The scaled value. */ - mpxi(v: number): number; + mpxi(v: number): number; /** * Pauses the P2 World independent of the game pause state. */ - pause(): void; + pause(): void; /** * Called at the start of the core update loop. Purges flagged bodies from the world. */ - preUpdate(): void; + preUpdate(): void; /** * Convert pixel value to p2 physics scale (meters). @@ -18727,7 +19182,7 @@ declare module Phaser { * @param v The value to convert. * @return The scaled value. */ - pxm(v: number): number; + pxm(v: number): number; /** * Convert pixel value to p2 physics scale (meters) and inverses it. @@ -18737,7 +19192,7 @@ declare module Phaser { * @param v The value to convert. * @return The scaled value. */ - pxmi(v: number): number; + pxmi(v: number): number; /** * Removes a body from the world. This will silently fail if the body wasn't part of the world to begin with. @@ -18745,14 +19200,14 @@ declare module Phaser { * @param body The Body to remove from the World. * @return The Body that was removed. */ - removeBody(body: Phaser.Physics.P2.Body): Phaser.Physics.P2.Body; + removeBody(body: Phaser.Physics.P2.Body): Phaser.Physics.P2.Body; /** * This will add a P2 Physics body into the removal list for the next step. * * @param body The body to remove at the start of the next step. */ - removeBodyNextStep(body: Phaser.Physics.P2.Body): void; + removeBodyNextStep(body: Phaser.Physics.P2.Body): void; /** * Removes a Constraint from the world. @@ -18760,7 +19215,7 @@ declare module Phaser { * @param constraint The Constraint to be removed from the World. * @return The Constraint that was removed. */ - removeConstraint(constraint: T): T; + removeConstraint(constraint: T): T; /** * Removes a Contact Material from the world. @@ -18768,7 +19223,7 @@ declare module Phaser { * @param material The Contact Material to be removed from the World. * @return The Contact Material that was removed. */ - removeContactMaterial(material: Phaser.Physics.P2.ContactMaterial): Phaser.Physics.P2.ContactMaterial; + removeContactMaterial(material: Phaser.Physics.P2.ContactMaterial): Phaser.Physics.P2.ContactMaterial; /** * Removes a Spring from the world. @@ -18776,18 +19231,18 @@ declare module Phaser { * @param spring The Spring to remove from the World. * @return The Spring that was removed. */ - removeSpring(spring: Phaser.Physics.P2.Spring): Phaser.Physics.P2.Spring; + removeSpring(spring: Phaser.Physics.P2.Spring): Phaser.Physics.P2.Spring; /** * Called by Phaser.Physics when a State swap occurs. * Starts the begin and end Contact listeners again. */ - reset(): void; + reset(): void; /** * Resumes a paused P2 World. */ - resume(): void; + resume(): void; /** * Sets the bounds of the Physics world to match the given world pixel dimensions. @@ -18807,9 +19262,9 @@ declare module Phaser { * @param bottom If true will create the bottom bounds wall. - Default: true * @param setCollisionGroup If true the Bounds will be set to use its own Collision Group. - Default: true */ - setBounds(x: number, y: number, width: number, height: number, left?: Boolean, right?: boolean, top?: boolean, bottom?: boolean, setCollisionGroup?: boolean): void; - setBoundsToWorld(left?: boolean, right?: boolean, top?: boolean, bottom?: boolean, setCollisionGroup?: boolean): void; - setCollisionGroup(object: any, group: Phaser.Physics.P2.CollisionGroup): void; + setBounds(x: number, y: number, width: number, height: number, left?: Boolean, right?: boolean, top?: boolean, bottom?: boolean, setCollisionGroup?: boolean): void; + setBoundsToWorld(left?: boolean, right?: boolean, top?: boolean, bottom?: boolean, setCollisionGroup?: boolean): void; + setCollisionGroup(object: any, group: Phaser.Physics.P2.CollisionGroup): void; /** * Impact event handling is disabled by default. Enable it before any impact events will be dispatched. @@ -18817,7 +19272,7 @@ declare module Phaser { * * @param state Set to true to enable impact events, or false to disable. */ - setImpactEvents(state: boolean): void; + setImpactEvents(state: boolean): void; /** * Sets the given Material against all Shapes owned by all the Bodies in the given array. @@ -18825,7 +19280,7 @@ declare module Phaser { * @param material The Material to be applied to the given Bodies. * @param bodies An Array of Body objects that the given Material will be set on. */ - setMaterial(material: Phaser.Physics.P2.Material, bodies?: Phaser.Physics.P2.Body[]): void; + setMaterial(material: Phaser.Physics.P2.Material, bodies?: Phaser.Physics.P2.Body[]): void; /** * Sets a callback to be fired after the Broadphase has collected collision pairs in the world. @@ -18836,19 +19291,19 @@ declare module Phaser { * @param callback The callback that will receive the postBroadphase event data. It must return a boolean. Set to null to disable an existing callback. * @param context The context under which the callback will be fired. */ - setPostBroadphaseCallback(callback: Function, context: any): void; - setWorldMaterial(material: Phaser.Physics.P2.Material, left?: boolean, right?: boolean, top?: boolean, bottom?: boolean): void; + setPostBroadphaseCallback(callback: Function, context: any): void; + setWorldMaterial(material: Phaser.Physics.P2.Material, left?: boolean, right?: boolean, top?: boolean, bottom?: boolean): void; /** * Converts the current world into a JSON object. * @return A JSON representation of the world. */ - toJSON(): any; + toJSON(): any; /** * Internal P2 update loop. */ - update(): void; + update(): void; /** * By default the World will be set to collide everything with everything. The bounds of the world is a Body with 4 shapes, one for each face. @@ -18857,12 +19312,12 @@ declare module Phaser { * * @param setCollisionGroup If true the Bounds will be set to use its own Collision Group. - Default: true */ - updateBoundsCollisionGroup(setCollisionGroup?: boolean): void; - - } - - module P2 { - + updateBoundsCollisionGroup(setCollisionGroup?: boolean): void; + + } + + module P2 { + /** * The Physics Body is typically linked to a single Sprite and defines properties that determine how the physics body is simulated. @@ -18872,24 +19327,24 @@ declare module Phaser { * Note: When bound to a Sprite to avoid single-pixel jitters on mobile devices we strongly recommend using Sprite sizes that are even on both axis, i.e. 128x128 not 127x127. * Note: When a game object is given a P2 body it has its anchor x/y set to 0.5, so it becomes centered. */ - class Body { - + class Body { + /** * Dynamic body. Dynamic bodies body can move and respond to collisions and forces. */ - static DYNAMIC: number; + static DYNAMIC: number; /** * Static body. Static bodies do not move, and they do not respond to forces or collision. */ - static STATIC: number; + static STATIC: number; /** * Kinematic body. Kinematic bodies only moves according to its .velocity, and does not respond to collisions or force. */ - static KINEMATIC: number; - + static KINEMATIC: number; + /** * The Physics Body is typically linked to a single Sprite and defines properties that determine how the physics body is simulated. @@ -18905,40 +19360,40 @@ declare module Phaser { * @param y The y coordinate of this Body. * @param mass The default mass of this Body (0 = static). - Default: 1 */ - constructor(game: Phaser.Game, sprite?: Phaser.Sprite, x?: number, y?: number, mass?: number); - + constructor(game: Phaser.Game, sprite?: Phaser.Sprite, x?: number, y?: number, mass?: number); + /** * - */ - allowSleep: boolean; + allowSleep: boolean; /** * The angle of the Body in degrees from its original orientation. Values from 0 to 180 represent clockwise rotation; values from 0 to -180 represent counterclockwise rotation. * Values outside this range are added to or subtracted from 360 to obtain a value within the range. For example, the statement Body.angle = 450 is the same as Body.angle = 90. * If you wish to work in radians instead of degrees use the property Body.rotation instead. Working in radians is faster as it doesn't have to convert values. The angle of this Body in degrees. */ - angle: number; + angle: number; /** * Damping is specified as a value between 0 and 1, which is the proportion of velocity lost per second. The angular damping acting acting on the body. */ - angularDamping: number; + angularDamping: number; /** * The angular force acting on the body. */ - angularForce: number; + angularForce: number; /** * The angular velocity of the body. */ - angularVelocity: number; + angularVelocity: number; /** * Array of CollisionGroups that this Bodies shapes collide with. */ - collidesWith: Phaser.Physics.P2.CollisionGroup[]; + collidesWith: Phaser.Physics.P2.CollisionGroup[]; /** * A Body can be set to collide against the World bounds automatically if this is set to true. Otherwise it will leave the World. @@ -18946,82 +19401,82 @@ declare module Phaser { * Also note that when you set this it will only effect Body shapes that already exist. If you then add further shapes to your Body * after setting this it will *not* proactively set them to collide with the bounds. Should the Body collide with the World bounds? */ - collideWorldBounds: boolean; + collideWorldBounds: boolean; /** * Damping is specified as a value between 0 and 1, which is the proportion of velocity lost per second. The linear damping acting on the body in the velocity direction. */ - damping: number; + damping: number; /** * The p2 Body data. */ - data: p2.Body; + data: p2.Body; /** * Enable or disable debug drawing of this body */ - debug: boolean; + debug: boolean; /** * Reference to the debug body. */ - debugBody: Phaser.Physics.P2.BodyDebug; + debugBody: Phaser.Physics.P2.BodyDebug; /** * Returns true if the Body is dynamic. Setting Body.dynamic to 'false' will make it static. */ - dynamic: boolean; + dynamic: boolean; /** * - */ - fixedRotation: boolean; + fixedRotation: boolean; /** * The force applied to the body. */ - force: Phaser.Physics.P2.InversePointProxy; + force: Phaser.Physics.P2.InversePointProxy; /** * Returns true if the Body is kinematic. Setting Body.kinematic to 'false' will make it static. */ - kinematic: boolean; + kinematic: boolean; /** * Local reference to game. */ - game: Phaser.Game; + game: Phaser.Game; /** * A locally applied gravity force to the Body. Applied directly before the world step. NOTE: Not currently implemented. */ - gravity: Phaser.Point; + gravity: Phaser.Point; /** * The Body ID. Each Body that has been added to the World has a unique ID. */ - id: number; + id: number; /** * The inertia of the body around the Z axis.. */ - inertia: number; + inertia: number; /** * The mass of the body. */ - mass: number; + mass: number; /** * The type of motion this body has. Should be one of: Body.STATIC (the body does not move), Body.DYNAMIC (body can move and respond to collisions) and Body.KINEMATIC (only moves according to its .velocity). */ - motionState: number; + motionState: number; /** * The offset of the Physics Body from the Sprite x/y position. */ - offset: Phaser.Point; + offset: Phaser.Point; /** * Dispatched when a first contact is created between shapes in two bodies. @@ -19035,7 +19490,7 @@ declare module Phaser { * The Shape from the contact body. * The Contact Equation data array. */ - onBeginContact: Phaser.Signal; + onBeginContact: Phaser.Signal; /** * Dispatched when contact ends between shapes in two bodies. @@ -19048,64 +19503,64 @@ declare module Phaser { * The Shape from this body that caused the original contact. * The Shape from the contact body. */ - onEndContact: Phaser.Signal; + onEndContact: Phaser.Signal; /** * The angle of the Body in radians. * If you wish to work in degrees instead of radians use the Body.angle property instead. Working in radians is faster as it doesn't have to convert values. The angle of this Body in radians. */ - rotation: number; + rotation: number; /** * To avoid deleting this body during a physics step, and causing all kinds of problems, set removeNextStep to true to have it removed in the next preUpdate. */ - removeNextStep: boolean; + removeNextStep: boolean; /** * Reference to the parent Sprite. */ - sprite: Phaser.Sprite; + sprite: Phaser.Sprite; /** * . */ - sleepSpeedLimit: number; + sleepSpeedLimit: number; /** * Returns true if the Body is static. Setting Body.static to 'false' will make it dynamic. */ - static: boolean; + static: boolean; /** * The type of physics system this body belongs to. */ - type: number; + type: number; /** * The velocity of the body. Set velocity.x to a negative value to move to the left, position to the right. velocity.y negative values move up, positive move down. */ - velocity: Phaser.Physics.P2.InversePointProxy; + velocity: Phaser.Physics.P2.InversePointProxy; /** * Local reference to the P2 World. */ - world: Phaser.Physics.P2; + world: Phaser.Physics.P2; /** * The x coordinate of this Body. */ - x: number; + x: number; /** * The y coordinate of this Body. */ - y: number; - + y: number; + /** * Adds this physics body to the world. */ - addToWorld(): void; + addToWorld(): void; /** * Adds a Capsule shape to this Body. @@ -19118,7 +19573,7 @@ declare module Phaser { * @param rotation Local rotation of the shape relative to the body center of mass, specified in radians. * @return The Capsule shape that was added to the Body. */ - addCapsule(length: number, radius: number, offsetX?: number, offsetY?: number, rotation?: number): p2.Capsule; + addCapsule(length: number, radius: number, offsetX?: number, offsetY?: number, rotation?: number): p2.Capsule; /** * Adds a Circle shape to this Body. You can control the offset from the center of the body and the rotation. @@ -19129,7 +19584,7 @@ declare module Phaser { * @param rotation Local rotation of the shape relative to the body center of mass, specified in radians. * @return The Circle shape that was added to the Body. */ - addCircle(radius: number, offsetX?: number, offsetY?: number, rotation?: number): p2.Circle; + addCircle(radius: number, offsetX?: number, offsetY?: number, rotation?: number): p2.Circle; /** * Add a polygon fixture. This is used during #loadPolygon. @@ -19137,7 +19592,7 @@ declare module Phaser { * @param fixtureData The data for the fixture. It contains: isSensor, filter (collision) and the actual polygon shapes. * @return An array containing the generated shapes for the given polygon. */ - addFixture(fixtureData: string): p2.Shape[]; + addFixture(fixtureData: string): p2.Shape[]; /** * Adds a Line shape to this Body. @@ -19150,7 +19605,7 @@ declare module Phaser { * @param rotation Local rotation of the shape relative to the body center of mass, specified in radians. * @return The Line shape that was added to the Body. */ - addLine(length: number, offsetX?: number, offsetY?: number, rotation?: number): p2.Line; + addLine(length: number, offsetX?: number, offsetY?: number, rotation?: number): p2.Line; /** * Adds a Particle shape to this Body. You can control the offset from the center of the body and the rotation. @@ -19160,7 +19615,7 @@ declare module Phaser { * @param rotation Local rotation of the shape relative to the body center of mass, specified in radians. * @return The Particle shape that was added to the Body. */ - addParticle(offsetX?: number, offsetY?: number, rotation?: number): p2.Particle; + addParticle(offsetX?: number, offsetY?: number, rotation?: number): p2.Particle; /** * Reads a polygon shape path, and assembles convex shapes from that and puts them at proper offset points. The shape must be simple and without holes. @@ -19175,7 +19630,7 @@ declare module Phaser { * or the arguments passed can be flat x,y values e.g. `setPolygon(options, x,y, x,y, x,y, ...)` where `x` and `y` are numbers. * @return True on success, else false. */ - addPolygon(options: { optimalDecomp?: boolean; skipSimpleCheck?: boolean; removeCollinearPoints?: boolean; }, points: number[][]): boolean; + addPolygon(options: { optimalDecomp?: boolean; skipSimpleCheck?: boolean; removeCollinearPoints?: boolean; }, points: number[][]): boolean; /** * Reads the shape data from a physics data file stored in the Game.Cache and adds it as a polygon to this Body. @@ -19187,7 +19642,7 @@ declare module Phaser { * @param object The key of the object within the Physics data file that you wish to load the shape data from. * @return A list of created fixtures to be used with Phaser.Physics.P2.FixtureList */ - addPhaserPolygon(key: string, object: string): Phaser.Physics.P2.FixtureList; + addPhaserPolygon(key: string, object: string): Phaser.Physics.P2.FixtureList; /** * Adds a Plane shape to this Body. The plane is facing in the Y direction. You can control the offset from the center of the body and the rotation. @@ -19197,7 +19652,7 @@ declare module Phaser { * @param rotation Local rotation of the shape relative to the body center of mass, specified in radians. * @return The Plane shape that was added to the Body. */ - addPlane(offsetX?: number, offsetY?: number, rotation?: number): p2.Plane; + addPlane(offsetX?: number, offsetY?: number, rotation?: number): p2.Plane; /** * Adds a Rectangle shape to this Body. You can control the offset from the center of the body and the rotation. @@ -19209,7 +19664,7 @@ declare module Phaser { * @param rotation Local rotation of the shape relative to the body center of mass, specified in radians. * @return The shape that was added to the Body. */ - addRectangle(width: number, height: number, offsetX?: number, offsetY?: number, rotation?: number): p2.Rectangle; + addRectangle(width: number, height: number, offsetX?: number, offsetY?: number, rotation?: number): p2.Rectangle; /** * Add a shape to the body. You can pass a local transform when adding a shape, so that the shape gets an offset and an angle relative to the body center of mass. @@ -19222,19 +19677,19 @@ declare module Phaser { * @param rotation Local rotation of the shape relative to the body center of mass, specified in radians. * @return The shape that was added to the body. */ - addShape(shape: p2.Shape, offsetX?: number, offsetY?: number, rotation?: number): p2.Shape; + addShape(shape: p2.Shape, offsetX?: number, offsetY?: number, rotation?: number): p2.Shape; /** * Moves the shape offsets so their center of mass becomes the body center of mass. */ - adjustCenterOfMass(): void; + adjustCenterOfMass(): void; /** * Apply damping, see http://code.google.com/p/bullet/issues/detail?id=74 for details. * * @param dt Current time step. */ - applyDamping(dt: number): void; + applyDamping(dt: number): void; /** * Apply force to a world point. @@ -19246,7 +19701,7 @@ declare module Phaser { * @param worldX The world x point to apply the force on. * @param worldY The world y point to apply the force on. */ - applyForce(force: number[], worldX: number, worldY: number): void; + applyForce(force: number[], worldX: number, worldY: number): void; /** * Apply impulse to a point relative to the body. @@ -19257,7 +19712,7 @@ declare module Phaser { * @param worldX A point relative to the body in world space. If not given, it is set to zero and all of the impulse will be exerted on the center of mass. * @param worldY A point relative to the body in world space. If not given, it is set to zero and all of the impulse will be exerted on the center of mass. */ - applyImpulse(impulse: number[], worldX: number, worldY: number): void; + applyImpulse(impulse: number[], worldX: number, worldY: number): void; /** * Apply impulse to a point local to the body. @@ -19269,7 +19724,7 @@ declare module Phaser { * @param localX A local point on the body. * @param localY A local point on the body. */ - applyImpulseLocal(impulse: number[], localX: number, localY: number): void; + applyImpulseLocal(impulse: number[], localX: number, localY: number): void; /** * Clears the collision data from the shapes in this Body. Optionally clears Group and/or Mask. @@ -19278,12 +19733,12 @@ declare module Phaser { * @param clearMask Clear the collisionMask value from the shape/s? - Default: true * @param shape An optional Shape. If not provided the collision data will be cleared from all Shapes in this Body. */ - clearCollision(clearGroup?: boolean, cleanMask?: boolean, shape?: p2.Shape): void; + clearCollision(clearGroup?: boolean, cleanMask?: boolean, shape?: p2.Shape): void; /** * Removes all Shapes from this Body. */ - clearShapes(): void; + clearShapes(): void; /** * Adds the given CollisionGroup, or array of CollisionGroups, to the list of groups that this body will collide with and updates the collision masks. @@ -19293,7 +19748,7 @@ declare module Phaser { * @param callbackContext The context under which the callback will be called. * @param shape An optional Shape. If not provided the collision mask will be added to all Shapes in this Body. */ - collides(group: any, callback?: Function, callbackContext?: any, shape?: p2.Shape): void; + collides(group: any, callback?: Function, callbackContext?: any, shape?: p2.Shape): void; /** * Sets a callback to be fired any time a shape in this Body impacts with a shape in the given Body. The impact test is performed against body.id values. @@ -19305,7 +19760,7 @@ declare module Phaser { * @param callback The callback to fire on impact. Set to null to clear a previously set callback. * @param callbackContext The context under which the callback will fire. */ - createBodyCallback(object: any, callback: Function, callbackContext: any): void; + createBodyCallback(object: any, callback: Function, callbackContext: any): void; /** * Sets a callback to be fired any time this Body impacts with the given Group. The impact test is performed against shape.collisionGroup values. @@ -19318,18 +19773,18 @@ declare module Phaser { * @param callback The callback to fire on impact. Set to null to clear a previously set callback. * @param callbackContext The context under which the callback will fire. */ - createGroupCallback(group: Phaser.Physics.P2.CollisionGroup, callback: Function, callbackContext: any): void; + createGroupCallback(group: Phaser.Physics.P2.CollisionGroup, callback: Function, callbackContext: any): void; /** * Destroys this Body and all references it holds to other objects. */ - destroy(): void; + destroy(): void; /** * Gets the collision bitmask from the groups this body collides with. * @return The bitmask. */ - getCollisionMask(): number; + getCollisionMask(): number; /** * Gets the velocity of a point in the body. @@ -19338,7 +19793,7 @@ declare module Phaser { * @param relativePoint A world oriented vector, indicating the position of the point to get the velocity from. * @return The result vector. */ - getVelocityAtPoint(result: number[], relativePoint: number[]): number[]; + getVelocityAtPoint(result: number[], relativePoint: number[]): number[]; /** * Reads the shape data from a physics data file stored in the Game.Cache and adds it as a polygon to this Body. @@ -19354,7 +19809,7 @@ declare module Phaser { * or if key is null pass the actual physics data object itself as this parameter. * @return True on success, else false. */ - loadPolygon(key: string, object: string): boolean; + loadPolygon(key: string, object: string): boolean; /** * Moves the Body backwards based on its current angle and the given speed. @@ -19362,7 +19817,7 @@ declare module Phaser { * * @param speed The speed at which it should move backwards. */ - moveBackward(speed: number): void; + moveBackward(speed: number): void; /** * If this Body is dynamic then this will move it down by setting its y velocity to the given speed. @@ -19370,7 +19825,7 @@ declare module Phaser { * * @param speed The speed at which it should move down, in pixels per second. */ - moveDown(speed: number): void; + moveDown(speed: number): void; /** * Moves the Body forwards based on its current angle and the given speed. @@ -19378,7 +19833,7 @@ declare module Phaser { * * @param speed The speed at which it should move forwards. */ - moveForward(speed: number): void; + moveForward(speed: number): void; /** * If this Body is dynamic then this will move it to the left by setting its x velocity to the given speed. @@ -19386,7 +19841,7 @@ declare module Phaser { * * @param speed The speed at which it should move to the left, in pixels per second. */ - moveLeft(speed: number): void; + moveLeft(speed: number): void; /** * If this Body is dynamic then this will move it to the right by setting its x velocity to the given speed. @@ -19394,7 +19849,7 @@ declare module Phaser { * * @param speed The speed at which it should move to the right, in pixels per second. */ - moveRight(speed: number): void; + moveRight(speed: number): void; /** * If this Body is dynamic then this will move it up by setting its y velocity to the given speed. @@ -19402,17 +19857,17 @@ declare module Phaser { * * @param speed The speed at which it should move up, in pixels per second. */ - moveUp(speed: number): void; + moveUp(speed: number): void; /** * Internal method. This is called directly before the sprites are sent to the renderer and after the update function has finished. */ - preUpdate(): void; + preUpdate(): void; /** * Internal method. This is called directly before the sprites are sent to the renderer and after the update function has finished. */ - postUpdate(): void; + postUpdate(): void; /** * Removes the given CollisionGroup, or array of CollisionGroups, from the list of groups that this body will collide with and updates the collision masks. @@ -19421,12 +19876,12 @@ declare module Phaser { * @param clearCallback Clear the callback that will be triggered when this Body impacts with the given Group? - Default: true * @param shape An optional Shape. If not provided the updated collision mask will be added to all Shapes in this Body. */ - removeCollisionGroup(group: any, clearCallback?: boolean, shape?: p2.Shape): void; + removeCollisionGroup(group: any, clearCallback?: boolean, shape?: p2.Shape): void; /** * Removes this physics body from the world. */ - removeFromWorld(): void; + removeFromWorld(): void; /** * Remove a shape from the body. Will automatically update the mass properties and bounding radius. @@ -19434,7 +19889,7 @@ declare module Phaser { * @param shape The shape to remove from the body. * @return True if the shape was found and removed, else false. */ - removeShape(shape: p2.Shape): boolean; + removeShape(shape: p2.Shape): boolean; /** * Applies a force to the Body that causes it to 'thrust' backwards (in reverse), based on its current angle and the given speed. @@ -19442,21 +19897,21 @@ declare module Phaser { * * @param speed The speed at which it should reverse. */ - reverse(speed: number): void; + reverse(speed: number): void; /** * This will rotate the Body by the given speed to the left (counter-clockwise). * * @param speed The speed at which it should rotate. */ - rotateLeft(speed: number): void; + rotateLeft(speed: number): void; /** * This will rotate the Body by the given speed to the left (clockwise). * * @param speed The speed at which it should rotate. */ - rotateRight(speed: number): void; + rotateRight(speed: number): void; /** * Resets the Body force, velocity (linear and angular) and rotation. Optionally resets damping and mass. @@ -19466,12 +19921,12 @@ declare module Phaser { * @param resetDamping Resets the linear and angular damping. * @param resetMass Sets the Body mass back to 1. */ - reset(x: number, y: number, resetDamping?: boolean, resetMass?: boolean): void; + reset(x: number, y: number, resetDamping?: boolean, resetMass?: boolean): void; /** * Updates the debug draw if any body shapes change. */ - shapeChanged(): void; + shapeChanged(): void; /** * Clears any previously set shapes. Then creates a new Circle shape and adds it to this Body. @@ -19482,7 +19937,7 @@ declare module Phaser { * @param offsetY Local vertical offset of the shape relative to the body center of mass. * @param rotation Local rotation of the shape relative to the body center of mass, specified in radians. */ - setCircle(radius: number, offsetX?: number, offsetY?: number, rotation?: number): p2.Circle; + setCircle(radius: number, offsetX?: number, offsetY?: number, rotation?: number): p2.Circle; /** * Sets the given CollisionGroup to be the collision group for all shapes in this Body, unless a shape is specified. @@ -19491,7 +19946,7 @@ declare module Phaser { * @param group The Collision Group that this Bodies shapes will use. * @param shape An optional Shape. If not provided the collision group will be added to all Shapes in this Body. */ - setCollisionGroup(group: Phaser.Physics.P2.CollisionGroup, shape?: p2.Shape): void; + setCollisionGroup(group: Phaser.Physics.P2.CollisionGroup, shape?: p2.Shape): void; /** * Clears any previously set shapes. The creates a new Rectangle shape at the given size and offset, and adds it to this Body. @@ -19505,7 +19960,7 @@ declare module Phaser { * @param rotation Local rotation of the shape relative to the body center of mass, specified in radians. * @return The Rectangle shape that was added to the Body. */ - setRectangle(width?: number, height?: number, offsetX?: number, offsetY?: number, rotation?: number): p2.Rectangle; + setRectangle(width?: number, height?: number, offsetX?: number, offsetY?: number, rotation?: number): p2.Rectangle; /** * Clears any previously set shapes. @@ -19516,7 +19971,7 @@ declare module Phaser { * @param sprite The Sprite on which the Rectangle will get its dimensions. * @return The Rectangle shape that was added to the Body. */ - setRectangleFromSprite(sprite: any): p2.Rectangle; + setRectangleFromSprite(sprite: any): p2.Rectangle; /** * Adds the given Material to all Shapes that belong to this Body. @@ -19525,27 +19980,27 @@ declare module Phaser { * @param material The Material that will be applied. * @param shape An optional Shape. If not provided the Material will be added to all Shapes in this Body. */ - setMaterial(material: Phaser.Physics.P2.Material, shape?: p2.Shape): void; + setMaterial(material: Phaser.Physics.P2.Material, shape?: p2.Shape): void; /** * Sets the Body damping and angularDamping to zero. */ - setZeroDamping(): void; + setZeroDamping(): void; /** * Sets the force on the body to zero. */ - setZeroForce(): void; + setZeroForce(): void; /** * If this Body is dynamic then this will zero its angular velocity. */ - setZeroRotation(): void; + setZeroRotation(): void; /** * If this Body is dynamic then this will zero its velocity on both axis. */ - setZeroVelocity(): void; + setZeroVelocity(): void; /** * Transform a world point to local body frame. @@ -19553,7 +20008,7 @@ declare module Phaser { * @param out The vector to store the result in. * @param worldPoint The input world vector. */ - toLocalFrame(out: number[], worldPoint: number[]): void; + toLocalFrame(out: number[], worldPoint: number[]): void; /** * Applies a force to the Body that causes it to 'thrust' forwards, based on its current angle and the given speed. @@ -19561,7 +20016,7 @@ declare module Phaser { * * @param speed The speed at which it should thrust. */ - thrust(speed: number): void; + thrust(speed: number): void; /** * Applies a force to the Body that causes it to 'thrust' to the left, based on its current angle and the given speed. @@ -19569,7 +20024,7 @@ declare module Phaser { * * @param speed The speed at which it should move to the left. */ - thrustLeft(speed: number): void; + thrustLeft(speed: number): void; /** * Applies a force to the Body that causes it to 'thrust' to the right, based on its current angle and the given speed. @@ -19577,7 +20032,7 @@ declare module Phaser { * * @param speed The speed at which it should move to the right. */ - thrustRight(speed: number): void; + thrustRight(speed: number): void; /** * Transform a local point to world frame. @@ -19585,17 +20040,17 @@ declare module Phaser { * @param out The vector to store the result in. * @param localPoint The input local vector. */ - toWorldFrame(out: number[], localPoint: number[]): void; + toWorldFrame(out: number[], localPoint: number[]): void; /** * Updates the collisionMask. * * @param shape An optional Shape. If not provided the collision group will be added to all Shapes in this Body. */ - updateCollisionMask(shape?: p2.Shape): void; - - } - + updateCollisionMask(shape?: p2.Shape): void; + + } + /** * Draws a P2 Body to a Graphics instance for visual debugging. @@ -19606,8 +20061,8 @@ declare module Phaser { * manipulate the sprite in any other way (such as moving it to another Group or bringToTop, etc) then you will * need to manually adjust its BodyDebug as well. */ - class BodyDebug extends Phaser.Group { - + class BodyDebug extends Phaser.Group { + /** * Draws a P2 Body to a Graphics instance for visual debugging. @@ -19626,73 +20081,73 @@ declare module Phaser { /** * The alpha value of the group container. */ - constructor(game: Phaser.Game, body: Phaser.Physics.P2.Body, settings: { pixelsPerLengthUnit?: number; debugPolygons?: boolean; lineWidth?: number; alpha?: number; }); - + constructor(game: Phaser.Game, body: Phaser.Physics.P2.Body, settings: { pixelsPerLengthUnit?: number; debugPolygons?: boolean; lineWidth?: number; alpha?: number; }); + /** * The P2 Body to display debug data for. */ - body: Phaser.Physics.P2.Body; + body: Phaser.Physics.P2.Body; /** * The canvas to render the debug info to. */ - canvas: Phaser.Graphics; + canvas: Phaser.Graphics; /** * Pixels per Length Unit. */ - ppu: number; - + ppu: number; + /** * Core update. */ - updateSpriteTransform(): void; + updateSpriteTransform(): void; /** * Draws the P2 shapes to the Graphics object. */ - draw(): void; - - } - + draw(): void; + + } + /** * Collision Group */ - class CollisionGroup { - + class CollisionGroup { + /** * Collision Group * * @param bitmask The CollisionGroup bitmask. */ - constructor(bitmask: number); - + constructor(bitmask: number); + /** * The CollisionGroup bitmask. */ - mask: number; - - } - + mask: number; + + } + /** * Defines a physics material */ - class ContactMaterial extends p2.ContactMaterial { - - } - + class ContactMaterial extends p2.ContactMaterial { + + } + /** * A constraint that tries to keep the distance between two bodies constant. */ - class DistanceConstraint extends p2.DistanceConstraint { - + class DistanceConstraint extends p2.DistanceConstraint { + /** * A constraint that tries to keep the distance between two bodies constant. @@ -19705,21 +20160,21 @@ declare module Phaser { * @param localAnchorB The anchor point for bodyB, defined locally in bodyB frame. Defaults to [0,0]. * @param maxForce Maximum force to apply. - Default: Number.MAX_VALUE */ - constructor(world: Phaser.Physics.P2, bodyA: Phaser.Physics.P2.Body, bodyB: Phaser.Physics.P2.Body, distance: number, maxForce: number); - + constructor(world: Phaser.Physics.P2, bodyA: Phaser.Physics.P2.Body, bodyB: Phaser.Physics.P2.Body, distance: number, maxForce: number); + /** * Local reference to game. */ - game: Phaser.Game; + game: Phaser.Game; /** * Local reference to P2 World. */ - world: Phaser.Physics.P2; - - } - + world: Phaser.Physics.P2; + + } + /** * Allow to access a list of created fixture (coming from Body#addPhaserPolygon) @@ -19729,8 +20184,8 @@ declare module Phaser { * This gives you the power to create a complex body built of many fixtures and modify them * during runtime (to remove parts, set masks, categories & sensor properties) */ - class FixtureList { - + class FixtureList { + /** * Allow to access a list of created fixture (coming from Body#addPhaserPolygon) @@ -19742,42 +20197,42 @@ declare module Phaser { * * @param list A list of fixtures (from Phaser.Physics.P2.Body#addPhaserPolygon) */ - constructor(list: any[]); - + constructor(list: any[]); + /** * A helper to flatten arrays. This is very useful as the fixtures are nested from time to time due to the way P2 creates and splits polygons. * * @param array The array to flatten. Notice: This will happen recursive not shallow. */ - flatten(array: any[]): any[]; + flatten(array: any[]): any[]; /** * Accessor to get either a list of specified fixtures by key or the whole fixture list * * @param keys A list of fixture keys */ - getFixtures(keys: string): any[]; + getFixtures(keys: string): any[]; /** * Accessor to get either a single fixture by its key. * * @param key The key of the fixture. */ - getFixtureByKey(key: string): any[]; + getFixtureByKey(key: string): any[]; /** * Accessor to get a group of fixtures by its group index. * * @param groupID The group index. */ - getGroup(groupID: number): any[]; - init(): void; + getGroup(groupID: number): any[]; + init(): void; /** * Parser for the output of Phaser.Physics.P2.Body#addPhaserPolygon */ - parse(): void; + parse(): void; /** * @@ -19785,7 +20240,7 @@ declare module Phaser { * @param bit The bit to set as the collision group. * @param fixtureKey Only apply to the fixture with the given key. */ - setCategory(bit: number, fictureKey: string): void; + setCategory(bit: number, fictureKey: string): void; /** * @@ -19793,7 +20248,7 @@ declare module Phaser { * @param bit The bit to set as the collision mask * @param fixtureKey Only apply to the fixture with the given key */ - setMask(bit: number, fixtureKey: string): void; + setMask(bit: number, fixtureKey: string): void; /** * @@ -19801,7 +20256,7 @@ declare module Phaser { * @param material The contact material for a fixture * @param fixtureKey Only apply to the fixture with the given key */ - setMaterial(material: any, fixtureKey: string): void; + setMaterial(material: any, fixtureKey: string): void; /** * @@ -19809,16 +20264,16 @@ declare module Phaser { * @param value sensor true or false * @param fixtureKey Only apply to the fixture with the given key */ - setSensor(value: boolean, fixtureKey: string): void; - - } - + setSensor(value: boolean, fixtureKey: string): void; + + } + /** * Connects two bodies at given offset points, letting them rotate relative to each other around this point. */ - class GearConstraint extends p2.GearConstraint { - + class GearConstraint extends p2.GearConstraint { + /** * Connects two bodies at given offset points, letting them rotate relative to each other around this point. @@ -19829,27 +20284,27 @@ declare module Phaser { * @param angle The relative angle * @param ratio The gear ratio. - Default: 1 */ - constructor(world: Phaser.Physics.P2, bodyA: Phaser.Physics.P2.Body, bodyB: Phaser.Physics.P2.Body, angle?: number, ratio?: number); - + constructor(world: Phaser.Physics.P2, bodyA: Phaser.Physics.P2.Body, bodyB: Phaser.Physics.P2.Body, angle?: number, ratio?: number); + /** * Local reference to game. */ - game: Phaser.Game; + game: Phaser.Game; /** * Local reference to P2 World. */ - world: Phaser.Physics.P2; - - } - + world: Phaser.Physics.P2; + + } + /** * A InversePointProxy is an internal class that allows for direct getter/setter style property access to Arrays and TypedArrays but inverses the values on set. */ - class InversePointProxy { - + class InversePointProxy { + /** * A InversePointProxy is an internal class that allows for direct getter/setter style property access to Arrays and TypedArrays but inverses the values on set. @@ -19857,37 +20312,37 @@ declare module Phaser { * @param world A reference to the P2 World. * @param destination The object to bind to. */ - constructor(world: Phaser.Physics.P2, destination: any); - + constructor(world: Phaser.Physics.P2, destination: any); + /** * The x property of this InversePointProxy get and set in pixels. */ - x: number; + x: number; /** * The y property of this InversePointProxy get and set in pixels. */ - y: number; + y: number; /** * The x property of this InversePointProxy get and set in meters. */ - mx: number; + mx: number; /** * The y property of this InversePointProxy get and set in meters. */ - my: number; - - } - + my: number; + + } + /** * Locks the relative position between two bodies. */ - class LockConstraint extends p2.LockConstraint { - + class LockConstraint extends p2.LockConstraint { + /** * Locks the relative position between two bodies. @@ -19899,28 +20354,28 @@ declare module Phaser { * @param angle The angle of bodyB in bodyA's frame. * @param maxForce The maximum force that should be applied to constrain the bodies. */ - constructor(world: Phaser.Physics.P2, bodyA: Phaser.Physics.P2.Body, bodyB: Phaser.Physics.P2.Body, offset?: number[], angle?: number, maxForce?: number); - + constructor(world: Phaser.Physics.P2, bodyA: Phaser.Physics.P2.Body, bodyB: Phaser.Physics.P2.Body, offset?: number[], angle?: number, maxForce?: number); + /** * Local reference to game. */ - game: Phaser.Game; + game: Phaser.Game; /** * Local reference to P2 World. */ - world: Phaser.Physics.P2; - } - + world: Phaser.Physics.P2; + } + /** * A P2 Material. * * \o/ ~ "Because I'm a Material girl" */ - class Material extends p2.Material { - + class Material extends p2.Material { + /** * A P2 Material. @@ -19929,22 +20384,22 @@ declare module Phaser { * * @param name The user defined name given to this Material. */ - constructor(name: string); - + constructor(name: string); + /** * The user defined name given to this Material. */ - name: string; - - } - + name: string; + + } + /** * A PointProxy is an internal class that allows for direct getter/setter style property access to Arrays and TypedArrays. */ - class PointProxy { - + class PointProxy { + /** * A PointProxy is an internal class that allows for direct getter/setter style property access to Arrays and TypedArrays. @@ -19952,37 +20407,37 @@ declare module Phaser { * @param world A reference to the P2 World. * @param destination The object to bind to. */ - constructor(world: Phaser.Physics.P2, destination: any); - + constructor(world: Phaser.Physics.P2, destination: any); + /** * The x property of this PointProxy get and set in pixels. */ - x: number; + x: number; /** * The y property of this PointProxy get and set in pixels. */ - y: number; + y: number; /** * The x property of this PointProxy get and set in meters. */ - mx: number; + mx: number; /** * The x property of this PointProxy get and set in meters. */ - my: number; - - } - + my: number; + + } + /** * Connects two bodies at given offset points, letting them rotate relative to each other around this point. */ - class PrismaticConstraint extends p2.PrismaticConstraint { - + class PrismaticConstraint extends p2.PrismaticConstraint { + /** * Connects two bodies at given offset points, letting them rotate relative to each other around this point. @@ -19996,28 +20451,28 @@ declare module Phaser { * @param axis An axis, defined in body A frame, that body B's anchor point may slide along. The value is an array with 2 elements matching x and y, i.e: [32, 32]. * @param maxForce The maximum force that should be applied to constrain the bodies. */ - constructor(world: Phaser.Physics.P2, bodyA?: Phaser.Physics.P2.Body, bodyB?: Phaser.Physics.P2.Body, lockRotation?: boolean, anchorA?: number[], anchorB?: number[], axis?: number[], maxForce?: number); - + constructor(world: Phaser.Physics.P2, bodyA?: Phaser.Physics.P2.Body, bodyB?: Phaser.Physics.P2.Body, lockRotation?: boolean, anchorA?: number[], anchorB?: number[], axis?: number[], maxForce?: number); + /** * Local reference to game. */ - game: Phaser.Game; + game: Phaser.Game; /** * Local reference to P2 World. */ - world: Phaser.Physics.P2; - - } - + world: Phaser.Physics.P2; + + } + /** * Connects two bodies at given offset points, letting them rotate relative to each other around this point. * The pivot points are given in world (pixel) coordinates. */ - class RevoluteConstraint extends p2.RevoluteConstraint { - + class RevoluteConstraint extends p2.RevoluteConstraint { + /** * Connects two bodies at given offset points, letting them rotate relative to each other around this point. @@ -20031,27 +20486,27 @@ declare module Phaser { * @param maxForce The maximum force that should be applied to constrain the bodies. * @param worldPivot A pivot point given in world coordinates. If specified, localPivotA and localPivotB are automatically computed from this value. */ - constructor(world: Phaser.Physics.P2, bodyA: Phaser.Physics.P2.Body, pivotA: number[], bodyB: Phaser.Physics.P2.Body, pivotB: number[], maxForce?: number); - + constructor(world: Phaser.Physics.P2, bodyA: Phaser.Physics.P2.Body, pivotA: number[], bodyB: Phaser.Physics.P2.Body, pivotB: number[], maxForce?: number); + /** * Local reference to game. */ - game: Phaser.Game; + game: Phaser.Game; /** * Local reference to P2 World. */ - world: Phaser.Physics.P2; - - } - + world: Phaser.Physics.P2; + + } + /** * Creates a linear spring, connecting two bodies. A spring can have a resting length, a stiffness and damping. */ - class Spring { - + class Spring { + /** * Creates a linear spring, connecting two bodies. A spring can have a resting length, a stiffness and damping. @@ -20067,34 +20522,34 @@ declare module Phaser { * @param localA Where to hook the spring to body A in local body coordinates. This value is an array with 2 elements matching x and y, i.e: [32, 32]. * @param localB Where to hook the spring to body B in local body coordinates. This value is an array with 2 elements matching x and y, i.e: [32, 32]. */ - constructor(world: Phaser.Physics.P2, bodyA: Phaser.Physics.P2.Body, bodyB: Phaser.Physics.P2.Body, restLength?: number, stiffness?: number, damping?: number, worldA?: number[], worldB?: number[], localA?: number[], localB?: number[]); - + constructor(world: Phaser.Physics.P2, bodyA: Phaser.Physics.P2.Body, bodyB: Phaser.Physics.P2.Body, restLength?: number, stiffness?: number, damping?: number, worldA?: number[], worldB?: number[], localA?: number[], localB?: number[]); + /** * The actual p2 spring object. */ - data: p2.LinearSpring; + data: p2.LinearSpring; /** * Local reference to game. */ - game: Phaser.Game; + game: Phaser.Game; /** * Local reference to P2 World. */ - world: Phaser.Physics.P2; - - } - } - } - + world: Phaser.Physics.P2; + + } + } + } + /** * This is a base Plugin template to use for any Phaser plugin development. */ - class Plugin implements IStateCycle { - + class Plugin implements IStateCycle { + /** * This is a base Plugin template to use for any Phaser plugin development. @@ -20102,334 +20557,334 @@ declare module Phaser { * @param game A reference to the currently running game. * @param parent The object that owns this plugin, usually Phaser.PluginManager. */ - constructor(game: Phaser.Game, parent: Phaser.PluginManager); - + constructor(game: Phaser.Game, parent: Phaser.PluginManager); + /** * A Plugin with active=true has its preUpdate and update methods called by the parent, otherwise they are skipped. */ - active: boolean; + active: boolean; /** * A reference to the currently running game. */ - game: Phaser.Game; + game: Phaser.Game; /** * A flag to indicate if this plugin has a postRender method. */ - hasPostRender: boolean; + hasPostRender: boolean; /** * A flag to indicate if this plugin has a postUpdate method. */ - hasPostUpdate: boolean; + hasPostUpdate: boolean; /** * A flag to indicate if this plugin has a preUpdate method. */ - hasPreUpdate: boolean; + hasPreUpdate: boolean; /** * A flag to indicate if this plugin has a render method. */ - hasRender: boolean; + hasRender: boolean; /** * A flag to indicate if this plugin has an update method. */ - hasUpdate: boolean; + hasUpdate: boolean; /** * The parent of this plugin. If added to the PluginManager the parent will be set to that, otherwise it will be null. */ - parent: PIXI.DisplayObject; + parent: PIXI.DisplayObject; /** * A Plugin with visible=true has its render and postRender methods called by the parent, otherwise they are skipped. */ - visible: boolean; - + visible: boolean; + /** * Clear down this Plugin and null out references */ - destroy(): void; + destroy(): void; /** * Post-render is called after the Game Renderer and State.render have run. * It is only called if visible is set to true. */ - postRender(): void; + postRender(): void; /** * Pre-update is called at the very start of the update cycle, before any other subsystems have been updated (including Physics). * It is only called if active is set to true. */ - preUpdate(): void; + preUpdate(): void; /** * Render is called right after the Game Renderer completes, but before the State.render. * It is only called if visible is set to true. */ - render(): void; + render(): void; /** * Update is called after all the core subsystems (Input, Tweens, Sound, etc) and the State have updated, but before the render. * It is only called if active is set to true. */ - update(): void; - - } - - module Plugin { - - class SaveCPU extends Phaser.Plugin { - - renderOnFPS: number; - renderOnPointerChange: boolean; - forceRender(): void; - } - - class AStar extends Phaser.Plugin { - - static VERSION: string; - static COST_ORTHAGONAL: number; - static COST_DIAGAONAL: number; - static DISTANCE_MANHATTEN: string; - static DISTANCE_EUCLIDIAN: string; - - constructor(parent: PIXI.DisplayObject); - - parent: PIXI.DisplayObject; - version: string; - - findPath(startPoint: Phaser.Point, goalPoint: Phaser.Point): Phaser.Plugin.AStar.AStarPath; - isWalkable(x: number, y: number): boolean; - setAStarMap(map: Phaser.Tilemap, layerName: string, tilesetName: string): Phaser.Plugin.AStar; - - } - - module AStar { - - class AStarNode { - - constructor(x: number, y: number, isWalkable: boolean); - - x: number; - y: number; - g: number; - h: number; - f: number; - parent: Phaser.Plugin.AStar.AStarNode; - travelCost: number; - walkable: boolean; - - } - - class AStarPath { - - constructor(nodes: Phaser.Plugin.AStar.AStarNode[], start: Phaser.Plugin.AStar.AStarNode, goal: Phaser.Plugin.AStar.AStarNode); - - nodes: Phaser.Plugin.AStar.AStarNode[]; - start: Phaser.Plugin.AStar.AStarNode; - goal: Phaser.Plugin.AStar.AStarNode; - visited: Phaser.Plugin.AStar.AStarNode[]; - - } - - } - - class ColorHarmony extends Phaser.Plugin { - - getAnalogousHarmony(color: number, threshold?: number): any; - getComplementHarmony(color: number): number; - getSplitComplementHarmony(color: number, threshold: number): any; - getTriadicHarmony(color: number): any; - - } - - class CSS3Filters extends Phaser.Plugin { - - constructor(parent: PIXI.DisplayObject); - - blur: number; - brightness: number; - contrast: number; - grayscale: number; - hueRotate: number; - invert: number; - opacity: number; - saturate: number; - sepia: number; - - } - - class TilemapWalker extends Phaser.Plugin { - - constructor(game: Phaser.Game, map: Phaser.Tilemap, layer?: any, x?: number, y?: number); - - collides: boolean; - game: Phaser.Game; - history: boolean; - facing: number; - map: Phaser.Tilemap; - location: Phaser.Point; - locationLayer: number; - - checkTile(x: number, y: number): boolean; - getTileFromLocation(x: number, y: number): Phaser.Tile; - getTiles(width: number, height: number, center?: boolean): any[]; - getTileBehind(distance?: number): Phaser.Tile; - getTileBehindLeft(distance?: number): Phaser.Tile; - getTileBehindRight(distance?: number): Phaser.Tile; - getTileAhead(distance?: number): Phaser.Tile; - getTileAheadLeft(distance?: number): Phaser.Tile; - getTileAheadRight(distance?: number): Phaser.Tile; - getTileLeft(distance: number): Phaser.Tile; - getTileRight(distance: number): Phaser.Tile; - moveForward(): boolean; - moveBackward(): boolean; - moveLeft(): boolean; - moveRight(): boolean; - putTile(index: number): void; - setLocation(x: number, y: number, layer?: any): boolean; - turnLeft(): void; - turnRight(): void; - updateLocation(x: number, y: number): boolean; - - } - - class SamplePlugin extends Phaser.Plugin { - - constructor(game: Phaser.Game, parent: PIXI.DisplayObject); - - addSprite(sprite: Phaser.Sprite): void; - update(): void; - - } - - class VirtualJoystick extends Phaser.Plugin { - - constructor(game: Phaser.Game, parent: any); - - angle: number; - base: Phaser.Sprite; - baseBMD: Phaser.BitmapData; - baseCircle: Phaser.Circle; - deltaX: number; - deltaY: number; - distance: number; - force: number; - isDragging: boolean; - limit: number; - limitPoint: Phaser.Point; - location: Phaser.Point; - nub: Phaser.Sprite; - nubBMD: Phaser.BitmapData; - speed: number; - x: number; - y: number; - - init(x: number, y: number, diameter?: number, limit?: number): void; - move(pointer: Phaser.Pointer, x: number, y: number): void; - render(): void; - setVelocity(sprite: Phaser.Sprite, minSpeed?: number, maxSpeed?: number): Phaser.Sprite; - startDrag(): void; - stopDrag(nub: Phaser.Sprite, pointer: Phaser.Pointer): void; - update(): void; - - } - - - - class Webcam extends Phaser.Plugin { - - constructor(game: Phaser.Game, parent: PIXI.DisplayObject); - - active: boolean; - context: any; - stream: any; - video: HTMLVideoElement; - - connectCallback: (stream: any) => void; - errorCallback: (e: any) => void; - grab: (context: any, x: number, y: number) => void; - start(width: number, height: number, context: any): void; - stop(): void; - update(): void; - } - - class Juicy extends Phaser.Plugin { - - constructor(game: Phaser.Game); - - createScreenFlash(color?: string): Phaser.Plugin.Juicy.ScreenFlash; - createTrail(length?: number, color?: number): Phaser.Plugin.Juicy.Trail; - overScale(object: Phaser.Sprite, scale?: number, initialScale?: Phaser.Point): void; - jelly(object: Phaser.Sprite, strength?: number, delay?: number, initialScale?: Phaser.Point): void; - mouseStretch(object: Phaser.Sprite, strength?: number, initialScale?: Phaser.Point): void; - update(): void; - shake(duration?: number, strength?: number): void; - } - - module Juicy { - - class Trail { - - constructor(game: Phaser.Game, trailLength?: number, color?: number); - - target: Phaser.Sprite; - trailLength: number; - trailWidth: number; - trailScaling: boolean; - trailColor: number; - - update(): void; - addSegment(x: number, y: number): void; - redrawSegments(offsetX: number, offsetY: number): void; - - } - - class ScreenFlash { - - constructor(game: Phaser.Game, color?: string); - - flash(maxAlpha?: number, duration?: number): void; - - } - } - } - - interface PluginConstructorOf { - new (...parameters: any[]): T; - } - + update(): void; + + } + + module Plugin { + + class SaveCPU extends Phaser.Plugin { + + renderOnFPS: number; + renderOnPointerChange: boolean; + forceRender(): void; + } + + class AStar extends Phaser.Plugin { + + static VERSION: string; + static COST_ORTHAGONAL: number; + static COST_DIAGAONAL: number; + static DISTANCE_MANHATTEN: string; + static DISTANCE_EUCLIDIAN: string; + + constructor(parent: PIXI.DisplayObject); + + parent: PIXI.DisplayObject; + version: string; + + findPath(startPoint: Phaser.Point, goalPoint: Phaser.Point): Phaser.Plugin.AStar.AStarPath; + isWalkable(x: number, y: number): boolean; + setAStarMap(map: Phaser.Tilemap, layerName: string, tilesetName: string): Phaser.Plugin.AStar; + + } + + module AStar { + + class AStarNode { + + constructor(x: number, y: number, isWalkable: boolean); + + x: number; + y: number; + g: number; + h: number; + f: number; + parent: Phaser.Plugin.AStar.AStarNode; + travelCost: number; + walkable: boolean; + + } + + class AStarPath { + + constructor(nodes: Phaser.Plugin.AStar.AStarNode[], start: Phaser.Plugin.AStar.AStarNode, goal: Phaser.Plugin.AStar.AStarNode); + + nodes: Phaser.Plugin.AStar.AStarNode[]; + start: Phaser.Plugin.AStar.AStarNode; + goal: Phaser.Plugin.AStar.AStarNode; + visited: Phaser.Plugin.AStar.AStarNode[]; + + } + + } + + class ColorHarmony extends Phaser.Plugin { + + getAnalogousHarmony(color: number, threshold?: number): any; + getComplementHarmony(color: number): number; + getSplitComplementHarmony(color: number, threshold: number): any; + getTriadicHarmony(color: number): any; + + } + + class CSS3Filters extends Phaser.Plugin { + + constructor(parent: PIXI.DisplayObject); + + blur: number; + brightness: number; + contrast: number; + grayscale: number; + hueRotate: number; + invert: number; + opacity: number; + saturate: number; + sepia: number; + + } + + class TilemapWalker extends Phaser.Plugin { + + constructor(game: Phaser.Game, map: Phaser.Tilemap, layer?: any, x?: number, y?: number); + + collides: boolean; + game: Phaser.Game; + history: boolean; + facing: number; + map: Phaser.Tilemap; + location: Phaser.Point; + locationLayer: number; + + checkTile(x: number, y: number): boolean; + getTileFromLocation(x: number, y: number): Phaser.Tile; + getTiles(width: number, height: number, center?: boolean): any[]; + getTileBehind(distance?: number): Phaser.Tile; + getTileBehindLeft(distance?: number): Phaser.Tile; + getTileBehindRight(distance?: number): Phaser.Tile; + getTileAhead(distance?: number): Phaser.Tile; + getTileAheadLeft(distance?: number): Phaser.Tile; + getTileAheadRight(distance?: number): Phaser.Tile; + getTileLeft(distance: number): Phaser.Tile; + getTileRight(distance: number): Phaser.Tile; + moveForward(): boolean; + moveBackward(): boolean; + moveLeft(): boolean; + moveRight(): boolean; + putTile(index: number): void; + setLocation(x: number, y: number, layer?: any): boolean; + turnLeft(): void; + turnRight(): void; + updateLocation(x: number, y: number): boolean; + + } + + class SamplePlugin extends Phaser.Plugin { + + constructor(game: Phaser.Game, parent: PIXI.DisplayObject); + + addSprite(sprite: Phaser.Sprite): void; + update(): void; + + } + + class VirtualJoystick extends Phaser.Plugin { + + constructor(game: Phaser.Game, parent: any); + + angle: number; + base: Phaser.Sprite; + baseBMD: Phaser.BitmapData; + baseCircle: Phaser.Circle; + deltaX: number; + deltaY: number; + distance: number; + force: number; + isDragging: boolean; + limit: number; + limitPoint: Phaser.Point; + location: Phaser.Point; + nub: Phaser.Sprite; + nubBMD: Phaser.BitmapData; + speed: number; + x: number; + y: number; + + init(x: number, y: number, diameter?: number, limit?: number): void; + move(pointer: Phaser.Pointer, x: number, y: number): void; + render(): void; + setVelocity(sprite: Phaser.Sprite, minSpeed?: number, maxSpeed?: number): Phaser.Sprite; + startDrag(): void; + stopDrag(nub: Phaser.Sprite, pointer: Phaser.Pointer): void; + update(): void; + + } + + + + class Webcam extends Phaser.Plugin { + + constructor(game: Phaser.Game, parent: PIXI.DisplayObject); + + active: boolean; + context: any; + stream: any; + video: HTMLVideoElement; + + connectCallback: (stream: any) => void; + errorCallback: (e: any) => void; + grab: (context: any, x: number, y: number) => void; + start(width: number, height: number, context: any): void; + stop(): void; + update(): void; + } + + class Juicy extends Phaser.Plugin { + + constructor(game: Phaser.Game); + + createScreenFlash(color?: string): Phaser.Plugin.Juicy.ScreenFlash; + createTrail(length?: number, color?: number): Phaser.Plugin.Juicy.Trail; + overScale(object: Phaser.Sprite, scale?: number, initialScale?: Phaser.Point): void; + jelly(object: Phaser.Sprite, strength?: number, delay?: number, initialScale?: Phaser.Point): void; + mouseStretch(object: Phaser.Sprite, strength?: number, initialScale?: Phaser.Point): void; + update(): void; + shake(duration?: number, strength?: number): void; + } + + module Juicy { + + class Trail { + + constructor(game: Phaser.Game, trailLength?: number, color?: number); + + target: Phaser.Sprite; + trailLength: number; + trailWidth: number; + trailScaling: boolean; + trailColor: number; + + update(): void; + addSegment(x: number, y: number): void; + redrawSegments(offsetX: number, offsetY: number): void; + + } + + class ScreenFlash { + + constructor(game: Phaser.Game, color?: string); + + flash(maxAlpha?: number, duration?: number): void; + + } + } + } + + interface PluginConstructorOf { + new (...parameters: any[]): T; + } + /** * The Plugin Manager is responsible for the loading, running and unloading of Phaser Plugins. */ - class PluginManager implements IStateCycle { - + class PluginManager implements IStateCycle { + /** * The Plugin Manager is responsible for the loading, running and unloading of Phaser Plugins. * * @param game A reference to the currently running game. */ - constructor(game: Phaser.Game); - + constructor(game: Phaser.Game); + /** * A reference to the currently running game. */ - game: Phaser.Game; + game: Phaser.Game; /** * An array of all the plugins being managed by this PluginManager. */ - plugins: Phaser.Plugin[]; - + plugins: Phaser.Plugin[]; + /** * Add a new Plugin into the PluginManager. @@ -20439,31 +20894,31 @@ declare module Phaser { * @param args Additional arguments that will be passed to the Plugin.init method. * @return The Plugin that was added to the manager. */ - add(plugin: PluginConstructorOf, ...parameters: any[]): T; + add(plugin: PluginConstructorOf, ...parameters: any[]): T; /** * Clear down this PluginManager, calls destroy on every plugin and nulls out references. */ - destroy(): void; + destroy(): void; /** * Post-render is called after the Game Renderer and State.render have run. * It only calls plugins who have visible=true. */ - postRender(): void; + postRender(): void; /** * PostUpdate is the last thing to be called before the world render. * In particular, it is called after the world postUpdate, which means the camera has been adjusted. * It only calls plugins who have active=true. */ - postUpdate(): void; + postUpdate(): void; /** * Pre-update is called at the very start of the update cycle, before any other subsystems have been updated (including Physics). * It only calls plugins who have active=true. */ - preUpdate(): void; + preUpdate(): void; /** * Remove a Plugin from the PluginManager. It calls Plugin.destroy on the plugin before removing it from the manager. @@ -20471,27 +20926,27 @@ declare module Phaser { * @param plugin The plugin to be removed. * @param destroy Call destroy on the plugin that is removed? - Default: true */ - remove(plugin: Phaser.Plugin, destroy?: boolean): void; + remove(plugin: Phaser.Plugin, destroy?: boolean): void; /** * Remove all Plugins from the PluginManager. It calls Plugin.destroy on every plugin before removing it from the manager. */ - removeAll(): void; + removeAll(): void; /** * Render is called right after the Game Renderer completes, but before the State.render. * It only calls plugins who have visible=true. */ - render(): void; + render(): void; /** * Update is called after all the core subsystems (Input, Tweens, Sound, etc) and the State have updated, but before the render. * It only calls plugins who have active=true. */ - update(): void; - - } - + update(): void; + + } + /** * A Point object represents a location in a two-dimensional coordinate system, where x represents the horizontal axis and y represents the vertical axis. @@ -20499,8 +20954,8 @@ declare module Phaser { * `var myPoint = new Phaser.Point();` * You can also use them as 2D Vectors and you'll find different vector related methods in this class. */ - class Point extends PIXI.Point { - + class Point extends PIXI.Point { + /** * A Point object represents a location in a two-dimensional coordinate system, where x represents the horizontal axis and y represents the vertical axis. @@ -20511,24 +20966,24 @@ declare module Phaser { * @param x The horizontal position of this Point. * @param y The vertical position of this Point. */ - constructor(x?: number, y?: number); - + constructor(x?: number, y?: number); + /** * The x value of the point. */ - x: number; + x: number; /** * The y value of the point. */ - y: number; + y: number; /** * The const type of this object. */ - type: number; - + type: number; + /** * Adds the given x and y values to this Point. @@ -20537,7 +20992,7 @@ declare module Phaser { * @param y The value to add to Point.y. * @return This Point object. Useful for chaining method calls. */ - static add(a: Phaser.Point, b: Phaser.Point, out?: Phaser.Point): Phaser.Point; + static add(a: Phaser.Point, b: Phaser.Point, out?: Phaser.Point): Phaser.Point; /** * Subtracts the given x and y values from this Point. @@ -20546,7 +21001,7 @@ declare module Phaser { * @param y The value to subtract from Point.y. * @return This Point object. Useful for chaining method calls. */ - static subtract(a: Phaser.Point, b: Phaser.Point, out?: Phaser.Point): Phaser.Point; + static subtract(a: Phaser.Point, b: Phaser.Point, out?: Phaser.Point): Phaser.Point; /** * Multiplies Point.x and Point.y by the given x and y values. Sometimes known as `Scale`. @@ -20555,7 +21010,7 @@ declare module Phaser { * @param y The value to multiply Point.x by. * @return This Point object. Useful for chaining method calls. */ - static multiply(a: Phaser.Point, b: Phaser.Point, out?: Phaser.Point): Phaser.Point; + static multiply(a: Phaser.Point, b: Phaser.Point, out?: Phaser.Point): Phaser.Point; /** * Divides Point.x and Point.y by the given x and y values. @@ -20564,7 +21019,7 @@ declare module Phaser { * @param y The value to divide Point.x by. * @return This Point object. Useful for chaining method calls. */ - static divide(a: Phaser.Point, b: Phaser.Point, out?: Phaser.Point): Phaser.Point; + static divide(a: Phaser.Point, b: Phaser.Point, out?: Phaser.Point): Phaser.Point; /** * Determines whether the given objects x/y values are equal to this Point object. @@ -20572,7 +21027,7 @@ declare module Phaser { * @param a The object to compare with this Point. * @return A value of true if the x and y points are equal, otherwise false. */ - static equals(a: Phaser.Point, b: Phaser.Point): boolean; + static equals(a: Phaser.Point, b: Phaser.Point): boolean; /** * Returns the angle between this Point object and another object with public x and y properties. @@ -20581,8 +21036,8 @@ declare module Phaser { * @param asDegrees Is the given angle in radians (false) or degrees (true)? * @return The angle between the two objects. */ - static angle(a: Phaser.Point, b: Phaser.Point): number; - static angleSq(a: Phaser.Point, b: Phaser.Point): number; + static angle(a: Phaser.Point, b: Phaser.Point): number; + static angleSq(a: Phaser.Point, b: Phaser.Point): number; /** * Creates a negative Point. @@ -20591,7 +21046,7 @@ declare module Phaser { * @param out Optional Point to store the value in, if not supplied a new Point object will be created. * @return The new Point object. */ - static negative(a: Phaser.Point, out?: Phaser.Point): Phaser.Point; + static negative(a: Phaser.Point, out?: Phaser.Point): Phaser.Point; /** * Adds two 2D Points together and multiplies the result by the given scalar. @@ -20602,7 +21057,7 @@ declare module Phaser { * @param out Optional Point to store the value in, if not supplied a new Point object will be created. * @return The new Point object. */ - static multiplyAdd(a: Phaser.Point, b: Phaser.Point, scale: number, out?: Phaser.Point): Phaser.Point; + static multiplyAdd(a: Phaser.Point, b: Phaser.Point, scale: number, out?: Phaser.Point): Phaser.Point; /** * Interpolates the two given Points, based on the `f` value (between 0 and 1) and returns a new Point. @@ -20613,7 +21068,7 @@ declare module Phaser { * @param out Optional Point to store the value in, if not supplied a new Point object will be created. * @return The new Point object. */ - static interpolate(a: Phaser.Point, b: Phaser.Point, alpha: number, out?: Phaser.Point): Phaser.Point; + static interpolate(a: Phaser.Point, b: Phaser.Point, alpha: number, out?: Phaser.Point): Phaser.Point; /** * Parses an object for x and/or y properties and returns a new Phaser.Point with matching values. @@ -20624,19 +21079,19 @@ declare module Phaser { * @param yProp The property used to set the Point.y value. - Default: 'y' * @return The new Point object. */ - static parse(obj: any, xProp?: string, yProp?: string): Phaser.Point; + static parse(obj: any, xProp?: string, yProp?: string): Phaser.Point; /** * Make this Point perpendicular (90 degrees rotation) * @return This Point object. */ - static perp(a: Phaser.Point, out?: Phaser.Point): Phaser.Point; + static perp(a: Phaser.Point, out?: Phaser.Point): Phaser.Point; /** * Make this Point perpendicular (-90 degrees rotation) * @return This Point object. */ - static rperp(a: Phaser.Point, out?: Phaser.Point): Phaser.Point; + static rperp(a: Phaser.Point, out?: Phaser.Point): Phaser.Point; /** * Returns the distance of this Point object to the given object (can be a Circle, Point or anything with x/y properties) @@ -20645,7 +21100,7 @@ declare module Phaser { * @param round Round the distance to the nearest integer (default false). * @return The distance between this Point object and the destination Point object. */ - static distance(a: any, b: any, round?: boolean): number; + static distance(a: any, b: any, round?: boolean): number; /** * Project two Points onto another Point. @@ -20655,7 +21110,7 @@ declare module Phaser { * @param out Optional Point to store the value in, if not supplied a new Point object will be created. * @return The new Point object. */ - static project(a: Phaser.Point, b: Phaser.Point, out?: Phaser.Point): Phaser.Point; + static project(a: Phaser.Point, b: Phaser.Point, out?: Phaser.Point): Phaser.Point; /** * Project two Points onto a Point of unit length. @@ -20665,19 +21120,19 @@ declare module Phaser { * @param out Optional Point to store the value in, if not supplied a new Point object will be created. * @return The new Point object. */ - static projectUnit(a: Phaser.Point, b: Phaser.Point, out?: Phaser.Point): Phaser.Point; + static projectUnit(a: Phaser.Point, b: Phaser.Point, out?: Phaser.Point): Phaser.Point; /** * Right-hand normalize (make unit length) this Point. * @return This Point object. */ - static normalRightHand(a: Phaser.Point, out?: Phaser.Point): Phaser.Point; + static normalRightHand(a: Phaser.Point, out?: Phaser.Point): Phaser.Point; /** * Alters the Point object so that its length is 1, but it retains the same direction. * @return This Point object. */ - static normalize(a: Phaser.Point, out?: Phaser.Point): Phaser.Point; + static normalize(a: Phaser.Point, out?: Phaser.Point): Phaser.Point; /** * Rotates this Point around the x/y coordinates given to the desired angle. @@ -20689,7 +21144,7 @@ declare module Phaser { * @param distance An optional distance constraint between the Point and the anchor. * @return The modified point object. */ - static rotate(a: Phaser.Point, x: number, y: number, angle: number, asDegrees?: boolean, distance?: number): Phaser.Point; + static rotate(a: Phaser.Point, x: number, y: number, angle: number, asDegrees?: boolean, distance?: number): Phaser.Point; /** * Calculates centroid (or midpoint) from an array of points. If only one point is provided, that point is returned. @@ -20698,8 +21153,8 @@ declare module Phaser { * @param out Optional Point to store the value in, if not supplied a new Point object will be created. * @return The new Point object. */ - static centroid(points: Phaser.Point[], out?: Phaser.Point): Phaser.Point; - + static centroid(points: Phaser.Point[], out?: Phaser.Point): Phaser.Point; + /** * Adds the given x and y values to this Point. @@ -20708,7 +21163,7 @@ declare module Phaser { * @param y The value to add to Point.y. * @return This Point object. Useful for chaining method calls. */ - add(x: number, y: number): Phaser.Point; + add(x: number, y: number): Phaser.Point; /** * Returns the angle between this Point object and another object with public x and y properties. @@ -20717,8 +21172,8 @@ declare module Phaser { * @param asDegrees Is the given angle in radians (false) or degrees (true)? * @return The angle between the two objects. */ - angle(a: Phaser.Point, asDegrees?: boolean): number; - angleSq(a: Phaser.Point): number; + angle(a: Phaser.Point, asDegrees?: boolean): number; + angleSq(a: Phaser.Point): number; /** * Clamps this Point object values to be between the given min and max. @@ -20727,7 +21182,7 @@ declare module Phaser { * @param max The maximum value to clamp this Point to. * @return This Point object. */ - clamp(min: number, max: number): Phaser.Point; + clamp(min: number, max: number): Phaser.Point; /** * Clamps the x value of this Point to be between the given min and max. @@ -20736,7 +21191,7 @@ declare module Phaser { * @param max The maximum value to clamp this Point to. * @return This Point object. */ - clampX(min: number, max: number): Phaser.Point; + clampX(min: number, max: number): Phaser.Point; /** * Clamps the y value of this Point to be between the given min and max @@ -20745,7 +21200,7 @@ declare module Phaser { * @param max The maximum value to clamp this Point to. * @return This Point object. */ - clampY(min: number, max: number): Phaser.Point; + clampY(min: number, max: number): Phaser.Point; /** * Creates a copy of the given Point. @@ -20753,7 +21208,7 @@ declare module Phaser { * @param output Optional Point object. If given the values will be set into this object, otherwise a brand new Point object will be created and returned. * @return The new Point object. */ - clone(output?: Phaser.Point): Phaser.Point; + clone(output?: Phaser.Point): Phaser.Point; /** * Copies the x and y properties from any given object to this Point. @@ -20761,7 +21216,7 @@ declare module Phaser { * @param source The object to copy from. * @return This Point object. */ - copyFrom(source: Phaser.Point): Phaser.Point; + copyFrom(source: Phaser.Point): Phaser.Point; /** * Copies the x and y properties from this Point to any given object. @@ -20769,13 +21224,13 @@ declare module Phaser { * @param dest The object to copy to. * @return The dest object. */ - copyTo(dest: T): T; + copyTo(dest: T): T; /** * Math.ceil() both the x and y properties of this Point. * @return This Point object. */ - ceil(): Phaser.Point; + ceil(): Phaser.Point; /** * The cross product of this and another Point object. @@ -20783,7 +21238,7 @@ declare module Phaser { * @param a The Point object to get the cross product combined with this Point. * @return The result. */ - cross(a: Phaser.Point): number; + cross(a: Phaser.Point): number; /** * Divides Point.x and Point.y by the given x and y values. @@ -20792,7 +21247,7 @@ declare module Phaser { * @param y The value to divide Point.x by. * @return This Point object. Useful for chaining method calls. */ - divide(x: number, y: number): Phaser.Point; + divide(x: number, y: number): Phaser.Point; /** * Returns the distance of this Point object to the given object (can be a Circle, Point or anything with x/y properties) @@ -20801,7 +21256,7 @@ declare module Phaser { * @param round Round the distance to the nearest integer (default false). * @return The distance between this Point object and the destination Point object. */ - distance(dest: Phaser.Point, round?: boolean): number; + distance(dest: Phaser.Point, round?: boolean): number; /** * The dot product of this and another Point object. @@ -20809,7 +21264,7 @@ declare module Phaser { * @param a The Point object to get the dot product combined with this Point. * @return The result. */ - dot(a: Phaser.Point): number; + dot(a: Phaser.Point): number; /** * Determines whether the given objects x/y values are equal to this Point object. @@ -20817,37 +21272,37 @@ declare module Phaser { * @param a The object to compare with this Point. * @return A value of true if the x and y points are equal, otherwise false. */ - equals(a: Phaser.Point): boolean; + equals(a: Phaser.Point): boolean; /** * Math.floor() both the x and y properties of this Point. * @return This Point object. */ - floor(): Phaser.Point; + floor(): Phaser.Point; /** * Calculates the length of the Point object. * @return The length of the Point. */ - getMagnitude(): number; + getMagnitude(): number; /** * Calculates the length squared of the Point object. * @return The length ^ 2 of the Point. */ - getMagnitudeSq(): number; + getMagnitudeSq(): number; /** * Inverts the x and y values of this Point * @return This Point object. */ - invert(): Phaser.Point; + invert(): Phaser.Point; /** * Determine if this point is at 0,0. * @return True if this Point is 0,0, otherwise false. */ - isZero(): boolean; + isZero(): boolean; /** * Multiplies Point.x and Point.y by the given x and y values. Sometimes known as `Scale`. @@ -20856,31 +21311,31 @@ declare module Phaser { * @param y The value to multiply Point.x by. * @return This Point object. Useful for chaining method calls. */ - multiply(x: number, y: number): Phaser.Point; + multiply(x: number, y: number): Phaser.Point; /** * Alters the Point object so that its length is 1, but it retains the same direction. * @return This Point object. */ - normalize(): Phaser.Point; + normalize(): Phaser.Point; /** * Right-hand normalize (make unit length) this Point. * @return This Point object. */ - normalRightHand(): Phaser.Point; + normalRightHand(): Phaser.Point; /** * Make this Point perpendicular (90 degrees rotation) * @return This Point object. */ - perp(): Phaser.Point; + perp(): Phaser.Point; /** * Make this Point perpendicular (-90 degrees rotation) * @return This Point object. */ - rperp(): Phaser.Point; + rperp(): Phaser.Point; /** * Rotates this Point around the x/y coordinates given to the desired angle. @@ -20892,7 +21347,7 @@ declare module Phaser { * @param distance An optional distance constraint between the Point and the anchor. * @return The modified point object. */ - rotate(x: number, y: number, angle: number, asDegrees?: boolean, distance?: number): Phaser.Point; + rotate(x: number, y: number, angle: number, asDegrees?: boolean, distance?: number): Phaser.Point; /** * Sets the `x` and `y` values of this Point object to the given values. @@ -20903,7 +21358,7 @@ declare module Phaser { * @param y The vertical value of this point. If not given the x value will be used in its place. * @return This Point object. Useful for chaining method calls. */ - set(x: number, y?: number): Phaser.Point; + set(x: number, y?: number): Phaser.Point; /** * Alters the length of the Point without changing the direction. @@ -20911,7 +21366,7 @@ declare module Phaser { * @param magnitude The desired magnitude of the resulting Point. * @return This Point object. */ - setMagnitude(magnitude: number): Phaser.Point; + setMagnitude(magnitude: number): Phaser.Point; /** * Sets the `x` and `y` values of this Point object to the given values. @@ -20922,7 +21377,7 @@ declare module Phaser { * @param y The vertical value of this point. If not given the x value will be used in its place. * @return This Point object. Useful for chaining method calls. */ - setTo(x: number, y?: number): Phaser.Point; + setTo(x: number, y?: number): Phaser.Point; /** * Subtracts the given x and y values from this Point. @@ -20931,22 +21386,22 @@ declare module Phaser { * @param y The value to subtract from Point.y. * @return This Point object. Useful for chaining method calls. */ - subtract(x: number, y: number): Phaser.Point; + subtract(x: number, y: number): Phaser.Point; /** * Returns a string representation of this object. * @return A string representation of the instance. */ - toString(): string; - - } - + toString(): string; + + } + /** * A Pointer object is used by the Mouse, Touch and MSPoint managers and represents a single finger on the touch screen. */ - class Pointer { - + class Pointer { + /** * A Pointer object is used by the Mouse, Touch and MSPoint managers and represents a single finger on the touch screen. @@ -20955,51 +21410,51 @@ declare module Phaser { * @param id The ID of the Pointer object within the game. Each game can have up to 10 active pointers. * @param pointerMode The operational mode of this pointer, eg. CURSOR or TOUCH. - Default: (CURSOR|CONTACT) */ - constructor(game: Phaser.Game, id: number, pointerMode?: number); - + constructor(game: Phaser.Game, id: number, pointerMode?: number); + /** * No buttons at all. */ - static NO_BUTTON: number; + static NO_BUTTON: number; /** * The Left Mouse button, or in PointerEvent devices a Touch contact or Pen contact. */ - static LEFT_BUTTON: number; + static LEFT_BUTTON: number; /** * The Right Mouse button, or in PointerEvent devices a Pen contact with a barrel button. */ - static RIGHT_BUTTON: number; + static RIGHT_BUTTON: number; /** * The Middle Mouse button. */ - static MIDDLE_BUTTON: number; + static MIDDLE_BUTTON: number; /** * The X1 button. This is typically the mouse Back button, but is often reconfigured. * On Linux (GTK) this is unsupported. On Windows if advanced pointer software (such as IntelliPoint) is installed this doesn't register. */ - static BACK_BUTTON: number; + static BACK_BUTTON: number; /** * The X2 button. This is typically the mouse Forward button, but is often reconfigured. * On Linux (GTK) this is unsupported. On Windows if advanced pointer software (such as IntelliPoint) is installed this doesn't register. */ - static FORWARD_BUTTON: number; + static FORWARD_BUTTON: number; /** * The Eraser pen button on PointerEvent supported devices only. */ - static ERASER_BUTTON: number; - + static ERASER_BUTTON: number; + /** * An active pointer is one that is currently pressed down on the display. A Mouse is always active. */ - active: boolean; + active: boolean; /** * If this Pointer is a Mouse or Pen / Stylus then you can access its X1 (back) button directly through this property. @@ -21009,42 +21464,42 @@ declare module Phaser { * * Please see the DeviceButton docs for details on browser button limitations. */ - backButton: Phaser.DeviceButton; + backButton: Phaser.DeviceButton; /** * The button property of the most recent DOM event when this Pointer is started. * You should not rely on this value for accurate button detection, instead use the Pointer properties * `leftButton`, `rightButton`, `middleButton` and so on. */ - button: any; + button: any; /** * A Phaser.Circle that is centered on the x/y coordinates of this pointer, useful for hit detection. * The Circle size is 44px (Apples recommended "finger tip" size). */ - circle: Phaser.Circle; + circle: Phaser.Circle; /** * The horizontal coordinate of the Pointer within the application's client area at which the event occurred (as opposed to the coordinates within the page). */ - clientX: number; + clientX: number; /** * The vertical coordinate of the Pointer within the application's client area at which the event occurred (as opposed to the coordinates within the page). */ - clientY: number; + clientY: number; /** * A dirty pointer needs to re-poll any interactive objects it may have been over, regardless if it has moved or not. */ - dirty: boolean; + dirty: boolean; /** * How long the Pointer has been depressed on the touchscreen or *any* of the mouse buttons have been held down. * If not currently down it returns -1. * If you need to test a specific mouse or pen button then access the buttons directly, i.e. `Pointer.rightButton.duration`. */ - duration: number; + duration: number; /** * If this Pointer is a Pen / Stylus then you can access its eraser button directly through this property. @@ -21054,14 +21509,14 @@ declare module Phaser { * * Please see the DeviceButton docs for details on browser button limitations. */ - eraserButton: Phaser.DeviceButton; + eraserButton: Phaser.DeviceButton; /** * A Pointer object that exists is allowed to be checked for physics collisions and overlaps. * Default: true */ - exists: boolean; - forceOut: boolean; + exists: boolean; + forceOut: boolean; /** * If this Pointer is a Mouse or Pen / Stylus then you can access its X2 (forward) button directly through this property. @@ -21071,23 +21526,23 @@ declare module Phaser { * * Please see the DeviceButton docs for details on browser button limitations. */ - forwardButton: Phaser.DeviceButton; + forwardButton: Phaser.DeviceButton; /** * A reference to the currently running game. */ - game: Phaser.Game; - justReleasePreventsOver: boolean | number; + game: Phaser.Game; + justReleasePreventsOver: boolean | number; /** * The ID of the Pointer object within the game. Each game can have up to 10 active pointers. */ - id: number; + id: number; /** * The identifier property of the Pointer as set by the DOM event when this Pointer is started. */ - identifier: number; + identifier: number; /** * This array is erased and re-populated every time this Pointer is updated. It contains references to all @@ -21097,25 +21552,25 @@ declare module Phaser { * every frame. * Default: [] */ - interactiveCandidates: Phaser.InputHandler[]; + interactiveCandidates: Phaser.InputHandler[]; /** * If the Pointer is touching the touchscreen, or *any* mouse or pen button is held down, isDown is set to true. * If you need to check a specific mouse or pen button then use the button properties, i.e. Pointer.rightButton.isDown. */ - isDown: boolean; + isDown: boolean; /** * If the Pointer is a mouse or pen / stylus this is true, otherwise false. */ - isMouse: boolean; + isMouse: boolean; /** * If the Pointer is not touching the touchscreen, or *all* mouse or pen buttons are up, isUp is set to true. * If you need to check a specific mouse or pen button then use the button properties, i.e. Pointer.rightButton.isUp. * Default: true */ - isUp: boolean; + isUp: boolean; /** * If this Pointer is a Mouse or Pen / Stylus then you can access its left button directly through this property. @@ -21123,7 +21578,7 @@ declare module Phaser { * The DeviceButton has its own properties such as `isDown`, `duration` and methods like `justReleased` for more fine-grained * button control. */ - leftButton: Phaser.DeviceButton; + leftButton: Phaser.DeviceButton; /** * If this Pointer is a Mouse or Pen / Stylus then you can access its middle button directly through this property. @@ -21133,72 +21588,72 @@ declare module Phaser { * * Please see the DeviceButton docs for details on browser button limitations. */ - middleButton: Phaser.DeviceButton; + middleButton: Phaser.DeviceButton; /** * The horizontal processed relative movement of the Pointer in pixels since last event. */ - movementX: number; + movementX: number; /** * The vertical processed relative movement of the Pointer in pixels since last event. */ - movementY: number; + movementY: number; /** * The number of milliseconds since the last click or touch event. */ - msSinceLastClick: number; + msSinceLastClick: number; /** * The horizontal coordinate of the Pointer relative to whole document. */ - pageX: number; + pageX: number; /** * The vertical coordinate of the Pointer relative to whole document. */ - pageY: number; + pageY: number; /** * The pointerId property of the Pointer as set by the DOM event when this Pointer is started. The browser can and will recycle this value. */ - pointerId: number; + pointerId: number; /** * The operational mode of this pointer. */ - pointerMode: number; + pointerMode: number; /** * A Phaser.Point object containing the current x/y values of the pointer on the display. */ - position: Phaser.Point; + position: Phaser.Point; /** * A Phaser.Point object containing the x/y values of the pointer when it was last in a down state on the display. */ - positionDown: Phaser.Point; + positionDown: Phaser.Point; /** * A Phaser.Point object containing the x/y values of the pointer when it was last released. */ - positionUp: Phaser.Point; + positionUp: Phaser.Point; /** * A timestamp representing when the Pointer was last tapped or clicked. */ - previousTapTime: number; + previousTapTime: number; /** * The horizontal raw relative movement of the Pointer in pixels since last event. */ - rawMovementX: number; + rawMovementX: number; /** * The vertical raw relative movement of the Pointer in pixels since last event. */ - rawMovementY: number; + rawMovementY: number; /** * If this Pointer is a Mouse or Pen / Stylus then you can access its right button directly through this property. @@ -21208,73 +21663,73 @@ declare module Phaser { * * Please see the DeviceButton docs for details on browser button limitations. */ - rightButton: Phaser.DeviceButton; + rightButton: Phaser.DeviceButton; /** * The horizontal coordinate of the Pointer relative to the screen. */ - screenX: number; + screenX: number; /** * The vertical coordinate of the Pointer relative to the screen. */ - screenY: number; + screenY: number; /** * The target property of the Pointer as set by the DOM event when this Pointer is started. */ - target: any; + target: any; /** * The Game Object this Pointer is currently over / touching / dragging. */ - targetObject: any; + targetObject: any; /** * A timestamp representing when the Pointer first touched the touchscreen. */ - timeDown: number; + timeDown: number; /** * A timestamp representing when the Pointer left the touchscreen. */ - timeUp: number; + timeUp: number; /** * The total number of times this Pointer has been touched to the touchscreen. */ - totalTouches: number; + totalTouches: number; /** * The const type of this object. */ - type: number; + type: number; /** * true if the Pointer is over the game canvas, otherwise false. */ - withinGame: boolean; + withinGame: boolean; /** * Gets the X value of this Pointer in world coordinates based on the world camera. */ - worldX: number; + worldX: number; /** * Gets the Y value of this Pointer in world coordinates based on the world camera. */ - worldY: number; + worldY: number; /** * The horizontal coordinate of the Pointer. This value is automatically scaled based on the game scale. */ - x: number; + x: number; /** * The vertical coordinate of the Pointer. This value is automatically scaled based on the game scale. */ - y: number; - + y: number; + /** * Add a click trampoline to this pointer. @@ -21291,7 +21746,7 @@ declare module Phaser { * @param callbackContext Context of the callback. * @param callbackArgs Additional callback args, if any. Supplied as an array. */ - addClickTrampoline(name: string, callback: Function, callbackContext: any, ...callbackArgs: any[]): void; + addClickTrampoline(name: string, callback: Function, callbackContext: any, ...callbackArgs: any[]): void; /** * The Pointer is considered justPressed if the time it was pressed onto the touchscreen or clicked is less than justPressedRate. @@ -21301,7 +21756,7 @@ declare module Phaser { * @param duration The time to check against. If none given it will use InputManager.justPressedRate. * @return true if the Pointer was pressed down within the duration given. */ - justPressed(duration?: number): boolean; + justPressed(duration?: number): boolean; /** * The Pointer is considered justReleased if the time it left the touchscreen is less than justReleasedRate. @@ -21311,14 +21766,14 @@ declare module Phaser { * @param duration The time to check against. If none given it will use InputManager.justReleasedRate. * @return true if the Pointer was released within the duration given. */ - justReleased(duration?: number): boolean; + justReleased(duration?: number): boolean; /** * Called when the Pointer leaves the target area. * * @param event The event passed up from the input handler. */ - leave(event: any): void; + leave(event: any): void; /** * Called when the Pointer is moved. @@ -21326,36 +21781,36 @@ declare module Phaser { * @param event The event passed up from the input handler. * @param fromClick Was this called from the click event? */ - move(event: any, fromClick?: boolean): void; + move(event: any, fromClick?: boolean): void; /** * Resets the Pointer properties. Called by InputManager.reset when you perform a State change. */ - reset(): void; + reset(): void; /** * Resets the states of all the button booleans. */ - resetButtons(): void; + resetButtons(): void; /** * Resets the movementX and movementY properties. Use in your update handler after retrieving the values. */ - resetMovement(): void; + resetMovement(): void; /** * Called when the Pointer is pressed onto the touchscreen. * * @param event The DOM event from the browser. */ - start(event: any): void; + start(event: any): void; /** * Called when the Pointer leaves the touchscreen. * * @param event The event passed up from the input handler. */ - stop(event: any): void; + stop(event: any): void; /** * This will change the `Pointer.targetObject` object to be the one provided. @@ -21368,12 +21823,12 @@ declare module Phaser { * @param newTarget The new target for this Pointer. Note this is an `InputHandler`, so don't pass a Sprite, instead pass `sprite.input` to it. * @param silent If true the new target AND the old one will NOT dispatch their `onInputOver` or `onInputOut` events. */ - swapTarget(newTarget: Phaser.InputHandler, silent?: boolean): void; + swapTarget(newTarget: Phaser.InputHandler, silent?: boolean): void; /** * Called by the Input Manager. */ - update(): void; + update(): void; /** * Called when the event.buttons property changes from zero. @@ -21381,10 +21836,10 @@ declare module Phaser { * * @param event The DOM event. */ - updateButtons(event: MouseEvent): void; - - } - + updateButtons(event: MouseEvent): void; + + } + /** * Creates a new Polygon. @@ -21398,8 +21853,8 @@ declare module Phaser { * - As separate objects with public x/y properties arguments: `setTo(obj1, obj2, ...)` * - As separate arguments representing point coordinates: `setTo(x1,y1, x2,y2, ...)` */ - class Polygon { - + class Polygon { + /** * Creates a new Polygon. @@ -21415,7 +21870,7 @@ declare module Phaser { * * @param points The points to set. */ - constructor(points: Phaser.Point[] | number[]); + constructor(points: Phaser.Point[] | number[]); /** * Creates a new Polygon. @@ -21431,7 +21886,7 @@ declare module Phaser { * * @param points The points to set. */ - constructor(...points: Phaser.Point[]); + constructor(...points: Phaser.Point[]); /** * Creates a new Polygon. @@ -21447,26 +21902,31 @@ declare module Phaser { * * @param points The points to set. */ - constructor(...points: number[]); - + constructor(...points: number[]); + /** * The area of this Polygon. */ - area: number; + area: number; + + /** + * Has this Polygon been flattened by a call to `Polygon.flatten` ? + */ + flattened: boolean; /** * Sets and modifies the points of this polygon. * * See {@link Phaser.Polygon#setTo setTo} for the different kinds of arrays formats that can be assigned. The array of vertex points. */ - points: number[] | Phaser.Point[]; + points: number[] | Phaser.Point[]; /** * The base object type. */ - type: number; - + type: number; + /** * Creates a copy of the given Polygon. @@ -21475,7 +21935,7 @@ declare module Phaser { * @param output The polygon to update. If not specified a new polygon will be created. - Default: (new Polygon) * @return The cloned (`output`) polygon object. */ - clone(output: Phaser.Polygon): Phaser.Polygon; + clone(output: Phaser.Polygon): Phaser.Polygon; /** * Checks whether the x and y coordinates are contained within this polygon. @@ -21484,13 +21944,15 @@ declare module Phaser { * @param y The Y value of the coordinate to test. * @return True if the coordinates are within this polygon, otherwise false. */ - contains(x: number, y: number): boolean; + contains(x: number, y: number): boolean; /** - * Flattens this Polygon so the points are a sequence of numbers. Any Point objects found are removed and replaced with two numbers. + * Flattens this Polygon so the points are a sequence of numbers. + * Any Point objects found are removed and replaced with two numbers. + * Also sets the Polygon.flattened property to `true`. * @return This Polygon object */ - flatten(): Phaser.Polygon; + flatten(): Phaser.Polygon; /** * Sets this Polygon to the given points. @@ -21510,7 +21972,7 @@ declare module Phaser { * @param points The points to set. * @return This Polygon object */ - setTo(points: Phaser.Point[] | number[]): void; + setTo(points: Phaser.Point[] | number[]): void; /** * Sets this Polygon to the given points. @@ -21530,7 +21992,7 @@ declare module Phaser { * @param points The points to set. * @return This Polygon object */ - setTo(...points: Phaser.Point[]): void; + setTo(...points: Phaser.Point[]): void; /** * Sets this Polygon to the given points. @@ -21550,7 +22012,7 @@ declare module Phaser { * @param points The points to set. * @return This Polygon object */ - setTo(...points: number[]): void; + setTo(...points: number[]): void; /** * Export the points as an array of flat numbers, following the sequence [ x,y, x,y, x,y ] @@ -21558,18 +22020,18 @@ declare module Phaser { * @param output The array to append the points to. If not specified a new array will be created. * @return The flattened array. */ - toNumberArray(output?: number[]): number[]; - - } - + toNumberArray(output?: number[]): number[]; + + } + /** * A QuadTree implementation. The original code was a conversion of the Java code posted to GameDevTuts. * However I've tweaked it massively to add node indexing, removed lots of temp. var creation and significantly increased performance as a result. * Original version at https://github.com/timohausmann/quadtree-js/ */ - class QuadTree { - + class QuadTree { + /** * A QuadTree implementation. The original code was a conversion of the Java code posted to GameDevTuts. @@ -21584,55 +22046,55 @@ declare module Phaser { * @param maxLevels The maximum number of levels to iterate to. - Default: 4 * @param level Which level is this? */ - constructor(x: number, y: number, width: number, height: number, maxObject?: number, maxLevels?: number, level?: number); - + constructor(x: number, y: number, width: number, height: number, maxObject?: number, maxLevels?: number, level?: number); + /** * Object that contains the quadtree bounds. */ - bounds: { - x: number; - y: number; - width: number; - height: number; - subWidth: number; - subHeight: number; - right: number; - bottom: number; - }; + bounds: { + x: number; + y: number; + width: number; + height: number; + subWidth: number; + subHeight: number; + right: number; + bottom: number; + }; /** * The current level. */ - level: number; + level: number; /** * The maximum number of objects per node. * Default: 10 */ - maxObjects: number; + maxObjects: number; /** * The maximum number of levels to break down to. * Default: 4 */ - maxLevels: number; + maxLevels: number; /** * Array of quadtree children. */ - objects: any[]; + objects: any[]; /** * Array of associated child nodes. */ - nodes: any[]; - + nodes: any[]; + /** * Clear the quadtree. */ - clear(): void; + clear(): void; /** * Determine which node the object belongs to. @@ -21640,28 +22102,28 @@ declare module Phaser { * @param rect The bounds in which to check. * @return index - Index of the subnode (0-3), or -1 if rect cannot completely fit within a subnode and is part of the parent node. */ - getIndex(rect: any): number; + getIndex(rect: any): number; /** * Insert the object into the node. If the node exceeds the capacity, it will split and add all objects to their corresponding subnodes. * * @param body The Body object to insert into the quadtree. Can be any object so long as it exposes x, y, right and bottom properties. */ - insert(body: any): void; + insert(body: any): void; /** * Populates this quadtree with the children of the given Group. In order to be added the child must exist and have a body property. * * @param group The Group to add to the quadtree. */ - populate(group: Phaser.Group): void; + populate(group: Phaser.Group): void; /** * Handler for the populate method. * * @param sprite The Sprite to check. */ - populateHandler(sprite: Phaser.Sprite): void; + populateHandler(sprite: Phaser.Sprite): void; /** * Resets the QuadTree. @@ -21674,7 +22136,7 @@ declare module Phaser { * @param maxLevels The maximum number of levels to iterate to. - Default: 4 * @param level Which level is this? */ - reset(x: number, y: number, width: number, height: number, maxObject?: number, maxLevels?: number, level?: number): void; + reset(x: number, y: number, width: number, height: number, maxObject?: number, maxLevels?: number, level?: number): void; /** * Return all objects that could collide with the given Sprite or Rectangle. @@ -21682,15 +22144,15 @@ declare module Phaser { * @param source The source object to check the QuadTree against. Either a Sprite or Rectangle. * @return - Array with all detected objects. */ - retrieve(source: any): any[]; + retrieve(source: any): any[]; /** * Split the node into 4 subnodes */ - split(): void; - - } - + split(): void; + + } + /** * An extremely useful repeatable random data generator. @@ -21702,8 +22164,8 @@ declare module Phaser { * - https://github.com/nquinlan/better-random-numbers-for-javascript-mirror * - http://baagoe.org/en/wiki/Better_random_numbers_for_javascript (original, perm. 404) */ - class RandomDataGenerator { - + class RandomDataGenerator { + /** * An extremely useful repeatable random data generator. @@ -21717,14 +22179,14 @@ declare module Phaser { * * @param seeds An array of values to use as the seed, or a generator state (from {#state}). */ - constructor(seeds: any[] | string); - + constructor(seeds: any[] | string); + /** * Returns a random angle between -180 and 180. * @return A random number between -180 and 180. */ - angle(): number; + angle(): number; /** * Returns a random integer between and including min and max. @@ -21734,19 +22196,19 @@ declare module Phaser { * @param max The maximum value in the range. * @return A random number between min and max. */ - between(min: number, max: number): number; + between(min: number, max: number): number; /** * Returns a random real number between 0 and 1. * @return A random real number between 0 and 1. */ - frac(): number; + frac(): number; /** * Returns a random integer between 0 and 2^32. * @return A random integer between 0 and 2^32. */ - integer(): number; + integer(): number; /** * Returns a random integer between and including min and max. @@ -21755,13 +22217,13 @@ declare module Phaser { * @param max The maximum value in the range. * @return A random number between min and max. */ - integerInRange(min: number, max: number): number; + integerInRange(min: number, max: number): number; /** * Returns a random real number between -1 and 1. * @return A random real number between -1 and 1. */ - normal(): number; + normal(): number; /** * Returns a random member of `array`. @@ -21769,13 +22231,13 @@ declare module Phaser { * @param ary An Array to pick a random member of. * @return A random member of the array. */ - pick(ary: T[]): T; + pick(ary: T[]): T; /** * Returns a random real number between 0 and 2^32. * @return A random real number between 0 and 2^32. */ - real(): number; + real(): number; /** * Returns a random real number between min and max. @@ -21784,13 +22246,13 @@ declare module Phaser { * @param max The maximum value in the range. * @return A random number between min and max. */ - realInRange(min: number, max: number): number; + realInRange(min: number, max: number): number; /** * Returns a sign to be used with multiplication operator. * @return -1 or +1. */ - sign(): number; + sign(): number; /** * Reset the seed of the random data generator. @@ -21799,7 +22261,7 @@ declare module Phaser { * * @param seeds The array of seeds: the `toString()` of each value is used. */ - sow(seeds: any[]): void; + sow(seeds: any[]): void; /** * Gets or Sets the state of the generator. This allows you to retain the values @@ -21817,7 +22279,7 @@ declare module Phaser { * @param state Generator state to be set. * @return The current state of the generator. */ - state(state?: string): string; + state(state?: string): string; /** * Returns a random timestamp between min and max, or between the beginning of 2000 and the end of 2020 if min and max aren't specified. @@ -21826,13 +22288,13 @@ declare module Phaser { * @param max The maximum value in the range. * @return A random timestamp between min and max. */ - timestamp(min: number, max: number): number; + timestamp(min: number, max: number): number; /** * Returns a valid RFC4122 version4 ID hex string from https://gist.github.com/1308368 * @return A valid RFC4122 version4 ID hex string */ - uuid(): number; + uuid(): number; /** * Returns a random member of `array`, favoring the earlier entries. @@ -21840,17 +22302,17 @@ declare module Phaser { * @param ary An Array to pick a random member of. * @return A random member of the array. */ - weightedPick(ary: T[]): T; - - } - + weightedPick(ary: T[]): T; + + } + /** * Creates a new Rectangle object with the top-left corner specified by the x and y parameters and with the specified width and height parameters. * If you call this function without parameters, a Rectangle with x, y, width, and height properties set to 0 is created. */ - class Rectangle { - + class Rectangle { + /** * Creates a new Rectangle object with the top-left corner specified by the x and y parameters and with the specified width and height parameters. @@ -21861,121 +22323,121 @@ declare module Phaser { * @param width The width of the Rectangle. Should always be either zero or a positive value. * @param height The height of the Rectangle. Should always be either zero or a positive value. */ - constructor(x: number, y: number, width: number, height: number); - + constructor(x: number, y: number, width: number, height: number); + /** * The sum of the y and height properties. Changing the bottom property of a Rectangle object has no effect on the x, y and width properties, but does change the height property. */ - bottom: number; + bottom: number; /** * The location of the Rectangles bottom right corner as a Point object. Gets or sets the location of the Rectangles bottom right corner as a Point object. */ - bottomRight: Phaser.Point; + bottomRight: Phaser.Point; /** * The location of the Rectangles bottom left corner as a Point object. Gets or sets the location of the Rectangles bottom left corner as a Point object. */ - bottomLeft: Phaser.Point; + bottomLeft: Phaser.Point; /** * The x coordinate of the center of the Rectangle. */ - centerX: number; + centerX: number; /** * The y coordinate of the center of the Rectangle. */ - centerY: number; + centerY: number; /** * Determines whether or not this Rectangle object is empty. A Rectangle object is empty if its width or height is less than or equal to 0. * If set to true then all of the Rectangle properties are set to 0. Gets or sets the Rectangles empty state. */ - empty: boolean; + empty: boolean; /** * Half of the height of the Rectangle. */ - halfHeight: number; + halfHeight: number; /** * Half of the width of the Rectangle. */ - halfWidth: number; + halfWidth: number; /** * The height of the Rectangle. This value should never be set to a negative. */ - height: number; + height: number; /** * The x coordinate of the left of the Rectangle. Changing the left property of a Rectangle object has no effect on the y and height properties. However it does affect the width property, whereas changing the x value does not affect the width property. */ - left: number; + left: number; /** * The perimeter size of the Rectangle. This is the sum of all 4 sides. */ - perimeter: number; + perimeter: number; /** * A random value between the left and right values (inclusive) of the Rectangle. */ - randomX: number; + randomX: number; /** * A random value between the top and bottom values (inclusive) of the Rectangle. */ - randomY: number; + randomY: number; /** * The sum of the x and width properties. Changing the right property of a Rectangle object has no effect on the x, y and height properties, however it does affect the width property. */ - right: number; + right: number; /** * The y coordinate of the top of the Rectangle. Changing the top property of a Rectangle object has no effect on the x and width properties. * However it does affect the height property, whereas changing the y value does not affect the height property. */ - top: number; + top: number; /** * The location of the Rectangles top left corner as a Point object. */ - topLeft: Phaser.Point; + topLeft: Phaser.Point; /** * The location of the Rectangles top right corner as a Point object. The location of the Rectangles top left corner as a Point object. */ - topRight: Phaser.Point; + topRight: Phaser.Point; /** * The const type of this object. */ - type: number; + type: number; /** * The volume of the Rectangle derived from width * height. */ - volume: number; + volume: number; /** * The width of the Rectangle. This value should never be set to a negative. */ - width: number; + width: number; /** * The x coordinate of the top-left corner of the Rectangle. */ - x: number; + x: number; /** * The y coordinate of the top-left corner of the Rectangle. */ - y: number; - + y: number; + /** * Calculates the Axis Aligned Bounding Box (or aabb) from an array of points. @@ -21984,14 +22446,14 @@ declare module Phaser { * @param out Optional Rectangle to store the value in, if not supplied a new Rectangle object will be created. * @return The new Rectangle object. */ - static aabb(points: Phaser.Point[], out?: Phaser.Rectangle): Phaser.Rectangle; + static aabb(points: Phaser.Point[], out?: Phaser.Rectangle): Phaser.Rectangle; /** * Returns a new Rectangle object with the same values for the x, y, width, and height properties as the original Rectangle object. * * @param output Optional Rectangle object. If given the values will be set into the object, otherwise a brand new Rectangle object will be created and returned. */ - static clone(a: Phaser.Rectangle, output?: Phaser.Rectangle): Phaser.Rectangle; + static clone(a: Phaser.Rectangle, output?: Phaser.Rectangle): Phaser.Rectangle; /** * Determines whether the specified coordinates are contained within the region defined by this Rectangle object. @@ -22000,7 +22462,7 @@ declare module Phaser { * @param y The y coordinate of the point to test. * @return A value of true if the Rectangle object contains the specified point; otherwise false. */ - static contains(a: Phaser.Rectangle, x: number, y: number): boolean; + static contains(a: Phaser.Rectangle, x: number, y: number): boolean; /** * Determines whether the specified point is contained within the rectangular region defined by this Rectangle object. This method is similar to the Rectangle.contains() method, except that it takes a Point object as a parameter. @@ -22009,7 +22471,7 @@ declare module Phaser { * @param point The point object being checked. Can be Point or any object with .x and .y values. * @return A value of true if the Rectangle object contains the specified point; otherwise false. */ - static containsPoint(a: Phaser.Rectangle, point: Phaser.Point): boolean; + static containsPoint(a: Phaser.Rectangle, point: Phaser.Point): boolean; /** * Determines whether the specified coordinates are contained within the region defined by the given raw values. @@ -22022,7 +22484,7 @@ declare module Phaser { * @param y The y coordinate of the point to test. * @return A value of true if the Rectangle object contains the specified point; otherwise false. */ - static containsRaw(rx: number, ry: number, rw: number, rh: number, x: number, y: number): boolean; + static containsRaw(rx: number, ry: number, rw: number, rh: number, x: number, y: number): boolean; /** * Determines whether the first Rectangle object is fully contained within the second Rectangle object. @@ -22031,7 +22493,7 @@ declare module Phaser { * @param b The second Rectangle object. * @return A value of true if the Rectangle object contains the specified point; otherwise false. */ - static containsRect(a: Phaser.Rectangle, b: Phaser.Rectangle): boolean; + static containsRect(a: Phaser.Rectangle, b: Phaser.Rectangle): boolean; /** * Determines whether the two Rectangles are equal. @@ -22040,7 +22502,7 @@ declare module Phaser { * @param b The second Rectangle object. * @return A value of true if the two Rectangles have exactly the same values for the x, y, width and height properties; otherwise false. */ - static equals(a: Phaser.Rectangle, b: Phaser.Rectangle): boolean; + static equals(a: Phaser.Rectangle, b: Phaser.Rectangle): boolean; /** * Increases the size of the Rectangle object by the specified amounts. The center point of the Rectangle object stays the same, and its size increases to the left and right by the dx value, and to the top and the bottom by the dy value. @@ -22049,7 +22511,7 @@ declare module Phaser { * @param dy The amount to be added to the bottom side of the Rectangle. * @return This Rectangle object. */ - static inflate(a: Phaser.Rectangle, dx: number, dy: number): Phaser.Rectangle; + static inflate(a: Phaser.Rectangle, dx: number, dy: number): Phaser.Rectangle; /** * Increases the size of the Rectangle object. This method is similar to the Rectangle.inflate() method except it takes a Point object as a parameter. @@ -22058,7 +22520,7 @@ declare module Phaser { * @param point The x property of this Point object is used to increase the horizontal dimension of the Rectangle object. The y property is used to increase the vertical dimension of the Rectangle object. * @return The Rectangle object. */ - static inflatePoint(a: Phaser.Rectangle, point: Phaser.Point): Phaser.Rectangle; + static inflatePoint(a: Phaser.Rectangle, point: Phaser.Point): Phaser.Rectangle; /** * If the Rectangle object specified in the toIntersect parameter intersects with this Rectangle object, returns the area of intersection as a Rectangle object. If the Rectangles do not intersect, this method returns an empty Rectangle object with its properties set to 0. @@ -22067,7 +22529,7 @@ declare module Phaser { * @param out Optional Rectangle object. If given the intersection values will be set into this object, otherwise a brand new Rectangle object will be created and returned. * @return A Rectangle object that equals the area of intersection. If the Rectangles do not intersect, this method returns an empty Rectangle object; that is, a Rectangle with its x, y, width, and height properties set to 0. */ - static intersection(a: Phaser.Rectangle, b: Phaser.Rectangle, out?: Phaser.Rectangle): Phaser.Rectangle; + static intersection(a: Phaser.Rectangle, b: Phaser.Rectangle, out?: Phaser.Rectangle): Phaser.Rectangle; /** * Determines whether this Rectangle and another given Rectangle intersect with each other. @@ -22076,7 +22538,7 @@ declare module Phaser { * @param b The second Rectangle object. * @return A value of true if the specified object intersects with this Rectangle object; otherwise false. */ - static intersects(a: Phaser.Rectangle, b: Phaser.Rectangle): boolean; + static intersects(a: Phaser.Rectangle, b: Phaser.Rectangle): boolean; /** * Determines whether the coordinates given intersects (overlaps) with this Rectangle. @@ -22088,7 +22550,7 @@ declare module Phaser { * @param tolerance A tolerance value to allow for an intersection test with padding, default to 0 * @return A value of true if the specified object intersects with the Rectangle; otherwise false. */ - static intersectsRaw(left: number, right: number, top: number, bottom: number, tolerance: number): boolean; + static intersectsRaw(left: number, right: number, top: number, bottom: number, tolerance: number): boolean; /** * The size of the Rectangle object, expressed as a Point object with the values of the width and height properties. @@ -22096,7 +22558,7 @@ declare module Phaser { * @param output Optional Point object. If given the values will be set into the object, otherwise a brand new Point object will be created and returned. * @return The size of the Rectangle object. */ - static size(a: Phaser.Rectangle, output?: Phaser.Point): Phaser.Point; + static size(a: Phaser.Rectangle, output?: Phaser.Point): Phaser.Point; /** * Adds two Rectangles together to create a new Rectangle object, by filling in the horizontal and vertical space between the two Rectangles. @@ -22105,18 +22567,18 @@ declare module Phaser { * @param out Optional Rectangle object. If given the new values will be set into this object, otherwise a brand new Rectangle object will be created and returned. * @return A Rectangle object that is the union of the two Rectangles. */ - static union(a: Phaser.Rectangle, b: Phaser.Rectangle, out?: Phaser.Rectangle): Phaser.Rectangle; - + static union(a: Phaser.Rectangle, b: Phaser.Rectangle, out?: Phaser.Rectangle): Phaser.Rectangle; + /** * Runs Math.ceil() on both the x and y values of this Rectangle. */ - ceil(): void; + ceil(): void; /** * Runs Math.ceil() on the x, y, width and height values of this Rectangle. */ - ceilAll(): void; + ceilAll(): void; /** * Centers this Rectangle so that the center coordinates match the given x and y values. @@ -22125,14 +22587,14 @@ declare module Phaser { * @param y The y coordinate to place the center of the Rectangle at. * @return This Rectangle object */ - centerOn(x: number, y: number): Phaser.Rectangle; + centerOn(x: number, y: number): Phaser.Rectangle; /** * Returns a new Rectangle object with the same values for the x, y, width, and height properties as the original Rectangle object. * * @param output Optional Rectangle object. If given the values will be set into the object, otherwise a brand new Rectangle object will be created and returned. */ - clone(output: Phaser.Rectangle): Phaser.Rectangle; + clone(output: Phaser.Rectangle): Phaser.Rectangle; /** * Determines whether the specified coordinates are contained within the region defined by this Rectangle object. @@ -22141,7 +22603,7 @@ declare module Phaser { * @param y The y coordinate of the point to test. * @return A value of true if the Rectangle object contains the specified point; otherwise false. */ - contains(x: number, y: number): boolean; + contains(x: number, y: number): boolean; /** * Determines whether the first Rectangle object is fully contained within the second Rectangle object. @@ -22150,7 +22612,7 @@ declare module Phaser { * @param b The second Rectangle object. * @return A value of true if the Rectangle object contains the specified point; otherwise false. */ - containsRect(b: Phaser.Rectangle): boolean; + containsRect(b: Phaser.Rectangle): boolean; /** * Copies the x, y, width and height properties from any given object to this Rectangle. @@ -22158,7 +22620,7 @@ declare module Phaser { * @param source The object to copy from. * @return This Rectangle object. */ - copyFrom(source: any): Phaser.Rectangle; + copyFrom(source: any): Phaser.Rectangle; /** * Copies the x, y, width and height properties from this Rectangle to any given object. @@ -22166,7 +22628,7 @@ declare module Phaser { * @param source The object to copy to. * @return This object. */ - copyTo(dest: any): any; + copyTo(dest: any): any; /** * Determines whether the two Rectangles are equal. @@ -22175,17 +22637,17 @@ declare module Phaser { * @param b The second Rectangle object. * @return A value of true if the two Rectangles have exactly the same values for the x, y, width and height properties; otherwise false. */ - equals(b: Phaser.Rectangle): boolean; + equals(b: Phaser.Rectangle): boolean; /** * Runs Math.floor() on both the x and y values of this Rectangle. */ - floor(): void; + floor(): void; /** * Runs Math.floor() on the x, y, width and height values of this Rectangle. */ - floorAll(): void; + floorAll(): void; /** * Returns a point based on the given position constant, which can be one of: @@ -22202,7 +22664,7 @@ declare module Phaser { * If no object is provided a new Phaser.Point object will be created. In high performance areas avoid this by re-using an existing object. * @return An object containing the point in its `x` and `y` properties. */ - getPoint(position: number, out: Phaser.Point): Phaser.Point; + getPoint(position: number, out: Phaser.Point): Phaser.Point; /** * Increases the size of the Rectangle object by the specified amounts. The center point of the Rectangle object stays the same, and its size increases to the left and right by the dx value, and to the top and the bottom by the dy value. @@ -22211,7 +22673,7 @@ declare module Phaser { * @param dy The amount to be added to the bottom side of the Rectangle. * @return This Rectangle object. */ - inflate(dx: number, dy: number): Phaser.Rectangle; + inflate(dx: number, dy: number): Phaser.Rectangle; /** * If the Rectangle object specified in the toIntersect parameter intersects with this Rectangle object, returns the area of intersection as a Rectangle object. If the Rectangles do not intersect, this method returns an empty Rectangle object with its properties set to 0. @@ -22220,7 +22682,7 @@ declare module Phaser { * @param out Optional Rectangle object. If given the intersection values will be set into this object, otherwise a brand new Rectangle object will be created and returned. * @return A Rectangle object that equals the area of intersection. If the Rectangles do not intersect, this method returns an empty Rectangle object; that is, a Rectangle with its x, y, width, and height properties set to 0. */ - intersection(b: Phaser.Rectangle, out: Phaser.Rectangle): Phaser.Rectangle; + intersection(b: Phaser.Rectangle, out: Phaser.Rectangle): Phaser.Rectangle; /** * Determines whether this Rectangle and another given Rectangle intersect with each other. @@ -22229,7 +22691,7 @@ declare module Phaser { * @param b The second Rectangle object. * @return A value of true if the specified object intersects with this Rectangle object; otherwise false. */ - intersects(b: Phaser.Rectangle, tolerance: number): boolean; + intersects(b: Phaser.Rectangle, tolerance: number): boolean; /** * Determines whether the coordinates given intersects (overlaps) with this Rectangle. @@ -22241,7 +22703,7 @@ declare module Phaser { * @param tolerance A tolerance value to allow for an intersection test with padding, default to 0 * @return A value of true if the specified object intersects with the Rectangle; otherwise false. */ - intersectsRaw(left: number, right: number, top: number, bottom: number, tolerance: number): boolean; + intersectsRaw(left: number, right: number, top: number, bottom: number, tolerance: number): boolean; /** * Adjusts the location of the Rectangle object, as determined by its top-left corner, by the specified amounts. @@ -22250,7 +22712,7 @@ declare module Phaser { * @param dy Moves the y value of the Rectangle object by this amount. * @return This Rectangle object. */ - offset(dx: number, dy: number): Phaser.Rectangle; + offset(dx: number, dy: number): Phaser.Rectangle; /** * Adjusts the location of the Rectangle object using a Point object as a parameter. This method is similar to the Rectangle.offset() method, except that it takes a Point object as a parameter. @@ -22258,7 +22720,7 @@ declare module Phaser { * @param point A Point object to use to offset this Rectangle object. * @return This Rectangle object. */ - offsetPoint(point: Phaser.Point): Phaser.Rectangle; + offsetPoint(point: Phaser.Point): Phaser.Rectangle; /** * Returns a uniformly distributed random point from anywhere within this Rectangle. @@ -22267,7 +22729,7 @@ declare module Phaser { * If no object is provided a new Phaser.Point object will be created. In high performance areas avoid this by re-using an existing object. * @return An object containing the random point in its `x` and `y` properties. */ - random(out?: Phaser.Point): Phaser.Point; + random(out?: Phaser.Point): Phaser.Point; /** * Resize the Rectangle by providing a new width and height. @@ -22277,7 +22739,7 @@ declare module Phaser { * @param height The height of the Rectangle. Should always be either zero or a positive value. * @return This Rectangle object */ - resize(width: number, height: number): Phaser.Rectangle; + resize(width: number, height: number): Phaser.Rectangle; /** * Sets the members of Rectangle to the specified values. @@ -22288,7 +22750,7 @@ declare module Phaser { * @param height The height of the Rectangle. Should always be either zero or a positive value. * @return This Rectangle object */ - setTo(x: number, y: number, width: number, height: number): Phaser.Rectangle; + setTo(x: number, y: number, width: number, height: number): Phaser.Rectangle; /** * Scales the width and height of this Rectangle by the given amounts. @@ -22297,7 +22759,7 @@ declare module Phaser { * @param y The amount to scale the height of the Rectangle by. A value of 0.5 would reduce by half, a value of 2 would double the height, etc. * @return This Rectangle object */ - scale(x: number, y?: number): Phaser.Rectangle; + scale(x: number, y?: number): Phaser.Rectangle; /** * The size of the Rectangle object, expressed as a Point object with the values of the width and height properties. @@ -22305,13 +22767,13 @@ declare module Phaser { * @param output Optional Point object. If given the values will be set into the object, otherwise a brand new Point object will be created and returned. * @return The size of the Rectangle object. */ - size(output?: Phaser.Point): Phaser.Point; + size(output?: Phaser.Point): Phaser.Point; /** * Returns a string representation of this object. * @return A string representation of the instance. */ - toString(): string; + toString(): string; /** * Adds two Rectangles together to create a new Rectangle object, by filling in the horizontal and vertical space between the two Rectangles. @@ -22320,17 +22782,17 @@ declare module Phaser { * @param out Optional Rectangle object. If given the new values will be set into this object, otherwise a brand new Rectangle object will be created and returned. * @return A Rectangle object that is the union of the two Rectangles. */ - union(b: Phaser.Rectangle, out?: Phaser.Rectangle): Phaser.Rectangle; - - } - + union(b: Phaser.Rectangle, out?: Phaser.Rectangle): Phaser.Rectangle; + + } + /** * A RenderTexture is a special texture that allows any displayObject to be rendered to it. It allows you to take many complex objects and * render them down into a single quad (on WebGL) which can then be used to texture other display objects with. A way of generating textures at run-time. */ - class RenderTexture extends PIXI.RenderTexture { - + class RenderTexture extends PIXI.RenderTexture { + /** * A RenderTexture is a special texture that allows any displayObject to be rendered to it. It allows you to take many complex objects and @@ -22344,30 +22806,30 @@ declare module Phaser { * @param scaleMode One of the Phaser.scaleModes consts. - Default: Phaser.scaleModes.DEFAULT * @param resolution The resolution of the texture being generated. - Default: 1 */ - constructor(game: Phaser.Game, width?: number, height?: number, key?: string, scaleMode?: number, resolution?: number); - + constructor(game: Phaser.Game, width?: number, height?: number, key?: string, scaleMode?: number, resolution?: number); + /** * This is the area of the BaseTexture image to actually copy to the Canvas / WebGL when rendering, * irrespective of the actual frame size or placement (which can be influenced by trimmed texture atlases) */ - crop: PIXI.Rectangle; + crop: PIXI.Rectangle; /** * A reference to the currently running game. */ - game: Phaser.Game; + game: Phaser.Game; /** * The key of the RenderTexture in the Cache, if stored there. */ - key: string; + key: string; /** * Base Phaser object type. */ - type: number; - + type: number; + /** * This function will draw the display object to the RenderTexture. @@ -22383,7 +22845,7 @@ declare module Phaser { * @param matrix Optional matrix to apply to the display object before rendering. If null or undefined it will use the worldTransform matrix of the given display object. * @param clear If true the texture will be cleared before the display object is drawn. */ - render(displayObject: PIXI.DisplayObject, matrix?: Phaser.Matrix, clear?: boolean): void; + render(displayObject: PIXI.DisplayObject, matrix?: Phaser.Matrix, clear?: boolean): void; /** * This function will draw the display object to the RenderTexture at the given coordinates. @@ -22397,7 +22859,7 @@ declare module Phaser { * @param y The y position to render the object at. * @param clear If true the texture will be cleared before the display object is drawn. */ - renderXY(displayObject: PIXI.DisplayObject, x: number, y: number, clear?: boolean): void; + renderXY(displayObject: PIXI.DisplayObject, x: number, y: number, clear?: boolean): void; /** * This function will draw the display object to the RenderTexture at the given coordinates. @@ -22411,16 +22873,16 @@ declare module Phaser { * @param y The y position to render the object at. * @param clear If true the texture will be cleared before the display object is drawn. */ - renderRawXY(displayObject: PIXI.DisplayObject, x: number, y: number, clear?: boolean): void; - - } - + renderRawXY(displayObject: PIXI.DisplayObject, x: number, y: number, clear?: boolean): void; + + } + /** * Abstracts away the use of RAF or setTimeOut for the core game update loop. */ - class RequestAnimationFrame { - + class RequestAnimationFrame { + /** * Abstracts away the use of RAF or setTimeOut for the core game update loop. @@ -22428,64 +22890,64 @@ declare module Phaser { * @param game A reference to the currently running game. * @param forceSetTimeOut Tell Phaser to use setTimeOut even if raf is available. */ - constructor(game: Phaser.Game, forceSetTimeOut?: boolean); - + constructor(game: Phaser.Game, forceSetTimeOut?: boolean); + /** * Tell Phaser to use setTimeOut even if raf is available. */ - forceSetTimeOut: boolean; + forceSetTimeOut: boolean; /** * The currently running game. */ - game: Phaser.Game; + game: Phaser.Game; /** * true if RequestAnimationFrame is running, otherwise false. */ - isRunning: boolean; - + isRunning: boolean; + /** * Is the browser using requestAnimationFrame? */ - isRAF(): boolean; + isRAF(): boolean; /** * Is the browser using setTimeout? */ - isSetTimeOut(): boolean; + isSetTimeOut(): boolean; /** * Starts the requestAnimationFrame running or setTimeout if unavailable in browser */ - start(): boolean; + start(): boolean; /** * Stops the requestAnimationFrame from running. */ - stop(): void; + stop(): void; /** * The update method for the requestAnimationFrame */ - updateRAF(rafTime: number): void; + updateRAF(rafTime: number): void; /** * The update method for the setTimeout. */ - updateSetTimeout(time: number): void; - - } - + updateSetTimeout(time: number): void; + + } + /** * A Retro Font is similar to a BitmapFont, in that it uses a texture to render the text. However unlike a BitmapFont every character in a RetroFont * is the same size. This makes it similar to a sprite sheet. You typically find font sheets like this from old 8/16-bit games and demos. */ - class RetroFont extends Phaser.RenderTexture { - + class RetroFont extends Phaser.RenderTexture { + /** * A Retro Font is similar to a BitmapFont, in that it uses a texture to render the text. However unlike a BitmapFont every character in a RetroFont @@ -22502,183 +22964,183 @@ declare module Phaser { * @param xOffset If the font set doesn't start at the top left of the given image, specify the X coordinate offset here. * @param yOffset If the font set doesn't start at the top left of the given image, specify the Y coordinate offset here. */ - constructor(game: Phaser.Game, key: string, characterWidth: number, characterHeight: number, chars: string, charsPerRow?: number, xSpacing?: number, ySpacing?: number, xOffset?: number, yOffset?: number); - + constructor(game: Phaser.Game, key: string, characterWidth: number, characterHeight: number, chars: string, charsPerRow?: number, xSpacing?: number, ySpacing?: number, xOffset?: number, yOffset?: number); + /** * Align each line of multi-line text in the center. */ - static ALIGN_CENTER: string; + static ALIGN_CENTER: string; /** * Align each line of multi-line text to the left. */ - static ALIGN_LEFT: string; + static ALIGN_LEFT: string; /** * Align each line of multi-line text to the right. */ - static ALIGN_RIGHT: string; + static ALIGN_RIGHT: string; /** * Text Set 1 = !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~ */ - static TEXT_SET1: string; + static TEXT_SET1: string; /** * Text Set 2 = !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ */ - static TEXT_SET2: string; + static TEXT_SET2: string; /** * Text Set 3 = ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789 */ - static TEXT_SET3: string; + static TEXT_SET3: string; /** * Text Set 4 = ABCDEFGHIJKLMNOPQRSTUVWXYZ 0123456789 */ - static TEXT_SET4: string; + static TEXT_SET4: string; /** * Text Set 5 = ABCDEFGHIJKLMNOPQRSTUVWXYZ.,/() '!?-*:0123456789 */ - static TEXT_SET5: string; + static TEXT_SET5: string; /** * Text Set 6 = ABCDEFGHIJKLMNOPQRSTUVWXYZ!?:;0123456789"(),-.' */ - static TEXT_SET6: string; + static TEXT_SET6: string; /** * Text Set 7 = AGMSY+:4BHNTZ!;5CIOU.?06DJPV,(17EKQW")28FLRX-'39 */ - static TEXT_SET7: string; + static TEXT_SET7: string; /** * Text Set 8 = 0123456789 .ABCDEFGHIJKLMNOPQRSTUVWXYZ */ - static TEXT_SET8: string; + static TEXT_SET8: string; /** * Text Set 9 = ABCDEFGHIJKLMNOPQRSTUVWXYZ()-0123456789.:,'"?! */ - static TEXT_SET9: string; + static TEXT_SET9: string; /** * Text Set 10 = ABCDEFGHIJKLMNOPQRSTUVWXYZ */ - static TEXT_SET10: string; + static TEXT_SET10: string; /** * Text Set 11 = ABCDEFGHIJKLMNOPQRSTUVWXYZ.,"-+!?()':;0123456789 */ - static TEXT_SET11: string; - + static TEXT_SET11: string; + /** * Alignment of the text when multiLine = true or a fixedWidth is set. Set to RetroFont.ALIGN_LEFT (default), RetroFont.ALIGN_RIGHT or RetroFont.ALIGN_CENTER. */ - align: string; + align: string; /** * Automatically convert any text to upper case. Lots of old bitmap fonts only contain upper-case characters, so the default is true. * Default: true */ - autoUpperCase: boolean; + autoUpperCase: boolean; /** * The height of each character in the font set. */ - characterHeight: number; + characterHeight: number; /** * The number of characters per row in the font set. */ - characterPerRow: number; + characterPerRow: number; /** * If the characters in the font set have horizontal spacing between them set the required amount here. */ - characterSpacingX: number; + characterSpacingX: number; /** * If the characters in the font set have vertical spacing between them set the required amount here. */ - characterSpacingY: number; + characterSpacingY: number; /** * The width of each character in the font set. */ - characterWidth: number; + characterWidth: number; /** * Adds horizontal spacing between each character of the font, in pixels. */ - customSpacingX: number; + customSpacingX: number; /** * Adds vertical spacing between each line of multi-line text, set in pixels. */ - customSpacingY: number; + customSpacingY: number; /** * If you need this RetroFont image to have a fixed width you can set the width in this value. * If text is wider than the width specified it will be cropped off. */ - fixedWidth: number; + fixedWidth: number; /** * A reference to the image stored in the Game.Cache that contains the font. */ - fontSet: Image; + fontSet: Image; /** * The FrameData representing this Retro Font. */ - frameData: Phaser.FrameData; + frameData: Phaser.FrameData; /** * If set to true all carriage-returns in text will form new lines (see align). If false the font will only contain one single line of text (the default) */ - multiLine: boolean; + multiLine: boolean; /** * If the font set doesn't start at the top left of the given image, specify the X coordinate offset here. */ - offsetX: number; + offsetX: number; /** * If the font set doesn't start at the top left of the given image, specify the Y coordinate offset here. */ - offsetY: number; + offsetY: number; /** * Sets if the stamp is smoothed or not. */ - smoothed: boolean; + smoothed: boolean; /** * The image that is stamped to the RenderTexture for each character in the font. */ - stamp: Phaser.Image; + stamp: Phaser.Image; /** * Set this value to update the text in this sprite. Carriage returns are automatically stripped out if multiLine is false. Text is converted to upper case if autoUpperCase is true. */ - text: string; - + text: string; + /** * Updates the texture with the new text. */ - buildRetroFontText(): void; + buildRetroFontText(): void; /** * Works out the longest line of text in _text and returns its length * @return The length of the longest line of text. */ - getLongestLine(): number; + getLongestLine(): number; /** * Internal function that takes a single line of text (2nd parameter) and pastes it into the BitmapData at the given coordinates. @@ -22689,7 +23151,7 @@ declare module Phaser { * @param y The y coordinate. * @param customSpacingX Custom X spacing. */ - pasteLine(line: string, x: number, y: number, customSpacingX: number): void; + pasteLine(line: string, x: number, y: number, customSpacingX: number): void; /** * Internal helper function that removes all unsupported characters from the _text String, leaving only characters contained in the font set. @@ -22697,7 +23159,7 @@ declare module Phaser { * @param stripCR Should it strip carriage returns as well? - Default: true * @return A clean version of the string. */ - removeUnsupportedCharacters(stripCR?: boolean): string; + removeUnsupportedCharacters(stripCR?: boolean): string; /** * If you need this RetroFont to have a fixed width and custom alignment you can set the width here. @@ -22706,7 +23168,7 @@ declare module Phaser { * @param width Width in pixels of this RetroFont. Set to zero to disable and re-enable automatic resizing. * @param lineAlignment Align the text within this width. Set to RetroFont.ALIGN_LEFT (default), RetroFont.ALIGN_RIGHT or RetroFont.ALIGN_CENTER. - Default: 'left' */ - setFixedWidth(width: number, lineAlignment?: string): void; + setFixedWidth(width: number, lineAlignment?: string): void; /** * A helper function that quickly sets lots of variables at once, and then updates the text. @@ -22718,7 +23180,7 @@ declare module Phaser { * @param lineAlignment Align each line of multi-line text. Set to RetroFont.ALIGN_LEFT, RetroFont.ALIGN_RIGHT or RetroFont.ALIGN_CENTER. - Default: 'left' * @param allowLowerCase Lots of bitmap font sets only include upper-case characters, if yours needs to support lower case then set this to true. */ - setText(content: string, multiLine?: boolean, characterSpacing?: number, lineSpacing?: number, lineAlignment?: string, allowLowerCase?: boolean): void; + setText(content: string, multiLine?: boolean, characterSpacing?: number, lineSpacing?: number, lineAlignment?: string, allowLowerCase?: boolean): void; /** * Updates the x and/or y offset that the font is rendered from. This updates all of the texture frames, so be careful how often it is called. @@ -22728,10 +23190,10 @@ declare module Phaser { * @param xOffset If the font set doesn't start at the top left of the given image, specify the X coordinate offset here. * @param yOffset If the font set doesn't start at the top left of the given image, specify the Y coordinate offset here. */ - updateOffset(x?: number, y?: number): void; - - } - + updateOffset(x?: number, y?: number): void; + + } + /** * A Rope is a Sprite that has a repeating texture. @@ -22740,8 +23202,8 @@ declare module Phaser { * * Please note that Ropes cannot have an input handler. */ - class Rope extends PIXI.Rope { - + class Rope extends PIXI.Rope { + /** * A Rope is a Sprite that has a repeating texture. @@ -22757,8 +23219,8 @@ declare module Phaser { * @param frame If this Rope is using part of a sprite sheet or texture atlas you can specify the exact frame to use by giving a string or numeric index. * @param points An array of {Phaser.Point}. */ - constructor(game: Phaser.Game, x: number, y: number, key: string | Phaser.RenderTexture | Phaser.BitmapData | PIXI.Texture | Phaser.Video, frame?: string | number, points?: Phaser.Point[]); - + constructor(game: Phaser.Game, x: number, y: number, key: string | Phaser.RenderTexture | Phaser.BitmapData | PIXI.Texture | Phaser.Video, frame?: string | number, points?: Phaser.Point[]); + /** * The angle property is the rotation of the Game Object in *degrees* from its original orientation. @@ -22771,13 +23233,13 @@ declare module Phaser { * If you wish to work in radians instead of degrees you can use the property `rotation` instead. * Working in radians is slightly faster as it doesn't have to perform any calculations. */ - angle: number; + angle: number; /** * If the Game Object is enabled for animation (such as a Phaser.Sprite) this is a reference to its AnimationManager instance. * Through it you can create, play, pause and stop animations. */ - animations: Phaser.AnimationManager; + animations: Phaser.AnimationManager; /** * A useful flag to control if the Game Object is alive or dead. @@ -22789,7 +23251,7 @@ declare module Phaser { * However you can use `Group.getFirstAlive` in conjunction with this property for fast object pooling and recycling. * Default: true */ - alive: boolean; + alive: boolean; /** * A Game Object with `autoCull` set to true will check its bounds against the World Camera every frame. @@ -22799,7 +23261,7 @@ declare module Phaser { * This is a relatively expensive operation, especially if enabled on hundreds of Game Objects. So enable it only if you know it's required, * or you have tested performance and find it acceptable. */ - autoCull: boolean; + autoCull: boolean; /** * `body` is the Game Objects physics body. Once a Game Object is enabled for physics you access all associated @@ -22817,20 +23279,20 @@ declare module Phaser { * * If you need a different result then adjust or re-create the Body shape offsets manually or reset the anchor after enabling physics. */ - body: Phaser.Physics.Arcade.Body | Phaser.Physics.P2.Body | Phaser.Physics.Ninja.Body | any; + body: Phaser.Physics.Arcade.Body | Phaser.Physics.P2.Body | Phaser.Physics.Ninja.Body | any; /** * The sum of the y and height properties. * This is the same as `y + height - offsetY`. */ - bottom: number; + bottom: number; /** * The x/y coordinate offset applied to the top-left of the camera that this Game Object will be drawn at if `fixedToCamera` is true. * * The values are relative to the top-left of the camera view and in addition to any parent of the Game Object on the display list. */ - cameraOffset: Phaser.Point; + cameraOffset: Phaser.Point; /** * If this is set to `true` the Game Object checks if it is within the World bounds each frame. @@ -22846,54 +23308,54 @@ declare module Phaser { * This is a relatively expensive operation, especially if enabled on hundreds of Game Objects. So enable it only if you know it's required, * or you have tested performance and find it acceptable. */ - checkWorldBounds: boolean; + checkWorldBounds: boolean; /** * The Rectangle used to crop the texture this Game Object uses. * Set this property via `crop`. * If you modify this property directly you must call `updateCrop` in order to have the change take effect. */ - cropRect: Phaser.Rectangle; + cropRect: Phaser.Rectangle; /** * The components this Game Object has installed. */ - components: any; + components: any; /** * Does this texture require a custom render call? (as set by BitmapData, Video, etc) */ - customRender: boolean; + customRender: boolean; /** * A debug flag designed for use with `Game.enableStep`. */ - debug: boolean; + debug: boolean; /** * Returns the delta x value. The difference between world.x now and in the previous frame. * * The value will be positive if the Game Object has moved to the right or negative if to the left. */ - deltaX: number; + deltaX: number; /** * Returns the delta y value. The difference between world.y now and in the previous frame. * * The value will be positive if the Game Object has moved down or negative if up. */ - deltaY: number; + deltaY: number; /** * Returns the delta z value. The difference between rotation now and in the previous frame. The delta value. */ - deltaZ: number; + deltaZ: number; /** * As a Game Object runs through its destroy method this flag is set to true, * and can be checked in any sub-systems or plugins it is being destroyed from. */ - destroyPhase: boolean; + destroyPhase: boolean; /** * Controls if this Game Object is processed by the core game loop. @@ -22904,13 +23366,13 @@ declare module Phaser { * Setting `exists` to true will add its physics body back in to the physics world, if it has one. * It will also set the `visible` property to `true`. */ - exists: boolean; + exists: boolean; /** * All Phaser Game Objects have an Events class which contains all of the events that are dispatched when certain things happen to this * Game Object, or any of its components. */ - events: Phaser.Events; + events: Phaser.Events; /** * A Game Object that is "fixed" to the camera uses its x/y coordinates as offsets from the top left of the camera during rendering. @@ -22927,7 +23389,7 @@ declare module Phaser { * * Be careful not to set `fixedToCamera` on Game Objects which are in Groups that already have `fixedToCamera` enabled on them. */ - fixedToCamera: boolean; + fixedToCamera: boolean; /** * Gets or sets the current frame index of the texture being used to render this Game Object. @@ -22941,7 +23403,7 @@ declare module Phaser { * * If you wish to fully replace the texture being used see `loadTexture`. */ - frame: string | number; + frame: string | number; /** * Gets or sets the current frame name of the texture being used to render this Game Object. @@ -22955,37 +23417,37 @@ declare module Phaser { * * If you wish to fully replace the texture being used see `loadTexture`. */ - frameName: string; + frameName: string; /** * A Game Object is considered `fresh` if it has just been created or reset and is yet to receive a renderer transform update. * This property is mostly used internally by the physics systems, but is exposed for the use of plugins. */ - fresh: boolean; + fresh: boolean; /** * A reference to the currently running Game. */ - game: Phaser.Game; + game: Phaser.Game; /** * Checks if the Game Objects bounds intersect with the Game Camera bounds. * Returns `true` if they do, otherwise `false` if fully outside of the Cameras bounds. */ - inCamera: boolean; - input: Phaser.InputHandler; - inputEnabled: boolean; + inCamera: boolean; + input: Phaser.InputHandler; + inputEnabled: boolean; /** * Checks if the Game Objects bounds are within, or intersect at any point with the Game World bounds. */ - inWorld: boolean; + inWorld: boolean; /** * The left coordinate of the Game Object. * This is the same as `x - offsetX`. */ - left: number; + left: number; /** * The lifespan allows you to give a Game Object a lifespan in milliseconds. @@ -22997,7 +23459,7 @@ declare module Phaser { * * Very handy for particles, bullets, collectibles, or any other short-lived entity. */ - lifespan: number; + lifespan: number; /** * The key of the image or texture used by this Game Object during rendering. @@ -23006,32 +23468,32 @@ declare module Phaser { * If a Game Object is created without a key it is automatically assigned the key `__default` which is a 32x32 transparent PNG stored within the Cache. * If a Game Object is given a key which doesn't exist in the Image Cache it is re-assigned the key `__missing` which is a 32x32 PNG of a green box with a line through it. */ - key: string | Phaser.RenderTexture | Phaser.BitmapData | PIXI.Texture | Phaser.Video; + key: string | Phaser.RenderTexture | Phaser.BitmapData | PIXI.Texture | Phaser.Video; /** * A user defined name given to this Game Object. * This value isn't ever used internally by Phaser, it is meant as a game level property. */ - name: string; + name: string; /** * The amount the Game Object is visually offset from its x coordinate. * This is the same as `width * anchor.x`. * It will only be > 0 if anchor.x is not equal to zero. */ - offsetX: number; + offsetX: number; /** * The amount the Game Object is visually offset from its y coordinate. * This is the same as `height * anchor.y`. * It will only be > 0 if anchor.y is not equal to zero. */ - offsetY: number; + offsetY: number; /** * If this and the `checkWorldBounds` property are both set to `true` then the `kill` method is called as soon as `inWorld` returns false. */ - outOfBoundsKill: boolean; + outOfBoundsKill: boolean; /** * Checks to see if the bounds of this Game Object overlaps with the bounds of the given Display Object, @@ -23045,7 +23507,7 @@ declare module Phaser { * @param displayObject The display object to check against. * @return True if the bounds of this Game Object intersects at any point with the bounds of the given display object. */ - overlap(displayObject: Phaser.Sprite | Phaser.Image | Phaser.TileSprite | Phaser.Button | PIXI.DisplayObject): boolean; + overlap(displayObject: Phaser.Sprite | Phaser.Image | Phaser.TileSprite | Phaser.Button | PIXI.DisplayObject): boolean; /** * A Game Object is that is pendingDestroy is flagged to have its destroy method called on the next logic update. @@ -23054,40 +23516,36 @@ declare module Phaser { * This is extremely useful if you wish to destroy an object from within one of its own callbacks * such as with Buttons or other Input events. */ - pendingDestroy: boolean; - points: Phaser.Point[]; - - /** - * The coordinate of the object relative to the local coordinates of the parent. - */ - position: Phaser.Point; + pendingDestroy: boolean; + points: Phaser.Point[]; + position: Phaser.Point; /** * The position the Game Object was located in the previous frame. */ - previousPosition: Phaser.Point; + previousPosition: Phaser.Point; /** * The rotation the Game Object was in set to in the previous frame. Value is in radians. */ - previousRotation: number; + previousRotation: number; /** * The right coordinate of the Game Object. * This is the same as `x + width - offsetX`. */ - right: number; + right: number; /** * The render order ID is used internally by the renderer and Input Manager and should not be modified. * This property is mostly used internally by the renderers, but is exposed for the use of plugins. */ - renderOrderID: number; + renderOrderID: number; /** * The segments that make up the rope body as an array of Phaser.Rectangles */ - segments: Phaser.Rectangle[]; + segments: Phaser.Rectangle[]; /** * Enable or disable texture smoothing for this Game Object. @@ -23096,28 +23554,28 @@ declare module Phaser { * * Smoothing is enabled by default. */ - smoothed: boolean; + smoothed: boolean; /** * The y coordinate of the Game Object. * This is the same as `y - offsetY`. */ - top: number; + top: number; /** * The const type of this object. */ - type: number; + type: number; /** * The callback that will apply any scale limiting to the worldTransform. */ - transformCallback: Function; + transformCallback: Function; /** * The context under which `transformCallback` is called. */ - transformCallbackContext: any; + transformCallbackContext: any; /** * The minimum scale this Game Object will scale down to. @@ -23126,7 +23584,7 @@ declare module Phaser { * * Set it to `null` to remove the limit. */ - scaleMin: Phaser.Point; + scaleMin: Phaser.Point; /** * The maximum scale this Game Object will scale up to. @@ -23135,29 +23593,29 @@ declare module Phaser { * * Set it to `null` to remove the limit. */ - scaleMax: Phaser.Point; + scaleMax: Phaser.Point; /** * A Rope will call its updateAnimation function on each update loop if it has one. Set to a function if you'd like the rope to animate during the update phase. Set to false or null to remove it. */ - updateAnimation: Function; + updateAnimation: Function; /** * The world coordinates of this Game Object in pixels. * Depending on where in the display list this Game Object is placed this value can differ from `position`, * which contains the x/y coordinates relative to the Game Objects parent. */ - world: Phaser.Point; + world: Phaser.Point; /** - * The position of the displayObject on the x axis relative to the local coordinates of the parent. + * The position of the Game Object on the x axis relative to the local coordinates of the parent. */ - x: number; + x: number; /** - * The position of the displayObject on the y axis relative to the local coordinates of the parent. + * The position of the Game Object on the y axis relative to the local coordinates of the parent. */ - y: number; + y: number; /** * The z depth of this Game Object within its parent Group. @@ -23165,8 +23623,8 @@ declare module Phaser { * This value is adjusted automatically whenever the Group hierarchy changes. * If you wish to re-order the layering of a Game Object then see methods like Group.moveUp or Group.bringToTop. */ - z: number; - + z: number; + /** * Brings this Game Object to the top of its parents display list. @@ -23176,14 +23634,14 @@ declare module Phaser { * because the World is the root Group from which all Game Objects descend. * @return This instance. */ - bringToTop(): Phaser.Rope; + bringToTop(): Phaser.Rope; /** * Adjust scaling limits, if set, to this Game Object. * * @param wt The updated worldTransform matrix. */ - checkTransform(wt: PIXI.Matrix): void; + checkTransform(wt: PIXI.Matrix): void; /** * Crop allows you to crop the texture being used to display this Game Object. @@ -23201,13 +23659,21 @@ declare module Phaser { * @param rect The Rectangle used during cropping. Pass null or no parameters to clear a previously set crop rectangle. * @param copy If false `cropRect` will be stored as a reference to the given rect. If true it will copy the rect values into a local Phaser Rectangle object stored in cropRect. */ - crop(rect: Phaser.Rectangle, copy?: boolean): void; + crop(rect: Phaser.Rectangle, copy?: boolean): void; /** - * Destroy this DisplayObject. - * Removes all references to transformCallbacks, its parent, the stage, filters, bounds, mask and cached Sprites. + * Destroys the Game Object. This removes it from its parent group, destroys the input, event and animation handlers if present + * and nulls its reference to `game`, freeing it up for garbage collection. + * + * If this Game Object has the Events component it will also dispatch the `onDestroy` event. + * + * You can optionally also destroy the BaseTexture this Game Object is using. Be careful if you've + * more than one Game Object sharing the same BaseTexture. + * + * @param destroyChildren Should every child of this object have its destroy method called as well? - Default: true + * @param destroyTexture Destroy the BaseTexture this Game Object is using? Note that if another Game Object is sharing the same BaseTexture it will invalidate it. */ - destroy(destroyChildren?: boolean): void; + destroy(destroyChildren?: boolean): void; /** * Kills a Game Object. A killed Game Object has its `alive`, `exists` and `visible` properties all set to false. @@ -23220,7 +23686,7 @@ declare module Phaser { * If you don't need this Game Object any more you should call `destroy` instead. * @return This instance. */ - kill(): Phaser.Rope; + kill(): Phaser.Rope; /** * Changes the base texture the Game Object is using. The old texture is removed and the new one is referenced or fetched from the Cache. @@ -23244,7 +23710,7 @@ declare module Phaser { * @param frame If this Sprite is using part of a sprite sheet or texture atlas you can specify the exact frame to use by giving a string or numeric index. * @param stopAnimation If an animation is already playing on this Sprite you can choose to stop it or let it carry on playing. - Default: true */ - loadTexture(key: string | Phaser.RenderTexture | Phaser.BitmapData | Phaser.Video | PIXI.Texture, frame?: string | number, stopAnimation?: boolean): void; + loadTexture(key: string | Phaser.RenderTexture | Phaser.BitmapData | Phaser.Video | PIXI.Texture, frame?: string | number, stopAnimation?: boolean): void; /** * Moves this Game Object up one place in its parents display list. @@ -23254,7 +23720,7 @@ declare module Phaser { * because the World is the root Group from which all Game Objects descend. * @return This instance. */ - moveUp(): Phaser.Rope; + moveUp(): Phaser.Rope; /** * Moves this Game Object down one place in its parents display list. @@ -23264,7 +23730,7 @@ declare module Phaser { * because the World is the root Group from which all Game Objects descend. * @return This instance. */ - moveDown(): Phaser.Rope; + moveDown(): Phaser.Rope; /** * Plays an Animation. @@ -23280,17 +23746,17 @@ declare module Phaser { * @param killOnComplete If set to true when the animation completes (only happens if loop=false) the parent Sprite will be killed. * @return A reference to playing Animation. */ - play(name: string, frameRate?: number, loop?: boolean, killOnComplete?: boolean): Phaser.Animation; + play(name: string, frameRate?: number, loop?: boolean, killOnComplete?: boolean): Phaser.Animation; /** * Automatically called by World.preUpdate. */ - preUpdate(): void; + preUpdate(): void; /** * Internal method called by the World postUpdate cycle. */ - postUpdate(): void; + postUpdate(): void; /** * Resets the Rope. This places the Rope at the given x/y world coordinates and then @@ -23301,7 +23767,7 @@ declare module Phaser { * @param y The y coordinate (in world space) to position the Sprite at. * @return This instance. */ - reset(x: number, y: number, health?: number): Phaser.Rope; + reset(x: number, y: number, health?: number): Phaser.Rope; /** * Resizes the Frame dimensions that the Game Object uses for rendering. @@ -23313,12 +23779,12 @@ declare module Phaser { * @param width The new width of the texture. * @param height The new height of the texture. */ - resizeFrame(parent: any, width: number, height: number): void; + resizeFrame(parent: any, width: number, height: number): void; /** * Resets the texture frame dimensions that the Game Object uses for rendering. */ - resetFrame(): void; + resetFrame(): void; /** * Brings a 'dead' Game Object back to life, optionally resetting its health value in the process. @@ -23330,7 +23796,7 @@ declare module Phaser { * @param health The health to give the Game Object. Only set if the GameObject has the Health component. - Default: 100 * @return This instance. */ - revive(health?: number): Phaser.Rope; + revive(health?: number): Phaser.Rope; /** * Sends this Game Object to the bottom of its parents display list. @@ -23340,7 +23806,7 @@ declare module Phaser { * because the World is the root Group from which all Game Objects descend. * @return This instance. */ - sendToBack(): Phaser.Rope; + sendToBack(): Phaser.Rope; /** * Sets the texture frame the Game Object uses for rendering. @@ -23349,7 +23815,7 @@ declare module Phaser { * * @param frame The Frame to be used by the texture. */ - setFrame(frame: Phaser.Frame): void; + setFrame(frame: Phaser.Frame): void; /** * Sets the scaleMin and scaleMax values. These values are used to limit how far this Game Object will scale based on its parent. @@ -23375,65 +23841,65 @@ declare module Phaser { * @param maxX The maximum horizontal scale value this Game Object can scale up to. * @param maxY The maximum vertical scale value this Game Object can scale up to. */ - setScaleMinMax(minX?: number, minY?: number, maxX?: number, maxY?: number): void; + setScaleMinMax(minX?: number, minY?: number, maxX?: number, maxY?: number): void; /** * If you have set a crop rectangle on this Game Object via `crop` and since modified the `cropRect` property, * or the rectangle it references, then you need to update the crop frame by calling this method. */ - updateCrop(): void; + updateCrop(): void; /** * Override and use this function in your own custom objects to handle any update requirements you may have. */ - update(): void; - - } - + update(): void; + + } + /** * The Rounded Rectangle object is an area defined by its position and has nice rounded corners, * as indicated by its top-left corner point (x, y) and by its width and its height. */ - class RoundedRectangle extends PIXI.RoundedRectangle { - + class RoundedRectangle extends PIXI.RoundedRectangle { + /** * The x coordinate of the top-left corner of the Rectangle. */ - x: number; + x: number; /** * The y coordinate of the top-left corner of the Rectangle. */ - y: number; + y: number; /** * The width of the Rectangle. This value should never be set to a negative. */ - width: number; + width: number; /** * The height of the Rectangle. This value should never be set to a negative. */ - height: number; + height: number; /** * The radius of the rounded corners. */ - radius: number; + radius: number; /** * The const type of this object. */ - type: number; - + type: number; + /** * Returns a new RoundedRectangle object with the same values for the x, y, width, height and * radius properties as this RoundedRectangle object. */ - clone(): RoundedRectangle; + clone(): RoundedRectangle; /** * Determines whether the specified coordinates are contained within the region defined by this Rounded Rectangle object. @@ -23442,10 +23908,10 @@ declare module Phaser { * @param y The y coordinate of the point to test. * @return A value of true if the RoundedRectangle Rectangle object contains the specified point; otherwise false. */ - contains(x: number, y: number): boolean; - - } - + contains(x: number, y: number): boolean; + + } + /** * Signals are what Phaser uses to handle events and event dispatching. @@ -23496,8 +23962,8 @@ declare module Phaser { * * And your callback will be invoked. See the dispatch method for more details. */ - class Signal { - + class Signal { + /** * Is the Signal active? Only active signals will broadcast dispatched events. @@ -23505,8 +23971,8 @@ declare module Phaser { * Setting this property during a dispatch will only affect the next dispatch. To stop the propagation of a signal from a listener use {@link Phaser.Signal#halt halt}. * Default: true */ - active: boolean; - boundDispatch: Function; + active: boolean; + boundDispatch: Function; /** * Memorize the previously dispatched event? @@ -23514,8 +23980,8 @@ declare module Phaser { * If an event has been memorized it is automatically dispatched when a new listener is added with {@link Phaser.Signal#add add} or {@link Phaser.Signal#addOnce addOnce}. * Use {@link Phaser.Signal#forget forget} to clear any currently memorized event. */ - memorize: boolean; - + memorize: boolean; + /** * Add an event listener for this signal. @@ -23540,7 +24006,7 @@ declare module Phaser { * @param args Additional arguments to pass to the callback (listener) function. They will be appended after any arguments usually dispatched. - Default: (none) * @return An Object representing the binding between the Signal and listener. */ - add(listener: Function, listenerContext?: any, priority?: number, ...args: any[]): Phaser.SignalBinding; + add(listener: Function, listenerContext?: any, priority?: number, ...args: any[]): Phaser.SignalBinding; /** * Add a one-time listener - the listener is automatically removed after the first execution. @@ -23554,7 +24020,7 @@ declare module Phaser { * @param args Additional arguments to pass to the callback (listener) function. They will be appended after any arguments usually dispatched. - Default: (none) * @return An Object representing the binding between the Signal and listener. */ - addOnce(listener: Function, listenerContext?: any, priority?: number, ...args: any[]): Phaser.SignalBinding; + addOnce(listener: Function, listenerContext?: any, priority?: number, ...args: any[]): Phaser.SignalBinding; /** * Dispatch / broadcast the event to all listeners. @@ -23563,7 +24029,7 @@ declare module Phaser { * * @param params Parameters that should be passed to each handler. */ - dispatch(...params: any[]): void; + dispatch(...params: any[]): void; /** * Dispose the signal - no more events can be dispatched. @@ -23571,18 +24037,18 @@ declare module Phaser { * This removes all event listeners and clears references to external objects. * Calling methods on a disposed objects results in undefined behavior. */ - dispose(): void; + dispose(): void; /** * Forget the currently {@link Phaser.Signal#memorize memorized} event, if any. */ - forget(): void; + forget(): void; /** * Gets the total number of listeners attached to this Signal. * @return Number of listeners attached to the Signal. */ - getNumListeners(): number; + getNumListeners(): number; /** * Stop propagation of the event, blocking the dispatch to next listener on the queue. @@ -23590,7 +24056,7 @@ declare module Phaser { * This should be called only during event dispatch as calling it before/after dispatch won't affect another broadcast. * See {@link Phaser.Signal#active active} to enable/disable the signal entirely. */ - halt(): void; + halt(): void; /** * Check if a specific listener is attached. @@ -23599,7 +24065,7 @@ declare module Phaser { * @param context Context on which listener will be executed (object that should represent the `this` variable inside listener function). * @return If Signal has the specified listener. */ - has(listener: Function, context?: any): boolean; + has(listener: Function, context?: any): boolean; /** * Remove a single event listener. @@ -23608,20 +24074,20 @@ declare module Phaser { * @param context Execution context (since you can add the same handler multiple times if executing in a different context). * @return Listener handler function. */ - remove(listener: Function, context?: any): Function; + remove(listener: Function, context?: any): Function; /** * Remove all event listeners. * * @param context If specified only listeners for the given context will be removed. */ - removeAll(context?: any): void; + removeAll(context?: any): void; /** * A string representation of the object. * @return String representation of the object. */ - toString(): string; + toString(): string; /** * @@ -23629,18 +24095,18 @@ declare module Phaser { * @param listener Signal handler function. * @param fnName Function name. */ - validateListener(listener: Function, fnName: string): void; - - } - + validateListener(listener: Function, fnName: string): void; + + } + /** * Object that represents a binding between a Signal and a listener function. * This is an internal constructor and shouldn't be created directly. * Inspired by Joa Ebert AS3 SignalBinding and Robert Penner's Slot classes. */ - class SignalBinding { - + class SignalBinding { + /** * Object that represents a binding between a Signal and a listener function. @@ -23654,30 +24120,30 @@ declare module Phaser { * @param priority The priority level of the event listener. (default = 0). * @param args Additional arguments to pass to the callback (listener) function. They will be appended after any arguments usually dispatched. - Default: (none) */ - constructor(signal: Phaser.Signal, listener: Function, isOnce: boolean, listenerContext?: any, priority?: number, ...args: any[]); - + constructor(signal: Phaser.Signal, listener: Function, isOnce: boolean, listenerContext?: any, priority?: number, ...args: any[]); + /** * If binding is active and should be executed. * Default: true */ - active: boolean; + active: boolean; /** * The number of times the handler function has been called. */ - callCount: number; + callCount: number; /** * Context on which listener will be executed (object that should represent the `this` variable inside listener function). */ - context: any; + context: any; /** * Default parameters passed to listener during `Signal.dispatch` and `SignalBinding.execute` (curried parameters). */ - params: any[]; - + params: any[]; + /** * Call listener passing arbitrary parameters. @@ -23686,53 +24152,53 @@ declare module Phaser { * @param paramsArr Array of parameters that should be passed to the listener. * @return Value returned by the listener. */ - execute(paramsArr?: any[]): void; + execute(paramsArr?: any[]): void; /** * Detach binding from signal. * alias to: @see mySignal.remove(myBinding.getListener()); * @return Handler function bound to the signal or `null` if binding was previously detached. */ - detach(): Function; + detach(): Function; /** * * @return True if binding is still bound to the signal and has a listener. */ - isBound(): boolean; + isBound(): boolean; /** * * @return If SignalBinding will only be executed once. */ - isOnce(): boolean; + isOnce(): boolean; /** * * @return Handler function bound to the signal. */ - getListener(): Function; + getListener(): Function; /** * * @return Signal that listener is currently bound to. */ - getSignal(): Phaser.Signal; + getSignal(): Phaser.Signal; /** * * @return String representation of the object. */ - toString(): string; - - } - + toString(): string; + + } + /** * A single Phaser Gamepad */ - class SinglePad { - + class SinglePad { + /** * A single Phaser Gamepad @@ -23740,64 +24206,64 @@ declare module Phaser { * @param game Current game instance. * @param padParent The parent Phaser.Gamepad object (all gamepads reside under this) */ - constructor(game: Phaser.Game, padParent: any); - + constructor(game: Phaser.Game, padParent: any); + /** * The context under which the callbacks are run. */ - callbackContext: any; + callbackContext: any; /** * Whether or not this particular gamepad is connected or not. */ - connected: boolean; + connected: boolean; /** * Dead zone for axis feedback - within this value you won't trigger updates. */ - deadZone: number; + deadZone: number; /** * Local reference to game. */ - game: Phaser.Game; + game: Phaser.Game; /** * The gamepad index as per browsers data */ - index: number; + index: number; /** * This callback is invoked every time an axis is changed. */ - onAxisCallback: Function; + onAxisCallback: Function; /** * This callback is invoked every time this gamepad is connected */ - onConnectCallback: Function; + onConnectCallback: Function; /** * This callback is invoked every time this gamepad is disconnected */ - onDisconnectCallback: Function; + onDisconnectCallback: Function; /** * This callback is invoked every time a button is pressed down. */ - onDownCallback: Function; + onDownCallback: Function; /** * This callback is invoked every time a button is changed to a value where value > 0 and value < 1. */ - onFloatCallback: Function; + onFloatCallback: Function; /** * This callback is invoked every time a gamepad button is released. */ - onUpCallback: Function; - + onUpCallback: Function; + /** * Returns value of requested axis. @@ -23805,7 +24271,7 @@ declare module Phaser { * @param axisCode The index of the axis to check * @return Axis value if available otherwise false */ - axis(axisCode: number): number; + axis(axisCode: number): number; /** * Add callbacks to this Gamepad to handle connect / disconnect / button down / button up / axis change / float value buttons. @@ -23814,7 +24280,7 @@ declare module Phaser { * @param callbacks Object that takes six different callbak methods: * onConnectCallback, onDisconnectCallback, onDownCallback, onUpCallback, onAxisCallback, onFloatCallback */ - addCallbacks(context: any, callbacks: any): void; + addCallbacks(context: any, callbacks: any): void; /** * Returns the value of a gamepad button. Intended mainly for cases when you have floating button values, for example @@ -23823,24 +24289,24 @@ declare module Phaser { * @param buttonCode The buttonCode of the button to check. * @return Button value if available otherwise null. Be careful as this can incorrectly evaluate to 0. */ - buttonValue(buttonCode: number): number; + buttonValue(buttonCode: number): number; /** * Gamepad connect function, should be called by Phaser.Gamepad. * * @param rawPad The raw gamepad object */ - connect(rawPad: any): void; + connect(rawPad: any): void; /** * Destroys this object and associated callback references. */ - destroy(): void; + destroy(): void; /** * Gamepad disconnect function, should be called by Phaser.Gamepad. */ - disconnect(): void; + disconnect(): void; /** * Gets a DeviceButton object from this controller to be stored and referenced locally. @@ -23849,7 +24315,7 @@ declare module Phaser { * @param buttonCode The buttonCode of the button, i.e. Phaser.Gamepad.BUTTON_0, Phaser.Gamepad.XBOX360_A, etc. * @return The DeviceButton object which you can store locally and reference directly. */ - getButton(buttonCode: number): Phaser.DeviceButton; + getButton(buttonCode: number): Phaser.DeviceButton; /** * Returns true if the button is pressed down. @@ -23857,7 +24323,7 @@ declare module Phaser { * @param buttonCode The buttonCode of the button to check. * @return True if the button is pressed down. */ - isDown(buttonCode: number): boolean; + isDown(buttonCode: number): boolean; /** * Returns true if the button is not currently pressed. @@ -23865,7 +24331,7 @@ declare module Phaser { * @param buttonCode The buttonCode of the button to check. * @return True if the button is not currently pressed down. */ - isUp(buttonCode: number): boolean; + isUp(buttonCode: number): boolean; /** * Returns the "just pressed" state of a button from this gamepad. Just pressed is considered true if the button was pressed down within the duration given (default 250ms). @@ -23874,7 +24340,7 @@ declare module Phaser { * @param duration The duration below which the button is considered as being just pressed. - Default: 250 * @return True if the button is just pressed otherwise false. */ - justPressed(buttonCode: number, duration?: number): boolean; + justPressed(buttonCode: number, duration?: number): boolean; /** * Returns the "just released" state of a button from this gamepad. Just released is considered as being true if the button was released within the duration given (default 250ms). @@ -23883,19 +24349,19 @@ declare module Phaser { * @param duration The duration below which the button is considered as being just released. - Default: 250 * @return True if the button is just released otherwise false. */ - justReleased(buttonCode: number, duration?: number): boolean; + justReleased(buttonCode: number, duration?: number): boolean; /** * Main update function called by Phaser.Gamepad. */ - pollStatus(): void; + pollStatus(): void; /** * Handles changes in axis. * * @param axisState State of the relevant axis */ - processAxisChange(axisState: any): void; + processAxisChange(axisState: any): void; /** * Handles button down press. @@ -23903,7 +24369,7 @@ declare module Phaser { * @param buttonCode Which buttonCode of this button * @param value Button value */ - processButtonDown(buttonCode: number, value: any): void; + processButtonDown(buttonCode: number, value: any): void; /** * Handles buttons with floating values (like analog buttons that acts almost like an axis but still registers like a button) @@ -23911,7 +24377,7 @@ declare module Phaser { * @param buttonCode Which buttonCode of this button * @param value Button value (will range somewhere between 0 and 1, but not specifically 0 or 1. */ - processButtonFloat(buttonCode: number, value: any): void; + processButtonFloat(buttonCode: number, value: any): void; /** * Handles button release. @@ -23919,21 +24385,21 @@ declare module Phaser { * @param buttonCode Which buttonCode of this button * @param value Button value */ - processButtonUp(buttonCode: number, value: any): void; + processButtonUp(buttonCode: number, value: any): void; /** * Reset all buttons/axes of this gamepad. */ - reset(): void; - - } - + reset(): void; + + } + /** * The Sound class constructor. */ - class Sound { - + class Sound { + /** * The Sound class constructor. @@ -23943,222 +24409,222 @@ declare module Phaser { * @param volume Default value for the volume, between 0 and 1. - Default: 1 * @param loop Whether or not the sound will loop. */ - constructor(game: Phaser.Game, key: string, volume?: number, loop?: boolean, connect?: boolean); - + constructor(game: Phaser.Game, key: string, volume?: number, loop?: boolean, connect?: boolean); + /** * Boolean indicating whether the sound should start automatically. */ - autoplay: boolean; + autoplay: boolean; /** * This will allow you to have multiple instances of this Sound playing at once. This is only useful when running under Web Audio, and we recommend you implement a local pooling system to not flood the sound channels. */ - allowMultiple: boolean; + allowMultiple: boolean; /** * Reference to the AudioContext instance. */ - context: any; + context: any; /** * The string ID of the currently playing marker, if any. */ - currentMarker: string; + currentMarker: string; /** * The current time the sound is at. */ - currentTime: number; + currentTime: number; /** * Destroys this sound and all associated events and removes it from the SoundManager. * * @param remove If true this Sound is automatically removed from the SoundManager. - Default: true */ - destroy(remove?: boolean): void; + destroy(remove?: boolean): void; /** * The duration of the current sound marker in seconds. */ - duration: number; + duration: number; /** * The duration of the current sound marker in ms. */ - durationMS: number; + durationMS: number; /** * If defined this Sound won't connect to the SoundManager master gain node, but will instead connect to externalNode. */ - externalNode: any; + externalNode: any; /** * The tween that fades the audio, set via Sound.fadeIn and Sound.fadeOut. */ - fadeTween: Phaser.Tween; + fadeTween: Phaser.Tween; /** * A reference to the currently running Game. */ - game: Phaser.Game; + game: Phaser.Game; /** * The gain node in a Web Audio system. */ - gainNode: any; + gainNode: any; /** * Returns true if the sound file has decoded. */ - isDecoded: boolean; + isDecoded: boolean; /** * Returns true if the sound file is still decoding. */ - isDecoding: boolean; + isDecoding: boolean; /** * true if the sound is currently playing, otherwise false. */ - isPlaying: boolean; + isPlaying: boolean; /** * Asset key for the sound. */ - key: string; + key: string; /** * Whether or not the sound or current sound marker will loop. */ - loop: boolean; + loop: boolean; /** * The sound markers. */ - markers: any; + markers: any; /** * The master gain node in a Web Audio system. */ - masterGainNode: any; + masterGainNode: any; /** * Gets or sets the muted state of this sound. */ - mute: boolean; + mute: boolean; /** * Name of the sound. */ - name: string; + name: string; /** * The onDecoded event is dispatched when the sound has finished decoding (typically for mp3 files) */ - onDecoded: Phaser.Signal; - onEndedHandler: () => void; + onDecoded: Phaser.Signal; + onEndedHandler: () => void; /** * The onFadeComplete event is dispatched when this sound finishes fading either in or out. */ - onFadeComplete: Phaser.Signal; + onFadeComplete: Phaser.Signal; /** * The onLoop event is dispatched when this sound loops during playback. */ - onLoop: Phaser.Signal; + onLoop: Phaser.Signal; /** * The onMarkerComplete event is dispatched when a marker within this sound completes playback. */ - onMarkerComplete: Phaser.Signal; + onMarkerComplete: Phaser.Signal; /** * The onMute event is dispatched when this sound is muted. */ - onMute: Phaser.Signal; + onMute: Phaser.Signal; /** * The onPause event is dispatched when this sound is paused. */ - onPause: Phaser.Signal; + onPause: Phaser.Signal; /** * The onPlay event is dispatched each time this sound is played. */ - onPlay: Phaser.Signal; + onPlay: Phaser.Signal; /** * The onResume event is dispatched when this sound is resumed from a paused state. */ - onResume: Phaser.Signal; + onResume: Phaser.Signal; /** * The onStop event is dispatched when this sound stops playback. */ - onStop: Phaser.Signal; + onStop: Phaser.Signal; /** * if true when you play this sound it will always start from the beginning. */ - override: boolean; + override: boolean; /** * true if the sound is paused, otherwise false. */ - paused: boolean; + paused: boolean; /** * The position the sound had reached when it was paused. */ - pausedPosition: number; + pausedPosition: number; /** * The game time at which the sound was paused. */ - pausedTime: number; + pausedTime: number; /** * true if the sound file is pending playback */ - pendingPlayback: boolean; + pendingPlayback: boolean; /** * The position of the current sound marker. */ - position: number; + position: number; /** * The time the Sound starts at (typically 0 unless starting from a marker) */ - startTime: number; + startTime: number; /** * The time the sound stopped. */ - stopTime: number; + stopTime: number; /** * The total duration of the sound in seconds. */ - totalDuration: number; + totalDuration: number; /** * true if the sound is being played via the Audio tag. */ - usingAudioTag: boolean; + usingAudioTag: boolean; /** * true if this sound is being played with Web Audio. */ - usingWebAudio: boolean; + usingWebAudio: boolean; /** - * The sound or sound marker volume. A value between 0 (silence) and 1 (full volume). + * Gets or sets the volume of this sound, a value between 0 and 1. */ - volume: number; - + volume: number; + /** * Adds a marker into the current Sound. A marker is represented by a unique key and a start time and duration. @@ -24170,14 +24636,14 @@ declare module Phaser { * @param volume The volume the sound will play back at, between 0 (silent) and 1 (full volume). - Default: 1 * @param loop Sets if the sound will loop or not. */ - addMarker(name: string, start: number, duration: number, volume?: number, loop?: boolean): void; + addMarker(name: string, start: number, duration: number, volume?: number, loop?: boolean): void; /** * Destroys this sound and all associated events and removes it from the SoundManager. * * @param remove If true this Sound is automatically removed from the SoundManager. - Default: true */ - destroy(): void; + destroy(): void; /** * Starts this sound playing (or restarts it if already doing so) and sets the volume to zero. @@ -24190,7 +24656,7 @@ declare module Phaser { * @param loop Should the Sound be set to loop? Note that this doesn't cause the fade to repeat. * @param marker The marker to start at; defaults to the current (last played) marker. To start playing from the beginning specify specify a marker of `''`. - Default: (current marker) */ - fadeIn(duration?: number, loop?: boolean, marker?: string): void; + fadeIn(duration?: number, loop?: boolean, marker?: string): void; /** * Decreases the volume of this Sound from its current value to 0 over the duration specified. @@ -24199,7 +24665,7 @@ declare module Phaser { * * @param duration The time in milliseconds over which the Sound should fade out. - Default: 1000 */ - fadeOut(duration?: number): void; + fadeOut(duration?: number): void; /** * Fades the volume of this Sound from its current value to the given volume over the duration specified. @@ -24209,7 +24675,7 @@ declare module Phaser { * @param duration The time in milliseconds during which the Sound should fade out. - Default: 1000 * @param volume The volume which the Sound should fade to. This is a value between 0 and 1. */ - fadeTo(duration?: number, volume?: number): void; + fadeTo(duration?: number, volume?: number): void; /** * Loops this entire sound. If you need to loop a section of it then use Sound.play and the marker and loop parameters. @@ -24217,12 +24683,12 @@ declare module Phaser { * @param volume Volume of the sound you want to play. If none is given it will use the volume given to the Sound when it was created (which defaults to 1 if none was specified). - Default: 1 * @return This sound instance. */ - loopFull(volume?: number): Phaser.Sound; + loopFull(volume?: number): Phaser.Sound; /** * Pauses the sound. */ - pause(): void; + pause(): void; /** * Play this sound, or a marked section of it. @@ -24234,14 +24700,14 @@ declare module Phaser { * @param forceRestart If the sound is already playing you can set forceRestart to restart it from the beginning. - Default: true * @return This sound instance. */ - play(marker?: string, position?: number, volume?: number, loop?: boolean, forceRestart?: boolean): Phaser.Sound; + play(marker?: string, position?: number, volume?: number, loop?: boolean, forceRestart?: boolean): Phaser.Sound; /** * Removes a marker from the sound. * * @param name The key of the marker to remove. */ - removeMarker(name: string): void; + removeMarker(name: string): void; /** * Restart the sound, or a marked section of it. @@ -24251,32 +24717,32 @@ declare module Phaser { * @param volume Volume of the sound you want to play. - Default: 1 * @param loop Loop when it finished playing? */ - restart(marker: string, position: number, volume?: number, loop?: boolean): void; + restart(marker: string, position: number, volume?: number, loop?: boolean): void; /** * Resumes the sound. */ - resume(): void; + resume(): void; /** * Called automatically when this sound is unlocked. * * @param key The Phaser.Cache key of the sound file to check for decoding. */ - soundHasUnlocked(key: string): void; + soundHasUnlocked(key: string): void; /** * Stop playing this sound. */ - stop(): void; + stop(): void; /** * Called automatically by Phaser.SoundManager. */ - update(): void; - - } - + update(): void; + + } + /** * The Sound Manager is responsible for playing back audio via either the Legacy HTML Audio tag or via Web Audio if the browser supports it. @@ -24293,8 +24759,8 @@ declare module Phaser { * The solution is to use a lower encoding rate such as 44100 Hz. Sometimes the audio context will * be created with a sampleRate of 48000. If this happens and audio distorts you should re-create the context. */ - class SoundManager { - + class SoundManager { + /** * The Sound Manager is responsible for playing back audio via either the Legacy HTML Audio tag or via Web Audio if the browser supports it. @@ -24313,35 +24779,35 @@ declare module Phaser { * * @param game Reference to the current game instance. */ - constructor(game: Phaser.Game); - + constructor(game: Phaser.Game); + /** * The number of audio channels to use in playback. * Default: 32 */ - channels: number; + channels: number; /** * Used in conjunction with Sound.externalNode this allows you to stop a Sound node being connected to the SoundManager master gain node. * Default: true */ - connectToMaster: boolean; + connectToMaster: boolean; /** * The AudioContext being used for playback. */ - context: any; + context: any; /** * Local reference to game. */ - game: Phaser.Game; + game: Phaser.Game; /** * Gets or sets the muted state of the SoundManager. This effects all sounds in the game. */ - mute: boolean; + mute: boolean; /** * Set to true to have all sound muted when the Phaser game pauses (such as on loss of focus), @@ -24349,53 +24815,53 @@ declare module Phaser { * do this should you wish to control audio muting via external DOM buttons or similar. * Default: true */ - muteOnPause: boolean; + muteOnPause: boolean; /** * True if audio been disabled via the PhaserGlobal (useful if you need to use a 3rd party audio library) or the device doesn't support any audio. */ - noAudio: boolean; + noAudio: boolean; /** * The event dispatched when a sound decodes (typically only for mp3 files) */ - onSoundDecode: Phaser.Signal; + onSoundDecode: Phaser.Signal; /** * This signal is dispatched whenever the global volume changes. The new volume is passed as the only parameter to your callback. */ - onVolumeChange: Phaser.Signal; + onVolumeChange: Phaser.Signal; /** * This signal is dispatched when the SoundManager is globally muted, either directly via game code or as a result of the game pausing. */ - onMute: Phaser.Signal; + onMute: Phaser.Signal; /** * This signal is dispatched when the SoundManager is globally un-muted, either directly via game code or as a result of the game resuming from a pause. */ - onUnMute: Phaser.Signal; + onUnMute: Phaser.Signal; /** * true if the audio system is currently locked awaiting a touch event. */ - touchLocked: boolean; + touchLocked: boolean; /** * True the SoundManager and device are both using the Audio tag instead of Web Audio. */ - usingAudioTag: boolean; + usingAudioTag: boolean; /** * True the SoundManager and device are both using Web Audio. */ - usingWebAudio: boolean; + usingWebAudio: boolean; /** * Gets or sets the global volume of the SoundManager, a value between 0 and 1. The value given is clamped to the range 0 to 1. */ - volume: number; - + volume: number; + /** * Adds a new Sound into the SoundManager. @@ -24406,7 +24872,7 @@ declare module Phaser { * @param connect Controls if the created Sound object will connect to the master gainNode of the SoundManager when running under WebAudio. - Default: true * @return The new sound instance. */ - add(key: string, volume?: number, loop?: boolean, connect?: boolean): Phaser.Sound; + add(key: string, volume?: number, loop?: boolean, connect?: boolean): Phaser.Sound; /** * Adds a new AudioSprite into the SoundManager. @@ -24414,12 +24880,12 @@ declare module Phaser { * @param key Asset key for the sound. * @return The new AudioSprite instance. */ - addSprite(key: string): Phaser.AudioSprite; + addSprite(key: string): Phaser.AudioSprite; /** * Initialises the sound manager. */ - boot(): void; + boot(): void; /** * Decode a sound by its asset key. @@ -24427,17 +24893,17 @@ declare module Phaser { * @param key Assets key of the sound to be decoded. * @param sound Its buffer will be set to decoded data. */ - decode(key: string, sound?: Phaser.Sound): void; + decode(key: string, sound?: Phaser.Sound): void; /** * Stops all the sounds in the game, then destroys them and finally clears up any callbacks. */ - destroy(): void; + destroy(): void; /** * Pauses all the sounds in the game. */ - pauseAll(): void; + pauseAll(): void; /** * Adds a new Sound into the SoundManager and starts it playing. @@ -24447,7 +24913,7 @@ declare module Phaser { * @param loop Whether or not the sound will loop. * @return The new sound instance. */ - play(key: string, volume?: number, loop?: boolean): Phaser.Sound; + play(key: string, volume?: number, loop?: boolean): Phaser.Sound; /** * Removes a Sound from the SoundManager. The removed Sound is destroyed before removal. @@ -24455,7 +24921,7 @@ declare module Phaser { * @param sound The sound object to remove. * @return True if the sound was removed successfully, otherwise false. */ - remove(sound: Phaser.Sound): boolean; + remove(sound: Phaser.Sound): boolean; /** * Removes all Sounds from the SoundManager that have an asset key matching the given value. @@ -24464,12 +24930,12 @@ declare module Phaser { * @param key The key to match when removing sound objects. * @return The number of matching sound objects that were removed. */ - removeByKey(key: string): number; + removeByKey(key: string): number; /** * Resumes every sound in the game. */ - resumeAll(): void; + resumeAll(): void; /** * This method allows you to give the SoundManager a list of Sound files, or keys, and a callback. @@ -24481,32 +24947,32 @@ declare module Phaser { * @param callback The callback which will be invoked once all files have finished decoding. * @param callbackContext The context in which the callback will run. */ - setDecodedCallback(files: string[] | Phaser.Sound[], callback: Function, callbackContext: any): void; + setDecodedCallback(files: string[] | Phaser.Sound[], callback: Function, callbackContext: any): void; /** * Sets the Input Manager touch callback to be SoundManager.unlock. * Required for iOS audio device unlocking. Mostly just used internally. */ - setTouchLock(): void; + setTouchLock(): void; /** * Stops all the sounds in the game. */ - stopAll(): void; + stopAll(): void; /** * Enables the audio, usually after the first touch. * @return True if the callback should be removed, otherwise false. */ - unlock(): boolean; + unlock(): boolean; /** * Updates every sound in the game, checks for audio unlock on mobile and monitors the decoding watch list. */ - update(): void; - - } - + update(): void; + + } + /** * Sprites are the lifeblood of your game, used for nearly everything visual. @@ -24515,8 +24981,8 @@ declare module Phaser { * They also contain additional properties allowing for physics motion (via Sprite.body), input handling (via Sprite.input), * events (via Sprite.events), animation (via Sprite.animations), camera culling and more. Please see the Examples for use cases. */ - class Sprite extends PIXI.Sprite { - + class Sprite extends PIXI.Sprite { + /** * Sprites are the lifeblood of your game, used for nearly everything visual. @@ -24531,8 +24997,8 @@ declare module Phaser { * @param key This is the image or texture used by the Sprite during rendering. It can be a string which is a reference to the Cache entry, or an instance of a RenderTexture or PIXI.Texture. * @param frame If this Sprite is using part of a sprite sheet or texture atlas you can specify the exact frame to use by giving a string or numeric index. */ - constructor(game: Phaser.Game, x: number, y: number, key?: string | Phaser.RenderTexture | Phaser.BitmapData | PIXI.Texture, frame?: string | number); - + constructor(game: Phaser.Game, x: number, y: number, key?: string | Phaser.RenderTexture | Phaser.BitmapData | PIXI.Texture, frame?: string | number); + /** * A useful flag to control if the Game Object is alive or dead. @@ -24544,7 +25010,7 @@ declare module Phaser { * However you can use `Group.getFirstAlive` in conjunction with this property for fast object pooling and recycling. * Default: true */ - alive: boolean; + alive: boolean; /** * The anchor sets the origin point of the texture. @@ -24552,7 +25018,7 @@ declare module Phaser { * Setting than anchor to 0.5,0.5 means the textures origin is centered * Setting the anchor to 1,1 would mean the textures origin points will be the bottom right corner */ - anchor: Phaser.Point; + anchor: Phaser.Point; /** * The angle property is the rotation of the Game Object in *degrees* from its original orientation. @@ -24565,13 +25031,13 @@ declare module Phaser { * If you wish to work in radians instead of degrees you can use the property `rotation` instead. * Working in radians is slightly faster as it doesn't have to perform any calculations. */ - angle: number; + angle: number; /** * If the Game Object is enabled for animation (such as a Phaser.Sprite) this is a reference to its AnimationManager instance. * Through it you can create, play, pause and stop animations. */ - animations: Phaser.AnimationManager; + animations: Phaser.AnimationManager; /** * A Game Object with `autoCull` set to true will check its bounds against the World Camera every frame. @@ -24581,7 +25047,7 @@ declare module Phaser { * This is a relatively expensive operation, especially if enabled on hundreds of Game Objects. So enable it only if you know it's required, * or you have tested performance and find it acceptable. */ - autoCull: boolean; + autoCull: boolean; /** * `body` is the Game Objects physics body. Once a Game Object is enabled for physics you access all associated @@ -24599,32 +25065,32 @@ declare module Phaser { * * If you need a different result then adjust or re-create the Body shape offsets manually or reset the anchor after enabling physics. */ - body: Phaser.Physics.Arcade.Body | Phaser.Physics.P2.Body | Phaser.Physics.Ninja.Body | any; + body: Phaser.Physics.Arcade.Body | Phaser.Physics.P2.Body | Phaser.Physics.Ninja.Body | any; /** * The sum of the y and height properties. * This is the same as `y + height - offsetY`. */ - bottom: number; + bottom: number; /** * The x/y coordinate offset applied to the top-left of the camera that this Game Object will be drawn at if `fixedToCamera` is true. * * The values are relative to the top-left of the camera view and in addition to any parent of the Game Object on the display list. */ - cameraOffset: Phaser.Point; + cameraOffset: Phaser.Point; /** * The center x coordinate of the Game Object. * This is the same as `(x - offsetX) + (width / 2)`. */ - centerX: number; + centerX: number; /** * The center y coordinate of the Game Object. * This is the same as `(y - offsetY) + (height / 2)`. */ - centerY: number; + centerY: number; /** * If this is set to `true` the Game Object checks if it is within the World bounds each frame. @@ -24640,24 +25106,24 @@ declare module Phaser { * This is a relatively expensive operation, especially if enabled on hundreds of Game Objects. So enable it only if you know it's required, * or you have tested performance and find it acceptable. */ - checkWorldBounds: boolean; + checkWorldBounds: boolean; /** * The components this Game Object has installed. */ - components: any; + components: any; /** * The Rectangle used to crop the texture this Game Object uses. * Set this property via `crop`. * If you modify this property directly you must call `updateCrop` in order to have the change take effect. */ - cropRect: Phaser.Rectangle; + cropRect: Phaser.Rectangle; /** * Does this texture require a custom render call? (as set by BitmapData, Video, etc) */ - customRender: boolean; + customRender: boolean; /** * An empty Object that belongs to this Game Object. @@ -24666,49 +25132,49 @@ declare module Phaser { * without polluting the Game Object directly. * Default: {} */ - data: any; + data: any; /** * A debug flag designed for use with `Game.enableStep`. */ - debug: boolean; + debug: boolean; /** * Returns the delta x value. The difference between world.x now and in the previous frame. * * The value will be positive if the Game Object has moved to the right or negative if to the left. */ - deltaX: number; + deltaX: number; /** * Returns the delta y value. The difference between world.y now and in the previous frame. * * The value will be positive if the Game Object has moved down or negative if up. */ - deltaY: number; + deltaY: number; /** * Returns the delta z value. The difference between rotation now and in the previous frame. The delta value. */ - deltaZ: number; + deltaZ: number; /** * As a Game Object runs through its destroy method this flag is set to true, * and can be checked in any sub-systems or plugins it is being destroyed from. */ - destroyPhase: boolean; + destroyPhase: boolean; /** * All Phaser Game Objects have an Events class which contains all of the events that are dispatched when certain things happen to this * Game Object, or any of its components. */ - events: Phaser.Events; + events: Phaser.Events; /** * Controls if this Sprite is processed by the core Phaser game loops and Group loops. * Default: true */ - exists: boolean; + exists: boolean; /** * A Game Object that is "fixed" to the camera uses its x/y coordinates as offsets from the top left of the camera during rendering. @@ -24725,7 +25191,7 @@ declare module Phaser { * * Be careful not to set `fixedToCamera` on Game Objects which are in Groups that already have `fixedToCamera` enabled on them. */ - fixedToCamera: boolean; + fixedToCamera: boolean; /** * Gets or sets the current frame index of the texture being used to render this Game Object. @@ -24739,7 +25205,7 @@ declare module Phaser { * * If you wish to fully replace the texture being used see `loadTexture`. */ - frame: string | number; + frame: string | number; /** * Gets or sets the current frame name of the texture being used to render this Game Object. @@ -24753,18 +25219,18 @@ declare module Phaser { * * If you wish to fully replace the texture being used see `loadTexture`. */ - frameName: string; + frameName: string; /** * A Game Object is considered `fresh` if it has just been created or reset and is yet to receive a renderer transform update. * This property is mostly used internally by the physics systems, but is exposed for the use of plugins. */ - fresh: boolean; + fresh: boolean; /** * A reference to the currently running Game. */ - game: Phaser.Game; + game: Phaser.Game; /** * The Game Objects health value. This is a handy property for setting and manipulating health on a Game Object. @@ -24772,13 +25238,13 @@ declare module Phaser { * It can be used in combination with the `damage` method or modified directly. * Default: 1 */ - health: number; + health: number; /** * Checks if the Game Objects bounds intersect with the Game Camera bounds. * Returns `true` if they do, otherwise `false` if fully outside of the Cameras bounds. */ - inCamera: boolean; + inCamera: boolean; /** * The Input Handler for this Game Object. @@ -24787,7 +25253,7 @@ declare module Phaser { * * After you have done this, this property will be a reference to the Phaser InputHandler. */ - input: Phaser.InputHandler; + input: Phaser.InputHandler; /** * By default a Game Object won't process any input events. By setting `inputEnabled` to true a Phaser.InputHandler is created @@ -24798,13 +25264,17 @@ declare module Phaser { * Note that Input related events are dispatched from `this.events`, i.e.: `events.onInputDown`. * * If you set this property to false it will stop the Input Handler from processing any more input events. + * + * If you want to _temporarily_ disable input for a Game Object, then it's better to set + * `input.enabled = false`, as it won't reset any of the Input Handlers internal properties. + * You can then toggle this back on as needed. */ - inputEnabled: boolean; + inputEnabled: boolean; /** * Checks if the Game Objects bounds are within, or intersect at any point with the Game World bounds. */ - inWorld: boolean; + inWorld: boolean; /** * The key of the image or texture used by this Game Object during rendering. @@ -24813,13 +25283,13 @@ declare module Phaser { * If a Game Object is created without a key it is automatically assigned the key `__default` which is a 32x32 transparent PNG stored within the Cache. * If a Game Object is given a key which doesn't exist in the Image Cache it is re-assigned the key `__missing` which is a 32x32 PNG of a green box with a line through it. */ - key: string | Phaser.RenderTexture | Phaser.BitmapData | Phaser.Video | PIXI.Texture; + key: string | Phaser.RenderTexture | Phaser.BitmapData | Phaser.Video | PIXI.Texture; /** * The left coordinate of the Game Object. * This is the same as `x - offsetX`. */ - left: number; + left: number; /** * The lifespan allows you to give a Game Object a lifespan in milliseconds. @@ -24831,39 +25301,39 @@ declare module Phaser { * * Very handy for particles, bullets, collectibles, or any other short-lived entity. */ - lifespan: number; + lifespan: number; /** * The Game Objects maximum health value. This works in combination with the `heal` method to ensure * the health value never exceeds the maximum. * Default: 100 */ - maxHealth: number; + maxHealth: number; /** * A user defined name given to this Game Object. * This value isn't ever used internally by Phaser, it is meant as a game level property. */ - name: string; + name: string; /** * The amount the Game Object is visually offset from its x coordinate. * This is the same as `width * anchor.x`. * It will only be > 0 if anchor.x is not equal to zero. */ - offsetX: number; + offsetX: number; /** * The amount the Game Object is visually offset from its y coordinate. * This is the same as `height * anchor.y`. * It will only be > 0 if anchor.y is not equal to zero. */ - offsetY: number; + offsetY: number; /** * If this and the `checkWorldBounds` property are both set to `true` then the `kill` method is called as soon as `inWorld` returns false. */ - outOfBoundsKill: boolean; + outOfBoundsKill: boolean; /** * A Game Object is that is pendingDestroy is flagged to have its destroy method called on the next logic update. @@ -24872,45 +25342,37 @@ declare module Phaser { * This is extremely useful if you wish to destroy an object from within one of its own callbacks * such as with Buttons or other Input events. */ - pendingDestroy: boolean; + pendingDestroy: boolean; /** * The position the Game Object was located in the previous frame. */ - previousPosition: Phaser.Point; + previousPosition: Phaser.Point; /** * The rotation the Game Object was in set to in the previous frame. Value is in radians. */ - previousRotation: number; - - /** - * The coordinate of the object relative to the local coordinates of the parent. - */ - position: Phaser.Point; - physicsEnabled: boolean; + previousRotation: number; + position: Phaser.Point; + physicsEnabled: boolean; /** * The const physics body type of this object. */ - physicsType: number; + physicsType: number; /** * The render order ID is used internally by the renderer and Input Manager and should not be modified. * This property is mostly used internally by the renderers, but is exposed for the use of plugins. */ - renderOrderID: number; + renderOrderID: number; /** * The right coordinate of the Game Object. * This is the same as `x + width - offsetX`. */ - right: number; - - /** - * The scale factor of the object. - */ - scale: Phaser.Point; + right: number; + scale: Phaser.Point; /** * The minimum scale this Game Object will scale down to. @@ -24919,7 +25381,7 @@ declare module Phaser { * * Set it to `null` to remove the limit. */ - scaleMin: Phaser.Point; + scaleMin: Phaser.Point; /** * The maximum scale this Game Object will scale up to. @@ -24928,7 +25390,7 @@ declare module Phaser { * * Set it to `null` to remove the limit. */ - scaleMax: Phaser.Point; + scaleMax: Phaser.Point; /** * Enable or disable texture smoothing for this Game Object. @@ -24937,51 +25399,51 @@ declare module Phaser { * * Smoothing is enabled by default. */ - smoothed: boolean; + smoothed: boolean; /** * The y coordinate of the Game Object. * This is the same as `y - offsetY`. */ - top: number; + top: number; /** * The const type of this object. */ - type: number; + type: number; /** * A canvas that contains the tinted version of the Sprite (in Canvas mode, WebGL doesn't populate this) * Default: null */ - tintedTexture: HTMLCanvasElement; + tintedTexture: HTMLCanvasElement; /** * The callback that will apply any scale limiting to the worldTransform. */ - transformCallback: Function; + transformCallback: Function; /** * The context under which `transformCallback` is called. */ - transformCallbackContext: any; + transformCallbackContext: any; /** * The world coordinates of this Game Object in pixels. * Depending on where in the display list this Game Object is placed this value can differ from `position`, * which contains the x/y coordinates relative to the Game Objects parent. */ - world: Phaser.Point; + world: Phaser.Point; /** - * The position of the displayObject on the x axis relative to the local coordinates of the parent. + * The position of the Game Object on the x axis relative to the local coordinates of the parent. */ - x: number; + x: number; /** - * The position of the displayObject on the y axis relative to the local coordinates of the parent. + * The position of the Game Object on the y axis relative to the local coordinates of the parent. */ - y: number; + y: number; /** * The z depth of this Game Object within its parent Group. @@ -24989,8 +25451,8 @@ declare module Phaser { * This value is adjusted automatically whenever the Group hierarchy changes. * If you wish to re-order the layering of a Game Object then see methods like Group.moveUp or Group.bringToTop. */ - z: number; - + z: number; + /** * Aligns this Game Object within another Game Object, or Rectangle, known as the @@ -25030,7 +25492,7 @@ declare module Phaser { * @param offsetY A vertical adjustment of the Containers bounds, applied to the aligned position of the Game Object. Use a negative value to shrink the bounds, positive to increase it. * @return This Game Object. */ - alignIn(container: Phaser.Rectangle | Phaser.Sprite | Phaser.Image | Phaser.Text | Phaser.BitmapText | Phaser.Button | Phaser.Graphics | Phaser.TileSprite, position?: number, offsetX?: number, offsetY?: number): any; + alignIn(container: Phaser.Rectangle | Phaser.Sprite | Phaser.Image | Phaser.Text | Phaser.BitmapText | Phaser.Button | Phaser.Graphics | Phaser.TileSprite, position?: number, offsetX?: number, offsetY?: number): any; /** * Aligns this Game Object to the side of another Game Object, or Rectangle, known as the @@ -25071,7 +25533,7 @@ declare module Phaser { * @param offsetY A vertical adjustment of the Containers bounds, applied to the aligned position of the Game Object. Use a negative value to shrink the bounds, positive to increase it. * @return This Game Object. */ - alignTo(container: Phaser.Rectangle | Phaser.Sprite | Phaser.Image | Phaser.Text | Phaser.BitmapText | Phaser.Button | Phaser.Graphics | Phaser.TileSprite, position?: number, offsetX?: number, offsetY?: number): any; + alignTo(container: Phaser.Rectangle | Phaser.Sprite | Phaser.Image | Phaser.Text | Phaser.BitmapText | Phaser.Button | Phaser.Graphics | Phaser.TileSprite, position?: number, offsetX?: number, offsetY?: number): any; /** * Brings this Game Object to the top of its parents display list. @@ -25081,7 +25543,7 @@ declare module Phaser { * because the World is the root Group from which all Game Objects descend. * @return This instance. */ - bringToTop(): Phaser.Sprite; + bringToTop(): Phaser.Sprite; /** * Crop allows you to crop the texture being used to display this Game Object. @@ -25099,23 +25561,31 @@ declare module Phaser { * @param rect The Rectangle used during cropping. Pass null or no parameters to clear a previously set crop rectangle. * @param copy If false `cropRect` will be stored as a reference to the given rect. If true it will copy the rect values into a local Phaser Rectangle object stored in cropRect. */ - crop(rect: Phaser.Rectangle, copy: boolean): void; + crop(rect: Phaser.Rectangle, copy: boolean): void; /** * Adjust scaling limits, if set, to this Game Object. * * @param wt The updated worldTransform matrix. */ - checkTransform(wt: PIXI.Matrix): void; - damage(amount: number): Phaser.Sprite; + checkTransform(wt: PIXI.Matrix): void; + damage(amount: number): Phaser.Sprite; /** - * Destroy this DisplayObject. - * Removes all references to transformCallbacks, its parent, the stage, filters, bounds, mask and cached Sprites. + * Destroys the Game Object. This removes it from its parent group, destroys the input, event and animation handlers if present + * and nulls its reference to `game`, freeing it up for garbage collection. + * + * If this Game Object has the Events component it will also dispatch the `onDestroy` event. + * + * You can optionally also destroy the BaseTexture this Game Object is using. Be careful if you've + * more than one Game Object sharing the same BaseTexture. + * + * @param destroyChildren Should every child of this object have its destroy method called as well? - Default: true + * @param destroyTexture Destroy the BaseTexture this Game Object is using? Note that if another Game Object is sharing the same BaseTexture it will invalidate it. */ - destroy(destroyChildren?: boolean): void; - drawPolygon(): void; - heal(amount: number): Phaser.Sprite; + destroy(destroyChildren?: boolean): void; + drawPolygon(): void; + heal(amount: number): Phaser.Sprite; /** * Kills a Game Object. A killed Game Object has its `alive`, `exists` and `visible` properties all set to false. @@ -25128,7 +25598,7 @@ declare module Phaser { * If you don't need this Game Object any more you should call `destroy` instead. * @return This instance. */ - kill(): Phaser.Sprite; + kill(): Phaser.Sprite; /** * Changes the base texture the Game Object is using. The old texture is removed and the new one is referenced or fetched from the Cache. @@ -25152,7 +25622,7 @@ declare module Phaser { * @param frame If this Sprite is using part of a sprite sheet or texture atlas you can specify the exact frame to use by giving a string or numeric index. * @param stopAnimation If an animation is already playing on this Sprite you can choose to stop it or let it carry on playing. - Default: true */ - loadTexture(key: string | Phaser.RenderTexture | Phaser.BitmapData | Phaser.Video | PIXI.Texture, frame?: string | number, stopAnimation?: boolean): void; + loadTexture(key: string | Phaser.RenderTexture | Phaser.BitmapData | Phaser.Video | PIXI.Texture, frame?: string | number, stopAnimation?: boolean): void; /** * Moves this Game Object up one place in its parents display list. @@ -25162,7 +25632,7 @@ declare module Phaser { * because the World is the root Group from which all Game Objects descend. * @return This instance. */ - moveUp(): Phaser.Sprite; + moveUp(): Phaser.Sprite; /** * Moves this Game Object down one place in its parents display list. @@ -25172,7 +25642,7 @@ declare module Phaser { * because the World is the root Group from which all Game Objects descend. * @return This instance. */ - moveDown(): Phaser.Sprite; + moveDown(): Phaser.Sprite; /** * Checks to see if the bounds of this Game Object overlaps with the bounds of the given Display Object, @@ -25186,7 +25656,7 @@ declare module Phaser { * @param displayObject The display object to check against. * @return True if the bounds of this Game Object intersects at any point with the bounds of the given display object. */ - overlap(displayObject: Phaser.Sprite | Phaser.Image | Phaser.TileSprite | Phaser.Button | PIXI.DisplayObject): boolean; + overlap(displayObject: Phaser.Sprite | Phaser.Image | Phaser.TileSprite | Phaser.Button | PIXI.DisplayObject): boolean; /** * Plays an Animation. @@ -25202,18 +25672,18 @@ declare module Phaser { * @param killOnComplete If set to true when the animation completes (only happens if loop=false) the parent Sprite will be killed. * @return A reference to playing Animation. */ - play(name: string, frameRate?: number, loop?: boolean, killOnComplete?: boolean): Phaser.Animation; + play(name: string, frameRate?: number, loop?: boolean, killOnComplete?: boolean): Phaser.Animation; /** * Internal method called by the World postUpdate cycle. */ - postUpdate(): void; + postUpdate(): void; /** * Automatically called by World.preUpdate. * @return True if the Sprite was rendered, otherwise false. */ - preUpdate(): void; + preUpdate(): void; /** * Resets the Game Object. @@ -25230,12 +25700,12 @@ declare module Phaser { * @param health The health to give the Game Object if it has the Health component. - Default: 1 * @return This instance. */ - reset(x: number, y: number, health?: number): Phaser.Sprite; + reset(x: number, y: number, health?: number): Phaser.Sprite; /** * Resets the texture frame dimensions that the Game Object uses for rendering. */ - resetFrame(): void; + resetFrame(): void; /** * Resizes the Frame dimensions that the Game Object uses for rendering. @@ -25247,7 +25717,7 @@ declare module Phaser { * @param width The new width of the texture. * @param height The new height of the texture. */ - resizeFrame(parent: any, width: number, height: number): void; + resizeFrame(parent: any, width: number, height: number): void; /** * Brings a 'dead' Game Object back to life, optionally resetting its health value in the process. @@ -25259,7 +25729,7 @@ declare module Phaser { * @param health The health to give the Game Object. Only set if the GameObject has the Health component. - Default: 100 * @return This instance. */ - revive(health?: number): Phaser.Sprite; + revive(health?: number): Phaser.Sprite; /** * Sends this Game Object to the bottom of its parents display list. @@ -25269,7 +25739,7 @@ declare module Phaser { * because the World is the root Group from which all Game Objects descend. * @return This instance. */ - sendToBack(): Phaser.Sprite; + sendToBack(): Phaser.Sprite; /** * Sets the texture frame the Game Object uses for rendering. @@ -25278,7 +25748,7 @@ declare module Phaser { * * @param frame The Frame to be used by the texture. */ - setFrame(frame: Phaser.Frame): void; + setFrame(frame: Phaser.Frame): void; /** * Sets the scaleMin and scaleMax values. These values are used to limit how far this Game Object will scale based on its parent. @@ -25304,23 +25774,23 @@ declare module Phaser { * @param maxX The maximum horizontal scale value this Game Object can scale up to. * @param maxY The maximum vertical scale value this Game Object can scale up to. */ - setScaleMinMax(minX?: number, minY?: number, maxX?: number, maxY?: number): void; + setScaleMinMax(minX?: number, minY?: number, maxX?: number, maxY?: number): void; /** * Override this method in your own custom objects to handle any update requirements. * It is called immediately after `preUpdate` and before `postUpdate`. * Remember if this Game Object has any children you should call update on those too. */ - update(): void; + update(): void; /** * If you have set a crop rectangle on this Game Object via `crop` and since modified the `cropRect` property, * or the rectangle it references, then you need to update the crop frame by calling this method. */ - updateCrop(): void; - - } - + updateCrop(): void; + + } + /** * The SpriteBatch class is a really fast version of the DisplayObjectContainer built purely for speed, so use when you need a lot of sprites or particles. @@ -25330,8 +25800,8 @@ declare module Phaser { * * Please note that any Sprite that is part of a SpriteBatch will not have its bounds updated, so will fail checks such as outOfBounds. */ - class SpriteBatch extends Phaser.Group { - + class SpriteBatch extends Phaser.Group { + /** * The SpriteBatch class is a really fast version of the DisplayObjectContainer built purely for speed, so use when you need a lot of sprites or particles. @@ -25346,23 +25816,23 @@ declare module Phaser { * @param name A name for this Group. Not used internally but useful for debugging. - Default: group * @param addToStage If set to true this Group will be added directly to the Game.Stage instead of Game.World. */ - constructor(game: Phaser.Game, parent: PIXI.DisplayObjectContainer, name?: string, addedToStage?: boolean); - + constructor(game: Phaser.Game, parent: PIXI.DisplayObjectContainer, name?: string, addedToStage?: boolean); + /** * Internal Phaser Type value. */ - type: number; - - } - + type: number; + + } + /** * The Stage controls root level display objects upon which everything is displayed. * It also handles browser visibility handling and the pausing due to loss of focus. */ - class Stage extends PIXI.DisplayObjectContainer { - + class Stage extends PIXI.DisplayObjectContainer { + /** * The Stage controls root level display objects upon which everything is displayed. @@ -25370,19 +25840,19 @@ declare module Phaser { * * @param game Game reference to the currently running game. */ - constructor(game: Phaser.Game); - + constructor(game: Phaser.Game); + /** * A reference to the currently running Game. */ - game: Phaser.Game; + game: Phaser.Game; /** * The name of this object. * Default: _stage_root */ - name: string; + name: string; /** * By default if the browser tab loses focus the game will pause. @@ -25391,73 +25861,73 @@ declare module Phaser { * for example swapping to another browser tab. This will cause the RAF callback to halt, * effectively pausing your game, even though no in-game pause event is triggered if you enable this property. */ - disableVisibilityChange: boolean; + disableVisibilityChange: boolean; /** * If exists is true the Stage and all children are updated, otherwise it is skipped. * Default: true */ - exists: boolean; + exists: boolean; /** * Reset each frame, keeps a count of the total number of objects updated. */ - currentRenderOrderID: number; + currentRenderOrderID: number; /** * Gets and sets the background color of the stage. The color can be given as a number: 0xff0000 or a hex string: '#ff0000' */ - backgroundColor: any; + backgroundColor: any; /** * Enable or disable texture smoothing for all objects on this Stage. Only works for bitmap/image textures. Smoothing is enabled by default. Set to true to smooth all sprites rendered on this Stage, or false to disable smoothing (great for pixel art) */ - smoothed: boolean; - + smoothed: boolean; + /** * Parses a Game configuration object. * * @param config The configuration object to parse. */ - parseConfig(config: any): void; + parseConfig(config: any): void; /** * This is called automatically after the plugins preUpdate and before the State.update. * Most objects have preUpdate methods and it's where initial movement and positioning is done. */ - preUpdate(): void; + preUpdate(): void; /** * This is called automatically after the State.update, but before particles or plugins update. */ - update(): void; + update(): void; /** * This is called automatically before the renderer runs and after the plugins have updated. * In postUpdate this is where all the final physics calculations and object positioning happens. * The objects are processed in the order of the display list. */ - postUpdate(): void; + postUpdate(): void; /** * Updates the transforms for all objects on the display list. * This overrides the Pixi default as we don't need the interactionManager, but do need the game property check. */ - updateTransform(): void; + updateTransform(): void; /** * Starts a page visibility event listener running, or window.onpagehide/onpageshow if not supported by the browser. * Also listens for window.onblur and window.onfocus. */ - checkVisibility(): void; + checkVisibility(): void; /** * This method is called when the document visibility is changed. * * @param event Its type will be used to decide whether the game should be paused or not. */ - visibilityChange(event: Event): void; + visibilityChange(event: Event): void; /** * Sets the background color for the Stage. @@ -25470,19 +25940,19 @@ declare module Phaser { * * @param color The color of the background. */ - setBackgroundColor(backgroundColor: number | string): void; + setBackgroundColor(backgroundColor: number | string): void; /** * Destroys the Stage and removes event listeners. */ - destroy(): void; - - } - - interface ResizeCallback { - (scale: ScaleManager, parentBounds: Rectangle): any; - } - + destroy(): void; + + } + + interface ResizeCallback { + (scale: ScaleManager, parentBounds: Rectangle): any; + } + /** * The ScaleManager object handles the the scaling, resizing, and alignment of the @@ -25512,8 +25982,8 @@ declare module Phaser { * - The Display canvas layout CSS styles (i.e. margins, size) should not be altered/specified as * they may be updated by the ScaleManager. */ - class ScaleManager { - + class ScaleManager { + /** * Create a new ScaleManager object - this is done automatically by {@link Phaser.Game} @@ -25524,44 +25994,44 @@ declare module Phaser { * @param width The width of the game. See above. * @param height The height of the game. See above. */ - constructor(game: Phaser.Game, width: number | string, height: number | string); - + constructor(game: Phaser.Game, width: number | string, height: number | string); + /** * A scale mode that stretches content to fill all available space - see {@link Phaser.ScaleManager#scaleMode scaleMode}. */ - static EXACT_FIT: number; + static EXACT_FIT: number; /** * A scale mode that prevents any scaling - see {@link Phaser.ScaleManager#scaleMode scaleMode}. */ - static NO_SCALE: number; + static NO_SCALE: number; /** * A scale mode that shows the entire game while maintaining proportions - see {@link Phaser.ScaleManager#scaleMode scaleMode}. */ - static SHOW_ALL: number; + static SHOW_ALL: number; /** * A scale mode that causes the Game size to change - see {@link Phaser.ScaleManager#scaleMode scaleMode}. */ - static RESIZE: number; + static RESIZE: number; /** * A scale mode that allows a custom scale factor - see {@link Phaser.ScaleManager#scaleMode scaleMode}. */ - static USER_SCALE: number; - + static USER_SCALE: number; + /** * The aspect ratio of the scaled Display canvas. */ - aspectRatio: number; + aspectRatio: number; /** * The bounds of the scaled game. The x/y will match the offset of the canvas element and the width/height the scaled width and height. */ - bounds: Rectangle; + bounds: Rectangle; /** * The DOM element that is considered the Parent bounding element, if any. @@ -25569,7 +26039,7 @@ declare module Phaser { * This `null` if {@link Phaser.ScaleManager#parentIsWindow parentIsWindow} is true or if fullscreen mode is entered and {@link Phaser.ScaleManager#fullScreenTarget fullScreenTarget} is specified. * It will also be null if there is no game canvas or if the game canvas has no parent. */ - boundingParent: HTMLElement; + boundingParent: HTMLElement; /** * Various compatibility settings. @@ -25577,57 +26047,57 @@ declare module Phaser { * * A {@link Phaser.ScaleManager#refresh refresh} may need to be performed after making changes. */ - compatibility: { - canExpandParent: boolean; - clickTrampoline: string; - forceMinimumDocumentHeight: boolean; - noMargins: boolean; - scrollTo: Point; - supportsFullScreen: boolean; - }; + compatibility: { + canExpandParent: boolean; + clickTrampoline: string; + forceMinimumDocumentHeight: boolean; + noMargins: boolean; + scrollTo: Point; + supportsFullScreen: boolean; + }; /** * Returns the current scale mode - for normal or fullscreen operation. * * See {@link Phaser.ScaleManager#scaleMode scaleMode} for the different modes allowed. */ - currentScaleMode: number; + currentScaleMode: number; /** * Provides access to some cross-device DOM functions. */ - dom: Phaser.DOM; + dom: Phaser.DOM; /** * This signal is dispatched when the browser enters an incorrect orientation, as defined by {@link Phaser.ScaleManager#forceOrientation forceOrientation}. * * This is signaled from `preUpdate` (or `pauseUpdate`) _even when_ the game is paused. */ - enterIncorrectOrientation: Signal; + enterIncorrectOrientation: Signal; /** * The native browser events from Fullscreen API changes. */ - event: any; + event: any; /** * If true, the game should only run in a landscape orientation. * Change with {@link Phaser.ScaleManager#forceOrientation forceOrientation}. */ - forceLandscape: boolean; + forceLandscape: boolean; /** * If true, the game should only run in a portrait * Change with {@link Phaser.ScaleManager#forceOrientation forceOrientation}. */ - forcePortrait: boolean; + forcePortrait: boolean; /** * The scaling method used by the ScaleManager when in fullscreen. * * See {@link Phaser.ScaleManager#scaleMode scaleMode} for the different modes allowed. */ - fullScreenScaleMode: number; + fullScreenScaleMode: number; /** * If specified, this is the DOM element on which the Fullscreen API enter request will be invoked. @@ -25639,34 +26109,34 @@ declare module Phaser { * * For pre-2.2.0 behavior set `game.scale.fullScreenTarget = game.canvas`. */ - fullScreenTarget: HTMLElement; + fullScreenTarget: HTMLElement; /** * A reference to the currently running game. */ - game: Phaser.Game; + game: Phaser.Game; /** * _EXPERIMENTAL:_ A responsive grid on which you can align game objects. */ - grid: Phaser.FlexGrid; + grid: Phaser.FlexGrid; /** * Target height (in pixels) of the Display canvas. */ - height: number; + height: number; /** * True if {@link Phaser.ScaleManager#forceLandscape forceLandscape} or {@link Phaser.ScaleManager#forcePortrait forcePortrait} are set and do not agree with the browser orientation. * * This value is not updated immediately. */ - incorrectOrientation: boolean; + incorrectOrientation: boolean; /** * Returns true if the browser is in fullscreen mode, otherwise false. */ - isFullScreen: boolean; + isFullScreen: boolean; /** * Returns true if the game dimensions are landscape (width > height). @@ -25674,7 +26144,7 @@ declare module Phaser { * but wanting to maintain game orientation on desktop browsers, * where typically the screen orientation will always be landscape regardless of the browser viewport. */ - isGameLandscape: boolean; + isGameLandscape: boolean; /** * Returns true if the game dimensions are portrait (height > width). @@ -25682,61 +26152,61 @@ declare module Phaser { * but wanting to maintain game orientation on desktop browsers, * where typically the screen orientation will always be landscape regardless of the browser viewport. */ - isGamePortrait: boolean; + isGamePortrait: boolean; /** * Returns true if the screen orientation is in portrait mode. */ - isPortrait: boolean; + isPortrait: boolean; /** * Returns true if the screen orientation is in landscape mode. */ - isLandscape: boolean; + isLandscape: boolean; /** * This signal is dispatched when the browser leaves an incorrect orientation, as defined by {@link Phaser.ScaleManager#forceOrientation forceOrientation}. * * This is signaled from `preUpdate` (or `pauseUpdate`) _even when_ the game is paused. */ - leaveIncorrectOrientation: Signal; + leaveIncorrectOrientation: Signal; /** * The Display canvas is aligned by adjusting the margins; the last margins are stored here. */ - margin: { left: number; top: number; right: number; bottom: number; x: number; y: number; }; + margin: { left: number; top: number; right: number; bottom: number; x: number; y: number; }; /** * Maximum height the canvas should be scaled to (in pixels). * If null it will scale to whatever height the browser can handle. * Change with {@link Phaser.ScaleManager#setMinMax setMinMax}. */ - maxHeight: number; + maxHeight: number; /** * Maximum width the canvas should be scaled to (in pixels). * If null it will scale to whatever width the browser can handle. * Change with {@link Phaser.ScaleManager#setMinMax setMinMax}. */ - maxWidth: number; + maxWidth: number; /** * Minimum height the canvas should be scaled to (in pixels). * Change with {@link Phaser.ScaleManager#setMinMax setMinMax}. */ - minHeight: number; + minHeight: number; /** * Minimum width the canvas should be scaled to (in pixels). * Change with {@link Phaser.ScaleManager#setMinMax setMinMax}. */ - minWidth: number; + minWidth: number; /** * The offset coordinates of the Display canvas from the top-left of the browser window. * The is used internally by Phaser.Pointer (for Input) and possibly other types. */ - offset: Point; + offset: Point; /** * This signal is dispatched when fullscreen mode is ready to be initialized but @@ -25756,7 +26226,7 @@ declare module Phaser { * * The behavior of a pre-assigned target element is covered in {@link Phaser.ScaleManager#fullScreenTarget fullScreenTarget}. */ - onFullScreenInit: Phaser.Signal; + onFullScreenInit: Phaser.Signal; /** * This signal is dispatched when the browser enters or leaves fullscreen mode, if supported. @@ -25764,7 +26234,7 @@ declare module Phaser { * The signal is supplied with a single argument: `scale` (the ScaleManager). Use `scale.isFullScreen` to determine * if currently running in Fullscreen mode. */ - onFullScreenChange: Phaser.Signal; + onFullScreenChange: Phaser.Signal; /** * This signal is dispatched when the browser fails to enter fullscreen mode; @@ -25772,7 +26242,7 @@ declare module Phaser { * * The signal is supplied with a single argument: `scale` (the ScaleManager). */ - onFullScreenError: Phaser.Signal; + onFullScreenError: Phaser.Signal; /** * This signal is dispatched when the orientation changes _or_ the validity of the current orientation changes. @@ -25795,7 +26265,7 @@ declare module Phaser { * * This is signaled from `preUpdate` (or `pauseUpdate`) _even when_ the game is paused. */ - onOrientationChange: Phaser.Signal; + onOrientationChange: Phaser.Signal; /** * This signal is dispatched when the size of the Display canvas changes _or_ the size of the Game changes. @@ -25809,7 +26279,7 @@ declare module Phaser { * * This is signaled from `preUpdate` (or `pauseUpdate`) _even when_ the game is paused. */ - onSizeChange: Signal; + onSizeChange: Signal; /** * When enabled the Display canvas will be horizontally-aligned _in the Parent container_ (or {@link Phaser.ScaleManager#parentIsWindow window}). @@ -25820,7 +26290,7 @@ declare module Phaser { * Horizontal alignment is not applicable with the {@link Phaser.ScaleManager.RESIZE RESIZE} scaling mode. * Default: false */ - pageAlignHorizontally: boolean; + pageAlignHorizontally: boolean; /** * When enabled the Display canvas will be vertically-aligned _in the Parent container_ (or {@link Phaser.ScaleManager#parentIsWindow window}). @@ -25838,7 +26308,7 @@ declare module Phaser { * Vertical alignment is not applicable with the {@link Phaser.ScaleManager.RESIZE RESIZE} scaling mode. * Default: false */ - pageAlignVertically: boolean; + pageAlignVertically: boolean; /** * The _original_ DOM element for the parent of the Display canvas. @@ -25846,7 +26316,7 @@ declare module Phaser { * * This should only be changed after moving the Game canvas to a different DOM parent. */ - parentNode: HTMLElement; + parentNode: HTMLElement; /** * If the parent container of the Game canvas is the browser window itself (i.e. document.body), @@ -25854,22 +26324,22 @@ declare module Phaser { * * The {@link Phaser.ScaleManager#parentNode parentNode} property is generally ignored while this is in effect. */ - parentIsWindow: boolean; + parentIsWindow: boolean; /** * The scale of the game in relation to its parent container. */ - parentScaleFactor: Point; + parentScaleFactor: Point; /** * The _current_ scale factor based on the game dimensions vs. the scaled dimensions. */ - scaleFactor: Point; + scaleFactor: Point; /** * The _current_ inversed scale factor. The displayed dimensions divided by the game dimensions. */ - scaleFactorInversed: Point; + scaleFactorInversed: Point; /** * The scaling method used by the ScaleManager when not in fullscreen. @@ -25905,30 +26375,30 @@ declare module Phaser { * * */ - scaleMode: number; + scaleMode: number; /** * The _last known_ orientation of the screen, as defined in the Window Screen Web API. * See {@link Phaser.DOM.getScreenOrientation} for possible values. */ - screenOrientation: string; + screenOrientation: string; /** * The aspect ratio of the original game dimensions. */ - sourceAspectRatio: number; + sourceAspectRatio: number; /** * The maximum time (in ms) between dimension update checks for the Canvas's parent element (or window). * Update checks normally happen quicker in response to other events. * Default: 2000 */ - trackParentInterval: number; + trackParentInterval: number; /** * Target width (in pixels) of the Display canvas. */ - width: number; + width: number; /** * The edges on which to constrain the game Display/canvas in _addition_ to the restrictions of the parent container. @@ -25939,16 +26409,16 @@ declare module Phaser { * - An invalid value is treated as 'visual' * Default: {"right":"layout","bottom":""} */ - windowConstraints: { - bottom: string; - right: string; - }; - + windowConstraints: { + bottom: string; + right: string; + }; + /** * Start the ScaleManager. */ - boot(): void; + boot(): void; /** * Creates a fullscreen target. This is called automatically as as needed when entering @@ -25956,13 +26426,13 @@ declare module Phaser { * * Use {@link Phaser.ScaleManager#onFullScreenInit onFullScreenInit} to customize the created object. */ - createFullScreenTarget(): HTMLDivElement; + createFullScreenTarget(): HTMLDivElement; /** * Destroys the ScaleManager and removes any event listeners. * This should probably only be called when the game is destroyed. */ - destroy(): void; + destroy(): void; /** * Force the game to run in only one orientation. @@ -25976,7 +26446,7 @@ declare module Phaser { * @param forceLandscape true if the game should run in landscape mode only. * @param forcePortrait true if the game should run in portrait mode only. */ - forceOrientation(forceLandscape: boolean, forcePortrait?: boolean): void; + forceOrientation(forceLandscape: boolean, forcePortrait?: boolean): void; /** * Returns the computed Parent size/bounds that the Display canvas is allowed/expected to fill. @@ -25992,24 +26462,24 @@ declare module Phaser { * @param target The rectangle to update; a new one is created as needed. - Default: (new Rectangle) * @return The established parent bounds. */ - getParentBounds(target?: Rectangle): Rectangle; + getParentBounds(target?: Rectangle): Rectangle; /** * Load configuration settings. * * @param config The game configuration object. */ - parseConfig(config: any): void; + parseConfig(config: any): void; /** * The ScaleManager.preUpdate is called automatically by the core Game loop. */ - preUpdate(): void; + preUpdate(): void; /** * Update method while paused. */ - pauseUpdate(): void; + pauseUpdate(): void; /** * The "refresh" methods informs the ScaleManager that a layout refresh is required. @@ -26028,7 +26498,7 @@ declare module Phaser { * * The queued layout refresh is not immediate but will run promptly in an upcoming `preRender`. */ - refresh(): void; + refresh(): void; /** * Set the actual Game size. @@ -26043,7 +26513,7 @@ declare module Phaser { * @param width _Game width_, in pixels. * @param height _Game height_, in pixels. */ - setGameSize(width: number, height: number): void; + setGameSize(width: number, height: number): void; /** * Sets the callback that will be invoked before sizing calculations. @@ -26063,7 +26533,7 @@ declare module Phaser { * @param callback The callback that will be called each time a window.resize event happens or if set, the parent container resizes. * @param context The context in which the callback will be called. */ - setResizeCallback(callback: ResizeCallback, context: any): void; + setResizeCallback(callback: ResizeCallback, context: any): void; /** * Set a User scaling factor used in the USER_SCALE scaling mode. @@ -26080,7 +26550,7 @@ declare module Phaser { * @param hTrim Horizontal trim, applied after scaling. * @param vTrim Vertical trim, applied after scaling. */ - setUserScale(hScale: number, vScale: number, hTrim?: number, vTrim?: number): void; + setUserScale(hScale: number, vScale: number, hTrim?: number, vTrim?: number): void; /** * Set the min and max dimensions for the Display canvas. @@ -26094,7 +26564,7 @@ declare module Phaser { * @param maxWidth The maximum width the game is allowed to scale up to; only changed if specified. * @param maxHeight The maximum height the game is allowed to scale up to; only changed if specified. */ - setMinMax(minWidth: number, minHeight: number, maxWidth?: number, maxHeight?: number): void; + setMinMax(minWidth: number, minHeight: number, maxWidth?: number, maxHeight?: number): void; /** * Calculates and sets the game dimensions based on the given width and height. @@ -26104,7 +26574,7 @@ declare module Phaser { * @param width The width of the game. * @param height The height of the game. */ - setupScale(width: number, height: number): void; + setupScale(width: number, height: number): void; /** * Calculates and sets the game dimensions based on the given width and height. @@ -26114,7 +26584,7 @@ declare module Phaser { * @param width The width of the game. * @param height The height of the game. */ - setupScale(width: string, height: string): void; + setupScale(width: string, height: string): void; /** * Takes a Sprite or Image object and scales it to fit the given dimensions. @@ -26129,7 +26599,7 @@ declare module Phaser { * @param letterBox True if we want the `fitted` mode. Otherwise, the function uses the `zoom` mode. * @return The scaled sprite. */ - scaleSprite(sprite: Sprite, width?: number, height?: number, letterBox?: boolean): Sprite; + scaleSprite(sprite: Sprite, width?: number, height?: number, letterBox?: boolean): Sprite; /** * Takes a Sprite or Image object and scales it to fit the given dimensions. @@ -26144,7 +26614,7 @@ declare module Phaser { * @param letterBox True if we want the `fitted` mode. Otherwise, the function uses the `zoom` mode. * @return The scaled sprite. */ - scaleSprite(sprite: Image, width?: number, height?: number, letterBox?: boolean): Sprite; + scaleSprite(sprite: Image, width?: number, height?: number, letterBox?: boolean): Sprite; /** * Start the browsers fullscreen mode - this _must_ be called from a user input Pointer or Mouse event. @@ -26159,16 +26629,16 @@ declare module Phaser { * @param allowTrampoline Internal argument. If `false` click trampolining is suppressed. * @return Returns true if the device supports fullscreen mode and fullscreen mode was attempted to be started. (It might not actually start, wait for the signals.) */ - startFullScreen(antialias?: boolean, allowTrampoline?: boolean): boolean; + startFullScreen(antialias?: boolean, allowTrampoline?: boolean): boolean; /** * Stops / exits fullscreen mode, if active. * @return Returns true if the browser supports fullscreen mode and fullscreen mode will be exited. */ - stopFullScreen(): boolean; - - } - + stopFullScreen(): boolean; + + } + /** * DOM utility class. @@ -26178,8 +26648,8 @@ declare module Phaser { * Some code originally derived from {@link https://github.com/ryanve/verge verge}. * Some parts were inspired by the research of Ryan Van Etten, released under MIT License 2013. */ - class DOM { - + class DOM { + /** * The bounds of the Visual viewport, as discussed in @@ -26191,7 +26661,7 @@ declare module Phaser { * * The properties change dynamically. */ - static visualBounds: Phaser.Rectangle; + static visualBounds: Phaser.Rectangle; /** * The bounds of the Layout viewport, as discussed in @@ -26207,7 +26677,7 @@ declare module Phaser { * * The properties change dynamically. */ - static layoutBounds: Phaser.Rectangle; + static layoutBounds: Phaser.Rectangle; /** * The size of the document / Layout viewport. @@ -26216,8 +26686,8 @@ declare module Phaser { * * The properties change dynamically. */ - static documentBounds: Phaser.Rectangle; - + static documentBounds: Phaser.Rectangle; + /** * Calibrates element coordinates for `inLayoutViewport` checks. @@ -26226,7 +26696,7 @@ declare module Phaser { * @param cushion A value to adjust the coordinates by. * @return The calibrated element coordinates */ - static calibrate(coords: any, cushion?: number): any; + static calibrate(coords: any, cushion?: number): any; /** * Get the Visual viewport aspect ratio (or the aspect ratio of an object or element) @@ -26234,7 +26704,7 @@ declare module Phaser { * @param object The object to determine the aspect ratio for. Must have public `width` and `height` properties or methods. - Default: (visualViewport) * @return The aspect ratio. */ - static getAspectRatio(object: any): number; + static getAspectRatio(object: any): number; /** * Returns the device screen orientation. @@ -26259,7 +26729,7 @@ declare module Phaser { * * @param primaryFallback Specify 'screen', 'viewport', or 'window.orientation'. - Default: (none) */ - static getScreenOrientation(primaryFallback?: string): string; + static getScreenOrientation(primaryFallback?: string): string; /** * A cross-browser element.getBoundingClientRect method with optional cushion. @@ -26273,7 +26743,7 @@ declare module Phaser { * @param cushion A +/- pixel adjustment amount. * @return A plain object containing the properties `top/bottom/left/right/width/height` or `false` if a non-valid element is given. */ - static getBounds(element: any, cushion?: number): any; + static getBounds(element: any, cushion?: number): any; /** * Get the [absolute] position of the element relative to the Document. @@ -26284,7 +26754,7 @@ declare module Phaser { * @param point The point we want to take the x/y values of the offset. * @return - A point objet with the offsetX and Y as its properties. */ - static getOffset(element: any, point?: Point): Point; + static getOffset(element: any, point?: Point): Point; /** * Tests if the given DOM element is within the Layout viewport. @@ -26298,195 +26768,195 @@ declare module Phaser { * @param cushion The cushion allows you to specify a distance within which the element must be within the viewport. * @return True if the element is within the viewport, or within `cushion` distance from it. */ - static inLayoutViewport(element: any, cushion?: number): boolean; - } - + static inLayoutViewport(element: any, cushion?: number): boolean; + } + /** * This is a base State class which can be extended if you are creating your own game. * It provides quick access to common functions such as the camera, cache, input, match, sound and more. */ - class State { - + class State { + /** * A reference to the GameObjectFactory which can be used to add new objects to the World. */ - add: Phaser.GameObjectFactory; + add: Phaser.GameObjectFactory; /** * A reference to the game cache which contains any loaded or generated assets, such as images, sound and more. */ - cache: Phaser.Cache; + cache: Phaser.Cache; /** * A handy reference to World.camera. */ - camera: Phaser.Camera; + camera: Phaser.Camera; /** * This is a reference to the currently running Game. */ - game: Phaser.Game; + game: Phaser.Game; /** * A reference to the Input Manager. */ - input: Phaser.Input; + input: Phaser.Input; /** * The string based identifier given to the State when added into the State Manager. */ - key: string; + key: string; /** * A reference to the Loader, which you mostly use in the preload method of your state to load external assets. */ - load: Phaser.Loader; + load: Phaser.Loader; /** * A reference to the GameObjectCreator which can be used to make new objects. */ - make: Phaser.GameObjectCreator; + make: Phaser.GameObjectCreator; /** * The Particle Manager. It is called during the core gameloop and updates any Particle Emitters it has created. */ - particles: Phaser.Particles; + particles: Phaser.Particles; /** * A reference to the physics manager which looks after the different physics systems available within Phaser. */ - physics: Phaser.Physics; + physics: Phaser.Physics; /** * A reference to the seeded and repeatable random data generator. */ - rnd: Phaser.RandomDataGenerator; + rnd: Phaser.RandomDataGenerator; /** * A reference to the Scale Manager which controls the way the game scales on different displays. */ - scale: Phaser.ScaleManager; + scale: Phaser.ScaleManager; /** * A reference to the Sound Manager which can create, play and stop sounds, as well as adjust global volume. */ - sound: Phaser.SoundManager; + sound: Phaser.SoundManager; /** * A reference to the Stage. */ - stage: Phaser.Stage; + stage: Phaser.Stage; /** * A reference to the game clock and timed events system. */ - time: Phaser.Time; + time: Phaser.Time; /** * A reference to the tween manager. */ - tweens: Phaser.TweenManager; + tweens: Phaser.TweenManager; /** * A reference to the game world. All objects live in the Game World and its size is not bound by the display resolution. */ - world: Phaser.World; - + world: Phaser.World; + /** * create is called once preload has completed, this includes the loading of any assets from the Loader. * If you don't have a preload method then create is the first method called in your State. */ - create(): void; + create(): void; /** * init is the very first function called when your State starts up. It's called before preload, create or anything else. * If you need to route the game away to another State you could do so here, or if you need to prepare a set of variables * or objects before the preloading starts. */ - init(...args: any[]): void; + init(...args: any[]): void; /** * loadRender is called during the Loader process. This only happens if you've set one or more assets to load in the preload method. * The difference between loadRender and render is that any objects you render in this method you must be sure their assets exist. */ - loadRender(): void; + loadRender(): void; /** * loadUpdate is called during the Loader process. This only happens if you've set one or more assets to load in the preload method. */ - loadUpdate(): void; + loadUpdate(): void; /** * This method will be called if the core game loop is paused. */ - paused(): void; + paused(): void; /** * pauseUpdate is called while the game is paused instead of preUpdate, update and postUpdate. */ - pauseUpdate(): void; + pauseUpdate(): void; /** * preload is called first. Normally you'd use this to load your game assets (or those needed for the current State) * You shouldn't create any objects in this method that require assets that you're also loading in this method, as * they won't yet be available. */ - preload(): void; + preload(): void; /** * The preRender method is called after all Game Objects have been updated, but before any rendering takes place. */ - preRender(): void; + preRender(): void; /** * Nearly all display objects in Phaser render automatically, you don't need to tell them to render. * However the render method is called AFTER the game renderer and plugins have rendered, so you're able to do any * final post-processing style effects here. Note that this happens before plugins postRender takes place. */ - render(): void; + render(): void; /** * If your game is set to Scalemode RESIZE then each time the browser resizes it will call this function, passing in the new width and height. */ - resize(): void; + resize(): void; /** * This method will be called when the core game loop resumes from a paused state. */ - resumed(): void; + resumed(): void; /** * This method will be called when the State is shutdown (i.e. you switch to another state from this one). */ - shutdown(): void; + shutdown(): void; /** * The update method is left empty for your own use. * It is called during the core game loop AFTER debug, physics, plugins and the Stage have had their preUpdate methods called. * It is called BEFORE Stage, Tweens, Sounds, Input, Physics, Particles and Plugins have had their postUpdate methods called. */ - update(): void; - - } - - interface IStateCycle { - - preUpdate(): void; - update(): void; - render(): void; - postRender(): void; - destroy(): void; - } - + update(): void; + + } + + interface IStateCycle { + + preUpdate(): void; + update(): void; + render(): void; + postRender(): void; + destroy(): void; + } + /** * The State Manager is responsible for loading, setting up and switching game states. */ - class StateManager { - + class StateManager { + /** * The State Manager is responsible for loading, setting up and switching game states. @@ -26494,94 +26964,94 @@ declare module Phaser { * @param game A reference to the currently running game. * @param pendingState A State object to seed the manager with. */ - constructor(game: Phaser.Game, pendingState?: Phaser.State); - + constructor(game: Phaser.Game, pendingState?: Phaser.State); + /** * True if the current state has had its `create` method run (if it has one, if not this is true by default). */ - created: boolean; + created: boolean; /** * The current active State object. */ - current: string; + current: string; /** * A reference to the currently running game. */ - game: Phaser.Game; + game: Phaser.Game; /** * This is called when the state preload has finished and creation begins. */ - onCreateCallback: Function; + onCreateCallback: Function; /** * This is called when the state is set as the active state. */ - onInitCallback: Function; + onInitCallback: Function; /** * This is called when the State is rendered during the preload phase. */ - onLoadRenderCallback: Function; + onLoadRenderCallback: Function; /** * This is called when the State is updated during the preload phase. */ - onLoadUpdateCallback: Function; + onLoadUpdateCallback: Function; /** * This is called when the game is paused. */ - onPausedCallback: Function; + onPausedCallback: Function; /** * This is called every frame while the game is paused. */ - onPauseUpdateCallback: Function; + onPauseUpdateCallback: Function; /** * This is called when the state starts to load assets. */ - onPreloadCallback: Function; + onPreloadCallback: Function; /** * This is called before the state is rendered and before the stage is cleared but after all game objects have had their final properties adjusted. */ - onPreRenderCallback: Function; + onPreRenderCallback: Function; /** * This is called post-render. It doesn't happen during preload (see onLoadRenderCallback). */ - onRenderCallback: Function; + onRenderCallback: Function; /** * This is called when the game is resumed from a paused state. */ - onResumedCallback: Function; + onResumedCallback: Function; /** * This is called if ScaleManager.scalemode is RESIZE and a resize event occurs. It's passed the new width and height. */ - onResizeCallback: Function; + onResizeCallback: Function; /** * This is called when the state is shut down (i.e. swapped to another state). */ - onShutDownCallback: Function; + onShutDownCallback: Function; /** * This is called when the state is updated, every game loop. It doesn't happen during preload (@see onLoadUpdateCallback). */ - onUpdateCallback: Function; + onUpdateCallback: Function; /** * The object containing Phaser.States. */ - states: any; - + states: any; + /** * onStateChange is a Phaser.Signal that is dispatched whenever the game changes state. @@ -26593,7 +27063,7 @@ declare module Phaser { * The callback you specify is sent two parameters: the string based key of the new state, * and the second parameter is the string based key of the old / previous state. */ - onStateChange: Phaser.Signal; + onStateChange: Phaser.Signal; /** * Adds a new State into the StateManager. You must give each State a unique key by which you'll identify it. @@ -26604,7 +27074,7 @@ declare module Phaser { * @param state The state you want to switch to. * @param autoStart If true the State will be started immediately after adding it. */ - add(key: string, state: any, autoStart?: boolean): void; + add(key: string, state: any, autoStart?: boolean): void; /** * Checks if a given phaser state is valid. A State is considered valid if it has at least one of the core functions: preload, create, update or render. @@ -26612,53 +27082,53 @@ declare module Phaser { * @param key The key of the state you want to check. * @return true if the State has the required functions, otherwise false. */ - checkState(key: string): boolean; + checkState(key: string): boolean; /** * This method clears the current State, calling its shutdown callback. The process also removes any active tweens, * resets the camera, resets input, clears physics, removes timers and if set clears the world and cache too. */ - clearCurrentState(): void; + clearCurrentState(): void; /** * Removes all StateManager callback references to the State object, nulls the game reference and clears the States object. * You don't recover from this without rebuilding the Phaser instance again. */ - destroy(): void; + destroy(): void; /** * Gets the current State. */ - getCurrentState(): Phaser.State; + getCurrentState(): Phaser.State; /** * Links game properties to the State given by the key. * * @param key State key. */ - link(key: string): void; - loadComplete(): void; + link(key: string): void; + loadComplete(): void; /** * * * @param elapsedTime The time elapsed since the last update. */ - preRender(elapsedTime: number): void; + preRender(elapsedTime: number): void; /** * preUpdate is called right at the start of the game loop. It is responsible for changing to a new state that was requested previously. */ - preUpdate(): void; - render(): void; + preUpdate(): void; + render(): void; /** * Delete the given state. * * @param key A unique key you use to reference this state, i.e. "MainMenu", "Level1". */ - remove(key: string): void; - resume(): void; + remove(key: string): void; + resume(): void; /** * Restarts the current State. State.shutDown will be called (if it exists) before the State is restarted. @@ -26667,8 +27137,8 @@ declare module Phaser { * @param clearCache Clear the Game.Cache? This purges out all loaded assets. The default is false and you must have clearWorld=true if you want to clearCache as well. * @param args Additional parameters that will be passed to the State.init function if it has one. */ - restart(clearWorld?: boolean, clearCache?: boolean, ...args: any[]): void; - resize(width: number, height: number): void; + restart(clearWorld?: boolean, clearCache?: boolean, ...args: any[]): void; + resize(width: number, height: number): void; /** * Start the given State. If a State is already running then State.shutDown will be called (if it exists) before switching to the new State. @@ -26678,46 +27148,46 @@ declare module Phaser { * @param clearCache Clear the Game.Cache? This purges out all loaded assets. The default is false and you must have clearWorld=true if you want to clearCache as well. * @param args Additional parameters that will be passed to the State.init function (if it has one). */ - start(key: string, clearWorld?: boolean, clearCache?: boolean, ...args: any[]): void; - update(): void; + start(key: string, clearWorld?: boolean, clearCache?: boolean, ...args: any[]): void; + update(): void; /** * Nulls all State level Phaser properties, including a reference to Game. * * @param key State key. */ - unlink(key: string): void; - - } - - interface PhaserTextStyle { - - font?: string; - fill?: any; - align?: string; - stroke?: string; - strokeThickness?: number; - wordWrap?: boolean; - wordWrapWidth?: number; - maxLines?: number; - shadowOffsetX?: number; - shadowOffsetY?: number; - shadowColor?: string; - shadowBlur?: number; - valign?: string; - tab?: number; - tabs?: number; - - fontSize?: number; - fontStyle?: string; - fontVariant?: string; - fontWeight?: string | number; - backgroundColor?: string; - boundsAlignH?: string; - boundsAlignV?: string; - - } - + unlink(key: string): void; + + } + + interface PhaserTextStyle { + + font?: string; + fill?: any; + align?: string; + stroke?: string; + strokeThickness?: number; + wordWrap?: boolean; + wordWrapWidth?: number; + maxLines?: number; + shadowOffsetX?: number; + shadowOffsetY?: number; + shadowColor?: string; + shadowBlur?: number; + valign?: string; + tab?: number; + tabs?: number; + + fontSize?: number; + fontStyle?: string; + fontVariant?: string; + fontWeight?: string | number; + backgroundColor?: string; + boundsAlignH?: string; + boundsAlignV?: string; + + } + /** * Create a new game object for displaying Text. @@ -26727,8 +27197,8 @@ declare module Phaser { * * See {@link http://www.jordanm.co.uk/tinytype this compatibility table} for the available default fonts across mobile browsers. */ - class Text extends Phaser.Sprite { - + class Text extends Phaser.Sprite { + /** * Create a new game object for displaying Text. @@ -26760,19 +27230,19 @@ declare module Phaser { * @param style.maxLines The maximum number of lines to be shown for wrapped text. * @param style.tabs The size (in pixels) of the tabs, for when text includes tab characters. 0 disables. Can be an array of varying tab sizes, one per tab stop. */ - constructor(game: Phaser.Game, x: number, y: number, text: string, style?: PhaserTextStyle); - - static fontPropertiesCanvas: any; - static fontPropertiesContext: any; - static fontPropertiesCache: any; - + constructor(game: Phaser.Game, x: number, y: number, text: string, style?: PhaserTextStyle); + + static fontPropertiesCanvas: any; + static fontPropertiesContext: any; + static fontPropertiesCache: any; + /** * Controls the horizontal alignment for multiline text. * Can be: 'left', 'center' or 'right'. * Does not affect single lines of text. For that please see `setTextBounds`. */ - align: string; + align: string; /** * The angle property is the rotation of the Game Object in *degrees* from its original orientation. @@ -26785,45 +27255,45 @@ declare module Phaser { * If you wish to work in radians instead of degrees you can use the property `rotation` instead. * Working in radians is slightly faster as it doesn't have to perform any calculations. */ - angle: number; + angle: number; /** * Should the linePositionX and Y values be automatically rounded before rendering the Text? * You may wish to enable this if you want to remove the effect of sub-pixel aliasing from text. */ - autoRound: boolean; + autoRound: boolean; /** * Horizontal alignment of the text within the `textBounds`. Can be: 'left', 'center' or 'right'. */ - boundsAlignH: string; + boundsAlignH: string; /** * Vertical alignment of the text within the `textBounds`. Can be: 'top', 'middle' or 'bottom'. */ - boundsAlignV: string; + boundsAlignV: string; /** * The x/y coordinate offset applied to the top-left of the camera that this Game Object will be drawn at if `fixedToCamera` is true. * * The values are relative to the top-left of the camera view and in addition to any parent of the Game Object on the display list. */ - cameraOffset: Phaser.Point; + cameraOffset: Phaser.Point; /** * The canvas element that the text is rendered. */ - canvas: HTMLCanvasElement; + canvas: HTMLCanvasElement; /** * An array of the color values as specified by {@link Phaser.Text#addColor addColor}. */ - colors: string[]; + colors: string[]; /** * The context of the canvas element that the text is rendered to. */ - context: CanvasRenderingContext2D; + context: CanvasRenderingContext2D; /** * Change the font used. @@ -26833,30 +27303,30 @@ declare module Phaser { * * The CSS font string can also be individually altered with the `font`, `fontSize`, `fontWeight`, `fontStyle`, and `fontVariant` properties. */ - cssFont: string; + cssFont: string; /** * As a Game Object runs through its destroy method this flag is set to true, * and can be checked in any sub-systems or plugins it is being destroyed from. */ - destroyPhase: boolean; + destroyPhase: boolean; /** * All Phaser Game Objects have an Events class which contains all of the events that are dispatched when certain things happen to this * Game Object, or any of its components. */ - events: Phaser.Events; + events: Phaser.Events; /** * Controls if this Sprite is processed by the core Phaser game loops and Group loops. * Default: true */ - exists: boolean; + exists: boolean; /** * A canvas fillstyle that will be used on the text eg 'red', '#00FF00'. */ - fill: any; + fill: any; /** * A Game Object that is "fixed" to the camera uses its x/y coordinates as offsets from the top left of the camera during rendering. @@ -26873,7 +27343,7 @@ declare module Phaser { * * Be careful not to set `fixedToCamera` on Game Objects which are in Groups that already have `fixedToCamera` enabled on them. */ - fixedToCamera: boolean; + fixedToCamera: boolean; /** * Change the font family that the text will be rendered in, such as 'Arial'. @@ -26883,7 +27353,7 @@ declare module Phaser { * * To change the entire font string use {@link Phaser.Text#cssFont cssFont} instead: eg. `text.cssFont = 'bold 20pt Arial'`. */ - font: string; + font: string; /** * The size of the font. @@ -26891,37 +27361,37 @@ declare module Phaser { * If the font size is specified in pixels (eg. `32` or `'32px`') then a number (ie. `32`) representing * the font size in pixels is returned; otherwise the value with CSS unit is returned as a string (eg. `'12pt'`). */ - fontSize: number | string; + fontSize: number | string; /** * The style of the font: 'normal', 'italic', 'oblique' */ - fontStyle: string; + fontStyle: string; /** * An array of the font styles values as specified by {@link Phaser.Text#addFontStyle addFontStyle}. */ - fontStyles: string[]; + fontStyles: string[]; /** * The variant the font: 'normal', 'small-caps' */ - fontVariant: string; + fontVariant: string; /** * The weight of the font: 'normal', 'bold', or {@link http://www.w3.org/TR/CSS2/fonts.html#propdef-font-weight a valid CSS font weight}. */ - fontWeight: string | number; + fontWeight: string | number; /** * An array of the font weights values as specified by {@link Phaser.Text#addFontWeight addFontWeight}. */ - fontWeights: (string | number)[]; + fontWeights: (string | number)[]; /** * A reference to the currently running Game. */ - game: Phaser.Game; + game: Phaser.Game; /** * The Input Handler for this Game Object. @@ -26930,7 +27400,7 @@ declare module Phaser { * * After you have done this, this property will be a reference to the Phaser InputHandler. */ - input: Phaser.InputHandler; + input: Phaser.InputHandler; /** * By default a Game Object won't process any input events. By setting `inputEnabled` to true a Phaser.InputHandler is created @@ -26941,25 +27411,29 @@ declare module Phaser { * Note that Input related events are dispatched from `this.events`, i.e.: `events.onInputDown`. * * If you set this property to false it will stop the Input Handler from processing any more input events. + * + * If you want to _temporarily_ disable input for a Game Object, then it's better to set + * `input.enabled = false`, as it won't reset any of the Input Handlers internal properties. + * You can then toggle this back on as needed. */ - inputEnabled: boolean; + inputEnabled: boolean; /** * Additional spacing (in pixels) between each line of text if multi-line. */ - lineSpacing: number; + lineSpacing: number; /** * A user defined name given to this Game Object. * This value isn't ever used internally by Phaser, it is meant as a game level property. */ - name: string; + name: string; /** * Specify a padding value which is added to the line width and height when calculating the Text size. * ALlows you to add extra spacing if Phaser is unable to accurately determine the true font dimensions. */ - padding: Phaser.Point; + padding: Phaser.Point; /** * A Game Object is that is pendingDestroy is flagged to have its destroy method called on the next logic update. @@ -26968,90 +27442,82 @@ declare module Phaser { * This is extremely useful if you wish to destroy an object from within one of its own callbacks * such as with Buttons or other Input events. */ - pendingDestroy: boolean; + pendingDestroy: boolean; /** * The const physics body type of this object. */ - physicsType: number; - - /** - * The coordinate of the object relative to the local coordinates of the parent. - */ - position: Phaser.Point; + physicsType: number; + position: Phaser.Point; /** * The position the Game Object was located in the previous frame. */ - previousPosition: Phaser.Point; + previousPosition: Phaser.Point; /** * The rotation the Game Object was in set to in the previous frame. Value is in radians. */ - previousRotation: number; + previousRotation: number; /** * The render order ID is used internally by the renderer and Input Manager and should not be modified. * This property is mostly used internally by the renderers, but is exposed for the use of plugins. */ - renderOrderID: number; + renderOrderID: number; /** * The resolution of the canvas the text is rendered to. * This defaults to match the resolution of the renderer, but can be changed on a per Text object basis. */ - resolution: number; + resolution: number; /** * The shadowBlur value. Make the shadow softer by applying a Gaussian blur to it. A number from 0 (no blur) up to approx. 10 (depending on scene). */ - shadowBlur: number; + shadowBlur: number; /** * The color of the shadow, as given in CSS rgba format. Set the alpha component to 0 to disable the shadow. */ - shadowColor: string; + shadowColor: string; /** * Sets if the drop shadow is applied to the Text fill. */ - shadowFill: boolean; + shadowFill: boolean; /** * The shadowOffsetX value in pixels. This is how far offset horizontally the shadow effect will be. */ - shadowOffsetX: number; + shadowOffsetX: number; /** * The shadowOffsetY value in pixels. This is how far offset vertically the shadow effect will be. */ - shadowOffsetY: number; + shadowOffsetY: number; /** * Sets if the drop shadow is applied to the Text stroke. */ - shadowStroke: boolean; + shadowStroke: boolean; /** * A canvas fillstyle that will be used on the text stroke eg 'blue', '#FCFF00'. */ - stroke: string; + stroke: string; /** * An array of the stroke color values as specified by {@link Phaser.Text#addStrokeColor addStrokeColor}. */ - strokeColors: string[]; + strokeColors: string[]; /** * A number that represents the thickness of the stroke. Default is 0 (no stroke) */ - strokeThickness: number; - - /** - * The scale factor of the object. - */ - scale: Phaser.Point; - tab: number; + strokeThickness: number; + scale: Phaser.Point; + tab: number; /** * The size (in pixels) of the tabs, for when text includes tab characters. 0 disables. @@ -27059,25 +27525,25 @@ declare module Phaser { * For example if you set tabs to 100 then when Text encounters a tab it will jump ahead 100 pixels. * If you set tabs to be `[100,200]` then it will set the first tab at 100px and the second at 200px. */ - tabs: number | number[]; + tabs: number | number[]; /** * The text to be displayed by this Text object. * Use a \n to insert a carriage return and split the text. * The text will be rendered with any style currently set. */ - text: string; + text: string; /** * The textBounds property allows you to specify a rectangular region upon which text alignment is based. * See `Text.setTextBounds` for more details. */ - textBounds: Phaser.Rectangle; + textBounds: Phaser.Rectangle; /** * The const type of this object. */ - type: number; + type: number; /** * Will this Text object use Basic or Advanced Word Wrapping? @@ -27088,24 +27554,24 @@ declare module Phaser { * * It throws an error if wordWrapWidth is less than a single character. */ - useAdvancedWrap: boolean; + useAdvancedWrap: boolean; /** * The world coordinates of this Game Object in pixels. * Depending on where in the display list this Game Object is placed this value can differ from `position`, * which contains the x/y coordinates relative to the Game Objects parent. */ - world: Phaser.Point; + world: Phaser.Point; /** * Indicates if word wrap should be used. */ - wordWrap: boolean; + wordWrap: boolean; /** * The width at which text will wrap. */ - wordWrapWidth: number; + wordWrapWidth: number; /** * The z depth of this Game Object within its parent Group. @@ -27113,8 +27579,8 @@ declare module Phaser { * This value is adjusted automatically whenever the Group hierarchy changes. * If you wish to re-order the layering of a Game Object then see methods like Group.moveUp or Group.bringToTop. */ - z: number; - + z: number; + /** * Set specific colors for certain characters within the Text. @@ -27130,7 +27596,7 @@ declare module Phaser { * @param position The index of the character in the string to start applying this color value from. * @return This Text instance. */ - addColor(color: string, position: number): Phaser.Text; + addColor(color: string, position: number): Phaser.Text; /** * Set specific font styles for certain characters within the Text. @@ -27146,7 +27612,7 @@ declare module Phaser { * @param position The index of the character in the string to start applying this font style value from. * @return This Text instance. */ - addFontStyle(style: string, position: number): Phaser.Text; + addFontStyle(style: string, position: number): Phaser.Text; /** * Set specific font weights for certain characters within the Text. @@ -27162,7 +27628,7 @@ declare module Phaser { * @param position The index of the character in the string to start applying this font weight value from. * @return This Text instance. */ - addFontWeight(weight: string, position: number): Phaser.Text; + addFontWeight(weight: string, position: number): Phaser.Text; /** * Set specific stroke colors for certain characters within the Text. @@ -27180,7 +27646,7 @@ declare module Phaser { * @param position The index of the character in the string to start applying this color value from. * @return This Text instance. */ - addStrokeColor(color: string, position: number): Phaser.Text; + addStrokeColor(color: string, position: number): Phaser.Text; /** * Aligns this Game Object within another Game Object, or Rectangle, known as the @@ -27220,7 +27686,7 @@ declare module Phaser { * @param offsetY A vertical adjustment of the Containers bounds, applied to the aligned position of the Game Object. Use a negative value to shrink the bounds, positive to increase it. * @return This Game Object. */ - alignIn(container: Phaser.Rectangle | Phaser.Sprite | Phaser.Image | Phaser.Text | Phaser.BitmapText | Phaser.Button | Phaser.Graphics | Phaser.TileSprite, position?: number, offsetX?: number, offsetY?: number): any; + alignIn(container: Phaser.Rectangle | Phaser.Sprite | Phaser.Image | Phaser.Text | Phaser.BitmapText | Phaser.Button | Phaser.Graphics | Phaser.TileSprite, position?: number, offsetX?: number, offsetY?: number): any; /** * Aligns this Game Object to the side of another Game Object, or Rectangle, known as the @@ -27261,45 +27727,45 @@ declare module Phaser { * @param offsetY A vertical adjustment of the Containers bounds, applied to the aligned position of the Game Object. Use a negative value to shrink the bounds, positive to increase it. * @return This Game Object. */ - alignTo(container: Phaser.Rectangle | Phaser.Sprite | Phaser.Image | Phaser.Text | Phaser.BitmapText | Phaser.Button | Phaser.Graphics | Phaser.TileSprite, position?: number, offsetX?: number, offsetY?: number): any; + alignTo(container: Phaser.Rectangle | Phaser.Sprite | Phaser.Image | Phaser.Text | Phaser.BitmapText | Phaser.Button | Phaser.Graphics | Phaser.TileSprite, position?: number, offsetX?: number, offsetY?: number): any; /** * Clears any text fill or stroke colors that were set by `addColor` or `addStrokeColor`. * @return This Text instance. */ - clearColors(): Phaser.Text; + clearColors(): Phaser.Text; /** * Clears any text styles or weights font that were set by `addFontStyle` or `addFontWeight`. * @return This Text instance. */ - clearFontValues(): Phaser.Text; + clearFontValues(): Phaser.Text; /** * Converts individual font components (see `fontToComponents`) to a short CSS font string. * * @param components Font components. */ - componentsToFont(components: any): string; + componentsToFont(components: any): string; /** * Destroy this Text object, removing it from the group it belongs to. * * @param destroyChildren Should every child of this object have its destroy method called? - Default: true */ - destroy(destroyChildren?: boolean): void; + destroy(destroyChildren?: boolean): void; /** * Converting a short CSS-font string into the relevant components. * * @param font a CSS font string */ - fontToComponents(font: string): any; + fontToComponents(font: string): any; /** * Internal method called by the World postUpdate cycle. */ - postUpdate(): void; + postUpdate(): void; /** * Converts the given array into a tab delimited string and then updates this Text object. @@ -27321,7 +27787,7 @@ declare module Phaser { * @param list The array of data to convert into a string. * @return This Text instance. */ - parseList(list: any[]): Phaser.Text; + parseList(list: any[]): Phaser.Text; /** * Runs the given text through the Text.runWordWrap function and returns @@ -27333,12 +27799,12 @@ declare module Phaser { * @param text The text for which the wrapping will be calculated. * @return An array of strings with the pieces of wrapped text. */ - precalculateWordWrap(text: string): string[]; + precalculateWordWrap(text: string): string[]; /** * Automatically called by World.preUpdate. */ - preUpdate(): void; + preUpdate(): void; /** * Renders a line of text that contains tab characters if Text.tab > 0. @@ -27349,7 +27815,7 @@ declare module Phaser { * @param y The y position to start rendering from. * @param fill If true uses fillText, if false uses strokeText. */ - renderTabLine(line: string, x: number, y: number, fill?: boolean): void; + renderTabLine(line: string, x: number, y: number, fill?: boolean): void; /** * Sets a drop shadow effect on the Text. You can specify the horizontal and vertical distance of the drop shadow with the `x` and `y` parameters. @@ -27365,7 +27831,7 @@ declare module Phaser { * @param shadowFill Apply the drop shadow to the Text fill (if set). - Default: true * @return This Text instance. */ - setShadow(x?: number, y?: number, color?: any, blur?: number, shadowStroke?: boolean, shadowFill?: boolean): Phaser.Text; + setShadow(x?: number, y?: number, color?: any, blur?: number, shadowStroke?: boolean, shadowFill?: boolean): Phaser.Text; /** * Set the style of the text by passing a single style object to it. @@ -27390,17 +27856,23 @@ declare module Phaser { * @param update Immediately update the Text object after setting the new style? Or wait for the next frame. * @return This Text instance. */ - setStyle(style?: PhaserTextStyle, update?: boolean): Phaser.Text; + setStyle(style?: PhaserTextStyle, update?: boolean): Phaser.Text; /** * The text to be displayed by this Text object. * Use a \n to insert a carriage return and split the text. * The text will be rendered with any style currently set. * + * Use the optional `immediate` argument if you need the Text display to update immediately. + * + * If not it will re-create the texture of this Text object during the next time the render + * loop is called. + * * @param text The text to be displayed. Set to an empty string to clear text that is already present. + * @param immediate Update the texture used by this Text object immediately (true) or automatically during the next render loop (false). * @return This Text instance. */ - setText(text: string): Phaser.Text; + setText(text: string, immediate?: boolean): Phaser.Text; /** * The Text Bounds is a rectangular region that you control the dimensions of into which the Text object itself is positioned, @@ -27432,24 +27904,24 @@ declare module Phaser { * @param height The height of the Text Bounds region. * @return This Text instance. */ - setTextBounds(x?: number, y?: number, width?: number, height?: number): Phaser.Text; + setTextBounds(x?: number, y?: number, width?: number, height?: number): Phaser.Text; /** * Override this function to handle any special update requirements. */ - update(): void; + update(): void; /** * Updates the internal `style.font` if it now differs according to generation from components. * * @param components Font components. */ - updateFont(components: any): void; + updateFont(components: any): void; /** * Updates a line of text, applying fill and stroke per-character colors or style and weight per-character font if applicable. */ - updateLine(text: string, x?: number, y?: number): void; + updateLine(text: string, x?: number, y?: number): void; /** * Sets the Shadow on the Text.context based on the Style settings, or disables it if not enabled. @@ -27457,21 +27929,21 @@ declare module Phaser { * * @param state If true the shadow will be set to the Style values, otherwise it will be set to zero. */ - updateShadow(state?: boolean): void; + updateShadow(state?: boolean): void; /** * Updates the texture based on the canvas dimensions. */ - updateTexture(): void; - - } - + updateTexture(): void; + + } + /** * A Tile is a representation of a single tile within the Tilemap. */ - class Tile { - + class Tile { + /** * A Tile is a representation of a single tile within the Tilemap. @@ -27483,165 +27955,165 @@ declare module Phaser { * @param width Width of the tile. * @param height Height of the tile. */ - constructor(layer: any, index: number, x: number, y: Number, width: number, height: number); - + constructor(layer: any, index: number, x: number, y: Number, width: number, height: number); + /** * The alpha value at which this tile is drawn to the canvas. */ - alpha: number; + alpha: number; /** * The sum of the y and height properties. */ - bottom: number; - callback: Function; - callbackContext: any; + bottom: number; + callback: Function; + callbackContext: any; /** * The width of the tile in pixels. */ - centerX: number; + centerX: number; /** * The height of the tile in pixels. */ - centerY: number; + centerY: number; /** * True if this tile can collide on any of its faces or has a collision callback set. */ - canCollide: boolean; + canCollide: boolean; /** * Indicating collide with any object on the bottom. */ - collideDown: boolean; + collideDown: boolean; /** * Indicating collide with any object on the left. */ - collideLeft: boolean; - collideNone: boolean; + collideLeft: boolean; + collideNone: boolean; /** * Indicating collide with any object on the right. */ - collideRight: boolean; + collideRight: boolean; /** * Tile collision callback. */ - collisionCallback: Function; + collisionCallback: Function; /** * The context in which the collision callback will be called. */ - collisionCallbackContext: any; + collisionCallbackContext: any; /** * True if this tile can collide on any of its faces. */ - collides: boolean; + collides: boolean; /** * Indicating collide with any object on the top. */ - collideUp: boolean; + collideUp: boolean; /** * Is the bottom of this tile an interesting edge? */ - faceBottom: boolean; + faceBottom: boolean; /** * Is the left of this tile an interesting edge? */ - faceLeft: boolean; + faceLeft: boolean; /** * Is the right of this tile an interesting edge? */ - faceRight: boolean; + faceRight: boolean; /** * Is the top of this tile an interesting edge? */ - faceTop: boolean; - game: Phaser.Game; + faceTop: boolean; + game: Phaser.Game; /** * The height of the tile in pixels. */ - height: number; + height: number; /** * The index of this tile within the map data corresponding to the tileset, or -1 if this represents a blank/null tile. */ - index: number; + index: number; /** * The layer in the Tilemap data that this tile belongs to. */ - layer: any; + layer: any; /** * The x value in pixels. */ - left: number; + left: number; /** * Tile specific properties. */ - properties: any; + properties: any; /** * The sum of the x and width properties. */ - right: number; + right: number; /** * Has this tile been walked / turned into a poly? */ - scanned: boolean; + scanned: boolean; /** * The y value. */ - top: number; + top: number; /** * The width of the tile in pixels. */ - width: number; + width: number; /** * The x map coordinate of this tile. */ - worldX: number; + worldX: number; /** * The y map coordinate of this tile. */ - worldY: number; + worldY: number; /** * The x map coordinate of this tile. */ - x: number; + x: number; /** * The y map coordinate of this tile. */ - y: number; - + y: number; + /** * Copies the tile data and properties from the given tile to this tile. * * @param tile The tile to copy from. */ - copy(tile: Phaser.Tile): Phaser.Tile; + copy(tile: Phaser.Tile): Phaser.Tile; /** * Check if the given x and y world coordinates are within this Tile. @@ -27650,12 +28122,12 @@ declare module Phaser { * @param y The y coordinate to test. * @return True if the coordinates are within this Tile, otherwise false. */ - containsPoint(x: number, y: number): boolean; + containsPoint(x: number, y: number): boolean; /** * Clean up memory. */ - destroy(): void; + destroy(): void; /** * Check for intersection with this tile. @@ -27665,13 +28137,13 @@ declare module Phaser { * @param right The right point. * @param bottom The bottom point. */ - intersects(x: number, y: number, right: number, bottom: number): boolean; - isInterested(collides: boolean, faces: boolean): boolean; + intersects(x: number, y: number, right: number, bottom: number): boolean; + isInterested(collides: boolean, faces: boolean): boolean; /** * Reset collision status flags. */ - resetCollision(): void; + resetCollision(): void; /** * Sets the collision flags for each side of this tile and updates the interesting faces list. @@ -27681,7 +28153,7 @@ declare module Phaser { * @param up Indicating collide with any object on the top. * @param down Indicating collide with any object on the bottom. */ - setCollision(left: boolean, right: boolean, up: boolean, down: boolean): void; + setCollision(left: boolean, right: boolean, up: boolean, down: boolean): void; /** * Set a callback to be called when this tile is hit by an object. @@ -27690,10 +28162,10 @@ declare module Phaser { * @param callback Callback function. * @param context Callback will be called within this context. */ - setCollisionCallback(callback: Function, context: any): void; - - } - + setCollisionCallback(callback: Function, context: any): void; + + } + /** * Creates a new Phaser.Tilemap object. The map can either be populated with data from a Tiled JSON file or from a CSV file. @@ -27704,8 +28176,8 @@ declare module Phaser { * A Tile map is rendered to the display using a TilemapLayer. It is not added to the display list directly itself. * A map may have multiple layers. You can perform operations on the map data such as copying, pasting, filling and shuffling the tiles around. */ - class Tilemap { - + class Tilemap { + /** * Creates a new Phaser.Tilemap object. The map can either be populated with data from a Tiled JSON file or from a CSV file. @@ -27723,131 +28195,131 @@ declare module Phaser { * @param width The width of the map in tiles. If this map is created from Tiled or CSV data you don't need to specify this. - Default: 10 * @param height The height of the map in tiles. If this map is created from Tiled or CSV data you don't need to specify this. - Default: 10 */ - constructor(game: Phaser.Game, key?: string, tileWidth?: number, tileHeight?: number, width?: number, height?: number); - - static CSV: number; - static TILED_JSON: number; - static NORTH: number; - static EAST: number; - static SOUTH: number; - static WEST: number; - + constructor(game: Phaser.Game, key?: string, tileWidth?: number, tileHeight?: number, width?: number, height?: number); + + static CSV: number; + static TILED_JSON: number; + static NORTH: number; + static EAST: number; + static SOUTH: number; + static WEST: number; + /** * An array of collision data (polylines, etc). */ - collision: any[]; + collision: any[]; /** * An array of tile indexes that collide. */ - collideIndexes: any[]; + collideIndexes: any[]; /** * The current layer. */ - currentLayer: number; + currentLayer: number; /** * Map data used for debug values only. */ - debugMap: any[]; + debugMap: any[]; /** * The format of the map data, either Phaser.Tilemap.CSV or Phaser.Tilemap.TILED_JSON. */ - format: number; + format: number; /** * A reference to the currently running Game. */ - game: Phaser.Game; + game: Phaser.Game; /** * The height of the map (in tiles). */ - height: number; + height: number; /** * The height of the map in pixels based on height * tileHeight. */ - heightInPixels: number; + heightInPixels: number; /** * An array of Tiled Image Layers. */ - images: any[]; + images: any[]; /** * An array of Image Collections. */ - imagecollections: ImageCollection[]; + imagecollections: ImageCollection[]; /** * The key of this map data in the Phaser.Cache. */ - key: string; + key: string; /** * The current layer object. */ - layer: Phaser.TilemapLayer[]; + layer: Phaser.TilemapLayer[]; /** * An array of Tilemap layer data. */ - layers: any[]; + layers: any[]; /** * An array of Tiled Object Layers. */ - objects: any[]; + objects: any[]; /** * The orientation of the map data (as specified in Tiled), usually 'orthogonal'. */ - orientation: string; + orientation: string; /** * Map specific properties as specified in Tiled. */ - properties: any; + properties: any; /** * The base height of the tiles in the map (in pixels). */ - tileHeight: number; + tileHeight: number; /** * The super array of Tiles. */ - tiles: Phaser.Tile[]; + tiles: Phaser.Tile[]; /** * An array of Tilesets. */ - tilesets: Phaser.Tileset[]; + tilesets: Phaser.Tileset[]; /** * The base width of the tiles in the map (in pixels). */ - tileWidth: number; + tileWidth: number; /** * The version of the map data (as specified in Tiled, usually 1). */ - version: number; + version: number; /** * The width of the map (in tiles). */ - width: number; + width: number; /** * The width of the map in pixels based on width * tileWidth. */ - widthInPixels: number; - + widthInPixels: number; + /** * Adds an image to the map to be used as a tileset. A single map may use multiple tilesets. @@ -27864,14 +28336,14 @@ declare module Phaser { * @param gid If adding multiple tilesets to a blank/dynamic map, specify the starting GID the set will use here. * @return Returns the Tileset object that was created or updated, or null if it failed. */ - addTilesetImage(tileset: string, key?: string | Phaser.BitmapData, tileWidth?: number, tileHeight?: number, tileMargin?: number, tileSpacing?: number, gid?: number): Phaser.Tileset; + addTilesetImage(tileset: string, key?: string | Phaser.BitmapData, tileWidth?: number, tileHeight?: number, tileMargin?: number, tileSpacing?: number, gid?: number): Phaser.Tileset; /** * Internal function. * * @param layer The index of the TilemapLayer to operate on. */ - calculateFaces(layer: number): void; + calculateFaces(layer: number): void; /** * Copies all of the tiles in the given rectangular block into the tilemap data buffer. @@ -27883,7 +28355,7 @@ declare module Phaser { * @param layer The layer to copy the tiles from. * @return An array of the tiles that were copied. */ - copy(x: number, y: number, width: number, height: number, layer?: any): Phaser.Tile[]; + copy(x: number, y: number, width: number, height: number, layer?: any): Phaser.Tile[]; /** * Creates an empty map of the given dimensions and one blank layer. If layers already exist they are erased. @@ -27896,7 +28368,7 @@ declare module Phaser { * @param group Optional Group to add the layer to. If not specified it will be added to the World group. * @return The TilemapLayer object. This is an extension of Phaser.Image and can be moved around the display list accordingly. */ - create(name: string, width: number, height: number, tileWidth: number, tileHeight: number, group?: Phaser.Group): Phaser.TilemapLayer; + create(name: string, width: number, height: number, tileWidth: number, tileHeight: number, group?: Phaser.Group): Phaser.TilemapLayer; /** * Creates a new and empty layer on this Tilemap. By default TilemapLayers are fixed to the camera. @@ -27909,7 +28381,7 @@ declare module Phaser { * @param group Optional Group to add the layer to. If not specified it will be added to the World group. * @return The TilemapLayer object. This is an extension of Phaser.Image and can be moved around the display list accordingly. */ - createBlankLayer(name: string, width: number, height: number, tileWidth: number, tileHeight: number, group?: Phaser.Group): Phaser.TilemapLayer; + createBlankLayer(name: string, width: number, height: number, tileWidth: number, tileHeight: number, group?: Phaser.Group): Phaser.TilemapLayer; /** * Creates a Sprite for every object matching the given gid in the map data. You can optionally specify the group that the Sprite will be created in. If none is @@ -27927,7 +28399,7 @@ declare module Phaser { * @param CustomClass If you wish to create your own class, rather than Phaser.Sprite, pass the class here. Your class must extend Phaser.Sprite and have the same constructor parameters. - Default: Phaser.Sprite * @param adjustY By default the Tiled map editor uses a bottom-left coordinate system. Phaser uses top-left. So most objects will appear too low down. This parameter moves them up by their height. - Default: true */ - createFromObjects(name: string, gid: number, key: string, frame?: any, exists?: boolean, autoCull?: boolean, group?: Phaser.Group, CustomClass?: any, adjustY?: boolean): void; + createFromObjects(name: string, gid: number, key: string, frame?: any, exists?: boolean, autoCull?: boolean, group?: Phaser.Group, CustomClass?: any, adjustY?: boolean): void; /** * Creates a Sprite for every object matching the given tile indexes in the map data. @@ -27943,7 +28415,7 @@ declare module Phaser { * @param properties An object that contains the default properties for your newly created Sprite. This object will be iterated and any matching Sprite property will be set. * @return The number of Sprites that were created. */ - createFromTiles(tiles: any, replacements: any, key: string, layer?: any, group?: Phaser.Group, properties?: any): number; + createFromTiles(tiles: any, replacements: any, key: string, layer?: any, group?: Phaser.Group, properties?: any): number; /** * Creates a new TilemapLayer object. By default TilemapLayers are fixed to the camera. @@ -27958,18 +28430,18 @@ declare module Phaser { * @param pixiTest Temporary additional flag to enable tests of the PIXI.Tilemap renderer * @return The TilemapLayer object. This is an extension of Phaser.Sprite and can be moved around the display list accordingly. */ - createLayer(layer: any, width?: number, height?: number, group?: Phaser.Group): Phaser.TilemapLayer; + createLayer(layer: any, width?: number, height?: number, group?: Phaser.Group): Phaser.TilemapLayer; /** * Removes all layer data from this tile map and nulls the game reference. * Note: You are responsible for destroying any TilemapLayer objects you generated yourself, as Tilemap doesn't keep a reference to them. */ - destroy(): void; + destroy(): void; /** * Dumps the tilemap data out to the console. */ - dump(): void; + dump(): void; /** * Fills the given area with the specified tile. @@ -27981,7 +28453,7 @@ declare module Phaser { * @param height The height in tiles of the area to operate on. * @param layer The layer to operate on. */ - fill(index: number, x: number, y: number, width: number, height: number, layer?: any): void; + fill(index: number, x: number, y: number, width: number, height: number, layer?: any): void; /** * For each tile in the given area defined by x/y and width/height run the given callback. @@ -27994,7 +28466,7 @@ declare module Phaser { * @param height The height in tiles of the area to operate on. * @param layer The layer to operate on. */ - forEach(callback: Function, context: any, x: number, y: Number, width: number, height: number, layer?: any): void; + forEach(callback: Function, context: any, x: number, y: Number, width: number, height: number, layer?: any): void; /** * Gets the image index based on its name. @@ -28002,7 +28474,7 @@ declare module Phaser { * @param name The name of the image to get. * @return The index of the image in this tilemap, or null if not found. */ - getImageIndex(name: string): number; + getImageIndex(name: string): number; /** * Gets the layer index based on the layers name. @@ -28011,7 +28483,7 @@ declare module Phaser { * @param name The name of the array element to get. * @return The index of the element in the array, or null if not found. */ - getIndex(location: any[], name: string): number; + getIndex(location: any[], name: string): number; /** * Gets the TilemapLayer index as used in the setCollision calls. @@ -28019,7 +28491,7 @@ declare module Phaser { * @param layer The layer to operate on. If not given will default to this.currentLayer. * @return The TilemapLayer index. */ - getLayer(layer: any): number; + getLayer(layer: any): number; /** * Gets the layer index based on its name. @@ -28027,8 +28499,8 @@ declare module Phaser { * @param name The name of the layer to get. * @return The index of the layer in this tilemap, or null if not found. */ - getLayerIndex(name: string): number; - getObjectIndex(name: string): number; + getLayerIndex(name: string): number; + getObjectIndex(name: string): number; /** * Gets a tile from the Tilemap Layer. The coordinates are given in tile values. @@ -28039,7 +28511,7 @@ declare module Phaser { * @param nonNull If true getTile won't return null for empty tiles, but a Tile object with an index of -1. * @return The tile at the given coordinates or null if no tile was found or the coordinates were invalid. */ - getTile(x: number, y: number, layer?: any, nonNull?: boolean): Phaser.Tile; + getTile(x: number, y: number, layer?: any, nonNull?: boolean): Phaser.Tile; /** * Gets the tile above the tile coordinates given. @@ -28049,7 +28521,7 @@ declare module Phaser { * @param x The x coordinate to get the tile from. In tiles, not pixels. * @param y The y coordinate to get the tile from. In tiles, not pixels. */ - getTileAbove(layer: number, x: number, y: number): Phaser.Tile; + getTileAbove(layer: number, x: number, y: number): Phaser.Tile; /** * Gets the tile below the tile coordinates given. @@ -28059,7 +28531,7 @@ declare module Phaser { * @param x The x coordinate to get the tile from. In tiles, not pixels. * @param y The y coordinate to get the tile from. In tiles, not pixels. */ - getTileBelow(layer: number, x: number, y: number): Phaser.Tile; + getTileBelow(layer: number, x: number, y: number): Phaser.Tile; /** * Gets the tile to the left of the tile coordinates given. @@ -28069,7 +28541,7 @@ declare module Phaser { * @param x The x coordinate to get the tile from. In tiles, not pixels. * @param y The y coordinate to get the tile from. In tiles, not pixels. */ - getTileLeft(layer: number, x: number, y: number): Phaser.Tile; + getTileLeft(layer: number, x: number, y: number): Phaser.Tile; /** * Gets the tile to the right of the tile coordinates given. @@ -28079,7 +28551,7 @@ declare module Phaser { * @param x The x coordinate to get the tile from. In tiles, not pixels. * @param y The y coordinate to get the tile from. In tiles, not pixels. */ - getTileRight(layer: number, x: number, y: number): Phaser.Tile; + getTileRight(layer: number, x: number, y: number): Phaser.Tile; /** * Gets the tileset index based on its name. @@ -28087,7 +28559,7 @@ declare module Phaser { * @param name The name of the tileset to get. * @return The index of the tileset in this tilemap, or null if not found. */ - getTilesetIndex(name: string): number; + getTilesetIndex(name: string): number; /** * Gets a tile from the Tilemap layer. The coordinates are given in pixel values. @@ -28100,7 +28572,7 @@ declare module Phaser { * @param nonNull If true getTile won't return null for empty tiles, but a Tile object with an index of -1. * @return The tile at the given coordinates. */ - getTileWorldXY(x: number, y: number, tileWidth?: number, tileHeight?: number, layer?: number | string | Phaser.TilemapLayer, nonNull?: boolean): Phaser.Tile; + getTileWorldXY(x: number, y: number, tileWidth?: number, tileHeight?: number, layer?: number | string | Phaser.TilemapLayer, nonNull?: boolean): Phaser.Tile; /** * Checks if there is a tile at the given location. @@ -28110,7 +28582,7 @@ declare module Phaser { * @param layer The layer to set as current. * @return True if there is a tile at the given location, otherwise false. */ - hasTile(x: number, y: number, layer: Phaser.TilemapLayer): boolean; + hasTile(x: number, y: number, layer: Phaser.TilemapLayer): boolean; /** * Pastes a previously copied block of tile data into the given x/y coordinates. Data should have been prepared with Tilemap.copy. @@ -28120,7 +28592,7 @@ declare module Phaser { * @param tileblock The block of tiles to paste. * @param layer The layer to paste the tiles into. */ - paste(x: number, y: number, tileblock: Phaser.Tile[], layer?: any): void; + paste(x: number, y: number, tileblock: Phaser.Tile[], layer?: any): void; /** * Puts a tile of the given index value at the coordinate specified. @@ -28132,7 +28604,7 @@ declare module Phaser { * @param layer The layer to modify. * @return The Tile object that was created or added to this map. */ - putTile(tile: any, x: number, y: number, layer?: any): Phaser.Tile; + putTile(tile: any, x: number, y: number, layer?: any): Phaser.Tile; /** * Puts a tile into the Tilemap layer. The coordinates are given in pixel values. @@ -28145,7 +28617,7 @@ declare module Phaser { * @param layer The layer to modify. * @return The Tile object that was created or added to this map. */ - putTileWorldXY(tile: any, x: number, y: number, tileWidth: number, tileHeight: number, layer?: any): void; + putTileWorldXY(tile: any, x: number, y: number, tileWidth: number, tileHeight: number, layer?: any): void; /** * Randomises a set of tiles in a given area. @@ -28156,12 +28628,12 @@ declare module Phaser { * @param height The height in tiles of the area to operate on. * @param layer The layer to operate on. */ - random(x: number, y: number, width: number, height: number, layer?: any): void; + random(x: number, y: number, width: number, height: number, layer?: any): void; /** * Removes all layers from this tile map. */ - removeAllLayers(): void; + removeAllLayers(): void; /** * Removes the tile located at the given coordinates and updates the collision data. @@ -28171,7 +28643,7 @@ declare module Phaser { * @param layer The layer to modify. * @return The Tile object that was removed from this map. */ - removeTile(x: number, y: number, layer?: any): Phaser.Tile; + removeTile(x: number, y: number, layer?: any): Phaser.Tile; /** * Removes the tile located at the given coordinates and updates the collision data. The coordinates are given in pixel values. @@ -28183,7 +28655,7 @@ declare module Phaser { * @param layer The layer to modify. * @return The Tile object that was removed from this map. */ - removeTileWorldXY(x: number, y: number, tileWidth: number, tileHeight: number, layer?: any): Phaser.Tile; + removeTileWorldXY(x: number, y: number, tileWidth: number, tileHeight: number, layer?: any): Phaser.Tile; /** * Scans the given area for tiles with an index matching `source` and updates their index to match `dest`. @@ -28196,7 +28668,7 @@ declare module Phaser { * @param height The height in tiles of the area to operate on. * @param layer The layer to operate on. */ - replace(source: number, dest: number, x: number, y: number, width: number, height: number, layer?: any): void; + replace(source: number, dest: number, x: number, y: number, width: number, height: number, layer?: any): void; /** * Searches the entire map layer for the first tile matching the given index, then returns that Phaser.Tile object. @@ -28210,7 +28682,7 @@ declare module Phaser { * @param layer The layer to get the tile from. * @return The first (or n skipped) tile with the matching index. */ - searchTileIndex(index: number, skip?: number, reverse?: boolean, layer?: any): Phaser.Tile; + searchTileIndex(index: number, skip?: number, reverse?: boolean, layer?: any): Phaser.Tile; /** * Sets collision the given tile or tiles. You can pass in either a single numeric index or an array of indexes: [ 2, 3, 15, 20]. @@ -28221,7 +28693,7 @@ declare module Phaser { * @param layer The layer to operate on. If not given will default to this.currentLayer. * @param recalculate Recalculates the tile faces after the update. - Default: true */ - setCollision(indexes: any, collides?: boolean, layer?: any, recalculate?: boolean): void; + setCollision(indexes: any, collides?: boolean, layer?: any, recalculate?: boolean): void; /** * Sets collision on a range of tiles where the tile IDs increment sequentially. @@ -28234,7 +28706,7 @@ declare module Phaser { * @param layer The layer to operate on. If not given will default to this.currentLayer. * @param recalculate Recalculates the tile faces after the update. - Default: true */ - setCollisionBetween(start: number, stop: number, collides?: boolean, layer?: any, recalculate?: boolean): void; + setCollisionBetween(start: number, stop: number, collides?: boolean, layer?: any, recalculate?: boolean): void; /** * Sets collision on all tiles in the given layer, except for the IDs of those in the given array. @@ -28245,7 +28717,7 @@ declare module Phaser { * @param layer The layer to operate on. If not given will default to this.currentLayer. * @param recalculate Recalculates the tile faces after the update. - Default: true */ - setCollisionByExclusion(indexes: any[], collides?: boolean, layer?: any, recalculate?: boolean): void; + setCollisionByExclusion(indexes: any[], collides?: boolean, layer?: any, recalculate?: boolean): void; /** * Sets collision values on a tile in the set. @@ -28256,14 +28728,14 @@ declare module Phaser { * @param layer The layer to operate on. If not given will default to this.currentLayer. * @param recalculate Recalculates the tile faces after the update. - Default: true */ - setCollisionByIndex(index: number, collides?: boolean, layer?: number, recalculate?: boolean): void; + setCollisionByIndex(index: number, collides?: boolean, layer?: number, recalculate?: boolean): void; /** * Sets the current layer to the given index. * * @param layer The layer to set as current. */ - setLayer(layer: any): void; + setLayer(layer: any): void; /** * Turn off/on the recalculation of faces for tile or collision updates. @@ -28271,7 +28743,7 @@ declare module Phaser { * * @param value If true it will put the recalculation on hold. */ - setPreventRecalculate(value: boolean): void; + setPreventRecalculate(value: boolean): void; /** * Sets a global collision callback for the given tile index within the layer. This will affect all tiles on this layer that have the same index. @@ -28283,7 +28755,7 @@ declare module Phaser { * @param callbackContext The context under which the callback is called. * @param layer The layer to operate on. If not given will default to this.currentLayer. */ - setTileIndexCallback(indexes: any, callback: Function, callbackContext: any, layer?: any): void; + setTileIndexCallback(indexes: any, callback: Function, callbackContext: any, layer?: any): void; /** * Sets a global collision callback for the given map location within the layer. This will affect all tiles on this layer found in the given area. @@ -28298,7 +28770,7 @@ declare module Phaser { * @param callbackContext The context under which the callback is called. * @param layer The layer to operate on. If not given will default to this.currentLayer. */ - setTileLocationCallback(x: number, y: number, width: number, height: number, callback: Function, callbackContext: any, layer?: any): void; + setTileLocationCallback(x: number, y: number, width: number, height: number, callback: Function, callbackContext: any, layer?: any): void; /** * Sets the base tile size for the map. @@ -28306,7 +28778,7 @@ declare module Phaser { * @param tileWidth The width of the tiles the map uses for calculations. * @param tileHeight The height of the tiles the map uses for calculations. */ - setTileSize(tileWidth: number, tileHeight: number): void; + setTileSize(tileWidth: number, tileHeight: number): void; /** * Shuffles a set of tiles in a given area. It will only randomise the tiles in that area, so if they're all the same nothing will appear to have changed! @@ -28317,7 +28789,7 @@ declare module Phaser { * @param height The height in tiles of the area to operate on. * @param layer The layer to operate on. */ - shuffle(x: number, y: number, width: number, height: number, layer: any): void; + shuffle(x: number, y: number, width: number, height: number, layer: any): void; /** * Scans the given area for tiles with an index matching tileA and swaps them with tileB. @@ -28330,10 +28802,10 @@ declare module Phaser { * @param height The height in tiles of the area to operate on. * @param layer The layer to operate on. */ - swap(tileA: number, tileB: number, x: number, y: number, width: number, height: number, layer?: any): void; - - } - + swap(tileA: number, tileB: number, x: number, y: number, width: number, height: number, layer?: any): void; + + } + /** * A TilemapLayer is a Phaser.Image/Sprite that renders a specific TileLayer of a Tilemap. @@ -28342,8 +28814,8 @@ declare module Phaser { * * By default TilemapLayers have fixedToCamera set to `true`. Changing this will break Camera follow and scrolling behavior. */ - class TilemapLayer extends Phaser.Sprite { - + class TilemapLayer extends Phaser.Sprite { + /** * A TilemapLayer is a Phaser.Image/Sprite that renders a specific TileLayer of a Tilemap. @@ -28358,27 +28830,27 @@ declare module Phaser { * @param width Width of the renderable area of the layer (in pixels). * @param height Height of the renderable area of the layer (in pixels). */ - constructor(game: Phaser.Game, tilemap: Phaser.Tilemap, index: number, width?: number, height?: number); - + constructor(game: Phaser.Game, tilemap: Phaser.Tilemap, index: number, width?: number, height?: number); + /** * The x/y coordinate offset applied to the top-left of the camera that this Game Object will be drawn at if `fixedToCamera` is true. * * The values are relative to the top-left of the camera view and in addition to any parent of the Game Object on the display list. */ - cameraOffset: Phaser.Point; + cameraOffset: Phaser.Point; /** * The canvas to which this TilemapLayer draws. */ - canvas: HTMLCanvasElement; - collisionHeight: number; - collisionWidth: number; + canvas: HTMLCanvasElement; + collisionHeight: number; + collisionWidth: number; /** * The 2d context of the canvas. */ - context: CanvasRenderingContext2D; + context: CanvasRenderingContext2D; /** * An empty Object that belongs to this Game Object. @@ -28387,30 +28859,30 @@ declare module Phaser { * without polluting the Game Object directly. * Default: {} */ - data: any; + data: any; /** * Enable an additional "debug rendering" pass to display collision information. */ - debug: boolean; - debugAlpha: number; - debugCallbackColor: string; - debugColor: string; + debug: boolean; + debugAlpha: number; + debugCallbackColor: string; + debugColor: string; /** * Settings used for debugging and diagnostics. */ - debugSettings: { missingImageFill: string; debuggedTileOverfill: string; forceFullRedraw: boolean; debugAlpha: number; facingEdgeStroke: string; collidingTileOverfill: string; }; + debugSettings: { missingImageFill: string; debuggedTileOverfill: string; forceFullRedraw: boolean; debugAlpha: number; facingEdgeStroke: string; collidingTileOverfill: string; }; /** * If true tiles will be force rendered, even if such is not believed to be required. */ - dirty: boolean; + dirty: boolean; /** * Controls if the core game loop and physics update this game object or not. */ - exists: boolean; + exists: boolean; /** * A Game Object that is "fixed" to the camera uses its x/y coordinates as offsets from the top left of the camera during rendering. @@ -28427,77 +28899,77 @@ declare module Phaser { * * Be careful not to set `fixedToCamera` on Game Objects which are in Groups that already have `fixedToCamera` enabled on them. */ - fixedToCamera: boolean; + fixedToCamera: boolean; /** * A reference to the currently running Game. */ - game: Phaser.Game; + game: Phaser.Game; /** * The index of this layer within the Tilemap. */ - index: number; + index: number; /** * The layer object within the Tilemap that this layer represents. */ - layer: Phaser.TilemapLayer; + layer: Phaser.TilemapLayer; /** * The Tilemap to which this layer is bound. */ - map: Phaser.Tilemap; + map: Phaser.Tilemap; /** * A user defined name given to this Game Object. * This value isn't ever used internally by Phaser, it is meant as a game level property. */ - name: string; + name: string; /** * The const physics body type of this object. */ - physicsType: number; + physicsType: number; /** * When ray-casting against tiles this is the number of steps it will jump. For larger tile sizes you can increase this to improve performance. * Default: 4 */ - rayStepRate: number; + rayStepRate: number; /** * Settings that control standard (non-diagnostic) rendering. * Default: {"enableScrollDelta":false,"overdrawRatio":0.2,"copyCanvas":null} */ - renderSettings: { enableScrollDelta: boolean; overdrawRatio: number; copyCanvas: any; }; + renderSettings: { enableScrollDelta: boolean; overdrawRatio: number; copyCanvas: any; }; /** * Speed at which this layer scrolls horizontally, relative to the camera (e.g. scrollFactorX of 0.5 scrolls half as quickly as the 'normal' camera-locked layers do). * Default: 1 */ - scrollFactorX: number; + scrollFactorX: number; /** * Speed at which this layer scrolls vertically, relative to the camera (e.g. scrollFactorY of 0.5 scrolls half as quickly as the 'normal' camera-locked layers do) * Default: 1 */ - scrollFactorY: number; - scrollX: number; - scrollY: number; + scrollFactorY: number; + scrollX: number; + scrollY: number; /** * The const type of this object. * Default: Phaser.TILEMAPLAYER */ - type: number; - wrap: boolean; - + type: number; + wrap: boolean; + /** * Destroys this TilemapLayer. */ - destroy(): void; + destroy(): void; /** * Gets all tiles that intersect with the given line. @@ -28508,7 +28980,7 @@ declare module Phaser { * @param interestingFace If true, _only_ return tiles that have interesting faces. * @return An array of Phaser.Tiles. */ - getRayCastTiles(line: Phaser.Line, stepRate?: number, collides?: boolean, interestingFace?: boolean): Phaser.Tile[]; + getRayCastTiles(line: Phaser.Line, stepRate?: number, collides?: boolean, interestingFace?: boolean): Phaser.Tile[]; /** * Get all tiles that exist within the given area, defined by the top-left corner, width and height. Values given are in pixels, not tiles. @@ -28521,7 +28993,7 @@ declare module Phaser { * @param interestingFace If true, _only_ return tiles that have interesting faces. * @return An array of Tiles. */ - getTiles(x: number, y: number, width: number, height: number, collides?: boolean, interestingFace?: boolean): Phaser.Tile[]; + getTiles(x: number, y: number, width: number, height: number, collides?: boolean, interestingFace?: boolean): Phaser.Tile[]; /** * Convert a pixel value to a tile coordinate. @@ -28529,7 +29001,7 @@ declare module Phaser { * @param x X position of the point in target tile (in pixels). * @return The X map location of the tile. */ - getTileX(x: number): number; + getTileX(x: number): number; /** * Convert a pixel coordinate to a tile coordinate. @@ -28539,7 +29011,7 @@ declare module Phaser { * @param point The Point/object to update. * @return A Point/object with its `x` and `y` properties set. */ - getTileXY(x: number, y: number, point: Phaser.Point): Phaser.Point; + getTileXY(x: number, y: number, point: Phaser.Point): Phaser.Point; /** * Convert a pixel value to a tile coordinate. @@ -28547,17 +29019,17 @@ declare module Phaser { * @param y Y position of the point in target tile (in pixels). * @return The Y map location of the tile. */ - getTileY(y: number): number; + getTileY(y: number): number; /** * Automatically called by World.postUpdate. Handles cache updates. */ - postUpdate(): void; + postUpdate(): void; /** * Renders the tiles to the layer canvas and pushes to the display. */ - render(): void; + render(): void; /** * Resizes the internal canvas and texture frame used by this TilemapLayer. @@ -28571,19 +29043,19 @@ declare module Phaser { * @param width The new width of the TilemapLayer * @param height The new height of the TilemapLayer */ - resize(width: number, height: number): void; + resize(width: number, height: number): void; /** * Sets the world size to match the size of this layer. */ - resizeWorld(): void; + resizeWorld(): void; /** * The TilemapLayer caches tileset look-ups. * * Call this method of clear the cache if tilesets have been added or updated after the layer has been rendered. */ - resetTilesetCache(): void; + resetTilesetCache(): void; /** * This method will set the scale of the tilemap as well as update the underlying block data of this layer. @@ -28591,17 +29063,17 @@ declare module Phaser { * @param xScale The scale factor along the X-plane - Default: 1 * @param yScale The scale factor along the Y-plane */ - setScale(xScale?: number, yScale?: number): void; - updateMax(): void; - - } - + setScale(xScale?: number, yScale?: number): void; + updateMax(): void; + + } + /** * Phaser.TilemapParser parses data objects from Phaser.Loader that need more preparation before they can be inserted into a Tilemap. */ - class TilemapParser { - + class TilemapParser { + /** * When scanning the Tiled map data the TilemapParser can either insert a null value (true) or @@ -28611,14 +29083,14 @@ declare module Phaser { * However if your map is small, or you need to update the tiles (perhaps the map dynamically changes * during the game) then leave the default value set. */ - static INSERT_NULL: boolean; - + static INSERT_NULL: boolean; + /** * Returns an empty map data object. * @return Generated map data. */ - static getEmptyData(tileWidth?: number, tileHeight?: number, width?: number, height?: number): any; + static getEmptyData(tileWidth?: number, tileHeight?: number, width?: number, height?: number): any; /** * Parse tilemap data from the cache and creates a Tilemap object. @@ -28631,7 +29103,7 @@ declare module Phaser { * @param height The height of the map in tiles. If this map is created from Tiled or CSV data you don't need to specify this. - Default: 10 * @return The parsed map object. */ - static parse(game: Phaser.Game, key: string, tileWidth?: number, tileHeight?: number, width?: number, height?: number): any; + static parse(game: Phaser.Game, key: string, tileWidth?: number, tileHeight?: number, width?: number, height?: number): any; /** * Parses a CSV file into valid map data. @@ -28642,7 +29114,7 @@ declare module Phaser { * @param tileHeight The pixel height of a single map tile. If using CSV data you must specify this. Not required if using Tiled map data. - Default: 32 * @return Generated map data. */ - static parseCSV(key: string, data: string, tileWidth?: number, tileHeight?: number): any; + static parseCSV(key: string, data: string, tileWidth?: number, tileHeight?: number): any; /** * Parses a Tiled JSON file into valid map data. @@ -28650,18 +29122,18 @@ declare module Phaser { * @param json The JSON map data. * @return Generated and parsed map data. */ - static parseJSON(json: any): any; - - } - + static parseJSON(json: any): any; + + } + /** * A Tile set is a combination of an image containing the tiles and collision data per tile. * * Tilesets are normally created automatically when Tiled data is loaded. */ - class Tileset { - + class Tileset { + /** * A Tile set is a combination of an image containing the tiles and collision data per tile. @@ -28676,73 +29148,73 @@ declare module Phaser { * @param spacing The spacing between each tile in the sheet (in pixels). * @param properties Custom Tileset properties. - Default: {} */ - constructor(name: string, firstgid: number, width?: number, height?: number, margin?: number, spacing?: number, properties?: any); - + constructor(name: string, firstgid: number, width?: number, height?: number, margin?: number, spacing?: number, properties?: any); + /** * The number of tile columns in the tileset. */ - columns: number; + columns: number; /** * The Tiled firstgid value. * This is the starting index of the first tile index this Tileset contains. */ - firstgid: number; + firstgid: number; /** * The cached image that contains the individual tiles. Use {@link Phaser.Tileset.setImage setImage} to set. */ - image: any; + image: any; /** * The name of the Tileset. */ - name: string; + name: string; /** * Tileset-specific properties that are typically defined in the Tiled editor. */ - properties: any; + properties: any; /** * The number of tile rows in the the tileset. */ - rows: number; + rows: number; /** * The height of each tile (in pixels). */ - tileHeight: number; + tileHeight: number; /** * The margin around the tiles in the sheet (in pixels). * Use `setSpacing` to change. */ - tileMargin: number; + tileMargin: number; /** * The spacing between each tile in the sheet (in pixels). * Use `setSpacing` to change. */ - tileSpacing: number; + tileSpacing: number; /** * The width of each tile (in pixels). */ - tileWidth: number; + tileWidth: number; /** * The total number of tiles in the tileset. */ - total: number; - + total: number; + /** * Returns true if and only if this tileset contains the given tile index. * @return True if this tileset contains the given index. */ - containsTileIndex(tileIndex: number): boolean; + containsTileIndex(tileIndex: number): boolean; /** * Draws a tile from this Tileset at the given coordinates on the context. @@ -28752,14 +29224,14 @@ declare module Phaser { * @param y The y coordinate to draw to. * @param index The index of the tile within the set to draw. */ - draw(context: CanvasRenderingContext2D, x: number, y: number, index: number): void; + draw(context: CanvasRenderingContext2D, x: number, y: number, index: number): void; /** * Set the image associated with this Tileset and update the tile data. * * @param image The image that contains the tiles. */ - setImage(image: any): void; + setImage(image: any): void; /** * Sets tile spacing and margins. @@ -28767,10 +29239,10 @@ declare module Phaser { * @param margin The margin around the tiles in the sheet (in pixels). * @param spacing The spacing between the tiles in the sheet (in pixels). */ - setSpacing(margin?: number, spacing?: number): void; - - } - + setSpacing(margin?: number, spacing?: number): void; + + } + /** * A TileSprite is a Sprite that has a repeating texture. The texture can be scrolled and scaled independently of the TileSprite itself. @@ -28795,8 +29267,8 @@ declare module Phaser { * if your game is running under WebGL please note that each frame of the animation must be a power of two in size, or it will receive * additional padding to enforce it to be so. */ - class TileSprite extends PIXI.TilingSprite { - + class TileSprite extends PIXI.TilingSprite { + /** * A TileSprite is a Sprite that has a repeating texture. The texture can be scrolled and scaled independently of the TileSprite itself. @@ -28829,8 +29301,8 @@ declare module Phaser { * @param key This is the image or texture used by the TileSprite during rendering. It can be a string which is a reference to the Phaser Image Cache entry, or an instance of a PIXI.Texture or BitmapData. * @param frame If this TileSprite is using part of a sprite sheet or texture atlas you can specify the exact frame to use by giving a string or numeric index. */ - constructor(game: Phaser.Game, x: number, y: number, width: number, height: number, key?: string | Phaser.RenderTexture | Phaser.BitmapData | PIXI.Texture, frame?: string | number); - + constructor(game: Phaser.Game, x: number, y: number, width: number, height: number, key?: string | Phaser.RenderTexture | Phaser.BitmapData | PIXI.Texture, frame?: string | number); + /** * A useful flag to control if the Game Object is alive or dead. @@ -28842,7 +29314,7 @@ declare module Phaser { * However you can use `Group.getFirstAlive` in conjunction with this property for fast object pooling and recycling. * Default: true */ - alive: boolean; + alive: boolean; /** * The angle property is the rotation of the Game Object in *degrees* from its original orientation. @@ -28855,13 +29327,13 @@ declare module Phaser { * If you wish to work in radians instead of degrees you can use the property `rotation` instead. * Working in radians is slightly faster as it doesn't have to perform any calculations. */ - angle: number; + angle: number; /** * If the Game Object is enabled for animation (such as a Phaser.Sprite) this is a reference to its AnimationManager instance. * Through it you can create, play, pause and stop animations. */ - animations: Phaser.AnimationManager; + animations: Phaser.AnimationManager; /** * A Game Object with `autoCull` set to true will check its bounds against the World Camera every frame. @@ -28871,7 +29343,7 @@ declare module Phaser { * This is a relatively expensive operation, especially if enabled on hundreds of Game Objects. So enable it only if you know it's required, * or you have tested performance and find it acceptable. */ - autoCull: boolean; + autoCull: boolean; /** * `body` is the Game Objects physics body. Once a Game Object is enabled for physics you access all associated @@ -28889,20 +29361,20 @@ declare module Phaser { * * If you need a different result then adjust or re-create the Body shape offsets manually or reset the anchor after enabling physics. */ - body: Phaser.Physics.Arcade.Body | Phaser.Physics.P2.Body | Phaser.Physics.Ninja.Body | any; + body: Phaser.Physics.Arcade.Body | Phaser.Physics.P2.Body | Phaser.Physics.Ninja.Body | any; /** * The sum of the y and height properties. * This is the same as `y + height - offsetY`. */ - bottom: number; + bottom: number; /** * The x/y coordinate offset applied to the top-left of the camera that this Game Object will be drawn at if `fixedToCamera` is true. * * The values are relative to the top-left of the camera view and in addition to any parent of the Game Object on the display list. */ - cameraOffset: Phaser.Point; + cameraOffset: Phaser.Point; /** * If this is set to `true` the Game Object checks if it is within the World bounds each frame. @@ -28918,17 +29390,17 @@ declare module Phaser { * This is a relatively expensive operation, especially if enabled on hundreds of Game Objects. So enable it only if you know it's required, * or you have tested performance and find it acceptable. */ - checkWorldBounds: boolean; + checkWorldBounds: boolean; /** * The components this Game Object has installed. */ - components: any; + components: any; /** * Does this texture require a custom render call? (as set by BitmapData, Video, etc) */ - customRender: boolean; + customRender: boolean; /** * An empty Object that belongs to this Game Object. @@ -28937,30 +29409,30 @@ declare module Phaser { * without polluting the Game Object directly. * Default: {} */ - data: any; + data: any; /** * A debug flag designed for use with `Game.enableStep`. */ - debug: boolean; + debug: boolean; /** * As a Game Object runs through its destroy method this flag is set to true, * and can be checked in any sub-systems or plugins it is being destroyed from. */ - destroyPhase: boolean; + destroyPhase: boolean; /** * All Phaser Game Objects have an Events class which contains all of the events that are dispatched when certain things happen to this * Game Object, or any of its components. */ - events: Phaser.Events; + events: Phaser.Events; /** * Controls if this Sprite is processed by the core Phaser game loops and Group loops. * Default: true */ - exists: boolean; + exists: boolean; /** * A Game Object that is "fixed" to the camera uses its x/y coordinates as offsets from the top left of the camera during rendering. @@ -28977,7 +29449,7 @@ declare module Phaser { * * Be careful not to set `fixedToCamera` on Game Objects which are in Groups that already have `fixedToCamera` enabled on them. */ - fixedToCamera: boolean; + fixedToCamera: boolean; /** * Gets or sets the current frame index of the texture being used to render this Game Object. @@ -28991,7 +29463,7 @@ declare module Phaser { * * If you wish to fully replace the texture being used see `loadTexture`. */ - frame: string | number; + frame: string | number; /** * Gets or sets the current frame name of the texture being used to render this Game Object. @@ -29005,24 +29477,24 @@ declare module Phaser { * * If you wish to fully replace the texture being used see `loadTexture`. */ - frameName: string; + frameName: string; /** * A Game Object is considered `fresh` if it has just been created or reset and is yet to receive a renderer transform update. * This property is mostly used internally by the physics systems, but is exposed for the use of plugins. */ - fresh: boolean; + fresh: boolean; /** * A reference to the currently running Game. */ - game: Phaser.Game; + game: Phaser.Game; /** * Checks if the Game Objects bounds intersect with the Game Camera bounds. * Returns `true` if they do, otherwise `false` if fully outside of the Cameras bounds. */ - inCamera: boolean; + inCamera: boolean; /** * The Input Handler for this Game Object. @@ -29031,7 +29503,7 @@ declare module Phaser { * * After you have done this, this property will be a reference to the Phaser InputHandler. */ - input: Phaser.InputHandler; + input: Phaser.InputHandler; /** * By default a Game Object won't process any input events. By setting `inputEnabled` to true a Phaser.InputHandler is created @@ -29042,13 +29514,17 @@ declare module Phaser { * Note that Input related events are dispatched from `this.events`, i.e.: `events.onInputDown`. * * If you set this property to false it will stop the Input Handler from processing any more input events. + * + * If you want to _temporarily_ disable input for a Game Object, then it's better to set + * `input.enabled = false`, as it won't reset any of the Input Handlers internal properties. + * You can then toggle this back on as needed. */ - inputEnabled: boolean; + inputEnabled: boolean; /** * Checks if the Game Objects bounds are within, or intersect at any point with the Game World bounds. */ - inWorld: boolean; + inWorld: boolean; /** * The key of the image or texture used by this Game Object during rendering. @@ -29057,38 +29533,38 @@ declare module Phaser { * If a Game Object is created without a key it is automatically assigned the key `__default` which is a 32x32 transparent PNG stored within the Cache. * If a Game Object is given a key which doesn't exist in the Image Cache it is re-assigned the key `__missing` which is a 32x32 PNG of a green box with a line through it. */ - key: string | Phaser.RenderTexture | Phaser.BitmapData | Phaser.Video | PIXI.Texture; + key: string | Phaser.RenderTexture | Phaser.BitmapData | Phaser.Video | PIXI.Texture; /** * The left coordinate of the Game Object. * This is the same as `x - offsetX`. */ - left: number; + left: number; /** * A user defined name given to this Game Object. * This value isn't ever used internally by Phaser, it is meant as a game level property. */ - name: string; + name: string; /** * The amount the Game Object is visually offset from its x coordinate. * This is the same as `width * anchor.x`. * It will only be > 0 if anchor.x is not equal to zero. */ - offsetX: number; + offsetX: number; /** * The amount the Game Object is visually offset from its y coordinate. * This is the same as `height * anchor.y`. * It will only be > 0 if anchor.y is not equal to zero. */ - offsetY: number; + offsetY: number; /** * If this and the `checkWorldBounds` property are both set to `true` then the `kill` method is called as soon as `inWorld` returns false. */ - outOfBoundsKill: boolean; + outOfBoundsKill: boolean; /** * A Game Object is that is pendingDestroy is flagged to have its destroy method called on the next logic update. @@ -29097,17 +29573,13 @@ declare module Phaser { * This is extremely useful if you wish to destroy an object from within one of its own callbacks * such as with Buttons or other Input events. */ - pendingDestroy: boolean; + pendingDestroy: boolean; /** * The const physics body type of this object. */ - physicsType: number; - - /** - * The coordinate of the object relative to the local coordinates of the parent. - */ - position: Phaser.Point; + physicsType: number; + position: Phaser.Point; /** * Enable or disable texture smoothing for this Game Object. @@ -29116,43 +29588,43 @@ declare module Phaser { * * Smoothing is enabled by default. */ - smoothed: boolean; + smoothed: boolean; /** * The position the Game Object was located in the previous frame. */ - previousPosition: Phaser.Point; - previousRoation: number; + previousPosition: Phaser.Point; + previousRoation: number; /** * The right coordinate of the Game Object. * This is the same as `x + width - offsetX`. */ - right: number; + right: number; /** * The y coordinate of the Game Object. * This is the same as `y - offsetY`. */ - top: number; + top: number; /** * The render order ID is used internally by the renderer and Input Manager and should not be modified. * This property is mostly used internally by the renderers, but is exposed for the use of plugins. */ - renderOrderID: number; + renderOrderID: number; /** * The const type of this object. */ - type: number; + type: number; /** * The world coordinates of this Game Object in pixels. * Depending on where in the display list this Game Object is placed this value can differ from `position`, * which contains the x/y coordinates relative to the Game Objects parent. */ - world: Phaser.Point; + world: Phaser.Point; /** * The z depth of this Game Object within its parent Group. @@ -29160,8 +29632,8 @@ declare module Phaser { * This value is adjusted automatically whenever the Group hierarchy changes. * If you wish to re-order the layering of a Game Object then see methods like Group.moveUp or Group.bringToTop. */ - z: number; - + z: number; + /** * Aligns this Game Object within another Game Object, or Rectangle, known as the @@ -29201,7 +29673,7 @@ declare module Phaser { * @param offsetY A vertical adjustment of the Containers bounds, applied to the aligned position of the Game Object. Use a negative value to shrink the bounds, positive to increase it. * @return This Game Object. */ - alignIn(container: Phaser.Rectangle | Phaser.Sprite | Phaser.Image | Phaser.Text | Phaser.BitmapText | Phaser.Button | Phaser.Graphics | Phaser.TileSprite, position?: number, offsetX?: number, offsetY?: number): any; + alignIn(container: Phaser.Rectangle | Phaser.Sprite | Phaser.Image | Phaser.Text | Phaser.BitmapText | Phaser.Button | Phaser.Graphics | Phaser.TileSprite, position?: number, offsetX?: number, offsetY?: number): any; /** * Aligns this Game Object to the side of another Game Object, or Rectangle, known as the @@ -29242,7 +29714,7 @@ declare module Phaser { * @param offsetY A vertical adjustment of the Containers bounds, applied to the aligned position of the Game Object. Use a negative value to shrink the bounds, positive to increase it. * @return This Game Object. */ - alignTo(container: Phaser.Rectangle | Phaser.Sprite | Phaser.Image | Phaser.Text | Phaser.BitmapText | Phaser.Button | Phaser.Graphics | Phaser.TileSprite, position?: number, offsetX?: number, offsetY?: number): any; + alignTo(container: Phaser.Rectangle | Phaser.Sprite | Phaser.Image | Phaser.Text | Phaser.BitmapText | Phaser.Button | Phaser.Graphics | Phaser.TileSprite, position?: number, offsetX?: number, offsetY?: number): any; /** * Sets this TileSprite to automatically scroll in the given direction until stopped via TileSprite.stopScroll(). @@ -29253,7 +29725,7 @@ declare module Phaser { * @param x Horizontal scroll speed in pixels per second. * @param y Vertical scroll speed in pixels per second. */ - autoScroll(x: number, y: number): void; + autoScroll(x: number, y: number): void; /** * Destroys the TileSprite. This removes it from its parent group, destroys the event and animation handlers if present @@ -29261,7 +29733,7 @@ declare module Phaser { * * @param destroyChildren Should every child of this object have its destroy method called? - Default: true */ - destroy(destroyChildren?: boolean): void; + destroy(destroyChildren?: boolean): void; /** * Changes the base texture the Game Object is using. The old texture is removed and the new one is referenced or fetched from the Cache. @@ -29285,7 +29757,7 @@ declare module Phaser { * @param frame If this Sprite is using part of a sprite sheet or texture atlas you can specify the exact frame to use by giving a string or numeric index. * @param stopAnimation If an animation is already playing on this Sprite you can choose to stop it or let it carry on playing. - Default: true */ - loadTexture(key: string | Phaser.RenderTexture | Phaser.BitmapData | Phaser.Video | PIXI.Texture, frame?: string | number, stopAnimation?: boolean): void; + loadTexture(key: string | Phaser.RenderTexture | Phaser.BitmapData | Phaser.Video | PIXI.Texture, frame?: string | number, stopAnimation?: boolean): void; /** * Plays an Animation. @@ -29301,17 +29773,17 @@ declare module Phaser { * @param killOnComplete If set to true when the animation completes (only happens if loop=false) the parent Sprite will be killed. * @return A reference to playing Animation. */ - play(name: string, frameRate?: number, loop?: boolean, killOnComplete?: boolean): Phaser.Animation; + play(name: string, frameRate?: number, loop?: boolean, killOnComplete?: boolean): Phaser.Animation; /** * Internal method called by the World postUpdate cycle. */ - postUpdate(): void; + postUpdate(): void; /** * Automatically called by World.preUpdate. */ - preUpdate(): void; + preUpdate(): void; /** * Checks to see if the bounds of this Game Object overlaps with the bounds of the given Display Object, @@ -29325,7 +29797,7 @@ declare module Phaser { * @param displayObject The display object to check against. * @return True if the bounds of this Game Object intersects at any point with the bounds of the given display object. */ - overlap(displayObject: Phaser.Sprite | Phaser.Image | Phaser.TileSprite | Phaser.Button | PIXI.DisplayObject): boolean; + overlap(displayObject: Phaser.Sprite | Phaser.Image | Phaser.TileSprite | Phaser.Button | PIXI.DisplayObject): boolean; /** * Resets the TileSprite. This places the TileSprite at the given x/y world coordinates, resets the tilePosition and then @@ -29336,7 +29808,7 @@ declare module Phaser { * @param y The y coordinate (in world space) to position the Sprite at. * @return This instance. */ - reset(x: number, y: number, health?: number): Phaser.TileSprite; + reset(x: number, y: number, health?: number): Phaser.TileSprite; /** * Resizes the Frame dimensions that the Game Object uses for rendering. @@ -29348,12 +29820,12 @@ declare module Phaser { * @param width The new width of the texture. * @param height The new height of the texture. */ - resizeFrame(parent: any, width: number, height: number): void; + resizeFrame(parent: any, width: number, height: number): void; /** * Resets the texture frame dimensions that the Game Object uses for rendering. */ - resetFrame(): void; + resetFrame(): void; /** * Sets the texture frame the Game Object uses for rendering. @@ -29362,22 +29834,22 @@ declare module Phaser { * * @param frame The Frame to be used by the texture. */ - setFrame(frame: Phaser.Frame): void; + setFrame(frame: Phaser.Frame): void; /** * Stops an automatically scrolling TileSprite. */ - stopScroll(): void; + stopScroll(): void; /** * Override this method in your own custom objects to handle any update requirements. * It is called immediately after `preUpdate` and before `postUpdate`. * Remember if this Game Object has any children you should call update on those too. */ - update(): void; - - } - + update(): void; + + } + /** * This is the core internal game clock. @@ -29406,8 +29878,8 @@ declare module Phaser { * * This time is independent of Phaser and always progresses, regardless of if Phaser is paused. */ - class Time { - + class Time { + /** * This is the core internal game clock. @@ -29438,25 +29910,25 @@ declare module Phaser { * * @param game A reference to the currently running game. */ - constructor(game: Phaser.Game); - + constructor(game: Phaser.Game); + /** * If true then advanced profiling, including the fps rate, fps min/max, suggestedFps and msMin/msMax are updated. */ - advancedTiming: boolean; + advancedTiming: boolean; /** * The desired frame rate of the game. * * This is used is used to calculate the physic / logic multiplier and how to apply catch-up logic updates. The desired frame rate of the game. Defaults to 60. */ - desiredFps: number; + desiredFps: number; /** * The desiredFps multiplier as used by Game.update. */ - desiredFpsMult: number; + desiredFpsMult: number; /** * Elapsed time since the last time update, in milliseconds, based on `now`. @@ -29466,12 +29938,12 @@ declare module Phaser { * _Note:_ This is updated only once per game loop - even if multiple logic update steps are done. * Use {@link Phaser.Timer#physicsTime physicsTime} as a basis of game/logic calculations instead. */ - elapsed: number; + elapsed: number; /** * A {@link Phaser.Timer} object bound to the master clock (this Time object) which events can be added to. */ - events: Phaser.Timer; + events: Phaser.Timer; /** * The time in ms since the last time update, in milliseconds, based on `time`. @@ -29481,14 +29953,14 @@ declare module Phaser { * _Note:_ This is updated once per game loop - even if multiple logic update steps are done. * Use {@link Phaser.Timer#physicsTime physicsTime} as a basis of game/logic calculations instead. */ - elapsedMS: number; + elapsedMS: number; /** * Advanced timing result: Frames per second. * * Only calculated if {@link Phaser.Time#advancedTiming advancedTiming} is enabled. */ - fps: number; + fps: number; /** * Advanced timing result: The highest rate the fps has reached (usually no higher than 60fps). @@ -29496,7 +29968,7 @@ declare module Phaser { * Only calculated if {@link Phaser.Time#advancedTiming advancedTiming} is enabled. * This value can be manually reset. */ - fpsMax: number; + fpsMax: number; /** * Advanced timing result: The lowest rate the fps has dropped to. @@ -29504,20 +29976,20 @@ declare module Phaser { * Only calculated if {@link Phaser.Time#advancedTiming advancedTiming} is enabled. * This value can be manually reset. */ - fpsMin: number; + fpsMin: number; /** * Advanced timing result: The number of render frames record in the last second. * * Only calculated if {@link Phaser.Time#advancedTiming advancedTiming} is enabled. */ - frames: number; + frames: number; /** * Local reference to game. */ - game: Phaser.Game; - lastTime: number; + game: Phaser.Game; + lastTime: number; /** * Advanced timing result: The maximum amount of time the game has taken between consecutive frames. @@ -29525,7 +29997,7 @@ declare module Phaser { * Only calculated if {@link Phaser.Time#advancedTiming advancedTiming} is enabled. * This value can be manually reset. */ - msMax: number; + msMax: number; /** * Advanced timing result: The minimum amount of time the game has taken between consecutive frames. @@ -29534,7 +30006,7 @@ declare module Phaser { * This value can be manually reset. * Default: 1000 */ - msMin: number; + msMin: number; /** * An increasing value representing cumulative milliseconds since an undisclosed epoch. @@ -29545,14 +30017,14 @@ declare module Phaser { * The source may either be from a high-res source (eg. if RAF is available) or the standard Date.now; * the value can only be relied upon within a particular game instance. */ - now: number; - pausedTime: number; + now: number; + pausedTime: number; /** * Records how long the game was last paused, in milliseconds. * (This is not updated until the game is resumed.) */ - pauseDuration: number; + pauseDuration: number; /** * The physics update delta, in fractional seconds. @@ -29563,17 +30035,17 @@ declare module Phaser { * * With fixed-step updates this is normally equivalent to `1.0 / desiredFps`. */ - physicsElapsed: number; + physicsElapsed: number; /** * The physics update delta, in milliseconds - equivalent to `physicsElapsed * 1000`. */ - physicsElapsedMS: number; + physicsElapsedMS: number; /** * The `now` when the previous update occurred. */ - prevTime: number; + prevTime: number; /** * Scaling factor to make the game move smoothly in slow motion @@ -29581,7 +30053,7 @@ declare module Phaser { * - 2.0 = half speed * Default: 1 */ - slowMotion: number; + slowMotion: number; /** * The suggested frame rate for your game, based on an averaged real frame rate. @@ -29590,23 +30062,23 @@ declare module Phaser { * _Note:_ This is not available until after a few frames have passed; until then * it's set to the same value as desiredFps. */ - suggestedFps: number; + suggestedFps: number; /** * The `Date.now()` value when the time was last updated. */ - time: number; + time: number; /** * The time when the next call is expected when using setTimer to control the update loop */ - timeExpected: number; + timeExpected: number; /** * The value that setTimeout needs to work out when to next update */ - timeToCall: number; - + timeToCall: number; + /** * Adds an existing Phaser.Timer object to the Timer pool. @@ -29614,12 +30086,12 @@ declare module Phaser { * @param timer An existing Phaser.Timer object. * @return The given Phaser.Timer object. */ - add(timer: Phaser.Timer): Phaser.Timer; + add(timer: Phaser.Timer): Phaser.Timer; /** * Called automatically by Phaser.Game after boot. Should not be called directly. */ - boot(): void; + boot(): void; /** * Creates a new stand-alone Phaser.Timer object. @@ -29627,7 +30099,7 @@ declare module Phaser { * @param autoDestroy A Timer that is set to automatically destroy itself will do so after all of its events have been dispatched (assuming no looping events). - Default: true * @return The Timer object that was created. */ - create(autoDestroy?: boolean): Phaser.Timer; + create(autoDestroy?: boolean): Phaser.Timer; /** * How long has passed since the given time (in seconds). @@ -29635,7 +30107,7 @@ declare module Phaser { * @param since The time you want to measure (in seconds). * @return Duration between given time and now (in seconds). */ - elapsedSecondsSince(since: number): number; + elapsedSecondsSince(since: number): number; /** * How long has passed since the given time. @@ -29643,33 +30115,33 @@ declare module Phaser { * @param since The time you want to measure against. * @return The difference between the given time and now. */ - elapsedSince(since: number): number; + elapsedSince(since: number): number; /** * Remove all Timer objects, regardless of their state and clears all Timers from the {@link Phaser.Time#events events} timer. */ - removeAll(): void; + removeAll(): void; /** * Resets the private _started value to now and removes all currently running Timers. */ - reset(): void; + reset(): void; /** * The number of seconds that have elapsed since the game was started. * @return The number of seconds that have elapsed since the game was started. */ - totalElapsedSeconds(): number; + totalElapsedSeconds(): number; /** * Updates the game clock and if enabled the advanced timing data. This is called automatically by Phaser.Game. * * @param time The current relative timestamp; see {@link Phaser.Time#now now}. */ - update(time: number): void; - - } - + update(time: number): void; + + } + /** * A Timer is a way to create and manage {@link Phaser.TimerEvent timer events} that wait for a specific duration and then run a callback. @@ -29680,8 +30152,8 @@ declare module Phaser { * Timers are based on real life time, adjusted for game pause durations. * That is, *timer events are based on elapsed {@link Phaser.Time game time}* and do *not* take physics time or slow motion into account. */ - class Timer { - + class Timer { + /** * A Timer is a way to create and manage {@link Phaser.TimerEvent timer events} that wait for a specific duration and then run a callback. @@ -29695,99 +30167,99 @@ declare module Phaser { * @param game A reference to the currently running game. * @param autoDestroy If true, the timer will automatically destroy itself after all the events have been dispatched (assuming no looping events). - Default: true */ - constructor(game: Phaser.Game, autoDestroy?: boolean); - + constructor(game: Phaser.Game, autoDestroy?: boolean); + /** * Number of milliseconds in half a second. */ - static HALF: number; + static HALF: number; /** * Number of milliseconds in a minute. */ - static MINUTE: number; + static MINUTE: number; /** * Number of milliseconds in a quarter of a second. */ - static QUARTER: number; + static QUARTER: number; /** * Number of milliseconds in a second. */ - static SECOND: number; - + static SECOND: number; + /** * If true, the timer will automatically destroy itself after all the events have been dispatched (assuming no looping events). */ - autoDestroy: boolean; + autoDestroy: boolean; /** * The duration in ms remaining until the next event will occur. */ - duration: number; + duration: number; /** * An array holding all of this timers Phaser.TimerEvent objects. Use the methods add, repeat and loop to populate it. */ - events: Phaser.TimerEvent[]; + events: Phaser.TimerEvent[]; /** * An expired Timer is one in which all of its events have been dispatched and none are pending. */ - expired: boolean; + expired: boolean; /** * Local reference to game. */ - game: Phaser.Game; + game: Phaser.Game; /** * The number of pending events in the queue. */ - length: number; + length: number; /** * The duration in milliseconds that this Timer has been running for. */ - ms: number; + ms: number; /** * The time at which the next event will occur. */ - next: number; + next: number; /** * The time the next tick will occur. */ - nextTick: number; + nextTick: number; /** * This signal will be dispatched when this Timer has completed which means that there are no more events in the queue. * * The signal is supplied with one argument, `timer`, which is this Timer object. */ - onComplete: Phaser.Signal; + onComplete: Phaser.Signal; /** * True if the Timer is actively running. * * Do not modify this boolean - use {@link Phaser.Timer#pause pause} (and {@link Phaser.Timer#resume resume}) to pause the timer. */ - running: boolean; + running: boolean; /** * The paused state of the Timer. You can pause the timer by calling Timer.pause() and Timer.resume() or by the game pausing. */ - paused: boolean; + paused: boolean; /** * The duration in seconds that this Timer has been running for. */ - seconds: number; - + seconds: number; + /** * Adds a new Event to this Timer. @@ -29803,18 +30275,18 @@ declare module Phaser { * @param args Additional arguments that will be supplied to the callback. * @return The Phaser.TimerEvent object that was created. */ - add(delay: number, callback: Function, callbackContext?: any, ...args: any[]): Phaser.TimerEvent; + add(delay: number, callback: Function, callbackContext?: any, ...args: any[]): Phaser.TimerEvent; /** * Clears any events from the Timer which have pendingDelete set to true and then resets the private _len and _i values. */ - clearPendingEvents(): void; + clearPendingEvents(): void; /** * Destroys this Timer. Any pending Events are not dispatched. * The onComplete callbacks won't be called. */ - destroy(): void; + destroy(): void; /** * Adds a new looped Event to this Timer that will repeat forever or until the Timer is stopped. @@ -29830,31 +30302,31 @@ declare module Phaser { * @param args Additional arguments that will be supplied to the callback. * @return The Phaser.TimerEvent object that was created. */ - loop(delay: number, callback: Function, callbackContext?: any, ...args: any[]): Phaser.TimerEvent; + loop(delay: number, callback: Function, callbackContext?: any, ...args: any[]): Phaser.TimerEvent; /** * Orders the events on this Timer so they are in tick order. * This is called automatically when new events are created. */ - order(): void; + order(): void; /** * Pauses the Timer and all events in the queue. */ - pause(): void; + pause(): void; /** * Removes a pending TimerEvent from the queue. * * @param event The event to remove from the queue. */ - remove(event: Phaser.TimerEvent): boolean; + remove(event: Phaser.TimerEvent): boolean; /** * Removes all Events from this Timer and all callbacks linked to onComplete, but leaves the Timer running. * The onComplete callbacks won't be called. */ - removeAll(): void; + removeAll(): void; /** * Adds a new TimerEvent that will always play through once and then repeat for the given number of iterations. @@ -29872,31 +30344,31 @@ declare module Phaser { * @param args Additional arguments that will be supplied to the callback. * @return The Phaser.TimerEvent object that was created. */ - repeat(delay: number, repeatCount: number, callback: Function, callbackContext?: any, ...args: any[]): Phaser.TimerEvent; + repeat(delay: number, repeatCount: number, callback: Function, callbackContext?: any, ...args: any[]): Phaser.TimerEvent; /** * Resumes the Timer and updates all pending events. */ - resume(): void; + resume(): void; /** * Sort handler used by Phaser.Timer.order. */ - sortHandler(a: any, b: any): number; + sortHandler(a: any, b: any): number; /** * Starts this Timer running. * * @param delay The number of milliseconds, in {@link Phaser.Time game time}, that should elapse before the Timer will start. */ - start(startDelay?: number): void; + start(startDelay?: number): void; /** * Stops this Timer from running. Does not cause it to be destroyed if autoDestroy is set to true. * * @param clearEvents If true all the events in Timer will be cleared, otherwise they will remain. - Default: true */ - stop(clearEvents?: boolean): void; + stop(clearEvents?: boolean): void; /** * The main Timer update event, called automatically by Phaser.Time.update. @@ -29904,10 +30376,10 @@ declare module Phaser { * @param time The time from the core game clock. * @return True if there are still events waiting to be dispatched, otherwise false if this Timer can be destroyed. */ - update(time: number): boolean; - - } - + update(time: number): boolean; + + } + /** * A TimerEvent is a single event that is processed by a Phaser.Timer. @@ -29919,8 +30391,8 @@ declare module Phaser { * * Use {@link Phaser.Timer#add}, {@link Phaser.Timer#repeat}, or {@link Phaser.Timer#loop} methods to create a new event. */ - class TimerEvent { - + class TimerEvent { + /** * A TimerEvent is a single event that is processed by a Phaser.Timer. @@ -29941,64 +30413,64 @@ declare module Phaser { * @param callbackContext The context in which the callback will be called. * @param arguments Additional arguments to be passed to the callback. */ - constructor(timer: Phaser.Timer, delay: number, tick: number, repeatCount: number, loop: boolean, callback: Function, callbackContext: any, ...args: any[]); - + constructor(timer: Phaser.Timer, delay: number, tick: number, repeatCount: number, loop: boolean, callback: Function, callbackContext: any, ...args: any[]); + /** * Additional arguments to be passed to the callback. */ - args: any[]; + args: any[]; /** * The callback that will be called when the TimerEvent occurs. */ - callback: Function; + callback: Function; /** * The context in which the callback will be called. */ - callbackContext: any; + callbackContext: any; /** * The delay in ms at which this TimerEvent fires. */ - delay: number; + delay: number; /** * True if this TimerEvent loops, otherwise false. */ - loop: boolean; + loop: boolean; /** * A flag that controls if the TimerEvent is pending deletion. */ - pendingDelete: boolean; + pendingDelete: boolean; /** * If this TimerEvent repeats it will do so this many times. */ - repeatCount: number; + repeatCount: number; /** * The tick is the next game clock time that this event will fire at. */ - tick: number; + tick: number; /** * The Timer object that this TimerEvent belongs to. */ - timer: Phaser.Timer; - - } - + timer: Phaser.Timer; + + } + /** * Phaser.Touch handles touch events with your game. Note: Android 2.x only supports 1 touch event at once, no multi-touch. * * You should not normally access this class directly, but instead use a Phaser.Pointer object which normalises all game input for you. */ - class Touch { - + class Touch { + /** * Phaser.Touch handles touch events with your game. Note: Android 2.x only supports 1 touch event at once, no multi-touch. @@ -30007,73 +30479,73 @@ declare module Phaser { * * @param game A reference to the currently running game. */ - constructor(game: Phaser.Game); - + constructor(game: Phaser.Game); + /** * The context under which callbacks are called. */ - callbackContext: any; + callbackContext: any; /** * Touch events will only be processed if enabled. * Default: true */ - enabled: boolean; + enabled: boolean; /** * The browser touch DOM event. Will be set to null if no touch event has ever been received. */ - event: any; + event: any; /** * A reference to the currently running game. */ - game: Phaser.Game; + game: Phaser.Game; /** * If true the TouchEvent will have prevent.default called on it. * Default: true */ - preventDefault: boolean; + preventDefault: boolean; /** * A callback that can be fired on a touchCancel event. */ - touchCancelCallback: Function; + touchCancelCallback: Function; /** * A callback that can be fired on a touchEnd event. */ - touchEndCallback: Function; + touchEndCallback: Function; /** * A callback that can be fired on a touchEnter event. */ - touchEnterCallback: Function; + touchEnterCallback: Function; /** * A callback that can be fired on a touchLeave event. */ - touchLeaveCallback: Function; + touchLeaveCallback: Function; /** * A callback that can be fired on a touchMove event. */ - touchMoveCallback: Function; + touchMoveCallback: Function; /** * A callback that can be fired on a touchStart event. */ - touchStartCallback: Function; + touchStartCallback: Function; /** * An array of callbacks that will be fired every time a native touch start or touch end event is received from the browser. * This is used internally to handle audio and video unlocking on mobile devices. * To add a callback to this array please use `Touch.addTouchLockCallback`. */ - touchLockCallbacks: Function[]; - + touchLockCallbacks: Function[]; + /** * Adds a callback that is fired when a browser touchstart or touchend event is received. @@ -30088,7 +30560,7 @@ declare module Phaser { * @param context The context in which the callback will be called. * @param onEnd Will the callback fire on a touchstart (default) or touchend event? */ - addTouchLockCallback(callback: Function, context?: any, onEnd?: Function): void; + addTouchLockCallback(callback: Function, context?: any, onEnd?: Function): void; /** * Removes the callback at the defined index from the Phaser.Touch.touchLockCallbacks array @@ -30097,12 +30569,12 @@ declare module Phaser { * @param context The context in which the callback exists. * @return True if the callback was deleted, otherwise false. */ - removeTouchLockCallback(callback: Function, context?: any): boolean; + removeTouchLockCallback(callback: Function, context?: any): boolean; /** * Consumes all touchmove events on the document (only enable this if you know you need it!). */ - consumeTouchMove(): void; + consumeTouchMove(): void; /** * Touch cancel - touches that were disrupted (perhaps by moving into a plugin or browser chrome). @@ -30110,14 +30582,14 @@ declare module Phaser { * * @param event The native event from the browser. This gets stored in Touch.event. */ - onTouchCancel(event: any): void; + onTouchCancel(event: any): void; /** * The handler for the touchend events. * * @param event The native event from the browser. This gets stored in Touch.event. */ - onTouchEnd(event: any): void; + onTouchEnd(event: any): void; /** * For touch enter and leave its a list of the touch points that have entered or left the target. @@ -30125,7 +30597,7 @@ declare module Phaser { * * @param event The native event from the browser. This gets stored in Touch.event. */ - onTouchEnter(event: any): void; + onTouchEnter(event: any): void; /** * For touch enter and leave its a list of the touch points that have entered or left the target. @@ -30133,34 +30605,34 @@ declare module Phaser { * * @param event The native event from the browser. This gets stored in Touch.event. */ - onTouchLeave(event: any): void; + onTouchLeave(event: any): void; /** * The handler for the touchmove events. * * @param event The native event from the browser. This gets stored in Touch.event. */ - onTouchMove(event: any): void; + onTouchMove(event: any): void; /** * The internal method that handles the touchstart event from the browser. * * @param event The native event from the browser. This gets stored in Touch.event. */ - onTouchStart(event: any): void; + onTouchStart(event: any): void; /** * Starts the event listeners running. */ - start(): void; + start(): void; /** * Stop the event listeners. */ - stop(): void; - - } - + stop(): void; + + } + /** * A Tween allows you to alter one or more properties of a target object over a defined period of time. @@ -30169,8 +30641,8 @@ declare module Phaser { * by calling Tween.to multiple times on the same Tween. Additional tweens specified in this way become "child" tweens and * are played through in sequence. You can use Tween.timeScale and Tween.reverse to control the playback of this Tween and all of its children. */ - class Tween { - + class Tween { + /** * A Tween allows you to alter one or more properties of a target object over a defined period of time. @@ -30183,18 +30655,18 @@ declare module Phaser { * @param game Current game instance. * @param manager The TweenManager responsible for looking after this Tween. */ - constructor(target: any, game: Phaser.Game, manager: Phaser.TweenManager); - + constructor(target: any, game: Phaser.Game, manager: Phaser.TweenManager); + /** * If this Tween is chained to another this holds a reference to it. */ - chainedTween: Phaser.Tween; + chainedTween: Phaser.Tween; /** * The current Tween child being run. */ - current: number; + current: number; /** * Is this Tween frame or time based? A frame based tween will use the physics elapsed timer when updating. This means @@ -30207,103 +30679,103 @@ declare module Phaser { * * The default value is whatever you've set in TweenManager.frameBased. */ - frameBased: boolean; + frameBased: boolean; /** * A reference to the currently running Game. */ - game: Phaser.Game; + game: Phaser.Game; /** * If the tween is running this is set to true, otherwise false. Tweens that are in a delayed state or waiting to start are considered as being running. */ - isRunning: boolean; + isRunning: boolean; /** * Is this Tween paused or not? */ - isPaused: boolean; + isPaused: boolean; /** * Reference to the TweenManager responsible for updating this Tween. */ - manager: Phaser.TweenManager; + manager: Phaser.TweenManager; /** * The onChildComplete event is fired when the Tween or any of its children completes. * Fires every time a child completes unless a child is set to repeat forever. * It will be sent 2 parameters: the target object and this tween. */ - onChildComplete: Phaser.Signal; + onChildComplete: Phaser.Signal; /** * The onComplete event is fired when the Tween and all of its children completes. Does not fire if the Tween is set to loop or repeatAll(-1). * It will be sent 2 parameters: the target object and this tween. */ - onComplete: Phaser.Signal; + onComplete: Phaser.Signal; /** * The onLoop event is fired if the Tween, or any child tweens loop. * It will be sent 2 parameters: the target object and this tween. */ - onLoop: Phaser.Signal; + onLoop: Phaser.Signal; /** * The onRepeat event is fired if the Tween and all of its children repeats. If this tween has no children this will never be fired. * It will be sent 2 parameters: the target object and this tween. */ - onRepeat: Phaser.Signal; + onRepeat: Phaser.Signal; /** * The onStart event is fired when the Tween begins. If there is a delay before the tween starts then onStart fires after the delay is finished. * It will be sent 2 parameters: the target object and this tween. */ - onStart: Phaser.Signal; + onStart: Phaser.Signal; /** * True if this Tween is ready to be deleted by the TweenManager. */ - pendingDelete: boolean; + pendingDelete: boolean; /** * Target property cache used when building the child data values. */ - properties: any; + properties: any; /** * If the Tween and any child tweens are set to repeat this contains the current repeat count. */ - repeatCounter: number; + repeatCounter: number; /** * If set to `true` the current tween will play in reverse. * If the tween hasn't yet started this has no effect. * If there are child tweens then all child tweens will play in reverse from the current point. */ - reverse: boolean; + reverse: boolean; /** * The target object, such as a Phaser.Sprite or property like Phaser.Sprite.scale. */ - target: any; + target: any; /** * An Array of TweenData objects that comprise the different parts of this Tween. */ - timeline: Phaser.TweenData[]; + timeline: Phaser.TweenData[]; /** * The speed at which the tweens will run. A value of 1 means it will match the game frame rate. 0.5 will run at half the frame rate. 2 at double the frame rate, etc. * If a tweens duration is 1 second but timeScale is 0.5 then it will take 2 seconds to complete. * Default: 1 */ - timeScale: number; + timeScale: number; /** * Gets the total duration of this Tween, including all child tweens, in milliseconds. */ - totalDuration: number; - + totalDuration: number; + /** * This method allows you to chain tweens together. Any tween chained to this tween will have its `Tween.start` method called @@ -30318,7 +30790,7 @@ declare module Phaser { * @param tweens One or more tweens that will be chained to this one. * @return This tween. Useful for method chaining. */ - chain(...args: any[]): Phaser.Tween; + chain(...args: any[]): Phaser.Tween; /** * Sets the delay in milliseconds before this tween will start. If there are child tweens it sets the delay before the first child starts. @@ -30330,7 +30802,7 @@ declare module Phaser { * @param index If this tween has more than one child this allows you to target a specific child. If set to -1 it will set the delay on all the children. * @return This tween. Useful for method chaining. */ - delay(duration: number, index?: number): Phaser.Tween; + delay(duration: number, index?: number): Phaser.Tween; /** * Set easing function this tween will use, i.e. Phaser.Easing.Linear.None. @@ -30342,7 +30814,7 @@ declare module Phaser { * @param index If this tween has more than one child this allows you to target a specific child. If set to -1 it will set the easing function on all children. * @return This tween. Useful for method chaining. */ - easing(ease: Function, index?: number): Phaser.Tween; + easing(ease: Function, index?: number): Phaser.Tween; /** * Set easing function this tween will use, i.e. Phaser.Easing.Linear.None. @@ -30354,7 +30826,7 @@ declare module Phaser { * @param index If this tween has more than one child this allows you to target a specific child. If set to -1 it will set the easing function on all children. * @return This tween. Useful for method chaining. */ - easing(ease: string, index?: number): Phaser.Tween; + easing(ease: string, index?: number): Phaser.Tween; /** * Sets this tween to be a `from` tween on the properties given. A `from` tween sets the target to the destination value and tweens to its current value. @@ -30371,7 +30843,7 @@ declare module Phaser { * @param yoyo A tween that yoyos will reverse itself and play backwards automatically. A yoyo'd tween doesn't fire the Tween.onComplete event, so listen for Tween.onLoop instead. * @return This Tween object. */ - from(properties: any, duration?: number, ease?: Function, autoStart?: boolean, delay?: number, repeat?: number, yoyo?: boolean): Phaser.Tween; + from(properties: any, duration?: number, ease?: Function, autoStart?: boolean, delay?: number, repeat?: number, yoyo?: boolean): Phaser.Tween; /** * Sets this tween to be a `from` tween on the properties given. A `from` tween sets the target to the destination value and tweens to its current value. @@ -30388,7 +30860,7 @@ declare module Phaser { * @param yoyo A tween that yoyos will reverse itself and play backwards automatically. A yoyo'd tween doesn't fire the Tween.onComplete event, so listen for Tween.onLoop instead. * @return This Tween object. */ - from(properties: any, duration?: number, ease?: string, autoStart?: boolean, delay?: number, repeat?: number, yoyo?: boolean): Phaser.Tween; + from(properties: any, duration?: number, ease?: string, autoStart?: boolean, delay?: number, repeat?: number, yoyo?: boolean): Phaser.Tween; /** * This will generate an array populated with the tweened object values from start to end. @@ -30400,7 +30872,7 @@ declare module Phaser { * @param data If given the generated data will be appended to this array, otherwise a new array will be returned. * @return An array of tweened values. */ - generateData(frameRate?: number, data?: any): any[]; + generateData(frameRate?: number, data?: any): any[]; /** * Sets the interpolation function the tween will use. By default it uses Phaser.Math.linearInterpolation. @@ -30413,7 +30885,7 @@ declare module Phaser { * @param index If this tween has more than one child this allows you to target a specific child. If set to -1 it will set the interpolation function on all children. * @return This tween. Useful for method chaining. */ - interpolation(interpolation: Function, context?: any, index?: number): Phaser.Tween; + interpolation(interpolation: Function, context?: any, index?: number): Phaser.Tween; /** * Enables the looping of this tween. The tween will loop forever, and onComplete will never fire. @@ -30431,7 +30903,7 @@ declare module Phaser { * @param value If `true` this tween will loop once it reaches the end. Set to `false` to remove an active loop. - Default: true * @return This tween. Useful for method chaining. */ - loop(value?: boolean): Phaser.Tween; + loop(value?: boolean): Phaser.Tween; /** * Sets a callback to be fired each time this tween updates. @@ -30440,12 +30912,12 @@ declare module Phaser { * @param callbackContext The context in which to call the onUpdate callback. * @return This tween. Useful for method chaining. */ - onUpdateCallback(callback: Function, callbackContext?: any): Phaser.Tween; + onUpdateCallback(callback: Function, callbackContext?: any): Phaser.Tween; /** * Pauses the tween. Resume playback with Tween.resume. */ - pause(): void; + pause(): void; /** * Sets the number of times this tween will repeat. @@ -30458,7 +30930,7 @@ declare module Phaser { * @param index If this tween has more than one child this allows you to target a specific child. If set to -1 it will set the repeat value on all the children. * @return This tween. Useful for method chaining. */ - repeat(total: number, repeatDelay?: number, index?: number): Phaser.Tween; + repeat(total: number, repeatDelay?: number, index?: number): Phaser.Tween; /** * Sets the delay in milliseconds before this tween will repeat itself. @@ -30470,7 +30942,7 @@ declare module Phaser { * @param index If this tween has more than one child this allows you to target a specific child. If set to -1 it will set the repeatDelay on all the children. * @return This tween. Useful for method chaining. */ - repeatDelay(duration: number, index?: number): Phaser.Tween; + repeatDelay(duration: number, index?: number): Phaser.Tween; /** * Set how many times this tween and all of its children will repeat. @@ -30479,12 +30951,12 @@ declare module Phaser { * @param total How many times this tween and all children should repeat before completing. Set to zero to remove an active repeat. Set to -1 to repeat forever. * @return This tween. Useful for method chaining. */ - repeatAll(total?: number): Phaser.Tween; + repeatAll(total?: number): Phaser.Tween; /** * Resumes a paused tween. */ - resume(): void; + resume(): void; /** * Starts the tween running. Can also be called by the autoStart parameter of `Tween.to` or `Tween.from`. @@ -30494,7 +30966,7 @@ declare module Phaser { * @param index If this Tween contains child tweens you can specify which one to start from. The default is zero, i.e. the first tween created. * @return This tween. Useful for method chaining. */ - start(index?: number): Phaser.Tween; + start(index?: number): Phaser.Tween; /** * Stops the tween if running and flags it for deletion from the TweenManager. @@ -30504,7 +30976,7 @@ declare module Phaser { * @param complete Set to `true` to dispatch the Tween.onComplete signal. * @return This tween. Useful for method chaining. */ - stop(complete?: boolean): Phaser.Tween; + stop(complete?: boolean): Phaser.Tween; /** * Sets this tween to be a `to` tween on the properties given. A `to` tween starts at the current value and tweens to the destination value given. @@ -30521,7 +30993,7 @@ declare module Phaser { * @param yoyo A tween that yoyos will reverse itself and play backwards automatically. A yoyo'd tween doesn't fire the Tween.onComplete event, so listen for Tween.onLoop instead. * @return This Tween object. */ - to(properties: any, duration?: number, ease?: Function, autoStart?: boolean, delay?: number, repeat?: number, yoyo?: boolean): Phaser.Tween; + to(properties: any, duration?: number, ease?: Function, autoStart?: boolean, delay?: number, repeat?: number, yoyo?: boolean): Phaser.Tween; /** * Sets this tween to be a `to` tween on the properties given. A `to` tween starts at the current value and tweens to the destination value given. @@ -30538,7 +31010,7 @@ declare module Phaser { * @param yoyo A tween that yoyos will reverse itself and play backwards automatically. A yoyo'd tween doesn't fire the Tween.onComplete event, so listen for Tween.onLoop instead. * @return This Tween object. */ - to(properties: any, duration?: number, ease?: string, autoStart?: boolean, delay?: number, repeat?: number, yoyo?: boolean): Phaser.Tween; + to(properties: any, duration?: number, ease?: string, autoStart?: boolean, delay?: number, repeat?: number, yoyo?: boolean): Phaser.Tween; /** * Core tween update function called by the TweenManager. Does not need to be invoked directly. @@ -30546,7 +31018,7 @@ declare module Phaser { * @param time A timestamp passed in by the TweenManager. * @return false if the tween and all child tweens have completed and should be deleted from the manager, otherwise true (still active). */ - update(time: number): boolean; + update(time: number): boolean; /** * Updates either a single TweenData or all TweenData objects properties to the given value. @@ -30558,7 +31030,7 @@ declare module Phaser { * @param index If this tween has more than one child this allows you to target a specific child. If set to -1 it will set the delay on all the children. * @return This tween. Useful for method chaining. */ - updateTweenData(property: string, value: number | Function, index?: number): Phaser.Tween; + updateTweenData(property: string, value: number | Function, index?: number): Phaser.Tween; /** * A Tween that has yoyo set to true will run through from its starting values to its end values and then play back in reverse from end to start. @@ -30572,7 +31044,7 @@ declare module Phaser { * @param index If this tween has more than one child this allows you to target a specific child. If set to -1 it will set yoyo on all the children. * @return This tween. Useful for method chaining. */ - yoyo(enable: boolean, yoyoDelay?: number, index?: number): Phaser.Tween; + yoyo(enable: boolean, yoyoDelay?: number, index?: number): Phaser.Tween; /** * Sets the delay in milliseconds before this tween will run a yoyo (only applies if yoyo is enabled). @@ -30584,18 +31056,18 @@ declare module Phaser { * @param index If this tween has more than one child this allows you to target a specific child. If set to -1 it will set the yoyoDelay on all the children. * @return This tween. Useful for method chaining. */ - yoyoDelay(duration: number, index?: number): Phaser.Tween; - - } - + yoyoDelay(duration: number, index?: number): Phaser.Tween; + + } + /** * A Phaser.Tween contains at least one TweenData object. It contains all of the tween data values, such as the * starting and ending values, the ease function, interpolation and duration. The Tween acts as a timeline manager for * TweenData objects and can contain multiple TweenData objects. */ - class TweenData { - + class TweenData { + /** * A Phaser.Tween contains at least one TweenData object. It contains all of the tween data values, such as the @@ -30604,109 +31076,109 @@ declare module Phaser { * * @param parent The Tween that owns this TweenData object. */ - constructor(parent: Phaser.Tween); - - static COMPLETE: number; - static LOOPED: number; - static PENDING: number; - static RUNNING: number; - + constructor(parent: Phaser.Tween); + + static COMPLETE: number; + static LOOPED: number; + static PENDING: number; + static RUNNING: number; + /** * The amount to delay by until the Tween starts (in ms). Only applies to the start, use repeatDelay to handle repeats. */ - delay: number; + delay: number; /** * Current time value. */ - dt: number; + dt: number; /** * The duration of the tween in ms. * Default: 1000 */ - duration: number; + duration: number; /** * The easing function used for the Tween. * Default: Phaser.Easing.Default */ - easingFunction: Function; + easingFunction: Function; /** * A reference to the currently running Game. */ - game: Phaser.Game; + game: Phaser.Game; /** * When a Tween is yoyoing this value holds if it's currently playing forwards (false) or in reverse (true). */ - inReverse: boolean; + inReverse: boolean; /** * True if the Tween will use interpolation (i.e. is an Array to Array tween) */ - interpolate: boolean; - interpolateFunctionContext: Phaser.Math; + interpolate: boolean; + interpolateFunctionContext: Phaser.Math; /** * The interpolation function context used for the Tween. * Default: Phaser.Math */ - interpolationContext: Phaser.Math; + interpolationContext: Phaser.Math; /** * The interpolation function used for the Tween. * Default: Phaser.Math.linearInterpolation */ - interpolationFunction: Function; + interpolationFunction: Function; /** * If the tween is running this is set to `true`. Unless Phaser.Tween a TweenData that is waiting for a delay to expire is *not* considered as running. */ - isRunning: boolean; + isRunning: boolean; /** * Is this a from tween or a to tween? */ - isFrom: boolean; + isFrom: boolean; /** * The Tween which owns this TweenData. */ - parent: Phaser.Tween; + parent: Phaser.Tween; /** * A value between 0 and 1 that represents how far through the duration this tween is. */ - percent: number; + percent: number; /** * If the Tween is set to repeat this contains the current repeat count. */ - repeatCounter: number; + repeatCounter: number; /** * The time the Tween started or null if it hasn't yet started. */ - startTime: number; + startTime: number; /** * The current calculated value. */ - value: number; + value: number; /** * True if the Tween is set to yoyo, otherwise false. */ - yoyo: boolean; + yoyo: boolean; /** * The amount of time in ms between yoyos of this tween. */ - yoyoDelay: number; - + yoyoDelay: number; + /** * Sets this tween to be a `from` tween on the properties given. A `from` tween sets the target to the destination value and tweens to its current value. @@ -30720,7 +31192,7 @@ declare module Phaser { * @param yoyo A tween that yoyos will reverse itself and play backwards automatically. A yoyo'd tween doesn't fire the Tween.onComplete event, so listen for Tween.onLoop instead. * @return This Tween object. */ - from(properties: any, duration?: number, ease?: Function, delay?: number, repeat?: number, yoyo?: boolean): Phaser.TweenData; + from(properties: any, duration?: number, ease?: Function, delay?: number, repeat?: number, yoyo?: boolean): Phaser.TweenData; /** * This will generate an array populated with the tweened object values from start to end. @@ -30730,19 +31202,19 @@ declare module Phaser { * @param frameRate The speed in frames per second that the data should be generated at. The higher the value, the larger the array it creates. - Default: 60 * @return An array of tweened values. */ - generateData(frameRate?: number): any[]; + generateData(frameRate?: number): any[]; /** * Checks if this Tween is meant to repeat or yoyo and handles doing so. * @return Either Phaser.TweenData.LOOPED or Phaser.TweenData.COMPLETE. */ - repeat(): number; + repeat(): number; /** * Starts the Tween running. * @return This Tween object. */ - start(): Phaser.TweenData; + start(): Phaser.TweenData; /** * Sets this tween to be a `to` tween on the properties given. A `to` tween starts at the current value and tweens to the destination value given. @@ -30756,7 +31228,7 @@ declare module Phaser { * @param yoyo A tween that yoyos will reverse itself and play backwards automatically. A yoyo'd tween doesn't fire the Tween.onComplete event, so listen for Tween.onLoop instead. * @return This Tween object. */ - to(properties: any, duration?: number, ease?: Function, delay?: number, repeat?: number, yoyo?: boolean): Phaser.TweenData; + to(properties: any, duration?: number, ease?: Function, delay?: number, repeat?: number, yoyo?: boolean): Phaser.TweenData; /** * Updates this Tween. This is called automatically by Phaser.Tween. @@ -30764,10 +31236,10 @@ declare module Phaser { * @param time A timestamp passed in by the Tween parent. * @return The current status of this Tween. One of the Phaser.TweenData constants: PENDING, RUNNING, LOOPED or COMPLETE. */ - update(time: number): number; - - } - + update(time: number): number; + + } + /** * Phaser.Game has a single instance of the TweenManager through which all Tween objects are created and updated. @@ -30778,8 +31250,8 @@ declare module Phaser { * It also has callbacks swapped for Signals and a few issues patched with regard to properties and completion errors. * Please see https://github.com/sole/tween.js for a full list of contributors. */ - class TweenManager { - + class TweenManager { + /** * Phaser.Game has a single instance of the TweenManager through which all Tween objects are created and updated. @@ -30792,8 +31264,8 @@ declare module Phaser { * * @param game A reference to the currently running game. */ - constructor(game: Phaser.Game); - + constructor(game: Phaser.Game); + /** * Are all newly created Tweens frame or time based? A frame based tween will use the physics elapsed timer when updating. This means @@ -30804,13 +31276,13 @@ declare module Phaser { * In this situation a 2000ms tween will last exactly 2 seconds, regardless of the device and how many visual updates the tween * has actually been through. For very short tweens you may wish to experiment with a frame based update instead. */ - frameBased: boolean; + frameBased: boolean; /** * Local reference to game. */ - game: Phaser.Game; - + game: Phaser.Game; + /** * Add a new tween into the TweenManager. @@ -30818,7 +31290,7 @@ declare module Phaser { * @param tween The tween object you want to add. * @return The tween object you added to the manager. */ - add(tween: Phaser.Tween): Phaser.Tween; + add(tween: Phaser.Tween): Phaser.Tween; /** * Create a tween object for a specific object. The object can be any JavaScript object or Phaser object such as Sprite. @@ -30826,13 +31298,13 @@ declare module Phaser { * @param object Object the tween will be run on. * @return The newly created tween object. */ - create(object: any): Phaser.Tween; + create(object: any): Phaser.Tween; /** * Get all the tween objects in an array. * @return Array with all tween objects. */ - getAll(): Phaser.Tween[]; + getAll(): Phaser.Tween[]; /** * Checks to see if a particular Sprite is currently being tweened. @@ -30840,19 +31312,19 @@ declare module Phaser { * @param object The object to check for tweens against. * @return Returns true if the object is currently being tweened, false if not. */ - isTweening(object: any): boolean; + isTweening(object: any): boolean; /** * Remove a tween from this manager. * * @param tween The tween object you want to remove. */ - remove(tween: Phaser.Tween): Phaser.Tween; + remove(tween: Phaser.Tween): Phaser.Tween; /** * Remove all tweens running and in the queue. Doesn't call any of the tween onComplete events. */ - removeAll(): void; + removeAll(): void; /** * Remove all tweens from a specific object, array of objects or Group. @@ -30860,28 +31332,28 @@ declare module Phaser { * @param obj The object you want to remove the tweens from. * @param children If passing a group, setting this to true will remove the tweens from all of its children instead of the group itself. - Default: true */ - removeFrom(obj: any, children?: boolean): void; + removeFrom(obj: any, children?: boolean): void; /** * Resumes all currently paused tweens. */ - resumeAll(): void; + resumeAll(): void; /** * Update all the tween objects you added to this manager. * @return Return false if there's no tween to update, otherwise return true. */ - update(): boolean; + update(): boolean; /** * Pauses all currently running tweens. */ - pauseAll(): void; - - } - - class Utils { - + pauseAll(): void; + + } + + class Utils { + /** * Gets an objects property by string. @@ -30890,7 +31362,7 @@ declare module Phaser { * @param prop The property whose value will be returned. * @return the value of the property or null if property isn't found . */ - static getProperty(obj: any, prop: string): any; + static getProperty(obj: any, prop: string): any; /** * Sets an objects property by string. @@ -30899,7 +31371,7 @@ declare module Phaser { * @param prop The property whose value will be changed * @return The object on which the property was set. */ - static setProperty(obj: any, prop: string, value: any): any; + static setProperty(obj: any, prop: string, value: any): any; /** * Generate a random bool result based on the chance value. @@ -30910,7 +31382,7 @@ declare module Phaser { * @param chance The chance of receiving the value. A number between 0 and 100 (effectively 0% to 100%). * @return True if the roll passed, or false otherwise. */ - static chanceRoll(chance: number): boolean; + static chanceRoll(chance: number): boolean; /** * Choose between one of two values randomly. @@ -30919,7 +31391,16 @@ declare module Phaser { * @param choice2 * @return The randomly selected choice */ - static randomChoice(choice1: string | number, choice2: any): any; + static randomChoice(choice1: string | number, choice2: any): any; + + /** + * Takes the given string and reverses it, returning the reversed string. + * For example if given the string `Atari 520ST` it would return `TS025 iratA`. + * + * @param string The string to be reversed. + * @return The reversed string. + */ + static reverseString(string: string): string; /** * Get a unit dimension from a string. @@ -30928,18 +31409,35 @@ declare module Phaser { * @param dimension The window dimension to check. * @return The parsed dimension. */ - static parseDimension(size: any, dimension: number): number; + static parseDimension(size: any, dimension: number): number; /** - * JavaScript string pad http://www.webtoolkit.info/. + * Takes the given string and pads it out, to the length required, using the character + * specified. For example if you need a string to be 6 characters long, you can call: * - * @param str The target string. + * `pad('bob', 6, '-', 2)` + * + * This would return: `bob---` as it has padded it out to 6 characters, using the `-` on the right. + * + * You can also use it to pad numbers (they are always returned as strings): + * + * `pad(512, 6, '0', 1)` + * + * Would return: `000512` with the string padded to the left. + * + * If you don't specify a direction it'll pad to both sides: + * + * `pad('c64', 7, '*')` + * + * Would return: `**c64**` + * + * @param str The target string. `toString()` will be called on the string, which means you can also pass in common data types like numbers. * @param len The number of characters to be added. * @param pad The string to pad it out with (defaults to a space). - Default: " " * @param dir The direction dir = 1 (left), 2 (right), 3 (both). - Default: 3 - * @return The padded string + * @return The padded string. */ - static pad(str: string, len?: number, pad?: string, dir?: number): string; + static pad(str: string, len?: number, pad?: string, dir?: number): string; /** * This is a slightly modified version of jQuery.isPlainObject. @@ -30948,7 +31446,7 @@ declare module Phaser { * @param obj The object to inspect. * @return - true if the object is plain, otherwise false. */ - static isPlainObject(object: any): boolean; + static isPlainObject(object: any): boolean; /** * This is a slightly modified version of http://api.jquery.com/jQuery.extend/ @@ -30957,7 +31455,7 @@ declare module Phaser { * @param target The target object to copy to. * @return The extended object. */ - static extend(deep: boolean, target: any, ...args: any[]): any; + static extend(deep: boolean, target: any, ...args: any[]): any; /** * Mixes in an existing mixin object with the target. @@ -30970,7 +31468,7 @@ declare module Phaser { * @param mixin The object to copy the functions from. * @param replace If the target object already has a matching function should it be overwritten or not? */ - static mixinPrototype(target: any, mixin: any, replace?: boolean): void; + static mixinPrototype(target: any, mixin: any, replace?: boolean): void; /** * Mixes the source object into the destination object, returning the newly modified destination object. @@ -30980,108 +31478,118 @@ declare module Phaser { * @param to The object to copy to (the destination object). * @return The modified destination object. */ - static mixin(from: T, to: any): T; - - } - - module Utils { - + static mixin(from: T, to: any): T; + + } + + module Utils { + /** * A collection of methods for displaying debug information about game objects. + * + * If your game is running in Canvas mode, then you should invoke all of the Debug methods from + * your games `render` function. This is because they are drawn directly onto the game canvas + * itself, so if you call any debug methods outside of `render` they are likely to be overwritten + * by the game itself. + * * If your game is running in WebGL then Debug will create a Sprite that is placed at the top of the Stage display list and bind a canvas texture * to it, which must be uploaded every frame. Be advised: this is very expensive, especially in browsers like Firefox. So please only enable Debug * in WebGL mode if you really need it (or your desktop can cope with it well) and disable it for production! - * If your game is using a Canvas renderer then the debug information is literally drawn on the top of the active game canvas and no Sprite is used. */ - class Debug { - + class Debug { + /** * A collection of methods for displaying debug information about game objects. + * + * If your game is running in Canvas mode, then you should invoke all of the Debug methods from + * your games `render` function. This is because they are drawn directly onto the game canvas + * itself, so if you call any debug methods outside of `render` they are likely to be overwritten + * by the game itself. + * * If your game is running in WebGL then Debug will create a Sprite that is placed at the top of the Stage display list and bind a canvas texture * to it, which must be uploaded every frame. Be advised: this is very expensive, especially in browsers like Firefox. So please only enable Debug * in WebGL mode if you really need it (or your desktop can cope with it well) and disable it for production! - * If your game is using a Canvas renderer then the debug information is literally drawn on the top of the active game canvas and no Sprite is used. * * @param game A reference to the currently running game. */ - constructor(game: Phaser.Game); - + constructor(game: Phaser.Game); + /** * In WebGL mode this BitmapData contains a copy of the debug canvas. */ - bmd: Phaser.BitmapData; + bmd: Phaser.BitmapData; /** * The canvas to which Debug calls draws. */ - canvas: HTMLCanvasElement; + canvas: HTMLCanvasElement; /** * The spacing between columns. */ - columnWidth: number; + columnWidth: number; /** * The 2d context of the canvas. */ - context: CanvasRenderingContext2D; + context: CanvasRenderingContext2D; /** * The alpha of the Debug context, set before all debug information is rendered to it. * Default: 1 */ - currentAlpha: number; + currentAlpha: number; /** * The current X position the debug information will be rendered at. */ - currentX: number; + currentX: number; /** * The current Y position the debug information will be rendered at. */ - currentY: number; + currentY: number; /** * Does the canvas need re-rendering? */ - dirty: boolean; + dirty: boolean; /** * The font that the debug information is rendered in. * Default: '14px Courier' */ - font: string; + font: string; /** * A reference to the currently running Game. */ - game: Phaser.Game; + game: Phaser.Game; /** * The line height between the debug text. */ - lineHeight: number; + lineHeight: number; /** * Should the text be rendered with a slight shadow? Makes it easier to read on different types of background. */ - renderShadow: boolean; + renderShadow: boolean; /** * If debugging in WebGL mode we need this. */ - sprite: Phaser.Image; - - AStar(astar: Phaser.Plugin.AStar, x: number, y: number, showVisited: boolean): void; + sprite: Phaser.Image; + + AStar(astar: Phaser.Plugin.AStar, x: number, y: number, showVisited: boolean): void; /** * Internal method that boots the debug displayer. */ - boot(): void; + boot(): void; /** * Render a Sprites Physics body if it has one set. The body is rendered as a filled or stroked rectangle. @@ -31092,7 +31600,7 @@ declare module Phaser { * @param color Color of the debug rectangle to be rendered. The format is a CSS color string such as '#ff0000' or 'rgba(255,0,0,0.5)'. - Default: 'rgba(0,255,0,0.4)' * @param filled Render the body as a filled rectangle (true) or a stroked rectangle (false) - Default: true */ - body(sprite: Phaser.Sprite, color?: string, filled?: boolean): void; + body(sprite: Phaser.Sprite, color?: string, filled?: boolean): void; /** * Render a Sprites Physic Body information. @@ -31102,7 +31610,7 @@ declare module Phaser { * @param y Y position of the debug info to be rendered. * @param color color of the debug info to be rendered. (format is css color string). - Default: 'rgb(255,255,255)' */ - bodyInfo(sprite: Phaser.Sprite, x: number, y: Number, color?: string): void; + bodyInfo(sprite: Phaser.Sprite, x: number, y: Number, color?: string): void; /** * Renders 'debug draw' data for the given Box2D body. @@ -31111,14 +31619,14 @@ declare module Phaser { * @param sprite The sprite whos body will be rendered. * @param color color of the debug info to be rendered. (format is css color string). - Default: 'rgb(0,255,0)' */ - box2dBody(body: Phaser.Sprite, color?: string): void; + box2dBody(body: Phaser.Sprite, color?: string): void; /** * Renders 'debug draw' data for the Box2D world if it exists. * This uses the standard debug drawing feature of Box2D, so colors will be decided by * the Box2D engine. */ - box2dWorld(): void; + box2dWorld(): void; /** * Render camera information including dimensions and location. @@ -31128,12 +31636,12 @@ declare module Phaser { * @param y Y position of the debug info to be rendered. * @param color color of the debug info to be rendered. (format is css color string). - Default: 'rgb(255,255,255)' */ - cameraInfo(camera: Phaser.Camera, x: number, y: number, color?: string): void; + cameraInfo(camera: Phaser.Camera, x: number, y: number, color?: string): void; /** * Destroy this object. */ - destroy(): void; + destroy(): void; /** * Renders a Phaser geometry object including Rectangle, Circle, Point or Line. @@ -31143,7 +31651,7 @@ declare module Phaser { * @param filled Render the objected as a filled (default, true) or a stroked (false) - Default: true * @param forceType Force rendering of a specific type. If 0 no type will be forced, otherwise 1 = Rectangle, 2 = Circle, 3 = Point and 4 = Line. */ - geom(object: any, color?: string, fiiled?: boolean, forceType?: number): void; + geom(object: any, color?: string, fiiled?: boolean, forceType?: number): void; /** * Render debug information about the Input object. @@ -31152,7 +31660,7 @@ declare module Phaser { * @param y Y position of the debug info to be rendered. * @param color color of the debug info to be rendered. (format is css color string). - Default: 'rgb(255,255,255)' */ - inputInfo(x: number, y: number, color?: string): void; + inputInfo(x: number, y: number, color?: string): void; /** * Renders Line information in the given color. @@ -31162,7 +31670,7 @@ declare module Phaser { * @param y Y position of the debug info to be rendered. * @param color color of the debug info to be rendered. (format is css color string). - Default: 'rgb(255,255,255)' */ - lineInfo(line: Phaser.Line, x: number, y: number, color?: string): void; + lineInfo(line: Phaser.Line, x: number, y: number, color?: string): void; /** * Renders Phaser.Key object information. @@ -31172,17 +31680,17 @@ declare module Phaser { * @param y Y position of the debug info to be rendered. * @param color color of the debug info to be rendered. (format is css color string). - Default: 'rgb(255,255,255)' */ - key(key: Phaser.Key, x?: number, y?: number, color?: string): void; + key(key: Phaser.Key, x?: number, y?: number, color?: string): void; /** * Internal method that outputs a single line of text split over as many columns as needed, one per parameter. */ - line(...args: string[]): void; + line(...args: string[]): void; /** * Internal method that clears the canvas (if a Sprite) ready for a new debug session. */ - preUpdate(): void; + preUpdate(): void; /** * Renders a single pixel at the given size. @@ -31192,7 +31700,7 @@ declare module Phaser { * @param color Color of the pixel (format is css color string). * @param size The 'size' to render the pixel at. - Default: 2 */ - pixel(x: number, y: number, color?: string, size?: number): void; + pixel(x: number, y: number, color?: string, size?: number): void; /** * Renders the Pointer.circle object onto the stage in green if down or red if up along with debug text. @@ -31203,7 +31711,7 @@ declare module Phaser { * @param upColor The color the circle is rendered in if up (and hideIfUp is false). - Default: 'rgba(255,0,0,0.5)' * @param color color of the debug info to be rendered. (format is css color string). - Default: 'rgb(255,255,255)' */ - pointer(pointer: Phaser.Pointer, hideIfUp?: boolean, downColor?: string, upColor?: string, color?: string): void; + pointer(pointer: Phaser.Pointer, hideIfUp?: boolean, downColor?: string, upColor?: string, color?: string): void; /** * Visually renders a QuadTree to the display. @@ -31211,13 +31719,13 @@ declare module Phaser { * @param quadtree The quadtree to render. * @param color The color of the lines in the quadtree. */ - quadTree(quadtree: Phaser.QuadTree, color?: string): void; - rectangle(object: Phaser.Rectangle, color?: string, filled?: boolean): void; + quadTree(quadtree: Phaser.QuadTree, color?: string): void; + rectangle(object: Phaser.Rectangle, color?: string, filled?: boolean): void; /** * Clears the Debug canvas. */ - reset(): void; + reset(): void; /** * Renders the Rope's segments. Note: This is really expensive as it has to calculate new segments every time you call it @@ -31226,7 +31734,7 @@ declare module Phaser { * @param color Color of the debug info to be rendered (format is css color string). * @param filled Render the rectangle as a fillRect (default, true) or a strokeRect (false) - Default: true */ - ropeSegments(rope: Phaser.Rope, color?: number, filled?: boolean): void; + ropeSegments(rope: Phaser.Rope, color?: number, filled?: boolean): void; /** * Render Sound information, including decoded state, duration, volume and more. @@ -31236,7 +31744,7 @@ declare module Phaser { * @param y Y position of the debug info to be rendered. * @param color color of the debug info to be rendered. (format is css color string). - Default: 'rgb(255,255,255)' */ - soundInfo(sound: Phaser.Sound, x: number, y: number, color?: string): void; + soundInfo(sound: Phaser.Sound, x: number, y: number, color?: string): void; /** * Renders the Sprites bounds. Note: This is really expensive as it has to calculate the bounds every time you call it! @@ -31245,7 +31753,7 @@ declare module Phaser { * @param color Color of the debug info to be rendered (format is css color string). * @param filled Render the rectangle as a fillRect (default, true) or a strokeRect (false) - Default: true */ - spriteBounds(sprite: any, color?: string, filled?: boolean): void; + spriteBounds(sprite: any, color?: string, filled?: boolean): void; /** * Renders the sprite coordinates in local, positional and world space. @@ -31255,7 +31763,7 @@ declare module Phaser { * @param y Y position of the debug info to be rendered. * @param color color of the debug info to be rendered. (format is css color string). - Default: 'rgb(255,255,255)' */ - spriteCoords(sprite: any, x: number, y: number, color?: string): void; + spriteCoords(sprite: any, x: number, y: number, color?: string): void; /** * Render debug infos (including name, bounds info, position and some other properties) about the Sprite. @@ -31265,7 +31773,7 @@ declare module Phaser { * @param y Y position of the debug info to be rendered. * @param color color of the debug info to be rendered. (format is css color string). - Default: 'rgb(255,255,255)' */ - spriteInfo(sprite: Phaser.Sprite, x: number, y: number, color?: string): void; + spriteInfo(sprite: Phaser.Sprite, x: number, y: number, color?: string): void; /** * Render Sprite Input Debug information. @@ -31275,7 +31783,7 @@ declare module Phaser { * @param y Y position of the debug info to be rendered. * @param color color of the debug info to be rendered. (format is css color string). - Default: 'rgb(255,255,255)' */ - spriteInputInfo(sprite: Phaser.Sprite, x: number, y: number, color?: string): void; + spriteInputInfo(sprite: Phaser.Sprite, x: number, y: number, color?: string): void; /** * Internal method that resets and starts the debug output values. @@ -31285,12 +31793,12 @@ declare module Phaser { * @param color The color the debug text will drawn in. - Default: 'rgb(255,255,255)' * @param columnWidth The spacing between columns. */ - start(x?: number, y?: number, color?: string, columnWidth?: number): void; + start(x?: number, y?: number, color?: string, columnWidth?: number): void; /** * Internal method that stops the debug output. */ - stop(): void; + stop(): void; /** * Render a string of text. @@ -31301,7 +31809,7 @@ declare module Phaser { * @param color Color of the debug info to be rendered (format is css color string). * @param font The font of text to draw. */ - text(text: string, x: number, y: number, color?: string, font?: string): void; + text(text: string, x: number, y: number, color?: string, font?: string): void; /** * Render Timer information. @@ -31311,84 +31819,84 @@ declare module Phaser { * @param y Y position of the debug info to be rendered. * @param color color of the debug info to be rendered. (format is css color string). - Default: 'rgb(255,255,255)' */ - timer(timer: Phaser.Timer, x: number, y: number, color?: string): void; - - } - - } - - class Weapon extends Phaser.Plugin { - - constructor(game: Phaser.Game, parent: Phaser.PluginManager); - - static KILL_NEVER: number; - static KILL_LIFESPAN: number; - static KILL_DISTANCE: number; - static KILL_WEAPON_BOUNDS: number; - static KILL_CAMERA_BOUNDS: number; - static KILL_WORLD_BOUNDS: number; - static KILL_STATIC_BOUNDS: number; - - autoExpandBulletsGroup: boolean; - autofire: boolean; - bounds: Phaser.Rectangle; - bulletAngleOffset: number; - bulletAngleVariance: number; - bulletAnimation: string; - bulletClass: any; - bulletCollideWorldBounds: boolean; - bulletFrame: string; - bulletFrameCycle: boolean; - bulletFrameRandom: boolean; - bulletFrames: any[]; - bulletGravity: Phaser.Point; - bulletInheritSpriteSpeed: boolean; - bulletKey: string; - bulletKillDistance: number; - bulletKillType: number; - bulletLifespan: number; - bulletRotateToVelocity: boolean; - bullets: Phaser.Group; - bulletSpeed: number; - bulletSpeedVariance: number; - bulletWorldWrap: boolean; - bulletWorldWrapPadding: number; - fireAngle: number; - fireFrom: Phaser.Rectangle; - fireLimit: number; - fireRate: number; - fireRateVariance: number; - onFire: Phaser.Signal; - onFireLimit: Phaser.Signal; - onKill: Phaser.Signal; - shots: number; - trackedPointer: Phaser.Pointer; - trackedSprite: any; - trackOffset: Phaser.Point; - trackRotation: boolean; - x: number; - y: number; - - addBulletAnimation(name: string, frames?: number[] | string[], frameRate?: number, loop?: boolean, useNumericIndex?: boolean): Phaser.Weapon; - createBullets(quantity?: number, key?: any, frame?: any, group?: Phaser.Group): Phaser.Weapon; - debug(x?: number, y?: number, debugBodies?: boolean): void; - destroy(): void; - fire(from: any, x?: number, y?: number): boolean; - fireAtPointer(pointer: Phaser.Pointer): boolean; - fireAtSprite(sprite: Phaser.Sprite): boolean; - fireAtXY(x: number, y: number): boolean; - forEach(callback: any, callbackContext: any): Phaser.Weapon; - killAll(): Phaser.Weapon; - pauseAll(): Phaser.Weapon; - resetShots(newLimit?: number): Phaser.Weapon; - resumeAll(): Phaser.Weapon; - setBulletBodyOffset(width: number, height: number, offsetX?: number, offsetY?: number): Phaser.Weapon; - setBulletFrames(min: number, max: number, cycle?: boolean, random?: boolean): Phaser.Weapon; - trackPointer(pointer: Phaser.Pointer, offsetX?: number, offsetY?: number): Phaser.Weapon; - trackSprite(sprite: Phaser.Sprite, offsetX?: number, offsetY?: number, trackRotation?: boolean): Phaser.Weapon; - - } - + timer(timer: Phaser.Timer, x: number, y: number, color?: string): void; + + } + + } + + class Weapon extends Phaser.Plugin { + + constructor(game: Phaser.Game, parent: Phaser.PluginManager); + + static KILL_NEVER: number; + static KILL_LIFESPAN: number; + static KILL_DISTANCE: number; + static KILL_WEAPON_BOUNDS: number; + static KILL_CAMERA_BOUNDS: number; + static KILL_WORLD_BOUNDS: number; + static KILL_STATIC_BOUNDS: number; + + autoExpandBulletsGroup: boolean; + autofire: boolean; + bounds: Phaser.Rectangle; + bulletAngleOffset: number; + bulletAngleVariance: number; + bulletAnimation: string; + bulletClass: any; + bulletCollideWorldBounds: boolean; + bulletFrame: string; + bulletFrameCycle: boolean; + bulletFrameRandom: boolean; + bulletFrames: any[]; + bulletGravity: Phaser.Point; + bulletInheritSpriteSpeed: boolean; + bulletKey: string; + bulletKillDistance: number; + bulletKillType: number; + bulletLifespan: number; + bulletRotateToVelocity: boolean; + bullets: Phaser.Group; + bulletSpeed: number; + bulletSpeedVariance: number; + bulletWorldWrap: boolean; + bulletWorldWrapPadding: number; + fireAngle: number; + fireFrom: Phaser.Rectangle; + fireLimit: number; + fireRate: number; + fireRateVariance: number; + onFire: Phaser.Signal; + onFireLimit: Phaser.Signal; + onKill: Phaser.Signal; + shots: number; + trackedPointer: Phaser.Pointer; + trackedSprite: any; + trackOffset: Phaser.Point; + trackRotation: boolean; + x: number; + y: number; + + addBulletAnimation(name: string, frames?: number[] | string[], frameRate?: number, loop?: boolean, useNumericIndex?: boolean): Phaser.Weapon; + createBullets(quantity?: number, key?: any, frame?: any, group?: Phaser.Group): Phaser.Weapon; + debug(x?: number, y?: number, debugBodies?: boolean): void; + destroy(): void; + fire(from: any, x?: number, y?: number): boolean; + fireAtPointer(pointer: Phaser.Pointer): boolean; + fireAtSprite(sprite: Phaser.Sprite): boolean; + fireAtXY(x: number, y: number): boolean; + forEach(callback: any, callbackContext: any): Phaser.Weapon; + killAll(): Phaser.Weapon; + pauseAll(): Phaser.Weapon; + resetShots(newLimit?: number): Phaser.Weapon; + resumeAll(): Phaser.Weapon; + setBulletBodyOffset(width: number, height: number, offsetX?: number, offsetY?: number): Phaser.Weapon; + setBulletFrames(min: number, max: number, cycle?: boolean, random?: boolean): Phaser.Weapon; + trackPointer(pointer: Phaser.Pointer, offsetX?: number, offsetY?: number): Phaser.Weapon; + trackSprite(sprite: Phaser.Sprite, offsetX?: number, offsetY?: number, trackRotation?: boolean): Phaser.Weapon; + + } + /** * "This world is but a canvas to our imagination." - Henry David Thoreau @@ -31397,8 +31905,8 @@ declare module Phaser { * by stage limits and can be any size. You look into the world via cameras. All game objects live within * the world at world-based coordinates. By default a world is created the same size as your Stage. */ - class World extends Phaser.Group { - + class World extends Phaser.Group { + /** * "This world is but a canvas to our imagination." - Henry David Thoreau @@ -31409,8 +31917,8 @@ declare module Phaser { * * @param game Reference to the current game instance. */ - constructor(game: Phaser.Game); - + constructor(game: Phaser.Game); + /** * The World has no fixed size, but it does have a bounds outside of which objects are no longer considered as being "in world" and you should use this to clean-up the display list and purge dead objects. @@ -31418,60 +31926,60 @@ declare module Phaser { * However 0,0 is actually the center of the world, and if you rotate or scale the world all of that will happen from 0,0. * So if you want to make a game in which the world itself will rotate you should adjust the bounds so that 0,0 is the center point, i.e. set them to -1000,-1000,2000,2000 for a 2000x2000 sized world centered around 0,0. Bound of this world that objects can not escape from. */ - bounds: Phaser.Rectangle; + bounds: Phaser.Rectangle; /** * Camera instance. */ - camera: Phaser.Camera; + camera: Phaser.Camera; /** * Gets the X position corresponding to the center point of the world. */ - centerX: number; + centerX: number; /** * Gets the Y position corresponding to the center point of the world. */ - centerY: number; + centerY: number; /** * A reference to the currently running Game. */ - game: Phaser.Game; + game: Phaser.Game; /** * Gets or sets the current height of the game world. The world can never be smaller than the game (canvas) dimensions. */ - height: number; - isPaused: boolean; + height: number; + isPaused: boolean; /** * Gets a random integer which is lesser than or equal to the current width of the game world. */ - randomX: number; + randomX: number; /** * Gets a random integer which is lesser than or equal to the current height of the game world. */ - randomY: number; - stats: { - skipped: number; - ignored: number; - checked: number; - }; + randomY: number; + stats: { + skipped: number; + ignored: number; + checked: number; + }; /** * Gets or sets the current width of the game world. The world can never be smaller than the game (canvas) dimensions. */ - width: number; - + width: number; + /** * Initialises the game world. */ - boot(): void; - getObjectsUnderPointer(pointer: Phaser.Pointer, group: Phaser.Group, callback?: Function, callbackContext?: any): Phaser.Sprite; + boot(): void; + getObjectsUnderPointer(pointer: Phaser.Pointer, group: Phaser.Group, callback?: Function, callbackContext?: any): Phaser.Sprite; /** * Updates the size of this world. Note that this doesn't modify the world x/y coordinates, just the width and height. @@ -31479,7 +31987,7 @@ declare module Phaser { * @param width New width of the game world in pixels. * @param height New height of the game world in pixels. */ - resize(width: number, height: number): void; + resize(width: number, height: number): void; /** * Updates the size of this world and sets World.x/y to the given values @@ -31490,11 +31998,11 @@ declare module Phaser { * @param width New width of the game world in pixels. * @param height New height of the game world in pixels. */ - setBounds(x: number, y: number, width: number, height: number): void; - sortLeftRight(a: Phaser.Sprite, b: Phaser.Sprite): number; - sortRightLeft(a: Phaser.Sprite, b: Phaser.Sprite): number; - sortTopBottom(a: Phaser.Sprite, b: Phaser.Sprite): number; - sortBottomTop(a: Phaser.Sprite, b: Phaser.Sprite): number; + setBounds(x: number, y: number, width: number, height: number): void; + sortLeftRight(a: Phaser.Sprite, b: Phaser.Sprite): number; + sortRightLeft(a: Phaser.Sprite, b: Phaser.Sprite): number; + sortTopBottom(a: Phaser.Sprite, b: Phaser.Sprite): number; + sortBottomTop(a: Phaser.Sprite, b: Phaser.Sprite): number; /** * Sort the children in the group according to a particular key and ordering. @@ -31509,7 +32017,7 @@ declare module Phaser { * @param key The name of the property to sort on. Defaults to the objects z-depth value. - Default: 'z' * @param order Order ascending ({@link Phaser.Group.SORT_ASCENDING SORT_ASCENDING}) or descending ({@link Phaser.Group.SORT_DESCENDING SORT_DESCENDING}). - Default: Phaser.Group.SORT_ASCENDING */ - sort(group: Phaser.Group, sortDirection?: number): void; + sort(group: Phaser.Group, sortDirection?: number): void; /** * Sort the children in the group according to a particular key and ordering. @@ -31524,12 +32032,12 @@ declare module Phaser { * @param key The name of the property to sort on. Defaults to the objects z-depth value. - Default: 'z' * @param order Order ascending ({@link Phaser.Group.SORT_ASCENDING SORT_ASCENDING}) or descending ({@link Phaser.Group.SORT_DESCENDING SORT_DESCENDING}). - Default: Phaser.Group.SORT_ASCENDING */ - sort(key?: string, order?: number): void; + sort(key?: string, order?: number): void; /** * Destroyer of worlds. */ - shutdown(): void; + shutdown(): void; /** * This will take the given game object and check if its x/y coordinates fall outside of the world bounds. @@ -31545,8 +32053,8 @@ declare module Phaser { * @param horizontal If horizontal is false, wrap will not wrap the object.x coordinates horizontally. - Default: true * @param vertical If vertical is false, wrap will not wrap the object.y coordinates vertically. - Default: true */ - wrap(sprite: any, padding?: number, useBounds?: boolean, horizontal?: boolean, vertical?: boolean): void; - - } - -} + wrap(sprite: any, padding?: number, useBounds?: boolean, horizontal?: boolean, vertical?: boolean): void; + + } + +} diff --git a/typescript/phaser.d.ts b/typescript/phaser.d.ts index be998dc58..c5a5ff865 100644 --- a/typescript/phaser.d.ts +++ b/typescript/phaser.d.ts @@ -1,7 +1,7 @@ /// /// -// Type definitions for Phaser 2.5.0 - 17th June 2016 +// Type definitions for Phaser 2.6.0 - 7th July 2016 // Project: https://github.com/photonstorm/phaser declare module "phaser" { @@ -159,7 +159,6 @@ declare module Phaser { next(quantity?: number): void; play(name: string, frameRate?: number, loop?: boolean, killOnComplete?: boolean): Phaser.Animation; previous(quantity?: number): void; - refreshFrame(): void; stop(name?: string, resetFrame?: boolean): void; update(): boolean; validateFrames(frames: Phaser.Frame[], useNumericIndex?: boolean): boolean; @@ -224,6 +223,8 @@ declare module Phaser { static rotateMatrix(matrix: any, direction: number | string): any; static findClosest(value: number, arr: number[]): number; static rotate(array: any[]): any; + static rotateLeft(array: any[]): any; + static rotateRight(array: any[]): any; static numberArray(start: number, end: number): number[]; static numberArrayStep(start: number, end?: number, step?: number): number[]; @@ -263,7 +264,7 @@ declare module Phaser { class BitmapData { - constructor(game: Phaser.Game, key: string, width?: number, height?: number); + constructor(game: Phaser.Game, key: string, width?: number, height?: number, skipPool?: boolean); baseTexture: PIXI.BaseTexture; buffer: ArrayBuffer; @@ -343,8 +344,8 @@ declare module Phaser { move(x: number, y: number, wrap?: boolean): Phaser.BitmapData; moveH(distance: number, wrap?: boolean): Phaser.BitmapData; moveV(distance: number, wrap?: boolean): Phaser.BitmapData; - processPixel(callback: Function, callbackContext: any, x?: number, y?: Number, width?: number, height?: number): Phaser.BitmapData; - processPixelRGB(callback: Function, callbackContext: any, x?: number, y?: Number, width?: number, height?: number): Phaser.BitmapData; + processPixel(callback: (color: number, x: number, y: number) => void, callbackContext: any, x?: number, y?: Number, width?: number, height?: number): Phaser.BitmapData; + processPixelRGB(callback: (color: ColorComponents, x: number, y: number) => void, callbackContext: any, x?: number, y?: Number, width?: number, height?: number): Phaser.BitmapData; rect(x: number, y: number, width: number, height: number, fillStyle?: string): Phaser.BitmapData; render(): Phaser.BitmapData; replaceRGB(r1: number, g1: number, b1: number, a1: number, r2: number, g2: number, b2: number, a2: number, region?: Phaser.Rectangle): Phaser.BitmapData; @@ -511,6 +512,9 @@ declare module Phaser { static XML: number; static VIDEO: number; + static DEFAULT: PIXI.Texture; + static MISSING: PIXI.Texture; + autoResolveURL: boolean; game: Phaser.Game; onSoundUnlock: Phaser.Signal; @@ -569,8 +573,6 @@ declare module Phaser { getItem(key: string, cache: number, method?: string, property?: string): any; getJSON(key: string, clone?: boolean): any; getKeys(cache: number): string[]; - getPixiTexture(key: string): PIXI.Texture; - getPixiBaseTexture(key: string): PIXI.BaseTexture; getPhysicsData(key: string, object?: string, fixtureKey?: string): any[]; getRenderTexture(key: string): Phaser.CachedRenderTexture; getShader(key: string): string; @@ -734,8 +736,8 @@ declare module Phaser { class Color { static componentToHex(color: number): string; - static createColor(r?: number, g?: number, b?: number, a?: number, h?: number, s?: number, l?: number, v?: number): any; - static fromRGBA(rgba: number, out?: any): any; + static createColor(r?: number, g?: number, b?: number, a?: number, h?: number, s?: number, l?: number, v?: number): ColorComponents; + static fromRGBA(rgba: number, out?: ColorComponents): ColorComponents; static getAlpha(color: number): number; static getAlphaFloat(color: number): number; static getBlue(color: number): number; @@ -744,27 +746,28 @@ declare module Phaser { static getGreen(color: number): number; static getRandomColor(min?: number, max?: number, alpha?: number): number; static getRed(color: number): number; - static getRGB(color: number): any; - static getWebRGB(color: any): string; + static getRGB(color: number): RGBColor; + static getWebRGB(color: number | RGBColor): string; static hexToRGB(h: string): number; - static hexToColor(hex: string, out?: any): any; - static HSLtoRGB(h: number, s: number, l: number, out?: any): any; - static HSLColorWheel(s?: number, l?: number): any[]; - static HSVtoRGB(h: number, s: number, v: number, out?: any): any; - static HSVColorWheel(s?: number, v?: number): any[]; + static hexToColor(hex: string, out?: ColorComponents): ColorComponents; + static HSLtoRGB(h: number, s: number, l: number, out?: ColorComponents): ColorComponents; + static HSLColorWheel(s?: number, l?: number): ColorComponents[]; + static HSVtoRGB(h: number, s: number, v: number, out?: ColorComponents): ColorComponents; + static HSVColorWheel(s?: number, v?: number): ColorComponents[]; static hueToColor(p: number, q: number, t: number): number; static interpolateColor(color1: number, color2: number, steps: number, currentStep: number, alpha: number): number; static interpolateColorWithRGB(color: number, r: number, g: number, b: number, steps: number, currentStep: number): number; static interpolateRGB(r1: number, g1: number, b1: number, r2: number, g2: number, b2: number, steps: number, currentStep: number): number; static packPixel(r: number, g: number, b: number, a: number): number; - static RGBtoHSL(r: number, g: number, b: number, out?: any): any; - static RGBtoHSV(r: number, g: number, b: number, out?: any): any; + static RGBtoHSL(r: number, g: number, b: number, out?: ColorComponents): ColorComponents; + static RGBtoHSV(r: number, g: number, b: number, out?: ColorComponents): ColorComponents; static RGBtoString(r: number, g: number, b: number, a?: number, prefix?: string): string; static toRGBA(r: number, g: number, b: number, a: number): number; - static unpackPixel(rgba: number, out?: any, hsl?: boolean, hsv?: boolean): any; - static updateColor(out: any): number; - static valueToColor(value: string, out?: any): { r: number; g: number; b: number; a: number; }; - static webToColor(web: string, out?: any): { r: number; g: number; b: number; a: number; }; + static toABGR(r: number, g: number, b: number, a: number): number; + static unpackPixel(rgba: number, out?: ColorComponents, hsl?: boolean, hsv?: boolean): ColorComponents; + static updateColor(out: ColorComponents): ColorComponents; + static valueToColor(value: string, out?: ColorComponents): ColorComponents; + static webToColor(web: string, out?: ColorComponents): ColorComponents; static blendNormal(a: number): number; static blendLighten(a: number, b: number): number; static blendDarken(a: number, b: number): number; @@ -793,6 +796,22 @@ declare module Phaser { } + interface RGBColor { + r: number; + g: number; + b: number; + a: number; + } + interface ColorComponents extends RGBColor { + h: number; + s: number; + v: number; + l: number; + color: number; + color32: number; + rgba: string; + } + class Create { constructor(game: Phaser.Game); @@ -1706,7 +1725,10 @@ declare module Phaser { alpha: number; angle: number; alive: boolean; + bottom: number; cameraOffset: Phaser.Point; + centerX: number; + centerY: number; classType: any; cursor: any; cursorIndex: number; @@ -1718,6 +1740,7 @@ declare module Phaser { hash: PIXI.DisplayObject[]; ignoreDestroy: boolean; inputEnableChildren: boolean; + left: number; length: number; name: string; onChildInputDown: Phaser.Signal; @@ -1730,8 +1753,10 @@ declare module Phaser { physicsType: number; physicsSortDirection: number; position: Phaser.Point; + right: number; rotation: number; scale: Phaser.Point; + top: number; total: number; type: number; visible: boolean; @@ -1743,6 +1768,8 @@ declare module Phaser { addMultiple(children: any[], silent?: boolean): any[]; addToHash(child: PIXI.DisplayObject): boolean; align(rows: number, columns: number, cellWidth: number, cellHeight: number, position?: number, offset?: number): void; + alignIn(container: Phaser.Rectangle | Phaser.Sprite | Phaser.Image | Phaser.Text | Phaser.BitmapText | Phaser.Button | Phaser.Graphics | Phaser.TileSprite, position?: number, offsetX?: number, offsetY?: number): Phaser.Group; + alignTo(container: Phaser.Rectangle | Phaser.Sprite | Phaser.Image | Phaser.Text | Phaser.BitmapText | Phaser.Button | Phaser.Graphics | Phaser.TileSprite, position?: number, offsetX?: number, offsetY?: number): Phaser.Group; bringToTop(child: any): any; callAll(method: string, context: any, ...parameters: any[]): void; callAllExists(callback: string, existsValue: boolean, ...parameters: any[]): void; @@ -1764,11 +1791,11 @@ declare module Phaser { getAt(index: number): PIXI.DisplayObject | number; getBottom(): any; getByName(name: string): any; - getClosestTo(object: any): any; + getClosestTo(object: any, callback?: Function, callbackContext?: any): any; getFirstAlive(createIfNull?: boolean, x?: number, y?: number, key?: string | Phaser.RenderTexture | Phaser.BitmapData | Phaser.Video | PIXI.Texture, frame?: string | number): any; getFirstDead(createIfNull?: boolean, x?: number, y?: number, key?: string | Phaser.RenderTexture | Phaser.BitmapData | Phaser.Video | PIXI.Texture, frame?: string | number): any; getFirstExists(exists: boolean, createIfNull?: boolean, x?: number, y?: number, key?: string | Phaser.RenderTexture | Phaser.BitmapData | Phaser.Video | PIXI.Texture, frame?: string | number): any; - getFurthestFrom(object: any): any; + getFurthestFrom(object: any, callback?: Function, callbackContext?: any): any; getIndex(child: any): number; getRandom(startIndex?: number, length?: number): any; getTop(): any; @@ -2754,6 +2781,7 @@ declare module Phaser { minRotation: number; name: string; on: boolean; + particleAnchor: Phaser.Point; particleBringToTop: boolean; particleSendToBack: boolean; particleClass: any; @@ -2981,6 +3009,7 @@ declare module Phaser { halfHeight: number; height: number; immovable: boolean; + isCircle: boolean; isMoving: boolean; mass: number; maxAngular: number; @@ -2990,13 +3019,17 @@ declare module Phaser { movementCallbackContext: any; newVelocity: Phaser.Point; offset: Phaser.Point; + onCollide: Phaser.Signal; onMoveComplete: Phaser.Signal; + onOverlap: Phaser.Signal; + onWorldBounds: Phaser.Signal; overlapX: number; overlapY: number; phase: number; position: Phaser.Point; preRotation: number; prev: Phaser.Point; + radius: number; right: number; rotation: number; skipQuadTree: boolean; @@ -3023,6 +3056,7 @@ declare module Phaser { deltaAbsX(): number; deltaAbsY(): number; destroy(): void; + getBounds(obj: any): any; hitTest(x: number, y: number): boolean; moveFrom(duration: number, speed?: number, direction?: number): boolean; moveTo(duration: number, distance: number, direction?: number): boolean; @@ -3033,6 +3067,7 @@ declare module Phaser { render(context: any, body: Phaser.Physics.Arcade.Body, color?: string, filled?: boolean): void; renderBodyInfo(debug: Phaser.Utils.Debug, body: Phaser.Physics.Arcade.Body): void; reset(x: number, y: number): void; + setCircle(radius: number, offsetX?: number, offsetY?: number): void; setSize(width: number, height: number, offsetX?: number, offsetY?: number): void; updateBounds(): boolean; @@ -3992,6 +4027,7 @@ declare module Phaser { constructor(...points: number[]); area: number; + flattened: boolean; points: number[] | Phaser.Point[]; type: number; @@ -4916,7 +4952,7 @@ declare module Phaser { renderTabLine(line: string, x: number, y: number, fill?: boolean): void; setShadow(x?: number, y?: number, color?: any, blur?: number, shadowStroke?: boolean, shadowFill?: boolean): Phaser.Text; setStyle(style?: PhaserTextStyle, update?: boolean): Phaser.Text; - setText(text: string): Phaser.Text; + setText(text: string, immediate?: boolean): Phaser.Text; setTextBounds(x?: number, y?: number, width?: number, height?: number): Phaser.Text; update(): void; updateFont(components: any): void; @@ -5450,6 +5486,7 @@ declare module Phaser { static setProperty(obj: any, prop: string, value: any): any; static chanceRoll(chance: number): boolean; static randomChoice(choice1: string | number, choice2: any): any; + static reverseString(string: string): string; static parseDimension(size: any, dimension: number): number; static pad(str: string, len?: number, pad?: string, dir?: number): string; static isPlainObject(object: any): boolean; diff --git a/typescript/pixi.comments.d.ts b/typescript/pixi.comments.d.ts index b73bb559f..2f5c14f0e 100644 --- a/typescript/pixi.comments.d.ts +++ b/typescript/pixi.comments.d.ts @@ -1,190 +1,188 @@ -// Type definitions for PIXI with Phaser Deviations. - -declare module PIXI { - - export var game: Phaser.Game; - export var WEBGL_RENDERER: number; - export var CANVAS_RENDERER: number; - export var VERSION: string; - - export enum blendModes { - - NORMAL, - ADD, - MULTIPLY, - SCREEN, - OVERLAY, - DARKEN, - LIGHTEN, - COLOR_DODGE, - COLOR_BURN, - HARD_LIGHT, - SOFT_LIGHT, - DIFFERENCE, - EXCLUSION, - HUE, - SATURATION, - COLOR, - LUMINOSITY - - } - - export enum scaleModes { - - DEFAULT, - LINEAR, - NEAREST - - } - - export var defaultRenderOptions: PixiRendererOptions; - - export var INTERACTION_REQUENCY: number; - export var AUTO_PREVENT_DEFAULT: boolean; - - export var PI_2: number; - export var RAD_TO_DEG: number; - export var DEG_TO_RAD: number; - - export var RETINA_PREFIX: string; - export var identityMatrix: Matrix; - export var glContexts: WebGLRenderingContext[]; - export var instances: any[]; - - export var BaseTextureCache: { [key: string]: BaseTexture }; - export var TextureCache: { [key: string]: Texture }; - export var TextureSilentFail: boolean; - export var BitmapText: { fonts: {} }; - - export function isPowerOfTwo(width: number, height: number): boolean; - - export function rgb2hex(rgb: number[]): string; - export function hex2rgb(hex: string): number[]; - - export function autoDetectRenderer(width?: number, height?: number, options?: PixiRendererOptions): PixiRenderer; - export function autoDetectRecommendedRenderer(width?: number, height?: number, options?: PixiRendererOptions): PixiRenderer; - - export function canUseNewCanvasBlendModes(): boolean; - export function getNextPowerOfTwo(value: number): number; - - export function AjaxRequest(): XMLHttpRequest; - - export function CompileFragmentShader(gl: WebGLRenderingContext, shaderSrc: string[]): any; - export function CompileProgram(gl: WebGLRenderingContext, vertexSrc: string[], fragmentSrc: string[]): any; - - - export interface IEventCallback { - (e?: IEvent): void; - } - - export interface IEvent { - type: string; - content: any; - } - - export interface HitArea { - contains(x: number, y: number): boolean; - } - - export interface IInteractionDataCallback { - (interactionData: InteractionData): void; - } - - export interface PixiRenderer { - - autoResize: boolean; - clearBeforeRender: boolean; - height: number; - resolution: number; - transparent: boolean; - type: number; - view: HTMLCanvasElement; - width: number; - - destroy(): void; - render(stage: DisplayObjectContainer): void; - resize(width: number, height: number): void; - - } - - export interface PixiRendererOptions { - - autoResize?: boolean; - antialias?: boolean; - clearBeforeRender?: boolean; - preserveDrawingBuffer?: boolean; - resolution?: number; - transparent?: boolean; - view?: HTMLCanvasElement; - - } - - export interface BitmapTextStyle { - - font?: string; - align?: string; - tint?: string; - - } - - export interface TextStyle { - - align?: string; - dropShadow?: boolean; - dropShadowColor?: string; - dropShadowAngle?: number; - dropShadowDistance?: number; - fill?: string; - font?: string; - lineJoin?: string; - stroke?: string; - strokeThickness?: number; - wordWrap?: boolean; - wordWrapWidth?: number; - - } - - export interface Loader { - - load(): void; - - } - - export interface MaskData { - - alpha: number; - worldTransform: number[]; - - } - - export interface RenderSession { - - context: CanvasRenderingContext2D; - maskManager: CanvasMaskManager; - scaleMode: scaleModes; - smoothProperty: string; - roundPixels: boolean; - - } - - export interface ShaderAttribute { - // TODO: Find signature of shader attributes - } - - export interface FilterBlock { - - visible: boolean; - renderable: boolean; - - } - +// Type definitions for PIXI with Phaser Deviations. + +declare module PIXI { + + export var game: Phaser.Game; + export var WEBGL_RENDERER: number; + export var CANVAS_RENDERER: number; + export var VERSION: string; + + export enum blendModes { + + NORMAL, + ADD, + MULTIPLY, + SCREEN, + OVERLAY, + DARKEN, + LIGHTEN, + COLOR_DODGE, + COLOR_BURN, + HARD_LIGHT, + SOFT_LIGHT, + DIFFERENCE, + EXCLUSION, + HUE, + SATURATION, + COLOR, + LUMINOSITY + + } + + export enum scaleModes { + + DEFAULT, + LINEAR, + NEAREST + + } + + export var defaultRenderOptions: PixiRendererOptions; + + export var INTERACTION_REQUENCY: number; + export var AUTO_PREVENT_DEFAULT: boolean; + + export var PI_2: number; + export var RAD_TO_DEG: number; + export var DEG_TO_RAD: number; + + export var RETINA_PREFIX: string; + export var identityMatrix: Matrix; + export var glContexts: WebGLRenderingContext[]; + export var instances: any[]; + + export var TextureSilentFail: boolean; + export var BitmapText: { fonts: {} }; + + export function isPowerOfTwo(width: number, height: number): boolean; + + export function rgb2hex(rgb: number[]): string; + export function hex2rgb(hex: string): number[]; + + export function autoDetectRenderer(width?: number, height?: number, options?: PixiRendererOptions): PixiRenderer; + export function autoDetectRecommendedRenderer(width?: number, height?: number, options?: PixiRendererOptions): PixiRenderer; + + export function canUseNewCanvasBlendModes(): boolean; + export function getNextPowerOfTwo(value: number): number; + + export function AjaxRequest(): XMLHttpRequest; + + export function CompileFragmentShader(gl: WebGLRenderingContext, shaderSrc: string[]): any; + export function CompileProgram(gl: WebGLRenderingContext, vertexSrc: string[], fragmentSrc: string[]): any; + + + export interface IEventCallback { + (e?: IEvent): void; + } + + export interface IEvent { + type: string; + content: any; + } + + export interface HitArea { + contains(x: number, y: number): boolean; + } + + export interface IInteractionDataCallback { + (interactionData: InteractionData): void; + } + + export interface PixiRenderer { + + autoResize: boolean; + clearBeforeRender: boolean; + height: number; + resolution: number; + transparent: boolean; + type: number; + view: HTMLCanvasElement; + width: number; + + destroy(): void; + render(stage: DisplayObjectContainer): void; + resize(width: number, height: number): void; + + } + + export interface PixiRendererOptions { + + autoResize?: boolean; + antialias?: boolean; + clearBeforeRender?: boolean; + preserveDrawingBuffer?: boolean; + resolution?: number; + transparent?: boolean; + view?: HTMLCanvasElement; + + } + + export interface BitmapTextStyle { + + font?: string; + align?: string; + tint?: string; + + } + + export interface TextStyle { + + align?: string; + dropShadow?: boolean; + dropShadowColor?: string; + dropShadowAngle?: number; + dropShadowDistance?: number; + fill?: string; + font?: string; + lineJoin?: string; + stroke?: string; + strokeThickness?: number; + wordWrap?: boolean; + wordWrapWidth?: number; + + } + + export interface Loader { + + load(): void; + + } + + export interface MaskData { + + alpha: number; + worldTransform: number[]; + + } + + export interface RenderSession { + + context: CanvasRenderingContext2D; + maskManager: CanvasMaskManager; + scaleMode: scaleModes; + smoothProperty: string; + roundPixels: boolean; + + } + + export interface ShaderAttribute { + // TODO: Find signature of shader attributes + } + + export interface FilterBlock { + + visible: boolean; + renderable: boolean; + + } + /** * This is the base class for creating a PIXI filter. Currently only webGL supports filters. * If you want to make a custom filter this should be your base class. */ - export class AbstractFilter { - + export class AbstractFilter { + /** * This is the base class for creating a PIXI filter. Currently only webGL supports filters. @@ -193,98 +191,88 @@ declare module PIXI { * @param fragmentSrc The fragment source in an array of strings. * @param uniforms An object containing the uniforms for this filter. */ - constructor(fragmentSrc: string | string[], uniforms: any); - - dirty: boolean; - padding: number; - uniforms: any; - fragmentSrc: string | string[]; - - apply(frameBuffer: WebGLFramebuffer): void; + constructor(fragmentSrc: string | string[], uniforms: any); + + dirty: boolean; + padding: number; + uniforms: any; + fragmentSrc: string | string[]; + + apply(frameBuffer: WebGLFramebuffer): void; /** * Syncs the uniforms between the class object and the shaders. */ - syncUniforms(): void; - - } - - export class AlphaMaskFilter extends AbstractFilter { - - constructor(texture: Texture); - - map: Texture; - - onTextureLoaded(): void; - - } - - export class AsciiFilter extends AbstractFilter { - - size: number; - - } - - export class AssetLoader implements Mixin { - - assetURLs: string[]; - crossorigin: boolean; - loadersByType: { [key: string]: Loader }; - - constructor(assetURLs: string[], crossorigin: boolean); - - listeners(eventName: string): Function[]; - emit(eventName: string, data?: any): boolean; - dispatchEvent(eventName: string, data?: any): boolean; - on(eventName: string, fn: Function): Function; - addEventListener(eventName: string, fn: Function): Function; - once(eventName: string, fn: Function): Function; - off(eventName: string, fn: Function): Function; - removeAllEventListeners(eventName: string): void; - - load(): void; - - - } - - export class AtlasLoader implements Mixin { - - url: string; - baseUrl: string; - crossorigin: boolean; - loaded: boolean; - - constructor(url: string, crossorigin: boolean); - - listeners(eventName: string): Function[]; - emit(eventName: string, data?: any): boolean; - dispatchEvent(eventName: string, data?: any): boolean; - on(eventName: string, fn: Function): Function; - addEventListener(eventName: string, fn: Function): Function; - once(eventName: string, fn: Function): Function; - off(eventName: string, fn: Function): Function; - removeAllEventListeners(eventName: string): void; - - load(): void; - - } - + syncUniforms(): void; + + } + + export class AlphaMaskFilter extends AbstractFilter { + + constructor(texture: Texture); + + map: Texture; + + onTextureLoaded(): void; + + } + + export class AsciiFilter extends AbstractFilter { + + size: number; + + } + + export class AssetLoader implements Mixin { + + assetURLs: string[]; + crossorigin: boolean; + loadersByType: { [key: string]: Loader }; + + constructor(assetURLs: string[], crossorigin: boolean); + + listeners(eventName: string): Function[]; + emit(eventName: string, data?: any): boolean; + dispatchEvent(eventName: string, data?: any): boolean; + on(eventName: string, fn: Function): Function; + addEventListener(eventName: string, fn: Function): Function; + once(eventName: string, fn: Function): Function; + off(eventName: string, fn: Function): Function; + removeAllEventListeners(eventName: string): void; + + load(): void; + + + } + + export class AtlasLoader implements Mixin { + + url: string; + baseUrl: string; + crossorigin: boolean; + loaded: boolean; + + constructor(url: string, crossorigin: boolean); + + listeners(eventName: string): Function[]; + emit(eventName: string, data?: any): boolean; + dispatchEvent(eventName: string, data?: any): boolean; + on(eventName: string, fn: Function): Function; + addEventListener(eventName: string, fn: Function): Function; + once(eventName: string, fn: Function): Function; + off(eventName: string, fn: Function): Function; + removeAllEventListeners(eventName: string): void; + + load(): void; + + } + /** * A texture stores the information that represents an image. All textures have a base texture. */ - export class BaseTexture implements Mixin { - + export class BaseTexture implements Mixin { - /** - * Helper function that creates a base texture from the given image url. - * If the image is not in the base texture cache it will be created and loaded. - * - * @param imageUrl The image url of the texture - * @param crossorigin - - * @param scaleMode See {{#crossLink "PIXI/scaleModes:property"}}PIXI.scaleModes{{/crossLink}} for possible values - */ - static fromImage(imageUrl: string, crossorigin?: boolean, scaleMode?: scaleModes): BaseTexture; /** * Helper function that creates a base texture from the given canvas element. @@ -292,8 +280,8 @@ declare module PIXI { * @param canvas The canvas element source of the texture * @param scaleMode See {{#crossLink "PIXI/scaleModes:property"}}PIXI.scaleModes{{/crossLink}} for possible values */ - static fromCanvas(canvas: HTMLCanvasElement, scaleMode?: scaleModes): BaseTexture; - + static fromCanvas(canvas: HTMLCanvasElement, scaleMode?: scaleModes): BaseTexture; + /** * A texture stores the information that represents an image. All textures have a base texture. @@ -301,7 +289,7 @@ declare module PIXI { * @param source the source object (image or canvas) * @param scaleMode See {{#crossLink "PIXI/scaleModes:property"}}PIXI.scaleModes{{/crossLink}} for possible values */ - constructor(source: HTMLImageElement, scaleMode: scaleModes); + constructor(source: HTMLImageElement, scaleMode: scaleModes); /** * A texture stores the information that represents an image. All textures have a base texture. @@ -309,41 +297,41 @@ declare module PIXI { * @param source the source object (image or canvas) * @param scaleMode See {{#crossLink "PIXI/scaleModes:property"}}PIXI.scaleModes{{/crossLink}} for possible values */ - constructor(source: HTMLCanvasElement, scaleMode: scaleModes); - + constructor(source: HTMLCanvasElement, scaleMode: scaleModes); + /** * [read-only] The height of the base texture set when the image has loaded */ - height: number; + height: number; /** * [read-only] Set to true once the base texture has loaded */ - hasLoaded: boolean; + hasLoaded: boolean; /** * Set this to true if a mipmap of this texture needs to be generated. This value needs to be set before the texture is used * Also the texture must be a power of two size to work */ - mipmap: boolean; + mipmap: boolean; /** * Controls if RGB channels should be pre-multiplied by Alpha (WebGL only) * Default: true */ - premultipliedAlpha: boolean; + premultipliedAlpha: boolean; /** * The Resolution of the texture. */ - resolution: number; + resolution: number; /** * The scale mode to apply when scaling this texture * Default: PIXI.scaleModes.LINEAR */ - scaleMode: scaleModes; + scaleMode: scaleModes; /** * A BaseTexture can be set to skip the rendering phase in the WebGL Sprite Batch. @@ -351,26 +339,26 @@ declare module PIXI { * You may want to do this if you have a parent Sprite with no visible texture (i.e. uses the internal `__default` texture) * that has children that you do want to render, without causing a batch flush in the process. */ - skipRender: boolean; + skipRender: boolean; /** * The image source that is used to create the texture. */ - source: HTMLImageElement; + source: HTMLImageElement; /** * [read-only] The width of the base texture set when the image has loaded */ - width: number; - - listeners(eventName: string): Function[]; - emit(eventName: string, data?: any): boolean; - dispatchEvent(eventName: string, data?: any): boolean; - on(eventName: string, fn: Function): Function; - addEventListener(eventName: string, fn: Function): Function; - once(eventName: string, fn: Function): Function; - off(eventName: string, fn: Function): Function; - removeAllEventListeners(eventName: string): void; + width: number; + + listeners(eventName: string): Function[]; + emit(eventName: string, data?: any): boolean; + dispatchEvent(eventName: string, data?: any): boolean; + on(eventName: string, fn: Function): Function; + addEventListener(eventName: string, fn: Function): Function; + once(eventName: string, fn: Function): Function; + off(eventName: string, fn: Function): Function; + removeAllEventListeners(eventName: string): void; /** * Forces this BaseTexture to be set as loaded, with the given width and height. @@ -380,81 +368,74 @@ declare module PIXI { * @param width - The new width to force the BaseTexture to be. * @param height - The new height to force the BaseTexture to be. */ - forceLoaded(width: number, height: number): void; + forceLoaded(width: number, height: number): void; /** * Destroys this base texture */ - destroy(): void; + destroy(): void; /** * Sets all glTextures to be dirty. */ - dirty(): void; - - /** - * Changes the source image of the texture - * - * @param newSrc the path of the image - */ - updateSourceImage(newSrc: string): void; + dirty(): void; /** * Removes the base texture from the GPU, useful for managing resources on the GPU. * Atexture is still 100% usable and will simply be reuploaded if there is a sprite on screen that is using it. */ - unloadFromGPU(): void; - - } - - export class BitmapFontLoader implements Mixin { - - constructor(url: string, crossorigin: boolean); - - baseUrl: string; - crossorigin: boolean; - texture: Texture; - url: string; - - listeners(eventName: string): Function[]; - emit(eventName: string, data?: any): boolean; - dispatchEvent(eventName: string, data?: any): boolean; - on(eventName: string, fn: Function): Function; - addEventListener(eventName: string, fn: Function): Function; - once(eventName: string, fn: Function): Function; - off(eventName: string, fn: Function): Function; - removeAllEventListeners(eventName: string): void; - - load(): void; - - } - - export class BlurFilter extends AbstractFilter { - - blur: number; - blurX: number; - blurY: number; - - } - - export class BlurXFilter extends AbstractFilter { - - blur: number; - - } - - export class BlurYFilter extends AbstractFilter { - - blur: number; - - } - + unloadFromGPU(): void; + + } + + export class BitmapFontLoader implements Mixin { + + constructor(url: string, crossorigin: boolean); + + baseUrl: string; + crossorigin: boolean; + texture: Texture; + url: string; + + listeners(eventName: string): Function[]; + emit(eventName: string, data?: any): boolean; + dispatchEvent(eventName: string, data?: any): boolean; + on(eventName: string, fn: Function): Function; + addEventListener(eventName: string, fn: Function): Function; + once(eventName: string, fn: Function): Function; + off(eventName: string, fn: Function): Function; + removeAllEventListeners(eventName: string): void; + + load(): void; + + } + + export class BlurFilter extends AbstractFilter { + + blur: number; + blurX: number; + blurY: number; + + } + + export class BlurXFilter extends AbstractFilter { + + blur: number; + + } + + export class BlurYFilter extends AbstractFilter { + + blur: number; + + } + /** * Creates a Canvas element of the given size. */ - export class CanvasBuffer { - + export class CanvasBuffer { + /** * Creates a Canvas element of the given size. @@ -462,39 +443,39 @@ declare module PIXI { * @param width the width for the newly created canvas * @param height the height for the newly created canvas */ - constructor(width: number, height: number); - + constructor(width: number, height: number); + /** * The Canvas object that belongs to this CanvasBuffer. */ - canvas: HTMLCanvasElement; + canvas: HTMLCanvasElement; /** * A CanvasRenderingContext2D object representing a two-dimensional rendering context. */ - context: CanvasRenderingContext2D; + context: CanvasRenderingContext2D; /** * The height of the Canvas in pixels. */ - height: number; + height: number; /** * The width of the Canvas in pixels. */ - width: number; - + width: number; + /** * Frees the canvas up for use again. */ - destroy(): void; + destroy(): void; /** * Clears the canvas that was created by the CanvasBuffer class. */ - clear(): void; + clear(): void; /** * Resizes the canvas to the specified width and height. @@ -502,16 +483,16 @@ declare module PIXI { * @param width the new width of the canvas * @param height the new height of the canvas */ - resize(width: number, height: number): void; - - } - + resize(width: number, height: number): void; + + } + /** * The CanvasPool is a global static object that allows Pixi and Phaser to pool canvas DOM elements. */ - export class CanvasPool { - + export class CanvasPool { + /** * Creates a new Canvas DOM element, or pulls one from the pool if free. @@ -521,47 +502,47 @@ declare module PIXI { * @param height The height of the canvas element. * @return The canvas element. */ - static create(parent: HTMLElement, width?: number, height?: number): HTMLCanvasElement; + static create(parent: HTMLElement, width?: number, height?: number): HTMLCanvasElement; /** * Gets the first free canvas index from the pool. */ - static getFirst(): HTMLCanvasElement; + static getFirst(): HTMLCanvasElement; /** * Removes the parent from a canvas element from the pool, freeing it up for re-use. * * @param parent The parent of the canvas element. */ - static remove(parent: HTMLElement): void; + static remove(parent: HTMLElement): void; /** * Removes the parent from a canvas element from the pool, freeing it up for re-use. * * @param canvas The canvas element to remove */ - static removeByCanvas(canvas: HTMLCanvasElement): HTMLCanvasElement; + static removeByCanvas(canvas: HTMLCanvasElement): HTMLCanvasElement; /** * Gets the total number of used canvas elements in the pool. * @return The number of in-use (parented) canvas elements in the pool. */ - static getTotal(): number; + static getTotal(): number; /** * Gets the total number of free canvas elements in the pool. * @return The number of free (un-parented) canvas elements in the pool. */ - static getFree(): number; - - } - + static getFree(): number; + + } + /** * A set of functions used to handle masking. */ - export class CanvasMaskManager { - + export class CanvasMaskManager { + /** * This method adds it to the current stack of masks. @@ -569,24 +550,24 @@ declare module PIXI { * @param maskData the maskData that will be pushed * @param renderSession The renderSession whose context will be used for this mask manager. */ - pushMask(maskData: MaskData, renderSession: RenderSession): void; + pushMask(maskData: MaskData, renderSession: RenderSession): void; /** * Restores the current drawing context to the state it was before the mask was applied. * * @param renderSession The renderSession whose context will be used for this mask manager. */ - popMask(renderSession: RenderSession): void; - - } - + popMask(renderSession: RenderSession): void; + + } + /** * The CanvasRenderer draws the Stage and all its content onto a 2d canvas. This renderer should be used for browsers that do not support webGL. * Don't forget to add the CanvasRenderer.view to your DOM or you will not see anything :) */ - export class CanvasRenderer implements PixiRenderer { - + export class CanvasRenderer implements PixiRenderer { + /** * The CanvasRenderer draws the Stage and all its content onto a 2d canvas. This renderer should be used for browsers that do not support webGL. @@ -594,19 +575,19 @@ declare module PIXI { * * @param game A reference to the Phaser Game instance */ - constructor(game: Phaser.Game); - - game: Phaser.Game; + constructor(game: Phaser.Game); + + game: Phaser.Game; /** * The renderer type. */ - type: number; + type: number; /** * The resolution of the canvas. */ - resolution: number; + resolution: number; /** * This sets if the CanvasRenderer will clear the canvas or not before the new render pass. @@ -614,63 +595,63 @@ declare module PIXI { * If the Stage is transparent Pixi will use clearRect to clear the canvas every frame. * Disable this by setting this to false. For example if your game has a canvas filling background image you often don't need this set. */ - clearBeforeRender: boolean; + clearBeforeRender: boolean; /** * Whether the render view is transparent */ - transparent: boolean; + transparent: boolean; /** * Whether the render view should be resized automatically */ - autoResize: boolean; + autoResize: boolean; /** * The width of the canvas view * Default: 800 */ - width: number; + width: number; /** * The height of the canvas view * Default: 600 */ - height: number; + height: number; /** * The canvas element that everything is drawn to. */ - view: HTMLCanvasElement; + view: HTMLCanvasElement; /** * The canvas 2d context that everything is drawn with */ - context: CanvasRenderingContext2D; + context: CanvasRenderingContext2D; /** * Boolean flag controlling canvas refresh. */ - refresh: boolean; + refresh: boolean; /** * Internal var. */ - count: number; - maskManager: CanvasMaskManager; + count: number; + maskManager: CanvasMaskManager; /** * The render session is just a bunch of parameter used for rendering */ - renderSession: RenderSession; - + renderSession: RenderSession; + /** * Renders the Stage to this canvas view * * @param stage the Stage element to be rendered */ - render(stage: DisplayObjectContainer): void; + render(stage: DisplayObjectContainer): void; /** * Resizes the canvas view to the specified width and height @@ -678,23 +659,23 @@ declare module PIXI { * @param width the new width of the canvas view * @param height the new height of the canvas view */ - resize(width: number, height: number): void; + resize(width: number, height: number): void; /** * Removes everything from the renderer and optionally removes the Canvas DOM element. * * @param removeView Removes the Canvas element from the DOM. - Default: true */ - destroy(removeView?: boolean): void; - - } - + destroy(removeView?: boolean): void; + + } + /** * Utility methods for Sprite/Texture tinting. */ - export class CanvasTinter { - + export class CanvasTinter { + /** * Basically this method just needs a sprite and a color and tints the sprite with the given color. @@ -703,7 +684,7 @@ declare module PIXI { * @param color the color to use to tint the sprite with * @return The tinted canvas */ - static getTintedTexture(sprite: Sprite, color: number): HTMLCanvasElement; + static getTintedTexture(sprite: Sprite, color: number): HTMLCanvasElement; /** * Tint a texture using the "multiply" operation. @@ -712,315 +693,164 @@ declare module PIXI { * @param color the color to use to tint the sprite with * @param canvas the current canvas */ - static tintWithMultiply(texture: Texture, color: number, canvas: HTMLCanvasElement): void; - static tintWithOverlay(texture: Texture, color: number, canvas: HTMLCanvasElement): void; - static tintWithPerPixel(texture: Texture, color: number, canvas: HTMLCanvasElement): void; - + static tintWithMultiply(texture: Texture, color: number, canvas: HTMLCanvasElement): void; + static tintWithOverlay(texture: Texture, color: number, canvas: HTMLCanvasElement): void; + static tintWithPerPixel(texture: Texture, color: number, canvas: HTMLCanvasElement): void; + /** * Whether or not the Canvas BlendModes are supported, consequently the ability to tint using the multiply method. */ - static canUseMultiply: boolean; - static tintMethod: any; - - } - - export class Circle implements HitArea { - - constructor(x: number, y: number, radius: number); - - x: number; - y: number; - radius: number; - - clone(): Circle; - contains(x: number, y: number): boolean; - getBounds(): Rectangle; - - } - - export class ColorMatrixFilter extends AbstractFilter { - - constructor(); - - matrix: number[]; - - } - - export class ColorStepFilter extends AbstractFilter { - - step: number; - - } - - export class ConvolutionFilter extends AbstractFilter { - - constructor(matrix: number[], width: number, height: number); - - matrix: Matrix; - width: number; - height: number; - - } - - export class CrossHatchFilter extends AbstractFilter { - - blur: number; - - } - - export class DisplacementFilter extends AbstractFilter { - - constructor(texture: Texture); - - map: Texture; - offset: Point; - scale: Point; - - } - - export class DotScreenFilter extends AbstractFilter { - - angle: number; - scale: Point; - - } - + static canUseMultiply: boolean; + static tintMethod: any; - /** - * The base class for all objects that are rendered on the screen. - * This is an abstract class and should not be used on its own rather it should be extended. - */ - export class DisplayObject { - + } - /** - * The opacity of the object. - */ - alpha: number; - buttonMode: boolean; + export class Circle implements HitArea { - /** - * Set if this display object is cached as a bitmap. - * This basically takes a snap shot of the display object as it is at that moment. It can provide a performance benefit for complex static displayObjects. - * To remove simply set this property to 'null' - */ - cacheAsBitmap: boolean; - defaultCursor: string; + constructor(x: number, y: number, radius: number); - /** - * The area the filter is applied to like the hitArea this is used as more of an optimisation - * rather than figuring out the dimensions of the displayObject each frame you can set this rectangle - */ - filterArea: Rectangle; + x: number; + y: number; + radius: number; - /** - * Sets the filters for the displayObject. - * IMPORTANT: This is a webGL only feature and will be ignored by the Canvas renderer. - * - * To remove filters simply set this property to 'null'. - * - * You cannot have a filter and a multiply blend mode active at the same time. Setting a filter will reset - * this objects blend mode to NORMAL. - */ - filters: AbstractFilter[]; + clone(): Circle; + contains(x: number, y: number): boolean; + getBounds(): Rectangle; - /** - * This is the defined area that will pick up mouse / touch events. It is null by default. - * Setting it is a neat way of optimising the hitTest function that the interactionManager will use (as it will not need to hit test all the children) - */ - hitArea: HitArea; - interactive: boolean; + } - /** - * Sets a mask for the displayObject. A mask is an object that limits the visibility of an object to the shape of the mask applied to it. - * In PIXI a regular mask must be a PIXI.Graphics object. This allows for much faster masking in canvas as it utilises shape clipping. - * To remove a mask, set this property to null. - */ - mask: Graphics; + export class ColorMatrixFilter extends AbstractFilter { - /** - * [read-only] The display object container that contains this display object. - */ - parent: DisplayObjectContainer; + constructor(); - /** - * The pivot point of the displayObject that it rotates around - */ - pivot: Point; + matrix: number[]; - /** - * The coordinate of the object relative to the local coordinates of the parent. - */ - position: Point; + } - /** - * Can this object be rendered - */ - renderable: boolean; + export class ColorStepFilter extends AbstractFilter { - /** - * The rotation of the object in radians. - */ - rotation: number; + step: number; - /** - * The scale factor of the object. - */ - scale: Point; + } - /** - * [read-only] The stage the display object is connected to, or undefined if it is not connected to the stage. - */ - stage: DisplayObjectContainer; + export class ConvolutionFilter extends AbstractFilter { - /** - * The visibility of the object. - */ - visible: boolean; + constructor(matrix: number[], width: number, height: number); - /** - * [read-only] The multiplied alpha of the displayObject - */ - worldAlpha: number; + matrix: Matrix; + width: number; + height: number; - /** - * The position of the Display Object based on the world transform. - * This value is updated at the end of updateTransform and takes all parent transforms into account. - */ - worldPosition: Point; + } - /** - * The scale of the Display Object based on the world transform. - * This value is updated at the end of updateTransform and takes all parent transforms into account. - */ - worldScale: Point; + export class CrossHatchFilter extends AbstractFilter { - /** - * [read-only] Current transform of the object based on world (parent) factors - */ - worldTransform: Matrix; + blur: number; - /** - * The rotation of the Display Object, in radians, based on the world transform. - * This value is updated at the end of updateTransform and takes all parent transforms into account. - */ - worldRotation: number; + } - /** - * [read-only] Indicates if the sprite is globally visible. - */ - worldVisible: boolean; + export class DisplacementFilter extends AbstractFilter { - /** - * The position of the displayObject on the x axis relative to the local coordinates of the parent. - */ - x: number; + constructor(texture: Texture); - /** - * The position of the displayObject on the y axis relative to the local coordinates of the parent. - */ - y: number; - - click(e: InteractionData): void; - displayObjectUpdateTransform(): void; + map: Texture; + offset: Point; + scale: Point; - /** - * Retrieves the bounds of the displayObject as a rectangle object - * - * @param matrix - - * @return the rectangular bounding area - */ - getBounds(matrix?: Matrix): Rectangle; + } - /** - * Retrieves the local bounds of the displayObject as a rectangle object - * @return the rectangular bounding area - */ - getLocalBounds(): Rectangle; + export class DotScreenFilter extends AbstractFilter { - /** - * Useful function that returns a texture of the displayObject object that can then be used to create sprites - * This can be quite useful if your displayObject is static / complicated and needs to be reused multiple times. - * - * @param resolution The resolution of the texture being generated - * @param scaleMode See {{#crossLink "PIXI/scaleModes:property"}}PIXI.scaleModes{{/crossLink}} for possible values - * @param renderer The renderer used to generate the texture. - * @return a texture of the graphics object - */ - generateTexture(resolution?: number, scaleMode?: number, renderer?: PixiRenderer | number): RenderTexture; - mousedown(e: InteractionData): void; - mouseout(e: InteractionData): void; - mouseover(e: InteractionData): void; - mouseup(e: InteractionData): void; - mousemove(e: InteractionData): void; - mouseupoutside(e: InteractionData): void; - rightclick(e: InteractionData): void; - rightdown(e: InteractionData): void; - rightup(e: InteractionData): void; - rightupoutside(e: InteractionData): void; + angle: number; + scale: Point; - /** - * Sets the object's stage reference, the stage this object is connected to - * - * @param stage the stage that the object will have as its current stage reference - */ - setStageReference(stage: DisplayObjectContainer): void; - tap(e: InteractionData): void; + } - /** - * Calculates the global position of the display object - * - * @param position The world origin to calculate from - * @return A point object representing the position of this object - */ - toGlobal(position: Point): Point; + export class DisplayObject { + + alpha: number; + buttonMode: boolean; + cacheAsBitmap: boolean; + defaultCursor: string; + filterArea: Rectangle; + filters: AbstractFilter[]; + hitArea: HitArea; + interactive: boolean; + mask: Graphics; + parent: DisplayObjectContainer; + pivot: Point; + position: Point; + renderable: boolean; + rotation: number; + scale: Point; + stage: DisplayObjectContainer; + visible: boolean; + worldAlpha: number; + worldPosition: Point; + worldScale: Point; + worldTransform: Matrix; + worldRotation: number; + worldVisible: boolean; + x: number; + y: number; + + click(e: InteractionData): void; + displayObjectUpdateTransform(): void; + getBounds(matrix?: Matrix): Rectangle; + getLocalBounds(): Rectangle; + generateTexture(resolution?: number, scaleMode?: number, renderer?: PixiRenderer | number): RenderTexture; + mousedown(e: InteractionData): void; + mouseout(e: InteractionData): void; + mouseover(e: InteractionData): void; + mouseup(e: InteractionData): void; + mousemove(e: InteractionData): void; + mouseupoutside(e: InteractionData): void; + rightclick(e: InteractionData): void; + rightdown(e: InteractionData): void; + rightup(e: InteractionData): void; + rightupoutside(e: InteractionData): void; + setStageReference(stage: DisplayObjectContainer): void; + tap(e: InteractionData): void; + toGlobal(position: Point): Point; + toLocal(position: Point, from: DisplayObject): Point; + touchend(e: InteractionData): void; + touchendoutside(e: InteractionData): void; + touchstart(e: InteractionData): void; + touchmove(e: InteractionData): void; + updateTransform(parent?: PIXI.DisplayObjectContainer): void; + + } - /** - * Calculates the local position of the display object relative to another point - * - * @param position The world origin to calculate from - * @param from The DisplayObject to calculate the global position from - * @return A point object representing the position of this object - */ - toLocal(position: Point, from: DisplayObject): Point; - touchend(e: InteractionData): void; - touchendoutside(e: InteractionData): void; - touchstart(e: InteractionData): void; - touchmove(e: InteractionData): void; - updateTransform(parent?: PIXI.DisplayObjectContainer): void; - - } - /** * A DisplayObjectContainer represents a collection of display objects. * It is the base class of all display objects that act as a container for other objects. */ - export class DisplayObjectContainer extends DisplayObject { - + export class DisplayObjectContainer extends DisplayObject { + /** * A DisplayObjectContainer represents a collection of display objects. * It is the base class of all display objects that act as a container for other objects. */ - constructor(); - + constructor(); + /** * [read-only] The array of children of this container. */ - children: DisplayObject[]; + children: DisplayObject[]; /** * The height of the displayObjectContainer, setting this will actually modify the scale to achieve the value set */ - height: number; + height: number; /** * The width of the displayObjectContainer, setting this will actually modify the scale to achieve the value set */ - width: number; + width: number; /** * If `ignoreChildInput` is `false` it will allow this objects _children_ to be considered as valid for Input events. @@ -1029,8 +859,8 @@ declare module PIXI { * * Note that this property isn't recursive: only immediate children are influenced, it doesn't scan further down. */ - ignoreChildInput: boolean; - + ignoreChildInput: boolean; + /** * Adds a child to the container. @@ -1038,7 +868,7 @@ declare module PIXI { * @param child The DisplayObject to add to the container * @return The child that was added. */ - addChild(child: DisplayObject): DisplayObject; + addChild(child: DisplayObject): DisplayObject; /** * Adds a child to the container at a specified index. If the index is out of bounds an error will be thrown @@ -1047,13 +877,13 @@ declare module PIXI { * @param index The index to place the child in * @return The child that was added. */ - addChildAt(child: DisplayObject, index: number): DisplayObject; + addChildAt(child: DisplayObject, index: number): DisplayObject; /** * Retrieves the bounds of the displayObjectContainer as a rectangle. The bounds calculation takes all visible children into consideration. * @return The rectangular bounding area */ - getBounds(): Rectangle; + getBounds(): Rectangle; /** * Returns the child at the specified index @@ -1061,7 +891,7 @@ declare module PIXI { * @param index The index to get the child from * @return The child at the given index, if any. */ - getChildAt(index: number): DisplayObject; + getChildAt(index: number): DisplayObject; /** * Returns the index position of a child DisplayObject instance @@ -1069,13 +899,13 @@ declare module PIXI { * @param child The DisplayObject instance to identify * @return The index position of the child display object to identify */ - getChildIndex(child: DisplayObject): number; + getChildIndex(child: DisplayObject): number; /** * Retrieves the non-global local bounds of the displayObjectContainer as a rectangle. The calculation takes all visible children into consideration. * @return The rectangular bounding area */ - getLocalBounds(): Rectangle; + getLocalBounds(): Rectangle; /** * Removes a child from the container. @@ -1083,7 +913,7 @@ declare module PIXI { * @param child The DisplayObject to remove * @return The child that was removed. */ - removeChild(child: DisplayObject): DisplayObject; + removeChild(child: DisplayObject): DisplayObject; /** * Removes a child from the specified index position. @@ -1091,7 +921,7 @@ declare module PIXI { * @param index The index to get the child from * @return The child that was removed. */ - removeChildAt(index: number): DisplayObject; + removeChildAt(index: number): DisplayObject; /** * Removes all children from this container that are within the begin and end indexes. @@ -1099,12 +929,12 @@ declare module PIXI { * @param beginIndex The beginning position. Default value is 0. * @param endIndex The ending position. Default value is size of the container. */ - removeChildren(beginIndex?: number, endIndex?: number): DisplayObject[]; + removeChildren(beginIndex?: number, endIndex?: number): DisplayObject[]; /** * Removes the current stage reference from the container and all of its children. */ - removeStageReference(): void; + removeStageReference(): void; /** * Changes the position of an existing child in the display object container @@ -1112,7 +942,7 @@ declare module PIXI { * @param child The child DisplayObject instance for which you want to change the index number * @param index The resulting index number for the child display object */ - setChildIndex(child: DisplayObject, index: number): void; + setChildIndex(child: DisplayObject, index: number): void; /** * Swaps the position of 2 Display Objects within this container. @@ -1120,31 +950,31 @@ declare module PIXI { * @param child - * @param child2 - */ - swapChildren(child: DisplayObject, child2: DisplayObject): void; - - } - - export class Ellipse implements HitArea { - - constructor(x: number, y: number, width: number, height: number); - - x: number; - y: number; - width: number; - height: number; - - clone(): Ellipse; - contains(x: number, y: number): boolean; - getBounds(): Rectangle; - - } - + swapChildren(child: DisplayObject, child2: DisplayObject): void; + + } + + export class Ellipse implements HitArea { + + constructor(x: number, y: number, width: number, height: number); + + x: number; + y: number; + width: number; + height: number; + + clone(): Ellipse; + contains(x: number, y: number): boolean; + getBounds(): Rectangle; + + } + /** * Creates an homogenous object for tracking events so users can know what to expect. */ - export class Event { - + export class Event { + /** * Creates an homogenous object for tracking events so users can know what to expect. @@ -1153,61 +983,61 @@ declare module PIXI { * @param name The string name of the event that was triggered * @param data Arbitrary event data to pass along */ - constructor(target: any, name: string, data: any); - + constructor(target: any, name: string, data: any); + /** * The original target the event triggered on. */ - target: any; + target: any; /** * The string name of the event that this represents. */ - type: string; + type: string; /** * The data that was passed in with this event. */ - data: any; + data: any; /** * The timestamp when the event occurred. */ - timeStamp: number; - + timeStamp: number; + /** * Stops the propagation of events up the scene graph (prevents bubbling). */ - stopPropagation(): void; - preventDefault(): void; + stopPropagation(): void; + preventDefault(): void; /** * Stops the propagation of events to sibling listeners (no longer calls any listeners). */ - stopImmediatePropagation(): void; - - } - + stopImmediatePropagation(): void; + + } + /** * Mixins event emitter functionality to a class */ - export class EventTarget { - + export class EventTarget { + /** * Mixes in the properties of the EventTarget prototype onto another object * * @param object The obj to mix into */ - static mixin(obj: any): void; - - } - - export class FilterTexture { - + static mixin(obj: any): void; + + } + + export class FilterTexture { + /** * @@ -1217,20 +1047,20 @@ declare module PIXI { * @param height the vertical range of the filter * @param scaleMode See {{#crossLink "PIXI/scaleModes:property"}}PIXI.scaleModes{{/crossLink}} for possible values */ - constructor(gl: WebGLRenderingContext, width: number, height: number, scaleMode: scaleModes); - - fragmentSrc: string[]; - frameBuffer: WebGLFramebuffer; - gl: WebGLRenderingContext; - program: WebGLProgram; - scaleMode: number; - texture: WebGLTexture; - + constructor(gl: WebGLRenderingContext, width: number, height: number, scaleMode: scaleModes); + + fragmentSrc: string[]; + frameBuffer: WebGLFramebuffer; + gl: WebGLRenderingContext; + program: WebGLProgram; + scaleMode: number; + texture: WebGLTexture; + /** * Clears the filter texture. */ - clear(): void; + clear(): void; /** * Resizes the texture to the specified width and height @@ -1238,94 +1068,90 @@ declare module PIXI { * @param width the new width of the texture * @param height the new height of the texture */ - resize(width: number, height: number): void; + resize(width: number, height: number): void; /** * Destroys the filter texture. */ - destroy(): void; - - } - + destroy(): void; + + } + /** * A GraphicsData object. */ - export class GraphicsData { - + export class GraphicsData { + /** * A GraphicsData object. */ - constructor(lineWidth?: number, lineColor?: number, lineAlpha?: number, fillColor?: number, fillAlpha?: number, fill?: boolean, shape?: any); - - lineWidth: number; - lineColor: number; - lineAlpha: number; - fillColor: number; - fillAlpha: number; - fill: boolean; - shape: any; - type: number; - - } - + constructor(lineWidth?: number, lineColor?: number, lineAlpha?: number, fillColor?: number, fillAlpha?: number, fill?: boolean, shape?: any); + + lineWidth: number; + lineColor: number; + lineAlpha: number; + fillColor: number; + fillAlpha: number; + fill: boolean; + shape: any; + type: number; + + } + /** * The Graphics class contains methods used to draw primitive shapes such as lines, circles and rectangles to the display, and color and fill them. */ - export class Graphics extends DisplayObjectContainer { - - static POLY: number; - static RECT: number; - static CIRC: number; - static ELIP: number; - static RREC: number; - + export class Graphics extends DisplayObjectContainer { + + static POLY: number; + static RECT: number; + static CIRC: number; + static ELIP: number; + static RREC: number; + /** * The blend mode to be applied to the graphic shape. Apply a value of PIXI.blendModes.NORMAL to reset the blend mode. * Default: PIXI.blendModes.NORMAL; */ - blendMode: number; + blendMode: number; /** * The bounds' padding used for bounds calculation. */ - boundsPadding: number; + boundsPadding: number; /** * The alpha value used when filling the Graphics object. */ - fillAlpha: number; + fillAlpha: number; /** * Whether this shape is being used as a mask. */ - isMask: boolean; + isMask: boolean; /** * The width (thickness) of any lines drawn. */ - lineWidth: number; + lineWidth: number; /** * The color of any lines drawn. * Default: 0 */ - lineColor: number; + lineColor: number; /** * The tint applied to the graphic shape. This is a hex value. Apply a value of 0xFFFFFF to reset the tint. * Default: 0xFFFFFF */ - tint: number; + tint: number; + worldAlpha: number; - /** - * [read-only] The multiplied alpha of the displayObject - */ - worldAlpha: number; - /** * The arc method creates an arc/curve (used to create circles, or parts of circles). @@ -1338,8 +1164,8 @@ declare module PIXI { * @param anticlockwise Optional. Specifies whether the drawing should be counterclockwise or clockwise. False is default, and indicates clockwise, while true indicates counter-clockwise. * @param segments Optional. The number of segments to use when calculating the arc. The default is 40. If you need more fidelity use a higher number. */ - arc(cx: number, cy: number, radius: number, startAngle: number, endAngle: number, anticlockwise: boolean): Graphics; - arcTo(x1: number, y1: number, x2: number, y2: number, radius: number): Graphics; + arc(cx: number, cy: number, radius: number, startAngle: number, endAngle: number, anticlockwise: boolean): Graphics; + arcTo(x1: number, y1: number, x2: number, y2: number, radius: number): Graphics; /** * Specifies a simple one-color fill that subsequent calls to other Graphics methods @@ -1348,7 +1174,7 @@ declare module PIXI { * @param color the color of the fill * @param alpha the alpha of the fill */ - beginFill(color?: number, alpha?: number): Graphics; + beginFill(color?: number, alpha?: number): Graphics; /** * Calculate the points for a bezier curve and then draws it. @@ -1360,17 +1186,17 @@ declare module PIXI { * @param toX Destination point x * @param toY Destination point y */ - bezierCurveTo(cpX: number, cpY: number, cpX2: number, cpY2: number, toX: number, toY: number): Graphics; + bezierCurveTo(cpX: number, cpY: number, cpX2: number, cpY2: number, toX: number, toY: number): Graphics; /** * Clears the graphics that were drawn to this Graphics object, and resets fill and line style settings. */ - clear(): Graphics; + clear(): Graphics; /** * Destroys a previous cached sprite. */ - destroyCachedSprite(): void; + destroyCachedSprite(): void; /** * Draws a circle. @@ -1379,7 +1205,7 @@ declare module PIXI { * @param y The Y coordinate of the center of the circle * @param diameter The diameter of the circle */ - drawCircle(x: number, y: number, diameter: number): Graphics; + drawCircle(x: number, y: number, diameter: number): Graphics; /** * Draws an ellipse. @@ -1389,14 +1215,14 @@ declare module PIXI { * @param width The half width of the ellipse * @param height The half height of the ellipse */ - drawEllipse(x: number, y: number, width: number, height: number): Graphics; + drawEllipse(x: number, y: number, width: number, height: number): Graphics; /** * Draws a polygon using the given path. * * @param path The path data used to construct the polygon. Can either be an array of points or a Phaser.Polygon object. */ - drawPolygon(...path: any[]): Graphics; + drawPolygon(...path: any[]): Graphics; /** * @@ -1406,7 +1232,7 @@ declare module PIXI { * @param width The width of the rectangle * @param height The height of the rectangle */ - drawRect(x: number, y: number, width: number, height: number): Graphics; + drawRect(x: number, y: number, width: number, height: number): Graphics; /** * @@ -1417,7 +1243,7 @@ declare module PIXI { * @param height The height of the rectangle * @param radius Radius of the rectangle corners. In WebGL this must be a value between 0 and 9. */ - drawRoundedRect(x: number, y: number, width: number, height: number, radius: number): Graphics; + drawRoundedRect(x: number, y: number, width: number, height: number, radius: number): Graphics; /** * Draws the given shape to this Graphics object. Can be any of Circle, Rectangle, Ellipse, Line or Polygon. @@ -1425,7 +1251,7 @@ declare module PIXI { * @param shape The Shape object to draw. * @return The generated GraphicsData object. */ - drawShape(shape: Circle): GraphicsData; + drawShape(shape: Circle): GraphicsData; /** * Draws the given shape to this Graphics object. Can be any of Circle, Rectangle, Ellipse, Line or Polygon. @@ -1433,7 +1259,7 @@ declare module PIXI { * @param shape The Shape object to draw. * @return The generated GraphicsData object. */ - drawShape(shape: Rectangle): GraphicsData; + drawShape(shape: Rectangle): GraphicsData; /** * Draws the given shape to this Graphics object. Can be any of Circle, Rectangle, Ellipse, Line or Polygon. @@ -1441,7 +1267,7 @@ declare module PIXI { * @param shape The Shape object to draw. * @return The generated GraphicsData object. */ - drawShape(shape: Ellipse): GraphicsData; + drawShape(shape: Ellipse): GraphicsData; /** * Draws the given shape to this Graphics object. Can be any of Circle, Rectangle, Ellipse, Line or Polygon. @@ -1449,12 +1275,12 @@ declare module PIXI { * @param shape The Shape object to draw. * @return The generated GraphicsData object. */ - drawShape(shape: Polygon): GraphicsData; + drawShape(shape: Polygon): GraphicsData; /** * Applies a fill to the lines and shapes that were added since the last call to the beginFill() method. */ - endFill(): Graphics; + endFill(): Graphics; /** * Useful function that returns a texture of the graphics object that can then be used to create sprites @@ -1465,7 +1291,7 @@ declare module PIXI { * @param padding Add optional extra padding to the generated texture (default 0) * @return a texture of the graphics object */ - generateTexture(resolution?: number, scaleMode?: number, padding?: number): RenderTexture; + generateTexture(resolution?: number, scaleMode?: number, padding?: number): RenderTexture; /** * Specifies the line style used for subsequent calls to Graphics methods such as the lineTo() method or the drawCircle() method. @@ -1474,7 +1300,7 @@ declare module PIXI { * @param color color of the line to draw, will update the objects stored style * @param alpha alpha of the line to draw, will update the objects stored style */ - lineStyle(lineWidth?: number, color?: number, alpha?: number): Graphics; + lineStyle(lineWidth?: number, color?: number, alpha?: number): Graphics; /** * Draws a line using the current line style from the current drawing position to (x, y); @@ -1483,7 +1309,7 @@ declare module PIXI { * @param x the X coordinate to draw to * @param y the Y coordinate to draw to */ - lineTo(x: number, y: number): Graphics; + lineTo(x: number, y: number): Graphics; /** * Moves the current drawing position to x, y. @@ -1491,7 +1317,7 @@ declare module PIXI { * @param x the X coordinate to move to * @param y the Y coordinate to move to */ - moveTo(x: number, y: number): Graphics; + moveTo(x: number, y: number): Graphics; /** * Calculate the points for a quadratic bezier curve and then draws it. @@ -1502,238 +1328,216 @@ declare module PIXI { * @param toX Destination point x * @param toY Destination point y */ - quadraticCurveTo(cpX: number, cpY: number, toX: number, toY: number): Graphics; - - } - - export class GrayFilter extends AbstractFilter { - - gray: number; - - } - - export class ImageLoader implements Mixin { - - constructor(url: string, crossorigin?: boolean); - - texture: Texture; - - listeners(eventName: string): Function[]; - emit(eventName: string, data?: any): boolean; - dispatchEvent(eventName: string, data?: any): boolean; - on(eventName: string, fn: Function): Function; - addEventListener(eventName: string, fn: Function): Function; - once(eventName: string, fn: Function): Function; - off(eventName: string, fn: Function): Function; - removeAllEventListeners(eventName: string): void; - - load(): void; - loadFramedSpriteSheet(frameWidth: number, frameHeight: number, textureName: string): void; - - } - - export class InteractionData { - - global: Point; - target: Sprite; - originalEvent: Event; - - getLocalPosition(displayObject: DisplayObject, point?: Point, globalPos?: Point): Point; - - } - - export class InteractionManager { - - currentCursorStyle: string; - last: number; - mouse: InteractionData; - mouseOut: boolean; - mouseoverEnabled: boolean; - onMouseMove: Function; - onMouseDown: Function; - onMouseOut: Function; - onMouseUp: Function; - onTouchStart: Function; - onTouchEnd: Function; - onTouchMove: Function; - pool: InteractionData[]; - resolution: number; - stage: DisplayObjectContainer; - touches: { [id: string]: InteractionData }; - - constructor(stage: DisplayObjectContainer); - } - - export class InvertFilter extends AbstractFilter { - - invert: number; - - } - - export class JsonLoader implements Mixin { - - constructor(url: string, crossorigin?: boolean); - - baseUrl: string; - crossorigin: boolean; - loaded: boolean; - url: string; - - listeners(eventName: string): Function[]; - emit(eventName: string, data?: any): boolean; - dispatchEvent(eventName: string, data?: any): boolean; - on(eventName: string, fn: Function): Function; - addEventListener(eventName: string, fn: Function): Function; - once(eventName: string, fn: Function): Function; - off(eventName: string, fn: Function): Function; - removeAllEventListeners(eventName: string): void; - - load(): void; - - } - - export class Matrix { - - a: number; - b: number; - c: number; - d: number; - tx: number; - ty: number; - - append(matrix: Matrix): Matrix; - apply(pos: Point, newPos: Point): Point; - applyInverse(pos: Point, newPos: Point): Point; - determineMatrixArrayType(): number[]; - identity(): Matrix; - rotate(angle: number): Matrix; - fromArray(array: number[]): void; - translate(x: number, y: number): Matrix; - toArray(transpose: boolean): number[]; - scale(x: number, y: number): Matrix; - - } - - export interface Mixin { - - listeners(eventName: string): Function[]; - emit(eventName: string, data?: any): boolean; - dispatchEvent(eventName: string, data?: any): boolean; - on(eventName: string, fn: Function): Function; - addEventListener(eventName: string, fn: Function): Function; - once(eventName: string, fn: Function): Function; - off(eventName: string, fn: Function): Function; - removeAllEventListeners(eventName: string): void; - - } - - export class MovieClip extends Sprite { - - static fromFrames(frames: string[]): MovieClip; - static fromImages(images: HTMLImageElement[]): HTMLImageElement; - - constructor(textures: Texture[]); - - animationSpeed: number; - currentFrame: number; - loop: boolean; - playing: boolean; - textures: Texture[]; - totalFrames: number; - - gotoAndPlay(frameNumber: number): void; - gotoAndStop(frameNumber: number): void; - onComplete(): void; - play(): void; - stop(): void; - - } - - export class NoiseFilter extends AbstractFilter { - - noise: number; - - } - - export class NormalMapFilter extends AbstractFilter { - - map: Texture; - offset: Point; - scale: Point; - - } - - export class PixelateFilter extends AbstractFilter { - - size: number; - - } - - export interface IPixiShader { - - fragmentSrc: string[]; - gl: WebGLRenderingContext; - program: WebGLProgram; - vertexSrc: string[]; - - destroy(): void; - init(): void; - - } - - export class PixiShader implements IPixiShader { - + quadraticCurveTo(cpX: number, cpY: number, toX: number, toY: number): Graphics; + + } + + export class GrayFilter extends AbstractFilter { + + gray: number; + + } + + export class ImageLoader implements Mixin { + + constructor(url: string, crossorigin?: boolean); + + texture: Texture; + + listeners(eventName: string): Function[]; + emit(eventName: string, data?: any): boolean; + dispatchEvent(eventName: string, data?: any): boolean; + on(eventName: string, fn: Function): Function; + addEventListener(eventName: string, fn: Function): Function; + once(eventName: string, fn: Function): Function; + off(eventName: string, fn: Function): Function; + removeAllEventListeners(eventName: string): void; + + load(): void; + loadFramedSpriteSheet(frameWidth: number, frameHeight: number, textureName: string): void; + + } + + export class InteractionData { + + global: Point; + target: Sprite; + originalEvent: Event; + + getLocalPosition(displayObject: DisplayObject, point?: Point, globalPos?: Point): Point; + + } + + export class InteractionManager { + + currentCursorStyle: string; + last: number; + mouse: InteractionData; + mouseOut: boolean; + mouseoverEnabled: boolean; + onMouseMove: Function; + onMouseDown: Function; + onMouseOut: Function; + onMouseUp: Function; + onTouchStart: Function; + onTouchEnd: Function; + onTouchMove: Function; + pool: InteractionData[]; + resolution: number; + stage: DisplayObjectContainer; + touches: { [id: string]: InteractionData }; + + constructor(stage: DisplayObjectContainer); + } + + export class InvertFilter extends AbstractFilter { + + invert: number; + + } + + export class JsonLoader implements Mixin { + + constructor(url: string, crossorigin?: boolean); + + baseUrl: string; + crossorigin: boolean; + loaded: boolean; + url: string; + + listeners(eventName: string): Function[]; + emit(eventName: string, data?: any): boolean; + dispatchEvent(eventName: string, data?: any): boolean; + on(eventName: string, fn: Function): Function; + addEventListener(eventName: string, fn: Function): Function; + once(eventName: string, fn: Function): Function; + off(eventName: string, fn: Function): Function; + removeAllEventListeners(eventName: string): void; + + load(): void; + + } + + export class Matrix { + + a: number; + b: number; + c: number; + d: number; + tx: number; + ty: number; + + append(matrix: Matrix): Matrix; + apply(pos: Point, newPos: Point): Point; + applyInverse(pos: Point, newPos: Point): Point; + determineMatrixArrayType(): number[]; + identity(): Matrix; + rotate(angle: number): Matrix; + fromArray(array: number[]): void; + translate(x: number, y: number): Matrix; + toArray(transpose: boolean): number[]; + scale(x: number, y: number): Matrix; + + } + + export interface Mixin { + + listeners(eventName: string): Function[]; + emit(eventName: string, data?: any): boolean; + dispatchEvent(eventName: string, data?: any): boolean; + on(eventName: string, fn: Function): Function; + addEventListener(eventName: string, fn: Function): Function; + once(eventName: string, fn: Function): Function; + off(eventName: string, fn: Function): Function; + removeAllEventListeners(eventName: string): void; + + } + + export class NoiseFilter extends AbstractFilter { + + noise: number; + + } + + export class NormalMapFilter extends AbstractFilter { + + map: Texture; + offset: Point; + scale: Point; + + } + + export class PixelateFilter extends AbstractFilter { + + size: number; + + } + + export interface IPixiShader { + + fragmentSrc: string[]; + gl: WebGLRenderingContext; + program: WebGLProgram; + vertexSrc: string[]; + + destroy(): void; + init(): void; + + } + + export class PixiShader implements IPixiShader { + /** * * * @param gl the current WebGL drawing context */ - constructor(gl: WebGLRenderingContext); - + constructor(gl: WebGLRenderingContext); + /** * Uniform attributes cache. */ - attributes: ShaderAttribute[]; + attributes: ShaderAttribute[]; /** * The Default Vertex shader source. */ - defaultVertexSrc: string[]; + defaultVertexSrc: string[]; /** * A dirty flag */ - dirty: boolean; + dirty: boolean; /** * A local flag */ - firstRun: boolean; + firstRun: boolean; /** * A local texture counter for multi-texture shaders. */ - textureCount: number; + textureCount: number; /** * The fragment shader. */ - fragmentSrc: string[]; - gl: WebGLRenderingContext; + fragmentSrc: string[]; + gl: WebGLRenderingContext; /** * The WebGL program. */ - program: WebGLProgram; - vertexSrc: string[]; - + program: WebGLProgram; + vertexSrc: string[]; + /** * Initialises a Sampler2D uniform (which may only be available later on after initUniforms once the texture has loaded) */ - initSampler2D(): void; + initSampler2D(): void; /** * Initialises the shader uniform values. @@ -1741,241 +1545,241 @@ declare module PIXI { * Uniforms are specified in the GLSL_ES Specification: http://www.khronos.org/registry/webgl/specs/latest/1.0/ * http://www.khronos.org/registry/gles/specs/2.0/GLSL_ES_Specification_1.0.17.pdf */ - initUniforms(): void; + initUniforms(): void; /** * Updates the shader uniform values. */ - syncUniforms(): void; - + syncUniforms(): void; + /** * Destroys the shader. */ - destroy(): void; + destroy(): void; /** * Initialises the shader. */ - init(): void; - - } - - export class PixiFastShader implements IPixiShader { - + init(): void; + + } + + export class PixiFastShader implements IPixiShader { + /** * * * @param gl the current WebGL drawing context */ - constructor(gl: WebGLRenderingContext); - + constructor(gl: WebGLRenderingContext); + /** * A local texture counter for multi-texture shaders. */ - textureCount: number; + textureCount: number; /** * The fragment shader. */ - fragmentSrc: string[]; - gl: WebGLRenderingContext; + fragmentSrc: string[]; + gl: WebGLRenderingContext; /** * The WebGL program. */ - program: WebGLProgram; + program: WebGLProgram; /** * The vertex shader. */ - vertexSrc: string[]; - + vertexSrc: string[]; + /** * Destroys the shader. */ - destroy(): void; + destroy(): void; /** * Initialises the shader. */ - init(): void; - - } - - export class PrimitiveShader implements IPixiShader { - + init(): void; + + } + + export class PrimitiveShader implements IPixiShader { + /** * * * @param gl the current WebGL drawing context */ - constructor(gl: WebGLRenderingContext); + constructor(gl: WebGLRenderingContext); /** * The fragment shader. */ - fragmentSrc: string[]; - gl: WebGLRenderingContext; + fragmentSrc: string[]; + gl: WebGLRenderingContext; /** * The WebGL program. */ - program: WebGLProgram; + program: WebGLProgram; /** * The vertex shader. */ - vertexSrc: string[]; - + vertexSrc: string[]; + /** * Destroys the shader. */ - destroy(): void; + destroy(): void; /** * Initialises the shader. */ - init(): void; - - } - - export class ComplexPrimitiveShader implements IPixiShader { - + init(): void; + + } + + export class ComplexPrimitiveShader implements IPixiShader { + /** * * * @param gl the current WebGL drawing context */ - constructor(gl: WebGLRenderingContext); + constructor(gl: WebGLRenderingContext); /** * The fragment shader. */ - fragmentSrc: string[]; - gl: WebGLRenderingContext; + fragmentSrc: string[]; + gl: WebGLRenderingContext; /** * The WebGL program. */ - program: WebGLProgram; + program: WebGLProgram; /** * The vertex shader. */ - vertexSrc: string[]; - + vertexSrc: string[]; + /** * Destroys the shader. */ - destroy(): void; + destroy(): void; /** * Initialises the shader. */ - init(): void; - - } - - export class StripShader implements IPixiShader { - + init(): void; + + } + + export class StripShader implements IPixiShader { + /** * * * @param gl the current WebGL drawing context */ - constructor(gl: WebGLRenderingContext); + constructor(gl: WebGLRenderingContext); /** * The fragment shader. */ - fragmentSrc: string[]; - gl: WebGLRenderingContext; + fragmentSrc: string[]; + gl: WebGLRenderingContext; /** * The WebGL program. */ - program: WebGLProgram; + program: WebGLProgram; /** * The vertex shader. */ - vertexSrc: string[]; - + vertexSrc: string[]; + /** * Destroys the shader. */ - destroy(): void; + destroy(): void; /** * Initialises the shader. */ - init(): void; - - } - - export class Point { - - constructor(x?: number, y?: number); - - x: number; - y: number; - - clone(): Point; - set(x: number, y: number): void; - - } - - export class Polygon implements HitArea { - - constructor(points: Point[]); - constructor(points: number[]); - constructor(...points: Point[]); - constructor(...points: number[]); - - points: any[]; - - clone(): Polygon; - contains(x: number, y: number): boolean; - - } - - export class Rectangle implements HitArea { - - constructor(x?: number, y?: number, width?: number, height?: number); - - x: number; - y: number; - width: number; - height: number; - - clone(): Rectangle; - contains(x: number, y: number): boolean; - - } - - export class RGBSplitFilter extends AbstractFilter { - - red: Point; - green: Point; - blue: Point; - - } - - export class Rope extends Strip { - - points: Point[]; - vertices: number[]; - + init(): void; + + } + + export class Point { + + constructor(x?: number, y?: number); + + x: number; + y: number; + + clone(): Point; + set(x: number, y: number): void; + + } + + export class Polygon implements HitArea { + + constructor(points: Point[]); + constructor(points: number[]); + constructor(...points: Point[]); + constructor(...points: number[]); + + points: any[]; + + clone(): Polygon; + contains(x: number, y: number): boolean; + + } + + export class Rectangle implements HitArea { + + constructor(x?: number, y?: number, width?: number, height?: number); + + x: number; + y: number; + width: number; + height: number; + + clone(): Rectangle; + contains(x: number, y: number): boolean; + + } + + export class RGBSplitFilter extends AbstractFilter { + + red: Point; + green: Point; + blue: Point; + + } + + export class Rope extends Strip { + + points: Point[]; + vertices: number[]; + /** * @@ -1983,95 +1787,76 @@ declare module PIXI { * @param texture - The texture to use on the rope. * @param points - An array of {PIXI.Point}. */ - constructor(texture: Texture, points: Point[]); - - refresh(): void; - setTexture(texture: Texture): void; - - } - - export class RoundedRectangle implements HitArea { - - constructor(x?: number, y?: number, width?: number, height?: number, radius?: number); - - x: number; - y: number; - width: number; - height: number; - radius: number; - - clone(): RoundedRectangle; - contains(x: number, y: number): boolean; - - } - - export class SepiaFilter extends AbstractFilter { - - sepia: number; - - } - - export class SmartBlurFilter extends AbstractFilter { - - blur: number; - - } - - export class SpineLoader implements Mixin { - - url: string; - crossorigin: boolean; - loaded: boolean; - - constructor(url: string, crossOrigin: boolean); - - listeners(eventName: string): Function[]; - emit(eventName: string, data?: any): boolean; - dispatchEvent(eventName: string, data?: any): boolean; - on(eventName: string, fn: Function): Function; - addEventListener(eventName: string, fn: Function): Function; - once(eventName: string, fn: Function): Function; - off(eventName: string, fn: Function): Function; - removeAllEventListeners(eventName: string): void; - - load(): void; - - } - - export class SpineTextureLoader { - - constructor(basePath: string, crossorigin: boolean); - - load(page: AtlasPage, file: string): void; - unload(texture: BaseTexture): void; - - } - + constructor(texture: Texture, points: Point[]); + + refresh(): void; + setTexture(texture: Texture): void; + + } + + export class RoundedRectangle implements HitArea { + + constructor(x?: number, y?: number, width?: number, height?: number, radius?: number); + + x: number; + y: number; + width: number; + height: number; + radius: number; + + clone(): RoundedRectangle; + contains(x: number, y: number): boolean; + + } + + export class SepiaFilter extends AbstractFilter { + + sepia: number; + + } + + export class SmartBlurFilter extends AbstractFilter { + + blur: number; + + } + + export class SpineLoader implements Mixin { + + url: string; + crossorigin: boolean; + loaded: boolean; + + constructor(url: string, crossOrigin: boolean); + + listeners(eventName: string): Function[]; + emit(eventName: string, data?: any): boolean; + dispatchEvent(eventName: string, data?: any): boolean; + on(eventName: string, fn: Function): Function; + addEventListener(eventName: string, fn: Function): Function; + once(eventName: string, fn: Function): Function; + off(eventName: string, fn: Function): Function; + removeAllEventListeners(eventName: string): void; + + load(): void; + + } + + export class SpineTextureLoader { + + constructor(basePath: string, crossorigin: boolean); + + load(page: AtlasPage, file: string): void; + unload(texture: BaseTexture): void; + + } + /** * The Sprite object is the base for all textured objects that are rendered to the screen */ - export class Sprite extends DisplayObjectContainer { - + export class Sprite extends DisplayObjectContainer { - /** - * Helper function that creates a sprite that will contain a texture from the TextureCache based on the frameId - * The frame ids are created when a Texture packer file has been loaded - * - * @param frameId The frame Id of the texture in the cache - * @return A new Sprite using a texture from the texture cache matching the frameId - */ - static fromFrame(frameId: string): Sprite; - - /** - * Helper function that creates a sprite that will contain a texture based on an image url - * If the image is not in the texture cache it will be loaded - * - * @param imageId The image url of the texture - * @return A new Sprite using a texture from the texture cache matching the image id - */ - static fromImage(url: string, crossorigin?: boolean, scaleMode?: scaleModes): Sprite; - /** * The Sprite object is the base for all textured objects that are rendered to the screen @@ -2083,8 +1868,8 @@ declare module PIXI { * yourStage.addChild(sprite); * then obviously don't forget to add it to the stage you have already created */ - constructor(texture: Texture); - + constructor(texture: Texture); + /** * The anchor sets the origin point of the texture. @@ -2092,7 +1877,7 @@ declare module PIXI { * Setting than anchor to 0.5,0.5 means the textures origin is centered * Setting the anchor to 1,1 would mean the textures origin points will be the bottom right corner */ - anchor: Point; + anchor: Point; /** * The blend mode to be applied to the sprite. Set to PIXI.blendModes.NORMAL to remove any blend mode. @@ -2100,31 +1885,31 @@ declare module PIXI { * Warning: You cannot have a blend mode and a filter active on the same Sprite. Doing so will render the sprite invisible. * Default: PIXI.blendModes.NORMAL; */ - blendMode: blendModes; + blendMode: blendModes; /** * Controls if this Sprite is processed by the core Phaser game loops and Group loops. * Default: true */ - exists: boolean; + exists: boolean; /** * The shader that will be used to render the texture to the stage. Set to null to remove a current shader. * Default: null */ - shader: IPixiShader; + shader: IPixiShader; /** * The texture that the sprite is using */ - texture: Texture; + texture: Texture; /** * The tint applied to the sprite. This is a hex value. A value of 0xFFFFFF will remove any tint effect. * Default: 0xFFFFFF */ - tint: number; - + tint: number; + /** * Sets the texture of the sprite. Be warned that this doesn't remove or destroy the previous @@ -2133,10 +1918,10 @@ declare module PIXI { * @param texture The PIXI texture that is displayed by the sprite * @param destroy Call Texture.destroy on the current texture before replacing it with the new one? */ - setTexture(texture: Texture, destroyBase?: boolean): void; - - } - + setTexture(texture: Texture, destroyBase?: boolean): void; + + } + /** * The SpriteBatch class is a really fast version of the DisplayObjectContainer @@ -2154,8 +1939,8 @@ declare module PIXI { * } * And here you have a hundred sprites that will be renderer at the speed of light */ - export class SpriteBatch extends DisplayObjectContainer { - + export class SpriteBatch extends DisplayObjectContainer { + /** * The SpriteBatch class is a really fast version of the DisplayObjectContainer @@ -2175,47 +1960,47 @@ declare module PIXI { * * @param texture - */ - constructor(texture?: Texture); - - ready: boolean; - textureThing: Texture; - - initWebGL(gl: WebGLRenderingContext): void; - - } - - export class SpriteSheetLoader implements Mixin { - - constructor(url: string, crossorigin?: boolean); - - baseUrl: string; - crossorigin: boolean; - frames: any; - texture: Texture; - url: string; - - listeners(eventName: string): Function[]; - emit(eventName: string, data?: any): boolean; - dispatchEvent(eventName: string, data?: any): boolean; - on(eventName: string, fn: Function): Function; - addEventListener(eventName: string, fn: Function): Function; - once(eventName: string, fn: Function): Function; - off(eventName: string, fn: Function): Function; - removeAllEventListeners(eventName: string): void; - - load(): void; - - } - - export class Strip extends DisplayObjectContainer { - - static DrawModes: { - - TRIANGLE_STRIP: number; - TRIANGLES: number; - - }; - + constructor(texture?: Texture); + + ready: boolean; + textureThing: Texture; + + initWebGL(gl: WebGLRenderingContext): void; + + } + + export class SpriteSheetLoader implements Mixin { + + constructor(url: string, crossorigin?: boolean); + + baseUrl: string; + crossorigin: boolean; + frames: any; + texture: Texture; + url: string; + + listeners(eventName: string): Function[]; + emit(eventName: string, data?: any): boolean; + dispatchEvent(eventName: string, data?: any): boolean; + on(eventName: string, fn: Function): Function; + addEventListener(eventName: string, fn: Function): Function; + once(eventName: string, fn: Function): Function; + off(eventName: string, fn: Function): Function; + removeAllEventListeners(eventName: string): void; + + load(): void; + + } + + export class Strip extends DisplayObjectContainer { + + static DrawModes: { + + TRIANGLE_STRIP: number; + TRIANGLES: number; + + }; + /** * @@ -2224,34 +2009,34 @@ declare module PIXI { * @param width the width * @param height the height */ - constructor(texture: Texture); - + constructor(texture: Texture); + /** * The blend mode to be applied to the sprite. Set to PIXI.blendModes.NORMAL to remove any blend mode. * Default: PIXI.blendModes.NORMAL; */ - blendMode: number; - colors: number[]; + blendMode: number; + colors: number[]; /** * Whether the strip is dirty or not */ - dirty: boolean; - indices: number[]; + dirty: boolean; + indices: number[]; /** * Triangles in canvas mode are automatically antialiased, use this value to force triangles to overlap a bit with each other. */ - canvasPadding: number; + canvasPadding: number; /** * The texture of the strip */ - texture: Texture; - uvs: number[]; - vertices: number[]; - + texture: Texture; + uvs: number[]; + vertices: number[]; + /** * Returns the bounds of the mesh as a rectangle. The bounds calculation takes the worldTransform into account. @@ -2259,19 +2044,19 @@ declare module PIXI { * @param matrix the transformation matrix of the sprite * @return the framing rectangle */ - getBounds(matrix?: Matrix): Rectangle; - - } - + getBounds(matrix?: Matrix): Rectangle; + + } + /** * A texture stores the information that represents an image or part of an image. It cannot be added * to the display list directly. Instead use it as the texture for a PIXI.Sprite. If no frame is provided then the whole image is used. */ - export class Texture implements Mixin { - - static emptyTexture: Texture; - + export class Texture implements Mixin { + + static emptyTexture: Texture; + /** * Helper function that creates a new a Texture based on the given canvas element. @@ -2279,42 +2064,8 @@ declare module PIXI { * @param canvas The canvas element source of the texture * @param scaleMode See {{#crossLink "PIXI/scaleModes:property"}}PIXI.scaleModes{{/crossLink}} for possible values */ - static fromCanvas(canvas: HTMLCanvasElement, scaleMode?: scaleModes): Texture; + static fromCanvas(canvas: HTMLCanvasElement, scaleMode?: scaleModes): Texture; - /** - * Helper function that returns a Texture objected based on the given frame id. - * If the frame id is not in the texture cache an error will be thrown. - * - * @param frameId The frame id of the texture - */ - static fromFrame(frameId: string): Texture; - - /** - * Helper function that creates a Texture object from the given image url. - * If the image is not in the texture cache it will be created and loaded. - * - * @param imageUrl The image url of the texture - * @param crossorigin Whether requests should be treated as crossorigin - * @param scaleMode See {{#crossLink "PIXI/scaleModes:property"}}PIXI.scaleModes{{/crossLink}} for possible values - */ - static fromImage(imageUrl: string, crossorigin?: boolean, scaleMode?: scaleModes): Texture; - - /** - * Adds a texture to the global PIXI.TextureCache. This cache is shared across the whole PIXI object. - * - * @param texture The Texture to add to the cache. - * @param id The id that the texture will be stored against. - */ - static addTextureToCache(texture: Texture, id: string): void; - - /** - * Remove a texture from the global PIXI.TextureCache. - * - * @param id The id of the texture to be removed - * @return The texture that was removed - */ - static removeTextureFromCache(id: string): Texture; - /** * A texture stores the information that represents an image or part of an image. It cannot be added @@ -2325,88 +2076,88 @@ declare module PIXI { * @param crop The area of original texture * @param trim Trimmed texture rectangle */ - constructor(baseTexture: BaseTexture, frame?: Rectangle, crop?: Rectangle, trim?: Rectangle); - + constructor(baseTexture: BaseTexture, frame?: Rectangle, crop?: Rectangle, trim?: Rectangle); + /** * The base texture that this texture uses. */ - baseTexture: BaseTexture; + baseTexture: BaseTexture; /** * This is the area of the BaseTexture image to actually copy to the Canvas / WebGL when rendering, * irrespective of the actual frame size or placement (which can be influenced by trimmed texture atlases) */ - crop: Rectangle; + crop: Rectangle; /** * The frame specifies the region of the base texture that this texture uses */ - frame: Rectangle; + frame: Rectangle; /** * The height of the Texture in pixels. */ - height: number; + height: number; /** * Does this Texture have any frame data assigned to it? */ - noFrame: boolean; + noFrame: boolean; /** * This will let a renderer know that a texture has been updated (used mainly for webGL uv updates) */ - requiresUpdate: boolean; + requiresUpdate: boolean; /** * The texture trim data. */ - trim: Point; + trim: Point; /** * The width of the Texture in pixels. */ - width: number; - scope: any; + width: number; + scope: any; /** * This will let the renderer know if the texture is valid. If it's not then it cannot be rendered. */ - valid: boolean; - - listeners(eventName: string): Function[]; - emit(eventName: string, data?: any): boolean; - dispatchEvent(eventName: string, data?: any): boolean; - on(eventName: string, fn: Function): Function; - addEventListener(eventName: string, fn: Function): Function; - once(eventName: string, fn: Function): Function; - off(eventName: string, fn: Function): Function; - removeAllEventListeners(eventName: string): void; - + valid: boolean; + + listeners(eventName: string): Function[]; + emit(eventName: string, data?: any): boolean; + dispatchEvent(eventName: string, data?: any): boolean; + on(eventName: string, fn: Function): Function; + addEventListener(eventName: string, fn: Function): Function; + once(eventName: string, fn: Function): Function; + off(eventName: string, fn: Function): Function; + removeAllEventListeners(eventName: string): void; + /** * Destroys this texture * * @param destroyBase Whether to destroy the base texture as well */ - destroy(destroyBase: boolean): void; + destroy(destroyBase: boolean): void; /** * Specifies the region of the baseTexture that this texture will use. * * @param frame The frame of the texture to set it to */ - setFrame(frame: Rectangle): void; - - } - + setFrame(frame: Rectangle): void; + + } + /** * A tiling sprite is a fast way of rendering a tiling image */ - export class TilingSprite extends Sprite { - + export class TilingSprite extends Sprite { + /** * A tiling sprite is a fast way of rendering a tiling image @@ -2415,70 +2166,65 @@ declare module PIXI { * @param width the width of the tiling sprite * @param height the height of the tiling sprite */ - constructor(texture: Texture, width: number, height: number); - + constructor(texture: Texture, width: number, height: number); + /** * The CanvasBuffer object that the tiled texture is drawn to. */ - canvasBuffer: PIXI.CanvasBuffer; + canvasBuffer: PIXI.CanvasBuffer; /** * The blend mode to be applied to the sprite * Default: PIXI.blendModes.NORMAL; */ - blendMode: number; + blendMode: number; /** * If true the TilingSprite will run generateTexture on its **next** render pass. * This is set by the likes of Phaser.LoadTexture.setFrame. * Default: true */ - refreshTexture: boolean; + refreshTexture: boolean; /** * The texture that the sprite is using */ - texture: Texture; + texture: Texture; /** * If enabled a green rectangle will be drawn behind the generated tiling texture, allowing you to visually * debug the texture being used. */ - textureDebug: boolean; + textureDebug: boolean; /** * The tint applied to the sprite. This is a hex value * Default: 0xFFFFFF */ - tint: number; + tint: number; /** * The offset position of the image that is being tiled */ - tilePosition: Point; + tilePosition: Point; /** * The Context fill pattern that is used to draw the TilingSprite in Canvas mode only (will be null in WebGL). */ - tilePattern: PIXI.Texture; + tilePattern: PIXI.Texture; /** * The scaling of the image that is being tiled */ - tileScale: Point; + tileScale: Point; /** * A point that represents the scale of the texture object */ - tileScaleOffset: Point; - + tileScaleOffset: Point; - /** - * Destroy this DisplayObject. - * Removes all references to transformCallbacks, its parent, the stage, filters, bounds, mask and cached Sprites. - */ - destroy(): void; + destroy(): void; /** * @@ -2486,7 +2232,7 @@ declare module PIXI { * @param forcePowerOfTwo Whether we want to force the texture to be a power of two * @param renderSession - */ - generateTilingTexture(forcePowerOfTwo?: boolean): void; + generateTilingTexture(forcePowerOfTwo?: boolean): void; /** * Sets the texture of the sprite. Be warned that this doesn't remove or destroy the previous @@ -2495,126 +2241,126 @@ declare module PIXI { * @param texture The PIXI texture that is displayed by the sprite * @param destroy Call Texture.destroy on the current texture before replacing it with the new one? */ - setTexture(texture: Texture): void; - - } - - export class TiltShiftFilter extends AbstractFilter { - - blur: number; - gradientBlur: number; - start: number; - end: number; - - } - - export class TiltShiftXFilter extends AbstractFilter { - - blur: number; - gradientBlur: number; - start: number; - end: number; - - updateDelta(): void; - - } - - export class TiltShiftYFilter extends AbstractFilter { - - blur: number; - gradientBlur: number; - start: number; - end: number; - - updateDelta(): void; - - } - - export class TwistFilter extends AbstractFilter { - - angle: number; - offset: Point; - radius: number; - - } - - export class VideoTexture extends BaseTexture { - - static baseTextureFromVideo(video: HTMLVideoElement, scaleMode: number): BaseTexture; - static textureFromVideo(video: HTMLVideoElement, scaleMode: number): Texture; - static fromUrl(videoSrc: string, scaleMode?: number, autoPlay?: boolean, type?: string, loop?: boolean): Texture; - - controls: boolean; - autoUpdate: boolean; - type: string; - - changeSource(src: string, type: string, loop: boolean): void; - play(): void; - stop(): void; - - destroy(): void; - updateBound(): void; - onPlayStart: () => void; - onPlayStop: () => void; - onCanPlay: (event: any) => void; - - } - - export class WebGLBlendModeManager { - - currentBlendMode: number; - + setTexture(texture: Texture): void; + + } + + export class TiltShiftFilter extends AbstractFilter { + + blur: number; + gradientBlur: number; + start: number; + end: number; + + } + + export class TiltShiftXFilter extends AbstractFilter { + + blur: number; + gradientBlur: number; + start: number; + end: number; + + updateDelta(): void; + + } + + export class TiltShiftYFilter extends AbstractFilter { + + blur: number; + gradientBlur: number; + start: number; + end: number; + + updateDelta(): void; + + } + + export class TwistFilter extends AbstractFilter { + + angle: number; + offset: Point; + radius: number; + + } + + export class VideoTexture extends BaseTexture { + + static baseTextureFromVideo(video: HTMLVideoElement, scaleMode: number): BaseTexture; + static textureFromVideo(video: HTMLVideoElement, scaleMode: number): Texture; + static fromUrl(videoSrc: string, scaleMode?: number, autoPlay?: boolean, type?: string, loop?: boolean): Texture; + + controls: boolean; + autoUpdate: boolean; + type: string; + + changeSource(src: string, type: string, loop: boolean): void; + play(): void; + stop(): void; + + destroy(): void; + updateBound(): void; + onPlayStart: () => void; + onPlayStop: () => void; + onCanPlay: (event: any) => void; + + } + + export class WebGLBlendModeManager { + + currentBlendMode: number; + /** * Destroys this object. */ - destroy(): void; + destroy(): void; /** * Sets-up the given blendMode from WebGL's point of view. * * @param blendMode the blendMode, should be a Pixi const, such as PIXI.BlendModes.ADD */ - setBlendMode(blendMode: number): boolean; + setBlendMode(blendMode: number): boolean; /** * Sets the WebGL Context. * * @param gl the current WebGL drawing context */ - setContext(gl: WebGLRenderingContext): void; - - } - - export class WebGLFastSpriteBatch { - - constructor(gl: CanvasRenderingContext2D); - - currentBatchSize: number; - currentBaseTexture: BaseTexture; - currentBlendMode: number; - renderSession: RenderSession; - drawing: boolean; - indexBuffer: any; + setContext(gl: WebGLRenderingContext): void; + + } + + export class WebGLFastSpriteBatch { + + constructor(gl: CanvasRenderingContext2D); + + currentBatchSize: number; + currentBaseTexture: BaseTexture; + currentBlendMode: number; + renderSession: RenderSession; + drawing: boolean; + indexBuffer: any; /** * Index data */ - indices: number[]; - lastIndexCount: number; - matrix: Matrix; - maxSize: number; - shader: IPixiShader; - size: number; - vertexBuffer: any; + indices: number[]; + lastIndexCount: number; + matrix: Matrix; + maxSize: number; + shader: IPixiShader; + size: number; + vertexBuffer: any; /** * Vertex data */ - vertices: number[]; - vertSize: number; - - end(): void; + vertices: number[]; + vertSize: number; + + end(): void; /** * @@ -2622,42 +2368,42 @@ declare module PIXI { * @param spriteBatch - * @param renderSession - */ - begin(spriteBatch: SpriteBatch, renderSession: RenderSession): void; - destroy(removeView?: boolean): void; - flush(): void; + begin(spriteBatch: SpriteBatch, renderSession: RenderSession): void; + destroy(removeView?: boolean): void; + flush(): void; /** * * * @param spriteBatch - */ - render(spriteBatch: SpriteBatch): void; + render(spriteBatch: SpriteBatch): void; /** * * * @param sprite - */ - renderSprite(sprite: Sprite): void; + renderSprite(sprite: Sprite): void; /** * Sets the WebGL Context. * * @param gl the current WebGL drawing context */ - setContext(gl: WebGLRenderingContext): void; - start(): void; - stop(): void; - - } - - export class WebGLFilterManager { - - filterStack: AbstractFilter[]; - transparent: boolean; - offsetX: number; - offsetY: number; - + setContext(gl: WebGLRenderingContext): void; + start(): void; + stop(): void; + + } + + export class WebGLFilterManager { + + filterStack: AbstractFilter[]; + transparent: boolean; + offsetX: number; + offsetY: number; + /** * Applies the filter to the specified area. @@ -2667,7 +2413,7 @@ declare module PIXI { * @param width the horizontal range of the filter * @param height the vertical range of the filter */ - applyFilterPass(filter: AbstractFilter, filterArea: Texture, width: number, height: number): void; + applyFilterPass(filter: AbstractFilter, filterArea: Texture, width: number, height: number): void; /** * @@ -2675,47 +2421,47 @@ declare module PIXI { * @param renderSession - * @param buffer - */ - begin(renderSession: RenderSession, buffer: ArrayBuffer): void; + begin(renderSession: RenderSession, buffer: ArrayBuffer): void; /** * Destroys the filter and removes it from the filter stack. */ - destroy(): void; + destroy(): void; /** * Initialises the shader buffers. */ - initShaderBuffers(): void; + initShaderBuffers(): void; /** * Removes the last filter from the filter stack and doesn't return it. */ - popFilter(): void; + popFilter(): void; /** * Applies the filter and adds it to the current filter stack. * * @param filterBlock the filter that will be pushed to the current filter stack */ - pushFilter(filterBlock: FilterBlock): void; + pushFilter(filterBlock: FilterBlock): void; /** * Initialises the context and the properties. * * @param gl the current WebGL drawing context */ - setContext(gl: WebGLRenderingContext): void; - - } - + setContext(gl: WebGLRenderingContext): void; + + } + /** * A set of functions used by the webGL renderer to draw the primitive graphics data */ - export class WebGLGraphics { - - static graphicsDataPool: any[]; - + export class WebGLGraphics { + + static graphicsDataPool: any[]; + /** * Renders the graphics object @@ -2723,7 +2469,7 @@ declare module PIXI { * @param graphics - * @param renderSession - */ - static renderGraphics(graphics: Graphics, renderRession: RenderSession): void; + static renderGraphics(graphics: Graphics, renderRession: RenderSession): void; /** * Updates the graphics object @@ -2731,7 +2477,7 @@ declare module PIXI { * @param graphicsData The graphics object to update * @param gl the current WebGL drawing context */ - static updateGraphics(graphics: Graphics, gl: WebGLRenderingContext): void; + static updateGraphics(graphics: Graphics, gl: WebGLRenderingContext): void; /** * @@ -2739,7 +2485,7 @@ declare module PIXI { * @param webGL - * @param type - */ - static switchMode(webGL: WebGLRenderingContext, type: number): any; + static switchMode(webGL: WebGLRenderingContext, type: number): any; /** * Builds a rectangle to draw @@ -2747,7 +2493,7 @@ declare module PIXI { * @param graphicsData The graphics object containing all the necessary properties * @param webGLData - */ - static buildRectangle(graphicsData: GraphicsData, webGLData: any): void; + static buildRectangle(graphicsData: GraphicsData, webGLData: any): void; /** * Builds a rounded rectangle to draw @@ -2755,7 +2501,7 @@ declare module PIXI { * @param graphicsData The graphics object containing all the necessary properties * @param webGLData - */ - static buildRoundedRectangle(graphicsData: GraphicsData, webGLData: any): void; + static buildRoundedRectangle(graphicsData: GraphicsData, webGLData: any): void; /** * Calculate the points for a quadratic bezier curve. (helper function..) @@ -2768,7 +2514,7 @@ declare module PIXI { * @param toX Destination point x * @param toY Destination point y */ - static quadraticBezierCurve(fromX: number, fromY: number, cpX: number, cpY: number, toX: number, toY: number): number[]; + static quadraticBezierCurve(fromX: number, fromY: number, cpX: number, cpY: number, toX: number, toY: number): number[]; /** * Builds a circle to draw @@ -2776,7 +2522,7 @@ declare module PIXI { * @param graphicsData The graphics object to draw * @param webGLData - */ - static buildCircle(graphicsData: GraphicsData, webGLData: any): void; + static buildCircle(graphicsData: GraphicsData, webGLData: any): void; /** * Builds a line to draw @@ -2784,7 +2530,7 @@ declare module PIXI { * @param graphicsData The graphics object containing all the necessary properties * @param webGLData - */ - static buildLine(graphicsData: GraphicsData, webGLData: any): void; + static buildLine(graphicsData: GraphicsData, webGLData: any): void; /** * Builds a complex polygon to draw @@ -2792,7 +2538,7 @@ declare module PIXI { * @param graphicsData The graphics object containing all the necessary properties * @param webGLData - */ - static buildComplexPoly(graphicsData: GraphicsData, webGLData: any): void; + static buildComplexPoly(graphicsData: GraphicsData, webGLData: any): void; /** * Builds a polygon to draw @@ -2800,40 +2546,40 @@ declare module PIXI { * @param graphicsData The graphics object containing all the necessary properties * @param webGLData - */ - static buildPoly(graphicsData: GraphicsData, webGLData: any): boolean; - - reset(): void; - upload(): void; - - } - - export class WebGLGraphicsData { - - constructor(gl: WebGLRenderingContext); - - gl: WebGLRenderingContext; - glPoints: any[]; - color: number[]; - points: any[]; - indices: any[]; - buffer: WebGLBuffer; - indexBuffer: WebGLBuffer; - mode: number; - alpha: number; - dirty: boolean; - - reset(): void; - upload(): void; - - } - - export class WebGLMaskManager { - + static buildPoly(graphicsData: GraphicsData, webGLData: any): boolean; + + reset(): void; + upload(): void; + + } + + export class WebGLGraphicsData { + + constructor(gl: WebGLRenderingContext); + + gl: WebGLRenderingContext; + glPoints: any[]; + color: number[]; + points: any[]; + indices: any[]; + buffer: WebGLBuffer; + indexBuffer: WebGLBuffer; + mode: number; + alpha: number; + dirty: boolean; + + reset(): void; + upload(): void; + + } + + export class WebGLMaskManager { + /** * Destroys the mask stack. */ - destroy(): void; + destroy(): void; /** * Removes the last filter from the filter stack and doesn't return it. @@ -2841,7 +2587,7 @@ declare module PIXI { * @param maskData - * @param renderSession an object containing all the useful parameters */ - popMask(renderSession: RenderSession): void; + popMask(renderSession: RenderSession): void; /** * Applies the Mask and adds it to the current filter stack. @@ -2849,17 +2595,17 @@ declare module PIXI { * @param maskData - * @param renderSession - */ - pushMask(maskData: any[], renderSession: RenderSession): void; + pushMask(maskData: any[], renderSession: RenderSession): void; /** * Sets the drawing context to the one given in parameter. * * @param gl the current WebGL drawing context */ - setContext(gl: WebGLRenderingContext): void; - - } - + setContext(gl: WebGLRenderingContext): void; + + } + /** * The WebGLRenderer draws the stage and all its content onto a webGL enabled canvas. This renderer @@ -2867,10 +2613,10 @@ declare module PIXI { * So no need for Sprite Batches or Sprite Clouds. * Don't forget to add the view to your DOM or you will not see anything :) */ - export class WebGLRenderer implements PixiRenderer { - - static createWebGLTexture(texture: Texture, gl: WebGLRenderingContext): void; - + export class WebGLRenderer implements PixiRenderer { + + static createWebGLTexture(texture: Texture, gl: WebGLRenderingContext): void; + /** * The WebGLRenderer draws the stage and all its content onto a webGL enabled canvas. This renderer @@ -2880,31 +2626,31 @@ declare module PIXI { * * @param game A reference to the Phaser Game instance */ - constructor(game: Phaser.Game); - - game: Phaser.Game; - type: number; + constructor(game: Phaser.Game); + + game: Phaser.Game; + type: number; /** * The resolution of the renderer * Default: 1 */ - resolution: number; + resolution: number; /** * Whether the render view is transparent */ - transparent: boolean; + transparent: boolean; /** * Whether the render view should be resized automatically */ - autoResize: boolean; + autoResize: boolean; /** * The value of the preserveDrawingBuffer flag affects whether or not the contents of the stencil buffer is retained after rendering. */ - preserveDrawingBuffer: boolean; + preserveDrawingBuffer: boolean; /** * This sets if the WebGLRenderer will clear the context texture or not before the new render pass. If true: @@ -2912,64 +2658,64 @@ declare module PIXI { * If the Stage is transparent, Pixi will clear to the target Stage's background color. * Disable this by setting this to false. For example: if your game has a canvas filling background image, you often don't need this set. */ - clearBeforeRender: boolean; + clearBeforeRender: boolean; /** * The width of the canvas view */ - width: number; + width: number; /** * The height of the canvas view */ - height: number; + height: number; /** * The canvas element that everything is drawn to */ - view: HTMLCanvasElement; - projection: Point; - offset: Point; + view: HTMLCanvasElement; + projection: Point; + offset: Point; /** * Deals with managing the shader programs and their attribs */ - shaderManager: WebGLShaderManager; + shaderManager: WebGLShaderManager; /** * Manages the rendering of sprites */ - spriteBatch: WebGLSpriteBatch; + spriteBatch: WebGLSpriteBatch; /** * Manages the masks using the stencil buffer */ - maskManager: WebGLMaskManager; + maskManager: WebGLMaskManager; /** * Manages the filters */ - filterManager: WebGLFilterManager; + filterManager: WebGLFilterManager; /** * Manages the stencil buffer */ - stencilManager: WebGLStencilManager; + stencilManager: WebGLStencilManager; /** * Manages the blendModes */ - blendModeManager: WebGLBlendModeManager; - renderSession: RenderSession; - - initContext(): void; + blendModeManager: WebGLBlendModeManager; + renderSession: RenderSession; + + initContext(): void; /** * Renders the stage to its webGL view * * @param stage the Stage element to be rendered */ - render(stage: DisplayObjectContainer): void; + render(stage: DisplayObjectContainer): void; /** * Renders a Display Object. @@ -2978,7 +2724,7 @@ declare module PIXI { * @param projection The projection * @param buffer a standard WebGL buffer */ - renderDisplayObject(displayObject: DisplayObject, projection: Point, buffer: WebGLBuffer): void; + renderDisplayObject(displayObject: DisplayObject, projection: Point, buffer: WebGLBuffer): void; /** * Resizes the webGL view to the specified width and height. @@ -2986,7 +2732,7 @@ declare module PIXI { * @param width the new width of the webGL view * @param height the new height of the webGL view */ - resize(width: number, height: number): void; + resize(width: number, height: number): void; /** * Updates and Creates a WebGL texture for the renderers context. @@ -2994,62 +2740,62 @@ declare module PIXI { * @param texture the texture to update * @return True if the texture was successfully bound, otherwise false. */ - updateTexture(texture: Texture): void; + updateTexture(texture: Texture): void; /** * Removes everything from the renderer (event listeners, spritebatch, etc...) */ - destroy(): void; + destroy(): void; /** * Maps Pixi blend modes to WebGL blend modes. */ - mapBlendModes(): void; - - } - - export class WebGLShaderManager { - - maxAttibs: number; - attribState: any[]; - stack: any[]; - tempAttribState: any[]; - + mapBlendModes(): void; + + } + + export class WebGLShaderManager { + + maxAttibs: number; + attribState: any[]; + stack: any[]; + tempAttribState: any[]; + /** * Destroys this object. */ - destroy(): void; + destroy(): void; /** * Takes the attributes given in parameters. * * @param attribs attribs */ - setAttribs(attribs: ShaderAttribute[]): void; + setAttribs(attribs: ShaderAttribute[]): void; /** * Initialises the context and the properties. * * @param gl the current WebGL drawing context */ - setContext(gl: WebGLRenderingContext): void; + setContext(gl: WebGLRenderingContext): void; /** * Sets the current shader. * * @param shader - */ - setShader(shader: IPixiShader): boolean; - - } - - export class WebGLStencilManager { - - stencilStack: any[]; - reverse: boolean; - count: number; - + setShader(shader: IPixiShader): boolean; + + } + + export class WebGLStencilManager { + + stencilStack: any[]; + reverse: boolean; + count: number; + /** * TODO this does not belong here! @@ -3058,12 +2804,12 @@ declare module PIXI { * @param webGLData - * @param renderSession - */ - bindGraphics(graphics: Graphics, webGLData: any[], renderSession: RenderSession): void; + bindGraphics(graphics: Graphics, webGLData: any[], renderSession: RenderSession): void; /** * Destroys the mask stack. */ - destroy(): void; + destroy(): void; /** * @@ -3072,75 +2818,75 @@ declare module PIXI { * @param webGLData - * @param renderSession - */ - popStencil(graphics: Graphics, webGLData: any[], renderSession: RenderSession): void; - pushStencil(graphics: Graphics, webGLData: any[], renderSession: RenderSession): void; + popStencil(graphics: Graphics, webGLData: any[], renderSession: RenderSession): void; + pushStencil(graphics: Graphics, webGLData: any[], renderSession: RenderSession): void; /** * Sets the drawing context to the one given in parameter. * * @param gl the current WebGL drawing context */ - setContext(gl: WebGLRenderingContext): void; - - } - - export class WebGLSpriteBatch { - - blendModes: number[]; + setContext(gl: WebGLRenderingContext): void; + + } + + export class WebGLSpriteBatch { + + blendModes: number[]; /** * View on the vertices as a Uint32Array */ - colors: number[]; - currentBatchSize: number; - currentBaseTexture: Texture; - defaultShader: AbstractFilter; - dirty: boolean; - drawing: boolean; + colors: number[]; + currentBatchSize: number; + currentBaseTexture: Texture; + defaultShader: AbstractFilter; + dirty: boolean; + drawing: boolean; /** * Holds the indices */ - indices: number[]; - lastIndexCount: number; + indices: number[]; + lastIndexCount: number; /** * View on the vertices as a Float32Array */ - positions: number[]; - textures: Texture[]; - shaders: IPixiShader[]; + positions: number[]; + textures: Texture[]; + shaders: IPixiShader[]; /** * The number of images in the SpriteBatch before it flushes */ - size: number; - sprites: any[]; + size: number; + sprites: any[]; /** * Holds the vertices */ - vertices: number[]; - vertSize: number; - + vertices: number[]; + vertSize: number; + /** * * * @param renderSession The RenderSession object */ - begin(renderSession: RenderSession): void; + begin(renderSession: RenderSession): void; /** * Destroys the SpriteBatch. */ - destroy(): void; - end(): void; + destroy(): void; + end(): void; /** * Renders the content and empties the current batch. */ - flush(shader?: IPixiShader): void; + flush(shader?: IPixiShader): void; /** * @@ -3148,7 +2894,7 @@ declare module PIXI { * @param sprite the sprite to render when using this spritebatch * @param matrix - Optional matrix. If provided the Display Object will be rendered using this matrix, otherwise it will use its worldTransform. */ - render(sprite: Sprite): void; + render(sprite: Sprite): void; /** * @@ -3157,27 +2903,27 @@ declare module PIXI { * @param size - * @param startIndex - */ - renderBatch(texture: Texture, size: number, startIndex: number): void; + renderBatch(texture: Texture, size: number, startIndex: number): void; /** * Renders a TilingSprite using the spriteBatch. * * @param sprite the sprite to render */ - renderTilingSprite(sprite: TilingSprite): void; - setBlendMode(blendMode: blendModes): void; + renderTilingSprite(sprite: TilingSprite): void; + setBlendMode(blendMode: blendModes): void; /** * * * @param gl the current WebGL drawing context */ - setContext(gl: WebGLRenderingContext): void; - start(): void; - stop(): void; - - } - + setContext(gl: WebGLRenderingContext): void; + start(): void; + stop(): void; + + } + /** * A RenderTexture is a special texture that allows any Pixi display object to be rendered to it. @@ -3200,8 +2946,8 @@ declare module PIXI { * doc.addChild(sprite); * renderTexture.render(doc); // Renders to center of renderTexture */ - export class RenderTexture extends Texture { - + export class RenderTexture extends Texture { + /** * A RenderTexture is a special texture that allows any Pixi display object to be rendered to it. @@ -3230,52 +2976,52 @@ declare module PIXI { * @param scaleMode See {{#crossLink "PIXI/scaleModes:property"}}PIXI.scaleModes{{/crossLink}} for possible values * @param resolution The resolution of the texture being generated */ - constructor(width?: number, height?: number, renderer?: PixiRenderer, scaleMode?: scaleModes, resolution?: number); - + constructor(width?: number, height?: number, renderer?: PixiRenderer, scaleMode?: scaleModes, resolution?: number); + /** * The framing rectangle of the render texture */ - frame: Rectangle; + frame: Rectangle; /** * The base texture object that this texture uses */ - baseTexture: BaseTexture; + baseTexture: BaseTexture; /** * The renderer this RenderTexture uses. A RenderTexture can only belong to one renderer at the moment if its webGL. */ - renderer: PixiRenderer; + renderer: PixiRenderer; /** * The Resolution of the texture. */ - resolution: number; - valid: boolean; - + resolution: number; + valid: boolean; + /** * Clears the RenderTexture. */ - clear(): void; + clear(): void; /** * Will return a base64 encoded string of this texture. It works by calling RenderTexture.getCanvas and then running toDataURL on that. * @return A base64 encoded string of the texture. */ - getBase64(): string; + getBase64(): string; /** * Creates a Canvas element, renders this RenderTexture to it and then returns it. * @return A Canvas element with the texture rendered on. */ - getCanvas(): HTMLCanvasElement; + getCanvas(): HTMLCanvasElement; /** * Will return a HTML Image of the texture */ - getImage(): HTMLImageElement; + getImage(): HTMLImageElement; /** * Resizes the RenderTexture. @@ -3284,460 +3030,460 @@ declare module PIXI { * @param height The height to resize to. * @param updateBase Should the baseTexture.width and height values be resized as well? */ - resize(width: number, height: number, updateBase: boolean): void; - render(displayObject: DisplayObject, matrix?: Matrix, clear?: boolean): void; - - } - - // SPINE - - export class BoneData { - - constructor(name: string, parent?: any); - - name: string; - parent: any; - length: number; - x: number; - y: number; - rotation: number; - scaleX: number; - scaleY: number; - - } - - export class SlotData { - - constructor(name: string, boneData: BoneData); - - name: string; - boneData: BoneData; - r: number; - g: number; - b: number; - a: number; - attachmentName: string; - - } - - export class Bone { - - constructor(boneData: BoneData, parent?: any); - - data: BoneData; - parent: any; - yDown: boolean; - x: number; - y: number; - rotation: number; - scaleX: number; - scaleY: number; - worldRotation: number; - worldScaleX: number; - worldScaleY: number; - - updateWorldTransform(flipX: boolean, flip: boolean): void; - setToSetupPose(): void; - - } - - export class Slot { - - constructor(slotData: SlotData, skeleton: Skeleton, bone: Bone); - - data: SlotData; - skeleton: Skeleton; - bone: Bone; - r: number; - g: number; - b: number; - a: number; - attachment: RegionAttachment; - setAttachment(attachment: RegionAttachment): void; - setAttachmentTime(time: number): void; - getAttachmentTime(): number; - setToSetupPose(): void; - - } - - export class Skin { - - constructor(name: string); - - name: string; - attachments: any; - - addAttachment(slotIndex: number, name: string, attachment: RegionAttachment): void; - getAttachment(slotIndex: number, name: string): void; - - } - - export class Animation { - - constructor(name: string, timelines: ISpineTimeline[], duration: number); - - name: string; - timelines: ISpineTimeline[]; - duration: number; - apply(skeleton: Skeleton, time: number, loop: boolean): void; - min(skeleton: Skeleton, time: number, loop: boolean, alpha: number): void; - - } - - export class Curves { - - constructor(frameCount: number); - - curves: number[]; - - setLinear(frameIndex: number): void; - setStepped(frameIndex: number): void; - setCurve(frameIndex: number, cx1: number, cy1: number, cx2: number, cy2: number): void; - getCurvePercent(frameIndex: number, percent: number): number; - - } - - export interface ISpineTimeline { - - curves: Curves; - frames: number[]; - - getFrameCount(): number; - apply(skeleton: Skeleton, time: number, alpha: number): void; - - } - - export class RotateTimeline implements ISpineTimeline { - - constructor(frameCount: number); - - curves: Curves; - frames: number[]; - boneIndex: number; - - getFrameCount(): number; - setFrame(frameIndex: number, time: number, angle: number): void; - apply(skeleton: Skeleton, time: number, alpha: number): void; - - } - - export class TranslateTimeline implements ISpineTimeline { - - constructor(frameCount: number); - - curves: Curves; - frames: number[]; - boneIndex: number; - - getFrameCount(): number; - setFrame(frameIndex: number, time: number, x: number, y: number): void; - apply(skeleton: Skeleton, time: number, alpha: number): void; - - } - - export class ScaleTimeline implements ISpineTimeline { - - constructor(frameCount: number); - - curves: Curves; - frames: number[]; - boneIndex: number; - - getFrameCount(): number; - setFrame(frameIndex: number, time: number, x: number, y: number): void; - apply(skeleton: Skeleton, time: number, alpha: number): void; - - } - - export class ColorTimeline implements ISpineTimeline { - - constructor(frameCount: number); - - curves: Curves; - frames: number[]; - boneIndex: number; - - getFrameCount(): number; - setFrame(frameIndex: number, time: number, r: number, g: number, b: number, a: number): void; - apply(skeleton: Skeleton, time: number, alpha: number): void; - - } - - export class AttachmentTimeline implements ISpineTimeline { - - constructor(frameCount: number); - - curves: Curves; - frames: number[]; - attachmentNames: string[]; - slotIndex: number; - - getFrameCount(): number; - setFrame(frameIndex: number, time: number, attachmentName: string): void; - apply(skeleton: Skeleton, time: number, alpha: number): void; - - } - - export class SkeletonData { - - bones: Bone[]; - slots: Slot[]; - skins: Skin[]; - animations: Animation[]; - defaultSkin: Skin; - - findBone(boneName: string): Bone; - findBoneIndex(boneName: string): number; - findSlot(slotName: string): Slot; - findSlotIndex(slotName: string): number; - findSkin(skinName: string): Skin; - findAnimation(animationName: string): Animation; - - } - - export class Skeleton { - - constructor(skeletonData: SkeletonData); - - data: SkeletonData; - bones: Bone[]; - slots: Slot[]; - drawOrder: any[]; - x: number; - y: number; - skin: Skin; - r: number; - g: number; - b: number; - a: number; - time: number; - flipX: boolean; - flipY: boolean; - - updateWorldTransform(): void; - setToSetupPose(): void; - setBonesToSetupPose(): void; - setSlotsToSetupPose(): void; - getRootBone(): Bone; - findBone(boneName: string): Bone; - fineBoneIndex(boneName: string): number; - findSlot(slotName: string): Slot; - findSlotIndex(slotName: string): number; - setSkinByName(skinName: string): void; - setSkin(newSkin: Skin): void; - getAttachmentBySlotName(slotName: string, attachmentName: string): RegionAttachment; - getAttachmentBySlotIndex(slotIndex: number, attachmentName: string): RegionAttachment; - setAttachment(slotName: string, attachmentName: string): void; - update(data: number): void; - - } - - export class RegionAttachment { - - offset: number[]; - uvs: number[]; - x: number; - y: number; - rotation: number; - scaleX: number; - scaleY: number; - width: number; - height: number; - rendererObject: any; - regionOffsetX: number; - regionOffsetY: number; - regionWidth: number; - regionHeight: number; - regionOriginalWidth: number; - regionOriginalHeight: number; - - setUVs(u: number, v: number, u2: number, v2: number, rotate: number): void; - updateOffset(): void; - computeVertices(x: number, y: number, bone: Bone, vertices: number[]): void; - - } - - export class AnimationStateData { - - constructor(skeletonData: SkeletonData); - - skeletonData: SkeletonData; - animationToMixTime: any; - defaultMix: number; - - setMixByName(fromName: string, toName: string, duration: number): void; - setMix(from: string, to: string): number; - - } - - export class AnimationState { - - constructor(stateData: any); - - animationSpeed: number; - current: any; - previous: any; - currentTime: number; - previousTime: number; - currentLoop: boolean; - previousLoop: boolean; - mixTime: number; - mixDuration: number; - queue: Animation[]; - - update(delta: number): void; - apply(skeleton: any): void; - clearAnimation(): void; - setAnimation(animation: any, loop: boolean): void; - setAnimationByName(animationName: string, loop: boolean): void; - addAnimationByName(animationName: string, loop: boolean, delay: number): void; - addAnimation(animation: any, loop: boolean, delay: number): void; - isComplete(): number; - - } - - export class SkeletonJson { - - constructor(attachmentLoader: AtlasAttachmentLoader); - - attachmentLoader: AtlasAttachmentLoader; - scale: number; - - readSkeletonData(root: any): SkeletonData; - readAttachment(skin: Skin, name: string, map: any): RegionAttachment; - readAnimation(name: string, map: any, skeletonData: SkeletonData): void; - readCurve(timeline: ISpineTimeline, frameIndex: number, valueMap: any): void; - toColor(hexString: string, colorIndex: number): number; - - } - - export class Atlas { - - static FORMAT: { - - alpha: number; - intensity: number; - luminanceAlpha: number; - rgb565: number; - rgba4444: number; - rgb888: number; - rgba8888: number; - - }; - - static TextureFilter: { - - nearest: number; - linear: number; - mipMap: number; - mipMapNearestNearest: number; - mipMapLinearNearest: number; - mipMapNearestLinear: number; - mipMapLinearLinear: number; - - }; - - static textureWrap: { - - mirroredRepeat: number; - clampToEdge: number; - repeat: number; - - }; - - constructor(atlasText: string, textureLoader: AtlasLoader); - - textureLoader: AtlasLoader; - pages: AtlasPage[]; - regions: AtlasRegion[]; - - findRegion(name: string): AtlasRegion; - dispose(): void; - updateUVs(page: AtlasPage): void; - - } - - export class AtlasPage { - - name: string; - format: number; - minFilter: number; - magFilter: number; - uWrap: number; - vWrap: number; - rendererObject: any; - width: number; - height: number; - - } - - export class AtlasRegion { - - page: AtlasPage; - name: string; - x: number; - y: number; - width: number; - height: number; - u: number; - v: number; - u2: number; - v2: number; - offsetX: number; - offsetY: number; - originalWidth: number; - originalHeight: number; - index: number; - rotate: boolean; - splits: any[]; - pads: any[]; - - } - - export class AtlasReader { - - constructor(text: string); - - lines: string[]; - index: number; - - trim(value: string): string; - readLine(): string; - readValue(): string; - readTuple(tuple: number): number; - - } - - export class AtlasAttachmentLoader { - - constructor(atlas: Atlas); - - atlas: Atlas; - - newAttachment(skin: Skin, type: number, name: string): RegionAttachment; - - } - - export class Spine extends DisplayObjectContainer { - - constructor(url: string); - - autoUpdate: boolean; - spineData: any; - skeleton: Skeleton; - stateData: AnimationStateData; - state: AnimationState; - slotContainers: DisplayObjectContainer[]; - - createSprite(slot: Slot, descriptor: { name: string }): Sprite[]; - update(dt: number): void; - - } - -} - -declare function requestAnimFrame(callback: Function): void; - -declare module PIXI.PolyK { - export function Triangulate(p: number[]): number[]; -} + resize(width: number, height: number, updateBase: boolean): void; + render(displayObject: DisplayObject, matrix?: Matrix, clear?: boolean): void; + + } + + // SPINE + + export class BoneData { + + constructor(name: string, parent?: any); + + name: string; + parent: any; + length: number; + x: number; + y: number; + rotation: number; + scaleX: number; + scaleY: number; + + } + + export class SlotData { + + constructor(name: string, boneData: BoneData); + + name: string; + boneData: BoneData; + r: number; + g: number; + b: number; + a: number; + attachmentName: string; + + } + + export class Bone { + + constructor(boneData: BoneData, parent?: any); + + data: BoneData; + parent: any; + yDown: boolean; + x: number; + y: number; + rotation: number; + scaleX: number; + scaleY: number; + worldRotation: number; + worldScaleX: number; + worldScaleY: number; + + updateWorldTransform(flipX: boolean, flip: boolean): void; + setToSetupPose(): void; + + } + + export class Slot { + + constructor(slotData: SlotData, skeleton: Skeleton, bone: Bone); + + data: SlotData; + skeleton: Skeleton; + bone: Bone; + r: number; + g: number; + b: number; + a: number; + attachment: RegionAttachment; + setAttachment(attachment: RegionAttachment): void; + setAttachmentTime(time: number): void; + getAttachmentTime(): number; + setToSetupPose(): void; + + } + + export class Skin { + + constructor(name: string); + + name: string; + attachments: any; + + addAttachment(slotIndex: number, name: string, attachment: RegionAttachment): void; + getAttachment(slotIndex: number, name: string): void; + + } + + export class Animation { + + constructor(name: string, timelines: ISpineTimeline[], duration: number); + + name: string; + timelines: ISpineTimeline[]; + duration: number; + apply(skeleton: Skeleton, time: number, loop: boolean): void; + min(skeleton: Skeleton, time: number, loop: boolean, alpha: number): void; + + } + + export class Curves { + + constructor(frameCount: number); + + curves: number[]; + + setLinear(frameIndex: number): void; + setStepped(frameIndex: number): void; + setCurve(frameIndex: number, cx1: number, cy1: number, cx2: number, cy2: number): void; + getCurvePercent(frameIndex: number, percent: number): number; + + } + + export interface ISpineTimeline { + + curves: Curves; + frames: number[]; + + getFrameCount(): number; + apply(skeleton: Skeleton, time: number, alpha: number): void; + + } + + export class RotateTimeline implements ISpineTimeline { + + constructor(frameCount: number); + + curves: Curves; + frames: number[]; + boneIndex: number; + + getFrameCount(): number; + setFrame(frameIndex: number, time: number, angle: number): void; + apply(skeleton: Skeleton, time: number, alpha: number): void; + + } + + export class TranslateTimeline implements ISpineTimeline { + + constructor(frameCount: number); + + curves: Curves; + frames: number[]; + boneIndex: number; + + getFrameCount(): number; + setFrame(frameIndex: number, time: number, x: number, y: number): void; + apply(skeleton: Skeleton, time: number, alpha: number): void; + + } + + export class ScaleTimeline implements ISpineTimeline { + + constructor(frameCount: number); + + curves: Curves; + frames: number[]; + boneIndex: number; + + getFrameCount(): number; + setFrame(frameIndex: number, time: number, x: number, y: number): void; + apply(skeleton: Skeleton, time: number, alpha: number): void; + + } + + export class ColorTimeline implements ISpineTimeline { + + constructor(frameCount: number); + + curves: Curves; + frames: number[]; + boneIndex: number; + + getFrameCount(): number; + setFrame(frameIndex: number, time: number, r: number, g: number, b: number, a: number): void; + apply(skeleton: Skeleton, time: number, alpha: number): void; + + } + + export class AttachmentTimeline implements ISpineTimeline { + + constructor(frameCount: number); + + curves: Curves; + frames: number[]; + attachmentNames: string[]; + slotIndex: number; + + getFrameCount(): number; + setFrame(frameIndex: number, time: number, attachmentName: string): void; + apply(skeleton: Skeleton, time: number, alpha: number): void; + + } + + export class SkeletonData { + + bones: Bone[]; + slots: Slot[]; + skins: Skin[]; + animations: Animation[]; + defaultSkin: Skin; + + findBone(boneName: string): Bone; + findBoneIndex(boneName: string): number; + findSlot(slotName: string): Slot; + findSlotIndex(slotName: string): number; + findSkin(skinName: string): Skin; + findAnimation(animationName: string): Animation; + + } + + export class Skeleton { + + constructor(skeletonData: SkeletonData); + + data: SkeletonData; + bones: Bone[]; + slots: Slot[]; + drawOrder: any[]; + x: number; + y: number; + skin: Skin; + r: number; + g: number; + b: number; + a: number; + time: number; + flipX: boolean; + flipY: boolean; + + updateWorldTransform(): void; + setToSetupPose(): void; + setBonesToSetupPose(): void; + setSlotsToSetupPose(): void; + getRootBone(): Bone; + findBone(boneName: string): Bone; + fineBoneIndex(boneName: string): number; + findSlot(slotName: string): Slot; + findSlotIndex(slotName: string): number; + setSkinByName(skinName: string): void; + setSkin(newSkin: Skin): void; + getAttachmentBySlotName(slotName: string, attachmentName: string): RegionAttachment; + getAttachmentBySlotIndex(slotIndex: number, attachmentName: string): RegionAttachment; + setAttachment(slotName: string, attachmentName: string): void; + update(data: number): void; + + } + + export class RegionAttachment { + + offset: number[]; + uvs: number[]; + x: number; + y: number; + rotation: number; + scaleX: number; + scaleY: number; + width: number; + height: number; + rendererObject: any; + regionOffsetX: number; + regionOffsetY: number; + regionWidth: number; + regionHeight: number; + regionOriginalWidth: number; + regionOriginalHeight: number; + + setUVs(u: number, v: number, u2: number, v2: number, rotate: number): void; + updateOffset(): void; + computeVertices(x: number, y: number, bone: Bone, vertices: number[]): void; + + } + + export class AnimationStateData { + + constructor(skeletonData: SkeletonData); + + skeletonData: SkeletonData; + animationToMixTime: any; + defaultMix: number; + + setMixByName(fromName: string, toName: string, duration: number): void; + setMix(from: string, to: string): number; + + } + + export class AnimationState { + + constructor(stateData: any); + + animationSpeed: number; + current: any; + previous: any; + currentTime: number; + previousTime: number; + currentLoop: boolean; + previousLoop: boolean; + mixTime: number; + mixDuration: number; + queue: Animation[]; + + update(delta: number): void; + apply(skeleton: any): void; + clearAnimation(): void; + setAnimation(animation: any, loop: boolean): void; + setAnimationByName(animationName: string, loop: boolean): void; + addAnimationByName(animationName: string, loop: boolean, delay: number): void; + addAnimation(animation: any, loop: boolean, delay: number): void; + isComplete(): number; + + } + + export class SkeletonJson { + + constructor(attachmentLoader: AtlasAttachmentLoader); + + attachmentLoader: AtlasAttachmentLoader; + scale: number; + + readSkeletonData(root: any): SkeletonData; + readAttachment(skin: Skin, name: string, map: any): RegionAttachment; + readAnimation(name: string, map: any, skeletonData: SkeletonData): void; + readCurve(timeline: ISpineTimeline, frameIndex: number, valueMap: any): void; + toColor(hexString: string, colorIndex: number): number; + + } + + export class Atlas { + + static FORMAT: { + + alpha: number; + intensity: number; + luminanceAlpha: number; + rgb565: number; + rgba4444: number; + rgb888: number; + rgba8888: number; + + }; + + static TextureFilter: { + + nearest: number; + linear: number; + mipMap: number; + mipMapNearestNearest: number; + mipMapLinearNearest: number; + mipMapNearestLinear: number; + mipMapLinearLinear: number; + + }; + + static textureWrap: { + + mirroredRepeat: number; + clampToEdge: number; + repeat: number; + + }; + + constructor(atlasText: string, textureLoader: AtlasLoader); + + textureLoader: AtlasLoader; + pages: AtlasPage[]; + regions: AtlasRegion[]; + + findRegion(name: string): AtlasRegion; + dispose(): void; + updateUVs(page: AtlasPage): void; + + } + + export class AtlasPage { + + name: string; + format: number; + minFilter: number; + magFilter: number; + uWrap: number; + vWrap: number; + rendererObject: any; + width: number; + height: number; + + } + + export class AtlasRegion { + + page: AtlasPage; + name: string; + x: number; + y: number; + width: number; + height: number; + u: number; + v: number; + u2: number; + v2: number; + offsetX: number; + offsetY: number; + originalWidth: number; + originalHeight: number; + index: number; + rotate: boolean; + splits: any[]; + pads: any[]; + + } + + export class AtlasReader { + + constructor(text: string); + + lines: string[]; + index: number; + + trim(value: string): string; + readLine(): string; + readValue(): string; + readTuple(tuple: number): number; + + } + + export class AtlasAttachmentLoader { + + constructor(atlas: Atlas); + + atlas: Atlas; + + newAttachment(skin: Skin, type: number, name: string): RegionAttachment; + + } + + export class Spine extends DisplayObjectContainer { + + constructor(url: string); + + autoUpdate: boolean; + spineData: any; + skeleton: Skeleton; + stateData: AnimationStateData; + state: AnimationState; + slotContainers: DisplayObjectContainer[]; + + createSprite(slot: Slot, descriptor: { name: string }): Sprite[]; + update(dt: number): void; + + } + +} + +declare function requestAnimFrame(callback: Function): void; + +declare module PIXI.PolyK { + export function Triangulate(p: number[]): number[]; +} diff --git a/typescript/pixi.d.ts b/typescript/pixi.d.ts index 0915803d3..459ee1cba 100644 --- a/typescript/pixi.d.ts +++ b/typescript/pixi.d.ts @@ -51,8 +51,6 @@ declare module PIXI { export var glContexts: WebGLRenderingContext[]; export var instances: any[]; - export var BaseTextureCache: { [key: string]: BaseTexture }; - export var TextureCache: { [key: string]: Texture }; export var TextureSilentFail: boolean; export var BitmapText: { fonts: {} }; @@ -254,7 +252,6 @@ declare module PIXI { export class BaseTexture implements Mixin { - static fromImage(imageUrl: string, crossorigin?: boolean, scaleMode?: scaleModes): BaseTexture; static fromCanvas(canvas: HTMLCanvasElement, scaleMode?: scaleModes): BaseTexture; constructor(source: HTMLImageElement, scaleMode: scaleModes); @@ -281,7 +278,6 @@ declare module PIXI { forceLoaded(width: number, height: number): void; destroy(): void; dirty(): void; - updateSourceImage(newSrc: string): void; unloadFromGPU(): void; } @@ -768,28 +764,6 @@ declare module PIXI { } - export class MovieClip extends Sprite { - - static fromFrames(frames: string[]): MovieClip; - static fromImages(images: HTMLImageElement[]): HTMLImageElement; - - constructor(textures: Texture[]); - - animationSpeed: number; - currentFrame: number; - loop: boolean; - playing: boolean; - textures: Texture[]; - totalFrames: number; - - gotoAndPlay(frameNumber: number): void; - gotoAndStop(frameNumber: number): void; - onComplete(): void; - play(): void; - stop(): void; - - } - export class NoiseFilter extends AbstractFilter { noise: number; @@ -1018,9 +992,6 @@ declare module PIXI { export class Sprite extends DisplayObjectContainer { - static fromFrame(frameId: string): Sprite; - static fromImage(url: string, crossorigin?: boolean, scaleMode?: scaleModes): Sprite; - constructor(texture: Texture); anchor: Point; @@ -1097,10 +1068,6 @@ declare module PIXI { static emptyTexture: Texture; static fromCanvas(canvas: HTMLCanvasElement, scaleMode?: scaleModes): Texture; - static fromFrame(frameId: string): Texture; - static fromImage(imageUrl: string, crossorigin?: boolean, scaleMode?: scaleModes): Texture; - static addTextureToCache(texture: Texture, id: string): void; - static removeTextureFromCache(id: string): Texture; constructor(baseTexture: BaseTexture, frame?: Rectangle, crop?: Rectangle, trim?: Rectangle); diff --git a/typescript/readme.md b/typescript/readme.md index 798a5ab1d..36cf52a2a 100644 --- a/typescript/readme.md +++ b/typescript/readme.md @@ -7,6 +7,18 @@ Please use TypeScript 1.4+ - `phaser.d.ts` contains a reference to `pixi.d.ts` and `p2.d.ts` and so both these files must remain siblings in the same directory. - `pixi.d.ts` has deviated from the official project. If you are a pixi user, pick up the ball over at [the official pixi typescript repo](https://github.com/pixijs/pixi-typescript). +## Including typescript definitions in your project using Typings + +You can now use typings, the TypeScript Definition Manager, to include Phaser's typescript definitions in your project: +- Make sure that typings is installed in your system: `npm install -g typings` +- Install phaser typescript definitions as a global dependency: +``` +typings install github:photonstorm/phaser/typescript/typings.json -GD +``` + +This will make phaser typescript definitions available for your compiler so that there is no need to reference them from your source files. +For more information, check [the official typings site](https://github.com/typings/typings). + ## Contributing ## If you find any mistakes in these definitions or you feel they can be improved in any way, please make a pull request against the dev branch. diff --git a/typescript/typings.json b/typescript/typings.json new file mode 100644 index 000000000..974954aff --- /dev/null +++ b/typescript/typings.json @@ -0,0 +1,6 @@ +{ + "name": "phaser", + "main": "phaser.comments.d.ts", + "files": ["pixi.comments.d.ts", "p2.d.ts"], + "global": true +} \ No newline at end of file